基于gpgpu体系结构的协同调度方法及系统的利记博彩app

文档序号:8319021阅读:896来源:国知局
基于gpgpu体系结构的协同调度方法及系统的利记博彩app
【技术领域】
[0001]本发明属于高性能计算技术领域,尤其涉及一种基于GPGPU体系结构的协同调度方法及系统。
【背景技术】
[0002]通用计算图形处理器(GeneralPurpose Graphic Processing Unit,GPGPU)是一种高性能、并行计算的处理器。
[0003]从硬件资源角度来说,以NVIDIA公司的Fermi架构GPGPU为例,它在硬件上是一块单独的较大的板卡,上面由PCI插槽与主机系统相连。微观上,GPGPU包含若干个SM,SM即Streaming Multiprocessor中文意义是流多处理器,每个SM是硬件上的一个独立的行动单元。每个SM上可以包含若干个SP,SP是指Scalar Processor,是硬件的计算单元,计算单元除了 SP之外,还包括若干个SFU计算单元,SFU是用来完成特殊计算功能的部件。除了计算单元以外,每个SM还包含有自己的寄存器文件,共享内存,LI数据缓存和指令缓存。为了支持多线程并行执行,SM上的寄存器文件通常都是比较大的。共享内存是一块特殊的内存,它的速度可以与LI缓存一样快,并且只能被软件概念的一个线程块中的线程访问,可以用来进行一个线程块内的数据交互。除此之外,GPGPU还提供了纹理缓存和常量缓存,这是完全不同于CPU架构的设计。纹理缓存用于文理类图形算法的数据快速存取。常量内存缓存用于只读变量的存储。显存DRAM作为GPGPU的主存,在SM片外,因此直接访问主存的时间延迟是最尚的。
[0004]GPGPU软件编程的CUDA架构是NVIDIA公司提出的一个统一计算架构。在CUDAGPGPU编程模型中,线程被组织成两个层次,分为格和线程块。用户定义的线程可以被分成许多格,每个格中又可以包含许多线程块,每个线程块包含许多线程。线程块内包含的线程数量,格内包含的线程块数量都是用户可定义的。具体执行时,一个线程块的线程可以通过共享内存快速的交换数据,可以通过同步原语进行线程块内的执行同步。对于GPGPU而言资源的分配单元是线程块,而执行单元则是Warp,不是单个线程。GPGPU以Warp为最小执行单位,Warp是一组连续的32个线程,每次执行一条指令,都是一个Warp内所有的线程同时执行,一般来说一条指令每时每刻都会有32个线程同时执行,这就是单指令多数据(SIMD)的数据处理方式,从线程并行角度也可以理解成单指令多线程(SMT)架构。但是由于Warp内的32个线程可能出现分支的情况,如果出现分支,那么Warp内的32个线程就会依照分支分组串行执行,此时会造成一些资源的闲置。在内存层次上,GPGPU有LI数据缓存和L2数据缓存,DRAM主存。LI数据缓存是每个SM上的线程块共用,L2数据缓存是所有SM上的线程块共用。当LI缓存不命中时,请求会被发送到L2缓存,当L2缓存不命中时,请求会被发送请求到DRAM。当用户指定一个kernel执行时,这个kernel的所有线程块被逐个分配给各个SM,因为每个线程块都要占用一定资源,因此每个SM上能够同时驻留的线程块是有限的。这也就导致了不是所有的线程块都能同时驻留在SM上,因为资源限制,要等到某个线程块结束,才可以将一个新的线程块发射到这个资源空闲的SM上。
[0005]GPGPU内部流水线阶段主要包括Fetch (取指令),Decode (指令解码),Issue (发射指令),Execute (指令执行),Writeback(结果写回)。Fetch阶段是取指令阶段,在这个阶段Fetch部件为一个满足条件的Warp从指令缓存取一条或者两条指令到1-BufTer (指令临时缓存)。随后Decode (指令解码)部件对刚刚取回的指令进行解码。每个Warp都有与之对应的1-Buffer,用来存储刚刚解码的指令。Issue阶段是指令的发射阶段,在这个阶段中调度器根据优先级算法,从待发射队列中找到一个Warp进行发射。发射的效果就是经这条指令放到后端的流水线中开始执行。Execute阶段代指指令在计算流水线和访存流水线中执行的阶段。Writeback阶段负责将刚刚执行的指令结果写回到指定位置。在整个流水线过程中,有两个阶段发生了调度,一个是Fetch阶段,它负责选取为哪一个Warp取指令;另一个是Issue阶段,它负责选择一个Warp进行发射。
[0006]GPGPU内部基本Warp调度策略分为轮询调度策略(Lrr),年老优先调度策略(Oldest),年轻优先调度策略(Youngest)。轮询调度策略就是Lrr (Loose Round Robin)调度策略,它是一种最简单的调度策略,它的实现是基于轮询机制的,利用它可以使得被调度个体获得均等的调度机会。轮询调度策略的基本算法是将本轮次被选中的成员的下一个紧邻成员作为下一轮优先级队列优先级最高的成员。其余成员的相对顺序不变。Oldest调度策略是我们依据现有的Gto调度策略提出来的一种基本调度策略,年老优先调度策略的核心是按照时间排序Warp,先被发射到GPU SM上的Warp也即“老的” Warp具有高的优先级。这是一个以时间为优先级标准的调度策略。在这种调度策略中先发射到SM上的Warp始终排在优先队列的前面。这种策略的优势是能够集中资源促使最先发射的Warp尽快地执行完。而不同于Lrr策略的使得每个Warp都获得均衡的机会。年轻优先调度策略是与年老优先调度策略相反的调度策略。年轻优先调度策略中把较晚到达SM上的Warp放在较高优先级,较早到达SM上的Warp放到较低优先级。因此年轻优先调度策略的优先级调度队列可以看做是一个按照Warp Id降序排列的一个队列。以上的三种调度策略Lrr,Oldest以及Youngest都可以和Greedy (贪心)的思想相结合形成Gt lrr (Greedy The Lrr),Gto (Greedy Then Oldest),Gty (Greedy Then Youngest)三种调度策略。以 Gto 为例,Gto调度策略是建立在Oldest策略基础上的,唯一不同的是它对上一次刚被Issue的Warp实行贪心策略,实行的方式是将这个Warp排在调度队列最高优先级位置。其余Warp的优先级排列仍然按照Oldest策略执行。Gto,Gtlrr,Gty策略都是对前一次刚被选中的Warp实行Greedy策略使得这个Warp排在队列最前面。这种策略的特点是尽可能使得某个Warp一直处于高的调度优先级,尽量使其先执行完毕。GPGPU硬件在Fetch阶段采用的是Lrr策略,在Issue阶段采用的是Lrr或者Gto策略。
[0007]在现有技术中,关于GPGPU Warp调度策略的优化,基本上都是在研宄如何在Issue阶段进行针对内存访问或者Cache方向的优化,而没有提及Fetch阶段调度策略的优化,Fetch阶段都默认采用简单的轮询(Lrr)调度策略。

【发明内容】

[0008]鉴于此,本发明实施例提供一种基于GPGPU体系结构的协同调度方法及系统,以在Fetch阶段能够最大限度的满足Issue阶段的需求,充分发挥Issue阶段的策略能力,从整体上提升GPGPU的计算性能。
[0009]本发明实施例是这样实现的,一种基于GPGPU体系结构的协同调度方法,所述方法包括:
[0010]将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;
[0011]在Fetch阶段,从所述合并后的优先级调度队列中获取指令;
[0012]对获取的指令进行解码;
[0013]在Issue阶段,通过Issue阶段的两个调度器并行执行解码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;
[0014]在所述发射后的指令进入流水线后开始执行;
[0015]将执行后的指令结果写回到指定位置。
[0016]本发明实施例的另一目的在于提供一种基于GPGPU体系结构的协同调度系统,所述系统包括:
[0017]合并单元,用于将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;
[0018]取指令单元,用于在Fetch阶段,从所述合并后的优先级调度队列中获取指令;
[0019]指令解码单元,用于对获取的指令进行解码;
[0020]指令发射单元,用于在Issue阶段,通过Issue阶段的两个调度器并行执行解码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;
[0021]指令执行单元,用于在所述发射后的指令进入流水线后开始执行;
[0022]结果写回单元,用于将执行后的指令结果写回到指定位置。
[0023]本发明实施例与现有技术相比存在的有益效果是:本发明实施例将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列,使得Fetch阶段能够最大限度的满足Issue阶段的需求,充分发挥Issue阶段的策略能力。而且,通过建立Fetch阶段优先级调度队列与Issue阶段优先级调度队列之间的联系,使得Fetch阶段有能力访问Issue阶段的优先级调度队列,从而可以有目的进行指令预取,减少将要发射的指令没有被取回的可能性,提高GPGPU性能,具有较强的易用性和实用性。
【附图说明】
[0024]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0025]图1是本发明实施例一提供的基于GPGPU体系结构的协同调度方法的实现流程图;
[0026]图2是本发明实施例一提供的实现协同调度的体系架构示意图;
[0027]图3是本发明实施例二提供的基于GPGPU体系结构的协同调度系统的组成结构图。
【具体实施方式】
[0028]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透切理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0029]为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0030]实施例一:
[0031]图1示出了本发明实施例二提供的基于GPGPU体系结构的协同调度方法的实现流程,该方法过程详述如下:
[0032]在步骤SlOl中,将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;
[0033]在步骤S102中,在Fetch阶段,从所述合并后的优先级调度队列中获取指令;
[0034]在步骤S103中,对获取的指
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1