处理器频率和总线带宽的基于作用和停滞循环的动态缩放的制作方法

文档序号:16637130发布日期:2019-01-16 07:07阅读:187来源:国知局
处理器频率和总线带宽的基于作用和停滞循环的动态缩放的制作方法

本公开涉及频率和带宽的动态调整,且更具体地说,涉及处理器频率和总线带宽的动态缩放。



背景技术:

移动装置由具有有限大小和/或容量的电池供电。通常,移动装置用于进行电话呼叫、检查电子邮件、记录/重放图片/视频、收听无线电、导航、网络浏览、玩游戏、管理装置和执行计算等等。许多这些动作利用不同处理单元来执行一些任务。处理单元的实例包含中央处理单元(cpu)、数字信号处理器(dsp)、图形处理单元(gpu)等等。这些处理单元通常可消耗移动装置中的大量功率。因而,管理此类处理单元的功率消耗来延长电池寿命是有益的。



技术实现要素:

一般来说,本公开描述用于调整处理单元的操作频率和/或总线带宽的技术。如更详细地描述,动态功率管理程序(dpm)可单独考虑处理单元的作用时间和处理单元的停滞时间以确定处理单元的频率与总线带宽的组合。dpm可以是在电路、硬件电路或其组合上执行的软件模块。包含dpm的电路(例如其执行dpm或包含dpm的硬接线电路)可以在处理单元上或在不同处理单元上。

停滞时间指示归因于第二不同时钟域中的处理的延迟的在第一时钟域中操作的处理单元的处理的延迟。作用时间指示处理单元的组件有多长时间是在作用中。

dpm的电路可经配置以确定在频率和/或总线带宽经调整到另一频率和/或总线带宽的情况下处理单元的作用时间将是多少,且确定在频率和/或总线带宽经调整到另一频率和/或总线带宽的情况下处理单元的停滞时间作为单独的值将是多少。dpm单元的电路接着可确定是否调整频率和/或总线带宽。通过解耦作用时间与停滞时间以用于确定是否调整频率和总线带宽,dpm的电路相较于作用时间和停滞时间在一起组成用于确定频率和总线带宽的单个值的实例可更精确地确定提供最大可能功率节省且无性能下降的频率和总线带宽。

在一个实例中,本公开描述一种操作点确定方法,所述方法包括:确定处理单元在第一操作点处的第一作用时间;确定处理单元在第一操作点处的第一停滞时间;基于第一作用时间确定处理单元在第二操作点处的第二作用时间;基于第一停滞时间确定处理单元在第二操作点处的第二停滞时间;基于第二作用时间和第二停滞时间确定是否将处理单元的操作点从第一操作点调整到第二操作点;和基于调整处理单元的操作点的确定将处理单元的操作点从第一操作点调整到第二操作点。

在一个实例中,本公开描述一种用于操作点确定的装置,所述装置包括处理单元和电路。所述电路经配置以:确定处理单元在第一操作点处的第一作用时间;确定处理单元在第一操作点处的第一停滞时间;基于第一作用时间确定处理单元在第二操作点处的第二作用时间;基于第一停滞时间确定处理单元在第二操作点处的第二停滞时间;基于第二作用时间和第二停滞时间确定是否将处理单元的操作点从第一操作点调整到第二操作点;和基于调整处理单元的操作点的确定将处理单元的操作点从第一操作点调整到第二操作点。

在一个实例中,本公开描述一种用于操作点确定的装置,所述装置包括:用于确定处理单元在第一操作点处的第一作用时间的装置;用于确定处理单元在第一操作点处的第一停滞时间的装置;用于基于第一作用时间确定处理单元在第二操作点处的第二作用时间的装置;用于基于第一停滞时间确定处理单元在第二操作点处的第二停滞时间的装置;用于基于第二作用时间和第二停滞时间确定是否将处理单元的操作点从第一操作点调整到第二操作点的装置;和用于基于调整处理单元的操作点的确定将处理单元的操作点从第一操作点调整到第二操作点的装置。

在一个实例中,本公开描述一种计算机可读存储媒体,其存储有在被执行时使一或多个处理器进行以下操作的指令:确定处理单元在第一操作点处的第一作用时间;确定处理单元在第一操作点处的第一停滞时间;基于第一作用时间确定处理单元在第二操作点处的第二作用时间;基于第一停滞时间确定处理单元在第二操作点处的第二停滞时间;基于第二作用时间和第二停滞时间确定是否将处理单元的操作点从第一操作点调整到第二操作点;和基于调整处理单元的操作点的确定将处理单元的操作点从第一操作点调整到第二操作点。

附图以及以下描述中阐述一或多个实例的细节。其它特征、目标和优点将从所述描述、图式和权利要求书中变得显而易见。

附图说明

图1是说明根据本公开中所描述的一或多个实例技术的用于处理数据的实例装置的框图。

图2是更详细地说明图1中所说明的装置的组件的框图。

图3a和3b是说明根据本公开中所描述的实例的随操作频率而变的占用百分比的实例的概念图。

图4a和4b是说明根据本公开中所描述的实例的随总线带宽而变的占用百分比的实例的概念图。

图5是说明用于组合不同操作频率和总线带宽的操作点的实例的概念图。

图6是说明根据本公开中所描述的技术的操作频率和总线带宽确定的实例方法的流程图。

图7a和7b是说明确定操作点的实例算法的流程图。

具体实施方式

会影响处理器可处理数据的速度和处理器所消耗的功率的两个因素包含处理器的操作频率和总线带宽。总线带宽指示每单位时间可经由总线传输的数据量。总线将各种单元(例如处理器、系统存储器、显示器等)互连在一起。总线的另一术语是结构,且总线带宽的另一术语是结构带宽。

操作频率界定处理器每单位时间可处理的数据量。如更详细地描述,动态功率管理程序(dpm)可经配置以执行本公开中所描述的实例技术以确定处理器的频率和总线带宽。dpm可以是硬件或软件,且可以是操作频率受控制的装置的部分,但可以在操作频率受控制的装置外部。

本公开中所描述的技术通常适用于广泛多种处理器,例如中央处理单元(cpu)、图形处理单元(gpu)、用于调制解调器中的数字信号处理器(dsp)、音频或传感器子系统。仅仅为易于描述,关于gpu描述了实例。

在cpu的操作频率受控制的情况下,dpm可以是cpu的部分(例如动态时钟和电压缩放(dcvs)模块)。dcvs模块控制各个组件(例如包含时钟产生器的电路)的电压电平,从而又控制cpu的操作频率(例如控制由时钟产生器产生的时钟信号的频率)。在gpu的操作频率受控制的情况下,dpm可以是gpu的一部分(例如作为gpu中的命令处理单元上的控制程序执行的gpudcvs)。在一些实例中,gpu的操作频率可受控制,但dpm可以是cpu的部分(例如在cpu上运行的gpudcvs驱动程序)。在一些实例中,dpm可以是外部装置的部分(例如相对单独的小处理器上的硬件或软件)。在此类实例中,dpm可周期性地唤醒以确定是否控制操作频率受控制的装置的操作频率。在任何情况下,dpm都会缩放装置的操作频率且投票支持总线带宽。

如更详细地描述,本公开描述用以节省功率的实例技术。一般来说,操作频率或带宽越低,则功率消耗越低。因此这两个因素影响性能和功率两者。实例技术将系统设定为最低必要的操作频率和带宽;“最低必要的”意味着其可在性能不下降的情况下接近最大可能的功率节省。

举例来说,主机处理器(例如cpu)可经由dpm经配置以基于gpu的“占用时间”缩放gpu的总线带宽和操作频率,其中gpu占用时间等于gpu作用加停滞时间。gpu作用时间等于gpu在其自身的时钟域中执行某一算术、逻辑、控制流或本地高速缓冲存储器/存储器操作且并不在不同时钟域中等待操作(例如系统存储器存取操作)的时间量。时钟域是在单个时钟频率下操作的电路的块,所述单个时钟频率可不同于电路的其它块(例如在同一芯片上或在芯片外)的频率。举例来说,可存在多个时钟域,使得cpu和其高速缓冲存储器在一个时钟域中,gpu和其高速缓冲存储器在另一时钟域中,且系统存储器在又另一时钟域中。

gpu停滞时间指示gpu在等待来自另一时钟域的数据(例如硬件单元在不同时钟域中操作)时是停滞的时间量。作为一实例,gpu的本地高速缓冲存储器可与gpu的电路在同一时钟域中。gpu可试图首先从本地高速缓冲存储器检索数据,且如果不可用(例如高速缓冲存储器未命中),那么从系统存储器读取数据。然而,gpu可在等待来自系统存储器的数据时停滞,且此延迟是gpu停滞时间的一部分。

再次,关于cpu确定gpu的操作频率描述了实例(例如dpm是在cpu上执行的gpudcvs驱动程序)。然而,实例技术适用于其它状况,如上文所描述。并且,关于时间(例如作用时间和停滞时间)描述了实例,但百分比(例如作用时间百分比和停滞时间百分比)的分析可以是用以实施技术的另一方式。在本公开中,术语“作用时间”一般用于指代其中作用时间是时间的量度(例如时间量)且其中作用时间是时间的比率(例如百分比)的状况。类似地,术语“停滞时间”一般用于指代其中停滞时间是时间的量度(例如时间量)且其中停滞时间是时间的比率(例如百分比)的状况。

根据gpu占用时间,主机处理器可确定gpu占用百分比(例如gpu占用时间与一时间段的比率)。如果gpu占用百分比变得大于阈值,那么主机处理器可增加总线带宽、gpu操作频率或两者,使得gpu占用百分比变得低于阈值。相反地,如果gpu占用百分比低于阈值(相同阈值或不同阈值),那么主机处理器可确定是否会缩减总线带宽、gpu操作频率或两者。以此方式,主机处理器经由dpm可调整总线带宽、gpu操作频率或两者以使系统(例如主机处理器、gpu和互连总线)保持以最低必要的功率电平运行。

然而,仅依赖于gpu占用时间来确定是否调整总线带宽、gpu操作频率或两者可导致当调整为可能时不会对总线带宽、gpu操作频率或两者进行调整。举例来说,一些技术假设gpu占用时间与gpu操作频率成反比。对于此类状况,主机处理器可过度估计gpu操作频率应为多少,因为主机处理器无法单独考虑gpu停滞时间和/或gpu作用时间。

作为说明性实例,假设如果主机处理器确定gpu占用百分比在gpu操作频率缩减之后将超过90%,那么主机处理器将不会缩减操作频率。在此实例中,假设gpu正在200mhz下操作且被占用50%。由于假设gpu占用时间与gpu操作频率成反比,因此主机处理器可确定如果操作频率缩减到100mhz,那么gpu将100%被占用。因为100%被占用大于90%被占用,所以主机处理器将不会缩小gpu的操作频率。

然而,实际上,50%占用时间实际可以是30%gpu作用时间和20%gpu停滞时间。作为一阶近似,如果gpu的操作频率缩减到100mhz,那么gpu作用时间将翻倍成60%,且gpu停滞时间将保持在20%(在此实例中,gpu停滞时间是归因于高速缓冲存储器未命中并且因此gpu操作频率将不会对数据传递到系统存储器或从系统存储器传递的速度有任何直接影响)。在此实例中,总占用百分比是80%(例如60%+20%)。由于80%低于90%,因此主机处理器将使gpu的操作频率缩小到100mhz,且将无性能损失。相同分析可适用于总线带宽。

本公开中所描述的技术是基于确定给定总线带宽和gpu操作频率的gpu占用百分比将为多少。在本公开中,“操作点”(opp)指代gpu操作频率(gof)与总线带宽(bb)的特定组合。举例来说,opp00=(gof0,bb0)、opp01=(gof0,bb1)、opp10=(gof1,bb0)等等,其中gof0和gof1是不同gpu操作频率,且bb0和bb1是不同总线带宽。

在一些实例中,主机处理器经由dpm确定在第一opp处的gpu作用时间和停滞时间(例如运用建构到gpu中的硬件性能计数器,如下文所描述)且使用此信息确定在第二opp处的gpu作用时间和停滞时间。在一些实例中,硬件性能计数器可对gpu为作用中的时间量和gpu被占用的时间量进行计数,且从gpu占用时间减去gpu作用时间以确定gpu停滞时间。在一些实例中,可能使用处理器停滞循环计数器,而非确定gpu占用时间且减去gpu作用时间来确定gpu停滞时间。主机处理器根据在第二opp处的所确定的gpu作用时间和停滞时间确定在第二opp处的gpu占用时间。用以确定第二opp处的gpu占用时间的方程式可如下:

opp00=具有gof0和fb0的当前操作点

tg1=在opp00处的处理器作用时间(基于计数器)

tm1=在opp00处的处理器停滞时间(也是从计数器测量)。

opp11=具有gof1和fb1的操作点

tg2=在opp11处且等于tg1*(gof0/gof2)的处理器作用时间

tm2=在opp11处且等于tm1*(fb0/fb1)的处理器停滞时间

在opp11处的处理器占用时间=tg2+tm2。

在上文中,fb0对应于与操作点opp00相关联的总线带宽。然而,在一些实例中,而非使用fb0,主机处理器可使用有效总线带宽,其被定义为通过gpu总线接口传递的总数据量除以接口忙于转移数据的时间段。因为主机处理器投票表决总线带宽应为多少,所以有效总线带宽有可能不同于主机处理器所确定的总线带宽。

主机处理器可通过确定一时间段内通过处理器(例如cpu或gpu)总线接口的数据量来测量有效总线带宽。为了设定为opp00的当前操作点,主机处理器将gpu的频率设定为gof0,且投票来将总线带宽设定为fb0。举例来说,如果决定将总线带宽设定为不同水平,那么有效总线带宽最终可能不同于fb0。对于此类状况,主机处理器可使用有效总线带宽代替fb0值。

根据gpu占用时间,主机处理器可确定gpu占用百分比且确定gpu占用百分比是否低于阈值。如果gpu占用百分比低于阈值,那么gpu可减小gpu操作频率和/或总线带宽(例如从opp00移动到opp11)。

图1是说明可用以实施本公开的技术的实例计算装置2的框图。计算装置2可包括个人计算机、桌上型计算机、膝上型计算机、计算机工作站、视频游戏平台或控制台、无线通信装置(例如,移动电话、蜂窝式电话、卫星电话和/或移动电话手持机)、陆线电话、因特网电话、手持式装置(例如,便携式视频游戏装置或个人数字助理(pda))、个人音乐播放器、视频播放器、显示装置、电视、电视机顶盒、服务器、中间网络装置、主机计算机、或处理和/或显示图形数据的任何其它类型的装置。

如图1的实例中所说明,计算装置2包含用户输入接口4、cpu6、存储器控制器8、系统存储器10、图形处理单元(gpu)12、本地存储器14、显示接口16、显示器18和总线20。用户输入接口4、cpu6、存储器控制器8、gpu12和显示接口16可使用总线20彼此通信。总线20可以是多种总线结构中的任一种,例如第三代总线(例如,超传输总线或无限带宽总线)、第二代总线(例如,高级图形端口总线、外围组件互连(pci)高速总线,或高级exentisible接口(axi)总线)或另一类型的总线或装置互连件。应注意,图1中所展示的不同组件之间的总线和通信接口的特定配置仅仅为示范性的,且计算装置和/或具有相同或不同组件的其它图形处理系统的其它配置可用于实施本公开的技术。

cpu6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以使得cpu6执行一或多个软件应用程序。在cpu6上执行的软件应用程序可包含(例如)操作系统、文字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。用户可经由一或多个输入装置(未示出)(例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置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。尽管存储器控制器8在图1的实例计算装置2中被说明为与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为非可移动的或其内容为静态的。作为一个实例,系统存储器10可从装置2移除,并移动到另一装置。作为另一实例,大体类似于系统存储器10,存储器可插入到装置2中。在某些实例中,非暂时性存储媒体可(例如在ram中)存储可随着时间推移改变的数据。

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

在一些情况下,gpu12可内置有比cpu6提供对向量运算更有效的处理的高度并行的结构。举例来说,gpu12可包含多个处理元件,包含硬件电路,例如算术逻辑单元(alu)、初等函数单元(efu)和经配置以按平行方式对多个顶点或像素进行运算的其它此类电路。在一些情况下,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通过消除gpu12经由总线20读取和写入数据的需要而以更高效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,gpu12可不包含单独的高速缓冲存储器,而是经由总线20利用系统存储器10。本地存储器14可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、快闪存储器、磁性数据媒体或光学存储媒体。

cpu6和/或gpu12可将经显现的图像数据存储在系统存储器10内所分配的帧缓冲器中。显示接口16可从帧缓冲器检索数据,并配置显示器18以显示由经显现的图像数据表示的图像。在一些实例中,显示接口16可包含经配置以将从帧缓冲器检索的数字值转换为可由显示器18消耗的模拟信号的数-模转换器(dac)。在其它实例中,显示接口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接收命令和数据,且执行命令。在一些实例中,而非将待由gpu12执行的命令和用于命令的数据操作数存储在系统存储器10中,cpu6可将命令和数据操作数存储在本地存储器(例如数据或指令高速缓冲存储器)中,所述本地存储器在包含gpu12和cpu6的ic本地且由cpu6和gpu12共享。一般来说,本公开中所描述的技术适用于cpu6可使得命令在gpu12执行所借以的各种方式,且所述技术不限于以上实例。

gpu12执行命令的速率由时钟信号的频率(也被称作gpu12的时钟速率或操作频率)设定。举例来说,gpu12可在时钟信号的每个上升沿或下降沿执行命令,或在时钟信号的每个上升沿执行一个命令且在每个下降沿执行另一命令。因此,时钟信号的上升或下降沿在一时间段内发生的频繁程度(例如,时钟信号的频率)设定了gpu12在所述时间段内执行多少命令。

在一些状况下,当gpu12执行命令时,gpu12可能需要经由总线20从系统存储器10读取数据或将数据写入到系统存储器10。举例来说,如果存在高速缓冲存储器未命中(例如数据或指令在gpu12的数据高速缓冲存储器或指令高速缓冲存储器中不可用),那么gpu12可经由总线20从系统存储器10读取数据。gpu12的指令高速缓冲存储器和数据高速缓冲存储器可不同于本地存储器14。举例来说,gpu12可使用本地存储器14以暂时存储中间数据且数据高速缓冲存储器和指令高速缓冲存储器可分别存储操作数和指令。在一些状况下,本地存储器14有可能包含指令和数据高速缓冲存储器。

gpu12等待直到数据可从系统存储器10获得或数据经写入到系统存储器10为止所用的时间(也被称作gpu停滞时间)随总线20的总线带宽而变。总线带宽可随系统存储器10的操作频率而变(例如对于系统存储器10的快速操作频率,更多数据可放置在总线20上,且对于系统存储器10的缓慢操作频率,较少数据可放置在总线20上)。因此,gpu12可在所述时间段内执行的命令数量也随总线带宽而变。

在一些实例中,例如其中cpu6存储待由存储器(例如系统存储器10或指令高速缓冲存储器)中的gpu12执行的命令的实例,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可能需要经由总线20从系统存储器10检索数据或将数据输出到系统存储器10。举例来说,gpu12的gpu管线可试图从gpu高速缓冲存储器检索数据。在高速缓冲存储器未命中的情况下,gpu12从系统存储器10检索数据。当gpu12等待数据从系统存储器10到达时,gpu12可停滞。gpu12可从系统存储器10检索数据或将数据输出到系统存储器10的速率随总线20的总线带宽而变。

因此,存在至少两个共同地控制gpu12将完成执行命令的速度的因素。第一因素是gpu12的操作频率(例如数据可移动通过图形管线的电路的速度)。第二因素是总线20的总线带宽。如更详细地描述,cpu6可确定gpu12的操作频率和总线20的总线带宽,其共同地提供最小功耗而不影响gpu12及时完成执行的能力。

举例来说,gpu12可经配置以在不同操作频率(例如200mhz、300mhz、420mhz和600mhz)下操作且cpu6可经配置以将总线20的总线带宽设定为不同频率(例如2.2gb/s、4.0gb/s、7.0gb/s和12.7gb/s)。每对操作频率和总线带宽形成“操作点”(opp)。举例来说,opp00指代其中总线带宽是12.7gb/s且操作频率是600mhz的操作点。opp10指代其中总线带宽是12.7gb/s且操作频率是420mhz的操作点。opp01指代其中总线带宽是7.0gb/s且操作频率是600mhz的操作点。以此方式,对于每对总线带宽和操作频率,存在对应的操作点。

在本公开中所描述的技术中,gpu12可在第一操作点处操作,且cpu6(例如经由动态功率管理程序(dpm))可确定gpu12的操作点是否可从第一操作点调整到第二操作点而不影响性能。在其中cpu6从第一操作点调整到第二操作点而不影响性能的状况下,cpu6可试图缩减gpu12的操作频率和总线20的总线带宽中的至少一个或甚至两个。在一些状况下,cpu6可能够直接控制gpu12的操作频率,但可能需要投票来控制总线20的总线带宽。

带宽投票可不同于实际总线带宽,且实际总线带宽可在运行时间动态地改变。这是因为总线20是共享资源,且许多处理单元可同时对总线带宽进行投票。对带宽进行投票意味着处理单元中的每一个输出指示总线带宽应为多少(如由相应处理单元确定)的信息。然而,实际总线带宽最终是多少可不同于由每一处理单元提供的投票。在cpu6或另一处理单元上执行的总线驱动程序可集合宽带投票或请求,且基于所集合的结果缩放时钟(例如设定实际总线带宽)。作为一个实例,总线驱动程序可选择最多投票作为实际总线带宽,但用以确定实际总线带宽的其它方式是可能的。在一些但非全部状况下,集合的带宽通常等于或大于投票中的任一个。

在本公开中所描述的实例技术中,cpu6可利用有效总线带宽以确定从第一操作点调整到第二操作点。举例来说,每一操作点与操作频率和总线带宽相关联。当cpu6设定gpu12以在特定操作点处操作时,gpu12可在经设定频率下操作,但总线带宽可从与操作点相关联的总线带宽偏离(例如归因于投票)。因此,cpu6可使用有效总线带宽以用于计算是否从一个操作点调整到另一操作点,且未必使用与当前操作点相关联的总线带宽。

有效带宽是通过gpu总线接口传递的总数据量除以接口忙于传递数据的时间段。对总线带宽进行投票的cpu6、gpu12和其它处理单元可包含总线接口组件,其将处理单元连接到总线20。相应总线接口中的硬件数据计数器对经传递数据进行计数且将指示经传递数据数量的信息输出到cpu6以使cpu6确定有效总线带宽。可存在用以确定有效总线带宽的其它方式,且实例技术不限于用以确定有效总线带宽的任何特定方式。

尽管cpu6可对总线带宽进行投票,但cpu6仍有助于总线带宽应为多少的决策制定过程。cpu6使用本公开中所描述的实例技术以用于确定总线带宽应为多少。由cpu6确定的总线带宽有可能最终并非实际总线带宽,但cpu6仍有助于动态设定总线带宽。

使用本公开的技术对操作频率和总线带宽的此类动态控制允许通过装置2有效控制功率消耗。举例来说,如果操作频率和总线带宽永久性地保持在相对高频率,那么在大多数情况下gpu12将能够及时执行所提交的命令。然而,以相对高频率执行命令会使gpu12的功率消耗增加且装置2的功率消耗也会从支持总线20的高带宽增加。如果gpu12的操作频率和总线20的总线带宽永久性地保持在相对低频率,那么gpu12的功率消耗和装置2的总功率可能缩减,但gpu12在大多数情况下可能不能够及时执行所提交的命令,从而导致掉帧行为且有可能导致其它非所需效应。

本公开中所描述的技术描述基于特定时间段内的gpu12的作用时间和停滞时间增加或减小gpu12的操作频率和总线20的总线带宽(例如对增加或减小总线20的总线带宽进行投票)的实例方式。在本公开中所使用的作用时间意味着gpu12执行一些算术、逻辑或控制流操作(例如执行指令)且不等待不同时钟域中的操作完成的时间。如上文所提及,时钟域是在相同频率下操作的电路的块。同一芯片上可存在多个不同时钟域(例如cpu6和gpu12可在同一芯片上,但具有不同时钟域)和/或同一装置中可存在不同时钟域(例如gpu12和系统存储器10可在不同时钟域中)。

在本公开中,每当处理电路(例如cpu6或gpu12的处理电路)响应于时钟信号而执行操作时,处理电路被视为在作用中。每当处理电路等待操作在另一时钟域中完成以继续时,处理电路被视为停滞。

gpu停滞时间是gpu12的图形处理管线在等待操作在另一时钟域中完成时停滞的时间。停滞时间的一个实例原因是高速缓冲存储器未命中。gpu12可首先试图从相应高速缓冲存储器检索数据或指令,且如果数据或指令并不存储于高速缓冲存储器中,那么当gpu12等待来自系统存储器10的数据或指令时,gpu12可停滞。gpu停滞时间的另一实例是某些io操作。对于io操作,在gpu12的时钟域中执行一些子操作,所述子操作应被计数到作用时间中,且其它时钟域中也将存在子操作,处理器需要忙于等待所述子操作且所述子操作应被计数到处理器停滞时间中。

不应混淆gpu12的停滞时间和gpu12的空闲时间。举例来说,gpu12的空闲时间是指gpu12完成执行一命令集之后且在等待执行新的命令集。gpu12的停滞时间是指gpu12在执行命令集时停滞。

在本公开中所描述的技术中,cpu6可分别评估gpu12的作用时间和gpu12的停滞时间以确定gpu12应进行操作所在的操作点。举例来说,gpu12包含各种电路块,如算术逻辑单元(alu)、初等函数单元(efu)等。每当这些单元中的任一个执行函数时,gpu12被视为在作用中。举例来说,如果gpu12的电路块中的一个在具有操作频率的时钟信号的上升或下降沿执行操作,那么gpu12被视为在作用中。由gpu12的电路块执行的操作可归因于执行指令,其中电路块是可编程块,或其中电路块是硬接线固定功能电路块。

在此实例中,每当这些电路块中的任一个执行函数时,gpu12可使作用循环计数器递增。举例来说,gpu12可包含遮蔽的“或”门,其中如果电路块执行函数,那么到或门的输入是逻辑输入。因此,如果或门的输出是逻辑输出,那么gpu12使作用循环计数器递增,且如果或门的输出是逻辑零,那么gpu12不使作用循环计数器递增。

gpu12的作用时间是作用循环计数器值除以操作频率。举例来说,作用循环计数器值指示在执行命令期间经历的时钟循环的数目且gpu12的操作频率指示执行命令的速率。时钟循环的数目除以时钟速率(例如操作频率)等于gpu12在作用中的时间量。因此,gpu12的作用时间与gpu12的操作频率成反比。

对于停滞时间,gpu12应执行功能但归因于等待另一时钟域中的操作(例如响应于高速缓冲存储器未命中)的延迟而停滞的每一时钟循环,gpu12可被视为停滞。在一些状况下,归因于gpu12的平行结构,具有停滞循环计数器可能是复杂的。然而,由于占用时间等于作用时间加停滞时间,因此gpu12可包含占用循环计数器。每当gpu12执行操作时,gpu12可使占用循环计数器递增。还可存在用以确定占用时间的其它方式。停滞时间等于占用时间减去作用时间。在其中停滞循环计数器是可能的实例中,gpu12可包含此计数器且每当存在处理器停滞时使停滞循环计数器递增。

处理器停滞时间是基于总线20的总线带宽。举例来说,如果总线带宽相对高,那么指令或数据将以比在总线带宽相对低的情况下少的时间到达gpu12。因此,处理器停滞时间与总线20的总线带宽成反比。

如上文所提及,gpu12的占用时间等于作用时间加停滞时间。gpu12的占用时间除以一时间段指示gpu12的占用百分比,所述时间段可预设定(例如16ms)或(例如基于当gpu12变得空闲时)在运行中确定。在本公开中所描述的技术中,cpu6可确定用于不同操作点的占用百分比,且基于所确定的占用百分比确定是否将gpu12正在进行操作所在的操作点调整到另一操作点。

举例来说,假设cpu6确定gpu12在第一操作点处的占用百分比是50%且确定gpu12在具有较低操作频率和/或较低总线带宽中的至少一个的第二操作点处的占用百分比将是80%,那么cpu6可将操作点从第一操作点调整到第二操作点。然而,如果cpu6确定将gpu12的操作点调整到第二操作点导致占用百分比是95%,那么cpu6可能不会将gpu12的操作点调整到第二操作点。在一些实例中,cpu6可测试其它操作点以识别cpu6是否应将操作点调整到这些其它操作点中的一个。在此实例中,90%可以是阈值,其中如果占用百分比将大于90%,那么cpu6不调整操作点,且如果占用百分比将低于90%,那么cpu6调整操作点。

在本公开中所描述的技术中,当gpu12在当前操作点处进行操作时,cpu6可确定作用时间和停滞时间两者。cpu6可确定gpu12在不同操作点处的作用时间且确定在此不同操作点处的停滞时间。具体地说,cpu6可分别确定gpu12在此不同操作点处的作用时间和停滞时间。举例来说,而非基于gpu12在当前操作点处的总占用时间确定gpu12在此不同操作点处的总占用时间,gpu12可确定一起形成gpu12的总占用时间的构成值(例如作用时间和停滞时间)中的每一个。

分别确定作用时间和停滞时间中的每一个以用于操作点调整可为有益的,因为操作频率和总线带宽对gpu12的占用时间的不同部分做出贡献。举例来说,假设第一操作点与第二操作点之间的差仅是操作频率而非总线带宽的改变。在此状况下,作用时间在第一操作点与第二操作点之间可不同,但停滞时间可相同,因为停滞时间随总线带宽而变。cpu6可确定gpu12在第二操作点处的占用时间是在第二操作点处的作用时间与在第二操作点处的停滞时间(其可与在第一操作点处的停滞时间相同)的求和。

在实例中,相较于基于gpu12在第一操作点处的占用时间确定gpu12在第二操作点处的占用时间,cpu6可确定gpu12在第二操作点处的占用时间的更准确的值。举例来说,作为用以确定gpu12在第二操作点处的占用时间的另一方式,cpu6可假设gpu12在第二操作点处的占用时间与第二操作点的操作频率成反比。作为一实例,cpu6可确定在第一操作点处的占用时间是50%,其中操作频率是200mhz。在此实例中,cpu6可确定在第二操作点处的操作频率是100mhz且总线带宽与用于第一操作点的总线带宽相同。因为cpu6假设gpu12的占用时间与操作频率成反比,所以cpu6可确定将操作频率缩减一半(例如100mhz/200mhz)导致占用百分比翻倍成100%占用百分比(例如,50%*2)。

然而,确定占用百分比在第二操作点处将是100%可能是占用百分比的过高估计。在前述实例中,仅作用时间与操作频率成反比,且总线停滞时间不与操作频率成反比。因此,cpu6可分别确定在第二操作点处的作用时间和停滞时间,接着确定在第二操作点处的占用时间,且接着确定在第二操作点处的占用百分比而非基于在第一操作点处的占用百分比(或占用时间)直接确定在第二操作点处的占用百分比(或占用时间)。

作为说明,返回参考其中gpu12的占用时间等于50%的先前实例。在此实例中,假设在第一操作点处的作用时间使gpu12被占用30%且在第一操作点处的停滞时间使gpu12被占用20%(30%+20%=50%)。在此状况下,因为在第二操作点处的操作频率是在第一操作点处的操作频率的50%,所以作用时间将为占用时间贡献两倍(例如60%,其中30%*2等于60%)。停滞时间可能不会改变,且因此可对占用时间做出相同贡献(例如20%)。对于此实例,gpu12可确定在第二操作点处的占用时间是80%(60%+20%=80%)。相比于100%的占用百分比确定,80%的占用时间可以是gpu12的占用百分比的更准确确定,其中不单独评估作用时间和停滞时间。

在仅依赖于总占用时间而非构成的主动和处理器延迟时间来确定操作点的这些其它实例中,为了帮助将总线带宽缩放到最低必要的水平,有可能基于总线计数器/指示器针对每一操作频率的读数来分析不同类型的使用状况以产生一组总线放大和缩小阈值。举例来说,如果操作频率是300mhz,那么cpu6可在表中搜索300mhz的可用总线带宽和相关联阈值,如果总线计数器指示业务超过放大阈值,那么cpu6可投票支持较高带宽,如果其低于缩小阈值,那么其可投票支持较低带宽,否则,其不会进行新的带宽投票。

然而,此类分析是大量的,且此外,甚至可能不会适当地适用于所有使用状况。举例来说,具有相对较高带宽和较低操作频率的操作点对于总线20或数据密集使用状况更有效。相比之下,具有相对较低带宽和较高处理器频率的操作点对于处理器或计算密集使用状况更有效,且非常难以找到有效地适用于两种状况的一组阈值。

以此方式,在分别使用处理器作用时间和停滞时间中的每一个以用于确定操作点的情况下,相较于仅使用占用时间,本公开的技术提供用以确定将进行操作所在的操作点的更准确方式。尽管关于cpu6确定用于gpu12的操作点描述了以上实例,但本公开中所描述的技术不限于此。cpu6可使用本公开中所描述的技术确定自身的操作点,或gpu12可使用本公开中所描述的技术确定自身的操作点。作为其它实例,cpu6和/或gpu12可确定用于某一其它dsp的操作点。

一般来说,cpu6、gpu12、某一其它dsp或某一小电路块上的电路可经配置以确定操作点确定。电路(例如在cpu6上)可确定处理单元(例如gpu12)在第一操作点处的第一作用时间且确定处理单元在第一操作点处的第一停滞时间。电路可基于在第二操作点处的第一作用时间确定处理单元的第二作用时间且基于在第二操作点处的第一停滞时间确定处理单元的第二停滞时间。电路接着可基于第二作用时间和第二停滞时间确定是否将处理单元的操作点从第一操作点调整到第二操作点,且基于调整处理单元的操作点的确定将处理单元的操作点从第一操作点调整到第二操作点。

执行操作点确定的电路和处理单元包含晶体管和无源组件,如电容器、电阻器、电感器等等。这些硬件组件一起形成电路块,所述电路块包含可编程块或固定功能块。操作频率控制通过电路块处理指令/命令的速率,例如通过控制晶体管何时开启和关闭处理单元。

并且,执行操作点确定的电路可以是处理单元上的电路,所述处理单元不同于操作点经过确定的处理单元(例如电路是在cpu6上,且操作点确定是针对gpu12)。在一些实例中,执行操作点确定的电路可以是操作点经过确定的相同处理单元上的电路(例如电路是在gpu12上,且操作点确定是针对gpu12)。

电路可执行操作点确定的一个实例方式是通过执行软件/固件模块的指令,从而引起电路执行实例技术。在此类实例中,电路包含处理单元的可编程块(例如包含可编程电路的cpu6的处理核心,指令在所述可编程电路上执行),软件/固件在所述可编程块上执行。电路可执行操作点确定的另一实例方式是通过包含硬接线电路(例如固定功能电路)。在一些实例中,电路可包含可编程块与固定功能块的组合。

图2是更详细地说明图1中所说明的装置的组件的框图。如图2中所说明,gpu12包含控制器30、时钟产生器34、作用循环计数器寄存器35、着色器核心36、占用循环计数器寄存器37和固定功能管线38。着色器核心36和固定功能管线38可一起形成执行管线的电路,所述执行管线用于执行图形或非图形相关功能。尽管仅说明一个着色器核心36,但在一些实例中,gpu12可包含类似于着色器核心36的一或多个着色器核心。

gpu12将执行的命令是由着色器核心36和固定功能管线38执行,如由gpu12的控制器30确定。控制器30可实施为gpu12上的硬件或在gpu12的硬件上执行的软件或固件。举例来说,控制器30可在gpu12的可编程电路上执行或可以是较大gpu12内的专用电路块。

控制器30可接收命令,所述命令待执行以用于经由总线20从系统存储器10的命令缓冲器40或经由总线20直接从cpu6显现帧(例如准备好显示的一个完整图像)(例如接收cpu6确定现在应由gpu12执行的所提交的命令)。控制器30还可经由总线20从系统存储器10的数据缓冲器42或经由总线20直接从cpu6检索用于命令的操作数数据。举例来说,命令缓冲器40可存储用以将a和b相加的命令。控制器30从命令缓冲器40检索此命令且从数据缓冲器42检索a和b的值。控制器30可确定着色器核心36将执行哪些命令(例如软件指令是在着色器核心36上执行)且确定固定功能管线38将执行哪些命令(例如用于固定功能管线38的单元的命令)。

在一些实例中,来自命令缓冲器40和数据缓冲器42中的一个或两个的命令和/或数据可以是gpu12的本地存储器14的部分。举例来说,gpu12可包含分别存储来自命令缓冲器40的命令和来自数据缓冲器42的数据的指令高速缓冲存储器和数据高速缓冲存储器。在这些实例中,控制器30可在来自高速缓冲存储器的命令和/或数据可用的情况下从高速缓冲存储器检索所述命令和/或所述数据,且在存在高速缓冲存储器未命中的情况下,从系统存储器10检索命令和/或数据。

着色器核心36和固定功能管线38可以从彼此发射和接收数据。举例来说,着色器核心36执行的一些命令可产生中间数据,所述中间数据是用于固定功能管线38的单元将执行的命令的操作数。类似地,固定功能管线38的单元执行的一些命令可产生中间数据,所述中间数据是用于着色器核心36将执行的命令的操作数。以此方式,所接收数据以管线式方式通过固定功能管线38的单元和着色器核心36逐渐地处理。因此,着色器核心36和固定功能管线38可被称为实施执行管线。

一般来说,着色器核心36允许执行各种类型的命令,意味着着色器核心36是可编程的且为用户提供功能灵活性,因为用户可对着色器核心36进行编程以用最可设想到的方式执行所需任务。然而,固定功能管线38的固定功能单元针对固定功能单元执行任务的方式是硬接线的。因此,固定功能单元可不提供许多功能灵活性。

着色器核心36和固定功能管线38可形成有一或多个电路块。举例来说,着色器核心36和固定功能管线38包含一或多个alu和efu,以及其它电路块,例如纹理管l1高速缓冲存储器(tpl1)和gpu2级通用高速缓冲存储器(uche)。alu可以是对整数二进制数执行算术和按位逻辑运算的数字电子电路,且efu执行较复杂的函数,如正弦、余弦、平方根(sqrt)等。如果这些电路块(例如着色器核心36和/或固定功能管线38中的任一个)在时钟循环期间执行函数,那么gpu12被视为在所述时钟循环内是在作用中。

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

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

在一些实例中,着色器核心36和固定功能管线38的每一单元可在由时钟产生器34输出的时钟信号的上升沿或下降沿执行一个命令。在一些状况下,命令可划分成子命令,且着色器核心36和固定功能管线38的每一单元可响应于时钟信号的上升或下降沿而执行子命令。举例来说,a+b的命令包含用以检索a的值和b的值的子命令,且着色器核心36或固定功能管线38可在时钟信号的上升沿或下降沿执行这些子命令中的每一个。

着色器核心36和固定功能管线38的单元执行命令的速率可影响gpu12的功率消耗。举例来说,如果由时钟产生器34输出的时钟信号的频率相对高,那么着色器核心36和固定功能管线38的单元可在一时段内执行比着色器核心36和固定功能管线38的单元将在时钟信号的相对低频率下执行的命令的数目更多的命令。然而,相比于其中着色器核心36和固定功能管线38的单元在所述时间段中执行较少命令(归因于来自时钟产生器34的时钟信号的较低频率)的情况,gpu12的功率消耗在其中着色器核心36和固定功能管线38的单元在所述时间段中执行较多命令(归因于来自时钟产生器34的时钟信号的较高频率)的情况下可能更大。

在一些实例中,电压施加到gpu12且时钟产生器34控制gpu12的最高频率。对于较低频率,gpu12可以比当gpu12在较高频率下工作时的电压低的电压工作。由于功率与频率和电压平方成比例,因此通过控制施加到gpu12的频率和电压,cpu6可控制由gpu12消耗的功率量。

时钟产生器34输出的时钟信号的频率设定gpu12的操作频率,且可以是gpu12进行操作所在的操作点的一个部分。操作点的另一部分是总线20的总线带宽。

总线20的总线带宽可由系统存储器10的时钟产生器39输出的时钟信号的频率设定。时钟产生器39可大体上类似于时钟产生器34,但向系统存储器10提供时钟信号。举例来说,时钟产生器39控制来自命令缓冲器40的命令和/或来自数据缓冲器42的数据在总线20上传输的速率。因为装置2的组件中的每一个可使用系统存储器10与彼此通信,所以时钟产生器39基本上设定总线20的总线带宽。总线宽度(例如数据可传输的行数)影响可在总线20上发送的数据或命令量。

类似于gpu12和时钟产生器34,cpu6可控制施加到存储器控制器8、系统存储器10、总线20和时钟产生器39的电压以控制这些组件的最大频率,其又与控制总线带宽相同。还类似于上文,对于总线20的较低总线带宽,这些组件可以比当总线20在较高带宽下工作时的电压低的电压工作。由于功率与频率和电压平方成比例,因此通过控制施加到存储器控制器8、系统存储器10、总线20和时钟产生器39的总线带宽和电压,cpu6可控制由这些组件消耗的功率量。通过控制时钟产生器34的设定gpu12的操作频率的输出和时钟产生器39的设定总线20的总线带宽的输出,cpu6可设定gpu12进行操作所在的操作点。

在所说明的实例中,gpu12和系统存储器10在不同时钟域中,因为gpu12和系统存储器10使用不同时钟信号(例如分别来自时钟产生器34和39)操作。因此,gpu12在等待来自系统存储器10的数据的情况下可能会延迟处理。

如上文所描述,归因于gpu12的大规模并行的处理能力,cpu6可将任务卸载到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在由时钟产生器34产生的时钟信号的每上升沿执行一个命令且时钟信号的频率是1mhz,那么gpu12可在一秒内执行一百万个命令(作为理论上限)。并且,如果系统存储器10在由时钟产生器39产生的时钟信号的每上升沿输出一个位的数据且此时钟信号的频率是200mhz且总线宽度是128位(16个字节)(例如,系统存储器10可在时钟信号的每上升沿传递16个字节的数据),那么总线20的总线带宽可以是3.2gb/s(200mhz*16)。

如图2中所说明,在cpu6上运行的软件栈包含是逻辑构造的用户空间23和内核空间27以帮助理解。用户空间23的一部分是应用程序24和用户模式图形驱动程序26。用户模式图形驱动程序26为gpu12准备命令缓冲器且用将由gpu12执行的指令填充缓冲器。内核空间27的一部分是内核模式图形驱动程序28和动态功率管理程序(dpm)32。内核模式图形驱动程序28调度命令缓冲器且将命令缓冲器提交到gpu12。dpm32可经配置以执行实例操作以确定操作频率和总线带宽。

如所说明,cpu6包含电路25。电路25包含可编程和固定功能电路块。举例来说,电路25可包含形成有晶体管、alu、efu、逻辑门等等的可编程电路块,应用程序24、用户模式图形驱动程序26、内核模式图形驱动程序28和dpm32在所述可编程电路块上执行。在一些实例中,电路25可以是用于仅执行dpm32的可编程电路。在一些实例中,例如其中dpm32是固定功能电路块的实例,电路25包含dpm32的此实例,且可存在用以执行应用程序24、用户模式图形驱动程序26和内核模式图形驱动程序28的单独的可编程电路块。

cpu6执行应用程序24,如由虚线框所说明。在执行期间,应用程序24和用户模式图形驱动程序26产生将由gpu12执行的命令,包含指示gpu12检索且执行着色器程序(例如顶点着色器、片段着色器、用于非图形应用程序的计算着色器等等)的命令。另外,应用程序24和用户模式图形驱动程序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可以是将信息输出到gpu12的cpu6的单元。

作为额外实例,应用程序24产生图形数据和图形命令,且cpu6可将处理此图形数据卸载到gpu12。在此实例中,cpu6可将图形数据存储在数据缓冲器42中且将图形命令存储在命令缓冲器40中,且内核模式图形驱动程序28可指示gpu12何时分别从数据缓冲器42和命令缓冲器40检索图形数据和图形命令、在何处分别从数据缓冲器42和命令缓冲器40检索图形数据和图形命令,以及何时通过执行命令集的一或多个命令来处理图形数据。

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

内核模式图形驱动程序28可根据应用程序处理接口(api)加以配置;但内核模式图形驱动程序28无需限于根据特定api加以配置。在装置2是移动装置的实例中,可根据openglesapi来配置内核模式图形驱动程序28。openglesapi被特定地设计成用于移动装置。在装置2是非移动装置的实例中,可根据openglapi来配置内核模式图形驱动程序28。

gpu12需要在一时间段内执行的命令的数目可基于显现用户接口或游戏应用程序的一个帧所需的命令。对于用户接口实例,gpu12可能需要执行在vsync窗口内显现用户接口的一个帧所需的命令(例如16ms,假设每秒60帧)以提供无掉帧用户体验。如果存在需要显示的相对大量内容,那么与存在需要显示的相对小量内容的情况相比,命令的量可能更大。

为了确保gpu12能够在设定时间段内执行所提交的命令且装置2不过度地消耗功率量,cpu6的dpm32可控制gpu12的操作频率(例如由时钟产生器34产生的时钟信号的频率)和总线20的总线带宽(例如由时钟产生器39产生的时钟信号的频率)。dpm32,也被称作动态时钟和电压缩放(dcvs)模块,经说明为在cpu6上执行的软件。然而,dpm32可以是cpu6上的硬件或硬件与软件或固件的组合。

dpm32可专用于通用cpu6以执行本公开中所描述的实例操作。在dpm32是软件的实例中,cpu6的操作系统可从系统存储器10检索用于dpm32的指令,且在cpu6上执行的编译程序可将指令编译成目标代码以供执行或系统存储器10可存储dpm32的目标代码。cpu6的电路25接着可执行dpm32以使cpu6执行实例技术。在一些其它实例中,dpm32可以是cpu6上的电路25内的电路块,所述电路块经过硬接线以使cpu6执行本公开中所描述的实例技术。在一些实例中,dpm32可以是软件与固定硬件的组合。在本公开中,当cpu6被描述为实施实例技术时,cpu6经由电路25(例如经由在电路25上执行的dpm32或电路25包含dpm32的固定功能电路块)实施此类技术。

gpu12可在界定gpu12的操作频率(例如时钟产生器34的频率)和总线20的总线带宽(例如时钟产生器39的频率)的当前操作点处进行操作。然而,可存在更佳的gpu12应进行操作所在的操作点。举例来说,操作频率、总线带宽或两者可高于必要值。作为另一实例,操作频率、总线带宽或两者可能过低,从而导致不佳性能。dpm32可确定是否将gpu12的操作点从当前操作点调整到另一操作点。

在一个实例中,当本公开将cpu6描述执行操作以确定处理器作用时间、停滞时间等等时,cpu6可经由电路25的dpm32执行此类操作。dpm32确定gpu12在当前操作点处的作用时间和停滞时间,且确定gpu12在不同操作点处的作用时间和停滞时间(例如在gpu12将在此不同操作点处进行操作的情况下确定gpu12的作用时间和停滞时间)。具体地说,dpm32分别确定在不同操作点处的作用时间和在不同操作点处的停滞时间,而非直接确定在不同操作点处的占用时间。

此外,尽管电路25经说明为在cpu6内,但本公开中所描述的实例技术不限于此。在一些实例中,电路25可以是gpu12的部分,且dpm32可在gpu12内的电路25上执行或由gpu12内的固定功能电路块执行。在此类实例中,操作点经过确定的处理单元(例如gpu12)包含用于确定操作点的电路。在一些实例中,电路25可以是其自身的在cpu6和gpu12外部的独立处理单元,其目的是为了确定装置2中的各种其它处理单元的操作点。

仅仅为易于描述,实例技术被描述为cpu6的电路25经由dpm32确定gpu12的操作点。然而,这些技术可扩展到电路25确定用于数字信号处理器(dsp)的操作点的实例。并且,这些技术可扩展到gpu12包含电路25的实例以及电路25是其自身的在包含cpu6和gpu12的soc内的独立处理单元的实例。

为了确定gpu12的作用时间,dpm32可从作用循环计数器寄存器35读取作用循环计数器值。在一些实例中,在gpu12的至少一个电路块在由时钟产生器34产生的时钟信号的上升或下降沿执行函数的任何时间,控制器30都会使作用循环计数器寄存器35中的作用循环计数器值递增。举例来说,电路块中的每一个可将作用信号输出到控制器30,从而指示电路块中的每一个是否在时钟循环期间执行操作。控制器30可对所接收的作用信号应用或函数,且如果或函数的输出是逻辑一,那么控制器30使存储于作用循环计数器寄存器35中的作用循环计数器值递增,且如果或函数的输出是逻辑零,那么控制器30不会使作用循环计数器值递增。

在一时间段之后,dpm32读取作用循环计数器寄存器35且将所读取的作用循环计数器值除以时钟产生器34的频率以确定在所述时间段期间gpu12有多长时间是在作用中(例如gpu12的作用时间)。时间段可以是预设定时间段或可变(例如每当gpu12变得空闲时,dpm32都会读取作用循环计数器寄存器35)。可存在用以确定作用时间的其它方式,且上文是一个实例。

为了确定gpu12的停滞时间,dpm32可在一时间段之后从占用循环计数器寄存器37读取占用循环计数器值。举例来说,dpm32在相同时间段之后读取(例如大约此时读取)占用循环计数器寄存器37和作用循环计数器寄存器35。dpm32接着从占用时间值减去作用时间值以确定停滞时间。

在一些实例中,如果控制器30确定已经过了时钟产生器34的时钟循环且gpu12的电路块在等待来自总线20的数据和/或指令时停滞,那么控制器30可使存储于占用循环计数器寄存器37中的占用循环计数器值递增。cpu6(例如电路25的dpm32)可通过从占用循环减去gpu作用循环来计算gpu12停滞循环。cpu6(例如电路25的dpm32)还可在来自停滞计数器寄存器的gpu停滞循环计数器值可用的情况下直接从停滞计数器寄存器读取gpu停滞循环计数器值。cpu6将停滞循环除以时钟产生器34的频率以确定在所述时间段期间gpu12有多长时间是停滞的(例如gpu12的停滞时间)。

再次,应理解,gpu12的停滞时间和空闲时间是不同概念,且不应混淆。举例来说,控制器30可在gpu12首次尝试从高速缓冲存储器检索数据或指令时使占用循环计数器寄存器37递增,且接着如果存在高速缓冲存储器未命中,那么会试图从系统存储器10检索数据或指令。在空闲时间期间,不存在要检索的指令或数据。在空闲时间期间,控制器30可能不会使占用循环计数器寄存器37递增。

如上文所描述,如果gpu12内的一或多个块在时钟循环内(上升沿到上升沿或下降沿到下降沿)是在作用中,那么gpu12被视为在作用中。作用时间不随总线带宽而变,但随操作频率而变。举例来说,对于给定工作负荷(例如处理一个帧)的特定操作频率,作用时间随gpu12的时钟域中的操作的数目而变,其中作用时间与操作频率成反比。

gpu12的停滞时间是gpu12的块在等待总线数据时停滞的时间量,且对于特定的总线速度,随存储器操作(例如存取系统存储器10)的数目而变。因此,停滞时间主要随总线带宽而变。

dpm32可读取占用循环计数器寄存器37以确定gpu12的占用时间,其中占用时间等于作用时间加停滞时间。根据占用时间,dpm32可确定占用百分比(例如占用时间除以所述时间段)。应理解,dpm32可通过将作用时间除以所述时间段且将停滞时间除以所述时间段并将所述值在一起求和来确定占用百分比。

基于占用百分比,dpm32可确定调整gpu12的操作点是否可行。举例来说,dpm32可存储具有不同操作点的表,所述操作点具有与操作点中的每一个相关联的预设定放大阈值。放大阈值对于所有操作点常常是相同的,但也可不同。电路25经由dpm32可计算在不同操作点中的一个处的占用百分比,比较占用百分比与其反放大阈值(例如90%),且基于所述比较调整gpu12的操作点。举例来说,假设用于当前操作点的占用百分比低于当前操作点的放大阈值。如果在较低操作点处的占用百分比仍低于此较低操作点的放大阈值,那么电路25经由dpm32可将操作点调整到此较低操作点。较低操作点是与以下各者相关联的操作点:比当前操作点的操作频率低的操作频率和与当前操作点的总线带宽相同的总线带宽、比当前总线带宽低的总线带宽和与当前操作点的操作频率相同的操作频率,或比当前操作点的操作频率低的操作频率和比当前总线带宽低的总线带宽。如果用于当前操作点的占用百分比大于当前操作点的放大阈值,那么电路25经由dpm32可调整到较高操作点。

为了确定在其它操作点处的占用百分比,电路25经由dpm32确定在其它操作点处的作用时间和停滞时间作为单独的值。举例来说,假设gpu12在当前操作点处进行操作,当前操作点被称作具有第一操作频率和第一总线带宽的第一操作点。在此实例中,被称作第二操作点的另一操作点具有第二操作频率和第二总线带宽。

gpu12在第二操作点处的作用时间是基于gpu12在第一操作点处的作用时间和第一操作频率与第二操作频率之间的比率。举例来说,电路25经由dpm32可确定在第二操作点处的作用时间等于在第一操作点处的作用时间乘以(第一操作频率/第二操作频率)。

gpu12在第二操作点处的停滞时间是基于gpu12在第一操作点处的停滞时间和第一总线带宽与第二总线带宽之间的比率。举例来说,电路25经由dpm32可确定在第二操作点处的停滞时间等于在第一操作点处的停滞时间乘以(第一总线带宽/第二总线带宽)。应理解,第一总线带宽是有效的当前总线带宽且未必是与特定操作点相关联的总线带宽。如上文所描述,cpu6、gpu12和装置2的可能的其它组件包含总线接口,所述总线接口确定各自在总线20上传递的数据量且确定总线带宽应为多少。这些组件可将所确定的总线带宽信息输出到在cpu6或另一处理单元上运行的总线驱动程序,且此总线驱动程序可确定实际总线带宽应为多少。举例来说,cpu6可投票支持特定总线带宽,但基于来自其它组件的投票可确定不同总线带宽。

作为一基本实例,假设对于当前操作点(例如第一操作点),处理单元作用时间是5ms,停滞时间是1ms,操作频率是200mhz且有效总线带宽是2gb/s。假设对于第二操作点,操作频率是100mhz且总线带宽是1gb/s,如由用于不同操作点的经存储的表所指示。在此实例中,电路25经由dpm32可确定在第二操作点处的作用时间为5ms*(200mhz/100mhz)=10ms且确定在第二操作点处的停滞时间为1ms*(2gb/s/1gb/s)=2ms。

在此实例中,电路25经由dpm32可确定在第二操作点处的占用时间是10ms+2ms=12ms,而在第一操作点处的占用时间是5ms+1ms=6ms。如果电路25经由dpm32每16ms读取作用循环计数器寄存器35或占用循环计数器寄存器37的时间段,那么在第一操作点处的占用百分比是6ms/16ms=37.5%且在第二操作点处的占用百分比是12ms/16ms=75%。如果阈值是80%,那么电路25经由dpm32可确定将gpu12的操作点从第一操作点调整到第二操作点是安全的,以在不影响性能的情况下节省功率。然而,如果阈值是70%,那么电路25经由dpm32可确定将gpu12的操作点从第一操作点调整到第二操作点并不安全,且可能不会调整gpu12的操作点或可试图识别可在无性能下降的情况将操作点所调整到的另一操作点。

第一操作点识别用于gpu12的第一操作频率和用于将gpu12互连到系统存储器10的总线20的第一总线带宽。然而,第一总线带宽可能并非实际总线带宽。在实例技术中,电路25经由dpm32可使用有效总线带宽以用于计算目的,但是电路25有可能经由dpm32使用与第一操作点相关联的总线带宽也用于计算。在本公开中,第一总线带宽一般可指用于当前操作点的有效总线带宽或与当前操作点相关联的总线带宽。

第二操作点识别用于gpu12的第二操作频率和用于将gpu12互连到系统存储器10的总线20的第二总线带宽。在一些实例中,第一操作频率和第二操作频率是不同的且第一总线带宽和第二总线带宽是相同的。在一些实例中,第一操作频率和第二操作频率是相同的且第一总线带宽和第二总线带宽是不同的。在一些实例中,第一操作频率和第二操作频率是不同的且第一总线带宽和第二总线带宽是不同的。

并且,通过根据占用时间确定占用百分比来描述以上实例,根据作用时间和停滞时间确定占用时间。然而,可根据作用时间百分比和停滞时间百分比直接计算占用百分比。举例来说,电路25经由dpm32可确定在第一操作点处的作用时间百分比(例如作用时间除以时间段)且确定在第一操作点处的停滞时间百分比(例如停滞时间除以时间段)。接着,电路25经由dpm32可通过将在第一操作点处的作用时间百分比乘以操作频率之间的比率来确定在第二操作点处的作用时间百分比且通过将停滞时间百分比乘以总线带宽之间的比率来确定在第二操作点处的停滞时间百分比。电路25接着经由dpm32将在第二操作点处的作用时间百分比和停滞时间百分比相加以确定在第二操作点处的占用百分比。

因为本公开中所描述的技术可基于作用时间和作用时间百分比以及停滞时间和停滞时间百分比加以应用,所以本公开使用术语“作用时间”以一般指代作用时间量和作用时间百分比且使用术语“停滞时间”以一般指代停滞时间量和停滞时间百分比。并且,尽管关于cpu6和gpu12描述了所述技术,但一般来说,所述技术可适用于各种类型处理单元(也被称作处理电路)。

举例来说,cpu6的电路25经由dpm32确定处理单元(例如gpu12、dsp等)在第一操作点处的第一作用时间(例如第一作用时间量或第一作用时间百分比),且确定处理单元在第一操作点处的第一停滞时间(例如第一停滞时间量或第一停滞时间百分比)。电路25经由dpm32还基于第一作用时间确定处理单元在第二操作点处的第二作用时间(例如第二作用时间量或第二作用时间百分比),且基于第一停滞时间确定处理单元在第二操作点处的第二停滞时间(例如第二停滞时间量或第二停滞时间百分比)。

电路25经由dpm32基于第二作用时间和第二停滞时间确定是否将处理单元的操作点从第一操作点调整到第二操作点。电路25经由dpm32基于调整处理单元的操作点的确定将处理单元的操作点从第一操作点调整到第二操作点。

电路25经由dpm32可基于第二作用时间和第二停滞时间确定占用百分比,比较占用百分比与阈值,且基于所述比较确定是否调整操作点。为了确定处理单元的第二作用时间,电路25经由dpm32基于第一作用时间和用于第一操作点的处理单元的操作频率与用于第二操作点的处理单元的操作频率的比率确定第二作用时间(例如第一作用时间乘以在第一操作点处的操作频率与在第二操作点处的操作频率之间的比率)。为了基于第一停滞时间确定第二停滞时间,电路25经由dpm32基于第一停滞时间和用于第一操作点的总线带宽(例如当gpu12在第一操作点处进行操作时的有效总线带宽或与第一操作点相关联的总线带宽)与用于第二操作点的总线带宽的比率确定第二停滞时间(例如第一停滞时间乘以在第一操作点处的总线带宽与在第二操作点处的总线带宽之间的比率)。

图3a和3b是说明根据本公开中所描述的实例的随操作频率而变的占用百分比的实例的概念图。在图3a中,操作频率是200mhz,且在所述时间段内,gpu12的一半时间被占用(例如50%占用百分比)且另一50%是空闲的。如果假设可仅基于在当前操作频率下的占用时间和频率之间的比率确定在不同操作频率下的占用时间,那么如图3a中所说明,cpu6可确定占用百分比在操作频率减半到100mhz时将为100%(例如50%*2)。在此状况下,cpu6可确定gpu12的操作频率不应缩减到100mhz,因为100%大于阈值(例如90%占用百分比)。

然而,在不同操作频率下的占用时间仅基于在当前操作频率下的占用时间的假设可能是错误的,因为停滞时间不随操作频率而变。举例来说,如图3b中所说明,针对200mhz操作频率和100mhz操作频率分别说明作用时间和停滞时间。在此实例中,如果总线带宽不改变,那么停滞时间在操作频率缩减50%的情况下不改变。仅作用时间翻倍。在此状况下,在第二操作频率下的作用时间和停滞时间的相加低于阈值且cpu6可将gpu12的操作频率从200mhz调整到100mhz。

举例来说,在图3b中,假设对于200mhz操作频率,作用时间百分比是50%的占用时间的时间段的30%且停滞时间百分比是所述时间段的20%,这与图3a相一致。根据本公开中所描述的技术,cpu6可确定在100mhz下的作用时间百分比是60%(例如30%*200mhz/100mhz)且停滞时间百分比将保持20%(例如总线带宽不变)。在此状况下,占用百分比是80%且低于阈值,而非确定占用百分比将是100%且大于阈值,如在图3a中。

图4a和4b是说明根据本公开中所描述的实例的随总线带宽而变的占用百分比的实例的概念图。图4a和4b类似于图3a和3b,但是是从总线带宽改变且操作频率不变的角度来看。

举例来说,图4a说明占用时间计算,其中总线带宽减小,引起占用时间的增加。在此状况下,例如关于图3a描述的一些技术可确定占用时间不存在改变。然而,当总线20具有有限带宽时,占用时间确实如图4a中所说明增加。因此,在如关于图3a描述的技术的情况下,cpu6可能并不能够适当地确定占用百分比是低于还是大于阈值。

然而,在本公开中所描述的技术中,cpu6(例如经由电路25的dpm32)可分别确定作用时间或gpu12是在作用中的时间的百分比且确定停滞时间或gpu12是停滞的时间的百分比,且接着基于这些构成值确定占用百分比。在此状况下,cpu6可能能够更佳地确定占用百分比是大于还是低于阈值,以更佳地确定是缩减还是不缩减总线带宽。举例来说,如图4b中所说明,cpu6可适当地确定当总线带宽缩减时仅停滞时间将增加且作用时间将保持不变。cpu6可使用作用时间和停滞时间作为用于确定是否调整操作点的单独值。

图5是说明用于组合不同操作频率和总线带宽的操作点的实例的概念图。举例来说,图5在概念上说明cpu6的电路25(例如经由dpm32)可在其中检索不同操作点的表。举例来说,在图5中所说明的实例中,opp00识别600mhz的操作频率和12.7gb/s的总线带宽,opp10识别420mhz的操作频率和12.7gb/s的总线带宽等等,其中opp33识别200mhz的操作频率和2.2gb/s的总线带宽。图5仅仅是不同操作频率和总线带宽的一个实例,且操作频率和总线带宽的较多、较少或不同组合是可能的。

在图5中所说明的实例中,假设gpu12在opp11处进行操作(例如420mhz和7.0gb/s)。然而,有效总线带宽有可能不同于7.0gb/s。为易于描述,下文假设有效总线带宽是7.0gb/s,但在有效总线带宽是不同的实例中,有效总线带宽用于计算。

并且,假设cpu6确定在opp11处,占用百分比基本上低于阈值。举例来说,放大阈值可指示占用百分比的上限,高于所述上限性能可能会下降。如果cpu6确定在opp11处的占用百分比低于opp11的放大阈值且确定在gpu12的较低操作点处的占用百分比大于这些较低操作点的对应的放大阈值,那么cpu6可能不确定是否调整到gpu12的这些较低操作点。然而,如果cpu6确定在gpu12的较低操作点中的一个处的占用百分比低于gpu12的此较低操作点的放大阈值,那么cpu6可执行本公开中所描述的实例技术。

如果cpu6确定应调整操作点,那么cpu6可使用本公开中所描述的技术确定在相邻操作点处的占用百分比。举例来说,cpu6可确定在opp21、opp22和opp12处的占用百分比,如由从opp11延伸的箭头说明,且在此操作点的放大阈值下确定具有占用百分比的最低操作点。cpu6接着可使gpu12在所确定的操作点处进行操作。

作为另一实例,cpu6可针对操作点中的每一个依序确定占用百分比,且当cpu6发现其中占用百分比低于阈值的操作点时停止确定。用于确定占用百分比的操作点的序列可以是设计选择的问题且本公开考虑了各种排列。

在图5中所说明的实例中,cpu6可确定在高达三个操作点处的占用百分比。在其它实例中,cpu6可确定在多于或少于三个操作点处的占用百分比。并且,操作点无需一定邻近当前操作点。

图6是说明根据本公开中所描述的技术的操作频率和总线带宽确定的实例方法的流程图。关于电路25经配置以执行实例技术描述图6的实例。电路25可经配置以执行dpm32的指令,dpm32配置电路25以执行图6中所说明的实例。作为另一实例,dpm32可以是电路25的固定功能电路块。

此外,尽管电路25经说明为cpu6的一部分,但在一些实例中,电路25可以是操作点经过确定的处理单元的部分。举例来说,装置2可包含处理单元(例如gpu12或dsp)和电路25,所述电路25经配置以使用本公开中所描述的实例技术确定处理单元的操作点。在一些实例中,cpu6包含电路25。在一些实例中,处理单元包含电路25。在一些实例中,cpu6包含电路25且电路25经配置以使用实例技术确定cpu6的操作点。

在图6的实例中,电路25经由dpm32确定处理单元在第一操作点处的第一作用时间(50)。第一作用时间指示处理单元在一时间段内在处理单元的时钟域中在处理数据时是在作用中的时间量或时间百分比。

作为一个实例,dpm32(例如在cpu6的电路25上执行或形成为cpu6的电路25上的电路块)在一时间段之后读取作用循环计数器寄存器35的值且将所述值除以操作频率以确定作用时间。dpm32接着可将作用时间除以所述时间段以确定作用时间百分比。

电路25确定处理单元在第一操作点处的第一停滞时间(52)。第一停滞时间可指示处理单元在时间段期间等待另一时钟域中的操作时是停滞的时间量或时间百分比。

作为一个实例,dpm32在一时间段之后读取占用循环计数器寄存器37的值,从占用时间值减去作用时间值,且将所得值除以操作频率以确定停滞时间。dpm32接着可将停滞时间除以所述时间段以确定停滞时间百分比。

电路25基于第一作用时间确定处理单元在第二操作点处的第二作用时间(54)。举例来说,电路25基于第一作用时间和用于第一操作点的处理单元的操作频率与用于第二操作点的处理单元的操作频率的比率确定第二作用时间。

电路25基于第一停滞时间确定处理单元在第二操作点处的第二停滞时间(56)。举例来说,电路25基于第一停滞时间和当处理单元在第一操作点处进行操作时的有效总线带宽与用于第二操作点的总线带宽的比率确定第二停滞时间。

在此实例中,第一操作点识别用于处理单元的第一操作频率和用于总线20的第一总线带宽,所述总线将处理单元互连到系统存储器10。第二操作点识别用于处理单元的第二操作频率和用于总线20的第二总线带宽,所述总线将处理单元互连到系统存储器10。第一操作频率和第二操作频率可以是不同的(例如第二操作频率低于第一操作频率)且第一总线带宽和第二总线带宽可以是相同的,第一操作频率和第二操作频率可以是相同的且第一总线带宽和第二总线带宽可以是不同的(例如第二总线带宽低于第一总线带宽),或第一操作频率和第二操作频率可以是不同的且第一总线带宽和第二总线带宽是不同的(例如第二操作频率低于第一操作频率且第二总线带宽低于第一总线带宽)。

电路25可基于第二作用时间和第二停滞时间确定是否将处理单元的操作点从第一操作点调整到第二操作点(58)。举例来说,电路25可基于第二作用时间和第二停滞时间确定占用百分比,比较占用百分比与阈值,且基于所述比较确定是否调整处理单元的操作点。

电路25可基于调整处理单元的操作点的确定将处理单元的操作点从第一操作点调整到第二操作点(60)。以此方式,电路25经由dpm32可调整操作点以最小化功率且不影响性能。

图7a和7b是说明确定操作点的实例算法的流程图。关于电路25的dpm32描述图7a和7b。dpm32可确定在当前操作点处的当前作用时间和停滞时间(70)。举例来说,dpm32可从作用循环计数器寄存器35读取作用时间值以确定当前作用时间。dpm32从占用循环计数器寄存器37读取占用循环计数器值,且减去作用时间值以确定当前停滞时间。为易于说明,假设当前操作点是图5的opp11。

dpm32可确定在相应较低操作频率和较低总线带宽下的作用时间和停滞时间(72)。举例来说,dpm32可确定在opp22处的作用时间和停滞时间,其中在opp22处的作用时间等于当前作用时间*(当前操作频率/opp22的操作频率)且在opp22处的停滞时间等于当前停滞时间*(当前有效总线带宽/opp22的总线带宽)。dpm32接着可确定在opp22处的占用百分比(74)。

如果在opp22处的占用百分比低于阈值(例如90%)(对76的肯定),那么dpm32可将目标操作频率和目标总线带宽设定为opp22的操作频率和总线带宽(78)。所述算法接着可进行到图7b中所描述的块a。

如果在opp22处的占用百分比不低于阈值(例如90%)(对76的否定),那么dpm32可确定在相同总线带宽和较低操作频率下的占用百分比(例如opp21)(80)。举例来说,类似于上文,dpm32可确定在opp21处的作用时间作为当前作用时间*(当前操作频率/opp21的操作频率)且在opp21处的停滞时间等于当前停滞时间*(当前总线带宽/opp21的总线带宽)。基于在opp21处的作用时间和停滞时间,dpm32可确定在opp21处的占用百分比。

如果在opp21处的占用百分比低于阈值(例如90%)(对82的肯定),那么dpm32可将目标操作频率设定为opp21的操作频率(84)。所述算法接着可进行到图7b中所描述的块a。

如果在opp21处的占用百分比不低于阈值(例如90%)(对82的否定),那么dpm32可确定在相同操作频率和较低总线带宽下的占用百分比(例如opp12)(86)。举例来说,类似于上文,dpm32可确定在opp12处的作用时间作为当前作用时间*(当前操作频率/opp12的操作频率)且在opp12处的停滞时间等于当前停滞时间*(当前总线带宽/opp12的总线带宽)。基于在opp12处的作用时间和停滞时间,dpm32可确定在opp12处的占用百分比。

如果在opp12处的占用百分比低于阈值(例如,90%)(对88的肯定),那么dpm32可将目标总线带宽设定为opp12的总线带宽(90),且所述算法接着可进行到图7b中所描述的块a。如果在opp12处的占用百分比不低于阈值(例如90%)(对88的否定),那么所述算法接着可进行到图7b中所描述的块a。

如图7b中所说明,dpm32可确定目标操作频率(如可能已在块78或84中确定)是否不同于当前频率(92)。如果目标操作频率不同于当前频率(对92的肯定),那么dpm32可将操作频率缩放到目标频率。

如果目标操作频率并非不同于当前频率(对92的否定)或在缩放操作频率之后,dpm32可确定目标总线带宽(如可能已在块78或90中确定)是否不同于当前总线带宽(96)。如果目标总线带宽不同于当前总线带宽(对96的肯定),那么dpm32可投票支持目标总线带宽(98)。如果目标总线带宽并非不同于当前总线带宽(对96的否定)或在缩放操作频率之后,dpm32可在某一延迟之后或针对下一帧重复所述算法且再次确定当前作用时间和停滞时间,且重复块70到98中所说明的算法。

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

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

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

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

已描述了各种实例。这些和其它实例在所附权利要求书的范围内。

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