硬布线控制器用组合逻辑电路直接产生控制信号。

它的核心思想是:

1
指令操作码 + 当前工作周期 + 节拍信号 + 状态条件 -> 微操作控制信号

每个微命令对应一个或一组控制信号;控制信号接通数据通路后,就完成对应的微操作。

硬布线控制器基本思路

例如,要完成:

1
(PC) -> MAR

在单总线结构中可能需要让:

1
PCout, MARin

同时有效。控制器发出的不是“文字命令”,而是让这些控制线在特定节拍为有效电平。

微操作、微命令和控制信号

概念 含义 例子
微操作 数据通路中最基本的操作 (PC) -> MAR
微命令 控制器发出的命令 使 PCoutMARin 有效
控制信号 微命令在电路中的具体控制线 PCoutMARinMemRIRin

三者关系可以理解为:

1
微命令发出控制信号,控制信号驱动数据通路完成微操作。

一个节拍内可以并行发出多个微命令,但前提是这些微操作相容:不争用同一条总线、不同时写同一个目的寄存器、不违反数据依赖。

控制信号由什么决定

硬布线控制器发出某个控制信号时,需要同时看四类条件。

条件 作用
指令操作码 判断当前执行的是 ADDLDASTAJMP 等哪类指令
工作周期标志 判断当前处于取指、间址、执行或中断周期
节拍信号 判断当前是 T0T1T2 等哪一个时钟节拍
状态条件 判断 PSW、ACC 符号位、中断请求、寻址特征位等条件是否成立

因此,某个微命令的逻辑表达式一般形如:

1
控制信号 = 若干个“工作周期 · 节拍 · 指令条件 · 状态条件”的或

例如,M(MAR) -> MDR 可能在多个场景出现:

场景 条件
取指周期读指令 FE · T1
间址周期读有效地址 IND · T1 · 需要间址的指令
执行周期读操作数 EX · T1 · 访存读指令

所以它的控制信号不是只属于某一条指令,而是把所有会用到该微操作的情况综合起来。

1
M(MAR)->MDR = FE·T1 + IND·T1·(...) + EX·T1·(...)

设计步骤

硬布线控制器的设计可以按下面四步看。

硬布线控制器设计步骤

步骤 要做什么
分析微操作序列 写出取指、间址、执行、中断各周期需要哪些微操作
选择控制方式 决定采用定长或不定长机器周期、每个机器周期安排几个节拍
安排微操作时序 把微操作分配到 T0/T1/T2/...
电路设计 列操作时间表,写逻辑表达式,画组合逻辑电路

其中最关键的是第三步和第四步:先决定什么时候做什么微操作,再把这个“什么时候”转成逻辑表达式。

微操作时序安排原则

安排节拍时除了尽量少用节拍,还要满足数据通路约束。

原则 含义
顺序不能乱 后一个微操作依赖前一个结果时,不能提前
被控对象不同可并行 不冲突的寄存器传送、主存控制、PC 更新等可放在同一节拍
短操作可合并 若两个短微操作有先后关系,但总耗时仍能放入一个时钟周期,可以安排在同一节拍
一个节拍内“同时写在一起”不一定表示完全同时

有些内部寄存器传送和译码操作很短,可以在同一时钟周期内先后完成。表格里写在同一节拍,是因为它们能在该节拍内完成,而不是说所有电路瞬间同时变化。

# 取指周期的节拍安排

取指周期对所有指令通常相同。

原始微操作序列:

1
2
3
4
5
6
(PC) -> MAR
1 -> R
M(MAR) -> MDR
(MDR) -> IR
OP(IR) -> ID
(PC) + 1 -> PC

若采用定长机器周期,并把一个机器周期安排为 3 个节拍,可安排为:

节拍 微操作 说明
T0 (PC) -> MAR1 -> R 给出指令地址,同时发出读命令
T1 M(MAR) -> MDR(PC)+1 -> PC 主存读指令;PC 形成下一条指令地址
T2 (MDR) -> IROP(IR) -> ID 指令进入 IR,操作码送指令译码器

这里 M(MAR) -> MDR 涉及主存读,通常需要一个完整节拍保证完成;而 MDR -> IROP(IR) -> ID 都是 CPU 内部较短操作,可以安排在同一节拍。

间址周期的节拍安排

间址周期用于根据指令地址字段访问主存,取出真正的有效地址。

节拍 微操作
T0 Ad(IR) -> MAR1 -> R
T1 M(MAR) -> MDR
T2 (MDR) -> Ad(IR)

间址周期的结果不是操作数,而是有效地址。执行周期再用这个有效地址去取操作数或完成后续操作。

执行周期的节拍安排

执行周期因指令而异。

指令 功能 执行周期微操作
CLA ACC 清零 T2: 0 -> AC
COM ACC 取反 T2: AC -> AC
ADD X (AC) + (X) -> AC T0: Ad(IR)->MAR, 1->RT1: M(MAR)->MDRT2: (AC)+(MDR)->AC
STA X (AC) -> X T0: Ad(IR)->MAR, 1->WT1: AC->MDRT2: MDR->M(MAR)
LDA X (X) -> AC T0: Ad(IR)->MAR, 1->RT1: M(MAR)->MDRT2: MDR->AC
JMP X 无条件转移 T2: Ad(IR)->PC
BAN X ACC 为负则转移 T2: A0·Ad(IR) + A0'·(PC) -> PC
`A0` 的含义

A0 可理解为 ACC 的符号位。若符号位为 1,表示 ACC 为负,BAN 才把指令地址字段送入 PC;否则 PC 保持顺序执行形成的值。

# 中断周期的节拍安排

中断周期由硬件完成,又称中断隐指令完成的操作。它不是指令系统里的一条普通机器指令。

中断周期通常要完成三件事:

任务 含义
保存断点 保存当前 PC,以便中断返回
形成入口地址 把中断服务程序入口送入 PC
关中断 避免处理中断时被新的可屏蔽中断打断

一种节拍安排为:

节拍 微操作
T0 a -> MAR1 -> W0 -> EINT
T1 (PC) -> MDR
T2 MDR -> M(MAR)向量地址 -> PC

其中 EINT 表示中断允许触发器。0 -> EINT 表示关中断。

组合逻辑设计

微操作时序安排完成后,就可以转成组合逻辑。

组合逻辑设计通常分三步:

步骤 内容
列操作时间表 列出各工作周期、各节拍、各指令下可能用到的微操作
写最简表达式 对每个微命令,把所有会用到它的条件合并
画逻辑图 用与门、或门、非门等实现表达式

例如某微操作在三类情况中出现:

1
2
3
FE · T1
IND · T1 · (ADD + STA + LDA + JMP + BAN)
EX · T1 · (ADD + LDA)

则可综合为:

1
T1{FE + IND(ADD + STA + LDA + JMP + BAN) + EX(ADD + LDA)}

这就是硬布线控制器的本质:把“哪些指令在什么阶段、什么节拍需要这个微操作”翻译成布尔表达式,再用组合逻辑电路实现。

特点

方面 硬布线控制器
工作原理 微操作控制信号由组合逻辑电路即时产生
速度
规整性 不如微程序控制器规整
扩展性 增加或修改指令较困难,可能要改大量逻辑
常见场景 更适合指令格式规整、指令数量较少的 RISC CPU
Summary

硬布线控制器不是“存一段控制程序”,而是把控制规则直接做成电路。它快,但不容易改。