一种GPU中用于分支处理的寄存器文件结构的制作方法

文档序号:11154293阅读:来源:国知局

技术特征:

1.一种GPU中用于分支处理的寄存器文件结构,其特征在于,该寄存器文件结构中,把寄存器文件按照行平均分成N个bank,N是GPU中一个流多处理器所能容纳的最多的线程束的个数;对于寄存器文件中寄存器的分配方法遵循以下约束条件:

(1)当应用程序中的每一个线程束所需要的寄存器的个数大于或等于每个bank中所包括的行数时,将寄存器文件中的寄存器连续地平均分配给每一个线程束;

(2)当应用程序中的每一个线程束所需要的寄存器的个数小于每个bank中所包括的行数时,此时每一个线程束独占一个bank;

其中,线程束在访问寄存器文件的时候,其中的每一个线程都会产生一个访问请求,仲裁器将针对同一个bank的访问请求进行合并并且根据其中被访问的每个bank的线程束索引、线程索引以及寄存器索引,生成相应的访问地址及控制信号;每一个访问请求根据生成的访问地址和控制信号读出bank中的一行的寄存器数据,再用crossbar将这一行中有效的数据路由到相应的SIMD通道上面;如果线程束中该SIMD通道所对应的线程无效,则对应的交叉开关的输出端口的输出为零;对应同一SIMD通道的所有的crossbar的输出中至多有一个数据是有效的;最后,将各个crossbar的与SIMD通道相对应的输出端口进行“或”操作,过滤出其中的有效数据,输入到SIMD通道上面;线程任意的更换SIMD通道而且压缩后形成的线程束在访问寄存器文件的时候不会产生访问冲突。

2.如权利要求1所述的一种GPU中用于分支处理的寄存器文件结构,其特征在于,所述控制信号利用分支指令信息的栈结构实现维护,所述栈结构使用两个buffer0和Buffer1来存储最新遇到的分支信息;Buffer0用来存储线程在非提前调度状态下遇到分支后的信息,Buffer1用来存储线程在提前调度状态下遇到分支后的信息;一个线程块中的所有线程束共享一个栈,并且栈中增加线程束计数器来记录还没有到达分支或者汇合点的线程束的个数;当线程束到达分支或者汇合点时,WCnt减一;如果WCnt变成零,则表示线程块中所有的线程束全部到达分支或者汇合点。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1