参考《超标量处理器设计》

超标量处理器根据去指令的地址,从I-Cache中取出多条指令,这些指令组成指令组(fetch group),处理器根据指令组中指令的个数,调整取指令的地址,进行下个周期的取指令。

超标量处理器中的取指令的地址不连续,每次增加的值等于指令组的字长,所以如果使用取指令的地址进行分支预测,就只对指令组的第一条指令进行了分支预测。

BTB需要几下分支指令在四条指令中的位置(4way超标量处理器)

当前周期取出的质量不包括分支指令,BTB记录下01即分支指令的偏移值,若四字对齐的四条指令中存在多于一条的分支指令,它们会互相干扰。

上述局限于指令出现在四字对齐的边界内,如果可以对一个周期的所有指令做分支预测,情况如下

这种情况BTB需要四个读端口,硬件利用效率低,不采用上述方法。

1.目标地址预测

对于RISC指令集,可以在取指阶段马上进行目标地址的计算不必进行目标地址的预测,需要在I-Cache取出时马上识别出分支指令,可以在进入I-Cache之前进行预解码,如果遇到间接跳转的指令,此时无法对目标地址进行预测。

2.分支方向预测

基于局部历史的分支预测,需要PHT和BHT支持多端口,可以通过交叠的方式模拟多端口

基于全局历史的分支预测,考虑多条指令的GHR不一样,所以不能简单的模拟。

3.交叠

使用但端口存储器模拟多端口的结构

若寻址PHT的地址由哈希运算产生,要保证每周期寻址PHT的四个地址落在不同的bank上,否则会产生bank冲突。

可以将每条指令PC值的[3:2](PC需要字对齐)作为寻址的低位部分,这样可以保证四个地址寻址到四个不同的bank。

交叠的优点:避免真正使用多端口存储器而对芯片面积、功耗和延迟造成负面的影响。

大部分多端口功能部件如ROB、发射队列(Issue Queue)和指令缓存(Instruction Buffer)等部件。

超标量处理器的分支预测相关推荐

  1. 计算机组成原理branch,处理器结构--分支预测(Branch Prediction)

    背景 条件分支指令通常具有两路后续执行分支.即不采取(not taken)跳转,顺序执行后面紧挨JMP的指令:以及采取(taken)跳转到另一块程序内存去执行那里的指令.是否条件跳转,只有在该分支指令 ...

  2. Pentium 4处理器架构/微架构/流水线 (7) - NetBurst前端详解 - 分支预测

    Branch Predication 对于使用深度指令流水线的处理器,分支预测能力至关重要.分支预测使得处理器可以在分支指令决断之前就开始执行(预测的)分支路径指令.分支延迟是由于分支预测错误导致的性 ...

  3. Purpose of cmove instruction in x86 assembly? | cmove 指令如何避免错误的分支预测带来的开销?

    cmove 指令是用来做什么的?(Purpose of cmove instruction in x86 assembly?) The purpose of cmov is to allow soft ...

  4. Cachegrind:缓存和分支预测分析器

    目录 5.1.概观5.2.使用Cachegrind,cg_annotate和cg_merge 5.2.1.运行Cachegrind5.2.2.输出文件5.2.3.运行cg_annotate5.2.4. ...

  5. 超标量处理器设计——第四章_分支预测

    超标量处理器设计--第四章_分支预测 参考<超标量处理器>姚永斌著 4.1 简述 分支预测主要与预测两个内容, 一个是分支方向, 还有一个是跳转的目标地址 首先需要识别出取出的指令是否是分 ...

  6. 【超标量】分支预测的方向预测总结

    一.静态分支预测 静态分支预测就是不预测,每次在流水线的后续阶段,得到了分支指令实际方向和地址后再进行判断,若跳转,则清空流水线.若不跳转则继续执行.故静态分支预测的成功率是50%. 静态分支预测的方 ...

  7. E203 蜂鸟 RISC-V处理器代码阅读笔记 之指令预取模块2(指令分支预测) e203_ifu_litebpu.v.v

    这个文章记录了我学习RISC-V蜂鸟E203处理器的学习历程 这是我正式阅读代码学习的第3个源代码文件 针对代码的学习,我结合自己的理解对每个module的接口,以及内部关键信号做了详细的注释说明 原 ...

  8. 深入理解操作系统(12)第四章:处理器体系结构(4)Y86-64的流水线实现(包括:PIPE-处理器/预测下一个PC/分支预测/流水线冒险/暂停,转发避免冒险/PPE硬件结构及实现/CPI)

    深入理解操作系统(12)第四章:处理器体系结构(4)Y86-64的流水线实现(包括:PIPE-处理器/预测下一个PC/分支预测/流水线冒险/暂停,转发避免冒险/PPE硬件结构及实现/CPI) 1. Y ...

  9. 时序图 分支_BOOM微架构学习(1)——取指单元与分支预测

    之前在RISC-V的"Demo"级项目--Rocket-chip一文中曾经简介过BOOM处理器的流水线,这次我们开始一个系列,深入学习一下BOOM的微架构,这样对于乱序执行的超标量 ...

  10. Pentium Pro架构/流水线及其优化 (3) - 指令流水线/乱序执行核/高速缓存/分支预测/指令预取

    Instruction Pipeline 关于Pentium Pro的指令流水线,我从4个来源看到3种不同的说法:11级,12级和14级(没有13级说,不大吉利吧).其实大同小异,不用纠结到底是多少级 ...

最新文章

  1. pythonweb开发-pythonWeb开发
  2. C++中不同的继承方式
  3. 11月技术考核:LINUX系统重新安装
  4. FZU Monthly-201903 获奖名单
  5. c和java内存泄漏区别_内存溢出和内存泄漏的区别(转)
  6. [论文阅读] Prototype Augmentation and Self-Supervision for Incremental Learning
  7. 用Rainbond快速实现企业云原生
  8. 业务、架构、技术,我们应该关注什么 Java和.Net的优势劣势简单看法 市场经济决定,商业之道即是软件之道,市场的需求决定着软件技术的发展 利益决定着选择应用新技术...
  9. uniapp Android离线打包Activity class {com.xxx.yyy/io.dcloud.PandoraEntry} does not exist.
  10. 【Espruino】NO.06 关键是你的仆人(继续)
  11. 第四章 政策过程及其理论模型
  12. ps如何把自己的图与样机结合_样机在ps里面怎么用|ps怎么把图片放在书本样机图中...
  13. 用Excel控件做动态图表
  14. 关于django中render_to_response()的用法以及外键的使用
  15. quartz定时器简单使用
  16. CCF“信息检索”的前沿讲座
  17. 条件概率下的全概率公式
  18. 后端编译与优化(JIT,即时编译器)
  19. 【Excel】给自己做个2020年高考倒计时
  20. 电脑上上传安装apk到手机或者模拟器上

热门文章

  1. Fragstats|单一土地利用类型景观格局指数
  2. sakai mysql_sakai 开发环境搭建(一)
  3. 备查:ASCII码表
  4. 计算机添加桌面小插件,如何在电脑桌面添加时钟,日历等小工具_在电脑桌面添加时钟,日历等小工具的方法-系统城...
  5. 9月最新Jmeter面试题
  6. MAC安装maven步骤
  7. 优秀程序员 分析提高能力 程序进阶
  8. 外螺纹对照表_螺纹螺距对照表
  9. MicroSIP软电话的安装和使用--从电脑上接听和拨打电话
  10. Arduino循迹小车教程三----测试小车篇