CN105027093A - 用于压缩和紧凑虚拟存储器的方法和装置 - Google Patents
用于压缩和紧凑虚拟存储器的方法和装置 Download PDFInfo
- Publication number
- CN105027093A CN105027093A CN201380068367.0A CN201380068367A CN105027093A CN 105027093 A CN105027093 A CN 105027093A CN 201380068367 A CN201380068367 A CN 201380068367A CN 105027093 A CN105027093 A CN 105027093A
- Authority
- CN
- China
- Prior art keywords
- compression
- storage area
- memory
- storage unit
- compression storage
- 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.)
- Granted
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
- 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
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 Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明描述了一种用于存储器设备的方法与装置,该存储器设备包括用于虚拟存储器的压缩存储的动态更新部分。存储器设备可以包括与压缩存储部分分开的未压缩存储部分。虚拟存储器能够将存储器地址映射到压缩存储部分。可以将未压缩存储部分中分配的存储区域压缩到压缩存储部分中。因此,存储区域变为可用于存储器设备中所请求的未来分配(例如在压缩之后)。可以更新压缩存储部分以存储所压缩的存储区域。响应于对访问所压缩的存储区域中的数据的请求,可以将所压缩的存储区域解压缩回存储器设备中的未压缩部分。
Description
技术领域
本发明整体涉及存储器系统。更具体地,本发明涉及用于虚拟存储器系统的压缩和/或紧凑存储器。
背景技术
人们已经开发出虚拟化技术以为大小超过存储器设备实际物理容量的存储空间增强存储器管理。通常,存储器虚拟化可基于利用耦接到存储器设备的存储设备的存储器交换。由于存储器对象和/或IO(输入/输出)大小不是确定性的,因此可能要在存储设备和存储器设备之间换入/换出不同大小或页数的未压缩存储器。因此,用于为交换存储器传输所存储的存储器数据的IO吞吐量和/或延迟可能会不利地影响虚拟存储器系统的性能。
此外,某些存储设备,诸如基于旋转的硬盘的性能可能对存储器访问的数据局域性具有很强依赖性以减少冗长的磁盘旋转。然而,在运行时期间数据局域性可能得不到保证,因为用于存储器访问的群集特性在不同的数据处理任务中有所不同。因此,通过在存储器设备和存储设备之间的页入/页出进行存储器交换以支持一般的数据处理任务可能会进一步降低存储器系统的可察觉性能。
尽管采用越来越大大小的实际物理存储器的趋势往往会降低设备间存储器交换的性能成本,但是可以提供数据处理系统中的特定特征增强而没有存储大小的变化。例如,可以基于基本相同量的存储大小在现有设备上实现对更高屏幕分辨率的支持。然而,仅仅高两倍的屏幕分辨率就可能对应于窗口缓冲区大小的四倍增加。因此,如果不对物理存储大小的增加进行补偿,用于实现更高屏幕分辨率的系统性能可能会劣化并明显地变慢。
因此,虚拟存储器系统的传统具体实施不能支持有限的物理存储大小所约束的性能要求。
发明内容
存储器设备中动态维护的压缩存储器池能够基于与海量存储设备耦接的存储器设备为虚拟存储器提供额外支持层。可以将虚拟存储器地址分页或映射到存储器设备的未压缩部分、压缩的存储器池和/或存储设备。压缩的存储器池可以在存储器设备内扩大和缩小而对虚拟存储器没有大小限制。
在一个实施例中,可以将存储页面(例如未压缩存储器的面积单元)压缩到压缩存储器中的压缩存储单元(或压缩页面)中。可以将多个压缩存储单元紧凑化到一起作为压缩存储器中固定大小的段。可以设定段的大小以在存储器设备和海量存储设备之间进行有效数据传输,用于换入/换出压缩存储单元的段,以支持虚拟存储器分页器。
在另一个实施例中,存储器设备可以包括用于虚拟存储器的压缩存储的动态更新部分。存储器设备可以包括与压缩存储部分分开的未压缩存储部分。虚拟存储器能够将存储器地址映射到压缩存储部分。可以将未压缩存储部分中分配的存储区域压缩到压缩存储部分中。因此,存储区域可变为可用于存储器设备中所请求的将来分配(例如在压缩之后)。可以更新压缩存储部分以存储所压缩的存储区域。响应于对访问所压缩的存储区域中的数据的请求,可以将所压缩的存储区域解压缩回存储器设备中的未压缩部分。
在另一个实施例中,提供了一种基于存储器设备的虚拟存储器。可以将存储器设备动态划分为未压缩存储部分和压缩存储部分,诸如DRAM(易失性存储器)。未压缩存储部分可以存储经由耦接到存储器设备的处理器处理的工作数据。可以将未压缩存储部分的一个或多个页面压缩到压缩存储部分中一个或多个不同大小的压缩存储单元中。压缩可以增加未压缩存储部分中的可用存储空间。例如,响应于针对对压缩存储单元中的一个压缩存储单元中的数据的访问请求的页面错误,可以将压缩存储单元从压缩存储部分解压缩回未压缩存储部分。可将不同大小的压缩存储单元中的至少一个压缩存储单元从压缩存储部分换出至海量存储设备,以增大未压缩存储部分中的可用存储空间。
在另一个实施例中,可以将存储器设备的未压缩部分的一个或多个存储页面压缩到存储器设备的压缩部分中的一个或多个不同大小的压缩存储单元中。可以将海量存储设备(诸如磁性硬盘驱动器(HDD)或复合存储设备,从文件系统的角度看被作为一个逻辑卷对待,包括HDD和闪存存储器)与存储器设备耦接。可以将不同大小的压缩存储单元紧凑化到存储器设备的压缩部分中的段中。响应于对压缩存储单元中的一个压缩存储单元的访问请求,可以将一个压缩存储单元从压缩部分解压缩到存储器设备的未压缩部分。可以将压缩存储单元的该段换出至海量存储设备以增大存储器设备中的可用存储空间。
通过附图及以下具体实施方式,本发明的其他特征将显而易见。
附图说明
本发明以举例的方式进行说明,而不限于各个附图的图形,在附图中类似的附图标号表示类似的元件,并且其中:
图1是示出了基于压缩和/或紧凑存储器的虚拟存储器系统的一个实施例的框图;
图2是示出了为虚拟存储器压缩和解压缩存储器的一个实施例的流程图;
图3是示出了为虚拟存储器交换压缩存储器页的过程的一个实施例的流程图;
图4是示出了为虚拟存储器交换压缩存储器的紧凑段的过程的一个实施例的流程图;
图5示出了数据处理系统诸如计算机系统的一个实例,该数据处理系统可与本文所述的实施例一起使用。
具体实施方式
本文描述了用于压缩和紧凑虚拟存储器的方法与装置。以下说明中示出了许多具体细节,以提供对本发明实施例的全面解释。然而,对于本领域的技术人员显而易见的是,本发明的实施例可在不具有这些具体细节的情况下实施。在其他情况下,未详细示出已熟知的部件、结构和技术,以免影响对此说明的理解。
本说明书中提到的“一个实施例”或“实施例”是指,结合实施例所描述的特定特征、结构或特性可包括在本发明的至少一个实施例中。在本说明书中的各个位置出现的短语“在一个实施例中”不一定都是指同一个实施例。
下图中示出的过程通过处理逻辑执行,处理逻辑包括硬件(例如电路、专用逻辑等)、软件(诸如在通用计算机系统或专用机器上运行的软件)、或它们两者的组合。虽然下文根据某些顺序操作来描述过程,但应当理解,所描述的操作中的一些可以不同的顺序来执行。此外,一些操作也可以并行地而并非按顺序执行。
在一个实施例中,可以利用基于日志的数据结构(或日志结构)动态管理存储器设备中的压缩池(或压缩存储单元的池)。可以通过充填和/或压缩的方式在压缩池中放入数据以缩小存储数据所需的存储空间。例如,可以在自包含压缩存储器管理系统中自动确定何时在压缩池和海量存储设备(或非易失性存储设备)之间交换存储的数据,以使虚拟存储器系统或其他适用存储器使用模块与下层的压缩池隔离。
例如,可以压缩存储器数据以减小交换文件的大小,提高存储器设备和交换设备诸如海量存储设备之间的数据传输效率。此外,可以基于有效存储器压缩方案将存储器数据压缩到压缩池中,使得压缩/解压缩成本(例如几微秒内)显著低于(例如几个数量级)与交换设备之间的常规磁盘交换速度。在需要时,压缩池可以在存储器设备内增大大小,以减少与交换设备之间所需的交换操作。
例如,只要有足够的存储空间(例如少量的存储页面)来执行存储器压缩/解压缩操作以向压缩池中移入/从压缩池移出数据,压缩池就可以增大,并与可用物理存储器以相同的大小工作。可以在压缩池增大/缩小时,保持工作集匹配不同大小的未压缩存储部分。如果工作集(例如为一组用于处理器数据操作的实况任务分配的存储器)溢出到压缩池(或压缩存储部分)中,可以从压缩部分拉出(例如基于某个预先确定的速率)存储页面,以在压缩存储部分和未压缩存储部分(或层)之间进行替代,以支持工作集。可以检测对要分配的额外存储空间的请求或要求以指示现有的工作集已经溢出。可以通过LRU(最近最少使用)排序策略扩展工作集以选择将哪些存储页面压缩到压缩池中。
在一个实施例中,可以在运行时间期间动态选择多个压缩/解压缩方案或机制。每种方案都可以基于一个或多个压缩/解压缩算法。可以基于存储器的创建者(例如,发起或请求分配的应用或过程)提供的提示或启示做出选择,或者可以通过观察要针对特定数据模式压缩的存储器的每个页面来确定选择。在一个实施例中,可以将压缩/解压缩方案中的一者指定为适用于大部分已分配存储器(例如,没有由对应存储器创建者提供的任何提示)的默认的一种。如果模式匹配机制在起作用且没有得到匹配,这种方案也会被用作默认的一种。可能受益于(例如看到更有效的压缩)专用压缩/解压缩方案的一种候选方式是为图形操作(例如通过GPU)使用而创建的存储器。
在一些实施例中,可以在压缩池中执行紧凑化操作以在压缩的存储段中保持日志结构。例如,可以在一个压缩存储段(例如用于辅助紧凑化)内和/或跨多个压缩存储段(例如用于主要紧凑化)将压缩数据单元充填在一起。可以在从压缩存储器去除压缩数据或向压缩存储器中存储压缩数据时,应请求和/或自动发起紧凑化操作。日志结构可允许对存储器设备内和/或耦接的存储设备之间的压缩池进行有效的输入/输出操作(例如读/写操作)。
根据一个实施例,在从压缩池拉出压缩数据时,可能会形成洞(即,先前被压缩数据占据的空的存储空间)。因此,如果不去除这些洞,压缩池的存储器使用可能变得越来越低效。可以执行辅助紧凑化操作以移动压缩池中存储段(例如日志结构)内的压缩数据,以减少存储段中洞的数量。在一个实施例中,可以执行辅助紧凑化操作以允许额外分配存储器设备中的存储页面。辅助紧凑化操作可能会消耗无用的处理资源而使得数据处理延迟得到显著改善。
在一个实施例中,例如,在需要将压缩数据换出至交换设备时,除辅助紧凑化操作之外,还可以执行主要紧凑化操作以在压缩池的不同存储段之间移动压缩数据。由于主要紧凑化操作,可以减少压缩池中所需的存储段的数量。例如,可以收紧(或减少)压缩池的存储段中未使用的存储空间,以允许将大块压缩的存储页面写出到交换设备。因此,可以使可用的IO带宽(例如存储器设备和交换设备之间)最大化。此外,可以使交换设备(诸如SSD设备)受到磨损和毁坏的程度最小化。
在一个实施例中,基于紧凑化模型执行紧凑化操作,该紧凑化模型确定何时执行辅助紧凑化操作、主要紧凑化操作或其他适用的数据移动操作,以保持压缩池中有效的存储器存储使用。可以执行辅助紧凑化操作以使一个存储段内的压缩数据换位,以增加或释放可用的存储空间。例如,可以执行主要紧凑化操作以在多个存储段之间移动压缩数据,以确保准备好将存储段以完整大小从压缩池换出至交换设备。如果存储段基本没有洞或存储器使用率大于例如预先确定的阈值(例如99%),则存储段可以是完整大小的。
因此,在基于例如同样大小的数据块(例如压缩段),诸如256KB、512KB、1024KB或其他适当大小从压缩池向交换文件(例如在交换设备中)执行IO操作写入时,可以维持日志结构化数据(或模型)。在一个实施例中,在用于存储器交换的IO操作期间传输的数据块可以根据与交换设备的IO接口对应于压缩存储页面的集合(例如匹配IO总线缓冲区大小),以改善IO性能。因此,可以基于所传输数据的压缩和用于交换设备的匹配传输数据块大小来改善压缩池和交换设备之间IO操作的效率或吞吐量。
在一个实施例中,压缩池中的日志结构化数据可以包括存储段的排序列表。可以在排序段列表的头段(或记录头)中记录新压缩的数据。可以基于压缩池中的排序段列表执行针对虚拟存储器系统的工作集分析,以确定换出压缩池的哪个部分。例如,段在排序列表中距头段越远,该段中存储的压缩数据越可能不再被工作集感兴趣(或立即需要)。因此,可以选择尾段(或距记录头的远端)以换出至交换设备。可以基于紧凑化的存储段从/向交换设备从压缩池中引入/取出压缩数据。
例如,可以识别执行存储器交换操作的需求以对压缩池的大小设定上限。压缩池的大小(或形状)可以基于运行时存储器的访问模式动态变化。在一个实施例中,可以基于成本(例如功率消耗成本)模型动态监测(或估计)紧凑化/压缩/解压缩操作相对于存储器交换操作的处理成本以确定何时执行交换操作。
例如,压缩、解压缩和/或紧凑化操作的速率可以对应于功率(或处理资源消耗)以指示存储器设备中压缩池(或压缩层、压缩部分)的健康状况。如果这个速率超过特定阈值,可以执行或触发交换操作以从压缩池向交换设备页面调出压缩数据。在一个实施例中,与交换操作中的数据IO事务处理相比,压缩/解压缩和/或紧凑化操作可能招致一小部分的处理成本。可以评估功率成本函数以允许压缩池在需要向交换设备页面调出压缩数据之前增大。成本函数可以取决于例如压缩池的形状、由紧凑化/压缩/解压缩操作导致的处理延迟中配置的容限或其他适用因素,以在存储器设备中维持工作集。
存储器设备中的压缩池可以通过减少向/从交换设备传送数据页面(例如交换操作)的所需数量来实现节能。例如,由于数据是压缩的,因此需要更少数量的数据页面或文件页面传输。此外,可以利用通过基于日志的结构承载压缩数据的紧凑化段改善每次数据页面传输或交换操作中的效率或效果。
在一些实施例中,可以对应于每个段中存储的压缩数据的年龄对压缩池中基于日志结构列表的存储段进行排序。压缩数据的年龄可以指示数据是多早从工作集被压缩的或为工作集而被访问的。交换操作可以写出已经从工作集老化的存储段(例如,排序段列表的尾部)。因此,被选择要从压缩池交换到交换设备(例如磁盘)的压缩数据可以存储于在一段时间内未使用的紧凑存储段中。例如,可以执行交换操作以为工作集的增长留出空间或适应其增长。同时,可以避免或减少为了维护目的(例如文件或数据备份/同步)而从存储器设备周期性向交换设备或磁盘设备写入数据,实现显著节能。
压缩池可以提供用于系统休眠和/或醒来的快速操作机制。例如,可以在非易失性存储设备(例如磁盘)中独立备份(或存储)存储器设备的压缩部分和未压缩部分,以使系统进入休眠(或睡眠)状态。可以经由紧凑化存储段向非易失性存储设备传输(或推送)压缩部分(或压缩池)。可以将未压缩存储部分(例如,包括当前工作集)压缩到附有特殊标签的压缩池中,以作为紧凑化存储段传输到非易失性存储设备。例如,可以中止应用使其作为压缩/紧凑化存储段进入压缩池。
在系统醒来期间,可以从非易失性存储设备检索(或拉回)对应于存储器设备的未压缩部分的带特殊标签的压缩存储段,以利用先前的工作集(或热工作集)填充存储器设备。例如,可以从带特殊标签的压缩存储段将中止的应用取消中止或恢复回存储器设备的未压缩部分。并非检索与被恢复应用相关联的任意存储页面(例如,先前存储于压缩存储部分或未压缩存储部分),而是可以在检索压缩池中先前存储的那些存储页面之前利用未压缩存储部分中为应用先前存储的宝贵信息对系统进行预热(或预加温以实现加速醒来)。
图1是示出了基于压缩和/或紧凑化存储器的虚拟存储器系统的一个实施例的框图。例如,系统100可以包括数据处理设备的存储器设备中托管的操作环境101,数据处理设备诸如移动设备、台式计算机或服务器等。存储器设备可以包括例如随机存取存储器(RAM),用于支持处理设备中至少一个处理器的数据处理。可以在存储器设备内动态划分(或维持)压缩存储器(或压缩池)117。因此,存储器设备中用于支持操作环境101的运行的可用存储空间(可能基于存储器设备的未压缩部分)可以少于由存储器设备提供的总存储空间。在某些实施例中,多个处理器,诸如CPU、GPU或其他适用的处理单元,可以并行地访问压缩存储器117。
在一个实施例中,虚拟存储器管理模块103可以虚拟化各种形式的计算机数据存储,诸如RAM和海量存储设备121,以允许运行于操作环境101中的程序或过程诸如应用123访问存储器地址(或虚拟存储器地址),如同仅有一种存储器,即虚拟存储器,其行为可以像RAM中的直接可寻址读/写存储器那样。例如,虚拟存储器管理模块103可以维持多个虚拟存储器地址(或一个虚拟存储器地址)与实际物理数据存储位置诸如RAM(或存储器设备)内的物理存储页面与海量存储设备121中的存储基准之间的映射。
虚拟存储器管理模块103可以经由分页器层模块105向存储器设备(例如RAM)中移入数据或从其中移出数据。例如,可以响应于例如来自应用的存储器分配请求和/或其他数据处理要求,将数据从存储器设备中的物理存储页面换出(例如,未被海量存储设备121中的磁盘文件备份的匿名数据或脏数据),以释放物理存储页面中的存储空间。可以从存储器设备页面调出(或清除)可从海量存储设备121中的磁盘文件获得的干净数据(或存储器数据)以增加可用的存储空间。在诸如应用123的应用终止时,为该应用分配的存储空间(例如堆栈、堆等)可用于将来分配。
在一个实施例中,虚拟存储器管理模块103可以向分页器层模块105发送存储器换入/换出请求,以管理存储器设备的未压缩部分内的虚拟存储器地址。分页器层模块105可以与海量存储设备121和/或压缩存储器管理模块107进行交互以向/从存储器设备的未压缩部分移动存储页面。因此,虚拟存储器管理模块103可以映射存储器设备的未压缩部分外部的虚拟存储器地址而无需区分(或了解)虚拟存储器地址是否对应于压缩存储器117或海量存储设备121内的存储器位置。换句话讲,虚拟存储器管理模块103可以不知道压缩存储器117的存在。
分页器层模块105可以基于多个并发线程(或输入/输出线程)以执行存储器分页传输操作。例如,分页器层模块105可以包括文件分页器以管理存储来自海量存储设备121的磁盘文件的干净数据的未压缩存储页面。分页器层模块105可以包括与压缩存储器管理模块107交接的存储器分页器(例如作为一个或多个线程),以经由压缩存储器117向/从存储器设备的未压缩部分移动未压缩的存储页面。
在一个实施例中,压缩存储器117可以包括一个或多个日志结构(例如,基于具有头和尾的阵列或队列),以存储压缩存储单元。每个日志结构可以包括一个或多个段,其被分配有缓冲区,用于存储压缩的存储单元。每个段可以是通常大小(例如256KB,512KB,1024KB或其他适用大小),具有存储器插槽以存储压缩存储单元(或压缩页面)的排序列表。每个压缩单元可以是从存储器设备的未压缩部分中的存储页面例如经由压缩器/解压缩器模块111被压缩到日志结构的头部。在一些实施例中,可以经由独立的线程,同时和/或独立于经由压缩存储器管理模块107来更新或操作每个日志结构。
压缩存储单元可以存储于日志结构的一个段中的存储器插槽(或位置)中。压缩器模块111可以向日志结构的头插槽记录或存储新压缩的存储页面,并将下一插槽更新(到当前头插槽)作为日志结构的头插槽供将来压缩。在当前段(或日志结构中的头段)变完整(或基本完整)时,压缩存储器管理模块107可以创建(或从存储器设备的未压缩部分分配)一个或多个新段。例如,可以基于标识日志结构的标识符、所标识日志结构内的段和所标识段内存储压缩存储单元的存储器插槽,为压缩存储器117维护存储页面及其在日志结构中的对应压缩存储单元之间的映射。
在一个实施例中,压缩器/解压缩器模块111可以管理压缩存储器117中的日志结构。每个日志结构可以与记录头相关联,记录头可以指向当前段中的头插槽,例如,日志结构中一系列段中的头段。多个线程可以与压缩器/解压缩器模块111相关联以同时利用独立的日志结构执行存储器压缩/解压缩操作。压缩器/解压缩器模块111可以根据请求队列执行压缩操作,请求队列存储例如经由分页器层模块105调度的要压缩的存储页面。存储页面在被压缩时可能要求在日志结构段内的存储器插槽中存储少于一个页面的物理存储大小。
在一个实施例中,随着更多存储页面被压缩到压缩存储器117中,在对应日志结构的头部之后,可能填满存储器插槽。或者,在释放所存储的压缩存储单元时,对应日志结构中段中一些段或插槽可能变为空的或可用于分配。例如,在应用或过程终止时,可以移除为该应用维持的对象或结构,并可以释放该应用所拥有的物理存储页面或压缩存储单元以供将来所用(即,可用于分配)。或者,由于被换出、解压缩或紧凑化,段变成空的。
压缩器/解压缩器模块111可以例如响应于在虚拟存储器管理模块103中遇到的页面错误,从压缩存储器117向存储器设备的未压缩部分拉出或解压缩压缩存储单元。压缩器/解压缩器模块111可以例如经由独立线程同时在压缩存储器117的不同段上执行压缩和解压缩操作。
压缩存储器管理模块107可以包括交换模块113,以经由接口模块119在压缩存储器117和海量存储设备121之间移动压缩存储单元的段。例如,可将压缩存储单元的段从压缩存储器117换出,以腾出空间容纳新压缩的存储页面和/或存储存储器设备的状态,供将来在系统休眠过程等期间恢复。或者,可以因为在虚拟存储器管理模块103中遇到页面错误而将压缩存储单元的段换入至压缩存储器117中,以访问压缩存储单元的段中的一个或多个段中的数据。
在一个实施例中,一个或多个线程可以为交换模块113运行。交换线程可以根据指定的调度表或响应于请求而醒来。例如,分页器层模块105可以发出请求以解决页面错误。存储器使用管理模块115可以发送请求以维持存储器设备中足够的可用存储空间。根据一个实施例,交换线程可以醒来以检查存储器设备的当前状态,以确定要将多少压缩存储单元的段从压缩存储器117中换出。交换线程可以选择最少使用(例如老化或陈旧)的段,如果需要使其紧凑(例如,通过紧凑化模块109),并向海量存储设备121转发选择的段。可以独立于通过压缩器/解压缩器模块111执行的压缩/解压缩操作和/或与其并行执行经由交换模块113进行的交换操作。
紧凑化模块109可以对压缩存储器117执行紧凑化操作以减少存储器的碎片化和/或提高存储器交换效率。例如,紧凑化模块109可以执行辅助紧凑化操作以滑动(或移动)一段日志结构内的压缩存储单元,而不改变压缩存储单元之间的排序关系,以合并其间留下的空的存储器插槽。替代地或任选地,紧凑化模块109可以执行主要紧凑化操作以在不同段之间移动压缩存储单元以填满和/或清空某些段。
在一个实施例中,交换模块113可以请求紧凑化模块109以对段进行紧凑化(例如最小化或减少空的插槽),实现更好的交换性能。例如,存储器设备和交换设备之间的接口可以基于固定大小的用于数据传输的数据缓冲区。匹配数据缓冲区大小的密集分布的段可以使传输效率最大化(例如,每单位时间或时钟周期传输的数据量)。
存储器使用管理模块115可以确定何时将压缩存储单元或页面从压缩存储器117推出或换出至海量存储设备121。存储器使用管理模块可以监测存储器设备的使用状态以为交换模块113提供触发(或向其发送请求)以发起交换操作。使用状态可以包括电力使用、存储器性能(例如读/写速度)、存储器使用率、存储器设备中压缩/未压缩分区的比率、压缩存储器117的大小、存储页面的工作集大小或其他适用的运行时度量等。
图2是示出了为虚拟存储器压缩和解压缩存储器的一个实施例的流程图。例如,过程200可通过图1的系统100的一些部件来执行。在方框201,过程200的处理逻辑可以为支持一个或多个处理器的虚拟存储器动态更新存储器设备中的压缩存储部分。存储器设备可以包括与压缩存储部分分开的未压缩存储部分。可以将虚拟存储器中的存储器地址映射到压缩存储部分或未压缩存储部分。
在一个实施例中,可以利用从未压缩存储部分分配的额外的存储更新压缩存储部分。可以将未压缩存储部分中分配的存储区域压缩到压缩存储部分中,以允许该存储区域可用于将来在存储器设备的未压缩存储部分中的分配。存储器的所更新的压缩部分能够存储所压缩的存储区域。用于在未压缩存储部分中分配的可用存储的大小可能因为对存储区域的压缩而增加。
根据一个实施例,例如,可以响应于接收到对访问所压缩的存储区域中的数据的请求而将所压缩的存储区域解压缩回存储器设备的未压缩部分。过程200的处理逻辑可以确定所请求的数据在未压缩存储部分中是否为当前可用的。如果请求的数据当前在未压缩存储部分中不可用,则该请求可导致页面错误事件触发压缩存储部分上的更新,例如,对所压缩的存储区域进行解压缩。
压缩存储部分可以存储于多个(或至少一个)压缩存储单元中。每个压缩存储单元可以对应于从未压缩存储部分压缩的独立存储区域。独立的压缩存储单元可并非连续存储(例如,基于存储器设备内的物理分配)于压缩存储部分中。在一个实施例中,可以对压缩存储部分进行紧凑化以使得这些独立压缩的存储单元被连续存储于压缩存储部分中。
存储区域可以对应于存储器设备的未压缩部分中固定大小的存储单元,诸如一页存储器。压缩存储单元的大小可以根据例如压缩到压缩存储单元中的原始数据内容的量或压缩性能而变化。在一个实施例中,所压缩的存储区域可以对应于压缩存储部分中的特定的压缩存储单元。
在一个实施例中,特定的压缩存储单元可以存储于压缩存储部分中相邻压缩存储单元之间。在从压缩存储部分去除特定的压缩存储单元时,可以通过例如紧凑化操作将相邻存储单元移动成彼此相邻地被连续存储。可以通过例如解压缩操作、交换操作或其他适用的存储器管理操作从压缩存储部分去除特定的压缩存储单元。
在一些实施例中,压缩存储部分可以包括多个存储器插槽池。每个压缩存储单元可以存储于一个或多个连续的(根据物理存储器分配)存储器插槽中。每个池可以对应于压缩存储单元的独立分区。在一个实施例中,每个池可以与独立的线程相关联,例如,属于运行于使用该存储器的系统中的过程。可以针对每个池经由其关联线程独立且异步地执行对压缩存储部分的紧凑化操作。
存储器设备可以与独立存储设备耦接,诸如硬盘、闪存存储器或其他适用的非易失性存储设备。可将压缩存储单元中的一个或多个压缩存储单元从压缩存储部分换出(例如,以更新压缩存储部分)至独立存储设备。因此,可以减小压缩存储部分的大小以增大未压缩存储部分的大小。或者,如果在请求时压缩存储单元中的数据当前在压缩存储部分中不可用,则可以从独立存储设备向压缩存储部分交换用于压缩的存储区域的压缩存储单元。
过程200的处理逻辑可以经由具有数据传输缓冲区(诸如具有一定比特大小的总线缓冲区)的接口在存储设备(例如交换设备)和存储器设备之间交换压缩的存储单元。在一个实施例中,过程200的处理逻辑可以对压缩存储部分进行紧凑化以允许数据传输缓冲区有效地同时承载多个压缩存储单元,例如,每个硬件数据事务中基本都是满载容量。
在一个实施例中,存储区域可以对应于存储器设备中的存储页面。未压缩存储部分可以包括存储页面的工作集,以支持当前活动的数据处理过程。例如,响应于对暂时停止系统运行的休眠请求,可以将存储页面的工作集压缩到压缩存储部分中的一系列压缩存储单元中。然后可以将该系列压缩存储单元换出至与存储器设备耦接的存储设备,以供将来所用。
过程200的处理逻辑可以选择至少一个压缩存储单元以换出压缩存储部分。该选择可以基于压缩存储单元的使用性能。使用性能可以指示何时针对压缩存储单元访问数据。例如,使用性能可以包括与压缩存储单元相关联的时间戳或其他元数据,以指示何时对压缩存储单元进行访问、创建、压缩、换入或使用等。
在一个实施例中,过程200的处理逻辑可诸如经由LRU策略换出最不可能针对工作集而使用或请求的压缩存储单元。过程200的处理逻辑可以基于关联的使用性能启发式地确定在不久的将来要访问压缩存储单元的可能性。在一个实施例中,可以在压缩存储部分中按照顺序线性地存储压缩存储单元。该顺序可以对应于与压缩存储单元相关联的使用性能(例如访问时间戳)。
压缩存储部分可以包括一个或多个存储段。每个存储段可以对应于压缩存储单元中的一个或多个压缩存储单元的阵列。过程200的处理逻辑可以在特定存储段内移动或滑动一个或多个压缩存储单元,用于执行紧凑化操作,以允许在特定存储段内的连续存储空间中存储多个压缩存储单元。
在一个实施例中,每个存储段可以具有存储容量和/或使用率。使用率可以指示有多少存储容量已用于存储压缩存储单元的对应阵列。过程200的处理逻辑可以执行紧凑化操作,以跨存储段移动压缩存储单元中的一个或多个压缩存储单元,以提高存储段中的至少一个存储段的使用率。例如,60%充满的存储段可以在紧凑化操作之后变成99%充满。
图3是示出了为虚拟存储器交换压缩存储器页的过程的一个实施例的流程图。例如,过程300可通过图1的系统100的一些部件来执行。在方框301,过程300的处理逻辑可以基于存储器设备提供虚拟存储器。过程300的处理逻辑可以将存储器设备动态划分为未压缩存储部分(或层)以及压缩存储部分(或层)。由耦接到存储器设备的一个或多个处理器用于执行数据处理任务的存储空间的工作集可以存储于未压缩存储部分中。
在方框303,过程300的处理逻辑可以将未压缩存储部分的一个或多个存储页面压缩到压缩存储部分中的一个或多个不同大小的压缩存储单元中。压缩可以增加未压缩存储部分中的可用存储空间。
在方框305,例如,响应于由对特定的压缩存储单元中的数据的访问请求导致的页面错误,过程300的处理逻辑可以将压缩存储单元中的特定的一个从压缩存储部分解压缩到未压缩存储部分。
在方框307,过程300的处理逻辑可将至少一个大小变化的压缩存储单元从压缩存储部分换出至海量存储设备,以增大未压缩存储部分中的可用存储空间,例如,以适应对未压缩存储部分中工作集的额外分配要求。
图4是示出了为虚拟存储器交换压缩存储器的紧凑化段的过程的一个实施例的流程图。例如,过程400可通过图1的系统100的一些部件来执行。在方框401,过程400的处理逻辑可以将存储器设备的未压缩部分的一个或多个存储页面压缩到存储器设备的压缩部分中一个或多个不同大小的压缩存储单元中。存储器设备可以与海量存储设备耦接。
在方框403,过程400的处理逻辑可以对不同大小的压缩存储单元进行紧凑化,成为存储器设备的压缩部分中的段或其他适用的日志结构数据。
响应于接收到对压缩存储单元中的一个压缩存储单元中的压缩数据的访问请求,在方框405,过程400的处理逻辑可以将一个或多个压缩存储单元例如从压缩部分中的段解压缩到存储器设备的未压缩部分。
在方框407,过程400的处理逻辑可以将压缩存储单元的段换出至海量存储设备,以增大存储器设备中的可用存储空间。
图5示出了数据处理系统诸如计算机系统的一个实例,该数据处理系统可与本发明的一个实施例一起使用。例如,图1的系统1可被实现为图5中所示系统的一部分。需注意,虽然图5示出了计算机系统的各种部件,但它并不旨在表示使这些部件互连的任何特定构造或方式,因此这些细节与本发明并无密切关系。还应理解,具有较少部件或可能较多部件的网络计算机以及其他数据处理系统也可用于本发明。
如图5所示,数据处理系统形式的计算机系统500包括耦接到ROM(只读存储器)507和易失性RAM 509和非易失性存储器511和一个或多个微处理器505的总线503。微处理器505可从存储器507,509,511检索指令并执行所述指令以执行上述操作。总线503与这些各种部件互连在一起,并且将这些部件505、507、509和511互连至显示控制器和显示设备513,以及互连至诸如输入/输出(I/O)设备的外围设备,该输入/输出(I/O)设备可以是鼠标、键盘、调制解调器、网络接口、打印机和本领域熟知的其他设备。通常,输入/输出设备515通过输入/输出控制器517耦接到系统。易失性RAM(随机存取存储器)509通常被实现为动态RAM(DRAM),其需要连续供电以刷新或维持存储器中的数据。
海量存储装置511通常为磁性硬盘驱动器或磁性光驱或光驱或DVDRAM或闪存存储器,或者即使在系统断电后也保持数据(例如大量数据)的其他类型的存储器系统。通常,海量存储装置511也可以是随机存取存储器,虽然这并非必需。虽然图5显示,海量存储装置511是直接耦接到数据处理系统中的其余部件的本地设备,但应当理解,本发明可利用远离系统的非易失性存储器诸如网络存储设备,其通过网络接口诸如调制解调器或以太网接口或无线网络接口耦接到数据处理系统。总线503可包括一条或多条总线,其通过本领域熟知的各种桥接器、控制器和/或适配器相互连接。
上述内容的部分可使用逻辑电路诸如专用逻辑电路实现,或使用微控制器或执行程序代码指令的处理核心的其他形式实现。因此,可使用程序代码诸如机器可执行指令来执行上述论述所提出的过程,使得执行这些指令的机器执行某些功能。在该上下文中,“机器”可为将中间形式(或“抽象”)指令转换为处理器特定指令(例如,诸如“虚拟机”(例如Java虚拟机)、解译器、公共语言运行时、高级语言虚拟机等的抽象执行环境)的机器,和/或设置在半导体芯片(例如,使用晶体管实现的“逻辑电路”)上的电子电路,其设计用于执行诸如通用处理器和/或专用处理器的指令。上述论述所提出的过程也可以通过(作为机器的替代或与机器结合)电子电路执行,该电子电路设计用于执行过程(或其一部分)而不执行程序代码。
制造制品可用于存储程序代码。存储程序代码的制造制品可体现为但不限于一个或多个存储器(例如,一个或多个闪存存储器、随机存取存储器(静态、动态或其他))、光盘、CD-ROM、DVD ROM、EPROM、EEPROM、磁卡或光卡、或适用于存储电子指令的其他类型的机器可读介质。也可借助于包含在传播介质(例如通过通信链路(例如网络连接))中的数据信号将程序代码从远程计算机(例如服务器)下载到请求计算机(例如客户端)。
已按照对计算机存储器中的数据位进行操作的算法和符号表示来呈现前面的详细描述。这些算法描述和表示是数据处理领域技术人员所用的工具,以最有效地将其工作实质传达给该领域其他技术人员。算法在这里一般是指导致所希望结果的操作的自相一致的序列。操作是那些需要对物理量进行物理操纵的操作。通常,尽管不是必需的,但这些量采用能够被存储、传输、组合、比较以及换句话讲操纵的电信号或磁信号的形式。已被证明的是,其在主要出于通用原因而将这些信号指代为位、值、元素、符号、字符、项、数字等时是方便的。
然而,应当牢记的是,所有这些以及类似的术语都与适当的物理量相关联,并且只是应用于这些量的方便标签。除非另外特别说明,否则从上述论述中显而易见的是,可以理解,在整个说明书中,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”等术语的论述是指计算机系统或类似的电子计算设备的动作和过程,其对计算机系统寄存器和存储器中表示为物理(电子)量的数据进行操作,并将其转换成在计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备中相似地表示为物理量的其他数据中。
本发明还涉及一种用于执行本文所述操作的装置。该装置可专门构造用于所需的目的,或者其可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储介质中,诸如但不限于任何类型的盘(包括软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、RAM、EPROM、EEPROM、磁卡或光卡、或适合用于存储电子指令的任何类型的介质,并且每个均耦接到计算机系统总线。
本文中所呈现的过程和显示并不固有地与任何特定计算机或其他装置相关。各种通用系统可以根据本文的教导内容与程序一起使用,或者可以证明其便于构造用于执行所述操作的更专用的装置。根据下文的描述,用于各种这些系统的所需结构将是显而易见的。此外,本发明未参照任何特定的编程语言进行描述。应当理解,多种编程语言可用于实现如本文所述的本发明的教导内容。
前述论述仅描述了本发明的一些示例性实施例。本领域的技术人员将易于从此类论述、附图和权利要求书中认识到,可在不脱离本发明的实质和范围的情况下进行各种修改。
Claims (22)
1.一种其中存储有指令的机器可读非暂态存储介质,所述指令在被计算机执行时使得所述计算机执行一种方法,所述方法包括:
动态更新用于虚拟存储器的存储器设备中的压缩存储部分,所述存储器设备包括与所述压缩存储部分分开的未压缩存储部分,所述虚拟存储器能够将存储器地址映射到所述压缩存储部分;
将所述未压缩存储部分中分配的存储区域压缩到所述压缩存储部分中,其中所述存储区域变为可用于将来在所述存储器设备中的分配,其中所更新的压缩部分能够存储所压缩的存储区域;以及
响应于对访问所压缩的存储区域中的数据的请求,将所压缩的存储区域解压缩回所述存储器设备中的所述未压缩部分。
2.根据权利要求1所述的介质,其中所述请求导致页面错误,所述页面错误指示所述数据在所述未压缩存储部分中不可用。
3.根据权利要求1所述的介质,其中所述更新包括:
从所述未压缩存储部分为所述压缩存储部分分配额外的存储,其中用于在所述未压缩存储部分中分配的可用存储的大小由于所述存储区域的所述压缩而增大。
4.根据权利要求1所述的介质,其中所述压缩存储部分存储多个压缩存储单元,每个压缩存储单元对应于由所述未压缩存储部分压缩得到的独立存储区域,其中所述压缩存储单元中的至少两个压缩存储单元并非连续存储于所述压缩存储部分中,还包括:
对所述压缩存储部分进行紧凑化,其中所述紧凑化使得所述压缩存储单元中的所述至少两个压缩存储单元连续存储于所述压缩存储部分中。
5.根据权利要求4所述的介质,其中所压缩的存储区域对应于所述压缩存储部分中的特定的压缩存储单元,其中所述特定的压缩存储单元存储于所述至少两个压缩存储单元之间,其中所述解压缩将所述特定的压缩存储单元从所述压缩存储部分移除,以允许连续存储所述压缩存储单元中的所述至少两个压缩存储单元。
6.根据权利要求4所述的介质,其中所述存储器设备与独立存储设备耦接,其中所述更新包括:
将所述压缩存储单元中的一个或多个压缩存储单元从所述压缩存储部分换出至所述独立存储设备,其中所述换出使得所述压缩存储部分的大小减小以增大所述未压缩存储部分的大小。
7.根据权利要求6所述的介质,还包括:
确定针对所述请求的所压缩的存储区域的所述数据在所述压缩存储部分中是否为当前可用的,其中如果所压缩的存储区域的所述数据在所述压缩存储部分中为当前可用的,则对所压缩的存储区域进行解压缩。
8.根据权利要求7所述的介质,还包括:
如果所压缩的存储区域的所述数据在所述压缩存储部分中不为当前可用的,则将所压缩的存储区域从所述独立存储设备换入至所述压缩存储部分。
9.根据权利要求6所述的介质,其中所述压缩存储单元中的所述一个或多个压缩存储单元中的特定的一个存储于所述至少两个压缩存储单元之间,其中所述换出从所述压缩存储部分移除所述特定的压缩存储单元,以允许连续存储所述压缩存储单元中的所述至少两个压缩存储单元。
10.根据权利要求6所述的介质,其中所述换出包括:
选择用于所述交换的所述压缩存储单元中的所述一个或多个压缩存储单元,并且其中所述选择基于与所述压缩存储单元相关联的使用性能。
11.根据权利要求10所述的介质,其中所述存储区域对应于所述存储器设备中固定大小的存储单元,其中所述压缩存储单元具有不同大小,并且其中所述压缩存储单元按照顺序线性地存储于所述压缩存储部分中。
12.根据权利要求11所述的介质,其中所述使用性能对应于与所述压缩存储单元相关联的所述线性顺序。
13.根据权利要求12所述的介质,其中使用性能指示何时针对所述压缩存储单元访问数据,并且其中所选择的所述压缩存储单元中的所述一个或多个压缩存储单元根据所述选择的所述线性顺序为最近最少使用的。
14.根据权利要求11所述的介质,其中所述存储器设备经由具有数据传输缓冲区的接口与所述独立存储设备耦接,其中所述交换基于经由所述数据传输缓冲区通过所述接口的数据传输,并且其中所述紧凑化允许所述数据传输缓冲区同时承载多个所述压缩存储单元。
15.根据权利要求11所述的介质,其中所述压缩存储部分包括一个或多个存储段,每个存储段对应于所述压缩存储单元中的一个或多个压缩存储单元的阵列,所述存储段中的一个存储段的特定阵列包括两个或更多个压缩存储单元,所述紧凑化包括:
在所述特定存储段内移动所述压缩存储单元中的至少一个压缩存储单元,以便在所述特定存储段内的连续存储空间中存储所述两个或更多个压缩存储单元。
16.根据权利要求15所述的介质,其中每个存储段具有存储容量,每个存储段具有使用率,所述使用率指示所述存储容量中的多少存储容量已用于存储对应的压缩存储单元阵列,所述紧凑化还包括:
跨所述存储段移动所述压缩存储单元中的一个或多个压缩存储单元,其中所述存储段中的至少一个存储段的对应使用率由于所述压缩存储单元中的所述一个或多个压缩存储单元的所述移动而增大。
17.根据权利要求4所述的介质,其中所述压缩存储部分包括多个存储器插槽池,每个压缩存储单元存储于所述存储器插槽中的一个或多个连续的存储器插槽中,每个池对应于所述压缩存储单元的独立分区,每个池与独立线程相关联,并且其中经由相关联的线程针对每个池独立且异步地执行所述紧凑化。
18.根据权利要求6所述的介质,其中所述存储区域对应于所述存储器设备中的存储页面,其中所述未压缩存储部分包括存储页面的工作集,以支持当前活动的数据处理过程,还包括:
响应于休眠请求,将所述存储页面的工作集压缩到所述压缩存储部分中的一系列压缩存储单元;以及
将所述一系列压缩存储单元换出至所述存储设备。
19.一种其中存储有指令的机器可读非暂态存储介质,所述指令在被计算机执行时使得所述计算机执行一种方法,所述方法包括:基于存储器设备提供虚拟存储器,所述存储器设备被动态划分为未
压缩存储部分和压缩存储部分,所述未压缩存储部分用于存储经由耦接到所述存储器设备的处理器处理的工作数据;
将所述未压缩存储部分的一个或多个存储页面压缩到所述压缩存储部分中的一个或多个不同大小的压缩存储单元中,其中所述压缩增大所述未压缩存储部分中的可用存储空间;
响应于针对对所述压缩存储单元中的一个压缩存储单元中的数据的访问请求的页面错误,将所述一个压缩存储单元从所述压缩存储部分解压缩到所述未压缩存储部分;以及
将所述不同大小的压缩存储单元中的至少一个压缩存储单元从所述压缩存储部分换出至海量存储设备,其中所述换出增大所述未压缩存储部分中的可用存储空间。
20.一种其中存储有指令的机器可读非暂态存储介质,所述指令在被计算机执行时使得所述计算机执行一种方法,所述方法包括:
将存储器设备的未压缩部分的一个或多个存储页面压缩到所述存储器设备的压缩部分中的一个或多个不同大小的压缩存储单元中,所述存储器设备与海量存储设备耦接;
将所述不同大小的压缩存储单元紧凑化到所述存储器设备的所述压缩部分中的段中;
响应于对所述压缩存储单元中的一个压缩存储单元的访问请求,将所述一个压缩存储单元从所述存储器设备的所述压缩部分解压缩到所述存储器设备的所述未压缩部分;以及
将所述压缩存储单元的所述段换出至所述海量存储设备以增大所述存储器设备中的可用存储空间。
21.一种计算机实现的方法,包括:
动态更新存储器设备中的压缩存储部分,所述存储器设备包括能够支持用于至少一个处理器的数据处理的未压缩存储部分;
将所述未压缩存储部分中分配的存储区域压缩到所述压缩存储部分中,其中所述存储区域变为可用于将来在所述存储器设备中的分配,其中所更新的压缩部分能够存储所压缩的存储区域;以及
响应于对访问所压缩的存储区域中的数据的请求,将所压缩的存储区域解压缩回所述存储器设备中的所述未压缩部分。
22.一种计算机系统,包括:
包括可执行指令的存储器,所述存储器被动态划分为压缩部分和未压缩部分;
海量存储设备;
处理器,所述处理器耦接到所述存储器和所述海量存储设备,所述处理器执行来自所述存储器的所述可执行指令,所述处理器被配置为
将所述未压缩存储部分中分配的存储区域压缩到所述压缩存储部分中,其中所述存储区域变为可用于将来在所述存储器设备中的分配,其中所更新的压缩部分能够存储所压缩的存储区域;
响应于对访问所压缩的存储区域中的数据的请求,将所压缩的存储区域解压缩回所述存储器设备中的所述未压缩部分;以及
响应于检测到所述存储器设备中的高存储器使用,将所压缩的存储区域换出至所述存储设备,以增大所述存储器设备中的可用存储空间。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/730,211 US10565099B2 (en) | 2012-12-28 | 2012-12-28 | Methods and apparatus for compressed and compacted virtual memory |
US13/730,211 | 2012-12-28 | ||
PCT/US2013/071753 WO2014105323A1 (en) | 2012-12-28 | 2013-11-25 | Methods and apparatus for compressed and compacted virtual memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105027093A true CN105027093A (zh) | 2015-11-04 |
CN105027093B CN105027093B (zh) | 2020-02-21 |
Family
ID=49765689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380068367.0A Active CN105027093B (zh) | 2012-12-28 | 2013-11-25 | 用于压缩和紧凑虚拟存储器的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10565099B2 (zh) |
KR (1) | KR101739213B1 (zh) |
CN (1) | CN105027093B (zh) |
DE (1) | DE112013006298T5 (zh) |
TW (1) | TWI494764B (zh) |
WO (1) | WO2014105323A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391708A (zh) * | 2017-07-28 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种存储系统中性能统计文件存储的方法及装置 |
CN108139972A (zh) * | 2016-02-23 | 2018-06-08 | 谷歌有限责任公司 | 硬件辅助数据压缩中的存储器碎片管理 |
CN109196488A (zh) * | 2016-06-24 | 2019-01-11 | 高通股份有限公司 | 用于基于处理器的系统中的压缩存储器行的预提取机制 |
CN110235109A (zh) * | 2017-01-19 | 2019-09-13 | 国际商业机器公司 | 在虚拟环境中存储/重新存储受保护存储控制 |
US11928359B2 (en) | 2020-01-20 | 2024-03-12 | Huawei Technologies Co., Ltd. | Memory swapping method and apparatus |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US10565099B2 (en) * | 2012-12-28 | 2020-02-18 | Apple Inc. | Methods and apparatus for compressed and compacted virtual memory |
US9575982B1 (en) * | 2013-04-29 | 2017-02-21 | Amazon Technologies, Inc. | Size targeted database I/O compression |
US10102148B2 (en) * | 2013-06-13 | 2018-10-16 | Microsoft Technology Licensing, Llc | Page-based compressed storage management |
TWI493446B (zh) * | 2013-09-23 | 2015-07-21 | Mstar Semiconductor Inc | 記憶體管理方法及記憶體管理裝置 |
US9652373B2 (en) * | 2013-12-16 | 2017-05-16 | International Business Machines Corporation | Adaptive statistics for a linear address space |
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 |
US9940167B2 (en) * | 2014-05-20 | 2018-04-10 | Red Hat Israel, Ltd. | Identifying memory devices for swapping virtual machine memory pages |
US10459886B2 (en) | 2014-08-06 | 2019-10-29 | Quest Software Inc. | Client-side deduplication with local chunk caching |
US9990352B2 (en) * | 2014-08-06 | 2018-06-05 | Quest Software Inc. | Chunk compression in a deduplication aware client environment |
US9984093B2 (en) | 2014-08-06 | 2018-05-29 | Quest Software Inc. | Technique selection in a deduplication aware client environment |
US9917894B2 (en) | 2014-08-06 | 2018-03-13 | Quest Software Inc. | Accelerating transfer protocols |
KR20160070512A (ko) * | 2014-12-10 | 2016-06-20 | 삼성전자주식회사 | 반도체 장치 및 그 동작 방법 |
US9354812B1 (en) * | 2015-02-12 | 2016-05-31 | Qualcomm Incorporated | Dynamic memory utilization in a system on a chip |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
US9892053B2 (en) * | 2015-03-24 | 2018-02-13 | Intel Corporation | Compaction for memory hierarchies |
US10037270B2 (en) * | 2015-04-14 | 2018-07-31 | Microsoft Technology Licensing, Llc | Reducing memory commit charge when compressing memory |
US9720617B2 (en) * | 2015-06-02 | 2017-08-01 | Apple Inc. | System and method for compaction of compressed and uncompressed virtual memory |
KR101727508B1 (ko) | 2015-07-28 | 2017-04-18 | 서울과학기술대학교 산학협력단 | 하둡 기반 하드웨어 압축 고속화 장치 및 방법 |
US10606501B2 (en) | 2015-12-04 | 2020-03-31 | International Business Machines Corporation | Management of paging in compressed storage |
US10942844B2 (en) | 2016-06-10 | 2021-03-09 | Apple Inc. | Reserved memory in memory management system |
US10635337B2 (en) | 2016-06-27 | 2020-04-28 | Intel Corporation | Dynamic configuration of compressed virtual memory |
US10649889B2 (en) | 2017-06-04 | 2020-05-12 | Apple Inc. | Method and apparatus for managing kernel memory of data processing systems |
US10331558B2 (en) | 2017-07-28 | 2019-06-25 | Apple Inc. | Systems and methods for performing memory compression |
US10558364B2 (en) * | 2017-10-16 | 2020-02-11 | Alteryx, Inc. | Memory allocation in a data analytics system |
JP6608468B2 (ja) * | 2018-01-26 | 2019-11-20 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
WO2020032816A1 (en) * | 2018-08-09 | 2020-02-13 | Huawei Technologies Co., Ltd | Device and method for compacting compressed and uncompressed data blocks |
SE543649C2 (en) * | 2018-11-14 | 2021-05-18 | Zeropoint Tech Ab | Managing free space in a compressed memory system |
US11048419B2 (en) * | 2019-01-30 | 2021-06-29 | EMC IP Holding Company LLC | Adaptively over-allocating storage space for compressed data |
KR20220024206A (ko) * | 2019-07-02 | 2022-03-03 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 하드웨어 기반 메모리 압축 |
US11372547B2 (en) | 2020-02-13 | 2022-06-28 | International Business Machines Corporation | Compression of aging data during compaction |
CN113590500A (zh) * | 2020-04-30 | 2021-11-02 | 华为技术有限公司 | 一种内存管理方法及终端设备 |
CN112199303B (zh) * | 2020-12-03 | 2021-03-16 | 北京紫光青藤微系统有限公司 | 存储空间碎片化的处理方法和装置 |
US11995104B2 (en) * | 2022-05-27 | 2024-05-28 | Sap Se | Linear interval-based dynamic range partitioning |
TWI829394B (zh) * | 2022-10-17 | 2024-01-11 | 大陸商星宸科技股份有限公司 | 電子裝置及其操作方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699539A (en) * | 1993-12-30 | 1997-12-16 | Connectix Corporation | Virtual memory management system and method using data compression |
US20020138669A1 (en) * | 2001-03-21 | 2002-09-26 | Kadatch Andrew V. | Hibernation of computer systems |
US6516397B2 (en) * | 2001-04-09 | 2003-02-04 | Hewlett-Packard Company | Virtual memory system utilizing data compression implemented through a device |
CN1484151A (zh) * | 2002-08-08 | 2004-03-24 | �Ҵ���˾ | 用于将存储器压缩数据存储到存储器压缩磁盘上的方法和系统 |
CN1672135A (zh) * | 2002-08-06 | 2005-09-21 | 国际商业机器公司 | 基于可压缩性程度使用压缩主存储器的系统和方法 |
US7412466B1 (en) * | 2005-05-31 | 2008-08-12 | Sun Microsystems, Inc. | Offset-based forward address calculation in a sliding-compaction garbage collector |
US20090112949A1 (en) * | 2007-10-31 | 2009-04-30 | Microsoft Corporation | Compressed storage management |
US7533228B1 (en) * | 2005-05-27 | 2009-05-12 | Sun Microsystems, Inc. | Two-pass sliding compaction |
US7587572B1 (en) * | 2004-08-31 | 2009-09-08 | Sun Microsystems, Inc. | Method and system for managing process memory configured in resizable uncompressed and compressed regions |
US20090327621A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager |
CN102147768A (zh) * | 2010-05-21 | 2011-08-10 | 苏州捷泰科信息技术有限公司 | 存储器、固态缓存系统及缓存数据处理方法 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4829422A (en) * | 1987-04-02 | 1989-05-09 | Stellar Computer, Inc. | Control of multiple processors executing in parallel regions |
JPH07334310A (ja) * | 1994-06-06 | 1995-12-22 | Toshiba Corp | ディスク装置及び同装置における読み出しデータのバッファ記憶制御方法 |
US6002411A (en) | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
US5721823A (en) * | 1995-09-29 | 1998-02-24 | Hewlett-Packard Co. | Digital layout method suitable for near video on demand system |
US6040953A (en) * | 1997-03-25 | 2000-03-21 | International Business Machines Corporation | Adaptive data recovery method and means tuned to thermal asperities in a cyclic, multitracked magnetic storage subsystem |
US6148368A (en) * | 1997-07-31 | 2000-11-14 | Lsi Logic Corporation | Method for accelerating disk array write operations using segmented cache memory and data logging |
JP3444346B2 (ja) * | 1999-01-04 | 2003-09-08 | 日本電気株式会社 | 仮想メモリ管理方式 |
US6341325B2 (en) * | 1999-01-12 | 2002-01-22 | International Business Machines Corporation | Method and apparatus for addressing main memory contents including a directory structure in a computer system |
US6523102B1 (en) | 2000-04-14 | 2003-02-18 | Interactive Silicon, Inc. | Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules |
US6886085B1 (en) * | 2000-04-19 | 2005-04-26 | International Business Machines Corporation | Method and apparatus for efficient virtual memory management |
US6912679B1 (en) * | 2000-04-29 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | System and method for electrical data link testing |
US6968424B1 (en) * | 2002-08-07 | 2005-11-22 | Nvidia Corporation | Method and system for transparent compressed memory paging in a computer system |
US20040109463A1 (en) * | 2002-12-05 | 2004-06-10 | Alcatel Canada Inc. | Efficient data transmission method |
JP2005157444A (ja) * | 2003-11-20 | 2005-06-16 | Toshiba Corp | Fifo制御回路 |
US7302543B2 (en) * | 2004-06-16 | 2007-11-27 | Nec Laboratories America, Inc. | Compressed memory architecture for embedded systems |
KR100706242B1 (ko) * | 2005-02-07 | 2007-04-11 | 삼성전자주식회사 | 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법 |
US8930659B2 (en) * | 2005-03-31 | 2015-01-06 | Nec Corporation | Computer system, memory management method and program thereof |
WO2007005829A2 (en) * | 2005-07-01 | 2007-01-11 | Nec Laboratories America, Inc. | Operating system-based memory compression for embedded systems |
US8560760B2 (en) * | 2007-01-31 | 2013-10-15 | Microsoft Corporation | Extending flash drive lifespan |
US20080189558A1 (en) * | 2007-02-01 | 2008-08-07 | Sun Microsystems, Inc. | System and Method for Secure Data Storage |
KR101420798B1 (ko) * | 2007-11-23 | 2014-07-17 | 삼성전자주식회사 | 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말 |
JP5211751B2 (ja) * | 2008-02-26 | 2013-06-12 | 富士通株式会社 | 計算機、ダンププログラムおよびダンプ方法 |
US9098625B2 (en) * | 2008-02-29 | 2015-08-04 | International Business Machines Corporation | Viral trace |
US7948502B2 (en) * | 2008-05-13 | 2011-05-24 | Mitac International Corp. | Method of displaying picture having location data and apparatus thereof |
US20100036858A1 (en) * | 2008-08-06 | 2010-02-11 | Microsoft Corporation | Meta file system - transparently managing storage using multiple file systems |
US9253496B2 (en) * | 2008-12-12 | 2016-02-02 | Qualcomm Incorporated | Intelligent decoded picture buffering |
US8145833B1 (en) | 2009-10-30 | 2012-03-27 | CSR Technology Holdings Inc. | Compression solution for embedded devices and systems |
US8458431B2 (en) | 2009-11-03 | 2013-06-04 | International Business Machines Corporation | Expanding memory size |
US8484405B2 (en) * | 2010-07-13 | 2013-07-09 | Vmware, Inc. | Memory compression policies |
US9141526B2 (en) * | 2010-09-16 | 2015-09-22 | International Business Machines Corporation | Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit |
US9652568B1 (en) * | 2011-11-14 | 2017-05-16 | EMC IP Holding Company LLC | Method, apparatus, and computer program product for design and selection of an I/O subsystem of a supercomputer |
US8954556B2 (en) * | 2011-12-01 | 2015-02-10 | Verizon Patent And Licensing Inc. | Utility-based model for caching programs in a content delivery network |
CN104094239A (zh) * | 2012-01-29 | 2014-10-08 | 汤姆逊许可公司 | 有限随机存取存储器/闪存设备架构的闪存压缩指令缓存方法 |
US10565099B2 (en) * | 2012-12-28 | 2020-02-18 | Apple Inc. | Methods and apparatus for compressed and compacted virtual memory |
-
2012
- 2012-12-28 US US13/730,211 patent/US10565099B2/en active Active
-
2013
- 2013-11-25 KR KR1020157017157A patent/KR101739213B1/ko active IP Right Grant
- 2013-11-25 DE DE112013006298.4T patent/DE112013006298T5/de active Pending
- 2013-11-25 WO PCT/US2013/071753 patent/WO2014105323A1/en active Application Filing
- 2013-11-25 CN CN201380068367.0A patent/CN105027093B/zh active Active
- 2013-12-10 TW TW102145429A patent/TWI494764B/zh active
-
2019
- 2019-10-30 US US16/668,368 patent/US10970203B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699539A (en) * | 1993-12-30 | 1997-12-16 | Connectix Corporation | Virtual memory management system and method using data compression |
US20020138669A1 (en) * | 2001-03-21 | 2002-09-26 | Kadatch Andrew V. | Hibernation of computer systems |
US6516397B2 (en) * | 2001-04-09 | 2003-02-04 | Hewlett-Packard Company | Virtual memory system utilizing data compression implemented through a device |
CN1672135A (zh) * | 2002-08-06 | 2005-09-21 | 国际商业机器公司 | 基于可压缩性程度使用压缩主存储器的系统和方法 |
CN1484151A (zh) * | 2002-08-08 | 2004-03-24 | �Ҵ���˾ | 用于将存储器压缩数据存储到存储器压缩磁盘上的方法和系统 |
US7587572B1 (en) * | 2004-08-31 | 2009-09-08 | Sun Microsystems, Inc. | Method and system for managing process memory configured in resizable uncompressed and compressed regions |
US7533228B1 (en) * | 2005-05-27 | 2009-05-12 | Sun Microsystems, Inc. | Two-pass sliding compaction |
US7412466B1 (en) * | 2005-05-31 | 2008-08-12 | Sun Microsystems, Inc. | Offset-based forward address calculation in a sliding-compaction garbage collector |
US20090112949A1 (en) * | 2007-10-31 | 2009-04-30 | Microsoft Corporation | Compressed storage management |
US20090327621A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager |
CN102147768A (zh) * | 2010-05-21 | 2011-08-10 | 苏州捷泰科信息技术有限公司 | 存储器、固态缓存系统及缓存数据处理方法 |
Non-Patent Citations (1)
Title |
---|
SHEEP DOG: ""The Design and Implementation of a Log-Structured File System"", 《百度文库》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108139972A (zh) * | 2016-02-23 | 2018-06-08 | 谷歌有限责任公司 | 硬件辅助数据压缩中的存储器碎片管理 |
CN108139972B (zh) * | 2016-02-23 | 2023-02-28 | 谷歌有限责任公司 | 用于管理硬件辅助数据压缩中的存储器碎片的方法和设备 |
CN109196488A (zh) * | 2016-06-24 | 2019-01-11 | 高通股份有限公司 | 用于基于处理器的系统中的压缩存储器行的预提取机制 |
CN110235109A (zh) * | 2017-01-19 | 2019-09-13 | 国际商业机器公司 | 在虚拟环境中存储/重新存储受保护存储控制 |
CN110235109B (zh) * | 2017-01-19 | 2023-05-05 | 国际商业机器公司 | 在虚拟环境中存储/重新存储受保护存储控制 |
CN107391708A (zh) * | 2017-07-28 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种存储系统中性能统计文件存储的方法及装置 |
CN107391708B (zh) * | 2017-07-28 | 2020-09-22 | 苏州浪潮智能科技有限公司 | 一种存储系统中性能统计文件存储的方法及装置 |
US11928359B2 (en) | 2020-01-20 | 2024-03-12 | Huawei Technologies Co., Ltd. | Memory swapping method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
US20200073791A1 (en) | 2020-03-05 |
WO2014105323A1 (en) | 2014-07-03 |
KR101739213B1 (ko) | 2017-06-08 |
US10970203B2 (en) | 2021-04-06 |
DE112013006298T5 (de) | 2015-09-17 |
TW201432456A (zh) | 2014-08-16 |
CN105027093B (zh) | 2020-02-21 |
US10565099B2 (en) | 2020-02-18 |
TWI494764B (zh) | 2015-08-01 |
US20140189281A1 (en) | 2014-07-03 |
KR20150090211A (ko) | 2015-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105027093A (zh) | 用于压缩和紧凑虚拟存储器的方法和装置 | |
Lee et al. | LAST: locality-aware sector translation for NAND flash memory-based storage systems | |
CN104281528B (zh) | 一种数据存储方法及装置 | |
US20150193342A1 (en) | Storage apparatus and method of controlling the same | |
CN102667704A (zh) | 混合存储子系统 | |
US10310984B2 (en) | Storage apparatus and storage control method | |
CN103699496A (zh) | 分级存储器管理 | |
DE112013006305T5 (de) | Speichersystem und Verfahren zum Zuweisen von Ressourcen | |
CN105190567A (zh) | 用于管理存储系统快照的系统和方法 | |
CN105917318A (zh) | 用于实现基于ssd的i/o高速缓存的系统和方法 | |
CN104866428A (zh) | 数据存取方法和数据存取装置 | |
CN103761053A (zh) | 一种数据处理方法和装置 | |
US20160062691A1 (en) | Method for controlling memory device to achieve more power saving and related apparatus thereof | |
CN106663051A (zh) | 虚拟化计算中的存储器管理 | |
CN107408018A (zh) | 用于在固态驱动器中适应垃圾收集资源分配的机制 | |
US9471366B2 (en) | Virtual machine disk image backup using block allocation area | |
CN106959893A (zh) | 加速器、用于加速器的内存管理方法以及数据处理系统 | |
CN103218305A (zh) | 存储空间的分配方法 | |
CN102479549A (zh) | 半导体存储装置 | |
US9699254B2 (en) | Computer system, cache management method, and computer | |
WO2015072925A1 (en) | Method for hot i/o selective placement and metadata replacement for non-volatile memory cache on hybrid drive or system | |
US20140047161A1 (en) | System Employing MRAM and Physically Addressed Solid State Disk | |
CN102736988A (zh) | 存储器管理装置、存储器管理方法和控制程序 | |
CN105808150A (zh) | 用于混合式储存设备的固态硬盘快取系统 | |
CN105453066A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |