GPU中的寄存器文件

2021-03-01  本文已影响0人  陈成_Adam

结构

寄存器文件通常划分为多个Bank,4个Register Bank组成的R寄存器文件结构如下,

image.png

每个Register Bank又可以包含两个RAM,

image.png

容量

GPU中,每个执行核中的寄存器的容量和这个核支持的最大线程数息息相关。

假设每个执行核最多支持A个Warp,每个Warp包含B个线程,每个线程可用的寄存器为:通用寄存器C个、特殊寄存器D个,每个寄存器为E个字节,则这个执行核的寄存器文件的大小为:

A \times B \times (C + D) \times E

访问

将Register File拆分成多个Register Bank是为了提高寄存器的访问效率。因为每个Register Bank都有独立的访问端口,这样多个Bank就可以并行访问,这类似于DDR的设计。

如果一条指令里面的源寄存器访问的都是不同的Bank,那么这无疑就提高了寄存器的访问效率。

通常我们可以这样分配寄存器的地址:

这样编译器在一条指令中使用寄存器的时候,顺序分配寄存器就可以让一条指令中的寄存器访问不同的Bank,从而提高寄存器的访问效率。

上一篇 下一篇

猜你喜欢

热点阅读