CN107209543A - 用于处理单元的时钟速率调整 - Google Patents

用于处理单元的时钟速率调整 Download PDF

Info

Publication number
CN107209543A
CN107209543A CN201680006077.7A CN201680006077A CN107209543A CN 107209543 A CN107209543 A CN 107209543A CN 201680006077 A CN201680006077 A CN 201680006077A CN 107209543 A CN107209543 A CN 107209543A
Authority
CN
China
Prior art keywords
gpu
clock rate
order
processor
clock
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
Application number
CN201680006077.7A
Other languages
English (en)
Other versions
CN107209543B (zh
Inventor
莫汉·迈亚
莫里斯·富兰克林·里布尔
苏曼·塔蒂拉朱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN107209543A publication Critical patent/CN107209543A/zh
Application granted granted Critical
Publication of CN107209543B publication Critical patent/CN107209543B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/18Timing circuits for raster scan displays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Power Sources (AREA)

Abstract

本发明描述处理器基于图形处理单元GPU将执行的命令量而确定所述GPU的预期性能水平的技术。所述处理器输出指示所述性能水平的信息,且所述GPU在曾用以确定所述性能水平的命令的执行之前调整其时钟速率。

Description

用于处理单元的时钟速率调整
技术领域
本发明涉及时钟速率调整,且更具体地说涉及图形处理单元(GPU)的时钟速率调整。
背景技术
例如图形处理单元(GPU)等处理单元执行操作的速率是基于时钟信号的频率(即,时钟速率)。时钟速率越快,处理单元执行操作就越快。相反,时钟速率越慢,处理单元执行操作就越慢。
发明内容
一般来说,本发明描述用于基于指示处理单元的性能水平的信息而前瞻性地调整设定所述处理单元执行操作的速率的时钟信号的频率的技术,其中所述性能水平是基于在所述处理单元执行命令之前将由所述处理单元执行的命令的估计或给定量。举例来说,第一处理单元(例如,中央处理单元(CPU))可确定第二处理单元(例如,图形处理单元(GPU))的性能水平是否存在预期增加或减小。所述第一处理单元可基于所述确定而输出指示第二处理单元的预期性能水平的增加或减小的信息。所述第二处理单元接收此信息且基于所接收的信息而前瞻性地向上调整时钟信号的频率(即,增加频率)以用于增加的性能或向下调整时钟信号的频率(即,减小频率)以用于减小的性能(例如,在第二处理单元执行命令之前调整时钟信号的频率)。
以此方式,通过当存在需要在设定时间周期内执行的许多命令时第一处理单元致使第二处理单元向上调整时钟信号的频率,第二处理单元可及时执行命令。并且,当不存在需要在所述时间周期内执行的许多命令的情况下,第一处理单元可致使第二处理单元向下调整时钟信号的频率以节约电力。
在一个实例中,本发明描述一种时钟速率确定的方法,其包括:以处理器确定图形处理单元(GPU)需要在设定时间周期内执行的命令集合中的命令量;基于所述命令集合中的所述命令量在所述GPU执行所述命令集合中的命令之前确定用于所述GPU的时钟速率;将指示所述时钟速率的信息输出到所述GPU;以及指示所述GPU执行所述命令集合中的一或多个命令。
在一个实例中,本发明描述一种时钟速率调整的方法,所述方法包括:以图形处理单元(GPU)接收指示所述GPU执行命令集合的预期性能水平的信息,其中所述性能水平是基于所述GPU在设定时间周期内将执行的命令集合中的命令量;在执行所述命令集合中的命令之前基于指示所述性能水平的所接收的信息而确定所述GPU的时钟速率;以及以所确定的时钟速率执行所述命令集合中的一或多个命令。
在一个实例中,本发明描述一种用于处理数据的装置,其包括处理器和图形处理单元(GPU)。所述处理器经配置以:确定所述GPU需要在设定时间周期内执行的命令集合中的命令量;基于所述命令集合中的命令量在所述GPU执行所述命令集合中的命令之前确定用于所述GPU的时钟速率;以及将指示所述时钟速率的信息输出到所述GPU。所述GPU经配置以:接收指示所述时钟速率的信息;从所接收的信息确定所述时钟速率;以及以所述时钟速率执行所述命令集合中的一或多个命令。
在一个实例中,本发明描述一种其上存储有指令的计算机可读存储媒体,所述指令当执行时致使处理器:确定图形处理单元(GPU)需要在设定时间周期内执行的命令集合中的命令量;基于所述命令集合中的命令量在所述GPU执行所述命令集合中的命令之前确定用于所述GPU的时钟速率;将指示所述时钟速率的信息输出到所述GPU;以及指示所述GPU执行所述命令集合中的一或多个命令。
附图和以下描述中阐明一或多个实例的细节。其它特征、目标和优点将从所述描述、图式以及权利要求书而显而易见。
附图说明
图1是说明根据本发明中所描述的一或多个实例技术的用于处理数据的实例装置的框图。
图2是更详细地说明图1中所说明的装置的组件的框图。
图3是说明根据本发明中描述的技术的时钟速率确定的实例操作的流程图。
图4是说明根据本发明中描述的技术的时钟速率调整的实例操作的流程图。
具体实施方式
例如图形处理单元(GPU)等处理单元包含内部时钟,所述内部时钟设定GPU处理指令的速率。较高时钟速率导致GPU的较高电力消耗,但允许GPU每秒处理更多命令。较高时钟速率允许GPU提供较高性能,但代价是较高的电力消耗。较低时钟速率导致GPU的较少电力消耗,但减少了GPU每秒可处理的命令的数目。较低时钟速率造成提供较低性能,但好处是较低的电力消耗。
本发明描述基于GPU的预期性能水平而前瞻性地调整GPU的时钟速率的实例性方式,其中所述性能水平是基于GPU将执行的命令的量(例如,GPU将执行的命令的实际量或命令的量的估计)。在一些实例中,在GPU执行命令之前,且可能甚至在GPU接收待执行的命令之前,GPU调整时钟速率。以此方式,GPU在执行命令之前调整时钟速率以用于命令的及时执行。因此,在命令的执行之前将时钟速率设定成正确频率以允许GPU及时执行命令。
举例来说,中央处理单元(CPU)可确定GPU将执行的命令量预期将增加或减小,且输出指示性能水平的增加或减小的信息。举例来说,如果指示性能水平的信息由于待执行命令量增加而指示性能的增加,那么GPU可增加时钟速率以允许及时的执行。如果指示性能水平的信息由于待执行命令量减小而指示性能的减小,那么GPU可减小时钟速率,从而节省电力。
在一些实例中,GPU可存储指示性能水平所需要的时钟速率的查找表。在这些实例中,GPU可基于查找表中时钟速率到性能水平的映射而增加或减小时钟速率。举例来说,GPU可存储与最大性能相关联的时钟速率以及与最小性能相关联的时钟速率。如果GPU接收到指示最大性能的信息,那么GPU可将时钟速率增加到对应于最大性能的时钟速率。如果GPU接收到指示最小性能的信息,那么GPU可将时钟速率减小到对应于最小性能的时钟速率。
查找表中时钟速率到性能水平的映射对于不同类型的GPU可以是不同的。举例来说,对于一些GPU,中端性能水平可映射到X Hz的时钟速率,而对于一些其它GPU,中端性能水平可映射到Y Hz的时钟速率。并且,最大和最小时钟速率对于不同类型的GPU可为不同的,且将在相应GPU类型的查找表中反映。
性能水平信息不需要一定为绝对值,且可实际上为相对值。举例来说,GPU可接收指示需要性能增加的信息,且GPU可经配置以使时钟速率增加所确定的量(例如,5%或10%)。如果GPU接收到指示性能的进一步增加的信息,那么GPU可使时钟速率进一步增加所确定的量。反过来当GPU接收到指示性能的减小的信息时也是同理。
GPU增加或减小时钟速率的所确定的量对于不同类型的GPU可为不同的。举例来说,时钟速率的5%的增加对于某些类型的GPU可能不足以满足及时执行所需要的增加处理速度,但时钟速率的5%的增加对于其它类型的GPU可能足以满足及时执行所需要的增加处理速度。
并且,GPU增加或减小性能的所确定的量可基于预配置的设定值或可为基于各种因数所确定的值。举例来说,如果当前时钟速率相对高,且预期性能的增加,那么GPU增加时钟速率的量可小于在当前时钟速率相对低且预期性能增加的情况下GPU将增加时钟速率的量。并且,时钟速率不会变成高于最大时钟速率或小于最小时钟速率。可存在界定增加或减小时钟速率到什么程度的其它准则。
在本发明中所描述的一些实例中,CPU执行产生将由GPU处理的数据(例如,图形数据或非图形相关数据)的应用程序。另外,CPU产生将由GPU执行的命令以处理由CPU产生的数据。将由GPU执行的命令可被称为GPU工作负荷。
CPU经由在CPU上执行的图形驱动程序基于GPU工作负荷而输出指示GPU的性能水平的信息。举例来说,在CPU上执行的应用程序或CPU的操作系统可将指示GPU的预期性能水平的信息提供到图形驱动程序。图形驱动程序随后将指示预期性能的信息输出到GPU,然后GPU执行致使CPU确定GPU的性能水平应当改变的命令。
GPU从CPU接收指示GPU的性能水平的信息以执行命令的集合,其中所述性能水平是基于GPU将在设定时间周期内执行的所述命令集合中的命令的量。GPU在执行命令之前基于指示性能水平的所接收信息而增加或减小其时钟速率,以使得GPU可在某一时间周期内执行命令。GPU接着可以所确定的时钟速率执行所述命令集合中的一或多个命令。
可存在为何GPU可能需要在某一时间周期内执行命令(即,用于命令的及时执行)的各种原因。作为一个实例,GPU可能需要输出图形数据以实现60帧/秒的帧速率,这意味着GPU需要在近似0.0167秒(1/60等于0.0167)内再现一帧。如果为了再现一帧所需要执行的命令量增加,导致对增加的GPU性能的需要以便避免丢失帧或“掉帧(jank)”,那么GPU可能需要增加时钟速率以使得及时执行命令以允许GPU每0.0167秒再现一帧。举例来说,如果GPU无法在0.0167秒内执行命令集合,那么GPU可在0.0167秒之后重新示出前一帧(即,在0.0334秒的间隔中示出同一帧),这导致丢失当前帧。
如果为了再现一帧所需要执行的命令量减小,从而允许GPU性能的减小,那么GPU可能够减小时钟速率,因为GPU可能不需要此高时钟速率来执行命令和实现帧速率。可能存在设定GPU需要执行命令所处的时间周期的其它原因,且本发明中描述的技术不限于实现某一帧速率的以上实例。
在本发明中所描述的实例中,CPU可确定将存在GPU将执行的命令量的增加或减小,且作为响应而指示GPU增加或减小其性能水平。在一些情况下,除基于GPU在未来将执行的命令而做出GPU的性能水平的确定之外,CPU还可能已经配置以基于GPU执行的命令量的先前历史而确定GPU是否将增加或减小其时钟速率。
在一些实例中,CPU可基于GPU将执行的命令量的确定而确定GPU是否将增加或减小其时钟速率(例如,增加或减小其时钟速率),且可致使(例如,指示)GPU相应地增加或减小时钟速率。在一些实例中,CPU可利用GPU将执行的命令量的确定以及GPU先前执行的命令量的确定。
作为一实例,CPU可基于GPU将执行的命令(可能是估计)而确定GPU应当将其时钟速率增加到500MHz,且可相应地指示GPU。随后,在GPU执行命令时,CPU可确定基于GPU实际执行的命令量的先前历史,时钟速率可有可能为250MHz。在一些实例中,CPU可利用这两个时钟速率确定来确定GPU的实际时钟速率。
举例来说,CPU可确定加权平均,其中CPU初始地对基于待执行命令而做出的时钟速率的确定较重地加权,且对基于已经执行的命令而做出的时钟速率的确定几乎不施加权重。因此初始地,CPU可主要依据基于待执行命令而做出的时钟速率的确定来指示GPU设定时钟速率。随后逐渐地,CPU减小基于待执行命令而做出的时钟速率的确定的加权,且增加基于已经执行的命令而做出的时钟速率的确定的加权。因此随时间过去,CPU可主要依据基于已经执行的命令而做出的时钟速率的确定来指示GPU设定时钟速率。以此方式,CPU可基于由GPU执行的命令的历史而输出经更新性能水平。
图1是说明根据本发明中所描述的一或多个实例技术的用于处理数据的实例装置的框图。图1说明装置10,其实例包含(但不限于)例如媒体播放器等视频装置、机顶盒、例如移动电话等无线手持机、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置及类似物。
在图1的实例中,装置10包含处理器12、图形处理单元(GPU)14以及系统存储器16。在例如装置10是移动装置的实例等一些实例中,处理器12和GPU 14可形成为集成电路(IC),例如芯片上系统(SoC)。举例来说,IC可被形成为芯片封装内的处理芯片。在一些实例中,处理器12和GPU 14可容纳于不同集成电路(即,不同芯片封装)中,例如装置10是具有容纳GPU 14的单独图形卡的桌上型或膝上型计算机的实例。然而,在装置10是移动装置的实例中可有可能处理器12和GPU 14容纳于不同集成电路中。
处理器12和GPU 14的实例包含(但不限于)一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。处理器12可为装置10的中央处理单元(CPU)。在一些实例中,GPU 14可以是专用硬件,其包含集成和/或离散逻辑电路,所述集成和/或离散逻辑电路向GPU 14提供适合于图形处理的大规模并行处理能力。在一些情况下,GPU 14还可包含通用处理能力,且在实施通用处理任务(即,非图形相关任务)时可被称为通用GPU(GPGPU)。
出于说明的目的,结合GPU 14描述本发明中描述的技术。然而,本发明中描述的技术不受此限制。本发明中描述的技术可延伸到其它类型的处理单元。
处理器12可以执行各种类型的应用程序。应用程序的实例包含网络浏览器、电子邮件应用程序、电子数据表、视频游戏或产生可视对象以供显示的其它应用程序。系统存储器16可以存储用于执行一或多个应用程序的指令。在处理器12上执行应用程序使得处理器12产生用于有待显示的图像内容的图形数据。处理器12可向GPU 14发射图像内容的图形数据以供进一步处理。
在一些非图形相关实例中,处理器12可产生较好地适合于由GPU 14处理的数据。这些数据不需要一定需要用于图形或显示目的。举例来说,处理器12可将需要对其执行矩阵运算的数据输出到GPU 14,并且GPU 14又可执行矩阵运算。
总的来说,处理器12可以将处理任务卸载给GPU 14,例如需要大规模并行运算的任务。作为一个实例,图形处理需要大规模并行运算,并且处理器12可以将此些图形处理任务卸载给GPU 14。然而,例如矩阵运算的其它操作也可以得益于GPU 14的并行处理能力。在这些实例中,处理器12可以充分利用GPU 14的并行处理能力以使GPU 14执行非图形相关操作。
处理器12可根据特定应用处理接口(API)与GPU 14通信。此类API的实例包含API、克罗诺斯(Khronos)组织的或OpenGL以及OpenCLTM;然而,本发明的各方面不限于DirectX、OpenGL或OpenCL API,并且可扩展到其它类型的API。此外,本发明中描述的技术不需要根据API作用,且处理器12和GPU 14可利用任何通信技术。
系统存储器16可为用于装置10的存储器,且可包括一或多个计算机可读存储媒体。系统存储器16的实例包含(但不限于)随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器或可用于运载或存储呈指令和/或数据结构形式的所要程序代码且可通过计算机或处理器存取的其它媒体。
在一些方面,系统存储器16可以包含使处理器12和/或GPU 14执行本发明中归属于处理器12和GPU 14的功能的指令。因此,系统存储器16可以是上面存储有指令的计算机可读存储媒体,所述指令当经执行时使一或多个处理器(例如,处理器12和GPU 14)执行各种功能。
举例来说,如本发明中在别处更详细描述,在处理器12上执行的应用程序或在处理器12上执行的处理器12的操作系统可确定将由GPU 14执行(例如,将在稍后时间执行)的命令的量。所述应用程序或操作系统可向在处理器12上执行的图形驱动程序指示信息,所述信息基于将由GPU 14执行的命令的量而指示GPU 14的性能水平。所述图形驱动程序可经配置以将信息从处理器12传送到GPU 14,且在一些实例中,可根据实例性API中的一者(或某个其它API)而配置。所述图形驱动程序可基于将由GPU 14执行的命令的量而发射指示性能水平的信息。GPU 14可作为响应而基于指示性能水平的所接收信息而增加或减小GPU 14的时钟速率(例如,在执行之前且可甚至在接收到命令之前前瞻性地增加或减小时钟速率)。系统存储器16可存储用于应用程序、操作系统和图形驱动程序的指令。
在一些实例中,系统存储器16是非暂时性存储媒体。术语“非暂时性”可指示存储媒体未体现于载波或传播信号中。然而,术语“非暂时性”不应解释为意味着系统存储器16为非可移动的或其内容为静态的。作为一个实例,可从装置10移除系统存储器16,及将所述系统存储器移动到另一装置。作为另一实例,大体类似于系统存储器16的存储器可以插入到装置10中。在某些实例中,非暂时性存储媒体可以(例如,在RAM中)存储数据,所述数据可以随时间改变。
装置10还可包含显示器18、用户接口20以及收发器模块22。装置10可包含出于清楚起见而未在图1中示出的额外模块或单元。举例来说,装置10可包含扬声器和麦克风(两者都未展示在图1中)以在装置10为移动无线电话的实例中实现电话通信。此外,装置10中所展示的各种模块和单元可能并不是在装置10的每一实例中都是必要的。举例来说,在装置10为桌上型计算机的实例中,用户接口20和显示器18可在装置10外部。作为另一实例,在显示器18为移动装置的触敏或压敏显示器的实例中,用户接口20可为显示器18的一部分。
显示器18可包括液晶显示器(LCD)、阴极射线管(CRT)显示器、等离子显示器、触敏显示器、压敏显示器或另一类型的显示装置。用户接口20的实例包含(但不限于)轨迹球、鼠标、键盘和其它类型的输入装置。用户接口20还可为触摸屏,且可作为显示器18的部分并入。
收发器模块22可包含用以允许装置10与另一装置或网络之间的无线或有线通信的电路。收发器模块22可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
在本发明中描述的技术中,第一处理单元(例如,处理器12)将某些任务卸载到第二处理单元(例如,GPU 14)。为了卸载任务,处理器12将待由GPU 14执行的命令以及作为所述命令的操作数的数据(例如,所述命令对其操作的数据)输出到系统存储器16和/或直接输出到GPU 14。GPU 14直接从处理器12和/或从系统存储器16接收所述命令和数据,且执行所述命令。在一些实例中,并非在系统存储器16中存储将由GPU 14执行的命令以及用于所述命令的数据操作数,处理器12可将所述命令和数据操作数存储在包含GPU 14和处理器12且由处理器12和GPU 14两者共享的IC本地的局部存储器中。一般来说,本发明中描述的技术适用于处理器12可使命令可用于在GPU 14上执行的各种方式,且所述技术不限于以上实例。
GPU 14执行命令的速率是通过时钟信号的频率(也被称作时钟速率)来设定。举例来说,GPU 14可在时钟信号的每个上升沿或下降沿执行命令,或在时钟信号的每个上升沿执行一个命令且在每个下降沿执行另一命令。因此,时钟信号的上升或下降沿在一时间周期内发生的频繁程度(例如,时钟信号的频率)设定了GPU 14在所述时间周期内执行多少命令。
在例如处理器12将待由GPU 14执行的命令存储在存储器(例如,系统存储器16或局部存储器)中的那些实例等一些实例中,处理器12可输出识别GPU 14将执行的命令群组的存储器地址信息。GPU 14将执行的命令群组称为所提交的命令。在处理器12直接输出命令到GPU 14的实例中,所提交的命令包含处理器12指示GPU 14立即的那些命令。
可存在其中处理器12可将命令分组的各种方式。作为一个实例,命令群组包含由GPU 14再现一个帧所需要的所有命令。作为另一实例,命令群组可为所谓的“原子命令”,其将一起执行而无需GPU 14切换到其它命令。将提交到GPU 14的命令分组的其它方式可为可能的,且本发明不限于以上实例技术。
在一些情况下,GPU 14可能需要在设定时间周期内执行所提交的命令。举例来说,装置10可为手持式装置,其中显示器18也充当用户接口。作为一个实例,为了实现无影子带(也被称作无掉帧)用户接口,GPU 14可能需要在近似16毫秒(ms)(其它时间周期是可能的)内完成所提交的命令的执行。此16ms时间周期可被称为“vsync”窗口,且如果GPU 14未在vsync窗口内完成所提交的命令的执行,那么GPU 14的执行管线中会存在“气泡”,从而造成填充有掉帧的用户接口。
GPU 14的执行管线中的“气泡”指代其中GPU 14的正执行命令的单元已部分地完成命令的执行而产生一些中间数据的条件,但GPU 14的将接收所述中间数据的单元仍忙于执行其它命令,从而造成中间数据保持堆积。举例来说,GPU 14的执行管线包含一系列单元,其各自产生由系列中(即,管线中)的下一单元进一步处理的中间数据。在一些情况下,GPU 14的执行管线的上游单元产生中间数据比GPU 14的执行管线的下游单元可消耗的速度更快,从而产生所谓的气泡。
处理器12提交的命令的量不需要一定为恒定的。可能存在GPU 14将执行的命令数目的注入或减少。举例来说,在处理器12上执行的应用程序(例如,第三方应用程序)可增加或减小将由GPU 14执行的命令的数目,或在处理器12上执行的操作系统(例如,框架自身)可增加或减小将由GPU 14执行的命令的数目。
因为GPU 14在设定时间周期(例如,16ms)内将执行的命令的量可改变,所以GPU14的时钟信号的频率(即,GPU 14的时钟速率)可能需要增加或减小以使得GPU 14能够在设定时间周期内执行命令,而不会不必要地增加电力消耗。举例来说,如果时钟信号的频率永久地保持在相对高频率,那么GPU 14将能够在大多数情况下及时执行所提交的命令。然而,以相对高频率执行命令致使GPU 14的电力消耗增加。如果时钟信号的频率永久地保持在相对低频率,那么GPU 14的电力消耗可减少,但GPU 14可能不能够在大多数情况下及时执行所提交的命令,从而导致掉帧表现以及可能其它不希望的影响。
本发明中描述的技术描述了基于GPU 14即将负责的“工作负荷”的确定而前瞻性地增加或减小GPU 14的时钟速率(即,时钟信号的频率)的实例性方式。GPU 14的“工作负荷”指代所提交的命令中将由GPU 14执行的命令的量。
举例来说,因为在处理器12上执行的应用程序产生将由GPU 14执行的命令,所以应用程序可能够确定GPU 14在设定时间周期内将负责执行的命令的量。然而在一些情况下,在处理器12上执行的应用程序可能不是经设计以确定GPU 14将负责执行的命令的量,或不是经设计以致使处理器12确定GPU 14的性能水平。
除了或替代于在处理器12上执行的应用程序,在处理器12上执行的操作系统也可确定GPU 14将负责执行的命令的量。举例来说,所述操作系统可经设计以保留存储位置以用于存储将提交到GPU 14的命令,且基于操作系统保留的存储位置的量,操作系统可确定GPU 14将负责执行的命令的量。可存在确定GPU 14将负责执行的命令的量的其它方式,如相对于图2更详细描述,且本发明中描述的技术也适用于这些其它方式以及除了上文及相对于图2描述的那些技术外的技术。
处理器12可基于GPU 14将执行的命令的量(即,所提交的命令中的命令的量)而输出指示性能水平的信息。GPU 14可接收指示性能水平的信息,且作为响应,GPU 14可增加或减小时钟速率。在一些实例中,GPU 14可在命令的执行之前、且可能在命令的接收之前增加或减小时钟速率。举例来说,GPU 14可接收指示性能水平的信息,其中性能水平是从GPU 14尚未执行或可能甚至尚未接收的命令所确定。换句话说,在执行处理器12用以确定性能水平的所提交的命令之前,GPU 14使用指示性能水平的信息用于执行所提交的命令以确定时钟速率(例如,增加或减小时钟速率)。
在一些实例中,指示性能水平的信息可仅基于所提交的命令。举例来说,处理器12可基于第一命令集合且不基于其它命令集合而确定性能水平。性能水平信息可致使GPU 14在执行命令之前确定和调整时钟信号的频率以用于第一命令集合的及时执行。处理器12可输出指示性能水平的信息以用于所提交的命令的所述第一集合。处理器12接着可基于第二命令集合且不基于其它命令集合而确定性能水平。处理器12可输出指示性能水平的信息以用于所提交的命令的第二集合(或在不存在性能水平改变的情况下可不输出信息),以此类推。性能水平信息可致使GPU 14在执行命令之前确定和调整时钟信号的频率以用于第二命令集合的及时执行。
处理器12可不针对将由GPU 14执行的每个命令集合输出指示性能水平的信息。如上文所指出,如果预期/未来性能水平不存在改变,那么处理器12可不输出指示性能水平的信息。然而,即使存在性能水平的改变,处理器12也可以不在每个实例中输出指示性能水平的信息。换句话说,处理器12可偶尔输出指示为了特定命令集合的及时执行所需要的性能水平的信息,但可不针对每个命令集合输出此信息。然而,在一些实例中,处理器12可有可能始终输出指示为了特定命令集合的及时执行所需要的性能水平的信息。处理器12输出指示性能水平的信息的频繁程度可以是选择问题。
在本发明中,处理器12输出指示性能水平的信息可视为处理器12输出指示命令集合的及时执行所需要的时钟速率的信息。在处理器12输出指示预期性能水平的信息之后,处理器12可指示GPU 14执行命令中的一或多个命令。
以此方式,GPU 14可能够在执行命令之前调整时钟速率以确保命令在时间周期内执行。这允许GPU 14调整时钟速率而无任何等待时间,因为时钟速率调整是基于在命令的执行之前的信息,而不是仅在命令执行之后所确定的信息。
举例来说,在一些实例中,处理器12可维持GPU 14执行的命令量的历史。基于GPU14执行的命令量的历史,处理器12可估计时钟速率应当是多少。概念上,这可视为处理器12基于GPU 14最近执行的命令而连续地确定时钟速率应当是多少。通过这些技术,处理器12确定的时钟速率近似等于时钟速率应当是多少。举例来说,从执行命令历史所确定的时钟速率指示在早几个命令之前时钟速率应当是多少,且在早几个命令之前时钟速率应当是多少与针对当前命令时钟速率应当是多少之间可能不存在时钟速率的许多偏差。
虽然依赖于执行的命令以确定时钟速率应当是多少,但与确定时钟速率相关联的等待时间意味着时钟速率可能未充分高以确保所提交命令的及时执行。借助本发明中描述的技术,GPU 14可调整时钟速率而无任何等待时间(例如,立即调整时钟速率)。
在一些实例中,GPU 14可经配置以基于所接收的指示用于执行命令的性能水平的信息而调整时钟速率(例如,时钟信号的频率),所述信息是基于GPU 14将执行的命令的量。然而,在一些实例中,GPU 14可利用指示性能水平的所接收信息以及基于由GPU 14执行的命令量的历史所确定的时钟速率两者来确定时钟速率。
举例来说,处理器12可确定将存在GPU 14将执行的命令量的注入,且作为响应而指示GPU 14增加其性能水平。在GPU 14执行命令时,处理器12可监视GPU 14的使用(例如,GPU 14的用以执行命令的核心的百分比)。从基于由GPU 14执行的命令量的历史的所监视GPU 14的使用,处理器12可确定用于GPU 14的时钟速率。处理器12可基于在GPU 14执行命令之前处理器12确定的时钟速率以及基于在命令执行期间GPU 14的使用的时钟速率而确定用于GPU 14的时钟速率。
应理解,在命令的执行期间GPU 14的使用是处理器12使用由GPU 14执行的命令量的历史用于时钟速率确定的一个实例方式。一般来说,处理器12可利用GPU 14的工作负荷历史(例如,由GPU 14执行的命令的量)以及在命令的运行时间期间收集和计算的统计数据,例如命令的变化和/或趋势值以及GPU 14的使用。
以此方式,GPU 14可能够在执行命令之前立即将频率增加到较高值。随后,GPU 14以较高时钟速率执行一或多个命令,从而确保命令在设定时间周期(例如,vsync窗口的16ms)内执行。在GPU 14执行命令时,处理器12可确定最小时钟速率将需要是多少,以在设定时间周期内执行最近执行的命令。处理器12可基于在命令集合的执行之前所确定的时钟速率以及在命令集合中的一或多个命令的执行后所确定的时钟速率来确定用于GPU 14的新时钟速率。
举例来说,处理器12可利用加权平均,其中处理器12对在命令执行之前所确定的时钟速率初始地加权比在命令集合中的一或多个命令的执行后所确定的时钟速率更重。随后,在GPU 14完成来自命令集合的一些命令的执行时,处理器12可基于执行命令的历史(例如,统计模型,例如GPU 14使用、执行命令的数目变化、趋势数据等)确定时钟速率。处理器12可对在命令执行之前确定时钟速率加权比在命令集合中的一或多个命令的执行之后所确定的时钟速率更轻。
以此方式,GPU 14可接收指示性能水平的信息以执行命令的集合。性能水平是基于GPU 14将在设定时间周期内执行的命令集合中的命令的量。GPU 14可基于在执行命令集合中的命令之前所接收的信息而确定时钟速率。在一些实例中,GPU 14可基于甚至在GPU14的单元接收命令集合中的命令之前所接收的信息而确定时钟速率。GPU 14接着可以所确定的时钟速率执行命令集合中的一或多个命令。
在命令集合中的一或多个命令的执行期间,处理器12可基于GPU 14执行的命令量的先前历史(例如,基于GPU 14的实际工作负荷的统计模型)确定时钟速率。处理器12可基于从指示性能水平的信息所确定的时钟速率以及从先前执行命令的历史所确定的时钟速率而确定时钟速率。GPU 14可在一或多个执行的命令后以此新确定的时钟速率执行一或多个命令。处理器12可以此方式连续地确定新时钟速率。
举例来说,处理器12可将指示GPU 14的性能水平的信息输出到GPU 14,其中此性能水平是基于GPU 14将执行的命令集合中的命令量。随后,在GPU 14执行命令集合中的一或多个命令时,处理器12可确定GPU 14的性能水平的更新。处理器12可连续地确定GPU 14的性能水平的更新,且将经更新性能水平输出到GPU 14。
处理器12可对从所接收的信息确定的时钟速率以及从先前执行命令的历史所确定的时钟速率不同地加权。举例来说,初始地,处理器12可对从所接收的信息确定的时钟速率更重地加权,并且然后随着时间过去(例如,在执行更多命令时),处理器12可在命令集合中的命令执行期间逐渐地增加从先前执行命令的历史所确定的时钟速率的加权。换句话说,可能需要GPU 14初始地以基于性能水平的时钟速率开始,但随后在GPU 14执行命令时,从先前执行命令的历史确定的时钟速率可提供时钟速率需要是多少的较好量度。因此,处理器12可在命令的执行期间逐渐地增加第二时钟速率的加权。
在一些实例中,处理器12可提供指示GPU 14的性能水平的信息。举例来说,处理器12可确定GPU 14需要在设定时间周期内执行的命令集合中的命令的量。处理器12可基于GPU 14需要在设定时间周期内执行的命令集合中的命令的所确定量而确定GPU 14的性能水平。处理器12可输出指示GPU 14的性能水平的信息。
图2是更详细地说明图1中所说明的装置的组件的框图。如图2中所说明,GPU 14包含控制器30、振荡器34、着色器核心36以及固定功能管线38。着色器核心36和固定功能管线38可一起形成用以执行图形或非图形相关功能的执行管线。尽管仅说明一个着色器核心36,但在一些实例中,GPU 14可包含类似于着色器核心36的一或多个着色器核心。
GPU 14将执行的命令是由着色器核心36和固定功能管线38执行,如由GPU 14的控制器30所确定。控制器30可被实施为GPU 14上的硬件或者在GPU 14的硬件上执行的软件或固件。
控制器30可从系统存储器16的命令缓冲器40或直接从处理器12接收待执行的命令(例如,接收处理器12确定应当现在由GPU 14执行的所提交命令)。控制器30还可从系统存储器16的数据缓冲器42或直接从处理器12检索用于命令的操作数数据。控制器30可确定哪些命令将由着色器核心36执行(例如,软件指令在着色器核心36上执行)以及哪些命令将由固定功能管线38执行(例如,用于固定功能管线38的单元的命令)。
在一些实例中,来自命令缓冲器40和数据缓冲器42中的一者或两者的命令和/或数据可为GPU 14的局部存储器的部分。举例来说,GPU 14可包含指令高速缓冲存储器和数据高速缓冲存储器,其分别存储来自命令缓冲器40的命令和来自数据缓冲器42的数据。在这些实例中,控制器30可从本地高速缓冲存储器检索命令和/或数据。
着色器核心36和固定功能管线38可以从彼此发射和接收数据。举例来说,着色器核心36执行的一些命令可产生中间数据,所述中间数据是用于固定功能管线38的单元将执行的命令的操作数。类似地,固定功能管线38的单元执行的一些命令可产生中间数据,所述中间数据是用于着色器核心36将执行的命令的操作数。以此方式,所接收数据以管线式方式通过固定功能管线38的单元和着色器核心36逐渐地处理。因此,着色器核心36和固定功能管线38可被称为实施执行管线。
一般来说,着色器核心36允许执行各种类型的命令,意味着着色器核心36是可编程的且为用户提供功能灵活性,因为用户可对着色器核心36进行编程以用最可设想的方式执行所需任务。然而,固定功能管线38的固定功能单元针对固定功能单元执行任务的方式是硬接线的。因此,固定功能单元可不提供大量功能灵活性。
还如图2中所说明,GPU 14包含振荡器34。振荡器34输出时钟信号,其当着色器核心36和/或固定功能管线38的单元执行命令时设定时间实例。虽然振荡器34说明为在GPU14内部,但在一些实例中,振荡器34可在GPU 14外部。并且,振荡器34不需要一定仅提供用于GPU 14的时钟信号,且也可提供用于其它组件的时钟信号。
振荡器34可产生方波、正弦波、三角波或其它类型的周期性波。振荡器34可包含放大器以放大所产生波的电压,且输出所得波作为用于GPU 14的时钟信号。
在一些实例中,在由振荡器34输出的时钟信号的上升沿或下降沿上,着色器核心36和固定功能管线38的每一单元可执行一个命令。在一些情况下,命令可划分成子命令,且着色器核心36和固定功能管线38的每一单元可响应于时钟信号的上升或下降沿而执行子命令。举例来说,A+B的命令包含检索A的值和B的值的子命令,且着色器核心36或固定功能管线38可在时钟信号的上升沿或下降沿执行这些子命令中的每一者。
着色器核心36和固定功能管线38的单元执行命令的速率可影响GPU 14的电力消耗。举例来说,如果由振荡器34输出的时钟信号的频率相对高,那么与着色器核心36和固定功能管线38的单元针对时钟信号的相对低频率将执行的命令的数目相比,着色器核心36和固定功能管线38的单元可在一时间周期内执行更多命令。然而,与着色器核心36和固定功能管线38的单元在时间周期中执行较少命令(由于来自振荡器34的时钟信号的较低频率)相比,GPU 14的电力消耗在着色器核心36和固定功能管线38的单元在时间周期中执行较多命令(由于来自振荡器34的时钟信号的较高频率)的实例中可能更大。
如上文所描述,处理器12可由于GPU 14的大规模并行处理能力而将任务卸载到GPU 14。举例来说,GPU 14可被设计有单指令多数据(SIMD)结构。在SIMD结构中,着色器核心36包含多个SIMD处理元件,其中每一SIMD处理元件执行相同命令,但是对不同数据执行。
在特定SIMD处理元件上执行的特定命令被称作线程。每一SIMD处理元件可视为执行不同线程,因为用于给定线程的数据可能不同;然而,在处理元件上执行的线程是与在其它处理元件上执行的命令相同的命令。以此方式,SIMD结构允许GPU 14并行执行许多任务(例如,同时)。对于此SIMD结构化GPU 14,每一SIMD处理元件可在时钟信号的上升沿或下降沿上执行一个线程。
为了避免混淆,本发明使用术语“命令”来一般地指代由着色器核心36或固定功能管线38的单元执行的过程。举例来说,命令包含实际命令、组成的子命令(例如,存储器调用命令)、线程,或GPU 14执行特定功能的其它方式。因为GPU 14包含着色器核心36和固定功能管线38,所以GPU 14可视为执行命令。
并且,在上述实例中,着色器核心36或固定功能管线38的单元响应于由振荡器34输出的时钟信号的上升或下降沿而执行命令。然而,在一些实例中,着色器核心36或固定功能管线38的单元可在时钟信号的上升沿上执行一个命令且在下降沿上执行另一后续命令。可存在对命令进行“定时”的其它方式,且本发明中描述的技术不限于以上实例。
因为GPU 14在每个上升沿、下降沿或这两者执行命令,所以由振荡器34输出的时钟信号的频率(也被称作时钟速率)设定了GPU 14在某一时间内可执行的命令的量。举例来说,如果GPU 14在时钟信号的每上升沿执行一个命令,且时钟信号的频率是1MHz,那么GPU14可在一秒内执行一百万个命令。
如上文所描述,在一些情况下,GPU 14可在设定时间周期内执行所提交的命令(例如,GPU 14从命令缓冲器40检索的命令集合)。然而,所提交命令中的命令的量可为变量(即,GPU 14在时间周期内需要执行的命令的数目无需对于所提交命令的每个集合都是恒定的)。
举例来说,如图2中所说明,处理器12执行应用程序26,如虚线方框所说明。在执行期间,应用程序26产生GPU 14将执行的命令,包含指示GPU 14检索和执行着色器程序(例如,顶点着色器、片段着色器、用于非图形应用的计算着色器及类似物)的命令。另外,应用程序26产生所述命令对其进行操作的数据(即,用于命令的操作数)。处理器12将产生的命令存储在命令缓冲器40中,且将操作数数据存储在数据缓冲器42中。
在处理器12将产生的命令存储在命令缓冲器40中之后,处理器12使用于由GPU 14执行的命令可用。举例来说,处理器12向GPU 14传送所存储命令的集合及其操作数数据的存储器地址(在此GPU 14将执行命令集合),以及指示GPU 14何时将执行命令集合的信息。以此方式,处理器12将命令提交到GPU 14用于执行。
如图2中所说明,处理器12还可执行图形驱动程序28。在一些实例中,图形驱动程序28可为在处理器12的硬件或硬件单元上执行的软件或固件。图形驱动程序28可经配置以允许处理器12和GPU 14彼此通信。举例来说,当处理器12将图形或非图形处理任务卸载到GPU 14时,处理器12经由图形驱动程序28将这些处理任务卸载到GPU 14。举例来说,当处理器12输出指示GPU 14将执行的命令量的信息时,图形驱动程序28可为处理器12的将所述信息输出到GPU 14的单元。
作为额外实例,应用程序26产生图形数据和图形命令,且处理器12可将此图形数据的处理卸载到GPU 14。在此实例中,处理器12可将图形数据存储在数据缓冲器42中且将图形命令存储在命令缓冲器40中,且图形驱动程序28可指示GPU 14何时分别从数据缓冲器42和命令缓冲器40检索图形数据和图形命令,分别从数据缓冲器42和命令缓冲器40的何处检索图形数据和图形命令,以及何时通过执行命令集合中的一或多个命令而处理图形数据。
并且,应用程序26可能需要GPU 14执行一或多个着色器程序。举例来说,应用程序26可能需要着色器核心36执行顶点着色器和片段着色器以产生将显示(例如,在图1的显示器18上)的图像。图形驱动程序28可指示GPU 14何时执行着色器程序,且指示GPU 14在何处从数据缓冲器42检索图形数据以及在何处从命令缓冲器40或从系统存储器16中的其它位置检索命令。以此方式,图形驱动程序28可形成处理器12与GPU 14之间的联系。
图形驱动程序28可根据应用程序处理接口(API)来配置,但图形驱动程序28不需要限于根据特定API来配置。在装置10是移动装置的实例中,可根据OpenGL ES API来配置图形驱动程序28。OpenGL ES API具体被设计成用于移动装置。在装置10是非移动装置的实例中,可根据OpenGL API来配置图形驱动程序28。
在本发明中所描述的实例技术中,可存在处理器12可确定GPU 14在时间周期内将执行的命令量的各种方式。举例来说,所提交命令中的命令量可基于再现用户接口或游戏应用程序的一个帧所需要的命令。对于用户接口实例,GPU 14可能需要在vsync窗口(例如,16ms)内执行再现用户接口的一个帧所需要的命令以提供无掉帧的用户体验。如果存在需要显示的相对大量内容,那么与存在需要显示的相对小量内容的情况相比,命令的量会更大。
为了确保GPU 14能够在设定时间周期内执行所提交的命令,控制器30可调整振荡器34输出的时钟信号的频率(即,时钟速率)。然而,为了调整时钟信号的时钟速率以使得时钟速率足够高而允许GPU 14在设定时间周期内执行所提交的命令,控制器30可接收指示在所述时间周期内执行命令集合(例如,所提交的命令)所需要的性能水平的信息,且基于所接收的信息而确定时钟速率。
举例来说,如果在GPU 14执行命令之前控制器30接收到指示基于GPU 14在时间周期内将执行多少命令而需要何种性能水平的信息(作为绝对值或相对值),那么控制器30可确定是否增加或减小时钟信号的频率。如果控制器30确定与当前时钟速率相比需要较高性能水平(例如,较高时钟速率)以在时间周期内执行命令以用于及时执行,那么控制器30可增加时钟速率。为了减少电力消耗,如果控制器30确定不需要那么高的性能水平以在时间周期内执行命令(即,较低时钟速率足以及时执行命令),那么控制器30可减小时钟速率。
在本发明中描述的技术中,控制器30可基于从处理器12接收的指示性能水平的信息而确定性能水平。性能水平是基于GPU 14在一时间周期内将执行的命令的量。控制器30接着可基于性能水平的确定而增加或减小由振荡器34输出的时钟信号的频率。以此方式,在GPU 14将执行曾用以确定GPU 14的性能水平的命令之前,时钟信号的频率可增加。
因为应用程序26产生GPU 14将执行的命令,所以应用程序26可确定GPU 14在设定时间周期内将执行的命令的量,且因此可能够确定GPU 14的性能水平。处理器12接着可输出指示GPU 14的性能水平的信息,其中性能水平是基于GPU 14在设定时间周期内将执行的命令的量。
然而,在一些情况下,虽然应用程序26可产生命令和操作数数据,但应用程序26可能未经设计以确定GPU 14的性能水平。在一些实例中,如果应用程序26未确定GPU 14的性能水平或不致使处理器12输出指示性能水平的信息,那么GPU 14仍可能够接收指示及时执行曾用以确定性能水平的命令所需要的性能水平的信息。如图2中所说明,处理器12还执行操作系统24。操作系统24经配置以管理处理器12的资源,例如分配存储器资源且处置命令和数据去往和来自存储器的传送,所述存储器例如包含命令缓冲器40或数据缓冲器42的存储器(在图2中说明的实例中为系统存储器16)。
因此,操作系统24可经配置以确定GPU 14将执行的命令的量,因为操作系统24确定将命令和操作数数据存储在命令缓冲器40和数据缓冲器42中所需要的存储器资源。此外,当处理器12提交命令时,是操作系统24确定用于GPU 14在何处从命令缓冲器40检索命令且从数据缓冲器42检索操作数数据的存储器地址。因此,操作系统24可确定GPU 14在一时间周期内将执行的命令的量。操作系统24可基于GPU 14在一时间周期内将执行的命令的所确定量而确定GPU 14的性能水平,且致使处理器12输出指示性能水平的信息。
可存在处理器12可利用应用程序26和/或操作系统24以在GPU 14执行曾用以确定GPU 14的性能水平的命令之前前瞻性地确定GPU 14的性能水平的其它方式。下文提供处理器12可如何利用来自应用程序26和/或操作系统24的信息以确定GPU 14的性能水平的两个额外实例。
作为处理器12如何前瞻性地确定GPU 14的预期性能水平的第一实例,假定应用程序26是视频游戏,例如(但不需要是)产生高清晰度图形的一个视频游戏,且装置10是移动装置。在此实例中,如果当装置10在纵向定向中时视频播放器在显示应用程序26的输出,那么应用程序26可能需要提交命令到GPU 14以仅再现显示器18的小区域。然而,当用户将装置10旋转到横向定向达几个帧的瞬时周期时,GPU 14以当前时钟速率可能不能够在16ms内产生一帧。
在此实例中,操作系统24可关于定向的改变而通知应用程序26,且处理器12又可确定GPU 14的性能水平。举例来说,如图2中所说明,处理器12可执行频率管理模块32A;然而,频率管理模块32A可为处理器12的硬件或者硬件与软件或固件的组合。频率管理模块32A可确定应用程序26将增加GPU 14将执行的命令的量,并且又可在GPU 14执行命令之前且甚至可在GPU 14接收命令之前确定GPU 14所需要的性能水平。
频率管理模块32A接着可向图形驱动程序28指示GPU 14的性能水平将增加。图形驱动程序28接着可输出指示GPU 14的预期性能水平的信息,且GPU 14的控制器30又可增加振荡器34的频率。
在用户将装置10从横向定向改变到纵向定向的情况下,显示器18上将显示的区域存在减小。对于此情形,操作系统24可向应用程序26通知改变到纵向定向,且频率管理模块32A可确定待执行指令的量将存在减少,且确定GPU 14的预期性能水平。图形驱动程序28可输出指示GPU 14的预期性能水平的信息。
在一些实例中,频率管理模块32A可基于由应用程序26提供的信息或基于由操作系统24确定的信息(例如,基于所分配存储器)而确定命令量的增加(或减小)的量。基于所接收的信息,频率管理模块32A可确定GPU 14的性能水平。以此方式,处理器12可确定GPU14的性能水平。
作为处理器12如何前瞻性地确定GPU 14的预期性能水平的第二实例,显示器18所显示的最终屏幕可为在装置10上执行的产生图形数据的所有应用程序的组合物(例如,除应用程序26之外,还有在装置10是移动装置的实例中产生当前时间的应用程序)。操作系统24可选择使用GPU 14以组成各种图形输出以用于在显示器18上显示。
然而,在仅存在一个应用程序运行的情况中,操作系统24可绕过由GPU 14执行的所述组成阶段,且直接在显示器18上显示图形输出。在此情况下(例如,绕过组成阶段),控制器30可断开振荡器34以节约电力。
在此模式中,处理器12可能需要执行另一应用程序。举例来说,假定应用程序26是当执行时提供传入呼叫的弹出通知的应用程序。在振荡器34断开的模式中,因为操作系统24绕过了组成阶段,所以当存在传入呼叫时,操作系统24可致使应用程序26执行。并且,操作系统24可不再绕过GPU 14执行的组成,且改为利用GPU 14来组成由不同应用程序(例如,输出时间的应用程序以及输出传入呼叫的弹出通知的应用程序26)产生的所有图形数据。
当GPU 14需要快速执行所述组成时,操作系统24可确定GPU 14将执行的命令量存在突然增加,且可向频率管理模块32A指示所述命令的增加。频率管理模块32A可确定性能水平,且指示图形驱动程序28将指示性能水平的信息输出到GPU 14。以此方式,并非将振荡器34的频率设定为某种默认水平(其可在过低的情况下造成掉帧表现或在过高的情况下造成不必要的电力消耗),处理器12可在GPU 14将执行命令之前确定GPU 14的预期性能水平,且GPU 14的控制器30可设定振荡器34的频率以确保命令的及时执行。这允许处理器12确定特定性能水平以使得振荡器34跳跃到与默认时钟速率相比更精确的时钟速率。
处理器12输出的性能水平可为绝对值或相对值。举例来说,处理器12可输出指示相对于当前性能是否需要较高或较低性能的指令。在此实例中,控制器30使振荡器34的频率增加或减小所确定的值,其中所确定的值可为固定值(例如,增加或减小5%)或从例如电流负载、总体电力消耗等各种因数确定的值。在一些实例中,处理器12可输出指示最大或最小性能的指令。在这些实例中,控制器30可将振荡器34的频率调整为用于最大性能的最高频率或用于最小性能的最低频率。
在一些实例中,处理器12可输出最大值与最小值之间的性能水平值。GPU 14可存储将性能水平值映射到振荡器34的特定频率的查找表,且控制器30可基于查找表而增加或减小振荡器34的频率。
此外,在一些实例中,处理器12可输出指示时钟速率的值。指示时钟速率的值是指示性能水平的信息的另一实例。在此些实例中,控制器30可能不需要查找表来确定振荡器34的频率,且可改为基于从处理器12接收的指示时钟速率的值而设定振荡器34的频率。
虽然是可能的,但处理器12可不需要针对GPU 14将执行的每个命令集合而输出指示性能水平的信息。并且虽然是可能的,但处理器12可不需要针对GPU 14将执行的每个命令集合而确定性能水平。在处理器12确实输出指示性能水平的信息的实例中,控制器30可相应地增加或减小振荡器34的频率。
如图2中所说明,处理器12还包含频率管理模块32B。在一些实例中,类似于频率管理模块32A,频率管理模块32B可为在处理器12上执行的软件或固件,且因此在虚线方框中说明。然而,也类似于频率管理模块32A,频率管理模块32B可为硬件组件或硬件与软件的组合。并且,频率管理模块32A和32B说明为分开的模块以便于理解,但可容易地组合到处理器12的单个模块中。
频率管理模块32B可经配置以基于最近执行的命令而确定时钟速率。频率管理模块32B可能不是在每个实例中都是必要的。在一些实例中,由频率管理模块32B实施的技术可为动态电压和时钟按比例缩放(DVCS)或动态时钟和电压按比例缩放(DCVS)控制,其基于运行平均值、变体和/或趋势而提供控制。可实施频率管理模块32B的一个实例性方式在第8,650,423号美国专利中描述。
一般来说,频率管理模块32B可维持GPU 14的工作负荷的运行统计数据。举例来说,频率管理模块32B可维持以下各项中的一或多者:运行平均值忙和/或空闲持续时间,空闲/忙比率,运行平均值的变化,以及工作负荷的运行平均值的趋势。基于GPU 14的工作负荷的统计数据,频率管理模块32B可连续地确定由振荡器34输出的时钟信号的频率。
然而,频率管理模块32B确定时钟信号的频率时可能存在一些等待时间。举例来说,频率管理模块32B利用最近执行的命令以确定对于最近执行的命令来说时钟速率应当是多少。但到频率管理模块32B确定时钟速率的时候,GPU 14已经开始执行接下来的命令。并且,对于GPU的低端实例,等待时间可能相对高。因此,来自频率管理模块32B的时钟速率确定可能从时钟速率实际应当是多少被稍微延迟。
在一些实例中,处理器12可利用来自频率管理模块32A和频率管理模块32B两者的输出来调整由振荡器34输出的时钟信号的频率。举例来说,基于从频率管理模块32A接收的GPU 14的性能水平的信息,控制器30可在GPU 14开始执行曾用以确定GPU 14的性能水平的命令之前确定且设定振荡器34的时钟速率为所确定的时钟速率。随后,在GPU 14执行命令的同时,频率管理模块32B可连续地确定振荡器34的时钟速率。
处理器12可基于由频率管理模块32A确定的时钟速率以及由频率管理模块32B确定的时钟速率而确定振荡器34的最终时钟速率。举例来说,处理器12可确定时钟速率的加权平均以确定振荡器34的最终时钟速率。作为一个实例,处理器12可初始地对由频率管理模块32A确定的时钟速率比由频率管理模块32B确定的时钟速率更重地加权,以使得由频率管理模块32A确定的时钟速率对最终时钟速率的影响比由频率管理模块32B确定的时钟速率更大。随后随时间过去,处理器12可减小由频率管理模块32A确定的时钟速率的加权且增加由频率管理模块32B确定的时钟速率的加权,因为由频率管理模块32B确定的时钟速率是基于由GPU 14执行的实际命令。可存在处理器12使用以确定加权的其它准则,且所述技术不限于上文提供的实例。
以此方式,本发明中描述的技术允许应用程序26或操作系统24控制GPU 14的时钟速率。举例来说,大体上处理器12、应用程序26或操作系统24无法确定GPU 14的时钟信号的频率(例如,因为它们通常并不具有对频率按比例缩放过程中的可见性)。然而,允许处理器12、应用程序26和/或操作系统24帮助设定GPU 14的时钟速率可存在益处。借助本发明中描述的技术,应用程序26和/或操作系统24经由处理器12的图形驱动程序28可输出例如指令等“提示”或“元数据”,其指示GPU 14可用来设定振荡器34的时钟速率的GPU 14的性能水平。
此外,通过利用其中处理器12基于频率管理模块32A和频率管理模块34B而确定振荡器34的时钟速率(即,由振荡器34输出的时钟信号的频率)的混合方案,处理器12可能够更准确地调整振荡器34的时钟速率,同时确保命令在所分配时间周期中执行。举例来说,响应于接收到指示性能水平增加的信息,控制器30可立即增加振荡器34的时钟速率,代价是增加的电力消耗,然后频率管理模块34B可实施其对时钟速率的决策过程。以此方式,在频率管理模块34B正确定时钟速率的时间窗口期间,GPU 14在以较高频率执行所提交的命令,从而确保命令在设定时间周期(例如,16ms vsync窗口)内执行。
随后,频率管理模块32B可基于最近执行的命令(例如,刚证明的工作负荷频率管理模块34B的历史)而确定时钟速率。处理器12可实施一些技术(例如,加权平均)以基于来自频率管理模块32A和32B的所确定时钟速率而确定实际时钟速率。因为频率管理模块32A和32B一起用以确定时钟速率,所以本发明中描述的技术可视为“用户辅助的DCVS”,其中用户指代提供指示性能水平的信息的应用程序26或操作系统24,且DCVS指代频率管理模块32B的功能性。
在相反情形中,应用程序26和/或操作系统24可确定存在即将到来的“空闲”状态或最小使用阶段。在此实例中,应用程序26和/或操作系统24经由图形驱动程序28可指示性能水平的减少。作为响应,控制器30可减少振荡器34的时钟速率。在此情境下,由于低时钟速率而在用户接口中可能不存在掉帧,因为在时间周期中可能不存在许多命令要执行,但如果GPU 14不是以较高速率执行命令则可能存在电力消耗的减小。
时钟速率减少的每实例的电力节省可能不是很多的。然而,在长时间间隔中,通过在可能时的时钟速率的重复减少,电力减少可以是可观的值。
上文描述了处理器12输出指示性能水平的信息。下文描述处理器12可执行这些功能的一些实例性方式。
处理器12经由应用程序26和/或操作系统24可确定GPU 14的性能水平。应用程序26和/或操作系统24可指示图形驱动程序28实施功能调用以输出指示GPU 14的性能水平的信息。举例来说,为了处理器12输出指示性能水平的信息,图形驱动程序28可实施以GPU 14可处理的方式产生指令的功能调用。再次,图形驱动程序28可根据GPU 14经配置的同一API来配置。处理器12经由图形驱动程序28可响应于实施所述功能调用而输出指示性能水平的指令。
功能调用的实例可为接收即将到来的帧的性能水平作为输入的功能调用,且图形驱动程序28输出指示性能水平的信息。如果控制器30确认振荡器34的频率是基于性能水平的信息而设定,那么图形驱动程序28可确定功能调用是成功的。
以此方式,可不需要关于应用程序26和/或操作系统24的内核代码或其它低层级模块的任何改变。以此方式,任何应用程序连同频率管理模块32B的功能性可以影响GPU 14的时钟速率。举例来说,不需要改变应用程序26和/或操作系统24的代码以包含允许应用程序26和/或操作系统24确定GPU 14的时钟速率的功能性。而是在一些实例中,频率管理模块32A和32B可经配置以确定时钟速率,且应用程序26和/或操作系统24可能够通过对频率管理模块32A和32B做出调用而控制时钟速率以影响时钟速率的改变。
图形驱动程序28可输出各种指令以指示性能水平。作为一个实例,图形驱动程序28可输出指示默认性能、低性能、中等性能、高性能、最小性能、最大性能或者例如较高或较快性能水平或较低或较慢性能水平等相对性能水平的指令。
另外,在一些实例中,图形驱动程序28可输出指示用以设定性能水平的指令适用于所有后续命令直到随后的另一指令做出另外指示为止的指令。在一些实例中,图形驱动程序28可输出指示设定的性能水平仅适用于所述命令集合的指令。在这些实例中,如果在GPU 14完成命令的执行之后图形驱动程序28未输出指示性能水平的指令,那么控制器30可将时钟速率设定为默认时钟速率。
以此方式,装置10是包括处理器12和GPU 14的用于处理数据的装置。处理器12可确定GPU 14需要在设定时间周期内(例如,16ms内)执行的命令集合中的命令的量。举例来说,操作系统24或应用程序26可确定GPU 14将需要在未来于设定时间周期内执行的命令集合中的命令的量。
处理器12可基于命令集合中的命令量,在GPU 14执行命令集合中的命令之前确定用于GPU 14的时钟速率。在一些实例中,处理器12确定的时钟速率可为相对时钟速率或特定时钟速率。作为相对时钟速率的实例,处理器12可确定GPU 14将增加其时钟速率或减小其时钟速率。作为特定时钟速率的实例,处理器12可确定GPU 14需要以最大水平、高水平、中间水平、低水平或最小水平执行,其中这些水平中的每一者对应于GPU 14的一个时钟速率。作为特定时钟速率的另一实例,处理器12可确定GPU 14的时钟速率的时钟速率值(例如,100MHz、200MHz等)。一般来说,处理器12确定的GPU 14的时钟速率可视为GPU 14的性能水平。
处理器12可将指示时钟速率的信息输出到GPU 14。举例来说,图形驱动程序28可实施功能调用以将指示时钟速率的信息输出到GPU 14。处理器12输出的指示时钟速率的信息可为相对时钟速率或特定时钟速率。举例来说,处理器12可输出指示时钟速率的增加或减小的信息(例如,相对时钟速率)。作为一实例,处理器12可输出指示时钟速率水平(例如,最大水平、高水平、中间水平、低水平或最小水平)的信息,或输出指示时钟速率的值的信息(例如,指示250MHz的信息)。
GPU 14接收指示时钟速率的信息。举例来说,控制器30可接收指示时钟速率的信息。控制器30可从所接收的信息确定时钟速率。举例来说,如果处理器12输出指示时钟速率的增加或减小的信息,那么控制器30可从所述增加或减小确定所得时钟速率。如果处理器12输出指示时钟速率水平(例如,最大、高、中间、低或最小)的信息,那么控制器30可确定所述时钟速率水平对应于的时钟速率。如果处理器12输出指示时钟速率值(例如,100MHz)的信息,那么控制器30可从所述信息确定时钟速率应当为100MHz。如上文所描述,处理器12输出的指示时钟速率的信息可视为GPU 14的性能水平。因此,GPU 14可从指示性能水平的所接收信息确定时钟速率,且在执行命令集合中的一或多个命令之前确定时钟速率。
控制器30可基于所确定的时钟速率设定振荡器34的时钟速率,且GPU 14可以所确定的时钟速率执行命令集合中的一或多个命令。举例来说,着色器核心36和/或固定功能管线38的单元可以由振荡器34输出的时钟速率执行命令集合中的一或多个命令。
此外,在命令集合中的所述一或多个命令的执行期间,处理器12可基于GPU 14的先前执行命令的历史而确定另一时钟速率。此另一时钟速率可视为对性能水平的更新。
处理器12可基于所述两个所确定的时钟速率而确定新时钟速率。举例来说,处理器12可应用加权平均,其中从先前执行命令的历史确定的时钟速率平均比基于GPU 14曾将执行的命令量所确定的时钟速率逐渐更重地加权。处理器12可输出指示此新时钟速率的信息(例如,指示经更新性能水平的信息)。GPU 14可从所接收的信息(例如,指示经更新性能水平的信息)确定时钟速率,且可在已经执行的那些命令后以从经更新性能水平所确定的时钟速率执行一或多个命令。
图3是说明根据本发明中描述的技术的时钟速率确定的实例操作的流程图。如图3中所说明,处理器12可确定GPU 14需要在设定时间周期内执行的命令集合中的命令的量(200)。举例来说,处理器12可确定命令量的增加或确定命令数目的减小。在处理器12上执行的产生命令的应用程序26或在处理器12上执行的操作系统24中的一者可确定GPU 14在设定时间周期内将执行的命令的量。
作为一实例,处理器12可确定GPU 14将执行包含第一组命令、第二组命令、第三组命令和第四组命令的命令集合。这些命令群组中的每一者可与在所述群组的执行完成时期满的标签相关联。处理器12可确定命令集合中需要执行的命令的数目。
处理器12可基于命令集合中的命令量在GPU 14执行命令之前确定用于GPU 14的第一时钟速率(102)。举例来说,处理器12可基于确定命令量的增加而确定GPU 14需要执行命令集合中的命令所处的时钟速率的增加,或处理器12可基于确定命令量的减小而确定GPU 14需要执行命令集合中的命令所处的时钟速率的减小。在一些实例中,处理器12可在GPU 14的着色器核心36或GPU的固定功能管线38的单元中的至少一者接收命令集合中的所述一或多个命令之前确定用于GPU 14的时钟速率。
此第一时钟速率可为在设定时间周期内执行命令所需要的GPU 14的预期性能水平。举例来说,此第一时钟速率可为例如“较高性能”等相对值、例如“最大性能”等固定值,或例如“200MHz”等数字值。此第一时钟速率可为上述GPU 14的预期性能水平的一个实例。
举例来说,处理器12可相对于GPU 14需要在设定时间周期中执行的当前命令量而确定GPU 14需要在设定时间周期中执行的命令的增加。作为响应,处理器12可确定GPU 14的时钟速率的增加(例如,性能水平的增加)。相反,处理器12可相对于GPU 14需要在设定时间周期中执行的当前命令量而确定GPU 14需要在设定时间周期中执行的命令的减少。作为响应,处理器12可确定GPU 14的时钟速率的减小(例如,性能水平的减小)。
处理器12可输出指示GPU 14的第一时钟速率的信息(104)。举例来说,应用程序26或操作系统24可致使图形驱动程序28实施功能调用。响应于实施所述功能调用,图形驱动程序28可输出指示预期性能水平的一或多个指令。GPU 14又接着可基于指示预期性能水平的信息而调整振荡器34的频率以使得GPU 14可在设定时间周期内执行命令。
处理器12可指示GPU 14执行命令集合中的一或多个命令(106)。举例来说,处理器12可提交或另外使指令可用于执行,且GPU 14可以通过所指示性能水平设定的时钟速率执行所述一或多个命令。作为另一实例,即使所述一或多个命令更早提交,处理器12经由图形驱动程序28也可指示GPU 14执行所述一或多个命令(例如,从存储器检索指令且执行)。
在命令集合中的一或多个命令的执行期间,处理器12可基于GPU 14先前执行的命令的历史而确定第二时钟速率(106)。举例来说,在GPU 14完成执行命令时,处理器12利用关于GPU 14的工作负荷的统计数据以确定第二时钟速率。
如上文所描述,假定存在包含第一组命令、第二组命令、第三组命令和第四组命令的命令集合。在此实例中,处理器12可初始地确定500MHz的第一时钟速率(或高级的性能水平,作为另一实例),且GPU 14可在执行命令之前将振荡器34的频率设定为500MHz。在第一组命令的执行期间,处理器12可确定GPU 14的使用,且确定仅利用了GPU 14的核心的50%。作为一实例,在与第一组相关联的标签的到期后,处理器12可即刻确定GPU 14的利用。又,处理器12可确定250MHz的时钟速率足以满足及时执行的需要。
在此前一实例中,500MHz是第一时钟速率,且250MHz是第二时钟速率。并且,提供GPU 14的使用作为处理器12可用来确定时钟速率的统计数据的一个实例。处理器12还可利用加法或其它统计数据,例如变化和趋势。在一些实例中,处理器12可随着执行命令集合中的越来越多的命令而连续地确定第二时钟速率。
处理器12可基于第一时钟速率和第二时钟速率而确定第三时钟速率(108)。举例来说,处理器12可基于第一时钟速率和第二时钟速率的加权平均而确定第三时钟速率。作为另一实例,处理器12可通过初始地对第一时钟速率比第二时钟速率更重地加权且在命令集合中的命令的执行期间逐渐地增加第二时钟速率的加权来确定第三时钟速率。以此方式,第一时钟速率可初始地为主要因数,且从所执行命令的历史确定的第二时钟速率可逐渐地变为较大因数。举例来说,处理器12可连续地确定可能波动的第二时钟速率,且基于第一时钟速率和所述连续确定的第二时钟速率而连续地确定第三时钟速率。
处理器12可输出指示第三时钟速率的信息(110)。类似于第一时钟速率,指示第三时钟速率的此信息可为相对值、固定值或数字值(作为几个实例)。举例来说,如果处理器12指示第一时钟速率为“较高”,那么处理器12可指示第三时钟速率为“较低”以指示频率的减少,或者为“较高”以指示频率的进一步增加。GPU 14接着可以第三时钟速率执行命令,直到GPU 14接收到信息以进一步增加或减小其时钟速率。
图4是说明根据本发明中描述的技术的时钟速率调整的实例操作的流程图。如图4中所说明,GPU 14可接收指示GPU的预期性能水平的信息以执行命令的集合(200)。预期性能水平是基于GPU 14将在设定时间周期内执行的命令集合中的命令的量。在一些实例中,所接收的信息可指示性能水平的相对改变。举例来说,所接收的信息可指示性能水平相对于当前性能水平的增加或减小。在一些实例中,所接收的信息可指示绝对性能水平(例如,最大、高、中等、低和最小,其中每一水平对应于特定时钟速率或指示特定时钟速率的数字值)。
GPU 14(例如,经由控制器30)可在执行命令集合中的命令之前基于指示性能水平的所接收信息而确定用于GPU 14的振荡器34的第一时钟速率(202)。举例来说,GPU 14可基于指示性能水平的增加的所接收信息而确定时钟速率的增加,或基于指示性能水平的减小的所接收信息而确定时钟速率的减小。在一些实例中,GPU 14可在着色器核心36和固定功能管线38的单元中的至少一者接收命令集合中的一或多个命令之前基于指示性能水平的所接收信息而确定时钟速率。
GPU 14可以第一时钟速率执行命令集合中的一或多个命令(204)。以此方式,GPU14可在执行命令之前且基于性能水平而设定时钟速率,并且然后以所述时钟速率执行命令。
在所述一或多个命令的执行期间,GPU 14可接收指示基于GPU 14先前执行的命令的历史而确定的经更新性能水平的信息(206)。举例来说,在GPU 14完成执行命令时,处理器12利用关于GPU 14的工作负荷的统计数据以确定性能水平。
GPU 14可基于指示经更新性能水平的信息而确定第二时钟速率(208)。GPU 14可在命令集合中的所述一或多个执行的命令之后以所确定的第二时钟速率执行一或多个命令(110)。在一些实例中,GPU 14可基于从处理器12接收的信息连续地调整时钟速率。因此,GPU 14执行后续命令的时钟速率可增加或减小。
在一或多个实例中,所描述功能可用硬件、软件、固件或其任何组合来实施。如果用软件实施,则所述功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于例如数据存储媒体等有形媒体。以此方式,计算机可读媒体可一般对应于非暂时性的有形的计算机可读存储媒体。数据存储媒体可为可由一或多个计算机或一个或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码及/或数据结构的任何可用媒体。计算机程序产品可以包含计算机可读媒体。
借助于实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可以用来存储指令或数据结构的形式的期望程序代码并且可以由计算机存取的任何其它媒体。应理解,计算机可读存储媒体和数据存储媒体并不包括载波、信号或其它暂时性媒体,而是针对非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
可由例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可以在经配置用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中实施,包括无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所公开的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可以结合合适的软件及/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
描述了各种实例。所述和其它实例属于所附权利要求书的范围内。

Claims (22)

1.一种时钟速率确定的方法,其包括:
以处理器确定图形处理单元GPU需要在设定时间周期内执行的命令集合中的命令量;
基于所述命令集合中的所述命令量在所述GPU执行所述命令集合中的命令之前确定用于所述GPU的时钟速率;
将指示所述时钟速率的信息输出到所述GPU;以及
指示所述GPU执行所述命令集合中的一或多个命令。
2.根据权利要求1所述的方法,
其中确定所述命令量包括确定所述命令量的增加或确定所述命令量的减小中的一者,且
其中确定所述GPU的所述时钟速率包括基于确定所述命令量的所述增加而确定所述GPU需要执行所述命令集合中的所述命令的所述时钟速率的增加,或者基于确定所述命令量的所述减小而确定所述GPU需要执行所述命令集合中的所述命令的所述时钟速率的减小。
3.根据权利要求1所述的方法,其中确定所述命令量包括以在所述处理器上执行的产生所述命令的应用程序或在所述处理器上执行的操作系统中的一者确定所述命令量。
4.根据权利要求1所述的方法,其中输出指示所述时钟速率的所述信息包括:
通过在所述GPU上执行的图形驱动程序实施功能调用;以及
响应于实施所述功能调用而输出指示预期性能水平的一或多个指令。
5.根据权利要求1所述的方法,其中所述时钟速率包括第一时钟速率,所述方法进一步包括:
在所述一或多个命令的执行期间,基于所述GPU先前执行的命令的历史而确定第二时钟速率;
基于所述第一时钟速率和所述第二时钟速率而确定第三时钟速率;以及
将指示所述第三时钟速率的信息输出到所述GPU。
6.根据权利要求5所述的方法,其中确定所述第三时钟速率包括基于所述第一时钟速率和所述第二时钟速率的加权平均而确定所述第三时钟速率。
7.根据权利要求5所述的方法,其中确定所述第三时钟速率包括在所述加权平均中初始地对所述第一时钟速率比所述第二时钟速率更重地加权,且在所述命令集合中的所述命令的执行期间在所述加权平均中逐渐地增加所述第二时钟速率的加权。
8.根据权利要求1所述的方法,其中确定所述时钟速率包括在所述GPU的着色器核心或所述GPU的固定功能管线的单元中的至少一者接收所述命令集合中的所述一或多个命令之前确定用于所述GPU的所述时钟速率。
9.根据权利要求1所述的方法,其中所述命令集合包括第一命令集合,且所述时钟速率包括第一时钟速率,所述方法进一步包括:
确定所述GPU需要在所述设定时间周期内执行的第二命令集合中的命令量;
基于所述第二命令集合中的所述命令量在所述GPU执行所述第二命令集合中的所述命令之前确定用于所述GPU的第二时钟速率;
将指示所述第二时钟速率的信息输出到所述GPU;以及
指示所述GPU执行所述第二命令集合中的一或多个命令。
10.一种时钟速率调整的方法,所述方法包括:
以图形处理单元GPU接收指示所述GPU执行命令集合的预期性能水平的信息,其中所述性能水平是基于所述GPU将在设定时间周期内执行的所述命令集合中的命令量;
在执行所述命令集合中的所述命令之前基于指示所述性能水平的所述所接收的信息而确定所述GPU的时钟速率;以及
以所述所确定的时钟速率执行所述命令集合中的一或多个命令。
11.根据权利要求10所述的方法,其中接收指示所述预期性能水平的信息包括接收指示所述预期性能水平相对于当前性能水平的增加或减小的信息。
12.根据权利要求10所述的方法,
其中接收指示所述预期性能水平的信息包括接收指示所述预期性能水平的增加的信息或接收指示所述性能水平的减小的信息中的一者,且
其中确定所述时钟速率包括基于指示所述性能水平的所述增加的所述所接收信息而确定所述时钟速率的增加或基于指示所述性能水平的所述减小的所述所接收信息而确定所述时钟速率的减小中的一者。
13.根据权利要求10所述的方法,其中所述时钟速率包括第一时钟速率,所述方法进一步包括:
在所述命令集合中的所述一或多个命令的执行期间,接收指示经更新性能水平的信息;
基于所述经更新性能水平而确定第二时钟速率;以及
在所述一或多个执行的命令之后以所述所确定的第二时钟速率执行一或多个命令。
14.一种用于处理数据的装置,其包括:
处理器;以及
图形处理单元GPU,
其中所述处理器经配置以:
确定所述GPU需要在设定时间周期内执行的命令集合中的命令量;
基于所述命令集合中的所述命令量在所述GPU执行所述命令集合中的命令之前确定用于所述GPU的时钟速率;以及
将指示所述时钟速率的信息输出到所述GPU;且
其中所述GPU经配置以:
接收指示所述时钟速率的所述信息;
从所述所接收的信息确定所述时钟速率;以及
以所述时钟速率执行所述命令集合中的一或多个命令。
15.根据权利要求14所述的装置,其中所述时钟速率包括第一时钟速率,其中所述处理器进一步经配置以:
在所述一或多个命令的执行期间,基于所述GPU先前执行的命令的历史而确定第二时钟速率;
基于所述第一时钟速率和所述第二时钟速率而确定第三时钟速率;以及
将指示所述第三时钟速率的信息输出到所述GPU,且
其中所述GPU进一步经配置以:
接收指示所述第三时钟速率的所述信息;
从所述所接收的信息确定所述第三时钟速率;以及
在所述一或多个执行的命令之后以所述所确定的第三时钟速率执行一或多个命令。
16.根据权利要求15所述的装置,其中为了确定所述第三时钟速率,所述处理器经配置以基于所述第一时钟速率和所述第二时钟速率的加权平均而确定所述第三时钟速率。
17.根据权利要求15所述的装置,其中为了确定所述第三时钟速率,所述处理器经配置以在所述加权平均中初始地对所述第一时钟速率比所述第二时钟速率更重地加权,且在所述命令集合中的所述命令的执行期间在所述加权平均中逐渐地增加所述第二时钟速率的加权。
18.根据权利要求14所述的装置,其中所述GPU包括着色器核心和固定功能管线的单元,且其中所述GPU经配置以在所述GPU的所述着色器核心或所述GPU的所述固定功能管线的所述单元中的至少一者接收所述命令集合中的所述一或多个命令之前接收指示所述GPU的所述时钟速率的信息。
19.根据权利要求14所述的装置,其中为了确定所述命令量,所述处理器经配置以借助在所述处理器上执行的产生所述命令的应用程序或在所述处理器上执行的操作系统中的一者确定所述命令量。
20.根据权利要求14所述的装置,其中为了输出指示所述时钟速率的所述信息,所述处理器经配置以:
通过在所述GPU上执行的图形驱动程序实施功能调用;以及
响应于实施所述功能调用而输出指示预期性能水平的一或多个指令。
21.一种上面存储有指令的计算机可读存储媒体,所述指令在执行时致使处理器:
确定图形处理单元GPU需要在设定时间周期内执行的命令集合中的命令量;
基于所述命令集合中的所述命令量在所述GPU执行所述命令集合中的命令之前确定用于所述GPU的时钟速率;
将指示所述时钟速率的信息输出到所述GPU;以及
指示所述GPU执行所述命令集合中的一或多个命令。
22.根据权利要求21所述的计算机可读存储媒体,其中所述时钟速率包括第一时钟速率,所述计算机可读存储媒体进一步包括致使所述处理器进行以下操作的指令:
在所述一或多个命令的执行期间,基于所述GPU先前执行的命令的历史而确定第二时钟速率;
基于所述第一时钟速率和所述第二时钟速率而确定第三时钟速率;以及
将指示所述第三时钟速率的信息输出到所述GPU。
CN201680006077.7A 2015-02-03 2016-01-12 用于处理单元的时钟速率调整 Expired - Fee Related CN107209543B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/612,425 2015-02-03
US14/612,425 US9940905B2 (en) 2015-02-03 2015-02-03 Clock rate adjustment for processing unit
PCT/US2016/013045 WO2016126391A1 (en) 2015-02-03 2016-01-12 Clock rate adjustment for processing unit

Publications (2)

Publication Number Publication Date
CN107209543A true CN107209543A (zh) 2017-09-26
CN107209543B CN107209543B (zh) 2019-12-27

Family

ID=55310920

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680006077.7A Expired - Fee Related CN107209543B (zh) 2015-02-03 2016-01-12 用于处理单元的时钟速率调整

Country Status (4)

Country Link
US (1) US9940905B2 (zh)
EP (1) EP3254171B1 (zh)
CN (1) CN107209543B (zh)
WO (1) WO2016126391A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124997A (zh) * 2019-12-25 2020-05-08 海光信息技术有限公司 数据发送方法、接收方法及装置、处理器芯片、服务器

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102452154B1 (ko) * 2015-10-27 2022-10-07 삼성전자주식회사 영상 처리 장치 및 이를 포함하는 표시 시스템
US10769747B2 (en) * 2017-03-31 2020-09-08 Intel Corporation Intermediate frame generation
US10579121B2 (en) * 2017-04-01 2020-03-03 Intel Corporation Processor power management
US10319065B2 (en) * 2017-04-13 2019-06-11 Microsoft Technology Licensing, Llc Intra-frame real-time frequency control
US10304154B2 (en) * 2017-04-24 2019-05-28 Intel Corporation Coordination and increased utilization of graphics processors during inference
US10373287B2 (en) * 2017-08-18 2019-08-06 Apple Inc. Fast GPU context switch
CN110324040A (zh) * 2019-05-06 2019-10-11 杭州阿姆科技有限公司 一种时钟频率调整的方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099964A1 (en) * 2001-01-22 2002-07-25 Andrej Zdravkovic Reducing power consumption by estimating engine load and reducing engine clock speed
US20080079732A1 (en) * 2006-10-02 2008-04-03 Samsung Electronics Co., Ltd Method of controlling voltage of power supplied to 3D graphics data processor and the 3D graphics data processor using the method
US20090313629A1 (en) * 2008-06-17 2009-12-17 Nec Electronics Corporation Task processing system and task processing method
US8650423B2 (en) * 2011-10-12 2014-02-11 Qualcomm Incorporated Dynamic voltage and clock scaling control based on running average, variant and trend
US20140063026A1 (en) * 2012-09-04 2014-03-06 Samsung Electronics Co., Ltd. Soc performing dynamic voltage and frequency scaling policies using 3d workload, and method using the same

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8695008B2 (en) 2011-04-05 2014-04-08 Qualcomm Incorporated Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099964A1 (en) * 2001-01-22 2002-07-25 Andrej Zdravkovic Reducing power consumption by estimating engine load and reducing engine clock speed
US20080079732A1 (en) * 2006-10-02 2008-04-03 Samsung Electronics Co., Ltd Method of controlling voltage of power supplied to 3D graphics data processor and the 3D graphics data processor using the method
US20090313629A1 (en) * 2008-06-17 2009-12-17 Nec Electronics Corporation Task processing system and task processing method
US8650423B2 (en) * 2011-10-12 2014-02-11 Qualcomm Incorporated Dynamic voltage and clock scaling control based on running average, variant and trend
US20140063026A1 (en) * 2012-09-04 2014-03-06 Samsung Electronics Co., Ltd. Soc performing dynamic voltage and frequency scaling policies using 3d workload, and method using the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124997A (zh) * 2019-12-25 2020-05-08 海光信息技术有限公司 数据发送方法、接收方法及装置、处理器芯片、服务器

Also Published As

Publication number Publication date
US9940905B2 (en) 2018-04-10
US20160225348A1 (en) 2016-08-04
EP3254171A1 (en) 2017-12-13
CN107209543B (zh) 2019-12-27
WO2016126391A1 (en) 2016-08-11
EP3254171B1 (en) 2018-07-18

Similar Documents

Publication Publication Date Title
CN107209543A (zh) 用于处理单元的时钟速率调整
JP6526920B2 (ja) 処理ユニットのためのフレームベースのクロックレート調整
US10007292B2 (en) Energy aware dynamic adjustment algorithm
CN102087619B (zh) 用于提高事件处理的涡轮加速性能的方法和装置
CN107851042A (zh) 使用命令流提示来表征gpu工作负载和电力管理
KR102009125B1 (ko) 프로세서 주파수 및 버스 대역폭의 활성 및 스톨 사이클 기반 동적 스케일링
CN108140234B (zh) 基于命令流标记的gpu操作算法选择
US20170199558A1 (en) Flexible and scalable energy model for estimating energy consumption
KR20160015864A (ko) 프로세서의 동적 전압 주파수 스케일링 방법
WO2021000220A1 (en) Methods and apparatus for dynamic jank reduction
US20210358079A1 (en) Methods and apparatus for adaptive rendering
WO2021151228A1 (en) Methods and apparatus for adaptive frame headroom
WO2021000226A1 (en) Methods and apparatus for optimizing frame response
WO2021196175A1 (en) Methods and apparatus for clock frequency adjustment based on frame latency
CN110275816A (zh) 进度条显示控制方法、装置及计算机可读存储介质
US11238772B2 (en) Methods and apparatus for compositor learning models

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20191227

Termination date: 20210112