本书揭示现代计算机的内部工作方式,采用大量真实的例子,引导读者逐步由浅入深地学习计算机体系结构。本书内容经过精心组织,层次分明,内容翔实。对计算机硬件没有预备知识的要求,非常适合于大学本科的教学。本书还设计大量难度不同的习题,帮助读者更好地理解计算机工作原理。
为配合本书的教学,作者将大量资源和习题收录在http://computerscience.jbpub.com/ECOA 网站上,供读者参考,也可联系 “教学支持联系人”获取。
无
给学生的话
本书是一本关于计算机组成与体系结构的教材,侧重于介绍信息数字处理的各种部件的功能和设计。本书按照不同的分层结构来展示计算机系统,从低层的硬件到高层的软件,包括汇编语言和操作系统。这些层次组成了一个虚拟机的分层结构。计算机组成原理主要讨论计算机的分层结构和如何划分这些分层,以及每个层次的实现。计算机体系结构主要讨论的是硬件和软件之间的接口,研究的重点是计算机系统的构造和行为特征。本书正文中的大部分内容涉及的都是计算机硬件、计算机组成原理和体系结构,以及它们与软件性能之间的相互关系。
学生们经常会问:“假如我主修计算机科学专业,为什么必须学习计算机硬件?硬件不是计算机工程师的任务吗?为什么我们要关心计算机内部是什么样子呢?”作为计算机用户,我们也许不会太在意计算机的内部结构,就像我们驾驶汽车时不会太在意汽车引擎盖里面的构造一样。当然,人们可以编写高级语言程序,而无需了解这些程序的执行过程。也可以方便地使用各种应用程序包,而无需理解它们的工作原理。但是,如果当我们编写的程序需要运行得更快和更高效时,或者当我们使用的应用程序并不是真正想要的程序时,又会发生什么情况呢?作为计算机科学家,我们需要对计算机系统本身有一个基本的了解,才能解决上面的这些问题。
在计算机系统中,计算机硬件和计算机编程以及软件部分的各个方面都存在一种基本关系。要编写好的软件,对计算机有一个整体的认识是十分重要的。对计算机硬件的理解,有助于解释某些时候程序中出现的一些神秘错误,例如大家熟悉的分段出错或总线错误。对于高级程序设计人员来说,需要掌握的有关计算机组成原理和体系结构的知识的程度,取决于他们需要完成的任务。
例如,如果要编写一个编译程序,必须了解要编译的特定硬件。硬件中使用的某些思想(比如说流水线作业)可以采纳到编译技术中来,这样可以使编译器更快更高效地运行。要对大规模的复杂的实时系统建模,必须了解浮点算术应该和能够完成的任务,及其工作原理(这些内容不是同一件事情)。要编写有关视频、磁盘或其他输入/输出接口,必须很好地理解I/O接口和计算机体系结构的基本知识。对于嵌入式系统来说,由于它们通常在资源上受到很大限制,所以我们必须理解时间、空间和价格三者之间的平衡。若要从事硬件系统、网络或特殊算法等问题的研究调查和推荐工作,必须非常熟悉计算机的性能基准,并且能够恰当地展示系统的性能结果。在购买计算机之前,应该了解计算机的性能指标,以及某些商家为证明自己的系统优于其他系统而操控性能测试结果的方式。不管我们在哪个专业领域工作,作为一位计算机科学家,熟悉了解硬件与软件之间的相互作用是必不可少的。
读者也许会奇怪,为什么本书的标题上有一个很大的单词“essentials”(基本的)。这里有两个理由。首先,计算机组成原理的内容广泛,并且每天都在发展。第二,很难定义在信息的浩渺大海中,哪些话题真正是基本的以及哪些知识只是需要了解的。编写本书时,我们的目的是希望为大家提供一本符合美国计算机学会(ACM)和电气和电子工程师协会(IEEE)出版的计算机体系结构课程指导纲要的简明教材。计算机专家一致认为,这个课程指导纲要中的主题内容构成了有关计算机组成原理和体系结构知识的“基本”核心体。
我们对于我们认为有用的某些主题内容,但对于学生继续从事计算机科学研究和未来专业领域的进一步发展并不是基本的一些ACM/IEEE推荐的课程也进行了强调。这里,我们觉得对大家继续从事计算机科学的研究工作有帮助的内容应该包括操作系统、编译器、数据库管理和数据通信等。本书还包括其他一些内容,这些内容将会有助于读者理解现实生活中实际计算机系统的工作原理和过程。
我们希望阅读本书会是一种愉快的经历,并且希望读者花些时间对我们介绍的某些资料进行更深入的钻研。我们的目的是希望在正式课程的学习完成后的较长的一段时间内,本书都可以作为一本有用的参考资料。虽然我们希望尽力为读者提供大量充实的信息资料,但这些内容在读者以后的学习和事业过程中仅仅是构建一个基础。成功的计算机专业人士,将会对理解计算机的工作原理不断增添新的知识。欢迎开始计算机王国的旅行。
写给教师的话
关于本书
本书起源于宾夕法尼亚大学Harrisburg分校的两个计算机科学组成原理和体系结构班的授课内容。随着计算机科学课程的不断发展,我们发现不仅课程中所讲授的材料需要进行修改,而且课程的内容也需要从两个学期的教学浓缩成一学期3个学分的课程。许多其他学院也意识到需要对原来的内容进行压缩,以便给一些新兴的主题内容留出更多的空间。这门新课程,与本教材一样,最初是为主修计算机科学的学生准备的。其目的是讲授一些计算机科学专业的学生必须熟悉的有关计算机组成原理和体系结构方面的内容。本书不仅汇集了这些领域的基本原理,而且只要是对学生扩展专业知识和从事计算机科学的深入研究有益的主题内容都会加以介绍,激发学生的学习兴趣。
我们编著本书的主要目的是希望改变计算机组成原理和体系结构的常规教学模式。计算机科学专业的学生在完成计算机组成原理和体系结构的课程学习之后,不但要掌握有关数字计算机的主要基本概念,而且要理解这些基本概念是如何应用于现实世界中。这些概念的内容应该远远超过计算机销售商所用的专用术语和构思。事实上,学生们应该能够掌握特定的环境下给出的这些概念,并且可以将这些概念移植到实际工作中,反之亦然。 另外,学生也必须为该领域的进一步学习打下坚实的基础。
我们希望借助本教材传授一些每位计算机科学专业的学生都应该了解、熟悉或掌握的知识。我们并没有要求使用本教材的学生要完全掌握本书介绍的全部内容。但是,我们非常希望本书中有些内容是学生必须掌握的,有些内容是学生必须清楚熟悉的,而对于仅做了简要介绍的内容学生只需要了解就足够了。
有些概念具有一定的深度,仅靠单独学习基本原理是很难理解的。因此,我们将问题的解决方案集合起来讲述这些内容,而不是简单地把单个问题堆积在一起。本书将问题的解释、举例说明、习题练习、专题学习和模拟研究组合在一起,在一个合适的层面上给学生一个整体的学习感受,了解现代数字计算机的内在工作方式。
我们采用一种非正规的形式编写本教材,省略了一些不必要的技术术语。在写作上,尽量简明扼要,避免一些不必要的抽象概念,希望增加学生们的兴趣。我们还扩充了内容范围,增加了一般计算机体系结构的初级教材中没有的系统软件、操作系统简介、性能测评、可选的其他计算机体系结构,以及网络导论等一些与计算机硬件密切相关的主题内容。像大多数的著作一样,我们也挑选了一种结构模型作为主线,但是这个模型是为了简化问题而精心设计的。
本教材与计算机课程2001的关系
2001年12月,ACM和IEEE联合工作小组公布了2001年计算机课程指南(CC2001)。这个指南是对非常流行的计算机课程1991的第一次主要修改。CC2001与CC1991相比,存在几个重要的改变,我们这里只关注有关计算机组成原理和体系结构方面的改变。CC1991推荐计算机体系结构的教学学时约为59小时(课程定为组成原理和体系结构,课程代号是AR)。主要包括以下内容:数字逻辑、数字系统、机器层次的数据表示方法、汇编层次的计算机组织结构、存储器系统的组成和结构、接口和通信,以及可供选择的其他计算机体系结构。最新公布的CC2001(可在网址wwwcomputerorg/education/cc2001查阅)将计算机结构的课程内容缩减为36个核心学时。其中包括数字逻辑和数字系统(3学时),机器层次的数据表示方法(3学时),汇编层次的计算机组成原理和体系结构(9学时),存储器组织和结构(5学时),接口和通信(3学时),功能组织(7学时),以及多处理器和可供选择的其他体系结构(3学时)。另外,CC2001还建议将性能增强和有关网络的结构,以及分布式计算机系统作为CC2001中计算机组成原理和体系结构教学模块的一部分。在我们对课程进行全面修改并编写本教材后,让人高兴的是这本新编有关计算机组成原理和体系结构的教材与ACM/IEEE 2001课程指南直接相关的内容有如下的几个部分:
AR1数字逻辑和数字系统(核心课程):第1、3章
AR2机器层次的数据表示方法(核心课程):第2章
AR3汇编层次的机器组织和结构(核心课程):第4、5、6章
AR4存储器的组成和结构(核心课程):第6章
AR5接口和通信(核心课程):第7章
AR6功能组织(核心课程):第4、5章
AR7多处理器和可供选择的其他结构(核心课程):第9章
AR8性能增强(选修):第9、10章
AR9网络结构和分布式计算机系统(选修):第11章
为什么编写本教材
毋容置疑,当今的市场上已经充斥了大量有关计算机组成原理和体系结构的教材。在我们25年多该课程的教学经历中,已经使用过许多好教材。但是,每次讲授课程时,课程的内容都发生了进化演变。最后,我们总是发现需要编写更多的课程笔记来弥补教材中的材料和现在课程中需要讲授的材料之间的缺口间隙。我们常常发现我们对于计算机组成原理和体系结构的课程正在从计算机工程的方法转向对于这些主题的计算机科学的方法。在决定将计算机组成原理和体系结构的课程整合为一门课程时,我们却不能找到一本可以覆盖整个主题所需要的材料,一本真正从计算机科学角度编写,没有专用计算机术语,并且可以在介绍这些主题之前激发学生兴趣而设计的教材。
本教材希望传授现代计算机系统发展过程中所采用的设计思想,以及这种设计思想对计算机科学专业的学生会产生什么影响。但是,学生在学习和鉴赏计算机设计中那些不可触摸的方方面面的内容之前,必须首先牢固掌握一些基本概念。大多数关于计算机组成原理和体系结构的教材针对这些基本概念方面的内容的有关技术信息都进行了类似的介绍。但是,我们的教材特别注重这些信息应该覆盖的程度,即特别注重书中的内容与计算机科学专业学生的相关程度。例如,在本书的全部内容中,如果需要具体的论证,我们提供如个人计算机,企业级的计算机系统,以及大型主机等,这类在实践中最可能遇到的系统类型。我们避免其他类似书籍中流行的“PC 偏置(PC bias)”这类情况,希望同学们可以了解这些结构的差异和相似性,以及在当今自动化结构体系中扮演的角色。对许多人来说,常常忘记了教材的目的,也是唯一最重要的关键是学习。为了这个目的,我们加入了许多实际例证,并且努力把理论与实践相结合并做到平衡。
本书的主要特色
本教材采用了许多方法来强化计算机组成原理和体系结构的各种概念,以便更方便学生的学习。其中包括如下一些特色内容:
● 插入段:这些插入段包含一些相关的信息,这是一些课本章节的主题之外的内容。读者可以通过这些插入段对课程内容进行深入学习和研究。
● 实际例证:本书给出了许多来自现实生活的例证,可以帮助学生更好地理解计算机科学和技术是如何与实际问题相结合的。
● 本章小结:对每章的内容做一个简明扼要的重点总结。
● 深入阅读:这部分内容为那些想要详细研究该章主要课题的读者列出了一些额外的资源。其中的参考文献包括一些与主题有关的权威性文章和书籍。
● 复习题:每章都设计了一组复习问答题,以帮助读者牢固掌握该章的主要内容。
● 练习题:每章都挑选了大量的练习题,以加强对所学概念的理解和记忆。一些较难的练习题采用星号标记。
● 部分练习题答案和提示:为了使学生顺利完成练习题,本书还对每章一些有代表性的问题给出答案。本教材后面部分给出答案的问题采用菱形符号来标记。
● 专题内容:这部分为希望详细讲述某些专题的教师提供额外的资料,例如卡诺图和输入/输出等。这部分内容也附有练习题。
● 附录:书中的附录简要介绍或复习数据结构,包括堆栈、链接列表和树结构等。
● 术语表:内容广泛,包括各章节所有关键术语的简要定义。
关于本书的作者
本书的作者不但有超过25年的相关领域的教学经验,而且拥有20年行业实践的经历。由于这些背景,本书更加强调的是计算机组成原理和体系结构的基本原理,及其与现实世界的相互关系。通过一些现实生活的例证帮助学生更好地理解这些基本概念是如何应用于计算机世界的。
Linda Null:于1991年在美国爱荷华州立大学获得计算机科学博士学位,1989年获得爱荷华州立大学计算机科学硕士学位,1983年获得西南密苏里州立大学计算机科学教育硕士学位,1980年获得西南密苏里州立大学数学教育硕士学位,1977年获得西南密苏里州立大学数学和英语教育学士学位。她教授数学和计算机科学课程已经超过25年,目前担任宾夕法尼亚州立大学Harrisburg校区计算机科学研究生课程的协调管理员。她1995年成为宾夕法尼亚州立大学Harrisburg校区的一名教师。她的主要研究领域包括计算机组成原理和体系结构、操作系统和计算机安全等。
Julia Lobur:在计算机行业从业20余年。她是一位计算机系统的专家顾问,专业程序设计员/分析师,计算机系统和网络设计师,此外还担任软件开发经理。另外,她还兼职一些教学任务。
课程需要的预备知识
通常,本课程要求学生具有一年以上使用高级程序语言编程的经验。还需要学习一年以上的大学数学课程(微积分或离散数学),本教材使用了这些相关的数学概念。本书不要求具备计算机硬件知识。
计算机组成原理和体系结构通常作为进一步学习有关计算机高级课程的必修课程,例如操作系统(学生需要掌握有关存储器分层结构、并发、异常和中断等概念),编译器(学生要求了解有关指令系统、存储器寻址和链接等概念),网络(在学习将各元件组合成计算机网络之前必须了解计算机系统的各部分的硬件),当然,也是一些高级计算机体系结构课程的预备课程。
本书的组织结构和主要内容
本书希望全面简要地介绍计算机科学专业学生所必须掌握的基本概念。我们不认为要做到这一点,最好的方法是将内容划分为不同的主题模块。因此,本书采用了一种结构化的,但也是完整综合性的方式,围绕有关完整的计算机系统的各个层面来组织内容。
与许多流行的教材一样,我们采用自下而上(bottomup)的方法来安排课程内容。首先从数字逻辑层次开始,构建一个学生在学习本课程前就应该熟悉的计算机应用层面。教材的内容经过了精心的组织,以便使读者在进入下一个层次之前,能够完全理解本层次的内容。当读者到达应用层面时,有关计算机组成原理和体系结构的基本概念都已经讲述。我们的目的是让学生可以将计算机硬件知识与他们所掌握的有关编程的基本概念联系起来,获得有关计算机硬件和软件组合的一个完整视图。从根本上来说,对计算机硬件的了解程度会对计算机软件的设计和性能有重大影响。如果学生们能够打下一个计算机硬件知识的坚实基础,无疑会对他们将来成为一位出色的计算机科学家大有帮助。
有关计算机组成原理和体系结构的各种概念都涉及到计算机专业人员每天从事的日常工作的方方面面。由于计算机专业人员必须接受的教育领域众多,所以我们采取从高层次视野的角度来讲述计算机的体系结构,只有在理解某个特定的概念时才涉及低层次的具体内容。例如,在讨论指令系统(ISA)时,会在各种不同的实例研究的内容中引入与硬件有关的问题,以便区分和强化与ISA设计有关各种问题。
本书的正文分为11个章节和一个附录:
● 第1章:简要回顾了有关计算机的历史展,阐述了计算系统发展过程中的许多重大事件,读者可以比较直观地了解计算机发展是如何达到今天的成就的。本章介绍了一些计算机专业基本术语,计算机系统的各个组成部件,计算机系统的不同逻辑层次,以及冯 诺伊曼计算机模型。本章给读者一个有关计算机的高层次的视野,以及进一步深入学习计算机知识的动机和必要的基本概念。
● 第2章:全面介绍了数字和字符信息的各种表示方法。读者可以学习到有关基数和几种常用的数字表示技术,例如反码(1补)、补码(2补)和BCD编码,还讨论了加、减、乘、除等运算法则。此外,还介绍了EBCDIC、ASCII和统一字符编码。定点表示法和浮点表示法也在本章作了介绍。最后,简单讨论了数据记录的编码方式,错误检测和错误校正问题。
● 第3章:传统数字逻辑内容介绍。本章详细讨论了组合逻辑和时序逻辑电路。通过本章的学习读者可以理解比较复杂的中规模集成电路(MSI),例如译码器。本章还介绍了一些更加复杂的电路,如总线和存储器。在本章最后的专题内容中,介绍了数字逻辑电路的优化和卡诺图。
● 第4章:详细说明了基本的计算机组成原理,并且引入了许多基本概念,包括取指译码执行周期、数据通路、时钟和总线、寄存器传输表示法,当然还有CPU。本章展示了一个简单的体系结构,MARIE机器,以及相应的指令集系统(ISA)。通过这个模型机,读者可以对涉及程序执行的基本计算机体系结构有一个全面的了解。MARIE是一个经典的冯 诺伊曼体系结构的设计,其中包括一个程序计数器、一个累加器、一个指令寄存器、4096字节的存储器,以及两种寻址方式。这里引入了汇编语言编程原理,以加深读者对前面介绍的有关指令格式、指令模式、数据格式和控制等概念的理解。由于本书不是一本汇编语言的教材,所以并没有打算提供汇编语言编程的实用课程。本书介绍汇编语言的最初目的是为了理解并加深一般的计算机体系结构。但是,由于本章介绍了一个MARIE的仿真器,可以编写汇编语言程序,并利用仿真器汇编,而且可以在MARIE模型机上运行。本章介绍了两种控制方法:硬连线和微编程,并对这两种方法进行了比较研究。最后,对Intel和MIPS体系结构的计算机系统进行了比较研究,以强化本章学习的基本概念。
● 第5章:详细讨论了计算机指令系统。包括指令格式、指令类型和寻址方式。介绍了指令级的流水线。最后,通过学习真实的指令系统(ISA),包括Intel、MIPS和Java指令系统,来加强对本章的基本概念的理解。
● 第6章:介绍了基本的存储器概念,比如RAM和不同的存储器件。接下来,还介绍了一些先进的存储器分层结构概念,包括高速缓存存储器和虚拟存储器。本章还详细讨论了高速缓存的几种映射技术:直接映射、关联映射和组关联映射技术。另外,本章还详细介绍了覆盖、分页和分段技术、TLB,以及与高速缓存有关的算法和设备。在本书的网站中,还可以找到一个本章的指南和仿真器。
● 第7章:详尽描述了基本输入输出(I/O)、总线通信和协议等问题,以及常用的外存储器设备,如磁盘和光盘,以及它们的数据存储格式。还讨论了DMA,可编程的I/O接口,以及中断等。此外,还介绍了不同设备之间交换信息的各种技术。详细讨论了RAID体系结构和各种数据压缩技术。
● 第8章:主要讨论现行的几种编程工具(如编译器和汇编器),以及它们与运行这些程序的机器的体系结构之间的相互关系。本章的目的是加强程序员的计算机系统的观点与构成机器的硬件和体系结构之间的联系。此外,还介绍了操作系统,但仅涵盖了系统的体系结构和组成原理的细节部分,例如资源的使用和保护、陷阱和中断,以及各种其他服务。
● 第9章:对最近几年出现的其他可选择的体系结构做了一般性介绍。主要内容包括RISC、Flynn分类法、并行处理机、指令级并行处理、多处理器系统、互联网、共享存储器系统、高速缓存一致性问题、存储器模型、超标量计算机、神经网络、生物计算机、数据流计算机,以及分布式计算机系统等。本章的主要目的是告诉读者,计算机并不局限于冯 诺伊曼体系结构。并且促使读者考虑有关系统的性能问题,顺利过渡到下一章的学习。
● 第10章:主要介绍计算机的性能分析和管理问题。首先,引入了必要的数学预备知识,接着讨论了MIPS、FLOPS、基准,以及计算机科学家应该熟悉的各种性能优化技术:包括分支预测、推测执行和循环优化
● 第11章:主要介绍网络的组织和结构,包括网络元件和网络协议。其中,OSI模型和TCP/IP协议组合将在因特网的内容中介绍。本章不打算包罗万象,主要目的是讨论与互联网结构相关的计算机体系结构的内容。
附录的内容是关于数据结构的。主要考虑是学生可能需要简要介绍或复习有关堆栈、队列和链接列表(链表)等主题内容。
教师可以按照书中编排的顺序教学,但是如果需要也可以改变各章节教学的前后顺序。图P1给出了不同章节之间存在的相互依赖关系。
图P1本书各章之间的前后依赖关系(必要条件)
面向的读者
本书最初是为主修计算机科学的大学本科学生编写的。虽然如此,但本书也可以作为主修IS和IT专业的学生的教材。
本书所包含的内容远远超过了一个学期的教学内容(14周,42个学时)。但是,要让普通学生在一个学期的教学中掌握本书的所有内容难度较大。如果教师想详细讲述本书的全部主题内容,最好采用连续两个学期的时间安排。教师可以根据自己的教学经验和学生的实际需求,选择不同的教学安排,对主要的主题内容做不同程度的介绍。表P1为教师提供了一个各章节的学时安排上的建议,以及学生们预期可以达到的相应程度。
表P1学时安排建议
章节 一学期(42学时) 二学期(84学时)
学时数 预期水平 学时数 预期水平
1 3 掌握 3 掌握
2 6 掌握 6 掌握
3 6 掌握 6 掌握
4 6 熟悉 10 掌握
5 3 熟悉 8 掌握
6 5 熟悉 9 掌握
7 2 熟悉 6 掌握
8 2 了解 7 掌握
9 3 熟悉 9 掌握
10 3 了解 9 掌握
11 3 了解 11 掌握
我们希望在正式课程结束后,本书仍然可以作为一本有用的参考书。
支持材料
教材是学习中使用的基本工具,而丰富的补充材料和练习题可以极大地增强教材本身的使用和学习效率。各种练习题可以强化对主要概念的理解,为读者提供即时的学习反馈,通过重复过程来加强理解。为此,本书准备了以下附加材料:
● 教师手册(Instructors Manual):这本手册包含练习题答案和模拟考试题。此外,本手册还提供了一些有关概念的教学建议和学生通常可能会遇到的一些难点问题。
● 教学幻灯片(Lecture Slides):这些幻灯片包含的资料可供计算机组成与体系结构一个学期的授课。
● 图表(Figures and Tables):希望自己准备讲稿材料的教师可以下载各种图表。
● 存储器指南和仿真器(Memory Tutorial and Simulator):利用这套工具,学生们可以运用他们所学的有关Cache存储器和虚拟存储器的概念。
● MARIE仿真器(MARIE Simulator):利用这个仿真器可以汇编和运行MARIE程序。
● 自学软件(Tutorial Software):提供本书中各种概念的其他一些自学软件。
● 帮助网址(The Companion website):所有的软件、幻灯片和有关的材料都可以从本书的网址下载:
http://computersciencejbpubcom/ECOA
上面提供的练习题、考试样题和答案经过了多个教学班级的测试。使用本书的教师可以获得本书提供的教师手册,其中包括各个章节的教学建议和练习题答案,还有一些推荐的编程作业和模拟考试题。
教学指导模型:MARIE
在计算机组成与体系结构的教学中,结构模型的选择对教师和学生都有很大的影响。如果选择的模型过于复杂,教师和学生都可能会深陷于模型的细节中,而忽视了课堂所主要讲述的基本概念。对于实际的计算机体系结构,尽管会令人感兴趣,但是通常都具有许多独特的设计,这样使得结构无法在入门级的课程中使用。令事情更加困难的是,实际的体系结构每天都在发生变化。另外,一般情况下很难找到一本带有适合于特定教学环境的计算机平台的模型,实际上计算机的教学环境也在年复一年地不断发生变化。
为了解决这些问题,我们实现了一个自己的简单模型,MARIE,专门设计为教学使用。通过MARIE(一个真正直观而简单的机器体系结构)模型,同学们可以方便地学习计算机组成与体系结构的基本概念,包括汇编语言,而不至于陷入真实体系结构所存在的不必要的和复杂的细节之中。尽管模型很简单,但它模拟了一个计算机功能系统。MARIE机器仿真器,MarieSim,具有很好的用户友好的GUI界面,利用这个仿真器学生们可以:(1)生成和编辑源代码;(2)汇编源代码变成为机器目标代码;(3)运行机器代码;(4)调试程序。
特别地,MARIE具有如下特点:
● 支持第4章引入的MARIE汇编语言
● 具有一个综合文本编辑器,可以用于程序生成和修改
● 十六进制的机器语言目标代码
● 具有一个综合调试器,可以实现单步执行、断点、暂停、重启,以及寄存器和存储器的跟踪记忆等模式
● 具有一个图形存储器监视器,可以显示MARIE中的4096个地址
● 可以实现MARIE寄存器的图形显示
● 在程序执行过程中,会高亮显示正在执行的指令
● 具有用户可控制的执行速度
● 显示状态信息
● 用户可见的符号表
● 一个交互型的汇编器,用户可以纠正各种错误,并且自动重新进行汇编,而无需改变汇编环境
● 具有在线帮助
● 具有可选的存储器清除功能,用户可以指定存储器的范围
● 用户可以修改页帧的大小
● 具有一个小的学习模仿曲线功能,学生可以很快学会系统的原理和操作
MarieSim采用JavaTM语言编写,这个系统可以移植到任何一个可运行JavaTM虚拟机(JVM)的工作平台上。使用Java语言的学生可能希望可以阅读仿真器的源代码,并且甚至对模型的简单功能进行某种改进或添增。
图P2为MarieSim的图形界面,即一个MARIE机器仿真器的图形界面。显示屏由4部分组成:菜单条、中间的显示区域、存储器监视器和信息显示区域。
图P2MarieSim的图形界面
选择菜单让用户可以控制MARIE机器仿真器的各种动作和行为。这些选择菜单包括对用MARIE汇编语言书写的程序执行装入、开始、停止、设置断点和暂定等操作。
MARIE仿真器可以详细展示程序的汇编、装入和执行过程,所有这些操作都在一个简单的环境下完成。用户可以从程序中直接看到汇编语言的语句,同时可以看到对应的等效机器代码(十六进制形式)。同时也显示出这些指令的地址,用户可以在任意时刻都观察到存储器的任何部分的内容。高亮度部分用来显示程序最初装入的地址,以及程序运行时正在执行的各条指令。寄存器和存储器采用图形显示,学生们可以观察到指令是如何导致寄存器和存储器中的数值发生改变。
如果你发现错误
我们力图使本书在技术上尽可能正确。尽管本书的手稿经过了反复校对,但错误是难免的。我们非常感谢读者对本书任何需要纠正的错误的反馈。欢迎读者将您的意见和建议发送至电子邮件ECOA@jbpubcom。
致谢
很少有书籍可以由一两个人单独完成,本书也不例外。现在,我们意识到编写教材是一项十分艰巨的任务,并且需要许多人的共同努力。这里,很难对帮助本书完成的每个人一一致谢。因此,如果由于我们的疏忽在下面的致谢有遗漏的话,在此深表歉意。
多年来选修计算机组成与体系结构课程的全体学生,都对本书的各个主题内容提供了非常有价值的反馈意见。我们特别感谢使用本教材初级版本的同学,感谢他们在发现错误时表现出来的宽容和细心。
许多人都仔细阅读了本书的手稿,并且提出了宝贵的意见。这里,要特别感谢Marry Creel和Hans Royer。同样非常感谢花费时间和精力审阅本书的评论家。他们除了提出了许多很好的建议外,还保证了本书内容的质量。他们是:Victor Clincy(Kennesaw 州立大学)、Robert Franks(Central 学院)、Karam Mossaad(Texas大学Austin学院)、Michael Schulte(Missouri大学,StLouis)、Peter Smith(CSU Northridge)、Xiaobo Zhou(Wayne 州立大学)。
这里,还要特别感谢Karishma Rao,她为设计一个高质量的存储器软件模块付出了艰苦努力。
Jones 和Bartlett出版社的工作人员为本书出版做了出色工作,他们中的每一个人都应该得到特别的感谢。包括Amy Rose、Theresa DiDonato、Nathan Schultz和J. Michael Stranz。
我个人,Linda Null,在此要感谢我的丈夫Tim Wahls,这期间,他的日常生活中成为了“书的丈夫”,感谢他的非凡耐心,聆听有关本书的各种评论并坦率地发表对书籍内容的各种意见。感谢他在我编写本书期间,承担了全部做饭之类等生活琐事。我个人认为我嫁了一个非常好的男人。这里还要衷心感谢我的导师Merry McDonald,他教给我学习和教学的价值和快乐,并且全身心地投入到学习和教学工作中。最后,我要向Julia Lobur致以最衷心的感谢。没有她的参与,本书和本书使用的各种软件都不可能实现。
我个人,Julia Lobur,非常感谢我的合作伙伴Marla Cattermole。她的耐心和真诚使得我可以完成本书的工作。她精湛的厨艺使我大饱口福,而她丰富的智慧更使我受益匪浅。她在事业上勤奋努力,争取更高的学位。她的行为不断鞭策我,不得有丝毫的松懈。我同样要向Linda Null表达我最深致的谢意。首先敬佩她在计算机科学教育领域无与伦比的热忱和投入,以及她对学生们的无私奉献。然后,感谢她给了我这样一个机会,与她一起分享创作本书那种难以言表的经历。
本书揭示现代计算机的内部工作方式,采用大量真实的例子,引导读者逐步由浅入深地学习计算机体系结构。本书内容经过精心组织,层次分明,内容翔实。对计算机硬件没有预备知识的要求,非常适合于大学本科的教学。本书还设计大量难度不同的习题,帮助读者更好地理解计算机工作原理。 为配合本书的教学,作者将大量资源和习题收录在http://computerscience.jbpub.com/ECOA 网站上,供读者参考,也可登录华章网站下载。
黄河 等:暂无简介
计算机的出现给人类社会的发展带来了深刻变革,计算机革命就如同自然规律一般,不可避免地将人类带入数字化时代。今天,计算机科学无处不在,与人们的生活、学习、工作和娱乐都息息相关。
本书是针对计算机科学和电子工程等专业的学生编写的内容适中、适用性强和可读性好的计算机组成原理和体系结构教材。主要内容包括:数字逻辑和数字系统、机器层次的数据表示方法、汇编层次的机器组织和结构、存储器的组成和结构、接口和通信、功能组织、多处理器和可供选择的其他结构、性能增强、网络结构和分布式计算机系统等。
本书对教材的内容进行了精心的组织,由浅入深,层次分明,对计算机硬件没有预备知识的要求,非常适合于大学本科教学。本书不仅汇集了相关领域的基本原理,而且给出了许多来自现实生活的例证,帮助读者很好地理解计算机科学和技术是如何与实际问题相结合的。从而,可以大大激发读者的学习兴趣。不容置疑,阅读本书过程中,读者将发现很多乐趣。
本书突破了计算机组成原理和体系结构的常规教学模式,将原本复杂抽象的计算机问题组合成一些特定的案例,集合起来讲述这些内容,而不是简单地把单个问题堆积在一起。本书将计算机硬件和软件的知识组合起来,给读者一幅完整的图像。读者通过一些特定环境下的学习,可以很方便地将这些基本概念移植到实际工作中。通过这种将问题的解释、举例说明、习题练习、专题讨论和模拟研究组合在一起的教学方法,在一个合适的层面上给学生一个整体学习的感受,使读者可以很轻松地了解现代计算机的内在工作方式。
与一般的计算机组成原理和体系结构的教材不同,本书专门为教学精心设计了一个教学模型MARIE(一个真正直观而简单的机器体系结构)作为教学的切入点。通过MARIE模型,读者很容易掌握计算机组成原理和体系结构的各种基本概念,而不至于纠缠于真实体系结构所存在的那些不必要的和复杂的细节之中。
本书还提供了丰富的补充材料和练习题,可以极大地增强教材本身的使用和学习效率。各种练习题可以强化对主要概念的理解,为读者提供即时的学习反馈,通过重复过程来加强理解。
在本书的翻译过程中,我们力求忠实原作。何旭曙和裴颂伟在本书初稿翻译中协助完成了部分工作,在此表示衷心感谢。限于译者水平,本书的翻译难免会存在纰漏,恳请广大读者批评指正。
黄河
华南师范大学计算机学院
第1章引言
11概述
12计算机的主要组成部分
13计算机系统示例
14国际标准化组织
15计算机的发展史
151第零代:机械计算器
152第一代:真空管计算机
153第二代:晶体管计算机
154第三代:集成电路计算机
155第四代:超大规模集成电路计算机
156摩尔定律
16计算机的分层组织结构
17冯 诺伊曼模型
18非冯 诺伊曼模型
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
第2章计算机系统中的数据表示方法
21概述
22位置编码系统
23十进制数和二进制数之间的转换
231无符号整数的转换
232分数转换
233以2的指数幂为基数的数制之间的转换
24带符号整数的表示方法
241符号幅值表示法
242补码体系
25浮点表示法
251一个简单的模型
252浮点算法
253浮点误差
254IEEE745浮点标准
26字符编码
261二进制编码的十进制数
262EBCDIC
263ASCII
264统一字符编码标准
27用于数据记录和传递的编码方式
271不归零编码
272反转不归零编码
273相位调制编码
274频率调制编码
275运行长度限制编码
28错误检测与校正
281循环冗余码校验
282海明编码
283里德所罗门编码
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
第3章布尔代数和数字逻辑
31概述
32布尔代数
321布尔表达式
322布尔恒等式
323布尔表达式的化简
324反码
325布尔函数的表示方法
33逻辑门
331逻辑门的表示符号
332通用门电路
333多输入的门电路
34数字电路元件
341数字电路及其与布尔代数的相互关系
342集成电路
35组合逻辑电路ⅩⅦ
351基本概念
352典型的组合逻辑电路
36时序电路
361基本概念
362时钟信号
363触发器
364典型的时序逻辑电路
37电路设计
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
卡诺图专题
3A1概述
3A2卡诺图的描述和基本术语
3A3利用卡诺图化简二变量函数
3A4利用卡诺图化简三变量函数
3A5利用卡诺图化简四变量函数
3A6无关条件
3A7小结
练习题
第4章MARIE:简单计算机模型
41概述
411CPU的基本知识和组成原理
412总线
413时钟
414输入/输出子系统
415存储器组成和寻址方式
416中断
42MARIE
421体系结构
422寄存器和总线
423指令系统体系结构
424寄存器传输表示法
43指令的执行过程
431取指译码执行周期
432中断和输入/输出
44一个简单的程序
45有关编译程序的讨论
451编译程序的功能
452为什么使用汇编语言
46MARIE指令集的扩充
47有关译码的讨论:硬件译码和微程序控制译码
48实际的计算机体系结构
481Intel体系结构
482MIPS体系结构
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
第5章指令系统体系结构概览
51概述
52指令格式
521指令系统的设计
522小端和大端的位序问题
523CPU的内部存储机制:堆栈和寄存器
524操作数的数目和指令的长度
525扩展操作码
53指令类型
54寻址
541数据类型
542寻址方式
55指令流水线
56ISA体系结构的真实案例
561Intel体系结构
562MIPS体系结构
563Java虚拟机
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
第6章存储器
61概述
62存储器的类型
63存储器的层次结构
64高速缓存存储器
641高速缓存的映射模式
642置换策略
643有效存取时间和命中几率
644何时高速缓存的方法会失效
645高速缓存的写策略
65虚拟存储器
651分页
652使用分页的有效存取时间
653综合举例:同时使用高速缓存、TLB和分页
654分页和虚拟存储器的优缺点
655分段
656分页和分段的组合方式
66存储器管理实例
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
第7章输入/输出和存储系统
71概述
72AMDAHL定律
73输入/输出体系结构
731I/O的控制方法
732I/O总线操作
733深入讨论中断控制的I/O
74磁盘技术
741硬盘驱动器
742软盘
75光盘
751CDROM
752DVD
753光盘记录方法
76磁带
77独立磁盘冗余阵列
771RAID Level 0
772RAID Level 1
773RAID Level 2
774RAID Level 3
775RAID Level 4
776RAID Level 5
777RAID Level 6
778混合RAID系统
78数据压缩
781统计编码
782ZivLempel(LZ)字典系统
783GIF和PNG压缩
784JPEG压缩
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
选择磁盘存储器的实现专题
7A1概述
7A2数据传输模式
7A3SCSI
7A4存储器的区域网络
7A5其他的I/O连接
7A6小结
练习题
第8章系统软件
81概述
82操作系统
821操作系统的发展史
822操作系统设计
823操作系统服务
83保护环境
831虚拟机
832子系统和分区
833保护环境和计算机系统体系结构的发展进程
84编程工具
841汇编程序和汇编
842链接编辑器
843动态链接库
844编译器
845解释器
85Java:一种综合语言
86数据库软件
87事务管理器
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
第9章可选择的体系结构
91概述
92RISC计算机
93FLYNN分类方法
94并行和多处理器体系结构
941超标量和VLIW体系结构
942矢量处理器
943互连网络
944共享存储器的多处理器
945分布式计算
95新的并行处理方法
951数据流计算
952神经网络
953脉动阵列
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
第10章性能度量和分析
101概述
102基本的计算机性能方程式
103数学预备知识
1031平均数的意义
1032统计学和语义学
104基准
1041时钟速率、MIPS和FLOPS
1042综合基准:Whetstone、Linpack和Dhrystone
1043标准性能评估公司基准
1044事务性能委员会基准
1045系统仿真
105CPU性能优化
1051分支优化
1052使用好的算法和简单的代码
106磁盘性能
1061性能问题
1062物理性能
1063逻辑性能
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
第11章网络组织和体系结构
111概述
112早期的商业计算机网络
113早期的学术和科学网络:因特网的起源和体系结构
114网络协议1:ISO/OSI协议
1141一个比喻
1142OSI参考模型
115网络协议2:TCP/IP网络结构
1151IPv4网际协议层
1152IPv4遇到的困难
1153TCP
1154TCP的工作原理
1155IPv6
116网络组织结构
1161物理传输介质
1162网络接口卡
1163转发器
1164集线器
1165交换机
1166网桥和网关
1167路由器和路由
117高容量数字链路
1171数字分层体系
1172ISDN
1173异步传输模式
118因特网的概况
1181走进因特网
1182遨游因特网
本章小结
深入阅读
参考文献
基本概念和术语复习
练习题
附录A数据结构和计算机
术语表
部分练习题答案和提示