第五章 中央处理器(CPU)知识体系与考法总结
第五章“中央处理器”是计算机组成原理课程中内容最多、难度最大、也是考试分值最高的章节。它将前面章节的知识(如数据表示、运算器)与后续章节(如存储、总线)联系起来,是整个课程的核心枢纽。
下面,我将为您详细梳理本章的知识体系、常见考法,并结合您提供的例题进行分析,最后给出刻意练习的建议。
第五章 中央处理器(CPU)知识体系与考法总结
本章内容可以划分为七大核心模块:CPU基本结构、指令执行过程、数据通路、控制器设计、异常与中断、指令流水线 和 多处理器。
模块一:CPU的功能和基本结构 (5.1)
-
核心知识点:
- CPU的构成: CPU = 运算器 + 控制器。必须清楚哪些部件属于运算器(ALU、累加器、通用寄存器GPRs、程序状态字寄存器PSW),哪些属于控制器(程序计数器PC、指令寄存器IR、指令译码器ID、时序控制电路)。
- 关键寄存器功能:
- PC (Program Counter): 存放下一条要执行指令的地址。
- IR (Instruction Register): 存放当前正在执行的指令。
- MAR (Memory Address Register): 存放将要访问的主存单元的地址。
- MDR (Memory Data Register): 暂存从主存读出或要写入主存的数据。
- PSW (Program Status Word): 存放运算状态(零、进位、溢出等)和控制标志(中断允许等)。
- 用户可见性: 区分哪些寄存器对程序员可见(可编程访问,如PC、GPRs、PSW),哪些是透明的(硬件自动使用,如IR、MAR、MDR)。
- CPU位数定义: “n位CPU”中的n,通常指数据总线的宽度、ALU一次能处理的数据宽度、通用寄存器的宽度。
-
常见考法:
- 归属判断: 直接提问某个部件(如PSW、PC)属于控制器还是运算器。
- 功能匹配: 给出功能描述,选择对应的寄存器。
- 概念辨析: 考察“用户透明”的概念,或CPU位数的定义。
-
例题梳理:
- 例题01(5.1节): “下列部件不属于控制器的是(C. 程序状态字寄存器)”。这是典型的归属判断题。考点在于PSW是反映运算结果状态的,因此归属于运算器。
- 例题04(5.1节): “跟踪后继指令地址的寄存器是(B. 程序计数器)”。这是功能匹配题,直接考察PC的核心定义。
- 例题07(5.1节): “对用户是透明的(C. 指令寄存器)”。这是可见性辨析题。考点在于IR的操作是硬件全自动的,程序员无法通过指令干预。
-
刻意练习建议:
- 制作寄存器功能卡片: 为PC, IR, MAR, MDR, PSW, GPRs制作卡片,正面写名称,背面写其功能、归属(CU/ALU)和可见性。反复进行自我抽查。
- 画简易CPU结构图: 亲手画出控制器、运算器、MAR、MDR与主存、总线之间的连接关系图,并标注数据流向(如取指令时PC->MAR->…),加深对整体工作流程的理解。
模块二:指令执行过程 (5.2 & 部分5.4)
-
核心知识点:
- 时间周期层次: 时钟周期 < 机器周期 ≤ 存取/总线周期 < 指令周期。
- 指令周期: 完成一条指令的全部时间,包含取指、间址(如有)、执行、中断(如有)等子周期。
- 区分指令与数据: CPU在取指周期从内存取出的视为“指令”,在执行周期根据指令去内存取出的视为“数据”。区分的依据是“指令周期的不同阶段”。
- PC值的变化: 在取指后,PC自动加指令长度;在执行跳转指令时,PC被修改为目标地址。
-
常见考法:
- 概念定义: 直接提问各周期的定义或大小关系。
- 流程分析: 分析在某个周期(如间址周期)结束后,特定寄存器(如MDR)中的内容是什么。
- 过程计算: 计算一条跳转指令在一个指令周期内PC被修改的次数。
-
例题梳理:
- 例题01(5.2节): “计算机工作的最小时间周期是(A. 时钟周期)”。这是层次关系题。
- 例题04(5.2节): “无条件跳转指令…PC的值被修改了(B. 2)次”。这是过程计算题,考查对取指后PC自动增加和执行时PC被赋值两个动作的理解。
- 例题14(5.2节,2009真题): “CPU区分指令和数据的依据是(C. 指令周期的不同阶段)”。这是核心原理题。
-
刻意练习建议:
- 流程默写: 默写取指周期、间址周期的微操作序列(如
PC->MAR
,1->R
,M(MAR)->MDR
, …)。 - 情景推演: 假设一条带间接寻址的
LOAD
指令,逐步推演从取指开始到数据加载到累加器的全过程,并记录每个阶段PC、MAR、MDR、IR的变化。
- 流程默写: 默写取指周期、间址周期的微操作序列(如
模块三:数据通路 (5.3)
-
核心知识点:
- 数据通路构成: 由操作元件(组合逻辑,如ALU, MUX)和状态元件(时序逻辑,有记忆功能,如寄存器)组成。
- 总线结构: CPU内部部件的连接方式。主要是单总线结构和多总线/专用通路结构。
- 单总线特点: 结构简单,但冲突多,性能低。ALU的两个输入不能同时来自总线,必须有一个暂存器。
- 总线共享器件: 三态门是实现多个部件分时共享总线的关键。
-
常见考法:
- 元件分类: 给出一系列部件,判断哪些是操作元件,哪些是状态元件。
- 结构辨析: 考察单总线结构的局限性。
-
例题梳理:
- 例题03(5.3节): “下列部件中属于状态元件的是(C. III、IV)”。这是元件分类题。关键在于判断部件有无“记忆”功能。
- 例题04(5.3节): “关于采用单总线方式的CPU…正确的是(D)”。这是结构辨析题,考察了ALU在单总线下的连接方式,这是单总线结构最经典的考点。
-
刻意练习建议:
- 画通路图并连线: 在一个包含PC、MAR、MDR、IR、GPRs、ALU的CPU框图中,尝试用单总线连接它们,并思考完成
ADD R1, (R2)
这样的指令需要哪些暂存器(如Y, Z)和控制信号。
- 画通路图并连线: 在一个包含PC、MAR、MDR、IR、GPRs、ALU的CPU框图中,尝试用单总线连接它们,并思考完成
模块四:控制器设计 (5.4)
-
核心知识点:
- 两大类型: 硬布线控制器和微程序控制器。
- 硬布线控制器: 纯组合逻辑电路实现,速度快,但设计复杂、不易修改。
- 微程序控制器: 用存储逻辑(控存+微程序)实现,速度慢,但设计规整、灵活、易于修改和扩展。
- 微程序术语: 机器指令↔微程序,微程序由微指令构成,微指令包含微命令,微命令控制微操作。
- 地址形成: 机器指令的操作码通过映射逻辑形成微程序入口地址。后续微指令地址由微指令的下地址字段或µPC产生。
- 微指令编码: 水平型(并行度高、长)、垂直型(并行度低、短、有微操作码)、字段编码法(二者折中)。
-
常见考法:
- 对比辨析: 比较两种控制器的优缺点及适用场景。
- 原理提问: 提问微程序入口地址的来源,或机器指令与微指令的关系。
- 术语区分: 辨析微命令、微操作、微指令、微程序。
- 编码计算: 计算字段编码方式下操作控制字段的位数。
-
例题梳理:
- 例题09(5.4节): “实时性要求高 vs 灵活性好”。这是典型的应用场景匹配题,实时性→速度快→硬布线;灵活性→易修改→微程序。
- 例题11(5.4节): “机器指令与微指令的关系是(B)”。这是核心原理题,考查“解释执行”的一对多关系。
- 例题22(5.4节,2012真题): “共有33个微命令,构成5个互斥类…则…字段至少有(15)位”。这是字段编码的计算题。
-
刻意练习建议:
- 制作对比表: 详细列出硬布线和微程序在速度、灵活性、设计难度、应用场景上的对比。
- 画微程序控制器框图: 亲手画出包含控存(CS)、µPC、µIR、地址映射逻辑的结构图,并理解其工作流程。
- 编码练习: 自己出题,比如“40个微命令,分6组,每组…”,反复练习计算字段编码的位数。
模块五:异常与中断 (5.5)
-
核心知识点:
- 概念区分:
- 中断(Interrupt): 来自CPU外部,与当前指令无关,是异步的。如:I/O完成、时钟中断。
- 异常(Exception): 来自CPU内部,由当前指令引起,是同步的。
- 异常分类:
- 故障(Fault): 可修复的错误,返回点是当前指令。例:缺页、溢出。
- 陷阱(Trap): 有意安排的指令,用于系统调用,返回点是下一条指令。例:访管指令。
- 终止(Abort): 严重的、不可恢复的硬件错误。
- 响应时间: 异常在指令执行中响应;中断在一条指令执行结束后响应。
- 响应过程: 主要由硬件(中断隐指令) 完成,包括保存断点(PC)和状态(PSW),关中断,并转向处理程序。
- 软硬件分界: Cache缺失由硬件处理,对OS透明;缺页故障由OS(异常处理程序) 处理。
- 概念区分:
-
常见考法:
- 事件分类: 给出一个事件(如缺页、除零、DMA结束),判断其属于中断还是异常的哪一类。
- 断点(返回地址)判断: 提问不同类型的异常/中断处理完成后返回到哪里。
- 响应过程辨析: 考察中断响应的硬件/软件分工和具体步骤。
-
例题梳理:
- 例题01(5.5节): “关于‘自陷’…错误的是(C)”。考察陷阱是“有意”而非“异常情况”的本质。
- 例题05(5.5节): “无须异常处理程序进行处理的是(B. Cache缺失)”。这是经典的软硬件分界题。
- 例题09(5.5节): “关于‘断点’的说法中,错误的是(C)”。这是断点判断的集大成题,需要清晰区分各类事件的返回地址。
-
刻意练习建议:
- 制作事件分类表: 列出常见事件(缺页、除零、访管、I/O完成、时钟、Cache缺失、地址越界),填写其类别(中断/故障/陷阱)、同步/异步、断点位置、处理方式(硬件/软件)。这是本节的考点精华。
模块六:指令流水线 (5.6)
-
核心知识点:
- 基本概念: 时间并行技术,通过将指令执行过程分段重叠来提高吞吐率。
- 性能指标:
- 执行时间:
T = (k + n - 1) * Δt
(k段流水,n条指令,时钟周期Δt)。非均匀流水线Δt取最长段。 - 吞吐率(TP):
TP = n / T
,稳定时约等于时钟频率。 - 加速比(S):
S = T_非流水 / T_流水
。
- 执行时间:
- 流水线冒险(Hazard):
- 结构冒险: 硬件资源冲突。解决方法:分离I/D Cache、增加部件。
- 数据冒险: 后续指令需要用到前序指令尚未准备好的结果(RAW最常见)。解决方法:转发/旁路(硬件)、阻塞/插入气泡(硬件)、编译器优化(软件)。
- 控制冒险: 分支指令导致后续取指路径不确定。解决方法:分支预测(软/硬件)、延迟槽、阻塞。
- 关键问题: load-use冒险即使有转发也通常需要阻塞1个周期。
-
常见考法:
- 性能计算: 计算执行时间、吞吐率、加速比。
- 冒险识别: 给出一段代码,识别存在哪种冒险。
- 解决方案匹配: 将冒险类型与对应的解决方案进行匹配。
- 综合分析: 给出一段代码,结合转发等技术,判断需要阻塞多少个周期。
-
例题梳理:
- 例题03(5.6节): “连续执行12条指令,共需(B. 14Δt)”。这是基础的流水线时间计算。
- 例题13(5.6节): 分析指令序列,结合转发技术,判断因load-use冒险需要加入(D. 1)条空操作。这是高频的综合分析题。
- 例题24(5.6节,2014真题): “采用指令Cache与数据Cache分离的主要目的是(D. 减少…资源冲突)”。这是解决方案匹配题,考察了分离Cache解决结构冒险的原理。
-
刻意练习建议:
- 大量计算练习: 反复练习各种条件下的流水线性能计算题。
- 画时空图: 对于给出的2-3条指令序列,亲手画出其在5段流水线中的时空图,在图上标注数据依赖关系,并模拟转发路径和必要的阻塞。这是掌握冒险分析的最有效方法。
模块七:多处理器 (5.7)
-
核心知识点:
- Flynn分类法: SISD, SIMD, MISD, MIMD,以及典型例子(阵列处理机→SIMD,多核→MIMD)。
- 多核 vs 超线程:
- 多核: 多个物理核心,空间并行,资源独立。
- 超线程: 一个物理核模拟多个逻辑核心,共享执行资源,仅架构状态独立。
- 多处理器架构:
- UMA(统一内存访问): 共享总线,访问任何内存延迟相同,扩展性差。
- NUMA(非统一内存访问): 分布式内存,访问本地内存快,远程内存慢,扩展性好。
- Cache一致性: 共享内存多处理器中,必须解决多个私有Cache中数据副本不一致的问题。
-
常见考法:
- 分类匹配: 将具体架构(如阵列机、多核CPU)归入Flynn分类。
- 概念对比: 辨析多核与超线程、UMA与NUMA的异同。
-
例题梳理:
- 例题01(5.7节): “多处理机属于(D. MIMD)”。这是Flynn分类的基础题。
- 例题05(5.7节): “关于超线程(HT)技术的描述中,正确的是(C)”。该题深入考察了超线程技术的实现细节,特别是资源共享和对系统支持的依赖。
-
刻意练习建议:
- 制作技术对比表: 详细对比多核与超线程、UMA与NUMA在物理实现、资源使用、性能特点、扩展性上的区别。
- 找实例: 了解一下自己电脑CPU的参数(如“4核8线程”),并解释其含义,将理论与实际联系起来。