超标量处理器中指令相关性检测的方法
【技术领域】
[0001]本发明属于处理器架构设计技术领域,具体涉及超标量处理器中指令相关性检测的方法。
【背景技术】
[0002]在超标量处理器中,指令往往是多发射的,同一周期内最多能够发射的指令条数取决于发射槽的宽度。超标量处理器为了实现指令级并行,使用动态调度的方法。在指令的顺序执行过程中,除了发射槽的宽度之外,指令之间存在的数据相关成为了制约最大限度的指令级并行的重要因素。检测同一周期内的指令之间是否存在数据相关是实现指令动态调度的关键。在超标量处理器的体系结构设计中多采用流水线技术,实现指令级的并行后,检测相邻流水级的各组指令之间是否存在数据相关也是确保程序能够正确执行,动态调度指令的关键。
[0003]传统的检测方法使用的是寄存器依赖表,该表存储了每一条正在执行的指令的目的寄存器信息。在经过解码后,每条指令在进入下一个流水级的同时,其目的寄存器信息写入寄存器依赖表,以供判定后续指令发射的可行性。指令解码后,其源寄存器、目的寄存器必须与寄存器依赖表中的表项进行冲突检测作为该指令是否可分发的条件。这种检测方法确实可行,但是硬件开销的成本比较大,如果操作数较多时,会很大程度增加模块的面积,带来功耗的问题,相关逻辑会占用很大的资源。
【发明内容】
[0004]为了克服上述现有技术的缺点,本发明的目的在于提供一种硬件开销小的超标量处理器中指令相关性检测的方法,该方法不仅适用于检测同一周期内多条指令能否同时发射,也适用于检测不同流水级的各组指令之间的相关性;为实现指令的动态调度提供了基础的保证,而且方法的实现并不会涉及很复杂的电路设计,能够很大程度上减小硬件开销。
[0005]为了实现上述目的,本发明采用的技术方案是:
[0006]—种超标量处理器中指令相关性检测的方法,设定一组锁定标识,指令解码后,其源操作数与目的操作数分别与对应的锁定标识相比较,用来判断指令的相关性与并行性。锁定标识根据每个周期指令的解码信息进行更新,每个周期更新一次。锁定标识与处理器内的通用寄存器组一一对应,每个通用寄存器都有一个对应的锁定标识。锁定标识的内容是指令执行周期数减1。
[0007]超标量处理器中检测指令并行性的方法,包括如下步骤:
[0008]步骤1,获取指令包,指令包中指令的条数与发射槽的数目相等,指令包根据每个周期发射的指令条数进行相应的更新;
[0009]步骤2,将指令包中的指令分别进行解码,解码后的信息包括源寄存器编号,目的寄存器编号以及指令执行占用的周期数;
[0010]步骤3,将指令包中的第一条指令的源操作数和目的操作数分别与对应的锁定标识进行匹配;如果该条指令用到的源操作数或者目的操作数被锁定,则该指令包的所有指令均延迟一个周期发射,与下一周期更新后的锁定标识重新进行匹配;否则,第一条指令可以在这个周期发射,同时将该指令的执行周期数传递给该指令目的寄存器对应的锁定标识,其余的锁定标识保持原来的值不变;这样第一条指令经过检测后,生成了一组新的锁定标识;
[0011]步骤4,将指令包中的下一条指令的源操作数和目的操作数分别与上一条指令判别后得到的锁定标识组中的锁定标识进行匹配;如果该条指令用到的源操作数或者目的操作数被锁定,则该指令及其后所有指令不能和它前面的指令一起发射,需要延后一个周期再做判断,该指令将会成为下一周期的指令包中的第一条指令,转步骤6 ;否则,这两条指令与之间不存在数据相关,与上一周期同时发射的指令也不存在数据相关,进行同时发射;将该指令的执行周期数传递给锁定标识组中目的寄存器对应的锁定标识,锁定标识组中其余的锁定标识保持不变;这样每条指令经过检测后,都会获得一组新的锁定标识,而下一条指令则根据新的锁定标识进行匹配性检测;锁定标识组的编号与该指令在指令包中的顺序——对应;
[0012]步骤5,判断指令包中的刚刚进行并行性检测的指令是否为指令包中的最后一条指令,如果不是最后一条指令,转步骤4 ;否则,转步骤6 ;
[0013]步骤6,确定每个周期内同时发射的指令条数以及这个指令条数对应的锁定标识组的编号;在下一个周期的开始,将该编号对应的锁定标识组的值各减去1赋给相应的锁定标识,实现锁定标识的更新。
[0014]和现有技术相比较,本发明具备如下优点:
[0015]本发明只需要设定一组锁定标识,将指令涉及到的寄存器与各自的锁定标识相匹配即可判断相邻指令包之间的指令以及同一指令包里的指令是否具有相关性,从而实现超标量处理器中指令并行性的检测。而现有技术则侧重于所有源操作数和目的操作数与寄存器依赖表中的表项进行逐个比较,从而得到检测结果。本发明可以很大程度上减小硬件开销,缩小模块面积,而且不会占用很多逻辑资源。
【附图说明】
[0016]图1是本发明检测指令相关的流程图。
[0017]图2是本发明在双发射处理器实例中实现的原理图。
[0018]图3是本发明获取指令包的示意图。
[0019]图4是双发射处理器中锁定标识更新方法的示意图。
【具体实施方式】
[0020]下面结合附图和实施例详细说明本发明的实施方式。
[0021]如图1所示,本实施例一种超标量处理器中指令相关性检测的方法,具体包括如下步骤:
[0022]本实施例在双发射处理器中的具体实现如图2所示,本实施例不仅可以判断指令包中的两条指令是否可以同时发射,也可以检测相邻指令包中的两组指令之间是否具有数据相关。具体实现包括以下步骤:
[0023](1)获取指令包,获取指令包的方法如图3所示,缓存包将指令逐级传递给缓存包