热门搜索: 中考 高考 考试 开卷17
服务电话 024-23945002/96192
 

通用图形处理器指令集架构和软硬件设计——乘影开源GPGPU设计透视

编号:
wx1204140740
销售价:
¥113.52
(市场价: ¥129.00)
赠送积分:
114
数量:
   
商品介绍

"这是一部全景式解析开源GPGPU设计的力作,旨在打通从理论原理到项目实践的全链路。
? 贯穿全栈,视野宏大
从GPU发展史、指令集设计、微架构剖析,到OpenCL编程模型与LLVM编译器工具链,提供一站式GPGPU知识体系。
? 硬核剖析,深入细节
立足“乘影”开源项目,对流式多处理器(SM)、缓存子系统、内存管理单元(MMU)及Tensor Core等关键模块进行深度解读。
? 实践导向,资源完备
本书不仅是理论指南,更是实战手册,提供全栈开源代码与全流程实操指南,助力读者将知识转化为技能。
? 生态完整,工具先进
详解基于OpenCL与LLVM的现代GPGPU软件栈,涵盖编程、编译、驱动等核心环节,构建完整的开发与运行环境。
本书为渴望掌握通用并行计算核心技术的工程师、研究者和学生,点亮了“从零到一”设计和实现GPGPU的完整路径。"

"本书聚焦通用并行计算GPGPU 技术及其实践,系统回顾GPU 从图形渲染到通用计算的演化历程,深入解析GPU指令集、微架构、软件工具链设计。本书分为4 部分:第 1 部分回顾GPGPU的时代背景与发展历程,介绍主要开源项目;第2 部分探讨GPU设计思想与指令集,并引出乘影GPGPU自定义指令集;第3 部分剖析乘影GPGPU硬件微架构,包括流式多处理器单元、CTA调度器、缓存子系统、内存管理单元以及张量计算系统等关键模块;第4 部分介绍基于OpenCL的编程模型、LLVM 编译器及驱动工具链,构建完整的GPGPU软件生态。本书兼顾理论与实操,既涵盖GPU并行计算的核心原理与关键技术,又结合乘影开源项目的实践示例,帮助读者深入理解并掌握现代GPGPU的设计与实现路径。
本书适合对GPU 架构、并行计算与开源硬件生态感兴趣的工程师、学生和研究人员阅读。
"

"何虎,上海清华国际创新中心副主任,清华大学集成电路学院副教授,博士生导师,清华大学工业与车规半导体芯片研究中心主任。主要研究方向是高性能处理器。在TCAD,TCAS、TVLSI,Frontiers in Neuroscience,MICRO等国际期刊和会议上发表多篇论文。曾获北京市科学技术奖一等奖等三项省部级奖励。出版《通用图形处理器指令集架构和软硬件设计》《车规级芯片技术》等专著。承担清华大学“超大规模集成电路CAD”和“大规模集成电路测试方法学”课程教学。
马鸣远,清华大学集成电路学院博士研究生,本科毕业于清华大学物理系。曾获清华大学优良毕业生、北京市优秀毕业生等荣誉。
于芳菲,清华大学集成电路学院硕士研究生,2022年获得学士学位,2025年获得硕士学位,专注于GPGPU指令集架构及硬件设计研究。目前就职于阿里巴巴达摩院。"

目录
第1部分 背景与概览/ 1

第1章 行业背景和发展/ 2
1.1 GPGPU的历史与发展/ 2
1.1.1 早期计算机图形的发展/ 2
1.1.2 专用图形处理器的诞生/ 7
1.2 GPU的可编程化与GPGPU的萌芽/ 11
1.2.1 可编程着色器时代(2001—2006年)/ 11
1.2.2 通用计算需求的增长/ 12
1.3 GPGPU通用计算时代的兴起(2006年起)/ 14
1.3.1 统一渲染架构的引入/ 14
1.3.2 CUDA的推出与影响/ 14
1.3.3 OpenCL的出现与标准化/ 15
1.3.4 计算着色器的引入与GPGPU的成熟/ 16
1.4 光线追踪与AI时代/ 16
1.4.1 光线追踪的崛起:从离线到实时/ 16
1.4.2 AI驱动的GPU变革/ 17
1.5 GPU的未来:架构演化与技术创新/ 17
1.5.1 硬件架构的持续演化/ 17
1.5.2 网格着色器/ 18
1.5.3 封装和互连技术的演进/ 18
1.5.4 GPGPU技术的挑战/ 21
1.6 本章小结/ 22
第2章 开源项目与开发进展/ 23
2.1 主要开源GPGPU项目概览/ 23
2.1.1 OpenVGA/ 23
2.1.2 Nyuzi Processor(2012)/ 24
2.1.3 MIAOW(2015)/ 25
2.1.4 FGPU:An SIMT-Architecture for FPGAs(2016)/ 26
2.1.5 Vortex(2019)/ 27
2.1.6 乘影GPGPU/ 29
2.2 开源GPU模拟器项目概况/ 30
2.2.1 GPGPU-Sim/ 30
2.2.2 gem5-gpu/ 31
2.3 开源项目情况与分析/ 32
第2部分 GPU设计思想和指令集/ 35

第3章 从并行思想到GPGPU/ 37
3.1 指令级并行/ 37
3.1.1 流水线/ 37
3.1.2 乱序执行/ 38
3.1.3 超标量技术/ 38
3.2 线程级并行/ 39
3.2.1 粗粒度多线程/ 40
3.2.2 细粒度多线程/ 41
3.2.3 同时多线程/ 41
3.2.4 多核处理器/ 41
3.2.5 讨论/ 42
3.3 数据级并行/ 43
3.3.1 向量化与性能提升/ 43
3.3.2 Amdahl定律与向量加速的整体影响/ 45
3.3.3 内存带宽与数据获取/ 45
3.3.4 SIMD硬件的形态变换/ 47
3.3.5 NPU/ 48
3.4 GPGPU/ 51
3.5 比较、讨论和小结/ 55
3.5.1 横向对比/ 55
3.5.2 软硬件协同优化新趋势/ 56
第4章 NVIDIA GPU指令集/ 57
4.1 寄存器/ 59
4.1.1 通用寄存器/ 59
4.1.2 特殊寄存器/ 59
4.1.3 Predicate寄存器/ 60
4.1.4 Uniform寄存器/ 61
4.1.5 讨论/ 61
4.2 内存和缓存/ 61
4.3 运算/ 62
4.3.1 浮点数运算/ 62
4.3.2 整数运算/ 65
4.3.3 Warp级别运算/ 66
4.4 本章小结/ 66
第5章 AMD GPU指令集/ 68
5.1 架构简介/ 69
5.2 寄存器/ 70
5.2.1 控制寄存器/ 70
5.2.2 通用寄存器/ 70
5.3 指令格式/ 71
5.3.1 常用指令字段/ 71
5.3.2 缓存控制修饰符/ 72
5.4 程序控制指令/ 73
5.5 标量指令/ 73
5.6 向量指令/ 74
5.6.1 编码格式及特点/ 74
5.6.2 16b计算/ 74
5.6.3 VOPD:双发射计算/ 75
5.6.4 矩阵乘加指令/ 75
5.7 内存和缓存/ 76
5.7.1 Flat访存/ 77
5.7.2 Global访存/ 78
5.7.3 Scratch访存/ 78
5.8 本章小结/ 78
第6章 RISC-V及其向量扩展/ 80
6.1 RISC-V指令集概述/ 80
6.1.1 RISC-V起源/ 80
6.1.2 RISC-V架构特点/ 80
6.2 RISC-V指令集/ 81
6.2.1 基础指令集/ 81
6.2.2 扩展指令集/ 83
6.3 RISC-V向量扩展概述/ 85
6.3.1 向量扩展的引入/ 85
6.3.2 向量寄存器和状态映射/ 86
6.3.3 RISC-V向量扩展的关键特性/ 86
6.4 RISC-V向量扩展的指令集/ 87
6.4.1 向量扩展指令集格式/ 87
6.4.2 向量masking/ 89
6.5 RISC-V向量扩展的应用/ 89
第7章 乘影GPGPU指令集/ 90
7.1 编程模型映射方案/ 90
7.2 指令设计说明/ 92
7.2.1 RISC-V标量指令/ 92
7.2.2 RISC-V向量指令/ 93
7.3 自定义指令/ 93
7.3.1 分支控制指令/ 94
7.3.2 寄存器扩展指令/ 95
7.3.3 同步和任务控制指令/ 96
7.3.4 自定义矩阵乘加指令/ 98
7.3.5 自定义计算指令/ 99
7.3.6 自定义访存指令/ 99
7.3.7 自定义64位地址空间立即数访存指令/ 101
7.3.8 自定义异步复制指令/ 101
7.3.9 自定义访存前缀指令/ 103
7.3.10 自定义计算前缀指令/ 104
7.4 寄存器/ 105
7.4.1 通用寄存器堆设计方案/ 105
7.4.2 CSR方案/ 105
7.4.3 应用程序二进制接口/ 106
7.5 内存模型和内存分配方案/ 106
7.6 本章小结/ 107
第3部分 乘影GPGPU硬件微架构/ 109

第8章 流式多处理器单元核心微架构/ 111
8.1 线程束调度器/ 114
8.1.1 线程束调度器架构/ 115
8.1.2 线程束调度的讨论/ 117
8.2 流水线前端设计/ 120
8.2.1 取指单元/ 120
8.2.2 译码单元/ 122
8.2.3 指令缓冲/ 124
8.2.4 记分板/ 126
8.2.5 线程分支与SIMT-Stack/ 127
8.2.6 SIMT分支的讨论/ 129
8.3 流水线后端设计/ 133
8.3.1 操作数收集器和寄存器文件/ 133
8.3.2 标量单元/ 136
8.3.3 浮点数乘法器/ 139
8.3.4 向量执行单元/ 142
8.3.5 特殊函数单元/ 145
8.3.6 乘法单元/ 147
8.3.7 LSU/ 147
8.3.8 写回单元/ 150
8.3.9 标量与仿射数据模式的扩展讨论/ 151
8.4 本章小结/ 152
第9章 CTA调度器/ 153
9.1 线程块调度策略概述/ 154
9.1.1 防止资源拥塞与负载不均的节流调度策略/ 154
9.1.2 针对线程块间空间局部性的调度策略/ 155
9.1.3 针对多内核函数的调度策略/ 156
9.2 线程块调度器的功能概述/ 157
9.3 线程块调度器的基本结构/ 158
9.3.1 顶层设计/ 159
9.3.2 子模块功能/ 159
9.4 资源判定流程/ 160
9.4.1 资源表缓存的语义/ 161
9.4.2 资源表缓存的项数/ 163
9.4.3 本节小结/ 165
9.5 硬件实现/ 165
9.5.1 线程块缓冲区/ 165
9.5.2 资源分配器/ 166
9.5.3 资源表/ 169
9.5.4 计算单元接口/ 172
9.5.5 线程索引/ 173
9.6 功能断言/ 174
9.7 本章小结/ 175
第10章 乘影GPGPU缓存子系统/ 176
10.1 共享内存系统的内存模型/ 176
10.1.1 共享内存系统的一致性、同步、连贯性/ 176
10.1.2 内存模型/ 179
10.2 连贯性指导的缓存一致性设计方案/ 189
10.3 GPGPU存储系统概述/ 190
10.3.1 GPGPU的片上存储系统/ 190
10.3.2 GPGPU缓存系统特点/ 191
10.3.3 共享内存设计与Bank Conflict/ 192
10.3.4 融合内存/ 194
10.4 一级缓存子系统硬件设计/ 195
10.4.1 一级缓存子系统接口/ 195
10.4.2 DCache设计概览/ 199
10.4.3 子模组设计/ 202
10.4.4 访存单元请求流水线时序行为/ 208
10.4.5 二级缓存响应流水线时序行为/ 210
10.5 二级缓存子系统硬件设计/ 210
10.6 原子模块硬件设计/ 213
10.6.1 原子操作介绍/ 213
10.6.2 原子模块硬件设计/ 214
10.7 通用图形处理器的访存特点及优化方向/ 217
10.8 本章小结/ 218
第11章 内存管理单元/ 219
11.1 引言/ 219
11.2 内存管理单元与虚拟内存技术概述/ 219
11.2.1 MMU的定义/ 220
11.2.2 虚拟内存/ 220
11.2.3 RISC-V的虚拟内存规范/ 221
11.2.4 GPU上的虚拟地址/ 223
11.3 乘影GPGPU中的MMU设计/ 225
11.3.1 一级TLB/ 225
11.3.2 二级TLB系统/ 226
11.3.3 辅助TLB存储/ 227
11.3.4 页表遍历转换单元/ 228
11.3.5 根页表地址映射表与地址空间管理/ 229
11.3.6 本节小结/ 229
11.3.7 软件页表维护/ 230
11.4 拓展讨论/ 230
11.5 本章小结/ 231
第12章 张量计算系统/ 233
12.1 Tensor Core/ 233
12.1.1 神经网络计算特征/ 234
12.1.2 张量计算单元/ 241
12.1.3 乘影GPGPU Tensor Core设计/ 248
12.1.4 讨论/ 252
12.2 Direct Memory Engine/ 253
12.2.1 数据访存加速器设计背景/ 253
12.2.2 乘影GPGPU的DMA Engine架构设计/ 258
12.3 本章小结/ 268
第4部分 乘影GPGPU软件工具链/ 269

第13章 OpenCL编程模型介绍/ 270
13.1 执行模型/ 271
13.2 软件线程与硬件资源/ 275
13.3 存储模型/ 276
13.4 本章小结/ 278
第14章 基于OpenCL的编译器设计/ 279
14.1 编译器的基本概念/ 279
14.1.1 编译器的工作流程/ 279
14.1.2 编译器的结构组成/ 280
14.1.3 编译器的类型/ 280
14.1.4 编译器与解释器的区别/ 281
14.2 编译器的作用和重要性/ 281
14.3 为什么选择LLVM/ 282
14.3.1 架构与灵活性/ 282
14.3.2 优化能力与跨平台社区生态/ 283
14.3.3 面向未来的机器学习与MLIR集成/ 283
14.4 LLVM编译器概述/ 284
14.4.1 LLVM的历史与发展/ 284
14.4.2 LLVM的架构/ 284
14.5 LLVM编译器的模块化架构/ 286
14.5.1 前端/ 286
14.5.2 中端/ 288
14.5.3 后端/ 294
14.6 OpenCL和乘影GPGPU编译器的结合/ 301
14.6.1 OpenCL C编程语言/ 301
14.6.2 Clang编译器编译OpenCL C的流程/ 304
14.6.3 OpenCL C的libclc函数库/ 305
第15章 驱动工具链/ 308
15.1 OpenCL运行时工作流程/ 308
15.2 OpenCL运行时实现/ 311
15.2.1 设备信息/ 311
15.2.2 OpenCL命令队列与事件修改/ 311
15.2.3 内存管理/ 312
15.2.4 设备执行/ 313
15.3 乘影驱动程序设计/ 315
15.3.1 硬件抽象层API/ 316
15.3.2 进程管理/ 316
15.3.3 基于驱动程序的虚拟设备实现/ 317
15.4 本章小结/ 318
参考文献/ 319

商品参数
基本信息
出版社 清华大学出版社
ISBN 9787302705055
条码 9787302705055
编者 何虎、马鸣远、于芳菲 著
译者 --
出版年月 2025-12-01 00:00:00.0
开本 其他
装帧 平装
页数
字数
版次 1
印次
纸张
商品评论

暂无商品评论信息 [发表商品评论]

商品咨询

暂无商品咨询信息 [发表商品咨询]