首页 > 焦点 > 正文

她本想回到高中继续教数学,却最终开启了一场计算机革命

2026-11-04  ·  阅读:12

1961年,IBM推出了其开发的第一款晶体管超级计算机7030,直到1963年,7030都是世界上最快的超级计算机。IBM当时给这款机器命名为Stretch,即延伸,它也的确延伸了人们对于计算机设计的定义:首次将指令流水线(pipeline)、专用处理等理念软件于超级计算机,如今这些已成为计算机造型的标配。而Harvest(IBM 7950)是IBM为美国国家安全局(National Security Agency,NSA)打造、用于密码破译的专用计算机,搭载在Stretch上运行。

Stretch和Harvest的架构思路类似今天CPU搭配专用加速器:Stretch承担通用计算,密码破译这类专用任务交给协处理器Harvest。Harvest开创了流式处理的先河,让同一套指令作用于海量流动统计结果,属于最早的专用协处理器之一,可以说是现代图形GPU的思想先驱。不过,受冷战背景保密约束,这台表现极强的机器长期隐匿于公众视线之外,据NSA估算,它比同期任何商用计算机快50至200倍;它在NSA服役14年,直至零件破损、无法替代才退役。得益于Fortran的巨大成功,Stretch与Harvest在造型阶段就高度重视编译器,艾伦正是这两台超算编译器的核心外观者。

除了打造编译器,艾伦的另一个任务则是为Harvest开发一门配套的新的高级编程语言——一种更加精简、专门用于做密码破译的语言,这门新语言后来被命名为Alpha。由于密码破译程序主要就是字符串操作,编程人员使用Alpha语言即可精简地表达字符串模式匹配、统计分析等程序,而不必熟悉Harvest的硬件指令。艾伦则是这门新语言设计与开发代表IBM方的主导造型者。

如许多那个年代的大型软件项目一样,Stretch/Harvest的编译器打造目标比较激进,其实并不算成功。班底一开始想开发一套能同时处理三种不同的输入编程语言——Fortran、Alpha和Autocoder(一种类似于COBOL的编程语言)的编译器,并能为Stretch和Harvest这两种不同的硬件生成代码。美国国家气象局是Stretch机器的采购方之一,后面他们发现用Fortran编写的天气预报程序需要运行18个小时才能够做24小时的天气预报。

艾伦在主导Alpha语言开发的阶段,完全不知道这套工具服务支持于NSA的密码破译任务,彼时NSA这个机构对公众都还是秘密。她一直以为合作方是海军船舶局,只是做普通的字符串分析。甲方只提需求,不会透露任务背后真实目的。她其实是在不知情中,为顶级密码分析平台造型编程语言。后来她从报纸上得知合作方有两人叛逃苏联(Martin–Mitchell事件),这才意识到自己参与的是NSA的项目。但即便拥有很高的防护许可,许多具体任务内容也是直到多年后相关资料陆续解密,她才真正了解。

一个学术成果丰硕的夭折项目

Stretch问世两年后,超算大师西摩・克雷(Seymour Cray)设计的CDC 6600横空出世,实力达到Stretch的三倍,一举夺走全球最快超算的头衔。IBM CEO小沃森(Thomas J.Watson Jr.)为此写下著名的CDC 6600备忘录,一场超算军备竞赛正式开启。

实际上早在1961年,也就是Stretch刚刚问世后,IBM便已经在筹划一个雄心勃勃的新项目Project Y,它的目的是比Stretch快100倍!要知道,当时Stretch造型的目标也是比世界上现存的机器都要快100倍!Stretch和Harvest项目收尾后,艾伦和她的同事约翰·科克(John Cocke;1977年图灵奖得主)投入Project Y。这场超算竞速里,约翰・科克主要负责硬件架构外观,而艾伦重点负责软件——让编译器生成高效的代码。与先确定硬件、再打造软件的传统思路不同,他们为这个项目尚未定型的新机器研发了一个硬件模拟器(simulator),编译器生成的方向代码会在模拟器上运行以获取性能统计结果并反馈,队伍据此反复调整、迭代式地开发硬件架构。这种“让编译器参与塑造计算机架构”的理念,后来成为现代高实力处理器造型的重要思想。

1965年,IBM在西海岸的森尼韦尔(Sunnyvale)开设了一个新的实验室,启动了一个名为Advanced Computing Systems(ACS)的新项目。他们要在这里再度建造世界上最快的计算机,Project Y也并入其中。

在硬件外观上,ACS尝试了各种前沿的架构技术手段,包括超标量、分支预测、乱序执行等等,这些工艺也都已成为现代CPU的标配。而整套编译器框架,由艾伦主导。依托软硬件协同设计,她把编译优化抽象成一套独立于硬件、独立于编程语言的通用分析框架。她还发现,面对ACS这种复杂硬件,编译器产出的代码,甚至可以比手工汇编更高效——因为编译器内置硬件知识,能更充分地调度复杂硬件特性。最终,ACS硬件和软件层面都产出大量开创性学术成果。然而令人遗憾的是,这台机器始终没能被制造出来。

ACS项目的终止,和IBM大获成功的System/360商品线直接相关。System/360问世后迅速获得成功,奠定现代计算机很多基础概念,比如软件的兼容性、八比特为一个字节,等等。当时的项目经理、计算机科学家弗雷德里克·布鲁克斯(Frederick Brooks)由此写出了传世之作《人月神话》(The Mythical Man-Month)。艾伦当时也被邀请加入System/360项目,但由于这个项目涉及到IBM在欧洲的诸多分部,需要许多的国际旅行,艾伦便回绝了。后期公司资源倾斜冲突,1969年ACS正式被取消。这是一个悲伤的事件,研究人员各奔东西。艾伦选择留下,并成立了一个新的编译器班底,继续发展在ACS期间研发的技术。

一台从未被造出来的机器,一个被取消的项目,听起来像是失败,但正是在ACS的探索中,艾伦与科克搭建起了现代优化编译器的理论根基。今天编译器领域的许多基本术语,正是在当时他们在论文提出的。1966年,艾伦写出里程碑式的IBM内部技术手段手段报告“Program Optimization”(1969年正式公研发表),文中提出了一种语言独立、机器独立的程序优化框架。也就是说,这套框架不依赖编程语言和具体的计算机,将程序优化从针对特定机器的经验性小贴士,变成了一套通用的理论办法。

1966年艾伦的论文Program Optimization丨图源:IBM

这套理论的地基,正是论文里首次提出的“控制流图”(Control flow graph,CFG)。程序在源文件中表面上是一行行按顺序排列的代码,就像一份写好的操作说明。CFG的方式是说,编译器将代码“读”成一张流程图:一段段连续的步骤是节点(基本块),箭头标出“下一步会走到哪”,判断处分叉、循环处兜圈。艾伦的创见在于,她意识到一旦程序变成了这样一张图,对代码的分析与优化便可以用图算法来表达。举个简单的例子,设计一个图算法来分析如下难题:从入口节点出发,沿着箭头一路走下去,会不会存在某个节点,无论哪条通往出口的路径都不经过它?而这样的节点就是“不可达代码”(unreachable code),程序不会执行这条代码。

本文由News整理发布,仅供参考。

123
评论加载中…

友情链接申请友链

联盟矩阵53