CN113366463A - 用于消除计算机存储器中的副本和值冗余的系统、方法和设备 - Google Patents
用于消除计算机存储器中的副本和值冗余的系统、方法和设备 Download PDFInfo
- Publication number
- CN113366463A CN113366463A CN202080008711.7A CN202080008711A CN113366463A CN 113366463 A CN113366463 A CN 113366463A CN 202080008711 A CN202080008711 A CN 202080008711A CN 113366463 A CN113366463 A CN 113366463A
- Authority
- CN
- China
- Prior art keywords
- memory
- unique
- metadata
- block
- ptr
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 108
- 230000015654 memory Effects 0.000 claims abstract description 611
- 238000007906 compression Methods 0.000 claims abstract description 114
- 230000006835 compression Effects 0.000 claims abstract description 114
- 230000008569 process Effects 0.000 claims description 22
- 230000008859 change Effects 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 7
- 230000006837 decompression Effects 0.000 claims description 5
- 230000001419 dependent effect Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000001737 promoting effect Effects 0.000 claims 2
- 238000013519 translation Methods 0.000 description 10
- 238000013144 data compression Methods 0.000 description 5
- 238000005265 energy consumption Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 235000019580 granularity Nutrition 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
Images
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/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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
- G06F3/064—Management of blocks
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
- H03M7/405—Tree adaptation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6029—Pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
- Peptides Or Proteins (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
计算机存储器压缩方法涉及关于副本存储器对象的出现以及独特存储器对象中数据值的值冗余来分析(1210)计算机存储器内容。通过消除副本存储器对象和经由利用每个其余独特存储器对象的数据值的数据值局部性对每个其余独特存储器对象压缩,来对计算机存储器内容进行编码(1220)。提供(1230)代表所编码的计算机存储器内容的存储器对象的元数据(500)。元数据反映了被消除的副本存储器对象、其余独特存储器对象以及用于压缩每个其余独特存储器对象的压缩类型。使用元数据(500)在所编码的计算机存储器内容中定位(1240)存储器对象。
Description
技术领域
该主题总体上涉及电子计算机中的存储器中的数据压缩的领域。
背景技术
数据压缩是一种通用技术,用以通过相较于不频繁的数据集合更有效地对频繁的数据集合进行编码,来较有效地存储和传输数据。由于一些原因,一般较有效地存储和传输数据是令人感兴趣的。在计算机存储器例如保留处理设备操作的数据和计算机指令的存储器中,例如在主存储器或缓存存储器中,更有效地例如K倍地存储所述数据是令人感兴趣的,因为它然后可以使所述存储器的大小潜在地减少K倍,使用潜在地减少K倍的通信容量在一个存储器与另一存储器之间传输数据,并使计算机系统内部或之间和/或存储器之间存储和传输所述数据的能量消耗潜在地减少K倍。可替代地,与没有数据压缩相比,人们可以在可用的计算机存储器中存储潜在地增加K倍的数据。这对于在不必增加更多的存储器的情况下实现计算机潜在地高K倍的性能——其可能是昂贵的或者由于资源限制可能只是不太理想——是令人感兴趣的。作为另一示例,智能手机、平板电脑、膝上/台式机或机顶盒的大小和重量可能受到限制,因为较大或较重的智能手机、平板电脑、膝上/台式机或机顶盒对终端用户的价值较低;因此潜在地降低了此类产品的市场价值。然而,较多的存储器容量或较高的存储器通信带宽可以潜在地增加产品的市场价值,因为较多的存储器容量或存储器通信带宽可以产生较高的性能,从而提高产品的效用。
总而言之,在包括孤立设备或互连设备的计算机化产品的总体格局中,数据压缩可以潜在地提高性能,降低能量消耗,增加存储器通信带宽或降低存储器所耗用的成本和面积。因此,数据压缩在除了这里提到的计算机化产品之外的广泛范围的计算机化产品中具有广泛的效用。
现有技术中的压缩存储器系统通常在存储器页面被创建时通过从磁盘读取它或通过存储器分配对它进行压缩。可以使用各种众所周知的方法通过软件例程或通过硬件加速器来完成压缩。当处理器从存储器请求数据时,数据通常必须首先被解压缩,然后再为请求的处理器服务。由于这样的请求可能在关键的存储器访问路径上结束,因此解压缩通常是硬件加速的,以对存储器访问时间施加较小的影响。
在一种称为去重(deduplication,删除重复、去副本、重复数据删除)的压缩方法中,其理念是识别相同的存储器对象。例如,让我们假设存储器包含相同页面的五个相同实例。那么,只需要保存其中的一个,而其余四个可以引用该唯一实例;因此,提供了五倍的压缩比。现有技术中已知的去重已被应用于一系列粒度的固定大小对象,诸如大小通常为约几千字节到几十千字节(KB)甚至更多的存储器页面,以及大小通常为几十字节例如64字节(64B)的存储器块。其他现有技术考虑了可变颗粒大小,诸如可变大小的存储文件。在任何情况下,去重的限制是,它仅建立在移除相同存储器对象出现的副本(duplication,重复)上。
在移除相同对象时,被移除的对象必须对与它相同的唯一对象建立引用。就指针而言,引用要指向存储器对象的唯一拷贝,并且这会耗用存储器空间。因此,去重会造成大量的压缩元数据开销。例如,让我们假设去重应用于1Terabyte=240字节的存储器中的64B(=26字节)的存储器块。那么,需要(40-6=)34比特的引用指针来指向被去重的存储器块的独特拷贝。
现有技术中已知的可替代性压缩方法利用了值冗余(就单字而言,例如32或64比特)。例如,比另一个存储器对象更常见的存储器对象将使用比不那么常见的存储器对象更少的比特来进行编码。作为示例,基于熵的压缩技术在现有技术中比比皆是,包括例如霍夫曼编码和算术编码。其他的压缩技术包括基值-增量即时(Base-Delta-Immediate)压缩,它利用了存储在数据对象例如存储器页面和存储器块中的数值在数值上相互接近,并对它们之间的差异进行密集编码。
重要地,移除副本的去重以及利用移除值冗余的值局部性的压缩技术,诸如基于熵的压缩和基值-增量即时压缩,在许多方面是互补的。考虑到例如基于页面的去重,其中存储了相同页面的单个拷贝,而从拷贝中提供引用指针来引用独特拷贝。然而,这样的去重方案并没有利用存在于更细粒度的值冗余,例如在存在于页面内的字层级(例如32或64比特实体)上的值冗余。通过将去重与减少值冗余的压缩方案相结合,可以消除副本,并通过对独特拷贝内的每个数据值基于其统计值性质进行编码,将其余独特拷贝存储得更密集。本文件意在公开一项发明,该发明提供了应用于计算机存储器的压缩技术系列的设备、系统和方法,以消除副本以及值冗余。
将去重与基于值局部性的压缩相结合,带来了许多技术挑战。第一挑战是如何找到一种编码,该编码通过移除副本以及使用基于值局部性的方法压缩其余独特拷贝中的项目,来提供在可压缩性方面的组合收益。使用去重和基于值局部性的压缩的组合方法,在压缩存储器中有效地定位存储器块,这将带来挑战,即保持较低的元数据量,并允许压缩和解压缩设备以施加较低的存储器延迟开销。因此,第二挑战是提出可以保持较低元数据量并施加较低存储器延迟开销的压缩和解压缩方法、设备和系统。在操作中,数据对象将响应于处理器写而改变。这就使得重复块和独特块的性质将发生变化;既涉及副本的数量,也涉及其余独特拷贝的值局部性的统计性质。第三挑战是提供可以根据这种动态效应来保持高压缩性的方法、设备和系统。所公开的发明意在应对所有这些和其他挑战。
发明内容
本发明的第一方面是一种计算机存储器压缩方法。该方法包括关于副本存储器对象的出现以及独特存储器对象中数据值的值冗余来分析计算机存储器内容。该方法还包括通过消除所述副本存储器对象和经由利用每个其余独特存储器对象的数据值的数据值局部性对每个其余独特存储器对象进行压缩,来对所述计算机存储器内容进行编码。该方法还包括提供代表所编码的计算机存储器内容的存储器对象的元数据。元数据反映了被消除的副本存储器对象、其余独特存储器对象以及用于压缩每个其余独特存储器对象的压缩类型。该方法还包括使用所述元数据在所编码的计算机存储器内容中定位存储器对象。
本发明的第二方面是一种计算机存储器压缩设备。该设备包括分析器单元,其被配置为关于副本存储器对象的出现以及独特存储器对象中数据值的值冗余来分析计算机存储器内容。该设备还包括编码器单元,其被配置为通过消除所述副本存储器对象和经由利用每个其余独特存储器对象的数据值的数据值局部性对每个其余独特存储器对象进行压缩,来对所述计算机存储器内容进行编码。编码器单元还被配置为提供代表所编码的计算机存储器内容的存储器对象的元数据。元数据反映了被消除的副本存储器对象、其余独特存储器对象以及用于压缩每个其余独特存储器对象的压缩类型。该设备还包括定位器单元,其被配置为使用所述元数据在所编码的计算机存储器内容中定位存储器对象。
所公开的实施方式的其他方面以及目标、特征和优点将从以下详细公开内容、所附从属权利要求以及附图中显现出来。
一般地,通过利用本文件所述的数据值局部性进行压缩,可以涉及基于熵的编码、增量(delta)编码、基于字典的编码或基于模式的编码,而没有限制。
一般地,权利要求中使用的所有术语都应根据其在技术领域的普通含义来解释,除非在本文另有明确限定。所有对“一/一个/该[元件、设备、部件、装置、步骤等]”的引用都应公开解释为指该元件、设备、部件、装置、步骤等的至少一个实例,除非另有明确说明。除非明确说明,否则本文所公开的任何方法的步骤不一定要按照所公开的确切顺序来执行。
附图说明
图1描述了计算机系统,其包括具有一个或更多个处理单元的微处理器芯片、示例性三层级缓存层次结构、与一个或更多个片外存储器连接的一个或更多个存储器控制器。
图2描述了被配置用于在存储器中压缩数据和指令的计算机系统,诸如图1中的计算机系统。
图3描述了应用去重和值冗余移除压缩方法之前和之后的示例性存储器页面布局。
图4描述了基于树的数据结构的示例性布局,用于保持对页面内独特块的追踪。
图5描述了使用去重和其他压缩方法的组合来压缩存储器页面的元数据结构以及其使用的示例。
图6描述了去重过程的流程图。
图7描述了值冗余移除压缩方法的流程图。
图8描述了示例性存储器在响应于独特存储器块的修改时的变化。
图9描述了示例性存储器在响应于被去重的存储器块的修改时的变化。
图10描述了地址转换单元,用于使用去重和值冗余删除压缩方法来确定存储器块的位置。
图11描述了解压缩器单元,用于使用去重和值冗余删除压缩来解压缩存储器块。
图12描述了计算机存储器压缩方法的一般流程图。
具体实施方式
本文件公开了使用消除计算机存储器中的副本和值冗余的一系列压缩方法来压缩计算机存储器中的数据的系统、方法和设备。
图1中描述了计算机系统100的示例性实施方式。该系统包括微处理器芯片110和表示为M1 151、M2 152至MK 153的一个或更多个存储器模块。微处理器芯片可以是分立的系统,也可以以任何可用技术集成在片上系统(SoC)上。微处理器110包括表示为P1 131、P2132至PN 133、有时被称为CPU或核心的一个或更多个处理单元及存储器层次结构。另一方面,存储器层次结构包括数个缓存层级,例如如图1中示例性地示出并表示为C1、C2和C3的三个层级。这些层级可以用相同或不同的存储器技术例如SRAM、DRAM或任何类型的非易失性技术包括例如相变存储器(PCM)来实施。在不同的实施方式中,缓存层级的数量可以变化,并且示例性实施方式100描述了三个层级,其中最后的缓存层级是C3 120。这些层级使用某种互连手段(例如总线或任何其他互连网络)连接。在示例性实施方式中,层级C1和C2对于表示为Pi的相应处理单元i(例如图1中的P1)是私有的且只能由其访问。对于本领域技术人员来说众所周知的是,替代性实施方式可以具有任何数量的私有缓存层级,或者作为替代,所有缓存层级都是共享的,如图1中的第三层级C3 120所例示的。关于将数据包含在缓存层次结构中,任何实施方式都是可能的,并且可以被本领域技术人员所理解。例如,C1可以被包括在C2中,而相对于层级C3,C2可以不被包括在其中。本领域技术人员可以理解替代性实施方式。图1的计算机系统100包括表示为MCTRL1 141、MCTRL2 142到MCTRLL 143的一个或更多个存储器控制器。最后的缓存层级(图1中的C3)与存储器控制器连接,而存储器控制器又与一个或更多个存储器模块连接。存储器控制器可以被集成在微处理器芯片110上,或者也可以在微处理器芯片之外实施。最后,计算机系统运行一个或更多个任务。任务可以是能够在特定系统上运行的任何软件应用或其一部分。
以图1中的实施方式为例,计算机系统可能受到表示为M1 151至MK153的存储器的有限容量以及缓存存储器的有限容量的影响,无论哪一层级(例如图1中的C1、C2和C3)。有限的缓存容量可以将自身表现为必须在存储器层次结构中的下一层级处被服务的较高比例的存储器请求,从而造成性能损失或较高的能量耗用。为了缓解这个问题,我们可以考虑增加缓存容量,从而降低需要通过存储器层次结构的下一层级来服务的请求的数量。增加微处理器芯片上的缓存层级的容量将造成一些问题。首先,缓存访问请求时间可能增加,使得性能损失。第二,对较大缓存的访问请求所耗用的能量可以潜在地较高。第三,在微处理器芯片上使用较多的硅或等效材料来实现较大的缓存层级,这可能不得不用较少的处理能力来交换。因此,期望在没有上述问题的情况下实现较多的缓存容量。有限的存储器容量具有类似的问题,并且它可以将自身表现为将必须在存储器层次结构的下一层级处被服务的较多的存储器请求,该下一层级通常是作为存储器层次结构的存储层级来实现的。这种存储层级的访问较慢,并且可能会造成性能上和能量消耗上的巨大损失。增加存储器容量可以缓解这些缺点。然而,较多的存储器容量会增加计算机系统的成本,无论是在部件层级处还是在能量消耗方面。此外,较多的存储器会耗用较多的空间,这可能会限制计算机系统的效用,特别是在外形因素受限的产品中,该产品包括例如移动计算机(例如平板电脑、智能手机、可穿戴设备和连接到互联网的小型计算机化设备)。
本发明公开内容考虑了数个实施方式,这些实施方式在压缩被应用于上述示例性存储器层次结构的哪一层级处有所不同。第一实施方式考虑了在主存储器处被应用的所发明的压缩方法。然而,其他实施方式可以被本领域技术人员所理解。意在也设想了这种实施方式,但并未明确涵盖在本专利公开内容中。
对于第一公开实施方式,我们考虑到主存储器容量有限的问题,图1中的示例性系统可以被配置为允许数据和指令在主存储器中被压缩。图2示出了这种计算机系统200的示例。所增加的是微处理器芯片210上的计算机存储器压缩设备205。计算机存储器压缩设备205包括四个功能块。这些块包括定位器(地址转换)单元211、编码器(压缩器)单元212、解压缩器单元213和分析器单元214。
如下文将详细解释的,分析器单元214被配置为关于副本存储器对象的出现以及独特存储器对象中数据值的值冗余来分析计算机存储器内容。在这方面,数据值将通常比存储器对象的粒度更细,并且存储器对象将通常比计算机存储器内容的粒度更细。计算机存储器内容通常可以是计算机存储器的页面,存储器对象通常可以是存储器块,以及每个存储器块通常可以包括多个数据值,诸如存储器字。
编码器单元212被配置为通过消除副本存储器对象和经由利用每个其余独特存储器对象的数据值的数据值局部性对其余独特存储器对象进行压缩,来对计算机存储器内容进行编码。编码器单元212还被配置为提供代表所编码的计算机存储器内容的存储器对象的元数据。元数据反映了被消除的副本存储器对象、其余独特存储器对象以及用于压缩每个其余独特存储器对象的压缩类型。例如,这种元数据的示例见于图5中的500处。定位器单元211被配置为使用元数据在所编码的计算机存储器内容中定位存储器对象。
图12中示出了对应的通用计算机存储器压缩方法1200。该方法涉及关于副本存储器对象的出现以及独特存储器对象中数据值的值冗余来分析1210计算机存储器内容。该方法还涉及通过消除副本存储器对象和经由利用每个其余独特存储器对象的数据值的数据值局部性对每个其余独特存储器对象进行压缩,来对计算机存储器内容进行编码1220,该方法还涉及提供1230代表所编码的计算机存储器内容的存储器对象的元数据500,该方法还涉及使用元数据500在所编码的计算机存储器内容中定位1240存储器对象。计算机存储器压缩方法1200一般可以包括功能步骤,该功能步骤与由如整个本文件所述的计算机存储器压缩设备205的任何或全部结构特征和实施方式所执行的功能对应。
计算机存储器压缩设备205在一侧上连接至存储器控制器,并且在另一侧上连接至最后层级的缓存C3。地址转换单元211的目的是将常规的物理地址PA转换为压缩地址CA,以在压缩存储器中定位存储器块。本领域技术人员意识到,这种地址转换是必要的,因为在压缩存储器中,常规的存储器页面(例如4KB)可以被压缩到任何大小。编码器(压缩器)单元212的目的是压缩已被修改并从最后层级的缓存中逐出的存储器块。为了使对存储器系统的性能产生的影响可忽略,压缩必须是很快并且通常通过专门的压缩器单元来加速。同样地,当存储器块被处理器请求,并且在任何缓存层级例如示例性实施方式中的C1、C2和C3中都不可用时,必须从存储器请求存储器块。地址转换单元211将定位该块,但在它被安装到缓存层次结构中例如在C1中之前,它必须被解压缩。解压缩器单元213的目的是加速该过程,以便使对存储器系统的性能产生的影响可以忽略不计。
本领域技术人员可以意识到,压缩器和解压缩器单元的功能取决于正在使用的压缩算法的类型。在一个实施方式中,可以使用增量编码(诸如基值-增量即时编码),其中存储的是值和基值之间的差异,而不是值本身。在另一实施方式中,可以使用基于熵的编码(诸如霍夫曼编码),其中比其他值更频繁的值使用更密集的编码。在第三实施方式中,可以使用去重,其中只有独特块被存储在存储器中。本发明公开内容意在涵盖以移除值冗余为目的的所有压缩算法。
鉴于根据图2的实施方式,本文件的其余部分遵循关于下述使用基于去重和值冗余移除压缩的组合压缩方法来提供设备、方法和系统的结构:如何对计算机存储器内容(例如存储器页面)进行编码;如何在压缩存储器中定位存储器对象(例如存储器块);如何压缩和解压缩单独的存储器对象(例如存储器块);以及最后地,如何重新压缩计算机存储器内容(例如存储器页面)以移除额外的副本和值冗余。
存储器页面的数据分析和编码
我们在图3中提供了示例性概述,即如何使用去重结合基于熵的压缩来压缩存储器页面。然而请注意,其他的值冗余移除压缩方法诸如增量编码(例如,基值-增量即时编码)是可能的。页面的示例性布局300包括N个块,其如图3左边的(A)处所示,编号为1、2、...、N,并出现在常规未压缩计算机存储器中的连续存储器块地址处,其中310代表第一存储器块,以及320代表最后的存储器块。去重旨在移除重复块,使得只有独特块属于存储器页面。如图3中间的(B)处所示,在页面中存储器块的示例性布局300中,由340和350代表的存储器块是副本。替代的是将重复的数据存储在存储器中,并且如后面将详细解释的,它们只存储对独特块的引用,例如指针。存储器块350使用标记为370的指针来引用存储器块2(330)。同样地,存储器块340使用标记为360的指针来引用存储器块1。因此,在去重过程之后,存储器页面只包含具有不同内容、被称为独特存储器块的存储器块。
现有技术还包括:对经常使用的数据比不经常使用的数据进行更密集编码的压缩方法,诸如霍夫曼编码;或者利用数值相似的压缩方法,诸如增量编码(例如基值-增量即时编码)。这些压缩方法被称为值冗余移除压缩方法。为了使用值冗余移除压缩方法来压缩页面,人们通常在某种粒度上,例如在字层级(例如64比特)上,分析所有单独的数据项。值频率分布将捕捉页面中不同值的相对出现情况。然而,在去重之前,当微不足道地应用于存储器页面的原始内容时,副本的存在可以极大地改变值分布。出于这个原因,所提出的实施方式首先应用去重以移除副本,然后再确定其余独特存储器块的值分布。图3中(C)处所看到的最右边的示例性布局示出了在应用值冗余移除压缩后的结果。表示为1(380)和2(390)的独特存储器块的大小现在可以较小,因为值冗余移除压缩可以设法对较频繁的数据项比不太频繁的数据项更密集地编码。
现在我们把注意力移到如何实现图3中例举的组合方法上。这将结合图4至图7来解释。如前面几段所解释的,为了实现与去重相结合的值冗余移除压缩的全部潜力,重要的是首先进行去重。在一个实施方式中,去重可以通过依次分析单个页面中的所有存储器块来实现,不排除考虑多个页面中的所有存储器块的可能性,其目的是确定它是否是独特。为此,待分析的第一存储器块将总是被归类为独特。将注意力转向图4,示例性的树数据结构400记录了所有的独特块。在插入块之前,创建从现有技术中已知的块签名。签名是块的值的密集表示,其特性是如果两个存储器块的签名不同,它们就不相同。然而,相反可能不成立。
为了确定存储器块是否独特并且必须插入到基于树的数据结构中,首先将其签名与树数据结构400中顶部节点410的签名进行比较。如果是相同的,则进行第二测试以比较两个存储器块的内容。如果存储器块确实是相同的,则已检测到副本块。该相同的操作是在基于树数据结构的每个节点处进行的。然而,如果签名是相同的,但两个块是不相同的,则必须插入具有相同签名的新块。这可能涉及到以下额外的测试来处理假阳性。当创建的签名S与树数据结构400中所代表的签名匹配650时:
·确定所述单独的存储器对象是否与所述匹配签名所代表的所述独特存储器块相同;以及
·如果所述单独的存储器对象和所述匹配签名所代表的独特存储器块不相同:
在树数据结构400中插入节点;
在插入的节点中输入创建的签名S;以及
为所述单独的存储器对象生成元数据500,该元数据具有:表明它是独特存储器对象的信息510;以及对所述单独的存储器对象的独特存储器对象引用530、U_PTR。
另一方面,在存在签名不匹配时,如果签名小于顶部节点410的签名,则根据460处的测试在树的左侧分支进行搜索。如果签名大于顶部节点的签名,则根据测试(框470)在树的右侧分支进行搜索。因此,所有节点410、420、430、440和450是按降序(左分支)和升序(右分支)组织的,以使搜索时间对数化而非线性的。由于在这个过程中副本将被移除,存储器块将不会驻留在与常规未压缩页面相同的地址处。由于这个原因,块的新位置将被记录在基于树的数据结构中,如在每个节点中通过“块位置-BL”描述的。
去重过程的最终结果是,所有重复的存储器块都被消除。由于这个原因,以及如在图3中所解释的,存储器块在去重页面中的位置可能不与在原本未去重的页面中的位置相同。由于这个原因,为了帮助如何在压缩存储器中定位存储器块,后面将还阐述元数据必须在去重过程中产生。
图5左边的(A)处,示出了在该过程中为每个存储器块生成的示例性元数据500。元数据500包括四个部分:类型(510)、块编码-ENC(520)、U_PTR(530)和D_PTR(540)。类型描述了块是独特的还是副本。表示为ENC的块编码表示了应用于存储器块内容的压缩算法的类型,例如,霍夫曼或算术编码或其他。如果存储器块是独特的,就需要指针来定位它。这由U_PTR(530)代表。另一方面,如果块是副本,则需要指向独特拷贝的指针。与独特拷贝一样,U_PTR(530)指向压缩存储器中的独特拷贝。
图5最右边部分的(B)处描述了页面中三个选定的存储器块的示例性布局,其中存储器块570是独特的,以及存储器块580和590是存储器块570的副本。这里,副本的U_PTR指向独特存储器块570。然而,在操作过程中,可能会发生独特块被修改的情况。然后,根据框580和590,它可能不包含与重复的块相同的内容。由于这个原因,需要从独特存储器块的角度来追踪副本。为了这个目的,提供了表示为D_PTR的指针。它们建立了将所有重复存储器块与对应的独特存储器块链接在一起的链接数据结构。在本示例中,独特存储器块570的D_PTR(550)指向重复存储器块580。重复存储器块盒580的D_PTR指向其他重复存储器块590。
因此,综上所述,对于经编码的计算机存储器内容的每个存储器对象,元数据500有利地包括:
·信息510,其表明存储器对象是被消除的副本存储器对象或其余独特存储器对象;
·当存储器对象是独特存储器对象时,表明所使用的压缩类型的信息520和对该独特存储器对象的独特存储器对象引用530、U_PTR;以及·当存储器对象是副本存储器对象时,对独特存储器对象的独特存储器对象引用530、U_PTR,其非压缩内容与副本存储器对象相同。
有利地,对于作为独特存储器对象的每个存储器对象,元数据500还包括对被消除的副本存储器对象的副本存储器对象引用540、D_PTR,其非压缩内容与独特存储器对象相同。
现在让我们通过分析一页面内(其他粒度诸如多个页面也适用)的所有存储器块来建立存储器块被去重的整个过程。该过程在图6的流程图中被描述。如关于图4已经提到的,对存储器块进行去重的过程600使用基于树的数据结构400,该数据结构将最终包含所有独特存储器块。过程600将以顺序的方式分析页面的所有存储器块。第一决策步骤620检查页面的所有存储器块是否已经被访问。如果没有,则考虑下一存储器块。如关于图4已解释的,该块的签名是根据现有技术中已知的一些方法创建的,并且只要没有检测到匹配,就将该签名与树中的所有节点进行比较。最后,存在两种结果。如果该块是独特的,如在决策步骤640中测试的,其将在660处被插入。然后,存储器块位置和页面内的存储器块编号一起被记录。如果该块不是独特的,其在650处被去重,并且根据图5(见530),已经记录在基于树的数据结构中的独特块的块位置的指针将被分配给元数据的U_PTR指针。无论结果如何,下一动作是分析该页面的下一存储器块,使我们回到决策步骤620。
根据图4至图6的描述将理解的是,计算机存储器压缩设备205的分析器单元214和编码器单元212因此被配置为通过以下方式来处理600计算机存储器内容中的每个单独的存储器对象:
·创建签名S,该签名是存储器对象的数据值的密集表示;
·遍历树数据结构400,以将所创建的签名S与树数据结构400中已代表的签名进行比较;
·如果所创建的签名S与树数据结构400中代表的任何签名不匹配660:
在树数据结构400中插入节点;
在所插入的节点中输入所创建的签名S;以及
为所述单独的存储器对象生成元数据500,该元数据具有:表明它是独特存储器对象的信息510;以及对该单独的存储器对象的独特存储器对象引用530、U_PTR;以及
·如果所创建的签名S与树数据结构400中代表的签名相匹配650:
为所述单独的存储器对象生成元数据500,该元数据具有:表明它是副本存储器对象的信息510;以及对由树数据结构400中的匹配签名所代表的独特存储器块的独特存储器对象引用530、U_PTR;以及
更新由树数据结构400中的匹配签名所代表的独特存储器块的元数据500,以引入对所述单独的存储器对象的副本存储器对象引用540、D_PTR。
如已经指出的,在旨在利用单个数据项的值局部性的任何压缩方法——例如在字层级处——之前,应用去重是很重要的,因为副本将不会正确代表值频率分布。为此,需要一过程来建立独特块的值频率分布。图7中描述了这样的过程700。整个过程700旨在分析被记录在图4的基于树的数据结构400中的所有独特存储器块。过程700从步骤710开始。只要所有的独特存储器块没有被访问(步骤720),过程700就记录每个被访问的独特块的值频率。这可以通过在步骤730记录哈希表中每个单独数值的频率来完成。最后,可以建立所有独特存储器块的值频率,并可以在步骤740中建立基于任何基于值局部性的压缩方法诸如霍夫曼或算术编码或其他编码的编码。
因此,计算机存储器压缩设备205的分析器单元214和编码器单元212可以被配置为,当计算机存储器内容中的所有存储器对象都已被处理600时:
·遍历树数据结构400,以为由树数据结构400的节点所代表的独特存储器对象的数据值生成值-频率表;以及
·通过基于熵的压缩方案,使用所生成的值频率表来压缩每个独特存储器对象。
在一个这样的实施方式中,分析器单元可以实施哈希表来记录每个值的频率以用于之后的分析,也许使用软件例程,以建立使用例如霍夫曼编码或一些其他基于熵的编码技术的编码。
在可替代的实施方式中,使用增量编码(例如基值-增量即时编码),在移除副本后余留的值可以用来选择一个或更多个基值。在一种方法中,在副本已经被移除后,可以使用聚类技术来分析哪个基值与页面中的独特拷贝中的所有值最接近。
因此,可替代地,计算机存储器压缩设备205的分析器单元214和编码器单元212可以被配置为,当计算机存储器内容中的所有存储器对象都已被处理600时:
·遍历树数据结构400,以为树数据结构400的节点所代表的独特存储器对象的数据值生成值频率表;以及
·通过基于熵的压缩方案,使用所生成的值频率表来压缩每个独特存储器对象。
在压缩存储器中定位存储器块
我们现在把注意力转到如何使用组合的去重和值冗余移除压缩技术在压缩存储器中定位和解压缩存储器块。回到图2,记得定位器(地址转换)单元211的任务是将常规的物理地址转换为压缩地址空间中的地址。图10示出了图2的定位器(地址转换)单元211的详细布局1000。它包括一些页面条目,其中每个条目1010包括一些字段:物理地址(PA)1011和压缩地址(CA)1012,它们分别对应于页面的物理地址和压缩地址。如图5中的1021至1023处所见,每个页面条目都与每个块的元数据MD 1...MD N相关联。关于元数据的细节,请参考图5的最左边部分(A),如前所述。如图5所示,无论存储器块是独特的还是被去重的,U_PTR都充当与压缩地址CA相关的块的位置的偏移。加法器1030通过建立U_PTR和压缩地址CA1012的总和来形成块地址1040。
当图2中的处理器(表示为P1到PN)之一发出不能被任何层级的缓存(C1、C2或C3)满足的读请求时,它将被图2/10中的定位器(地址转换)单元211/1000处理,并且物理地址PA将根据上面解释的过程使用与PA相关联的压缩地址CA以及请求块的元数据来进行转换。然而,如果写请求不能被任何层级的缓存所满足,该写可以影响哪些块是独特的以及哪些块是被去重的。考虑图8中最左边部分的(A)处的场景。这里,独特块由830代表。由810和820代表的两个被去重的块具有相同的内容,并且它们的U_PTR指向独特块830。被去重的存储器块810、820通过让独特块的D_PTR指向存储器块820而该相同块的D_PTR指向存储器块810来链接到独特块830。
现在假设写请求被指定到独特存储器块830,并让我们把注意力转向图8最右边的(B)处的场景。由于存在独特存储器块830的副本,所以可以期望的是保留该存储器块。这是使用专用的空闲存储器区域来完成的,以复制独特存储器块830的旧内容,该空闲存储器区域在图8中由840代表,可能但不一定在页面内。该空闲存储器区域的当前起始地址805是由表示为F_PTR的引用指针,例如专用指针,来指向的。独特存储器块830的旧内容被复制到空闲区域840,如在870处看到的,并且被去重的存储器块810、820的U_PTR现在指向旧的独特存储器块,现在位于870处。另外地,在870处,D_PTR被改变以将被去重的存储器块810、820链接至旧的独特存储器块。可替代地,只有块870的D_PTR被更新为指向块820,而D_PTR的其余部分仍如图8最左边的部分(A)所见——即只有链接列表的头部被更新。位于原始位置处的独特存储器块,即830,现在可以根据写请求用新内容进行更新。F_PTR也被更新以反映空闲存储器区域的起始地址的改变,如880处所示。
处理以图8中的被指定到独特存储器块830的写请求的可替代方式如下。然而,请注意的是,图8的详细内容并不反映以下描述。通过使用独特存储器块830的签名S,在树数据结构400(参照图4)中,被去重的存储器块820被提升为独特的。根据写请求,独特存储器块830的更新内容被写到专用的空闲存储器区域840。830的U_PTR被更新为指向新块在空闲存储器区域中的位置,830的D_PTR被删除或者至少被更新为不指向任何地方,因为830块是没有检测到副本的独特块。F_PTR被更新以反映写后的新起始地址。
现在让我们考虑写请求被指定到被去重的数据块的场景,并让我们把注意力转向图9的最左边的场景。在这里,存在两个被去重的存储器块920和930,其内容与独特存储器块910相同,并且U_PTR和D_PTR被设置为反映这种情况,如在前面的段落中解释的。现在,假设写请求被指定到最左边场景的被去重的块920。由于被去重的块的内容现在将改变,其内容将不与独特存储器块910相同。替代地,更新的被去重的块现在将被放置在980处的空闲区域中,并被表示为D_U。块920的U_PTR现在被改变为指向新的独特块980,并且该块的D_PTR指向被去重的块920。另外地,将先前的被去重的块与独特块910链接的D_PTR现在被改变为指向另一被去重的块930,并且该块的930U_PTR指向独特块910。
请注意的是,在图8和图9的场景中,写操作将创建新的块内容,这些内容可能已经存在,也可能不存在。在所描述的过程中,没有试图分析新块是否与其他已经存在的块相同。因此,它们不需要被插入到对独特块保持追踪的树结构中。然而,在之后的分析阶段,我们可以重新审视所有块的内容,包括新创建的块,以找到用于去重的更多机会。
存储器块的压缩、解压缩和重新压缩
图5的部分元数据包含了用于编码(520处的ENC)的压缩算法。在块被从存储器中检索出来后,它将被解压缩。这在图11中通过解压缩器单元1110来例示,该解压缩器单元将压缩算法的类型(ENC)和从存储器中解压缩的块作为输入。压缩算法的类型可以是去重、基于熵的压缩、增量编码(例如基值-增量即时编码)或旨在移除值冗余的任何其他压缩方法。
在块被图2的示例性实施方式的最后层级的缓存C3替换的情况下,该块可能已经被修改,然后可能产生回写请求。那么在写回存储器之前必须对其进行压缩。图2的定位器(地址转换)单元211被询问。如果它具有用于所述块所属页面的元数据的条目,该元数据将对将被用于压缩该块的那种压缩算法进行编码。回到图8和图9的场景,可能发生的是,回写请求是针对独特块(图8)或被去重的块(图9)。在这些情况下,地址转换单元和相关逻辑将帮助改变元数据,以帮助减少在此过程中产生的副本的数量。
图8至图11的描述可以被总结和概括为以下。计算机存储器压缩设备205可以有利地被配置为:
·接收对具有物理存储器页面地址PA的存储器页面中的存储器块的读请求;
·从查找表1010中确定压缩存储器页面地址CA;
·检索存储器块的元数据1020;
·根据压缩存储器页面地址CA和所检索的元数据的独特存储器对象引用530、U_PTR,来计算压缩存储器块地址1040;
·在计算出的压缩存储器块地址1040处检索压缩存储器块1105;以及·通过解压缩器单元213,使用表明压缩类型并在存储器块的检索到的元数据中可用的信息520;1120、ENC,来对检索出的压缩存储器块1105进行解压缩1110。
如参照图8所解释的,计算机存储器压缩设备205可以有利地还被配置为:
·接收涉及原始存储器位置处的独特存储器块830的更新的回写请求;
·在更新前将独特存储器块830复制到计算机存储器内容的专用空闲存储器区域840中的新存储器位置870;
·更新链接到独特存储器块830的副本存储器块810、820的元数据,从而使其副本存储器对象引用540、D_PTR被重新定向到专用空闲存储器区域840中的新存储器位置870;以及
·根据回写请求,更新在其原始存储器位置830处的独特存储器块。
另外,计算机存储器压缩设备205可以有利地还被配置为:
·提供元数据,该元数据包括对专用空闲存储器区域840的起始地址805的引用F_PTR;以及
·在将独特存储器块830复制到专用空闲存储器区域840中的新存储器位置870之后,更新所述引用F_PTR以反映新起始地址880。
如作为图8的替代方案所解释的,计算机存储器压缩设备205可以有利地还被配置为:
·接收涉及原始存储器位置处的独特存储器块830的更新的回写请求;
·发现被去重的存储器块820是独特存储器块830的副本;
·通过使用独特存储器块830的签名S,将所发现的被去重的存储器块820提升为树数据结构400中的独特
·根据回写请求,将独特存储器块830的更新内容写到专用空闲存储器区域840中的新存储器位置870;以及
·更新独特存储器块830的元数据,从而使其独特存储器对象引用530、U_PTR被重新定向到专用空闲存储器区域840中的新存储器位置870,而其任何副本存储器对象引用540、D_PTR被移除。
另外,计算机存储器压缩设备205可以有利地还被配置为:
·提供元数据,该元数据包括对专用空闲存储器区域840的起始地址805的引用F_PTR;以及
·在根据回写请求将独特存储器块830的更新内容写到专用空闲存储器区域840中的新存储器位置870之后,更新所述引用F_PTR以反映新的起始地址880。
如参照图9所解释的,计算机存储器压缩设备205可以有利地还被配置为:
·接收涉及副本存储器块920的更新的回写请求;
·将更新的副本存储器块的内容作为新的独特存储器块980存储在专用空闲存储器区域940中;以及
·更新先前链接到副本存储器块920的独特存储器块910的元数据,以反映该独特存储器块910不再链接到副本存储器块920,同时维持该独特存储器块910和其他副本存储器块930之间的任何链接。
作为回写请求的结果,独特拷贝和去重拷贝将被更新,并将最终出现在用于避免不必要的重复发生的空闲区域中,如与图8和图9有关的解释的。然而,随着时间的推移,这可能会产生压缩比恶化的效果。在一个实施方式中,压缩比被不断监测。当它超过预先设定的阈值时,就会启动旨在关于副本和冗余值的出现来分析存储器页面以对该页面执行重新压缩的过程。这些过程可以与图6和图7中描述的过程相同。在另一实施方式中,页面被定期访问以评估是否需要重新压缩。当认为有必要时,图6和图7中描述的并在前面几段中解释过的过程被激活。
因此,计算机存储器压缩设备205可以有利地还被配置为:
·监测存储器页面的随时间变化的压缩比;以及
·如果压缩比不满足给定的标准,通过执行本文件中所述的计算机存储器压缩方法1200的功能,来对存储器页面执行重新压缩。
可替代地,或另外地,计算机存储器压缩设备205可以还被配置为通过执行本文件中所述的计算机存储器压缩方法1200的功能,来定期执行对存储器页面的重新压缩以提高压缩比。
尽管通过提及示例性实施方式,在本文件中已经描述了发明方面,但该发明方面并不限于所公开的实施方式,而是涵盖了本领域技术人员可以实现的替代性实施方式。
一个可替代的发明方面可以看作是一种用于分析计算机存储器数据的系统,其目的是通过消除数据项的副本和值冗余来压缩数据,该系统包括:消除副本和值冗余的装置;在移除副本和值冗余后定位数据项的装置;用于使用所述压缩方法压缩和解压缩数据项的装置;以及用于重新压缩数据项的装置。
另一可替代的发明方面可以看作是一种用于分析计算机存储器数据的方法,其目的是通过消除数据项的副本和值冗余来压缩数据,该方法包括以下步骤:消除副本和值冗余;在移除副本和值冗余后定位数据项;使用所述压缩方法压缩和解压缩数据项;以及重新压缩数据项。
又一可替代的发明方面可以看作是一种用于分析计算机存储器数据的设备,其目的是通过消除数据项的副本和值冗余来压缩数据,该设备被配置为:消除副本和值冗余;在消除副本和值冗余后定位数据项;使用所述压缩方法压缩和解压缩数据项;以及重新压缩数据项。
另一可替代的发明方面可以看作是所公开的发明包括用于数据分析的系统,该系统具有用于关于存储器块的副本的出现以及关于其余独特存储器块的值冗余的出现分析主存储器中的页面内容的装置。所公开的发明还包括具有用于移除存储器的副本和值冗余的装置的系统。此外,所公开的发明还包括以下系统,该系统具有:在已经移除副本和值冗余后定位单个存储器块的装置;以及用于使用其对存储器块进行压缩和解压缩的装置。最后,所公开的发明包括具有用以重新压缩存储器页面的装置的系统。
另外的替代性发明方面可以看作是:关于存储器块的副本的出现以及关于其余独特存储器块中数值的相对频率分析主存储器中的页面内容的方法;用于考虑到去重和基于值局部性的编码方法两者对存储器块进行编码的方法;以及用于在用于组合的去重和基于值局部性的压缩技术的系列的压缩存储器中定位单个存储器块的方法,以及用于使用其对存储器块进行压缩和解压缩的方法。最后,所公开的发明包括用于重新压缩存储器页面的方法。
其他可替代的发明方面可以看作是:数据分析器设备,其被配置为关于存储器块的副本的出现以及关于其余独特存储器块的值冗余来分析主存储器中的页面内容;数据编码器设备,其被配置为考虑到副本的移除以及其余独特块的值冗余对存储器块进行编码;存储器块定位器设备,其被配置为在用于组合的去重和基于值局部性的压缩技术的系列的压缩存储器中定位单个存储器块,以及被配置为使用其压缩和解压缩存储器块的设备;以及被配置为重新压缩存储器页面的设备。
Claims (37)
1.一种计算机存储器压缩方法(1200),包括:
关于副本存储器对象的出现以及独特存储器对象中数据值的值冗余,分析(1210)计算机存储器内容;
通过消除所述副本存储器对象和经由利用每个其余独特存储器对象的数据值的数据值局部性对每个其余独特存储器对象进行压缩,来对所述计算机存储器内容进行编码(1220);
提供(1230)代表所编码的计算机存储器内容的存储器对象的元数据(500),其中,所述元数据(500)反映了被消除的副本存储器对象、其余独特存储器对象以及用于压缩每个其余独特存储器对象的压缩类型;以及
使用所述元数据(500)在所编码的计算机存储器内容中定位(1240)存储器对象。
2.根据权利要求1所述的方法,其中,对于所编码的计算机存储器内容的每个存储器对象,所述元数据(500)包括:
信息(510),其表明所述存储器对象是被消除的副本存储器对象或其余独特存储器对象;
当所述存储器对象是独特存储器对象时,表明所使用的压缩类型的信息(520)和对所述独特存储器对象的独特存储器对象引用(530、U_PTR);以及
当所述存储器对象是副本存储器对象时,对独特存储器对象的独特存储器对象引用(530、U_PTR),其非压缩内容与所述副本存储器对象相同。
3.根据权利要求2所述的方法,其中,对于作为独特存储器对象的每个存储器对象,所述元数据(500)还包括对被消除的副本存储器对象的副本存储器对象引用(540、D_PTR),其非压缩内容与所述独特存储器对象相同。
4.根据权利要求3所述的方法,还包括通过以下方式处理(600)所述计算机存储器内容中的每个单独的存储器对象:
创建签名(S),所述签名是所述存储器对象的数据值的密集表示;
遍历树数据结构(400),以将所创建的签名(S)与所述树数据结构(400)中已代表的签名进行比较;
如果所创建的签名(S)与所述树数据结构(400)中代表的签名中的任何签名不匹配(660):
在所述树数据结构(400)中插入节点;
在所插入的节点中输入所创建的签名(S);以及
为所述单独的存储器对象生成所述元数据(500),所述元数据具有:表明它是独特存储器对象的信息(510);以及对所述单独的存储器对象的所述独特存储器对象引用(530、U_PTR);以及
如果所创建的签名(S)与所述树数据结构(400)中代表的签名相匹配(650):
为所述单独的存储器对象生成所述元数据(500),所述元数据具有:表明它是副本存储器对象的信息(510);以及对由所述树数据结构(400)中的匹配签名所代表的独特存储器块的所述独特存储器对象引用(530、U_PTR);以及
更新由所述树数据结构(400)中的匹配签名所代表的独特存储器块的所述元数据(500),以引入对所述单独的存储器对象的副本存储器对象引用(540、D_PTR)。
5.根据权利要求4所述的方法,还包括,当所创建的签名(S)与所述树数据结构(400)中代表的签名相匹配(650)时:
确定所述单独的存储器对象是否与所述匹配签名所代表的所述独特存储器块相同;以及
如果所述单独的存储器对象和所述匹配签名所代表的所述独特存储器块不相同:
在所述树数据结构(400)中插入节点;
在所插入的节点中输入所创建的签名(S);以及
为所述单独的存储器对象生成所述元数据(500),所述元数据具有:表明它是独特存储器对象的信息(510);以及对所述单独的存储器对象的所述独特存储器对象引用(530、U_PTR)。
6.根据权利要求4或5所述的方法,还包括,当所述计算机存储器内容中的所有存储器对象都已被处理(600)时:
遍历所述树数据结构(400),以为所述树数据结构(400)的节点所代表的独特存储器对象的数据值生成值频率表;以及
通过基于熵的压缩方案,使用所生成的值频率表来压缩每个独特存储器对象。
7.根据权利要求4或5所述的方法,还包括,当所述计算机存储器内容中的所有存储器对象都已被处理(600)时:
通过检查由所述树数据结构(400)的节点所代表的独特存储器对象的数据值来遍历所述树数据结构(400),以及确定一个或更多个基值;以及
通过基于增量编码的压缩方案,使用所确定的一个或更多个基值来压缩每个独特存储器对象。
8.根据任何前一权利要求所述的方法,其中,所述数据值的粒度比所述存储器对象的粒度细,以及所述存储器对象的粒度比所述计算机存储器内容的粒度细。
9.根据权利要求8所述的方法,其中,所述计算机存储器内容是计算机存储器的页面,所述存储器对象是存储器块,以及每个存储器块包括多个数据值。
10.根据在从属于权利要求2时的权利要求9所述的方法,还包括:
接收对具有物理存储器页面地址(PA)的存储器页面中的存储器块的读请求;
从查找表(1010)中确定压缩存储器页面地址(CA);
检索所述存储器块的元数据(1020);
根据所述压缩存储器页面地址(CA)和检索到的元数据的所述独特存储器对象引用(530、U_PTR),来计算压缩存储器块地址(1040);
在计算出的压缩存储器块地址(1040)处检索压缩存储器块(1105);以及
使用来自存储器块的检索到的元数据的表明压缩类型的信息(520;1120、ENC),来对检索出的压缩存储器块(1105)进行解压缩(1110)。
11.根据在从属于权利要求3时的权利要求9或10所述的方法,还包括:
接收涉及原始存储器位置处的独特存储器块(830)的更新的回写请求;
在更新前将所述独特存储器块(830)复制到所述计算机存储器内容的专用空闲存储器区域(840)中的新存储器位置(870);
更新链接到所述独特存储器块(830)的副本存储器块(810、820)的元数据,从而使其副本存储器对象引用(540、D_PTR)被重新定向到所述专用空闲存储器区域(840)中的新存储器位置(870);以及
根据所述回写请求,更新在其原始存储器位置(830)处的所述独特存储器块。
12.根据权利要求11所述的方法,还包括:
提供包括对所述专用空闲存储器区域(840)的起始地址(805)的引用(F_PTR)的元数据;以及
在将所述独特存储器块(830)复制到所述专用空闲存储器区域(840)中的所述新存储器位置(870)之后,更新所述引用(F_PTR)以反映新起始地址(880)。
13.根据权利要求4并根据权利要求9或10中任一项所述的方法,还包括:
接收涉及原始存储器位置处的独特存储器块(830)的更新的回写请求;
发现被去重的存储器块(820)是所述独特存储器块(830)的副本;
通过使用所述独特存储器块(830)的签名(S),将所发现的被去重的存储器块(820)提升为所述树数据结构(400)中的独特;
根据所述回写请求,将所述独特存储器块(830)的更新内容写到专用空闲存储器区域(840)中的新存储器位置(870);以及
更新所述独特存储器块(830)的元数据,从而使其独特存储器对象引用(530、U_PTR)被重新定向到所述专用空闲存储器区域(840)中的所述新存储器位置(870),而其任何副本存储器对象引用(540、D_PTR)被移除。
14.根据权利要求13所述的方法,还包括:
提供包括对所述专用空闲存储器区域(840)的起始地址(805)的引用(F_PTR)的元数据;以及
在根据所述回写请求将所述独特存储器块(830)的更新内容写到所述专用空闲存储器区域(840)中的所述新存储器位置(870)之后,更新所述引用(F_PTR)以反映新的起始地址(880)。
15.根据权利要求9至14中任一项所述的方法,还包括:
接收涉及副本存储器块(920)的更新的回写请求;
将更新的副本存储器块的内容作为新的独特存储器块(980)存储在专用空闲存储器区域(940)中;以及
更新先前链接到所述副本存储器块(920)的独特存储器块(910)的元数据,以反映所述独特存储器块(910)不再链接到所述副本存储器块(920),同时维持所述独特存储器块(910)和其他副本存储器块(930)之间的任何链接。
16.根据权利要求11至15中任一项所述的方法,还包括:
监测存储器页面的随时间变化的压缩比;以及
如果压缩比不满足给定的标准,则通过执行根据权利要求1至10中任一项所述的方法的功能,来对所述存储器页面执行重新压缩。
17.根据权利要求15至16中任一项所述的方法,还包括:
通过执行根据权利要求1至10中任一项所述的方法的功能,周期性地执行对存储器页面的重新压缩,以提高压缩比。
18.根据任何前一权利要求所述的方法,其中,通过利用数据值局部性进行的所述压缩涉及以下之一:
基于熵的编码;
增量编码;
基于字典的编码;以及
基于模式的编码。
19.一种计算机存储器压缩设备(205),包括:
分析器单元(214),其被配置为关于副本存储器对象的出现以及独特存储器对象中的数据值的值冗余来分析计算机存储器内容;
编码器单元(212),其被配置为通过消除所述副本存储器对象和经由利用每个其余独特存储器对象的数据值的数据值局部性对每个其余独特存储器对象进行压缩,来对所述计算机存储器内容进行编码,所述编码器单元(212)还被配置为提供代表所编码的计算机存储器内容的存储器对象的元数据(500),其中,所述元数据(500)反映了被消除的副本存储器对象、其余独特存储器对象以及用于压缩每个其余独特存储器对象的压缩类型;以及
定位器单元(211),其被配置为使用所述元数据(500)在所编码的计算机存储器内容中定位存储器对象。
20.根据权利要求19所述的设备,其中,对于所编码的计算机存储器内容的每个存储器对象,所述元数据(500)包括:
信息(510),其表明所述存储器对象是被消除的副本存储器对象或其余独特存储器对象;
当所述存储器对象是独特存储器对象时,表明所使用的压缩类型的信息(520)和对所述独特存储器对象的独特存储器对象引用(530、U_PTR);以及
当所述存储器对象是副本存储器对象时,对独特存储器对象的独特存储器对象引用(530、U_PTR),其非压缩内容与所述副本存储器对象相同。
21.根据权利要求20所述的设备,其中,对于作为独特存储器对象的每个存储器对象,所述元数据(500)还包括对被消除的副本存储器对象的副本存储器对象引用(540、D_PTR),其非压缩内容与所述独特存储器对象相同。
22.根据权利要求21所述的设备,其中,所述分析器单元(214)和所述编码器单元(212)被配置为通过以下方式处理(600)所述计算机存储器内容中的每个单独的存储器对象:
创建签名(S),所述签名是所述存储器对象的数据值的密集表示;
遍历树数据结构(400),以将所创建的签名(S)与所述树数据结构(400)中已代表的签名进行比较;
如果所创建的签名(S)与所述树数据结构(400)中代表的签名中的任何签名不匹配(660):
在所述树数据结构(400)中插入节点;
在所插入的节点中输入所创建的签名(S);以及
为所述单独的存储器对象生成所述元数据(500),所述元数据具有:表明它是独特存储器对象的信息(510);以及对所述单独的存储器对象的所述独特存储器对象引用(530、U_PTR);以及
如果所创建的签名(S)与所述树数据结构(400)中代表的签名相匹配(650):
为所述单独的存储器对象生成所述元数据(500),所述元数据具有:表明它是副本存储器对象的信息(510);以及对由所述树数据结构(400)中的匹配签名所代表的独特存储器块的所述独特存储器对象引用(530、U_PTR);以及
更新由所述树数据结构(400)中的匹配签名所代表的独特存储器块的所述元数据(500),以引入对所述单独的存储器对象的副本存储器对象引用(540、D_PTR)。
23.根据权利要求22所述的设备,其中,所述分析器单元(214)和所述编码器单元(212)还被配置为,当所创建的签名(S)与所述树数据结构(400)中代表的签名相匹配(650)时:
确定所述单独的存储器对象是否与所述匹配签名所代表的所述独特存储器块相同;以及
如果所述单独的存储器对象和所述匹配签名所代表的所述独特存储器块不相同:
在所述树数据结构(400)中插入节点;
在所插入的节点中输入所创建的签名(S);以及
为所述单独的存储器对象生成所述元数据(500),所述元数据具有:表明它是独特存储器对象的信息(510);以及对所述单独的存储器对象的所述独特存储器对象引用(530、U_PTR)。
24.根据权利要求23所述的设备,其中,所述分析器单元(214)和所述编码器单元(212)还被配置为,当所述计算机存储器内容中的所有存储器对象都已被处理(600)时:
遍历所述树数据结构(400),以为所述树数据结构(400)的节点所代表的独特存储器对象的数据值生成值频率表;以及
通过基于熵的压缩方案,使用所生成的值频率表来压缩每个独特存储器对象。
25.根据权利要求23所述的设备,其中,所述分析器单元(214)和所述编码器单元(212)还被配置为,当所述计算机存储器内容中的所有存储器对象都已被处理(600)时:
通过检查由所述树数据结构(400)的节点所代表的独特存储器对象的数据值来遍历所述树数据结构(400),以及确定一个或更多个基值;以及
通过基于增量编码的压缩方案,使用所确定的一个或更多个基值来压缩每个独特存储器对象。
26.根据权利要求19至25中任一项所述的设备,其中,所述数据值的粒度比所述存储器对象的粒度细,以及所述存储器对象的粒度比所述计算机存储器内容的粒度细。
27.根据权利要求26所述的设备,其中,所述计算机存储器内容是计算机存储器的页面,所述存储器对象是存储器块,以及每个存储器块包括多个数据值。
28.根据在从属于权利要求20时的权利要求27所述的设备,还包括解压缩单元(213;1110)并被配置为:
接收对具有物理存储器页面地址(PA)的存储器页面中的存储器块的读请求;
从查找表(1010)中确定压缩存储器页面地址(CA);
检索所述存储器块的元数据(1020);
根据所述压缩存储器页面地址(CA)和检索到的元数据的所述独特存储器对象引用(530、U_PTR),来计算压缩存储器块地址(1040);
在计算出的压缩存储器块地址(1040)处检索压缩存储器块(1105);以及
通过解压缩器单元(213),使用来自存储器块的检索到的元数据的表明压缩类型的信息(520;1120,ENC),来对检索出的压缩存储器块(1105)进行解压缩。
29.根据在从属于权利要求21时的权利要求27或28所述的设备,还被配置为:
接收涉及原始存储器位置处的独特存储器块(830)的更新的回写请求;
在更新前将所述独特存储器块(830)复制到所述计算机存储器内容的专用空闲存储器区域(840)中的新存储器位置(870);
更新链接到所述独特存储器块(830)的副本存储器块(810、820)的元数据,从而使其副本存储器对象引用(540、D_PTR)被重新定向到所述专用空闲存储器区域(840)中的新存储器位置(870);以及
根据所述回写请求,更新在其原始存储器位置(830)处的所述独特存储器块。
30.根据权利要求29所述的设备,还被配置为:
提供包括对所述专用空闲存储器区域(840)的起始地址(805)的引用(F_PTR)的元数据;以及
在将所述独特存储器块(830)复制到所述专用空闲存储器区域(840)中的所述新存储器位置(870)之后,更新所述引用(F_PTR)以反映新起始地址(880)。
31.根据权利要求22并根据权利要求27或28中任一项所述的设备,还被配置为:
接收涉及原始存储器位置处的独特存储器块(830)的更新的回写请求;
发现被去重的存储器块(820)是所述独特存储器块(830)的副本;
通过使用所述独特存储器块(830)的签名(S),将所发现的被去重的存储器块(820)提升为所述树数据结构(400)中的独特;
根据所述回写请求,将所述独特存储器块(830)的更新内容写到专用空闲存储器区域(840)中的新存储器位置(870);以及
更新所述独特存储器块(830)的元数据,从而使其独特存储器对象引用(530、U_PTR)被重新定向到所述专用空闲存储器区域(840)中的所述新存储器位置(870),而其任何副本存储器对象引用(540、D_PTR)被移除。
32.根据权利要求31所述的设备,还被配置为:
提供包括对所述专用空闲存储器区域(840)的起始地址(805)的引用(F_PTR)的元数据;以及
在根据所述回写请求将所述独特存储器块(830)的更新内容写到所述专用空闲存储器区域(840)中的所述新存储器位置(870)之后,更新所述引用(F_PTR)以反映新的起始地址(880)。
33.根据权利要求27至32中任一项所述的设备,还被配置为:
接收涉及副本存储器块(920)的更新的回写请求;
将更新的副本存储器块的内容作为新的独特存储器块(980)存储在专用空闲存储器区域(940)中;以及
更新先前链接到所述副本存储器块(920)的独特存储器块(910)的元数据,以反映所述独特存储器块(910)不再链接到所述副本存储器块(920),同时维持所述独特存储器块(910)和其他副本存储器块(930)之间的任何链接。
34.根据权利要求32或33中任一项所述的设备,还被配置为:
监测存储器页面的随时间变化的压缩比;以及
如果压缩比不满足给定的标准,则通过执行根据权利要求1至10中任一项所述的方法的功能,来对所述存储器页面执行重新压缩。
35.根据权利要求32至34中任一项所述的设备,还被配置为:
通过执行根据权利要求1至9中任一项所述的方法的功能,周期性地执行对存储器页面的重新压缩,以提高压缩比。
36.根据权利要求19至35中任一项所述的设备,其中,所述编码器单元(212)被配置为通过应用以下之一来利用数据值局部性进行压缩:
基于熵的压缩;以及
基值-增量即时压缩。
37.一种计算机系统(200),包括:
一个或更多个处理器(P1…PN);
一个或更多个计算机存储器(M1-Mk;C1-C3);以及
根据权利要求19至36中任一项所述的计算机存储器压缩设备(205)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1950027-1 | 2019-01-11 | ||
SE1950027A SE543186C2 (en) | 2019-01-11 | 2019-01-11 | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories |
PCT/SE2020/050013 WO2020145874A1 (en) | 2019-01-11 | 2020-01-09 | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113366463A true CN113366463A (zh) | 2021-09-07 |
Family
ID=71521321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080008711.7A Pending CN113366463A (zh) | 2019-01-11 | 2020-01-09 | 用于消除计算机存储器中的副本和值冗余的系统、方法和设备 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP3908938A4 (zh) |
KR (1) | KR20210113297A (zh) |
CN (1) | CN113366463A (zh) |
CA (1) | CA3124691A1 (zh) |
SE (1) | SE543186C2 (zh) |
WO (1) | WO2020145874A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE544557C2 (en) * | 2020-12-01 | 2022-07-12 | Zeropoint Tech Ab | Systems, methods and devices for exploiting value similarity in computer memories |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140310476A1 (en) * | 2013-04-12 | 2014-10-16 | Nec Laboratories America, Inc. | Bucketized multi-index low-memory data structures |
EP2905709A2 (en) * | 2014-02-11 | 2015-08-12 | Atlantis Computing, Inc. | Method and apparatus for replication of files and file systems using a deduplication key space |
US20170235640A1 (en) * | 2016-02-15 | 2017-08-17 | Electronics And Telecommunications Research Institute | Network traffic recording apparatus and method |
US20180121516A1 (en) * | 2016-11-02 | 2018-05-03 | Fujitsu Limited | Information processing device, computer-readable recording medium having stored therein information processing program, and information processing method |
US20180196817A1 (en) * | 2017-01-06 | 2018-07-12 | Oracle International Corporation | Cloud gateway for zfs snapshot generation and storage |
CN108427539A (zh) * | 2018-03-15 | 2018-08-21 | 深信服科技股份有限公司 | 缓存设备数据的离线去重压缩方法、装置及可读存储介质 |
-
2019
- 2019-01-11 SE SE1950027A patent/SE543186C2/en unknown
-
2020
- 2020-01-09 EP EP20738499.1A patent/EP3908938A4/en active Pending
- 2020-01-09 CN CN202080008711.7A patent/CN113366463A/zh active Pending
- 2020-01-09 WO PCT/SE2020/050013 patent/WO2020145874A1/en unknown
- 2020-01-09 CA CA3124691A patent/CA3124691A1/en active Pending
- 2020-01-09 KR KR1020217024939A patent/KR20210113297A/ko unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140310476A1 (en) * | 2013-04-12 | 2014-10-16 | Nec Laboratories America, Inc. | Bucketized multi-index low-memory data structures |
EP2905709A2 (en) * | 2014-02-11 | 2015-08-12 | Atlantis Computing, Inc. | Method and apparatus for replication of files and file systems using a deduplication key space |
US20170235640A1 (en) * | 2016-02-15 | 2017-08-17 | Electronics And Telecommunications Research Institute | Network traffic recording apparatus and method |
US20180121516A1 (en) * | 2016-11-02 | 2018-05-03 | Fujitsu Limited | Information processing device, computer-readable recording medium having stored therein information processing program, and information processing method |
US20180196817A1 (en) * | 2017-01-06 | 2018-07-12 | Oracle International Corporation | Cloud gateway for zfs snapshot generation and storage |
CN108427539A (zh) * | 2018-03-15 | 2018-08-21 | 深信服科技股份有限公司 | 缓存设备数据的离线去重压缩方法、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
SE1950027A1 (en) | 2020-07-12 |
KR20210113297A (ko) | 2021-09-15 |
US20220100718A1 (en) | 2022-03-31 |
EP3908938A1 (en) | 2021-11-17 |
SE543186C2 (en) | 2020-10-20 |
WO2020145874A1 (en) | 2020-07-16 |
JP2022516502A (ja) | 2022-02-28 |
EP3908938A4 (en) | 2022-09-21 |
CA3124691A1 (en) | 2020-07-16 |
US20230076729A2 (en) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642522B2 (en) | Method and system for in-line deduplication in a storage drive based on a non-collision hash | |
US9880746B1 (en) | Method to increase random I/O performance with low memory overheads | |
US7587401B2 (en) | Methods and apparatus to compress datasets using proxies | |
JP5423896B2 (ja) | ストレージシステム | |
US9268783B1 (en) | Preferential selection of candidates for delta compression | |
US7937371B2 (en) | Ordering compression and deduplication of data | |
US20130036104A1 (en) | Method and apparatus for managing data objects of a data storage system | |
US7979394B2 (en) | Method of managing storage and retrieval of data objects | |
AU2010200866B1 (en) | Data reduction indexing | |
US9378214B2 (en) | Method and system for hash key memory reduction | |
CN108475508B (zh) | 音频数据和保存在块处理存储系统中的数据的简化 | |
WO2021231255A1 (en) | Exploiting locality of prime data for efficient retrieval of data that has been losslessly reduced using a prime data sieve | |
Zhang et al. | Improving the performance of deduplication-based backup systems via container utilization based hot fingerprint entry distilling | |
WO2021082926A1 (zh) | 一种数据压缩的方法及装置 | |
CN113366463A (zh) | 用于消除计算机存储器中的副本和值冗余的系统、方法和设备 | |
JP7571026B2 (ja) | コンピュータメモリにおける重複および値冗長性を排除するためのシステム、方法、および装置 | |
US12124420B2 (en) | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories | |
Vikraman et al. | A study on various data de-duplication systems | |
Agrawal et al. | Clustered outband deduplication on primary data | |
CN116529705A (zh) | 利用计算机存储器中的值相似性的系统、方法和装置 | |
Tolic et al. | Deduplication in unstructured-data storage systems | |
US11422975B2 (en) | Compressing data using deduplication-like methods | |
US20240037034A1 (en) | Data intake buffers for deduplication storage system | |
CN118159936A (zh) | 顺序存储介质上的并行重复数据删除机制 | |
WO2006098720A1 (en) | Methods and apparatus to compress datasets using proxies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40053237 Country of ref document: HK |