CA-第十三讲

Molaters Lv5
[[计算机体系结构]]

Reservation Station 结构

Op: 部件所进行的操作
Vj, Vk: 源操作数的值。Store 缓冲区有Vk域,用于存放要写入存储器的 值。V域和Q域不同时有效。
A:存放存储器地址。开始存立即数,计算出有效地址后,存放有效地址
Qj, Qk: 产生源操作数的保留站号
✓ 没有记分牌中的准备就绪标志, Qj, Qk=0 => ready
✓ Store 缓存区只有Qk表示产生结果的保留站号
Busy: 标识保留站RS或相应的功能部件FU是否空闲

Register result status—如果存在对寄存器的写操作,指示对该寄存器 进行写操作的部件. Qi: 保留站的编号

Tomasulo实例

image.png

Note:不像是记分牌,两个Lw指令可以一起流出

image.png

在第六拍的时候所有指令就全部流出了

减法完成之后,需要去做什么?可以看到加法指令在第八拍的时候需要

Add2拿到的两个操作数之后就立即启动

加法做完之后也可以把结果写回 这是和记分牌最不一样的地方

根本上来讲也是按序的流出,乱序的进行执行,乱序的写入

基于Tomasulo算法的动态循环展开

为了保证正确的异常行为,Tomasulo算法对指令的执行有一个限制:一旦有一条分支指令还没有执行完,其后的指令是不允许进入执行段的

动态存储器地址判别技术,解决存储器访问的时候的RAW、WAW、WAR冲突

第一次取数LD,由于Cache miss,需要8个时钟周期延迟,之后的取数LD,只需要一个时钟周期,存数SD需要3个时钟周期。

乘法需要4个时钟周期

Tomasulo循环实例

Loop: LD F0, 0(R1)
MULTD F4, F0, F2
SD 0(R1), F4
SUBI R1, R1, #8
BNEZ R1, Loop

存在隐含的换名情况

[[课件综合/计算机体系结构 - 第13讲.pdf#page=35&selection=236,0,239,7|计算机体系结构 - 第13讲, page 35]]

F0被动态的消除了

Tomasulo算法的优点

分布式硬件冲突检测

利用寄存器换名,彻底消除WAW和WAR这两种名相关

如果多个保留站等待同一个操作数,当操作数在CDB上广播的时候,它们可以同时获得所需要的数据

对于存储器访问,动态存储器地址判别技术可以解决RAW冲突(取操作数的时候判断)、WAR和WAW冲突(存操作数的时候判断)

能够达到很高的性能

Tomasulo 算法的缺点

高复杂性:需要大量的硬件

存在瓶颈:单个数据总线会引发竞争

需要额外的数据总线:在每个保留站上需要为每条总线都设置重复的硬件接口

为了保证正确的异常行为,对指令的执行有一个限制:

一旦有一条指令还没有执行完,其后的指令是不允许进入执行段

动态调度方法中的异常行为处理

指令乱序大大增加了异常处理的复杂度。

不精确异常(Imprecise Exeption):当指令i导致发生异常的时候,处理机的现场(状态)和严格按照程序顺序执行不相同。

精确异常(Precise Exception):处理机现场和严格按照程序新婚徐执行的时候指令i的现场相同

不精确异常产生的原因:

:heavy_check_mark: 流水线可能已经执行完按照程序顺序是位于指令i之后的指令

:heavy_check_mark:流水线可能还没有完成按照程序顺序是指令i之前的指令

动态调度方法中的异常行为处理

ADD指令LW指令SUB指令没有数据相关,可以乱序执行

SUB指令在LW指令执行完之前,更改R7

但是LW指令可能会硬气存储器的异常(如访存缺页、访存越界等)

控制相关的动态解决技术

分支预测缓冲

动态分支的两个理由

  • n流出的处理器加速上限为n倍
  • Amdahl定律提示:在较低CPI机器上,控制相关导致的空转对机器性能影响大

前面解决控制相关的静态策略

  • 需要编译器将一条或者多条指令移动到流水线产生的分支延迟槽中

关于分支预测的两部分工作

  • 预测的分支是否成功
  • 执行分支目标指令

分支预测的效果

预测的准确率

分支的开销

  • 预测正确的开销
  • 预测错误的开销
  • 决定分支开销的因素:流水线的结构、预测的方法、预测错误的时候的回复策略等

分支预测缓冲(BPB):原理

最简单的分支预测策略

BPB也被称为BHT(Branch History Table,BHT)

分支预测缓冲是一个小的存储器阵列

  • 每个单元最小可以只有一位,记录最近一次的分支是否成功的信息
  • 预测位为1的时候,标识预测分支成功,并从目标分支位置开始取指令
  • 在预测错误的时候,要作废已经预取和分析的指令,恢复现场,并从零一条分支路径重新取指令

分支预测指令不成功和重新执行过程

image-20231016112704067

一位的BOB的状态图

image-20231016112809699

这种单位预测策略:

  • 当分支不成功的时候,将会发生连续两次预测出错
  • 2位预测策略能够改善这种情况

2位BPB工作原理

在两位的预测策略中,一个预测必须错误两次才会改变。

对于一个2096条记录的BPB,利用两位预测策略,用SPEC89测试,命中率位82%到99%

准确率最高的测试程序一般包含大量的循环

没有循环的线性代码一般准确率最差

image-20231016113235730

还有另外一种的状态转化图:

image-20231016113405020

4096单元2位BPB的预测错误率

测试程序位SPEC89

整数测试程序:平均11%

  • gcc, espresso,eqntott,li

浮点测试程序:平均4%

  • nasa7,matrix300,tomcatv

为什么?

image-20231016113854745

BPB实现

BPB的实现方案

  • 实现一个小而特殊的”cache“,利用指令地址进行寻址,在IF流水段访问
  • 为指令cache中每一块增加附加位,与指令一起取出

如果一个指令在ID段被译码位分支指令,且对应的BPB标志位预测其成功,则

  • 一旦PC已知,立刻从分支目标位置开始取指

对于改进MIPS,分支判断和计算分支目标地址都在ID段完成,BPB无效果

  • 标题: CA-第十三讲
  • 作者: Molaters
  • 创建于 : 2023-11-24 11:30:49
  • 更新于 : 2023-10-18 08:08:18
  • 链接: https://molaters.github.io/2023/11/24/计算机体系结构/CA-第十三讲 Tomasulo 和 控制相关的动态解决技术/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论