CN1983165A - 用于在simd结构中处理线程组的系统和方法 - Google Patents
用于在simd结构中处理线程组的系统和方法 Download PDFInfo
- Publication number
- CN1983165A CN1983165A CN200610161033.XA CN200610161033A CN1983165A CN 1983165 A CN1983165 A CN 1983165A CN 200610161033 A CN200610161033 A CN 200610161033A CN 1983165 A CN1983165 A CN 1983165A
- Authority
- CN
- China
- Prior art keywords
- instruction
- pipeline
- group
- clock
- operand
- 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
Links
- 238000000034 method Methods 0.000 title claims description 30
- 238000004590 computer program Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent 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
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)
Abstract
一SIMD处理器高效利用其硬件资源来实现较高数据处理量。通过以数据处理侧的速率的一部分计时一SIMD处理器的指令处理侧和提供多个执行管线来扩展所述SIMD处理器的有效宽度,其中所述多个执行管线中的每一者具有多个数据路径。因而,当每个时钟取出并发布一指令一次,便实现较高数据处理量。此配置还允许将一大组线程群集并通过SIMD处理器一起执行,以使得可针对如与图形处理一起执行的纹理存储器存取的特定类型的操作实现较高存储器效率。
Description
技术领域
本发明的实施例一般来说涉及单指令多数据(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所述的方法,其中所述发布步骤包括从一包含复数个指令的指令缓冲器中选择一指令的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/292,614 US7836276B2 (en) | 2005-12-02 | 2005-12-02 | System and method for processing thread groups in a SIMD architecture |
US11/292,614 | 2005-12-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1983165A true CN1983165A (zh) | 2007-06-20 |
CN100538628C 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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104081340A (zh) * | 2011-12-23 | 2014-10-01 | 英特尔公司 | 用于数据类型的下转换的装置和方法 |
CN112424781A (zh) * | 2018-06-19 | 2021-02-26 | 锡克拜控股有限公司 | 数字文件防伪保护 |
Families Citing this family (23)
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 |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
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 |
WO2013081588A1 (en) * | 2011-11-30 | 2013-06-06 | Intel Corporation | Instruction and logic to provide vector horizontal compare functionality |
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 |
EP3131004A4 (en) * | 2014-04-11 | 2017-11-08 | Murakumo Corporation | Processor and method |
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 |
US9921838B2 (en) * | 2015-10-02 | 2018-03-20 | Mediatek Inc. | System and method for managing static divergence in a SIMD computing architecture |
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 |
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)
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 |
US5948106A (en) * | 1997-06-25 | 1999-09-07 | Sun Microsystems, Inc. | System for thermal overload detection and prevention for an integrated circuit processor |
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 |
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 |
US5958047A (en) * | 1997-06-25 | 1999-09-28 | Sun Microsystems, Inc. | Method for precise architectural update in an out-of-order processor |
US5978864A (en) * | 1997-06-25 | 1999-11-02 | Sun Microsystems, Inc. | Method for thermal overload detection and prevention for an intergrated 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 |
US6229553B1 (en) | 1998-08-20 | 2001-05-08 | Apple Computer, Inc. | Deferred shading graphics pipeline processor |
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 |
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 |
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 |
US6397300B1 (en) | 1999-06-25 | 2002-05-28 | International Business Machines Corporation | High performance store instruction management via imprecise local cache update 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 |
US6434667B1 (en) | 1999-06-25 | 2002-08-13 | International Business Machines Corporation | Layered local cache with imprecise reload mechanism |
US6418513B1 (en) | 1999-06-25 | 2002-07-09 | International Business Machines Corporation | Queue-less and state-less layered local data cache 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 |
US8274517B2 (en) | 2003-11-14 | 2012-09-25 | 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 |
-
2005
- 2005-12-02 US US11/292,614 patent/US7836276B2/en active Active
-
2006
- 2006-12-01 TW TW095144756A patent/TWI331300B/zh active
- 2006-12-04 CN CN200610161033.XA patent/CN100538628C/zh active Active
- 2006-12-04 JP JP2006327322A patent/JP4292197B2/ja active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104081340A (zh) * | 2011-12-23 | 2014-10-01 | 英特尔公司 | 用于数据类型的下转换的装置和方法 |
US10474463B2 (en) | 2011-12-23 | 2019-11-12 | Intel Corporation | Apparatus and method for down conversion of data types |
CN112424781A (zh) * | 2018-06-19 | 2021-02-26 | 锡克拜控股有限公司 | 数字文件防伪保护 |
CN112424781B (zh) * | 2018-06-19 | 2024-04-26 | 锡克拜控股有限公司 | 数字文件防伪保护 |
Also Published As
Publication number | Publication date |
---|---|
JP2007157154A (ja) | 2007-06-21 |
TW200809615A (en) | 2008-02-16 |
US20070130447A1 (en) | 2007-06-07 |
TWI331300B (en) | 2010-10-01 |
US7836276B2 (en) | 2010-11-16 |
JP4292197B2 (ja) | 2009-07-08 |
CN100538628C (zh) | 2009-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100538628C (zh) | 用于在simd结构中处理线程组的系统和方法 | |
US10915471B2 (en) | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator | |
CN109215728B (zh) | 用于分布式存储器危险检测和错误恢复的存储器电路和方法 | |
Nagarajan et al. | A design space evaluation of grid processor architectures | |
CN101449256B (zh) | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 | |
CN111868702A (zh) | 用于可配置空间加速器中的远程存储器访问的装置、方法和系统 | |
DE102018006791A1 (de) | Prozessoren, Verfahren und Systeme mit einem konfigurierbaren räumlichen Beschleuniger mit einem Sequenzer-Datenflussoperator | |
DE102018005172A1 (de) | Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger | |
US12086080B2 (en) | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits | |
US20060015547A1 (en) | Efficient circuits for out-of-order microprocessors | |
US20080250227A1 (en) | General Purpose Multiprocessor Programming Apparatus And Method | |
KR20180021812A (ko) | 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐 | |
US20090077360A1 (en) | Software constructed stands for execution on a multi-core architecture | |
Hayes et al. | Vector extensions for decision support dbms acceleration | |
JP2014216021A (ja) | バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法 | |
Gou et al. | Addressing GPU on-chip shared memory bank conflicts using elastic pipeline | |
Uhrig et al. | A two-dimensional superscalar processor architecture | |
Gupta et al. | High speed synchronization of processors using fuzzy barriers | |
KR20230169321A (ko) | 데이터 의존적이고 불규칙한 오퍼레이션들을 위한 프로그래밍 가능 가속기 | |
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 | |
Udupa et al. | Synergistic execution of stream programs on multicores with accelerators | |
Rodrigues | Programming future architectures: dusty decks, memory walls, and the speed of light | |
Lucas et al. | Spatiotemporal SIMT and scalarization for improving GPU efficiency | |
Zope | Queue Streaming Model: Theory, Algorithms, and Implementation |
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 |