本书对现代计算设备进行了介绍,包括其中可能出现的每一项重要技术和子系统,并阐释其与其他系统部件之间的关系。全书分为三部分。第1部分介绍计算机体系结构基础知识,包括计算机体系结构的基本概念、数字逻辑、处理器元件、计算机系统组件、硬件软件接口、专用计算领域。第二部分介绍处理器体系结构和指令集,涉及处理器和存储器体系结构、性能增强技术、专用处理器扩展、现代处理器体系结构和指令集、RISC-V体系结构和指令集。第三部分介绍计算机体系结构的应用,包括处理器虚拟化、具体的应用程序类别(包括移动设备、个人电脑、游戏系统、互联网搜索引擎和神经网络)、计算机体系结构未来的方向。读完本书,读者将掌握目前在广泛多样的数字系统中所使用的计算机体系结构。
作为一名软件开发人员、系统设计师或计算机体系结构专业的学生,当你探索数字设备体系结构时,是否被其复杂性击垮?本书将帮助你学习现代计算机系统的工作原理——从晶体管开关到协作多处理器服务器。在本书中,你将深入学习处理器的内部行为,以设计更高效、可扩展性更好的软件系统。
本书全面介绍了计算机系统的基础知识,包括晶体管、逻辑门、时序逻辑和指令操作。你将了解现代处理器体系结构以及包括x86、x64、ARM和RISC-V在内的指令集,还会看到如何在低成本的FPGA板上实现RISC-V处理器,以及如何编写量子计算程序并在实际的量子计算机上运行。读完本书,你将深入理解现代处理器和计算机体系结构,并了解其未来的发展方向。
学完本书,你将能够:
? 掌握晶体管技术和数字电路原理。
? 理解计算机处理器的基本功能单元。
? 理解流水线和超标量执行。
? 学会使用浮点数据格式。
? 理解管理员模式的目的和操作。
? 在低成本的FPGA板上实现完整的RISC-V处理器。
? 了解虚拟机实现的相关技术。
? 编写量子计算程序并在量子计算机上运行。
本书介绍了在现代处理器和计算机体系结构中使用的关键技术和组件,并针对具体需求讨论了不同体系结构的决策如何影响计算机的配置优化。
简单来说,现代计算机是一种复杂的设备。然而,当以层次化的方式来看时,每一层的复杂功能就变得明晰了。本书涵盖了众多主题,但只对各个主题进行有限深度的探讨。本书的目标是对现代计算设备进行简单明了的介绍,包括其中可能出现的每一项重要技术和每一个子系统,并阐释设备与其他系统组件之间的关系。
本书不会提供一份冗长的参考书单,如果读者想深入阅读,可以自行在互联网上查找相关内容。
学完本书,读者将掌握目前在广泛多样的数字系统中所使用的计算机体系结构,还将了解体系结构的发展趋势,以及未来几年可能出现的一些颠覆性技术,这些突破或许会极大地影响计算系统体系结构的发展。
目标读者
本书适用于软件开发人员、计算机专业学生、系统设计师、计算机科学家、逆向工程师,以及所有希望理解现代计算机系统(从微型嵌入式设备到智能手机,再到仓储规模的云服务器群等)的体系结构和设计原则的人。
本书内容
本书共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章展望计算机体系结构的未来。该章回顾了计算机体系结构发展过程中的重大进步和当前的发展趋势,并推断了这些趋势可能的发展方向,还讨论了可能改变计算机体系结构未来发展的潜在颠覆性技术。后,该章为计算机架构师的发展提供了建议,以帮助他们适应未来的发展。
如何利用本书
本书每一章的末尾都有一个习题集,建议
前言
部分 计算机体系结构基础知识
第1章 计算机体系结构简介2
1.1 自动化计算设备的演进2
1.1.1 巴贝奇分析机2
1.1.2 ENIAC3
1.1.3 IBM PC4
1.1.4 iPhone6
1.2 摩尔定律7
1.3 计算机体系结构9
1.3.1 二进制数和十六进制数9
1.3.2 6502微处理器12
1.3.3 6502指令集13
1.4 总结15
1.5 习题15
第2章 数字逻辑17
2.1 电路17
2.2 晶体管18
2.3 逻辑门19
2.4 锁存器21
2.5 触发器23
2.6 寄存器24
2.7 加法器25
2.8 时钟27
2.9 时序逻辑28
2.10 硬件描述语言28
2.11 总结32
2.12 习题32
第3章 处理器要素33
3.1 一个简单的处理器33
3.1.1 控制单元34
3.1.2 算术逻辑单元36
3.1.3 寄存器 39
3.2 指令集40
3.3 寻址方式40
3.3.1 立即寻址方式41
3.3.2 寻址方式41
3.3.3 索引寻址方式42
3.3.4 间接索引寻址方式43
3.4 指令类型44
3.4.1 内存加载指令和存储指令 44
3.4.2 寄存器到寄存器的数据传送指令45
3.4.3 堆栈指令45
3.4.4 算术运算指令45
3.4.5 逻辑运算指令46
3.4.6 分支指令46
3.4.7 子程序调用和返回指令46
3.4.8 处理器标志指令47
3.4.9 中断相关的指令47
3.4.10 空操作指令47
3.5 中断处理47
3.5.1 IRQ处理47
3.5.2 NMI处理48
3.5.3 BRK指令处理49
3.6 输入/输出操作50
3.6.1 程序查询I/O51
3.6.2 中断驱动I/O51
3.6.3 直接存储器访问51
3.7 总结52
3.8 习题52
第4章 计算机系统组件54
4.1 技术要求54
4.2 内存子系统54
4.3 MOSFET简介55
4.4 用MOSFET构建DRAM电路56
4.4.1 电容器56
4.4.2 DRAM位单元57
4.4.3 DDR4 SDRAM58
4.4.4 GDDR60
4.4.5 预取60
4.5 I/O子系统61
4.5.1 串行数据总线和并行数据总线61
4.5.2 PCI Express62
4.5.3 SATA63
4.5.4 M.264
4.5.5 USB64
4.5.6 Thunderbolt64
4.6 图形显示65
4.6.1 VGA65
4.6.2 DVI66
4.6.3 HDMI66
4.6.4 DisplayPort66
4.7 网络接口67
4.7.1 以太网67
4.7.2 Wi-Fi67
4.8 键盘和鼠标68
4.8.1 键盘68
4.8.2 鼠标69
4.9 现代计算机系统规范69
4.10 总结70
4.11 习题70
第5章 硬件-软件接口71
5.1 设备驱动程序71
5.1.1 并行端口72
5.1.2 PCIe设备驱动程序73
5.1.3 设备驱动程序结构74
5.2 BIOS75
5.3 引导过程77
5.3.1 BIOS引导77
5.3.2 UEFI引导77
5.3.3 嵌入式设备 78
5.4 操作系统78
5.5 进程和线程80
5.6 多处理84
5.7 总结84
5.8 习题85
第6章 专用计算领域86
6.1 实时计算86
6.2 数字信号处理89
6.2.1 模数转换器和数模转换器89
6.2.2 DSP硬件特性91
6.2.3 信号处理算法92
6.3 GPU处理95
6.4 专用体系结构示例98
6.5 总结99
6.6 习题99
第二部分 处理器体系结构和指令集
第7章 处理器和存储器体系结构102
7.1 技术要求102
7.2 冯·诺依曼体系结构、哈佛体系结构、改进型哈佛体系结构102
7.2.1 冯·诺依曼体系结构102
7.2.2 哈佛体系结构104
7.2.3 改进型哈佛体系结构104
7.3 物理内存和虚拟内存105
7.4 分页虚拟内存107
7.4.1 页面状态位109
7.4.2 内存池110
7.5 内存管理单元111
7.6 总结113
7.7 习题113
第8章 性能提升技术114
8.1 高速缓存114
8.1.1 多级处理器缓存115
8.1.2 静态RAM116
8.1.3 一级缓存117
8.1.4 直接映射缓存117
8.1.5 组相联映射缓存119
8.1.6 全相联映射缓存120
8.1.7 处理器缓存写策略121
8.1.8 二级缓存和三级缓存122
8.2 指令流水线123
8.2.1 超流水线125
8.2.2 流水线冒险125
8.2.3 微操作和寄存器重命名126
8.2.4 条件分支127
8.3 同时多线程128
8.4 SIMD处理129
8.5 总结129
8.6 习题130
第9章 专用处理器扩展131
9.1 技术要求131
9.2 处理器的特权模式131
9.2.1 中断和异常处理131
9.2.2 保护环133
9.2.3 监控模式和用户模式135
9.2.4 系统调用135
9.3 浮点数运算136
9.3.1 8087浮点协处理器137
9.3.2 IEEE 754浮点数标准138
9.4 功耗管理139
9.5 系统安全管理140
9.6 总结142
9.7 习题142
第10章 现代处理器体系结构与指令集143
10.1 技术要求143
10.2 x86体系结构与指令集143
10.2.1 x86寄存器集145
10.2.2 x86寻址方式147
10.2.3 x86指令类别149
10.2.4 x86指令格式152
10.2.5 x86汇编语言153
10.3 x64体系结构与指令集155
10.3.1 x64寄存器集156
10.3.2 x64指令类别和格式156
10.3.3 x64汇编语言157
10.4 32位ARM体系结构与指令集158
10.4.1 ARM寄存器集160
10.4.2 ARM寻址方式161
10.4.3 ARM指令类别162
10.4.4 ARM汇编语言164
10.5 64位ARM体系结构与指令集166
10.6 总结168
10.7 习题169
第11章 RISC-V体系结构与指令集171
11.1 技术要求171
11.2 RISC-V体系结构与功能171
11.3 RISC-V基础指令集173
11.3.1 计算指令173
11.3.2 控制流指令174
11.3.3 访存指令174
11.3.4 系统指令175
11.