体系结构第4章 第4讲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
会引入其他开销,比如存储系统的端口加倍 降低失效开销的唯一方法,比如
AS/400 PowerPC处理器
计算机体系结构 19
分支预测局限性
预测准确性:80%-90% 预测性能依赖于
程序类型 缓冲区大小
预测失效开销的优化
预取不同分支路径指令
存储端口数目加倍,交叉存取缓冲
在目标缓冲中缓冲多个路径的指令
最简单的分支预测策略 分支预测缓冲是一个小的存储器阵列
每个单元只有1位,记录最近一次分支是否成功 的信息
预测位为1则预测分支成功,并从目标位置开始 取指令
单元由分支指令地址的低位索引进行寻址 BPB的预测位会被具有相同低位地址的分支设置
BPB也被称为BHP( branch history buffer分支历史缓冲)
预测不成功 不成功
计算机体系结构 9
4096单元2位BPB的预测准确率
测试程序为SPEC89 整数测试程序: 平均 11%
gcc, espresso, eqntott, li
浮点测试程序: 平均 4%
nasa7, matrix300, tomcatv
为什么?
计算机体系结构 10
4096单元2位BPB: 预测错误率
li
entott
espresso
5
gcc
fpppp
spice
doduc
5
tomcatv
1
matrix3000
nasa7
1
0
5
10 18
12 9 9
10
15
20
计算机体系结构 11
n位BPB
1位或2位BPB是n位BPB的特殊情况 n位策略使用计数器,表示0~2n的值 与2位策略类似,对于n位BPB,每次分支成
功,计数器+1,反之则-1 如果计数器值大于其最大值的一半,则做成
功预测,反之则做失败预测
计算机体系结构 12
2位BPB: 4K vs. 无穷多
li
entott
espresso
gcc
fpppp
spice
doduc
tomcatv 0
m
at
r
i
x3
0
0
0 0
nasa7 0
0
10 10
18 18 5 5 11 12 9 9 9 9 5 5
计算机体系结构 5
1位BPB状态图
成功
不成功
1
0
成功
不成功
这种单位预测策略有大约80%左右的准确率
当分支不成功时,单位预测会失败两次 2位预测策略能够改善这种情况
计算机体系结构 6
2位BPB工作原理
在2位预测策略中,一个预测必须错误两次才 会改变。
对于一个4096条记录的BPB,利用2位预测 策略,用SPEC89测试,命中率为82%到 99%
第四章 指令级并行
主要内容
4.1 4.2 4.3 4.4
指令级并行的概念 指令的动态调度 控制相关的动态解决技术 多指令流出技术
计算机体系结构 1
计算机体系结构 2
计算机体系结构 3
分支预测的效率
预测的准确率 分支的开销
预测正确的开销 预测错误的开销
计算机体系结构 4
分支预测缓冲(BPB): 原理
IF段结束前知道从哪个地址开始取下一条指令 换句话说,我们在IF段就需要知道这条未译码的
指令是否为分支指令,并且如果它是分支指令, 要尽快知道NPC值应当为多少
计算机体系结构 15
BTB实现
分支目标缓存BTB每个单元应该包括
分支指令的地址 分支目标的地址 分支预测标识
取指阶段,所有指令地址都与BTB中保存的 分支指令的地址做比较,一旦相同,就认为 本指令是分支指令,并且分支成功
若一个指令在ID段被译码为分支指令,且对 应的BPB标志位预测其成功,则
一旦PC已知,立刻从分支目标位置开始取指 或者,继续顺序取指
计算机体系结构 14
分支目标缓冲(BTB)
另一个动态分支预测方法:分支目标缓冲
Branch Target Buffer, BTB 为了减小或消除流水线的分支开销,我们需要在
它的目标地址就是保存在缓冲区中的分支目 标地址
取出后直接送入NPC
计算机体系结构 16
Βιβλιοθήκη BaiduTB 结构
当前指令 PC
查找、比较
PC
分支目标 PC Flag 分支目标指令
BTB
N 没有命中,认为本指令不是分支, =?
按普通指令执行
Y 命中,认为本指令是分支,且分支成功,以分支
分支预测是否成功
目标缓冲中分支目标 PC 作为下一条指令地址
1
1
2
4
6
8
10
12
14
16
18
20
4096-entry:2-bit/entry Unlimited entries: 2-bit/entry
计算机体系结构 13
BPB实现
BPB的实现方案
实现一个小而特殊的 “cache”,利用指令地址 进行索引,在IF流水段访问。
或者,为指令cache中每一块增加附加位,与指 令一起取出
计算机体系结构 20
谢谢!
计算机体系结构 21
后续指令无
入 BTB 中作为一 一个目标取指令,删除
延迟执行
个新项
BTB 中对应项
计算机体系结构 18
BTB Vs. BPB
分支预测技术受限于预测精度,以及预测失 效后产生的开销
根据不同程序特点以及缓冲区的大小,典型 的BTB可以实现80%到95%的预测精度
降低失效开销技术:在一个时钟周期内同时 取出不同分支路径的指令
准确率最高的测试程序一般包含大量循环 线性代码一般准确率最差
计算机体系结构 7
2位BPB状态转换图
成功
预测: 不成功
不成功
11
10
成功
成功
不成功
不成功
01
00
成功
预测: 成功
不成功
计算机体系结构 8
2位BPB另一种状态转换图
成功 预测成功 成功 预测不成功
不成功 成功
不成功 成功
预测成功 不成功
计算机体系结构 17
BTB 执行过程
当前 PC 值送存储器和 BTB
IF
No
BTN 中存在?
Yes
No ID 普通指令
成功分支指令? Yes
以分支目标 PC 值送存储器
No
当前分支成功? Yes
将当前指令 PC 值 预测错误,清除取来的
预测成功,
EX
和分支目标 PC 送 指 令 并 从 分 支 的 另 外
AS/400 PowerPC处理器
计算机体系结构 19
分支预测局限性
预测准确性:80%-90% 预测性能依赖于
程序类型 缓冲区大小
预测失效开销的优化
预取不同分支路径指令
存储端口数目加倍,交叉存取缓冲
在目标缓冲中缓冲多个路径的指令
最简单的分支预测策略 分支预测缓冲是一个小的存储器阵列
每个单元只有1位,记录最近一次分支是否成功 的信息
预测位为1则预测分支成功,并从目标位置开始 取指令
单元由分支指令地址的低位索引进行寻址 BPB的预测位会被具有相同低位地址的分支设置
BPB也被称为BHP( branch history buffer分支历史缓冲)
预测不成功 不成功
计算机体系结构 9
4096单元2位BPB的预测准确率
测试程序为SPEC89 整数测试程序: 平均 11%
gcc, espresso, eqntott, li
浮点测试程序: 平均 4%
nasa7, matrix300, tomcatv
为什么?
计算机体系结构 10
4096单元2位BPB: 预测错误率
li
entott
espresso
5
gcc
fpppp
spice
doduc
5
tomcatv
1
matrix3000
nasa7
1
0
5
10 18
12 9 9
10
15
20
计算机体系结构 11
n位BPB
1位或2位BPB是n位BPB的特殊情况 n位策略使用计数器,表示0~2n的值 与2位策略类似,对于n位BPB,每次分支成
功,计数器+1,反之则-1 如果计数器值大于其最大值的一半,则做成
功预测,反之则做失败预测
计算机体系结构 12
2位BPB: 4K vs. 无穷多
li
entott
espresso
gcc
fpppp
spice
doduc
tomcatv 0
m
at
r
i
x3
0
0
0 0
nasa7 0
0
10 10
18 18 5 5 11 12 9 9 9 9 5 5
计算机体系结构 5
1位BPB状态图
成功
不成功
1
0
成功
不成功
这种单位预测策略有大约80%左右的准确率
当分支不成功时,单位预测会失败两次 2位预测策略能够改善这种情况
计算机体系结构 6
2位BPB工作原理
在2位预测策略中,一个预测必须错误两次才 会改变。
对于一个4096条记录的BPB,利用2位预测 策略,用SPEC89测试,命中率为82%到 99%
第四章 指令级并行
主要内容
4.1 4.2 4.3 4.4
指令级并行的概念 指令的动态调度 控制相关的动态解决技术 多指令流出技术
计算机体系结构 1
计算机体系结构 2
计算机体系结构 3
分支预测的效率
预测的准确率 分支的开销
预测正确的开销 预测错误的开销
计算机体系结构 4
分支预测缓冲(BPB): 原理
IF段结束前知道从哪个地址开始取下一条指令 换句话说,我们在IF段就需要知道这条未译码的
指令是否为分支指令,并且如果它是分支指令, 要尽快知道NPC值应当为多少
计算机体系结构 15
BTB实现
分支目标缓存BTB每个单元应该包括
分支指令的地址 分支目标的地址 分支预测标识
取指阶段,所有指令地址都与BTB中保存的 分支指令的地址做比较,一旦相同,就认为 本指令是分支指令,并且分支成功
若一个指令在ID段被译码为分支指令,且对 应的BPB标志位预测其成功,则
一旦PC已知,立刻从分支目标位置开始取指 或者,继续顺序取指
计算机体系结构 14
分支目标缓冲(BTB)
另一个动态分支预测方法:分支目标缓冲
Branch Target Buffer, BTB 为了减小或消除流水线的分支开销,我们需要在
它的目标地址就是保存在缓冲区中的分支目 标地址
取出后直接送入NPC
计算机体系结构 16
Βιβλιοθήκη BaiduTB 结构
当前指令 PC
查找、比较
PC
分支目标 PC Flag 分支目标指令
BTB
N 没有命中,认为本指令不是分支, =?
按普通指令执行
Y 命中,认为本指令是分支,且分支成功,以分支
分支预测是否成功
目标缓冲中分支目标 PC 作为下一条指令地址
1
1
2
4
6
8
10
12
14
16
18
20
4096-entry:2-bit/entry Unlimited entries: 2-bit/entry
计算机体系结构 13
BPB实现
BPB的实现方案
实现一个小而特殊的 “cache”,利用指令地址 进行索引,在IF流水段访问。
或者,为指令cache中每一块增加附加位,与指 令一起取出
计算机体系结构 20
谢谢!
计算机体系结构 21
后续指令无
入 BTB 中作为一 一个目标取指令,删除
延迟执行
个新项
BTB 中对应项
计算机体系结构 18
BTB Vs. BPB
分支预测技术受限于预测精度,以及预测失 效后产生的开销
根据不同程序特点以及缓冲区的大小,典型 的BTB可以实现80%到95%的预测精度
降低失效开销技术:在一个时钟周期内同时 取出不同分支路径的指令
准确率最高的测试程序一般包含大量循环 线性代码一般准确率最差
计算机体系结构 7
2位BPB状态转换图
成功
预测: 不成功
不成功
11
10
成功
成功
不成功
不成功
01
00
成功
预测: 成功
不成功
计算机体系结构 8
2位BPB另一种状态转换图
成功 预测成功 成功 预测不成功
不成功 成功
不成功 成功
预测成功 不成功
计算机体系结构 17
BTB 执行过程
当前 PC 值送存储器和 BTB
IF
No
BTN 中存在?
Yes
No ID 普通指令
成功分支指令? Yes
以分支目标 PC 值送存储器
No
当前分支成功? Yes
将当前指令 PC 值 预测错误,清除取来的
预测成功,
EX
和分支目标 PC 送 指 令 并 从 分 支 的 另 外