vault backup: 2026-07-04 12:32:07
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
> 📖 本章介绍计算机系统的基本概念和组成,是整个课程的基础。
|
> 📖 本章介绍计算机系统的基本概念和组成,是整个课程的基础。
|
||||||
> 🎯 重点理解计算机层次结构和冯·诺依曼体系
|
> 🎯 重点理解计算机层次结构和冯·诺依曼体系
|
||||||
|
> ⚠️ 本章以基本概念为主,复习重点见课后习题1.5、1.6、1.7、1.11
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -11,6 +12,7 @@
|
|||||||
- [[#1.2 计算机的基本组成]]
|
- [[#1.2 计算机的基本组成]]
|
||||||
- [[#1.3 计算机硬件的主要技术指标]]
|
- [[#1.3 计算机硬件的主要技术指标]]
|
||||||
- [[#本章小结]]
|
- [[#本章小结]]
|
||||||
|
- [[#📖 真题与作业精选]]
|
||||||
- [[#例题与解析]]
|
- [[#例题与解析]]
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -100,6 +102,9 @@ graph TB
|
|||||||
style HW fill:#0288d1
|
style HW fill:#0288d1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!important] 这是考试高频考点
|
||||||
|
> 五级层次结构是填空题和简答题的常客,期中/期末都曾出现。记住顺序:微程序级 → 机器指令级 → 操作系统级 → 系统软件级 → 应用软件级。
|
||||||
|
|
||||||
#### 各层次说明
|
#### 各层次说明
|
||||||
|
|
||||||
| 层次 | 名称 | 说明 | 语言 |
|
| 层次 | 名称 | 说明 | 语言 |
|
||||||
@@ -140,6 +145,9 @@ graph LR
|
|||||||
|
|
||||||
实际应用中,C语言用编译方式,先把 `.c` 文件编译成 `.exe` 文件再运行;Python用解释方式,边翻译边执行,不需要生成单独的可执行文件。
|
实际应用中,C语言用编译方式,先把 `.c` 文件编译成 `.exe` 文件再运行;Python用解释方式,边翻译边执行,不需要生成单独的可执行文件。
|
||||||
|
|
||||||
|
> [!tip] 考试注意
|
||||||
|
> 编译vs解释是常见的对比题。考试中经常会给出具体语言(如C、Python)让你判断属于哪种方式,并说明各自的优缺点。简单记忆:编译快但调试慢,解释慢但调试快。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 1.1.3 计算机组成和计算机体系结构
|
### 1.1.3 计算机组成和计算机体系结构
|
||||||
@@ -166,6 +174,8 @@ IBM System/370系列就是很好的例子:所有机型的体系结构相同(
|
|||||||
|
|
||||||
> [!important] 冯·诺依曼体系(1945年)
|
> [!important] 冯·诺依曼体系(1945年)
|
||||||
> 基于"存储程序"概念的计算机体系结构
|
> 基于"存储程序"概念的计算机体系结构
|
||||||
|
>
|
||||||
|
> ⚠️ 这是第1章最高频的考点,简答题几乎必考,期中/期末多次出现。
|
||||||
|
|
||||||
**五大特点**:
|
**五大特点**:
|
||||||
1. 计算机由 **运算器、存储器、控制器、输入设备、输出设备** 五大部件组成
|
1. 计算机由 **运算器、存储器、控制器、输入设备、输出设备** 五大部件组成
|
||||||
@@ -196,6 +206,9 @@ graph TB
|
|||||||
style OUT fill:#cc99ff
|
style OUT fill:#cc99ff
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!warning] 易错点
|
||||||
|
> 冯·诺依曼最初提出的结构是以 **运算器** 为中心,但 **现代计算机** 已经改为以 **存储器** 为中心。考试时一定要看清题目问的是"冯·诺依曼结构"还是"现代计算机结构",中心不同!
|
||||||
|
|
||||||
冯·诺依曼体系可以理解为一个高效的工厂:运算器是生产车间,负责加工产品;存储器是仓库,存放原材料和成品;控制器是厂长,指挥整个生产过程;输入设备是采购部,接收订单和原材料;输出设备是销售部,把成品交给客户。"存储程序"的概念就是把生产计划(程序)和原材料(数据)都放在仓库里,厂长按计划指挥生产。
|
冯·诺依曼体系可以理解为一个高效的工厂:运算器是生产车间,负责加工产品;存储器是仓库,存放原材料和成品;控制器是厂长,指挥整个生产过程;输入设备是采购部,接收订单和原材料;输出设备是销售部,把成品交给客户。"存储程序"的概念就是把生产计划(程序)和原材料(数据)都放在仓库里,厂长按计划指挥生产。
|
||||||
|
|
||||||
当你用电脑计算 `5 + 3` 时,整个过程是这样的:键盘输入数据,存储器存放数字和指令,控制器指挥运算器执行加法,运算器计算结果,最后显示器显示答案。
|
当你用电脑计算 `5 + 3` 时,整个过程是这样的:键盘输入数据,存储器存放数字和指令,控制器指挥运算器执行加法,运算器计算结果,最后显示器显示答案。
|
||||||
@@ -313,6 +326,9 @@ $$存储容量 = 存储单元数 \times 存储字长$$
|
|||||||
|
|
||||||
### 1.3.3 运算速度
|
### 1.3.3 运算速度
|
||||||
|
|
||||||
|
> [!important] MIPS和CPI的计算是考试计算题高频考点
|
||||||
|
> 经常出现在填空题和计算题中,需要熟练掌握公式及相互转换。
|
||||||
|
|
||||||
**常用指标**:
|
**常用指标**:
|
||||||
|
|
||||||
| 指标 | 说明 | 计算方式 |
|
| 指标 | 说明 | 计算方式 |
|
||||||
@@ -323,6 +339,14 @@ $$存储容量 = 存储单元数 \times 存储字长$$
|
|||||||
|
|
||||||
这三个指标可以这样理解:MIPS是工人每秒能处理多少个订单,CPI是处理一个订单需要多少个步骤,FLOPS是每秒能计算多少道数学题。MIPS越高处理越快,CPI越低效率越高,FLOPS越强计算能力越强。
|
这三个指标可以这样理解:MIPS是工人每秒能处理多少个订单,CPI是处理一个订单需要多少个步骤,FLOPS是每秒能计算多少道数学题。MIPS越高处理越快,CPI越低效率越高,FLOPS越强计算能力越强。
|
||||||
|
|
||||||
|
**核心公式**:
|
||||||
|
|
||||||
|
$$MIPS = \frac{主频}{CPI \times 10^6}$$
|
||||||
|
|
||||||
|
$$CPI = \frac{时钟周期数}{指令条数}$$
|
||||||
|
|
||||||
|
$$执行时间 = CPI \times 指令条数 \times 时钟周期$$
|
||||||
|
|
||||||
### 1.3.4 其他指标
|
### 1.3.4 其他指标
|
||||||
|
|
||||||
- **主频**:CPU时钟频率(GHz)
|
- **主频**: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:计算机层次结构
|
### 例题1:计算机层次结构
|
||||||
@@ -442,21 +514,25 @@ $$MIPS = \frac{主频}{CPI \times 10^6} = \frac{2 \times 10^9}{4 \times 10^6} =
|
|||||||
## ⚡ 知识点速记卡
|
## ⚡ 知识点速记卡
|
||||||
|
|
||||||
> 考前快速过一遍,30秒回忆整章核心
|
> 考前快速过一遍,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个单元。
|
**容量计算**:存储容量 = 存储单元数 × 字长。20位地址线 → 2²⁰ = 1M个单元。
|
||||||
|
|
||||||
|
**体系结构 vs 组成**:体系结构是程序员看到的属性(指令集、数据类型),组成是硬件实现方式(电路细节)。体系结构相同不代表组成相同。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔗 相关链接
|
## 🔗 相关链接
|
||||||
|
|||||||
@@ -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.4 总线结构]]
|
||||||
- [[#3.5 总线控制]]
|
- [[#3.5 总线控制]]
|
||||||
- [[#本章小结]]
|
- [[#本章小结]]
|
||||||
|
- [[#真题与作业精选]]
|
||||||
- [[#例题与解析]]
|
- [[#例题与解析]]
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -211,6 +213,8 @@ USB、网络线、电话线用串行通信;打印机接口、早期硬盘接
|
|||||||
|
|
||||||
假设总线工作频率为33MHz,总线宽度为32位:总线带宽 = 33MHz × (32÷8) = 132MBps,意味着每秒可以传输132MB的数据。
|
假设总线工作频率为33MHz,总线宽度为32位:总线带宽 = 33MHz × (32÷8) = 132MBps,意味着每秒可以传输132MB的数据。
|
||||||
|
|
||||||
|
> ⚠️ **总线带宽计算是考试高频考点**,期末几乎每年都会出计算题。公式一定要记牢:**总线带宽 = 总线频率 × (总线宽度 ÷ 8)**,单位是字节/秒。注意宽度是位,要除以8换算成字节。
|
||||||
|
|
||||||
### 3.3.3 总线标准
|
### 3.3.3 总线标准
|
||||||
|
|
||||||
> [!info] 定义
|
> [!info] 定义
|
||||||
@@ -278,6 +282,8 @@ graph TB
|
|||||||
|
|
||||||
三总线增加了仓库和其他部门之间的直达通道(DMA总线),其他部门可以直接从仓库取货,不经过生产车间。现代计算机支持DMA技术,硬盘可以直接把数据传到内存,不经过CPU。
|
三总线增加了仓库和其他部门之间的直达通道(DMA总线),其他部门可以直接从仓库取货,不经过生产车间。现代计算机支持DMA技术,硬盘可以直接把数据传到内存,不经过CPU。
|
||||||
|
|
||||||
|
> ⚠️ **三种总线结构的对比是必考内容**,期中/期末常以简答题形式出现——要求对比单总线、双总线、三总线的特点和区别。记住核心演变路线:单总线简单有瓶颈 → 双总线加了CPU-主存专用线 → 三总线再加DMA总线。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 3.5 总线控制
|
## 3.5 总线控制
|
||||||
@@ -295,6 +301,8 @@ graph TB
|
|||||||
|
|
||||||
传统的电话系统用集中式仲裁,由交换机决定谁先通话;以太网用分布式仲裁,设备自己检测冲突并重试。
|
传统的电话系统用集中式仲裁,由交换机决定谁先通话;以太网用分布式仲裁,设备自己检测冲突并重试。
|
||||||
|
|
||||||
|
> ⚠️ **总线仲裁方式是考试重点**,集中式与分布式仲裁的对比经常出现在简答题和选择题中。要能说清楚各自的优缺点和适用场景。
|
||||||
|
|
||||||
### 3.5.2 总线通信控制
|
### 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:总线带宽计算
|
### 例题1:总线带宽计算
|
||||||
@@ -391,22 +449,26 @@ graph TB
|
|||||||
|
|
||||||
## ⚡ 知识点速记卡
|
## ⚡ 知识点速记卡
|
||||||
|
|
||||||
> 考前快速过一遍,30秒回忆整章核心
|
> 考前快速过一遍,30秒回忆整章核心。本章考试常见题型:计算题(总线带宽、波特率)、简答题(三种总线结构对比、仲裁方式对比)、选择题(总线分类、信号方向)。
|
||||||
|
|
||||||
**总线** = 各部件共享的传输介质,同一时刻只能一个部件发送,但多个部件可以同时接收。
|
**总线** = 各部件共享的传输介质,同一时刻只能一个部件发送,但多个部件可以同时接收。
|
||||||
|
|
||||||
**系统总线三类**:数据总线(双向,传数据)、地址总线(单向,CPU输出地址)、控制总线(有读有写,传控制信号)。
|
**系统总线三类**:数据总线(双向,传数据)、地址总线(单向,CPU输出地址)、控制总线(有读有写,传控制信号)。
|
||||||
|
|
||||||
**三种总线结构**:单总线(简单但有瓶颈)→ 双总线(CPU-主存专用线+系统总线)→ 三总线(再加DMA总线)。
|
**三种总线结构**(简答题高频考点):单总线(简单但有瓶颈)→ 双总线(CPU-主存专用线+系统总线)→ 三总线(再加DMA总线,支持直接内存访问)。
|
||||||
|
|
||||||
**总线带宽 = 总线宽度 × 总线频率**。32位宽度、66MHz频率 → 带宽 = 4B × 66M = 264MBps。
|
**总线带宽 = 总线频率 × (总线宽度 ÷ 8)**(计算题必考)。32位宽度、66MHz频率 → 带宽 = 4B × 66M = 264MBps。注意宽度是位,除以8转字节。
|
||||||
|
|
||||||
**总线仲裁**:集中式(有中央仲裁器,简单但有单点故障)vs 分布式(各设备自己仲裁,可靠但复杂)。
|
**波特率计算**(异步串行传输考点):波特率 = 每字符总位数(含起始位+数据位+校验位+终止位)× 每秒字符数。
|
||||||
|
|
||||||
|
**总线仲裁**(简答题常考):集中式(有中央仲裁器,简单但有单点故障)vs 分布式(各设备自己仲裁,可靠但复杂)。
|
||||||
|
|
||||||
**通信方式**:同步(统一时钟,简单但受限于最慢设备)vs 异步(握手信号,灵活但复杂)。
|
**通信方式**:同步(统一时钟,简单但受限于最慢设备)vs 异步(握手信号,灵活但复杂)。
|
||||||
|
|
||||||
**串行 vs 并行**:串行一位一位传,慢但便宜适合远距离;并行多位同时传,快但贵适合近距离。
|
**串行 vs 并行**:串行一位一位传,慢但便宜适合远距离;并行多位同时传,快但贵适合近距离。
|
||||||
|
|
||||||
|
> 📌 复习建议:优先做书上例题3.1、3.2、3.4,再完成课后习题3.1~3.5和3.14~3.16,最后过一遍上方的真题与作业精选。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔗 相关链接
|
## 🔗 相关链接
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
> 📖 本章介绍存储器的分类、工作原理和层次结构,是课程的重点和难点。
|
> 📖 本章介绍存储器的分类、工作原理和层次结构,是课程的重点和难点。
|
||||||
> 🎯 重点理解存储层次、主存组成、Cache和虚拟存储器
|
> 🎯 重点理解存储层次、主存组成、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.2 主存储器]]
|
||||||
- [[#4.3 高速缓冲存储器(Cache)]]
|
- [[#4.3 高速缓冲存储器(Cache)]]
|
||||||
- [[#4.4 虚拟存储器]]
|
- [[#4.4 虚拟存储器]]
|
||||||
|
- [[#📖 真题与作业精选]]
|
||||||
- [[#本章小结]]
|
- [[#本章小结]]
|
||||||
- [[#例题与解析]]
|
- [[#例题与解析]]
|
||||||
|
|
||||||
@@ -219,6 +221,9 @@ $$存储容量 = 存储单元个数 \times 存储字长 / 8$$
|
|||||||
|
|
||||||
假设存储字长为32位(4字节),存取周期为100ns:带宽 = 32位/100ns = 4字节/100ns = 40MBps。
|
假设存储字长为32位(4字节),存取周期为100ns:带宽 = 32位/100ns = 4字节/100ns = 40MBps。
|
||||||
|
|
||||||
|
> [!tip] 考试高频考点
|
||||||
|
> **存储器带宽计算**是作业和考试的常见题型。公式:带宽 = 数据总线宽度 / 存取周期。注意单位换算:1B = 8位。例如数据总线宽度32位,存取周期200ns,则带宽 = 32位/200ns = 160M位/秒 = 20MB/s。(见真题精选)
|
||||||
|
|
||||||
### 4.2.4 半导体存储芯片
|
### 4.2.4 半导体存储芯片
|
||||||
|
|
||||||
```mermaid
|
```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。
|
DRAM就像一个漏水的桶,用电容存储电荷表示0和1,但电容会漏电需要定期补充(刷新),每个存储单元只需要1个晶体管和1个电容体积小。电脑的8GB内存条通常使用DRAM。
|
||||||
|
|
||||||
|
> [!tip] 考试要点
|
||||||
|
> DRAM刷新方式的计算是期末考试的高频考点。三种刷新方式的计算方法见下方真题精选第5题。
|
||||||
|
|
||||||
**刷新方式**:
|
**刷新方式**:
|
||||||
|
|
||||||
| 方式 | 特点 | 效率 |
|
| 方式 | 特点 | 效率 |
|
||||||
@@ -313,10 +321,16 @@ SRAM像高级记事本,用特殊墨水写上就不掉,写得快不用维护
|
|||||||
|
|
||||||
MROM像印刷好的书,出厂时就印好了不能改,成本低适合批量生产;PROM像一次性写入的光盘,用户可以写一次但不能改;EPROM像用铅笔写的书,可以用橡皮擦掉重写;EEPROM用电子橡皮擦更方便;Flash是高速电子橡皮擦,又快又大。
|
MROM像印刷好的书,出厂时就印好了不能改,成本低适合批量生产;PROM像一次性写入的光盘,用户可以写一次但不能改;EPROM像用铅笔写的书,可以用橡皮擦掉重写;EEPROM用电子橡皮擦更方便;Flash是高速电子橡皮擦,又快又大。
|
||||||
|
|
||||||
|
> [!note] 考试说明
|
||||||
|
> 4.2.6 ROM部分不在考试范围内,了解即可,不需要深入掌握。
|
||||||
|
|
||||||
### 4.2.7 存储器与CPU的连接
|
### 4.2.7 存储器与CPU的连接
|
||||||
|
|
||||||
#### 存储器容量扩展
|
#### 存储器容量扩展
|
||||||
|
|
||||||
|
> [!tip] 考试高频考点
|
||||||
|
> 字位扩展是期中/期末考试的必考题型(2022-2023期末原题)。虽然考试不要求画图,但必须掌握芯片数计算和地址分配。具体例题见下方真题精选第4题。
|
||||||
|
|
||||||
**三种扩展方式**:
|
**三种扩展方式**:
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
@@ -359,6 +373,9 @@ graph TB
|
|||||||
|
|
||||||
#### 海明码(Hamming Code)
|
#### 海明码(Hamming Code)
|
||||||
|
|
||||||
|
> [!tip] 考试高频考点
|
||||||
|
> 海明码的检错纠错计算是作业和考试的经典题型,几乎每年都会考。必须掌握校验位计算、校验位位置安排、错误定位和纠正方法。具体例题见下方真题精选第3题。
|
||||||
|
|
||||||
**原理**:在数据位中插入多个校验位,通过校验位的组合定位错误位。
|
**原理**:在数据位中插入多个校验位,通过校验位的组合定位错误位。
|
||||||
|
|
||||||
**校验位数r满足**:$2^r \geq m + r + 1$(m为数据位数)
|
**校验位数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位校验码。
|
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)
|
## 4.3 高速缓冲存储器(Cache)
|
||||||
@@ -420,6 +444,9 @@ $$e = \frac{T_c}{T_a} = \frac{1}{H + (1-H)r}$$
|
|||||||
> [!info] 问题
|
> [!info] 问题
|
||||||
> 主存块如何放入Cache?需要地址映射。
|
> 主存块如何放入Cache?需要地址映射。
|
||||||
|
|
||||||
|
> [!tip] 考试高频考点
|
||||||
|
> Cache的直接映射和组相联映射是本章最重要的计算题考点。组相联映射涉及地址划分、主存区计算等综合问题,必须熟练掌握。具体例题见下方真题精选第2题。
|
||||||
|
|
||||||
#### 1. 直接映射(Direct Mapping)
|
#### 1. 直接映射(Direct Mapping)
|
||||||
|
|
||||||
**规则**:每个主存块只能映射到Cache的固定行。
|
**规则**:每个主存块只能映射到Cache的固定行。
|
||||||
@@ -493,6 +520,12 @@ graph LR
|
|||||||
|
|
||||||
组相联映射就像图书馆的分组书架,每本书只能放在固定的组,但可以放在组内的任何书架上。先找对应的组,再在组内搜索,比直接映射灵活,比全相联映射快。
|
组相联映射就像图书馆的分组书架,每本书只能放在固定的组,但可以放在组内的任何书架上。先找对应的组,再在组内搜索,比直接映射灵活,比全相联映射快。
|
||||||
|
|
||||||
|
**组相联映射解题关键步骤**:
|
||||||
|
1. 确定Cache组数 = Cache块数 / 每组块数
|
||||||
|
2. 地址划分:高位Tag + 中间组号Index + 低位块内Offset
|
||||||
|
3. 主存区数 = 主存块数 / Cache组数
|
||||||
|
4. 每个主存区中的块按组号映射
|
||||||
|
|
||||||
### 4.3.4 Cache替换策略
|
### 4.3.4 Cache替换策略
|
||||||
|
|
||||||
> [!info] 问题
|
> [!info] 问题
|
||||||
@@ -528,6 +561,9 @@ FIFO(先进先出)最早放上去的文件先被替换,简单但可能把
|
|||||||
> [!info] 定义
|
> [!info] 定义
|
||||||
> 虚拟存储器是一种通过硬件和软件结合,使程序认为自己拥有连续完整内存的技术。
|
> 虚拟存储器是一种通过硬件和软件结合,使程序认为自己拥有连续完整内存的技术。
|
||||||
|
|
||||||
|
> [!note] 考试说明
|
||||||
|
> 4.4 虚拟存储器不在考试范围内,以下内容仅作了解参考。
|
||||||
|
|
||||||
虚拟存储器就像一个魔法书架:你的书架(主存)很小,但你的书(程序)很多,通过魔法让你觉得有一个很大的书架。只把常用的书放在书架上,不常用的书放在地下室(辅存),当你要看不在书架上的书时,魔法自动把书从地下室取来。
|
虚拟存储器就像一个魔法书架:你的书架(主存)很小,但你的书(程序)很多,通过魔法让你觉得有一个很大的书架。只把常用的书放在书架上,不常用的书放在地下室(辅存),当你要看不在书架上的书时,魔法自动把书从地下室取来。
|
||||||
|
|
||||||
Windows的虚拟内存系统:主存是电脑的8GB内存,辅存是硬盘上的页面文件,让程序认为自己有32GB内存。
|
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)。
|
||||||
|
|
||||||
|
### 真题2:Cache组相联映射(作业原题)
|
||||||
|
|
||||||
|
**题目**:某计算机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通常从低地址开始
|
||||||
|
|
||||||
|
### 真题5:DRAM刷新(复习资料原题)
|
||||||
|
|
||||||
|
**题目**:某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。
|
这就像一个仓库有16777216个格子,每个格子能放8个鸡蛋,总容量就是16MB。
|
||||||
|
|
||||||
@@ -655,17 +814,21 @@ Windows的虚拟内存系统:主存是电脑的8GB内存,辅存是硬盘上
|
|||||||
|
|
||||||
**主存组成**:MAR(地址)→ 译码器 → 存储体 ↔ MDR(数据),加上控制电路。
|
**主存组成**:MAR(地址)→ 译码器 → 存储体 ↔ MDR(数据),加上控制电路。
|
||||||
|
|
||||||
**容量扩展三种方式**:位扩展(增加字长,数据线串联)、字扩展(增加字数,片选线用高位地址)、字位同时扩展。
|
**容量扩展三种方式**:位扩展(增加字长,数据线串联)、字扩展(增加字数,片选线用高位地址)、字位同时扩展。总芯片数 = 位扩展数 x 字扩展数。**考试提醒**:必须会计算芯片数量和地址分配,期末曾考过用译码器做片选的综合题。
|
||||||
|
|
||||||
**Cache三个核心问题**:①映射(直接/全相联/组相联)②替换(FIFO/LRU/LFU/随机)③写策略(写直达/写回)。
|
**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+1,8位数据需要4位校验码,可纠正1位错误。
|
**海明码**:校验位数r满足 $2^r \geq m+r+1$,8位数据需要4位校验码,可纠正1位错误。解题步骤:确定校验位数 → 安排位置(2的幂次方)→ 编码 → 检错(各组异或)→ 纠正(翻转错误位)。**考试提醒**:海明码纠错计算是几乎每年必考的题型,务必熟练。
|
||||||
|
|
||||||
|
**DRAM刷新**:集中刷新(有死区)、分散刷新(无死区但效率低)、异步刷新(折中)。计算核心:256行排列,刷新一行=一个存取周期。**考试提醒**:三种刷新方式的参数计算是期末复习重点。
|
||||||
|
|
||||||
|
**不考内容提醒**:存储器结构时序、4.2.6(ROM)、4.4(虚拟存储器)不在考试范围内,复习时可跳过。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -680,3 +843,4 @@ Windows的虚拟内存系统:主存是电脑的8GB内存,辅存是硬盘上
|
|||||||
|
|
||||||
*本章难度:⭐⭐⭐⭐⭐ 困难*
|
*本章难度:⭐⭐⭐⭐⭐ 困难*
|
||||||
*重要程度:⭐⭐⭐⭐⭐ 重点*
|
*重要程度:⭐⭐⭐⭐⭐ 重点*
|
||||||
|
*考试高频考点:存储器带宽、字位扩展、Cache映射、海明码、DRAM刷新*
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
> 📖 本章介绍I/O设备与主机交换信息的三种控制方式:程序查询、中断和DMA。
|
> 📖 本章介绍I/O设备与主机交换信息的三种控制方式:程序查询、中断和DMA。
|
||||||
> 🎯 重点理解中断处理过程和DMA工作原理
|
> 🎯 重点理解中断处理过程和DMA工作原理
|
||||||
|
> ⚠️ 期中/期末重点章:中断处理过程、中断屏蔽字、DMA工作方式、三种I/O方式对比都是高频考点
|
||||||
|
> 📝 课后习题重点关注 5.1~5.4、5.27、5.28、5.33~5.35
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -14,6 +16,7 @@
|
|||||||
- [[#5.5 程序中断方式]]
|
- [[#5.5 程序中断方式]]
|
||||||
- [[#5.6 DMA方式]]
|
- [[#5.6 DMA方式]]
|
||||||
- [[#本章小结]]
|
- [[#本章小结]]
|
||||||
|
- [[#📖 真题与作业精选]]
|
||||||
- [[#例题与解析]]
|
- [[#例题与解析]]
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -179,7 +182,7 @@ graph TB
|
|||||||
- **优点**:简单,容易实现
|
- **优点**:简单,容易实现
|
||||||
- **缺点**:CPU要不断查询,效率低
|
- **缺点**:CPU要不断查询,效率低
|
||||||
|
|
||||||
早期计算机和简单嵌入式系统常用这种方式,CPU要等打印机打印完才能做其他事情。
|
这是三种I/O方式中考查频率最高的一种,考试常以对比题形式出现。早期计算机和简单嵌入式系统常用这种方式,CPU要等打印机打印完才能做其他事情。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -204,6 +207,8 @@ graph TB
|
|||||||
|
|
||||||
### 5.5.3 中断处理过程
|
### 5.5.3 中断处理过程
|
||||||
|
|
||||||
|
> 这是考试高频考点,期中/期末都曾出过简答题或论述题,务必完整背诵七个步骤。
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph TB
|
graph TB
|
||||||
A[中断请求] --> B[中断判优]
|
A[中断请求] --> B[中断判优]
|
||||||
@@ -230,6 +235,15 @@ graph TB
|
|||||||
|
|
||||||
7. **中断返回**:返回原程序继续执行,开中断允许新的中断
|
7. **中断返回**:返回原程序继续执行,开中断允许新的中断
|
||||||
|
|
||||||
|
> [!important] 中断响应过程四步要点(考试常考简答)
|
||||||
|
> 中断响应的具体步骤可以概括为四步:
|
||||||
|
> 1. **关中断** -- 防止新中断打断响应过程
|
||||||
|
> 2. **保存断点** -- 将PC(程序计数器)和PSW(程序状态字)保存到堆栈中
|
||||||
|
> 3. **识别中断源** -- 确定是哪个设备发出的中断
|
||||||
|
> 4. **转入服务程序入口** -- 跳转到对应的中断服务程序
|
||||||
|
>
|
||||||
|
> 注意:断点信息(PC和PSW)通常保存在**堆栈**中,这是考试经常考的细节。
|
||||||
|
|
||||||
这就像你正在工作时有人敲门:有人按门铃(中断请求),如果有多个人按门铃决定先开哪个门(中断判优),你决定去开门(中断响应),把正在做的工作记下来(保存现场),去开门处理事情(中断服务),回来看看之前做到哪里了(恢复现场),继续之前的工作(中断返回)。
|
这就像你正在工作时有人敲门:有人按门铃(中断请求),如果有多个人按门铃决定先开哪个门(中断判优),你决定去开门(中断响应),把正在做的工作记下来(保存现场),去开门处理事情(中断服务),回来看看之前做到哪里了(恢复现场),继续之前的工作(中断返回)。
|
||||||
|
|
||||||
当你按键盘时:键盘向CPU发送中断请求,如果有其他中断键盘中断可能优先级较低,CPU响应键盘中断,保存当前程序的状态,执行键盘中断服务程序处理按键,恢复之前保存的状态,返回原程序继续执行。
|
当你按键盘时:键盘向CPU发送中断请求,如果有其他中断键盘中断可能优先级较低,CPU响应键盘中断,保存当前程序的状态,执行键盘中断服务程序处理按键,恢复之前保存的状态,返回原程序继续执行。
|
||||||
@@ -255,10 +269,20 @@ graph TB
|
|||||||
|
|
||||||
### 5.5.6 中断屏蔽
|
### 5.5.6 中断屏蔽
|
||||||
|
|
||||||
|
> 中断屏蔽字的设置是考试高频题型,期中/期末均出现过。务必掌握屏蔽字的构造方法:对于n个中断源,屏蔽字为n位,第i位为1表示屏蔽该中断源,为0表示开放。高优先级的中断源会屏蔽所有比自己低的中断源。
|
||||||
|
|
||||||
**原理**:通过设置中断屏蔽字,可以禁止某些中断。
|
**原理**:通过设置中断屏蔽字,可以禁止某些中断。
|
||||||
|
|
||||||
中断屏蔽就像你设置了"请勿打扰",设置了门铃响了你也不去开门;不设置门铃响了你就去开门。CPU正在处理重要任务时屏蔽某些中断,CPU空闲时允许所有中断。
|
中断屏蔽就像你设置了"请勿打扰",设置了门铃响了你也不去开门;不设置门铃响了你就去开门。CPU正在处理重要任务时屏蔽某些中断,CPU空闲时允许所有中断。
|
||||||
|
|
||||||
|
**屏蔽字构造规则**:
|
||||||
|
- 每个中断源对应一个n位的屏蔽字(n为中断源总数)
|
||||||
|
- 屏蔽字的第i位为1,表示该中断源处理时屏蔽第i个中断源
|
||||||
|
- 为0表示允许(开放)该中断源
|
||||||
|
- 高优先级中断源会屏蔽所有比自己优先级低的中断源
|
||||||
|
|
||||||
|
屏蔽字的构造方法看下面的真题精选部分有详细例题。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5.6 DMA方式
|
## 5.6 DMA方式
|
||||||
@@ -272,6 +296,8 @@ DMA就像直达快递:传统方式你要从A地寄东西到B地必须经过C
|
|||||||
|
|
||||||
### 5.6.2 DMA的工作方式
|
### 5.6.2 DMA的工作方式
|
||||||
|
|
||||||
|
> DMA的三种工作方式是本章核心知识点,考试常以简答或对比题形式出现。
|
||||||
|
|
||||||
| 方式 | 特点 | 优点 | 缺点 |
|
| 方式 | 特点 | 优点 | 缺点 |
|
||||||
|------|------|------|------|
|
|------|------|------|------|
|
||||||
| **停止CPU访问** | DMA传送时,CPU停止访问内存 | 简单 | CPU效率低 |
|
| **停止CPU访问** | DMA传送时,CPU停止访问内存 | 简单 | CPU效率低 |
|
||||||
@@ -313,6 +339,8 @@ graph TB
|
|||||||
|
|
||||||
### 5.6.4 DMA与中断的区别
|
### 5.6.4 DMA与中断的区别
|
||||||
|
|
||||||
|
> DMA与中断的区别是考试必考内容,几乎每年都有相关题目,建议完整记忆下面的对比表。
|
||||||
|
|
||||||
| 特性 | DMA | 中断 |
|
| 特性 | DMA | 中断 |
|
||||||
|------|-----|------|
|
|------|-----|------|
|
||||||
| **数据传送** | I/O和内存直接传送 | 通过CPU传送 |
|
| **数据传送** | 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,开放C(C优先级高于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 的中断源都应被屏蔽(对应位设为1),X 自身也被屏蔽,而所有优先级**高于** 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:中断处理过程
|
### 例题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)→ DMA(I/O和内存直接传,CPU只管开头和结尾)。
|
**三种I/O方式**(CPU参与度从高到低):程序查询(CPU一直等)→ 程序中断(设备准备好通知CPU)→ DMA(I/O和内存直接传,CPU只管开头和结尾)。
|
||||||
|
|
||||||
@@ -418,13 +511,17 @@ DMA的完整工作过程:CPU初始化DMA(设置参数),DMA请求(I/O
|
|||||||
|
|
||||||
**中断处理七步**:中断请求 → 中断判优 → 中断响应(关中断)→ 保存现场 → 中断服务 → 恢复现场 → 中断返回(开中断)。
|
**中断处理七步**:中断请求 → 中断判优 → 中断响应(关中断)→ 保存现场 → 中断服务 → 恢复现场 → 中断返回(开中断)。
|
||||||
|
|
||||||
|
**中断响应四步**:关中断 → 保存断点(PC和PSW到堆栈)→ 识别中断源 → 转入服务程序入口。注意区分"中断响应"和"中断处理"两个概念。
|
||||||
|
|
||||||
|
**中断屏蔽字**:n个中断源用n位表示,0开放1屏蔽。高优先级中断源处理时屏蔽所有低优先级中断源。这是考试常考的计算/分析题。
|
||||||
|
|
||||||
**中断优先级**:硬件故障 > 软件中断 > I/O中断 > 用户程序。
|
**中断优先级**:硬件故障 > 软件中断 > I/O中断 > 用户程序。
|
||||||
|
|
||||||
**DMA三大要点**:①I/O和内存直接传送,不经过CPU ②CPU只在初始化和结束时参与 ③每个机器周期结束时响应(比中断更快)。
|
**DMA三大要点**:①I/O和内存直接传送,不经过CPU ②CPU只在初始化和结束时参与 ③每个机器周期结束时响应(比中断更快)。
|
||||||
|
|
||||||
**DMA三种工作方式**:停止CPU访问(简单但CPU空等)、周期挪用(CPU不访存时DMA传送)、交替访问(效率最高但硬件复杂)。
|
**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*
|
||||||
|
|||||||
@@ -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.4 定点运算]]
|
||||||
- [[#6.5 浮点运算]]
|
- [[#6.5 浮点运算]]
|
||||||
- [[#本章小结]]
|
- [[#本章小结]]
|
||||||
|
- [[#真题与作业精选]]
|
||||||
- [[#例题与解析]]
|
- [[#例题与解析]]
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -222,9 +224,20 @@ graph LR
|
|||||||
|
|
||||||
### 6.3.3 IEEE 754标准
|
### 6.3.3 IEEE 754标准
|
||||||
|
|
||||||
|
> ⚠️ **这是考试高频考点**,IEEE 754格式转换在期中考试和样卷中都出现过。
|
||||||
|
|
||||||
**单精度浮点数(32位)**:符号位1位,阶码8位(移码表示),尾数23位
|
**单精度浮点数(32位)**:符号位1位,阶码8位(移码表示),尾数23位
|
||||||
**双精度浮点数(64位)**:符号位1位,阶码11位(移码表示),尾数52位
|
**双精度浮点数(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位精度高但速度慢,用于高精度科学计算和金融计算。
|
IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速度快,用于大多数图形处理和科学计算;双精度64位精度高但速度慢,用于高精度科学计算和金融计算。
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -233,32 +246,23 @@ IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速
|
|||||||
|
|
||||||
### 6.4.1 移位运算
|
### 6.4.1 移位运算
|
||||||
|
|
||||||
|
> ⚠️ **算术移位是作业原题考点**,不同编码(原码、补码、反码)的移位规则不同,需要特别注意。
|
||||||
|
|
||||||
**算术移位**:左移相当于乘以2,右移相当于除以2
|
**算术移位**:左移相当于乘以2,右移相当于除以2
|
||||||
**逻辑移位**:左移高位移出低位补0,右移低位移出高位补0
|
|
||||||
|
**不同编码的移位规则**:
|
||||||
|
|
||||||
|
| 编码 | 左移低位补 | 右移高位补 |
|
||||||
|
|------|-----------|-----------|
|
||||||
|
| 原码 | 补0 | 补0 |
|
||||||
|
| 反码 | 补0(正数)/补1(负数) | 补0(正数)/补1(负数) |
|
||||||
|
| 补码 | 补0 | 正数补0,负数补1(即补符号位) |
|
||||||
|
|
||||||
|
**注意**:算术左移可能溢出。比如原码1.1101000左移一位得到1.1010000,最高数值位的1被移出导致溢出。这是考试中常见的陷阱,三种编码的移位结果可能不同,具体示例见"真题与作业精选"部分。
|
||||||
|
|
||||||
算术移位像移动小数点,左移小数点向右移动数值变大,右移小数点向左移动数值变小。逻辑移位所有位向左或向右移动。1010左移1位变成10100(10→20)。
|
算术移位像移动小数点,左移小数点向右移动数值变大,右移小数点向左移动数值变小。逻辑移位所有位向左或向右移动。1010左移1位变成10100(10→20)。
|
||||||
|
|
||||||
### 6.4.2 加减运算
|
**逻辑移位**:左移高位移出低位补0,右移低位移出高位补0
|
||||||
|
|
||||||
**补码加减运算**:加法直接相加,减法减数变补码后相加
|
|
||||||
|
|
||||||
**溢出判断**:正溢出两个正数相加结果为负,负溢出两个负数相加结果为正
|
|
||||||
|
|
||||||
补码加减运算像时钟运算:9+7=16≡4(mod 12),9-5=9+7=16≡4(mod 12)。127+1=-128(8位补码溢出)。
|
|
||||||
|
|
||||||
### 6.4.3 乘法运算
|
|
||||||
|
|
||||||
**原码乘法**:符号位单独处理,数值部分相乘
|
|
||||||
**补码乘法**:直接用补码相乘
|
|
||||||
|
|
||||||
乘法运算像重复加法:10×13=130,-6×-3=18。
|
|
||||||
|
|
||||||
### 6.4.4 除法运算
|
|
||||||
|
|
||||||
**原码除法**:符号位单独处理,数值部分相除
|
|
||||||
**补码除法**:直接用补码相除
|
|
||||||
|
|
||||||
除法运算像重复减法:10÷2=5,-6÷2=-3。
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -266,6 +270,8 @@ IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速
|
|||||||
|
|
||||||
### 6.5.1 浮点加减运算
|
### 6.5.1 浮点加减运算
|
||||||
|
|
||||||
|
> ⚠️ 6.5节不在考试范围内,以下内容仅供了解。
|
||||||
|
|
||||||
**步骤**:
|
**步骤**:
|
||||||
1. **对阶**:使两个数的阶码相同
|
1. **对阶**:使两个数的阶码相同
|
||||||
2. **尾数运算**:对阶后进行尾数加减
|
2. **尾数运算**:对阶后进行尾数加减
|
||||||
@@ -316,6 +322,135 @@ IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 📖 真题与作业精选
|
||||||
|
|
||||||
|
> 以下是来自期中考试、样卷和课后作业的真实题目,覆盖本章核心考点。
|
||||||
|
|
||||||
|
### 真题1:补码加减运算(期中原题)
|
||||||
|
|
||||||
|
**题目**:已知 A=-87, B=53,用8位补码计算 A-B。
|
||||||
|
|
||||||
|
**解答过程**:
|
||||||
|
|
||||||
|
首先求出A和B的补码表示:
|
||||||
|
- A = -87,87的二进制为01010111,取反加1得 [A]补 = 10101001
|
||||||
|
- B = 53,53的二进制为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),发生**负溢出**。
|
||||||
|
|
||||||
|
> 💡 这道题展示了补码减法的完整过程:减法转化为加法,以及双符号位溢出判断法——两个负数相加得正数即为溢出。
|
||||||
|
|
||||||
|
### 真题2:IEEE 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 × 2³(规格化)
|
||||||
|
- 阶码3,8位原码:00000011
|
||||||
|
- 尾数0.111011,补足位数:0.1110110000
|
||||||
|
- 因为是正数,原码 = 补码
|
||||||
|
|
||||||
|
**x₂ = -86.5**:
|
||||||
|
- 转换为二进制:86.5 = 1010110.1 = 0.10101101 × 2⁷(规格化)
|
||||||
|
- 阶码7,8位原码:00000111
|
||||||
|
- 尾数为负数:原码为 1.1010110100,补码需要对负数尾数取反加1
|
||||||
|
|
||||||
|
> 💡 浮点数表示需要注意:1)规格化(尾数最高位为1);2)阶码和尾数的符号分开处理;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:补码计算
|
### 例题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_计算机组成原理学习指南]] - 返回主目录
|
- [[00_计算机组成原理学习指南]] - 返回主目录
|
||||||
@@ -412,3 +523,4 @@ IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速
|
|||||||
|
|
||||||
*本章难度:⭐⭐⭐⭐⭐ 困难*
|
*本章难度:⭐⭐⭐⭐⭐ 困难*
|
||||||
*重要程度:⭐⭐⭐⭐⭐ 重点*
|
*重要程度:⭐⭐⭐⭐⭐ 重点*
|
||||||
|
*考试提醒:本章是期中考试和期末考试的核心章节,补码运算和IEEE 754几乎必考*
|
||||||
|
|||||||
@@ -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技术]]
|
- [[#7.5 RISC技术]]
|
||||||
- [[#本章小结]]
|
- [[#本章小结]]
|
||||||
- [[#例题与解析]]
|
- [[#例题与解析]]
|
||||||
|
- [[#真题与作业精选]]
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -89,6 +94,9 @@ graph TB
|
|||||||
|
|
||||||
扩展操作码就像邮政编码系统:短操作码常用指令用短编码节省空间,长操作码不常用指令用长编码种类多。4位操作码15条三地址指令(1111保留),8位操作码15条二地址指令,12位操作码15条一地址指令,16位操作码16条零地址指令。
|
扩展操作码就像邮政编码系统:短操作码常用指令用短编码节省空间,长操作码不常用指令用长编码种类多。4位操作码15条三地址指令(1111保留),8位操作码15条二地址指令,12位操作码15条一地址指令,16位操作码16条零地址指令。
|
||||||
|
|
||||||
|
> [!tip] 考试提示
|
||||||
|
> 扩展操作码设计是期中/期末的高频考点。核心思路:先确定操作码需要的位数(操作种类数取log2向上取整),再用剩余位作为地址码。如果要扩大寻址范围,可以考虑间接寻址(用间接寻址可以把有效地址扩展到整个存储空间)。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7.2 操作数类型和操作类型
|
## 7.2 操作数类型和操作类型
|
||||||
@@ -122,6 +130,9 @@ graph TB
|
|||||||
|
|
||||||
## 7.3 寻址方式
|
## 7.3 寻址方式
|
||||||
|
|
||||||
|
> [!tip] 考试提示
|
||||||
|
> 寻址方式分析是本章最高频的考点,几乎每年都会出题。关键要会算有效地址EA和操作数,并能判断每种寻址方式需要访存几次。
|
||||||
|
|
||||||
### 7.3.1 指令寻址
|
### 7.3.1 指令寻址
|
||||||
|
|
||||||
**顺序寻址**:PC = PC + 1,按顺序执行指令
|
**顺序寻址**:PC = PC + 1,按顺序执行指令
|
||||||
@@ -141,12 +152,27 @@ graph TB
|
|||||||
|
|
||||||
**寄存器间接寻址**:操作数地址在寄存器中,比如MOV A, [R1]。盒子里有一张纸条告诉你东西在哪里,灵活可以动态改变地址,需要访问内存。
|
**寄存器间接寻址**:操作数地址在寄存器中,比如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)=0004H,PC=0003H。
|
||||||
|
> - 变址寻址:EA = A + (IX) = A + 0004H,A不变,IX可变。
|
||||||
|
> - 基址寻址:EA = A + (BR) = A + (BR),BR不变,A可变。
|
||||||
|
|
||||||
**相对寻址**:操作数地址 = PC + 偏移量,比如JMP +10(跳转到PC+10的位置)。东西在当前位置的某个偏移位置,适合相对跳转。
|
**相对寻址**:操作数地址 = PC + 偏移量,比如JMP +10(跳转到PC+10的位置)。东西在当前位置的某个偏移位置,适合相对跳转。
|
||||||
|
|
||||||
|
> [!tip] 访存次数分析(复习资料原题)
|
||||||
|
> 不同寻址方式的访存次数是考试重点:
|
||||||
|
> - `ADD 04H, R0`(直接寻址):3次访存(取指2次 + 取操作数1次)
|
||||||
|
> - `ADD (04H), R0`(间接寻址):4次访存(取指2次 + 取数1次 + 写回1次)
|
||||||
|
>
|
||||||
|
> 规律:每多一层间接,就多一次访存。考试中要仔细区分直接寻址和间接寻址。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7.4 指令格式
|
## 7.4 指令格式
|
||||||
@@ -161,30 +187,32 @@ graph TB
|
|||||||
|
|
||||||
指令格式设计就像设计邮票:规整性指令长度对齐便于译码,高效性常用指令短不常用指令长,兼容性新处理器能运行旧程序,扩展性保留一些编码用于未来扩展。
|
指令格式设计就像设计邮票:规整性指令长度对齐便于译码,高效性常用指令短不常用指令长,兼容性新处理器能运行旧程序,扩展性保留一些编码用于未来扩展。
|
||||||
|
|
||||||
### 7.4.2 指令格式举例
|
|
||||||
|
|
||||||
**x86指令格式**:变长指令,格式复杂,代码密度高兼容性好,译码复杂。
|
|
||||||
**ARM指令格式**:固定长度指令,格式简单,译码简单速度快,代码密度低。
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7.5 RISC技术
|
## 7.5 RISC技术
|
||||||
|
|
||||||
|
> [!tip] 考试提示
|
||||||
|
> CISC vs RISC 对比是本章的经典考点,经常以简答题或对比题的形式出现。要记住两者在指令数量、指令长度、控制方式、流水线支持等方面的区别。
|
||||||
|
|
||||||
### 7.5.1 RISC与CISC对比
|
### 7.5.1 RISC与CISC对比
|
||||||
|
|
||||||
| 特性 | RISC | CISC |
|
| 特性 | RISC | CISC |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| 指令数量 | 少 | 多 |
|
| 指令数量 | 少(几十条) | 多(几百条) |
|
||||||
| 指令长度 | 固定 | 可变 |
|
| 指令长度 | 固定 | 可变 |
|
||||||
| 寻址方式 | 简单 | 复杂 |
|
| 寻址方式 | 简单(少) | 复杂(多) |
|
||||||
| 指令周期 | 单周期 | 多周期 |
|
| 指令周期 | 单周期 | 多周期 |
|
||||||
| 流水线 | 支持 | 部分支持 |
|
| 流水线 | 支持(友好) | 部分支持 |
|
||||||
| 编译器 | 复杂 | 简单 |
|
| 编译器 | 复杂 | 简单 |
|
||||||
|
| 控制方式 | 硬布线控制 | 微程序控制 |
|
||||||
|
| 代表 | ARM、MIPS | x86 |
|
||||||
|
|
||||||
RISC(精简指令集)指令少简单速度快,容易实现流水线,但编译器复杂代码密度低;CISC(复杂指令集)指令多复杂功能强,编译器简单代码密度高,但难以实现流水线速度慢。
|
RISC(精简指令集)指令少简单速度快,容易实现流水线,但编译器复杂代码密度低;CISC(复杂指令集)指令多复杂功能强,编译器简单代码密度高,但难以实现流水线速度慢。
|
||||||
|
|
||||||
ARM处理器(手机)、MIPS处理器(嵌入式)是RISC;x86处理器(个人电脑)是CISC。
|
ARM处理器(手机)、MIPS处理器(嵌入式)是RISC;x86处理器(个人电脑)是CISC。
|
||||||
|
|
||||||
|
> 记忆口诀:RISC——少而精、快而简、硬布线、流水线;CISC——多而全、慢而杂、微程序、编译简。
|
||||||
|
|
||||||
### 7.5.2 RISC特点
|
### 7.5.2 RISC特点
|
||||||
|
|
||||||
**主要特点**:
|
**主要特点**:
|
||||||
@@ -217,6 +245,7 @@ ARM处理器(手机)、MIPS处理器(嵌入式)是RISC;x86处理器(
|
|||||||
| 操作码 | Operation Code | 指明操作类型 |
|
| 操作码 | Operation Code | 指明操作类型 |
|
||||||
| 地址码 | Address Code | 指明操作数地址 |
|
| 地址码 | Address Code | 指明操作数地址 |
|
||||||
| 寻址方式 | Addressing Mode | 找到操作数的方式 |
|
| 寻址方式 | Addressing Mode | 找到操作数的方式 |
|
||||||
|
| 有效地址 | Effective Address | 实际访问的存储器地址 |
|
||||||
| RISC | Reduced Instruction Set Computer | 精简指令集计算机 |
|
| RISC | Reduced Instruction Set Computer | 精简指令集计算机 |
|
||||||
| CISC | Complex Instruction Set Computer | 复杂指令集计算机 |
|
| CISC | Complex Instruction Set Computer | 复杂指令集计算机 |
|
||||||
|
|
||||||
@@ -292,22 +321,101 @@ RISC像精简工具,工具少简单速度快,容易使用效率高但功能
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 📖 真题与作业精选
|
||||||
|
|
||||||
|
> 以下题目来自期中/期末考试、课后作业及复习资料,是本章最常考的题型。
|
||||||
|
|
||||||
|
### 真题1:寻址方式求有效地址(复习资料原题)
|
||||||
|
|
||||||
|
**题目**:已知变址寄存器(IX)=0004H,PC=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<78,2^7=128>=78)。
|
||||||
|
2. 地址码位数 = 16 - 7 = 9位。
|
||||||
|
3. 9位地址码只能寻址2^9=512个单元,远小于2^16。可以采用**间接寻址**来扩大寻址范围——指令中的9位地址指向一个存储单元,该单元中存放的才是16位的有效地址,从而实现对2^16=65536个单元的寻址。
|
||||||
|
|
||||||
|
> [!tip] 解题技巧
|
||||||
|
> 扩展操作码设计题的关键步骤:①算操作码位数(log2向上取整);②用指令字长减去操作码位数得到地址码位数;③计算寻址范围;④如果寻址范围不够,考虑间接寻址扩展。这是期中考试曾经考过的原题,务必掌握。
|
||||||
|
|
||||||
|
### 真题4:CISC vs RISC 对比(考试高频简答题)
|
||||||
|
|
||||||
|
**题目**:从指令数量、指令长度、寻址方式、控制器实现、指令周期和流水线支持等方面比较CISC和RISC。
|
||||||
|
|
||||||
|
**答**:
|
||||||
|
|
||||||
|
| 比较项目 | CISC | RISC |
|
||||||
|
|----------|------|------|
|
||||||
|
| 指令数量 | 多(几百条),功能强 | 少(几十条),精简 |
|
||||||
|
| 指令长度 | 可变,不固定 | 固定长度 |
|
||||||
|
| 寻址方式 | 多种,灵活复杂 | 少数几种,简单 |
|
||||||
|
| 控制方式 | 微程序控制 | 硬布线控制 |
|
||||||
|
| 指令周期 | 多周期,时间长 | 单周期(多数),时间短 |
|
||||||
|
| 流水线 | 部分支持,难以高效流水 | 天然友好,易于流水线实现 |
|
||||||
|
| 编译器 | 简单,硬件做更多事 | 复杂,编译器做优化 |
|
||||||
|
| 编程 | 编程方便,指令表达力强 | 编程相对麻烦 |
|
||||||
|
| 代表 | x86(PC处理器) | ARM(手机)、MIPS(嵌入式) |
|
||||||
|
|
||||||
|
CISC的设计哲学是"硬件做更多事",让编程更方便;RISC的设计哲学是"软件做更多事",让硬件更简单高效。现代处理器中,x86内部其实也采用了类似RISC的微操作来提高效率。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## ⚡ 知识点速记卡
|
## ⚡ 知识点速记卡
|
||||||
|
|
||||||
> 考前快速过一遍,30秒回忆整章核心
|
> 考前快速过一遍,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/MIPS);CISC指令多、可变长度、多周期、微程序控制(x86)。
|
**RISC vs CISC**:RISC指令少、固定长度、单周期、流水线友好、硬布线控制(ARM/MIPS);CISC指令多、可变长度、多周期、微程序控制(x86)。
|
||||||
|
|
||||||
**指令格式设计**:规整性(长度对齐)、高效性(常用指令短)、兼容性(向后兼容)、扩展性(留余地)。
|
**指令格式设计**:规整性(长度对齐)、高效性(常用指令短)、兼容性(向后兼容)、扩展性(留余地)。
|
||||||
|
|
||||||
|
> **本章常见考题类型**:
|
||||||
|
> 1. 寻址方式识别与有效地址计算(必考)
|
||||||
|
> 2. 扩展操作码设计(期中考过原题)
|
||||||
|
> 3. 访存次数分析(注意直接/间接寻址的区别)
|
||||||
|
> 4. CISC vs RISC对比(简答题高频考点)
|
||||||
|
> 5. 指令格式分析与设计
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔗 相关链接
|
## 🔗 相关链接
|
||||||
@@ -321,3 +429,4 @@ RISC像精简工具,工具少简单速度快,容易使用效率高但功能
|
|||||||
|
|
||||||
*本章难度:⭐⭐⭐⭐ 中等*
|
*本章难度:⭐⭐⭐⭐ 中等*
|
||||||
*重要程度:⭐⭐⭐⭐ 重要*
|
*重要程度:⭐⭐⭐⭐ 重要*
|
||||||
|
*考试占比:期中/期末约10~15分,以寻址方式和扩展操作码设计为主*
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
> 📖 本章介绍CPU的功能、内部结构和指令执行过程。
|
> 📖 本章介绍CPU的功能、内部结构和指令执行过程。
|
||||||
> 🎯 重点理解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.1 CPU的结构]]
|
||||||
- [[#8.2 指令周期]]
|
- [[#8.2 指令周期]]
|
||||||
- [[#8.3 指令流水]]
|
- [[#8.3 指令流水]]
|
||||||
- [[#8.4 中断系统]]
|
|
||||||
- [[#本章小结]]
|
- [[#本章小结]]
|
||||||
|
- [[#📖 真题与作业精选]]
|
||||||
- [[#例题与解析]]
|
- [[#例题与解析]]
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -75,6 +77,9 @@ CPU结构就像公司的组织架构:运算器中,ALU(算术逻辑单元
|
|||||||
|
|
||||||
当你执行一条加法指令时:PC记录下一条指令的地址,IR存放当前加法指令,CU译码并发出控制信号,ALU执行加法运算,ACC存放运算结果,PSW记录运算状态。
|
当你执行一条加法指令时:PC记录下一条指令的地址,IR存放当前加法指令,CU译码并发出控制信号,ALU执行加法运算,ACC存放运算结果,PSW记录运算状态。
|
||||||
|
|
||||||
|
> [!tip] 考试高频题型
|
||||||
|
> 给出CPU结构图,要求识别各寄存器(A、B、C、D分别是什么)并描述取指/读数的数据通路。这是期中考试的经典题型,务必掌握图中每个部件的功能和数据流向。
|
||||||
|
|
||||||
### 8.1.3 CPU的寄存器
|
### 8.1.3 CPU的寄存器
|
||||||
|
|
||||||
#### 用户可见寄存器
|
#### 用户可见寄存器
|
||||||
@@ -100,6 +105,11 @@ CPU结构就像公司的组织架构:运算器中,ALU(算术逻辑单元
|
|||||||
|
|
||||||
PC(程序计数器)记录下一个要执行的任务,执行完一个任务后自动指向下一个任务,遇到跳转指令时指向跳转目标。IR(指令寄存器)记录正在执行的任务,包含操作码(要做什么)和地址码(操作数在哪里),操作码送给CU译码。MAR(存储器地址寄存器)记录要访问的仓库位置,把地址送到仓库。MDR(存储器数据寄存器)传送仓库和车间之间的物品。PSW(程序状态字寄存器)显示当前工作状态,包括条件码、中断屏蔽位等。
|
PC(程序计数器)记录下一个要执行的任务,执行完一个任务后自动指向下一个任务,遇到跳转指令时指向跳转目标。IR(指令寄存器)记录正在执行的任务,包含操作码(要做什么)和地址码(操作数在哪里),操作码送给CU译码。MAR(存储器地址寄存器)记录要访问的仓库位置,把地址送到仓库。MDR(存储器数据寄存器)传送仓库和车间之间的物品。PSW(程序状态字寄存器)显示当前工作状态,包括条件码、中断屏蔽位等。
|
||||||
|
|
||||||
|
> [!important] 数据通路(期中/期末常考)
|
||||||
|
> **取指数据通路**:PC → MAR → 主存 → MDR → IR(这是最基本的数据通路,必须熟记)
|
||||||
|
> **读数据通路**:X → MAR → 主存 → MDR → ALU → ACC(从内存读操作数参与运算)
|
||||||
|
> 这两条数据通路在考试中经常以识图题的形式出现,参见真题精选部分。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 8.2 指令周期
|
## 8.2 指令周期
|
||||||
@@ -130,6 +140,11 @@ graph TB
|
|||||||
- **机器周期**:完成一个基本操作的时间
|
- **机器周期**:完成一个基本操作的时间
|
||||||
- **指令周期**:完成一条指令的时间
|
- **指令周期**:完成一条指令的时间
|
||||||
|
|
||||||
|
> [!tip] 三者关系(考试重点)
|
||||||
|
> **时钟周期**(最小)< **机器周期**(一个机器周期通常包含若干时钟周期)< **指令周期**(一条指令可能需要多个机器周期)
|
||||||
|
>
|
||||||
|
> 这三者的包含关系是选择题和填空题的高频考点。记住:一个指令周期包含若干机器周期,一个机器周期包含若干时钟周期。
|
||||||
|
|
||||||
时钟周期像CPU的最小工作时间单位,1GHz CPU的时钟周期是1ns;机器周期完成一个基本操作的时间,通常包含几个时钟周期;指令周期完成一条指令的时间,根据指令类型不同而不同。
|
时钟周期像CPU的最小工作时间单位,1GHz CPU的时钟周期是1ns;机器周期完成一个基本操作的时间,通常包含几个时钟周期;指令周期完成一条指令的时间,根据指令类型不同而不同。
|
||||||
|
|
||||||
### 8.2.3 指令执行过程
|
### 8.2.3 指令执行过程
|
||||||
@@ -170,57 +185,44 @@ graph TB
|
|||||||
|
|
||||||
### 8.3.2 流水线的性能
|
### 8.3.2 流水线的性能
|
||||||
|
|
||||||
**吞吐率**:
|
这是本章最重要的计算题考点,几乎每次考试都会出现。
|
||||||
|
|
||||||
|
**吞吐率**(单位时间完成的指令数):
|
||||||
$$TP = \frac{n}{k + (n-1)}$$
|
$$TP = \frac{n}{k + (n-1)}$$
|
||||||
|
|
||||||
**加速比**:
|
其中 $n$ 为指令条数,$k$ 为流水线段数,每段假设时间相同为 $\Delta t$。当各段时间不同时,吞吐率受限于最慢的段:
|
||||||
|
$$TP_{max} = \frac{1}{\max(\Delta t_i)}$$
|
||||||
|
|
||||||
|
**加速比**(非流水线时间 / 流水线时间):
|
||||||
$$S = \frac{nk}{k + (n-1)}$$
|
$$S = \frac{nk}{k + (n-1)}$$
|
||||||
|
|
||||||
**效率**:
|
**效率**(流水线各段的利用率):
|
||||||
$$E = \frac{S}{k} = \frac{n}{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%。
|
假设流水线有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.3.3 流水线冲突
|
||||||
|
|
||||||
|
流水线冲突分析是考试中分析题的常见考点,要能判断指令间存在哪种冲突以及如何解决。
|
||||||
|
|
||||||
**结构冲突**:硬件资源不足,两个指令同时访问同一个存储器,增加硬件资源解决。
|
**结构冲突**:硬件资源不足,两个指令同时访问同一个存储器,增加硬件资源解决。
|
||||||
|
|
||||||
**数据冲突**:指令之间有数据依赖,后面的指令需要前面指令的结果,数据旁路或流水线暂停解决。
|
**数据冲突**:指令之间有数据依赖,后面的指令需要前面指令的结果。解决方法:数据旁路(将结果直接转发给后续指令)或流水线暂停(插入气泡等待数据就绪)。
|
||||||
|
|
||||||
**控制冲突**:分支指令改变程序流,跳转指令导致流水线需要重新取指,分支预测或延迟分支解决。
|
**控制冲突**:分支指令改变程序流,跳转指令导致流水线需要重新取指。解决方法:分支预测或延迟分支。
|
||||||
|
|
||||||
结构冲突像两个工人都要用同一个工具,多买几个工具解决;数据冲突像上一个产品还没做完下一个产品需要它的零件,等做完或先做其他产品解决;控制冲突像突然改变生产计划,提前预测或等确定后再生产解决。
|
结构冲突像两个工人都要用同一个工具,多买几个工具解决;数据冲突像上一个产品还没做完下一个产品需要它的零件,等做完或先做其他产品解决;控制冲突像突然改变生产计划,提前预测或等确定后再生产解决。
|
||||||
|
|
||||||
---
|
> [!tip] 冲突判断技巧(考试高频)
|
||||||
|
> - 看两条指令是否同时使用同一硬件资源 → 结构冲突
|
||||||
## 8.4 中断系统
|
> - 看后一条指令的源操作数是否是前一条指令的目的操作数 → 数据冲突(RAW/RAW相关)
|
||||||
|
> - 看是否出现条件转移或无条件跳转 → 控制冲突
|
||||||
### 8.4.1 中断系统的基本功能
|
> 一道题中可能同时出现多种冲突,注意逐一排查。参见真题精选第2题。
|
||||||
|
|
||||||
**主要功能**:
|
|
||||||
1. **中断请求**:接收中断请求信号
|
|
||||||
2. **中断判优**:决定哪个中断先处理
|
|
||||||
3. **中断响应**:响应中断请求
|
|
||||||
4. **中断处理**:执行中断服务程序
|
|
||||||
5. **中断返回**:返回原程序
|
|
||||||
|
|
||||||
中断系统像公司的紧急事件处理系统:中断请求接收紧急事件报告,中断判优决定先处理哪个紧急事件,中断响应决定处理紧急事件,中断处理执行紧急事件处理程序,中断返回返回原工作。
|
|
||||||
|
|
||||||
### 8.4.2 中断系统的实现
|
|
||||||
|
|
||||||
**硬件实现**:
|
|
||||||
- **中断请求触发器**:保存中断请求信号
|
|
||||||
- **中断屏蔽触发器**:控制中断是否被屏蔽
|
|
||||||
- **中断判优电路**:决定中断优先级
|
|
||||||
- **中断向量表**:存放中断服务程序入口地址
|
|
||||||
|
|
||||||
**软件实现**:
|
|
||||||
- **中断服务程序**:处理中断的程序
|
|
||||||
- **中断处理流程**:中断处理的步骤
|
|
||||||
|
|
||||||
硬件实现像紧急事件处理流程:中断请求触发器是紧急事件报告箱,中断屏蔽触发器是请勿打扰标志,中断判优电路是紧急事件分类器,中断向量表是紧急事件处理手册。
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -232,7 +234,7 @@ $$E = \frac{S}{k} = \frac{n}{k + (n-1)}$$
|
|||||||
2. **CPU结构**:运算器、控制器、寄存器
|
2. **CPU结构**:运算器、控制器、寄存器
|
||||||
3. **指令周期**:取指周期、执行周期
|
3. **指令周期**:取指周期、执行周期
|
||||||
4. **指令流水**:提高CPU效率的重要技术
|
4. **指令流水**:提高CPU效率的重要技术
|
||||||
5. **中断系统**:处理紧急事件的机制
|
5. **流水线冲突**:结构冲突、数据冲突、控制冲突
|
||||||
|
|
||||||
### 关键术语
|
### 关键术语
|
||||||
|
|
||||||
@@ -243,20 +245,115 @@ $$E = \frac{S}{k} = \frac{n}{k + (n-1)}$$
|
|||||||
| CU | Control Unit | 控制单元 |
|
| CU | Control Unit | 控制单元 |
|
||||||
| PC | Program Counter | 程序计数器 |
|
| PC | Program Counter | 程序计数器 |
|
||||||
| IR | Instruction Register | 指令寄存器 |
|
| IR | Instruction Register | 指令寄存器 |
|
||||||
|
| MAR | Memory Address Register | 存储器地址寄存器 |
|
||||||
|
| MDR | Memory Data Register | 存储器数据寄存器 |
|
||||||
| 流水线 | Pipeline | 指令流水 |
|
| 流水线 | Pipeline | 指令流水 |
|
||||||
| 中断 | Interrupt | 紧急事件处理 |
|
| 吞吐率 | Throughput | 单位时间完成指令数 |
|
||||||
|
| 加速比 | Speedup | 流水线相对非流水线的提升 |
|
||||||
|
|
||||||
### 重点图示
|
### 重点图示
|
||||||
|
|
||||||
> [!summary] 必须掌握的图
|
> [!summary] 必须掌握的图
|
||||||
> 1. CPU内部结构图
|
> 1. CPU内部结构图(识别各寄存器)
|
||||||
> 2. 指令周期时序图
|
> 2. 取指/读数据通路图
|
||||||
> 3. 流水线示意图
|
> 3. 指令周期时序图
|
||||||
> 4. 中断处理流程图
|
> 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. 最后看结构依赖:是否同时访问同一硬件资源
|
||||||
|
|
||||||
|
### 真题3:CPU寄存器识别与数据通路(复习资料原题)
|
||||||
|
|
||||||
|
**题目**:某CPU内部结构图中标注了A、B、C、D四个部件,分别连接在数据通路上。请指出它们分别是什么寄存器,并描述取指和读数据的完整数据通路。
|
||||||
|
|
||||||
|
**解答**:
|
||||||
|
|
||||||
|
- **A = MDR**(存储器数据寄存器):CPU与主存之间传送数据的缓冲
|
||||||
|
- **B = MAR**(存储器地址寄存器):存放要访问的主存地址
|
||||||
|
- **C = IR**(指令寄存器):存放当前正在执行的指令
|
||||||
|
- **D = PC**(程序计数器):存放下一条要执行的指令地址
|
||||||
|
|
||||||
|
**取指数据通路**:PC → MAR → 主存(取指令)→ MDR → IR
|
||||||
|
|
||||||
|
具体过程:PC把指令地址送到MAR,MAR通过地址总线把地址送到主存,主存根据地址找到指令并通过数据总线送到MDR,MDR把指令送到IR,同时PC+1指向下一条指令。
|
||||||
|
|
||||||
|
**读数据通路**:X → MAR → 主存(读数据)→ MDR → ALU → ACC
|
||||||
|
|
||||||
|
具体过程:操作数地址X送到MAR,MAR把地址送到主存,主存找到数据送到MDR,MDR把数据送到ALU参与运算,运算结果送到ACC。
|
||||||
|
|
||||||
|
> [!important] 期中/期末曾考此题
|
||||||
|
> 识别CPU结构图中各部件是经典考试题型。关键记忆:MAR管地址、MDR管数据、IR存指令、PC存下条地址。
|
||||||
|
|
||||||
|
### 真题4:流水线效率分析与改进(复习资料原题)
|
||||||
|
|
||||||
|
**题目**:某流水线只有IF、ID、EX、WB四个阶段,各段时间为IF(2t)、ID(2t)、EX(t)、WB(t)。计算该流水线的效率,并提出改进方案。
|
||||||
|
|
||||||
|
**解答**:
|
||||||
|
|
||||||
|
1. **原流水线效率**:最慢段为2t(IF和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] 流水线改进的核心思路
|
||||||
|
> 效率低的根本原因是各段时间不均衡,导致快的段等待慢的段。改进方法要么拆分慢段使之均匀,要么并联重复设置瓶颈段。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 例题与解析
|
||||||
|
|
||||||
### 例题1:CPU功能分析
|
### 例题1:CPU功能分析
|
||||||
|
|
||||||
@@ -266,18 +363,20 @@ $$E = \frac{S}{k} = \frac{n}{k + (n-1)}$$
|
|||||||
|
|
||||||
CPU的五大功能:指令控制控制程序的顺序执行,像总经理按顺序安排工作;操作控制产生完成每条指令所需的控制信号,像总经理发出工作指令;时间控制对各种操作加以时间上的控制,像总经理控制工作进度;数据加工对数据进行算术运算和逻辑运算,像员工处理数据;中断处理处理异常情况和特殊请求,像总经理处理紧急情况。
|
CPU的五大功能:指令控制控制程序的顺序执行,像总经理按顺序安排工作;操作控制产生完成每条指令所需的控制信号,像总经理发出工作指令;时间控制对各种操作加以时间上的控制,像总经理控制工作进度;数据加工对数据进行算术运算和逻辑运算,像员工处理数据;中断处理处理异常情况和特殊请求,像总经理处理紧急情况。
|
||||||
|
|
||||||
### 例题2:指令周期计算
|
### 例题2:指令周期计算(参考课后习题8.1、8.2)
|
||||||
|
|
||||||
**题目**:某CPU主频为1GHz,取指周期为4个时钟周期,执行周期为6个时钟周期,求执行100条指令所需时间。
|
**题目**:某CPU主频为1GHz,取指周期为4个时钟周期,执行周期为6个时钟周期,求执行100条指令所需时间。
|
||||||
|
|
||||||
**答案**:
|
**答案**:
|
||||||
|
|
||||||
主频1GHz=10⁹Hz,时钟周期1/10⁹=1ns。
|
主频1GHz=10^9 Hz,时钟周期1/10^9 =1ns。
|
||||||
取指周期4个时钟周期=4ns,执行周期6个时钟周期=6ns。
|
取指周期4个时钟周期=4ns,执行周期6个时钟周期=6ns。
|
||||||
单条指令时间=4+6=10ns。
|
单条指令时间=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条指令,求吞吐率、加速比和效率。
|
**题目**:某CPU有4级流水线,执行100条指令,求吞吐率、加速比和效率。
|
||||||
|
|
||||||
@@ -285,9 +384,11 @@ CPU的五大功能:指令控制控制程序的顺序执行,像总经理按
|
|||||||
|
|
||||||
流水线阶段数k=4,指令数n=100。
|
流水线阶段数k=4,指令数n=100。
|
||||||
吞吐率TP=100/(4+99)=0.97条/周期。
|
吞吐率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%。
|
效率E=3.88/4=97%。
|
||||||
|
|
||||||
|
> 这是例题8.1的标准题型,各段时间相等的情况。考试中可能变为不等段时间,参见真题精选第1题。
|
||||||
|
|
||||||
### 例题4:流水线冲突分析
|
### 例题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:中断系统设计
|
### 例题5:中断系统设计
|
||||||
|
|
||||||
@@ -319,20 +420,26 @@ ADD指令产生R1的值,SUB指令需要R1的值。如果ADD指令还没执行
|
|||||||
## ⚡ 知识点速记卡
|
## ⚡ 知识点速记卡
|
||||||
|
|
||||||
> 考前快速过一遍,30秒回忆整章核心
|
> 考前快速过一遍,30秒回忆整章核心
|
||||||
|
>
|
||||||
|
> **考试题型分布**:选择/填空(CPU寄存器识别、周期关系)、计算(流水线性能)、分析(流水线冲突判断)
|
||||||
|
|
||||||
**CPU五大功能**:指令控制(顺序执行)、操作控制(发控制信号)、时间控制(时序)、数据加工(ALU运算)、中断处理。
|
**CPU五大功能**:指令控制(顺序执行)、操作控制(发控制信号)、时间控制(时序)、数据加工(ALU运算)、中断处理。
|
||||||
|
|
||||||
**CPU内部关键寄存器**:PC(下条指令地址)、IR(当前指令)、MAR(访存地址)、MDR(访存数据)、PSW(程序状态)、ACC(累加器)、通用寄存器组。
|
**CPU内部关键寄存器**:PC(下条指令地址)、IR(当前指令)、MAR(访存地址)、MDR(访存数据)、PSW(程序状态)、ACC(累加器)、通用寄存器组。考试常考:给出结构图让你标注各寄存器名称。
|
||||||
|
|
||||||
**指令周期四阶段**:取指周期(所有指令都有)→ 间址周期(间接寻址才有)→ 执行周期(都有)→ 中断周期(有中断才有)。
|
**指令周期层次关系**:指令周期(最大)> 机器周期 > 时钟周期(最小)。一个指令周期包含若干机器周期,一个机器周期包含若干时钟周期。这是选择题高频考点。
|
||||||
|
|
||||||
|
**取指数据通路**:PC → MAR → 主存 → MDR → IR,PC+1 → PC。读数据通路:X → MAR → 主存 → MDR → ALU → ACC。这两条通路务必熟记。
|
||||||
|
|
||||||
**流水线五阶段**:IF(取指)→ ID(译码)→ EX(执行)→ MEM(访存)→ WB(写回)。
|
**流水线五阶段**:IF(取指)→ ID(译码)→ EX(执行)→ MEM(访存)→ WB(写回)。
|
||||||
|
|
||||||
**流水线公式**:吞吐率 TP = n/(k+n-1),加速比 S = nk/(k+n-1)。n=100条、k=4级 → TP≈0.97,S≈3.88。
|
**流水线公式(等段时间)**:完成时间 T = k + (n-1)(以时钟周期数计),吞吐率 TP = n/(k+n-1),加速比 S = nk/(k+n-1)。n=100条、k=4级 → TP约等于0.97,S约等于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强化训练*
|
||||||
|
|||||||
@@ -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 控制单元的功能]]
|
- [[#9.2 控制单元的功能]]
|
||||||
- [[#本章小结]]
|
- [[#本章小结]]
|
||||||
- [[#例题与解析]]
|
- [[#例题与解析]]
|
||||||
|
- [[#真题与作业精选]]
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -41,7 +43,7 @@ graph LR
|
|||||||
|
|
||||||
### 9.1.3 取指周期的微操作
|
### 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,告诉主存"我要读这个地址的东西",主存把指令送到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 间址周期的微操作
|
### 9.1.4 间址周期的微操作
|
||||||
|
|
||||||
间址周期只在间接寻址时出现,目的是把形式地址转换成有效地址:
|
间址周期只在间接寻址时出现,目的是把形式地址转换成有效地址:
|
||||||
@@ -123,6 +127,8 @@ sequenceDiagram
|
|||||||
|
|
||||||
ADD X 是把内存地址X处的数取出来加到累加器;STA X 是把累加器的值存到内存地址X;LDA X 是把内存地址X处的数取到累加器。它们都需要先送地址、再读写内存、最后在CPU内部完成数据操作。
|
ADD X 是把内存地址X处的数取出来加到累加器;STA X 是把累加器的值存到内存地址X;LDA 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;否则继续执行下一条指令。
|
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 控制单元的功能
|
## 9.2 控制单元的功能
|
||||||
@@ -150,6 +170,9 @@ JMP X 就是无条件跳转到地址X,直接把X送到PC。BAN X 是条件转
|
|||||||
|
|
||||||
在取指周期,每个时钟周期发出一组控制信号,按固定顺序完成取指操作。在执行周期,根据指令类型的不同,CU会发出不同的控制信号组合——加法指令需要ALU做加法,存数指令需要向内存发写命令,转移指令需要修改PC的值。
|
在取指周期,每个时钟周期发出一组控制信号,按固定顺序完成取指操作。在执行周期,根据指令类型的不同,CU会发出不同的控制信号组合——加法指令需要ALU做加法,存数指令需要向内存发写命令,转移指令需要修改PC的值。
|
||||||
|
|
||||||
|
> [!warning] 考试范围提醒
|
||||||
|
> 9.2.3~9.2.5 不在考试范围内,以下仅做简要了解即可。
|
||||||
|
|
||||||
### 9.2.3 控制信号的组成
|
### 9.2.3 控制信号的组成
|
||||||
|
|
||||||
控制信号按控制对象可以分为四类:ALU控制信号决定ALU做什么运算(加法、减法、逻辑与、逻辑或等);寄存器控制信号控制寄存器的读写(哪些寄存器要读、哪些要写);数据通路控制信号控制数据在CPU内部的传输方向(比如从ALU输出送到哪个寄存器);总线控制信号控制总线的读写操作(读内存还是写内存)。
|
控制信号按控制对象可以分为四类: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,它和前面的译码操作可以并行。
|
这六步是所有指令共有的,顺序不能变——必须先送地址才能读内存,必须先读到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 的微操作序列。
|
**题目**:写出加法指令 ADD X 的微操作序列。
|
||||||
|
|
||||||
@@ -234,7 +257,7 @@ JMP X 就是无条件跳转到地址X,直接把X送到PC。BAN X 是条件转
|
|||||||
|
|
||||||
前三步和取数指令一样,都是把内存地址X处的操作数取到MDR。第四步是关键——把累加器里原来的值和MDR里的值送到ALU做加法,结果写回累加器。如果X是间接寻址的,还需要在前面加一个间址周期来获取有效地址。
|
前三步和取数指令一样,都是把内存地址X处的操作数取到MDR。第四步是关键——把累加器里原来的值和MDR里的值送到ALU做加法,结果写回累加器。如果X是间接寻址的,还需要在前面加一个间址周期来获取有效地址。
|
||||||
|
|
||||||
### 例题4:存数指令分析
|
### 例题4:存数指令分析(课后习题9.4~9.6同类型)
|
||||||
|
|
||||||
**题目**:写出存数指令 STA X 的微操作序列。
|
**题目**:写出存数指令 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再到内存。
|
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→PC(PC加1)
|
||||||
|
|
||||||
|
PC 加 1 可以与译码(第5步)并行执行。因为译码操作使用的是 IR 中的操作码字段,而 PC 加 1 操作使用的是 PC 寄存器本身,两者没有数据依赖关系,所以可以在同一个节拍内同时进行。这是考试中常问的一个细节,很多人会忽略。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## ⚡ 知识点速记卡
|
## ⚡ 知识点速记卡
|
||||||
|
|
||||||
> 考前快速过一遍,30秒回忆整章核心
|
> 考前快速过一遍,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)。目的:形式地址→有效地址。
|
**间址周期四步**:Ad(IR)→MAR → 1→R → M(MAR)→MDR → MDR→Ad(IR)。目的:形式地址→有效地址。
|
||||||
|
|
||||||
**访存指令执行周期**:ADD X(读+加)、STA X(写)、LDA X(读+送ACC)。先送地址,再读写内存,最后CPU内部操作。
|
**访存指令执行周期**:ADD X(读+加)、STA X(写:1→W, ACC→MDR→M(MAR))、LDA X(读:M(MAR)→MDR→ACC)。先送地址,再读写内存,最后CPU内部操作。STA和LDA的数据流方向和读写命令是考试常考的区分点。
|
||||||
|
|
||||||
**非访存指令**:CLA清零、COM取反、SHR右移、CSL循环左移、STP停机,不访存所以快。
|
**非访存指令**:CLA清零、COM取反、SHR右移、CSL循环左移、STP停机,不访存所以快。
|
||||||
|
|
||||||
**控制单元输入**:时钟、操作码(IR)、标志、外来信号(中断/总线请求)。**输出**:CPU内部控制信号 + 控制总线信号。
|
**控制单元输入**:时钟、操作码(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版 - 唐朔飞
|
- 教材:《计算机组成原理》第3版 - 唐朔飞
|
||||||
- 复习资料:计算机组成原理知识点总结
|
- 复习资料:计算机组成原理知识点总结
|
||||||
- 习题:作业三、作业四
|
- 习题:作业三、作业四、课后习题9.1~9.8、9.11、9.12
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*本章难度:⭐⭐⭐⭐ 中等*
|
*本章难度:⭐⭐⭐⭐ 中等*
|
||||||
*重要程度:⭐⭐⭐⭐ 重要*
|
*重要程度:⭐⭐⭐⭐ 重要*
|
||||||
*补充版本:增加了通俗解释、实际例子和例题*
|
*补充版本:增加了通俗解释、实际例子、例题、真题精选与考试技巧*
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
> 📖 本章介绍控制单元的两种设计方法:组合逻辑设计和微程序设计。
|
> 📖 本章介绍控制单元的两种设计方法:组合逻辑设计和微程序设计。
|
||||||
> 🎯 重点理解微程序设计方法
|
> 🎯 重点理解微程序设计方法
|
||||||
|
> ⚠️ 考试范围:不考10.1节;重点复习例题10.4和414页微程序设计举例;课后习题10.1、10.2必须掌握
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -11,11 +12,15 @@
|
|||||||
- [[#10.2 微程序设计]]
|
- [[#10.2 微程序设计]]
|
||||||
- [[#本章小结]]
|
- [[#本章小结]]
|
||||||
- [[#例题与解析]]
|
- [[#例题与解析]]
|
||||||
|
- [[#真题与作业精选]]
|
||||||
|
- [[#知识点速记卡]]
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 10.1 组合逻辑设计
|
## 10.1 组合逻辑设计
|
||||||
|
|
||||||
|
> 📝 虽然考试范围注明10.1节不考,但组合逻辑设计的基本思想和步骤仍是理解微程序设计的基础,建议了解。
|
||||||
|
|
||||||
### 10.1.1 组合逻辑控制单元框图
|
### 10.1.1 组合逻辑控制单元框图
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
@@ -34,6 +39,15 @@ graph TB
|
|||||||
|
|
||||||
这种设计方式的特点是速度快——信号通过逻辑门直接产生,不需要访问存储器。但缺点也很明显:电路复杂,修改困难,每增加一条指令可能都要重新设计电路。
|
这种设计方式的特点是速度快——信号通过逻辑门直接产生,不需要访问存储器。但缺点也很明显:电路复杂,修改困难,每增加一条指令可能都要重新设计电路。
|
||||||
|
|
||||||
|
#### 组合逻辑设计步骤
|
||||||
|
|
||||||
|
组合逻辑控制器的设计一般包括以下步骤:
|
||||||
|
|
||||||
|
1. **列出微操作时间表**:对每条指令,按节拍列出每个微操作。
|
||||||
|
2. **写出微操作的逻辑表达式**:用操作码译码输出、节拍信号、标志位等变量表示每个微操作。
|
||||||
|
3. **优化逻辑表达式**:用卡诺图或布尔代数化简。
|
||||||
|
4. **画出逻辑电路图**:用与、或、非门实现。
|
||||||
|
|
||||||
### 10.1.2 微操作的节拍安排
|
### 10.1.2 微操作的节拍安排
|
||||||
|
|
||||||
安排微操作的节拍时,需要遵循三个原则。
|
安排微操作的节拍时,需要遵循三个原则。
|
||||||
@@ -125,6 +139,8 @@ LDA X 和 ADD X 的前三步完全一样,区别在T₂:ADD 是做加法后
|
|||||||
|
|
||||||
## 10.2 微程序设计
|
## 10.2 微程序设计
|
||||||
|
|
||||||
|
> 🔥 **本节是考试核心**。微指令格式设计(字段位数计算)、微程序控制器工作原理、414页微程序设计举例均为高频考点。
|
||||||
|
|
||||||
### 10.2.1 微程序设计的基本概念
|
### 10.2.1 微程序设计的基本概念
|
||||||
|
|
||||||
> [!info] 定义
|
> [!info] 定义
|
||||||
@@ -136,17 +152,82 @@ LDA X 和 ADD X 的前三步完全一样,区别在T₂:ADD 是做加法后
|
|||||||
|
|
||||||
举个例子,执行一条加法指令,它的微程序可能包含三条微指令:第一条完成取指(PC→MAR、1→R等),第二条完成取操作数(Ad(IR)→MAR、M(MAR)→MDR),第三条完成加法运算((ACC)+(MDR)→ACC)。每条微指令里的控制信号可以并行发出。
|
举个例子,执行一条加法指令,它的微程序可能包含三条微指令:第一条完成取指(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)。
|
第四步是**实现控制存储器**:把微程序固化到ROM中。ROM的内容在制造时就确定了,不能修改(除非用可擦写的EPROM)。
|
||||||
|
|
||||||
### 10.2.4 微程序设计的优缺点
|
### 10.2.6 微程序设计的优缺点
|
||||||
|
|
||||||
微程序设计最大的优点是**规整性和灵活性**。用程序的方法设计控制单元,逻辑清晰、容易理解;需要增加新指令时,只需要在ROM中添加对应的微程序,不需要重新设计电路;调试和维护也方便,可以通过修改微程序来修复bug。
|
微程序设计最大的优点是**规整性和灵活性**。用程序的方法设计控制单元,逻辑清晰、容易理解;需要增加新指令时,只需要在ROM中添加对应的微程序,不需要重新设计电路;调试和维护也方便,可以通过修改微程序来修复bug。
|
||||||
|
|
||||||
@@ -177,6 +258,7 @@ LDA X 和 ADD X 的前三步完全一样,区别在T₂:ADD 是做加法后
|
|||||||
3. **微指令**:一组控制信号的集合
|
3. **微指令**:一组控制信号的集合
|
||||||
4. **微程序**:微指令的有序序列,一条机器指令对应一个微程序
|
4. **微程序**:微指令的有序序列,一条机器指令对应一个微程序
|
||||||
5. **控制存储器**:存放微程序的ROM
|
5. **控制存储器**:存放微程序的ROM
|
||||||
|
6. **硬布线vs微程序**:硬布线速度快但设计复杂难修改,适合RISC;微程序灵活规整易修改但速度较慢,适合CISC。现代CPU常混合使用
|
||||||
|
|
||||||
### 关键术语
|
### 关键术语
|
||||||
|
|
||||||
@@ -186,6 +268,9 @@ LDA X 和 ADD X 的前三步完全一样,区别在T₂:ADD 是做加法后
|
|||||||
| 微程序 | Microprogram | 用程序实现 |
|
| 微程序 | Microprogram | 用程序实现 |
|
||||||
| 微指令 | Microinstruction | 控制信号的集合 |
|
| 微指令 | Microinstruction | 控制信号的集合 |
|
||||||
| 控制存储器 | Control Storage | 存放微程序的ROM |
|
| 控制存储器 | Control Storage | 存放微程序的ROM |
|
||||||
|
| 直接控制法 | Direct Control | 每位对应一个微命令 |
|
||||||
|
| 字段直接编译法 | Field Direct Encoding | 编码方式,需译码 |
|
||||||
|
| 下址字段 | Next Address Field | 存放下一条微指令地址 |
|
||||||
|
|
||||||
### 重点图示
|
### 重点图示
|
||||||
|
|
||||||
@@ -248,7 +333,7 @@ ADD X 的执行周期需要三次访存操作中的两次(送地址、读数
|
|||||||
|
|
||||||
**答案**:
|
**答案**:
|
||||||
|
|
||||||
| 特性 | 组合逻辑设计 | 微程序设计 |
|
| 特性 | 组合逻辑设计(硬布线) | 微程序设计 |
|
||||||
|------|--------------|------------|
|
|------|--------------|------------|
|
||||||
| **设计方法** | 用逻辑电路直接实现 | 用程序(ROM)实现 |
|
| **设计方法** | 用逻辑电路直接实现 | 用程序(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秒回忆整章核心
|
> 考前快速过一遍,30秒回忆整章核心
|
||||||
|
> 🔥 标注了考试高频考点和常见题型
|
||||||
|
|
||||||
**两种CU设计方法**:组合逻辑(硬连线,快但难改)vs 微程序(ROM存控制信号,灵活但慢)。
|
**两种CU设计方法**:组合逻辑(硬布线,快但难改,适合RISC)vs 微程序(ROM存控制信号,灵活但慢,适合CISC)。现代CPU常混合使用。⭐ 对比题必考
|
||||||
|
|
||||||
**组合逻辑CU三部件**:操作码译码器(指令→控制信号)、节拍发生器(产生时序)、控制单元(综合输出)。
|
**组合逻辑CU三部件**:操作码译码器(指令→控制信号)、节拍发生器(产生时序)、控制单元(综合输出)。
|
||||||
|
|
||||||
|
**组合逻辑设计步骤**:列微操作时间表→写逻辑表达式→化简→画电路。
|
||||||
|
|
||||||
**节拍安排三原则**:顺序原则(先MAR后读内存)、并行原则(不同部件可同时工作)、紧凑原则(短操作放同一节拍)。
|
**节拍安排三原则**:顺序原则(先MAR后读内存)、并行原则(不同部件可同时工作)、紧凑原则(短操作放同一节拍)。
|
||||||
|
|
||||||
**取指周期三拍**:T₀=PC→MAR+1→R,T₁=M(MAR)→MDR+(PC)+1→PC,T₂=MDR→IR+OP(IR)→ID。
|
**取指周期三拍**:T₀=PC→MAR+1→R,T₁=M(MAR)→MDR+(PC)+1→PC,T₂=MDR→IR+OP(IR)→ID。⭐ 每次必考
|
||||||
|
|
||||||
**微程序核心三概念**:微指令(一组控制信号)、微程序(微指令序列,一条机器指令对应一个微程序)、控制存储器CS(存微程序的ROM)。
|
**微程序核心三概念**:微指令(一组控制信号)、微程序(微指令序列,一条机器指令对应一个微程序)、控制存储器CS(存微程序的ROM)。
|
||||||
|
|
||||||
|
**微指令三种编译法**:直接控制法(每位一个微命令,快但长)、字段直接编译法(编码,短但需译码)、字段间接编译法(字段间有依赖,更短但更慢)。⭐ 选择/简答常考
|
||||||
|
|
||||||
|
**后继地址两种方式**:计数器方式(自动递增,省空间)和下址字段法(直接给地址,灵活但占空间)。
|
||||||
|
|
||||||
|
**微指令格式位数计算**⭐⭐:下址字段=log₂(CM单元数),判别测试字段=log₂(转移条件数),微命令字段=总位数-前两者。例:512×48,4条件→9+2+37。这是最常见的计算题。
|
||||||
|
|
||||||
|
**微程序控制器原理**⭐⭐:开机→置取指地址→从CM取微指令→执行微操作→根据下址取下一条→循环直到指令完成→回到取指。
|
||||||
|
|
||||||
**水平型 vs 垂直型微指令**:水平型(位长,可并行多信号,快但占空间)vs 垂直型(位短,编码方式,省空间但慢)。
|
**水平型 vs 垂直型微指令**:水平型(位长,可并行多信号,快但占空间)vs 垂直型(位短,编码方式,省空间但慢)。
|
||||||
|
|
||||||
**微程序设计四步**:分析指令→设计微指令格式→编写微程序→固化到ROM。核心思想:用数据(ROM)代替逻辑(电路)。
|
**微程序设计四步**:分析指令→设计微指令格式→编写微程序→固化到ROM。核心思想:用数据(ROM)代替逻辑(电路)。⭐ 教材414页举例是重点
|
||||||
|
|
||||||
**选择策略**:追求速度→组合逻辑(RISC),追求灵活→微程序(CISC)。现代CPU常混合使用。
|
**选择策略**:追求速度→组合逻辑(RISC),追求灵活→微程序(CISC)。现代CPU常混合使用。⭐ 对比题必考
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -314,9 +529,10 @@ ADD X 的执行周期需要三次访存操作中的两次(送地址、读数
|
|||||||
- 教材:《计算机组成原理》第3版 - 唐朔飞
|
- 教材:《计算机组成原理》第3版 - 唐朔飞
|
||||||
- 复习资料:计算机组成原理知识点总结
|
- 复习资料:计算机组成原理知识点总结
|
||||||
- 习题:作业三、作业四
|
- 习题:作业三、作业四
|
||||||
|
- 真题来源:期中/期末考试、复习资料重点整理
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*本章难度:⭐⭐⭐⭐⭐ 困难*
|
*本章难度:⭐⭐⭐⭐⭐ 困难*
|
||||||
*重要程度:⭐⭐⭐⭐⭐ 重点*
|
*重要程度:⭐⭐⭐⭐⭐ 重点*
|
||||||
*补充版本:增加了通俗解释、实际例子和例题*
|
*补充版本:增加了通俗解释、实际例子、例题、真题与作业精选、考试重点标注*
|
||||||
|
|||||||
Reference in New Issue
Block a user