核心思想
Tomasulo算法采用寄存器重命名(Renaming)方法,将记分牌中的寄存器和指令的运算内容用一大组"虚拟寄存器名"来代替(也就是下面的保留站)。
功能部件缓冲器称为 “保留站(reservation stations)”,用来存放未决的操作数;
指令中的寄存器被数值或者指向保留站的指针代替,这一过程称为:寄存器换名(register renaming) ;
保留站比实际寄存器多,因而可以完成编译器所不能完成的一些优化工作;以消除WAR、WAW冒险;
装入(Load) 和 存储(Stores)也象其他功能部件一样具有保留站(专门的缓冲器);
运算结果无需通过寄存器, 而是通过公共数据总线(Common Data Bus)把结果广播到所有的功能部件上;
公共数据总线:数据 + 源 (“来源”总线),如果与期望的功能部件匹配,就“写”(产生结果);传输是以广播方式进行。
算法阶段
Issue
从图中的FP Op Queue中取出指令,如果保留站空闲 (无结构冒险), 控制机制发射指令,发送操作数(对寄存器进行换名,消除名相关)。