微程序控制的基本思路是通过 微指令来产生微操作命令,并由若干条微指令组成的微程序来执行一条机器指令的功能。具体控制过程如下:
微指令的编制
若干微命令编制成一条微指令,控制实现一步操作。
若干微指令组成一段微程序,解释执行一条机器指令。
微程序的控制存储
微程序事先存放在控制存储器中,执行机器指令时再取出。
控制存储器用来存放各机器指令对应的微程序,译码器用来形成机器指令对应的微程序的入口地址。
微指令的执行
当将一条机器指令对应的微程序的各条微指令逐条取出,并送到微指令寄存器时,其微操作命令也就按事先的设计发出,因而也就完成了一条机器指令的功能。
微指令的宽度直接决定了微程序控制器的宽度,为了简化控制存储器,可采取一些措施来缩短微指令的宽度,如采用字段译码法一级分段译码。
微程序的控制字段
微指令的控制字段将大大缩短,一些要同时产生的微操作命令不能安排在同一个字段中。
为了进一步缩短控制字段,还可以将字段译码设计成两级或多级。
微程序的执行流程
根据IR(指令寄存器)中的操作码,找到与之对应的控存中的一段微程序的入口地址。
按指令功能所确定的次序,逐条从控制存储器中读出微指令,以驱动计算机各部件正确运行。
要保证微指令的逐条执行,就必须在本条微指令的执行过程中,能得到下一条微指令的地址。形成下条微指令地址可能有下列五种情况:
下地址为本条微指令地址加1。
微程序必转某一微地址,可在微指令中给出该微地址值。
根据状态标志位,选择顺序执行或转向某一地址。
微子程序的调用及返回控制,要用到微堆栈。
根据条件判断转向多条微指令地址中的某一地址,比第三种情况更复杂的情况。
通过上述步骤,微程序控制器能够逐条执行微指令,从而实现对机器指令的精确控制。这种控制方法具有规整性好、灵活方便、通用性强等优点,因此在计算机和其他复杂数字系统控制器的设计中得到了广泛应用。