硬布线控制器
上一节把 CU 写成了一个函数
硬布线控制器就是把这个函数直接做成组合逻辑电路。 没有存储器、没有查表,每一根控制线都是一个布尔表达式的输出,由一片与门和或门算出来。
“硬布线”这个名字说的就是它的缺点:函数写死在导线里,改一条指令的行为就要改电路。而它的优点也在这里——没有中间环节,一级门延迟就出结果,是三种 CU 实现里最快的。
机制
一根控制线就是一个布尔表达式
以”读主存”这根控制信号 Read 为例。它在什么时候要有效?
- 取指周期的第二拍——每条指令都要取
- 间址周期的第二拍——只要进了间址周期就要取
- 执行周期的某一拍——但只对访存类指令(
LDA、ADD直接寻址等),寄存器型指令不发
写成布尔表达式:
其中:
是5.2.1 那四个阶段标志触发器 是节拍信号,来自时序系统 是指令译码器的输出线,每条指令一根,只中一根
这三组信号就是 5.4.1 说的 CU 三类输入,条件转移那类信号还要再乘上标志位:
整个 CU 就是几十上百个这样的表达式并排放着,共用同一组输入线。结构上它是一片”与-或”阵列——先用与门算出每个乘积项,再用或门把属于同一根输出线的乘积项加起来。这正是 PLA(可编程逻辑阵列)的形状,所以有些教材把硬布线控制器称作 PLA 控制器。
设计流程四步
这是教材给的标准流程,考试要求知道步骤名和每步在做什么,不要求真的走完一遍:
| 步骤 | 做什么 | 产物 |
|---|---|---|
| 1. 分析微操作序列 | 把取指、间址、执行、中断四个阶段每条指令要做的微操作全部列出 | 微操作清单 |
| 2. 选择控制方式 | 同步 / 异步 / 联合 | 节拍怎么划分 |
| 3. 安排微操作时序 | 把微操作分配到具体节拍 | 操作时间表 |
| 4. 电路设计 | 对每根控制线写出最简表达式,画逻辑图 | 与-或阵列 |
第 3 步的三条原则(和 5.3.3 的排拍三规则是同一件事的另一种表述):
- 微操作的先后顺序不得随意改变——有数据依赖的必须保序
- 被控对象不同的微操作,尽量安排在同一节拍——这就是”白赚的并行”
- 占用时间较短的微操作尽量并入同一节拍,并允许它们在拍内有先后
疑问点:这部分书上讲得好浅;做过一道画表格判断互斥字段的题;王道视频里花了一小时画真值表、化简逻辑,做出一个 CU
两件事要分开:真值表那一小时属于本节(硬布线),互斥字段那道题属于下一节(微程序)。它们是 CU 的两种不同实现,不能混在一起记。
先说真值表。 视频里那一小时做的,就是上面第 3 步和第 4 步:
第 3 步产出一张「操作时间表」——行是节拍(
、 、 …),列是指令(或指令类别),格子里填这一拍这条指令要发的控制信号。四个阶段各一张表。 第 4 步是把这张表”竖着读”:盯住某一根控制信号,把表里所有出现它的格子找出来,每个格子写成一个乘积项
,再全部或起来——就得到那根线的表达式。然后做布尔化简、画门电路。 阶 段 节 拍 指 令 这个过程之所以要一小时,是因为它是穷举,而不是因为它难。 它没有技巧可言:表有多少格就填多少格,控制信号有多少根就写多少个表达式。
所以”书上讲得浅”这个感觉是准确的,但结论要反过来——浅得有道理。 408 从不要求完整设计一个 CU,它考的是这条流程上的三个可切片的点:
考什么 怎么问 难度 读时间表 给一张操作时间表,问某拍发哪些信号 / 某信号在哪些拍有效 低 写单根表达式 给微操作清单,写出某个控制信号的逻辑表达式 中 数节拍 某条指令的执行周期最少几拍 中,靠排拍三规则 完整走一遍设计流程的价值不在考试,在于它让”控制信号是被算出来的”这件事变得具体——看过一次就够了,不必再看第二次。
再说互斥字段那道题。 它考的是微程序控制器的字段直接编码:把不可能同时有效的微命令编在同一个字段里,用编码而不是”一位一个信号”来省空间。那道题之所以”挺妙”,是因为它把”互斥”这个逻辑关系变成了一个可数的量——能编进同一字段的信号越多,控制存储器越省。 完整讨论在 5.4.3。
两道题分属两节,这本身就是最该记住的一点:真值表是硬布线的工作方式,互斥字段是微程序的工作方式。硬布线里根本没有”字段”这个概念——它的每根控制线都是独立算出来的,不存在把几根线编码到一起的问题。
三种控制方式
第 2 步”选择控制方式”给出的三个选项:
| 方式 | 怎么定时 | 特点 |
|---|---|---|
| 同步控制 | 统一的时钟节拍,所有操作按固定拍数 | 控制简单;按最慢的操作定拍长,有浪费 |
| 异步控制 | 应答方式:做完了发回答信号才进行下一步 | 无浪费;控制线路复杂 |
| 联合控制 | 大部分同步,个别慢操作(如访存)用异步等待 | 实际机器普遍采用 |
“按最慢的定”这个取舍,在本章第三次出现——5.2.1 机器周期按访存时间定、5.2.3 单周期按最慢指令定、这里同步控制按最慢操作定。三处是同一个道理:要整齐就得让快的等慢的。 第四次出现在 5.6.2,流水段时间按最慢段取。
同步控制下要延长时间的两种手段:延长节拍(把一个节拍拉长)或插入等待周期(多给几拍),题目里访存慢就用后者。
优缺点与适用场合
| 硬布线 | |
|---|---|
| 优点 | 速度快——一级组合逻辑延迟,不访问任何存储器 |
| 缺点 | 难设计、难修改——指令一多,与-或阵列规模爆炸;改指令要改电路 |
| 规模 | 与指令条数 × 节拍数成正比 |
| 适合 | 指令少、格式规整的机器 → RISC |
“指令少而规整”是硬布线可行的前提,不是巧合。 4.4.2 说 RISC 指令数量少、格式统一、寻址方式少——这三条正好把与-或阵列的规模压了下来,硬布线才做得出来。反过来,CISC 上百条指令、十几种寻址方式,硬布线的阵列会大到无法设计,只能用微程序查表。
这就是 4.4.3 那条”因果强度不对称”的硬件依据:RISC → 硬布线是有理由的(规模可控),CISC → 微程序只是没有更好的选择。
边界
边界辨析:硬布线的「快」快在哪
快在不访问存储器。微程序控制器每发一组控制信号都要读一次控制存储器 CM,而 CM 再快也是存储器;硬布线是纯组合逻辑,输入稳定后一级门延迟就出结果。
代价是灵活性为零:修改指令 = 修改电路 = 重新流片。
边界辨析:硬布线没有「字段」
硬布线控制器的每根控制线独立算出,不存在把多根信号编码到一个字段的做法。
“互斥字段""字段直接编码""水平型/垂直型”全部属于微程序控制器(5.4.3),在硬布线里没有对应物。这是两节之间最常见的串台。
关联对照:同步 / 异步 / 联合控制
- 同步:统一节拍,简单但浪费
- 异步:应答握手,无浪费但复杂
- 联合:主体同步 + 慢操作异步,实际采用
同一组概念在 6.2.2 总线定时再出现一次,那里讨论的是总线上的主从设备,判据完全相同。
对照速查
| 符号 | 含义 | 来自 |
|---|---|---|
| 阶段标志触发器 | 5.2.1 | |
| 节拍信号 | 时序系统 | |
| 指令译码器输出线 | IR 的操作码 | |
| 状态标志 | PSW |
| 说法 | 判断 |
|---|---|
| 硬布线控制器速度快于微程序控制器 | ✅ 不访问存储器 |
| 硬布线控制器易于修改和扩展 | ❌ 恰恰相反 |
| 硬布线控制器适合 RISC | ✅ 指令少而规整,阵列规模可控 |
| 硬布线控制器中有控制存储器 | ❌ 没有,那是微程序控制器 |
| 硬布线控制器需要节拍信号 | ✅ 三类输入之一 |
| 同步控制方式的节拍按最慢操作定 | ✅ 这是它浪费的来源 |
考点
- 写某控制信号的逻辑表达式:形如
。别漏掉”仅某类指令才发”的那个乘积因子。信 号 阶 段 节 拍 指 令 条 件 - 读操作时间表:给表问某拍发哪些信号,或某信号在哪些拍有效。
- 硬布线 vs 微程序对比:速度、灵活性、规模、适用机型四项。
- 三种控制方式的辨析:同步简单浪费、异步复杂无浪费、联合折中。
- 不要把”互斥字段”记到本节:那是微程序的内容。
链接
- 🏠 返回总览:计算机组成原理第 5 章:中央处理器总览
- ⬅️ 上一节:5.4.1 控制器的结构和功能
- ➡️ 下一节:5.4.3 微程序控制器
- 🔗 排拍三规则:5.3.3 数据通路的基本结构
- 🔗 为什么 RISC 用硬布线:4.4.2 RISC 的基本概念
- 🔗 同步/异步在总线上的版本:6.2.2 总线定时
- 📖 名词库:第 5 章名词库