Hardware Specialization
1. 能量受限计算
- 背景:超级计算机、数据中心和移动设备都面临能量受限的问题。
- 超级计算机:由于规模庞大,运行和冷却成本高昂。
- 数据中心:需要降低冷却成本和物理空间需求。
- 移动设备:电池寿命有限,且依赖无风扇散热。
- 核心问题:如何在能量受限的环境中实现高性能计算。
2. 专用硬件的优势
- 通用处理器的低效性:
- 现代处理器执行指令的复杂性导致了大量能量浪费。
- 通用处理器需要处理指令流、依赖性检查、寄存器访问等开销。
- 专用硬件的能效提升:
- ASIC(专用集成电路):相比CPU,ASIC在相同性能下能效提升可达100-1000倍。
- GPU:相比CPU,GPU的能效提升约为10倍。
- FPGA:介于ASIC和通用处理器之间,灵活性较高,能效约为50倍。
- 案例:
- Google TPU:专为深度学习设计,通过定制化的计算单元(如 systolic array)实现高效矩阵运算。
- Anton超级计算机:用于分子动力学模拟,通过ASIC优化粒子间相互作用计算。
3. 数据移动的高成本
- 数据移动的能量开销:
- 数据从内存读取到处理器的能量开销远高于计算本身。
- 例如,读取64位数据从LPDDR内存需要约1200 pJ,而执行一次浮点运算仅需约20 pJ。
- 优化策略:
- 减少数据移动:通过计算局部性优化(如复用计算结果而非存储和重新加载)。
- 避免频繁访问内存:利用片上存储(如寄存器文件或缓存)。
4. 内存系统优化
- DRAM工作原理:
- DRAM通过行激活、列选择和数据传输实现数据读取。
- 行命中(访问已激活的行)比行未命中(需要重新激活行)延迟更低。
- 内存控制器的作用:
- 调度内存请求以最大化吞吐量、最小化延迟和能耗。
- 通过请求合并和突发模式传输提高数据引脚利用率。
- 现代内存技术:
- HBM(高带宽内存):通过3D堆叠技术将内存靠近处理器,减少数据传输距离,提高带宽。
- 多通道内存系统:通过增加内存通道提高整体带宽。
5. 总结
- 专用硬件的核心思想:
- 使用专用硬件(如ASIC、TPU)在特定任务上实现更高的能效。
- 减少数据移动是优化能效的关键。
- 内存系统优化的方向:
- 将数据存储靠近处理器。
- 增加带宽并采用高效的数据传输技术(如HBM)。
- 通过硬件加速压缩减少数据传输量。
关键结论
- 专用硬件(如ASIC和TPU)在能效和性能方面远超通用处理器。
- 数据移动是能耗的主要来源,优化计算局部性和内存访问模式至关重要。
- 现代内存技术(如HBM)通过减少数据传输距离和增加带宽显著提升了系统性能和能效。
专用硬件的设计与编程
1. 专用硬件的设计与编程
1.1 专用硬件的能效与可编程性
- 能效 vs. 可编程性:
- ASIC(专用集成电路):能效最高(比 CPU 高 100-1000 倍),但不可编程。
- GPU:吞吐量导向,能效比 CPU 高约 10 倍。
- FPGA:可重配置逻辑,能效比 CPU 高约 50 倍,但编程复杂。
- 专用加速器(如 TPU):在特定领域(如 DNN)中提供高能效,但编程复杂度介于 GPU 和 ASIC 之间。
1.2 深度学习硬件加速器
- Google TPU:
- 专注于密集矩阵乘法,采用 systolic array( systolic array) 架构。
- TPU v1 的关键指令包括:读取主机内存、写入主机内存、矩阵乘法、卷积和激活。
- TPU 的算术单元占芯片面积的 30%,控制单元面积很小。
- Nvidia H100:
- 引入异步计算和内存机制,编程复杂度较高。
- ThunderKittens DSL(嵌入式 CUDA 模板库)简化了 H100 的编程。
- H100 的 Tensor Core 提供了 989 TFLOPS(fp16)的计算能力。
- SambaNova SN40L:
- 采用数据流架构(dataflow architecture),通过 tiling 和 streaming 优化性能。
- 支持 metapipelining(元流水线),简化了编程模型。
1.3 编程模型
- ThunderKittens DSL:
- 提供模板化的数据类型和操作(如矩阵乘法、共享内存管理)。
- 通过 tile processing pipeline(分块处理流水线)优化性能。
- SambaNova 数据流编程:
- 采用 metapipelining 技术,将并行模式(如 Map、Reduce)转换为流式流水线。
- 通过灵活的调度和缓冲区优化,减少同步开销。
2. 深度学习硬件的性能与能效
2.1 硬件加速器的性能
- TPU:
- 通过 systolic array 实现高效的矩阵乘法。
- TPU v3 超级计算机由 1024 个 TPU v3 芯片组成,采用 2D Torus 互连。
- Nvidia H100:
- 引入第四代 Tensor Core 和 Tensor Memory Accelerator(TMA)。
- 支持异步执行、分布式共享内存(SHMEM)和 DPX 指令。
- SambaNova SN40L:
- 采用可重构的 SIMD 管道和分布式 scratchpad,支持灵活的地址生成和高带宽。
2.2 能效优化
- 减少数据移动:
- 数据移动的能耗远高于计算操作(例如,从 LPDDR 读取 32 位数据的能耗是本地 SRAM 的 20 倍)。
- 优化策略包括:利用局部性、重计算而非存储、减少内存访问。
- 硬件设计优化:
- 3D 堆叠技术(如 HBM)减少数据传输距离,提高带宽。
- 将计算单元靠近内存(如内存计算)以减少数据移动。
3. 内存系统的瓶颈与优化
3.1 DRAM 的工作原理
- 访问延迟:
- 最佳情况:从已激活的行读取数据(CAS 延迟)。
- 最差情况:需要预充电、行激活和列访问(RAS + CAS + PRE)。
- 带宽限制:
- DRAM 通过 burst mode(突发模式)传输数据,以摊销访问延迟。
- 多个 bank 的 DRAM 芯片支持请求流水线,提高数据引脚利用率。
3.2 内存控制器
- 调度策略:
- 优先服务当前已打开的行(最大化行局部性)。
- 将小请求合并为大请求,以利用 DRAM 的突发模式。
- 多通道内存系统:
- 通过增加内存通道(如双通道)提高吞吐量。
- DDR4 内存每个通道提供 19.2 GB/s 的带宽。
3.3 内存优化技术
- 高带宽内存(HBM):
- 通过 3D 堆叠技术实现更高的带宽和更低的功耗。
- 例如,Nvidia H100 使用 HBM3,提供 3.2 TB/s 的峰值带宽。
- 内存计算:
- 将计算单元嵌入内存中,减少数据移动。
- 研究方向包括硬件加速压缩和内存内计算。
4. 总结
4.1 专用硬件的设计原则
- 最大化能效:使用专用处理器(如 TPU)和减少数据移动。
- 简化编程模型:通过 DSL(如 ThunderKittens)和数据流架构(如 SambaNova)降低编程复杂度。
- 优化内存系统:采用 HBM、3D 堆叠和内存计算技术。
4.2 未来方向
- 硬件与算法的协同设计:硬件设计应适应主流算法(如 Transformer 模型)。
- 内存瓶颈的突破:通过硬件创新(如 HBM)和软件优化(如调度算法)解决内存瓶颈。
- 能效与性能的平衡:在专用硬件中找到能效和可编程性的最佳平衡点。