现代计算机组成与体系结构
上QQ阅读APP看书,第一时间看更新

前言

本书介绍了在现代处理器和计算机体系结构中使用的关键技术和组件,并针对具体需求讨论了不同体系结构的决策如何影响计算机的配置优化。

简单来说,现代计算机是一种复杂的设备。然而,当以层次化的方式来看时,每一层的复杂功能就变得明晰了。本书涵盖了众多主题,但只对各个主题进行有限深度的探讨。本书的目标是对现代计算设备进行简单明了的介绍,包括其中可能出现的每一项重要技术和每一个子系统,并阐释设备与其他系统组件之间的关系。

本书不会提供一份冗长的参考书单,如果读者想深入阅读,可以自行在互联网上查找相关内容。

学完本书,读者将掌握目前在广泛多样的数字系统中所使用的计算机体系结构,还将了解体系结构的发展趋势,以及未来几年可能出现的一些颠覆性技术,这些突破或许会极大地影响计算系统体系结构的发展。

目标读者

本书适用于软件开发人员、计算机专业学生、系统设计师、计算机科学家、逆向工程师,以及所有希望理解现代计算机系统(从微型嵌入式设备到智能手机,再到仓储规模的云服务器群等)的体系结构和设计原则的人。

本书内容

本书共14章,各章主要内容如下:

第1章从自动化计算设备的简史开始,介绍了推动设备性能飞跃的重大技术进步。之后讨论了摩尔定律,评估了其在过去几十年的适用性和对未来的影响。最后以6502微处理器为例,介绍了计算机体系结构的基本概念。

第2章介绍了作为开关元件的晶体管,并解释了其在构造逻辑门中的应用。然后介绍了如何结合简单的门来构建触发器和寄存器。该章还介绍了时序逻辑(即包含状态信息的逻辑),最后讨论了时钟数字电路。

第3章从通用处理器的概念性描述开始介绍组成处理器的要素。该章讨论了指令集、寄存器集、指令加载、解码、执行和排序的概念,还讨论了内存的加载和存储操作。该章还涵盖了分支指令及其在循环处理和条件处理中的应用。最后介绍了导致中断处理和I/O操作的一些实际因素。

第4章讨论了包括多级缓存在内的计算机存储及其与处理器的接口,讲述了包括中断处理、缓冲和专用I/O处理器在内的I/O需求。该章还讨论了键盘、鼠标、显示器和网络接口等I/O设备的一些特定需求。最后给出了这些组件在现代计算机应用中的实例,包括智能移动设备、个人计算机、游戏系统、云服务器和专用机器学习系统。

第5章讨论了如何实现计算机操作系统必须提供的高级服务,包括磁盘I/O、网络通信以及与用户交互。该章描述了从处理器指令集和寄存器级别开始实现这些特性的软件层。最后介绍了引导、多处理和多线程等操作系统功能。

第6章探索了对大多数用户不直接可见的计算领域,包括实时系统、数字信号处理和GPU处理。该章还讨论了与每个计算领域相关的特定需求,并介绍了实现这些特性的现代设备。

第7章深入研究了冯·诺依曼体系结构、哈佛体系结构和改进型哈佛体系结构等现代处理器体系结构。该章讨论了分页虚拟内存的实现,介绍了内存管理功能在计算机体系结构中的实际实现,并描述了内存管理单元的功能。

第8章讨论了计算机系统中的性能提升技术,这些技术旨在使系统达到峰值执行速度。该章主要介绍提高系统性能的重要技术,包括缓存、指令流水线、指令并行和SIMD处理。

第9章重点关注通常在处理器指令集级别实现的扩展,以提供超出一般数据处理需求的附加系统功能。提供的扩展包括特权模式、浮点数、功耗管理和系统安全管理。

第10章研究了现代处理器(x86、x64和ARM等)设计中的体系结构和指令集特性。处理器长达几十年的多轮更新换代往往面临兼容性挑战,对历史特性的支持需求往往会增加下一代处理器的复杂性。该章研究了由支持计算机历史特性需求引起的处理器体系结构的一些问题。

第11章介绍了RISC-V处理器体系结构及其指令集。RISC-V是一个完全开源、免费的精简指令集计算机体系结构规范。其完整的用户模式(非特权)指令集规范已经发布,并且当前有许多该体系结构的硬件实现可用。对指令集进行多种扩展的规范开发工作正在进行中。该章涵盖RISC-V体系结构的特性和可用变体,介绍了其指令集,还讨论了RISC-V体系结构在移动设备、个人计算机和服务器中的应用。

第12章介绍了与处理器虚拟化相关的概念,阐述了虚拟化带来的好处。该章介绍了基于开源工具和操作系统的虚拟化实例,这些开源工具可以在通用计算机上执行各种计算机体系结构和操作系统的指令集精确表示。该章还讨论了虚拟化在开发和部署实际的应用程序中的好处。

第13章结合前几章讨论的主题,开发了一种方法来设计计算机系统以满足用户的独特需求。该章讨论了一些具体的应用程序类别,包括移动设备、个人计算机、游戏系统、互联网搜索引擎和神经网络。

第14章展望计算机体系结构的未来。该章回顾了计算机体系结构发展过程中的重大进步和当前的发展趋势,并推断了这些趋势可能的发展方向,还讨论了可能改变计算机体系结构未来发展的潜在颠覆性技术。最后,该章为计算机架构师的发展提供了建议,以帮助他们适应未来的发展。

如何利用本书

本书每一章的末尾都有一个习题集,建议读者尝试解答所有习题。书中提供了所有习题的完整答案,读者也可以从https://github.com/PacktPublishing/Modern-Computer-Architecture-and-Organization上查阅答案。

如果代码示例和习题答案有更新,将会放在现有的GitHub存储库中。

我们还在https://github.com/PacktPublishing/上提供了丰富的图书和视频列表以及对应的代码包。

代码运行

可以访问https://bit.ly/2UWc6Ov查看本书代码的运行视频。

本书约定

文本中的代码体:用于指示代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄。例如:“使用SBC指令执行减法会使新手6502汇编语言程序员更加困惑。”

代码块示例:

命令行输入或输出如下所示:

粗体:表示一个新的术语、一个重要的词,或读者在屏幕上看到的词。例如:“因为有4个集合,所以物理地址的集合字段减少到2位、标志字段增加到24位。”

提示或重要的说明

像这样展现。