一是提供控制信号的方式变了,不再是通过"与--或"两级组合逻辑门电路实现,而改由读控制存储器中的微指令完成。

  二是处理指令执行步骤之间的衔接关系的方式变了,不再是通过变化节拍发生器的节拍状态实现,而改由通过修改或提供要用到的下一条微指令在控存中的地址来完成。

  这两点变化带来了两种控制器在运行速度方面的差异。在组合逻辑控制器中,变化节拍发生器的节拍状态,是利用一个主振脉冲结束时的正跳变沿,在瞬间完成的,不需要额外的时间开销,还很容易用本节拍操作的状态信息(例如算术运算的结果为0)转移到不同的下一个节拍去;微程序的控制器则不然,任何一条微指令的执行过程,都必须经过到控存中读取微指令和执行微指令这样两个阶段,而读控存是一个相对较慢的操作过程。因此,怎样处理好读取微指令和执行微指令这两段时间的关系,就成为解决微程序控制器运行速度的重要问题。通常的办法,是把这两段时间尽可能地重叠起来,也就是在执行本条微指令的期间,同时形成下一条微指令的地址,并用该地址到控制存储器中读出下一条微指令的内容,如图3.14所示。



  矛盾跟着也就出现了,就是正在使用的本条微指令和将要使用的下条微指令在一段时间内是同时存在的,有冲突。解决的办法,是设置一个微指令寄存器,保存当前的微指令的内容,其输出信号送到各被控制的功能部件,而读出下一条微指令的内容被送到微指令寄存器的数据输入端,在对应一条微指令执行过程(一个微周期)的主振脉冲的正跳变沿到来时,再把下一条微指令内容接收到微指令寄存器中去,则瞬间实现了结束当前"微指令"执行和开始下一条微指令的执行过程。这样做又势必要求在执行本条微指令的开始阶段,就形成下一条微指令地址,以使留下足够的时间完成读控存,否则会出现仅仅完成读控存功能、计算机其他功能部件都处于空闲状态的一条微指令,影响计算机的运行效率。因此,是不可能用本条微指令执行的状态结果(仅在本条微指令快结束时才能得到)给出下条微指令地址,故通常总是使用前一条微指令执行的状态结果,或采用特殊的处理办法(如猜测法)来避免使用、或减少遇到这种近乎空操作的微指令。