转移猜测-CA

前景

提高流水线效率的技术

(1)指令流水线:
• 多发射:多车道
• 动态调度:允许超车

(2)喂饱“饥饿”的运算器:
• 转移猜测:提供足够的指令
• 存储管理:提供足够的数据
• 冯诺依曼结构:存储程序和顺序执行

龙芯2号处理器核结构图

在这里插入图片描述

转移指令

控制相关

  • 如果转移指令计算下一条指令地址在EX阶段计算,下一条指令等2拍 ;
  • 解决方法:
    ①使用专门的地址运算部件把地址计算提前到译码阶段可以少等一拍:
    在这里插入图片描述
    ②使用一个delay slot可以不用等待,但是多发射情况下延迟槽成为需要专门照顾的负担:
    在这里插入图片描述

转移指令对性能的影响

(1)分支指令的影响是开发指令级并行性的重要障碍:
• 一条指令流中,平均每5-7条指令中就有一条是分支指令,也即基本块大小为5-7条指令

(2)增大发射宽度:
• 在发射宽度为n的处理器中,遇到分支指令的速度也快了n倍

(3)增加流水线深度:
• 流水线越深,处理分支指令所需要的时钟周期数就越多

(4)例子:
假设平均每8条指令中有一条转移指令,某处理器采用4发射结构,第10级流水解决转移地址相关(即第10级流水算出转移方向和目标):
(每次转移出问题,流水线停顿9拍,这9拍可发射36条指令,即浪费的指令带宽)
①在A系统中不进行转移预测,遇到转移指令就等待:
-指令带宽浪费36/(36+8)=82%; //相当于没发射8条指令,浪费一次
②在B系统中进行简单的转移预测,转移猜错率为50%,那么平均每16条指令预测错误一次:
-指令带宽浪费36/(36+16)=75%
③在C系统中,转移指令猜错率为10%,那么平均每80条指令预测错误一次:
-指令带宽浪费36/(36+80)=31%;
④在D系统中,转移指令猜错率为4%,平均每200条指令预测错误一次:
-取指令带宽浪费36/(36+200)=15%。

转移指令的属性

(1)条件转移与无条件转移:
• 条件转移:需等待条件确定后才能取指,程序中多数转移指令是条件转移指令
• 无条件转移:不用判断条件就转移,如call/return

(2)直接转移与间接转移:
• 直接转移:转移目标根据指令内容直接得出
• 间接转移:转移目标在寄存器中

(3)相对转移与绝对转移:
• 相对转移:转移目标为当前PC值加上偏移量
• 绝对转移:转移目标由指令或寄存器内容直接给出
由上可知:理论上有8种组合:实际上不实现所有组合

MIPS指令系统的转移指令

在这里插入图片描述

程序的转移行为

各统计结果

(1)SPEC CPU2000转移指令统计—龙芯2号统计结果
在这里插入图片描述
在这里插入图片描述

(2)转移指令间距离统计:
发射宽度增加,分支间的动态距离就会越小,分支预测的延迟对性能的影响就越大,当要求更高的发射宽度时,需要每个周期做不止一个预测;
:Inter-branch distance(cycles) ,模拟环境:4发射乱序机器 @SPECint2000
在这里插入图片描述

(3)不同类型转移指令分布:
龙芯2号上部分SPEC CPU2000程序中转移指令分布:
• 1%是间接分支指令,采用BTB预测
• 5%是返回指令,返回地址栈RAS预测
• 29%是无条件立即跳转指令,跳转地址在指令中
• 65%是条件分支,大量的工作是进行条件分支预测

(4)转移指令的执行频率分布:
龙芯2号上部分SPEC CPU2000程序转移指令执行频率分布:
• 所有转移指令的44%仅仅执行99次或者更少,这44%的转移指令占所有转移指令总执行次数的0.03%;
• 只有4.2%的转移指令执行了超过100000次或者更多,占所有转移指令总执行次数的87%(或者说,只有14.7%的转移指令超过了10000次,占所有转移指令总执行次数的97%)。

(5)转移成功率分布:
龙芯2号上部分SPEC CPU2000程序转移指令的跳转成功率:
• 45%的指令总是跳转,15%的指令总是不跳转;
• 20%的指令跳转的几率小于5%或者大于95%;(80%的转移指令具有强烈的一个跳转方向,具有挑战性的工作是预测其余20%转移指令的跳转方向)

分支的可预测性

(1)利用单个转移指令的重复性:
基于模式的预测方法

  • 循环型分支:
    • for型循环:TT…TN(成功n次后跟一次不成功 )
    • while型循环:NN…NT(不成功n次后跟一次成功)
  • 周期重复模式型分支:
    • 定长重复模式类分支:{pat}^q , |pat|=k (每隔k个分支模式就重复一次)
    • 块模式类分支:{T^n Nm}q, 成功n次,不成功m次,如此循环

(2)利用不同转移指令之间的关系:
基于相关的预测方法

  • 利用指令间的方向相关
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值