CN103329112B - 用于减少页面错误发生时压缩页面加载时间的方法和装置 - Google Patents
用于减少页面错误发生时压缩页面加载时间的方法和装置 Download PDFInfo
- Publication number
- CN103329112B CN103329112B CN201180051017.4A CN201180051017A CN103329112B CN 103329112 B CN103329112 B CN 103329112B CN 201180051017 A CN201180051017 A CN 201180051017A CN 103329112 B CN103329112 B CN 103329112B
- Authority
- CN
- China
- Prior art keywords
- compression
- mass storage
- subdivision
- storage device
- page
- 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
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0608—Saving storage space on 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/0638—Organizing or formatting or addressing of data
-
- 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00007—Time or data compression or expansion
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/12—Formatting, e.g. arrangement of data block or words on the record carriers
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/12—Formatting, e.g. arrangement of data block or words on the record carriers
- G11B2020/1264—Formatting, e.g. arrangement of data block or words on the record carriers wherein the formatting concerns a specific kind of data
- G11B2020/1288—Formatting by padding empty spaces with dummy data, e.g. writing zeroes or random data when de-icing optical discs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Document Processing Apparatus (AREA)
Abstract
示例性实施方式提供了从大容量存储装置压缩、存储、检索和解压缩分页代码。通过相对于待存储有压缩的虚拟页面的大容量存储装置的存储页面(读取单元)评估所述压缩的虚拟页面的大小,可以做出便于以后读取和解压缩那些压缩的虚拟页面的决策。根据示例性实施方式,基于评估,可以以未压缩的形式、压缩的但未分割的形式、或者压缩的且再分割成多个部分的形式存储虚拟页面。
Description
技术领域
本发明总体涉及与大容量存储装置关联的存储器管理,并且尤其涉及减少来自这样的大容量存储装置的压缩页面加载时间。
背景技术
电子装置的存储器(也称为随机存取存储器或RAM)被分成存储页面,存储页面为虚拟存储器到物理存储器的映射的最小单元。由于这样的存储页面由MMU(存储器管理单元)管理,故该存储页面也称为MMU页面,或者更一般地称为虚拟页面。分页的原理包括仅当需要这些页面中的代码/数据时将来自大容量存储器(嵌入式闪存存储器,例如,NAND)的页面加载到RAM。这避免了在装置启动(启动或通电)时必须加载很少使用的代码,从而释放更多的RAM用于执行更频繁地用于其他功能的代码。为了分页的目的,分页缓存器(也称为RAM中的交换存储器或者交换缓存器)被分配,其包含最近加载的分页区域。当位于分页存储器中的存储器地址处的代码被调用时,相应的页面没有在分页缓存器中,发生页面错误,这触发将来自大容量存储器(闪存)的页面加载到RAM中的分页缓存器。当页面被载入RAM时,该代码随后可以被该装置的处理器存取。
为了节省大容量存储装置中的空间,制造商希望压缩待存储在其中的代码。存储在大容量存储装置中的代码通常以两种不同的方式被编组。更具体地,在启动时由该装置加载的代码部分被称为未分页代码以及在启动时未加载(即,当页面错误发生时反而需要加载)的代码部分被称为分页代码。对于在启动时必须被加载到RAM中的未分页代码,加载到RAM中相对简单,如现将相对于图1(a)和图1(b)所描述的。
未分页代码可以以未压缩的方式或者压缩的方式存储在大容量存储装置(如闪存存储器)中。如果未被压缩,则该装置的启动代码以逐页(page-wise)的方式读取未分页代码并且将各个页面复制到RAM。如果被压缩,则未分页代码通常被缩小成小的预定义的数据块,例如,各个MMU页面100被压缩成相应的8k大小的块102,如图1(a)所示。可以理解,在该示例中所用的8k的块大小仅为说明性的,并且块大小例如可以基于在解压缩中可用的临时缓存大小而变化。如在图1(b)中可见,未分页代码的读取包括通过例如发出直接存储器存取(DMA)请求104而从大容量存储器103读取压缩块。在将该块读取到临时缓存器106之后,通过中央处理单元(CPU)108对该块执行解压缩算法,并且解压缩后的MMU页面100随后被存储在RAM110中。如果用于该块的大容量存储器读访问时间为n毫秒并且解压缩时间为m毫秒(ms),则用来从大容量存储器103读取和解压缩数据块的时间为n+m毫秒。解压缩具有p个块的未分页代码的总时间为p*(n+m)毫秒。
解压缩所压缩的未分页代码的另一方式为通过使用两个缓存器106并行读取和压缩,即,一个缓存器用来读取压缩块同时在另一个缓存器中另一压缩块被解压缩,并且随后以交替循环的方式在这两个缓存器之间切换操作(读取/解压缩)。该并行化加速了未分页代码的解压缩。然而,通过并行化而提供的速度改进对该装置的整体性能往往不是关键的,这是因为例如未分页代码被压缩在大的固定大小的块中,使得必须读取完整的块以启动解压缩,并且启动时期不被视为与一旦装置“准备启动”和被使用时执行的装置操作一样对时间敏感。
通过对比,加速分页代码的加载更加重要,这是因为,当页面加载发生时,该装置的一些操作***不能安排其他任务,并且对于一些装置,在从大容量存储装置加载分页代码期间不能中断。由于该装置的可用RAM存储器是有限的,故按照需求仅将所需的页面加载到分页缓存器。如果页面在物理地址空间中不可用,则发生页面错误。当页面错误发生时,所压缩的页面必须由分页管理器或存储器管理器识别、解压缩并且复制到RAM。页面错误应该具有最小可能的延迟以满足该装置的其他正在进行的进程的实时期限。
在分页代码的加载中的另一考虑因素为,以与RAM被分成各个可存取的MMU页面的方式相同的方式,大容量存储装置被分成各个可存取的大容量存储页面(例如,NAND页面),该大容量存储页面与MMU页面可具有不同的大小。因此,可取的是:对于在存储之前被再分的MMU页面,对MMU页面的子部分以一方式进行计算,使得压缩的MMU页面符合固定数量的大容量存储页面以便限制对大容量存储器的读访问的数量从而减少加载页面的延迟。
根据用于解决该问题的一个已知的解决方案,各个MMU页面也被压缩成一个块。然后,相对于大容量存储器存储页面放置所得到的块,使得各个压缩块被完全存储在一个大容量存储页面边界或者可以跨越至多一个大容量存储页面边界,以确保用来获取未压缩的MMU页面的读访问的数量与用来获取压缩的MMU页面的读访问的数量是相同的。
然而,例如,由于存储的数据块中的部分或全部跨越大容量存储器存储页面并且需要获取整个块以便开始解压缩过程,因此这些已知的解决方案不能并行读取和解压缩数据块。因此,示例性实施方式通过提供用于处理压缩页面加载的新的方法和***而寻求克服上述问题中的一个或多个问题。
发明内容
发明人已经认识到,在仅给出大容量存储装置中的所需的压缩的(或未压缩的)分页代码的位置的情况下,可以恢复该分页代码。此外,发明人还发现用于实现这一点的方法。该方法要求对大容量存储装置的最小的访问次数,并且其对于页面错误处理不增加明显的延迟。
除了其它的益处和优点之外,示例性实施方式还提供了用于从大容量存储装置压缩、存储、检索和解压缩分页代码的方法。通过评估压缩虚拟页面相对于待存储该压缩虚拟页面的大容量存储装置的存储页面(读取单元)的大小,可以做出便于以后读取和解压缩那些压缩虚拟页面的决定。根据示例性实施方式,基于评估,虚拟页面可以以未压缩的形式、压缩的但未分割的形式、或者压缩的且再分割成多个部分的形式而存储。
根据示例性实施方式,一种用于将具有多个虚拟页面的分页代码存储在大容量存储装置中的方法包括下列步骤:压缩各个虚拟页面以生成具有压缩大小的压缩的虚拟页面;相对于大容量存储装置的页面大小评估所述压缩的虚拟页面中的每个压缩的虚拟页面的压缩大小;基于评估步骤且对于每个虚拟页面,确定是否以未压缩的形式、压缩的但未再分割的形式、或者再分割的且压缩的子部分的形式存储相应的虚拟页面;以及,基于所述决定将各个虚拟页面存储在大容量存储装置中。
根据一个实施方式,一种用于将具有多个虚拟页面的代码存储在大容量存储装置中的方法包括:压缩各个虚拟页面以生成相应的具有相应的压缩大小的压缩的虚拟页面;相对于所述大容量存储装置的页面大小评估所述压缩的虚拟页面的中的每个压缩的虚拟页面的压缩大小;以及基于相应的虚拟页面的未压缩大小和/或相应的虚拟页面的压缩大小,以未压缩的形式、压缩的但未再分割的形式、或者再分割的且压缩的子部分的形式将所述虚拟页面中的每个虚拟页面存储在大容量存储装置中。
根据另一示例性实施方式,一种已在其内将多个虚拟页面存储在多个大容量存储装置页面中的大容量存储装置包括:所述多个大容量存储装置页面;存储在所述多个大容量存储装置页面中的一个或多个大容量存储装置页面中的至少一个未压缩的虚拟页面;存储在所述多个大容量存储装置页面中的一个大容量存储装置页面中的至少一个压缩的且未分割的虚拟页面;以及作为至少两个压缩的子部分被存储在所述多个大容量存储装置页面中的不同的大容量存储装置页面中的至少一个压缩的且再分割的虚拟页面。
根据另一示例性实施方式,一种用于从大容量存储装置检索具有多个虚拟页面的分页代码的方法包括下列步骤:对于再分割的虚拟页面,从第一大容量存储装置页面检索所述再分割的虚拟页面的第一压缩子部分;解压缩所述第一压缩子部分;并行于所述第一压缩子部分的所述解压缩,检索所述再分割的虚拟页面的第二压缩子部分;解压缩所述第二压缩子部分;将所解压缩的第一子部分添加到所解压缩的第二子部分以重建所述再分割的虚拟页面;以及将所述再分割的虚拟页面存储在随机存取存储器(RAM)中。
根据另一示例性实施方式,一种电子装置包括:第一存储器接口,所述第一存储器接口被配置成连接至少一个大容量存储装置;第二存储器接口,所述第二存储器接口被配置成连接至少一个随机存取存储器(RAM);处理器,所述处理器被配置成执行存储器管理功能,当至少一个闪存存储器装置被连接到存储器接口时,所述存储器管理功能通过响应于来自所述至少一个闪存存储器装置的页面错误检索与二进制文件关联的虚拟页面,来处理所述页面错误,其中所述存储器管理功能被配置成:对于再分割的虚拟页面,从所述至少一个大容量存储装置中的第一大容量存储装置页面检索所述再分割的虚拟页面的第一压缩子部分;解压缩所述第一压缩子部分;并行于所述读取检索所述再分割的虚拟页面的第二压缩子部分;解压缩所述第二压缩子部分;将所解压缩的第一子部分添加到所解压缩的第二子部分以重建所述再分割的虚拟页面;以及当RAM被连接到第二存储器接口时将所述再分割的虚拟页面存储在所述RAM中。
附图说明
在以下说明和附图中将例证本发明的特征,其中:
图1(a)和图1(b)示出未分页代码的压缩和解压缩;
图2描述根据示例性实施方式的电子装置,在该电子装置中,分页代码可以被检索和解压缩;
图3描述根据示例性实施方式的用于将分页代码评估、压缩和存储到大容量存储装置中的***;
图4为示出根据示例性实施方式的用于评估、压缩和存储分页代码的方法的流程图;
图5(a)为根据示例性实施方式的分页代码的评估、压缩、重新排序和存储的示图;
图5(b)为根据另一示例性实施方式的分页代码的评估、压缩、重新排序和存储的示图;
图6示出根据示例性实施方式的映射表;
图7示出根据示例性实施方式的虚拟页面的两个压缩子部分或块的检索和解压缩;
图8为示出用于将具有多个虚拟页面的分页代码存储在大容量存储装置中的方法的流程图;和
图9为示出用于从大容量存储装置检索具有多个虚拟页面的分页代码的方法的流程图。
具体实施方式
示例性实施方式的以下详细描述参考附图。不同的附图中的相同的附图标记表示相同的或类似的元件。此外,以下详细描述不限制本发明。本发明的范围仍然由所附权利要求书来限定。
示例性实施方式提供了用于改善来自大容量存储装置的分页代码的加载的各种方法和***。根据一个示例性实施方式,分页的分区的数据以这样的方式被压缩:与如果MMU页面未被压缩(MMU页面边界排列在存储页面上)相比,读取检索未压缩的MMU(虚拟)页面的数据所需的压缩数据不需要更多的大容量存储器访问且以最低的延迟完成解压缩。通常,示例性实施方式提供了在压缩和存储之前被分成多个部分并且以多个部分的形式读取的至少一些分页的代码数据,以例如对于时间临界的数据处理增加数据的并行读取和解压缩。
更具体地,根据各种规则示例性实施方式分别压缩各个MMU页面。例如,如果MMU页面可压缩成小于一个大容量存储页面的尺寸,则MMU页面被压缩为单个数据块并且被存储在单个大容量存储页面内。可替选地,如果MMU页面不能被压缩到单个大容量存储页面内,则MMU页面被分成多个块,各个块分别被压缩。在解压缩期间,这些多个压缩块可以从大容量存储装置与解压缩并行地被读取。例如,可以对存储为分页代码的各个二进制文件提供映射表,该映射表可由存储器管理器使用以在给出待加载到RAM中的MMU页面的地址时检索正确的块。
在下文将更详细地描述这些实施方式和其他实施方式。然而,首先对读者提供一些关于示例性装置的背景将是有用的,在该装置内,根据示例性实施方式的分页代码可以首先存储在大容量存储装置中并且随后在操作期间被加载到RAM中。现参考图2,装置200(例如,移动电话、计算机、PDA等)包括RAM存储器202、处理器204、大容量存储装置(例如,闪存存储器)206和多个缓存器208。RAM存储器202和大容量存储装置206可以借助被配置成接收那些存储装置的相应的存储器接口203和存储器接口209(例如,芯片插槽)而连接到电子装置200。
例如,大容量存储装置206中已存储分页代码,该分页代码存储在大容量存储装置(MSD)页面210中,该页面210与可以与在处理器204上执行的一个或多个二进制文件相关联,该分页代码至少部分被压缩(例如,在工厂中,在该工厂中大容量存储装置被制造或者其被预先加载有软件代码,该软件代码在启动后被加载到装置200中)。装置200通常具有在处理器204上运行的操作***212与一个或多个应用程序或任务,该一个或多个应用程序或任务中的一个可以是存储器管理单元(MMU)214,该存储器管理单元214操作以配合访问例如RAM202和大容量存储装置210。如下文所述,示例性实施方式包括大容量存储装置206和整个装置200以及与其关联的方法,该大容量存储装置206独立地(即,在借助存储器接口209连接到装置200之前)具有以下文将更详细地描述的方式存储在其中的分页代码。
根据示例性实施方式,MMU页面被压缩并且按顺序存储在大容量存储装置206中的方式旨在实现特定目的。例如,被压缩成小于一个大容量存储页面大小的MMU页面应该优选地被存储在大容量存储装置206中,使得在操作期间,这样的MMU页面可以在对大容量存储装置206的单一访问中被访问。由于相对于MMU页面没有被压缩时的情况,这不需要多次访问大容量存储装置206,因此该特征可以在加载MMU页面中节省大量的时间和甚至解压缩成本。此外,对于被压缩到超过与大容量存储装置206关联的一个大容量存储页面的大小的MMU页面,根据示例性实施方式,对大容量存储页面的读访问可以与解压缩并行以便减少页面加载和解压缩的组合延迟。
在被连接到装置200之前,大容量存储装置206加载有分页代码,例如在加载空的大容量存储装置的制造设备或分配设备中,或者可以在组装装置200的制造设备中。不管位置如何,示例性实施方式还提供一种将分页代码加载到大容量存储装置206中以实现上述(和其它)目的的机构。例如,大容量存储装置加载机构300可以包括图3中示出的元件。其中,运行压缩算法304的处理器302接收一系列MMU页面306,该一系列MMU页面与例如待存储在大容量存储装置206上作为分页代码的二进制文件相关联。各个MMU页面306首先通过算法304进行压缩,并且随后通过处理器302评估以确定其应该如何被存储在大容量存储装置206中。如下文更详细的描述,该评估包括:首先做出关于各个MMU页面306将如何存储在一个块或多个块(如由缓存器308概念性地表示)中的决策,并且随后通过将那些块重新排序成最终的存储模式(如由缓存器310概念性地表示),以使各个MMU页面306存储在MSD210中的MSD页面206中。应该理解,通过图3表示的特定的方法和***仅是说明性的并且可以有许多不同的方式,在这些方式中,实际的分页代码被存储在MSD206中。
图4的流程图描述了根据一个示例性实施方式的用于将分页代码存储在MSD206中的方法。首先,在步骤400中,通过借助压缩算法304运行MMU页面来压缩待存储在大容量存储装置中的各个MMU页面以确定其压缩大小。压缩大小随后与被标准化以用于将分页代码存储在大容量存储装置206中的多个预定块大小比较(步骤402),如果压缩大小与预定块大小中的一个块大小不匹配,则在步骤404中可以将填充符加入压缩大小以到达下一个最高预定块大小。应该注意,尽管预定块大小通常是固定的,以用于将代码存储在特定的MSD206中,然而预定块大小可以在不同的MSD206和/或不同的实现方式(例如具有不同的MMU页面大小)之间变化。
例如,假设对于特定的装置200(或RAM202)MMU页面大小为4kB。预定块大小例如可包括4kB(即,未压缩)、3kB、2.5kB、2kB、1.5kB、lkB、0.5kB,然而应该理解这样的大小仅仅为说明性的并且将取决于各个实施参数。因此,如果MMU页面的压缩大小是2.7kB,则在步骤404中可以加入0.3kB的填充符以将其提高到下一个3kB的预定块大小。框406的输入因此将具有多个预定块大小(其在本文中称为“与压缩的MMU页面关联的预定块大小”)之一的大小值。可替选地,将具有多个虚拟页面的代码存储在大容量存储装置中的实施方式可以被实现而无需填充。
在步骤406中,与压缩的MMU页面关联的预定块大小随后与最大块大小比较。如果与该压缩的MMU页面关联的预定块大小大于或等于最大块大小(例如,其可以设定为MMU页面的大小),则这意味着压缩该特定的MMU页面将不减少从大容量存储装置206检索该MMU页面所需的大容量存储装置读访问的数量,并且因此该MMU页面应该以未压缩的形式存储在大容量存储装置206中,如步骤408所示。使用上文以说明性方式列举的示例性预定块大小,这将意味着,如果该压缩的MMU页面大于3kB(在步骤404中填充到4kB),则其将被存储在缓存器308中,并且最终以未压缩的形式被存储在大容量存储装置206中。作为步骤406的替选,可以执行任何所需的测试以确定是否以未压缩的形式而不是使用压缩存储正被评估的MMU页面。该处理流程随后继续进行以选择并且处理下一个MMU页面,如框410所示。
另外,如果与压缩的MMU关联的预定块大小小于最大块大小,则按照自决策块406的“否”分支进行处理。在步骤412中,与压缩的MMU页面关联的预定块大小与MSD页面的大小比较。如果MMU页面的压缩大小小于或等于MSD页面的大小,则流程沿着自决策块412的“是”路径到框414,在框414中,以压缩的形式将该MMU页面存储在缓存器308中(或者标记为待压缩而不再分割的),在被压缩用于存储的二进制文件中继续处理下一个MMU页面。此外,这能够使与MSD页面的大小相同大小(可能具有填充)的压缩的MMU页面被存储在如下文所述的单个MSD页面中。
另外,如果与压缩的MMU页面关联的预定块大小大于MSD页面大小,则根据该示例性实施方式,未压缩的MMU页面应该被再分割成两个独立的块,每个块被独立地压缩使得这两个压缩块大小小于该MSD页面大小。这些块随后被填充到预定块大小并且被存储,如沿着“否”路径到框416所示。这使得这些类型的压缩的MMU页面中的每个类型的压缩的MMU页面的两个子部分能够被分别并行读取且解压缩,如下文更详细地描述。如步骤416所示,该MMU页面被再分割,随后各个子部分被压缩,并且如果需要,各个子部分被填充至达到如上文所述的预定块大小中的一个块大小。在步骤418中,所得到的子部分随后被存储在缓存器308中(或者该MMU页面可以被标记用于处理成子部分)。作为说明性示例,如果与压缩的MMU页面关联的预定块大小是3.0kB,则未压缩的MMU页面可以被分成两个子部分,这两个子部分中的每个子部分被独立地压缩使得该压缩块小于MSD页面大小并且可选地被填充以生成大小为2.0kB和1.0kB的子部分。
根据该示例性实施方式,一旦与给定的二进制文件关联的所有MMU页面已经如上文所述被处理,则得到的与一个或多个未压缩的MMU页面、压缩的MMU页面和压缩的MMU页面子部分相关联的块被重新排序,如框422所指示的。例如,这些块可以基于它们的相对大小被重新排序。作为更详细的示例,并且使用上文所述的预定块大小的示例,存储在缓存器308中的块可以被重新排序成具有首先4kB块、随后2kB、随后1.5kB块、随后1kB块和随后0.5kB块的序列以生成如图3中重新排序的缓存器310所表示的一组重新排序的块。这些块随后可以以该顺序存储在大容量存储装置210中,如步骤424所指示的。
图5(a)提供了上述方法的第一图解示例以进一步示出根据示例性实施方式的其过程和结果。其中,MMU页面大小又是4kB,MSD页面大小又是2kB以及预定块大小又是4kB(即,未压缩的)、3kB、2.5kB、2kB、1.5kB、lkB和0.5kB。在图中从左向右移动,考虑列500中的分别具有4kB大小的四个MMU页面1-4,通过***300使用图4的方法来处理这四个页面。在该示例中,MMU页面1压缩到4kB的预定块大小(即,不需要压缩该页面),MMU页面2压缩到1.5kB,MMU页面3压缩到2kB以及MMU页面4压缩到2.5kB。应该注意,尽管本文提供的示例的MMU页面被再分割为两个子部分,这两个子部分随后分别被压缩以存储在MSD206中,但是本发明并不限于此。可以有两个以上的子部分,通常,子部分的数量将基于MMU页面与MSD页面的相对大小,即MMU页面大小/大容量存储装置页面大小。
使用上文关于图4描述的示例性决策算法,因此,明显的是:MMU页面1因此将以未压缩的形式存储在两个MSD页面中,MMU页面2将以压缩且未分割的形式存储在单个MSD页面中,MMU页面3也将以压缩且未分割的形式存储在单个MSD页面中。由于压缩后的MMU页面4的大小大于MSD页面大小,例如,其将跨越MSD页面边界,故MMU页面被分成两个并且再次压缩使得所压缩的两个块小于一个MSD页面并且四舍五入至2KB和0.5KB。参考图5(a),与MMU页面4(如4(1)和4(2))关联的两个块随后将被压缩并且存储为再分割和压缩的部分。
然而,在列502中的块以与这些块来源的MMU页面的顺序相同的顺序被布置,这些块随后基于它们的大小被重新排序以生成列504。如果在MSD页面中的压缩块没有充满该页面,则可以加入填充(尽管在图5(a)中未示出)。最后一组MSD页面准备用于存储在大容量存储装置210中,如列506所指示的,其中该列的右手侧上的横向标记指示MSD页面边界相对于其包含的MMU页面块的相对位置。因此未压缩的MMU页面1跨越两个MSD页面,压缩的但未再分割的MMU页面3跨越一个MSD页面,压缩的且再分割的MMU页面4具有一个占据整个MSD页面的压缩的部分4(2)和与压缩的但未分割的MSD页面2一起占据MSD页面的另一部分4(1)。在列506中还包括映射表508,该映射表随后将使MMU214能够定位用于以后从MSD206检索的块,如下文将更详细地描述。
上述图5(a)的实施方式提供了基于数据块各自的大小重新排序该数据块(这是图4中的步骤402到步骤418描述的评估过程的结果)。然而,在将缓存器308中的数据块存储在大容量存储装置206之前,可以对该数据块进行其他类型的重新排序。例如,根据图5(b)中示出的另一示例性实施方式,缓存器308中的块可以按如下方式被重新排序,以确保如果压缩的页面大小小于一个存储页面大小,则理想地仅进行一次读访问。首先,将所有的未压缩块放置在MSD的起始处。因此,如图5(b)所示,页面1(其未压缩)被放置在列510的顶部。
其次,大小小于一个MSD存储页面的所有的压缩块(使得没有页面跨越MSD页面边界)按如下方式被放置。如果前一个块被放置的当前偏移在MSD存储页面N内,则在页面N+1开始之前找到合适的最大的压缩块。例如,用于列502中MMU页面2的压缩块和MMU页面3的压缩块分别被压缩到1.5k和2k。2k的块可以先被放置在其自己的MSD页面中。如果没有这样的块,则根据偏移加入填充字节直到页面N的结尾,并且随后存储保持在页面N+1的起始处的最大的压缩块并且重复这些步骤。
在处理未压缩的块和压缩大小小于一个MSD存储页面大小的那些块之后,剩余的块(其大小m大于一个存储页面大小n)可以按如下方式进行处理。首先,将MMU页面分割成m/n块,然后将第一块压缩到页面N上的剩余空间,并且最终将剩余的块按照大小顺序n、n-1...、2、1、1/2、1/3、1/4压缩。可以从图5(b)中看出该最后的步骤的示例,在列510中,通过MMU页面4生成的2.5k压缩块被分成两个块,其中,从该2.5k的块取出0.5k的块以补充置于上一个MSD页面中的1.5k的块,剩余的2k块占据列510中最后一个(最下部)的MSD页面。
一个实施方式可以选择不填充各个压缩块到预定块大小。在重新排序步骤422期间,对于各个MSD页面,如0046段中说明的采用贪心法以容纳尽可能多的压缩块和填充剩余部分至MSD页面大小。
不管所用的特定重新排序方案如何,为了定位根据示例性实施方式的压缩布局中的相应页面,建立映射表。根据示例性实施方式,映射表的第一个条目包含二进制分区中的MMU页面的总数量,随后是按照例如它们的位置和块大小的顺序的压缩页面的页面细节。对于存储页面大小s和MMU页面大小m(m>s),页面细节条目包含用于存储压缩块的偏移的m/s个条目和用于存储压缩块大小的m/s个条目。图6提供了该映射表600的示例。然而,本领域的技术人员将可以理解,映射表600可以采用任何所需的格式并且可以含有任何所需的信息,其将使MMU214能够提取、解压缩和重组存储在其中的页面代码的各个块。
根据示例性实施方式,如图7所示,可以由装置200访问(读取)分页代码,该分页代码如上文所示被压缩且再分割以存储在MSD206中。在识别存储空间中所需的压缩的MMU页面之后(即,通过读取映射表600),进行DMA读访问以读取与该MMU页面关联的第一压缩块。第一块可以被读入缓存器208a中。在读取第一块之后,解压缩算法(其以与压缩算法304相反的方式操作)解压缩第一块。在同一时间内,在第一块被解压缩的同时,对于如同第一块与相同的MMU页面关联的第二压缩块,再次使用来自映射表600的信息,通过处理器204(或DMA单元)进行另一次DMA读访问。该第二块可以读入另一缓存器208b,并且随后可以被解压缩并且与解压缩的第一块接合以形成重组的MMU页面,该重组的MMU页面存储在例如RAM202中。
前述示例性实施方式提供了评估和压缩关于大容量存储装置的分页代码,以及从该大容量存储装置检索和解压缩该分页代码。除了其他优点之外,示例性实施方式还提供了加载所需页面的最佳方法,并且,以降低与页面错误处理关联的延迟和改善分页代码检索过程的实时性能的方式不产生页面加载和解压缩的***开销。
根据一个示例性实施方式,一种用于将具有多个虚拟页面的分页代码存储在大容量存储装置中的方法包括图8的流程图中示出的步骤。其中,在步骤800中,压缩虚拟页面以生成具有压缩大小的压缩的虚拟页面。在步骤802中,相对于所述大容量存储装置的页面大小,评估所压缩的虚拟页面的压缩大小。基于评估步骤,基于虚拟页面的未压缩大小或压缩大小以未压缩的形式、压缩的但未再分割的形式、或者再分割的且压缩的子部分的形式存储该虚拟页面。
在图9的流程图中示出一种根据示例性实施方式的用于从大容量存储装置检索具有多个虚拟页面的分页代码的方法。其中,在步骤900中,从大容量存储装置检索再分割的虚拟页面的第一压缩子部分。在步骤902中,该第一压缩子部分被解压缩。在步骤904中,并行于该解压缩步骤,从大容量存储装置检索与相同的再分割的虚拟页面关联的第二压缩子部分。在步骤906中,第二压缩子部分被解压缩,然后,在步骤908中,将第二压缩子部分添加到所解压缩的第一子部分以重建虚拟页面。然后,在步骤910中,将该重建的虚拟页面存储在RAM中。
上述示例性实施方式旨在在所有方面说明而不是限制本发明。因此,本发明能够具有本领域的技术人员可以从本文包含的说明获取的具体实现方式的多个变型。所有这样的变型和改动被视为在由所附的权利要求书所限定的本发明的范围和精神内。本申请的说明书中所用的元件、动作或指令不应该理解为对于本发明而言是关键的或必不可少的,除非有如此的清楚描述。此外,如本文所使用的冠词“一”旨在包括一个或多个项目。
Claims (13)
1.一种用于从大容量存储装置检索具有多个虚拟页面的分页代码的方法,所述方法包括:
对于再分割的虚拟页面,检索所述再分割的虚拟页面的第一压缩子部分;
解压缩所述第一压缩子部分;
并行于所述第一压缩子部分的所述解压缩,检索所述再分割的虚拟页面的第二压缩子部分;
解压缩所述第二压缩子部分;
将所述解压缩的第一子部分添加到所述解压缩的第二子部分以重建所述再分割的虚拟页面;以及
将所述再分割的虚拟页面存储在随机存取存储器RAM中。
2.根据权利要求1所述的方法,其中,所述检索步骤还包括:
读取存储在所述大容量存储装置中的映射表以确定所述第一压缩子部分在所述大容量存储装置中的第一位置并且确定所述第二压缩子部分在所述大容量存储装置中的第二位置。
3.根据权利要求1所述的方法,其中,所述第一压缩子部分和/或所述第二压缩子部分包括使所述第一压缩子部分和/或所述第二压缩子部分能够达到多个预定块大小中的一个预定块大小的填充。
4.根据权利要求1所述的方法,还包括:
从所述大容量存储装置检索所述多个虚拟页面中的未压缩的一个虚拟页面。
5.根据权利要求1所述的方法,还包括:
从所述大容量存储装置检索来自所述多个大容量存储装置页面中的一个大容量存储装置页面中的压缩的且未分割的虚拟页面。
6.根据权利要求1所述的方法,其中,以大小顺序将所述第一压缩子部分、所述第二压缩子部分、压缩的虚拟页面和未压缩的虚拟页面存储在所述大容量存储装置中。
7.一种电子装置,包括:
第一存储器接口,所述第一存储器接口被配置成连接至少一个大容量存储装置;
第二存储器接口,所述第二存储器接口被配置成连接至少一个随机存取存储器RAM;
处理器,所述处理器被配置成执行存储器管理功能,所述存储器管理功能包括:当所述至少一个大容量存储装置连接到所述第一存储器接口时,检索与来自所述至少一个大容量存储装置的文件关联的虚拟页面,
其中,所述存储器管理功能被配置成:对于再分割的虚拟页面,从所述至少一个大容量存储装置中的第一大容量存储装置页面检索所述再分割的虚拟页面的第一压缩子部分;解压缩所述第一压缩子部分;并行于所述解压缩检索所述再分割的虚拟页面的第二压缩子部分;解压缩所述第二压缩子部分;将所述解压缩的第一子部分添加到所述解压缩的第二子部分以重建所述再分割的虚拟页面;以及当所述RAM连接到所述第二存储器接口时将所述再分割的虚拟页面存储在所述RAM中。
8.根据权利要求7所述的电子装置,其中,响应于页面错误而执行与所述文件关联的虚拟页面的检索。
9.根据权利要求7所述的电子装置,还包括:存储在所述至少一个大容量存储装置中的映射表,所述映射表包括所述第一压缩子部分在所述大容量存储装置中的第一位置和所述第二压缩子部分在所述大容量存储装置中的第二位置。
10.根据权利要求7所述的电子装置,其中,所述第一压缩子部分和/或所述第二压缩子部分包括使所述第一压缩子部分和/或所述第二压缩子部分能够达到多个预定块大小中的一个预定块大小的填充。
11.根据权利要求7所述的电子装置,其中,所述大容量存储装置包括存储在多个大容量存储装置页面中的至少一个大容量存储装置页面中的所述多个虚拟页面中的未压缩的一个虚拟页面。
12.根据权利要求7所述的电子装置,其中,所述大容量存储装置包括存储在多个大容量存储装置页面中的一个大容量存储装置页面中的压缩的且未分割的虚拟页面。
13.根据权利要求7所述的电子装置,其中,所述大容量存储装置具有以大小顺序存储在所述大容量存储装置中的所述第一压缩子部分、所述第二压缩子部分、压缩的虚拟页面和未压缩的虚拟页面。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN2533/DEL/2010 | 2010-10-22 | ||
IN2533DE2010 | 2010-10-22 | ||
PCT/EP2011/067826 WO2012052336A2 (en) | 2010-10-22 | 2011-10-12 | Methods and devices for reducing compressed page loading time on page fault |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103329112A CN103329112A (zh) | 2013-09-25 |
CN103329112B true CN103329112B (zh) | 2015-12-16 |
Family
ID=44785879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180051017.4A Active CN103329112B (zh) | 2010-10-22 | 2011-10-12 | 用于减少页面错误发生时压缩页面加载时间的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10459840B2 (zh) |
EP (1) | EP2630573B1 (zh) |
CN (1) | CN103329112B (zh) |
WO (1) | WO2012052336A2 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996839B1 (en) | 2012-01-23 | 2015-03-31 | Western Digital Technologies, Inc. | Data storage device aligning partition to boundary of sector when partition offset correlates with offset of write commands |
US9063838B1 (en) * | 2012-01-23 | 2015-06-23 | Western Digital Technologies, Inc. | Data storage device shifting data chunks of alignment zone relative to sector boundaries |
US10102148B2 (en) * | 2013-06-13 | 2018-10-16 | Microsoft Technology Licensing, Llc | Page-based compressed storage management |
KR20150057068A (ko) * | 2013-11-18 | 2015-05-28 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US20150242432A1 (en) * | 2014-02-21 | 2015-08-27 | Microsoft Corporation | Modified Memory Compression |
US9684625B2 (en) | 2014-03-21 | 2017-06-20 | Microsoft Technology Licensing, Llc | Asynchronously prefetching sharable memory pages |
US9720821B2 (en) * | 2014-09-17 | 2017-08-01 | Storart Technology Co. Ltd. | Adaptive compression data storing method for non-volatile memories and system using the same |
US9977598B2 (en) * | 2014-10-27 | 2018-05-22 | Mediatek Inc. | Electronic device and a method for managing memory space thereof |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
US10037270B2 (en) | 2015-04-14 | 2018-07-31 | Microsoft Technology Licensing, Llc | Reducing memory commit charge when compressing memory |
US20160320972A1 (en) * | 2015-04-29 | 2016-11-03 | Qualcomm Incorporated | Adaptive compression-based paging |
CN106230924A (zh) * | 2016-07-28 | 2016-12-14 | 杭州迪普科技有限公司 | 报文的压缩方法和装置 |
US11086822B1 (en) * | 2016-09-13 | 2021-08-10 | Amazon Technologies, Inc. | Application-based compression |
US10268543B2 (en) * | 2017-01-27 | 2019-04-23 | Hewlett Packard Enterprise Development Lp | Online volume repair |
CN107145333B (zh) * | 2017-04-21 | 2020-04-14 | 建荣半导体(深圳)有限公司 | 数据操作方法及其装置、应用、单片机及嵌入式*** |
CN107122312B (zh) * | 2017-05-05 | 2019-12-17 | 苏州浪潮智能科技有限公司 | 一种固态盘地址映射方法 |
KR102202211B1 (ko) * | 2019-03-28 | 2021-01-13 | 국민대학교산학협력단 | 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치 및 방법 |
US11042329B2 (en) * | 2019-05-21 | 2021-06-22 | International Business Machines Corporation | Reordering a sequence of files based on compression rates in data transfer |
CN110457235B (zh) * | 2019-08-20 | 2021-10-08 | Oppo广东移动通信有限公司 | 内存压缩方法、装置、终端及存储介质 |
CN111625481B (zh) * | 2020-04-28 | 2022-07-26 | 深圳市德明利技术股份有限公司 | 一种防止闪存比特错误放大的方法和装置以及设备 |
FR3118513B1 (fr) * | 2020-12-29 | 2023-04-07 | Stmicroelectronics Grand Ouest Sas | Procédé d’augmentation du nombre d’applications dans un dispositif à mémoire limitée |
US20220291858A1 (en) * | 2021-03-15 | 2022-09-15 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
CN114003169B (zh) * | 2021-08-02 | 2024-04-16 | 固存芯控半导体科技(苏州)有限公司 | 一种用于ssd的数据压缩方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1484151A (zh) * | 2002-08-08 | 2004-03-24 | �Ҵ���˾ | 用于将存储器压缩数据存储到存储器压缩磁盘上的方法和*** |
EP2175363A1 (en) * | 2008-10-07 | 2010-04-14 | Samsung Electronics Co., Ltd. | Processor and method of decompressing instruction bundle |
EP2200029A1 (en) * | 2008-12-22 | 2010-06-23 | ST-NXP Wireless France | Method and device for storing and transferring paged data, in particular paged code in a virtual memory mechanism |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6023761A (en) | 1997-08-13 | 2000-02-08 | Vlsi Technology, Inc. | Method and system for using decompression on compressed software stored in non-volatile memory of an embedded computer system to yield decompressed software including initialized variables for a runtime environment |
US7095343B2 (en) * | 2001-10-09 | 2006-08-22 | Trustees Of Princeton University | code compression algorithms and architectures for embedded systems |
EP1939751A1 (en) * | 2006-12-22 | 2008-07-02 | Telefonaktiebolaget LM Ericsson (publ) | Storing compressed data |
KR101420798B1 (ko) * | 2007-11-23 | 2014-07-17 | 삼성전자주식회사 | 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말 |
-
2011
- 2011-10-12 US US13/879,122 patent/US10459840B2/en not_active Expired - Fee Related
- 2011-10-12 EP EP20110767733 patent/EP2630573B1/en active Active
- 2011-10-12 CN CN201180051017.4A patent/CN103329112B/zh active Active
- 2011-10-12 WO PCT/EP2011/067826 patent/WO2012052336A2/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1484151A (zh) * | 2002-08-08 | 2004-03-24 | �Ҵ���˾ | 用于将存储器压缩数据存储到存储器压缩磁盘上的方法和*** |
EP2175363A1 (en) * | 2008-10-07 | 2010-04-14 | Samsung Electronics Co., Ltd. | Processor and method of decompressing instruction bundle |
CN101714076A (zh) * | 2008-10-07 | 2010-05-26 | 三星电子株式会社 | 对指令束进行解压缩的处理器和方法 |
EP2200029A1 (en) * | 2008-12-22 | 2010-06-23 | ST-NXP Wireless France | Method and device for storing and transferring paged data, in particular paged code in a virtual memory mechanism |
Also Published As
Publication number | Publication date |
---|---|
US10459840B2 (en) | 2019-10-29 |
WO2012052336A2 (en) | 2012-04-26 |
WO2012052336A3 (en) | 2012-07-26 |
CN103329112A (zh) | 2013-09-25 |
US20130326170A1 (en) | 2013-12-05 |
EP2630573A2 (en) | 2013-08-28 |
EP2630573B1 (en) | 2015-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103329112B (zh) | 用于减少页面错误发生时压缩页面加载时间的方法和装置 | |
US10116325B2 (en) | Data compression/decompression device | |
US11386082B2 (en) | Space efficient vector for columnar data storage | |
CN106030498B (zh) | 存储装置和数据处理方法以及存储*** | |
CN108052643B (zh) | 基于LSM Tree结构的数据存储方法、装置及存储引擎 | |
US9977598B2 (en) | Electronic device and a method for managing memory space thereof | |
CN105659208A (zh) | 处理多个线程的数据处理装置及方法 | |
CN101206618A (zh) | 融合式存储器设备及方法 | |
CN102419715B (zh) | 代码的压缩方法及其压缩装置、代码的执行方法 | |
US20160253105A1 (en) | Compressing and compacting memory on a memory device | |
CN110968585A (zh) | 面向列的存储方法、装置、设备及计算机可读存储介质 | |
CN109814809A (zh) | 数据压缩方法及装置 | |
CN107423425B (zh) | 一种对k/v格式的数据快速存储和查询方法 | |
CN104035822A (zh) | 一种低开销的高效内存去冗余方法及*** | |
CN111158606B (zh) | 存储方法、装置、计算机设备和存储介质 | |
CN104899208A (zh) | 一种浏览器的缓存方法及装置 | |
CN113590051B (zh) | 数据存储和读取方法、装置、电子设备及介质 | |
JP2018132900A (ja) | 格納方法、格納装置及び格納プログラム | |
CN113590566B (zh) | 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质 | |
CN110866127A (zh) | 建立索引的方法以及相关装置 | |
CN114116711A (zh) | 数据处理方法、装置、数据库、存储介质及程序产品 | |
CN111651124B (zh) | Ssd映射表多核分区并行重建方法、装置、设备及介质 | |
CN108196790B (zh) | 数据管理方法、存储设备及计算机可读存储介质 | |
KR101827395B1 (ko) | 확장성 있는 gpu기반의 대용량 obj 파일 처리 방법 및 장치 | |
CN104639981B (zh) | 电视***开启方法和电视 |
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 |