艾伦·克莱门茨,靠前有名的计算机体系结构教育的推动者和践行者。他于1 997年获得英国拉夫堡大学(Loughborough University)博士学位,随后加入提赛德大学(University of Teesside)计算机科学系。在20世纪70~80年代,他编写了两本计算机体系结构领域的重要教材:《计算机硬件原理》(The Principles of Computer Hardware)和《微处理器系统设计》(Microprocessor Systems Design)。
前 言Computer Organization and Architecture: Themes and Variations21世纪是科学和技术奇迹频出的时代。计算机已经做到了人们期望它做到的一切——甚至更多。生物工程解开了细胞的秘密,使科学家能够合成10年前无法想象的新药。纳米技术让人们有机会窥探微观世界,将计算机革命与原子工程结合在一起创造出的纳米机器人,也许有一天能够植入人体,修复人体内部的创伤。普适计算带来了手机、MP3播放器和数码相机,使人们彼此之间能够通过Internet保持联系。计算机是几乎所有现代技术的核心。本书将阐述计算机是如何工作的。从20世纪50年代起大学就开始教授这门被称为计算的学科了。一开始,大型机主导了计算,这个学科包括对计算机本身、控制计算机的操作系统、语言和它们的编译器、数据库以及商业计算等的研究。此后,计算的发展呈指数增长,到现在已包含多个不同的领域,任何一所大学都不可能完全覆盖这些领域。人们不得不将注意力集中在计算的基本要素上。这一学科的核心在于机器本身:计算机。当然,作为一个理论概念,计算可以脱离计算机而独立存在。实际上,在20世纪三四十年代计算机革命开始之前,人们已经进行了相当多的关于计算机的科学理论基础的研究工作。然而,计算在过去40年里的发展方式与微处理器的崛起紧密联系在一起。如果人们无法拥有价格非常便宜的计算机,Internet也无法按照它已有的轨迹取得成功。由于计算机本身对计算的发展及其发展方向产生了巨大影响,在计算的课程体系中包含一门有关计算机如何工作的课程是非常合理的。大学里计算机科学或计算机工程方向的培养方案中都会有这样一门课程。实际上,专业和课程的认证机构都将计算机体系结构作为一项核心要求。比如,计算机体系结构就是IEEE 计算机协会和ACM联合发布的计算学科课程体系的中心内容。介绍计算机具体体现与实现的课程有各种各样的名字。有人将它们叫作硬件课,有人管它们叫作计算机体系结构,还有人把它们叫作计算机组成(以及它们之间的各种组合)。本书用计算机体系结构表示这门研究计算机设计方法和运行方式的课程。当然,我会解释为什么这门课程有那么多不同的名字,并会指出可以用不同的方式来看待计算机。与计算机科学的所有领域一样,计算机体系结构也随着指令集设计、指令级并行(ILP)、Cache缓存技术、总线系统、猜测执行、多核计算等技术的发展而飞速进步。本书将讨论所有这些话题。计算机体系结构是计算机科学的基石。例如,计算机性能在今天的重要性超过了以往任何时候,为了做出最佳选择,即便是那些购买个人电脑的用户也必须了解计算机系统的结构。尽管绝大多数学生永远不会设计一台新的计算机,但今天的学生却需要比他们的前辈更全面地了解计算机。虽然学生们不必是合格的汇编语言程序员,但他们一定要理解总线、接口、Cache和指令系统是如何决定计算机系统的性能的。而且,理解计算机体系结构会使学生能够更好地学习计算机科学的其他领域。例如,指令系统的知识就能使学生更好地理解编译器的运行机制。写作这本书的动机源于我在提赛德大学(University of Teesside)讲授计算机体系结构中级课程的经历。我没有按照传统方式授课,而是讲授了那些能够最好地体现计算机体系结构伟大思想的内容。在这门课程里,我讲授了一些强调计算机科学整体概念的主题,对学生的操作系统和C语言课程均有不小的帮助。这门课非常成功,特别是在激发学生的学习动力方面。任何编写计算机体系结构教材的人必须知道这门课会在3个不同的系讲授:电子工程(EE),电子与计算机工程(ECE),计算机科学(CS)。这些系有自己的文化,也会从各自的角度看待计算机体系结构。电子工程系和电子与计算机工程系会关注电子学以及计算机的每个部件是如何工作的。面向这两个系的教材会将重点放在门、接口、信号和计算机组成上。而计算机科学系的学生大都没有足够的电子学知识背景,因此很难对那些强调电路设计的教材感兴趣。实际上,计算机科学系更强调底层的处理器体系结构与高层的计算机科学抽象之间的关系。尽管要写出一本能够同时满足电子工程系、电子与计算机工程系和计算机科学系的教材几乎是不可能的,但本书进行了有效的折中,它为电子工程系和电子与计算机工程系提供了足够的门级和部件级的知识,而这些内容也没有高深到使计算机科学系的学生望而却步的程度。本科计算机体系结构课可在三个不同层次上讲授:介绍性的、中级的和高级的。有些学校会讲授全部三个层次的内容,有些学校则将这些内容压缩为两个层次,还有一些学校只进行介绍。本书面向那些学习第一层次和第二层次计算机体系结构课的学生,以及那些希望了解微处理器体系结构当前进展的职业工程师。学习本书的唯一前提条件是读者应了解高级语言(如C)的基本原理和基本的代数知识。由于本书覆盖了计算机体系结构的基础内容、核心知识以及高级主题,内容丰富,篇幅很大,适用于计算机体系结构相关的不同课程裁剪使用。综合考虑国内高校计算机组成与结构系列课程的教学目标和课程设置,中文版分成了两本《计算机组成原理》和《计算机存