CN106257411A - 单指令多线程计算系统及其方法 - Google Patents

单指令多线程计算系统及其方法 Download PDF

Info

Publication number
CN106257411A
CN106257411A CN201510852483.2A CN201510852483A CN106257411A CN 106257411 A CN106257411 A CN 106257411A CN 201510852483 A CN201510852483 A CN 201510852483A CN 106257411 A CN106257411 A CN 106257411A
Authority
CN
China
Prior art keywords
instruction
scalar
thread
perform
units
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510852483.2A
Other languages
English (en)
Other versions
CN106257411B (zh
Inventor
张嘉洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Publication of CN106257411A publication Critical patent/CN106257411A/zh
Application granted granted Critical
Publication of CN106257411B publication Critical patent/CN106257411B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

单指令多线程计算系统及其方法
技术领域
本发明涉及矢量处理方法,更具体地,涉及一种在单指令多线程的(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),其中,标量单元提供一个标量通道(scalarlane)用于标量执行(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)。当具有相同源操作数的指令在一个线程块中的所有有效线程上执行,而该线程块中的一些线程为空闲线程时,该指令被称为“条件性统一”指令(conditionally uniforminstruction)。为了描述的简洁性,统一指令可被认为是条件性统一指令的特例。即,除非特别指明,条件性统一指令包括统一指令。
在示例中,统一指令(以伪代码的形式)可为:mov R1,0L,该指令是在所有线程上将常量值“0”移动至寄存器R1。如果该移动指令位于条件性语句中,例如,if语句中,那么该指令仅是在某些线程上执行,而不是在所有的线程上执行,所以,该指令即为条件性统一指令(在此情形下,其为条件性统一而不是全部统一)。
在以下描述中,词语“矢量处理”(vector processing)指多线程上的并行执行。矢量处理是由处理器中的矢量执行单元(也可称为“矢量单元”)来执行的。当线程块中的线程数量与处理器中的矢量单元的数量相等时,每个矢量单元提供一个“矢量通道”(也可称为“并行通道”)用于矢量执行。当线程块中的线程数量超过处理器中的矢量单元的数量时(例如,前者为后者的倍数时),那么每个矢量单元将被时分复用(time-multiplexed),以提供复数倍的矢量通道。虽然时分复用矢量单元(time-multiplex vector unit)所执行的线程均是在多个连续周期内执行的,但为了清晰地阐释本发明的目的,可认为线程块中的所有线程是以并行的方式来执行的。换言之,线程块中的不同线程是并行地在不同的矢量通道上执行的。
此外,本文所描述的SIMT计算系统包括用于标量执行的标量通道。标量执行是由标量执行单元(也可称为标量单元)来实施的。标量执行也可与矢量执行同时进行。对矢量处理指令进行标量化处理意味着,是标量单元而不是矢量单元在具有相同源操作数的多线程上来执行指令。当有多个有效线程时,对条件性统一指令进行标量化处理可消除冗余计算。此外,由于条件性统一指令可能仅使用一个或者使用少数个通道,则将该指令移至标量通道并发出另一条矢量处理指令至矢量通道可以提高计算资源的利用率。
图1为本发明实施例所揭示的将条件性统一指令进行标量化处理的SIMT计算系统100的原理框图。SIMT计算系统100可为图形处理单元(graphic processing unit)、多媒体处理系统(multimedia processingsystem)、信号处理系统(signal processing system)或任何其它高性能计算系统。
在图1所示的实施例中,SIMT计算系统100包括多个处理器160,每个处理器160包括一个标量单元152和多个矢量单元150。处理任务以多个线程的形式进入SIMT计算系统100,这些线程被组织为线程块。每个处理器160可同时处理多个线程块。每个线程块包含一组共享同一条指令的线程。每个线程均具有各自的寄存器文件140,且这些线程通过本地共享存储器185与线程块中的其他线程共享数据。
SIMT计算系统100还包括线程块分配器110,其通过处理控制器165来调度及分配多个线程块至多个处理器160。当一个线程块被调度至一个处理器160时,该处理器中的指令提取和解码单元120提取并解码指令,而线程调度器130调度该指令和该线程块中的线程,且以合适的周期来执行这些线程,例如,当在这些线程执行的该指令的源操作数是可用的时候。源操作数可包括常量,也可从寄存器文件140或存储器(如系统存储器180、本地共享存储器185、高速缓冲存储器或其它的存储地点)中提取。然后,该指令连同其源操作数被传送至矢量单元150或标量单元152以执行。
在示例中,这些矢量单元150提供N个矢量通道以进行矢量执行。此外,每个处理器160还包括一个标量单元152以提供一个标量通道用于标量操作。如果这些矢量单元的数量小于N,则这些矢量单元可被时分复用。例如,当每个矢量单元被时分复用四次时,则64个矢量单元可提供256个矢量通道。而在其它的实施例中,标量单元152也可同样被时分复用以提供多个标量通道。为了描述的简洁性起见,下面的描述中规定SIMT计算系统100并行地提供N个矢量通道和一个标量通道,详情可如图2中的示例所示。图2进一步揭露了指令I在未被标量化处理时(如虚线所示)和被标量化处理时(如实线所示)的执行路径。可以理解的是,SIMT计算系统可提供任意数量的矢量通道和标量通道。
请继续参考图1,其中每个处理器160还包括状态寄存器,如下文所描述的执行状态寄存器(在图中表示为EXEC寄存器)170,其具有对应于N个线程的N位(bits)。EXEC寄存器170被用作为指示器,以指明N个线程中哪些线程为有效线程。例如,若EXEC寄存器170的第i位被设定为某预定值,则其指明相对应的第i个线程是有效的。EXEC寄存器170可通过处理器160的前端单元进行设定,例如,通过指令提取和解码单元120或线程调度器130进行设定。当条件性统一指令通过标量单元152来执行时,其标量执行结果将根据EXEC寄存器170中设定的多个比特从而被通知至有效线程的目标。
在示例中,指令提取和解码单元120所提取的指令包括一个指定位(designated bit),以下的描述中将其定义为“u”位,该指定位用于指明该指令是否已被标量单元152进行标量化处理。若该“u位”被设定(例如,被设定为预定数(例如,“1”))时,那么该指令及其源操作数被调度至标量单元152;否则,该指令及其源操作数被调度至矢量单元150用于矢量执行。
根据本发明的一实施方式,该“u位”的设定是由编译器在编译期间确定的,例如,图3所示示例中的编译器310。编译器310在计算机系统300上运行,计算机系统300可能不同于图1所示的SIMT计算系统100。在示例中,计算机系统300可如图9所示。编译器310包括分析和预测模块311,用于对指令序列(如计算机程序)进行分析(如静态分析),从而预测该指令序列中的一条指令为条件性统一指令还是随线程变化(thread-varying)(即,非条件性统一)指令。当预测指令在所有的有效线程上均具有相同的源操作数时,则该指令被预测为条件性统一指令,因此在所有的有效线程上均具有相同的结果。对于具有N个矢量通道的系统,有效线程的数量M可满足N≥M≥1。当M=N时,该指令为统一指令(条件性统一指令的特例)。
图3所示的编译器310还包括寄存器分配器(register allocator)312和代码生成模块313。当分析和预测模块311完成了对指令序列的分析时,寄存器分配器312便将寄存器分配至每条指令的源操作数和结果操作数,而代码生成模块313生成可执行的机器代码。对于被预测为条件性统一的指令(如指令330),代码生成模块313将该指令的“u位”设定为特定值用以标记该指令用于标量执行。在其它示例中,代码生成模块313可将该指令替换为标量指令(如,虚线框中所述的指令340),该标量指令被指定为用于标量执行。
图4为本发明实施例所揭示的分析和预测模块311所执行的操作的示例的示意图。初始时,分析和预测模块311将所有指令均设定为条件性统一指令。然后,对于每条指令,分析和预测模块311进一步判断是否存在一个或多个条件使得该指令成为随线程变化指令(亦即,非条件性统一指令)。一个条件是当该指令的源操作数是从多个来源来获取其值时。在图4所示的示例中,分析和预测模块311识别出基本块410为两个或更多分支(例如,分支A和分支B)的目标。基本块是只有一个入口点和一个出口点的代码块。在该示例中,基本块410只有一个入口点420(即语句K3=PHI(K1,K)所在处)和一个出口点430(即END语句处)。在所识别的基本块中,分析和预测模块311进一步识别出具有源操作数的指令,且该源操作数可从多个分支获取其值(即,是否从超过一个分支处获取操作数);例如,W=K3+3从PHI指令中获取K3的值,而该PHI指令同时依赖于分支A和分支B。进入基本块410之后,有效线程即为来自分支A的有效线程(如M_a)和来自分支B的有效线程(如M_b)的合集。当在基本块410中识别出这样的指令,且满足条件:非“M_a一定为M或M_b一定为M”为真时,分析和预测模块311将该指令标记为随线程变化指令(例如,可通过移除其条件性统一设定)。也就是说,在某些情形下,分析和预测模块311能够检测出“统一分支”(如“M_a一定为M或M_b一定为M”)。若分析和预测模块311确定分支A或者分支B不是统一分支,且基本块410中存在类似W=K3+3的指令,那么该指令即被标记为随线程变化指令。换言之,如果分支A和分支B均为统一分支,那么所有有效线程(M)上的PHI指令在运行时要么从分支A(如,M_a==M和M_b==0)获取其值,要么从分支B(如,M_b==M和M_a==0)获取其值,但是不能同时从分支A和分支B(如,M_a>1和M_b>1且M_a+M_b==M)中获取其值。
当指令被识别为随线程变化时,该指令的结果操作数携带随线程变化的特性,并依赖于该结果操作数中的值,将该特性传播至同一基本块或后继基本块中的其他指令。因此,这些其他指令也被标记为随线程变化。可以理解的是,图4仅仅是示例,可能还存在其他的条件或情形,使得指令被识别为条件性统一指令。
在某些情形下,编译器310可能无法确定某指令是否是条件性统一指令。例如,当作出该判断的复杂性超过某一阈值,或者该判断是不可判定或者不可计算的问题,又或该指令接收或依赖于未知的运行输入时。然而,使判定不可行的条件有时也可在运行期间(也可称为执行期间)进行解决。在示例中,SIMT计算系统100包括运行时标量化模块(runtimescalarizer module)。该模块为硬件电路的一部分,其在指令获取之后执行之前将该指令进行标量化处理。图5为本发明实施例所揭示的运行时标量化运行时标量化模块500的示意图,其中,运行时标量化模块500为图1所示的线程调度器130的一部分。可以理解的是,在其它实施例中,运行时标量化模块500也可位于处理器160中而位于线程调度器130之外。
在示例中,运行时标量化模块500识别指令的有效线程的数量,而这些指令并未由编译器310标记为用于标量执行。一条指令的有效线程的数量可通过状态寄存器指明,例如,通过EXEC寄存器170来指明,该寄存器具有N位,每个位对应于N个线程中的一个线程。当EXEC位被设定为某预定数值(如,1)时,则表示相对应的线程为有效线程。
若某指令仅具有一个有效线程,那么运行时标量化模块500将该指令标记为用于标量执行,或者直接调度该指令用于标量执行。在此情况下,对单个线程上的计算进行标量化处理能够消除对剩余(N-1)个线程所进行的冗余计算,其对于系统没有或者只有极小的消耗。若有多个有效线程,那么运行时标量化模块500将这些有效线程上的源操作数进行比对,从而确定其源操作数是否相同。如果这些有效线程上的源操作数均彼此相同,那么运行时标量化模块500将标记或者直接调度该指令为用于标量执行。在示例中,可设定阈值以限制运行时标量化模块500所比对的有效线程的数量,因为大量的运行时比对可能会消耗过多的能量和计算周期。该阈值可为固定阈值,也可由系统管理员进行配置。
若一条指令被编译器310或者被运行时标量化模块500标记为用于标量执行,那么该指令均被调度至标量单元152。在标量单元152执行完标量操作之后,其标量操作的结果即被传送至所有有效线程的目标,其中,有效线程可通过相应的EXEC位来指明。
图6为本发明实施例所揭示的在SIMT计算系统(如图1所示的SIMT计算系统100)中执行多线程指令序列的一种处理方法600的流程图。方法600可通过计算机上运行的编译器(如图3所示的编译器310)执行。在编译期间,当编译器对SIMT计算系统的处理器所执行的指令序列进行分析时,方法600开始执行(方框610)。该处理器包括一个标量单元和多个矢量单元,标量单元提供一个标量通道用于标量执行,矢量单元提供N个并行通道用于多个线程上的矢量执行。编译器预测所分析的指令序列中一条指令具有(N-M)个空闲线程,并且该指令在M个有效线程上具有相同的源操作数,其中N>M≥1(方框620)。在完成所述预测之后,编译器生成该指令的代码,用于标量单元进行执行(方框630)。
在示例中,编译器还预测所分析的指令序列中的第二指令在所有N个线程上均具有相同的源操作数。对于方框620中被预测的指令以及所述第二指令,编译器均可在所生成的代码中设定指定位(如,“u位”)以指明用于标量执行。或者,编译器可将被预测的指令替换为标量指令以指明为用于标量执行。
图7为本发明实施例所揭示的在SIMT计算系统(如图1所示的SIMT计算系统100)中执行的多线程指令序列的一种处理方法700的流程图。方法700可通过SIMT计算系统100执行。当SIMT计算系统(更具体地,图5所示的运行时标量化模块500)在执行时检测出该指令序列中的一条指令具有(N-K)个空闲线程,并在SIMT计算系统的处理器中的K个有效线程上均具有相同的源操作数时,方法700开始执行(方框710)。该处理器包括一个标量单元和多个矢量单元,标量单元提供一个标量通道用于标量执行,矢量单元提供N个并行通道,用于N个线程上的矢量执行,其中,1≤K≤阈值<N。然后,该SIMT计算系统调度该指令用于标量执行(方框720),以及使用该标量单元执行该指令(方框730)。
图8为本发明实施例所揭示的在SIMT计算系统(如图1所示的SIMT计算系统100)中所执行的一种方法800的流程图。该SIMT计算系统包括多个处理器。每个处理器包括一个标量单元和多个矢量单元,标量单元提供一个标量通道用于标量执行,矢量通道提供N个并行通道用于矢量执行。该SIMT系统还包括调度器用以调度多个线程至每个处理器。每个处理器用以在执行时检测出一条指令已经被编译器预测其具有(N-M)个空闲线程,且该指令在M个有效线程上均具有相同的源操作数,其中N>M≥1(方框810)。该处理器还用以使用标量单元执行该指令(方框820)。根据本发明的一实施方式,每个处理器进一步用于:在执行期间,检测出尚未被预测用于标量执行的第二指令具有一个有效线程和(N-1)个空闲线程;以及使用标量单元执行所述第二指令。
图9为计算机系统900的一种示例性形式的机器的示意图,其中,在计算机系统900中执行一组指令,该组指令可致使该机器执行本文所讨论的任何一个或多个方法。虽然仅示出一个机器,词语“机器”还应当被理解为可包括多个机器(如,计算机)的任意合集,这些机器单独或联合执行一组(或多组)指令以执行本文所讨论的方法集之中的任何一个或多个方法。
计算机系统900包括处理设备902。处理设备902表示一个或多个通用处理器,也可包括一个或多个专用处理设备。在示例中,处理设备902可用以执行图6所示的方法600。
在示例中,处理设备902被耦合至一个或多个存储设备,例如:主存储器904(如,只读存储器(ROM)、闪速存储器、动态随机存取存储器(DRAM)等等),辅助存储器918(如,磁性数据存储设备、光磁性数据存储设备等等),以及其他形式的计算机可读介质,其中,上述存储设备通过总线或者互联器930彼此间进行通信。存储设备还可包括不同形式的只读存储器(ROM)、不同形式的随机存取存储器(RAM)、静态随机存取存储器(SRAM)或者适用于存储电子指令的任意介质。在示例中,存储设备可存储编译器310的代码和数据,编译器310可处于一个或多个虚线箱所示的位置处。或者,编译器310也可处于图9未示出的其他位置上。
计算机系统900还可包括网络接口设备908。编译器310的部分的或所有的数据和代码均可借由网络接口设备908通过网络920进行收发。
在示例中,计算机系统900使用计算机可读介质(也称为机器可读介质、处理器可读介质或包含有计算机可读程序代码的计算机可使用介质)来存储和发送(限于内部和/或通过其他电子设备在网络上进行)代码(由软件指令组成)以及数据。这些计算机可读介质可为非暂时性真实的计算机可读介质(如磁性、光学或电性存储介质,包括软盘,只读形光盘存储器(CD-ROM),数字化通用光盘只读存储器(DVD-ROM)存储设备,闪速存储器或类似的易失或非易失存储机制)以及暂时性计算机可读传输介质(如,电性、光学、声学或其他形式的传播信号,如载波或红外信号)。在示例中,非暂时性计算机可读介质存储编译器310的指令,用于计算机系统900的一个或多个处理器进行执行。
图6-8所示的流程图中的操作已经参照图1-5和图9所示的范例性实施例进行描述。然而,应当理解的是,图6-8所示的流程图中的操作也可通过本发明的未参照图6-8进行讨论的其他实施例来执行,而参照图1-5和图9所讨论的实施例同样可以执行不同于参照流程图所讨论的操作的其他操作。虽然图6-8所示的流程图显示了本发明的某些实施例所执行操作的特定顺序,然而,应当理解的是,所示特定顺序仅是示例性的,例如,备选实施例中可按照不同的顺序执行这些操作,将特定操作进行组合,对某些操作进行覆盖等等。
尽管本发明已经通过若干实施例进行描述,然而,本领域的熟练技术人员将会认识到,本发明并不限于上面所描述的实施例,而且本发明还可在不背离所附权利要求的精神和范畴的前提下进行修改和变更进而实施。因此,本说明书应理解为解释性质而不是限制性质。

Claims (20)

1.一种在单指令多线程计算系统上执行的多线程指令序列的处理方法,其特征在于,包括:
在编译期间,对在所述单指令多线程计算系统中的处理器上执行的所述指令序列进行分析,其中,所述处理器包括一个标量单元和多个矢量单元,所述标量单元提供一个标量通道以用于标量执行,而所述多个矢量单元提供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个位被设定为指示值,以指明对应的K个线程为有效线程。
10.如权利要求9所述的方法,其特征在于,进一步包括:
发送所述标量执行的结果至所述K个有效线程的目标。
11.如权利要求8所述的方法,其特征在于,进一步包括:
检测出所述指令的一个指定位已经被设定为指示值,指明已在编译期间预测出所述指令在所述K个有效线程上具有相同的源操作数;以及
响应对所述设定的指定位的检测,以利用所述标量单元执行所述指令。
12.如权利要求8所述的方法,其特征在于,进一步包括:
调度另一指令至所述矢量单元以与所述指令同时执行。
13.一种单指令多线程计算系统,包括:
多个处理器,其中,每个所述处理器包括一个标量单元和多个矢量单元,所述标量单元提供一个标量通道以用于标量执行,而所述多个矢量单元提供N个并行通道以用于矢量执行;和
调度器,用以调度多个线程至每个所述处理器,
其中,每个所述处理器用以:
在执行期间,检测出一条N线程的指令已被编译器预测为具有(N-M)个空闲线程,且所述指令在M个有效线程上具有相同的源操作数,其中N>M≥1;以及
使用所述标量单元执行所述指令。
14.如权利要求13所述的计算系统,其特征在于,每个所述处理器进一步用于:
检测所述指令中的一个指定位已被设定为指示值,指明用于所述标量执行。
15.如权利要求13所述的计算系统,其特征在于,每个所述处理器进一步包括状态寄存器,所述状态寄存器具有N个位,分别对应于所述N个线程,其中,所述N个位中有M个位被设定为指示值,以指明对应的M个线程为有效线程。
16.如权利要求13所述的计算系统,其特征在于,每个所述处理器进一步用于:
在所述执行期间,检测出尚未被预测用于所述标量执行的第二指令具有一个有效线程和(N-1)个空闲线程;以及
使用所述标量单元执行所述第二指令。
17.如权利要求13所述的计算系统,其特征在于,每个所述处理器进一步用于:
在所述执行期间,检测出尚未被预测用于所述标量执行的第二指令具有(N-K)个空闲线程,且所述指令在K个有效线程上具有相同的源操作数,其中1≤K≤阈值<N;以及
使用所述标量单元执行所述第二指令。
18.如权利要求17所述的计算系统,其特征在于,每个所述处理器进一步用于:
传输所述标量执行的结果至所述K个有效线程的目标。
19.如权利要求13所述的计算系统,其中,每个所述处理器进一步用于:
传输所述标量执行的结果至所述M个有效线程的目标。
20.如权利要求13所述的计算系统,其特征在于,每个所述处理器进一步用于:
调度另一指令至所述矢量单元以与所述指令同时执行。
CN201510852483.2A 2015-06-17 2015-11-27 单指令多线程计算系统及其方法 Active CN106257411B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/741,505 US10318307B2 (en) 2015-06-17 2015-06-17 Scalarization of vector processing
US14/741,505 2015-06-17

Publications (2)

Publication Number Publication Date
CN106257411A true CN106257411A (zh) 2016-12-28
CN106257411B CN106257411B (zh) 2019-05-24

Family

ID=57588172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510852483.2A Active CN106257411B (zh) 2015-06-17 2015-11-27 单指令多线程计算系统及其方法

Country Status (2)

Country Link
US (1) US10318307B2 (zh)
CN (1) CN106257411B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022001498A1 (zh) * 2020-06-30 2022-01-06 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
WO2022121273A1 (zh) * 2020-12-11 2022-06-16 上海阵量智能科技有限公司 Simt指令处理方法及装置
CN117009054A (zh) * 2023-07-27 2023-11-07 北京登临科技有限公司 一种simt装置、线程组动态构建方法及处理器

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9830156B2 (en) * 2011-08-12 2017-11-28 Nvidia Corporation Temporal SIMT execution optimization through elimination of redundant operations
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
US10698689B2 (en) * 2018-09-01 2020-06-30 Intel Corporation Recompiling GPU code based on spill/fill instructions and number of stall cycles
GB2577502B (en) * 2018-09-26 2021-09-08 Advanced Risc Mach Ltd An apparatus and method for processing instructions
US11093250B2 (en) 2018-09-29 2021-08-17 Intel Corporation Apparatus and method for gang invariant operation optimizations using dynamic evaluation
US10831505B2 (en) 2018-09-29 2020-11-10 Intel Corporation Architecture and method for data parallel single program multiple data (SPMD) execution
US10776110B2 (en) 2018-09-29 2020-09-15 Intel Corporation Apparatus and method for adaptable and efficient lane-wise tensor processing
US11537687B2 (en) 2018-11-19 2022-12-27 Groq, Inc. Spatial locality transform of matrices
US10915328B2 (en) * 2018-12-14 2021-02-09 Intel Corporation Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency
US11016929B2 (en) 2019-03-15 2021-05-25 Intel Corporation Scalar core integration
US10983794B2 (en) 2019-06-17 2021-04-20 Intel Corporation Register sharing mechanism
US11714619B2 (en) * 2020-12-17 2023-08-01 Huawei Technologies Co., Ltd. Method and apparatus for retaining optimal width vector operations in arbitrary/flexible vector width architecture

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508820A (zh) * 2011-11-25 2012-06-20 中国人民解放军国防科学技术大学 一种基于gpu的消除云方程并行求解过程中数据相关的方法
CN102640132A (zh) * 2009-09-28 2012-08-15 辉达公司 用于并行处理器的高效断言执行
CN102640131A (zh) * 2009-09-24 2012-08-15 辉达公司 并行线程处理器中的一致分支指令
US20130042090A1 (en) * 2011-08-12 2013-02-14 Ronny M. KRASHINSKY Temporal simt execution optimization
CN103809964A (zh) * 2012-11-05 2014-05-21 辉达公司 用线程组执行顺序代码的系统和方法和包含其的simt处理器
US20140244968A1 (en) * 2013-02-28 2014-08-28 Cray Inc. Mapping vector representations onto a predicated scalar multi-threaded system
US20150121038A1 (en) * 2013-10-24 2015-04-30 Arm Limited Prefetch strategy control
CN104699465A (zh) * 2015-03-26 2015-06-10 中国人民解放军国防科学技术大学 向量处理器中支持simt的向量访存装置和控制方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102640131A (zh) * 2009-09-24 2012-08-15 辉达公司 并行线程处理器中的一致分支指令
CN102640132A (zh) * 2009-09-28 2012-08-15 辉达公司 用于并行处理器的高效断言执行
US20130042090A1 (en) * 2011-08-12 2013-02-14 Ronny M. KRASHINSKY Temporal simt execution optimization
CN102508820A (zh) * 2011-11-25 2012-06-20 中国人民解放军国防科学技术大学 一种基于gpu的消除云方程并行求解过程中数据相关的方法
CN103809964A (zh) * 2012-11-05 2014-05-21 辉达公司 用线程组执行顺序代码的系统和方法和包含其的simt处理器
US20140244968A1 (en) * 2013-02-28 2014-08-28 Cray Inc. Mapping vector representations onto a predicated scalar multi-threaded system
US20150121038A1 (en) * 2013-10-24 2015-04-30 Arm Limited Prefetch strategy control
CN104699465A (zh) * 2015-03-26 2015-06-10 中国人民解放军国防科学技术大学 向量处理器中支持simt的向量访存装置和控制方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022001498A1 (zh) * 2020-06-30 2022-01-06 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
WO2022121273A1 (zh) * 2020-12-11 2022-06-16 上海阵量智能科技有限公司 Simt指令处理方法及装置
CN117009054A (zh) * 2023-07-27 2023-11-07 北京登临科技有限公司 一种simt装置、线程组动态构建方法及处理器

Also Published As

Publication number Publication date
CN106257411B (zh) 2019-05-24
US20160371093A1 (en) 2016-12-22
US10318307B2 (en) 2019-06-11

Similar Documents

Publication Publication Date Title
CN106257411A (zh) 单指令多线程计算系统及其方法
CN102609296B (zh) 虚拟机分支和并行执行
CN102193778B (zh) 用于生成时间戳的方法、设备和跟踪模块
US10783436B2 (en) Deep learning application distribution
US10831490B2 (en) Device and method for scheduling multiple thread groups on SIMD lanes upon divergence in a single thread group
US9164769B2 (en) Analyzing data flow graph to detect data for copying from central register file to local register file used in different execution modes in reconfigurable processing array
US9652817B2 (en) Automated compute kernel fusion, resizing, and interleave
JP2009151774A (ja) マルチコア・プロセッサ上での自律型ワークロード分配のための方法、装置、およびシステム
CN106257412A (zh) 程序指令序列中的分支汇聚的确定
US20150143083A1 (en) Techniques for Increasing Vector Processing Utilization and Efficiency Through Vector Lane Predication Prediction
CN101561778B (zh) 一种检测多任务操作系统任务死循环的方法
JP2017102919A (ja) 命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造
CN110503179B (zh) 计算方法以及相关产品
CN105745619A (zh) 对在执行机制之间切换的控制
WO2020181670A1 (en) Control flow optimization in graphics processing unit
CN113721987B (zh) 指令执行方法和指令执行装置
US10579350B2 (en) Heterogeneous computer system optimization
US11875425B2 (en) Implementing heterogeneous wavefronts on a graphics processing unit (GPU)
EP3491522A1 (en) Multi-thread processor and controlling method thereof
US9898333B2 (en) Method and apparatus for selecting preemption technique
Iliakis et al. Repurposing GPU microarchitectures with light-weight out-of-order execution
US20210042123A1 (en) Reducing Operations of Sum-Of-Multiply-Accumulate (SOMAC) Instructions
CN103154919A (zh) 多处理器系统中的异常控制
Tokoro et al. An approach to microprogram optimization considering resource occupancy and instruction formats
CN114661350A (zh) 用于并发地将多个pmon计数存储在单个寄存器中的设备、系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant