CN108604113B - 用于处理单元的以帧为基础的时钟速率调整 - Google Patents

用于处理单元的以帧为基础的时钟速率调整 Download PDF

Info

Publication number
CN108604113B
CN108604113B CN201680080668.9A CN201680080668A CN108604113B CN 108604113 B CN108604113 B CN 108604113B CN 201680080668 A CN201680080668 A CN 201680080668A CN 108604113 B CN108604113 B CN 108604113B
Authority
CN
China
Prior art keywords
gpu
frame
clock rate
rendering
time
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
Application number
CN201680080668.9A
Other languages
English (en)
Other versions
CN108604113A (zh
Inventor
沈巧
赵松
N·法拉兹曼德
E·A·梅茨
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 CN108604113A publication Critical patent/CN108604113A/zh
Application granted granted Critical
Publication of CN108604113B publication Critical patent/CN108604113B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • 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
    • 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/325Power saving in peripheral device
    • G06F1/3265Power saving in display device
    • 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
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Power Sources (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本发明描述处理器基于图形处理单元GPU完成当前帧的再现的时间与所述GPU完成紧接在所述当前帧之前的前一帧的再现的时间之间的时间间隔来确定所述GPU忙碌于再现所述当前帧的程度的技术。所述处理器基于所述GPU忙碌于再现所述当前帧的程度的所述确定来设定所述GPU的时钟速率。

Description

用于处理单元的以帧为基础的时钟速率调整
技术领域
本发明涉及时钟速率调整,且更特定来说涉及图形处理单元(GPU)的时钟速率调整。
背景技术
移动装置通过有限大小及/或容量的电池供电。通常,移动装置用于进行电话通话、检查电子邮件、记录/播放照片/视频、收听无线电、导航、网页浏览、玩游戏、管理装置,及执行计算。许多此些动作利用图形处理单元(GPU)来执行一些任务。实例GPU任务包含内容再现到显示器及执行通用计算(compute computation)(例如,在通用GPU(GPGPU)操作中)。因此,GPU通常为移动装置中的功率的大消费者。因而,管理GPU的功率消耗以便延长电池寿命为有益的。
发明内容
一般来说,本发明描述用于主动地调整图形处理单元(GPU)的时钟信号的频率的技术。在一些实例中,中央处理单元(CPU)确定GPU完成一个帧的再现的时间与GPU完成紧接在前面的帧的再现的时间之间的时间间隔。CPU也确定GPU在此时间间隔期间忙碌的程度,并基于GPU在所述时间间隔期间忙碌的程度的确定而确定GPU的时钟信号的频率。以此方式,CPU可基于单个帧的忙碌程度迅速确定时钟信号的频率,而不是在确定时钟信号的频率之前等待多个帧被处理。
在一个实例中,本发明描述一种时钟速率确定的方法,所述方法包括:通过处理器确定图形处理单元(GPU)完成再现第一帧的第一时间例项;通过处理器确定GPU完成再现紧接在第一帧之前的第二帧的第二时间例项;通过处理器基于第一时间例项及第二时间例项而确定时间间隔;通过处理器确定在时间间隔期间用于再现第一帧的GPU的忙碌程度;及基于确定出的忙碌程度设定GPU的时钟速率。
在一个实例中,本发明描述一种用于时钟速率确定的装置,所述装置包括:存储器,其经配置以存储由图形处理单元(GPU)使用用于再现第一帧及第二帧的图形数据;及处理器,其包括集成电路,所述处理器经配置以确定GPU完成再现第一帧的第一时间例项,确定GPU完成再现第二帧的第二时间例项,基于第一时间例项及第二时间例项确定时间间隔,确定在时间间隔期间用于再现第一帧的GPU的忙碌程度,并基于确定出的忙碌程度设定GPU的时钟速率。
在一个实例中,本发明描述一种存储指令的非暂时性计算机可读存储媒体,所述指令当经执行时使得一个或多个处理器执行以下操作:确定图形处理单元(GPU)完成再现第一帧的第一时间例项;确定GPU完成再现紧接在第一帧之前的第二帧的第二时间例项;基于第一时间例项及第二时间例项确定时间间隔;确定在时间间隔期间用于再现第一帧的GPU的忙碌程度;并基于确定出的忙碌程度设定GPU的时钟速率。
在一个实例中,本发明描述一种用于时钟速率确定的装置,所述装置包括;用于确定图形处理单元(GPU)完成再现第一帧的第一时间例项的装置;用于确定GPU完成再现紧接在第一帧之前的第二帧的第二时间例项的装置;用于基于第一时间例项及第二时间例项确定时间间隔的装置;用于确定在时间间隔期间用于再现第一帧的GPU的忙碌程度的装置;及用于基于确定出的忙碌程度设定GPU的时钟速率的装置。
在以下随附图式及具体实施方式中阐述一或多个实例的细节。其它特征、目标及优势从描述、图式及权利要求书将为显而易见的。
附图说明
图1为说明根据本发明中所描述的一或多个实例技术的用于处理数据的实例装置的框图。
图2为更详细地说明图1中所说明的装置的组件的框图。
图3A到3C为说明图形处理单元(GPU)接收用于再现帧的命令的实例的时序图。
图4为说明GPU接收用于再现帧的命令的另一实例的时序图。
图5为说明相对于时间段的GPU将执行的命令的数目的图表。
图6A为说明利用一个实例技术的相对于图5中所说明的时间段的忙碌程度百分比确定的图表。
图6B为说明利用另一实例技术的相对于图5中所说明的时间段的忙碌程度百分比确定的图表。
图7为说明根据本发明中描述的技术的时钟速率确定的实例方法的流程图。
具体实施方式
例如图形处理单元(GPU)的处理单元包含设定GPU处理指令所藉以的速率(例如,设定GPU的操作频率)的内部时钟。较高时钟速率导致GPU的较高功率消耗,但允许GPU每秒处理更多命令。换句话说,较高时钟速率允许GPU提供较高性能,但以较高功率消耗为代价。较低时钟速率导致GPU的较小功率消耗,但减少GPU每秒可处理的命令的数目。换句话说,较低时钟速率使得GPU提供较低性能,但以较低功率消耗为收益。举例来说,施加到GPU或GPU内的振荡器的电压电平设定时钟速率且较高电压电平导致较高时钟速率,但更多功率消耗,且较低电压电平导致较低时钟速率,及较小功率消耗。
在一些实例中,主机处理器(例如,中央处理单元(CPU))可确定GPU操作应藉以的频率。如上文所描述,在较高频率下的操作导致快速完成,但以额外功率消耗为代价。相应地,主机处理器尝试设定GPU的操作频率以在不影响及时完成情况下使功率消耗保持为低。
为易于描述,本发明描述主机处理器确定GPU的操作频率(例如,时钟速率)。然而,在本发明中所描述的技术并不如此受限,且实例技术可应用于GPU,也如下文所描述。
本发明描述基于由GPU用以再现一个帧的资源主动地调整GPU的时钟速率(例如,调整GPU的操作频率)所藉以的实例方式。为确定操作频率,主机处理器确定在某一时间量内如何忙碌(例如,多少算术单元经操作)。作为一个实例,主机处理器可确定GPU在所设定时间间隔如何忙碌。作为另一实例,主机处理器可每当GPU空闲时(例如,从GPU上次空闲的时间到GPU再次空闲时的例项的时间间隔)确定GPU如何忙碌。在一些情况中,尽管GPU将处理的数据量可相对恒定,但GPU可在常规间隔中不接收数据。因此,在设定间隔处或每当GPU空闲时确定GPU如何忙碌可导致主机处理器确定极大波动GPU操作频率电平。在其中GPU确定其时钟速率的实例中,GPU可执行类似于上文针对主机处理器所描述的那些功能的功能,且与主机处理器相同,GPU可确定极大波动操作频率电平。
在本发明中所描述的技术中,主机处理器确定GPU完成再现帧的时间(例如,每当GPU完成处理帧并到达帧的末端时)。主机处理器接着确定从帧的处理完成到紧接在前面的帧的处理完成GPU如何忙碌。通过测量GPU帧到帧如何忙碌,主机处理器可更准确确定GPU的操作频率。在一些实例中,GPU可确定从帧的处理完成到紧接在前面的帧的处理完成GPU如何忙碌,并确定GPU的操作频率。
可存在主机处理器可确定GPU完成处理帧的时间所藉以的各种方式。作为一个实例,GPU可每当GPU完成处理帧所需要的多个任务中的一任务时向主机处理器指示。在完成最后任务之后,主机处理器可确定GPU在帧的末端处。在一些情况中,在GPU完成处理帧之后,主机处理器执行用以交换缓冲器以释放缓冲器空间以用于处理下一帧的功能。举例来说,用以交换缓冲器的功能将一个帧缓冲器从读取改变到写入及将另一缓冲器从写入改变到读取,以使得一个缓冲器被写入同时另一个缓冲器被显示。交换缓冲器的功能可经配置以包含主机处理器可确定帧的末端所藉以的指令。
在其中GPU设定其时钟速率的实例中,GPU(例如,经由控制器)可确定GPU完成每一帧的处理的时间。作为响应,控制器可确定GPU帧到帧如何忙碌,且基于帧到帧忙碌时间确定时钟速率。
由于实例技术可通过主机处理器、GPU或执行一些功能的主机处理器与执行一些功能的GPU的某一组合实施,因此在本发明中所描述的技术可被视为通过处理器执行。处理器的一个实例为主机处理器(例如,其中主机处理器确定GPU的时钟速率并指导GPU设定时钟速率),处理器的一个实例为GPU(例如,其中GPU确定其自身时钟速率并相应地设定时钟速率),且处理器的一个实例为主机处理器与GPU的组合(例如,主机处理器与GPU一起确定GPU的时钟速率并设定GPU的时钟速率)。
相应地,处理器可确定在GPU完成处理第一帧时的第一时间例项,及在GPU完成处理紧接在第一帧之前的第二帧时的第二时间例项。处理器可基于第一时间例项及第二时间例项确定时间间隔,并确定在时间间隔期间GPU的忙碌程度。基于忙碌程度,处理器设定GPU的时钟速率。
举例来说,处理器可基于忙碌程度确定GPU的操作频率(例如,时钟速率)。在其中主机处理器确定时钟速率的实例中,主机处理器可指导GPU基于经确定时钟速率设定时钟速率。在其中GPU确定时钟速率的实例中,GPU可基于经确定时钟速率设定时钟速率。
图1为说明可用于实施本发明的技术的实例计算装置2的框图。计算装置2可包括个人计算机、台式计算机、膝上型计算机、计算机工作站、视频游戏平台或控制台、无线通信装置(例如,移动电话、蜂窝式电话、卫星电话及/或移动电话手持机)、陆线电话、因特网电话、手持型装置(例如,便携式视频游戏装置或个人数字助理(PDA))、个人音乐播放器、视频播放器、显示装置、电视、电视机顶盒、服务器、中间网络装置、大型计算机或处理及/或显示图形数据的任何其它类型的装置。
如图1的实例中所说明,计算装置2包含用户输入接口4、CPU 6、存储器控制器8、系统存储器10、图形处理单元(GPU)12、本地存储器14、显示接口16、显示器18及总线20。用户输入接口4、CPU 6、存储器控制器8、GPU 12及显示接口16可使用总线20彼此通信。总线20可为多种总线结构中的任一者,例如第三代总线(例如,超传输总线或无线带宽总线)、第二代总线(例如,高级图形端口总线、外围组件互连(PCI)Express总线或高级可扩展接口(AXI)总线)或另一类型的总线或装置互连件。应注意,图1中所示的不同组件之间的总线及通信接口的特定配置仅为示范性的,且计算装置的其它配置及/或具有相同或不同组件的其它图形处理系统可用以实施本发明的技术。
CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以使CPU 6执行一或多个软件应用。在CPU 6上执行的软件应用可包含:例如,操作系统、文书处理器应用、电子邮件应用、总分析表应用、媒体播放器应用、视频游戏应用、图形用户接口应用或另一程序。用户可经由一或多个输入装置(未图示)提供输入到计算装置2,所述输入装置例如键盘、鼠标、麦克风、触控板或经由用户接口4经耦合到计算装置2的另一输入装置。
在CPU 6上执行的软件应用可包含一或多个图形再现指令,其指导CPU 6将图形数据再现到显示器18。在一些实例中,软件指令可符合图形应用设计接口(API),例如开放图形库
Figure BDA0001749839690000051
API、开放图形库嵌入系统(OpenGL ES)API、OpenCL API、Direct3D API、X3D API、RenderMan API、WebGL API,或任何其它公共或专有标准图形API。技术不应考虑为限于需要特定API。
为了处理图形再现指令,CPU 6可将一或多个图形再现命令发出到GPU 12以使GPU12执行图形数据的再现的一些或全部。在一些实例中,待再现的图形数据可包含例如点、线、三角形、四边形、三角形带等图形基元的列表。
存储器控制器8促进将数据转移进入到及离开系统存储器10。举例来说,存储器控制器8可接收存储器读取及写入命令,且服务关于存储器10的此类命令以便提供用于计算装置2中的组件的存储器服务。将存储器控制器8通信地耦合到系统存储器10。尽管在图1的实例计算装置2中将存储器控制器8说明为从CPU 6及系统存储器10两者分离的处理模块,但在其它实例中,可将存储器控制器8的功能性中的一些或全部实施于CPU 6及系统存储器10中的一者或两者上。
系统存储器10可存储可由CPU 6存取以用于执行的程序模块及/或指令及/或由在CPU 6上执行的程序使用的数据。举例来说,系统存储器10可存储用户应用及与所述应用相关联的图形数据。系统存储器10可另外存储用于由计算装置2的其它组件使用及/或由其产生的信息。举例来说,系统存储器10可充当用于GPU 12的装置存储器且可存储待由GPU 12操作的数据以及由GPU 12执行的操作产生的数据。举例来说,系统存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或其类似者的任何组合。另外,系统存储器10可存储命令流以供GPU 12处理。系统存储器10可包含一或多种依电性或非依电性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
在一些方面中,系统存储器10可包含使CPU 6及/或GPU 12执行在本发明中归于CPU 6及GPU 12的功能的指令。相应地,系统存储器10可为其上存储有指令的计算机可读存储媒体,所述指令当经执行时使得一个或多个处理器(例如,CPU 6及GPU 12)执行各种功能。
在一些实例中,系统存储器10为非暂时性存储媒体。术语“非暂时性”指示存储媒体并不以载波或传播信号体现。然而,术语“非暂时性”不应解释成意谓系统存储器10为非可移动或其内容为静态。作为一个实例,可从装置2去除系统存储器10,并将其移动到另一装置。作为另一实例,可将大体上类似于系统存储器10的存储器插入到装置2中。在某些实例中,非暂时性存储媒体可存储随着时间的过去可改变的数据(例如,在RAM中)。
GPU 12可经配置以执行图形操作以向显示器18再现一或多个图形基元。因此,当在CPU 6上执行的软件应用中的一者需要图形处理时,CPU 6可向GPU 12提供图形命令及图形数据以用于向显示器18再现。图形命令可包含(例如)绘制命令(例如绘制调用)、GPU状态程序设计命令、存储器转移命令、通用计算命令、核心执行命令等。在一些实例中,CPU 6可通过将命令及图形数据写入到存储器10而将命令及图形数据提供到GPU 12,存储器10可由GPU 12存取。在一些实例中,GPU 12可经进一步配置以针对在CPU 6上执行的应用执行通用计算。
在一些情况下,GPU 12可建置有与CPU 6相比提供对向量运算更有效处理的高度并行的结构。举例来说,GPU 12可包含经配置以按并行方式对多个顶点或像素操作的多个处理元件。在一些情况下,GPU 12的高度并行性质允许GPU 12比使用CPU 6直接将场景绘制到显示器18更快速地将图形图像(例如,GUI及二维(2D)及/或三维(3D)图形场景)绘制到显示器18上。另外,GPU 12的高度并行性质可允许GPU 12比CPU 6更快速地处理用于通用计算应用的某些类型的向量及矩阵运算。
在一些情况下,可将GPU 12集成到计算装置2的母板中。在其它情况下,GPU 12可存在于图形卡上,所述图形卡安装于计算装置2的母板中的端口中或可以其它方式并入经配置以与计算装置2交互操作的外围装置内。在其它情况下,GPU 12可定位于与CPU 6相同的微芯片上,从而形成系统单芯片(SoC)。GPU 12及CPU 6可包含一个或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP),或其它等效集成或离散逻辑电路。
GPU 12可直接耦合到本地存储器14。因此,GPU 12可在不必使用总线20的情况下从本地存储器14读取数据并将数据写入到本地存储器14。换句话说,GPU 12可使用本地存储器而非芯片外存储器来在本地处理数据。此通过消除GPU 12经由总线20读取及写入数据的需要来允许GPU 12以更高效方式操作,经由总线读取及写入数据可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独高速缓存存储器,而是改为经由总线20利用系统存储器10。本地存储器14可包含一或多个依电性或非依电性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
CPU 6及/或GPU 12可在系统存储器10内分配的帧缓冲器中存储再现的图像数据。显示接口16可从帧缓冲器检索所述数据并配置显示器18以显示由所再现图像数据表示的图像。在一些实例中,显示接口16可包含数字到模拟转换器(DAC),其经配置以将从帧缓冲器检索的数字值转换成可由显示器18消耗的模拟信号。在其它实例中,显示接口16可将数字值直接传递到显示器18以用于处理。显示器18可包含:监视器、电视、投影装置、液晶显示器(LCD)、等离子体显示板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示器18可集成于计算装置2内。举例来说,显示器18可为移动电话手持机或平板计算机的屏幕。替代地,显示器18可为经由有线或无线通信链路经耦合到计算装置2的独立装置。举例来说,显示器18可为经由电缆或无线链路经连接到个人计算机的计算机监视器或平板显示器。
如所描述,CPU 6可将图形处理分担到GPU 12,例如需要大规模并行运算的任务。作为一个实例,图形处理需要大规模并行运算,且CPU 6可将此类图形处理任务分担到GPU12。然而,例如矩阵运算的其它运算也可得益于GPU 12的并行处理能力。在此些实例中,CPU6可充分利用GPU 12的并行处理能力,以使GPU 12执行非图形相关运算。
在本发明中所描述的技术中,第一处理单元(例如,CPU 6)将某些任务分担到第二处理单元(例如,GPU 12)。为分担任务,CPU 6输出待由GPU 12执行的命令及为命令的运算元的数据(例如,命令操作所针对的数据)到系统存储器10及/或直接输出到GPU 12。GPU 12直接从CPU 6及/或从系统存储器10接收命令及数据,并执行所述命令。在一些实例中,CPU6可将待由GPU 12执行的命令,及用于命令的数据运算元存储于在包含GPU 12及CPU 6的IC本地并由CPU 6及GPU 12两者共享的存储器(例如,本地存储器14)中,而非将所述命令及数据运算元存储在系统存储器10中。一般来说,本发明中所描述的技术适用于CPU 6可使命令可用于在GPU 12上执行所藉以的各种方式,且所述技术不限于上文的实例。
GPU 12执行命令所藉以的速率是通过时钟信号的频率(也称作GPU 12的时钟速率或操作频率)设定。举例来说,GPU 12可在时钟信号的每一上升或下降边缘执行命令,或在时钟信号的每一上升边缘执行一个命令并在时钟信号的每一下降边缘执行另一命令。因此,时钟信号的上升或下降边缘多久一次出现在时间段内(例如,时钟信号的频率)设定GPU12在所述时间段内执行多少命令。
在一些实例(例如CPU 6将待由GPU 12执行的命令存储在存储器(例如,系统存储器10或本地存储器)中的那些实例)中,CPU 6可输出识别GPU 12将执行的命令的群组的存储器地址信息。GPU 12将执行的命令的群组被称为经提交的命令。在其中CPU 6直接输出命令到GPU 12的实例中,所提交命令包含CPU 6指导GPU 12直接地执行的那些命令。
可存在CPU 6可分群命令所藉以的各种方式。作为一个实例,命令的群组包含由GPU 12再现一个帧所需要的所有命令。作为另一实例,命令的群组可为所谓的在GPU 12不切换到其它命令情况下待一起被执行的“原子命令”。分群经提交到GPU 12的命令的其它方式可为可能的,且本发明不限于上述实例技术。
在一些情况中,GPU 12可在设定的时间段内执行所提交命令。举例来说,装置2可为手持型装置,其中显示器18也充当用户接口。作为一个实例,为达成流畅(也称作无闪避)用户接口,GPU 12可在大致16毫秒(ms)内完成所提交命令的执行,假定每秒60帧的帧速率(其它时间段为可能的)。此16ms时间段可被称为“vsync”窗,且如果GPU 12未在vsync窗内完成所提交命令的执行,那么在GPU 12的执行管线中可存在“泡”,从而引起闪避填充的用户接口。
GPU 12的执行管线中的“泡”指其中GPU 12的正执行命令的单元已部分完成命令的执行从而产生一些中间数据,但GPU 12的将接收中间数据的单元仍忙于执行其它命令从而致使中间数据保持构建的情况。举例来说,GPU 12的执行管线包含一系列单元,所述系列单元各自产生通过系列中(即,在管线中)的下一单元进一步处理的中间数据。在一些情况中,与GPU 12的执行管线的下游单元可消耗中间数据速度相比,GPU 12的执行管线的上游单元更快地产生中间数据,从而产生所谓的泡。
CPU 6提交的命令量及CPU 6提交命令的时间的时序无需一定为恒定的。可存在GPU 12将执行的命令的数目的流入或减少。举例来说,在CPU 6上执行的应用(例如,第三方应用)可增加或减少待由GPU 12执行的命令的数目,或在CPU 6上执行的操作系统(例如,构架自身)可增加或减少待由GPU 12执行的命令的数目。作为另一实例,CPU 6可在时间0处提交第一命令群组,在时间1处提交第二命令群组,并在时间2处提交第三命令群组。然而,第一命令群组提交与第二命令群组提交之间的时间间隔可不同于第二命令提交与第三命令群组提交群组之间的时间间隔。
由于GPU 12将在设定时间段(例如,16ms)内执行的命令量可改变,因此GPU 12的时钟信号的频率(即,GPU 12的时钟速率或GPU 12的操作频率)可需要增加或减少以使得GPU 12能够在设定时间段内执行命令而无需不必要地增加功率消耗。GPU 12在设定时间段内需要执行的命令量可改变,此是由于命令的群组中存在需要在设定时间段内执行的更多或更少命令,此是由于存在需要在设定时间段内执行的命令群组的数目的增加或减少,或两个原因的组合。
如果时钟信号的频率永久地保持在相对高频下,那么GPU 12将能够在大部分情况下及时执行所提交命令。然而,以相对高频执行命令使得GPU 12的功率消耗增加(例如,需要更多电功率以较高时钟速率驱动GPU 12)。如果时钟信号的频率永久地保持在相对低频率处,那么GPU 12的功率消耗可减少(例如,需要较小电功率以较低时钟速率驱动GPU 12),但GPU 12可不能够在大部分情况下及时执行所提交命令,从而导致闪避行为及可能其它不需要的效应。
本发明中所描述的技术描述基于在特定时间间隔内GPU 12的使用情况主动地增加或减少GPU 12的时钟速率(即,时钟信号的频率)所藉以的实例方式。用以确定GPU 12的时钟速率的时间间隔的一个实例为GPU 12完成当前帧的再现的时间与GPU 12完成紧接在当前帧之前的前一帧的再现的时间之间的时间间隔。如本发明中所使用,再现帧的完成指GPU 12执行再现帧所需要的所有命令,包含但未必始终包含用以将再现的帧存储在系统存储器10中的命令。举例来说,再现帧的完成可被视为在GPU 12确定帧的最后像素的像素值时或在GPU 12将帧的最后像素的像素值写入到系统存储器10时的例项。
如在本发明中所使用,帧指可被呈现的完整图像,但在一些实例中可为完整图像的一部分。举例来说,可存在并不每次重新再现的静态背景,但通过GPU 12再现的帧可与静态背景复合(例如,通过显示接口16)以产生完整图像。作为另一实例,显示接口16可组合视频与通过GPU 12再现的帧。
帧包含表示图形内容的多个像素,其中每一像素具有像素值。举例来说,在GPU 12再现帧之后,GPU 12将帧的像素的所得像素值存储在帧缓冲器中,所述帧缓冲器可在系统存储器10中。显示接口16从帧缓冲器接收帧的像素的像素值并基于像素值输出值以使显示器18显示帧的图形内容。在一些实例中,显示接口16使显示器18在每秒60个帧(fps)的速率下显示帧(例如,大致每16.67ms显示一帧)。
在以下描述中,关于CPU 6确定GPU 12的忙碌程度及设定GPU 12的时钟速率描述实例技术。然而,此些技术也可通过GPU 12或CPU 6与GPU 12一起实施。
为确保GPU 12在足够高但不过高的操作频率下操作以确保满足60fps要求,CPU 6可确定GPU 12的忙碌程度,忙碌程度指示GPU 12将如何忙碌地再现帧。忙碌程度指GPU 12在时间间隔期间执行再现帧的命令的时间量。考虑另一方式,忙碌程度指示在时间间隔期间使用多少GPU循环(例如,GPU 12的时钟循环)来再现帧。忙碌程度测量值可以时间为单位,且有时可表示为百分比(例如,忙碌时间量除以乘以100的时间间隔)。一般来说,忙碌程度指GPU 12完成帧工作负荷所花费的时间量。
GPU 12可包含每当GPU 12内的单元存储数据到一或多个通用寄存器(GPR)及/或从一或多个通用寄存器(GPR)读取数据时递增计数器的电路。在时间间隔结束处(例如,在GPU 12完成帧的再现之后),CPU 6可确定GPU 12内的单元存取一或多个GPR以再现帧的次数。举例来说,CPU 6可确定在完成紧接在前面的帧的再现的结束处的计数器值与在完成当前帧的再现的结束处的计数器值之间的差以确定GPU 12内的单元存取所述一或多个GPR以再现帧的次数。
GPU 12内的单元存取一或多个GPR的次数可为用以再现帧的时钟循环的数目的充分近似值。基于帧再现期间的GPU 12的时钟速率及用以再现帧的时钟循环的数目,CPU 6可确定GPU 12在帧再现期间忙碌的时间量。举例来说,用以再现帧的时钟循环的数目乘以GPU12的时钟速率的周期指示GPU 12在帧再现期间忙碌的时间量(例如,用于再现帧的GPU 12的忙碌程度)。
作为另一实例,GPU 12可包含只要任一GPU子块(例如,GPU 12内的单元)忙碌便递增计数器以及GPU 12的时钟周期的电路。计数器中的值指示用以再现帧的时钟循环的数目。
上述内容为CPU 6确定GPU 12的忙碌程度所藉以的两个实例方式。本发明中所描述的技术不限于用以确定GPU 12的忙碌程度的此特定实例。可存在用以确定GPU 12的忙碌程度的多种不同方式,且CPU 6可采用所述不同方式中的一或多者来确定GPU 12的忙碌程度。
CPU 6可将GPU 12忙于再现当前帧的时间量除以时间间隔的时间量以确定GPU 12的忙碌程度百分比。在一些实例中,CPU 6可将GPU 12忙碌用于再现当前帧的时间量除以先前N数目个时间间隔的平均时间量以确定GPU 12的忙碌程度百分比。在任一实例中,忙碌程度百分比是基于当前帧的忙碌程度且并不基于任何其它帧的忙碌程度(例如,GPU 12怎样忙碌于再现仅仅当前帧)。
CPU 6接着可确定是增加抑或减少GPU 12的时钟速率。举例来说,如果忙碌程度百分比大于第一阈值,那么CPU 6可增加GPU 12的时钟速率且如果忙碌百分比小于第二阈值,那么CPU 6可减少GPU 12的时钟速率。第一阈值及第二阈值可为不同阈值或相同阈值。在一些实例中,可存在CPU 6可确定增加或减少GPU 12的时钟速率多少所藉以的多个阈值。
在一些实例中,GPU 12可确定GPU 12完成当前帧的再现的时间与GPU 12完成紧接在当前帧之前的前一帧的再现的时间之间的时间间隔,而非CPU 6或结合CPU 6。举例来说,GPU 12的控制器可从上文所描述的实例计数器读取以确定GPU 12在帧再现期间怎样忙碌以及先前N数目个时间间隔的GPU 12忙于再现的平均时间量。GPU 12的控制器接着可类似于关于CPU 6描述的上述实例而增加或减少时钟速率。
通过基于帧末端到帧末端(例如,GPU 12完成当前帧的再现的时间与GPU 12完成紧接在当前帧之前的前一帧的再现的时间之间的时间间隔)确定忙碌程度,CPU 6及/或GPU12可相对迅速及相对准确地确定GPU 12的时钟速率。在一些技术中,CPU 6可基于在GPU 12空闲时的例项确定时间间隔,而非基于帧末端到帧末端确定时间间隔,CPU 6及/或GPU 12确定在所述时间间隔内的忙碌程度或忙碌程度百分比。
然而,基于GPU 12空闲的时间或基于所呈现时间间隔确定忙碌程度或忙碌程度百分比可需要对多个忙碌程度或忙碌程度百分比进行平均以确定准确忙碌程度或忙碌程度百分比。确定忙碌程度或忙碌程度百分比为平均值需要CPU 6等待GPU 12再现多个帧,此是由于CPU 6可确定GPU 12的时钟速率。等待GPU 12再现多个帧导致用以确定忙碌程度或忙碌程度百分比的长延迟,且延迟GPU 12的时钟速率调整,此可导致闪避行为。
举例来说,如果GPU 12在阈值时间量内不输出任何图形数据,那么GPU 12被认为空闲。在一些实例中,CPU 6监视由GPU 12对GPU 12将像素值存储到的存储位置的存取以确定在临限时间量中无图形数据输出。作为响应,如上文所描述,CPU 6从计数器读取以确定忙碌程度及忙碌程度百分比。举例来说,CPU 6确定从GPU 12为空闲的最后时间到GPU 12为空闲的当前例项(例如,空闲到空闲时间)的计数器的差异。
然而,由于GPU 12变为空闲的时间及在GPU 12变为空闲时的时间之间处理的帧的数目可为相对随机的,因此依赖于GPU 12变为空闲之时的例项在所有情形中可不为有益的。举例来说,常常,一个帧紧跟在另一个帧之后,意谓在GPU 12的空闲到空闲时间之间存在相对大间隙。如果仅仅一个帧在GPU 12的空闲到空闲时间之间再现,那么空闲到空闲时间可相对短暂。即使帧中的每一者的工作负荷为相同的,此仍导致使忙碌程度百分比波动。为抵消波动,CPU 6可对在多个空闲到空闲时间间隔内的忙碌程度百分比进行平均,此延迟设定GPU 12的时钟速率之时。另外,如果在存在空闲之前存在长延迟(例如,由于多个帧在其间没有空闲时间情况下再现),那么CPU 6可在确定用于GPU 12的时钟速率时延迟。
另外,在一些情况中,可在帧的处理内存在空闲时间。举例来说,CPU 6可提交命令到GPU 12以再现帧所藉以的方式可包含其中CPU 6提交多个命令到GPU以再现帧,且接着存在期间CPU 6不提交额外命令的部分,且接着在所述部分之后,CPU 6提交剩余命令到GPU以再现帧的情形。在此情况下,在命令的提交之间的此部分期间,GPU 12可为空闲的。与其中GPU 12在再现帧的一部分期间为空闲的仅一个例项相比,可存在更多空闲时间。发生在GPU12在再现帧的过程中时的此空闲时间可触发CPU 6确定时钟速率,所述确定可是在GPU 12仍再现帧时基于不充分信息。
确定时钟速率时的延迟意谓GPU 12并不迅速对GPU 12需要执行的命令量的变化作出反应。举例来说,如果GPU 12的时钟速率响应于工作负荷的增加而不渐升,那么归因于帧可能丢弃而在显示于显示器18上的用户接口中可存在闪避。如果GPU 12的时钟速率响应于工作负荷的减少而不渐降,那么GPU 12可浪费功率。在一些情况中,在工作负荷减少之后可在减缓GPU 12的时钟速率时存在200到800ms延迟,在此期间由GPU 12消耗的功率不必大于其应消耗的功率。
在使用本发明中描述的技术情况下,CPU 6可依赖于与单个帧的再现有关的信息以确定时钟速率,其允许CPU 6确定GPU 12的时钟速率而不需忙碌程度或忙碌程度百分比的多个测量值。另外,由于CPU 6使用帧末端来触发确定忙碌程度或忙碌程度百分比的时间,因此甚至在存在不具有空闲时间的背对背帧的情况下或在再现帧中间存在空闲时间的情况下,可能对忙碌程度或忙碌程度百分比确定几乎没有影响。在一些实例中,GPU 12可实施类似技术以确定其自身时钟速率,而非CPU 6确定GPU 12的时钟速率。
为确定GPU 12完成再现帧的时间,CPU 6可从GPU 12接收CPU 6用以确定GPU 12完成再现帧的信息(例如,输出帧的最后像素的像素值)。作为一个实例,作为OpenGL API的部分,在再现帧结束处,GPU 12可请求系统存储器10中的存储器空间用于再现下一帧。为请求存储器空间,GPU 12可输出对于存储器空间的请求到CPU 6,且CPU 6可使用此存储器请求的接收以确定GPU 12完成帧的再现。举例来说,GPU 12执行gl.SwapBuffer API以输出对于存储器空间的请求。作为实例,gl.SwapBuffer可将缓冲器从写入改变到读取并将另一缓冲器从读取改变到写入,但请求存储器空间的其它方式为可能的。CPU 6使用请求的接收以确定GPU 12完成帧的再现。
作为另一实例,GPU 12的软件工具包可包含开发者编程GPU 12以在完成再现帧时调用的用户模式驱动器(UMD),且UMD的执行使得GPU 12输出帧末端标志。CPU 6使用帧末端标志以确定GPU 12完成帧的再现。作为另一实例,gl.SwapBuffer API可直接以UMD更新,以使得CPU 6基于gl.SwapBuffer API接收帧末端标志且不需要开发者干预。
用于CPU 6确定GPU 12完成帧的再现的其它技术为可能的且在本发明中所描述的技术不应被考虑限制于上文的实例。此外,在其中GPU 12确定帧末端到帧末端时间间隔的实例中,GPU 12的控制器可确定GPU 12执行gl.SwapBuffer API的时间或UMD被执行的时间。在此些情况下,控制器可确定GPU 12到达帧末端。
在本发明中所描述的技术中,处理器(例如,也称作主机处理器的CPU 6、GPU 12,或两者的组合)可确定在GPU 12完成再现第一帧时的第一时间例项并确定在GPU 12完成再现紧接在第一帧之前的第二帧时的第二时间例项。第一时间例项为在GPU 12确定当前帧的最后像素的像素值时的例项或在GPU 12输出当前帧的最后像素的像素值时的例项。第二时间例项为在GPU 12确定前一帧的最后像素的像素值时的例项或在GPU 12输出当前帧的最后像素的像素值时的例项。
在一些情况中,GPU 12可已在当前帧的再现期间的至少一部分中空闲。举例来说,从GPU 12开始再现第一帧的时间起,GPU 12可不连续再现帧,且可持续一段时间空闲。在持续所述部分空闲之后,GPU 12可继续再现第一帧,且接着指示CPU 6完成第一帧的再现的时间或确定(例如,经由控制器)完成第一帧的再现的时间。
在一些情况中,在前一帧与当前帧之间可不存在空闲时间。举例来说,CPU 6可指导GPU 12再现第二前一帧且接着紧接着指导GPU 12再现第一当前帧。在此实例中,GPU 12紧接在完成再现第二帧之后开始再现第一帧,以使得在再现第二帧与再现第一帧之间不存在GPU 12空闲时间。
CPU 6可基于接收对于用于再现下一帧的存储器的请求而确定第一时间例项及第二时间例项。类似地,GPU 12可基于传输对于用于再现下一帧的存储器的请求的时间而确定第一时间例项及第二时间例项。以此方式,处理器可确定在GPU 12变得空闲之前及基本上紧接在完成再现前一或当前帧之后的第一时间例项及第二时间例项。举例来说,处理器可从GPU 12完成再现第二(前一)帧或第一(当前)帧的时间起小于5ms、2ms或甚至可能小于1ms(例如,在比CPU 6确定GPU 12空闲所花费的时间更少的时间中)确定GPU 12完成再现第二帧或第一帧。
处理器(例如,CPU 6及/或GPU 12)可基于第一时间例项及第二时间例项确定时间间隔(例如,第一时间例项的时间与第二时间例项的时间之间的差)。处理器可确定用于在时间间隔期间再现当前帧的GPU 12的忙碌程度(例如,用以在时间间隔期间处理用于再现帧的工作负荷的时间量)。
基于经确定忙碌程度,处理器可确定GPU 12的时钟速率。举例来说,处理器可基于经确定忙碌程度及经确定时间间隔确定忙碌程度百分比(例如,将在时间间隔期间处理工作负荷的时间量除以时间间隔的时间量)。处理器可比较忙碌程度百分比与阈值并基于所述比较确定时钟速率。
作为另一实例,处理器可对时间间隔与一或多个先前时间间隔进行平均以确定平均时间间隔。在此实例中,一或多个先前时间间隔中的每一者指示各别先前帧的再现的完成之间的时间间隔。举例来说,处理器可对于N数目个时间间隔,对当前帧与前一帧的再现之间的时间间隔,前一帧与紧接在前一帧之前的帧的再现之间的时间间隔等进行平均。此平均可被视为经开窗流动平均值。
处理器可基于经确定忙碌程度及平均时间间隔确定忙碌程度百分比,并比较忙碌程度百分比与阈值。类似于上述内容,处理器可基于所述比较确定时钟速率。
处理器可基于经确定忙碌程度确定GPU 12的时钟速率。在一些实例中,处理器可基于用于再现第一帧及无其它帧的经确定忙碌程度确定GPU 12的时钟速率。以此方式,处理器经配置以基于单个帧而非在GPU 12再现多个帧之后确定时钟速率,其允许GPU 12以极少延迟渐升或渐降其操作频率以使得GPU 12在其最低频率电平处操作同时仍及时完成命令的执行。
处理器可将GPU 12的时钟速率设定成经确定时钟速率。举例来说,在其中处理器为CPU 6的实例中,CPU 6接着可指导GPU 12将GPU 12的时钟速率设定成经确定时钟速率。在其中处理器为GPU 12的实例中,GPU 12的控制器可指导GPU 12设定GPU 12的时钟速率。GPU 12接着可以经确定时钟速率操作。尽管处理器基于设定用于再现后续帧的时钟速率的当前帧通过使用用于确定时钟速率的仅仅一个帧来确定GPU 12的时钟速率,但处理器可在时钟速率不正确的情况下即刻更新时钟速率,此是由于处理器可紧接在GPU 12完成再现下一帧之后更新时钟速率。
图2为更详细地说明图1中所说明的装置的组件的框图。如图2中所说明,GPU 12包含控制器30、振荡器34、计数器寄存器35、着色器核心36及固定功能管线38。着色器核心36及固定功能管线38可共同形成用以执行图形或非图形相关功能的执行管线。尽管仅说明一个着色器核心36,但在一些实例中,GPU 12可包含类似于着色器核心36的一或多个着色器核心。
GPU 12将执行的命令是由着色器核心36及固定功能管线38执行,如通过GPU 12的控制器30所确定。控制器30可经实施为GPU 12上的硬件或在GPU 12的硬件上执行的软件或固件。控制器30为上文所描述用于在GPU 12确定时钟速率的情况下执行实例技术的控制器的实例。
控制器30可从系统存储器10的命令缓冲器40或直接从CPU 6接收待经执行用于再现帧的命令(例如,接收CPU 6确定现在应由GPU 12执行的所提交命令)。控制器30也可从系统存储器10的数据缓冲器42或直接从CPU 6检索用于命令的运算元数据。举例来说,命令缓冲器40可存储将A与B相加的命令。控制器30从命令缓冲器40检索此命令并从数据缓冲器42检索A及B的值。控制器30可确定哪些命令待由着色器核心36执行(例如,在着色器核心36上执行软件指令)及哪些命令待由固定功能管线38执行(例如,用于固定功能管线38的单元的命令)。
在一些实例中,来自命令缓冲器40及数据缓冲器42中的一者或两者的命令及/或数据可为GPU 12的本地存储器14的部分。举例来说,GPU 12可包含分别存储来自命令缓冲器40的命令及来自数据缓冲器42的数据的指令高速缓存存储器及数据高速缓存存储器,其可为本地存储器14的部分。在此些实例中,控制器30可从本地存储器14检索命令及/或数据。
着色器核心36及固定功能管线38可从彼此传输及接收数据。举例来说,着色器核心36执行的命令中的一些可产生为用于固定功能管线38的单元将执行的命令的运算元的中间数据。类似地,固定功能管线38的单元执行的命令中的一些可产生为用于着色器核心36将执行的命令的运算元的中间数据。以此方式,经由固定功能管线38的单元及着色器核心36以管线化方式逐渐地处理所接收数据。因此,着色器核心36及固定功能管线38可被称为实施执行管线。在一些实例中,GPU 12可包含大于一个着色器核心36,且图2中的实例经提供以仅辅助理解。
一般来说,着色器核心36允许各种类型的命令被执行,从而意谓着色器核心36为可编程的且将功能灵活性提供给用户,此是由于用户可编程着色器核心36以按大部分可以想象的方式执行所要任务。然而,固定功能管线38的固定功能单元为固线式以用于固定功能单元执行任务所藉以的方式。因此,固定功能单元可不提供大的功能灵活性。
也如图2中所说明,GPU 12包含振荡器34。当着色器核心36及/或固定功能管线38的单元执行命令时,振荡器34输出设定时间例项的时钟信号。尽管振荡器34经说明为在GPU12内部,但在一些实例中,振荡器34可在GPU 12外部。另外,振荡器34无需仅提供用于GPU12的时钟信号,且也可提供用于其它组件的时钟信号。
振荡器34可产生方波、正弦波、三角波,或其它类型的周期性波。振荡器34可包含用以放大所产生波的电压并将所得波作为用于GPU 12的时钟信号输出的放大器。
在一些实例中,在通过振荡器34输出的时钟信号的上升边缘或下降边缘上,着色器核心36及固定功能管线38的每一单元可执行一个命令。在一些情况中,命令可被分成子命令,且着色器核心36及固定功能管线38的每一单元可响应于时钟信号的上升或下降边缘执行子命令。举例来说,A+B的命令包含用以检索A的值及B的值的子命令,且着色器核心36或固定功能管线38可在时钟信号的上升边缘或下降边缘处执行此些子命令中的每一者。
着色器核心36及固定功能管线38的单元执行命令所藉以的速率可影响GPU 12的功率消耗。举例来说,如果通过振荡器34输出的时钟信号的频率相对较高,那么与着色器核心36及固定功能管线38的单元将针对时钟信号的相对较低频率执行的命令的数目相比,着色器核心36及固定功能管线38的单元可在时间段内执行更多命令。然而,与其中着色器核心36及固定功能管线38的单元在时间段中执行较少命令(归因于来自振荡器34的时钟信号的较低频率)的例项相比,GPU 12的功率消耗可在其中着色器核心36及固定功能管线38的单元在时间段中执行更多命令(归因于来自振荡器34的时钟信号的较高频率)的例项中更大。
如上文所描述,CPU 6可归因于GPU 12的大规模并行处理能力而分担任务到GPU12。举例来说,GPU 12可设计成具有单指令、多数据(SIMD)结构。在SIMD结构中,着色器核心36包含多个SIMD处理元件,其中每一SIMD处理元件执行相同命令,但是针对不同数据。
在特定SIMD处理元件上执行的特定命令被称为线程。每一SIMD处理元件可被视为执行不同线程,此是由于用于给定线程的数据可不同;然而,在处理元件上执行的线程为与在其它处理元件上执行的命令相同的命令。以此方式,SIMD结构允许GPU 12并行执行许多任务(例如,在同一时间)。对于此SIMD结构化GPU 12,每一SIMD处理元件可在时钟信号的上升边缘或下降边缘上执行一个线程。
为避免混淆,本发明使用术语“命令”来一般指由着色器核心36或固定功能管线38的单元执行的过程。举例来说,命令包含实际命令、构成子命令(例如,存储器调用命令)、线程,或GPU 12执行特定功能所藉以的其它方式。由于GPU 12包含着色器核心36及固定功能管线38,因此GPU 12可被视为执行命令。
另外,在上文的实例中,着色器核心36或固定功能管线38的单元响应于由振荡器34输出的时钟信号的上升或下降边缘而执行命令。然而,在一些实例中,着色器核心36或固定功能管线38的单元可在上升边缘上执行一个命令并在时钟信号的下降边缘上执行另一后续命令。可存在“时钟化”命令的其它方式,且本发明中所描述的技术不限于上文的实例。
由于GPU 12在每一上升边缘、下降边缘或两者处执行命令,因此由振荡器34输出的时钟信号的频率(也称作时钟速率)设定GPU 12可在某一时间内执行的命令量。举例来说,如果GPU 12在时钟信号的每一上升边缘执行一个命令,且时钟信号的频率为1MHz,那么GPU 12可在一秒中执行一百万个命令。
如图2中所说明,CPU 6执行应用26,如由虚线逻辑框所说明。在执行期间,应用26产生待由GPU 12执行的命令,包含指导GPU 12检索并执行着色器程式(例如,顶点着色器、片段着色器、用于非图形应用的计算着色器,及类似者)的命令。另外,应用26产生命令操作所针对的数据(即,用于命令的运算元)。CPU 6将所产生命令存储在命令缓冲器40中,并将运算元数据存储在数据缓冲器42中。
在CPU 6将所产生命令存储在命令缓冲器40中之后,CPU 6使命令可用于通过GPU12执行。举例来说,CPU 6将一组存储命令及其运算元数据的存储器地址及指示GPU 12将何时执行所述组命令的信息传达到GPU 12。以此方式,CPU 6提交命令到GPU 12以供执行以再现帧。
如图2中所说明,CPU 6也可执行图形驱动器28。在一些实例中,图形驱动器28可为在CPU 6的硬件或硬件单元上执行的软件或固件。图形驱动器28可经配置以允许CPU 6及GPU 12彼此通信。举例来说,当CPU 6分担图形或非图形处理任务到GPU 12时,CPU 6经由图形驱动器28分担此些处理任务到GPU 12。举例来说,当CPU 6输出指示GPU 12将执行的命令的量的信息时,图形驱动器28可为CPU 6的输出信息到GPU 12的单元。
作为额外实例,应用26产生图形数据及图形命令,且CPU 6可将此图形数据的处理分担给GPU 12。在此实例中,CPU 6可将图形数据存储在数据缓冲器42中并将图形命令存储在命令缓冲器40中,且图形驱动器28可指导GPU 12何时分别从数据缓冲器42及命令缓冲器40检索图形数据及图形命令,从何处分别从数据缓冲器42及命令缓冲器40检索图形数据及图形命令,及何时通过执行所述组命令中的一或多个命令来处理图形数据。
另外,应用26可能需要GPU 12执行一或多个着色器程序。举例来说,应用26可需要着色器核心36执行顶点着色器及片段着色器以产生用于待显示(例如,在图1的显示器18上)的帧的像素值。图形驱动器28可指导GPU 12何时执行着色器程序并指导GPU 12何处检索来自数据缓冲器42的图形数据及何处检索来自命令缓冲器40或来自系统存储器10中的其它位置的命令。以此方式,图形驱动器28可在CPU 6与GPU 12之间形成链路。
图形驱动器28可根据应用处理接口(API)而配置;但图形驱动器28不需要限制于根据特定API而配置。在装置2为移动装置的实例中,可根据OpenGL ES API来配置图形驱动器28。OpenGL ES API被特定设计成用于移动装置。在装置2为非移动装置的实例中,可根据OpenGL ES API来配置图形驱动器28。
所提交命令中的命令的量可基于再现用户接口或游戏应用的一个帧所需要的命令。对于用户接口实例,GPU 12可需要执行在vsync窗(例如,新的帧应准备显示所截至的时间,例如每一16ms)内再现用户接口的一个帧所需要的命令以提供无闪避用户体验。如果存在需要显示的相对较大内容量,那么命令的数量可比在存在需要显示的相对较小内容量情况下大。
为确保GPU 12能够在设定时间段内执行所提交命令,控制器30可调整振荡器34输出的时钟信号的频率(即,时钟速率)。然而,为调整时钟信号的时钟速率以使得时钟速率高得足以允许GPU 12在设定时间段内执行所提交命令,控制器30可接收指示是增加、减少振荡器34的时钟速率抑或保持时钟速率相同的信息。在一些实例中,控制器30可接收指示振荡器34输出的时钟信号的特定时钟速率的信息。
在本发明中描述的其中CPU 6确定GPU 12的时钟速率的技术中,频率管理模块32可经配置以确定振荡器34输出的时钟信号的时钟速率。在其中GPU 12确定时钟速率的一些实例中,控制器30可经配置以执行关于频率管理模块32描述的实例技术,但在GPU 12上执行。
频率管理模块32(也称作动态时钟及电压缩放(DCVS)模块)经说明为在CPU 6上执行的软件。然而,频率管理模块32可为在CPU 6上的硬件或硬件与软件或固件的组合。
频率管理模块32可经配置以确定在GPU 12完成再现第一(当前)帧时的第一时间例项及在GPU 12完成再现紧接在当前帧之前的第二(前一)帧时的第二时间例项。在本发明中,紧接在当前帧之前的前一帧指在当前帧之前的帧,其中没有其它帧在前一帧与当前帧之间。在一些情况中,在GPU 12完成再现前一帧的时间与GPU 12开始再现当前帧的时间之间可存在某一空闲时间。然而,在一些实例中,可在GPU 12完成再现前一帧的时间与GPU 12开始再现当前帧的时间之间不存在此空闲时间。
举例来说,图形驱动器28可一次性提交命令以再现两个帧。在此实例中,控制器30接收用以再现两个帧中的第一者的命令并指导着色器核心36及固定功能管线38执行所述命令。当命令经由图形管线前进时,一旦用于再现第一帧的最后命令前进通过GPU 12的图形管线中的第一单元,控制器30便检索第一命令以开始第二帧的执行(例如,指导GPU 12的图形管线的第一单元执行用于再现第二帧的命令)。在此实例中,在帧之间不存在通过GPU12进行的处理的暂停(例如,在两个帧的再现之间无空闲时间)。在一些情况中,图形驱动器28可一次性提交用于大于两个帧的命令。
在一些情况中,图形驱动器28可不一定一次性提交再现帧所需要的所有命令到GPU 12或可提交所有命令,但可不指导GPU 12一个紧接一个地执行所有命令。举例来说,图形驱动器28可提交用于再现帧的第一组命令,且接着在GPU 12变为空闲的时间期间暂停发送更多命令,且接着提交用于再现帧的剩余命令。作为另一实例,图形驱动器28可提交所有命令到GPU 12,接着指导GPU 12执行第一组命令,接着指导GPU 12在GPU 12变为空闲的时间期间暂停执行命令,且接着指导GPU 12执行剩余指令。可在再现帧期间存在大于一个在期间GPU 12变为空闲的持续时间,且仅仅为达成说明的目的提供其中GPU 12在再现帧期间在仅仅一个持续时间中变为空闲的上文的实例。
如上文所描述,在GPU 12完成再现当前帧或前一帧时的例项为在GPU 12分别确定当前帧或前一帧的最后像素的像素值时的例项,或在GPU 12分别输出当前帧或前一帧的最后像素的像素值时的例项。作为一个实例,在GPU 12完成再现帧(例如,当前或前一帧)时的例项为着色器核心36上的像素着色器的最后执行的例项或在着色器核心36上执行的像素着色器输出帧的最后像素值的例项。
频率管理模块32确定GPU 12仅完成再现帧(例如,在再现帧的5ms、2ms或甚至1ms内)所藉以的一种方式是基于对于系统存储器10中的存储器的请求的接收。尽管未说明,但GPU 12输出像素值(例如,图形数据)到系统存储器10内的帧缓冲器。在再现帧之后,控制器30执行gl.SwapBuffer API以向CPU 6请求用以在其中存储用于下一帧的像素值的存储器位置。可存在控制器30将执行gl.SwapBuffer API的极高必然程度,因为此为GPU 12经分配用于再现下一帧的存储器所藉以的方式。
在此实例中,控制器30输出对于存储器的请求到图形驱动器28。图形驱动器28转递请求到操作系统24及频率管理模块32。频率管理模块32随后将GPU 12完成再现帧的时间例项确定为频率管理模块32接收请求的时间例项。操作系统24分配用于GPU 12的存储器以输出下一帧的像素值。
作为另一实例,控制器30可执行使得控制器30输出帧末端标志到图形驱动器28的UMD(用户模式驱动器),图形驱动器28接着转递帧末端标志到频率管理模块32。作为另一实例,gl.SwapBuffer API可以UMD更新,因此除gl.SwapBuffer API的正常执行以外不需要额外执行。
在其中控制器30确定GPU 12的时钟速率的实例中,控制器30可确定执行UMD或gl.SwapBuffer API的时间。基于执行,控制器30可确定GPU 12完成再现帧,且基于执行的时序,控制器30可确定在再现帧末端到帧末端之间逝去的时间量。
频率管理模块32可基于第一时间例项及第二时间例项确定时间间隔(例如,第一时间例项减去第二时间例项)。另外,频率管理模块32可确定在时间间隔期间用于再现当前帧的GPU 12的忙碌程度。控制器30可经配置以在其中控制器30确定其时钟速率的实例中执行类似功能。
每当控制器30、着色器核心36或固定功能管线38从本地存储器14内的通用寄存器(GPR)读取数据或存储数据到其时,控制器30可更新(例如,递增)计数器寄存器35中的计数器。频率管理模块32及/或控制器30可能在再现前一帧之后已读取计数器寄存器35并可在再现当前帧之后读取计数器寄存器35。频率管理模块32及/或控制器30可确定从计数器寄存器35读取的两个值之间的差,且所得值可为GPU 12再现当前帧所花费的振荡器34的时钟循环的数目的近似值。频率管理模块32及/或控制器30可将时钟循环的经确定数目乘以振荡器34在再现当前帧期间输出的时钟信号的时钟速率的时间段以确定GPU 12忙碌的时间量(例如,GPU 12的忙碌程度)。
作为另一实例,只要GPU 12的任一GPU子块忙碌,控制器30便可更新(例如,递增)计数器寄存器35中的计数器。如上所述,频率管理模块32及/或控制器30可在再现前一帧之后已读取计数器寄存器35并可在再现当前帧之后读取计数器寄存器35。频率管理模块32及/或控制器30可确定从计数器寄存器35读取的两个值之间的差,且所得值可为GPU 12再现当前帧所花费的振荡器34的时钟循环的数目的近似值。另外,如上所述,频率管理模块32及/或控制器30可将时钟循环的经确定数目乘以振荡器34在再现当前帧期间输出的时钟信号的时钟速率的时间段以确定GPU 12忙碌的时间量(例如,GPU 12的忙碌程度)。可存在确定GPU忙碌程度所藉以的各种其它方式,且上文提供两个实例技术。
频率管理模块32及/或控制器30可基于经确定忙碌程度确定振荡器34输出的时钟信号的时钟速率。在其中CPU 6设定时钟速率的实例中,频率管理模块32接着可使得图形驱动器28指导GPU 12的控制器30将振荡器34输出的时钟信号的时钟速率设定成经确定时钟速率。在其中GPU 12设定时钟速率的实例中,控制器30可设定振荡器34输出的时钟信号的时钟速率。以此方式,频率管理模块32及/或控制器30可基于用于再现当前帧及无其它帧的经确定忙碌程度而确定振荡器34输出的时钟信号的时钟速率。
在一个实例中,频率管理模块32及/或控制器30可基于经确定忙碌程度及经确定时间间隔而确定忙碌程度百分比(例如,将忙碌程度除以乘以100的时间间隔)。频率管理模块32及/或控制器30可比较忙碌程度百分比与阈值,并基于所述比较确定振荡器34输出的时钟信号的时钟速率。
在一个实例中,频率管理模块32及/或控制器30可跟踪用于再现当前帧的时间间隔及用于再现一或多个先前帧(例如,总共5个帧)的时间间隔。频率管理模块32及/或控制器30可确定时间间隔的平均值(即,平均帧时间(AFT))。在此实例中,初始帧时间可经设定成一个vsync间隔(默认16.67ms,取决于显示器18的再新率)。每秒框数(FPS)可等于1/AFT。vsync边界图形应用的FPS通常为恒定值且AFT相对稳定。
在此实例中,频率管理模块32及/或控制器30可通过将用于再现当前帧的忙碌程度除以平均帧时间确定忙碌程度百分比。类似于上文,频率管理模块32及/或控制器30可比较忙碌程度百分比与阈值,并基于所述比较确定振荡器34输出的时钟信号的时钟速率。另外,类似于上文,频率管理模块32及/或控制器30可使用用于仅再现当前帧的忙碌程度来用于确定时钟速率,但在此实例中,可使用多个先前帧的时间间隔。
如所描述,频率管理模块32及/或控制器30可跟踪用于时钟速率确定的帧边界。举例来说,频率管理模块32及/或控制器30确定GPU 12的忙碌程度(例如,GPU 12的帧负载)及帧末端到帧末端时间间隔(例如,帧时间或来自再现前一帧的完成及再现当前帧的完成的时间间隔)。频率管理模块32及/或控制器30可使用对于存储器的请求或帧末端标记作为用于确定忙碌程度百分比及频率管理模块32及/或控制器30确定用于再现帧的GPU 12的忙碌程度所经过的持续时间的时戳。
以此方式,与可需要五个或超过五个帧以准确确定时钟速率的其它技术相比,频率管理模块32及/或控制器30可将在进行脉速率确定时的时延减少到一个帧时间。低时延及时钟速率的准确确定导致具有更少闪避的更平滑UI体验,且可在其中需要精确时钟速率管理情况下(例如在并行使用情况下)具有特定使用。另外,使用所述技术,时钟速率无需逐渐改变,但可在需要时跳转。举例来说,如果时钟速率在200MHz处,但GPU 12的忙碌程度百分比为300%,那么频率管理模块32可指导控制器30以使得振荡器34或控制器30可使得振荡器34将时钟速率跳转到600MHz,而绕过300MHz、400MHz及500MHz时钟速率选项。
此外,由于实例技术依赖于再现帧的完成以确定时钟速率,因此即使在再现帧期间存在GPU 12为空闲的一或多个部分,频率管理模块32及/或控制器30仍可能不确定时钟速率中帧再现,且可一直等待直到在确定时钟速率之前再现帧为止。另外,与依赖于空闲时间用于确定何时确定时钟速率的其它技术相比,由于技术不依赖于GPU 12的空闲时间以确定时钟速率,因此在本发明中描述的技术甚至在帧的再现之间不存在空闲时间的情况下可准确且低时延地确定时钟速率。
图3A到3C为说明GPU 12接收用于再现帧的命令的实例的时序图。图3A到3C说明GPU 12接收以用于再现帧的不同命令集合。在图3A到3C中所说明的实例中,每当确定忙碌程度百分比时GPU 12的实际忙碌程度百分比是相同的(例如,50%忙碌程度百分比);然而所述经确定忙碌程度百分比可变化。在图3A到3C中,GPU 12的忙碌程度百分比为GPU 12的忙碌程度除以GPU 12的两个空闲之间的时间间隔。
图3A到3C的x轴上的数字说明CPU 6确定忙碌程度百分比的例项。如所说明,在GPU12完成再现帧之后在确定GPU 12为空闲之前经过某一时间。因此,CPU 6确定忙碌程度百分比的时间是在再现帧之后且不在再现帧时或紧接在再现帧之后。在图3A到3C中,在GPU 12输出最后像素的像素值之后在确定忙碌程度百分比之前流逝某一时间。如上文所描述,在可进行忙碌程度百分比的准确确定之前,基于GPU 12为空闲时的时间确定忙碌程度百分比可需要长延迟。
举例来说,图3A说明如下理想情况:GPU 12再现帧且接着存在GPU 12为空闲的设定时间,接着GPU 12在其中再现下一帧的设定时间量,继之以GPU 12为空闲的设定时间等等。在此实例中,实际忙碌程度百分比及测量忙碌程度百分比跟踪彼此(例如,两者皆为50%)。然而,理想GPU业务为罕见的。
图3B说明不同于图3A中间隔为恒定的情况的GPU 12将再现帧的时间之间的间隔不恒定的情况。举例来说,对于最后两个帧,在再现帧之间可不存在用于GPU 12的空闲时间。在此实例中,在样本1(例如,在第一帧之后不久)处,CPU 6可确定忙碌程度百分比为50%,其与实际忙碌程度百分比相同。在样本2(例如,在第二帧之后不久)处,CPU 6可确定忙碌程度百分比为60%,此是由于时间间隔较短但被执行的命令数量对于每一帧而言为相同的(例如,帧负载相同)。在此情况下,由于在再现帧3与帧4之间不存在空闲时间,因此在再现帧3之后无样本获得。在样本3(例如,在第四帧之后不久)处,CPU 6可确定忙碌程度百分比为40%,此是由于时间间隔的量可大得多。三个经确定忙碌程度百分比的平均值将为50%(例如,(50%+60%+40%)除以3),但四个帧是在达到50%之前被处理。
图3C说明其中在再现帧期间存在空闲时间的情况,在此时间期间CPU 6可确定忙碌程度百分比。在此实例中,在样本1处,CPU 6可确定忙碌程度百分比为50%,在样本2处,CPU 6可确定忙碌程度百分比为60%,在样本3处,CPU 6可确定忙碌程度百分比在30%处,在样本4处,CPU 6可确定忙碌程度百分比在30%处,且在样本5处,CPU 6可确定忙碌程度百分比在80%处。样本的平均值为50%,但五个样本是在到达50%之前被处理。
因此,在图3A到3C中,如果在GPU 12变为空闲时CPU 6确定忙碌程度百分比,那么即使具有恒定忙碌程度,CPU 6确定的忙碌程度百分比仍可波动。此可是由于帧间空闲持续时间并不均匀分布及/或由于可在帧的再现的一部分期间存在空闲时间。在一些实例中,CPU 6可使用样本(例如,3或5个样本,如图3B及3C中所说明)的大滑动窗以滤除波动。然而,在等待大滑动窗中,在设定GPU 12的振荡器34的时钟信号的时钟速率时存在大延迟。
在本发明中所描述的技术中,由于CPU 6在完成再现帧时而非在空闲时间期间确定时钟速率。因此,波动可不存在,且CPU 6可能够在再现一个帧而不是再现多个帧之后确定时钟速率。同样,尽管关于CPU 6描述图3A到3C中所说明的实例,但实例技术也可通过GPU12执行。
图4为说明GPU 12接收用于再现帧的命令的另一实例的时序图。图4用以说明本发明中所描述的技术为何减少确定振荡器34输出的时钟信号的时钟速率的时延。实例涉及CPU 6说明但也可通过GPU 12执行。为了说明时延减少,图4涉及CPU 6基于仅再现当前帧确定忙碌程度百分比而描述,并关于CPU 6通过对忙碌程度百分比进行平均确定忙碌程度百分比而描述。即使假定GPU 12变为空闲的时间与帧的末端相同,依赖于待再现的多个帧且接着平均仍在可设定GPU 12的时钟速率之前延迟时间量。应理解,空闲时间恰在帧末端处并非过程实际上怎样起作用,而是为了说明,进行此假定以易于理解。
图4中,存在六个帧。前五个帧的忙碌程度(例如,帧负载)为10ms,且第六帧的忙碌程度为15ms。第一帧的帧间隔(例如,仅为易于理解,帧的末端到帧的末端经假定为与空闲时间到空闲时间相同)为16ms,第二帧的帧间隔为12ms,第三帧的帧间隔为20ms,第四帧的帧间隔为20ms,第五帧的帧间隔为12ms,且第六帧的帧间隔为16ms。
对于其中CPU 6仅使用当前帧的忙碌时间百分比的此实例,CPU 6可确定第一帧的平均时间间隔为16ms((16+16)/2)(假定初始帧时间为16ms)并确定第一帧的忙碌时间百分比为63%(10/16)。针对第二帧,CPU 6可确定平均时间间隔为15ms((16+16+12)/3)),并确定忙碌时间百分比为67%(10/15)。用于第三帧,CPU 6可确定平均时间间隔为16ms((16+16+12+20)/4)),且确定忙碌时间百分比为63%(10/16)。针对第四帧,CPU 6可确定平均时间间隔为17ms((16+16+12+20+20)/5)),并确定忙碌时间百分比为59%(10/17)。针对第五帧,CPU 6可确定平均时间间隔为16ms((16+16+12+20+20+12)/6)),且确定忙碌时间百分比为63%(10/16)。针对第六帧,CPU 6可确定平均时间间隔为16ms((16+16+12+20+20+12+16)/7)),且确定忙碌时间百分比为94%(15/16)。
如此实例中所见,尽管CPU 6可确定时间间隔的平均值,但CPU 6可使用仅仅当前帧的忙碌程度来确定忙碌时间百分比。举例来说,CPU 6可使用最新帧利用率而不是移动平均值。在一些实例中,用户模式驱动器(UMD)可通过使得CPU 6能够在帧边界处确定GPU 12工作负荷的帧边界信息(例如,帧的末端)辅助核心装置驱动器(例如,图形驱动器28)。
在此实例中,假定五个先前帧全部具有63%的样本忙碌百分比。另外,假定五个先前帧用以确定平均忙碌百分比。对于CPU 6等待GPU 12的空闲时间的情况,针对第一帧,CPU6可确定忙碌程度百分比为63%(10/16)并确定平均忙碌程度百分比为63%(例如,(63+63+63+63+63)/5=63)。针对第二帧,CPU 6可确定忙碌程度百分比为83%(10/12)并确定平均忙碌程度百分比为67%(例如,(63+63+63+63+83)/5=67)。针对第三帧,CPU 6可确定忙碌程度百分比为50%(10/20)并确定平均忙碌程度百分比为65%(例如,(63+63+63+83+50)/5=64.4)。针对第四帧,CPU 6可确定忙碌程度百分比为50%(10/20)并确定平均忙碌程度百分比为62%(例如,(63+63+83+50+50)/5=61.8)。针对第五帧,CPU 6可确定忙碌程度百分比为83%(10/12)并确定平均忙碌程度百分比为66%(例如,(63+83+50+50+83)/5=65.8)。针对第六帧,CPU 6可确定忙碌程度百分比为94%(15/16)并确定平均忙碌程度百分比为72%(例如,(83+50+50+83+94)/5=72)。
图5为说明相对于时间段的GPU将执行的命令的数目的图表。在图5的实例中,帧速率为每秒30个帧,且如所说明,GPU 12的可导出忙碌程度所藉以的帧负载大致恒定在24,000。
图6A为说明利用一个实例技术的相对于图5中所说明的时间段的忙碌程度百分比确定的图表。图6B为说明利用另一实例技术的相对于图5中所说明的时间段的忙碌程度百分比确定的图表。在图6A的实例中,CPU 6及/或GPU 12可基于GPU 12的空闲到空闲时间确定振荡器34的时钟信号的时钟速率,且在图6B的实例中,CPU 6及/或GPU 12可基于帧末端到帧末端确定振荡器34的时钟信号的时钟速率。如图6A中所说明,时钟速率波动。然而,在图6B中,时钟速率相当恒定。
图7为说明根据本发明中描述的技术的时钟速率确定的实例方法的流程图。如所描述,实例技术可通过CPU 6、GPU 12或CPU 6与GPU 12的组合执行。因此,关于处理器描述图7。处理器的一个实例为CPU 6,处理器的一个实例为GPU 12,且处理器的一个实例为CPU6与GPU 12的组合。
如所说明,处理器(例如,CPU 6及/或GPU 12)确定在GPU 12完成再现第一帧时的第一时间例项(50)。第一时间例项包括在GPU 12确定第一帧的最后像素的像素值时的例项或在GPU 12输出第一帧的最后像素的像素值时的例项。处理器确定在所述GPU 12完成再现紧接在当前帧之前的第二帧时的第二时间例项(52)。第二时间例项包括在GPU 12确定第二帧的最后像素的像素值时的例项或在GPU 12输出第二帧的最后像素的像素值时的例项。
在一些情况中,GPU 12在再现第一帧期间的至少一部分中为空闲的。另外,在一些情况中,GPU 12紧接在完成再现第二帧之后再现第一帧,以使得在再现第二帧与再现第一帧之间不存在GPU空闲时间。CPU 6接收对于用于再现下一帧的存储器的请求,且CPU 6响应于接收到对于用于再现下一帧的存储器的请求确定第一时间例项。
处理器基于第一时间例项及第二时间例项确定时间间隔(54)。处理器确定在时间间隔期间用于再现第一帧的GPU 12的忙碌程度(56)。基于经确定忙碌程度,处理器可设定GPU 12的时钟速率(58)。
在一些实例中,处理器基于经确定忙碌程度确定GPU 12的时钟速率,且处理器基于经确定时钟速率设定GPU 12的时钟速率。举例来说,CPU 6可指导控制器30设定振荡器34的时钟速率或控制器30可直接设定振荡器34的时钟速率。处理器可基于用于再现第一帧及无其它帧的经确定忙碌程度确定用于GPU 12的时钟速率。
在一些实例中,处理器可基于经确定忙碌程度及经确定时间间隔来确定忙碌程度百分比,比较忙碌程度百分比与阈值,并基于所述比较确定时钟速率。在一些实例中,处理器可对时间间隔及一或多个先前时间间隔进行平均以确定平均时间间隔,所述一或多个先前时间间隔中的每一者指示各别先前帧的再现的完成之间的时间间隔。处理器可基于所述经确定忙碌程度及平均时间间隔来确定忙碌程度百分比,可比较忙碌程度百分比与阈值,并基于所述比较确定时钟速率。
在一或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么所述功能可作为一或多个指令或程序代码存储在计算机可读媒体上并由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于例如数据存储媒体的有形媒体。以此方式,计算机可读媒体通常可对应于非暂时性的有形计算机可读存储媒体。数据存储媒体可为可通过一或多个计算机或一或多个处理器存取以检索指令、程序代码及/或数据结构以用于实施本发明所描述的技术的任何可用媒体。计算机程式产品可包含计算机可读媒体。
通过实例而非限制,此些计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储装置、快闪存储器或可用于存储呈指令或数据结构形式的所要程序代码且可由计算机存取的任何其它媒体。应理解,计算机可读存储媒体及数据存储媒体并不包含载波、信号或其它暂时性媒体,但取而代之涉及非暂时性、有形存储媒体。如本文中所使用,磁盘及光盘包含紧密光盘(CD)、激光光盘、光学光盘、数字影音光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘使用激光以光学方式再现数据。以上各者的组合也应包含于计算机可读媒体的范围内。
可由例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成式或离散逻辑电路的一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可提供于经配置用于编码及解码的专用硬件及/或软件模块内,或并入组合式编解码器中。此外,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。在本发明中描述各种组件、模块或单元以强调经配置以执行所公开技术的装置的功能方面,但未必要求由不同硬件单元来实现。确切而言,如上文所描述,可将各种单元组合于编解码器硬件单元中,或通过互操作性硬件单元(包含如上文所描述的一或多个处理器)的集合结合合适的软件及/或固件来提供所述单元。
已描述各种实例。此些及其它实例是在以下权利要求书的范围内。

Claims (27)

1.一种时钟速率确定方法,其包括:
通过处理器确定图形处理单元GPU完成再现第一帧时的第一时间例项;
通过所述处理器确定所述GPU完成再现紧接在所述第一帧之前的第二帧时的第二时间例项;
通过所述处理器基于所述第一时间例项及所述第二时间例项确定时间间隔,所述时间间隔为所述第一时间例项和所述第二时间例项之间的差;
通过所述处理器确定所述GPU是否对于所述第一帧的所述再现的至少一部分为空闲的;
在所述GPU对于所述第一帧的所述再现期间的至少一部分为空闲的情况下,通过所述处理器确定所述GPU的在所述时间间隔期间用于再现所述第一帧的忙碌程度,其中所述忙碌程度指示所述GPU在所述时间间隔期间执行命令以再现所述第一帧的时间量,或者在所述时间间隔期间用于再现所述第一帧的GPU循环的数目;及
基于所述确定出的忙碌程度设定所述GPU的时钟速率。
2.根据权利要求1所述的方法,其中所述第一时间例项包括所述GPU确定所述第一帧的最后像素的像素值时的例项或所述GPU输出所述第一帧的所述最后像素的所述像素值时的例项,且其中所述第二时间例项包括所述GPU确定所述第二帧的最后像素的像素值时的例项或所述GPU输出所述第二帧的所述最后像素的所述像素值时的例项。
3.根据权利要求1所述的方法,其进一步包括:
基于所述确定出的忙碌程度确定所述GPU的时钟速率,
其中设定所述时钟速率包括将所述时钟速率设定成所述确定出的时钟速率。
4.根据权利要求1所述的方法,其中所述GPU紧接在完成再现所述第二帧之后开始再现所述第一帧,以使得在再现所述第二帧与再现所述第一帧之间不存在GPU空闲时间。
5.根据权利要求1所述的方法,其进一步包括:
基于所述确定出的忙碌程度及所述确定出的时间间隔确定忙碌程度百分比;
比较所述忙碌程度百分比与阈值;及
基于所述比较确定所述时钟速率,
其中设定所述时钟速率包括基于所述确定出的时钟速率设定所述GPU的所述时钟速率。
6.根据权利要求1所述的方法,其进一步包括:
对所述时间间隔及一或多个先前时间间隔进行平均以确定平均时间间隔,所述一或多个先前时间间隔中的每一者指示各别先前帧的再现的完成之间的时间间隔;
基于所述确定出的忙碌程度及所述平均时间间隔确定忙碌程度百分比;
比较所述忙碌程度百分比与阈值;及
基于所述比较确定所述时钟速率,其中设定所述时钟速率包括基于所述确定出的时钟速率设定所述GPU的所述时钟速率。
7.根据权利要求1所述的方法,其进一步包括:
基于用于再现所述第一帧及不再现其它帧的所述确定出的忙碌程度确定所述GPU的所述时钟速率。
8.根据权利要求1所述的方法,其进一步包括:
从所述GPU接收对于用于再现下一帧的存储器的请求,
其中确定所述第一时间例项包括响应于接收到对于用于再现所述下一帧的所述存储器的所述请求而确定所述第一时间例项。
9.根据权利要求1所述的方法,其中所述处理器包括主机处理器,且其中设定所述时钟速率包括通过所述主机处理器指导所述GPU设定所述时钟速率。
10.根据权利要求1所述的方法,其中所述处理器包括所述GPU。
11.一种用于时钟速率确定的装置,其包括:
存储器,其经配置以存储由图形处理单元GPU使用以用于再现第一帧及第二帧的图形数据;及
处理器,其包括集成电路,所述处理器经配置以:
确定所述GPU完成再现所述第一帧时的第一时间例项;
确定所述GPU完成再现所述第二帧时的第二时间例项;
基于所述第一时间例项及所述第二时间例项确定时间间隔,所述时间间隔为所述第一时间例项和所述第二时间例项之间的差;
确定所述GPU是否对于所述第一帧的所述再现的至少一部分为空闲的;
在所述GPU对于所述第一帧的所述再现期间的至少一部分为空闲的情况下,确定所述GPU在所述时间间隔期间用于再现所述第一帧的忙碌程度,其中所述忙碌程度指示所述GPU在所述时间间隔期间执行命令以再现所述第一帧的时间量,或者在所述时间间隔期间用于再现所述第一帧的GPU循环的数目;及
基于所述确定出的忙碌程度设定所述GPU的时钟速率。
12.根据权利要求11所述的装置,其中所述第一时间例项包括所述GPU确定所述第一帧的最后像素的像素值时的例项或所述GPU输出所述第一帧的所述最后像素的所述像素值时的例项,且其中所述第二时间例项包括所述GPU确定所述第二帧的最后像素的像素值时的所述例项或所述GPU输出所述第二帧的所述最后像素的所述像素值时的所述例项。
13.根据权利要求11所述的装置,其中所述处理器经配置以基于所述确定出的忙碌程度确定所述GPU的时钟速率,且其中为设定所述时钟速率,所述处理器经配置以将所述时钟速率设定成所述确定出的时钟速率。
14.根据权利要求11所述的装置,其中所述GPU紧接在完成再现所述第二帧之后开始再现所述第一帧,以使得在再现所述第二帧与再现所述第一帧之间不存在GPU空闲时间。
15.根据权利要求11所述的装置,其中所述处理器经配置以:
基于所述确定出的忙碌程度及所述确定出的时间间隔确定忙碌程度百分比;
比较所述忙碌程度百分比与阈值;及
基于所述比较确定所述时钟速率,
其中为设定所述时钟速率,所述处理器经配置以基于所述经确定时钟速率设定所述时钟速率。
16.根据权利要求11所述的装置,其中所述处理器经配置以:
对所述时间间隔及一或多个先前时间间隔进行平均以确定平均时间间隔,所述一或多个先前时间间隔中的每一者指示各别先前帧的再现的完成之间的时间间隔;
基于所述确定出的忙碌程度及所述平均时间间隔确定忙碌程度百分比;
比较所述忙碌程度百分比与阈值;及
基于所述比较确定所述时钟速率,
其中为设定所述时钟速率,所述处理器经配置以基于所述确定出的时钟速率设定所述时钟速率。
17.根据权利要求11所述的装置,其中所述处理器经配置以基于用于再现所述第一帧及不再现其它帧的所述经确定出的忙碌程度确定所述GPU的所述时钟速率。
18.根据权利要求11所述的装置,其中所述处理器经配置以:
从所述GPU接收对于用于再现下一帧的存储器的请求,
其中为确定所述第一时间例项,所述处理器经配置以响应于接收到对于用于再现所述下一帧的所述存储器的所述请求而确定所述第一时间例项。
19.根据权利要求11所述的装置,其中所述处理器包括主机处理器,且其中为设定所述时钟速率,所述主机处理器经配置以指导所述GPU设定所述时钟速率。
20.根据权利要求11所述的装置,其中所述处理器包括所述GPU。
21.一种存储指令的非暂时性计算机可读存储介质,所述指令在经执行时使一或多个处理器执行以下操作:
确定图形处理单元GPU完成再现第一帧时的第一时间例项;
确定所述GPU完成再现紧接在所述第一帧之前的第二帧时的第二时间例项;
基于所述第一时间例项及所述第二时间例项确定时间间隔,所述时间间隔为所述第一时间例项和所述第二时间例项之间的差;
确定所述GPU是否对于所述第一帧的所述再现的至少一部分为空闲的;
在所述GPU对于所述第一帧的所述再现期间的至少一部分为空闲的情况下,确定所述GPU在所述时间间隔期间用于再现所述第一帧的忙碌程度,其中所述忙碌程度指示所述GPU在所述时间间隔期间执行命令以再现所述第一帧的时间量,或者在所述时间间隔期间用于再现所述第一帧的GPU循环的数目;及
基于所述GPU的所述确定出的忙碌程度设定所述GPU的时钟速率。
22.根据权利要求21所述的非暂时性计算机可读存储介质,其中所述第一时间例项包括所述GPU确定所述第一帧的最后像素的像素值时的所述例项或所述GPU输出所述第一帧的所述最后像素的所述像素值时的所述例项,且其中所述第二时间例项包括所述GPU确定所述第二帧的最后像素的像素值时的所述例项或所述GPU输出所述第二帧的所述最后像素的所述像素值时的所述例项。
23.根据权利要求21所述的非暂时性计算机可读存储介质,其进一步包括使所述一或多个处理器执行以下操作的指令:
基于所述确定出的忙碌程度确定所述GPU的时钟速率,
其中使得所述一或多个处理器设定所述时钟速率的所述指令包括使得所述一或多个处理器将所述时钟速率设定成所述确定出的时钟速率的指令。
24.根据权利要求21所述的非暂时性计算机可读存储介质,其中所述一或多个处理器包括主机处理器。
25.一种用于时钟速率确定的装置,其包括:
用于确定图形处理单元GPU完成再现第一帧时的第一时间例项的装置;
用于确定所述GPU完成再现紧接在所述第一帧之前的第二帧时的第二时间例项的装置;
用于基于所述第一时间例项及所述第二时间例项确定时间间隔的装置,所述时间间隔为所述第一时间例项和所述第二时间例项之间的差;
用于确定所述GPU是否对于所述第一帧的所述再现的至少一部分为空闲的装置;
用于在所述GPU对于所述第一帧的所述再现期间的至少一部分为空闲的情况下,确定所述GPU在所述时间间隔期间用于再现所述第一帧的忙碌程度的装置,
其中所述忙碌程度指示所述GPU在所述时间间隔期间执行命令以再现所述第一帧的时间量,或者在所述时间间隔期间用于再现所述第一帧的GPU循环的数目;及
用于基于所述确定出的忙碌程度设定所述GPU的时钟速率的装置。
26.根据权利要求25所述的装置,其中所述第一时间例项包括所述GPU确定所述第一帧的最后像素的像素值时的所述例项或所述GPU输出所述第一帧的所述最后像素的所述像素值时的所述例项,且其中所述第二时间例项包括所述GPU确定所述第二帧的最后像素的像素值时的所述例项或所述GPU输出所述第二帧的所述最后像素的所述像素值时的所述例项。
27.根据权利要求25所述的装置,其进一步包括:
用于基于所述确定出的忙碌程度确定所述GPU的时钟速率的装置,
其中用于设定所述时钟速率的所述装置包括用于将所述时钟速率设定成所述确定出的时钟速率的装置。
CN201680080668.9A 2016-02-03 2016-12-15 用于处理单元的以帧为基础的时钟速率调整 Active CN108604113B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/014,727 2016-02-03
US15/014,727 US9817431B2 (en) 2016-02-03 2016-02-03 Frame based clock rate adjustment for processing unit
PCT/US2016/066993 WO2017136047A1 (en) 2016-02-03 2016-12-15 Frame based clock rate adjustment for processing unit

Publications (2)

Publication Number Publication Date
CN108604113A CN108604113A (zh) 2018-09-28
CN108604113B true CN108604113B (zh) 2022-03-08

Family

ID=57750637

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680080668.9A Active CN108604113B (zh) 2016-02-03 2016-12-15 用于处理单元的以帧为基础的时钟速率调整

Country Status (7)

Country Link
US (1) US9817431B2 (zh)
EP (3) EP4242797A3 (zh)
JP (1) JP6526920B2 (zh)
KR (1) KR101931073B1 (zh)
CN (1) CN108604113B (zh)
TW (1) TWI622015B (zh)
WO (1) WO2017136047A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10796397B2 (en) * 2015-06-12 2020-10-06 Intel Corporation Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices
US10388054B2 (en) 2016-06-03 2019-08-20 Apple Inc. Controlling display performance using animation based refresh rates
US10319065B2 (en) * 2017-04-13 2019-06-11 Microsoft Technology Licensing, Llc Intra-frame real-time frequency control
US10761592B2 (en) * 2018-02-23 2020-09-01 Dell Products L.P. Power subsystem-monitoring-based graphics processing system
CN110018874B (zh) * 2019-04-09 2021-07-13 Oppo广东移动通信有限公司 垂直同步方法、装置、终端及存储介质
CN111240835B (zh) * 2020-01-06 2024-04-16 北京小米移动软件有限公司 Cpu工作频率调整方法、cpu工作频率调整装置及存储介质
WO2021164004A1 (en) 2020-02-21 2021-08-26 Qualcomm Incorporated Reduced display processing unit transfer time to compensate for delayed graphics processing unit render time
US11467621B2 (en) * 2020-02-28 2022-10-11 Qualcomm Incorporated Computer processing unit intra-frame clock and voltage scaling based on graphics application awareness
WO2021196175A1 (en) * 2020-04-03 2021-10-07 Qualcomm Incorporated Methods and apparatus for clock frequency adjustment based on frame latency
US11860688B1 (en) * 2020-04-28 2024-01-02 T-Mobile Innovations Llc Network generated precision time
GB202012559D0 (en) * 2020-08-12 2020-09-23 Samsung Electronics Co Ltd Reducing latency between receiving user input and displaying resulting frame
CN113542840B (zh) * 2021-06-11 2023-04-07 浙江大华技术股份有限公司 调整显示延迟的方法、电子装置和存储介质
KR102516412B1 (ko) * 2022-01-13 2023-03-31 성균관대학교산학협력단 기계학습 추론을 위한 gpu 클럭 조절 방법 및 장치
WO2023145641A1 (ja) * 2022-01-31 2023-08-03 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、その制御方法、及びプログラム
WO2024085642A1 (ko) * 2022-10-19 2024-04-25 삼성전자 주식회사 디스플레이를 포함하는 전자 장치 및 이의 동작 방법
KR102621930B1 (ko) * 2023-09-08 2024-01-05 주식회사 엠컴 유휴자원에 따라 컴퓨터의 리소스를 절감하여 절전을 행하는 컴퓨터 시스템 및 그 제어 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7149909B2 (en) 2002-05-09 2006-12-12 Intel Corporation Power management for an integrated graphics device
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20070030452A1 (en) * 2005-08-08 2007-02-08 N-Lighten Technologies Image adaptation system and method
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
CN101458555B (zh) * 2007-12-12 2011-12-21 成都市华为赛门铁克科技有限公司 一种调节时钟周期的方法和计算系统
US8732488B1 (en) 2008-04-17 2014-05-20 Marvell International Ltd. Millions of instruction per second (MIPS) based idle profiler in a power management framework
US8199158B2 (en) 2008-06-11 2012-06-12 Intel Corporation Performance allocation method and apparatus
US8909962B2 (en) * 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
CN102314213B (zh) * 2010-07-09 2016-03-30 精英电脑股份有限公司 动态调整工作频率的计算机系统
US8924752B1 (en) 2011-04-20 2014-12-30 Apple Inc. Power management for a graphics processing unit or other circuit
US8856566B1 (en) 2011-12-15 2014-10-07 Apple Inc. Power management scheme that accumulates additional off time for device when no work is available and permits additional power consumption by device when awakened
US9250665B2 (en) 2012-06-07 2016-02-02 Apple Inc. GPU with dynamic performance adjustment
US9424620B2 (en) 2012-12-29 2016-08-23 Intel Corporation Identification of GPU phase to determine GPU scalability during runtime
US9201487B2 (en) * 2013-03-05 2015-12-01 Intel Corporation Reducing power consumption during graphics rendering
US10068508B2 (en) * 2013-08-30 2018-09-04 Google Llc Measuring user interface performance consistency
US20150185803A1 (en) 2013-12-30 2015-07-02 Qualcomm Incorporated System and method for dcvs headroom adjustment and processing level optimization in a system on a chip
US10446118B2 (en) * 2015-06-02 2019-10-15 Intel Corporation Apparatus and method using subdivided swapchains for improved virtual reality implementations

Also Published As

Publication number Publication date
US9817431B2 (en) 2017-11-14
EP3411774A1 (en) 2018-12-12
EP4242797A3 (en) 2023-11-15
KR101931073B1 (ko) 2018-12-19
EP4113249A1 (en) 2023-01-04
CN108604113A (zh) 2018-09-28
BR112018015857A2 (pt) 2018-12-26
JP6526920B2 (ja) 2019-06-05
US20170220062A1 (en) 2017-08-03
WO2017136047A1 (en) 2017-08-10
TW201729162A (zh) 2017-08-16
EP4242797A2 (en) 2023-09-13
TWI622015B (zh) 2018-04-21
JP2019508804A (ja) 2019-03-28
KR20180093084A (ko) 2018-08-20

Similar Documents

Publication Publication Date Title
CN108604113B (zh) 用于处理单元的以帧为基础的时钟速率调整
EP3436894B1 (en) Active and stall cycle based dynamic scaling of processor frequency and bus bandwidth
EP3494472B1 (en) Dynamic foveation adjustment
US10332230B2 (en) Characterizing GPU workloads and power management using command stream hinting
US9245496B2 (en) Multi-mode memory access techniques for performing graphics processing unit-based memory transfer operations
US10007292B2 (en) Energy aware dynamic adjustment algorithm
US20170199558A1 (en) Flexible and scalable energy model for estimating energy consumption
CN107209543B (zh) 用于处理单元的时钟速率调整
US10134103B2 (en) GPU operation algorithm selection based on command stream marker
US20140002730A1 (en) Adaptive frame rate control
BR112018015857B1 (pt) Ajuste da taxa de clock baseado em quadro para unidade de processamento
US20240202003A1 (en) Inclusion of Dedicated Accelerators in Graph Nodes
CN117616446A (zh) 基于图块的架构中的深度和阴影通道渲染的优化

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