本書介紹了超級(jí)計(jì)算機(jī)算力和AI算力的異同,從CPU流水線開始,描述主要的眾核處理器架構(gòu)和功能部件設(shè)計(jì)。在GPU和NPU等加速器部分,介紹了GPU為何能從單純的圖形任務(wù)處理器變成通用處理器。GPU在設(shè)計(jì)邏輯、存儲(chǔ)體系、線程管理,以及面向AI的張量處理器方面成為最近幾年全世界科技行業(yè)最矚目的明星。本書對華為等廠商推出的NPU芯片設(shè)計(jì)也做了架構(gòu)描述,中國也擁有獨(dú)立自主知識(shí)產(chǎn)權(quán)的高算力芯片,并且支持多芯片、高帶寬互連。本書也回顧了近20年來主流的CPU、GPU芯片架構(gòu)的特點(diǎn),介紹了存儲(chǔ)與互連總線技術(shù),即大模型專用AI超級(jí)計(jì)算機(jī)的中樞核心。
目 錄
第1章 從TOP500和MLPerf看算力芯片格局 1
1.1 科學(xué)算力最前沿TOP500 1
1.1.1 TOP500的測試方式HPL 3
1.1.2 TOP500與算力芯片行業(yè)發(fā)展 5
1.2 AI算力新標(biāo)準(zhǔn)MLPerf 9
第2章 高性能CPU流水線概覽 14
2.1 什么是指令 14
指令集的設(shè)計(jì)哲學(xué) 14
2.2 流水線與MIPS 17
2.2.1 經(jīng)典5級(jí)流水線概述 18
2.2.2 超流水線及其挑戰(zhàn) 21
2.3 分支預(yù)測 25
2.3.1 先進(jìn)分支預(yù)測之“感知機(jī)分支預(yù)測器” 29
2.3.2 先進(jìn)分支預(yù)測之“TAGE分支預(yù)測器” 31
2.4 指令緩存體系 33
2.5 譯碼單元 37
2.6 數(shù)據(jù)緩存 39
2.6.1 多級(jí)緩存的數(shù)據(jù)包含策略 41
2.6.2 緩存映射關(guān)系 42
2.6.3 受害者緩存 45
2.6.4 寫入策略與一致性協(xié)議 47
2.7 TLB(旁路快表緩沖) 49
2.8 亂序執(zhí)行引擎 52
2.8.1 指令相關(guān)的解決方案 53
2.8.2 寄存器重命名 55
2.8.3 指令提交與ROB單元 57
2.8.4 發(fā)射隊(duì)列 59
2.8.5 數(shù)據(jù)旁路 65
2.9 超線程技術(shù) 66
第3章 緩存硬件結(jié)構(gòu) 71
3.1 DRAM與SRAM設(shè)計(jì)取舍 71
3.2 DRAM讀寫過程 72
3.3 SRAM讀寫過程(以6T SRAM為例) 74
3.4 Intel對8T SRAM的探索 76
3.5 不同規(guī)格SRAM物理特性 78
3.6 非一致性緩存架構(gòu) 79
第4章 CPU計(jì)算單元設(shè)計(jì) 82
4.1 計(jì)算單元邏輯構(gòu)成 82
4.2 整數(shù)和浮點(diǎn)數(shù)的差異 83
4.3 算術(shù)邏輯單元 84
4.3.1 ALU加法器與減法器 85
4.3.2 ALU比較單元和位移單元 85
4.3.3 ALU乘法器與除法器 86
4.4 浮點(diǎn)數(shù)單元 87
4.4.1 浮點(diǎn)加法器與減法器 88
4.4.2 浮點(diǎn)乘法器與除法器 91
4.5 指令的加載和存儲(chǔ)單元 93
4.6 單指令多數(shù)據(jù) 95
4.6.1 MMX指令集 97
4.6.2 3DNow!指令集 101
4.6.3 SSE指令集及其擴(kuò)展指令集 102
4.6.4 AVX指令集及其擴(kuò)展指令集 104
4.6.5 AVX-512指令集與下一代AVX10指令集 105
4.6.6 對AVX指令集的間接實(shí)施 112
4.7 矩陣加速指令集 113
4.8 ARM SVE指令集 115
第5章 邏輯拓?fù)浣Y(jié)構(gòu) 120
5.1 環(huán)形拓?fù)浞绞?120
5.2 Infinity Fabric拓?fù)浞绞?124
5.3 網(wǎng)格拓?fù)浞绞?129
5.4 片上網(wǎng)絡(luò)(NoC) 133
5.4.1 NoC分析重點(diǎn) 135
5.4.2 NoC高速發(fā)展的原因 136
5.4.3 常見NoC拓?fù)浣Y(jié)構(gòu)及特性 136
5.4.4 拓?fù)浣Y(jié)構(gòu)指標(biāo)參數(shù) 139
5.4.5 拓?fù)浣Y(jié)構(gòu)改進(jìn)案例 140
5.4.6 路由器微架構(gòu)設(shè)計(jì) 142
5.5 近存計(jì)算拓?fù)涮匦?144
5.5.1 IPU芯片 145
5.5.2 WSE芯片 147
5.6 單芯片UMA與NUMA 151
第6章 經(jīng)典算力CPU芯片解讀 155
6.1 申威處理器 155
6.1.1 SW26010單芯片設(shè)計(jì) 155
6.1.2 “神威?太湖之光”系統(tǒng)設(shè)計(jì) 157
6.1.3 SW26010對比CPU+協(xié)處理器方案 158
6.1.4 針對SW26010的OpenCL編譯系統(tǒng)設(shè)計(jì) 159
6.1.5 SW26010后期迭代 161
6.2 富士通A64FX處理器 162
A64FX指令流水線設(shè)計(jì) 163
6.3 蘋果M1處理器 165
6.3.1 SoC模塊化設(shè)計(jì) 166
6.3.2 高性能核心流水線設(shè)計(jì) 167
6.3.3 計(jì)算單元資源 168
6.3.4 UltraFusion芯片擴(kuò)展 169
6.4 Ampere處理器 171
6.4.1 Ampere Altra 171
6.4.2 AmpereOne 174
6.5 IBM POWER處理器 177
6.5.1 POWER9架構(gòu)設(shè)計(jì) 179
6.5.2 POWER9拓?fù)浼夹g(shù) 181
6.5.3 POWER10架構(gòu)分析 183
6.5.4 POWER10拓?fù)浼夹g(shù) 183
6.5.5 POWER10 SIMD單元改進(jìn)與MMA加速器 186
6.6 EPYC 9004處理器 187
6.6.1 Zen微架構(gòu)介紹 187
6.6.2 EPYC處理器設(shè)計(jì) 200
6.6.3 Zen4c小核心設(shè)計(jì)策略 202
6.7 Sapphire Rapids微架構(gòu)Xeon處理器 205
6.7.1 EMIB封裝 206
6.7.2 Golden Cove微架構(gòu) 209
6.7.3 其他硬件加速單元——Intel IAA存內(nèi)分析加速器 211
6.7.4 其他硬件加速單元——Intel DSA數(shù)據(jù)流加速器 212
6.7.5 Intel QAT數(shù)據(jù)保護(hù)與壓縮加速技術(shù) 213
6.7.6 Intel DLB動(dòng)態(tài)負(fù)載均衡器 215
6.8 Tesla Dojo超級(jí)計(jì)算機(jī)和D1處理器 217
6.8.1 D1芯片微架構(gòu) 218
6.8.2 訓(xùn)練瓦片和存儲(chǔ)資源 220
6.8.3 豐富的低精度數(shù)據(jù)類型 221
6.8.4 設(shè)計(jì)獨(dú)特性與思考 223
第7章 從圖形到計(jì)算的GPU架構(gòu)演進(jìn) 224
7.1 GPU圖形計(jì)算發(fā)展 224
7.1.1 從三角形開始的幾何階段 224
7.1.2 光柵化銜接3D和2D世界 227
7.1.3 像素著色階段 228
7.1.4 DirectX API推動(dòng)GPU演進(jìn) 229
7.2 GPGPU 指令流水線 233
7.2.1 取指階段 234
7.2.2 譯碼階段 235
7.2.3 發(fā)射階段 238
7.2.4 執(zhí)行階段 240
7.2.5 寫回階段 242
第8章 GPGPU存儲(chǔ)體系與線程管理 245
8.1 GPGPU多級(jí)別存儲(chǔ)體系 245
8.1.1 大容量寄存器與倒金字塔結(jié)構(gòu) 248
8.1.2 不同時(shí)代NVIDIA GPU片上存儲(chǔ)器容量 250
8.1.3 GPGPU存儲(chǔ)組織模式之合并訪存 253
8.1.4 GPGPU存儲(chǔ)組織模式之板塊沖突 255
8.2 GPGPU線程管理 258
8.2.1 GPU線程定義 259
8.2.2 線程束寬度 261
8.2.3 線程調(diào)度和管理 265
8.2.4 線程塊在線程管理中的作用 268
8.2.5 SIMT堆棧與Volta架構(gòu)對線程管理的改進(jìn) 270
8.2.6 Cooperative Group 275
8.2.7 Hopper架構(gòu)對線程管理的改進(jìn) 278
8.3 通用矩陣乘法與AI類任務(wù) 279
8.3.1 利用線程塊優(yōu)化矩陣計(jì)算 280
8.3.2 通過流實(shí)現(xiàn)任務(wù)級(jí)并行 281
8.4 VLIW指令結(jié)構(gòu)在GPU中的應(yīng)用歷史 283
第9章 張量處理器設(shè)計(jì) 287
9.1 張量的定義 287
9.2 脈動(dòng)陣列計(jì)算單元 288
9.2.1 谷歌TPU處理器 291
9.2.2 TPU v4芯片概覽 293
9.2.3 自研光學(xué)芯片用于TPU節(jié)點(diǎn)拓?fù)?295
9.3 Volta架構(gòu)引入張量核心 298
9.3.1 張量核心設(shè)計(jì)細(xì)節(jié) 298
9.3.2 張量核心數(shù)據(jù)加載與指令編譯 303
9.3.3 矩陣乘法訪存優(yōu)勢與數(shù)據(jù)布局 306
9.3.4 Ampere架構(gòu)引入稀疏性張量加速 308
9.3.5 Hopper架構(gòu)改進(jìn)張量內(nèi)存加速器 311
9.3.6 低精度性能增益 313
9.4 華為昇騰Ascend 910 NPU芯片 315
9.4.1 達(dá)芬奇架構(gòu)AI Core分析 316
9.4.2 拓?fù)浠ミB能力 319
9.4.3 CANN與AI框架MindSpore 321
第10章 經(jīng)典GPU算力芯片解讀 324
10.1 NVIDIA GPU芯片 324
10.1.1 G80架構(gòu) 324
10.1.2 GT200架構(gòu) 326
10.1.3 Fermi架構(gòu) 329
10.1.4 Kepler架構(gòu) 333
10.1.5 Maxwell架構(gòu) 337
10.1.6 Pascal架構(gòu) 338
10.1.7 Volta架構(gòu) 340
10.1.8 Turing架構(gòu) 343
10.1.9 Ampere架構(gòu) 345
10.1.10 Hopper架構(gòu) 351
10.2 AMD GPU芯片 357
10.2.1 TeraScale架構(gòu) 357
10.2.2 GCN架構(gòu) 364
10.2.3 RDNA架構(gòu) 371
10.3 Intel Xe GPU架構(gòu) 386
10.3.1 x86指令集Larrabee GPGPU 386
10.3.2 Xe-core高端核心與EU低端核心 389
10.3.3 子片和擴(kuò)展結(jié)構(gòu) 395
10.3.4 超大芯片Ponte Vecchio 396
第11章 存儲(chǔ)與互連總線技術(shù) 400
11.1 從DDR到HBM 400
11.1.1 為更高帶寬持續(xù)改進(jìn)——GDDR 400
11.1.2 新封裝方式——HBM 405
11.2 PCI Express總線概況 407
11.2.1 由需求驅(qū)動(dòng)的PCIe總線發(fā)展歷程 408
11.2.2 PCIe物理和數(shù)據(jù)鏈路層技術(shù)概覽 411
11.3 CXL擴(kuò)展技術(shù) 414
11.3.1 CXL的3個(gè)子協(xié)議 416
11.3.2 CXL 2.0主要特性:內(nèi)存池化 417
11.3.3 CXL 3.0主要特性:內(nèi)存共享、多級(jí)拓?fù)?418
11.3.4 CXL協(xié)議細(xì)節(jié) 419
11.3.5 CXL延遲拆解 421
11.4 NVLink互連技術(shù)與GPU超級(jí)計(jì)算機(jī) 424
11.4.1 Pascal架構(gòu)第一代NVLink 424
11.4.2 Volta架構(gòu)第二代NVLink 428
11.4.3 Ampere架構(gòu)第三代NVLink 429
11.4.4 Hopper架構(gòu)第四代NVLink 429
11.4.5 Grace Hopper超級(jí)芯片 432