Correlating Branches 观察结果:b3与分支b2和b1相关。如果b1和b2都分支失 败,则b3一定成功。 Correlating predictors或两级预测器:分支预测器根据其 他分支的行为来进行预测。 ■工作原理:根据一个简单的例子我们来看其基本原理 f(d==0)d=1 f(d==1)d=0; 翻译为DLX BNEZ R1 L1 branch b1(d=O) ADDI R1.RO.#1 d==0.s0d=1 L1:ADDR3,R1,#-1 BNEZ R3 L2 branch b2(d! =1) L2 计算机体系结构 Chapter4 3.16
计算机体系结构 Chapter4_3.16 Correlating Branches ▪ 观察结果:b3 与分支b2 和b1相关。如果b1和b2都分支失 败,则b3一定成功。 ▪ Correlating predictors 或 两级预测器:分支预测器根据其 他分支的行为来进行预测。 ▪ 工作原理:根据一个简单的例子我们来看其基本原理 if (d==0)d=1; if (d==1) d=0; 翻译为DLX BNEZ R1,L1 ;branch b1(d!=0) ADDI R1,R0,#1 ;d==0, so d=1 L1: ADDI R3,R1,#-1 BNEZ R3,L2 ;branch b2(d!=1) ... L2:
两级预测器基本工作原理 Initial value Value of d of d d=0. bI before b2 d==1 b2 ye not taken ye not taken no taken yes not taken no taken 12 no taken FIGURE 3.10 Possible exe cution sequences for a code fragment. ■假设d的初始值序列为0,1,2 b1如果分支失败,b2一定也分支失败。 n前面的两位标准的预测方案就没法利用这一点,而两级预 测方案就可以。 计算机体系结构 Chapter4 3.17
计算机体系结构 Chapter4_3.17 两级预测器基本工作原理 ▪ 假设d的初始值序列为0,1,2 ▪ b1 如果分支失败,b2一定也分支失败。 ▪ 前面的两位标准的预测方案就没法利用这一点,而两级预 测方案就可以
ev New b2 d=? prediction action prediction prediction action prediction NT NT 2020 NI NI NI NT NI NI NI NI NI FIGURE 3.11 Behavior of a one-bit predictor initialized to not taken. T stands for taken NT for not taken ■假设d的初始值在2和0之间切换。 用1-bt预测器,初始设置为预测失败,T表示预测成功, NT表示预测失败 结论:这样的序列每次预测都错,预测错误率100% 计算机体系结构 Chapter4 3.18
计算机体系结构 Chapter4_3.18 ▪ 假设d的初始值在2和0之间切换。 ▪ 用1-bit预测器,初始设置为预测失败,T表示预测成功, NT表示预测失败。 ▪ 结论:这样的序列每次预测都错,预测错误率100%
Correlating Branches 基本思想:用1位作为 correlation位。即每个分支都有两个 相互独立的预测位:一个预测位假设最近一次执行的分支 失败时的预测位,另一个预测位是假设最近一次执行的分 支成功时的预测位。 最近一次执行的分支通常与要预测的分支不是同一条指令 记为(1,1)前一位表示最近一次分支失败时的预测位, 后一位表示最近一次分支成功时的预测位 Prediction if last branch Prediction bits not taken Prediction if last branch taken NT/NT not taken not taken NT/T not taken taken T/NT taken not taken T/ taken taken FIGURE 3.12 Combinations and meaning of the taken/not taken prediction bits. T tands for taken nt for not taken
计算机体系结构 Chapter4_3.19 Correlating Branches ▪ 基本思想:用1位作为correlation位。即每个分支都有两个 相互独立的预测位:一个预测位假设最近一次执行的分支 失败时的预测位,另一个预测位是假设最近一次执行的分 支成功时的预测位。 ▪ 最近一次执行的分支通常与要预测的分支不是同一条指令 ▪ 记为 (1,1)前一位表示最近一次分支失败时的预测位, 后一位表示最近一次分支成功时的预测位
d-? bl prediction bl action New bl prediction b2 prediction b2 action New b2 prediction NTN T/NT NINT T NT/T 220 T/NT NI TNT NT/T NI NT/T T/NT TANT NT/T NT/T T/NT NI T/NI NT/T NI NT/ FIGURE 3. 13 The actlon of the one-bit predictor wtth one bIt of correla tan In Itlallzed to not taken/not taken. T stands for taken, NT for rt taken. The prednbnused Is shown in bok Correlating预测器的预测和执行情况, 显然只有在第一次d=2时,预测错误,其他都预测正确 ■记为(1,1)预测器,即根据最近一次分支的行为来选择 对1-b预测器中的一个 更一般的表示为(m,n),即根据最近的m个分支,从2m个 分支预测器中选择预测器,每个预测器的位数为n 计算机体系结构 Chapter4 3.20
计算机体系结构 Chapter4_3.20 ▪ Correlating 预测器的预测和执行情况, ▪ 显然只有在第一次d=2时,预测错误,其他都预测正确 ▪ 记为(1,1)预测器,即根据最近一次分支的行为来选择 一对1-bit预测器中的一个。 ▪ 更一般的表示为(m, n),即根据最近的m个分支,从2 m个 分支预测器中选择预测器,每个预测器的位数为n