1 历史与发展
1.1 起源背景
1.1.1 丹尼尔·希利斯(Daniel Hillis)与Thinking Machines 公司
连接机(Connection Machine)的构想源自美国计算机科学家丹尼尔·希利斯。1983年,希利斯在麻省理工学院(MIT)攻读博士学位期间提出了这一概念,随后与谢尔曼·罗森菲尔德等人共同创立了Thinking Machines 公司,总部位于马萨诸塞州剑桥市。希利斯深受人工智能与并行计算理念的启发,其博士论文《连接机》成为该项目的理论基础。公司早期获得了天使投资和美国国防部高级研究计划局(DARPA)的支持,旨在将大规模并行的计算愿景商业化。
1.1.2 并行计算的早期探索
20世纪70年代末至80年代初,传统向量超级计算机(如Cray-1)主导了高性能计算领域,但其依赖少数高速向量处理器的架构面临性能瓶颈。与此同时,大规模并行处理(MPP)思想开始萌芽——通过大量简单处理器共同工作来提升吞吐量。伊利诺伊大学的ILLIAC IV项目和加州理工学院的Cosmic Cube等项目验证了细粒度并行可行性。希利斯在此基础上提出了“连接机”概念:将数万个1位处理器通过可编程网络互联,每个处理器配备少量本地内存,以“数据并行”模式高效处理结构化数据。这一理念摆脱了向量机的昂贵门槛,主打低功耗与高并行度。
1.2 主要型号
1.2.1 CM-1(1985)
CM-1是连接机系列的首个商业型号,于1985年发布。其基础配置包含65,536个1位处理器(即64K处理器),每个处理器拥有4 KB内存,通过12维超立方体网络互联。CM-1采用单指令多数据流(SIMD)架构:所有处理器在同一时钟周期内执行同一条指令,但各自操作对应的本地数据。机器外观呈一个巨大的黑色立方体,带有标志性的红色指示灯,用于展示处理器活动状态。CM-1主要面向研究人员,售价约500万美元,首台系统交付给麻省理工学院。
1.2.2 CM-2(1987)
CM-2是CM-1的升级版,于1987年推出,同样采用SIMD架构。改进包括:将处理器数量扩展至128K至256K个,每处理器内存增至8 KB至32 KB;引入32位浮点运算协处理器(Weitek 3132或3164),使机器具备实用科学计算能力。CM-2标配前端主机(通常为Sun或DEC工作站)处理I/O和操作系统交互,连接机本体专注于数据并行计算。该型号在人工智能和科学计算领域取得显著成功,被洛斯阿拉莫斯国家实验室、美国航空航天局(NASA)等机构用于物理模拟和模式识别任务。
1.2.3 CM-5(1991)
CM-5是连接机系列的最后一个型号,于1991年发布,标志着架构的重大转向——从SIMD转变为多指令多数据流(MIMD),并借鉴了新兴的商业微处理器技术。CM-5使用SPARC RISC处理器作为基本计算节点,每个节点包含4个处理器,节点之间通过“胖树”(Fat Tree)网络互连,取代了早期的超立方体拓扑。CM-5可扩展至数千个处理器,支持向量单元加速浮点运算。然而,由于市场竞争加剧和成本控制问题,CM-5未能重现CM-2的商业成功。Thinking Machines 公司于1994年申请破产,连接机系列随之停产。
1.3 商业化与竞争
1.3.1 对比克雷(Cray)系列
连接机的主要竞争对手是克雷研究公司(Cray Research)的向量超级计算机,如Cray X-MP和Cray Y-MP。克雷机器依赖少量强大向量处理器和高速内存带宽,擅长串行或少量并行的复杂计算;而连接机依靠大量简单处理器,擅长数据并行任务。两者在实际应用中各有优势:连接机在图像处理、神经网络、粒子物理模拟中表现突出,而克雷机器在线性代数、流体力学中更高效。随着90年代RISC处理器性能飙升,两者均面临来自集群式超级计算机的冲击。
1.3.2 市场结局与遗产
连接机虽然在技术上开创了MPP新范式,但面临高昂的硬件成本、复杂的编程模型以及1990年代商业微处理器快速发展的三重压力。CM-5的高价和低销量加速了公司的财务困境。1994年,Thinking Machines 公司被Sun微系统公司收购部分资产,剩余部分重组为几家小型公司。尽管如此,连接机的设计理念深刻影响了后续的超级计算机架构,包括IBM Blue Gene、Cray XT系列,以及现代GPU的SIMT(单指令多线程)执行模式。
2 体系结构
2.1 处理器与存储
2.1.1 处理器单元(PE)设计
每个处理器单元(Processing Element,PE)在CM-1/CM-2中是一个1位串行处理器,包含一个ALU(算术逻辑单元)和少量寄存器。PE可以逐位处理整数和逻辑操作,32位整数运算需在软件中分解为32个1位步骤完成。对于浮点运算,CM-2通过外部协处理器(每个PE组共享一个)加速。CM-5则改用完整的32位SPARC处理器,每个节点包含4个处理器,可独立执行指令,体现了从细粒度设计向商品化组件的转变。
2.1.2 本地内存与全局编址
每个PE拥有独立本地内存:CM-1的4 KB、CM-2的8–32 KB、CM-5的每节点32 MB。整个系统通过前端主机提供逻辑上的全局地址空间。编程模型中,数组元素可被映射到不同PE的本地内存中,实现数据并行访问。例如,一个64K元素的向量可均匀分布在64K个PE上,每个PE处理一个元素。这种机制称为“虚拟处理器”模型,允许用户编写代码时忽略实际处理器数量。
2.2 互联网络拓扑
2.2.1 超立方体网络
CM-1和CM-2使用n维超立方体网络互联。每个PE的地址对应一个n位二进制数,任意两个PE之间可通过逐步翻转二进制位进行通信。例如,2^12个PE构成一个12维超立方体,每个节点有12条直接连接通道。这种拓扑的优点是:任何两个节点之间的最大跳数等于维度n,通信效率较高;但扩充节点时需增加维度,导致布线复杂度指数增长。CM-2的最大配置为18维超立方体(262,144个PE)。
2.2.2 胖树(Fat Tree)在CM-5中的应用
CM-5采用胖树拓扑取代超立方体。胖树是一种树形网络,从叶子节点到根节点的信道带宽逐层增加(即“变胖”),从而避免常规树结构中根节点成为瓶颈。CM-5的胖树使用可编程路由器芯片连接处理器节点和I/O子系统。每个节点包含4个SPARC处理器和4个向量单元,通过路由芯片与上层交换机相连。胖树支持任意两个节点之间的点对点通信,并可通过冗余链路实现容错,适合MIMD模式下的不规则通信模式。
2.3 指令与数据并行
2.3.1 SIMD 模式(CM-1/CM-2)
CM-1和CM-2是纯粹的SIMD机器。前端主机(通常为Unix工作站)运行操作系统和编译器,负责将用户程序中的串行部分翻译成标量指令,而将对数组的并行操作广播到所有PE。所有PE同时执行同一条指令,但处理各自内存中的不同数据。这种模式非常适合数据密集、计算规则的应用,如矩阵乘法、图像滤波和神经网络前向传播。然而,若应用中存在大量条件分支,未满足条件的PE必须闲置,从而降低效率。
2.3.2 MIMD 模式(CM-5)
CM-5转向MIMD架构,每个SPARC处理器可独立执行不同指令。这种设计更灵活,允许不同计算节点处理不同子任务,同时保留对数据并行编程模式的支持。程序员可以使用消息传递接口(MPI)或共享内存模型(通过分布式虚拟共享内存库)编写程序。CM-5还有一个“控制网络”用于同步全局操作(如全局归约和广播),兼容SIMD风格的操作。这种混合设计旨在兼顾科学与商业应用,但增加了编程复杂度。
2.4 I/O 与外围子系统
2.4.1 前端主机(Front End)
连接机本身没有完整操作系统,所有用户交互和文件系统操作由前端主机处理。前端主机通常是运行Unix的Sun或DEC工作站,通过高速通道(如HIPPI接口)与连接机连接。用户在前端编写和编译程序,将并行代码加载到连接机阵列,然后启动内核执行。结果数据传回前端后,再输出到磁盘或网络。这种架构简化了连接机主机的软件设计,但也引入了I/O瓶颈:当需要频繁传输大量数据时,前端通道成为限制因素。
2.4.2 数据存储阵列
CM-2和CM-5可选配专用的大容量数据存储系统,例如CM-2的“数据存储阵列”(DataVault),使用磁带或磁盘阵列提供数TB容量,并通过高速I/O通道直接连接至PE阵列。这使得科学模拟的中间结果可以快速存取,而不必每次经过前端主机。此外,CM-5支持由第三方厂商提供的磁盘阵列和并行文件系统,为商用客户提供更灵活的数据管理方案。
3 编程模型与软件生态
3.1 并行语言与编译器
3.1.1 *Lisp(基于Common Lisp的并行扩展)
*Lisp(发音为“Star Lisp”)是面向连接机的主要编程语言之一,由Thinking Machines 公司开发,作为Common Lisp的并行扩展。*Lisp引入了一种称为“parallel-pvar”(并行变量)的数据类型,表示分布在PE上的数组。程序员可使用类似Lisp的操作符(如mapcar、reduce)对并行变量进行整体操作,编译器自动生成SIMD指令。例如,(大:大 + a b) 表示对两个并行变量逐元素相加。*Lisp还支持条件并行执行(*if)和全局归约(*reduce)。该语言被早期用户认为在原型开发中高效,但性能不如C或Fortran版本。
3.1.2 CM Fortran
CM Fortran是Thinking Machines 为科学计算用户提供的Fortran 77扩展,支持数据并行语法,如数组语句和FORALL构造。程序员只需在代码中标注数组分布方式(如“!$CMF 分布 A(BLOCK)”),编译器自动将计算映射到PE阵列。CM Fortran兼容科学计算中广泛使用的Fortran库,使得物理、化学领域的用户能够较容易地移植原有代码。该语言为CM-2和CM-5之间的过渡提供了编程兼容性。
3.1.3 C*(并行C方言)
C*是面向C程序员的并行编程语言,源于Thinking Machines 内部项目。它在C语言基础上增加了一组并行类型和操作符:例如,[双精度] 是一个并行double变量;*pval = [1.0]; 将值1.0分配到所有PE。C*支持动态分配并行数组和全局归约函数。虽然不如*Lisp或CM Fortran流行,但C*为熟悉C语言的开发者提供了低门槛的并行编程入口,并萌发了后来由CUDA和OpenCL倡导的“单程序多数据”(SPMD)风格。
3.2 操作系统与工具
3.2.1 CMOST(Connection Machine Operating System)
CMOST是CM-1/CM-2的操作系统内核,驻留在前端主机中,运行于前端Unix之上。它负责管理PE的启动、加载与调试,提供I/O通道和网络服务。CMOST将用户进程视为“代理”,在PE阵列上创建并执行并行任务。当任务完成,代理将结果返回前端。CMOST不直接在PE上运行,因此PE上的指令流完全由编译器生成,这降低了系统复杂度,但限制了运行时动态调度能力。
3.2.2 调试与性能分析
Thinking Machines 提供了一套调试与性能分析工具。调试器“Paris”(Parallel Instruction Set)允许用户通过前端手动发送指令到PE子集,用于检查特定位置的状态。性能分析器“Viewer”可图形化显示每个PE的活动周期(基于CM-2的红色指示灯),帮助用户识别负载不均衡的热点。尽管工具相对原始,但它们为早期并行程序开发者提供了必要的手段——尤其是当编码*Lisp时,用户需频繁检查数组分布是否合理。
3.3 算法设计范例
3.3.1 矩阵运算与排序
连接机的自然优势之一是矩阵运算。数据并行模式下,矩阵乘法可通过将行与列分布到PE上实现高效执行:例如,每次对一个“超立方”切片的元素进行乘积累加。排序算法如双调排序和奇偶排序被重新设计为超立方体网络上的并行版本,利用通信模式减少数据传输次数。这些算法在CM-2上的表现远超同时代的向量机,但在MIMD的CM-5中,由于通信开销,效率不如SIMD版本。
3.3.2 物理场模拟
在计算物理中,连接机被用于求解偏微分方程(如纳维-斯托克斯方程),方法是将网格点映射到PE上。每个PE负责向其邻居(通过超立方体网络)传送边界值,然后并行执行局部差分计算。CM-2尤其擅长规则网格模拟,因为其通信模式与超立方体拓扑高度匹配。例如,天体物理中为了模拟星系碰撞,研究者将三维空间剖分后分布到PE上,实现大规模粒子-网格方法。
3.3.3 神经网络与感知器
连接机的“连接”之名本身暗示了与神经网络的关联。*Lisp中实现的多层感知器可充分利用数据并行加速:将每个神经元视为一个PE,在矩阵乘法步骤中所有权重更新可并行执行。1987年,Yann LeCun等人使用CM-2训练了立分网络(convolutional network)原型,用于手写数字识别。虽然当时计算资源有限,但连接机证明了大规模并行架构对神经网络训练的价值,成为后来GPU加速的预演。
4 典型应用与影响
4.1 科学研究
4.1.1 星系模拟与流体力学
美国哈佛大学的埃里克·林德(Eric Linde)团队使用CM-2对银河系气体和恒星的形成进行模拟。他们将数十万个气体质点分布到PE上,用超立方体网络处理近距离交互。结果表明,连接机可以在合理时间内模拟覆盖百万年尺度的星系演化。同样在流体力学领域,普林斯顿大学的科研人员用CM-2模拟湍流涡旋,并行计算使每次时间步长缩短到微秒级。
4.1.2 蛋白质折叠与分子动力学
洛斯阿拉莫斯国家实验室使用CM-2运行分子动力学程序,模拟小蛋白质在水中折叠。通过将每个原子的受力计算分配给不同PE,连接机可同时更新所有原子的位置。尽管问题规模受限于内存(每个PE只有8 KB),该工作证实了连接机在计算化学中的可行性,并为后来的大型分子动力学软件(如NAMD)奠定了基础。
4.2 人工智能与认知科学
4.2.1 视觉模式识别
连接机在处理二维或三维图像时具有天然优势:图像像素可均匀分布到PE上,同时进行滤波、边缘检测和特征提取。一批早期的卷积神经网络实验在CM-2上运行,用于识别字母和简单形状。虽然准确率受限于网络深度,但实验展示了“学习”能力可大幅降低手工特征工程的需求。
4.2.2 符号处理与连接主义
连接机在符号处理领域的贡献颇为有趣:SYMBOLICS公司曾用它来加速Lisp符号表达式求值。但更引人注目的是连接主义(神经网络)应用:1989年,杰弗里·辛顿(Geoffrey Hinton)在CM-2上训练了受限玻尔兹曼机,用于学习手写数字。虽然当时网络规模小,但连接机的广泛并行性允许他尝试更复杂的拓扑结构。
4.3 商业与军事用途
4.3.1 遥感图像分析
美国军方和情报机构使用CM-2分析卫星图像。对于多光谱图像,每像素对应多个波段的数据,连接机可同时对整幅图像进行变换(如傅里叶变换、纹理分析),从而快速识别目标或地形特征。洛克希德·马丁公司曾将CM-2集成到地形匹配导航系统中,验证了其速度优势。
4.3.2 信号处理
在波束成形和雷达信号处理方面,连接机可并行处理多通道数据。例如,海军研究实验室将CM-2用于声呐数据过滤,通过将时间序列数据映射到PE上,实现实时快速傅里叶变换(FFT)。这一应用推动了连接机在国防承包商中的销售,但冷却和可靠性问题限制了其在野战环境中的部署。
4.4 对后续架构的启示
4.4.1 现代GPU与数据并行
连接机的核心思想——大量简单处理器执行相同指令处理不同数据——如今已成为图形处理器(GPU)的基石。例如NVIDIA的CUDA架构将数千个CUDA核心组织为SIMT(单指令多线程)流处理器,本质上与连接机的SIMD模式一脉相承。区别在于,现代GPU每个核心功能完整,内存更大,且支持线程级动态分支。
4.4.2 众核(Many-Core)处理器
IBM Blue Gene系列超级计算机(如Blue Gene/L、Blue Gene/Q)的“双核芯片”设计,将数千个低功耗PowerPC核心通过树形网络互联,直接继承了连接机的“大规模、简单核心”思路。同样,Intel的Xeon Phi协处理器采用众核架构,每个核心支持SIMD向量单元,也可追溯到连接机对高并行度、低功耗系统的探索。
5 文化与社会影响
5.1 科幻与大众文化中的连接机
5.1.1 《哥德尔、埃舍尔、巴赫》与思想实验
丹尼尔·希利斯的博士导师道格拉斯·霍夫施塔特(Douglas Hofstadter)在其普利策奖获奖作品《哥德尔、埃舍尔、巴赫》中提及了连接机背后的哲学:将计算视为并行涌现的产物。书中将连接机比喻为“蚁群”,个体简单,整体智能——这一思想实验后来被许多讨论集群智能和人工意识的著作引用。
5.1.2 电影《侏罗纪公园》中的提及
在迈克尔·克莱顿(Michael Crichton)的小说和电影《侏罗纪公园》中,角色们使用一台名为“Connection Machine”的超级计算机进行基因组分析和恐龙孵化模拟。虽然电影中实际出现的机器是装有Think Machines 标志的机柜,但技术顾问正是Thinking Machines 的工程师。此外,一些科幻剧集(如《星际迷航:下一代》)中出现的“全息甲板”计算机界面,也借鉴了连接机的红色指示灯阵列风格。
5.2 技术社区与开源精神
5.2.1 连接机模拟器与复古计算
随着连接机物理系统的消亡,爱好者与研究者开发了多种模拟器,如“CM2 Simulator”(基于Java)和“cm-sim”(基于Python)。这些工具允许现代用户运行*Lisp或C*程序,体验数据并行编程的初代风貌。复古计算社区也组织了线上“连接机日”,重现CM-2的红色灯光闪烁,向早期并行计算的冒险精神致敬。
5.2.2 对编程教育的长远影响
连接机的编程模型——将问题分解为大量独立数据片并通过并行操作解决——被许多入门教材用作“数据并行思维”的案例。特别是*Lisp中的“并行变量”概念,启发了后来CUDA中的“全局内存”和OpenCL中的“NDRange”。一些计算机科学课程仍会在讲授多核编程时提及连接机,以强调“简单处理器数量”而非“单核频率”才是并行加速的关键。