【复习408】CPU的核心功能与基本结构

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)中。执行一条机器指令就是执行一段对应的微程序 。
      • 优点:设计规整,易于修改和扩展指令集(只需修改微程序),便于实现复杂的指令。
      • 缺点:由于需要从控制存储器中读取微指令,速度相对较慢。

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执行一条指令所需的全部时间称为一个指令周期。一个典型的指令周期可以分为以下几个阶段:

  1. 取指周期 (Fetch Cycle) :CPU根据PC中的地址,从主存中取出指令并存入IR,然后PC值加1,指向下一条指令。
  2. 译码周期 (Decode Cycle) :控制器对IR中的指令进行译码,分析其操作类型和操作数。
  3. 执行周期 (Execute Cycle) :根据指令类型,执行相应的操作。这可能包括CPU内部的数据传送、ALU运算或对内存/I/O的访问。
  4. 中断周期 (Interrupt Cycle) :在每条指令执行周期的末尾,CPU会检查是否有中断请求。若有,则暂停当前程序,转去执行中断服务程序。

3.2 数据通路 (Data Path)

数据通路是指数据在CPU内部各部件之间流动的路径。下面以一条加法指令 ADD R1, R2 (R1 ← R1 + R2) 为例,描述其数据通路:

  • 取指阶段

    1. (PC) -> MAR:PC的内容送到MAR。
    2. 1 -> R, M(MAR) -> MDR:控制器发出读命令,主存根据MAR的地址将指令读到MDR。
    3. (MDR) -> IR:MDR的内容送到IR。
    4. (PC) + 1 -> PC:PC内容加1。
  • 译码阶段

    1. Op(IR) -> CU:指令的操作码部分送到控制器进行译码。
  • 执行阶段

    1. Ad(R1) -> ALU:控制器发出信号,将R1的内容送至ALU的一个输入端。
    2. Ad(R2) -> ALU:控制器发出信号,将R2的内容送至ALU的另一个输入端。
    3. CU -> ALU (执行加法):控制器向ALU发出执行加法操作的命令。
    4. 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流水线通常包括以下阶段:

  1. IF (Instruction Fetch) :取指令。
  2. ID (Instruction Decode) :指令译码和读寄存器。
  3. EX (Execute) :执行运算或计算地址。
  4. MEM (Memory Access) :访问存储器。
  5. 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)

理想情况很少存在,流水线在执行中会遇到三种主要冲突 :

  1. 结构冲突 (Structural Hazard) :因硬件资源不足导致。例如,当CPU只有一个存储器端口时,MEM阶段和IF阶段的指令不能同时访问存储器。
    • 解决方法:增加资源(如使用独立的指令缓存和数据缓存),或暂停流水线(插入气泡)。
  2. 数据冲突 (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阶段。
  1. 控制冲突 (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)

微指令是微程序的基本单位,它包含两部分信息:

  1. 操作控制字段 (Operational Control Field) :包含一组二进制位,每一位(或一组位)对应一个微命令,用于控制数据通路中的一个微操作(如打开某个寄存器的输出门、向ALU发出加法命令等)。
  2. 顺序控制字段 (Sequencing Control Field) :用于指出下一条微指令的地址。例如,它可能包含下一条微指令的直接地址,或者提供判断条件来选择不同的后续微指令。

6.3 微指令的编码方式(格式)‍

  • 水平型微指令:一条微指令能定义多个可并行执行的微操作。其指令字长,但并行性好,微程序短。
    • 优点:执行速度快,充分利用硬件并行性。
    • 缺点:微指令长,控制存储器容量大。
  • 垂直型微指令:类似机器指令,采用类似操作码的字段来规定微操作。
    • 优点:微指令短,节省控制存储器空间。
    • 缺点:并行性差,执行速度慢(因为需要译码)。

6.4 工作流程

  1. 取指:CPU从主存中取出一条机器指令。
  2. 地址映射:机器指令的操作码通过一个映射逻辑(如ROM)转换成该指令对应微程序的入口地址,并送入微地址寄存器(μAR)。
  3. 取微指令:根据μAR的地址,从控制存储器(CS)中取出第一条微指令,送入微指令寄存器(μIR)。
  4. 译码与执行:μIR中的操作控制字段产生控制信号,送往数据通路执行相应的微操作。
  5. 形成后继地址:同时,μIR中的顺序控制字段经过微地址形成部件,产生下一条微指令的地址,送回μAR。
  6. 循环:重复步骤3-5,直到该微程序执行完毕(遇到结束标志),一条机器指令的执行周期结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L.EscaRC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值