基于GPGPU体系结构的协同调度方法及系统.pdf

上传人:r7 文档编号:1667632 上传时间:2018-07-03 格式:PDF 页数:10 大小:620.27KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510063714.1

申请日:

2015.02.06

公开号:

CN104636207A

公开日:

2015.05.20

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/50申请日:20150206|||公开

IPC分类号:

G06F9/50

主分类号:

G06F9/50

申请人:

中国科学院深圳先进技术研究院

发明人:

张洪亮; 喻之斌; 冯圣中

地址:

518000广东省深圳市南山区西丽大学城学苑大道1068号

优先权:

专利代理机构:

深圳中一专利商标事务所44237

代理人:

张全文

PDF下载: PDF下载
内容摘要

本发明适用于高性能计算技术领域,提供了一种基于GPGPU体系结构的协同调度方法及系统,所述方法包括:将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;在Fetch阶段,从所述合并后的优先级调度队列中获取指令;对获取的指令进行解码;在Issue阶段,通过Issue阶段的两个调度器并行执行解码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;在所述发射后的指令进入流水线后开始执行;将执行后的指令结果写回到指定位置。通过本发明,可有效提高GPGPU性能。

权利要求书

权利要求书
1.  一种基于GPGPU体系结构的协同调度方法,其特征在于,所述方法包 括:
将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并 后的优先级调度队列作为Fetch阶段的优先级调度队列;
在Fetch阶段,从所述合并后的优先级调度队列中获取指令;
对获取的指令进行解码;
在Issue阶段,通过Issue阶段的两个调度器并行执行解码后的指令,并按 照所述调度器各自的调度策略发射所述解码后的指令;
在所述发射后的指令进入流水线后开始执行;
将执行后的指令结果写回到指定位置。

2.  如权利要求1所述的方法,其特征在于,所述从合并后的优先级调度队 列中获取指令包括:
从合并后的优先级调度队列中,按照优先级从高到低的顺序获取指令。

3.  一种基于GPGPU体系结构的协同调度系统,其特征在于,所述系统包 括:
合并单元,用于将Issue阶段的两个优先级调度队列合并为一个优先级调度 队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;
取指令单元,用于在Fetch阶段,从所述合并后的优先级调度队列中获取 指令;
指令解码单元,用于对获取的指令进行解码;
指令发射单元,用于在Issue阶段,通过Issue阶段的两个调度器并行执行 解码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;
指令执行单元,用于在所述发射后的指令进入流水线后开始执行;
结果写回单元,用于将执行后的指令结果写回到指定位置。

4.  如权利要求3所述的系统,其特征在于,所述取指令单元具体用于:
从合并后的优先级调度队列中,按照优先级从高到低的顺序获取指令。

5.  如权利要求3所述的系统,其特征在于,所述合并单元还用于,数值比 较以及数据存取。

说明书

说明书基于GPGPU体系结构的协同调度方法及系统
技术领域
本发明属于高性能计算技术领域,尤其涉及一种基于GPGPU体系结构的 协同调度方法及系统。
背景技术
通用计算图形处理器(General Purpose Graphic Processing Unit,GPGPU)是 一种高性能、并行计算的处理器。
从硬件资源角度来说,以NVIDIA公司的Fermi架构GPGPU为例,它在硬件上 是一块单独的较大的板卡,上面由PCI插槽与主机系统相连。微观上,GPGPU包 含若干个SM,SM即Streaming MultiProcessor中文意义是流多处理器,每个SM 是硬件上的一个独立的行动单元。每个SM上可以包含若干个SP,SP是指Scalar  Processor,是硬件的计算单元,计算单元除了SP之外,还包括若干个SFU计算 单元,SFU是用来完成特殊计算功能的部件。除了计算单元以外,每个SM还包含 有自己的寄存器文件,共享内存,L1数据缓存和指令缓存。为了支持多线程并 行执行,SM上的寄存器文件通常都是比较大的。共享内存是一块特殊的内存, 它的速度可以与L1缓存一样快,并且只能被软件概念的一个线程块中的线程访 问,可以用来进行一个线程块内的数据交互。除此之外,GPGPU还提供了纹理缓 存和常量缓存,这是完全不同于CPU架构的设计。纹理缓存用于文理类图形算法 的数据快速存取。常量内存缓存用于只读变量的存储。显存DRAM作为GPGPU的主 存,在SM片外,因此直接访问主存的时间延迟是最高的。
GPGPU软件编程的CUDA架构是NVIDIA公司提出的一个统一计算架构。在CUDA  GPGPU编程模型中,线程被组织成两个层次,分为格和线程块。用户定义的线程 可以被分成许多格,每个格中又可以包含许多线程块,每个线程块包含许多线 程。线程块内包含的线程数量,格内包含的线程块数量都是用户可定义的。具 体执行时,一个线程块的线程可以通过共享内存快速的交换数据,可以通过同 步原语进行线程块内的执行同步。对于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(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策略。
在现有技术中,关于GPGPU Warp调度策略的优化,基本上都是在研究如何 在Issue阶段进行针对内存访问或者Cache方向的优化,而没有提及Fetch阶段调 度策略的优化,Fetch阶段都默认采用简单的轮询(Lrr)调度策略。
发明内容
鉴于此,本发明实施例提供一种基于GPGPU体系结构的协同调度方法及 系统,以在Fetch阶段能够最大限度的满足Issue阶段的需求,充分发挥Issue 阶段的策略能力,从整体上提升GPGPU的计算性能。
本发明实施例是这样实现的,一种基于GPGPU体系结构的协同调度方法, 所述方法包括:
将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并 后的优先级调度队列作为Fetch阶段的优先级调度队列;
在Fetch阶段,从所述合并后的优先级调度队列中获取指令;
对获取的指令进行解码;
在Issue阶段,通过Issue阶段的两个调度器并行执行解码后的指令,并按 照所述调度器各自的调度策略发射所述解码后的指令;
在所述发射后的指令进入流水线后开始执行;
将执行后的指令结果写回到指定位置。
本发明实施例的另一目的在于提供一种基于GPGPU体系结构的协同调度 系统,所述系统包括:
合并单元,用于将Issue阶段的两个优先级调度队列合并为一个优先级调度 队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;
取指令单元,用于在Fetch阶段,从所述合并后的优先级调度队列中获取 指令;
指令解码单元,用于对获取的指令进行解码;
指令发射单元,用于在Issue阶段,通过Issue阶段的两个调度器并行执行 解码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;
指令执行单元,用于在所述发射后的指令进入流水线后开始执行;
结果写回单元,用于将执行后的指令结果写回到指定位置。
本发明实施例与现有技术相比存在的有益效果是:本发明实施例将Issue 阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级 调度队列作为Fetch阶段的优先级调度队列,使得Fetch阶段能够最大限度的满 足Issue阶段的需求,充分发挥Issue阶段的策略能力。而且,通过建立Fetch 阶段优先级调度队列与Issue阶段优先级调度队列之间的联系,使得Fetch阶段 有能力访问Issue阶段的优先级调度队列,从而可以有目的进行指令预取,减少 将要发射的指令没有被取回的可能性,提高GPGPU性能,具有较强的易用性 和实用性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技 术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅 仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳 动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的基于GPGPU体系结构的协同调度方法的实 现流程图;
图2是本发明实施例一提供的实现协同调度的体系架构示意图;
图3是本发明实施例二提供的基于GPGPU体系结构的协同调度系统的组 成结构图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术 之类的具体细节,以便透切理解本发明实施例。然而,本领域的技术人员应当 清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中, 省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节 妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明实施例二提供的基于GPGPU体系结构的协同调度方法 的实现流程,该方法过程详述如下:
在步骤S101中,将Issue阶段的两个优先级调度队列合并为一个优先级调 度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;
在步骤S102中,在Fetch阶段,从所述合并后的优先级调度队列中获取指 令;
在步骤S103中,对获取的指令进行解码;
在步骤S104中,在Issue阶段,通过Issue阶段的两个调度器并行执行解 码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;
在步骤S105中,在所述发射后的指令进入流水线后开始执行;
在步骤S106中,将执行后的指令结果写回到指定位置。
本发明实施例设计了一种基于Fetch阶段与Issue阶段协同调度的Warp调 度算法。具体地,实现了一种新的协同调度的体系架构。如图2所示,OrderQueue 单元合并Issue阶段使用的两个优先级调度队列(Issue中调度器1(scheduler1) 对应的优先级调度队列W1、W3、W5、W7;以及调度器2(scheduler2)对应 的优先级调度队列W2、W4、W6、W8),并将合并后的优先级调度队列作为 Fetch阶段的优先级调度队列(Fetch中scheduler对应的优先级调度队列W1、 W2、W3、W4…)。Fetch单元从合并后的优先级调度队列(即scheduler对应 的优先级调度队列W1、W2、W3、W4…)中,按照指令优先级从高到低的顺 序获取指令直至成功取出一份指令为止,Decode单元对获取的指令进行解码, 获得解码后的指令,Issue单元通过scheduler1和scheduler2并行执行解码后的 指令,并按照scheduler1和scheduler2各自的调度策略发射所述解码后的指令, 在所述发射后的指令进入流水线后开始执行(通过计算单元SP执行),RegFile 将执行后的指令结果写回到指定位置。
需要说明的是,在现有的GPGPU体系架构上,Fetch阶段取指令具有自己 的调度策略和自己的优先级调度队列,Issue阶段同样有自己的调度策略和自己 的调度队列,在现有体系结构上Fetch阶段与Issue阶段是不能互相交流信息的。 而事实上Fetch阶段与Issue阶段是紧密相连的,Fetch阶段策略选择的好与坏 将直接影响Issue阶段的策略能否充分发挥,进而直接影响GPGPU的计算性能。 基于此,本发明实现协同调度的方法就是实现架构上Fetch阶段与Issue阶段使 用同一种调度策略,使用同一个优先级调度队列,从而架起Fetch阶段与Issue 阶段沟通的桥梁,Fetch阶段和Issue阶段信息得到交互,只要Fetch阶段按照 共用优先级队列的内容进行指令取回操作,那么Issue阶段就可以最大可能地按 照原有策略进行发射指令,从而使得Fetch阶段能够最大限度的满足Issue阶段 的需求,充分发挥Issue阶段的策略能力,从整体上提升GPGPU的计算性能。
实施例二:
图3示出了本发明实施例二提供的基于GPGPU体系结构的协同调度系统 的组成结构,为了便于说明,仅示出了与本发明实施例相关的部分。
该基于GPGPU体系结构的协同调度系统可以是内置于终端设备(如个人 计算机、笔记本电脑、平板电脑、智能手机等)中的软件单元、硬件单元或者 软硬件相结合的单元,或者作为独立的挂件集成到终端设备或者终端设备的应 用系统中。
该基于GPGPU体系结构的协同调度系统包括:
合并单元31,用于将Issue阶段的两个优先级调度队列合并为一个优先级 调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;
取指令单元32,用于在Fetch阶段,从所述合并后的优先级调度队列中获 取指令;
指令解码单元33,用于对获取的指令进行解码;
指令发射单元34,用于在Issue阶段,通过Issue阶段的两个调度器并行执 行解码后的指令,并按照所述调度器各自的调度策略发射所述解码后的指令;
指令执行单元35,用于在所述发射后的指令进入流水线后开始执行;
结果写回单元36,用于将执行后的指令结果写回到指定位置。
进一步的,所述取指令单元32具体用于:
从合并后的优先级调度队列中,按照优先级从高到低的顺序获取指令。
进一步的,所述合并单元31还用于,数值比较以及数据存取。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上 述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能 分配由不同的功能单元完成,即将所述系统的内部结构划分成不同的功能单元 或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元可以集 成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以 上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可 以采用软件功能单元、模块的形式实现。另外,各功能单元的具体名称也只是 为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元的具体 工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
综上所述,本发明实施例将Issue阶段的两个优先级调度队列合并为一个优 先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队 列,使得Fetch阶段能够最大限度的满足Issue阶段的需求,充分发挥Issue阶 段的策略能力。而且,通过建立Fetch阶段优先级调度队列与Issue阶段优先级 调度队列之间的联系,使得Fetch阶段有能力访问Issue阶段的优先级调度队列, 从而可以有目的进行指令预取,减少将要发射的指令没有被取回的可能性,提 高GPGPU性能。而且,本发明实施例实现简单,成本低,具有较强的易用性 和实用性。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示 例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来 实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用 和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现 所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的系统和方法,可以通 过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如, 所述单元、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的 划分方式,例如多个单元、模块或组件可以结合或者可以集成到另一个系统, 或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或 直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接, 可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为 单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者 也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部 单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元 中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的 形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或 使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明 实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的 全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存 储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务 器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所 述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存 储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access  Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照 前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其 依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特 征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发 明实施例各实施例技术方案的精神和范围。

基于GPGPU体系结构的协同调度方法及系统.pdf_第1页
第1页 / 共10页
基于GPGPU体系结构的协同调度方法及系统.pdf_第2页
第2页 / 共10页
基于GPGPU体系结构的协同调度方法及系统.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《基于GPGPU体系结构的协同调度方法及系统.pdf》由会员分享,可在线阅读,更多相关《基于GPGPU体系结构的协同调度方法及系统.pdf(10页珍藏版)》请在专利查询网上搜索。

本发明适用于高性能计算技术领域,提供了一种基于GPGPU体系结构的协同调度方法及系统,所述方法包括:将Issue阶段的两个优先级调度队列合并为一个优先级调度队列,并将合并后的优先级调度队列作为Fetch阶段的优先级调度队列;在Fetch阶段,从所述合并后的优先级调度队列中获取指令;对获取的指令进行解码;在Issue阶段,通过Issue阶段的两个调度器并行执行解码后的指令,并按照所述调度器各自的调度。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1