硬件工程师培训教程(一)
2010-07-21 21:43:04 阿炯

硬件工程师入门基础指南

当想从零基础入门硬件工程时,以下是一些详细的步骤和资源,可以帮助开始学习和实践。

1.了解基础电子知识

电子元件:学习不同类型的电子元件,例如电阻、电容、电感和二极管等,以及它们的特性和应用。

电路基础:学习电路图符号、串并联电路、欧姆定律等基本电路理论。


可以通过以下途径学习:

在线课程:例如Coursera、edX和Udemy等平台提供了一些免费或付费的电子课程,如《电子工程基础》或《电子电路导论》。

电子书籍:一些常见的电子学教材包括《电子学电路》(作者:Robert L. Boylestad)和《电子学基础》(作者:Thomas L. Floyd)。

2.掌握数字电子学

学习逻辑门:了解不同类型的逻辑门,如与门、或门和非门等,以及它们的真值表和逻辑功能。

学习组合逻辑和时序逻辑:了解如何使用逻辑门构建组合逻辑电路和时序逻辑电路。

可以通过以下途径学习:

在线资源:有一些免费的在线资源,如《Digital Electronics》(作者:William Kleitz)的教材和电子课程。

开发板和仿真软件:使用开发板(如Arduino或Raspberry Pi)和数字电路仿真软件(如Logisim)进行实践和实验。

3.学习模拟电子学

了解模拟信号和模拟电路的基本概念。学习放大器的原理和应用,包括运算放大器和功率放大器等。了解滤波器和信号调理技术。


可以通过以下途径学习:

教材和指南:参考模拟电子学教材,如《模拟电子技术导论》(作者:Paul R. Gray)和《模拟电子技术基础》(作者:J. David Irwin)。

在线视频教程:例如YouTube上有很多模拟电子学的视频教程,可以帮助你理解概念和实践技巧。

4.学习微控制器和嵌入式系统

了解微控制器的基本原理和架构。学习如何使用编程语言(如C或C++)来编写嵌入式系统的控制程序。掌握基本的电路连接和传感器接口技术。


可以通过以下途径学习:

Arduino平台:Arduino是一个广泛使用的开源微控制器平台,有很多教程和项目可供学习和实践。

Raspberry Pi:Raspberry Pi是一款功能强大的单板计算机,可以用于学习嵌入式系统和物联网项目。

5.实践项目

开始一些简单的电子项目,如LED闪烁、温度传感器读取或蜂鸣器控制等。逐渐增加复杂度和功能。


参与开源硬件项目:加入开源硬件社区,参与开源项目的开发和贡献。

通过实践项目,你可以应用你学到的知识,提高你的实际操作技能和问题解决能力。

参加课程或培训班:学习相关的硬件工程课程或参加培训班可以提供系统化的指导和实践机会。查找当地的大学、技术学院或培训机构,看看是否有相关的硬件工程课程或培训项目。

记住,从零基础开始学习硬件工程需要时间和耐心。持续学习、实践和寻求帮助是成功的关键。祝在学习硬件工程的道路上取得进步。接下来就开始对计算机硬件进行系统性的简介。


第一章 计算机硬件系统概述
要想成为一名计算机硬件工程师,不了解计算机的历史显然不行。在本书的第一章中,我们将带你走进计算机硬件世界,去回顾计算机发展历程中的精彩瞬间。
第一节 计算机的发展历史
现代电子计算机技术的飞速发展,离不开人类科技知识的积累,离不开许许多多热衷于此并呕心沥血的科学家的探索,正是这一代代的积累才构筑了今天的“信息大厦”。从下面这个按时间顺序展现的计算机发展简史中,我们可以感受到科技发展的艰辛及科学技术的巨大推动力。 
一、机械计算机的诞生
在西欧,由中世纪进入文艺复兴时期的社会大变革,极大地促进了自然科学技术的发展,人们长期被神权压抑的创造力得到了空前的释放 。而在这些思想创意的火花中,制造一台能帮助人进行计算的机器则是最耀眼、最夺目的一朵。从那时起,一个又一个科学家为了实现这一伟大的梦想而不懈努力着。但限于当时的科技水平,多数试验性的创造都以失败而告终,这也就昭示了拓荒者的共同命运: 往往在倒下去之前见不到自己努力的成果。而后人在享用这些甜美成果的时候,往往能够从中品味出
汗水与泪水交织的滋味……
1614 年:苏格兰人John Napier(1550 ~1617 年)发表了一篇论文 ,其中提到他发明了一种可以进行四则运算和方根运算的精巧装置。
1623 年:Wilhelm Schickard(1592 ~1635 年)制作了一个能进行6 位数以内加减法运算,并能通过铃声输出答案的“计算钟”。该装置通过转动齿轮来进行操作。
1625 年:William Oughtred(1575 ~1660 年)发明计算尺。
1668 年:英国人Samuel Morl(1625 ~1695 年)制作了一个非十进制的加法装置,适宜计算钱币。
1671 年:德国数学家Gottfried Leibniz 设计了一架可以进行乘法运算,最终答案长度可达16位的计算工具。
1822 年:英国人Charles Babbage(1792 ~1871 年)设计了差分机和分析机 ,其设计理论非常超前,类似于百年后的电子计算机,特别是利用卡片输入程序和数据的设计被后人所采用。
1834 年:Babbage 设想制造一台通用分析机,在只读存储器(穿孔卡片)中存储程序和数据 。Babbage在以后的时间里继续他的研究工作,并于1840 年将操作位数提高到了40 位,并基本实现了控制中心(CPU)和存储程序的设想,而且程序可以根据条件进行跳转,能在几秒内做出一般的加法,几分钟内做出乘、除法。
1848 年:英国数学家George Boole 创立二进制代数学,提前近一个世纪为现代二进制计算机的发展铺平了道路。
1890 年:美国人口普查部门希望能得到一台机器帮助提高普查效率。Herman Hollerith (后来他的公司发展成了IBM 公司)借鉴Babbage 的发明,用穿孔卡片存储数据,并设计了机器。结果仅用6 周就得出了准确的人口统计数据(如果用人工方法,大概要花10 年时间)。
1896 年:Herman Hollerith 创办了IBM 公司的前身。
二、电子计算机问世
在以机械方式运行的计算器诞生百年之后,随着电子技术的突飞猛进,计算机开始了真正意义上的由机械向电子时代的过渡,电子器件逐渐演变成为计算机的主体,而机械部件则渐渐处于从属位置。二者地位发生转化的时候,计算机也正式开始了由量到质的转变,由此导致电子计算机正式问世。下面就是这一过渡时期的主要事件:
1906 年:美国人Lee De Forest 发明电子管,为电子计算机的发展奠定了基础。
1924 年2 月:IBM 公司成立,从此一个具有划时代意义的公司诞生。
1935 年:IBM 推出IBM 601 机。这是一台能在一秒钟内算出乘法的穿孔卡片计算机 。这台机器无论在自然科学还是在商业应用上都具有重要的地位,大约制造了1500 台。
1937 年:英国剑桥大学的Alan M.Turing(1912 ~1954 年)出版了他的论文,并提出了被后人称之为“图灵机”的数学模型。
1937 年:Bell 试验室的George Stibitz 展示了用继电器表示二进制的装置。尽管仅仅是个展示品,但却是第一台二进制电子计算机。
1940 年1 月:Bell 实验室的Samuel Williams 和Stibitz 制造成功了一个能进行复杂运算的计算机。该机器大量使用了继电器,并借鉴了一些电话技术,采用了先进的编码技术。
1941 年夏季:Atanasoff 和学生Berry 完成了能解线性代数方程的计算机,取名叫“ABC ”(Atanasoff-Berry Computer),用电容作存储器 ,用穿孔卡片作辅助存储器 ,那些孔实际上是“烧”上去的,时钟频率是60Hz,完成一次加法运算用时一秒。
1943 年1 月:Mark I 自动顺序控制计算机在美国研制成功。整个机器有51 英尺长 、5 吨重 、75万个零部件。该机使用了3304 个继电器 ,60 个开关作为机械只读存储器 。程序存储在纸带上 ,数据可以来自纸带或卡片阅读器。Mark I 被用来为美国海军计算弹道火力表。
1943 年9 月:Williams 和Stibitz 完成了“Relay Interpolator ”,后来命名为“Model Ⅱ Re-
lay Calculator ”的计算机。这是一台可编程计算机,同样使用纸带输入程序和数据。它运行更可靠,每个数用7 个继电器表示,可进行浮点运算。
1946 年:ENIAC(Electronic Numerical Integrator And Computer)诞生 ,这是第一台真正意义上的数字电子计算机。开始研制于1943 年,完成于1946 年,负责人是John W.Mauchly 和J.Presper Eckert,重30 吨,用了18000 个电子管,功率25 千瓦,主要用于计算弹道和氢弹的研制。
三、晶体管计算机的发展
真空管时代的计算机尽管已经步入了现代计算机的范畴,但因其体积大、能耗高、故障多、价格贵,从而制约了它的普及和应用。直到晶体管被发明出来,电子计算机才找到了腾飞的起点。
1947 年:Bell 实验室的William B.Shockley 、 John Bardeen 和Walter H.Brattain 发明了晶体管,开辟了电子时代新纪元。
1949 年:剑桥大学的Wilkes 和他的小组制成了一台可以存储程序的计算机,输入输出设备仍是纸带。
1949 年:EDVAC(Electronic Discrete Variable Automatic Computer——电子离散变量自动计算机)——第一台使用磁带的计算机。这是一个突破,可以多次在磁带上存储程序。这台机器是John von Neumann 提议建造的。
1950 年:日本东京帝国大学的Yoshiro Nakamats 发明了软磁盘 ,其销售权由IBM公司获得 。由此开创了存储时代的新纪元。
1951 年:Grace Murray Hopper 完成了高级语言编译器。
1951 年:UNIVAC-1 ——第一台商用计算机系统诞生,设计者是J.Presper Eckert 和John Mauchly 。被美国人口普查部门用于人口普查,标志着计算机进入了商业应用时代。
1953 年:磁芯存储器被开发出来。
1954 年:IBM 的John Backus 和他的研究小组开始开发FORTRAN(FORmula TRANslation) ,1957 年完成。这是一种适合科学研究使用的计算机高级语言。
1957 年:IBM 开发成功第一台点阵式打印机。
四、集成电路为现代计算机铺平道路
尽管晶体管的采用大大缩小了计算机的体积、降低了价格 、减少了故障 ,但离用户的实际要求仍相距甚远,而且各行业对计算机也产生了较大的需求,生产性能更强、重量更轻、价格更低的机器成了当务之急。集成电路的发明解决了这个问题。高集成度不仅使计算机的体积得以减小,也使速度加快、故障减少。从此,人们开始制造革命性的微处理器。
1958 年9 月12 日:在Robert Noyce(Intel 公司创始人)的领导下,集成电路诞生 ,不久又发明了微处理器。但因为在发明微处理器时借鉴了日本公司的技术,所以日本对其专利不承认,因为日本没有得到应有的利益。过了30 年,日本才承认,这样日本公司可以从中得到一部分利润。但到2001 年,这个专利就失效了。
1959 年:Grace Murray Hopper 开始开发COBOL(COmmon Business-Oriented Language)语言 ,完成于1961 年。
1960 年:ALGOL ——第一个结构化程序设计语言推出。
1961 年:IBM 的Kennth Iverson 推出APL 编程语言。
1963 年:DEC 公司推出第一台小型计算机——PDP-8 。
1964 年:IBM 发布PL/1 编程语言。
1964 年:发布IBM 360 首套系列兼容机。
1964 年:DEC 发布PDB-8 小型计算机。
1965 年:摩尔定律发表,处理器的晶体管数量每18 个月增加一倍,价格下降一半。
1965 年:Lofti Zadeh 创立模糊逻辑,用来处理近似值问题。
1965 年:Thomas E.Kurtz 和John Kemeny 完成BASIC(Beginner ’s All-purpose Symbolic In-
struction Code)语言的开发。特别适合计算机教育和初学者使用,得以广泛推广。
1965 年:Douglas Englebart 提出鼠标器的设想,但没有进一步研究,直到1983年才被苹果电脑公司大量采用。
1965 年:第一台超级计算机CD6600 开发成功。
1967 年:Niklaus Wirth 开始开发PASCAL 语言,1971 年完成。
1968 年:Robert Noyce 和他的几个朋友创办了Intel 公司。
1968 年:Seymour Paper 和他的研究小组在MIT 开发了LOGO 语言。
1969 年:ARPANet(Advanced Research Projects Agency Network)计划开始启动,这是现代Internet 的雏形。
1969 年4 月7 日:第一个网络协议标准RFC 推出。
1970 年:第一块RAM 芯片由Intel 推出,容量1KB 。
1970 年:Ken Thomson 和Dennis Ritchie 开始开发UNIX 操作系统。
1970 年:Forth 编程语言开发完成。
1970 年:Internet 的雏形ARPANet 基本完成,开始向非军用部门开放。
1971 年11 月15 日:Marcian E.Hoff 在Intel 公司开发成功第一块微处理器4004,含2300 个晶体管,字长为4 位,时钟频率为108KHz,每秒执行6 万条指令。
1972 年:1972 年以后的计算机习惯上被称为第四代计算机。基于大规模集成电路及后来的超大规模集成电路。这一时期的计算机功能更强,体积更小。此时人们开始怀疑计算机能否继续缩小,特别是发热量问题能否解决。同时,人们开始探讨第五代计算机的开发。
1972 年:C 语言开发完成。其主要设计者是UNIX 系统的开发者之一Dennis Ritche。这是一个非常强大的语言,特别受人喜爱。
1972 年:Hewlett-Packard 发明了第一个手持计算器。
1972 年4 月1 日:Intel 推出8008 微处理器。
1972 年:ARPANet 开始走向世界,Internet 革命拉开序幕。
1973 年:街机游戏Pong 发布,得到广泛欢迎。发明者是Nolan Bushnell(Atari 的创立者)。
1974 年:第一个具有并行计算机体系结构的CLIP-4 推出。
五、当代计算机技术渐入辉煌
在此之前,应该说计算机技术还是主要集中于大型机和小型机领域的发展。随着超大规模集成电路和微处理器技术的进步,计算机进入寻常百姓家的技术障碍逐渐被突破。特别是在Intel 公司发布了其面向个人用户的微处理器8080 之后,这一浪潮终于汹涌澎湃起来,同时也催生出了一大批信息时代的弄潮儿,如Stephen Jobs(史缔芬乔布斯)、Bill Gates(比尔盖茨)等 ,至今他们对整个计算机产业的发展还起着举足轻重的作用。在此时段,互联网技术和多媒体技术也得到了空前的应用与发展,计算机真正开始改变我们的生活。
1974 年4 月1 日:Intel 发布其8 位微处理器芯片8080 。
1975 年:Bill Gates 和Paul Allen 完成了第一个在MIT(麻省理工学院)的Altair 计算机上运行的BASIC 程序。
1975 年:Bill Gates 和Paul Allen 创办Microsoft 公司(现已成为全球最大、最成功的软件公司)。3 年后就收入50 万美元,员工增加到15 人。1992 年达28 亿美元,1 万名雇员。1981 年Microsoft为IBM 的PC 机开发操作系统,从此奠定了在计算机软件领域的领导地位。
1976 年:Stephen Wozinak 和Stephen Jobs 创办苹果计算机公司,并推出其Apple Ⅰ计算机。
1978 年6 月8 日:Intel 发布其16 位微处理器8086 。1979 年6 月又推出准16 位的8088 来满足市场对低价处理器的需要,并被IBM 的第一代PC 机所采用。该处理器的时钟频率为4.77MHz 、8MHz和10MHz,大约有300 条指令,集成了29000 个晶体管。
1979 年:低密软磁盘诞生。
1979 年:IBM 公司眼看个人计算机市场被苹果等电脑公司占有,决定开发自己的个人计算机 。为了尽快推出自己的产品,IBM 将大量工作交给第三方来完成(其中微软公司就承担了操作系统的开发工作 ,这同时也为微软后来的崛起奠定了基础),于1981 年8 月12 日推出了IBM-PC 。
1980 年:“只要有1 兆内存就足够DOS 尽情表演了”,微软公司开发DOS 初期时说 。今天来听这句话有何感想呢
1981 年:Xerox 开始致力于图形用户界面、图标、菜单和定位设备(如鼠标)的研制 。结果研究成果为苹果所借鉴,而苹果电脑公司后来又指控微软剽窃了他们的设计,开发了Windows 系列软件。
1981 年8 月12 日:MS-DOS 1.0 和PC-DOS 1.0 发布。Microsoft 受IBM 的委托开发DOS 操作系统,他们从Tim Paterson 那里购买了一个叫86-DOS 的程序并加以改进。由IBM 销售的版本叫PC-DOS,由Microsoft 销售的叫MS-DOS 。Microsoft 与IBM 的合作一直到1991 年的DOS 5.0 为止。最初的DOS 1.0非常简陋,每张盘上只有一个根目录,不支持子目录,直到1983 年3 月的2.0 版才有所改观。MS-DOS在1995 年以前一直是与IBM-PC 兼容的操作系统,Windows 95 推出并迅速占领市场之后,其最后一个版本命名为DOS 7.0 。
1982 年:基于TCP/IP 协议的Internet 初具规模。
1982 年2 月:80286 发布,时钟频率提高到20MHz 、增加了保护模式、可访问16MB 内存、支持1GB以上的虚拟内存、每秒执行270 万条指令、集成了13.4 万个晶体管。
1983 年春季:IBM XT 机发布,增加了10MB 硬盘、128KB 内存、一个软驱、单色显示器、一台打印机、可以增加一个8087 数字协处理器。当时的价格为5000 美元。
1983 年3 月:MS-DOS 2.0 和PC-DOS 2.0 增加了类似UNIX 分层目录的管理形式。
1984 年:DNS(Domain Name Server)域名服务器发布,互联网上有1000 多台主机运行。
1984 年底:Compaq 开始开发IDE 接口,能以更快的速度传输数据,并被许多同行采纳,后来在此基础上开发出了性能更好的EIDE 接口。
1985 年:Philips 和SONY 合作推出CD-ROM 驱动器。
1985 年10 月17 日:80386 DX 推出 。时钟频率达到33MHz 、可寻址1GB 内存 、每秒可执行600万条指令、集成了275000 个晶体管。
1985 年11 月:Microsoft Windows 发布。该操作系统需要DOS 的支持,类似苹果机的操作界面 ,以致被苹果控告,该诉讼到1997 年8 月才终止。
1985 年12 月:MS-DOS 3.2 和PC-DOS 3.2 发布。这是第一个支持3.5 英寸磁盘的系统,但只支持到720KB,3.3 版才支持1.44MB 。
1987 年:Microsoft Windows 2.0 发布。
1988 年:EISA 标准建立。
1989 年:欧洲物理粒子研究所的Tim Berners-Lee 创立World Wide Web 雏形。通过超文本链接,新手也可以轻松上网浏览。这大大促进了Internet 的发展。
1989 年3 月:EIDE 标准确立,可以支持超过528MB 的硬盘,能达到33.3MB/s 的传输速度,并被许多CD-ROM 所采用。
1989 年4 月10 日:80486 DX 发布。该处理器集成了120 万个晶体管,其后继型号的时钟频率达到100MHz 。
1989 年11 月:Sound Blaster Card(声卡)发布。
1990 年5 月22 日:微软发布Windows 3.0,兼容MS-DOS 模式。
1990 年11 月:第一代MPC(多媒体个人电脑标准)发布。该标准要求处理器至少为80286/12MHz(后来增加到80386SX/16MHz)及一个光驱,至少150KB/sec 的传输率。
1991 年:ISA 标准发布。
1991 年6 月:MS-DOS 5.0 和PC-DOS 5.0 发布。为了促进OS/2 的发展,Bill Gates 说DOS 5.0 是 DOS 终结者,今后将不再花精力于此。该版本突破了640KB 的基本内存限制。这个版本也标志着微软与IBM 在DOS 上合作的终结。
1992 年:Windows NT 发布,可寻址2GB 内存。
1992 年4 月:Windows 3.1 发布。
1993 年:Internet 开始商业化运行。
1993 年:经典游戏Doom 发布。
1993 年3 月22 日:Pentium 发布,该处理器集成了300 多万个晶体管、早期版本的核心频率为60~66MHz 、每秒钟执行1 亿条指令。
1993 年5 月:MPC 标准2 发布,要求CD-ROM 传输率达到300KB/s,在320 ×240 的窗口中每秒播放15 帧图像。
1994 年3 月7 日:Intel 发布90 ~100MHz Pentium 处理器。
1994 年:Netscape 1.0 浏览器发布。
1994 年:著名的即时战略游戏Command&Conquer(命令与征服)发布。
1995 年3 月27 日:Intel 发布120MHz 的Pentium 处理器。
1995 年6 月1 日:Intel 发布133MHz 的Pentium 处理器。
1995 年8 月23 日:纯32 位的多任务操作系统Windows 95 发布。该操作系统大大不同于以前的版本 ,完全脱离MS-DOS,但为照顾用户习惯还保留了DOS 模式。Windows 95 取得了巨大成功。
1995 年11 月1 日:Pentium Pro 发布,主频可达200MHz 、每秒可执行4.4 亿条指令、集成了550万个晶体管。
1995 年12 月:Netscape 发布其javascript 。
1996 年1 月:Netscape Navigator 2.0 发布。这是第一个支持javascript 的浏览器。
1996 年1 月4 日:Intel 发布150 ~166MHz 的Pentium 处理器,集成了310 ~330 万个晶体管。
1996 年:Windows 95 OSR2 发布,修正了部分BUG,扩充了部分功能。
1997 年:Heft Auto 、Quake 2 和Blade Runner 等著名游戏软件发布,并带动3D图形加速卡迅速崛起。
1997 年1 月8 日:Intel 发布Pentium MMX CPU,处理器的游戏和多媒体功能得到增强。
1997 年4 月:IBM 的深蓝(Deep Blue)计算机战胜人类国际象棋世界冠军卡斯帕罗夫。
1997 年5 月7 日:Intel 发布Pentium Ⅱ,增加了更多的指令和Cache 。
1997 年6 月2 日:Intel 发布233MHz Pentium MMX 。
1998 年2 月:Intel 发布333MHz Pentium Ⅱ处理器,采用0.25 μm 工艺制造,在速度提升的同时减少了发热量。
1998 年6 月25 日:Microsoft 发布Windows 98,一些人企图肢解微软,微软回击说这会伤害美国的国家利益。
1999 年1 月25 日:Linux Kernel 2.2.0 发布,人们对其寄予厚望。
1999 年2 月22 日:AMD 公司发布K6-3 400MHz 处理器。
1999 年7 月:Pentium Ⅲ发布,最初时钟频率在450MHz 以上,总线速度在100MHz 以上,采用0.25μm 工艺制造,支持SSE 多媒体指令集,集成有512KB 以上的二级缓存。
1999 年10 月25 日:代号为Coppermine(铜矿)的Pentium Ⅲ处理器发布。采用0.18 μm 工艺制造的Coppermine 芯片内核尺寸进一步缩小,虽然内部集成了256KB 全速On-Die L2 Cache ,内建2800万个晶体管,但其尺寸却只有106 平方毫米。
2000 年3 月:Intel 发布代号为“Coppermine 128 ”的新一代的Celeron 处理器。新款Celeron 与老C eleron 处理器最显著的区别就在于采用了与新P Ⅲ处理器相同的Coppermine核心及同样的FC-PGA封装方式,同时支持SSE 多媒体扩展指令集。
2000 年4 月27 日:AMD 宣布正式推出Duron 作为其新款廉价处理器的商标,并以此准备在低端向Intel 发起更大的冲击,同时,面向高端的ThunderBird 也在其后的一个月间发布。
2000 年7 月:AMD 领先Intel 发布了1GHz 的Athlon 处理器,随后又发布了1.2GMHz Athlon 处理器。
2000 年7 月:Intel 发布研发代号为Willamette 的Pentium 4 处理器,管脚为423 或478 根,其芯片内部集成了256KB 二级缓存,外频为400MHz,采用0.18 μm 工艺制造 ,使用SSE2指令集,并整合了散热器,其主频从1.4GHz 起步。
2001 年5 月14 日,AMD 发布用于笔记本电脑的Athlon 4 处理器。该处理器采用0.18 微米工艺造,前端总线频率为200MHz,有256KB 二级缓存和128KB 一级缓存。
2001 年5 月21 日 ,VIA 发布C3 出处理器 。该处理器采用 0.15 微米工艺制造(处理器核心仅为2mm 2 ), 包括192KB 全速缓存(128KB 一级缓存、64KB 二级缓存),并采用Socket 370 接口。支持133MHz 前端总线频率和3DNow!、MMX 多媒体指令集。
2001 年8 月15 日,VIA 宣布其兼容DDR 和SDRAM 内存的P4 芯片组P4X266 将大量出货。该芯片组的内存带宽达到4GB,是i850 的两倍。
2001 年8 月27 日,Intel 发布主频高达2GHz 的P4 处理器。每千片的批发价为562 美元。
第二节 计算机的体系结构
一台计算机由硬件和软件两大部分组成。硬件是组成计算机系统的物理实体,是看得见摸得着的部分。从大的方面来分,硬件包括CPU(Central Processing Unit ——中央处理器)、存储器和输入/输出设备几个部分。
CPU 负责指令的执行,存储器负责存放信息(类似大脑的记忆细胞),输入/输出设备则负责信息的采集与输出(类似人的眼睛和手)。具体设备如我们平常所见到的内存条、显卡、键盘、鼠标、显示器和机箱等。软件则是依赖于硬件执行的程序或程序的集合。这是看不见也摸不着的部分。
一、Von Neumann (冯. 诺依曼)体系结构
Von Neumann 体系结构是以数学家John Von Neumann 的名字命名的,他在20 世纪40年代参与设计了第一台数字计算机ENIAC 。Von Neumann 体系结构的特点如下:
一台计算机由运算器、控制器、存储器、输入和输出设备5 大部分组成。
采用存储程序工作原理,实现了自动连续运算。
存储程序工作原理即把计算过程描述为由许多条命令按一定顺序组成的程序,然后把程序和所需的数据一起输入计算机存储器中保存起来,工作时控制器执行程序,控制计算机自动连续进行运算。Von Neumann 体系结构存在的一个突出问题就是,外部数据存取速度和CPU 运算速度不平衡,不过可以通过在一个系统中使用多个CPU 或采用多进程技术等方法来解决。
二、CPU
CPU 是计算机的运算和控制中心,其作用类似人的大脑。不同的CPU 其内部结构不完全相同,一个典型的CPU 由运算器、寄存器和控制器组成。3 个部分相互协调便可以进行分析、判断和计算,并控制计算机各部分协调工作。最新的CPU 除包括这些基本功能外,还集成了高速Cache(缓存)等部件。
三、存储器
每台计算机都有3 个主要的数据存储部件:主存储器、高速寄存器和外部文件存储器。主存储器通常是划分为字(典型的是32 位或64 位)或字节(每字含4 或8 字节)的线性序列。高速寄存器通常是一个字长的位序列。一个寄存器的内容可能表示数据或主存储器中数据或下一条指令的地址。高速缓存通常位于主存储器和寄存器之间作为从主存储器存取数据的加速器。外部文件存储器包括磁盘、磁带或日益普及的CD-ROM 等,通常以记录划分,每个记录是位或字节的序列。
四、输入/输出(I/O )设备
输入设备类似人的眼睛、耳朵和鼻子,负责信息的采集,并提交给CPU 处理。具体产品如键盘、鼠标和扫描仪等。输出设备类似人的手,执行大脑(CPU)发出的指令,可完成一定的功能,输出计算机的运算结果。具体产品如打印机、显示器和音箱等。
五、总线
微型计算机的体系结构有一个最显著的特征是采用总线结构。总线就像一条公共通路,将所有的设备连接起来,达到相互通信的目的。与并行计算机(各部件间通过专用线路连接)相比,采用总线结构的微型计算机简化了设计、降低了成本、缩小了体积,但在同等配置条件下,性能有所下降。总线又分用于传输数据的数据总线(Data Bus)、传输地址信息的地址总线(Address Bus)和用于传输控制信号、时序信号和状态信息的控制总线(Control Bus)。
六、操作集
每台计算机都有一内部基本操作集与机器语言指令相对应。一个典型的操作集包括与内部数据类型相关的基本算术指令(即实数和整数加法、减法、乘法和除法等)、测试数据项性质(如是否为零,是正数或负数等)的指令 、对数据项的某一部分进行存取和修改 (如在一个字中存取一个字符 ,在一条指令中存取操作数的地址等 )的指令、控制输入/输出设备的指令及顺序控制指令(如无条件跳转等)。
七、顺序控制
在机器语言程序中下一条要被执行的指令通常是由程序地址寄存器(也称为指令计数器)的内容确定的。为了将控制权转到程序某处,程序员可使用一些操作修改该寄存器的内容。解释器作为一部计算机操作的核心,每次执行的都是简单的循环算法。而对于每次循环 ,解释器都会从程序地址寄存器取得下一条指令的地址(并增量寄存器的值为下一条指令的地址),从存储器取得指定的指令 ,对指令进行解码,分解为操作码和一组操作数并取得操作数(如果必要的话),使用操作数作为参数调用指定的操作。基本操作可能修改内存和寄存器中的数据,和输入输出设备进行通讯 ,通过修改程序地址寄存器的内容改变程序的执行流程 。在执行基本操作后,解释器将重复上述循环。
八、数据存取
除了操作码,每条机器指令还需要指定操作码所需的操作数。一般操作数可以被存放在主存储器或寄存器中。计算机必须包含一个指定和存取操作数的机制。同样道理,运算的结果必须被存放在某一地址。上述机制称为数据存取控制。一般的方式是,对每个存储器地址用一个整数标记,同时提供一个机制对于给定的地址存取该地址的内容(或将一个新值存入给定的地址)。同理,寄存器一般也采用一个简单的整数标明。
九、存储管理
设计电脑的一个原则是保证能方便地操作计算机包含的所有设备(如内存、CPU 和外部设备)。实现该原则的主要困难是CPU 每次操作的时间一般是以毫微秒计,而内存存取时间是微秒级。为了对速度进行平衡,需要采用不同的存取管理机制。如果仅在硬件中采用简单的存取管理机制,则在整个程序的执行过程中数据都被存放在内存中,每个时刻只有一个程序被运行。
尽管CPU 必须等待数据,但无需额外的硬件。为了平衡中央处理器速度和外部数据读取速率之间的矛盾,操作系统通常使用多进程技术,在等待读取数据的毫秒时间段内,计算机可运行另一个程序。为了允许多个程序在同一时刻能共存于内存中,可直接在硬件中使用页或动态程序分配机制。页算法对将来最有可能被使用的数据和程序做出预测并存取,只要数据和指令所在的页在主存中,程序就可以一直执行下去。如果出现了页错误(即正确的地址不在内存中),则通知操作系统从外部存储器读入相应的页。
另外,为了平衡主存和中央处理器间的速度差异,可使用缓存。缓存是位于主存和中央处理器间的一个较小的高速数据存储器,大小一般为1 ~256KB,包含中央处理器最近使用的数据和指令 ,当然也包括了将来最有可能被使用到的程序代码或数据。如果所需的数据恰在缓存中,则中央处理器就直接调用该缓存中的数据,被修改的数据在相对较慢的主存速率下被存至主存。如果指定的地址不在主存中,则读取包含该地址的一段数据块,这些相近地址中的数据有可能马上会被使用。使用32KB 缓存可达到95%的命中率(CPU 在缓存中找到所用数据的概率)。
十、操作环境
计算机的操作环境包括外围存储器和输入/输出设备。这些设备代表了计算机的外部世界,任何与计算机的通讯都必须通过操作环境进行。操作环境按照不同的存取速率分为不同类别,如高速存储器(外存)、中速存储器(磁盘和CD-ROM)、低速存储器(磁带)和输入输出设备(阅读器、打印机、数据通信线)等。值得指出的是,计算机硬件的组织通常都具有不同的形式。本章介绍的只是其中的“Von Neumann 体系结构”,当然还有其他的体系结构。
十一、计算机状态
从静态角度观察一台计算机,可以把它视为是由数据、操作和控制结构等组成的一个完整的系统。
因此对计算机的了解还应包括对它的动态行为,即程序执行过程的了解。这个了解也就要包括其程序执行前不同存储器的内容、所执行的指令序列、程序执行过程中数据内容是如何被修改的及程序执行的最后结果是什么等。
描述计算机动态行为的一个简便方法是使用“计算机状态”。将计算机上程序的执行看成是计算机状态的一个变化序列,每个状态由程序执行过程中某一时刻的内存、寄存器和外部设备的内容确定。这些存储器的初始内容定义了计算机的初始状态,每一步程序的执行都是通过修改存储器的内容将当前的状态转换为一个新的状态,该过程称为状态转换。当程序执行结束后,最终状态定义就是这些存储器的内容。程序的执行可以看成是由计算机状态序列的转换,如果能预测状态的转换序列,就可以说理解了计算机的动态行为。