计算机组成原理完整学习笔记(八):控制器设计

第八章 控制器设计

8.1 组合逻辑控制器

8.1.1 操作码译码

CU 执行的关键在于 IR 将指令操作码部分传入译码器中,译码器根据指令操作码部分输出对应的指令编号。

CU 再根据输入的指令编号,输出相应的微操作命令。

计算机组成原理完整学习笔记(八):控制器设计

8.1.2 微操作设计概述

微操作设计的关键任务

由于控制器实质是根据当前指令功能,依次发出一系列控制信号,因此我们需要了解如下信息。

  1. 有哪些控制信号
  2. 这些控制信号如何依次发出?即这些控制信号应该安排到哪个机器周期的哪个节拍中发出。

微操作设计的前提假设

  • 采用同步控制方式。
  • 一个机器周期内有 3 个节拍。(时钟周期)
  • CPU 内部结构采用非总线方式。

计算机组成原理完整学习笔记(八):控制器设计

安排微操作时序的原则

  1. 微操作的先后顺序一般不得随意更改。
  2. 被控对象不同的微操作尽量安排在一个节拍内完成。
    • 由于被控对象不同,因此不同微操作可以并行执行,提高执行效率。
  3. 占用时间较短的微操作,尽量安排在一个节拍内完成,并允许有先后顺序。
    • 两个微操作占用时间非常短,因此可以在同一个节拍内依次执行,加快硬件执行效率。

组合逻辑控制器设计流程

组合逻辑控制器就是一个大规模的组合逻辑电路,因此又称为硬布线控制器。

组合逻辑控制器设计一共分为以下 5 个流程。

  1. 指令周期的微操作节拍安排。
  2. 绘制操作时间表。
  3. 设计微操作命令的最简逻辑表达式。
  4. 设计微操作命令的逻辑电路图。
  5. 综合优化。

组合逻辑控制器设计的特点

  1. 思路清晰,简单明了。
  2. 电路庞杂,调试难,修改难,升级维护难。
  3. 速度快。
  4. 这种设计方式主要被 RISC 处理器采用,因此 RISC 处理器速度快,但一旦更新换代则很难做到兼容。

8.1.3 (1) 指令周期微操作节拍安排

取指周期微操作的节拍安排

计算机组成原理完整学习笔记(八):控制器设计

间址周期微操作的节拍安排

计算机组成原理完整学习笔记(八):控制器设计

执行周期微操作的节拍安排

以下述十条指令的执行周期为例。

  • CLA(清零)

T0,T1T_0,T_1 为空,T2T_2 时安排 0AC0\rightarrow AC

  • COM(取反)

T0,T1T_0,T_1 为空,T2T_2 时安排 ACAC\overline{AC}\rightarrow AC

  • SHR(ACC右移,符号位不变)

T0,T1T_0,T_1 为空,T2T_2 时安排 L(AC)R(AC),AC0AC0L(AC)\rightarrow R(AC),AC_0\rightarrow AC_0

  • CSL(循环左移)

T0,T1T_0,T_1 为空,T2T_2 时安排 R(AC)L(AC),AC0ACnR(AC)\rightarrow L(AC),AC_0\rightarrow AC_n

  • STP(停机)

T0,T1T_0,T_1 为空,T2T_2 时安排 0G0\rightarrow G

  • ADD X(ACC加上 X 对应数据)

计算机组成原理完整学习笔记(八):控制器设计

  • STA X(存数)

计算机组成原理完整学习笔记(八):控制器设计

  • LDA X(读数)

计算机组成原理完整学习笔记(八):控制器设计

  • JMP X(跳转)

T0,T1T_0,T_1 为空,T2T_2 时安排 Ad(IR)PCAd(IR)\rightarrow PC

  • BAN X(条件跳转)

T0,T1T_0,T_1 为空,T2T_2 时安排 A0Ad(IR)+A0(PC)PCA_0*Ad(IR)+\overline{A_0}(PC)\rightarrow PC

中断周期微操作的节拍安排

中断周期即三条中断隐指令的实现。

  • T0:T_0: 执行微操作 0MAR,1W0\rightarrow MAR,1\rightarrow W 以及硬件关中断
  • T1:T_1: 执行微操作 PCMDRPC\rightarrow MDR
  • T2:T_2: 执行微操作 MDRM(MAR),PCMDR\rightarrow M(MAR),向量地址\rightarrow PC

8.1.4 (2) 绘制操作时间表

在这个步骤中需要根据第一步中设计的微操作来安排每个指令的具体执行过程。下图中空格子表示不执行。

取指周期操作时间表

计算机组成原理完整学习笔记(八):控制器设计

间址周期操作时间表

计算机组成原理完整学习笔记(八):控制器设计

执行周期操作时间表

ADD、STA、LDA 三个指令的执行过程如下。

计算机组成原理完整学习笔记(八):控制器设计

其余七条指令的执行过程如下。

计算机组成原理完整学习笔记(八):控制器设计

8.1.5 (3) 设计微操作命令的最简逻辑表达式

我们以 M(MAR)MDRM(MAR)\rightarrow MDR 这条命令为例。

M(MAR)MDR=FET1+INDT1(ADD+STA+LDA+JMP+BAN)               +EXT1(ADD+LDA)=T1{FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)} \begin{aligned} & M(MAR)\rightarrow MDR \\ & = FE*T_1+IND*T_1(ADD+STA+LDA+JMP+BAN) \\ & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +EX*T_1(ADD+LDA) \\ & = T_1\{FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)\} \end{aligned}

上述的逻辑表达式恰好是根据第二部分中各指令执行的操作时间表来决定的。

我们可以发现其中时钟信号 T1T_1,机器周期 FE,IND,EXFE,IND,EX 以及十种操作类型均在下述的硬件电路中已经给出。

计算机组成原理完整学习笔记(八):控制器设计

8.1.6 (4) 设计微操作命令的逻辑图

我们根据上述的最简逻辑表达式设计出下述的逻辑电路图。

计算机组成原理完整学习笔记(八):控制器设计

8.1.7 (5) 综合优化

上述的过程只涉及到了一条微操作的设计,在实际工作中,我们需要将全部微操作命令的逻辑图综合起来,从整体上进行优化工作。

8.2 微程序控制器工作原理

8.2.1 微程序设计概述

微程序设计思想

以 “微程序-微指令-微操作命令” 三级对一条机器指令进行划分。

一条机器指令对应一个微程序,将微程序存入 ROM 中,称为控制存储器。

计算机组成原理完整学习笔记(八):控制器设计

微程序与硬布线设计方式的联系

  • 微程序以微指令为单位,硬布线以时钟周期为单位。其中微指令与时钟周期一样,都会发出一个或几个微操作命令。
  • 硬布线方式的三级结构: “指令周期-机器周期-时钟周期-微操作 (控制信号)”
  • 微程序方式的三级结构: “大段微程序-小段微程序-微指令-微操作 (控制信号)”

8.2.2 微程序工作原理

控制存储器的组成

由于指令的取指、间址、中断周期均一致,因此在控制存储器中的固定位置统一存放这三个过程的微程序。并在其余部分依次存放各类操作执行周期对应的微程序。

计算机组成原理完整学习笔记(八):控制器设计

微程序控制单元的基本框图

CMDR: 控存数据寄存器,保存当前微指令。
CMAR: 控存地址寄存器,保存微指令的地址。

微指令分成两个部分,“操作控制字段” 与 “顺序控制字段” (保存下一条微指令地址,因此也称为 “下址字段”)。

计算机组成原理完整学习笔记(八):控制器设计

微程序的存储结构

根据控制存储器中的内容,我们可以看到取指周期的最后一条微指令的下址字段不确定,原因是不知道接下来执行哪一段微程序。

并且所有执行周期微程序最后一条微指令的下址字段均为 M,因为执行完后开始下一条指令的取址。

计算机组成原理完整学习笔记(八):控制器设计

8.2.3 微程序工作流程

取指阶段

取指阶段入口地址 M 送给 CMAR

微指令的控制字段是一个0、1序列,其中 1 代表一个控制信号的开启。

计算机组成原理完整学习笔记(八):控制器设计

执行阶段

计算机组成原理完整学习笔记(八):控制器设计

8.2.3 微程序设计特点总结

特点

  • 指令执行的每个阶段都是一段微程序,共同组成完成指令的微程序。
  • 全部微指令存在控制存储器(CM)中,程序执行过程中只需读出。因此一旦指令集更新换代,也只需要更新 CM 即可,比硬布线方式方便很多。
    • 因此微程序设计方式为 CISC 处理器所采用。

实现关键点

  • 微指令的操作控制字段如何形成微操作命令。
  • 微指令的后续地址如何形成。

8.3 微程序控制器设计方法

8.3.1 微指令的编码方式

直接控制方式

在微指令的操作控制字段中,每一位代表一个微操作命令,这种方式速度最快。

计算机组成原理完整学习笔记(八):控制器设计

在操作控制码字段,某位为 “1” 即表示该控制信号有效。

字段直接编码方式

将互斥的微操作经编码合在一起作为一个 “段”,每段经译码后发出控制信号。

例如 8 个互斥微操作,我们可以用 4 位进行二进制编码,最后再译码得到对应控制信号。(4 位的原因是还有一个无操作信号,一共 9 个信号)

计算机组成原理完整学习笔记(八):控制器设计

这种方式缩短了微指令字长,增加了译码时间,执行较慢。

字段间接编码方式

计算机组成原理完整学习笔记(八):控制器设计

混合编码

直接编码和字段编码(直接和间接)混合使用。

8.3.2 微指令序列地址的形成

6 种形成方式

  1. 微指令的下地址字段指出

  2. 根据机器指令的操作码形成(IR)

  3. 增量计数器
    (CMAR)+1CMAR (CMAR)+1\rightarrow CMAR

  4. 分支转移

    • 根据转移方式来判断转移去向。
    • 计算机组成原理完整学习笔记(八):控制器设计
  5. 由硬件产生微程序入口地址

    • 第一条微指令地址(由专门硬件产生)
    • 中断周期(由硬件产生中断周期微程序首地址)
  6. 通过测试网络

    • 计算机组成原理完整学习笔记(八):控制器设计

具体形成过程

微程序序列地址由下述的 55 种方式依次产生,并通过一个多路选择器来确定最终的序列地址,然后将地址传入 CMAR 中,经过译码后将控制存储器中对应的微程序存入CMDR中,然后发出对应的控制信号。

计算机组成原理完整学习笔记(八):控制器设计