作者简介
甄建勇,高级架构师(某国际大厂),十年以上半导体从业经验。主要研究领域:CPU/GPU/NPU架构与微架构设计。感兴趣领域:经济学、心理学、哲学。
“以铜为鉴,可以正衣冠;以人为鉴,可以明得失;以史为鉴,可以知兴替。”
----唐太宗,《旧唐书·魏徵传》
从事一个领域的研究,首先要了解的就是这个领域的发展历史,“人民群众是历史的创造者”,所以在介绍计算机体系结构的历史的同时,还要重视‘人’的重要作用。
十进制计算机
十进制计算机先于二进制计算机出现,而我觉得,世界上最早的十进制‘计算机’的发源地就是咱们中国,这就是‘算筹’。据拷证,算筹在春秋战国时代应用就已经非常普遍了。算筹计数法中,数字用长度相同的小棍子来表示,如表1所示。
图1 算筹计数法
在《永乐大典》中,数字71824(七万一千八百二十四)的算筹表示方法如图2所示。
图2 算筹表示方法举例
如果说算筹是最早的计算机的话,那么算盘就是便携版的计算机。算盘,确实是一项伟大的发明,以至于现在还有很多人在使用它。算盘和算筹有着紧密的联系,可以说,算盘就是算筹的进一步演化而来的,图3就是算筹和算盘的对应关系。
图3 算筹与算盘
算盘,在计算机的发展史上的使用时间最长,直到清军入关之后,施行一系列闭关锁国的政策,使我中华民族逐渐衰退,经济科技等方面的发展也越来越慢。然而,这个时候,欧洲正式第一次工业革命的前夕,科技经济蠢蠢欲动,在清军入关后不久的1642年,世界上第一台机械式的计算机被法国人帕斯卡造出来了,如图4所示。
图4 帕斯卡与第一台机械式计算机
帕斯卡于1642年设计出了计算机的图纸,连外壳和齿轮用什么样的金属材料都作了认真的选择,同年造出了一台计算机。这是世界上第一台机械式计算机。
帕斯卡的这台计算机可以计算到8位数字,表示数字的齿轮共16个,每个齿轮均分成10个齿,每个齿表示0~9中的一个数,并按大小排列。8个齿轮在上面组成垂直齿轮组,从左到右构成8位读数,分别表示个位数、十位数、百位数……千万位数;另外8个齿轮在下面组成水平齿轮组,从左到右可以进行8位数的加减。
图5 莱布尼茨发明的十进制机械式计算机
帕斯卡的计算机只能用于加减运算,对乘除只能用连加和连减的方法来解决,使用时必须记住加减的次数,很不方便,速度又很慢。这样,这台计算机所能起的作用就很有限了。莱布尼兹深感有必要研制一种真正实用的计算机,减轻人们在计算上的沉重负担。他曾说过:“让一些杰出的人才像奴隶般地把时间浪费在计算上是不值得的。”莱布尼兹的突出成就是他提出了直接计算乘除的计算机的设计思想。他在给一位朋友的信中曾这样写到:“我为制成这种计算机而感到无比幸福,它与帕斯卡的计算机相比有天壤之别,因为我的机器能在瞬时间里完成很大数字的乘除而不必连续加减。”
到目前为止,我们谈到的算筹,算盘,帕斯卡的计算机和莱布尼茨的计算机,都可以认为是机械式的。历史的车轮还要往前走,而且越走越快。从算盘到帕斯卡的计算机出现,经过了一千多年,而从机械式计算机到电子计算机却只用了二百多年。第一台电子计算机的出现要得益于真空管的发明。
俗话说,‘三十年河东,三十年河西’,我们中华民族在计算机的历史长河中处在‘河东’,从真空管(电子管)的发明开始,处在‘河西’的欧洲人和美国人走上了历史舞台。
电子管的历史可溯到灯泡的发明人汤玛斯·爱迪生。1880年某日,他好奇地在灯泡中多放了一个电极,且洒了点箔片,结果发现了奇特的现象:第三极通正电时,箔片毫无反应;但通负电时,箔片随即翻腾漂浮。当时爱迪生不知道此现象的起由,但由于他不经意的发现,这个现象后来被称为爱迪生效应。一直到1901年,欧文·理查森提出定律,说明电子的激发态引起箔片漂浮,后更以此拿到1928年的诺贝尔物理奖。接着约翰·弗莱明在1904年发展出二极管,李·德佛瑞斯特(Lee De Forest)更在1907年作出第一个三极管。
图6就是电子管的工作原理。
图6 电子管的工作原理
人类的欲望是一个无底洞,计算机发展的历史车轮也被推得越转越快。在电子管被发明之后不久的1942年,世界上的第一台电子管计算机就出现了。如图7所示。
图7 第一台电子计算机ENIAC/ABC(不带存储器)
第一台电子计算机叫 ENIAC(电子数字积分计算机的简称,英文全称为 Electronic Numerical Integrator And Computer),它于1946年2月15日界上的第一台计算机诞生在宾西法尼亚大学(Universityof Pennsylvania)。ENIAC采用电子管作为基本电子元件。用了多少个呢?足足有18800个电子管,而每个电子管大约有一个普通家用25瓦灯泡那么大!这样ENIAC就有了约2.44米高、0.91米宽、30.48米长的身躯,体积有67立方米,重达30吨,耗电140千瓦。每秒能进行5000次加法运算(据测算,人最快的运算速度每秒仅 5次加法运算),每秒几次乘法运算。它还能进行平方和立方运算,计算正弦和余弦等三角函数的值及其它一些更复杂的运算。
大多数书上说,美国籍匈牙利裔科学家冯·诺依曼(John Von Neumann , 1903-1957)是电子计算机的发明人,他历来被誉为“电子计算机之父”。但是,冯·诺依曼本人却不认为自己是“电子计算机之父”。美国物理学家、曾在洛斯阿拉莫斯实验室担任过冯·诺依曼助手的弗兰克尔在一封信中这样写道:“许多人都推举冯·诺依曼为‘计算机之父’,然而我确信他本人从来不会促成这个错误。或许,他可以被恰当地称为助产士。但是他曾向我,并且我肯定他也曾向别人坚决强调:如果不考虑巴贝奇、阿达和其他人早先提出的有关概念,计算机的基本概念属于图灵。按照我的看法,冯·诺依曼的基本作用是使世界认识了由图林引入的基本概念。”正是冯·诺依曼本人,亲手把“计算机之父”的桂冠转戴在英国科学家阿兰·图灵(Alan M. Turing ,1912-1954)头上。但是,真正的“计算机之父”既不是冯·诺依曼,也不是阿兰·图灵。
在1973年以前,大多数美国计算机界人士认为,电子计算机发明人是宾夕法尼亚大学莫尔电气工程学院的莫奇利(J. Mauchiy)和埃科特(P.Eckert),因为他们是第一台具有很大实用价值的电子计算机ENIAC的研制者。
现在国际计算机界公认的事实是:第一台电子计算机的真正的发明人是美国的约翰·文森特·阿塔那索夫(John V. Atanasoff ,1903-1995)。他在国际计算机界被称为“电子计算机之父”。遗憾的是,中国计算机界的绝大多数人并不知道这个事实。
关于电子计算机的真正发明人是谁,美国的有关人阿塔那索夫、莫奇利和埃科特曾经打了一场旷日持久的官司,法院开庭审讯135次。最后由美国的一个地方法院做出判决。1973年10月19日,法院当众宣布判决书:“莫奇利和埃科特没有发明第一台计算机,只是利用了阿塔那索夫发明中的构思。”理由是阿塔那索夫早在1941年,就把他对电子计算机的思想告诉过ENIAC的发明人莫奇利。
阿塔那索夫(J. Atanasoft)是爱阿华大学物理学教授。阿塔那索夫是在他的研究生克利福特·贝瑞(Clifford E. Berry ,1818-1963)的帮助下发明电子计算机的。
第一台电子计算机的试验样机于1939年10月开始运转。这台计算机帮助爱阿华大学的教授和研究生们解算了若干复杂的数学方程。阿塔那索夫把这台机器命名为ABC(Atanasoff-Berry-Computer),其中,A、B分别取俩人姓氏的第一个字母,C即“计算机”的首字母。第一台电子计算机诞生以后,阿塔那索夫和贝瑞却没有获得发明者的花环。
在阿塔那索夫和贝瑞离开之前,已有两台改进后的ABC计算机能够运行。这两台ABC计算机被存放在爱阿华大学物理楼的储存室里,逐渐被人遗忘。1946年,由于物质短缺,两台机器都被拆散,零件移作它用,只留下了存储器部件。爱阿华大学没有为ABC计算机申请专利,这就给电子计算机的发明权问题带来了旷日持久的法律纠纷。美国地方法院的裁定是正确的,因为ENIAC的发明者莫契利确实到衣阿华大学参观过ABC计算机,并听了阿塔那索夫的介绍,由此得到启发。
阿塔那索夫于1903年10月4日在美国马里兰州的哈密尔敦出生。他在佛罗里达州渡过了童年。他的父亲是保加利亚侨民,在保加利亚得过最高级别的科学奖,到美国后担任矿山电气工程师。他的母亲是数学教师。阿塔那索夫从小与电气和数学结下不解之缘。
阿塔那索夫于1921年进入佛罗里达大学,选择的专业与父亲相同,也是电气工程。在同学中间,他的数学成绩最好,而且是唯一学习过二进制数运算的人。1925年大学本科毕业,他进入爱阿华大学学习数学。他得到硕士学位后进入威斯康星大学,攻读物理学博士学位。1930年,当阿塔那索夫获得博士学位时,他所学的专业已经横跨了电气、数学和物理。他的广博的知识是他今后发明创造的坚实基础。
在威斯康星大学毕业后,阿塔那索夫返回爱阿华大学当教师。后来,他成为该校物理学教授。
1942年,日本袭击珍珠港,阿塔那索夫和贝瑞主动放下手中的研制计划,转向更紧迫的国防科研项目。1942年底,贝瑞前往洛杉矶参加一项国防承包工程,而阿塔那索夫则去华盛顿一个海军军械实验室工作,研究炸弹引信。从此,两人失去了联系。
第二次世界大战结束后,阿塔那索夫没有返回大学讲坛。他陆续创办过几个军事和民用企业,并担任总裁和技术主管。他一生获得32项发明专利,于1995年6月15日逝世,终年91岁。
克利福特·贝瑞出生在纽约。他在小学时就被同学称为“天才”,以各科全优的成绩高中毕业。他爱好无线电,是当地小有名气的业余发报员。他最大的特点是极强的动手能力,任何东西都做得细致而精巧。他在爱阿华大学所学的专业也是电气工程。他听过阿塔那索夫教授讲的物理课。他一边读书,一边到当地一家电气公司兼任技术员。1939年,他以全班第一的成绩毕业。当阿塔那索夫找贝瑞当研究助手时,贝瑞很高兴地同意了。
贝瑞为使阿塔那索夫构思的电子计算机蓝图变成现实起了很大作用。因此,第一台电子计算机的名称用了他的姓氏的第一个字母,被称为ABC计算机,是恰当的。
二进制计算机
无论是算筹算盘,还是机械式计算机和电子管计算机,都是十进制的,大家都知道,我们今天使用的计算机大都是二进制的。那么,二进制的计算机的由来又是怎么回事呢?这还要从咱们中华民族说起。我认为咱们中国的太极八卦就是世界上二进制使用的鼻祖。
关于太极和八卦,神书《易经》中有如下描述:“易有太极,是生两仪,两仪生四象,四象生八卦。”关于太极,孔颖达疏:“太极谓天地未分之前,元气混而为一,即是太初、太一也。”从中可以看出,太极就是2的0次方,两仪就是2的1次方,四象就是2的2次方,八卦就是2的3次方。太极到八卦的演变如图8所示。
图8 太极到八卦的演变
仔细观察上图,太极分为阴阳两部分,如果把‘阳’,也就是长实线当做数字‘1’,把‘阴’,也就是两条短线当做数字‘0’,我们就会发现,八卦的顺序,从‘坤’开始,到‘乾’结束,正好是,坤‘000’,艮‘001’,坎‘010’,巽‘011’,震‘100’,离‘101’,兑‘110’,乾‘111’。
同样,如果也按这个顺序,将8个数字对称的放在一个圆上,就是一个八卦图了。如图1-8就是伏羲八卦。
图9 伏羲八卦方位
前面说过,在十进制计算机的发展历史中是‘三十年河东,三十年河西’,二进制计算机也不例外。我们中华民族很早就开始使用二进制,但是属于‘河西’的舞台还是到来了。
上面提到第一台电子管计算机ENIAC,这台计算机出现时采用的还是十进制,让研制工作十分幸运的是,当时任弹道研究所顾问、正在参加美国第一颗原子弹研制工作的数学家冯·诺依曼带着原子弹研制(1944年)过程中遇到的大量计算问题,在研制过程中期加入了研制小组。原本的ENIAC存在两个问题,没有存储器且用布线接板进行控制。如果要使用,甚至要搭接几天,计算速度也就被这一工作抵消了。1945年,冯·诺依曼和他的研制小组在共同讨论的基础上,发表了一个全新的“存储程序通用电子计算机方案”,就是著名的EDVAC(ElectronicDiscrete Variable Automatic CompUter),在此过程中他对计算机的许多关键性问题的解决作出了重要贡献,从而保证了现代计算机的顺利问世。
EDVAC,(离散变量自动电子计算机)是一台美国早期电子计算机。与它的前任ENIAC不同,EDVAC采用二进制,而且是一台冯·诺伊曼结构的计算机。
ENIAC和EDVAC的建造者均为宾夕法尼亚大学的电气工程师约翰·莫奇利和普雷斯波·艾克特。1944年8月,EDVAC的建造计划就被提出;在ENIAC充分运行之前,其设计工作就已经开始。和ENIAC一样,EDVAC也是为美国陆军阿伯丁试验场的弹道研究实验室研制。
后来,冯·诺伊曼以技术顾问身份加入,总结和详细说明了EDVAC的逻辑设计,1945年6月发表了一份长达101页的报告,这就是著名的关于EDVAC的报告草案,报告提出的体系结构一直延续至今,即冯·诺伊曼结构。关于101页报告的内容,请参考后面‘参考文献’的相关部分。
图10 101页报告
EDVAC的初步预算为十多万美元,但最终的成本大约超过估计的4倍,约五十万美元。EDVAC使用了大约6000个真空管和12000个二极管,占地45.5平方米,重达7850千克,消耗电力56千瓦。EDVAC是二进制串行计算机,具有加减乘和软件除的功能。一条加法指令约864微秒,乘法指令2900微秒(或2.9毫秒)。 使用延迟线存储器,具有1000个44位(bit)的字。
物理上包括:
一个磁带记录仪
一个连接示波器的控制单元
一个分发单元,用于从控制器和内存接受指令,并分发到其他单元
一个运算单元
一个定时器
使用汞延迟线的存储器单元
EDVAC于1949年8月交付给弹道研究实验室。在发现和解决许多问题之后,直到1951年EDVAC才开始运行,而且局限于基本功能。延迟的原因是因为莫奇利和艾克特从宾夕法尼亚大学离职,开始组建莫奇利-艾克特电子计算机公司并带走了大部分高级工程师,由此与宾夕法尼亚大学产生了专利纠纷。到1960年,EDVAC每天运行超过20小时,平均8小时无差错时间。EDVAC的硬件不断升级,1953年添加穿孔卡片输入输出;1954年添加额外的磁鼓内存;1958年添加浮点运算单元。直到1961年,EDVAC才被BRLESC所取代;在其运行周期里,EDVAC被证明是一台可靠的计算机。
人的欲望是一个无底洞,自从电子管发明之后,人们发现电子管有很多缺点,比如电子管的重量和体积都很大,功耗也很高。人们想克服这些缺点,于是在电子管发明后不久的1947年,重量更轻,体积更小,功耗更低的晶体管被发明了。如图11所示。
图11 点接触晶体管
晶体管,本名半导体三极管。它是内部含有两个PN结,外部通常为三个引出电极的半导体器件,对电信号有放大和开关等作用。晶体管经历了点接触晶体管、结型晶体管到新型晶体管的发展历程。
1947年,美国贝尔实验室的物理学家肖克利(William Shockley,1910-1989)、巴丁(John Bardeen,1908-1991)和布拉顿(Walter Houser Brattain,1902-1987)研制成功世界上第一只晶体管。这是利用两个靠得很近的触须接点制造而成的“点接触型晶体管”,能把音频信号放大100倍。点接触型晶体管存在制造工艺复杂、噪声大、适用范围窄等缺点。为此,肖克利提出用“整流结”来代替金属半导体接点的设想。1950年,基于这一设想的锗结型晶体管问世。此后,各种新型晶体管不断被发明出来,如合金晶体管、漂移晶体管、台面晶体管,平面晶体管、外延晶体管、金属氧化物半导体晶体管、功率晶体管等。
说到晶体管的发明过程,这里还要多说几句。其实世界上第一个晶体管是1947年由肖克利和他的两助手布拉顿、巴丁在贝尔实验室工作时发明的,为此,肖克利三人于1956年获得诺贝尔物理学奖。用晶体管代替电子管制造电脑,在电脑史上是一次突破性技术飞跃。
1945年二战结束后,贝尔实验室迅速批准固体物理学研究项目上马,凯利作为决策者在课题任务书上签署了大名。由肖克利领衔,布拉顿、巴丁等人组成的半导体小组把目光盯住了那些特殊的“矿石”。肖克利首先提出了“场效应”半导体管实验方案。
1947年的圣诞前某一天,贝尔实验室中,布拉顿平稳地用刀片在三角形金箔上划了一道细痕,恰到好处地将顶角一分为二,分别接上导线,随即准确地压进锗晶体表面的选定部位。电流表的指示清晰地显示出,他们得到了一个有放大作用的新电子器件!布拉顿和巴丁兴奋地大喊大叫起来,闻声而至的肖克利也为眼前的奇迹感到格外振奋。布拉顿在笔记本上这样写道:“电压增益100,功率增益40…… 实验演示日期1947年12月23日下午。”作为见证者,肖克利在这本笔记上郑重地签了名。
1948年,美国专利局批准了贝尔实验室这种被命名为晶体管的发明专利。然而,专利书上的发明人只列着布拉顿和巴丁。此后,肖克利一举攻克晶体管中的另一座“堡垒”:他发明了一种“结型晶体管 ”,离布拉顿和巴丁发明“点接触型晶体管”的时间仅隔一年。人们后来知道,结型晶体管才是现代晶体管的正宗始祖,它预示着半导体技术的发展方向。
1948年7月1日,美国《纽约时报》只用了8个句子的篇幅,简短地公开了贝尔实验室发明晶体管的消息。“一石激起千层浪”,它就像颗重磅炸弹,在全世界电子行业“引爆”出强烈的冲击波。电子计算机终于就要大步跨进第二代的门槛!
1954年,贝尔实验室使用800支晶体管组装成功人类有史以来第一台晶体管计算机 TRADIC。如图12所示。
图12 第一台晶体管计算机TRADIC
晶体管可以说是20世纪最伟大的发明之一,是微电子技术革命的先声。与电子管相比,晶体管体积大为缩小,因其低成本、灵活性和可靠性等特点而被广泛应用于通信、广播电视、计算机等电子工业领域,并为后来集成电路的诞生奠定了基础。
晶体管发明并大量生产之后,各式固态半导体组件如二极管、晶体管等大量使用,取代了真空管在电路中的功能与角色。到了20世纪中后期半导体制造技术进步,使得集成电路成为可能。相对于手工组装电路使用个别的分立电子组件,集成电路可以把很大数量的微晶体管集成到一个小芯片,是一个巨大的进步。集成电路的规模生产能力,可靠性,电路设计的模块化方法确保了快速采用标准化IC 代替了设计使用离散晶体管。
IC 对于离散晶体管有两个主要优势:成本和性能。成本低是由于芯片把所有的组件通过照相平版技术,作为一个单位印刷,而不是在一个时间只制作一个晶体管。性能高是由于组件快速开关,消耗更低能量,因为组件很小且彼此靠近。2006年,芯片面积从几平方毫米到几百平方毫米,每平方毫米可以达到一百万个晶体管。
第一个集成电路雏形是由杰克·基尔比于1958年完成的,其中包括一个双极性晶体管,三个电阻和一个电容器。
图13 Jack Kiby
杰克·基尔比(Jack Kilby)是集成电路的两位发明人之一(另一位是罗伯特·诺伊斯),为德州仪器的工程师,其于1958年发明集成电路,我们在学习数字电路的时候经常看到的‘JK触发器器’就是以他的名字命名的。
Jack Kilby是美国物理学家。1923年11月8日生于密苏里州杰裴逊城。1947年获伊利诺大学理学士学位,1950年获威斯康星大学理科硕士学位。1947~1958年任全球联合公司设计负责人。1958~1970年任得克萨斯仪器公司助理副经理。1978年后任得克萨斯A&M大学教授。基尔比在集成电路方面获50项专利。1958年宣布制成第一块集成电路。稍后美国仙童公司的R.N. 诺伊斯也宣称制出第一块集成电路。1966 年研制出第一台袖珍计算器。获巴伦坦奖章、萨尔诺夫奖章、国家科学奖章、兹沃雷金奖章和伊利诺大学迪斯廷校友奖。2000年获得诺贝尔物理学奖。2005年6月20日因癌症在美国德州达拉斯市去世,享年81岁。
集成电路发明以后,其器件规模不断增大,根据一个芯片上集成的微电子器件的数量,集成电路可以分为以下几类:
小规模集成电路
SSI ( Small Scale Integration)逻辑门10个以下 或 晶体管 100个以下。
中规模集成电路
MSI ( Medium Scale Integration)逻辑门11~100个 或 晶体管 101~1k个。
大规模集成电路
LSI ( Large Scale Integration) 逻辑门101~1k个 或 晶体管 1,001~10k个。
超大规模集成电路
VLSI (Very large scale integration)逻辑门1,001~10k个 或 晶体管 10,001~100k个。
甚大规模集成电路
ULSI (Ultra Large Scale Integration)逻辑门10,001~1M个 或 晶体管 100,001~10M个。
GLSI ( Giga Scale Integration)逻辑门1,000,001个以上 或 晶体管10,000,001个以上。
而根据处理信号的不同,可以分为模拟集成电路、数字集成电路、和兼具模拟与数字的混合信号集成电路。
有了集成电路,计算机不再是用整栋大楼存放的巨无霸了,计算机的体积变得越来越小,于是就出现了笔记本电脑-- Osborne 1,如图14所示。
图14 第一台笔记本电脑
这台电脑的配置如下:
上市时间: 1981年4月
价格: 1795美元
重量: 24.5 磅
CPU: Zilog Z80 @ 4.0 MHz
RAM: 64K RAM
显示器: 内置 5吋 显示器 53 X 24 文本
接口: 并口 / IEEE-488 调制解调器/ 串口
存储: 两个 5-1/4英寸的 91K 软驱
操作系统: CP/M
历史的车轮终于走到了今天,计算机变得越来越小,性能变得越来越高,计算机已经变成了我们的日常用品。如yy,就是我写本书时使用的电脑—T430s。
图15 我现在使用的笔记本电脑
我的电脑的配置如下:
屏幕尺寸:14英寸 1366x768
CPU型号:Intel 酷睿i5 3210M
CPU主频:2.5GHz
内存容量:4GB DDR3 1600MHz
硬盘容量:500GB 7200转
显卡芯片:NVIDIA Quadro NVS
操作系统:Windows 7 Home Bas
摄像头:集成摄像头
光驱类型:DVD刻录机 Rambo
无线网卡:Intel 2200 BGN
自此,我们回顾了计算机的发展历史,需要说的是,计算机发展的脚步并没有停下,而是越走越快,计算机的变化也是日新月异,我们需要在这巨变中把握住那些不变的东西,正是本文即将介绍的重点—计算机的体系结构。