立意新颖,案例贴近前沿,内容由浅入深,并且“展望未来”,可以帮助广大互联网及 IT 行业的软硬件工程师更好地理解软件、硬件及两者之间的内在联系
引言 1
第1章 云计算底层软硬件 8
1.1 云计算概述 8
1.1.1 云计算的概念 8
1.1.2 IaaS、PaaS和SaaS 9
1.2 IaaS层核心服务 10
1.2.1 计算类服务 11
1.2.2 存储类服务 13
1.2.3 网络类服务 16
1.2.4 IaaS层服务总结 18
1.3 云计算的特点 19
1.3.1 更大的规模 19
1.3.2 更“大”的数据 20
1.3.3 更多的租户 21
1.3.4 更复杂的网络 22
1.3.5 安全问题无处不在 24
1.3.6 面向特定应用场景的云计算服务 26
1.3.7 服务接口的兼容性和通用性 27
1.4 底层软硬件挑战 28
1.4.1 业务异构加速 28
1.4.2 工作任务卸载 29
1.4.3 软硬件接口的标准化和灵活性 30
1.4.4 硬件处理的虚拟化和个性化 31
1.4.5 业务和管理物理分离 32
1.4.6 硬件的功能扩展 33
1.4.7 让硬件快速迭代 33
1.4.8 硬件高可用 34
1.5 总结 34
第2章 软硬件融合综述 36
2.1 软硬件基本概念 36
2.1.1 软件和硬件 36
2.1.2 FPGA、ASIC和SoC 37
2.1.3 硬件加速原理 40
2.2 软硬件划分 41
2.2.1 三个维度 41
2.2.2 综合分析 44
2.2.3 平台选择 45
2.3 软硬件协作 46
2.3.1 多平台混合架构 46
2.3.2 软硬件平台的协作 49
2.3.3 软硬件平台的交互 51
2.4 软硬件融合 52
2.4.1 软硬件融合的概念 52
2.4.2 软硬件融合的特点 54
2.4.3 软硬件融合技术 55
第3章 计算机体系结构基础 57
3.1 计算机原理 57
3.1.1 处理器架构:从冯·诺依曼架构到RISC-V 57
3.1.2 内存地址:从寻址模式到MMU 61
3.1.3 I/O:从CPU中断到DMA 65
3.1.4 多核互连:从传统总线到网状总线 66
3.1.5 服务器板级架构 69
3.2 存储 71
3.2.1 缓存和存储分层结构 71
3.2.2 本地存储:磁盘分区和逻辑/物理卷 74
3.2.3 分布式存储:GFS和存储的“温度” 76
3.3 网络 79
3.3.1 基础物理网络:分层和拓扑 79
3.3.2 虚拟网络:VLAN和VxLAN 83
3.3.3 软件定义网络:从OpenFlow到P4 87
3.4 虚拟化 93
3.4.1 虚拟化的层次、定义和分类 93
3.4.2 CPU虚拟化:从软件模拟到完全硬件 96
3.4.3 内存虚拟化:影子页表和EPT 99
3.4.4 I/O设备虚拟化:从软件模拟到SR-IOV 100
3.4.5 容器虚拟化:Docker和Kubernetes介绍 103
第4章 软硬件接口 105
4.1 软硬件接口概述 105
4.1.1 软硬件接口定义 106
4.1.2 生产者-消费者模型 109
4.1.3 用户态的PMD:DPDK和SPDK 113
4.2 总线互连 116
4.2.1 AMBA总线 116
4.2.2 片上网络NoC总线 120
4.2.3 片间高速总线PCIe及SR-IOV 123
4.2.4 对称的缓存一致性总线CCIX 128
4.2.5 非对称的缓存一致性总线CXL 132
4.2.6 总线互连总结 136
4.3 通用接口Virtio 139
4.3.1 Virtio寄存器 139
4.3.2 Virtqueue交互队列 141
4.3.3 Virtio交互 143
4.3.4 总结 144
4.4 高速网络接口RDMA 146
4.4.1 基本概念 146
4.4.2 RoCE分层 147
4.4.3 RDMA接口 148
4.4.4 RDMA总结 149
4.5 高速存储接口NVMe 150
4.5.1 NVMe概述 150
4.5.2 NVMe寄存器 151
4.5.3 NVMe队列 153
4.5.4 NVMe命令结构 155
4.5.5 网络存储接口NVMeoF 160
4.5.6 NVMe及NVMeoF总结 162
4.6 软硬件接口总结 163
4.6.1 接口分层 163
4.6.2 接口共享 163
第5章 算法加速和任务卸载 165
5.1 基本概念 165
5.1.1 硬件加速 166
5.1.2 硬件处理模块 167
5.1.3 算法加速和任务卸载的概念 169
5.2 算法加速 171
5.2.1 加密算法加速 171
5.2.2 压缩算法加速 176
5.2.3 数据冗余算法加速 181
5.2.4 正则表达式算法加速 183
5.2.5 加速器性能设计原则 185
5.3 任务卸载 186
5.3.1 任务卸载模型 186
5.3.2 IPsec卸载 188
5.3.3 虚拟网络卸载 190
5.3.4 远程存储卸载 192
5.3.5 虚拟化卸载 194
5.4 算法加速和任务卸载总结 197
5.4.1 算法加速是基础 197
5.4.2 任务卸载是多系统协作 199
第6章 虚拟化硬件加速 203
6.1 基本概念 203
6.1.1 软硬件中的抽象 204
6.1.2 虚拟化抽象 205
6.1.3 虚拟化模型 207
6.1.4 虚拟化加速的必要性 210
6.2 虚拟化的硬件处理 211
6.2.1 流水线处理 211
6.2.2 虚拟化映射 215
6.2.3 缓存机制 219
6.2.4 通用虚拟化流水线 221
6.3 网络虚拟化处理 222
6.3.1 包处理用于网络虚拟化 222
6.3.2 定制的网络包处理 223
6.3.3 ASIC软件可编程包处理 224
6.3.4 FPGA硬件可编程包处理 227
6.3.5 案例:Mellanox FlexFlow 229
6.3.6 网络包处理总结 230
6.4 存储虚拟化处理 231
6.4.1 分布式存储Ceph 231
6.4.2 以事务为单位的存储处理 236
6.4.3 远程存储虚拟化加速 238
6.4.4 本地存储虚拟化加速 241
6.5 虚拟化硬件加速总结 243
6.5.1 灵活的高性能流水线 243
6.5.2 高性能缓存机制 244
6.5.3 可软件编程、通用、数据流驱动的数据处理引擎 244
6.5.4 虚拟化硬件加速的意义 246
6.5.5 其他虚拟化加速场景 246
第7章 异构加速 247
7.1 异构计算概述 247
7.1.1 基本概念(并行计算、异构计算) 247
7.1.2 典型案例 249
7.1.3 性能约束和优化 250
7.1.4 易用性思考 251
7.2 GPU和CUDA 252
7.2.1 GPU和CUDA概念 252
7.2.2 GPU硬件架构 253
7.2.3 CUDA编程模型 259
7.3 OpenCL和FPGA异构计算 264
7.3.1 OpenCL 264
7.3.2 Xilinx SDAccel 270
7.3.3 英特尔加速栈 273
7.4 DSA 275
7.4.1 DSA发展背景 275
7.4.2 DSA典型领域:DNN 278
7.4.3 ASIC实现:谷歌TPU 281
7.4.4 FPGA实现:微软Catapult 284
7.4.5 Chiplet实现:OCP ODSA 287
7.5 异构加速计算总结 289
7.5.1 平台选择(GPU、FPGA、ASIC/DSA) 290
7.5.2 异构计算加速优化 291
第8章 云计算体系结构趋势 293
8.1 概述 293
8.2 业务和管理分离 294
8.2.1 虚拟化视角:I/O及管理的卸载 294
8.2.2 体系结构视角:以数据为中心 297
8.2.3 Nitro系统 300
8.2.4 Mellanox Bluefield DPU 302
8.2.5 总结 303
8.3 业务的异构加速 304
8.3.1 业务加速概述 304
8.3.2 DSA加速:谷歌TPU服务 305
8.3.3 FPGA加速:FaaS 306
8.3.4 异构计算架构演进 308
8.4 存储的加速和定制 309
8.4.1 存储概述 309
8.4.2 热存储服务器:Xilinx NVMeoF参考设计 311
8.4.3 机架级冷存储:微软Pelican 312
8.5 网络可编程和性能优化 314
8.5.1 数据中心网络综述 314
8.5.2 数据面编程交换芯片 317
8.5.3 高性能网络优化 318
8.6 硬件定制 324
8.6.1 硬件定制概述 324
8.6.2 亚马逊的硬件定制 325
8.6.3 OCP开放计算项目 327
第9章 融合的系统 329
9.1 软硬件融合系统栈 329
9.1.1 系统边界:多数据中心 329
9.1.2 数据中心的系统堆栈 330
9.2 分层的系统实现 332
9.2.1 迭代的系统 332
9.2.2 分域的硬件平台 333
9.2.3 不同层次的实现 334
9.2.4 软硬件协同设计 335
9.3 深层次开放合作 336
9.3.1 软硬件的距离越来越大 336
9.3.2 互联网公司自研芯片的优劣势 336
9.3.3 深层次的开放合作 337
参考文献 338