关于手工拨入微指令的操作过程,我们已在第三章说明过了。实现中要解决的三个问题是:

 ·控存读写在时间上的予盾,即执行每一条微指令的过程,也正是读取下一条微指令的过程,把二者的执行过程从时间上重迭起来,以提高执行微指令的速度,增加计算机处理性能,这就是流水线技术的概念。为此,必须设置微指令寄存器,使读出的下一条微指令的内容送到该寄存器的输入端,等待CP脉冲的到来,以完成打入操作; 而该寄存器的输出正是本条微指令的内容,正在控制计算机各部件完成本步骤的操作功能。如果此时还要向控存写入微指令,与上述读操作是矛盾的。解决办法不外如下两种:

  在执行一条微指令的期间(微周期),分前后两段时间,分别完成控存的写、读操作,这使每条微指令的最短执行时间,至少要等于两个控存访问周期。

  或设置一个不读控存的微指令周期,专门用于控存写操作。在此周期内,封锁有关的几处的CP脉冲,并由少量专门的电路提供控存写入操作要用到的控制信号。看来,在教学计算机中选用这后一种方案更合理些,但我们还是用了前一种方案,详述从略。

 ·获得控存写入操作的地址
  在手工拨入微指令前,要用水平板上的16位开关的低10位拨入控存地址。此时,是把开关拨好的地址值经选通门送到教学机的内部总线,再送入程序计数器PC中和地址寄存器AR中,至此就把控存地址送到了地址总线,并作为控存的地址来源之一。以后每写入一条微指令,使PC加1送PC和AR,作为写入下一条微指令的控存地址,支持连续写入操作。

 ·提供控存写入操作的数据(微指令内容)
  在手工拨入微指令的过程中,微指令是56位字长,而拨数开关只有16位。为此,需分4次拨入。为了尽量少影响控存的读操作,在教学机中设置了一个56位的控存写入寄存器LDR,分成4个16位的段(最高位的段只有8位),各段依次接收16位数据开关拨入的16位微码,待4次拨入完成后,集中一次56位同时写入控存。具体实现方案是:

  16位开关所拨内容经选通门送到内部总线IB,16位的IB接到了四段LDR的输入端。

  控存写入寄存器LDR由7片8D寄存器器件实现,每两片组成一段(最高段仅用1片),分别用不同的打入时钟信号控制打入操作。LDR的56位输出直接送到控存的数据入出端,用W/R读写信号控制写入(W/R为低是写)操作。

  图3.16 是实现控存写入的有关逻辑电路示意图。


图3.16 实现控存写入的逻辑线路

  在通过LDMC指令向控存写入微指令时,用到了LDMC指令的三个默认参数,即微码在内存区的首地址,要写入的微指令的条数,要写的微指令在控存中的首地址,它们分别放在通用寄存器R1,R2和R3中。这条指令执行时,存在与手工拨入微指令同样的三个问题,即用R1内容作地址,依次4次读内存内容到内部总线,并依次写进LDR的四段,拼出一条待写入的微指令字; 然后用R3的内容作控存地址(用R3内容送地址寄存器实现),并且一次完成控存写入操作。用到的电路与图3.6类似,只是变开关内容送IB为内存读出内容送IB,变PC内容送AR为R3内容送AR,变手工按单步按键操作为计算机执行指令,请参见逻辑图有关部分与LDMC指令相应的微程序段。