计算机体系结构--Tomasulo算法
起源
- 由IBM开发,并于1966年在IBMS360/91大型机中首次实现,大约是在CDC6600中记分板首次亮相之后的3年。
- 动态调度硬件中的流水线,减少停顿。
结构
Tomasulo与记分牌
提起Tomasulo算法一个经常与他进行对比的算法就是记分牌算法,有关记分牌的有关概念可以去看一下这篇博文文章传送门
它们的主要区别如下:
Tomasulo:
- 控制与buffer分布在功能单元中。功能单元缓冲器被称为保留站,其具有未决指令和操作数以及其它指令状态信息。
保留站有时被称为物理寄存器或重命名寄存器,而不是ISA指定的体系结构寄存器。 - 指令中的ISA寄存器由值(如果可用)或指向稍后将提供该值的预留站(RS)的指针替换。这个过程称为寄存器重命名。避免RAW和WAW的风险,并且允许基于硬件的循环展开。
- 指令结果不是通过寄存器,而是通过公共数据总线(CDB)从RSs(转发)到FU,CDB将结果广播到所有FU。
- 加载和存储也被视为具有RSs的FU。
- 整数指令可以通过分支,允许FP操作超出FP队列中的基本块。
算法步骤
- ISSUE:从挂起的指令队列中获取指令。
-向空闲保留站发出指令(无结构性危险)。
-所选RS标记为忙。
-控制将可用的指令操作数值(来自ISA寄存器)发送到分配的RS。
-尚未可用的操作数被重命名为将产生该操作数的RSs(寄存器重命名)。 - Execution(EX):对操作数进行操作。
-当两个操作数都准备好后,就开始在分配的FU上执行。
-如果所有操作数都没有准备好,观察公共数据总线(CDB)以获得所需的结果(通过CDB完成的转发)。 - Write result(WB):完成执行。
-将公共数据总线上的结果写入所有等待单元
-将保留站标记为可用。
计算机体系结构--Tomasulo算法相关推荐
- 计算机体系结构--记分牌算法
记分牌 记分板是一种硬件机制,它通过在操作数可用且没有危险条件阻止的情况下立即执行指令来维持每周期一条指令的执行速率. 它用四个阶段:ID1,ID2,EX,WB代替ID,EX,WB 每个指令都要经过记 ...
- 【计算机体系结构】计算机体系结构(6) 并行处理技术(1) SIMD并行计算机、算法和互联网络
文章目录 6.1 并行处理技术的基本概念 6.2 `SIMD` 并行计算机(阵列处理机) 6.2.1 阵列机的基本结构 1. 分布式存储器的阵列机 2. 共享存储器的阵列机 6.2.2 阵列机的主要特 ...
- 【体系结构】动态调度算法:记分牌算法和tomasulo算法
记分牌和tomasulo算法 动态调度: 通过硬件在程序执行时重新安排代码的执行序列来减少竞争引起的流水线停顿时间 动态调度流水线具备以下功能: (1)允许按序取多条指令和发射多条指令----取指(I ...
- 体系结构学习笔记---白话理解Tomasulo算法
乱序执行 1.1 影响流水线性能的因素 单位时间执行的指令数目是衡量CPU的一项重要指标,为了让各个部件尽量处于工作状态,于是提出了指令流水,但是随之而来的问题就是因为程序之间的相关性,从而引起的流水 ...
- 指令级并行--计算机体系结构
参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 一.基本概念 几乎所有处理器都使用流水线来重叠指令的执行过程,以提高性能.由于指令可以并行执行,所以指令之间 ...
- 简单理解Tomasulo算法与重加载缓冲区
参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 流水线运行的一个主要限制是:它们使用循序指令发射与执行的方式.把指令执行的流水线简单比喻为洗衣服: 采用循序 ...
- 【课程笔记】计算机体系结构复习笔记
文章目录 第一章 基本原理 计算机系统层次与体系结构 测量及分析性能 计算机设计量化原理 计算机体系结构分类 第二章 指令集体系结构 指令集分类 存储器地址的翻译 寻址模式 优化指令格式 指令集操作 ...
- 『译』计算机体系结构发展史(四)
系列文章第四篇(对应M.5) 往期文章 『译』计算机体系结构发展史(一) 『译』计算机体系结构发展史(二) 『译』计算机体系结构发展史(三) M.5 The Development of Pipeli ...
- 计算机体系结构——名词解释
计算机体系结构--名词解释 文章目录 计算机体系结构--名词解释 一.第一章 1.计算机系统结构,计算机组成,计算机实现 2.计算机系统结构分类法 ①Flynn分类法 ②冯氏分类法 ③Handler分 ...
最新文章
- 实践学习:首次项目合作
- linux c 函数专挑,Linux C wait函数
- 高性能ORM框架XLinq功能详细介绍
- java package private,Java中的public,protected,package-private和private有什么区别?
- HTML5 音频 audio
- java字节数组转换成16进制_Java 将字节数组转化为16进制的多种方案
- mysql 链式查询_MySQL的链接查询
- 玛纽尔扫地机器人怎样_扫地机器人哪个牌子好?满足日常清洁需求才值得推荐...
- Notepad++的json 格式化
- Entity Framework 4 in Action 读书笔记——开篇
- 重识JavaScript 之 数据类型的相互转换
- 矢量图形设计工具Artboard快捷键汇总
- plsqldev12 工具栏图标设置
- 27学java能找到工作吗_今年27,想自学Java,转行程序员,请问可行吗?
- IDEA添加快捷输入
- win7计算机系统还原,如何使用Win7系统自带还原修复电脑
- scala的两种变量类型 var 和 val
- 精益生产25个必备工具!
- Xsplit.Broadcaster 4.3.0 Crack
- 页面顶部导航栏css样式布局
热门文章
- Friendship Cards 友情卡片
- python设置excel自动换行_python操作excel
- c语言趣味算数游戏程序设计,非常经典的C语言趣味题目
- 个人谈谈对几款杀毒软件的看法
- 【随笔】博客质量分计算,如何让自己的博客脱颖而出,也许文章能够给你答案
- ios证书过期换证和更换描述文件解决方案(香蕉云编)
- #python学习笔记(七)#字符串
- 使用开发模式dev测试链码
- STC用PCA测量脉宽_【鼎阳硬件智库原创︱测试测量】基于两台SDG2000X同步功能产生同步的4路信号...
- oracle用命令查表结构,Oracle查看表结构命令详解