[控场AI]
· 4 分钟阅读· 2,227 字

NAND-16:用27万个与非门从零构建一台计算机

NAND-16:用27万个与非门从零构建一台计算机

NAND-16用27万个与非门从零搭建16位计算机,将Nand2Tetris理念推向工程实践极致。

NAND-16 是一台完全由 277,248 个 NAND(与非)门搭建的 16 位计算机,其核心理念源自《计算机系统要素》(Nand2Tetris)课程所倡导的自底向上构建思路。NAND 门因具备「功能完备性」而成为项目的唯一基础单元——仅凭它即可推导出所有布尔逻辑运算,进而层层堆叠出 ALU、寄存器、内存和完整 CPU。27 万门的规模兼顾了复杂性与可理解性:远超早期历史处理器的晶体管当量,但每个部件的行为仍可被完整追踪,不像现代商用芯片那样超出个人掌握范围。该项目的意义不在于性能,而在于将「计算机如何工作」这一问题的答案以可触摸的方式具象呈现,为希望深入理解体系结构的学习者提供了一个极具参考价值的范本。

一个从底层重建的计算机

NAND-16 是一个颇具野心的工程项目:整台计算机完全由 277,248 个 NAND(与非)门搭建而成。这个数字看似庞大,但它背后的理念却相当纯粹——从最基础的逻辑单元出发,逐层堆叠,最终构建出一台可运行的 16 位计算机。

对于熟悉计算机组成原理的人来说,这种自底向上的构建方式并不陌生。它延续了《计算机系统要素》(The Elements of Computing Systems,即著名的 Nand2Tetris 课程)所倡导的思路:一切数字逻辑都可以归约到 NAND 门这一个万能门电路。理论上,仅凭 NAND 门就能表达任何布尔函数,进而构造出算术逻辑单元、寄存器、内存乃至完整的 CPU。

《计算机系统要素》(通常简称 Nand2Tetris)由以色列理工学院的 Noam Nisan 和 Shimon Schocken 编写,并配有同名在线课程。课程的核心理念是让学习者从一个假设的 NAND 门出发,依次构建出逻辑门库、算术逻辑单元(ALU)、CPU、内存系统、汇编器、虚拟机,直到运行一门名为 Jack 的高级语言,完整走完整个计算机系统的抽象层次。这门课程在全球范围内积累了大量自学者和高校采用者,是将「计算机是如何工作的」这一问题系统化呈现的标志性教育资源。NAND-16 可视为在此教育框架之上更进一步的工程探索,将理论上的抽象层次以更大规模、更完整的形式付诸实践。

为什么是 NAND 门

NAND 门在数字电路中具有特殊地位——它是「功能完备」(functionally complete)的逻辑门之一。这意味着单靠 NAND 门就能实现 AND、OR、NOT 等所有基本逻辑运算,无需其他门电路参与。

这种特性使 NAND 门成为教学和实验项目的理想起点。当你只允许自己使用一种门电路时,整个系统的复杂性来源就变得极其透明:每一个更高层次的抽象——无论是加法器、多路选择器还是存储单元——都可以被追溯到具体的 NAND 门组合。NAND-16 用 277,248 个门来实现一台完整机器,正是这种「万物皆可由 NAND 构成」哲学的极致体现。

从物理实现角度看,NAND 门的优势同样突出。在 CMOS 工艺中,NAND 门比等效的 AND 门或 NOR 门所需的晶体管更少、速度更快、功耗更低,这使它成为实际芯片设计中最常用的基本单元之一。功能完备性(functional completeness)的数学证明并不复杂:NOT(A) 可由单输入 NAND 实现(两个输入接同一信号);AND(A,B) = NOT(NAND(A,B));OR(A,B) = NAND(NOT(A), NOT(B))。仅凭这三条推导,所有布尔逻辑都可展开。NOR 门同样具备功能完备性,但 NAND 在工程实践中更为普及,因此成为 Nand2Tetris 等教育项目的首选基础单元。

27 万个门意味着什么

277,248 这个精确的数字本身就透露出项目的严肃性。现代 CPU 动辄包含数十亿个晶体管,相比之下 NAND-16 的规模要小得多,但它的价值不在于性能,而在于可理解性。

一台由 27 万个 NAND 门构成的计算机,其每一个部件的行为都可以被完全追踪。这与商用芯片形成鲜明对比——后者的复杂度早已超出任何个人能够完整掌握的范围。对于希望真正理解「计算机如何工作」的学习者和爱好者而言,这种规模恰到好处:既足够复杂到能运行有意义的程序,又足够简单到可以逐门理解。

若以晶体管数量换算,一个标准 CMOS NAND 门通常由 4 个晶体管构成,277,248 个 NAND 门对应约 110 万个晶体管。作为参考,Intel 4004(1971 年,世界上第一款商用微处理器)包含约 2,300 个晶体管;MOS 6502(1975 年,Apple I 和早期任天堂游戏机所用处理器)约含 3,510 个晶体管。NAND-16 的晶体管当量已远超这些历史性芯片,说明它并非一个玩具级别的演示,而是具备一定工程深度的完整实现。当然,这些早期商用芯片经过了精心的物理设计优化,而 NAND-16 若以离散元件或 FPGA 实现,则在面积与功耗上无法与之相比,两者的价值取向本就不同。

从教育项目到工程实践

这类项目的意义往往超出其技术本身。构建一台完全由基础逻辑门组成的计算机,是一种深度的学习方式:你不再把 CPU、内存、指令集当作黑盒,而是亲手把它们从最原始的材料中锻造出来。

从社区反馈来看(该项目在 Hacker News 上引发了讨论),这类硬核底层项目始终能吸引一批技术爱好者。它们提醒我们,看似神秘的现代计算设备,本质上都建立在极其简单、可被完全理解的逻辑单元之上。NAND-16 正是把这条从「与非门」到「完整计算机」的路径具象化呈现出来的一次尝试。

值得关注的启示

对于想要深入理解计算机体系结构的人,NAND-16 提供了一个可参考的范本。它印证了一个经典观点:复杂系统可以由极其简单的组件按规则组合而成。理解这一点,比记住任何具体的芯片参数都更有长远价值。

需要说明的是,目前公开的信息较为有限,关于 NAND-16 的具体实现细节、指令集架构、时钟频率以及是否有配套仿真环境等问题,仍需查阅项目原始资料才能获得完整答案。

分享:

相关推荐