vault backup: 2026-07-04 12:32:07

This commit is contained in:
2026-07-04 12:32:07 +08:00
parent ba1ad4e098
commit 36c88d8b9b
9 changed files with 1207 additions and 155 deletions

View File

@@ -2,6 +2,8 @@
> 📖 本章介绍CPU的功能、内部结构和指令执行过程。
> 🎯 重点理解CPU组成和指令周期
> ⚠️ **考试范围**8.1、8.2、8.3不含8.3.4和8.3.5、8.4节不考。复习重点例题8.1课后习题8.1、8.2、8.11、8.12
> 🔥 **高频考点**CPU功能与组成、指令周期/机器周期/时钟周期关系、流水线性能计算、流水线冲突分析
---
@@ -10,8 +12,8 @@
- [[#8.1 CPU的结构]]
- [[#8.2 指令周期]]
- [[#8.3 指令流水]]
- [[#8.4 中断系统]]
- [[#本章小结]]
- [[#📖 真题与作业精选]]
- [[#例题与解析]]
---
@@ -75,6 +77,9 @@ CPU结构就像公司的组织架构运算器中ALU算术逻辑单元
当你执行一条加法指令时PC记录下一条指令的地址IR存放当前加法指令CU译码并发出控制信号ALU执行加法运算ACC存放运算结果PSW记录运算状态。
> [!tip] 考试高频题型
> 给出CPU结构图要求识别各寄存器A、B、C、D分别是什么并描述取指/读数的数据通路。这是期中考试的经典题型,务必掌握图中每个部件的功能和数据流向。
### 8.1.3 CPU的寄存器
#### 用户可见寄存器
@@ -100,6 +105,11 @@ CPU结构就像公司的组织架构运算器中ALU算术逻辑单元
PC程序计数器记录下一个要执行的任务执行完一个任务后自动指向下一个任务遇到跳转指令时指向跳转目标。IR指令寄存器记录正在执行的任务包含操作码要做什么和地址码操作数在哪里操作码送给CU译码。MAR存储器地址寄存器记录要访问的仓库位置把地址送到仓库。MDR存储器数据寄存器传送仓库和车间之间的物品。PSW程序状态字寄存器显示当前工作状态包括条件码、中断屏蔽位等。
> [!important] 数据通路(期中/期末常考)
> **取指数据通路**PC → MAR → 主存 → MDR → IR这是最基本的数据通路必须熟记
> **读数据通路**X → MAR → 主存 → MDR → ALU → ACC从内存读操作数参与运算
> 这两条数据通路在考试中经常以识图题的形式出现,参见真题精选部分。
---
## 8.2 指令周期
@@ -130,6 +140,11 @@ graph TB
- **机器周期**:完成一个基本操作的时间
- **指令周期**:完成一条指令的时间
> [!tip] 三者关系(考试重点)
> **时钟周期**(最小)< **机器周期**(一个机器周期通常包含若干时钟周期)< **指令周期**(一条指令可能需要多个机器周期)
>
> 这三者的包含关系是选择题和填空题的高频考点。记住:一个指令周期包含若干机器周期,一个机器周期包含若干时钟周期。
时钟周期像CPU的最小工作时间单位1GHz CPU的时钟周期是1ns机器周期完成一个基本操作的时间通常包含几个时钟周期指令周期完成一条指令的时间根据指令类型不同而不同。
### 8.2.3 指令执行过程
@@ -170,57 +185,44 @@ graph TB
### 8.3.2 流水线的性能
**吞吐率**
这是本章最重要的计算题考点,几乎每次考试都会出现。
**吞吐率**(单位时间完成的指令数):
$$TP = \frac{n}{k + (n-1)}$$
**加速比**
其中 $n$ 为指令条数,$k$ 为流水线段数,每段假设时间相同为 $\Delta t$。当各段时间不同时,吞吐率受限于最慢的段
$$TP_{max} = \frac{1}{\max(\Delta t_i)}$$
**加速比**(非流水线时间 / 流水线时间):
$$S = \frac{nk}{k + (n-1)}$$
**效率**
**效率**(流水线各段的利用率)
$$E = \frac{S}{k} = \frac{n}{k + (n-1)}$$
流水线性能像工厂的生产效率:吞吐率是单位时间完成的任务数,加速比是流水线比非流水线快多少倍,效率是流水线的利用率。
假设流水线有4个阶段执行100条指令吞吐率100/(4+99)=0.97条/周期加速比100×4/(4+99)=3.88效率3.88/4=97%。
> [!warning] 不等段流水线计算(作业/考试原题)
> 当各段时间不相等时,完成时间 = 第一段总时间 + (n-1) x max(各段时间)吞吐率以最慢段为瓶颈。详见真题精选第1题。
### 8.3.3 流水线冲突
流水线冲突分析是考试中分析题的常见考点,要能判断指令间存在哪种冲突以及如何解决。
**结构冲突**:硬件资源不足,两个指令同时访问同一个存储器,增加硬件资源解决。
**数据冲突**:指令之间有数据依赖,后面的指令需要前面指令的结果,数据旁路或流水线暂停解决
**数据冲突**:指令之间有数据依赖,后面的指令需要前面指令的结果。解决方法:数据旁路(将结果直接转发给后续指令)或流水线暂停(插入气泡等待数据就绪)
**控制冲突**:分支指令改变程序流,跳转指令导致流水线需要重新取指分支预测或延迟分支解决
**控制冲突**:分支指令改变程序流,跳转指令导致流水线需要重新取指。解决方法:分支预测或延迟分支。
结构冲突像两个工人都要用同一个工具,多买几个工具解决;数据冲突像上一个产品还没做完下一个产品需要它的零件,等做完或先做其他产品解决;控制冲突像突然改变生产计划,提前预测或等确定后再生产解决。
---
## 8.4 中断系统
### 8.4.1 中断系统的基本功能
**主要功能**
1. **中断请求**:接收中断请求信号
2. **中断判优**:决定哪个中断先处理
3. **中断响应**:响应中断请求
4. **中断处理**:执行中断服务程序
5. **中断返回**:返回原程序
中断系统像公司的紧急事件处理系统:中断请求接收紧急事件报告,中断判优决定先处理哪个紧急事件,中断响应决定处理紧急事件,中断处理执行紧急事件处理程序,中断返回返回原工作。
### 8.4.2 中断系统的实现
**硬件实现**
- **中断请求触发器**:保存中断请求信号
- **中断屏蔽触发器**:控制中断是否被屏蔽
- **中断判优电路**:决定中断优先级
- **中断向量表**:存放中断服务程序入口地址
**软件实现**
- **中断服务程序**:处理中断的程序
- **中断处理流程**:中断处理的步骤
硬件实现像紧急事件处理流程:中断请求触发器是紧急事件报告箱,中断屏蔽触发器是请勿打扰标志,中断判优电路是紧急事件分类器,中断向量表是紧急事件处理手册。
> [!tip] 冲突判断技巧(考试高频)
> - 看两条指令是否同时使用同一硬件资源 → 结构冲突
> - 看后一条指令的源操作数是否是前一条指令的目的操作数 → 数据冲突RAW/RAW相关
> - 看是否出现条件转移或无条件跳转 → 控制冲突
> 一道题中可能同时出现多种冲突注意逐一排查。参见真题精选第2题。
---
@@ -232,7 +234,7 @@ $$E = \frac{S}{k} = \frac{n}{k + (n-1)}$$
2. **CPU结构**:运算器、控制器、寄存器
3. **指令周期**:取指周期、执行周期
4. **指令流水**提高CPU效率的重要技术
5. **中断系统**处理紧急事件的机制
5. **流水线冲突**结构冲突、数据冲突、控制冲突
### 关键术语
@@ -243,20 +245,115 @@ $$E = \frac{S}{k} = \frac{n}{k + (n-1)}$$
| CU | Control Unit | 控制单元 |
| PC | Program Counter | 程序计数器 |
| IR | Instruction Register | 指令寄存器 |
| MAR | Memory Address Register | 存储器地址寄存器 |
| MDR | Memory Data Register | 存储器数据寄存器 |
| 流水线 | Pipeline | 指令流水 |
| 中断 | Interrupt | 紧急事件处理 |
| 吞吐率 | Throughput | 单位时间完成指令数 |
| 加速比 | Speedup | 流水线相对非流水线的提升 |
### 重点图示
> [!summary] 必须掌握的图
> 1. CPU内部结构图
> 2. 指令周期时序
> 3. 流水线示意
> 4. 中断处理流程
> 1. CPU内部结构图(识别各寄存器)
> 2. 取指/读数据通路
> 3. 指令周期时序
> 4. 流水线时空
> 5. 流水线冲突示意图
---
## 🧪 例题与解析
## 📖 真题与作业精选
以下是来自作业、期中/期末考试和复习资料的精选题目,考试中出现过原题或类似题。
### 真题1不等段流水线性能计算作业三原题
**题目**某5段流水线各段时间分别为4ns、5ns、6ns、7ns、4ns执行200条指令。求最大吞吐率、完成时间和效率。
**解答**
1. **最大吞吐率**受限于最慢的段第4段7ns所以
$$TP_{max} = \frac{1}{7\text{ns}}$$
2. **完成时间**第一条指令经过全部5段的时间 + 后续199条指令每条等待一个最慢段的时间
$$T = (4+5+6+7+4) + (200-1) \times 7 = 26 + 1393 = 1400\text{ns}$$
也可以用另一种理解流水线建立后每7ns出一条指令第一条26ns完成之后每隔7ns完成一条。总时间 = 26 + 199 x 7 = 1400ns。
3. **效率**:各段实际工作时间之和 / (段数 x 总时间)
$$E = \frac{5 \times 200}{5 \times 200 + 4 \times 7} \times 100\% = \frac{1000}{1028} \times 100\% \approx 97.3\%$$
分子是各段的有效工作量200条指令 x 5个段分母要加上流水线排空阶段末尾4个段各空闲了一个最慢段时间4 x 7ns换算成的工作单元数
> [!tip] 解题要点
> 不等段流水线的关键是找到**最慢段**,它决定了流水线的实际吞吐率。这类题是作业和考试的高频计算题。
### 真题2流水线冲突分析作业三原题
**题目**:分析以下指令序列中的相关与冲突:
```assembly
MUL R2, R1, R0 ; R2 = R1 x R0
JEQ X ; 若Z=1则跳转到X
ADD R3, R4, R5 ; R3 = R4 + R5
```
**解答**
- **MUL与JEQ**:存在**数据相关**。JEQ需要检测PSW中的Z标志位而该标志位由MUL指令的运算结果设置。MUL还没执行完JEQ就可能需要读取Z标志因此产生数据冲突。同时JEQ是条件转移指令还会引起**控制冲突**(是否跳转不确定,流水线不知道下一条取哪里的指令)。
- **ADD与前面的指令**ADD的源操作数R4、R5和目的操作数R3与MUL、JEQ均无数据依赖关系因此ADD与前面的指令**不存在数据相关**。但JEQ引起的控制冲突仍会影响ADD是否应该被取指执行。
> [!tip] 冲突分析三步法
> 1. 先找数据依赖:后指令的源操作数是否等于前指令的目的操作数
> 2. 再找控制依赖:是否出现跳转/分支指令
> 3. 最后看结构依赖:是否同时访问同一硬件资源
### 真题3CPU寄存器识别与数据通路复习资料原题
**题目**某CPU内部结构图中标注了A、B、C、D四个部件分别连接在数据通路上。请指出它们分别是什么寄存器并描述取指和读数据的完整数据通路。
**解答**
- **A = MDR**存储器数据寄存器CPU与主存之间传送数据的缓冲
- **B = MAR**(存储器地址寄存器):存放要访问的主存地址
- **C = IR**(指令寄存器):存放当前正在执行的指令
- **D = PC**(程序计数器):存放下一条要执行的指令地址
**取指数据通路**PC → MAR → 主存(取指令)→ MDR → IR
具体过程PC把指令地址送到MARMAR通过地址总线把地址送到主存主存根据地址找到指令并通过数据总线送到MDRMDR把指令送到IR同时PC+1指向下一条指令。
**读数据通路**X → MAR → 主存(读数据)→ MDR → ALU → ACC
具体过程操作数地址X送到MARMAR把地址送到主存主存找到数据送到MDRMDR把数据送到ALU参与运算运算结果送到ACC。
> [!important] 期中/期末曾考此题
> 识别CPU结构图中各部件是经典考试题型。关键记忆MAR管地址、MDR管数据、IR存指令、PC存下条地址。
### 真题4流水线效率分析与改进复习资料原题
**题目**某流水线只有IF、ID、EX、WB四个阶段各段时间为IF(2t)、ID(2t)、EX(t)、WB(t)。计算该流水线的效率,并提出改进方案。
**解答**
1. **原流水线效率**最慢段为2tIF和ID流水线实际吞吐率以2t为节拍。
- 非流水线总时间 = 2t + 2t + t + t = 6t
- 流水线时间 = 4段建立时间 + (n-1) x 2t = 6t + (n-1) x 2t
- 当n足够大时加速比 S = 6t / 2t = 3
- 效率 E = S / k = 3 / 4 = 75%... 实际上因各段时间不等,效率约为 50%
各段利用率IF段和ID段持续工作利用率100%EX段只工作t但占2t的时间槽利用率50%WB段同样50%。平均效率 = (100% + 100% + 50% + 50%) / 4 = 75%。但由于EX和WB的闲置整体效率降至约50%。
2. **改进方案**(二选一):
- **方案一:拆分慢段**——将ID拆成ID1(t)和ID2(t)两段使所有段的时间都变为t流水线均匀效率提升到接近100%
- **方案二:并联重复设置**——在ID段和EX段各设置两套硬件交替使用使吞吐率翻倍
> [!tip] 流水线改进的核心思路
> 效率低的根本原因是各段时间不均衡,导致快的段等待慢的段。改进方法要么拆分慢段使之均匀,要么并联重复设置瓶颈段。
---
## 例题与解析
### 例题1CPU功能分析
@@ -266,18 +363,20 @@ $$E = \frac{S}{k} = \frac{n}{k + (n-1)}$$
CPU的五大功能指令控制控制程序的顺序执行像总经理按顺序安排工作操作控制产生完成每条指令所需的控制信号像总经理发出工作指令时间控制对各种操作加以时间上的控制像总经理控制工作进度数据加工对数据进行算术运算和逻辑运算像员工处理数据中断处理处理异常情况和特殊请求像总经理处理紧急情况。
### 例题2指令周期计算
### 例题2指令周期计算参考课后习题8.1、8.2
**题目**某CPU主频为1GHz取指周期为4个时钟周期执行周期为6个时钟周期求执行100条指令所需时间。
**答案**
主频1GHz=10Hz时钟周期1/10=1ns。
主频1GHz=10^9 Hz时钟周期1/10^9 =1ns。
取指周期4个时钟周期=4ns执行周期6个时钟周期=6ns。
单条指令时间=4+6=10ns。
100条指令时间=100×10ns=1000ns=1μs。
100条指令时间=100 x 10ns=1000ns=1us。
### 例题3流水线性能计算
> 这道题对应课后习题8.1和8.2的类型,计算指令周期时间是最基础的考题。
### 例题3流水线性能计算参考例题8.1
**题目**某CPU有4级流水线执行100条指令求吞吐率、加速比和效率。
@@ -285,9 +384,11 @@ CPU的五大功能指令控制控制程序的顺序执行像总经理按
流水线阶段数k=4指令数n=100。
吞吐率TP=100/(4+99)=0.97条/周期。
加速比S=100×4/(4+99)=3.88。
加速比S=100 x 4/(4+99)=3.88。
效率E=3.88/4=97%。
> 这是例题8.1的标准题型各段时间相等的情况。考试中可能变为不等段时间参见真题精选第1题。
### 例题4流水线冲突分析
**题目**:分析以下指令序列中的数据冲突:
@@ -298,9 +399,9 @@ SUB R4, R1, R5 ; R4 = R1 - R5
**答案**
ADD指令产生R1的值SUB指令需要R1的值。如果ADD指令还没执行完SUB指令就需要R1的值就会发生数据冲突。
ADD指令产生R1的值SUB指令需要R1的值。如果ADD指令还没执行完SUB指令就需要R1的值就会发生数据冲突RAW相关——写后读冲突
解决方案数据旁路ADD指令执行完后直接把结果传给SUB指令或流水线暂停等ADD指令执行完后再执行SUB指令
解决方案数据旁路ADD指令执行完后直接把结果传给SUB指令,不用等写回阶段)或流水线暂停(插入气泡等ADD指令执行完后再执行SUB指令
### 例题5中断系统设计
@@ -319,20 +420,26 @@ ADD指令产生R1的值SUB指令需要R1的值。如果ADD指令还没执行
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
>
> **考试题型分布**:选择/填空CPU寄存器识别、周期关系、计算流水线性能、分析流水线冲突判断
**CPU五大功能**指令控制顺序执行、操作控制发控制信号、时间控制时序、数据加工ALU运算、中断处理。
**CPU内部关键寄存器**PC下条指令地址、IR当前指令、MAR访存地址、MDR访存数据、PSW程序状态、ACC累加器、通用寄存器组。
**CPU内部关键寄存器**PC下条指令地址、IR当前指令、MAR访存地址、MDR访存数据、PSW程序状态、ACC累加器、通用寄存器组。考试常考:给出结构图让你标注各寄存器名称。
**指令周期四阶段**指周期(所有指令都有)→ 间址周期(间接寻址才有)→ 执行周期(都有)→ 中断周期(有中断才有)
**指令周期层次关系**:指周期(最大)> 机器周期 > 时钟周期(最小)。一个指令周期包含若干机器周期,一个机器周期包含若干时钟周期。这是选择题高频考点
**取指数据通路**PC → MAR → 主存 → MDR → IRPC+1 → PC。读数据通路X → MAR → 主存 → MDR → ALU → ACC。这两条通路务必熟记。
**流水线五阶段**IF取指→ ID译码→ EX执行→ MEM访存→ WB写回
**流水线公式**吞吐率 TP = n/(k+n-1),加速比 S = nk/(k+n-1)。n=100条、k=4级 → TP0.97S3.88。
**流水线公式(等段时间)**:完成时间 T = k + (n-1)(以时钟周期数计),吞吐率 TP = n/(k+n-1),加速比 S = nk/(k+n-1)。n=100条、k=4级 → TP约等于0.97S约等于3.88。
**流水线三种冲突**:结构冲突(争硬件,加资源)、数据冲突(数据依赖,旁路或暂停)、控制冲突(分支跳转,预测或延迟)
**流水线公式(不等段时间)**吞吐率受限于最慢段TP_max = 1/max(Delta_t_i)。完成时间 = 满载时间 + (n-1) x 最慢段时间
**中断系统**:中断请求触发器保存请求,中断屏蔽触发器控制屏蔽,中断判优电路决定优先级,中断向量表存入口地址
**流水线三种冲突**:结构冲突(争硬件,加资源)、数据冲突(数据依赖,旁路或暂停)、控制冲突(分支跳转,预测或延迟)。考试中给出指令序列让你判断冲突类型是常见分析题
**冲突判断口诀**:后读前写的数 → 数据冲突;跳转分支 → 控制冲突;同争一个硬件 → 结构冲突。
---
@@ -347,3 +454,5 @@ ADD指令产生R1的值SUB指令需要R1的值。如果ADD指令还没执行
*本章难度:⭐⭐⭐⭐⭐ 困难*
*重要程度:⭐⭐⭐⭐⭐ 重点*
*考试占比约15%-20%,流水线计算几乎必考*
*复习建议重点练习流水线性能计算不等段时间和冲突分析结合课后习题8.11、8.12强化训练*