一、实验目的

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

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

  1. 计算机体系结构在线读,18春北交《计算机体系结构》在线作业二-3

    18春北交<计算机体系结构>在线作业二-3 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 4.90 积分 18 春北交<计算机体系 ...

  2. java实验四结果,java实验四异常处理.doc

    java实验四异常处理.doc 实验四异常处理一.实验目的1.掌握异常的概念和Java异常处理机制.2.掌握异常的定义.抛出和捕捉处理.二.实验内容与要求1.仔细读下面的JAVA语言源程序,自己给出程 ...

  3. 计算机组成原理学习-实验四 模型机实验(简易版)(详细、人话)

    如果你对其他计算机组成原理知识感兴趣,请考虑阅读我的专栏: 计算机组成原理[专栏] 须知 本文仅作学习笔记使用,仅在CSDN网站发布,如果在其他网站发现,均为侵权行为,请举报.作者:小王在努力. 实验 ...

  4. linux 程序实验总结,Linux实验报告(实验四) shell编程实验

    实验四 shell编程实验(二) 班级:姓名:学号:上机时间:年月日 任课教师:实验教师:实验成绩: 一.实验目的 综合Linux常用命令和vi编辑器的使用,熟练掌握shell脚本编程. 二.实验注意 ...

  5. 多思计组实验实验四、数据通路实验

    实验四.数据通路实验 一.实验目的: 1.理解总线的概念和作用. 2.连接运算器与存储器,理解计算机的数据通路. 3.理解微命令与微操作的概念. 二.预习要求: 1.读懂实验电路图. 2.在实验之前填 ...

  6. 微控制器实验计算机组成原理,组成原理实验四 微控制器实验

    实验四 微控制器实验 实验四微控制器实验 实验四 一.实验目的 1.掌握时序产生器的组成原理. 微控制器实验 2.掌握微程序控制器的组成原理. 3.掌握微程序的编制.写入,观察微程序的运行.二.实验设 ...

  7. 计算机网络实验四 VLAN配置实验

    实验四 VLAN配置实验 一.实验目的: 了解华为交换机的基本功能. 掌握虚拟局域网VLAN的相关知识,配置交换机VLAN功能. 掌握VLAN的创建.Access和Trunk接口的配置方法. 掌握用于 ...

  8. 《数据结构与算法》实验:排序算法实验比较——选择排序 堆排序

    <数据结构与算法>实验和课程Github资源 <数据结构与算法>实验:线性结构及其应用--算术表达式求值 <数据结构与算法>实验:树型结构的建立与遍历 <数据 ...

  9. 操作系统实验四-LRU算法的模拟

    操作系统实验四:页式虚拟存储管理的模拟 一.实验目的: 掌握存储管理的基本原理.地址变换过程:用软件实现地址转换过程:用一种常用的页面置换算法来处理缺页中断并研究其命中率. 二.实验题目: 1.模拟请 ...

  10. mysql安全实验测验答案_实验四∶数据库安全性实验报告.doc

    资源描述 1 / 2实验四:数据库安全性班级:软件工程 0918 姓名:许啸 学号:0911610819[实验目的] :验证数据库安全性[实验要求] :1)新建一个登陆名为 tom,密码为 tom00 ...

最新文章

  1. Python多模块文件共享变量
  2. Springboot整合freemarker和相应的语法
  3. 成功解决pywintypes.com_error: (-2147352573, ‘找不到成员。‘, None, None)
  4. 利用Quartz2D-contex绘制三角形
  5. mysql重连服务器失败_java – MySQL连接器错误“服务器时区值中...
  6. 麻雀优化算法_多种智能优化算法应用案例分享-附代码
  7. 理解 JMeter 聚合报告(Aggregate Report)
  8. 190313每日一句
  9. CAT1 4G+以太网开发板腾讯云手机微信小程序显示温度和下发控制
  10. 火山视窗选择夹内使用右键菜单演示
  11. python 图表控件_10款好用的.NET图表控件推荐
  12. 机器学习十大算法实现代码汇总(python)----线性回归、逻辑回归、决策树、支持向量机、朴素贝叶斯、K邻近算法、K-均值算法、随机森林、降低维度算法、梯度增强算法
  13. 编码:隐匿在计算机软硬件背后的语言
  14. error C2504 base class undefined
  15. 智能教育,是未来教育的趋势吗?
  16. 计算机怎么升级64位操作系统,32位系统怎么升级64位系统
  17. MySQL表如何导入图片_mysql中怎样插入图片
  18. 如何修改Ubuntu的分辨率
  19. 大数据技术怎么学习,需要具备什么基础?简单说一下
  20. Race Condition(资源竞争) 解决方案总结

热门文章

  1. 听风辨器,神功护体——IT运维人员的九阳神功(中)
  2. 【软件定义汽车】-【架构篇】-迈向SOA软件架构,软件定义汽车成为现实
  3. Lae程序员小漫画(1),仅供一乐
  4. MMO游戏开发 --前言
  5. 网络安全笔记-26-Linux-基础
  6. WWDC22:ARKit 6低调发布,新功能瞄准VST MR头显
  7. linux网络标志有个问号,只有Linux中的问号
  8. php自我介绍50字,【自我介绍50字左右】自我介绍50字
  9. 小青龙的Java面试笔记
  10. Unity笔记-29-ARPG游戏项目-05-简易的战斗系统