5.2 控制器:硬布线与微程序
控制器的输入与输出;硬布线控制器的原理与微操作信号的综合;微程序控制器的基本概念、组成与工作过程,微指令的编码方式、地址形成方式与格式。
控制器的输入与输出
控制器的任务是:根据当前指令、当前所处的周期和节拍以及机器的状态,产生各部件所需的控制信号。
- 输入:指令寄存器中的操作码;时钟信号;状态标志(PSW 中的 ZF、CF 等,用于条件转移);来自系统总线(控制总线)的信号,如中断请求、DMA 请求。
- 输出:CPU 内部的控制信号(寄存器之间传送、ALU 操作等);送往系统总线的控制信号(访存读/写、I/O 读/写、中断响应等)。
按照控制信号的产生方式,控制器分为硬布线控制器和微程序控制器两类。
硬布线控制器
硬布线控制器(组合逻辑控制器)由组合逻辑电路直接产生微操作控制信号:信号的取值是指令操作码、当前机器周期、节拍和状态条件的逻辑函数。
设计硬布线控制器时,先写出每条指令在各机器周期、各节拍的微操作(微操作命令的操作时间表),再把同一个微操作命令出现的所有条件”或”起来得到它的逻辑表达式。例如读主存命令 MemR 在三个场合出现:所有指令取指周期的 T1、间接寻址指令间址周期的 T1、ADD/LDA 等访存指令执行周期的 T1,于是
其中 FE、IND、EX 是机器周期标志,I 是指令中的间接寻址位,ADD、LDA 是指令译码器的输出。化简后用门电路实现即可。
特点:速度快;但指令越多、功能越复杂,逻辑电路就越庞杂,设计和调试困难,一旦实现就难以修改和扩充。适合指令简单规整的 RISC。
微程序控制器
微程序控制的思想是”用软件的方法设计硬件”:把每条机器指令的微操作序列编写成一段微程序,存放在 CPU 内部的控制存储器中;执行指令时,依次读出微指令,由微指令发出控制信号。
基本概念
| 概念 | 含义 |
|---|---|
| 微命令与微操作 | 控制部件向执行部件发出的控制命令称为微命令;执行部件在微命令作用下完成的操作称为微操作。能同时出现的微命令是相容的,不能同时出现的是互斥的 |
| 微指令 | 若干微命令的集合。包含操作控制字段(发出哪些微命令)和顺序控制字段(下一条微指令的地址) |
| 微周期 | 从控存中读取一条微指令并执行相应微操作所需的时间 |
| 微程序 | 微指令的有序集合,一条机器指令的功能由一段微程序来实现 |
| 控制存储器 CM | 存放全部微程序的存储器,位于 CPU 内部,一般用 ROM 实现 |
组成与工作过程
微程序控制器主要由控制存储器 CM、微指令寄存器 CMDR、微地址形成部件和微地址寄存器 CMAR 组成。其工作过程为:
- 执行取指微程序:从主存取出机器指令送入 IR;
- 微地址形成部件根据 IR 中的操作码产生该指令对应微程序的入口地址,送入 CMAR;
- 从 CM 中逐条取出微指令送入 CMDR,发出微命令,由下址字段(或计数器)得到后继微指令的地址;
- 本条指令的微程序执行完毕,返回取指微程序的入口,开始下一条机器指令。
微指令的编码方式
编码方式指操作控制字段如何表示微命令:
- 直接编码(直接控制):每一位代表一个微命令,该位为 1 就发出该微命令。简单直观、速度快、并行性好,但微指令字长太长,控存容量大。
- 字段直接编码:把操作控制字段分成若干段,互斥的微命令放在同一段内,相容的微命令放在不同段内,每段独立译码。每段还要留出一个状态表示”本段不发出任何微命令”,所以含 k 个微命令的段需要 位。字长缩短了,但要经过译码,速度稍慢。
- 字段间接编码:一个字段的某些微命令还要由另一个字段的某些微命令来解释。能进一步缩短字长,但削弱了并行控制能力,通常作为字段直接编码的辅助手段。
| 互斥类 | 第 1 组 | 第 2 组 | 第 3 组 | 第 4 组 | 第 5 组 | 合计 |
|---|---|---|---|---|---|---|
| 微命令数 k | 7 | 3 | 12 | 5 | 6 | 33 |
| 需表示的状态 k + 1 | 8 | 4 | 13 | 6 | 7 | — |
| 位数 ⌈log₂(k+1)⌉ | 3 | 2 | 4 | 3 | 3 | 15 |
微指令的地址形成方式
后继微指令的地址可以由以下方式得到:
- 下地址字段法(断定方式):由微指令的顺序控制字段直接给出后继微指令的地址;
- 计数器法:后继地址 = 现行地址 + 1(CMAR 自增),遇到转移时再由转移字段给出;
- 根据机器指令的操作码形成微程序的入口地址;
- 根据状态标志(如 ZF、CF)在若干分支地址中选择一个,实现微程序的条件转移;
- 由硬件直接产生,如中断周期微程序的入口地址。
采用断定方式时,微指令格式为:操作控制字段 | 判断测试字段 | 下址字段。下址字段的位数取决于控存的容量(要能访问控存中的每一条微指令);判断测试字段的位数取决于转移条件的个数。
某计算机采用微程序控制器,控制存储器容量为 512 × 48 位,微程序可在整个控存中实现转移,可控制微程序转移的条件共 4 个,微指令采用水平型格式,后继微指令地址采用断定方式。微指令中的三个字段分别应为多少位?
查看解答
- 下址字段:控存有 512 = 2⁹ 个单元,需要 9 位;
- 判断测试字段:4 个转移条件,按直接编码每个条件占 1 位,需要 4 位(若编码表示则为 ⌈log₂5⌉ = 3 位);
- 操作控制字段:48 − 4 − 9 = 35 位。
微指令的格式
| 水平型微指令 | 垂直型微指令 | |
|---|---|---|
| 格式 | 操作控制 | 判断测试 | 后继地址 | 微操作码 μOP | 目的地址 | 源地址 |
| 一条微指令定义的微命令 | 多个,可并行执行 | 一两个 |
| 微指令长度 | 长 | 短 |
| 微程序长度 | 短 | 长 |
| 执行速度与效率 | 快、并行能力强、灵活 | 慢、效率低 |
| 编写微程序 | 较困难 | 与机器指令相似,简单规整,便于编写 |
两者结合的称为混合型微指令:在垂直型的基础上增加一些不太复杂的并行操作。
硬布线与微程序的比较
| 微程序控制器 | 硬布线控制器 | |
|---|---|---|
| 工作原理 | 微操作控制信号以微程序的形式存放在控存中,执行指令时读出即可 | 由组合逻辑电路根据当前指令码、状态和时序即时产生 |
| 执行速度 | 慢(要访问控存) | 快 |
| 规整性 | 较规整 | 烦琐、不规整 |
| 易扩充性 | 易扩充、修改 | 困难 |
| 应用场合 | CISC CPU | RISC CPU |
此外,若控存采用可改写的 EPROM,可以通过改写微程序改变机器的指令系统,称为动态微程序设计;用一段”毫微程序”来解释一条微指令,称为毫微程序设计。
即时练习
- 1相对于微程序控制器,硬布线控制器的特点是( )。
- 2某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7、3、12、5 和 6 个微命令,则操作控制字段至少有( )。
- 3某计算机采用微程序控制器,共有 32 条机器指令,公共的取指令微程序包含 2 条微指令,各指令对应的微程序平均由 4 条微指令组成,采用断定法(下址字段法)确定下条微指令地址,则微指令中下址字段的位数至少是( )。
- 4下列关于主存储器(MM)和控制存储器(CS)的叙述中,错误的是( )。
- 5微程序控制器中,机器指令与微指令的关系是( )。
- 6下列关于水平型微指令的叙述中,正确的是( )。
标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。