[发明专利]处理器内指令级流水线控制方法及其系统有效
申请号: | 201010233616.5 | 申请日: | 2010-07-16 |
公开(公告)号: | CN101894013A | 公开(公告)日: | 2010-11-24 |
发明(设计)人: | 余磊;张浩;刘志勇;范东睿 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;梁挥 |
地址: | 100080 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 处理器 指令 流水线 控制 方法 及其 系统 | ||
技术领域
本发明涉及到处理器的指令按序发射和按序写回机制,涉及到基于指令发射序号的指令相关性的解决方法。
背景技术
在现代处理器设计中,处理器的性能提升主要通过提高处理器的主频来实现。然而,随着片上集成的晶体管的数量越来越多,功耗和散热问题变得更加严重。单纯提高主频的方法已经很难适应现在处理器的发展。在这种情况下,需要一种简单而有效的处理器流水线控制方法来提高指令的执行效率。也就是说,用较少的硬件资源实现指令的流水线控制,从而实现较高的指令吞吐率。
流水线技术是指把一条指令的执行分成若干个阶段,每个阶段完成指令的一部分功能。这样在多条指令同时执行的时候,多条指令的不同阶段可以同时执行。在实际中,指令和指令之间可能存在着数据依赖关系。比如,一条指令的源操作数是前面一条指令的目的操作数,这样就产生了写后读相关。流水线的控制方法必须能够检测到这样的相关关系,然后采用一定方法来保证指令发射和写回时程序的正确性。
流水线控制方法涉及到指令相关关系。处理器的硬件逻辑需要检测指令间的相关关系,并且采取某种办法来解除或避免这样的相关关系。指令相关包括数据相关、控制相关和结构相关。数据相关一般是指写后读(RAW,ReadAfter Write)相关,写后写(WAW,Write After Write)和读后写(WAR,Write After Read)相关。如果是按序发射的处理器,只存在RAW和WAW;如果是乱序发射的处理器还存在WAR的问题。如果存在指令相关,则相关的指令就不能被发射出去。现有技术中,解决数据相关有两类方法:软件方法和硬件方法。软件方法是编译器通过语义分析,尽可能不产生有相关的指令序列。编译器可以把一个循环体内部的指令,一次展开多次,并进行合适的调度,这样就可以消除指令间的数据相关和控制相关。超长指令字(VLIW,Very Long Instruction Word)也是依靠编译器来提高指令级并行性。在超长指令字处理器上,选择同时发射的多条指令和相关性分析都是由编译器完成的。因此,这可以大大简化硬件逻辑。同时发射的指令条数越多,处理器的性能就越高。
寄存器重命名也是解决相关的方法。由于编译器可以看到的寄存器的个数是由指令集所确定的,有时会出现逻辑寄存器不够用的情况,这时就会产生寄存器相关。这时可以增加物理寄存器堆的个数来解决相关问题。
硬件支持的动态指令调度是超标量处理器挖掘指令级并行的重要手段。IBM 360/91的浮点部件设计实现了本领域公知的Tomasulo算法,这为现代超标量处理器的设计打下了基础。该算法增加了3种新的机制:保留站、公共数据总线(CDB)和寄存器标签。它的工作机制如下:如果存在可用的保留站就把指令发射到保留站中,如果这时源操作数寄存器的值有效,就可以把指令分派到相应的功能部件。功能部件的结果总线把结果广播到公共数据总线,保留站中需要该数据的指令将数据从CDB上锁存到本地锁存器。保留站里每个操作数域有一个标签,如果标签为0,则表示操作数域是真实数据;如果标签不是0,则表示在等待其他已经分派出去的指令结果。
指令结果可以旁路到要发射的指令,以提前取得操作数的结果。因为多发射和乱序发射的原因,有些指令可以同时在结果总线产生结果,这时只有其中一部分指令可以写入寄存器堆。如果正要发射的指令恰巧需要这些不能马上写回的结果,就会造成发射级的停顿。因此,使用旁路可以使指令尽早发射。
现有技术中,每条指令的执行时间不完全相同,有的指令时间长,有的指令时间短。如果流水线前面的一条指令是一个长延迟指令,而后面一条指令是短延迟指令,这时为了保证每条指令的按序提交,每条指令都需要标出自己的整个流水线中的次序信息。如果不保证这个次序信息,则在后面短延迟的指令产生结果后,就提交结果,这样就不是按序提交了。
发明内容
为解决上述问题,本发明提供了处理器内指令级流水线控制方法及其系统,能够减少对硬件资源的消耗。
本发明公开了一种处理器内指令级流水线控制方法,包括:
步骤1,初始化发射序号寄存器和写回序号寄存器为相同初始值;
步骤2,在一个时钟周期内发射指令时,对于每条指令,以发射序号寄存器的值为基础值,按所述指令在本次发射中的顺序,生成指令的发射序号,并在所述指令中携带所述发射序号;
步骤3,在一个时钟周期的指令发射完成后,更新发射序号寄存器的值为发射的最后一个指令的发射序号加n,n为预设常量;
步骤4,指令进入功能部件被执行时,指令的发射序号保持不变;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010233616.5/2.html,转载请声明来源钻瓜专利网。