---
title: 什么是寄存器文件?
流式多处理器 (Streaming Multiprocessor)的寄存器文件是在计算核心 (core)进行数据操作期间的主要比特存储单元。
HH100 SM 内部架构图。蓝色部分描绘的是寄存器文件。修改自 NVIDIA 的 H100 白皮书。
与 CPU 中的寄存器类似,这些寄存器采用非常快速的内存技术制造,能够跟上计算核心 (core)的处理速度,比L1 数据缓存 (L1 data cache)快大约一个数量级。
寄存器文件被划分为 32 位寄存器,可以在不同数据类型之间动态重新分配,例如 32 位整数、64 位浮点数,以及(成组的)16 位或更小的浮点数。这些物理寄存器支撑着并行线程执行 (Parallel Thread eXecution, PTX)中间表示中的虚拟寄存器 (virtual registers)。
在流式汇编器 (Streaming Assembler, SASS)中,物理寄存器分配给线程 (thread)的工作由像 ptxas 这样的编译器管理,该编译器按线程块 (thread block)优化寄存器文件的使用。如果每个线程块 (thread block)消耗过多的寄存器文件(俗称高"寄存器压力 (register pressure)"),那么可并发调度的线程 (thread)数量将会减少,导致低占用率 (occupancy),并可能通过减少延迟隐藏 (latency hiding)的机会而影响性能。