文章目录
- 线索栏
- 笔记栏
-
- 1.字级电路与HCL整数表达式
- 2.字级多路复用器与HCL情况表达式
- 3.综合示例与ALU
-
- 1)求最小值电路 (Min3)
- [2)算术/逻辑单元 (ALU) (图4-15)](#2)算术/逻辑单元 (ALU) (图4-15))
- 总结栏
线索栏
- "字级"与"位级":什么是"字级"组合电路?它与"位级"电路在功能和HCL描述上有何区别?
- 字级相等电路:如何用位级电路构建一个64位字相等测试电路?其HCL表达式是什么?这与位级的相等检测电路在描述上有何不同?
- 字级多路复用器:字级多路复用器的功能是什么?如何用HCL的"情况表达式"来描述一个2选1字级多路复用器?
- HCL情况表达式的关键规则:HCL情况表达式的选择表达式是否要求互斥?多个选择表达式的求值顺序是怎样的?如何指定"默认情况"?
- 如何用HCL描述一个从A、B、C三个字中选取最小值的电路(Min3)?
- HCL情况表达式在描述多路选择时,其选择表达式可以如何简化?(以四路复用器为例)
- 算术/逻辑单元(ALU):ALU是什么?它在处理器中的作用是什么?其控制输入、数据输入和输出之间是什么关系?
笔记栏
1.字级电路与HCL整数表达式
1)"字级"概念
处理器处理的数据通常是多位(如4、32、64位)的"字",代表整数、地址等。能对整个数据字进行操作的组合电路即为字级电路。
2)字级相等测试电路(图4-12)

(1)构建:由64个位级相等电路(每个比较A和B的一位)组成,然后将这64个输出连接到一个AND门。只有当所有位都相等时,最终输出才为1。
(2)HCL表达式:bool Eq = (A == B);(A, B 为 int类型)
(3)关键:HCL中,字级比较可以直接使用 ==操作符,无需拆解到位级。这体现了HCL在描述字级操作时的简洁性。
2.字级多路复用器与HCL情况表达式
1)字级多路复用器功能
根据控制信号,从多个输入字中选择一个作为输出。
2)HCL情况表达式
用于描述多路选择逻辑的通用格式。
c
word Out = [
select1 : expr1; // 情况1:如果 select1 为真,则 Out = expr1
select2 : expr2; // 情况2
...
1 : expr_def; // 默认情况:如果之前所有选择都不为真,则 Out = expr_def
];
3)核心规则
(1)选择表达式不需互斥:与C的switch不同,HCL允许多个select表达式同时为真。
(2)顺序求值:选择表达式按书写顺序求值,第一个求值为真的情况被选中,其expr成为输出值。
(3)默认情况:常用 1(表示恒真)作为最后一个选择表达式,确保所有情况都被覆盖。
4)2选1多路复用器(图4-13)的HCL描述

c
word Out = [
s: A; // 若 s=1, 输出 A
1: B; // 否则(默认),输出 B
];
5)4选1多路复用器(图4-14)的HCL描述与简化

c
word Out4 = [
!s1 && !s0: A; # 00 -> A
!s1 : B; # 01 -> B (可简化为 !s1, 因为s1=0且s0=1时,上一行已不匹配)
!s0 : C; # 10 -> C (可简化为 !s0)
1 : D; # 11 -> D (默认)
];
简化原理:由于顺序求值,后续情况的选择表达式可以省略前面情况已覆盖的条件。
3.综合示例与ALU
1)求最小值电路 (Min3)
(1)功能:输入三个字A, B, C,输出其中的最小值。
(2)HCL描述:
c
word Min3 = [
A <= B && A <= C : A; // 如果A同时小于等于B和C,则A是最小值
B <= A && B <= C : B; // 否则,如果B同时小于等于A和C,则B是最小值
1 : C; // 否则,C是最小值
];
(3)练习题4.11

可通过改变比较顺序和逻辑,用三个比较实现相同功能。

(4)练习题4.12


2)算术/逻辑单元 (ALU) (图4-15)

(1)定义:一种重要的组合电路,能在字级数据上执行多种算术/逻辑操作。
(2)抽象模型:有三个输入------两个数据字A和B,一个控制输入(选择操作类型)。根据控制输入,对A和B执行相应操作(如加、减、与、异或),输出结果字。
(3)与Y86-64的关联:图中ALU支持的操作(ADD, SUB, AND, XOR)对应Y86-64指令集的四种整数运算指令(addq, subq, andq, xorq)。注意减法顺序:ALU计算 B - A,以匹配subq指令"从源减去目的"的语义。
总结栏
本节将组合电路的概念从"位级"提升到"字级",并引入了描述复杂多路选择逻辑的核心工具------HCL情况表达式。
- 抽象层次的跃升:字级电路是处理器数据通路的骨干。我们不再关注单个位的门电路,而是将整个字(如64位数据)视为一个原子单元进行传输、比较和选择。HCL的int类型和字级操作符(如==)支持了这一抽象。
- HCL情况表达式是控制逻辑的灵魂:它是描述处理器中多路选择器行为的完美工具。其"顺序求值、首次匹配"的规则,既提供了清晰的语义,又允许通过巧妙的排序和简化来优化逻辑表达式(如四路复用器的例子)。
- 从多路选择到运算单元:多路复用器是路由数据的核心;ALU是加工数据的核心。两者都是组合电路,但后者执行算术/逻辑变换。理解如何用HCL描述它们(选择与运算),就掌握了描述处理器数据通路关键部件的能力。
- 连接ISA与硬件:ALU的设计直接对应ISA定义的算术指令(OPq)。这清楚地展示了指令集规范如何决定硬件功能单元的需求。控制输入(如ADD)将来自后续章节的"控制逻辑",它根据正在执行的指令(如addq)来驱动ALU。
最终启示:字级组合电路和HCL情况表达式构成了处理器数据通路的构建蓝图和描述语言。通过它们,我们可以形式化地定义数据如何在寄存器和功能单元(如ALU)之间流动,以及如何根据控制信号选择正确的路径。这为下一步将所有这些部件组合成一个完整、有序工作的处理器(顺序实现)奠定了坚实的基础。