【发布时间】:2012-06-28 11:37:20
【问题描述】:
所以我试图了解用于乱序指令执行的 Tomasulo 算法。到目前为止,这是我所得到的:
指令按顺序获取并存储在指令队列中。
寄存器重命名发生在接下来的某个地方...?据我了解,这是通过给寄存器贴标签来避免 WAR/WAW 危险。说你有 添加 r1,r2,r3 (1) 添加 r3,r5,r6 (2) 您有 WAR 危险,需要确保指令 (1) 在将 r3 的旧值添加到 r1 之前读取它。所以我猜在指令队列(?)中,硬件重命名了寄存器,即 添加 r1,r2,r3#1 添加 r3#2,r5,r6 或类似的东西。
向预订站发出指令。据我了解,每个功能单元都有自己的一套预约站。但是,当适当标记的操作数在公共数据总线上可用时,它是否类似于该功能单元执行的指令队列(FIFO)?
由于指令可以按任意顺序(乱序)完成,并且更多指令可以不断出现......是否存在公共数据总线在更多指令进入之前更新寄存器文件的阶段?我听说使用了重新排序缓冲区,它基本上按顺序对指令进行排序(这必须意味着指令具有某种标签),然后将寄存器结果提交回寄存器文件。
我感到困惑的是寄存器重命名的实现,以及保留站的结构。
感谢您的帮助。
【问题讨论】:
标签: hardware computer-science computer-architecture