CN1331058C - 将存储器压缩数据存储到存储器压缩磁盘上的方法 - Google Patents
将存储器压缩数据存储到存储器压缩磁盘上的方法 Download PDFInfo
- Publication number
- CN1331058C CN1331058C CNB031274528A CN03127452A CN1331058C CN 1331058 C CN1331058 C CN 1331058C CN B031274528 A CNB031274528 A CN B031274528A CN 03127452 A CN03127452 A CN 03127452A CN 1331058 C CN1331058 C CN 1331058C
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- disk
- processor
- input
- 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.)
- Expired - Lifetime
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/0608—Saving storage space on 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/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0674—Disk device
- G06F3/0676—Magnetic disk 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Abstract
一种存储信息的方法(和系统),包括将主存储器压缩信息存储到存储器压缩磁盘上,其中页被单个地存储和检索,而不用解压该主存储器的压缩信息。
Description
技术领域
本发明总体上涉及压缩存储器和压缩磁盘系统,更具体而言,涉及到一种方法,该方法用于在存储器和磁盘适配器之间来回传送压缩数据,以及用于将存储器压缩数据存储到磁盘上,由此在存储器和磁盘之间传送数据时就不需要解压数据和重新压缩数据,这样就节省了系统时间和带宽。
背景技术
主存储器压缩
在计算机组织上的新兴研发是将数据压缩应用到计算机系统的主存储器上,其中在主存储器中的数据以压缩格式存储。例如,图1展示实现压缩主存储器110的示范性计算机系统100的总体结构。
在图1中,中央处理单元(CPU)102将数据读到高速缓存器104中并从高速缓存器104写数据。高速缓存器的“未命中”和“存储”导致通过压缩控制器106读取和写入压缩主存储器110。
即,典型地,CPU将从高速缓存器104中获取数据(例如,假设高速缓存器“命中”),然而当高速缓存器“未命中”时,CPU将通过压缩控制器106从主存储器110获取数据。这样的数据会被检索到CPU,然后该数据可能会被存储到高速缓存器104中(例如,通常所谓的“存储一贯穿”高速缓存器,这是一种最常用的高速缓存技术)。
通常将压缩主存储器110划分为大量逻辑上大小固定的段(例如,跨越连续的存储器地址范围的段)。这些逻辑段是压缩的单位,被称为“存储器行”。存储器行在物理上以压缩格式存储,因此占用数目可变的物理存储单元。已经提出的几种计算机系统的设计方案,其中主存储器的内容被压缩,包括美国专利No.5,761,536,标题为“System andMethod for Reducing Memory Fragmentation by Assigning Remaindersto Share Memory Blocks on a Best Fit Basis”(“用于通过以最佳适应为基准来分配剩余以便共享存储器块来减少存储器碎片的系统和方法”)以及Franaszek等人的“Design and Analysis of InternalOrganizations for Compressed Random Access Memories”(“对压缩的随机存取存储器的内部组织的设计和分析”),IBM ResearchReport RC 21146,IBM Watson Research Center,1998年3月30日(修订时间1998年10月9日)。
在页式存储器系统中,存储器管理的单位是“页”,通常由具有连续实际地址的4096个字节组成,以4096个字节为边界对齐。压缩的单位可以是任何大小,在有些系统中,压缩的单位是页。
为了简化压缩存储器系统的管理,更好地是选择压缩单位的大小(称为“行”)使得未压缩的页的大小是未压缩的行的大小的倍数。然后将页划分为固定数量的行,并且一起对行的字节进行压缩和解压。以下,假设未压缩行的长度是1024字节。
对行进行压缩产生了大小可变的压缩行(例如,不同行将压缩到不同数目的字节)。压缩的行大小是一个重要的参数,它对于物理存储器的管理是必需的。如果将没有压缩到小于其原始大小的行保留为不被压缩,则人们需要(1+log(n))个比特来描述所压缩的行的大小,其中n是原始大小的字节数,该对数的底是2。
为了简化管理,将所压缩的行的大小可限制成是固定数目字节的倍数,例如通过使用零来“填充”(padding)所压缩的行。术语“区组”(granule)被用来指示所压缩数据的原子大小。区组大小应该是行的大小的除数。
图2更详细地展示压缩主存储器系统210的体系结构200。体系结构200包括包含高速缓存行241和高速缓存目录242的高速缓存器240,包含压缩器261和解压器262的压缩控制器260,以及压缩主存储器210。压缩主存储器210包括目录220和大量大小固定的块230,也称为“存储器扇区”。上面示范性的格式和组织就是所指的“主存储器的压缩数据”。
如图2所示,对于从压缩存储器到高速缓存器的读取,解压器262被应用,反之当从高速缓存器写到压缩主存储器时,必须经由压缩器261对行进行压缩。众所周知的是,在高速缓存器中的行类似地被保持在主存储器中。对于这些行,如果必须要从高速缓存器去除一个行(例如,该高速缓存器的容量被用尽),那么如果被修改的话,则正被去除的高速缓存器行就经由压缩器261被写回到压缩主存储器210。
如果在高速缓存器240中没有查找到与地址A相关联的高速缓存行,则该地址A 270就被用来编制到目录D 220中作为索引。这一点不同于常规计算机系统,在常规计算机系统中,地址被用来直接定位存储器M 210中的存储单元。
每个目录条目包含允许所关联的高速缓存行被检索的信息。由D220中的目录条目所指的压缩数据的单位可以对应于高速缓存行241,或者压缩的单位可以大于一个高速缓存行,在该高速缓存行的例子中,多个高速缓存行可以被压缩在一起成为一个压缩单位。
与地址A1 271相关联的行1的目录条目221适用于已经被压缩到一定程度的行,按照该程度所压缩的行可被完全地存储到该目录条目中。图2中的行A2 272、A3 273、以及A4 274没有压缩到足以被存储到一个目录条目中,因此它们被存储到整数数目的存储器扇区中。
与地址A2 272相关联的行2的目录条目222适用于使用第一个满的存储器扇区231和第二个部分填充的存储器扇区232以压缩格式被存储的行。
最后,与地址A3 273和A4 274相关联的行3和行4的目录条目223和224适用于使用大量满的存储器扇区(对于行3是2个扇区233和234,并且对于行4没有扇区)以压缩格式被存储的行,并且其中这两个压缩行的剩余已经被组合在块235中。
由在一个页之内(或者跨多个页)的不同行所共享的存储器-扇区被用来减少碎片,并且在这一情形中,将共享存储器扇区的行称为共居者。
图3展示了目录(220)条目格式的一些例子,它们可用在图2的主存储器系统210的目录220中。对于此例来说,假设图2的存储器扇区230的大小是256字节,并假设图2的高速缓存行241的大小是1024字节。这样,行就能够使用四个存储器扇区以未压缩的格式被存储。
对于这一例子,使用了大小为16字节的目录条目,其中第一字节包括大量的标志。第一字节301的内容确定目录条目的剩余的格式。
标志位302指明该行以压缩格式还是以未压缩格式被存储。如果以未压缩格式被存储,则目录条目的剩余被解释为用于行1 306,其中四个30比特的地址给出包含该行的四个存储器扇区的存储器中的地址。
如果以压缩格式被存储,则标志位303指示该压缩行是否完全被存储到该目录条目中。如果确实如此,则该目录条目的格式就与用于行3 308的格式一样,其中存储可达120比特的压缩数据。否则,对于长度大于120比特的压缩行,可以使用用于行1 306或者行2 307所展示的格式。
在行1 306格式的情形下,附加标志位304指定用来存储该压缩行的块数,从1-4的30比特的地址指定该扇区的位置,最后,在最后的存储器扇区(以32字节为单位)中存储的该压缩行的剩余或者碎片的大小,与指示该碎片被存储在该存储器扇区的开始处还是结尾处的位一起,由四个碎片信息位305给出。
目录条目格式307说明一种候选格式,在该格式中,将该压缩行的一部分存储到目录条目中(以便减小解压等待时间)。在这一情形下,只将用来存储该压缩行的剩余部分的第一扇区和最后扇区的地址存储在该目录条目中,以及其中使用链表技术来查找中间扇区(如果有的话)。即,如果要求的话,用来存储该压缩行的每个扇区,可具有包含用来存储该给定压缩行的下一个存储器扇区的地址的指针字段。
因此,根据数据的解压/压缩,许多不同的格式可被用在压缩主存储器的目录220中。
磁盘压缩
出现在磁盘系统中的另一个问题在于从磁盘到系统主存储器的过程,以及在试图单独访问在磁盘上的压缩页的过程,与访问在主存储器中压缩数据的过程相反。实际上,典型的是,磁盘和主存储器采用具有不同格式的两种不同的压缩系统。因此,来自主存储器中的压缩数据必须被解压,然后被发送到磁盘系统,在磁盘系统中,它再次被重新压缩,反之亦然。这样,一直都没有措施来从磁盘上取压缩数据并直接将它放置到主存储器中,此处,该压缩数据然后如上所述被作为压缩主存储器数据来加以引用。
在有些磁盘系统中,诸如IBM AS/400 DASD适配器,页以压缩形式被存储以便改进性价比。典型地,个别页(或者页组)被压缩成数目可变的长度固定的块,称为“磁盘扇区”。
图4展示了I/O处理器(IOP)400的结构以及它是如何与系统的其余部分相连接的,更具体而言,该图是输入/输出适配器(IOA)405和输入/输出处理器400的高层表示。
总体而言,它展示了一侧向后连接到系统,而另一侧将被连接到磁盘系统,并且IOP400一般具有它自己的压缩器/解压器403。即,正被存储到磁盘上的数据将在IOP中被压缩,因为来自主存储器的信息确实还没有由主存储器压缩。
IOP400的操作由IOP处理器组合体402控制,该处理器组合体通过系统总线到IOA总线适配器401经由系统总线406与主系统进行通信。IOP400具有本地存储器404。如果IOP在硬件上支持压缩,则它就包含压缩器/解压器子系统403。IOP控制一个或多个IOA适配器405,该适配器通过DASD总线407提供了与直接存取存储磁盘(DASD)之间的接口。
在压缩磁盘中,压缩单位通常是页(例如4096个字节),它也是I/O的原子单位。磁盘上的物理空间以称为扇区的原子单位来加以管理。磁盘扇区通常包含512字节的数据,并且能够包含附加信息,诸如循环冗余校验码(CRC)字节和系统标题(system headers)。
当向压缩磁盘写入页时,页首先被压缩,然后将作为结果的压缩页存储在整数数目的磁盘扇区中。有几种管理和组织压缩磁盘的方法是可行的,它们依赖不同的目录数据结构。
从常规技术的描述来看,显而易见的是,压缩磁盘的组织和压缩存储器的组织通常是很不相同的。这种例子,例如是,当磁盘子系统与计算单元(像诸如SHARK或者EMC磁盘服务器这样的企业存储服务器)相互独立时,或者当这两种技术相互独立地被开发(这是用于支持存储器压缩并使用当前磁盘适配器的AS/400机的例子)时。
因为已经建立用来支持存储器压缩和磁盘压缩的结构是十分不同的,所以当支持存储器压缩的系统与压缩磁盘一起工作时会出现低效率。
例如,当数据被从存储器传送到磁盘以及从磁盘传送到存储器时,如上面所提及的,数据必须首先被解压,然后被传送,接着被重新压缩。
从原理上讲,数据可以以压缩的形式被传送到磁盘上以及从磁盘上被传送。这样就不仅仅避免了执行附加的压缩和解压的必要,还有效地增加了链路的带宽。
此外,如果数据以压缩格式被从存储器传送到磁盘适配器,则磁盘适配器会预先知道该数据的大小,并且能够作出更好的存储管理决策。相对比而言,在当前压缩磁盘系统中,磁盘适配器根据它期望如何压缩数据来分配存储器。
不过,直接将这种压缩数据传送到磁盘上而没有附加的和高代价的解压和重新压缩的步骤就要求改变I/O的操作以及系统结构。这些改变就是本发明的主题。
发明内容
鉴于前面的问题和其它问题、缺点、以及常规方法和结构的劣势,本发明的目的是提供一种在I/O操作上实现减小的等待时间的方法和结构。
另一个目的是提供一种方法和系统,其中数据在等待着压缩/解压的同时能够被传送到磁盘和能够从磁盘传送而不必被缓冲。
另一个目的是提供一种方法和系统,其中,在主存储器和磁盘之间,增加的带宽被提供了等于主存储器中的压缩率的系数。
又一个目的是提供一种方法和系统,其中压缩磁盘能够被用作压缩存储器系统的分页系统。
再一个目的是提供一种方法和系统,该方法和系统不依赖压缩磁盘组织的专用特征,并且能够与任何现有的压缩磁盘模式一起使用。
在本发明的第一方面,一种存储信息的方法(和系统),包括将主存储器压缩信息存储到存储器压缩磁盘上,其中页是个别地被存储和检索的,而不用对主存储器压缩信息进行解压。
在本发明的第二方面,一种用在被连接到支持压缩的存储系统且支持主存储器压缩的计算机系统中的方法(和系统),包括将存储器压缩数据存储到压缩磁盘上,并且从磁盘上检索存储器压缩数据。要注意的是,“数据”是指存储器的一般内容,并且包括程序代码。
根据本发明的独一无二且非显而易见的方面,提供了一种方法(和系统)以便将存储器压缩数据存储到磁盘上。
此外,本方面使得在I/O操作上减小了等待时间。实际上,数据在等待着压缩/解压的同时能够被传送到磁盘上并且被从磁盘上传送而不必被缓冲。
再者,在磁盘适配器上出现了降低的资源消耗。即,数据在等待着压缩/解压的同时不必被缓冲,并且不必管理等待着被压缩/解压的页的队列等。
还有,将在主存储器和磁盘之间的带宽增加等于在主存储器中的压缩率的系数是可能的。
而且,为将数据放置到磁盘上提供了更好的算法。即,因为压缩数据的大小是已知的,所以能够作出关于如何将压缩数据放置到磁盘上的更好的存储决策。
此外,依照本发明,压缩磁盘能够被用作压缩存储器系统的分页系统。即,在不用压缩的二次存储的压缩存储器系统中,由操作系统交换到磁盘上的页被解压,同时I/O操作被执行。
此外,本发明不依赖压缩磁盘组织的专门特征,并且能够与任何现有的压缩磁盘模式一起使用。实际上,本发明能够被现有的硬件系统(例如,图1和图4的示范性硬件系统)使用,并且不要求对现有的硬件作出任何实质性的修改。
附图说明
参考如下附图根据本发明的优选实施例的如下的详细描述,将对前面的目的和其它目的、方面和优点会有更好的理解,在附图中:
图1说明使用压缩主存储器110的计算机系统100的结构;
图2说明压缩主存储器系统组织200;
图3说明压缩主存储器220的目录条目格式;
图4说明I/O处理器(IOP)400和I/O适配器(IOA)405;
图5说明根据本发明的用于在写磁盘期间在IOP(例如,400)和操作系统(OS)之间的通信协议的方法500,以及用于支持从和至压缩存储器的直接存储器存取(DMA)传送的系统的流程图;
图6说明根据本发明的用于将数据从磁盘上的整数数目的存储器扇区存储到每个磁盘扇区中的示范性存储格式600;以及
图7说明用于存储根据本发明的方法的程序步骤的信号承载介质700(例如,存储介质)。
具体实施方式
现在参考附图,更具体而言参考图1-7,它们展示了根据本发明的方法和结构的优选实施例。
优选实施例
在优选实施例中,假设高速缓存行和存储器行具有相同的大小(例如,1024字节),存储器区组的长度是64字节,以及存储器扇区的长度是256字节,并且是以256字节边界对齐。
很明显,将本发明当作一个整体对于本领域技术人员而言是很清楚的,本发明并不限制在方法的这一特定选择。
本发明具有几个主要部分,包括如何将存储器压缩数据从处理器传送到IOP,以及如何在IOP和磁盘之间传送,以及如何将存储器压缩数据存储到磁盘上。这些部分将在下面依次加以论述。
将存储器压缩数据传送到和从I/O处理器/I/O适配器(IOP/IOA)传送
数据在处理器和IOA/IOP之间以及在IOA/IOP和磁盘之间的传送依赖于计算系统的体系结构。
在优选实施例,计算机的体系结构支持处理器间的通信协议,该通信协议允许数据以压缩格式在不同的节点之间被传送。
在一个实施例中,存储器控制器提供对NUMA(非均衡存储器访问)的支持。
在另一个实施例中,存储器控制器支持在各处理器或者各处理器簇之间的消息传递。在这两种实施例中,数据以压缩格式被传送。传送的原子单位是压缩的原子单位或者它的倍数,并且在压缩数据之前,对于解压该数据所要求的信息被传送。这一信息例如包括图3的标志301。
在这些优选实施例中,在该计算机中的操作系统驱动器以及在该I/O处理器或者IOP中的代码,会传送同样的信息(例如,目录信息和压缩存储器扇区),如上所述,该同样的信息在处理器它们自己之间传送数据时被传送。
在另一个优选实施例中,该体系结构允许对压缩存储器的直接存储器存取(DMA)。
图5绘制的是说明利用本发明进行磁盘写操作的方法500的流程图。要再次注意的是,本发明能够被应用到现有的硬件上,以使得该硬件更加有效。
在步骤501,操作系统向I/O处理器发送与要被写入的页相关联的整个目录内容(所有行)。IOP对于在该页中所包含的每个行进行迭代(步骤502),直到不再有行为止(步骤510),在此时该过程结束。要再次注意的是,“行”是指无论如何都被压缩的行(例如,无论采用什么单位来进行压缩)。
对于每个行,在步骤503,IOP解析目录标志(例如,在图3中所展示的标志301,包括“已压缩/未压缩”、“已存储在目录中”,等等),并且试图去理解(确定)该数据是怎样被存储的(例如,格式是什么样的),并且在步骤504检查该压缩行是否包含在该目录中。
在发明的方法中,总体上假设行的大小大于压缩单位,并且将磁盘看做是以页为基准的。这样,将确定哪些行在该页中,然后获取那些目录。接着,系统必须确定该行是否被存储在该目录中,然后系统要么将在该目录中查找该数据,要么从该存储器扇区中检索出该数据。在任一事件中,当完成时,该系统将具有每个行的数据。
因此,返回到图5的流程图,如果该压缩行整个都被存储在(压缩到)该目录,则在步骤505,IOP从该目录条目将它抽取出来,并且在步骤502,访问下一行。
否则(例如,如果在步骤504,该行没有压缩到该目录;在步骤504是“否”),则在步骤506,IOP将对包含该压缩行的存储器扇区进行迭代。在步骤507,IOP从该目录条目中抽取每个扇区的地址,并且在步骤508,通过从DMA操作来从存储器中读取该扇区。
接着,如果还有存储器扇区,则该过程就循环返回到步骤506。这种过程迭代到对于一特定行,所有的数据都已经被从存储器扇区中检索出为止。
如果最后的扇区在不同的存储器行之间被共享(例如,在“共居”的例子中,信息的最后一部分处于被共享的最后扇区中),则在步骤509,IOP从该最后的扇区中抽取数据。
要注意的是,在这样的例子中,确定该数据在最后的扇区中被定位的位置(例如,在扇区的开始处或是在该区的结尾处)是有好处的。这样的位置最好由图3所展示的目录标志305来加以指示。
在一个不同的实施例中,不执行步骤509,并且该共享的扇区不被分开。在这两个实施例中,共享的扇区仅仅从存储器中被读取一次。当该最后的行已经被从存储器中读取时,在步骤510,该传送协议就终止了。
这样,本发明提供一种将已经在存储器中被压缩的数据存储到磁盘上的高效的方式。
关于从磁盘的读取操作,如果所使用的数据压缩/存储格式与在存储器中的相同(例如,以下所述图6中的格式),则上面的操作可以是相似的。相似地,如果该数据是以不同方式被压缩的,则上面的操作会稍有不同,因为该数据会被以不同方式压缩。
即,在读取期间,操作系统驱动器将未用的段的地址n传送到IOP,此处n是存储该数据所要求的最大的段的数目(例如,在这一例子中,每页16段)。这些段还被从空闲段列表中删除。
IOA从该磁盘中读取数据并将该段写入到指示的存储单元,同时根据该磁盘的内容和该段的物理地址来重组该目录信息。
当该传送完成时,该目录信息就被传送到操作系统驱动器,该操作系统驱动器更新该压缩存储器目录。因为存储该段所需要的段的数目可以小于n,所以任何未用的段就被返回到空闲列表。
将存储器压缩数据存储到压缩磁盘上
图6说明了将数据存储到磁盘上磁盘扇区601、602、603的方法。
在典型计算机系统中的I/O单位是磁盘扇区或者是页。在AS/400压缩的DASD中,I/O单位是页。Windows NT和Windows 2000也按页来读取和写入数据。
压缩DASD的IOP将4K的数据压缩成数目可变的字节,并且将它们存储到确定数目的扇区中。在优选实施例中,该实施例例如使用AS/400压缩的DASD,页被存储在数目可变的磁盘扇区上,并且两个不同的页不能够共享一个磁盘扇区。压缩页还被存储到连续的磁盘扇区上。没有压缩到原始大小的预定量的(例如,7/8或者更低)页,包括与数据存储在一起的一些标题信息,未被压缩地存储到9个磁盘扇区上:8个扇区用于数据,而1个扇区用于该系统标题。
一般来讲,磁盘上的和存储器上的压缩单位可以是不相同的。因此,可以使用图6的示范性模式。在该示范性模式中,每个磁盘扇区能够保持512字节,因此能够存储两个256字节的存储器区。
在这一发明中,提出了两种方法来将存储器压缩数据存储到数目可变的磁盘扇区中。
第一种方法
第一种方法包括将压缩的系统标题、压缩的数据控制和填充(Compressed Data Control and Pads)(如果需要的话,与在AS/400DASD中的例子一样)与目录信息一起存储在256B的存储器扇区中,并且将这一存储器扇区与压缩行的存储器扇区一起存储成磁盘扇区的数据部分。
在该优选实施例中,因为一个磁盘扇区包含512字节,因而在每个磁盘扇区中能够存储两个(2)存储器扇区。在将存储器段存储到磁盘段中的次序遵循常规方式,从而使得IOA知道共享的存储器扇区被存储在磁盘的哪个位置。
在图6所说明的例子中,磁盘扇区被绘制成粗线长方形,而存储器扇区被绘制成细线长方形。
磁盘扇区601存储存储器扇区610,该存储器扇区包含压缩的系统标题、压缩的数据控制和填充、以及在页中的行的目录信息,以及第一存储器扇区611,该存储器扇区包含属于所存储的页的行1的压缩数据。在这一例子中,存储器行1压缩到两个存储器扇区,第二个存储器扇区(612)被存储在磁盘扇区602的启始处。磁盘扇区602的第二部分包含行2(613)所使用的第一存储器扇区。用来存储所压缩的页的最后的磁盘扇区603包含最后的存储器扇区(图6中的614)。
上述技术方案的优点在于它的简单性。即,存储器段保持不被修改,并且以与在主存储器中所使用的正好相同的格式来读取和写入。
缺点在于由于三个因素而导致增加了碎片。例如,如果行不是共居者,则它们最后的存储器段就被部分地填充。此外,包含目录信息和系统标题的附加存储器段大部分都是空的。
最后,如在图6中所绘制的(扇区603),如果由页和标题、控制、以及目录信息所使用的存储器扇区的数目是奇数,则其中一个磁盘扇区只被利用了一半。
第二种方法
第二种方法包括按如下所述来组织数据:
压缩的系统标题、压缩的数据控制、填充、用来描述由所有压缩行使用的区组(granule)的数目的(page_size/line_size)*log2(line_size/granule_size)比特、以及计数器一起被存储在数目可变的区组中。这些区组的术语叫做“标题区组”(header granules)。计数器包含标题区组的数目。该格式使得IOA能够容易地恢复数据。组成每个压缩行的区组由IOA从该存储器段中抽取,被顺序地连接到标题区组,并且被存储到整数数目的磁盘扇区中。
当从磁盘读取时,该IOA根据存储器压缩格式将区组重组成存储器段。
这一技术方案的优点是改善了碎片,(在把该数据组织成数目固定的段之前)该碎片现在平均等于一个区组大小的2.5倍。第二个潜在的优点是由于在从磁盘读取数据时有可能更好地组织共居者而产生的。
缺点是稍微增加了在IOA的代码的复杂性。
除了上述的环境之外,本发明的不同方面包括一种用于执行上述方法的计算机实现方法。作为一个例子,这一方法可以在上面论述的特定环境中加以实现。
这种方法可以例如通过操作计算机来加以实现,通过数字数据处理装置来具体化,以执行机器可读指令的序列。这些指令可以驻留在各种类型的信号承载介质中。
因此,本方面的这一方面针对一种程序产品,包括信号承载介质,该信号承载介质具体包括可由并入上述CPU和硬件的数字数据处理器执行的机器可读指令的程序,用于执行本发明的方法。
这一信号承载介质可以包括例如包含在CPU之中的,例如由快速存取存储器所代表的RAM。或者,这些指令可以包含在另一种信号承载介质中,诸如可由CPU直接或者间接地访问的磁数据存储软盘700(图7)。
不论被包含在软盘700、计算机/CPU或者别的什么地方,这些指令都可以被存储在各种机器可读的数据存储介质上,诸如DASD存储器(例如,常规的“硬盘驱动器”或者RAID阵列)、磁带、电只读存储器(例如,ROM、EPROM、或者EEPROM)、光存储设备(例如CD-ROM、WORM、DVD、数字光带等等)、纸“穿孔”卡、或者其它适合的信号承载介质,包括通信介质,诸如数字和模拟和通信链路以及无线。在本发明的说明性实施例中,机器可读指令可以包括经由诸如“C”等等这样的语言编译过的软件目标代码。
因此,依照本发明,提供了各种优点,包括更低要求的带宽、更少的磁盘空间、在磁盘高速缓存器中要求更少的空间、以及更好地利用存储器压缩器/解压器(不被要求来从磁盘中存储/检索页)。
尽管本发明已经在几个优选实施例方面进行了描述,但是本领域技术人员将会认识到本发明能够在所附的权利要求的精神和范围之内通过修改就能够加以实践。
此外,要注意的是,申请人意向是包括所有权利要求元素的等价内容,甚至以后在申请期间被修改的权利要求元素。
Claims (23)
1.一种存储信息的方法,包括:
将主存储器压缩信息存储到一存储压缩磁盘上,或从存储压缩磁盘上检索压缩信息到主存储器,而不解压缩所述主存储器信息,其中页是被单个地存储和检索的。
2.权利要求1的方法,进一步包括:
将压缩存储器的目录信息发送到所述磁盘。
3.权利要求2的方法,进一步包括:
解释所述压缩存储器目录信息,以便获取由数据所使用的存储器扇区的物理存储单元。
4.权利要求1的方法,进一步包括:
将所述存储器扇区的内容拷贝到所述磁盘。
5.权利要求1的方法,其特征在于:主存储器的压缩格式和磁盘的压缩格式不相同。
6.一种将压缩数据从主存储器传送到输入/输出适配器/输入/输出处理器的方法,所述方法包括:
将压缩存储器的目录信息发送到输入/输出适配器/输入/输出处理器;
在输入/输出适配器/输入/输出处理器解释该压缩存储器的目录信息,以便获取在所述主存储器中由所需要的数据使用的存储器扇区的物理存储单元;以及
使用直接存储器存取(DMA)的操作将所述存储器扇区的内容拷贝到输入/输出适配器/输入/输出处理器,而不用解压该数据。
7.权利要求6的方法,其特征在于:所述主存储器和所述磁盘被并入到支持存储器压缩的计算机系统中,并且其中数据以与在所述主存储器中存储的数据的格式不相同的压缩格式被存储到所述磁盘上,以及
其中输入/输出适配器/输入/输出处理器通过所述DMA操作有选择地从主存储器中读取和写入主存储器。
8.权利要求6的方法,进一步包括:
在将所要求的数据发送到输入/输出适配器/输入/输出处理器之前,锁定所要求的数据的目录条目;以及
在所有对应的存储器区都已经被拷贝到输入/输出适配器/输入/输出处理器之后,解除对所要求的数据的目录条目的锁定。
9.权利要求6的方法,其特征在于:数据以未压缩的格式被存储到主存储器中。
10.权利要求6的方法,其特征在于:该存储器的压缩数据的至少一部分被存储到存储器的压缩目录中。
11.在支持存储器压缩的计算机系统中,其中数据以不同的压缩格式被存储到磁盘上,并且其中输入/输出适配器/输入/输出处理器通过直接存储器存取(DMA)操作有选择地从主存储器进行读取并写入主存储器,一种将压缩数据从输入/输出适配器/输入/输出处理器传送到所述主存储器中的方法,所述方法包括:
保留一组空闲存储器扇区来包含在所述主存储器中的数据;
向输入/输出适配器/输入/输出处理器发送所述存储器扇区的地址;
使用所述DMA操作将数据从输入/输出适配器/输入/输出处理器拷贝到所述存储器扇区;
在输入/输出适配器/输入/输出处理器构造限定如何将数据存储到存储器中以及将数据存储到存储器的哪个位置的压缩存储器的目录信息;
将该存储器目录信息发送到存储器控制器;以及
将该存储器目录信息存储到压缩存储器的目录结构中。
12.权利要求11的方法,进一步包括:
将数据从所述磁盘上读到输入/输出适配器/输入/输出处理器上。
13.权利要求12的方法,其特征在于所述读取包括:
从该磁盘读取包含所需要的数据的磁盘扇区;
解除每个所述磁盘扇区的内容的组成为D/S数据项;以及
从第一数据项中抽取存储器目录信息、系统标题、压缩数据控制和填充。
14.权利要求11的方法,其特征在于:将数据从压缩存储器传送到输入/输出适配器/输入/输出处理器。
15.权利要求11的方法,其特征在于:使用处理器间的通信协议将数据从压缩存储器传送到输入/输出适配器/输入/输出处理器。
16.在支持存储器压缩的计算机系统中,其中存储器压缩数据以大小为S的存储器扇区单位加以管理,其中数据被以不同的压缩格式存储到磁盘上,并且其中在所述磁盘上的数据以大小为D的磁盘扇区单位加以管理,一种用于将存储器压缩数据存储到压缩磁盘上的方法,所述方法包括:
将至少一个压缩存储器的目录信息、系统标题、压缩数据控制、以及填充组合成与存储器扇区具有相同大小的S的数据结构;
将所述数据结构和在所需要的存储器扇区中包含的数据分成为D/S项的组;以及
将每个所述组存储到相互独立的磁盘扇区中。
17.权利要求16的方法,进一步包括:
确定来自压缩存储器的目录信息的数据的大小;以及
在数据正被从所述主存储器传送的同时,分配对应数目的磁盘扇区以便存储该数据。
18.在支持存储器压缩的计算机系统中,其中存储器压缩数据以大小为G的存储器区组为单位加以管理,其中数据被以不同的压缩格式存储到磁盘上,并且其中在所述磁盘上的数据以大小为D的磁盘扇区单位加以管理,一种用于将存储器压缩数据存储到压缩磁盘上的方法,所述方法包括:
将压缩存储器的目录信息、系统标题、压缩数据控制和填充组成固定数目为N的区组;
将所述区组和所需要的数据的区组连接起来;
将所述连接的区组划分成D/G区组的组;以及
将每个所述组存储到相独立的磁盘扇区中。
19.权利要求18的方法,进一步包括:
将数据从磁盘读取到输入/输出适配器/输入/输出处理器上。
20.权利要求19的方法,其特征在于所述读取包括:
从该磁盘读取包含所需要的数据的磁盘扇区;
将每个所述磁盘扇区的内容划分成D/G区组;
组合第一N个区组;以及
从所述组合的第一N个区组中抽取存储器目录信息、系统标题、压缩数据控制和填充。
21.权利要求18的方法,其特征在于:数据被从输入/输出适配器/输入/输出处理器传送到压缩存储器。
22.权利要求21的方法,其特征在于:使用处理器间的协议将数据从输入/输出适配器/输入/输出处理器传送到压缩存储器。
23.权利要求18的方法,其特征在于:该压缩磁盘包括log-结构型的阵列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/214,171 US7958289B2 (en) | 2002-08-08 | 2002-08-08 | Method and system for storing memory compressed data onto memory compressed disks |
US10/214171 | 2002-08-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1484151A CN1484151A (zh) | 2004-03-24 |
CN1331058C true CN1331058C (zh) | 2007-08-08 |
Family
ID=31494620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031274528A Expired - Lifetime CN1331058C (zh) | 2002-08-08 | 2003-08-07 | 将存储器压缩数据存储到存储器压缩磁盘上的方法 |
Country Status (3)
Country | Link |
---|---|
US (5) | US7958289B2 (zh) |
CN (1) | CN1331058C (zh) |
TW (1) | TWI265490B (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958289B2 (en) | 2002-08-08 | 2011-06-07 | International Business Machines Corporation | Method and system for storing memory compressed data onto memory compressed disks |
US6956507B2 (en) * | 2002-12-12 | 2005-10-18 | International Business Machines Corporation | Method and apparatus for morphing memory compressed machines |
ATE529775T1 (de) * | 2003-05-06 | 2011-11-15 | Koninkl Philips Electronics Nv | Elektrowetting module |
WO2005103878A2 (en) * | 2004-04-26 | 2005-11-03 | Storewiz, Inc. | Method and system for compression of files for storage and operation on compressed files |
US7424482B2 (en) * | 2004-04-26 | 2008-09-09 | Storwize Inc. | Method and system for compression of data for block mode access storage |
US20060230014A1 (en) * | 2004-04-26 | 2006-10-12 | Storewiz Inc. | Method and system for compression of files for storage and operation on compressed files |
US20060190643A1 (en) * | 2004-04-26 | 2006-08-24 | Storewiz, Inc. | Method and system for compression of data for block mode access storage |
US8327050B2 (en) * | 2005-04-21 | 2012-12-04 | International Business Machines Corporation | Systems and methods for compressing files for storage and operation on compressed files |
CN101346883A (zh) * | 2005-10-26 | 2009-01-14 | 斯多维兹有限公司 | 用于块模式访问存储的数据压缩的方法和系统 |
EP2030115A4 (en) | 2006-05-31 | 2012-08-22 | Ibm | METHOD AND SYSTEM FOR TRANSFORMING LOGICAL DATA OBJECTS FOR STORAGE |
US8769311B2 (en) | 2006-05-31 | 2014-07-01 | International Business Machines Corporation | Systems and methods for transformation of logical data objects for storage |
US8452846B2 (en) | 2010-08-12 | 2013-05-28 | Talari Networks Incorporated | Adaptive private network asynchronous distributed shared memory services |
US8843449B2 (en) | 2009-06-16 | 2014-09-23 | Bmc Software, Inc. | Unobtrusive copies of actively used compressed indices |
US8468315B2 (en) * | 2009-10-28 | 2013-06-18 | International Business Machines Corporation | Facilitating data compression during replication using a compressible configuration bit |
KR101643273B1 (ko) | 2010-04-09 | 2016-08-01 | 삼성전자주식회사 | 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템 |
CN103329112B (zh) * | 2010-10-22 | 2015-12-16 | 意法爱立信有限公司 | 用于减少页面错误发生时压缩页面加载时间的方法和装置 |
JP2013084116A (ja) * | 2011-10-07 | 2013-05-09 | Fujitsu Ltd | 通信装置、通信装置の制御方法及び情報処理システム |
US9053018B2 (en) * | 2012-06-29 | 2015-06-09 | International Business Machines Corporation | Compressed memory page selection based on a population count of a dataset |
US10565099B2 (en) * | 2012-12-28 | 2020-02-18 | Apple Inc. | Methods and apparatus for compressed and compacted virtual memory |
US9612833B2 (en) * | 2014-02-28 | 2017-04-04 | Intel Corporation | Handling compressed data over distributed cache fabric |
TWI505091B (zh) * | 2014-09-16 | 2015-10-21 | Storart Technology Co Ltd | 用於非揮發性記憶體的自適應壓縮資料儲存方法及使用該方法的系統 |
CN104536919B (zh) * | 2014-12-11 | 2018-02-13 | 浪潮(北京)电子信息产业有限公司 | 一种克隆系统中避免io冲突的方法和装置 |
US9665285B2 (en) * | 2015-03-11 | 2017-05-30 | Kabushiki Kaisha Toshiba | Disk device and method for storing data and associated headers |
CN105446659B (zh) * | 2015-11-11 | 2019-12-24 | 暨南大学 | 一种通过压缩磁盘板载缓存以提高磁盘性能的方法 |
TWI587211B (zh) * | 2016-03-28 | 2017-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置的映像檔製作方法 |
CN114168065A (zh) * | 2020-09-10 | 2022-03-11 | 荣耀终端有限公司 | 调整内存配置参数的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5864859A (en) * | 1996-02-20 | 1999-01-26 | International Business Machines Corporation | System and method of compression and decompression using store addressing |
US6349375B1 (en) * | 1994-02-02 | 2002-02-19 | Compaq Computer Corporation | Compression of data in read only storage and embedded systems |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481701A (en) * | 1991-09-13 | 1996-01-02 | Salient Software, Inc. | Method and apparatus for performing direct read of compressed data file |
US5649151A (en) * | 1992-06-29 | 1997-07-15 | Apple Computer, Inc. | Efficient method and apparatus for access and storage of compressed data |
US5305295A (en) * | 1992-06-29 | 1994-04-19 | Apple Computer, Inc. | Efficient method and apparatus for access and storage of compressed data |
US5812817A (en) * | 1994-10-17 | 1998-09-22 | International Business Machines Corporation | Compression architecture for system memory application |
US5630092A (en) * | 1994-10-20 | 1997-05-13 | International Business Machines | System and method for transferring compressed and uncompressed data between storage systems |
US6439375B1 (en) * | 1994-10-24 | 2002-08-27 | Raymond Keith Foster | Reciprocating floor conveyor for conveying palletized loads or the like |
US6170047B1 (en) * | 1994-11-16 | 2001-01-02 | Interactive Silicon, Inc. | System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities |
US6002411A (en) * | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
US5742773A (en) * | 1996-04-18 | 1998-04-21 | Microsoft Corporation | Method and system for audio compression negotiation for multiple channels |
US5761536A (en) * | 1996-08-21 | 1998-06-02 | International Business Machines Corporation | System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis |
US6067199A (en) * | 1997-06-30 | 2000-05-23 | Emc Corporation | Method and apparatus for increasing disc drive performance |
US5999936A (en) * | 1997-06-02 | 1999-12-07 | Compaq Computer Corporation | Method and apparatus for compressing and decompressing sequential records in a computer system |
JPH1166824A (ja) * | 1997-08-15 | 1999-03-09 | Sony Corp | オーディオサーバシステム |
US6718457B2 (en) * | 1998-12-03 | 2004-04-06 | Sun Microsystems, Inc. | Multiple-thread processor for threaded software applications |
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 |
US20010054131A1 (en) * | 1999-01-29 | 2001-12-20 | Alvarez Manuel J. | System and method for perfoming scalable embedded parallel data compression |
US6353871B1 (en) * | 1999-02-22 | 2002-03-05 | International Business Machines Corporation | Directory cache for indirectly addressed main memory |
US6401181B1 (en) * | 2000-02-29 | 2002-06-04 | International Business Machines Corporation | Dynamic allocation of physical memory space |
US7089391B2 (en) * | 2000-04-14 | 2006-08-08 | Quickshift, Inc. | Managing a codec engine for memory compression/decompression operations using a data movement engine |
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 |
US6874039B2 (en) * | 2000-09-08 | 2005-03-29 | Intel Corporation | Method and apparatus for distributed direct memory access for systems on chip |
US7047382B2 (en) * | 2000-11-29 | 2006-05-16 | Quickshift, Inc. | System and method for managing compression and decompression and decompression of system memory in a computer system |
US6539460B2 (en) * | 2001-01-19 | 2003-03-25 | International Business Machines Corporation | System and method for storing data sectors with header and trailer information in a disk cache supporting memory compression |
US6883037B2 (en) * | 2001-03-21 | 2005-04-19 | Microsoft Corporation | Fast data decoder that operates with reduced output buffer bounds checking |
US7032158B2 (en) * | 2001-04-23 | 2006-04-18 | Quickshift, Inc. | System and method for recognizing and configuring devices embedded on memory modules |
US6772315B1 (en) * | 2001-05-24 | 2004-08-03 | Rambus Inc | Translation lookaside buffer extended to provide physical and main-memory addresses |
US6857045B2 (en) * | 2002-01-25 | 2005-02-15 | International Business Machines Corporation | Method and system for updating data in a compressed read cache |
US7958289B2 (en) | 2002-08-08 | 2011-06-07 | International Business Machines Corporation | Method and system for storing memory compressed data onto memory compressed disks |
-
2002
- 2002-08-08 US US10/214,171 patent/US7958289B2/en not_active Expired - Fee Related
-
2003
- 2003-07-30 TW TW092120827A patent/TWI265490B/zh not_active IP Right Cessation
- 2003-08-07 CN CNB031274528A patent/CN1331058C/zh not_active Expired - Lifetime
-
2009
- 2009-08-20 US US12/544,513 patent/US7979602B2/en not_active Expired - Fee Related
-
2011
- 2011-03-31 US US13/077,667 patent/US8250265B2/en not_active Expired - Fee Related
- 2011-04-08 US US13/083,400 patent/US8161206B2/en not_active Expired - Fee Related
-
2012
- 2012-01-30 US US13/361,845 patent/US8230139B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6349375B1 (en) * | 1994-02-02 | 2002-02-19 | Compaq Computer Corporation | Compression of data in read only storage and embedded systems |
US5864859A (en) * | 1996-02-20 | 1999-01-26 | International Business Machines Corporation | System and method of compression and decompression using store addressing |
Also Published As
Publication number | Publication date |
---|---|
US8230139B2 (en) | 2012-07-24 |
TW200419549A (en) | 2004-10-01 |
US20120131273A1 (en) | 2012-05-24 |
US8161206B2 (en) | 2012-04-17 |
US8250265B2 (en) | 2012-08-21 |
TWI265490B (en) | 2006-11-01 |
US20040030813A1 (en) | 2004-02-12 |
US20110185132A1 (en) | 2011-07-28 |
US7958289B2 (en) | 2011-06-07 |
CN1484151A (zh) | 2004-03-24 |
US7979602B2 (en) | 2011-07-12 |
US20110179197A1 (en) | 2011-07-21 |
US20090313398A1 (en) | 2009-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1331058C (zh) | 将存储器压缩数据存储到存储器压缩磁盘上的方法 | |
US5237675A (en) | Apparatus and method for efficient organization of compressed data on a hard disk utilizing an estimated compression factor | |
US6532121B1 (en) | Compression algorithm with embedded meta-data for partial record operation augmented with expansion joints | |
US8677039B2 (en) | Systems and methods for compression of data for block mode access storage | |
US7970965B2 (en) | Method and system for compression of data for block mode access storage | |
US5247638A (en) | Apparatus for compressing data in a dynamically mapped virtual data storage subsystem | |
US7844643B2 (en) | Storage management system with integrated continuous data protection and remote copy | |
WO2012056491A1 (en) | Storage apparatus and data control method | |
US5644791A (en) | System for storing pointers to initial sectors of variable length n units and storing second pointers within the initial sector of the n unit | |
US5999936A (en) | Method and apparatus for compressing and decompressing sequential records in a computer system | |
US20060190643A1 (en) | Method and system for compression of data for block mode access storage | |
US11455122B2 (en) | Storage system and data compression method for storage system | |
US9378214B2 (en) | Method and system for hash key memory reduction | |
US20040250022A1 (en) | Resynchronization of count key data with its corresponding meta data | |
US6490596B1 (en) | Method of transmitting streamlined data updates by selectively omitting unchanged data parts | |
CN111858490B (zh) | 一种基于dbDedup的分布式数据库存储通信压缩方法 | |
WO1991019255A1 (en) | Apparatus and method for efficient organization of compressed data on a hard disk |
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20070808 |
|
CX01 | Expiry of patent term |