1、学习目标

CPU 子系统解释一条指令如何被取出、译码、执行并写回结果。本章是组成原理的中轴:数据表示告诉 CPU 算什么,存储系统告诉 CPU 从哪里取,I/O 告诉 CPU 如何和外设协作。

模块 要掌握的内容
CPU 结构 数据通路、控制器、寄存器、ALU
指令系统 指令格式、操作码、地址码、CISC/RISC
寻址方式 立即、直接、间接、寄存器、基址、变址、相对
运算器 加法器、进位逻辑、ALU 组织
处理器设计 MIPS32 单周期数据通路和控制信号
性能提升 流水线、超标量、SMT、多核

2、CPU 基本结构

CPU 的核心部件:

部件 功能
PC 保存下一条指令地址
IR 保存当前指令
寄存器组 保存操作数、地址和中间结果
ALU 执行算术逻辑运算
控制器 根据指令产生控制信号
数据通路 连接各部件的数据流路径

指令执行基本流程:

1
取指 -> 译码 -> 取数 -> 执行 -> 访存 -> 写回 -> 更新 PC

不同指令不一定都需要所有阶段,比如纯寄存器加法不需要数据访存。

3、指令系统

指令由操作码和地址码组成:

1
opcode + operand/address fields
字段 含义
操作码 做什么操作,如加、减、转移、访存
地址码 操作数在哪里,或结果写到哪里

指令系统设计影响:

  1. 编译器如何生成代码。
  2. CPU 数据通路复杂度。
  3. 程序代码长度。
  4. 执行速度和能耗。

4、CISC 与 RISC

类型 特点
CISC 指令复杂、寻址方式多、单条指令功能强
RISC 指令规整、格式简单、load/store 结构、便于流水线

RISC 的典型思想:

1
只有 load/store 访问内存,运算主要在寄存器之间进行。

MIPS、RISC-V 都属于 RISC 思路。

5、寻址方式

寻址方式 有效地址或操作数
立即寻址 指令字段本身就是操作数
直接寻址 指令字段给出内存地址
间接寻址 指令字段指向的内存单元中保存地址
寄存器寻址 操作数在寄存器中
寄存器间接 寄存器中保存内存地址
基址寻址 基址寄存器 + 偏移
变址寻址 变址寄存器 + 偏移
相对寻址 PC + 偏移

相对寻址常用于分支跳转,基址/变址适合数组和结构体访问。

6、运算部件与 ALU

ALU 常支持:

  1. 加法、减法。
  2. 与、或、非、异或。
  3. 移位。
  4. 比较。
  5. 标志位生成。

加法器是运算器基础。串行进位简单但慢,并行进位和分组进位能提升速度。

溢出、零、符号、进位等标志位会影响条件转移指令。

7、单周期处理器

单周期处理器中,一条指令在一个时钟周期内完成。

典型数据通路包括:

1
PC -> 指令存储器 -> 寄存器堆 -> ALU -> 数据存储器 -> 写回

控制器根据操作码产生:

控制信号 作用
RegWrite 是否写寄存器
MemRead 是否读内存
MemWrite 是否写内存
MemToReg 写回数据来自内存还是 ALU
ALUSrc ALU 第二操作数来自寄存器还是立即数
Branch 是否分支
PCSrc 下一条 PC 来源

单周期设计直观,但周期必须按最慢指令设置,因此性能不高。

8、指令时间特性

单周期 CPU:

1
时钟周期 >= 最慢指令执行时间

多周期 CPU:

1
不同指令可用不同数量周期,复用硬件部件。

流水线 CPU:

1
把一条指令拆成多个阶段,多条指令重叠执行。

9、流水线

经典五级流水:

阶段 含义
IF 取指
ID 译码/读寄存器
EX 执行/地址计算
MEM 访存
WB 写回

流水线提高吞吐率,但不一定减少单条指令延迟。

冒险:

冒险 说明 常见处理
结构冒险 硬件资源冲突 增加资源、暂停
数据冒险 后指令依赖前指令结果 转发、暂停
控制冒险 分支导致下一条指令不确定 分支预测、延迟槽、清空

10、高级性能技术

技术 作用
超流水 进一步细分流水阶段
超标量 一个周期发射多条指令
乱序执行 不按程序顺序执行独立指令
SMT 同一核心同时执行多个线程
多核 多个处理核心并行工作

这些技术本质都在提高并行性,但会带来控制、同步、缓存一致性等复杂问题。

11、易错点

易错点 修正
单周期以为一条指令很快 单周期周期长,按最慢指令定
流水线减少单条指令延迟 流水线主要提高吞吐率
RISC 以为指令一定更少 RISC 指令简单,程序指令数可能更多
寻址方式和地址内容混淆 有效地址和操作数要分清
控制信号死记 结合数据通路理解它控制哪个选择器或写使能

12、复盘清单

检查项 状态
能画出指令执行基本流程 待复盘
能区分 CISC 和 RISC 待复盘
能判断常见寻址方式 待复盘
能解释 ALU 和标志位作用 待复盘
能说出单周期 MIPS 数据通路主线 待复盘
能区分三类流水线冒险 待复盘