539 lines
27 KiB
Markdown
539 lines
27 KiB
Markdown
# 第10章 控制单元设计(详细补充版)
|
||
|
||
> 📖 本章介绍控制单元的两种设计方法:组合逻辑设计和微程序设计。
|
||
> 🎯 重点理解微程序设计方法
|
||
> ⚠️ 考试范围:不考10.1节;重点复习例题10.4和414页微程序设计举例;课后习题10.1、10.2必须掌握
|
||
|
||
---
|
||
|
||
## 📋 本章目录
|
||
|
||
- [[#10.1 组合逻辑设计]]
|
||
- [[#10.2 微程序设计]]
|
||
- [[#本章小结]]
|
||
- [[#例题与解析]]
|
||
- [[#真题与作业精选]]
|
||
- [[#知识点速记卡]]
|
||
|
||
---
|
||
|
||
## 10.1 组合逻辑设计
|
||
|
||
> 📝 虽然考试范围注明10.1节不考,但组合逻辑设计的基本思想和步骤仍是理解微程序设计的基础,建议了解。
|
||
|
||
### 10.1.1 组合逻辑控制单元框图
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph "组合逻辑控制单元"
|
||
IR[IR<br/>指令寄存器] --> |"操作码"| DEC[操作码译码器]
|
||
CLK[时钟] --> |"时钟信号"| TG[节拍发生器]
|
||
DEC --> |"译码输出"| CU[控制单元]
|
||
TG --> |"节拍信号"| CU
|
||
FLAG[标志] --> CU
|
||
CU --> |"控制信号"| CTRL[控制信号输出]
|
||
end
|
||
```
|
||
|
||
组合逻辑控制单元由三个核心部件组成。操作码译码器负责把指令的操作码翻译成具体的控制信号——比如加法指令的码进来,就输出"做加法"的信号。节拍发生器产生时序信号,控制微操作的先后顺序,就像节拍器控制乐队的节奏。控制单元则是核心,它综合译码结果、节拍信号和标志位,在正确的时刻发出正确的控制信号。
|
||
|
||
这种设计方式的特点是速度快——信号通过逻辑门直接产生,不需要访问存储器。但缺点也很明显:电路复杂,修改困难,每增加一条指令可能都要重新设计电路。
|
||
|
||
#### 组合逻辑设计步骤
|
||
|
||
组合逻辑控制器的设计一般包括以下步骤:
|
||
|
||
1. **列出微操作时间表**:对每条指令,按节拍列出每个微操作。
|
||
2. **写出微操作的逻辑表达式**:用操作码译码输出、节拍信号、标志位等变量表示每个微操作。
|
||
3. **优化逻辑表达式**:用卡诺图或布尔代数化简。
|
||
4. **画出逻辑电路图**:用与、或、非门实现。
|
||
|
||
### 10.1.2 微操作的节拍安排
|
||
|
||
安排微操作的节拍时,需要遵循三个原则。
|
||
|
||
**顺序原则**:有些微操作的次序不能改变。比如必须先送地址到MAR才能读内存,必须先读到MDR才能送到IR——这些顺序是硬件决定的,不能颠倒。
|
||
|
||
**并行原则**:不同控制对象的微操作可以同时执行。比如ALU做加法的同时,寄存器可以读数据——因为它们控制的是不同的硬件部件,互不干扰。
|
||
|
||
**紧凑原则**:时间短的微操作可以安排在同一节拍。比如PC送MAR和发读命令可以同时进行,因为它们的操作对象不同,而且都很快速。
|
||
|
||
#### 取指周期节拍安排
|
||
|
||
| 节拍 | 微操作 | 说明 |
|
||
|------|--------|------|
|
||
| T₀ | PC → MAR, 1 → R | 地址送MAR,发读命令 |
|
||
| T₁ | M(MAR) → MDR, (PC)+1 → PC | 读指令,PC加1 |
|
||
| T₂ | MDR → IR, OP(IR) → ID | 指令送IR,译码 |
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant T0 as 节拍T0
|
||
participant T1 as 节拍T1
|
||
participant T2 as 节拍T2
|
||
|
||
Note over T0: PC → MAR, 1 → R
|
||
Note over T1: M(MAR) → MDR, (PC)+1 → PC
|
||
Note over T2: MDR → IR, OP(IR) → ID
|
||
```
|
||
|
||
三个节拍就完成了取指。T₀节拍同时做两件事:送地址和发读命令,因为它们操作的对象不同(MAR和控制总线),可以并行。T₁节拍也是两件事并行:从内存读指令到MDR,同时PC加1——读内存是主存的操作,PC加1是CPU内部操作,互不影响。T₂节拍把指令从MDR搬到IR,同时操作码送到译码器。
|
||
|
||
#### 间址周期节拍安排
|
||
|
||
| 节拍 | 微操作 | 说明 |
|
||
|------|--------|------|
|
||
| T₀ | Ad(IR) → MAR, 1 → R | 形式地址送MAR |
|
||
| T₁ | M(MAR) → MDR | 读有效地址 |
|
||
| T₂ | MDR → Ad(IR) | 有效地址送IR |
|
||
|
||
间址周期和取指周期结构类似,但目的不同——这里是为了获取有效地址。T₀送形式地址并发读命令,T₁从内存读有效地址到MDR,T₂把有效地址写回指令的地址字段。这样后续执行周期就知道该去哪操作了。
|
||
|
||
#### 执行周期节拍安排
|
||
|
||
**非访存指令**不需要访问内存,所以很多只需要用到T₂节拍:
|
||
|
||
| 指令 | T₀ | T₁ | T₂ |
|
||
|------|----|----|-----|
|
||
| CLA | 空 | 空 | 0 → ACC |
|
||
| COM | 空 | 空 | $\overline{ACC}$ → ACC |
|
||
| SHR | 空 | 空 | L(ACC) → R(ACC) |
|
||
| CSL | 空 | 空 | R(ACC) → L(ACC) |
|
||
| STP | 空 | 空 | 0 → G |
|
||
|
||
这些指令都是CPU内部操作,不需要去内存取数据,所以T₀和T₁空闲,只在T₂执行一个操作。这也是为什么非访存指令通常比访存指令快。
|
||
|
||
**访存指令**需要访问内存,三个节拍都用满了:
|
||
|
||
**加法指令 ADD X**:
|
||
|
||
| 节拍 | 微操作 |
|
||
|------|--------|
|
||
| T₀ | Ad(IR) → MAR, 1 → R |
|
||
| T₁ | M(MAR) → MDR |
|
||
| T₂ | (ACC) + (MDR) → ACC |
|
||
|
||
T₀送地址并发读命令,T₁从内存读操作数到MDR,T₂把累加器的值和MDR的值送到ALU做加法,结果写回累加器。
|
||
|
||
**存数指令 STA X**:
|
||
|
||
| 节拍 | 微操作 |
|
||
|------|--------|
|
||
| T₀ | Ad(IR) → MAR, 1 → W |
|
||
| T₁ | ACC → MDR |
|
||
| T₂ | MDR → M(MAR) |
|
||
|
||
STA X 和 ADD X 的区别在于方向:ADD 是从内存读到CPU,STA 是从CPU写到内存。所以T₀发的是写命令(1→W),T₁把累加器的值送到MDR,T₂把MDR的内容写入内存。
|
||
|
||
**取数指令 LDA X**:
|
||
|
||
| 节拍 | 微操作 |
|
||
|------|--------|
|
||
| T₀ | Ad(IR) → MAR, 1 → R |
|
||
| T₁ | M(MAR) → MDR |
|
||
| T₂ | MDR → ACC |
|
||
|
||
LDA X 和 ADD X 的前三步完全一样,区别在T₂:ADD 是做加法后送回累加器,LDA 是直接把MDR的值送到累加器(累加器原来的值被覆盖)。
|
||
|
||
---
|
||
|
||
## 10.2 微程序设计
|
||
|
||
> 🔥 **本节是考试核心**。微指令格式设计(字段位数计算)、微程序控制器工作原理、414页微程序设计举例均为高频考点。
|
||
|
||
### 10.2.1 微程序设计的基本概念
|
||
|
||
> [!info] 定义
|
||
> 微程序设计是用程序的方法来设计控制单元,把控制信号编成微指令,存放在控制存储器中。
|
||
|
||
组合逻辑设计虽然速度快,但电路复杂、修改困难。微程序设计的思路完全不同——它把控制信号看成"数据",存到一个ROM(只读存储器)里,执行指令时从ROM中读取控制信号。这样设计控制单元就变成了编写"微程序",和写软件的思路类似。
|
||
|
||
三个核心概念:**微指令**是一组控制信号的集合,一条微指令可以同时激活多个控制信号;**微程序**是微指令的有序序列,一条机器指令对应一个微程序;**控制存储器**(CS)是存放微程序的ROM,通常在CPU内部。
|
||
|
||
举个例子,执行一条加法指令,它的微程序可能包含三条微指令:第一条完成取指(PC→MAR、1→R等),第二条完成取操作数(Ad(IR)→MAR、M(MAR)→MDR),第三条完成加法运算((ACC)+(MDR)→ACC)。每条微指令里的控制信号可以并行发出。
|
||
|
||
### 10.2.2 微程序控制器的工作原理
|
||
|
||
> 📌 这是复习资料中的原题,期中/期末考试高频出现。下面把工作原理完整梳理一遍。
|
||
|
||
微程序控制器的工作流程可以概括为:
|
||
|
||
1. **开机**:系统初始化,将取指微指令的地址送入微地址寄存器(CMAR)。
|
||
2. **取微指令**:根据CMAR中的地址,从控制存储器(CM)中取出当前微指令。
|
||
3. **执行微操作**:微指令的操作控制字段直接产生控制信号,驱动各部件完成微操作。
|
||
4. **确定下地址**:根据微指令的顺序控制字段(下址字段),决定下一条微指令的地址,送入CMAR。
|
||
5. **循环执行**:重复步骤2-4,直到该机器指令对应的微程序执行完毕。
|
||
6. **回到取指**:一条机器指令执行完毕后,自动回到取指微程序的入口地址,开始下一条指令的取指。
|
||
|
||
**核心要点**:每条机器指令对应一段微程序,取指微程序是所有指令共用的公共部分。整个CPU的工作就是不断地从CM中读取微指令、执行微操作、更新地址——本质上是一个"微程序级的取指-执行循环"。
|
||
|
||
### 10.2.3 微指令格式与编译方法
|
||
|
||
微指令由两部分组成:**操作控制字段**产生各种控制信号,**顺序控制字段**决定下一条微指令的地址。
|
||
|
||
> ⚠️ **微指令格式设计(字段位数计算)是考试高频题型**,特别是给定CM容量和转移条件,计算各字段位数。务必掌握下面的编译方法和计算思路。
|
||
|
||
根据操作控制字段的编码方式,微指令有三种编译法。
|
||
|
||
#### 直接控制法(不译码法)
|
||
|
||
操作控制字段的每一位直接对应一个微操作控制信号。某位为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页的微程序设计举例,这是本章最重要的例题。建议对照教材完整走一遍。
|
||
|
||
微程序设计可以分为四步。
|
||
|
||
第一步是**分析指令**:把每条机器指令分解成微操作序列,确定需要哪些控制信号。比如加法指令需要PC→MAR、1→R、M(MAR)→MDR、(ACC)+(MDR)→ACC这些控制信号。
|
||
|
||
第二步是**设计微指令格式**:确定操作控制字段和顺序控制字段的宽度和编码方式。操作控制字段要能表示所有需要的控制信号,顺序控制字段要能表示微程序的地址范围。
|
||
|
||
第三步是**编写微程序**:为每条机器指令编写对应的微程序。取指周期的微程序是所有指令共用的,执行周期的微程序因指令而异。
|
||
|
||
第四步是**实现控制存储器**:把微程序固化到ROM中。ROM的内容在制造时就确定了,不能修改(除非用可擦写的EPROM)。
|
||
|
||
### 10.2.6 微程序设计的优缺点
|
||
|
||
微程序设计最大的优点是**规整性和灵活性**。用程序的方法设计控制单元,逻辑清晰、容易理解;需要增加新指令时,只需要在ROM中添加对应的微程序,不需要重新设计电路;调试和维护也方便,可以通过修改微程序来修复bug。
|
||
|
||
缺点主要是**速度**。每条微指令都要从控制存储器读取,增加了访存时间,比组合逻辑直接产生信号要慢。另外需要额外的控制存储器,增加了硬件成本。
|
||
|
||
实际应用中,现代复杂CPU(如x86系列)通常采用微程序设计,因为指令集复杂、需要灵活扩展。而简单处理器(如一些嵌入式处理器)可能采用组合逻辑设计,追求更高的执行速度。
|
||
|
||
---
|
||
|
||
## 📝 本章小结
|
||
|
||
### 核心概念
|
||
|
||
1. **组合逻辑设计**:用组合逻辑电路直接产生控制信号,速度快但设计复杂
|
||
2. **微程序设计**:把控制信号存到ROM中,用读取ROM的方式产生控制信号,灵活但速度较慢
|
||
3. **微指令**:一组控制信号的集合
|
||
4. **微程序**:微指令的有序序列,一条机器指令对应一个微程序
|
||
5. **控制存储器**:存放微程序的ROM
|
||
6. **硬布线vs微程序**:硬布线速度快但设计复杂难修改,适合RISC;微程序灵活规整易修改但速度较慢,适合CISC。现代CPU常混合使用
|
||
|
||
### 关键术语
|
||
|
||
| 术语 | 英文 | 含义 |
|
||
|------|------|------|
|
||
| 组合逻辑 | Combinational Logic | 用逻辑电路实现 |
|
||
| 微程序 | Microprogram | 用程序实现 |
|
||
| 微指令 | Microinstruction | 控制信号的集合 |
|
||
| 控制存储器 | Control Storage | 存放微程序的ROM |
|
||
| 直接控制法 | Direct Control | 每位对应一个微命令 |
|
||
| 字段直接编译法 | Field Direct Encoding | 编码方式,需译码 |
|
||
| 下址字段 | Next Address Field | 存放下一条微指令地址 |
|
||
|
||
### 重点图示
|
||
|
||
> [!summary] 必须掌握的图
|
||
> 1. 组合逻辑控制单元框图
|
||
> 2. 微程序控制单元框图
|
||
> 3. 微指令格式图
|
||
> 4. 取指周期的节拍安排图
|
||
|
||
---
|
||
|
||
## 🧪 例题与解析
|
||
|
||
### 例题1:取指周期节拍安排
|
||
|
||
**题目**:写出取指周期的节拍安排。
|
||
|
||
**答案**:
|
||
|
||
| 节拍 | 微操作 | 说明 |
|
||
|------|--------|------|
|
||
| T₀ | PC → MAR, 1 → R | 地址送MAR,发读命令 |
|
||
| T₁ | M(MAR) → MDR, (PC)+1 → PC | 读指令,PC加1 |
|
||
| T₂ | MDR → IR, OP(IR) → ID | 指令送IR,译码 |
|
||
|
||
每个节拍都安排了两个可以并行的操作:T₀送地址和发读命令操作对象不同,可以同时进行;T₁读内存和PC加1一个是主存操作、一个是CPU内部操作,互不干扰;T₂送指令和译码也是类似道理。这样三个节拍就完成了取指,效率很高。
|
||
|
||
### 例题2:加法指令节拍安排
|
||
|
||
**题目**:写出加法指令 ADD X 的节拍安排。
|
||
|
||
**答案**:
|
||
|
||
| 节拍 | 微操作 |
|
||
|------|--------|
|
||
| T₀ | Ad(IR) → MAR, 1 → R |
|
||
| T₁ | M(MAR) → MDR |
|
||
| T₂ | (ACC) + (MDR) → ACC |
|
||
|
||
ADD X 的执行周期需要三次访存操作中的两次(送地址、读数据),然后做加法。T₀送地址并发读命令,T₁等待内存响应并把数据读到MDR,T₂把累加器的值和MDR的值送到ALU做加法,结果写回累加器。如果X是间接寻址的,还需要在前面加一个间址周期。
|
||
|
||
### 例题3:微程序设计步骤
|
||
|
||
**题目**:简述微程序设计的步骤。
|
||
|
||
**答案**:
|
||
|
||
微程序设计的步骤:
|
||
|
||
1. **分析指令**:把每条机器指令分解成微操作序列,确定需要哪些控制信号
|
||
2. **设计微指令格式**:确定操作控制字段和顺序控制字段的宽度和编码方式
|
||
3. **编写微程序**:为每条机器指令编写对应的微程序,取指周期的微程序是共用的
|
||
4. **实现控制存储器**:把微程序固化到ROM中
|
||
|
||
这四步的核心思想是"用数据代替逻辑"——把原本需要复杂电路实现的控制逻辑,变成存储在ROM中的数据,通过读取ROM来产生控制信号。这样设计更灵活,但代价是速度稍慢。
|
||
|
||
### 例题4:组合逻辑与微程序比较
|
||
|
||
**题目**:比较组合逻辑设计和微程序设计的优缺点。
|
||
|
||
**答案**:
|
||
|
||
| 特性 | 组合逻辑设计(硬布线) | 微程序设计 |
|
||
|------|--------------|------------|
|
||
| **设计方法** | 用逻辑电路直接实现 | 用程序(ROM)实现 |
|
||
| **优点** | 速度快 | 规整性好,灵活,易修改 |
|
||
| **缺点** | 设计复杂,不灵活,难修改 | 速度较慢,需要额外的ROM |
|
||
| **应用** | 简单CPU、RISC处理器 | 复杂CPU、CISC处理器 |
|
||
|
||
选择哪种方式取决于设计目标:追求极致速度就用组合逻辑,追求灵活性和可扩展性就用微程序。现代CPU往往混合使用——简单常用的指令用组合逻辑加速,复杂指令用微程序实现。
|
||
|
||
### 例题5:微指令格式设计
|
||
|
||
**题目**:设计一个简单的微指令格式,支持8种控制信号。
|
||
|
||
**答案**:
|
||
|
||
**操作控制字段**:8种控制信号,如果采用水平型编码(每位对应一个信号),需要8位。如果采用垂直型编码(用3位二进制编码选择8种信号之一),只需要3位,但一次只能激活一个信号。
|
||
|
||
**顺序控制字段**:需要支持顺序执行和跳转。假设微程序最多16条微指令,地址需要4位;再加1位跳转标志(是否跳转),共5位。
|
||
|
||
**水平型微指令格式**(16位):
|
||
- 操作控制字段:8位(每位控制一个信号,可同时激活多个)
|
||
- 顺序控制字段:4位地址 + 1位跳转标志 + 3位备用 = 8位
|
||
|
||
**垂直型微指令格式**(8位):
|
||
- 操作控制字段:3位(编码选择8种信号之一)
|
||
- 顺序控制字段:4位地址 + 1位跳转标志 = 5位
|
||
|
||
水平型微指令更灵活(一条指令可以同时控制多个操作),但占用更多空间;垂直型微指令更紧凑,但需要更多条微指令才能完成同样的功能。
|
||
|
||
---
|
||
|
||
## 📖 真题与作业精选
|
||
|
||
> 🔥 以下题目来自复习资料、期中/期末考试和课后习题,每道题都标注了来源和重要程度。考前务必全部过一遍。
|
||
|
||
### 真题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设计方法**:组合逻辑(硬布线,快但难改,适合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。⭐ 每次必考
|
||
|
||
**微程序核心三概念**:微指令(一组控制信号)、微程序(微指令序列,一条机器指令对应一个微程序)、控制存储器CS(存微程序的ROM)。
|
||
|
||
**微指令三种编译法**:直接控制法(每位一个微命令,快但长)、字段直接编译法(编码,短但需译码)、字段间接编译法(字段间有依赖,更短但更慢)。⭐ 选择/简答常考
|
||
|
||
**后继地址两种方式**:计数器方式(自动递增,省空间)和下址字段法(直接给地址,灵活但占空间)。
|
||
|
||
**微指令格式位数计算**⭐⭐:下址字段=log₂(CM单元数),判别测试字段=log₂(转移条件数),微命令字段=总位数-前两者。例:512×48,4条件→9+2+37。这是最常见的计算题。
|
||
|
||
**微程序控制器原理**⭐⭐:开机→置取指地址→从CM取微指令→执行微操作→根据下址取下一条→循环直到指令完成→回到取指。
|
||
|
||
**水平型 vs 垂直型微指令**:水平型(位长,可并行多信号,快但占空间)vs 垂直型(位短,编码方式,省空间但慢)。
|
||
|
||
**微程序设计四步**:分析指令→设计微指令格式→编写微程序→固化到ROM。核心思想:用数据(ROM)代替逻辑(电路)。⭐ 教材414页举例是重点
|
||
|
||
**选择策略**:追求速度→组合逻辑(RISC),追求灵活→微程序(CISC)。现代CPU常混合使用。⭐ 对比题必考
|
||
|
||
---
|
||
|
||
## 🔗 相关链接
|
||
|
||
- [[00_计算机组成原理学习指南]] - 返回主目录
|
||
- [[09_控制单元功能]] - 上一章
|
||
- [[01_计算机系统概论]] - 返回第一章
|
||
|
||
---
|
||
|
||
## 📚 参考资料
|
||
|
||
- 教材:《计算机组成原理》第3版 - 唐朔飞
|
||
- 复习资料:计算机组成原理知识点总结
|
||
- 习题:作业三、作业四
|
||
- 真题来源:期中/期末考试、复习资料重点整理
|
||
|
||
---
|
||
|
||
*本章难度:⭐⭐⭐⭐⭐ 困难*
|
||
*重要程度:⭐⭐⭐⭐⭐ 重点*
|
||
*补充版本:增加了通俗解释、实际例子、例题、真题与作业精选、考试重点标注*
|