计算机微程序设计与控制机制详解
立即解锁
发布时间: 2025-08-20 02:12:43 阅读量: 1 订阅数: 4 


计算机架构:软件、编码与硬件的综合探讨
# 计算机微程序设计与控制机制详解
## 1. 内存周期与微指令
内存周期通过连续执行几条微指令来启动。首先,将地址置于内存总线上,并设置读写位以启动周期。以读周期为例,经过一段时间延迟后,另一条微指令将数据总线的内容读入临时寄存器。
在总线控制字段旁边,有两个特殊位:
- **T(翻译)位**:检查是否存在待处理的中断请求。若存在,控制权将传递到控制存储器中的固定地址,以激活中断机制。在有中断待处理的情况下,该位可使引擎立即中止繁琐的微指令序列。
- **LRR(加载返回寄存器)位**:允许从返回寄存器加载到 μPC。当子程序的最后一条微指令设置了 LRR 位时,控制权将返回到调用后的下一条微指令。
低 16 位代表一个微操作,其前端有一个微操作码(μOP),分为四组:
- **无条件跳转操作**:有一个 5 位的 μOP,后面跟着一个 11 位的 ROM 地址。
- **条件跳转操作**:有一个 4 位的 μOP,后面跟着一个 4 位的 CC(条件码)和一个 8 位的微代码地址。
- **文字微操作**:有一个 4 位的 μOP,后面跟着一个一字节的文字和一个 4 位的寄存器地址。
- **寄存器到寄存器操作**:每个操作有一个 8 位的 μOP,后面跟着两个 4 位的寄存器地址,reg A 和 reg B。
## 2. 微代码引擎概述
微代码引擎具有硬连线逻辑,以支持 ROM 中解释器的执行,即 ROM 中的微代码驱动引擎。解释器用微汇编语言编写,微汇编器必须执行才能将每条语句转换为位串。设计微汇编器有两种方法:
- **低级方法**:直接按照语句中明确指定的方式设置所有位。
- **高级方法**:使语句看起来像寄存器传输语言,微汇编器能够将类似英语的语法转换为位串。
微代码解释器在两个条件下编写:
- 有一个指令管道,因此指令流的提取是自动的。
- 没有操作数管道,因此目标指令的执行是顺序的,即引擎不支持并行操作数执行。
### 2.1 加法器内部结构
加法器有三个内部总线:输入 A、输入 B 和输出 C。该引擎是为两地址目标指令设计的,加法器输入 A 用于源操作数 1(sopd1),输入 B 用于源操作数 2(sopd2),加法器输出 C 路由到目标,即 sopd1。
### 2.2 微指令格式
103 位微指令的格式包含六个字段:地址、序列控制、加法器控制、输入控制 A、输入控制 B、总线和通用控制。从最右侧开始,位编号从 0 到 102。
## 3. 地址和序列控制
### 3.1 地址字段(Addr <11:0>)
最右侧的 12 位字段包含大小为 4KW 的 ROM 中的微代码地址。
### 3.2 序列控制字段(SC <18:12>)
7 位字段用于序列控制,决定从何处提取下一条微指令。其中,b12 是 opc(操作码控制):
- 如果 opc 被设置,Addr 中的高 4 位与 IR 中的操作码连接后路由到 μPC。
- 如果 opc 为 0,b13(BF,假分支)或 b14(BT,真分支)必须根据条件设置,用于序列控制。通常,在检索当前微指令后,μPC 会加 1,如果没有变化,则提取 ROM 中的下一条微指令。
### 3.3 条件分支
序列控制有四种方式:
1. 如果 b12 被设置,Addr 中的高 4 位字段和 IR 中的 8 位操作码字节连接并复制到 μPC 以按操作码分支。
2. 如果指定条件为真,将 12 位的 Addr 从 μIR 复制到 μPC 以分支。
3. 指定条件始终为真,即无条件分支。
4. 指定条件始终为假,即无条件不分支。
当 opc 为 0 时,6 位 <18:13> 条件指定器决定是否分支。四个条件使能位 <18:15> 分别是 SE(符号使能)、OE(溢出使能)、ZE(零使能)和 CE(进位使能),后面跟着 BT 和 BF。每个使能位选择状态寄存器(SR)中的条件标志作为输入,逻辑示意图如下:
```mermaid
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
SE([SE]):::process --> S[/S/]:::process
OE([OE]):::process --> O[/O/]:::process
ZE([ZE]):::process --> Z[/Z/]:::process
CE([CE]):::process --> C[/C/]:::process
S --> EOR[/EOR/]:::process
O --> EOR
EOR --> OR[/OR/]:::process
Z --> OR
C --> OR
BT([BT]):::process --> AND1[/AND/]:::process
OR --> AND1
BF([BF]):::process --> AND2[/AND/]:::process
NOTOR(¬):::process --> AND2
OR --> NOTOR
AND1 --> RESULT[/结果/]:::process
AND2 --> RESULT
```
条件方程为:
\[
condition = BT \times (((S \times SE) \oplus (O \times OE)) + Z \times ZE + C \times CE) + BF \times \neg (((S \times SE) \oplus (O \times OE)) + Z \times ZE + C \times CE)
\]
### 3.4 无条件分支与不分支
- **无条件分支**:将 SE、OE、ZE、CE 和 BT 清为 0,将
0
0
复制全文
相关推荐









