CN103080899B - 图形处理器中simd单元的动态启用和禁用 - Google Patents
图形处理器中simd单元的动态启用和禁用 Download PDFInfo
- Publication number
- CN103080899B CN103080899B CN201180035148.3A CN201180035148A CN103080899B CN 103080899 B CN103080899 B CN 103080899B CN 201180035148 A CN201180035148 A CN 201180035148A CN 103080899 B CN103080899 B CN 103080899B
- Authority
- CN
- China
- Prior art keywords
- simd
- multiple data
- single instruction
- instruction multiple
- disabling
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000008569 process Effects 0.000 title description 27
- 238000012545 processing Methods 0.000 claims abstract description 29
- 238000005183 dynamical system Methods 0.000 claims abstract 2
- 230000000694 effects Effects 0.000 claims description 11
- 238000009826 distribution Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 7
- 238000005457 optimization Methods 0.000 abstract description 3
- 230000003213 activating effect Effects 0.000 abstract description 2
- 230000004899 motility Effects 0.000 abstract description 2
- 230000002085 persistent effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 239000002699 waste material Substances 0.000 description 5
- 230000001276 controlling effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000007935 neutral effect Effects 0.000 description 2
- 210000000056 organ Anatomy 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000004445 quantitative analysis Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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
-
- 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/3842—Speculative instruction execution
-
- 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
-
- 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/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
Abstract
本发明描述一种在图形处理单元中提高效能的系统和方法。实施方式通过在包含多个SIMD单元的着色器复合器中动态地激活/停用单个的SIMD实现在图形处理单元中的功率节约。单个SIMD的动态即时禁用和启用对于给定的处理应用中实现所需的效能和功率水平提供了灵活性。用这种方法,实施方式实现了图形处理单元的最优化使用。本发明的实施方式还在着色器复合器中实现SIMD的动态纹理(如中等纹理)时钟门控。实施方式通过按需提供时钟机制,关闭未使用的逻辑时钟树,以减少开关功率。用这种方法,实施方式增强时钟门控,以在SIMD为空闲(或未指派任何工作)时的持续时间内节约更多的开关功率。
Description
技术领域
本发明的实施方式总体涉及在图形处理单元(GPU)中的单指令多数据(SIMD)单元的控制。
背景技术
图形处理器的算术单元包括算术逻辑单元(ALU)或配置为执行整数、逻辑和单/双精度浮点运算的算术单元。
图形处理器可以包括成阵列的如被称为着色器核心的算术单元。着色器核心包括着色器管线(SP)。为了实现更高的效能,多个SP可以被配置为作为叠式SP一起工作。SP可以配置为成阵列的四芯管(QP)和SIMD。每个SIMD的所有的着色器单元在不同组的原点、顶点或像素值上可以有条件地执行相同的ALU指令。以这种方式,SIMD提供算术处理功率到图形处理器。
在传统的具有叠式SP的图形处理器中,可以静态地启用或禁用SIMD。例如,如果SP被确定为有故障,引线掩码(fusemask)可以被编程为禁用故障SP。相似地,用户可存取寄存器可以被编程为禁用/启用特定的SIMD或成组的SIMD。然而,在新的工作请求发送到SIMD之前,这种方法需要图形处理器的图形管道刷新,且需要将新值重新编程到刷新的图形管道中。
通常的假设是随着SIMD数量的相应增加,着色器引擎的效能提高。然而,这种陈述仅仅在有限的情况下是真实的,如在繁重的工作负荷条件下。对于经常出现的情况,在较少繁重的工作负荷的情况下,着色器引擎的效能不一定随着SIMD的数目的增加而增加。在这种情况下,如果所有的SIMD被启用,由于未充分利用的SIMD(即SIMD具有较轻的负荷或没有负荷)保持启用和激活状态,所以功率被浪费。
传统的图形系统简单地将工作负荷在遍布于所使用的着色器引擎内的所有的SIMD进行划分以用于特定的操作。然而,这种方法是极端地功率低效的。低效发生的原因是没有确定在不影响系统效能的情况下是否可以用较少的SIMD来执行操作。因此,传统的系统保持着色器引擎内的所有的SIMD是活动的,无论它们是否需要执行操作。
如上所述,当SIMD被启用时,它们消耗功率。即使处于闲置状态,SIMD仍然消耗最小的、但量可测量的功率。因此,保持所有可用的SIMD启用,即使未使用的或未被充分利用,也浪费功率。能够将工作负荷压缩在尽可能最小数目的SIMD中也将是有利的。这种方法由于给每一个可用的SIMD提供工作负荷而可以减少不必要的开销(overhead)。
此外,在传统的方法中,在着色器复合器(shadercomplex)中的所有SIMD单元的时钟或同时启用或同时禁用。在许多应用中,并不是所有的SIMD都被分配工作的。然而,传统的方法持续主动地提供时钟信号给这些SIMD。该方法会增加图形处理器的功率消耗,并且是低效的。
因此,需要能够实现SIMD的动态控制并在SIMD可能不执行处理任务时减少图形处理器的功率消耗的系统和方法。
发明内容
本发明的实施方式通过动态地激活和停用在包括多个SIMD的着色器复合器中的单个的SIMD而实现在图形处理单元中节约功率。单个的SIMD的动态即时禁用和启用在实现给定的处理应用所需的效能和功率水平方面提供了灵活性。以这种方式,可以实现图形处理单元的最佳使用。
更具体地,本发明的实施方式提供一种每瓦负荷均衡技术(LBPW)。在一个实施中,这种LBPW技术监控算术逻辑单元(ALU)指令的数目并提取每个SIMD内执行的指令。此外,新分配的线程负荷(即波阵面)进行排队并被监控。这种监控用于评估SIMD的当前和未来的利用。根据该方案,着色器引擎中只有实际需要或预期将处理给定工作负荷的SIMD保持激活状态。不需要的SIMD被停用。通过停用不需要的SIMD,降低功率消耗。作为额外的益处,本发明的实施方式在不显著影响系统性能的情况下提高效能/瓦(performanceperwatt)。
在本发明的又一个实施方式中,减少图形芯片的di/dt,以提高可靠性和在较低的电压下提高频率。这种减少影响材料账单,并允许使用较便宜的元件。
本发明的实施方式还实现在着色器复合器中的SIMD的动态纹理(grain)(例如中等纹理)时钟门控。通过按需提供时钟机制以关闭未使用的逻辑时钟树,从而减少开关功率(switchingpower)。在这种方式中,时钟门控被增强,从而在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,且可捕获逻辑(harvestablelogic)的时钟(如,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的动态控制可以依赖于请求,并依赖于效能需求以及功率需求。驱动程序监控GPUTDP,以及接近最大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中的每一个中浪费。此外,指令本地回路(backtoback)地发出利用瀑布周期以压缩前面的指令的执行。这两个因素相结合大大提高了活动的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指令和取指令的信息每时每刻(clockbyclock)被捕获且被动态地计算。也就是说,在预定的时间周期中,在每个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中,芯片撤出(comeoutof)重置,且根据ALU和取指令初始化计数表600。例如,这可以发生在RLC的暂时存储寄存器中。表600将利用范围(0-100%)分成更小的间隔,并对于特定的利用间隔指定要激活或停用的SIMD的数量。
在步骤704中,发生中断等待。在内部循环(即快速循环)706,对挂起的波阵面和线程计数进行采样。这是在表示挂起的波阵面计数SPI模块102内通过FIFO实现的,并且表示挂起的线程计数的SQFIFO可以被采样以提取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,从而确定趋势。如果趋势是上升的(例如,通过比较来自SPIM100的数据),则上升标志可被设置。如果是较小的,另一标志(向下)可以被设置。此数据作为最后的读数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”的AMDR770处理器,当负荷重时,每一个的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++),诸如,例如,VerilogHDL、VHDL、AlteraHDL(AHDL)等硬件描述语言(HDL),或其他的可用编程和/或原理图捕捉工具(如电路捕捉工具)。该计算机可读代码可以被布置在任何已知的计算机可用介质中,该介质包括半导体、磁盘、光盘(如CD-ROM,DVD-ROM)和作为在计算机可用的(例如,可读的)传输介质(如载波或任何其它介质,诸如,例如,数字的、光学的、或者基于模拟的介质)实现的计算机数据信号。因此,可以在通信网络对代码进行传输,该通信网络包括互联网和网络。应当理解,由上面描述的系统和技术完成的功能和/或提供的结构可以被包含在核心(例如GPU核心)中,该核心实现于程序代码中,并且可以转化为硬件作为集成电路生产的一部分。总结
可以理解的,具体实施方式部分而不是发明内容和摘要部分,其目的是用于解释权利要求。发明内容和摘要部分可以阐述如发明者所构思的本发明的一个或多个示例性实施方式,但不是所有的示例性实施方式,因此,并不意图以任何方式限制本发明和所附的权利要求。
上面已经通过示出实现特定功能及其关系的功能构件块帮助描述了本发明。为便于说明,这些功能构件块的约束条件在此已被任意定义。只要其特定的功能和其中的关系被适当地执行,可以定义替代的边界。
特定实施方式的上述描述将充分地揭示本发明的通常的性质,通过应用本技术领域的知识,在不脱离本发明的总体设想的情况下,其他的性质可以很容易地修改和/或匹配这些特定实施方式的各种应用,而无需过多的实验。因此,根据本文提出的教导和指导,这样的匹配和修改的目的是被涵盖在所公开的实施方式的意义和等同范围之内。应当理解,本文的措辞或术语是用于描述而不是限制的目的,例如,本说明书中的术语或措辞是通过本领域技术人员根据该教导和指导来理解的。
本发明的广泛性和范围不应该由任何上述示例性实施方式限制,而应仅仅根据随附的权利要求及其等同主张得到限定。
Claims (19)
1.一种在计算系统中提高效能的方法,其包括:
确定与图形处理单元的功耗关联的状态,其中所述状态基于温度、电流和处理器活动性中的任意一个或组合;
对配置寄存器编程以响应确定的状态禁用着色器管线中的一个或多个单指令多数据单元;以及
根据所述确定的状态动态地禁用在着色器管线中的所述一个或多个单指令多数据单元,其中所述着色器管线不响应于对所述一个或多个单指令多数据单元的禁用而被刷新。
2.如权利要求1所述的方法,还包括:
根据被编程的配置寄存器而分配一个或多个工作线程。
3.如权利要求1所述的方法,其中,所述动态地禁用包括在所述一个或多个单指令多数据单元的活动执行期间并且独立于所述一个或多个单指令多数据单元的着色器引擎中的活动性禁用所述一个或多个单指令多数据单元。
4.如权利要求2所述的方法,还包括:
对由于所述动态地禁用所述一个或多个单指令多数据单元而被禁用的一个或多个单指令多数据单元禁用一个或多个工作线程的分配;以及
确定在一个或多个被禁用的单指令多数据单元中的一个或多个挂起的工作线程何时被清空。
5.如权利要求1所述的方法,还包括,基于处理的工作负荷、应用请求和一个或多个操作条件中的一个或多个而设定配置寄存器的一个或多个位索引。
6.如权利要求1所述的方法,其中所述动态地禁用包括提供动态中等纹理时钟门控到所述一个或多个单指令多数据单元。
7.如权利要求1所述的方法,其中所述动态地禁用包括禁用一个或多个时钟树到所述一个或多个单指令多数据单元中的未使用的逻辑。
8.如权利要求1所述的方法,其中所述动态地禁用包括提供按需计时到所述一个或多个单指令多数据单元。
9.一种在计算系统中提高效能的系统,其包括:
图形处理单元,其被配置为确定与所述图形处理单元的功耗关联的状态,其中所述状态基于温度、电流和处理器活动中的任意一个或组合;
所述图形处理单元进一步被配置成对配置寄存器编程以响应确定的状态禁用着色器管线中的一个或多个单指令多数据单元;以及
所述图形处理单元进一步被配置为根据所述确定的状态动态地禁用在所述着色器管线中的一个或多个单指令多数据单元,其中所述着色器管线不响应于对所述一个或多个单指令多数据单元的禁用而被刷新。
10.如权利要求9所述的系统,其中,所述图形处理单元被进一步配置为:
根据由于所述对配置寄存器编程而被编程的配置寄存器分配一个或多个工作线程。
11.如权利要求9所述的系统,其中,所述图形处理单元进一步被配置为在活动执行期间并且独立于与所述一个或多个单指令多数据单元相关的着色器引擎中的活动性禁用所述一个或多个单指令多数据单元。
12.一种在计算系统中提高效能的设备,其包括:
确定与图形处理单元的功耗关联的状态的装置,其中所述状态基于温度、电流和处理器活动性中的任意一个或组合;
对配置寄存器编程以响应确定的状态禁用着色器管线中的一个或多个单指令多数据单元的装置;以及
根据所述确定的状态动态地禁用在着色器管线中的所述一个或多个单指令多数据单元的装置,其中所述着色器管线不响应于对所述一个或多个单指令多数据单元的禁用而被刷新。
13.如权利要求12所述的设备,还包括:
根据由于所述对配置寄存器编程而被编程的配置寄存器而分配一个或多个工作线程的装置。
14.如权利要求12所述的设备,其中,所述动态地禁用的装置包括在所述一个或多个单指令多数据单元的活动执行期间并且独立于所述一个或多个单指令多数据单元的着色器引擎中的活动性禁用所述一个或多个单指令多数据单元的装置。
15.如权利要求12所述的设备,还包括:
对由于所述动态地禁用所述一个或多个单指令多数据单元而被禁用的一个或多个单指令多数据单元禁用一个或多个工作线程的分配的装置;以及
确定在一个或多个被禁用的单指令多数据单元中的一个或多个挂起的工作线程何时被清空的装置。
16.如权利要求12所述的设备,还包括,基于处理的工作负荷、应用请求和一个或多个操作条件中的一个或多个而设定配置寄存器的一个或多个位索引的装置。
17.如权利要求12所述的设备,其中所述动态地禁用的装置包括提供动态中等纹理时钟门控到所述一个或多个单指令多数据单元的装置。
18.如权利要求12所述的设备,其中所述动态地禁用的装置包括禁用一个或多个时钟树到所述一个或多个单指令多数据单元中的未使用的逻辑的装置。
19.如权利要求12所述的设备,其中所述动态地禁用的装置包括提供按需计时到所述一个或多个单指令多数据单元的装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US36385610P | 2010-07-13 | 2010-07-13 | |
US61/363,856 | 2010-07-13 | ||
US12/839,962 US8736619B2 (en) | 2010-07-20 | 2010-07-20 | Method and system for load optimization for power |
US12/839,962 | 2010-07-20 | ||
PCT/US2011/043509 WO2012009252A2 (en) | 2010-07-13 | 2011-07-11 | Dynamic control of simds |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103080899A CN103080899A (zh) | 2013-05-01 |
CN103080899B true CN103080899B (zh) | 2016-07-06 |
Family
ID=45470015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180035148.3A Active CN103080899B (zh) | 2010-07-13 | 2011-07-11 | 图形处理器中simd单元的动态启用和禁用 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP2593860B1 (zh) |
JP (1) | JP6130296B2 (zh) |
KR (1) | KR101723127B1 (zh) |
CN (1) | CN103080899B (zh) |
WO (1) | WO2012009252A2 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8736619B2 (en) | 2010-07-20 | 2014-05-27 | Advanced Micro Devices, Inc. | Method and system for load optimization for power |
GB2525778B (en) * | 2013-02-28 | 2020-04-15 | Intel Corp | Context aware power management for graphics devices |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
US10025367B2 (en) * | 2014-08-19 | 2018-07-17 | Intel Corporation | Dynamic scaling of graphics processor execution resources |
US20170046156A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Table lookup using simd instructions |
US10699362B2 (en) * | 2016-06-23 | 2020-06-30 | Intel Corporation | Divergent control flow for fused EUs |
CN106648551A (zh) * | 2016-12-12 | 2017-05-10 | 中国航空工业集团公司西安航空计算技术研究所 | 一种混合图形处理器指令处理系统 |
KR102603299B1 (ko) | 2017-12-08 | 2023-11-17 | 한국전자통신연구원 | 그래픽 처리 장치 및 이의 동작 방법 |
US10664287B2 (en) * | 2018-03-30 | 2020-05-26 | Intel Corporation | Systems and methods for implementing chained tile operations |
US11442495B2 (en) | 2020-03-06 | 2022-09-13 | Advanced Micro Devices, Inc. | Separate clocking for components of a graphics processing unit |
US20220044350A1 (en) * | 2020-08-07 | 2022-02-10 | Advanced Micro Devices, Inc. | Graphics processing unit with selective two-level binning |
CN112181493B (zh) * | 2020-09-24 | 2022-09-13 | 成都海光集成电路设计有限公司 | 寄存器网络架构和寄存器访问方法 |
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 |
US11941723B2 (en) * | 2021-12-29 | 2024-03-26 | Advanced Micro Devices, Inc. | Dynamic dispatch for workgroup distribution |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1906587A (zh) * | 2004-03-16 | 2007-01-31 | 索尼计算机娱乐公司 | 降低多处理器系统中的功耗的方法和装置 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452401A (en) * | 1992-03-31 | 1995-09-19 | Seiko Epson Corporation | Selective power-down for high performance CPU/system |
JPH086681A (ja) * | 1994-04-18 | 1996-01-12 | Hitachi Ltd | 省電力制御システム |
JP2000047872A (ja) * | 1998-08-03 | 2000-02-18 | Hitachi Ltd | 低消費電力動作機能を備えたマイクロプロセッサ |
JP2000322259A (ja) * | 1999-05-11 | 2000-11-24 | Hitachi Ltd | データ処理装置 |
US7337334B2 (en) * | 2003-02-14 | 2008-02-26 | International Business Machines Corporation | Network processor power management |
US7644255B2 (en) * | 2005-01-13 | 2010-01-05 | Sony Computer Entertainment Inc. | Method and apparatus for enable/disable control of SIMD processor slices |
US7694114B2 (en) * | 2005-06-09 | 2010-04-06 | Qualcomm Incorporated | Software selectable adjustment of SIMD parallelism |
US7836284B2 (en) * | 2005-06-09 | 2010-11-16 | Qualcomm Incorporated | Microprocessor with automatic selection of processing parallelism mode based on width data of instructions |
US20070074054A1 (en) * | 2005-09-27 | 2007-03-29 | Chieh Lim S | Clock gated pipeline stages |
US20070234077A1 (en) * | 2006-03-31 | 2007-10-04 | Rothman Michael A | Reducing power consumption by load imbalancing |
US8555099B2 (en) * | 2006-05-30 | 2013-10-08 | Ati Technologies Ulc | Device having multiple graphics subsystems and reduced power consumption mode, software and methods |
US7716506B1 (en) * | 2006-12-14 | 2010-05-11 | Nvidia Corporation | Apparatus, method, and system for dynamically selecting power down level |
US9135017B2 (en) * | 2007-01-16 | 2015-09-15 | Ati Technologies Ulc | Configurable shader ALU units |
JP2008299642A (ja) * | 2007-05-31 | 2008-12-11 | Mitsubishi Electric Corp | 図形描画装置 |
WO2009091369A1 (en) * | 2008-01-18 | 2009-07-23 | Advanced Micro Devices | Configurable shader alu units |
US8010822B2 (en) * | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
US8296773B2 (en) * | 2008-06-30 | 2012-10-23 | International Business Machines Corporation | Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance |
US8892916B2 (en) * | 2008-08-06 | 2014-11-18 | International Business Machines Corporation | Dynamic core pool management |
US20100094572A1 (en) * | 2008-10-15 | 2010-04-15 | International Business Machines Corporation | Dynamic Frequency And Voltage Scaling For A Computer Processor |
US8122269B2 (en) * | 2009-01-07 | 2012-02-21 | International Business Machines Corporation | Regulating power consumption in a multi-core processor by dynamically distributing power and processing requests by a managing core to a configuration of processing cores |
-
2011
- 2011-07-11 JP JP2013519736A patent/JP6130296B2/ja active Active
- 2011-07-11 KR KR1020137002016A patent/KR101723127B1/ko active IP Right Grant
- 2011-07-11 CN CN201180035148.3A patent/CN103080899B/zh active Active
- 2011-07-11 WO PCT/US2011/043509 patent/WO2012009252A2/en active Application Filing
- 2011-07-11 EP EP11733768.3A patent/EP2593860B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1906587A (zh) * | 2004-03-16 | 2007-01-31 | 索尼计算机娱乐公司 | 降低多处理器系统中的功耗的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2012009252A2 (en) | 2012-01-19 |
JP6130296B2 (ja) | 2017-05-17 |
JP2013532855A (ja) | 2013-08-19 |
WO2012009252A3 (en) | 2012-03-22 |
EP2593860A2 (en) | 2013-05-22 |
CN103080899A (zh) | 2013-05-01 |
EP2593860B1 (en) | 2020-08-19 |
KR20130127418A (ko) | 2013-11-22 |
KR101723127B1 (ko) | 2017-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103080899B (zh) | 图形处理器中simd单元的动态启用和禁用 | |
Mittal et al. | A survey of methods for analyzing and improving GPU energy efficiency | |
CN103229122B (zh) | 提供每内核电压和频率控制 | |
JP5583180B2 (ja) | 仮想gpu | |
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
US10162687B2 (en) | Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets | |
US8578387B1 (en) | Dynamic load balancing of instructions for execution by heterogeneous processing engines | |
US9229717B2 (en) | Register allocation for clustered multi-level register files | |
Park et al. | Libra: Tailoring simd execution using heterogeneous hardware and dynamic configurability | |
US20120019542A1 (en) | Method and System for Load Optimization for Power | |
Bahn et al. | Evolution-based real-time job scheduling for co-optimizing processor and memory power savings | |
US20130173933A1 (en) | Performance of a power constrained processor | |
Hsiao et al. | An adaptive thread scheduling mechanism with low-power register file for mobile GPUs | |
Marchal et al. | Integrated task scheduling and data assignment for SDRAMs in dynamic applications | |
US20230334613A1 (en) | Granular gpu dvfs with execution unit partial powerdown | |
US20230297159A1 (en) | Granular gpu dvfs with execution unit partial powerdown | |
US20230305978A1 (en) | Chiplet architecture for late bind sku fungibility | |
US20230305993A1 (en) | Chiplet architecture chunking for uniformity across multiple chiplet configurations | |
US20240111353A1 (en) | Constructing hierarchical clock gating architectures via rewriting | |
US20240126357A1 (en) | Power optimized blend | |
Choi et al. | Memory Contention Aware Power Management for High Performance GPUs | |
Liu et al. | Spmario: Scale up mapreduce with i/o-oriented scheduling for the GPU | |
US20230079975A1 (en) | Power management for system-on-chip | |
US20230306551A1 (en) | Compression using a flat mapping in virtual address space | |
Min et al. | Xdra: Exploration and optimization of last-level cache for energy reduction in ddr drams |
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 |