体系结构笔记------动态调度中的Tomasulo算法

  • 核心思想
  • 算法阶段
    • Issue
    • Execution
    • Write result
  • 保留站组成
  • 小结

核心思想

Tomasulo算法采用寄存器重命名(Renaming)方法,将记分牌中的寄存器和指令的运算内容用一大组"虚拟寄存器名"来代替(也就是下面的保留站)。
功能部件缓冲器称为 “保留站(reservation stations)”,用来存放未决的操作数;
指令中的寄存器被数值或者指向保留站的指针代替,这一过程称为:寄存器换名(register renaming) ;
保留站比实际寄存器多,因而可以完成编译器所不能完成的一些优化工作;以消除WAR、WAW冒险;

装入(Load) 和 存储(Stores)也象其他功能部件一样具有保留站(专门的缓冲器);
运算结果无需通过寄存器, 而是通过公共数据总线(Common Data Bus)把结果广播到所有的功能部件上;
公共数据总线:数据 + 源 (“来源”总线),如果与期望的功能部件匹配,就“写”(产生结果);传输是以广播方式进行。

算法阶段

Issue

从图中的FP Op Queue中取出指令,如果保留站空闲 (无结构冒险), 控制机制发射指令,发送操作数(对寄存器进行换名,消除名相关)。

Execution

对操作数执行操作(EX),如果两个操作数都已就绪,就执行(RAW的处理);如果没有就绪,就观测公共数据总线等待所需结果;

Write result

完成执行(WB),通过公共数据总线将结果写入到所有等待的部件;标记保留站可用 (Not busy),并从CDB写入目的寄存器,当连续写同一寄存器时,只有最后一次才能写入,消除了WAW。

保留站组成

Op:该部件将完成的具体操作(例如, + or –)
Vj, Vk:源操作数的实际数值,存储缓冲器(Store buffers)设有V域,存放将存储的结果;
Qj, Qk:—将产生源寄存器值(将写的值)的保留站。
Busy:指明保留站或FU处于忙状态
Register result status:指明哪个功能部件将写到哪个寄存器(Qi)。如果没有将写入寄存器的未决指令,该域为空 ;
在tomasulo算法中Qj,Qk=0 就表示操作数处于ready状态。

load也有专门的保留站,其中address是要读取的内存地址的值。
在基于tomasulo算法的动态调度中,指令是:按序发送、乱序执行、乱序完成的。

小结

相比于记分板算法,Tomasulo运行相同的程序的时间要比记分板小,主要由于对WAR与WAW的处理上,Tomasulo以换名来避免,而记分板直接是暂停等待,但是在实现上Tomasulo需要的硬件要求与成本都太高。需要大量高速的相联存储(associative buffer),而且公共数据总线是制约性能增长的瓶颈,每个CDB必须广播到多个功能部件单元(大容量、写操作密集),每个周期可以同时完成的功能部件数量可能由于单总线而受限(最坏情况为“1”);对于多个CDB来说,为完成并行相联存储,功能部件FU需要更复杂的逻辑控制;

体系结构笔记------动态调度中的Tomasulo算法相关推荐

  1. 体系结构笔记------动态调度中的记分板算法

    体系结构笔记------动态调度中的记分板算法 动态调度 流水线划分 相关冲突 结构冲突 数据冲突 记分板控制 流出 读数 执行 写回 具体算法 大致流程 局限 动态调度 在程序执行的过程中,由硬件来 ...

  2. 体系结构学习笔记---白话理解Tomasulo算法

    乱序执行 1.1 影响流水线性能的因素 单位时间执行的指令数目是衡量CPU的一项重要指标,为了让各个部件尽量处于工作状态,于是提出了指令流水,但是随之而来的问题就是因为程序之间的相关性,从而引起的流水 ...

  3. 计算机体系结构--Tomasulo算法

    起源 由IBM开发,并于1966年在IBMS360/91大型机中首次实现,大约是在CDC6600中记分板首次亮相之后的3年. 动态调度硬件中的流水线,减少停顿. 结构 Tomasulo与记分牌 提起T ...

  4. 【体系结构】动态调度算法:记分牌算法和tomasulo算法

    记分牌和tomasulo算法 动态调度: 通过硬件在程序执行时重新安排代码的执行序列来减少竞争引起的流水线停顿时间 动态调度流水线具备以下功能: (1)允许按序取多条指令和发射多条指令----取指(I ...

  5. 计算机图形学 学习笔记(一):概述,直线扫描转换算法:DDA,中点画线算法,Bresenham算法

    前言 本笔记基于 http://www.icourse163.org/learn/CAU-45006?tid=1001746004#/learn/announce 感谢中国农大 赵明老师的分享~ 现在 ...

  6. 小猫爪:i.MX RT1050学习笔记15-FlexSPI-FLASH使用3-KEIL FLASH算法中的使用

    小猫爪:i.MX RT1050学习笔记15-FlexSPI-FLASH使用3-KEIL FLASH算法中的使用 1 前言 2 FLASH算法解析 2.1 初始化Init 2.2 写操作 END 1 前 ...

  7. TPM分析笔记(七)TPM 模块中的密码算法家族。

    目录 密码攻击 暴力破解 根据类型来计算算法强度 针对算法本身的攻击 安全的定义 密码家族 哈希(摘要) 哈希扩展(HashExtend) 基于哈希的消息认证码(HashedMessageAuthen ...

  8. 容迟网络中的路由算法笔记(三)

    第三章 基于地理信息的路由算法 背景:为了提高消息成功投递的可能性,一种普遍受认可的方式是采用基于洪泛的多副本策略,通过引入更多的消息副本,增大消息与目的节点相遇的机会.为了实现消息的受控洪泛,减少消 ...

  9. 简单理解Tomasulo算法与重加载缓冲区

    参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 流水线运行的一个主要限制是:它们使用循序指令发射与执行的方式.把指令执行的流水线简单比喻为洗衣服: 采用循序 ...

  10. 计算机体系结构——动态流水线动态调度详解

    1 动态流水线技术的由来 为什么会发明动态流水线?首先我们来了解一下静态流水线的一个弊端,我们都知道简单的静态流水线,它们都是使用顺序指令发射与执行,一旦出现一条指令停顿在流水线中,后续的指令都不能执 ...

最新文章

  1. 携手中国电信、中国联通,华为正式发布首个5G超级刀片站 A+P 2.0天线商用网络
  2. 【常用工具】常用工具收集
  3. 数据库连接池——C3P0:数据库连接池技术
  4. 让你提前知道软件开发(44):如何解决软件故障?
  5. ios 点击出现另外一套tabbar_iOS开发中TabBar再次点击实现刷新效果
  6. 2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - A. 迷宫
  7. Thrift源码学习二——Server层
  8. 基于shiro实现session持久化和分布式共享
  9. 12022.ADS7138采集芯片
  10. python中else和if的结合语句_python中else和if的结合语句_python中的if-else语句和字典...
  11. Spring Security HttpSecurity.authorizeRequests
  12. ubuntu中pycharm无法输入汉字
  13. Python列表中数据插入数据库
  14. matlab求z score,matlab标准化和反标准化——zscore
  15. m7405d粉盒清零方法_联想m7605d清零方法
  16. 计算机需要无线网卡进行网络连,usb无线网卡怎么用详细步骤
  17. Office中快速删除批注
  18. “打工人”梗刷爆网络,今天你打工了吗?
  19. linux 库全局变量_学习嵌入式,做底层还是应用好?嵌入式Linux底层要掌握哪些技能?...
  20. Java开发游戏项目-用java语言做的超级玛丽

热门文章

  1. 分享一下支付宝的支付(soEasy)
  2. 数据库优化(超级详细),转文,值得一读
  3. EBU5502 Database Coursework Specifications
  4. 桂林电子科技大学校园网登录数据包抓取教程实现路由器每天自动登录
  5. rap格式鸿蒙,你,想要成为rap star吗?
  6. Python编程快速上手-让繁琐工作自动化 — 读书与代码笔记
  7. 【代码】Android和java平台 DES加密解密互通程序及其不能互通的原因
  8. 【构造】POJ-3295 Tautology
  9. 重读Ardupilot中stabilize model+MAVLINK解包过程
  10. mysql count函数 null_MySql中COUNT(XXX OR NULL)