Skip to main content
本章按“CPU 结构与寄存器 → 指令周期 → 数据通路 → 微程序控制器 → 异常与中断 → 指令流水线 → 多处理器”整理。复习时先建立 CPU 的功能与组成框架,再重点掌握数据通路的微操作序列、流水线的性能计算与三类冒险。
计算题的两条主线:数据通路题用“能同时驱动总线吗”判断微操作并行性,流水线题用 T=(k+n−1)ΔtT=(k+n-1)\Delta t 及其派生公式解决。做题先画结构或列阶段,再逐项代入。

CPU 的基本结构

CPU 是计算机的核心部件,主要功能包括:
  • 指令控制:取指令、分析指令、执行指令。
  • 操作控制:产生控制信号,指挥各部件完成操作。
  • 时间控制:控制各操作的执行时序。
  • 数据加工:完成算术运算和逻辑运算。
  • 处理中断和异常:响应外部中断,处理执行过程中出现的异常。
CPU 主要由运算器和控制器两大部分组成。运算器
  • ALU:算术逻辑单元。
  • GPR:通用寄存器组。
  • ACC:累加寄存器。
  • PSW:程序状态字寄存器。
  • 暂存寄存器、移位器等。
控制器
  • PC:程序计数器。
  • IR:指令寄存器。
  • ID:指令译码器。
  • CU:控制单元。
  • 时序与控制电路。
不同处理器的具体结构有所区别;MAR、MDR 等寄存器是否划归 CPU 内部,也取决于教材采用的模型。
记忆:运算器负责“算”,控制器负责“指挥”。

CPU 中的寄存器:用户可见与用户不可见

这里的“用户”指机器指令程序员,而不是普通计算机使用者。
程序员能够通过机器指令直接或间接访问的寄存器。
补充:PC 通常属于程序员可见的控制类寄存器,但某些体系结构对其访问方式有限制。教材的分类口径可能略有不同。
主要供 CPU 内部控制和执行使用,通常不能被普通机器指令直接访问。
注意:MAR、MDR、IR 通常是考研重点;PC 的可见性与分类要结合教材口径。
  • PC:存放指令地址。
  • IR:存放指令内容。
  • MAR:存放访存地址。
  • MDR:存放访存数据。
  • PSW:保存程序状态及条件标志。
口诀:PC 找指令,IR 存指令;MAR 找数据,MDR 存数据。

指令周期:IF、ID、EX、MEM、WB

  • IF(Instruction Fetch,取指):从指令存储器中取出指令,送入指令寄存器或流水线寄存器,并更新 PC。
  • ID(Instruction Decode,译码):解析操作码,识别指令类型、源操作数和目的操作数,读取寄存器。
  • EX(Execute,执行):进行算术逻辑运算、计算有效地址或判断分支条件等。
  • MEM(Memory Access,访存):对需要访问数据存储器的指令进行读写操作。
  • WB(Write Back,写回):将运算结果或读取的数据写回寄存器。
IF、ID、EX、MEM、WB 是经典五段流水线的划分,并不等同于所有处理器的统一指令周期定义。不同指令可能不需要执行全部阶段。
这里使用的是典型 RISC 五段流水线模型。
  • 指令周期:完成一条指令所需的时间。
  • 时钟周期:处理器时钟的基本时间单位。
  • 机器周期:传统模型中完成一个基本操作所需的时间。
一条指令可以包含多个时钟周期。在流水线中,多条指令的执行阶段可以重叠,因此不能简单地把五段流水线理解为一条指令必须连续占用五个时钟周期、其他指令只能等待。

数据通路的组成

数据通路是 CPU 内部用于数据传送、存储和运算的硬件路径。主要由组合逻辑元件、时序逻辑元件以及连接它们的总线和选择电路构成。
组合逻辑电路的输出只取决于当前输入,不具有独立的状态记忆功能。
时序逻辑电路的输出不仅与当前输入有关,还与存储的状态有关。
核心区别:组合逻辑负责计算,时序逻辑负责记忆状态。
常见分类方式:
  • 按数据传送方式:单总线、双总线、多总线结构。
  • 按功能组织:专用数据通路与共享数据通路。
  • 按处理方式:非流水数据通路与流水数据通路。
多总线或专用通路通常能够提供更多并行传送机会,但需要更多硬件资源和控制逻辑。
单总线结构中,多个寄存器和功能部件共享一条内部总线:R1、R2、R3 等寄存器与 ALU、暂存寄存器都挂在 CPU 内部总线上,运算结果再通过数据通路写回寄存器。单总线结构的特点
  • 结构简单,硬件成本相对较低。
  • 同一时刻通常只能有一个数据源驱动总线。
  • 需要两个操作数的运算,可能需要分多次传送。
  • 暂存寄存器常用于保存先读出的操作数或中间结果。
  • 微操作的并行性受到总线资源限制。
典型微操作示例执行 R3←R1+R2R_3 \leftarrow R_1 + R_2,一种典型实现为:
这只是抽象的操作序列,实际需要几个时钟周期取决于 ALU 的输入连接方式、寄存器设置和控制信号设计。
做题关键:给定数据通路图后,先看哪些部件能够直接连接,再判断能否同时传送,而不是单纯根据运算表达式判断周期数。

微程序控制器

微程序控制器将机器指令的执行过程分解为一系列微操作,并用存放在控制存储器中的微指令控制这些操作。基本工作过程:
  1. 机器指令。
  2. 微地址形成与控制存储器寻址。
  3. 取出微指令。
  4. 产生控制信号,执行微操作。
  5. 形成下一条微指令地址。
不同教材或实现对寄存器的命名可能不同,复习时应以王道所用术语为准。
一条微指令通常包含两类信息:
  • 操作控制字段:规定本条微指令要执行哪些微操作。
  • 顺序控制字段:帮助确定下一条微指令的地址或转移方式。
微指令的执行不仅要产生控制信号,还要确定后续微指令的执行顺序。
考点:编码越紧凑,通常越需要译码;直接表示则更容易实现并行控制,但可能需要更长的微指令字。
注意:两者的实际速度取决于具体设计,表中的比较是考研常见的基本结论。

异常和中断

异常和中断都会使 CPU 暂时改变正常的指令执行流程,转而执行相应的处理程序。在传统 408 复习框架中,常将异常进一步区分为故障、自陷和终止。
不同体系结构对异常类别的定义存在差异,考试时应优先遵循题目和教材的定义。
  1. 发现中断请求。
  2. 判断中断是否允许响应。
  3. 保存断点和必要的现场信息。
  4. 根据中断类型转入处理程序。
  5. 执行中断服务程序。
  6. 恢复现场并返回。
需要理解三个概念:
  • 断点:被中断程序恢复执行时需要返回的位置。
  • 现场:恢复程序运行所需的寄存器内容和状态信息。
  • 中断服务程序:负责处理相应中断请求的程序。
注意:断点不一定简单等于当前 PC 的值。对于不同异常,返回地址可能指向引发异常的指令,也可能指向下一条指令。
通常需要综合考虑:
  1. 是否存在有效的中断请求。
  2. 中断是否被屏蔽。
  3. 当前 CPU 状态是否允许响应。
  4. 中断优先级和当前处理状态是否满足要求。
中断响应与中断处理不是同一个概念。响应是 CPU 决定接受请求并转入处理流程,处理是执行具体的服务程序。
  • 中断通常异步,异常通常同步。
  • 中断可能来自外设,异常通常由当前指令执行引起。
  • 中断响应可能受屏蔽位和优先级影响。
  • 异常处理后不一定都能恢复执行原程序。
  • 流水线中发生异常时,处理器可能需要冲刷错误路径上的指令,并维护精确异常状态。

指令流水线

指令流水线把指令执行过程划分为多个阶段,让不同指令在不同阶段重叠执行。经典五段流水线为:IF→ID→EX→MEM→WBIF \rightarrow ID \rightarrow EX \rightarrow MEM \rightarrow WB例如,第一条指令在 ID 阶段时,第二条指令可以在 IF 阶段取指。如果没有冒险或资源冲突,多个阶段可以同时工作。
流水线的主要目标是提高指令吞吐率,而不是必然缩短单条指令的执行延迟。
设:
  • kk:流水段数;
  • nn:指令条数;
  • Δt\Delta t:每个流水段的时钟周期;
  • 忽略流水线寄存器开销、停顿和其他冒险。
流水线执行时间:T流水=(k+n−1)ΔtT_{\text{流水}}=(k+n-1)\Delta t非流水方式下,若每条指令都需要 kk 个等长阶段:T非流水=nkΔtT_{\text{非流水}}=nk\Delta t加速比:S=nkk+n−1S=\frac{nk}{k+n-1}流水线效率:E=nk+n−1E=\frac{n}{k+n-1}吞吐率:TP=n(k+n−1)ΔtTP=\frac{n}{(k+n-1)\Delta t}当指令数量足够大时,理想情况下:S→k,E→1S\rightarrow k,\qquad E\rightarrow1
假设五段流水线,每段耗时 2 ns2\text{ ns},执行 100 条指令,忽略一切额外开销。流水线执行时间:T流水=(5+100−1)×2=208 nsT_{\text{流水}}=(5+100-1)\times2=208\text{ ns}非流水执行时间:T非流水=100×5×2=1000 nsT_{\text{非流水}}=100\times5\times2=1000\text{ ns}加速比:S=1000208≈4.81S=\frac{1000}{208}\approx4.81流水线效率:E=100104≈96.15%E=\frac{100}{104}\approx96.15\%
结论:流水线段数为 5,并不意味着执行任意数量的指令都能获得 5 倍加速;指令数量较少时,流水线建立和排空的开销占比更大。
数据冒险:RAW、WAR、WAW
  • RAW(写后读):后续指令需要读取前一条指令产生的数据。
  • WAR(读后写):后续指令写入的位置与前一条指令要读取的位置相同。
  • WAW(写后写):两条指令写入同一目的位置,写入顺序可能产生冲突。
经典按序五段流水线中,RAW 是最常见的重点;WAR、WAW 在乱序执行等处理器设计中更需要关注。
  • 流水线时钟周期:通常由最慢的流水段及流水寄存器开销决定。
  • 流水线停顿:某阶段等待条件满足,导致后续指令暂时无法推进。
  • 流水线冲刷:丢弃错误路径或不应继续执行的指令。
  • 超标量:一个时钟周期可以启动多条指令。
  • 超流水线:将执行过程划分为更细的阶段,以提高工作频率为目标。
做题时一定要分清吞吐率、加速比、效率和单条指令延迟,不能把它们当作同一个指标。

多处理器的基本概念

多处理器系统利用多个处理器或处理核心协同完成任务,以提高系统的并行处理能力。需要区分:
  • 多核处理器:一个处理器芯片中集成多个核心。
  • 多处理器系统:系统中具有多个处理器,可以通过共享或互连结构协同工作。
  • 多线程:通过多个执行线程组织程序,并不意味着一定有多个物理处理器。
注意:SMP 与 UMA 经常一起出现,但两者强调的角度不同;NUMA 也可以支持共享地址空间。
多处理器的性能并不等于处理器数量乘以单处理器性能,原因包括:
  • 程序中存在不能并行执行的部分。
  • 处理器之间需要通信和同步。
  • 多个处理器可能竞争内存带宽或共享资源。
  • 缓存一致性与数据依赖可能带来额外开销。
如果题目涉及阿姆达尔定律,设程序中不可并行的比例为 ff,处理器数量为 pp,理想加速比为:S(p)=1f+1−fpS(p)=\frac{1}{f+\frac{1-f}{p}}当处理器数量趋于无穷大时:Smax⁡=1fS_{\max}=\frac{1}{f}即使增加大量处理器,只要程序中仍存在不可并行的部分,加速比就会受到限制。

本章高频考点与易错点

  1. 运算器和控制器的组成与区别。
  2. 用户可见与用户不可见寄存器的划分。
  3. PC、IR、MAR、MDR、PSW 的作用。
  4. IF、ID、EX、MEM、WB 的含义。
  5. LOAD、STORE、ADD、分支指令的执行过程分析。
  6. 组合逻辑与时序逻辑的区别。
  7. 单总线结构及微操作序列。
  8. 微程序控制器的组成、微指令格式与编码方式。
  9. 硬布线控制器与微程序控制器的区别。
  10. 异常与中断、断点与现场的区分,中断响应与处理流程。
  11. 流水线执行时间、加速比、效率和吞吐率的计算。
  12. 结构、数据、控制冒险及解决方法。
  13. SMP、UMA、NUMA、MPP 的区分。
  14. 并行加速比的限制。
  1. PC 与 IR:PC 存放指令地址,IR 存放指令内容。
  2. MAR 与 MDR:MAR 存放访存地址,MDR 存放访存数据。
  3. PC 的可见性:PC 常归为程序员可见的控制类寄存器,但具体口径依教材而定。
  4. 指令周期不等于时钟周期:一条指令可包含多个时钟周期,流水线下多条指令可以重叠。
  5. 数据通路周期数:要根据部件连接和控制信号判断,不能只凭运算表达式。
  6. 中断与异常:中断通常异步、来自外部;异常通常同步、由当前指令引起。
  7. 断点与返回地址:断点不一定等于当前 PC 的值。
  8. 流水线性能:分清吞吐率、加速比、效率和单条指令延迟。
  9. RAW / WAR / WAW:按序五段流水线重点考 RAW,WAR、WAW 多见于乱序执行。
  10. 多处理器加速比:受不可并行部分限制,Smax⁡=1/fS_{\max}=1/f。

考前自查

按下列清单逐项自测,未掌握的条目回到对应小节复习。
  • 掌握运算器和控制器的组成与区别。
  • 区分用户可见与用户不可见寄存器。
  • 掌握 PC、IR、MAR、MDR、PSW 的作用。
  • 掌握 IF、ID、EX、MEM、WB 的含义。
  • 能分析 LOAD、STORE、ADD、分支指令的执行过程。
  • 区分组合逻辑和时序逻辑。
  • 掌握单总线结构及微操作序列。
  • 掌握主要组成、微指令格式与编码方式。
  • 区分硬布线控制器和微程序控制器。
  • 区分异常与中断、断点与现场。
  • 掌握中断响应与处理流程。
  • 会计算执行时间、加速比、效率和吞吐率。
  • 掌握结构、数据、控制冒险。
  • 区分 SMP、UMA、NUMA、MPP。
  • 理解并行加速比的限制。
建议复习优先级:数据通路与微操作、流水线计算、寄存器与指令周期、微程序控制器、异常与中断、多处理器概念。前三项尤其适合结合王道课后题进行专项训练。
Last modified on October 21, 2026