The invention discloses a method for processing a branch register file structure in GPU, the register file structure, the register file in accordance with the average divided into N bank, N GPU in a SM can hold up the number of thread bundles; for register allocation method in a register file under the following constraints: (1) when the number of each thread bundles in the application to register more than or equal to the number of rows in each including bank, will register in the register file continuously and evenly distributed to each thread bundles; (2) when the number of each thread beam applications the need to register each including less than the number of rows in the bank, then each thread bundle a bank exclusive. Compared with the prior art, the invention has the highest utilization ratio of hardware after upgrading the GPU architecture, and can raise 3.1 times, and the average (OA) utilization ratio of hardware is increased from 62.7% to 85.9%. And the highest performance, can enhance 2.3 times, the average (HM) to enhance 8.4%.
【技术实现步骤摘要】
本专利技术涉及通用GPU计算领域,特别是涉及一种GPU中用于分支处理的寄存器文件结构。
技术介绍
随着集成电路技术的不断发展及集成度的不断提高,GPU的计算能力得到了不断的增强。当代的GPU已经不仅仅局限于处理图形应用,还能应用于通用计算领域,并且具有广阔的前景。为了使GPU能够更高效的执行通用计算,需要对GPU的微架构做进一步的优化。当代的GPU以单指令流多线程流(Single-InstructionMultiple-Thread,SIMT)的方式在单指令流多数据流(Single-InstructionMultiple-Data,SIMD)的硬件流水线上执行。在这种执行模式中,线程被硬件组织成线程束(warp)。线程束中的每一个线程都对应一个SIMD通道,并且线程束中的线程,每一个线程都能拥有自己独立的指令控制流(例如作为Warp3的各个线程Thread96,Thread97,Thread98,…...Thread127选择(WarpID,RegID)对应的寄存器(例如R3)中的Warp3的寄存器文件进行同时访问,如图1所示。多个线程束组成一个线程块(block),线程块的大小由程序员设定。然而,当程序中有条件分支出现的时候,线程束中的线程可能会选择不同的路径(如路径A-F、路径A-B-C,D-E-G),如图2所示。GPU通过SIMD通道屏蔽的方法来串行执行每一条路径,并且为每一个线程束分配一个栈来维护每一条路径的信息,如图3所示。图3中的栈是图2中线程束W0的路径信息。栈的一个条目由三个域构成,其中PC表示W0(Wrap0的简写)要执行的下一条指令的 ...
【技术保护点】
一种GPU中用于分支处理的寄存器文件结构,其特征在于,该寄存器文件结构中,把寄存器文件按照行平均分成N个bank,N是GPU中一个流多处理器所能容纳的最多的线程束的个数;对于寄存器文件中寄存器的分配方法遵循以下约束条件:(1)当应用程序中的每一个线程束所需要的寄存器的个数大于或等于每个bank中所包括的行数时,将寄存器文件中的寄存器连续地平均分配给每一个线程束;(2)当应用程序中的每一个线程束所需要的寄存器的个数小于每个bank中所包括的行数时,此时每一个线程束独占一个bank;其中,线程束在访问寄存器文件的时候,其中的每一个线程都会产生一个访问请求,仲裁器将针对同一个bank的访问请求进行合并并且根据其中被访问的每个bank的线程束索引、线程索引以及寄存器索引,生成相应的访问地址及控制信号;每一个访问请求根据生成的访问地址和控制信号读出bank中的一行的寄存器数据,再用crossbar将这一行中有效的数据路由到相应的SIMD通道上面;如果线程束中该SIMD通道所对应的线程无效,则对应的交叉开关的输出端口的输出为零;对应同一SIMD通道的所有的crossbar的输出中至多有一个数据是有 ...
【技术特征摘要】
1.一种GPU中用于分支处理的寄存器文件结构,其特征在于,该寄存器文件结构中,把寄存器文件按照行平均分成N个bank,N是GPU中一个流多处理器所能容纳的最多的线程束的个数;对于寄存器文件中寄存器的分配方法遵循以下约束条件:(1)当应用程序中的每一个线程束所需要的寄存器的个数大于或等于每个bank中所包括的行数时,将寄存器文件中的寄存器连续地平均分配给每一个线程束;(2)当应用程序中的每一个线程束所需要的寄存器的个数小于每个bank中所包括的行数时,此时每一个线程束独占一个bank;其中,线程束在访问寄存器文件的时候,其中的每一个线程都会产生一个访问请求,仲裁器将针对同一个bank的访问请求进行合并并且根据其中被访问的每个bank的线程束索引、线程索引以及寄存器索引,生成相应的访问地址及控制信号;每一个访问请求根据生成的访问地址和控制信号读出bank中的一行的寄存器数据,再用crossbar将这一行中有效的数据路由到相应的SIMD通道上面;如果线程束中该SIMD通道...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。