用于处理单元的以帧为基础的时钟速率调整的制作方法

文档序号:15575231发布日期:2018-09-29 05:23阅读:242来源:国知局

本发明涉及时钟速率调整,且更特定来说涉及图形处理单元(gpu)的时钟速率调整。



背景技术:

移动装置通过有限大小及/或容量的电池供电。通常,移动装置用于进行电话通话、检查电子邮件、记录/播放照片/视频、收听无线电、导航、网页浏览、玩游戏、管理装置,及执行计算。许多此些动作利用图形处理单元(gpu)来执行一些任务。实例gpu任务包含内容再现到显示器及执行通用计算(computecomputation)(例如,在通用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、cpu6、存储器控制器8、系统存储器10、图形处理单元(gpu)12、本地存储器14、显示接口16、显示器18及总线20。用户输入接口4、cpu6、存储器控制器8、gpu12及显示接口16可使用总线20彼此通信。总线20可为多种总线结构中的任一者,例如第三代总线(例如,超传输总线或无线带宽总线)、第二代总线(例如,高级图形端口总线、外围组件互连(pci)express总线或高级可扩展接口(axi)总线)或另一类型的总线或装置互连件。应注意,图1中所示的不同组件之间的总线及通信接口的特定配置仅为示范性的,且计算装置的其它配置及/或具有相同或不同组件的其它图形处理系统可用以实施本发明的技术。

cpu6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以使cpu6执行一或多个软件应用。在cpu6上执行的软件应用可包含:例如,操作系统、文书处理器应用、电子邮件应用、总分析表应用、媒体播放器应用、视频游戏应用、图形用户接口应用或另一程序。用户可经由一或多个输入装置(未图示)提供输入到计算装置2,所述输入装置例如键盘、鼠标、麦克风、触控板或经由用户接口4经耦合到计算装置2的另一输入装置。

在cpu6上执行的软件应用可包含一或多个图形再现指令,其指导cpu6将图形数据再现到显示器18。在一些实例中,软件指令可符合图形应用设计接口(api),例如开放图形库api、开放图形库嵌入系统(opengles)api、openclapi、direct3dapi、x3dapi、rendermanapi、webglapi,或任何其它公共或专有标准图形api。技术不应考虑为限于需要特定api。

为了处理图形再现指令,cpu6可将一或多个图形再现命令发出到gpu12以使gpu12执行图形数据的再现的一些或全部。在一些实例中,待再现的图形数据可包含例如点、线、三角形、四边形、三角形带等图形基元的列表。

存储器控制器8促进将数据转移进入到及离开系统存储器10。举例来说,存储器控制器8可接收存储器读取及写入命令,且服务关于存储器10的此类命令以便提供用于计算装置2中的组件的存储器服务。将存储器控制器8通信地耦合到系统存储器10。尽管在图1的实例计算装置2中将存储器控制器8说明为从cpu6及系统存储器10两者分离的处理模块,但在其它实例中,可将存储器控制器8的功能性中的一些或全部实施于cpu6及系统存储器10中的一者或两者上。

系统存储器10可存储可由cpu6存取以用于执行的程序模块及/或指令及/或由在cpu6上执行的程序使用的数据。举例来说,系统存储器10可存储用户应用及与所述应用相关联的图形数据。系统存储器10可另外存储用于由计算装置2的其它组件使用及/或由其产生的信息。举例来说,系统存储器10可充当用于gpu12的装置存储器且可存储待由gpu12操作的数据以及由gpu12执行的操作产生的数据。举例来说,系统存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或其类似者的任何组合。另外,系统存储器10可存储命令流以供gpu12处理。系统存储器10可包含一或多种依电性或非依电性存储器或存储装置,例如,随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、只读存储器(rom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、快闪存储器、磁性数据媒体或光学存储媒体。

在一些方面中,系统存储器10可包含使cpu6及/或gpu12执行在本发明中归于cpu6及gpu12的功能的指令。相应地,系统存储器10可为其上存储有指令的计算机可读存储媒体,所述指令当经执行时使得一个或多个处理器(例如,cpu6及gpu12)执行各种功能。

在一些实例中,系统存储器10为非暂时性存储媒体。术语“非暂时性”指示存储媒体并不以载波或传播信号体现。然而,术语“非暂时性”不应解释成意谓系统存储器10为非可移动或其内容为静态。作为一个实例,可从装置2去除系统存储器10,并将其移动到另一装置。作为另一实例,可将大体上类似于系统存储器10的存储器插入到装置2中。在某些实例中,非暂时性存储媒体可存储随着时间的过去可改变的数据(例如,在ram中)。

gpu12可经配置以执行图形操作以向显示器18再现一或多个图形基元。因此,当在cpu6上执行的软件应用中的一者需要图形处理时,cpu6可向gpu12提供图形命令及图形数据以用于向显示器18再现。图形命令可包含(例如)绘制命令(例如绘制调用)、gpu状态程序设计命令、存储器转移命令、通用计算命令、核心执行命令等。在一些实例中,cpu6可通过将命令及图形数据写入到存储器10而将命令及图形数据提供到gpu12,存储器10可由gpu12存取。在一些实例中,gpu12可经进一步配置以针对在cpu6上执行的应用执行通用计算。

在一些情况下,gpu12可建置有与cpu6相比提供对向量运算更有效处理的高度并行的结构。举例来说,gpu12可包含经配置以按并行方式对多个顶点或像素操作的多个处理元件。在一些情况下,gpu12的高度并行性质允许gpu12比使用cpu6直接将场景绘制到显示器18更快速地将图形图像(例如,gui及二维(2d)及/或三维(3d)图形场景)绘制到显示器18上。另外,gpu12的高度并行性质可允许gpu12比cpu6更快速地处理用于通用计算应用的某些类型的向量及矩阵运算。

在一些情况下,可将gpu12集成到计算装置2的母板中。在其它情况下,gpu12可存在于图形卡上,所述图形卡安装于计算装置2的母板中的端口中或可以其它方式并入经配置以与计算装置2交互操作的外围装置内。在其它情况下,gpu12可定位于与cpu6相同的微芯片上,从而形成系统单芯片(soc)。gpu12及cpu6可包含一个或多个处理器,例如一或多个微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp),或其它等效集成或离散逻辑电路。

gpu12可直接耦合到本地存储器14。因此,gpu12可在不必使用总线20的情况下从本地存储器14读取数据并将数据写入到本地存储器14。换句话说,gpu12可使用本地存储器而非芯片外存储器来在本地处理数据。此通过消除gpu12经由总线20读取及写入数据的需要来允许gpu12以更高效方式操作,经由总线读取及写入数据可经历繁重的总线业务。然而,在一些情况下,gpu12可不包含单独高速缓存存储器,而是改为经由总线20利用系统存储器10。本地存储器14可包含一或多个依电性或非依电性存储器或存储装置,例如随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、快闪存储器、磁性数据媒体或光学存储媒体。

cpu6及/或gpu12可在系统存储器10内分配的帧缓冲器中存储再现的图像数据。显示接口16可从帧缓冲器检索所述数据并配置显示器18以显示由所再现图像数据表示的图像。在一些实例中,显示接口16可包含数字到模拟转换器(dac),其经配置以将从帧缓冲器检索的数字值转换成可由显示器18消耗的模拟信号。在其它实例中,显示接口16可将数字值直接传递到显示器18以用于处理。显示器18可包含:监视器、电视、投影装置、液晶显示器(lcd)、等离子体显示板、发光二极管(led)阵列、阴极射线管(crt)显示器、电子纸、表面传导电子发射显示器(sed)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示器18可集成于计算装置2内。举例来说,显示器18可为移动电话手持机或平板计算机的屏幕。替代地,显示器18可为经由有线或无线通信链路经耦合到计算装置2的独立装置。举例来说,显示器18可为经由电缆或无线链路经连接到个人计算机的计算机监视器或平板显示器。

如所描述,cpu6可将图形处理分担到gpu12,例如需要大规模并行运算的任务。作为一个实例,图形处理需要大规模并行运算,且cpu6可将此类图形处理任务分担到gpu12。然而,例如矩阵运算的其它运算也可得益于gpu12的并行处理能力。在此些实例中,cpu6可充分利用gpu12的并行处理能力,以使gpu12执行非图形相关运算。

在本发明中所描述的技术中,第一处理单元(例如,cpu6)将某些任务分担到第二处理单元(例如,gpu12)。为分担任务,cpu6输出待由gpu12执行的命令及为命令的运算元的数据(例如,命令操作所针对的数据)到系统存储器10及/或直接输出到gpu12。gpu12直接从cpu6及/或从系统存储器10接收命令及数据,并执行所述命令。在一些实例中,cpu6可将待由gpu12执行的命令,及用于命令的数据运算元存储于在包含gpu12及cpu6的ic本地并由cpu6及gpu12两者共享的存储器(例如,本地存储器14)中,而非将所述命令及数据运算元存储在系统存储器10中。一般来说,本发明中所描述的技术适用于cpu6可使命令可用于在gpu12上执行所藉以的各种方式,且所述技术不限于上文的实例。

gpu12执行命令所藉以的速率是通过时钟信号的频率(也称作gpu12的时钟速率或操作频率)设定。举例来说,gpu12可在时钟信号的每一上升或下降边缘执行命令,或在时钟信号的每一上升边缘执行一个命令并在时钟信号的每一下降边缘执行另一命令。因此,时钟信号的上升或下降边缘多久一次出现在时间段内(例如,时钟信号的频率)设定gpu12在所述时间段内执行多少命令。

在一些实例(例如cpu6将待由gpu12执行的命令存储在存储器(例如,系统存储器10或本地存储器)中的那些实例)中,cpu6可输出识别gpu12将执行的命令的群组的存储器地址信息。gpu12将执行的命令的群组被称为经提交的命令。在其中cpu6直接输出命令到gpu12的实例中,所提交命令包含cpu6指导gpu12直接地执行的那些命令。

可存在cpu6可分群命令所藉以的各种方式。作为一个实例,命令的群组包含由gpu12再现一个帧所需要的所有命令。作为另一实例,命令的群组可为所谓的在gpu12不切换到其它命令情况下待一起被执行的“原子命令”。分群经提交到gpu12的命令的其它方式可为可能的,且本发明不限于上述实例技术。

在一些情况中,gpu12可在设定的时间段内执行所提交命令。举例来说,装置2可为手持型装置,其中显示器18也充当用户接口。作为一个实例,为达成流畅(也称作无闪避)用户接口,gpu12可在大致16毫秒(ms)内完成所提交命令的执行,假定每秒60帧的帧速率(其它时间段为可能的)。此16ms时间段可被称为“vsync”窗,且如果gpu12未在vsync窗内完成所提交命令的执行,那么在gpu12的执行管线中可存在“泡”,从而引起闪避填充的用户接口。

gpu12的执行管线中的“泡”指其中gpu12的正执行命令的单元已部分完成命令的执行从而产生一些中间数据,但gpu12的将接收中间数据的单元仍忙于执行其它命令从而致使中间数据保持构建的情况。举例来说,gpu12的执行管线包含一系列单元,所述系列单元各自产生通过系列中(即,在管线中)的下一单元进一步处理的中间数据。在一些情况中,与gpu12的执行管线的下游单元可消耗中间数据速度相比,gpu12的执行管线的上游单元更快地产生中间数据,从而产生所谓的泡。

cpu6提交的命令量及cpu6提交命令的时间的时序无需一定为恒定的。可存在gpu12将执行的命令的数目的流入或减少。举例来说,在cpu6上执行的应用(例如,第三方应用)可增加或减少待由gpu12执行的命令的数目,或在cpu6上执行的操作系统(例如,构架自身)可增加或减少待由gpu12执行的命令的数目。作为另一实例,cpu6可在时间0处提交第一命令群组,在时间1处提交第二命令群组,并在时间2处提交第三命令群组。然而,第一命令群组提交与第二命令群组提交之间的时间间隔可不同于第二命令提交与第三命令群组提交群组之间的时间间隔。

由于gpu12将在设定时间段(例如,16ms)内执行的命令量可改变,因此gpu12的时钟信号的频率(即,gpu12的时钟速率或gpu12的操作频率)可需要增加或减少以使得gpu12能够在设定时间段内执行命令而无需不必要地增加功率消耗。gpu12在设定时间段内需要执行的命令量可改变,此是由于命令的群组中存在需要在设定时间段内执行的更多或更少命令,此是由于存在需要在设定时间段内执行的命令群组的数目的增加或减少,或两个原因的组合。

如果时钟信号的频率永久地保持在相对高频下,那么gpu12将能够在大部分情况下及时执行所提交命令。然而,以相对高频执行命令使得gpu12的功率消耗增加(例如,需要更多电功率以较高时钟速率驱动gpu12)。如果时钟信号的频率永久地保持在相对低频率处,那么gpu12的功率消耗可减少(例如,需要较小电功率以较低时钟速率驱动gpu12),但gpu12可不能够在大部分情况下及时执行所提交命令,从而导致闪避行为及可能其它不需要的效应。

本发明中所描述的技术描述基于在特定时间间隔内gpu12的使用情况主动地增加或减少gpu12的时钟速率(即,时钟信号的频率)所藉以的实例方式。用以确定gpu12的时钟速率的时间间隔的一个实例为gpu12完成当前帧的再现的时间与gpu12完成紧接在当前帧之前的前一帧的再现的时间之间的时间间隔。如本发明中所使用,再现帧的完成指gpu12执行再现帧所需要的所有命令,包含但未必始终包含用以将再现的帧存储在系统存储器10中的命令。举例来说,再现帧的完成可被视为在gpu12确定帧的最后像素的像素值时或在gpu12将帧的最后像素的像素值写入到系统存储器10时的例项。

如在本发明中所使用,帧指可被呈现的完整图像,但在一些实例中可为完整图像的一部分。举例来说,可存在并不每次重新再现的静态背景,但通过gpu12再现的帧可与静态背景复合(例如,通过显示接口16)以产生完整图像。作为另一实例,显示接口16可组合视频与通过gpu12再现的帧。

帧包含表示图形内容的多个像素,其中每一像素具有像素值。举例来说,在gpu12再现帧之后,gpu12将帧的像素的所得像素值存储在帧缓冲器中,所述帧缓冲器可在系统存储器10中。显示接口16从帧缓冲器接收帧的像素的像素值并基于像素值输出值以使显示器18显示帧的图形内容。在一些实例中,显示接口16使显示器18在每秒60个帧(fps)的速率下显示帧(例如,大致每16.67ms显示一帧)。

在以下描述中,关于cpu6确定gpu12的忙碌程度及设定gpu12的时钟速率描述实例技术。然而,此些技术也可通过gpu12或cpu6与gpu12一起实施。

为确保gpu12在足够高但不过高的操作频率下操作以确保满足60fps要求,cpu6可确定gpu12的忙碌程度,忙碌程度指示gpu12将如何忙碌地再现帧。忙碌程度指gpu12在时间间隔期间执行再现帧的命令的时间量。考虑另一方式,忙碌程度指示在时间间隔期间使用多少gpu循环(例如,gpu12的时钟循环)来再现帧。忙碌程度测量值可以时间为单位,且有时可表示为百分比(例如,忙碌时间量除以乘以100的时间间隔)。一般来说,忙碌程度指gpu12完成帧工作负荷所花费的时间量。

gpu12可包含每当gpu12内的单元存储数据到一或多个通用寄存器(gpr)及/或从一或多个通用寄存器(gpr)读取数据时递增计数器的电路。在时间间隔结束处(例如,在gpu12完成帧的再现之后),cpu6可确定gpu12内的单元存取一或多个gpr以再现帧的次数。举例来说,cpu6可确定在完成紧接在前面的帧的再现的结束处的计数器值与在完成当前帧的再现的结束处的计数器值之间的差以确定gpu12内的单元存取所述一或多个gpr以再现帧的次数。

gpu12内的单元存取一或多个gpr的次数可为用以再现帧的时钟循环的数目的充分近似值。基于帧再现期间的gpu12的时钟速率及用以再现帧的时钟循环的数目,cpu6可确定gpu12在帧再现期间忙碌的时间量。举例来说,用以再现帧的时钟循环的数目乘以gpu12的时钟速率的周期指示gpu12在帧再现期间忙碌的时间量(例如,用于再现帧的gpu12的忙碌程度)。

作为另一实例,gpu12可包含只要任一gpu子块(例如,gpu12内的单元)忙碌便递增计数器以及gpu12的时钟周期的电路。计数器中的值指示用以再现帧的时钟循环的数目。

上述内容为cpu6确定gpu12的忙碌程度所藉以的两个实例方式。本发明中所描述的技术不限于用以确定gpu12的忙碌程度的此特定实例。可存在用以确定gpu12的忙碌程度的多种不同方式,且cpu6可采用所述不同方式中的一或多者来确定gpu12的忙碌程度。

cpu6可将gpu12忙于再现当前帧的时间量除以时间间隔的时间量以确定gpu12的忙碌程度百分比。在一些实例中,cpu6可将gpu12忙碌用于再现当前帧的时间量除以先前n数目个时间间隔的平均时间量以确定gpu12的忙碌程度百分比。在任一实例中,忙碌程度百分比是基于当前帧的忙碌程度且并不基于任何其它帧的忙碌程度(例如,gpu12怎样忙碌于再现仅仅当前帧)。

cpu6接着可确定是增加抑或减少gpu12的时钟速率。举例来说,如果忙碌程度百分比大于第一阈值,那么cpu6可增加gpu12的时钟速率且如果忙碌百分比小于第二阈值,那么cpu6可减少gpu12的时钟速率。第一阈值及第二阈值可为不同阈值或相同阈值。在一些实例中,可存在cpu6可确定增加或减少gpu12的时钟速率多少所藉以的多个阈值。

在一些实例中,gpu12可确定gpu12完成当前帧的再现的时间与gpu12完成紧接在当前帧之前的前一帧的再现的时间之间的时间间隔,而非cpu6或结合cpu6。举例来说,gpu12的控制器可从上文所描述的实例计数器读取以确定gpu12在帧再现期间怎样忙碌以及先前n数目个时间间隔的gpu12忙于再现的平均时间量。gpu12的控制器接着可类似于关于cpu6描述的上述实例而增加或减少时钟速率。

通过基于帧末端到帧末端(例如,gpu12完成当前帧的再现的时间与gpu12完成紧接在当前帧之前的前一帧的再现的时间之间的时间间隔)确定忙碌程度,cpu6及/或gpu12可相对迅速及相对准确地确定gpu12的时钟速率。在一些技术中,cpu6可基于在gpu12空闲时的例项确定时间间隔,而非基于帧末端到帧末端确定时间间隔,cpu6及/或gpu12确定在所述时间间隔内的忙碌程度或忙碌程度百分比。

然而,基于gpu12空闲的时间或基于所呈现时间间隔确定忙碌程度或忙碌程度百分比可需要对多个忙碌程度或忙碌程度百分比进行平均以确定准确忙碌程度或忙碌程度百分比。确定忙碌程度或忙碌程度百分比为平均值需要cpu6等待gpu12再现多个帧,此是由于cpu6可确定gpu12的时钟速率。等待gpu12再现多个帧导致用以确定忙碌程度或忙碌程度百分比的长延迟,且延迟gpu12的时钟速率调整,此可导致闪避行为。

举例来说,如果gpu12在阈值时间量内不输出任何图形数据,那么gpu12被认为空闲。在一些实例中,cpu6监视由gpu12对gpu12将像素值存储到的存储位置的存取以确定在临限时间量中无图形数据输出。作为响应,如上文所描述,cpu6从计数器读取以确定忙碌程度及忙碌程度百分比。举例来说,cpu6确定从gpu12为空闲的最后时间到gpu12为空闲的当前例项(例如,空闲到空闲时间)的计数器的差异。

然而,由于gpu12变为空闲的时间及在gpu12变为空闲时的时间之间处理的帧的数目可为相对随机的,因此依赖于gpu12变为空闲之时的例项在所有情形中可不为有益的。举例来说,常常,一个帧紧跟在另一个帧之后,意谓在gpu12的空闲到空闲时间之间存在相对大间隙。如果仅仅一个帧在gpu12的空闲到空闲时间之间再现,那么空闲到空闲时间可相对短暂。即使帧中的每一者的工作负荷为相同的,此仍导致使忙碌程度百分比波动。为抵消波动,cpu6可对在多个空闲到空闲时间间隔内的忙碌程度百分比进行平均,此延迟设定gpu12的时钟速率之时。另外,如果在存在空闲之前存在长延迟(例如,由于多个帧在其间没有空闲时间情况下再现),那么cpu6可在确定用于gpu12的时钟速率时延迟。

另外,在一些情况中,可在帧的处理内存在空闲时间。举例来说,cpu6可提交命令到gpu12以再现帧所藉以的方式可包含其中cpu6提交多个命令到gpu以再现帧,且接着存在期间cpu6不提交额外命令的部分,且接着在所述部分之后,cpu6提交剩余命令到gpu以再现帧的情形。在此情况下,在命令的提交之间的此部分期间,gpu12可为空闲的。与其中gpu12在再现帧的一部分期间为空闲的仅一个例项相比,可存在更多空闲时间。发生在gpu12在再现帧的过程中时的此空闲时间可触发cpu6确定时钟速率,所述确定可是在gpu12仍再现帧时基于不充分信息。

确定时钟速率时的延迟意谓gpu12并不迅速对gpu12需要执行的命令量的变化作出反应。举例来说,如果gpu12的时钟速率响应于工作负荷的增加而不渐升,那么归因于帧可能丢弃而在显示于显示器18上的用户接口中可存在闪避。如果gpu12的时钟速率响应于工作负荷的减少而不渐降,那么gpu12可浪费功率。在一些情况中,在工作负荷减少之后可在减缓gpu12的时钟速率时存在200到800ms延迟,在此期间由gpu12消耗的功率不必大于其应消耗的功率。

在使用本发明中描述的技术情况下,cpu6可依赖于与单个帧的再现有关的信息以确定时钟速率,其允许cpu6确定gpu12的时钟速率而不需忙碌程度或忙碌程度百分比的多个测量值。另外,由于cpu6使用帧末端来触发确定忙碌程度或忙碌程度百分比的时间,因此甚至在存在不具有空闲时间的背对背帧的情况下或在再现帧中间存在空闲时间的情况下,可能对忙碌程度或忙碌程度百分比确定几乎没有影响。在一些实例中,gpu12可实施类似技术以确定其自身时钟速率,而非cpu6确定gpu12的时钟速率。

为确定gpu12完成再现帧的时间,cpu6可从gpu12接收cpu6用以确定gpu12完成再现帧的信息(例如,输出帧的最后像素的像素值)。作为一个实例,作为openglapi的部分,在再现帧结束处,gpu12可请求系统存储器10中的存储器空间用于再现下一帧。为请求存储器空间,gpu12可输出对于存储器空间的请求到cpu6,且cpu6可使用此存储器请求的接收以确定gpu12完成帧的再现。举例来说,gpu12执行gl.swapbufferapi以输出对于存储器空间的请求。作为实例,gl.swapbuffer可将缓冲器从写入改变到读取并将另一缓冲器从读取改变到写入,但请求存储器空间的其它方式为可能的。cpu6使用请求的接收以确定gpu12完成帧的再现。

作为另一实例,gpu12的软件工具包可包含开发者编程gpu12以在完成再现帧时调用的用户模式驱动器(umd),且umd的执行使得gpu12输出帧末端标志。cpu6使用帧末端标志以确定gpu12完成帧的再现。作为另一实例,gl.swapbufferapi可直接以umd更新,以使得cpu6基于gl.swapbufferapi接收帧末端标志且不需要开发者干预。

用于cpu6确定gpu12完成帧的再现的其它技术为可能的且在本发明中所描述的技术不应被考虑限制于上文的实例。此外,在其中gpu12确定帧末端到帧末端时间间隔的实例中,gpu12的控制器可确定gpu12执行gl.swapbufferapi的时间或umd被执行的时间。在此些情况下,控制器可确定gpu12到达帧末端。

在本发明中所描述的技术中,处理器(例如,也称作主机处理器的cpu6、gpu12,或两者的组合)可确定在gpu12完成再现第一帧时的第一时间例项并确定在gpu12完成再现紧接在第一帧之前的第二帧时的第二时间例项。第一时间例项为在gpu12确定当前帧的最后像素的像素值时的例项或在gpu12输出当前帧的最后像素的像素值时的例项。第二时间例项为在gpu12确定前一帧的最后像素的像素值时的例项或在gpu12输出当前帧的最后像素的像素值时的例项。

在一些情况中,gpu12可已在当前帧的再现期间的至少一部分中空闲。举例来说,从gpu12开始再现第一帧的时间起,gpu12可不连续再现帧,且可持续一段时间空闲。在持续所述部分空闲之后,gpu12可继续再现第一帧,且接着指示cpu6完成第一帧的再现的时间或确定(例如,经由控制器)完成第一帧的再现的时间。

在一些情况中,在前一帧与当前帧之间可不存在空闲时间。举例来说,cpu6可指导gpu12再现第二前一帧且接着紧接着指导gpu12再现第一当前帧。在此实例中,gpu12紧接在完成再现第二帧之后开始再现第一帧,以使得在再现第二帧与再现第一帧之间不存在gpu12空闲时间。

cpu6可基于接收对于用于再现下一帧的存储器的请求而确定第一时间例项及第二时间例项。类似地,gpu12可基于传输对于用于再现下一帧的存储器的请求的时间而确定第一时间例项及第二时间例项。以此方式,处理器可确定在gpu12变得空闲之前及基本上紧接在完成再现前一或当前帧之后的第一时间例项及第二时间例项。举例来说,处理器可从gpu12完成再现第二(前一)帧或第一(当前)帧的时间起小于5ms、2ms或甚至可能小于1ms(例如,在比cpu6确定gpu12空闲所花费的时间更少的时间中)确定gpu12完成再现第二帧或第一帧。

处理器(例如,cpu6及/或gpu12)可基于第一时间例项及第二时间例项确定时间间隔(例如,第一时间例项的时间与第二时间例项的时间之间的差)。处理器可确定用于在时间间隔期间再现当前帧的gpu12的忙碌程度(例如,用以在时间间隔期间处理用于再现帧的工作负荷的时间量)。

基于经确定忙碌程度,处理器可确定gpu12的时钟速率。举例来说,处理器可基于经确定忙碌程度及经确定时间间隔确定忙碌程度百分比(例如,将在时间间隔期间处理工作负荷的时间量除以时间间隔的时间量)。处理器可比较忙碌程度百分比与阈值并基于所述比较确定时钟速率。

作为另一实例,处理器可对时间间隔与一或多个先前时间间隔进行平均以确定平均时间间隔。在此实例中,一或多个先前时间间隔中的每一者指示各别先前帧的再现的完成之间的时间间隔。举例来说,处理器可对于n数目个时间间隔,对当前帧与前一帧的再现之间的时间间隔,前一帧与紧接在前一帧之前的帧的再现之间的时间间隔等进行平均。此平均可被视为经开窗流动平均值。

处理器可基于经确定忙碌程度及平均时间间隔确定忙碌程度百分比,并比较忙碌程度百分比与阈值。类似于上述内容,处理器可基于所述比较确定时钟速率。

处理器可基于经确定忙碌程度确定gpu12的时钟速率。在一些实例中,处理器可基于用于再现第一帧及无其它帧的经确定忙碌程度确定gpu12的时钟速率。以此方式,处理器经配置以基于单个帧而非在gpu12再现多个帧之后确定时钟速率,其允许gpu12以极少延迟渐升或渐降其操作频率以使得gpu12在其最低频率电平处操作同时仍及时完成命令的执行。

处理器可将gpu12的时钟速率设定成经确定时钟速率。举例来说,在其中处理器为cpu6的实例中,cpu6接着可指导gpu12将gpu12的时钟速率设定成经确定时钟速率。在其中处理器为gpu12的实例中,gpu12的控制器可指导gpu12设定gpu12的时钟速率。gpu12接着可以经确定时钟速率操作。尽管处理器基于设定用于再现后续帧的时钟速率的当前帧通过使用用于确定时钟速率的仅仅一个帧来确定gpu12的时钟速率,但处理器可在时钟速率不正确的情况下即刻更新时钟速率,此是由于处理器可紧接在gpu12完成再现下一帧之后更新时钟速率。

图2为更详细地说明图1中所说明的装置的组件的框图。如图2中所说明,gpu12包含控制器30、振荡器34、计数器寄存器35、着色器核心36及固定功能管线38。着色器核心36及固定功能管线38可共同形成用以执行图形或非图形相关功能的执行管线。尽管仅说明一个着色器核心36,但在一些实例中,gpu12可包含类似于着色器核心36的一或多个着色器核心。

gpu12将执行的命令是由着色器核心36及固定功能管线38执行,如通过gpu12的控制器30所确定。控制器30可经实施为gpu12上的硬件或在gpu12的硬件上执行的软件或固件。控制器30为上文所描述用于在gpu12确定时钟速率的情况下执行实例技术的控制器的实例。

控制器30可从系统存储器10的命令缓冲器40或直接从cpu6接收待经执行用于再现帧的命令(例如,接收cpu6确定现在应由gpu12执行的所提交命令)。控制器30也可从系统存储器10的数据缓冲器42或直接从cpu6检索用于命令的运算元数据。举例来说,命令缓冲器40可存储将a与b相加的命令。控制器30从命令缓冲器40检索此命令并从数据缓冲器42检索a及b的值。控制器30可确定哪些命令待由着色器核心36执行(例如,在着色器核心36上执行软件指令)及哪些命令待由固定功能管线38执行(例如,用于固定功能管线38的单元的命令)。

在一些实例中,来自命令缓冲器40及数据缓冲器42中的一者或两者的命令及/或数据可为gpu12的本地存储器14的部分。举例来说,gpu12可包含分别存储来自命令缓冲器40的命令及来自数据缓冲器42的数据的指令高速缓存存储器及数据高速缓存存储器,其可为本地存储器14的部分。在此些实例中,控制器30可从本地存储器14检索命令及/或数据。

着色器核心36及固定功能管线38可从彼此传输及接收数据。举例来说,着色器核心36执行的命令中的一些可产生为用于固定功能管线38的单元将执行的命令的运算元的中间数据。类似地,固定功能管线38的单元执行的命令中的一些可产生为用于着色器核心36将执行的命令的运算元的中间数据。以此方式,经由固定功能管线38的单元及着色器核心36以管线化方式逐渐地处理所接收数据。因此,着色器核心36及固定功能管线38可被称为实施执行管线。在一些实例中,gpu12可包含大于一个着色器核心36,且图2中的实例经提供以仅辅助理解。

一般来说,着色器核心36允许各种类型的命令被执行,从而意谓着色器核心36为可编程的且将功能灵活性提供给用户,此是由于用户可编程着色器核心36以按大部分可以想象的方式执行所要任务。然而,固定功能管线38的固定功能单元为固线式以用于固定功能单元执行任务所藉以的方式。因此,固定功能单元可不提供大的功能灵活性。

也如图2中所说明,gpu12包含振荡器34。当着色器核心36及/或固定功能管线38的单元执行命令时,振荡器34输出设定时间例项的时钟信号。尽管振荡器34经说明为在gpu12内部,但在一些实例中,振荡器34可在gpu12外部。另外,振荡器34无需仅提供用于gpu12的时钟信号,且也可提供用于其它组件的时钟信号。

振荡器34可产生方波、正弦波、三角波,或其它类型的周期性波。振荡器34可包含用以放大所产生波的电压并将所得波作为用于gpu12的时钟信号输出的放大器。

在一些实例中,在通过振荡器34输出的时钟信号的上升边缘或下降边缘上,着色器核心36及固定功能管线38的每一单元可执行一个命令。在一些情况中,命令可被分成子命令,且着色器核心36及固定功能管线38的每一单元可响应于时钟信号的上升或下降边缘执行子命令。举例来说,a+b的命令包含用以检索a的值及b的值的子命令,且着色器核心36或固定功能管线38可在时钟信号的上升边缘或下降边缘处执行此些子命令中的每一者。

着色器核心36及固定功能管线38的单元执行命令所藉以的速率可影响gpu12的功率消耗。举例来说,如果通过振荡器34输出的时钟信号的频率相对较高,那么与着色器核心36及固定功能管线38的单元将针对时钟信号的相对较低频率执行的命令的数目相比,着色器核心36及固定功能管线38的单元可在时间段内执行更多命令。然而,与其中着色器核心36及固定功能管线38的单元在时间段中执行较少命令(归因于来自振荡器34的时钟信号的较低频率)的例项相比,gpu12的功率消耗可在其中着色器核心36及固定功能管线38的单元在时间段中执行更多命令(归因于来自振荡器34的时钟信号的较高频率)的例项中更大。

如上文所描述,cpu6可归因于gpu12的大规模并行处理能力而分担任务到gpu12。举例来说,gpu12可设计成具有单指令、多数据(simd)结构。在simd结构中,着色器核心36包含多个simd处理元件,其中每一simd处理元件执行相同命令,但是针对不同数据。

在特定simd处理元件上执行的特定命令被称为线程。每一simd处理元件可被视为执行不同线程,此是由于用于给定线程的数据可不同;然而,在处理元件上执行的线程为与在其它处理元件上执行的命令相同的命令。以此方式,simd结构允许gpu12并行执行许多任务(例如,在同一时间)。对于此simd结构化gpu12,每一simd处理元件可在时钟信号的上升边缘或下降边缘上执行一个线程。

为避免混淆,本发明使用术语“命令”来一般指由着色器核心36或固定功能管线38的单元执行的过程。举例来说,命令包含实际命令、构成子命令(例如,存储器调用命令)、线程,或gpu12执行特定功能所藉以的其它方式。由于gpu12包含着色器核心36及固定功能管线38,因此gpu12可被视为执行命令。

另外,在上文的实例中,着色器核心36或固定功能管线38的单元响应于由振荡器34输出的时钟信号的上升或下降边缘而执行命令。然而,在一些实例中,着色器核心36或固定功能管线38的单元可在上升边缘上执行一个命令并在时钟信号的下降边缘上执行另一后续命令。可存在“时钟化”命令的其它方式,且本发明中所描述的技术不限于上文的实例。

由于gpu12在每一上升边缘、下降边缘或两者处执行命令,因此由振荡器34输出的时钟信号的频率(也称作时钟速率)设定gpu12可在某一时间内执行的命令量。举例来说,如果gpu12在时钟信号的每一上升边缘执行一个命令,且时钟信号的频率为1mhz,那么gpu12可在一秒中执行一百万个命令。

如图2中所说明,cpu6执行应用26,如由虚线逻辑框所说明。在执行期间,应用26产生待由gpu12执行的命令,包含指导gpu12检索并执行着色器程式(例如,顶点着色器、片段着色器、用于非图形应用的计算着色器,及类似者)的命令。另外,应用26产生命令操作所针对的数据(即,用于命令的运算元)。cpu6将所产生命令存储在命令缓冲器40中,并将运算元数据存储在数据缓冲器42中。

在cpu6将所产生命令存储在命令缓冲器40中之后,cpu6使命令可用于通过gpu12执行。举例来说,cpu6将一组存储命令及其运算元数据的存储器地址及指示gpu12将何时执行所述组命令的信息传达到gpu12。以此方式,cpu6提交命令到gpu12以供执行以再现帧。

如图2中所说明,cpu6也可执行图形驱动器28。在一些实例中,图形驱动器28可为在cpu6的硬件或硬件单元上执行的软件或固件。图形驱动器28可经配置以允许cpu6及gpu12彼此通信。举例来说,当cpu6分担图形或非图形处理任务到gpu12时,cpu6经由图形驱动器28分担此些处理任务到gpu12。举例来说,当cpu6输出指示gpu12将执行的命令的量的信息时,图形驱动器28可为cpu6的输出信息到gpu12的单元。

作为额外实例,应用26产生图形数据及图形命令,且cpu6可将此图形数据的处理分担给gpu12。在此实例中,cpu6可将图形数据存储在数据缓冲器42中并将图形命令存储在命令缓冲器40中,且图形驱动器28可指导gpu12何时分别从数据缓冲器42及命令缓冲器40检索图形数据及图形命令,从何处分别从数据缓冲器42及命令缓冲器40检索图形数据及图形命令,及何时通过执行所述组命令中的一或多个命令来处理图形数据。

另外,应用26可能需要gpu12执行一或多个着色器程序。举例来说,应用26可需要着色器核心36执行顶点着色器及片段着色器以产生用于待显示(例如,在图1的显示器18上)的帧的像素值。图形驱动器28可指导gpu12何时执行着色器程序并指导gpu12何处检索来自数据缓冲器42的图形数据及何处检索来自命令缓冲器40或来自系统存储器10中的其它位置的命令。以此方式,图形驱动器28可在cpu6与gpu12之间形成链路。

图形驱动器28可根据应用处理接口(api)而配置;但图形驱动器28不需要限制于根据特定api而配置。在装置2为移动装置的实例中,可根据openglesapi来配置图形驱动器28。openglesapi被特定设计成用于移动装置。在装置2为非移动装置的实例中,可根据openglesapi来配置图形驱动器28。

所提交命令中的命令的量可基于再现用户接口或游戏应用的一个帧所需要的命令。对于用户接口实例,gpu12可需要执行在vsync窗(例如,新的帧应准备显示所截至的时间,例如每一16ms)内再现用户接口的一个帧所需要的命令以提供无闪避用户体验。如果存在需要显示的相对较大内容量,那么命令的数量可比在存在需要显示的相对较小内容量情况下大。

为确保gpu12能够在设定时间段内执行所提交命令,控制器30可调整振荡器34输出的时钟信号的频率(即,时钟速率)。然而,为调整时钟信号的时钟速率以使得时钟速率高得足以允许gpu12在设定时间段内执行所提交命令,控制器30可接收指示是增加、减少振荡器34的时钟速率抑或保持时钟速率相同的信息。在一些实例中,控制器30可接收指示振荡器34输出的时钟信号的特定时钟速率的信息。

在本发明中描述的其中cpu6确定gpu12的时钟速率的技术中,频率管理模块32可经配置以确定振荡器34输出的时钟信号的时钟速率。在其中gpu12确定时钟速率的一些实例中,控制器30可经配置以执行关于频率管理模块32描述的实例技术,但在gpu12上执行。

频率管理模块32(也称作动态时钟及电压缩放(dcvs)模块)经说明为在cpu6上执行的软件。然而,频率管理模块32可为在cpu6上的硬件或硬件与软件或固件的组合。

频率管理模块32可经配置以确定在gpu12完成再现第一(当前)帧时的第一时间例项及在gpu12完成再现紧接在当前帧之前的第二(前一)帧时的第二时间例项。在本发明中,紧接在当前帧之前的前一帧指在当前帧之前的帧,其中没有其它帧在前一帧与当前帧之间。在一些情况中,在gpu12完成再现前一帧的时间与gpu12开始再现当前帧的时间之间可存在某一空闲时间。然而,在一些实例中,可在gpu12完成再现前一帧的时间与gpu12开始再现当前帧的时间之间不存在此空闲时间。

举例来说,图形驱动器28可一次性提交命令以再现两个帧。在此实例中,控制器30接收用以再现两个帧中的第一者的命令并指导着色器核心36及固定功能管线38执行所述命令。当命令经由图形管线前进时,一旦用于再现第一帧的最后命令前进通过gpu12的图形管线中的第一单元,控制器30便检索第一命令以开始第二帧的执行(例如,指导gpu12的图形管线的第一单元执行用于再现第二帧的命令)。在此实例中,在帧之间不存在通过gpu12进行的处理的暂停(例如,在两个帧的再现之间无空闲时间)。在一些情况中,图形驱动器28可一次性提交用于大于两个帧的命令。

在一些情况中,图形驱动器28可不一定一次性提交再现帧所需要的所有命令到gpu12或可提交所有命令,但可不指导gpu12一个紧接一个地执行所有命令。举例来说,图形驱动器28可提交用于再现帧的第一组命令,且接着在gpu12变为空闲的时间期间暂停发送更多命令,且接着提交用于再现帧的剩余命令。作为另一实例,图形驱动器28可提交所有命令到gpu12,接着指导gpu12执行第一组命令,接着指导gpu12在gpu12变为空闲的时间期间暂停执行命令,且接着指导gpu12执行剩余指令。可在再现帧期间存在大于一个在期间gpu12变为空闲的持续时间,且仅仅为达成说明的目的提供其中gpu12在再现帧期间在仅仅一个持续时间中变为空闲的上文的实例。

如上文所描述,在gpu12完成再现当前帧或前一帧时的例项为在gpu12分别确定当前帧或前一帧的最后像素的像素值时的例项,或在gpu12分别输出当前帧或前一帧的最后像素的像素值时的例项。作为一个实例,在gpu12完成再现帧(例如,当前或前一帧)时的例项为着色器核心36上的像素着色器的最后执行的例项或在着色器核心36上执行的像素着色器输出帧的最后像素值的例项。

频率管理模块32确定gpu12仅完成再现帧(例如,在再现帧的5ms、2ms或甚至1ms内)所藉以的一种方式是基于对于系统存储器10中的存储器的请求的接收。尽管未说明,但gpu12输出像素值(例如,图形数据)到系统存储器10内的帧缓冲器。在再现帧之后,控制器30执行gl.swapbufferapi以向cpu6请求用以在其中存储用于下一帧的像素值的存储器位置。可存在控制器30将执行gl.swapbufferapi的极高必然程度,因为此为gpu12经分配用于再现下一帧的存储器所藉以的方式。

在此实例中,控制器30输出对于存储器的请求到图形驱动器28。图形驱动器28转递请求到操作系统24及频率管理模块32。频率管理模块32随后将gpu12完成再现帧的时间例项确定为频率管理模块32接收请求的时间例项。操作系统24分配用于gpu12的存储器以输出下一帧的像素值。

作为另一实例,控制器30可执行使得控制器30输出帧末端标志到图形驱动器28的umd(用户模式驱动器),图形驱动器28接着转递帧末端标志到频率管理模块32。作为另一实例,gl.swapbufferapi可以umd更新,因此除gl.swapbufferapi的正常执行以外不需要额外执行。

在其中控制器30确定gpu12的时钟速率的实例中,控制器30可确定执行umd或gl.swapbufferapi的时间。基于执行,控制器30可确定gpu12完成再现帧,且基于执行的时序,控制器30可确定在再现帧末端到帧末端之间逝去的时间量。

频率管理模块32可基于第一时间例项及第二时间例项确定时间间隔(例如,第一时间例项减去第二时间例项)。另外,频率管理模块32可确定在时间间隔期间用于再现当前帧的gpu12的忙碌程度。控制器30可经配置以在其中控制器30确定其时钟速率的实例中执行类似功能。

每当控制器30、着色器核心36或固定功能管线38从本地存储器14内的通用寄存器(gpr)读取数据或存储数据到其时,控制器30可更新(例如,递增)计数器寄存器35中的计数器。频率管理模块32及/或控制器30可能在再现前一帧之后已读取计数器寄存器35并可在再现当前帧之后读取计数器寄存器35。频率管理模块32及/或控制器30可确定从计数器寄存器35读取的两个值之间的差,且所得值可为gpu12再现当前帧所花费的振荡器34的时钟循环的数目的近似值。频率管理模块32及/或控制器30可将时钟循环的经确定数目乘以振荡器34在再现当前帧期间输出的时钟信号的时钟速率的时间段以确定gpu12忙碌的时间量(例如,gpu12的忙碌程度)。

作为另一实例,只要gpu12的任一gpu子块忙碌,控制器30便可更新(例如,递增)计数器寄存器35中的计数器。如上所述,频率管理模块32及/或控制器30可在再现前一帧之后已读取计数器寄存器35并可在再现当前帧之后读取计数器寄存器35。频率管理模块32及/或控制器30可确定从计数器寄存器35读取的两个值之间的差,且所得值可为gpu12再现当前帧所花费的振荡器34的时钟循环的数目的近似值。另外,如上所述,频率管理模块32及/或控制器30可将时钟循环的经确定数目乘以振荡器34在再现当前帧期间输出的时钟信号的时钟速率的时间段以确定gpu12忙碌的时间量(例如,gpu12的忙碌程度)。可存在确定gpu忙碌程度所藉以的各种其它方式,且上文提供两个实例技术。

频率管理模块32及/或控制器30可基于经确定忙碌程度确定振荡器34输出的时钟信号的时钟速率。在其中cpu6设定时钟速率的实例中,频率管理模块32接着可使得图形驱动器28指导gpu12的控制器30将振荡器34输出的时钟信号的时钟速率设定成经确定时钟速率。在其中gpu12设定时钟速率的实例中,控制器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确定gpu12的忙碌程度(例如,gpu12的帧负载)及帧末端到帧末端时间间隔(例如,帧时间或来自再现前一帧的完成及再现当前帧的完成的时间间隔)。频率管理模块32及/或控制器30可使用对于存储器的请求或帧末端标记作为用于确定忙碌程度百分比及频率管理模块32及/或控制器30确定用于再现帧的gpu12的忙碌程度所经过的持续时间的时戳。

以此方式,与可需要五个或超过五个帧以准确确定时钟速率的其它技术相比,频率管理模块32及/或控制器30可将在进行脉速率确定时的时延减少到一个帧时间。低时延及时钟速率的准确确定导致具有更少闪避的更平滑ui体验,且可在其中需要精确时钟速率管理情况下(例如在并行使用情况下)具有特定使用。另外,使用所述技术,时钟速率无需逐渐改变,但可在需要时跳转。举例来说,如果时钟速率在200mhz处,但gpu12的忙碌程度百分比为300%,那么频率管理模块32可指导控制器30以使得振荡器34或控制器30可使得振荡器34将时钟速率跳转到600mhz,而绕过300mhz、400mhz及500mhz时钟速率选项。

此外,由于实例技术依赖于再现帧的完成以确定时钟速率,因此即使在再现帧期间存在gpu12为空闲的一或多个部分,频率管理模块32及/或控制器30仍可能不确定时钟速率中帧再现,且可一直等待直到在确定时钟速率之前再现帧为止。另外,与依赖于空闲时间用于确定何时确定时钟速率的其它技术相比,由于技术不依赖于gpu12的空闲时间以确定时钟速率,因此在本发明中描述的技术甚至在帧的再现之间不存在空闲时间的情况下可准确且低时延地确定时钟速率。

图3a到3c为说明gpu12接收用于再现帧的命令的实例的时序图。图3a到3c说明gpu12接收以用于再现帧的不同命令集合。在图3a到3c中所说明的实例中,每当确定忙碌程度百分比时gpu12的实际忙碌程度百分比是相同的(例如,50%忙碌程度百分比);然而所述经确定忙碌程度百分比可变化。在图3a到3c中,gpu12的忙碌程度百分比为gpu12的忙碌程度除以gpu12的两个空闲之间的时间间隔。

图3a到3c的x轴上的数字说明cpu6确定忙碌程度百分比的例项。如所说明,在gpu12完成再现帧之后在确定gpu12为空闲之前经过某一时间。因此,cpu6确定忙碌程度百分比的时间是在再现帧之后且不在再现帧时或紧接在再现帧之后。在图3a到3c中,在gpu12输出最后像素的像素值之后在确定忙碌程度百分比之前流逝某一时间。如上文所描述,在可进行忙碌程度百分比的准确确定之前,基于gpu12为空闲时的时间确定忙碌程度百分比可需要长延迟。

举例来说,图3a说明如下理想情况:gpu12再现帧且接着存在gpu12为空闲的设定时间,接着gpu12在其中再现下一帧的设定时间量,继之以gpu12为空闲的设定时间等等。在此实例中,实际忙碌程度百分比及测量忙碌程度百分比跟踪彼此(例如,两者皆为50%)。然而,理想gpu业务为罕见的。

图3b说明不同于图3a中间隔为恒定的情况的gpu12将再现帧的时间之间的间隔不恒定的情况。举例来说,对于最后两个帧,在再现帧之间可不存在用于gpu12的空闲时间。在此实例中,在样本1(例如,在第一帧之后不久)处,cpu6可确定忙碌程度百分比为50%,其与实际忙碌程度百分比相同。在样本2(例如,在第二帧之后不久)处,cpu6可确定忙碌程度百分比为60%,此是由于时间间隔较短但被执行的命令数量对于每一帧而言为相同的(例如,帧负载相同)。在此情况下,由于在再现帧3与帧4之间不存在空闲时间,因此在再现帧3之后无样本获得。在样本3(例如,在第四帧之后不久)处,cpu6可确定忙碌程度百分比为40%,此是由于时间间隔的量可大得多。三个经确定忙碌程度百分比的平均值将为50%(例如,(50%+60%+40%)除以3),但四个帧是在达到50%之前被处理。

图3c说明其中在再现帧期间存在空闲时间的情况,在此时间期间cpu6可确定忙碌程度百分比。在此实例中,在样本1处,cpu6可确定忙碌程度百分比为50%,在样本2处,cpu6可确定忙碌程度百分比为60%,在样本3处,cpu6可确定忙碌程度百分比在30%处,在样本4处,cpu6可确定忙碌程度百分比在30%处,且在样本5处,cpu6可确定忙碌程度百分比在80%处。样本的平均值为50%,但五个样本是在到达50%之前被处理。

因此,在图3a到3c中,如果在gpu12变为空闲时cpu6确定忙碌程度百分比,那么即使具有恒定忙碌程度,cpu6确定的忙碌程度百分比仍可波动。此可是由于帧间空闲持续时间并不均匀分布及/或由于可在帧的再现的一部分期间存在空闲时间。在一些实例中,cpu6可使用样本(例如,3或5个样本,如图3b及3c中所说明)的大滑动窗以滤除波动。然而,在等待大滑动窗中,在设定gpu12的振荡器34的时钟信号的时钟速率时存在大延迟。

在本发明中所描述的技术中,由于cpu6在完成再现帧时而非在空闲时间期间确定时钟速率。因此,波动可不存在,且cpu6可能够在再现一个帧而不是再现多个帧之后确定时钟速率。同样,尽管关于cpu6描述图3a到3c中所说明的实例,但实例技术也可通过gpu12执行。

图4为说明gpu12接收用于再现帧的命令的另一实例的时序图。图4用以说明本发明中所描述的技术为何减少确定振荡器34输出的时钟信号的时钟速率的时延。实例涉及cpu6说明但也可通过gpu12执行。为了说明时延减少,图4涉及cpu6基于仅再现当前帧确定忙碌程度百分比而描述,并关于cpu6通过对忙碌程度百分比进行平均确定忙碌程度百分比而描述。即使假定gpu12变为空闲的时间与帧的末端相同,依赖于待再现的多个帧且接着平均仍在可设定gpu12的时钟速率之前延迟时间量。应理解,空闲时间恰在帧末端处并非过程实际上怎样起作用,而是为了说明,进行此假定以易于理解。

图4中,存在六个帧。前五个帧的忙碌程度(例如,帧负载)为10ms,且第六帧的忙碌程度为15ms。第一帧的帧间隔(例如,仅为易于理解,帧的末端到帧的末端经假定为与空闲时间到空闲时间相同)为16ms,第二帧的帧间隔为12ms,第三帧的帧间隔为20ms,第四帧的帧间隔为20ms,第五帧的帧间隔为12ms,且第六帧的帧间隔为16ms。

对于其中cpu6仅使用当前帧的忙碌时间百分比的此实例,cpu6可确定第一帧的平均时间间隔为16ms((16+16)/2)(假定初始帧时间为16ms)并确定第一帧的忙碌时间百分比为63%(10/16)。针对第二帧,cpu6可确定平均时间间隔为15ms((16+16+12)/3)),并确定忙碌时间百分比为67%(10/15)。用于第三帧,cpu6可确定平均时间间隔为16ms((16+16+12+20)/4)),且确定忙碌时间百分比为63%(10/16)。针对第四帧,cpu6可确定平均时间间隔为17ms((16+16+12+20+20)/5)),并确定忙碌时间百分比为59%(10/17)。针对第五帧,cpu6可确定平均时间间隔为16ms((16+16+12+20+20+12)/6)),且确定忙碌时间百分比为63%(10/16)。针对第六帧,cpu6可确定平均时间间隔为16ms((16+16+12+20+20+12+16)/7)),且确定忙碌时间百分比为94%(15/16)。

如此实例中所见,尽管cpu6可确定时间间隔的平均值,但cpu6可使用仅仅当前帧的忙碌程度来确定忙碌时间百分比。举例来说,cpu6可使用最新帧利用率而不是移动平均值。在一些实例中,用户模式驱动器(umd)可通过使得cpu6能够在帧边界处确定gpu12工作负荷的帧边界信息(例如,帧的末端)辅助核心装置驱动器(例如,图形驱动器28)。

在此实例中,假定五个先前帧全部具有63%的样本忙碌百分比。另外,假定五个先前帧用以确定平均忙碌百分比。对于cpu6等待gpu12的空闲时间的情况,针对第一帧,cpu6可确定忙碌程度百分比为63%(10/16)并确定平均忙碌程度百分比为63%(例如,(63+63+63+63+63)/5=63)。针对第二帧,cpu6可确定忙碌程度百分比为83%(10/12)并确定平均忙碌程度百分比为67%(例如,(63+63+63+63+83)/5=67)。针对第三帧,cpu6可确定忙碌程度百分比为50%(10/20)并确定平均忙碌程度百分比为65%(例如,(63+63+63+83+50)/5=64.4)。针对第四帧,cpu6可确定忙碌程度百分比为50%(10/20)并确定平均忙碌程度百分比为62%(例如,(63+63+83+50+50)/5=61.8)。针对第五帧,cpu6可确定忙碌程度百分比为83%(10/12)并确定平均忙碌程度百分比为66%(例如,(63+83+50+50+83)/5=65.8)。针对第六帧,cpu6可确定忙碌程度百分比为94%(15/16)并确定平均忙碌程度百分比为72%(例如,(83+50+50+83+94)/5=72)。

图5为说明相对于时间段的gpu将执行的命令的数目的图表。在图5的实例中,帧速率为每秒30个帧,且如所说明,gpu12的可导出忙碌程度所藉以的帧负载大致恒定在24,000。

图6a为说明利用一个实例技术的相对于图5中所说明的时间段的忙碌程度百分比确定的图表。图6b为说明利用另一实例技术的相对于图5中所说明的时间段的忙碌程度百分比确定的图表。在图6a的实例中,cpu6及/或gpu12可基于gpu12的空闲到空闲时间确定振荡器34的时钟信号的时钟速率,且在图6b的实例中,cpu6及/或gpu12可基于帧末端到帧末端确定振荡器34的时钟信号的时钟速率。如图6a中所说明,时钟速率波动。然而,在图6b中,时钟速率相当恒定。

图7为说明根据本发明中描述的技术的时钟速率确定的实例方法的流程图。如所描述,实例技术可通过cpu6、gpu12或cpu6与gpu12的组合执行。因此,关于处理器描述图7。处理器的一个实例为cpu6,处理器的一个实例为gpu12,且处理器的一个实例为cpu6与gpu12的组合。

如所说明,处理器(例如,cpu6及/或gpu12)确定在gpu12完成再现第一帧时的第一时间例项(50)。第一时间例项包括在gpu12确定第一帧的最后像素的像素值时的例项或在gpu12输出第一帧的最后像素的像素值时的例项。处理器确定在所述gpu12完成再现紧接在当前帧之前的第二帧时的第二时间例项(52)。第二时间例项包括在gpu12确定第二帧的最后像素的像素值时的例项或在gpu12输出第二帧的最后像素的像素值时的例项。

在一些情况中,gpu12在再现第一帧期间的至少一部分中为空闲的。另外,在一些情况中,gpu12紧接在完成再现第二帧之后再现第一帧,以使得在再现第二帧与再现第一帧之间不存在gpu空闲时间。cpu6接收对于用于再现下一帧的存储器的请求,且cpu6响应于接收到对于用于再现下一帧的存储器的请求确定第一时间例项。

处理器基于第一时间例项及第二时间例项确定时间间隔(54)。处理器确定在时间间隔期间用于再现第一帧的gpu12的忙碌程度(56)。基于经确定忙碌程度,处理器可设定gpu12的时钟速率(58)。

在一些实例中,处理器基于经确定忙碌程度确定gpu12的时钟速率,且处理器基于经确定时钟速率设定gpu12的时钟速率。举例来说,cpu6可指导控制器30设定振荡器34的时钟速率或控制器30可直接设定振荡器34的时钟速率。处理器可基于用于再现第一帧及无其它帧的经确定忙碌程度确定用于gpu12的时钟速率。

在一些实例中,处理器可基于经确定忙碌程度及经确定时间间隔来确定忙碌程度百分比,比较忙碌程度百分比与阈值,并基于所述比较确定时钟速率。在一些实例中,处理器可对时间间隔及一或多个先前时间间隔进行平均以确定平均时间间隔,所述一或多个先前时间间隔中的每一者指示各别先前帧的再现的完成之间的时间间隔。处理器可基于所述经确定忙碌程度及平均时间间隔来确定忙碌程度百分比,可比较忙碌程度百分比与阈值,并基于所述比较确定时钟速率。

在一或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么所述功能可作为一或多个指令或程序代码存储在计算机可读媒体上并由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于例如数据存储媒体的有形媒体。以此方式,计算机可读媒体通常可对应于非暂时性的有形计算机可读存储媒体。数据存储媒体可为可通过一或多个计算机或一或多个处理器存取以检索指令、程序代码及/或数据结构以用于实施本发明所描述的技术的任何可用媒体。计算机程式产品可包含计算机可读媒体。

通过实例而非限制,此些计算机可读存储媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储器、磁盘存储器或其它磁性存储装置、快闪存储器或可用于存储呈指令或数据结构形式的所要程序代码且可由计算机存取的任何其它媒体。应理解,计算机可读存储媒体及数据存储媒体并不包含载波、信号或其它暂时性媒体,但取而代之涉及非暂时性、有形存储媒体。如本文中所使用,磁盘及光盘包含紧密光盘(cd)、激光光盘、光学光盘、数字影音光盘(dvd)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘使用激光以光学方式再现数据。以上各者的组合也应包含于计算机可读媒体的范围内。

可由例如一或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效集成式或离散逻辑电路的一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可提供于经配置用于编码及解码的专用硬件及/或软件模块内,或并入组合式编解码器中。此外,所述技术可完全实施于一或多个电路或逻辑元件中。

本发明的技术可在广泛多种装置或设备中实施,包含无线手持机、集成电路(ic)或一组ic(例如,芯片组)。在本发明中描述各种组件、模块或单元以强调经配置以执行所公开技术的装置的功能方面,但未必要求由不同硬件单元来实现。确切而言,如上文所描述,可将各种单元组合于编解码器硬件单元中,或通过互操作性硬件单元(包含如上文所描述的一或多个处理器)的集合结合合适的软件及/或固件来提供所述单元。

已描述各种实例。此些及其它实例是在以下权利要求书的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1