背景知识
NVIDIA GPU中Volta及更新的架构,L1TEX的处理流程可以简化描述如下:
当一个SM(流式多处理器)为一个warp执行Global或Local内存指令时,会向L1TEX发送一个Request。这个Request包含了该warp中所有参与线程(最多32个线程)的信息。对于全局和本地内存,根据访问模式和参与的线程数量,Request需要访问多个cache line以及这些cache line内的多个sector。
L1TEX单元内部有多个处理阶段,以流水线方式运行。
Wavefront
wavefront 是每个流水线 stage 每个周期内可以处理的一个packet。如果在一个wavefront中不能访问Request所有cache line或sector,则会创建多个wavefront并依次进行处理,即以串行方式进行。
wavefront内可同时处理范围的限制可能包括对一致性内存空间的需求、可以访问的最大cache line数量以及其他原因。每个wavefront随后流经L1TEX流水线,并读取该wavefront处理的sector。
wavefront的理解:
- wavefront可以理解为一个可以一次同时处理的“work packet”。也就是说,在L1TEX中每个cycle处理一个wavefront(pipeline 每cycle完成一个wavefront)。因此,wavefront也可以表示处理Request所需的周期数,而每个请求所需的sector数量取决于所有参与线程的内存指令的访问模式。例如,可能存在一个内存指令,每个请求需要4个sector,并且可以在1个wave