Tomasulo算法

Tomasulo算法:IBM 360/91设计的,它采用的是寄存器重命名的方法来消除寄存器数据流之间的假相关,即用虚拟寄存器集代替真实的FPR,虚拟寄存器集在tomasulo算法中由每一功能单元所带的保留站(reservation station)、取数缓冲区(load buffers)和存数缓冲区(store buffers)组成。

 

Tomasulo算法的三段

1.Issue―FP Op Queue中取出指令。

如果保留站空闲(无结构冒险),控制机制发射指令&发送操作数(寄存器进行换名)

2.Execution―操作数执行操作(EX)

如果两个操作数都已就绪,就执行;如果没有就绪,就观测公共数据总线等待所需结果

3.Write result―完成执行(WB)

通过公共数据总线(CDB)将结果写入到所有等待的部件;标记保留站可用


IBM360/91FPU分为加法器和乘除两个子功能单元。FLOS在两个功能单元的保留站有位置时将指令发生到相应保留站,并为输出分配相应重命名寄存器并标记,如果此时需要的源数据已经准备好则直接从相应寄存器送到保留站对应位置,等待功能单元空闲即运行,如果源数据没准备好,则在保留站对应区域设置指向该数据寄存器的指针,等数据准备好,则直接通过CDB总线送到保留站,而不需等待数据写回寄存器。





加上加法部件执行需要两个周期,乘除部件需要3个周期。

第一个周期,因为两个功能部件的保留站均有空闲位置,因此发射两条指令分别到两个功能单元,并设置好FLR相应标签位和为输出FLR分配重命名寄存器,这里因为x的源数据在FLR中已经准备好,所以直接将数据放入保留站相应位置,而w指令的源数据来源于R4,此时R4为忙,标签为x的输出对应保留站的ID=1,所以设置相应标签为1,即x指令对应的保留站号。

第二个周期,保留站有空位,仍然发射两条指令到相应位置。同样设置源操作数标签。为FLR4FLR8设置标签和分配重命名寄存器。由于FLR4标签在前一个周期已经被设置从指向x,即1,需要更新为指向y,即2,即y指令的结果更新FLR4。该周期末,x执行完毕,计算结果通过CDB总线送到wy指令的相应区域。

第三个周期,wy开始执行。

第四个周期,y指令执行。

第五个周期,周期末,y执行完毕,数据通过CDB送到z指令,同时更新FLR

第六个周期,指令x执行完毕,在总线CDB上广播,zFLR2中相关标签命中,更新相应区域,z开始执行。z指令在低八个周期结束。

 

ps1:保留站的标签设置是根据FLR标签的值来设置的,在把指令发送到保留站时先设置源操作标签,再设置FLR标签。

ps2:采用这种算法,寄存器R4的内容在出现输出相关时可能漏掉中间数据,例如指令w的结果在R4中不会出现,因此存在不能精确异常定位问题。

 


  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Tomasulo算法实验报告 课程名称:高级计算机系统结构 学号: 姓名: 指导教师: 日期:2011年12月8日 Tomasulo算法实验报告全文共5页,当前为第1页。 Tomasulo算法实验报告全文共5页,当前为第1页。 实验目的 加深对指令集并行性及开发的理解。 加深对Tomasulo算法的理解。 掌握Tomulo算法在指令流出、执行、写结果各阶段对浮点操作指令以及load和store指令进行什么处理。 掌握采用了Tomasulo算法的浮点处理部件的结构。 掌握保留站的结构。 给定被执行代码片段,对于具体某个时钟周期,能够写出保留站、指令状态表以及浮点寄存器状态表内容的变化情况。 实验平台 Tomasulo算法模拟器。 实验内容 1. 假设浮点功能部件的延迟时间为加减法2个周期,乘法10个时钟周期,除法40个时钟周期,load部件2个时钟周期。运行程序的代码段如下: L.D F6, 24(R2) L.D F2, 12(R3) MUL.D F0, F2,F4 SUB.D F8,F6,F2 DIV.D F10,F0,F6 ADD.D F6,F8,F2 当指令MUL.D写结果时,保留站中内容如下表所示: 当指令MUL.D写结果时,load缓冲器中内容如下表所示: 当指令MUL.D写结果时,寄存器状态表中的内容如下表所示: 观察分析: 周期1:取出第一条指令L.D F6, 24(R2),地址偏移量24写入LOAD1,LOAD1名存入寄存器F6。 周期2:取出第二条指令L.D F2, 12(R3),地址偏移量12写入LOAD2,LOAD2名存入寄存器F2,同时第一条指令开始执行,LOAD1上写入绝对地址。 周期3:取出第三条指令MUL.D F0, F2,F4,第一条指令完成,第二条指令开始执行,LOAD2上写入绝对地址。保留站中存入待运算的操作数和操作。寄存器F0上QI写入保留站中待运算命令的名称。 Tomasulo算法实验报告全文共5页,当前为第2页。 周期4:取出第四条指令SUB.D F8,F6,F2,第二条指令执行完成,第一条指令写入结果M1到寄存器F6,保留站中存入第四条指令的待运算操作数和操作。LOAD1清空。 Tomasulo算法实验报告全文共5页,当前为第2页。 周期5:取出第五条指令DIV.D F10,F0,F6,第二条指令写结果M2到寄存器F2,LOAD2清空。保留站中存入第五条指令的待运算操作数和操作 周期6:取出第六条指令ADD.D F6,F8,F2,第三条和第四条指令开始执行,相关的操作数和操作符被存入保留站 周期7:第四条指令执行完成,保留站中的第三条指令继续执行。 周期8:第四条指令写结果M3到寄存器F8,保留站中存放第四条指令的位置清空,第三条指令继续执行。 周期9:第六条指令开始执行。第三条指令继续执行。 周期10:第六条指令执行完成,第三条指令继续执行。 周期11:第六条指令写结果M4到寄存器F6中,清空保留站中原来存放第六条指令的位置。第三条指令继续执行。 周期12~15:第三条指令继续执行,直到完成。 周期16:第三条指令写结果M5到寄存器F0,保留站中原来存放第三条指令的位置清空。 周期17~56:第五条指令开始执行,直到结束 周期57:第五条指令执行结束后写结果M6到F10,保留站中原来存放第五条指令的位置清空。 2. 对于与1相同的延迟时间和代码段 (1)在第3个时钟周期时,保留站内容如下表所示: 在第3个时钟周期时,load缓冲器内容如下表所示: 在第3个时钟周期时,寄存器状态表内容如下表所示: (2)步进5个时钟周期后,保留站内容如下表所示: Tomasulo算法实验报告全文共5页,当前为第3页。load缓冲器内容如下表所示: Tomasulo算法实验报告全文共5页,当前为第3页。 寄存器状态表中内容如下表所示: (3)再步进10个时钟周期后,保留站内容如下表所示: load缓冲器内容如下表所示: 寄存器状态表中内容如下表所示: 3. 浮点功能部件的延迟时间为加减法3个时钟周期,乘法8个时钟周期,除法40个时钟周期。load部件2个时钟周期。运行程序的代码段如下: L.D F12, 20(R5) L.D F2, 10(R6) MUL.D F6, F2,F10 SUB.D F0,F8,F2 DIV.D F10,F0,F12 ADD.D F8,F12,F2 在第3个时钟周期时,保留站内容如下表所示: load缓冲器内容如下表所示: 寄存器状态表中内容如下表所示: Tomasulo算法实验报告全文共5页,当前为第4页。 Tomasulo算法实验报告全文共5页,当前为第4页。 步进5个时钟周期后,保留站内容如下表所示: load缓冲器内容如下表所示: 寄存器状态表中内容如下表所示: 再步

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值