赞
踩
分支历史表BHT
(Branch History Table)
只有1个预测位
的分支预测
采用2位二进制位
来记录历史
提高预测的准确度
研究结果表明:两位分支预测的性能与n位(n>2)分支预测的性能差不多。
两位分支预测的状态转换如下所示:
两位分支预测中的操作的两个步骤:
(ID)
时,根据从BHT读出的信息进行分支预测 。BHT方法有效的场景
:
BHT的实现
(2两种方法):
目标
:将分支的开销降为 0(在IF段获取分支目标地址,顺序下一条指令地址,以及预测的结果)
方法
:分支目标缓冲
BTB的结构
采用BTB后,在流水线各个阶段所进行的相关操作
:
采用BTB后,各种可能情况下的延迟
:
指令在BTB中 | 预测 | 实际情况 | 延迟周期 |
---|---|---|---|
是 | 成功 | 成功 | 0 |
是 | 成功 | 不成功 | 2 |
不是 | 成功 | 2 | |
不是 | 不成功 | 0 |
(可以根据采用BTB后,在流水线各个阶段所进行的相关操作
得出延迟的时间)
BTB的另一种形式
之所以采取这种方法,是为了确保没有进行不可恢复的写操作,以便在预测错误时能够恢复原来的现场
前瞻执行
(speculation)的基本思想:
再定序缓冲器ROB
(ReOrder Buffer)中 。基于硬件的前瞻执行结合了3种思想
:
对Tomasulo算法加以扩充
,就可以支持前瞻执行。
把Tomasulo算法的写结果和指令完成加以区分,分成两个不同的段:写结果,指令确认
写结果段
ROB
中;CDB
在指令之间传送结果,供需要用到这些结果的指令使用。指令确认段
实现前瞻的关键思想
:
支持前瞻执行的浮点部件的结构
ROB中项的组成
:
寄存器的换名
ROB
来完成的。采用前瞻执行机制后,指令的执行步骤
(在Tomasulo算法的基础上改造的 ):
流出
r
)且有空闲的ROB项(设为b
),就流出该指令,并把相应的信息放入保留站r和ROB项b。执行
RAW
冲突)写结果
ROB项的编号
放到CDB上,经CDB写到ROB以及所有等待该结果的保留站。确认
前瞻执行的特点
例题
:
假设浮点功能部件的延迟时间为:加法2个时钟周期,乘法10个时钟周期,除法40个时钟周期。对于下面的代码段,给出当指令MUL.D即将确认时的状态表内容。
L.D F6,34(R2)
L.D F2,45(R3)
MUL.D F0,F2,F4
SUB.D F8,F6,F2
DIV.D F10,F0,F6
ADD.D F6,F8,F2
前瞻执行中MUL.D确认前,保留站的状态如下图:
ROB的状态如下图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。