(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.3 字级的组合电路和HCL整数表达式)

文章目录


线索栏

  1. "字级"与"位级":什么是"字级"组合电路?它与"位级"电路在功能和HCL描述上有何区别?
  2. 字级相等电路:如何用位级电路构建一个64位字相等测试电路?其HCL表达式是什么?这与位级的相等检测电路在描述上有何不同?
  3. 字级多路复用器:字级多路复用器的功能是什么?如何用HCL的"情况表达式"来描述一个2选1字级多路复用器?
  4. HCL情况表达式的关键规则:HCL情况表达式的选择表达式是否要求互斥?多个选择表达式的求值顺序是怎样的?如何指定"默认情况"?
  5. 如何用HCL描述一个从A、B、C三个字中选取最小值的电路(Min3)?
  6. HCL情况表达式在描述多路选择时,其选择表达式可以如何简化?(以四路复用器为例)
  7. 算术/逻辑单元(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情况表达式。

  1. 抽象层次的跃升:字级电路是处理器数据通路的骨干。我们不再关注单个位的门电路,而是将整个字(如64位数据)视为一个原子单元进行传输、比较和选择。HCL的int类型和字级操作符(如==)支持了这一抽象。
  2. HCL情况表达式是控制逻辑的灵魂:它是描述处理器中多路选择器行为的完美工具。其"顺序求值、首次匹配"的规则,既提供了清晰的语义,又允许通过巧妙的排序和简化来优化逻辑表达式(如四路复用器的例子)。
  3. 从多路选择到运算单元:多路复用器是路由数据的核心;ALU是加工数据的核心。两者都是组合电路,但后者执行算术/逻辑变换。理解如何用HCL描述它们(选择与运算),就掌握了描述处理器数据通路关键部件的能力。
  4. 连接ISA与硬件:ALU的设计直接对应ISA定义的算术指令(OPq)。这清楚地展示了指令集规范如何决定硬件功能单元的需求。控制输入(如ADD)将来自后续章节的"控制逻辑",它根据正在执行的指令(如addq)来驱动ALU。

最终启示:字级组合电路和HCL情况表达式构成了处理器数据通路的构建蓝图和描述语言。通过它们,我们可以形式化地定义数据如何在寄存器和功能单元(如ALU)之间流动,以及如何根据控制信号选择正确的路径。这为下一步将所有这些部件组合成一个完整、有序工作的处理器(顺序实现)奠定了坚实的基础。

相关推荐
caimouse4 分钟前
MM 学习笔记 10:页面文件与系统加载器
笔记·学习·reactos
一只小菜鸡..9 分钟前
南京大学 操作系统 (JYY) 学习笔记:Hello, OS World! (程序的机器视角)
java·笔记·学习
三克的油12 分钟前
数据结构-1
数据结构
玖玥拾13 分钟前
Unity 3D 笔记(十五)Unity/C# Socket 网络笔记4
服务器·网络·unity·c#
JackieDYH19 分钟前
WebSocket-不同平台封装-Hooks和使用案例
网络·websocket·网络协议
lazy H1 小时前
从入门到日常开发,一篇文章掌握 Git 核心操作
git·后端·学习·github
克里斯蒂亚诺更新10 小时前
ruoyi角色权限的对应关系
笔记
andxe11 小时前
安科士 AndXe 技术博客:400G QSFP112 SR4 光模块|AI 算力与超算短距互联最优方案
网络·人工智能·光模块·光通信
shiyi.十一12 小时前
第2章:应用层 — 知识要点与架构
网络·计算机网络·架构
a11177612 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习