乱序执行处理器及其指令消除方法与流程

摘要: 本发明涉及高性能处理器设计领域,具体涉及一种乱序执行处理器及其指令消除方法。背景技术:1、在现代微处理器架构的演进过程中,提升指令级并行度(instructio...
乱序执行处理器及其指令消除方法与流程

本发明涉及高性能处理器设计领域,具体涉及一种乱序执行处理器及其指令消除方法。

背景技术:

1、在现代微处理器架构的演进过程中,提升指令级并行度(instruction levelparallelism,ilp)一直是重要设计目标。随着超标量乱序执行(out-of-order execution)技术的不断深化,处理器在前端流水线中能够同时处理更多的指令,然而也由此遭遇了各种资源与功耗问题。

2、在编译器生成的机器码中,存在大量用于基础地址偏移计算、循环变量递增或递减、栈指针调整的立即数加法指令(addi)和立即数减法指令(subi)。这些指令的逻辑简单,仅涉及对一个寄存器值与一个立即数常量的加减运算。然而在常规的乱序执行流水线中,这些简单指令却需要与复杂的浮点运算指令、访存指令一样,经历完整的流水线流程。

3、这种处理方式带来了两方面问题。一方面,大量加减指令占据了发射队列的有限条目、物理寄存器堆(physical register file,prf)的读写端口以及算术逻辑单元的执行周期,导致真正处于关键数据路径上的长延迟指令(如缓存未命中的访存指令或多周期除法指令)被阻塞在发射队列中,限制了处理器每周期指令数(instructions per cycle,ipc)的进一步提升。另一方面,这些简单指令频繁触发的寄存器读写和数据流转,导致了动态功耗开销上升,制约了处理器的能效比。

技术实现思路

1、有鉴于此,本发明实施例提供一种乱序执行处理器及其指令消除方法,期望对于特定的加减指令进行指令消除,以简化前端流水线,降低对于长延迟指令的阻塞,提高处理效率,降低功耗开销。

2、第一方面,提供一种乱序执行处理器的指令消除方法,所述方法包括:

3、在寄存器重命名阶段,识别第一指令;

4、响应于第一指令为符合消除条件的加减指令,在映射表中读取第一指令的源逻辑寄存器的对应表项中的第一物理寄存器的基址和偏移值字段;

5、根据所述第一指令的参数确定更新偏移值;

6、在映射表中,将第一指令的目的逻辑寄存器重定向至所述第一物理寄存器,将所述更新偏移值写入所述映射表的目的逻辑寄存器对应表项的偏移值字段,并将目的逻辑寄存器表项的偏移标志位置为有效;

7、在重排序缓冲区将所述第一指令标记为已完成。

8、在一些实现方式中,所述方法还包括:

9、在寄存器重命名阶段,识别第二指令;

10、响应于第二指令为不符合消除条件的指令,在映射表中读取所述第二指令的各源逻辑寄存器的对应表项的偏移标志位;

11、响应于第二指令的至少一个源逻辑寄存器的偏移标志位有效,在映射表中读取偏移标志位有效的源逻辑寄存器对应表项的偏移值字段;

12、将所述第二指令转换为带有前馈常数的微操作,所述前馈常数根据所述偏移值字段的偏移值确定;

13、将所述微操作推送至发射队列,以进行第二指令的计算。

14、在一些实现方式中,所述符合消除条件的加减指令为立即数加减指令。

15、在一些实现方式中,根据所述第一指令的参数确定更新偏移值,包括:

16、响应于所述第一指令的源逻辑寄存器的对应表项中的偏移值字段的偏移值不为零,且偏移标志位为有效,将所述偏移值与所述第一指令的立即数进行加减操作,确定更新偏移值。

17、在一些实现方式中,所述加减操作通过独立于算术逻辑单元的加法逻辑电路实现。

18、在一些实现方式中,所述方法还包括:

19、判断所述更新偏移值是否溢出;

20、响应于所述更新偏移值溢出,将所述第一指令转换为微操作推送至发射队列。

21、在一些实现方式中,所述方法还包括:

22、在寄存器重命名阶段,识别第三指令;

23、响应于第三指令的目的逻辑寄存器的对应偏移标志位有效,将对应表项的偏移值字段清零,将偏移标志位置为无效。

24、第二方面,提供一种乱序执行处理器,所述乱序执行处理器包括:

25、多个寄存器存储单元,用于存储映射表,所述映射表的表项包括逻辑寄存器字段、对应的物理寄存器字段、偏移值字段和偏移标志位;

26、物理寄存器堆,包括多个物理寄存器;

27、识别逻辑电路,用于在寄存器重命名阶段,识别第一指令;

28、拦截逻辑电路,用于响应于第一指令为符合消除条件的加减指令,在映射表中读取第一指令的源逻辑寄存器的对应表项中的第一物理寄存器的基址和偏移值字段;

29、偏移值更新逻辑电路,用于根据所述第一指令的参数确定更新偏移值;

30、映射逻辑电路,用于在映射表中,将第一指令的目的逻辑寄存器重定向至所述第一物理寄存器,将所述更新偏移值写入所述映射表的目的逻辑寄存器对应表项的偏移值字段,并将目的逻辑寄存器表项的偏移标志位置为有效;

31、消除逻辑电路,用于在重排序缓冲区将所述第一指令标记为已完成。

32、在一些实现方式中,所述识别逻辑电路还用于在寄存器重命名阶段,识别第二指令;

33、所述拦截逻辑电路还用于响应于第二指令为不符合消除条件的指令,在映射表中读取所述第二指令的各源逻辑寄存器的对应表项的偏移标志位;

34、所述乱序执行处理器还包括:

35、偏移读取逻辑电路,用于响应于第二指令的至少一个源逻辑寄存器的偏移标志位有效,在映射表中读取偏移标志位有效的源逻辑寄存器的对应表项的偏移值字段;

36、融合逻辑电路,用于将所述第二指令转换为带有前馈常数的微操作,将所述微操作推送至发射队列,以进行第二指令的计算,所述前馈常数根据所述偏移值字段的偏移值确定。

37、在一些实现方式中,所述符合消除条件的加减指令为立即数加减指令。

38、在一些实现方式中,偏移值更新逻辑电路被配置为:

39、响应于所述第一指令的源逻辑寄存器的对应表项中的偏移值字段的偏移值不为零,且偏移标志位为有效,将所述偏移值与所述第一指令的立即数进行加减操作,确定更新偏移值。

40、在一些实现方式中,所述偏移值更新逻辑电路包括加法逻辑电路,所述加法逻辑电路独立于算术逻辑单元,用于执行所述偏移值与所述第一指令的立即数的所述加减操作。

41、在一些实现方式中,所述乱序执行处理器还包括:

42、溢出检测电路,用于判断所述更新偏移值是否溢出,并响应于所述更新偏移值溢出,将所述第一指令转换为微操作推送至发射队列。

43、在一些实现方式中,所述识别逻辑电路还用于在寄存器重命名阶段,识别第三指令;

44、所述映射逻辑电路还用于:

45、响应于第三指令的目的逻辑寄存器的对应偏移标志位有效,将对应表项的偏移值字段清零,将偏移标志位置为无效。

46、本发明实施例通过在乱序执行处理器的执行流水线中,在寄存器重命名阶段引入对符合消除条件的加减指令的识别与拦截机制,在映射表中增加偏移值字段记录根据指令中的立即数计算的偏移值,并将目的逻辑寄存器直接重定向至该源物理寄存器,同时在重排序缓冲区将该指令标记为已完成,从而解决了部分简单加减指令仍需经历完整乱序执行流水线、挤占后端资源的问题,达到了使此类指令在流水线前端就得到执行的效果。被消除的指令无需分配新的物理寄存器、无需占据发射队列条目、无需进入算术逻辑单元执行,从而在每条成功消除的指令上实现零周期的后端执行开销。

47、本发明实施例通过在映射表的每个逻辑寄存器表项中扩展偏移标志位和偏移值字段,将立即数加减指令的操作语义转化为元数据附着于寄存器映射关系之上。当后续依赖该逻辑寄存器的指令进入重命名阶段读取操作数时,硬件自动检测偏移标志位的有效状态,提取积累的偏移值作为前馈常数,与原指令打包融合为一条带前馈常数的微操作推送至发射队列。通过这一手段,解决了现有的消除技术无法追踪动态基址、无法处理非零算术偏移的问题,达到了将串行的指令压缩为一次硬件评估的效果,扩大了指令消除技术的覆盖范围,显著拉高了处理器在密集整数运算场景下的ipc上限。

48、此外,在一个进一步改进的方案中,本发明实施例通过在映射表的状态更新过程中设置溢出检测机制,在更新偏移值发生溢出的情况下将原指令转换为常规微操作推送至发射队列执行。通过这一手段,确保了在偏移值超出硬件表示范围时系统能够安全回退至传统执行路径,达到了在提升消除效率的同时不破坏处理器正确性和架构状态一致性的效果。