硬布线控制器

上一节把 CU 写成了一个函数 操作码节拍标志控制信号组。

硬布线控制器就是把这个函数直接做成组合逻辑电路。 没有存储器、没有查表,每一根控制线都是一个布尔表达式的输出,由一片与门和或门算出来。

“硬布线”这个名字说的就是它的缺点:函数写死在导线里,改一条指令的行为就要改电路。而它的优点也在这里——没有中间环节,一级门延迟就出结果,是三种 CU 实现里最快的。

机制

一根控制线就是一个布尔表达式

以”读主存”这根控制信号 Read 为例。它在什么时候要有效?

  • 取指周期的第二拍——每条指令都要取
  • 间址周期的第二拍——只要进了间址周期就要取
  • 执行周期的某一拍——但只对访存类指令(LDA、ADD 直接寻址等),寄存器型指令不发

写成布尔表达式:

取指间址执行,仅访存类

其中:

  • 是5.2.1 那四个阶段标志触发器
  • 是节拍信号,来自时序系统
  • 是指令译码器的输出线,每条指令一根,只中一根

这三组信号就是 5.4.1 说的 CU 三类输入,条件转移那类信号还要再乘上标志位:

转移

整个 CU 就是几十上百个这样的表达式并排放着,共用同一组输入线。结构上它是一片”与-或”阵列——先用与门算出每个乘积项,再用或门把属于同一根输出线的乘积项加起来。这正是 PLA(可编程逻辑阵列)的形状,所以有些教材把硬布线控制器称作 PLA 控制器。

设计流程四步

这是教材给的标准流程,考试要求知道步骤名和每步在做什么,不要求真的走完一遍:

步骤做什么产物
1. 分析微操作序列把取指、间址、执行、中断四个阶段每条指令要做的微操作全部列出微操作清单
2. 选择控制方式同步 / 异步 / 联合节拍怎么划分
3. 安排微操作时序把微操作分配到具体节拍操作时间表
4. 电路设计对每根控制线写出最简表达式,画逻辑图与-或阵列

第 3 步的三条原则(和 5.3.3 的排拍三规则是同一件事的另一种表述):

  1. 微操作的先后顺序不得随意改变——有数据依赖的必须保序
  2. 被控对象不同的微操作,尽量安排在同一节拍——这就是”白赚的并行”
  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 微程序对比:速度、灵活性、规模、适用机型四项。
  • 三种控制方式的辨析:同步简单浪费、异步复杂无浪费、联合折中。
  • 不要把”互斥字段”记到本节:那是微程序的内容。

链接