本节书摘来自华章出版社《计算机组成原理》一书中的第1章,第1.3节, 作 者 Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著,沈 立 王苏峰 肖晓强 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 计算机的发展

计算机的发展历史丰富而复杂,远比许多人想象得久远。计算机的发展历史告诉我们技术是如何发展的,并使我们理解那些推动计算机发展的力量。今天的计算机是一条受到奇思妙想、商业考量以及良好工程实践共同影响的发展道路的产物。计算机的历史很悠久,并且还将朝着未来走去。

了解计算机的发展历史是非常重要的,因为要想充分利用今天的资源,我们必须了解过去的成功与失败。例如,个人计算机发展中的角色向后兼容就是从计算机发展历程中获得的一条重要经验。向后兼容既指为了使用户能够容易地升级计算机,需要新技术与老技术兼容,也指未来的计算机需要与现有的大量代码兼容。

而且,随着技术的进步,一些已经出现在过去却只有被抛弃的想法在未来可能更加可行。我认为从普遍的计算机发展历史开始介绍可能是个好办法。由于一些学生可能会觉得大段历史很难消化,本章将介绍计算机发展历程中一些重要的里程碑事件,本书后面还将补充更为详细的介绍。

1.3.1 机械计算机

人类是会计算的生物。穴居人发明数学也许不是为了在湿冷的天气里玩数独游戏,而是为了丈量土地、建造房屋和报税。罗马人将鹅卵石放在小托盘上表示数字。后来,他们沿着线滑动鹅卵石辅助进行加法或减法,从而完成计算。我甚至还参观过中亚的一些商店,那里的人们用算盘快速地进行计算。
1642年,法国数学家布莱士·帕斯卡(Blaise Pascal)设计了一个原始的机械加减法计算装置,能够借助发条完成加减法。1694年,德国数学家弗里德·威廉·莱布尼茨(Gottfried wilhelm Leibnite)制作了一台复杂的机械计算器,能够完成加减乘除运算。这些设备都不能称作现代意义上的计算机,因为它们都是不可编程的。

可编程这个概念产生于工业革命时期,出于工业化控制的需要。1801年,人们发明了提花织机,能够自动地将预先设计好的图案织在布上——以前这一工作只能由熟练的工人完成。提花织机使用穿孔的木制卡片控制织在纺织品上的图案,卡片上的一个位置上有没有洞决定水平方向的线是在垂直方向的线之前还是之后。每个打了孔的卡片就是一个程序,因为每个孔的图案指定了一个唯一的操作序列。虽然是由这些操作在布上织出图案,但一些人不可避免地会认为这些操作可以看作数学计算。



19世纪早期,为了构建导航所需的表格,人们确实产生了对计算机的需求。计算机在19世纪也的确出现过。那时候,“计算机”就是一个专门雇来的,完成诸如三角函数等数学计算的人。1882年,查尔斯·巴贝奇(Charles Babbage)在英格兰设计了一台叫作差分机(difference engine)的计算装置,能够自动地计算构造数学表所需的多项式的值。巴贝奇没有完成他的差分机,1855年Per Georg Scheutz在瑞典制造出差分机。

巴贝奇设计的机器叫作分析机(analytical engine),在1871年巴贝奇去世之前,他只来得及制作出其中的一部分,以测试他的概念是否可行。分析机是一个完全的机械装置,拥有完成计算的处理单元,输入和输出数据的手段,以及一个基于穿孔木片的存储器能够保存数据和程序。

巴贝奇分析机在计算机发展史上具有非常重要的地位,因为它在电子时代之前很久就设想了计算机,而且一些早期的计算机先驱都受到了巴贝奇工作的启迪(另一些并不了解巴贝奇的工作,因此他们重新发明了计算机)。实际上,一些人认为巴贝奇分析机比20世纪40年代的早期电子计算机更先进,更加接近现代计算机。

奥古斯塔·阿达·金(Augusta Ada King)是一位英国作家、数学家,她曾与巴贝奇一起制作分析机。1842年,她翻译了意大利数学家路易吉·蒙博(Luigi Menabrea)所撰写的关于分析机的备忘录。作为这一工作的一部分,她重写了包括用分析机计算伯努利数的一系列注释。由于这一工作,阿达通常被认为是编写计算机程序的第一人。阿达之后经过大约100年的技术进步,人们才能真正地编写和运行程序。


1.3.2 机电式计算机

19世纪末期电报和电话的发展导致了自动电话交换机和通信网络的出现。电话交换装置使用一种叫作继电器的机电开关,它很像今天的二进制逻辑开关元件,可以用来制造机电式计算机。术语机电(electromechanical)指那些有活动件但却由电控制的零件。例如,继电器利用线圈磁化铁芯从而控制开关。

1867年发明的打字机和1879年发明的穿孔制表机(穿孔卡片输入机)都促进了机电式计算机的发展。机电式计算机是连接机械时代与以真空管、晶体管和集成电路为代表的电子时代的纽带。一些人将康拉德·楚泽(Konrad Zuse)视作电子计算机的发明者。20世纪40年代他在德国制造出自己设计的计算机,在第二次世界大战期间该计算机用来设计飞机。不过他的大部分工作都毁于盟军轰炸,在很长一段时间里,楚泽的工作都不为计算机界所知。楚泽的计算机是第一台可编程计算机;而同时代的其他机器都不是软件可编程的,只能算作是自动计算器。楚泽还设计了世界上第一种程序设计语言,叫作Plankalkül。

1944年,为了计算炮弹轨迹,霍华德·艾肯(Howard Aiken)在哈佛大学设计了马克I号机电式计算机。马克I号是一台早期的可编程电子计算器,但不支持条件操作,因此不能算作是今天意义上的计算机。

1.3.3 早期的电子计算机

直到真空管放大器取代了速度极慢的继电器,高速、自动的计算才成为可能。1937年~1942年,约翰·文森特·阿塔那索夫(John V. Atanasoff)制造出第一台电子计算机(ABC),用于解线性方程。1944年制造的巨像计算机(Colossus)是另一台早期计算机,它安放于布莱切利园,二战期间用来破译德军的恩格玛密文。巨像计算机使用真空管,是一台真正的电子计算机,但它不能存储程序,因而只能完成专门的任务。

1945年,J.莫奇利(J. Mauchly)和J.埃克特(J. Eckert)设计了ENIAC,一台能够处理10位10进制数的真空管计算机,但它不能像今天我们编写程序那样编程。ENIAC只能执行预定的操作,操作信息通过硬连线发送到电路中。即使使用了接线电缆和开关,ENIAC的编程也只能通过重新连线完成。


埃克特和莫奇利还设计了一台更先进的计算机——EDVAC,具有存储程序的特征。在英格兰,曼彻斯特大学的研究人员于1948年设计出世界上第一台可操作的存储程序计算机——曼彻斯特宝宝。存储程序或冯·诺依曼计算机是今天的计算机的基础,其特点是将指令和数据都保存在存储器中。Ferranti公司随后对曼彻斯特宝宝进行了改进,设计出EDSAC——欧洲第一台存储程序计算机。

AT&T贝尔实验室在1948年发明了晶体管,之后发展出了半导体,它在功能上与真空管等效,但体积更小,功耗更低。晶体管的发明,使将多个晶体管放在一块硅片上构成一个完整的电路成为可能。

到20世纪60年代中期,IBM设计出System/360体系结构,在从商用的小型机到科学计算的大型机的产品线上实现了兼容和互操作性。正是IBM System/360导致了计算机体系结构这一概念的出现(即指令集体系结构)。

1.3.4 微机和PC革命

大型机体积庞大,价格昂贵,只能由大型组织机构购买,并需要一个专门的团队来操作它。集成电路技术为微型计算机(如DEC公司制造的PDP-8)的出现铺平了道路。20世纪70年代,大学的系或小型组织机构都能买得起并运行一台小型机(微机)了。

微机是向前发展的自然的一步。集成度的提高使得人们可以将计算机的所有部件(除了外设和存储器)集成到一块芯片上。到20世纪70年代,Intel公司和摩托罗拉公司都发布了8位微处理器。第一台可用的微机Altair 8800是由MITS公司于1975年推向市场的。随后不久苹果I(1976年)和苹果II(1977年)上市,它们是最早拥有可用软件和外设的可用的商用微机。

摩托罗拉公司设计了68000(32位微机),以此为基础,苹果公司在20世纪80年代早期推出了新的Mac计算机。Atari(预示了游戏技术)和Commodore(Amiga是多媒体计算机的先驱)制造了另一些基于68000的计算机。不管是好还是坏,IBM选择采用Intel体系结构战胜了摩托罗拉的处理器。摩托罗拉曾与Intel在工业界并驾齐驱。如果IBM采用的是68000而不是8086,摩托罗拉可能成为今天的Intel。摩托罗拉68000(和它的8位微处理器)并没有消失,飞思卡尔公司接管了摩托罗拉微处理器,并以ColdFire的名字推上市场。现在摩托罗拉处理器依然存在,但更多地应用于激光打印机和汽车等嵌入式领域。


基于Intel的技术和微软的操作系统软件,IBM在20世纪80年代推出了个人电脑(PC机)。由于它的开放式体系结构,PC机在第三方软、硬件开发者中流行起来。Intel将8080微处理器扩展为包括16位80286(1982年)和32位80386(1985年),以及含有64位数据总线的Pentium(1990年)。到2000年,Intel凭借其富有想象力的设计、技术革新和积极的市场营销,成功地从竞争者中脱颖而出,统治了PC机市场。

有趣的是,AMD和之后薄命的Transmeta等一些厂商推出了与Intel处理器兼容的产品。这些芯片能够执行与Intel处理器相同的机器代码,但它们是通过在执行自己的本地指令之前将Intel机器语言转换为自己的机器语言来做到这一点的。一些人可能会说就连Intel的芯片也不再执行Intel机器码了,因为指令在芯片内部被转换为更原始的操作(这是一个被简化的实际情况,因为并非所有指令都被会翻译)。第6章将详细介绍处理器的内部操作。

1.3.5 摩尔定律和进步的历程

“摩尔定律”一词是卡沃·米德(Carver Mead)于1975年根据戈登·摩尔(Gordon Moore)所观察到集成电路的集成度每两年翻一番的现象而创造的。摩尔定律当然是一个经验性的观测结果,但在过去的40年里,技术的进步的确导致芯片内晶体管数量呈指数式增长。这一增长还伴随着集成电路速度的相应提升。集成电路内晶体管数量的增加还导致体系结构复杂度的急剧增加以及一些极其聪明的性能提升方法的出现。


20世纪90年代,计算机指令集体系结构没有特别显著的改进——Pentium系列处理器的指令集与Intel 80386差别不大。PC机的成功要求未来的计算机必须提供与旧机器之间的向后兼容,以维护不同代机器之间的软件兼容。然而,Intel处理器的微体系结构绝不是一成不变的。微体系结构领域产生了相当惊人的进展。

20世纪80年代见证了计算机组成的一个变化——RISC革命,设计者试图设计出更加合理的处理器。指令流水线是RISC处理器的一个关键特征,它将处理器变成一个用自动生产线执行指令的工厂,4条或更多的指令可以在流水线的不同阶段同时执行。RISC处理器被定位于高端工作站市场,它们从未获得完全的成功,因为与PC市场相比工作站市场要小得多。

Intel公司以极大的热情投入到性能更高的处理器的研制中,并将经典RISC处理器的不少特征融入它自己的新处理器产品中(IA32体系结构的Pentium系列处理器)。

超标量处理和乱序执行的出现是计算机组成的另一个重要变化。后文将讨论这些内容。这里需要介绍的就是超标量处理包括从存储器中读出几条指令且并行执行这些指令;乱序执行则是指以不同于程序中顺序的顺序执行指令,以避免等待某条指令的执行,从而加快指令的执行速度。乱序执行允许在当前指令等待正被使用的资源时执行程序中靠后的指令。用菜谱做类比,乱序执行就相当于在烹饪主菜的时候准备甜点。Intel在它的Pentium系列处理器中引入了乱序执行机制。

尽管20世纪80年代展开了RISC和CISC的大辩论,但随着RISC技术应用于CISC处理器中、CISC的特点体现在RISC处理器中,原本存在巨大分歧的RISC和CISC逐渐融合,20世纪90年代计算机科学家们已经不再讨论这一问题了。

1.3.6 存储技术发展

高速处理对今天的计算机应用来说非常重要,但是如果没有用来保存程序和数据所必需的速度快、体积小、功耗低、容量大的存储器,我们所知道的计算机就不会出现。数字数据记录的先驱之一阿尔伯特·霍格兰(Albert Hoagland)在1982年曾说,“为了向磁盘盘片上覆盖的基本材料表示敬意,硅谷应改名为铁氧化物谷(Iron Oxide Valley)”。我赞成这个观点;正是磁盘使得PC革命成为可能。

20世纪30年代,约翰·文森特·阿塔纳索夫(John V. Atanasoff)发明出一种最早的存储设备,这是一个覆盖着电容的旋转的磁鼓,能够充电并存储1和0。磁鼓旋转时,电容从一排触点下通过,它们的值会被读出。20世纪40年代,汞超声延迟线被用来存放数据,就像一串超声脉冲沿着一条充满水银的细管传播一样。当脉冲信号从一端传递到另一端时,它会被放大并再次循环。这是真正的动态存储。

第一个快速数据存储设备是由英国曼彻斯特大学的弗雷德里克·威廉姆斯(Frederick Williams)发明的。阴极射线管(最初用于雷达显示器,后来用于电视机)通过用电子束照射某个点进行充电,从而将数据存放在其表面(这是阿塔那索夫旋转磁鼓的电子版本)。第一代威廉姆斯管只能存储1024比特,后来翻倍为2048比特。

1949年,佛瑞斯特(Forester)在美国为旋风计算机(Whirlwind Computer)设计了铁氧体磁芯存储器。磁芯是一个很小的磁材料环,能够沿顺时针或逆时针方向磁化。到20世纪70年代,铁氧体磁芯存储器已成为大型机的主流存储器。实际上,铁氧体磁芯存储器带给我们磁芯存储器(core store)这个名词,现在描述大容量外存储器时偶尔还会用到它。20世纪70年代,人们发明了半导体动态存储器用作磁芯存储器的替代品,现在已成为数据存储的标准手段。今天,我们可以很容易地用容量较小的DRAM模块(在一个小的电路板上集成几个存储芯片)实现8G字节的存储容量。从1024比特的威廉姆斯存储管开始,人们经历了漫长的历程(226=6400万)。

磁盘一直用来存放程序和数据。IBM于1956年在它的统计控制随机存取方法(RAMAC)上引入了一种磁盘存储机制,将数据保存在一个旋转的磁盘的表面。RAMAC 305磁盘能够存储大约5MB的数据,转速为1200 rpm。自那时起,磁盘性能开始提升。现在,磁盘的最大容量约为4T(242)字节,容量为1TB的可移动外部硬盘可以很容易地装进口袋中(而不像冰箱那么大的RAMAC)。由于磁盘的机械特性,其典型转速为7200 rpm,仅有最初RAMAC的6倍快。让我们再次说一次:现代磁盘的容量是RAMAC的数百万倍,但其速度却仅是RAMAC的6倍。这一细节指出了计算机发展过程中的瓶颈:计算机各个组成部分的发展速度是不均衡的。不过,现在用来替代硬磁盘的固态盘技术具有非常快的、完全电子化的驱动器(见《计算机存储与外设》第3章)。

今天,个人计算机使用光存储器(DVD或蓝光光盘)导入程序或存储数据。光存储技术将信息存放在透明聚碳酸酯盘上的螺旋轨道上。人们利用激光技术从可重写光盘上读出信息,或将信息写入可重写光盘。CD技术是在1958年(发明激光)~1978年(可用的光存储器)间发明的。DVD(1997年发明)是改进的CD,蓝光光盘(2006年)是改进的DVD。几年之间,光存储技术就从每片容量600M字节扩展到25GB。本书后面会详细讨论光存储技术。

1.3.7 普适计算

普适(ubiquitous)计算或泛在(pervasive)计算的发展是当今世界的一大特点。这个概念的简单含义是计算是无处不在的。例如,一辆现代汽车中含有超过50台不同的计算机,控制着从复杂的卫星导航系统到简单的门锁机制。

普适计算在手机、MP3播放器、数码相机和游戏终端上体现得最为明显。普适计算的一个特征就是趋同性(convergence)这个概念,功能穿越了不同移动设备之间的界限。例如,手机被设计为通信设备,而由于它含有计算机、存储器、键盘和显示器,它能够很容易地实现如MP3播放器和个人备忘录等其他功能。通过集成更多的硬件(其价格也越来越便宜),可以进一步融合,将GPS或数码相机的功能集成到手机中。

普适计算也被称作功耗感知(power-aware)的计算。术语功耗感知与低功耗计算的含义相同。如果系统真的是很小的便携的,它们无法连接到电网上,只能依靠电池或其他手段为其充电。功耗限制导致低功耗电路设计和减少处理器功耗等方面的研究不断增加。多核处理技术也受到功耗感知的驱动,因为与增加时钟频率相比,使用多个处理器核可以更加高效地提高计算能力。

eBook或电子书是功耗感知计算的一个产品,它允许人们将成百上千本书放在一个平装书大小的设备中。尽管eBook依赖低功耗CPU技术进行数据处理,以及体积小的非易失性高速Flash存储器存放这些书,但还是新型功耗感知显示技术的进步使eBook成为可能。电子墨水(E-ink)使用大量细小含有透明液体的微胶囊。每个微胶囊内都有细小的白色和黑色颗粒代表着相反的电荷。通过施加一个穿过微胶囊的静态电压,白色颗粒将移动到微胶囊顶端,黑色颗粒移动到底部,或者按照相反方向移动。这会分别使微胶囊看起来是白色或黑色的。

一旦充电完毕,电子墨水操作时无需耗电(即仅在翻页时才会消耗电量)。传统的LCD技术(可以在iPad中看到)在彩色显示方面具有一定的优势,可以在光照条件较差的情况下使用,但由于其背光,LCD的功耗较高,并且在明亮的光照条件下可视性较差。

1.3.8 多媒体计算机

多媒体处理能力是现代计算机(包括普适的和传统的个人计算机)的一个重要特征。多媒体处理(处理和存储音频/视频数据)需要很大的存储容量以及完成大量简单重复操作的实时处理声音样本和图像像素的能力。不断改进的存储技术和不断提高的计算能力最初使得在桌面PC机上处理多媒体成为可能,之后又使价格便宜、质量轻的个人设备(比如iPad)具备了进行多媒体处理的能力。

本书将介绍现代计算机是如何利用音频/视频数据的特点来增强性能的。我们将专门介绍Intel的多媒体扩展(MMX)指令。之所以选择MMX,是因为它是最早在IA32系列处理器上实现的扩展指令集。后续的Intel处理器还支持更多的扩展指令(比如SSE和SSE-2),AMD处理器也有类似的扩展指令。
随着时间的推移,体系结构设计的收敛程度随着多媒体播放器的引入而不断增加,这使得个人计算机与高分辨率视频娱乐系统之间几乎没有多大的差别了。

《计算机组成原理》----1.3 计算机的发展相关推荐

  1. 计算机组成原理主存储器知识点,计算机组成原理(存储器).ppt

    计算机组成原理(存储器).ppt 计算机组成原理,主讲颜俊华 存储子系统,存储子系统,主要知识点 掌握存储器的分类.存储系统的层次结构 掌握存储单元.存储容量.地址线.数据线的关系3. 掌握用半导体存 ...

  2. 计算机组成原理相关话题,“计算机组成原理”教学改革研究

    李春阁 摘 要:"计算机组成原理"是计算机科学与技术专业本科生的一门专业核心基础课,是一门承上启下的课.学好这门课对学生日后从事软.硬件系统的开发和研究等工作都有重要影响.因此本文 ...

  3. 考研 计算机组成原理大纲,2020计算机组成原理考研大纲解析

    <2020计算机组成原理考研大纲解析>由会员分享,可在线阅读,更多相关<2020计算机组成原理考研大纲解析(3页珍藏版)>请在人人文库网上搜索. 1.考研计算机大纲解析:计算机 ...

  4. 华中科技大学 教学大纲 计算机,计算机组成原理 - 华中科技大学计算机学院.doc...

    计算机组成原理 - 华中科技大学计算机学院 "计算机病毒原理与防治技术"教学大纲 1.课程概要 课程名称计算机病毒原理与防治技术Computer Virus and Antivir ...

  5. 408计算机组成原理学习:计算机的基础

    408计算机组成原理学习:计算机的基础 计算机系统 = 硬件 + 软件 硬件:计算机的实体,如主机.外设等 软件:由具有各类特殊功能的程序组成 计算机性能的好坏取决于"软".&qu ...

  6. 832计算机组成原理和数据结构,832计算机组成原理与数据结构(计算机新增考试大纲)...

    <832计算机组成原理与数据结构(计算机新增考试大纲)>由会员分享,可在线阅读,更多相关<832计算机组成原理与数据结构(计算机新增考试大纲)(5页珍藏版)>请在人人文库网上搜 ...

  7. 计算机组成原理延迟时间ty,计算机组成原理之数值的机器运算培训教程方案.ppt...

    文档介绍: 2009.9计算机组成原理计算机组成原理北京理工大学计算机科学技术学院第4章数值的机器运算2009.9计算机组成原理计算机组成原理北京理工大学计算机科学技术学院第4章运算器是计算机进行算术 ...

  8. 计算机组成原理运算器设计,计算机组成原理2_5教学计算机运算器设计.ppt

    <计算机组成原理2_5教学计算机运算器设计.ppt>由会员分享,可在线阅读,更多相关<计算机组成原理2_5教学计算机运算器设计.ppt(32页珍藏版)>请在人人文库网上搜索. ...

  9. java-php-python-ssm计算机组成原理教学网站计算机毕业设计

    java-php-python-ssm计算机组成原理教学网站计算机毕业设计 java-php-python-ssm计算机组成原理教学网站计算机毕业设计 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  10. 计算机组成原理记忆单元,计算机组成原理实验(记忆).ppt

    计算机组成原理实验(记忆) 计算机组成原理实验 西工大软微学院 李易 计算机组成原理实验课注意事项 实验箱电源由桌上的电源插板供电,可能会有相邻的两个实验箱共用电源插板的情况.请勿乱拔电源插板上的电源 ...

最新文章

  1. 参数估计:最大似然、贝叶斯与最大后验
  2. DB Reindex
  3. 回合制-战斗机制-实现分析
  4. ctf-HITCON-2016-houseoforange学习
  5. python办公自动化(十一)自动分类文件夹
  6. 龙卷风路径_龙卷风一般在中国的什么地方有?
  7. iOS crash分类,Mach异常、Unix 信号和NSException 异常
  8. android 常用机型尺寸_Android中图片大小与各种hdpi
  9. bcs转10 c语言,ARM汇编转C语言 - ARM技术论坛-ARM嵌入式论坛-人气最火爆ARM学习论坛 - 21ic电子技术开发论坛...
  10. 个人项目总结 (By Jun Guo)
  11. 如何在局域网内让自己电脑的文件被其他电脑访问
  12. 西游记团队与Scrum团队中的角色关系映射
  13. 如何搭建一个自己的网站-服务器篇
  14. Python 实现丘德诺夫斯基(Chudnovsky)法計算高精度圓周率
  15. html毕业论文的摘要,*毕业论文摘要怎么写 *毕业论文摘要范文参考
  16. Redis几种集群模式
  17. echarts设置饼状图的标示线以及标示文字样式
  18. 轻松从GitHub上下载文件
  19. torch.backends.cudnn.benchmark
  20. R语言字符串拼接(paste()函数)

热门文章

  1. 如何在R语言中for循环批量创建变量并赋值
  2. 美国国家情报总监手机和个人电邮被黑
  3. 太有才了!一组街头涂鸦手绘作品欣赏【下篇】
  4. 音频(五)——性能指标
  5. Swift 小仿微博列表
  6. 微信创建小程序引入vantUI步骤
  7. oracle revoke 列_Oracle Grant REVOKE正解
  8. ubuntu 工作中常用的终端命令
  9. jmeter使用之文件读取
  10. 利用“中性灰”进行校色!