硬件方法的指令级并行

为什么要用硬件调度方案?因为有时候编译时无法确定相关。

基本思想:允许stall后的指令继续向前流动(这么说可能有点抽象,简单的理解就是若是你因为相关被stall了,就让你后面的没有被stall的指令先来,很现实的一个思路),这种思路导致了一个基本特点:顺序发射,乱序执行

举个简单的例子:银行取钱

假设某银行是流水线操作,取钱依次经过 取号,填单子,柜台取钱,开凭据,拿回存折五个步骤

顺序发射就是指的是每个人都按照来的先后顺序来取号;

但是,有些人取钱忘记带存折身份证,导致无法填单子,这时候就得回去取存折身份证,让后面的人先填单子,但是后面的人填完单子又忘了要去多少钱,就得再让后面的人先取钱,等到自己当前步骤需要的材料都准备好了再从上次停留的状态继续执行。

这也就是乱序执行的意思。

一、记分牌(Scoreboard)技术

  1. 技术要点

    先放上一张糊图,展现了记分牌技术的步骤。

    • 记分牌技术在原本流水线的基础上增加了一个硬件部件,称为Scoreboard,其用来记录各个功能部件的使用情况以便每条指令来根据此来判断是否可以执行,后面会对此结构进行详细介绍。

    • 流水线部分,将ID段拆分成issue和read operands两个阶段,issue阶段完成译码工作,也完成检测结构相关工作;read operands即操作数,其需要等待没有数据相关时才能进行,即每次都要和scoreboard比对,确认当前需要的操作数已经准备好才读取,否则就会stall这条指令让后面有条件的指令先执行。

  2. 各个流水线段的工作

    • Issue段:指令译码,检测结构相关。检测当前指令所需的功能部件(如整数乘法器,浮点数乘法器等)是否空闲,检测当前指令的目的寄存器是否被其他指令作为目的寄存器占用(通过这一步解决了WAW相关)。若两者有一不满足,则停止发射当前指令,也不发射后续指令(这就保证了顺序发射)
    • Read operands段:通过scoreboard检测当前指令需要的源寄存器是否被其他已发射指令寄存器作为目的寄存器占用。如果没有,则读取相应的值作为操作数,否则该条指令stall,让后面指令先执行(这一步解决RAW相关,同时导致了乱序执行)
    • Execution段:接收到操作数后,相应的功能部件开始执行;当计算完成后,通知scoreboard可以结束此指令的执行,释放指令对改功能部件的占用
    • WB段:scoreboard得到执行结束的消息后,检测指令的写回寄存器是否被作为源寄存器读取,即检测WAR相关。如有WAR相关,就暂停该指令;没有就正常写回。
  3. 记分牌的结构

    由上可以看出,scoreboard需要保存不少系统的执行信息用来检测各种相关

    分析:

    从Issue段可以看到,为了检测结构相关,需要保存每个功能部件的状态,记录该功能部件当前是否空闲,若非空闲,操作数是啥,操作数是否准备好,进行的操作是啥,目的寄存器是啥,源操作数由哪个部件产生;

    检测WAW相关则需要记录每个寄存器当前是否被某条指令占用作为目的寄存器,其中保存写回数据的产生的功能部件;

    RAW、WAR相关已经可以通过上面两个结构来检测了。

    当然,因为指令的乱序执行,我们还需要一个结构来记录每条指令的执行状态。

    下面给出记分牌的结构

    • Instruction Status——记录正在执行的各条指令所处的状态步

      上图中,表格中数字 n 表示相应指令(行)的相应状态(列)在n个周期执行,还未执行的阶段是空白的

    • Functional unit status——记录功能部件(FU)的状态。 用9个域记录每个功能部件的9个参量 :

      Busy Op Fi Fj Fk Qj Qk Rj Rk
      指示部件是否空闲 该部件的操作 目的寄存器编号 源寄存器1编号 源寄存器2编号 源操作数1的产生部件 源操作数2的产生部件 源操作数1是否就绪 源操作数2是否就绪

    结构如上图所示。

    • Register result status ——如果存在功能部件对某一寄存器进行写操作, 指示具体是哪个功能部件对该寄存器进行写操作。如果没有指令对该寄存器进行写操作, 则该域为Blank

  4. 几个问题

    • 为什么要采用顺序发射?

      因为顺序发射可以知道某条指令的结果会流向哪条指令,如果乱序发射则会混淆RAW,WAR相关

    • 记分牌的主要思想?

      顺序发射,乱序执行乱序完成;

      发射前检测结构相关和WAW相关;

      读操作数前检测RAW相关;

      写结果前处理WAR相关。

    • 缺陷?

      存在结构相关和WAW相关时无法发射后续指令,导致整个流水线空闲;

      没有转发操作;

ILP——指令级并行2:记分牌(Scoreboard)技术相关推荐

  1. 计算机系统结构复习(六):Limits to ILP and SMT指令级并行的限制和同时多线程

    计算机系统结构复习(六):Limits to ILP and SMT指令级并行的限制和同时多线程 指令级并行的限制 指令窗口 TLP线程级并行 DLP数据级并行 线粒度切换方式 同时多线程 (SMT ...

  2. 指令级并行--计算机体系结构

    参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 一.基本概念 几乎所有处理器都使用流水线来重叠指令的执行过程,以提高性能.由于指令可以并行执行,所以指令之间 ...

  3. 计算机系统结构--复习(Part 1)

    适用于期末考试之前的知识点复习. 往期回顾: Part 1(chapter 1 - chapter 5):https://blog.csdn.net/zongza/article/details/83 ...

  4. 流水线问题--计算机体系结构

    参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 一. 基本概念 先理解几个基本概念: 流水线:是一种将多条指令重叠执行的实现技术.一条指令的执行需要多个操作 ...

  5. Cadence DSP 算子开发上手指南

    前言 Cadence 的 Vision P6/Q6/Q7 系列 DSP 在很多的 ISP ("Image Signal Processor") 芯片中都有部署,可以在图像处理场景补 ...

  6. Simultaneous Multithreading (同时多线程)

    参考:ComputerArichitecture(6th⁡Edition)Computer\ Arichitecture\ (6\th\ Edition)Computer Arichitecture  ...

  7. 计算机体系结构(国防科大)-第七章-多处理机

    计算机体系结构(国防科大)-第七章-多处理机 1 共享存储器体系结构 1.1 并行计算 1.2 多处理机Cache一致性 2 互联网络 2.1 互联网络的性能参数 2.2 静态连接网络 2.3 动态连 ...

  8. 中科物栖CEO张磊:“芯片+OS”范式在万物互联时代的机遇与挑战|量子位·视点分享回顾...

    视点 发自 凹非寺 量子位 | 公众号 QbitAI 万物互联时代如期而至,据艾瑞咨询测算,2025年将有超过150亿物端设备接入物联网.物联网(Internet of Things,IoT)正在.还 ...

  9. 计算机课总结ppt,高级计算机体系结构-课程复习与总结ppt课件.ppt

    <高级计算机体系结构-课程复习与总结ppt课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<高级计算机体系结构-课程复习与总结ppt课件.ppt&g ...

最新文章

  1. android:sharedUserId作用
  2. java 7 g1_java7中G1垃圾收集器使用和流程总结
  3. 固态存储作缓存 提升性能有绝招
  4. ElasticStack系列之十六 ElasticSearch5.x index/create 和 update 源码分析
  5. python序列类型映射类型_Python的数据访问模型与序列介绍
  6. Ring3下实现进程保护,不用hook
  7. Python之简单验证码实现
  8. 自动性能统计信息(三)(Automatic Performance Statistics)
  9. Http Server API路由请求到web程序
  10. mybatis简单案例源码详细【注释全面】——前期准备
  11. 第一个Sprint冲刺成果
  12. 电脑安装了多个版本的 Go,怎么优雅切换各个使用版本?
  13. html5+css3第一次作业_在家写作业日记200字
  14. [20190226]测试使用bbed恢复索引.txt
  15. 安装win7的小插曲
  16. c语言语法大全,oc语言基本语法汇总分析
  17. FTL(闪存转换层)简单介绍
  18. Linux查看文件大小的命令du的简单介绍
  19. c语言字符 ul,c语言 #define 中的UL
  20. android直播音频开发准备

热门文章

  1. ldap 单点登录 php,LDAP用户验证功能简介
  2. 正则【大写字母加数字,加顿号,加“至”字】
  3. Candy Sharing Game
  4. 打印九九口诀表 — C语言
  5. 收集的ubuntu下应用软件
  6. Ubuntu内存清理经验整理
  7. java发送网易云短信验证码(语音和短信)
  8. 实用---生命游戏 Java
  9. 用Visual Studio Code做PHP开发
  10. 北京小客车摇号程序PHP版