当前位置: 首页 > 专利查询>天津大学专利>正文

一种GPU中用于分支处理的寄存器文件结构制造技术

技术编号:15299846 阅读:53 留言:0更新日期:2017-05-12 02:07
本发明专利技术公开了一种GPU中用于分支处理的寄存器文件结构,该寄存器文件结构中,把寄存器文件按照行平均分成N个bank,N是GPU中一个SM所能容纳的最多的线程束的个数;对于寄存器文件中寄存器的分配方法遵循以下约束条件:(1)当应用程序中的每一个线程束所需要的寄存器的个数大于或等于每个bank中所包括的行数时,将寄存器文件中的寄存器连续地平均分配给每一个线程束;(2)当应用程序中的每一个线程束所需要的寄存器的个数小于每个bank中所包括的行数时,此时每一个线程束独占一个bank。与现有技术相比,本发明专利技术对GPU架构进行修改后,硬件利用率最高能提升3.1倍,平均(OA)的硬件利用率由62.7%提高到85.9%。而性能最高能够提升2.3倍,平均(HM)能够提升8.4%。

A register file structure for branching processing in GPU

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的简写)要执行的下一条指令的地址,RPC表示分支程序流的汇合点,如图2中的E和G,ActiveMask表示的是线程束中跳转到该路径的有效线程。GPU根据每一个线程束的ActiveMask来判断当前路径中应该执行哪些线程。当W0发生条件分支的时候(图2中的A点),GPU首先将汇合点的地址(G)写入栈顶(此时栈顶为条目①)的PC域,然后再向栈里弹入两个条目,即条目②和条目③,代表分支后的两条路径F和B。每个条目分别记录各自路径的PC,RPC以及ActiveMask,然后GPU首先执行栈顶的条目所代表的路径B。随后B又发生条件分支,此时GPU将条目③的PC域改为分支汇合点E,并且弹入条目④和条目⑤分别代表路径C和D。GPU首先执行路径D,当栈顶的PC等于RPC的时候,表示当前执行的路径下一条指令将到达汇合点,此时需要将条目⑤弹出,从而可以执行下一条路径,即路径C。当程序再次到达汇合点时,将条目④弹出,执行路径E,GPU按照上述执行方式运行一直到程序结束。这种方式虽然保证了程序流的正确性,并且能够在程序到达汇合点之后恢复条件分支之前线程束中线程的并行度,却不能在执行分支路径的时候增加线程束中有效线程的个数,导致SMID利用率和性能的下降。
技术实现思路
基于上述现有技术,本专利技术提出了一种GPU中用于分支处理的寄存器文件结构,为了在执行分支路径时增加线程束中有效线程的个数,提高线程并行度和SIMD硬件利用率,改善性能,可以将同一个线程块的不同线程束中执行同一路径的所有线程进行压缩,使这些线程能够在同一个线程束中运行。而为了使压缩效率最大化,需要解除线程束中线程与SIMD通道的一一对应关系,使得位于任意通道的线程都能够被压缩到同一个线程束中,并且在访问寄存器文件的时候不会产生额外的访问冲突。本专利技术公开了一种GPU中用于分支处理的寄存器文件结构,该寄存器文件结构中,把寄存器文件按照行平均分成N个bank,N是GPU中一个SM所能容纳的最多的线程束的个数;对于寄存器文件中寄存器的分配方法遵循以下约束条件:(1)当应用程序中的每一个线程束所需要的寄存器的个数大于或等于每个bank中所包括的行数时,将寄存器文件中的寄存器连续地平均分配给每一个线程束;(2)当应用程序中的每一个线程束所需要的寄存器的个数小于每个bank中所包括的行数时,此时每一个线程束独占一个bank;其中,线程束在访问寄存器文件的时候,其中的每一个线程都会产生一个访问请求,仲裁器将针对同一个bank的访问请求进行合并并且根据其中被访问的每个bank的线程束索引、线程索引以及寄存器索引,生成相应的访问地址及控制信号;每一个访问请求根据生成的访问地址和控制信号读出bank中的一行的寄存器数据,再用crossbar将这一行中有效的数据路由到相应的SIMD通道上面;如果线程束中该SIMD通道所对应的线程无效,则对应的crossbar的输出端口的输出为零;对应同一SIMD通道的所有的crossbar的输出中至多有一个数据是有效的;最后,将各个crossbar的与SIMD通道相对应的输出端口进行“或”操作,过滤出其中的有效数据,输入到SIMD通道上面;线程任意的更换SIMD通道而且压缩后形成的线程束在访问寄存器文件的时候不会产生访问冲突。所述控制信号利用分支指令信息的栈结构实现维护,所述栈结构使用两个buffer0和Buffer1来存储最新遇到的分支信息;Buffer0用来存储线程在非提前调度状态下遇到分支后的信息,Buffer1用来存储线程在提前调度状态下遇到分支后的信息;一个线程块中的所有线程束共享一个栈,并且栈中增加线程束计数器来记录还没有到达分支或者汇合点的线程束的个数;当线程束到达分支或者汇合点时,WCnt减一。如果WCnt变成零,则表示线程块中所有的线程束全部到达分支或者汇合点。实验结果显示,该方法能够有效的提高SIMD硬件利用率和性能。GPU的基本架构下的SIMD硬件利用率和采用该寄存器文件之后的压缩机制的硬件利用率对比如附图-7所示,性能对比如附图-8所示。对GPU架构进行修改后,硬件利用率最高能提升3.1倍,平均(OA)的硬件利用率由62.7%提高到85.9%。而性能最高能够提升2.3倍,平均(HM)能够提升8.4%。附图说明图1为GPU中寄存器文件结构图;图2为分支程序控制流示意图;图3为维护跳转路径信息的栈结构示意图;图4为改进后的寄存器文件结构图;图5为对改进后的寄存器文件结构的程序执行流程图;图6为改进后的维护分支指令信息的栈结构示意图;图7为本专利技术的改进寄存器架构与基本机构的SIMD通道硬件利用率效果比较图;图8为本专利技术的改进寄存器架构与基本机构的归一化性能比较图;图9为控制信号的产生逻辑图。具体实施方式下面将结合附图对本专利技术的具体实施方式进行详细描述,这些实施方式若存在示例性的内容,不应解释成对本专利技术的限制。为了在执行分支路径时增加线程束中有效线程的个数,提高线程并行度和SIMD硬件利用率,改善性能,可以将同一个线程块的不同线程束中执行同一路径的所有线程进行压缩,使这些线程能够在同一个线程束中运行。而为了使压缩效率最大化,需要解除线程束中线程与SIMD通道的一一对应关系,使得位于任意通道的线程都能够被压缩到同一个线程束中,并且在访问寄存器文件的时候不会产生额外的访问冲突。为了实现线程的任意压缩,需要重新设计寄存器文件结构,改进后的寄存器文件结构如图4所示。在该寄存器文件结构中,把寄存器文件按照行平均分成N个bank。N是GPU中一个StreamingMultiprocessor(SM,流多处理器)所能容纳的本文档来自技高网
...
一种GPU中用于分支处理的寄存器文件结构

【技术保护点】
一种GPU中用于分支处理的寄存器文件结构,其特征在于,该寄存器文件结构中,把寄存器文件按照行平均分成N个bank,N是GPU中一个流多处理器所能容纳的最多的线程束的个数;对于寄存器文件中寄存器的分配方法遵循以下约束条件:(1)当应用程序中的每一个线程束所需要的寄存器的个数大于或等于每个bank中所包括的行数时,将寄存器文件中的寄存器连续地平均分配给每一个线程束;(2)当应用程序中的每一个线程束所需要的寄存器的个数小于每个bank中所包括的行数时,此时每一个线程束独占一个bank;其中,线程束在访问寄存器文件的时候,其中的每一个线程都会产生一个访问请求,仲裁器将针对同一个bank的访问请求进行合并并且根据其中被访问的每个bank的线程束索引、线程索引以及寄存器索引,生成相应的访问地址及控制信号;每一个访问请求根据生成的访问地址和控制信号读出bank中的一行的寄存器数据,再用crossbar将这一行中有效的数据路由到相应的SIMD通道上面;如果线程束中该SIMD通道所对应的线程无效,则对应的交叉开关的输出端口的输出为零;对应同一SIMD通道的所有的crossbar的输出中至多有一个数据是有效的;最后,将各个crossbar的与SIMD通道相对应的输出端口进行“或”操作,过滤出其中的有效数据,输入到SIMD通道上面;线程任意的更换SIMD通道而且压缩后形成的线程束在访问寄存器文件的时候不会产生访问冲突。...

【技术特征摘要】
1.一种GPU中用于分支处理的寄存器文件结构,其特征在于,该寄存器文件结构中,把寄存器文件按照行平均分成N个bank,N是GPU中一个流多处理器所能容纳的最多的线程束的个数;对于寄存器文件中寄存器的分配方法遵循以下约束条件:(1)当应用程序中的每一个线程束所需要的寄存器的个数大于或等于每个bank中所包括的行数时,将寄存器文件中的寄存器连续地平均分配给每一个线程束;(2)当应用程序中的每一个线程束所需要的寄存器的个数小于每个bank中所包括的行数时,此时每一个线程束独占一个bank;其中,线程束在访问寄存器文件的时候,其中的每一个线程都会产生一个访问请求,仲裁器将针对同一个bank的访问请求进行合并并且根据其中被访问的每个bank的线程束索引、线程索引以及寄存器索引,生成相应的访问地址及控制信号;每一个访问请求根据生成的访问地址和控制信号读出bank中的一行的寄存器数据,再用crossbar将这一行中有效的数据路由到相应的SIMD通道上面;如果线程束中该SIMD通道...

【专利技术属性】
技术研发人员:魏继增
申请(专利权)人:天津大学
类型:发明
国别省市:天津;12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1