第6章 中央处理器
CPU 是控制计算机自动完成取出指令和执行指令任务的部件,是计算机的核心,由数据通路和控制器两部分组成。
6.1 CPU 的功能和组成
CPU 的主要功能
- 取指令:从存储器中取出指令
- 译码:分析指令的操作码和地址码
- 执行:控制数据通路完成运算
- 中断处理:响应外部中断
CPU 的基本组成
CPU
├── 数据通路(Data Path)
│ ├── 通用寄存器
│ ├── 专用寄存器(PC、IR、MAR、MDR、PSW)
│ ├── 算术逻辑单元(ALU)
│ └── 数据总线
└── 控制器(Controller)
├── 指令部件
├── 时序部件
├── 微操作信号发生器(CU)
└── 中断控制逻辑
6.2 CPU 中寄存器的设置
通用寄存器
- 程序员可见,用于暂存数据或地址
- 数量因 ISA 而异(RISC 通常较多)
专用寄存器
| 寄存器 | 功能 |
|---|---|
| PC(程序计数器) | 存放下一条指令的地址 |
| IR(指令寄存器) | 存放当前正在执行的指令 |
| MAR(存储器地址寄存器) | 存放访问主存的地址 |
| MDR(存储器数据寄存器) | 存放从主存读出或写入的数据 |
| PSW(程序状态字) | 存放标志位(溢出、进位、零等) |
6.3 控制器的组成和功能
控制器的功能
| 功能 | 说明 |
|---|---|
| 指令控制功能 | 完成取指令、分析指令和执行指令的操作 |
| 时序控制功能 | 产生时序信号,保证各部件有节奏地工作 |
| 操作控制功能 | 产生微操作控制信号 |
控制器的基本组成
控制器
├── 指令部件
│ ├── 程序计数器(PC)
│ ├── 指令寄存器(IR)
│ ├── 指令译码器(ID)
│ └── 地址形成部件
├── 时序部件
│ ├── 脉冲源:产生基准时钟脉冲信号
│ ├── 启停控制逻辑:可靠地开放或封锁脉冲,保证首尾脉冲完整
│ └── 节拍信号发生器(脉冲分配器):产生各机器周期中的节拍信号
├── 微操作信号发生器(CU):产生微操作控制信号
└── 中断控制逻辑:控制中断处理的硬件逻辑
控制单元的输入输出
输入:时序信号 + 指令操作码译码信号 + 各部件状态反馈信号
输出:CPU 内部控制信号 + 送至主存/外设的控制信号
控制器的硬件实现方法
| 实现方法 | 特点 |
|---|---|
| 组合逻辑型(硬布线) | 门电路 + 触发器构成的树形网络,速度快,设计复杂 |
| 存储逻辑型(微程序) | 微指令存于控制存储器,可编程,灵活 |
| 组合逻辑和存储逻辑结合型 | 两者结合 |
6.4 时序系统
时序层次
| 层次 | 定义 | 持续时间 |
|---|---|---|
| 指令周期 | 从取指令到执行完该指令所需的全部时间 | 若干机器周期 |
| 机器周期(CPU 周期) | CPU 完成一个基本操作的时间 | 若干时钟周期 |
| 时钟周期 | 主频的倒数,CPU 中最小的时间元素 | 固定 |
- 每个机器周期都有一个对应的周期状态触发器
- 通常以主存的工作周期(存取周期)为基础来规定 CPU 周期
- CPU 访问主存也是一次总线传送,因此也称为总线周期
节拍和工作脉冲
| 时序信号 | 作用 | 说明 |
|---|---|---|
| 节拍电位 | 信息的载体,在数据通路中起开关作用 | 一个机器周期分为若干相等时间段 |
| 工作脉冲 | 打入脉冲,起到定时触发的作用 | 将稳定结果打入寄存器 |
节拍电位和工作脉冲的配合:节拍电位是控制信号,工作脉冲是定时触发信号。
多级时序系统
- 小型计算机常用:指令周期 → 机器周期 → 节拍 → 工作脉冲(三级)
- 微型计算机常用:指令周期 → 机器周期 → 时钟周期
在只设置机器周期和时钟周期的微型机中,时钟周期既可作电位信号,其前沿/后沿又可作脉冲触发信号。
6.5 控制方式
三种控制方式
| 控制方式 | 特点 | 优点 | 缺点 |
|---|---|---|---|
| 同步控制(固定时序) | 统一时序信号控制,统一节拍数 | 设计简单,易于实现 | 有较多空闲时间浪费 |
| 异步控制(可变时序) | 不采用统一时序,完成即发回答信号 | 无时间浪费,效率高 | 控制较复杂 |
| 联合控制 | 大部分同步,小部分特殊指令异步 | 折中 | — |
同步控制的特点:
- 以微操作序列最长的指令为标准确定节拍数
- 控制器产生统一的、顺序固定的、周而复始的节拍
- 简单指令可空着部分节拍不用
异步控制的特点:
- 每条指令需要多少节拍就产生多少节拍
- 指令执行完毕发出回答信号
- 控制器收到回答信号即开始执行下条指令
6.6 指令周期
方框图语言
采用方框图语言表示一条指令的指令周期:
| 符号 | 含义 |
|---|---|
| □(方框) | 一个 CPU 周期,框内表示数据通路操作 |
| ◇(菱形) | 判别/测试,不单独占用 CPU 周期 |
| ~(公操作符号) | 公操作(如中断查询) |
信息传送路径
指令: M → MDR → DBUS → IR
地址: PC → ABUS → MAR → (取决于寻址方式)
数据: 寄存器↔寄存器:总线直接传送
寄存器↔存储器:Ri → DBUS → MDR → M(写)
M → MDR → BUS → Ri(读)
双总线结构数据通路示例
数据通路结构:CPU 内部有 A 总线和 B 总线,控制信号 G 控制门电路。
ADD R2, R0 — (R0)+(R2)→ R0
PC → AR (PC0, G, ARi)
M → DR (R/W=R)
DR → IR (DR0, G, IRi)
R2 → Y (R2o, G, Yi)
R0 → X (R0o, G, Xi)
R0 + R2 → R0 (+, G, R0i)
~ (公操作)
SUB R1, R3 — (R3)-(R1)→ R3
PC → AR (PC0, G, ARi)
M → DR (R/W=R)
DR → IR (DR0, G, IRi)
R3 → Y (R3o, G, Yi)
R1 → X (R1o, G, Xi)
R3 - R1 → R3 (-, G, R3i)
~ (公操作)
6.7 微程序控制器
基本思想
将微操作控制信号按一定规则进行信息编码(代码化)形成控制字(微指令),一条机器指令对应一段微程序,存放在控制存储器中。
基本概念
| 概念 | 定义 |
|---|---|
| 微命令 | 控制部件向执行部件发出的最小控制命令 |
| 微操作 | 执行部件接受微命令后进行的操作 |
| 微指令 | 一个 CPU 周期中一组微命令的组合 |
| 微程序 | 微指令序列,一条机器指令对应一段微程序 |
| 控制存储器 | 存放微程序的高速存储器(简称控存) |
| 微地址 | 控制存储器单元的地址 |
机器指令与微指令的关系
| 对比 | 主存储器 | 控制存储器 |
|---|---|---|
| 存储内容 | 机器指令和数据 | 微指令(微程序) |
| 地址来源 | PC → MAR | 微地址寄存器 μAR |
| 数据去向 | MDR → IR | 微指令寄存器 μIR |
微程序控制器的工作过程
1. 从控存取"取机器指令"微程序(公用,通常放 0 号单元)
2. 完成从主存读取机器指令送往 IR
3. 机器指令操作码通过微地址形成部件产生对应微程序入口地址
4. 逐条取出微指令,执行微操作
5. 执行完对应微程序后,返回到取指微程序入口
微指令的编制方法举例
十进制加法指令(BCD 码加法,加 6 修正):
微程序流程图:
取指微程序 → R1+R2 → R2 → R2+R3 → R2 → 判断 Cy → Cy≠0 结束 / Cy=0 减 6
微地址的形成
微程序入口地址的确定
| 方式 | 说明 |
|---|---|
| 一级功能转移 | 操作码位数和位置固定,直接映射到微地址 |
| 多级功能转移 | 操作码位数和位置不固定时,先按类型转移,再按操作码细分 |
| PLA/PROM 方式 | 操作码位数和位置都不固定时,用 PLA 或 PROM 翻译 |
后继微地址的产生
| 方式 | 说明 | 特点 |
|---|---|---|
| 计数器方式(增量方式) | 设置 μPC,顺序执行时 μPC+1,转移时由微指令给出 | 微指令字较短,速度低,不易实现多路转移 |
| 断定方式(下址字段法) | 微指令中设顺序控制字段,直接指定后继微地址 | 速度高,灵活性强 |
计数器方式中微指令格式:
微操作控制字段 | BAF(转移地址字段) | BCF(转移控制字段)
BCF 编码示例:
| BCF | 含义 |
|---|---|
| 000 | 顺序执行(μPC+1) |
| 001 | 由操作码产生微地址 |
| 010 | 无条件转移(BAF → μPC) |
| 011 | 条件转移(由测试结果确定) |
| 100 | 测试循环 |
| 101 | 转微子程序 |
| 110 | 返回 |
微指令编码方式
| 编码方式 | 说明 | 并行度 | 字长 |
|---|---|---|---|
| 直接控制 | 1 位控制 1 个微操作 | 高 | 长 |
| 字段直接编码 | 分字段,每个字段编码控制一组互斥微操作 | 中 | 较短 |
| 字段间接编码 | 字段间有依赖关系,一个字段的译码受另一字段影响 | 中 | 更短 |
6.8 硬布线控制器(组合逻辑控制器)
基本思想
把控制部件看作产生固定时序控制信号的组合逻辑电路,由门电路和触发器构成树形网络。
控制信号 = f(操作码, 时序节拍, 状态标志)
模型机数据通路
全机采用中线结构,分为内部单总线和存储器总线(系统总线):
- ALU(算术逻辑部件)
- 通用寄存器组 R0~R3
- Y(ALU 输入端寄存器)
- Z(ALU 输出寄存器)
- MAR、MDR、IR、PC
设计方法
1. 绘制指令流程图
→ 按指令类型分类,将每条指令归纳为微操作序列
2. 列出微操作时间表
→ 将微操作序列安排在对应机器周期的节拍和脉冲中
3. 微操作的逻辑综合
→ 以每个微操作为单位进行"同类项合并"
→ 用逻辑关系式综合,简化
微操作逻辑表达式示例
PCOUT = T0
MARIN = T0 + T3·JZ
READ = T0 + T3·(STR + JZ)
MDROUT = T1 + T4·(ADD + AND)
MDRIN = T4·STR
IRIN = T1
ADDROUT = T3·JZ + T4·Z·JZ
RIN = T4·LD + T6·(ADD + AND)
RIOUT = T4·STR + T5·(ADD + AND)
YIN = T4·(ADD + AND)
WRITE = T4·STR
硬布线 vs 微程序
| 对比项 | 硬布线控制器 | 微程序控制器 |
|---|---|---|
| 速度 | 快 | 较慢 |
| 灵活性 | 低(修改需重新布线) | 高(修改微程序即可) |
| 设计复杂度 | 复杂 | 较简单 |
| 适用 | RISC、高速处理器 | CISC、复杂指令集 |
| 成本 | 高 | 较低 |
6.5 流水线工作原理
基本概念
流水线是将指令执行过程分解为多个子过程,各子过程由独立的功能部件并行处理,实现指令级并行。
典型5级流水线
IF(取指)→ ID(译码)→ EX(执行)→ MEM(访存)→ WB(写回)
理想情况下,流水线每个时钟周期完成一条指令,吞吐量提高到5倍。
流水线冒险
| 冒险类型 | 说明 | 解决方法 |
|---|---|---|
| 结构冒险 | 硬件资源冲突(如同一周期访问同一存储器) | 分离指令Cache和数据Cache |
| 数据冒险 | 后续指令依赖前面指令的结果 | 转发(旁路)、插入气泡、编译器调度 |
| 控制冒险 | 分支指令改变指令流 | 分支预测、延迟槽 |
6.6 CPU举例
RISC CPU
RISC处理器的典型特征:大量通用寄存器、固定指令长度、LOAD/STORE架构、硬布线控制、简单的寻址方式。代表:SPARC、MIPS、ARM、RISC-V。
Pentium微处理器
Intel x86架构的典型代表,采用CISC外部接口+RISC内部微操作的混合设计。指令流水线、分支预测、超标量执行等技术的综合应用。
6.7 计算机的供电
计算机系统对供电的基本要求:电压稳定、电流充足、散热良好。
- 电源:将交流电转换为稳定的直流电(±5V、±12V等),现代CPU需多路独立供电
- 散热:CPU功耗随主频提高而增加,需风冷/水冷等散热方案
- 节能:动态电压频率调整(DVFS)、休眠状态等降低功耗的技术
考试重点
★★★ 第一梯队(必考)
| 考点 | 典型题型 |
|---|---|
| 微指令的编制方法(微指令格式设计) | 设计题 |
| 微地址形成(一级/多级功能转移、计数器/断定方式) | 设计题 |
| 指令周期方框图语言 + 微操作序列 | 分析 + 设计 |
| 硬布线控制器微操作逻辑综合 | 逻辑表达式推导 |
★★☆ 第二梯队
| 考点 | 典型题型 |
|---|---|
| 指令周期/机器周期/时钟周期关系 | 概念 + 关系 |
| 控制方式(同步/异步/联合) | 对比简答 |
| 机器指令和微指令的关系 | 简答 |
| 微指令编码方式(直接/字段) | 简答 |
★★☆ 第二梯队
| 考点 | 典型题型 |
|---|---|
| 流水线工作原理和冒险 | 分析 + 简答 |
★☆☆ 第三梯队
| 考点 | 典型题型 |
|---|---|
| CPU 的组成和寄存器功能 | 简答 |
| 控制器的组成(指令部件/时序部件) | 简答 |
| 硬布线 vs 微程序对比 | 对比表 |
| 时序系统(节拍/脉冲配合) | 简答 |
| 流水线5级结构 | 简答 |
| CPU举例(RISC/Pentium) | 简答 |
| 计算机的供电 | 简答 |