决定下条微指令地址(简称下地址)的因素较多,处理办法各不相同,可能包括:
① 微程序顺序执行时,下地址为本条微指令地址加1;
② 在微程序必定转向某一微地址时,可以在微指令字中的相关字段中给出该地址值;
③ 按微指令(上一条或本条)的某一执行结果的状态,选择顺序执行或转向某一地址,此时必须在微指令字中指明需判断的执行结果及转移地址。
要判断的执行结果,可以是运算器的标志位状态,控制器的执行状态,如多次的微指令循环是否结束,外设是否请求中断等等。
④ 微子程序的调用及返回控制,会用到微堆栈;
⑤ 依条件判断转向多条微指令地址中的某一地址的控制,它可以是前述第③条的更复杂一点的用法,也包括依据取来的机器指令的操作码,找到对应该条指令的执行过程的一段微程序的入口地址。这后一种情况,通常被称为微程序控制中的功能分支转移。此时在微指令字中直接给出多个下地址是不现实的或不合理的,应找出更合理的解决方案。
从上述讨论中可以看出,要得到下一条微指令的地址,至少得从两个方面入手:
一是要在微指令字中,分配相应的几个字段,用于给出微指令转移地址(完整的一个地址,或部分的多个地址),以及是顺序执行,或无条件转移,或条件转移及其判断条件,是否是功能转移,
是否是微子程序调用或返回等等。
二是应有相应的专门硬件支持,用于实现微指令地址加1,按判断条件给出判定结果为真还是为假,给出微堆栈组织并实现入栈/出栈管理,解决指令操作码与各自的微程序段入口地址的对应关系以完成微程序中的功能分支转移等等。
由于不同的计算机所用的微程序设计技术不尽相同,故上述两个方面内容的处理与实现方法也会有明显差异,请有兴趣者参阅有关资料。我们只介绍在教学计算机系统中用到的有关硬件与具体微程序设计的知识。
|
|