CN101390043A - 嵌入式系统用的存储器体系结构 - Google Patents
嵌入式系统用的存储器体系结构 Download PDFInfo
- Publication number
- CN101390043A CN101390043A CNA2006800175512A CN200680017551A CN101390043A CN 101390043 A CN101390043 A CN 101390043A CN A2006800175512 A CNA2006800175512 A CN A2006800175512A CN 200680017551 A CN200680017551 A CN 200680017551A CN 101390043 A CN101390043 A CN 101390043A
- Authority
- CN
- China
- Prior art keywords
- storage area
- data
- compression
- equipment
- computer program
- 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.)
- Pending
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
Abstract
公开了一种对诸如嵌入式系统等设备特别有利的存储器管理体系结构。该体系结构提供一个压缩/解压系统用的框架,其优势是基于软件实现,而且既便于指令代码的压缩又便于可写数据的压缩。
Description
技术领域
本发明涉及存储器体系结构,更具体地说,涉及嵌入式系统中进行指令代码和数据处理用的体系结构。
背景技术
嵌入式系统造成严重的设计约束,特别是在尺寸和功率消耗方面。众所周知,诸如存储器等存储设备占嵌入式系统功率消耗的大部分。最好将诸如压缩和加密等变换包含在嵌入式系统中,使存储器的尺寸得以缩小,而同时维持可以接受的性能。
压缩技术是公知的。以前在将压缩包括进嵌入式系统上的工作,一般都聚焦在硬件解决方案上,只对指令段进行压缩。例如,参见L.Benini等人在较低功率电子电路和设计国际会议(ISLPED′99)上发表的“Selective Instruction Compression for Memory Energy Reduction inEmbedded Systems:减少嵌入式系统存储器能量用的选择性指令压缩”(IEEE/ACM Proc.p.206-11(1999))。基于软件的压缩方法由于减少硬件复杂性和在压缩算法的选择方面有较大的灵活性,很有吸引力。有人提出,在带有高速缓存的嵌入式系统中使用基于软件的方法对指令代码进行解压。参见C.Lefurgy和T.Mudge发表于CASES(Compiler and Architecture Support for Embedded Systems:嵌入式系统的编译程序与体系结构支持)‘99(1999年10月)的“快速软件管理的代码解压”一文。已经为Linux/GNU操作系统实现了一个称为CRAMPS的压缩文件系统,该操作系统允许针对嵌入式系统应用对只读代码和数据进行压缩。参见CRAMFS,http://sourceforge.net/projects/cramfs(2002年2月)。集中于只读数据有个优点:只读数据在执行过程中不改变,因此允许在执行以前压缩并在运行时对小部分进行解压。对只读数据进行索引,亦即对压缩流中的数据进行定位,比需要在运行时进行压缩的情况容易得多。
对于许多嵌入式系统应用程序,最好压缩所有包括可写数据的数据区域。可执行(代码)往往包含大的数据区域,诸如对应于在运行期间中可能修改的未初始化数据的.bss区域。更糟的是,可执行(代码)可能具有一个大的动态分配的数据区域。这些区域大而且不加压缩时,它们可能使压缩只读数据的优点大打折扣。
发明内容
公开了一种对诸如嵌入式系统等设备特别有利的存储器管理体系结构。该体系结构包括一个变换引擎(最好用软件实现),它将数据变换为变换形式,例如,该变换引擎可能是压缩/解压引擎,将数据压缩成一个压缩形式,以及/或者该变换引擎可能是加密/解密引擎,它将数据加密为一种加密形式。当程序在一台设备的处理器上执行时,该程序和该程序的数据的一部分被存储在该设备未变换存储区中。随着存储器资源在程序执行的过程中耗尽,利用该变换引擎来将未变换存储区中的程序或数据的至少一个部分变换(例如,压缩)为变换形式,将其移入为该程序或数据变换部分而分配的变换存储区。可以动态地释放该设备的未变换存储区中的存储器资源。该变换存储区在尺寸上可以放大或缩小,这取决于所述系统的需要,例如,要迁移到压缩存储区的压缩部分在该区域目前分配的空间装不下时,所述系统可以自动放大压缩存储区。该变换存储区可以包括存储器分配机构,有利的是,它允许对该程序的变换部分进行随机访问。所公开的体系结构,相应地提供一个压缩/解压系统用的框架,有利的是,它可以基于软件,而且有助于指令代码和可写数据的压缩。
该体系结构允许该存储器管理结构以不同的方式处理该程序的不同部分(例如,指令代码段和数据段和甚至不同类型的数据),包括对该程序不同的部分使用不同的转换技术。程序的只读部分,诸如指令代码,可以从该未变换存储区不加压缩地赶出(dropped),并根据需回读(read back)。通过便于驻留在存储器的指令代码和数据两者的变换/压缩,所述系统可以节省存储开销,并将因压缩/解压造成的性能退化保持在低的程度。有利的是,所公开的变换框架不需要专用硬件或甚至硬件高速缓存来支持压缩/解压。所公开的框架不难在基于盘的或不基于盘的嵌入式系统上实现,并且有利的是,既可以处理动态分配的又可以处理静态初始化的数据。
附图说明
图1描述按照本发明一实施例的系统的体系结构;
图2是描述图1所示系统将数据移向变换存储区时进行的处理的流程图;
图3是用映射表在变换存储区中分配存储器的简要示意图。
具体实施方式
联系附图参照以下详细说明,本发明的这些及其他优点对本专业的普通技术人员将变得显而易见。
图1是按照本发明一个推荐实施例设置的示例性嵌入式系统体系结构的简要示意图。该嵌入式系统包括处理器110和存储器120。处理器110和存储器120不限于任何特定的硬件设计,而是可用一般用于计算系统的任何硬件实现。例如,存储设备120可以用(但不限于)存储器、闪存器件或硬盘等基于盘的存储设备实现。
所述系统包括变换引擎150,其操作将在下文进一步讨论。变换引擎150最好用软件实现。当数据在存储器不同的区域之间移动时,变换引擎150用以自动地在变换状态和未变换状态之间对数据(和指令代码,正如下面进一步讨论的)进行变换。例如,变换引擎150可以实现为压缩/解压引擎,其中变换状态是压缩状态,而其中未变换状态为未压缩状态,但不限于此。作为另一例,变换引擎150可以实现为加密/解密引擎,其中变换状态为加密状态,而未变换状态为解密状态。本发明不限于任何特定的变换技术,包括任何特定的压缩或加密算法。
下面将在压缩变换例的特定背景下(但不限于此),讨论不同的存储器区域的布置和它们在所述系统体系结构中的作用。
如图1所示,存储器120的一个区域分配给未压缩区域122。未压缩区域122可由处理器110访问,并由处理器110在程序执行的过程中存入未压缩的指令代码和数据。本发明不限定于任何特定的对于未压缩区域122的存储器分配技术,而是可使用任何方便的传统技术。当一个程序由处理器110执行时,该程序将利用越来越多的区域122。在存储器资源有限的嵌入式系统中,未压缩区域122可能快速地耗尽存储器资源。因而,最好在程序执行的过程中动态地压缩存储在未压缩区域122中的程序的一些部分。
指令段一般不会在运行期间中改变,自修改代码则是明显的例外,该代码现在很少使用。这意味着一旦离线(执行以前)便可压缩指令代码,并将该代码以一种压缩格式存储在文件系统中,在运行期间中只须解压。对于这样的系统,用只读的方法处理该代码就行。另一方面,数据区域则需要一种不同的策略。数据在执行过程中动态地改变,因此必须在线压缩。数据可包括静态初始化的数据(例如,.bss区)和动态分配的数据。静态初始化的数据占用数量固定的空间,它在开始时往往是非常可压缩的,因为在应用程序初始化时一般用零填充。另一方面,动态分配的数据占用数量可变的空间,而且在嵌入式系统中有时避免使用它,因为它可能要求比所述系统实际上可用的更多的存储量。静态初始化的数据和动态初始化的数据都要求在线压缩技术,因为二者都可被写入。本发明人已经注意到静态初始化的和动态分配的数据区域往往都是高度可压缩的,由于有大片连续零的区域,其压缩效果很好。
应该指出,有利的是所公开的框架既可处理静态初始化的数据又可处理动态分配的数据。
正如下面进一步描述的,因为越来越多的未压缩区域122在该程序执行过程中被耗尽,所述系统配置成动态地压缩存储在未压缩区域122的数据的选定部分,以此在未压缩区域122中释放额外的空间。为了能够维持对该压缩数据的随机访问,所述系统最好为压缩数据分配一个压缩存储区124,它配置得使所述系统随后能够在处理器110需要时检索该压缩数据。压缩存储区124最好按照如下的技术布置,即序号为No.10/869985,题为“MEMORY COMPRESSIONARCHITECTURE FOR EMBEDDED SYSTEM:嵌入式系统用的存储器压缩体系结构”,律师行档案号03041,2004年6月16日提交的共同未决的共同受让实用新型专利申请书中描述的存储器分配技术,该专利的内容通过引用而结合于词,尽管应该指出,也可采用其它存储器分配技术,只要它们能够提供对该压缩数据的随机访问。还应指出,尽管图1描述的压缩存储区124和未压缩区域122是连续的,但是并不要求该两个区域是连续的。正如下面进一步描述的,压缩存储区124可以代表散布在未压缩区域122的存储器的许多不连续部分,而且可以在程序执行的过程中在所述系统需要时从某个最小尺寸增大和缩小。
图2是在程序执行的过程中未压缩区要被耗尽时,图1所示的系统执行的处理的流程图。在步骤210,例如,通过确定未压缩区中空闲的存储器资源数量降低到某个阈值以下,或当一个存储请求不能满足时,所述系统判定未压缩资源量低。在步骤220,所述系统选择未压缩区中要压缩的数据。所述系统可以根据正在存储的数据类型、该数据可压缩性如何、该数据有被处理器使用的频度等进行选择,所述系统可使用已知的技术来选择这样的数据,这样的技术一般用于利用磁盘作为额外的存储空间来扩展物理内存并提供虚拟存储器。选择要压缩的数据之后,所述系统在步骤230利用变换引擎来变换该数据,例如,用有利的快速压缩算法压缩该数据。在步骤240所述系统试图在压缩存储区的现有空闲的存储器资源中为该压缩数据分配空间。若压缩存储区具有现存的空闲存储器资源分配给压缩数据,则该压缩数据在步骤250移入压缩存储区。该数据结构维护在压缩存储区中存储器的分配,在步骤280未压缩区被更新。若压缩存储区没有足够的现存空闲存储器资源来分配给该压缩数据,则所述系统试图将更多存储器分配给压缩存储区,从而扩展压缩存储区的尺寸。这会造成可用于未压缩区的总存储量的减少,正如下面进一步讨论的;但是,据推测通过将大的可压缩数据从未压缩区移到压缩存储区,可以释放出更多的未压缩区。若所述系统成功地在步骤260给压缩存储区分配更多的存储量,则所述系统在步骤250进而将压缩数据移入压缩存储区。若非如此,则所述系统可在步骤290报告出错。
作为另一方案,所述系统可提供一个压缩存储层次结构,其中将不能分配到该压缩存储区的数据移到下一个压缩存储区或该文件系统中的压缩区域。
随着数据从未压缩区域122迁移到压缩存储区124,所述系统必须跟踪什么数据已被移动以及如何检索该数据。如上所述,任何有利的存储器分配技术都可加以利用,尽管用一个映射表来跟踪压缩存储区中的压缩数据是特别有利的,如图3所示。注意,尽管图3所示的压缩存储表现为连续的,压缩存储区320是该存储器中实际分配的存储器地址范围,可以连续也可以不连续。因此,正如上面指出的,区域122和124事实上可为一个压缩和未压缩部分以非连续的方式混合在一起的区域。如图3所示,数据最好压缩成块,映射表310中存放各压缩块的项目311、312、313、...315。每一项目都是一个指针,指向压缩块321、322、...323在压缩存储区中的存储位置。因而,若收到一个对数据段内的压缩块的请求,例如,图3中的压缩块322,则所述系统只需找出压缩块322的映射表项目,也就是项目312,它保存指向该压缩块位置的指针。压缩存储区320中的自由空间可以用自由空间存储位置的链表表达。当所述系统需要为新的压缩数据在压缩存储区320中分配空间时,所述系统可以查阅该链表。当从压缩存储区320取出压缩数据时,它可被移回到未压缩区并释放其空间,并添加到空闲的存储位置的链表中。
正如上面提及的,可以为程序的某些部分保留压缩存储区124,其中包括(但不限于)数据段或某些类型的数据段。压缩存储区的引入可能造成页转移请求次数增加,因为现在工作空间存储器较小(其一部分分配给了压缩存储区),而且可能不足以运行所有进程。数据的移入和移出还会造成传输延迟时间,包括存储器访问时间以及解压和压缩用的时间。但是,所述系统现在能够允许各进程运行,尽管总的物理内存一般不够用;压缩存储区可有效地提供更多的可寻址存储空间。
程序的只读部分(诸如指令代码)可以从未压缩区域122弃置,并根据需要由所述系统从所述系统存储其初始程序和文件的地方回读。还可能将该程序的只读部分存入压缩区域124的预分配部分。本发明不限于存储运行该设备所需的程序文件用的任何特定的体系结构。
应该指出,上面举例说明的存储器管理法容易以许多不同的方法实现。该存储器管理法可被结合到存储器管理代码或该设备的操作系统的有关代码。作为另一方案,该存储器管理法可直接结合到在该处理器上执行的应用程序中。
应该再次指出,本发明不限于任何特定的变换或任何特定的压缩算法。通过选择存储器中要压缩的足够大的(最好1KB以上)字节数,本发明人已经发现,许多通用压缩算法都具有良好的压缩性能。在压缩/解压速度方面,本发明人已经发现,性能最佳的算法往往是基于字典的算法,设计成在压缩和解压过程中使用小的存储量。上述体系结构设计得使它能够容易地“插入”任何有利的压缩算法。还应指出,代码压缩用的压缩算法可以不同于压缩数据或不同类型的数据用的压缩算法,因而,当实现该框架时,人们可以利用指令代码不必压缩的事实,并使用压缩慢但解压快的指令代码用算法。
本发明也不限于单变换形式。上述变换引擎可以对选定的数据部分完成多变换,例如,该引擎可以对选定部分执行压缩,然后对压缩数据完成加密。作为另一方案,该引擎可以有选择地只对压缩存储区中敏感的数据块完成加密和压缩,而同时对驻留在压缩存储区上的其它类型的数据执行压缩。
尽管已经描述和说明了本发明的示例性附图和具体实施例,但应知,本发明的范围并不限于所讨论的特定实施例。因而,这些实施例应该看作是示例性,而非限制性的,还应明白,在不脱离后附权利要求书中提出的本发明的范围和它们在结构上和功能上的等效物的条件下,本领域技术人员可在那些实施例中进行变更。应该明白,作为许多变更中的一种,在本发明的上下文中容易使用压缩以外的变换。另外,尽管本发明具体地联系嵌入式系统作了描述,但是本发明所用的原理可超出嵌入式系统而一般地应用于计算设备。
Claims (20)
1.一种软件实现的在包含处理器和存储器的设备中存储器管理方法,该方法包括以下步骤:
将所述计算机程序及其数据的一些部分,存储在所述计算机程序执行过程中由所述处理器使用的未压缩存储区;以及
随着在所述计算机程序执行过程中存储器资源被耗尽,压缩所述未压缩存储区中的所述计算机程序或数据的至少一部分,并将它移入压缩存储区,从而释放所述未压缩存储区中的资源。
2.权利要求1的方法,其中:若所压缩部分不能装入当前分配的所述压缩存储区的空间内,则将所述压缩存储区扩大。
3.权利要求1的方法,其中:若不需要压缩,则减少所述压缩存储区的大小。
4.权利要求1的方法,其中:所压缩部分是所述计算机程序的数据部分。
5.权利要求4的方法,其中:所压缩部分是保存特定类型的数据的所述计算机程序的数据部分,就是比所述计算机程序的其它部分更容易压缩的部分。
6.权利要求1的方法,其中:所压缩部分用基于字典的压缩算法压缩。
7.权利要求1的方法,其中:所压缩部分在压缩后被加密。
8.权利要求1的方法,其中:利用映射表来跟踪所压缩部分在所述压缩存储区内的位置。
9.权利要求1的方法,其中:所述设备是嵌入式设备。
10.一种设备,包括:
处理器;
存储器;
变换引擎;以及
存储器管理模块,它将程序及其数据的一些部分存储在未变换存储区供所述处理器使用,使用所述变换引擎来变换存储在所述未变换存储区的程序或数据的至少一个部分,并将所变换部分从所述未变换存储区移入为所述程序或数据的变换部分分配的变换存储区。
11.权利要求9的设备,其中:所述变换引擎是加密/解密引擎。
12.权利要求9的设备,其中:所述变换引擎是压缩/解压引擎。
13.权利要求9的设备,其中:所述变换引擎是压缩/解压和加密/解密的组合引擎,其中所述变换引擎在加密前执行压缩。
14.权利要求9的设备,其中:所述存储器管理模块可访问映射表,该表用来跟踪所变换部分在所述变换存储区内的位置。
15.权利要求9的设备,其中:所述设备是嵌入式设备。
16.权利要求9的设备,其中:所述变换引擎和所述存储器管理模块均以软件实现。
17.一种包含处理器和存储器的设备用的存储器管理装置,该装置包括:
存储单元,将所述计算机程序及其数据的一些部分存储在所述计算机程序执行过程中由所述处理器使用的未变换存储区内;以及
变换单元,随着在所述计算机程序执行过程中存储器资源耗尽,变换所述未变换存储区中计算机程序或数据的至少一部分,并将所变换部分移入变换存储区,从而释放所述未变换存储区中的资源。
18.权利要求17的存储器管理装置,其中:所述部分通过对其实施压缩算法而被变换。
19.权利要求17的存储器管理装置,其中:所述部分通过对其实施加密算法而被变换。
20.权利要求17的存储器管理装置,其中:所述设备是嵌入式设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US69639805P | 2005-07-01 | 2005-07-01 | |
US60/696,398 | 2005-07-01 | ||
US11/231,738 | 2005-09-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101390043A true CN101390043A (zh) | 2009-03-18 |
Family
ID=40478421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800175512A Pending CN101390043A (zh) | 2005-07-01 | 2006-06-15 | 嵌入式系统用的存储器体系结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101390043A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103620563A (zh) * | 2011-04-26 | 2014-03-05 | Lsi公司 | 用于非易失性存储器的可变超量配置 |
CN104737137A (zh) * | 2013-10-18 | 2015-06-24 | 三星电子株式会社 | 电子设备的存储器压缩方法及其装置 |
US9389805B2 (en) | 2011-08-09 | 2016-07-12 | Seagate Technology Llc | I/O device and computing host interoperation |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
-
2006
- 2006-06-15 CN CNA2006800175512A patent/CN101390043A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103620563A (zh) * | 2011-04-26 | 2014-03-05 | Lsi公司 | 用于非易失性存储器的可变超量配置 |
CN103620563B (zh) * | 2011-04-26 | 2015-04-29 | Lsi公司 | 用于非易失性存储器的可变超量配置 |
US9389805B2 (en) | 2011-08-09 | 2016-07-12 | Seagate Technology Llc | I/O device and computing host interoperation |
US10514864B2 (en) | 2011-08-09 | 2019-12-24 | Seagate Technology Llc | I/O device and computing host interoperation |
US10936251B2 (en) | 2011-08-09 | 2021-03-02 | Seagate Technology, Llc | I/O device and computing host interoperation |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
CN104737137A (zh) * | 2013-10-18 | 2015-06-24 | 三星电子株式会社 | 电子设备的存储器压缩方法及其装置 |
CN104737137B (zh) * | 2013-10-18 | 2019-07-12 | 三星电子株式会社 | 电子设备的存储器压缩方法及其装置 |
US10895987B2 (en) | 2013-10-18 | 2021-01-19 | Samsung Electronics Co., Ltd. | Memory compression method of electronic device and apparatus thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6658549B2 (en) | Method and system allowing a single entity to manage memory comprising compressed and uncompressed data | |
US7181457B2 (en) | System and method for utilizing compression in database caches to facilitate access to database information | |
CN100371886C (zh) | 基于存储区的数据预取的处理器和方法 | |
Gemmell et al. | Multimedia storage servers: A tutorial | |
US20070005625A1 (en) | Storage architecture for embedded systems | |
Zdonik et al. | Are “disks in the air” just pie in the sky? | |
US6857047B2 (en) | Memory compression for computer systems | |
US5559978A (en) | Method for increasing the efficiency of a virtual memory system by selective compression of RAM memory contents | |
US7610479B2 (en) | Computing device method that presents as a single file system operating system components in both executable and non-executable memory | |
US9792227B2 (en) | Heterogeneous unified memory | |
WO2006009617A2 (en) | Dynamic content-aware memory compression and encryption architecture | |
CN105027093A (zh) | 用于压缩和紧凑虚拟存储器的方法和装置 | |
US11868271B2 (en) | Accessing compressed computer memory | |
CN101390043A (zh) | 嵌入式系统用的存储器体系结构 | |
US20050050108A1 (en) | File system for digital processing systems with limited resources | |
JPH08241241A (ja) | 制約された仮想メモリ環境におけるメモリのパフォーマンスをページング活動の縮小によって改善するための方法及びシステム | |
US20100257312A1 (en) | Data Storage Methods and Apparatus | |
US20170177603A1 (en) | Compressed data rearrangement to optimize file compression | |
GB2517159A (en) | Data processing | |
JPH1195934A (ja) | 情報処理システムの制御方法 | |
JPH08101783A (ja) | ファイルシステム | |
JP6254986B2 (ja) | 情報処理装置、アクセスコントローラ、および情報処理方法 | |
JP2001005679A (ja) | 電子計算機における処理の中断/再開方法 | |
CN101202758B (zh) | 多客户端的网络虚拟存储方法 | |
Henson et al. | Automatic performance tuning in the Zettabyte File System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090318 |