首页 / 第4章 中央处理器 CPU

中央处理器 CPU

CPU结构、数据通路、控制器原理、异常中断、流水线技术与多处理器架构

1. CPU 功能与结构

中央处理器(CPU)是计算机系统的核心部件,由运算器和控制器两大部分组成,负责解释和执行指令。

1.1 CPU 的基本功能

  • 指令控制:程序的顺序控制,保证指令按规定顺序执行
  • 操作控制:产生每条指令的操作控制信号,送往相应部件
  • 时间控制:对各种操作信号进行时间上的控制
  • 数据加工:对数据进行算术和逻辑运算处理

1.2 CPU 的基本结构

CPU 基本结构图
运算器(ALU核心):负责数据加工处理,包括算术运算和逻辑运算
控制器(CU核心):负责指挥协调各部件工作,是CPU的指挥中心

1.3 运算器与控制器组成

🔢 运算器组成

  • 算术逻辑单元 ALU
  • 累加寄存器 ACC
  • 程序状态字寄存器 PSW
  • 通用寄存器组
  • 暂存寄存器

🎮 控制器组成

  • 程序计数器 PC
  • 指令寄存器 IR
  • 指令译码器 ID
  • 控制单元 CU(核心)
  • 时序系统
  • 中断系统

2. 指令执行过程

CPU执行一条指令的时间称为指令周期。不同指令的指令周期不同,通常由若干个机器周期组成。

2.1 指令周期的基本概念

  • 指令周期:CPU从主存取出一条指令并执行这条指令的时间
  • 机器周期(CPU周期):通常用从主存读取一条指令的最短时间作为基准,如取指周期、间址周期等
  • 时钟周期(节拍):CPU操作的最小时间单位,一个机器周期包含若干时钟周期
三级时序系统:
指令周期 > 机器周期 > 时钟周期
一个指令周期 = 若干个机器周期
一个机器周期 = 若干个时钟周期(节拍)

2.2 指令周期的四个阶段

一个完整的指令周期可能包含以下四个机器周期:

指令周期流程图
就绪

📥 取指周期

任务:从主存取出指令
PC → MAR → 主存 → MDR → IR
PC + 1 → PC(指向下条指令)
所有指令都有取指周期

🔍 间址周期

任务:取有效地址
IR地址码 → MAR → 主存
读出有效地址 → MDR / Ad(IR)
只有间址寻址的指令才有

⚡ 执行周期

任务:执行指令操作
不同指令操作不同
如加法、传送、跳转等
所有指令都有执行周期

🚨 中断周期

任务:处理中断请求
保存断点、关中断
向量地址 → PC
只有中断时才有

💡
指令周期的组成
• 最简单的指令(如空操作NOP):取指周期 + 执行周期
• 间址寻址的指令:取指周期 + 间址周期 + 执行周期
• 有中断时:执行周期后还有中断周期
• 不是每条指令都有四个周期,取指和执行是必须的

3. 数据通路

数据通路是指数据在功能部件之间传送的路径,以及实现这些路径的控制逻辑。

2.1 单周期数据通路

单周期CPU中,一条指令在一个时钟周期内完成。所有指令的执行时间相同,等于最慢指令的时间。

MIPS 单周期数据通路
五大部件:指令存储器、寄存器堆、ALU、数据存储器、控制单元。数据在这些部件之间流动,完成指令的执行。

2.2 专用寄存器

寄存器 英文名 作用 用户可见
PC Program Counter 存放下一条指令地址,自动加1 否(用户不可直接访问)
IR Instruction Register 存放当前正在执行的指令
MAR Memory Address Register 存放访存地址
MDR Memory Data Register 存放从主存读出/写入的数据
ACC Accumulator 累加器,存放操作数或结果
PSW Program Status Word 程序状态字,存放标志位(Z/C/V/S等) 部分可见

4. 控制器功能与原理

控制器是CPU的指挥中心,负责协调计算机各部件有序地工作,是整个计算机系统的核心控制单元。

4.1 控制器的功能

控制器四大核心功能
就绪
  1. 取指令:从主存中取出一条指令,并指出下一条指令在主存中的位置(PC自动增量或跳转)
  2. 分析指令(译码):对指令进行译码,分析指令的操作性质和操作数来源,产生相应的控制信号
  3. 执行指令:指挥各部件按指令要求完成操作,包括数据传送、运算、控制转移等
  4. 控制数据通路:产生各种控制信号,控制数据在各部件之间正确流动

4.2 硬布线控制器

硬布线控制器又称组合逻辑控制器,控制信号由硬件电路直接产生。

🔧 工作原理

1. 指令寄存器IR的内容送入指令译码器,产生对应的译码信号
2. 时序系统产生节拍信号(时钟周期)
3. 译码信号 + 节拍信号 + 状态条件(PSW)输入组合逻辑电路
4. 组合逻辑电路输出各种微操作控制信号

硬布线控制器的组成:
• 指令译码器:识别指令类型,输出对应的译码信号
• 时序系统:产生节拍电位和工作脉冲
• 组合逻辑电路:根据输入产生控制信号
• 状态条件:来自PSW和ALU的状态标志

4.3 微程序控制器

微程序控制器用存储逻辑代替组合逻辑,控制信号存放在控制存储器中。

微程序控制器结构图
工作流程:取指令 → IR → 译码 → 微地址形成 → 控存取出微指令 → 微指令寄存器 → 产生控制信号
每条机器指令对应一段微程序,存放在控制存储器(ROM)中。
💡
微程序基本概念微命令:控制部件的最小控制信号,如"打开寄存器A的输出门"
微操作:执行一个微命令的操作
微指令:一组微命令的集合,存放在控存的一个单元中
微程序:微指令的有序集合,对应一条机器指令的执行过程
控制存储器(CM):存放微程序的ROM,通常几十KB~几百KB

4.4 微指令的格式

格式类型 结构 特点 适用场景
水平型微指令 操作控制字段 + 顺序控制字段 并行能力强,微指令短,控存容量大 高性能CPU、指令简单
垂直型微指令 微操作码 + 目的地 + 源地址 类似机器指令格式,并行能力弱,控存容量小 指令复杂、控存受限
混合型微指令 两者结合 折中方案,兼顾并行性和控存容量 现代CPU常用

4.5 硬布线与微程序控制器对比

对比项 硬布线控制器 微程序控制器
工作原理 组合逻辑电路产生控制信号 微程序解释机器指令,控存提供控制信号
执行速度 速度快(硬件直接产生) 速度慢(需读控存,增加访存时间)
设计难度 设计复杂,电路庞大,验证困难 设计规整,类似程序设计,易于实现
修改扩展 修改困难,需重新设计电路 易于修改,只需修改控存内容
灵活性 不灵活,指令系统固定 灵活,易于实现复杂指令
适用场景 RISC(指令简单、数量少) CISC(指令复杂、数量多)
核心部件 组合逻辑电路网络 控制存储器(ROM)+ 微指令寄存器
成本 硬件成本高 控存成本,但整体成本较低
📌
考点总结 • 硬布线控制器速度快,适合RISC;微程序控制器易修改,适合CISC
• 微程序控制器中,控存用ROM实现,断电后内容不丢失
• 微指令的地址由:下址字段、操作码译码、增量方式等决定
• 现代CPU往往结合两种方式:简单指令用硬布线,复杂指令用微程序

5. 异常和中断机制

异常和中断是CPU处理突发事件和外部请求的重要机制,是现代计算机系统实现并发、实时处理的关键技术。

5.1 异常与中断的分类

异常与中断分类图
核心区别:异常(内中断)源于CPU内部执行的指令,中断(外中断)源于外部设备或硬件事件。

🚨 内中断(异常/Exception)

来源:CPU内部正在执行的指令引起
特点:与当前指令直接相关,指令执行过程中产生
检测:在指令执行过程中检测
举例:非法操作码、除数为零、溢出、缺页故障

⚡ 外中断(中断/Interrupt)

来源:CPU外部硬件设备产生
特点:与当前指令无关,外部事件引起
检测:在指令执行结束后检测(中断周期)
举例:时钟中断、I/O中断、硬件故障中断

5.2 异常的详细分类

异常类型 英文 特点 典型举例 返回行为
故障(Fault) Fault 指令执行中检测到错误,可以修复后重新执行 缺页故障、段故障、除零 返回到引起故障的指令,重新执行
陷阱(Trap) Trap 有意安排的异常,用于系统调用 系统调用、断点设置、调试陷阱 返回到下一条指令,继续执行
终止(Abort) Abort 严重错误,无法恢复,程序终止 硬件错误、非法地址访问、控制器出错 终止程序,不返回
💡
故障 vs 陷阱 vs 终止故障:可修复,返回当前指令重执行(如缺页,调入页面后重试)
陷阱:有意的,返回下条指令继续(如int指令触发系统调用)
终止:不可恢复,程序被迫终止(如硬件故障)

5.3 中断的详细分类

中断类型 特点 响应方式 典型举例
可屏蔽中断(INTR) 可通过IF标志位屏蔽,CPU可选择是否响应 IF=1时响应,IF=0时忽略 键盘、鼠标、磁盘I/O中断
不可屏蔽中断(NMI) 必须响应,不能被IF屏蔽 立即响应,优先级最高 电源掉电、硬件故障、内存错误

5.4 异常和中断的检测与响应过程

异常/中断处理流程图
就绪
关键步骤:① 检测异常/中断 → ② 关中断保护现场 → ③ 根据向量地址找到处理程序 → ④ 执行处理程序 → ⑤ 开中断恢复现场 → ⑥ 返回断点

5.5 中断向量与中断优先级

📋 中断向量

定义:中断服务程序的入口地址
中断向量表:存放所有中断向量的表,每个中断对应一个向量号
位置:通常在主存低地址区(如x86的0~1023号)
作用:快速定位中断处理程序,实现硬件自动响应

⭐ 中断优先级

作用:多个中断同时请求时,决定响应顺序
优先级原则:硬件故障 > 不可屏蔽 > 可屏蔽
实现方式:硬件排队器、软件查询、中断控制器
典型顺序:NMI > 硬件故障 > 时钟 > I/O > 用户程序

5.6 中断嵌套

中断嵌套示意图
中断嵌套:在处理低优先级中断时,若高优先级中断到来,可以暂停当前处理,先响应高优先级中断。
条件:开中断(IF=1),新中断优先级高于当前处理的中断。
注意:中断嵌套层数有限,过多嵌套可能导致栈溢出。
📌
考点总结 • 异常在指令执行过程中检测,中断在指令执行结束后检测
• 故障返回当前指令重执行,陷阱返回下条指令,终止不返回
• 中断向量是中断服务程序的入口地址,向量表在主存低地址区
• 中断嵌套要求新中断优先级高于当前中断,且开中断(IF=1)

6. 指令流水线

指令流水线是指将一条指令的执行过程分解为若干阶段,每个阶段由不同的功能部件完成,从而实现多条指令的重叠执行。

6.1 五级流水线

经典的MIPS五级流水线将指令执行分为五个阶段:

📥
IF
取指令
Instruction Fetch
🔍
ID
译码/读寄
Instruction Decode
⚙️
EX
执行/计算
Execute
💾
MEM
访存
Memory Access
📝
WB
写回
Write Back

6.2 流水线时空图动画演示

点击播放,观看5条指令在五级流水线中的执行过程。

五级流水线时空图
IF 取指
ID 译码
EX 执行
MEM 访存
WB 写回
1x
周期: 0
流水线性能:5条指令串行执行需要25个周期,五级流水线仅需9个周期。加速比 = 25/9 ≈ 2.78倍。理想情况下,每个周期完成一条指令,CPI=1。

6.3 流水线性能指标

吞吐率 TP = 指令数 / 总执行时间
加速比 S = 串行执行时间 / 流水线执行时间
效率 E = n 个阶段实际使用时槽 / (m 个阶段 × 总周期)
📌
理想情况下 k段流水线执行n条指令的总时间 = (k + n - 1) × T
加速比 = n×k / (k + n - 1),当n很大时,加速比趋近于k(级数)

7. 流水线冒险

流水线冒险是指流水线中某些指令不能在下一个时钟周期执行,导致流水线暂停的现象。

7.1 三种冒险类型

🏗️
结构冒险(Structural Hazard) 硬件资源不足导致的冲突,如指令和数据访问同一个存储器。解决方法:增加硬件资源(如指令Cache和数据Cache分离)、指令存储器和数据存储器分开。
🔗
数据冒险(Data Hazard) 一条指令依赖前一条指令的结果,而结果尚未产生。
类型:RAW(写后读,最常见)、WAR(读后写)、WAW(写后写)
解决:数据旁路(转发/直通 Forwarding)、插入气泡(暂停)、编译器调度
🔀
控制冒险(Control Hazard) 分支指令等改变PC的指令导致预取的指令可能不是需要的。
解决:分支预测、分支延迟槽、提前计算分支目标、插入气泡

7.2 数据冒险与转发演示

观察存在数据依赖的指令序列,以及转发(Forwarding)技术如何解决数据冒险。

数据冒险与转发演示
指令序列:add $1, $2, $3 → sub $4, $1, $5 → and $6, $1, $7
三条指令都依赖$1,存在RAW数据冒险。使用转发技术可消除大部分停顿。
💡
转发(Forwarding / Bypassing) 将某条指令的执行结果直接转发给后续指令的ALU输入端,不必等待写回寄存器再读出。
注意:load-use 数据冒险(Load指令后紧跟使用其结果的指令)无法完全用转发解决,需要插入1个气泡。

8. 超标量与动态流水线

为了进一步提高指令级并行度,现代CPU采用了超标量、超流水线、动态流水线等技术,实现更高的IPC(每周期指令数)。

8.1 超标量处理器的基本概念

超标量(Superscalar):处理器在一个时钟周期内可以发射多条指令,拥有多个独立的执行单元。

🚀 超标量的特点

• 多个执行单元并行工作
• 每周期可发射多条指令
• IPC理论上可达发射宽度
• 硬件负责指令调度和冒险检测
• 空间并行(增加硬件资源)

⚙️ 典型结构

• 多个取指单元和译码单元
• 多个ALU(整数、浮点)
• 多个Load/Store单元
• 保留站(Reservation Station)
• 重排序缓冲区(ROB)

8.2 三种提高并行度的技术对比

技术 基本思想 特点 IPC
普通流水线 单发射,每个周期发射1条指令 五级流水线,每周期最多完成1条 ≤ 1
超标量 多套功能部件,每周期发射多条指令 空间并行,硬件复杂度高 > 1
超流水线 把流水线段分得更细,主频更高 时间并行,周期短,级数多 ≈ 1
VLIW超长指令字 一条指令包含多个操作,编译器调度 硬件简单,依赖编译器 > 1
超标量流水线时空图(双发射)
就绪
双发射超标量:每个时钟周期可以同时发射2条指令进入流水线,理论上IPC可达2,是普通流水线的2倍。

8.3 动态流水线与动态调度

动态流水线:流水线的各段可以按不同功能连接方式工作,多种运算可以同时进行。

类型 定义 特点 优缺点
静态流水线 同一时间内各段只能按同一种功能连接方式工作 指令按序发射、按序执行、按序完成 控制简单,效率低,冒险多
动态流水线 同一时间内各段可以按不同功能连接方式工作 多功能并行,提高效率 控制复杂,硬件成本高

🎯 动态调度(Dynamic Scheduling)

定义:硬件在运行时决定指令的执行顺序,而非编译时静态决定。
核心思想:指令可以不按程序顺序执行,只要操作数就绪就可以开始执行。
目的:避免因数据冒险导致的流水线停顿,提高指令级并行度。
关键技术:保留站(Reservation Station)、寄存器重命名、重排序缓冲区(ROB)。

8.4 乱序执行与推测执行

乱序执行示意图
乱序执行流程:按序取指 → 按序发射 → 乱序执行按序完成(通过ROB保证)。
指令I2可能因等待数据而停顿,I3如果操作数就绪可以先执行,提高流水线利用率。

🔀 乱序执行(Out-of-Order Execution)

原理:指令可以不按程序顺序执行
条件:操作数就绪即可执行,无需等待前序指令
保证:结果必须按序提交(通过ROB)
好处:减少数据冒险造成的停顿
典型算法:Tomasulo算法、Scoreboard算法

🔮 推测执行(Speculative Execution)

原理:在条件不确定时提前执行指令
场景:分支预测后,提前执行预测路径的指令
机制:预测正确则提交结果,错误则丢弃
关键:分支预测的准确率
应用:现代高性能CPU普遍采用

8.5 与基本流水线的对比

对比项 基本流水线 超标量流水线 动态流水线
指令发射 单发射(每周期1条) 多发射(每周期多条) 动态调度,可乱序发射
执行顺序 按序执行 可乱序执行 乱序执行,按序完成
执行单元 单一执行单元 多个并行执行单元 多个 + 保留站
IPC ≤ 1 > 1(可达2~4) > 1(实际更高)
硬件复杂度 非常高(ROB、保留站)
冒险处理 停顿/转发 硬件检测 + 转发 动态调度避免停顿

8.6 相关技术

🔮 分支预测

预测分支是否跳转,提前取指
静态预测:总是跳/总是不跳
动态预测:根据历史记录预测
提高流水线效率,减少分支损失

📦 寄存器重命名

用物理寄存器重命名逻辑寄存器
消除WAR和WAW名相关
支持乱序执行和指令重排
Tomasulo算法的核心思想

📌
考点总结 • 超标量:多发射、多执行单元、IPC > 1,空间并行
• 超流水线:流水线级数更多、主频更高、IPC ≈ 1,时间并行
• 动态调度:硬件运行时决定指令顺序,避免数据冒险停顿
• 乱序执行:按序发射、乱序执行、按序完成(ROB保证)
• 推测执行:分支预测后提前执行,预测错误则丢弃结果

9. 多处理器基本概念

多处理器系统通过并行处理提高计算性能,是现代高性能计算机系统的核心架构。

9.1 Flynn分类法:SISD、SIMD、MIMD

Flynn分类法示意图
Flynn分类法:根据指令流(Instruction Stream)和数据流(Data Stream)的数量对计算机系统进行分类。
类型 指令流 数据流 特点 典型应用
SISD 单指令流 单数据流 单处理器,串行执行,传统冯·诺依曼结构 单核CPU、传统微处理器
SIMD 单指令流 多数据流 一条指令控制多个数据并行处理,数据并行 向量处理器、GPU、MMX/SSE/AVX
MIMD 多指令流 多数据流 多个处理器独立执行不同指令,任务并行 多核CPU、集群、分布式系统
MISD 多指令流 单数据流 多条指令处理同一数据(理论模型,实际少见) 容错系统(如航天控制)

9.2 向量处理器的基本概念

📊 向量处理器(Vector Processor)

定义:专门设计用于高效处理向量运算(数组运算)的处理器,属于SIMD类型。
核心特点:一条向量指令可以同时对多个数据元素执行相同操作。
结构:向量寄存器(存放多个数据元素)、向量运算单元、向量流水线。
优势:向量运算效率高,特别适合科学计算、数值模拟、图像处理。
典型产品:早期Cray系列向量机,现代CPU中的SIMD扩展(MMX、SSE、AVX等)。

🚀 向量运算优势

• 减少指令数量(一条指令处理多个数据)
• 减少循环开销
• 流水线效率高(无分支冒险)
• 内存访问效率高(连续访问)

⚡ SIMD扩展指令集

• MMX:64位向量,整数运算
• SSE:128位向量,浮点运算
• AVX:256位向量,更宽的并行度
• AVX-512:512位向量,高性能计算

9.3 硬件多线程的基本概念

硬件多线程技术允许单个处理器在多个线程间快速切换,提高资源利用率。

类型 切换时机 特点 优缺点
细粒度多线程 每时钟周期切换线程 轮转执行,流水线利用率高 切换开销小,但单个线程执行慢
粗粒度多线程 遇到长延迟事件时切换 只在停顿时切换,如Cache缺失 切换开销较大,但单个线程执行快
同时多线程(SMT) 同一周期执行多个线程的指令 利用超标量的多个执行单元 资源利用率最高,Intel超线程技术

🧵 同时多线程(SMT / Hyper-Threading)

原理:一个物理核心同时执行多个线程,线程共享执行单元,提高资源利用率。
Intel超线程:一个物理核心虚拟成两个逻辑核心,理论性能提升30%左右。
条件:线程间互补使用资源,如一个线程访存时,另一个线程计算。
适用场景:多任务处理、服务器应用、并发程序。

9.4 多核处理器的基本概念

多核处理器结构示意图
多核处理器:在单个芯片上集成多个处理器核心,每个核心可独立执行指令。
核心2~4个(低端)到64+个(高端服务器),共享片上Cache和内存接口。

🔧 多核结构特点

• 多个独立的处理器核心
• 共享L3 Cache(或私有L2)
• 共享内存控制器和I/O接口
• 片上互连网络(总线、交叉开关)
• 线程级并行(TLP)

⚡ 多核优势

• 真正的并行执行
• 吞吐率提高(多任务)
• 功耗效率提高
• 降低时钟频率压力
• 更适合多线程程序

9.5 共享内存多处理器(SMP)

SMP(Symmetric Multi-Processing):对称多处理器,多个处理器共享同一物理内存,所有处理器地位平等。

🌐 SMP基本特征

共享内存:所有处理器访问同一物理内存,地址空间统一。
对称性:所有处理器地位平等,无主从关系,任意处理器可执行任意任务。
单一操作系统:一个操作系统管理所有处理器,进程可在任意处理器上运行。
通信方式:通过共享内存通信,无需显式消息传递。
Cache一致性:需要维护各处理器Cache的一致性(MESI协议等)。

对比项 SMP共享内存 分布式系统
内存 共享物理内存 各自私有内存
通信 共享变量、内存读写 消息传递(MPI)
一致性 需要Cache一致性协议 无Cache一致性问题
扩展性 有限(总线瓶颈) 好(可扩展到数百节点)
编程 简单(多线程) 复杂(消息传递)
📌
考点总结 • SISD:单处理器,传统结构;SIMD:向量处理、GPU;MIMD:多核、集群
• 向量处理器:一条指令处理多个数据,适合科学计算
• 硬件多线程:细粒度(周期切换)、粗粒度(停顿切换)、SMT(同时执行)
• 多核处理器:多个核心共享片上Cache,线程级并行
• SMP:共享内存、对称性、单一OS,需要Cache一致性协议(如MESI)