diff --git a/计算机组成原理/学习笔记/01_计算机系统概论_补充版.md b/计算机组成原理/学习笔记/01_计算机系统概论_补充版.md index d5fa028..f9ff827 100644 --- a/计算机组成原理/学习笔记/01_计算机系统概论_补充版.md +++ b/计算机组成原理/学习笔记/01_计算机系统概论_补充版.md @@ -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 组成**:体系结构是程序员看到的属性(指令集、数据类型),组成是硬件实现方式(电路细节)。体系结构相同不代表组成相同。 + --- ## 🔗 相关链接 diff --git a/计算机组成原理/学习笔记/03_系统总线_补充版.md b/计算机组成原理/学习笔记/03_系统总线_补充版.md index 7e6a8a5..4682c83 100644 --- a/计算机组成原理/学习笔记/03_系统总线_补充版.md +++ b/计算机组成原理/学习笔记/03_系统总线_补充版.md @@ -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,最后过一遍上方的真题与作业精选。 + --- ## 🔗 相关链接 diff --git a/计算机组成原理/学习笔记/04_存储器_补充版.md b/计算机组成原理/学习笔记/04_存储器_补充版.md index f3cd014..6d14fc8 100644 --- a/计算机组成原理/学习笔记/04_存储器_补充版.md +++ b/计算机组成原理/学习笔记/04_存储器_补充版.md @@ -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,13 +373,23 @@ graph TB #### 海明码(Hamming Code) +> [!tip] 考试高频考点 +> 海明码的检错纠错计算是作业和考试的经典题型,几乎每年都会考。必须掌握校验位计算、校验位位置安排、错误定位和纠正方法。具体例题见下方真题精选第3题。 + **原理**:在数据位中插入多个校验位,通过校验位的组合定位错误位。 **校验位数r满足**:$2^r \geq m + r + 1$(m为数据位数) **特点**:可以检测并纠正1位错误,可以检测2位错误。 -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. 纠正:翻转错误位即可 --- @@ -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)。 + +### 真题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。 @@ -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+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刷新* diff --git a/计算机组成原理/学习笔记/05_输入输出系统_补充版.md b/计算机组成原理/学习笔记/05_输入输出系统_补充版.md index 7bc7428..d65d21f 100644 --- a/计算机组成原理/学习笔记/05_输入输出系统_补充版.md +++ b/计算机组成原理/学习笔记/05_输入输出系统_补充版.md @@ -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,开放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:中断处理过程 @@ -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只管开头和结尾)。 @@ -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* diff --git a/计算机组成原理/学习笔记/06_运算方法_补充版.md b/计算机组成原理/学习笔记/06_运算方法_补充版.md index 517002d..40bbe29 100644 --- a/计算机组成原理/学习笔记/06_运算方法_补充版.md +++ b/计算机组成原理/学习笔记/06_运算方法_补充版.md @@ -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位变成10100(10→20)。 -### 6.4.2 加减运算 - -**补码加减运算**:加法直接相加,减法减数变补码后相加 - -**溢出判断**:正溢出两个正数相加结果为负,负溢出两个负数相加结果为正 - -补码加减运算像时钟运算: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。 +**逻辑移位**:左移高位移出低位补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 = -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:补码计算 @@ -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几乎必考* diff --git a/计算机组成原理/学习笔记/07_指令系统_补充版.md b/计算机组成原理/学习笔记/07_指令系统_补充版.md index 70d43d1..abccacf 100644 --- a/计算机组成原理/学习笔记/07_指令系统_补充版.md +++ b/计算机组成原理/学习笔记/07_指令系统_补充版.md @@ -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)=0004H,PC=0003H。 +> - 变址寻址:EA = A + (IX) = A + 0004H,A不变,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处理器(嵌入式)是RISC;x86处理器(个人电脑)是CISC。 +> 记忆口诀:RISC——少而精、快而简、硬布线、流水线;CISC——多而全、慢而杂、微程序、编译简。 + ### 7.5.2 RISC特点 **主要特点**: @@ -217,6 +245,7 @@ ARM处理器(手机)、MIPS处理器(嵌入式)是RISC;x86处理器( | 操作码 | 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)=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秒回忆整章核心 **指令 = 操作码 + 地址码**。操作码指明做什么,地址码指明操作数在哪。 -**地址码个数**:四地址(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)。 **指令格式设计**:规整性(长度对齐)、高效性(常用指令短)、兼容性(向后兼容)、扩展性(留余地)。 +> **本章常见考题类型**: +> 1. 寻址方式识别与有效地址计算(必考) +> 2. 扩展操作码设计(期中考过原题) +> 3. 访存次数分析(注意直接/间接寻址的区别) +> 4. CISC vs RISC对比(简答题高频考点) +> 5. 指令格式分析与设计 + --- ## 🔗 相关链接 @@ -321,3 +429,4 @@ RISC像精简工具,工具少简单速度快,容易使用效率高但功能 *本章难度:⭐⭐⭐⭐ 中等* *重要程度:⭐⭐⭐⭐ 重要* +*考试占比:期中/期末约10~15分,以寻址方式和扩展操作码设计为主* diff --git a/计算机组成原理/学习笔记/08_CPU结构与功能_补充版.md b/计算机组成原理/学习笔记/08_CPU结构与功能_补充版.md index 45a86d0..f7c55f9 100644 --- a/计算机组成原理/学习笔记/08_CPU结构与功能_补充版.md +++ b/计算机组成原理/学习笔记/08_CPU结构与功能_补充版.md @@ -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. 最后看结构依赖:是否同时访问同一硬件资源 + +### 真题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功能分析 @@ -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=10⁹Hz,时钟周期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 → IR,PC+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级 → 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强化训练* diff --git a/计算机组成原理/学习笔记/09_控制单元功能_补充版.md b/计算机组成原理/学习笔记/09_控制单元功能_补充版.md index 78720d7..4171a01 100644 --- a/计算机组成原理/学习笔记/09_控制单元功能_补充版.md +++ b/计算机组成原理/学习笔记/09_控制单元功能_补充版.md @@ -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 是把累加器的值存到内存地址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;否则继续执行下一条指令。 +### 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→PC(PC加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 X(写:1→W, ACC→MDR→M(MAR))、LDA X(读:M(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 --- *本章难度:⭐⭐⭐⭐ 中等* *重要程度:⭐⭐⭐⭐ 重要* -*补充版本:增加了通俗解释、实际例子和例题* \ No newline at end of file +*补充版本:增加了通俗解释、实际例子、例题、真题精选与考试技巧* diff --git a/计算机组成原理/学习笔记/10_控制单元设计_补充版.md b/计算机组成原理/学习笔记/10_控制单元设计_补充版.md index 206d3e2..c71def2 100644 --- a/计算机组成原理/学习笔记/10_控制单元设计_补充版.md +++ b/计算机组成原理/学习笔记/10_控制单元设计_补充版.md @@ -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设计方法**:组合逻辑(硬布线,快但难改,适合RISC)vs 微程序(ROM存控制信号,灵活但慢,适合CISC)。现代CPU常混合使用。⭐ 对比题必考 **组合逻辑CU三部件**:操作码译码器(指令→控制信号)、节拍发生器(产生时序)、控制单元(综合输出)。 +**组合逻辑设计步骤**:列微操作时间表→写逻辑表达式→化简→画电路。 + **节拍安排三原则**:顺序原则(先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)。 +**微指令三种编译法**:直接控制法(每位一个微命令,快但长)、字段直接编译法(编码,短但需译码)、字段间接编译法(字段间有依赖,更短但更慢)。⭐ 选择/简答常考 + +**后继地址两种方式**:计数器方式(自动递增,省空间)和下址字段法(直接给地址,灵活但占空间)。 + +**微指令格式位数计算**⭐⭐:下址字段=log₂(CM单元数),判别测试字段=log₂(转移条件数),微命令字段=总位数-前两者。例:512×48,4条件→9+2+37。这是最常见的计算题。 + +**微程序控制器原理**⭐⭐:开机→置取指地址→从CM取微指令→执行微操作→根据下址取下一条→循环直到指令完成→回到取指。 + **水平型 vs 垂直型微指令**:水平型(位长,可并行多信号,快但占空间)vs 垂直型(位短,编码方式,省空间但慢)。 -**微程序设计四步**:分析指令→设计微指令格式→编写微程序→固化到ROM。核心思想:用数据(ROM)代替逻辑(电路)。 +**微程序设计四步**:分析指令→设计微指令格式→编写微程序→固化到ROM。核心思想:用数据(ROM)代替逻辑(电路)。⭐ 教材414页举例是重点 -**选择策略**:追求速度→组合逻辑(RISC),追求灵活→微程序(CISC)。现代CPU常混合使用。 +**选择策略**:追求速度→组合逻辑(RISC),追求灵活→微程序(CISC)。现代CPU常混合使用。⭐ 对比题必考 --- @@ -314,9 +529,10 @@ ADD X 的执行周期需要三次访存操作中的两次(送地址、读数 - 教材:《计算机组成原理》第3版 - 唐朔飞 - 复习资料:计算机组成原理知识点总结 - 习题:作业三、作业四 +- 真题来源:期中/期末考试、复习资料重点整理 --- *本章难度:⭐⭐⭐⭐⭐ 困难* *重要程度:⭐⭐⭐⭐⭐ 重点* -*补充版本:增加了通俗解释、实际例子和例题* \ No newline at end of file +*补充版本:增加了通俗解释、实际例子、例题、真题与作业精选、考试重点标注*