基于机械连杆和枢轴的可逆计算
机械计算
介绍
随着对“摩尔定律已死”的担忧,人们对非传统计算形式的兴趣日益增长。这包括:
- quantum computing (用于原子模拟和特定的 NP 近似算法)
- analog computing (用于快速且高效但容易出错的计算,例如神经网络推理)
- reversible computing (为了最大程度的能源效率)
人们认为,最高效的计算设备将在可逆计算期间使用很少或不使用熵,并且仅在计算的不可逆部分消耗能量。具体来说,Landauer’s principle 指出,所有非物理可逆的计算操作在室温下至少消耗 \(2.9 \times 10^{21}\) J 的能量(并且随着温度降低而减少)。
我们是否已经达到了理论上的最大效率?还没有。使用一些粗略的计算:
- AMD Ryzen Threadripper 7995WX 具有大约 12 TFLOPS 的 FP32 (单精度) 计算能力 (link)
- 假设每次 FP32 操作有 30 次不可逆计算(来自 Claude),我们每秒有 1014.5 次不可逆计算
- 在 350 W 的功率下,每次不可逆计算大约消耗 \(10^{-12}\) J 的能量,比理论最大效率低约 9 个数量级
即使像 AMD Ryzen Z1 Extreme 或 Apple M4 这样的 CPU 能够将这种效率提高 10 倍(这过于乐观),我们距离达到理论极限还有很长的路要走。
然而,想象不同的计算范例如何运作既有趣又谨慎。这些不同的范例甚至可能在晶体管达到瓶颈之前,在某些领域具有竞争力。我最喜欢的可逆计算方案来自一篇名为 Mechanical Computing Systems Using Only Links and Rotary Joint 的论文。 在其中,他们使用 links 和 rotary joints (铰链) 来构建 图灵完备的计算机。
“Lock”
最基本的元素是一个 “lock”。它由两个可以来回滑动的三角形构成。但是,一旦顶部的三角形被向前推动,它就会阻止底部的三角形被向前推动(反之亦然)。它被称为 “lock”,因为第一个被向前推动的三角形将 “lock out” 另一个。
下面的演示由弹簧和枢轴点制成。 拖动滑块以接合 lock 的顶部和底部。
Top Input:
Bottom Input:
原则上,这些 locks 可以用非常小的比例的物理材料构建。原始论文的作者提供了这个由碳制成的 30 x 30 x 7 nm 的 lock 的示例示意图:
“Balance”
最终,我们的二进制约定是,一个比特的 “1” 线或 “0” 线将始终被启用。balance 有助于实现这一点。 它由两个 locks 和它们前面的一个杠杆组成。在时钟的前沿,它通过尚未启用的 lock 强制进行水平转换。
尝试仅启用两个 locks (顶部或底部) 之一,然后启用时钟。时钟将“流过”尚未被输入启用的 lock:
Top Input:
Bottom Input:
Clock Input:
Bellcrank
我们需要构建 NAND 门 的最后一件事是路由和拆分信号的方法。 事实证明这相对简单:
Input:
NAND 模拟
现在我们准备构建一个 NAND 门,它是一个 “universal gate” (即,您可以使用 NAND 门 实现任何真值表)。我们首先为每个输入使用两个 “wires”。 如果 A
为 TRUE
,则第一个 wire 被向前推动。 如果 A
为 FALSE
,则第二个 wire 被向前推动。 同样,如果 B
为 TRUE
,则第三个 wire 被向前推动,如果 B
为 FALSE
,则第四个 wire 被向前推动。
我们希望在任何计算中始终精确地有两个 wires 被向前推动。 沿着这些输入 wires,我们看到每个单独的 wire 都接合了两个 locks,阻止了时钟的推力流过该路径。 由于有四条路径,我们必须确保在任何时候只有一条路径未锁定。 然后,当时钟到达时,该路径将接收到向前的推力。
Clock tick tock A TRUE FALSE Reset B TRUE FALSE Reset Equation: NAND(NULL, NULL)= NOT(AND(NULL, NULL))= NOT(NULL)= NULL Expected: null Simulated: null
如果您有兴趣了解更多信息,其中一位作者在 CCC Reversible Computing Workshop 上对这篇论文进行了 20 分钟的概述:Ralph Merkle: Molecular Mechanical Computing.
致谢
这受到了论文 Mechanical Computing Systems Using Only Links and Rotary Joint (Ralph C. Merkle, Robert A. Freitas Jr., Tad Hogg, Thomas E. Moore, Matthew S. Moses, James Ryley) 的启发。 非常感谢 “Senior HTML Engineer” Haochen Xu (hcxu@utexas.edu),他努力改进了 NAND 门 演示周围的界面,使其更加直观。