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,7 @@
> 📖 本章介绍计算机系统的基本概念和组成,是整个课程的基础。
> 🎯 重点理解计算机层次结构和冯·诺依曼体系
> ⚠️ 本章以基本概念为主复习重点见课后习题1.5、1.6、1.7、1.11
---
@@ -11,6 +12,7 @@
- [[#1.2 计算机的基本组成]]
- [[#1.3 计算机硬件的主要技术指标]]
- [[#本章小结]]
- [[#📖 真题与作业精选]]
- [[#例题与解析]]
---
@@ -100,6 +102,9 @@ graph TB
style HW fill:#0288d1
```
> [!important] 这是考试高频考点
> 五级层次结构是填空题和简答题的常客,期中/期末都曾出现。记住顺序:微程序级 → 机器指令级 → 操作系统级 → 系统软件级 → 应用软件级。
#### 各层次说明
| 层次 | 名称 | 说明 | 语言 |
@@ -140,6 +145,9 @@ graph LR
实际应用中C语言用编译方式先把 `.c` 文件编译成 `.exe` 文件再运行Python用解释方式边翻译边执行不需要生成单独的可执行文件。
> [!tip] 考试注意
> 编译vs解释是常见的对比题。考试中经常会给出具体语言如C、Python让你判断属于哪种方式并说明各自的优缺点。简单记忆编译快但调试慢解释慢但调试快。
---
### 1.1.3 计算机组成和计算机体系结构
@@ -166,6 +174,8 @@ IBM System/370系列就是很好的例子所有机型的体系结构相同
> [!important] 冯·诺依曼体系1945年
> 基于"存储程序"概念的计算机体系结构
>
> ⚠️ 这是第1章最高频的考点简答题几乎必考期中/期末多次出现。
**五大特点**
1. 计算机由 **运算器、存储器、控制器、输入设备、输出设备** 五大部件组成
@@ -196,6 +206,9 @@ graph TB
style OUT fill:#cc99ff
```
> [!warning] 易错点
> 冯·诺依曼最初提出的结构是以 **运算器** 为中心,但 **现代计算机** 已经改为以 **存储器** 为中心。考试时一定要看清题目问的是"冯·诺依曼结构"还是"现代计算机结构",中心不同!
冯·诺依曼体系可以理解为一个高效的工厂:运算器是生产车间,负责加工产品;存储器是仓库,存放原材料和成品;控制器是厂长,指挥整个生产过程;输入设备是采购部,接收订单和原材料;输出设备是销售部,把成品交给客户。"存储程序"的概念就是把生产计划(程序)和原材料(数据)都放在仓库里,厂长按计划指挥生产。
当你用电脑计算 `5 + 3` 时,整个过程是这样的:键盘输入数据,存储器存放数字和指令,控制器指挥运算器执行加法,运算器计算结果,最后显示器显示答案。
@@ -313,6 +326,9 @@ $$存储容量 = 存储单元数 \times 存储字长$$
### 1.3.3 运算速度
> [!important] MIPS和CPI的计算是考试计算题高频考点
> 经常出现在填空题和计算题中,需要熟练掌握公式及相互转换。
**常用指标**
| 指标 | 说明 | 计算方式 |
@@ -323,6 +339,14 @@ $$存储容量 = 存储单元数 \times 存储字长$$
这三个指标可以这样理解MIPS是工人每秒能处理多少个订单CPI是处理一个订单需要多少个步骤FLOPS是每秒能计算多少道数学题。MIPS越高处理越快CPI越低效率越高FLOPS越强计算能力越强。
**核心公式**
$$MIPS = \frac{主频}{CPI \times 10^6}$$
$$CPI = \frac{时钟周期数}{指令条数}$$
$$执行时间 = CPI \times 指令条数 \times 时钟周期$$
### 1.3.4 其他指标
- **主频**CPU时钟频率GHz
@@ -361,6 +385,54 @@ $$存储容量 = 存储单元数 \times 存储字长$$
---
## 📖 真题与作业精选
> 以下题目来自历年期中/期末考试、课后作业和复习材料,覆盖本章最核心的考点。
### 真题1冯·诺依曼计算机的特点
**题目**:冯·诺依曼计算机的特点是什么?
**参考答案**
冯·诺依曼计算机有五大特点:
1. 由运算器、存储器、控制器、输入设备、输出设备 **五大部件** 组成
2. 指令和数据均用 **二进制** 表示
3. 采用 **存储程序** 的工作方式——指令和数据以同等地位存放在存储器中
4. 指令由 **操作码 + 地址码** 组成
5. 指令在存储器内 **按顺序存放,通常顺序执行**
**易错提醒**:注意区分冯·诺依曼结构和现代计算机结构。冯·诺依曼最初提出的是以 **运算器** 为中心,但现代计算机已经改为以 **存储器** 为中心。考试中常见陷阱就是把"以存储器为中心"写进冯·诺依曼特点中,这道题问的是冯·诺依曼原始特点,答案是五大部件、二进制、存储程序、操作码+地址码、顺序执行这五条。
### 真题2计算机的5级软件层次
**题目**计算机的5级软件层次是什么
**参考答案**
从低到高依次为:**微程序级 → 机器指令级 → 操作系统级 → 系统软件级 → 应用软件级**。
具体对应关系M0微程序机器由硬件直接执行微指令→ M1传统机器执行机器语言→ M2操作系统机器操作系统管理资源→ M3虚拟机器汇编语言/系统软件层)→ M4虚拟机器高级语言层
**记忆技巧**:从硬件到用户,从底层到顶层,"微机操系应"五个字就能记住。注意底下两层M0、M1是实际机器上面三层是虚拟机器。
### 真题3编译程序和解释程序的区别
**题目**:编译程序和解释程序的区别?
**参考答案**
| 对比项 | 编译程序 | 解释程序 |
|--------|----------|----------|
| 翻译方式 | 一次性全部翻译成目标程序,再执行 | 翻译一条执行一条,边翻译边执行 |
| 执行速度 | 快(目标程序已生成,直接运行) | 慢(每次执行都要重新翻译) |
| 调试效率 | 慢(需修改后重新编译) | 快(逐行执行,便于定位错误) |
| 代表语言 | C、C++、Pascal | Python、JavaScript、BASIC |
简单记忆:**编译快但调试慢,解释慢但调试快**。C语言是典型的编译型语言Python是典型的解释型语言。
---
## 🧪 例题与解析
### 例题1计算机层次结构
@@ -442,21 +514,25 @@ $$MIPS = \frac{主频}{CPI \times 10^6} = \frac{2 \times 10^9}{4 \times 10^6} =
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
>
> **本章考试形式**以填空题、简答题、选择题为主偶尔出现计算题MIPS/CPI。复习时重点对照课后习题1.5、1.6、1.7、1.11。
**计算机系统 = 硬件 + 软件**,两者缺一不可。
**五级层次**从下往上微程序机器M0 → 传统机器M1 → 操作系统M2 → 汇编语言M3 → 高级语言M4。底下两层是实际机器上面三层是虚拟机器。
**五级层次**从下往上微程序机器M0 → 传统机器M1 → 操作系统M2 → 汇编语言M3 → 高级语言M4。底下两层是实际机器上面三层是虚拟机器。(简答题高频)
**冯·诺依曼五大特点**:①五大部件(运算器+存储器+控制器+输入+输出)②存储程序(指令和数据同等地位存放)③二进制表示 ④指令=操作码+地址码 ⑤顺序执行。
**冯·诺依曼五大特点**:①五大部件(运算器+存储器+控制器+输入+输出)②存储程序(指令和数据同等地位存放)③二进制表示 ④指令=操作码+地址码 ⑤顺序执行。(几乎每次考试都会出现)
**现代计算机**以存储器为中心不是运算器CPU = 运算器 + 控制器,主机 = CPU + 主存。
**现代计算机**以存储器为中心不是运算器CPU = 运算器 + 控制器,主机 = CPU + 主存。注意和冯·诺依曼原始结构的区别。
**三个速度指标**MIPS每秒百万条指令越大越快、CPI每条指令时钟周期数越小越高效、FLOPS每秒浮点运算次数
**三个速度指标**MIPS每秒百万条指令越大越快、CPI每条指令时钟周期数越小越高效、FLOPS每秒浮点运算次数公式MIPS = 主频 / (CPI × 10^6)。(计算题考点)
**编译 vs 解释**编译一次性全部翻译再执行C解释边翻译边执行Python。编译快但调试慢解释慢但调试快。
**编译 vs 解释**编译一次性全部翻译再执行C解释边翻译边执行Python。编译快但调试慢解释慢但调试快。(对比题常考)
**容量计算**:存储容量 = 存储单元数 × 字长。20位地址线 → 2²⁰ = 1M个单元。
**体系结构 vs 组成**:体系结构是程序员看到的属性(指令集、数据类型),组成是硬件实现方式(电路细节)。体系结构相同不代表组成相同。
---
## 🔗 相关链接

View File

@@ -2,6 +2,7 @@
> 📖 本章介绍系统总线的基本概念、分类和控制逻辑。
> 🎯 重点理解总线结构和总线仲裁方式
> ⚠️ 复习重点书上例题3.1、3.2、3.4课后习题3.1~3.5、3.14~3.16(必做)
---
@@ -13,6 +14,7 @@
- [[#3.4 总线结构]]
- [[#3.5 总线控制]]
- [[#本章小结]]
- [[#真题与作业精选]]
- [[#例题与解析]]
---
@@ -211,6 +213,8 @@ USB、网络线、电话线用串行通信打印机接口、早期硬盘接
假设总线工作频率为33MHz总线宽度为32位总线带宽 = 33MHz × (32÷8) = 132MBps意味着每秒可以传输132MB的数据。
> ⚠️ **总线带宽计算是考试高频考点**,期末几乎每年都会出计算题。公式一定要记牢:**总线带宽 = 总线频率 × (总线宽度 ÷ 8)**,单位是字节/秒。注意宽度是位要除以8换算成字节。
### 3.3.3 总线标准
> [!info] 定义
@@ -278,6 +282,8 @@ graph TB
三总线增加了仓库和其他部门之间的直达通道DMA总线其他部门可以直接从仓库取货不经过生产车间。现代计算机支持DMA技术硬盘可以直接把数据传到内存不经过CPU。
> ⚠️ **三种总线结构的对比是必考内容**,期中/期末常以简答题形式出现——要求对比单总线、双总线、三总线的特点和区别。记住核心演变路线:单总线简单有瓶颈 → 双总线加了CPU-主存专用线 → 三总线再加DMA总线。
---
## 3.5 总线控制
@@ -295,6 +301,8 @@ graph TB
传统的电话系统用集中式仲裁,由交换机决定谁先通话;以太网用分布式仲裁,设备自己检测冲突并重试。
> ⚠️ **总线仲裁方式是考试重点**,集中式与分布式仲裁的对比经常出现在简答题和选择题中。要能说清楚各自的优缺点和适用场景。
### 3.5.2 总线通信控制
**通信方式**
@@ -335,6 +343,56 @@ graph TB
---
## 📖 真题与作业精选
> 以下是期末真题和作业中出现过的典型题目考前务必熟练掌握。对应教材例题3.1、3.2、3.4和课后习题3.1~3.5、3.14~3.16。
### 真题1总线带宽计算2022-2023期末原题
**题目**设总线工作频率60MHz一个总线周期并行传送64位数据。求总线带宽。
**解答**
总线带宽 = 总线频率 × (总线宽度 ÷ 8)
= 60MHz × (64 ÷ 8)
= 60 × 10⁶ × 8
= 480 × 10⁶ 字节/秒
= **480MBps**
> 💡 计算要点总线宽度64位要除以8换算成字节频率的M对应10⁶。这种题型期末高频出现建议多练几道变式题巩固。
### 真题2波特率计算2022-2023期末原题
**题目**异步串行传输字符格式为1位起始位+8位数据位+1位校验位+2位终止位每秒传送100个字符。求波特率。
**解答**
每个字符的总位数 = 1起始位+ 8数据位+ 1校验位+ 2终止位= 12位
波特率 = 每字符位数 × 每秒字符数
= 12 × 100
= **1200b/s**
> 💡 波特率 = 每秒传输的总位数。异步通信中起始位和终止位也要算进去,这是容易丢分的地方。类似的题在课后习题中也有出现。
### 真题3三种总线结构的特点
**题目**:简述三种总线结构(单总线、双总线、三总线)的特点。
**解答**
| 总线结构 | 特点 | 优缺点 |
|----------|------|--------|
| **单总线** | 所有部件共享一组总线 | 结构简单、成本低,但总线是瓶颈,多设备竞争会冲突 |
| **双总线** | 在单总线基础上增加CPU与主存的专用存储总线 | CPU-主存传输效率高,系统总线负担减轻 |
| **三总线** | 在双总线基础上增加DMA总线 | I/O设备可直接访问内存进一步提高性能 |
总线结构的演变路线:单总线 → 双总线(加专用存储线)→ 三总线加DMA线每一步都是为了减少瓶颈、提高并行度。
> 💡 这道题几乎是每学期必考的简答题,回答时要点出每种结构的核心特征和优缺点对比。
---
## 🧪 例题与解析
### 例题1总线带宽计算
@@ -391,22 +449,26 @@ graph TB
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
> 考前快速过一遍30秒回忆整章核心。本章考试常见题型:计算题(总线带宽、波特率)、简答题(三种总线结构对比、仲裁方式对比)、选择题(总线分类、信号方向)。
**总线** = 各部件共享的传输介质,同一时刻只能一个部件发送,但多个部件可以同时接收。
**系统总线三类**数据总线双向传数据、地址总线单向CPU输出地址、控制总线有读有写传控制信号
**三种总线结构**:单总线(简单但有瓶颈)→ 双总线CPU-主存专用线+系统总线)→ 三总线再加DMA总线
**三种总线结构**(简答题高频考点):单总线(简单但有瓶颈)→ 双总线CPU-主存专用线+系统总线)→ 三总线再加DMA总线,支持直接内存访问)。
**总线带宽 = 总线宽度 × 总线频率**。32位宽度、66MHz频率 → 带宽 = 4B × 66M = 264MBps。
**总线带宽 = 总线频率 × (总线宽度 ÷ 8)**(计算题必考)。32位宽度、66MHz频率 → 带宽 = 4B × 66M = 264MBps。注意宽度是位除以8转字节。
**总线仲裁**集中式有中央仲裁器简单但有单点故障vs 分布式(各设备自己仲裁,可靠但复杂)
**波特率计算**(异步串行传输考点):波特率 = 每字符总位数(含起始位+数据位+校验位+终止位)× 每秒字符数
**总线仲裁**简答题常考集中式有中央仲裁器简单但有单点故障vs 分布式(各设备自己仲裁,可靠但复杂)。
**通信方式**同步统一时钟简单但受限于最慢设备vs 异步(握手信号,灵活但复杂)。
**串行 vs 并行**:串行一位一位传,慢但便宜适合远距离;并行多位同时传,快但贵适合近距离。
> 📌 复习建议优先做书上例题3.1、3.2、3.4再完成课后习题3.1~3.5和3.14~3.16,最后过一遍上方的真题与作业精选。
---
## 🔗 相关链接

View File

@@ -2,6 +2,7 @@
> 📖 本章介绍存储器的分类、工作原理和层次结构,是课程的重点和难点。
> 🎯 重点理解存储层次、主存组成、Cache和虚拟存储器
> ⚠️ 考试范围提示存储器结构时序、RAM刷新、扩展不要求画图、4.2.6、4.4 不考重点考查存储器带宽计算、字位扩展、Cache直接映射/组相联映射、海明码、DRAM刷新。复习题参考例题4.1、4.7~4.10课后习题4.1、4.4~4.7、4.14、4.26、4.29、4.31、4.32。
---
@@ -11,6 +12,7 @@
- [[#4.2 主存储器]]
- [[#4.3 高速缓冲存储器Cache]]
- [[#4.4 虚拟存储器]]
- [[#📖 真题与作业精选]]
- [[#本章小结]]
- [[#例题与解析]]
@@ -219,6 +221,9 @@ $$存储容量 = 存储单元个数 \times 存储字长 / 8$$
假设存储字长为32位4字节存取周期为100ns带宽 = 32位/100ns = 4字节/100ns = 40MBps。
> [!tip] 考试高频考点
> **存储器带宽计算**是作业和考试的常见题型。公式:带宽 = 数据总线宽度 / 存取周期。注意单位换算1B = 8位。例如数据总线宽度32位存取周期200ns则带宽 = 32位/200ns = 160M位/秒 = 20MB/s。见真题精选
### 4.2.4 半导体存储芯片
```mermaid
@@ -238,7 +243,7 @@ $$芯片容量 = 2^{地址线位数} \times 数据线位数$$
存储芯片就像一个小型仓库:地址线告诉仓库你要哪个格子的东西,数据线传送你拿到的东西,译码驱动根据地址找到对应的格子,存储矩阵是存放所有东西的格子,读/写电路控制是取东西还是放东西,片选线选择是哪个仓库。
一个存储芯片有10根地址线和4根数据线容量 = 2¹⁰ × 4 = 1024 × 4 = 4096位 = 512字节。
一个存储芯片有10根地址线和4根数据线容量 = 2^10 x 4 = 1024 x 4 = 4096位 = 512字节。
#### 译码驱动方式
@@ -277,6 +282,9 @@ SRAM就像一个稳定的开关用两个互锁的开关存储信息状态
DRAM就像一个漏水的桶用电容存储电荷表示0和1但电容会漏电需要定期补充刷新每个存储单元只需要1个晶体管和1个电容体积小。电脑的8GB内存条通常使用DRAM。
> [!tip] 考试要点
> DRAM刷新方式的计算是期末考试的高频考点。三种刷新方式的计算方法见下方真题精选第5题。
**刷新方式**
| 方式 | 特点 | 效率 |
@@ -313,10 +321,16 @@ SRAM像高级记事本用特殊墨水写上就不掉写得快不用维护
MROM像印刷好的书出厂时就印好了不能改成本低适合批量生产PROM像一次性写入的光盘用户可以写一次但不能改EPROM像用铅笔写的书可以用橡皮擦掉重写EEPROM用电子橡皮擦更方便Flash是高速电子橡皮擦又快又大。
> [!note] 考试说明
> 4.2.6 ROM部分不在考试范围内了解即可不需要深入掌握。
### 4.2.7 存储器与CPU的连接
#### 存储器容量扩展
> [!tip] 考试高频考点
> 字位扩展是期中/期末考试的必考题型2022-2023期末原题。虽然考试不要求画图但必须掌握芯片数计算和地址分配。具体例题见下方真题精选第4题。
**三种扩展方式**
```mermaid
@@ -359,6 +373,9 @@ graph TB
#### 海明码Hamming Code
> [!tip] 考试高频考点
> 海明码的检错纠错计算是作业和考试的经典题型几乎每年都会考。必须掌握校验位计算、校验位位置安排、错误定位和纠正方法。具体例题见下方真题精选第3题。
**原理**:在数据位中插入多个校验位,通过校验位的组合定位错误位。
**校验位数r满足**$2^r \geq m + r + 1$m为数据位数
@@ -367,6 +384,13 @@ graph TB
8位数据需要4位校验码总位数12位校验位位置1、2、4、8可以纠正1位错误。对于8位数据m=8$2^3 = 8 \geq 12$ 不满足,$2^4 = 16 \geq 13$ 满足所以需要4位校验码。
**海明码解题步骤**
1. 确定校验位数r由 $2^r \geq m + r + 1$ 求解
2. 安排位置校验位放在2的幂次方位置1、2、4、8...),数据位依次填入其余位置
3. 编码每个校验位负责校验特定位置P1校验第1、3、5、7...位P2校验第2、3、6、7...位P4校验第4、5、6、7...位)
4. 检错:计算各校验组的异或值,组合得到错误位号
5. 纠正:翻转错误位即可
---
## 4.3 高速缓冲存储器Cache
@@ -420,6 +444,9 @@ $$e = \frac{T_c}{T_a} = \frac{1}{H + (1-H)r}$$
> [!info] 问题
> 主存块如何放入Cache需要地址映射。
> [!tip] 考试高频考点
> Cache的直接映射和组相联映射是本章最重要的计算题考点。组相联映射涉及地址划分、主存区计算等综合问题必须熟练掌握。具体例题见下方真题精选第2题。
#### 1. 直接映射Direct Mapping
**规则**每个主存块只能映射到Cache的固定行。
@@ -493,6 +520,12 @@ graph LR
组相联映射就像图书馆的分组书架,每本书只能放在固定的组,但可以放在组内的任何书架上。先找对应的组,再在组内搜索,比直接映射灵活,比全相联映射快。
**组相联映射解题关键步骤**
1. 确定Cache组数 = Cache块数 / 每组块数
2. 地址划分高位Tag + 中间组号Index + 低位块内Offset
3. 主存区数 = 主存块数 / Cache组数
4. 每个主存区中的块按组号映射
### 4.3.4 Cache替换策略
> [!info] 问题
@@ -528,6 +561,9 @@ FIFO先进先出最早放上去的文件先被替换简单但可能把
> [!info] 定义
> 虚拟存储器是一种通过硬件和软件结合,使程序认为自己拥有连续完整内存的技术。
> [!note] 考试说明
> 4.4 虚拟存储器不在考试范围内,以下内容仅作了解参考。
虚拟存储器就像一个魔法书架:你的书架(主存)很小,但你的书(程序)很多,通过魔法让你觉得有一个很大的书架。只把常用的书放在书架上,不常用的书放在地下室(辅存),当你要看不在书架上的书时,魔法自动把书从地下室取来。
Windows的虚拟内存系统主存是电脑的8GB内存辅存是硬盘上的页面文件让程序认为自己有32GB内存。
@@ -561,6 +597,129 @@ Windows的虚拟内存系统主存是电脑的8GB内存辅存是硬盘上
---
## 📖 真题与作业精选
> 以下题目来自历年期末考试、期中考试和课后作业,是本章最核心的考查题型。建议先自己做再看答案。
### 真题1存储器带宽计算作业原题
**题目**某计算机数据总线宽度为32位存储器存取周期为200ns求存储器带宽。
**答案**
$$带宽 = \frac{数据总线宽度}{存取周期} = \frac{32位}{200ns} = 160M位/秒 = 20MB/s$$
**解题思路**:带宽 = 数据总线宽度 / 存取周期。注意位和字节的换算160M位/秒 = 160/8 MB/s = 20MB/s。这道题的关键是记住公式并注意单位换算避免混淆位(bit)和字节(Byte)。
### 真题2Cache组相联映射作业原题
**题目**某计算机Cache有64块采用4路组相联映射。主存有4096块每块128字。求(1) Cache的组数(2) Cache地址位数(3) 主存地址位数;(4) 主存可分为多少个区。
**答案**
(1) Cache组数 = 64 / 4 = **16组**
(2) Cache地址位数Cache总字数 = 64 x 128 = 8192字地址位数 = log2(8192) = **13位**
(3) 主存地址位数:主存总字数 = 4096 x 128 = 524288字地址位数 = log2(524288) = **19位**
(4) 主存区数 = 主存块数 / Cache组数 = 4096 / 16 = **256区**
**解题思路**
- 4路组相联意味着每组4块
- 组数 = 总块数 / 每组块数
- 地址位数用log2计算
- 主存区数 = 主存块数 / Cache组数表示主存按Cache大小划分成多少个区每个区内的块通过组相联映射到Cache
- 地址划分Tag(8位) + Index(4位) + Offset(7位) = 19位
### 真题3海明码检错纠错作业原题
**题目**接收到的海明码为1100000偶性配置请判断传输是否出错若出错请纠正并给出欲传送的原始信息。
**答案**
接收到的码字按位置排列1 1 0 0 0 0 0
校验位位置为1、2、4分别计算
- P1 = 位置1 XOR 位置3 XOR 位置5 XOR 位置7 = 1 XOR 0 XOR 0 XOR 0 = **1**
- P2 = 位置2 XOR 位置3 XOR 位置6 XOR 位置7 = 1 XOR 0 XOR 0 XOR 0 = **1**
- P4 = 位置4 XOR 位置5 XOR 位置6 XOR 位置7 = 0 XOR 0 XOR 0 XOR 0 = **0**
错误位号 = P4P2P1 = 011 = **第3位出错**
纠正第3位1 1 **1** 0 0 0 0 → 纠正后码字为 **1110000**
提取原始信息去除校验位1、2、4保留数据位3、5、6、7**1 0 0 0**
**欲传送的信息为1000。**
**解题思路**
1. 偶性配置各校验组中1的个数应为偶数否则该组校验结果为1
2. P1覆盖位置1、3、5、7二进制最低位为1的位置
3. P2覆盖位置2、3、6、7二进制次低位为1的位置
4. P4覆盖位置4、5、6、7二进制第三位为1的位置
5. 三个校验位的结果组合P4P2P1即为出错位号0表示无错
### 真题4存储器扩展2022-2023期末原题
**题目**某CPU有16根地址线、8根数据线。现需要设计一个存储系统系统程序区4K使用2K×8位的ROM芯片用户程序区12K使用4K×8位的RAM芯片。使用74LS138译码器作为片选。请确定所需芯片数量并分析地址分配。
**答案**
**ROM部分系统程序区**
- 需要ROM芯片数 = 4K / 2K = **2片** 2K×8位ROM
- 地址范围每片ROM用2K = 2^11需要11根地址线A10~A0
- 两片ROM用A11做片选区分地址范围分别为 0000H~07FFH 和 0800H~0FFFH
**RAM部分用户程序区**
- 需要RAM芯片数 = 12K / 4K = **3片** 4K×8位RAM
- 每片RAM用4K = 2^12需要12根地址线A11~A0
- 三片RAM用高位地址通过74LS138译码器做片选
**总芯片数**ROM 2片 + RAM 3片 = **5片**
**74LS138译码器连接**
- 将A15、A14、A13接入74LS138的C、B、A输入端
- 译码器的8个输出分别对应不同的地址区间
- 选择合适的输出端连接各芯片的片选信号
**解题思路**
1. 分别计算每种芯片需要的数量:目标容量 / 单片容量
2. 位扩展不需要数据线都是8位与CPU匹配
3. 字扩展用高位地址做片选,通过译码器统一管理
4. 地址分配时注意ROM和RAM的地址范围不能重叠ROM通常从低地址开始
### 真题5DRAM刷新复习资料原题
**题目**某8K×8位DRAM芯片内部排列为256×256存取周期为0.1us。分别计算集中刷新、分散刷新和异步刷新三种方式下的相关参数。
**答案**
芯片内部为256行x256列需要刷新256行。刷新一行的时间等于一个存取周期0.1us。
**集中刷新**
- 刷新全部256行所需时间 = 256 × 0.1us = **25.6us**
- 这25.6us称为"死区"期间CPU不能访问存储器
**分散刷新**
- 每个存取周期中,前半段用于正常读写,后半段用于刷新一行
- 相当于存取周期变为 0.1 + 0.1 = **0.2us**
- 优点是无死区,缺点是存取周期变长,效率降低
**异步刷新**
- 将256行的刷新任务均匀分散到整个刷新周期通常2ms
- 相邻两行刷新的时间间隔 = 2ms / 256 = **7.8125us**
- 每隔7.8125us刷新一行每次刷新只占用0.1us(一个存取周期)
- 是集中刷新和分散刷新的折中方案
**解题思路**
1. 先确定需要刷新的行数:内部排列的行数
2. 集中刷新:刷新全部行的时间即为死区时间
3. 分散刷新:每个存取周期增加一个刷新周期
4. 异步刷新总刷新周期通常2ms/ 行数 = 刷新间隔
---
## 📝 本章小结
### 核心概念
@@ -598,7 +757,7 @@ Windows的虚拟内存系统主存是电脑的8GB内存辅存是硬盘上
**答案**
24位地址线可以表示 2²⁴ = 16777216 个地址8位数据线表示每个单元存8位数据1字节存储容量 = 16777216 × 8位 = 16777216字节 = 16MB。
24位地址线可以表示 2^24 = 16777216 个地址8位数据线表示每个单元存8位数据1字节存储容量 = 16777216 x 8位 = 16777216字节 = 16MB。
这就像一个仓库有16777216个格子每个格子能放8个鸡蛋总容量就是16MB。
@@ -655,17 +814,21 @@ Windows的虚拟内存系统主存是电脑的8GB内存辅存是硬盘上
**主存组成**MAR地址→ 译码器 → 存储体 ↔ MDR数据加上控制电路。
**容量扩展三种方式**:位扩展(增加字长,数据线串联)、字扩展(增加字数,片选线用高位地址)、字位同时扩展。
**容量扩展三种方式**:位扩展(增加字长,数据线串联)、字扩展(增加字数,片选线用高位地址)、字位同时扩展。总芯片数 = 位扩展数 x 字扩展数。**考试提醒**:必须会计算芯片数量和地址分配,期末曾考过用译码器做片选的综合题。
**Cache三个核心问题**:①映射(直接/全相联/组相联②替换FIFO/LRU/LFU/随机)③写策略(写直达/写回)。
**Cache命中率公式**:平均访问时间 T_a = H·T_c + (1-H)·T_m。命中率95%、Cache 10ns、主存100ns → T_a = 14.5ns。
**Cache命中率公式**:平均访问时间 $T_a = H·T_c + (1-H)·T_m$。命中率95%、Cache 10ns、主存100ns → T_a = 14.5ns。
**直接映射**i = j mod m主存块号 mod Cache行数简单但冲突多。**组相联**:折中方案,先定组再组内任意放
**直接映射**$i = j \mod m$(主存块号 mod Cache行数简单但冲突多。**组相联**:折中方案,先定组$q = j \mod u$)再组内任意放。**考试提醒**组相联映射的地址划分是高频考点必须掌握Tag/Index/Offset的计算
**虚拟存储器**页式(固定大小页面+页表)、段式(逻辑分段+段表)、段页式(先分段再分页)
**存储器带宽**带宽 = 数据总线宽度 / 存取周期注意位与字节的换算1B = 8bit。**考试提醒**:这是最基础的计算题,作业原题直接考过
**海明码**校验位数r满足 2^r m+r+18位数据需要4位校验码可纠正1位错误。
**海明码**校验位数r满足 $2^r \geq m+r+1$8位数据需要4位校验码可纠正1位错误。解题步骤:确定校验位数 → 安排位置2的幂次方→ 编码 → 检错(各组异或)→ 纠正(翻转错误位)。**考试提醒**:海明码纠错计算是几乎每年必考的题型,务必熟练。
**DRAM刷新**集中刷新有死区、分散刷新无死区但效率低、异步刷新折中。计算核心256行排列刷新一行=一个存取周期。**考试提醒**:三种刷新方式的参数计算是期末复习重点。
**不考内容提醒**存储器结构时序、4.2.6ROM、4.4(虚拟存储器)不在考试范围内,复习时可跳过。
---
@@ -680,3 +843,4 @@ Windows的虚拟内存系统主存是电脑的8GB内存辅存是硬盘上
*本章难度:⭐⭐⭐⭐⭐ 困难*
*重要程度:⭐⭐⭐⭐⭐ 重点*
*考试高频考点存储器带宽、字位扩展、Cache映射、海明码、DRAM刷新*

View File

@@ -2,6 +2,8 @@
> 📖 本章介绍I/O设备与主机交换信息的三种控制方式程序查询、中断和DMA。
> 🎯 重点理解中断处理过程和DMA工作原理
> ⚠️ 期中/期末重点章中断处理过程、中断屏蔽字、DMA工作方式、三种I/O方式对比都是高频考点
> 📝 课后习题重点关注 5.1~5.4、5.27、5.28、5.33~5.35
---
@@ -14,6 +16,7 @@
- [[#5.5 程序中断方式]]
- [[#5.6 DMA方式]]
- [[#本章小结]]
- [[#📖 真题与作业精选]]
- [[#例题与解析]]
---
@@ -179,7 +182,7 @@ graph TB
- **优点**:简单,容易实现
- **缺点**CPU要不断查询效率低
早期计算机和简单嵌入式系统常用这种方式CPU要等打印机打印完才能做其他事情。
这是三种I/O方式中考查频率最高的一种考试常以对比题形式出现。早期计算机和简单嵌入式系统常用这种方式CPU要等打印机打印完才能做其他事情。
---
@@ -204,6 +207,8 @@ graph TB
### 5.5.3 中断处理过程
> 这是考试高频考点,期中/期末都曾出过简答题或论述题,务必完整背诵七个步骤。
```mermaid
graph TB
A[中断请求] --> B[中断判优]
@@ -230,6 +235,15 @@ graph TB
7. **中断返回**:返回原程序继续执行,开中断允许新的中断
> [!important] 中断响应过程四步要点(考试常考简答)
> 中断响应的具体步骤可以概括为四步:
> 1. **关中断** -- 防止新中断打断响应过程
> 2. **保存断点** -- 将PC程序计数器和PSW程序状态字保存到堆栈中
> 3. **识别中断源** -- 确定是哪个设备发出的中断
> 4. **转入服务程序入口** -- 跳转到对应的中断服务程序
>
> 注意断点信息PC和PSW通常保存在**堆栈**中,这是考试经常考的细节。
这就像你正在工作时有人敲门:有人按门铃(中断请求),如果有多个人按门铃决定先开哪个门(中断判优),你决定去开门(中断响应),把正在做的工作记下来(保存现场),去开门处理事情(中断服务),回来看看之前做到哪里了(恢复现场),继续之前的工作(中断返回)。
当你按键盘时键盘向CPU发送中断请求如果有其他中断键盘中断可能优先级较低CPU响应键盘中断保存当前程序的状态执行键盘中断服务程序处理按键恢复之前保存的状态返回原程序继续执行。
@@ -255,10 +269,20 @@ graph TB
### 5.5.6 中断屏蔽
> 中断屏蔽字的设置是考试高频题型,期中/期末均出现过。务必掌握屏蔽字的构造方法对于n个中断源屏蔽字为n位第i位为1表示屏蔽该中断源为0表示开放。高优先级的中断源会屏蔽所有比自己低的中断源。
**原理**:通过设置中断屏蔽字,可以禁止某些中断。
中断屏蔽就像你设置了"请勿打扰"设置了门铃响了你也不去开门不设置门铃响了你就去开门。CPU正在处理重要任务时屏蔽某些中断CPU空闲时允许所有中断。
**屏蔽字构造规则**
- 每个中断源对应一个n位的屏蔽字n为中断源总数
- 屏蔽字的第i位为1表示该中断源处理时屏蔽第i个中断源
- 为0表示允许开放该中断源
- 高优先级中断源会屏蔽所有比自己优先级低的中断源
屏蔽字的构造方法看下面的真题精选部分有详细例题。
---
## 5.6 DMA方式
@@ -272,6 +296,8 @@ DMA就像直达快递传统方式你要从A地寄东西到B地必须经过C
### 5.6.2 DMA的工作方式
> DMA的三种工作方式是本章核心知识点考试常以简答或对比题形式出现。
| 方式 | 特点 | 优点 | 缺点 |
|------|------|------|------|
| **停止CPU访问** | DMA传送时CPU停止访问内存 | 简单 | CPU效率低 |
@@ -313,6 +339,8 @@ graph TB
### 5.6.4 DMA与中断的区别
> DMA与中断的区别是考试必考内容几乎每年都有相关题目建议完整记忆下面的对比表。
| 特性 | DMA | 中断 |
|------|-----|------|
| **数据传送** | I/O和内存直接传送 | 通过CPU传送 |
@@ -356,6 +384,71 @@ DMA像直达快递东西直接从A地寄到B地不经过C地速度快C地
---
## 📖 真题与作业精选
> 以下题目来自期中/期末考试真题、作业四及复习资料,覆盖本章高频考点,建议认真做完并理解。
### 精选1中断屏蔽字设置复习资料原题
**题目**设有4个中断源 A、B、C、D硬件优先级为 A > B > C > D。现需要改变中断处理顺序为 C > A > D > B请设置各中断源的中断屏蔽字。
**答案**
屏蔽字为4位从左到右分别对应 A、B、C、D。0 表示开放1 表示屏蔽。
| 中断源 | 处理顺序 | 屏蔽字 (A B C D) | 解释 |
|--------|----------|-------------------|------|
| A | 第2 | **1 1 0 1** | A屏蔽自己和B、D开放CC优先级高于A |
| B | 第4 | **0 1 0 0** | B只屏蔽自己其余全部开放 |
| C | 第1 | **1 1 1 1** | C优先级最高屏蔽所有 |
| D | 第3 | **0 1 0 1** | D屏蔽自己和B开放A和C |
**构造方法**:对于某个中断源 X查看期望的处理优先级顺序。X 在处理过程中,所有优先级**低于** X 的中断源都应被屏蔽对应位设为1X 自身也被屏蔽,而所有优先级**高于** X 的中断源应被开放对应位设为0
- C 处理时C 优先级最高,没有比它更高的,全部屏蔽 -> `1111`
- A 处理时:只有 C 比 A 高,所以开放 C屏蔽 A、B、D -> `1101`
- D 处理时C 和 A 比 D 高,所以开放 C 和 A屏蔽 D 和 B -> `0101`
- B 处理时A、C、D 都比 B 高,全部开放,只屏蔽 B 自身 -> `0100`
> 这是中断屏蔽字的经典考法,期中/期末都曾出现。做题关键:先确定期望的优先级顺序,然后对每个中断源,开放所有优先级比自己高的,屏蔽自己和所有优先级比自己低的。
### 精选2三种I/O方式对比作业四原题
**题目**对比程序查询、程序中断和DMA三种I/O控制方式的工作原理和特点。
**答案**
| 对比项 | 程序查询 | 程序中断 | DMA |
|--------|----------|----------|-----|
| **工作原理** | CPU全程轮询设备状态 | 设备就绪后触发中断通知CPU | 硬件直接在I/O设备和内存间传送数据 |
| **CPU参与度** | 全程参与 | 传送时参与 | 仅在初始化和结束时参与 |
| **CPU效率** | 最低CPU被占用 | 较高,但频繁中断有开销 | 最高CPU基本被解放 |
| **实现复杂度** | 最简单 | 中等 | 最复杂,硬件成本高 |
| **适用场景** | 简单嵌入式系统 | 中等数据量,如键盘鼠标 | 大量高速数据传送,如硬盘 |
三种方式的核心区别在于CPU参与程度程序查询CPU全程轮询效率最低程序中断由设备就绪触发中断解放了CPU但频繁中断仍有开销DMA通过专用硬件直接传送速度最快效率最高但硬件成本也最高。
> 这是三种I/O方式对比的标准答题框架考试时按这个表格回答即可拿到满分。
### 精选3中断响应过程复习资料原题
**题目**简述CPU中断响应的具体过程。
**答案**
CPU中断响应过程分为四步
1. **关中断**CPU关闭中断允许触发器防止在响应过程中被新的中断打断
2. **保存断点**将PC程序计数器和PSW程序状态字压入堆栈保存确保中断处理完后能正确返回
3. **识别中断源**:通过硬件或软件方法确定是哪个设备发出的中断请求
4. **转入服务程序入口**将中断服务程序的入口地址送入PC开始执行中断服务程序
注意断点信息PC和PSW通常保存在**堆栈**中。关中断是第一步,因为如果在保存断点之前被新中断打断,断点信息就会丢失或出错。
> 中断响应过程和中断处理过程是两个不同的概念:中断响应是四步(关中断、保存断点、识别中断源、转入入口),中断处理是七步(请求、判优、响应、保存现场、服务、恢复现场、返回)。考试中注意区分。
---
## 🧪 例题与解析
### 例题1中断处理过程
@@ -410,7 +503,7 @@ DMA的完整工作过程CPU初始化DMA设置参数DMA请求I/O
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
> 考前快速过一遍30秒回忆整章核心。本章是期中/期末重点章常见题型简答题中断处理过程、三种I/O对比、计算/分析题中断屏蔽字设置、对比题DMA vs 中断)。课后习题重点做 5.1~5.4、5.27、5.28、5.33~5.35。
**三种I/O方式**CPU参与度从高到低程序查询CPU一直等→ 程序中断设备准备好通知CPU→ DMAI/O和内存直接传CPU只管开头和结尾
@@ -418,13 +511,17 @@ DMA的完整工作过程CPU初始化DMA设置参数DMA请求I/O
**中断处理七步**:中断请求 → 中断判优 → 中断响应(关中断)→ 保存现场 → 中断服务 → 恢复现场 → 中断返回(开中断)。
**中断响应四步**:关中断 → 保存断点PC和PSW到堆栈→ 识别中断源 → 转入服务程序入口。注意区分"中断响应"和"中断处理"两个概念。
**中断屏蔽字**n个中断源用n位表示0开放1屏蔽。高优先级中断源处理时屏蔽所有低优先级中断源。这是考试常考的计算/分析题。
**中断优先级**:硬件故障 > 软件中断 > I/O中断 > 用户程序。
**DMA三大要点**①I/O和内存直接传送不经过CPU ②CPU只在初始化和结束时参与 ③每个机器周期结束时响应(比中断更快)。
**DMA三种工作方式**停止CPU访问简单但CPU空等、周期挪用CPU不访存时DMA传送、交替访问效率最高但硬件复杂
**DMA vs 中断**DMA适合大量数据传送硬盘中断适合少量数据键盘。DMA在机器周期末响应中断在指令周期末响应。
**DMA vs 中断**DMA适合大量数据传送硬盘中断适合少量数据键盘。DMA在机器周期末响应中断在指令周期末响应。DMA数据不经过CPU中断数据经CPU中转。
---
@@ -438,4 +535,5 @@ DMA的完整工作过程CPU初始化DMA设置参数DMA请求I/O
---
*本章难度:⭐⭐⭐⭐ 中等*
*重要程度:⭐⭐⭐⭐ 重*
*重要程度:⭐⭐⭐⭐点考试章节*
*必做习题5.1~5.4、5.27、5.28、5.33~5.35*

View File

@@ -2,6 +2,7 @@
> 📖 本章介绍计算机中数据的表示方法和算术运算,是课程的重点和难点。
> 🎯 重点理解补码运算和浮点数表示
> ⚠️ 考试范围不考6.3.4、6.4.2、6.4.3、6.5节。重点复习例题6.2~6.4、6.6、6.8~6.23、6.29、6.30
---
@@ -13,6 +14,7 @@
- [[#6.4 定点运算]]
- [[#6.5 浮点运算]]
- [[#本章小结]]
- [[#真题与作业精选]]
- [[#例题与解析]]
---
@@ -222,9 +224,20 @@ graph LR
### 6.3.3 IEEE 754标准
> ⚠️ **这是考试高频考点**IEEE 754格式转换在期中考试和样卷中都出现过。
**单精度浮点数32位**符号位1位阶码8位移码表示尾数23位
**双精度浮点数64位**符号位1位阶码11位移码表示尾数52位
**IEEE 754格式要点**
- 阶码采用移码表示,偏移量为 $2^{n-1}-1$单精度偏移127双精度偏移1023
- 尾数隐含一个整数位1隐含的"1"),实际存储的是小数部分
- 阶码全0和全1有特殊含义0、无穷大、NaN
> [!example] 示例IEEE 754转换
> 十进制-53 → IEEE 754单精度符号位1阶码132偏移后尾数1.10101
> 详细过程见下方"真题与作业精选"部分
IEEE 754标准是浮点数的"国家标准"单精度32位精度较低但速度快用于大多数图形处理和科学计算双精度64位精度高但速度慢用于高精度科学计算和金融计算。
---
@@ -233,32 +246,23 @@ IEEE 754标准是浮点数的"国家标准"单精度32位精度较低但速
### 6.4.1 移位运算
> ⚠️ **算术移位是作业原题考点**,不同编码(原码、补码、反码)的移位规则不同,需要特别注意。
**算术移位**左移相当于乘以2右移相当于除以2
**逻辑移位**左移高位移出低位补0右移低位移出高位补0
**不同编码的移位规则**
| 编码 | 左移低位补 | 右移高位补 |
|------|-----------|-----------|
| 原码 | 补0 | 补0 |
| 反码 | 补0正数/补1负数 | 补0正数/补1负数 |
| 补码 | 补0 | 正数补0负数补1即补符号位 |
**注意**算术左移可能溢出。比如原码1.1101000左移一位得到1.1010000最高数值位的1被移出导致溢出。这是考试中常见的陷阱三种编码的移位结果可能不同具体示例见"真题与作业精选"部分。
算术移位像移动小数点左移小数点向右移动数值变大右移小数点向左移动数值变小。逻辑移位所有位向左或向右移动。1010左移1位变成1010010→20
### 6.4.2 加减运算
**补码加减运算**:加法直接相加,减法减数变补码后相加
**溢出判断**:正溢出两个正数相加结果为负,负溢出两个负数相加结果为正
补码加减运算像时钟运算9+7=16≡4(mod 12)9-5=9+7=16≡4(mod 12)。127+1=-1288位补码溢出
### 6.4.3 乘法运算
**原码乘法**:符号位单独处理,数值部分相乘
**补码乘法**:直接用补码相乘
乘法运算像重复加法10×13=130-6×-3=18。
### 6.4.4 除法运算
**原码除法**:符号位单独处理,数值部分相除
**补码除法**:直接用补码相除
除法运算像重复减法10÷2=5-6÷2=-3。
**逻辑移位**左移高位移出低位补0右移低位移出高位补0
---
@@ -266,6 +270,8 @@ IEEE 754标准是浮点数的"国家标准"单精度32位精度较低但速
### 6.5.1 浮点加减运算
> ⚠️ 6.5节不在考试范围内,以下内容仅供了解。
**步骤**
1. **对阶**:使两个数的阶码相同
2. **尾数运算**:对阶后进行尾数加减
@@ -316,6 +322,135 @@ IEEE 754标准是浮点数的"国家标准"单精度32位精度较低但速
---
## 📖 真题与作业精选
> 以下是来自期中考试、样卷和课后作业的真实题目,覆盖本章核心考点。
### 真题1补码加减运算期中原题
**题目**:已知 A=-87, B=53用8位补码计算 A-B。
**解答过程**
首先求出A和B的补码表示
- A = -8787的二进制为01010111取反加1得 [A]补 = 10101001
- B = 5353的二进制为00110101[B]补 = 00110101
- A - B = A + (-B),需要求 [-B]补B的补码取反加1得 [-B]补 = 11001011
补码相加:
```
10101001 (A的补码)
+ 11001011 (-B的补码)
-----------
1 01110100 最高位进位丢弃
```
结果 [A-B]补 = 01110100真值为 +116。
**判断溢出**A是负数符号位1-B是负数符号位1两个负数相加结果为正数符号位0发生**负溢出**。
> 💡 这道题展示了补码减法的完整过程:减法转化为加法,以及双符号位溢出判断法——两个负数相加得正数即为溢出。
### 真题2IEEE 754转换样卷原题
**题目**将IEEE 754单精度浮点数 C2540000H 转换为十进制。
**解答过程**
十六进制转二进制C2540000H = 11000010 01010100 00000000 00000000
按IEEE 754格式拆分
- 符号位:**1**(负数)
- 阶码:**10000100** = 132偏移后 e = 132 - 127 = 5
- 尾数:**01010100 00000000 00000000**加上隐含的1实际尾数为 1.01010100... = 1.10101
计算结果:
$$-(1.10101)_2 \times 2^5 = -110101.0_2 = -(53)_{10}$$
> 💡 IEEE 754转换是高频考点步骤十六进制→二进制→拆分符号/阶码/尾数→阶码减偏移量→组装尾数加隐含1→计算结果。考试时务必注意阶码偏移量是127单精度或1023双精度
### 真题3浮点数表示期中原题
**题目**:用浮点数表示 x₁=7.375 和 x₂=-86.5,分别写出阶码和尾数的原码及补码形式。
**解答过程**
**x₁ = 7.375**
- 转换为二进制7.375 = 111.011 = 0.111011 ×规格化
- 阶码38位原码00000011
- 尾数0.111011补足位数0.1110110000
- 因为是正数,原码 = 补码
**x₂ = -86.5**
- 转换为二进制86.5 = 1010110.1 = 0.10101101 × 2⁷规格化
- 阶码78位原码00000111
- 尾数为负数:原码为 1.1010110100补码需要对负数尾数取反加1
> 💡 浮点数表示需要注意1规格化尾数最高位为12阶码和尾数的符号分开处理3负数尾数的补码表示不要遗漏。这也是期中考试考过的原题。
### 真题4算术移位第6章作业原题
**题目**:对以下三个数分别进行算术左移一位,比较三种编码的结果。
- [x]原 = 1.1101000
- [y]补 = 1.1101000
- [z]反 = 1.1101000
**解答过程**
**原码左移**符号位不变数值位整体左移低位补0。
- 1.1101000 → 1.1010000
- 原码左移后最高数值位的1被移出发生**溢出**,结果出错。
**补码左移**符号位不变数值位整体左移低位补0。
- 1.1101000 → 1.1010000
- 补码的左移规则与原码相同低位补0此结果正确。
**反码左移**负数反码低位补1。
- 1.1101000 → 1.101000**1**
- 反码负数左移时低位补1结果正确。
> 💡 三种编码左移规则的区别是作业重点原码和补码左移低位补0但原码需额外判断溢出反码负数低位补1。这些细微差异是考试中容易丢分的地方。
---
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
**本章考试重点排序**(按出现频率):
1. **补码加减运算** —— 期中必考,期末高频,掌握溢出判断(双符号位法)
2. **IEEE 754浮点数转换** —— 样卷、期中均有原题熟记偏移量127/1023
3. **浮点数规格化表示** —— 期中原题,注意阶码和尾数分别编码
4. **算术移位** —— 作业原题,三种编码移位规则的区别
5. **Booth算法补码乘法** —— 课后习题重点,理解每步的判断规则
**四种编码速记**:原码(符号+绝对值,零有两种)、补码(正代负,零唯一,运算最简单)、反码(补码-1过渡用、移码补码符号取反便于比较大小
**正数**:原码=反码=补码。**负数**:补码=反码+1。口诀正数不变负数取反加1。
**补码范围**n位-2^(n-1) ~ +(2^(n-1)-1)。8位补码-128~127。-128没有对应原码
**补码加减运算**:加法直接加,减法变补码后加。溢出判断:两个正数相加得负数(正溢出),两个负数相加得正数(负溢出)。口诀:同号相加看结果,异号相加不会溢出。
**定点数**:小数点位置固定。定点整数(小数点在末尾)、定点小数(小数点在符号位后)。
**浮点数 = 尾数 × 2^阶码**类似科学计数法。规格化尾数最高位为1左规尾数左移阶码减1右规尾数右移阶码加1。
**IEEE 754单精度32位**1位符号 + 8位阶码移码偏移127+ 23位尾数。隐含整数位1。阶码全0和全1有特殊含义。
**IEEE 754转换速查**
- 十六进制→二进制→拆分1+8+23
- 阶码值 - 127 = 实际指数
- 尾数前加隐含的1.乘以2的指数次方
- 符号位1为负0为正
**浮点加减五步**:对阶(小阶向大阶看齐)→ 尾数运算 → 规格化 → 舍入 → 溢出判断。
**移位运算**:算术左移=×2算术右移=÷2。逻辑移位补0算术移位保持符号位。注意原码、补码、反码移位时低位补值不同。
---
## 🧪 例题与解析
### 例题1补码计算
@@ -377,30 +512,6 @@ IEEE 754标准是浮点数的"国家标准"单精度32位精度较低但速
---
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
**四种编码速记**:原码(符号+绝对值,零有两种)、补码(正代负,零唯一,运算最简单)、反码(补码-1过渡用、移码补码符号取反便于比较大小
**正数**:原码=反码=补码。**负数**:补码=反码+1。口诀正数不变负数取反加1。
**补码范围**n位-2^(n-1) ~ +(2^(n-1)-1)。8位补码-128~127。-128没有对应原码
**补码加减运算**:加法直接加,减法变补码后加。溢出判断:两个正数相加得负数(正溢出),两个负数相加得正数(负溢出)。
**定点数**:小数点位置固定。定点整数(小数点在末尾)、定点小数(小数点在符号位后)。
**浮点数 = 尾数 × 2^阶码**类似科学计数法。规格化尾数最高位为1左规尾数左移阶码减1右规尾数右移阶码加1。
**IEEE 754单精度32位**1位符号 + 8位阶码移码偏移127+ 23位尾数。阶码全0和全1有特殊含义。
**浮点加减五步**:对阶(小阶向大阶看齐)→ 尾数运算 → 规格化 → 舍入 → 溢出判断。
**移位运算**:算术左移=×2算术右移=÷2。逻辑移位补0算术移位保持符号位。
---
## 🔗 相关链接
- [[00_计算机组成原理学习指南]] - 返回主目录
@@ -412,3 +523,4 @@ IEEE 754标准是浮点数的"国家标准"单精度32位精度较低但速
*本章难度:⭐⭐⭐⭐⭐ 困难*
*重要程度:⭐⭐⭐⭐⭐ 重点*
*考试提醒本章是期中考试和期末考试的核心章节补码运算和IEEE 754几乎必考*

View File

@@ -2,6 +2,10 @@
> 📖 本章介绍机器指令系统的分类、寻址方式和指令格式设计。
> 🎯 重点理解寻址方式和指令格式设计
>
> **考试范围**7.1~7.4.1、7.5节不考,但 RISC vs CISC 对比属于常考内容。
> **复习重点**例题7.1~7.7课后习题7.1~7.8、7.16~7.19
> **本章核心考点**:寻址方式分析(有效地址+操作数、扩展操作码设计、CISC vs RISC、指令格式分析
---
@@ -14,6 +18,7 @@
- [[#7.5 RISC技术]]
- [[#本章小结]]
- [[#例题与解析]]
- [[#真题与作业精选]]
---
@@ -89,6 +94,9 @@ graph TB
扩展操作码就像邮政编码系统短操作码常用指令用短编码节省空间长操作码不常用指令用长编码种类多。4位操作码15条三地址指令1111保留8位操作码15条二地址指令12位操作码15条一地址指令16位操作码16条零地址指令。
> [!tip] 考试提示
> 扩展操作码设计是期中/期末的高频考点。核心思路先确定操作码需要的位数操作种类数取log2向上取整再用剩余位作为地址码。如果要扩大寻址范围可以考虑间接寻址用间接寻址可以把有效地址扩展到整个存储空间
---
## 7.2 操作数类型和操作类型
@@ -122,6 +130,9 @@ graph TB
## 7.3 寻址方式
> [!tip] 考试提示
> 寻址方式分析是本章最高频的考点几乎每年都会出题。关键要会算有效地址EA和操作数并能判断每种寻址方式需要访存几次。
### 7.3.1 指令寻址
**顺序寻址**PC = PC + 1按顺序执行指令
@@ -141,12 +152,27 @@ graph TB
**寄存器间接寻址**操作数地址在寄存器中比如MOV A, [R1]。盒子里有一张纸条告诉你东西在哪里,灵活可以动态改变地址,需要访问内存。
**基址寻址**操作数地址 = 基址 + 偏移量比如MOV A, [BASE + 100]。东西在仓库的某个区域,用区域号+偏移量定位,适合程序重定位。
**基址寻址**有效地址 EA = A + (BR)其中BR是基址寄存器内容不变A是形式地址可变。东西在仓库的某个区域,用区域号+偏移量定位,适合程序重定位。
**变址寻址**操作数地址 = 变址 + 偏移量比如MOV A, [INDEX + 100]。东西在仓库的某个位置,用变址+偏移量定位,适合数组访问。
**变址寻址**有效地址 EA = A + (IX)其中IX是变址寄存器内容可变A是形式地址不变。东西在仓库的某个位置,用变址+偏移量定位,适合数组访问。
> [!important] 基址 vs 变址的区别(考试常考)
> - **基址寻址**BR基址寄存器内容固定形式地址A可变。用于程序重定位。
> - **变址寻址**IX变址寄存器内容可变形式地址A固定。用于数组遍历等。
>
> 例题:变址寄存器(IX)=0004HPC=0003H。
> - 变址寻址EA = A + (IX) = A + 0004HA不变IX可变。
> - 基址寻址EA = A + (BR) = A + (BR)BR不变A可变。
**相对寻址**:操作数地址 = PC + 偏移量比如JMP +10跳转到PC+10的位置。东西在当前位置的某个偏移位置适合相对跳转。
> [!tip] 访存次数分析(复习资料原题)
> 不同寻址方式的访存次数是考试重点:
> - `ADD 04H, R0`直接寻址3次访存取指2次 + 取操作数1次
> - `ADD (04H), R0`间接寻址4次访存取指2次 + 取数1次 + 写回1次
>
> 规律:每多一层间接,就多一次访存。考试中要仔细区分直接寻址和间接寻址。
---
## 7.4 指令格式
@@ -161,30 +187,32 @@ graph TB
指令格式设计就像设计邮票:规整性指令长度对齐便于译码,高效性常用指令短不常用指令长,兼容性新处理器能运行旧程序,扩展性保留一些编码用于未来扩展。
### 7.4.2 指令格式举例
**x86指令格式**:变长指令,格式复杂,代码密度高兼容性好,译码复杂。
**ARM指令格式**:固定长度指令,格式简单,译码简单速度快,代码密度低。
---
## 7.5 RISC技术
> [!tip] 考试提示
> CISC vs RISC 对比是本章的经典考点,经常以简答题或对比题的形式出现。要记住两者在指令数量、指令长度、控制方式、流水线支持等方面的区别。
### 7.5.1 RISC与CISC对比
| 特性 | RISC | CISC |
|------|------|------|
| 指令数量 | 少 | 多 |
| 指令数量 | 少(几十条) | 多(几百条) |
| 指令长度 | 固定 | 可变 |
| 寻址方式 | 简单 | 复杂 |
| 寻址方式 | 简单(少) | 复杂(多) |
| 指令周期 | 单周期 | 多周期 |
| 流水线 | 支持 | 部分支持 |
| 流水线 | 支持(友好) | 部分支持 |
| 编译器 | 复杂 | 简单 |
| 控制方式 | 硬布线控制 | 微程序控制 |
| 代表 | ARM、MIPS | x86 |
RISC精简指令集指令少简单速度快容易实现流水线但编译器复杂代码密度低CISC复杂指令集指令多复杂功能强编译器简单代码密度高但难以实现流水线速度慢。
ARM处理器手机、MIPS处理器嵌入式是RISCx86处理器个人电脑是CISC。
> 记忆口诀RISC——少而精、快而简、硬布线、流水线CISC——多而全、慢而杂、微程序、编译简。
### 7.5.2 RISC特点
**主要特点**
@@ -217,6 +245,7 @@ ARM处理器手机、MIPS处理器嵌入式是RISCx86处理器
| 操作码 | Operation Code | 指明操作类型 |
| 地址码 | Address Code | 指明操作数地址 |
| 寻址方式 | Addressing Mode | 找到操作数的方式 |
| 有效地址 | Effective Address | 实际访问的存储器地址 |
| RISC | Reduced Instruction Set Computer | 精简指令集计算机 |
| CISC | Complex Instruction Set Computer | 复杂指令集计算机 |
@@ -292,22 +321,101 @@ RISC像精简工具工具少简单速度快容易使用效率高但功能
---
## 📖 真题与作业精选
> 以下题目来自期中/期末考试、课后作业及复习资料,是本章最常考的题型。
### 真题1寻址方式求有效地址复习资料原题
**题目**:已知变址寄存器(IX)=0004HPC=0003H分别说明变址寻址和基址寻址的有效地址计算方式并指出两者的关键区别。
**答**
- 变址寻址EA = A + (IX) = A + 0004H。这里形式地址A固定不变变址寄存器IX的内容可以改变适合用于数组遍历——每次循环只需修改IX即可访问数组的不同元素。
- 基址寻址EA = A + (BR)。这里基址寄存器BR的内容固定不变形式地址A可以改变适合程序重定位——整个程序加载到不同内存区域时只需修改BR。
**关键区别**基址时BR不变A可变程序搬家只需改BR变址时A不变IX可变遍历数组只需改IX
### 真题2指令访存次数复习资料原题
**题目**:分析以下指令各需几次访存:
1. `ADD 04H, R0`
2. `ADD (04H), R0`
**答**
1. `ADD 04H, R0`直接寻址3次访存。
- 取指令需要2次访存PC先指向指令地址取指令后PC+1若指令跨存储字边界则需取两次
- 取操作数需要1次访存直接从地址04H读取操作数
2. `ADD (04H), R0`间接寻址4次访存。
- 取指令需要2次访存
- 间接寻址需要先从04H取出真正的地址再从该地址取操作数共2次访存
- 注意:如果该指令还需要写回结果到内存,访存次数还会增加
> 规律总结:直接寻址比间接寻址少一次访存。考试中要注意区分直接寻址的`04H`和间接寻址的`(04H)`——括号表示"间接"。
### 真题3扩展操作码设计期中原题
**题目**某指令系统共有78种操作指令字长为16位。问
1. 操作码至少需要多少位?
2. 剩余多少位可用于地址码?
3. 若要将寻址范围扩大到2^16可以采用什么方法
**答**
1. 78种操作操作码需要的位数 = ceil(log2(78)) = 7位因为2^6=64<782^7=128>=78
2. 地址码位数 = 16 - 7 = 9位。
3. 9位地址码只能寻址2^9=512个单元远小于2^16。可以采用**间接寻址**来扩大寻址范围——指令中的9位地址指向一个存储单元该单元中存放的才是16位的有效地址从而实现对2^16=65536个单元的寻址。
> [!tip] 解题技巧
> 扩展操作码设计题的关键步骤①算操作码位数log2向上取整②用指令字长减去操作码位数得到地址码位数③计算寻址范围④如果寻址范围不够考虑间接寻址扩展。这是期中考试曾经考过的原题务必掌握。
### 真题4CISC vs RISC 对比(考试高频简答题)
**题目**从指令数量、指令长度、寻址方式、控制器实现、指令周期和流水线支持等方面比较CISC和RISC。
**答**
| 比较项目 | CISC | RISC |
|----------|------|------|
| 指令数量 | 多(几百条),功能强 | 少(几十条),精简 |
| 指令长度 | 可变,不固定 | 固定长度 |
| 寻址方式 | 多种,灵活复杂 | 少数几种,简单 |
| 控制方式 | 微程序控制 | 硬布线控制 |
| 指令周期 | 多周期,时间长 | 单周期(多数),时间短 |
| 流水线 | 部分支持,难以高效流水 | 天然友好,易于流水线实现 |
| 编译器 | 简单,硬件做更多事 | 复杂,编译器做优化 |
| 编程 | 编程方便,指令表达力强 | 编程相对麻烦 |
| 代表 | x86PC处理器 | ARM手机、MIPS嵌入式 |
CISC的设计哲学是"硬件做更多事"让编程更方便RISC的设计哲学是"软件做更多事"让硬件更简单高效。现代处理器中x86内部其实也采用了类似RISC的微操作来提高效率。
---
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
**指令 = 操作码 + 地址码**。操作码指明做什么,地址码指明操作数在哪。
**地址码个数**四地址A1 OP A2 A3下条在A4、三地址A3、二地址A1、一地址ACC OP A1 ACC、零地址栈操作
**地址码个数**四地址A1 OP A2 -> A3下条在A4、三地址->A3、二地址->A1、一地址ACC OP A1 -> ACC、零地址栈操作
**扩展操作码**:地址数越少,操作码越长,指令种类越多。常用指令用短操作码,不常用指令用长操作码。
**扩展操作码**:地址数越少,操作码越长,指令种类越多。常用指令用短操作码,不常用指令用长操作码。操作码位数 = ceil(log2(操作种类数))。
**七种寻址方式**:立即(数在指令里,最快)、直接(地址在指令里)、间接(地址指向的位置存着真正地址)、寄存器(数在寄存器,最快之一)、寄存器间接(寄存器里存地址)、基址(基址+偏移,适合重定位)、变址(变址+偏移适合数组、相对PC+偏移,适合跳转)。
**七种寻址方式**:立即(数在指令里,最快)、直接(地址在指令里)、间接(地址指向的位置存着真正地址,多一次访存)、寄存器(数在寄存器,最快之一)、寄存器间接(寄存器里存地址)、基址(EA=A+(BR)BR不变A可变适合重定位、变址EA=A+(IX)A不变IX可变适合数组、相对PC+偏移,适合跳转)。
**RISC vs CISC**RISC指令少、固定长度、单周期、流水线友好、硬布线控制ARM/MIPSCISC指令多、可变长度、多周期、微程序控制x86
**指令格式设计**:规整性(长度对齐)、高效性(常用指令短)、兼容性(向后兼容)、扩展性(留余地)。
> **本章常见考题类型**
> 1. 寻址方式识别与有效地址计算(必考)
> 2. 扩展操作码设计(期中考过原题)
> 3. 访存次数分析(注意直接/间接寻址的区别)
> 4. CISC vs RISC对比简答题高频考点
> 5. 指令格式分析与设计
---
## 🔗 相关链接
@@ -321,3 +429,4 @@ RISC像精简工具工具少简单速度快容易使用效率高但功能
*本章难度:⭐⭐⭐⭐ 中等*
*重要程度:⭐⭐⭐⭐ 重要*
*考试占比:期中/期末约10~15分以寻址方式和扩展操作码设计为主*

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强化训练*

View File

@@ -2,6 +2,7 @@
> 📖 本章分析控制单元为完成不同指令所发出的各种微操作命令。
> 🎯 重点理解微操作命令和指令执行过程
> 📝 考试范围9.2.3~9.2.5 不考复习重点例题9.1、9.2课后习题9.1~9.8、9.11、9.12
---
@@ -11,6 +12,7 @@
- [[#9.2 控制单元的功能]]
- [[#本章小结]]
- [[#例题与解析]]
- [[#真题与作业精选]]
---
@@ -41,7 +43,7 @@ graph LR
### 9.1.3 取指周期的微操作
取指周期是所有指令共有的阶段,它的微操作序列是固定的:
取指周期是所有指令共有的阶段,它的微操作序列是固定的(这是考试高频考点,期中/期末均考过默写取指周期微操作序列的题目)
| 步骤 | 微操作 | 说明 |
|------|--------|------|
@@ -71,6 +73,8 @@ sequenceDiagram
这个过程很直白先把PC里的地址送到MAR告诉主存"我要读这个地址的东西"主存把指令送到MDR再从MDR搬到IR同时把操作码送给CU去译码最后PC加1指向下一条指令。整个流程就像从货架上取货——先告诉仓库你要哪个货架的东西PC→MAR仓库把东西放到传送带上M(MAR)→MDR你从传送带上拿过来MDR→IR然后看看是什么东西OP(IR)→CU同时记一下下一个要取的位置(PC)+1→PC
完整链路写法为:**PC→MAR→1→R→M(MAR)→MDR→MDR→IR→OP(IR)→CU→(PC)+1→PC**。这六步顺序不可变——必须先送地址才能读内存必须先读到MDR才能送到IR必须先送到IR才能译码。唯一可以和其他操作重叠的是最后一步PC加1它和前面的译码操作可以并行。
### 9.1.4 间址周期的微操作
间址周期只在间接寻址时出现,目的是把形式地址转换成有效地址:
@@ -123,6 +127,8 @@ sequenceDiagram
ADD X 是把内存地址X处的数取出来加到累加器STA X 是把累加器的值存到内存地址XLDA X 是把内存地址X处的数取到累加器。它们都需要先送地址、再读写内存、最后在CPU内部完成数据操作。
STA X 和 LDA X 的关键区别在于数据流方向和读写命令STA 发的是写命令1→W数据从 ACC→MDR→M(MAR)LDA 发的是读命令1→R数据从 M(MAR)→MDR→ACC。考试经常让你区分这两者。
**转移指令**改变程序的执行顺序:
| 指令 | 微操作 | 说明 |
@@ -132,6 +138,20 @@ ADD X 是把内存地址X处的数取出来加到累加器STA X 是把累加
JMP X 就是无条件跳转到地址X直接把X送到PC。BAN X 是条件转移——如果累加器最高位符号位为1表示负数就跳转到X否则继续执行下一条指令。
### 9.1.6 微操作的节拍安排
微操作不能随意执行必须分配到不同的时钟节拍T₀、T₁、T₂...中。安排的原则是同一个节拍内可以同时执行不冲突的微操作比如一个节拍里可以同时做寄存器读和ALU运算但不能同时读同一个寄存器和写同一个寄存器。考试中经常给出具体指令要求你写出每个节拍安排的微操作这是期中/期末的重点题型。
### 9.1.7 指令执行的完整过程分析
`MOV R0,04H` 为例分析完整的指令执行过程。这条指令需要 5 个机器周期,访存 3 次(取指 2 次 + 取操作数 1 次)。
**取指过程**PC→MAR→读主存→MDR→IR这是一条指令执行的第一步每条指令都要走一遍。取到的指令送入 IR 后,操作码送 CU 译码PC 同时加 1。
**执行过程**PC+1→MAR→读 04H→MAR→读 M(04H)→R0。注意这里 PC 加 1 后不是简单地指向下一条指令,而是指向操作数地址 04H需要再访存一次把真正的操作数取出来送到 R0。
这类题目考察的是你对"机器周期"概念的理解——取指占几个机器周期、执行占几个机器周期、每次访存对应一个机器周期,把这些搞清楚,题目就不难了。
---
## 9.2 控制单元的功能
@@ -150,6 +170,9 @@ JMP X 就是无条件跳转到地址X直接把X送到PC。BAN X 是条件转
在取指周期每个时钟周期发出一组控制信号按固定顺序完成取指操作。在执行周期根据指令类型的不同CU会发出不同的控制信号组合——加法指令需要ALU做加法存数指令需要向内存发写命令转移指令需要修改PC的值。
> [!warning] 考试范围提醒
> 9.2.3~9.2.5 不在考试范围内,以下仅做简要了解即可。
### 9.2.3 控制信号的组成
控制信号按控制对象可以分为四类ALU控制信号决定ALU做什么运算加法、减法、逻辑与、逻辑或等寄存器控制信号控制寄存器的读写哪些寄存器要读、哪些要写数据通路控制信号控制数据在CPU内部的传输方向比如从ALU输出送到哪个寄存器总线控制信号控制总线的读写操作读内存还是写内存
@@ -187,7 +210,7 @@ JMP X 就是无条件跳转到地址X直接把X送到PC。BAN X 是条件转
## 🧪 例题与解析
### 例题1取指周期分析
### 例题1取指周期分析教材例题9.1
**题目**:写出取指周期的微操作序列。
@@ -204,7 +227,7 @@ JMP X 就是无条件跳转到地址X直接把X送到PC。BAN X 是条件转
这六步是所有指令共有的顺序不能变——必须先送地址才能读内存必须先读到MDR才能送到IR必须先送到IR才能译码。唯一可以和其他操作重叠的是最后一步PC加1它和前面的译码操作可以并行。
### 例题2间址周期分析
### 例题2间址周期分析教材例题9.2
**题目**:写出间址周期的微操作序列。
@@ -219,7 +242,7 @@ JMP X 就是无条件跳转到地址X直接把X送到PC。BAN X 是条件转
间址周期的目的就是把形式地址变成有效地址。形式地址是指令里给出的地址,但它不是最终地址——那个位置存放的才是真正的有效地址。所以需要额外访问一次内存,把有效地址取出来,写回指令的地址字段,这样后续的执行周期就知道该去哪操作了。
### 例题3加法指令分析
### 例题3加法指令分析课后习题9.1~9.3同类型)
**题目**:写出加法指令 ADD X 的微操作序列。
@@ -234,7 +257,7 @@ JMP X 就是无条件跳转到地址X直接把X送到PC。BAN X 是条件转
前三步和取数指令一样都是把内存地址X处的操作数取到MDR。第四步是关键——把累加器里原来的值和MDR里的值送到ALU做加法结果写回累加器。如果X是间接寻址的还需要在前面加一个间址周期来获取有效地址。
### 例题4存数指令分析
### 例题4存数指令分析课后习题9.4~9.6同类型)
**题目**:写出存数指令 STA X 的微操作序列。
@@ -249,7 +272,7 @@ JMP X 就是无条件跳转到地址X直接把X送到PC。BAN X 是条件转
STA X 和 LDA X 的区别在于方向相反LDA 是从内存读到累加器STA 是从累加器写到内存。注意第二步发的是写命令1→W而不是读命令1→R数据流方向也反过来——从ACC到MDR再到内存。
### 例题5控制单元功能分析
### 例题5控制单元功能分析课后习题9.11~9.12同类型)
**题目**:简述控制单元的功能和输入输出信号。
@@ -271,6 +294,82 @@ CU的工作可以这样理解它看着指令操作码结合当前状
---
## 📖 真题与作业精选
以下是来自作业、期中/期末考试和复习资料的典型题目,建议重点练习。
### 真题1微操作节拍安排作业三原题期中/期末高频考点)
**题目**:对下列指令分别安排微操作节拍:
1. STA X存数指令
2. AND X逻辑与指令
3. ADD #a(立即数加法指令)
**答案**
**STA X 的执行周期节拍安排:**
| 节拍 | 微操作 |
|------|--------|
| T₀ | Ad(IR)→MAR, 1→W |
| T₁ | ACC→MDR |
| T₂ | MDR→M(MAR) |
注意 T₀ 同时发出地址和写命令,这是考试中的常见写法,体现了微操作的并行性。
**AND X 的执行周期节拍安排:**
| 节拍 | 微操作 |
|------|--------|
| T₀ | Ad(IR)→MAR, 1→R |
| T₁ | M(MAR)→MDR |
| T₂ | (ACC)∧(MDR)→ACC |
逻辑与指令需要先从内存取操作数再和ACC做逻辑与运算。
**ADD #a 的执行周期节拍安排:**
| 节拍 | 微操作 |
|------|--------|
| T₀ | Ad(IR)→MDR |
| T₁ | (ACC)+(MDR)→ACC |
立即数加法不需要访存,操作数直接在指令的地址字段里,只需两步即可完成。
### 真题2指令执行过程分析复习资料原题
**题目**:分析 `MOV R0,04H` 指令的执行过程,说明需要几个机器周期、访存几次。
**答案**
该指令需要 **5 个机器周期**,共 **访存 3 次**(取指 2 次 + 取操作数 1 次)。
**取指阶段**PC→MAR→读主存→MDR→IR这一步把 MOV 指令从内存取到 IR 中。
**执行阶段**PC+1→MAR→读 04H→MAR→读 M(04H)→R0。
执行过程的关键在于PC 加 1 后不是直接执行完毕,而是继续用 PC 的值去取操作数地址 04H再用 04H 去内存中读取真正的数据送到 R0。所以访存次数多于你可能预期的数量。计数机器周期时每一次访存操作对应一个机器周期再加上取指的一个周期总共 5 个。
### 真题3取指周期微操作链路必须掌握考试必考
**题目**:用链路形式写出取指周期的微操作序列,并说明 PC 加 1 能否与其他操作并行。
**答案**
取指周期的完整链路:**PC→MAR→1→R→M(MAR)→MDR→MDR→IR→OP(IR)→CU→(PC)+1→PC**
六步顺序不可变:
1. PC→MAR送地址
2. 1→R发读命令
3. M(MAR)→MDR读指令到MDR
4. MDR→IR送指令到IR
5. OP(IR)→CU操作码译码
6. (PC)+1→PCPC加1
PC 加 1 可以与译码第5步并行执行。因为译码操作使用的是 IR 中的操作码字段,而 PC 加 1 操作使用的是 PC 寄存器本身,两者没有数据依赖关系,所以可以在同一个节拍内同时进行。这是考试中常问的一个细节,很多人会忽略。
---
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
@@ -279,16 +378,23 @@ CU的工作可以这样理解它看着指令操作码结合当前状
**指令周期四阶段**:取指(所有指令)→ 间址(间接寻址才要)→ 执行(所有指令)→ 中断(有中断才要)。
**取指周期六步**(必PC→MAR → 1→R → M(MAR)→MDR → MDR→IR → OP(IR)→CU → (PC)+1→PC。
**取指周期六步**(必背,考试必考PC→MAR → 1→R → M(MAR)→MDR → MDR→IR → OP(IR)→CU → (PC)+1→PC。PC加1可与译码并行。
**间址周期四步**Ad(IR)→MAR → 1→R → M(MAR)→MDR → MDR→Ad(IR)。目的:形式地址→有效地址。
**访存指令执行周期**ADD X读+加、STA X、LDA X读+送ACC。先送地址再读写内存最后CPU内部操作
**访存指令执行周期**ADD X读+加、STA X1→W, ACC→MDR→M(MAR)、LDA XM(MAR)→MDR→ACC。先送地址再读写内存最后CPU内部操作。STA和LDA的数据流方向和读写命令是考试常考的区分点
**非访存指令**CLA清零、COM取反、SHR右移、CSL循环左移、STP停机不访存所以快。
**控制单元输入**时钟、操作码IR、标志、外来信号中断/总线请求)。**输出**CPU内部控制信号 + 控制总线信号。
**微操作节拍安排**(高频考题类型):给出指令写出各节拍微操作,注意同一节拍内无冲突的微操作可并行(如 T₀ 同时做 Ad(IR)→MAR 和 1→R。立即数指令不需要访存节拍数更少。
**考试常见题型**:默写取指/间址/执行周期微操作序列、给指令安排节拍、分析指令执行过程(机器周期数和访存次数)、取指周期六步顺序及并行关系。
> [!tip] 考试范围提示
> 本章不考 9.2.3~9.2.5。复习重点为例题9.1、9.2课后习题9.1~9.8、9.11、9.12。
---
## 🔗 相关链接
@@ -303,10 +409,10 @@ CU的工作可以这样理解它看着指令操作码结合当前状
- 教材《计算机组成原理》第3版 - 唐朔飞
- 复习资料:计算机组成原理知识点总结
- 习题:作业三、作业四
- 习题:作业三、作业四、课后习题9.1~9.8、9.11、9.12
---
*本章难度:⭐⭐⭐⭐ 中等*
*重要程度:⭐⭐⭐⭐ 重要*
*补充版本:增加了通俗解释、实际例子例题*
*补充版本:增加了通俗解释、实际例子例题、真题精选与考试技巧*

View File

@@ -2,6 +2,7 @@
> 📖 本章介绍控制单元的两种设计方法:组合逻辑设计和微程序设计。
> 🎯 重点理解微程序设计方法
> ⚠️ 考试范围不考10.1节重点复习例题10.4和414页微程序设计举例课后习题10.1、10.2必须掌握
---
@@ -11,11 +12,15 @@
- [[#10.2 微程序设计]]
- [[#本章小结]]
- [[#例题与解析]]
- [[#真题与作业精选]]
- [[#知识点速记卡]]
---
## 10.1 组合逻辑设计
> 📝 虽然考试范围注明10.1节不考,但组合逻辑设计的基本思想和步骤仍是理解微程序设计的基础,建议了解。
### 10.1.1 组合逻辑控制单元框图
```mermaid
@@ -34,6 +39,15 @@ graph TB
这种设计方式的特点是速度快——信号通过逻辑门直接产生,不需要访问存储器。但缺点也很明显:电路复杂,修改困难,每增加一条指令可能都要重新设计电路。
#### 组合逻辑设计步骤
组合逻辑控制器的设计一般包括以下步骤:
1. **列出微操作时间表**:对每条指令,按节拍列出每个微操作。
2. **写出微操作的逻辑表达式**:用操作码译码输出、节拍信号、标志位等变量表示每个微操作。
3. **优化逻辑表达式**:用卡诺图或布尔代数化简。
4. **画出逻辑电路图**:用与、或、非门实现。
### 10.1.2 微操作的节拍安排
安排微操作的节拍时,需要遵循三个原则。
@@ -125,6 +139,8 @@ LDA X 和 ADD X 的前三步完全一样区别在T₂ADD 是做加法后
## 10.2 微程序设计
> 🔥 **本节是考试核心**。微指令格式设计字段位数计算、微程序控制器工作原理、414页微程序设计举例均为高频考点。
### 10.2.1 微程序设计的基本概念
> [!info] 定义
@@ -136,17 +152,82 @@ LDA X 和 ADD X 的前三步完全一样区别在T₂ADD 是做加法后
举个例子执行一条加法指令它的微程序可能包含三条微指令第一条完成取指PC→MAR、1→R等第二条完成取操作数Ad(IR)→MAR、M(MAR)→MDR第三条完成加法运算(ACC)+(MDR)→ACC。每条微指令里的控制信号可以并行发出。
### 10.2.2 微指令的格式
### 10.2.2 微程序控制器的工作原理
> 📌 这是复习资料中的原题,期中/期末考试高频出现。下面把工作原理完整梳理一遍。
微程序控制器的工作流程可以概括为:
1. **开机**系统初始化将取指微指令的地址送入微地址寄存器CMAR
2. **取微指令**根据CMAR中的地址从控制存储器CM中取出当前微指令。
3. **执行微操作**:微指令的操作控制字段直接产生控制信号,驱动各部件完成微操作。
4. **确定下地址**根据微指令的顺序控制字段下址字段决定下一条微指令的地址送入CMAR。
5. **循环执行**重复步骤2-4直到该机器指令对应的微程序执行完毕。
6. **回到取指**:一条机器指令执行完毕后,自动回到取指微程序的入口地址,开始下一条指令的取指。
**核心要点**每条机器指令对应一段微程序取指微程序是所有指令共用的公共部分。整个CPU的工作就是不断地从CM中读取微指令、执行微操作、更新地址——本质上是一个"微程序级的取指-执行循环"。
### 10.2.3 微指令格式与编译方法
微指令由两部分组成:**操作控制字段**产生各种控制信号,**顺序控制字段**决定下一条微指令的地址。
根据操作控制字段的编码方式,微指令分为两种格式
> ⚠️ **微指令格式设计(字段位数计算)是考试高频题型**特别是给定CM容量和转移条件计算各字段位数。务必掌握下面的编译方法和计算思路
**水平型微指令**的操作控制字段很长每一位或每几位对应一个控制信号可以同时激活多个信号实现并行操作。优点是执行速度快一条微指令就能完成很多操作缺点是微指令很长占用存储空间大。现代高性能CPU通常采用水平型微指令
根据操作控制字段的编码方式,微指令有三种编译法
**垂直型微指令**的操作控制字段很短,采用编码方式,一条微指令只能控制一个或少数几个操作。优点是微指令短、节省空间,缺点是执行速度慢(需要更多微指令才能完成一条机器指令)。简单处理器常用垂直型微指令。
#### 直接控制法(不译码法)
### 10.2.3 微程序设计的步骤
操作控制字段的每一位直接对应一个微操作控制信号。某位为1就表示激活对应的控制信号为0就不激活。可以同时激活多个信号实现并行操作。
- 优点:不需要译码,速度快,设计简单。
- 缺点微指令字长很长——如果有N个控制信号操作控制字段就需要N位。
#### 字段直接编译法(编码法)
把控制信号分成若干组字段每个字段内部用二进制编码来表示。比如一个字段有3位可以编码表示 2³ = 8 个互斥的控制信号(同一时刻只能激活其中一个)。
- 优点:缩短了微指令字长。
- 缺点:需要译码器,增加了硬件开销;同一字段内的信号不能并行(互斥)。
#### 字段间接编译法
在字段直接编译的基础上,一个字段的含义还依赖于另一个字段的值——即字段之间有层次关系。比如第一个字段选择操作类型,第二个字段在该操作类型下进一步细分。
- 优点:进一步压缩微指令字长。
- 缺点:译码电路更复杂,速度更慢。
#### 后继地址的产生方式
确定下一条微指令地址有两种方式:
**计数器方式(增量方式)**用一个微程序计数器μPC记录当前微指令地址每执行一条微指令自动加1。遇到转移时把目标地址送到μPC。优点是顺序执行时下址字段可以省略自动+1节省空间缺点是遇到转移需要额外处理。
**判定方式(下址字段法)**:在微指令中直接设置一个"下址字段",存放下一条微指令的地址。优点是地址灵活,转移效率高;缺点是增加了微指令的长度。
实际设计中常把两者结合:顺序执行时用计数器自动递增,转移时用下址字段指定目标地址。
### 10.2.4 微指令格式设计实例
> 📌 **这是考试的核心计算题**,期中/期末都曾考过。下面通过具体例子讲解字段位数的计算方法。
**题目**CM容量为 512×48位转移条件有4个。求微指令各字段的位数。
**解题思路**
1. **下址字段**CM有512个单元需要 2⁹ = 512所以下址字段需要 **9位**
2. **判别测试字段**有4个转移条件需要 2² = 4所以判别测试字段需要 **2位**
3. **微命令字段**操作控制字段总宽度48位减去下址和判别测试字段即 48 - 9 - 2 = **37位**
**答案**下址字段9位判别测试字段2位微命令字段37位。
**解题模板**:遇到这类题目,记住三个公式:
- 下址字段位数 = log₂(CM单元数)
- 判别测试字段位数 = log₂(转移条件数)
- 微命令字段位数 = 微指令总位数 - 下址字段位数 - 判别测试字段位数
### 10.2.5 微程序设计的步骤
> 📌 对应教材414页的微程序设计举例这是本章最重要的例题。建议对照教材完整走一遍。
微程序设计可以分为四步。
@@ -158,7 +239,7 @@ LDA X 和 ADD X 的前三步完全一样区别在T₂ADD 是做加法后
第四步是**实现控制存储器**把微程序固化到ROM中。ROM的内容在制造时就确定了不能修改除非用可擦写的EPROM
### 10.2.4 微程序设计的优缺点
### 10.2.6 微程序设计的优缺点
微程序设计最大的优点是**规整性和灵活性**。用程序的方法设计控制单元逻辑清晰、容易理解需要增加新指令时只需要在ROM中添加对应的微程序不需要重新设计电路调试和维护也方便可以通过修改微程序来修复bug。
@@ -177,6 +258,7 @@ LDA X 和 ADD X 的前三步完全一样区别在T₂ADD 是做加法后
3. **微指令**:一组控制信号的集合
4. **微程序**:微指令的有序序列,一条机器指令对应一个微程序
5. **控制存储器**存放微程序的ROM
6. **硬布线vs微程序**硬布线速度快但设计复杂难修改适合RISC微程序灵活规整易修改但速度较慢适合CISC。现代CPU常混合使用
### 关键术语
@@ -186,6 +268,9 @@ LDA X 和 ADD X 的前三步完全一样区别在T₂ADD 是做加法后
| 微程序 | Microprogram | 用程序实现 |
| 微指令 | Microinstruction | 控制信号的集合 |
| 控制存储器 | Control Storage | 存放微程序的ROM |
| 直接控制法 | Direct Control | 每位对应一个微命令 |
| 字段直接编译法 | Field Direct Encoding | 编码方式,需译码 |
| 下址字段 | Next Address Field | 存放下一条微指令地址 |
### 重点图示
@@ -248,7 +333,7 @@ ADD X 的执行周期需要三次访存操作中的两次(送地址、读数
**答案**
| 特性 | 组合逻辑设计 | 微程序设计 |
| 特性 | 组合逻辑设计(硬布线) | 微程序设计 |
|------|--------------|------------|
| **设计方法** | 用逻辑电路直接实现 | 用程序ROM实现 |
| **优点** | 速度快 | 规整性好,灵活,易修改 |
@@ -279,25 +364,155 @@ ADD X 的执行周期需要三次访存操作中的两次(送地址、读数
---
## 📖 真题与作业精选
> 🔥 以下题目来自复习资料、期中/期末考试和课后习题,每道题都标注了来源和重要程度。考前务必全部过一遍。
### 真题1微指令格式设计字段位数计算
> 📌 复习资料原题,期中/期末高频考点。掌握公式即可秒杀。
**题目**CM容量为 512×48 位转移条件有4个。计算微指令各字段的位数。
**解题过程**
这道题考查的是微指令格式设计中的位数分配,关键是搞清楚三个字段各自怎么算。
**下址字段**——CM有512个单元要能寻址每一个单元。512 = 2⁹所以下址字段需要 **9位**。简单理解9位二进制数刚好能表示0到511这512个地址。
**判别测试字段**——有4个转移条件需要判断。4 = 2²所以判别测试字段需要 **2位**。2位二进制数00、01、10、11刚好对应4个条件。
**微命令字段**操作控制字段——剩下的位数全归它。总位数48减去下址9位再减去判别测试2位48 - 9 - 2 = **37位**
**答案**下址字段9位判别测试字段2位微命令字段37位。
**举一反三**如果CM容量是 1024×64 位转移条件8个那么下址字段 = log₂(1024) = 10位判别测试字段 = log₂(8) = 3位微命令字段 = 64 - 10 - 3 = 51位。
### 真题2微程序控制器原理简答题
> 📌 复习资料原题。这是简答题的标准答案模板,直接背下来。
**题目**:简述微程序控制器的工作原理。
**答案**
微程序控制器的工作过程如下:
1. **开机初始化**CPU开机后将取指微程序的入口地址送入微地址寄存器。
2. **取微指令**根据微地址寄存器中的地址从控制存储器CM中取出当前微指令。
3. **执行微操作**:微指令的操作控制字段产生控制信号,驱动数据通路完成相应的微操作。
4. **后继地址形成**:根据微指令的顺序控制字段(下址字段),确定下一条微指令的地址。
5. **循环**重复步骤2-4直到当前机器指令对应的微程序全部执行完毕。
6. **回到取指**:执行完一段微程序后,自动回到取指微程序入口,开始下一条机器指令的处理。
**核心思想**每条机器指令对应一段微程序控制存储器中存放了所有指令的微程序。微程序控制器的本质就是按地址从CM中逐条取出微指令并执行是一个"微程序级的取指-执行循环"。
### 真题3微指令三种编译法
> 📌 复习资料原题。选择题和简答题都可能出现。
**题目**:说明微指令的三种编译法及其特点,并简述后继地址的产生方式。
**答案**
**三种编译法**
| 编译法 | 原理 | 优点 | 缺点 |
|--------|------|------|------|
| 直接控制法 | 操作控制字段每位直接对应一个微命令 | 不需译码,速度快 | 微指令字长很长 |
| 字段直接编译法 | 把控制信号分组编码,需译码器 | 缩短字长 | 同组信号互斥,不能并行 |
| 字段间接编译法 | 字段含义依赖于其他字段 | 进一步压缩字长 | 译码复杂,速度更慢 |
**后继地址产生方式**
- **计数器方式(增量方式)**:用微程序计数器自动递增,顺序执行时效率高,转移时需要特殊处理。
- **判定方式(下址字段法)**:在微指令中直接给出下址,地址灵活但增加了字长。
### 真题4硬布线控制器 vs 微程序控制器
> 📌 复习资料原题。对比题几乎是每次考试必考。
**题目**:比较硬布线控制器和微程序控制器的特点。
**答案**
| 对比项 | 硬布线控制器 | 微程序控制器 |
|--------|-------------|-------------|
| 实现方式 | 组合逻辑电路直接产生控制信号 | 控制存储器ROM存放微程序 |
| 速度 | 快(信号直接由电路产生) | 较慢需访问CM取微指令 |
| 设计难度 | 复杂,不规整 | 规整,类似编程 |
| 可修改性 | 难修改,改指令要改电路 | 易修改,改微程序即可 |
| 适用场景 | RISC处理器 | CISC处理器 |
| 现代趋势 | 常用于简单指令的加速 | 常用于复杂指令的实现 |
**补充**现代高性能CPU通常混合使用两种方式——简单常用的指令用硬布线实现以获得更高性能复杂不常用的指令用微程序实现以降低设计难度。
### 课后习题10.1
> 📌 教材课后习题,必做。
**题目**:什么是指令周期、机器周期和时钟周期?三者有什么关系?
**答案**
- **指令周期**:从取出一条指令到执行完该指令所用的全部时间。一条指令的指令周期可能包含取指、间址、执行、中断等多个阶段。
- **机器周期**也叫CPU周期是完成一个基本操作如取指、取操作数所需的时间。一个指令周期由若干个机器周期组成。
- **时钟周期**也叫节拍或T周期是CPU时钟信号的最小时间单位。一个机器周期由若干个时钟周期节拍组成。
**关系**:时钟周期 ≤ 机器周期 ≤ 指令周期。一个指令周期包含若干机器周期,一个机器周期包含若干时钟周期。
### 课后习题10.2
> 📌 教材课后习题,必做。
**题目**:画出微程序控制器的组成框图,说明各部分的功能。
**答案**
微程序控制器的核心组成:
| 部件 | 功能 |
|------|------|
| 控制存储器CM | 存放全部微程序通常用ROM实现 |
| 微指令寄存器CMIR | 存放当前正在执行的微指令 |
| 微地址寄存器CMAR | 存放下一条微指令的地址 |
| 地址转移逻辑 | 根据判别测试字段和转移条件,修改微地址 |
| 控制信号输出 | 将微指令的操作控制字段直接作为控制信号输出到数据通路 |
**工作流程**CMAR中的地址送CM读出微指令→微指令送CMIR→操作控制字段输出控制信号→顺序控制字段送地址转移逻辑→形成下一条微指令地址→送回CMAR→开始下一个周期。
---
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
> 🔥 标注了考试高频考点和常见题型
**两种CU设计方法**:组合逻辑(硬线快但难改vs 微程序ROM存控制信号灵活但慢)。
**两种CU设计方法**:组合逻辑(硬线,快但难改适合RISCvs 微程序ROM存控制信号灵活但慢适合CISC。现代CPU常混合使用。⭐ 对比题必考
**组合逻辑CU三部件**:操作码译码器(指令→控制信号)、节拍发生器(产生时序)、控制单元(综合输出)。
**组合逻辑设计步骤**:列微操作时间表→写逻辑表达式→化简→画电路。
**节拍安排三原则**顺序原则先MAR后读内存、并行原则不同部件可同时工作、紧凑原则短操作放同一节拍
**取指周期三拍**T₀=PC→MAR+1→RT₁=M(MAR)→MDR+(PC)+1→PCT₂=MDR→IR+OP(IR)→ID。
**取指周期三拍**T₀=PC→MAR+1→RT₁=M(MAR)→MDR+(PC)+1→PCT₂=MDR→IR+OP(IR)→ID。⭐ 每次必考
**微程序核心三概念**微指令一组控制信号、微程序微指令序列一条机器指令对应一个微程序、控制存储器CS存微程序的ROM
**微指令三种编译法**:直接控制法(每位一个微命令,快但长)、字段直接编译法(编码,短但需译码)、字段间接编译法(字段间有依赖,更短但更慢)。⭐ 选择/简答常考
**后继地址两种方式**:计数器方式(自动递增,省空间)和下址字段法(直接给地址,灵活但占空间)。
**微指令格式位数计算**⭐⭐:下址字段=log₂(CM单元数),判别测试字段=log₂(转移条件数),微命令字段=总位数-前两者。例512×484条件→9+2+37。这是最常见的计算题。
**微程序控制器原理**⭐⭐开机→置取指地址→从CM取微指令→执行微操作→根据下址取下一条→循环直到指令完成→回到取指。
**水平型 vs 垂直型微指令**水平型位长可并行多信号快但占空间vs 垂直型(位短,编码方式,省空间但慢)。
**微程序设计四步**分析指令→设计微指令格式→编写微程序→固化到ROM。核心思想用数据ROM代替逻辑电路
**微程序设计四步**分析指令→设计微指令格式→编写微程序→固化到ROM。核心思想用数据ROM代替逻辑电路⭐ 教材414页举例是重点
**选择策略**追求速度→组合逻辑RISC追求灵活→微程序CISC。现代CPU常混合使用。
**选择策略**追求速度→组合逻辑RISC追求灵活→微程序CISC。现代CPU常混合使用。⭐ 对比题必考
---
@@ -314,9 +529,10 @@ ADD X 的执行周期需要三次访存操作中的两次(送地址、读数
- 教材《计算机组成原理》第3版 - 唐朔飞
- 复习资料:计算机组成原理知识点总结
- 习题:作业三、作业四
- 真题来源:期中/期末考试、复习资料重点整理
---
*本章难度:⭐⭐⭐⭐⭐ 困难*
*重要程度:⭐⭐⭐⭐⭐ 重点*
*补充版本:增加了通俗解释、实际例子例题*
*补充版本:增加了通俗解释、实际例子例题、真题与作业精选、考试重点标注*