当前位置: 首页 > news >正文

CPU Study - Branch Prediction

参考来源:《超标量处理器设计》—— 姚永斌

分支指令

IFetch取指阶段,除了需要从I-Cache获取指令,还需要决定下个周期的取指令地址。
如果不执行分支预测,全部顺序执行指令,那么发生指令跳转时,就需要把流水线中的执行阶段之前的全部指令移除。
对于流水线深度较深的处理器是难以接受的,因此需要在硬件消耗、预测准确度和延时之间确认一个平衡点。
分支预测就是为了再取指阶段确定分支指令的方向和跳转地址信息,便于在下个周期从分支目标地址开始取指。

RISC中分支指令包含两个元素:

方向
发生跳转(taken)/ 不发生跳转(not taken)
MIPS - jump:总是跳转
MIPS - BEQ:指定两个数值相等则跳转

目标地址
一般被携带在指令中

PC relative 直接跳转
给出相对于PC的偏移值offset,会被指令长度限制,范围不大但是便于计算。
一般在解码decode阶段就可以分离出此数据并计算分支指令的目标地址。

Absolute 间接跳转
分支指令目标地址源于一个通用寄存器,寄存器编号由指令给出。
扩大了范围,但是选哟等待其他指令结果赋值到寄存器(例如等待流水线的execute阶段)。
一旦预测失败,会增大惩罚,适用于CALL/Return这类具有较强规律性的预测。

分支预测

基于上面对跳转指令的分析,对于分支预测而言,需要基于指令在过去时间的执行情况动态调整对指令的方向和地址信息的预测内容。
从I-Cache取指令后快速解码,值判断指令是否为分支指令,如果是分支指令则将对应的PC送入分支预测器(Branch Predictor)。
分支指令鉴别

为了避免占用过的的处理器周期,可以在指令从L2 Cache写入I-Cache之前进行预解码(pre-decode)。
然后将是否为分支指令的信息放入I-Cache,虽然更加占用空间,但是能够缓解处理器周期占用。
辨别分支指令
对于一条指令来说,它的物理内存地址是可能变化的(取决于操作系统的存放替换行为),但是虚拟地址是不变的(除非进程回收)。
并且因为一个PC不可能对应多条指令,所以可以使用PC值进行分支预测,如下图所示。

并且因为程序一旦开始执行之后,PC值就会确定,每条CPU指令对应的取指地址也就固定了。
而如果当后续再执行到这个PC值时,就可以直接确定是否为分支指令。
但是这条分支指令的方向和目标地址等信息,还需要其他预测方法。
PC值区分

而分支预测本身的设计还是比较复杂的,需要在硬件资源占用、预测精度和延时之间找到合适的取舍。
并且由于超标量处理器每个周期会取出多条指令,所以还会出现不同的分支预测设计和预测失败的处理方法,在本专栏其他文章中会介绍。


http://www.mrgr.cn/news/68023.html

相关文章:

  • 【LeetCode】【算法】416. 分割等和子集
  • postman入参file的接口测试
  • 低代码环境中的领域与根实体解析
  • 市场分化!汽车零部件「变天」
  • layui 自定义验证单选框必填
  • 【实战篇】requests库 - 有道云翻译爬虫 【附:代理IP的使用】
  • java单例模式
  • 使用LoRA 对千问70B模型进行微调
  • R7:糖尿病预测模型优化探索
  • MinGW-w64_10.0.0 + GCC12_x86_64-12.2.0-release-posix-seh-msvcrt-rt_v10-rev2.zip
  • 怎么快速区分金媒10.3和10.4旗舰版小程序,如果只看数字你就out了表面被忽悠教新手几招!
  • lua入门教程:随机数
  • MOE(Mixture of Experts,混合专家)
  • TESSY学习笔记—project view界面的架构
  • Webserver(4.9)本地套接字的通信
  • adb shell常用命令
  • [复健计划][紫书]Chapter 7 暴力求解法
  • 今日 AI 简报|微软推出通用多智能体系统,支持语音克隆的开源TTS模型,Android 自动化评估等
  • 关于 RK3588多屏显示的时候第二屏幕出现无法矫正的x坐标偏移 的解决方法
  • 哈夫曼编码的实现
  • Android CCodec Codec2 (二十)C2Buffer与Codec2Buffer
  • Linux网络命令:用于查看和修改路由表的重要工具ip route 详解
  • esp32记录一次错误
  • 基于SpringBoot的社区讯息服务小程序【附源码】
  • jdk1.7和jdk1.8有什么区别?
  • 基于Multisim8路抢答器电路仿真电路(含仿真和报告)