5.2 控制器:硬布线与微程序

控制器的输入与输出;硬布线控制器的原理与微操作信号的综合;微程序控制器的基本概念、组成与工作过程,微指令的编码方式、地址形成方式与格式。

考查要求 ★★★ 重点掌握 硬布线 vs 微程序微命令/微指令/微程序控制存储器字段直接编码断定方式与下址字段水平型与垂直型微指令

控制器的输入与输出

控制器的任务是:根据当前指令、当前所处的周期和节拍以及机器的状态,产生各部件所需的控制信号。

  • 输入:指令寄存器中的操作码;时钟信号;状态标志(PSW 中的 ZF、CF 等,用于条件转移);来自系统总线(控制总线)的信号,如中断请求、DMA 请求。
  • 输出:CPU 内部的控制信号(寄存器之间传送、ALU 操作等);送往系统总线的控制信号(访存读/写、I/O 读/写、中断响应等)。

按照控制信号的产生方式,控制器分为硬布线控制器和微程序控制器两类。

硬布线控制器

硬布线控制器(组合逻辑控制器)由组合逻辑电路直接产生微操作控制信号:信号的取值是指令操作码、当前机器周期、节拍和状态条件的逻辑函数。

指令寄存器 IR操作码 OP指令译码器时钟时序系统机器周期、节拍微操作信号发生器组合逻辑电路状态标志、外部请求控制信号C₁, C₂, …, Cₙ
硬布线控制器的结构

设计硬布线控制器时,先写出每条指令在各机器周期、各节拍的微操作(微操作命令的操作时间表),再把同一个微操作命令出现的所有条件”或”起来得到它的逻辑表达式。例如读主存命令 MemR 在三个场合出现:所有指令取指周期的 T1、间接寻址指令间址周期的 T1、ADD/LDA 等访存指令执行周期的 T1,于是

MemR=FE⋅T1+IND⋅T1⋅I+EX⋅T1⋅(ADD+LDA+⋯ )\text{MemR} = \text{FE}\cdot T_1 + \text{IND}\cdot T_1\cdot I + \text{EX}\cdot T_1\cdot(\text{ADD} + \text{LDA} + \cdots)

其中 FE、IND、EX 是机器周期标志,I 是指令中的间接寻址位,ADD、LDA 是指令译码器的输出。化简后用门电路实现即可。

特点:速度快;但指令越多、功能越复杂,逻辑电路就越庞杂,设计和调试困难,一旦实现就难以修改和扩充。适合指令简单规整的 RISC。

微程序控制器

微程序控制的思想是”用软件的方法设计硬件”:把每条机器指令的微操作序列编写成一段微程序,存放在 CPU 内部的控制存储器中;执行指令时,依次读出微指令,由微指令发出控制信号。

基本概念

概念含义
微命令与微操作控制部件向执行部件发出的控制命令称为微命令;执行部件在微命令作用下完成的操作称为微操作。能同时出现的微命令是相容的,不能同时出现的是互斥的
微指令若干微命令的集合。包含操作控制字段(发出哪些微命令)和顺序控制字段(下一条微指令的地址)
微周期从控存中读取一条微指令并执行相应微操作所需的时间
微程序微指令的有序集合,一条机器指令的功能由一段微程序来实现
控制存储器 CM存放全部微程序的存储器,位于 CPU 内部,一般用 ROM 实现

组成与工作过程

微程序控制器主要由控制存储器 CM、微指令寄存器 CMDR、微地址形成部件和微地址寄存器 CMAR 组成。其工作过程为:

  1. 执行取指微程序:从主存取出机器指令送入 IR;
  2. 微地址形成部件根据 IR 中的操作码产生该指令对应微程序的入口地址,送入 CMAR;
  3. 从 CM 中逐条取出微指令送入 CMDR,发出微命令,由下址字段(或计数器)得到后继微指令的地址;
  4. 本条指令的微程序执行完毕,返回取指微程序的入口,开始下一条机器指令。
动画演示微程序控制器:用微程序解释执行机器指令
控制存储器 CM(ROM)地址操作控制字段(微命令)下址取指公共微程序0PCout, MARin11MemR, MDRinE, +122MDRout, IRinOPADD (R1),R0 的微程序8R1out, MARin99MemR, MDRinE1010MDRout, Yin1111R0out, ADD, Zin1212Zout, R0in0JMP 6 的微程序16PCout, Yin1717Ad(IR)out, ADD, Zin1818Zout, PCin0IRPC100微地址形成部件(OP → 微程序入口)ADD → 8  JMP → 16OP(IR)CMAR(μPC)0CMDR(μIR):微指令寄存器下址微命令送往数据通路各部件
当前微指令下一微地址的来源
1/16控制存储器(CM)中存放着全部微程序:所有指令共用的取指微程序,以及每条机器指令对应的一段微程序。开始时 CMAR 指向取指微程序的入口 0

微指令的编码方式

编码方式指操作控制字段如何表示微命令:

  1. 直接编码(直接控制):每一位代表一个微命令,该位为 1 就发出该微命令。简单直观、速度快、并行性好,但微指令字长太长,控存容量大。
  2. 字段直接编码:把操作控制字段分成若干段,互斥的微命令放在同一段内,相容的微命令放在不同段内,每段独立译码。每段还要留出一个状态表示”本段不发出任何微命令”,所以含 k 个微命令的段需要 ⌈log⁡2(k+1)⌉\lceil \log_2(k+1) \rceil 位。字长缩短了,但要经过译码,速度稍慢。
  3. 字段间接编码:一个字段的某些微命令还要由另一个字段的某些微命令来解释。能进一步缩短字长,但削弱了并行控制能力,通常作为字段直接编码的辅助手段。
计算器微指令格式:字段直接编码 + 断定方式
操作控制字段15 位判断测试字段4 位下址字段8 位
互斥类第 1 组第 2 组第 3 组第 4 组第 5 组合计
微命令数 k73125633
需表示的状态 k + 1841367—
位数 ⌈log₂(k+1)⌉3243315
操作控制字段(字段直接编码)= 15 位
若用直接编码(每个微命令 1 位)= 33 位
下址字段 = ⌈log₂130⌉ = 8 位
判断测试字段 = 4 × 1 = 4 位
微指令字长 = 15 + 4 + 8 = 27 位
控存容量 ≥ 130 × 27 位
每个互斥类要多留一个状态表示「本组不发出任何微命令」,所以 k 个微命令要用 ⌈log₂(k+1)⌉ 位。下址字段要能寻址控存中全部微指令。

微指令的地址形成方式

后继微指令的地址可以由以下方式得到:

  1. 下地址字段法(断定方式):由微指令的顺序控制字段直接给出后继微指令的地址;
  2. 计数器法:后继地址 = 现行地址 + 1(CMAR 自增),遇到转移时再由转移字段给出;
  3. 根据机器指令的操作码形成微程序的入口地址;
  4. 根据状态标志(如 ZF、CF)在若干分支地址中选择一个,实现微程序的条件转移;
  5. 由硬件直接产生,如中断周期微程序的入口地址。

采用断定方式时,微指令格式为:操作控制字段 | 判断测试字段 | 下址字段。下址字段的位数取决于控存的容量(要能访问控存中的每一条微指令);判断测试字段的位数取决于转移条件的个数。

例题:确定微指令各字段的位数

某计算机采用微程序控制器,控制存储器容量为 512 × 48 位,微程序可在整个控存中实现转移,可控制微程序转移的条件共 4 个,微指令采用水平型格式,后继微指令地址采用断定方式。微指令中的三个字段分别应为多少位?

查看解答
  • 下址字段:控存有 512 = 2⁹ 个单元,需要 9 位;
  • 判断测试字段:4 个转移条件,按直接编码每个条件占 1 位,需要 4 位(若编码表示则为 ⌈log₂5⌉ = 3 位);
  • 操作控制字段:48 − 4 − 9 = 35 位。

微指令的格式

水平型微指令垂直型微指令
格式操作控制 | 判断测试 | 后继地址微操作码 μOP | 目的地址 | 源地址
一条微指令定义的微命令多个,可并行执行一两个
微指令长度长短
微程序长度短长
执行速度与效率快、并行能力强、灵活慢、效率低
编写微程序较困难与机器指令相似,简单规整,便于编写

两者结合的称为混合型微指令:在垂直型的基础上增加一些不太复杂的并行操作。

硬布线与微程序的比较

微程序控制器硬布线控制器
工作原理微操作控制信号以微程序的形式存放在控存中,执行指令时读出即可由组合逻辑电路根据当前指令码、状态和时序即时产生
执行速度慢(要访问控存)快
规整性较规整烦琐、不规整
易扩充性易扩充、修改困难
应用场合CISC CPURISC CPU

此外,若控存采用可改写的 EPROM,可以通过改写微程序改变机器的指令系统,称为动态微程序设计;用一段”毫微程序”来解释一条微指令,称为毫微程序设计。

即时练习

即时练习6 题
点击选项即可作答
  1. 1
    相对于微程序控制器,硬布线控制器的特点是( )。
  2. 2
    某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7、3、12、5 和 6 个微命令,则操作控制字段至少有( )。
  3. 3
    某计算机采用微程序控制器,共有 32 条机器指令,公共的取指令微程序包含 2 条微指令,各指令对应的微程序平均由 4 条微指令组成,采用断定法(下址字段法)确定下条微指令地址,则微指令中下址字段的位数至少是( )。
  4. 4
    下列关于主存储器(MM)和控制存储器(CS)的叙述中,错误的是( )。
  5. 5
    微程序控制器中,机器指令与微指令的关系是( )。
  6. 6
    下列关于水平型微指令的叙述中,正确的是( )。
学完了吗?

标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。