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

文档序号:6563685阅读:181来源:国知局
专利名称:用于在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。
队的大小较大的好处在于在图形处理中,所执行的指令中的许多指令是如纹理的存储器存取。如果存在一大组相关存储器存取而并非若干较小组存储器存取,那么存储器系统会更为高效地执行这些指令。通过将线程群集或组队在一起,本发明提供更高的存储器效率。使用过大的队的不利方面在于如分支的事务使得一队中的某些线程与相同队中其它者执行不同的指令。在此类情况下,将降低性能,这是由于相同队中的所有线程仅可一次执行一个指令。
尽管前文针对本发明的实施例,但可在不脱离本发明的基本范围的情况下设计本发明的其它和另外实施例。本发明的范围由所附权利要求书确定。
权利要求
1.一种通过复数个执行管线处理计算机程序指令的方法,其包含以下步骤发布一组多个线程的一指令;以一第一时钟速率来收集与所述指令相关联的多组操作数;和以一第二时钟速率将所述收集到的操作数供应到所述执行管线中的一者,其中所述组中的多个线程的数目等于所述复数个执行管线中提供的数据路径的总数目乘以所述第二时钟速率与所述第一时钟速率的比率。
2.根据权利要求1所述的方法,其中以所述第一时钟速率来依次发布一指令流,且对于所述指令的每一者,以所述第一时钟速率来收集多组操作数。
3.根据权利要求2所述的方法,其进一步包含将所述指令归类为至少两种类型中的一者的步骤,其中将与一第一类型的指令相关联的操作数供应到所述第一执行管线且将与一第二类型的指令相关联的操作数供应到所述第二执行管线。
4.根据权利要求3所述的方法,其中将一第三类型的一指令供应到所述第一执行管线和所述第二执行管线中的一者。
5.根据权利要求1所述的方法,其中所述第二时钟速率至少为所述第一时钟速率的两倍。
6.根据权利要求1所述的方法,其中所述指令包含待针对所述组线程执行的一指令序列中的一指令,且所述多组操作数中的每一者对应于所述组中的所述线程中的一者。
7.根据权利要求6所述的方法,其中所述发布步骤包括从一包含复数个指令的指令缓冲器中选择一指令的步骤。
全文摘要
一SIMD处理器高效利用其硬件资源来实现较高数据处理量。通过以数据处理侧的速率的一部分计时一SIMD处理器的指令处理侧和提供多个执行管线来扩展所述SIMD处理器的有效宽度,其中所述多个执行管线中的每一者具有多个数据路径。因而,当每个时钟取出并发布一指令一次,便实现较高数据处理量。此配置还允许将一大组线程群集并通过SIMD处理器一起执行,以使得可针对如与图形处理一起执行的纹理存储器存取的特定类型的操作实现较高存储器效率。
文档编号G06F15/80GK1983165SQ20061016103
公开日2007年6月20日 申请日期2006年12月4日 优先权日2005年12月2日
发明者布雷特·W·库恩, 约翰·埃里克·林霍尔姆 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1