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

超标量处理器设计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, 一般需要指令拆解

http://www.xdnf.cn/news/10465.html

相关文章:

  • SPA-RL:通过Stepwise Progress Attribution训练LLM智能体
  • 第十一讲 | 多态
  • ∑ 1/n 调和级数 是 发散的
  • 解决 Win11 睡眠后黑屏无法唤醒的问题
  • C语言 — 文件
  • 初学者如何微调大模型?从0到1详解
  • 串口通信技术及USART应用研究
  • IDEA PyCharm 等工具如何同时打开多个窗口
  • Redis笔记
  • 英一真题阅读单词笔记 06年
  • 系统性学习C语言-第十三讲-深入理解指针(3)
  • 使用langchain实现五种分块策略:语义分块、父文档分块、递归分块、特殊格式、固定长度分块
  • 计算机网络技术
  • 【PostgreSQL 05】PostgreSQL扩展开发实战:从自定义函数到插件开发的完整指南
  • C# 类和继承(构造函数的执行)
  • 数据结构测试模拟题(3)
  • 【STM32开发板】接口部分
  • 象棋里的卧槽马、侧面虎、金钩马的方位与解析
  • 13.三种低功耗和RTC实时时钟
  • CppCon 2014 学习: C++ on Mars
  • Go中MAP底层原理分析
  • Python打卡第42天
  • 建筑兔零基础python自学记录102|Beautiful Soup库(1)-15
  • JDBC连不上mysql:Unable to load authentication plugin ‘caching_sha2_password‘.
  • 在线音乐平台测试报告
  • Go Channel 详解
  • 怎样在PyQt5中使用信号与槽机制?
  • logstash 安装
  • 【算法题】算法一本通
  • 征程 6 J6EM 常见 qconfig 配置解读与示例