Tomasulo算法
Tomasulo算法:为IBM 360/91设计的,它采用的是寄存器重命名的方法来消除寄存器数据流之间的假相关,即用虚拟寄存器集代替真实的FPR,虚拟寄存器集在tomasulo算法中由每一功能单元所带的保留站(reservation station)、取数缓冲区(load buffers)和存数缓冲区(store buffers)组成。
Tomasulo算法的三段
1.Issue―从FP Op Queue中取出指令。
如果保留站空闲(无结构冒险),控制机制发射指令&发送操作数(对寄存器进行换名)。
2.Execution―对操作数执行操作(EX)
如果两个操作数都已就绪,就执行;如果没有就绪,就观测公共数据总线等待所需结果
3.Write result―完成执行(WB)
通过公共数据总线(CDB)将结果写入到所有等待的部件;标记保留站可用
IBM360/91的FPU分为加法器和乘除两个子功能单元。FLOS在两个功能单元的保留站有位置时将指令发生到相应保留站,并为输出分配相应重命名寄存器并标记,如果此时需要的源数据已经准备好则直接从相应寄存器送到保留站对应位置,等待功能单元空闲即运行,如果源数据没准备好,则在保留站对应区域设置指向该数据寄存器的指针,等数据准备好,则直接通过CDB总线送到保留站,而不需等待数据写回寄存器。
加上加法部件执行需要两个周期,乘除部件需要3个周期。
第一个周期,因为两个功能部件的保留站均有空闲位置,因此发射两条指令分别到两个功能单元,并设置好FLR相应标签位和为输出FLR分配重命名寄存器,这里因为x的源数据在FLR中已经准备好,所以直接将数据放入保留站相应位置,而w指令的源数据来源于R4,此时R4为忙,标签为x的输出对应保留站的ID=1,所以设置相应标签为1,即x指令对应的保留站号。
第二个周期,保留站有空位,仍然发射两条指令到相应位置。同样设置源操作数标签。为FLR4和FLR8设置标签和分配重命名寄存器。由于FLR4标签在前一个周期已经被设置从指向x,即1,需要更新为指向y,即2,即y指令的结果更新FLR4。该周期末,x执行完毕,计算结果通过CDB总线送到w和y指令的相应区域。
第三个周期,w和y开始执行。
第四个周期,y指令执行。
第五个周期,周期末,y执行完毕,数据通过CDB送到z指令,同时更新FLR。
第六个周期,指令x执行完毕,在总线CDB上广播,z和FLR2中相关标签命中,更新相应区域,z开始执行。z指令在低八个周期结束。
ps1:保留站的标签设置是根据FLR标签的值来设置的,在把指令发送到保留站时先设置源操作标签,再设置FLR标签。
ps2:采用这种算法,寄存器R4的内容在出现输出相关时可能漏掉中间数据,例如指令w的结果在R4中不会出现,因此存在不能精确异常定位问题。
Tomasulo算法相关推荐
- 简单理解Tomasulo算法与重加载缓冲区
参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 流水线运行的一个主要限制是:它们使用循序指令发射与执行的方式.把指令执行的流水线简单比喻为洗衣服: 采用循序 ...
- CPU乱序执行基础 —— Tomasulo算法及执行过程
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- 【体系结构】动态调度算法:记分牌算法和tomasulo算法
记分牌和tomasulo算法 动态调度: 通过硬件在程序执行时重新安排代码的执行序列来减少竞争引起的流水线停顿时间 动态调度流水线具备以下功能: (1)允许按序取多条指令和发射多条指令----取指(I ...
- 计算机体系结构--Tomasulo算法
起源 由IBM开发,并于1966年在IBMS360/91大型机中首次实现,大约是在CDC6600中记分板首次亮相之后的3年. 动态调度硬件中的流水线,减少停顿. 结构 Tomasulo与记分牌 提起T ...
- 体系结构学习笔记---白话理解Tomasulo算法
乱序执行 1.1 影响流水线性能的因素 单位时间执行的指令数目是衡量CPU的一项重要指标,为了让各个部件尽量处于工作状态,于是提出了指令流水,但是随之而来的问题就是因为程序之间的相关性,从而引起的流水 ...
- python实现tomasulo算法_手写算法-python代码实现KNN
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 原理解析 KNN-全称K-Nearest Neighbor,最近邻算法,可以做分类任务,也可以做回归 ...
- 计分板机制和Tomasulo方法
如图所示计分板机制可以保障指令能够按序发射,但是它们之间具体的执行顺序就是乱序的了,计分板机制可以减少写读暂停对于流水线CPI的影响. (参考自计算机系统结构 一种定量的方法) 比计分板机制少了一个度 ...
- 计算机系统结构:指令的动态调度-记分牌算法
记分牌算法和Tomasulo算法是两种比较典型的动态调度算法.记分牌算法历史现在仍在某些地方根据需求被使用.Tomasulo算法已经比计分牌算法改进了许多,是一种更强的算法.许多开发指令级并行的现代处 ...
- GPU指令集技术分析
GPU指令集技术分析 本文将两篇文章整理了一下. 参考文章链接如下: https://zhuanlan.zhihu.com/p/391238629 https://zhuanlan.zhihu.com ...
最新文章
- 讨论oracle的反腐,关于oracle SCN 的讨论
- Maven多工程的创建
- MySQL为Null导致莫名其妙的5大坑
- PLL_BASE——Basic Phase Locked Loop Clock Circuit(Virtex-5, Spartan-6)
- 防止论坛用户重复登录的方法 .
- XCTF-高手进阶区:unserialize3
- P4427-[BJOI2018]求和【LCA】
- ELK下Elasticsearch优化
- vi 编辑器基本命令
- java找出两个共有,Java-找出两个单链表的首个公共节点
- Windows phone 8.1 MessageBox 变了哦!
- MSDN下载的win7 32位原版镜像无法安装vmtools和提示安装程序无法自动安装Virtual Machine Communication Interface(VMCI)驱动程序
- Bypassing Stack Cookies, SafeSeh, SEHOP, HW DEP and ASLR
- The server encountered an unexpected condition that prevented it from fulfilling the request.(解决思路)
- 川土微电子CA-IS1300用于电流检测的隔离运放新品上市
- 游戏推广中买量和导量是什么意思?
- Windows DOS内部命令详解04——del、ren、cls、ver、date、time
- 解释计算机概念BIOS,电脑BIOS的小常识
- 电脑误删的文件怎么恢复?
- 有道云笔记Markdown如何停止/结束一段引用
热门文章
- 随机变量X,分布函数X~F(x)的理解。
- vue-cli 创建项目失败解决方案
- 晒晒我的Ajax服务端框架
- 最新曝光!币圈又一批项目上了“黑名单”(细节公布)
- HCIE-Security Day48:AC准入控制Portal
- run cesm2.1.3 with my own forcing dataset
- 基于JAVA中小学图书馆管理计算机毕业设计源码+系统+数据库+lw文档+部署
- 单键四档带433遥控调色调光台灯方案
- 注意力专注软件推荐——番茄ToDo
- 二级联动之两种方法实现