GPU中的寄存器文件

GPU中的寄存器文件,第1张

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

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

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

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

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

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

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

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

CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,它与CPU之间通过“端口”交换数据,外部寄存器具有寄存器和内存储器双重特点。有些时候我们常把外部寄存器就称为“端口”,这种说法不太严格,但经常这样说。

外部寄存器虽然也用于存放数据,但是它保存的数据具有特殊的用途。某些寄存器中各个位的0、1状态反映了外部设备的工作状态或方式;还有一些寄存器中的各个位可对外部设备进行控制;也有一些端口作为CPU同外部设备交换数据的通路。所以说,端口是CPU和外设间的联系桥梁。

CPU对端口的访问也是依据端口的“编号”(地址),这一点又和访问存储器一样。不过考虑到机器所联接的外设数量并不多,所以在设计机器的时候仅安排了1024个端口地址,端口地址范围为0--3FFH。

扩展资料

每组寄存器数目越小,对应的地址位线翻转电容也越小,寄存器访问的动态功耗也越低。其次,在RISC体系结构下,不同寄存器的访问频率并不相同,32个寄存器中4个~10个寄存器占据了总访问次数80%~90%。因此,将这些被频繁访问的寄存器单独成组,可有效降低整体寄存器的地址译码开销,从而降低功耗。

由扩展寄存器文件数据读通道和扩展寄存器文件数据写通道可知,寄存器配置位保证了每次只有4个寄存器组处于允许访问状态。如$0~$7寄存器组和$32~$39寄存器组每次只有一组处于允许访问状态,由相应的寄存器配置位进行配置。类似的,其他3对寄存器组也由相应的配置位控制。

参考资料来源:百度百科-文件地址寄存器

参考资料来源:百度百科-寄存器


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6045903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存