5.1 CPU 的功能和基本结构
5.1.1 CPU 的功能
CPU 主要分为控制器 与运算器两大部件。
-
指令控制(控制器完成):保证指令按照程序预定顺序自动执行;保证取指、分析、执行指令按顺序完成。
-
操作控制(控制器完成):产生一条指令对应的全部操作信号,发送到 CPU 内部执行部件,控制部件完成规定操作。
-
时序控制(控制器完成):对操作信号定时,严格控制信号的产生时刻与持续时间。
-
中断控制(控制器完成):及时响应内部异常、外部中断请求,例如缺页异常、键盘中断。
-
数据加工(运算器完成):完成算术运算、逻辑运算。
5.1.2 CPU 基本结构
-
运算器
-
组成:ALU 算术逻辑单元、通用寄存器 GPR、程序状态字 PSW。
-
功能:完成算术运算、逻辑运算、逻辑测试。
-
-
控制器
-
组成:CU 控制单元、PC 程序计数器、IR 指令寄存器、ID 指令译码器、MAR 存储器地址寄存器、MDR 存储器数据寄存器。
-
功能:取指令,计算下一条指令地址;指令译码;生成控制信号序列;控制指令执行步骤与数据流动方向。
-
5.1.3 CPU 中的主要寄存器
(1)运算器内寄存器
-
通用寄存器 GPR:暂存、传送数据;参与算术逻辑运算,保存运算结果。
-
累加器 ACC:暂存 ALU 运算结果,运算器至少配置一个累加器。
-
暂存寄存器 :存放来自数据总线 / 通用寄存器的操作数,送给 ALU;对程序员透明(不可见)。
ALU 两个输入端需要同时输入操作数;若无暂存寄存器,读取第二个操作数时,前一个操作数会被总线覆盖,ALU 无法得到两个输入,输出错误结果。
-
程序状态字 PSW:保存运算产生的各类标志位。
-
运算标志:SF 符号标志、CF 进位标志、OF 溢出标志、ZF 零标志。由触发器硬件保存。其他标志:中断允许标志 IF、系统工作标志。
-
作用:记录程序与机器运行状态,是控制程序流转的重要依据。
-
(2)控制器内寄存器
-
程序计数器 PC :存放下一条将要执行的指令地址。
-
PC 位宽与主存地址位宽相同。
-
取指令:将 PC 内容作为地址访问主存,读出指令送入 IR,之后更新 PC。
-
顺序执行:PC 自动自增;跳转执行:PC 载入跳转目标地址。
-
-
指令寄存器 IR:存放当前正在执行的指令;位宽等于指令字长;指令送入 ID 译码器译码,生成译码信号。
-
存储器地址寄存器 MAR:存放 CPU 访问的主存单元地址;位宽等价于地址总线宽度。
-
存储器数据寄存器 MDR:存放 CPU 与主存交互的数据 / 指令;位宽等价于数据总线宽度。
MAR、MDR 逻辑上属于主存,物理上集成在 CPU 内部,加快访存速度。
(3)寄存器分类:按程序员是否可见
-
程序员可见(可编程访问):GPR、PC、PSW、ACC;可以编程使用,减少访存次数。
-
程序员不可见:MAR、MDR、IR、暂存寄存器;由控制部件使用,操作系统特权程序可访问,普通用户无法编程。
5.2 指令执行过程
5.2.1 周期概念
-
指令周期:取出一条指令到执行完成的全部时间。
-
机器周期(CPU 周期) :指令周期内一次完整操作的时间;通常定义为取一个存储字的时间,等价于存取周期。
存取周期:连续两次存储器读写的最小间隔;存取周期>存取时间。
存储器(尤其是 DRAM、磁芯存储器)读写结束后,硬件不能立刻进行下一次操作,需要:
- 电路电平恢复、电荷复位
- 存储单元刷新稳定
- 总线、读写电路复位
即还需要恢复时间。
一条指令周期可划分为:取指周期、间址周期、执行周期、中断周期。 CPU 上电后循环:取指令 → 执行指令。
-
取指周期:取出指令。
-
间址周期:获取操作数有效地址;只有间接寻址指令才需要。
-
执行周期:取操作数、运算、保存结果;不同指令执行周期长短不同。
-
中断周期:响应中断请求,保存断点,转入中断服务程序。
5.2.2 各周期数据流、控制流与控制信号

① 取指周期(所有指令公共周期,固定微操作)
-
数据流:PC → 内部总线 → MAR → 地址总线(AB)
-
控制流 :CU输出 PCout=1、MARin=1,一个时钟周期完成地址发送
-
数据流:CU发送存储器读命令,主存按地址输出数据
-
控制流 :CU输出 Read=1,启动主存读操作
-
数据流:主存存储字 → 数据总线(DB) → MDR
-
控制流 :CU输出 MDRin=1,锁存主存读出的指令
-
数据流:MDR → 内部总线 → IR
-
控制流 :CU输出 MDRout=1、IRin=1,保存当前执行指令
-
数据流:PC自增更新,指向下一条顺序指令地址
-
控制流 :CU输出 PC+1控制信号,硬件自动完成PC递增
② 间址周期(仅间接寻址指令需要,无间接寻址则跳过)
周期功能:根据指令形式地址,访存读出操作数的有效地址,完成寻址修正。
-
数据流:IR的地址码字段(形式地址) → MAR → 地址总线(AB)
-
控制流 :CU输出 IR_ADout=1、MARin=1,发送形式地址至主存
-
数据流:CU发送存储器读命令,主存对应单元输出有效地址
-
控制流 :CU输出 Read=1,启动主存读操作
-
数据流:主存有效地址 → 数据总线(DB) → MDR(最终得到操作数有效地址)
-
控制流 :CU输出 MDRin=1,锁存有效地址
③ 执行周期(不同指令微操作/控制信号不同)
周期功能:根据指令类型,完成访存读数、ALU运算、结果写回、跳转赋值等操作,同步更新PSW状态标志。
1. 加法指令
-
Ad(IR) → MAR,CU发Read信号,M(MAR) → MDR
-
MDR → 暂存器A
-
R0、A同时送入ALU,执行ADD运算
-
ALU运算结果 → ACC,刷新PSW标志位
-
ACC结果写回R0
2. JUMP无条件跳转指令
-
IR地址码字段 → PC,覆盖原有PC顺序地址
-
直接跳转至目标地址,结束本条指令执行,无访存、无运算
④ 中断周期
周期功能:响应中断、关中断、保存程序断点、载入中断服务程序入口地址
核心控制信号:SPout、MARin、Write、PCout、MDRin、MDRout、PCin、关中断信号
前置判断:执行周期结束后,CU检测中断请求,有请求则进入中断周期
5.2.3 三类指令执行方案
-
单周期处理器 :所有指令占用同一个时钟周期;时钟周期由最复杂指令决定;CPI=1;必须使用多总线结构。
-
多周期处理器:一条指令划分为多个时钟周期;不同指令周期数目不同;CPI>1;指令串行执行。
-
流水线处理器:指令并行重叠执行;理想状态 CPI=1。
5.3 数据通路功能与基本结构
CPU = 数据通路 + 控制部件。
- 数据通路:数据流动路径以及路径上所有部件;其中完成运算的部件称为执行部件 / 功能部件。
5.3.1 数据通路两种结构
-
CPU 内部总线方式
-
单总线:所有寄存器挂在同一条内部总线;同一时刻只能完成一次数据传输,容易发生总线冲突。
-
多总线:多条内部总线;同一时钟周期可以同时传输多组数据。
-
-
专用数据通路:不使用共享总线;无总线冲突,性能高;硬件成本大。
单周期处理器必须使用多总线 ;单总线无法在一个周期完成一条指令全部操作。
5.3.2 数据通路元件分类
-
组合逻辑元件(操作元件) :输出仅由当前输入决定,不受时钟控制;例:多路选择器、ALU、加法器、译码器。

-
存储元件(状态元件,时序逻辑):具备记忆功能;寄存器是典型代表,保存中间结果、状态。
5.3.3 微操作与微操作序列
微操作:比机器指令更小、最基础的硬件操作。同一个机器指令,不同数据通路对应的微操作序列不同。
节拍安排约束:
同一个节拍,同一个寄存器只能出现一次输出;
内部总线、AB、DB、CB 同一节拍只能使用一次;
同一个节拍最多访问一次主存或 ALU。
示例:加法指令、JUMP 无条件跳转指令,对应完整微操作序列(含控制信号)。
5.4 控制器的功能与硬件实现
控制器核心部件:CU 控制单元。控制器其余部件:PC、IR、指令译码器 ID、地址形成部件、中断控制逻辑。
控制器功能:
-
取指令,确定下一条指令地址;
-
指令译码,生成对应控制信号;
-
时序控制,控制信号时序;
-
中断事件响应。
地址形成部件:根据寻址方式,由地址码生成有效地址。
5.4.1 控制器两类硬件实现
本质区别:CU 控制单元实现方式不同,其余部件基本一致。
-
硬布线控制器:组合逻辑电路直接生成控制信号。
-
微程序控制器:用软件思路解决硬件问题。
5.4.2 微程序控制器基础概念
-
机器指令 :程序员可见指令;每一条机器指令,对应一段微程序。
-
微程序 :由多条微指令组成。
-
微指令:存放在控制存储器 CS;一条微指令由多个微操作组成。
-
微命令 :硬件控制信号;部件收到微命令完成对应的微操作。
微命令与微操作一一对应。
控制存储器 CS vs 主存储器 MM
|------|---------|-------------------|
| 项目 | 主存 MM | 控制存储器 CS |
| 组成 | ROM+RAM | ROM(微指令固定,用户不可修改) |
| 位置 | CPU 外部 | CPU 内部 CU 中 |
| 访问方式 | 按地址访问 | 按地址访问 |
| 存储内容 | 机器指令、数据 | 微指令、微地址 |
-
微周期:从控制存储器读出并执行一条微指令花费的全部时间。
-
微指令寄存器 μIR:暂存当前正在执行的微指令。
-
微地址寄存器:存放下一条待取微指令的地址。
5.4.3 微程序控制器工作流程

-
机器指令取指完成后,IR 操作码送入微地址形成部件(地址转移逻辑),生成该机器指令对应微程序入口微地址。
-
根据微地址访问 CS,读出微指令送入 μIR。
-
解析微指令:微操作控制字段、判别测试字段、下地址字段;输出微命令控制硬件。
5.4.4 微指令编码方式
-
直接控制法(位直接编码)
-
每一位对应一个微命令;1 有效,0 无效。需要的指令字往往较长。
-
优点:无需译码,简单直接;
-
缺点:微指令字很长,CS 容量开销大。
-
-
-
字段直接编码法
-
将微命令分组;组内互斥(同一微周期最多一个有效),组间相容;000 代表无操作。
-
优点:缩短微指令字长;
-
缺点:输出端需要译码器,增加硬件。
-
-
-
字段间接编码法
-
一个字段的微命令,需要由另一个字段辅助解释。
-
优点:进一步缩短字长;
-
缺点:削弱并行能力,时间开销增大。
-
-
5.4.5 后继微地址(微地址)形成方式
-
计数器方式(增量方式,类似 PC)
-
微指令不设置下址字段;顺序执行:微 PC+1;跳转:偏移量 / 操作码生成地址。
-
优点:简单,缩短微指令;
-
缺点:大量分支跳转,速度慢。
-
-
公共取指微程序入口由硬件固定生成。
-
-
断定方式 :微指令内部专门设置下址字段,直接给出后继微地址。
-
结合方式:同时使用增量 + 断定两种机制。
5.4.6 水平型微指令 & 垂直型微指令
-
水平型微指令:一条微指令同时发出多个微命令,并行执行多个微操作;常用直接控制、字段编码。
-
并行能力强;
-
微指令字长较长。
-
-
垂直型微指令:一条微指令只有一个操作;类似机器汇编。
-
字长短;
-
并行性差,执行一条机器指令需要大量微指令,执行时间长。
-
5.5 异常与中断
-
异常 :CPU 内部检测、同步事件,和当前正在执行的指令强相关。
-
中断 :外部设备触发,异步事件,与当前指令无关。

中断处理流程
- 中断隐指令(硬件自动完成) ①关中断;②保存断点;③识别中断源,获取中断向量。
中断向量:中断服务程序入口地址;全部中断向量存放在中断向量表。
- 执行中断服务程序:软件中完成保护现场(压栈保存冲突寄存器)。
断点保护 vs 现场保护
断点保护:保存 PC,保证中断结束可以回到被打断的位置;硬件中断隐指令完成。
现场保护:保存通用寄存器,防止主程序寄存器数据被中断服务程序破坏;软件指令完成。
- 中断返回指令:恢复现场、恢复断点、开中断,回到原程序继续运行。
5.6 指令流水线
5.6.1 流水线基本概念
把任务拆分为若干时间大致相等的阶段,多阶段并行工作。 计算机并行性两类:
-
时间并行(时间重叠):同一个硬件部件分时重叠工作,流水线就是典型。
-
空间并行(资源重复):复制多套相同功能硬件;超标量处理机。
5.6.2 流水线设计原则
-
流水线段数以最复杂操作的时间为准;流水线时钟周期由最慢流水段决定。
-
指令格式规整、指令长度尽量一致;Load‑Store 风格指令集。
-
指令、数据内存对齐,减少访存次数。
5.6.3 RISC 五级指令流水线
|--------------|-----------------|
| 阶段 | 功能 |
| IF 取指 | 从存储器取出指令,PC 自增 |
| ID 译码取数 | 指令译码,读取通用寄存器操作数 |
| EX 执行 / 地址运算 | ALU 运算,有效地址计算 |
| MEM 访存 | 存储器读写 |
| WB 写回 | 运算结果写回通用寄存器 |
流水段寄存器(锁存器):每一级流水线之间配置;保存 PC、指令、立即数、运算结果、控制信号,用于向下一级流水段传递信息。
理想流水线:每一个时钟周期流入一条指令,流出一条指令;同时流水线内部有多条指令在不同阶段并行。
5.6.4 流水线三大性能指标
-
吞吐率 TP:单位时间完成任务数量
-
加速比:非流水线总时间 ÷ 流水线总时间。
5.6.5 流水线冒险(冲突)与解决方案
-
结构冒险(结构冲突) :硬件资源冲突。 解决:多套独立硬件部件;指令 Cache 与数据 Cache 分离 ;插入气泡 stall 暂停流水线。

-
数据冒险(数据冲突) :指令之间存在数据依赖,需要的结果还未生成。

-
解决:
-
插入气泡;

-
插入空操作;

-
数据旁路(转发技术)直接把中间结果送给 ALU 输入端。

-
-
load-use:它是 数据冒险的特例 ,只发生: 前一条是 load(访存写回寄存器) 后一条立刻用这个寄存器

-
-
控制冒险(控制冲突 / 分支冲突):分支跳转改变 PC,取指阶段预取错误指令。 解决:分支预测;尽早计算转移目标地址;延迟分支技术。
5.6.6 多发射流水线
-
超标量流水线 :一个周期发射多条指令;空间换时间;CPI<1;复制多套执行部件。
-
超流水线 :把流水线每个阶段进一步拆分为更小节拍;时间换空间;CPI=1;提高主频。
5.7 多处理器系统
SISD / SIMD / MIMD
-
SISD 单指令单数据流:单处理器,单指令流,同一时刻只处理少量数据;传统单 CPU。
-
SIMD 单指令多数据流 :一条指令,同时对多组数据流运算;一个控制器,多个处理单元;向量处理器属于 SIMD;数据级并行,适合密集数据运算。
-
MIMD 多指令多数据流 :多处理器,多独立指令流,处理不同数据;线程级并行,适合复杂任务;多核处理器属于 MIMD。
多核处理器(共享存储)
示例:Intel i7
-
芯片内多个 CPU 核心;每个核心拥有独立 L1、L2 Cache,TLB、MMU,可独立执行指令。
-
核间高速互联;所有核心共享片上 L3 Cache、存储控制器;全部核心共享主存储器。