【计算机系统结构】指令级并行

在这里插入图片描述

赶在最后一天再更一点吧,生死时速


Pipeline CPI = Ideal pipeline CPI + Structural Hazard Stalls+ Data Hazard Stalls + Control Hazard Stalls

指令级并行概念

  • Instruction-Level Parallelism
  • 指令之间的并行性,利用它,计算机可以并行执行两条以上的指令
  • 两种途径:基于硬件的动态开发方法以及基于软件的静态开发方法

基本块BB

  • Basic Block
  • 除了入口和出口以外没有其他分支的线性指令序列
  • 跨越多个基本块开发ILP
  • 循环级并行性

相关与冲突⭐

  • 判断指令之间的相互依赖关系对于程序内的并行性开发至关重要
  • 相关性是程序的属性; 冲突是流水线结构的性质;相关性的存在只预示着存在有冲突的可能性。
数据相关
  • 真相关-写后读-RAW
    在这里插入图片描述
名相关
  1. 反相关-读后写-WAR
    在这里插入图片描述
  2. 输出相关-写后写-WAW
    在这里插入图片描述
控制相关
  1. 控制相关决定了某指令相对于分支指令的顺序,使其按正确程序顺序,在应当执行时执行。
    在这里插入图片描述
  2. 不是必须严格保持的关键属性。保证不影响保持异常行为并且不改变数据流时,可以大胆地进行指令调度

循环展开

  • 软件方法
概念
  1. 开发循环级并行性——循环的不同迭代之间存在的并行性
  2. 把循环体的代码复制多次并按顺序排放,然后相应调整循环的结束条件
注意点:
  1. 保证正确性和有效性:循环控制,操作数偏移量修改,循环体间无关
  2. 使用不同的寄存器
  3. 删除多余的测试指令和分支指令
  4. 注意对存储器数据的相关性分析
  5. 注意新的相关性
限制
  1. 展开次数要合理
  2. 会引起指令数量的增长
  3. 给寄存器带来压力

动态分支预测

  • 回顾一下静态方法:全部猜对或错
  • 动态分支预测需要解决的两个问题:
    1. 如何记录分支的历史信息,要记录哪些信息
    2. 如何根据这些信息来预测分支的去向,甚至提前取出分支目标处的指令
  • Performance = ƒ(accuracy, cost of misprediction)
采用分支历史表BHT
  • Branch History Table: Lower bits of PC address index table of 1-bit values
  • 一次记录的问题:
    1. 最后一次预测错误不可避免,因为前面分支总是成功
    2. 第一次预测错误是源于上次代码段的执行,因为这最后一次分支总是不成功
  • 方法:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
Correlated Branch Prediction
  • 分支间具有相关性,挖掘分支间的相关性
  • In general, (m,n) predictor means record last m branches to select between 2m history tables, each with n-bit counters
    Thus, old 2-bit BHT is a (0,2) predictor
  • Each entry in table has m n-bit predictors
  • Global Branch History: m-bit shift register keeping T/NT status of last m branches
  • 一个例子
    在这里插入图片描述
  • 考到就现学吧
Tournament(竞赛) Predictors
  • 结合两种预测器Adaptively combine local and global predictors
  • 方法
    在这里插入图片描述
采用目标缓冲器Branch Target Buffers (BTB)
  • 尽早知道分支目标地址,获得分支目标指令
  • 至少两个字段:
    1. 执行过的成功分支指令的地址
    2. 预测的分支目标地址
  • 过程:
    在这里插入图片描述
小结
  • Prediction becoming important part of execution
  • Branch History Table: 2 bits for loop accuracy
  • Correlation: Recently executed branches correlated with next branch
    1. Either different branches
    2. Or different executions of same branches
  • Tournament predictors take insight to next level, by using multiple predictors
    1. usually one based on global information and one based on local information, and combining them with a selector
    2. In 2006, tournament predictors using  30K bits are in processors like the Power5 and Pentium 4
  • Branch Target Buffer: include branch address & prediction

动态调度

  • 硬件方法
  • 流水线的很大局限性是按序流出和按序执行
  • In a dynamically scheduled pipeline, all instructions still pass through issue stage in order (in-order issue)
    Enables out-of-order execution and allows out-of-order completion
  • Note: Dynamic execution creates WAR and WAW hazards and makes exceptions harder
  • 两步:
    1. 流出(issue):指令译码,并检查是否存在结构冲突;如果不存在结构冲突,就将指令流出
    2. 读操作数:等待数据冲突消失(如果有的话),然后读操作数
记分牌算法

太难了跑了

Tomasulo算法

太难了跑了

前瞻执行Speculation

  • 前瞻执行解决控制相关的问题,允许在处理器还未判断指令是否能执行之前就提前执行
  • 和动态调度的区别
    1. Speculation  fetch, issue, and execute instructions as if branch predictions were always correct
    2. Dynamic scheduling  only fetches and issues instructions
关键思想:

允许指令乱序执行,但必须顺序提交,以实现精确例外

  1. 采用动态分支预测技术来选择后续执行语句;
  2. 在控制相关消除之前指令前瞻执行+撤销错误推测的影响;
  3. 对基本块组合采用动态调度
reorder buffer (ROB) 再定序缓冲
  • 执行的结果不是写回到寄存器或存储器,而是写入ROB。等到指令得到”确认“(commit)(即确实是应该执行的)后,才将结果写入寄存器
  • RS与ROB是现代CPU中的核心部件,作用相反:RS把有序变为乱序;ROB把乱序变为有序。
  • Reorder Buffer Entry
    在这里插入图片描述
  • Reorder Buffer operation
    在这里插入图片描述
Tomasulo with ReOrder Buffer 再定序缓冲

太难了跑了

在这里插入图片描述

多发射

  • 如果想CPI小于1,就必须要采用多发射技术
  • 两种类型
    1. 超标量:在同一周期内发出多条指令(2-8条),由编译器静态调度或动态调度(Tomasulo)。
    2. 超长指令字:固定数量的指令(3-6)被格式化为一个长指令字或包(由编译器静态调度)
超标量Superscalar

每个周期可以发出两条指令(two-issue超标量)。其中一个指令是integer(包括load/store,branch)。另一条指令是浮点运算。

超长指令字VLIW (very long instruction word)

采用多个独立的功能部件,将多条指令的操作组装成固定格式的指令包,形成一条非常长的指令。超长指令字的格式固定,处理过程简单,处理器所需硬件量比超标量要少。


以上内容复习所用,侵删

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值