前 言Digital Logic Design and Computer Organization with Computer Architecture for Security编写本书的目的是让读者通过一本教科书全面理解数字逻辑设计和计算机组成。此外,本书还有独立的一章介绍安全的计算机体系结构。
本书涵盖数字逻辑设计的基本原理和Verilog硬件描述语言设计。各个章节分别讨论简单和复杂的组合电路和时序电路的设计方法。本书概述了电路设计的现代工具和方法,而Verilog实例仅用于展示该语言的基本特性和可综合特性。如有需要,教师可以选择用VHDL替代。不过,本书并不要求使用硬件描述语言。
本书内容包括存储器组织、处理器核心和处理器组织结构,以及硬件支持的计算机安全等。由于技术的进步以及对高速和低功耗设计的需求改变了计算机组织结构的基础,因此本书尝试不仅提供简单的实例用于展示基本的设计概念,而且揭示对现代计算机设计目标的理解。
本书还从指令集体系结构角度讨论了计算机体系结构的概念,包括支持安全指令执行的架构、流水线和并行化,以及存储器层次结构。本书尝试提供大量实例来展示如何应用流水线和并行化技术来提升并发处理能力并降低或隐藏延迟(这是两个影响性能的因素)。程序代码实例也用于展示CPU体系结构与编译器、编程方法和性能之间的关系。
各章节概述本书一共有11章。第1章概述了数字系统、计算创新、数码系统、数字逻辑设计和计算机组成/体系结构及安全。
第2章和第3章涵盖简单和复杂的组合电路,包括整型和浮点算术运算。在第2章讨论小型电路的设计方法时,假定若需要化简超过4个输入变量的真值表,学生可以利用逻辑化简软件,例如从互联网上免费下载的Espresso。这一章还介绍了设计工具、结构级和行为级设计模型,以及利用可编程逻辑器件的电路设计,也包括Verilog设计实例及其综合和仿真结果。第3章涵盖设计大型组合电路的方法和整型及浮点数计算机算术运算,同样给出了设计实例。
第4~6章涵盖了简单和复杂的时序电路,从基本模型到复杂的数据通路与控制,再到时序约束、设计效率和功耗利用。第4章介绍了锁存器、触发器及其时序要求。第5章介绍了有限状态机(FSM)设计及其时序要求和异步输入的处理。第6章介绍了单周期、多周期和流水线数据通路与控制。设计实例展示了数据通路和基于FSM、微程序及流水线的三种控制单元组织,此外还给出了几个数据通路设计实例,包括无符号和带符号乘法运算以及二维虚拟目标旋转。
第7章专注于存储器,包括SDRAM技术,以及包括交叉和多通道在内的存储器设计。这一章也介绍了存储器通信协议、性能,以及均匀存储器存取(UMA)和非均匀存储器存取(NUMA)组织;还讨论了一些编程方法实例,这些实例可以利用NUMA组织结构的优势来提高性能。
第8章讲解CPU设计,从单周期和流水线到精简指令集计算机(RISC)、深度流水和分支预测,再到静态和动态指令集并行(ILP),直到多线程。章中包括CPU数据通路实例的设计和仿真,并给出了编程代码实例来说明通过编译器优化改进性能、分支预测、ILP和多线程。
第9章专注于微型计算机体系结构,内容从简单的总线结构到集成结构再到现代点到点结构的历史脉络,也包括I/O端口寻址、中断驱动I/O和直接存储器访问(DMA),以及现代“即插即用”设备控制器接口,例如USB主机控制器接口。这一章还讨论了中断和相关操作系统任务,中断处理CPU的数据通路和指令集也被用作实例来解释简单计算机的体系结构和操作。
第10章涵盖存储器层次结构的原理及其组织。这一章还讨论了单处理器系统中的cache一致性,也介绍了共享存储器多处理器系统中的cache一致性问题,通过实例从缺失率、硬件数量和功耗等方面说明不同的cache映射技术的优势,还介绍了虚地址转换、页表管理和用于转换虚地址的可选处理器的组织结构。
第11章从应用在计算机体系结构中的安全工程方法的基本概念入手,接着引出访问控制、安全策略模型、硬件安全策略机制和软件/物理攻击机制,并介绍了加密技术。这一章还介绍了基于安全协处理器(用于实现安全数据存储和通信等)或者安全通用处理器实现的可信计算基(TCB)架构,也详细介绍了实现程序(指令和数据)机密性和完整性的安全处理器的体系结构。
虽然第11章的内容被编排在一起以方便读者阅读,但其内容也同时包含在其他章节中。例如,当学到时序电路设计技术时,学生就可以设计简单的加密电路。还有一些该章涉及的内容也在其他章节中出现过,包括硬件木马和硬件安全策略机制、存储器认证、中断的安全处理、安全协处理器和安全处理器架构等。为了给出第11章内容与其他章节相关内容的关联,第1章、第3章、第5~10章的练习部分都列出了第11章的练习,并加注说明为“计算机安全”。教师在这些章节中可以选择所列的习题。
为便于参考,关键字在第一次出现时会加粗显示。缩写的关键字不加粗,但少数会标出完整术语,便于读者阅读。选择本书为其课程必修教材的学术机构的教师可获得练习答案和PowerPoint幻灯片。
如何阅读本书大多数人认为,本书对于数字设计和计算机组成的讨论深度明显高于市面上相似的教材。对于这两个主题,本教材的目标是在覆盖的广度和深度方面更加平衡。在一个学期中,教师既能审慎地选择知识点,也可以选择其课程中需要强调的每个知识点的深度和广度。本教材也包含了足够的内容来适应两个季度或两个学期的课程安排,以便深入讲授数字逻辑设计和计算机组成/体系结构两部分内容,也使学生有更多的时间来深入理解设计练习。下面是对读者阅读本书的方式的几点建议:
1.对于没有或只有有限的数字逻辑基础的本科生,课程内容可以包括第1~5章和第6~9章的部分知识点,以及其余章节中的典型知识点。某些章节和设计实例可以跳过。
2.对于具备一些数字逻辑基础的计算机科学和计算机工程的本科生,课程内容可以包括第1章、复习或选讲第2~5章中的部分知识点、第6~10章全部知识点和第11章的部分知识点。
3.对于那些向没有或只有有限的数字逻辑设计和计算机组成基础的研究生授予学位的学术机构,本书是一本理想的教科书,因为其将数字逻辑设计和计算机组成及体系结构整合到了一本书中。
4.希望更新其数字逻辑和计算机组成及体系结构知识以及希望学习安全相关的计算机体系结构概念的专业人士可以从本书中获益。
致 谢Digital Logic Design and Computer Organization with Computer Architecture for Security许多人都对本书做出了宝贵的贡献。我要特别感谢同事Isaac Ghansah和Thomas Mathews,他们对本书内容做出了重要贡献并提出了宝贵的建议。我也要感谢Martin Nicholes(现在英特尔工作),他对第11章的内容提出了有见地的参考意见。我还要感谢审稿人给出的深思熟虑的意见,本书终稿的部分内容根据他们的建议做了修改。
我的许多学生也对本书的初稿提供了有价值的反馈,并帮助找出了文中的一些错误。他们对本书中某些实例的详尽分析为发现书中的文字和拼写错误帮助颇多。我要特别感谢Kevin Schultz、Andrew Larsen、Branden Garner、Chris Dalisay、Thomas Lee、Robert Carreras、Ian Reif和Matt Larsen,也欢迎大家帮助找出书中未修正的错误并提出任何改进本书的建议。我还要感谢McGraw-Hill出版社的赞助编辑Michael McCabe、编辑主管Donna Martone、著作监督Lynn Messina、文字编辑Lisa McCoy、美术指导Jeff Weeks,以及项目经理Dheeraj Chahal和MPS公司的Surendra Shivam,他们提供了大力支持,为本书设计了封面并完成了最后加工。
最后但同样重要的是,我要感谢妻子Gita和儿子Kian与Ryon的耐心和支持,特别是忍受我长时间忘我地投入本书的写作。
译者序Digital Logic Design and Computer Organization with Computer Architecture for Security信息技术发展和应用的速度如此之快,以至于层出不穷的新概念和新技术使人眼花缭乱、应接不暇。无论是物联网、移动互联网、云计算、大数据,还是人工智能、智能硬件、机器学习、智能人机交互,这些热点应用领域都要依靠计算机系统硬件提供的强大计算能力。因此,不仅是计算机专业,越来越多的各领域的专业人士都需要理解计算机系统硬件的完整组成和基本工作原理,进而在系统层面掌握计算机工作的全貌。
我在北京邮电大学从事“计算机组成原理”课程教学二十余年,深刻感觉到,计算机系统硬件课程对教和学双方而言难度都非常大。开设“计算机组成原理”课程的目的是:帮助学生理解构成计算机硬件的基本电路的特性和设计方法;使学生了解计算机系统整体概念,理解指令在计算机硬件上的执行过程;理解计算机系统层次结构,理解高级语言程序、指令系统体系结构、编译器、操作系统和硬件部件之间的关系;让学生站在系统的高度考虑和解决问题,培养具有系统观的软件/硬件贯通人才。因此,就教师而言,如果自身没有对计算机系统硬件设计的深入体会,也就不可能让学生深入地理解计算机系统的整体组成和工作原理。
本书在计算机系统硬件教学方面做了非常有益的探索。作者Nikrouz Faroughi教授从密歇根州立大学获得计算机科学硕士学位、电子工程硕士学位和计算机工程方向的电子工程博士学位,并曾作为顾问和技术经理在英特尔公司工作,拥有丰富的工程经验,对计算机系统硬件有深入的了解。
本书是一部从专业角度讨论计算机系统硬件技术的完整教材。通读本书可以看出,本书与其他教科书相比具有鲜明的特色。
第一个特色是深入浅出、循序渐进,并带有丰富的教学实例。作者从简单的数字逻辑电路设计基础开始,由浅入深,讲解了组合逻辑和时序逻辑电路的设计技术、计算机组成的基本原理和计算机体系结构的相关概念。全书共11章。第1章是计算机系统相关概念的概述;第2~5章分别讨论组合逻辑电路和数字逻辑电路的设计;第6章则从大型时序电路设计过渡到计算机系统控制器的设计;第7~9章分别讨论存储器、指令集体系结构和系统互连(总线与输入/输出系统);第10章讨论多级存储体系。
第二个特色是把计算机体系结构与系统安全问题相关联。安全问题是现代信息系统面临的重大挑战,如何在计算机系统硬件层面支持系统安全是在当今网络互连时代必须面对的问题。第11章用较大篇幅深入探讨了现代计算机系统如何利用硬件支持安全的体系结构。这一章从安全工程的基本概念入手,引出访问控制、硬件安全策略机制和软件/物理攻击机制,并介绍了加密技术、安全协处理器及安全通用处理器等诸多安全计算机体系结构的相关概念与方法。
第三个特色是突出现代计算机的设计理念。由于移动计算和高性能计算对系统性能和功耗的要求,以及现代半导体技术进步和信息技术发展提供的可能性,计算机组织结构的基础已经发生了改变。本书不仅提供简单的实例用于展示基本的设计概念,而且试图通过这些实例揭示作者对现代计算机设计目标的理解。书中也提供大量实例来展示如何应用流水线和并行化技术提升并发处理能力,并揭示处理器体系结构和编译器、编程方法和性能之间的关系。
因此,本书既适合计算机及相关专业的本科学生作为相关课程的参考教科书,也可用于电子信息类相关专业人士完整理解计算机系统的整体组成和硬件工作原理。建议读者根据自身情况有选择地阅读书中的相关章节,原书前言给出了如何选择章节的建议。
本书中文版的翻译工作由我所在的北京邮电大学嵌入式系统与网络通信研究中心的教师及在校和已毕业的研究生共同完成。我与张通、黄梦凡、徐继彬、刘欣、邝坚、卞佳丽和刘健培等分别完成了初稿翻译、技术指导、术语整理和审校等工作。感谢机械工业出版社华章公司的曲熠编辑和朱秀英编辑在翻译过程中提出的诸多有益的建议。
在翻译过程中,我们一直期望在精确反映作者原意的基础上尽可能照顾到中文的表述习惯,力求在准确性和流畅性之间取得平衡。由于翻译时间仓促和译者水平有限,书中难免存在错误和疏漏,恳请读者谅解并指正。
戴志涛2017年3月于北京邮电大学