Skip to content

(三)控制器的功能和工作原理

1. 控制器的设计方式

1.1. 组合逻辑

  • 也称为硬布线逻辑

  • 基本思想

    • 综合化简产生微命令的条件,形成相应逻辑式;
    • 根据逻辑式,用组合逻辑电路实现;
    • 执行指令时,由组合逻辑电路(微命令发生器)在相应时间发出所需微命令,控制有关操作;
    • 微命令发生器:控制器本质是根据输入指令的操作码,按照严格的时序,生成一个或多个微操作命令信号
      • 微操作命令:CPU 执行指令时分解出的最小原子操作,是硬件电路直接支持的基本动作。例如:
        • 本质是选通对应寄存器的输入/输出控制信号,并且选通寄存器之间的数据通路
        • 是电路水平的物理操作,直接操作多路选择/复用器的选择线,或寄存器输入/输出的使能线;
      • 时序:即一个工作周期内,应按照执行顺序,在不同的节拍内选通对应的微操作信号;
  • 设计步骤

    • 1)列出每个信号的时间表;
    • 2)列出逻辑表达式并化简;
    • 3)根据逻辑式画出逻辑电路图;
  • 信号时间表示意图

    image-20250325224705719

  • 优点速度快,思路清晰,简单明了;

  • 缺点:设计不规整,结构凌乱,修改和扩展的难度较大

  • 用途:多用于 RISC 系统;

1.2. 微程序控制

  • 基本思想
    • 引入存储程序的思想,将微操作控制信号按一定规则编码,形成微指令,存放到一个只读存储器里;
    • 存放微程序的存储器称为控制存储器(Control Memory,CM,简称控存);
  • 基本概念
    • 微程序:包含若干微指令,用于解释和执行一条机器指令;
      • 每条机器指令和一个微程序对应;
    • 微指令:对应完成机器指令的某一步操作,由一个或多个微命令组成;
      • 微指令一般是顺序执行;
    • 微命令:对微操作信号的直接编码
      • 在一个 CPU 周期内,多个微命令一般是并行执行;
      • 例:RegWrite[R1] 微命令,直接对应使能 R1 寄存器的输出控制线;
  • 通用微程序
    • 取指、间址、中断等过程在不同指令执行时都是相同的,因此为其统一编写微程序;
    • 若 CPU 系统支持 N 条指令,则微程序有 N+1N+3 个;
      • N+1:表示加上取指微程序,考研用
      • N+3:表示加上取指、间址、中断微程序;

2. 微程序控制器

2.1. 基本结构

image-20250325232308570

  • 控存 CM
    • 微程序控制器的核心部件
    • 只读存储器 ROM,一经固定不可再修改;
  • CMAR (μPC):控存地址寄存器,存放要读出的微指令地址;
  • CMDR (μMDR):控存数据寄存器,存放读出的微指令;
  • 顺序逻辑器:形成下一条微指令地址,控制微指令的执行流;
    • 其输入和微地址形成部件、当前微指令的下地址、时钟信号、外来标志有关;

2.2. 微指令编码

  • 基本结构:操作控制字段 | 下地址
    • 操作控制字段:对应微操作命令,决定微指令的功能;
    • 下地址:指示如何寻找下一条微指令;
  • 直接编码法
    • 操作控制字段每一位对应一个微操作命令,为 1 表示有效/选通;
    • 优点:速度快;
    • 缺点:利用率低,能支持的微操作数量少;
  • 字段直接编码法
    • 将所有微命令分为若干组,每组内部的微命令为互斥的;
      • 互斥:即同一时间只有一个微命令生效,或都不生效(信号无效);
    • 每一组用若干位控制字段编码,然后用译码器进行输出
    • 设某一段有 k 个互斥的微命令,则需要比特数 B=log2(k+1)
      • +1 表示无效信号
    • 优点:缩短微指令字长,提高字段利用率;
    • 缺点:增加了译码时间,导致译码速度变慢;
  • 字段间接编码法

2.3. 微指令格式

  • 水平型微指令:一条微指令可以并行发出多个控制信号。直接编码和字段直接编码都属于水平型。

  • 垂直型微指令:设置了类似于机器指令的操作码字段,一条微指令只能执行一种基本操作

  • 二者的比较

    image-20250812113251155

2.4. 微指令地址

  • 断定法:即直接用微指令的下地址字段作为下一条地址;
  • 增量计数器:即 CMAR 自增得到;
  • 由机器指令的操作码形成;
  • 由专有硬件直接产生下一条地址;
    • 例:取指、中断、间址指令;
  • 控制存储器的大小(容量)C=lCMDR×min{2lCMAR,2lNEXT}
    • lCMDR:CMDR 位数;
    • lNEXT:下地址字段位数;
    • 因为下一条地址同时受到 CMAR 位数,下地址字段位数的限制,故要取最小值;

习题

    1. 微程序控制器采用直接控制编码微指令,后续微指令地址由下地址字段给出。共有 28 个微命令,6 个互斥可判定的外部条件,控制存储器的容量为 512×40 位,设计其微指令格式,并说明理由
    • 答案:操作控制字段 28 位,外部条件编码 3 位,下地址字段 9 位;
    • 解析:CM 容量为 512×40 位,说明共有 512 种微指令,微指令字长 40 位
      • 直接编码方式,一位对应一条微命令,所以操作控制字段需要 28 位;
      • 512 种微指令,需要地址位数 log2512=9 位;
      • 剩下 3 位给外部命令,排在微命令编码之后23=8>6,所以可以编码全部外部条件;
    • 拓展:若外部条件不是互斥的,则外部条件位数不能用 log2N 计算,而是一个外部条件对应 1 位,共计 N 位;