Demystifying GPU Microarchitecture through Microbenchmarking

文章标题:通过微基准测试揭秘GPU微架构
作者/机构:Henry Wong, Misel-Myrto Papadopoulou, Maryam Sadooghi-Alvandi, and Andreas Moshovos (Department of Electrical and Computer Engineering, University of Toronto)

A1 主要贡献

本文旨在通过开发一套微基准测试程序,来测量和揭示Nvidia GT200 (GTX280) GPU中对CUDA可见的架构特性。由于制造商提供的文档信息有限且有时含糊不清,开发者、架构和编译器研究人员需要对现代GPU设计有更深入的理解。本文的研究重点是影响GPU性能的两个主要部分:算术处理核心和为这些核心提供指令与数据的内存层次结构。

核心问题与研究目标:
- 核心问题: 业界对GPU架构的了解主要依赖于制造商的文档(如NVIDIA的CUDA编程指南),但这些文档中的信息往往不够详尽或模糊,缺乏对底层硬件组织的深入解释。这给性能优化、死锁避免以及精确的性能建模带来了挑战。
- 研究目标: 通过微基准测试方法,精确测量Nvidia GT200 GPU的处理核心和内存层次结构的各种未公开特性,从而为性能优化、分析和建模提供详细、准确的硬件信息。

主要贡献:
* 验证官方性能特性: 验证了CUDA编程指南中列出的部分性能特性。
* 揭示控制流细节: 深入探究了分支分化(branch divergence)和屏障同步(barrier synchronization)的详细功能。发现了会导致死锁的非直观分支代码序列,并阐明了通过理解内部架构可以避免这些问题。
* 测量内存与缓存层次结构: 测量了内存缓存层次结构的组织和性能,包括翻译后备缓冲区(TLB)层次结构、常量内存(constant memory)、纹理内存(texture memory)和指令内存(instruction memory)的缓存。
* 分享测量技术: 详细介绍了所使用的测量技术,这些技术对于分析和建模其他GPU及类GPU系统,以及提高GPU性能建模与仿真的保真度具有参考价值【索引2, A. Bakhoda 等人, Analyzing CUDA Workloads Using a Detailed GPU Simulator, ISPASS 2009】。

GPU架构概览:
论文中展示了GT200的层级化硬件资源结构,线程块(Blocks of threads)在流式多处理器(Streaming Multiprocessors, SM)中执行。多个SM组成一个线程处理集群(Thread Processing Clusters, TPC),整个GPU则由多个TPC和内存系统构成。

图1:每个流式多处理器(SM)包含8个标量处理器(SP)
图1:每个流式多处理器(SM)包含8个标量处理器(SP)

图2:每个线程处理集群(TPC)包含3个SM
图2:每个线程处理集群(TPC)包含3个SM

图3:包含TPC和内存库的GPU整体结构
图3:包含TPC和内存库的GPU整体结构

A3 背景知识与测量方法

GPU架构与编程模型

测量方法

A2 方法细节

本节详细介绍我们的测试和结果。我们首先测量clock()函数的延迟,然后研究SM的各种算术流水线、分支分化和屏障同步。我们还探讨了SM内部及周围的内存缓存层次结构,以及内存转换和TLB。


表 II:算术流水线延迟与吞吐量

时钟开销和特性

算术流水线

控制流

屏障同步

寄存器文件

共享内存

全局内存

纹理内存

内存翻译

常量内存

指令供给

A4 实验环境

A4 实验结果

本文通过一系列微基准测试,揭示了Nvidia GT200 GPU的多项微架构细节,主要实验结果总结如下:

A5 结论

本文介绍了对Nvidia GT200 GPU的分析以及我们的测量技术。通过我们开发的微基准测试套件,揭示了处理核心和内存层次结构的架构细节。GPU是一个复杂的设备,我们不可能对每个细节都进行逆向工程,但我们相信我们已经研究了一部分有趣的特性。下表 V 总结了我们的架构发现。

我们的结果验证了CUDA编程指南【索引1, Nvidia, CUDA Programming Guide Version 2.0】中提出的一些硬件特性,但也揭示了一些未记录的硬件结构的存在,例如控制流机制以及缓存和TLB层次结构。此外,在某些情况下,我们的发现与文档记录的特性有所偏离(例如,纹理和常量缓存)。

我们还介绍了用于架构分析的技术。我们相信这些技术对于分析其他类GPU架构和验证类GPU性能模型将非常有用。最终目标是更好地了解硬件,以便我们能够充分发挥其潜力。

GT200架构总结表:




表 V: GT200架构总结

A6 附录

本文档不包含附录。

方法细节中的引用汇总