计算机体系结构----计分板(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冲突在上述例子中没有显示出来,但是很显然计分板算法没解决这个问题,只能通过停顿解决。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在本地服务器发送邮件不可以,生产环境下跑可以

公司一般会给一个smtp-xxxx.com mail:host: smtp-xxxx.comport: 25properties:mail:smtp:starttls:enable: falsedebug: true然后你会使用堡垒机映射ip 会发现在本地邮件根本不会发出去,只能拿到虚拟机上跑 解决方案 我们需要把smtp-xxxx.com,改成对应的ip地址,只需要把smtp…

flutter release包使用adb查看日志排查错误实践

release包给出去后发现出现无法启动的情况,需要flutter开发排查 ,直接将release包安装到模拟器 使用adb 去连接模拟器 我这边是MuMu模拟器 adb connect 127.0.0.1:7555 然后查看设备列表 adb devices 直接输入0 即选择第一个设备 然后使用 adb logcat …

配电室智能监控系统设计及实现分析——安科瑞赵嘉敏

摘要:配电室作为电网正常运行中的基础性设施,在信息化建设中处于信息交换管理的核心位置,这就要求配电室内所有设备须时时刻刻正常运转,一旦某台设备出现故障,对数据传输、存储及系统运行构成威胁,就会影响…

2022-2023 ICPC, Asia Yokohama Regional Contest 2022(题解)

2022-2023 ICPC, Asia Yokohama Regional Contest 2022 文章目录 A. Hasty Santa ClausB. Interactive Number GuessingC. Secure the Top SecretD. Move One CoinE. Incredibly Cute Penguin ChicksF. Make a LoopG. Remodeling the DungeonH. Cake DecorationI. Quiz Contest…

数据结构02附录02:哈希表[C++]

图源:文心一言 上机题目练习整理~🥝🥝 本篇作为线性表的代码补充,每道题提供了优解和暴力解算法,供小伙伴们参考~🥝🥝 第1版:在力扣新手村刷题的记录,优解是Bard老师提…

pyqt treeWidget树生成

生成treeWidget树与获取treeWidget树节点的数据 # encodingUTF-8 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTreeWidgetItem, QLineEdit, QSpinBox, QComboBox from PyQt5.QtWidgets import QWidget from release_test import Ui_F…

11Spring IoC注解式开发(上)(元注解/声明Bean的注解/注解的使用/负责实例化Bean的注解)

注解的存在主要是为了简化XML的配置。Spring6倡导全注解开发。 注解开发的优点:提高开发效率 注解开发的缺点:在一定程度上违背了OCP原则,使用注解的开发的前提是需求比较固定,变动较小。 1 注解的注解称为元注解 自定义一个注解: package com.sunspl…

说说微信小程序的登录流程?

面试官:说说微信小程序的登录流程? 一、背景 传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录 服务端校验用户信息通过之后,下发一个代表登录态的 token 给客户端,以便进行…

抖店怎么筛选达人?团队实操,百用不厌!

我是电商珠珠 在抖店入驻之后,品也选好了,就卡到了选达人这方面。 要么选的达人带不起来自己的品,要么就是被达人骗样品,要么就是没有达人愿意搭理自己。 我做抖店也已经三年时间了,这种情况遇到过很多,…

python爬虫实战(9)--获取澎pai热榜

1. 需要的类包 import pandas as pd import requests2. 请求地址 通过分析,数据可以直接从接口获取,无需解析页面标签,直接取出我们需要的数据即可。 def fetch_hot_news(api_url):response requests.get(api_url)if response.status_cod…

高级路由学习试题

文章目录 高级路由学习试题一.高级路由题目答案 二.OSPF 相关答案 三.基础知识答案 高级路由学习试题 一.高级路由题目 1.以下属于ITOIP特性的有() A、智能 B、开放 C、融合 D、标准 2.层级化网络模型将网络划分为() A、汇…

SpringMVC工作原理

文章目录 Spring MVC 概述组件介绍Spring MVC的工作原理 Spring MVC 概述 SpringMVC是一个基于MVC模式的Web框架,它是Spring Framework的一部分。SpringMVC主要用于在Java Web应用程序中实现Web层,提供了一套与平台无关的、可重用的Web组件。 Spring MV…

虚拟商城与社交购物:Facebook的新零售策略

随着数字科技的迅猛发展,虚拟商城和社交购物逐渐成为零售业的重要趋势。在这一潮流中,Facebook作为全球最大社交媒体平台之一,积极拥抱新零售,推动了虚拟商城和社交购物的融合。本文将深入探讨Facebook的新零售策略,以…

如何创建自己的小程序?零编程一键创建实战指南

当今瞬息万变的数字世界中,拥有一个属于自己的小程序已成为企业与个人展示、服务和互动的重要途径。无需编码知识,通过便捷的云端可视化平台,也可以轻松创建一款符合自身需求且功能丰富的小程序。下面给大家分享如何创建自己的小程序。 1、选…

【uview2.0】Keyboard 键盘 与 CodeInput 验证码输入 结合使用 uview

https://www.uviewui.com/components/codeInput.html &#xff08;CodeInput 验证码输入&#xff09; https://www.uviewui.com/components/keyboard.html &#xff08;Keyboard 键盘&#xff09; <u-keyboard mode"number" :dotDisabled"true" :show&q…

【活动系列】视频生成前沿研究与应用

写在前面 在视频生成即将迎来技术和应用大爆发之际&#xff0c;为了帮助企业和广大从业者掌握技术前沿&#xff0c;把握时代机遇&#xff0c;机器之心AI论坛就将国内的视频生成技术力量齐聚一堂&#xff0c;共同分享国内顶尖力量的技术突破和应用实践。 基本信息 论坛名称&…

创意天堂:25个聚焦艺术、设计和创意的网站推荐

1、即时设计 说到即时设计&#xff0c;每个人都应该熟悉它。不久前&#xff0c;即时设计开启了世界上第一个可以使用人工智能完成UI设计草案的即时设计「即时AI」大规模的内部测试也给产品设计行业带来了新的发展方向。事实上&#xff0c;对于产品设计师来说&#xff0c;即时设…

C语言中的指针变量p,特殊表达式p[0] ,(*p)[0],(px+3)[2] ,(*px)[3]化简方法

一.已知以下代码&#xff0c;请问以下 式子p[0] &#xff0c;p[1] &#xff0c;(*p)[0] &#xff0c;(*p)[1] 是什么意思&#xff1f; int A[3] {1,2,3}; int (*p)[3] &A; 因为前面的嵌入式C语言基础的章节中说过&#xff0c;数组下标其实就是数组首元素的地址往上偏…

网络服务DHCP与DNS

一 DHCP的工作原理&#xff08;租约过程&#xff09; 分类 1&#xff09;自动分配&#xff1a;分配到一个IP地址后永久使用 &#xff08;2&#xff09;手动分配&#xff1a;由DHCP服务器管理员指定IP&#xff08;打印机、报销系统&#xff09;把mac地址和ip地址做一个一一对…

Leetcode 1049 最后一块石头的重量II

题意理解&#xff1a; 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。 思路转化&#xff1a;我们可…