JP6381546B2 - 多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品 - Google Patents

多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品 Download PDF

Info

Publication number
JP6381546B2
JP6381546B2 JP2015551229A JP2015551229A JP6381546B2 JP 6381546 B2 JP6381546 B2 JP 6381546B2 JP 2015551229 A JP2015551229 A JP 2015551229A JP 2015551229 A JP2015551229 A JP 2015551229A JP 6381546 B2 JP6381546 B2 JP 6381546B2
Authority
JP
Japan
Prior art keywords
data
matches
dictionary
match
substring
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.)
Active
Application number
JP2015551229A
Other languages
English (en)
Other versions
JP2016506197A (ja
Inventor
ジャムセック、ダミール、アンソニー
アガーワル、カナック、ビハーリー
ホフステー、ハーム、ピーター
マーティン、アンドリュー、ケネス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2016506197A publication Critical patent/JP2016506197A/ja
Application granted granted Critical
Publication of JP6381546B2 publication Critical patent/JP6381546B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • 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/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • 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)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本出願は、一般的に、改善されたデータ処理装置および方法に関し、より詳細には、符号化データ・ストリームへの高帯域圧縮のためのメカニズムに関する。
デフレートは、LZ77アルゴリズムおよびハフマン・コーディングの組合せを使用する、無損失データ圧縮アルゴリズムである。LZ77アルゴリズムは、繰り返し発生するデータを、入力される(圧縮されない)データ・ストリーム内に以前に存在する、そのデータの単一のコピーを参照して置換することによって、圧縮を実現する。一致は、長さ−距離ペアと呼ばれる1組の数により符号化され、これは、「次の長さの文字の各々は、圧縮されないストリーム内の、その後の、正確な距離の文字である文字に等しい」という文と等価である。「距離」は、代わりに「オフセット」と呼ばれることがある。
ハフマン・コーディングは、無損失データ圧縮に使用される、エントロピー符号化アルゴリズムである。その用語は、ソース・シンボルを符号化するための、可変長コード表の使用を指しており、ここで、可変長コード表は、ソース・シンボルの各可能な値についての推定された発生確率に基づいた特定のやり方で導出された。
圧縮されたブロック内で、重複する一連のバイト(繰り返される文字列)が見いだされる場合、後方参照が挿入され、代わりのその同一文字列の前の場所へリンクする。以前の文字列へ符号化される一致は、長さ(3〜258バイト)および距離(1〜32,768バイト)からなる。相対後方参照は、距離が、デコードされた圧縮されないデータの最後の32kB内(スライディング・ウィンドウと称される)に現れる限り、任意の数のブロックにわたってなされ得る。
第2の圧縮ステージは、一般に使用されるシンボルをより短い表現で置換し、あまり一般に使用されないシンボルをより長い表現で置換することからなる。ハフマン・コーディングは、オーバーラップしない間隔のプレフィックスされないツリーを作り出し、ここで、各シーケンスの長さは、符号化される必要があるシンボルの確率に反比例する。シンボルが符号化されなければならない可能性が高いほど、そのビット・シーケンスは、より短くなることになる。
データ処理システム中の、多バイト・フレームのパイプライン化圧縮のメカニズムを提供する。
1つの例示的な実施形態では、データ処理システム中の、多バイト・フレームのパイプライン化圧縮のための方法は、データのフレームを形成するように、入力データ・ストリーム中の現在のサイクルのデータに、入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせることを含む。方法は、複数の辞書メモリ中の複数の一致を識別することをさらに含む。各一致は、データのフレーム内の所与の下位文字列の一部と一致する。方法は、現在のサイクルのデータの、最良のカバレージを提供する、複数の一致からの一致のサブセットを識別することをさらに含む。方法は、データのフレームを符号化出力データ・ストリームに符号化することをさらに含む。
他の例示的な実施形態では、コンピュータ可読プログラムを有するコンピュータ使用可能または可読媒体を備えるコンピュータ・プログラム製品が提供される。コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、方法の例示的な実施形態に関して上に概説された動作のうちの、さまざまな動作および動作の組合せをコンピューティング・デバイスに実施させる。
さらに別の例示的な実施形態では、システム/装置が提供される。符号化データ・ストリームへの高帯域圧縮のための装置であって、装置は、複数の辞書メモリおよび関連するロジックを備える辞書ルックアップ/アップデート・ステージ、複数の比較回路および関連するロジックを備える一致選択ステージ、ならびに符号化ステージを備える。辞書ルックアップ/アップデート・ステージは、入力データ・ストリーム中の現在のサイクルのデータに入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせて含むデータのフレームを受け取り、複数の辞書メモリ中の複数の一致を識別する。各一致は、複数の下位文字列中の所与の下位文字列の一部と一致する。一致選択ステージは、複数の比較回路を使用して、現在のサイクルのデータの最良のカバレージを提供する、複数の一致からの一致のサブセットを識別する。符号化ステージは、データのフレームを符号化出力データ・ストリームに符号化する。
本発明のこれらおよび他の特徴ならびに利点は、本発明の例示の実施形態の以下の詳細な説明中に記載されることになり、または本発明の例示の実施形態の以下の詳細な説明を見れば当業者には明らかとなるであろう。
本発明、また本発明の使用の好ましいモードならびにさらなる目的および利点は、添付の図面と一緒に読まれると、例示的な実施形態の以下の詳細な説明を参照することにより、最も良好に理解されるであろう。
例示的な実施形態の態様が実装され得る、例示の分散データ処理システムを描く、図式的な表現である。 例示的な実施形態の態様が実装され得る、例示のデータ処理システムのブロック図である。 例示的な実施形態に従う、任意の長さのバイトの任意のストリームを処理し、圧縮されたデータ形式でバイトのストリームを出力するメカニズムを図示するブロック図である。 例示的な実施形態に従う、入力データ・ストリームを2サイクル・フレームのデータに変換するための変換フェーズを描く図である。 例示的な実施形態に従う、辞書ルックアップ/アップデートのためのアドレスの生成を描く図である。 例示的な実施形態に従う、辞書ルックアップ/アップデート・フェーズを描く図である。 例示的な実施形態に従う、一致選択のためのメカニズムを図示するブロック図である。 例示的な実施形態に従う、一致選択および整合を図示する図である。 例示的な実施形態に従う、符号化データ・ストリームへの高帯域圧縮のためのメカニズムの動作を図示するフローチャートである。
例示的な実施形態は、低遅延および高スループットをもたらす、連続サイクル中のデータ・ストリームを処理するためのメカニズムを提供する。辞書の組織は、データのサイクル中の各バイト・オフセットについて1つが、配列中にある。いくつかのステージは、同じステージ中で使用するため、次のサイクルで直ちに利用可能となる結果を必要とする。
例示的な実施形態は、多くの異なるタイプのデータ処理環境で利用することができる。例示的な実施形態の特定の要素および機能性を記載するための文脈を提供するために、図1および図2は、以下で、例示的な実施形態の態様が実装され得る例示の環境として提供される。図1および図2は、単に例であり、本発明の態様または実施形態が実装され得る環境に関して、何らかの限定を主張または暗示することは意図していないことを理解されたい。本発明の思想および範囲から逸脱することなく、描かれる環境へ多くの変形を行うことができる。
図1は、例示的な実施形態の態様が実装され得る、例示の分散データ処理システムの図式的な表現を描く。分散データ処理システム100は、例示的な実施形態の態様が実装され得る、コンピュータのネットワークを含むことができる。分散データ処理システム100は、分散データ処理システム100内で一緒に接続されるさまざまなデバイスおよびコンピュータ間で通信リンクを実現するために使用される媒体である、少なくとも1つのネットワーク102を含む。ネットワーク102としては、ワイヤ、無線通信リンク、または光ファイバ・ケーブルなどの接続が挙げられる。
描かれる例では、サーバ104およびサーバ106が、記憶ユニット108とともにネットワーク102に接続される。加えて、クライアント110、112、および114が、やはり、ネットワーク102に接続される。これらのクライアント110、112、および114は、例えば、パーソナル・コンピュータ、ネットワーク・コンピュータなどであってよい。描かれる例では、サーバ104は、クライアント110、112、および114に、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータを提供する。クライアント110、112、および114は、描かれる例では、サーバ104に対するクライアントである。分散データ処理システム100は、追加のサーバ、クライアント、および他の図示されないデバイスを含むことができる。
描かれる例では、分散データ処理システム100は、互いに通信するため、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)スイートのプロトコルを使用する、ネットワークおよびゲートウェイの世界的な集合を表す、ネットワーク102を備えるインターネットである。インターネットの中心にあるのは、データおよびメッセージを配信する、数千の商業用、政府用、教育用、および他のコンピュータ・システムからなる、主要ノードまたはホスト・コンピュータ間の高速データ通信線のバックボーンである。もちろん、分散データ処理システム100は、例えば、イントラネット、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)などの、多数の異なるタイプのネットワークを含むように実装されてもよい。上記のように、図1は、例として意図されており、本発明の異なる実施形態についてのアーキテクチャ上の限定としては意図されておらず、したがって、図1に示される特定の要素は、本発明の例示的な実施形態が実装され得る環境に関して限定すると考えられるべきでない。
図2は、例示的な実施形態の態様が実装され得る、例示のデータ処理システムのブロック図である。データ処理システム200は、図1内のクライアント110のようなコンピュータの例であり、本発明の例示的な実施形態用のプロセスを実装する、コンピュータ使用可能コードまたは命令を配置することができる。
描かれた例では、データ処理システム200は、ノース・ブリッジおよびメモリ・コントローラ・ハブまたはNB/MCH202、ならびにサウス・ブリッジおよび入出力(I/O)コントローラ・ハブまたはSB/ICH204を含むハブ・アーキテクチャを採用する。処理ユニット206、メイン・メモリ208、およびグラフィックス・プロセッサ210は、NB/MCH202に接続される。グラフィックス・プロセッサ210は、アクセラレィティッド・グラフィックス・ポート(AGP)を通してNB/MCH202に接続することができる。
描かれた例では、ローカル・エリア・ネットワーク(LAN)アダプタまたはネットワーク・アダプタ212は、SB/ICH204に接続する。オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読取り専用メモリまたはROM224、ハード・ディスク・ドライブまたはHDD226、CD−ROMドライブ230、ユニバーサル・シリアル・バス(USB)ポートおよび他の通信ポート232、ならびにPCI/PCIeデバイス234は、バス238およびバス240を通してSB/ICH204に接続する。PCI/PCIeデバイスとしては、例えば、ノートブック・コンピュータ用のイーサネット・アダプタ、アドイン・カード、およびPCカードが挙げられる。PCIは、カード・バス・コントローラを使用するが、PCIeは使用しない。ROM224は、例えば、フラッシュ基本入出力システム(BIOS)であってよい。
HDD226およびCD−ROMドライブ230は、バス240を通してSB/ICH204に接続する。HDD226およびCD−ROMドライブ230は、例えば、統合デバイス・エレクトロニクス(IDE)またはシリアル・アドバンスト・テクノロジー・アタッチメント(SATA)インターフェイスを使用することができる。スーパーI/O(SIO)デバイス236を、SB/ICH204に接続することができる。
オペレーティング・システムは、処理ユニット206上で走る。オペレーティング・システムは、図2のデータ処理システム200内のさまざまな構成要素の制御を協調して提供する。クライアントとして、オペレーティング・システムは、Microsoft Windows(R) 7(MicrosoftおよびWindowsは、米国、他の国または両方のMicrosoft Corporationの商標である)などの市販のオペレーティング・システムであってよい。Java(R)プログラミング・システムなど、オブジェクト指向プログラミング・システムは、オペレーティング・システムと一緒に走ることができ、データ処理システム200上で実行しているJava(R)プログラムまたはアプリケーションからオペレーティング・システムに、呼出しを行う(Javaは、Oracleまたはその関連会社あるいはその両方の商標である。)。
サーバとして、データ処理システム200は、例えば、Advanced Interactive Executive(AIX(R))オペレーティング・システムまたはLINUX(R)オペレーティング・システムが走るIBM(R) eServer(商標) System p(R)コンピュータ・システムであってよい(IBM、eServer、System p、およびAIXは、米国、他の国、またはその両方のInternational Business Machines Corporationの商標であり、LINUXは、米国、他の国、またはその両方のLinus Torvaldsの登録商標である)。データ処理システム200は、処理ユニット206中に複数のプロセッサを含む、対称型マルチプロセッサ(SMP)システムであってよい。あるいは、単一プロセッサシステムを採用することができる。
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムのための命令は、HDD226などの記憶デバイス上に配置され、処理ユニット206によって実行するためメイン・メモリ208にロードされ得る。例えば、本発明の例示的な実施形態のためのプロセスは、例えば、メイン・メモリ208、ROM224、またはHDD226およびCD−ROMドライブ230など1つまたは複数の周辺デバイス内などのメモリに配置され得る、コンピュータ使用可能プログラム・コードを使用して、処理ユニット206により実施することができる。
図2に示されるような、バス238またはバス240などのバス・システムは、1つまたは複数のバスからなってよい。もちろん、バス・システムは、通信機構またはアーキテクチャに取り付けられる異なる構成要素またはデバイス間でデータの転送を可能にする、任意のタイプの通信機構またはアーキテクチャを使用して実装することができる。図2のモデム222またはネットワーク・アダプタ212などの通信ユニットは、データを送受信するために使用される1つまたは複数のデバイスを含むことができる。メモリは、例えば、図2内の、メイン・メモリ208、ROM224、またはNB/MCH202内に見られるようなキャッシュであってよい。
当業者なら、図1および図2のハードウェアが、実装に依存して変わってよいことを理解するであろう。フラッシュ・メモリ、等価な不揮発性メモリ、または光ディスク・ドライブなどの、他の内部ハードウェアまたは周辺デバイスは、図1および図2に描かれたハードウェアに加えて、または図1および図2に描かれたハードウェアの代わりに使用することができる。また、例示的な実施形態のプロセスは、本発明の思想および範囲から逸脱することなく、上述のSMPシステム以外の、マルチプロセッサ・データ処理システムに適用することができる。
さらに、データ処理システム200は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話または他の通信デバイス、携帯情報端末(PDA)などを含む、複数の異なるデータ処理システムのいずれかの形をとることができる。例えば、いくつかの例示的な実施形態では、データ処理システム200は、オペレーティング・システム・ファイルまたはユーザが生成したデータあるいはその両方を記憶させるための不揮発性メモリを提供するため、フラッシュ・メモリで構成される、携帯型コンピューティング・デバイスであってよい。本質的に、データ処理システム200は、アーキテクチャ上の限定のない、任意の知られた、または後で開発されるデータ処理システムであってよい。
データ処理システム200は、さまざまな理由でデータ圧縮を必要とする場合がある。例えば、データ処理システム200は、HDD226に記憶されるデータを圧縮する場合があり、またはネットワーク・アダプタ212を経由して送信されるデータを圧縮する場合がある。
図3は、例示的な実施形態に従う、任意の長さのバイトの任意のストリームを処理し、圧縮されたデータ形式でバイトのストリームを出力するメカニズムを図示するブロック図である。メカニズムは、サイクルごとに入力ストリームからNバイトを連続的に消費して、符号化出力ストリームを生成する。メカニズムは、辞書ルックアップ/アップデート301、一致選択302、ハフマン符号化303、および最後のビット/バイト整合304という、4つのフェーズからなる。
図4は、例示的な実施形態に従う、入力データ・ストリームを2サイクル・フレームのデータに変換するための変換フェーズを描く。ステージ0 400は、NバイトのサイクルC0、C1、C2、C3を受け取る。ステージ0 400の変換メカニズムは、入力ストリームを2サイクル・フレームC0/C1、C1/C2、C2/C3に変換する。
図5は、例示的な実施形態に従う、辞書ルックアップ/アップデートのためのアドレスの生成を描く。辞書ルックアップ/アップデート・フェーズでは、各サイクルで、2つの連続サイクル分のデータ、すなわち、2N−1バイトをメカニズムが検査する。メカニズムは、サイクル境界を横切る第1の下位文字列を除く、下位文字列をもたらし第1のサイクルのデータのNバイトの各々で開始する、あらゆるNバイト下位文字列のバイトを考慮する。したがって、入力フレームCk/Ck+1について、メカニズムは、下位文字列D0〜DFを考慮する。メカニズムは、各下位文字列にハッシュを実施して、アドレスA0〜AFを生成する。(表記しやすさのため、F=N−1である。)
図6は、例示的な実施形態に従う、辞書ルックアップ/アップデート・フェーズを描く。Nバイトオフセット位置の各々で、ステージ1 辞書ルックアップ/アップデート・メカニズム600は、辞書メモリ601、602、603のN回読取り、1回書込みを維持する。メカニズムは、アドレスA0〜AFを使用して、N個のメモリの各々で、Nバイトの下位文字列の各々をルックアップし、以前に見られたデータとの最大N個の一致、およびバイト・ストリーム中の以前の位置を戻す。辞書ルックアップ/アップデート・メカニズム600は、辞書メモリ601、602、603の各々を、そのNバイトの下位文字列でアップデートし、バイト・ストリーム中で発生した下位文字列ならびにバイト・ストリーム中の位置を後の一致のために記録する。
こうして、辞書ルックアップ/アップデート・メカニズム600は、図5からの各下位文字列について、アドレスA0〜AF、データD0〜DF、および位置P0〜PFを受け取る。アドレスA0〜AFは、データD0〜DFのハッシュである。位置P0〜PFは、バイト・ストリーム中の位置である。Ck/Ck+1のフレームを仮定すると、Pi=(Ckの位置)+iであり、ここで、各Piは、i番目の下位文字列の位置の値であり、ここで、i=0〜Fである。各辞書メモリ601、602、603は、それぞれのアドレスにデータおよび位置を書き込む。こうして、辞書メモリ601は、アドレスA0にデータD0および位置P0を書き込み、辞書メモリ602は、アドレスA1にデータD1および位置P1を書き込み、辞書メモリ603は、アドレスAFにデータDFおよび位置PFを書き込む。
各辞書メモリ601、602、603は、アドレスA0〜AFにおいて、N回の読取りを実施する。A0における辞書メモリ601の読取りは、有効ビットV00、読取りデータR00、位置の値P00をもたらす。A1における辞書メモリ601の読取りは、有効ビットV01、読取りデータR01、位置の値P01をもたらす。AFにおける辞書メモリ601の読取りは、有効ビットV0F、読取りデータR0F、位置の値P0Fをもたらす。
A0における辞書メモリ602の読取りは、有効ビットV10、読取りデータR10、位置の値P10をもたらす。A1における辞書メモリ601の読取りは、有効ビットV11、読取りデータR11、位置の値P11をもたらす。AFにおける辞書メモリ601の読取りは、有効ビットV1F、読取りデータR1F、位置の値P1Fをもたらす。
A0における辞書メモリ603の読取りは、有効ビットVF0、読取りデータRF0、位置の値PF0をもたらす。A1における辞書メモリ601の読取りは、有効ビットVF1、読取りデータRF1、位置の値PF1をもたらす。AFにおける辞書メモリ601の読取りは、有効ビットVFF、読取りデータRFF、位置の値PFFをもたらす。
こうして、各サイクルについて、ルックアップ/アップデート・フェーズは、N回書込みおよびN回読取り(N個の下位文字列のそれぞれにN回読取り)をもたらす。最初は、辞書メモリ601、602、603中の各エントリは、無効である。辞書メモリ601、602、603への各書込みが、有効ビットをアサートする。こうして、所与のアドレスにおける読取りについて、アドレスに対応するエントリに有効データが以前に書き込まれたかどうかを、有効ビットが示す。
図7は、例示的な実施形態に従う、一致選択のためのメカニズムを図示するブロック図である。ステージ2 一致選択メカニズム700は、比較構成要素701、702、703を備える。一致選択メカニズム700は、辞書メモリ601、602、603からN組の読取りデータを受け取る。各組の読取りデータについて、一致選択メカニズム700は、対応する下位文字列データD0〜DFを受け取る。
各比較構成要素701、702、703は、辞書メモリ601、602、603からの有効読取りデータを下位文字列データD0〜DFと比較する。例えば、比較構成要素701は、R00〜R0Fを下位文字列データD0と比較する。各R00〜R0Fについて、比較構成要素701は、下位文字列の最初から始めて、どれだけ多くの連続バイトが一致するのかを決定する。比較構成要素701は、次いで、最長一致を有する読取りデータR00〜R0Fを選択する。比較構成要素701は、次いで、もし存在する場合、最長一致M0およびB0と一致するバイトの数を出力する。
同様に、比較構成要素702は、R10〜R1Fを下位文字列データD1と比較する。各R10〜R1Fについて、比較構成要素702は、下位文字列の最初から始めて、どれだけ多くの連続バイトが一致するのかを決定する。比較構成要素702は、次いで、最長一致を有する読取りデータR10〜R1Fを選択する。比較構成要素702は、次いで、もし存在する場合、最長一致M1およびB1と一致するバイトの数を出力する。
比較構成要素703は、RF0〜RFFを下位文字列データDFと比較する。各RF0〜RFFについて、比較構成要素703は、下位文字列の最初から始めて、どれだけ多くの連続バイトが一致するのかを決定する。比較構成要素703は、次いで、最長一致を有する読取りデータRF0〜RFFを選択する。比較構成要素703は、次いで、もし存在する場合、最長一致MFおよびBFと一致するバイトの数を出力する。
図8は、例示的な実施形態に従う、一致選択および整合を図示する。場合によってオーバーラップする一致A、B、C、Dのいくつかの組を仮定すると、一致選択および整合フェーズは、データのカバレージを最大化するために一致を選択しなければならない。図8に示される例に見られるように、一致BとDがオーバーラップし、一致AとDがオーバーラップし、一致AとCがオーバーラップする。これによって、一致AとB、BとC、またはDとCを使用することが残る。例示的な実施形態のメカニズムは、元のデータのほとんどをカバーする一致の可能な組合せを選択する。
図8に見られるように、一致AおよびBが最良のカバレージを提供し、最小の一致しないバイトを残す。一致Aは、4バイトだけサイクル境界を横切るので、最初の4つの下位文字列は、次のサイクルで無視することができる。
こうして、例示的な実施形態のメカニズムは、現在のサイクル内のバイト・オフセットごとに1つ、Nバイト・オフセット位置からその位置内のNバイトの潜在的な一致の中で最長一致を選択し、Nもの数からN個の一致へと潜在的な一致の数を減少させる。メカニズムは、これらの一致のサブセットを選択し、できるだけ、2N−1バイトの多数をカバーしようと試みる。
メカニズムは、最初に、サイクル境界を横切り、できるだけ現在のサイクルの多くを費やす一致を見つける。メカニズムは、次いで、現在のサイクル内でより多くのバイトをカバーする追加の一致を見つける。メカニズムは、境界を横切ることによりカバーされるバイトについて、次のサイクルのために十分な情報を残す。
一致選択および整合フェーズは、カバーされないバイトおよび一致したバイトをもたらす。一実施形態では、例示的な実施形態のメカニズムは、次いで、逐語的に、現在のサイクル内のカバーされないバイトにハフマン・コーディングを実施する。例示的な実施形態のメカニズムは、一致を長さおよび距離でコード化する。
次いで、ビット/バイト・パッキング・フェーズは、デフレート規格に適合するバイトのシーケンスをもたらす。現在のサイクル内の、第1の可変ビット幅コードは、ビット・シフト動作により整合され、次のサイクルのビットに追加されるべく残された、潜在的な部分バイトを有する、いくつかのバイトをもたらす。サイクル内のバイトは、Nバイトが単一サイクル中に出力され得るまで、蓄積される。
当業者なら理解するように、本発明は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の態様は、全体的にハードウェアの実施形態、(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)全体的にソフトウェアの実施形態、または、本明細書で「回路」、「モジュール」、もしくは「システム」と全てが一般的に呼ばれ得る、ソフトウェアとハードウェアの態様を組み合わせる実施形態の形をとることができる。さらに、本発明の態様は、そこに具現化されるコンピュータ使用可能プログラム・コードを有する、任意の1つまたは複数のコンピュータ可読媒体内に具現化されるコンピュータ・プログラム製品の形をとることができる。
1つまたは複数のコンピュータ可読媒体の任意の組合せを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってよい。コンピュータ可読記憶媒体は、例えば、限定するものではないが、電子的、磁気的、光学的、電磁的、赤外線、もしくは半導体のシステム、装置、デバイス、または上記の任意の好適な組合せであってよい。コンピュータ可読記憶媒体のより具体的な例(網羅的でないリスト)としては以下、すなわち、1つまたは複数のワイヤを有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読取り専用メモリ(CDROM)、光学的記憶デバイス、磁気的記憶デバイス、または上記の任意の好適な組合せが挙げられる。この文書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスにより使用される、または命令実行システム、装置、もしくはデバイスに関連して使用されるプログラムを含む、または記憶することができる、任意の有形の媒体であってよい。
コンピュータ可読信号媒体としては、例えば、ベースバンドで、または搬送波の部分として、その中にコンピュータ可読プログラム・コードが具現化される、伝播されるデータ信号を挙げることができる。そのような伝播される信号は、限定するものではないが、電磁的、光学的、またはその任意の好適な組合せを含む、さまざまな形のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスにより使用される、または命令実行システム、装置、またはデバイスに関連して使用されるプログラムを通信、伝播、または搬送することができる任意のコンピュータ可読媒体であってよい。
コンピュータ可読媒体上に具現化されるコンピュータ・コードは、限定するものではないが、無線、有線、光ファイバ・ケーブル、電波周波数(RF)など、またはそれらの任意の好適な組合せを含む、任意の適切な媒体を使用して送信することができる。
本発明の態様のための動作を行うためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来型手順的プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書くことができる。プログラム・コードは、完全にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にはユーザのコンピュータ上および部分的にはリモート・コンピュータ上で、または完全にリモート・コンピュータまたはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを通してユーザのコンピュータに接続することができ、または、外部コンピュータに(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)接続をすることができる。
本発明の態様は、本発明の例示的な実施形態に従う方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して以下に記載される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方中のブロックの組合せは、コンピュータ・プログラム命令により実装することが可能であることが理解されよう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実施するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体中に記憶された命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装する命令を含む製品を作り出すように、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに特定の方式で機能するように指示するものであってよい。
コンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能装置で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実施するためのプロセスを実現するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってよい。
図9は、例示的な実施形態に従う、符号化データ・ストリームへの高帯域圧縮のためのメカニズムの動作を図示するフローチャートである。動作を開始し(ブロック900)、メカニズムがデータ・ストリームの一部を2サイクル・フレームに変換する(ブロック901)。メカニズムは、第1のコード化されていないバイトで開始し(ブロック902)、フレーム中の、各サイクル長の下位文字列のデータにハッシュを計算する(ブロック903)。メカニズムは、次いで、対応する辞書メモリのアドレスとしてハッシュを使用して、各下位文字列のデータを書き込む(ブロック904)。各サイクルがNバイトである2サイクル・フレームについて、メカニズムは、N個の辞書メモリの各々に、1つのNバイトの下位文字列を書き込む。
メカニズムは、計算されたハッシュの全てをアドレスとして使用して、全ての辞書メモリから下位文字列のデータを読み取る(ブロック905)。ブロック905では、メカニズムは、N個の辞書メモリからN回読取りを実施するが、読取りの多くは、無効データをもたらす可能性がある。次いで、メカニズムは、各下位文字列を対応する辞書メモリからの読取りデータと比較し(ブロック906)、下位文字列の最初のバイトで開始する最長一致の連続バイトを選択する(ブロック907)。メカニズムは、ここで、各辞書メモリから1つの一致、合計でN個の一致を有する。
その後、メカニズムは、一致のサブセットを選択する(ブロック908)。メカニズムは、できるだけ2N−1バイトの多数をカバーする一致を選択する。メカニズムは、最初に、サイクル境界を横切り、できるだけ現在のサイクルの多くをカバーする一致を選択することができる。メカニズムは、次いで、現在のサイクルのより多くのバイトをカバーする追加の一致を選択することができる。メカニズムは、次いで、不一致バイトを逐語的にコード化し、一致を長さおよび距離情報でコード化し(ブロック909)、ここで、長さが一致のバイト中の長さを示し、距離がデータ・ストリーム中のデータの以前のインスタンスを参照する。次いで、メカニズムは、ビット/バイト整合を実施する(ブロック910)。
メカニズムは、次いで、現在のサイクルが最後のサイクルであるかどうかを決定する(ブロック911)。現在のサイクルがデータ・ストリーム中の最後のサイクルでない場合、メカニズムは、データ・ストリーム中の次のサイクルのデータを考慮し(ブロック912)、動作は、ブロック901に戻って、データを2サイクル・フレームに変換する。動作は、次いで、次のサイクルのために繰り返す。ブロック911で、現在のサイクルがデータ・ストリーム中の最後のサイクルのデータである場合、動作は終了する(ブロック913)。
図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従うシステム、方法、およびコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能性、および動作を図示する。この点に関連し、フローチャートまたはブロック図内の各ブロックは、指定された論理的機能を実装するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表すことができる。いくつかの代替実装において、ブロック内に言及される機能は、図中で言及される順序から外れて生じ得ることにも留意されたい。例えば、含まれる機能性に依存して、連続して示される2つのブロックが、実際には、実質的に同時に実行されてよく、またはブロックが、場合によって逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方中のブロックの組合せは、指定される機能または行為を実施する専用ハードウェアベースのシステムまたは専用ハードウェアおよびコンピュータ命令の組合せにより実装できることも留意されよう。
こうして、例示的な実施形態は、符号化データ・ストリームに対する高帯域圧縮のためのメカニズムを提供する。メカニズムは、データを連続サイクルで処理し、低遅延および高スループットをもたらす。Nバイト・サイクルのデータについて、メカニズムは、Nバイト・データ中の各バイト・オフセットについてN回読取りおよび1回書込みを実施するN個の辞書メモリを使用する。いくつかのステージは、同じステージ中で使用するため、次のサイクルで直ちに利用可能となる結果を要求する。
上述したように、例示的な実施形態は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態、または、ハードウェアおよびソフトウェアの両方の要素を含む実施形態の形をとることができることを理解されたい。1つの例示の実施形態では、例示的な実施形態のメカニズムは、限定するものではないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、ソフトウェアまたはプログラム・コードに実装される。
プログラム・コードを記憶または実行あるいはその両方をするのに好適なデータ処理システムは、システム・バスを通してメモリ要素に直接または間接に結合される少なくとも1つのプロセッサを含むことになる。メモリ要素としては、プログラム・コードの実際の実行期間に採用されるローカル・メモリ、大容量記憶装置、および実行期間に大容量記憶装置からコードが取り出されなければならない回数を減少させるため、少なくともいくつかのプログラム・コードの一時記憶を実現するキャッシュ・メモリが挙げられる。
(限定するものではないが、キーボード、ディスプレイ、ポインティング・デバイスなどを含む)入出力またはI/Oデバイスは、直接または介在するI/Oコントローラを通してシステムと結合することができる。ネットワーク・アダプタがやはりシステムに結合されて、データ処理システムが、介在するプライベート・ネットワークまたは公衆ネットワークを通して、他のデータ処理システムまたはリモート・プリンタまたは記憶デバイスに結合されることを可能にすることができる。モデム、ケーブル・モデム、およびイーサネット・カードは、現在利用可能なタイプのネットワーク・アダプタのうちのごくわずかである。
本発明の記載は、例示および記載のために提示されたが、網羅的であること、または開示された形に発明を限定することを意図していない。多くの変形形態および変更形態が当業者には明らかであろう。さまざまな変更形態を備えるさまざまな実施形態が意図された具体的な使用に適するので、実施形態は、本発明の原理および実践的な適用を最もよく説明するため、および当業者が本発明を理解することが可能となるために、選択され記載された。

Claims (32)

  1. データ処理システム中の、多バイト・フレームのパイプライン化圧縮のための方法であって、
    データのフレームを形成するように、入力データ・ストリーム中の現在のサイクルのデータに、前記入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせることと、
    複数の辞書メモリ中の複数の一致を識別することであって、各一致が、データの前記フレーム内の所与の下位文字列の一部と対応する辞書メモリのデータが一致する、前記識別することと、
    前記現在のサイクルのデータの最良のカバレージを提供する、前記複数の一致からの一致のサブセットを識別することと、
    データの前記フレームを符号化出力データ・ストリームに符号化することと
    を含む方法。
  2. 前記現在のサイクルのデータに前記次のサイクルのデータの少なくとも前記一部を組み合わせることが、複数の下位文字列を形成することであって、各下位文字列が、前記現在のサイクルのデータのそれぞれのバイトで開始し、前記現在のサイクルのデータと等しい長さを有する、前記形成することを含む、請求項1に記載の方法。
  3. 一致の前記サブセットが、第1のサイクルのデータと前記次のサイクルのデータの間のサイクル境界を横切る、請求項1または2に記載の方法。
  4. データの前記フレームを前記符号化出力データ・ストリームに符号化することが、
    一致符号化データを形成するように、一致の前記サブセットの各々を長さおよび距離情報で符号化することと、
    圧縮符号化データを形成するように、前記入力データ・ストリーム中の前記現在のサイクルのデータ中の不一致データを、無損失圧縮を使用して符号化することと、
    出力データ・ストリーム中で、前記一致符号化データと前記圧縮符号化データを整合することと
    を含む、請求項1ないし3のいずれか一項に記載の方法。
  5. 複数のアドレスを形成するように、複数の下位文字列中の各所与の下位文字列に基づいてアドレスを生成することをさらに含む、請求項1ないし4のいずれか一項に記載の方法。
  6. 前記アドレスを生成することが、前記所与の下位文字列にハッシュを実施することを含む、請求項5に記載の方法。
  7. 各所与の下位文字列および対応する位置の値を、前記所与の下位文字列から生成される前記アドレスを使用して、前記複数の辞書メモリ内の対応する辞書メモリに書き込むことをさらに含む、請求項5または6に記載の方法。
  8. 前記複数の一致を識別することが、前記複数のアドレスを使用して、前記複数の辞書メモリ内の各所与の辞書メモリから読み取り、各辞書メモリについてのゼロまたは1つ以上の有効エントリを受け取ることを含む、請求項5ないし7のいずれか一項に記載の方法。
  9. 前記複数の一致を識別することが、
    少なくとも1つの有効エントリを有する各辞書メモリについて、前記少なくとも1つの有効エントリを対応する下位文字列と比較することと、
    少なくとも1つの有効エントリを有する各辞書メモリについて、前記対応する下位文字列の最初から始まる連続一致バイトの数に基づいて最長一致を選択し、前記複数の一致を形成することと
    をさらに含む、請求項8に記載の方法。
  10. 前記複数の一致の各々が一致長さの値および位置の値を有し、前記長さの値が前記一致データの長さを示し、前記位置の値が、前記入力データ・ストリーム中の前記一致データの以前の発生を参照する、請求項9に記載の方法。
  11. 符号化データ・ストリームへの高帯域圧縮のための装置であって、
    複数の辞書メモリおよび関連するロジックを備える辞書ルックアップ/アップデート・ステージと、
    複数の比較回路および関連するロジックを備える一致選択ステージと、
    符号化ステージと
    を備え、
    前記辞書ルックアップ/アップデート・ステージが、入力データ・ストリーム中の現在のサイクルのデータに前記入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせて含むデータのフレームを受け取り、前記複数の辞書メモリ中の複数の一致を識別し、各一致が、データの前記フレーム内の所与の下位文字列の一部と対応する辞書メモリのデータが一致し、
    前記一致選択ステージが、前記複数の比較回路を使用して、前記現在のサイクルのデータの、最良のカバレージを提供する、前記複数の一致からの一致のサブセットを識別し、
    前記符号化ステージが、データの前記フレームを符号化出力データ・ストリームに符号化する、装置。
  12. 前記現在のサイクルのデータに前記次のサイクルのデータの少なくとも前記一部を組み合わせることが、複数の下位文字列を形成することであって、各下位文字列が、前記現在のサイクルのデータのそれぞれのバイトで開始し、前記現在のサイクルのデータと等しい長さを有する、前記形成することを含む、請求項11に記載の装置。
  13. 一致の前記サブセットが、第1のサイクルのデータと前記次のサイクルのデータの間のサイクル境界を横切る、請求項11または12に記載の装置。
  14. 前記符号化ステージが、一致符号化データを形成するように、一致の前記サブセットの各々を長さおよび距離情報で符号化し、圧縮符号化データを形成するように、前記入力データ・ストリーム中の前記現在のサイクルのデータ中の不一致データを、無損失圧縮を使用して符号化する、請求項11ないし13のいずれか一項に記載の装置。
  15. 前記符号化ステージが、ハフマン・コーディング回路を備え、前記符号化ステージが、前記ハフマン・コーディング回路を使用して不一致データを符号化する、請求項14に記載の装置。
  16. ビット/バイト整合ステージをさらに備え、前記ビット/バイト整合ステージが、出力データ・ストリーム中で、前記一致符号化データと前記圧縮符号化データを整合する、請求項11ないし15のいずれか一項に記載の装置。
  17. 前記辞書ルックアップ/アップデート・ステージが、複数のアドレスを形成するように、複数の下位文字列中の各所与の下位文字列に基づいてアドレスを生成する、請求項11ないし16のいずれか一項に記載の装置。
  18. 前記辞書ルックアップ/アップデート・ステージが、前記所与の下位文字列にハッシュを実施することによりアドレスを生成する、請求項17に記載の装置。
  19. 前記辞書ルックアップ/アップデート・ステージが、各所与の下位文字列および対応する位置の値を、前記所与の下位文字列から生成される前記アドレスを使用して、前記複数の辞書メモリ内の対応する辞書メモリに書き込む、請求項17または18に記載の装置。
  20. 前記辞書ルックアップ/アップデート・ステージが、前記複数のアドレスを使用して、前記複数の辞書メモリ内の各所与の辞書メモリから読み取り、各辞書メモリについてのゼロまたは1つ以上の有効エントリを受け取ることにより、前記複数の一致を識別する、請求項17ないし19のいずれか一項に記載の装置。
  21. 前記一致選択ステージが、少なくとも1つの有効エントリを有する各辞書メモリについて、前記少なくとも1つの有効エントリを対応する下位文字列と比較し、少なくとも1つの有効エントリを有する各辞書メモリについて、前記対応する下位文字列の最初から始まる連続一致バイトの数に基づいて最長一致を選択し、前記複数の一致を形成することにより、一致のサブセットを識別する、請求項20に記載の装置。
  22. 前記複数の一致の各々が一致長さの値および位置の値を有し、前記長さの値が前記一致データの長さを示し、前記位置の値が、前記入力データ・ストリーム中の前記一致データの以前の発生を参照する、請求項21に記載の装置。
  23. コンピュータ可読プログラムが記憶されたコンピュータ可読記憶媒体コンピュータ・プログラム製品であって、コンピューティング・デバイス上で実行されると、前記コンピュータ可読プログラムが前記コンピューティング・デバイスに、
    データのフレームを形成するように、入力データ・ストリーム中の現在のサイクルのデータに、前記入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせること、
    複数の辞書メモリ中の複数の一致を識別することであって、各一致が、データの前記フレーム内の所与の下位文字列の一部と対応する辞書メモリのデータが一致する、前記識別すること、
    前記現在のサイクルのデータの最良のカバレージを提供する、前記複数の一致からの一致のサブセットを識別すること、および
    データの前記フレームを符号化出力データ・ストリームに符号化すること
    を実行させる、コンピュータ・プログラム製品。
  24. 前記現在のサイクルのデータに前記次のサイクルのデータの少なくとも前記一部を組み合わせることが、複数の下位文字列を形成することであって、各下位文字列が、前記現在のサイクルのデータのそれぞれのバイトで開始し、前記現在のサイクルのデータと等しい長さを有する、前記形成することを含む、請求項23に記載のコンピュータ・プログラム製品。
  25. 一致の前記サブセットが、第1のサイクルのデータと前記次のサイクルのデータの間のサイクル境界を横切る、請求項23または24に記載のコンピュータ・プログラム製品。
  26. データの前記フレームを前記符号化出力データ・ストリームに符号化することが、
    一致符号化データを形成するように、一致の前記サブセットの各々を長さおよび距離情報で符号化すること、
    圧縮符号化データを形成するように、前記入力データ・ストリーム中の前記現在のサイクルのデータ中の不一致データを、無損失圧縮を使用して符号化すること、ならびに
    出力データ・ストリーム中で、前記一致符号化データと前記圧縮符号化データを整合すること
    を含む、請求項23ないし25のいずれか一項に記載のコンピュータ・プログラム製品。
  27. 前記コンピュータ可読プログラムが前記コンピューティング・デバイスに、複数のアドレスを形成するように、複数の下位文字列中の各所与の下位文字列に基づいてアドレスを生成することをさらに実行させる、請求項23ないし26のいずれか一項に記載のコンピュータ・プログラム製品。
  28. 前記アドレスを生成することが、前記所与の下位文字列にハッシュを実施することを含む、請求項27に記載のコンピュータ・プログラム製品。
  29. 前記コンピュータ可読プログラムが前記コンピューティング・デバイスに、各所与の下位文字列および対応する位置の値を、前記所与の下位文字列から生成される前記アドレスを使用して、前記複数の辞書メモリ内の対応する辞書メモリに書き込むことをさらに実行させる、請求項27または28に記載のコンピュータ・プログラム製品。
  30. 前記複数の一致を識別することが、前記複数のアドレスを使用して、前記複数の辞書メモリ内の各所与の辞書メモリから読み取り、各辞書メモリについてのゼロまたは1つ以上の有効エントリを受け取ることを含む、請求項27ないし29のいずれか一項に記載のコンピュータ・プログラム製品。
  31. 前記複数の一致を識別することが、
    少なくとも1つの有効エントリを有する各辞書メモリについて、前記少なくとも1つの有効エントリを対応する下位文字列と比較すること、および
    少なくとも1つの有効エントリを有する各辞書メモリについて、前記対応する下位文字列の最初から始まる連続一致バイトの数に基づいて最長一致を選択し、前記複数の一致を形成すること
    をさらに含む、請求項30に記載のコンピュータ・プログラム製品。
  32. 前記複数の一致の各々が一致長さの値および位置の値を有し、前記長さの値が前記一致データの長さを示し、前記位置の値が、前記入力データ・ストリーム中の前記一致データの以前の発生を参照する、請求項31に記載のコンピュータ・プログラム製品。
JP2015551229A 2013-01-03 2013-12-02 多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品 Active JP6381546B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/733,354 2013-01-03
US13/733,354 US8704686B1 (en) 2013-01-03 2013-01-03 High bandwidth compression to encoded data streams
PCT/IB2013/060559 WO2014106782A1 (en) 2013-01-03 2013-12-02 High bandwidth compression to encoded data streams

Publications (2)

Publication Number Publication Date
JP2016506197A JP2016506197A (ja) 2016-02-25
JP6381546B2 true JP6381546B2 (ja) 2018-08-29

Family

ID=50481835

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015551229A Active JP6381546B2 (ja) 2013-01-03 2013-12-02 多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品

Country Status (6)

Country Link
US (1) US8704686B1 (ja)
JP (1) JP6381546B2 (ja)
CN (1) CN104904123B (ja)
DE (1) DE112013006339B4 (ja)
GB (1) GB2521082A (ja)
WO (1) WO2014106782A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2524515A (en) 2014-03-25 2015-09-30 Ibm Method to improve compression ratio for a compression engine
GB2524516A (en) 2014-03-25 2015-09-30 Ibm Hardware compression method finding backward references with multi-level hashes
US9160362B1 (en) * 2014-05-08 2015-10-13 Qualcomm Incorporated Lempel-Ziv (LZ)-based data compression employing implicit variable-length distance coding
US9590655B2 (en) 2015-03-27 2017-03-07 Microsoft Technology Licensing, Llc Scalable high-bandwidth architecture for lossless compression
US9628111B2 (en) 2015-05-11 2017-04-18 Via Alliance Semiconductor Co., Ltd. Hardware data compressor with multiple string match search hash tables each based on different hash size
US9509337B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor using dynamic hash algorithm based on input block type
US9503122B1 (en) 2015-05-11 2016-11-22 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that sorts hash chains based on node string match probabilities
US9515678B1 (en) * 2015-05-11 2016-12-06 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that directly huffman encodes output tokens from LZ77 engine
US10027346B2 (en) 2015-05-11 2018-07-17 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that maintains sorted symbol list concurrently with input block scanning
US9509336B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that pre-huffman encodes to decide whether to huffman encode a matched string or a back pointer thereto
US9509335B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that constructs and uses dynamic-prime huffman code tables
JP2023039698A (ja) 2021-09-09 2023-03-22 キオクシア株式会社 データ圧縮装置およびメモリシステム
JP2023043618A (ja) 2021-09-16 2023-03-29 キオクシア株式会社 圧縮回路、圧縮方法、及びストレージシステム
JP2023131392A (ja) 2022-03-09 2023-09-22 キオクシア株式会社 辞書式圧縮装置及びメモリシステム
US11914862B2 (en) 2022-03-22 2024-02-27 Western Digital Technologies, Inc. Data compression with entropy encoding
CN116567097B (zh) * 2023-07-04 2023-09-01 广东慧航天唯科技有限公司 基于数据监控的废机油调度数据安全管理系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3038234B2 (ja) * 1990-09-20 2000-05-08 富士通株式会社 データ圧縮装置の辞書検索方式
US5140321A (en) 1991-09-04 1992-08-18 Prime Computer, Inc. Data compression/decompression method and apparatus
US5406278A (en) 1992-02-28 1995-04-11 Intersecting Concepts, Inc. Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
US5406279A (en) * 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
US5467087A (en) * 1992-12-18 1995-11-14 Apple Computer, Inc. High speed lossless data compression system
US5572206A (en) * 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system
US5771010A (en) * 1995-03-22 1998-06-23 Ibm Corporation Apparatus for compressing data using a Lempel-Ziv-type algorithm
US5861827A (en) * 1996-07-24 1999-01-19 Unisys Corporation Data compression and decompression system with immediate dictionary updating interleaved with string search
US6624762B1 (en) 2002-04-11 2003-09-23 Unisys Corporation Hardware-based, LZW data compression co-processor
US20040022312A1 (en) * 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
US6667700B1 (en) 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7051126B1 (en) 2003-08-19 2006-05-23 F5 Networks, Inc. Hardware accelerated compression
JP4556766B2 (ja) 2005-05-23 2010-10-06 ソニー株式会社 文字列検索回路及び文字列検索方法
US7307552B2 (en) 2005-11-16 2007-12-11 Cisco Technology, Inc. Method and apparatus for efficient hardware based deflate
US7538695B2 (en) 2007-06-29 2009-05-26 Rmi Corporation System and method for deflate processing within a compression engine
US9772936B2 (en) * 2008-07-10 2017-09-26 Micron Technology, Inc. Data collection and compression in a solid state storage device

Also Published As

Publication number Publication date
US8704686B1 (en) 2014-04-22
CN104904123B (zh) 2018-04-27
WO2014106782A1 (en) 2014-07-10
GB2521082A (en) 2015-06-10
DE112013006339B4 (de) 2022-12-22
JP2016506197A (ja) 2016-02-25
CN104904123A (zh) 2015-09-09
GB201506285D0 (en) 2015-05-27
DE112013006339T5 (de) 2015-09-17

Similar Documents

Publication Publication Date Title
JP6381546B2 (ja) 多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品
JP5878644B2 (ja) データ処理システムにおいて、可変長符号化データ・ストリームを復号するための方法、コンピュータ・プログラム、および、装置
US20170038978A1 (en) Delta Compression Engine for Similarity Based Data Deduplication
KR101841103B1 (ko) Vlsi 효율적인 허프만 인코딩 장치 및 방법
JP6425709B2 (ja) 復元中に予備拡張辞書を利用するデータ復元
US9813079B2 (en) High-throughput compression of data
CN106664101B (zh) 自适应速率压缩散列处理装置
US20230041067A1 (en) Systems and methods of data compression
JP2021527376A (ja) データ圧縮
US20180041224A1 (en) Data value suffix bit level compression
Funasaka et al. Adaptive loss‐less data compression method optimized for GPU decompression
Li et al. Implementation of LZMA compression algorithm on FPGA
US9287893B1 (en) ASIC block for high bandwidth LZ77 decompression
US20240028563A1 (en) System and method for securing high-speed intrachip communications
CN109690957B (zh) 熵编码的系统级测试
US10873836B2 (en) Efficient short message compression
US11868616B2 (en) System and method for low-distortion compaction of floating-point numbers
US11734231B2 (en) System and methods for bandwidth-efficient encoding of genomic data
JP2016052046A (ja) 圧縮装置、伸長装置およびストレージ装置
US10585626B2 (en) Management of non-universal and universal encoders
Ni et al. Research on incremental updating

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180214

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: 20180710

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180731

R150 Certificate of patent or registration of utility model

Ref document number: 6381546

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150