L1·

基础逻辑门

Elementary Logic Gates

核心抽象布尔运算

从 NAND 门开始,构建所有逻辑运算的基石。

深入理解 基础逻辑门

核心概念:逻辑门是数字电路的基本构建单元。五种基本门(NOT、AND、OR、NAND、XOR)通过组合可以构建任意复杂的数字系统。NAND 门被称为万能门——仅用 NAND 就能实现 NOT、AND、OR 以及任何其他逻辑功能。真值表精确定义每种门的输入输出关系,布尔代数提供推理和优化工具。从 NAND 门出发,可以一步步构建出半加器、ALU、CPU,直到一台完整的计算机。Nand2Tetris 课程就是这么做的。理解逻辑门,就是理解计算机最底层的语言。

学习要点:在这一层,你需要掌握的核心知识包括:基本概念的定义和原理、关键组件的工作机制、常见的性能指标和优化方法、以及实际工程中的最佳实践。我们提供了详细的 What/Why/How 三问结构,帮助你从多个角度深入理解每一个概念。同时,配套的交互沙盒让你能够亲手操作,验证你的理解。

实践意义:理解这一层的知识,不仅能帮助你写出更好的代码,还能让你在遇到性能问题、调试复杂 bug、设计系统架构时,做出更明智的决策。每一层的抽象都不是凭空产生的,它们都是为了解决特定的工程问题而演化出来的。理解了这些问题的本质,你就能更好地运用这些抽象。

学习进度:
?
是什么
本质定义
CPU
逻辑门是数字电路的基本构建单元,执行布尔运算。每个逻辑门由一个或多个晶体管组成,通过电信号的高低电平(1 和 0)实现逻辑功能。理解逻辑门是进入计算机科学的第一道门——从这里开始,你将看到物理世界的电信号如何一步步变成抽象的数学运算。
## 五种基本逻辑门
GPU
GPU 由数百亿个晶体管构成(H100: 800 亿,B200: 2080 亿),每个 CUDA 核心包含数千个逻辑门。GPU 的逻辑门规模远超 CPU,但每个门的控制逻辑更简单,专注于并行计算。这种设计哲学使 GPU 在 AI 训练和推理中能提供比 CPU 高 10-100 倍的吞吐量。
!
为什么
第一性原理
CPU
所有计算最终都归结为逻辑运算。无论你写的是 Python、Java 还是 C++,无论程序多么复杂,最终都会被编译器翻译成一系列逻辑门的开关动作。理解逻辑门,就是理解计算机最底层的'语言'。
## 为什么从逻辑门开始?
GPU
GPU 的逻辑门设计追求高吞吐量和并行性,而非低延迟和复杂控制。CPU 的每个核心有复杂的分支预测、乱序执行、缓存层次结构;GPU 的每个 CUDA 核心则更简单直接——数千个简单核心同时工作,用数量换性能。这种设计哲学使 GPU 在 AI 训练和推理中能提供比 CPU 高 10-100 倍的性能。
怎么做
工程实践
CPU
作为程序员,你在日常工作中很少直接操作逻辑门,但你一直在使用逻辑门的抽象。理解这些抽象的底层实现,能帮你写出更高效的代码,做出更好的工程决策。
## 程序员如何接触逻辑门
GPU
GPU 编程通过 CUDA/OpenCL 框架进行。程序员编写核函数(Kernel),由 GPU 的数千个核心并行执行。关键挑战:避免分支分歧(warp divergence)——当一个 Warp 中的 32 个线程走不同的分支路径时,GPU 必须串行执行所有分支,性能急剧下降。这本质上就是逻辑门层面的控制流问题。

学习建议与实践路径

推荐学习顺序:建议先理解本层的核心概念(What),再深入理解设计动机(Why),最后掌握实践方法(How)。对于初学者,可以先阅读"核心概念"部分的介绍,建立整体认知;对于有经验的开发者,可以直接跳到 Programmer View,关注性能指标和常见陷阱。

动手实践:我们为本层配备了交互沙盒,让你能够亲手操作和验证概念。建议在阅读理论后,立即打开沙盒进行实验。通过调整参数、观察行为变化,你能更深刻地理解抽象概念的本质。沙盒状态可以编码进 URL,方便分享和复现。

关联学习:每一层都不是孤立存在的。建议同时查看"相关层级"部分,了解本层与上下层的关系。理解依赖关系(Bottom-up)能帮你明白本层是如何构建的;理解暴露接口(Top-down)能帮你明白本层为上层提供了什么能力。这种系统性的理解,比单纯记忆概念更有价值。

延伸阅读:在"学习资源"部分,我们推荐了 3 本经典教材、3 个在线学习资源和 3 篇经典论文。这些资源涵盖了从入门到进阶的完整知识体系。建议根据自己的基础和学习目标,选择合适的资源进行深入学习。

Bottom-up:由下层如何构建

每一层抽象都不是凭空产生的,它建立在下层提供的基础之上。理解本层的依赖关系,能帮助你明白这一层的设计动机和约束条件。为什么需要这一层?因为它解决了下层无法解决的问题。它的能力边界在哪里?受限于下层提供的原语。

这是最底层,没有依赖。

Top-down:向上暴露什么接口

每一层抽象都为上层提供了简洁的接口,隐藏了内部的复杂性。理解本层暴露的接口,能帮助你明白上层如何使用这一层的能力。这些接口定义了本层的服务契约——上层可以依赖什么,不能依赖什么。好的接口设计应该:简洁、正交、可组合。

NANDANDORNOTXOR

Programmer View:程序员视角

我能操作吗?

CPU

通过布尔表达式和位运算间接操作。硬件层面通过 HDL(Verilog/VHDL)直接描述。

成本模型

性能指标与资源消耗

指标量级备注
门延迟~10-50 psNOT 最快(~10ps),XOR 最慢(~50ps)
扇入限制通常 ≤ 4 输入更多输入需要多级门,延迟线性增加
扇出上限~10-20 个同类门超过后延迟增加、信号退化
晶体管面积2-20 个晶体管/门NOT 2T, NAND 4T, AND 6T, XOR ~20T
静态功耗~0 (CMOS)CMOS 门仅在切换时消耗功耗

常见陷阱

实践中需要避免的问题

!竞争与冒险:当多个输入同时变化时,输出可能出现短暂的错误脉冲(glitch)。例如,当 A=1, B=0 时,A·¬A 理论上永远为 0,但由于 NOT 门有延迟,A 变化瞬间可能出现 A·¬A = 1 的毛刺
!扇出限制:一个门的输出驱动太多后续门会导致延迟增加和信号退化。典型 CMOS 门的扇出上限约 10-20 个同类门
!传播延迟累积:多级门级联时,总延迟 = 各级延迟之和。关键路径(最长路径)决定电路的最高工作频率
!功耗与面积权衡:XOR 门需要约 20 个晶体管(AND 只需 4 个),在大规模设计中应尽量减少 XOR 的使用

关键概念详解

核心抽象的意义:布尔运算 是本层的核心抽象。抽象的本质是隐藏复杂性,暴露简洁的接口。每一层抽象都在回答一个问题:如何把下一层的复杂性封装成上一层可以使用的原语?理解这个抽象的边界,是掌握本层知识的关键。

复杂度量级:本层的复杂度量级为 10^0 – 10^2。这个数字代表了什么?它表示这一层需要管理的状态空间大小。从 L1 的 10^0-10^2 到 L7 的 10^20-10^30,每上升一层,复杂度大约膨胀一个数量级。这种指数增长是抽象的代价——每一层都在用复杂度换取上层的使用便利。

与其他层的关系:本层依赖于 无,向上层暴露了 NAND、AND、OR等 接口。理解这些依赖和暴露关系,能帮助你建立系统性的认知框架。

工程实践要点:在实际工程中,本层最常见的性能瓶颈包括:竞争与冒险、扇出限制。理解这些陷阱的成因和解决方案,能帮助你写出更高质量的代码。建议结合 Programmer View 中的成本模型和常见陷阱,深入理解每一个性能指标背后的物理意义。

学习资源

深入学习本层知识,我们精心挑选了以下资源。这些资源涵盖了从入门到进阶的完整知识体系,包括经典教材、在线课程和学术论文。建议根据自己的基础和学习目标,选择合适的资源进行深入学习。

学习建议:先阅读推荐书籍建立系统认知,再通过在线课程加深理解,最后阅读经典论文了解前沿研究。学习过程中,建议结合本层的交互沙盒进行实践,验证理论知识。

推荐书籍(3 本)

Digital Design and Computer Architecture

从数字逻辑到计算机体系结构的完整教材。第 1 章从二进制和逻辑门讲起,配合大量图示和练习题,是入门数字设计的教材。

Code: The Hidden Language of Computer Hardware and Software

《编码》用手电筒和继电器的故事,从零开始讲解逻辑门、二进制、计算机如何工作。非工程背景的读者也能读懂,是理解逻辑门直觉的读物。

Digital Design

数字设计经典教材,系统介绍布尔代数、逻辑门、组合电路和时序电路的设计方法。适合有一定数学基础的读者。

经典论文(3 篇)

A Symbolic Analysis of Relay and Switching Circuits (1938)

香农的硕士论文,被誉为 20 世纪最重要的硕士论文之一。首次证明布尔代数可以用开关电路实现,奠定了整个数字电路设计的理论基础。

The Transistor-Transistor Logic (TTL) Design

TTL 逻辑门设计的开创性论文。TTL 是 1960-1980 年代集成电路逻辑门的标准架构,理解 TTL 有助于理解现代 CMOS 设计的演进。

CMOS Logic Circuit Design

CMOS 逻辑电路设计的经典论文。CMOS 技术以极低的静态功耗实现了可靠的逻辑门,是现代芯片(包括 CPU 和 GPU)的基础工艺。

继续探索抽象阶梯的更多层级