运河底部的计算机
摘要
详细回顾了Rekursiv处理器的历史,这是一款由1980年代苏格兰高保真公司Linn Products研发的定制面向对象CPU,率先实现了硬件内存安全性和持久对象存储。文章指出,这些理念如今已出现在现代ARM CHERI核心中。
<p><a href="https://lobste.rs/s/0mljfd/computer_at_bottom_canal">评论</a></p>
查看缓存全文
缓存时间: 2026/07/20 09:36
# 运河底部的计算机
来源:https://negroniventurestudios.com/2026/07/18/the-computer-at-the-bottom-of-a-canal/
在福斯-克莱德运河(https://en.wikipedia.org/wiki/Forth_and_Clyde_Canal)底部的某处,埋在淤泥中,有一个定制硅片的盒子,它几乎在每一件事上都是正确的。
早在1988年,一家苏格兰高保真音响公司就推出了一款处理器,它在硬件层面检查每一次内存访问的类型和边界,在硅片中对其堆进行垃圾回收,并将内存和磁盘视为一个统一的持久化对象存储。后来的复述往往将其描绘成一种迷人的蠢行——一家制造黑胶唱机的公司却认为冯·诺依曼架构是错的。
但Rekursiv(https://en.wikipedia.org/wiki/Rekursiv)的故事不应仅仅被视为一件奇闻,因为就在它沉入水底近四十年后,它的理念如今正以Arm的生产级硅片形式出货(https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/);同时,当年让它消亡的经济学定律也已被逆转。尽管这么多年过去了,故事的细节主要依赖于亲历者的回忆(https://www.slideshare.net/sebrose/rekursiv),但事实证明,这家高保真公司几乎在每件事上都是对的——只是选错了建造硬件的年代。
## 一家高保真公司造了一台计算机
Linn Products(https://www.linn.co.uk/)是格拉斯哥的一家公司,由Ivor Tiefenbrun(https://en.wikipedia.org/wiki/Ivor_Tiefenbrun)于1972年创立。如果你知道这家公司,那多半是因为Sondek LP12(https://www.linn.co.uk/)——直到今天,它的拥趸仍广泛认为这是有史以来最好的黑胶唱机。
Linn Sondek LP12(https://www.linn.co.uk/uk/turntables/lp12-50)
到八十年代初,Linn 已经在城市南部的 Eaglesham 建起了一座现代化工厂,并依靠两台 VAX-11/750 和两台 11/780 来运营业务。但 Tiefenbrun 开始厌恶他们使用的软件。他想要这样一个系统:工厂里的每个物理对象——小到每台在组装、测试甚至售后过程中移动的黑胶唱机——都有一个对应的软件对象,不断积累其历史记录(Pountain,《Byte》杂志,1988年11月(https://www.academia.edu/5256838/Rekursiv_an_object_oriented_cpu))。
于是大约在1981年,Linn 雇佣了程序员以及格拉斯哥大学计算机科学讲师 David Harland(https://en.wikipedia.org/wiki/David_M._Harland),并构建了一种名为 LINGO(https://erg.abdn.ac.uk/projects/lingo.html)的面向对象语言。LINGO 是一种融合了 Smalltalk 语法和 Algol 语法的语言,不要与另一种 Lingo(https://en.wikipedia.org/wiki/Lingo_(programming_language))编程语言混淆——后者要到八年后才会出现。
``
MICRO$COPYTREE: entf 1 pagebus d=ustack
crtf IDXBADTYPES newtrbr _CONS
incmsp m.sp' newmptr
jf MICRO$COPYTREE ldustk d=pgrorr // CDR 分支
m.fp 1 uaddbr newmptr
readustk
pagebus d=ustack
idx2 newsr newbr loadaddr
idxget nocheck incmsp m.sp' newmptr
jf MICRO$COPYTREE ldustk d=memout // CAR 分支
js RTN$CONS
rtf
``
*用于递归树复制指令的微码。注意该指令调用自身,这对传统 CPU 来说是禁止的(来源:Pountain,1988)。*
LINGO 确实能工作;但在 VAX 上运行时速度太慢,无法实现任何自动化。Tiefenbrun 的反应是纯粹的 Tiefenbrun 风格:问题出在硬件,而不是软件——所以 Linn 要自己造硬件。
在一次研讨会结束后,由于火车晚点被困在回家途中,Harland 和另一位计算机工程师 Bruno Beloff 草拟了将他们的原型重新划分到定制芯片中的方案,他们将这些芯片命名为“Rekursiv”。这就是为什么 Harland 后来开玩笑说:“[Rekursiv 是英国铁路公司的错](https://www.slideshare.net/sebrose/rekursiv)”。
几年后的1984年,Tiefenbrun 成立了 Linn Smart Computing,任命他的兄弟 Marcus 为董事总经理,Harland 为技术总监,并用 Linn 自己的资金加上来自英国贸易和工业部的大约1000万英镑提供资助。
LSI Logic(https://en.wikipedia.org/wiki/LSI_Logic)负责制造这些芯片。四个门阵列,采用1.5微米 CMOS 工艺,每个有299个引脚,分别命名为 NUMERIK、LOGIK、OBJEKT 和 KLOK。一家销售 Sondek、Ittok 和 Asak 的公司,是绝不会给这些芯片起其他名字的。
## 对象直至底层
Rekursiv 的奇特之处并不在于它能运行面向对象程序,而在于——程序员(或者编译器)永远看不到地址。每个对象在创建时携带一个40位的编号,OBJEKT 芯片通过一个哈希分页表将编号转换为物理位置,并在过程中于硬件层面检查每一次访问的类型和边界。运行到数组末尾?机器拒绝。伪造引用?机器拒绝。由于只有 OBJEKT 知道任何对象的实际物理位置,对象可以被自由移动而无需接触引用,因此垃圾回收也被集成到了硅片中:一个双空间压缩收集器,遍历存活对象并将它们滑动到 DRAM 的另一半,而上层的执行则继续,毫不知情。
持久化也是同样的方式。内存和磁盘是一个统一的对象存储,如果所需的对象不在 DRAM 中,处理器只是在中止指令的中间暂停,而外部磁盘处理器将其读取,然后继续执行,仿佛什么都没发生过。由于分页位于指令执行层面之下,一条微编码指令可以任意复杂,甚至可以调用自身。这就是名字中“递归”的含义。根本没有固定的指令集;指令集是一个可加载的产物,你可以为机器配备任何一种适合你语言的指令集。Linn 提供了 C 语言,James Lothian 微编码了一个 Prolog 指令集(https://groups.google.com/g/comp.arch/c/Rb08QH5Jsl0/m/QuwXBHQgF5kJ),曼彻斯特的一个小组将 Scheme 移植到其上,而阿伯丁大学则移植了持久化语言 PS-algol(https://archive.cs.st-andrews.ac.uk/papers/download/ABC+83b.pdf)。我是圣安德鲁斯大学的校友,恰好赶上了那个所谓对(或者如果你愿意看作是不对的)时代。我仍然记得比我想知道的更多关于 PS-algol 的东西。但那是另一回事了。
Linn 声称的数字非常惊人。每两微秒一个 CONS 单元,比 Symbolics 工作站上 Lisp 的速度快二十倍,Prolog 合一作为单条指令。但这些数据来自 Linn 自己的模拟(https://www.academia.edu/5256838/Rekursiv_an_object_oriented_cpu),并在《Byte》杂志(https://en.wikipedia.org/wiki/Byte_(magazine))上在该公司的配合下发表,从未有人独立复现过。
## 杀手微处理器的袭击
Rekursiv 属于一个受人尊敬的知识传统。整个七十年代,行业共识认为硬件应该向上迎合语言,缩小文献中所说的“语义鸿沟”;Intel 在其首个32位设计——面向对象的 iAPX 432(https://dl.acm.org/doi/10.1145/641542.641545)——上正是押注于此,而 Symbolics 则基于微码中的 Lisp 建立了一项工作站业务。
不幸的是,对于 Rekursiv 而言,这一传统几乎在 Linn 承诺投入的同一时刻被公开摧毁。Patterson 和 Ditzel 在1980年提出了 RISC 的论据(https://dl.acm.org/doi/10.1145/641914.641917):编译器只使用复杂指令集的一小部分,复杂性惩罚了常见情况,简单指令加上缓存加上好的编译器能跑得更快。到了1984年,伯克利的 SOAR 项目(https://dl.acm.org/doi/10.1145/800015.808182)已经在只有三万五千个晶体管的简单芯片上快速运行了 Smalltalk——典型的动态面向对象语言。Rekursiv 的核心假设,在第一块电路板通电的四年前就被公开削弱了。
然后,经济学定律降临了。从1986年到2003年,商品微处理器以大约每年52%的速度提升(https://cacm.acm.org/research/a-new-golden-age-for-computer-architecture/),劳伦斯利弗莫尔实验室的 Eugene Brooks 将这一时期称为“杀手微处理器的袭击”(https://www.nytimes.com/1991/05/06/business/the-attack-of-the-killer-micros.html)。Rekursiv 的设计耗时四年。它诞生时,VAX 定义了可敬的性能标准,而到了1988年它面世时,世界已经进入了 SPARCstation 和 386 的时代,486 紧随其后。
在场的 Lothian 在五年后说得非常直白:这台机器根本无法与新的工作站相抗衡(https://groups.google.com/g/comp.arch/c/Rb08QH5Jsl0/m/QuwXBHQgF5kJ)。大约只造了20到30块板子。大部分送给了大学。没有任何记录显示其中一块曾运行过 Linn 的生产线——而这恰恰是当初整件事的初衷。存留下来的唯一一次实地对比,是在 Sun-3 上运行的线程化 LINGO,其速度大约是 Rekursiv 板的两倍——而这块 Rekursiv 板本应比 Sun-3 优越,并且正是为了运行 LINGO 而设计的。
结局带有令人难忘的格拉斯哥风格。黑色星期一(1987年股灾)压缩了 Linn 的财务,一次风险投资拯救从未完成,而压垮骆驼的最后一根稻草是一个停车场。Linn 的一名送货司机倒车时撞上了 Harland 的保时捷,Tiefenbrun 拒绝支付修理费,理由是事故发生在私人场地,于是 Harland 辞职了。
离职途中,他将自己积攒的硬件和备份介质扔进了福斯-克莱德运河。关于整个产品线都被扔进水里的版本更加精彩;但真相也已经足够了。
至少有一块完整的板子逃过一劫,如今安放在约克附近的 Jim Austin 计算机收藏馆(http://www.computermuseum.org.uk/machines/lynn_recursiv.html)中。
与此同时,Linn 将 Numerik 这个名字回收,用在其 CD 系列的 DAC 上——这算是一个不错的墓志铭了。Harland 大约在1995年彻底离开了计算机领域,转而成为最多产的航天史学家之一(https://en.wikipedia.org/wiki/David_M._Harland),著作达数十本。作为一个曾经的宇航员(此处指天文研究者,与太空无关),我只能赞同他的职业转向。
## 每件事都是对的?
但这就是为什么这一切不仅仅是一段历史轶事。因为我认为我们需要认真审视 Rekursiv 的四个核心设计决策,然后看看每一项在今天处于什么位置。
### 硬件内存安全
OBJEKT 检查每次访问的类型和边界,对照的是程序无法伪造的引用。这正是 CHERI(https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/)的工作描述——这是自2010年以来 Robert Watson 及其同事在剑桥大学和 SRI 国际研究所构建的能力架构,其中每个指针都携带硬件强制执行的边界、权限和一个不可伪造的有效性标签。
Arm 将其构建到了2022年在英国“设计安全数字”计划(https://www.ukri.org/what-we-do/browse-our-areas-of-investment-and-support/digital-security-by-design/)下出货的 Morello(https://www.arm.com/architecture/cpu/morello)原型板中,并且至今仍在 Android 手机中出货较精简的内存标签扩展(https://developer.arm.com/documentation/108035/0100/Introduction-to-the-Memory-Tagging-Extension)。
微软安全团队在2020年得出结论(https://github.com/microsoft/MSRC-Security-Research),CHERI 原本可以确定性地缓解其在2019年修复的内存安全漏洞中至少三分之二。将携带类型和边界的对象视为硬件保护的适当单元这一理念,已从异端走向前沿。
### 垃圾回收作为架构关注点
Azul Systems 在2000年代销售 Vega 设备,这是带有硬件读屏障支持的定制多核处理器,旨在使 Java 堆的无暂停垃圾回收(https://dl.acm.org/doi/10.1145/1064979.1064988)变得实用;源自该工作的 C4 收集器(https://dl.acm.org/doi/10.1145/1993478.1993491)如今作为纯软件运行在商品 x86 上。算法存活了下来,定制硅片则留在了身后。
### 单级持久化存储
IBM 在1978年的 System/38 中交付了单级持久化存储,通过 AS/400 沿袭至今,并以 IBM i(https://www.ibm.com/products/ibm-i)的形式存活到今天;Intel 花费数十亿美元试图以 Optane(https://en.wikipedia.org/wiki/3D_XPoint)重新启动这一理念,最终在2022年关闭;同样的野心如今正在向 CXL 内存结构迁移。一个市场不断找到理由想要、却又不愿意为之付费的理念,与一个坏理念是不同的。
### 硅片为工作负载而非通用性而定制
这是最大的设计决策:如今它正是整个行业运作的方式。Hennessy 和 Patterson(https://cacm.acm.org/research/a-new-golden-age-for-computer-architecture/)——这两位最应该为埋葬像 Rekursiv 这样的机器负责的人——在他们获得图灵奖的演讲中论证,既然登纳德缩放定律已死,摩尔定律也奄奄一息(或者更诚实地说,也已经死了),那么领域特定架构才是唯一的前进道路。
谷歌的 TPU(https://dl.acm.org/doi/10.1145/3079856.3080246)、Groq 的确定性流式处理器(https://groq.sa/GroqDocs/TechDoc_Predictability.pdf)、Cerebras 的晶圆级引擎(https://www.cerebras.ai/chip)以及 Etched 的 Transformer ASIC(https://techcrunch.com/2024/06/25/etched-is-building-an-ai-chip-that-only-runs-transformer-models/),都是为良好运行一种计算语言而构建的机器;只不过现在的语言是线性代数,而不是 Smalltalk。
### 四中四
随 Rekursiv 一起沉入运河的每一条架构信念,如今要么在出货、在生产中、在规模上,要么是整个领域宣布的方向。连续四次正确判断,太多了,不能归因于运气。更合理的解读是:中间这近四十年并不是计算的自然状态,而是对一种稀缺性的妥协,而这种稀缺性现在已经消失了。
我在六月发表过一个关于软件而非硅片的类似论点。在文章《一个人的分发版》(https://negroniventurestudios.com/2026/06/09/a-distribution-of-one/)中,我认为定制软件是原始的、正确的安排,五十年的产品化通用软件是由于程序员稀缺的妥协,而人工智能已经结束了这种妥协。
通用商品处理器也是一种妥协,被迫于每年52%的提升曲线——这条曲线使得任何定制架构在到达硅片之前就已经过时。这条曲线已经消失了。妥协也随之而去;而定制化工作负载的硬件——即 Harland 在1984年所建造的东西——正在回归。
## 语义的所在
关于 Rekursiv,通常得出的舒适教训是:不要与商品化曲线对抗。这是事实,但已不再非常有用了,因为这条曲线已经死了。有用的教训更为微妙,当你思考为什么 IBM 在同一时间用相同的理念取得成功时,就能看到这一点。
System/38 拥有 Rekursiv 最核心的承诺:单级存储、按名称而非地址寻址的持久化对象、能力、一切都是对象。它兴旺了几十年,因为 IBM 将这些语义放在了一个虚拟指令集中——即技术无关机器接口(Technology Independent Machine Interface,TIMI)(https://en.wikipedia.org/wiki/IBM_i#Technology_Independent_Machine_Interface_(TIMI))——并将其翻译到下方的任何处理器上。当该平台在1995年迁移到 PowerPC 时,客户应用程序甚至不需要重新编译。Linn 则将这些相同的语义焊接到了四个特定的门阵列中。抽象层至今仍在运行;门阵列只持续了五年。
有趣的是,英国不止一次运行过这个实验,但结果截然不同。
Acorn,另一家英国公司...(原文停顿,但作为翻译应保持原样)
相似文章
Show HN: Reame – 一个随着运行而变快的CPU推理服务器
Reame 是一个基于 llama.cpp 构建的 LLM 推理服务器,通过缓存提示前缀和生成的 n-gram 来优化 CPU 硬件,随着重复使用变得越来越快。它专为廉价硬件设计,如共享 vCPU 和免费套餐,适用于重复性的 AI 工作负载,例如文档提取和批量处理管道。
RAM:被遗忘的历史(2024)
本文探讨了RAM鲜为人知的历史,从早期电子存储形式如继电器开始,在诸如Konrad Zuse的Z3计算机中,突出了RAM约束如何显著影响个人计算的发展。
平坦内存与分段内存:递归本质
本文讨论了x86内存分段的演变,受Unix平坦内存模型影响,并解释CHERI和WebAssembly如何为安全和安保重新引入分段方法,强调了内存细分的递归性质。
采用CHERI实现内存安全与细粒度隔离
David Chisnall 介绍了 CHERI,一种硬件能力架构,通过 ARM Morello、RISC-V 和 CHERIoT 微控制器等 ISA 扩展实现内存安全和细粒度隔离。该演讲强调了实用编程模型对于安全隔离的重要性。
@BenjaminDEKR: 在你的家庭实验室里构建一个功能齐全的计算机处理器... Tanuki将自定义电路板堆叠成一个自制的…
Tanuki通过在家庭实验室中堆叠自定义电路板,构建了一个功能齐全的计算机处理器,并正在其ALU上运行逻辑和数学测试,达到了类似于1980年代早期16位家用计算机的复杂度。