微程序控制器的详细工作过程
1. 基本组成结构
微程序控制器主要由以下部件构成:
-
控制存储器(Control Store, CS):存储微程序(微指令集合),通常使用ROM或EPROM。
-
微地址寄存器(μAR):存放下一条要执行的微指令地址。
-
微指令寄存器(μIR):存放当前正在执行的微指令。
-
地址转移逻辑:根据条件码(如ALU标志、外部中断等)生成下一微指令地址。
-
时序发生器:产生微操作所需的时钟信号。
2. 工作过程详解
(1)取指令阶段
-
步骤1:从主存中取出机器指令,存入CPU的指令寄存器(IR)。
-
步骤2:指令的操作码部分通过微地址映射逻辑转换为该指令对应的微程序入口地址(即首条微指令地址),并加载到μAR中。
(2)微指令执行阶段
-
步骤3:根据μAR中的地址,从控制存储器中读取对应的微指令,存入μIR。
-
步骤4:微指令包含两部分:
-
控制字段:生成控制信号(如寄存器读写、ALU操作、总线选择等),直接驱动硬件部件。
-
地址字段:指定下一条微指令的地址(或通过条件码动态计算)。
-
-
步骤5:执行当前微指令的所有微操作(一个时钟周期内完成)。
-
步骤6:通过地址转移逻辑确定下一条微指令地址:
-
顺序执行:μAR = μAR + 1。
-
分支跳转:根据条件码修改μAR(如条件判断、循环或子程序调用)。
-
(3)循环与结束
-
步骤7:重复步骤3~6,直到完成该机器指令对应的所有微操作(微程序结束)。
-
步骤8:返回取指令阶段,开始下一条机器指令的执行。
3. 关键机制
-
水平型 vs 垂直型微指令:
-
水平型:控制字段的每一位直接对应一个控制信号,并行度高,但微指令较长。
-
垂直型:微指令类似机器指令,需译码后生成控制信号,节省存储空间但速度较慢。
-
-
动态地址生成:通过条件码(如零标志、进位标志)实现分支,支持灵活的微程序流控制。
-
微子程序调用:通过保存返回地址实现微指令的复用(类似函数调用)。
4. 示例分析
以执行一条加法指令(ADD R1, R2)为例:
-
取指令:从主存取出ADD指令,操作码映射到微程序入口地址0x100。
-
微程序执行:
-
微指令1(0x100):将R1、R2内容送入ALU输入端。
-
微指令2(0x101):ALU执行加法,结果暂存。
-
微指令3(0x102):将结果写回R1。
-
-
结束:μAR重置,准备下一条指令。
5. 优缺点
-
优点:
-
设计规整,易于修改(通过更新控制存储器)。
-
支持复杂指令集(CISC)的灵活实现。
-
-
缺点:
-
速度较硬连线控制器慢(需多次访问控制存储器)。
-
控制存储器的容量可能成为瓶颈。
-
6. 应用场景
-
早期CISC架构(如x86的某些实现)。
-
需要频繁更新指令集的场景(如实验性处理器)。
通过这种分层控制的方式,微程序控制器在灵活性与复杂度之间取得了平衡,成为经典控制单元设计的重要方法之一。