解释计算机体系结构中减少微指令数量的方法?
在本节中,有两种方法可以利用这种冗余来减少控制单元所需的微指令数量。第一种方法使用微子程序将重复的微操作组合成一个微指令块,由两个或多个执行程序访问。另一种方法使用微码跳转来访问两个或多个例程共享的微指令。
微子程序
正如高级和汇编语言代码使用子程序一样,微定序器也可以使用微子程序。与高级代码一样,微序列器使用微子例程来处理在一个微代码中的多个例程中执行的动作序列。微定序器硬件必须增强以实现微子程序调用和返回。
状态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的状态分配
当调用微子程序时,程序的地址由微代码存储器的ADDR输出提供。微定序器必须存储返回地址,以便子程序终止后它可以继续。如果地址X处的微指令调用微子程序,则该程序必须返回地址X+1。
微码跳转
条件跳转指令和无条件跳转指令有几种状态,执行相同的微操作。这是可以预料的,因为如果要进行跳转,则以相同的方式进行处理。这种冗余可以通过创建一个微子程序来消除。它可以修改状态图,以便这些指令直接访问相同的状态。一组状态将执行跳转,另一组将处理未采用的条件跳转。例程将分支到正确的状态。
JUMP1、JUMP2和JUMP3与JMPZY1、JMPZY2和JMPZY3相同,也与JPNZY1、JPNZY2和JPNZY3相同,但JUMP状态除外。