乱序执行引擎设计精讲
📚 共计 30 章节
01
乱世英雄:乱序执行引擎的诞生背景与历史演进
从冯·诺依曼瓶颈到第一颗乱序芯片,回顾先驱们的探索
历史
起源
02
核心矛盾:顺序执行 vs 乱序执行,性能瓶颈的根源
数据相关、控制相关如何限制流水线吞吐
性能
瓶颈
03
基石理论:Tomasulo算法详解——从保留站到CDB
IBM 360/91的智慧:保留站、公共数据总线、动态调度
算法
经典
04
寄存器重命名:消除WAR与WAW冒险的魔法
物理寄存器 vs 架构寄存器,重命名表的设计
重命名
冒险
05
保留站设计:分布式 vs 集中式,我踩过的坑
面积、延迟、复杂度——权衡的艺术
硬件
设计抉择
06
发射逻辑:从Issue Queue到Select Logic的博弈
每周期发射多少条指令?仲裁与唤醒
发射
调度
07
执行单元:ALU、Load/Store、浮点单元的协同
异构执行簇的分配与结果收集
执行
单元
08
写回与提交:Reorder Buffer (ROB) 的完整生命周期
ROB深度、提交宽度、精确状态恢复
ROB
提交
09
精确异常:如何在乱序中保证异常不跑偏
中断、故障、调试——保持架构状态一致
异常
精确
10
分支预测:从2-bit饱和计数器到TAGE预测器
预测准确率如何影响乱序性能
分支
预测
11
推测执行:预测错了怎么办?——恢复机制详解
重定向、冲刷流水线、检查点恢复
推测
恢复
12
Load/Store单元:内存消歧与Store Buffer的设计
内存顺序、转发、推测加载
内存
LS
13
数据前递:Forwarding Network的延迟优化
旁路网络、写后读延迟隐藏
前递
优化
14
物理寄存器堆:统一 vs 分离,面积与功耗的权衡
多端口、读/写端口优化策略
寄存器
功耗
15
调度窗口:如何平衡指令级并行与硬件开销
窗口大小、唤醒逻辑、选择电路
调度
ILP
16
多发射与超长指令字:从超标量到VLIW的对比
静态调度 vs 动态调度,各自优劣
多发射
VLIW
17
能耗优化:时钟门控与动态电压频率调整
低功耗乱序核的设计方法
能耗
DVFS
18
验证挑战:乱序执行引擎的验证方法论
随机测试、形式化、覆盖模型
验证
方法论
19
经典架构分析:Intel Core微架构的乱序执行
Skylake、Golden Cove的保留站与调度
Intel
架构
20
经典架构分析:ARM Cortex-A76的乱序执行
移动端高性能乱序核的设计哲学
ARM
A76
21
经典架构分析:RISC-V BOOM的乱序执行
开源乱序核BOOM的微架构详解
RISC-V
BOOM
22
乱序编译器:编译器如何辅助硬件做调度
指令重排、软件流水、寄存器分配
编译器
协同
23
内存模型:乱序执行对内存一致性的影响
TSO、弱一致性、屏障指令
内存模型
一致性
24
多核乱序:Snoop协议与缓存一致性
MESI、MOESI、监听过滤器
多核
一致性
25
安全漏洞:Spectre与Meltdown的根源
推测执行如何被利用,缓解措施
安全
漏洞
26
未来趋势:Chiplet架构下的乱序执行
小芯片互联、分布式乱序、异构集成
Chiplet
未来
27
动手实践:搭建一个简单的乱序执行模拟器
Python/C++实现Tomasulo模拟器
实践
模拟器
28
性能分析:CPI Stack与关键路径分析
量化乱序执行中的各项开销
性能
CPI
29
调试技巧:如何定位乱序执行中的Bug
RTL调试、波形分析、断言
调试
Bug
30
总结与展望:乱序执行的下一个十年
AI/ML、量子计算、新范式
展望
趋势