L4·10^7 – 10^9
CPU 微架构
CPU Microarchitecture
核心抽象指令执行
寄存器 + ALU + 控制单元 = 一台可以执行指令序列的机器。
学习进度:
What
CPU 微架构是实现指令集架构(ISA)的硬件设计。核心组件包括:控制单元(Control Unit)负责取指、译码、执行;ALU 执行算术和逻辑运算;寄存器文件存储操作数;总线连接各组件。现代 CPU 使用流水线(Pipelining)技术,将指令执行分为多个阶段(取指、译码、执行、访存、写回),每个时钟周期完成一条指令。更高级的技术包括超标量(Superscalar,每周期执行多条指令)、乱序执行(Out-of-Order Execution)、分支预测(Branch Prediction)。
Why
寄存器和 ALU 只能执行单个操作,无法自动执行指令序列。CPU 微架构引入'取指-译码-执行'循环,使计算机能够自动执行存储在内存中的程序。这是从'计算器'到'通用计算机'的飞跃。流水线技术进一步提升性能,使现代 CPU 达到每时钟周期执行多条指令的吞吐量。
How
程序员通过汇编语言和高级语言使用 CPU 的抽象。理解 CPU 微架构有助于理解:为什么循环展开能提升性能(减少分支);为什么分支预测失败代价高昂(流水线清空);为什么缓存命中率对性能至关重要(内存访问延迟)。性能优化工具(如 perf、VTune)直接分析 CPU 微架构事件。
Bottom-up:由下层如何构建
本层建立在以下层级之上:
Top-down:向上暴露什么接口
指令集流水线分支预测
Programmer View:程序员视角
我能操作吗?
通过指令集架构(ISA)间接操作。x86-64、ARM、RISC-V 是常见 ISA。汇编语言可直接控制指令序列。
成本模型
| 指标 | 量级 | 备注 |
|---|---|---|
| 时钟频率 | 2-5 GHz | 现代 CPU 主频 |
| IPC | 2-4 instructions/cycle | 超标量处理器每周期执行指令数 |
| 流水线深度 | 14-19 级 | 现代 CPU 流水线阶段数 |
| 分支预测失败代价 | 15-20 周期 | 流水线清空惩罚 |
常见陷阱
- !分支预测失败:条件跳转导致流水线清空,浪费 15-20 个时钟周期。热点循环应尽量减少分支
- !缓存未命中:内存访问延迟 100+ 周期,L1 缓存命中仅 4 周期。数据局部性对性能至关重要
- !假共享(False Sharing):多核修改同一缓存行的不同变量,导致缓存一致性协议频繁失效