单指令多线程计算系统及其方法技术方案

技术编号:14313529 阅读:63 留言:0更新日期:2016-12-30 14:50
本发明专利技术提供一种单指令多线程计算系统。该单指令多线程计算系统包括多个处理器和用于调度线程至每个处理器的调度器。每个处理器包括一个标量单元和多个矢量单元,标量单元提供一个标量通道用于标量执行,矢量单元提供N个并行通道用于矢量执行。处理器在执行期间检测出一条N线程的指令已被编译器预测出其具有(N-M)个空闲线程,且该指令在M个有效线程上具有相同的源操作数,其中N>M≥1;以及完成检测之后,传送该指令至标量单元用于标量执行。本发明专利技术所提出的单指令多线程计算系统,可提高系统性能。

【技术实现步骤摘要】

本专利技术涉及矢量处理方法,更具体地,涉及一种在单指令多线程的(Single-Instruction-Multiple-Thread,以下简称为SIMT)计算系统中的矢量处理方法。
技术介绍
单指令多线程是一些现在的图形处理单元(graphics processing unit,以下简称为GPU)所采用的一种并行执行模式。这种GPU可以利用多个并行的数据路径以锁步方式(lock-step)而在多个线程上同时执行单一指令。已经开发设计的单程序多数据(Single-Program-Multiple-Data,SPMD)加速器语言,如和可用以提高具有SIMT架构类型的GPU的计算性能。一些现在的GPU可在比并行数据路径数目更多的线程上执行单一指令。例如,具有32条并行数据路径的处理器可在4个连续的周期内在128个线程上执行一条指令。在下面的描述中,将该128个线程称为线程块(thread block)。线程块中的所有线程,例如,4个连续周期中每个周期内的32个线程,均共享一个程序计数器和指令提取(instruction fetch),且以锁步方式执行。SIMT减少了程序计数器的数量以及指令提取的开销,但是,在某些情况下,锁步执行方式(lock-step execution model)会导致计算资源的利用率很差。举例来说,处理器中的多个线程遵循不同的控制流路径来处理if-else语块,则,当遵循“if”路径的线程被执行时,那么遵循“else”路径的线程将被禁用(等待中),反之亦然。也就是说,一次只能执行一条控制流路径,即使该控制流路径对其它的线程无用。此外,对线程的冗余簿记(redundant bookkeeping)也会造成低效的利用率。例如,在while循环中,处理器中的所有线程均以锁步方式来执行循环计数增量(loop count increment),即使这个增量对于所有线程来说是统一的(即相同的)。除了冗余的循环计数计算之外,线程还经常计算相同的分支条件、复制相同的基地址、并执行相似的地址计算,以从数据阵列中检索数据。因此,有必要减少SIMT计算中的冗余计算,以提高系统性能。
技术实现思路
本专利技术实施例提供一种用于SIMT计算系统执行的多线程指令序列的处理方法。该方法包括步骤:在编译期间,对SIMT计算系统的处理器所执行的指令序列进行分析。该处理器包括一个标量单元(scalar unit)和多个矢量单元(vector unit),其中,标量单元提供一个标量通道(scalar lane)用于标量执行(scalar execution),矢量通道提供N个并行通道用于N个线程上的矢量执行(vector execution)。该方法还包括步骤:预测所分析的指令序列中的一条指令具有(N-M)个空闲线程(inactive thread),并在该N个线程中的M个有效线程(active thread)上具有相同的源操作数(source operand),其中N>M≥1;以及生成指令代码,用于被标量单元执行。本专利技术另一实施例提供一种在SIMT计算系统中执行N线程指令序列的方法。该方法包括步骤:在执行期间,检测该指令序列中的一条指令具有(N-K)个空闲线程,并在该SIMT计算系统处理器的N个线程中的K个有效线程上具有相同的源操作数。该处理器包括一个标量单元和多个矢量单元,其中,标量通道提供一个标量通道用于标量执行,矢量通道提供N个并行通道,用于N个线程上的矢量执行,其中,1≤K≤阈值<N。该方法进一步包括步骤:调度该指令用于标量执行;以及使用标量单元执行该指令。本专利技术又一实施例提供一种SIMT计算系统。该SIMT计算系统包括多个处理器。每个处理器包括一个标量单元和多个矢量单元,标量单元提供一个标量通道用于标量执行,矢量单元提供N个并行通道用于矢量执行;和一个调度器用以调度多个线程至每个处理器。每个处理器用以:在执行期间,检测出一条N线程的指令已经被编译器预测其具有(N-M)个空闲线程,且该N线程的指令在N个线程中的M个有效线程上具有相同的源操作数,其中N>M≥1;及使用标量单元执行该指令。本专利技术所提出的单指令多线程计算系统,可提高系统性能。附图说明本专利技术通过实例的方式来进行阐述,这些实例可如附图所示,附图中类似的标号代表类似的元件。然而,可以理解的是,这些实例并不构成对本专利技术的限制。应该注意的是,本专利技术中于不同处所引用的“一”实施例并不一定指同一实施例,这种引用意味着至少一个实施例。另外,当结合一实施例描述某特定的特征、结构或特性时,应当认为,结合其他的实施例以实现这种特征、结构和特性是在本领域熟练技术人员的知识范畴之内的,而无论是否明确说明。图1为本专利技术一实施例的SIMT计算系统的示意图。图2为本专利技术一实施例的多个矢量通道和标量通道的示意图。图3为本专利技术一实施例的为SIMT计算系统生成代码的编译器的示意图。图4为本专利技术一实施例的由编译器所执行的分析实例的示意图。图5为本专利技术一实施例的运行时标量化模块(scalarizer module)的示意图。图6为本专利技术一实施例的编译时标量化(compile time scalarization)处理方法的流程图。图7为本专利技术一实施例的执行时标量化(execution time scalarization)处理方法的流程图。图8为本专利技术一实施例的在执行期间所进行的对编译时标量化处理进行检测的方法的流程图。图9为本专利技术一实施例的计算机系统的示意图。具体实施方式在下面的说明中,将列举大量的具体细节。但是,应当理解的是,本专利技术的实施例也可以脱离这些具体细节而实施。在其他情况下,为了更清晰地阐释本专利技术的思路,本专利技术并没有详细地描述熟知的电路、结构和技术。但是,本领域技术人员可以理解的是,本专利技术可以脱离这些具体细节而实施。且本领域的技术人员在阅读本专利技术的说明书后,无需过多的试验即可实现本专利技术。本专利技术的实施例提供一种通过对多线程的矢量处理进行标量化处理以提高SIMT计算系统的效率的方法和系统。若某条指令的一组线程(即一个线程块)具有相同的源操作数(因此具有相同的结果),那么这些线程上的操作将被调度至标量执行单元(scalar execution unit),且其操作结果被通知到这些线程的目标。此外,若一个线程块中的一个或多个线程对于某指令而言是有效的(例如,使能产生指令的结果),而该线程块中的剩余指令是闲置的(例如,禁能产生指令的结果),并且这些有效的线程上均具有相同的源操作数,那么这些有效线程上的操作将被调度至标量执行单元,且其操作结果将被通知至这些有效线程的目标。对多线程的操作进行标量化处理降低了冗余的计算量以及对寄存器的访问,因而可节省能量。通过将有效多线程上的操作移至标量执行单元,矢量执行单元便能够执行与标量化指令(scalarized instruction)并行的其它矢量指令(vector instruction)。因此,在同一周期内能够发出两条指令,从而增加线程级别的并行处理能力。当具有相同源操作数的指令在一个线程块中的所有线程上执行时,该指令被称为“统一”指令(uniform instruction)。本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201510852483.html" title="单指令多线程计算系统及其方法原文来自X技术">单指令多线程计算系统及其方法</a>

【技术保护点】
一种在单指令多线程计算系统上执行的多线程指令序列的处理方法,其特征在于,包括:在编译期间,对在所述单指令多线程计算系统中的处理器上执行的所述指令序列进行分析,其中,所述处理器包括一个标量单元和多个矢量单元,所述标量单元提供一个标量通道以用于标量执行,而所述多个矢量单元提供N个并行通道以用于N个线程上的矢量执行;预测所述被分析的指令序列中的一条指令具有(N‑M)个空闲线程,且所述指令在M个有效线程上具有相同的源操作数,其中N>M≥1;以及为所述指令生成代码,以被所述标量单元执行。

【技术特征摘要】
2015.06.17 US 14/741,5051.一种在单指令多线程计算系统上执行的多线程指令序列的处理方法,其特征在于,包括:在编译期间,对在所述单指令多线程计算系统中的处理器上执行的所述指令序列进行分析,其中,所述处理器包括一个标量单元和多个矢量单元,所述标量单元提供一个标量通道以用于标量执行,而所述多个矢量单元提供N个并行通道以用于N个线程上的矢量执行;预测所述被分析的指令序列中的一条指令具有(N-M)个空闲线程,且所述指令在M个有效线程上具有相同的源操作数,其中N>M≥1;以及为所述指令生成代码,以被所述标量单元执行。2.如权利要求1所述的方法,其特征在于,进一步包括:在为所述指令生成的所述代码中设定一个指定位以指明为用于所述标量执行。3.如权利要求1所述的方法,其特征在于,进一步包括:预测所述被分析的指令序列中的第二指令在所述N个线程上具有相同的源操作数;在为所述第二指令所生成的所述代码中设定一个指定位以指明为用于所述标量执行。4.如权利要求1所述的方法,其特征在于,进一步包括:将所述指令替换为标量指令以指明为用于所述标量执行。5.如权利要求1所述的方法,其特征在于,对所述指令序列进行分析的步骤进一步包括:判断所述指令所在的基本块是否为多个分支的目标;以及判断所述指令是否从超过一个分支处获取操作数。6.如权利要求1所述的方法,其特征在于,进一步包括:在执行期间,检测出所述指令已经被编译器预测出所述指令用于所述标量执行;调度所述指令至所述标量单元;以及传输所述标量执行的结果至所述M个有效线程的目标。7.如权利要求6所述的方法,其特征在于,进一步包括:调度另一指令至所述矢量单元以与所述指令同时执行。8.一种在单指令多线程计算系统中执行N线程指令序列的方法,其特征在于,所述方法包括:在执行期间,检测出所述指令序列中的一条指令具有(N-K)个空闲线程,且所述指令在所述单指令多线程计算系统中的处理器的K个有效线程上具有相同的源操作数,其中,所述处理器包括一个标量单元和多个矢量通道,所述标量单元提供一个标量通道以用于标量执行,而所述多个矢量通道提供N个并行通道以用于所述N个线程上的矢量执行,且1≤K≤阈值<N;调度所述指令用于所述标量执行;以及使用所述标量单元执行所述指令。9.如权利要求8所述的方法,其特征在于,检测所述指令的步骤进一步包括:检测出指定的状态寄存器中具有K个位被设定为指示值,以指明对...

【专利技术属性】
技术研发人员:张嘉洋
申请(专利权)人:联发科技股份有限公司
类型:发明
国别省市:中国台湾;71

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

1