五、乱序引擎和执行部分:Out-of-Order Engine and Execution Units)

Nehalem的乱序引擎显著的扩大了,除了性能原因,还有就是为了提供SMT,因为SMT需要资源共享。

和Core 2一样,Nehalem的寄存器重命名表register alias table,RAT)指明每一个结构寄存器architectural register)要么进入重排序缓冲Re-Order Buffer,ROB),要么是进入撤销寄存器文件Retirement Register File,RRF,或翻译为引退寄存器文件),并且保持有绝大多数最近的推测值状态speculative state)。而RRF则保持有绝大多数最近的非推测状态non-speculative state)。RAT可以每周期重命名4个微操作,给每一个微操作在ROB中一个目的地寄存器destination register)。被重命名的指令就读取它们的源操作数并被发送到通用架构的保留站unified Reservation Station,RS,可以被各种指令类型使用)。

Nehalem的ROB重排序缓冲)从96项增加到128项,RS保留站)从32项增加到36项,它们都由两个线程所共享,但是使用不同的策略。ROB是静态分配给2个线程,使得2个线程在指令流里都可以预测得一样远。而RS则是竞争共享,基于各线程的需求。这是因为许多时候一个线程可能会中止,从内存等待操作数,而使用到很少的RS项。这样就不如让另一个更活跃的线程尽可能多地使用RS项。在RS中的指令当其所有操作数都准备好时,就被分配到执行单元去。

Nehalem的执行单元与Core 2相比,基本没有大的改变,而且并不受SMT的影响,除了使用率更高之外。


相关内容