本发明专利技术适用于高性能计算技术领域,提供了一种基于GPGPU体系结构的协同调度方法及系统,所述方法包括:将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;在Fetch阶段,从所述合并后的优先级调度队列中获取指令;对获取的指令进行解码;在Issue阶段,通过Issue阶段的两个调度器并行执行解码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;在所述发射后的指令进入流水线后开始执行;将执行后的指令结果写回到指定位置。通过本发明专利技术,可有效提高GPGPU性能。
【技术实现步骤摘要】
基于GPGPU体系结构的协同调度方法及系统
本专利技术属于高性能计算
,尤其涉及一种基于GPGPU体系结构的协同调度方法及系统。
技术介绍
通用计算图形处理器(GeneralPurposeGraphicProcessingUnit,GPGPU)是一种高性能、并行计算的处理器。从硬件资源角度来说,以NVIDIA公司的Fermi架构GPGPU为例,它在硬件上是一块单独的较大的板卡,上面由PCI插槽与主机系统相连。微观上,GPGPU包含若干个SM,SM即StreamingMultiProcessor中文意义是流多处理器,每个SM是硬件上的一个独立的行动单元。每个SM上可以包含若干个SP,SP是指ScalarProcessor,是硬件的计算单元,计算单元除了SP之外,还包括若干个SFU计算单元,SFU是用来完成特殊计算功能的部件。除了计算单元以外,每个SM还包含有自己的寄存器文件,共享内存,L1数据缓存和指令缓存。为了支持多线程并行执行,SM上的寄存器文件通常都是比较大的。共享内存是一块特殊的内存,它的速度可以与L1缓存一样快,并且只能被软件概念的一个线程块中的线程访问,可以用来进行一个线程块内的数据交互。除此之外,GPGPU还提供了纹理缓存和常量缓存,这是完全不同于CPU架构的设计。纹理缓存用于文理类图形算法的数据快速存取。常量内存缓存用于只读变量的存储。显存DRAM作为GPGPU的主存,在SM片外,因此直接访问主存的时间延迟是最高的。GPGPU软件编程的CUDA架构是NVIDIA公司提出的一个统一计算架构。在CUDAGPGPU编程模型中,线程被组织成两个层次,分为格和线程块。用户定义的线程可以被分成许多格,每个格中又可以包含许多线程块,每个线程块包含许多线程。线程块内包含的线程数量,格内包含的线程块数量都是用户可定义的。具体执行时,一个线程块的线程可以通过共享内存快速的交换数据,可以通过同步原语进行线程块内的执行同步。对于GPGPU而言资源的分配单元是线程块,而执行单元则是Warp,不是单个线程。GPGPU以Warp为最小执行单位,Warp是一组连续的32个线程,每次执行一条指令,都是一个Warp内所有的线程同时执行,一般来说一条指令每时每刻都会有32个线程同时执行,这就是单指令多数据(SIMD)的数据处理方式,从线程并行角度也可以理解成单指令多线程(SIMT)架构。但是由于Warp内的32个线程可能出现分支的情况,如果出现分支,那么Warp内的32个线程就会依照分支分组串行执行,此时会造成一些资源的闲置。在内存层次上,GPGPU有L1数据缓存和L2数据缓存,DRAM主存。L1数据缓存是每个SM上的线程块共用,L2数据缓存是所有SM上的线程块共用。当L1缓存不命中时,请求会被发送到L2缓存,当L2缓存不命中时,请求会被发送请求到DRAM。当用户指定一个kernel执行时,这个kernel的所有线程块被逐个分配给各个SM,因为每个线程块都要占用一定资源,因此每个SM上能够同时驻留的线程块是有限的。这也就导致了不是所有的线程块都能同时驻留在SM上,因为资源限制,要等到某个线程块结束,才可以将一个新的线程块发射到这个资源空闲的SM上。GPGPU内部流水线阶段主要包括Fetch(取指令),Decode(指令解码),Issue(发射指令),Execute(指令执行),Writeback(结果写回)。Fetch阶段是取指令阶段,在这个阶段Fetch部件为一个满足条件的Warp从指令缓存取一条或者两条指令到I-Buffer(指令临时缓存)。随后Decode(指令解码)部件对刚刚取回的指令进行解码。每个Warp都有与之对应的I-Buffer,用来存储刚刚解码的指令。Issue阶段是指令的发射阶段,在这个阶段中调度器根据优先级算法,从待发射队列中找到一个Warp进行发射。发射的效果就是经这条指令放到后端的流水线中开始执行。Execute阶段代指指令在计算流水线和访存流水线中执行的阶段。Writeback阶段负责将刚刚执行的指令结果写回到指定位置。在整个流水线过程中,有两个阶段发生了调度,一个是Fetch阶段,它负责选取为哪一个Warp取指令;另一个是Issue阶段,它负责选择一个Warp进行发射。GPGPU内部基本Warp调度策略分为轮询调度策略(Lrr),年老优先调度策略(Oldest),年轻优先调度策略(Youngest)。轮询调度策略就是Lrr(LooseRoundRobin)调度策略,它是一种最简单的调度策略,它的实现是基于轮询机制的,利用它可以使得被调度个体获得均等的调度机会。轮询调度策略的基本算法是将本轮次被选中的成员的下一个紧邻成员作为下一轮优先级队列优先级最高的成员。其余成员的相对顺序不变。Oldest调度策略是我们依据现有的Gto调度策略提出来的一种基本调度策略,年老优先调度策略的核心是按照时间排序Warp,先被发射到GPUSM上的Warp也即“老的”Warp具有高的优先级。这是一个以时间为优先级标准的调度策略。在这种调度策略中先发射到SM上的Warp始终排在优先队列的前面。这种策略的优势是能够集中资源促使最先发射的Warp尽快地执行完。而不同于Lrr策略的使得每个Warp都获得均衡的机会。年轻优先调度策略是与年老优先调度策略相反的调度策略。年轻优先调度策略中把较晚到达SM上的Warp放在较高优先级,较早到达SM上的Warp放到较低优先级。因此年轻优先调度策略的优先级调度队列可以看做是一个按照WarpId降序排列的一个队列。以上的三种调度策略Lrr,Oldest以及Youngest都可以和Greedy(贪心)的思想相结合形成Gtlrr(GreedyTheLrr),Gto(GreedyThenOldest),Gty(GreedyThenYoungest)三种调度策略。以Gto为例,Gto调度策略是建立在Oldest策略基础上的,唯一不同的是它对上一次刚被Issue的Warp实行贪心策略,实行的方式是将这个Warp排在调度队列最高优先级位置。其余Warp的优先级排列仍然按照Oldest策略执行。Gto,Gtlrr,Gty策略都是对前一次刚被选中的Warp实行Greedy策略使得这个Warp排在队列最前面。这种策略的特点是尽可能使得某个Warp一直处于高的调度优先级,尽量使其先执行完毕。GPGPU硬件在Fetch阶段采用的是Lrr策略,在Issue阶段采用的是Lrr或者Gto策略。在现有技术中,关于GPGPUWarp调度策略的优化,基本上都是在研究如何在Issue阶段进行针对内存访问或者Cache方向的优化,而没有提及Fetch阶段调度策略的优化,Fetch阶段都默认采用简单的轮询(Lrr)调度策略。
技术实现思路
鉴于此,本专利技术实施例提供一种基于GPGPU体系结构的协同调度方法及系统,以在Fetch阶段能够最大限度的满足Issue阶段的需求,充分发挥Issue阶段的策略能力,从整体上提升GPGPU的计算性能。本专利技术实施例是这样实现的,一种基于GPGPU体系结构的协同调度方法,所述方法包括:将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优本文档来自技高网...
【技术保护点】
一种基于GPGPU体系结构的协同调度方法,其特征在于,所述方法包括:将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;在Fetch阶段,从所述合并后的优先级调度队列中获取指令;对获取的指令进行解码;在Issue阶段,通过Issue阶段的两个调度器并行执行解码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;在所述发射后的指令进入流水线后开始执行;将执行后的指令结果写回到指定位置。
【技术特征摘要】
1.一种基于GPGPU体系结构的协同调度方法,其特征在于,所述方法包括:将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;在Fetch阶段,从所述合并后的优先级调度队列中获取指令;对获取的指令进行解码;在Issue阶段,通过Issue阶段的两个调度器并行执行解码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;在所述发射后的指令进入流水线后开始执行;将执行后的指令结果写回到指定位置。2.如权利要求1所述的方法,其特征在于,所述从合并后的优先级调度队列中获取指令包括:从合并后的优先级调度队列中,按照优先级从高到低的顺序获取指令。3.一种基于GPGPU体系结构的协同调度系统,其特征在于,所述系统包括:合并单元,...
【专利技术属性】
技术研发人员:张洪亮,喻之斌,冯圣中,
申请(专利权)人:中国科学院深圳先进技术研究院,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。