用于计算设备中的动态缓冲器大小设定的系统和方法与流程

文档序号:19952594发布日期:2020-02-18 10:52阅读:372来源:国知局
用于计算设备中的动态缓冲器大小设定的系统和方法与流程



背景技术:

计算设备(包括台式计算机、服务器和便携式计算设备(“pcd”))普遍存在。例如pcd成为人们在个人和专业级别的必需品。这些设备可以包括蜂窝电话(诸如智能电话)、便携式数字助理(“pda”)、便携式游戏机、掌上型计算机、平板电脑、可穿戴设备和其他便携式电子设备。这种pcd通常使用存储器(诸如先进先出缓冲器或充当缓冲器的存储寄存器)来确保数据在pcd的组件之间有效传输并且没有数据丢失。这种缓冲存储器的大小通常是在pcd的启动时针对“最坏情况”场景来设定的,例如,缓冲存储器(诸如fifo)的大小可以被设定为确保当传输数据的第一组件以最大频率操作而传输数据的另一个组件以最小频率操作时不会丢失数据。

随着pcd变得更强大并且需要执行更多任务,降低功耗对于确保令人满意的电池寿命变得更重要。用于减少或控制功耗的典型现有技术包括节流或控制pcd组件操作的电压电平和/或pcd组件的时钟频率。然而,这些控制功耗的方法可能不是在所有情况下都有效,例如,当pcd的多个组件处于单个电源轨上时,使得由于一个组件的需求,而不能降低电源轨上的电压电平,而该电源轨上的其他组件可以在较低电压电平下操作。

这些用于控制功率消耗的方法忽略了针对处理“更坏情况”场景而被设定大小的缓冲器导致的显著的功率泄漏。因此,需要系统和方法来动态地控制诸如pcd的计算设备中的fifo缓冲器大小设定。



技术实现要素:

公开了用于动态地控制计算设备中的缓冲存储器大小的方法和系统的各种实施例。在示例性实施例中,提供了一种方法,该方法包括:利用片上系统(“soc”)的监控模块确定pcd的第一使用情况。该第一使用情况为soc的多个组件定义第一活动级别。该方法包括:基于该第一使用情况将多个缓冲存储器设置为第一缓冲器大小。该多个缓冲器中的每一个缓冲器与soc的该多个组件中的一个组件相关联,并且每个缓冲器的第一缓冲器大小是基于soc的相关联组件的第一活动级别的。

该方法还包括:确定pcd的不同于第一使用情况的第二使用情况。该第二使用情况为soc的该多个组件定义第二活动级别。基于该第二使用情况将该多个缓冲器中的至少一个缓冲器设置为第二缓冲器大小。该至少一个缓冲器的第二缓冲器大小是基于soc的相关联组件的第二活动级别的,并且第二缓冲器大小不同于第一缓冲器大小。

在另一个实施例中,公开了一种用于动态地控制计算设备中的缓冲器大小的计算机系统。示例性系统包括pcd的片上系统(“soc”)的多个组件;soc上的多个缓冲器,该多个缓冲器中的每一个缓冲器与该多个组件中的一个组件相关联;以及soc的监控模块。监控模块被配置为确定pcd的第一使用情况,该第一使用情况为soc的该多个组件定义第一活动级别。监控模块还被配置为基于第一使用情况将该多个缓冲器设置为第一缓冲器大小,其中,每个缓冲器的第一缓冲器大小是基于soc的相关联组件的第一活动级别的。

监控模块还被配置为确定pcd的不同于第一使用情况的第二使用情况,第二使用情况为soc的该多个组件定义第二活动级别。最后,监控模块被配置为基于第二使用情况将该多个缓冲器中的至少一个缓冲器设置为第二缓冲器大小。该至少一个缓冲器的第二缓冲器大小是基于soc的相关联组件的第二活动级别的,并且第二缓冲器大小不同于第一缓冲器大小。

附图说明

在附图中,除非另有指明,否则相似的附图标记在全部各个视图中指代相似的部分。对于具有诸如“102a”或“102b”等字母字符标识的附图标记,字母字符标识可以区分同一附图中存在的两个相似部分或元件。当意图是附图标记包含所有附图中具有相同附图标记的所有部分时,可以省略附图标记的字母字符标记。

图1是示出便携式计算设备(pcd)的示例性实施例的功能框图,在该pcd中能够实现用于动态先进先出(fifo)缓冲器大小设定的系统和方法;

图2是示出可以在pcd中实现的片上系统(soc)中的示例性组件的方框图;

图3是示出用于计算设备中的动态fifo缓冲器大小设定的系统的示例性实施例的各方面的方框图;

图4a是图2的方框图,其中针对一种使用情况示出了用于动态fifo缓冲器大小设定的系统和方法的操作示例;

图4b是图2的方框图,其中针对一不同使用情况示出了用于动态fifo缓冲器大小设定的系统和方法的操作示例;

图5a是可以在用于动态fifo缓冲器大小设定的系统和方法的操作期间使用的示例性状态表;

图5b是可以在用于动态fifo缓冲器大小设定的系统和方法的操作期间使用的示例性查找表(lut);

图6是示出soc中的示例性组件以及用于针对使用情况的动态fifo缓冲器大小设定的系统和方法的示例性操作的额外方面的方框图;

图7a是示出具有第一大小的fifo的各方面的方框图;

图7b是示出在根据本文的示例性系统和方法调整大小之后的图6a的fifo的各方面的方框图;以及

图8是示出用于计算设备中的动态fifo缓冲器大小设定的示例性方法的操作的逻辑流程图。

具体实施方式

本文使用词语“示例性的”来表示“用作示例、实例或说明”。本文中被描述为“示例性的”的任何方面不一定被解释为相对于其它方面而言是排他的、优选的或有利的。

在本说明书中,术语“应用程序”还可以包括具有可执行内容的文件,例如目标代码、脚本、字节代码、标记语言文件和补丁。另外,本文提到的“应用程序”也可以包括本质上不可执行的文件,诸如可能需要被打开的文档或需要被访问的其他数据文件。

如在本说明书中所使用的,术语“组件”、“数据库”、“模块”、“系统”等旨在指代与计算机相关的实体,即硬件、固件、硬件和软件的组合、软件,或执行中的软件,并且表示用于提供功能以及执行本说明书中描述的过程或过程流程中的特定步骤的示例性单元。例如,组件可以是但不限于:在处理器上运行的进程、处理器、对象、可执行体、执行线程、程序和/或计算机。作为说明,运行在计算设备上的应用程序和该计算设备都可以是组件。

一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以局限于一台计算机上和/或分布在两台或更多台计算机上。另外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质执行。这些组件可以例如根据具有一个或多个数据分组的信号(例如,来自与本地系统、分布式系统中的另一个组件进行交互和/或通过如互联网的网络与其他系统通过信号方式进行交互的一个组件的数据)通过本地和/或远程进程进行通信。

在本说明书中,术语“中央处理单元(“cpu”)”、“数字信号处理器(“dsp”)”、“图形处理单元(“gpu”)”和“芯片”可互换使用。此外,cpu、dsp、gpu或芯片可以由在本文中统称为“核心”的一个或多个不同处理组件组成。

在本说明书中,术语“工作负荷”、“处理负荷”和“处理工作负荷”可互换使用,并且通常针对与给定实施例中的给定处理组件相关联的处理负担或处理负担的百分比,例如当该处理组件正在执行一个或多个任务或指令时。此外,“处理组件”可以是但不限于:片上系统(“soc”)、中央处理单元、图形处理单元、核心、主核心、子核心、处理区域、硬件引擎、相机、调制解调器等或驻留在便携式计算设备内的集成电路内或外部的任何其他组件。

在本说明书中,术语“便携式计算设备”(“pcd”)用于描述依靠诸如电池之类的有限容量电源供电的任何设备。尽管电池供电的pcd已经使用了数十年,但与第三代(“3g”)和第四代(“4g”)无线技术的出现相结合的可再充电电池的技术进步已经实现了具有多种能力的许多pcd。因此,pcd可以是蜂窝电话、卫星电话、寻呼机、pda、智能电话、导航设备、智能本或阅读器、媒体播放器、平板电脑、上述设备的组合、具有无线连接的膝上型计算机和/或可穿戴产品等等。

在pcd中,相互竞争的服务质量、电池寿命和其他问题可能导致pcd的各种组件、系统和/或子系统以更高(或更低)的功率或电压和/或更高(或更低)频率操作。另外,pcd通常包括一个或多个缓冲存储器以协助pcd的各种组件、系统和/或子系统之间的数据协商。然而,这些缓冲存储器或缓冲器通常是在pcd的初始启动或操作时被设置或设定大小的,并大小保持不变,从而当缓冲器未被使用时导致过度的功率泄漏。这种功率损耗在针对“最坏情况”场景设定大小的缓冲器中尤为明显,例如,缓冲器的大小被设定为确保当传输数据的组件以最大频率操作而接收数据的组件以最小频率操作时不会丢失数据。在关注于pcd组件的工作频率和/或电压的传统功率控制策略中,没有考虑缓冲器大小引起的这种功率损耗。

已经确定,动态地控制由pcd组件和/或子系统使用的缓冲器的大小的能力,能够导致超出通过pcd组件/子系统的传统电压/频率控制获得的功率节省之外的相当大的功率节省。另外,在传统的基于电压/频率的功率控制方法不能提供功率节省时(例如,在由于一个不活动组件与活动组件共享电源轨而不能减小该不活动组件的电压时),动态地设定缓冲器的大小能够提供功率节省。因此,当传统的电压/频率功率节省方法无效时,用于动态地设定缓冲器或缓冲存储器的大小的本系统和方法提供了用于增强功率节省或实现功率节省的成本高效的能力。

本文描述的用于数据路径感知热管理的系统和方法或系统和方法的部分可以用硬件或软件来实现。如果以硬件实现,则系统或系统的部分可包括本领域中公知的以下技术中的任何一种或其组合:传感器、分立电子组件、集成电路、具有适当配置的半导体器件和电阻元件的专用集成电路、等等。这些硬件设备中的任何一个,无论是与其他设备或其他组件(例如存储器)一起作用还是单独的,还可以形成或包括用于执行所公开方法的各种操作或步骤的组件或单元。

当本文描述的系统或方法以软件实现或部分实现时,软件部分可用于执行本文所述的方法。用于表示各种元素的软件和数据可以存储在存储器中,并由合适的指令执行系统(例如微处理器)执行。该软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以体现在由指令执行系统、装置或设备(诸如单核或多核处理器或包含处理器的系统)使用或与其结合使用的任何“处理器可读介质”中。这些系统通常将访问来自指令执行系统、装置或设备的指令并执行指令。

图1是示出便携式计算设备(pcd)的示例性实施例的功能框图,在该pcd中能够实现用于数据路径感知热管理的系统和方法。如图所示,pcd100包括片上系统(“soc”)102,其包括耦合在一起的多核中央处理单元(“cpu”)110和模拟信号处理器128。cpu110可以包括多个核心,包括第零核心122、第一核心124,直到并包括第n核心126。此外,如本领域的普通技术人员所理解的,代替cpu110,也可以使用数字信号处理器(“dsp”)。如将理解的,核心122、124、126可以被实现为执行一个或多个指令或任务,诸如由pcd100运行的应用程序的指令或任务。还将理解的是,这样的指令或任务可以代替地或者可以另外地,由一个或多个另外的处理组件(诸如图1中所示的gpu182)执行或者在其上执行。

在一个实施例中,监控模块114可以被实现为在操作期间与由pcd100的各种组件实现的先进先出(fifo)缓冲器(图1中未示出)进行通信,以及与soc102的其他组件(诸如cpu110或gpu182等)进行通信。监控模块114还可以在一些实施例中确定将调整各种fifo中的哪一个的大小,以及将fifo的大小调整到何种程度,如在下文中描述的那样。尽管在图1中为了方便而示出为soc102上的单个组件,但在一些实施例中,监控模块114可以包括多个组件,其中的一个、一些或全部可以不位于soc102上。在本公开内容中,监控模块114不必是图1中所示的组件,并且在一些实施例中,监控模块114可以用诸如存储在存储器112中的可执行指令、代码和/或参数的软件来实现。

如图1所示,显示控制器129和触摸屏控制器130耦合到cpu110。soc102外部的触摸屏显示器132耦合到显示控制器131和触摸屏控制器130。同样,尽管在图1中示出为位于soc102上的单个组件,但是在一些实施例中,显示控制器131或触摸屏控制器130都可以包括多个组件,其中的一个或多个组件可以不位于soc102上。

pcd100可以进一步包括视频编码器134,例如相位交替线(“pal”)编码器、顺序存储彩电制式(“secam”)编码器、国家电视系统委员会(“ntsc”)编码器或任何其他类型的视频编码器134。视频编码器134耦合到cpu110。视频放大器136耦合到视频编码器134和触摸屏显示器132。视频端口138耦合到视频放大器136。如图1所示,通用串行总线(“usb”)控制器140耦合到cpu110。另外,usb端口142耦合到usb控制器140。存储器112和用户身份模块(sim)卡146也可以耦合到cpu110。此外,如图1所示,数码相机148可以耦合到soc102的cpu110。在示例性方面,数码相机148是电荷耦合器件(“ccd”)相机或互补金属氧化物半导体(“cmos”)相机。

如在图1中进一步所示,立体声音频编解码器150可以耦合到模拟信号处理器126。此外,音频放大器152可以耦合到立体声音频编解码器150。在示例性方面,第一立体声扬声器154和第二立体声扬声器156耦合到音频放大器152。图1示出了麦克风放大器158也可以耦合到立体声音频编解码器150。另外,麦克风160可以耦合到麦克风放大器158。在特定方面,调频(“fm”)无线电调谐器162可以耦合到立体声音频编解码器150。另外,fm天线164耦合到fm无线电调谐器162。此外,立体声耳机166可以耦合到立体声音频编解码器150。

图1进一步指示射频(“rf”)收发机168可以耦合到模拟信号处理器128。rf开关170可以耦合到rf收发机168和rf天线172。如图1所示,键盘174可以耦合到模拟信号处理器128。另外,具有麦克风的单声道耳机176可以耦合到模拟信号处理器128。此外,振动器设备178可以耦合到模拟信号处理器128。图1还示出电源188(例如电池)通过pmic180耦合到soc102。在特定方面,电源包括可再充电dc电池或源自连接到交流(“ac”)电源的ac变dc变压器的dc电源。

cpu110还可以耦合到一个或多个内部片上热传感器157a、157b以及一个或多个外部片外热传感器157c。片上热传感器157a可以包括一个或多个正比于绝对温度(“ptat”)温度传感器,ptat温度传感器基于垂直pnp结构,并且通常专用于互补金属氧化物半导体(“cmos”)超大规模集成(“vlsi”)电路。片外热传感器157c可以包括一个或多个热敏电阻或其他期望的传感器。热传感器157c可以产生压降,压降通过模数转换器(“adc”)控制器103转换为数字信号。然而,可以使用其他类型的热传感器157a、157b、157c而不脱离本发明的范围。

在图1所示的实施例中,触摸屏显示器132、视频端口138、usb端口142、相机148、第一立体声扬声器154、第二立体声扬声器156、麦克风160、fm天线164、立体声耳机166、rf开关170、rf天线172、键盘174、单声道耳机176、振动器178、电源188、pmic180和热传感器157c在soc102的外部。

如上所述,在特定方面,可以通过存储在存储器112中的、可以形成监控模块114或者本文讨论其他组件的可执行指令、代码和/或参数,来实现本文描述的一个或多个方法步骤。除了adc控制器103之外,形成监控模块114的指令还可以由cpu110、模拟信号处理器128或另一处理器执行,以执行本文所述的方法。此外,cpu110、模拟信号处理器128、存储器112、存储在其中的指令或其组合可以用作用于执行本文所述的一个或多个方法步骤的单元。

图2是示出可以在pcd100中实现的soc102中的示例性组件的方框图。在一个实施例中,pcd100可以是无线电话的形式。图2用于说明性目的,并且示出了示例性pcd100的特定硬件组件的示例性布置,这些硬件组件以方框形式示出并且经由诸如互连或总线270的通信路径彼此电耦合。

总线270可以包括经由一个或多个有线或无线连接的多个通信路径。取决于实施方式,总线270可以包括为了简化而省略的额外元件,例如控制器、驱动器、中继器和接收机,以实现通信。此外,如果需要,总线270可以包括地址、控制和/或数据连接,以实现图2所示的各种组件和/或soc102和/或pcd100的额外组件之间的适当通信。在一个实施例中,总线270可以包括片上网络(noc)总线270。

如图2所示,soc102可以包括多个处理器或核心,包括cpu_0222、cpu_1224、cpu_2226和cpu_3228(统称为cpu222-228)。尽管示出了四个cpu222-228,但是在其他实施例中,soc102可以具有更多或更少的cpu222-228和/或cpu222-228可以不同于图2所示的进行布置。此外,soc102可以具有与图2中所示的架构不同的处理组件架构,诸如“大-小”架构,其中每个cpu222-228包括两个不同大小的独立处理组件。本公开内容同样地适用于所有这样的结构变型。

同样如图2所示,soc102还可以包括用于处理或执行与图形相关的工作负荷(诸如将图形信息渲染到用户显示器232)的单独gpu282。类似地,soc102可以包括用于编码或解码视频文件的视频编码器234。虽然未示出,但soc102还可以包括用于编码或解码音频文件和/或视频文件的音频部分的单独的音频编码器。soc102还可以包括图2中示为相机248的一个或多个相机。类似地,soc102可以包括用来允许pcd100与其他计算机设备和系统之间的通信的一个或多个组件。这样的通信组件可以包括调制解调器260和/或广域lan(wlan)262。

soc102还将包括一个或多个子系统240以支持上面列出的组件和/或执行soc102或pcd100的其他功能。如将理解的,这些子系统(为了方便起见被示为单个子系统240)可以包括被配置为结合soc102的上述组件工作或独立于soc102的上述组件工作的各种组件或逻辑。例如,在一个实施例中,子系统240可以包括用于处理soc102的音频数据的低功率音频子系统(lpass)。类似地,在一个实施例中,子系统240可以包括用于处理soc102的视频数据(诸如要由视频编码器234编码的视频数据和/或要由gpu282渲染的视频数据)的视频子系统。soc102可以在各种实施例中包括比图示的子系统240更多的子系统。

最后,在图2所示的实施例中,soc102包括一个或多个缓冲器(250a-250i)。缓冲器250a-250i允许数据在被每个缓冲器250a-250i所耦合的图2所示的相应组件或子系统读取之前,对数据进行缓冲。如将理解的,缓冲器250a-250i可以实现为任何期望的缓冲器或存储器结构(例如,除了sram和dram之外的任何存储器类型),诸如先进先出(fifo)缓冲器。为了方便起见,缓冲器在下面讨论的示例性实施例中被示出为fifo250a-250i。然而,下面的讨论和本公开内容同样适用于用于缓冲的方法的任何储存器或存储器类型。如同样将被理解的,图2中的单独的fifo250a-250i的表示是说明性的。在其他实施例中,fifo250a-250i可以不是soc102的物理上分离的缓冲器或组件。例如,fifo250a-250i可以不与组件分离,而相反地可以是fifo250a-250i为之提供缓冲的组件的一部分。在这样的实施例中,诸如fifo250a的特定缓冲器可被认为是fifo250a为之提供缓冲的组件(子系统240)的一部分-即在图2中表示子系统240的框内。在其他实施例中,fifo250a-250i可以被实现为存储寄存器序列或单个存储器中的地址序列,其中每个存储寄存器序列或地址序列被指定用作用于特定组件的fifo250a-250i。

另外,如fifo250c和fifo250d所示,soc102的一个或多个组件可以共享缓冲器,但是在一些实施例中,每个组件将具有其自己的缓冲器。如将理解的,soc102可以具有比图2中所示的更多或更少的组件和子系统,和/或组件或子系统的空间布置可以与图2中所示的说明性布置不同地被布置。

转到图3,例示了示出用于动态fifo缓冲器大小设定的系统300的示例性实施例的各方面的方框图。系统300可以在具有图2所示的soc102的示例性组件200的soc102上实现。另外,系统300的soc102可以是图1中所示的pcd100的soc102。如图3所示,soc102包括具有多个处理组件(例如核心222、224、230)的cpu110,该多个处理组件在一个实施例中可以对应于图2的cpu222-228。cpu110电耦合到通信路径,诸如互连或总线270,诸如上面针对图2所描述的总线270。soc102还可以包括电耦合到总线270的gpu282、调制解调器260和相机248。

系统300包括与总线270通信的存储器控制器308,存储器控制器308被配置为控制在soc102上或耦合到soc102的存储器,包括系统存储器112(图1)和fifo250a-250i(图2)的特定方面。虽然未示出,但系统300还可以包括用于soc102的组件的各种驱动器,其包含关于soc102的组件的配置和操作信息。这些驱动器可以分布在特定驱动器所应用的各种组件中和/与之共处一处。

系统300还包括与总线270通信的监控模块114。在一个实施例中,监控模块114可以操作以确定何时调整一个或多个fifo250a-250i(图2)的大小和/或确定一个或多个fifo250a-250i的大小调整量。虽然在图2中示出为soc102上的单个组件,但在一些实施例中,监控模块114可以包括多个组件,和/或本文讨论的监控模块114的功能可以分布在soc102的各种组件中。在其他实施例中,监控模块114可以根本不是如图2所示的组件,而是作为替代地,监控模块114可以用诸如存储在soc102的存储器中的可执行指令、代码和/或参数的软件来实现。

不管如何实施,为了做出关于何时和/或如何调整缓冲器大小的确定,监控模块114可以从各种组件接收或获得信息,以确定或了解pcd100的使用情况。监控模块114可以类似地从各种组件接收或获得信息,以确定或了解从第一使用情况到第二使用情况的变化,该变化将会调节对一个或多个缓冲器的大小调整。在一个实施例中,使用情况是用于针对pcd100正在被怎样使用进行分类的方法或方式。使用情况提供了关于在该使用情况期间pcd100或soc102的各种组件的活动级别或预期活动级别的信息(或可以由其定义的信息)。

示例性使用情况可以包括游戏、视频回放、通信(诸如发短信或电话呼叫)、计算活动、相机(诸如拍摄照片);拍摄视频(其可以是相机使用情况的一个子集或一种单独的使用情况);音乐(其可以包括播放保存到pcd100的音乐文件和/或到pcd100的流媒体音乐);浏览互联网;备份pcd100;启动(诸如当pcd100在被关闭后加电时);默认(其可以是当其他使用情况不适用时的默认使用情况);或其他使用情况。另外,在一些实施例中,可以基于在一段时间内pcd100被怎样使用,来定义或创建新的使用情况。在这样的实施例中,新的使用情况可以由监控模块114定义或创建。

确定在特定时间哪个使用情况适用于pcd100可以是基于关于由pcd100正在执行或将要由pcd100执行的应用程序或程序的知识或信息的。这些知识或信息可以是直接的(诸如了解哪些应用程序、指令或代码正在soc102上执行的软件)或者可以被推断(诸如基于用户输入)。在一些实施方式中,确定在特定时间哪个使用情况适用于pcd100可以另外或替代地基于关于pcd100的当前状态信息,诸如pcd100或soc102中的一个或多个组件的活动级别(诸如gpu282、相机248、调制解调器260、视频编码器232等)。在其他实施方式中,在特定时间适用于pcd100的使用情况可以是基于特定触发事件的,诸如pcd100或soc102从断电状态重新启动。

不管如何被确定或了解,每个使用情况都将与soc102和/或pcd100的一个或多个组件的预期或期望的活动级别相关联。例如,“相机”使用情况可以是如下情况:相机和/或相机应用程序已经由pcd100的用户启动。对于这样的使用情况,可以预期相机(诸如图2和图3的相机248)和显示器(诸如图2的显示器232)以及任何支持子系统将是活动的。还可以预期,对于“相机”使用情况,调制解调器260、gpu282、视频编码器234以及soc102的其他组件(图2)可以是不活动的,或与在其他使用情况中相比活动程度低。

作为另一示例,“通信”使用情况可以是如下情况:调制解调器和/或使用调制解调器的通信应用程序已经由pdc100的用户启动。图4a是图2的方框图,其中针对示例性“通信”使用情况示出了用于动态fifo缓冲器大小设定的系统和方法的操作示例。对于这样的使用情况,可以预期调制解调器260和任何支持子系统将是活动的,如图4a的阴影区域所表示的。用于如调制解调器260的这种活动组件的缓冲器(fifo250h)的大小将设定为适应预期的活动级别-即相对较大的缓冲器深度。

相反,可以预期soc102的其余组件(无阴影)可以是不活动的,或者相对于该“通信”使用情况而言活动程度较低。用于如相机248和gpu282的这种不活动组件的缓冲器(fifo250g,fifo250e)的大小将设定为适应预期的不活动性-即较小的缓冲器深度。因此,对于这种使用情况下预期活动程度较低的组件,可以减小耦合到这些组件的缓冲器的大小或深度,在不影响pcd的性能的情况下防止或减小泄漏功率。

注意,对于“通信”使用情况,取决于通信的类型,可能不使用调制解调器260的全带宽。应该理解,即使没有使用调制解调器260的全带宽,调制解调器260也可以与其他组件(例如,图4a中未示出的存储器控制器)同步以用于服务质量目的、防止延迟等。换言之,即使调制解调器260正在使用其全带宽,也可以迫使调制解调器260以较高频率工作。

在这种使用情况下,控制调制解调器260的电压或频率的传统功耗技术将不会有效,因为调制解调器260与其他组件同步和/或与其他组件共享电源轨。在那种情况下,fifo250h的大小可以被设定为相对较大,但仍可以小于全大小或深度(例如减小25%)。fifo250h的这种动态大小设定允许其适应调制解调器260的预期活动水平,同时仍提供功率节省。以此方式,在传统的基于电压/频率的功率降低方法可能不适用或无效的情况下,fifo250h的动态大小设定可以提供功率节省而不会影响soc102或pcd100的性能。

又一个示例是用户正在pcd100上执行游戏应用程序的“游戏”使用情况。图4b是图2的方框图,其中针对示例性“游戏”使用情况示出了用于动态fifo缓冲器大小设定的系统和方法的操作示例。对于这样的使用情况,可以预期gpu282和显示器232可以是活动程度最高的,如图2c的阴影区域所反映的。用于如gpu282和显示器232的这些活动组件的缓冲器(fifo250e,fifo250f)的大小将设定为适应预期的活动级别-即相对较大的缓冲器深度。

对于这样的“游戏”使用情况,可以预期存储器控制器308、cpu222-228、调制解调器260和视频编码器234将会是活动程度适中的。用于这些活动程度适中的组件的缓冲器(fifo250c、250d、250h)的大小将设定为适应预期的适中活动级别-即与活动组件相比在较小的缓冲器深度处。最后,在“游戏”使用情况中,预期相机248将不活动。用于这种不活动组件的缓冲器(fifo250g)的大小将设定为适应预期的不活动性-即与适中和活动组件相比在更小的缓冲器深度处。fifo250c、205f、250h和/或250gh的这种动态大小设定-尤其是用于soc102的不活动或活动程度较低的组件的缓冲器大小或深度的减小-允许防止或减小泄漏功率而不影响pcd100或soc102的性能。

如该图4b的“游戏”使用情况示例所示,soc102的各种组件的活动级别不一定被分类为活动/不活动的。相反,用于一个或多个使用情况的活动级别可能是相对的,或者是变化的,具有取决于组件的多个活动级别或活动程度。请注意,在此“游戏”使用情况示例中,也可以作为传统功率控制或节省方法的一部分,来使活动程度较低或不活动的组件的电压和/或频率降低。在这种“游戏”使用情况示例中的缓冲器的动态大小设定提供了超出传统的基于电压/频率的功率降低方法可获得的功率节省/功率降低之外的额外功率节省/功率降低。

对于组件具有相对或可变活动程度的实施方式或使用情况,关于状态或活动级别和/或缓冲器大小的信息或数据可以存储或包含在监控模块114中或监控模块114访问的存储器中或soc102的某个其他组件中。在一个实施例中,这样的信息可以被存储在诸如图5a的状态表500a的表格中。状态表500a可以包括表示针对每个使用情况的soc102的每个组件的预期活动级别或状态的级别或状态,诸如f0、f1、f2、f3等。状态表500a是说明性的,并且在各种实施例中可以包括更多或更少的使用情况、更多或更少的组件和/或更多或更少的活动级别/状态。

在一些实施例中,状态表500a可以是固定的,而在其他实施例中,监控模块114或另一组件可以具有修改状态表500a以改变一个或多个活动级别值、添加或删除使用情况、添加或删除组件等的能力。另外,将理解的是,与如图5a所示的单个状态表500a不同,状态表500a中的信息可以替代地分布到多个不同的表中,诸如用于soc102的每个组件的单独状态表(未示出)。状态表500a可以是查找表。在一个实施例中,状态表500a可以被存储或包含在监控模块114中,或者可以被存储在存储器中并由监控模块114访问,诸如当监控模块114以软件实现时。

作为关于使用情况的信息的补充或替代,监控模块114可以从缓冲器自身(诸如图2的fifo250a-250i)接收或获得信息,该信息可以指示缓冲器需要调整大小,或者可以用于确定调整一个或多个缓冲器的大小。例如,当fifo250a-250i已经开始填满数据或者包含高于阈值级别的数据时,fifo250a-250i可以发送指示其空间用尽的信号,该信号可以由监控模块114接收。

回到图3,作为确定或了解使用情况的一部分,或者作为在了解使用情况之后的单独确定的一部分,监控模块114可以包含或可以接收或获得信息以确定一个或多个缓冲器的大小调整量。例如,取决于组件的活动级别或预期活动级别或“状态”,对于特定使用情况,监控模块114可以确定对用于该组件的缓冲器的大小调整量。

在一个实施例中,该确定可以是二值的-即,如果组件是“活动的”,则将缓冲器大小设定为深度“a”,而如果组件是“不活动的”,则将缓冲器大小设定为深度“b”。在本实施例的一些实施方式中,深度“a”和“b”对于soc102的每个组件可以是固定值–即,每个活动组件将其缓冲器大小调整为深度“a”,而每个不活动组件将其缓冲器大小调整为深度“b”,其中,“a”和“b”的值对于所有组件是相同的。在这样的实施方式中,“b”的值可以是“a”的一部分,诸如深度“a”的50%。在该实施例的其它实施方式中,“a”和“b”的值可以随着组件而变化。

在一不同实施例中,对缓冲器大小调整量的确定可以不是二值的-即缓冲器大小调整量可以取决于组件的相对活动级别。在这样的实施例中,可以将活动级别与缓冲器大小的关系存储在诸如图5b的查找表(lut)500b的表格中。如图5b的示例性lut500所示,针对特定使用情况的组件的每个活动级别或状态导致缓冲器大小的不同减小(例如图2的fifo250a-250i中的一个或多个fifo的减小)。

在一些实施例中,soc102的所有组件的缓冲器大小信息可以由诸如lut500b的单个表来管理。在其他实施例中,soc102的每个组件可以具有单独的lut500b,并且缓冲器大小减小值可以针对每个组件而变化。例如,相机248的状态f1可以导致缓冲器大小减小50%,而gpu282的状态f1可以导致如lut500b中所示的减小25%。lut500b可以存储在监控模块114中,或者可以存储在存储器中并由监控模块114访问,诸如当监控模块114以软件实现时。在一些实施例中,lut500b可以是固定的,而在其他实施例中,监控模块114或另一个组件可以具有修改lut500b以添加或删除活动级别、改变针对一个或多个活动级别的缓冲器大小减小值等的能力。

参考图6,示出了在用于另一“游戏”使用情况的动态fifo缓冲器大小设定的系统和方法的操作期间soc102的示例性组件的方框图。对于图6的“游戏”使用情况,预期存储器控制器308、gpu282和cpu222将是活动程度最高的组件,如图6的阴影区域所反映的。用于这些活动组件的缓冲器fifo250e(用于gpu282)、fifo250d(用于cpu222)和fifo250j(用于存储器控制器308)的大小将被设定为适应预期活动级别-即相对较大的缓冲器深度。这在图6中用关于将针对活动级别f0来设定fifo250d、250e和250j的大小的指示来反映。如图5b的lut500b所示,该示例的活动级别f0对应于0%的缓冲器大小减小-即全/最大大小的缓冲器。

继续这个“游戏”使用情况示例,预期存储器控制器308将是下一个活动程度最高的组件。调制解调器的缓冲器fifo250h的大小将被设定为适应该预期活动级别,在图6中用关于将针对活动级别f1来设定fifo250h的大小的指示来反映。如图5b的lut500b所示,这个示例的活动级别f1对应于25%的缓冲器大小减小-即被略微减小的缓冲器大小。

类似地,预计相机248对于这种“游戏”使用情况活动程度将会更低,并且在图6中针对活动级别f2来设定用于相机248的fifo250g的大小。该示例的活动级别f2对应于50%的缓冲器大小减小-即比状态f0或f1更小的缓冲器深度。cpu222-228、调制解调器260和视频编码器234活动程度将会是适中的。最后,预期视频编码器234将在该示例性使用情况中是活动程度最低的组件,并且针对活动级别f3来设定用于视频编码器234的fifo250b的大小,活动级别f3对应于缓冲器大小或深度减小75%。

因此,对于这种使用情况下预期活动程度较低的组件,可以减小耦合到这些组件的缓冲器的大小或深度,防止或减小泄漏功率而不影响pcd的性能。同样,在这个额外“游戏”使用情况示例中的缓冲器的动态大小设定提供了超出从应用于soc102的不活动组件的传统的基于电压/频率的功率降低方法可以获得的功率节省/功率降低之外的额外功率节省/功率降低。

图6提供了可以如何基于使用情况或者使用情况的改变来动态地改变缓冲器的说明性示例。如将理解的,不同的使用情况可以导致不同于图6中所示的缓冲器大小设定。另外,在一些实施例中,用于两个不同组件的缓冲器的相同状态或活动级别的指定(诸如针对用于存储器控制器3078的fifo250j和用于gpu282的fifo250e的f0)可以并不指示缓冲器大小设定相同。换句话说,存储器控制器308的缓冲器(fifo250j)的状态f0可以对应于一个缓冲器大小或深度,而gpu282的缓冲器(fifo250e)的状态f0可以对应于一不同的大小或深度。

参考图7a,示出了具有第一大小或深度的示例性fifo700a的各方面的方框图。fifo700a可以是诸如上面讨论的fifo250a-250j的缓冲器。在图7a的示例中,fifo700a处于最满/最大大小或缓冲器深度,并且由多个寄存器或存储器地址(本文称为部分702a-702f)组成。如图7a所示,fifo700a具有写入侧704和读取侧706,写入侧704中可以放置要缓冲的数据,耦合到fifo770a的组件可以从读取侧706读取被缓冲的数据。另外,存在反映“中”fifo770a的中点708-即如下位置:在中点708一侧的部分702a-702c的数量等于在中点708另一侧的部分702d-702f的数量。

图7b示出了在已经被减小到第二大小或深度(fifo700b)之后的图7b的fifo700a。如图7b所示,根据本文公开的系统和方法来减小缓冲器的大小或深度的一种机制是:进行等待直到写指针710和读指针712两者都在中点708的同一侧,并且随后关闭在中点708另一侧上的一个或多个部分702d-702e或者对其进行电源门控。

在图7b的示例中,通过进行等待直到写指针710和读指针712位于中点708的左侧或读取侧706,来实现缓冲器大小或深度50%减小。然后可以操作单个电源开关以关闭部分702d-702f(即,fifo700b的右半部分)以将fifo770b减少到图7a的fifo770a的大小或深度的一半,如部分702d-702f上的阴影所示。如将理解的,可以使用类似的机制来实现期望的缓冲器大小或深度的任何减小(例如25%、50%、75%、85%等)。还将理解的是,在稍后的时间点,可以通过电源开关操作以重新开启部分702d-702f而使fifo770b返回到较大的大小。

在其他实施方式中,通过实现额外的电源开关或电源门控,相同的fifo700b也可以被减小到不同的大小或深度。例如,用于关闭第一部分702f的第一电源开关可以导致fifo700b的缓冲器大小或深度减小25%。同样用于关闭第二部分702e的第二电源开关可以导致fifo700b的缓冲器大小或深度减小50%。在稍后的时间点,可以通过电源开关操作以重新开启部分702d-702f中的一个或多个而使fifo770b返回到较大的大小,以将fifo770b放大到期望的大小或深度。

在一些实施例中,可能期望提供多个电源开关以允许特定fifo700b的缓冲器大小或深度的可变减小。在其它实施例中,可能不能保证可变地控制特定fifo700b的缓冲器大小或深度所需的每个电源开关和/或控制电路的附加成本、功率等。在这样的实施例中,可能更期望用于允许单个大小减小(诸如,减小例如50%)的单个电源开关。至于是否期望缓冲器大小或深度的这种可变控制,则可以取决于各种因素,包括将使用缓冲器的soc102的组件,减小特定缓冲器的大小所得到的预期功率节省,等等。图7a-7b示出了用于动态地调整缓冲器大小的一种机制。

图8是示出用于计算设备中的动态地控制缓冲器大小的示例性方法800的操作的逻辑流程图。方法800在块802中开始,确定计算设备(例如pcd100)的第一使用情况。第一使用情况可以是多个使用情况中的一个。在一些实施例中,该多个使用情况可以是预定义和设置的,而在其他实施例中,该多个使用情况可以随时间变化或被改变。块802的确定可以是对于针对pcd100当前被怎样操作而言适用的特定使用情况的识别。在一些实施例中,如果pcd100的当前操作不匹配其他预定义使用情况,则块802的确定可以是默认使用情况。

在一个实施例(参见图3)中,块802中的对第一使用情况的确定可以由监控模块114做出,并且这种实施例中的监控模块114可以从各个组件接收或获得信息以确定或了解针对pcd100当前被怎样使用而言哪些使用情况适用。这种接收到的信息可以包括pcd100或soc102中的一个或多个组件(例如图2和/或图3的gpu282、相机248、调制解调器260、视频编码器232等)的当前活动级别。

块802中的确定可以额外地或可替换地基于关于由pcd100正在执行或者将要由pcd100执行的应用程序或程序的知识或信息。这样的知识或信息可以是直接的(诸如了解在soc102上正在执行哪些应用、指令或代码的软件)或者可以被推断(诸如基于用户输入)。块802中的确定还可以额外地或可替换地基于触发事件,诸如pcd100或soc102从断电状态重新启动。

方法800继续到块804,在块804,获得针对第一使用情况的缓冲器大小或深度信息。缓冲器可以是以上针对图4a-4b和图6所讨论的fifo250a-250j。取决于在块802中确定的使用情况,可以预期soc102的各个组件有着或多或少的活动程度。在块804中,针对第一使用情况获得或确定用于与soc102的各个组件相关联的每个fifo250a-250j的缓冲器大小或深度的值。

在一些实施例中,在块804中获得缓冲器大小信息可以包括:从一个或多个表中读取缓冲器大小信息。例如,可以从诸如图5a的状态表500a的表中,针对所确定的使用情况获得一个或多个组件的预期状态或活动级别。如上所述,与单个表500a不同,在一些实施方式中,可以针对soc102的每个组件保存不同的状态表(未示出)。另外或可替换地,可以从诸如图5b的lut500b的表中获得用于一个或多个缓冲器(在一个实施例中每个缓冲器与一个组件相关联)的大小减小值。如将理解的,可以实现除表格以外的用于获得针对第一使用情况的缓冲器大小或深度信息的其他方式。另外,在一些实施例中,块804可以不是单独的步骤,而是可以是块802的确定的一部分。

方法800继续到块806,在块806,基于所确定的第一使用情况和所获得的缓冲器大小信息,为与计算设备的一个或多个组件相关联的缓冲器设置第一缓冲器大小。缓冲器可以是以上针对图4a-4b和图6所讨论的fifo250a-250j。取决于在块802中确定的使用情况,可以预期soc102的各个组件有着或多或少的活动程度。在块806中,根据所确定的使用情况和所获得的缓冲器大小信息,按照需要来调整与soc102的各个组件相关联的每个fifo250a-250j的缓冲器大小或深度。

在一个实施例中,这可以包括:减少用于预期活动程度较低或不活动的组件的缓冲器大小或深度,和/或增加用于预期活动程度更高的组件的缓冲器大小或深度。如上所述,缓冲器大小或深度增加或减小的量可以因组件和/或使用情况而异。可以通过任何期望的机制来实现缓冲器大小调整,例如以上针对图7a-7b所讨论的机制。此外,可以实现这样的缓冲器大小调整,作为pcd100或soc102正在实施的任何其他功率减轻或控制策略的补充或者替代。

在块808中,为计算设备确定与第一使用情况不同的第二使用情况。响应于改变pcd100的组件中的状况和/或pcd100正在被怎样使用的改变,可以以与上面针对块802所讨论的确定相同的方式来做出块808的确定。举例来说,pcd100可以从“游戏”使用情况改变为“通信”使用情况,例如当用户停止在pcd100上玩游戏以在pcd100上发起或接收电话呼叫时。在块808中,诸如通过监控模块114来检测或确定pcd100的使用情况的这种改变和/或操作改变。如上所述,监控模块114可以用软件来实现。

块808中的确定可以基于来自各种组件的信息来做出,以确定或了解pcd100的使用/状态已改变,并确定针对pcd100当前正在被怎样使用而言哪个使用情况适用。这种接收到的信息可以包括pcd100或soc102中的一个或多个组件(例如图2和/或图3的gpu282、相机248、调制解调器260、视频编码器232等)的当前活动级别。块808中的确定可以额外地或可替换地基于关于pcd100正在执行的应用程序或程序、已经停止在pcd100上执行的应用程序或程序、和/或将要由pcd100执行的应用程序或程序的知识或信息。这样的知识或信息可以是直接的(诸如了解在soc102上正在执行哪些应用程序、指令或代码的软件)或者可以被推断(诸如基于用户输入)。

块808中的确定还可以额外地或可替换地基于触发事件,诸如pcd100或soc102从先前的断电状态重新启动。如同以上块802,块808的确定可以是对与第一使用情况不同的、针对pcd100当前被怎样操作的特定第二使用情况的识别。在一些实施例中,在pcd100的当前操作不匹配其他预定义使用情况的情况下,块806的确定可以是默认使用情况。

方法800继续到块810,其中,获得针对第二使用情况的缓冲器大小或深度信息。缓冲器可以是以上针对图4a-4b和图6所讨论的fifo250a-250j。取决于块808中确定的第二使用情况,可以预期soc102的各个组件与其针对第一使用情况的活动程度相比有着更高或更低的活动程度。在块810中,针对第二使用情况获得或确定用于与soc102的各个组件相关联的每个fifo250a-250j的缓冲器大小或深度的新值。预期的是,对于一个或多个缓冲器,缓冲器大小或深度的这些新的第二值可以不同于针对第一使用情况获得或设置的缓冲器大小或深度的第一值。

在一些实施例中,在块810中获得新的或第二缓冲器大小信息可以包括:从诸如图5a的状态表500a和/或图5b的lut500的一个或多个表中读取缓冲器大小信息,如针对块804所讨论的。如将理解的,可以实现除表格以外获得针对第二使用情况的缓冲器大小或深度信息的其他方式。另外,在一些实施例中,块810可以不是单独的步骤,而可以是块808的确定的一部分。

在块812中,基于所确定的第二使用情况和针对第二使用情况所获得的缓冲器大小信息,为与计算设备的一个或多个组件相关联的缓冲器设置第二缓冲器大小。缓冲器可以同样是以上针对图4a-4b和图6讨论的fifo250a-250j。取决于在块808中确定的使用情况,可以预期soc102的各个组件可以有着或多或少的活动程度。在块812中,根据所确定的第二使用情况,按照需要来调整与soc102的各个组件相关联的每个fifo250a-250j的缓冲器大小或深度。

在一个实施例中,这可以包括:在第二使用情况下减少用于预期活动程度较低或不活动的组件的缓冲器大小或深度,和/或增加用于预期活动程度更高的组件的缓冲器大小或深度。如上所述,缓冲器大小或深度增加或减小的量可以因组件和/或使用情况而异。此外,可以实现这样的缓冲器大小调整,作为pcd100或soc102正在实施的任何其他功率减轻或控制策略的补充或者替代。

方法800继续到可选块814,在块814,可在需要时更新用于计算设备的一个或多个组件的使用情况数据或信息。对于多个使用情况可能随时间改变的实施例,这些改变可以被追踪(例如通过监控模块114),并且可以在块814中时常进行。对使用情况信息的改变可以源自于在pcd100的操作期间随时间收集的关于pcd100被怎样使用的数据。块814中对使用情况信息的这种改变可以包括:删除使用情况、添加新的使用情况、改变针对某个使用情况的一个或多个组件的活动级别、改变一个或多个组件的特定活动级别的缓冲器大小或深度,或其任何组合。

对于多个使用情况是预先确定的并且可能不会改变的实施例,可以不执行或者可以仅部分地执行块814。例如,在一些实施例中,可以不添加或删除使用情况,但可以更新针对活动级别的活动级别值和/或缓冲器大小信息。方法800然后继续进行到监视pcd100和/或soc102的组件的状态以确定使用情况的任何未来的或进一步的改变。在这样的未来改变的情况下,如上所述,块808、810、812和/或814可以针对第三使用情况、第四使用情况等重新迭代。

图8仅描述了用于在诸如pcd100的计算设备中的动态缓冲器大小调整的方法800的一个示例性实施例。在其他实施例中,可以向方法800添加额外的块或步骤。类似地,在一些实施例中,可以组合或省略图8中所示的各个块或步骤,诸如例如将块802和804组合成一个预测/获得块或步骤,而不是图8中所示的两个单独的块。可替换地,可以将块804和806组合成一个获得/设置缓冲器大小块或步骤,而不是图8中所示的两个单独的块。方法800的这种变化在本公开内容的范围内。

另外,本说明书中描述的过程或过程流程中的某些步骤自然先于其他过程或过程流程,以使本发明如所描述的那样起作用。然而,如果这样的顺序或次序不改变功能,则本公开内容不限于所描述的步骤的顺序。此外,应认识到,在不脱离本公开内容的范围的情况下,一些步骤可以在其他步骤之前、之后或与之并行(基本上同时)执行。在一些情况下,在不脱离本公开内容的范围的情况下可以省略或不执行特定步骤。此外,诸如“此后”、“然后”、“下一个”、“随后”等的词语并不旨在限制这些步骤的顺序。这些词语仅用于指导读者阅读对示例性方法800的描述。

上面描述的各种操作和/或方法可以由各种硬件和/或软件组件和/或模块执行,并且这种组件和/或模块可以提供用于执行这样的操作和/或方法的单元。另外,例如,基于本说明书中的流程图和相关描述,编程的普通技术人员能够毫无困难地编写计算机代码或识别适当的硬件和/或电路以实现所公开的方法或系统。

因此,对于如何做出和使用所公开的系统或方法的充分理解而言,认为不需要公开特定的程序代码指令集合或详细的硬件设备。在上面的描述中并结合可以示出各种过程流程的附图,更详细地解释了要求保护的启用处理器的过程的创新功能。

在如上所指示的一个或多个示范性方面中,所描述的功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则可以将功能可以作为一个或多个指令或代码在计算机可读介质(例如非暂时性处理器可读介质)上进行存储或传送。计算机可读介质包括数据储存介质和通信介质,包括任何便于将程序从一个地方转移到另一个地方的介质。

储存介质可以是计算机或处理器能够访问的任何可用介质。示例性而非限制性地,这样的计算机可读介质可以包括ram、rom、eeprom、cd-rom或其它光盘储存设备、磁盘储存设备或其它磁储存设备或者能够用于以指令或数据结构的形式携带或存储所需程序代码并且能够被计算机访问的任何其它介质。本文所使用的磁盘和光盘包括紧致光盘(“cd”)、激光盘、光盘、数字多功能光盘(“dvd”)、软盘和蓝光盘,其中磁盘通常磁性地再现数据,而光盘通常利用激光光学地再现数据。上述的组合也包括在非暂时性计算机可读介质的范围内。

尽管已经详细说明和描述了选定的方面,但应理解的是,在不脱离由所附权利要求限定的本公开内容的范围的情况下,可以在此进行各种替换和更改。

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