JP4475820B2 - 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法 - Google Patents

拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法 Download PDF

Info

Publication number
JP4475820B2
JP4475820B2 JP2000596668A JP2000596668A JP4475820B2 JP 4475820 B2 JP4475820 B2 JP 4475820B2 JP 2000596668 A JP2000596668 A JP 2000596668A JP 2000596668 A JP2000596668 A JP 2000596668A JP 4475820 B2 JP4475820 B2 JP 4475820B2
Authority
JP
Japan
Prior art keywords
data
symbols
compression
symbol
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.)
Expired - Lifetime
Application number
JP2000596668A
Other languages
English (en)
Other versions
JP2002536863A (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
Priority claimed from US09/239,659 external-priority patent/US7190284B1/en
Priority claimed from US09/491,343 external-priority patent/US6822589B1/en
Application filed by モスマン ホールディングス エルエルシー filed Critical モスマン ホールディングス エルエルシー
Publication of JP2002536863A publication Critical patent/JP2002536863A/ja
Application granted granted Critical
Publication of JP4475820B2 publication Critical patent/JP4475820B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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/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
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

発明の名称
拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法。
発明の属する技術分野
本発明は、コンピュータシステムアーキテクチャに関し、一層詳しくはシステム帯域を減少させ、かつ効率を改善するためにパラレルデータを圧縮及び圧縮解除する、システムと方法に関するものである。
関連発明の説明
1981年初期段階以来、パーソナルコンピュータシステムのアーキテクチャは、本質的に変わっていない部分を残している。コンピュータシステムアーキテクチャにおける現状技術は、システムメモリーと接続するメモリー制御インターフェイスに同様に繋がれる中央演算処理部(CPU)を有する。コンピュータシステムは、また、ビデオディスプレイに接続するための分離された画像インターフェイスを有している。更に、コンピュータシステムは、キーボード、マウス、フロッピードライブ、不揮発性メモリ他、さまざまなI/Oデバイス用の入出力制御ロジックを有している。
現代のコンピュータアーキテクチャの動作は、一般に次の通りである。プログラムとデータは、個々のI/O装置、例えばフロッピーディスクやハードドライブからオペレーティングシステムによって読み取られる。またプログラムやデータは、システムメモリに臨時に貯えられる。一旦、ユーザープログラムがシステムメモリに移されると、CPUは、メモリーコントローラを介してシステムメモリからのコードやデータを読み取ることで、プログラムを実行する。アプリケーションのコードやデータは、システムCPUによって操作されたときにスペックの結果を生じるように予定されている。CPUは、コードとデータを処理し、データは一つあるいはそれ以上のいろいろな出力装置(アウトプットディバイス)に供給される。コンピュータシステムは、ビデオディスプレイ、オーディオ(スピーカ)、プリンタその他を含む幾つかの出力装置を備える。ほとんどのシステムでは、ビデオディスプレイが基本の出力装置である。
CPUによって処理されたグラフィック出力データは、ディスプレイモニタに表されるためにグラフィカルインターフェイスディバイスに書き込まれる。グラフィカルインターフェイスディバイスは単なるVGAカードで良い。あるいはシステムが、別途のビデオラム(VRAM)を有する専用のビデオプロセッサやビデオアクセラレイションカードを含むものでも良い。分離された専用のビデオプロセッサを有するコンピュータシステムでは、ビデオプロセッサは、主CPUの負担を少なくするグラフィック能力をもつ。パーソナルコンピュータシステムの最近の先行技術は、PCI(Peripheral Component Interface)バス、AGP(Advanced Graphics Port)、あるいは他のローカルバス標準に基づくローカルバスビデオシステムを含んでいる。ビデオのサブシステムは、一般に、処理能力を上げるためにCPUの近くのローカルバスに配置される。
したがって、概略すると、プログラムコードとデータは、最初に不揮発性メモリ、例えばハードディスクからシステムメモリに読み込まれる。プログラムコードとデータは、次に、システムメモリからCPUに読み込まれる。データはCPUによって処理され、またグラフィックデータは、ディスプレイモニタに表示するためのグラフィカルインターフェイスディバイスのビデオラムに書き込まれる。
メモリコントローラへのシステムメモリインターフェイスは、必要とされるアプリケーションとシステムに対し釣合いのとれた帯域幅のデータを必要とする。したがって、システムパフォーマンスを向上させるためには、より広いデータバスあるいはより高速の特別なメモリディバイスが必要となる。これらの解決策は、システムコストとパワーとノイズを増加させるといった付加的側面での効果が生じるのを余儀なくさせる。図1は、従来技術を使用する典型的なコンピュータメモリコントローラとシステムメモリにおけるデータの伝送経路を示す。
CPUは、システムメモリからデータを通常のあるいは非圧縮のフォーマットでローカルバスを介して読み取り、次いで、処理データもしくはグラフィックデータをグラフィカルインターフェイスディバイスが配置されているI/Oバスもしくはローカルバスに戻し、そこで書き込みを行う。グラフィカルインターフェイスディバイスは、ディスプレイモニタを動作させる適切なビデオ信号を作り出す。注意するのは、先行技術のコンピュータアーキテクチャとその操作の場合、システムメモリとCPUの間あるいはシステムメモリとローカルI/Oバスの間のデータのやり取りにデータの圧縮と圧縮解除(展開もしくは解凍)を行わないという点である。先行技術のコンピュータアーキテクチャは、また、ユーザーのアプリケーションやオペレイティングシステムのソフトウェアを動作させるに必要なシステムメモリのサイズを小さくするために、何も行わない。加えるに、圧縮及び圧縮解除のアルゴリズムによって制御された
図面の簡単な説明
図1は、従来のコンピュータシステムアーキテクチャを示す。
図2Aは、本発明の一実施例に係る、メモリF/Xテクノロジを有する統合メモリコントローラ(IMC)を備えたコンピュータシステムを示す。
図2Bは、本発明の一実施例に係る、メモリF/Xテクノロジを有するノースブリッジメモリコントローラを備えたコンピュータシステムを示す。
図2Cは、本発明の一実施例に係る、メモリF/Xテクノロジを有するCPUを備えたコンピュータシステムを示す。
図2Dは、本発明の一実施例に係る、メモリF/Xテクノロジを有するメモリモジュールを少なくとも一つ備えたコンピュータシステムを示す。
図2Eは、本発明の一実施例に係る、メモリF/Xテクノロジを有するネットワークインターフェイスを備えたコンピュータシステムを示す。
図3Aと3Bは、本発明の一実施例に係る、メモリF/Xテクノロジを有するメモリモジュールを示す。
図4は、本発明の一実施例に係る、メモリF/Xテクノロジを有するネットワークディバイス,例えばルータを示す。
図5は、本発明の一実施例に係る、メモリF/Xテクノロジを有する携帯端末を示す。
図6は、本発明の一実施例に係る、IMCの内部構造を示す。
図7は、IMCのメモリコントローラの内部構造を示すブロックダイアグラムを示す。
図8は、IMC140を構成する圧縮/圧縮解除ロジックを示すさらに詳細なブロックダイアグラム。
図9Aは、従来技術の辞書ベースのLZシリアル圧縮アルゴリズムによるシーケンシャル圧縮技術を示す。
図9Bは、本発明の一実施例に係る、パラレル圧縮アルゴリズムを示す。
図10は、パラレル圧縮の操作を示すハイレベルのフローチャートダイアグラムである。
図11は、パラレル圧縮の操作を示すさらに詳細なフローチャートダイアグラムである。
図12は、パラレル圧縮及び圧縮解除ユニットのエントリデータヒストリと、比較入力データと結果計算とを示す。
図13は、パラレルセレクションと出力発生ブロックダイアグラムを示す。
図14aと14bは、本発明においてパラレル圧縮操作が行われている間の出力セレクションのために用いられるパラレル出力マスクと、出力カウンタと、マスクカウンタ値との操作を示す表。
図14cは、出力マスクの集合あkら結合マスクの生成を示す。
図15は、出力ジェネレータフローダイアグラムを示す。
図16は、多重サイクルを通るデータフローを示すパラレル圧縮操作の一例を示す。
図17は、不可逆的圧縮と可逆的圧縮エンジンを示す。
図18は、アルファ値を含まないイメージデータの不可逆的圧縮出力フォーマットを示すテーブルである。
図19は、アルファ値を含むイメージデータの不可逆的圧縮出力フォーマットを示すテーブルである。
図20は、不可逆的と可逆的圧縮及び圧縮解除操作を結合したブロックダイアグラムである。
図21は、圧縮及び圧縮解除メモリの有効性のためにIMCによって用いられるソース及びデスティネイションデータの複数の圧縮フォーマットを示す。
図22と23は、本発明の一実施例に係る、圧縮モードを用いるメモリアクセスの操作を示すフローチャートダイアグラムである。
図24は、圧縮アドレストランスレーションと、ディクショナリと、オーバーフローブロックアドレストランスレーションの流れを示す。
図25は、圧縮割り当てテーブル及びオーバーフローテーブルと、圧縮メモリエリア及びオーバーフローメモリエリアのためのメモリ割り当てフィールドを示す表である。
図26は、圧縮アドレストランスレーションテーブルのための初期化プロセスフローを示す。
図27は、圧縮及び圧縮解除ユニットのための記録トランザクションプロセスを示す。
図28は、メモリフェッチプロセスフローを示す。
図29は、次のアドレス生成プロセスフローを示す。
図30は、本発明の一つの実現法に従ったメモリ割り当てスペースと圧縮比率を示す表である。
図31は、要求システムエージェントによって連続するメモリ読取サイクルの待ち時間を減らすために使用する圧縮再指令アルゴリズムを示す。
図32は、本発明の一実施例に係る、不可逆的圧縮解除エンジンを提供するためのヘッダ情報を示す表である。
図33は、本発明の一実施例に係る、パラレル可逆的圧縮アルゴリズムのために用いられる4ステージを示す。
図34は、本発明の一実施例に係る、パラレル圧縮解除プロセスのために用いられるスタートカウントを生成するに必要な8つのデコーダステージを示す。
図35は、本発明の一実施例に係る、図33のステージ入力セレクタとバイトカウンタによって用いられる単一デコーダブロックを示す。
図36aは、本発明の一実施例に係る、デコードブロックの正当性チェック結果テーブルを示す表である。
図36bは、本発明の一実施例に係る、バイトチェックセレクトロジックとデータ入力に基づいたデータ生成出力を表す表である。
図37は、本発明の一実施例に係る、セレクトとオーバーフローを計算するための図33に示す4ステージの二番目の部分を表す。
図38は、本発明の一実施例に係る、最終セレクトのステージ2において生成された予測セレクトを変換するために図33に示す4ステージの三番目の部分を示す。
図39は、本発明の一実施例に係る、最初の3ステージにおいて生成されたセレクトから非圧縮出力バイトを生成するために図33で示す4ステージの四番目の部分を示す。
図40は、本発明の一実施例に係る、パラレル可逆的圧縮エンジンを通過するデータフローを示す。
図41は、パラレル圧縮解除プロセスに用いられる情報を生成するとともに32ビットの入力データを受け入れるための3つのデコーダステージの一実施例を示す。
図42aは、本発明の一実施例に係る、4つの入力バイトと、3つのデコーダと、4つの出力バイトを有する圧縮解除エンジンを示す。
図42bは、本発明の一実施例に係る、図42aに示す圧縮解除エンジンへの入力の圧縮解除を例示を示す。
図43aは、パラレル圧縮解除エンジンのハイレベルのフローチャートを示す。図43bは、本発明の一実施例に係る、パラレル圧縮解除法を示すフローチャートである。
図43cは、本発明の一実施例に係る、圧縮データから複数のトークンをパラレルに調査するためのプロセスを示すフローチャートである。
図43dは、本発明の一実施例に係る、一つもしくはそれ以上のトークンを圧縮解除されたものに解凍するためのプロセスを示すフローチャートである。
図43eは、本発明の一実施例に係る、カウント及びインデックスあるいはデータバイト情報をパラレルに生成するためのプロセスを示すフローチャートである。
図43fは、本発明の一実施例に係る、結合されたヒストリウィンドウ内の記号に複数のセレクトを生成するためのプロセスを示すフローチャートである。
図43gは、本発明の一実施例に係る、予備的なセレクトを生成するためのプロセスを示すフローチャートである。
図43hは、本発明の一実施例に係る、最終セレクトを生成するためのプロセスを示すフローチャートである。
図43iは、本発明の一実施例に係る、結合されたヒストリウィンドウから非圧縮記号を書き込むためのプロセスを示すフローチャートである。
図43jは、本発明の一実施例に係る、カレント圧縮解除サイクルによって非圧縮とされた記号をヒストリウィンドウに書き込むプロセスを示すフローチャートである。
図43kは、本発明の一実施例に係る、図43b、43c、43dを結合した圧縮解除プロセスを示すフローチャートである。
好ましい実施例の詳細な説明
先行技術のコンピュータシステムアーキテクチャ
図1は、先行技術のコンピュータシステムアーキテクチャのブロックダイアグラムを示す。図示するように、先行技術のコンピュータアーキテクチャは、キャッシュシステム104に接続したCPU102を含んでいる。CPU102はキャッシュシステム104に接続してあり、またローカルバス106に接続してある。ノースブリッジ108として関係づけられるメモリーコントローラ108は、ローカルバス106に接続してある。また、メモリーコントローラ108は、システムメモリ110に接続してある。グラフィックアダプタ112は、分離されたローカル拡張バス、例えばPCIもしくはAGPに接続してある。したがって、ノースブリッジメモリコントローラ108は、CPU102と主システムメモリ110との間に接続され、ノースブリッジロジックはまたグラフィックアダプタ112が配置されたローカル拡張バスに接続してある。グラフィックアダプタ112は、ディスプレイモニタに実際に表示されるピクセルデータとして関係づけられるビデオデータを貯えるフレームバッファメモリ114に接続してある。
現代の先行技術コンピュータシステムは、典型的には、1から8メガバイトのビデオメモリを含んでいる。I/Oサブシステムコントローラ116は、図示されるようにローカルバス106に接続されている。PCIバスを含んだコンピュータシステムでは、I/OサブシステムコントローラはPCIバスに接続されている。I/Oサブシステムコントローラ116は、セカンダリの入力/出力(I/O)バス118に接続してある。不揮発性メモリ、例えばハードディスク120、キーボード122、マウス124、及びオーディオディジタルアナログコンバータ(DAC)238を含むいろいろな周辺I/O装置は、一般にI/Oバス18に接続されている。
先行技術のコンピュータシステムアーキテクチャは、一般に次のように動作する。第一に、プログラムやデータは一般にハードディスクに記憶されている。もし、ソフトウェアの圧縮アプリケーションが用いられているとすると、データは圧縮フォーマットでハードディスク120に記録されているかも知れない。CPU102の指図にしたがって、プログラムとデータ、はハードディスクからI/Oサブシステムコントローラ116を介しメモリコントローラ108経由でシステムメモリ110に伝送される。
もし、ハードディスク120から読み取られるデータが圧縮フォーマットで記録されているとすると、データは、システムメモリ110に伝送される前にCPUによって実行されるソフトウェアにより圧縮解除される。したがって、圧縮アプリケーションソフトウェアは、システムメモリ110に記録される前に圧縮データをハードディスク120からCPU102へ伝送する必要がある。
CPU102は、メモリコントローラ108とローカルバス106を介してシステムメモリ110に記録されたプログラムとデータにアクセスする。プログラムコードとデータの処理において、CPU102は、ローカルバス106と一般的にはPCIバスもしくはAGPバスを介して指示とデータをグラフィックアダプタ112に提供する。グラフィックアダプタ112は、CPU102からグラフィックに関する指示もしくはピクセルデータを受け取り、フレームバッファメモリ114に記録されるピクセルデータを作成する。グラフィックアダプタ112は、フレームバッファメモリ114に記録されたピクセルデータを表示するためのビデオディスプレイ装置(図示せず)を駆動させるに必要なビデオ信号を作成する。スクリーン上のウィンドウがアップデートされあるいは変更されると、上記プロセスが繰り返され、CPU102がローカルバス106を介してシステムメモリ110からデータを読取り、データをローカルバス106とローカル拡張バスを介してグラフィックアダプタ112とフレームバッファメモリ114に伝送して戻す。
コンピュータシステムが、データを圧縮フォーマットでハードディスク120に記録したい場合、データはCPUによって読み取られ、圧縮アプリケーションソフトによって圧縮される。圧縮データはそれからハードディスク120に記録される。もし、圧縮データがシステムメモリ110に記録されていると、CPU102は、圧縮データを読み取り、そのデータを圧縮解除し、そして圧縮解除されたデータをシステムメモリ110に戻して書き込むことを要求される。
しかしながら、現在のコンピュータシステムあるいはコンピュータ製品では、システムメモリコントローラは、メインシステムメモリにとっての有効帯域幅を最適化するための圧縮と圧縮解除の技術を備えていない。
RAMBUSのような特殊な技術は、少ないピン数に高帯域幅を供給するために、メモリディバイスとメモリコントロールユニットの両方に用いられる。RAMBUSメモリのアーキテクチャに関する更なる情報については、1993年7月発行の「RAMBUS,Inc」社による「RAMBUSアーキテクチャル概観、第2版」、1992年3月発行の「RAMBUS,Inc」社によ「デスクトップコンピュータのメインメモリサブシステムにRAMBUSを適用するための技術、第1版」を参照いただきたい。RAMBUSの技術は、低いメモリチップで高い帯域幅を達成するけれども、RAMBUSチャンネルの超高周波伝送効果によってコスト上の問題と同様にパワーとノイズについての問題を惹きおこすことについては譲歩せざるを得ない。加えるに、より高い帯域幅を達成するために、伝送チャンネルは、メモリコントローラとメモリそれ自身の両方に付加的なロジック(論理)を必要とする。そして、またより高いパワーとノイズを惹きおこす。
64メガバイトかそれ以上のメインメモリDRAMは、パッケージサイズやアドレス及びデータピンの数を増加させ続ける。この傾向に起因したピン数の増加によって、かつてのより小さなDRAMアーキテクチャにより有効帯域幅をバンク(bank)状DRAMがより高い帯域幅にするという能力は帳消しとなる。
実施例
図2Aは、本発明を組み込んだシステムの一実施例のブロックダイアグラムを示す。図2Aは実施例の一例である。ここに記載された技術は、さまざまなシステムやアーキテクチャにおけるものを含んでいることに注意されたい。例えば、本発明技術は、コンピュータシステム、テレビジョンシステム(HDTV)、
、インターネット装置、PDA(携帯用情報端末)、あるいはデータを伝送しあるいは記録データのメモリを含む他のシステムにおけるものを含んでいる。本発明の技術は、本発明の使用の一例であるコンピュータシステムアーキテクチャを参照しつつ下記される。図1におけるものと類似あるいは同一である図2Aのエレメントは、便宜上同じ符号を付してある。
図示するように、CPU102を有するコンピュータシステムは、キャッシュシステム104に接続されている。CPU102は、内部第一レベルのキャッシュシステムを有し、キャッシュ104は第2レベルキャッシュから成る。キャッシュシステム104は、第一レベルのキャッシュシステムでも良いしあるいは望みによっては省略しても良い。CPU102とキャッシュシステム104は、ローカルバス106に接続されている。CPU102とキャッシュシステム104は、本発明の一実施例に見られるように、ローカルバス106を介して集積メモリコントローラ140に直接、接続されている。
集積メモリコントローラ(IMC)140は、メモリを制御する要素であり、コンピュータシステムのパフォーマンスを著しく増加させるメモリF/Xテクノロジ200を有する。知られているように、IMCは、メインシステムメモリ110のコントローラとして用いられ、あるいは望みに応じて他のメモリサブシステムをコントロールするために用いられる。IMC140は、システムメモリ110に接続されている。システムメモリ110は、一つもしくはそれ以上のDRAMから成り、また複数の異なるタイプのメモリディバイスから成っている。IMCは、本発明でメモリF/Xテクノロジコア200として参照されるメモリコントローラコアを有する。メモリF/Xテクノロジコア200は、好ましくはIMC140内に埋め込まれるが、IMC140の外部にあってもあるいはCPU102内に含まれていても良い。IMC140の全体は、CPU102に集積されたものであっても良い。他の実施例では、メモリF/Xテクノロジ200はノースブリッジ108内に含まれ、例えば標準的なチップセットロジックに埋め込まれる。メモリF/Xテクノロジコア200は、メモリ圧縮や圧縮解除、システムメモリのコントロール、圧縮フォーマット、キャッシュディレクトリ、データキャッシュコントロール、有効データ帯域幅及びシステムメモリ転送の有効性を改善するためのデータの多重送信を実行する。
IMC140は、望むとおりの様々なタイプのメモリに接続できる。好ましい例では、IMC140は、RAMBUSを介してシステムメモリ110に接続される。RAMBUSメモリアーキテクチャに関する詳細な情報については、上記したRAMBUS参照個所を見てもらいたい。さらに別の実施例では、システムメモリ110は、SGRAMあるいはSIMM(Single in -line memory modules)から成る。上記したように、本発明のIMC140は望みの様々なタイプのメモリに接続できる。
IMC140は、また、ビデオディスプレイ装置142のための適切なビデオ信号を発する。IMC140は、ビデオディスプレイにイメージを生成するための水平及び垂直同期信号と同様に赤、緑、青(RGB)の信号を発する。したがって、集積されたメモリコントローラ140は、メモリコントローラとビデオ及びグラフィックコントローラの能力を一つの論理ユニットに集積したものである。このことは、バスのデータ通行量を著しく減らし、システムパフォーマンスを向上させる。一つの実施例では、IMC140は、また、オーディオプレゼンテーションのためのオーディオDAC238に提供される適切なデータ信号を発する。あるいはIMC140は、オーディオプロセッシングとオーディオDACの能力を統一し、スピーカに直接提供されるオーディオ信号を出力する。
本発明のIMC140は、好ましくはメインCPUバスか高速システム周辺バスに配置される。IMC140は、またCPU102の近くあるいはそれに直接まとめられ、例えばCPU102の同じチップを構成するようにしても良い。図2Aと3に示す実施例では、IMC140は、ローカルバス106あるいはCPUバスに直接接続されている。そこではIMC140は、L2キャッシュシステム104を介してCPU102に面している。代わりの実施例では、L2キャッシュとコントローラ104は、CPU102あるいはIMC140に統一されていても良く、また用いられなくとも良い。
I/Oサブシステムコントローラ116は、ローカルバス106に接続されている。I/Oサブシステムコントローラ116は、またオプショナルI/Oバス118に接続されている。様々なI/O装置、例えばハードディスク120のような不揮発性メモリ、キーボード122、マウス124を含むI/O装置がI/Oバスに接続されている。
一つの実施例では、I/OバスはPCIバスであり、I/Oサブシステムコントローラ116はPCIバスに接続されている。
典型的なコンピュータプログラムは、アプリケーションデータを伝送するために、CPUによって実行されるプログラムコードを伝送するよりも多くのローカルバス帯域幅を必要とする。アプリケーションデータには、ビットマップイメージ、テキストを出力するためのフォントテーブル、テーブルや初期設定情報のように定数として決定付けられる情報などを含む。グラフィック及び/またはビデオデータは、ビデオデータがグラフィック出力装置に書き出される前に、例えばCPU102によってディスプレイ実行される。したがって、殆どのケースでは、実際のプログラムコードは、CPU102によって実行され、CPU102は、記録するのにアプリケーションデータそれ自体よりもかなり少ないシステムメモリ110しか消費しないアプリケーションデータを操作する。
IMC140は、新規なシステムアーキテクチャを含んでいる。このアーキテクチャは、システム帯域幅のボトルネックを減じ、CPU102がアプリケーションデータ及び/もしくはプログラムコードを操作し、移動するのに要求される余分な操作を取り除くのに役立つ。ある実施例によれば、IMC140は、データの圧縮/圧縮解除エンジンを含んでいる。このエンジンは、アプリケーションデータ及び/もしくはプログラムコード、すなわちシステム内のあらゆるデータが圧縮フォーマットで動くのを許容する。IMC140の圧縮/圧縮解除エンジンの操作は、下記に詳説される。
IMC140は、また、グラフィックデータあるいはビデオデータを操作するためのハイレベルのプロトコルを含んでいる。このプロトコルは、ビデオ操作に必要とされるバスを通過するデータの流れの量を著しく少なくし、システムパフォーマンスを大きく向上させる。このハイレベルプロトコルは、ビデオリフレッシュシステム及び方法に基づいたディスプレイリストを含んでいる。それによって、ビデオディスプレイ装置142に表示される対象物(オブジェクト)の動きは、システムメモリ110のピクセルデータの移動を必ずしも必要とすることがなく、むしろディスプレイリフレッシュリスト内のディスプレイアドレスポインタの操作だけが必要であり、ピクセルビットブロック伝送やアニメーション及び2D,3Dオブジェクトの操作のパフォーマンスが大きく向上する。IMC140のビデオ/グラフィックの操作に関する詳細については、米国特許第5,838,334号を参照されたい。IMC140は、また3Dオブジェクトを表示するための改良されたシステムと方法を含んでいる。
図2Aは、IMC140を有するコンピュータシステムのデータ転送パスの一例を示すものでもある。上記したように、典型的なコンピュータシステムでは、プログラムコードとデータは、当初、不揮発性メモリ120に記録される。そして、第一に、IMC140は、DMA(direct memory access)方法及び/もしくはバスコントロール方法を用いて不揮発性メモリ120に貯えられたプログラムコードやデータを読み取る。そこでは、IMC140はローカルバス106のマスタとして動作する。プログラムコードとデータがIMC140によって不揮発性メモリ120から読み取られ、システムメモリ110に記録される。他の実施例では、プログラムコードやデータは、CPUの制御下で不揮発性メモリ120からIMC140に伝送される。データは、圧縮フォーマットの状態で不揮発性メモリ120からシステムメモリ110に伝送されても良い。このようなデータは、ディスクへの記録サイズが小さくて済み、ローカルバスの帯域幅を減少させる。データが不揮発性メモリ120からIMC140に伝送されると、データは、IMC140内の圧縮解除エンジンによって解凍され、圧縮解除された状態でシステムメモリバンク110に記録される。一般に、磁気媒体(ハードディスク)のI/O伝送率は、ゆっくりした速度であり、圧縮データがディスク120から受け取られたときにそのデータを圧縮解除して記録するには十分である。データは、圧縮フォーマットの状態でシステムメモリに記録されても良い。また、データは、非圧縮状態でキャッシュに記録されても良い。
CPU102は、最近に圧縮解除されたシステムメモリ110からのプログラムコードを読み取ることによって、プログラム実行を始めても良い。また、IMC140の圧縮解除エンジンは、システムメモリ110内にある圧縮解除データ記録するのと平行して、圧縮解除データをCPU102に提供する。他の代わりの実施例では、データは圧縮フォーマットの状態でメモリに記録され、CPU120が、圧縮解除されてCPU102に送られる結果データにアクセスする。
プログラムコードの一部は、ビデオディスプレイ142上のディスプレイ出力を制御するようIMC140に命令するための特別なグラフィカルプロトコルを用いて、データ及び/もしくは指令をIMC140に書き戻すために必要な情報を含んでいる。多くの場合、システムメモリ110に正しく記録されるグラフィカルデータは、システムメモリ110に残される必要はなく、また、システムメモリ110内の他の場所に移す必要もなく、むしろ、本発明のIMC140の高度なグラフィカルプロトコルとリストを基準とするディスプレイ操作とによって、CPU112がIMC104にどのようにしてウインドウや他のグラフィカルデータをスクリーンに表示するかを指示することができる。これにより、先行システムに対する大きな改良をもたらす。
図2Bから2E:別の実施例
図2Bは、本発明を組み込んだシステムの一例を示すブロック図である。図2Bの例において、メモリF/Xテクノロジ200はノースブリッジ108内に設けられいる。すなわちメモリF/Xテクノロジ200は標準的なチップセットロジック内に埋め込まれている。
図2Cは、本発明を組み込んだシステムの一例を示すブロック図である。図2Cの例において、メモリF/Xテクノロジ200はCPU102の内部にある。メモリF/Xテクノロジ200は、CPU及び/またはCPUL1あるいはL2キャッシュコントローラ内のいろいろな望みの場所に設けられる。
図2Dはシステムの一例を示すブロック図で、この例では、メモリF/Xテクノロジ200は、少なくとも一つのメモリモジュール110上に設けられている。一つあるいはそれ以上のシステムメモリモジュール110は、メモリF/Xテクノロジであるのと同様にメモリ構成部材もしくは装置であり、一つもしくはそれ以上の双方向圧縮/圧縮解除エンジンを含んでいる。メモリF/Xテクノロジは、モジュール上に設けられたメモリ構成部材もしくは装置へ/からデータが伝送されるときに、そのデータを圧縮/圧縮解除の処理操作を行うことができる。
図2Bの一つあるいはそれ以上のフレームバッファメモリモジュール114は、同様に本発明に係るメモリF/Xテクノロジを含んでいる。一つあるいはそれ以上のフレームバッファメモリモジュール114は、メモリF/Xテクノロジを成すのと同様にメモリ構成部材もしくは装置を成す。
メモリモジュール110及び/または114上に設けられたメモリ構成部材もしくは装置は、どのようなタイプのものであっても良い。例えばSDRAM(static dynamic random access memory)、DIMM(dual in-line memory module)あるいは他のタイプのメモリ構成部材であっても良い。加えるに、RAMBUSのような特殊技術は、メモリ装置や、少ないピン数のものに高帯域幅を持たせるためのメモリコントロールユニットのいずれにも用いることができる。RAMBUSメモリアーキテクチャの更なる情報については、RAMBUS社が1993年7月に発行した「RAMBUSアーキテクチャ概観(第2.0版)」と、RAMBUS社が1992年3月に発行した「デスクトップコンピュータのメインメモリシステムへのRAMBUS適用技術(第1.0版)」を参照されたい。
本発明の他の実施例では、メモリF/Xテクノロジは、例えばノースブリッジ108もしくはIMC140のようなメモリコントローラと一つもしくはそれ以上のメモリモジュール110との間に配設される。
図2Eは、システムの一例のブロック図である。そこでは、メモリF/Xテクノロジは、ネットワークインターフェイス装置もしくはカード121上に設けられている。ネットワークインターフェイス装置121は、
ネットワーク、例えばインターネット、構内ネットワーク(LAN)その他の広域ネットワーク(WAN)へデータを伝送し/これらネットからデータを受け取るときに、そのデータを圧縮/圧縮解除する処理操作を行うことができる。
図3Aと3B:メモリモジュール実施例
図3Aと3Bは、メモリF/Xテクノロジを含んだメモリモジュール571のボードアセンブリ(基板上の集合配置)の一例を示す。メモリモジュール571は、メモリF/Xテクノロジの小型チップ250と同じく複数のメモリ装置573を有する。メモリF/Xテクノロジ小型チップ250は、サブセットタイプだけのものあるいはメモリF/Xテクノロジ全体であっても良い。例えば、メモリF/Xテクノロジ小型チップ250は、リアルタイムで圧縮を行うメモリF/Xテクノロジの並列的に圧縮/圧縮解除を行うエンジン部のみを含んでいる。メモリF/Xテクノロジ小型チップ250は、また、並列的に圧縮/圧縮解除をおこなう技術を用いて、改良された仮想メモリファンクションを実行するための仮想メモリロジックを含んでいる。
図3Aはモジュールの前面を、また図3Bはモジュールの裏面を表している。図3Aと図3Bは、メモリモジュールデザインの好ましい例を示している。好ましくは、インテルPC100あるいはPC133のスペックに順応する256MBレジスタのDIMMである。他の実施例では、より大きな及び/または小さなサイズのレジスタのDIMMとして設計されたものであっても良いし、あるいは異なるフォームファクタあるいはスペックのものであっても良い。メモリF/Xテクノロジ200は、勿論他のメモリモジュールデザインのものに含まれるようにしても良い。付け加えるに、メモリF/Xテクノロジ200あるいはメモリF/Xテクノロジ200の変形例は、RAMBUSあるいはダブルデータレートDRAM装置に用いられても良い。他の異なる実施例では、JDEC規格で提案されているようなメモリタイプや異なるDRAM群オプションを含む。また、他の実施例は、多重の異なるメモリモジュール規格に沿ったこれらのメモリタイプを混合したものを含む。
図4−ネットワーク装置
図4は、メモリF/Xテクノロジ200が含まれたルータのようなネットワーク装置を示す。ネットワークインターフェイスディバイス121のように、ネットワーク装置130は、ネットワーク、例えばインターネット、構内ネットワーク(LAN)その他の広域ネットワーク(WAN)へデータを伝送し/これらネットからデータを受け取るときに、そのデータを圧縮/圧縮解除する処理操作を行うことができる。このようにして、本発明は、インターネットあるいは他のネットワークを介して伝送されたほとんどあるいは全てのデータが、圧縮フォーマットの状態で伝送される設備を提供できる。
図5−PDA
図5は、メモリF/Xテクノロジ200を有する携帯用情報端末(PDA−personal data assistant)あるいはインターネット装置を表している。
ネットワークインターフェイス装置121やネットワーク装置と同じように、PDA132は、ネットワーク、例えばインターネット、構内ネットワーク(LAN)その他の広域ネットワーク(WAN)へデータを伝送し/内部メモリからデータを受け取るときに、そのデータを圧縮/圧縮解除する処理操作を行うことができる。
図2Aから2E、3AからB、図4そして図5に示された上記システムのそれぞれにおいては、システムは、単に、メモリF/Xテクノロジ200のサブセットタイプのものあるいは全体を含むものである。例えば、上記したシステムは、メモリF/Xテクノロジ200の並列的な圧縮/圧縮解除を行うエンジン部だけを含んでいる。本発明の下記する実施例では、メモリF/Xテクノロジはメモリコントローラ、例えばIMC140内に組み込まれている。図6から8は、メモリF/XテクノロジがIMC内に組み込まれた実施例を示す。図9は、進んで、メモリF/Xテクノロジの操作を示す。下記する説明では、メモリF/Xテクノロジがメモリコントローラ内にあるものとして記載されているが、メモリF/Xテクノロジは、上記した典型的な実施例に記されているように様々な装置に含まれる。
図6−IMCのブロック図。
図6は、好ましい実施例においてIMC140の内部構成を示すブロック図である。IMC140は、本発明にしたがってメモリF/Xテクノロジを組み込んである。図示するように、本発明は、IMC140のメモリコントローラユニット220の内部に、データを圧縮/圧縮解除するエンジンとコントロールファンクションを統合してある。これにより、不揮発性データへの格納量あるいは要求される書庫への格納量が減り、またシステム内でデータを伝送するために必要な帯域幅の量が減り、この結果、全体にわたるシステムコストの低減となる。このことは、システムメモリリソースの必要とされる量を減らすことになる。そのため、データが記録のために圧縮されたときに、最近は使用されていないあるいはスクリーンに表示されないデータは、より多くのデータがシステムメモリに格納される。
本発明は、上記したような様々なシステムアーキテクチャを持ついろいろなタイプのコンピュータシステムあるいは装置に組み込まれることに、留意すべきである。他の実施例では、データを圧縮/圧縮解除するエンジンは、どのような装置(デバイス)内に統合されても良い。ある実施例では、本発明は、I/Oバスを増加させたり、システムへのコストを上げたりすることなく、帯域幅や有効性について改善できる。
メモリコントローラは、異なる圧縮モードにも動作する。
一つのモードは、通常の圧縮モードで、使用されるメモリ量を少なくする。オペレーティングシステムによって割り当てられたアドレスを新しいアドレス、つまり実行される圧縮にしたがってメモリの使用量を最小にするアドレスに移動することによって、使用されるメモリ量を減少させる。また、この実施例では使用されるメモリ量を少なくするけれども、優先圧縮モードである互換モードの場合、メモリサイズの節約を行うものではなく、その代わりに全ての待ち時間をより少なくしまた帯域幅をより高くするために付加的にセーブされたメモリを交換する。優先圧縮モードにおいて、圧縮/圧縮解除を改良したものにするには、ソフトウェアあるいはOS(Operating system software)になんの変更もしないことが必要である。通常圧縮モードと優先圧縮モードは、下記する通りである。
図6にある様々な要素は、互いに接続されている。多様な接続手段は、図6を単純化するために記されていない。IMC140は、ホストコンピュータシステムに接続するためのバスインターフェイスロジック202を有している。好ましい例では、ローカルバス106はCPUバスあるいはホストバスである。別の例では、ローカルバス106はPCIバスで、バスインターフェイスロジック202はPCIバスに接続してある。命令記憶装置/復号ロジック(図示しない)は、バスインターフェイスロジック202に接続されている。
バスインターフェイスロジック202は、メモリコントロールユニット220に接続してある。メモリF/Xテクノロジは、好ましくはメモリコントロールブロック220の内部に設けられる。コントロールバス201は、全てのユニットをローカルCPUインターフェイス202に接続する。実行エンジン210コントロールバス201と介してローカルCPUインターフェイス202とメモリインターフェイス221に接続され、また実行エンジン210は、メモリコントローラに接続してある。ローカルバス106のデータと指令は、ローカルCPUインターフェイスを介してローカルバス201に送られる。ローカルバス201は、実行エンジン210、メモリインターフェイス221、グラフィックエンジン212、周辺I/Oバスインターフェイス234、VDRLエンジン240、ビデオ入力及びフォーマット変換ユニット235、最後にオーディオ及びモデムサブシステム236に、順に接続される。加えるに、実行エンジン210は、メモリコントローラ220及びメモリインターフェイス221を通してメインシステムメモリ110に接続されている。
グラフィックエンジン212は、また、メモリコントローラ220及びメモリインターフェイス221を通してメインシステムメモリに接続されている。こうして、データは、メモリコントローラ220によるデータ伝送と効率性に関する助力を得て、グラフィックエンジン212によってラスター化とピクセル描画出力のために読み込まれ、かつ書き込まれる。更に、他のブロックは、同じような環境下で、メモリコントローラ220とメモリインターフェイス221を通してシステムメモリ110に接続されている。
図6に示すように、メモリコントローラ220は、データをシステムメモリ110とリクエスティングユニットとの間に伝送する。リクエスティングユニットは、実行エンジン210、ローカルCPUあるいはRISCインターフェイス202、オーディオ及びモデムサブシステム236、ビデオI/Oインターフェイス、VDRLエンジン240、周辺バスインターフェイス234、並びにグラフィックエンジン212を含んでいる。リクエスティングユニットは、メモリコントローラ220に、システムメモリインターフェイス221を通してシステムメモリ110にデータを伝送する処理を行うよう要求する。各リクエスティングユニットは、メモリの効率がより高くなるよう、異なる圧縮フォーマットを表現しあるいは役立たせる。このようにして、リクエスティングユニットの制御とメモリコントローラブロック220による支援の下に、複数のデータ圧縮フォーマットが存在する。
図7−メモリコントロールユニット
図7は、メモリコントロールブロック220を示す。好ましい実施例では、メモリコントローラ220は、並列(parallel)圧縮及び圧縮解除エンジン251を含んでいる。別の実施例では、メモリコントローラ220は、単一あるいはシリアル(連続的)な圧縮エンジンと、単一あるいはシリアルな圧縮解除エンジンとを含んでいる。また、並列圧縮及び圧縮解除ユニット251は、分離された不可逆な(lossy)圧縮及び圧縮解除を行うエンジン(後に詳説)を含んでいる。このエンジンは、分離されあるいは統一されたユニットとして設計される。他の別の実施例では、個別の圧縮及び/もしくは圧縮解除を行うユニットが、圧縮と圧縮解除を最適に効率良く行うためにIMC140の複数の領域に配置される。
メモリコントロールブロック220は、一つもしくはそれ以上のパラレルもしくはシリアルの圧縮/圧縮解除エンジンを含んでいる。このエンジンには、一つもしくはそれ以上のパラレル及び/もしくはシリアルの圧縮/圧縮解除を行うエンジン、及び/もしくは一つもしくはそれ以上のパラレル及び/もしくはシリアルの不可逆な圧縮/圧縮解除を行うエンジンを含む。ここで用いられる「圧縮/圧縮解除エンジン」という語は、一つもしくはそれ以上のパラレル、シリアル、可逆な(lossless)及び/もしくは不可逆な(lossy)圧縮/圧縮解除エンジンの全ての組み合わせを含むことを意図している。これらのエンジンは、統合されたブロックあるいは分離されたブロックにあろうとそうでなかろうと構わないし、メモリコントローラの内部にあるか外部にあるかを問わないし、他のユニット例えばCPU102にあろうと構わない。
メモリコントローラ220の好ましい実施例にあるサポートブロックは、スイッチロジック261、圧縮コントロールユニット281、圧縮データディレクトリ271、L3データキャッシュメモリ291、及びメモリインターフェイスロジック221を含んでいる。図7においてメインシステムメモリ110は、メモリコントローラブロック220の外部にあり、参照符合でのみ表してある。加えて、L3データキャッシュ291は、外部メモリのない標準的なメモリ(SRAMあるいは埋込型のDRAM)であり、またキャッシュタイプのメモリとして形成されるものでも良い。メモリコントローラ220への入力信号は、図7に示されるように、IMC140内の各リクエスティングユニットからのリクエストバスやコントロールバス211、並びに複数のアドレスバス215やデータバス216を構成する。更に、リクエスティングエージェントのそれぞれは、共通のアドレス/データバスを共有している。メモリコントローラ220は、メインシステムメモリ110に橋渡しする出力信号を発生する。これらの出力信号は、前記した多様なDRAMメモリ装置を駆動させるに必要な複数の制御信号を形成する。
再度、図7を参照するに、スイッチロジック261は、メモリコントローラ220に提示される正しいデータやアドレスサイクルを示すに必要なコントロールバスやストロウブを含む全てのリクエスティングユニットのアドレスとデータバスに相互伝送可能に接続(interface)されている。スイッチロジック261は、また、メモリコントローラ220内にある他のユニットにアドレスとデータを追いやるのに必要なポートを有する。スイッチロジック261は、パラレル圧縮及び圧縮解除ユニット251と圧縮コントロールユニット281から読み込みあるいはこれらに書き込みするデータを制御する。加えるに、圧縮されていないあるいは圧縮解除されないデータ(通常あるいはバイパスデータ)に関しては、スイッチロジック261は、メモリインターフェイスロジック221へのインターフェイスを直接制御する。異なるデータ圧縮フォーマットのためにアドレスととデータの切り換え方向を適切に制御するために、スイッチロジック261は、圧縮コントロールユニット281とリエストバス211から制御入力信号を受け取る。スイッチロジック261は、また、後で詳説するように、パラレル圧縮及び圧縮解除ユニット251と相互に作用しあう。こうして、スイッチロジック261は、優先計画に沿ってリクエストをランキングし、また通常あるいは圧縮メモリトランザクションのためのリクエストをフィルタリングしながら、メモリ制御とデータ伝送処理のために入ってくるリクエストを間にたって裁定する。
図7をもう一度参照するに、圧縮コントロールユニット281は、メモリトランザクションリクエストをリクエスト及びコントロールバスから受けとり、またスイッチユニット261から各メモリトランザクションの制御のためのアドレスを受け取る。圧縮コントロールユニット281は、各メモリトランザクションリクエストを適切に処理し、セットアップするために、スイッチロジック261と、圧縮データディレクトリ271と、ローカルデータキャッシュメモリ(L3データキャッシュ)291と、メモリインターフェイスロジック221と、パラレル圧縮及び圧縮解除ユニット251を指揮する。圧縮コントロールユニット281は圧縮データディレクトリ271と相互伝送可能に接続されている。圧縮データディレクトリ271は、LL3データキャッシュ291、SRAMバッファ(パラレル圧縮及び圧縮解除ユニット251内に設けられている)、システムメモリ110のどれかのアドレスブロックが開始する位置を捜し出すために用いられる。こうして、圧縮コントロールユニット281は、IMC140内の他のユニットからのリクエストを受け取り、アドレスによる位置を翻訳し、圧縮ブロックサイズを決定し、そして、メインシステムメモリ110から読み込んだり、メインシステムメモリ110に書き込んだりするのに必要な適切なアドレスとデータトランザクションのためにメモリコントローラ220のサブユニットを制御する。
図7に見られるデータキャッシュ291は、最近使われたリクエストデータを戻すことによって、処理の待ち時間を最小にするために用いられる。データキャッシュ291は、CPU102あるいはシステムがL1とL2キャッシュを含んでいる場合のL3データキャッシュである。キャッシュ291は、所望に応じてCPU102のためL2あるいはL1キャッシュとして動作するものであっても良い。この説明では、キャッシュ291は、L3キャッシュとしてある。
L3データキャッシュのサイズは、IMC140のリクエスティングユニットにデータを戻すに必要なクロックの平均的な数字を決める。本実施例では、最も最近用いられたデータは、L3データキャッシュ291に圧縮されずに記録される。L3データキャッシュ291に常駐するデータには、パラレル圧縮及び圧縮解除ユニット251による圧縮や圧縮解除は行われない。こうして、ヒットされたL3データキャッシュへのトランザクションリクエストは、メインメモリ110にリクエストする場合に比べ、データをほとんど待ち時間なしに戻すことができる。L3データキャッシュ291は、典型的には、圧縮されていないデータのみを有している。別の実施例では、L3データキャッシュ291は、最も最近用いられたデータを圧縮フォーマットの状態で記録しても良いし、圧縮フォーマットと非圧縮フォーマットの混在した状態で記録しても良い。メモリコントローラ210内のL3データキャッシュ291は、コンベンショナルメモリコントローラと共働して、最も最近用いられたデータを通常の待ち時間遅れを生じさせることなしに戻すことができる。
パラレル圧縮及び圧縮解除エンジン251がSRAMバッファ記憶装置を有しない実施例では、L3データキャッシュ291は、将来的な圧縮のための書き込みブロックと将来的な圧縮解除のための読み込みブロックを記録するために用いられるSRAMバッファを2倍にすることができる。L3データキャッシュ291は、読み込みか書き込み処理用の将来的な圧縮解除を待つ圧縮ブロックを記録するために用いられるようにしても良い。例えば、L3データキャッシュ291は、圧縮されて不揮発性メモリに伝送されるために待っているLRUページの記録に用いられるようにしても良い。L3データキャッシュ291とこれに共働するキャッシュコントロールロジック281は、非圧縮処理(圧縮しないあるいは圧縮解除)を要求する圧縮/圧縮解除トランザクションあるいはトランザクションの両方を読み書き両処理するためのメモリアクセスの待ち時間を改良するためにトランザクションをバッファに入れる。
再度、図7を参照して、メモリインターフェイスロジック221は、圧縮コントロールユニット281から制御信号を受け取り、スイッチロジック261(圧縮しないというトランザクション)あるいは圧縮データディレクトリ271のいずれかからアドレスとデータを受け取り、そして、DRAMデバイスのタイプに基づいてメインメモリ110への配送電圧のレベルとタイミングを制御する。メモリインターフェイスロジック221は、こうしてメモリのコンフィギュレーションとデバイスタイプの一致するメインシステムメモリ110につながれるために用いられる。
パラレル圧縮及び圧縮解除ユニット251は、次のセクションで詳説される。
図8−圧縮/圧縮解除エンジン
図8に見られるように、パラレル圧縮及び圧縮解除ブロック251は、圧縮エンジン570/575と圧縮解除エンジン550/555を含んでいる。上記したように、パラレル圧縮及び圧縮解除エンジン251は、単一の可逆なパラレル圧縮及び圧縮解除エンジン、及び/もしくは単一の不可逆な圧縮及び圧縮解除エンジン、あるいは可逆及び/もしくは不可逆なエンジンの組合せを有するものであっても良い。
パラレル圧縮及び圧縮解除ユニット251は、従来実行されているようなシリアル記号データストリームに代えてパラレル記号データストリームを用いながら高速でパラレル圧縮及び圧縮解除を行う。圧縮及び圧縮解除ユニット251のパラレル処理は、帯域幅を減少するために最適化され、待ち時間を減少される。こうして、パラレル圧縮及び圧縮解除エンジンは、より高速で圧縮解除と圧縮を行い、帯域幅を実質的に増加し、先行技術の圧縮および圧縮解除エンジンよりも待ち時間を少なくする。パラレル圧縮のためのアルゴリズムの詳細については、下記する。
図8は、また、スイッチロジック261の内部ダイアグラムを示している。スイッチは、IMC140ない複数の他のユニットからの多様なリクエストの裁定と同様に、データのフォーマットとアドレスのコンバートを実行する。スイッチロジック261は、カレントメモリトランザクションリクエスト(current memory transaction request)の選択を行うクロスバースイッチ502を含んでいる。この選択は、リアルタイムでメモリトランザクションを操作するユニットに最初にデータを送ることを意図して、複数の裁定手段の一つによって実行される。より好ましい実施例では、そのようなリクエスティングユニットの優先命令は、最初にはVDRLエンジン240からのディスプレイをリフレッシュするリクエストであり、次いでビデオI/Oユニット235、オーディオとモデム236、ローカルCPU/RISCインターフェイス202、グラフィックエンジン212と実行エンジン210によるものであり、そして次に周辺I/Oバスインターフェイスによるものである。優先命令とブロックサイズとリクエスト待ち時間は、IMC140のためのインターフェイスドライバソフトウェアによってプログラミング可能なソフトウェアである。こうして、システムパフォーマンスとメモリトランザクション効率及び/もしくはレスポンスが、インターフェイスドライバによって実行されるソフトウェアコントロールにより、動的に調整される。こうしたインターフェイスソフトウェアは、好ましくはCPU102上で実行されるが、別に実行エンジン210によって処理されるものとすることもできる。
スイッチロジック261は、好ましくは、通常の非圧縮読み書きデータと圧縮読み書きデータを分離する詳細なデータセレクションユニットを有する。圧縮解除スイッチ512は、コマンドと、アドレスと、ブロックタグと、データタイプ及び長さ情報を圧縮解除エンジン550と555に送ることによって、ブロックの読取り処理を決定する。加えるに、圧縮解除スイッチ512は、圧縮解除されたデータとトランザクションタグ情報を圧縮解除エンジン550及び/もしくは555から受け取る。圧縮解除スイッチ512は、好ましくは、複数のシステムメモリが同時にリクエストを読み取るためにパイプライン化されている。タグフィールドは、多様で顕著なリクエストが圧縮解除エンジン550及び/もしくは555に並列的に発行されるのを許容する。
同じように、スイッチロジック261は、圧縮しないあるいは圧縮解除する処理を必要とする読み書きトランザクションのための通常のメモリスイッチ514を有する。好ましい実施例では、あるデータアドレスの範囲、あるいは詳細なリクエストユニットからのリクエストは、圧縮操作を持つ必要はない。メモリスイッチ514は、メモリインターフェイスユニット560にインターフェイスするためのブロック伝送、アドレスの世代、データタグ、長さ、及びコマンド情報を生成する。
スイッチロジック261は、圧縮スイッチ516を含んでいる。圧縮スイッチ516は、圧縮エンジン570及び/もしくは575のためのコマンド、アドレス、タグ、長さ及びデータタイプの準備を実行する。複数のリクエスティングユニット211によってメモリコントローラ220に書き込まれたデータは、圧縮スイッチ516によって受けとられ、そして、メインメモリ110に圧縮されて書き込まれるか、あるいはL3データキャッシュ291の世紀のアドレスレンジ内にあるのであれば、メモリスイッチ514の制御下でL3データキャッシュ291に書き込まれる。
こうして、圧縮キャッシュコントロールユニット281は、スイッチユニット261とともに、L3データキャッシュ291かパラレル圧縮及び圧縮解除ユニット251かメインメモリインターフェイス560かのいずれかによって、トランザクションを完成するに必要なトランザクションタイプと、優先順位と、制御とを決める。図8に見られるように、好ましい実施例では、トランザクションサイズが16データバイトであることを示してある。別の実施例では、トランザクションサイズはどの数のデータバイトでも良い。
図7において上で述べたように、L3データキャッシュ291は、キャッシュコントロールユニット281と相互に作用する。L3データキャッシュ291内に位置する補助データにアドレスレンジを持つトランザクションのためには、圧縮解除エンジン550とメモリインターフェイス560と圧縮エンジン570は用いられず、データはL3データキャッシュ291に直接的に読み込もしくは書き込みされる。こうして、L3データキャッシュ291がヒットするためには、データはパラレル圧縮及び圧縮解除ユニットをバイパスし、圧縮されないフォーマットの状態で、L3データキャッシュ291へ/から直接的に読み込まれあるいは書き込まれる。
さらに、図8を再度参照するに、パラレル圧縮及び圧縮解除エンジン251は、データ及びコマンド伝送マルチプレクサ522を含み、データをマルチプレクサ590に書き込む。コマンド伝送マルチプレクサ522は、データと、コマンドアドレスと、タグと、並びに、圧縮解除エンジン550/555とメモリインターフェイス560と圧縮エンジン570/575に切り換えて接続する長さとを処理する。別の実施例では、これに含まれる伝送マルチプレクサ522は、複数バスデザインよりも単一バスデザインのスイッチロジック261内にある。書き込みデータマルチプレクサ590は、メインメモリへの通常(圧縮されていない)データ書き込みと圧縮データ書き込みとの選択を行う。
メモリインターフェイスユニット221は、ステイタス、タグ及び読み込みデータのため圧縮解除エンジン550及び/もしくは555にインターフェイスとりしてあり、また読み書き両方の制御、アドレス、タグのためメモリインターフェイス560にインターフェイスとりしてあり、さらに書き込みデータのため圧縮エンジン570及び/もしくは575にインターフェイスとりしてある。メモリインターフェイスユニット221は、DRAMコントローラ592とDRAM I/Oインターフェイス594を含んでいる。DRAMコントローラ592は、メインメモリバンク110を制御するため、DRAM I/Oインターフェイス594への制御信号とアドレスのタイミングをとる。好ましい実施例では、SDRAMメモリは、DRAM I/Oインターフェイス594内に位置する高速アナログRACによって制御される。別の実施例では、SDRAM、DRDRAM、SLDRAM、あるいはVMCのような他のメモリタイプは、DRAM I/Oインターフェイス594内に追加ロジックを必要とする。こうして、メモリインターフェイスロジック221は、メモリコントローラ220の内部にあり、信号、アドレスのためのスイッチロジック261、タグ、コントロール及びデータ信号、アドレスのためのパラレル圧縮及び圧縮解除ユニット、並びにコントロール及びデータトランザクションを制御する圧縮コントロールユニット281にインターフェイスとりしてある。加えるに、メモリインターフェイスロジック221は、システムメモリ110にインターフェイスとりするために信号の調整とメモリのインターフェイスとりを行う。
パラレル可逆圧縮及び圧縮解除
パラレル圧縮と圧縮解除の作用を行うパラレル圧縮/圧縮解除ユニットもしくはエンジン251について、述べる。このエンジン251は、好ましくは、専用のコーデック(符号器/復号器)ハード゛ウェアエンジンであり、例えばロジック回路から成る。一つの実施例では、コーデックエンジン251は、プログラムできるDSPあるいはCPUコア、あるいはプログラムできる圧縮/圧縮解除プロセッサから成る。これらは、一つもしくはそれ以上のROMsあるいはRAMsを有し、これらのROMsには、圧縮、圧縮解除、特別なタイプのグラフィック圧縮及び圧縮解除、並びに望みによってはビットブリット操作といった作用を行うためのマイクロコードの異なる複数セットが格納されている。本実施例では、コーデックエンジン251は、一つもしくはそれ以上のメモリ内のマイクロコードの異なるセットの間で、実行される作用に基づいて動的にシフトする。圧縮/圧縮解除エンジンは、また、再構成できあるいはプログラミング可能なロジック、例えば一つあるいはそれ以上のFPGAs、を用いて実行できる。
図8に見られるように一つの実施例では、エンジン251は、データがシステムメモリ110へ/から伝送されるときにデータを圧縮及び圧縮解除するよう設計された、埋め込み型の可逆のパラレルデータ圧縮エンジン570とパラレル圧縮解除エンジン550とを含んでいる。
圧縮エンジン570と圧縮解除エンジン550は、エンジン251に示された技術を用いて作られ、ロジック回路、プログラム可能なCPUs、DEPs、専用の圧縮/圧縮解除プロセッサ、あるいは再構成可能もしくはプログラミング可能なロジックを含んでおり、本発明のパラレル圧縮と圧縮解除法を実行する。本発明にしたがってメモリコントローラに圧縮/圧縮解除手段を埋め込むために、他のさまざまな実行手段が用いられる。好ましい実施例では、圧縮エンジン570と圧縮解除エンジン550は、IMC140内のハードウェアエンジンから成り、また別には、圧縮及び圧縮解除のための同様なエンジンの一部を用いる。下記する記載では、パラレル圧縮及び圧縮解除ユニットは、分離された圧縮エンジンと圧縮解除エンジン570,550を有するものとして記載されている。
メインシステムコントローラ内に圧縮及び圧縮解除エンジンを用いる場合の方法と利点の一般的な概略については、「埋込型のデータ圧縮及び圧縮解除エンジンを含むメモリコントローラ」という名称のUSパテントを参照されたい。このパテントは、発明者がトーマス エイ ダイで、出願日が1995年6月5日で、出願番号が08/463,106である。
IMC140は、「圧縮」データと「圧縮されていな(non-compressed)いデータ」2つのデータフォーマットを含んでいる。圧縮データフォーマットは、記録に要する容量の少ないことが要求され、これによって高価でなくなる。圧縮フォーマットは、また、データをシステムメモリ110とI/Oサブシステムとの間で伝送するためのシステム帯域幅をより小さくする。圧縮データフォーマットから通常のデータフォーマットに圧縮解除すると、小さな実行ペナルティを惹きおこす。しかしなが、通常、隠されている付加された待ち時間はあるかもしれないけれども、圧縮されていないデータフォーマットを圧縮データフォーマットに圧縮することは、関連づけられたペナルティを有するものではない。もし、データがうまく圧縮されないと、圧縮を必要とするストアの長いシリーズがあり、バスは、バックアップされて、プロセッサに読取りやうろうろするような遅れを惹きおこさせる。
一つの実施例では、圧縮エンジン570は、CPU102によってソフトウェアで実現される。
好ましい実施例では、IMC140内の圧縮エンジン570と圧縮解除エンジン550は、一つあるいはそれ以上のハードウェアエンジンから成る。ハードウェアエンジンは、新規なパラレルな可逆的(lossless)圧縮法、好ましくは圧縮及び圧縮解除のアルゴリズムに基づいた「パラレル」な辞書を実行する。パラレルアルゴリズムは、例えば圧縮と圧縮解除のアルゴリズムに基づいたLZ77(好ましくはLZSS)辞書のように、アルゴリズムに基づいたシリアル辞書をベースとするものであっても良い。パラレルアルゴリズムは、LZ77、LZ78、LZW及び/もしくはLZRWを含む従来のシリアルLZ圧縮のさまざまな態様をベースとするものであっても良い。
パラレルアルゴリズムは、また、ランレングス方式のエンコーディング、予測型エンコーディング、ハフマン、演算、その他可逆的圧縮アルゴリズムに基づくものでも良い。しかしながら、これらのパラレルアルゴリズムは、圧縮能力が低く及び/もしくはハードウェアのコストが高いためにそれほど好ましいものではない。
基本的な技術としては、どのような可逆的圧縮法を用いても良い。上記したように、LZSS圧縮のパラレル実現法は、用いるのに好ましい例である。他の可逆的圧縮法は、メモリの帯域幅と有効性の改善を目的として設計され、パラレル圧縮と圧縮解除を速く行うものであるけれども。
シリアルLZ圧縮を用いるデータ圧縮と圧縮解除システムに関する更なる情報については、米国特許第4,464,650号を参照されたい。上記特許は、LZ77データ圧縮法の実現法を提案している。LZ77データ圧縮法は、ランペル(Lempel)及びジブ(Ziv)によって次の著作に表されている。「『可変レートコーディングを経た個別シーケンスの圧縮』、情報理論のIEEEトランザクション、IT-5、1977年9月、530-537頁」、「『シーケンシャルデータ圧縮のためのユニバーサルアルゴリズム』、情報理論のIEEEトランザクション、23巻、No.3(IT-23-3)、1977年5月、337-343頁」。米国特許第4,701,745号(発明の名称「データ圧縮システム」1987年10月20日発行)は、LZRW1と呼ばれるLZ77の変形例を示している。LZ78アルゴリズムの変形版は、LZWとして示され、米国特許第4,558,302号に記載されている。LZWの他の変形例は、米国特許第4,814,746号に示されている。
別の実施例において、データ圧縮及び圧縮解除エンジン570と550は、1995年4月25日に発行された「データ圧縮/圧縮解除プロセッサ」と題する米国特許題5,410,671号に開示された技術に基づくパラレル圧縮/圧縮解除プロセッサハードウェアを実用化する。
IMC140は、また、さまざまな他のシリアル技術に基づいた本発明のパラレル圧縮/圧縮解除技術を実用化するものである。別の実施例では、パラレルもしくはシリアルデータ圧縮/圧縮解除法が用いられる。
本発明の圧縮/圧縮解除エンジン251は、イメージデータのための特別な圧縮/圧縮解除エンジン575/555を含む。不可逆な圧縮/圧縮解除エンジンの好ましい例は、図17から20を参照して示される。パラレル圧縮解除の例は図32から43を参照して示される。
図9A−先行技術
先行技術は、コンピュータハードウェアのデザインのためにLZ圧縮アルゴリズムを用いる。しかし、圧縮された出力ストリームを適切に生じさせるために入力データを連続的に調べ直す必要があることから、データストリームの帯域幅は制限される。図9Aは、先行技術の実現方法の通常のヒストリーテーブルを表現している。
LZ圧縮アルゴリズムは、データの反復された記号あるいは記号のグループを探すことによって格納するデータに必要とされるビット数を減らそうとする。LZ77アルゴリズムのハードウェア実現方法は、入ってくるデータと比較できるようにデータストリームの最後のn記号を記憶しておくためにヒストリーテーブルを使用する。入力ストリームとヒストリーテーブルとの間に一致が見られるときは、ストリームから一致記号が圧縮記号に置き換えられる。これは、ヒストリーテーブルから記号をどのようにして回復するかを示す。
図9B−パラレル圧縮アルゴリズム
本発明の一実施例は、辞書に基礎を置いた(あるいはヒストリーテーブルに基礎を置いた)圧縮/圧縮解除のパラレルな実現方法を提供する。パラレルなヒストリーテーブルと連係比較ロジックを設計することによって、圧縮アルゴリズムの帯域幅は何回も増加される。この仕様は、4つの記号をパラレルに圧縮するアルゴリズムの実現方法を開示し、データの圧縮比率を減らさない実現方法の帯域幅に4回の改良をもたらす。別の実施例では、記号の数とパラレルなヒストリーテーブルは、パラレルな処理と帯域幅を改善するために増やされ、また4つを超えて大きくされ、あるいはハードウェア回路の必須条件を容易にするために減らされる。一般的に、パラレル圧縮アルゴリズムは、2記号のパラレルアルゴリズムかそれ以上で、好ましくは2の倍数、例えば4,8,16,32他である。パラレル圧縮アルゴリズムは、以下の記載では、図示の目的のために4記号のパラレルアルゴリズムとしてある。
パラレル圧縮アルゴリズムは、シリアルアルゴリズムの並列する3つの部分を備える。ヒストリーテーブル(あるいはヒストリーウィンドウ)と、記号と圧縮されたストリームセレクションの分析部と、出力発生部である。好ましい実施例では、ヒストリーテーブルを通るデータの流れは、単一記号のヒストリーテーブルの代わりに4記号のパラレルな流れになる。また、4記号は、並列的に分析され、多重に圧縮された出力が同様に並列的に提供される。他の別の実施例は、個々のデータブロックの圧縮解除間に文脈切り換えを行いながら多重の流れを圧縮解除する複数の圧縮ウィンドウを備える。このような別の実施例は、コストを増加させ、また命令取出し処理の間の待ち時間を減らすべく他のブロックの圧縮解除のために現在のブロックの圧縮解除を一時停止する有利さを持つとゲイトカウント数を増加させる。議論を容易にするため、本説明では、記号は1バイトのデータと仮定してある。記号は、実現方法によって必要とされる、理由あるどのようなサイズであっても良い。図9Bは、パラレルなヒストリーテーブルのデータフローを示す。
図10−パラレルな圧縮アルゴリズムの高レベルなフローチャート
図10は、好ましい実施例におけるパラレル圧縮アルゴリズムの動作を示す高レベルなフローチャートダイアグラムである。フローチャートのステップは、同時にあるいは異なる順番で起こる。
ステップ402において、手法(method)は、複数のエントリから成るヒストリーテーブル(ヒストリーウィンドウとも呼ばれる)を維持している。そこでは、各エントリは、一つの記号を構成する。ヒストリーテーブルは、データストリームの最後のn記号を記録するスライディングウィンドウであるのが好ましい。
ステップ404において、手法は、前の記号がヒストリーテーブル内のエントリと比較されたときに生じた先行照合のカレントカウント(現在の計数)を維持する。カレントカウントは、現在のデータストリームのために維持され、各エントリはこのエントリが照合の出発点であることを示すために最大カウントフラグを維持する。好ましさがやや劣る別の実施例では、分離カウントは、ヒストリーテーブル内の各エントリのために維持される。現在のところ好ましい実施例は、単一のカレントカウントを維持し、ヒストリーテーブル内の各エントリのために分離カウントフラグを維持する。というのは、この実施例は、ヒストリーテーブル内の各エントリのために分離カウントを維持するよりも少ないロジックを必要とするからである。
現在の開示内容において、「カウント情報」という用語には、先行照合のカウントと、ヒストリーテーブル内の各エントリのために維持されるカウントフラグとを含ませてある。また、「カウント情報」という用語には、ヒストリーテーブル内の各エントリのために維持され複数のカレントカウントを含ませてある。
ヒストリーテーブルとカレントカウントフラグの保守は、前に受け取られた記号に基づいたアルゴリズムを通して実行され、好ましくは、最初の複数の記号が圧縮のために受け取られたときに開始する。
ステップ406において、手法は非圧縮データを受け取る。ここでは非圧縮データは複数の記号から成る。こうしてパラレル圧縮アルゴリズムは一度に複数の記号を操作する。これが、一度にただ一つの記号を連続的に取り扱う従来の先行技術であるシリアルアルゴリズムと異なる点である。複数の記号は、2つもしくはそれ以上の記号から成り、好ましくは2の累乗である。好ましい実施例では、パラレル圧縮アルゴリズムは、一度に4つの記号を取り扱う。しかしながら、8、16、32あるいはそれ以上の記号を用いる実現方法は、2を累乗しない他の数と同様に、ここに述べたアルゴリズムを容易に用いることができる。
ステップ408において、手法は、複数の記号をヒストリーテーブルにある各エントリと並列的に比較する。この比較によって比較結果が生じる。ヒストリーテーブル内の各エントリは、好ましくは、複数の記号のそれぞれと同時に、すなわち並列的に、改善されたスピードで比較される。
ステップ410において、手法は、カレントカウントフラグと比較結果に基づいて複数の記号のそれぞれのための照合情報(match information)を決定する。照合情報を決定するステップ410は、ゼロであると決定することあるいはヒストリーテーブル内の各エントリに複数の記号をさらに照合することを含む。さらに詳しくは、ステップ410は、カレントカウントと比較結果に基づいて最長の連続した照合を決定し、それから最長の連続した照合が照合を停止しているかどうかを決定することを含む。もし、最長の連続した照合が照合することを停止したら、そのときは、手法は、カレントカウントフラグと最大カウントをアップデートする。
ステップ412において、手法は、照合情報に応答して圧縮データ情報を出力する。ステップ412は、例えば異なる照合及び/もしくは非照合記号のために、並列的に圧縮データ情報の複数セットを出力することを含む。ステップ412は、もしあるのなら、照合を停止させた最長の連続した照合に対応する圧縮されたデータ情報を出力することを含む。連続した照合は、先の複数の記号からの照合を含むものでも良い。ステップ412は、先の照合から、圧縮されたデータ情報を出力することを含むものでも良い。ステップ412は、また、ヒストリ内のどのエントリとも照合しない非照合記号のために、非照合記号を非圧縮フォーマットで出力することを含む。連続する照合のために、圧縮データ情報は、カウント値とエントリ指標とを含んでいる。エントリ指標は、連続した照合を生じさせたヒストリーテーブル内のエントリを指し示す。また、カウント値は、連続した照合内の照合記号の数を示す。一つの実施例において、符号化された値は、カウント値として出力される。そこでは、しばしば起きるカウントは、あまり起きないカウントより少ないビットで符号化される。
ステップ402から412は、もうこれ以上データが入手できなくなるまで1回あるいはそれ以上の回数、繰り返される。もうデータが入手できないとき、もしどのようなカレントカウントも零でないなら、手法は、ヒストリーテーブル内に最も長く残っている照合のために、圧縮データを出力する。
手法は、複数の記号を同時に操作しながらパラレル圧縮を実行するので、与えられた複数の記号の範囲内で構成される記号照合を特別なケースとして明らかにする。ここでは、複数の記号は、最初の記号と、最後の記号と、一つもしくはそれ以上の中間の記号を含んでいると仮定する。照合情報を決定するステップ410は、少なくとも一つの連続した照合が一つもしくはそれ以上の個々の連続した中間記号で起きるかどうか、また一つもしくはそれ以上の連続した中間記号が個々の連続した中間記号の前あるいは後にあるどの記号とも照合に関係しないかどうかを検出することを含む。もし、この状態が検出されたら、そのとき、手法は、中間記号に関係する一つもしくはそれ以上の最も大きな重複しない連続した照合を選択する。この場合には、ステップ412は、中間記号に関係する選択された照合のおのおののために圧縮されたデータを出力することを含む。
図11−パラレル圧縮アルゴリズムの詳細なフローチャート
図11は、好ましい実施例におけるパラレル圧縮アルゴリズムの動作を示すさらに詳細なフローチャートダイアグラムである。ステップは、図10におけるものと似ておりあるいは等しい。便利なように同じ参照符号を用いてある。
図11のフローチャートにおいて、手法は、それぞれが一つの記号から成るエントリを含んでいるヒストリーテーブルを維持していると仮定されている。ヒストリーテーブルは、好ましくは、データストリームの最後のn記号を記録するスライディングウィンドウである。また、手法は、前の記号がヒストリーテーブル内のエントリと比較されたときに生じたカレントカウントの先の照合を維持するものであると仮定されている。カウントフラグは、ヒストリーテーブル内の各エントリのために維持される。上記したように、ヒストリーテーブルとカレントカウントフラグの保守は、好ましくは、アルゴリズムを通して行われ、最初の複数の記号が圧縮のために受け取られたときに開始する。
ステップ406において、手法は、非圧縮の入力データを受け取る。そこでは、非圧縮のデータは複数(もしくはグループ)の記号から成る。こうして、パラレル圧縮アルゴリズムは一度に複数の記号を取り扱う。これは、一度にただ一つの記号を連続的な態様で取扱う従来技術のアルゴリズムとは異なるところである。また、上記したように、パラレル圧縮アルゴリズムは、一度にいくつもの数の記号をも扱うことができる。入力データは、データストリームからの最初のグループの記号であり、またはデータストリームの中間もしくは最後からのグループの記号である。
ステップ408において、手法は、複数の記号を並列的な態様でヒストリーテーブル内の各エントリと比較する。この比較によって比較結果が生じる。ヒストリーテーブル内の各エントリは、好ましくは、複数の記号のそれぞれと同時に、すなわち並列的に、改善されたスピードで比較される。
ステップ422において、手法は、ゼロであること、あるいはヒストリーテーブル内の各エントリに複数の記号をさらに照合することを決定する。換言すると、ステップ422において、手法は、各エントリのために、エントリが複数の記号のどれかとマッチするかどうかを決定する。この決定は、比較結果に基づく。
ステップ422において、複数の記号についてなにも一致しないと検出されると、ステップ432において、手法は、前に何らかの一致があったかどうかを決める。換言すると、ステップ432は、一つあるいはそれ以上の終端記号がヒストリーテーブル内のエントリに一致するかどうかを決める。そして、圧縮された情報は、これらの記号にはまだ出力されない。というのは、手法は、より長い連続する一致を決定できる新しい複数の記号を待っているからである。もし、ステップ432において決められるような一つあるいはそれ以上の以前の一致があるとすると、ステップ434では、手法は、以前の圧縮されたデータ情報を出力する。この場合、先の記号グループからの先の一致が、現在のグループ内のいかなる記号とも連続していないので、以前の圧縮されたデータ情報は、出力される。ステップ434の後で、動作はステップ436に進む。
もし、ステップ432あるいはその後のステップ434で決定されるように、以前に一致がないとすると、ステップ436において手法は、複数の記号の各記号を非圧縮記号として出力する。複数の記号のそれぞれは、ヒストリーテーブルのどのエントリとも一致しないので、複数記号のそれぞれは非圧縮フォーマットで出力される。ステップ436の後、ステップ438において全てのカウントフラグは0にリセットされる。ステップ472において、非圧縮記号は、ヒストリーウィンドウに追加され、更なる入力情報、すなわち更なる入力記号を受け取るために操作はステップ406に戻る。
もし、ステップ422の複数の記号に一つあるいはそれ以上の一致が検出されると、ステップ442において、手法は、全ての複数の記号が一つの一致された状態から成るかどうかを決定する。もし、そうであるなら、ステップ444において、手法は、一致する記号の数、例えば4記号によってマッチカウント(match count)を増やし、個々のエントリに最大のカウントフラグをセットする。ステップ474において、非圧縮記号はヒストリウィンドウに付加され、より多くの入力データ、すなわちより多くの入力記号を受け取るために操作はステップ406に戻る。この場合、手法は、連続する次のグループのどのような記号も現在一致している記号とマッチするかどうかを待ちかつ決定するために、いかなる出力情報の提供も延期する。
ステップ442で決定されるように、もし、複数の記号の全てが一つの一致された状態から成るものでないなら、ステップ452において手法は、以前に一致したものが存在したかどうかを決定する。ステップ452における決定は、ステップ432における決定と似ており、先行する記号グループからの一つもしくはそれ以上の終端記号がヒストリーテーブル内のエントリと一致するかどうかを決定することを含む。そして、圧縮された情報は、手法が、より長い連続した一致を決定できる新しい複数の記号を待っているので、まだこれらの記号には出力されない。
もし、ステップ452で決定されるように、以前に一つもしくはそれ以上の一致が存在するなら、ステップ454において、手法は、以前の一致を含む最も長く連続する一致を選択する。ステップ456において、手法は、最も長く連続する一致とみなす圧縮されたデータ情報を出力する。この圧縮されたデータ情報は、以前の圧縮されたデータ情報を含んでいる。というのは、それは、前の記号グループとの以前の一致を少なくとも部分的に含んでいるからである。もし、現在の複数の記号のうちの最初の記号が以前の一致と連続的に一致していないなら、圧縮されたデータ情報は、以前の圧縮されたデータ情報のみから成る。ステップ456の後、操作はステップ462に進む。
ステップ462から470は、各入力記号を並列的に処理する。言葉を換えると、ステップ462から470は、各入力記号のために同時に操作される。ステップ462から470は、図示を容易にするため、連続的態様で示されている。
ステップ462において、手法は、個々の記号が一致状態を含んでいるかどうかを決定する。もしそうでないなら、ステップ464において、手法は、非圧縮記号を出力する。この場合、個々の記号は、ヒストリーテーブル内のどのエントリとも一致しない。記号は非圧縮状態で出力される。
ステップ462で決定されるように、もし、個々の記号が一致状態を含んでいるなら、ステップ466において、手法は、一致が最後の記号を含むかどうかを決定する。もしそうでないなら、ステップ486において、手法は、一致のために圧縮データ情報を出力する。このことは、一つもしくはそれ以上の中間記号のみから成る一致を含んだ特別な場合であることに留意すべきである。
ステップ466で決定されるように、もし、一致が最後の記号を含むのであれば、ステップ470において、手法は、一致に含まれない記号の数に対するカウンタをリセットする。この場合、圧縮された情報はこれらの記号のために出力されない。というのは、手法は、より長い連続した一致を決定できる新しい複数の記号を待っているからである。
一旦、ステップ462-470が各入力記号のために並列して実行されると、ステップ472において非圧縮記号がヒストリーウィンドウに付加される。操作は、それからもっと多くの入力データ、すなわち新しい複数のあるいはグループの入力記号を受け取るためにステップ406に戻る。もし、もっと多くの入力データが入手できあるいは受け取られると、ステップ480において、手法は、残っている以前の一致部分を一気に消去する。すなわち圧縮された情報を残っている以前の一致部分に提供する。
図11の手法は、また上記した中間記号の一致部分を計算する。
図12と13−パラレル圧縮アルゴリズム
図12と13は、パラレル圧縮アルゴリズムの操作を示すハードウェアダイアグラムである。先行技術のLZシリアルアルゴリズムと同じように、ヒストリーテーブルの各エントリは、記号(バイト)データを有し、データ610の入力ストリームと比較される。入力ストリーム610は、データ0、データ1、データ2及びデータ3から成る。図12は、エントリD602として参照される、ヒストリーテーブルのエントリを示す。図示されているように、エントリD602は入力ストリーム610の各記号と比較される。図12は、パラレルな実現方法のエントリD602とその入力及び出力を示している。コンパレータ608は、各データバイトエントリを入力ストリーム610からの4バイトと比較し、4つの比較信号(エントリDのD3を通してD0と呼ばれる)を生成する。比較信号D0は、エントリDにおいて用いられる。比較信号D1は、ヒストリーテーブルの次のエントリEによって用いられる。比較信号D2は、エントリFによって用いられる。そして、比較信号D3は、エントリGによって用いられる。したがって、エントリDは、エントリAからの比較信号3、エントリBからの比較信号2、及びエントリCからのコード1を用いる。これらは、図12の結果計算ブロック606への入力として示される。この比較結果は、このエントリのための出力マスク値を決定するために用いられる。出力マスク値は、入力データが圧縮されたものであるかそうでないかを決定するための圧縮ストリーム選択ロジック612/614/616(図13)に送られる。この情報は、出力への圧縮されていないデータから圧縮ストリームデータのいずれかを送る出力発生ロジック618に進められる。
カウンタのアップデート値とエントリ最大カウントフラグとに添って、結果計算ブロック606から出力マスクを発生させることについては、図14のテーブルに記載されている。
新しいカウンタ値は、A3の始めに生じる一致する数をD0までカウントすることによって計算される。例えば、C1マッチなしでA3とB2のマッチは、カウンタを2にセットする。全ての4つの比較マッチングの特別なケースでは、現在のカウンタ値に4を付加する。
出力マスクは、このエントリで起きたマッチと最大カウントフラグに基づく符号値である。図14aと14bの表は、この値の発生の一つの実施例を示している。図14cは、出力マスクのコレクションからの結合マスクの生成を示す。
圧縮ストリーム選択ロジック(Compressed Stream Selection Logic)
図13は、選択ロジック612/614/616と出力ストリーム生成ロジック(output stream generation logic)のブロックダイアグラムを示す。圧縮ストリーム選択ロジック612/614/616は、結果計算ブロック606からのエントリのそれぞれから出力カウンタと出力マスクを集合し、出力ストリームジェネレータ618のためのインデックスとカウントを生成する。インデックスは、選択カウントを生成したエントリを示す。選択ロジック612/614/616の主な機能は、入力ストリーム外で圧縮された最も大きなブロック、すなわち最大の連続するマッチを見つけることである。これは、エントリから最大の出力カウントを見つけることによって達成される。パラレル圧縮、すなわち複数の記号が並列的に処理されるから、出力部に送られる必要のある多様な圧縮ブロックが存在する。この理由から、4つの記号をパラレルに扱う実施例において、2つのカウントと3つのインデックスが出力ロジック618に提供される。これらは、先のカウント及びインデックスと、スタートのカウント及びインデックスと、LZ12インデックスとして参照される。
マッチの終端を示すマスクのあるインデックスを選択することによって、先のカウント及びインデックスが生成される。これは、このサイクルのデータ入力の一つで終わる圧縮ブロックを示している。インデックスは、このマスクを生成した単に最初のエントリナンバーであり、カウントは結合された出力マスクから生成された最大カウント値からのものである。第一番目の入力記号で始まり、複数の入力記号内で終わる最大のマッチを選択することにより、スタートカウントとインデックスが生成される。これは、第一番目の記号で始まるサイクルを受け取る4記号の一つもしくはそれ以上を含む圧縮ブロックを示す。このエントリからのマスクは、同様に、出力ジェネレータ618に進められる。LZ12インデックスは、特別な事例のマスクを戻したブロックを示す。特別な事例には、上記した一つもしくはそれ以上の中間記号の連続する一致が含まれる。結合された圧縮マスクブロック616は、全てのマスクのロジカルANDから成る結合された圧縮マスクを生成し、これを出力ジェネレータ618に進める。
図15−出力ストリームジェネレータフローチャート
出力ストリームジェネレータ618ロジック(図10)は、図15に示すフローチャートにしたがって出力ストリームを生成する。このフローチャートにおいて「CCM」の語は、結合された圧縮マスク(Combined Compress Mask)を意味し、CCM(0)とは、図14のテーブルで用いられるような最も少ない有効ビットである。出力ジェネレータ618は、圧縮されていないこを示す適切なフラグを含む非圧縮データ、あるいは圧縮ブロックであることを示すフラグを含む圧縮ブロックのいずれかを、符号化されたカウントと、オリジナル入力を再生成するための圧縮解除するロジックによって用いられるインデックスと共に送り出す。
図示するように、ステップ721において、手法は、以前のカウントがゼロに等しいかどうかを決定する。もし等しくなければ、手法は、結合マスクが1111に等しいかどうかをステップ729において決定する。もし等しくなければ、手法は、ステップ723において圧縮ブロックを送出し、ステップ725において最大カウントを4かそれ以下に調整する。操作は、それからステップ727に進む。もし、結合マスクがステップ729において1111と等しいなら、操作はステップ753に進む。そこでは、最大カウントは操作を完遂する前に4ずつ増加される。
ステップ727において、手法は、スタートCntがゼロと等しいかどうかを決定する。もし等しくなければ、手法は、ステップ731において圧縮ブロックを送り出す。操作は、それからステップ735に進む。もし、スタートCntがステップ727でゼロに等しいと決定されると、凹さはステップ735に直接進む。
ステップ735において、手法は、CCM(3)が1と等しいかどうかを決定する。等しくなければ、手法は、ステップ733において、データゼロを送り出す。操作は、それからステップ737に進む。もし、CCM(3)がステップ735においてゼロに等しいと決定されると、操作は、直接ステップ737に進む。
ステップ737において、手法はCCM(3,2,1)が011に等しいかどうかを決定する。等しいと、ステップ739において手法は、CCM(2)が1と等しいかどうかを決定する。等しくないと、ステップ741において手法は、データゼロを送り出し、操作は、それからステップ745に進む。もし、CCM(2)がステップ739において1と等しいと決定されると、操作はステップ745に直接進む。ステップ745において、手法は、CCM(1)が1と等しいかどうかを決定する。等しくないなら、ステップ747において手法はデータゼロを送り出す。操作は、それからステップ749に進む。もし、CCM(1)がステップ745において1に等しいと決定されると、操作はステップ749に直接進む。
もし、CCM(4,2,1)がステップ737において011に等しいと決定されると、ステップ743において、手法は、LZ12圧縮ブロックを送り出す。操作は、それからステップ749に進む。ステップ749において、手法はCCM(0)が1に等しいかどうかを決定する。等しくなければ、Sっ法はステップ751においてデータゼロを送り出す。操作は、それで完結する。CCM(0)がステップ749において1に等しいと決定されると、それで操作は完結する。
もし、単一バイト圧縮がこのロジックによって実行されるものであるとすると、すなわち、個々の記号が圧縮されるものであるとすると、バイトのそれぞれの付加的なインデックスが選択ロジックによって生成されるべきで、これにより、外部ジェネレータがこれらを圧縮できるようになる。そうでなければ、外部ジェネレータロジックは、圧縮ストリームの出力が単一バイトの圧縮されていない出力になり、フラグをそれにしたがって調整する事例もまた取扱うべきである。以前のデータ3は、先のマッチが1カウントであるときの事例において出力ジェネレータ618によって同様に要求されても良い。
好ましくは、単一バイトのマッチを取扱う一つの方法は、単一バイトが図14の表を調整することである。
例えば、10xx行において、もしセーブされたカウントがゼロなら、カウントアウトはD0単一バイトマッチのための圧縮ブロックを生成しないよう11xxのマスクに添ってゼロであるべきである。
図16−パラレルアルゴリズム例
図16は、パラレルアルゴリズム例を示している。一つのウィンドウ(ヒストリーテーブルの長さ)が16エントリであるとして、それは次の値に初期化される。エントリ0=F0、エントリ1=F1、……エントリ15=FF。また、全てのエントリカウンタフラグが0であり、マッチしたカウント値が0であるとする。下記のシーケンスは、4つの表示された入力の変化状態を示す。
ステート0では、入力データは、受け取られた指令においてF9、F8、F7、C0である。入力データは、図13の右から左への到着指令内に示されている。すなわち、入力データD3:D0=C0,F7,F8,F9である。ステート0では、入力は、エントリ9内の最初の3つの記号がマッチされていることを見つけ出す。これにより、これらの3つの記号は出力ストリーム内で一致したカウント3とインデックス9を示す圧縮データによって置き換えられることになる。出力マスク値「18」は、圧縮データがこれらの記号を表示する出力であることから、これらの非圧縮記号が出力ストリーム内に含まれるのを妨げる。また、ステート0において、記号C5はヒストリーテーブル内のどのエントリとも一致しないよう決定される。こうして記号C5は非圧縮フォームで、出力ストリーム内に提供される。こうしてステート0内の出力は、右から左にかけて、C0,(9,3)となる。
ステート1では、入力データは、受け取られた指令において、B5,F2,F1,F0である。記号B5はヒストリーテーブルのどのエントリとも一致しない。記号B5は出力ストリーム内で非圧縮態様で提供される。また、ステート1において、3つの入力記号はエントリ7内で3つの記号と一致する。一致する部分は前のエントリにあるが、この一致のための結果計算はエントリ7で起きることに注意すべきである。換言すると、実際に一致するエントリは、エントリ6,5,4である。しかしながら、この一致は、エントリ7によって検出される。エントリ7が4つの入力記号をエントリ7,6,5,4と比較するからである。圧縮データは、ステート1でのこの一致のためには生成されない。というのは、エントリは、一致が入力記号の次のセットに続くかどうか解らないからである。こうして、出力カウントは0である。エントリ7のためのマスク値は一致データが出力ストリームに含まれないようにする。ステート1での出力は、B5である。エントリ7のカウント値は、ステート1での3つの一致を示すために、ステート2に見られるように3にアップデートされる。
ステート2において、受け取られた指令において、入力データは、F9,F8,F7,B5である。エントリ7での一致は3以上の記号続き、それで終わる。エントリ7は、新しく一致する記号のためのマスクを出力する。加えて、エントリ6は記号B5で一致している。エントリ6は、そのカウントフラグをステート3の1にアップデートする。しかしながら、記号B5は、入力記号のこのグループの最後の記号であるから、エントリは、一致が次のセットの入力記号に続くかどうか解らない。こうして、エントリ6のため、マスク値はその記号が出力されるのを妨げる。ステート2の出力は(7,6)である。
ステート3では、もはやそれ以上の連続する一致は、ステート2からの記号B5に関して存在しない。エントリ6に関して、出力カウントは、ステージ2以降の記号B5に関するエントリ6から、1である。また、入力記号E2に関して一致は見られない。したがってE2は非圧縮記号として出力される。ステート3において、一致は中間記号C0とB5に関して見られる。この一致は、エントリ9によって検出される。そして、0Fマスクがエントリ9から出力される。このマスクは、圧縮された出力となる入力の中央にある2つの記号を示す(この例ではB5C0)特殊な事例マスクである。実際の圧縮出力データあるいはブロックはフラグと2のカウントとインデックスを含む。ステート3からの出力は、右から左に、(9,2)、E2、(6,1)である。個々の記号が圧縮されない実施例では、出力は、別の出力ボックスに見られるように(9,2)、E2、B5である。
本実施例の最終ステート4は、ステート3のエントリ3にF3の一致がある結果としてエントリ7のカウントに1を有する。この一致からのマスクは、F3をステート3の出力ストリームに送るのを妨げる。もし、これが入力ストリームの終端なら、ウィンドウは消去され、この一致によって単一記号圧縮ブロックを生じさせる。出力は、インデックス7に1の一致を示す。ステート3の入力が受け取られた最後のデータとすると、ストリームの最終出力は、(7,1)である。別の出力ボックスに見られるように、単一記号の一致は、記号F3として圧縮されないで送られる。
不可逆的圧縮アルゴリズム
「埋込み型データ圧縮及び圧縮解除エンジンを有するメモリコントローラ」という名称の米国特許(1995年6月5日出願、シリアルナンバー08/463,106、発明者:トーマス エイ ダイ)に、不可逆(lossy)な圧縮フォーマットの実例が示されている。「不可逆」の語は、データが変更され、圧縮後にオリジナルデータと近似したものによって示される、圧縮/圧縮解除操作に用いられる。
図21を参照して、ある圧縮変換フォーマットは不可逆的圧縮が用いられ、他では可逆的圧縮が用いられる。好ましい実施例では、テクスチャ302、イメージデータ(圧縮ブロック380)、ビデオデータ(圧縮ブロック380)、及びディスプレイデータ300、そしてあるケース「Z」もしくはデプスデータが、不可逆的アルゴリズムで圧縮される。別の実施例では、これらのフォーマットもしくは可逆的圧縮アルゴリズムで圧縮される追加フォーマットを有する。コントロールデータ、プログラム、VDRL、あるいは3Dパラメータデータ、あるいはもとの内容からロスなしに圧縮されるべきその他のデータは、本発明にしたがって可逆的パラレル圧縮プロセスを用いて圧縮される。
図17−不可逆的圧縮及び圧縮解除エンジン
図17は、不可逆的圧縮エンジン575と不可逆的圧縮解除エンジン555の好ましい例を示す。これら2つのエンジンは、好ましくは、パラレル圧縮及び圧縮解除ユニット251に配設される。
不可逆的圧縮エンジン575と不可逆的圧縮解除エンジン555は、分離されたブロックもしくは集合された単一ユニットである。エンジン575,555は、いろいろな態様で実現され、それにはディスクリートロジック、プログラム可能なCPU、DSP、あるいはマイクロコントローラ、FPGAのような再構成可能なロジック、その他を含む。好ましくは、不可逆的圧縮エンジン575は、イメージ、テクスチャ、ビデオ、及びデプスデータのために不可逆的圧縮アルゴリズムを実行する。RGBあるいはYUVのいずれかのデータは、メモリコントローラ220のスイッチロジック261によって不可逆的圧縮エンジン575に提供される。もし、こうしたデータがRGBフォーマットのものであるなら、ソースコンバータ762が、RGBを輝度(Y)値(YRB)に符号変換(エンコード)するために用いられる。この変換プロセスの操作は、技術分野で知識を有する者にとって標準的なことである。変換する理由は、圧縮とそれに続く圧縮解除手続に亘って生じる色彩複製を改善するためである。YUVデータは、ブロック762によって変換されないで、むしろ圧縮アルゴリズムによって処理される。
データは、SRAM記憶装置によって通常データとして記憶し、かつ符号768と766によって最小及び最大の計算を個別にするために、マルチプレクサ(多重変換装置《Mux》multiplexer)764によって選択される。SRAM770に記録されるデータは、図18と19の表にしたがった値を選択される。YRB/YUVの値は、マックスY(ユニット)766とミニY(ユニット)768に配設されたコントロールロジックによる制御信号の下で選択スイッチ772によって補間される。不可逆的データエンコーダ774は、YRB選択スイッチによって出力される選択値に制御ビット挿入(control bit insertion)を行う。不可逆的圧縮エンジン575からの不可逆的圧縮データは、メインシステムメモリ110に記憶されるため、メモリインターフェイスロジック221に出力される。
同様に、不可逆的圧縮エンジン555は、不可逆的圧縮解除を行うため、圧縮データをメモリインターフェイスロジック221から受け取る。データは、プロセス制御情報のためのヘッダを消去して適切な信号を不可逆データデコーダ778とピクセル複製ロジック780に送る圧縮ストリームセパレータ776によって最初に処理される。不可逆データデコーダ778は、ピクセル複製ユニット780において実行される複製プロセスを制御する。赤と緑(あるいはUとV)に関連したミニ及びマックスY値のデータは、出力ピクセルの4×4の配列に配置される。YをGに変換するコンバータ(以下、YtoGコンバータという)782によって実行される最終ステップは、圧縮データのブロックを伴うヘッダによって示されるように、YRB/YUVデータフォーマットをオリジナルのRGBフォーマットに変換する。YUVデータを圧縮解除するために、YからGへの変換プロセスがスキップされ、データはYtoGコンバータ782から直接出力される。別の実施例では、他のカラーソースフォーマットが用いられる。そこでは、圧縮法が、圧縮下にあるデータのグループもしくはブロックの最小及び最大輝度を決めるための輝度値を取扱う。
好ましい実施例では、不可逆的圧縮アルゴリズムは、RGBフォーマットにおけるピクセルの4×4ブロックでスタートし、4×4ブロックの特徴に依存してそれらをいろいろなサイズに圧縮する。別の実施例では、続くプロセスに単にサイズが拡大された初期ソースデータブロックを用いる。また、好ましい実施例では、各ブロックは異なるサイズに符号変換される。そのサイズは、圧縮解除エンジンが適切に機能できるようにデータを変換させたものである。別に、消費者用製品や埋込み型DRAMのようなアプリケーションは、固定されたサイズのメモリ環境に対応するために固定された圧縮比率が必要である。固定圧縮比率により、ソフトウェアはメモリを知られたサイズに割り当てることができ、またメモリサイズの物理的制限を通りこしてデータがオーバーフローするのを補正する。この別の実施例で、固定圧縮比率が必要とされるところでは、不可逆的アルゴリズムは、容易に変更されて特別な事例を除去し、より良い圧縮比率を可能とする。
また、別の実施例では、CPU102は、圧縮及び/もしくは圧縮解除を本発明にしたがってソフトウェアで実行する。他の実施例では、圧縮解除のプロセスは、圧縮がCPU102のソフトウェア実行によって操作されるロジックによって実行される。
データ入力は、YUVフォーマット(典型的にはビデオ)あるいはRGBフォーマット(典型的にはグラフィック)で始まり、透過効果のためにアルファ(alpha)に結合される。好ましい実施例において、もし、圧縮されるべきデータが赤と緑と青のフォーマットにあるとすると、データは、Y(輝度)の適切なデータフォーマットに変換され、赤及び/もしくは青は、もしそれがオリジナルソースフォーマットであるならYUVフォーマットに残される。ソース読取プロセスの間、データフォーマットは、より好ましいフォーマットに変換され、比較ステップの数は、各ブロックで実行される。ロードの間の4×4ピクセルのブロックのY値は、2ピクセルの前の最大及び最小Y値の以前の値と比較される。一旦、関連したRとGが発見されると、値は、そのような最小及び最大Y値に対応して記憶される。こうして、最大Yと最小Yは各ブロックごとに決定される。各ピクセルのためのデータが読み取られると、最大及び最小Yが位置付けられ、最小及び最大Yピクセルのための関連したR、B、及びアルファ値が同様に記憶される770。
アルファコンポネントなしの圧縮操作のために、図18は、ブロックを出力するのに用いられるアルゴリズムを示す。同様に、アルファを用いた不可逆的圧縮操作のために、図19の値が用いられる。図18と19の表を参照して、Pビットは、圧縮解除ステージの間に出力ピクセル位置が決定されるような圧縮データを伴う。もし、16ビットが必要とすると、各ピクセルは、ブロック内で見つけられる2色と比較される。そして、0はピクセルが最小カラー(Min color)(Ymin、Rmin、Bmin、Amin)であることを示し、もしくは1はピクセルが最大カラー(Max color)であることを示す。2色よりも大きいときあるいはアルファが最小768及び最大766 ロジックによって決定されるものとして提供されるとき、32ビットが用いられる。32ビットが用いられるとき、圧縮ユニットは、最大及び最小Y値の間の1/6thと1/2と5/6thの中間Y値を計算する。各ピクセルのY値はこれらの値と比較され、もし1/6th値よりも少ないか等しいなら、00がこのピクセルのために用いられる。もし、1/6th値よりも大きく、1/2よりも少ないか等しいなら、a01がこのピクセルのために用いられる。同様にして、10(1/2値と5/6th値の間の場合)と11(5/6th値より大きい場合)が用いられる。圧縮解除エンジンはYmaxとYminとの間の1/3rdと2/3rd値を計算する。そして、もしピクセルの値が00なら、Yminが用いられる。もし、01なら、1/3rd値が用いられ、10なら2/3rd値が用いられ、11ならYmax値が用いられる。圧縮解除の間に、Y,R,BカラーフォーマットはオリジナルデータフォーマットのR,G,B,もしくはY,U,Vに再変換される。固定圧縮比率が要求されるアプリケーションあるいはシステム要件にとって、デフォルトのアルゴリズムは、16ビット及び32ビットデータ入力フォーマットのための図18と19に示された最後のエントリを用いることができる。別の実施例では、各ピクセルのPビットあるいはピクセルのための個々の色に基づくPビットとして、より大きなあるいは少ないビットが用いられる。加えるに、不可逆的圧縮の別の実施例では、より少ない圧縮であるがより高品質のイメージとより高い固定圧縮比率を生じる。
図20−結合圧縮
好ましい実施例では、圧縮に必要な条件の性質に基づいて、不可逆的及び可逆的エンジンを結合したものを用いて高品質の固定されたあるいは可変のイメージ及びビデオ圧縮比率を実現する新しい方法を紹介する。IMC140は、多重的なデータタイプとフォーマットを先に述べたようにして圧縮する。イメージデータがただ一つの不可逆的アルゴリズムによって圧縮されるとき、高度なディテイルを持つイメージデータは、ぼやけたりあるいは色あせしたりする。先行技術は、周波数帯域に変換する離散コサイン変換によってイメージデータに不可逆的圧縮を実行する。これらは、ビデオやグラフィックを時間領域から周波数帯域にリアルタイムで伝送するのに高い帯域幅を必要条件とするために、実施するには、高価である。
これらを解決するために、並列的に動作する不可逆的及び可逆的エンジン575,570を結合したものが実行され、一方のエンジンからの出力が基準に基づいて選択される。
図20に見られるように、オリジナルソースデータ120、例えばディスク、サブシステム、あるいはCPU102からのデータは、入力バスを横切って入力スイッチ261に伝送される。入力スイッチ261はアドレスの決定とブロックサイズや圧縮操作のための認定とを行う。データは、それから、パラレルな可逆的圧縮エンジン570と不可逆的圧縮エンジン575の両方に送られる。そこでは、SRAM記憶メモリ581,582に個別に記録される前に適切な圧縮が行われる。
ソースデータは、可逆的圧縮エンジン570と不可逆的圧縮エンジン575の両者に並列的に読み取られる。両方のエンジンは、入力ブロックのサイズに等価なデータに圧縮する。各エンジンからの圧縮された出力サイズは異なる。
図20の好ましい実施例では、圧縮ストリームへの挿入のために不可逆的あるいは可逆的圧縮結果のいずれを選択するかを、エラータームが決定する。不可逆的圧縮エンジン575は、入ってくるデータストリームの圧縮の間、エラータームを生成する。詳しく言うと、配列比較ユニット(array compare unit)584は、不可逆的圧縮エンジン575からの出力に応答してエラー信号を生成する。エラー信号は、好ましくは、最小Y(MinY)と最大Y(MaxY)の値の間の違いに基づいて生成される。別に、不可逆的圧縮プロセスの間、オリジナルデータは、変換されあるいは不可逆的に圧縮されたデータから差し引かれ、エラータームを生み出す。このエラーは、それから、圧縮ストリームに挿入するためのブロックが不可逆的圧縮フォームであるか可逆的圧縮フォームであるかを決定する。エラー信号は、可逆的エンジン570あるいは不可逆的エンジン575のいずれかからの圧縮データを選択する、出力フォーマットスイッチあるいはマルチプレクサ586に提供される。図に見られるように、可逆的エンジン570と不可逆的エンジン575の出力は、出力フォーマットスイッチ586に提供される前にSRAM記憶装置581,582に一時的に記録される。もし、エラー信号があるしきい値より下にあるなら、不可逆的圧縮エンジン575の圧縮出力に低エラーを示し、それから不可逆的圧縮エンジン575の出力が用いられる。もし、エラー信号があるしきい値より上にあるなら、不可逆的圧縮エンジン575の圧縮出力のエラーは受け入れられない高さにあるとみなされ、可逆的圧縮エンジン570の出力が選択される。
輝度の違いの大きさによる高エラーを示す範囲では、可逆的パラレル圧縮データが用いられる。エラーの最小のしきい値を示すデータに関しては、不可逆的圧縮データが用いられる。この技術の利点は、ノイズを持って圧縮されるイメージのブロックが不可逆的エンジンでより良く圧縮されることである。同様にして、個々のディーテイル、高周波画像あるいは詳細な繰り返しデータは、可逆的パラレル圧縮でより効果的に圧縮される。
圧縮ブロックへの書き込みが行われている間、ヘッダは、使用された圧縮のタイプを示すタグビットを有する。このタグビットは、圧縮解除の間、データに適切な圧縮解除を行うために用いられる。
エラータームの選択は、また、固定圧縮比率を確保するための動的な要素である。本実施例では、もし、固定圧縮比率が望まれるなら、動的なしきい値が、不可逆的圧縮を受け入れ可能とみなされたエラーの大きさを変えるために調整される。現在の圧縮比率の実行遅れは、しきい値を動的に調整するために用いられる。それは、可逆的圧縮ブロックが不可逆的圧縮ブロックに変わってどこで用いられるかを決定する。もし、カレントブロックの動作率が要求される圧縮比率にあるなら、しきい値はデフォルト値にセットされる。もし、カレントブロックの動作率が超過した位置にあるなら、エラーしきい値は、出力選択が不可逆的圧縮エンジン575からのものであるように増加する。こうして、動的な圧縮エラーしきい値は、保証された圧縮比率を達成するために不可逆比率を可逆的データにどのようして調整するかを決定する。
圧縮解除の間、好ましくは、出力フォーマットスイッチ588は、最初に、圧縮解除エンジン出力選択を決定するためのヘッダを取り除く。一つの実施例では、圧縮データは、エンジン555と550の両方によって並列的に圧縮解除される。この例では、圧縮解除の間、好ましくは、圧縮解除の完成後、各フロックのヘッダは、デスティネイションピクセル(destination pixel)が不可逆的圧縮解除エンジン555あるいは可逆的圧縮解除エンジン550のどちらから選択されるかを決定する。出力フォーマットスイッチ588は、圧縮解除エンジン出力を選択を行う。
他の実施例では、選択されたいずれかの圧縮解除エンジン555もしくは550だけがデータを取扱う。この例では、圧縮データは、ヘッダによって決定される圧縮モードに持ちづいて適切な圧縮解除エンジンに効果的に配置される。
図21−圧縮フォーマット
図21に見られるように、本発明の好ましい実施例では、複数の圧縮記憶フォーマットを使うことで、より早いメモリアクセスタイムを可能とする。システムは、システムデータのタイプに基づいて圧縮及び圧縮解除比率を最適化するよう設計されている。プログラムに用いられるデータあるいは他のデータの処理をコントロールするために用いられるデータは、圧縮され、可逆的フォーマット(可逆的圧縮)で記録される。同様にして、回復あるいは圧縮解除の間にロスを持つ圧縮が行われるデータは、不可逆的フォーマットで圧縮される。各フォーマットは、最高の圧縮解除比率と格納サイズのために、特定のアドレスとメモリオリエンテーションとを有する。加えて、各特定の圧縮と圧縮解除フォーマットは、圧縮及び圧縮解除プロセスの間、非圧縮メモリを記録するために用いられるキャッシュメモリの量に基づいて実行帯域幅に拡大縮小する。
図21を参照して、可逆的フォーマットと不可逆的フォーマットに加えるに、IMC140は、好ましくは、メモリコントローラデバイスに帯域幅を有効かつ最適にするための多重の圧縮及び圧縮解除フォーマットを備える。データソースブロック310,320,330,340,350は、データの圧縮フォーマットを示す。このフォーマットは、システムメモリ110から読み込まれ、CPU102から書き込まれ、不揮発性メモリ120から読み込まれ、I/Oシステムコントローラ116から読み込まれ、あるいはIMC装置140の内部グラフィックブロックから読み込まれ、あるいは図1の先行技術にあるように、PCIもしくはAGPバスからIMC140から読み込まれる。デスティネイションブロック360,370,380,390,396.300は、データの圧縮フォーマットを示す。こおフォーマットは、システムメモリ110に書き込まれ、I/Oシステムコントローラ116に書き込まれ、IMC装置140の内部グラフィックブロックに書き込まれ、あるいは図1の先行技術にあるように、PCIもしくはAGPバスからIMC140に書き込まれる。したがって、ブロック310,320,330,340,350は、データが流れ込むあるいはIMC内で生成されるデータソースフォーマットと考えられる。ブロック360,370,380,390,396,300は、データがIMCの外に流れ出すデスティネイションフォーマットである。デスティネイションフォーマットは、IMC140によって続いて起きるアクセスのソースフォーマットになる。こうして、圧縮フォーマットはソースフォーマット/デスティネイションフォーマットとして参照される。
ブロック302,304,306,308,309は、データのタイプを示す。これらのデータタイプは、テクスチャデータ302,3D-DL304,2D-DL306,DV-DL308,VDRL309を含む。これらのデータは以下で簡単に議論される。
VDRL、間接的圧縮ライン
好ましい実施例におけるデータの一つのフォームは、上記で参照した米国特許第5,838,334に示されているビデオディスプレイリフレッシュリスト(VDRL)データである。VDRLデータは、典型的にはさまざまな非連続メモリ領域からディスプレイをリフレッシュすべく、スパンラインベースのピクセル/ビデオデータを参照するための指令及び/もしくはデータから成る。VDRL圧縮データは、さまざまな傾斜(slopes)と整数データを含むスタート及びストップポインタのロングストリームであることが期待されている。そのようなデータは、好ましい実施例における可逆的圧縮及び圧縮解除プロセスで圧縮される。グラフィックエンジンの下記するVDRLコンテクストレジスタフィールドは、VDRL実行の間、スクリーンデータが可逆的圧縮スクリーンライン(あるいはサブライン)としてシステムメモリに書き戻されるようにプログラムされる。
DestEn
DestType={Linear,XY,or LineCompessed}
pDestTopLinePtr //Pointer to compressed pointer list
pDestTopLine //pointer to screen data
DestMode={Draw&Refresh|DrawOnly}
DestPixFmt
DestPitch
可能なときには、表現もしくはディスプレイ(一つもしくはそれ以上のVDRLセグメントを処理することに基づいて)される各スクリーンライン(あるいはスパンライン)は、独立して(各スクリーンラインごとに、新しい圧縮ストリームはスタートされかつ閉じられる)圧縮され、pDestTopLineのカレントバイトのオフセット位置でメモリに書き戻される。加えて、グラフィックエンジンは、pDestTopLinePtrのカレントバイトのオフセット位置でポインタを圧縮スクリーンラインに書き戻す。pDestTopLineとpDestTopLinePtrでのカレントオフセットは、グラフィックエンジンによって取り扱われる。圧縮スクリーンデータ300と対応するポインタリストは、続くVDRL309によって圧縮ウィンドウとして参照される。好ましくは、圧縮ウィンドウに関連するワークスペースは、圧縮スクリーンデータに直接アクセスするグラフィックエンジンによって用いられる下記するフィールドを含んでいる。
pTopLine
pToplinePtr
SrcType={Linear|XY|lineCompressed}
pixFmt
Pitch
スクリーンラインは、ライン390(もしくはサブライン)で圧縮され、続くVDRL309だけが、カレントスクリーンをリフレッシュされる必要のあるこれらのラインを参照しなければならない。
注:3D−DL304とDV-DL308は、また、間接的圧縮スクリーンライン396を同様にして表現できる。しかしんがら、生じた間接的圧縮スクリーンラインは続くVDRLによって消費される。
注:DV-DL308は、基本的には処理及び描画ブロックに基づく。描かれたスクリーンの広さをカバーするに十分な格納ブロックを持たないものを実施するためには、スクリーンライン390,300は、サブラインベースでメモリに圧縮して戻される。
スタティックデータ(静的データ:Static Data)
各独立したトライアングルのために、3D-トライアングルは、エンジンが、標準的なリニア圧縮360を用いて2つの可逆的に圧縮されたスティックデータブロック:実行用のスタティックデータブロックとグラフィックエンジンスタティックデータブロックを生成するのをセットアップする。与えられた3Dウィンドウあるいはオブジェクトに関し、全てのスタティックデータは、特別なベースアドレス(pTopStatic)に始まりを書き込まれる。各スタティックデータは個別に(各スタティックデータブロックごとに、新しい圧縮ストリームが開始されて閉じられる)圧縮され、pTopStaticへのカレント圧縮ブロックのオフセット位置でメモリに書き戻される。加えて、3Dトライアングルは、エンジンがポインタを適切なスタティックポインタラインバケットにある圧縮スタティックデータブロック(pStatic)に書き戻すのをセットアップする。pStaticのフォーマットは、次のフィールドから成る:スタティックデータブロックポインタオフセット、スタティックフォーマット(データが圧縮されているかどうかを示す)、実行スタティックデータブロックと関係する圧縮ブロックの数、及びグラフィックエンジンスタティックデータブロックと関係する圧縮ブロックの数。各スタティックデータブロックタイプのための圧縮ブロックの数は、どのくらいのデータが圧縮解除されるかを圧縮解除エンジンに指示するために用いられることに注意されたい。
3D-DL
3D-DLは、3Dイメージをメモリもしくはディスプレイにレンダリングするための3次元描画リストを備える。各3Dウィンドウライン(あるいはサブライン)のために、3D実行エンジンが3D-DL304の可逆的圧縮ストリームを生成する。各3D-DLラインは個別に(すなわち、各3DDLラインのために、新しい圧縮ストリームがスタートされ、そして閉じられる)圧縮され、結果である圧縮3D-DLライン390は、メモリ110に書き戻される。3D-DLの連続するラインがメモリ内に連続する必要はない。加えて、IMC140の3D実行エンジンは、3D-DLポインタを、3D-DLポインタリストへのカレントポインタのオフセット位置で圧縮3D-DLラインに書き戻す。結果である圧縮3D-DLライン390と対応する3D-DLポインタリスト304は、構文解析され、3Dグラフィックエンジン212によって消費される。グラフィックエンジン212は次の3D-DLコンテクストレジスタフィールド(context register field)を用いる。
p3DDL
p3DDLPtr
コンテクストレジスタフィールドは、3D-DLの実行の間、コンテクスト情報をIMC140に提供することを操作する。
注:3D-DLは、ライン390(あるいはサブライン)ベイシス(basis)で圧縮され、3Dウィンドウ(VDRLウィンドウ優先解像度からのフィードバックに基づく)の視認可能な部分だけが描画される必要がある。
テクスチャ(Textures)
レンダリングのためのテクスチャデータ302は、本発明にしたがって同様に圧縮及び圧縮解除される。不可逆的アルゴリズムが、イメージを圧縮する。別の実施例では、不可逆的と可逆的アルゴリズムのパラレルな結合が、時間の遅れを付け加えることなしにイメージやテクスチャマップの質を改善するために用いられる。テクスチャデータ302は、本発明のブロック圧縮フォーマット380において圧縮及び圧縮解除される。Tテクスチャを持つ不可逆的(あるいは可逆的)圧縮テクスチャテーブルのロジカルフォーマットは、次の通りである。
pTopTex->
opTex0->
pLod0Blk0-> 8×8 圧縮テクスチャサブブロック
pLod0Blk0(last)->
pLod(last)Blk(last)->
opTexl->
pLod0Blk0->
opTex(T-1)-> ....
pTopTexは、圧縮テクスチャテーブルへのベースポインタである。pTopTexは、3Dウィンドウベイシスごとのグラフィックエンジン212にロードされる。opTexは、pTopTexへのオフセットである。pTopTexは、グラフィックエンジン212を備える。グラフィックエンジン212は、ターゲットとなるテクスチャと関係する最初に圧縮されたテクスチャサブブロック(すなわち、LOD0、サブブロック0)へのポインタを有する。opTexは、グループ属性(attribute)データブロック、レンダ-ステイト(RenderState)に配置されたフィールドである。レンダ-ステイトは、トライアングルのグループによって割り当てられた属性を有する。グループ属性データブロックポインタ、pレンダ-ステイト(pRenderState)は、各3D-DL304セグメントに含まれる。pTopTex、opTex、及び全てのテクスチャ属性とモディファイアを用いることで、グラフィックエンジンのテクスチャアドレス生成エンジンの一つが、先取りするためのどれかの臨界テクスチャサブブロック380(pLodBlk)を決定する。
テクスチャサブブロックのサイズは、好ましくは、8×8テクセルである。圧縮テクスチャのサブブロックは、圧縮テクスチャキャッシュに読み込まれる。pLodBlkポインタは8×8圧縮テクスチャサブブロック380を指し示すことに注意すべきである。
DV-DLビデオ
DV-DLフォーマットは、ディジタルビデオをメモリあるいはディスプレイにレンダリングするディジタルビデオドローリストから成る。ブロック圧縮フォーマット380は、ビデオとビデオモーション予測データのために用いられる。加えるに、ディスプレイデータ300は圧縮フォーマットで記憶される。ディスプレイデータ300は、2kバイトよりも大きいスキャンラインブロック内のRGBもしくはYUVデータを順次アクセスされる。ディスプレイデータ300の好ましい圧縮法は、並列的に可逆的フォーマットで全てのスパンラインをライン圧縮390することである。
ビデオ入力データは、可逆的、不可逆的、あるいはその結合といいたどのようなフォーマットであれ圧縮される。ビデオデータは、リニアでもしくはX/Yフォーマットでアドレス指定された2次元的ブロック380に圧縮及び圧縮解除される。
各データタイプは、入ってくるソースフォーマットの最も効果的なナチュラルデータと一致する特異なアドレススキームを持つ。
特別なグラフィック、ビデオ、及びオーディオデータタイプ306,308,310に関し、データタイプは、システムにとって最適の圧縮比率を達成するために各圧縮フォーマットを関連付けられる。
ブロック310,360は、CPU102とシステムソフトウェアによって詳細をリニアにアドレス指定された圧縮もしくは圧縮解除データブロックの可逆的もしくは不可逆的圧縮及び圧縮解除フォーマットを示す。データブロックのサイズとデータ圧縮のタイプは帯域幅とアプリケーション及びシステムのコスト条件とに依存する。ブロック310に適用されたソースデータは、もしシステムメモリからのものであるなら、圧縮解除され、ノーマル(非圧縮)データあるいは圧縮解除に関連した幾分のロスのあるデータとして、デスティネイションに書き込まれる。ブロック310に提供された圧縮データの入力帯域幅は、圧縮比率の違いによって分割されたノーマルな圧縮されていないデータに要求される帯域幅と同じである。圧縮比率は、多重の制約条件の一つの要素であり、それには圧縮ブロックのサイズ、データのタイプ、そひてデータフォーマットが含まれる。さらに、非圧縮のデスティネイションデータの帯域幅は、オリジナルの非圧縮のソースデータの帯域幅と等しい。加えるに、ソースデータは、圧縮されて多くの圧縮フォーマットの一つによってデスティネーションに書き込まれる非圧縮のノーマルデータである。これをブロック360,380,390,396によって示す。
ソースデータブロック320は、圧縮によって変化していない、入り込んでくるデータを示す。このケースでは、データは、テクスチャタイプを示し、3Dテクスチャメモリスペースを最適に使用するため、圧縮ブロックフォーマット380で書き込まれる。同様に、3D-Draw(3D-DDL)タイプのデータは、非圧縮フォーマットでソースデータとして受け取られ、処理され、非圧縮370もしくはライン圧縮390デスティネイションフォーマットのどちらかで出力されるためにフォーマットされる。同様な操作は、ソースが既に圧縮ブロックフォーマット330にあるときにも生じる。
圧縮ライン340/390は、VDRL309指示から生成され、後に他のリクエスティングエイジェントによって使用されるために、部分的に圧縮ラインセグメント340/390に格納される。これらの圧縮ラインセグメントは、標準のリニアアドレスフォーマットにアドレス指定される。
中間の圧縮ラインセグメント350/396は、中間ライン350/396を圧縮するために圧縮ブロック330/380から変換を行う特別なケースである。圧縮中間ラインは、圧縮ブロック330/380とディジタルビデオドローリスト(DV-DL)308の間の変換技術として用いられる。
ディスプレイデータ300も、また圧縮され、典型的にはリニア完全スパンライン(linear complete span lines)である可逆的フォーマットで圧縮される。ディスプレイにビデオをリフレッシュする間、3Dグラフィックエンジン212によってモディファイされていないディスプレイ圧縮スパンライン300が個々のディスプレイデバイススパンラインのディスプレイを圧縮解除する。
ビデオとテクスチャデータ302は、非圧縮320/370の状態かあるいは圧縮ブロック330/380フォーマットのデータである。ブロックフォーマット330/380は、典型的にはX/Yアドレスを示す8×8ブロックであるが、8バイトのピッチを持つリニア64バイトとしてシステムメモリ内で参照される。圧縮ブロックフォーマット330/380において、圧縮解除は32×32テクスチャブロックとなり、X/Yフォーマットでアドレス指定される。
VDRL(video display refresh list,ビデオディスプレイリフレッシュリスト)309、DV-DL(digital video draw list,ディジタルビデオドローリスト)308、3D-DL(3-D draw list,3-Dドローリスト)のような指示リスト(Instruction list)は、リニアアドレス指定のある可逆的圧縮フォーマットで記録される。CPUデータは、リニアアドレス指示のある可逆的圧縮フォーマットによって記録される。これらの指示リストは、ジオメトリ(geometry)リストに対応してメモリ内でピクセルデータを表示するために実行でき、また、ディスプレイ装置のディスプレイ用にメモリからビデオ/ピクセルデータにアクセス可能である。これらの表示(描画)結果は、図21に示すフォーマットを持つ。例えば、ソースとしての非圧縮リニアアドレスデータ320は、操作され、3D-DL304指示リストによって読み取られ、圧縮ライン390フォーマットで圧縮されて記録され、あるいは非圧縮370データフォーマットで記録される。図21に示された各操作は、データの移行と記録のための好ましいフォーマットを有する。
タイプ2Dドローリスト306であるデータは、非圧縮320フォーマットもしくはブロック圧縮396フォーマットでソースデータとして受け取られる。2D-DLデータタイプ306は、出力データが非圧縮370でもしくは中間ライン圧縮396フォーマットのデータである。
ディジタルビデオドローリスト(DV-DL)308に関しては、DV-DL308のソースデータは、非圧縮320フォーマットであるいはブロック圧縮330フォーマットで受け取られる。デスティネイションへのその出力は、中間圧縮396フォーマットである。
VDRLデータタイプのソースデータは、非圧縮320、圧縮ライン340、あるいは中間圧縮ライン350フォーマットのいずれかで受け取られる。そして、圧縮ライン390としてデスティネイションアドレスに出力され、あるいはディスプレイ装置に直接出力される。
最後に、ディスプレイフォーマットタイプ300のデータは、ノーマルデータあるいはリニアスパンアレスィングフォーマットの可逆的圧縮データである。
米国特許第5,838,334号に示されているように、ワークスペースエアリアは、メモリに位置し、ウィンドウあるいはオブジェクトタイプを定義づける。ワークスペース域と圧縮及び圧縮解除操作との間の関係は、次の通りである。各ワークスペースは、ウィンドウあるいはディスプレイのオブジェクトを再生するための圧縮のタイプや質を示すデータエリアを有する。アプリケーションソフトウェア(API)、グラフィカルユーザーインターフェイス(GUI)あるいはオペレーティングシステム(OS)ソフトウェアは、タイプとメモリアロケーションの必要条件を決定し、コストとパフォーマンスと有効性を最適なものにする。オリジナルの内容から変化し、あるいはサイズの変更がされたウィンドウあるいはオブジェクトは、メインシステムメモリのウィンドウワークスペースエアリアに示されているディスプレイに最終的に表示するために、複数の質のレベルで表示される。加えて、3Dオブジェクトあるいはテクスチャは、圧縮の質の属性を含んでいる。圧縮タイプと、アドレスフォーマットと、表現の質を個別のウィンドウもしくはオブジェクトのワークスペースエアリア内で割り当てることにより、システムは、メモリサイズと帯域幅の要求条件を除外でき、コストとパフォーマンスが最適化される。
データタイプであるテクスチャデータ302、3D-ドローリスト304、2D-ドローリスト306、ディジタルビデオドローリスト308、及びヴァーチャル(ビデオ)ディスプレイリフレッシュリスト309は、米国特許第5,838,334号で参照できるように、全て、IMCのオーディオ、ビデオ、グラフィックメディアのフォーマットを示す。
核となる圧縮ブロックフォーマットによって、多重のデータタイプをさまざまなソースの入力として用いることができる。圧縮及び圧縮解除のフォーマットは、受け取られるデータのタイプに合わせてデータを最も小さく格納可能なユニットに高効率で圧縮する。これを達成するために、メモリコントローラ210は、受け取るデータのタイプを理解する。
したがって、IMC140は、CPU102、システムメモリ110、及びビデオディスプレイの詳細なフォーマットをデザインすることによってシステム内を移動されるデータの量を少なくし、その結果、コンピュータシステムのパフォーマンスを改善してコストを低減させる。本発明によれば、CPU102は、さまざまなサブシステムの間でデータが移動する時間を大幅に少なくする。これによって、CPU102の自由度が増し、CPU102がアプリケーションプログラムを動作させる時間を大幅に増やす。
後述するように、CPUからのデータは圧縮され、さまざまなブロックサイズを持つリニアアドレスメモリに格納される。CPUからのこのデータは、グラフィックデータには関係しないし、またキャッシュラインあるいは最近使われたページ(LRU)あるいはCPUベースのアプリケーションからの要求されるメモリが無効であることから生じる。本実施例で、圧縮を求めるドライバは、メモリ割り当てと、圧縮と圧縮解除の両方のデータのためのディレクトリ要素を取扱う。
待ち時間と効率性
メモリコントローラ220は、新規な2つの方法によって読取りのための待ち時間を最小にする。それぞれの方法は、好ましい実施例を参照しつつ後で議論する。待ち時間を減らすためのコントロールファンクションのほとんどは、スイッチロジック261内に位置し、また圧縮スイッチロジック516と圧縮解除スイッチ512とノーマルメモリスイッチ514内に位置している。圧縮ブロックとL3データキャッシュブロックのデータアドレスの場所が、待ち時間を減少させるのに大きな役割を果たす。待ち時間減少と効率性を確保するさまざまな方法には次の方法が含まれる。パラレル圧縮/圧縮解除(上記した)、選択的圧縮モード、優先的圧縮モード、変更可能な圧縮ブロックサイズ、L3データキャッシュ、および圧縮記録。図22と23―基準に基づく圧縮/圧縮解除の選択
パラレル圧縮及び圧縮解除ユニット251は、米国特許出願08/463,106号に示されているように、要求エージェント、アドレスレンジ、あるいはデータタイプ及びフォーマットの一つあるいはそれ以上に基づいて、圧縮/圧縮解除モードあるいはタイプを選択的に実行する。圧縮/圧縮解除モード(圧縮モード)は、可逆的圧縮、不可逆的圧縮、圧縮なし、及び図21に見られるさまざまな圧縮フォーマットを含む。圧縮モードは、ディスプレイに表示されるビデオ/グラフィカルオブジェクトあるいはウィンドウのための不可逆的圧縮のレベルを変えることを含む。IMC140は、最初のデータのための可逆的圧縮、二番目のデータのための不可逆的圧縮、三番目のための圧縮なしの状態を選択的に実行できる。
図22と23は圧縮及び圧縮解除スキームを選択的に用いることを示すフローチャートである。図22と23の方法は、圧縮/圧縮解除エンジンから成るメモリコントローラによって実行される。メモリコントローラは、システムメモリをコントロールするためのシステムメモリコントローラである。そこではシステムメモリはCPUによって実行されるアプリケーションコードとデータを記録する。
ステップ802の手法は、非圧縮データを最初に受け取る。データはCPUアプリケーションデータ、オペレーティングシステムデータ、グラフィックス/ビデオデータ、あるいは他のタイプのデータである。データは、さまざまな要求エージェントから生じたものである。
ステップ804において手法は、データの圧縮法を決定する。圧縮モードは可逆的圧縮、不可逆的圧縮、圧縮なしの一つから成る。他の圧縮モードは、図21に示す圧縮タイプ、例えば、圧縮リニア、圧縮ブロック、圧縮ライン、あるいはI圧縮ラインの一つと結合される可逆的あるいは不可逆タイプのいずれかを含む。
圧縮モードは、データが格納されるアドレスレンジ、データを提供する要求エージェント、及び/もしくはデータのデータタイプの一つあるいはそれ以上に対応して決定される。
アドレスレンジが圧縮モードの決定に用いられると、手法は、圧縮モードを決定するためのデータを受け取られるデスティネイションアドレスを分析する。そこでは、デスティネイションアドレスは、メモリ内のデータの格納デスティネイションを示す。例えば、最初のアドレスレンジが可逆的圧縮フォーマットで設計されると仮定すると、第二のアドレスレンジは不可逆的圧縮フォーマットで設計され、第三のアドレスレンジは圧縮されないフォーマットで設計される。この事例で、圧縮モードを決定するステップ804は、アドレスが第一のアドレスレンジ、第二のアドレスレンジ、あるいは第三のアドレスレンジにあるかを決定するデスティネイションアドレスを分析することから成る。
要求エージェントは、圧縮モードを決定するために用いられる。手法は、誰が要求エージェントであるかを決め、それから要求エージェントに基づいて圧縮モードを決定する。例えば、要求エージェントがCPUアプリケーションあるいは関連ドライバなら、可逆的圧縮が適用される。要求エージェントがビデオ/グラフィックドライバなら、不可逆的圧縮が適用される。
データタイプは圧縮モードを決定するために用いられるところでは、手法は、データタイプを調べ、データタイプに基づく圧縮モードを決定する。上記した例を用いると、データがアプリケーションデータなら、圧縮モードは可逆的圧縮に決定される。データがビデオ/グラフィックデータなら、圧縮モードは不可逆的圧縮になる。好ましい実施例では、圧縮モードの決定は、生来的にはデータタイプに基づいて行われる。アドレスレンジの使用あるいは要求エージェントは、潜在的に、アドレスレンジに格納されたデータタイプあるいは要求エージェントの源であるデータタイプに基づいて圧縮モードを決定する。
さらに、圧縮モードは、ディスプレイに表示されるビデオ/グラフィカルオブジェクトあるいはウィンドウの不可逆的圧縮のレベルを変化させることも含んでいる。より大きな圧縮比率での不可逆的圧縮は、ディスプレイの背景にあるオブジェクトに適用される。より小さな圧縮比率での不可逆的圧縮は、ディスプレイの前景にあるオブジェクトに適用される。上記したように、グラフィッカル/イメージデータのために、ステップ804において圧縮モードはオブジェクトごとのベースで決定される。例えば、オブジェクトが前景にあるか背景にあるか、あるいはグラフィカルオブジェクトの属性に基づいて決定される。不可逆的圧縮のレベルを2,4,8,16に変化させることは、オブジェクトの属性に基づいてグラフィカル/イメージデータに適用される。
ステップ806において、手法は、非圧縮データをデータの圧縮モードに基づいてあるいは対応して選択的に圧縮する。ステップ806において、データは、もし、圧縮モードが可逆的圧縮なら、可逆的圧縮フォーマットを用いてメモリに格納される。データは、もし圧縮モードが不可逆的圧縮を示すなら、メモリに不可逆的圧縮によりメモリに格納あれる。また、もし圧縮モードがデータのなんの圧縮も示してないなら、データは非圧縮フォーマットでメモリに格納される。
メモリへのデータの格納は、データの圧縮モード情報の格納を含む。圧縮モード情報は、圧縮データの圧縮解除の手続をも示す。圧縮モード情報は、データの圧縮モードを無視して圧縮されないフォーマットで記録される。
圧縮モード情報は、データに埋め込まれる。すなわち、分離されたテーブルやディレクトリに記録されるのではない。ヘッダは、最初のデータの圧縮情報を示す圧縮モード情報を含むように作成される。ヘッダは、また、データのトップに位置される。すなわち、アドレスの最初であり、データが後を続く。データの最後あるいは指定された位置に設けるようにしても良い。
別の実施例では、IMC140は、IMC140のメモリ内に、オーバーフロータグとオーバーフローテーブルエントリナンバーのためのスペースを予約する。IMC140は分離されたオーバーフローキャッシュと、エントリーテーブルと、コントロールロジックを含む。別の実施例では、オーバーフロー表示は、通常(ノーマル)圧縮操作に用いられる同じコントロール及び翻訳キャッシュロジックブロックによって処理される。
図23は、記憶データの圧縮解除を示す。ステップ812において、手法はデータの要求を受け取る。
ステップ814において、手法は、要求に対応してメモリからデータにアクセスする。
ステップ816において、手法は、要求を受け取ることに対応したデータのための圧縮モードを決定する。圧縮モードは、記録されるデータから形成され、好ましくはヘッダを備える。データは、ステップ816で圧縮モードが決定される前に、始めにステップ814においてアクセスされる。ステップ818において、手法は、データを圧縮解除する。圧縮解除のタイプあるいはモードは、データの圧縮モードに基づいて選択される。ステップ818の選択される圧縮解除において、データは、もし圧縮モードがデータの可逆的圧縮であるなら可逆的圧縮を使うことが決定され、もし圧縮モードがデータの不可逆的圧縮であるなら不可逆的圧縮が用いられ、また圧縮モードがデータを圧縮されない状態なら、圧縮されない。
ステップ820において、手法は、圧縮解除の後、要求に答えるデータを提供する。待ち時間をさらに減らすために、選択されたあるデータが、圧縮されない通常の操作によってまたは不可逆的あるいは可逆的な圧縮モードで記録/回復される。これは、アドレスレンジを、圧縮されていないことを示す特別のフラグを含んでいるメモリマネジメントユニット(MMU)ブロックで比較することによって達成される。パワーオン構成のために、これらの圧縮されないアドレスレンジは、オペレイティングシステムによって用いられる監視モードコード及びデータブロックによってセットされる。
メモリコントローラ210内のMMUは、もし必要ならどの圧縮フォームかを決定する(例えば4096バイトレンジ)。この決定は、メモリページバウンダリ(memory page boundary)のMMU翻訳テーブルに位置する圧縮フィールドに基づく。別の実施例では、タイプフラグの圧縮は、複数のバウンダリレンジに位置される。メモリ圧縮データタイプを決めるためにアドレスレンジ調査を用いる手法は、「埋込み型データ圧縮及び圧縮解除エンジンを有するメモリコントローラ」という名称の特許(1995年6月5日出願、出願番号08/463,106、発明者:トーマス エイ、ダイ)に開示されている。
圧縮データのためのメモリ割り当て―優先的及び通常圧縮モード
IMC140は、速く有効なメモリ配置とデータ回復のために2つの異なる圧縮モードを含む。2つのモードとは、「優先圧縮モード」と「通常圧縮モード」である。「優先圧縮モード」のアーキテクチャは、非侵入型(non-intrusive)のメモリ割り当てスキームである。優先モードは、より速い有効帯域幅にとって、システムソフトウェアを変更することなしにメモリF/Xテクノロジを具体化する能力があり、これには圧縮/圧縮解除能力を含む。OSを変更しないこのケースにおいて、IMC140のメモリコントローラ210は、メモリサイズを保全するよりも帯域幅改良にもっとぴったりする。メモリ割り当てと圧縮操作は、オーバーフロースペースのために圧縮アルゴリズムによって空けられた付加メモリを用いる。オーバーフロースペースは、可逆的圧縮によって圧縮前のオリジナルデータのサイズよりもより多くのデータを生じるケースにおいて、用いられる。優先モードは、より速くデータ伝送を行う必要があってメモリ保全の必要のないシステムで用いられる。
優先モード操作のケースでは、オーバーフローアドレスは、圧縮操作によって先に減少されたメモリブロック内にある。優先モードでは、システムソフトウェアの再割り当ては、メモリ割り当てとサイズをする必要がない。二次レベルのオーバーフローあるいはメモリ割り当てによって提供されたオーバーフローエリアにフィットしないオーバーフローはシステムレベルの中断ドライバによって取り扱われる。このケースでは、リアルタイムイベントはセカンドレベルの中断遅れを取扱うことができない。要求サイズの固定圧縮比率が別の実施例のもとで用いられる。
優先モードは、データを圧縮し、圧縮データをコンピュータシステムのメモリに格納するために用いられる。コンピュータシステムのそこの部分は、圧縮のためのアカウントには必要でない。優先モードで、コンピュータシステム、例えばオペレイティングシステムは、最初に、非圧縮データのメモリブロックを割り当てる。メモリブロックは、非圧縮データが記録されると仮定される部分に割り当てられる。オペレイティングシステムは、圧縮操作をアカウントする必要はなく、圧縮操作に気がつかない
メモリコントローラは、後で、非圧縮データと、一つもしくはそれ以上の対応するデスティネイションアドレスを受け取る。デスティネイションアドレスは、割り当てられたメモリブロック内の最初のデータの記録デスティネイション(storage destination)を表示する。メモリコントローラは、それから、一つもしくはそれ以上のデスティネイションアドレスで割り当てられたメモリブロック内の圧縮された最初のデータを記録する。この記録操作は、待ち時間を減らすために一つもしくはそれ以上のデスティネイションアドレスのアドレス翻訳を行わない。優先モードは、メモリ最小化の実行を企てるものではない。オーバーフロー記録は、必要があれば、割り当てられたメモリブロック内で割り当てられる。
要求エージェントが圧縮データを後に要求するとき、デスティネイションアドレスは、メモリから圧縮データにアクセスし、圧縮データを圧縮解除し、また要求に答えて圧縮解除データを提供するために用いられる。
1. 通常モード圧縮
通常圧縮モード(非優先モード)において、IMC140は、圧縮解除プロセスの間、速く有効なデータ検索を行うために新しいメモリディレクトリを用いる。新しいディレクトリによって、メモリ割り当てと、ディレクトリテーブルと、コンピュータのメインシステムメモリバンク110で用いるオペレーシングシステムソフトウェアを助けるための固定エリア割り当てを保持するメモリ消費量が最小になる。
可逆的圧縮解除
圧縮されたデータの可逆的圧縮解除のための平行した圧縮解除エンジン550の1つの化身が今明らかにされる。 データ圧縮方法が圧縮解除されたデータからのただ1つだけのシンボルが調べられて、そして一度に圧縮される連続的な圧縮方法と圧縮解除されたデータからのシンボルの複数性が調べられて、そして一度に圧縮されるかもしれない上に記述された、新奇な並列圧縮方法を含むかもしれない。 1つの化身で、平行した圧縮解除エンジン550は連続的であるか、あるいは並列圧縮解除方法によって圧縮されたデータを圧縮解除することが可能であるかもしれない。 同じく、現在の発明の平行した圧縮解除技術を使っている圧縮されたデータの圧縮解除は公知の事実連続的な圧縮解除テクニックを使っている同じ圧縮されたデータの圧縮解除と比べて同じ圧縮解除されたデータ流を作り出す。 上に記述された並列圧縮方法を使って作られた圧縮されたデータは連載の圧縮アルゴリズムを使って引き起こされて圧縮されたデータとまったく同じであるよう意図される;それ故に、連続的であるか、あるいは平行した圧縮解除エンジンによって上に記述された並列方法で圧縮されたデータを圧縮解除することは同じ圧縮解除されたデータをもたらすだろう。 なるべく、圧縮解除が圧縮オペレーションとして、あるいはより速く同じぐらい速く行われる。 同じく、代わりの化身で、圧縮解除エンジン550/555がシステムの中で場所の複数性で置かれるかもしれない、あるいは多数の圧縮解除エンジンが圧縮解除プロセスと注文制のバンド幅あるいはスループットの注文制のオペレーションに割り当てる回路が圧縮解除エンジン550で使われた段階の数に頼って設計されるかもしれない。 従って、公知の事実連載のアルゴリズムより広帯域で屈服する平行した圧縮解除エンジン550のために下に平行した圧縮解除アルゴリズムだ。
Fi es 32 − 43 − 平行した圧縮解除エンジン (Parallel Decompression Engine) の化身
平行した圧縮解除エンジン550は一連の段階、なるべくパイプラインで送られた段階に分けられるかもしれない。
圧縮解除エンジン550の段階は図33で例証される。 見せられるように、圧縮解除エンジン550はデコーダを含んでいる最初の段階25501を含むかもしれない、(同じくイニシャルあるいは予備選挙と呼ばれる)2番目のステージ25505を含んでいる下準備が世代ロジック、3番目のステージ25509を含んでいる最終の選り抜きの世代ロジックと4番目の段階25513のデータ選択を含んでいるそしてアウトプットのロジックを選ぶ。 パイプレジスタ25503が最初のステージ25501と2番目のステージ25505につながれるかもしれない。 パイプレジスタ25507が2番目のステージ25505と3番目のステージ25509につながれるかもしれない。 パイプレジスタ25511が3番目のステージ25509と4番目のステージ25513につながれるかもしれない。 1つの化身によればパイプラインで送られた模様は 0.25u CMOS 技術を使って133 MHz において走るために4つの段階を利用することを期待される。 これらの段階はなるべく分けられるか、あるいは、プロセス技術が必要とするシリコンとして、代わりに結合される。 ただこのパイプライン25513の中の最後の段階だけがヒストリーウインドウを使う、そしてその最終のステージは最小ロジックを含んでいる。 これに基づいて、この機能は、もし際立ってより速い時計が利用可能であるなら、4以上の段階に延長されるかもしれない。
それで、代わりの化身で、処理が良くなり、そして時計率が増加する(時・から・につれて・ように)、圧縮解除エンジン550の段階は同じインプット圧縮ストリームで圧縮解除率を引き上げるために増加するかもしれない。 しかしながら、望ましい embodment のために見せられた4つの段階は機能の論理的な部門だ。 他の化身が4以下の段階を含むかもしれない。 例えば、3段階の embodement が1つの段階の中に2番目と3番目のステージを結合するかもしれない。
圧縮解除エンジン550が含む望ましい化身でパイプラインで送られた!多段階のデザイン。 圧縮解除エンジン550のパイプラインで送られた、多段階のデザインはそれぞれの段階でデータの十分に同時か、あるいは同時の処理を可能にする。 ここに使われるように、アジサシ「圧縮解除サイクル」はデータのセットの上にすべてのパイプラインの段階のオペレーションを含む、トークンの分析からそうする最初の段階でデータのインプットセクションでアウトプットの生産が最後のステージでデータを圧縮解除した。 それで、多数の「圧縮解除サイクル」が、十分に同時に、i、e.を実行しているかもしれない、多数の「圧縮解除サイクル」の diffierent 段階が同時に十分に実行しているかもしれない。
例えば、最初の段階25501は(同じくトークンと呼ばれる)コードの最初の複数性を受けて、そして最初の圧縮解除サイクルの始めにおいてデコーダに最初のトークンを載せるかもしれない。 デコーダーは最初の印から種々の最初の解読されたインフォメーションを抽出するかもしれない、そしてこの最初の解読されたインフォメーションはパイプレジスタ25503の中に掛け金で締められるかもしれない。
最初の解読されたインフォメーションはそれから2番目の段階25505の予備の選り抜きのロジックにロードされるかもしれない。 2番目の段階25505の予備の選り抜きのロジックが最初の解読されたインフォメーションに作用している間に、トークン(2番目のトークン)の次の複数性が、十分に同時に、2番目の解読されたインフォメーションを作り出す2番目の圧縮解除サイクルの始めの中に最初の段階25501によって受け取られて、そして積み込まれて、そしてにおいて解読者によって処理されるかもしれない。
2が事前で生成して完了した段階が最初の圧縮解除サイクルで初めから解読された ingformation を選ぶ、下準備が選択する時2番目の圧縮解除サイクルでパイプレジスタ25507の中に掛け金で締められる。
同様に、1(人・つ)が第2を生成して完成したステージが2番目の圧縮解除サイクルでインフォメーションを解読した時、この2番目の解読されたインフォメーションはパイプレジスタ25503の中に掛け金で締められるかもしれない。 もしその時が決勝戦の中への解決のための段階25509が選ぶ第3に載せられたなら、下準備は選択する、他方2番目の圧縮解除サイクルのために最初の段階25501で生成された2番目の解読されたインフォメーションは2番目の段階25505にロードされる、そしてトークンの次の(3分の1)複数性が最初の段階25501によって受けられて、そして3番目の圧縮解除サイクルを始めるためにデコーダに載せられる。 それで、圧縮解除の4段階の化身でエンジン550、4つの圧縮解除サイクルが十分に同時に圧縮解除エンジン550でアクティブであるかもしれない。
ここに使われるように、最初のステージという環境で現在の圧縮解除サイクルで並列に圧縮されたデータからトークンの複数性を調べて、「平行の」用語はトークンの複数性が圧縮解除エンジン550のひとつのパイプライン段階の間にロジックによって作用されるかもしれないという考えを含む。 期間は「並列に」同じくデコーダの複数性が圧縮解除エンジン550のひとつのパイプライン段階の間にトークンの複数性に作用するという考えを含むかもしれない。 トークンの複数性は実際に連続的に、あるいは consecutively にインプットデータセクションから抽出されるかもしれない。 トークンの複数性はそれから、(彼・それ)らがインプットデータセクションから抽出される(時・から・につれて・ように)、利用可能なデコーダに割り当てられるかもしれない。 印が利用可能なデコーダに割り当てられた途端に、デコーダによってのトークンの処理の1部が並列に行われるかもしれない。 加えるに、「平行の」期日は同じくデコーダの複数性がパイプラインの次の段階に並列に解読されたインフォメーションを出力したという考えを含むかもしれない。
ここに、複数性を生み出すことについての文脈で使われるようにについて並列に期間「並列に」十分に同時にトークンの複数性に対応しているインフォメーションそして/あるいはロジックが作用するかもしれない選り抜きの(人たち・もの)が生み出す選り抜きのロジック(段階2そして/あるいは3)が解読されて同時に処理するかもしれない考えが十分に同時に出力された圧縮解除されたシンボルの複数性のために選ぶ組み込みを選ぶ。 下に記述されるように、選り抜きのロジックはインフォメーションに関係することを共有するそれを選ぶ異なったアウトプットによって圧縮解除されたシンボルのために並列に生成されている。
それ故に、一般的であって、さらに多くを減圧することのためのインフォメーショントークンが(そのために)トークンと結果の上に段階、行われた段階のオペレーションの中に載せられるかもしれない(の・もの・人)よりトークンはそれから次のステージで処理のためにパイプ記録の中に段階から掛け金で締められるかもしれない。 それぞれの段階で、インプットの複数性について「並列に」十分に同時のオペレーションを行うことに対してロジックのコピーがあるかもしれない。
例えば、最初の段階25501で、引き抜かれたトークンがそれぞれの可能性があるアウトプットバイトで段階のオペレーションを行って、2番目の3番目、そして4番目の段階での、デコーダがそこ(に・で)(そのために)ロジックの1コピーであるかもしれない(の・もの・人)に割り当てられる。 若干の若干の段階でのオペレーションが連続的な処理を利用してもよい属国を持っているかもしれないことを注意を払え。
例えば、最初の段階25501の2番目のデコーダに2番目のトークンを載せることは最初のデコーダで最初のトークンの荷積みによって生み出されてカウントと他のインフォメーションを利用するかもしれない。
この新奇な圧縮解除を理解するために、図32のテーブルはサンプルコードのために圧縮マスクとインデックスコーディングアルゴリズムを例証する。 代わりの化身で、他のコードが圧縮解除ユニットのデザインを変えるかもしれない。 1つの化身がコードが8ビットを使う1バイトを cmgpressing するコード以外図32に含めたすべてを含むかもしれない。 圧縮されたインプットデータで、コードが同じく「トークンである」と述べられるかもしれない。
図32のテーブルで見せられたコードで、図34での圧縮解除ツリーは1つのサイクルでのせいぜい8バイトのインプットを解読することを許す。 この例で、せいぜい8バイト(64ビット)がそれぞれの圧縮解除サイクルの図33の圧縮解除エンジンへのインプットデータとして圧縮されたデータから抽出される。 最も小さいコード化されたデータは8ビットだ、それで図34で、8バイトで示されたデコーダ(25521-25535)の最小数は8(64ビット / 8ビット)だ。 これらのデコーダのそれぞれが多くのデータインプットの1つが事前の圧縮されたデータに頼っているのを見ることができた。
図34がデコーダ段階25501を例証する、そしてそれは図33の圧縮解除エンジンの最初のステージだ。 圧縮解除の木は、図34で見せられて、次の段階の適切なデータを決定するためにそれぞれの段階において非常に速い解読することを利用する。 伯爵 (Count) とデータバイトアウトプット(図32)がなるべく次のステージのために掛け金で締められるウインドウインデックススタート (Start) 図33のパイプラインを解読する。 これはパイプラインを解読するアウトプットデータのアセンプリを必要とする。
望ましい Decode ブロックのもっと多くの細部が図35で見られることができる。
図35が図34の最初の段階デコーダの1つのロジックを例証する。 図35で、25553がそれほど十分に実証するチェック Valid ブロックビットはレジ係25555( − e)のために利用可能だ。 1(つ・人)あるいはそれ以上の解読者によって解読されるインプットデータから1(つ・人)あるいはそれ以上のコードを抽出した後で、十分なビット完全な印を作図するためのインプットデータでないかもしれない。 例えば、サイクルでインプットデータの8バイト(64ビット)を受け入れる上に記述された圧縮解除エンジンで、もし6つの10ビットのコードが最初の6つのデコーダーにロードされるなら、4ビットがもう64ビットのインプットデータを使っている例で完全な合計を組み立てるために、十分にではなく、インプットデータで置き残されるだろう、もし4 1O - ビットコードと1つの13ビットのコードが最初の5つのデコーダーにロードされるなら、11ビットがインプットデータで残される。 チェック Valid ブロック25553は11ビットに完全なコードがあるかどうか決定するために11ビットでそれからフラグインフォメーションをチェックするかもしれない(8、9あるいはすべてビットコード)。 もし完全なコードがあるなら、コードは次のデコーダでロードされる。 もしフラグインフォメーションが(13あるいは25ビットのコード)、そして次にビットがそうである11ビットがロードしないそして調査したより長く11ビットが不完全なコードであることを示すなら後にサイクルを解読する。 チェック Valid ブロックのためのテーブルは図 (Figures) 36a と 36b のテーブルで例証される。 望ましい化身で、チェック Valid 25553を通しての最も長いパスは3つの門であるべきである、そしてバイトチェック25555( − e)は、チェックがアウトプットであるから、ただ1つの門を加えるだけであるであろう可能にする。 Check 正当なロジック25553と図35でのバイトチェックロジック25555からのアウトプットは最上位ビットと6としてOが最下位ビットであることを示す。
データはインプットデータがチェック選り抜きの25555のインプットに基づかせた25557が多重通信であるロジックを生み出す。 せいぜい、1バイトチェック25555は正当なデータのためにアクティブになるべきだ。 代わりの化身が1バイト小切手が正当なデータのためにアクティブであることを確かめるためのこのデコーダに加えられるチェッカーの駒を含むかもしれない。 数字 36b のテーブルは Generate がデータインプット (Data Input) に基づいて出力する、そしてそれらに類似しているコードのために選り抜きのバイトチェックが図32で例証したデータを記述する。
圧縮解除エンジン550の段階25505がポインタを計算し始める瞬間、再び図33に言及する(同じく呼ぶ「選択する」)圧縮されたデータのために1の68ビットのパイプレジスタ25503で掛け金で締められたヒストリーの窓から適切なバイトまで。 それぞれのデコーダのために、段階2がインデックス、スタートカウント、正当なビット、1データバイトと正当なデータバイトがかんだインデックスを受け取る。 図33の化身で、段階2が8つのインデックス、8つのスタートカウント、8インデックス正当なビット、8データバイトと8データバイト正当なビット、ステージ1の中8つのデコーダのそれぞれからの(の・もの・人)を受け取るだろう。 ‖で‖1つ‖化身‖データ‖バイト‖ある‖通過する‖無しで‖なる‖使う‖によって‖段階‖2‖、‖で‖1つ‖化身‖、‖指数‖、‖使い始める‖数に入れる‖、‖指数‖効力がある‖ bit ‖、‖と‖データ‖バイト‖効力がある‖ bit ‖ことで‖それぞれの‖と‖デコーダ‖ある‖繰り返す‖ように‖予備‖選択する‖ロジック‖を見つけようと‖それぞれの‖と‖産出する‖バイト‖と‖段階‖2‖このように‖、‖で‖化身‖と‖図‖33‖、‖予備‖選択する‖ロジック‖を見つけようと‖それぞれの‖と‖1日‖6‖産出する‖バイト‖受信する‖指数‖、‖使い始める‖数に入れる‖、‖指数‖効力がある‖ bit ‖と‖データ‖バイト‖効力がある‖ bit ‖ことで‖それぞれの‖と‖8‖デコーダ‖で‖段階‖1つ‖。
最小のロジックで、選り抜きの下準備が段階425513の16アウトプットバイトのそれぞれのために計算されるかもしれない。 下準備は選択する144ビットのパイプレジスタ25507で掛け金で締められる。 それぞれ25507の中に掛け金で締められて選択する7ビットが(64の入り口の窓のために)シングルでビット余剰物をコード化するということである。 これらのシグナルは掛け金で締められた25507だ、そしてステージ3で次のユニット25509によって使われた。 1つの化身で意志を選ぶ、もし8データバイトの1つが、もしこのアウトプットバイトでのデータが他の類似の1(つ・人)あるいはさらに多くの結果であるなら、このアウトプットバイトとあふれのために使われるなら、もしウインドウ値がこのアウトプットバイト、64-71のために使われるなら、0-63の値を持つ(このデータで起こることを解読する。 3番目の段階25509は前の段階25505からあふれのそれぞれを抑制する。 もし活動していないなら、7ビット選り抜きの(人たち・もの)は変化していなくて渡される。 もしアクティブであるなら、正しい段階2つのデコーダ25505からの選り抜きの(人たち・もの)はこのアウトプットバイトで選り抜きの行の上に繰り返される。
圧縮解除の最終の段階、同じぐらい図33で例証された段階425513、はヒストリーウインドウからデータを選ぶ、あるいはデータバイトは初めからアウトプットデータを構築するための段階を通り越した。 次の(人たち・もの)が解読するアセンブルされるバイトがそれから(そのために)ヒストリーウインドウに加えられるアウトプットは自転車に乗って行く。
1つの化身で最初のステージは、サイクルでインプットデータからコードを解読する時、アウトプットバイトの数を考慮するかもしれない。 例えば、図33の化身の最大のアウトプットはサイクル毎に16バイトだ。 もし最初のデコーダで解読されている最初のコードが16アウトプットバイト以上の代理を務めるなら、最初の段階25501は最初のコードがそれとしての自転車がとる同じぐらい多くが最初のコードによって代理を務められてアウトプットバイトのすべてを圧縮解除する最初のデコーダでロードされる状態にしておくかもしれない。 他のデコーダでロードされるかもしれない他のコードが、圧縮解除されたシンボルがトークンから生成されるために目的地としてサポートするべき利用可能なアウトプットデータバイトがあるまで、解読されない。
例えば、もし最初のデコーダでロードされた最初のコードが24アウトプットバイトの代理を務めるなら、24アウトプットバイトの16が、最初のサイクルで、解読されるかもしれないそして2番目のサイクルでリング8のままでいる。 これは他のデコーダで他のコードのために8アウトプットバイトを残す。 さらに、最後の段階25513は、適切なアウトプットデータ集合が、もし1以下の6バイトがどんな1つのサイクルのためにでも解読されることができるなら、起こることができるように、データ正当なビットを含むかもしれない。
図37 − 最初の Calculating − は図37が例証する発明の1つの化身に従って計算することに対して最初の26012が発明の1つの化身によれば選んで、そしてあふれ出る論理を選んで、そしてあふれ出る。 1つの化身でこの論理は、図33で例証されるように、圧縮解除エンジンの2番目のステージ25505に含められる。 1つの化身に圧縮解除エンジン550にそれぞれのアウトプットバイトに2番目の段階に1つのロジック26012がある。 例えば、図33で例証された圧縮解除エンジンで、ステージ2、それぞれのアウトプットバイトでの(の・もの・人)にロジック26012の16があるだろう。 ロジック26012が最初のステージから図33で1の68ビットのパイプレジスタ25503で掛け金で締められた圧縮されたデータのためのヒストリーウインドウからの適切なバイトへのポインタの計算を始める。 化身で図37に示されて、それぞれのステージ2でのロジック26012がステージ1でそれぞれのデコーダーからインデックス26006とカウント26000のコピーを受け取る。 それぞれのステージ2でのロジック26012が同じくそれぞれのデコーダーからデータバイト Valid ビット26002とインデックス Valid ビット 260O4 を受け取る。
最小のロジックで、予備の選り抜きの 2601O がアウトプットバイトのそれぞれのためにステージ2で計算されるかもしれない、そしてもしその時が図33の 14l - ビットパイプレジスタ25507で掛け金で締められたなら、下準備は26010を選ぶ。 例えば、7ビットが(64項目のウインドウ、そして8データバイトのために) sigle でコード化する選り抜きの下準備がそうであるかもしれないそれぞれが余剰物26008をかんだ。 ヒストリーウインドウそして/あるいはデータバイトの他の数の他の大きさを持っている化身が1ビットの異なった数を必要とするかもしれない、そして下準備のための異なったナンバリング案が選択する。 26010がそうである下準備が選択する、図33に示されるように、ステージ3で次のユニット25509によって25507の中に掛け金で締められて、そして使う。 選択する、もしウインドウ値が、もし8データバイトの1つがこのアウトプットバイトのために使われるなら、このアウトプットバイトあるいは6471の値のために使われるなら、0-63の値を持つかもしれない。 余剰物ビット26008は、もし他の類似の1(つ・人)あるいはさらに多くがこのデータで起こって解読する選り抜きの26010が結果である下準備のデータであるなら、セットされるかもしれない。 この場合、インデックスは下準備を解決するための3がこのアウトプットバイトでもう1つのアウトプットバイトから選り抜きの(人たち・もの)まで選り抜きの適切な(人たち・もの)をまねることによって選ぶ段階で使われるかもしれない。
他の化身が32の項目から4096の(あるいはより大きい)項目まで、例えば、種々の大きさのヒストリーウインドウを使うかもしれない。 ヒストリーウインドウの大きさはデザインのために利用可能な門の数、段階4と切望される圧縮比率のタイミングによって決定されるかもしれない。 もっと多くのヒストリーウインドウ項目が典型的にもっと良い圧縮比率をもたらすかもしれない。 サイズ変更、インデックスの大きさ、下準備と決勝戦が選ぶヒストリーウインドウが同じく変化するかもしれない(時・から・につれて・ように)。 例えば、2048の項目を持っているヒストリーウインドウが11ビットのインデックスを必要とするだろう、13ビットの(11ビットインデックス、少しも、データバイトを示す1ビットが余剰物を示すために)選り抜きの下準備と12ビットの決勝戦が(インデックスのための11ビット、データバイトを示すための1ビット)を選ぶ。
1つの例でについて最初のデータバイトとデコーダが2番目の印を解読して、そして2番目のデータバイトへのポインタを出力してもよい1秒最初のデコーダーが最初のトークンと1ポインタアウトプットを解読するかもしれないかまれたあふれがセットされるかもしれない所を解読する。 3番目のデコーダーが最初そして2番目のトークンから最初そして2番目のデータバイトを含めて圧縮されたストリングを表す3番目の印を解読するかもしれない。 これらのデータとしてバイトはヒストリーウインドウでまだ現在の(人たち・もの)が解読するビット26008が3番目のデコーダのアウトプットバイトでのデータが(それ・そこ)で事前のデコーダの1つまでに定義されることを示す予定になっている余剰物じゃない。 3番目のデコーダのための2番目の段階の予備の選り抜きのアウトプットは3番目のステージで選り抜きで決勝戦の中に決意される。 最初が2番目のデコーダのアウトプットバイトを指し示すという状態で最初のデコーダのアウトプットバイトと第2に指さすという状態で、これで下準備が選ぶ例、2が3番目のトークンのために生成されるかもしれない。
図37で、もし選り抜きの下準備が1データバイトであるなら、余剰物ビット26008はセットされないだろう、最上位ビット(ビット6)はつけられるだろう、そして0-2が使われるかもしれないビットがアウトプットバイトが8データバイトのいずれに関係するか明示する。 もし選り抜きの下準備が1ウインドウバイトである、余剰物ビット26008勝利がセットされないなら、最上位ビット(ビット6)はつけられないだろう、そして0-5が使われるかもしれないビットがアウトプットバイトが64ウインドウバイトのいずれに関係するか明示する。
もし下準備についてこの下準備の前に選択する0-6が指定するかもしれないビットが選ぶ予備の(人たち・もの)がそれから選ぶビットが予定になっている余剰物がこの下準備のデータの場所を突き止めるために使われるなら、選択しろ。図37で、Nはロジック26012のためにアウトプットバイト数だ。 この例で、16アウトプットバイトがある、それでNはOと15の間に整数だ。 この例で、最初の段階に8つのデコーダがある。 1スタートカウント26000、1インデックス26006、と1データバイト正当なビットと1インデックス正当なビットがそれぞれのデコーダからのインプットだ。 デコーダのためのスタートカウントはステージ1でアウトプットバイトのインプット数にこのデコーダの上に生成されるアウトプットバイトの数を加えることによってすべての前のデコーダ(すなわち前のデコーダのためのスタートカウント)の上に生成されることを計算に入れている。 例えば、4つのデコーダ(0-3)がある、そしてデコーダOが1アウトプットバイトを解読するためにコードでロードされるとすれば、デコーダ1が3アウトプットバイトを解読するために規約を積まれる、デコーダ2が4アウトプットバイトを解読するために規約を積まれる、そしてデコーダ3が2アウトプットバイトを解読するために規約を積まれる。 デコーダOのためのスタートカウントは(0 + 1) = 1だ。 私がそうであるデコーダ(1 + 3) = 4のためのスタートカウント。 デコーダ2のためのスタートカウントは(4 + 4) = 8だ。 デコーダ3のためのスタートカウントは(8 + 2) = 10だ。
図37のブロック26001がN(このロジック26012のためのアウトプットバイト数)でデコーダのためにインプットスタートカウントを比較する。 ブロック26001がスタートカウント < = Nで最後のデコーダを選択する。 例えば、もし8つのスタートが0-7がそうであるデコーダ(136711141520)とN = 9(これが第10番目のアウトプットバイトである)から図37で26000を数えるなら、デコーダ4(スタートカウント = 11)が選択されるだろう。 これはそ(れ・こ)からこのアウトプットバイトが生成されるはずであるデコーダを選択するのに役立つ。
この例で、ブロック26001が3ビットのコード化されたデコーダ数とデコーダ数の8ビットの解読されたバージョンを出力する。 解読された版がアウトプットである8 - ビットは26003、26005、と26007を選ぶ、そしてそこでそれはデータバイト正当なビット26002を選んで、正当なビット 260O4 にインデックスを付けて、そしてデコーダがこのアウトプットバイトを生成することに関して26006にインデックスを付けるために使われる。
もし選択されたデコーダのためのデータバイト正当なビット26002がセットされ、そして選択されたデコーダのためのインデックス正当なビット26004が明確であるなら、26010(最下位ビット)とビット6(最上位ビット)がセットされる下準備の0-2が選ぶビットが予備の(人たち・もの)が選ぶことを示す数が出力されるコード化された3ビットのデコーダは1データバイトだ。64項目のヒストリーウインドウと前に記述された8つのデータバイト化身のために、データバイト選り抜きの値が8データバイトの1つを選ぶために距離64-71にあることを注意を払え。
もし選択されたデコーダのためのインデックス正当なビット26004がセットされ、そしてデコーダのためのデータバイト正当なビット26002が明確であるなら、事前の選り抜きの26010のビット6( MSB )がきれいにされる。 ナンバーNがインデックス26006から引かれるアウトプットバイト選択されたデコーダと調節されたインデックスが予備でビット0-5の上に産出される結果として生じることは26010を選ぶ。 例を通って、8インプットバイトを持っている圧縮解除エンジン、8つのデコーダ(0-7)、が16アウトプットバイト(0-15)と64項目のヒストリーウインドウ(0-63)であると思え。 もしデコーダOが4アウトプットバイトを生み出しているコードを解読することであるなら、アウトプットバイトOのためのロジック20012が4アウトプットバイトの最初のバイトがデコーダOの上にコードから生成されることに関して選り抜きの下準備を生み出すだろう。 もしデコーダOからのインデックス26006が16、そして次に16 − O = 16 − をであるなら。
これはアウトプットの最初のバイトコードからデコーダOの上に解読されることはヒストリーウインドウで入り口16から来るはずであることを意味する、入り口Oが最も最近の項目と項目であるところ(に・で)63が最も古い項目だ。 アウトプットバイト1のためのロジック26012が4アウトプットバイトの2番目のバイトがデコーダOの上にコードから生成されることに関して選り抜きの下準備を生み出すだろう。 2番目のバイトの、選り抜きの下準備は16 − 1 = 15だ。 アウトプットの2番目のバイトコードからデコーダOの上に解読されることはヒストリーウインドウで入り口15から来るはずだ。 継続して、下準備は第3のために選択する、そして4番目のアウトプットバイトは、アウトプットバイト2と3でロジック26012の上に生成されて、それぞれ14と13だ。
現在の圧縮解除サイクルでデータが生成されることに関してであることは選り抜きの存在が260の121つのロジックで生み出した下準備にとって可能だ、そしてそれでアウトプットバイト勝利のデータはまだヒストリーウインドウにない、この場合、インデックスからアウトプットバイト番号Nを引くことは否定的な結果を引き起こすだろう、そして余剰物ビット26008勝利が選り抜きで下準備にセットされる。 例えば、もしデコーダ3が3アウトプットバイトを生み出しているコードを解読しているなら、アウトプットバイト5は次の利用可能なアウトプットバイトだ、そしてデコーダ3のためのインデックスは私だ、その時アウトプットバイト5のためのロジック26012が1 − O = 1、1下準備バイト6が生み出すであろうアウトプットのための26012が1について選ぶロジック − について選り抜きの下準備 − 1 − 2つの = − 1 − の1の = Oと1下準備バイト7が生み出すであろうアウトプットのための26012が選ぶロジック − を生み出すだろう。 − 1の選り抜きの下準備がアウトプットバイトでのデータが現在の圧縮解除サイクルの最初のアウトプットバイトから来るはずであることを示す。 アウトプットバイト7のためにかまれた余剰物はこの選り抜きの下準備がまだヒストリーウインドウにないデータのためであることを示すことに定められるだろう。 ビット0-5の上の予備の選り抜きのアウトプットは下準備のいずれがこの下準備のデータへのポイントが選ぶ現在の圧縮解除サイクルで選択するか示すだろう。
ロジック26012の1つの化身で、データバイト正当なビット26002とインデックス正当なビット26004は NOR であるそうするであろう、そして NOR のアウトプット下準備の5つと6つがもし両方の正当なビットがデコーダのためにOであるなら選ぶビット、そして次に化身で64のヒストリーウインドウ項目と8データバイトで、71の上の値が有効じゃないという予備の選り抜きのノートが選ぶ5と6が(そのために)つけられるであろうビットにそうであるか、あるいはそうするであろう。 それで、この化身で5と6がつけた1ビットを持っているアウトプットバイトで選り抜きの下準備がデータがこの圧縮解除サイクルでアウトプットバイトで生成されていないことを示すために使われるかもしれない。 異なったヒストリーウインドウ大きさを持っている他の化身、アウトプットバイトのデータバイトの数、そして/あるいは数がデータが圧縮解除サイクルで1アウトプットバイトで生成されていないことを示すために他の無効な選り抜きの値を使うかもしれない。
38 − Converting − が決定的で選ぶフィギュアが選択する
図38が図33のステージ325509のような圧縮解除エンジン550の3番目の段階の1つの化身を描写する。 3番目のステージは下準備が前のステージからアウトプットバイトで26050を選ぶことを調べる。 もし下準備の(図37の26008)が選ぶかまれたあふれがセットされないなら、アウトプットバイト(図37の事前の選り抜きの26010のビット0-6)で選り抜きの7 - ビットは現在の圧縮解除サイクルで生成されてこれがこのアウトプットバイトでのデータがそうであることを示すもしかまれたあふれがセットされるなら変化していない次の段階に渡される。 選り抜きの下準備のデータは現在の圧縮解除サイクルでアウトプットバイトが選ぶ前のものの1つによって指し示されるだろう。 前のアウトプットバイトでの選り抜きの(人たち・もの)はこのアウトプットバイトで選り抜きの鉱山の上に repkicated される。 現在の(人たち・もの)が言及するべき選り抜きの(人たち・もの)のために解読する「事前である」が選択する余剰物がノーが選り抜きの(事前の選り抜きのO)がじゃないであろう最初のためにあるから万事整うまでかんだというメモ。 それで、変化していないステージ3を通して同じぐらい最終の予備の選り抜きのOパスが下準備のそれぞれを解決するためのロジックが次で選ぶ最終の選り抜きのOがインプットであるO.をO(下準備がN - 1を通して1を選ぶ)を選ぶよう選ぶ。
私が予備で確認して(そのために)ロジックの中に入力される最終の選り抜きのOと選り抜きの下準備が1を選ぶ。 もし私がそうである下準備のために上流になるまでかまれた余剰物が選り抜きでその時予備になったなら、私は最終の選り抜きの1として変化していなくて通過される。 もしかまれたあふれがセットされるなら、最終の選り抜きのOは、最終の(人たち・もの)が選り抜きの1で選択する(時・から・につれて・ように)、通される。 決勝戦がOを選ぶ、そして選り抜きの2が予備で確認して(そのために)ロジックの中に入力される私と下準備は2を選ぶ。 もし事前の選り抜きの2のためにかまれたあふれがセットされないなら、事前の選り抜きの2が最終の選り抜きの2として通される、もしかまれたあふれがセットされるなら、事前の選り抜きの2が決勝戦が選択するインプット(Oとl)のいずれが最終の選り抜きの2として出力されるはずであるか決定するために使われる。 一般に、この手順は予備のインプットが選択するNの au のために従われる。 それで、確認するためのロジックへのインプット決勝戦が(そのために)選択する選り抜きのN - 1が含む下準備がN - 2と事前の選り抜きのN - 1を通してOを選択する。 もし
余剰物ビットは事前の選り抜きのN - 1の予定になっていない、それで事前の選り抜きのN - 1が最終の選り抜きのN - 1として変化していなくて通される。 もしかまれたあふれがセットされるなら、事前の選り抜きのN - 1の内容は決勝戦が選択するインプットのいずれが価値として最終の選り抜きのN - 1のために使われるはずであるか決定するために使われる。
39 − Generatin − が生成されてアウトプットバイトを圧縮解除したフィギュアが選択する
図39が図33のステージ425513のような圧縮解除エンジン550の4番目の段階の1つの化身を描写する。 4、決勝戦が選ぶステージで、図38で描写されるように、3番目のステージから産出された26068が26064が最初のステージから通り越したヒストリーウインドウ26062からのバイトあるいはデータバイトを選ぶことによってアウトプットバイト26070をアセンブルするために使われる。 この化身で、それぞれのアウトプットバイト選択者26066がヒストリーウインドウ26062で64バイト(O - 63)の1つから選択してもよい、あるいは8バイトの1つから(64-71)データバイト26064で、1つの化身でヒストリーウインドウ26062とデータバイト26064が結合されたヒストリーウインドウ26060で結合されるかもしれない。 他の化身で、データバイトとヒストリーウインドウは別に保守されるかもしれない。 26068がそうである決勝戦が選択するヒストリーウインドウ26062あるいは26064がステージ1から通り越したデータバイトの中にインデックスを付ける。 次の(人たち・もの)が解読するアセンブルされる 26O70 がそうであるかもしれないバイトが(どんな前の圧縮解除サイクルでもからのアウトプットバイトの終わりに添えられる)アウトプットデータ流に送って、そしてヒストリーウインドウに挿入されるかもしれないアウトプットは自転車に乗って行く。 ステージ4が20070が適切なアウトプットデータ集合が、もし最大の数より少数であるなら、起こるようにバイト(この化身での16)について解読されるはずであるアウトプットバイトのそれぞれのために同じく(見せられない)データ正当なビットを含むかもしれないサイクルを解読する。 1つの化身で1アウトプットバイトで選り抜きの決勝戦での無効なインデックス値がアウトプットバイトがこの圧縮解除サイクルで正当なデータを含んでいないことを示すためにかまれてデータをクリアするかもしれない。 正当じゃないアウトプットバイトがアウトプットデータに行かせられるか、あるいはヒストリーウインドウで書かれないかもしれない。
図40 − 圧縮解除エンジンを通してのデータ流れ
図40が圧縮解除エンジン550の1つの化身を通してデータ流れを例証する。 圧縮解除エンジン550は圧縮されたインプットストリーム1000を受け取る。 1(つ・人)あるいはさらに多くが解読する 1OOO がそれから圧縮解除される圧縮されたインプットストリーム(あるいは圧縮解除)は、圧縮解除されたアウトプットストリームをもたらして、自転車に乗って行く。
第一歩として圧縮解除サイクルの、1時から圧縮されたデータ流1000からのNのトークンまでの1002が圧縮解除サイクルのために選ばれて、そして圧縮解除エンジン550で積み込まれるかもしれない、そしてそこでNはステージ1でデコーダの最大の数だ。 トークンはデータ流1000で名ばかりで初めから連続的に選ばれる。 1つの化身で、セクションが圧縮解除サイクルのインプットデータの役をするために圧縮されたデータ流 1OOO から抽出されるかもしれない、そしてトークンは引き抜かれたセクションから抽出されるかもしれない。 例えば、1つの化身で4バイト(32ビット)のセクションがとられるかもしれない、そしてもう1つの化身で8バイト(64ビット)のセクションがとられるかもしれない、1つの化身で910から920までのステップフィギュアで例証されるように、 43d が圧縮解除サイクルのためにNのトークンに1を選ぶために従われるかもしれない。 In one embodiment a token may be selected from the input data stream 1000 for the decompression cycle if 1) there is a decoder available (i.e., one or more decoders haven't been assigned a token to decode in the decompression cycle); and 2) the remaining bits in an input section of the compressed data comprise a complete token (after extracting one or more tokens from the input data, the remaining bits in the input data may not comprise a complete token), If any of the above conditions fails, then the decompression cycle continues, and the last token being examined (the one that failed one of the conditions) is the first token to be loaded in the next decompression cycle. なるべく、正確に方式を決められた印が今までにまったく拒絶されない;すなわち、どんな圧縮解除自転車勝利に関して考えられた最初のトークンとして圧縮解除サイクルに手渡されたトークンでもすべての条件付きの必要条件を満たす。 換言すれば、 1) デコーダが常に圧縮解除サイクルの始めにおいて利用可能であるだろう、そして 2) ビットでのインプットデータ大きさはビットで少なくとも最も大きい名ばかりの大きさと比べて同じぐらい大きい。
1Nに圧縮解除サイクルのためのトークンが最初のステップ1002で選択される途端に、トークンが渡される I to N は解読することのために11006を演出する。 1つの化身でステップ 1OO2 が段階の一部として行われるかもしれない1人圧縮解除エンジン550。 1つの化身で、1つの印が1つのデコーダに割り当てられる、そして1人の解読者が圧縮解除サイクルで1トークンを処理してもよい。 ステージ1がNデコーダを含むかもしれない。 なるべく少なくともインプットデータであるかもしれないトークンの最大の数を受け入れるのに十分の解読者がいる。 例えば、もしインプットデータが32ビットであり、そして最小名ばかりの大きさが9ビットであるなら、なるべく少なくとも3つのデコーダがある。 なるべく、デコーダの数はインプットデータでトークンの最大の数に等しい。 図34が8つのデコーダで圧縮解除エンジン550の化身を例証する。 図41-42は3つのデコーダで圧縮解除エンジン550の化身を例証する。 図35がデコーダの化身を例証する。 段階11006のデコーダーはXアウトプットバイトのそれぞれが圧縮解除サイクルで生成されるためにそれぞれのデコーダからのそれぞれの1コピーが段階21008に渡されるという状態で、スタートカウント、インデックス、正当なフラグと正当なデータがフラグを付けるインデックス、の中にインプットの印を解読する。
1のNにオリジナルのインプットデータバイトは段階1から結合されたヒストリーウインドウ1014までパスする。 1データバイトが、デコーダの上に解読されている印が圧縮されたデータを作った圧縮エンジンによってトークンで圧縮解除されたフォーマットにストアされた1バイトを表す場合に限り、正当だ。 この場合、圧縮解除されたバイトはデコーダのためにデータバイトでパスする、データバイトデコーダのための正当なビットがセットされる、そしてデコーダのためのインデックス正当なビットはきれいにされる。
2 1008が段階1つの 1OO6 からインプットに要して、そして予備で生成する段階が1で10に10が1つの圧縮解除サイクルで解読されるかもしれない1アウトプットバイトの最大の数であるアウトプットバイトを選ぶ。 段階2つの 1OO8 が同じく下準備が選択する2がそれから通り越すそれぞれの事前の選り抜きの段階のためにかまれたあふれを、そして段階31010に余剰物ビットを生成する。 段階31010が下準備のそれぞれのためのビットが選ぶ余剰物を点検する。 もし下準備について上流になるまでかまれたあふれがセットされないなら、選り抜きの下準備の中味は、もし正当なビットがアウトプットバイト、あるいはデータバイトの1つに(そのために)セットされるインデックスが、もしデータバイト正当なビットがアウトプットバイトの予定になっているなら、結合されたヒストリーウインドウに段階から11006を渡したなら、ヒストリーウインドウ1014で項目の1つにポイントする。 下準備がセットされてビットが誰の余剰物であるか選択する同じぐらい最終の4 1012が修正無しで選ぶ段階に渡される。 もしかまれたあふれがセットされるなら、選り抜きの下準備の内容は下準備が選択する他のいずれがこの選り抜きの下準備が参照するデータを生成しているか決定するために調べられる。 選り抜きの正しい下準備の内容はその時選り抜きでこの下準備の上に繰り返される、そして選り抜きの修正された下準備は決勝戦としての4 1012が選ぶ段階に渡される。 1つの化身で、ビットセットがただ事前の下準備に知らせるだけであるかもしれない余剰物で選り抜きの下準備がこの圧縮解除サイクルで選択する。 例えば、もしアウトプットバイト3のために選り抜きの下準備のためにかまれたあふれがセットされるなら、選り抜きの下準備は通り過ぎて生成されてデータを参照するかもしれない1人下準備が2を通してOを選んで、そして下準備にではなく完全に4を選ぶ(N - 1)。 1つの化身段階で2と3が1つの段階の中に結合されるかもしれない。
それが結合されたヒストリーウインドウ1014からバイト項目を抽出するために段階3つの 1O1O から受け取る決勝戦が選ぶ段階4 1012使用。 もしバイトあるいはデータバイトが過ぎ去ったいずれかのヒストリーウインドウへのポイントが1 1006を演出したなら、決勝戦は選択する。 感覚がない(人たち・もの)はビットについて選り抜きの決勝戦でヒストリーウインドウの中の項目の数そしてデータバイトの数によって決意している。 例えば、64バイトのヒストリーウインドウそして8データバイトが、決勝戦毎に7ビットが選り抜きであることを必要として、結合されたヒストリーウインドウで72の可能な参加を合計する。 他のヒストリーウインドウ大きさそして/あるいはデータバイトの数が異なった最終の選り抜きの大きさを必要とするかもしれない。 段階41012が結合されたヒストリーウインドウからデータを抽出して、そしてデータバイト10161の間そしてXの圧縮解除されたアウトプットのアウトプットを組み立てる。 段階41012がこのこの圧縮解除サイクルでのアウトプットデータバイトのためにXアウトプットデータバイトのそれぞれがもし1データバイトが産出されているなら示すべきデータ正当なフラグを使うかもしれない。 データ正当なフラグは、圧縮解除サイクルでアウトプットバイト(10)の最大の量を減圧することは常に可能じゃないかもしれないから、必要だ。 アウトプットバイト1016がそれからアウトプットデータ流に添えられて、そしてヒストリーウインドウ1014に書き込まれるかもしれない。 1つの化身で、もしヒストリーウインドウがいっぱいであるなら、最も年がいった参加者は新しいアウトプットバイト1016のために席を空けるためにヒストリーウインドウから変えられるかもしれない、あるいは代わりにヒストリーウインドウはリングバッファにストアされるかもしれない、そして新しい項目は最も古い項目に上書きするかもしれない。 圧縮解除サイクルは、インプットストリーム1000での印のすべてが減圧されるまで、繰り返されるかもしれない。
図41 − 32ビットインプットデータの acc tに3つのデコーダ段階
図41が3つのデコーダで段階(の・もの・人)の化身を例証する。 化身は図34で見せられた8つのデコーダで化身に類似している。 化身のために図41に示されて、インプットデータ1100は4バイト(32ビット)を含むだろう。 圧縮されたデータは図32で見せられたそれらに類似しているコードでコード化されるだろう、しかし1バイトを圧縮する8ビットのコードは与えられない。 それで、最小印あるいはコード、大きさが、トークンのために1の圧縮解除されたバイトを表す9ビットだ。 図41のインプットデータ1100はせいぜい3の完全なトークン(32/9 = 3、5一緒に残っているビット、)を含むかもしれない。 それで、この化身は圧縮解除サイクルのインプットデータから抽出されることができるトークンの最大の数を受け入れるために3つのデコーダを必要とする。
ビットがするこの化身: D24 でデコーダO1102に通り越される。 デコーダO1102が名ばかりのデコーダO1102のビット大きさがビット EO を通り越す1104にそれからビット大きさを通り越すと決定するために DO において始まってトークンのフラグフィールドを調べる:デコーダ11106への E22 (23ビット、最も小さい名ばかりの大きさ、9を差し引いたインプットデータ1100、32、でのビットの数)。 23ビットはビット D9 を含むかもしれない: D31 がもしデコーダO1102であるなら9ビットの名ばかりのビット D1O を解読している: D31 がもしデコーダO l102 であるなら10ビットのトークンあるいはビット D13 を解読している: D31 がもしデコーダO1102であるなら13ビットの印を解読している。 もしデコーダO1102が25ビットの印を解読しているなら、残っている7ビットは完全なトークンを含んでいない、それでビットがO l102 (25)が示すデコーダからこれで使われないことがそうであるデコーダ11106までデコーダ11106に手渡されたビットが解読するこれでの1104からの1 1106がサイクルと数を解読するデコーダにパスしない自転車に乗って行く。 もしデコーダ11106が1104からビットを受け取るなら、デコーダ11106がビットで最初のトークンの旗フィールドを調べる。 もしトークンの旗フィールドがトークンが25ビットのトークンであることを示すなら、トークンは完全じゃない、そしてデコーダ11106とデコーダ2つの 111O がこの圧縮解除サイクルで使われない。 もしトークンの旗フィールドがこれが9、10あるいは13ビットのトークンであることを示すなら、トークンはデコーダ11106に載せられる、そして使われたビットの合計の数は1108にそしてデコーダ2つの 111O に通り越される。 1108がデコーダ2つの 111O にビット FO : F13 (14ビット、最も小さい名ばかりの大きさの2倍、9を差し引いたインプットデータ1100、32、でのビットの数)を渡す)。 14ビットはビット E9 を含むかもしれない: E22 がもしデコーダ11106であるなら9ビットのトークン、ビット E1O を解読している: E22 がもしデコーダ11106であるなら9ビットのトークン、あるいはビット E13 を解読している: E22 がもしデコーダ11106であるなら13ビットの印を解読している。 デコーダ21110がそれから FO において名ばかりの大きさを決定し始めてトークンの旗フィールドを調べてもよい。 デコーダ2つの 111O がそれから名ばかりのビット大きさをトークンが完全であるかどうか決定するための(最初の2つのデコーダによってビットが使ったインプットから決定された)ビットの残っている数と比較するかもしれない。 もしトークンが完全であるなら、トークンはこの圧縮解除サイクルで解読することのためにデコーダ2つの 111O に載せられる。 もしトークンが完全じゃないなら、デコーダ21110がこの圧縮解除サイクルで使われない。
少数の荷積みのトークンの例が荷積み令状を例証するために与えられる。 もしインプットデータ1100が1ビットOで始まっている25ビットのトークンを含むなら a) O) 、それから、ただ7ビットだけデコーダOが積み込まれたあとのインプットデータ1100で25ビットのトークンを残される。 この場合、デコーダ1と2がこの圧縮解除サイクルでトークンで載せられない。 もしデコーダOが9、 1O あるいは13ビットの印、で積み込まれ、そしてインプットデータ1100での残っているビットが、(不完全なトークンでフラグフィールドから決定されるように)、不完全な25ビットのトークンであるなら、それでデコーダ1と2がこの圧縮解除サイクルで載せられない。 インプットデータ1100でのトークンの他のコンビネーションがデコーダ1と2が裕福であるか、あるいはすべての3つのデコーダで圧縮解除サイクルのために含みが多いという結果になるかもしれない。
4インプットバイト、3つのデコーダと4アウトプットバイトで 42a − 圧縮解除エンジンを計算しろ
数字 42a が4インプットバイト1120が32ビット、ステージ11122、と4アウトプットバイト1136での3つのデコーダを含むという状態で、圧縮解除エンジン550の化身を例証する。 この化身は図32で描写されるそれらに類似しているコード(印)を解読して、1の圧縮されたバイトをコード化するために使われた8ビットのコードを除去することに対して適当だ。
数字 42a が(この化身、4アウトプットバイトで)アウトプットバイトのそれぞれを生成することに対してステージ21126、ステージ31130とステージ41134、に平行したロジックがあることを説明する。
1(つ・人)あるいはそれ以上のトークンがインプットバイト1120から抽出されて、そして段階11122でデコーダに載せられる。 印は解読者によって解読される、そしてスタートカウントインデックス、正当なインフォメーション1124が渡される正当なインデックスとデータが2 1126を演出する。 (示されない)データバイトインフォメーションが同じくデコーダのために作り出されて、そして段階41134で使用のために完全に渡されるかもしれない。 それぞれのデコーダからのインフォメーション1124はそれぞれのアウトプットバイトで段階2つのロジックにコピーされる。 2 1126が予備で生み出す段階が1124が段階11122から過ぎ去ったインフォメーションから1128を選ぶ。
下準備が選択する段階2 1126パスが3 1130を演出する。 1128が段階21126から通り越した下準備が選択する決勝戦が1132を選ぶ3 1130が生み出す段階。 見せられるように、1アウトプットバイトで1の1301つのステージ3ロジックの上に生成された最終の選り抜きの1132はすべての次のアウトプットバイトで段階3つのロジックに渡される。 これは余剰物ビットセットがアウトプットバイトでのデータが現在の圧縮解除サイクルで生成されていることを示すという状態で、事前の選り抜きの1128に正しいアウトプットバイトがこのアウトプットバイトで選り抜きの決勝戦として用いられるために選り抜きの決勝戦をまねることによって決意されることを許す。 1132がそうである決勝戦が選択する段階に4 1134を渡す。 (見せられない)ヒストリーウインドウあるいはデータバイトが段階11122でデコーダから渡して、そして選択されたデータをコピーする決勝戦が1132を項目を選ぶよう選ぶ4 1134がインデックスインフォメーションを使うステージがバイト1136を産出した。 アウトプットバイト1136がそれからアウトプットデータに書き込まれる(見せられない)かもしれなくて、そして同じく最近のヒストリーウインドウ項目としてヒストリーウインドウに書き込まれるかもしれない。
ステージ1での使われたデータ Calculation ロジック1123が現在の圧縮解除で生成されているアウトプットバイトのカウントを保守して、そして同じく数の、解読されて、そして現在の圧縮解除サイクルで減圧されているトークンのカウントを保守するために使われるかもしれない。 このインフォメーションはインプットバイト1120引き抜くことの前に圧縮されたデータを変えることに対してステージ1で使われる後の圧縮解除サイクルで。 使われたデータ Calculation ロジック1123がさらに圧縮解除サイクルが数字 42b で記述した例によって説明される。
42b − 例圧縮解除 − を計算しろ
数字 42b が、数字 42a で例証されるように、圧縮解除エンジン550の化身にインプットの例圧縮解除を例証するために使われる。 この例で、3トークンがインプットバイト1120から抽出された。
最初のトークン、2の圧縮されたバイトを表している alO - ビットのトークン、はデコーダOに載せられる。 2番目のトークン、3の圧縮されたバイトを表している alO - ビットのトークン、はデコーダ1に載せられる。 3番目のトークン、1の圧縮解除されたバイトを表している a9 - ビットのトークン、はデコーダ2に載せられる。 デコーダOが最初のトークンのためにインフォメーション(スタートカウント = 2、インデックス = iO 、正当なインデックス = (本当の)1、(偽りの)データ正当な = O)を生み出す。 スタートカウント(2)はデコーダ1に渡される。 デコーダlが2番目のトークンのためにインフォメーション(スタートカウント = 5、インデックス = 11、正当なインデックス = 1、データ正当な = O)を生成する。 スタートカウントはデコーダOとデコーダ1(2 + 3 = 5)のためにアウトプットバイトカウントの金額だ。 スタートカウント(5)はデコーダ2に渡される。 デコーダ2が3番目のトークンのためにインフォメーション(スタートカウント = 6、インデックス = d2 、インデックス正当な = O、正当なデータ = 1)を生成する。 この例で(i)から始まっているインデックスがヒストリーウインドウで項目へだ、そして(d)から始まっているインデックスがデータバイトである。
段階21126が4アウトプットバイトのために1124が予備で生成するべき1 1122が選ぶステージでデコーダから生み出したインフォメーションを使う。 2アウトプットバイトがデコーダOで名目上で初めから生み出されている。
アウトプットバイトOのための段階2つのロジックはインフォメーション1124を調べて、そしてそれが最初のトークンで圧縮された最初のバイトで事前の選り抜きの1126を生成するはずであると決定する。 アウトプットバイトOのための予備の選り抜きのアウトプットi128はインデックス = iO だ。 アウトプットバイト1のための段階2つのロジックはインフォメーション1124を調べて、そしてそれが2番目のバイトでの選り抜きの1 126が最初のトークンで圧縮した下準備を生成するはずであると決定する。 アウトプットバイトOのための予備の選り抜きのアウトプット1128はインデックス = ( iO − 1 − )だ。 アウトプットバイト数はこのアウトプットバイトで実際のインデックス数を生み出すためにオリジナルのインデックスから引かれる。 それで、下準備が最初のトークンから作り出されるバイトが最初の2アウトプットバイト(そのために)生成されるアウトプットのために選択する。 アウトプットバイト2のための段階2つのロジックはインフォメーション1124を調べて、そしてそれが2番目のトークンで圧縮された最初のバイトで事前の選り抜きの1126を生成するはずであると決定する。 アウトプットバイト2のための予備の選り抜きのアウトプットi128はインデックス = ( il − 2 − )だ。 アウトプットバイト3のための段階2つのロジックはインフォメーション1124を調べて、そしてアウトプットバイト3のための予備の選り抜きのアウトプット1128が( − 3を il しろ)インデックス = である名ばかりの秒に圧縮された2番目のバイトでそれが事前の選り抜きの1126を生成するはずであると決定する。
この圧縮解除サイクルで、バイトが(今まで)そうであったアウトプットが予備で生み出したものであったすべては選択する。 しかしながら、2番目の印と3番目の印によって表されるデータの au によって表されるデータの若干がこの圧縮サイクルで圧縮解除されない。 これらのトークンの圧縮解除が1(つ・人)あるいはそれ以上の次の圧縮解除サイクルで完了されるだろう。
この例で、1128がそうである下準備が選択する1132が産出される3 1130と決勝戦が選ぶ段階によって選り抜きの下準備が決勝戦をまねて解決される134が、もし下準備が1アウトプットバイトで1 128を選ぶなら1余剰物ビットがその時(それに)なるようにする私がアウトプットバイトで選り抜きの決勝戦として用いられるために前のアウトプットバイトからアウトプットバイトまで選ぶ段階4を調べる。 もし事前の選り抜きの1128のためにかまれたあふれがセットされないなら、事前の選り抜きの1128は決勝戦としての1 134がアウトプットバイト(そのために)1132を選ぶ段階3を通ってパスする。
ステージ1で、圧縮解除サイクルに載せられたトークンのための大きさインフォメーションが調べられるかもしれないカウントとトークンがデータ計算論理1123年を使った。 もし1(つ・人)あるいはそれ以上の印が完全に減圧されたなら、トークンのビットの合計の数は次のインプットバイト次の圧縮解除サイクルのための1120を一列に並べるために圧縮されたデータを変えるために使われる。 部分的に処理されたトークンから生成されたアウトプットバイトの数の計算がいずれの部分的に処理されたトークンで表されるバイトが前の圧縮解除サイクルで圧縮解除される最初のバイトであるか決定するために次の圧縮解除サイクルで段階11122で使われるかもしれない。 例で数字 42b に示された、最初の印は圧縮解除サイクルで完全に減圧された。 最初のトークンの大きさは10ビットだ、それで圧縮されたデータはインプットバイト次のサイクルのための1120を一列に並べるために変えられた I O ビットであるかもしれない。 2番目の印によって表される3バイトの2つが圧縮解除サイクルで圧縮解除された、それで2のバイトカウントが2番目のトークンの圧縮解除を続けるために次の圧縮解除サイクルで使われる。
次の圧縮解除自転車がスタートする時、トークンが新たに一列に並べられたインプットバイト1120から抽出されて、そしてサイクルのためにデコーダで積み込まれる。 この例で、内金の、含みが多い秒デコーダで私は最初の圧縮解除サイクルで、新しい圧縮解除サイクルでデコーダOで載せられる。 3番目のトークンは、最初の圧縮解除サイクルでデコーダ2に載せられて、新しい圧縮解除サイクルでデコーダ、i、に載せられる。 もしインプットバイト l120 での次のトークンが完全なトークンであるなら、それは新しい圧縮解除サイクルのためにデコーダ2でロードされるだろう、新しい圧縮解除サイクルで、事前の選り抜きの1128が2番目のトークンで圧縮された3番目のバイトでアウトプットバイトOのために生成されるだろう。
選り抜きの1128が(そのために)生成されるであろう下準備が3番目のトークンでデータバイトでバイトiを出力した。 もしデコーダ2に減圧されている印があるなら、事前の選り抜きの1128がトークンで圧縮された最初のバイトでアウトプットバイト2のために生成されるだろう。 もしデコーダ2で減圧されている印が1の圧縮されたバイト以上を表すなら、事前の選り抜きの1128がトークンで圧縮された2番目のバイトでアウトプットバイト3のために生成されるだろう。
もしデコーダOで解読されている印が圧縮解除されてNを表すなら、バイトと圧縮解除エンジンはサイクルでせいぜいMアウトプットバイトを圧縮解除することができる、それで印はN/M圧縮解除で完全に減圧されることができる
そこにN/Mが、もしNがM.によって平等に可分じゃないなら、次の最も高い整数に集められるサイクル。 図 42b 、M = 4で例証された化身で。 25ビットのトークンが、図32で例証されるように、最高4096のシンボルを表すことができる、数字 42b で例証された化身で、完全に印を減圧するのに4006/4 = 1024のサイクルを要するだろう。 もし1バイト圧縮解除されてNを表しているトークンが圧縮解除サイクルで部分的に減圧されるなら、ある場合にはそれは減圧するのにN/M + Iサイクルを要するかもしれない。 例えば、図33で例証された圧縮解除エンジン550の化身で、もし4096のシンボルを表している25ビットのトークンが初めにデコーダOに載せられるなら8インプットバイト(64ビット)、8つのデコーダと16アウトプットバイト、がある、完全に印を減圧するのに4096116 = 256のサイクルを要するだろう。 もしトークンが初めにデコーダ1に載せられ、そしてデコーダOに載せられたトークンがトークンから私が勝つデコーダで16以下のシンボル(例えば、8)、そして次に最初の8つのシンボルを表すなら、最初のサイクルで減圧されろ。 名ばかりの勝利は2番目のサイクルでデコーダOに載せられる。 印によって表される残っている4088のシンボルは4088/16 = 256のサイクル(分数は切り上げられる)で減圧されるだろう。 それで、完全に印を減圧するのに257のサイクルを要するだろう。
1つの化身で、印が多数のサイクルの上に減圧されている(時・から・につれて・ように)、生成される残っているアウトプットシンボルは段階1でそして中古のデータ Calculation 1123に他のデコーダに出力されるかもしれない。 これは他の解読者が、利用可能なアウトプットバイトがあるまで、印を解読するのを阻止するかもしれなくて、そして同じくインプットデータが、印が完全に減圧されるまで、変えられるのを阻止してもよい。 若干の化身で、アウトプットバイトの最大の数が印がセーブするべきこのサイクルで圧縮解除を完了しないであろうと合図するために解読者によって出力されるかもしれないより大きい番号がビットを出力した。 例えば、数字 42b で例証された化身で、5がデコーダO勝利で含みが多い印が現在の圧縮解除サイクルで完全に減圧されないことを示すためにデコーダOによって産出されるかもしれない。 5を産出することは3ビットをとる、他方4096を産出することは12ビットをとるだろう。
~ 43a を計算する 43k − 平行した圧縮解除エンジンを記述しているフローチャート −
43a - 43k が圧縮解除エンジン550の化身で平行した圧縮解除処理の化身を記述しているフローチャートを例証すると思う。
43a − 平行した圧縮解除エンジンのオペレーション − を計算しろ
数字 43a が平行した圧縮解除エンジン550の化身で圧縮解除処理の化身を例証するレベルが高いフローチャートだ。 平行した圧縮解除エンジン550が減圧されるために圧縮されたデータ900を受け取る、そしてアウトプットがデータ970を圧縮解除した。 圧縮されたデータ900は圧縮解除されたデータ970の圧縮された表示だ。 圧縮されたデータ 90O が1(つ・人)あるいはそれ以上のトークンを含むかもしれない。 それぞれの圧縮されたデータ900でのトークンが圧縮解除されたデータ970で1(つ・人)あるいはそれ以上の圧縮解除されたシンボルのコード化された記述であるかもしれない。 圧縮されたデータ900がいろいろな圧縮方法のいずれによっても圧縮されたかもしれない、それは下記を含む、しかし並列、そして連続的な圧縮方法に制限された。 43b - 43k がより大きい詳細で数字 41a のフローチャートを例証すると思う
43b − 並列圧縮解除方法 − を計算しろ
数字 43b が数字 43a の平行した圧縮解除エンジン550の1つの化身で行われた並列圧縮解除方法の化身を例証する。 数字 43b が圧縮されたデータが調べられて、そしてそれぞれのサイクルで並列に圧縮解除された圧縮されたデータから一連のサイクルで、1(つ・人)あるいはそれ以上のトークンで圧縮解除されるかもしれないことを説明する。 ブロック906で、平行した圧縮解除エンジンは圧縮解除されたデータからトークンの複数性を調べるかもしれない。 トークンの複数性は並列に調べられるかもしれない、i、e.、が1トークン以上一度に調べられるかもしれない、もしすべての圧縮されたデータでの印が圧縮解除エンジンによって減圧されたとブロック906で決定されるなら、圧縮解除プロセスが止めるかもしれないブロック932で、もし調べられて、そして減圧されるトークンがあるとブロック906で決定されるなら、トークンは調べられる、そしてブロック906で印から抽出されたインフォメーションが934を妨げるために合格されるかもしれない。 1つの化身で、印から抽出されたインフォメーションは並列に934を妨げるために合格される。
ブロック934で、906がそうであるかもしれないブロックが複数性を生み出したものであった中に印から抽出されたインフォメーションは選択する、あるいはポインター、それは結合されたヒストリーウインドウでシンボルを示す。 結合されたヒストリーウインドウは圧縮解除エンジンの前のサイクルから圧縮解除されたシンボルを含むかもしれない。 前の圧縮解除サイクルから圧縮解除されたシンボルを含んでいる結合されたヒストリーウインドウの部分はヒストリーウインドウあるいはヒストリーテーブルであると述べられるかもしれない。 結合されたヒストリーウインドウは現在の圧縮解除サイクルから同じく圧縮解除されたシンボルを含むかもしれない。 現在の圧縮解除サイクルからの圧縮解除されたシンボルは「データバイトである」と述べられるかもしれない。 圧縮の間に、1(つ・人)あるいはそれ以上の圧縮解除されたシンボルが圧縮されていないかもしれなくて、そしてトークンで圧縮解除された形式にしまっておかれるかもしれない。 圧縮解除エンジンは圧縮解除されたシンボルを含んでいる印を認識して、印から圧縮解除されたシンボルを抽出して、そして結合されたヒストリーウインドウ変化していない人たちに圧縮解除されたシンボルを手渡す。 これ、現在のサイクルで減圧されている印から前の圧縮解除サイクルあるいは圧縮解除されたシンボルからあるいは圧縮解除されたシンボルまで934が向けるかもしれないブロックで生成されて選択する。
ブロック954、圧縮解除エンジン使用で1(つ・人)あるいはさらに多くを引き抜くためにブロック934で生成されて選択する
通り過ぎて指し示されてシンボルを圧縮解除するヒストリーウインドウから選択して、そして圧縮解除されたアウトプットデータ970に引き抜かれた圧縮解除されたシンボルをコピーする。 圧縮解除されたシンボルはアウトプットデータ970について終わりまで付加されるかもしれない。 アウトプットデータはアウトプットデータ流であるかもしれない、すなわち、データは、それが減圧される、あるいは代わりにアウトプットデータ970が、全部の圧縮されたデータ900が圧縮解除されるまで、リリースされない圧縮解除されたアウトプットファイルであるかもしれない(時・から・につれて・ように)、求めることプロセスに外に流れ転送されるかもしれない。
ブロック960で、現在の圧縮解除サイクルからの圧縮解除されたシンボルはヒストリーウインドウに書き込まれるかもしれない。 もしヒストリーウインドウがこの圧縮解除から圧縮解除されたシンボルを書いて自転車が前ヒストリーウインドウから動かされるかもしれない前の圧縮解除からの楽しみ、最も古いシンボルの1(つ・人)あるいはさらに多くであるなら
自転車に乗って行け。 最も古いシンボルはヒストリーウインドウから変えられるかもしれない、あるいは代わりにヒストリーウインドウは「リングバッファ」であるかもしれない、そして最も古いシンボルは新しいシンボルによって上書きされるかもしれない。 43c - 43k がより大きい詳細で数字 43b のフローチャートを例証すると思う
並列にトークンの複数性を 43c - 調べている人物
数字 43c が並列に圧縮されたデータ900からトークンの複数性を調べることのための方法の1つの化身を例証している数字 43b のブロック906の上に膨張する。 ブロック908で、現在の圧縮解除サイクルで並列に減圧される1(つ・人)あるいはそれ以上のトークンが圧縮されたデータ900から抽出されるかもしれない。 トークンはそうであるかもしれない
データを圧縮した圧縮エンジンによって圧縮されて最初のトークンにおいて始まって、そして圧縮エンジンによって圧縮された最後のトークンにおいて終わって圧縮されたデータから抽出された。 トークンの最大の数が1つのサイクルで減圧されるかもしれない。 例として、図33で例証された圧縮解除ロジックは圧縮解除サイクルで8トークンの最大限を受け入れる。 なるべく、圧縮解除エンジンがトークンの最大の数以下しか圧縮解除サイクルで受け入れないかもしれない。 それで、図33で例証された圧縮解除ロジックは、ただ1だけのトークンが減圧させるために残される時、例えば、最後の圧縮解除サイクルでの圧縮解除サイクルで名ばかりの(の・もの・人)の最小限を受け入れる。 もしトークンが圧縮解除サイクルで圧縮され得るより多くの圧縮解除されたアウトプットシンボルを表すなら、それは完全に印を減圧するための1つの圧縮解除サイクルよりさらに撮影に勝つ。
トークンでのインフォメーションがトークンを引き抜くことにおいて使われるかもしれない。 例えば、トークンの大きさと印によって減圧されるシンボルの数はトークンを引き抜くことにおいて使われるかもしれない、1つの化身で、トークン:否の大きさはトークンのビットで大きさだ。 数字 43d がより大きい詳細でトークンを引き抜くプロセスの1つの化身を例証する。
ブロック924で、この圧縮解除サイクルのために引き抜かれたトークンは並列に調べられるかもしれない、そしてトークンについてのインフォメーションが圧縮解除サイクルで使用のために生成されるかもしれない。 名ばかりの組み込みから抽出されるかもしれない、しかし「このトークンが表す圧縮解除されたシンボル、データバイトインフォメーションとインデックスインフォメーションの数を表しているカウント」に制限されないインフォメーションの例。 データバイトインフォメーションが、もしこのトークンが圧縮エンジンによって圧縮されなかったシンボルを表すなら、圧縮解除されたシンボルを含むかもしれない。 データバイトインフォメーションが同じく1データバイトこのトークンのためのデータバイトが正当であることを示している正当な板石を含むかもしれない。 1つの化身で、データバイト正当な板石が、もしデータバイトが正当じゃないなら、もしデータバイトが正当で、そして定められていない(O)なら、つけられる1ビット(1)であるかもしれない。 インデックスインフォメーションがインデックスを含むかもしれない。 1つの化身でインデックスは圧縮解除されたデータ970におけるポジションからの差し引き計算がこのトークンでのこれでのインフォメーションからポジションにコピーされる最初の前に常気圧の中に戻されて、そして圧縮解除されたデータ970にストアされた圧縮解除されたシンボルまで減圧される最初の圧縮解除されたシンボルを受け取ると申し立てるかもしれない。 1つの化身で1(つ・人)あるいはそれ以上の圧縮解除サイクルからの前に減圧されたシンボルはヒストリーウインドウにあるかもしれない、そしてインデックスのための最大の値はヒストリーウインドウの長さと関係があるかもしれない。 1つの化身でインデックス正当なフラグは、もしインデックスが正当じゃないなら、もしインデックスが正当で、そして定められていない(O)なら、つけられる1ビット(1)であるかもしれない。 数字 43e がより大きい詳細で並列にトークンからインフォメーションを生成するプロセスの1つの化身を例証する。
−−並列に減圧される1(つ・人)あるいはそれ以上のトークンを引き抜いて−− 43d を計算しろ
数字 43d が数字 43c のブロック908の上に広がって、そして圧縮されたデータ900から並列に減圧される1(つ・人)あるいはそれ以上のトークンを抽出することのための方法の1つの化身を例証する。 数字 43d のブロック910で、方法は減圧される圧縮されたデータ900にもしもっと多くのトークンが残っているならもっと多くのインプットデータ、i、e.、があるかどうか決定する。 もしそうであるなら、それからブロック912で方法はデコーダが利用可能であるかどうか決定する。 もしデコーダが利用可能じゃないなら、すべてのデコーダは減圧されるトークンを割り当てられた、そして圧縮解除サイクルは数字 43c のブロック924で継続する。
もしデコーダがブロック912で利用可能であると決定されるなら、方法は14から920までののブロック9に進むかもしれない。 ブロック14から920までの9が流れで使うべき900が圧縮されたデータのどれだけを解読するか決定するかもしれなくて、そして同じく流れで使うべきデコーダーが何(個・人)を解読するか決定してもよい。 1つの化身で、914から920までのブロックが段階で行われるかもしれない1人図33で例証された圧縮解除エンジン。 ブロック914で、方法は圧縮されたデータを表しているトークンの大きさを決定するかもしれない、ブロック915で、方法はそれが完全なトークンであるかどうか見るためにトークンを調べるかもしれない。 もしトークンが圧縮されたデータのセクション、例えば32ビットのセクション、からデコーダに載せられているなら、少なくとも1のトークンを引き抜いた後で、インプットデータでの残っているビットは全部のトークンを含まないかもしれない。 ブロック914で決定されたトークンの大きさは完全なトークンがあるかどうか決定するためにインプットデータで左にビットの数と比較してであるかもしれない。 もしトークンが完全じゃないなら、方法は数字 43c の924をふさぎ続けるかもしれない。
ブロック916で、方法はこのトークンの圧縮解除によって生成されるであろうシンボルの数を決定するかもしれない。 ブロック918で、方法は圧縮されたデータ900での次の圧縮されたトークンをこのプロセスによって強いられるためにアクセス可能であるようにするためにトークンの大きさによってインプットデータを動かすかもしれない。 インプットデータがシフトすることは、圧縮解除自転車が何(個・人)の印がこのサイクルで完全に減圧されるであろうか決定するまで、起こらないかもしれない、そしてデータはこのサイクルですべての完全に減圧された印のビットで完全な大きさによって変えられるかもしれない。 移行することは次の圧縮解除サイクルのインプットデータを準備するかもしれない。 ブロック920で、方法は最大のアウトプット幅より1つの圧縮解除サイクルのために(調べられている現在のトークンを計算に入れて)この圧縮解除サイクルで減圧されるためにシンボルが勝つさらに多くが印によって減圧されるかどうか決定するかもしれない。 すでにトークンの圧縮解除によって引き起こされる圧縮解除されたシンボルの数がこの圧縮解除サイクルのために引き抜いた1つの自転車マイナスで圧縮解除されるかもしれない圧縮解除されたシンボルの最大番号は調べられて現在トークンから減圧されるかもしれないシンボルの最大の数をもたらす。 もしアウトプット幅が立ち向かわれるか、あるいは超えられたなら、圧縮解除サイクルはデコーダに割り当てられて調べられて現在のトークン無しで継続するかもしれない。 化身、トークンが部分的に感覚がなくて1最大限それに保険を掛けるための圧縮解除サイクルで圧縮されるかもしれない(の・もの・人)でシンボルがサイクルで減圧される。 最初の名ばかりの完全に減圧されたのではなく勝利は次の圧縮解除サイクルで引き抜かれる最初のトークンだ。 もしアウトプット幅がブロック920で決定されるように立ち向かわれてか、あるいは超えられなかったなら、方法はブロック91Oに戻る、そしてブロック910-920が、(これ・それ)以上のデータがないまで、繰り返されるか、あるいはアウトプット幅がそうになるまで会われるか、あるいは超えられるかもしれない。
ブロック922で、もしブロック910に決定されるように(これ・それ)以上のインプットデータがない、しかし1(つ・人)あるいはそれ以上の印が解読することのためにデコーダに割り当てられたなら、それから圧縮解除サイクルは数字 43c のブロック924で続く。 これは、圧縮されたデータ900に(これ・それ)以上のトークンがない時、ケースをカバーする、しかしトークンが(それ・そこ)でデコーダに割り当てられた1(つ・人)あるいはさらに多くが910-920を妨げる。 ブロック922で、もしブロック910に決定されるように(これ・それ)以上のインプットデータがない、そして印がデコーダに割り当てられなかったなら、圧縮されたデータの圧縮解除は完全だ、そして圧縮解除が止まる。
−−並列にカウントとインデックスあるいはデータバイトインフォメーションを生成して−− 43e を計算しろ
43e が数字 43c のブロック924の上に広がって、そして並列にトークンの複数性からインフォメーションを生成するプロセスの1つの化身を例証すると思う、1(つ・人)あるいはそれ以上のそれに類似しているロジックが図34で例証したデコーダによって現在の圧縮解除サイクルで並列に解読されている印から抽出されるかもしれないいくつかの項目が例証される。
数字 43e のブロック926で、カウントがそれぞれの印が現在の圧縮解除サイクルで解読されることに関して生成されるかもしれない。 トークンのためのカウントはトークンの圧縮解除が引き起こすであろう圧縮解除されたシンボルの数を表すかもしれない。 トークンのためのカウントは1(人・つ)と印によって表されることができるシンボルの最大の数の間にあるかもしれない。 例えば、図32のテーブルで、25ビットのトークンが最高4096の圧縮解除されたシンボルを表すことができる。 圧縮解除されたシンボルを表しているトークンのためのカウントは1であるだろう。
ブロック928で、インデックスインフォメーションがそれぞれの印が現在の圧縮解除サイクルで解読されることに関して生成されるかもしれない。 インデックスインフォメーションはそれぞれの印が減圧されることに関して1(つ・人)あるいはそれ以上の減圧されている印とインデックス正当なフラグのためにインデックスを含むかもしれない。 正当なインデックスが、もしトークンが1(つ・人)あるいはそれ以上の圧縮されたシンボルを表すなら、トークンのために生成されるかもしれない。 1つの化身で、インデックスは最初の圧縮解除されたシンボルの圧縮解除されたデータ970における目的地ポジションからのシンボルでの距離がこのトークンから前に常気圧の中に戻されて、そして圧縮解除されたデータ970にストアされた最初の圧縮解除されたシンボルまで減圧されると申し立てるかもしれない。
1つの化身で、1(つ・人)あるいはそれ以上の圧縮解除サイクルからの前に減圧されたシンボルはヒストリーウインドウにしまっておかれるかもしれない、そしてインデックスはヒストリーウインドウで前に圧縮解除されたシンボルに対する差し引き計算であるかもしれない、不変のインデックス正当なフラグが少しもそうであるかもしれない1つの化身で(1)もしインデックスが正当で、そして定められていないなら、 (O) もしインデックスが正当じゃないなら、インデックス正当なフラグは(そのために)インデックスが生成される印の予定になっているかもしれない。 1つの化身で、インデックス正当なフラグは、もしインデックスが正当じゃないなら、もしインデックスが正当で、そして定められていない(O)なら、つけられる1ビット(1)であるかもしれない。
ブロック930で、データバイトインフォメーションが1(つ・人)あるいはそれ以上の印が現在の圧縮解除サイクルで解読されることに関して生成されるかもしれない。 トークンのためのデータバイトインフォメーションが、もしこのトークンが圧縮エンジンによって圧縮されなかったシンボルを表すなら、圧縮解除されたシンボル(データバイト)を含むかもしれない。 データバイトインフォメーションが同じく1データバイトこのトークンのためのデータバイトが正当であることを示している正当な板石を含むかもしれない。 1つの化身でデータバイト正当な板石が、もしデータバイトが正当じゃないなら、もしデータバイトが正当で、そして定められていない(O)なら、つけられる1ビット(1)であるかもしれない。
複数性を 43f - 生み出している Fi eについて結合されたヒストリーウインドウでシンボルに選択する
43f が数字 43b のブロック934の上に拡大して、そしての並列に複数性を生み出すプロセスの1つの化身を例証するフィギュアが結合されたヒストリーウインドウでシンボルに選択する。 ブロック936で、下準備が選択する1(つ・人)あるいはさらに多くがこの圧縮解除サイクルのためにブロック924で生成されたインフォメーションを使って生成されるかもしれない。 選り抜きの下準備がシンボルのそれぞれが現在の圧縮解除サイクルで常気圧の中に戻されることに関して生成されるかもしれない。 1つの化身で選り抜きの下準備がひとつのビットあふれを持っている調節されたインデックスだ。 インデックスは前の圧縮解除されたシンボルでシンボルのストリングのスタートしているインデックスから差し引き計算によって調節される。 選り抜きの下準備の大きさはヒストリーウインドウの結合された大きさ、(デコーダの数によって決定された)データバイトの最大の数、によって決定される、そして余剰物はかんだ。 例えば、64項目のヒストリーウインドウ、そして8データバイト、そしてひとつの余剰物ビットのために、選り抜きの下準備が8ビットの最小限であるかもしれない。 この例で、選択する、もしウインドウ値が、もし8データバイトの1つがこのアウトプットシンボルのために使われるなら、このアウトプットシンボルあるいは64-71の値のために使われるなら、0-63の値を持つかもしれない。 かまれた余剰物アウトプットはこの圧縮解除サイクルで解読されて、もしアウトプットシンボルのデータが他のトークンの1(つ・人)あるいはさらに多くによって生み出されているなら、セットされるかもしれない。 ビットの他のコンビネーションが後の段階にデータがこの圧縮解除サイクルでこのアウトプットシンボルのために生成されていないと合図するために使われるかもしれない。
1つの例でについて最初のデータバイトとデコーダが2番目の印を解読して、そして2番目のデータバイトへのポインタを出力してもよい1秒最初のデコーダーが最初のトークンと1ポインタアウトプットを解読するかもしれないかまれたあふれがセットされるかもしれない所を解読する。 3番目のデコーダーがバイトが初めから生み出した最初そして2番目のデータと2番目のトークンを含めて圧縮されたストリングを表す3番目の印を解読するかもしれない。 これらのデータとしてバイトが、ヒストリーウインドウでまだ、現在の(人たち・もの)が解読するビット26008が3番目のデコーダのアウトプットバイトでのデータが(それ・そこ)で事前のデコーダの1つまでに定義されることを示す予定になっている余剰物じゃない。 最初が2番目のデコーダのデータバイトを指し示すという状態で最初のデコーダのデータバイトと第2を指し示すという状態で、3番目の段階で、この例、最終の2で選り抜きの決勝戦が選ぶデコーダが解決される第3の間の2番目の段階の予備の選り抜きのアウトプットは3番目のトークンのために生成されるかもしれない。
図43 − 下準備を生成することは選択する
数字 43g が数字 43f のブロック936の上に広がって、そして結合されたヒストリーウインドウでの下準備を生成するプロセスの化身がシンボルに選択する(の・もの・人)を例証する。 選り抜きの下準備がアウトプットシンボルのそれぞれが現在の圧縮解除サイクルでブロック924で生成されたインフォメーションを使うことに関して生成されるかもしれない。 938、下準備が(それ・そこ)でシンボルに選択するブロックでヒストリーウインドウは例えば生成されるかもしれない、もしヒストリーウインドウが64インデックスを付けられた項目0-63を含むなら、Oが最も最近の項目、アウトプットシンボルのためにヒストリーウインドウで8番目に最も最近の項目からコピーされる theh であるという状態で、7のインデックスが生成されるだろう。
940、下準備が(それ・そこ)でデータバイトに選択するブロックで結合されたヒストリーウインドウは生成されるかもしれない。 例えば、ヒストリーウインドウは8データバイトがステージ1で8つのデコーダから渡した0-63と結合されたヒストリーウインドウが含むインデックスを付けられた64の項目を含む、8データバイトはデータバイト64-71としてインデックスを付けられるかもしれない。 アウトプットシンボルが3番目のデータバイトからコピーされるために、66のインデックスが生成されるだろう。 942、下準備がシンボルに選ぶブロックで現在の圧縮解除サイクルで生成されることは生成されるかもしれない。 換言すれば、アウトプットシンボルを圧縮解除するように要求されたシンボルはまだヒストリーウインドウにいない、しかしこの圧縮解除サイクルで事前のアウトプットシンボルによって生み出されている。 下準備が選択するこれらのために、予備の(人たち・もの)が選択するビットが指し示すことに定められるあふれが決意される必要がある。 選り抜きで下準備のために生み出されたインデックスはこの圧縮解除サイクルで事前のアウトプットシンボルのいずれがこのアウトプットシンボルによって必要とされるシンボルを含んでいるか示す。 例えば、もし4つのアウトプットシンボル0-3があるなら、そしてこれは、それから、もしかまれたあふれがセットされるなら、3番目のアウトプットシンボル(アウトプットシンボル2)である、インデックスはシンボルが生成されているこのアウトプットのデータがシンボルOあるいは1を出力したことを示すかもしれない、しかしアウトプットシンボル3の上に。
数字 43h − 最終の Generating − は選択する
数字 43h が数字 43f のブロック944の上に広がって、そして結合されたヒストリーウインドウでの決勝戦を生成するプロセスの化身がシンボルに選択する(の・もの・人)を例証する。 選り抜きの決勝戦がアウトプットシンボルのそれぞれが現在の圧縮解除サイクルでブロック924で生成されたインフォメーションを使うことに関して生成されるかもしれない、ブロック946で、下準備のそれぞれのビットが選ぶ余剰物は調べられるかもしれない。 もしかまれたあふれがセットされないなら、予備の(人たち・もの)が選択する:否が、最終の(人たち・もの)がアウトプットシンボルのために選択するように、 unmodified を通してパスする。 もしかまれたあふれがセットされるなら、選り抜きの下準備は解決される。 このシンボルのために選り抜きの下準備と決勝戦が選択する1つの化身でそれぞれの事前のアウトプットシンボルがそれぞれのアウトプットシンボルのためにインプットとして予備の選り抜きの解像度ロジックに渡される。 もしアウトプットシンボルのために選り抜きの下準備が解決される必要があるなら、アウトプットシンボルのために選り抜きの下準備でパスするインデックスはこのアウトプットシンボルのデータを含んでいるであろう事前のアウトプットシンボルの数を生み出すために使われる。 事前のアウトプットシンボルのために選り抜きの決勝戦は、最終の(人たち・もの)がこのアウトプットシンボルのために選択する(時・から・につれて・ように)、完全にその時パスする。 例えば、もし4つのアウトプットシンボルがあるなら、0-3と余剰物ビットが3番目のアウトプットシンボル(アウトプットシンボル2)の予定になっている、それから、もしインデックスがこのアウトプットシンボルのデータが生成されていることを示すなら、私、決勝戦がアウトプットシンボルから選ぶアウトプットシンボルの上に私はまねられて、そしてアウトプットシンボル2のために選り抜きの決勝戦として通過される。 アウトプットシンボルi:否から選り抜きの決勝戦はヒストリーウインドウであるいは1データバイトに1シンボルいずれかにインデックスだ。
流れの中の事前のデコーダを解読する。 最初が2番目のデコーダのデータバイトを指し示すという状態で最初のデコーダのデータバイトと第2を指し示すという状態で、3番目の段階で、この例、最終の2で選り抜きの決勝戦が選ぶデコーダが解決される第3の間の2番目の段階の予備の選り抜きのアウトプットは3番目のトークンのために生成されるかもしれない。
数字 43g − 下準備を生成することは選択する
数字 43g が数字 43f のブロック936の上に広がって、そして結合されたヒストリーウインドウでの下準備を生成するプロセスの化身がシンボルに選択する(の・もの・人)を例証する。 選り抜きの下準備がアウトプットシンボルのそれぞれが現在の圧縮解除サイクルでブロック924で生成されたインフォメーションを使うことに関して生成されるかもしれない。 938、下準備が(それ・そこ)でシンボルに選択するブロックでヒストリーウインドウは例えば生成されるかもしれない、もしヒストリーウインドウが64インデックスを付けられた項目0-63を含むなら、Oが最も最近の項目、アウトプットシンボルのためにヒストリーウインドウで8番目に最も最近の項目からコピーされる theh であるという状態で、7のインデックスが生成されるだろう。
940、下準備が(それ・そこ)でデータバイトに選択するブロックで結合されたヒストリーウインドウは生成されるかもしれない。 例えば、ヒストリーウインドウは8データバイトがステージ1で8つのデコーダから渡した0-63と結合されたヒストリーウインドウが含むインデックスを付けられた64の項目を含む、8データバイトはデータバイト64-71としてインデックスを付けられるかもしれない。 アウトプットシンボルが3番目のデータバイトからコピーされるために、66のインデックスが生成されるだろう。 942、下準備がシンボルに選ぶブロックで現在の圧縮解除サイクルで生成されることは生成されるかもしれない。 換言すれば、アウトプットシンボルを圧縮解除するように要求されたシンボルはまだヒストリーウインドウにいない、しかしこの圧縮解除サイクルで事前のアウトプットシンボルによって生み出されている。 下準備が選択するこれらのために、予備の(人たち・もの)が選択するビットが指し示すことに定められるあふれが決意される必要がある。 選り抜きで下準備のために生み出されたインデックスはこの圧縮解除サイクルで事前のアウトプットシンボルのいずれがこのアウトプットシンボルによって必要とされるシンボルを含んでいるか示す。 例えば、もし4つのアウトプットシンボル0-3があるなら、そしてこれは、それから、もしかまれたあふれがセットされるなら、3番目のアウトプットシンボル(アウトプットシンボル2)である、インデックスはシンボルが生成されているこのアウトプットのデータがシンボルOあるいは1を出力したことを示すかもしれない、しかしアウトプットシンボル3の上に。
数字 43h − 最終の Generating − は選択する
数字 43h が数字 43f のブロック944の上に広がって、そして結合されたヒストリーウインドウでの決勝戦を生成するプロセスの化身がシンボルに選択する(の・もの・人)を例証する。 選り抜きの決勝戦がアウトプットシンボルのそれぞれが現在の圧縮解除サイクルでブロック924で生成されたインフォメーションを使うことに関して生成されるかもしれない、ブロック946で、下準備のそれぞれのビットが選ぶ余剰物は調べられるかもしれない。 もしかまれたあふれがセットされないなら、予備の(人たち・もの)が選択する:否が、最終の(人たち・もの)がアウトプットシンボルのために選択するように、 unmodified を通してパスする。 もしかまれたあふれがセットされるなら、選り抜きの下準備は解決される。 このシンボルのために選り抜きの下準備と決勝戦が選択する1つの化身でそれぞれの事前のアウトプットシンボルがそれぞれのアウトプットシンボルのためにインプットとして予備の選り抜きの解像度ロジックに渡される。 もしアウトプットシンボルのために選り抜きの下準備が解決される必要があるなら、アウトプットシンボルのために選り抜きの下準備でパスするインデックスはこのアウトプットシンボルのデータを含んでいるであろう事前のアウトプットシンボルの数を生み出すために使われる。 事前のアウトプットシンボルのために選り抜きの決勝戦は、最終の(人たち・もの)がこのアウトプットシンボルのために選択する(時・から・につれて・ように)、完全にその時パスする。 例えば、もし4つのアウトプットシンボルがあるなら、0-3と余剰物ビットが3番目のアウトプットシンボル(アウトプットシンボル2)の予定になっている、それから、もしインデックスがこのアウトプットシンボルのデータが生成されていることを示すなら、私、決勝戦がアウトプットシンボルから選ぶアウトプットシンボルの上に私はまねられて、そしてアウトプットシンボル2のために選り抜きの決勝戦として通過される。 アウトプットシンボルi:否から選り抜きの決勝戦はヒストリーウインドウであるいは1データバイトに1シンボルいずれかにインデックスだ。
43i − アウトプットデータ数字 43i に圧縮解除されたシンボルを書き込むことは数字 43b のブロック954の上に広がって、そしてアウトプットバイトで圧縮解除されたアウトプットデータにシンボルを書き込むプロセスの1つの化身を例証する。 ブロック956で、決勝戦はデータバイトデコーダからパスするバイトが使われるかもしれないデータが場所を突き止めるインデックスを付けることを選ぶ、そして原稿が圧縮解除されたデータバイト決勝戦がヒストリーウインドウでシンボルにインデックスを付けて選ぶ、ブロック958での、アウトプットデータの中に圧縮解除されたシンボルの場所を突き止めて、そしてシンボルをアウトプットデータにコピーするために使われるかもしれない。 アウトプットシンボルは圧縮解除エンジンでアウトプットシンボルのオーダーでアウトプットデータで組み立てられるかもしれない。 examlple のために、もし生成されている16アウトプットシンボル(0-15)があるなら、Oが最初であるかもしれない圧縮解除サイクル、アウトプットシンボルでアウトプットデータとアウトプットシンボル15は最後の(人・もの)であるかもしれない。 圧縮解除サイクルがアウトプットシンボルのフルのセットを作らないかもしれない。 例えば、前の例で16最大限アウトプットシンボルで、圧縮解除サイクルがただ9つだけのアウトプットシンボル(アウトプットシンボル0-8)を生み出すかもしれない。 なるべく、すべての圧縮解除サイクルがアウトプットシンボルの最大の数に可能な限り近く減圧させる。 若干の圧縮解除サイクル、例えば、最後の圧縮解除サイクル、がアウトプットシンボルの最大の数を生み出さないかもしれない。
ヒストリーウインドウへの図43フィートの Written シンボル
数字 43j が数字 43b のブロック960の上に広がって、そしてヒストリーウインドウに圧縮解除サイクルで圧縮解除されたシンボルを書き込むプロセスの1つの化身を例証する。 1つの化身でヒストリーの窓はバッファとして組み立てられるかもしれない、そして最も古いデータは最も新しいデータのために席を空けるために外にシフトされるかもしれない。
もう1つの化身でヒストリーの窓はリングバッファとして組み立てられるかもしれない、そして最も古いデータは最も新しいデータによって上書きされるかもしれない。 962と964が想定するブロック最も古いデータはヒストリーウインドウから変えられるかもしれない、そしてヒストリーウインドウのためにリングバッファを使っている化身で必要じゃないかもしれない。 ブロック962で、ヒストリーウインドウは調べられる、そしてもしこのサイクルに減圧された十分なシンボルのための空領域がないなら、ブロック964でヒストリーウインドウの中のデータは新しいデータのために席を空けるためにシフトされる。 1つの化身でヒストリーウインドウはブロック966で新しいデータのために席を空けるためにすべての圧縮解除サイクルの後にシフトされるかもしれない、新たに圧縮解除されたシンボルはヒストリーウインドウの終わりに書き込まれる。 シンボルが記述された方法をシンボルを書き込むために使ってヒストリーウインドウに書き込まれるかもしれない1つの化身でアウトプットデータはブロックのために数字 43i の956と958を記述した。
結合して 43k − 圧縮解除プロセス − を計算する図 43b 43c と 43d
数字 43k で、図 (Figures) 43a - 43j からのブロックのいく人かがさらに圧縮解除サイクルの1つの化身を例証するために結合される。 9 10-922がからのブロックが 43d を計算して、そして数字 43c のブロック908の上に広がる、インプットから並列に減圧される1(つ・人)あるいはそれ以上のトークンを抽出することのための方法の1つの化身を例証することは、数字 43d のために記述されるように、データを圧縮した。 ブロック924で、この圧縮解除サイクルのために引き抜かれたトークンは並列に調べられるかもしれない、そしてトークンについてのインフォメーションが圧縮解除サイクルで使用のために生成されるかもしれない。 インフォメーションが印から抽出した 43c と、ブロック934での、 43e が使われるかもしれない図 (Figures) が複数性を生み出す924が記述されるブロックのオペレーションは選択する、あるいはポインター、それは結合されたヒストリーウインドウでシンボルを示す。 ブロック934のオペレーションは図 43b 、 43f 、 43g と 43h で記述される。 ブロック954、圧縮解除エンジン使用で1(つ・人)あるいはさらに多くが示されたシンボルを圧縮解除した引き抜くべきブロック934で生成されて選択するヒストリーウインドウから選択して、そして圧縮解除されたアウトプットデータに引き抜かれた圧縮解除されたシンボルをコピーする。 オペレーションについて
流れの中の事前のデコーダを解読する。 最初が2番目のデコーダのデータバイトを指し示すという状態で最初のデコーダのデータバイトと第2を指し示すという状態で、3番目の段階で、この例、最終の2で選り抜きの決勝戦が選ぶデコーダが解決される第3の間の2番目の段階の予備の選り抜きのアウトプットは3番目のトークンのために生成されるかもしれない。
図43 − 下準備を生成することは選択する
数字 43g が数字 43f のブロック936の上に広がって、そして結合されたヒストリーウインドウでの下準備を生成するプロセスの化身がシンボルに選択する(の・もの・人)を例証する。 選り抜きの下準備がアウトプットシンボルのそれぞれが現在の圧縮解除サイクルでブロック924で生成されたインフォメーションを使うことに関して生成されるかもしれない。 938、下準備が(それ・そこ)でシンボルに選択するブロックでヒストリーウインドウは例えば生成されるかもしれない、もしヒストリーウインドウが、Oが最も最近の項目であるという状態で、64インデックスを付けられた項目0-63を含むなら、アウトプットシンボルがヒストリーウインドウで8番目に最も最近の項目からコピーされるために、7のインデックスが生成されるだろう。
940、下準備が(それ・そこ)でデータバイトに選択するブロックで結合されたヒストリーウインドウは生成されるかもしれない。 例えば、ヒストリーウインドウは8データバイトがステージ1で8つのデコーダから渡した0-63と結合されたヒストリーウインドウが含むインデックスを付けられた64の項目を含む、8データバイトはデータバイト64-71としてインデックスを付けられるかもしれない。 アウトプットシンボルが3番目のデータバイトからコピーされるために、66のインデックスが生成されるだろう。 942、下準備がシンボルに選ぶブロックで現在の圧縮解除サイクルで生成されることは生成されるかもしれない。 換言すれば、アウトプットシンボルを圧縮解除するように要求されたシンボルはまだヒストリーウインドウにいない、しかしこの圧縮解除サイクルで事前のアウトプットシンボルによって生み出されている。 下準備が選択するこれらのために、予備の(人たち・もの)が選択するビットが指し示すことに定められるあふれが決意される必要がある。 選り抜きで下準備のために生み出されたインデックスはこの圧縮解除サイクルで事前のアウトプットシンボルのいずれがこのアウトプットシンボルによって必要とされるシンボルを含んでいるか示す。 例えば、もし4つのアウトプットシンボル0-3があるなら、そしてこれは、それから、もしかまれたあふれがセットされるなら、3番目のアウトプットシンボル(アウトプットシンボル2)である、インデックスはシンボルが生成されているこのアウトプットのデータがシンボルOあるいは1を出力したことを示すかもしれない、しかしアウトプットシンボル3の上に。
数字 43h − 最終の Generating − は選択する
数字 43h が数字 43f のブロック944の上に広がって、そして結合されたヒストリーウインドウでの決勝戦を生成するプロセスの化身がシンボルに選択する(の・もの・人)を例証する。 選り抜きの決勝戦がアウトプットシンボルのそれぞれが現在の圧縮解除サイクルでブロック924で生成されたインフォメーションを使うことに関して生成されるかもしれない、ブロック946で、下準備のそれぞれのビットが選ぶ余剰物は調べられるかもしれない。 もしかまれたあふれがセットされないなら、予備の(人たち・もの)が選択する:否が、最終の(人たち・もの)がアウトプットシンボルのために選択するように、 unmodified を通してパスする。 もしかまれたあふれがセットされるなら、選り抜きの下準備は解決される。 このシンボルのために選り抜きの下準備と決勝戦が選択する1つの化身でそれぞれの事前のアウトプットシンボルがそれぞれのアウトプットシンボルのためにインプットとして予備の選り抜きの解像度ロジックに渡される。 もしアウトプットシンボルのために選り抜きの下準備が解決される必要があるなら、アウトプットシンボルのために選り抜きの下準備でパスするインデックスはこのアウトプットシンボルのデータを含んでいるであろう事前のアウトプットシンボルの数を生み出すために使われる。 事前のアウトプットシンボルのために選り抜きの決勝戦は、最終の(人たち・もの)がこのアウトプットシンボルのために選択する(時・から・につれて・ように)、完全にその時パスする。 例えば、もし4つのアウトプットシンボルがあるなら、0-3と余剰物ビットが3番目のアウトプットシンボル(アウトプットシンボル2)の予定になっている、それから、もしインデックスがこのアウトプットシンボルのデータが生成されていることを示すなら、私、決勝戦がアウトプットシンボルから選ぶアウトプットシンボルの上に私はまねられて、そしてアウトプットシンボル2のために選り抜きの決勝戦として通過される。 アウトプットシンボルi:否から選り抜きの決勝戦はヒストリーウインドウであるいは1データバイトに1シンボルいずれかにインデックスだ。
数字 43i − アウトプットデータ数字 43i に圧縮解除されたシンボルを書き込むことは数字 43b のブロック954の上に広がって、そしてアウトプットバイトで圧縮解除されたアウトプットデータにシンボルを書き込むプロセスの1つの化身を例証する。 ブロック956で、決勝戦はデータバイトデコーダからパスするバイトが使われるかもしれないデータが場所を突き止めるインデックスを付けることを選ぶ、そして原稿が圧縮解除されたデータバイト決勝戦がヒストリーウインドウでシンボルにインデックスを付けて選ぶ、ブロック958での、アウトプットデータの中に圧縮解除されたシンボルの場所を突き止めて、そしてシンボルをアウトプットデータにコピーするために使われるかもしれない。 アウトプットシンボルは圧縮解除エンジンでアウトプットシンボルのオーダーでアウトプットデータで組み立てられるかもしれない。 例えば、もし生成されている16アウトプットシンボル(0-15)があるなら、Oが最初であるかもしれない圧縮解除サイクル、アウトプットシンボルでアウトプットデータとアウトプットシンボル15は最後の(人・もの)であるかもしれない。 圧縮解除サイクルがアウトプットシンボルのフルのセットを作らないかもしれない。 例えば、前の例で16最大限アウトプットシンボルで、圧縮解除サイクルがただ9つだけのアウトプットシンボル(アウトプットシンボル0-8)を生み出すかもしれない。 なるべく、すべての圧縮解除サイクルがアウトプットシンボルの最大の数に可能な限り近く減圧させる。 若干の圧縮解除サイクル、例えば、最後の圧縮解除サイクル、がアウトプットシンボルの最大の数を生み出さないかもしれない。
図43の − ヒストリーウインドウにシンボルを書き込む
数字 43j が数字 43b のブロック960の上に広がって、そしてヒストリーウインドウに圧縮解除サイクルで圧縮解除されたシンボルを書き込むプロセスの1つの化身を例証する。 1つの化身でヒストリーの窓はバッファとして組み立てられるかもしれない、そして最も古いデータは最も新しいデータのために席を空けるために外にシフトされるかもしれない。
もう1つの化身でヒストリーの窓はリングバッファとして組み立てられるかもしれない、そして最も古いデータは最も新しいデータによって上書きされるかもしれない。 962と964が想定するブロック最も古いデータはヒストリーウインドウから変えられるかもしれない、そしてヒストリーウインドウのためにリングバッファを使っている化身で必要じゃないかもしれない。 ブロック962で、ヒストリーウインドウは調べられる、そしてもしこのサイクルに減圧された十分なシンボルのための空領域がないなら、ブロック964でヒストリーウインドウの中のデータは新しいデータのために席を空けるためにシフトされる。 1つの化身でヒストリーウインドウはブロック966で新しいデータのために席を空けるためにすべての圧縮解除サイクルの後にシフトされるかもしれない、新たに圧縮解除されたシンボルはヒストリーウインドウの終わりに書き込まれる。 シンボルが記述された方法をシンボルを書き込むために使ってヒストリーウインドウに書き込まれるかもしれない1つの化身でアウトプットデータはブロックのために数字 43i の956と958を記述した。
結合して 43k − 圧縮解除プロセス − を計算する図 43b 43c と 43d
数字 43k で、図 (Figures) 43a - 43j からのブロックのいく人かがさらに圧縮解除サイクルの1つの化身を例証するために結合される。 9 10-922がからのブロックが 43d を計算して、そして数字 43c のブロック908の上に広がる、インプットから並列に減圧される1(つ・人)あるいはそれ以上のトークンを抽出することのための方法の1つの化身を例証することは、数字 43d のために記述されるように、データを圧縮した。 ブロック924で、この圧縮解除サイクルのために引き抜かれたトークンは並列に調べられるかもしれない、そしてトークンについてのインフォメーションが圧縮解除サイクルで使用のために生成されるかもしれない。 インフォメーションが印から抽出した 43c と、ブロック934での、 43e が使われるかもしれない図 (Figures) が複数性を生み出す924が記述されるブロックのオペレーションは選択する、あるいはポインター、それは結合されたヒストリーウインドウでシンボルを示す。 ブロック934のオペレーションは図 43b 、 43f 、 43g と 43h で記述される。 ブロック954、圧縮解除エンジン使用で1(つ・人)あるいはさらに多くが示されたシンボルを圧縮解除した引き抜くべきブロック934で生成されて選択するヒストリーウインドウから選択して、そして圧縮解除されたアウトプットデータに引き抜かれた圧縮解除されたシンボルをコピーする。 ブロック954のオペレーションは図 (Figures) 43b と 43i で記述される。 ブロック960で、現在の圧縮解除サイクルからの圧縮解除されたシンボルはヒストリーウインドウに書き込まれるかもしれない。 ブロック954のオペレーションは図 (Figures) 43b と 43j で記述される。
ヒストリーウインドウに圧縮解除されたシンボルを書き込んだ後で、オペレーションが時間がとれてもっと多くのインプットデータがあるかどうか決定するためにブロック 91O に戻るかもしれない。 もしそれ以上何もないならブロック910で決定されるように利用可能なデータを入力して、そしてそこ(に・で)正当でノーである解読するブロック922で、それからオペレーションが完了することを同じぐらい決心した。 さもなければ、次の平行した圧縮解除自転車は始まる。
圧縮解除タイミング
再び図33に言及して、それぞれのこのデザインでの段階が0.25のμ技術と低い力水準缶詰デザインライブラリで1 33 MHz を成し遂げるために時間を測定された。 代わりの化身がより高い時計率あるいはより少ない段階を成し遂げるために注文製のデータ - 道あるいは注文製のセルを使うかもしれない。 段階125501は水準セルデザイン、 Stages 225505でタイミングのために最も重大であるかもしれない、3 25509と4 25513は同じくタイミングのために重要であるかもしれない。 段階4に論理が遅らせる若干の追加の電力を供給することがあるかもしれない、そしてそれは段階425513のタイミング限界のために問題じゃないかもしれない。
拡大縮小可能な圧縮/圧縮解除
IMC 140は同じく拡大縮小可能な圧縮/圧縮解除を含む、その中に平行した圧縮/圧縮解除スライスの1(つ・人)あるいはさらに多くはデータ流の望ましいプライオリティに頼っている異なったデータ流のために選択的に適用され得る。同時発生
IMC 140はエージェントを求めることについての複数性からあるいはリクエストがエージェントを求めているシングルから入力する多数のデータから多数のデータのリクエストのアロケーションによって同じくオペレーションの同時発生を許す。 平均して、圧縮と圧縮解除ユニットである時、25:1が使われる、ブロックが現在の発明の使用無しでより早く(それより)引退させられる求められたデータ。 多数のデータ要請が同時に発生するソースから待ち行列に入れられる時、差し迫っている取引は公知の事実システムでより少ない潜伏期で完了することができる。 ブロック大きさが(それに)なるインプットと差し迫っている同時のデータのリクエストの数が増加する(時・から・につれて・ように)、現在の発明は潜伏期と増やされた効果的なバンド幅の縮小のためにますます魅力的になる。
現在の発明のシステムと方法が特定の書式がここに、しかしそれどころか明らかにしたそれが制限されるように意図されない望ましい化身に関連して記述されたけれども、相応に付加されたクレームによって定義されるように発明の精神と機会の中で含まれ得るように、このような選択肢、修正と同等物、をカバーすることことが意図される。

Claims (26)

  1. データのパラレル圧縮を行う方法であって、該方法は、
    非圧縮データを受け取ることであって、該非圧縮データは、複数の記号を含み、該複数の記号は、最初の記号と最後の記号と一つ以上の中間記号とを含む、ことと、
    該複数の記号をヒストリーテーブル内の複数のエントリとパラレルな態様で比較することであって、該複数の記号を比較するステップは、該非圧縮データの連続する記号の連続するグループに対してパラレルに実行され、該ヒストリーテーブルは、複数のエントリを含み、各エントリは、少なくとも一つの記号に関連付けられており、該パラレルな態様での比較は、1つのグループ内の該複数の記号のそれぞれを該ヒストリーテーブルの各エントリと同時に比較することを含み、該比較が比較結果を生成する、ことと、
    該比較結果に基づいて該複数の記号のそれぞれに対する一致情報を決定することであって、該一致情報を決定することは、該最初の記号または該最後の記号のいずれかの記号との一致を含まない連続する一致が、該グループの一つ以上の連続する中間記号のうちの一つ以上に対して生じたか否かを決定することを含む、ことと、
    該決定された一致情報に基づいて、該ヒストリーテーブルを更新することと、
    該一致情報に応答して圧縮データを出力することと
    を含み、
    該決定するステップは、該グループの最後の記号と該関連付けられた少なくとも一つの記号との間で一致が生じたか否かを決定することを含み、該グループの該最後の記号と該関連付けられた少なくとも一つの記号との間で一致が生じたことが決定された場合には、該圧縮データを出力するステップは、より長い連続した一致が存在するか否かを決定するために、該複数の記号を該グループの直後のグループと比較するステップを実行するために遅延される、方法。
  2. 該連続する中間記号のうちの一つ以上と、該最初の記号または該最後の記号のうちの少なくとも一方とに関与する連続した一致が生じたか否かを決定することをさらに含む、請求項1に記載の方法。
  3. 前記圧縮データを出力することは、前記一つ以上の連続する中間記号に関与する一致に対して圧縮データを出力することを含む、請求項1または2に記載の方法。
  4. 前記一致情報を決定することは、一つ以上の個々の連続する中間記号に関与する連続する一致が生じたか否かを決定することを含み、該一つ以上の個々の連続する中間記号は、該一つ以上の個々の連続する中間記号の前または後のいずれかの記号との一致に関与しない、請求項1から3のいずれかに記載の方法。
  5. 複数の中間記号をさらに含む、請求項1から4のいずれかに記載の方法。
  6. 前記一つ以上の中間記号は、複数の中間記号を含み、
    前記一致情報を決定することは、複数の異なる連続する中間記号の一致が該複数の中間記号の間で生じたか否かを決定することを含み、該複数の異なる中間記号の一致のそれぞれは、該複数の中間記号の間で起こり、該複数の異なる連続する中間記号の一致のそれぞれは、該最初の記号または該最後の記号のうちのいずれにも関与せず、
    前記圧縮データを出力することは、複数の異なる連続する中間記号の一致のそれぞれに対して圧縮データを出力することを含む、請求項1から5のいずれかに記載の方法。
  7. 少なくとも一つの連続する一致が一つ以上の連続する個々の中間記号について起き、該一つ以上の連続する個々の中間記号が該個々の連続する中間記号の前または後のいずれかの記号との一致に関与しない場合には、
    該一つ以上の個々の連続する中間記号に関与する該一つ以上の最も大きな重なりのない連続する一致を選択する、請求項1から6のいずれかに記載の方法。
  8. 前記一致情報を決定することは、
    少なくとも一つの連続する一致が前記複数の中間記号のうちの一つ以上の連続する個々の中間記号について起き、該一つ以上の連続する個々の中間記号が該個々の連続する中間記号の前または後のいずれかの記号との一致に関与しない場合には、
    該一つ以上の個々の連続する中間記号に関与する該一つ以上の最も大きな重なりのない連続する一致を選択することを含む、請求項1から7のいずれかに記載の方法。
  9. 前記一致情報を決定することは、
    少なくとも一つの連続する一致が前記複数の中間記号のうちの二つ以上の連続する個々の中間記号について起き、該二つ以上の連続する個々の中間記号が該個々の連続する中間記号の前または後のいずれかの記号との一致に関与しない場合には、
    該一つ以上の個々の連続する中間記号に関与する該一つ以上の最も大きな重なりのない連続する一致を選択することを含み、
    前記圧縮データを出力することは、該二つ以上の個々の連続する中間記号に関与する該選択された一致のそれぞれに対して圧縮データを出力することを含む、請求項1から8のいずれかに記載の方法。
  10. 前記圧縮データを出力することは、連続する一致のためのカウント値とエントリポインタとを出力することを含み、
    該エントリポインタは、該連続する一致を生成した該ヒストリテーブルのエントリを指し、該カウント値は、該連続する一致において一致する記号の数を示す、請求項1から9のいずれかに記載の方法。
  11. 前記カウント値を出力することは、前記カウント値を示す値をエンコードすることを含み、より多い頻度で起きるカウントが、より少ない頻度で起きるカウントより少ないビットでエンコードされる、請求項1から10のいずれかに記載の方法。
  12. 前記圧縮データを出力することは、前記ヒストリーテーブルのどのエントリとも一致しない不一致記号に対して、該不一致記号を出力することをさらに含む、請求項1から11のいずれかに記載の方法。
  13. 前記受け取るステップ、維持するステップ、比較するステップ、更なるデータが利用可能でなくなるまで1回以上決定するステップを繰り返すことと、
    更なるデータが利用可能でない場合には、前記ヒストリーテーブル内の残っている一致について圧縮データを出力することと
    をさらに含む、請求項1から12のいずれかに記載の方法。
  14. 前記一致情報を決定することは、前記複数の記号と前記ヒストリーテーブル内の複数のエントリとの一致を決定することを含む、請求項1から13のいずれかに記載の方法。
  15. 以前の複数の記号が前記ヒストリーテーブル内の複数のエントリと比較された場合に生じる先の一致のカウントを含むカウント情報を維持することをさらに含み、
    前記一致情報を決定することは、該カウント情報と前記比較結果とに基づいて、前記複数の記号のそれぞれに対して該一致情報を決定するように動作する、請求項1から14のいずれかに記載の方法。
  16. 前記カウント情報は、前記ヒストリーテーブルの各エントリに対して維持される先の一致の現在のカウントを含む、請求項15に記載の方法。
  17. 前記方法は、前記ヒストリーテーブルの各エントリに対してカウントフラグをさらに維持し、
    前記決定することは、前記現在のカウントと、該カウントフラグと、前記比較結果とに基づいて、前記複数の記号のそれぞれに対して一致情報を決定する、請求項16に記載の方法。
  18. 前記一致情報を決定することは、連続する一致が前記複数の記号のうちの一つに一致しないことを前記比較結果が示した場合には、前記カウントと前記カウントフラグとをリセットすることを含む、請求項17に記載の方法。
  19. 全てのエントリに対する前記カウントおよび前記カウントフラグは、連続する一致において一致しない複数の記号の数に基づいてリセットされる、請求項17に記載の方法。
  20. 前記一致情報を決定することは、前記比較結果に従って前記現在のカウントを更新することを含む、請求項16に記載の方法。
  21. 前記一致情報を決定することは、
    前記現在のカウントと前記比較結果とに基づいて連続する一致を決定することと、
    該連続する一致が一致を停止したか否かを決定することと、
    該連続する一致が一致を停止した場合には、該比較結果に従って該現在のカウントを更新することと
    を含み、
    前記圧縮データを出力することは、該連続する一致に対応する圧縮データを出力することを含む、請求項16に記載の方法。
  22. 前記連続する一致に対応する圧縮データを出力することは、カウント値とエントリポインタとを出力することを含み、
    該エントリポインタは、該連続する一致を生成した前記ヒストリーテーブル内のエントリを指し、該カウント値は、該連続する一致において一致した記号の数を示す、請求項21に記載の方法。
  23. 前記複数の記号は、少なくとも4つの記号を含む、請求項1から22のいずれかに記載の方法。
  24. 前記複数の記号は、少なくとも8つの記号を含む、請求項1から22のいずれかに記載の方法。
  25. 前記方法は、前記ヒストリーテーブル内の各エントリに対してカウントフラグをさらに維持し、
    前記決定することは、前記現在のカウントと、該カウントフラグと、前記比較結果とに基づいて、前記複数の記号のそれぞれに対して一致情報を決定し、
    該一致情報を決定することと該一致情報に応答して圧縮信号を出力することとは、
    前記複数の記号と前記ヒストリーテーブル内の各エントリとのゼロ以上の一致を決定することと、
    各エントリに対して比較結果を調査することと、
    該ヒストリーテーブル内のどのエントリとも一致しない不一致記号に対して、該不一致記号を出力することと、
    いずれかのエントリが一致を停止した場合には、全てのエントリに対して、該現在のカウントと、該カウントフラグと、該比較結果とを調査することと、
    該現在のカウントと該比較結果とに基づいて前記連続する一致を決定することと、
    該連続する一致が一致を停止したか否かを決定することと、
    該連続する一致が一致を停止した場合には、カウント値とエントリポインタとを出力することであって、該エントリポインタは、該連続する一致を生成した該ヒストリーテーブル内のエントリを指し、該カウント値は、該連続する一致において一致した記号の数を示す、ことと、
    該比較結果に従って該現在のカウントを更新することと
    を含み、
    前記方法は、更なるデータが利用可能でない場合において、該現在のカウントがゼロでない場合には、該ヒストリーテーブル内の残っている一致に対してカウント値とエントリポインタとを出力することをさらに含む、請求項1から24のいずれかに記載の方法。
  26. データのパラレル圧縮を行うシステムであって、該システムは、
    非圧縮データを受け取るための入力であって、該非圧縮データは、複数の記号を含み、該複数の記号は、最初の記号と最後の記号と一つ以上の中間記号とを含む、入力と、
    複数のエントリを含むヒストリーテーブルであって、各エントリは、少なくとも一つの記号を含む、ヒストリーテーブルと、
    該複数の記号を該ヒストリーテーブル内の複数のエントリとパラレルな態様で比較する複数のコンパレータであって、該複数のコンパレータは、該非圧縮データの連続する記号の連続するグループに対して該複数の記号をパラレルに比較するように構成されており、該複数のコンパレータは、1つのグループ内の該複数の記号のそれぞれを該ヒストリーテーブル内の各エントリと同時に比較するように動作可能であり、該複数のコンパレータは、比較結果を生成する、複数のコンパレータと、
    該複数のコンパレータに結合され、該比較結果に基づいて該複数の記号のそれぞれに対して一致情報を決定する一致情報ロジックであって、該一致情報ロジックは、該最初の記号または該最後の記号のいずれかの記号との一致を含まない連続する一致が、該一つ以上の中間記号のうちの一つ以上に対して生じたか否かを決定するように動作可能である、一致情報ロジックと、
    該一致情報ロジックに結合され、該一致情報に応答して圧縮データを出力するための出力と
    を含み、
    該一致情報ロジックは、該グループの該最後の記号と該少なくとも一つの記号との間で致が生じたか否かを決定するようにさらに動作可能であり、該一致情報に応答して該圧縮データを出力することは、より長い連続した一致が存在するか否かを決定するために、該複数のコンパレータが該複数の記号を該グループの直後のグループと比較するために遅延される、システム。
JP2000596668A 1999-01-29 2000-01-27 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法 Expired - Lifetime JP4475820B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US09/239,659 1999-01-29
US09/239,659 US7190284B1 (en) 1994-11-16 1999-01-29 Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US09/421,968 US6208273B1 (en) 1999-01-29 1999-10-20 System and method for performing scalable embedded parallel data compression
US09/421,968 1999-10-20
US09/491,343 US6822589B1 (en) 1999-01-29 2000-01-26 System and method for performing scalable embedded parallel data decompression
US09/491,343 2000-01-26
PCT/US2000/002355 WO2000045516A1 (en) 1999-01-29 2000-01-27 System and method for parallel data compression and decompression

Publications (2)

Publication Number Publication Date
JP2002536863A JP2002536863A (ja) 2002-10-29
JP4475820B2 true JP4475820B2 (ja) 2010-06-09

Family

ID=26932743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000596668A Expired - Lifetime JP4475820B2 (ja) 1999-01-29 2000-01-27 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法

Country Status (6)

Country Link
US (1) US6208273B1 (ja)
EP (2) EP1157470B1 (ja)
JP (1) JP4475820B2 (ja)
AT (1) ATE254358T1 (ja)
AU (1) AU2747600A (ja)
WO (1) WO2000045516A1 (ja)

Families Citing this family (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6092071A (en) * 1997-11-04 2000-07-18 International Business Machines Corporation Dedicated input/output processor method and apparatus for access and storage of compressed data
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6822589B1 (en) 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US7538694B2 (en) 1999-01-29 2009-05-26 Mossman Holdings Llc Network device with improved storage density and access speed using compression techniques
US7129860B2 (en) * 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6885319B2 (en) * 1999-01-29 2005-04-26 Quickshift, Inc. System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US20010054131A1 (en) * 1999-01-29 2001-12-20 Alvarez Manuel J. System and method for perfoming scalable embedded parallel data compression
US6583887B1 (en) * 1999-02-26 2003-06-24 Hewlett-Packard Development Company, L.P. Method and apparatus for data compression
US6438609B1 (en) 1999-03-04 2002-08-20 International Business Machines Corporation Method of pacing the frequency at which systems of a multisystem environment compress log streams
US6539389B1 (en) * 1999-03-04 2003-03-25 International Business Machines Corporation Pacing the frequency at which systems of a multisystem environment compress log streams
US6604158B1 (en) * 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6349372B1 (en) * 1999-05-19 2002-02-19 International Business Machines Corporation Virtual uncompressed cache for compressed main memory
US6904402B1 (en) * 1999-11-05 2005-06-07 Microsoft Corporation System and iterative method for lexicon, segmentation and language model joint optimization
US6643752B1 (en) * 1999-12-09 2003-11-04 Rambus Inc. Transceiver with latency alignment circuitry
US7010642B2 (en) * 2000-01-05 2006-03-07 Rambus Inc. System featuring a controller device and a memory module that includes an integrated circuit buffer device and a plurality of integrated circuit memory devices
US7356639B2 (en) * 2000-01-05 2008-04-08 Rambus Inc. Configurable width buffered module having a bypass circuit
US20050010737A1 (en) * 2000-01-05 2005-01-13 Fred Ware Configurable width buffered module having splitter elements
US7363422B2 (en) * 2000-01-05 2008-04-22 Rambus Inc. Configurable width buffered module
US6502161B1 (en) * 2000-01-05 2002-12-31 Rambus Inc. Memory system including a point-to-point linked memory subsystem
US7266634B2 (en) * 2000-01-05 2007-09-04 Rambus Inc. Configurable width buffered module having flyby elements
US7404032B2 (en) * 2000-01-05 2008-07-22 Rambus Inc. Configurable width buffered module having switch elements
WO2001052523A1 (en) * 2000-01-12 2001-07-19 Advanced Communication Design, Inc. Compression and remote storage apparatus for data, music and video
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US7089391B2 (en) * 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6734862B1 (en) * 2000-06-14 2004-05-11 Intel Corporation Memory controller hub
US7116331B1 (en) 2000-08-23 2006-10-03 Intel Corporation Memory controller hub interface
US6694490B2 (en) * 2002-07-10 2004-02-17 Hewlett-Packard Development Company, L.P. DIMM and method for producing a DIMM
US6725342B1 (en) * 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
US6859208B1 (en) 2000-09-29 2005-02-22 Intel Corporation Shared translation address caching
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US7417568B2 (en) 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US6779088B1 (en) * 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
JP2002149495A (ja) * 2000-11-15 2002-05-24 Nec Corp メモリ管理方式とその方法及びこの方法を記録した記録媒体
US20020101932A1 (en) * 2000-11-29 2002-08-01 Montgomery Dennis L. Method and apparatus for encoding information using multiple passes and decoding in a single pass
US6978047B2 (en) 2000-11-29 2005-12-20 Etreppid Technologies Llc Method and apparatus for storing digital video content provided from a plurality of cameras
US7047382B2 (en) 2000-11-29 2006-05-16 Quickshift, Inc. System and method for managing compression and decompression and decompression of system memory in a computer system
US6785767B2 (en) * 2000-12-26 2004-08-31 Intel Corporation Hybrid mass storage system and method with two different types of storage medium
GB0102572D0 (en) * 2001-02-01 2001-03-21 Btg Int Ltd Apparatus to provide fast data compression
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
KR100777271B1 (ko) * 2001-02-28 2007-11-20 엘지전자 주식회사 디지털 시스템의 메모리 관리 방법
JP2002264442A (ja) * 2001-03-12 2002-09-18 Ricoh Co Ltd 画像処理装置
EP1244221A1 (en) 2001-03-23 2002-09-25 Sun Microsystems, Inc. Method and system for eliminating data redundancies
US7409703B2 (en) * 2001-04-05 2008-08-05 The Directv Group, Inc. Method and system for efficient storage of data in a set top box
US7032158B2 (en) * 2001-04-23 2006-04-18 Quickshift, Inc. System and method for recognizing and configuring devices embedded on memory modules
US6864896B2 (en) * 2001-05-15 2005-03-08 Rambus Inc. Scalable unified memory architecture
US6789168B2 (en) * 2001-07-13 2004-09-07 Micron Technology, Inc. Embedded DRAM cache
US7564460B2 (en) * 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US20030028673A1 (en) * 2001-08-01 2003-02-06 Intel Corporation System and method for compressing and decompressing browser cache in portable, handheld and wireless communication devices
US6789169B2 (en) * 2001-10-04 2004-09-07 Micron Technology, Inc. Embedded DRAM cache memory and method having reduced latency
US6985853B2 (en) * 2002-02-28 2006-01-10 Broadcom Corporation Compressed audio stream data decoder memory sharing techniques
US20030167211A1 (en) * 2002-03-04 2003-09-04 Marco Scibora Method and apparatus for digitally marking media content
US7457519B2 (en) * 2002-04-03 2008-11-25 Broadcom Corporation Set-top box integration of integrated drive electronics
US7103608B1 (en) * 2002-05-10 2006-09-05 Oracle International Corporation Method and mechanism for storing and accessing data
US6981119B1 (en) 2002-08-29 2005-12-27 Advanced Micro Devices, Inc. System and method for storing performance-enhancing data in memory space freed by data compression
US7058783B2 (en) * 2002-09-18 2006-06-06 Oracle International Corporation Method and mechanism for on-line data compression and in-place updates
US7720999B2 (en) 2002-11-26 2010-05-18 Qualcomm Incorporated System and method for optimizing multimedia compression using plural encoders
US8749561B1 (en) 2003-03-14 2014-06-10 Nvidia Corporation Method and system for coordinated data execution using a primary graphics processor and a secondary graphics processor
KR101015497B1 (ko) * 2003-03-22 2011-02-16 삼성전자주식회사 디지털 데이터의 부호화/복호화 방법 및 장치
JP2005065043A (ja) * 2003-08-18 2005-03-10 Minolta Co Ltd データ処理装置
US6879270B1 (en) * 2003-08-20 2005-04-12 Hewlett-Packard Development Company, L.P. Data compression in multiprocessor computers
JP3753136B2 (ja) * 2003-08-22 2006-03-08 コニカミノルタビジネステクノロジーズ株式会社 データ処理装置及び処理方法
US6816093B1 (en) 2003-12-03 2004-11-09 International Business Machines Corporation Apparatus method and system for increased digital media recording throughput
US20050198395A1 (en) * 2003-12-29 2005-09-08 Pradeep Verma Reusable compressed objects
US7257693B2 (en) * 2004-01-15 2007-08-14 Intel Corporation Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system
US7302543B2 (en) * 2004-06-16 2007-11-27 Nec Laboratories America, Inc. Compressed memory architecture for embedded systems
US8001294B2 (en) * 2004-09-28 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for providing a compressed network in a multi-processing system
US20060085562A1 (en) * 2004-10-14 2006-04-20 Blaho Bruce E Devices and methods for remote computing using a network processor
AU2006255531B2 (en) * 2005-06-06 2011-02-10 Voyager Gaming Technologies Pty Ltd A gaming system
US7102552B1 (en) * 2005-06-07 2006-09-05 Windspring, Inc. Data compression with edit-in-place capability for compressed data
US8804765B2 (en) 2005-06-21 2014-08-12 Optis Wireless Technology, Llc Dynamic robust header compression
US20070030816A1 (en) * 2005-08-08 2007-02-08 Honeywell International Inc. Data compression and abnormal situation detection in a wireless sensor network
US7167115B1 (en) * 2005-08-26 2007-01-23 American Megatrends, Inc. Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries
US7180433B1 (en) 2005-09-22 2007-02-20 Tandberg Storage Asa Fast data compression and decompression system and method
US7562271B2 (en) * 2005-09-26 2009-07-14 Rambus Inc. Memory system topologies including a buffer device and an integrated circuit memory device
US11328764B2 (en) 2005-09-26 2022-05-10 Rambus Inc. Memory system topologies including a memory die stack
US7464225B2 (en) * 2005-09-26 2008-12-09 Rambus Inc. Memory module including a plurality of integrated circuit memory devices and a plurality of buffer devices in a matrix topology
US7750912B2 (en) * 2005-11-23 2010-07-06 Advanced Micro Devices, Inc. Integrating display controller into low power processor
US8775704B2 (en) * 2006-04-05 2014-07-08 Nvidia Corporation Method and system for communication between a secondary processor and an auxiliary display subsystem of a notebook
WO2007135602A1 (en) * 2006-05-24 2007-11-29 Koninklijke Philips Electronics N.V. Electronic device and method for storing and retrieving data
US7596729B2 (en) * 2006-06-30 2009-09-29 Micron Technology, Inc. Memory device testing system and method using compressed fail data
US9418450B2 (en) 2006-08-31 2016-08-16 Ati Technologies Ulc Texture compression techniques
EP1990774A1 (en) * 2007-05-11 2008-11-12 Deutsche Thomson OHG Renderer for presenting an image frame by help of a set of displaying commands
US8736617B2 (en) * 2008-08-04 2014-05-27 Nvidia Corporation Hybrid graphic display
US9075559B2 (en) * 2009-02-27 2015-07-07 Nvidia Corporation Multiple graphics processing unit system and method
US9135675B2 (en) * 2009-06-15 2015-09-15 Nvidia Corporation Multiple graphics processing unit display synchronization system and method
US8766989B2 (en) * 2009-07-29 2014-07-01 Nvidia Corporation Method and system for dynamically adding and removing display modes coordinated across multiple graphics processing units
US8780122B2 (en) * 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
US9111325B2 (en) * 2009-12-31 2015-08-18 Nvidia Corporation Shared buffer techniques for heterogeneous hybrid graphics
US8838544B2 (en) * 2009-09-23 2014-09-16 International Business Machines Corporation Fast history based compression in a pipelined architecture
DE102009059939A1 (de) * 2009-12-22 2011-06-30 Giesecke & Devrient GmbH, 81677 Verfahren zum Komprimieren von Bezeichnern
US8160137B2 (en) * 2010-03-03 2012-04-17 Mediatek Inc. Image data compression apparatus for referring to at least one characteristic value threshold to select target compression result from candidate compression results of one block and related method thereof
US8781000B2 (en) * 2010-12-30 2014-07-15 Vixs Systems, Inc. Dynamic video data compression
RU2530351C2 (ru) * 2012-04-20 2014-10-10 Открытое акционерное общество "Информационные спутниковые системы" имени академика М.Ф. Решетнёва" Способ создания контекста для сжатия измерительных данных и способ проведения измерений
US8909608B2 (en) 2012-06-14 2014-12-09 International Business Machines Corporation Reducing decompression latency in a compression storage system
US8618960B1 (en) 2012-08-16 2013-12-31 International Business Machines Corporation Selective recompression of a string compressed by a plurality of diverse lossless compression techniques
KR101956031B1 (ko) * 2012-10-15 2019-03-11 삼성전자 주식회사 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템
US9510041B2 (en) 2012-12-31 2016-11-29 Echostar Technologies L.L.C. Method and apparatus for gathering and using geocoded information from mobile devices
US10089645B2 (en) * 2012-12-31 2018-10-02 DISH Technologies L.L.C. Method and apparatus for coupon dispensing based on media content viewing
US8922414B2 (en) 2013-02-12 2014-12-30 Cortica, Ltd. Multi-layer system for symbol-space based compression of patterns
CN103280187B (zh) * 2013-06-09 2015-12-23 上海和辉光电有限公司 像素排列显示方法、装置及oled显示器
US9818379B2 (en) 2013-08-08 2017-11-14 Nvidia Corporation Pixel data transmission over multiple pixel interfaces
US9864536B2 (en) * 2013-10-24 2018-01-09 Qualcomm Incorporated System and method for conserving power consumption in a memory system
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US9864549B2 (en) 2016-02-29 2018-01-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for high throughput multi-input compression
US10120581B2 (en) * 2016-03-30 2018-11-06 Qualcomm Incorporated Generating compressed data streams with lookback pre-fetch instructions for pre-fetching decompressed data from a lookback buffer
US10013200B1 (en) * 2016-06-29 2018-07-03 EMC IP Holding Company LLC Early compression prediction in a storage system with granular block sizes
US9729168B1 (en) * 2016-07-17 2017-08-08 Infinidat Ltd. Decompression of a compressed data unit
US10453221B2 (en) * 2017-04-10 2019-10-22 Intel Corporation Region based processing
CN107196660A (zh) * 2017-04-24 2017-09-22 南京数维康信息科技有限公司 低功耗数据压缩算法
US10331558B2 (en) * 2017-07-28 2019-06-25 Apple Inc. Systems and methods for performing memory compression
US20190377804A1 (en) * 2018-06-06 2019-12-12 Yingquan Wu Data compression algorithm
CN109672888B (zh) * 2018-09-25 2022-04-22 平安科技(深圳)有限公司 图片压缩方法、设备及计算机可读存储介质
US10944423B2 (en) * 2019-03-14 2021-03-09 International Business Machines Corporation Verifying the correctness of a deflate compression accelerator
US11405622B2 (en) * 2020-04-22 2022-08-02 Apple Inc. Lossless compression techniques
US12028094B2 (en) 2020-12-23 2024-07-02 Intel Corporation Application programming interface for fine grained low latency decompression within processor core
KR102593034B1 (ko) * 2021-07-02 2023-10-23 고려대학교 산학협력단 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4008460A (en) 1975-12-24 1977-02-15 International Business Machines Corporation Circuit for implementing a modified LRU replacement algorithm for a cache
US4688108A (en) 1985-10-11 1987-08-18 Teleconference Systems, Inc. High resolution graphics system for video/teleconferencing systems
US5247646A (en) 1986-05-15 1993-09-21 Aquidneck Systems International, Inc. Compressed data optical disk storage system
US4881075A (en) 1987-10-15 1989-11-14 Digital Equipment Corporation Method and apparatus for adaptive data compression
US4876541A (en) 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data
US5016009A (en) 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5003307A (en) 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
US5146221A (en) 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5532694A (en) 1989-01-13 1996-07-02 Stac Electronics, Inc. Data compression apparatus and method using matching string searching and Huffman encoding
US5126739A (en) 1989-01-13 1992-06-30 Stac Electronics Data compression apparatus and method
US5237675A (en) 1990-06-04 1993-08-17 Maxtor Corporation Apparatus and method for efficient organization of compressed data on a hard disk utilizing an estimated compression factor
US5247638A (en) 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
EP0470798B1 (en) * 1990-08-06 1997-10-29 Fujitsu Limited Dictionary searching system
US5237460A (en) 1990-12-14 1993-08-17 Ceram, Inc. Storage of compressed data on random access storage devices
US5627995A (en) 1990-12-14 1997-05-06 Alfred P. Gnadinger Data compression and decompression using memory spaces of more than one size
US5396343A (en) 1991-03-14 1995-03-07 Nec Electronics, Inc. Image compresssion systems with optimized data access
US5150430A (en) 1991-03-15 1992-09-22 The Board Of Trustees Of The Leland Stanford Junior University Lossless data compression circuit and method
US5414850A (en) 1991-08-23 1995-05-09 Stac Electronics, Inc. System for transparently compressing data files in a computer system
JP2550239B2 (ja) 1991-09-12 1996-11-06 株式会社日立製作所 外部記憶装置システム
US5426779A (en) 1991-09-13 1995-06-20 Salient Software, Inc. Method and apparatus for locating longest prior target string matching current string in buffer
US5455943A (en) 1992-10-08 1995-10-03 Salient Software, Inc. Method and apparatus for finding longest and closest matching string in history buffer prior to current string
US5155484A (en) 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
CA2077271C (en) * 1991-12-13 1998-07-28 David J. Craft Method and apparatus for compressing data
US5510840A (en) 1991-12-27 1996-04-23 Sony Corporation Methods and devices for encoding and decoding frame signals and recording medium therefor
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
US5371499A (en) 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5379036A (en) 1992-04-01 1995-01-03 Storer; James A. Method and apparatus for data compression
US5353425A (en) 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
US5353024A (en) 1992-05-01 1994-10-04 Intersecting Concepts, Inc. Method for data compression having an improved encoding algorithm which utilizes a token stacking technique
US5485526A (en) 1992-06-02 1996-01-16 Hewlett-Packard Corporation Memory circuit for lossless data compression/decompression dictionary storage
US5406279A (en) 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
US5836003A (en) 1993-08-26 1998-11-10 Visnet Ltd. Methods and means for image and voice compression
US5357614A (en) 1992-09-17 1994-10-18 Rexon/Tecmar, Inc. Data compression controller
US5559978A (en) 1992-10-14 1996-09-24 Helix Software Company, Inc. Method for increasing the efficiency of a virtual memory system by selective compression of RAM memory contents
US5337275A (en) 1992-10-30 1994-08-09 Intel Corporation Method for releasing space in flash EEPROM memory array to allow the storage of compressed data
US5467087A (en) 1992-12-18 1995-11-14 Apple Computer, Inc. High speed lossless data compression system
US5412429A (en) 1993-03-11 1995-05-02 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Picture data compression coder using subband/transform coding with a Lempel-Ziv-based coder
US5455577A (en) 1993-03-12 1995-10-03 Microsoft Corporation Method and system for data compression
US5420696A (en) 1993-06-24 1995-05-30 Xerox Corporation Image data transfer architecture and method for an electronic reprographic machine
CA2100700C (en) 1993-07-16 2000-01-11 Robert P. Bicevskis Multi-media computer architecture
US5563595A (en) 1993-12-23 1996-10-08 International Business Machines Corporation Method and apparatus for compressing data
WO1995019662A1 (en) 1994-01-13 1995-07-20 Telco Systems, Inc. Data compression apparatus and method
US5956372A (en) 1994-03-17 1999-09-21 Digital Compression Technology, L.P. Coding system for digital transmission compression
US5525982A (en) * 1994-04-15 1996-06-11 International Business Machines Corporation Method and means for character string pattern matching for compression and the like using minimal cycles per character
US5532693A (en) 1994-06-13 1996-07-02 Advanced Hardware Architectures Adaptive data compression system with systolic string matching logic
US5572206A (en) 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system
US5828877A (en) 1994-07-14 1998-10-27 Dell Usa, L.P. Circuit and method for optimizing creation of a compressed main memory image
US5548742A (en) 1994-08-11 1996-08-20 Intel Corporation Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory
US5572209A (en) 1994-08-16 1996-11-05 International Business Machines Corporation Method and apparatus for compressing and decompressing data
US5883588A (en) 1994-10-04 1999-03-16 Nec Corporation Data compression system and data compression device for improving data compression rate and coding speed
US5812817A (en) 1994-10-17 1998-09-22 International Business Machines Corporation Compression architecture for system memory application
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US5838334A (en) 1994-11-16 1998-11-17 Dye; Thomas A. Memory and graphics controller which performs pointer-based display list video refresh operations
US5526363A (en) 1995-05-16 1996-06-11 Telco Systems, Inc. Multicontext compression system with shared data structures
US5621403A (en) 1995-06-20 1997-04-15 Programmed Logic Corporation Data compression system with expanding window
US5729228A (en) 1995-07-06 1998-03-17 International Business Machines Corp. Parallel compression and decompression using a cooperative dictionary
US5933104A (en) 1995-11-22 1999-08-03 Microsoft Corporation Method and system for compression and decompression using variable-sized offset and length fields
US5771011A (en) * 1996-07-15 1998-06-23 International Business Machines Corporation Match detect logic for multi-byte per cycle hardware data compression
JP3540109B2 (ja) 1996-12-24 2004-07-07 富士通株式会社 データ圧縮方法及び装置
US5798718A (en) 1997-05-12 1998-08-25 Lexmark International, Inc. Sliding window data compression method and apparatus
US5874908A (en) 1997-09-19 1999-02-23 International Business Machines Corporation Method and apparatus for encoding Lempel-Ziv 1 variants
US5877711A (en) 1997-09-19 1999-03-02 International Business Machines Corporation Method and apparatus for performing adaptive data compression
US5955976A (en) 1997-12-02 1999-09-21 Hughes Electronics Corporation Data compression for use with a communications channel
US5945933A (en) 1998-01-27 1999-08-31 Infit Ltd. Adaptive packet compression apparatus and method

Also Published As

Publication number Publication date
EP1164706A3 (en) 2005-03-23
JP2002536863A (ja) 2002-10-29
ATE254358T1 (de) 2003-11-15
AU2747600A (en) 2000-08-18
EP1164706A2 (en) 2001-12-19
EP1157470A1 (en) 2001-11-28
WO2000045516A1 (en) 2000-08-03
EP1157470B1 (en) 2003-11-12
US6208273B1 (en) 2001-03-27

Similar Documents

Publication Publication Date Title
JP4475820B2 (ja) 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法
US6822589B1 (en) System and method for performing scalable embedded parallel data decompression
US6885319B2 (en) System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US6819271B2 (en) Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US7190284B1 (en) Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US6879266B1 (en) Memory module including scalable embedded parallel data compression and decompression engines
US10748510B2 (en) Framebuffer compression with controllable error rate
JP2986076B2 (ja) データを圧縮及び圧縮解除するための方法及び装置
US8761528B2 (en) Compression of image data
US8212828B2 (en) Hybrid multiple bit-depth video processing architecture
US7129860B2 (en) System and method for performing scalable embedded parallel data decompression
US6145069A (en) Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US20230153111A1 (en) Decompression Engine for Decompressing Compressed Input Data that Includes Multiple Streams of Data
JP4443165B2 (ja) 画像圧縮装置及び画像圧縮方法
US10191912B2 (en) Shared decompression engine
EP2787738B1 (en) Tile-based compression for graphic applications
Tomari et al. Compressing floating-point number stream for numerical applications
US11189005B1 (en) Index buffers in graphics processing systems
US11327687B2 (en) Encoding data arrays
US20170053376A1 (en) Technique for performing variable width data compression using a palette of encodings
US5880746A (en) Apparatus for forming a sum in a signal processing system
US5894568A (en) Apparatus and method for computing a difference in a digital processing system

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20070129

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20070323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090522

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090817

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091124

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20091124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091127

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100309

R150 Certificate of patent or registration of utility model

Ref document number: 4475820

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term