计算机体系结构----计分板(scoreboard)算法

计分板算法简介

计分板记录着所有必要的信息,用来控制以下事情:

  1. 每条指令何时可以读取操作数并投入运行(对应着RAW冲突的检测)
  2. 每条指令何时可以写入结果(对应着WAR冲突的检测)
  3. 在计分板中,WAW冲突是在issue阶段检测的,因此仍会导致整个流水线的停顿(另一篇博文提到的Tomasulo算法提供了一种更优美的解决方案)

需要强调的是,计分板算法和普通的流水线是不一样的,一般我们讨论的普通的五级流水线只有一个ALU,所以当一条指令在使用ALU时,其它指令是没法进入EXE阶段的,但是计分板算法不一样,它有多个功能部件,如果指令使用的是不同的功能部件,是能同时进入EXE阶段的。同理,计分板算法对寄存器堆的读取也是可以多条指令同时进行的,但是普通流水线是只有一条指令能访问,普通流水线和计分板算法一样的是一个cycle最多发射一条指令。下面的计分板示例流程会说明计分板算法的特点

动态调度核心思想回顾

  1. 允许就绪指令越过前面的停顿指令,率先投入运行,即乱序执行
  2. 为了支持乱序执行,需要对ID阶段进行改造,因为就绪指令就是在ID阶段被阻塞的
  3. 为了改造ID,需要分析ID阶段的约束条件和存在的问题:
  • 约束条件:ID阶段必须按序执行,因为,如果前一条指令还未译码,后续的指令就无法进行冲突检测
  • 存在的问题:在一个必须按序执行的阶段,执行了过多的检测,导致停顿增加
  1. 解决方案:将ID阶段拆分为两个阶段:
  • Issue:对应之前的ID阶段,但精简操作,只做最必要的事:如指令译码、资源冲突检测
    这一阶段仍是按序执行的,并且,在这一阶段停顿的指令,同样会阻塞后面的所有指令比如下面例子中因为资源冲突而未能发射的第二个LD阻塞了后面所有的指令
    – 但这一阶段不再检测所有数据冲突,因此不管就绪还是非就绪的指令,都有机会发射出去
  • Read operands:等待数据冲突消除,然后读取操作数
    – 这一阶段检测数据冲突,也是乱序执行实际发生的位置:非就绪指令会停顿在这一阶段,就绪指令会直接投入运行
  1. 不管是什么样的动态调度流水线,都要将ID做这样的拆分,差别主要是如何管理已发射、未就绪的指令:计分板算法使用计分板,Tomasulo算法使用保留站

每条指令的执行阶段

在这里插入图片描述
Issue阶段通过停顿整个流水线所有级解决WAW冲突。
Read operands通过监控源操作数是否可获得(available)来判定这个指令是否能执行以解决RAW冲突,这只会造成单条指令的停顿,流水线还是能继续
Write result阶段如果有数据需要写回,计分板会先判断是否有先前的指令在读这个数据且还没读完,通过引入停顿的方式解决WAR冲突,这只会造成单条指令的停顿,流水线还是能继续

计分板算法标记简介

在这里插入图片描述

计分板算法运行示例

在这里插入图片描述

在这里插入图片描述
注意cycle1阶段,发射的时候就已经知道源和目标操作数以及源和目标操作数是否准备好,并不需要等到Read operands阶段。
在这里插入图片描述
Cycle2时,因为Read oprands操作,读取完操作数后把Rj从Yes变成No,使得其他指令没法对R2进行写,这样可以避免WAR冲突。同时由于Interger部件被占用,第二条指令及后面的流水线全部停顿直至第一条指令执行完毕。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
注意:cycle5阶段,虽然第一个条指令已经过了excution阶段到了write result阶段,但是第二条load指令并不会发射,只能在下一个周期发射。且注意write result阶段会把计分板中和这条指令相关的所有功能部件状态及寄存器状态清空

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:cycle11是可以一次读取两个oprands的,MUL和SUB指令同时在这个时钟周期读取了操作数
在这里插入图片描述
注意:cycle12、cycle13中不同的指令可以利用不同的功能部件同时执行,MUL和SUB指令同时在这两个时钟周期处理了操作数
在这里插入图片描述
注意,cycle14阶段,最后一条ADD指令只会在SUB写回的下一个周期才开始发射
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:cycle23阶段,DIV读完操作数ADD就可以写回了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

计分板算法性能分析

  1. 计分板算法没有处理控制冲突,乱序执行仅局限在一个基本块内
  2. 没有消除WAR/WAW冲突,这些冲突仍会导致停顿
  • 上述例子中的ADD.D的写回操作就被DIV.D给阻塞而停顿了。这属于WAR冲突
  • WAW冲突在上述例子中没有显示出来,但是很显然计分板算法没解决这个问题,只能通过停顿解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/339002.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis性能大挑战:深入剖析缓存抖动现象及有效应对的战术指南

在实际应用中,你是否遇到过这样的情况,本来Redis运行的好好的,响应也挺正常,但突然就变慢了,响应时间增加了,这不仅会影响用户体验,还会牵连其他系统。 那如何排查Redis变慢的情况呢&#xff1f…

springboot私人健身与教练预约管理系统源码和论文

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&#xf…

[SAP] 解决程序提示被某用户使用或锁定的问题

在最近使用ABAP编辑器对Z437_TEST_2024程序进行修改操作时,出现程序提示"使用者 ABAP5110 当前编辑 Z437_TEST_2024"的情况,如下图所示 解决上述被某用户使用或锁定的方法如下 ① 在事务码输入框中输入事务码SM12,并输入用户名(使…

宋仕强论道之华强北精神和文化(二十一)

华强北的精神会内化再提炼和升华成为华强北文化,在外部会流传下去和传播开来。在事实上的行动层面,就是华强北人的思维方式和行为习惯,即见到机会就奋不顾身敢闯敢赌,在看似没有机会的时候拼出机会,和经济学家哈耶克企…

【Python学习】Python学习12-字典

目录 【Python学习】Python学习12-字典 前言创建语法访问列表中的值修改与新增字典删除字典元素Python字典内置函数&方法参考 文章所属专区 Python学习 前言 本章节主要说明Python的字典,是可变的容器,每个字典由键值对组成用冒号隔开,…

css深度选择器 /deep/

一、/deep/的含义和使用 /deep/ 是一种 CSS 深度选择器,也被称为深度组合器或者阴影穿透组合器,主要用在 Web 组件样式封装中。 在 Vue.js 或者 Angular 中,使用了样式封装技术使得组件的样式不会影响到全局,也就是说组件内部的…

激活函数整理

sigmoid函数 import torch from d2l import torch as d2l %matplotlib inline ​ xtorch.arange(-10,10,0.1,requires_gradTrue) sigmoidtorch.nn.Sigmoid() ysigmoid(x) ​ d2l.plot(x.detach(),y.detach(),x,sigmoid(x),figsize(5,2.5)) sigmoid函数连续、光滑、单调递增&am…

出版实务 | 出版物的成本及其构成

文章目录 出版物成本的总体构成直接成本开发成本制作成本 间接成本期间费用 本量利分析原则特点和作用变动成本项目固定成本项目本量利分析的基本公式及其应用定价发行折扣率销售数量单位销售收入销售收入总额单位销售税金销售税金总额变动成本总额单位变动成本固定成本总额单位…

Python教程39:使用turtle画美国队长盾牌

---------------turtle源码集合--------------- Python教程36:海龟画图turtle写春联 Python源码35:海龟画图turtle画中国结 Python源码31:海龟画图turtle画七道彩虹 Python源码30:海龟画图turtle画紫色的小熊 Python源码29&a…

使用Linux防火墙管理HTTP流量

在Linux系统中,防火墙是用于控制网络流量的重要工具。通过防火墙,你可以根据需要限制、过滤或允许特定的网络流量,从而提高系统的安全性。在处理HTTP流量时,防火墙可以帮助你实施访问控制、流量监控和其他安全策略。 iptables i…

java-数组

数组: - 是一种数据类型(引用类型) - 相同数据类型元素的集合 - 定义: - 初始化:给数组中的元素做初始化 - 访问:访问的是数组中的元素 - 通过(数组名.length)可以获取数组的长度(元素的个数) - 通过下标/索引来访问数组中的元素 …

斯坦福Mobile ALOHA提到的ACT之外的另两项技术:Diffusion Policy、VINN

前言 本文接上一篇文章《斯坦福机器人Mobile ALOHA的关键技术:动作分块ACT的算法原理与代码剖析》而来,当然最开始本文是作为上一篇文章的第二、第三部分的 但因为ACT太过关键,除了在上一篇文章中写清楚其算法原理之外,还得再剖…