(学习笔记)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)之间流动,以及如何根据控制信号选择正确的路径。这为下一步将所有这些部件组合成一个完整、有序工作的处理器(顺序实现)奠定了坚实的基础。

相关推荐
发疯幼稚鬼1 小时前
二叉树的广度优先遍历
c语言·数据结构·算法·宽度优先
love在水一方1 小时前
【Voxel-SLAM】Data Structures / 数据结构文档(二)
数据结构·人工智能·机器学习
treesforest1 小时前
IP查询接口调用完全指南:从入门到企业级实战
大数据·网络·安全·网络安全·ip
2301_809049421 小时前
WSL无法打开gui界面时,以及安装东西分两种
学习
Via_Neo1 小时前
乘积最大问题
数据结构·算法
Titan20241 小时前
C++位图学习笔记
c++·笔记·学习
念恒123061 小时前
Python(运算与操作)
python·学习
自我意识的多元宇宙1 小时前
数据结构----插入排序
数据结构·算法·排序算法
im_AMBER1 小时前
Leetcode 162 除了自身以外数组的乘积 | 接雨水
开发语言·javascript·数据结构·算法·leetcode