title: 什么是寄存器压力?
寄存器压力是一个形象的说法,用于描述当寄存器文件成为性能瓶颈时的情况。
在并行线程执行 (PTX)语言中,寄存器是虚拟且无数量限制的,但流式多处理器 (SM)的寄存器文件是物理实体,因此数量有限。
线程消耗的寄存器文件空间大小由内核的流式汇编器 (SASS)代码决定。由于线程块中的所有线程都被调度到同一个SM上执行,因此线程块所需的总空间也由内核启动配置决定。随着每个线程块分配的空间增加,能够调度到同一个SM上的线程块数量就会减少,从而降低占用率,并使得延迟隐藏更加困难。
关于寄存器压力与近期流式多处理器架构新增关键特性(如Ampere架构添加的异步拷贝、Hopper架构添加的张量内存加速器(TMA)以及Blackwell架构添加的张量内存)之间关系的详细说明,请参阅SemiAnalysis的这篇优秀文章。
寄存器压力也存在于CPU中,类似的寄存器瓶颈会限制循环在自动向量化过程中进行条带挖掘的程度。