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

相关推荐
小辰记事本2 小时前
从零读懂RoCEv2数据包构造:从WQE到线缆上的完整旅程
服务器·网络·网络协议·rdma
辰海Coding2 小时前
MiniSpring框架学习笔记-解决循环依赖的简化IoC容器
笔记·学习
晓梦林2 小时前
cp520靶场学习笔记
android·笔记·学习
北京耐用通信3 小时前
全域适配工业场景耐达讯自动化Modbus TCP 转 PROFIBUS 网关轻松实现以太网与现场总线互通
网络·人工智能·网络协议·自动化·信息与通信
在角落发呆3 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
心中有国也有家3 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
玄米乌龙茶1233 小时前
LLM成长笔记(三):API 开发基础
笔记
Upsy-Daisy3 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
绝知此事4 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
LuminousCPP5 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习