1. CPU的核心功能与基本结构
CPU的基本功能是执行指令序列。从宏观上看,它不断地进行“取指令-分析指令-执行指令”的循环。这个过程依赖于其内部精密的组织结构。
1.1 CPU的核心组成
根据冯·诺依曼计算机体系结构,一个CPU主要由运算器和控制器两大部分组成。
- 运算器(Arithmetic Logic Unit, ALU):负责执行算术运算(如加、减、乘、除)和逻辑运算(如与、或、非、异或)。
- 控制器(Control Unit, CU) :是整个计算机的指挥中心,负责从主存中取出指令、进行译码,并根据指令要求,向其他部件发出控制信号,协调它们的工作。
- 寄存器组(Register File) :位于CPU内部,是速度极快的临时存储区域,用于暂存指令、数据和地址。
1.2 CPU的结构框图
一个典型的CPU结构可以由以下简化框图表示。图中展示了运算器、控制器和寄存器组如何通过CPU内部总线相互连接,并与外部系统总线(地址总线、数据总线、控制总线)进行交互。
+--------------------------------------------------------+
| 中央处理器 (CPU) |
| |
| +------------------+ +-------------------+ |
| | 控 制 器 (CU) |----->| 运 算 器 (ALU) | |
| | | | | |
| | - 指令寄存器(IR) | | - 累加器(ACC) | |
| | - 程序计数器(PC) |<---->| - 状态寄存器(PSW)| |
| | - 指令译码器 | | | |
| | - 时序控制逻辑 | +--------------------+ |
| +-------^----------+ ^ |
| | | |
| (控制信号) | |
| | | |
| v v |
| <----[ C P U 内 部 总 线 ]--------------------------> |
| ^ ^ |
| | | |
| +-------+-------------------------+------+ |
| | 寄 存 器 组 (Registers) | |
| | - 通用寄存器 (R0, R1, ...) | |
| | - 地址寄存器 (MAR) | |
| | - 数据寄存器 (MDR) | |
| +---------------------------------------+ |
+------------|--------------|-------------|------+
| | |
(地址总线) (数据总线) (控制总线)
| | |
v v v
+--------------------------------------+
| 主存储器 (Memory) |
+--------------------------------------+
- 图解说明:
- 控制器中的 程序计数器(PC) 存放下一条要执行指令的地址。
- 控制器根据PC的地址从内存取出指令,存放在 指令寄存器(IR) 中。
- 指令译码器分析IR中的指令,产生控制信号。
- 运算器(ALU) 在控制信号的作用下,对来自寄存器或内存的数据进行计算。
- 寄存器组为ALU提供操作数,并存储其运算结果。MAR(Memory Address Register)保存将要访问的内存地址,MDR(Memory Data Register)暂存与内存交换的数据。
2. CPU的关键子模块详解
2.1 运算器 (ALU)
运算器是CPU的数据处理核心。
- 功能:执行定点或浮点数的算术运算、逻辑运算以及移位、求补等操作 。
- 内部结构:一个基本的ALU通常包含以下部分:
- 加法器:实现加法运算的核心电路。
- 逻辑运算电路:实现与、或、非等逻辑运算。
- 移位器:实现数据的逻辑移位和算术移位。
- 状态/标志寄存器 (PSW - Program Status Word) :用于存放运算结果的状态信息,如 零标志(ZF) 、 负标志(NF) 、 进位标志(CF) 、 溢出标志(OF)。这些标志常用于条件判断和分支指令。
- 累加寄存器 (ACC) :一个特殊的寄存器,用于暂存一个操作数和中间结果。
2.2 控制器 (CU)
控制器是CPU的决策机构,其复杂性决定了CPU的特性。
- 功能:根据指令操作码和时序信号,生成一系列微操作控制命令,控制数据在CPU各部件之间以及CPU与主存、I/O设备之间的流动。
- 实现方式:控制器的实现方式是408考试的重点,主要分为两种:
- 硬布线控制器 (Hardwired Control):
- 原理:使用组合逻辑电路(如与门、或门、非门和触发器)直接产生控制信号。其逻辑是固化在硬件中的。
- 优点:速度快,因为控制信号是直接通过电路产生的。
- 缺点:设计复杂,一旦设计完成就难以修改或扩展指令集。
- 微程序控制器 (Micro-programmed Control):
- 原理:将每条机器指令解释为一段由多条微指令组成的微程序。这些微程序存储在控制器内部的一个高速只读存储器(控制存储器 Control Store, CS)中。执行一条机器指令就是执行一段对应的微程序 。
- 优点:设计规整,易于修改和扩展指令集(只需修改微程序),便于实现复杂的指令。
- 缺点:由于需要从控制存储器中读取微指令,速度相对较慢。
- 硬布线控制器 (Hardwired Control):
2.3 寄存器组 (Register File)
寄存器是CPU内集成度最高、速度最快的存储部件。
- 分类:
- 用户可见寄存器:程序员可以通过指令集直接访问。
- 通用寄存器 (GPRs) :如R0, R1, …,可用于存放操作数、地址或中间结果,使用灵活。
- 数据寄存器:专门存放操作数。
- 地址寄存器:专门存放地址,如段地址、栈指针(SP)、基址(BP)等。
- 控制和状态寄存器(用户不可见或受限访问):用于控制CPU的操作。
- PC (Program Counter) :程序计数器。
- IR (Instruction Register) :指令寄存器。
- MAR (Memory Address Register) :存储器地址寄存器。
- MDR (Memory Data Register) :存储器数据寄存器。
- PSW (Program Status Word) :程序状态字寄存器,包含ALU的状态标志。
- 用户可见寄存器:程序员可以通过指令集直接访问。
3. 指令执行周期与数据通路
3.1 指令周期 (Instruction Cycle)
CPU执行一条指令所需的全部时间称为一个指令周期。一个典型的指令周期可以分为以下几个阶段:
- 取指周期 (Fetch Cycle) :CPU根据PC中的地址,从主存中取出指令并存入IR,然后PC值加1,指向下一条指令。
- 译码周期 (Decode Cycle) :控制器对IR中的指令进行译码,分析其操作类型和操作数。
- 执行周期 (Execute Cycle) :根据指令类型,执行相应的操作。这可能包括CPU内部的数据传送、ALU运算或对内存/I/O的访问。
- 中断周期 (Interrupt Cycle) :在每条指令执行周期的末尾,CPU会检查是否有中断请求。若有,则暂停当前程序,转去执行中断服务程序。
3.2 数据通路 (Data Path)
数据通路是指数据在CPU内部各部件之间流动的路径。下面以一条加法指令 ADD R1, R2 (R1 ← R1 + R2) 为例,描述其数据通路:
-
取指阶段:
- (PC) -> MAR:PC的内容送到MAR。
- 1 -> R, M(MAR) -> MDR:控制器发出读命令,主存根据MAR的地址将指令读到MDR。
- (MDR) -> IR:MDR的内容送到IR。
- (PC) + 1 -> PC:PC内容加1。
-
译码阶段:
- Op(IR) -> CU:指令的操作码部分送到控制器进行译码。
-
执行阶段:
- Ad(R1) -> ALU:控制器发出信号,将R1的内容送至ALU的一个输入端。
- Ad(R2) -> ALU:控制器发出信号,将R2的内容送至ALU的另一个输入端。
- CU -> ALU (执行加法):控制器向ALU发出执行加法操作的命令。
- ALUout -> R1:ALU的运算结果写回到寄存器R1。
3.3 时序图 (Timing Diagram)
时序图描述了在一个指令周期内,各项微操作在不同时钟周期(T-state)的发生时间。例如,一个简单的取指周期可能包含以下时序:
- T1周期:PC的内容送至地址总线,PC -> MAR。
- T2周期:控制器发出读信号,等待内存响应。
- T3周期:内存将指令数据送到数据总线,M(MAR) -> MDR。
- T4周期:数据总线上的内容被打入指令寄存器,MDR -> IR,同时PC加1。
4. 提高性能的关键技术:指令流水线 (Instruction Pipelining)
指令流水线是现代CPU提高吞吐率的核心技术,它通过将一条指令的执行过程分解为多个阶段,并让不同指令的各个阶段重叠执行,从而实现并行处理。
4.1 流水线阶段
一个经典的五级RISC流水线通常包括以下阶段:
- IF (Instruction Fetch) :取指令。
- ID (Instruction Decode) :指令译码和读寄存器。
- EX (Execute) :执行运算或计算地址。
- MEM (Memory Access) :访问存储器。
- WB (Write Back) :将结果写回寄存器。
4.2 流水线时空图
时空图直观地展示了流水线的工作方式。假设有三条指令I1, I2, I3,在理想情况下:
时钟周期 -> 1 2 3 4 5 6 7
-----------------------------------------------
指令 I1: IF ID EX MEM WB
指令 I2: IF ID EX MEM WB
指令 I3: IF ID EX MEM WB
说明:在第3个时钟周期,I3在取指,I2在译码,而I1在执行。这种并行性极大地提高了CPU的指令吞吐率。
4.3 流水线冲突 (Hazards)
理想情况很少存在,流水线在执行中会遇到三种主要冲突 :
- 结构冲突 (Structural Hazard) :因硬件资源不足导致。例如,当CPU只有一个存储器端口时,MEM阶段和IF阶段的指令不能同时访问存储器。
- 解决方法:增加资源(如使用独立的指令缓存和数据缓存),或暂停流水线(插入气泡)。
- 数据冲突 (Data Hazard) :当后一条指令需要用到前一条指令的计算结果,而该结果尚未写回时发生。最常见的是 写后读(RAW) 冲突。
- 示例:
I1: ADD R1, R2, R3 // R1 <- R2 + R3
I2: SUB R4, R1, R5 // R4 <- R1 - R5
I2在ID阶段就需要读取R1,但此时I1的ADD操作还在EX阶段,结果尚未写入R1。
解决方法:
- 流水线暂停 (Stalling) / 插入气泡 (Bubble) :让I2在ID阶段等待,直到I1完成WB阶段。效率低。
- 数据前推 (Forwarding) / 旁路 (Bypassing) :这是最重要的解决技术。将I1在EX阶段计算出的结果,直接从EX/MEM流水线寄存器“转发”到I2的EX阶段的ALU输入端,而无需等待WB阶段。
- 控制冲突 (Control Hazard) :由分支、跳转等改变PC正常顺序的指令引起。当处理器遇到分支指令时,无法确定下一条指令的地址,直到分支条件被计算出来。
- 解决方法:
- 分支预测 (Branch Prediction) :预测分支是否会发生。如果预测正确,流水线继续流动;如果预测错误,则清空已进入流水线的错误指令,并从正确地址重新取指。
- 延迟槽 (Delay Slot) :在分支指令后插入一条或多条无论分支是否成功都会执行的指令,以填补流水线可能出现的空闲。
- 解决方法:
5. 提高性能的关键技术:存储层次结构 (Cache)
CPU的速度远超主存,为了弥补这个“存储墙”问题,CPU内部集成了高速缓存(Cache)。
- 原理:利用程序的局部性原理(时间和空间局部性),将主存中最近或最可能被访问的数据块复制到Cache中。当CPU需要数据时,首先在Cache中查找。
- 层次结构:现代CPU通常有多级缓存 :
- L1 Cache:紧邻CPU核心,速度最快,容量最小。通常分为指令缓存(I-Cache)和数据缓存(D-Cache)。
- L2 Cache:速度和容量介于L1和L3之间,为L1提供数据。
- L3 Cache:容量更大,速度更慢,由所有CPU核心共享。
6. 控制单元的实现:微程序控制
微程序控制是控制器部分的重难点。
6.1 微程序控制器的基本组成
一个微程序控制器主要包括:
- 控制存储器 (Control Store, CS) :一个ROM,用于存放所有机器指令对应的微程序。
- 微指令寄存器 (μIR / CMDR) :存放从CS中取出的当前微指令。
- 微地址寄存器 (μAR / CMAR) :存放下一条要读取的微指令在CS中的地址。
- 微地址形成部件 (Sequencer) :根据当前微指令的顺序控制字段、指令操作码或状态标志,来产生下一条微指令的地址。
6.2 微指令 (Micro-instruction)
微指令是微程序的基本单位,它包含两部分信息:
- 操作控制字段 (Operational Control Field) :包含一组二进制位,每一位(或一组位)对应一个微命令,用于控制数据通路中的一个微操作(如打开某个寄存器的输出门、向ALU发出加法命令等)。
- 顺序控制字段 (Sequencing Control Field) :用于指出下一条微指令的地址。例如,它可能包含下一条微指令的直接地址,或者提供判断条件来选择不同的后续微指令。
6.3 微指令的编码方式(格式)
- 水平型微指令:一条微指令能定义多个可并行执行的微操作。其指令字长,但并行性好,微程序短。
- 优点:执行速度快,充分利用硬件并行性。
- 缺点:微指令长,控制存储器容量大。
- 垂直型微指令:类似机器指令,采用类似操作码的字段来规定微操作。
- 优点:微指令短,节省控制存储器空间。
- 缺点:并行性差,执行速度慢(因为需要译码)。
6.4 工作流程
- 取指:CPU从主存中取出一条机器指令。
- 地址映射:机器指令的操作码通过一个映射逻辑(如ROM)转换成该指令对应微程序的入口地址,并送入微地址寄存器(μAR)。
- 取微指令:根据μAR的地址,从控制存储器(CS)中取出第一条微指令,送入微指令寄存器(μIR)。
- 译码与执行:μIR中的操作控制字段产生控制信号,送往数据通路执行相应的微操作。
- 形成后继地址:同时,μIR中的顺序控制字段经过微地址形成部件,产生下一条微指令的地址,送回μAR。
- 循环:重复步骤3-5,直到该微程序执行完毕(遇到结束标志),一条机器指令的执行周期结束。
1347

被折叠的 条评论
为什么被折叠?



