1. GPU 与 CPU 的架构差异,SIMT(Single Instruction Multiple Thread)模型如何为高吞吐并行设计?
请说明 GPU 与 CPU 在架构设计上的根本差异,并解释 SIMT(Single Instruction Multiple Thread)模型如何针对高吞吐并行进行设计?
- 了解 CPU 与 GPU 在控制流、缓存、算力密度上的差异
- 理解 SIMT 与 SIMD 的关系及 SIMT 的执行模型
- 掌握 GPU 面向吞吐量(throughput)而非延迟(latency)的设计哲学
CPU 采用少量复杂核心,配备大容量缓存和复杂分支预测/乱序执行,目标是降低单线程延迟;GPU 则采用大量简单核心,拥有极高的线程并发度,用大量线程并行来隐藏延迟,目标是最大化吞吐量。SIMT 模型下,GPU 以 warp(通常 32 线程)为单位执行同一指令,多条线程并行执行相同指令但作用于不同数据,本质上是"以线程数量补延迟"的策略。SIMT 与 SIMD 的区别在于 SIMT 的线程是独立调度的,每个线程有自己的寄存器、程序计数器和状态,但同一 warp 内共享指令流;当 warp 内出现分支发散时,不同路径会被串行执行,造成吞吐损失。整个设计围绕"吞吐优先"展开:寄存器堆极大、缓存较小、隐藏内存延迟靠线程切换而非数据预取。
理解 GPU 是为吞吐量优化的,关键在于认识到延迟隐藏的代价是尽量让硬件始终有可用线程可切换。CPU 追求单线程快,GPU 追求同时执行尽可能多的线程。SIMT 的 warp 统一指令流是性能来源,也是分支发散问题的根源。