CN1983196B - 用于将执行线程分组的系统和方法 - Google Patents

用于将执行线程分组的系统和方法 Download PDF

Info

Publication number
CN1983196B
CN1983196B CN2006101681797A CN200610168179A CN1983196B CN 1983196 B CN1983196 B CN 1983196B CN 2006101681797 A CN2006101681797 A CN 2006101681797A CN 200610168179 A CN200610168179 A CN 200610168179A CN 1983196 B CN1983196 B CN 1983196B
Authority
CN
China
Prior art keywords
thread
instruction
threads
execution
exchange
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.)
Active
Application number
CN2006101681797A
Other languages
English (en)
Other versions
CN1983196A (zh
Inventor
布雷特·W·库恩
约翰·埃里克·林霍尔姆
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN1983196A publication Critical patent/CN1983196A/zh
Application granted granted Critical
Publication of CN1983196B publication Critical patent/CN1983196B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

将多个线程划分成具有两个或两个以上线程的伙伴组,以使得每个线程被指定给其一个或一个以上伙伴线程。每个伙伴组中只有一个线程活动地执行指令,且这允许伙伴线程共用硬件资源,例如寄存器。当一活动线程遇到一交换事件(例如一交换指令)时,所述活动线程暂停执行,且其伙伴线程中的一者使用那个线程的私用硬件资源和所述伙伴组的共用硬件资源开始执行。因此,可在不复制所有每个线程的硬件资源的情况下增加线程计数。

Description

用于将执行线程分组的系统和方法
技术领域
本发明的实施例大体上涉及多线程处理,且更确切地说,涉及一种用于将执行线程分组以实现改进的硬件利用率的系统和方法。
背景技术
一般来说,计算机指令需要执行多个时钟周期。为此原因,多线程处理器以连续的方式执行若干并行指令线程,以使得可尽可能地将用于执行指令的硬件保持繁忙。举例来说,当执行具有以下所示的特征的指令线程时,多线程处理器可连续调度四个并行线程。通过以此方式调度线程,多线程处理器能够在23个时钟周期之后完成4个线程的执行,其中在时钟周期1-20期间执行第一线程,在时钟周期2-21期间执行第二线程,在时钟周期3-22期间执行第三线程,且在时钟周期4-23期间执行第四线程。比较来说,如果处理器直到处理中的线程完成执行时才调度一线程,那么会花费80个时钟周期来完成4个线程的执行,其中在时钟周期1-20期间执行第一线程,在时钟周期21-40期间执行第二线程,在时钟周期41-60期间执行第三线程,且在时钟周期61-80期间执行第四线程。
指令    等待时间       需要的资源
1       4个时钟周期    3个寄存器
2       4个时钟周期    4个寄存器
3       4个时钟周期    3个寄存器
4       4个时钟周期    5个寄存器
5       4个时钟周期    3个寄存器
然而,上述并行处理需要更大量的硬件资源,例如更大数目的寄存器。在上文给出的实例中,并行处理所需的寄存器数目为20,而相比之下,非并行处理需要5个。
在许多情况下,执行的等待时间并不统一。举例来说,在图形处理的情况下,指令线程通常包括等待时间通常小于10个时钟周期的数学操作和等待时间超过100个时钟周期的存储器存取操作。在此类情况下,对并行线程的执行进行连续调度并不能非常好地起作用。如果连续执行的并行线程的数目过小,那么大部分执行硬件会由于高等待时间的存储器存取操作而变得利用不足。另一方面,如果连续执行的并行线程的数目大到足以覆盖存储器存储操作的高等待时间,那么支持现行线程所需的寄存器数目会显着增加。
发明内容
本发明提供一种用于将执行线程分组以便更有效率地利用执行硬件的方法。本发明还提供一种计算机系统,其包括一经配置以将执行线程分组以便更有效率地利用执行硬件的存储器单元。
根据本发明的一实施例,将多个线程划分成具有两个或两个以上线程的伙伴组,以使得每个线程被分配一个或一个以上伙伴线程。每个伙伴组中只有一个线程活动地执行指令。当活动线程遇到交换事件(例如交换指令)时,活动线程暂停执行,且其伙伴线程中的一者开始执行。
交换指令通常出现在高等待时间指令之后,且导致在活动执行列表中当前活动线程被交换为其伙伴线程中的一者。伙伴线程的执行会一直继续,直到伙伴线程遇到交换指令为止,所述指令使得在活动执行列表中伙伴线程被交换为其伙伴线程中的一者。如果一组中只有两个伙伴,那么在活动执行列表中伙伴线程就被交换为原来的线程,且重新开始原来的线程的执行。如果一组中有两个以上伙伴,那么根据某种预定次序伙伴线程被交换为所述组中的下一伙伴。
为了节约寄存器文件使用,每个伙伴线程将其寄存器分配划分成两组:私用的和共用的。只有属于私用组的寄存器才会在交换间保留其值。共用的寄存器始终归伙伴组的当前活动线程所有。
使用在加载程序以供执行时由若干线程填充的表格来组织伙伴组。所述表格可保存在芯片上寄存器中。所述表格具有多个行,且是根据每个伙伴组中的线程数目来配置的。举例来说,如果每个伙伴组中有两个线程,那么所述表格配置有两个列。如果每个伙伴组中有三个线程,那么所述表格配置有三个列。
根据本发明的实施例的计算机系统将上述表格存储在存储器中,且包含一配置有第一和第二执行管线的处理单元。所述第一执行管线用来执行数学操作,且所述第二执行管线用来执行存储器操作。
附图说明
为了能详细地了解本发明的上述特性,可参考实施例对以上简要概括的本发明进行更为具体的描述,附图中说明了其中某些实施例。然而,应注意,附图仅说明本发明的典型实施例,且因此不应认为其限制本发明的范围,因为本发明可涵盖其它同样有效的实施例。
图1是其中可实施本发明的构建一具有复数个处理单元的GPU的计算机系统的简化
方框图。
图2以更加详细的形式说明图1中的一处理单元。
图3是图2所示的指令分派单元的功能方框图。
图4是展示根据本发明第一实施例的线程库和指令缓冲器的概念图。
图5是展示根据本发明第二实施例的线程库和指令缓冲器的概念图。
图6是说明伙伴线程之间的活动执行线程交换的时序图。
图7是说明处理单元在执行伙伴线程时执行的处理步骤的流程图。
具体实施方式
图1是其中可实施本发明的构建具有复数个处理单元的图形处理单元(GPU)120的计算机系统100的简化方框图。GPU120包括一接口单元122,所述接口单元122耦合到复数个处理单元124-1、124-2、...、124-N,其中N是大于1的整数。所述处理单元124能通过存储器控制器126存取本地图形存储器130。GPU120和本地图形存储器130代表图形子系统,计算机系统100的中央处理单元(CPU)110通过使用存储在系统存储器112中的驱动器来存取所述图形子系统。
图2以更加详细的形式来说明所述处理单元124中的一者。图2中所说明的处理单元(此处参考为200)代表图1所示的处理单元124中的任一者。处理单元200包括:指令分派单元212,其用于发布待由处理单元200执行的指令;寄存器文件214,其存储用于执行指令的操作数;和一对执行管线222、224。所述第一执行管线222经配置以执行数学操作,且所述第二执行管线224经配置以执行存储器存取操作。一般来说,在第二执行管线224中执行的指令的等待时间比在第一执行管线222中执行的指令的等待时间高得多。当指令分派单元212发布指令时,指令分派单元212将管线配置信号发送到所述两个执行管线222、224中的一者。如果指令为数学类型,那么管线配置信号被发送到第一执行管线222。如果指令为存储器存取类型,那么管线配置信号被发送到第二执行管线224。所述两个执行管线222、224的执行结果被写回到寄存器文件214中。
图3是指令分派单元212的功能方框图。指令分派单元212包括具有复数个插槽的指令缓冲器310。此示范性实施例中的插槽数目为12,且每个插槽可保持高达两个指令。如果所述插槽中的任一者具有用于另一指令的空间,那么使取出(fetch)312从线程库305进入指令高速缓冲存储器314。当加载程序以供执行时,所述线程库305由若干线程填充。在将存储在指令高速缓冲存储器314中的指令添加到记分板322且放置在指令缓冲器310的空白空间中之前,指令经历解码316,其中所述记分板322跟踪运行中的指令,即已经发布但尚未完成的指令。
指令分派单元212进一步包括发布逻辑320。发布逻辑320检查记分板322且从指令缓冲器310中将不依赖于运行中的指令中的任一者的指令发布出去。结合来自指令缓冲器310的发布,发布逻辑320将管线配置信号发送到适当的执行管线。
图4说明根据本发明第一实施例的线程库305的配置。线程库305被配置为具有12个行和2个列的表格。表格的每个单元表示存储线程的存储器插槽。表格的每个行表示伙伴组。因此,表格的单元0A中的线程是表格的单元0B的线程的伙伴。根据本发明实施例,每次伙伴组中仅有一个线程为活动的。在指令取出期间,取出来自活动线程的指令。所取出的指令随后经历解码且被存储在指令缓冲器310的相应插槽中。在本文所说明的本发明实施例中,从线程库305的单元0A或单元0B取出的指令被存储在指令缓冲器310的插槽0中,且从线程库305的单元1A或单元1B取出的指令被存储在指令缓冲器310的插槽1中,等等。同样,根据发布逻辑320在连续时钟周期中发布存储在指令缓冲器310中的指令。在图6所示的简化实例中,在连续时钟周期中以行0中的指令开始且接着为行1中的指令等等来发布存储在指令缓冲器310中的指令。
图5说明根据本发明第二实施例的线程库305的配置。线程库305被配置为具有8个行和3个列的表格。表格的每个单元表示存储线程的存储器插槽。表格的每个行表示伙伴组。因此,表格的单元0A、0B和0C中的线程被认为是伙伴线程。根据本发明实施例,每次伙伴组中仅有一个线程为活动的。在指令取出期间,取出来自活动线程的指令。所取出的指令随后经历解码且被存储在指令缓冲器310的相应插槽中。在本文所说明的本发明实施例中,从线程库305的单元0A、单元0B或单元0C取出的指令被存储在指令缓冲器310的插槽0中,且从线程库305的单元1A、单元1B或单元1C取出的指令被存储在指令缓冲器310的插槽1中,等等。同样,根据发布逻辑320而在连续时钟周期中发布存储在指令缓冲器310中的指令。
当线程库305由若干线程填充时,其按以列为主的顺序加载。首先加载单元0A,接着单元1A、单元2A等,直到填满列A。接着,加载单元0B,接着单元1B、单元2B等,直到填满列B。如果线程库305配置有额外列,那么以相同方式继续此线程加载过程,直到填满所有列为止。通过按以列为主的顺序来加载线程库305,可将伙伴线程暂时彼此分离得尽可能的远。同样,每个行的伙伴线程相当独立于其它行,以使得当指令从指令缓冲器310处发布出去时行之间的顺序由发布逻辑320在最小程度上强制执行。
图6是说明在每组具有两个伙伴线程的情况下的活动执行线程交换的时序图。实线箭头对应于针对活动线程而执行的一序列指令。所述时序图展示首先起始线程库305的单元0A中的线程且执行来自所述线程的一序列指令,直到从所述线程发布交换指令为止。当发布了交换指令时,线程库305中的单元0A中的线程进入睡眠(即,成为不活动的)且其伙伴线程(即,线程库305的单元0B中的线程)成为活动的。此后,执行来自线程库305的单元0B中的线程的一序列指令,直到从所述线程发布交换指令为止。当发布了此交换指令时,线程库305中的单元0B中的线程进入睡眠且其伙伴线程(即,线程库305的单元0A中的线程)成为活动的。此持续到两个线程都完成其执行为止。还在一线程已完成了执行但其伙伴线程尚未完成时进行到伙伴线程的交换。
如图6所示,在单元0A中的线程之后连续起始线程库305的其它活动线程。与单元0A中的线程一样,执行其它活动线程中的每一者,直到从所述线程发布交换指令为止,在发布交换指令时所述线程进入睡眠且其伙伴线程成为活动的。活动执行接着在伙伴线程之间交替,直到两个线程都完成其执行为止。
图7是说明当执行伙伴组中的线程(或简言之,伙伴线程)时由处理单元执行的处理步骤的流程图。在步骤710中,分配用于伙伴线程的硬件资源(尤其是寄存器)。所分配的寄存器包括用于伙伴线程中每一者的私用寄存器和待由伙伴线程共用的共用寄存器。共用寄存器的分配节约了寄存器使用。举例来说,如果有两个伙伴线程且每个伙伴线程需要24个寄存器,那么会需要总共48个寄存器来执行常规多处理方法。然而,在本发明实施例中,分配了共用寄存器。这些寄存器对应于那些在线程活动时需要但在线程不活动时(例如当线程正等待完成长等待时间的操作时)不需要的寄存器。分配私用寄存器以存储需要在交换中间保留的任何信息。在其中所述两个伙伴线程中的每一者需要24个寄存器的实例中,如果可将这些寄存器中的16个分配作为共用寄存器,那么会仅需要总共32个寄存器来执行两个伙伴线程。如果每个伙伴组具有三个伙伴线程,那么节约程度甚至更大。在此实例中,与使用常规多处理方法的总共72个寄存器相比,使用本发明会需要总共40个寄存器。
所述伙伴线程中的一者开始时作为活动线程,且检索来自所述线程的指令以供执行(步骤712)。在步骤714中,起始在步骤712中检索到的指令的执行。接着,在步骤716中,检查检索到的指令以判断其是否为交换指令。如果其为交换指令,那么当前活动线程成为不活动的,且所述伙伴组中的其它线程中的一者成为活动的(步骤717)。如果其不是交换指令,那么检查在步骤714中起始的执行是否完成(步骤718)。当此执行完成时,检查当前活动线程以判断是否存在任何待执行的剩余指令(步骤720)。如果存在,那么处理流程返回到步骤712,在步骤712处从当前活动线程处检索待执行的下一个指令。如果不存在,那么进行核对以判断是否所有伙伴线程已完成了执行(步骤722)。如果完成了,那么结束过程。如果没有,那么处理流程返回到步骤717,在步骤717处交换到尚未完成的伙伴线程。
在上文所述的本发明实施例中,在编译程序时插入交换指令。交换指令通常插入在紧跟高等待时间的指令之后,且优选地插入在其中可分配大量共用寄存器(相对于私用寄存器的数目而言)的程序中的若干点处。举例来说,在图形处理中,交换指令可插入在紧跟纹理指令之后。在本发明的替代实施例中,交换事件可以不是交换指令,但其可以是硬件识别的某一事件。举例来说,硬件可经配置以识别指令执行中的长等待时间。当其识别到此时,其可导致发布导致长等待时间的指令的线程成为不活动且使得相同伙伴组中的另一线程活动。同样,交换事件可为在长等待时间操作期间的某一可识别事件,例如在长等待时间操作期间发生的第一记分板停止。
以下指令序列说明交换指令可由编译器插入在着色器程序中的何处。
Inst_00:    内插  iw
Inst_01:    倒数  w
Inst_02:    内插  s,w
Inst_3:     内插  t,w
Inst_04:    纹理  s,t    //纹理返回r、g、b、a值
Inst_05:    交换
Inst_06:    乘法  r,r,w
Inst_07:    乘法  g,g,w
交换指令(Inst_05)由编译器插入在紧跟长等待时间纹理指令(Inst_04)之后。这样,在执行长等待时间纹理指令(Inst_04)的同时进行到伙伴线程的交换。较不需要在乘法指令(Inst_6)之后插入交换指令,因为乘法指令(Inst_06)依赖于纹理指令(Inst_04)的结果,且直到长等待时间纹理指令(Inst_04)完成其执行后才可进行到伙伴线程的交换。
为说明简单起见,本发明实施例的以上描述中所使用的线程表示单一线程的指令。然而,本发明还可应用于其中类似线程被分组在一起且通过使用单一指令经由多个并行数据路径而处理来自此组(也被称为队)的相同指令的实施例。
尽管前文针对于本发明实施例,但可在不脱离本发明的基本范围的情况下构思本发明的其它和另外实施例。由所附权利要求书来确定本发明的范围。

Claims (4)

1.一种在一处理单元的执行管线中执行多个指令线程的方法,其包含以下步骤:
以列为主的顺序用所述多个指令线程填充一线程库,所述线程库包含存储在存储器中的一表格,其中第一指令线程在第三指令线程之前被存储在所述线程库中,所述第三指令线程在第二指令线程之前被存储在所述线程库中,且所述第二指令线程在第四指令线程之前被存储在所述线程库中,且其中所述以列为主的顺序限定了多组线程,所述第一和第二指令线程属于第一组线程,所述第三和第四指令线程属于第二组线程,以使在将额外线程存储于所述多组线程中的任一者中之前将一线程存储到所述多组线程中的每一者中;
当执行所述第一指令线程中的一具有等待时间的指令时,在所述执行管线中执行所述第一指令线程,直到在所述第一指令线程中遇到一交换指令为止;
响应于在所述第一指令线程中遇到所述交换指令,暂停所述第一指令线程在所述执行管线中的执行,并在所述执行管线中执行所述第二指令线程;
当执行所述第三指令线程中的一具有等待时间的指令时,于所述执行管线中同时执行所述第三指令线程与所述第一指令线程,直到在所述第三指令线程中遇到一交换指令;及
响应于在所述第三指令线程中遇到所述交换指令,暂停所述第三指令线程在所述执行管线中的执行,并在所述执行管线中执行所述第四指令线程。
2.根据权利要求1所述的方法,其进一步包含将第一、第二和共用组硬件资源分配给所述第一和第二指令线程的步骤,其中使用所述第一和共用组硬件资源在所述执行管线中执行所述第一指令线程,及使用所述第二和共用组硬件资源在所述执行管线中执行所述第二指令线程。
3.根据权利要求1所述的方法,其中所述具有一等待时间的指令包含一存储器存取指令。
4.根据权利要求2所述的方法,其中所述硬件资源进一步包含一指令缓冲器。
CN2006101681797A 2005-12-16 2006-12-15 用于将执行线程分组的系统和方法 Active CN1983196B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/305,558 2005-12-16
US11/305,558 US20070143582A1 (en) 2005-12-16 2005-12-16 System and method for grouping execution threads

Publications (2)

Publication Number Publication Date
CN1983196A CN1983196A (zh) 2007-06-20
CN1983196B true CN1983196B (zh) 2010-09-29

Family

ID=38165749

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006101681797A Active CN1983196B (zh) 2005-12-16 2006-12-15 用于将执行线程分组的系统和方法

Country Status (4)

Country Link
US (1) US20070143582A1 (zh)
JP (1) JP4292198B2 (zh)
CN (1) CN1983196B (zh)
TW (1) TWI338861B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106408505A (zh) * 2015-07-30 2017-02-15 Arm有限公司 图形处理系统

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089564A1 (en) * 2006-12-06 2009-04-02 Brickell Ernie F Protecting a Branch Instruction from Side Channel Vulnerabilities
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
WO2010097847A1 (ja) 2009-02-24 2010-09-02 パナソニック株式会社 プロセッサ装置、マルチスレッドプロセッサ装置
US8589922B2 (en) 2010-10-08 2013-11-19 International Business Machines Corporation Performance monitor design for counting events generated by thread groups
US8601193B2 (en) 2010-10-08 2013-12-03 International Business Machines Corporation Performance monitor design for instruction profiling using shared counters
US8489787B2 (en) 2010-10-12 2013-07-16 International Business Machines Corporation Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors
EP2711839A4 (en) 2011-05-19 2014-12-03 Nec Corp PARALLEL PROCESSING DEVICE, PARALLEL PROCESSING METHOD, OPTIMIZATION DEVICE, OPTIMIZATION METHOD AND COMPUTER PROGRAM
CN102520916B (zh) * 2011-11-28 2015-02-11 深圳中微电科技有限公司 在mvp处理器中消除纹理延迟和寄存器管理的方法
JP5894496B2 (ja) 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 半導体装置
US9747107B2 (en) * 2012-11-05 2017-08-29 Nvidia Corporation System and method for compiling or runtime executing a fork-join data parallel program with function calls on a single-instruction-multiple-thread processor
US9086813B2 (en) * 2013-03-15 2015-07-21 Qualcomm Incorporated Method and apparatus to save and restore system memory management unit (MMU) contexts
KR20150019349A (ko) * 2013-08-13 2015-02-25 삼성전자주식회사 다중 쓰레드 실행 프로세서 및 이의 동작 방법
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
GB2544994A (en) * 2015-12-02 2017-06-07 Swarm64 As Data processing
US11537397B2 (en) 2017-03-27 2022-12-27 Advanced Micro Devices, Inc. Compiler-assisted inter-SIMD-group register sharing
CN114035847B (zh) * 2021-11-08 2023-08-29 海飞科(南京)信息技术有限公司 用于并行执行核心程序的方法和装置
US20240095031A1 (en) * 2022-09-19 2024-03-21 Apple Inc. Thread Channel Deactivation based on Instruction Cache Misses

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6735769B1 (en) * 2000-07-13 2004-05-11 International Business Machines Corporation Apparatus and method for initial load balancing in a multiple run queue system
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US7430654B2 (en) * 2003-07-09 2008-09-30 Via Technologies, Inc. Dynamic instruction dependency monitor and control system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106408505A (zh) * 2015-07-30 2017-02-15 Arm有限公司 图形处理系统

Also Published As

Publication number Publication date
TWI338861B (en) 2011-03-11
CN1983196A (zh) 2007-06-20
US20070143582A1 (en) 2007-06-21
JP4292198B2 (ja) 2009-07-08
JP2007200288A (ja) 2007-08-09
TW200745953A (en) 2007-12-16

Similar Documents

Publication Publication Date Title
CN1983196B (zh) 用于将执行线程分组的系统和方法
US8400458B2 (en) Method and system for blocking data on a GPU
CN110704360B (zh) 一种基于异构fpga数据流的图计算优化方法
US8099584B2 (en) Methods for scalably exploiting parallelism in a parallel processing system
CN1577260B (zh) 跨线程寄存器共享技术
DE102013114072A1 (de) System und Verfahren zum Hardware-Scheduling von indexierten Barrieren
DE102012220267B4 (de) Rechenarbeitsverteilungs - Referenzzähler
DE102013201178B4 (de) Steuern von Arbeitsverteilung für Verarbeitung von Tasks
CN104412240B (zh) 用于存储器管理的系统和方法
CN104714785A (zh) 任务调度装置、方法及并行处理数据的设备
DE102012221502A1 (de) System und Verfahren zum Durchführen von gestalteter-Speicherzugriff-Operationen
CN110223216B (zh) 一种基于并行plb的数据处理方法、装置及计算机存储介质
DE102012222394A1 (de) Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden
CN110308982B (zh) 一种共享内存复用方法及装置
CN103365631A (zh) 用于存储器访问的动态库模式寻址
CN104050032A (zh) 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法
US9513923B2 (en) System and method for context migration across CPU threads
US20210232325A1 (en) Application-specific memory scaling in multi-device systems
CN109656868B (zh) 一种cpu与gpu之间的内存数据转移方法
DE102012222391B4 (de) Mehrkanal-Zeitscheibengruppen
CN103294449A (zh) 发散操作的预调度重演
DE102013100169A1 (de) Planen und Ausführung einer Rechenaufgabe
CN108427584A (zh) 快速启动的具有并行计算核的芯片及该芯片的配置方法
CN117215491A (zh) 一种快速数据访问方法、快速数据访问装置及光模块
US8539207B1 (en) Lattice-based computations on a parallel processor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant