CN114730245B - 用于降低处理器中的功耗的闪存和ram分配的***和方法 - Google Patents
用于降低处理器中的功耗的闪存和ram分配的***和方法 Download PDFInfo
- Publication number
- CN114730245B CN114730245B CN202080079627.4A CN202080079627A CN114730245B CN 114730245 B CN114730245 B CN 114730245B CN 202080079627 A CN202080079627 A CN 202080079627A CN 114730245 B CN114730245 B CN 114730245B
- Authority
- CN
- China
- Prior art keywords
- ram
- memory
- code
- portable code
- cpu
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Power Sources (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明是一种用于在从ROM复制的省电代码与用于存储分组的瞬时RAM存储器之间动态分配RAM的控制器。当瞬时RAM存储器的利用率低时,代码段从ROM复制,并使用RAM指针表来从RAM执行,RAM指针表在代码段从ROM复制后更新,当瞬时RAM存储器的利用率高时,代码段从RAM中释放,并且指针表被更新以指向快闪ROM中的对应位置。
Description
技术领域
本发明要求于2019年9月11日提交的临时专利申请62/899,084的优先权。
本发明一般涉及用于降低通信***中的功耗的方法。具体地,本发明涉及随机存取存储器(RAM)和闪存中的数据管理以最小化功耗。
背景技术
对于微控制器和微处理器,通常具有用于存储临时数据和可执行指令的随机存取存储器(RAM)。在当前具有中央处理单元(CPU)的低功率或电池供电的物联网(IoT)和嵌入式***中,需要在最佳功耗和更高的吞吐量能力之间进行权衡。对于具有最佳功耗和网络吞吐量的CPU,需要RAM存储器包含具有动态或瞬时大小要求的数据结构(例如用于发送和接收分组队列的分组缓冲区)以及省电可执行代码和数据存储器。在嵌入式片上***(SOC)环境中,为了降低功耗,RAM被有意选择为满足上述存储要求的最小尺寸。期望进一步降低功耗而不影响需要瞬时RAM存储器存储要求的任务的性能,例如通信应用的网络吞吐量,因为随着***需要或正在使用的RAM减少,微控制器或微处理器的功耗会降低。在本发明的另一个示例中,期望提供从闪存或RAM执行代码的灵活性,因此,通过动态分配闪存或RAM以用于执行处理器指令,可以优化软件进程的性能以降低功耗或提高性能。进一步期望减少或最小化与RAM的使用有关的功耗。
发明内容
本发明的第一个目的是一种用于降低对于被存储在RAM中的数据具有瞬时要求的***的功耗的装置,该装置具有被组织成包含可移植代码模块段、固定可执行代码和启动代码的闪存。
本发明的第二个目的是一种用于处理器片上***(SOC)的用于在数据被存储在RAM中时降低功耗的方法,该方法在该SOC上操作,SOC具有耦接到内部RAM和外部快闪ROM的中央处理单元(CPU),该方法包括:
将闪存中的可执行代码安排为以下中的至少一个:可移植代码模块段,固定代码,以及启动代码;
CPU在启动时,从芯片ROM执行将省电代码放入RAM的启动代码,并初始化RAM中的函数指针表以指示特定可移植代码模块段应当从快闪ROM位置还是从RAM位置执行,省电代码周期性地确定利用率,该利用率是当前瞬时RAM存储器利用(例如分组缓冲区利用)除以总RAM大小以形成利用率,以使得:
当利用率高于阈值时,更新函数指针表条目以指向快闪ROM中的对应的可移植代码模块,然后从RAM中释放可移植代码模块段,并将这些所释放的段分配给瞬时RAM,例如分组缓冲区;
当利用率低于阈值时,将可移植代码模块段移入RAM,并更新函数指针表以使可移植代码模块段从RAM执行。
本发明的第三个目的是一种用于动态分配可执行代码指令的装置,该装置包括:
闪存,其被组织成包含可移植代码模块段、固定可执行代码和启动代码;
随机存取存储器(RAM),其包含函数指针表,其中,指针条目指向闪存中的代码模块段或者RAM中的对应的代码模块段;
指针指派控制器,用于基于CPU执行来确定代码利用,该代码利用识别当前正从闪存执行的第一可移植代码模块以用于从RAM执行以及识别用于当前正从RAM执行的第二可移植代码模块以用于从闪存执行;
指针指派控制器改变与第二可移植代码模块相关联的函数指针表条目以指向相关联的闪存可移植代码模块,将第一可移植代码模块从闪存复制到RAM的段,并改变与第一可移植代码模块相关联的函数指针表以指向RAM的相关联的段。
本发明的第四个目的是一种用于动态分配可执行代码指令的装置,该装置包括:
闪存,其被组织成包含可移植代码模块段、固定可执行代码和启动代码;
随机存取存储器(RAM),其包含函数指针表,其中,指针条目指向闪存中的代码模块段或RAM中的对应代码模块段;
指针指派进程,用于基于CPU执行来确定代码利用,该代码利用识别当前正从RAM执行的可移植代码模块以用于从闪存执行;
指针指派进程改变与可移植代码模块相关联的函数指针表条目以指向相关联的闪存可移植代码模块。
一种具有随机存取存储器(RAM)和快闪只读存储器(ROM),并提供降低的功耗的***包括:
耦接到RAM的CPU,CPU还耦接到快闪ROM;
快闪ROM包含以下每项:
具有入口点地址的可移植代码模块;
固定代码模块;
启动代码,其包括省电代码;
RAM具有:
省电代码区,
可调用可移植代码模块区,
函数指针表区,以及
瞬时RAM存储区,诸如分组缓冲区;
其中,在上电初始化时,CPU从芯片ROM执行启动代码,并将省电代码从闪存复制到RAM省电代码区,然后将RAM中的空间分配给瞬时RAM存储区,将可移植代码模块段从快闪ROM复制到RAM可调用可移植代码模块区,并初始化函数指针表区以指向快闪ROM中的可移植代码模块段或者RAM中的可移植代码模块段,此后,省电代码优选从RAM执行,并且根据函数指针表,可移植代码模块从快闪ROM或RAM执行。省电代码周期性地形成使用的瞬时RAM存储器的大小与总RAM的利用率。当利用率低于阈值(例如50%)时,省电代码从RAM中释放瞬时RAM存储器,并将其分配给RAM中的可移植代码模块,将对应的可移植代码模块从ROM复制到RAM,并更新函数指针表指向RAM中的对应的可移植代码模块。当利用率高于阈值(例如50%)时,省电代码改变函数指针表以引用快闪ROM中的可移植代码模块,并从RAM中释放相关联的可移植代码模块,并将其分配为瞬时RAM存储器的一部分。
在本发明的另一个示例中,一种具有随机存取存储器(RAM)和快闪只读存储器(ROM)并提供降低的功耗的***包括:
CPU,其耦接到RAM,CPU还耦接到快闪ROM;
快闪ROM包含以下每项:
具有入口点地址的可移植代码模块;
固定代码模块;
启动代码,其包括省电代码;
RAM具有:
省电代码区,
可调用可移植代码模块区,
函数指针表区,以及
瞬时RAM存储区,诸如分组缓冲区;
其中,在上电初始化时,CPU从芯片ROM中执行启动代码,并将省电代码从闪存复制到RAM省电代码区,并启动从RAM执行代码优化进程。由此,当检测到从快闪ROM执行的可移植代码模块被调用的频率高于相关联的阈值时,将可移植代码模块复制到RAM的可移植代码区,并且用可移植代码模块的相关联的入口点更新RAM的函数指针表区,当检测到从RAM执行的可移植代码模块被调用的频率低于相关联的阈值时,更新RAM的函数指针表区以指向快闪ROM中的对应的可移植代码模块。
附图说明
图1示出具有外部闪存的处理器SOC的框图。
图2A示出闪存的分配的示例。
图2B和2C分别示出具有少量和大量分组缓冲区的随机存取存储器的分配的示例。
图3是本发明的操作的流程图。
具体实施方式
图1示出了本发明的过程的框图,图2A示出了闪存120和随机存取存储器108示例空间分配。本发明提供了用于使用函数指针表在***RAM与快闪ROM之间动态分配可执行函数的***和方法,其中函数指针表指示要被执行的函数驻留在快闪ROM中还是RAM中。在本发明的本示例中,一般描述了将RAM分配给瞬时RAM存储器。瞬时RAM存储器的具体示例包括网络设备中的维持发送和接收缓冲区的分组缓冲存储器,当接收缓冲区的数据被读取和处理时,在接收缓冲区中不需要这些缓冲区,并且在所发送的数据被确认后,不需要发送缓冲区中的数据,无需重新发送。瞬时RAM存储器可用于存储器分配和释放,例如C编程语言中的“malloc()”和“free()”,或者诸如C++、C#和Java等面向对象的编程语言中的“new”和“delete”。用于网络应用的函数指针表和瞬时RAM存储器分配可以基于网络堆栈/应用指标(例如,由积极使用的分组缓冲存储器占用的RAM的百分比)来动态地进行。以这种方式,基于以下项之间的利用百分比来动态地共享RAM 108:
1)用于瞬时RAM存储器(被示为分组缓冲区228)的RAM 230,分组缓冲区包括长持久缓冲区,诸如TCP发送和接收缓冲区,TCP发送缓冲区保持接收对等方的对已发送分组的未决确认,TCP接收缓冲区保持直到从发送对等方接收到所有有序分组为止。短持久缓冲区(例如,UDP发送和接收缓冲区(其不由相关联的对等方确认))或者可以被立即处理的控制帧缓冲区由于短期持久性而可以是“特殊池”的一部分;
2)所有其他RAM利用,包括省电(操作)代码和数据220所需的RAM 230、从闪存202复制的可调用函数224、以及函数指针表226,该函数指针表226指示由省电代码220调用的特定函数应当从可调用函数224区还是从闪存的可移植代码模块202区执行。
在典型的应用中,由于瞬时RAM存储器需求(例如瞬时RAM存储器分组缓冲存储器)增加,RAM分配给瞬时RAM存储器也增加,其中,分组存储需求由突发的网络业务的性质和网络条件决定。例如,瞬时RAM存储器发送缓冲区可以不被释放,直到被存储的相关分组已被确认为由接收站或接入点(AP)接收为止。瞬时RAM存储器网络业务接收缓冲区可以不被释放,直到已经接收到块确认的所有分组为止,或者在接收缓冲区用于TCP/IP业务的情况下,接收分组被保持,直到接收到有序分组并释放缓冲区为止。当出现大的业务突发或者对发送或接收分组缓冲区的需求增加时,分组缓冲区需要增加的RAM需求。相反,当网络安静时,RAM需求下降到存储操作代码(被称为“省电代码”220)所需的最小值,该省电代码220管理从快闪ROM复制的可移植代码模块段之间的RAM分配。此外,当要处理和转发高吞吐量业务时,CPU将几乎没有机会进入省电模式。
图1示出了示例省电装置和方法。处理器片上***(SOC)100可以包括例如使用串行外设接口(SPI)总线与快闪只读存储器(ROM)120的接口118、在接口110上操作的主机接口112,这两个接口都连接到CPU 106。CPU 106耦接到RAM 108,并且可选地还耦接到包含用于启动的基本指令的芯片bootrom 104以及CPU寄存器102。其他特征通常存在于处理器100中,这些仅出于示例目的而示出。该方法的操作如下:
1)在启动和初始化时,设备可以从执行基本接口108和110初始化的芯片bootrom104开始,并从快闪ROM 120的启动代码段检索启动代码,启动代码被复制到RAM 108,之后CPU直接从RAM执行省电代码。快闪ROM 120的组织如图2A的208所示,并且在初始化之后或在少量无线业务利用期间,RAM 108的组织如图2B中的230所示,在多次瞬时RAM存储器需求期间,例如在需要分配额外的分组缓冲区和释放可移植代码模块以用于直接从快闪ROM120执行或者用于其他瞬时RAM存储器需求的无线业务繁忙期间,RAM 108的组织如图2C所示。启动代码206可以包括省电代码,其通常最初被复制到RAM 230/231的段220中,随后它从该段执行,并且省电代码包括对各种函数的调用,其中每个函数指向函数指针表226,该函数指针表226被初始化以包含指向被复制到RAM 224的快闪ROM 120的相关联的可移植代码模块202的指针。可替代地,省电代码可以从快闪ROM 120执行,并将函数指针表226用于位于RAM或快闪ROM 120中的可移植代码模块。最初,当分组缓冲区228利用低时,如图2B所示,分组缓冲区228的大小可以非常小,未使用的空间可用被复制到RAM的可移植代码模块202填充为图2B的可移植代码模块224,并且函数指针表226被更新以将来自省电代码的函数调用引导到被复制到RAM 108的可移植代码模块224。以这种方式,从RAM 108执行的可移植代码模块将执行得比从快闪ROM 120执行时更快,从而提供更高的性能。对于其中分组缓冲区被分配为传入的接收分组并且传出的发送分组被存储在分组缓冲区228中的瞬时RAM存储器需求情况,RAM分组缓冲区分配大小228将如图2C所示地增长,并且先前从RAM 108执行的可移植代码模块224将被释放并被重新分配以供分组缓冲区228使用,其中,函数指针表226基于分组缓冲区228所需的RAM的百分比,将对可移植代码模块重写的引用引导为指向相关联的闪存208可移植代码模块函数。
省电代码220监视分组缓冲区228相较于可用可分配RAM 236的利用和分配,并且由于网络吞吐量,当瞬时RAM存储器需求(诸如分组缓冲区228利用)与可分配RAM 236的比率超过第一阈值(诸如RAM利用的50%)时,RAM可调用函数空间224将随着一个或多个可移植代码模块段从RAM中被释放而逐渐减少,并且每个对应的代码段的函数指针表226条目在释放之前被更新以指向快闪ROM 208,这样,代码执行不会中断。可以通过首先在函数指针表226中写入更新的函数指针,然后等待用于从RAM的任何未完成代码执行完成的时间间隔,或者通过使相关联的例程在启动执行时设置可读标志并在执行完成后清除标志,完成释放。此后,先前由所释放的可移植代码模块利用的RAM将被重新分配以增加分组缓冲区228的大小。
相反,当RAM分组缓冲区分配228与总可用可分配RAM 236的比率下降低于第二阈值(例如40%)并且未使用的分组缓冲区RAM可用于重新分配时,可移植代码模块段202从ROM 202复制,并被写入RAM 224的所释放的分组缓冲区,并且每个相关联的可移植代码模块调用的函数指针表226条目被更新以将对可移植代码模块的调用从闪存208地址指向相关联的可调用函数224的RAM 230地址。最佳地,省电代码220是连续代码块,但是,从快闪ROM 202复制的可移植代码模块段的大小更小,并且每一个可被放置在RAM的与任何其他可移植代码模块段不连续的位置,因为每个可移植代码段在函数指针表226中有它自己的指针。
在本发明的一个示例中,可调用函数224是与图2所示的分组缓冲区228分离的一个RAM块,然而在本发明的另一示例中,分组缓冲区228包括链表,该链表可以在连续的RAM空间中或者可与可调用函数224所分配的空间混合。在该示例中,分组缓冲区的大小可以由链表描述符(每个链表描述符可以包括起始节点、下一个节点和大小)确定,并且针对可调用函数所分配的区可以被保存在单独的分配表中,该分配表可以是函数指针表226的一部分或者与它分离。
在本发明的一个示例中,用于RAM分配的方法按照图3所概述的一系列步骤操作,这些步骤是以分组缓冲区为例示出的,但是可以被推广到具有瞬时RAM存储器需求的其他应用,其中瞬时RAM存储器需求是针对可执行代码的,或者瞬时RAM存储器需求是针对动态数据的。在步骤302,CPU从芯片bootrom 120启动,将省电代码从快闪ROM 120复制到RAM108,初始化RAM 108的函数指针表226,并从RAM 108执行省电代码220。在步骤302中,针对RAM中的瞬时RAM存储器池228(诸如分组缓冲器池228)和可移植代码模块224的初始RAM分配可以分别近似70%和30%。
在步骤303中,当需要新的增加的瞬时RAM存储器时,例如当新的接收分组到达或者创建要发送的新分组时,分组缓冲区分配请求创建额外的分组缓冲区大小228,并且相反,当发送分组被发送并确认或者接收分组被去除以用于处理时,分组缓冲区被释放。
步骤304测试以确定分组缓冲区与总RAM的比率是否超过第一阈值(例如60%),如果是,则执行步骤306,其中函数指针表226被更新以将相关联的可移植代码模块段指向闪存中的代码段202,释放用于相关联的可调用函数的RAM 224,并且它释放的RAM被分配给分组缓冲区RAM 228。在本发明的替代实施例中,如果瞬时RAM存储器分配请求是用于由分组存储器用于控制分组、管理分组或UDP分组,则可以从特殊的瞬时RAM区(未显示,但是230的一部分)分配所需的瞬时RAM存储器分组缓冲区RAM,因为控制分组、管理分组、UDP分组具有短的持久性存储要求,因为它们不需要被确认或保存,仅被传递给处理的省电代码。如果瞬时RAM存储器分配(例如分组缓冲存储器分配请求)是用于TCP数据分组,则存储器分配是来自分组缓冲存储器池228,并且在本发明的替代实施例中,如果额外的瞬时RAM存储器分组缓冲区RAM 228不可用,则分组缓冲区请求可从RAM 108的特殊存储器池(未示出)分配。在从图2B 230到2C 231的转换中示出了额外的瞬时RAM存储器分组缓冲区RAM 228的分配和可从RAM执行的可移植代码模块RAM 224的减少。
步骤308测试当瞬时RAM存储器228或分组缓冲区228大小与总可用可分配RAM 236的比率何时低于第二阈值(例如50%),在这种情况下,省电代码将可移植代码模块段202从快闪ROM 208增量复制到RAM中的可调用函数224,并更新函数指针表226,以使得对这些函数的调用从相关联的RAM位置执行。步骤310示出了从图2C到图2B的存储器分配的变化。在完成了释放瞬时RAM存储器分组缓冲区并重新分配为可移植可调用函数以及将函数从ROM复制到RAM之后,函数指针表226被更新。
如果步骤303的分配和释放先前被执行并在步骤306和310中完成,则在步骤310之后,进程在步骤303或步骤304继续,可选地,在每次迭代中有延迟。以这种方式,RAM 108的大小可以被减小到支持分组缓冲区加上函数指针表和省电代码所需的最小值,从而比维持静态RAM分配或仅从ROM或闪存执行代码模块的现有技术方法省电。
应当理解,所给出的示例是说明性的,并且不旨在限制本发明的范围。第一和第二阈值可以以x的数量级变化,以使得阈值可以在比标称大小x更大(10x)或更小(x/10)的数量级的范围内。可替代地,阈值可以近似为给定的标称大小,其中近似是在4x或x/4的范围内。在本发明的一个示例中,第一阈值在40%到60%的范围内,第二阈值在20%到40%的范围内。在本发明的另一示例中,第二阈值小于第一阈值。
Claims (16)
1.一种省电处理器,所述省电处理器包括:
中央处理单元CPU;
快闪只读存储器ROM,其包含启动代码、固定代码和可移植代码段;
随机存取存储器RAM,其具有被分配用于瞬时RAM存储器的区、被分配用于可调用函数的区、函数指针表和省电代码;
被分配用于可调用函数的RAM区具有从快闪ROM可移植代码段复制的至少一个函数;
所述函数指针表包含指向所述快闪ROM可移植代码段或被分配用于可调用函数并且具有从所述快闪ROM可移植代码段复制的所述至少一个函数的RAM区的指针;
所述省电代码指示CPU周期性地检查已被分配用于可调用函数的RAM区的大小与总RAM大小的比率,以形成分配比率;
当所述分配比率高于第一阈值时:
识别从快闪ROM可移植代码段复制的至少一个RAM区可调用函数;
更新所述函数指针表中的相关联的指针以指向所识别的快闪ROM可移植代码段;
释放由所述至少一个RAM区可调用函数使用的对应RAM区,并将所释放的对应RAM区分配给瞬时RAM存储器区,以及;
当所述分配比率低于第二阈值时:
释放瞬时RAM存储器的段;
将所释放的瞬时RAM存储器的段分配给RAM可调用函数存储器的区;
将至少一个可移植代码模块段从所述快闪ROM复制到所述RAM的可调用函数区;
更新所述函数指针表中的指针以将对从所述快闪ROM复制的可移植代码段的调用引导到所述RAM的所述可调用函数区。
2.根据权利要求1所述的省电处理器,其中,所述第一阈值在40%至60%的范围内。
3.根据权利要求1所述的省电处理器,其中,所述第二阈值在20%至50%的范围内。
4.根据权利要求1所述的省电处理器,其中,周期性地更新所述第一阈值或所述第二阈值。
5.一种在中央处理单元CPU上运行的方法,所述CPU与包含可移植代码模块的快闪只读存储器ROM耦合,所述CPU还与随机存取存储器RAM耦合,所述方法包括:
所述CPU从快闪ROM的区执行代码,并将可执行省电代码从快闪ROM的区复制到RAM的区,CPU此后从所述RAM的区执行所述省电代码;
所述CPU将可移植代码模块从快闪ROM的区复制到RAM的区;
所述CPU初始化RAM的区中的指针,所述指针指示每个可移植代码模块是要从快闪ROM的区还是从RAM的区执行;
所述CPU分配所述RAM中的瞬时RAM存储器以用于接收和发送分组;
所述CPU周期性地检查使用的瞬时RAM存储器的大小与总RAM大小的比率;
如果所述比率大于第一阈值,则:
释放所述RAM的用于可移植代码模块的区,更新相关联的指针以指向所述快闪ROM中的对应可移植代码模块,并且还将所释放的RAM的用于可移植代码模块的区分配给瞬时RAM存储器;
如果所述比率小于第二阈值,则:
分配RAM的区以用于可移植代码模块,将可移植代码模块复制到所分配的RAM的区,并更新所述指针以指向所分配的RAM的区中的对应可移植代码模块。
6.根据权利要求5所述的方法,其中,所述第一阈值在40%至60%的范围内。
7.根据权利要求5所述的方法,其中,所述第二阈值在20%至40%的范围内。
8.根据权利要求5所述的方法,其中,所述第二阈值小于所述第一阈值。
9.根据权利要求5所述的方法,其中,所述RAM的区包括用于短期持久性存储的特殊池。
10.根据权利要求9所述的方法,其中,所述特殊池被用作用于控制分组或用户数据报协议(UDP)分组的分组存储器。
11.一种***,包括:
随机存取存储器RAM;
快闪只读存储器ROM;
中央处理单元CPU,其与所述RAM耦接,所述CPU具有CPU芯片ROM,所述CPU还与所述快闪ROM耦接;
所述快闪ROM包含:
具有入口点地址的可执行可移植代码模块;
可执行固定代码模块;
启动代码,其包括省电代码;
所述RAM具有省电代码区、可调用可移植代码模块区、函数指针表区、以及瞬时RAM存储器区;
所述CPU可操作以从所述CPU芯片ROM执行启动代码,并且还将省电代码从所述快闪ROM复制到所述RAM中的所述省电代码区;
所述CPU可操作以将所述RAM中的空间分配给所述瞬时RAM存储器区,所述CPU可操作以将可移植代码模块段从所述快闪ROM复制到所述RAM可调用可移植代码模块区,所述CPU可操作以初始化所述函数指针表区以指向所述快闪ROM中的可移植代码模块段或者所述RAM的可移植代码模块区中的对应可移植代码模块段;
所述CPU可操作以从RAM执行所述省电代码;
所述CPU可操作以从所述快闪ROM或所述RAM中的至少一个执行所述可移植代码模块,如由所述函数指针表中的对应指针所指示的;
其中,所述CPU可操作以周期性地基于总RAM大小除以由省电代码所使用的瞬时RAM存储器的大小加上可调用可移植代码的大小加上函数指针表的大小加上瞬时RAM存储器的大小的比率来计算利用率;
并且其中,所述CPU可操作以在所述利用率低于第一阈值时,从RAM中释放瞬时RAM存储器,将所释放的瞬时RAM存储器空间中的至少一些分配给所述RAM中的可移植代码模块,将对应的可移植代码模块从所述快闪ROM复制到所述RAM,以及更新所述函数指针表以指向所述RAM中的所述对应的可移植代码模块。
12.根据权利要求11所述的***,其中,所述CPU可操作以在所述利用率高于第二阈值时,改变所述函数指针表以引用所述快闪ROM中的所述可移植代码模块,从所述RAM中释放相关联的可移植代码模块,以及将相关联的可移植代码模块存储器分配给所述瞬时RAM存储器区。
13.根据权利要求11所述的***,其中,所述第一阈值在从40%到60%的范围内。
14.根据权利要求12所述的***,其中,所述第二阈值在从20%到50%的范围内。
15.根据权利要求11所述的***,其中,
所述CPU可操作以在所述利用率低于第一阈值时,从所述RAM中释放所述瞬时RAM存储器,将所释放的瞬时RAM存储器空间的至少一些分配给所述RAM中的所述可移植代码模块,将对应的可移植代码模块从所述快闪ROM复制到所述RAM,以及更新所述函数指针表中的指针以指向所述RAM中的对应可移植代码模块;
所述CPU可操作以在所述利用率高于第二阈值时,改变所述函数指针表中的指针以引用所述快闪ROM中的可移植代码模块,从所述RAM中释放相关联的可移植代码模块,以及将相关联的可移植代码模块存储器分配给所述瞬时RAM存储器;
并且其中,所述第一阈值大于所述第二阈值。
16.一种用于动态分配可执行代码指令的装置,所述装置包括:
闪存,其被组织成包含可移植代码模块段、固定可执行代码和启动代码;
随机存取存储器RAM,其包含函数指针表,其中,指针条目指向所述闪存中的所述可移植代码模块段或者所述RAM中的对应代码模块段;
指针指派控制器,用于基于中央处理单元CPU执行可执行代码指令和测量从所述RAM执行的可执行代码的大小与总RAM大小的比率来确定代码利用,所述指针指派控制器识别当前正从所述闪存执行的第一可移植代码模块以用于从所述RAM执行,以及识别当前正从所述RAM执行的第二可移植代码模块以用于从所述闪存执行;
所述指针指派控制器在所述代码利用低于阈值时,改变与所述第二可移植代码模块相关联的函数指针表条目以指向相关联的闪存可移植代码模块,将所述第一可移植代码模块从所述闪存复制到所述RAM的段,以及改变与所述第一可移植代码模块相关联的函数指针表以指向所述RAM的相关联的段。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962899084P | 2019-09-11 | 2019-09-11 | |
US62/899,084 | 2019-09-11 | ||
US16/992,098 | 2020-08-13 | ||
US16/992,098 US11307779B2 (en) | 2019-09-11 | 2020-08-13 | System and method for flash and RAM allocation for reduced power consumption in a processor |
PCT/US2020/050590 WO2021051025A1 (en) | 2019-09-11 | 2020-09-11 | System and method for flash and ram allocation for reduced power consumption in a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114730245A CN114730245A (zh) | 2022-07-08 |
CN114730245B true CN114730245B (zh) | 2023-05-09 |
Family
ID=74849327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080079627.4A Active CN114730245B (zh) | 2019-09-11 | 2020-09-11 | 用于降低处理器中的功耗的闪存和ram分配的***和方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11307779B2 (zh) |
JP (1) | JP7194314B2 (zh) |
KR (1) | KR102523300B1 (zh) |
CN (1) | CN114730245B (zh) |
DE (1) | DE112020004284B4 (zh) |
WO (1) | WO2021051025A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11860795B2 (en) * | 2020-02-18 | 2024-01-02 | Arm Limited | Device, system, and method of determining memory requirements and tracking memory usage |
US11500555B2 (en) * | 2020-09-04 | 2022-11-15 | Micron Technology, Inc. | Volatile memory to non-volatile memory interface for power management |
CN113419858B (zh) * | 2021-06-30 | 2024-02-13 | 明见(厦门)技术有限公司 | 一种动态内存分配方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5367658A (en) * | 1991-07-15 | 1994-11-22 | Quarterdeck Office Systems, Inc. | Interrupt management method |
CN104932914A (zh) * | 2014-03-19 | 2015-09-23 | 日本电气株式会社 | 多cpu启动电路和多cpu启动方法 |
CN105630407A (zh) * | 2015-05-29 | 2016-06-01 | 上海磁宇信息科技有限公司 | 一种计算***及操作***调度内存和启动***的方法 |
CN107391085A (zh) * | 2017-06-20 | 2017-11-24 | 深圳芯邦科技股份有限公司 | 一种rom代码补丁运行方法和*** |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000293433A (ja) * | 1999-04-12 | 2000-10-20 | Nec Niigata Ltd | プログラム実行方式 |
JP2001025053A (ja) * | 1999-07-09 | 2001-01-26 | Mitsubishi Electric Corp | 携帯電話のメモリシステム |
US8296467B2 (en) * | 2000-01-06 | 2012-10-23 | Super Talent Electronics Inc. | Single-chip flash device with boot code transfer capability |
US20100146256A1 (en) * | 2000-01-06 | 2010-06-10 | Super Talent Electronics Inc. | Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces |
WO2002063805A1 (en) * | 2001-02-06 | 2002-08-15 | Harris Corporation | System and method for demodulator state controller |
US8112618B2 (en) * | 2004-04-08 | 2012-02-07 | Texas Instruments Incorporated | Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making |
US8452929B2 (en) * | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
EP1897388A1 (en) * | 2005-06-29 | 2008-03-12 | Telefonaktiebolaget LM Ericsson (publ) | Evaluation of random access preamble codes |
US7554855B2 (en) * | 2006-12-20 | 2009-06-30 | Mosaid Technologies Incorporated | Hybrid solid-state memory system having volatile and non-volatile memory |
US7721040B2 (en) * | 2007-01-18 | 2010-05-18 | Sandisk Il Ltd. | Method and system for facilitating fast wake-up of a flash memory system |
BRPI0721953A2 (pt) * | 2007-08-31 | 2014-03-18 | Panasonic Corp | Aparelho de processamento de informações |
US8006108B2 (en) * | 2007-11-08 | 2011-08-23 | International Business Machines Corporation | Dynamic selection of group and device power limits |
WO2009098547A1 (en) * | 2008-02-08 | 2009-08-13 | Freescale Semiconductor, Inc. | Memory management |
US8812825B2 (en) * | 2011-01-10 | 2014-08-19 | Dell Products L.P. | Methods and systems for managing performance and power utilization of a processor employing a fully multithreaded load threshold |
US9372524B2 (en) * | 2011-12-15 | 2016-06-21 | Intel Corporation | Dynamically modifying a power/performance tradeoff based on processor utilization |
KR101572403B1 (ko) * | 2011-12-22 | 2015-11-26 | 인텔 코포레이션 | 메모리 채널 셧다운에 의한 전력 절약 |
US9734079B2 (en) * | 2013-06-28 | 2017-08-15 | Intel Corporation | Hybrid exclusive multi-level memory architecture with memory management |
US9710651B2 (en) * | 2015-04-10 | 2017-07-18 | Vixs Systems Inc. | Secure processor for SoC initialization |
US10430208B2 (en) * | 2017-05-02 | 2019-10-01 | Huawei Technologies Co., Ltd. | Multi-version asynchronous dynamic software update system and method for applications with multiple threads |
-
2020
- 2020-08-13 US US16/992,098 patent/US11307779B2/en active Active
- 2020-09-11 JP JP2022516149A patent/JP7194314B2/ja active Active
- 2020-09-11 KR KR1020227012025A patent/KR102523300B1/ko active IP Right Grant
- 2020-09-11 CN CN202080079627.4A patent/CN114730245B/zh active Active
- 2020-09-11 WO PCT/US2020/050590 patent/WO2021051025A1/en active Application Filing
- 2020-09-11 DE DE112020004284.7T patent/DE112020004284B4/de active Active
-
2022
- 2022-03-09 US US17/691,046 patent/US11893249B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5367658A (en) * | 1991-07-15 | 1994-11-22 | Quarterdeck Office Systems, Inc. | Interrupt management method |
CN104932914A (zh) * | 2014-03-19 | 2015-09-23 | 日本电气株式会社 | 多cpu启动电路和多cpu启动方法 |
CN105630407A (zh) * | 2015-05-29 | 2016-06-01 | 上海磁宇信息科技有限公司 | 一种计算***及操作***调度内存和启动***的方法 |
CN107391085A (zh) * | 2017-06-20 | 2017-11-24 | 深圳芯邦科技股份有限公司 | 一种rom代码补丁运行方法和*** |
Also Published As
Publication number | Publication date |
---|---|
KR20220062072A (ko) | 2022-05-13 |
KR102523300B1 (ko) | 2023-04-20 |
WO2021051025A1 (en) | 2021-03-18 |
DE112020004284T5 (de) | 2022-06-09 |
US11307779B2 (en) | 2022-04-19 |
CN114730245A (zh) | 2022-07-08 |
JP7194314B2 (ja) | 2022-12-21 |
US11893249B2 (en) | 2024-02-06 |
US20210072906A1 (en) | 2021-03-11 |
US20220206694A1 (en) | 2022-06-30 |
DE112020004284B4 (de) | 2022-12-08 |
JP2022537601A (ja) | 2022-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114730245B (zh) | 用于降低处理器中的功耗的闪存和ram分配的***和方法 | |
KR100326864B1 (ko) | 네트워크통신방법및네트워크시스템 | |
US9606833B2 (en) | Method and apparatus for providing a preemptive task scheduling scheme in a real time operating system | |
EP2657836A1 (en) | Acceleration method, device and system for co-processing | |
EP4002804A1 (en) | Software distributed, hardware aggregated hierarchical traffic management | |
CN111030945B (zh) | 容灾方法、容灾网关、存储介质、装置以及*** | |
CN109002364B (zh) | 进程间通信的优化方法、电子装置以及可读存储介质 | |
CN109062826B (zh) | 数据传输方法及*** | |
CN115167996A (zh) | 调度方法及装置、芯片、电子设备及存储介质 | |
US9697047B2 (en) | Cooperation of hoarding memory allocators in a multi-process system | |
CN105630576A (zh) | 一种虚拟化平台中的数据处理方法及装置 | |
CN112306693B (zh) | 数据包的处理方法和设备 | |
CN117078495A (zh) | 图形处理器的内存分配方法、装置、设备及存储介质 | |
US20230117851A1 (en) | Method and Apparatus for Queue Scheduling | |
US6985970B2 (en) | Data transfer with implicit notification | |
CN108628764B (zh) | 用于对存储器缓冲区存取进行细粒度完成跟踪的技术 | |
CN112463028A (zh) | 一种i/o处理方法、***、设备及计算机可读存储介质 | |
US20080126625A1 (en) | Just-in-time buffer allocation for use in event completion style input/output models | |
WO2016006228A1 (ja) | 仮想化システムおよび仮想化方法 | |
CN111737176B (zh) | 一种基于pcie数据的同步装置及驱动方法 | |
JPH05151177A (ja) | 分散処理システム | |
CN111858392A (zh) | 一种内存空间的分配方法及装置、存储介质、电子装置 | |
JP2024074449A (ja) | 通信装置、バッファの解放方法、およびプログラム | |
CN112231250A (zh) | 存储设备的性能隔离 | |
CN116723248A (zh) | 运行任务分配方法、装置、介质和计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |