处理器微结构史话

开发
这是经过小幅修改扩充的版本,刊登在中科院计算所计算机体系结构国家重点实验室的内刊《体系结构国重快讯》上,与《弯曲评论》上已刊登的版本小有不同,带来阅读不便表示抱歉。

【注:这是经过小幅修改扩充的版本,刊登在中科院计算所计算机体系结构国家重点实验室的内刊《体系结构国重快讯》上,与《弯曲评论》上已刊登的版本小有不同,带来阅读不便表示抱歉。】

1945 年8月6日与9日,广岛和长崎两座日本本土城市先后在惊天动地的原子弹爆炸中被毁灭,核武器由此首次步入公众视野。全世界都被那两朵巨大蘑菇云的威力所震 慑。这两道重击也直接摧毁了日本最后的抵抗意志,一周后的8月15日,日本宣布无条件投降,在人类历史上写下最惨痛一页的第二次世界大战终于结束。核武器 横绝古今沛然莫御的威力,使得它成为战后制衡国际局势的一大王牌,对它的研究和制造在战后仍然未曾停息。而我们这一系列连载故事的主角,盈盈栖息于指尖之 上,不过毫厘见方的微型处理器,和这两朵摧枯拉朽的蘑菇云其实有着千丝万缕的联系。

[[119593]]  

(图注:两次原子弹爆炸的照片,来自维基百科。)

 

半 年过后的1946年2月14日,战时处于严格保密状态的第一台通用电子计算机ENIAC,首度被公之于众。这台27吨重的庞然大物原先被设计用于加快火力 弹道计算,但它新颖的设计架构和全新的构造方式迅速吸引了战时核武器研发中心——美国洛斯·阿拉莫斯国家实验室的注意。

由“原子弹之父”罗伯特·奥本海姆坐镇主管的洛斯·阿拉莫斯实验室早在1943年左右就开始尝试使用人力搭配计算器的方法对核武器进行理论分析。然而洛斯·阿拉莫斯实验室很 快就发现这种工作模式完全不能胜任对计算能力的需求,于是转向了半自动化的穿孔卡带式计算器,可惜这种基于穿孔卡带的计算操作也极其繁琐,与先前的人力计 算相比只是半斤对八两的区别。当时正在洛斯·阿拉莫斯实验室参与核武器研发的著名物理学家费曼曾提议,在人力计算组和半自动化的穿孔卡带组之间进行一次计 算速度比赛,结果两组人马在前两天时间里难分伯仲,第三天时人力计算组开始疲惫缠身,而机器仍不知休止,于是才告胜出。当洛斯·阿拉莫斯实验室转向氢弹的 设计分析时,计算能力的不足变成了更大的瓶颈。核武器的设计完全不同于以往的任何一项军事工程研究,进行一次核试验就要承担铺天盖地的政治压力和足可断金 裂石的舆论谴责,因此核爆不可随意进行,其次,核爆过程中产生的超高温和超高压几乎没有其他可行手段能够复制,即便能够复制,在这种极端条件下所能使用的 观测手段也寥寥无几,因此试验在绝大多数情况下只能交由计算机进行模拟分析。核爆炸模拟需要科学家们将核爆反应“碎片化”,在空间上将核爆模拟区域切片, 在时间上将核爆过程细分,用远远慢于真实核爆速度的步伐,逐一重现核爆当中各个区域在各个时间点上的状态。这一过程需要极快的计算速度才能让模拟耗时和精 度达到要求,当时的穿孔卡带计算机已经无法满足需要,而具备每秒5000次加减法运算,400次乘除法运算能力的ENIAC进入洛斯·阿拉莫斯实验室的视 野也就是顺理成章的事情了[1]。远高于人力的计算速度使得基于机器模拟的核爆炸研究初露端倪,身为第一台通用电子计算机的ENIAC义不容辞地承担起了 氢弹的研制任务,在计算机体系结构与处理器微结构的开山鼻祖冯·诺依曼的牵头下,测试氢弹设计可行性的程序在战后被提交给ENIAC作为测试程序运行。也 是从这一刻开始起,早期计算机体系结构和处理器微结构的高性能进化便在核武器研发以及其他科学计算的需求浇灌下开出了萌芽。

[[119594]]  

(图注:左侧为John Mauchly,右侧为Presper Eckert,中间是 Gladeon Barnes将军,三人正在审阅ENIAC维护记录。)

与 ENIAC一道,在登台伊始就受到各界瞩目的,还有亲手为ENIAC加冕“第一台通用电子计算机”之耀眼王冠的两位主要设计者John Mauchly和J. Presper Eckert。在ENIAC项目上马前,John Mauchly还在宾夕法尼亚大学进行短期进修,担忧着自己的教职申请能否通过,另一位J. Presper Eckert当时则正在宾大读研,大概谁也没有想到,波及人类社会每一个角落的数字化革命竟是由这两位原本无足轻重的人物揭开了序幕,对电子计算设备的狂 热令年龄差距十二岁的两人一见如故,从此成为终生战友,上天的垂青令这对天才搭档只花了四五年时间就由籍籍无名而声名鹊起。ENIAC的存在解密之 后,John Mauchly和J. Presper Eckert迅速成为光芒耀眼的学术超新星。在日后载入史册的宾夕法尼亚大学摩尔系列讲座中[2],这两位俨然大师风范,担当了大约三分之一课程的讲授工 作,而讲台下的学生,则是包括信息论之父Claude E. Shannon在内的一批顶尖科学家与工程师,其地位显赫可见一斑。可惜的是,宾大当时的主事者对校内科研接受外部公司的研究资助一事感到担忧,竟试图逼 迫二人签署新的专利协议,将ENIAC的专利交予学校之手,这一不可原谅的愚蠢举动最终成为将二人逼离宾大的导火索[3]。

[[119595]]  

(图注:John Mauchly在宾大电子工程学院的教室中。图片来源于Mauchly的妻子所撰写的回忆。)

曾 经是ENIAC诞生温床的大学校园,此时却成为逼迫John Mauchly和J. Presper Eckert背水一战的修罗场。没有深思熟虑的商业计划,二人于1946年匆忙下海创办了Eckert–Mauchly Computer Corporation (EMCC) 公司。久居象牙塔的学者与商战中搏杀的豪雄毕竟不同,EMCC不出意外地命途多舛,在缺乏资金,经营不善以及厄运连连[4]中挣扎了三年后,这家事后被追 认为是第一个专门售卖通用电子计算机的公司,没能完成任何一次成功的商业的尝试就被Remington Rand公司收购,成为了Remington Rand集团中负责开发新一代计算机的UNIVAC部门。随着这次收购,John Mauchly和J. Presper Eckert这两面大旗也被Remington Rand一同招安。

在新东家的资助下,没过多长时间,UNIVAC团队的通用电子计算机商 业化尝试就开始开花结果,在EMCC进行的前期工作得到Remington Rand的助力后破茧成蝶,一台被称为UNIVAC I型的里程碑式计算机于50年代初横空出世,作出了通用电子计算机在商业舞台上的首秀,它运行的程序成功预测了次年美国总统大选结果[5],这次事件令 UNIVAC I一炮而红,为新东家做了一个极好的广告宣传,也为John Mauchly和J. Presper Eckert已经大红大紫的名声再度锦上添花。起初定价仅有16万美元的UNIVAC I供不应求,以至于后来价格抬升了几乎十倍。

[[119596]]  

(图注:Eckert正在向CBS的新闻节目主持人介绍UNIVAC I. 坐在控制台前的是一位名叫 Harold Sweeney的程序员。)

但,历史不会让这两位已经享受了诸多殊荣的传奇人物专美于前。处理器微结构的史诗刚刚开端就迎来了第一个拐点。

Remington Rand收购EMCC之后数月,一只来自明尼苏达州圣保罗市的团队也被Remington Rand收编,与UNIVAC团队形成双雄鼎立之势。这支团队名为Engineering Research Associates,其骨干成员以William C. Norris为代表,是一批来自二战时期美国海军密码破译团队的科学家和工程师,ERA创立过程中甚至得到过时任美国海军元帅Nimitz的出面帮助,来 头不可轻视。一山难容二虎,ERA与UNIVAC两支团队在公司内部形成了公开的竞争关系,UNIVAC的成员们以Mauchly和Eckert为代表, 出身于世人瞩目的常春藤盟校,是典型的学院派,ERA的成员们则大多来自稍显平庸的明尼苏达大学,身为ERA领导者之一的Norris在内布拉斯加大学电 子工程专业毕业后,甚至曾一度在老家农场卖牲口[6]。这些人普遍没有接受过最顶尖的教育,但是在为海军与ERA工作期间获取了大量的工程经验,是典型的 工程师队伍。两支团队在出身上的巨大反差令UNIVAC充满优越感,UNIVAC团队不以为意地以“工厂”“农夫们”这样的词汇来指代ERA团队,似乎在 UNIVAC的眼中,宾夕法尼亚人的工作就是探索最前沿的理论,至于建造实际可工作的机器,则应该交给更低等的明尼苏达人。Eckert曾非常直白而粗鲁 地对Norris说:ERA完全不具备创新能力[7]。种种蔑视令ERA的成员们感到异常窝火。然而站在ERA的角度上看,UNIVAC浑身上下也没几处 顺眼。ERA团队虽为Eckert精湛的学识感到惊艳,但同时也震惊于UNIVAC团队对工程规则的无知。在ERA团队设计的1103型计算机接近完成 时,Eckert仍然在尝试说服工程师们引入新的理论,这让ERA团队感到震惊,难道UNIVAC团队进行工程设计的时候完全不顾deadline的么? 骇人听闻的是,他们竟然真没看走眼。通用电气公司向Remington Rand订购了一台UNIVAC I计算机,并筹划了与之配套的一系列媒体报道来造势,试图证明自己是一个追逐前沿技术,位于浪潮之巅的公司。不想UNIVAC团队一再更改设计,把本该在 两周内交付的输入输出设备拖延了两年之久,令通用电气大发雷霆。过度苛求设计完美,忽视工程Deadline,还只是问题的一部分。未经历过残酷市场竞争 的UNIVAC团队对报价与预算毫无概念,UNIVAC的研发超支达到近乎荒唐的五倍之多,而UNIVAC I计算机极其低劣的运作可靠性也与ENIAC一脉相承。Norris终于发现,两支团队的区别其实已经深入到哲学的层面。Norris对宾夕法尼亚人 说:“ERA在经营公司,而你们经营的是实验室”。

除了来自UNIVAC团队的贬低,Remington Rand管理层对通用电子计算机商业前途的迟钝也在消磨着ERA团队的耐心。时至1956年,这个领域里的几乎每一个公司都已经意识到通用电子计算机将是 下一片广阔的蓝海。而原本处于行业领先地位的ERA团队却无法从公司管理层获得足够的研发支持。IBM研发一系列新机器的动作送出了一个明显的信号,这艘 几乎无人可敌的企业巨舰正在朝着这片蓝海开进。Norris等人终于按耐不住了,他们携带一部分ERA团队成员出走,自筹资金在明尼苏达州东南部城市明尼 亚波利市的一间旧仓库里创办了Control Data Corperation,缩写CDC。

[[119597]]  

(图注:八年后的CDC CEO Norris与使用早期CISC体系结构的CDC 3600。图片来源www.computerhistory.org )

开创历史的力量用这种奇妙的方式完成了从Eckert–Mauchly到CDC的转移。

宾 夕法尼亚人做梦也没想到,低等生物明尼苏达人竟然强横到敢于直面IBM的剑锋。卖牲口的Norris卖起电脑来比Mauchly和Eckert实在强出一 筹不止。这个在初期募资时低贱到1美元1股的CDC,一度困难到只能使用次品晶体管作为原材料,却成为Norris手中令IBM俯首称臣、纵横驰骋了整个 60年代的王牌部队。CDC技术团队一手缔造了世界上第一台超级计算机CDC 6600,基于记分板(Scoreboarding)技术第一次实现了指令的乱序执行,第一次大范围地利用多个功能单元实现超标量执行,为今日的现代高性 能处理器微结构绘制了第一份蓝图,迫使IBM的掌门人Thomas J. Watson无可奈何地写下了流传后世的“守门人备忘录”……

而站在Norris身后充当“里子”,创造这些不世传说的人,就是当时ERA团队中一位来自明尼苏达大学的天降奇才。在CDC创立之时想要追随Norris而去的他,还因为担忧美国军方的特别关注而不得不暂留Remington Rand。

[To be continued.]

注释与参考文献 

[1]洛斯·阿拉莫斯实验室能够紧紧跟随着宾夕法尼亚大学、芝加哥大学,哈佛大学等地的早期计算机研究进展,这在很大程度上归功于冯诺依曼的牵线搭桥。据洛斯·阿拉莫斯实验室的成员回忆,冯诺依曼当时为多个政府项目充当顾问,在各个项目之间传递信息,忙碌得“好像在同一时间出现在许多地方”。 

[2]这个系列讲座英文原名Moore School Lectures,它将设计电子计算机的第一手经验传播了出去,对后世带来了深远影响。值得注意的是,这个Moore与Intel的Gordon Earle Moore并无关系。这个“Moore”代表宾夕法尼亚大学的摩尔电子工程学院 Moore School of Electrical Engineering 

[3]根据J. Presper Eckert与Nancy Stern在1977年所做的采访记录, 逼迫二人签订新的专利协议背后似乎并没有抢夺成果用于商业目的的动机,Nancy Stern多次追问这一点,但是Eckert并未给予确认。此外,Eckert在访谈中透露,他并非如外界传闻那样是从宾大主动辞职,而是被炒了鱿鱼,只 不过有一封假装“同意辞退”的礼貌信件用以掩人耳目。 

[4]根据Jean Bartik的回忆,EMCC的员工被指控有“共产主义倾向”,这在麦卡锡主义盛行的年代导致EMCC失去了大批政府订单。 

[5]机器预测选票结果为438 vs 93,实际结果为442 vs 89,相当接近。 

[6]Norris 的经营天赋在卖牲口中得到了很好的体现。Norris在老家农场期间正值美国经济大萧条和中西部旱灾,牲口没有谷物可以吃,收购商则趁机压低牲口价格。 Norris决定冒险,让牲口以俄国蓟(Russian thistles)为食,成功地将牲口养至高价出售。 

[7]"ERA’s creative capabilities simply didn’t exist".出自Charles J. Murray所写的《The Supermen – Story of Seymour Cray and the Technical Wizards Behind the Supercomputer》

转载自:破布的博客

责任编辑:林师授 来源: 破布的博客
相关推荐

2022-06-06 17:40:00

龙芯

2009-03-01 21:30:46

Mac OS X 10Nehalem处理器

2009-07-30 18:48:06

多核六核处理器

2009-07-30 09:08:08

多核处理器英特尔AMD

2023-04-07 07:49:19

PC处理器移动

2015-09-02 14:19:32

英特尔酷睿处理器

2012-02-06 09:34:19

AMD服务器处理器

2024-01-31 08:09:53

预处理器代码C++

2022-05-30 09:01:34

SQL自动化参数

2011-06-30 22:03:17

2021-01-12 05:10:51

处理器AnnotationProcessor

2010-05-04 10:57:08

Intel 32nm

2010-04-06 14:34:27

服务器处理器参数解析

2009-03-31 14:20:38

NehalemXeon处理器英特尔

2012-11-13 15:35:36

AMD服务器处理器阿布扎比

2009-03-17 17:33:14

Nehalem服务器处理器

2011-03-08 10:48:57

服务器CPU性价比

2020-06-22 08:10:27

服务器NUMAMPP

2010-05-26 11:14:10

服务器CPU

2010-03-29 15:08:23

Opteron 600多核处理器AMD
点赞
收藏

51CTO技术栈公众号