




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Tomasulo方法实验 姓名:王宇航学号:09283020Tomasulo方法实验一、实验目的:通过本实验,理解指令流水化过程中乱序执行和寄存器重命名方法。二、实验内容: 1、用dlxView模拟器或Tomasulo算法模拟器执行浮点指令程序段。 2、指出指令乱序执行和寄存器重命名过程。三、实验环境操作系统:Windows 7 旗舰版处理器:Intel(R) Core(TM) i3 双核内存:2.00GB软件:Tomasulo算法模拟器四、实验过程:1、设置Tomasulo算法模拟器参数其中Load部件的执行时间不能设置为1,至少为2,故不作修改;加/减法部件的执行时间为4个时钟周期,乘法部件的执行时间为7个时钟周期,除法部件的执行时间为15个时钟周期。2、分析Tomasulo算法模拟器中指令乱序执行过程Tomasulo算法模拟器中默认设置的指令下图所示:执行该指令序列,重点观察指令状态的写结果一栏,便会发现执行过程中存在乱序执行现象,共有两处乱序执行,分别如下列图所示:图中显示,在第10周期时,位于MULT.D指令之后的SUB.D指令经过4个周期已经执行完成并已经将结果写回寄存器,而MULT.D指令仍在执行中。在第13周期时,MULT.D指令经过7个周期执行完毕,才将结果写回。此外,还可以看到,位于DIV.D指令之后的ADD.D指令在第11周期时就已经开始执行,而DIV.D指令直至现在都未开始执行。在第15周期时,ADD.D指令经过4个周期执行完毕,先于DIV.D指令写回结果;而DIV.D指令仍在执行中。在第29周期时,DIV.D指令经过15个周期终于执行完毕,将结果写回寄存器。以上分析证明,在Tomasulo算法中存在乱序执行并且不会影响执行结果的正确性。这是因为,Tomasulo算法采用分布的保留站,冲突检测和指令执行控制是分布的。3、分析Tomasulo算法模拟器中寄存器重命名过程在Tomasulo算法中通过寄存器重命名来消除WAR冲突,这一过程是通过保留站来完成的。当指令流出到保留站时,若其操作数已经就绪,则将该指令中相应的寄存器号换为该数据本身;若其操作数还未计算出来,则将该指令中相应的寄存器号重命名为将产生这个操作数的保留站的标识,从而使得该指令与此寄存器不再有关系,后面指令对此寄存器的写入操作也不可能对该指令造成WAR冲突了。(1)将指令中相应的寄存器号换为数据本身 执行Tomasulo算法模拟器中默认设置的指令序列,容易看出最后一条指令ADD.D和前一条指令DIV.D之间存在一个WAR冲突,即DIV.D指令要读寄存器F8中的值,ADD.D要写寄存器F8中的值,由于乱序执行,ADD.D指令会先于DIV.D指令完成;但是执行结果却不会发生错误,是因为Tomasulo算法通过寄存器重命名将这一冲突消除了。可以看到在第5周期时,DIV.D指令流出到保留站中,此时F8中的值已经由前面的L.D指令得出,为M1,但是模拟器并没有将相应的寄存器号RF8写入Vk字段中,而是将其换为了F8中数据本身M1,从而使得该指令与寄存器F8不再有关联,无论后面指令怎样改写F8也都不会影响该指令的正确执行了。此外,由于前面的MULT.D指令还未得出F2的值,故DIV.D指令将寄存器F2重命名为MULT.D指令的保留站标识Mult1,写入Qj字段中。如下图所示:在这个周期中,ADD.D指令已经执行完毕,并且已经将寄存器F8中的值由M1改写成了M5,但此时DIV.D指令仍在正确执行着,并没有发生任何错误,并且经过15个执行周期可以正确完成执行过程,第15周期如下图所示:由此说明了将指令中相应的寄存器号换为数据本身这一寄存器重命名的方法成功地消除了WAR冲突。(2)将指令中相应的寄存器号重命名为将产生该操作数的保留站的标识对Tomasulo算法模拟器中默认设置的指令进行重排,将第一条L.D指令后移两个位置,重排后的指令如下图所示:可以看到,在该指令序列中,最后一条指令ADD.D和前一条指令DIV.D之间仍然存在一个WAR冲突。执行该指令序列,观察执行过程。可以发现在第5周期时,DIV.D指令流出到保留站中,而此时前面的L.D指令还未得出F8的值,但是模拟器并没有将相应的寄存器号RF8写入Vk字段中,而是将其换为了L.D指令的保留站标识Load2写入了Qk中,从而使得该指令与寄存器F8不再有关联,无论后面指令怎样改写F8也都不会影响该指令的正确执行了,如下图所示:对寄存器F2的处理和前一种情况的相同。在第6周期时,保留站Load2完成计算,得出F8的值M2,就会通过CBD将F8的值直接传送到DIV.D指令的保留站Mult2的Vk字段中,如下图所示:在第12周期时,MULT.D指令得出F2的值后也会通过CDB将其直接送到DIV.D指令的保留站中,DIV.D指令便可以开始执行了。(3)分析WAW冲突的消除方法寄存器重命名方法不仅可以消除WAR冲突,还可以配合使用对目标寄存器的预约方法消除WAW冲突。这一方法的思想是,在一条指令流出到保留站时,将结果寄存器的Qi字段设置为该指令的保留站标识,表示结果寄存器将要接收该指令的结果,这样其实相当于提前完成了写操作。由于指令是按程序顺序流出的,当出现多条指令写同一个结果寄存器时,最后留下的预约结果必定是最后一条指令的,因此能够消除WAW冲突。为了演示消除WAW冲突的过程,改写上述指令的最后一条指令,将目标寄存器由F8改为F12,如下图所示:在该指令序列中,DIV.D指令和最后的ADD.D指令之间存在WAW冲突,即DIV.D指令要写寄存器F12,ADD.D指令也要写寄存器F12,由于乱序执行,ADD.D指令会先于DIV.D指令完成,写结果至寄存器F12。若没有任何防范措施,当DIV.D指令完成后又会写其执行结果至寄存器F12,修改刚才的ADD.D指令的执行结果,导致结果错误。但Tomasulo算法通过寄存器重命名和对目标寄存器的预约方法将这一冲突消除了。执行修改后的指令序列,观察执行过程。可以看到,在第5周期时,DIV.D指令流出到保留站中,同时将寄存器F12的Qi字段中设为DIV.D指令保留站的标识Mult2,完成预约工作。如下图所示: 在第6周期时,ADD.D指令流出到保留站中,同时将寄存器F12的Qi字段中改写为该指令保留站的标识Add2,这样就表示寄存器F12最后接收的是ADD.D指令的执行结果,即使DIV.D指令在ADD.D指令之后执行完,也无法再改写寄存器F12了,从而保证了F12中结果的正确性。如下图所示:为了验证这一方法的有效性,可以看一下第16周期和第28周期。在第16周期,ADD.D指令先于DIV.D指令完成执行过程,将结果写入寄存器F12中,值为M5;在第29周期,DIV.D指令也完成执行过程,但是再也无法写寄存器F12了,F12中的值仍然为ADD.D指令的执行结果M5,如下图所示: 第16周期 第28周期由此说明寄存器重命名和对目标寄存器的预约方法成功地消除了WAW冲突。五、实验总结: 本次实验主
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025公务员服装考试题及答案
- 2025年高端家政服务承包协议模板
- 2025年海洋工程专用船用柴油供应与采购合作协议
- 2025公务员法解读试题及答案
- 2025年校园绿化工程承包及维护管理合同样本
- 2025年智能玻璃隔断定制安装及室内空气净化服务合同
- 2025年高等教育科研实验室通风改造与系统维护服务协议
- 2025年互联网教育云资源合作与运维服务合同
- 2025年绿色环保别墅水泥装饰装修工程委托合同
- 2025年度跨境电商平台英文资讯编辑及更新合同
- GB/T 17449-1998包装玻璃容器螺纹瓶口尺寸
- GB/T 12243-2021弹簧直接载荷式安全阀
- GB/T 10066.4-2004电热设备的试验方法第4部分:间接电阻炉
- PMC知识培训课件
- CJJ82-2019-园林绿化工程施工及验收规范
- 高中数学教材分析讲座课件第五章-三角函数
- 个人信息(模板)
- 会计师事务所验资工作底稿模板
- 婚育情况登记表
- (完整版)水电工安全技术交底
- 骨科学研究生复试真题汇总版
评论
0/150
提交评论