CN100432957C - 一种管理存储器的方法 - Google Patents
一种管理存储器的方法 Download PDFInfo
- Publication number
- CN100432957C CN100432957C CNB2006100088234A CN200610008823A CN100432957C CN 100432957 C CN100432957 C CN 100432957C CN B2006100088234 A CNB2006100088234 A CN B2006100088234A CN 200610008823 A CN200610008823 A CN 200610008823A CN 100432957 C CN100432957 C CN 100432957C
- Authority
- CN
- China
- Prior art keywords
- memory
- priority
- sheet
- data
- dynamically
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Memory System (AREA)
Abstract
本发明涉及一种移动多媒体处理器中存储器管理的方法。该方法包括:在移动多媒体处理器芯片中接收多个存储器请求。从至少一个片载存储区和/或至少一个片外存储区中分配存储器来处理该多个存储器请求。基于该多个存储器请求中的每个存储器请求的优先级以及至少一个可动态设定的全局存储器分配优先阈值来分配存储器。基于新的应用程序和/或通过监视至少一个当前应用程序的至少一个软件进程动态地确定可动态设定的全局存储器分配优先阈值的新值。此外,可为新的应用程序的至少一个软件进程的每个存储器请求动态地确定新的优先级。
Description
技术领域
本发明涉及存储器的使用,更具体地说,涉及一种移动多媒体处理器的存储器管理的方法。
背景技术
移动通信改变了人们交流的方式,移动电话已经从奢侈品变成日常生活的必需品。现在,使用移动电话已是社会形势所趋,而不受地域或技术的限制了。语音通信满足了通信的基本需求,而移动语音通信则继续进一步渗透到日常生活的各个领域。利用移动互联网,各种集成的移动多媒体应用将引发移动通信的下一次革命。
提供多种高速访问技术的3G(第三代)蜂窝网络以及为利用这些技术的而专门设计的移动电话,满足了集成多媒体应用的需求,该集成多媒体应用支持采用高级压缩标准的TV和音频应用、高分辨率游戏应用、音乐接口、外围接口等。随着芯片设计者采用压缩技术和更高的带宽以传送更多信息,处理需求也在增加。3G无线应用支持384Kbits/s至2Mbits/s的速率,使芯片设计者能够为无线系统设计出具有多媒体能力、品质优良、干扰降低和覆盖区域更广的产品。
随着移动多媒体服务数量上和用途上的增长,对蜂窝网络运营商而言,能耗、网络容量的成本效率优化和服务质量(QoS)等因素将变得更重要。这些因素可通过谨慎的网络规划和操作、发送方法的改进、接收技术和芯片集成方案的改良来解决。为此,电信公司需要一种技术,该技术能够为移动多媒体应用提供更高的下行链路吞吐量,进一步,该技术能够为移动多媒体应用服务的消费者提供更高QoS和速度。另外,也需要提升移动设备的能力以处理各种移动多媒体应用。为达到以上目的,一种方式是采用更强大的处理器,另外一种方式是更有效地使用可利用的存储器。
本文的后续部分将结合附图对本发明进行阐述。通过把本发明的一些方面与上述的常规数字信号处理实现方法比较,对本领域的技术人员来说,常规或传统方法的局限性和缺点是显而易见的。
发明内容
本发明提供了一种为移动多媒体处理器管理存储器的系统和/或方法,如附图所示和/或结合至少一幅附图所描述,以及权利要求中的更全面的阐述。
根据本发明的一方面,提供一种管理存储器的方法,包括:
在移动多媒体处理器芯片中接收多个存储器请求;
通过从以下存储区至少之一中分配存储器来处理所述多个存储器请求:至少一个片载存储区和至少一个片外存储区;和
所述分配存储器基于所述多个存储器请求中的每个存储器请求的优先级以及至少一个可动态设定的全局存储器分配优先阈值而进行;
其中,所述可动态设定的全局存储器分配优先阈值是基于能够使某可能被执行的特定应用可能请求的存储缓冲器的数量达到最多而设定。
优选地,所述方法包括基于新的应用程序动态地确定所述至少一个可动态设定的全局存储器分配优先阈值的新值。
优选地,所述方法包括通过监视至少一个当前应用程序的至少一个软件进程来动态地确定所述至少一个可动态设定的全局存储器分配优先阈值的新值。
优选地,所述方法包括为新的应用程序的至少一个软件进程的多个存储器请求中的每个存储器请求动态地确定新的优先级。
优选地,所述方法包括通过监视至少一个当前应用程序中的至少一个软件进程,为所述至少一个软件进程的多个存储器请求中的至少一个存储器请求动态地确定新的优先级。
优选地,所述方法包括指定所述至少一个片载存储区和至少一个片外存储区中的一个以从中分配存储器。
优选地,所述方法包括把所分配的存储器中的数据移动到所述至少一个片载存储区和所述至少一个片外存储区上不同的存储器中。
优选地,所述方法包括锁定所述数据以防止该数据被移动。
优选地,所述方法包括解锁所述数据以允许移动该数据。
优选地,当所述数据处于解锁状态时,除移动所述数据外,所述数据是不可进行存取处理的。
优选地,所述存储器请求的优先级是基于单位时间内访问所请求的缓冲器的期望次数、单位时间内对整个缓冲器读或写的总次数或单位时间内整个缓冲器中被访问的字节数而确定。
根据本发明的一方面,提供一种可机读的存储器,其上存储有计算机程序,所述计算机程序包含至少一个用于为移动多媒体处理器管理存储器的代码段,当机器执行该至少一个代码段时,该机器进行以下步骤:
在移动多媒体处理器芯片中接收多个存储器请求;
通过从以下存储区至少之一中分配存储器来处理所述多个存储器请求:至少一个片载存储区和至少一个片外存储区;和
所述分配存储器基于所述多个存储器请求中的每个存储器请求的优先级以及至少一个可动态设定的全局存储器分配优先阈值而进行。
优选地,所述可机读的存储器还包括用于基于新的应用程序动态地确定所述至少一个可动态设定的全局存储器分配优先阈值的新值的代码段。
优选地,所述可机读的存储器还包括用于通过监视至少一个当前应用程序中的至少一个软件进程来动态地确定所述至少一个可动态设定的全局存储器分配优先阈值的新值的代码段。
优选地,所述可机读的存储器包括用于为新的应用程序的至少一个软件进程的多个存储器请求中每个存储器请求动态地确定新的优先级的代码段。
优选地,所述可机读的存储器包括用于通过监视至少一个当前应用程序中的至少一个软件进程,为所述至少一个软件进程的多个存储器请求中的至少一个存储器请求动态地确定的新的优先级的代码段。
优选地,所述可机读的存储器包括用于指定所述至少一个片载存储区或至少一个片外存储区中的一个以从中分配存储器的代码段。
优选地,所述可机读的存储器包括用于把所分配的存储器中的数据移动到所述至少一个片载存储区和所述至少一个片外存储区上不同的存储器中的代码段。
优选地,所述可机读的存储器包括用于锁定所述数据以防止该数据被移动的代码段。
优选地,所述可机读的存储器包括用于解锁所述数据以允许移动该数据的代码段。
优选地,当所述数据处于解锁状态时,除移动所述数据外,所述数据是不可进行存取处理的。
根据以下的描述和附图,可以更深入地了解本发明的各种优点、各个方面、创新特征、及其实施例细节。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1a根据是本发明实施例的典型的移动多媒体系统的示意框图;
图1b根据是本发明实施例的典型的移动多媒体处理器的示意框图;
图2根据是本发明实施例的处理器可用的存储器的示意框图;
图3是根据本发明实施例的采用软件进程的优先级进行存储器分配的流程图;
图4是根据本发明实施例的设定全局存储器分配优先级阈值的程序(routine)的流程图;
图5是根据本发明实施例的基于优先级的存储器请求的程序的流程图。
具体实施方式
本发明的一些实施例涉及为移动多媒体处理器管理存储器的方法。该方法包括在移动多媒体处理芯片上接收多个存储器请求。可通过从片载(on-chip)和/或片外(off-chip)的存储区中分配存储器来处理所述多个存储器请求。可基于存储器请求的优先级和至少一个动态可设的全局存储器分配优先阈值来分配存储器。可基于新的应用程序和/或通过监控至少一个当前应用中的至少一个软件进程来动态地确定动态可设的全局存储器分配优先阈值的新阈值。
另外,可以为一个新的应用中的至少一个软件进程的每一个存储器请求动态地确定存储器请求优先级的新值。可监控至少一个当前应用中的至少一个软件进程以便为至少一个存储器请求动态地确定存储器请求优先级的新值。可以指定至少一个片载存储器区和至少一个片外存储器区,以从中分配存储器。可以把数据从已分配的存储器上移到不同的存储区。可以锁定数据以防止被移动;或者可以解锁数据以允许移动。数据在解锁状态下,除移动该数据外不可对该数据进行存取处理。
对于被认为是重要的因而具有较高优先级的存储器请求,本发明为其分配较高速的片载存储器,该较高速是相对于较低速的片外存储器而言。用于分配存储器的运算法则可基于多种因素,如所请求的存储器的大小、是否采用高速缓存存储器(cache)、是否采用DMA(直接存储器存取)和单位时间内预期访问存储器的次数等。
图1a根据是本发明实施例的典型的移动多媒体系统的示意框图。如图1a所示,移动多媒体系统105包括移动多媒体设备105a、TV 101h和PC 101k和外接相机101m、外接存储器101n、外接LCD显示器101p。移动多媒体设备105a可以是蜂窝电话或其他手持通信设备或数据处理设备。移动多媒体设备105a可包括移动多媒体处理器(MMP)101a、天线101d、音频模块101s、射频(RF)块101e、基带处理模块(BB)101f、LCD显示器101b、键盘101c和相机101g。
MMP 101a可包括适当的电路、逻辑和/或代码,可用于执行移动多媒体设备105a的视频和/或多媒体处理。MMP 101a还包括多个集成接口,所述集成接口用于支持一个或多个连接到移动多媒体设备105a的外接设备。例如,MMP101a支持与TV 101h、PC 101k、外接相机101m、外接存储器101n和外接LCD显示器101p的连接。
在操作上,移动多媒体设备可通过天线101d接收信号。所接收的信号由RF模块101e处理,RF信号由基带处理模块101f转换成基带信号。接着,基带信号由MMP 101a处理。还可通过集成相机101g、TV 101h、PC 101k和/或外接相机101m接收音频和/或视频信号。处理过程中,MMP 101a可利用外接存储器101n来存储处理后的数据。例如,处理后的音频数据可传递给音频模块101s;处理后的视频数据可传递给LCD 101b或外接LCD 101p。键盘101c用于输入处理指令和/或其他数据,MMP 101a需根据这些指令或数据进行音频或视频处理。
图1b根据是本发明实施例的典型的移动多媒体处理器的示意框图。如图1b所示,移动多媒体处理器102包括适当的逻辑、电路和/或代码,用于执行手持多媒体设备的视频和/或多媒体处理。例如,可通过采用外围设备整合和视频处理核心,可为视频录制/重放、移动TV和3D移动游戏设计和优化移动多媒体处理器102。移动多媒体处理器102可包括视频处理核心103、RAM(随机存储器)104、模拟模块106、DMA控制器163、音频接口(I/F)142、记忆棒(memory stick)接口144、SD卡接口146、JTAG(结构联合测试行动组)接口148、TV输出接口150、USB接口152、相机接口154、主机接口129和I2C(内置集成电路,integrated-integrated circuit)接口156。移动多媒体处理器102还包括串行外围接口(SPI)157、通用异步接收/发送(UART)接口159、通用输入/输出(GPIO)引脚(pin)164、显示控制器162、外部存储器接口158和第二外部存储器接口160。
视频处理核心103包括适当的电路、逻辑和/或代码,可用于执行数据的视频处理。RAM 104包括适当的逻辑、电路和/或代码,用于存储片载数据如视频数据。例如,在本发明的一个实施例中,RAM 104可用于存储10M的片载数据。片载RAM 104的大小由成本或其他因素如芯片大小决定。
模拟模块106包括开关模式电源(SMPS)模块和锁相环(PLL)模块。另外,模拟模块106可包括片载SMPS控制器,该SMPS控制器用于产生核心电压(core voltage)。例如,该核心电压可根据移动多媒体处理器102的速度需求用软件设定,还能控制电源管理。
在本发明的一个典型实施例中,正常的核心工作电压范围约为0.8伏至1.2伏,休眠模式下可降到约0.6伏。模拟模块106可包括多个PLL,用于生成195kHz至200MHz的时钟,例如为外部设备。基于应用的类型,可采用其他的电压值和时钟速度。例如,一种应用可以是播放MP3文件或视频文件。移动多媒体处理器102包括多个电源工作模式,如运行、待机、休眠和关机模式。根据本发明的实施例,移动多媒体处理器102包括旁路模式(bypass mode),在关机模式下,该旁路模式允许主机访问外围设备映射的存储器。在旁路模式下,移动多媒体处理器102在机器正常运行时直接控制显示器;在机器待机模式下使主机能够保持显示。
音频模块108包括适当的逻辑、电路和/或代码,通过内置集成音频电路(inter-IC sound,简称I2S)、脉冲编码调制(PCM)或音频编码(AC’97)接口142或其他适当的接口与移动多媒体处理器102通信。在AC’97和/或I2S接口情况下,可用适当的音频控制器、处理器和/或电路以主要模式或附属模式分别输出AC’97和/或I2S音频。在PCM接口的情况下,可用适当的音频控制器、处理器和/或电路输入和输出电话信号及高质量的立体音频。PCM音频控制器、处理器和/或电路包括独立的发送和接收先入先出(FIFO)缓冲器,可采用DMA以进一步减少处理器的开销。音频模块108包括音频输入端口、音频输出端口和扬声器/麦克风接口(图1b中没有示出)。
移动多媒体设备100包括至少一个便携式存储器输入/输出(I/O)模块。有关这点,例如记忆棒模块110包括适当的逻辑、电路和/或代码,通过记忆棒接口144与移动多媒体处理器102通信。例如SD卡模块112包括适当的逻辑、电路和/或代码,通过SD输入/输出(I/O)接口146与移动多媒体处理器102通信。例如多媒体卡(MMC)也可用来通过SDI/O接口146与移动多媒体处理器102通信。移动多媒体设备100还可包括其他的便携式存储器I/O模块如XD I/D卡。
例如,调试模块114包括适当的逻辑、电路和/或代码,通过JTAG接口148与移动多媒体处理器102通信。调试模块114用于访问移动多媒体处理器102的地址空间和通过仿真接口执行边界扫描。还可以采用其他的测试访问端口(TAP),比如可采用PAL/NTSC制式TV输出接口150与TV通信,采用USB 1.1或其他变体、从端口(slave port)接口152与PC通信。相机120和/或122包括适当的逻辑、电路和/或代码,通过多格式/原始CCIR(国际无线电咨询委员会)601相机接口154与移动多媒体处理器102通信。例如,相机接口154可采用开窗术(windowing)和下取样(sub-sampling)功能把移动多媒体处理器102与移动TV前端连接。
移动多媒体处理器102可包括多个串行接口,如USB接口152、I2C主接口156、串行外设接口(SPI)157、用于蓝牙或IRDA(红外数据协会)的UART接口159。I2C主接口156包括适当的逻辑、电路和/或代码,用于控制图像传感器,可与智能电池(smart battery)或其他外围设备连接。SPI主接口157包括适当的逻辑、电路和/或代码,用于控制图像传感器。提供两种芯片选择,在带有中断的轮询模式(polled mode)下工作或通过DMA控制器163。另外,移动多媒体处理器102还包括多个GPIO引脚164,用于用户自定义输入输出或连接内部的外围设备。显示控制器162包括适当的逻辑、电路和/或代码,用于支持具有XGA分辨率的多种显示模式,以及处理8/9/16/18/21位的视频数据。
例如,基带闪存(flash memory)124通过8/16位并行主机接口129从移动多媒体处理器102处接收数据。主机接口129用于提供具有独立地址的双通道和数据寄存器,通过所述数据寄存器主机处理器能够直接读写移动多媒体处理器102的存储器空间。基带处理模块126包括适当的逻辑、电路和/或代码,用于把RF信号转换为基带信号,并通过主机接口129把基带信号传递给移动多媒体处理器102。RF处理模块130包括适当的逻辑、电路和/或代码,通过天线132接收信号,并把接收的RF信号传递给基带处理模块126。主机接口129包括具有省电(power efficient)旁路模式的双软件通道。
主LCD 134通过显示控制器162接收来自移动多媒体处理器102和/或第二外接存储器接口160的数据。显示控制器162包括适当的逻辑、电路和/或代码,用于驱动内置的TV输出功能,或被用于连接一系列LCD。显示控制器162可用于支持一系列屏幕缓冲格式并采用DMA直接访问屏幕缓冲以提高视频处理核心103的视频处理效率。NTSC和PAL光栅格式都可通过驱动TV输出的显示控制器162而生成。其他格式如SECAM也被控制器162支持。
在本发明的一个实施例中,显示控制器162用于支持多个显示器,包括隔行扫描显示器如TV和/或非隔行扫描显示器如LCD。显示控制器162还能识别显示器类型并把显示器类型传递给DMA控制器163。就此而言,DMA控制器163以隔行或非隔行方式读取数据,并通过显示控制器162把读取的数据传递给与移动多媒体处理器102连接的隔行显示器或非隔行显示器。
替用LCD 136包括适当的逻辑、电路和/或代码,通过第二外接存储器接口与移动多媒体处理器102通信。移动多媒体处理器102可包括RGB外接数据总线。移动多媒体处理器102根据象素级插值和可配置的刷新率调节图像输出。
可选闪存138包括适当的逻辑、电路和/或代码,通过外接存储器接口158与移动多媒体处理器102通信。可选SDRAM(单通道随机存储器)140包括适当的逻辑、电路和/或代码,通过外接存储器接口158接收来自移动多媒体处理器102的数据。移动多媒体处理器102通过外接存储器接口158连接外接SDRAM 140、SRAM、闪存138和/或外接外围设备。SDRAM 140和其他异步设备的控制和时序信息可通过移动多媒体处理器102进行配置。
移动多媒体处理器102还包括第二存储器接口160,以连接存储器映象的(memory-mapped)LCD和外接外围设备。第二存储器接口160包括适当的逻辑、电路和/或代码,可用于将移动多媒体处理器102连接到低速设备,而不连累外接存储器的访问速度。第二存储器接口160提供16条数据线(dataline),如6条芯片选择/地址线以及为启动、访问和保留(hold)时间进行计时的可编程总线。移动多媒体处理器102适于为包括NAND启动(boot)和高速DMA在内的NAND/NOR闪存提供支持。
在操作上,移动多媒体处理器102支持多种显示格式,所述显示格式用于显示处理后的视频数据。例如,隔行和/或非隔行外接显示器可通过显示控制器162与移动多媒体处理器102连接。显示控制器162把外接显示器的类型传递给DMA控制器163。接着,DMA控制器163访问片载RAM 104并以对应于外接显示器类型的隔行或非隔行方式读取处理后的视频信息。作为移动多媒体系统105正常运行的一部分,将为移动多媒体处理器102执行的多个软件进程分配运行时间和分配存储器单元。
图2根据是本发明实施例的处理器可利用的存储器的示意框图。图中所示为处理器模块200和片外存储区210和215。处理器模块200可以是图1b中所示的移动多媒体处理器102。处理器模块200包括高速缓存区202和片载存储区204。高速缓存区202包括适当的逻辑、电路和/或代码,用于预测下一步需要的在片外存储区210和215中的信息的地址范围。高速缓存区202可从预测的地址范围中读取信息并把片载信息存储到高速缓存区202中。这就节省了信息访问时间,因为访问高速缓存区202中的信息比访问片外存储区210和/或215中的信息快。
片载存储区204包括适当的逻辑和/或电路,用于存储信息,如数据和/或指令,并按照读指令提供所存储的信息。片载存储区204可包括单一类型的存储器如动态随机存储器(DRAM)、静态随机存储器(SRAM)或只读存储器(ROM)。片载存储区204还可以包括多种类型的存储器,其中每种存储器都有自己的地址范围并独立于其他类型存储器而被访问。物理上,各种类型的存储器,甚至同类存储器的不同部分(section),在芯片上具有不同的物理位置。本申请中,所提及的片载存储区204所涉及的存储器类型是能读写的存储器,如DRAM或SRAM。片外存储区210和215包括适当的逻辑和/或电路,用于存储信息,如数据和/或指令,也可按照读指令提供所存储的信息。例如,片外存储区210和215可以是DRAM和/或SRAM。
在操作上,处理器模块200把信息如静态数据和指令加载到支持最快访问时间的存储器。所述最快访问时间可以是平均访问时间。所述访问时间取决于存储器的物理特性,例如存储器的位置、读和/或写次数。访问时间还依赖于是否采用缓存系统。在这点上,一些信息被存储在具有快速访问时间的片载存储区204中。其他信息可存储在片外存储区210和/或215中,片外存储区210和/或215的访问时间比片载存储区202的访问时间慢。不过,可通过高速缓存区202访问存储在片外存储区210和/或215中的信息,所述高速缓存区202能设法预测下一步需要的信息区(block)并预先读取这些信息区。
运行时,请求存储器的软件进程可以从片载存储区204或从片外存储区210和/或215中分配存储器。但是,在一些情况下,高速缓存会由于读取不需要的信息而重复出现“颠簸”。例如,如果需要的信息偏移的地址范围大于高速缓存一次读取的字节数,或者最近丢弃的缓存信息需要从片外存储区中读取时,会出现这种现象。高速缓存的这种颠簸降低了高速缓存系统的效率,在极端的情况下,系统性能比不采用高速缓存系统时还差。虽然图示中片外存储器为两块,即片外存储区210和215,但本发明不受该数量的限制。片外存储区的数量可以不是2个。
图3是根据本发明实施例的优先存储器分配的流程图。如图所示,步骤300中,为每一个运行状态的进程的存储器请求确定和设定优先级。步骤310中,确定和设定全局存储器分配优先阈值。步骤320中,根据合适的运算法则把存储器请求的优先级与全局存储器分配优先阈值进行比较,并给相应的存储器请求分配存储器。步骤330中,监视需要改变全局存储器分配优先阈值和/或存储器请求优先级的情形(condition)。步骤340中,利用步骤330中所监视的情形改变现有的全局存储器分配优先阈值和/或存储器请求优先级。
图3所示的步骤300到步骤340可用于运行(run-time)存储器分配。步骤300中,确定每个存储器请求的优先级并动态地给存储器请求分配优先级。例如,本发明的一个实施例中,给存储器请求设定一个优先级,该优先级与1秒内访问所请求的缓冲器的期望次数成比例。对于全部被请求的存储缓冲器如视频缓冲器是连续地访问的应用,本发明的一个实施例中把单位时间内(如1秒内)对整个缓冲器读或写的总次数设为优先级。单位时间内对整个缓冲器读或写的总次数可通过常规测试、仿真或其他系统分析来经验地确定。本发明的另一个实施例中,采用的运算法则是,优先级与单位时间内(如1秒内)整个缓冲器中被访问的字节数成比例。
步骤310中,可以动态地确定和设定全局存储器分配优先阈值。例如,本发明的一个实施例中,设定全局存储器分配优先阈值的运算法则能够使某可能被执行的特定应用可能请求的存储缓冲器的数量达到最多。例如,片载存储区(如图2中的片载存储区204)中有100千字节(KB)片载存储器。有8个期望的存储器分配请求,其中4个期望的存储器分配请求都是请求20KB的存储缓冲器,优先级分别为600、300、200和150。另外4个优先级都是60,分别请求30KB、35KB、115KB和125KB的存储缓冲器。
在上述假设中,能够分配到100KB的片载存储区204上的存储缓冲器的最多数量可以是4个存储缓冲器,每个的大小是20KB。因此,为确保把关于该4个存储缓冲器的存储器分配请求分配到片载存储区204上,可把全局存储器分配优先阈值设为100。这样,只有关于该4个20KB存储缓冲器的存储器分配请求被分配到片载存储区204上,因为他们的优先级大于100。其它4个关于30KB、35KB、115KB和125KB的存储缓冲器的存储器请求,由于它们的优先级小于100,没有被分派到片载存储区204上。在另外的例子中,片载存储区204为50KB,为使高优先级的存储器分配请求的个数最多,可以把全局存储器分配优先阈值设为250。这样,优先级最高的2个存储器分配请求,即优先级为600和300的存储器分配请求被分配到片载存储区204的存储空间。
在其他的一些实施例中,片载存储区204能给正在运行的应用程序的所有的存储缓冲器请求分配存储空间。这种情况下,通过在片载存储区204上分配存储器空间,就不需要使用片外的存储区210和215(图2)。这样,片外存储区210和215处于备用模式,可以节省电能。但是,为同一特定目的是分配片载存储缓冲器有利还是分配片外存储缓冲器有利,对不同应用程序而言,可能是不同的。例如,为节能而给仅播放MP3文件的程序分配片载存储器而不使用片外存储器是有利的;但是对于视频应用程序,使视频播放相关的存储缓冲器采用片载存储器,而音频相关的(包括处理MP3文件)存储缓冲器采用片外存储器则更为有利。
步骤320中,基于存储器分配请求的优先级和全局存储器分配优先阈值,存储缓冲器可以在片载存储区204或片外存储区210和/或215中分配。例如,如果全局存储器分配优先阈值设为300,优先级大于300的存储分配请求从片载存储区204中分配;相似地,优先级小于300的存储分配请求从片外存储区210和/或215中分配。优先级等于全局存储器分配优先阈值的存储器分配请求,被分配到片载存储区204还是被分配到片外存储区215和/或210,可在设计时和/或执行时决定。
步骤330中,对正在运行的或已计划要运行的应用程序进行监视,以了解存储缓冲器分配受影响程度。例如,如果当前运行的应用程序是视频播放程序,视频帧的速率可能会变化。由于帧速率与视频缓冲器的访问次数直接相关,因此,存储缓冲器的分配调度方案可能需要改变。这可通过调整全局存储器分配优先阈值和/或存储器分配请求优先级来完成。
步骤340中,基于步骤330所做的决定改变全局存储器分配优先阈值和/或存储器分配请求优先级。在本发明的一个实施例中,改变全局存储器分配优先阈值和/或存储器分配请求优先级需要释放已分配的存储器。之后,新的存储器请求采用新的全局存储器分配优先阈值和/或存储器分配请求优先级。在本发明的另一个实施例中,可以不释放已分配的存储器,但是以后所进行的存储器分配可以基于新的全局存储器分配优先阈值和/或存储器分配请求优先级。释放已分配的存储器的决定可以根据是否执行新的应用程序、是否检测到当前运行的应用程序中的改变,或其他设计考虑。
以上通过一个简单的运算法则对本发明的实施例进行了阐述,但是本发明不局限于所阐述的实施例。本发明的另一个实施例采用的运算法则考虑多种因素,如存储缓冲器的访问频率、是否采用DMA方式访问存储缓冲器等,所述因素可以加权也可以不加权。处理器如移动多媒体处理器102(图1b)不使用存储器时,可以采用DMA方式,这能减少迟延。当处理器为访问片外存储器中的数据而需要等待时,会出现了迟延。
在一些例子中,通过高速缓存(如图2中的高速缓存区202)访问存储缓冲器能减少迟延。但是这取决于访问信息的方法。例如,如果存储缓冲器被随机访问,高速缓存所减少的迟延不多,甚至没有减少。相反,如果被多次访问的少量数据保留在高速缓存中,则显示出良好的性能。另外一个因素是所请求的存储器的大小。如果从片载存储区上分配大容量存储缓冲器,可能导致其他的存储缓冲器只能从片外存储区上分配。如果访问片外存储缓冲器的次数多于访问片载存储缓冲器的次数,那么,造成的迟延是不可接受的。在本发明的一个实施例中,设定存储器请求的优先级与预期迟延的次数成比例。
另外,在本发明的实施例中,采用两个存储区,该两个存储区采用同一个优先阈值。但本发明不仅仅局限于该种情况。例如,可以采用多个存储区,每个存储区都有不同的访问时间。从而采用多个优先阈值来确定从至少一个存储区上分配存储器。例如,有存储区A、B、C和D,该4个存储区的访问次数从存储区A到存储区D顺次增加。那么,可能会有多个全局存储器分配优先阈值以从A和B之间、从B和C之间、从C和D之间分配存储器。
所述存储区可以是物理存储器组也可以是逻辑存储器组。逻辑存储区包括具有相同的访问次数但物理位置不一定相同。虽然存储器请求优先级和全局存储器分配优先阈值都可以改变,但仅改变全局存储器分配优先阈值会更容易。因为全局存储器分配优先阈值数目相对少,而存储器请求优先级数目相对多。但是有时候改变存储器请求优先级能够给存储器分配的带来附加控制。
本发明的一个实施例中,能够将特定的存储缓冲器强制分配在特定存储区中,例如,分配到片载存储区中,而不考虑存储器请求的优先级。一种实现方法是采用不同的存储器请求功能,该存储器请求功能指定从哪个存储区中分配存储缓冲空间。作为选择,可采用各种不同的存储器请求功能来从每个不同存储区上请求存储缓冲空间。
本发明的一个实施例通过监视存储缓冲器的性能来确定具有太多迟延的存储缓冲器。该存储缓冲器将被移动到能减少迟延次数的存储区上。因此,正常访问存储缓冲器时必需置该存储缓冲器于锁定状态;移动存储缓冲器时必需置该存储缓冲器于解锁状态。应用程序无法访问解锁状态下的存储缓冲器中的内容以在移动缓冲器到不同的存储区的过程中保持所述内容的完整性。所述移动过程结束后,该存储缓冲器可转为锁定状态。
图4是根据本发明实施例的设定全局存储器分配优先阈值的流程图。参考图4,步骤400中,把当前使用的全局存储器分配优先阈值复制到变量中。步骤410中,设定全局存储器分配优先阈值的新值,该新值已被调用函数(calling function)传递(passed in)。步骤420中,把旧的全局存储器分配优先阈值返回给程序(routine),该程序成为当前程序。
软件或固件例行程序可使用图4所示的步骤400到步骤420改变全局存储器分配优先阈值。步骤400中,把旧的全局存储器分配优先阈值存储到变量中,以在改变全局存储器分配优先阈值时,保存旧的优先阈值。步骤410中,全局存储器分配优先阈值改为一个新值,当调用该程序(routine)时,该新值作为参数传递。随后的所有的存储器分配都使用该新值以定位存储缓冲器,对于正在片载存储器中运行的程序而言,所述存储缓冲器被认为是重要的。步骤420中,调用程序返回步骤410中保存的全局存储器分配优先阈值旧值,调用程序结束。
图5是根据本发明实施例的基于存储器请求优先级的程序流程图。参考图5,步骤500中,优先级作为参数传递给调用程序,并与全局存储器分配优先阈值作比较。步骤510中,使用步骤500中的比较结果分配片载或片外存储器。步骤520中,检查错误情形(error condition)并断言(assert)出现的任何错误结果。步骤530中,把返回值返回给调用程序从而结束该程序,该返回值表示基于存储器请求的优先级是否已完成。
参考图5,以存储器请求程序为基础的软件或固件基于存储器请求的优先级使用步骤500至步骤530来分配存储器。步骤500中,基于存储器请求程序的优先级可以有多个参数,如所请求的存储器的大小、字节定位边界(alignment boundary)、所请求的存储器的优先级、对所请求的存储器的描述。基于优先级的存储器请求程序将传递或输入的优先级参数与全局存储器分配优先阈值进行比较。如果所传递的或输入的优先级小于全局存储器分配优先阈值,就把片外存储器分配给该请求的存储缓冲器。如果所传递的或输入的优先级大于或等于全局存储器分配优先阈值,就从片载存储器上为该请求分配存储缓冲器。
步骤510中,可调用存储器分配程序来分配存储器,传递给存储器分配程序的参数包括以字节表示的所请求的存储器大小和所请求的存储器的定位边界(alignment boundary)。例如,所述定位边界可以是2字节的边界、4字节的边界或8字节的边界。除此之外,还可使用其他字节数的边界。调用存储器分配程序时使用的另一个参数用于表示分配的是片载存储器(如图2中的片载存储器204)还是片外存储器(如图2中的片外存储器210或215)。存储器分配程序使用的另外一个参数是描述参数。该描述参数可以是描述存储缓冲器的字符串,如该存储缓冲器用于什么用途等。存储器分配调用程序会返回一个返回值,该返回值显示是否成功分配了存储器。该返回值被保存为变量。
步骤520中,进行了错误检测。例如,如果传入的优先级参数的值不属于片载或片外存储器使用的优先级值的一部分,或者被调用的存储器分配程序返回一个错误情形,那么,系统就断言错误情形。步骤530中,基于优先级的存储器请求程序把返回值返回给调用程序,所述返回值可以是步骤510中保存的存储器分配调用程序返回值。
虽然本发明的一个实施例中,如果存储器请求优先级小于全局存储器分配优先阈值,就为之分配片外或低速存储器,但是本发明不仅仅限于该实施例。通过对比存储器请求优先级与全局存储器分配优先阈值来确定是分配快速存储器还是分配低速存储器,可以根据设计或执行而定。
本发明可以通过硬件、软件,或者软、硬件结合来实现。本发明可以在至少一个计算机系统中以集中方式实现,或者由分布在几个互连的计算机系统中的不同部分以分散方式实现。任何可以实现所述方法的计算机系统或其它设备都是可适用的。常用软硬件的结合可以是安装有计算机程序的通用计算机系统,通过安装和执行所述程序控制计算机系统,使其按所述方法运行。在计算机系统中,利用处理器和存储单元来实现所述方法。
本发明还可以通过计算机程序产品进行实施,所述程序包含能够实现本发明方法的全部特征,当其安装到计算机系统中时,通过运行,可以实现本发明的方法。本文件中的计算机程序所指的是:可以采用任何程序语言、代码或符号编写的一组指令的任何表达式,该指令组使系统具有信息处理能力,以直接实现特定功能,或在进行下述一个或两个步骤之后实现特定功能:a)转换成其它语言、代码或符号;b)以不同的格式再现。
本发明是通过几个具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。
本发明要求申请日期为2005年2月12日、申请号为60/652,433的美国临时专利申请的优先权。
Claims (11)
1、一种管理存储器的方法,包括:
在移动多媒体处理器芯片中接收多个存储器请求;
通过从以下存储区至少之一中分配存储器来处理所述多个存储器请求:至少一个片载存储区和至少一个片外存储区;和
所述分配存储器基于所述多个存储器请求中的每个存储器请求的优先级以及至少一个可动态设定的全局存储器分配优先阈值而进行;
其中,所述可动态设定的全局存储器分配优先阈值是基于能够使某可能被执行的特定应用可能请求的存储缓冲器的数量达到最多而设定。
2、根据权利要求1所述的方法,其特征在于,所述方法包括基于新的应用程序动态地确定所述至少一个可动态设定的全局存储器分配优先阈值的新值。
3、根据权利要求1所述的方法,其特征在于,所述方法包括通过监视至少一个当前应用程序中的至少一个软件进程来动态地确定所述至少一个可动态设定的全局存储器分配优先阈值的新值。
4、根据权利要求1所述的方法,其特征在于,所述方法包括为新的应用程序的至少一个软件进程的多个存储器请求中的每个存储器请求动态地确定新的优先级。
5、根据权利要求1所述的方法,其特征在于,所述方法包括通过监视至少一个当前应用程序中的至少一个软件进程,为所述至少一个软件进程的所述多个存储器请求中的至少一个存储器请求动态地确定新的优先级。
6、根据权利要求1所述的方法,其特征在于,所述方法包括指定所述至少一个片载存储区和所述至少一个片外存储区中的一个以从中分配存储器。
7、根据权利要求1所述的方法,其特征在于,所述方法包括把所分配的存储器中的数据移动到所述至少一个片载存储区和所述至少一个片外存储区上不同的存储器中。
8、根据权利要求7所述的方法,其特征在于,所述方法包括锁定所述数据以防止该数据被移动。
9、根据权利要求7所述的方法,其特征在于,所述方法包括解锁所述数据以允许移动该数据。
10、根据权利要求9所述的方法,其特征在于,当所述数据处于解锁状态时,除移动所述数据外,所述数据是不可进行存取处理的。
11、根据权利要求1所述的方法,其特征在于,所述存储器请求的优先级是基于单位时间内访问所请求的缓冲器的期望次数、单位时间内对整个缓冲器读或写的总次数或单位时间内整个缓冲器中被访问的字节数而确定。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US65243305P | 2005-02-12 | 2005-02-12 | |
US60/652,433 | 2005-02-12 | ||
US11/300,388 | 2005-12-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1825290A CN1825290A (zh) | 2006-08-30 |
CN100432957C true CN100432957C (zh) | 2008-11-12 |
Family
ID=36935975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100088234A Active CN100432957C (zh) | 2005-02-12 | 2006-02-13 | 一种管理存储器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100432957C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105453066A (zh) * | 2013-07-30 | 2016-03-30 | 三星电子株式会社 | 处理器和存储器控制方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8117370B2 (en) * | 2008-02-06 | 2012-02-14 | Broadcom Corporation | IC for handheld computing unit of a computing device |
US9038073B2 (en) | 2009-08-13 | 2015-05-19 | Qualcomm Incorporated | Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts |
US8788782B2 (en) | 2009-08-13 | 2014-07-22 | Qualcomm Incorporated | Apparatus and method for memory management and efficient data processing |
US8762532B2 (en) | 2009-08-13 | 2014-06-24 | Qualcomm Incorporated | Apparatus and method for efficient memory allocation |
US8897316B2 (en) * | 2010-12-31 | 2014-11-25 | Telefonaktiebolaget L M Ericsson (Publ) | On-chip packet cut-through |
WO2013100896A1 (en) | 2011-12-27 | 2013-07-04 | Intel Corporation | Methods and apparatus to manage workload memory allocation |
US9110592B2 (en) * | 2013-02-04 | 2015-08-18 | Microsoft Technology Licensing, Llc | Dynamic allocation of heterogenous memory in a computing system |
CN110955512B (zh) * | 2018-09-27 | 2023-05-30 | 阿里巴巴集团控股有限公司 | 缓存处理方法、装置、存储介质、处理器及计算设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1152146A (zh) * | 1995-10-30 | 1997-06-18 | 三星电子株式会社 | 光盘只读存储器驱动系统的存储器控制电路和方法 |
US6128713A (en) * | 1997-09-24 | 2000-10-03 | Microsoft Corporation | Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system |
US6646646B2 (en) * | 2000-12-13 | 2003-11-11 | Micron Technology, Inc. | Memory system having programmable multiple and continuous memory regions and method of use thereof |
CN1498374A (zh) * | 2001-04-03 | 2004-05-19 | �Ҵ���˾ | 有效地共享网络处理器中的存储器带宽的设备和方法 |
US20050033934A1 (en) * | 2003-08-07 | 2005-02-10 | Gianluca Paladini | Advanced memory management architecture for large data volumes |
-
2006
- 2006-02-13 CN CNB2006100088234A patent/CN100432957C/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1152146A (zh) * | 1995-10-30 | 1997-06-18 | 三星电子株式会社 | 光盘只读存储器驱动系统的存储器控制电路和方法 |
US6128713A (en) * | 1997-09-24 | 2000-10-03 | Microsoft Corporation | Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system |
US6646646B2 (en) * | 2000-12-13 | 2003-11-11 | Micron Technology, Inc. | Memory system having programmable multiple and continuous memory regions and method of use thereof |
CN1498374A (zh) * | 2001-04-03 | 2004-05-19 | �Ҵ���˾ | 有效地共享网络处理器中的存储器带宽的设备和方法 |
US20050033934A1 (en) * | 2003-08-07 | 2005-02-10 | Gianluca Paladini | Advanced memory management architecture for large data volumes |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105453066A (zh) * | 2013-07-30 | 2016-03-30 | 三星电子株式会社 | 处理器和存储器控制方法 |
CN105453066B (zh) * | 2013-07-30 | 2019-03-01 | 三星电子株式会社 | 处理器和存储器控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1825290A (zh) | 2006-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100432957C (zh) | 一种管理存储器的方法 | |
US7818521B2 (en) | Memory management for a mobile multimedia processor | |
CN102483725B (zh) | 在双信道操作期间通过将地址/控制信号交错的单信道与双信道混合双重数据速率接口方案 | |
US7877528B2 (en) | System method for I/O pads in mobile multimedia processor (MMP) that has bypass mode wherein data is passed through without being processed by MMP | |
CN1831928B (zh) | 处理视频数据的方法和处理视频数据的移动多媒体处理器 | |
US8180937B2 (en) | System method for I/O pads in mobile multimedia processor (MMP) that has bypass mode wherein data is passed through without being processed by MMP | |
KR20150079727A (ko) | 포터블 컴퓨팅 디바이스에서 프로세서를 지원하는 인터럽트 레이턴시 임계 및 리소스의 동적 조정 | |
KR102219015B1 (ko) | 네트워크 이용을 개선하기 위한 네트워크 지원 프로토콜 사용 | |
US20070113043A1 (en) | Method and apparatus to perform memory management | |
US9264529B2 (en) | Drive strength adjustment through voltage auto-sense | |
CN115421919A (zh) | 内存管理方法、装置、内存管理器、设备及存储介质 | |
EP1575178A2 (en) | Mobile data terminal and communication method therefor | |
TW201717025A (zh) | 用於逐頁記憶體通道交錯之系統及方法 | |
US7793007B2 (en) | Method and system for deglitching in a mobile multimedia processor | |
CN104243089A (zh) | 数据传输速率动态调整系统及方法 | |
US7814305B2 (en) | Apparatus and method for generating reset signals for function chips in a terminal | |
KR100592106B1 (ko) | 개별 메모리 접근 허용 방법 및 장치 | |
CN101521960B (zh) | 一种基带和协处理器间的通信方法、装置及系统 | |
CN111132284B (zh) | 一种基站的容量动态分配方法及基站 | |
CN1972277A (zh) | 一种电子业务指南表的发送方法 | |
CN2919752Y (zh) | 一种3g移动通讯终端 | |
CN100524169C (zh) | 移动多媒体处理器中输入/输出区的方法和系统 | |
US9934178B2 (en) | Full bandwidth communication buses | |
JP3622847B2 (ja) | 移動無線装置および間欠受信方法 | |
US20070061661A1 (en) | Bit rate adaptation in a data processing flow |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |