CN100538628C - 用于在simd结构中处理线程组的系统和方法 - Google Patents

用于在simd结构中处理线程组的系统和方法 Download PDF

Info

Publication number
CN100538628C
CN100538628C CN200610161033.XA CN200610161033A CN100538628C CN 100538628 C CN100538628 C CN 100538628C CN 200610161033 A CN200610161033 A CN 200610161033A CN 100538628 C CN100538628 C CN 100538628C
Authority
CN
China
Prior art keywords
instruction
pipeline
group
clock
thread
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
CN200610161033.XA
Other languages
English (en)
Other versions
CN1983165A (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 CN1983165A publication Critical patent/CN1983165A/zh
Application granted granted Critical
Publication of CN100538628C publication Critical patent/CN100538628C/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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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, 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Abstract

一SIMD处理器高效利用其硬件资源来实现较高数据处理量。通过以数据处理侧的速率的一部分计时一SIMD处理器的指令处理侧和提供多个执行管线来扩展所述SIMD处理器的有效宽度,其中所述多个执行管线中的每一者具有多个数据路径。因而,当每个时钟取出并发布一指令一次,便实现较高数据处理量。此配置还允许将一大组线程群集并通过SIMD处理器一起执行,以使得可针对如与图形处理一起执行的纹理存储器存取的特定类型的操作实现较高存储器效率。

Description

用于在SIMD结构中处理线程组的系统和方法
技术领域
本发明的实施例一般来说涉及单指令多数据(SIMD)处理,且更明确地说,涉及一种用于在SIMD处理器中处理线程组的系统和方法。
背景技术
SIMD处理器将单一指令与多个数据路径相关联,以允许硬件高效地执行数据并行算法。SIMD处理器实施的一般好处由管线控制硬件和指令处理的减少产生,所述减少起因于前后紧接地运行多个数据路径。
一般来说,增加SIMD处理器中的数据路径数目将允许并行处理更多的数据,且将导致性能改进。然而,处理器大小约束将数据路径的数目限制为不超过特定数目。同样,如果数据路径的数目太大,那么可能存在硬件资源的利用不足。
发明内容
本发明提供一种具有改进的SIMD结构的处理器,其高效地利用其硬件资源来实现较高数据处理量。根据本发明的一实施例,SIMD处理单元的有效宽度通过以数据处理侧的速率的一部分来计时SIMD处理单元的指令处理侧而扩展为实际硬件宽度的若干倍。根据本发明的另一实施例,通过提供多个执行管线来扩展SIMD处理单元的有效宽度。通过使用不同时钟速率并提供多个执行管线,可根据以下公式将大量线程一起分组为一线程队:队_大小=执行管线数目×每个执行管线中数据路径的数目×数据处理侧的时钟速率与指令处理侧的时钟速率的比率。
根据本发明一实施例的SIMD处理单元包括一以第一时钟速率操作的指令处理部和一以第二时钟速率操作的数据处理部,其中所述第二时钟速率与所述第一时钟速率不同。优选地,第二时钟速率至少为第一时钟速率的两倍。指令处理部发布一待在数据处理部执行的指令,且收集待用于执行所发布的指令的操作数。收集多组此类操作数。
数据处理部至少包括第一和第二执行管线。所述第一执行管线经配置以执行第一类型的指令(例如,乘积加(MAD)),且所述第二指令管线经配置以执行第二类型的指令(例如,如倒数、指数、对数等的特殊函数指令(SFU))。每个执行管线具有多个数据路径,所述数据路径根据所发布的指令而相同地配置。
在指令处理部中收集到的每组操作数被供应到所述数据路径中的一者。与MAD指令相关联的一组操作数被供应到第一执行管线中的数据路径中的一者。与SFU指令相关联的一组操作数被供应到第二执行管线中的数据路径中的一者。
针对所发布的指令而收集的操作数组的数目优选地等于第一和第二执行管线中实际数据路径的数目乘以第二时钟速率与第一时钟速率的比率。举例来说,当第二时钟速率与第一时钟速率的比率为2时,针对所发布的指令而收集的操作数组的数目应为2×第一和第二执行管线中数据路径的数目。
根据本发明的实施例,不需要在数据处理速率的每个周期时发布新指令来使得数据处理部始终被完全利用。此允许指令处理部以减少的时钟速率来操作,所述减少的时钟速率更适合指令处理,且因而降低了指令处理部的硬件要求。
附图说明
为了能详细地理解本发明的上述特征,可参考实施例来进行本发明的更明确描述(在上文中简要概述),附图中说明了某些所述实施例。然而,应注意,附图仅说明本发明的典型实施例,且因此不应被认为是限制其范围,因为本发明可允许其它同样有效的实施例。
图1是实施具有复数个SIMD处理器的GPU的计算机系统的简化方框图。
图2是根据本发明的一实施例的SIMD处理器的方框图。
图3是图2所示的SIMD处理器的指令分派单元的方框图。
图4是展示指令缓冲器的内容的概念图。
图5A到5D说明通过SIMD执行管线的一组线程的处理。
图6是说明当执行一组线程的指令时由SIMD处理器执行的处理步骤的流程图。
具体实施方式
图1是建构具有耦合到复数个SIMD处理器124-1、124-2、...、124-N的接口单元122的图形处理单元(GPU)120的计算机系统100的简化方框图。SIMD处理器124通过存储器控制器126存取本地图形存储器130。GPU 120和本地图形存储器130代表图形子系统,其由计算机系统100的中央处理单元(CPU)110通过使用存储在系统存储器112中的驱动程序来存取。
本发明适用于具有一个或一个以上SIMD处理器124的任何处理单元。因此,N可为大于或等于1的任何整数。并且,包括SIMD处理器124的处理单元可为CPU、GPU或任何其它类型的处理单元。
图2更详细地说明根据本发明实施例的SIMD处理器。如图所示,SIMD处理器200(其可为图1中所示的SIMD处理器124中的任何一者)包括指令处理部210和数据处理部220。指令处理部210以一时钟速率操作,所述时钟速率是数据处理部220的时钟速率的一半。为了方便起见,用于指令处理部210的时钟将在下文称为T时钟,且用于数据处理部220的时钟将在下文称为H时钟。
指令处理部210包括:指令分派单元212,其用于发布要由SIMD处理器200执行的指令;寄存器文件214,其存储在执行指令的过程中使用的操作数;和一对操作数收集单元216,218。操作数收集单元216耦合到第一执行管线222并收集要供应到第一执行管线222的操作数。操作数收集单元218耦合到第二执行管线224并收集要供应到第二执行管线224的操作数。在本文所说明的本发明的实施例中,第一执行管线经配置以执行第一类型的指令,例如乘积加(MAD),且第二执行管线经配置以执行第二类型的指令,例如诸如倒数、指数、对数等特殊函数指令(SFU)。某些指令可在执行管线222,224的任一者中执行。举例来说,指令MOV和FMUL可在执行管线222,224的任一者中执行。执行管线222,224中的每一者都具有8个并行且相同配置的数据路径。
当指令分派单元212发布指令时,指令分派单元212将管线配置信号发送到两个执行管线222,224中的一者。如果指令为MAD类型,那么将管线配置信号发送到第一执行管线222。如果指令为SFU类型,那么将管线配置信号发送到第二执行管线222。
发布指令时,指令分派单元212还传输对应于与所发布的指令相关联的线程队(其在本文所说明的实施例中为32个的群组)的掩码。如果所发布的指令是MAD类型,那么操作数收集单元216读取寄存器文件214内的与线程队相关联的寄存器,且为所述队中的每个线程收集需要用来执行所发布的指令的一组操作数。单组操作数可包括一个或一个以上操作数。通常,与MAD类型的指令相关联的一组操作数包括两个或三个操作数,且与SFU类型的指令相关联的一组操作数包括一个操作数。
如果所发布的指令是SFU类型,那么操作数收集单元218读取寄存器文件124内的与线程队相关联的寄存器,且为所述队中的每个线程收集需要用来执行所发布的指令的一组操作数。对于T时钟的每个周期来说,操作数收集单元216,218中的每一者都能够收集16组操作数。以每H时钟周期8组的速率将这些组供应到执行管线222,224。因此,在两个T时钟周期或四个H时钟周期中处理与一线程队相关联的32组操作数。
将来自执行管线222,224的执行结果收集在一对累加器226,228中。累加器226收集来自执行管线222的执行结果,且累加器228收集来自执行管线224的执行结果。执行管线222,224和累加器226,228是数据处理部220的一部分且以指令处理部210的时钟速率的两倍的时钟速率操作。因为寄存器文件214以T时钟速率操作,所以每两个H时钟周期或每一个T时钟周期,累加器226,228将执行结果回写到寄存器文件214。因此,累加器226,228中的每一者都在向寄存器文件214进行回写之前收集16组执行结果。
因为执行管线222,224中所执行的操作类型(主要是数学操作),H时钟被配置成快速时钟。然而,数学操作的有效操作速度通常与对于指令处理和寄存器文件214的有效操作速度不同。指令处理和寄存器文件214以较缓慢的时钟更高效地操作。因此,SIMD处理器200配置有两个时钟域,其中指令处理以T时钟速率执行,且数据处理以H时钟速率执行,H时钟速率等于T时钟速率的两倍。
图3是指令处理部210的指令分派单元212的功能方框图。指令分派单元212包括具有复数个插槽(每线程队一个插槽)的指令缓冲器310。此示范性实施例中的插槽的数目是24,且每个插槽可容纳来自对应线程队的至多达两个指令。如果插槽中的任何一者具有用于另一指令的空间,那么使取出指令程序(fetch)312从存储器进入指令高速缓冲存储器314。在将存储在指令高速缓冲存储器314中的指令添加到记分板322且放置在指令缓冲器310的空白空间中之前,指令经历解码316,所述记分板322跟踪正在运行的指令,即已经发布但尚未完成的指令。对指令进行解码时,就可对指令是MAD类型还是SFU类型作出确定。
指令分派单元212进一步包括发布逻辑320。发布逻辑320检查记分板322且从指令缓冲器310中将不依赖于正在运行的指令中的任何一者的指令发布出去。结合来自指令缓冲器310的发布,发布逻辑320将管线配置信号发送到适当的执行管线,并传输对应于与所发布的指令相关联的线程队的掩码。所述掩码指示所述队中的线程中的哪一者是有效的,即应受所发布的指令影响的。
图4进一步详细说明指令缓冲器310。如图所示,指令缓冲器310具有24个插槽。指令缓冲器中的每个插槽可容纳来自一队(一组32个)线程的至多达两个的指令。在所示的实例中,来自一队线程(T0到T31)的具有程序计数器102和110的两个指令存储在指令缓冲器310的插槽0中。这些指令将是MAD类型或SFU类型。如果指令是MAD类型且是从指令缓冲器310中发布出去的,那么与所述线程队(T0到T31)相关联的32组操作数将被收集在操作数收集单元216中并供应到执行管线222。另一方面,如果指令是SFU类型且是从指令缓冲器310中发布出去的,那么与所述线程队(T0到T31)相关联的32组操作数将被收集在操作数收集单元218中并供应到执行管线224。
图5A-5D说明穿过经配置以执行MAD指令(例如从指令缓冲器310中发布出去的指令A)的执行管线222的线程队(T0到T31)的选定处理状态。图5A展示经过一个H时钟周期后执行管线222的状态。如图所示,在一个H时钟周期后,分别与线程T0、T1、T2、T3、T4、T5、T6、T7相关联的标识为0、1、2、3、4、5、6、7的8组操作数已经进入执行管线222且由指令A的第一管级(pipe stage)对其进行操作。就在下一H时钟周期,8组操作数的新群组将进入执行管线222且将由指令A的第一管级对其进行操作,且8组操作数的初始群组将已经向下前进一个管级且将进一步由指令A的第二管级对其进行操作。在四个H时钟周期后,与一线程队相关联的所有组操作数都将已经进入执行管线222。因此,指令A的每个管级都将对四个H时钟周期有效。在第五H时钟周期,其将根据新发布的MAD类型的指令来配置。
图5B展示与线程队相关联的所有组操作数都已经进入执行管线222且由指令A的几个管级对其进行操作后执行管线222的状态。图5C展示刚好在任何一组操作数都退出执行管线222之前执行管线222的状态。图5D展示在图5C中所示的状态后三个H时钟周期执行管线222的状态。在经过再多一个H时钟周期后,与线程队相关联的所有组操作数都将已经退出执行管线222。
在优选实施例中,当将指令从执行缓冲器310中发布出去时,发布逻辑320在MAD类型的指令与SFU类型的指令之间交替。以此方式,执行管线222,224两者都可保持完全占用。如果指令缓冲器310仅含有单个类型的指令,那么可允许相继发布MAD类型指令或SFU类型指令。然而,一队32个线程需要2个T时钟或4个H时钟来执行,因此,至多每隔一个T时钟可发生相同类型的指令(例如,MAD-MAD或SFU-SFU)的相继发布。另一方面,交替地向两个管线发布不同类型的指令允许在每个T时钟时发布指令且提供更高性能。编译器可帮助排定指令,以便确保不同类型的指令存储在指令缓冲器310中。允许不同队在程序中稍微分开也可改进性能。
图6是说明根据本发明实施例在执行线程队的一个指令时由SIMD处理器200执行的过程步骤的流程图。在步骤610中,从指令缓冲器310中发布出指令。接着,从寄存器文件214读取多组操作数且对应于所发布的指令的类型将其收集在操作数收集单元216或218中(步骤612)。在步骤614中,配置对应于所发布的指令的类型的执行管线222或224以执行所发布的指令。在步骤616中,使所收集到的操作数沿执行管线向下前进,且由所发布的指令的多个管级对其进行操作。连续地执行步骤614和616,直到在步骤612中收集到的所有操作数都已经退出执行管线为止。当执行步骤614和616时,每隔一个H时钟(即,每次半队),累加器226,228收集退出执行管线222,224的操作数,且向寄存器文件216进行回写。当在步骤612中收集到的所有操作数都已经退出执行管线(步骤620)时,对在步骤610中发布的指令的SIMD处理结束。在图5A-5D中所示的实例中,向寄存器文件216进行的初始回写在图5C中所示的执行管线的状态后两个H时钟时发生,且向存储器文件216进行的最终回写在图5C中所示的执行管线的状态后四个H时钟时发生。
在上文所述的本发明的实施例的情况下,通过SIMD处理器处理的数据的量增加,而不增加执行管线的物理数据宽度。因此,SIMD处理器的有效指令处理速率增加。
此外,本发明提供一种灵活方式来分组线程。在本发明的上述实施例中,根据以下等式将一队配置成具有32个线程的组:队_大小=执行管线数目×每个执行管线中的数据路径数目×H时钟速率与T时钟速率的比率=2×8×2=32。由本发明提供的灵活性在于可调整队的大小。举例来说,可在执行管线之间交替时通过以每四个T时钟或以每两个T时钟来向每个执行管线发布一指令来将队的大小增加到64。
队的大小较大的好处在于在图形处理中,所执行的指令中的许多指令是如纹理的存储器存取。如果存在一大组相关存储器存取而并非若干较小组存储器存取,那么存储器系统会更为高效地执行这些指令。通过将线程群集或组队在一起,本发明提供更高的存储器效率。使用过大的队的不利方面在于如分支的事务使得一队中的某些线程与相同队中其它者执行不同的指令。在此类情况下,将降低性能,这是由于相同队中的所有线程仅可一次执行一个指令。
尽管前文针对本发明的实施例,但可在不脱离本发明的基本范围的情况下设计本发明的其它和另外实施例。本发明的范围由所附权利要求书确定。

Claims (7)

1.一种通过复数个执行管线处理计算机程序指令的方法,其包含以下步骤:针对一组多个线程发布的一指令;
以一第一时钟速率来收集与所述指令相关联的多组操作数;和
以一第二时钟速率将所收集到的操作数供应到所述执行管线中的一者,
其中所述组多个线程中的多个线程的数目等于所述复数个执行管线中提供的数据路径的总数目乘以所述第二时钟速率与所述第一时钟速率的比率。
2.根据权利要求1所述的方法,其中以所述第一时钟速率来依次针对所述组多个线程发布一指令流,且对于所述指令的每一者,以所述第一时钟速率来收集多组操作数。
3.根据权利要求2所述的方法,其进一步包含将所述指令归类为至少两种类型中的一者的步骤,其中将与一第一类型的指令相关联的操作数供应到所述执行管线的一第一执行管线且将与一第二类型的指令相关联的操作数供应到所述执行管线的一第二执行管线。
4.根据权利要求3所述的方法,其中将一第三类型的一指令供应到所述第一执行管线和所述第二执行管线中的一者。
5.根据权利要求1所述的方法,其中所述第二时钟速率至少为所述第一时钟速率的两倍。
6.根据权利要求1所述的方法,其中所述指令包含待针对所述组多个线程执行的一指令序列中的一指令,且所述多组操作数中的每一者对应于所述组多个线程中的所述线程中的一者。
7.根据权利要求6所述的方法,其中所述发布步骤包括从一包含复数个指令的指令缓冲器中选择一指令的步骤。
CN200610161033.XA 2005-12-02 2006-12-04 用于在simd结构中处理线程组的系统和方法 Active CN100538628C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/292,614 2005-12-02
US11/292,614 US7836276B2 (en) 2005-12-02 2005-12-02 System and method for processing thread groups in a SIMD architecture

Publications (2)

Publication Number Publication Date
CN1983165A CN1983165A (zh) 2007-06-20
CN100538628C true CN100538628C (zh) 2009-09-09

Family

ID=38120161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200610161033.XA Active CN100538628C (zh) 2005-12-02 2006-12-04 用于在simd结构中处理线程组的系统和方法

Country Status (4)

Country Link
US (1) US7836276B2 (zh)
JP (1) JP4292197B2 (zh)
CN (1) CN100538628C (zh)
TW (1) TWI331300B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221933A (zh) * 2010-11-18 2013-07-24 德克萨斯仪器股份有限公司 从通用寄存器文件向simd寄存器文件移动数据的方法和装置
CN107038019A (zh) * 2015-10-02 2017-08-11 联发科技股份有限公司 单指令多数据计算系统中处理指令的方法及计算系统

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7925860B1 (en) * 2006-05-11 2011-04-12 Nvidia Corporation Maximized memory throughput using cooperative thread arrays
US7484076B1 (en) * 2006-09-18 2009-01-27 Nvidia Corporation Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P)
JP4973355B2 (ja) * 2007-07-18 2012-07-11 トヨタ自動車株式会社 内燃機関の排気浄化システム
US8578387B1 (en) * 2007-07-31 2013-11-05 Nvidia Corporation Dynamic load balancing of instructions for execution by heterogeneous processing engines
US9830156B2 (en) * 2011-08-12 2017-11-28 Nvidia Corporation Temporal SIMT execution optimization through elimination of redundant operations
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
CN105955704B (zh) * 2011-11-30 2018-12-04 英特尔公司 用于提供向量横向比较功能的指令和逻辑
CN104081340B (zh) * 2011-12-23 2020-11-10 英特尔公司 用于数据类型的下转换的装置和方法
JP2014016894A (ja) 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
KR101319287B1 (ko) 2013-03-08 2013-10-17 주식회사 에이디칩스 파이프라인 구조를 갖는 프로세서
US9183611B2 (en) * 2013-07-03 2015-11-10 Apple Inc. Apparatus implementing instructions that impose pipeline interdependencies
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
JP5630798B1 (ja) * 2014-04-11 2014-11-26 株式会社Murakumo プロセッサーおよび方法
KR102332523B1 (ko) 2014-12-24 2021-11-29 삼성전자주식회사 연산 처리 장치 및 방법
US9727944B2 (en) * 2015-06-22 2017-08-08 Apple Inc. GPU instruction storage
GB2540937B (en) * 2015-07-30 2019-04-03 Advanced Risc Mach Ltd Graphics processing systems
US10410097B2 (en) * 2016-06-06 2019-09-10 Mutualink, Inc. System and method for distributed intelligent pattern recognition
US11016932B2 (en) 2017-09-21 2021-05-25 Alibaba Group Holding Limited Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system
MX2020013851A (es) * 2018-06-19 2021-03-25 Sicpa Holding Sa Proteccion antifalsificacion de archivos digitales.
US11360778B2 (en) * 2019-12-11 2022-06-14 Oracle International Corporation Dynamic insights extraction and trend prediction
US20210182073A1 (en) * 2019-12-13 2021-06-17 Yale University Modular, extensible computer processing architecture
US20230069890A1 (en) * 2021-09-03 2023-03-09 Advanced Micro Devices, Inc. Processing device and method of sharing storage between cache memory, local data storage and register files
US20230086989A1 (en) * 2021-09-17 2023-03-23 Nvidia Corporation Parallel processing of thread groups

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5421028A (en) 1991-03-15 1995-05-30 Hewlett-Packard Company Processing commands and data in a common pipeline path in a high-speed computer graphics system
US5579473A (en) 1994-07-18 1996-11-26 Sun Microsystems, Inc. Interface controller for frame buffer random access memory devices
US5815166A (en) 1995-03-24 1998-09-29 3Dlabs Inc., Ltd. Graphics subsystem with slaveable rasterizer
US6178481B1 (en) 1995-12-18 2001-01-23 Texas Instruments Incorporated Microprocessor circuits and systems with life spanned storage circuit for storing non-cacheable data
US5999727A (en) * 1997-06-25 1999-12-07 Sun Microsystems, Inc. Method for restraining over-eager load boosting using a dependency color indicator stored in cache with both the load and store instructions
US5838988A (en) * 1997-06-25 1998-11-17 Sun Microsystems, Inc. Computer product for precise architectural update in an out-of-order processor
US5958047A (en) * 1997-06-25 1999-09-28 Sun Microsystems, Inc. Method for precise architectural update in an out-of-order processor
US5860018A (en) * 1997-06-25 1999-01-12 Sun Microsystems, Inc. Method for tracking pipeline resources in a superscalar processor
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5978864A (en) * 1997-06-25 1999-11-02 Sun Microsystems, Inc. Method for thermal overload detection and prevention for an intergrated circuit processor
US5948106A (en) * 1997-06-25 1999-09-07 Sun Microsystems, Inc. System for thermal overload detection and prevention for an integrated circuit processor
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
GB9716251D0 (en) 1997-08-01 1997-10-08 Philips Electronics Nv Attribute interpolation in 3d graphics
US5996060A (en) 1997-09-25 1999-11-30 Technion Research And Development Foundation Ltd. System and method for concurrent processing
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
AU5688199A (en) 1998-08-20 2000-03-14 Raycer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
US6704925B1 (en) 1998-09-10 2004-03-09 Vmware, Inc. Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache
US6266733B1 (en) 1998-11-12 2001-07-24 Terarecon, Inc Two-level mini-block storage system for volume data sets
US6279100B1 (en) * 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor
US6222550B1 (en) 1998-12-17 2001-04-24 Neomagic Corp. Multiple triangle pixel-pipelines with span-range pixel interlock for processing separate non-overlapping triangles for superscalar 3D graphics engine
US6418513B1 (en) 1999-06-25 2002-07-09 International Business Machines Corporation Queue-less and state-less layered local data cache mechanism
US6463507B1 (en) 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
US6405285B1 (en) 1999-06-25 2002-06-11 International Business Machines Corporation Layered local cache mechanism with split register load bus and cache load bus
US6446166B1 (en) 1999-06-25 2002-09-03 International Business Machines Corporation Method for upper level cache victim selection management by a lower level cache
US6397300B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation High performance store instruction management via imprecise local cache update mechanism
US6434667B1 (en) 1999-06-25 2002-08-13 International Business Machines Corporation Layered local cache with imprecise reload mechanism
US6559852B1 (en) 1999-07-31 2003-05-06 Hewlett Packard Development Company, L.P. Z test and conditional merger of colliding pixels during batch building
US6279086B1 (en) 1999-08-04 2001-08-21 International Business Machines Corporation Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position
US6819325B2 (en) 2000-03-07 2004-11-16 Microsoft Corporation API communications for vertex and pixel shaders
KR100333375B1 (ko) * 2000-06-30 2002-04-18 박종섭 반도체 소자의 게이트 제조방법
US6750869B1 (en) 2000-10-13 2004-06-15 Sony Corporation Method and design for improved fragment processing
JP2003035589A (ja) 2001-07-19 2003-02-07 Yokogawa Electric Corp フロート・レベル計
US6947047B1 (en) * 2001-09-20 2005-09-20 Nvidia Corporation Method and system for programmable pipelined graphics processing with branching instructions
US20030097395A1 (en) * 2001-11-16 2003-05-22 Petersen Paul M. Executing irregular parallel control structures
US6816161B2 (en) 2002-01-30 2004-11-09 Sun Microsystems, Inc. Vertex assembly buffer and primitive launch buffer
US7185181B2 (en) * 2002-08-05 2007-02-27 Intel Corporation Apparatus and method for maintaining a floating point data segment selector
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7714858B2 (en) 2003-04-18 2010-05-11 Hewlett-Packard Development Company, L.P. Distributed rendering of interactive soft shadows
US7015718B2 (en) * 2003-04-21 2006-03-21 International Buisness Machines Corporation Register file apparatus and method for computing flush masks in a multi-threaded processing system
US7139003B1 (en) 2003-12-15 2006-11-21 Nvidia Corporation Methods of processing graphics data including reading and writing buffers
US7103720B1 (en) 2003-10-29 2006-09-05 Nvidia Corporation Shader cache using a coherency protocol
US8823718B2 (en) 2003-11-14 2014-09-02 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
US7904905B2 (en) * 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs
US7278011B2 (en) * 2004-04-08 2007-10-02 International Business Machines Corporation Completion table configured to track a larger number of outstanding instructions without increasing the size of the completion table
US7552316B2 (en) 2004-07-26 2009-06-23 Via Technologies, Inc. Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system
US7237094B2 (en) * 2004-10-14 2007-06-26 International Business Machines Corporation Instruction group formation and mechanism for SMT dispatch
US7254697B2 (en) * 2005-02-11 2007-08-07 International Business Machines Corporation Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US7447873B1 (en) * 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
The Microarchitecture of the Pentium 4 Processor. Glenn Hinton,Dave sager,Mike Upton,Darrell Boggs,DougCarmean,Alan Kyker,Patrice Roussel.Intel Technology Journal. 2001
The Microarchitecture of the Pentium 4 Processor. Glenn Hinton,Dave sager,Mike Upton,Darrell Boggs,DougCarmean,Alan Kyker,Patrice Roussel.Intel Technology Journal. 2001 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221933A (zh) * 2010-11-18 2013-07-24 德克萨斯仪器股份有限公司 从通用寄存器文件向simd寄存器文件移动数据的方法和装置
CN103221933B (zh) * 2010-11-18 2016-12-21 德克萨斯仪器股份有限公司 从通用寄存器文件向simd寄存器文件移动数据的方法和装置
CN107038019A (zh) * 2015-10-02 2017-08-11 联发科技股份有限公司 单指令多数据计算系统中处理指令的方法及计算系统

Also Published As

Publication number Publication date
JP4292197B2 (ja) 2009-07-08
TW200809615A (en) 2008-02-16
CN1983165A (zh) 2007-06-20
US20070130447A1 (en) 2007-06-07
TWI331300B (en) 2010-10-01
US7836276B2 (en) 2010-11-16
JP2007157154A (ja) 2007-06-21

Similar Documents

Publication Publication Date Title
CN100538628C (zh) 用于在simd结构中处理线程组的系统和方法
Nagarajan et al. A design space evaluation of grid processor architectures
CN101449256B (zh) 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
US8789031B2 (en) Software constructed strands for execution on a multi-core architecture
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
JP4292198B2 (ja) 実行スレッドをグループ化するための方法
US20080250227A1 (en) General Purpose Multiprocessor Programming Apparatus And Method
US20060015547A1 (en) Efficient circuits for out-of-order microprocessors
CN108027772A (zh) 用于逻辑处理器的不同的系统寄存器
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
Gong et al. Save: Sparsity-aware vector engine for accelerating dnn training and inference on cpus
DE102012221502A1 (de) System und Verfahren zum Durchführen von gestalteter-Speicherzugriff-Operationen
CN101398753A (zh) 用于执行扫描运算的系统、方法及计算机程序产品
Hayes et al. Vector extensions for decision support dbms acceleration
Zhang et al. Locality based warp scheduling in GPGPUs
Uhrig et al. A two-dimensional superscalar processor architecture
DE102013201195A1 (de) Zuvor-geplante Wiederholungen von divergenten Operationen
Yeh et al. Branch history table indexing to prevent pipeline bubbles in wide-issue superscalar processors
Tan et al. A pipelining loop optimization method for dataflow architecture
Coole et al. A traversal cache framework for fpga acceleration of pointer data structures: A case study on barnes-hut n-body simulation
Rodrigues Programming future architectures: dusty decks, memory walls, and the speed of light
Lucas et al. Spatiotemporal SIMT and scalarization for improving GPU efficiency
Yu et al. Accelerated Synchronous Model Parallelism Using Cooperative Process for Training Compute-Intensive Models
Agun et al. Approaches for implementing persistent queues within data-intensive scientific workflows
DE102012222552B4 (de) Aufeinanderfolgende Wiederholungen von divergenten Operationen

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