运河底部部署计算机
速览
某研究团队在运河底部部署了一台计算机,旨在测试极端环境下的可靠性和低功耗性能。该设备通过特殊封装抵御水压和腐蚀,未来可能用于水下监测或边缘计算。此项目展示了计算机在非常规环境中的适应性,为物联网和AI边缘设备提供新思路。
AI 深度解读
背景
1988年,在苏格兰福斯-克莱德运河的淤泥深处,埋藏着一个装有定制硅片的盒子。这个盒子里的处理器几乎在每一个技术判断上都是正确的——它来自一家名为Linn Products的苏格兰高保真音响公司。Linn由Ivor Tiefenbrun于1972年创立,以Sondek LP12黑胶唱机闻名,被许多发烧友视为史上最优秀的唱盘。然而,到了80年代初,Tiefenbrun对工厂使用的软件深感不满,他想要一个系统,让工厂里每一个物理对象(从装配线上的每台唱机到售后维修记录)都有一个对应的软件对象来追踪其历史。于是,Linn在1981年左右雇佣了程序员和格拉斯哥大学计算机科学讲师David Harland,开发了一门面向对象语言LINGO(语法类似Smalltalk与Algol的混合体)。LINGO在VAX上运行得太慢,无法用于自动化。Tiefenbrun的回应是典型的“Tiefenbrun式”:硬件才是问题,不是软件——所以Linn要自己造硬件。
在一次从研讨会回家的火车延误中,Harland和另一位计算机工程师Bruno Beloff在火车上草拟了将原型重新划分为定制芯片的方案,他们将其命名为“Rekursiv”。后来Harland开玩笑说:“Rekursiv是英国铁路的错。”1984年,Tiefenbrun成立了Linn Smart Computing,由他的兄弟Marcus担任总经理,Harland担任技术总监,投入了Linn自己的资金加上英国贸易与工业部大约1000万英镑。LSI Logic负责制造芯片:四片门阵列,采用1.5微米CMOS工艺,每片299个引脚,分别命名为NUMERIK、LOGIK、OBJEKT和KLOK。一家销售Sondek、Ittok和Asak的公司,自然不会给芯片起别的名字。
核心内容
Rekursiv的奇特之处不在于它能运行面向对象程序,而在于程序员(或者编译器)永远看不到一个内存地址。每个对象在创建时携带一个40位的编号,OBJEKT芯片通过哈希页表将编号转换为物理位置,并在硬件层面检查每次访问的类型和边界。数组越界?机器拒绝。伪造引用?机器拒绝。由于只有OBJEKT知道对象实际存放的位置,对象可以在不修改任何引用的情况下自由移动,因此垃圾回收也直接集成在硅片中:一个两空间压缩式收集器,在程序继续执行的同时,将存活对象滑动到DRAM的另一半,执行过程对此毫无察觉。
持久化采用了同样的方式。内存和磁盘是一个统一的对象存储:如果需要的对象不在DRAM中,处理器会在指令执行过程中暂停,等待外部磁盘处理器取回数据,然后仿佛什么都没发生过一样继续执行。由于分页位于指令执行层级之下,一条微码指令可以任意复杂,甚至可以调用自身——这就是名称中“递归”(recursion)的由来。Rekursiv没有固定的指令集;指令集是一个可加载的制品,你可以为机器配备适合自己语言的指令集。Linn提供了C语言指令集,James Lothian微码实现了Prolog指令集,曼彻斯特的一个团队在上面移植了Scheme,阿伯丁大学则移植了持久化语言PS-algol。
Linn声称的性能数字令人瞩目:每2微秒执行一次CONS单元操作,比Symbolics工作站上的Lisp快20倍;Prolog合一(unification)作为单条指令执行。但这些数字来自Linn自己的模拟,发表在《Byte》杂志上(由公司合作提供),从未有人独立复现过。
Rekursiv属于一个受人尊敬的知识传统:70年代,行业共识认为硬件应该迎合语言,缩小所谓的“语义鸿沟”。Intel将其首个32位设计——面向对象的iAPX 432——押注于此,Symbolics则基于微码上的Lisp建立了一个工作站业务。然而,这个传统在Linn下定决心的几乎同一时刻被公开摧毁。1980年,Patterson和Ditzel提出了RISC的主张:编译器只使用复杂指令集的一小部分,复杂性反而惩罚了常见情况,而简单指令加上缓存和优秀编译器能运行得更快。到1984年,伯克利的SOAR项目已经用一颗仅3.5万个晶体管的简单芯片快速运行了Smalltalk(典型的动态面向对象语言)。Rekursiv的核心假设在第一块板卡通电前四年就被公开否定了。
接着是经济因素。从1986年到2003年,劳伦斯利弗莫尔实验室的Eugene Brooks称之为“杀手微处理器攻击”的时期,商品微处理器性能每年提升约52%。Rekursiv花了四年设计。它构想于VAX代表体面性能的时代,而在1988年面世时,面对的是SPARCstation和386,486紧随其后。亲历者Lothian五年后坦率地说:这台机器根本无力与新型工作站抗衡。大约制造了20到30块板卡,大部分送到了大学。没有记录表明其中任何一块曾跑过Linn的生产线——而这正是整个项目的初衷。唯一存留的性能对比显示,一个使用线程化代码的LINGO在Sun-3上运行速度约是Rekursiv板卡的两倍,而后者本应比前者更优越,且设计目的就是运行LINGO。
结局充满格拉斯哥特色。黑色星期一(1987年股市暴跌)挤压了Linn的财务,一次风险投资拯救计划未能完成,最后一根稻草是停车场问题:Linn的送货司机倒车时撞上了Harland的保时捷,Tiefenbrun以事故发生在私人场地为由拒绝支付维修费,Harland辞职。离开时,他把自己积累的硬件和备份介质扔进了福斯-克莱德运河。故事的一个版本是,整个Rekursiv产品线都被扔进了运河——但Harland本人只记得扔了自己的东西。
关键要点
- 核心理念:Rekursiv是一款面向对象的处理器,硬件直接实现内存访问检查、类型边界验证、垃圾回收和持久化对象存储,将软件层面的功能下沉到硅片层面。
- 技术细节:使用40位对象ID,通过哈希页表翻译地址;硬件检查所有访问的边界和类型;两空间压缩垃圾回收器在硅片中实现;内存与磁盘统一为持久对象存储,指令执行可因缺页暂停并恢复。
- 指令集:无固定指令集,可加载微码指令集,支持递归指令(微码自调用),已实现C、Prolog、Scheme和PS-algol指令集。
- 性能声明:Linn声称2微秒完成CONS单元,比Symbolics Lisp机快20倍,但未独立验证。
- 失败原因:RISC架构的兴起(1980年提出)从理论上否定了复杂硬件迎合语言的方向;商品微处理器性能指数级增长(每年52%),使Rekursiv在1988年面世时已落后于SPARCstation和386;财务问题与内部冲突(停车场事件)导致项目终止。
- 最终命运:约20-30块板卡生产,大部分送到大学,从未用于Linn生产线;核心硬件被扔进运河。
- 后续影响:近40年后,Arm的商用硅片实现了Rekursiv的许多思想(如硬件内存标记、安全区等),而当年杀死它的经济因素(专用硬件成本过高)如今已被逆转——因为现在有足够的晶体管和功耗预算来在硬件中实现这些
