![]() ![]() |
现代计算机组成与体系结构(原书第2版) [美]吉姆·莱丁 ![]() 本书是一本关于现代处理器与计算机体系结构的实用指南,既深入浅出地介绍了现代计算机系统的工作原理并探索了处理器的内部行为,又通过大量实例阐释计算机体系结构的应用,并对计算机体系结构相关重要领域的新技术进行介绍,使抽象的理论知识得以具体化,帮助读者快速了解现代处理器关键技术、组件及发展趋势,设计更高效、可扩展性更好的软件系统。本书包含了自第1版出版以来的一些最新技术,并增加了计算机体系结构相关重要领域的新内容。新的章节包括网络安全、区块链和比特币挖矿,以及自动驾驶汽车计算体系结构等。 作为软件开发者、系统设计师或计算机体系结构专业的学生,在你试图学习数字设备体系结构的系统介绍时,是否被现代系统的复杂性搞得不知所措?本书借助实际示例和练习来教你理解现代计算机系统的工作原理。你将深入了解处理器内部直至电路级的行为,并理解硬件如何执行用高级语言开发的代码。 本书将教授计算机系统的基础知识,包括晶体管、逻辑门、时序逻辑和指令流水线。你将学习现代处理器体系结构及x86、x64、ARM和RISC-V等指令集的细节。你将了解如何在低成本FPGA开发板上实现RISC-V处理器,以及如何编写量子计算程序并在实际量子计算机上运行。 相较于上一版,本书增加了网络安全、区块链、比特币挖矿以及自动驾驶汽车等重要领域的体系结构和设计原理。 最后,你将全面理解现代处理器和计算机体系结构,以及这些技术可能的未来方向。 前 言欢迎阅读本书。自第1版出版以来,我非常高兴收到了读者的大量反馈和建议。当然,我非常感激读者的所有反馈,特别是指出本书错误和遗漏的读者。本书介绍了在现代处理器和计算机体系结构中使用的关键技术和组件,并针对具体需求,讨论了不同体系结构的决策如何影响计算机的配置优化。现代计算机是一种复杂的设备。然而,当以层次化的方式来看时,每一级的复杂功能都很明晰。本书涵盖了众多主题,但只在有限的深度内对各个主题进行探讨。本书的目标是为现代计算设备进行一个简要明了的介绍,包括每一项重要技术和子系统,并阐释其与其他系统组件之间的关系。本书包含自第1版出版以来出现的一些最新技术,并增加了计算机体系结构相关重要领域的新内容。新的章节包括网络安全、区块链和比特币挖矿,以及自动驾驶汽车计算体系结构等。尽管计算系统的安全性一直非常重要,但是,最近不法黑客利用操作系统和应用程序的主要漏洞进行攻击,对世界各国造成了很大的负面影响。这些网络攻击凸显了计算机系统设计师将网络安全作为系统架构基本要素的必要性。本书不会提供一个冗长的参考书单,如果读者想深入阅读,可以自行在互联网上查找相关内容。互联网上聚集了大量的知识,如果读者能免于网上一些喧嚣言论的影响,就会发现互联网是一个巨大、凉爽、安静的图书馆。学会使用你最喜欢的搜索引擎的高级功能,同时,要学会从未知的观点中分辨出高质量的信息。如果读者对获得的信息有任何疑问,可以尝试检索多个信息来源。请重视信息的来源:如果要寻找有关Intel处理器的信息,请搜索Intel发布的文档。阅读本书,读者将详细了解目前在广泛多样的数字系统中使用的计算机体系结构。读者还将了解当前体系结构技术的发展趋势,以及未来几年可能的一些突破性进展,这些突破或许会极大地影响计算系统结构的发展。目标读者本书适用于软件开发人员、计算机工程专业的学生、系统设计师、计算机科学专业人士、逆向工程师,以及希望了解各类现代计算机系统从微型嵌入式设备到智能手机,再到仓储规模的云服务器群的架构和设计原理的其他人员。读者还可探索这些技术在未来几年可能的发展方向。对计算机处理器的大体了解有益于阅读本书,但这并不是必需的。本书内容本书包含以下内容。第1章首先介绍自动计算设备的简史,并描述了推动计算性能飞跃的重大技术进步。之后讨论摩尔定律,评估其在过去几十年中的适用性和对未来的影响。最后以6502微处理器为例,介绍计算机体系结构的基本概念。第2章介绍作为开关元件的晶体管,并解释其在构造逻辑门中的应用。然后介绍如何通过组合简单的逻辑门来实现触发器和寄存器等。该章还将介绍时序逻辑的概念,时序逻辑是包含状态信息的逻辑,最后讨论使用时钟控制的数字电路。第3章首先从概念上描述通用处理器。该章介绍指令集、寄存器集、指令加载、解码、执行和排序等概念,还将介绍内存加载和存储操作。随后介绍分支指令及其在循环和条件处理中的应用,最后介绍导致中断处理和I/O操作的一些实际因素。第4章讨论包括多级缓存在内的计算机存储器及其与处理器的接口,还介绍包括中断处理、缓冲和专用I/O处理器在内的I/O需求。该章还将讨论包括键盘、鼠标、视频显示器和网络接口等I/O设备的一些特定需求,最后列举了这些元件在现代计算机应用中的描述性实例,包括智能移动设备、个人计算机、游戏系统、云服务器和专用机器学习系统。第5章讨论计算机操作系统必须提供的高级服务的实现,包括磁盘I/O、网络通信和人机交互。该章将从处理器指令集和寄存器层面开始,介绍实现这些功能的软件层。最后介绍包括引导、多进程和多线程在内的操作系统功能。第6章探索大多数用户往往不直接可见的计算领域,包括实时系统、数字信号处理和GPU处理。该章将讨论与每个计算领域相关的特定需求,并介绍实现这些功能的现代设备。第7章深入研究包括冯·诺伊曼体系结构、哈佛体系结构和改进型哈佛体系结构在内的现代处理器体系结构。该章还讨论分页虚拟内存的实现,介绍计算机体系结构中内存管理功能的实现以及内存管理单元的功能。第8章讨论许多实际计算机体系结构中的性能增强技术,这些技术的目标是使系统达到峰值执行速度。该章的主题是提高系统性能的重要技术,包括高速缓冲存储器的使用、指令流水线、指令级并行和单指令多数据(Single Instruction Multiple Data,SIMD)处理。第9章重点介绍在处理器指令集级别实现的扩展,以提供超出一般数据处理需求之外的额外系统功能。该章介绍的扩展包括处理器的特权模式、浮点数运算、功耗管理和系统安全管理。第10章研究包括x86、x64和ARM处理器在内的现代处理器设计中的体系结构和指令集特性。生产一系列处理器系列生产几十年之后便会面临需要保持代码向后兼容性这一挑战。对传统特性的支持需求往往会增加后一代处理器的复杂性。该章将研究处理器体系结构因支持传统特性需求而引起的一些问题。第11章介绍令人兴奋的新RISC-V处理器体系结构及其指令集。RISC-V是一种完全开源、免费使用的精简指令集计算机体系结构规范。完整的指令集规范已经发布,目前已有一些该体系结构的硬件实现。对指令集进行多种扩展的规范开发工作正在进行。该章涵盖RISC-V体系结构的功能和可用变体,并介绍其指令集,还将讨论RISC-V体系结构在移动设备、个人计算机和服务器中的应用。第12章介绍与处理器虚拟化相关的概念,并阐述虚拟化带来的好处。该章将介绍基于开源工具和操作系统的虚拟化实例,这些工具可以在通用计算机上执行各种计算机体系结构和操作系统的指令集精确表示。该章还将讨论虚拟化在开发和部署实际软件应用中带来的好处。第13章结合前几章讨论的主题,将开发一种设计计算机系统的方法来满足用户的独特需求。该章将讨论一些具体的应用程序类别,包括移动设备、个人计算机、游戏系统、互联网搜索引擎和神经网络。第14章重点介绍国家安全系统和金融交易处理等关键应用领域的安全需求。这些系统必须能够抵御各种网络安全攻击,包括恶意代码、隐蔽信道攻击和通过物理访问计算机硬件实施的攻击等。该章的主题包括网络安全威胁、加密技术、数字签名、安全硬件和软件设计。当前,人们对加密货币兴趣的激增,主流金融机构和零售商对加密货币的接受度不断提高,这表明这一计算领域正在持续发展。本书增加了关于区块链和比特币挖矿计算需求的章节。第15章介绍与区块链相关的概念,区块链是一种通过加密保护的公共分类账,记录着一系列交易。然后概述比特币挖矿的过程,它将交易附加到比特币区块链中,并以比特币的形式奖励那些完成这项任务的人。比特币的处理需要高性能的计算硬件,这在当代比特币挖矿计算机体系结构中得到了体现。随着具备部分自动驾驶能力或完全自动驾驶能力的汽车的数量持续增长,需要强大、高性能的计算系统,以满足公共道路上自动驾驶汽车安全行驶的要求。第16章介绍自动驾驶汽车处理体系结构所需的功能。该章首先讨论确保自动驾驶汽车及其乘客的安全,以及其他车辆、行人和静止物体安全的要求,然后讨论自动驾驶汽车在驾驶时接收的传感器类型和数据类型,并描述有效的车辆控制所需的处理类型。该章最后将介绍一个自动驾驶计算体系结构的例子。第17章探讨计算机体系结构未来的道路。该章回顾计算机体系结构发展过程中的重大进步和当前趋势,并推断这些趋势可能的发展方向。该章将讨论可能改变计算机体系结构未来道路的潜在颠覆性技术。最后,该章将为计算机体系结构设计师的专业发展提出一些方法,帮助他们掌控能够适应未来的技能。充分利用本书本书每章的末尾都有一个习题集。为了充分利用本书,并且帮助读者巩固一些更有挑战性的概念,建议读者尝试解答所有习题。书中提供了所有习题的完整答案,读者也可以上网查阅:https://github.com/PacktPublishing/Modern-Computer-Architecture-and-Organization-Second-Edition。如果代码示例和习题答案有更新,将会放在现有的GitHub存储库中。下载示例代码与彩色图像我们在GitHub上放置了本书的代码包:https://github.com/PacktPublishing/Modern-Computer-Architecture-and-Organization-Second-Edition。我们还提供了一个PDF文件,其中包含书中使用的截图和彩色图像。读者可以访问https://static.packt-cdn.com/downloads/9781803234519_ColorImages.pdf下载。排版约定本书使用了以下排版约定。代码体:表示文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter账户名。例如:使用SBC指令执行减法运算会使6502汇编语言程序员新手更加困惑。代码块如下所示:任何命令行输入和输出如下所示:粗体:表示新的术语、重要词汇,或读者在屏幕上看到的文字。例如:因为有4个集合,所以物理地址中的集合字段减少到2位、标签字段增加到24位。警告或重要的说明像这样展现。 Jim Ledin是Ledin Engineering公司的CEO,也是嵌入式软件与硬件设计、开发和测试等方面的专家,还擅长嵌入式系统网络安全评估和渗透测试。他拥有艾奥瓦州立大学的航空航天工程学士学位和佐治亚理工学院的电气与计算机工程硕士学位。他也是加州的注册专业电气工程师、认证信息系统安全专家(CISSP)、认证道德黑客(CEH)和认证渗透测试员(CPT)。 序前言作者简介审校者简介第1章 计算机体系结构简介11.1 自动计算设备的发展11.1.1 查尔斯·巴贝奇的分析机11.1.2 ENIAC31.1.3 IBM PC 31.1.4 iPhone51.2 摩尔定律61.3 计算机体系结构 81.3.1 使用电压电平表示数据值81.3.2 二进制数和十六进制数81.3.3 6502微处理器111.3.4 6502指令集 131.4 总结141.5 习题15第2章 数字逻辑162.1 电路162.2 晶体管172.3 逻辑门172.4 锁存器202.5 触发器222.6 寄存器232.7 加法器242.8 时钟262.9 时序逻辑272.10 硬件描述语言272.11 总结302.12 习题31第3章 处理器要素323.1 一个简单的处理器323.1.1 控制单元333.1.2 算术逻辑单元353.1.3 寄存器 393.2 指令集403.3 寻址方式403.3.1 立即寻址方式403.3.2 绝对寻址方式413.3.3 绝对索引寻址方式413.3.4 间接索引寻址方式433.4 指令类型443.4.1 内存加载和存储指令 443.4.2 寄存器到寄存器的数据传输 指令443.4.3 栈指令443.4.4 算术运算指令453.4.5 逻辑运算指令453.4.6 分支指令463.4.7 子程序调用和返回指令463.4.8 处理器标志指令463.4.9 中断相关的指令463.4.10 空操作指令473.5 中断处理473.5.1 IRQ处理473.5.2 NMI处理483.5.3 BRK指令处理483.6 I/O操作503.6.1 程序查询I/O503.6.2 中断驱动I/O513.6.3 直接内存访问513.7 总结523.8 习题52第4章 计算机系统组件534.1 内存子系统534.2 MOSFET简介544.3 用MOSFET构建DRAM电路554.3.1 电容器554.3.2 DRAM位单元564.3.3 DDR5 SDRAM584.3.4 GDDR594.3.5 预取604.4 I/O子系统604.4.1 并行数据总线和串行数据 总线604.4.2 PCI Express624.4.3 SATA634.4.4 M.2634.4.5 USB634.4.6 Thunderbolt 644.5 图形显示644.5.1 VGA654.5.2 DVI654.5.3 HDMI664.5.4 DisplayPort664.6 网络接口664.6.1 以太网664.6.2 Wi-Fi674.7 键盘和鼠标684.7.1 键盘684.7.2 鼠标684.8 现代计算机系统规格694.9 总结704.10 习题70第5章 硬件软件接口715.1 设备驱动程序715.1.1 并行端口725.1.2 PCIe设备驱动程序 735.1.3 设备驱动程序结构745.2 BIOS755.3 引导过程775.3.1 BIOS引导775.3.2 UEFI引导785.3.3 可信引导785.3.4 嵌入式设备 795.4 操作系统795.5 进程和线程805.6 多处理855.7 总结865.8 习题86第6章 专用计算领域876.1 实时计算876.2 数字信号处理906.2.1 ADC和DAC906.2.2 DSP硬件特性926.2.3 信号处理算法936.3 GPU处理966.4 专用体系结构示例996.5 总结1006.6 习题100第7章 处理器和存储器体系结构1027.1 冯·诺伊曼体系结构、哈佛体系 结构、改进型哈佛体系结构1027.1.1 冯·诺伊曼体系结构1027.1.2 哈佛体系结构1037.1.3 改进型哈佛体系结构1047.2 物理内存和虚拟内存1057.2.1 分页虚拟内存1077.2.2 页面状态位 1097.2.3 内存池1107.3 内存管理单元1117.4 总结1137.5 习题113第8章 性能提升技术1148.1 高速缓存1148.1.1 多级处理器缓存1158.1.2 静态RAM1168.1.3 一级缓存1178.1.4 直接映射缓存1178.1.5 组相联缓存1198.1.6 全相联缓存1218.1.7 处理器缓存写策略1218.1.8 二级处理器缓存和三级 处理器缓存1228.2 指令流水线1238.2.1 超流水线 1258.2.2 流水线冒险1268.2.3 微操作和寄存器重命名1278.2.4 条件分支1288.3 同时多线程1288.4 SIMD处理1298.5 总结1308.6 习题130第9章 专用处理器扩展1319.1 处理器的特权模式1319.1.1 中断处理和异常处理1319.1.2 保护环1339.1.3 监管模式和用户模式1349.1.4 系统调用1359.2 浮点数运算1359.2.1 8087浮点协处理器1379.2.2 IEEE 754浮点数标准1389.3 功耗管理1399.4 系统安全管理1409.4.1 可信平台模块1419.4.2 网络攻击防御1429.5 总结1439.6 习题143第10章 现代处理器体系结构与 指令集14410.1 x86体系结构与指令集14410.1.1 x86寄存器集14510.1.2 x86寻址方式14710.1.3 x86指令类别14910.1.4 x86指令格式15310.1.5 x86汇编语言15310.2 x64体系结构与指令集15610.2.1 x64寄存器集15610.2.2 x64指令类别与格式15710.2.3 x64汇编语言15710.3 32位ARM体系结构与指令集15910.3.1 ARM寄存器集16110.3.2 ARM寻址方式16210.3.3 ARM指令类别16310.3.4 32位ARM汇编语言16510.4 64位ARM体系结构与指令集16710.5 总结16910.6 习题170第11章 RISC-V体系结构与指令集17211.1 RISC-V体系结构与应用17211.2 RISC-V基础指令集17511.2.1 计算指令17511.2.2 控制流指令17511.2.3 访存指令17611.2.4 系统指令17611.2.5 伪指令17711.2.6 特权级17811.3 RISC-V扩展17911.3.1 M扩展18011.3.2 A扩展18011.3.3 C扩展18011.3.4 F扩展和D扩展18111.3.5 其他扩展18111.4 RISC-V变体18211.5 64位RISC-V18211.6 标准RISC-V配置18311.7 RISC-V汇编语言18311.8 在FPGA中实现RISC-V18411.9 总结18711.10 习题187第12章 处理器虚拟化18912.1 虚拟化介绍18912.1.1 虚拟化类型18912.1.2 处理器虚拟化的类型19112.2 虚拟化的挑战19412.2.1 不安全指令19512.2.2 影子页表19512.2.3 安全性19512.3 虚拟化现代处理器19612.3.1 x86处理器虚拟化19612.3.2 ARM处理器虚拟化19712.3.3 RISC-V处理器虚拟化19712.4 虚拟化工具19812.4.1 VirtualBox19812.4.2 VMware Workstation19812.4.3 VMware ESXi19912.4.4 KVM19912.4.5 Xen19912.4.6 QEMU19912.5 虚拟化与云计算20012.6 总结20012.7 习题201第13章 领域专用计算机体系结构20213.1 设计满足特定需求的计算机系统20213.2 智能手机体系结构20313.3 PC体系结构20513.4 仓储式计算体系结构20713.4.1 WSC硬件20813.4.2 基于机架的服务器20913.4.3 硬件故障管理21113.4.4 电力消耗21113.4.5 WSC作为多级信息缓存21113.4.6 部署云应用21213.5 神经网络与机器学习体系结构21413.6 总结21713.7 习题217第14章 网络安全与机密计算 体系结构21814.1 网络安全威胁?21814.1.1 网络安全威胁的分类21814.1.2 网络攻击技术21914.1.3 恶意软件的类型22014.1.4 利用漏洞的行为22214.2 安全硬件特性22214.2.1 确定需要保护的内容22314.2.2 预测攻击类型22314.2.3 安全系统设计的特征22414.3 机密计算22614.4 体系结构的安全性设计22714.4.1 通过隐蔽求安全22814.4.2 全面的安全设计22814.4.3 最小特权原则22914.4.4 零信任体系结构22914.5 确保系统和应用软件的安全23014.5.1 通用软件的弱点23014.5.2 源代码安全扫描23214.6 总结23214.7 习题232第15章 区块链及比特币挖矿 体系结构23415.1 区块链和比特币简介23415.1.1 SHA-256哈希算法23715.1.2 计算SHA-25623815.1.3 比特币核心软件23815.2 比特币挖矿过程23915.2.1 比特币矿池24015.2.2 使用CPU挖矿24115.2.3 使用GPU挖矿24215.3 比特币挖矿计算机体系结构24215.3.1 使用FPGA挖矿24315.3.2 使用ASIC挖矿24415.3.3 比特币挖矿经济学24615.4 其他类型的加密货币24715.5 总结24815.6 习题248第16章 自动驾驶汽车体系结构24916.1 自动驾驶汽车概述24916.2 自动驾驶汽车的安全问题25016.3 自动驾驶汽车的硬件和软件 需求25216.3.1 感知车辆状态和周围环境25216.3.2 感知环境25416.3.3 决策处理26016.4 自动驾驶汽车计算体系结构26116.5 总结26216.6 习题263第17章 量子计算和其他计算机 体系结构的未来方向26417.1 计算机体系结构的发展历程26417.2 未来的发展趋势26517.2.1 重温摩尔定律26517.2.2 3D堆叠26617.2.3 提高设备的专用化程度26617.3 潜在的颠覆性技术26717.3.1 量子物理学26717.3.2 自旋电子学26817.3.3 量子计算26817.3.4 量子密码学26917.3.5 绝热量子计算27017.3.6 量子计算的未来27017.3.7 碳纳米管27117.4 培养适应未来的技能27217.4.1 持续学习27217.4.2 会议与期刊27317.5 总结27317.6 习题273习题答案274第1章习题答案274第2章习题答案285第3章习题答案291第4章习题答案300第5章习题答案300第6章习题答案302第7章习题答案304第8章习题答案306第9章习题答案 306第10章习题答案312第11章习题答案337第12章习题答案341第13章习题答案344第14章习题答案346第15章习题答案346第16章习题答案348第17章习题答案357
你还可能感兴趣
我要评论
|