当前位置:   article > 正文

北交《计算题体系结构》实验四——Tomasulo算法实验_add.d 指令

add.d 指令

一、实验目的

  1. 了解Tomasulo算法的模拟软件
  2. 掌握Tomasulo算法的运行过程及其原理

二、实验内容

  1. 了解Tomasulo算法的模拟软件
    运行Tomasulo算法的模拟软件,了解其使用说明。
  2. 掌握Tomasulo算法的运行过程及其原理
    可任意设置一系列指令(当然,按软件自动给出的6条指令也可以),然后,按步进方式运行。每运行一步,均对保留站的状态变化进行解释(如果状态无变化,即只有时钟改变时,可不予解释),直至运行结束。解释的内容包括:
  • 指明哪条指令从一种状态变到另一种状态。状态包括: 流出(我们称为发射)、执行、写结果。
  • 对于指令的状态变化,保留站(当然也可以包括寄存器、load部件)发生了哪些变化。
  1. 最后,分别举例解释一下为什么Tomasulo算法消除了这些指令中的WAR和WAW冒险。

三、 实验过程

  1. 了解Tomasulo算法的模拟软件
    运行Tomasulo算法的模拟软件,了解其使用说明。
    在这里插入图片描述
    (1) 设置指令和参数
    本模拟器最多可以模拟10条指令。可以在指令区选择和设置所要的指令。指令区如图所示
    在这里插入图片描述
    可以选择的指令有以下5种:
    i. L.D指令,从主存中读取一个双精度浮点数;
    ii. ADD.D指令:双精度浮点加法指令
    iii. SUB.D指令:双精度浮点减法指令
    iv. MULT.D指令:双精度浮点乘法指令
    v. DIV.D:双精度浮点除法指令
    指令的各参数可以从各自的下拉框中选择
    (2) 在窗口的右上区域设置各部件的执行时间(时钟周期数),如图所示
    在这里插入图片描述
    其中“复位“的作用是使所有设置恢复为默认值。
    (3) 执行
    点击执行按钮,就进入执行状态。可以用中间的按钮来控制指令的执行,包括“步进”、“退一步”等。按退出按钮即可回到设置指令和参数页面。向后执行后,状态表中有色的字段表示其内容发生了变化。
    在这里插入图片描述
    (4) 对比状态表
    在每一个状态表的右上角都有一个小三角,用鼠标点击后,可以看到上一个时钟周期的内容。
    (5) 指令状态表
    如图所示,它列出了各指令什么时候执行到了哪一步。其中的数字表示时钟周期,“~”表示时钟周期期间。
    在这里插入图片描述
  2. 掌握Tomasulo算法的运行过程及其原理
    (1) 算法的运行过程及其原理
    Tomasulo算法,采用的是寄存器重命名的方法来消除寄存器数据流之间的假相关,即用虚拟寄存器集代替真实的FPR,虚拟寄存器集在tomasulo算法中由每一功能单元所带的保留站、取数缓冲区和存数缓冲区组成。
    第一步:发射
    从FP OP Queue中取出指令。如果保留站空闲,控制机发射指令、发射操作数。
    第二步:执行
    如果两个操作数都已就绪,就执行;如果没有就绪,就观测公共数据总线等待所需结果
    第三步:写结果
    通过公共数据总线将结果写入到所有等待的部件;标记保留站可用
    (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
    各部件的执行时间维持默认值。
    在这里插入图片描述
    i. 周期1:取出第一条指令L.D F6, 24(R2),地址偏移量24写入LOAD1,LOAD1名存入寄F6。
    在这里插入图片描述
    ii. 周期2:取出第二条指令L.D F2, 12(R3),地址偏移量12写入LOAD2,LOAD2名存入寄器F2,同时第一条指令开始执行,LOAD1上写入绝对地址。
    在这里插入图片描述
    iii. 周期3:取出第三条指令MUL.D F0, F2,F4,第一条指令完成,第二条指令开始执行,LOAD2上写入绝对地址。保留站中存入待运算的操作数和操作。寄存器F0上QI写入保留站中待运算命令的名称。
    在这里插入图片描述
    iv. 周期4:取出第四条指令SUB.D F8,F6,F2,第二条指令执行完成,第一条指令写入结果M1到寄存器F6,保留站中存入第四条指令的待运算操作数和操作。LOAD1清空。
    在这里插入图片描述
    v. 周期5:取出第五条指令DIV.D F10,F0,F6,第二条指令写结果M2到寄存器F2,LOAD2 清空。保留站中存入第五条指令的待运算操作数和操作。
    在这里插入图片描述
    vi. 周期6:取出第六条指令ADD.D F6,F8,F2,第三条和第四条指令开始执行,相关的操作数和操作符被存入保留站
    在这里插入图片描述
    vii. 周期7:第四条指令执行完成,保留站中的第三条指令继续执行。
    在这里插入图片描述
    viii. 周期8:第四条指令写结果M3到寄存器F8,保留站中存放第四条指令的位置清空,第三条指令继续执行。
    在这里插入图片描述
    ix. 周期9:第六条指令开始执行。第三条指令继续执行。 周期10:第六条指令执行完成,第三条指令继续执行。
    在这里插入图片描述
    x. 周期11:第六条指令写结果M4到寄存器F6中,清空保留站中原来存放第六条指令的位置。第三条指令继续执行。
    在这里插入图片描述

xi. 周期12~15:第三条指令继续执行,直到完成。
在这里插入图片描述
xii. 周期16:第三条指令写结果M5到寄存器F0,保留站中原来存放第三条指令的位置清空。
在这里插入图片描述
xiii. 周期17~56:第五条指令开始执行,直到结束
在这里插入图片描述
在这里插入图片描述
xiv. 周期57:第五条指令执行结束后写结果M6到F10,保留站中原来存放第五条指令的位置清空。执行完毕。
在这里插入图片描述
3. 为什么Tomasulo算法消除了WAR和WAW冒险。
Tomasulo的FU称做保留站,保留站可以完成寄存器重命名,避免WAR、WAW。它采用寄存器重命名的方法来消除寄存器数据流之间的假相关,即用虚拟寄存器集代替真实的FPR,虚拟寄存器集在tomasulo算法中由每一功能单元所带的保留站、取数缓冲区和存数缓冲区组成。保留站可以多于寄存器,实现更多编译器无法完成的优化。

实验所用软件:
Tomasulo算法模拟器(张晨曦教授)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/281217
推荐阅读
相关标签
  

闽ICP备14008679号