图形处理器中SIMD单元的动态启用和禁用.pdf

上传人:小** 文档编号:1566794 上传时间:2018-06-25 格式:PDF 页数:32 大小:2.36MB
返回 下载 相关 举报
摘要
申请专利号:

CN201180035148.3

申请日:

2011.07.11

公开号:

CN103080899A

公开日:

2013.05.01

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/30申请日:20110711|||公开

IPC分类号:

G06F9/30; G06F9/38; G06F1/32; G06T15/00

主分类号:

G06F9/30

申请人:

超威半导体公司

发明人:

图沙尔·K·沙阿; 拉沙德·奥雷费基; 迈克尔·J·曼特; 布莱恩·恩贝林

地址:

美国加利福尼亚州

优先权:

2010.07.13 US 61/363,856; 2010.07.20 US 12/839,962

专利代理机构:

上海胜康律师事务所 31263

代理人:

李献忠

PDF下载: PDF下载
内容摘要

本发明描述一种在图形处理单元中提高效能的系统和方法。实施方式通过在包含多个SIMD单元的着色器复合器中动态地激活/停用单个的SIMD实现在图形处理单元中的功率节约。单个SIMD的动态即时禁用和启用对于给定的处理应用中实现所需的效能和功率水平提供了灵活性。用这种方法,实施方式实现了图形处理单元的最优化使用。本发明的实施方式还在着色器复合器中实现SIMD的动态纹理(如中等纹理)时钟门控。实施方式通过按需提供时钟机制,关闭未使用的逻辑时钟树,以减少开关功率。用这种方法,实施方式增强时钟门控,以在SIMD为空闲(或未指派任何工作)时的持续时间内节约更多的开关功率。

权利要求书

权利要求书一种在计算系统中提高效能的方法,其包括:
确定处理应用所需的功率水平;以及
根据所述功率水平动态地启用和禁用在着色器复合器中的一个或多个单指令多数据单元(SIMD)。
如权利要求1所述的方法,还包括:
实时地配置多个寄存器以指示何时所述SIMD要被启用和禁用。
如权利要求1所述的方法,还包括:
确定所述处理应用所需的SIMD的数量。
如权利要求2所述的方法,还包括:
审查所配置的所述寄存器;以及
根据所述寄存器的配置分配工作线程。
如权利要求2所述的方法,还包括:
在所述配置之前服务一个或多个挂起的工作请求。
如权利要求1所述的方法,其中,所述动态地启用和禁用包括在所述SIMD的活动执行期间并且独立于与所述SIMD相关的着色器引擎中的活动性启用和禁用所述SIMD。
如权利要求2所述的方法,还包括:
对一个或多个要被禁用的SIMD禁用工作线程;以及
确定在所述要被禁用的SIMD中所有挂起的工作线程何时被清空。
如权利要求1所述的方法,其中,所述启用和禁用依赖于处理的工作负荷、应用请求和操作条件中的一个或多个。
如权利要求1所述的方法,进一步包括提供动态中等纹理时钟门控到所述SIMD。
如权利要求9所述的方法,进一步包括禁用时钟树到所述SIMD中的未使用的逻辑。
如权利要求1所述的方法,进一步包括按需提供计时到所述SIMD。
一种在计算系统中提高效能的系统,其包括:
第一模块,其被配置为确定处理应用的功率水平;以及
第二模块,其被配置为根据所述功率水平动态地启用和禁用在着色器复合器中的一个或多个单指令多数据单元(SIMD)。
如权利要求12所述的系统,其中,所述第二模块实时地配置多个寄存器来指示何时所述SIMD要被启用和禁用。
如权利要求13所述的系统,其中,所述第二模块被进一步配置为:
审查所配置的所述寄存器;以及
根据所述寄存器的配置分配工作线程。
如权利要求13所述的系统,其中,所述第二模块在所述配置之前服务一个或多个挂起的工作请求。
如权利要求12所述的系统,其中,所述第二模块进一步被配置为在所述SIMD的活动执行期间并且独立于与所述SIMD相关的着色器引擎中的活动性启用和禁用所述SIMD。
一种计算机可读介质,其存储适于由处理器执行的指令以:
确定处理应用所需的功率水平;以及
根据所述功率水平动态地启用和禁用在着色器复合器中的一个或多个单指令多数据单元(SIMD)。
如权利要求17所述的计算机可读介质,进一步包括适于由所述处理器执行的指令以:
实时地配置多个寄存器,以指示何时所述SIMD要被启用和禁用。
如权利要求17所述的计算机可读介质,进一步包括适于由所述处理器执行的指令以:
确定所述处理应用所需的SIMD的数量。
如权利要求18所述的计算机可读介质,进一步包括适于由所述处理器执行的指令以:
审查所配置的所述寄存器;以及
根据所述寄存器的配置分配工作线程。
一种在包括多个指令数据模块的处理器中管理工作分配的方法,其包括:
分析由所述处理器接收到的工作单元;
将所述多个模块内的活动的模块的利用水平与阈值进行比较;以及
根据所述分析和所述比较在所述指令数据模块中所选择的指令数据模块中遍布分布所述工作单元。
如权利要求21所述的方法,其中,所述比较包括确定所述活动的模块中的每个是否具有小于所述阈值中的一个或多个的利用水平。
如权利要求22所述的方法,进一步包括禁用其利用水平小于所述一个或多个阈值的所述活动的模块。
如权利要求21所述的方法,其中,所述分布包括分配所述工作单元的部分给具有小于所述阈值中的一个或多个的利用水平的活动的模块。
如权利要求21所述的方法,其中,所述分布进一步包括启用非活动的模块。
如权利要求25所述的方法,进一步包括当所述活动的模块的利用水平大于所述阈值中的一个或多个时分配所述工作单元中的部分给所启用的所述模块。
如权利要求26所述的方法,其中,所述分布实现所启用的所述模块中的一个或多个的充分利用。
如权利要求21所述的方法,其中,所述比较包括计数在所述指令数据模块内执行的指令,所述指令代表所述工作单元。
如权利要求28所述的方法,其中,所述计数在预定的时间周期发生。
如权利要求29所述的方法,其中,所述指令包括来自包括算术逻辑单元(ALU)指令和取指令的组中的至少一个。
如权利要求21所述的方法,其中,所述利用水平包括来自包括当前利用和预测的利用的所述组中的至少一个。

说明书

说明书图形处理器中SIMD单元的动态启用和禁用
技术领域
本发明的实施方式总体涉及在图形处理单元(GPU)中的单指令多数据(SIMD)单元的控制。
背景技术
图形处理器的算术单元包括算术逻辑单元(ALU)或配置为执行整数、逻辑和单/双精度浮点运算的算术单元。
图形处理器可以包括成阵列的如被称为着色器核心的算术单元。着色器核心包括着色器管线(SP)。为了实现更高的效能,多个SP可以被配置为作为叠式SP一起工作。SP可以配置为成阵列的四芯管(QP)和SIMD。每个SIMD的所有的着色器单元在不同组的原点、顶点或像素值上可以有条件地执行相同的ALU指令。以这种方式,SIMD提供算术处理功率到图形处理器。
在传统的具有叠式SP的图形处理器中,可以静态地启用或禁用SIMD。例如,如果SP被确定为有故障,引线掩码(fuse mask)可以被编程为禁用故障SP。相似地,用户可存取寄存器可以被编程为禁用/启用特定的SIMD或成组的SIMD。然而,在新的工作请求发送到SIMD之前,这种方法需要图形处理器的图形管道刷新,且需要将新值重新编程到刷新的图形管道中。
通常的假设是随着SIMD数量的相应增加,着色器引擎的效能提高。然而,这种陈述仅仅在有限的情况下是真实的,如在繁重的工作负荷条件下。对于经常出现的情况,在较少繁重的工作负荷的情况下,着色器引擎的效能不一定随着SIMD的数目的增加而增加。在这种情况下,如果所有的SIMD被启用,由于未充分利用的SIMD(即SIMD具有较轻的负荷或没有负荷)保持启用和激活状态,所以功率被浪费。
传统的图形系统简单地将工作负荷在遍布于所使用的着色器引擎内的所有的SIMD进行划分以用于特定的操作。然而,这种方法是极端地功率低效的。低效发生的原因是没有确定在不影响系统效能的情况下是否可以用较少的SIMD来执行操作。因此,传统的系统保持着色器引擎内的所有的SIMD是活动的,无论它们是否需要执行操作。
如上所述,当SIMD被启用时,它们消耗功率。即使处于闲置状态,SIMD仍然消耗最小的、但量可测量的功率。因此,保持所有可用的SIMD启用,即使未使用的或未被充分利用,也浪费功率。能够将工作负荷压缩在尽可能最小数目的SIMD中也将是有利的。这种方法由于给每一个可用的SIMD提供工作负荷而可以减少不必要的开销(overhead)。
此外,在传统的方法中,在着色器复合器(shader complex)中的所有SIMD单元的时钟或同时启用或同时禁用。在许多应用中,并不是所有的SIMD都被分配工作的。然而,传统的方法持续主动地提供时钟信号给这些SIMD。该方法会增加图形处理器的功率消耗,并且是低效的。
因此,需要能够实现SIMD的动态控制并在SIMD可能不执行处理任务时减少图形处理器的功率消耗的系统和方法。
发明内容
本发明的实施方式通过动态地激活和停用在包括多个SIMD的着色器复合器中的单个的SIMD而实现在图形处理单元中节约功率。单个的SIMD的动态即时禁用和启用在实现给定的处理应用所需的效能和功率水平方面提供了灵活性。以这种方式,可以实现图形处理单元的最佳使用。
更具体地,本发明的实施方式提供一种每瓦负荷均衡技术(LBPW)。在一个实施中,这种LBPW技术监控算术逻辑单元(ALU)指令的数目并提取每个SIMD内执行的指令。此外,新分配的线程负荷(即波阵面)进行排队并被监控。这种监控用于评估SIMD的当前和未来的利用。根据该方案,着色器引擎中只有实际需要或预期将处理给定工作负荷的SIMD保持激活状态。不需要的SIMD被停用。通过停用不需要的SIMD,降低功率消耗。作为额外的益处,本发明的实施方式在不显著影响系统性能的情况下提高效能/瓦(performance per watt)。
在本发明的又一个实施方式中,减少图形芯片的di/dt,以提高可靠性和在较低的电压下提高频率。这种减少影响材料账单,并允许使用较便宜的元件。
本发明的实施方式还实现在着色器复合器中的SIMD的动态纹理(grain)(例如中等纹理)时钟门控。通过按需提供时钟机制以关闭未使用的逻辑时钟树,从而减少开关功率(switching power)。在这种方式中,时钟门控被增强,从而在SIMD是空闲(或者没有分配工作)的时间阶段节约更多的开关功率。
本发明的实施方式可以用于任何计算机系统(例如,传统的计算机(台式机,笔记本等)系统、计算设备、娱乐系统、媒体系统、游戏系统、通信装置、个人数字助理),或任何使用一个或多个处理器的系统。
由于开发的用于一种类型的处理器的代码用很少或不用额外的努力可以在另一种类型的处理器中有效利用,因而本发明的实施方式可用于例如具有多核的CPU、GPU、和/或GPGPU的处理系统。例如,所开发的用于在GPU执行的代码,也称为GPU内核,使用本发明的实施方式可被配置在CPU执行。
附图说明
被并入说明书中并构成本说明书的一部分的附图图解了本发明的实施方式,并连同上面给出的总体描述和下面给出的实施方式的详细描述用于解释本发明的原理。在附图中:
图1A示出根据实施方式所述的着色器复合器。
图1B‑1D示出根据实施方式所述的可以被配置为控制SIMD的寄存器。
图2示出根据实施方式所述的示例性时序图。
图3A‑3B示出根据实施方式所述的用于启用和禁用SIMD的示例性的寄存器设置。
图3C是根据实施方式所述的示例性的操作流程图。
图4A‑4F示出根据实施方式所述的示例性的效能图表。
图5A是没有均衡化的传统的SIMD负荷行为的示意图。
图5B是根据本发明的实施方式所述的SIMD负荷行为的示意图。
图6是根据本发明的实施方式所述的示例性的用于评估SIMD活动性的可编程查找表的示意图。
图7是根据本发明的实施方式所述的用于执行SIMD负荷均衡化的示例性方法的示例性流程图。
图8是用于进行图7所示的先入先出(FIFO)采样的更详细的流程图。
图9是图7所示的方法步骤的更详细的流程图。
图10示出根据本发明的实施方式所述的用于动态纹理时钟门控的示例性的系统。
具体实施方式
如上所讨论的,本发明的实施方式通过动态地激活和停用着色器复合器中单个的SIMD实现功率节约。
对图形处理单元的下降的效能需要或为了降低散热设计功率(TDP),实施方式动态地禁用SIMD。此外,实施方式启用已禁用的SIMD用于高效能应用而无需刷新图形处理单元的图形管道。这在不刷新SP的情况下通过动态开关若干SIMD而实现。在某种程度上通过适当地编程设计成组的寄存器实现动态控制(或开关)。
在实施方式中,着色器管内插器(SPI)根据被配置为动态地指示哪些SIMD被激活的寄存器分配新的工作(或线程)。在一个实施方式中,在当前未完成的请求(或挂起的请求)由被禁用的SIMD提供服务之后,这种动态配置生效。一旦被禁用,没有新的来自SPI的请求会通过禁用的SIMD,且可捕获逻辑(harvestable logic)的时钟(如,sp4‑vsp和纹理时钟)关闭,以降低图形处理单元的TDP。当禁用的SIMD启用时,SPI将再次开始分配工作给启用的SIMD,提供图形处理单元更高的效能。
在一个实施方式中,这些SIMD和一些要被激活和/停用的SIMD的激活和停用依赖于各种因素,如操作条件(例如,温度、电流、CAC),应用(例如,节约能源的可变的利用)、工作负荷、或其他需求(如,效能需求,功率需求)。
SIMD的动态控制
图1A示出示例性的着色器复合器100,其中本发明的实施方式得到实现。如上所讨论的,着色器复合器可以包括着色器管道(SP)。为了实现更高的效能,多个SP可以被配置为作为叠式SP一起工作。SP可以构造成四管(QP)和SIMD的阵列186。每个SIMD的所有的着色单元,可以有条件地在不同的组的原点、顶点或像素值上执行相同的ALU指令。在一个实施方式中,着色器复合器100包括多个SIMD和2个着色器引擎,即,着色器引擎120和着色器引擎122。着色器复合器100还包括纹理高速缓存130(或2级纹理高速缓存)、多个着色器管内插器(SPI)和顶点高速缓存。着色器复合器100还包括多个冗余着色器开关(RSS)、着色器的时序控制器(SQ)、1级纹理高速缓存(TCP)和纹理数据逻辑(TD)。(虽然为清楚起见,示出了数量较少的SIMD,但是应当理解,本发明并不限定于图示的实施方式,且着色器复合器100是可扩展的并且可以包括任意数量的SIMD。)
如上所讨论的,本发明的实施方式动态地开关若干SIMD而不刷新SP。这样的动态控制(或开关)在某种程度上通过适当地编程成组的寄存器来实现。在一个实施方式中,SPI根据被配置为动态地指示哪些SIMD被激活的寄存器,分配新的工作(或工作线程)。
下节讨论控制SIMD和QP掩码的示例性寄存器。
图1B示出命名为“CC_GC_SHADER_PIPE_CONFIG.”的寄存器。在一实施方式中,根据引信掩码设置,该寄存器通过复位/配置单元(RCU)编程。作为示例,该寄存器可以被编程用于捕获的目的。
同样地,示于图1C的“RCU_CG_GC_SHADER_PIPE”和“RCU_CC_GC_SHADER_PIPE1”寄存器是“CC_GC_SHADER_PIPE_CONFIG”寄存器的经阴影处理(shadow)的版本。这些寄存器基于引信掩码或SMC微码被编程。
示于图1D中的寄存器“GC_USER_SHADER_PIPE_CONFIG,”通过用户可编程以限制操作SIMD(和/或QP)的数目。该寄存器可以是通过从图形寄存器总线管理(GRBM)接受的每个索引的着色器引擎映射并经阴影处理的存储器。
“CC_GC_SHADER_PIPE_CONFIG”的寄存器设置(图1B)在性质上是静态的,且每个芯片编程一次。与此相反,“GC_USER_SHADER_PIPEC_ONFIG”寄存器的寄存器设置可以在任何时间动态(即,即时)编程。本发明的实施方式配置“GC_USER_SHADER_PIPE_CONFIG”寄存器用于SIMD的动态控制。
在实施方式中“CC_GC_SHADER_PIPE_CONFIG”寄存器和“GC_USER_SHADER_PIPE_CONFIG”寄存器的组合ORed值由SPI使用以确定(即时)要被分配新的线程(工作)的启用的SIMD。在一个实施方式中,在图形管道的所有其他的设计模块使用“CC_GC_SHADER_PIPE_CONFIG”寄存器以对非活动的SIMD/QP静态地禁用这些模块。在一实施方式中,当这样的操作会导致不合乎期望的着色器管线的“冻结”时,这样的设计模块不需要审查“GC_USER_SHADER_PIPE_CONFIG”寄存器。
参照图2示出的示例性时序图,SIMD的控制可以独立于着色器引擎的活动性而实现。即使特定的SIMD正忙于执行指令,实施方式在SIMD的活动执行期间可以禁用该SIMD。例如,参照图2,在SIMD0的活动执行期间,SIMD0可以被禁用。
在并不意图限制本发明的实施方式中,直到禁用(或停用)的SIMD重新启用,SPI才分配工作给该禁用(或停用)的SIMD。当其中的当前工作和在工作序列管道中的挂起的工作完成时,该禁用的SIMD自然引流(drain)工作线程。一旦清空,动态纹理时钟门控(以下详细说明)可以禁用时钟信号到在禁用的SIMD的逻辑。在禁用的SIMD重新启用时,SPI再次提交新的线程(工作请求)到启用的SIMD。SIMD控制设置通过GRBM寄存器的写操作被编程,且可以通过驱动程序或SMC微码动态地设置。
从系统设计的角度来看,SIMD可以在任何时间(即,即时)被启用或禁用。从能源节约的角度来看,从SIMD启用切换到SIMD禁用状态的时间可以依赖于SIMD管道中的挂起的工作负荷。当SPI准备好分配线程到SIMD时,使禁用的SIMD启用所需要的时间(或反之亦然)与写操作GRBM寄存器速度相当。作为示例,对于这两种情况,所需要的时间可以是几微秒。
示例性的操作方案
以下是其中使用本发明和动态控制SIMD的实施方式的示例性操作方案。
A.基于条件的控制
SIMD的动态控制会依赖条件。这样的示例性的条件包括,但不限于:
(1)温度行程:当外部源指示更高的处理器温度,并且有必要降低(或当适用时提高)功率消耗时。
(2)电流行程:当外部源指示更高的处理器电流,并且有必要降低(或当适用时提高)功率消耗时。
(3)CAC管理:当芯片上CAC管理器通知增加的处理活动,并做出通过启用更多SIMD以提高效能的决定时,或当芯片上CAC管理器通知减少的活动,并做出通过禁用若干SIMD而不降低效能以减少功率的决定时。
B.基于应用的控制
SIMD的动态控制也可以依赖于应用。这样的示范性应用包括那些允许可变的利用以节约能源的应用。例如,根据本实施方式,从更多的处理器密集型应用(例如,3D图形处理)到较不密集的应用(例如,DVD回放)的用户应用模式中检测的变化可以使用于SIMD的动态控制。例如,通过用户界面(UI)输入机构或应用编程接口(API)的用户和应用程序输入也可被采用以提供SIMD的动态控制。这些输入机构可以用于处理应用设置所需的功率水平。这些输入机制可以通过软件(如应用或操作系统)、固件、硬件或它们的各种组合来启用。C.基于工作负荷的控制
SIMD的动态控制可依赖于工作负荷。举例而言,SIMD的动态控制可以根据下面列出的非限制性的示例性的GPU条件中的一个或多个被触发。
(1)静态筛选(screen)条件(无负荷)(<TDP的5%)
(2)空闲条件(非常轻的负荷)(<TDP的10%)
(3)中等的负荷条件(<TDP的50%)
(4)重的负荷条件(<TDP的90%)
(a)ALU限制
(b)纹理提取限制
(c)内存吞吐量限制
(5)非常重的负荷条件(>TDP的90%)
D.基于请求的控制
SIMD的动态控制可以依赖于请求,并依赖于效能需求以及功率需求。驱动程序监控GPU TDP,以及接近最大TDP负荷时,禁用SIMD以降低TDP。使用没有GPU频率和电压调整可以实现这种SIMD的禁用。
可以使用驱动程序和/或SMU管理的SMC微码检测和实现上述示例性的控制条件。实施方式也可以允许使用自我控制所启用的SIMD数目的专用控件。
对于启用和禁用SIMD的示例性寄存器设置
在上述条件模式(或任何其他情况)中的任何一种中,驱动程序能写入寄存器“GC_USER_SHADER_PIPE_CONFIG”的位字段(例如,位字段[31:16])以禁用和启用SIMD。如图3A所示,写入“0”启用SIMD,以及写入“1”禁用SIMD。
图形处理单元可以包括两个着色器引擎(例如,SE0和SE1)。在这种情况下,对于这些着色器引擎,实施方式可以启用和禁用不同的SIMD。这可以通过使用如图3B所示的GRBM索引寄存器分开编程着色器引擎而实现。
参考图3B,
(1)要写入SE0(即着色器引擎)的“GC_USER_SHADER_PIPE_CONFIG”,可使用下面的示例性指令:

(3)要写入到SE0和SE1(即,着色器引擎1)两者的“GC_USER_SHADER_PIPE_CONFIG”,可使用下面的示例性指令:
mmGC_USER_SHADER_PIPE_CONFIG=0xFC0C0000
//禁用SE0和SE1两者的SIMD3 & SIMD2
每个着色器引擎(例如,SE0,SE1,等)启用的SIMD可以即时改变,只要对每个正在被应用工作的子集中的每个着色器引擎,至少一个SIMD留下启用。换句话说,例如,如果SIMD被划分用于不同类型的工作,即,镶嵌着色器每边两个SIMD,且其余SIMD共享顶点和像素之间的工作,那么,用于镶嵌着色器的两个SIMD中的一个可被留下启用,且用于像素和顶点的剩余的SIMD中的一个启用。
图3C是示出根据一实施方式所述的示例性的整体操作的流程图。
在步骤302中,确定所给定的处理操作所需的效能水平。作为示例,这样的效能水平可以依赖于应用、条件、工作负荷、或请求。
在步骤304中,一个或多个寄存器被配置以启用和禁用在着色器引擎中不同的SIMD。作为示例,这样的结构可以通过使用如图3B所示的GRBM索引寄存器分开地编程着色器引擎而实现。
在步骤306中,根据在步骤304中配置的寄存器启用或禁用一个或多个寄存器。
下节显示可以帮助实施方式在效能和功率之间做出折衷决策的示范性的图表。
功率节约与效能影响
当SIMD启用时,它消耗功率。对于增加的处理活动,SIMD会消耗更多的功率。相反地,对于较少的活动,SIMD将消耗较少的功率。处于空闲状态时,基于SIMD的尺寸(例如,面积、单元计数等),SIMD将消耗最少的,但是量可以测量的功率。
图4A的图表显示核心功率随着启用的SIMD的数量的增加而线性增加。该图表描绘了SIMD限制的应用的情况。换句话说,应用是消耗所有可用的SIMD资源的功率密集型的应用。
通常的假设是图形处理单元的效能将随着SIMD的数量的增加而增加。然而,这一陈述对于密集的处理任务通常是真实的。在一些情况下,根据负荷条件,传统的方法可能会浪费功率,因为即使是轻微的处理负荷,这些方法也保持所有的SIMD启用。
以下各节讨论用于不同类型的应用的示例性的SIMD效能/瓦图表。
(1)具有理想负荷的应用
图4B示意用于具有理想负荷的应用的效能/瓦图表。如图4B所示,随着SIMD的数目增加,图形处理单元的效能/瓦线性增加,具有恒定的每SIMD的功率消耗。
(2)具有均衡负荷的应用
图4C说明用于具有均衡负荷的应用的效能/瓦图表。如图4C所示,随着SIMD的数目增加,效能/瓦被维持。
(3)具有实际负荷的应用
通常,在现实的情况下,处理负荷是使得效能/瓦特性介于理想负荷特性和均衡负荷特性负之间。如图4D所示,随着SIMD增加,效能/瓦首先增加,但之后达到饱和并保持在恒定的水平或甚至可能降低。当效能/瓦降低时,更多的功率以相对较低的效能增益被消耗。这可以从图4E和4F分别所示的轻微和中等/繁重的负荷图表中看出。
图5A是传统的没有均衡化的SIMD负荷行为的图解说明500。本发明的实施方式还使在单个的SIMD中的利用最大化。通过使利用最大化,减少相应SIMD的附加周期,从而导致额外的功率节约。
当传统SQ块发出指令到相应的SIMD时,对应于该SIMD的忙信号被传输,持续时间通常为13个时钟周期502。这13个周期之后是四个周期的工作周期504,然后接着是25个周期的空闲或瀑布周期506。图5A示出其中在一阵列中(类似于图1A的阵列186)的所有的SIMD被激活,但每个SIMD没有得到充分利用的示例。在该示例中,每个SIMD通过仅仅空闲或部分的瀑布将浪费38个附加周期(13+25),如图5A所示。
然而,附加周期的百分比随着更多指令被发送到每个SIMD而减少,导致管道内的磁泡(bubble)较少,并因此导致更好地利用。图5B是根据本发明的原理提高利用的示意图。
图5B是根据本发明的实施方式所述的SIMD负荷行为的说明示意图508。图5B示出其中在阵列186中只有两个SIMD被启用的示例。然而,在图5B中,这两个SIMD执行与上述图5A中所有可用的SIMD执行的工作数量相同的工作。
在图5B中,根据使每个SIMD的利用最大化的负荷方案,空闲周期510包括13个周期。空闲周期510之后接着是包括100个工作的周期的工作周期512。工作周期512之后是持续25个周期的空闲周期514。
在图5B中,38个附加周期仍然被浪费,但它们仅在两个SIMD中浪费,而不是在该阵列的可用SIMD中的每一个中浪费。此外,指令本地回路(back to back)地发出利用瀑布周期以压缩前面的指令的执行。这两个因素相结合大大提高了活动的SIMD的有效的利用周期。因此,图5B的利用配置执行相同数量的工作,提供相同的效能水平,但消耗明显更少的功率。正如图5B的示例性实施方式所示的,使每个启用的SIMD的利用最大化节约功率。如果能够实现功率节约而不降低整体性能,则芯片效率(即效能/瓦)将提高。
图6是示出根据本发明的实施方式所述的用于评估SIMD利用的简化的可编程查找表600的示意图。在本发明的实施方式中,SIMD利用水平通过在预定的时间周期内计数由用于每个SIMD的由SQ发出的指令而测量。
使用计数指令的示范性的方法,可以推断特定的SIMD的利用的定量分析。对阵列186内的每个SIMD,执行该处理,且结果在预定的时间周期内被平均。在预定的时间周期内所有启用的SIMD的平均给出了每个启用的SIMD的总利用的适当的近似值。然后,将平均利用数值与查找表600中的值比较。根据查找表值,做出判定以启用附加SIMD或禁用当前活动的SIMD以达到最佳利用水平。
本发明实施方式涉及在其目前的状态的SIMD的利用,还包括关于SIMD的未来状态的预测。每个SIMD执行多种类型的指令,这些指令分类为两部分:(a)纹理获取相关指令和(b)ALU相关指令。因此,使用本发明的技术,硬件和固件的控制器的专用组合监控并测量ALU指令的执行并提取每个SIMD内的指令。
对于当前使用率,在每个SIMD中相关于ALU指令和取指令的信息每时每刻(clock by clock)被捕获且被动态地计算。也就是说,在预定的时间周期中,在每个SIMD中被执行的ALU指令和取指令的数目被计数。这个数字代表当前的利用/SIMD。当在每一个SIMD中计算ALU指令和取指令时,其他的活动,如在管道中发生的波阵面和线程分配,在未来周期中在SIMD内排队等待执行。
例如,这些波阵面和线程队列可以分别驻留在SPI模块102和/或SQ内,因为这两种模块都发挥缓冲工作负荷的作用。正如上面指出的,SPI模块102根据着色器的类型生成波阵面。例如,对于给定的着色器类型,SPI模块102将指明对特定的SIMD要执行具体类型的波阵面。多线程从SQ内每个波阵面中生成。
上述信息与资料表600中的条目(entry)相比。表600仅仅是示出Δ(delta)表的可能的实施方式。例如,此表600包括利用下限602、利用上限604、和SIMD%增量(Δ)606。例如,SIMD%增量606可以是正的或负的(即,指示递减)。通过使用预定的表列值,如在表600中的那些表列值,SIMD的利用被评估且与可用的范围相比。然后,使用该比较以确定是否有必要启用更多SIMD或禁用一些活动的SIMD。
当确定需要多少SIMD执行工作时,对未来的SIMD操作也可以做出预测和评估。虽然上面讨论的实施方式的重点放在ALU指令和取指令,但本发明并不限于此。其他类型的指令也可用于确定SIMD的利用,如矢量ALU、标量ALU、纹理提取、LDS和其他各种指令。
在表600中,如果在运行时间的某一点上,在评估期间已经有20个(作为示例)SIMD启用,利用数值结果为30%。该数值属于范围608内;图1具有13个SIMD/SE,并有2个SE,因此总共有26个SIMD在图示的系统中。因此,由控制器所采取的行动根据“SIMD(%)增量”一栏将禁用40%已启用的SIMD。因此8个SIMD(20个活动的SIMD*40%的减少)将被关闭,以迫使核心努力将更多的波阵面聚集到剩余的12个SIMD,从而达到如前面讨论过的更高的利用而没有任何实质的性能影响。控制器将继续监控系统利用,并适当地匹配启用的资源以满足未来的工作负荷。在上述的示例中,控制器将推动系统会聚在其中每个已启用的SIMD是(80‑90%)被利用的范围“4”。此外,通过调节评估周期的长度和Δ表的值,控制器动作的间隔尺寸(granularity)可以变化以匹配现实世界的应用。
图7是根据本发明的一个实施方式所述的执行SIMD负荷均衡化的方法700的示例性的流程图。在图7中,初始化开始于步骤702。在步骤702中,芯片撤出(come out of)重置,且根据ALU和取指令初始化计数表600。例如,这可以发生在RLC的暂时存储寄存器中。表600将利用范围(0‑100%)分成更小的间隔,并对于特定的利用间隔指定要激活或停用的SIMD的数量。
在步骤704中,发生中断等待。在内部循环(即快速循环)706,对挂起的波阵面和线程计数进行采样。这是在表示挂起的波阵面计数SPI模块102内通过FIFO实现的,并且表示挂起的线程计数的SQ FIFO可以被采样以提取SIMD未来预期数据。这些数据可以进行分析以确定趋势是否表明SIMD利用可以增加或减少。预定数目(例如10个)的样本可以采样并参数化。一旦样本的数目达到预定的最大数目时,该处理转到主循环607。在图6中示出示例性的主循环607的额外的细节并在下文中将要讨论。
返回到图7,在内循环706和主循环607结束之后,方法700沿着路径708返回到中断步骤704。作为内循环706的一部分,图8的采样步骤800被执行。
图8是用于执行FIFO采样的示例性方法800的流程图。例如,用FIFO采样方法800采样在FIFO中的条目(entry)的数量,并通过执行上述的趋势数据挖掘(mining)确定未来的趋势。这种趋势数据作为次要因素被使用,以评估SIMD的利用。在方法800中,在步骤802中SQ被读取,以显示用于阵列186内的每个SIMD的挂起的线程。比较该数据,以确定它是否大于(步骤804)或小于(步骤806)先前的读数808,从而确定趋势。如果趋势是上升的(例如,通过比较来自SPIM 100的数据),则上升标志可被设置。如果是较小的,另一标志(向下)可以被设置。此数据作为最后的读数810被存储。
如上所述,趋势是被使用以确定对给定的工作负荷所需的最佳数目SIMD的一个因素。例如,如果当前的利用是零,而预计的未来的利用是30%,则90%的SIMD可以被停用。另一方面,如果当前的利用为零,而未来的趋势表明80%以上的工作,那么90%的当前SIMD不能被停用,而不会影响效能,因此即使当前的利用是非常低,SIMD并没有减少。
图9是在图7中所示的主循环步骤607的更详细的流程图。方法900聚集来自其他步骤的数据,并使用这些数据通过SIMD的利用状况确定过程来执行必要的决定。在步骤902中,除其他外,还评估被启用的SIMD的数目。该数值是不固定的,并可以取决于,例如,捕获或缺陷的公差或故意降低的配置。
更具体地说,在步骤902中,对于着色器引擎114和116中的每一个,系统建立SIMD的基线,该基线最好包括在优化过程中。如果着色器的类型受限于SIMD的子集而不是所有的SIMD,则该子集从SIMD的基线掩码除去,并不被考虑在优化过程中。
在步骤904中,下面的示例性的操作被执行:

在步骤904中,基线Δ最大值表明算法将启用或禁用。接着,查找对应于ALU计数的Δ值。Δ值表示相对于当前活动的SIMD的数量必须被激活/停用以均衡负荷的SIMD的百分比。Δ具有从0‑127的值。保守地,可以选择其中促进激活更多SIMD的较大的Δ值,或选择停用较少SIMD的最小值。
如果Δ在中性阈值以上,并且更多的SIMD要被激活,则计算SIMD的数量,并将其在可用的着色器引擎之间均衡。如果Δ低于中性阈值且更多的SIMD要被停用,则通过检查工作负荷趋势以及挂起的工作负荷队列的状态,做出另外的(二级)确定以确保未来负荷有足够的SIMD。例如,如果波阵面计数和子句(线程)数量显示减少或稳定趋势并报告为阈值之下,则停用可能发生。如果任一个显示递增的趋势或者报告在阈值以上,则停用不发生,并为下一次迭代保留用于清空。
在步骤904中若Δ超过预定的阈值,则执行步骤906。在步骤906中,确定和应用要被激活的SIMD的数目。如果在步骤904的Δ小于预定阈值,则该技术前进到步骤907。在步骤907中,根据前面描述的因素做出决定SIMD的减少数量,并且如果需要,则在步骤908中采取动作。步骤908与步骤906类似,并因此不对其另外进行详细讨论。
上述的LBPW讨论的技术还可以帮助减少di/dt的负面影响。因此,可以提高电压调节器的噪声容限,允许使用低成本的调节器。如果电流变化太快,频率将需要被降低来补偿。频率降低将导致效能下降。如果di/dt减少,则频率可以增加,从而提高效能。di/dt的减少也可以允许减少的VDDC操作从而导致较低的动态功率消耗。
本发明的实施方式的另外的益处是对于给定的热设计功率(TDP)方案,促进效能/瓦的最大化。着色器计算的马力可按照TDP钳位调节。实现这一目标的示范性的方法包括限定框。如在本领域的技术人员所理解的,限定框是在合并过程期间当限定芯片的操作条件时所使用的技术。例如,芯片可以有产生在不同市场的SKU的不同的配置,每个SKU有用于TDP的限定框。在市场的SKU中的所有不同变化有不同的TDP值(SKU的限定框)。本发明的LBPW技术有助于对给定的限定框实现最佳的效能/瓦。对每一种操作的模式的节约
从图4A‑4F的图表可以看出,根据本实施方式的功率节约将从应用到应用而变化。例如,在许多应用中,实施方式节约功率而不影响效能。这些应用包括DVD重放应用,该应用中SIMD处理负荷可能是轻微的。
作为纯粹说明性的非限制性的示例,在具有“eclk=875MHz”和“mclk=90MHz”的AMD R770处理器,当负荷重时,每一个的SIMD功耗为约4.5瓦。根据本实施方式,负荷较轻时,由于时钟门控和动态SIMD控制,功率消耗将减少。例如,如果必需将功率钳位到一定水平,则在重负荷时减少SIMD的数量将产生显著的节约。在一实施方式中,应用也可以判断在图形处理单元被启用或禁用的SIMD的数量。
动态纹理时钟门控
如上所讨论的,在传统的方法中,在着色器复合器中所有SIMD单元的时钟同时启用或者同时禁用。在许多应用中,并不是所有的SIMD被分配工作。然而,传统的方法继续主动提供时钟信号给这些SIMD。这种方法增加图形处理单元的功率消耗,并且是低效的。传统的方法可以包括用于着色器复合器块的静态时钟门控,在该着色器复合器块中,当请求由SPI启动时,着色器复合器块的时钟一个接一个地开启,具有di/dt(即,电流的变化率)避免计数延迟。一旦启动,即使在该着色器复合器中的许多块没有工作时,时钟也保持整个着色器复合器的计时。换言之,在任何给定的时间内,只有少数SIMD是活动的。一旦工作由着色器复合器完成,自动使用di/dt避免计数延迟关闭时钟。因此,在传统的方法中,时钟门控在本质上是静态的,并且将着色器复合器作为单个的系统。
与传统的方法相反,本发明的实施方式实现在着色器复合器中的单个的SIMD的动态纹理(例如,中纹理)时钟门控。通过关闭未使用的逻辑的时钟树并通过按需提供时钟机制(例如,真实的按需时钟机制)减少开关功率。以这种方式,在SIMD空闲(或没有指派工作)的时间内,可以提高时钟门控以节约开关功率。
本发明的实施方式还包括对着色器复合器中的每个SIMD的时钟的动态控制。每个SIMD被作为着色器复合器的管理其自己的时钟的子系统。在SIMD中还提供了用于每块/并列显示(block/tile)的动态控制。在实际的工作到达SIMD之前时钟可以启动并且可保持启用状态,直到所有的工作已经由SIMD完成。
本发明的实施方式的各个方面,可以通过软件、固件、硬件(诸如,由软件(例如,Verilog或硬件描述语言的指令)表示的硬件)、或它们的组合来实现。图1A是示例的计算机系统的示意图,在该系统中,本发明或本发明的部分可以作为计算机可读代码被实现。应当指出,本发明的各种实施方式的模拟、合成和/或制造中可以通过使用计算机可读代码被部分地实现,该计算机可读代码包括通常的编程语言(如C或C++),诸如,例如,Verilog HDL、VHDL、Altera HDL(AHDL)等硬件描述语言(HDL),或其他的可用编程和/或原理图捕捉工具(如电路捕捉工具)。该计算机可读代码可以被布置在任何已知的计算机可用介质中,该介质包括半导体、磁盘、光盘(如CD‑ROM,DVD‑ROM)和作为在计算机可用的(例如,可读的)传输介质(如载波或任何其它介质,诸如,例如,数字的、光学的、或者基于模拟的介质)实现的计算机数据信号。因此,可以在通信网络对代码进行传输,该通信网络包括互联网和网络。应当理解,由上面描述的系统和技术完成的功能和/或提供的结构可以被包含在核心(例如GPU核心)中,该核心实现于程序代码中,并且可以转化为硬件作为集成电路生产的一部分。总结
可以理解的,具体实施方式部分而不是发明内容和摘要部分,其目的是用于解释权利要求。发明内容和摘要部分可以阐述如发明者所构思的本发明的一个或多个示例性实施方式,但不是所有的示例性实施方式,因此,并不意图以任何方式限制本发明和所附的权利要求。
上面已经通过示出实现特定功能及其关系的功能构件块帮助描述了本发明。为便于说明,这些功能构件块的约束条件在此已被任意定义。只要其特定的功能和其中的关系被适当地执行,可以定义替代的边界。
特定实施方式的上述描述将充分地揭示本发明的通常的性质,通过应用本技术领域的知识,在不脱离本发明的总体设想的情况下,其他的性质可以很容易地修改和/或匹配这些特定实施方式的各种应用,而无需过多的实验。因此,根据本文提出的教导和指导,这样的匹配和修改的目的是被涵盖在所公开的实施方式的意义和等同范围之内。应当理解,本文的措辞或术语是用于描述而不是限制的目的,例如,本说明书中的术语或措辞是通过本领域技术人员根据该教导和指导来理解的。
本发明的广泛性和范围不应该由任何上述示例性实施方式限制,而应仅仅根据随附的权利要求及其等同主张得到限定。

图形处理器中SIMD单元的动态启用和禁用.pdf_第1页
第1页 / 共32页
图形处理器中SIMD单元的动态启用和禁用.pdf_第2页
第2页 / 共32页
图形处理器中SIMD单元的动态启用和禁用.pdf_第3页
第3页 / 共32页
点击查看更多>>
资源描述

《图形处理器中SIMD单元的动态启用和禁用.pdf》由会员分享,可在线阅读,更多相关《图形处理器中SIMD单元的动态启用和禁用.pdf(32页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103080899 A(43)申请公布日 2013.05.01CN103080899A*CN103080899A*(21)申请号 201180035148.3(22)申请日 2011.07.1161/363,856 2010.07.13 US12/839,962 2010.07.20 USG06F 9/30(2006.01)G06F 9/38(2006.01)G06F 1/32(2006.01)G06T 15/00(2006.01)(71)申请人超威半导体公司地址美国加利福尼亚州(72)发明人图沙尔K沙阿拉沙德奥雷费基迈克尔J曼特 布莱恩恩贝林(74)专利代理机构上海。

2、胜康律师事务所 31263代理人李献忠(54) 发明名称图形处理器中SIMD单元的动态启用和禁用(57) 摘要本发明描述一种在图形处理单元中提高效能的系统和方法。实施方式通过在包含多个SIMD单元的着色器复合器中动态地激活/停用单个的SIMD实现在图形处理单元中的功率节约。单个SIMD的动态即时禁用和启用对于给定的处理应用中实现所需的效能和功率水平提供了灵活性。用这种方法,实施方式实现了图形处理单元的最优化使用。本发明的实施方式还在着色器复合器中实现SIMD的动态纹理(如中等纹理)时钟门控。实施方式通过按需提供时钟机制,关闭未使用的逻辑时钟树,以减少开关功率。用这种方法,实施方式增强时钟门控,。

3、以在SIMD为空闲(或未指派任何工作)时的持续时间内节约更多的开关功率。(30)优先权数据(85)PCT申请进入国家阶段日2013.03.01(86)PCT申请的申请数据PCT/US2011/043509 2011.07.11(87)PCT申请的公布数据WO2012/009252 EN 2012.01.19(51)Int.Cl.权利要求书2页 说明书11页 附图18页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书11页 附图18页(10)申请公布号 CN 103080899 ACN 103080899 A1/2页21.一种在计算系统中提高效能的方法,其包括:确定。

4、处理应用所需的功率水平;以及根据所述功率水平动态地启用和禁用在着色器复合器中的一个或多个单指令多数据单元(SIMD)。2.如权利要求1所述的方法,还包括:实时地配置多个寄存器以指示何时所述SIMD要被启用和禁用。3.如权利要求1所述的方法,还包括:确定所述处理应用所需的SIMD的数量。4.如权利要求2所述的方法,还包括:审查所配置的所述寄存器;以及根据所述寄存器的配置分配工作线程。5.如权利要求2所述的方法,还包括:在所述配置之前服务一个或多个挂起的工作请求。6.如权利要求1所述的方法,其中,所述动态地启用和禁用包括在所述SIMD的活动执行期间并且独立于与所述SIMD相关的着色器引擎中的活动性。

5、启用和禁用所述SIMD。7.如权利要求2所述的方法,还包括:对一个或多个要被禁用的SIMD禁用工作线程;以及确定在所述要被禁用的SIMD中所有挂起的工作线程何时被清空。8.如权利要求1所述的方法,其中,所述启用和禁用依赖于处理的工作负荷、应用请求和操作条件中的一个或多个。9.如权利要求1所述的方法,进一步包括提供动态中等纹理时钟门控到所述SIMD。10.如权利要求9所述的方法,进一步包括禁用时钟树到所述SIMD中的未使用的逻辑。11.如权利要求1所述的方法,进一步包括按需提供计时到所述SIMD。12.一种在计算系统中提高效能的系统,其包括:第一模块,其被配置为确定处理应用的功率水平;以及第二模。

6、块,其被配置为根据所述功率水平动态地启用和禁用在着色器复合器中的一个或多个单指令多数据单元(SIMD)。13.如权利要求12所述的系统,其中,所述第二模块实时地配置多个寄存器来指示何时所述SIMD要被启用和禁用。14.如权利要求13所述的系统,其中,所述第二模块被进一步配置为:审查所配置的所述寄存器;以及根据所述寄存器的配置分配工作线程。15.如权利要求13所述的系统,其中,所述第二模块在所述配置之前服务一个或多个挂起的工作请求。16.如权利要求12所述的系统,其中,所述第二模块进一步被配置为在所述SIMD的活动执行期间并且独立于与所述SIMD相关的着色器引擎中的活动性启用和禁用所述SIMD。。

7、17.一种计算机可读介质,其存储适于由处理器执行的指令以:确定处理应用所需的功率水平;以及根据所述功率水平动态地启用和禁用在着色器复合器中的一个或多个单指令多数据权 利 要 求 书CN 103080899 A2/2页3单元(SIMD)。18.如权利要求17所述的计算机可读介质,进一步包括适于由所述处理器执行的指令以:实时地配置多个寄存器,以指示何时所述SIMD要被启用和禁用。19.如权利要求17所述的计算机可读介质,进一步包括适于由所述处理器执行的指令以:确定所述处理应用所需的SIMD的数量。20.如权利要求18所述的计算机可读介质,进一步包括适于由所述处理器执行的指令以:审查所配置的所述寄存。

8、器;以及根据所述寄存器的配置分配工作线程。21.一种在包括多个指令数据模块的处理器中管理工作分配的方法,其包括:分析由所述处理器接收到的工作单元;将所述多个模块内的活动的模块的利用水平与阈值进行比较;以及根据所述分析和所述比较在所述指令数据模块中所选择的指令数据模块中遍布分布所述工作单元。22.如权利要求21所述的方法,其中,所述比较包括确定所述活动的模块中的每个是否具有小于所述阈值中的一个或多个的利用水平。23.如权利要求22所述的方法,进一步包括禁用其利用水平小于所述一个或多个阈值的所述活动的模块。24.如权利要求21所述的方法,其中,所述分布包括分配所述工作单元的部分给具有小于所述阈值中。

9、的一个或多个的利用水平的活动的模块。25.如权利要求21所述的方法,其中,所述分布进一步包括启用非活动的模块。26.如权利要求25所述的方法,进一步包括当所述活动的模块的利用水平大于所述阈值中的一个或多个时分配所述工作单元中的部分给所启用的所述模块。27.如权利要求26所述的方法,其中,所述分布实现所启用的所述模块中的一个或多个的充分利用。28.如权利要求21所述的方法,其中,所述比较包括计数在所述指令数据模块内执行的指令,所述指令代表所述工作单元。29.如权利要求28所述的方法,其中,所述计数在预定的时间周期发生。30.如权利要求29所述的方法,其中,所述指令包括来自包括算术逻辑单元(ALU。

10、)指令和取指令的组中的至少一个。31.如权利要求21所述的方法,其中,所述利用水平包括来自包括当前利用和预测的利用的所述组中的至少一个。权 利 要 求 书CN 103080899 A1/11页4图形处理器中 SIMD 单元的动态启用和禁用技术领域0001 本发明的实施方式总体涉及在图形处理单元(GPU)中的单指令多数据(SIMD)单元的控制。背景技术0002 图形处理器的算术单元包括算术逻辑单元(ALU)或配置为执行整数、逻辑和单/双精度浮点运算的算术单元。0003 图形处理器可以包括成阵列的如被称为着色器核心的算术单元。着色器核心包括着色器管线(SP)。为了实现更高的效能,多个SP可以被配置。

11、为作为叠式SP一起工作。SP可以配置为成阵列的四芯管(QP)和SIMD。每个SIMD的所有的着色器单元在不同组的原点、顶点或像素值上可以有条件地执行相同的ALU指令。以这种方式,SIMD提供算术处理功率到图形处理器。0004 在传统的具有叠式SP的图形处理器中,可以静态地启用或禁用SIMD。例如,如果SP被确定为有故障,引线掩码(fuse mask)可以被编程为禁用故障SP。相似地,用户可存取寄存器可以被编程为禁用/启用特定的SIMD或成组的SIMD。然而,在新的工作请求发送到SIMD之前,这种方法需要图形处理器的图形管道刷新,且需要将新值重新编程到刷新的图形管道中。0005 通常的假设是随着。

12、SIMD数量的相应增加,着色器引擎的效能提高。然而,这种陈述仅仅在有限的情况下是真实的,如在繁重的工作负荷条件下。对于经常出现的情况,在较少繁重的工作负荷的情况下,着色器引擎的效能不一定随着SIMD的数目的增加而增加。在这种情况下,如果所有的SIMD被启用,由于未充分利用的SIMD(即SIMD具有较轻的负荷或没有负荷)保持启用和激活状态,所以功率被浪费。0006 传统的图形系统简单地将工作负荷在遍布于所使用的着色器引擎内的所有的SIMD进行划分以用于特定的操作。然而,这种方法是极端地功率低效的。低效发生的原因是没有确定在不影响系统效能的情况下是否可以用较少的SIMD来执行操作。因此,传统的系统。

13、保持着色器引擎内的所有的SIMD是活动的,无论它们是否需要执行操作。0007 如上所述,当SIMD被启用时,它们消耗功率。即使处于闲置状态,SIMD仍然消耗最小的、但量可测量的功率。因此,保持所有可用的SIMD启用,即使未使用的或未被充分利用,也浪费功率。能够将工作负荷压缩在尽可能最小数目的SIMD中也将是有利的。这种方法由于给每一个可用的SIMD提供工作负荷而可以减少不必要的开销(overhead)。0008 此外,在传统的方法中,在着色器复合器(shader complex)中的所有SIMD单元的时钟或同时启用或同时禁用。在许多应用中,并不是所有的SIMD都被分配工作的。然而,传统的方法持。

14、续主动地提供时钟信号给这些SIMD。该方法会增加图形处理器的功率消耗,并且是低效的。0009 因此,需要能够实现SIMD的动态控制并在SIMD可能不执行处理任务时减少图形处理器的功率消耗的系统和方法。说 明 书CN 103080899 A2/11页5发明内容0010 本发明的实施方式通过动态地激活和停用在包括多个SIMD的着色器复合器中的单个的SIMD而实现在图形处理单元中节约功率。单个的SIMD的动态即时禁用和启用在实现给定的处理应用所需的效能和功率水平方面提供了灵活性。以这种方式,可以实现图形处理单元的最佳使用。0011 更具体地,本发明的实施方式提供一种每瓦负荷均衡技术(LBPW)。在一。

15、个实施中,这种LBPW技术监控算术逻辑单元(ALU)指令的数目并提取每个SIMD内执行的指令。此外,新分配的线程负荷(即波阵面)进行排队并被监控。这种监控用于评估SIMD的当前和未来的利用。根据该方案,着色器引擎中只有实际需要或预期将处理给定工作负荷的SIMD保持激活状态。不需要的SIMD被停用。通过停用不需要的SIMD,降低功率消耗。作为额外的益处,本发明的实施方式在不显著影响系统性能的情况下提高效能/瓦(performance per watt)。0012 在本发明的又一个实施方式中,减少图形芯片的di/dt,以提高可靠性和在较低的电压下提高频率。这种减少影响材料账单,并允许使用较便宜的元。

16、件。0013 本发明的实施方式还实现在着色器复合器中的SIMD的动态纹理(grain)(例如中等纹理)时钟门控。通过按需提供时钟机制以关闭未使用的逻辑时钟树,从而减少开关功率(switching power)。在这种方式中,时钟门控被增强,从而在SIMD是空闲(或者没有分配工作)的时间阶段节约更多的开关功率。0014 本发明的实施方式可以用于任何计算机系统(例如,传统的计算机(台式机,笔记本等)系统、计算设备、娱乐系统、媒体系统、游戏系统、通信装置、个人数字助理),或任何使用一个或多个处理器的系统。0015 由于开发的用于一种类型的处理器的代码用很少或不用额外的努力可以在另一种类型的处理器中有。

17、效利用,因而本发明的实施方式可用于例如具有多核的CPU、GPU、和/或GPGPU的处理系统。例如,所开发的用于在GPU执行的代码,也称为GPU内核,使用本发明的实施方式可被配置在CPU执行。附图说明0016 被并入说明书中并构成本说明书的一部分的附图图解了本发明的实施方式,并连同上面给出的总体描述和下面给出的实施方式的详细描述用于解释本发明的原理。在附图中:0017 图1A示出根据实施方式所述的着色器复合器。0018 图1B-1D示出根据实施方式所述的可以被配置为控制SIMD的寄存器。0019 图2示出根据实施方式所述的示例性时序图。0020 图3A-3B示出根据实施方式所述的用于启用和禁用S。

18、IMD的示例性的寄存器设置。0021 图3C是根据实施方式所述的示例性的操作流程图。0022 图4A-4F示出根据实施方式所述的示例性的效能图表。0023 图5A是没有均衡化的传统的SIMD负荷行为的示意图。0024 图5B是根据本发明的实施方式所述的SIMD负荷行为的示意图。说 明 书CN 103080899 A3/11页60025 图6是根据本发明的实施方式所述的示例性的用于评估SIMD活动性的可编程查找表的示意图。0026 图7是根据本发明的实施方式所述的用于执行SIMD负荷均衡化的示例性方法的示例性流程图。0027 图8是用于进行图7所示的先入先出(FIFO)采样的更详细的流程图。00。

19、28 图9是图7所示的方法步骤的更详细的流程图。0029 图10示出根据本发明的实施方式所述的用于动态纹理时钟门控的示例性的系统。具体实施方式0030 如上所讨论的,本发明的实施方式通过动态地激活和停用着色器复合器中单个的SIMD实现功率节约。0031 对图形处理单元的下降的效能需要或为了降低散热设计功率(TDP),实施方式动态地禁用SIMD。此外,实施方式启用已禁用的SIMD用于高效能应用而无需刷新图形处理单元的图形管道。这在不刷新SP的情况下通过动态开关若干SIMD而实现。在某种程度上通过适当地编程设计成组的寄存器实现动态控制(或开关)。0032 在实施方式中,着色器管内插器(SPI)根据。

20、被配置为动态地指示哪些SIMD被激活的寄存器分配新的工作(或线程)。在一个实施方式中,在当前未完成的请求(或挂起的请求)由被禁用的SIMD提供服务之后,这种动态配置生效。一旦被禁用,没有新的来自SPI的请求会通过禁用的SIMD,且可捕获逻辑(harvestable logic)的时钟(如,sp4-vsp和纹理时钟)关闭,以降低图形处理单元的TDP。当禁用的SIMD启用时,SPI将再次开始分配工作给启用的SIMD,提供图形处理单元更高的效能。0033 在一个实施方式中,这些SIMD和一些要被激活和/停用的SIMD的激活和停用依赖于各种因素,如操作条件(例如,温度、电流、CAC),应用(例如,节约。

21、能源的可变的利用)、工作负荷、或其他需求(如,效能需求,功率需求)。SIMD的动态控制0034 图1A示出示例性的着色器复合器100,其中本发明的实施方式得到实现。如上所讨论的,着色器复合器可以包括着色器管道(SP)。为了实现更高的效能,多个SP可以被配置为作为叠式SP一起工作。SP可以构造成四管(QP)和SIMD的阵列186。每个SIMD的所有的着色单元,可以有条件地在不同的组的原点、顶点或像素值上执行相同的ALU指令。在一个实施方式中,着色器复合器100包括多个SIMD和2个着色器引擎,即,着色器引擎120和着色器引擎122。着色器复合器100还包括纹理高速缓存130(或2级纹理高速缓存)。

22、、多个着色器管内插器(SPI)和顶点高速缓存。着色器复合器100还包括多个冗余着色器开关(RSS)、着色器的时序控制器(SQ)、1级纹理高速缓存(TCP)和纹理数据逻辑(TD)。(虽然为清楚起见,示出了数量较少的SIMD,但是应当理解,本发明并不限定于图示的实施方式,且着色器复合器100是可扩展的并且可以包括任意数量的SIMD。)0035 如上所讨论的,本发明的实施方式动态地开关若干SIMD而不刷新SP。这样的动态控制(或开关)在某种程度上通过适当地编程成组的寄存器来实现。在一个实施方式中,SPI根据被配置为动态地指示哪些SIMD被激活的寄存器,分配新的工作(或工作线程)。说 明 书CN 10。

23、3080899 A4/11页70036 下节讨论控制SIMD和QP掩码的示例性寄存器。0037 图1B示出命名为“CC_GC_SHADER_PIPE_CONFIG.”的寄存器。在一实施方式中,根据引信掩码设置,该寄存器通过复位/配置单元(RCU)编程。作为示例,该寄存器可以被编程用于捕获的目的。0038 同样地,示于图1C的“RCU_CG_GC_SHADER_PIPE”和“RCU_CC_GC_SHADER_PIPE1”寄存器是“CC_GC_SHADER_PIPE_CONFIG”寄存器的经阴影处理(shadow)的版本。这些寄存器基于引信掩码或SMC微码被编程。0039 示于图1D中的寄存器“G。

24、C_USER_SHADER_PIPE_CONFIG,”通过用户可编程以限制操作SIMD(和/或QP)的数目。该寄存器可以是通过从图形寄存器总线管理(GRBM)接受的每个索引的着色器引擎映射并经阴影处理的存储器。0040 “CC_GC_SHADER_PIPE_CONFIG”的寄存器设置(图1B)在性质上是静态的,且每个芯片编程一次。与此相反,“GC_USER_SHADER_PIPEC_ONFIG”寄存器的寄存器设置可以在任何时间动态(即,即时)编程。本发明的实施方式配置“GC_USER_SHADER_PIPE_CONFIG”寄存器用于SIMD的动态控制。0041 在实施方式中“CC_GC_SHA。

25、DER_PIPE_CONFIG”寄存器和“GC_USER_SHADER_PIPE_CONFIG”寄存器的组合ORed值由SPI使用以确定(即时)要被分配新的线程(工作)的启用的SIMD。在一个实施方式中,在图形管道的所有其他的设计模块使用“CC_GC_SHADER_PIPE_CONFIG”寄存器以对非活动的SIMD/QP静态地禁用这些模块。在一实施方式中,当这样的操作会导致不合乎期望的着色器管线的“冻结”时,这样的设计模块不需要审查“GC_USER_SHADER_PIPE_CONFIG”寄存器。0042 参照图2示出的示例性时序图,SIMD的控制可以独立于着色器引擎的活动性而实现。即使特定的S。

26、IMD正忙于执行指令,实施方式在SIMD的活动执行期间可以禁用该SIMD。例如,参照图2,在SIMD0的活动执行期间,SIMD0可以被禁用。0043 在并不意图限制本发明的实施方式中,直到禁用(或停用)的SIMD重新启用,SPI才分配工作给该禁用(或停用)的SIMD。当其中的当前工作和在工作序列管道中的挂起的工作完成时,该禁用的SIMD自然引流(drain)工作线程。一旦清空,动态纹理时钟门控(以下详细说明)可以禁用时钟信号到在禁用的SIMD的逻辑。在禁用的SIMD重新启用时,SPI再次提交新的线程(工作请求)到启用的SIMD。SIMD控制设置通过GRBM寄存器的写操作被编程,且可以通过驱动程。

27、序或SMC微码动态地设置。0044 从系统设计的角度来看,SIMD可以在任何时间(即,即时)被启用或禁用。从能源节约的角度来看,从SIMD启用切换到SIMD禁用状态的时间可以依赖于SIMD管道中的挂起的工作负荷。当SPI准备好分配线程到SIMD时,使禁用的SIMD启用所需要的时间(或反之亦然)与写操作GRBM寄存器速度相当。作为示例,对于这两种情况,所需要的时间可以是几微秒。示例性的操作方案0045 以下是其中使用本发明和动态控制SIMD的实施方式的示例性操作方案。A.基于条件的控制0046 SIMD的动态控制会依赖条件。这样的示例性的条件包括,但不限于:0047 (1)温度行程:当外部源指示。

28、更高的处理器温度,并且有必要降低(或当适用时提说 明 书CN 103080899 A5/11页8高)功率消耗时。0048 (2)电流行程:当外部源指示更高的处理器电流,并且有必要降低(或当适用时提高)功率消耗时。0049 (3)CAC管理:当芯片上CAC管理器通知增加的处理活动,并做出通过启用更多SIMD以提高效能的决定时,或当芯片上CAC管理器通知减少的活动,并做出通过禁用若干SIMD而不降低效能以减少功率的决定时。B.基于应用的控制0050 SIMD的动态控制也可以依赖于应用。这样的示范性应用包括那些允许可变的利用以节约能源的应用。例如,根据本实施方式,从更多的处理器密集型应用(例如,3D。

29、图形处理)到较不密集的应用(例如,DVD回放)的用户应用模式中检测的变化可以使用于SIMD的动态控制。例如,通过用户界面(UI)输入机构或应用编程接口(API)的用户和应用程序输入也可被采用以提供SIMD的动态控制。这些输入机构可以用于处理应用设置所需的功率水平。这些输入机制可以通过软件(如应用或操作系统)、固件、硬件或它们的各种组合来启用。C.基于工作负荷的控制0051 SIMD的动态控制可依赖于工作负荷。举例而言,SIMD的动态控制可以根据下面列出的非限制性的示例性的GPU条件中的一个或多个被触发。0052 (1)静态筛选(screen)条件(无负荷)(TDP的5)0053 (2)空闲条件。

30、(非常轻的负荷)(TDP的10)0054 (3)中等的负荷条件(TDP的50)0055 (4)重的负荷条件(TDP的90)0056 (a)ALU限制0057 (b)纹理提取限制0058 (c)内存吞吐量限制0059 (5)非常重的负荷条件(TDP的90)D.基于请求的控制0060 SIMD的动态控制可以依赖于请求,并依赖于效能需求以及功率需求。驱动程序监控GPU TDP,以及接近最大TDP负荷时,禁用SIMD以降低TDP。使用没有GPU频率和电压调整可以实现这种SIMD的禁用。0061 可以使用驱动程序和/或SMU管理的SMC微码检测和实现上述示例性的控制条件。实施方式也可以允许使用自我控制所。

31、启用的SIMD数目的专用控件。对于启用和禁用SIMD的示例性寄存器设置0062 在上述条件模式(或任何其他情况)中的任何一种中,驱动程序能写入寄存器“GC_USER_SHADER_PIPE_CONFIG”的位字段(例如,位字段31:16)以禁用和启用SIMD。如图3A所示,写入“0”启用SIMD,以及写入“1”禁用SIMD。0063 图形处理单元可以包括两个着色器引擎(例如,SE0和SE1)。在这种情况下,对于这些着色器引擎,实施方式可以启用和禁用不同的SIMD。这可以通过使用如图3B所示的GRBM索引寄存器分开编程着色器引擎而实现。0064 参考图3B,0065 (1)要写入SE0(即着色器。

32、引擎)的“GC_USER_SHADER_PIPE_CONFIG”,可使用下面说 明 书CN 103080899 A6/11页9的示例性指令:0066 0067 (3)要写入到SE0和SE1(即,着色器引擎1)两者的“GC_USER_SHADER_PIPE_CONFIG”,可使用下面的示例性指令:mmGC_USER_SHADER_PIPE_CONFIG0xFC0C0000/禁用SE0和SE1两者的SIMD3 & SIMD20068 每个着色器引擎(例如,SE0,SE1,等)启用的SIMD可以即时改变,只要对每个正在被应用工作的子集中的每个着色器引擎,至少一个SIMD留下启用。换句话说,例如,如果。

33、SIMD被划分用于不同类型的工作,即,镶嵌着色器每边两个SIMD,且其余SIMD共享顶点和像素之间的工作,那么,用于镶嵌着色器的两个SIMD中的一个可被留下启用,且用于像素和顶点的剩余的SIMD中的一个启用。0069 图3C是示出根据一实施方式所述的示例性的整体操作的流程图。0070 在步骤302中,确定所给定的处理操作所需的效能水平。作为示例,这样的效能水平可以依赖于应用、条件、工作负荷、或请求。0071 在步骤304中,一个或多个寄存器被配置以启用和禁用在着色器引擎中不同的SIMD。作为示例,这样的结构可以通过使用如图3B所示的GRBM索引寄存器分开地编程着色器引擎而实现。0072 在步骤。

34、306中,根据在步骤304中配置的寄存器启用或禁用一个或多个寄存器。0073 下节显示可以帮助实施方式在效能和功率之间做出折衷决策的示范性的图表。功率节约与效能影响0074 当SIMD启用时,它消耗功率。对于增加的处理活动,SIMD会消耗更多的功率。相反地,对于较少的活动,SIMD将消耗较少的功率。处于空闲状态时,基于SIMD的尺寸(例如,面积、单元计数等),SIMD将消耗最少的,但是量可以测量的功率。说 明 书CN 103080899 A7/11页100075 图4A的图表显示核心功率随着启用的SIMD的数量的增加而线性增加。该图表描绘了SIMD限制的应用的情况。换句话说,应用是消耗所有可用。

35、的SIMD资源的功率密集型的应用。0076 通常的假设是图形处理单元的效能将随着SIMD的数量的增加而增加。然而,这一陈述对于密集的处理任务通常是真实的。在一些情况下,根据负荷条件,传统的方法可能会浪费功率,因为即使是轻微的处理负荷,这些方法也保持所有的SIMD启用。0077 以下各节讨论用于不同类型的应用的示例性的SIMD效能/瓦图表。(1)具有理想负荷的应用0078 图4B示意用于具有理想负荷的应用的效能/瓦图表。如图4B所示,随着SIMD的数目增加,图形处理单元的效能/瓦线性增加,具有恒定的每SIMD的功率消耗。(2)具有均衡负荷的应用0079 图4C说明用于具有均衡负荷的应用的效能/瓦。

36、图表。如图4C所示,随着SIMD的数目增加,效能/瓦被维持。(3)具有实际负荷的应用0080 通常,在现实的情况下,处理负荷是使得效能/瓦特性介于理想负荷特性和均衡负荷特性负之间。如图4D所示,随着SIMD增加,效能/瓦首先增加,但之后达到饱和并保持在恒定的水平或甚至可能降低。当效能/瓦降低时,更多的功率以相对较低的效能增益被消耗。这可以从图4E和4F分别所示的轻微和中等/繁重的负荷图表中看出。0081 图5A是传统的没有均衡化的SIMD负荷行为的图解说明500。本发明的实施方式还使在单个的SIMD中的利用最大化。通过使利用最大化,减少相应SIMD的附加周期,从而导致额外的功率节约。0082 。

37、当传统SQ块发出指令到相应的SIMD时,对应于该SIMD的忙信号被传输,持续时间通常为13个时钟周期502。这13个周期之后是四个周期的工作周期504,然后接着是25个周期的空闲或瀑布周期506。图5A示出其中在一阵列中(类似于图1A的阵列186)的所有的SIMD被激活,但每个SIMD没有得到充分利用的示例。在该示例中,每个SIMD通过仅仅空闲或部分的瀑布将浪费38个附加周期(13+25),如图5A所示。0083 然而,附加周期的百分比随着更多指令被发送到每个SIMD而减少,导致管道内的磁泡(bubble)较少,并因此导致更好地利用。图5B是根据本发明的原理提高利用的示意图。0084 图5B是。

38、根据本发明的实施方式所述的SIMD负荷行为的说明示意图508。图5B示出其中在阵列186中只有两个SIMD被启用的示例。然而,在图5B中,这两个SIMD执行与上述图5A中所有可用的SIMD执行的工作数量相同的工作。0085 在图5B中,根据使每个SIMD的利用最大化的负荷方案,空闲周期510包括13个周期。空闲周期510之后接着是包括100个工作的周期的工作周期512。工作周期512之后是持续25个周期的空闲周期514。0086 在图5B中,38个附加周期仍然被浪费,但它们仅在两个SIMD中浪费,而不是在该阵列的可用SIMD中的每一个中浪费。此外,指令本地回路(back to back)地发出利用瀑布周期以压缩前面的指令的执行。这两个因素相结合大大提高了活动的SIMD的有效的利用周期。因此,图5B的利用配置执行相同数量的工作,提供相同的效能水平,但消耗明显更说 明 书CN 103080899 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1