JP2022516502A - コンピュータメモリにおける重複および値冗長性を排除するためのシステム、方法、および装置 - Google Patents

コンピュータメモリにおける重複および値冗長性を排除するためのシステム、方法、および装置 Download PDF

Info

Publication number
JP2022516502A
JP2022516502A JP2021538111A JP2021538111A JP2022516502A JP 2022516502 A JP2022516502 A JP 2022516502A JP 2021538111 A JP2021538111 A JP 2021538111A JP 2021538111 A JP2021538111 A JP 2021538111A JP 2022516502 A JP2022516502 A JP 2022516502A
Authority
JP
Japan
Prior art keywords
memory
unique
computer
block
duplicate
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
Application number
JP2021538111A
Other languages
English (en)
Other versions
JP7571026B2 (ja
Inventor
アンジェロス アレラキス
ペール ステンストレーム
Original Assignee
ゼロポイント テクノロジーズ アーベー
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ゼロポイント テクノロジーズ アーベー filed Critical ゼロポイント テクノロジーズ アーベー
Publication of JP2022516502A publication Critical patent/JP2022516502A/ja
Application granted granted Critical
Publication of JP7571026B2 publication Critical patent/JP7571026B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/405Tree adaptation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6029Pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (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)。メタデータ(500)は、符号化されたコンピュータメモリコンテンツのメモリオブジェクトを表すために提供される(1230)。メタデータは、排除された重複メモリオブジェクト、残りの固有メモリオブジェクト、および残りの各固有メモリオブジェクトを圧縮するために使用される圧縮のタイプを反映する。符号化されたコンピュータメモリコンテンツ内のメモリオブジェクトは、メタデータ(500)を使用して位置特定される(1240)。【選択図】図12

Description

この主題は、一般に、電子コンピュータ内のメモリにおけるデータ圧縮の分野に関する。
データ圧縮は、データの頻繁な収集を、データの頻繁でない収集よりも効率的に符号化することによって、データをより効率的に格納し、転送する一般的な技法である。一般に、多くの理由から、データをより効率的に格納し、転送することが興味深い。コンピュータメモリ、例えば、データおよび処理装置が動作するコンピュータ命令を保持するメモリにおいて、例えば、メインメモリまたはキャッシュメモリにおいて、前記データをより効率的に、例えば、K倍効率的に、格納することは、興味深いことである。その理由は、データをあるメモリと別のメモリとの間で転送するために潜在的に使用する通信容量をK分の1に減らし、コンピュータシステムの内部または間で、および/またはメモリ間で前記データを格納し、転送するために潜在的にエネルギー消費をK分の1にして減らし、前記メモリのサイズを潜在的にK分の1に減少させることができるからである。あるいは、データ圧縮を行わない場合よりも、利用可能なコンピュータメモリにK倍多くのデータを格納することができる。これは、より多くのメモリを追加する必要なしに、コンピュータの潜在的にK倍高い性能を達成するために興味深いことであり得る。このことは、コスト高になること、あるいはリソース制約のために単に望ましくないことがあり得る。別の例として、スマートフォン、タブレット、ラップ/デスクトップ、またはセットトップボックスのサイズおよび重量は、制限されることがある。その理由は、より大きい、または重いスマートフォン、タブレット、ラップ/デスクトップ、またはセットトップボックスは、エンドユーザにとってより価値が低く、したがって、そのような製品の市場価値を潜在的に低下させるからである。しかし、メモリ容量またはメモリ通信帯域幅がより大きくすると、製品の市場価値を潜在的に増大させることができる。なぜなら、メモリ容量またはメモリ通信帯域幅がより大きくなれば、製品の性能が向上し、したがって、有用性がより高くなるからである。
要約すると、分離された装置または相互接続された装置を含むコンピュータ化された製品の一般的な状況では、データ圧縮は、潜在的に、性能を向上させ、エネルギー消費を低下させ、メモリ通信帯域幅を増加させ、あるいはメモリによって消費されるコストおよび面積を小さくすることができる。したがって、データ圧縮は、本明細書で言及されるもの以外の広範なコンピュータ化された製品において、幅広い有用性を有する。
従来技術における圧縮メモリシステムは、通常、メモリページを作成するときに、ディスクから読み出すことによって、あるいはメモリ割り当てを介して、メモリページを圧縮する。圧縮は、ソフトウェアルーチンまたはハードウェアアクセラレータによる様々な周知の方法を使用して行うことができる。プロセッサがメモリからデータを要求するとき、データは、通常、プロセッサが要求する処理を行う前に、最初に解凍されなければならない。このような要求は、クリティカルなメモリアクセスパスに帰着する可能性があるため、解凍は、一般に、にハードウェアで加速されるので、メモリアクセス時間に与える影響は小さい。
重複排除と呼ばれる1つの圧縮アプローチにおいて、そのアイデアは、同一のメモリオブジェクトを識別することである。例えば、メモリには同じページの5つの同一インスタンスが含まれていると仮定する。その場合、それらのうちの1つだけを保存する必要があり、残りの4つは、そのインスタンスだけを参照することができ、したがって、5倍の圧縮率を提供する。従来技術で知られている重複排除は、例えば、サイズが、通常、数キロバイト(KB)~数十キロバイト、あるいはそれ以上のオーダであるメモリページと、サイズが、通常、数十バイト、例えば、64バイト(64B)であるメモリブロックのような粒度の範囲の固定サイズオブジェクトに適用されてきた。他の従来技術は、可変サイズ格納ファイルのような可変粒子サイズを考慮している。いずれにせよ、重複排除の制限は、同一のメモリオブジェクトの発生の重複を除去することのみに基づいていることである。
同一のオブジェクトを除去する場合、除去されたオブジェクトは、それと同一の唯一のオブジェクトへの参照を確立する必要がある。参照は、ポインタに関して、メモリオブジェクトの唯一のコピーを指すことであり、これはメモリ空間を消費する。したがって、重複排除は、著しい圧縮メタデータオーバヘッドにつながる可能性がある。例えば、1テラバイト=240バイトのメモリ内の64B(=2バイト)のメモリブロックに重複排除が適用されるとする。次に、重複排除されたメモリブロックの固有コピーを指すために、(40-6=)34ビットの参照ポインタが必要である。
従来技術から知られている代替の圧縮アプローチは、値冗長性(例えば、32または64ビットの単一ワードに関して)を活用する。例えば、他のものよりも一般的なメモリオブジェクトは、それほど一般的ではないメモリオブジェクトよりも少ないビット数で符号化される。一例として、エントロピーに基づく圧縮技法は、例えば、ハフマン符号化および算術符号化を含む従来技術において豊富である。他の圧縮技法には、ベースデルタ即(Base-Delta-Immediate)圧縮が含まれ、この圧縮は、データオブジェクト、例えば、メモリページおよびブロックに格納された数値が互いに数値的に近く、それらの間の差を密に符号化することを利用する。
重要なことは、重複を除去する重複排除と、値冗長性を除去するエントロピーベースの圧縮およびベースデルタ即圧縮のような値局所性を利用する圧縮技法とが、多くの方法で相補的であることである。例えば、ページベースの重複排除では、同一ページの単一コピーが格納されるのに対し、参照ポインタは固有コピーを参照するためにコピーから提供される。しかしながら、このような重複排除スキームでは、例えば、ページ内のワードレベル(例えば、32ビットまたは64ビットのエンティティ)で、より細かい粒度で存在する値冗長性は利用されない。重複排除を、値冗長性を低減する圧縮スキームと組み合わせることによって、重複を排除し、統計値の性質に基づいて固有コピー内の各データ値を符号化することによって、残りの固有コピーをはるかに密に格納することが可能である。本文書の目的は、本発明を開示して、重複および値冗長性を排除する、コンピュータメモリに適用される一群の圧縮技法の装置、システム、および方法を提供することである。
重複排除を値局所性ベースの圧縮と組み合わせることによって、多くの技術的課題が開かれる。第一の課題は、重複を除去することによって、また値局所性ベースのアプローチを使用して、残りの固有コピー内のアイテムを圧縮することによって、圧縮性を組み合わせて向上する符号化を見つける方法である。重複排除と値局所性ベースの圧縮との組合せアプローチを用いて、圧縮メモリ内でメモリブロックを効率的に位置特定するために、メタデータの量を低く保ち、圧縮と解凍装置がメモリ待ち時間のオーバヘッドを低くすることを可能にする課題を開くことになる。それゆえ、第二の課題は、メタデータの量を低く抑えることも、メモリレイテンシのオーバヘッドを低く抑えることもできる圧縮と解凍の方法、装置、およびシステムを考え出すことである。操作時、データオブジェクトは、プロセッサの書き込みに応じて変化する。これは、重複の数に関しても、残りの固有コピーの値局所性の統計的性質に関しても、重複された固有のブロックの性質が変化するという効果を有する。第三の課題は、このような動的効果に照らして圧縮性を高く保つことができる方法、装置およびシステムを提供することである。開示される発明は、これらの課題および他の課題の全てに対処することが意図されている。
本発明の第一の態様は、コンピュータメモリ圧縮方法である。この方法は、重複メモリオブジェクトの発生および固有メモリオブジェクトにおけるデータ値の値冗長性に関するコンピュータメモリコンテンツを分析するステップを含む。この方法は、また、前記重複メモリオブジェクトを除去し、残りの各固有メモリオブジェクトをそのデータ値のデータ値局所性を利用することで圧縮することによって、前記コンピュータメモリコンテンツを符号化するステップを含む。この方法は、さらに、符号化されたコンピュータメモリコンテンツのメモリオブジェクトを表すメタデータを提供するステップも含む。メタデータは、除去された重複メモリオブジェクト、残りの固有メモリオブジェクト、および残りの各固有メモリオブジェクトを圧縮するために使用される圧縮のタイプを反映する。この方法は、さらに、前記メタデータを使用して、符号化されたコンピュータメモリコンテンツ内のメモリオブジェクトを位置特定するステップも含む。
本発明の第二の態様は、コンピュータメモリ圧縮装置である。この装置は、重複メモリオブジェクトの発生および固有メモリオブジェクトにおけるデータ値の値冗長性に関するコンピュータメモリコンテンツを分析するように構成されたアナライザユニットを備える。この装置は、また、前記重複メモリオブジェクトを除去し、残りの各固有メモリオブジェクトをそのデータ値のデータ値局所性を利用することで圧縮することによって、前記コンピュータメモリコンテンツを符号化するように構成された符号化ユニットを備える。符号化ユニットは、さらに、符号化されたコンピュータメモリコンテンツの前記メモリオブジェクトを表すメタデータを提供するように構成されている。メタデータは、除去された重複メモリオブジェクト、残りの固有メモリオブジェクト、および残りの各固有メモリオブジェクトを圧縮するために使用される圧縮のタイプを反映する。この装置は、さらに、前記メタデータを使用して、符号化されたコンピュータメモリコンテンツ内にメモリオブジェクトを位置特定するように構成されたロケータユニットも備える。
開示された実施形態の他の態様、目的、特徴、および利点は、以下の詳細な開示、添付の従属請求項、および図面から明らかになる。
一般に、この文書で記述されるようなデータ値局所性を利用することによる圧縮は、エントロピーベースの符号化、デルタ符号化、辞書ベースの符号化またはパターンベースの符号化を含み得るが、制限はない。
一般に、特許請求の範囲において使用される全ての用語は、本明細書において特に明確に定義されない限り、本技術分野におけるそれらの通常の意味に従って解釈されるべきである。「1つの/その[要素、装置、構成要素、手段、ステップなど]」への言及は、いずれも、特に明記しない限り、要素、装置、構成要素、手段、ステップなどの少なくとも1つのインスタンスを指すものとしてオープンに解釈されるべきである。本明細書に開示される任意の方法のステップは、明示的に述べられない限り、開示される正確な順序で実行される必要はない。
1つまたは複数の処理ユニットを有するマイクロプロセッサチップ、3つのレベルからなる例示的なキャッシュ階層、1つまたは複数のオフチップメモリに接続された1つまたは複数のメモリコントローラを備えるコンピュータシステムを示す。 メモリ内のデータおよび命令を圧縮するように構成された、図1のようなコンピュータシステムを示す。 重複排除および値冗長性除去圧縮方法を適用する前後の例示的なメモリページレイアウトを示す。 ページ内の固有ブロックを追跡するためのツリーベースのデータ構造の例示的なレイアウトを示す。 重複排除と他の圧縮方法との組合せを用いてメモリページを圧縮するためのメタデータ構造と、その使用例とを示す。 重複排除プロセスのフローグラフを示す。 値冗長性除去圧縮方法のフローグラフを示す。 固有メモリブロックの変更に応答する例示的なメモリの変化を示す。 重複排除されたメモリブロックの変更に応答する例示的なメモリの変化を示す。 重複排除および値冗長性除去圧縮方法を使用してメモリブロックの位置を確立するためのアドレス変換ユニットを示す。 重複排除および値冗長性除去圧縮を使用してメモリブロックを解凍するためのデコンプレッサユニットを示す。 コンピュータメモリ圧縮方法の一般的なフローチャートを示す。
本文書は、コンピュータメモリにおける重複と値冗長性を排除する一群の圧縮アプローチを用いて、コンピュータメモリ内のデータを圧縮するためのシステム、方法、および装置を開示する。
コンピュータシステム100の例示的な実施形態を図1に示す。このシステムは、マイクロプロセッサ110と、M151、M152~M153と付された1つまたは複数のメモリモジュールと、を備える。マイクロプロセッサチップは、ディスクリートシステムであってもよいし、あるいは任意の利用可能な技術によるシステムオンチップ(SoC)上に集積されていてもよい。マイクロプロセッサ110は、P131、P132~P133と付された1つまたは複数の処理ユニットを備え、これらは、CPUまたはコアと呼ばれることがあり、メモリ階層である。一方、メモリ階層は、複数のキャッシュレベル、例えば、図1に例示的に示され、C1、C2、およびC3と付された3つのレベルを含む。これらのレベルは、同じまたは異なるメモリ技術で、例えば、SRAM、DRAM、または、例えば、相変化メモリ(PCM)を含む任意のタイプの不揮発性技術で実施することができる。キャッシュレベルの数は、異なる実施形態において変化することができ、例示的な実施形態100は、最後のキャッシュレベルがC3 120である3つのレベルを示す。これらのレベルは、ある種の相互接続手段(例えば、バスまたは任意の他の相互接続ネットワーク)を使用して接続される。例示的な実施形態では、レベルC1およびC2は、それぞれの処理ユニットP(例えば、図1のP)に対してプライベートであり、それによってのみアクセス可能である。代替的な実施形態は、任意の数のプライベートなキャッシュレベルを有することができ、あるいは、代替として、全てのキャッシュレベルが、図1の第三のレベルC3 120によって示されるように共有されることは、当業者には周知である。キャッシュ階層にデータを含めることに関して、任意の実施形態が可能であり、当業者には理解され得る。例えば、C1は、C2に含まれ得るが、C2は、レベルC3に関して包括的でないことがあり得る。当業者であれば、代替的な実施形態を理解することができる。図1のコンピュータシステム100は、MCTRL141、MCTRL142~MCTRL143と付された1つまたは複数のメモリコントローラを備える。最後のキャッシュレベル(図1のC3)は、メモリコントローラに接続され、メモリコントローラは、次に、1つまたは複数のメモリモジュールに接続される。メモリコントローラは、マイクロプロセッサチップ110上に統合することも、マイクロプロセッサチップ外に実装することもできる。最後に、コンピュータシステムは、1つまたは複数のタスクを実行する。タスクは、特定のシステムで実行できる任意のソフトウェアアプリケーション、またはその一部であり得る。
コンピュータシステムは、図1の実施形態によって例示されるように、レベル(例えば、図1のC1、C2およびC3)に関係なく、M151~M153と付されたメモリおよびキャッシュメモリの容量が限られていることに悩まされることがある。キャッシュの容量が限られていると、メモリ階層内の次のレベルで処理されなければならないメモリ要求の割合が高くなり、性能の低下またはエネルギー消費の増大につながることがある。この問題を軽減するために、キャッシュ容量を増やすことを検討できる。これにより、メモリ階層内の次のレベルで処理する必要がある要求の数を減らすことができる。マイクロプロセッサチップ上のキャッシュレベルの容量を増加させると、多くの問題をもたらすことになる。第一に、キャッシュアクセス要求時間が増大し、性能の低下につながる可能性がある。第二に、より大きなキャッシュへのアクセス要求で消費されるエネルギーは、潜在的により高くなり得る。第三に、より大きなキャッシュレベルを実現するためにマイクロプロセッサチップ上でシリコンまたは同等の材料をより多く使うと、その代償として、処理能力がより少なくなることがある。したがって、上記のような問題を発生せずに、キャッシュ容量をより多くすることが望まれている。メモリ容量が限られていると、同様の問題が生じ、通常はメモリ階層の格納レベルとして実現されるメモリ階層の次のレベルで処理する必要があるメモリ要求そのものが増加することがある。このような格納レベルのアクセスは、より遅く、性能およびエネルギー消費においてかなりの損失をもたらす可能性がある。メモリ容量を増やすと、これらの欠点を軽減できる。しかしながら、メモリ容量を増やすことは、構成要素レベルでも、エネルギー消費の点でも、コンピュータシステムをコスト高にする可能性がある。さらに、メモリが多ければ多いほど、より多くの空間を消費し、これは、特に、例えば、モバイルコンピュータ(例えば、タブレット、スマートフォン、ウェアラブル、およびインターネットに接続された小型コンピュータ化装置)を含むフォームファクタ制約製品におけるコンピュータシステムの有用性を制限し得る。
本発明の開示は、前述の例示的なメモリ階層圧縮のどのレベルで適用されるかが異なるいくつかの実施形態を考慮する。第一の実施形態は、本発明の圧縮方法がメインメモリに適用されることを考慮する。しかしながら、当業者であれば、他の実施形態を理解することができる。そのような実施形態も、本特許開示に明示的には含まれないが、企図されることが意図される。
メインメモリ容量が限られているという課題を考慮する第一の開示された実施形態に関して、図1の例示的なシステムは、データおよび命令をメインメモリ内で圧縮できるように構成することができる。図2は、そのようなコンピュータシステム200の一例を示す。追加されたものは、マイクロプロセッサチップ210上のコンピュータメモリ圧縮装置205である。コンピュータメモリ圧縮装置205は、4つの機能ブロックを備える。これらのブロックは、ロケータ(アドレス変換)ユニット211と、符号化(コンプレッサ)ユニット212と、デコンプレッサユニット213と、アナライザユニット214とを備えている。
以下に詳細に説明するように、アナライザユニット214は、重複メモリオブジェクトの発生および固有メモリオブジェクトにおけるデータ値の値冗長性に関するコンピュータメモリコンテンツを分析するように構成されている。この点に関して、データ値は、通常、メモリオブジェクトよりも細かい粒度であり、メモリオブジェクトは、通常、コンピュータメモリコンテンツよりも細かい粒度である。コンピュータメモリコンテンツは、通常、コンピュータメモリのページであってもよく、メモリオブジェクトは、通常、メモリブロックであってもよく、各メモリブロックは、通常、メモリワードなどの複数のデータ値を含んでもよい。
符号化ユニット212は、重複メモリオブジェクトを排除し、残りの各固有メモリオブジェクトをそのデータ値のデータ値局所性を利用することで圧縮することによって、コンピュータメモリコンテンツを符号化するように構成される。符号化ユニット212は、さらに、符号化されたコンピュータメモリコンテンツのメモリオブジェクトを表すメタデータ500を提供するように構成される。メタデータは、排除された重複メモリオブジェクト、残りの固有メモリオブジェクト、および残りの各固有メモリオブジェクトを圧縮するために使用される圧縮のタイプを反映する。このようなメタデータの例は、例えば、図5の500に見られる。ロケータユニット211は、メタデータを使用して、符号化されたコンピュータメモリコンテンツ内のメモリオブジェクトを位置特定するように構成される。
対応する一般的なコンピュータメモリ圧縮方法1200を図12に示す。この方法は、重複メモリオブジェクトの発生および固有メモリオブジェクトにおけるデータ値の値冗長性に関するコンピュータメモリコンテンツを分析するステップ1210を含む。この方法は、さらに、重複メモリオブジェクトを排除し、残りの各固有メモリオブジェクトをそのデータ値のデータ値局所性を利用することで圧縮することによって、コンピュータメモリコンテンツを符号化するステップ1220を含む。この方法は、また、符号化されたコンピュータメモリコンテンツのメモリオブジェクトを表すメタデータ500を提供するステップ1230を含む。この方法は、さらに、メタデータ500を使用して、符号化された前記コンピュータメモリコンテンツ内のメモリオブジェクトを位置特定するステップ1240を含む。コンピュータメモリ圧縮方法1200は、一般に、本明細書全体にわたって説明されるようなコンピュータメモリ圧縮装置205の構造的特徴および実施形態のいずれかまたは全てによって実行される機能に対応する機能ステップを含むことができる。
コンピュータメモリ圧縮装置205は、一方の側でメモリコントローラに、また他方の側で最後のレベルのキャッシュC3に接続されている。アドレス変換ユニット211の目的は、従来の物理アドレスPAを圧縮アドレスCAに変換して、圧縮メモリ内のメモリブロックを位置特定することである。当業者であれば、従来のメモリページ(例えば、4KB)を圧縮メモリ内で任意のサイズに圧縮することができるので、このようなアドレス変換が必要であることを理解するであろう。符号化(コンプレッサ)ユニット212の目的は、修正され、最後のレベルのキャッシュから追い出されたメモリブロックを圧縮することである。メモリシステムの性能への影響を無視できるようにするには、圧縮を高速にする必要があり、通常は、専用のコンプレッサユニットによって加速される。同様に、メモリブロックがプロセッサによって要求され、キャッシュレベル、例えば、例示的な実施形態ではC1、C2およびC3のいずれをも利用可能でない場合、メモリブロックは、メモリから要求されなければならない。アドレス変換ユニット211は、ブロックを位置特定するが、キャッシュ階層、例えばC1にインストールされる前に、解凍されなければならない。デコンプレッサユニット213の目的は、このプロセスを加速して、メモリシステムの性能への影響を無視できるようにすることである。
当業者であれば、コンプレッサおよびデコンプレッサユニットの機能は、使用されている圧縮アルゴリズムのタイプに依存することを理解することができる。一実施形態では、デルタ符号化(ベースデルタ即符号化など)を使用することができ、値そのものではなく、値とベース値との間の差が格納される。別の実施形態では、エントロピーベースの符号化(ハフマン符号化など)を使用することができ、この場合、他の値よりも頻繁な値は、より密な符号を使用する。第三の実施形態では、固有ブロックのみがメモリに格納される重複排除を使用することができる。本発明の開示の目的は、値冗長性を除去するために、全ての圧縮アルゴリズムをカバーすることである。
図2に従う実施形態によれば、文書の残りの部分は、コンピュータメモリコンテンツ(例えば、メモリページ)を符号化する方法と、圧縮メモリ内のメモリオブジェクト(例えば、メモリブロック)を位置特定する方法と、個別メモリオブジェクト(例えば、メモリブロック)を圧縮および解凍する方法と、最後に、コンピュータメモリコンテンツ(例えば、メモリページ)を再圧縮して追加の重複および値冗長性を除去する方法に関して、重複排除および値冗長性除去圧縮に基づいて組み合わせた圧縮アプローチを使用して、装置、方法およびシステムを提供する構造を以下で述べる。
(メモリページのデータ分析および符号化)
図3のエントロピーベースの圧縮と組み合わせた重複排除を使用して、メモリページをどのように圧縮するかの例示的な概要を提供する。しかしながら、デルタ符号化(例えば、ベースデルタ即符号化)のような他の値冗長性除去圧縮方法も可能であることに留意されたい。ページの例示的なレイアウト300は、図3の左側に(A)で示され、1、2、…、Nと番号が付され、従来の非圧縮コンピュータメモリ内の連続するメモリブロックアドレスに現れる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は、全ての固有ブロックを記録する。ブロックが挿入される前に、従来技術から知られているブロックのシグネチャを作成する。シグネチャは、2つのメモリブロックのシグネチャが異なる場合、それらは同一ではないという特性を有するブロックの値の密な表現である。しかしながら、その逆は、成り立たないこともある。
メモリブロックが固有であり、ツリーベースのデータ構造内に挿入されなければならないかどうかを確立するために、そのシグネチャを、まず、ツリーデータ構造400内の最上位ノード410のシグネチャと比較する。同じである場合、2つのメモリブロックのコンテンツを比較するために、第二のテストを実行する。メモリブロックが同一である場合、重複ブロックが検出されている。これと同じ動作が、ツリーベースのデータ構造内の各ノードで実行される。しかしながら、シグネチャが同じでも、2つのブロックが同一でない場合は、新しいブロックを同じシグネチャで挿入する必要がある。これは、偽陽性を処理するために、以下の追加のテストを含むことができる。作成されたシグネチャSがツリーデータ構造400内に表現されるシグネチャと一致する場合650、
・前記個別メモリオブジェクトが、一致する前記シグネチャによって表現される前記固有メモリブロックと同一であるかどうかを決定するステップと、
・前記個別メモリオブジェクトと、一致する前記シグネチャによって表現される前記固有メモリブロックとが同一でない場合、
〇ツリーデータ構造400にノードを挿入するステップと、
〇挿入したノードに作成したシグネチャSを入力するステップと、
〇個別メモリオブジェクトに対するメタデータ500を、それが固有メモリオブジェクトであることを示す情報510と、個別メモリオブジェクトに対する固有メモリオブジェクト参照(530、U_PTR)とを用いて、生成するステップと、
を含む。
一方、シグネチャが一致しない場合、探索(search)は、シグネチャが最上位ノード410のシグネチャよりも小さい場合、460でのテストに従って、ツリーの左分岐に進む。シグネチャが最上位ノードのシグネチャよりも大きい場合、探索は、テスト(ボックス470)に従って、ツリーの右分岐に進む。したがって、全てのノード410、420、430、440および450は、降順(左分岐)および昇順(右分岐)に編成され、探索時間を線形的ではなく対数的にする。重複はプロセス内で除去されるため、メモリブロックは、従来の非圧縮ページと同じアドレスに存在しない。このため、ブロックの新しい位置は、「ブロック位置_BL」によって各ノードに示されるように、ツリーベースのデータ構造に記録される。
重複排除プロセスの最終的な結果は、重複する全てのメモリブロックが排除されたことである。このため、図3に関連して説明したように、メモリブロックは、元の重複排除されていないページと同じ重複排除されたページ内の同じ位置に存在しない場合がある。このため、圧縮メモリ内のメモリブロックを位置特定する方法を支援し、後でさらに詳細化するには、重複排除プロセスでメタデータを生成する必要がある。
図5は、左側の(A)に、各メモリブロックのプロセスで生成される例示的なメタデータ500が示されている。メタデータ500は、タイプ(510)、ブロック符号化ENC(520)、U_PTR(530)、およびD_PTR(540)の4つの構成要素からなる。タイプは、ブロックが固有か重複かを示す。ENCで示されるブロック符号化は、メモリブロックコンテンツに適用される圧縮アルゴリズムのタイプ、例えば、ハフマン符号化または算術符号化などを示す。メモリブロックが固有である場合は、それを位置特定するためのポインタが必要である。これは、U_PTR(530)で表現される。一方、ブロックが重複している場合は、固有コピーへのポインタが必要である。固有コピーと同様に、U_PTR(530)は、圧縮メモリ内の固有コピーを指す。
図5の右側は、(B)において、ページ内の3つの選択されたメモリブロックの例示的なレイアウトを示し、ここでは、メモリブロック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)であって、その非圧縮コンテンツは重複メモリオブジェクトと同一である、固有メモリオブジェクト参照(530、U_PTR)と、
を含む。
有利なことに、メタデータ500は、各メモリオブジェクトが固有メモリオブジェクトであるために、排除された重複メモリオブジェクトへの重複メモリオブジェクト参照540、D_PTRをさらに含み、その非圧縮コンテンツは、固有メモリオブジェクトと同一である。
ここで、1つのページ内の全てのメモリブロックを分析することによって、メモリブロックが重複排除されるプロセス全体を確立する(複数ページなどの他の粒度も適用可能である)。このプロセスは、図6のフローグラフに示されている。図4に関連して既に述べたように、メモリブロックを重複排除するプロセス600は、最終的に全ての固有メモリブロックを含むツリーベースのデータ構造400を使用する。プロセス600は、ページの全てのメモリブロックを順次分析する。第一の決定ステップ620は、ページの全てのメモリブロックを訪問したかどうかを確認する。訪問していない場合、次のメモリブロックが考慮される。図4に関連して説明したように、そのブロックのシグネチャは、従来技術で知られている何らかの方法に従って作成され、一致が検出されない限り、シグネチャは、ツリー内の全てのノードと比較される。結局、2つの結果がある。ブロックが固有である場合、決定するステップ640でテストされるように、ブロックを660で挿入する。次いで、メモリブロック位置が、ページ内のメモリブロックの数とともに記録される。ブロックが固有でない場合、650において重複排除され、既にツリーベースのデータ構造に記録されている固有ブロックのブロック位置へのポインタが、図5に従って、メタデータのU_PTRポインタに割り当てられる(530参照)。結果にかかわらず、次のアクションは、決定ステップ620に戻って、ページの次のメモリブロックを分析することである。
図4~図6の説明から理解されるように、コンピュータメモリ圧縮装置205のアナライザユニット214および符号化ユニット212は、したがって、コンピュータメモリコンテンツ内の各個別メモリオブジェクトを、
・シグネチャ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)を導入するステップと、
を行うことによって、処理する600ように構成される。
指摘したように、例えば、ワードレベルで、個々のデータ項目の値局所性を活用することを目的とする任意の圧縮方法の前に重複排除を適用することは、重複が値頻度分布を正しく表さないので重要である。この目的のために、固有ブロックの値頻度分布を確立するプロセスが必要とされている。このようなプロセス700を図7に示す。全体的なプロセス700の狙いは、図4のツリーベースのデータ構造400に記録された全ての固有のメモリブロックを分析することである。プロセス700は、ステップ710で開始する。全ての固有メモリブロックが訪問されていない限り(ステップ720)、プロセス700は、各訪問された固有ブロックの値頻度を記録する。これは、ステップ730で、ハッシュテーブルに個々の各値の頻度を記録することによって行うことができる。最後に、全ての固有メモリブロックの値頻度を確立することができ、ハフマン符号化または算術符号化などの任意の値局所性ベースの圧縮方法に基づく符号化を、ステップ740で確立することができる。
したがって、コンピュータメモリ圧縮装置205のアナライザユニット214および符号化ユニット212は、コンピュータメモリコンテンツ内の全てのメモリオブジェクトが処理された場合600、
・ツリーデータ構造400を横断して、ツリーデータ構造400のノードによって表現される固有メモリオブジェクトのデータ値の値頻度表を生成するステップと、
・生成された値頻度表を使用して、エントロピーベースの圧縮スキームによって各固有メモリオブジェクトを圧縮するステップと、
を行なうように構成され得る。
そのような一実施形態では、アナライザユニットは、例えばハフマン符号化または他のエントロピーベースの符号化技法を使用して符号化を確立するために、おそらくソフトウェアルーチンを使用して、後の分析に使用される各値の頻度を記録するハッシュテーブルを実装することができる。
代替の実施形態では、デルタ符号化(例えば、ベースデルタ即符号化)を使用して、重複が除去された後に残る値を使用して、1つまたは複数のベース値を選択することができる。1つのアプローチでは、クラスタリング技法を使用して、重複が除去された後に、どのベース値がページ内の一意のコピー内の全ての値に最も近いかを分析することができる。
したがって、代替として、コンピュータメモリ圧縮装置205のアナライザユニット214および符号化ユニット212は、前記コンピュータメモリコンテンツ内の全てのメモリオブジェクトが処理された場合600、
・ツリーデータ構造400を横断して、ツリーデータ構造400のノードによって表現される固有メモリオブジェクトのデータ値の値頻度表を生成するステップと、
・生成された値頻度表を使用して、エントロピーベースの圧縮スキームによって各固有メモリオブジェクトを圧縮するステップと、
を行なうように構成され得る。
(圧縮されたメモリ内のメモリブロックの位置特定)
次に、重複排除と値冗長性除去の組み合わせ圧縮技法を使用して、圧縮メモリ内でメモリブロックがどのように位置特定され、解凍されるかに注目する。図2に戻ると、ロケータ(アドレス変換)ユニット211のタスクは、従来の物理アドレスを圧縮アドレス空間内のアドレスに変換することであることを思い出されたい。図10は、図2のロケータ(アドレス変換)ユニット211の詳細なレイアウト1000を示す。これは、いくつかのページエントリを含み、その各エントリ1010がいくつかのフィールド、すなわち、物理アドレス1011および圧縮アドレス1012を含む。これらは、ページの物理アドレスおよび圧縮アドレスにそれぞれ対応する。図5の1021~1023に見られるように、各ページエントリは、各ブロックのメタデータMD 1、…、MD Nに関連付けられている。メタデータの詳細については、前述したように、図5の左端(A)を参照されたい。図5に示すように、メモリブロックが固有であるか重複排除されているかにかかわらず、U_PTRは、圧縮アドレスCAに対するブロックの位置へのオフセットとして機能する。加算器1030は、U_PTRと圧縮アドレスCA 1012との和を確立することによって、ブロックアドレス1040を形成する。
図2のプロセッサの1つ(P~Pと表示される)が、キャッシュレベル(C、CまたはC)のいずれかによって満たすことができない読み取り要求を発行すると、図2/図10内のロケータ(アドレス変換)ユニット211/1000によって処理され、物理アドレスPAは、PAに関連付けられた圧縮アドレスCAを、要求されたブロックのメタデータと一緒に使用して、上記で説明したプロセスに従って変換される。しかしながら、書き込み要求がいずれのレベルのキャッシュでも満たされない場合、その書き込みによって、どのブロックが固有であるか、どのブロックが重複排除されるかに影響を与える可能性がある。図8の最も左のシナリオ(A)を考察する。ここで、固有ブロックは、830で表される。810および820によって表される2つの重複排除されたブロックは、同じコンテンツを有し、それらのU_PTRは、固有ブロック830を指す。重複排除されたメモリブロック810、820は、メモリブロック820に固有ブロックのD_PTR点を有し、メモリブロック810に同じブロックのD_PTR点を有することによって、固有ブロック830にリンクされる。
次に、書き込み要求が固有メモリブロック830に宛てられていると仮定し、図8の最も右のシナリオ(B)に注目する。固有メモリブロック830の重複が存在するので、そのメモリブロックを保持することが望ましいことがある。これは、図8の840によって表される専用の空きメモリ領域を使用して行われる。これは、おそらく、ページ内で、固有メモリブロック830の古いコンテンツをコピーするためであるが、必ずしもそうである必要はない。その空きメモリ領域の現在の開始アドレス805は、参照によって、例えば、F_PTRで示される専用ポインタによって指される。固有メモリブロック830の古いコンテンツは、870で見たように空き領域840にコピーされ、重複排除されたメモリブロック810、820のU_PTRは、今や870に存在する古い固有メモリブロックを指す。さらに、D_PTRは、重複排除されたメモリブロック810、820を870に存在する古い固有メモリブロックにリンクするように変更される。あるいは、ブロック870のD_PTRのみがブロック820を指すように更新されるのに対し、D_PTRの残りは図8の左端部分(A)に見られるように残り、すなわち、リンクされたリストのヘッドのみが更新される。元の場所、すなわち、830に存在する固有のメモリブロックは、今度は、書き込み要求に従って、新しいコンテンツで更新することができる。F_PTRは、880に示すように、空きメモリ領域の変更された開始アドレスを反映するようにも更新される。
図8の固有メモリブロック830に宛てられた書き込み要求を処理する別の方法は、以下の通りである。しかしながら、図8の詳細な内容は、以下の説明を反映していないことに留意されたい。重複排除されたメモリブロック820は、固有メモリブロック830のシグネチャSを使用することによって、ツリーデータ構造400(図4参照)内で固有のものとしてプロモートされる。書き込み要求に従った固有メモリブロック830の更新されたコンテンツが、専用空きメモリ領域840に書き込まれる。830のU_PTRは、新しいブロックが空きメモリ領域内のどこにあるかを示すように更新され、830のD_PTRは、除去されるか、あるいは少なくとも、どこも示さないように更新される。なぜなら、ブロック830は、重複の検出されない固有ブロックだからである。F_PTRは、書き込み後に、新規開始アドレスを反映するように更新される。
次に、書き込み要求が重複排除されたブロックに宛てられたシナリオを考え、図9の最も左のシナリオに注目する。ここで、固有メモリブロック910と同じコンテンツを有する2つの重複排除メモリブロック920および930があり、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)に使用される圧縮アルゴリズムを含む。ブロックがメモリから検索されると(retrieved)、解凍される。これは、図11において、圧縮アルゴリズム(ENC)のタイプおよびメモリからの解凍されたブロックを入力として取るデコンプレッサユニット1110によって示されている。圧縮アルゴリズムのタイプは、重複排除、エントロピーベースの圧縮、デルタ符号化(例えば、ベースデルタ即符号化)、または値冗長性を除去することを目的とする任意の他の圧縮方法とすることができる。
ブロックが図2の例示的な実施形態の最後のレベルのキャッシュC3から交換される場合には、そのブロックは修正されていてもよく、その後ライトバック要求を生成してもよい。その後、メモリに書き戻す前に、圧縮する必要がある。図2のロケータ(アドレス変換)ユニット211に問い合わせが行われる。ブロックが属するページのメタデータのエントリがある場合、そのメタデータは、ブロックの圧縮に使用される圧縮アルゴリズムを符号化する。図8および図9のシナリオに戻って参照すると、ライトバック要求が固有ブロック(図8)または重複排除されたブロック(図9)に対するものであることが起こり得る。このような場合、アドレス変換ユニットとそれに関連するロジックは、メタデータを変更するのを支援し、このプロセスで生成される重複の数を減らすのに役立つ。
図8~図11の説明は、以下のように要約し、一般化することができる。コンピュータメモリ圧縮装置205は、有利なことに、
・物理メモリページアドレスPAを有するメモリページ内のメモリブロックの読み取り要求を受信するステップと、
・ルックアップテーブル1010からの圧縮メモリページアドレスCAを決定するステップと、
・メモリブロックに対するメタデータ1020を検索するステップと、
・圧縮メモリページアドレスCAと検索されたメタデータの固有メモリオブジェクト参照530、U_PTRからの圧縮メモリブロックアドレス1040を計算するステップと、
・計算された圧縮メモリブロックアドレス1040での圧縮メモリブロック1105を検索するステップと、
・圧縮のタイプを示し、メモリブロックに対して検索された前記メタデータで利用可能な情報520;1120、ENCを使用して、デコンプレッサユニット213によって、検索された圧縮メモリブロック1105を解凍するステップ1110と、
を行うように構成することができる。
図8を参照して説明されたように、コンピュータメモリ圧縮装置205は、有利なことに、
・当初メモリ位置における固有メモリブロック830の更新を含むライトバック要求を受信するステップと、
・コンピュータメモリコンテンツの専用空きメモリ領域840内の新規メモリ位置870に更新する前に、固有メモリブロック830をコピーするステップと、
・固有メモリブロック830にリンクされた重複メモリブロック810、820のメタデータを更新して、その前記重複メモリオブジェクト参照540、D_PTRが専用空きメモリ領域840内の前記新規メモリ位置870にリダイレクトされるようにするステップと、
・ライトバック要求に従って、その当初メモリ位置830で固有メモリブロックを更新するステップと、
をさらに行うように構成される。
また、コンピュータメモリ圧縮装置205は、有利なことに、
・専用空きメモリ領域840の開始アドレス805への参照F_PTRを含むメタデータを提供するステップと、
・専用空きメモリ領域840内の新規メモリ位置870への固有メモリブロック830をコピーした後に、新規開始アドレス880を反映するように、前記参照F_PTRを更新するステップと、
をさらに行うように構成され得る。
図8の代替として説明したように、コンピュータメモリ圧縮装置205は、有利なことに、
・当初メモリ位置における固有メモリブロック830の更新を含むライトバック要求を受信するステップと、
・重複排除メモリブロック820が固有メモリブロック830の重複であることを見つけるステップと、
・固有メモリブロック830のシグネチャSを使用することによって、見つかった重複排除メモリブロック820をツリーデータ構造400内で固有のものとしてプロモートするステップと、
・専用空きメモリ領域840内の新規メモリ位置870へのライトバック要求に従って、固有メモリブロック830の更新されたコンテンツを書き込むステップと、
・固有メモリブロック830のメタデータを更新して、その前記固有メモリオブジェクト参照530、U_PTRが専用空きメモリ領域840内の新規メモリ位置870にリダイレクトされるようにして、その一方で、その重複メモリオブジェクト参照540、D_PTRは除去される、ステップと、
をさらに行うように構成され得る。
また、コンピュータメモリ圧縮装置205は、有利なことに、
・専用空きメモリ領域840の開始アドレス805への参照F_PTRを含むメタデータを提供するステップと、
・専用空きメモリ領域840の新規メモリ位置870へのライトバック要求に従って、固有メモリブロック830の更新されたコンテンツの書き込み後に、新規開始アドレス880を反映するように前記参照F_PTRを更新するステップと、
をさらに行うように構成され得る。
図9を参照して説明されたように、コンピュータメモリ圧縮装置205は、有利なことに、
・重複メモリブロック920の更新を含むライトバック要求を受信するステップと、
・更新された前記重複メモリブロックのコンテンツを、専用空きメモリ領域940内の新規固有メモリブロック980として格納するステップと、
・重複メモリブロック920に以前にリンクされた固有メモリブロック910のメタデータを更新して、固有メモリブロック910が、固有メモリブロック910と他の重複メモリブロック930との間のリンクを維持しつつ、重複メモリブロック920にリンクされなくなったことを反映するステップと、
をさらに行うように構成され得る。
ライトバック要求の結果として、図8および図9に関連して説明したように、固有コピーおよび重複排除コピーが更新され、不必要な重複が起こらないようにするために使用される空き領域に最終的に入る。しかしながら、時間の経過とともに、これは、圧縮率が劣化するという効果を有し得る。一実施形態では、圧縮率は、常に監視される。事前に設定された閾値を超えると、ページの再圧縮を実行するために、重複の発生および値冗長性に関して、メモリページを分析することを目的としたプロセスが開始される。これらのプロセスは、図6および図7に示したものと同じであってもよい。別の実施形態では、ページは、再圧縮が必要であるかどうかを評価するために定期的に訪問される。必要と判断された場合には、図6および図7に示し、前の段落で説明したプロセスを起動する。
したがって、コンピュータメモリ圧縮装置205は、有利なことに、
・メモリページの圧縮率を経時的に監視するステップと、
・圧縮率が所与の基準を満たさない場合、本明細書に記載のコンピュータメモリ圧縮方法1200の機能を実行することによって、メモリページの再圧縮を実行するステップと、
をさらに行うように構成され得る。
代替または追加として、コンピュータメモリ圧縮装置205は、メモリページの再圧縮を定期的に実行して、本文書に記載のコンピュータメモリ圧縮方法1200の機能を実行することによって、圧縮率を改善するように、さらに構成され得る。
本発明の態様は、例示的な実施形態を参照することによって本明細書で説明してきたが、本発明の態様は、開示された実施形態に限定されず、当業者によって実現され得る代替的な実施形態を網羅する。
本発明の1つの代替態様は、データ項目の重複および値冗長性を排除することによって、コンピュータメモリデータを圧縮する目的で、コンピュータメモリデータを分析するためのシステムと見なすことができ、このシステムは、重複および値冗長性を排除する手段と、重複および値冗長性を排除した後にデータ項目を位置特定する手段と、前記圧縮方法を使用してデータ項目を圧縮および解凍する手段と、データ項目を再圧縮する手段とを備える。
本発明の別の代替態様は、データ項目の重複および値冗長性を排除することによって、コンピュータメモリデータを圧縮する目的で、コンピュータメモリデータを分析するための方法と見なすことができ、この方法は、重複および値冗長性を排除するステップと、重複および値冗長性を排除した後にデータ項目を位置特定するステップと、前記圧縮方法を使用してデータ項目を圧縮および解凍するステップと、データ項目を再圧縮するステップとを含む。
本発明のさらに別の代替態様は、データ項目の重複および値冗長性を排除することによって、コンピュータメモリデータを圧縮する目的で、コンピュータメモリデータを分析するための装置と見なすことができ、この装置は、重複および値冗長性を排除するステップと、重複および値冗長性を排除した後にデータ項目を位置特定するステップと、前記圧縮方法を使用してデータ項目を圧縮および解凍するステップと、データ項目を再圧縮するステップとを行うように構成される。
開示された本発明のさらに別の代替態様は、メモリブロックの重複の発生に関して、および残りの固有のメモリブロックの値冗長性の発生に関して、メインメモリ内のページのコンテンツを分析する手段を有するデータ分析のためのシステムを含むものとして見ることができる。開示された発明は、また、メモリの重複および値冗長性を除去するための手段を有するシステムを含む。さらに、開示された発明は、重複および値冗長性が除去された後に個々のメモリブロックを位置特定する手段と、それを使用してメモリブロックを圧縮および解凍する手段とを有するシステムを含む。最後に、開示された発明は、メモリページを再圧縮する手段を有するシステムを含む。
本発明のさらなる代替態様は、メモリブロックの重複の発生に関して、および残りの固有メモリブロック内の値の相対頻度に関して、メインメモリ内のページのコンテンツを分析する方法と、重複排除および値局所性ベースの符号化方法の両方を考慮してメモリブロックを符号化する方法と、重複排除および値局所性ベースの圧縮技法の組み合わせのファミリについて、圧縮メモリ内の個々のメモリブロックを位置特定する方法と、それを使用してメモリブロックを圧縮および解凍する方法として見ることができる。最後に、開示された発明は、メモリページを再圧縮するための方法を含む。
他の本発明の代替態様は、メモリブロックの重複の発生に関して、および残りの固有メモリブロック内の値の相対頻度に関して、メインメモリ内のページのコンテンツを分析するように構成されたアナライザ装置と、残りの固有ブロック内の重複排除および値冗長性を考慮してメモリブロックを符号化するように構成されたデータ符号化装置と、重複排除および値局所性ベースの圧縮技法の組み合わせのファミリについて、圧縮メモリ内の個々のメモリブロックを位置特定するように構成されたメモリブロックロケータ装置と、それを使用してメモリブロックを圧縮および解凍するように構成された装置と、メモリページを再圧縮するように構成された装置として見ることができる。

Claims (37)

  1. コンピュータメモリ圧縮方法(1200)であって、
    重複メモリオブジェクトの発生および固有メモリオブジェクトにおけるデータ値の値冗長性に関するコンピュータメモリコンテンツを分析するステップ(1210)と、
    前記重複メモリオブジェクトを排除し、残りの各固有メモリオブジェクトをそのデータ値のデータ値局所性を利用することで圧縮することによって、前記コンピュータメモリコンテンツを符号化するステップ(1220)と、
    符号化された前記コンピュータメモリコンテンツの前記メモリオブジェクトを表すメタデータ(500)を提供するステップ(1230)であって、前記メタデータ(500)は、排除された重複メモリオブジェクト、残りの固有メモリオブジェクト、および残りの各固有メモリオブジェクトを圧縮するために使用される圧縮のタイプを反映する、ステップと、
    前記メタデータ(500)を使用して、符号化された前記コンピュータメモリコンテンツ内のメモリオブジェクトを位置特定するステップ(1240)と、
    を含む、コンピュータメモリ圧縮方法。
  2. 前記メタデータ(500)は、符号化された前記コンピュータメモリコンテンツの各メモリオブジェクトについて、
    前記メモリオブジェクトが排除された重複メモリオブジェクトまたは残りの固有メモリオブジェクトであることを示す情報(510)と、
    前記メモリオブジェクトが固有メモリオブジェクトの場合、使用された圧縮のタイプを示す情報(520)と、前記固有メモリオブジェクトへの固有メモリオブジェクト参照(530、U_PTR)と、
    前記メモリオブジェクトが重複メモリオブジェクトの場合、固有メモリオブジェクトへの固有メモリオブジェクト参照(530、U_PTR)であって、その非圧縮コンテンツは前記重複メモリオブジェクトと同一である、固有メモリオブジェクト参照(530、U_PTR)と、
    を含む、請求項1に記載のコンピュータメモリ圧縮方法。
  3. 前記メタデータ(500)は、各メモリオブジェクトが固有メモリオブジェクトであるために、排除された重複メモリオブジェクトへの重複メモリオブジェクト参照(540、D_PTR)をさらに含み、その非圧縮コンテンツは、前記固有メモリオブジェクトと同一である、請求項2に記載のコンピュータメモリ圧縮方法。
  4. 前記コンピュータメモリコンテンツ内の各個別メモリオブジェクトを処理するステップ(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)を導入するステップと、
    を行うことによって、処理するステップ(600)をさらに含む、請求項3に記載のコンピュータメモリ圧縮方法。
  5. 作成された前記シグネチャ(S)が前記ツリーデータ構造(400)内に表現されるシグネチャと一致する場合(650)、
    前記個別メモリオブジェクトが、一致する前記シグネチャによって表現される前記固有メモリブロックと同一であるかどうかを決定するステップと、
    前記個別メモリオブジェクトと、一致する前記シグネチャによって表現される前記固有メモリブロックとが同一でない場合:
    前記ツリーデータ構造(400)にノードを挿入するステップと、
    挿入した前記ノードに作成した前記シグネチャ(S)を入力するステップと、
    前記個別メモリオブジェクトに対するメタデータ(500)を、それが固有メモリオブジェクトであることを示す情報(510)と、前記個別メモリオブジェクトに対する固有メモリオブジェクト参照(530、U_PTR)とを用いて、生成するステップと、
    をさらに含む、請求項4に記載のコンピュータメモリ圧縮方法。
  6. 前記コンピュータメモリコンテンツ内の全てのメモリオブジェクトが処理された場合(600)、
    前記ツリーデータ構造(400)を横断して、前記ツリーデータ構造(400)の前記ノードによって表現される前記固有メモリオブジェクトの前記データ値の値頻度表を生成するステップと、
    生成された前記値頻度表を使用して、エントロピーベースの圧縮スキームによって各固有メモリオブジェクトを圧縮するステップと、
    をさらに含む、請求項4または5に記載のコンピュータメモリ圧縮方法。
  7. 前記コンピュータメモリコンテンツ内の全てのメモリオブジェクトが処理された場合(600)、
    前記ツリーデータ構造(400)のノードによって表現される前記固有メモリオブジェクトの前記データ値を調べ、1つまたは複数のベース値を決定することによって、前記ツリーデータ構造(400)を横断するステップと、
    決定された1つまたは複数の前記ベース値を使用して、デルタ符号化ベース圧縮スキームによって各固有メモリオブジェクトを圧縮するステップと、
    をさらに含む、請求項4または5に記載のコンピュータメモリ圧縮方法。
  8. 前記データ値は、前記メモリオブジェクトよりも細かい粒度であり、前記メモリオブジェクトは、前記コンピュータメモリコンテンツよりも細かい粒度である、請求項1~7のいずれか一項に記載のコンピュータメモリ圧縮方法。
  9. 前記コンピュータメモリコンテンツはコンピュータメモリのページであり、前記メモリオブジェクトはメモリブロックであり、各メモリブロックは複数のデータ値を含む、請求項8に記載のコンピュータメモリ圧縮方法。
  10. 物理メモリページアドレス(PA)を有するメモリページ内のメモリブロックの読み取り要求を受信するステップと、
    ルックアップテーブル(1010)からの圧縮メモリページアドレス(CA)を決定するステップと、
    前記メモリブロックに対するメタデータを検索するステップ(1020)と、
    前記圧縮メモリページアドレス(CA)と検索された前記メタデータの前記固有メモリオブジェクト参照(530、U_PTR)からの圧縮メモリブロックアドレス(1040)を計算するステップと、
    計算された前記圧縮メモリブロックアドレス(1040)での圧縮メモリブロック(1105)を検索するステップと、
    前記メモリブロックに対して検索された前記メタデータからの圧縮のタイプを示す情報(520;1120、ENC)を使用して、検索された前記圧縮メモリブロック(1105)を解凍するステップ(1110)と、
    をさらに含む、請求項2に従属するときの請求項9に記載のコンピュータメモリ圧縮方法。
  11. 当初メモリ位置における固有メモリブロック(830)の更新を含むライトバック要求を受信するステップと、
    前記コンピュータメモリコンテンツの専用空きメモリ領域(840)内の新規メモリ位置(870)に更新する前に、前記固有メモリブロック(830)をコピーするステップと、
    前記固有メモリブロック(830)にリンクされた重複メモリブロック(810、820)の前記メタデータを更新して、その前記重複メモリオブジェクト参照(540、D_PTR)が前記専用空きメモリ領域(840)内の前記新規メモリ位置(870)にリダイレクトされるようにするステップと、
    前記ライトバック要求に従って、その当初メモリ位置(830)で前記固有メモリブロックを更新するステップと、
    をさらに含む、請求項3に従属するときの請求項9または10に記載のコンピュータメモリ圧縮方法。
  12. 前記専用空きメモリ領域(840)の開始アドレス(805)への参照(F_PTR)を含むメタデータを提供するステップと、
    前記専用空きメモリ領域(840)内の前記新規メモリ位置(870)への前記固有メモリブロック(830)をコピーした後に、新規開始アドレス(880)を反映するように、前記参照(F_PTR)を更新するステップと、
    をさらに含む、請求項11に記載のコンピュータメモリ圧縮方法。
  13. 当初メモリ位置における固有メモリブロック(830)の更新を含むライトバック要求を受信するステップと、
    重複排除メモリブロック(820)が固有メモリブロック(830)の重複であることを見つけるステップと、
    前記固有メモリブロック(830)の前記シグネチャ(S)を使用することによって、見つかった前記重複排除メモリブロック(820)を前記ツリーデータ構造(400)内で固有のものとしてプロモートするステップと、
    専用空きメモリ領域(840)内の新規メモリ位置(870)への前記ライトバック要求に従って、前記固有メモリブロック(830)の更新されたコンテンツを書き込むステップと、
    前記固有メモリブロック(830)の前記メタデータを更新して、その前記固有メモリオブジェクト参照(530、U_PTR)が前記専用空きメモリ領域(840)内の前記新規メモリ位置(870)にリダイレクトされるようにして、その一方で、その重複メモリオブジェクト参照(540、D_PTR)は除去されるようにするステップと、
    をさらに含む、請求項4および請求項9または10に記載のコンピュータメモリ圧縮方法。
  14. 前記専用空きメモリ領域(840)の開始アドレス(805)への参照(F_PTR)を含むメタデータを提供するステップと、
    前記専用空きメモリ領域(840)の前記新規メモリ位置(870)への前記ライトバック要求に従って、前記固有メモリブロック(830)の更新された前記コンテンツの書き込み後に、新規開始アドレス(880)を反映するように前記参照(F_PTR)を更新するステップと、
    をさらに含む、請求項13に記載のコンピュータメモリ圧縮方法。
  15. 重複メモリブロック(920)の更新を含むライトバック要求を受信するステップと、
    更新された前記重複メモリブロックの前記コンテンツを、専用空きメモリ領域(940)内の新規固有メモリブロック(980)として格納するステップと、
    前記重複メモリブロック(920)に以前にリンクされた固有メモリブロック(910)の前記メタデータを更新して、前記固有メモリブロック(910)が、前記固有メモリブロック(910)と他の重複メモリブロック(930)との間のリンクを維持しつつ、前記重複メモリブロック(920)にリンクされなくなったことを反映するステップと、
    をさらに含む、請求項9~14のいずれか一項に記載のコンピュータメモリ圧縮方法。
  16. メモリページの圧縮率を経時的に監視するステップと、
    前記圧縮率が所与の基準を満たさない場合、請求項1~10のいずれか一項に記載のコンピュータメモリ圧縮方法の機能を実行することによって、前記メモリページの再圧縮を実行するステップと、
    をさらに含む、請求項11~15のいずれか一項に記載のコンピュータメモリ圧縮方法。
  17. 請求項1~10のいずれか一項に記載のコンピュータメモリ圧縮方法の機能を実行することによって、メモリページの再圧縮を定期的に実行し、圧縮率を改善するステップ
    をさらに含む、請求項15または16に記載のコンピュータメモリ圧縮方法。
  18. 前記データ値局所性を利用することによる前記圧縮は、
    エントロピーベースの符号化と、
    デルタ符号化と、
    辞書ベースの符号化と、
    パターンベースの符号化と
    のうちの1つを含む、請求項1~17のいずれか一項に記載のコンピュータメモリ圧縮方法。
  19. コンピュータメモリ圧縮装置(205)であって、
    重複メモリオブジェクトの発生および固有メモリオブジェクトにおけるデータ値の値冗長性に関するコンピュータメモリコンテンツを分析するように構成されたアナライザユニット(214)と、
    前記重複メモリオブジェクトを排除し、残りの各固有メモリオブジェクトをそのデータ値のデータ値局所性を利用することで圧縮することによって、前記コンピュータメモリコンテンツを符号化するように構成された符号化ユニット(212)であって、前記符号化ユニット(212)は符号化された前記コンピュータメモリコンテンツの前記メモリオブジェクトを表すメタデータ(500)を提供するように、さらに構成され、前記メタデータ(500)は、除去された重複メモリオブジェクト、残りの固有メモリオブジェクト、および残りの各固有メモリオブジェクトを圧縮するために使用される圧縮のタイプを反映する、符号化ユニット(212)と、
    前記メタデータ(500)を使用して、符号化された前記コンピュータメモリコンテンツ内にメモリオブジェクトを配置するように構成されたロケータユニット(211)と、
    を備える、コンピュータメモリ圧縮装置。
  20. 前記メタデータ(500)は、符号化された前記コンピュータメモリコンテンツの各メモリオブジェクトについて、
    前記メモリオブジェクトが排除された重複メモリオブジェクトまたは残りの固有メモリオブジェクトであることを示す情報(510)と、
    前記メモリオブジェクトが固有メモリオブジェクトの場合、使用された圧縮のタイプを示す情報(520)と、前記固有メモリオブジェクトへの固有メモリオブジェクト参照(530、U_PTR)と、
    前記メモリオブジェクトが重複メモリオブジェクトの場合、固有メモリオブジェクトへの固有メモリオブジェクト参照(530、U_PTR)であって、その非圧縮コンテンツは前記重複メモリオブジェクトと同一である、固有メモリオブジェクト参照(530、U_PTR)と、
    を含む、請求項19に記載のコンピュータメモリ圧縮装置。
  21. 前記メタデータ(500)は、各メモリオブジェクトが固有メモリオブジェクトであるために、排除された重複メモリオブジェクトへの重複メモリオブジェクト参照(540、D_PTR)をさらに含み、その非圧縮コンテンツは、前記固有メモリオブジェクトと同一である、請求項20に記載のコンピュータメモリ圧縮装置。
  22. 前記アナライザユニット(214)および前記符号化ユニット(212)は、前記コンピュータメモリコンテンツ内の各個別メモリオブジェクトを、
    シグネチャ(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)を導入するステップと、
    を行うことによって、処理する(600)ように構成される、請求項21に記載のコンピュータメモリ圧縮装置。
  23. 前記アナライザユニット(214)および前記符号化ユニット(212)は、
    作成された前記シグネチャ(S)が、前記ツリーデータ構造(400)に表現されるシグネチャと一致する場合(650)、
    前記個別メモリオブジェクトが、一致する前記シグネチャによって表現される前記固有メモリブロックと同一であるかどうかを決定するステップと、
    前記個別メモリオブジェクトと、一致する前記シグネチャによって表現される前記固有メモリブロックとが同一でない場合:
    前記ツリーデータ構造(400)にノードを挿入するステップと、
    挿入した前記ノードに作成した前記シグネチャ(S)を入力するステップと、
    前記個別メモリオブジェクトに対するメタデータ(500)を、それが固有メモリオブジェクトであることを示す情報(510)と、前記個別メモリオブジェクトに対する固有メモリオブジェクト参照(530、U_PTR)とを用いて、生成するステップと、
    行なうように、さらに構成される、請求項22に記載のコンピュータメモリ圧縮装置。
  24. 前記アナライザユニット(214)および前記符号化ユニット(212)は、前記コンピュータメモリコンテンツ内の全てのメモリオブジェクトが処理された場合(600)、
    前記ツリーデータ構造(400)を横断して、前記ツリーデータ構造(400)の前記ノードによって表現される前記固有メモリオブジェクトの前記データ値の値頻度表を生成するステップと、
    生成された前記値頻度表を使用して、エントロピーベースの圧縮スキームによって各固有メモリオブジェクトを圧縮するステップと、
    をさらに行うように構成される、請求項23に記載のコンピュータメモリ圧縮装置。
  25. 前記アナライザユニット(214)および前記符号化ユニット(212)は、前記コンピュータメモリコンテンツ内の全てのメモリオブジェクトが処理された場合(600)、
    前記ツリーデータ構造(400)のノードによって表現される前記固有メモリオブジェクトの前記データ値を調べ、1つまたは複数のベース値を決定することによって、前記ツリーデータ構造(400)を横断するステップと、
    決定された1つまたは複数の前記ベース値を使用して、デルタ符号化ベース圧縮スキームによって各固有メモリオブジェクトを圧縮するステップと、
    をさらに行うように構成される、請求項23に記載のコンピュータメモリ圧縮装置。
  26. 前記データ値は、前記メモリオブジェクトよりも細かい粒度であり、前記メモリオブジェクトは、前記コンピュータメモリコンテンツよりも細かい粒度である、請求項19~25のいずれか一項に記載のコンピュータメモリ圧縮装置。
  27. 前記コンピュータメモリコンテンツはコンピュータメモリのページであり、前記メモリオブジェクトはメモリブロックであり、各メモリブロックは複数のデータ値を含む、請求項26に記載のコンピュータメモリ圧縮装置。
  28. デコンプレッサユニット(213;1110)をさらに備え、
    物理メモリページアドレス(PA)を有するメモリページ内のメモリブロックの読み取り要求を受信するステップと、
    ルックアップテーブル(1010)からの圧縮メモリページアドレス(CA)を決定するステップと、
    前記メモリブロックに対するメタデータを検索するステップ(1020)と、
    前記圧縮メモリページアドレス(CA)と検索された前記メタデータの前記固有メモリオブジェクト参照(530、U_PTR)からの圧縮メモリブロックアドレス(1040)を計算するステップと、
    計算された前記圧縮メモリブロックアドレス(1040)での圧縮メモリブロック(1105)を検索するステップと、
    前記メモリブロックに対して検索された前記メタデータからの圧縮のタイプを示す情報(520;1120、ENC)を使用して、検索された前記圧縮メモリブロック(1105)を解凍するステップと、
    を行うように構成される、請求項20に従属するときの請求項27に記載のコンピュータメモリ圧縮装置。
  29. 当初メモリ位置における固有メモリブロック(830)の更新を含むライトバック要求を受信するステップと、
    前記コンピュータメモリコンテンツの専用空きメモリ領域(840)内の新規メモリ位置(870)に更新する前に、前記固有メモリブロック(830)をコピーするステップと、
    前記固有メモリブロック(830)にリンクされた重複メモリブロック(810、820)の前記メタデータを更新して、その前記重複メモリオブジェクト参照(540、D_PTR)が前記専用空きメモリ領域(840)内の前記新規メモリ位置(870)にリダイレクトされるようにするステップと、
    前記ライトバック要求に従って、その当初メモリ位置(830)で前記固有メモリブロックを更新するステップと、
    をさらに行うように構成される、請求項21に従属するときの請求項27または28に記載のコンピュータメモリ圧縮装置。
  30. 前記専用空きメモリ領域(840)の開始アドレス(805)への参照(F_PTR)を含むメタデータを提供するステップと、
    前記専用空きメモリ領域(840)内の前記新規メモリ位置(870)への前記固有メモリブロック(830)をコピーした後に、新規開始アドレス(880)を反映するように、前記参照(F_PTR)を更新するステップと、
    をさらに行うように構成される、請求項29に記載のコンピュータメモリ圧縮装置。
  31. 当初メモリ位置における固有メモリブロック(830)の更新を含むライトバック要求を受信するステップと、
    重複排除メモリブロック(820)が固有メモリブロック(830)の重複であることを見つけるステップと、
    前記固有メモリブロック(830)の前記シグネチャ(S)を使用することによって、見つかった前記重複排除メモリブロック(820)を前記ツリーデータ構造(400)内で固有のものとしてプロモートするステップと、
    専用空きメモリ領域(840)内の新規メモリ位置(870)への前記ライトバック要求に従って、前記固有メモリブロック(830)の更新されたコンテンツを書き込むステップと、
    前記固有メモリブロック(830)の前記メタデータを更新して、その前記固有メモリオブジェクト参照(530、U_PTR)が前記専用空きメモリ領域(840)内の前記新規メモリ位置(870)にリダイレクトされるようにして、その一方で、その重複メモリオブジェクト参照(540、D_PTR)は除去されるようにするステップと、
    をさらに行うように構成される、請求項22および請求項27または28のいずれかに記載のコンピュータメモリ圧縮装置。
  32. 前記専用空きメモリ領域(840)の開始アドレス(805)への参照(F_PTR)を含むメタデータを提供するステップと、
    前記専用空きメモリ領域(840)の前記新規メモリ位置(870)への前記ライトバック要求に従って、前記固有メモリブロック(830)の更新された前記コンテンツの書き込み後に、新規開始アドレス(880)を反映するように前記参照(F_PTR)を更新するステップと、
    をさらに行うように構成される、請求項31に記載のコンピュータメモリ圧縮装置。
  33. 重複メモリブロック(920)の更新を含むライトバック要求を受信するステップと、
    更新された前記重複メモリブロックの前記コンテンツを、専用空きメモリ領域(940)内の新規固有メモリブロック(980)として格納するステップと、
    前記重複メモリブロック(920)に以前にリンクされた固有メモリブロック(910)の前記メタデータを更新して、前記固有メモリブロック(910)が、前記固有メモリブロック(910)と他の重複メモリブロック(930)との間のリンクを維持しつつ、前記重複メモリブロック(920)にリンクされなくなったことを反映するステップと、
    をさらに行うように構成される、請求項27~32のいずれか一項に記載のコンピュータメモリ圧縮装置。
  34. メモリページの圧縮率を経時的に監視するステップと、
    前記圧縮率が所与の基準を満たさない場合、請求項1~10のいずれか一項に記載のコンピュータメモリ圧縮方法の機能を実行することによって、前記メモリページの再圧縮を実行するステップと、
    をさらに行うように構成される、請求項32または33に記載のコンピュータメモリ圧縮装置。
  35. 請求項1~9のいずれか一項に記載のコンピュータメモリ圧縮方法の機能を実行することによって、圧縮率を改善するために、メモリページの再圧縮を定期的に実行するように、
    さらに構成される、請求項32~34のいずれか一項に記載のコンピュータメモリ圧縮装置。
  36. 前記符号化ユニット(212)が、
    エントロピーベースの圧縮と、
    ベースデルタ即圧縮と、
    のうちの1つを適用することで、データ値局所性を利用することによって圧縮するように構成される、請求項19~35のいずれか一項に記載のコンピュータメモリ圧縮装置。
  37. 1つまたは複数のプロセッサ(P、…、P)と、
    1つまたは複数のコンピュータメモリ(M~M、C1~C3)と、
    請求項19~36のいずれか一項に記載のコンピュータメモリ圧縮装置(205)と、
    を備える、コンピュータシステム(200)。
JP2021538111A 2019-01-11 2020-01-09 コンピュータメモリにおける重複および値冗長性を排除するためのシステム、方法、および装置 Active JP7571026B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE1950027A SE543186C2 (en) 2019-01-11 2019-01-11 Systems, methods and devices for eliminating duplicates and value redundancy in computer memories
SE1950027-1 2019-01-11
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 (2)

Publication Number Publication Date
JP2022516502A true JP2022516502A (ja) 2022-02-28
JP7571026B2 JP7571026B2 (ja) 2024-10-22

Family

ID=

Also Published As

Publication number Publication date
US20230076729A2 (en) 2023-03-09
WO2020145874A1 (en) 2020-07-16
EP3908938A1 (en) 2021-11-17
CA3124691A1 (en) 2020-07-16
EP3908938A4 (en) 2022-09-21
CN113366463A (zh) 2021-09-07
SE1950027A1 (en) 2020-07-12
KR20210113297A (ko) 2021-09-15
SE543186C2 (en) 2020-10-20
US20220100718A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
US11640256B2 (en) Methods and systems for object level de-duplication for data storage system
US10642522B2 (en) Method and system for in-line deduplication in a storage drive based on a non-collision hash
US7587401B2 (en) Methods and apparatus to compress datasets using proxies
US9880746B1 (en) Method to increase random I/O performance with low memory overheads
US10031675B1 (en) Method and system for tiering data
US9268783B1 (en) Preferential selection of candidates for delta compression
US10635359B2 (en) Managing cache compression in data storage systems
US9262434B1 (en) Preferential selection of candidates for delta compression
JP5423896B2 (ja) ストレージシステム
US10135462B1 (en) Deduplication using sub-chunk fingerprints
JP6320432B2 (ja) データ重複排除における、類似性探索に基づくダイジェスト検索
US9026740B1 (en) Prefetch data needed in the near future for delta compression
JP6608468B2 (ja) ストレージ装置及びその制御方法
CN113535670B (zh) 一种虚拟化资源镜像存储系统及其实现方法
JP2019506667A (ja) プロセッサ・グリッド内の分散データ重複排除
US20140351522A1 (en) Storage system with reduced hash key memory
US9116902B1 (en) Preferential selection of candidates for delta compression
CN110321079B (zh) 一种基于混合页面的磁盘缓存去重方法
EP3908938A1 (en) Systems, methods and devices for eliminating duplicates and value redundancy in computer memories
JP7571026B2 (ja) コンピュータメモリにおける重複および値冗長性を排除するためのシステム、方法、および装置
US12124420B2 (en) Systems, methods and devices for eliminating duplicates and value redundancy in computer memories
Agrawal et al. Clustered outband deduplication on primary data
Vikraman et al. A study on various data de-duplication systems
CN114115734B (en) Data deduplication method, device, equipment and storage medium
CN118159936A (zh) 顺序存储介质上的并行重复数据删除机制

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240116

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20240411

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240611

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240910