JP2018522457A - ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム - Google Patents

ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム Download PDF

Info

Publication number
JP2018522457A
JP2018522457A JP2017560651A JP2017560651A JP2018522457A JP 2018522457 A JP2018522457 A JP 2018522457A JP 2017560651 A JP2017560651 A JP 2017560651A JP 2017560651 A JP2017560651 A JP 2017560651A JP 2018522457 A JP2018522457 A JP 2018522457A
Authority
JP
Japan
Prior art keywords
data
compression
hybrid
block
decompression
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
JP2017560651A
Other languages
English (en)
Other versions
JP7010548B2 (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 JP2018522457A publication Critical patent/JP2018522457A/ja
Priority to JP2021185947A priority Critical patent/JP2022031735A/ja
Application granted granted Critical
Publication of JP7010548B2 publication Critical patent/JP7010548B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6088Selection strategies according to the data type
    • 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/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • 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
    • 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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3071Prediction
    • 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/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • H03M7/48Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • 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
    • 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
    • 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/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

方法、デバイス、およびシステムは、2つまたは複数の圧縮方法およびデバイスのうちから最適の圧縮方法およびデバイスを選択することによって、データ値のデータブロックの圧縮および解凍を向上させる。これらの方法およびデバイスは一緒に組み合わされ、前記圧縮方法およびデバイスは特定のデータ型のデータ値を効率的に圧縮する。前記最適の圧縮方法およびデバイスは、前記データブロック内のデータ型を予測することにより、主たる選択基準としてデータブロック中の支配的なデータ型を用いて選択される。
【選択図】図28

Description

関連出願の相互参照
本特許出願は、2015年5月21日出願のスウェーデン国特許出願第1550644−7号、名称「METHODS,DEVICES AND SYSTEMS FOR DATA COMPRESSION AND DECOMPRESSION」の優先権を主張し、その内容を参照により全体として本明細書に援用する。また、本特許出願は、2016年1月29日に出願のスウェーデン国特許出願第1650119−9号、名称「METHODS,DEVICES AND SYSTEMS FOR DECOMPRESSING DATA」の優先権を主張し、その内容を参照により全体として本明細書に援用する。
技術分野
本特許出願の開示は、一般に、例えば、コンピュータシステムのキャッシュ/メモリサブシステムおよび/またはデータ転送サブシステム、またはデータ通信システムにおけるデータ圧縮および解凍の分野に関する。
データ圧縮は、データのサイズを低減するために使われる定着した技法である。これは、メモリ容量を増やすために、コンピュータシステムのメモリサブシステム中に保存されるデータに適用される。また、この技法は、コンピュータシステム内の相異なるサブシステムの間でデータが転送される際に、あるいは、一般に、通信ネットワークを含むデータ通信システムの2点の間で転送が行われる際に使用される。
データ圧縮は、1)入力として未圧縮のデータを取り込み、データ値をそれぞれの符号語に置き換える(文献では、符号化、コード化、またはコードとも言われている)ことによって未圧縮データを圧縮データに変換する圧縮(符号化とも言う)、および、2)入力として圧縮データを取り込み、符号語をそれぞれのデータ値に置き換えることによって圧縮データを圧縮されてないものに変換する解凍(復号とも言う)の2つの基本的オペレーションを必要とする。データ圧縮は、解凍後の実際のデータ値が圧縮前の当初のものと正確に同じである(ロスレス)か、あるいは解凍後のデータ値が当初のものと異なっており、当初の値が復元できない(ロッシー)かによって、ロスレスまたはロッシーであり得る。圧縮および解凍は、それぞれの方法、デバイス、およびシステムを実現するソフトウェアもしくはハードウェア、またはソフトウェアとハードウェアとの組み合わせにおいて実装され得る。
図1には、コンピュータシステム100の一例が示されている。コンピュータシステム100は、例えば相互接続ネットワークなどの通信手段を使ってメモリ階層110に接続された、1つまたは複数の処理ユニットP1...Pnを含む。各処理ユニットは、プロセッサ(またはコア)を含み、CPU(Central Processing Unit(中央処理装置))、GPU(Graphics Processing Unit(グラフィックス処理ユニット))、または一般に、計算を行うブロックとすることができる。他方で、メモリ階層110はコンピュータシステム100のストレージサブシステムを構成し、1つまたは複数のレベルL1〜L3に編成することが可能なキャッシュメモリ120と、メモリ130(メインメモリとしても知られる)とを含む。メモリ130は補助的ストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、またはフラッシュメモリ)にも接続されてもよい。メモリ130は、高速メインメモリ(例えば、DDR)およびフラッシュメモリなど、複数のレベルに編成することができる。本例のキャッシュメモリ120は、3つのレベルを含み、L1およびL2はプライベートキャッシュであり、処理ユニットP1〜Pnの各々は専用のL1/L2キャッシュに接続され、L3は、全ての処理ユニットP1〜Pnの間で共有される。別の例では、当業者なら全てを認識しているように、種々のキャッシュ階層を実現することが可能であり、さらに多くの、さらに少ないキャッシュレベルで、もしくはキャッシュレベルなしでも、キャッシュをプライベートまたは共有に割り当てても割り当ててなくても、様々なメモリレベル、種々の数の処理ユニットとともに、一般には処理ユニットとメモリサブシステムとの間の種々の組み合わせで、実現することが可能である。
データ圧縮は、種々の手法でコンピュータシステムに適用することができる。図2は、図1の例示システム100に対するのと類似のコンピュータシステムの例200を示す。そこでは、データがメモリ、例えばかかるコンピュータシステムのメインメモリに圧縮される。これは、データが、メモリ中に保存される前に前述のようなそれぞれの圧縮オペレーションによって圧縮され、データがメモリを出て行く際に解凍されることを表す。
図3に示されたコンピュータシステムの別の例300では、キャッシュシステムのL3キャッシュにデータ圧縮を適用することができる。前の例と同様に、データがキャッシュに保存される前に圧縮が必要であり、データがキャッシュから(例えば、データが圧縮されていない他のキャッシュレベル(L2)またはメモリ330に向けて)出て行く前に解凍が必要である。別の例において、データは、キャッシュ階層の任意のレベルに圧縮して保存することが可能である。
また、データは、コンピュータシステム中の相異なるサブシステムの間で転送されるときにだけ圧縮されてもよい。図4に示されたコンピュータシステムの別の例400では、データは、L3キャッシュとメモリ430との間で、それぞれの通信手段を使って転送されるときに圧縮される。前の例と同様に、データが転送される前に圧縮され、相手方端で受信されたときに解凍されるように、通信手段の両端に圧縮部および解凍部が存在している必要がある。
コンピュータシステムの別の例500では、図5に示されるように、サブシステムの組み合わせにおいてデータ圧縮を適用することが可能である。この例では、データは、メモリ530中に保存されるときと、メモリ530とキャッシュ階層520との間で転送されるときとに圧縮される。このように、データがキャッシュ階層520からメモリ530に移動するとき、データはL3から転送される前にだけ圧縮が必要なようにしてもよい。あるいは、メモリ530を出てキャッシュ階層520に行く圧縮データは、メモリ530をキャッシュ階層520に接続する通信手段の他方の端に受信されたときにだけ解凍が必要なようにしてもよい。コンピュータシステム中の種々のサブシステムに圧縮を適用する組み合せに関しては、どのような例も可能であり、当業者によって実現ができよう。
また、通信ネットワーク内の2つの任意の点の間でデータの転送を行うことが可能である。図6は、2点の間の通信ネットワーク605を含むデータ通信システム600の一例を示す。この図ではデータはトランスミッタ610によって転送され、レシーバ620によって受信される。かかる例において、これらの点は、ネットワーク中の2つの仲介ノードとすることも、通信リンクの発信元および宛先のノードとすることも、またはこれらの場合の組み合わせとすることもできる。図7中の例示のシステム700について描かれているように、データ圧縮はかかるデータ通信システムへの適用が可能である。データがトランスミッタ710によって通信ネットワーク705上に送信される前に圧縮を適用することが必要である一方、レシーバ720によって受信された後に解凍を適用することが必要である。
データ圧縮を実現するための多種多様のアルゴリズム(スキーム)がある。データ圧縮アルゴリズムの1つのファミリに、統計的圧縮アルゴリズムがあり、このアルゴリズムは、データ依存性があり、データ値の統計的特性に基づいて可変長(可変幅とも言う)の符号を割り当てるので、エントロピーに近い圧縮効率を提供することが可能である。高頻度で出現するデータ値の符号化には短い符号語が、低頻度で出現するデータ値の符号化にはより長い符号語が用いられる。ハフマン符号化は、周知の統計的圧縮アルゴリズムである。
解凍を加速するために使われるハフマン符号化の周知の一バリエーションに、カノニカルハフマン符号化がある。これに基づけば、符号語は数列特性を有する、すなわち同じ長さの符号語は連続する整数である。
従来技術の中には、カノニカルハフマンベースの圧縮および解凍メカニズムの例が存在する。かかる圧縮および解凍メカニズムは、ハフマンベースの圧縮および解凍を実行するために前述の例において使用することが可能である。
例えばカノニカルハフマン符号化などのハフマン符号化を実装する、従来技術によるコンプレッサ900の一例が図9に示されている。これは未圧縮のブロックを入力として取り込み、該ブロックはデータ値のストリームであり、本開示全体を通して全般にv1、v2、...、vnで表される1つまたは複数のデータ値を含む。ストレージユニットまたは未圧縮のブロックからのデータ値の抽出器とすることができるユニット910は、可変長符号化ユニット920にデータ値を供給する。可変長符号化ユニット920は、符号テーブル(CT:Code Table)922および符号語(CW:codeword)セレクタ928を含む。CT922は、ルックアップテーブル(LUT:Look Up Table)として、または(任意の何らかのアソシアティビティを有する)コンピュータキャッシュメモリとして実装することができるテーブルであり、1つまたは複数のエントリを包含する。各エントリは、或る符号語CW925および或る符号語長(cL:codeword−length)927を使って圧縮が可能な値923を含む。統計的圧縮アルゴリズムによって使われる様々な符号語のセットは可変長なので、これらを、各エントリが固定サイズの幅を有するCT922(符号語925)中に保存する場合、これらにゼロ詰めをしなければならない。符号語長927は、可変長符号化の(例えば、ビットでの)実際の長さを保持する。CWセレクタ928は、実際のCWを識別するためにcLを用い、詰められたゼロを棄てる。次いで、符号化された値は残りの圧縮値と連結され、全体で圧縮ブロックを形成する。前述の圧縮ステップに沿った圧縮方法の例示的なフローチャートが図11に示されている。
従来技術によるデコンプレッサ1000の一例が図10に示されている。カノニカルハフマン解凍は2つのステップ、符号語検出および値の復元、に分割できる。これらステップの各々は、ユニット:(1)符号語検出ユニット(CDU:Codeword Detection Unit)1020、および(2)値復元ユニット(VRU:Value Retrieve Unit)1030によって実装される。CDU1020の狙いは、圧縮シーケンス(すなわち、圧縮されたデータ値の符号語のシーケンス)内の有効な符号語を見付けることである。CDU1020は、コンパレータ1022のセットと、優先エンコーダ1024とを含む。各コンパレータ1022a、b、cは、可能性のある各ビットシーケンスを既知の符号語と比較し、本例では、この符号語は、特定長に対する(符号生成のときの)最初に割り当てられたカノニカルハフマン符号語(FCW:First−assigned canonical Huffman codeword)である。別の実装において、最後に割り当てられたカノニカルハフマン符号語も使用可能であろうが、その場合、正確になされた比較と異なることがある。(例えば、FIFOまたはフリップフロップとして実装された)ストレージユニット1010中に保存可能であり、コンパレータの数とその中の一番幅広のコンパレータの最大幅を決める、比較されることになる前述のビットシーケンスの最大サイズは、符号の生成時に決められた有効ハフマン符号語の最大長(mCL)の如何による。また一方、この最大長は、かかる(例えば、ソフトウェアまたはハードウェアの)デコンプレッサの実装の選択に左右される設計、コンパイル、構成、またはランタイムでの特定の値に束縛され得る。コンパレータ1022からの出力は、マッチする符号語の長さ(図10では「マッチする長さ」と記されている)を出力する構造体1024のような優先エンコーダの中に挿入される。これに基づけば、検出された有効な符号語(マッチする符号語)が、ストレージユニット1010中の保存されていたビットシーケンスから抽出され、ビットシーケンスは、CDU1020が次の有効な符号語を判断できるように、「マッチする長さ」が定義するのと同じ位置分シフトされ、空白の部分には圧縮シーケンスの次のビットがロードされる。
他方で、値復元ユニット(VRU:Value Retrieve Unit)1030は、オフセットテーブル1034、減算器ユニット1036、および解凍ルックアップテーブル(DeLUT:Decompression Look Up Table)1038を含む。前のステップからの「マッチする長さ」が使われて、これも前のステップで判断されたマッチする符号語の演算値から減算せねば(1036)ならないオフセット値(オフセットテーブル1034中に保存されている)が判定され、DeLUT1038のアドレスが得られる。そこでは、検出された符号語に対応する当初のデータ値がそのアドレスから検索され得、解凍ブロック1040中に保持されている解凍値の残りに付加される。デコンプレッサのこのオペレーションは、(図10中で圧縮ブロックとして記された)圧縮保存された入力圧縮シーケンス中の全ての値が解凍データ値v1、v2、...、vnとして復元されるまで繰り返される。
前述の解凍ステップに沿った解凍方法の例示的なフローチャートが、図12中に示されている。
前述のコンプレッサおよびデコンプレッサは、迅速かつ効果的に、可変長のハフマン符号化でデータのブロックを圧縮し、可変長ハフマン符号化で圧縮されたデータのブロックを解凍することができる。また、デルタベース、パターンベースなどの他の圧縮および解凍アルゴリズムを実装するコンプレッサおよびデコンプレッサを含む他の圧縮スキームも使用可能である。
前述したような圧縮スキームには、不可避的に、圧縮および解凍に起因する待ち時間および複雑性が加わってくる。圧縮および解凍は、前述の例示のコンピュータシステムのキャッシュおよび/またはメモリサブシステム中に圧縮が適用されるとき、クリティカルメモリアクセスパスにある。また、圧縮および解凍は、コンピュータシステムまたは通信ネットワーク中のデータ転送サブシステムに圧縮および解凍が適用されるとき、転送待ち時間を増加させる可能性がある。
データは、データ値を形成するデータ型の如何によって特定のサイズのチャンクでアクセスされ処理される。特定のデータ型のデータ値は、しばしば特定の値のローカリティ特性を示す。従来技術の圧縮スキームは、圧縮および解凍処理を単純化し圧縮および解凍の待ち時間を低く保つために、どのようなデータ型が値のローカリティの根本要因であるかについて先験的な仮定を行うことによって、上記を利用しようと試みる。
値のローカリティは、a)時間的な値のローカリティ、およびb)空間的な(またはクラスタ化された)値のローカリティの2つの主な概念を含む。時間的な値のローカリティは、同じ値がしばしば出現することを示す。統計的圧縮アルゴリズムは、この値のローカリティの概念を利用した圧縮アルゴリズムの例である。他方、空間的な値のローカリティは、値が数字的に類似であることを示す。かかる値はベース値との差で値を符号化するという意味なので、デルタ符号化は、空間的値のローカリティを利用する圧縮アルゴリズムの例である。また、時間的値のローカリティは、i)例えば、コンピュータシステム中のキャッシュサブシステム、および/またはメモリサブシステム、および/またはデータ転送サブシステム中で、データブロックが、図13および図14の左側に示されるように、全部がゼロ値のデータ値を包含する(ヌル(null)ブロックデータ型と言われる)、ゼロ値ローカリティと、ii)例えば、データブロック中の値が幅狭の符号無し整数値で、0〜255の範囲に属するが32ビットで表現する必要があるとき、それらの全てがそれらの最上位の24ビットに0のビットを有する(幅狭値データ型と言われる)、幅狭値ローカリティと、の特定の場合を含む。幅狭値ローカリティは、有意ベースの圧縮アルゴリズム、またはパターンベースの圧縮アルゴリズムによって利用される。
統計的圧縮スキームは、合理的なデフォルトの方策と見なしてよい。但し、これらは、必ずしも最高の圧縮性をもたらさない。例えば、中程度に共通性のある整数は、統計的圧縮スキームを使うと、最も共通性のある整数よりも長い符号語によって置き換えられる。また前記整数が空間的にも近い場合、代わりにデルタ符号化を使って、それらをさらに高密度にコード化できる可能性があり得る。データブロック中のデータ値には相異なるデータ型があり、および/または相異なる値のローカリティ特性を示すので、様々なデータ型に対し常に他より良く実行できる圧縮スキームはなく、圧縮性におけるロバストネスを保証することはできない。本発明者らは、データ圧縮および解凍の技術分野には改良の余地があると認識している。
データ圧縮および解凍の技術分野に改良を提供することが本発明の目的である。
本開示は、一般に、例えば、コンピュータシステム、および/またはデータ通信システム中のキャッシュサブシステム、および/またはメモリサブシステム、および/またはデータ転送サブシステムに圧縮が適用される際に、データ値のデータブロックを圧縮し、圧縮されたデータ値のデータブロックを解凍するための方法、デバイス、およびシステムを開示する。前記サブシステム中でデータを効果的に圧縮するための、様々な方法、デバイス、およびシステムがあり、これらは、その設計を単純化し圧縮および解凍待ち時間を低減するために、値のローカリティの根本要因として特定のデータ型について設計時仮定を行っている。しかしながら、データブロックは、複数のデータ型の可能性のある複数の値を含んでいるので、1つの圧縮方法が常にベストではなく、ロバストな圧縮性は保証できない。方法、デバイス、およびシステムは、2つまたは複数の圧縮方法およびデバイスを一緒に組み合わせることによって、データ値のデータブロックの圧縮および解凍を向上させ、前記圧縮方法およびデバイスは、特定のデータ型のデータ値を効果的に圧縮する。本発明の開示の第一概念によれば、ハイブリッドデータ圧縮方法、デバイス、およびシステムは、複数の圧縮方法およびデバイスを組み合わせており、ハイブリッドデータ圧縮方法、デバイス、およびシステムは、主たる選択基準として入力データブロックの支配的なデータ型を用いて、最適の圧縮方法およびデバイスを選択し、データ型は、予測方法およびデバイスによって予測される。本発明の開示の第二発明概念によれば、ハイブリッドデータ圧縮方法、デバイス、およびシステムは、2つの圧縮方法とデバイスとを組み合せ、その一方は、例えば可変長符号化を使ってデータブロックを効果的に圧縮し、他方は、複数の同じ共通値を含むデータブロックを1ビットだけで圧縮する。本発明の開示の第三発明概念によれば、高精度の予測方法(およびデバイス)が提示され、前記予測方法(およびデバイス)は、主たる選択基準として前記ブロックの予測される支配的なデータ型を用いて、入力ブロックを圧縮するための最適の圧縮方法(およびデバイス)をランタイムで予測する。前記予測方法(およびデバイス)は2つのフェーズを含み、第一フェーズでは、本方法は、データブロックを複数のセグメントに分割し、各セグメントに対し、そのデータ型を予測するために特定のビット部分を検査し、第二フェーズでは、第一フェーズの結果がある順序で評価され、最適の圧縮方法(およびデバイス)が判定される。第四発明概念によれば、予測された圧縮方法(およびデバイス)は、オラクル選択を参照として使って予測が不正確なことが判明した場合、ランタイムで調整できる。
本発明の第一態様は、未圧縮データブロックを圧縮データブロックに圧縮するためのハイブリッドデータ圧縮デバイスであって、この未圧縮データブロックは1つまたは複数のデータ型の1つまたは複数のデータ値を含み、本ハイブリッドデータ圧縮デバイスは、各コンプレッサがそれぞれのデータ圧縮スキーム用に構成された複数のデータコンプレッサと、未圧縮のデータブロックのデータ値のデータ型を予測し、主たる基準として予測されたデータ型のうちの支配的なデータ型を用いて、前記複数のデータコンプレッサの中から推定最適データコンプレッサを選択するように構成された予測器メカニズムと、を含み、本ハイブリッドデータ圧縮デバイスは、選択された推定最適データコンプレッサに未圧縮のデータブロックの全体を圧縮させることによって、圧縮データブロックを生成するように構成される。
本発明の第二態様は、未圧縮データブロックを圧縮データブロックに圧縮するためのハイブリッドデータ圧縮方法であって、未圧縮データブロックは1つまたは複数のデータ型の1つまたは複数のデータ値を含み、本ハイブリッドデータ圧縮方法は、未圧縮データブロックのデータ値のデータ型を予測するステップと、主たる基準として予測されたデータ型のうちの支配的なデータ型を用いて、複数のデータ圧縮スキームの中から、推定最適データ圧縮スキームを選択するステップと、圧縮データブロックを生成するために、選択された推定最適データ圧縮スキームによって未圧縮データブロックの全体を圧縮するステップとを含む。
本発明の第三態様は、圧縮されたデータブロックを、1つまたは複数のデータ型の1つまたは複数のデータ値を含む解凍データブロックに解凍するためのハイブリッドデータ解凍デバイスであって、本ハイブリッドデータ解凍デバイスは、各デコンプレッサがそれぞれのデータ解凍スキーム用に構成された複数のデータデコンプレッサを含み、本ハイブリッドデータ解凍デバイスは、前記複数のデータデコンプレッサの間で選択された推定最適データデコンプレッサに圧縮データブロックの全体を解凍させることによって、解凍データブロックを生成するように構成される。
本発明の第四態様は、圧縮データブロックを、1つまたは複数のデータ型の1つまたは複数のデータ値を含む解凍データブロックに解凍するためのハイブリッドデータ解凍方法であって、本ハイブリッドデータ解凍方法は、前記複数のデータ解凍スキームの中から推定最適データ解凍スキームを選択するステップと、解凍データブロックを生成するために、選択された推定最適データ解凍スキームによって、圧縮データブロックの全体を解凍するステップとを含む。
本発明の第五態様は、処理デバイスによってロードされ実行されると上記の第二態様による方法を遂行させるコード命令を含む、コンピュータプログラム製品である。
本発明の第六態様は、上記の第二態様による方法を遂行するように構成されたロジック回路を含むデバイスである。
本発明の第七態様は、処理デバイスによってロードされ実行されると上記の第四態様による方法を遂行させるコード命令を含む、コンピュータプログラム製品である。
本発明の第八態様は、上記の第四態様による方法を遂行するように構成されたロジック回路を含むデバイスである。
本発明の第九態様は、1つ以上のメモリと、上記の第一態様によるデータ圧縮デバイスと、上記の第三態様によるデータ解凍デバイスとを含むシステムである。
開示される実施形態の他の態様、目的、特徴、および利点は、以下の詳細な開示、添付の従属請求項、および図面から明らかとなろう。一般に、特許請求範囲中の全ての用語は、本明細書に明示で別に定義されていなければ、当該技術分野におけるそれらの通常の意味に従って解釈するものとする。
「a/an(或る)/the(前記)[要素、デバイス、コンポーネント、手段、ステップなど]」の言及は、明示で別に記載されていなければ、要素、デバイス、コンポーネント、手段、ステップなどの少なくとも1つのインスタンスを言うものとオープンに解釈するものとする。本明細書で開示されるどの方法のステップも、明示で記載されている場合を除き、開示された通りに正確な順序で実行される必要ない。
背景技術および発明的態様の実施形態からの例は、以下の図面に関連して説明される。
それぞれが3レベルのキャッシュ階層およびメインメモリに接続されたn個の処理コアを含むコンピュータシステムのブロック図を示す。 メインメモリが圧縮された形でデータを保存している、図1のブロック図を示す。 L3キャッシュが圧縮された形でデータを保存している、図1のブロック図を示す。他のキャッシュレベルでも圧縮された形でデータを格納することが可能である。 例えばデータがメモリとキャッシュ階層との間で転送される際に、通信手段の中でデータが圧縮されている、図1のブロック図を示す。 圧縮が、メインメモリおよび該メモリをキャッシュ階層に接続しているリンクに適用可能な、図1のブロック図を示す。一般に、圧縮は、キャッシュ階層、転送手段(例えば、メモリをキャッシュサブシステムに接続しているリンク)、およびメインメモリのような部品の任意の組み合せに適用することが可能である。 通信ネットワーク中の2点を接続するデータ送信リンクのブロック図を示す。これらの点は、ネットワーク中の2つの仲介ノード、通信リンクの発信元および宛先ノード、またはこれら場合の組み合せであってよい。 転送されるデータが圧縮された形であり、データがトランスミッタ中で圧縮され、レシーバ中で解凍される必要があり得る、図6のデータ送信リンクのブロック図を示す。 左側にデータ値の未圧縮のブロックを、右側に、同じブロックのハフマン符号化を用いて生成された可変長符号化を使って圧縮された同じブロックを示す。未圧縮ブロックの全てのデータ値が、それぞれのハフマン符号語に置き換えられている。 図8に示されたようなハフマン符号化を用いてブロックを圧縮(または符号化)するために使われるコンプレッサ(圧縮器)を示す。 カノニカルハフマン符号化を用いて圧縮されたブロックを復号(または解凍)するのに使われるデコンプレッサ(解凍器)を示す。 可変長符号化(例えば、ハフマン)を用いてブロックを圧縮するための圧縮方法の例示的なフローチャートを示す。 可変長符号化(例えば、カノニカルハフマン)を用いて圧縮された圧縮ブロックの解凍するための解凍方法の例示的なフローチャートを示す。 左側に、ゼロデータ値だけを包含するブロックであるヌル未圧縮ブロックを、右側に、各ゼロ値が可能最小な幅(1ビット)の符号語によって置き換えられると仮定する可変長符号化を用いる、図9のコンプレッサによって圧縮された同じブロックを示す。 左側に、ゼロデータ値だけを包含するブロックであるヌル未圧縮ブロックを、右側に、1ビット符号化を用いて圧縮された同じブロックを示す。 左側に、図8中のものと同じブロックである未圧縮ブロックを、右側に、1ビットのインジケータ含む別の手法で圧縮された形の同じブロックを示し、このインジケータは、圧縮ブロックがヌルであるかどうか、および可変長符号化ビットシーケンスを表す。 図9のハフマンベースの圧縮デバイスと、ヌルブロック圧縮デバイスとを含む、図14(圧縮ヌルブロック)および図15(ビットインジケータおよび可変長符号語を含む圧縮ブロック)の未圧縮ブロックを圧縮できるハイブリッドデータ圧縮デバイスを示す。本ハイブリッドデータ圧縮デバイスは、ヌルブロック圧縮デバイスを使って全ブロックデータ値がゼロ値かどうかをチェックし、それを1ビットの符号化によって図14のように圧縮し、それ以外の場合は、それをハフマンベースの圧縮デバイスによって図15のように圧縮する。 図10のデータ解凍デバイスと、ヌルブロック解凍デバイスと、ブロックの第一ビットが1であるかどうかをチェックすることによってブロックがヌルブロックとして圧縮されているかどうかを検知することが可能な追加ロジック(図17aの底部にある)とを含む、図14(圧縮ヌルブロック)および図15(ビットインジケータおよび可変長符号語を含む圧縮ブロック)の圧縮ブロックを解凍できるハイブリッドデータ解凍デバイスを示す。 図10のデータ解凍デバイスと、ヌルブロック解凍デバイスの別の実施形態と、ブロックの第一ビットが1であるかどうかをチェックすることによってブロックがヌルブロックとして圧縮されているかどうかを検知することが可能な追加ロジック(図17bの底部にある)とを含む、図14(圧縮ヌルブロック)および図15(ビットインジケータおよび可変長符号語を含む圧縮ブロック)の圧縮ブロックを解凍できるハイブリッドデータ解凍デバイスを示す。 ハイブリッドデータ圧縮システムの1つの実施形態を示し、該システムは、コンピュータシステムまたは通信ネットワーク中の送信リンクのキャッシュ/メモリ/リンクサブシステムの中に複数の圧縮および解凍デバイスを組み込み、このシステムは、HyCompと言われ、HyComp圧縮デバイス、HyComp解凍デバイス、および目標先キャッシュ/メモリ/リンクの例示のサブシステムを含み、本HyComp圧縮デバイスは、圧縮デバイスのセット、および所与のデータ値のブロックに対する最適の圧縮デバイスを予測するための予測器を含む。 予測方法の例示的なフローチャートを示し、このチャートは、例示のハイブリッドデータ圧縮方法、デバイス、およびシステムによる使用が可能で、I)入力データブロックの1つまたは複数の特定の部分の検査、およびII)複数の方法の間で最適な圧縮方法の判定、の2つのフェーズを含む。 データブロック内の整数データ型を特徴識別することを目的とした、図19の予測方法の検査フェーズの例示の実施形態を示す。 データブロック内のポインタデータ型を特徴識別することを目的とした、図19の予測方法の検査フェーズの例示の実施形態を示す。 データブロック内の浮動小数点データ型を特徴識別することを目的とした、図19の予測方法の検査フェーズの例示の実施形態を示す。 データブロックを、ヌルブロック、すなわちゼロ値を含むブロックとして特徴識別することを目的とした、図19の予測方法の検査フェーズの例示の実施形態を示す。 データブロックを、負のヌルブロック、すなわち負符号のゼロ値を含むブロックとして、特徴識別することを目的とした、図19の予測方法の検査フェーズの例示の実施形態を示す。 図19の予測方法のフェーズIを実装するブロック検査デバイス、および図19の予測方法のフェーズIIを実装する判定デバイスを含む、図19の予測方法の実装の例示の実施形態を示し、判定デバイスは、最適の圧縮デバイスの判定を導出するためのコンパレータおよび優先エンコーダを含む。 コンピュータシステムの最終レベルのキャッシュサブシステムの中に組み込まれる、図18のシステムと類似のハイブリッド圧縮システムの例示の実施形態を示す。 ハイブリッドデータ圧縮システムが最終レベルのキャッシュに組み込まれる際の、タグストアおよびデータストアを含む、キャッシュ編成の例示の実施形態を示す。 所定の時間ウィンドウの間、予測された圧縮方法と、追跡された複数の支配的なデータ型に対して(オラクルセレクタによって生成された)理想的に選択された圧縮方法と、を比較することによって、予測方法の正確さを追跡する方法の例示的なフローチャートを示す。前記時間ウィンドウの後、本方法は、当該時点からそれ以降に向け、理想的選択に基づいて予測された圧縮方法を調整すべきかどうかを判定するために、前記正確さを特定の閾値と比較する。 本発明による、一般的ハイブリッドデータ圧縮方法示す概略的フローチャートである。 本発明による、一般的ハイブリッドデータ解凍方法示す概略的フローチャートである。 リンクサブシステムの例示の実施形態を示し、このサブシステムでは、本明細書に記載のハイブリッドデータ圧縮方法、デバイス、およびシステムが適用でき、この中では、リンクの一方端が発信元(トランスミッタ)としての機能を果たし、リンクの他方端が宛先(レシーバ)としての機能を果たす。 本発明による、ハイブリッドデータ圧縮デバイスおよびハイブリッドデータ解凍デバイスを含む一般的なシステムを示す。
本開示は、コンピュータシステム、および/またはデータ通信システム中のキャッシュサブシステム、および/またはメモリサブシステム、および/またはデータ転送サブシステムに圧縮が適用される際に、データ値の1つまたは複数のデータブロックを圧縮し、データ値の1つまたは複数の圧縮データブロックを解凍するためのハイブリッドデータ圧縮方法、デバイス、およびシステムを開示する。各前記データブロックは、任意のサイズであってよく、1つまたは複数の特定のデータ型である1つまたは複数のデータ値を含む。本明細書中で開示する方法、デバイス、およびシステムは、主たる基準として前記データブロック中で支配的なデータ型を用いて、2つまたは複数の圧縮スキームの中から推定最適なデータ圧縮スキームを選択し、前記データブロックに前記スキームを適用し、前記データブロックは、前記方法、デバイス、およびシステムによって開示される予測器を使って、前記ブロック内のデータ値のデータ型を予測することによって、前記支配的なデータ型の特徴識別される。
データブロックは任意のサイズであってよく、1つまたは複数のデータ型である1つまたは複数のデータ値を含む。図1に示されたようなコンピュータシステムの実施形態において、データ値のブロックは、あるいは、データのブロックがキャッシュ階層に保存されているときは、1)キャッシュライン、キャッシュセット、キャッシュセクタ、または類似に称され、データのブロックがメモリに保存されているときまたはかかるコンピュータシステムの通信手段中に転送されるときは、2)キャッシュライン、メモリページ、メモリセクタ、または類似に称されることがある。また一方、図6に示されたような通信ネットワーク内の送信リンクの実施形態では、データのブロックは、パケット、フリット、ペイロード、ヘッダ、または類似に称されることもあり、これらのより小さな部分であってもよい。
前記データブロック中で遭遇し得る、あり得る複数の前記データ型は、整数、ポインタ、浮動小数点数、文字、ストリング、およびブール値などの標準型を含む。また、これらあり得る複数の前記データ型は、非標準型も含むが、本明細書の背景技術に記載したように、それらは前記標準データ型の特殊なケースであり、コンピュータシステム、および/または通信ネットワーク中のキャッシュサブシステム、および/または、メモリサブシステム、および/またはデータ転送サブシステムにおいてはごく普通のものである。かかる非標準型の一例にヌルブロックデータ型がある。また、これら例示のデータ型に加えまたは換えて、以下に限らないが、コード命令、および特定のフォーマットもしくは規格(例えば、ビデオ、オーディオ)に沿ったデータ型を含め、他のデータ型も可能である。
本開示のここから以降は、本発明の態様による、データ圧縮デバイスおよびデータ解凍デバイスの特定の実施形態および関連する方法の説明である。この説明は、図13〜図27、および図30への具体的な参照をしながら行うこととする。その際、本開示は、図13〜図27、および図30に示される特定の実施形態に亘って一般化された一般的発明的態様を提示することになる。これらの一般的な発明的態様が、図28、図29、および図31へのいくつかの参照によって説明されることになる。
最初に、例示するハイブリッドデータ圧縮方法(またはデバイス)は、ハフマンベースの統計的圧縮スキーム、およびヌルブロック圧縮スキームの2つの圧縮スキームを含むと仮定する。ハフマンベースの統計的圧縮スキームは、高い時間的な値のローカリティを示す何らかの型である値を含むデータブロックを効果的に圧縮することができる。かかる型の一例に整数がある。図8は、左側に8つのデータ値を含む前記ブロックの例を示し、一方、図8の右側には、例示のハフマン符号化を仮定したハフマンベースの圧縮スキームを使って圧縮された同じブロックが表されている。他方で、図13は、左側に未圧縮のヌルデータブロックを示し、このデータブロックはゼロ値だけを含むブロックである。ハフマンベースの圧縮スキームはかかるブロックも圧縮できる。ゼロ値が可能最小なハフマン符号語(すなわち、1ビット)によって表現されることを仮定すれば、ハフマン符号化などの可変長符号化は、1符号語によって最善でも一データ値を置き換えることができるだけであり、最大圧縮率に拘束されているので、圧縮ヌルブロックは、図13の右側に示されるように8ビットを含む。他方、ヌルブロック圧縮スキームは、図14の右側に示されるように、1ビットだけによるゼロデータブロックを含むことが可能である。但し、ヌルブロック圧縮スキームは、ヌルブロック以外のブロックを圧縮することはできない。したがって、ハフマンベースの統計的圧縮スキームとヌルブロック圧縮スキームとを含むハイブリッドデータ圧縮方法は、支配的型がヌルブロックかまたは他の型のどちらであるかに基づいて、これら2つの間で最適のスキームを選択することによって最大の圧縮性を提供することができる。前記ハイブリッドデータ圧縮方法の予測器は、入力データブロックの全ての値でゼロ値が支配的であるかどうかを識別することができなければならず、それによって、データブロックはヌルブロックとして特徴識別されてヌルブロック圧縮スキームによって圧縮され、それ以外の場合は、入力データブロックはハフマンベースの圧縮スキームによって圧縮される。また、入力データブロックが圧縮できないまたは圧縮される代わりに拡張されることもあり得、この場合、未圧縮のまま留まるように選択することが可能である。
前記例示のハイブリッドデータ圧縮方法のデータ圧縮デバイスの実施形態が、図16に描かれている。該デバイスは、入力未圧縮データブロック1605からのデータ値のストレージユニットまたは抽出器とすることができるユニット1610と、図9の可変長符号化ユニット920と類似のハフマンベースの統計的圧縮スキームの第二データコンプレッサ1620と、第一データコンプレッサ(ヌルブロックコンプレッサ)1630とを含む。ヌルブロックコンプレッサ1630は、コンパレータ1634a、b、cおよびロジック1638を使って、入力未圧縮データブロック1605のデータ値が全てゼロ値かどうかをチェックする。これが真ならば当該1ビットの出力は「1」であり、そうでなければ「0」である。また、この例示のハイブリッドデータ圧縮方法の実施形態に対して、ヌルブロックコンプレッサは予測器とまったく同様に、データブロック全体がゼロデータ値を含むかどうか識別することが必要なので、このコンプレッサは、各受信データブロックの支配的型の予測器の代わりとなる。ヌルブロックコンプレッサ1630の出力が「1」の場合、予測の結果として入力未圧縮データブロック1605は、ヌルブロックとして分類され、1ビットで圧縮される。それ以外の場合は、当該ブロックはハフマンベースのコンプレッサ1620によって圧縮可能なブロックとして分類され、圧縮されたブロックは、「0」のビット(非ヌル圧縮ブロックであることを示す)が先行する可変長符号化(ハフマンベースのコンプレッサ1620からの出力)を含む。前記圧縮データブロック1618の例示の実施形態が、図15の右手側に描かれている。ブロックの型の特徴識別を使って、本ハイブリッドデータ圧縮方法のコンプレッサの実施形態の出力に対する適切な圧縮ブロックの(セレクタ1640による)選択が制御される。当業者によって、このコンプレッサの代わりの他の実装を実現することもできよう。
前記の例示のハイブリッドデータ圧縮方法のデータ解凍デバイスの実施形態が、図17aに示されている。これは、図10のデコンプレッサと類似のハフマンベースの第二データデコンプレッサ1710と、第一データデコンプレッサ(ヌルブロックデコンプレッサ)1720と、追加ロジックとを含み、前記追加ロジックは、レジスタ(例えばフリップフロップ)1730と、コンパレータ1740と、解凍データブロック1795に対するストレージユニット1750とを含む。例示のハイブリッドデータ圧縮方法のデータ解凍デバイスは、入力圧縮ブロックが圧縮ヌルブロックかどうかをチェックするために、コンパレータ1740を使って、入力圧縮データブロック1705の第一ビット(この第一ビットはレジスタ1730に保持されている)と「1」とを比較する。もしそうなら、解凍ブロック1750のデータ値は、ヌルブロックデコンプレッサ1720を使って値0に初期化され、該デコンプレッサは、前記比較の出力により制御され、値0を選択するセレクタをさらに含む。他方、レジスタ1730が、入力圧縮ブロックが非ヌル圧縮ブロックであることを示すビット「0」を保存している場合、本明細書の背景技術で述べたように、ハフマンベースのデコンプレッサ1710が前記入力圧縮データブロック1705を解凍する。
前記例示のハイブリッドデータ圧縮方法のデータ解凍デバイスの別の実施形態が図17bに示され、これはヌルブロックデコンプレッサ1720のより単純なバージョンを包含する。解凍データブロック1795は、フリップフロップのアレイなどのストレージユニット1750中に保持され、このユニットは、該ストレージユニット1750の入力リセット信号が「1」にセットされると、値0にリセットすることができる(すなわち、ヌルブロックデコンプレッサ)。このリセット信号は、コンパレータ1740の出力端と接続されており、該出力端は、入力圧縮データブロック1705の第一ビットが、圧縮ヌルブロックと考えられる「1」である場合、実際に「1」を出力する。当業者によって、このデータ解凍デバイスの代わりの他の実装を実現することもできよう。
本データ解凍デバイス、および前記ハイブリッドデータ圧縮方法のデータ解凍デバイスの別の実施形態も、可変長ハフマン圧縮スキームの代わりに他のロスレス圧縮スキームを使って当業者により実現することができよう。さらに、ヌルブロック圧縮スキームと類似であるが、全ブロックに亘っての再現値が0値ではなく代わりの特定の共通値である別の圧縮スキームを含む、前記ハイブリッドデータ圧縮方法の別の実施形態も、当業者によって実現が可能であろう。
前述の実施形態は、2つの圧縮スキームだけを包含し、ヌルブロックと他の型のブロックとの間だけを区別する、単純化されたハイブリッドデータ圧縮方法である。しかしながら、実行されるアプリケーションの如何により、様々な型のデータが、コンピュータシステムのキャッシュ/メモリサブシステム中でアクセスされ、コンピュータシステム内で転送され、転送されるデータセットの領域如何によって、データ通信システム中で様々な型のデータが転送される。
図18のブロック図は、ハイブリッドデータ圧縮システム1800の或る実施形態を表し、該システムは、2つ以上の圧縮スキームを、コンピュータシステムのキャッシュ/メモリ/リンクサブシステム、またはデータ通信システム中の送信リンクの中に組み込み、これはHyCompと言われる。HyCompシステム1800は、データ圧縮デバイス(HyCompコンプレッサ)1810、データ解凍デバイス(HyCompデコンプレッサ)1830、および目標先キャッシュ/メモリ/リンクの例示のサブシステム1820を含む。HyCompが、キャッシュ/メモリサブシステムに組み込まれるとき、HyCompコンプレッサおよびHyCompデコンプレッサの両方が前記サブシステムに接続される。他方、HyCompが、(コンピュータシステムもしくはデータ通信システム中の)リンクサブシステムに組み込まれるとき、HyCompコンプレッサがトランスミッタの中に、HyCompデコンプレッサがレシーバの中に組み込まれる。リンクの各端が、トランスミッタおよびレシーバの両方を含む場合、HyCompコンプレッサおよびデコンプレッサの両方が各端に組み込まれる。
HyCompコンプレッサ1810は、目標先サブシステム(キャッシュ/メモリ/リンク)に挿入された未圧縮データブロック1805を、予測器1812でデータ型予測を行うことによって圧縮する。予測器1812は、主たる基準として前記データブロック1805内で予測された支配的なデータ型を用いて、複数のデータ圧縮スキーム1814−1、1814−2、1814−3、1814−4(データコンプレッサ1814)の間で最善の圧縮性を提供すると予期されるものを選択して前記データブロック1805を圧縮する。次いで、圧縮データブロック1818が、目標先サブシステム1820のデータ部1828中に挿入され、一方、選択されたデータ圧縮スキームは、メタデータとして、目標先サブシステム1820のメタデータ部1824中に記録される1816。一実施形態において、このメタデータは、実際の圧縮データとは別に保存または送信することができ、別の実施形態では、メタデータは圧縮データに連結することができる。対照的に、HyCompデコンプレッサ1830は、単に、メタデータ1824として格納されまたは送信された記録された選択圧縮スキームに基づいて、それぞれの複数のデータデコンプレッサ1835の複数のデータ解凍スキーム1835−1、1835−2、1835−3、1835−4から1つを選択することによって、圧縮データブロック1834を解凍する。しかして、HyCompシステム1800は、単一の圧縮スキームに比べて、予測に起因して圧縮の待ち時間が延長されることがあるが、但し、解凍は、単一の圧縮スキームを使うのと同じくらいの速さとなろう。このことは、目標先サブシステムが例えばキャッシュ/メモリの場合、圧縮よりも特に解凍がクリティカルメモリアクセスパスを用いるので、重要である。
HyCompシステムの前記例示の実施形態1800において、具体的な圧縮スキーム(図18中の「S」、「N」、「D」、および「FP」)が、これらは特定の共通のデータ型のデータを効率的に圧縮するので選択される。この実施形態で検討されるこれらのデータ型は、整数、ポインタ、64ビット高精度浮動小数点数、およびヌルブロック非標準データ型である。前記データ型と圧縮スキームとの関連は次の通りである。
・整数:整数は、統計的圧縮スキーム(図18では「S」と表示されている)に関連付けられている。これは、かかるスキームが、可変長符号化を用いることにより、他のスキームよりも高頻度で使われる整数に、より高密度の符号を割り当てることによる。
・ポインタ:ポインタは、デルタ圧縮スキーム(図18では「D」と表示されている)に関連付けられている。これは、ポインタが、通常、空間的な値のローカリティ、すなわち値が、ベース値へのデルタとして効率的に符号化できる少量の差のある値を表すことによる。
・浮動小数点数:浮動小数点数は、浮動小数点データを効果的に圧縮するため特殊化された特定の圧縮スキーム(図18では「FP」と表示されている)に関連付けられている。FP圧縮方法の一例が、本特許出願と同時に出願された特許出願METHODS, DEVICES AND SYSTEMS FOR SEMANTIC−VALUE DATA COMPRESSION AND DECOMPRESSIONに開示されており、同じ出願人および発明者を共有し、上記出願の内容は、参照によりその全体として本明細書に援用され、これは、提示される値のローカリティを増大するため、仮数を2つまたは複数のサブフィールドさらに分割した後、分離された各浮動小数点数の意味的に重要なデータ値を符号化(圧縮)する。
・ヌル(null)ブロック:ヌルブロックは、前記ブロックを単一ビットだけで符号化するヌルブロック圧縮スキーム(図18では「N」と表示されている)に関連付けられている。ヌルブロックのバリエーションは一般的であり、ブロックが負符号ゼロ浮動小数点値を含む場合もこれに含まれる。発明者らはかかるブロックを負のヌルブロックと称する。
データブロックは、様々なデータ型のデータ値を含み、各データ値を、そのデータ型に基づいて特定の圧縮スキームで圧縮することによって、最適の圧縮性が得られるであろう。しかしながら、これは、後での解凍のため選択された圧縮スキームを「知る」ために、メタデータの量をかなり増大することになるであろうし、これは、1つのブロックの解凍に対し、組み合わされた種々のスキームが必要になるので、解凍処理を複雑化し減速することにもなろう。本開示で開示するハイブリッドデータ圧縮方法、デバイス、およびシステムは、未圧縮データブロック全体に一圧縮スキームを適用する。適切な圧縮スキームの選択は、図18に示されるHyCompコンプレッサ1810の予測器1812のような予測メカニズムによって、主たる基準として前記未圧縮データブロックのデータ値の支配的なデータ型を用いて行われる。
図18のHyCompシステムの前記予測器1812は、予測の方法を実装している。かかる予測方法の或る実施形態は、図19中の例示的なフローチャートによっても示される2つのフェーズを含む。
・フェーズI(検査):未圧縮データブロックはセグメントに分割される。各セグメントの特定のビット位置(検査部分−IP(Inspection Portion)と言う)が、全ての前記セグメントについてそのセグメントのデータ型を推測するために検査され、前記ブロック内の各予測データ型の出現をカウントする。このセグメントは、データ値と同じ粒度を持つように選択できるが、但し、データブロックは種々の粒度の値(大方はデータ型の如何による)を含むので、フェーズIは同じ粒度のデータ(例えば、64ビットのセグメント)を処理することにより単純化することができる。
・フェーズII(判定):フェーズIからの個別のセグメントの型特徴識別に基づいて、主として支配的なデータ型に基づいて、ブロックに対する最適の圧縮スキームが選択される。選択された圧縮スキームが、前記ブロックの全セグメントに適用される。
図18に示されるような、コンピュータシステムのキャッシュ/メモリ/リンクサブシステム中で適用されるHyCompシステムの実施形態によって使用される前記予測方法においては、データブロックは64バイト(すなわち、現今のコンピュータシステムで典型的サイズ)であり、セグメントのサイズは8バイト(すなわち、ブロックごとに8つのセグメント)として選択される。各検査部分(IP)のサイズ(幅)は、予測されるデータ型の如何による。前記予測方法のフェーズIにおいて、データ型の特徴識別は次のように実行される。
・整数:IPは、セグメントの最上位4バイトである。IPが0x00000000(すなわち正の整数)もしくは0xFFFFFFFF(すなわち負の整数)である場合、セグメントは整数として特徴識別され、それぞれのカウンタ(#Int)がインクリメントされる。図20のブロック図は、データブロック2010内で整数データ型を特徴識別することを目的とした検査プロセスの例示の実施形態を示す。0x00000000との比較はコンパレータ2024a、b、cなどで行われ、0xFFFFFFFFとの比較はコンパレータ2028a、b、cなどで行われる。この比較の結果(例えば、マッチに対して「1」)は、マスク2034および2038中にマークされる。このマスクは、セグメントの数と同じ多さのビットを含む。2つのマスクの合併集合演算が行われ(これらマスクは、ロジックすなわちORゲート2040と組み合される)、カウンタ2050は「1」の数をカウントし、これは、特徴識別された整数の数(すなわち#Intカウント)である。
・ポインタ:IPは、セグメントの最上位4バイトである。IPの2つの最上位バイトが、0x0000に等しく、IPの2つの最下位バイトが0x0000と不等の場合、当該セグメントはポインタとして特徴識別され、それぞれのカウンタ(#Ptr)がインクリメントされる。前記の特定の手法で最上位4バイトを検査する背後の理論的根拠は、48ビットポンタを検出することにあり、このような例示幅は、現今のコンピュータシステムのキャッシュ/メモリサブシステム中のアドレスによって使われている。前記検査方策の1つの限界は、小さなポインタがポインタの代わりに整数として特徴識別されることである。図21のブロック図は、データブロック2110内でポインタデータ型を特徴識別することを目的とする検査プロセスの例示の実施形態を示す。0x0000との比較はコンパレータ2124a、b、cなどで行われ、0x0000との不等の比較はコンパレータ2128a、b、cなどで行われる。この比較の結果(例えば、マッチに対して「1」)は、マスク2134および2138中にマークされる。このマスクは、セグメントの数と同じ多さのビットを含む。2つのマスクのAND演算が行われ(これら2つのマスクは、両方の状態が保持されなければならないので、ロジックすなわちANDゲート2140と組み合される)、カウンタ2150は「1」の数をカウントし、これは、特徴識別されたポインタの数(すなわち#Ptrカウント)である。
・ 浮動小数点数:IPは、セグメントの最上位ビットの次の7ビットである。この理論的根拠は、ブロック中に包含される浮動小数点データ値が、しばしば同じ指数を有するか、またはそれら指数がクラスタ化されていることであり、しかして、7ビットのIPを相互に比較すれば(IEEE‐754規格によれば、セグメントが浮動小数点データ型である場合、IPは指数の部分である)、それらまたはそれらのサブセットが指数のクラスタを形成するかどうかを明らかにできる。図22のブロック図は、データブロック2210内で浮動小数点データ型を特徴識別することを目的とした検査プロセスの例示の実施形態を示す。前記実施形態では、ブロックセグメントのIPは、ペアで2つの手法、A)相互から0の距離を有するセグメント(すなわち、隣接するセグメント)のIPのペア方式での比較2224と、B)相互から1の距離を有するセグメント(すなわち、両者の間に第三のセグメントを有するセグメントの比較)のIPのペア方式での比較2228と、で比較される。この比較の結果(例えば、マッチに対して「1」)は、マスク2234および2238中にマークされる。次いで、これらの比較の手法の各々に対し、それぞれのカウントがカウンタ2244および2248によってインクリメントされ、最終的に、2つ(すなわち、#FP_Aおよび#FP_B)の間で最大のカウントが選択される。セグメントのサイズが8バイトなので、対象浮動小数点データ型は倍精度である。当業者は、単精度(または他の精度)の符号小数点数を検出することが可能な、または他の浮動小数点規格による、前記予測方法の別の実施形態を実現することもできよう。
・ (負の)ヌルブロック:IPはセグメント全体である。各セグメントがゼロ値に等しい場合(0x00...0)、ブロックはヌルブロックとして特徴識別され、各セグメントが負のゼロ値に等しい場合(0x80...0)、ブロックは負のヌルブロックとして特徴識別される。図23aは、データブロック2310をヌルブロックとして特徴識別することを目的とした検査プロセスの例示の実施形態を示し、また、図23bは、データブロック2310を負のヌルブロックとして特徴識別することを目的とした検査プロセスの別の例示の実施形態を示す。
前記データ型の特徴識別処置は、前記方法の性能限界の如何によって、逐次的にもしくは並列に実行することができる。さらに、当業者は、この特徴識別が、単一のサイクルでもしくは個別のオペレーションとして複数のサイクルにパイプライン化して、比較、カウント、合併集合演算/AND演算でも実行されるように、各特徴識別ステップを実装することもできよう。また、コンパレータおよびカウンタも、当業者によって異なった手法で実装することも可能であろう。別の実施形態において、様々な粒度で現れるデータ型を明らかにするために、ブロックを様々なサイズのセグメント(すなわち、複数のセグメントサイズ)に同時に分割することができる。
図19の例示的なフローチャートは、発見的方法として実装される前記予測方法の或る実施形態を示す。フェーズIにおいて、前述のように、最初に検査部分がチェックされ、次いで、フェーズIIで、フェーズIの結果を特定の順序で(言い換えれば、特定の優先度で)評価することによって、当該ブロックを圧縮するために最適の圧縮スキームが(前述の「S」、「D」、「N」、「FP」の中から)選択される。最初に、ブロックが(負の)ヌルブロックとして特徴識別された場合、ヌルブロック圧縮(「N」)が選択される。それ以外の場合は、カウント#Int、#FP、および#Ptrが全てゼロに等しいかどうかチェックされ、もしそうならば、予測方法は、ブロックデータがランダム性か、暗号化されているか、または考慮外のデータ型に属するので、効率的には圧縮できないと推測する。ゼロでなければ、圧縮スキームは、#Int、#Ptr、および#FPのカウントに基づいて、これらのカウントのうち#Intが最大である場合は「S」、#Ptrが最大である場合は「D」、#FPが最大である場合は「FP」が選択される。また、カウントの一部または全部が互い等しい場合、圧縮スキームは、「S」、「D」、「FP」の順序で選択される。
図24のブロック図は、図19の予測方法のハードウェア実装の例示のブロック図を示す。前記ブロック図は、図19の予測方法のフェーズIを実装する検査および特徴識別ユニット2410、ならびに、図19の予測方法のフェーズIIを、共同して実装するコンパレータおよび優先エンコーダ、2420と2430とを含む。検査および特徴識別ユニット2410は、さらに、INT型特徴識別ユニット2000と、PTR型特徴識別ユニット2100と、FP型特徴識別ユニット2200と、NullBlockかつNegNullBlock型特徴識別ユニット2300とを含む。INT、FP、およびPTR特徴識別ユニットからの結果(ユニット2410からの出力)は最初にユニット2420によって比較され、4ビットの符号化信号2425である、1000(#Int=0且つ#FP=0且つ#Ptr=0)、0100(最大=#Int)、0010(最大=#Ptr)、および0001(最大=#FP)が生成される。前記符号化信号2425は、isNullおよびisNegNull信号による優先エンコーダ2430への入力である。優先エンコーダ2430は、図19の予測方法のフェーズIIに示すような(優先)順序での最適圧縮スキームの選択を実装する。当業者は、前記ハードウェアの実装を2つ以上の段階にパイプライン化することができよう。
前記予測方法および他の予測方法の別の実施形態を当業者によって実現することも可能であろう。重要なことは、当業者が、これらハイブリッドデータ圧縮方法、デバイス、およびシステムの別の実施形態を実現する場合は、対象とするシステム、コンテキスト、および用途の領域に応じて、他の圧縮スキームおよび/または他のデータ型も検討する必要があることである。
図25は、図18のHyCompハイブリッドデータ圧縮システムであるが、コンピュータシステムのキャッシュサブシステム、具体的には最終レベルキャッシュ(LLC:last−level cache)に適用されたときのさらに別の実施形態2500を示す。メインメモリ、およびキャッシュ階層の他の上位レベルのキャッシュが未圧縮の形でデータを保存していると仮定すれば、データは、メモリからLLC中に挿入される前に、またはデータが上位レベルのキャッシュからLLCに書き戻されるときに圧縮される。他方、或るブロックがLLCから退去するとき、またはそれが上位レベルのキャッシュによってフェッチされるときに、ブロックは解凍される必要がある。本HyCompシステムは、メモリから挿入された、または上位レベルのキャッシュから書き戻された未圧縮のデータブロック2505を、前述の実施形態と同様なデータ型予測2512に基づいて、各未圧縮データブロックに対し最適の圧縮スキームを選択することによって圧縮する。次いで、圧縮されたデータブロック2518は、LLCのデータアレイ2528中に挿入され、使用されたスキームはメタデータとしてタグストア2524中に記録2516され、該ストアは、通常、キャッシュラインのメタデータ(例えば、タグ、有効およびダーティビット、リプレースメントステータス)を保存する。圧縮データブロック2534が、上位レベルキャッシュによって要求されたとき、またはメインメモリに向け退去するとき、圧縮データブロック2534は、単に、圧縮の過程でタグストア中に記録されたメタデータに基づいて適切なデコンプレッサ2535によって解凍される。
図25のハイブリッド圧縮キャッシュシステム2500は、特定の圧縮スキーム2514−1、2514−2、2514−3、2514−4、すなわち、ハフマンベースの統計的圧縮スキーム(例えば、米国特許出願公開第2013/0311722号中に開示されたもの)と、BDI(Proceedings of the 21st international conference on Parallel architectures and compilation techniques (PACT ’12)のGennady Pekhimenko、Vivek Seshadri、Onur Mutlu、Phillip B.Gibbons、Michael A.Kozuch、およびTodd C.Mowryによる、「Base−delta−immediate compression:practical data compression for on−chip caches」に開示されたもの)と、FP−H(本出願人および発明者らによる前述の特許出願、METHODS, DEVICES AND SYSTEMS FOR SEMANTIC−VALUE DATA COMPRESSION AND DECOMPRESSIONに開示されたもの)と、ZCA(Julien Dusser、Thomas Piquet、およびAndre Seznecの、Proceedings of the 23rd international conference on Supercomputing (ICS ’09)の議事録の、整数、ポインタ、浮動小数点、およびヌルブロックデータ型それぞれに関連する「Zero−content augmented caches」に開示されたもの)と、を使用する。これらのスキームは、これらがハードウェアに実装でき、しかしてキャッシュ圧縮に適用が可能なので選択されている。これらは、それぞれのデータ型に対し、圧縮および解凍待ち時間を、例示の圧縮キャッシュサブシステムなどに対して比較的に低くしながら、効率的な圧縮性をもたらす。
ハイブリッドデータ圧縮が適用される際のキャッシュ編成の或る実施形態が図26に示され、これはTAGストア2610およびDATAストア2620を含む。このキャッシュ実施形態は、2つの手法のセットとの関連性を有する。従来型のキャッシュでは、圧縮が適用されない場合、各手法は、未圧縮のキャッシュブロック(またはキャッシュライン)を格納し、特定のタグ(例えば、キャッシュラインタグ2615)に関連付けられる。各タグは、図26の左側に示されるように、複数のメタデータ(すなわち標準的メタデータ)を含み、「tag」はブロックのアドレスに関連し、「v」は有効ビットであり、ブロックが有効な場合にセットされ、「d」はダーティビットであり、ブロックが変更された場合にセットされ、「repl」はリプレースメントステータス、すなわち、当該リプレースメントポリシーが最低使用頻度(LRU:least−recently−used)の場合、最小のカウンタ(このカウンタはブロックの使用に基づいてデクリメントされる)を有するブロックはキャッシュセットが満杯になったとき置き換えられる。
他方で、図26の前記キャッシュサブシステムの圧縮が適用される場合、キャッシュ編成を変更する必要がある。従来技術のキャッシュ圧縮設計においては、タグストアは、データストアから切り離され、より多くのキャッシュブロックを格納し、圧縮によって解放されたスペースを利用できるようにするために、より多くのタグが各セットに関連付けられる。圧縮キャッシュブロックは、したがって、セット内部の任意のバイト位置に配置され、ポインタを使って位置付けされ、ポインタはメタデータのタグストア中に格納され、このポインタは、図26中の追加メタデータ中では「idx」として表されている。例えば、図26のキャッシュの実施形態では、2倍多くのタグ(すなわち、キャッシュセットごとに4つのタグ)が各キャッシュセットに関連付けられている。タグとキャッシュブロックとの間の関連付けが文字(A、B、C、およびD)で表されている。さらに、データストア2620は複数のキャッシュセットを含む。各セットは、セット2628と同様であり、上限2つまでの未圧縮キャッシュブロック、および4つまでの圧縮キャッシュブロックを含む。圧縮ブロックAはキャッシュセット2628の先頭(0バイト位置)に格納され、圧縮ブロックCは、圧縮ブロックAの終端の後の次のバイト位置に保存され、一方、圧縮ブロックDは両方にまたがっている。圧縮ブロックの別の配置策は、セグメント化と言われ、これはキャッシュセットを固定サイズのセグメントに分割し、次いで各圧縮ブロックは、その圧縮ブロックのサイズに基づいて異なる数のセグメントを割り当てられる。当業者によって、圧縮ブロックの別の配置策を実装することも可能である。
新規ブロックがキャッシュに挿入され、例示のキャッシュセット2628中に保存される場合に、全てのタグが圧縮ブロックによって使用されている場合、それらブロックの1つを退去させる必要がある(ヴィクティムブロック(victim block)としても知られる)。図26のキャッシュの実施形態において、リプレースメントポリシーは最低使用頻度(LRU)であり、しかして、最小のLRUカウント2618を有するブロックCがヴィクティムブロック2622となる。データが未圧縮で保存される従来式のキャッシュ設計では、1つのヴィクティムブロックで十分であるが、しかし、ハイブリッドデータ圧縮キャッシュの実施形態および最高圧縮されたキャッシュ設計においては、新規のブロックがヴィクティムよりも大きなサイズを有する場合に、キャッシュセット中のさらに多くのブロックを退去させる必要がある。コンパクション(compaction)も必要となるので、次のLRUブロックを退去させるには時間がかかることがあり、コンパクションは、連続する自由なスペースを解放するために、圧縮ブロックを移動するプロセスとなる。この例示の実施形態では、隣接のブロック(図26中のブロックD2624)が退去されるように選択される。図26の底部に示されているキャッシュセット2638は、ブロック2622と2624とを新規のブロックF2632で置き換えた後のキャッシュセット2628と同様である。逆に、新規ブロックがヴィクティムのよりも小さい場合、次のLRUブロックに対しより多くの連続するスペースを解放するためにコンパクションが行われる。
キャッシュサブシステム中で圧縮が適用される場合、タグ中に加える必要のある他の追加メタデータは、ブロックが圧縮されているかどうかを示す圧縮ステータスビット(図26中では「c」で表されている)である。キャッシュ中でハイブリッドデータ圧縮が適用される場合、例示のブロック中で使用されることを予測され選択された圧縮スキームが、「alg」メタデータ中に記録される。この実施形態では、「alg」は4つのスキーム、ZCA、BDI、H、およびFP−Hを定義している。特殊符号化のメタデータ(図26では「enc」として表されている)は、圧縮スキーム依存である。例えば、選択されたスキームがBDIの場合、これは、1)ベース=8バイト、およびデルタ=1、2または4バイト(3ケース)、2)ベース=4バイト、およびデルタ=1または2バイト(2ケース)、3)ベース=2バイト、およびデルタが1バイト、の6つのケースの中から、例示のブロックを符号化するために使われるベース/デルタの組み合せを記録するための3ビットを必要とする。選択されたスキームがZCAの場合、特殊符号化の右端のビットが、それがヌルブロックまたは負のヌルブロックかどうかを決める。残りのビットは使われない。他の圧縮スキームは、「enc」ビットを使う必要はない。
本開示のハイブリッドデータ圧縮方法、デバイス、およびシステムがコンピュータシステム中の(図2のような)メモリサブシステムに適用される場合、前記方法、デバイス、およびシステムの予測方法の、選択された圧縮スキームを追跡する上記で「alg」で表された前記メタデータ、および選択された圧縮スキームに関連するそれぞれの「enc」メタデータは、ページテーブル構造体中に保存することができる。このページテーブルは、仮想アドレスの物理アドレスへの変換、および各ページについての現在ビット、ダーティビットなど、他の情報を含む。例えば、ハイブリッド圧縮が適用されたデータ値のブロックが、例えば或るページに対応する場合、前記「alg」/「enc」メタデータを、ページごとの前記情報ビットとともに、そのページテーブル中の保存することができる。或るページがアクセスされる場合、その仮想から物理への変換がハードウェアキャッシュ構造体、変換索引バッファ(TLB:Translation Lookaside Buffer)中に維持され、したがって、前記「alg」/「enc」メタデータもTLB中に格納が可能である。
本開示のハイブリッドデータ圧縮方法、デバイス、およびシステムが、(図4のような)コンピュータシステムまたは(図7のような)通信ネットワーク中のリンクサブシステムに適用されている、別の実施形態において、「alg」/「enc」メタデータの組み合せの全てまたはサブセットをメタデータキャッシュ中に維持することができる。リンク/ネットワークの構成に合わせ、一リンク端を発信元とすることができ、ブロックは圧縮されて送信され、および/または宛先となり、ブロックは受信されて解凍される。リンク端が発信元である場合、その端はコンプレッサおよびメタデータキャッシュを含み、リンク端が宛先である場合、その端はデコンプレッサおよびメタデータキャッシュを含み、リンク端が発信元および宛先の両方である場合、その端は、コンプレッサ、デコンプレッサ、およびコンプレッサおよびデコンプレッサの両方に使用される1つのメタデータキャッシュを含み、あるいは、1つのメタデータキャッシュはコンプレッサに使用され、もう1つのメタデータキャッシュはデコンプレッサによって使用される。図30は、リンクサブシステムの例示の実施形態を示し、この実施形態では、ハイブリッドデータ圧縮方法、デバイス、およびシステムが適用され、リンクの一端(ノードi)は発信元(トランスミッタ)として機能し、リンクの他方の端(ノードj)は宛先(レシーバ)として機能する。
前記メタデータキャッシュの或るインスタンスは、1つまたは複数のエントリを含み、各エントリは、例えば「ZCA,negNull」、「BDI,B=4/D=2」など、前記「alg」/「enc」メタデータの1つの特定の組み合せのIDを包含する。予測された圧縮デバイス/スキームを用いてデータブロックが圧縮されるとき、前記IDを保持するそれぞれのメタデータキャッシュエントリのインデックスを得るために、発信元のメタデータキャッシュの中で前記予測されたデバイス/スキームのIDがルックアップされる。前記インデックスは、圧縮ブロックに先行して、その後に、または一緒に送信される。このインデックスは、適切な解凍デバイス/スキームのIDを読み出すため、宛先のメタデータキャッシュにアクセスするために使われる。発信元および宛先のメタデータキャッシュは、それらの内容の一貫性を保つために同期されている必要がある。メタデータキャッシュのサイズによりアクセス時間(したがって、圧縮および解凍待ち時間)およびインデックスの幅が決まり、複数の圧縮スキーム/デバイスが使用されると、メタデータキャッシュしたがってインデックス、およびアクセス時間が長くなり得る。別の実施形態において、メタデータキャッシュは、例えば、例示のスキーム/デバイスのセットが、複数のデータブロックに対し連続して使用される場合にも、圧縮スキーム/デバイスのIDの一サブセット(例えば4エントリ)だけを保持することができる。予測されたスキーム/デバイスのIDが発信元のメタデータキャッシュ中に見当たらない場合、そのエントリの1つが、例示のキャッシュリプレースメントポリシー(例えばLRU)を使って置き換えられ、それに伴い、宛先のメタデータキャッシュも更新される。当業者は、ハイブリッドデータ圧縮方法、デバイス、およびシステムを、コンピュータシステムまたは通信ネットワークに適用する際に、これらの予測された圧縮スキーム/デバイスを記録し読み出すための別の手法を、実装することもできよう。
ハフマンベースの統計的圧縮スキームは、例えば出現頻度などの統計的特質に基づいて、データ値に対し可変長の符号語を、より頻度の高い値には短い符号語を頻度の少ないものにはより長い符号語を割り当てる。符号化が前もって定義されていない場合、前記ハフマンベースの統計的圧縮スキームは、トレーニングフェーズおよび圧縮フェーズの2つのフェーズを含む。トレーニングフェーズの過程では、出現値(すなわち、ハイブリッド圧縮キャッシュシステムの前述の実施形態中のLLC中に格納された値)の値の頻度統計がモニタされ、<値、カウンタ>タプルを含むテーブルのような構造体中に収集される。前記テーブルの実施形態の例は従来技術中で説明されている。前記値の頻度統計が十分に収集されると、ハフマン符号化アルゴリズムを用いて、符号化の例が生成され、次いで、圧縮フェーズの過程で前記符号化を使ってデータ値が圧縮される。生成された符号化の品質は、統計収集プロセスの精度に大きく依存する。しかして、ハイブリッドデータ圧縮方法、デバイス、およびシステムの実施形態は、かかる圧縮スキームの圧縮過程だけでなく、トレーニングフェーズの過程にも予測の適用が可能である。このように、前記統計的圧縮スキームによって圧縮のために選択される型と無関係なデータ型に特徴識別されたデータブロックは、この値の頻度統計収集から無視することができ、潜在的により代表性のある統計のセット、つまりより良い符号化が得られる。別の実施形態において、この統計収集プロセスは、いかなるメタデータをも必要とせず、代わりに、前記統計的圧縮スキームのトレーニングフェーズの過程で、セグメントごとのよりきめ細かい型情報を使って、前記セグメントを統計の収集に用いるべきか無視すべきかを決めることができ、前記セグメントごとの型情報は、特定のデータ型と統計的圧縮スキームとの間の関連性によって、例えば、マスク2034/2038(図20)、2134/2138(図21)、2234/2238(図22)によって検索することができる。
BDIは、2つのベース値へのデルタでブロック値を符号化することによるデルタ圧縮を使いキャッシュブロックを圧縮する。その主要構成において、前記ベース値の1つはゼロであり、他方はブロック中の最初の非ゼロ値である。BDIは、複数のベース/デルタ粒度を試みるが、ブロックは、全ての値が同じベース/デルタ粒度(前述した6つのケースの1つ)を使って符号化されている場合にだけ圧縮される。しかしながら、BDIは、ブロック中の全ての値が2つの値の範囲内にある場合にだけそのブロックが圧縮され、範囲内にない場合は未圧縮のまま残るという限界に悩まされる。ブロックが、3つ以上の値範囲内にあるデータ値を含む場合、そのブロックは、たとえ支配的なデータ型がポインタであっても圧縮されないことになる。こういった、既知の圧縮アルゴリズムに限界(または弱点)があるこの例示の実施形態のような場合、当業者が予測方法を構築するとき、決定プロセスに支配的なデータ型を超えた追加の選択基準を導入できる。この実施形態における1つのかかる基準は、ブロックの値が3つ以上の範囲に入るかどうかチェックするものであり、その時には、たとえ支配的なデータ型がポインタであっても、代わりに別の圧縮スキームを選択することができる。
ハイブリッドデータ圧縮システムの別の実施形態において、高頻度で出現する特徴識別されたブロック型に対する最適圧縮アルゴリズムの間違った予測については、予測器の決定をオラクルセレクタと比較することによって検出することができ、おそらくは訂正することができ、前記オラクルセレクタは、常に最良の圧縮スキームを選択する理想的なセレクタである。図27の方法は或る例示的なフローチャートを示す。このチャートでは、モニタリングウィンドウ(図27中で、予測がオラクル選択と比較される所定の回数だけ反復して測定される)で、予測圧縮スキームとオラクルの選択された圧縮スキームとが比較され、オラクルは、入力未圧縮ブロックを、全スキームを総当たりモードで使って圧縮し、最良の圧縮性をもたらすものを選び出すことを試みることによって実装され得る。この比較の結果は、カウンタで追跡され、各支配的なデータ型に対し1つずつ複数のカウンタが在る。モニタリングウィンドウの終了点において、(モニタリングウィンドウの過程で)追跡された各支配的なデータ型に対する測定された予測ミスが特定の閾値(TH:threshold)を超えた場合、現時点およびそれ以降からの前記支配的なデータ型の出現に対し、予測器に選択された圧縮スキームをオラクルセレクタによって判断されたものにランタイムで調整することができ、予測方法の精度を潜在的に向上させる。前記モニタリングは、定期的にまたは必要に応じ繰り返すことができる。予測圧縮スキームとオラクル圧縮スキームとの間に不一致が生じた状態をマークするための基準の一例として、支配的なデータ型を用いることができる。別の実施形態は、例えば、ブロック内での支配的なデータ型および二番目に支配的なデータ型、または予測されたデータ型の使用など、前記状態を表すため他の手法の例を使用することができる。当業者は、ハイブリッドデータ圧縮方法、デバイス、およびシステム中で使われる予測方法およびデバイスの不正確な予測を訂正するための別の方法を実現することもできよう。
別の実施形態は、最善に達成された圧縮を上回る最適の圧縮スキームを選択するときに違った目標を用いることができる。例えば、ハイブリッドデータ圧縮が、図25の実施形態などのコンピュータシステムのキャッシュサブシステム中に適用されるとき、圧縮スキームは、その圧縮効率だけでなく、圧縮および解凍の待ち時間に与える影響に基づいて選択するとよい。例えば、或る特性識別されたブロック型に対するベストの圧縮スキームAが、2番目にベストの圧縮スキームBよりも10%より良好な圧縮性をもたらすが、解凍待ち時間に起因して30%のキャッシュアクセス時間を増加させる場合、スキームBがAを越えて選択されることがあり得る。
予測方法は、好ましくは、プロセッサデバイス/プロセッサチップ、またはメモリデバイス/メモリチップ中に含まれたまたはこれらに関連付けられた任意のロジック回路によって、ランタイムで実行することができる。本開示の発明のさらなる発明的態様は、したがって、前述の方法を実行するように構成された、ロジック回路、プロセッサデバイス/プロセッサチップ、およびメモリデバイス/メモリチップを含む。
当然のことながら、明示で開示された実施形態以外の他の実施形態も、それぞれの発明の範囲内で同様に可能である。例えば、本開示の発明の各々は、限定はされないがコンピュータ用のメインメモリ(例えば、ランダムアクセスメモリ)を含め、キャッシュメモリ以外の他の型のメモリに対しても実装することができる。上記に換えてまたは加えて、本開示の発明の各々は、例えばプロセッサとメモリとの間で通信されているデータのリンク圧縮のため実装することも可能である。
一般に、本特許出願の中で言及されるエンティティ(例えば、データセット、データ型、データ値、データフィールド、データブロック、キャッシュブロック、キャッシュライン、データセグメントなど)のいずれに対してもデータサイズに特定の制限はない。
ここで、図28、図29、および図31の一部を参照しながら、図13〜図27、および図30に示された具体的な実施形態を一般化した、一般的発明的態様を説明することとする。同様の参照符号が使われており、図面の1つでXXnnのフォーマットを有する参照符号は、一般に、他の図面のいずれにおいても、同じまたは少なくとも対応する要素YYnnを表す。
1つの一般的発明的態様は、未圧縮データブロック(例えば、1805、2505)を圧縮データブロック(例えば、1818、2518)に圧縮するためのハイブリッドデータ圧縮デバイス(例えば、1810、2510)であり、未圧縮データブロックは1つまたは複数のデータ型の1つまたは複数のデータ値を含む。このハイブリッドデータ圧縮デバイスは、複数のデータコンプレッサ(例えば、1814、2514)を含み、各コンプレッサは、それぞれのデータ圧縮スキーム(例えば、1814−1...1814−n、2514−1...2514−n)用に構成される。また、本ハイブリッドデータ圧縮デバイスは、未圧縮データブロック(例えば、1805、2505)のデータ値のデータ型を予測し、主たる基準として予測されたデータ型の間での支配的なデータ型を用いて、前記複数のデータコンプレッサの中から推定最適なデータコンプレッサを選択するように構成された予測器メカニズム(例えば、1812、2512)を含む。本ハイブリッドデータ圧縮デバイスは、選択された推定最適データコンプレッサに未圧縮データブロックの全体を圧縮させることによって圧縮データブロック(例えば、1818、2518)を生成するように構成される。
本ハイブリッドデータ圧縮デバイスは、圧縮データブロック(例えば、1818、2518)に関連付けられ、選択された推定最適データコンプレッサのデータ圧縮スキームを識別する役割を果たすメタデータ(例えば、1824、2524、3024)を生成する(例えば、1816、2516、3016)ように構成することができる。加えて、本ハイブリッドデータ圧縮デバイスは、生成されたメタデータを、圧縮データブロック(例えば、1818、2518)と一緒にデータストレージ(例えば、1820、2520)に格納するように構成され、このデータストレージには、データ解凍デバイス(例えば1830、2530)によるアクセスが可能である。上記に換えて、このハイブリッドデータ圧縮デバイスは、生成されたメタデータ(例えば、3024)を、圧縮データブロック(例えば、3018)と一緒に、リンク(例えば、3020)を介してデータ解凍デバイス(例えば、3030)に送信するように構成されてもよい。
複数のデータコンプレッサ(例えば、1814、2514)は、第一データ圧縮スキーム用に構成された第一データコンプレッサ、および第一データ圧縮スキームとは異なる第二データ圧縮スキーム用に構成された第二データコンプレッサを含むことができる。第一および第二データ圧縮スキームの各々は、ロスレスまたはロッシー圧縮スキームとすることが可能である。
有利には、これら第一および第二データ圧縮スキームは、
・(例えば、ハフマン圧縮、カノニカルハフマン圧縮、算術符号化などの)統計的(可変長)符号化、
・ディクショナリベースの圧縮、
・デルタ符号化、
・パターンベースの圧縮、
・有意ベースの圧縮、または
・(例えば、ヌルブロック圧縮などの)共通ブロック値圧縮、
のうちの2つとして選択されたロスレス圧縮スキームである。
通常、第一データ圧縮スキームは、第一データ型のデータ値の間のデータローカリティを利用するように設計され、このデータローカリティは、時間的、空間的、またはこれらの組み合せであり、第二データ圧縮スキームは、第二データ型のデータ値の間のデータローカリティを利用するように設計され、このデータローカリティは、時間的、空間的、またはこれらの組み合せである。
このデータブロックは、通常、
・コンピュータシステム中のキャッシュの中にストレージするためのキャッシュライン、キャッシュセット、キャッシュブロック、またはキャッシュセクタ、
・メモリ中へのストレージまたはコンピュータシステム内での転送のためのメモリ行、メモリページ、もしくはメモリセクタ、および
・データ通信システム中の送信リンクを介して転送するためのパケット、フリット、ペイロード、またはヘッダ、
のうちの1つであってよい。
データ値のデータ型は、通常、だが限定せずに、整数、ポインタ、浮動小数点数、文字、ストリング、ブール値、コード命令、または(例えば、ビデオもしくはオーディオのフォーマットもしくは規格などの)特定のフォーマットもしくは規格によって定義されたデータ型のいずれかであってよい。
有利には、本ハイブリッドデータ圧縮デバイス(例えば、1810、2510)の予測器メカニズム(例えば1812、2512)は、未圧縮データブロック(例えば、1805、2505)をセグメントに分割し、セグメントを複数の候補データ型のうちの一予測データ型として分類するために、全セグメントに対し、各セグメントの検査ビット部分を検査し、未圧縮データブロックの支配的なデータ型を判定するため、全セグメントの予測されたデータ型の出現頻度を比較するように構成される。有利には、相異なる候補データ型に対して、これら検査ビット部分は異なっている。
候補データ型は、通常、整数、ポインタ、浮動小数点数、文字、ストリング、ブール値、共通データ値ブロック、データコード命令、または特定のフォーマットもしくは規格によって定義されたデータ型のうちの2つ以上であってよい。
或る有利な実施形態において(例えば図20)、候補データ型の1つは整数であり、データブロックのサイズはmバイトであり、セグメントのサイズはnバイトであり、m/nは2の倍数であり、検査ビット部分はセグメントの最上位のpバイトであり、n/pは2である。例えば、m=64、n=8、p=4の値が適用できる。予測器メカニズム(例えば、1812、2512)は、検査ビット部分が、いくつかの事前定義されたpバイト値のいずれかに等しい場合、セグメントを整数として分類するように構成され、これら事前定義pバイト値は、例えば、0x00000000および0xFFFFFFFFとすることができる。
この、または別の有利な実施形態(例えば、図21)において、候補データ型の1つはポインタであり、データブロックのサイズはmバイトであり、セグメントのサイズはnバイトであり、m/nは2の倍数であり、検査ビット部分はセグメントの最上位のpバイトであり、n/pは2である。例えば、m=64、n=8、p=4の値が適用できる。予測器メカニズム(例えば、1812、2512)は、検査ビット部分の最上位の2バイトが、事前定義されたp/2バイト値に等しく、だが最下位の2バイトは不等である場合、セグメントをポインタとして分類するように構成され、この事前定義p/2バイト値は、例えば、0x0000とすることができる。
この、または別の有利な実施形態(例えば、図22)において、候補データ型の1つは浮動小数点数であり、データブロックのサイズはmバイトであり、セグメントのサイズはnバイトであり、m/nは2の倍数であり、検査ビット部分はセグメントの最上位ビットの次の最上位のqビットである。例えば、m=64、n=8、q=7の値が適用できる。予測器メカニズム(例えば、1812、2512)は、当該セグメントの検査ビット部分を、データブロック中の、同じまたはクラスタ化された浮動小数点指数を示す隣接のセグメントの検査ビット部分と突き合わせることによって、セグメントを浮動小数点数として分類するように構成される。
この、または別の有利な実施形態(例えば、図23aおよび図23b)において、候補データ型の1つは共通データ値であり、データブロックのサイズはmバイトであり、セグメントのサイズはnバイトであり、m/nは2の倍数であり、検査ビット部分はセグメント全体である。例えば、m=64、n=8の値が適用できる。予測器メカニズム(例えば、1812、2512)は、セグメントを、そのデータ値全てが同じ共通データ値を有する場合、共通データ値として分類するように構成される。有利には、この共通データ値はヌル値である。
有利には、本ハイブリッドデータ圧縮デバイスは、未圧縮データブロック(例えば、1805、2505)の全セグメントが共通データ値として分類されたとき、データ圧縮スキームとして共通ブロック値圧縮を備えるデータコンプレッサ(例えば、1814、2514)を推定最適データコンプレッサとして選択するように構成される。
さらに、予測器メカニズム(例えば、1812、2512)は、セグメントの2つの相異なる予測データ型が同一の出現頻度を有する場合、未圧縮のデータブロックの支配的なデータ型を決めるときにその1つを他方より優先するように構成することができる。例えば、予測器メカニズム(例えば、1812、2512)は、未圧縮のデータブロックの支配的なデータ型を判定するとき、整数を、ポインタおよび浮動小数点数よりも優先し、ポインタを、浮動小数点数よりも優先するように構成すればよい。
また、予測器メカニズム(例えば、1812、2512)は、セグメントに予測データ型の出現がない場合に、推定最適データコンプレッサとしてデフォルトのデータコンプレッサを選択するように構成することができる。上記に換えて、予測器メカニズム(例えば、1812、2512)は、セグメントに予測データ型の出現がない場合、推定最適データコンプレッサの代わりに無圧縮を選択するように構成してもよく、しかして未圧縮データブロックを圧縮するのを取り止めるように構成することができる。
一実施形態において、本ハイブリッドデータ圧縮デバイス(例えば、1810、2510)は、
・複数の圧縮サイクルの過程で、それぞれの支配的なデータ型に対するデータコンプレッサの理想的な選択に対して、それぞれの選択された推定最適データコンプレッサをモニタし、
・特定の支配的なデータ型の圧縮性に関し、別のデータコンプレッサがさらに効率的であった可能性を検知し、および
・今後の圧縮サイクルについて、当該特定の支配的なデータ型に対し、最適データコンプレッサを前記別のデータコンプレッサに変更する、ようにさらに構成される。
それぞれの支配的なデータ型に対するデータコンプレッサの理想的な選択はオラクルセレクタによって提供してもよく、該セレクタは、複数のデータコンプレッサ全て(例えば、1814、2514)のデータ圧縮スキームを使って未圧縮のデータブロックを圧縮し、それぞれの理想的選択として、それぞれの未圧縮データブロックに対する最善の圧縮性が得られるデータ圧縮スキームを有するコンプレッサを選定する。
本ハイブリッドデータ圧縮デバイスの一実施形態において、複数のデータコンプレッサは、共通ブロック値圧縮スキームである第一データ圧縮スキーム用に構成された第一データコンプレッサ(例えば、1630)、および第一データ圧縮スキームとは異なる、統計的(可変長)符号化、ディクショナリベースの圧縮、デルタ符号化、パターンベースの圧縮、および有意ベースの圧縮のうちの1つである第二データ圧縮スキーム用に構成された第二データコンプレッサ(例えば、1620)を含む。この実施形態のハイブリッドデータ圧縮デバイスは、予測器メカニズム(例えば、1630)によって未圧縮データブロック(例えば、1605)で共通データ値が支配的であることが判明した場合、第一データコンプレッサ(例えば、1630)に、未圧縮データブロック(例えば、1605)の全体を圧縮共通値データブロックに圧縮させることによって、圧縮データブロック(例えば、1618)を生成し、またそれ以外の場合は、第二データコンプレッサ(例えば、1630)に、第二データ圧縮スキームに従い未圧縮データブロック(例えば、1605)の全体を圧縮させることによって、圧縮データブロック(例えば、1618)を生成するように構成される。圧縮共通値データブロックは、単一のビットだけを有利に包含できる。この実施形態において、有益には、予測器メカニズム(例えば、1630)は第一データコンプレッサ(例えば、1630)に組み込まれる。さらに、予測器メカニズム(例えば、1630)は、ブロックの全データ値が共通データ値を有する場合、その未圧縮データブロック(例えば、1605)で共通データ値が支配的であることが見いだすように有益に構成される。この共通データ値は、通常、ヌル値または代わりに別の特定な共通データ値であってよい。
一般的発明データ圧縮方法が図28に示されている。この一般的な発明的データ圧縮方法は、図28中の2810〜2830に開示された機能に加えおよび/またはそれらの改良として、前述の一般的な発明的態様およびその様々な実施形態による、データ圧縮デバイスの機能的特徴の一部または全部を有し得る。
別の一般的な発明的態様は、圧縮データブロック(例えば、1834、2534)を、1つまたは複数のデータ型の1つまたは複数のデータ値を含む解凍データブロック(例えば、1895、2595)に解凍するためのハイブリッドデータ解凍デバイス(例えば、1830、2530)である。この圧縮データブロックは、前述の一般的な発明的態様またはその様々な実施形態による、ハイブリッドデータ圧縮デバイスによって生成されたものであり得る。このハイブリッドデータ解凍デバイスは、複数のデータデコンプレッサ(例えば、1835、2535)を含み、各デコンプレッサは、それぞれのデータ解凍スキーム(例えば、1835−1...1835−n、2535−1...2535−n)用に構成される。このハイブリッドデータ解凍デバイスは、前記複数のデータデコンプレッサ(例えば、1814、2514)の中から選択された推定最適データデコンプレッサに、圧縮データブロックの全体を解凍させることによって、解凍データブロック(例えば、1895、2595)を生成するように構成される。
本ハイブリッドデータ解凍デバイスは、圧縮データブロック(例えば、1834、2534)に関連付けられたメタデータ(例えば、1824、2524、3024)を読み出し(例えば、1832、2532、3032)、そのメタデータに基づいて推定最適データデコンプレッサを選択するように構成すればよい。さらに、本ハイブリッドデータ解凍デバイスは、データストレージ(例えば、1820、2520)から、圧縮データブロック(例えば、1834、2534)と一緒にメタデータを読み出すように構成されてよく、このデータストレージには、データ圧縮デバイス(例えば、1810、2510)がアクセス可能である。上記に換えて、本ハイブリッドデータ解凍デバイス(例えば、3030)は、リンク(例えば、3020)を介してデータ圧縮デバイス(例えば、3010)から、圧縮データブロック(例えば、3038)と一緒にメタデータ(例えば、3034)を受信するように構成することもできる。
これら複数のデータデコンプレッサ(例えば、1835、2535)は、第一データ解凍スキーム用に構成された第一データデコンプレッサ、および第一データ解凍スキームとは異なる第二データ解凍スキーム用に構成された第二データデコンプレッサを含むことができる。第一および第二データ解凍スキームの各々はロスレス解凍スキームまたはロッシー解凍スキームである。
有利には、第一および第二データ解凍スキームは、
・ (例えば、ハフマン解凍、カノニカルハフマン解凍、算術復号などの)統計的(可変長)復号、
・ ディクショナリベースの解凍、
・ デルタ復号、
・ パターンベースの解凍、
・ 有意ベースの解凍、または
・ (例えば、ヌルブロック解凍などの)共通ブロック値解凍、
のうちの2つとして選択されるロスレス解凍スキームである。
データブロックは、通常、
・コンピュータシステム中のキャッシュの中にストレージするためのキャッシュライン、キャッシュセット、キャッシュブロック、またはキャッシュセクタ、
・メモリ中へのストレージまたはコンピュータシステム内での転送のためのメモリ行、メモリページ、もしくはメモリセクタ、および
・データ通信システム中の送信リンクを介して転送するためのパケット、フリット、ペイロード、またはヘッダ、
のうちの1つであってよい。
データ値のデータ型は、通常、だが限定せずに、整数、ポインタ、浮動小数点数、文字、ストリング、ブール値、コード命令、または(例えば、ビデオもしくはオーディオのフォーマットもしくは規格などの)特定のフォーマットもしくは規格によって定義されたデータ型のいずれかであってよい。
本ハイブリッドデータ解凍デバイスの一実施形態において、複数のデータデコンプレッサは、共通ブロック値解凍スキームである第一データ解凍スキーム用に構成された第一データデコンプレッサ(例えば、1720)、および、第一データ解凍スキームとは異なる、統計的(可変長)復号、ディクショナリベースの解凍、デルタ復号、パターンベースの解凍、および有意ベースの解凍のうちの1つである第二データ解凍スキーム用に構成された第二データデコンプレッサ(例えば、1710)を含む。この実施形態のハイブリッドデータ解凍デバイスは、当該圧縮データブロック(例えば、1705)が圧縮共通値データブロックであるかどうかをチェックし、そうである場合は、第一データデコンプレッサ(例えば、1720)に圧縮データブロック(例えば、1705)の全体を、解凍共通値データブロックとして解凍させることによって、解凍データブロック(例えば、1795)を生成し、そうでない場合は、第二データデコンプレッサ(例えば、1710)に、圧縮データブロック(例えば、1705)を、第二データ解凍スキームに従って解凍させることによって、解凍データブロック(例えば、1795)を生成するように構成される。圧縮共通値データブロックは、有利には単一ビットだけを包含すればよい。第一データデコンプレッサ(例えば、1720)は、解凍共通値データブロックに共通の値を充填することによって、圧縮データブロック(例えば、1705)の全体を解凍共通値データブロックに都合よく解凍するように構成できる。この共通データ値は、典型的には、ヌル値または代わりに別の特定な共通データ値であってよい。
一般的な発明的データ解凍方法が図29に示されている。この一般的な発明データ解凍方法は、図29中の2910〜2920に開示された機能に加えおよび/またはその改良として、前述の一般的な発明的態様およびその様々な実施形態による、データ解凍デバイスの機能的特徴の一部または全部を有し得る。
本明細書で開示されたそれぞれのデータ圧縮デバイスは、例えば、集積回路中のデジタル回路として、または専用デバイス(例えばメモリコントローラ)として、またはプログラム可能処理デバイス(例えば中央処理装置(CPU:central processing unit))もしくはデジタル信号プロセッサ(DSP:digital signal processor)として、またはフィールドプログラム可能ゲートアレイ(FPGA:field−programmable gate array)として、または他のロジック回路などとしてハードウェア中に実装することができる。本明細書に記載されたそれぞれのデータ圧縮方法の機能は、例えば、適切に構成されたそれぞれのデータ圧縮デバイスの任意のものによって、または、一般に、(例えばプロセッサデバイス/プロセッサチップ、またはメモリデバイス/メモリチップに含まれた、または関連付けられた)それぞれのデータ圧縮方法を実行するように構成されたロジック回路を含むデバイスによって、あるいはそれらに換えて、CPUまたはDSP(例えば、図1〜5の処理ユニットP1...Pnのいずれか)などの汎用処理デバイスによりロードされ実行されると、それぞれの方法を遂行させるコード命令を含むそれぞれのコンピュータプログラム製品によって、遂行されることができる。
本明細書で開示されたそれぞれのデータ解凍デバイスは、例えば、集積回路中のデジタル回路として、または専用のデバイス(例えばメモリコントローラ)として、またはプログラム可能処理デバイス(例えば中央処理装置(CPU)もしくはデジタル信号プロセッサ(DSP))として、フィールドプログラム可能ゲートアレイ(FPGA)として、または他のロジック回路などとしてハードウェア中に実装することができる。本明細書に記載されたそれぞれのデータ解凍方法の機能は、例えば、適切に構成されたそれぞれのデータ解凍デバイスの任意のものによって、または、一般に、(例えばプロセッサデバイス/プロセッサチップ、またはメモリデバイス/メモリチップに含まれた、または関連付けられた)それぞれのデータ解凍方法を実行するように構成されたロジック回路を含むデバイスによって、あるいはそれらに換えて、CPUまたはDSP(例えば、図1〜5の処理ユニットP1...Pnのいずれか)などの汎用処理デバイスによりロードされ実行されるとそれぞれの方法を遂行させるコード命令を含む、それぞれのコンピュータプログラム製品によって、遂行されることができる。
図31は、本発明による一般的なシステム3100を示す。本システムは、1つ以上メモリ3110、(例えば、データ圧縮デバイス1810、2510のいずれかなどの)データ圧縮デバイス3120、および(例えば、データ解凍デバイス1830、2530のいずれかなどの)データ解凍デバイス3130を含む。有利には、システム3100は、(図1〜5のコンピュータシステム100〜500のいずれかなどの)コンピュータシステムであり、前記1つ以上のメモリ3110は、(図1〜5のメモリL1〜L3のいずれかなどの)キャッシュメモリ/メモリ(複数)、(図1〜5のメモリ130〜530のいずれかなどの)ランダムアクセスメモリ/メモリ(複数)、または補助的ストレージ/ストレージである。あるいは、システム3100は、(図6〜7の通信ネットワーク600、700などの)データ通信システムであり、前記1つ以上のメモリ3110は、(図6〜7のトランスミッタ610、710およびレシーバ620、720などの)、データ通信システム中の送信および受信ノードに関連付けられたデータバッファであってもよい。

Claims (96)

  1. 未圧縮データブロック(1805、2505)を圧縮データブロック(1818、2518)に圧縮するためのハイブリッドデータ圧縮デバイス(1810、2510)であって、前記未圧縮データブロックは1つまたは複数のデータ型の1つまたは複数のデータ値を含み、前記ハイブリッドデータ圧縮デバイスは、
    各コンプレッサがそれぞれのデータ圧縮スキーム(1814−1...1814−n、2514−1...2514−n)用に構成された、複数のデータコンプレッサ(1814、2514)と、
    前記未圧縮データブロック(1805、2505)のデータ値のデータ型を予測し、主たる基準として前記予測データ型のうちの支配的なデータ型を用いて、前記複数のデータコンプレッサの中から推定最適データコンプレッサを選択するように構成された予測器メカニズム(1812、2512)と、
    を含み、
    前記ハイブリッドデータ圧縮デバイスは、前記選択された推定最適データコンプレッサに前記未圧縮データブロックの全体を圧縮させることによって、前記圧縮データブロック(1818、2518)を生成するように構成される、
    ハイブリッドデータ圧縮デバイス。
  2. 前記ハイブリッドデータ圧縮デバイスは、前記圧縮データブロック(1818、2518)に関連付けられ、前記選択された推定最適データコンプレッサの前記データ圧縮スキームを識別する役割を果たすメタデータ(1824、2524、3024)を生成する(1816、2516、3016)ように構成される、請求項1に記載のハイブリッドデータ圧縮デバイス(1810、2510、3010)。
  3. 前記ハイブリッドデータ圧縮デバイスは、前記生成されたメタデータを、前記圧縮データブロック(1818、2518)と一緒にデータストレージ(1820、2520)の中に格納するように構成され、前記データストレージにはデータ解凍デバイス(1830、2530)がアクセス可能である、請求項2に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  4. 前記ハイブリッドデータ圧縮デバイスは、前記生成されたメタデータ(3024)を前記圧縮データブロック(3018)と一緒に、リンク(3020)を介してデータ解凍デバイス(3030)に送信するように構成される、請求項2に記載のハイブリッドデータ圧縮デバイス(3010)。
  5. 前記複数のデータコンプレッサ(1814、2514)は、
    ・ 第一データ圧縮スキーム用に構成された第一データコンプレッサと、
    ・ 前記第一圧縮スキームとは異なる第二データ圧縮スキーム用に構成された第二データコンプレッサと、
    を含み、
    前記第一および第二データ圧縮スキームは各々、ロスレス圧縮スキームまたはロッシー圧縮スキームである、
    請求項1〜4のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  6. 前記第一および第二データ圧縮スキームは、
    ・ 統計的(可変長)符号化、
    ・ ディクショナリベースの圧縮、
    ・ デルタ符号化、
    ・ パターンベースの圧縮、
    ・ 有意ベースの圧縮、または
    ・ 共通ブロック値圧縮、
    のうちの2つとして選択されたロスレス圧縮スキームである、請求項5に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  7. 前記第一データ圧縮スキームは、第一データ型のデータ値の間のデータローカリティを利用するように設計され、前記データローカリティは、時間的、空間的、またはこれらの組み合せであり、
    前記第二データ圧縮スキームは、第二データ型のデータ値の間のデータローカリティを利用するように設計され、前記データローカリティは、時間的、空間的、またはこれらの組み合せである、
    請求項5または6に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  8. 前記データブロックは、
    コンピュータシステム中のキャッシュの中にストレージするためのキャッシュライン、キャッシュセット、キャッシュブロック、またはキャッシュセクタ、
    メモリ中へのストレージまたはコンピュータシステム内での転送のためのメモリ行、メモリページ、もしくはメモリセクタ、および
    データ通信システム中の送信リンクを介して転送するためのパケット、フリット、ペイロード、またはヘッダ、
    のうちの1つである、請求項1〜7のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  9. 前記データ値の前記データ型は、
    整数、ポインタ、浮動小数点数、文字、ストリング、ブール値、コード命令、または特定のフォーマットもしくは規格によって定義されたデータ型、
    のいずれかである、請求項1〜8のいずれかに記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  10. 前記予測器メカニズム(1812、2512)は、
    前記未圧縮データブロック(1805、2505)をセグメントに分割し、
    全セグメントに対し、前記セグメントを複数の候補データ型のうちの一予測データ型として分類するため、各セグメントの検査ビット部分を検査し、
    前記未圧縮データブロックの前記支配的なデータ型を判定するために、全セグメントの前記予測データ型の出現頻度を比較する、
    ように構成される、請求項1〜9のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  11. 前記候補データ型は、整数、ポインタ、浮動小数点数、文字、ストリング、ブール値、共通データ値ブロック、データコード命令、または特定のフォーマットもしくは規格によって定義されたデータ型、のうちの2つ以上である、請求項10に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  12. 前記検査ビット部分は、相異なる候補データ型に対して異なっている、請求項10または11に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  13. 前記候補データ型の1つは整数であり、
    前記データブロックのサイズはmバイトであり、
    前記セグメントのサイズはnバイトであり、
    m/nは2の倍数であり、
    前記検査ビット部分は前記セグメントの最上位のpバイトであり、
    n/pが2である、
    請求項10〜12のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  14. 前記予測器メカニズム(1812、2512)は、前記検査ビット部分がいくつかの事前定義されたpバイト値のいずれかに等しい場合、前記セグメントを整数として分類するように構成される、請求項13に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  15. 前記候補データ型の1つはポインタであり、
    前記データブロックの前記サイズはmバイトであり、
    前記セグメントの前記サイズはnバイトであり、
    m/nは2の倍数であり、
    前記検査ビット部分は前記セグメントの最上位のpバイトであり、
    n/pが2である、
    請求項10〜14のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  16. 前記予測器メカニズム(1812、2512)は、前記検査ビット部分の最上位2バイトが事前定義されたp/2バイト値に等しく、だが最下位の2バイトは不等の場合、前記セグメントをポインタとして分類するように構成される、請求項15に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  17. 前記候補データ型の1つは浮動小数点数であり、
    前記データブロックの前記サイズはmバイトであり、
    前記セグメントの前記サイズはnバイトであり、
    m/nは2の倍数であり、
    前記検査ビット部分は前記セグメントの最上位ビットの次の最上位のqビットである、
    請求項10〜16のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  18. 前記予測器メカニズム(1812、2512)は、前記セグメントの前記検査ビット部分を、前記データブロック中の、同じまたはクラスタ化された浮動小数点指数を示す隣接のセグメントの検査ビット部分と突き合わせることによって、前記セグメントを浮動小数点数として分類するように構成される、請求項17に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  19. 前記候補データ型の1つは共通データ値であり、
    前記データブロックの前記サイズはmバイトであり、
    前記セグメントの前記サイズはnバイトであり、
    m/nは2の倍数であり、
    前記検査ビット部分はセグメント全体である、
    請求項10〜18のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  20. 前記予測器メカニズム(1812、2512)は、前記セグメントを、その全データ値が同じ共通データ値を有するとき、共通データ値として分類するように構成される、請求項19に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  21. 前記共通データ値がヌル値である、請求項20に記載のハイブリッドデータ圧縮デバイス。
  22. 前記ハイブリッドデータ圧縮デバイスは、前記未圧縮データブロック(1805、2505)の全セグメントが共通データ値として分類されたとき、前記推定最適データコンプレッサとして、データ圧縮スキームとして共通ブロック値圧縮を有するデータコンプレッサ(1814、2514)を選択するように構成される、請求項10〜21のいずれかに記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  23. 前記予測器メカニズム(1812、2512)は、前記未圧縮データブロックの前記支配的なデータ型を判定する際に、前記セグメントの2つの異なる予測データ型が同じ出現頻度を有するとき、一方を他方よりも優先するように構成される、請求項10〜22のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  24. 前記予測器メカニズム(1812、2512)は、前記未圧縮データブロックの前記支配的なデータ型を判定する際に、ポインタおよび浮動小数点数よりも整数を、且つ浮動小数点数よりもポインタを、優先するように構成される、請求項23に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  25. 前記予測器メカニズム(1812、2512)は、前記セグメントのどの予測データ型の出現もないとき、前記推定最適データコンプレッサとしてデフォルトデータコンプレッサを選択するように構成される、請求項10〜24のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  26. 前記予測器メカニズム(1812、2512)は、前記セグメントのどの予測データ型の出現もないとき、推定最適データコンプレッサの代わりに無圧縮を選択し、前記未圧縮データブロックの圧縮を取り止めるように構成される、請求項10〜24のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  27. 複数の圧縮サイクルの過程で、前記それぞれの支配的なデータ型について、データコンプレッサの理想的な選択と対比して前記それぞれの選択された推定最適データコンプレッサをモニタし、
    特定の支配的なデータ型の圧縮性に関し、別のデータコンプレッサがさらに効率的であった可能性のあることを検出し、
    今後の圧縮サイクルについて、前記特定の支配的なデータ型に対し、前記最適データコンプレッサを前記別のデータコンプレッサに変更する、
    ようにさらに構成される、請求項1〜26のいずれか一項に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  28. 前記それぞれの支配的なデータ型のためのデータコンプレッサの前記理想的な選択がオラクルセレクタによって提供され、前記オラクルセレクタは、前記複数の全てのデータコンプレッサ(1814、2514)の前記データ圧縮スキームを使って前記未圧縮のデータブロックを圧縮し、前記それぞれの理想的選択として、前記それぞれの未圧縮データブロックの最善の圧縮性が得られる前記データ圧縮スキームを有する前記コンプレッサを選定する、請求項27に記載のハイブリッドデータ圧縮デバイス(1810、2510)。
  29. 前記複数のデータコンプレッサは、
    共通ブロック値圧縮スキームである第一データ圧縮スキーム用に構成された第一データコンプレッサ(1630)と、
    前記第一データ圧縮スキームとは異なる、統計的(可変長)符号化、ディクショナリベースの圧縮、デルタ符号化、パターンベースの圧縮、および有意ベースの圧縮のうちの1つである第二データ圧縮スキーム用に構成された第二データコンプレッサ(1620)と、
    を含み、
    前記ハイブリッドデータ圧縮デバイスは、前記予測器メカニズム(1630)によって前記未圧縮データブロック(1605)で共通データ値が支配的であることが判明した場合、前記第一データコンプレッサ(1630)に、前記未圧縮データブロック(1605)の全体を圧縮共通値データブロックに圧縮させることによって、前記圧縮データブロック(1618)を生成するように構成され、それ以外の場合は、前記第二データコンプレッサ(1630)に、前記第二データ圧縮スキームに従い前記未圧縮データブロック(1605)の全体を圧縮させることによって、前記圧縮データブロック(1618)を生成するように構成される、
    請求項1〜28のいずれか一項に記載のハイブリッドデータ圧縮デバイス。
  30. 前記圧縮共通値データブロックは単一ビットを包含する、請求項29に記載のハイブリッドデータ圧縮デバイス。
  31. 前記予測器メカニズム(1630)は前記第一データコンプレッサ(1630)と組み込まれる、請求項29または30に記載のハイブリッドデータ圧縮デバイス。
  32. 前記予測器メカニズム(1630)は、前記未圧縮データブロック(1605)の全データ値が前記共通データ値を有する場合、前記未圧縮データブロックで前記共通データ値が支配的であることを見いだすように構成される、請求項29〜31のいずれか一項に記載のハイブリッドデータ圧縮デバイス。
  33. 前記共通データ値はヌル値である、請求項29〜32のいずれか一項に記載のハイブリッドデータ圧縮デバイス。
  34. 未圧縮データブロック(1805、2505)を圧縮データブロック(1818、2518)に圧縮するためのハイブリッドデータ圧縮方法であって、前記未圧縮データブロックは1つまたは複数のデータ型の1つまたは複数のデータ値を含み、前記ハイブリッドデータ圧縮方法は、
    前記未圧縮データブロック(1805、2505)のデータ値のデータ型を予測するステップ(2810)と、
    主たる基準として前記予測データ型中の支配的なデータ型を用いて、複数のデータ圧縮スキーム(1814−1...1814−n、2514−1...2514−n)の中から推定最適データ圧縮スキームを選択するステップ(2820)と、
    前記圧縮データブロック(1818、2518)を生成するために、前記選択された推定最適データ圧縮スキームによって前記未圧縮データブロックの全体を圧縮するステップ(2830)と、
    を含む、ハイブリッドデータ圧縮方法。
  35. 前記圧縮データブロック(1818、2518)に関連付けられたメタデータ(1824、2524、3024)を生成するステップ(1816、2516、3016)であって、前記メタデータは、前記選択された推定最適データ圧縮スキームを識別する役割を果たす、ステップをさらに含む、請求項34に記載のハイブリッドデータ圧縮方法。
  36. 前記ハイブリッドデータ圧縮デバイスは、前記生成されたメタデータを前記圧縮データブロック(1818、2518)と一緒にデータストレージ(1820、2520)中に格納するように構成され、前記データストレージにはデータ解凍デバイス(1830、2530)がアクセス可能である、請求項35に記載のハイブリッドデータ圧縮方法。
  37. 前記生成されたメタデータ(3024)を前記圧縮データブロック(3018)と一緒にリンク(3020)を介して、データ解凍デバイス(3030)に送信するステップをさらに含む、請求項35に記載のハイブリッドデータ圧縮方法。
  38. 前記複数のデータ圧縮スキーム(1814−1...1814−n、2514−1...2514−n)は、
    ・ 第一データ圧縮スキームと、
    ・ 前記第一データ圧縮スキームとは異なる第二データ圧縮スキームと、
    を含み、
    前記第一および第二データ圧縮スキームは各々、ロスレス圧縮スキームまたはロッシー圧縮スキームである、
    請求項34〜37のいずれか一項に記載のハイブリッドデータ圧縮方法。
  39. 前記第一および第二データ圧縮スキームは、
    ・ 統計的(可変長)符号化、
    ・ ディクショナリベースの圧縮、
    ・ デルタ符号化、
    ・ パターンベースの圧縮、
    ・ 有意ベースの圧縮、または
    ・ 共通ブロック値圧縮、
    のうちの2つとして選択されたロスレス圧縮スキームである、請求項38に記載のハイブリッドデータ圧縮方法。
  40. 前記第一データ圧縮スキームは、第一データ型のデータ値の間のデータローカリティを利用するように設計され、前記データローカリティは、時間的、空間的、またはこれらの組み合せであり、
    前記第二データ圧縮スキームは、第二データ型のデータ値の間のデータローカリティを利用するように設計され、前記データローカリティは、時間的、空間的、またはこれらの組み合せである、
    請求項38または39に記載のハイブリッドデータ圧縮方法。
  41. 前記データブロックは、
    コンピュータシステム中のキャッシュの中にストレージするためのキャッシュライン、キャッシュセット、キャッシュブロック、またはキャッシュセクタ、
    メモリ中へのストレージまたはコンピュータシステム内での転送のためのメモリ行、メモリページ、もしくはメモリセクタ、および
    データ通信システム中の送信リンクを介して転送するためのパケット、フリット、ペイロード、またはヘッダ、
    のうちの1つである、請求項34〜40のいずれか一項に記載のハイブリッドデータ圧縮方法。
  42. 前記データ値の前記データ型は、
    整数、ポインタ、浮動小数点数、文字、ストリング、ブール値、コード命令、または特定のフォーマットもしくは規格によって定義されたデータ型、
    のいずれかである、請求項34〜41のいずれか一項に記載のハイブリッドデータ圧縮方法。
  43. 前記未圧縮データブロック(1805、2505)をセグメントに分割するステップと、
    全セグメントに対し、前記セグメントを複数の候補データ型のうちの一予測データ型として分類するため、各セグメントの検査ビット部分を検査するステップと、
    前記未圧縮データブロックの前記支配的なデータ型を判定するために、全セグメントの前記予測データ型の出現頻度を比較するステップと、
    をさらに含む、請求項34〜42のいずれか一項に記載のハイブリッドデータ圧縮方法。
  44. 前記候補データ型は、整数、ポインタ、浮動小数点数、文字、ストリング、ブール値、共通データ値ブロック、データコード命令、または特定のフォーマットもしくは規格によって定義されたデータ型、のうちの2つ以上である、請求項43に記載のハイブリッドデータ圧縮方法。
  45. 前記検査ビット部分は相異なる候補データ型に対して異なっている、請求項43または44に記載のハイブリッドデータ圧縮方法。
  46. 前記候補データ型の1つは整数であり、
    前記データブロックのサイズはmバイトであり、
    前記セグメントのサイズはnバイトであり、
    m/nは2の倍数であり、
    前記検査ビット部分は前記セグメントの最上位のpバイトであり、
    n/pが2である、
    請求項43〜45のいずれか一項に記載のハイブリッドデータ圧縮方法。
  47. 前記検査ビット部分がいくつかの事前定義されたpバイト値のいずれかに等しい場合、前記セグメントを整数として分類するステップをさらに含む、請求項46に記載のハイブリッドデータ圧縮方法。
  48. 前記候補データ型の1つはポインタであり、
    前記データブロックの前記サイズはmバイトであり、
    前記セグメントの前記サイズはnバイトであり、
    m/nは2の倍数であり、
    前記検査ビット部分は前記セグメントの最上位のpバイトであり、
    n/pが2である、
    請求項43〜47のいずれか一項に記載のハイブリッドデータ圧縮方法。
  49. 前記検査ビット部分の最上位の2バイトが事前定義されたp/2バイト値に等しく、だが最下位の2バイトは不等である場合、前記セグメントをポインタとして分類するステップをさらに含む、請求項48に記載のハイブリッドデータ圧縮方法。
  50. 前記候補データ型の1つは浮動小数点数であり、
    前記データブロックの前記サイズはmバイトであり、
    前記セグメントの前記サイズはnバイトであり、
    m/nは2の倍数であり、
    前記検査ビット部分は前記セグメントの最上位ビットの次の最上位のqビットである、
    請求項43〜49のいずれか一項に記載のハイブリッドデータ圧縮方法。
  51. 前記セグメントの前記検査ビット部分を、前記データブロック中の、同じまたはクラスタ化された浮動小数点指数を示す隣接のセグメントの検査ビット部分と突き合わせることによって、前記セグメントを浮動小数点数として分類するステップをさらに含む、請求項50に記載のハイブリッドデータ圧縮方法。
  52. 前記候補データ型の1つは共通データ値であり、
    前記データブロックの前記サイズはmバイトであり、
    前記セグメントの前記サイズはnバイトであり、
    m/nは2の倍数であり、
    前記検査ビット部分はセグメント全体である、
    請求項43〜51のいずれか一項に記載のハイブリッドデータ圧縮方法。
  53. 前記セグメントの全データ値が同じ共通データ値を有するとき、前記セグメントを共通データ値として分類するステップをさらに含む、請求項52に記載のハイブリッドデータ圧縮方法。
  54. 前記共通データ値はヌル値である、請求項53に記載のハイブリッドデータ圧縮デバイス。
  55. 前記未圧縮データブロック(1805、2505)の全セグメントが共通データ値として分類されたとき、前記推定最適データ圧縮スキームとして、共通ブロック値圧縮であるデータ圧縮スキームを選択するステップをさらに含む、請求項43〜54のいずれか一項に記載のハイブリッドデータ圧縮方法。
  56. 前記未圧縮データブロックの前記支配的なデータ型を判定する際に、前記セグメントの2つの異なる予測データ型が同じ出現頻度を有するとき、一方を他方よりも優先するステップをさらに含む、請求項43〜55のいずれか一項に記載のハイブリッドデータ圧縮方法。
  57. 前記未圧縮データブロックの前記支配的なデータ型を判定する際に、ポインタおよび浮動小数点数よりも整数を、且つ浮動小数点数よりもポインタを優先するステップをさらに含む、請求項56に記載のハイブリッドデータ圧縮方法。
  58. 前記セグメントのどの予測データ型の出現もないとき、推定最適データコンプレッサとしてデフォルトデータコンプレッサを選択するステップをさらに含む、請求項43〜57のいずれか一項に記載のハイブリッドデータ圧縮方法。
  59. 前記セグメントのどの予測データ型の出現もないとき、推定最適データコンプレッサの代わりに無圧縮を選択し、前記未圧縮データブロックの圧縮を取り止めるステップをさらに含む、請求項43〜57のいずれか一項に記載のハイブリッドデータ圧縮方法。
  60. 複数の圧縮サイクルの過程で、前記それぞれの支配的なデータ型のためのデータ圧縮スキームの理想的な選択と対比して、前記それぞれの選択された推定最適データ圧縮スキームをモニタするステップと、
    特定の支配的なデータ型の圧縮性に関し、別のデータ圧縮スキームがさらに効率的であった可能性のあることを検出するステップと、
    今後の圧縮サイクルについて、前記特定の支配的なデータ型に対し、前記最適のデータ圧縮スキームを前記別のデータ圧縮スキームに変更するステップと、
    をさらに含む、請求項34〜59のいずれか一項に記載のハイブリッドデータ圧縮方法。
  61. 前記それぞれの支配的なデータ型のためのデータ圧縮スキームの前記理想的な選択がオラクルセレクタによって提供され、前記オラクルセレクタは、前記複数の全てのデータ圧縮スキームを使って前記未圧縮のデータブロックを圧縮し、前記それぞれの理想的選択として、前記それぞれの未圧縮データブロックの最善の圧縮性が得られる前記データ圧縮スキームを選定する、請求項60に記載のハイブリッドデータ圧縮方法。
  62. 前記複数のデータ圧縮スキーム(1814−1...1814−n、2514−1...2514−n)は、
    共通ブロック値圧縮スキームである第一データ圧縮スキームと、
    前記第一データ圧縮スキームとは異なった、統計的(可変長)符号化、ディクショナリベースの圧縮、デルタ符号化、パターンベースの圧縮、および有意ベースの圧縮のうちの1つである第二データ圧縮スキームと、
    を含み、
    前記方法は、前記未圧縮データブロック(1605)で共通データ値が支配的であることが判明した場合、前記未圧縮データブロック(1605)の全体を、前記第一ロスレスデータ圧縮スキームにより圧縮共通値データブロックに圧縮することによって、前記圧縮データブロック(1618)を生成するステップと、それ以外の場合は、前記第二データ圧縮スキームによって前記未圧縮データブロック(1605)の全体を圧縮することによって、前記圧縮データブロック(1618)を生成するステップとを含む、
    請求項34〜61のいずれか一項に記載のハイブリッドデータ圧縮方法。
  63. 前記圧縮共通値データブロックは単一ビットを包含する、請求項62に記載のハイブリッドデータ圧縮方法。
  64. 前記未圧縮データブロック(1605)の全データ値が前記共通データ値を有するとき、前記共通データ値が前記未圧縮データブロック(1605)で支配的であることが見いだされる、請求項62または63に記載のハイブリッドデータ圧縮方法。
  65. 前記共通データ値はヌル値である、請求項62〜64のいずれか一項に記載のハイブリッドデータ圧縮方法。
  66. 圧縮データブロック(1834、2534)を、1つまたは複数のデータ型の1つまたは複数のデータ値を含む解凍データブロック(1895、2595)に解凍するためのハイブリッドデータ解凍デバイス(1830、2530)であって、前記ハイブリッドデータ解凍デバイスは、
    各デコンプレッサがそれぞれのデータ解凍スキーム(1835−1...1835−n、2535−1...2535−n)用に構成された、複数のデータデコンプレッサ(1835、2535)、
    を含み、
    前記ハイブリッドデータ解凍デバイスは、前記複数のデータデコンプレッサ(1814、2514)の中から選択された推定最適データデコンプレッサに、前記圧縮データブロックの全体を解凍させることによって、前記解凍データブロック(1895、2595)を生成するように構成される、
    ハイブリッドデータ解凍デバイス。
  67. 前記ハイブリッドデータ解凍デバイスは、前記圧縮データブロック(1834、2534)に関連付けられたメタデータ(1824、2524、3024)を読み出して(1832、2532、3032)、前記メタデータに基づいて前記推定最適データデコンプレッサを選択するように構成される、請求項66に記載のハイブリッドデータ解凍デバイス(1830、2530)。
  68. 前記ハイブリッドデータ解凍デバイスは、前記メタデータを前記圧縮データブロック(1834、2534)と一緒にデータストレージ(1820、2520)から読み出すように構成され、前記データストレージにはデータ圧縮デバイス(1810、2510)がアクセス可能である、請求項67に記載のハイブリッドデータ解凍デバイス(1830、2530)。
  69. 前記ハイブリッドデータ解凍デバイスは、前記メタデータ(3034)を前記圧縮データブロック(3038)と一緒に、リンク(3020)を介してデータ圧縮デバイス(3010)から受信するように構成される、請求項67に記載のハイブリッドデータ解凍デバイス(3030)。
  70. 前記複数のデータデコンプレッサ(1835、2535)は、
    ・ 第一データ解凍スキーム用に構成された第一データデコンプレッサと、
    ・ 前記第一データ解凍スキームとは異なる第二データ解凍スキーム用に構成された第二データデコンプレッサと、
    を含み、
    前記第一および第二データ解凍スキームの各々はロスレス解凍スキームまたはロッシー解凍スキームである、
    請求項67〜69のいずれか一項に記載のハイブリッドデータ解凍デバイス(1830、2530)。
  71. 前記第一および第二データ解凍スキームは、
    ・ 統計的(可変長)復号、
    ・ ディクショナリベースの解凍、
    ・ デルタ復号、
    ・ パターンベースの解凍、
    ・ 有意ベースの解凍、または
    ・ 共通ブロック値解凍、
    のうちの2つとして選択されたロスレス解凍スキームである、請求項70に記載のハイブリッドデータ解凍デバイス(1830、2530)。
  72. 前記データブロックは、
    コンピュータシステム中のキャッシュの中にストレージするためのキャッシュライン、キャッシュセット、キャッシュブロック、またはキャッシュセクタ、
    メモリ中へのストレージまたはコンピュータシステム内での転送のためのメモリ行、メモリページ、もしくはメモリセクタ、および
    データ通信システム中の送信リンクを介して転送するためのパケット、フリット、ペイロード、またはヘッダ、
    のうちの1つである、請求項70または71に記載のハイブリッドデータ解凍デバイス(1830、2530)。
  73. 前記データ値の前記データ型は、
    整数、ポインタ、浮動小数点数、文字、ストリング、ブール値、コード命令、または特定のフォーマットもしくは規格によって定義されたデータ型、
    のいずれかである、請求項70〜72のいずれか一項に記載のハイブリッドデータ解凍デバイス(1830、2530)。
  74. 前記複数のデータデコンプレッサは、
    共通ブロック値解凍スキームである第一データ解凍スキーム用に構成された第一データデコンプレッサ(1720)と、
    前記第一データ解凍スキームとは異なる、統計的(可変長)復号、ディクショナリベースの解凍、デルタ復号、パターンベースの解凍、および有意ベースの解凍のうちの1つである第二データ解凍スキーム用に構成された第二データデコンプレッサ(1710)と、
    を含み、
    前記ハイブリッドデータ解凍デバイスは、前記圧縮データブロック(1705)が圧縮共通値データブロックであるかどうかをチェックし、そうである場合は、前記第一データデコンプレッサ(1720)に、前記圧縮データブロック(1705)の全体を、解凍共通値データブロックに解凍させることによって、前記解凍データブロック(1795)を生成し、そうでない場合は、前記第二データデコンプレッサ(1710)に、前記圧縮データブロック(1705)を、前記第二データ解凍スキームに従って解凍させることによって、前記解凍データブロック(1795)を生成するように構成される、
    請求項66〜73のいずれか一項に記載のハイブリッドデータ解凍デバイス。
  75. 前記圧縮共通値データブロックは、単一ビットを包含する、請求項74に記載のハイブリッドデータ圧縮デバイス。
  76. 前記第一データデコンプレッサ(1720)は、前記解凍共通値データブロックに共通の値を充填することによって、前記圧縮データブロック(1705)の全体を前記解凍共通値データブロックに解凍するように構成される、請求項74または75に記載のハイブリッドデータ圧縮デバイス。
  77. 前記共通データ値はヌル値である、請求項76に記載のハイブリッドデータ解凍デバイス。
  78. 圧縮データブロック(1834、2534)を、1つまたは複数のデータ型の1つまたは複数のデータ値を含む解凍データブロック(1895、2595)に解凍するためのハイブリッドデータ解凍方法であって、前記ハイブリッドデータ解凍方法は、
    前記複数のデータ解凍スキーム(1835−1...1835−n、2535−1...2535−n)の中から推定最適データ解凍スキームを選択するステップ(2910)と、
    前記解凍データブロック(1895、2595)を生成するために、前記選択された推定最適データ圧縮スキームによって、前記圧縮データブロック(1834、2534)の全体を解凍するステップ(2920)と、
    を含む、ハイブリッドデータ解凍方法。
  79. 前記圧縮データブロック(1834、2534)に関連付けられたメタデータ(1824、2524、3024)を読み出すステップ(1832、2532、3032)と、前記メタデータに基づいて前記推定最適データ解凍スキームを選択するステップとをさらに含む、請求項78に記載のハイブリッドデータ解凍方法。
  80. 前記メタデータは、データストレージ(1820、2520)から前記圧縮データブロック(1834、2534)と一緒に読み出され、前記データストレージには、データ圧縮デバイス(1810、2510)がアクセス可能である、請求項79に記載のハイブリッドデータ解凍方法。
  81. 前記メタデータ(3034)は、リンク(3020)を介して、データ圧縮デバイス(3010)から、前記圧縮データブロック(3038)と一緒に受信される、請求項79に記載のハイブリッドデータ解凍方法。
  82. 前記複数のデータ解凍スキーム(1835、2535)は、
    ・ 第一データ解凍スキームと、
    ・ 前記第一データ解凍スキームとは異なる第二データ解凍スキームと、
    を含み、
    前記第一および第二データ解凍スキームの各々は、ロスレス解凍スキームまたはロッシー解凍スキームである、
    請求項78〜81のいずれか一項に記載のハイブリッドデータ解凍方法。
  83. 前記第一および第二データ解凍スキームは、
    ・ 統計的(可変長)復号、
    ・ ディクショナリベースの解凍、
    ・ デルタ復号、
    ・ パターンベースの解凍、
    ・ 有意ベースの解凍、または
    ・ 共通ブロック値解凍、
    のうちの2つとして選択されたロスレス解凍スキームである、請求項78〜82のいずれか一項に記載のハイブリッドデータ解凍方法。
  84. 前記データブロックは、
    コンピュータシステム中のキャッシュの中にストレージするためのキャッシュライン、キャッシュセット、キャッシュブロック、またはキャッシュセクタ、
    メモリ中へのストレージまたはコンピュータシステム内での転送のためのメモリ行、メモリページ、もしくはメモリセクタ、および
    データ通信システム中の送信リンクを介して転送するためのパケット、フリット、ペイロード、またはヘッダ、
    のうちの1つである、請求項78〜83のいずれか一項に記載のハイブリッドデータ解凍方法。
  85. 前記データ値の前記データ型は、
    整数、ポインタ、浮動小数点数、文字、ストリング、ブール値、コード命令、または特定のフォーマットもしくは規格によって定義されたデータ型、
    のいずれかである、請求項78〜84のいずれか一項に記載のハイブリッドデータ解凍方法。
  86. 前記複数のデータ解凍スキーム(1835、2535)は、
    共通ブロック値解凍スキームである第一データ解凍スキームと、
    前記第一データ解凍スキームとは異なる、統計的(可変長)復号、ディクショナリベースの解凍、デルタ復号、パターンベースの解凍、および有意ベースの解凍のうちの1つである第二データ解凍スキームと、
    を含み、
    前記方法は、前記圧縮データブロック(1705)が圧縮共通値データブロックであるかどうかをチェックするステップと、そうである場合は、前記第一データデコンプレッサ(1720)に、前記圧縮データブロック(1705)の全体を、解凍共通値データブロックに解凍させることによって、前記解凍データブロック(1795)を生成するステップと、そうでない場合は、前記第二データデコンプレッサ(1710)に、前記圧縮データブロック(1705)を、前記第二データ解凍スキームに従って解凍させることによって、前記解凍データブロック(1795)を生成するステップと、をさらに含む、
    請求項78〜85のいずれか一項に記載のハイブリッドデータ解凍方法。
  87. 前記圧縮共通値データブロックは、単一ビットを包含する、請求項86に記載のハイブリッドデータ解凍方法。
  88. 前記方法は、前記解凍共通値データブロックに共通の値を充填することによって、前記圧縮データブロック(1705)の全体を前記解凍共通値データブロックに解凍するステップを含む、請求項86または87に記載のハイブリッドデータ解凍方法。
  89. 前記共通データ値はヌル値である、請求項88に記載のハイブリッドデータ解凍方法。
  90. 処理デバイスによってロードされ実行されると、請求項34に記載の方法を遂行させるコード命令を含む、コンピュータプログラム製品。
  91. 請求項34に記載の方法を遂行するように構成されたロジック回路を含むデバイス。
  92. 処理デバイスによってロードされ実行されると請求項78に記載の方法を遂行させるコード命令を含む、コンピュータプログラム製品。
  93. 請求項78に記載の方法を遂行するように構成されたロジック回路を含むデバイス。
  94. 1つ以上のメモリ(3110)と、請求項1〜33のいずれか一項に記載のデータ圧縮デバイス(1500、2000、2200)と、請求項66〜77のいずれか一項に記載のデータ解凍デバイス(1700、2100、2400)とを含むシステム(3100)。
  95. 前記システムは、コンピュータシステム(100、200、300、400、500)であり、前記1つ以上のメモリ(3110)は、
    キャッシュメモリ(L1〜L3)と、
    ランダムアクセスメモリ(130、230、330、430、530)と、
    補助的ストレージと、
    から成る群からのものである、請求項94に記載のシステム(3100)。
  96. 前記システムは、データ通信システム(600、700)であり、前記1つ以上のメモリ(3110)はデータバッファである、請求項94に記載のシステム(3100)。
JP2017560651A 2015-05-21 2016-05-20 ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム Active JP7010548B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021185947A JP2022031735A (ja) 2015-05-21 2021-11-15 ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
SE1550644 2015-05-21
SE1550644-7 2015-05-21
SE1650119-9 2016-01-29
SE1650119 2016-01-29
PCT/SE2016/050462 WO2016186563A1 (en) 2015-05-21 2016-05-20 Methods, devices and systems for hybrid data compression and decompression

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021185947A Division JP2022031735A (ja) 2015-05-21 2021-11-15 ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム

Publications (2)

Publication Number Publication Date
JP2018522457A true JP2018522457A (ja) 2018-08-09
JP7010548B2 JP7010548B2 (ja) 2022-01-26

Family

ID=57320929

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017560651A Active JP7010548B2 (ja) 2015-05-21 2016-05-20 ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム
JP2021185947A Pending JP2022031735A (ja) 2015-05-21 2021-11-15 ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2021185947A Pending JP2022031735A (ja) 2015-05-21 2021-11-15 ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム

Country Status (7)

Country Link
US (2) US10476520B2 (ja)
EP (1) EP3304746B1 (ja)
JP (2) JP7010548B2 (ja)
KR (1) KR102578689B1 (ja)
CN (1) CN107925418B (ja)
CA (1) CA2986555A1 (ja)
WO (1) WO2016186563A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022532432A (ja) * 2019-12-28 2022-07-14 華為技術有限公司 データ圧縮方法およびコンピューティングデバイス

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3304746B1 (en) 2015-05-21 2021-04-07 Zeropoint Technologies AB Methods, devices and systems for hybrid data compression and decompression
US10063422B1 (en) * 2015-12-29 2018-08-28 Amazon Technologies, Inc. Controlled bandwidth expansion in compressed disaggregated storage systems
SE540178C2 (en) 2016-01-29 2018-04-24 Zeropoint Tech Ab Methods, devices and systems for compressing and decompressing data
US20180131749A1 (en) * 2016-11-10 2018-05-10 Ingram Micro Inc. System and Method for Optimizing Data Transfer using Selective Compression
CN106507107B (zh) * 2016-12-08 2019-07-05 北京数码视讯科技股份有限公司 数据的处理方法和装置
US10445261B2 (en) * 2016-12-30 2019-10-15 Intel Corporation System memory having point-to-point link that transports compressed traffic
US10061698B2 (en) 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US10599935B2 (en) * 2017-02-22 2020-03-24 Arm Limited Processing artificial neural network weights
GB2561036A (en) * 2017-03-31 2018-10-03 Cirrus Logic Int Semiconductor Ltd Methods and apparatus for buffering and compression of data
US10438569B2 (en) * 2017-04-17 2019-10-08 Intel Corporation Consolidation of data compression using common sectored cache for graphics streams
US10902546B2 (en) * 2017-04-21 2021-01-26 Intel Corporation Efficient skipping of data compression processes at computing devices
US10402111B1 (en) * 2017-08-14 2019-09-03 Xilinx, Inc. Systems and methods for data storage compression
US10250899B1 (en) 2017-09-22 2019-04-02 Qualcomm Incorporated Storing and retrieving high bit depth image data
US10419022B2 (en) 2017-11-30 2019-09-17 International Business Machines Corporation Run-length base-delta encoding for high-speed compression
US10642602B2 (en) * 2017-12-12 2020-05-05 Nxp Usa, Inc. NVM architecture with OTA support
GB201805628D0 (en) * 2018-04-05 2018-05-23 Qatar Found Education Science & Community Dev Method and system for data specific transceiver design for efficient ioT devices
US10305508B2 (en) * 2018-05-11 2019-05-28 Intel Corporation System for compressing floating point data
US10665006B2 (en) * 2018-06-29 2020-05-26 Intel Corporation Efficient prediction of most commonly occuring values in data blocks in computing environments
US11604738B2 (en) * 2018-09-28 2023-03-14 Advanced Micro Devices, Inc. Device and method for data compression using a metadata cache
CN109167919B (zh) * 2018-10-11 2020-05-15 北京文香信息技术有限公司 一种图片压缩方法及装置
US11144506B2 (en) * 2018-10-29 2021-10-12 EMC IP Holding Company LLC Compression of log data using field types
EP3900340A4 (en) 2018-12-21 2022-08-17 Zeropoint Technologies AB EFFECTIVE COMPRESSION AND DECOMPRESSION METHODS, DEVICES AND SYSTEMS TO ACHIEVE HIGHER THROUGHPUT
US10795825B2 (en) * 2018-12-26 2020-10-06 Advanced Micro Devices, Inc. Compressing data for storage in cache memories in a hierarchy of cache memories
JP7107877B2 (ja) 2019-03-22 2022-07-27 株式会社日立製作所 ストレージシステム、及び、記憶コスト適正化方法
CN109962711B (zh) * 2019-04-09 2022-07-08 深圳市道通智能航空技术股份有限公司 一种数据压缩方法、电子设备及存储介质
US20190243780A1 (en) * 2019-04-10 2019-08-08 Vinodh Gopal Scalable application-customized memory compression
US10749546B1 (en) * 2019-05-15 2020-08-18 Dell Products L.P. Method and system of content based dynamic data compression
CN112099725A (zh) * 2019-06-17 2020-12-18 华为技术有限公司 一种数据处理方法、装置及计算机可读存储介质
CN111010189B (zh) * 2019-10-21 2021-10-26 清华大学 一种对数据集的多路压缩方法、装置及存储介质
US11854022B2 (en) 2019-10-22 2023-12-26 Sap Se Proactively predicting transaction dates based on sparse transaction data
EP3817236A1 (en) * 2019-11-04 2021-05-05 Samsung Electronics Co., Ltd. Neural network data processing method and apparatus
JP7355622B2 (ja) * 2019-11-29 2023-10-03 株式会社日立製作所 エンコーダを有するストレージシステム
US11474949B2 (en) * 2020-04-03 2022-10-18 Microsoft Technology Licensing, Llc Physical memory compression
US11405622B2 (en) 2020-04-22 2022-08-02 Apple Inc. Lossless compression techniques
US11664816B2 (en) 2020-04-22 2023-05-30 Apple Inc. Lossy compression techniques
US11362672B2 (en) * 2020-05-08 2022-06-14 Qualcomm Incorporated Inline decompression
US11429294B2 (en) * 2020-05-22 2022-08-30 Dell Products L.P. Efficient compressed track size classification to reduce disk fragmentation and increase probability of in-place compressed writes
SE544557C2 (en) * 2020-12-01 2022-07-12 Zeropoint Tech Ab Systems, methods and devices for exploiting value similarity in computer memories
CN113176853A (zh) * 2021-04-26 2021-07-27 深圳市华沃表计科技有限公司 数据压缩存储方法
CN113364467B (zh) * 2021-06-04 2022-07-08 山东云海国创云计算装备产业创新中心有限公司 一种哈夫曼解码系统、方法、设备及存储介质
CN113487025B (zh) * 2021-07-02 2023-09-08 浙江大学 面向神经网络检查点数据的智能压缩存储方法和系统
WO2023055459A1 (en) * 2021-09-29 2023-04-06 Micron Technology, Inc. Early detection of compression status using inline metadata
JP2023064241A (ja) * 2021-10-26 2023-05-11 株式会社日立製作所 ストレージシステム及びストレージシステムにおけるデータ処理方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06350457A (ja) * 1993-06-03 1994-12-22 Hitachi Ltd データ信号の記録再生方法および装置
US5467087A (en) * 1992-12-18 1995-11-14 Apple Computer, Inc. High speed lossless data compression system
JPH08237208A (ja) * 1995-02-23 1996-09-13 Daihatsu Motor Co Ltd 情報送信装置及び情報受信装置
JP2002057905A (ja) * 2000-05-01 2002-02-22 Xerox Corp 画像ドキュメント圧縮方法及び圧縮ドキュメント記述用データ構造
US20020097172A1 (en) * 1998-12-11 2002-07-25 Fallon James J. Content independent data compression method and system
JP2002262102A (ja) * 2001-03-05 2002-09-13 Matsushita Electric Ind Co Ltd 画像符号化装置、画像符号化方法、及びその記憶媒体
JP2008152339A (ja) * 2006-12-14 2008-07-03 Nec Corp 情報処理装置および情報処理方法
WO2009022531A1 (ja) * 2007-08-13 2009-02-19 Nec Corporation データ圧縮伸張方法
US20140101485A1 (en) * 2012-10-04 2014-04-10 Albert W. Wegener Data compression profiler for configuration of compression

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805932A (en) 1994-04-22 1998-09-08 Sony Corporation System for transmitting compressed data if compression ratio is at least preset ratio and pre-compressed data if compression ratio is less than preset ratio
US7190284B1 (en) 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US6272453B1 (en) 1998-01-05 2001-08-07 Trw Inc. Concurrent legacy and native code execution techniques
US6492991B1 (en) 1998-08-28 2002-12-10 Ati International Srl Method and apparatus for controlling compressed Z information in a video graphics system
US7162583B2 (en) * 2003-12-29 2007-01-09 Intel Corporation Mechanism to store reordered data with compression
JP4479530B2 (ja) 2004-12-28 2010-06-09 カシオ電子工業株式会社 データ圧縮装置、及びデータ復元装置
US7961960B2 (en) * 2006-08-24 2011-06-14 Dell Products L.P. Methods and apparatus for reducing storage size
US20080228998A1 (en) 2007-03-16 2008-09-18 Spansion Llc Memory storage via an internal compression algorithm
US8208532B2 (en) 2008-03-31 2012-06-26 Oracle America, Inc. Method and apparatus for data compression and decompression
EP2481001B1 (en) 2009-09-21 2014-11-05 XRing Technologies GmbH A method and system for error resilient compression and decompression of computed tomography data
CN102843142B (zh) * 2011-06-23 2013-07-31 深圳市国微电子有限公司 可编程逻辑器件配置数据流压缩、解压缩处理方法及系统
WO2013003479A2 (en) 2011-06-30 2013-01-03 Samplify Systems, Inc. Compression of floating-point data
US8497788B1 (en) 2012-04-25 2013-07-30 Pure Storage Inc. Efficient techniques for aligned fixed-length compression
US9330001B2 (en) 2012-05-21 2016-05-03 Zeropoint Technologies Ab Cache system and a method of operating a cache memory
KR102011135B1 (ko) * 2012-12-11 2019-08-14 삼성전자주식회사 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
EP3304746B1 (en) 2015-05-21 2021-04-07 Zeropoint Technologies AB Methods, devices and systems for hybrid data compression and decompression
EP4012928B1 (en) 2015-05-21 2023-06-14 Zeropoint Technologies AB Methods, devices and systems for semantic-value data compression and decompression
SE540178C2 (en) 2016-01-29 2018-04-24 Zeropoint Tech Ab Methods, devices and systems for compressing and decompressing data
CN108702160B (zh) 2016-01-29 2022-05-17 零点科技公司 用于压缩和解压缩数据的方法、设备和系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5467087A (en) * 1992-12-18 1995-11-14 Apple Computer, Inc. High speed lossless data compression system
JPH06350457A (ja) * 1993-06-03 1994-12-22 Hitachi Ltd データ信号の記録再生方法および装置
JPH08237208A (ja) * 1995-02-23 1996-09-13 Daihatsu Motor Co Ltd 情報送信装置及び情報受信装置
US20020097172A1 (en) * 1998-12-11 2002-07-25 Fallon James J. Content independent data compression method and system
JP2002057905A (ja) * 2000-05-01 2002-02-22 Xerox Corp 画像ドキュメント圧縮方法及び圧縮ドキュメント記述用データ構造
JP2002262102A (ja) * 2001-03-05 2002-09-13 Matsushita Electric Ind Co Ltd 画像符号化装置、画像符号化方法、及びその記憶媒体
JP2008152339A (ja) * 2006-12-14 2008-07-03 Nec Corp 情報処理装置および情報処理方法
WO2009022531A1 (ja) * 2007-08-13 2009-02-19 Nec Corporation データ圧縮伸張方法
US20140101485A1 (en) * 2012-10-04 2014-04-10 Albert W. Wegener Data compression profiler for configuration of compression

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ALAA R. ALAMELDEEN AND DAVID A. WOOD: "Frequent Pattern Compression: A Significance-Based Compression Scheme for L2 Caches", TECHNIAL REPORT #1500, UNIVERSITY OF WISCONSIN-MADISON DEPARTMENT OF COMPUTER SCIENCES, JPN6020025931, 2004, ISSN: 0004308232 *
JULIEN DUSSER ET AL.: "Zero-Content Augmented Caches", ICS '09: PROCEEDINGS OF THE 23RD INTERNATIONAL CONFERENCE ON SUPERCOMPUTING, vol. pp. 46-55, JPN7020002072, 2009, ISSN: 0004308233 *
MAGNUS EKMAN AND PER STENSTROM: "A Robust Main-Memory Compression Scheme", 32ND INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE (ISCA'05), JPN6020025932, 2005, ISSN: 0004308234 *
YINGYING TIAN ET AL.: "Last-level Cache Deduplication", ICS '14: PROCEEDINGS OF THE 28TH ACM INTERNATIONAL CONFERENCE ON SUPERCOMPUTING, JPN7020002073, 2014, pages 53 - 62, XP058051240, ISSN: 0004308235, DOI: 10.1145/2597652.2597655 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022532432A (ja) * 2019-12-28 2022-07-14 華為技術有限公司 データ圧縮方法およびコンピューティングデバイス
JP7372347B2 (ja) 2019-12-28 2023-10-31 華為技術有限公司 データ圧縮方法およびコンピューティングデバイス

Also Published As

Publication number Publication date
US10476520B2 (en) 2019-11-12
CA2986555A1 (en) 2016-11-24
CN107925418B (zh) 2021-06-01
US20200044663A1 (en) 2020-02-06
US10819369B2 (en) 2020-10-27
US20180138921A1 (en) 2018-05-17
CN107925418A (zh) 2018-04-17
JP7010548B2 (ja) 2022-01-26
WO2016186563A1 (en) 2016-11-24
EP3304746B1 (en) 2021-04-07
EP3304746A1 (en) 2018-04-11
KR102578689B1 (ko) 2023-09-15
KR20180019597A (ko) 2018-02-26
EP3304746A4 (en) 2019-01-09
JP2022031735A (ja) 2022-02-22

Similar Documents

Publication Publication Date Title
US10819369B2 (en) Methods, devices and systems for hybrid data compression and decompression
US10846218B2 (en) Methods, devices and systems for compressing and decompressing data
CN109075798B (zh) 可变大小符号基于熵的数据压缩
CN108702160B (zh) 用于压缩和解压缩数据的方法、设备和系统
EP2034738B1 (en) Data compression apparatus and method
KR20120084180A (ko) 데이터 압축 장치, 이의 동작 방법, 및 이를 포함하는 데이터 처리 장치
US11043963B1 (en) System and components for encoding integers
CN115941598A (zh) 一种流表半卸载方法、设备及介质
US8868584B2 (en) Compression pattern matching
US11569841B2 (en) Data compression techniques using partitions and extraneous bit elimination
JP2023064241A (ja) ストレージシステム及びストレージシステムにおけるデータ処理方法
EP4256710A1 (en) Systems, methods and devices for exploiting value similarity in computer memories
US8373584B2 (en) Compressing and decompressing data
US8593310B1 (en) Data-driven variable length encoding of fixed-length data
US11561738B2 (en) Memory system
KR101818440B1 (ko) 데이터 압축 장치, 이의 동작 방법, 및 이를 포함하는 데이터 처리 장치
JP5828256B2 (ja) データ転送制御装置、データ転送制御方法、およびデータ転送制御システム
CN115765756A (zh) 一种高速透明传输的无损数据压缩方法、系统及装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180117

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190509

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200721

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20201019

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20201208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211115

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20211115

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20211126

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20211130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220107

R150 Certificate of patent or registration of utility model

Ref document number: 7010548

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150