【计算机体系结构】使用Tomasulo算法模拟器来演示算法执行过程+实验报告

Tomasulo算法的基本思想请看这篇文章:计算机体系结构-Tomasulo算法

本篇文章主要采取Tomasulo算法模拟器周期步进的方法来对指令段依次解读,想要自己使用模拟器来对特定程序段进行分布查看的小伙伴也可以自己下一个。想直接要实验报告的请直接移步至最后。

假设浮点功能部件的延迟时间为:加减法2个时钟周期,乘法10个时钟周期,除法40个时钟周期,Load部件2个时钟周期。

 ① 对于下面的代码段,给出当指令MUL.D即将写回时,保留站、Load缓冲器以及寄存器状态表中的内容。 

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

②按步进方式执行上述代码,利用模拟器的“小三角按钮”的对比显示功能,观察每一个时钟周期前后各信息表中内容的变化情况。

周期1:取出第一条指令L.D F6, 24(R2),地址偏移量24写入LOAD部件中的LOAD1并且将LOAD1名存入寄存器字段F6中。

周期2:取出第二条指令L.D F2, 12(R3),地址偏移量12写入LOAD部件中的LOAD2并且将LOAD2名存入寄器字段F2中,同时第一条指令开始执行,LOAD1上写入绝对地址。

周期3:取出第三条指令MUL.D F0, F2,F4,第一条指令完成取值并且准备在下一个时钟周期写入寄存器F6,第二条指令开始执行,LOAD2上写入绝对地址。同时,保留站中存入第三条指令待运算的操作数和操作,因为F2中内容需要Load,所以先写进保留站的Qj中,F4可以直接取就直接存进Vk中。寄存器F0中Qi写入保留站中待运算命令的名称。

周期4:取出第四条指令SUB.D F8,F6,F2,第二条指令执行完成,同时第一条指令完成写入结果M1到寄存器表F6中的值并在指令状态表中第一条指令填入写结果周期4。同样在保留站中存入第四条指令的待运算操作数和操作,F6是之前写入的值为M1所以存入Vj,F2是要等待Load的值尚未准备好所以存入Qk中为Load2,同时寄存器表中F8中Qi存入将要给它赋值的指令名称。Load部件中LOAD1行清空。

周期5:取出第五条指令DIV.D F10,F0,F6,第二条指令写结果M2到寄存器F2的值中,Load部件表中LOAD2行清空。同时,因为F2的值M2已经准备好了,所以在保留站中第一行的Qk转为Vk为M2,同理第四行。保留站中继续存入第五条指令的待运算操作数和操作,因为F0需要Mult1的值,所以保留站最后一行Qj先填入对应寄存器指令名称。

周期6:取出第六条指令ADD.D F6,F8,F2,因为所需数据都已经在之前的周期中写回结果,所以第三条和第四条指令在第六个周期开始执行并在指令状态中更新,相关的操作数和操作符被存入保留站,同理因为F8的结果正在由Sub执行,所以Qj先写为Sub所在的保留站Add1,同时在寄存器表中F6(第六条指令将要写入的寄存器)的改变Qi为指令执行的保留站号Add2。然后因为SUBMULT都已经取到值了,可以开始执行了,就分别更新保留站之中的time列。

周期7:因为SUB只需2个周期就可以执行完,所以SUB的Time由上个周期的1变成2时就代表指令完成,故第四条SUB指令执行完成,更新指令状态,并且准备写入寄存器表中Qi为Add1的寄存器中,即F8。保留站中的MULT指令继续执行,DIV指令继续等待MULT。

周期8:SUB指令执行完后在下个周期写结果M3到寄存器F8,同时保留站Add1中存放的指令的位置清空,MULT条指令继续执行。因为F8也有了ADD所需要的数据,所以更新Add2中的Vj为M3

周期9:ADD(第六条)指令开始执行。MULT指令继续执行。 周期10:ADD指令执行完成在下个周期准备写结果到F6,MULT指令继续执行。

周期11:ADD指令写结果M4到寄存器F6中,清空保留站中原来存放ADD指令的位置。MULT指令继续执行。

周期12~15:MULT指令继续执行,直到完成。周期16:MULT指令写结果M5到寄存器F0,保留站中原来存放指令的位置清空。

周期17~56:DIV指令开始执行,直到执行完毕。周期57:第五条指令执行结束后写结果M6到F10,保留站中原来存放指令的位置清空,执行完毕。

假设浮点功能部件的延迟为:加减法3个时钟周期,乘法8个时钟周期,除法40个时钟周期。自己编写一段程序(要在实验报告中给出),重复上述步骤 。

该部分详情见实验报告:https://download.csdn.net/download/weixin_56213139/87149418

  • 3
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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缓冲器内容如下表所示: 寄存器状态表中内容如下表所示: 再步

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

7_lining

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值