在广大计算机程序员和工程师中,几乎没有人不知道Patterson和Hennessy的大作,而今RISC-V版的推出,再次点燃了大家的热情。RISC-V作为一种开源体系结构,从最初用于支持科研和教学,到现在已发展为产业标准的指令集。正在和即将阅读本书的年轻人,你们不仅能够从先行者的智慧中理解RISC-V的精髓,而且有望创建自己的RISC-V内核,为广阔的开源硬件和软件生态系统贡献力量。
—— Krste Asanovi(RISC-V基金会主席)
教材的选择往往是一个令人沮丧的妥协过程——教学方法的适用度、知识点的覆盖范围、文辞的流畅性、内容的严谨度、成本的高低等都需要考虑。本书之所以是难得一见的好书,正是因为它能满足各个方面的要求,不再需要任何妥协。这不仅是一部关于计算机组成的教科书,也是所有计算机科学教科书的典范。
—— Michael Goldweber(泽维尔大学)
这就是COD(Computer Organization and Design: The Hardware/Software Interface),一本神书,两位大师,数年间不断推陈出新。现在,随着RISC-V中文版的新鲜出炉,RISC-V版、ARM版、MIPS版三驾马车配齐,是时候跟着COD奔向体系结构教学的新黄金时代啦!
本书由2017年图灵奖得主Patterson和Hennessy共同撰写,是计算机体系结构领域的经典书籍,强调软硬件协同设计及其对性能的影响。采用开源的RISC-V指令系统体系结构, 讲解硬件技术、汇编语言、算术运算、流水线、存储层次、I/O以及并行处理器。新内容涵盖平板电脑、云基础设施、ARM(移动计算设备)以及x86(云计算)体系结构,新实例包括Intel Core i7、ARMCortex-A53以及NVIDIA Fermi GPU。适合计算机体系结构领域的专业技术人员参考,也适合高等院校计算机相关专业的学生阅读。
↑ 2018年ISCA现场,Hennessy和Patterson与图灵的半身像合影
Patterson和Hennessy认为,在学习计算机科学与工程时,除了掌握计算的基本原理外,还应该了解该领域的最新进展。同时,他们还认为,各种计算领域中的读者都应学习计算机系统的组成理论,因为这是决定计算机系统的功能、性能、能耗甚至最终成功与否的关键。现代计算机技术需要各个计算领域的专业人员对计算机软件和硬件都有所了解。软硬件在不同层次上的相互影响,恰好也提供了一个理解计算基础的框架。不管你的关注点是硬件还是软件,专业是计算机科学还是电子工程,计算机组成和设计的核心思想都是相同的。因此,本书的重点是展示硬件和软件之间的关系,并重点关注现代计算机的基本概念。
本书从第1版起就提出了以上观点,最近从单处理器向多核微处理器的转变再一次见证了这个颇有远见的观点。编程人员不想改造程序,只想依赖计算机体系结构设计者、编译器设计者或者芯片设计者来让自己的程序运行得更快、能效性更好—这样的时代已经一去不复返了。为了运行得更快,需要把程序改造成并行的。让程序员尽可能不知道它们正在使用的底层硬件的并行属性,这是许多研究者的目标,但这需要花费很长时间才能实现。作者的观点是,至少在接下来的十年里,如果想让程序在并行计算机上运行得更为高效,大多数编程人员还是需要了解硬件/软件接口的。
本书的读者包括不了解汇编语言或者逻辑设计,但需要了解计算机基本组成的人;同时也包括拥有汇编语言或者逻辑设计背景,但想学习如何设计计算机或者想搞清楚系统的工作原理及原因的人。
关于RISC-V版本
Patterson和Hennessy如是说:
选择合适的指令系统对于计算机体系结构教材来说至关重要。不管是否为主流指令系统,我们都不希望介绍那些具有不必要的新奇特性的指令系统。理想情况是,你学习的第一个指令系统应该是一个典范,就像你的初恋一样。令人惊讶的是,你学习的第一个指令系统和你的初恋都会令你分外怀念。由于当时有太多选择,所以在《量化研究》的第1版中我们提出了自己的RISC风格指令系统。之后,MIPS指令系统因其简洁的风格而日益受到关注,我们在本书第1版时选择了它,并且《量化研究》的后续版本也是如此。MIPS一直为我们和读者提供了很好的服务。
20年来,使用MIPS指令系统的芯片成千上万,并且还在不断生产出来,它们一般用于嵌入式设备,而该领域的指令系统几乎不可见,因此,目前很难找到一台真实的计算机,让读者能够下载并运行MIPS程序。好消息是,最近一个开放的RISC指令系统首次亮相,并快速获得了不少追随者。它就是由加州大学伯克利分校(UCBerkeley)开发的RISC-V指令系统,它不仅消除了MIPS指令系统的弊病,而且还具备指令系统应有的简洁、优雅和现代的特点。 RISC-V指令系统不是闭源的,它提供了一套开源的模拟器、编译器、调试器等,这些都很容易获得。它甚至还提供开源的使用硬件描述语言编写的RISC-V处理器实现。除此之外,很快还会提供低成本的硬件平台,供运行RISC-V程序使用。读者不仅可以学习这些设计,还能修改它们并贯穿整个实现流程,以充分了解这些修改对性能、晶片面积和能耗方面的影响。这对于计算产业和教育行业来说是一个令人激动的机会。截止到写这篇前言之时,已经有40多家公司加入到RISC-V基金会中,赞助商名单几乎囊括了除ARM和Intel以外的所有主要厂商,包括AMD、Google、HP、IBM、Microsoft、NVIDIA、Oracle和Qualcomm公司。正是因为这些,我们为本书 撰写了RISC-V版本 。
RISC-V同时提供32位和64位指令系统,它们的指令类型基本相同。我们可以切换指令系统,并保持地址宽度为32位。我们的出版商调查了本书的读者群,发现75%的读者首选大型或中型地址空间,因此我们选用64位地址空间,这比32位地址空间更有意义。相比MIPS版本,RISC-V版本唯一的修改就是那些与指令系统相关的描述,主要影响第2、3和5章中的虚拟存储部分,以及第6章中的VMIPS示例。在第4章中,我们改用RISC-V指令,修改了相关的图表,添加了一些“详细阐述”模块,这些变化没有我们想象中那么复杂。第1章和其余的附录几乎没有变化。由于存在大量的在线文档,并且与RISC-V相关的修改过多,这使得MIPS版本中的附录A很难被替换(附录A是指“汇编器、链接器和SPIM模拟器”,详见MIPS第5版)。另外,第2、3和5章中包含上百条RISC-V指令的快速概览,这些指令都不在本书详细介绍的RISC-V核心指令范围内。
请注意,我们并没有正式地、永久地切换到RISC-V指令系统。比如,除了新出的RISC-V版本,目前还可以购买本书的ARMv8版和MIPS版。
未来存在如下可能性:读者需要所有不同指令系统的版本,或可能只需要一个版本。