目录
第五章内容较多,拆成上下两章发~觉得内容有帮助的小伙伴可以收藏关注不错过更新哟
5.1 CPU的功能和基本结构
5.1.1 CPU的功能
CPU是计算机的“大脑”,核心功能如下:
功能 | 描述 |
---|---|
指令控制 | 按顺序取指令、译码并执行,控制程序流程(如分支、循环)。 |
操作控制 | 生成控制信号,驱动ALU、寄存器、内存等部件协同工作(如加法操作、数据存取)。 |
时间控制 | 通过时钟信号同步各部件操作,确保时序正确(如T0-T3节拍控制)。 |
数据加工 | 执行算术(加减乘除)和逻辑运算(与或非),处理数据。 |
中断处理 | 响应外部事件(如I/O请求),保存现场并跳转至中断服务程序。 |
5.1.2 CPU的基本结构
CPU由以下核心部件组成:
部件 | 功能 | 关键组件 |
---|---|---|
运算器(ALU) | 执行算数逻辑运算,处理数据。 | ALU、ACC(累加器)、PSW(状态寄存器) |
控制器(CU) | 生成控制信号,协调指令执行流程。 | PC、IR、时序发生器、微操作控制逻辑 |
寄存器组 | 暂存指令、数据和地址,减少访问主存次数。 | 通用寄存器(AX/BX)、专用寄存器(PC/MAR/MDR) |
注意考试中一般称CPU由运算器和控制器两大部分组成(或CPU由数据通路和控制部件两大部分组成)
5.1.3 CPU的寄存器
寄存器分类及功能:
寄存器类型 | 功能 | 示例 |
---|---|---|
用户可见寄存器 | 程序员可直接访问的寄存器。 | - 通用寄存器:x86的EAX、ARM的R0-R12<br>- PC:存放下一条指令地址<br>- PSW:保存状态标志(如溢出、零标志) |
用户不可见寄存器 | 由CPU内部自动管理,程序员无法直接操作。 | - MAR:主存地址寄存器<br>- MDR:主存数据寄存器<br>- 暂存器:ALU操作数临时存储 |
5.2 指令执行过程
5.2.1 指令周期
指令周期的各阶段及操作:
阶段 | 操作 | 涉及部件 |
---|---|---|
取指周期 | 从主存读取指令,存入IR,PC自增。 | PC、MAR、MDR、IR |
间址周期 | 处理间接寻址指令,获取有效地址(需额外访存)。 | MAR、MDR、ALU(地址计算) |
执行周期 | 执行指令操作(如运算、跳转、访存)。 | ALU、寄存器、主存 |
中断周期 | 响应中断,保存当前PC并跳转到中断处理程序。 | 堆栈、PC、中断控制器 |
5.2.2 指令周期的数据流
以**加法指令(ADD R1, R2)**为例:
- 取指:PC→MAR→主存→MDR→IR,PC+1。
- 译码:IR解析操作码为ADD,确定源寄存器R1、R2。
- 执行:R1和R2的值送入ALU相加,结果暂存于ACC。
- 写回:ACC内容写回R1,更新PSW标志位(如溢出、零值)。
5.2.3 指令执行方案
方案 | 原理 | 优缺点 |
---|---|---|
单指令周期 | 所有指令执行时间相同(取最长指令时间)。 | 简单但效率低(适用于简单指令集)。 |
多指令周期 | 不同指令占用不同时钟周期(如加法1周期,乘法4周期)。 | 效率较高,但时序控制复杂(常见于CISC)。 |
流水线 | 指令执行分为多个阶段,各阶段并行处理不同指令。 | 吞吐率高,需处理冲突(如数据冒险)。 |
5.3 数据通路的功能和基本结构
5.3.1 数据通路的功能
- 提供数据流动路径(如寄存器→ALU→寄存器)。
- 实现运算、访存、跳转等操作的数据传输。
5.3.2 数据通路的组成
组件 | 功能 | 示例 |
---|---|---|
组合逻辑元件 | 根据输入即时生成输出信号。 | MUX(多路选择器)、译码器、ALU |
时序逻辑元件 | 在时钟边沿更新状态。 | 寄存器、计数器(如PC)、状态寄存器 |
5.3.3 数据通路的基本结构
结构类型 | 特点 | 适用场景 |
---|---|---|
单总线结构 | 所有部件共享一条总线,结构简单但并行性差。 | 早期CPU(如Intel 8086) |
多总线结构 | 分离数据总线和地址总线,提高并行性。 | 现代CPU(如ARM Cortex系列) |
专用通路 | 为高频操作设计独立通路(如ALU直连寄存器)。 | 高性能CPU(如RISC-V超标量设计) |
5.3.4 数据通路的操作举例
1. 通用寄存器之间传送数据
指令示例:MOV R1, R2
(将R2的值复制到R1)
数据通路操作流程:
- 控制信号:控制器发出
RegRead_R2
和RegWrite_R1
信号。 - 数据流动:
- R2的内容通过 内部总线 传输到 多路选择器(MUX)。
- MUX选择寄存器输入源为“总线数据”,将数据送入 目标寄存器R1 的输入端。
- 时序控制:时钟上升沿到来时,R1锁存数据,完成写入。
关键部件:内部总线、MUX、寄存器组、控制器。
2. 从主存中读取数据
指令示例:LOAD R3, [0x2000]
(将主存地址0x2000的数据加载到R3)
数据通路操作流程:
- 地址阶段:
- 立即数
0x2000
通过 ALU 送入 MAR(Memory Address Register)。 - 控制器发出
MemRead
信号。
- 立即数
- 访存阶段:
- MAR的内容通过 地址总线 发送到主存。
- 主存返回对应地址的数据到 MDR(Memory Data Register)。
- 写回阶段:
- MDR的数据通过总线传输到 寄存器R3,控制器发出
RegWrite_R3
信号。
- MDR的数据通过总线传输到 寄存器R3,控制器发出
关键部件:ALU、MAR、MDR、地址总线、数据总线。
3. 将数据写入主存
指令示例:STORE [0x3000], R4
(将R4的值写入主存地址0x3000)
数据通路操作流程:
- 地址阶段:
- 立即数
0x3000
送入 MAR。 - R4的值通过总线传输到 MDR。
- 立即数
- 写操作:
- 控制器发出
MemWrite
信号。 - MAR的地址和MDR的数据分别通过 地址总线 和 数据总线 写入主存。
- 控制器发出
关键部件:MAR、MDR、地址总线、数据总线、控制器。
4. 执行算术或逻辑运算
指令示例:ADD R5, R6, R7
(R5 = R6 + R7)
数据通路操作流程:
- 取操作数:
- R6和R7的值通过总线分别送入 ALU的输入端口A和B。
- 控制器发出
ALU_OP=ADD
信号。
- 运算阶段:
- ALU执行加法运算,结果暂存到 ACC(累加器)。
- 写回结果:
- ACC的值通过总线写回 寄存器R5,控制器发出
RegWrite_R5
。
- ACC的值通过总线写回 寄存器R5,控制器发出
- 状态更新:ALU的溢出、零标志等状态写入 PSW(Program Status Word)。
关键部件:ALU、ACC、PSW、寄存器组、控制器。
5. 修改程序计数器的值
指令示例:JMP 0x4000
(无条件跳转到地址0x4000)
数据通路操作流程:
- 地址加载:
- 立即数
0x4000
通过 ALU 送入 PC(Program Counter)。
- 立即数
- 控制信号:
- 控制器发出
PC_Load
信号,允许PC更新。
- 控制器发出
- 时序操作:
- 在下一个时钟周期,PC的值变为
0x4000
,CPU从该地址取下一条指令。
- 在下一个时钟周期,PC的值变为
条件跳转示例(如 BEQ R8, R9, 0x5000
):
- 比较操作:R8和R9的值送入ALU,执行减法并更新PSW的零标志。
- 条件判断:若零标志为1(R8=R9),立即数
0x5000
写入PC;否则PC正常递增。
关键部件:PC、ALU、PSW、控制器。
操作总结表
操作类型 | 指令示例 | 关键数据通路部件 | 控制信号 |
---|---|---|---|
寄存器间传输数据 | MOV R1, R2 | 内部总线、MUX、寄存器组 | RegRead_R2 , RegWrite_R1 |
从主存读取数据 | LOAD R3, [0x2000] | MAR、MDR、地址/数据总线 | MemRead , RegWrite_R3 |
向主存写入数据 | STORE [0x3000], R4 | MAR、MDR、地址/数据总线 | MemWrite |
执行算术逻辑运算 | ADD R5, R6, R7 | ALU、ACC、PSW | ALU_OP=ADD , RegWrite_R5 |
修改程序计数器 | JMP 0x4000 | PC、ALU、PSW | PC_Load |
5.4 控制器的功能和工作原理
5.4.1 控制器的结构和功能
组件 | 功能 |
---|---|
程序计数器(PC) | 存放下一条指令地址,支持跳转和中断。 |
指令寄存器(IR) | 存储当前指令内容,供译码器解析。 |
时序发生器 | 生成节拍信号(如T0-T3),划分指令执行阶段。 |
微操作控制单元 | 根据指令和时序生成控制信号(如RegWrite、MemRead)。 |
5.4.2 硬布线控制器
特性 | 描述 |
---|---|
原理 | 通过组合逻辑电路直接生成控制信号。 |
优点 | 速度快,适合简单指令集(如RISC)。 |
缺点 | 指令集扩展需重新设计电路,灵活性差。 |
5.4.3 微程序控制器
特性 | 描述 |
---|---|
原理 | 控制信号以微指令形式存储于控制存储器(CM),按需取出执行。 |
优点 | 灵活性高,支持复杂指令集(如CISC)。 |
缺点 | 速度较慢,需额外存储资源(如Intel x86的微码)。 |
考研重难点总结
重点内容
-
指令周期与流水线
- 指令周期的四个阶段(取指、间址、执行、中断)。
- 流水线的五级划分(取指、译码、执行、访存、写回)及冲突处理(数据冒险、控制冒险)。
-
数据通路设计
- 单总线与多总线结构的对比及性能分析。
- 典型指令(如ADD、LOAD)在数据通路中的执行流程。
-
控制器类型
- 硬布线控制器与微程序控制器的区别(速度、灵活性、适用场景)。
- 微指令格式(水平型、垂直型)及控制存储器的设计。
难点内容
-
流水线冲突解决
- 数据冒险:通过旁路(Forwarding)或流水线暂停(Stall)解决。
- 控制冒险:采用分支预测或延迟槽技术。
-
微程序控制器工作原理
- 微程序地址的生成方式(下址字段法、计数器法)。
- 微指令与机器指令的映射关系(如一条CISC指令对应多条微指令)。
-
性能计算
- 流水线吞吐率(Throughput)和加速比(Speedup)的计算。
- 多周期CPU时钟周期数的确定(如乘法指令占用多个周期)。
典型考题
-
简答题
- 比较硬布线和微程序控制器的优缺点。
- 描述五级流水线各阶段的功能及可能发生的冲突。
-
设计题
- 设计单总线数据通路执行LOAD指令的步骤。
- 画出微程序控制器的结构框图并解释微地址生成逻辑。
-
计算题
- 给定流水线各阶段时间,计算吞吐率和加速比。
- 分析多周期CPU执行一段指令序列的总时钟周期数。