不学无术的笔者,再次野人献曝,简述知名的梦幻处理器,这深入迷雾的探险过程,不仅让各位一窥庐山真面目,更是一段横跨超过半个多世纪光阴的宏大叙事曲与记录计算机工业演进的显微胶卷片。
1960 年代:计算机结构、商业大型主机与超级电脑的诞生
要挑选出一家最能代表计算机工业的商业公司,只要对历史脉络不会太不熟,多半还是会想到那大大的「三个大写英文字母」。不过这家公司也并非在所有领域「叫我第一名」,更多是「后发先至」,因一度领先的竞争者都纷纷成为历史遗迹,所谓「英雄就是比气长」大概就是这回事。
第二代(晶体管)与第三代(集成电路)电脑交错期的1960 年代,可谓计算机工业的曙光期,奠定今日我们对「电脑」的基础认知,包含提升执行效率的指令流水线处理(IBM 7030 ″Stretch″)、让更换电脑也不必替换软件的指令集回溯兼容性(IBM System/360 家族)、高可靠性的商业导向大型主机(IBM System/360 家族)、以浮点运算为主的高性能运算超级电脑(CDC6600)、处理器必备武装Cache 存储器(IBM System/360 Model 85)与构成今日高性能处理器微架构的动态指令排程与乱序指令执行(IBM System/360 Model 91),都是这时期的产物,距今超过60 年。
「兼容性」并非理所当然的天赋人权
不过开始过目「受害者清单」前,得先稍微了解当时市场竞争态势与产品技术概况。
1961 年IBM 可谓统治电脑市场,北美拥有超过三分之二市占率。当年问世的IBM 7030 ″Stretch″,是史上第一台通用的指令流水线化(Pipeline)电脑与IBM 首款「晶体管化(第二代电脑)超级电脑」,利用四级流水线,互相重叠指令撷取、解码和执行得到1.6 倍效能,目标比前代IBM 704 快100 倍,也是昵称「Stretch」(延伸)的由来。
▲ 由Gene Amdahl 操刀的IBM 7030 ″Stretch″(1961 年)是计算机工业史第一台导入指令流水线的电脑。
在那个时代,不同电脑都有自己的独特指令集、专用操作系统与外围设备,意味购入或升级新电脑,就需要整个「砍掉重练」,连程序都要重新编写,极度不便,也严重妨碍电脑普及。
有鉴于此,一年营收25 亿美元(约今日230 亿美元)的IBM,1961 年12 月启动人类史上规模最大的商用产品开发计划(号称仅次登月计划和航天飞机),耗资50 亿美元(约今日的460 亿美元)、雇用6 万多名新员工、新建5 座工厂,历经4 年,1964 年4月7 日推出六种规格的System/360商用大型主机(Mainframe)和超过40 种扩充外围,开启第三代(集成电路)电脑序幕,价格从最低13 万美元一路延伸到最顶规550 万美元,客户可照需要选购不同机种和配件,或更省力全部用「租」的(这是大型主机常见的商用业模式)。
最终到1971 年,包含NASA(美国太空总署)特化机型(曾在登月计划扮演重要角色),总计出现14 个System/360 型号,统一执行相同OS/360 操作系统,共用一致系统外围设备,彻底改变人类对电脑的理解,「兼容性」从此成为计算机工业的「基本价值观」,催生「计算机架构」(Computer Architecture)这象征「指令集向前兼容」的历史性名词,也让开发软件和研发外围,成为具高度获利价值的产业。对客户来说,可视眼前需求选购合用机型,日后升级亦可沿用现有软件与外围,这也是今日司空见惯的常识,但在那遥远的年代,却不是理所当然的「天赋人权」。
值得注意的是,即使System/360 奠基于微码(Microcode)之上的CISC(复杂指令集电脑),但相较后进「同侪」,如DEC VAX 和英特尔x86 / iAPX432,指令编码格式和与定址模式(Addressing Mode)的对应关系,还是较简洁有条理,也让人不得不纳闷这票「后辈」到底在想什么,尤其是英特尔。就笔者印象所及,CISC 指令集唯一能与System/360 媲美者,好像也就只有Motorola 68000 了。
开创计算机结构的System/360,发表后第一个月就卖出超过一千台,之后半个世纪,以System/360 为首的IBM 大型主机产品线,贡献蓝色巨人超过一半利润。最新成员System z 更位居服务器世界顶峰,成为无数金融业核心帐务不可或缺的最可靠心脏。
System/360 主架构师Gene Amdahl(也曾负责IBM 7030)以「Amdahl′s Law」(针对电脑系统某特定元件最佳化,观察能改变多少整体系统效能)闻名于世。当时专案经理Frederick Brooks 事后根据System/360 软件开发经验,写成《人月神话:软件专案管理之道》(The Mythical Man-Month: Essays on Software Engineering),记述人类工程史上里程碑式大型复杂软件系统。美国企管学家Jim Collins 在《从A 到A+》(Good to Great)将IBM System/360 与福特T 型车、波音第一款喷气机波音707 齐名,列为史上最重要的三项企业成就。
源自二战美国海军密码破解团队的CDC 与定义「成功的超级电脑」的CDC6600
称之为「人类历史上最伟大电脑」大概不会有太多人敢反对的System/360,既然如此成功,为何会冒出被腰斩的全新产品?就只因一家1957 年草创时只有30 几个人的小公司CDC(Control Data Corporation)。但这些人来头可不小,神秘且显赫,都是来自二次世界大战期间,美国海军破解德国和日本密码的极机密工程团队,成员含首席架构师、大名鼎鼎的超级电脑大师Seymour Cray。
和System/360同年的9 月,有每秒300 万次浮点运算、足足是IBM 7030 三倍的CDC6600,1969年前都占据最快电脑宝座,销售总数超过100 台,定义了日后人类对「高性能运算」(HPC,High Performance Computing)和「超级电脑」(Super Computer)的观感。少少34 名员工(只有14 名工程师和4 名程序设计师,剩下就是行政打杂看门之类)就能打造出这么高性能的产品,对IBM 高层更是极大的刺激。
CDC6600 之所以如此夸张,不外乎大量采用「超越时代」手段:近似超标量(Superscalar)的多派发指令执行单元,貌似乱序指令执行(Out-Of-Order Execution,OOOE)的记分板(Scoreboard)动态指令排程,神似多线程(Multithreading)的共用外围处理器(Peripheral Processor),RISC(精简指令集电脑)存储器载入/回存(Load / Store)架构、仅有两种运算元定址模式与区区74 个指令,以上种种都使CDC6600 成为RISC 与众多先进处理器高性能技术的起源。
假如要笔者用最短文字描述「大型主机」(Mainframe)和「超级电脑」的差异,唯一可想到的是「前者必须永不停机跑COBOL,后者则要吃奶加速冲FORTRAN」。相信内行人马上就了解笔者想表达的意思。
▲ 透过多达10个指令执行单元、「多线程共享」的外挂辅助处理器(Peripheral Processor)以及在指令执行的过程中可追踪指令间相依性的记分板(Scoreboard)以变相达成某种程度的乱序指令执行,CDC6600 实现前所未见的超高性能,并重打击IBM 高层的信心。
前面提到IBM System/360 以「兼容性」著称,那CDC6600 后面又如何?后继机型CDC7600(原CDC6800)为了避免「牺牲性能」,就仅维持「高级程序语言原代码的可携性」(意思就是重新编译代码),且连操作系统也不同。以今日观点看,为追求性能放弃兼容性看似舍本逐末,但在那个时代却习以为常。
功败垂成的IBM ACS
IBM 原先1961 年启动实验性专案「Project-Y」,目标达IBM 7030 百倍效能,1965 年转为加州ACS-1(Advanced Computer Systems-1)计划,动员超过200 名工程师。但IBM 在1968 年5 月却要求ACS 须兼容System/360,并改名为ACS-360。很明显的,要「兼容CISC 的System/360」并「性能超越『类』RISC 的CDC6600」完全相互矛盾。因此挣扎了一年,IBM 还是在1969 年5 月黯然中止ACS-360,也失去大量研发人员。
但塞翁失马焉知非福,IBM ACS 并非一无所获,不但得到比CDC6600 更多「前RISC」相关技术与诸多创新,更在编译器领域有突破,特别是IBM 首位女性院士、也是第一位得到计算机工业最高荣誉「图灵奖」(Turing Award)的女性Frances Allen,就是ACS 团队的一员,并在IBM 任职长达45 年之久。
划时代的电脑:IBM System/360 Model 91
但这笔者不得不提及划时代的电脑:IBM System/360 Model 91。
▲ 近代高性能处理器微架构必备的乱序指令执行,核心技术「暂存器重新命名」(Register Renaming)背后的灵魂「Tomasulo 演算法」,就是由IBM System/360 Model 91 为起点。上图摄于美国太空总署戈达德太空飞行中心(NASA Goddard Space Flight Center)。
原名Model 92 的Model 91,原先寄望性能可抗衡CDC6600,并有System/360 的指令兼容性。System/360 引入很多崭新观念,包含暂存器重新命名(Register Renaming)的Tomasulo 演算法、动态侦测存储器危障(Memory Hazard)、广义的运算元前馈(Operand Forwarding)机制,讲白话点就是「各位今天眼前看到所有乱序执行就是这样诞生的」,System/360 Model 91 更是第一台使用多通道存储器(Multi-Channel Memory)技术的电脑。
开创大量先进技术的System/360 Model 91,也成为当时最强的整数运算王者,每秒最多可执行1,660万个指令(16.6MIPS),假若不管指令集架构的差异和每个指令的平均工作量,这相当于「1991 年」时钟频率20MHz 的英特尔80486SX 或40MHz 的AMD 80386DX。
不幸的是,设计高复杂度使其较晚上市,且只卖了少少几台(生产总数,据信不超过20 台),市场并不成功,导致第一台有Cache 存储器的Model 85 还卖比较好。至于乡野流传IBM 发挥「简报王」本色,藉由耳语相传不存在的System/360 Model 92「暗示」潜在客户不要急着买CDC6600,乖乖等IBM 新产品的稗官野史,就不在本文讨论范围了。
无论System/360或CDC6600,关键技术和诸多想法都逐渐消失的25 年后,1990 年代再度复活──但仅限西方世界,下一篇文章的结尾会提及冷战时期的苏联。
行文至此,是否各位有股「啊,原来一切的一切,早在半个多世纪前就结束了」之慨?