什么是微程序控制器操作?
微程序控制器也被设计为有限状态机。考虑图中所示的通用微程序控制器。寄存器存储一个值,该值对应于CPU状态图中的一个状态。它用作微代码存储器的输入地址。该存储器输出微指令,即该地址的存储位置的内容。
微指令由多个位字段组成,可以将其分解为两组。第一组是微操作。这些信号从微程序控制器输出到CPU的其余部分。微指令的第二组位用于生成要存储在寄存器中的下一个地址(微程序控制器的顺序部分)。
这些位以及指令操作码和标志值作为输入提供给组合逻辑,组合逻辑生成下一条微指令的地址。这类似于在状态图中从一个状态转换到另一个状态。微程序控制器根据其当前状态及其输入值进行此转换。
微程序控制器可以遵循设计人员希望使用的任何地址序列,但生成这些地址只有几种标准方法。微程序控制器的“生成下一个地址”块通常生成所有可能的下一个地址,然后选择正确的下一个地址传递给寄存器。
下一个地址的一个可能值是微代码存储器中的下一个地址,即当前地址加1。典型的高级语言计算机程序具有按顺序执行的语句块。微代码例程通常也占用微代码存储器中的连续位置。这提高了可读性,并使微程序的调试更容易。在许多CPU中,构成获取例程和每个单独执行例程的微指令都存储在连续的位置。
微程序控制器通常使用并行加法器来生成当前地址加1的值作为可能的下一个地址。例如,在每个执行例程结束时,微程序控制器必须跳转回获取例程的开头。跳转还可以用于更有效地利用微代码存储器。
每个微程序控制器都必须能够访问正确的执行例程。微程序控制器使用映射逻辑来执行此功能。获取指令的操作码作为输入提供给映射硬件,该硬件将此操作码转换为指令执行例程的第一条微指令的地址。
通过将其地址加载到其寄存器中,微程序控制器分支到正确的执行例程。映射硬件仅在CPU的获取周期结束时使用一次。
当几个指令必须执行相同的微操作序列作为其执行的一部分时,该序列可以实现为微子程序。调用微子程序时,地址由微代码存储器指定为绝对地址,就像跳转一样。返回地址(当前地址加1)存储在微子程序寄存器或硬件堆栈中。