美文网首页
GPU中的寄存器文件

GPU中的寄存器文件

作者: 陈成_Adam | 来源:发表于2021-03-01 20:19 被阅读0次

    结构

    寄存器文件通常划分为多个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,那么这无疑就提高了寄存器的访问效率。

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

    • 寄存器 0、4、8 ... 访问的都是Bank 0;
    • 寄存器 1、5、9 ... 访问的都是Bank1;
    • 寄存器 2、6、10 ... 访问的都是Bank2;
    • 寄存器 3、7、11 ... 访问的都是Bank3;

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

    相关文章

      网友评论

          本文标题:GPU中的寄存器文件

          本文链接:https://www.haomeiwen.com/subject/ngxzfltx.html