解释减少计算机体系结构中微指令数量的方法?
本节介绍两种利用这种冗余来减少控制单元所需微指令数量的方法。第一种方法是使用微子程序将重复的微操作组合成一个微指令块,供两个或多个执行例程访问。另一种方法是使用微码跳转来访问由两个或多个例程共享的微指令。
微子程序
正如高级语言代码和汇编语言代码使用子程序一样,微序列器也可以使用微子程序。与高级代码一样,微序列器使用微子程序来执行在微码中多个例程中执行的操作序列。必须增强微序列器硬件以实现微子程序的调用和返回。
状态 LDAC1、LDAC2 和 LDAC3 分别执行与状态 STAC1、STAC2 和 STAC3 相同的微操作。在每种情况下,这三个状态都会从内存中获取一个 16 位地址并将其加载到 AR 中。
虽然微子程序直接在 FETCH3 之后发生,但由于 FETCH3 必须映射到正确的执行例程,因此无法从该状态调用它。微序列器无法生成正确的返回地址。为了解决这个问题,它可以创建虚拟状态 LDAC0 和 STAC0。当 LDAC 或 STAC 指令被解码时,FETCH3 会映射到其中一个状态。这些状态不执行任何微操作并调用微子程序。
微子程序返回到下一个包含 LDAC4 或 STAC4 的位置。新的状态分配显示在表中。 SUB1、SUB2 和 SUB3 分别执行与 LDAC1 (STAC1)、LDAC2 (STAC2) 和 LDAC3 (STAC3) 相同的微操作。
修改了简单 CPU 的状态分配
| 状态 | 位置 |
|---|---|
| LDAC0 | 4 |
| LDAC4 | 5 |
| LDAC5 | 6 |
| STAC0 | 8 |
| STAC4 | 9 |
| STAC5 | 10 |
| SUB1 | 61 |
| SUB2 | 62 |
| SUB3 | 63 |
调用微子程序时,程序的地址由微码存储器的 ADDR 输出。微序列器必须存储返回地址,以便在子程序终止后继续运行。如果地址 X 处的微指令调用微子程序,则该程序必须返回到地址 X + 1。
微码跳转
条件跳转指令和无条件跳转指令具有多个执行相同微操作的状态。这是可以预料的,因为如果要执行跳转, 其处理方式相同。可以通过创建微子程序来消除这种冗余。它可以修改状态图,使这些指令直接访问相同的状态。一组状态将执行跳转,另一组状态将处理未执行的条件跳转。例程将分支到正确的状态。
JUMP1、JUMP2 和 JUMP3 与 JMPZY1、JMPZY2 和 JMPZY3 以及 JPNZY1、JPNZY2 和 JPNZY3 相同,除 JUMP 状态外,所有状态均被消除。

