一个五亿美元的专用硬件产业,一年之内被通用工作站替换

Lisp 机是 AI 研究的专用硬件,Symbolics 把符号处理固化进硅片,1985 年注册了历史上第一个 .com 域名。1987 年,通用工作站加可移植 Lisp 在一年内替换了这个约五亿美元的产业。

分享
一个五亿美元的专用硬件产业,一年之内被通用工作站替换

1985 年,MIT 人工智能实验室的机房里摆着一台 Lisp 机,大约有冰箱那么大,由一家叫 Symbolics 的公司制造。

它不是共享的大型机,而是一台个人电脑。机柜正面排着两列指示灯,程序运行时灯光跟着跳动,据说有些程序会特意保留一些纯粹为了闪灯而存在的多余运算。机箱里最小的硬盘是 14 英寸规格。上面运行的操作系统叫 Genera。

这台机器叫 Lisp 机,价格高达数万美元。整个行业的累计装机量大约是 7000 台。买家包括研究机构、国防承包商以及少数几家大企业的 AI 部门。

三年后,这个价值约五亿美元的产业在一年之内被替换掉了。

Symbolics 3620 Lisp 工作站

Symbolics 3620 Lisp 工作站,1983 年出厂,现藏于美国计算机历史博物馆。Photo: Thomas Conté, CC BY-SA 2.0, via Wikimedia Commons

为什么 Lisp 值得为它造一台机器

Symbolics 出自 MIT 人工智能实验室。它只为一件事:更快的运行 Lisp。

这个价钱买的是什么,要从当时的人工智能研究说起。专家系统、符号推理、自动定理证明,这类程序处理的对象是符号,不是数字。一条规则套用另一条规则,一层列表嵌套另一层列表,每一个中间结果都要保留下来,供后面的步骤引用。

这类程序的数据结构是链表。链表里每个结点都存两个指针,而系统在运行时必须随时判断:某个位置存的是指针,还是数值。这个判断叫类型标签检查,每一次读取都要做一次。

在通用处理器上,这两件事都很贵。类型标签检查要靠软件逐次完成;更麻烦的是自动内存回收——Lisp 程序会不断产生新的结点,也会不断废弃旧的结点,系统必须定期把它们清理掉。当时的通用实现每次回收都会停顿几秒到几十秒。对交互式的研究工作来说,这个停顿是无法忍受的。

Lisp 机把这两件事都搬进了硬件。

机器采用标签架构,也就是说,类型标签检查由处理器直接完成,不需要软件介入。数据的基本单位是「标签 + 值」,硬件在每一次取数时就顺带完成了判断。3600 型号的字长是 36 位,后来增加到 40 位以上;通过 CDR 编码,可以把链表结构的存储开销压缩到大约一半。常用的列表操作被写进微码,函数调用的开销最低能压到 20 个时钟周期。

Symbolics 3670 的电路板

Symbolics 3670 Lisp 机的电路板。Photo: Retro-Computing Society of Rhode Island, CC BY-SA 3.0, via Wikimedia Commons

内存回收也一并获得了硬件支持。Lisp 机是分代清扫式垃圾回收最早的商业应用之一,参与者里有 Henry Baker 和 David A. Moon。这种方案把内存分成几代,优先回收新产生的结点,把停顿切成许多很短的小块,程序不再需要停顿几十秒。

这些设计叠加起来的结果是:同一段 Lisp 代码在这台机器上运行的速度,是当时通用机器上难以达到的。这就是它卖几万美元的理由。

MIT 实验室里的那道裂缝

Lisp 机的技术源头在 MIT,版权也握在 MIT 手里。实验室把技术同时授权给了两家公司:Symbolics 和 LMI。

Symbolics 3620 与 LMI Lambda

计算机历史博物馆里的 Symbolics 3620 和 LMI Lambda。Photo: Jason Riedy, CC BY 2.0, via Wikimedia Commons

这个安排后来出了问题。

按 Richard Stallman 的说法,Symbolics 采取的策略使得后续的改进只流向自己,不再流回 LMI。他认为实验室里原本共享代码、共同改进的传统因此被破坏。Symbolics 一方的表述不同,他们认为自己是在试图重新掌握产品的控制权。

两种说法都来自当事人,各自带着各自的立场。可以确定的结果是:MIT 人工智能实验室里那个持续多年的黑客社群走向终结,Stallman 随后发起了 GNU 项目。

这件事的意义不在于谁对谁错。在此之前,实验室里的代码是共享的,任何人的改进都会汇入同一份源码,LMI 和 Symbolics 都能使用。当这条通道被切断之后,剩下的那一方发现,自己在技术上再也追不上。对一个把全部工作建立在共享代码之上的社群来说,这相当于釜底抽薪。Stallman 的应对方式是重新写一套不受任何单一公司控制的系统,这就是自由软件运动的起点。

1987 年,三条路同时收口

Lisp 机的黄金时代在 1987 年结束。那一年,发生了三件事情。

  • Sun 这类公司把通用工作站的性能提升了,价格却便宜得多。
  • Lucid 和 Franz 把 Lisp 做成了可移植版本,同一套代码可以在通用机器上运行。
  • 在桌面这一端,CLIPS 这类工具让很多原本必须买专用硬件才能完成的工作,也能在普通机器上做。
Sun 3/80 工作站

Sun 3/80 工作站。Photo: Lamune at English Wikipedia, Public Domain, via Wikimedia Commons

这三件事之所以致命,在于 Lisp 机的定价逻辑。它卖的是一段速度优势:同一段代码,在它上面比在别处快得多,因此值这个价钱。

可移植 Lisp 出现之后,这段优势的先机消失了。买家发现,自己花几万美元买来的性能,一台通用工作站加一套软件也能达到。问题在于那台通用工作站还在摩尔定律的推进下,每 18 个月性能翻一倍,而且产量越大,单价越低。专用硬件的速度优势本来就不大,在这种追赶下很快被抹平。

于是这个产业的存在前提被一次性取消。后来的复盘里有一句话概括得很准确:一个价值约五亿美元的产业,一年之内就被替换掉了。

公司内部同时出事

外部市场塌方的同时,Symbolics 内部也在散架。

1986 年,董事会聘请 Brian Sear 出任 CEO,他与创始人 Russell Noftsker 之间爆发了内部争斗。结局是两个人先后被解职。

与此同时,支撑公司收入的重要来源之一——即战略防御计划相关的国防投入——正在放缓,DARPA 的资金也随之收缩。而公司此前在加州签下了一份长期租约,在收入下滑时,这笔固定支出立刻变成了沉重的负担。

到 1995 年,Lisp 机的时代正式结束。

这段历史留下了什么

把这段历史直接套到今天的专用 AI 芯片上,属于过度类比,材料无法支持这样的结论。

不过,它确实留下了一组可复用的判断依据。一类专用硬件能不能长期站住,取决于三件事。

第一是通用硬件的产量。产量决定了单位成本下降的速度,也决定了通用方案性能的爬坡速度。Lisp 机输在这里,它面对的竞争对手是整个 PC 和工作站产业的整体规模。

第二是软件栈能否追平。Lucid 和 Franz 把 Lisp 移植到通用机器上,等于填平了专用硬件的最后一层护城河。只要软件能追平,硬件上剩余的那点优势就很难定价。

第三是定制芯片自身的制造经济性。专用芯片的设计和流片成本要摊到多少台机器上,这个数字决定了它在多大程度上是一门可持续的生意。

Symbolics 的故事并没有给出「专用硬件必然失败」的结论。它说明的是另一件事:当通用硬件每 18 个月性能翻一倍,而你的优势必须通过定制才能维持时,你需要在这三条上都站得住,才能撑到下一代产品。