5.1 CPU 的功能与组成
CPU 功能
程序控制、操作控制、时间控制、数据加工。CPU 由运算器(ALU、寄存器)和控制器(CU、指令部件)组成。控制器组成
- 程序计数器 PC:存放下一条指令地址,自动加 1。
- 指令寄存器 IR:存放当前指令。
- 指令译码器 ID:解释指令操作码。
- 时序发生器:产生时钟周期、机器周期信号。
- 操作控制器:发出各种控制信号(微操作命令)。
控制方式
- 同步控制:统一时钟节拍,简单但有空闲。
- 异步控制:应答方式,无固定节拍,灵活复杂。
- 联合控制:同步为主,特殊指令异步处理。
硬布线 vs 微程序:硬布线控制速度快但扩展难,用于 RISC;微程序控制用控制存储器存放微指令,易于修改扩展,用于 CISC。一条机器指令对应一段微程序。
5.2 指令执行过程
一条指令的执行包含若干机器周期(CPU 周期),通常分为:
- 取指周期:从主存取指令到 IR,PC 加 1。
- 间址周期:当寻址方式为间接寻址时,求有效地址。
- 执行周期:按操作码完成具体操作(算逻运算、访存等)。
- 中断周期:响应中断时保存断点、转中断服务程序。
指令周期
CPU 取出并执行一条指令所需的全部时间。包含若干机器周期,每个机器周期包含若干时钟周期。5.3 数据通路
数据通路
指令执行过程中数据在 CPU 中流动的路径,由寄存器、ALU、多路选择器和内部总线构成。数据通路中关键寄存器:
- MAR(存储器地址寄存器):存放访存地址,接到地址总线。
- MDR(存储器数据寄存器):存放读写的数据,接到数据总线。
- PC、IR、ACC、通用寄存器组等。
单总线 vs 多总线:单总线数据通路结构简单但需分时使用,速度慢;双总线/三总线可并行传输,速度快但硬件复杂。
5.4 流水线技术
流水线技术
将指令执行过程分为多个子过程,使多条指令在不同子过程上重叠执行,提高 CPU 吞吐率。经典五级流水线:IF(取指)→ ID(译码)→ EX(执行)→ MEM(访存)→ WB(写回)。流水线性能指标
- 吞吐率 TP = 任务数 / 总时间。
- 加速比 S = 非流水线时间 / 流水线时间。
- 效率 E = 时空图有效格子数 / 总格子数。
n 条指令、k 级流水线,理想情况下:总时间 = (k + n − 1) × 时钟周期;非流水线时间 = n × k × 时钟周期。
流水线冲突(冒险)
- 结构冲突(资源冲突):多条指令同时争用同一部件。解决:资源重复、分时使用。
- 数据冲突(数据冒险):后面指令需要前面指令的结果。解决:停顿(stall)、数据旁路(forwarding)、编译优化(指令调度)。
- 控制冲突(分支冒险):转移指令改变 PC,预取指令作废。解决:分支预测、延迟分支、提前判断。
数据旁路(Forwarding):将 EX 阶段的结果直接转发给后续需要的指令,不必等 WB 完成,可消除部分数据冲突。Load-use 冲突仍需 1 拍停顿。
5.5 多发射与超标量
超标量:每个周期并发发射多条指令(多个功能部件)。超流水线:将流水段细分,提高主频。动态调度:硬件重排指令顺序(乱序执行)以避免冲突。
5.6 多处理器基本概念 [22新增]
多处理器系统
由多个处理器(或处理器核心)组成的计算机系统,旨在通过并行计算提升系统性能。涉及处理器架构分类、并行粒度、线程级并行和处理器间互连等概念。Flynn 分类法
根据指令流和数据流的多寡,将计算机系统分为四类:
| 类别 | 指令流 | 数据流 | 代表 | 特点 |
|---|---|---|---|---|
| SISD | 单 | 单 | 传统单核 CPU | 单指令单数据,冯·诺依曼结构 |
| SIMD | 单 | 多 | 向量处理器、GPU | 一条指令同时对多个数据操作 |
| MISD | 多 | 单 | (罕见,流水线可视为一种特例) | 多条指令操作同一数据流 |
| MIMD | 多 | 多 | 多核处理器、多计算机 | 每个处理器独立执行各自的指令和数据 |
向量处理器(SIMD 实现)
向量处理器将一条向量指令作用于多个数据元素(向量),实现数据级并行。现代 CPU 通过 SIMD 扩展指令集(如 x86 的 SSE/AVX、ARM 的 NEON)支持短向量运算,可同时处理 128 位或 256 位数据。
硬件多线程
在一个 CPU 核心上通过硬件支持快速切换多个线程,以隐藏访存延迟等长延迟操作:
- 细粒度多线程(Fine-Grained MT):每个时钟周期切换线程。线程切换开销极小,但单线程执行被频繁打断。
- 粗粒度多线程(Coarse-Grained MT):仅在遇到长延迟事件(如 Cache 缺失)时切换线程。切换开销较大(需清空流水线),但对单线程连续性影响小。
- 同时多线程 SMT(Simultaneous Multithreading):同一时钟周期内可从多个线程发射指令到不同功能部件,充分利用超标量资源。Intel 超线程(Hyper-Threading)即 SMT 实现,一个物理核心呈现为两个逻辑核心。
多核处理器
将多个 CPU 核心集成在同一个芯片上,每个核心拥有独立的 L1 Cache 和寄存器,共享 L2/L3 Cache 和主存。多核处理器属于 MIMD 结构,是现代 CPU 的主流形态。
共享内存多处理器(SMP)
SMP(Symmetric Multi-Processing)
对称多处理——所有处理器共享同一个物理内存空间,地位平等,任何一个处理器都可以访问任意内存位置。通过共享内存实现处理器间通信。SMP 的关键挑战:Cache 一致性(Cache Coherence)——当多个处理器的私有 Cache 缓存了同一内存块时,某处理器对该块的修改必须被其他处理器感知。常见解决方案包括:
- 监听协议(Snooping):各 Cache 控制器监听总线上的访存操作,维护一致性。常用 MESI 协议(Modified / Exclusive / Shared / Invalid 四种状态)。
- 目录协议(Directory):使用集中目录记录各 Cache 中缓存了哪些块,点对点通知,适合大规模系统。
MESI 协议:每个 Cache 行有 4 种状态 —— M(Modified,已修改且独占)、E(Exclusive,干净且独占)、S(Shared,干净且共享)、I(Invalid,无效)。写入 Shared 行需先"使无效"(Invalidate)其他副本。