当前位置: 首页 > 专利查询>辉达公司专利>正文

用于将执行线程分组的系统和方法技术方案

技术编号:2841396 阅读:192 留言:0更新日期:2012-04-11 18:40
将多个线程划分成具有两个或两个以上线程的伙伴组,以使得每个线程被指定给其一个或一个以上伙伴线程。每个伙伴组中只有一个线程活动地执行指令,且这允许伙伴线程共用硬件资源,例如寄存器。当一活动线程遇到一交换事件(例如一交换指令)时,所述活动线程暂停执行,且其伙伴线程中的一者使用那个线程的私用硬件资源和所述伙伴组的共用硬件资源开始执行。因此,可在不复制所有每个线程的硬件资源的情况下增加线程计数。

【技术实现步骤摘要】

本专利技术的实施例大体上涉及多线程处理,且更确切地说,涉及一种用于将执行线程分组以实现改进的硬件利用率的系统和方法。
技术介绍
一般来说,计算机指令需要执行多个时钟周期。为此原因,多线程处理器以连续的方式执行若干并行指令线程,以使得可尽可能地将用于执行指令的硬件保持繁忙。举例来说,当执行具有以下所示的特征的指令线程时,多线程处理器可连续调度四个并行线程。通过以此方式调度线程,多线程处理器能够在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的线程的伙伴。根据本专利技术实施例,每次伙伴组中仅有一个线程为活动的。在指令取本文档来自技高网
...

【技术保护点】
一种在一处理单元中执行多个指令线程的方法,其包含以下步骤:将所述处理单元的第一、第二和共用组硬件资源分配给第一和第二指令线程;使用所述第一和共用组硬件资源来执行所述第一指令线程,直到发生一预定事件为止;和响应于所述预定事件的所述发生,暂停所述第一指令线程的执行,并使用所述第二和共用组硬件资源来执行所述第二指令线程。

【技术特征摘要】
US 2005-12-16 11/305,5581.一种在一处理单元中执行多个指令线程的方法,其包含以下步骤将所述处理单元的第一、第二和共用组硬件资源分配给第一和第二指令线程;使用所述第一和共用组硬件资源来执行所述第一指令线程,直到发生一预定事件为止;和响应于所述预定事件的所述发生,暂停所述第一指令线程的执行,并使用所述第二和共用组硬件资源来执行所述第二指令线程。2.根据权利要求1所述的方法,其中执行所述第二指令线程,直到发生另一预定事件为止,且响应于所述另一预定事件的所述发生,暂停所述第二指令线程的执行,并重新开始所述第一指令线程的所述执行。3.根据权利要求2所述的方法,其中所述第一指令线程包含一交换指令,且当执行所述第一线程中的所述交换指令时发生所述预定事件,且其中所述第二指令线程包含一交换指令,且当执行所述第二线程中的所述交换指令时发生所述另一预定事件。4.根据权利要求1所述的方法,其进一步包含将一第三组硬件资源和所述共用组硬件资源分配给一第三指令线程的步骤,其中执行所述第二指令线程,...

【专利技术属性】
技术研发人员:布雷特W库恩约翰埃里克林霍尔姆
申请(专利权)人:辉达公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1