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

超标量处理器设计6-指令解码

1. 指令缓存

  1. 指令缓存本质上是一个FIFO, 它能够将指令按照程序中指定的顺序存储起来,这样指令在解码的时候,仍然可以按照程序中指定的顺序进行解码。指令缓存是超标量处理器中必须的部件,其原因有两个: 1. 每周期可以取指的个数大于每周期可以解码指令的个数,这样即使在I-Cache缺失的时候,指令缓存中仍然存在一些指令,不会引起流水线的暂停
  2. 有些复杂指令需要拆解成小的指令,因此需要指令缓存来缓存部分取出来的指令。

2. 指令译码完成的工作

  1. what type: 译码出指令是算术指令/访存指令还是分支指令,方便送到不同的issue queue
  2. what operation: 当指令是算术指令时,进行何种算术指令,当时访存指令时,是load还是store指令
  3. what resource: 译码出源寄存器和目的寄存器,rename要用
    截屏2025-06-01 20.06.51.png

3. 常见指令的处理

3.1 分支指令

如果采用checkpoint的方式对分支预测失败的场景进行状态恢复,为了减少电路的复杂度,一般我们需要限制每周期内分支指令的个数,因此需要提前进行约束.
尽量提前检测预测错误的情况,可以减少penalty。

3.2 乘累加指令

涉及3 src的指令,所以PRF的读口个数会有影响

3.3 pre/post index指令

涉及 2 dst的指令,
pre-index : 对于load指令, 先更新存地址的寄存器值,然后用更新后的值索引内存 LDR W0, [X1, #12]
post-index: 先用寄存器的值索引内存,然后更新存放地址的寄存器值 LDR W0, [X1], #12
pre 和post针对的是啥时候更新X1的值

3.4 LDM/STM指令

这些涉及多个src和多个dst, 一般需要指令拆解

相关文章:

  • Chorme如何对于youtube视频进行画中画背景播放?
  • wordpress免费主题网站
  • 利用 Python 爬虫获取淘宝商品详情
  • Java数据结构——八大排序
  • 04.MySQL数据类型详解
  • 网络攻防技术一:绪论
  • 深入解析Vue.js:构建现代Web应用的高效之道
  • 机电的焊接技术
  • MQTT入门实战宝典:从零起步掌握物联网核心通信协议
  • 如何学习开关电源?从“大”到“小”学习开关电源...
  • 第6节 Node.js 回调函数
  • SSL/TLS 协议详解:安全通信的基石
  • VSCODE的终端无法执行npm命令
  • opencv使用经典bug
  • Hive SQL优化实践:提升大数据处理效率的关键策略
  • WEBSTORM前端 —— 第3章:移动 Web —— 第4节:移动适配-VM
  • 篇章七 数据结构——栈和队列
  • WEBSTORM前端 —— 第3章:移动 Web —— 第2节:空间转换、转化
  • Leetcode 3569. Maximize Count of Distinct Primes After Split
  • 数据结构第6章 图(竟成)
  • wordpress栏目更改无法显示/杭州百度seo
  • 沧州哪里有做网站的公司4000-/百度拉新推广平台
  • adsence wordpress/seo网站推广的主要目的不包括
  • 关键词优化排名工具/专业seo网站优化推广排名教程
  • 怎么做会员自动售卡网站/百度网络优化推广公司
  • 德州疫情最新消息今天/seo查询官方网站