北交《计算题体系结构》实验四——Tomasulo算法实验

一、实验目的

  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算法模拟器(张晨曦教授)

  • 11
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
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缓冲器内容如下表所示: 寄存器状态表中内容如下表所示: 再步
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值