用于使用前馈压缩统计来控制存储器频率的系统和方法与流程

文档序号:14394589阅读:253来源:国知局

相关申请的交叉引用

本申请根据35u.s.c.§119(e)要求享有于2015年9月18日提交的题为“systemandmethodforcontrollingmemoryfrequencyusingfeed-forwardcompressionstatistics”的序列号为62/220,451的美国非临时专利申请的优先权。其全部内容特此通过引用并入。



背景技术:

便携式计算设备(例如,蜂窝电话、智能电话、平板电脑、便携式数字助理(pda)、便携式游戏控制台、可穿戴设备以及其它电池供电设备)和其它计算设备继续提供一连串不断扩大的功能和服务,并为用户提供前所未有的对信息、资源和通信的访问级别。为了跟上这些服务增强的步伐,这些设备变得越来越强大和复杂。便携式计算设备现在通常包括片上系统(soc),其包括嵌入在单个基板(例如,一个或多个中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器等)上的一个或多个芯片组件。soc可以通过双倍数据速率(ddr)高性能数据和控制接口耦合到一个或多个易失性存储器模块或设备,例如动态随机存取存储器(dram)。

存储器、存储器总线和系统互连功率可以是系统功耗的重要来源。如本领域所知,存储器、存储器总线和系统互连功率是工作频率的函数。频率越高,功耗越大。存储器、存储器总线和片上互连的频率是系统中每个存储器客户端所需的带宽的函数。

在当前的soc系统中,存储器、存储器总线和系统互连的工作频率通常根据基于针对每个使用情况的所需带宽的使用情况来设置。所需带宽确定了用于soc、易失性存储器和相关联的总线的频率和soc电压转角。用于提供所需带宽的频率和/或电压设置转换为存储器和soc功率成本。在现有系统中,硬件和/或软件被用于基于使用情况动态地改变所需的频率和电压。

根据使用情况,典型地使用两种方法来设置存储器带宽投票(vote)。然而,每种方法在节约存储器和soc功率或者保持期望的性能之间存在权衡限制。在第一种方法中,存储器带宽投票是基于已知的最差情况(最高)所需带宽的,这可能无法获得频率节省和/或电压节省的益处。在第二种方法中,存储器带宽投票是基于估计的典型(或平均)带宽的。如果估计的带宽过于乐观,则实际带宽可能超过系统带宽,导致性能下降。如果估计的带宽过于悲观,则系统可能无法获得电压节省的益处。

因此,需要用于以改进的功率和性能来控制存储器、存储器总线和/或系统互连频率的系统和方法。



技术实现要素:

公开了用于控制存储器、存储器总线和系统互连频率中的一个或多个的系统、方法和计算机程序。一种方法的一个实施例包括第一存储器客户端产生压缩数据缓冲区和与所述压缩数据缓冲区相关的压缩统计。压缩数据缓冲区和所述压缩统计被存储在存储器设备中。基于所存储的压缩统计,调整存储器设备、存储器总线和系统互连中的一个的频率或电压设置,以使得第二存储器客户端能够读取所述压缩数据缓冲区。

另一个实施例是包括第一存储器客户端、第二存储器客户端和存储器设备的系统。所述第一存储器客户端被配置为产生压缩数据缓冲区和与所述压缩数据缓冲区相关的压缩统计。所述存储器设备存储所述压缩数据缓冲区和所述压缩统计。所述第二存储器客户端被配置为使用所述压缩统计以针对存储器带宽准确地进行投票以消耗所述压缩数据缓冲区。

附图说明

在附图中,除非另有说明,否则相同的附图标记贯穿各个视图指代相同的部分。对于具有诸如“102a”或“102b”等字母符号命名的附图标记,字母符号命名可以区分出现在同一附图中的两个相似部分或元件。当附图标记旨在涵盖在所有附图中具有相同附图标记的所有部分时,可以省略附图标记的字母字符命名。

图1是用于使用前馈压缩统计来控制易失性存储器设备的频率的系统的实施例的框图。

图2是示出在图1的系统中实现的方法的实施例的流程图。

图3是示出用于使用前馈压缩统计来控制dram的频率的系统的另一实施例的组合框图/流程图。

图4示出了图1的系统的示例性实现方案,其中,生产方存储器客户端包括成像前端并且消费方存储器客户端包括视频编码器。

图5是示出由生产方存储器客户端实现的带宽压缩算法的实施例的组合框图/流程图。

图6示出了图5的带宽压缩算法的另一个实施例,其包含了多个压缩大小计数器。

图7是示出用于使得非实时消费方存储器客户端能够使用前馈压缩比率来针对存储器带宽准确地进行投票的方法的实施例的组合框图/流程图。

图8示出了在图7的系统中实现的方法的实施例,该方法用于使用前馈压缩比率来针对存储器带宽准确地进行投票。

图9示出了在图7的系统中实现的方法的另一个实施例,该方法用于使用输入前馈压缩统计和对输出压缩比率的自适应估计来针对存储器带宽准确地进行投票。

图10示出了由非实时生产方存储器客户端产生的帧输出缓冲区的预期完成时间与真实完成时间。

图11示出了在图7的系统中实现的方法的另一个实施例,该方法用于使用如在图10中所示的帧输出缓冲区完成时间来针对存储器带宽准确地进行投票。

图12示出了动态存储器带宽表决方法的一个实施例,该方法使用针对输入帧的前馈压缩统计和针对输出帧的完成时间数据。

图13是示出用于使得实时消费方存储器客户端能够使用输入帧前馈压缩统计来针对存储器带宽准确地进行投票的方法的实施例的组合框图/流程图。

图14示出了具有用于使得实时消费方存储器客户端能够计算压缩比率的移动窗口的示例性压缩图像缓冲区。

图15是用于并入图1-14的系统和方法的便携式通信设备的示例性实施例的框图。

具体实施方式

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

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

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

如在本说明书中所使用地,术语“组件”、“数据库”、“模块”、“系统”等旨在指代与计算机相关的实体,即,硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是在处理器上运行的过程、处理器、对象、可执行文件、执行中的线程、程序和/或计算机。作为说明,在计算设备上运行的应用和计算设备都可以是组件。一个或多个组件可以驻留在过程和/或执行中的线程内,并且组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。另外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质执行。这些组件可以通过本地过程和/或远程过程(例如根据具有一个或多个数据分组的信号)进行通信(例如,来自在本地系统、分布式系统中、和/或跨诸如与其它系统的互联网的网络,通过信号的方式与另一组件进行交互的一个组件的数据)。

图1示出了用于使用前馈压缩或大小统计来控制存储器、存储器总线和/或片上互连频率的系统100的示例性实施例。系统100可以并入各种类型的计算设备(例如,服务器、台式或膝上型个人计算机、平板电脑、智能电话、便携式游戏控制台等)以及其它电子组件、封装和设备中。系统100包括一个或多个处理器,该一个或多个处理器从可以驻留在soc之内或之外的易失性或非易失性存储器(例如,动态随机存取存储器(dram)102)请求存储器资源(例如,读取操作和写入操作)。存储器客户端可以包括一个或多个处理核或单元(例如,中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、视频处理器、调制解调器处理器、显示器处理器等)或者请求对dram102的读取/写入访问的任何其它客户端。存储器客户端可以包括实时客户端(例如,被用于显示器、相机等)或非实时客户端(例如,被用于视频编码、图像后处理等)。存储器客户端可能具有对于每任务的固定带宽和/或每任务的可变带宽的需求。

通常,系统100利用由客户端(原生地或由于压缩)对可变存储器带宽需要的使用,以减少进行存储器客户端带宽投票,并因此减小存储器频率并潜在地减小工作电压,这可以有利地降低功耗而不影响性能。如图1所示,存储器客户端可以包括一个或多个生产方存储器客户端108和消费方存储器客户端110。存储器客户端108和110可以电耦合到系统互连106。系统互连106可以电耦合到dram控制器104,dram控制器104既而经由系统互连106和存储器总线电耦合到dram102。系统100还包括:时钟和电压管理基础设施124,其控制与dram102、dram控制器104和系统互连106的操作相关联的一个或多个时钟发生器。

生产方存储器客户端108使用一个或多个压缩算法来创建存储在dram102中的压缩缓冲区。在一个实施例中,压缩算法提供无损压缩或有损压缩以使原始数据能够从压缩数据重建。无损压缩方法的示例性实施例包括便携式网络图形(png)、自由无损音频编解码器(flac)、h264无损。提供可变压缩比率的有损压缩方法的示例性实施例包括h264(有损)、jpeg和mp3。

压缩缓冲区包括压缩缓冲区数据112、压缩缓冲区元数据114和前馈压缩统计116。压缩缓冲区数据112存储压缩数据,该压缩数据可以包括逻辑上被分成多个压缩单元的多个图像帧或缓冲区。压缩单元可以具有固定数量的字节(例如,128个字节)。硬件和/或软件压缩器块对图像帧中的每个单元进行压缩并产生压缩帧。在无损压缩中,可以将每个压缩单元压缩成可能的最小尺寸而不损失特征(即,可以稍后被解压缩以生成与未压缩单元相同的数据)。在有损压缩中,每个压缩单元可以被压缩成固定大小或者使得特征损失最小化的大小。在一个实施例中,图像帧中的每个压缩单元可以具有固定大小,即,k个字节。在压缩之后,每个单元的大小可以根据压缩等级(即,压缩比率)而变化。具有k个字节的压缩单元可以指示无法进行任何压缩,在这种情况下,压缩单元和未压缩单元是相同的。例如,具有(k-1)、(k-2)或(k-n)个字节的压缩单元可以指示压缩的增加等级。

如在图1中进一步所示,与生产方存储器客户端108相关联的压缩器块还产生伴随缓冲区(即,压缩缓冲区元数据114)。压缩缓冲区元数据114包括用于标识每个压缩单元的压缩后大小以及类型和/或属性的数据。前馈压缩统计116包括与例如与图像帧相关联的压缩比率和/或每个图像帧中的压缩单元相关的数据。如下面更详细地描述地,前馈压缩统计116可以由生产方存储器客户端108生成并且然后被存储在dram102中。在替代的实施例中,生产方存储器客户端的软件驱动器118或者消费方存储器客户端驱动器120的软件驱动器可以通过访问和处理压缩缓冲区元数据114来产生前馈压缩统计116。

图1的示例性实施例表示了嵌入如在生产方存储器客户端108内的压缩器块。在另一个实施例中,压缩器单元可以嵌入在系统互连106或dram控制器104内。在又一个实施例中,嵌入在互连器106或者dram控制器104中的压缩器块可以在多个生产方存储器客户端108之间被共享,其中压缩器块被分配成以时分复用方式使用每个生产方存储器客户端108。

消费方存储器客户端110可以使用前馈压缩统计116以针对为耗用来自dram102的对应的压缩缓冲区所需的存储器带宽准确地进行投票。存储器带宽投票可以被提供给时钟和电压管理基础设施124。以这种方式,dram102、dram控制器104和/或系统互连106的频率设置可以基于前馈压缩统计116来调整。较准确且可能较低的带宽投票可以致使降低dram和/或互连功耗。此外,dram102、dram控制器104和/或系统互连106的频率的降低可以允许这些组件的工作电压的降低,这可以通过降低整体泄漏电流来进一步降低系统的总体功耗。应该认识到,基于前馈压缩统计116的带宽投票可以使用软件和/或硬件来实现。在软件实施例中,生产方存储器客户端108、消费方存储器客户端110以及时钟和电压管理基础设施124可以分别具有对应的软件驱动器118、120和122。

图2是示出在图1的系统中实现的方法的实施例的流程图,该方法用于使用前馈压缩统计116来控制dram102、dram控制器104和/或系统互连106的频率。在框202处,第一存储器客户端(例如,生产方存储器客户端108)接收未压缩源数据。带宽压缩算法对源数据进行压缩并产生压缩缓冲区数据112、压缩缓冲区元数据114和相关的前馈压缩统计116。在框204处,压缩缓冲区数据112、压缩缓冲区元数据114和前馈压缩统计116被存储在dram102中。在框206处,第二存储器客户端(例如,消费方存储器客户端110)通过读取前馈压缩统计116来发起从dram102对压缩缓冲区的读取。在框208处,dram102、dram控制器104和/或系统互连106的频率设置和电压电平可以基于前馈压缩统计116来调整。在框208处,第二存储器客户端使用所调整的频率设置来读取压缩缓冲区数据112。

图3示出了在系统100中实现的用于使用前馈压缩统计116来控制dram102、dram控制器104和/或系统互连106的频率和电压的方法的另一实施例。生产方存储器客户端108在步骤302处接收源数据300。源数据300可以由生产方存储器客户端108产生或者从外部源接收或者从dram102读取。在步骤304处,生产方存储器客户端108压缩源数据300,产生压缩缓冲区,并且在dram102中存储压缩缓冲区数据112。在步骤306处,压缩缓冲区元数据114被产生并被存储在dram102中。在步骤308处,前馈压缩统计116被产生并被存储在dram102中。应该理解,步骤304、306和308可以同时发生或顺序发生。在步骤310处,生产方存储器客户端108可以在生成的帧准备好时指令生产方驱动器118。在步骤312处,生产方驱动器118可以在压缩帧准备好供消费方存储器客户端110耗用时指令消费方驱动器120。在步骤314处,生产方驱动器118可以向时钟管理驱动器提供存储器带宽投票122,该投票表示生产方存储器客户端108的未来带宽耗用预期。

响应于步骤312,消费方驱动器120可以指令消费方存储器客户端110读取压缩帧(步骤324)。消费方存储器客户端110可以访问压缩缓冲区元数据114和前馈压缩统计116(步骤318和320)。根据前馈压缩统计116,消费方驱动器120可以产生准确的带宽投票并将其提交给时钟管理驱动器122(步骤326)。时钟管理驱动器122可以聚合来自多个源的带宽投票并且将聚合的带宽投票转换为对应的频率设置。可以将频率设置提交给时钟和电压管理基础设施124(步骤328)。在步骤330、332和334处,时钟和电压管理基础设施124可以以所调整的频率设置来控制一个或多个时钟发生器。时钟和电压管理基础设施124还可以控制电压设置以匹配所需的频率设置。在步骤316处,消费方存储器客户端110从dram102读取压缩缓冲区数据112。

图4示出了系统400的示例性实现方案,其中,生产方存储器客户端108包括成像前端404,且消费方存储器客户端110包括视频编码器406。在操作中,智能电话的用户可以决定录制视频并启动视频录制应用。系统400可以为dram102、dram控制器104和/或系统互连106设置初始带宽投票。这可以基于例如针对系统400内的需要访问dram102的块的给定图像分辨率所预期的最差情况带宽或典型带宽。初始带宽投票可以将系统400设置到为满足典型dram带宽要求或最差情况的dram带宽要求所预定的电压/频率拐角(corner)。用户可以经由视频录制应用来发起录制视频。图像传感器402可以将图像数据410提供给成像前端404。

带宽压缩算法408压缩从图像传感器402捕获的图像数据410,并将压缩像素数据412写入dram102。当压缩像素数据412被写入到dram102以供视频编码器406耗用时,写入的数据的量可以针对每个帧被记录。被捕获的图像的内容连同配置数据(例如,跳帧、压缩统计)确定写入到dram102的字节的数量。

图5是示出由生产方存储器客户端108实现的带宽压缩算法408的实施例的组合框/流程图。未压缩图像缓冲区702作为输入被带宽压缩算法408接收。如上所述,未压缩图像缓冲区702可以包括多个固定大小的单元(在未压缩图像缓冲区702中示为深灰色单元)。带宽压缩算法408产生压缩图像缓冲区704。基于未压缩数据的性质和压缩算法,来自未压缩图像缓冲区702的固定大小的单元可以被压缩成压缩图像缓冲区702中的可变大小的压缩单元。图例708示出了四个不同压缩比率的例子。在其它实施例中,压缩比率的数量可以多于或少于示例性的4个等级。具有压缩比率1的压缩单元被示出为白色单元并且具有最高的压缩比率。具有压缩比率2的压缩单元被示出为浅灰色单元并且具有第二高压缩比率。具有压缩比率3的压缩单元被示出为杂凑单元并具有最低的压缩比率。压缩比率4对应于未压缩单元(如深灰色格所示)。

如在图5中进一步所示,带宽压缩算法408还产生压缩缓冲区元数据706。在一个实施例中,压缩缓冲区元数据706包括用于标识每个压缩单元(例如,单元#1、单元#2、单元n)以及对应的大小、压缩类型、压缩属性等的数据。如图6所示,带宽压缩算法408可以包括多个压缩大小计数器802,用于确定以预定的压缩大小压缩了多少个压缩单元。计数器#1记录以第一压缩大小(k/4个字节)压缩了多少压缩单元。计数器#2记录以第二压缩大小(k/2个字节)压缩了多少个压缩单元。计数器#3记录以第三压缩大小(3k/4个字节)压缩了多少个压缩单元。计数器#4记录以第四压缩大小(k个字节)压缩了多少个单元或有多少单元根本不被压缩。针对给定帧的计数器802的内容表示该帧的前馈统计116。压缩缓冲区元数据706可以用作用于产生馈通压缩统计116的输入。在其它实施例中,压缩缓冲区元数据706可以由消费方存储器客户端110使用以产生馈通压缩统计116。

应该理解,上述系统、方法、投票算法和带宽压缩算法可以与实时和/或非实时存储器客户端一起使用。某些存储器客户端可以生成并耗用压缩缓冲区。在一个实施例中,实时核可以在可能的情况下动态地对较低的存储器带宽进行投票而不失败。非实时核可以部署使用了每帧度量(例如,前馈压缩比率、完成时间、复杂度、测量压缩比率、缓冲帧的#等)的自适应投票方案,以动态地调整带宽投票到可行的最低值,同时满足关键性能指标。

为了驱动这些和其它算法,生成了压缩帧的存储器客户端可以创建前馈压缩统计,如上所述。在一个实施例中,前馈压缩统计116包括表明生成的每个帧或缓冲区之压缩比率的每帧数据。统计可以作为n个计数器(图6)被收集,每个计数器表示帧中被压缩到预定大小的压缩单元的数量。可以确定n个计数器,其中n=未压缩单元的大小/dram最小访问块大小(mabs)。计数器#1可以计算被压缩成大小小于或等于1mabs的单元的数量。计数器#2可以计算被压缩成大小>1*mabs但<=2*abs的单元的数量。计数器#3可以计算被压缩成大小>2*mabs但<=3*mabs的单元的数量。计数器#n可以计算被压缩成大小>(n-1)*mabs但<=n*mabs的单元的数量。例如,如果单元大小是128个字节并且drammabs=32个字节,则系统可以包括4个计数器(n=4)。在n=4的情况下,计数器1、2、3和4可以分别具有<32个字节、33-64个字节、65-96个字节和97-128个字节的大小范围。如果生产方存储器客户端108不能够生成n个计数,则另一实现方案可以包括:软件组件,被配置为解析压缩缓冲区元数据114并且创建计数器#1到#n,如上所述地。

下面参照图7-13描述投票算法的各种实施例。图7是示出用于使得非实时消费方存储器客户端904能够使用前馈压缩比率针对存储器带宽准确地进行投票的系统900的实施例的组合框/流程图。如图7所示,生产方存储器客户端902可以是实时和/或非实时客户端。在一些实施例中,非实时消费方是可能没有针对完成其任务的严格截止期限的客户端。在其它实施例中,非实时消费方是这样的消费方:该消费方具有其试图满足的一系列连续的截止期限,且具有关于只要其能够加速并满足稍后的截止期限就不满足早期截止期限的灵活性。这种非实时客户端的一个例子是视频解码器,其具有对于错过针对解码一个或两个连续帧的截止期限的灵活性,但是如果这样做,可能能够加速其操作以满足针对将来帧的截止期限。如果这样的视频解码器不能加速以满足针对将来帧的截止期限,则其可能不得不最终丢弃一系列帧,这在视频呈现中会引起用户可察觉的毛刺(glitch)。

每个生产方存储器客户端902可以为每个创建的输入帧906生成压缩帧前馈压缩统计908和压缩缓冲区元数据910。非实时消费方存储器客户端904可以耗用压缩帧前馈压缩统计908、输入帧906和压缩缓冲区元数据910,以及生成输出帧前馈压缩统计914、输出帧912和压缩缓冲区元数据916。以这种方式,非实时消费方存储器客户端904使用输入帧906的在先已知的压缩帧统计以动态地针对所需带宽进行投票。

图8示出了在系统900中实现的用于使用前馈压缩比率来针对存储器带宽准确地进行投票的方法1000的实施例。方法1000在框1002处开始于:非实时(nrt)客户端针对用于其全部输入帧和输出帧的理论上最差情况(或实际最差情况)带宽进行投票,因为其可能事先不知道输入帧的前馈压缩统计。在框1006中,nrt客户端接收指向下一输入帧的指针以及前馈压缩统计。在框1004中,nrt客户端等待消费方硬件准备好处理下一帧或操作。在框1010中,nrt客户端硬件被编程用于处理下一组输入帧。在框1008中,使用每个输入帧的输入前馈统计908和针对输出帧的压缩比率的固定假设,来计算用于处理下一组输入帧的带宽需求。由于输出帧的压缩比率不是事先已知的,所以对于这些输出帧的压缩比率的谨慎的固定假设会是理论上最差情况(或实际最差情况)压缩比率。这会导致由于输出帧的带宽投票高于通常所需的带宽投票,因为输出压缩帧的压缩比率通常高于理论或实际最差情况的压缩比率。然而,这保证nrt客户端904在任何情况下都将不针对比其真实耗用的带宽少的带宽进行投票。此谨慎决定的缺点在于:频率降低可能不像倘若在框1008中考虑输入帧的真实压缩比率所达到的频率降低那样低。在框1012中,nrt客户端904对所计算的带宽进行投票。在框1014中,开始对下一组输入帧的处理。方法1000然后返回到框1004,在那里,其等待当前处理步骤的完成以及指向将来输入帧和相关联的前馈统计的指针的到达。

为了解决针对输出帧的带宽的保守投票,图9示出了在系统900中实现的用于使用输入前馈压缩统计和对输出压缩比率的自适应估计来针对存储器带宽准确地进行投票的方法1100的另一个实施例。方法1100在框1102处开始于:非实时(nrt)客户端针对用于其全部输入帧和输出帧的理论最差情况(或实际最差情况)带宽进行投票,这是因为其不具有关于输入帧的前馈压缩统计的在先知识。在框1106中,nrt客户端接收指向下一输入帧的指针以及前馈压缩统计。在框1104中,nrt客户端等待消费方硬件准备好处理下一帧或操作。在框1110中,nrt客户端硬件被编程用于处理下一组输入帧。在框1108中,使用每个输入帧的输入前馈统计908和针对将来输出帧之压缩比率的估计,来计算针对处理下一组输入帧的带宽要求。通过框1112和1114中所示的功能来达到针对输出帧压缩比率的估计。在框1112中,在完成每个输出帧时,读取针对所述输出帧达成的压缩比率。应该理解,该压缩比率可以存在于计数器802中,或者可以根据前馈压缩统计914来获得。在框1114中,通过计算包含上n个输出帧的滑动窗口的平均压缩比率,来计算针对将来输出帧之压缩比率的新估计值。在框1116中,nrt客户端904针对所计算的带宽进行投票。在框1118中,开始对下一组输入帧的处理。然后方法1100返回到框1104,在那里其等待当前处理步骤的完成以及指向将来输入帧的指针和相关的前馈统计的到达。

使用过去的带宽以预测输出帧的将来压缩比率的缺点在于:没有显式的闭环机制来确保非实时客户端904将能够在将来的帧中恢复,如果其低估了输出帧的带宽的话。图10示出了用于设置由非实时生产方存储器客户端生成的输出帧的带宽投票的替代方法。图10中的时间线1200表明针对完成八(8)个连续帧的目标时间线。预期每帧将在长度为a的持续时间内处理。因此,第一帧的完成的截止期限为a,第二帧的截止期限为2a,依此类推。时间线1202表明了每个连续帧的真实完成时间。

如图10所示,该方法在框1204处始于:非实时(nrt)客户端使用针对输入帧的输入前馈压缩统计908和用于其输出帧的理论最差情况(或实际最差情况)带宽进行投票,因为其没有关于输出帧的压缩统计的在先知识。在完成对帧#1的处理之后,消费方从累积性截止期限a中减去累计的真实完成时间c1以获得error数值(figure)。在将来处理中针对输出帧的投票是基于这个error数值来确定的。如果error在预定的裕度内(negative_margin<error<positive_margin),则针对输出帧的先前投票不被改变。这在框1206中示出。在每个处理步骤结束时重复在真实完成时间和累积性截止期限之间的比较。在框1208中,该方法确定error小于negative_margin,并且对于下一处理步骤降低针对输出帧的投票。针对输出帧带宽的经估计的投票在t=c3时进一步被降低,这是因为error仍小于negative_margin。在框1210中,error现在在预定的裕度内(negative_margin<error<positive_margin),因此投票不被改变。在框1212中,累计的完成时间c5大于截止期限5a,并且error大于positive_margin。这导致针对输出帧的带宽投票增加。类似的情况发生在完成时间c6处,其中由于error大于positive_margin,针对输出帧的带宽投票进一步被增加。在完成时间c7处,由于error在预定的裕度内(negative_margin<error<positive_margin),针对输出帧的带宽投票不被改变。框1214表示这样一点,其中累积的完成时间c8小于截止期限8a并且其中针对输出帧的带宽投票可以进一步被减少。

图12示出了动态存储器带宽投票方法的一个实施例,该方法使用针对输入帧的前馈压缩统计和针对输出帧的完成时间数据。方法1400在框1402处开始于:非实时(nrt)客户端针对用于其输出帧的理论最差情况(或实际最差情况)的带宽进行投票。在框1404中,nrt客户端接收指向下一输入帧的指针连同前馈压缩统计。在框1406中,nrt客户端等待消费方硬件完成对前一帧的处理并且准备好处理下一帧或操作。在框1408中,error值被作为目标完成时间的累加和与真实完成时间的累加和之间的差值来计算。在框1410和1418中,分别将error的值与negative_margin和positive_margin进行比较。如果negative_margin<error<positive_margin,则在框1430中,将新的带宽投票作为针对输入帧和输出帧的带宽投票的和来计算。输入帧投票根据前馈压缩比率确定,输出帧投票与先前的处理步骤中使用的投票相比未被改变。在框1410中,当error小于negative_margin,指示客户端正落后时,处理过程进行到框1412,其中进行对于先前的输出bw投票是否等于最大允许投票(max_bw_vote)的测验。如果是,则输出帧投票被设置为max_bw_vote,否则,方法1400前进到框1414,其中根据error值来增加针对输出帧的带宽投票。在框1418中,当error大于positive_margin时,指示客户端正领先于截止期限,处理过程进行到框1412,其中对于先前的输出bw投票是否等于min_bw_vote进行测验。如果是,则输出帧投票被设置为最小投票(min_bw_vote),否则,方法1400前进到框1422,其中根据error值来减少针对输出帧的带宽投票。在框1416中,将投票应用于在框1430中计算的带宽。在框1440中,启动消费方硬件。

图11示出了在图7的系统中实现的方法的另一个实施例,该方法用于针对输入帧和输出帧两者使用帧输出缓冲区完成时间,来针对存储器带宽准确地进行投票。当前馈统计不适用于输入帧时,使用本实施例。

图13是示出用于使得实时消费方存储器客户端1504能够使用输入帧前馈压缩统计针对存储器带宽准确地进行投票的系统1500的实施例的组合框/流程图。实时消费方是具有针对完成其任务的严格截止期限的客户端。如果即使其在很短的时间段内(例如,10s微秒)被剥夺了其所需的带宽,也可能导致系统故障,诸如系统显示的明显损坏、相机输入帧的丢失或数据或语音通话的中断。如图13所示,生产方存储器客户端1502可以是实时客户端和/或非实时客户端。每个生产方存储器客户端1502可以针对创建的每个输入帧1506产生输入帧前馈压缩统计1506和压缩缓冲区元数据1510。实时消费方存储器客户端1504可以耗用针对每个输入帧1506的输入帧前馈压缩统计1506和压缩缓冲区元数据1510。

图14示出了具有用于使得实时消费方存储器客户端1504(图13)能够计算压缩比率的移动窗口1604的示例性压缩图像缓冲区1602。压缩帧的每个生产方(生产方存储器客户端1502)可以计算移动窗口1604上的压缩比率并将其作为压缩缓冲区元数据的一部分传送给实时消费方存储器客户端1504。压缩比率可以包括例如在移动窗口1604上观测到的最低压缩等级和/或针对帧的平均压缩比率。应该理解,移动窗口1604的大小和形状可以针对实时消费方存储器客户端1504而变化。此外,基于访问模式,针对消费方/生产方,移动窗口1604可以不是相同形状(s)。

在一些实施例中,软件组件可以基于消费方访问模式来解析压缩缓冲区元数据1510并且产生在移动窗口1604上的最差情况的压缩比率。实时消费方存储器客户端1504然后可以按如下针对输入带宽进行投票:输入带宽投票=(没有压缩的输入带宽)/(最差情况移动窗口1604的压缩比率)。在其它实施例中,代替使用移动窗口1604,可以使用输入缓冲区的平均压缩比率加上被启发式定义的附加投票以表示多个压缩不好的单元。

图15是可以包括用于并入上述系统和方法的移动电话的便携式计算设备(pcd)1700的示例性实施例的框图。除了移动电话之外,pcd1700还可以包括个人数字助理(pda)、寻呼机、平板电脑、智能手机、导航设备以及具有无线连接或链接的手持式计算机。

将容易理解,系统100的某些组件被包括在soc1701上。soc1701可以包括多核cpu1702。多核cpu1702可以包括第零核1710、第一核1712和第n核1714。这些核中的一个可以包括例如图形处理单元(gpu),而一个或多个其它核包括cpu。

显示器控制器1716和触摸屏控制器1718可以耦合到cpu1702。进而,soc1701外部的触摸屏显示器1725可以耦合到显示器控制器1716和触摸屏控制器1718。

图15进一步示出了视频编码器1720、逐行倒相(pal)编码器、顺序彩色存储(secam)编码器或国家电视系统委员会(ntsc)编码器被耦合到多核cpu1702。此外,视频放大器1722耦合到视频编码器1720和触摸屏显示器1225。而且,视频端口1724耦合到视频放大器1722。如在图17中所示,通用串行总线(usb)控制器1726被耦合到多核cpu1702。而且,usb端口1728被耦合到usb控制器1726。dram102可以被耦合到驻留在soc1701上的cpu1702。

另外,如在图15中所示,数码相机1730可以耦合到多核cpu1702。在示例性方面,数码相机1730是电荷耦合器件(ccd)相机或互补金属氧化物半导体(cmos)相机。

如在图15中进一步所示,立体声音频编码器-解码器(codec)1732可以耦合到多核cpu1702。此外,音频放大器1734可以耦合到立体声音频codec1732。在示例性方面,第一立体声扬声器1736和第二立体声扬声器1738耦合到音频放大器1734。麦克风放大器1740也可以耦合到立体声音频codec1732。另外,麦克风1742可以耦合到麦克风放大器1740。在特定方面,频率调制(fm)无线电调谐器1744可以耦合到立体声音频codec1732。而且,fm天线1746耦合到fm无线电调谐器1744。此外,立体声耳机端口1748可以耦合到立体声音频codec1732。

图15进一步示出射频(rf)收发机1750可以耦合到多核cpu1702。rf开关1752可以耦合到rf收发机1750和rf天线1754。小键盘1756可耦合到多核cpu1702。此外,具有麦克风1758的单声道耳机可以耦合到多核cpu1702。此外,振动器设备1760可以耦合到多核cpu1702。

图15还示出了电源1762可以被耦合到soc1701。在特定方面,电源1762是向需要电力的pcd1700的各个组件供电的直流(dc)电源。此外,在特定方面,电源是可充电dc电池或从连接到ac电源的交流(ac)到dc变压器导出的dc电源。

pcd1700还可以包括可以用于访问数据网络(例如,局域网、个域网或任何其它网络)的网卡1764。网卡1764可以是蓝牙网卡、wifi网卡、个域网(pan)卡、个域网超低功耗技术(peanut)网卡、电视/有线/卫星调谐器或者本领域中众所周知的任何其它网卡。此外,网卡1764可以被并到芯片中。网卡1764可以是芯片中的完全解决方案,并且可以不是单独的网卡1764。

如图15所示,触摸屏显示器1725、视频端口1724、usb端口1728、相机1730、第一立体声扬声器1736、第二立体声扬声器1738、麦克风1742、fm天线1746、立体声耳机1748、rf开关1752、rf天线1754、键盘1756、单声道耳机1758、振动器1760和电源1762可以在soc1701的外部。

应该理解,在本文描述的一个或多个方法步骤可以作为计算机程序指令(诸如上述模块)存储在存储器中。这些指令可以由任何合适的处理器与相应的模块结合或与其一起执行,以执行本文所述的方法。

本说明书中描述的过程或过程流程中的某些步骤自然先于其它步骤,以使本发明如所描述的那样起作用。然而,如果这样的顺序或序列不改变本发明的功能,则本发明不限于所描述的步骤的顺序。也就是说,认识到在不脱离本发明的范围和精神的情况下,一些步骤可以在其它步骤之前、之后或与其并行地(基本上同时)执行。在一些情况下,在不脱离本发明的情况下可以省略或不执行某些步骤。此外,诸如“其后”、“然后”、“下一”等的词语并不意图限制这些步骤的顺序。这些词语仅用于指导读者通读对示例性方法的描述。

另外,例如,基于本说明书中的流程图和相关联的描述,编程中的普通技术人员能够不困难地编写计算机代码或识别适当的硬件和/或电路以实现所公开的发明。

因此,为了充分理解如何制作和使用本发明,不必需考虑公开特定的一组程序代码指令或详细的硬件设备。要求保护的计算机实现的过程的创造性功能是在上面的描述中并且结合可以示出各种过程流程的附图被详细地解释的。

在一个或一个以上示例性方面中,所描述的功能可以以硬件、软件、固件或其任何组合来实施。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或作为计算机可读介质上的一个或多个指令或代码来发送。计算机可读介质包括计算机存储介质和通信介质,通信介质包括便于将计算机程序从一个地方传输到另一个地方的任何介质。存储介质可以是由计算机可访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可以包括ram、rom、eeprom、nand闪存、nor闪存、m-ram、p-ram、r-ram、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、或可用于以指令或数据结构的形式携带或存储所需程序代码并可以由计算机访问的任何其它介质。

而且,任何连接都被适当地称为计算机可读介质。例如,如果使用同轴电缆、光缆、双绞线、数字订户线(dsl)或无线技术(例如,红外线、无线电和微波)从网站、服务器或其它远程源传输软件,则在介质的定义中包括同轴电缆、光纤电缆、双绞线、dsl或诸如红外线、无线电和微波的无线技术。

本文所用的盘和碟包括压缩光碟(cd)、激光碟、光碟、数字多功能碟(dvd)、软盘和蓝光碟,其中,盘通常磁性地再现数据,而碟用激光光学地再现数据。上述的组合也应该包括在计算机可读介质的范围内。

在不脱离本发明的精神和范围的情况下,替代的示例性实施例对于本领域的一名普通技术人员而言将变得显而易见。因此,尽管已经详细说明和描述了所选方面,但应理解,在不脱离由所附权利要求限定的本发明的精神和范围的情况下,可以在其中进行各种替换和更改。

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