Out-of-order execution
- Alpha 21264的乱序执行每个时钟周期接收4条指令,通过renames/remaps阶段避免不必要的寄存器依赖(WAW、WAR);之后进入发射队列等待指令操作数和功能单元可以访问的时候发射出去,指令发射阶段可以动态发射最多6条指令,其中包括4条整型指令、2条浮点指令;在指令执行完成后,处理器使用顺序提交技术,让程序看起来是按照指令的顺序执行的。
Register renaming
- 寄存器重命名技术通过消除不必要的寄存器依赖,可以充分利用指令的并行性。寄存器重命名给每个写相关的寄存器分配了一个唯一的存储位置。通过寄存器重命名技术,指令寄存器只有在最后提交阶段才对用户可见。alpha 21264的寄存器重命名将分为整型和浮点型两个部分,整型有80个物理寄存器、浮点型有72个物理寄存器。下图给出了具体的寄存器重命名时的过程:
-
- 译码阶段的操作:在指令译码时就会进行重命名,指令首先访问map(一个CAMs存储器),得到源操作数结构寄存器对应的物理寄存器号和其中存储的操作数值;接着访问空闲的物理寄存器表,给指令的目的结构寄存器找到一个对应的物理寄存器,将其存入map中;
- 完成一条指令时的操作:将结果写回目的物理寄存器,同时在寄存器记录表中将对应的目的物理寄存器状态改为valid,将物理寄存器号作