Skip to content

硬布线控制器

2026 大纲 五(四)控制器的功能和工作原理(硬布线控制器)。

控制器只回答一个问题:这一拍把哪几个门打开

不管硬布线还是微程序,控制器要做的事只有一件——在第几拍,把哪几个门打开。写成函数就是:

控制信号=f(操作码, 节拍, 状态条件)

两种控制器的分歧只在怎么实现这个函数。硬布线的做法是把它直接做成逻辑门电路:不存储、不查表,输入一变,经过几级门延迟输出立刻跟着变。

🔴 两者的分界线是"算"还是"读":控制信号由逻辑电路出来的是硬布线,从控制存储器出来的是微程序。⚠️ 由此可以立刻判掉一个常见误解——多周期的硬布线控制器含有状态寄存器,但它仍然是硬布线:那几个触发器记的是"现在第几步",不是用来存放控制信号的存储器。

函数的三类输入各管一件事:操作码(来自 IR 高位,经指令译码器产生 I1,,In,任一时刻只有当前指令那一根为 1)回答"是哪条指令";节拍信号(时序发生器产生 T1,,Tk,常见实现是环形计数器,每个时钟周期只有一个 Ti=1、逐拍右移)回答"现在第几拍";状态条件(PSW 的 CF / ZF / SF / OF,以及中断请求、存储器就绪)回答"该不该分支"——条件转移要看 ZF 才知道该不该改写 PC,访存要看就绪信号才知道该不该继续。

🔴 节拍信号是控制器的时间坐标。 同一条指令在不同拍要发不同的信号,光知道"当前是 ADD"远远不够。缺了节拍这一维,控制器就退化成纯组合逻辑,那就只能做单周期 CPU 了

交互可视化

加载可视化中...

一、控制器就是一个函数

数据通路已经把所有可能的路径都铺好了,剩下的问题只有一个:在第几拍,把哪几个门打开。控制器的输出是一组控制信号(门控信号、写使能、ALU 操作码等),每个信号在每个时刻要么有效要么无效,因此它可以看成

控制信号=f(操作码, 时序信号, 状态条件)

三类输入各回答一件事:是哪条指令(操作码)、现在第几拍(节拍信号)、该不该分支(状态条件)。

二、设计过程本质上是填一张表

行是每一个控制信号,列是每一个(指令,节拍)组合,格子填该信号在该情形下是否有效。填完表,每一行就是一个布尔函数的真值表,直接写出表达式即可。步骤固定为四步:

  1. 分析每条指令的微操作序列——列出每条指令在每个节拍需要哪些微操作
  2. 列出每个控制信号的逻辑表达式——找出哪些指令的哪些节拍需要它
  3. 化简布尔表达式——用卡诺图或代数方法
  4. 用逻辑门电路实现
两个控制信号的表达式怎么写出来,以及它为什么就是 PLA 的形状(想弄清与阵列、或阵列分别对应表达式哪一段时展开)

控制信号 C1("将 MDR 内容送入 IR")在取指周期第 3 拍有效,且对任何指令都成立——因为取指过程与指令种类无关:

C1=T3FE

控制信号 C2("ALU 执行加法")仅在 ADD 指令的执行周期第 1 拍有效:

C2=IADDT1EX

若 LOAD 指令也要在执行周期第 1 拍用 ALU 算有效地址,则两条指令合并进同一个"或":

C2=(IADD+ILOAD)T1EX

三个式子是同一个模子:

信号=(需要它的指令)(节拍)(工作周期)

括号里的"指令之和"就是或阵列,外层的相乘就是与阵列。所以硬布线控制器落到芯片上天然是一块 PLA——先与后或,不需要另外设计结构。

图 5.28 用 PLA 电路实现的组合逻辑控制器
图 5.28 用 PLA 电路实现的组合逻辑控制器
(袁春风《计算机组成与系统结构》第 3 版,见文末教材出处)

落到电路上就是一块 与阵列 + 或阵列:输入是操作码和当前状态,经与阵列产生乘积项,再由或阵列把相关乘积项并起来,直接输出各条控制信号。

三、单周期与多周期的硬布线控制器

同样叫硬布线,两种 CPU 里的形态并不相同:

单周期多周期
控制器类型纯组合逻辑组合逻辑 + 状态寄存器
输入是否含节拍
一条指令内信号不变逐拍变化
本质一张真值表有限状态机

四、硬布线 vs 微程序

对比项硬布线控制器微程序控制器
实现方式组合逻辑电路控制存储器(ROM)
控制信号来源出来出来
速度(几级门延迟)较慢(要访问 CM)
规整性不规整,逻辑零散规整,易于扩展
修改灵活性(需重新设计电路)(改 CM 内容)
新增一条指令要做什么重新分析微操作序列、修改所有相关信号的布尔表达式、重新设计电路——改的是硬件在 CM 中新增一段微程序,映射逻辑里加一条操作码到入口地址的映射——改的是内容
适用场景RISC(指令集简单规整)CISC(指令集复杂)

这张表里"快"和"难改"这两格看似无关,其实是同一个决定的两面:

🔴 电路是为这套指令集专门化简过的——所以它没有中间环节因而快;也所以新增一条指令时那张真值表就变了,相关的布尔表达式全都要重新化简,本质上是重新设计硬件。把这两格分开背,就会觉得"为什么快的那个偏偏难改"很偶然。

最后一行的适用场景也有依据,不是约定俗成:指令集的规模与规整程度。RISC 指令少、格式统一、执行步骤相似 那张表小而有规律、化简后电路规模可控;CISC 指令多、格式各异、微操作序列长 表庞大且无规律,只好改用微程序,把复杂性从"设计电路"转移到"编写微程序"上。

顺带一句现代实现:x86 两者都用——简单指令走硬布线式的快速译码路径保证速度,少数复杂指令查微码 ROM 展开成一串内部操作。x86 能靠微码更新修补某些硬件缺陷,补的正是走微码路径的那部分。

考点速记

  1. 硬布线 =f(操作码,节拍,状态) 直接做成逻辑门电路,不存储不查表;与微程序的分界线是控制信号"出来还是""出来,多周期硬布线虽含状态寄存器仍属硬布线
  2. 三类输入分别回答"是哪条指令""现在第几拍""该不该分支";节拍信号是时间坐标,缺了它只能做单周期 CPU。
  3. 设计本质是填一张(控制信号 × 指令节拍)表,逐行写布尔表达式,形如 (指令)节拍周期,正对应 PLA 的先与后或;快与难改源自同一个决策——电路是为这套指令集专门化简的。

这一节在真题里被考过的形式(下方「真题练习」里属于本篇的那道):

  • 问"相对于微程序控制器,硬布线控制器的特点是什么"速度快、修改扩展难。四个选项就是"快 / 慢"与"易改 / 难改"的四种搭配,而这两点同源——电路为这套指令集专门化简过,所以既快又难改。答成"速度慢"或"修改容易"都是把两种控制器记反了。

易错:把"多周期硬布线控制器含状态寄存器"当成微程序的特征。判据是控制信号从哪来,不是有没有寄存器。

易错:把"快"和"难改"当成两件互不相干的事去记。它们是同一个设计决定的两面。

教材出处
  • 用 PLA 电路实现的组合逻辑控制器(图 5.28):袁春风《计算机组成与系统结构》第 3 版 §5.3 多周期处理器,印刷页 p156

相关知识

微程序控制器单总线数据通路单周期数据通路多周期数据通路

真题练习