一、相关知识

编译器和硬件都可以提高指令并行度。从功能上看,编译器主要工作是判断和消除相关,硬件主要工作是避免或减少由于指令相关而导致的机器阻塞和空转。静态调度由编译器完成,动态调度由硬件完成。

明确流水线互锁机制的概念:

如果某数据相关不能被隐藏,阻塞检测硬件机制会从使用结果的指令开始,暂停流水线,一直到数据相关消失以后,再流出新的指令,导致流水线空转。

明确动态调度和静态调度的概念:

静态调度:为了消除或减少流水线空转,首先需要编译器确定并分离出程序中存在相关的指令,然后进行指令调度,并对代码进行优化,这个过程通常称为静态调度。

VLIW结构处理器几乎完全依靠静态调度来提高指令级并行

动态调度:通过硬件重新安排指令的执行顺序,来调整相关指令实际执行时的关系,减少处理器空转。可以处理编译时未发现的相关。

在动态调度中,对原来五段流水线中的译码阶段的工作做了进一步细化,将指令结构阻塞检查和等待数据阻塞部分结束分为两部分,只要没有结构阻塞就可以流出,数据就绪(如果有数据相关,则等到数据阻塞结束)就可以执行。指令顺序流出,乱序执行,乱序结束。

为了允许乱序执行,将基本流水线的译码阶段再分为两个部分:

(1)流出(Issue)

指令译码,检查是否有结构阻塞

(2)读操作数(Read Operands,RO)

当没有数据相关引发的阻塞时就读操作数。

指令流出之前先被取至指令队列中,一旦满足流出条件,指令就从队列中流出。

指令乱序结束会导致异常处理不精确的问题,这个问题可以通过前瞻(Speculation)技术解决。

二、记分牌算法

记分牌算法不能解决WAR和WAW相关,它是通过将后一条指令暂停来克服此类问题的。动态调度的另一算法Tomasulo算法通过寄存器换名技术解决了WAR和WAW相关。

记分牌技术的目标是在资源充足时,尽可能早的执行没有数据阻塞的指令,达到每个周期执行一条指令。如果某条指令被暂停,而后面的指令与流水线中正在执行的或被暂停的指令不相关,那么这条指令可以继续流出并执行下去。记分牌电路负责记录资源的使用,并负责相关检测,控制指令的流出和执行。

每条指令在流水线中的执行过程可以分为指令的流出、读操作数、执行和写结果这四段。

(1)流出(IS)

如果存在结构相关或写后写相关,指令就不会流出。

(2)读操作数(RO)

记分牌检测源操作数寄存器中数据的有效性。如果前面已流出的还在运行的指令不对本指令的源操作数寄存器进行写操作,或者一个正在工作的功能部件已经完成了对这个寄存器的写操作,那么此操作数有效。

这个过程解决了数据的RAW相关。

(3)执行

(4)写结果

这里检测WAR相关。

记分牌技术没有采用相关专用通道技术来提前获得结果数据。记分牌要根据它的记录数据,通过与功能部件的通信来控制指令处理的每一步。

记分牌需要记录的信息分为三部分:

(1)指令状态表

记录正在执行的各条指令进入记分牌MIPS流水线4段中的哪一段

(2)功能部件状态表

记录各个功能部件的状态,9个域。

Busy:指示功能部件是否在工作

Op:功能部件当前执行的操作

Fi:目的寄存器编号

Fj,Fk:源寄存器编号

Qj,Qk:向Rj,Rk中写结果的功能部件

Rj,Rk:表示Fi,Fk是否就绪,是否已经被使用。

(3)结果寄存器状态表

记录写入本寄存器的功能部件(编号)。

记分牌技术通过指令级并行来减少程序中因为数据相关引起的流水线停顿。记分牌的性能受限于以下几个方面:

(1)程序指令中可开发的并行性。即是否存在可以并行执行的不相关的指令。如果指令级并行性仅从一个基本块中开发,并行性不会太高。

(2)记分牌容量

记分牌的容量决定了流水线能在多大范围内寻找不相关指令。流水线中可以同时容纳的指令数量称为指令窗口。

(3)功能部件的种类和数目。

(4)反相关和输出相关。

参考资料

《计算机体系结构》(第二版),王志英,张春元,沈立

动态调度之记分牌算法相关推荐

  1. 计算机系统结构:指令的动态调度-记分牌算法

    记分牌算法和Tomasulo算法是两种比较典型的动态调度算法.记分牌算法历史现在仍在某些地方根据需求被使用.Tomasulo算法已经比计分牌算法改进了许多,是一种更强的算法.许多开发指令级并行的现代处 ...

  2. 高级系统结构-记分牌算法讲解(含全部代码)

    目录 记分牌算法的四个阶段 记分牌算法的三个状态表 指令执行周期 代码分享 代码使用 上课演示 结果 记分牌算法的四个阶段 Issue:解析指令,检查是否存在结构相关(structural hazar ...

  3. 计算机体系结构--记分牌算法

    记分牌 记分板是一种硬件机制,它通过在操作数可用且没有危险条件阻止的情况下立即执行指令来维持每周期一条指令的执行速率. 它用四个阶段:ID1,ID2,EX,WB代替ID,EX,WB 每个指令都要经过记 ...

  4. 【体系结构】动态调度算法:记分牌算法和tomasulo算法

    记分牌和tomasulo算法 动态调度: 通过硬件在程序执行时重新安排代码的执行序列来减少竞争引起的流水线停顿时间 动态调度流水线具备以下功能: (1)允许按序取多条指令和发射多条指令----取指(I ...

  5. 计算机体系结构--Tomasulo算法

    起源 由IBM开发,并于1966年在IBMS360/91大型机中首次实现,大约是在CDC6600中记分板首次亮相之后的3年. 动态调度硬件中的流水线,减少停顿. 结构 Tomasulo与记分牌 提起T ...

  6. 电子科技大学-高级计算机系统结构

    第1章 量化设计与分析基础 1. 计算机的分类类别 2. 计算机系统结构定义和计算机的设计任务:指令集结构概念及要素 ISA(指令集结构): 硬件与软件之间的接口 用途: 开发者与硬件之间的接口 这代 ...

  7. 计算机系统结构复习(五):ILP指令集并行

    计算机系统结构复习(五):ILP指令集并行 指令集并行和两种方式 基本快 相关与从冲突的关系 循环展开 循环展开的注意事项 动态分支预测 动态分支预测与静态分支预测的区别 分支历史表BHT 一位分支历 ...

  8. 从GPU编程到SIMT核心

    本文转自:从GPU编程到SIMT核心 - 知乎 (zhihu.com) 1.前言&本文重点 在 GPGPU 显得愈发重要的今天,仅凭 nVidia, AMD 提供的编程接口来了解 GPU 未免 ...

  9. 计算机体系结构(复习资料)

    第一章:计算机体系结构的基本概念 1.存储程序计算机(冯诺依曼):4部分 运算器(用于完成数值运算) 存储器(用于存储程序和数据) 输入输出设备(用于完成计算机与外部信息交互) 控制器(根据程序形成控 ...

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

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

最新文章

  1. Jboot v2.0-rc.12 发布,优化细节问题
  2. 2021(上)软考打印准考证时间及操作步骤
  3. 【NOIP模拟题】“与”(位运算)
  4. 4412 字符类设备的设备号
  5. Python中的numpy.square()
  6. Linux下用Java获取本机IP
  7. bzoj 4551: [Tjoi2016Heoi2016]树
  8. pmp学习资料_201912期PMP学习内容汇总表
  9. 工业软件下载大全202108
  10. android 来电滑动接听电话,安卓手机来电时不能滑动接听现象的原因及解决方法介绍...
  11. 如何学习单片机?学习单片机的四个步骤
  12. 【用户角色权限设计】
  13. CSS,font-family,好看,常用,中文,字体(更新中)
  14. 计算机怎么升级64位操作系统,32位系统怎么升级64位系统
  15. iframe标签有什么用
  16. 在Excel中给不足位数的数字前面补0
  17. 其他浏览器(firefox,chrome)可以上网 ie(Internet Explorer)无法上网 解决方法
  18. 韩剧机器人题材的_穿越、超能力、监狱题材之后,2018年的韩剧盯上了机器人...
  19. (贪心)CF1428E. Carrots for Rabbits
  20. android 保存 parcelable对象,Android 使用序列化Serializable和Parcelable

热门文章

  1. 淘宝前端工程师:国内WEB前端开发十日谈
  2. 如何用python编写财务记账软件_Python实现简单的记账本功能
  3. 毕业N年后,请不要像我一样被档案烦死——转自一位已经毕业的学姐
  4. 号称超越ETH、吊打EOS,技术流IOST的底气到底在哪里?
  5. vue项目 微信支付 和 支付宝支付
  6. 仿微博系统数据库设计和er图设计
  7. 一键生成sprite(雪碧图)以及 动态加载1X 2X3X 图片
  8. 易捷行云新一代私有云平滑无感升级|轻运维之升级
  9. 自定义 kubectl-plugin
  10. C措辞教程第一章: C措辞概论 (5)