(57)【特許請求の範囲】
【請求項１】
データ処理システム中の、多バイト・フレームのパイプライン化圧縮のための方法であって、
データのフレームを形成するように、入力データ・ストリーム中の現在のサイクルのデータに、前記入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせることと、
複数の辞書メモリ中の複数の一致を識別することであって、各一致が、データの前記フレーム内の所与の下位文字列の一部と対応する辞書メモリのデータが一致する、前記識別することと、
前記現在のサイクルのデータの最良のカバレージを提供する、前記複数の一致からの一致のサブセットを識別することと、
データの前記フレームを符号化出力データ・ストリームに符号化することと
を含む方法。
【請求項２】
前記現在のサイクルのデータに前記次のサイクルのデータの少なくとも前記一部を組み合わせることが、複数の下位文字列を形成することであって、各下位文字列が、前記現在のサイクルのデータのそれぞれのバイトで開始し、前記現在のサイクルのデータと等しい長さを有する、前記形成することを含む、請求項１に記載の方法。
【請求項３】
一致の前記サブセットが、第１のサイクルのデータと前記次のサイクルのデータの間のサイクル境界を横切る、請求項１または２に記載の方法。
【請求項４】
データの前記フレームを前記符号化出力データ・ストリームに符号化することが、
一致符号化データを形成するように、一致の前記サブセットの各々を長さおよび距離情報で符号化することと、
圧縮符号化データを形成するように、前記入力データ・ストリーム中の前記現在のサイクルのデータ中の不一致データを、無損失圧縮を使用して符号化することと、
出力データ・ストリーム中で、前記一致符号化データと前記圧縮符号化データを整合することと
を含む、請求項１ないし３のいずれか一項に記載の方法。
【請求項５】
複数のアドレスを形成するように、複数の下位文字列中の各所与の下位文字列に基づいてアドレスを生成することをさらに含む、請求項１ないし４のいずれか一項に記載の方法。
【請求項６】
前記アドレスを生成することが、前記所与の下位文字列にハッシュを実施することを含む、請求項５に記載の方法。
【請求項７】
各所与の下位文字列および対応する位置の値を、前記所与の下位文字列から生成される前記アドレスを使用して、前記複数の辞書メモリ内の対応する辞書メモリに書き込むことをさらに含む、請求項５または６に記載の方法。
【請求項８】
前記複数の一致を識別することが、前記複数のアドレスを使用して、前記複数の辞書メモリ内の各所与の辞書メモリから読み取り、各辞書メモリについてのゼロまたは１つ以上の有効エントリを受け取ることを含む、請求項５ないし７のいずれか一項に記載の方法。
【請求項９】
前記複数の一致を識別することが、
少なくとも１つの有効エントリを有する各辞書メモリについて、前記少なくとも１つの有効エントリを対応する下位文字列と比較することと、
少なくとも１つの有効エントリを有する各辞書メモリについて、前記対応する下位文字列の最初から始まる連続一致バイトの数に基づいて最長一致を選択し、前記複数の一致を形成することと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記複数の一致の各々が一致長さの値および位置の値を有し、前記長さの値が前記一致データの長さを示し、前記位置の値が、前記入力データ・ストリーム中の前記一致データの以前の発生を参照する、請求項９に記載の方法。
【請求項１１】
符号化データ・ストリームへの高帯域圧縮のための装置であって、
複数の辞書メモリおよび関連するロジックを備える辞書ルックアップ／アップデート・ステージと、
複数の比較回路および関連するロジックを備える一致選択ステージと、
符号化ステージと
を備え、
前記辞書ルックアップ／アップデート・ステージが、入力データ・ストリーム中の現在のサイクルのデータに前記入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせて含むデータのフレームを受け取り、前記複数の辞書メモリ中の複数の一致を識別し、各一致が、データの前記フレーム内の所与の下位文字列の一部と対応する辞書メモリのデータが一致し、
前記一致選択ステージが、前記複数の比較回路を使用して、前記現在のサイクルのデータの、最良のカバレージを提供する、前記複数の一致からの一致のサブセットを識別し、
前記符号化ステージが、データの前記フレームを符号化出力データ・ストリームに符号化する、装置。
【請求項１２】
前記現在のサイクルのデータに前記次のサイクルのデータの少なくとも前記一部を組み合わせることが、複数の下位文字列を形成することであって、各下位文字列が、前記現在のサイクルのデータのそれぞれのバイトで開始し、前記現在のサイクルのデータと等しい長さを有する、前記形成することを含む、請求項１１に記載の装置。
【請求項１３】
一致の前記サブセットが、第１のサイクルのデータと前記次のサイクルのデータの間のサイクル境界を横切る、請求項１１または１２に記載の装置。
【請求項１４】
前記符号化ステージが、一致符号化データを形成するように、一致の前記サブセットの各々を長さおよび距離情報で符号化し、圧縮符号化データを形成するように、前記入力データ・ストリーム中の前記現在のサイクルのデータ中の不一致データを、無損失圧縮を使用して符号化する、請求項１１ないし１３のいずれか一項に記載の装置。
【請求項１５】
前記符号化ステージが、ハフマン・コーディング回路を備え、前記符号化ステージが、前記ハフマン・コーディング回路を使用して不一致データを符号化する、請求項１４に記載の装置。
【請求項１６】
ビット／バイト整合ステージをさらに備え、前記ビット／バイト整合ステージが、出力データ・ストリーム中で、前記一致符号化データと前記圧縮符号化データを整合する、請求項１１ないし１５のいずれか一項に記載の装置。
【請求項１７】
前記辞書ルックアップ／アップデート・ステージが、複数のアドレスを形成するように、複数の下位文字列中の各所与の下位文字列に基づいてアドレスを生成する、請求項１１ないし１６のいずれか一項に記載の装置。
【請求項１８】
前記辞書ルックアップ／アップデート・ステージが、前記所与の下位文字列にハッシュを実施することによりアドレスを生成する、請求項１７に記載の装置。
【請求項１９】
前記辞書ルックアップ／アップデート・ステージが、各所与の下位文字列および対応する位置の値を、前記所与の下位文字列から生成される前記アドレスを使用して、前記複数の辞書メモリ内の対応する辞書メモリに書き込む、請求項１７または１８に記載の装置。
【請求項２０】
前記辞書ルックアップ／アップデート・ステージが、前記複数のアドレスを使用して、前記複数の辞書メモリ内の各所与の辞書メモリから読み取り、各辞書メモリについてのゼロまたは１つ以上の有効エントリを受け取ることにより、前記複数の一致を識別する、請求項１７ないし１９のいずれか一項に記載の装置。
【請求項２１】
前記一致選択ステージが、少なくとも１つの有効エントリを有する各辞書メモリについて、前記少なくとも１つの有効エントリを対応する下位文字列と比較し、少なくとも１つの有効エントリを有する各辞書メモリについて、前記対応する下位文字列の最初から始まる連続一致バイトの数に基づいて最長一致を選択し、前記複数の一致を形成することにより、一致のサブセットを識別する、請求項２０に記載の装置。
【請求項２２】
前記複数の一致の各々が一致長さの値および位置の値を有し、前記長さの値が前記一致データの長さを示し、前記位置の値が、前記入力データ・ストリーム中の前記一致データの以前の発生を参照する、請求項２１に記載の装置。
【請求項２３】
コンピュータ可読プログラムが記憶されたコンピュータ可読記憶媒体のコンピュータ・プログラム製品であって、コンピューティング・デバイス上で実行されると、前記コンピュータ可読プログラムが前記コンピューティング・デバイスに、
データのフレームを形成するように、入力データ・ストリーム中の現在のサイクルのデータに、前記入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせること、
複数の辞書メモリ中の複数の一致を識別することであって、各一致が、データの前記フレーム内の所与の下位文字列の一部と対応する辞書メモリのデータが一致する、前記識別すること、
前記現在のサイクルのデータの最良のカバレージを提供する、前記複数の一致からの一致のサブセットを識別すること、および
データの前記フレームを符号化出力データ・ストリームに符号化すること
を実行させる、コンピュータ・プログラム製品。
【請求項２４】
前記現在のサイクルのデータに前記次のサイクルのデータの少なくとも前記一部を組み合わせることが、複数の下位文字列を形成することであって、各下位文字列が、前記現在のサイクルのデータのそれぞれのバイトで開始し、前記現在のサイクルのデータと等しい長さを有する、前記形成することを含む、請求項２３に記載のコンピュータ・プログラム製品。
【請求項２５】
一致の前記サブセットが、第１のサイクルのデータと前記次のサイクルのデータの間のサイクル境界を横切る、請求項２３または２４に記載のコンピュータ・プログラム製品。
【請求項２６】
データの前記フレームを前記符号化出力データ・ストリームに符号化することが、
一致符号化データを形成するように、一致の前記サブセットの各々を長さおよび距離情報で符号化すること、
圧縮符号化データを形成するように、前記入力データ・ストリーム中の前記現在のサイクルのデータ中の不一致データを、無損失圧縮を使用して符号化すること、ならびに
出力データ・ストリーム中で、前記一致符号化データと前記圧縮符号化データを整合すること
を含む、請求項２３ないし２５のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項２７】
前記コンピュータ可読プログラムが前記コンピューティング・デバイスに、複数のアドレスを形成するように、複数の下位文字列中の各所与の下位文字列に基づいてアドレスを生成することをさらに実行させる、請求項２３ないし２６のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項２８】
前記アドレスを生成することが、前記所与の下位文字列にハッシュを実施することを含む、請求項２７に記載のコンピュータ・プログラム製品。
【請求項２９】
前記コンピュータ可読プログラムが前記コンピューティング・デバイスに、各所与の下位文字列および対応する位置の値を、前記所与の下位文字列から生成される前記アドレスを使用して、前記複数の辞書メモリ内の対応する辞書メモリに書き込むことをさらに実行させる、請求項２７または２８に記載のコンピュータ・プログラム製品。
【請求項３０】
前記複数の一致を識別することが、前記複数のアドレスを使用して、前記複数の辞書メモリ内の各所与の辞書メモリから読み取り、各辞書メモリについてのゼロまたは１つ以上の有効エントリを受け取ることを含む、請求項２７ないし２９のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項３１】
前記複数の一致を識別することが、
少なくとも１つの有効エントリを有する各辞書メモリについて、前記少なくとも１つの有効エントリを対応する下位文字列と比較すること、および
少なくとも１つの有効エントリを有する各辞書メモリについて、前記対応する下位文字列の最初から始まる連続一致バイトの数に基づいて最長一致を選択し、前記複数の一致を形成すること
をさらに含む、請求項３０に記載のコンピュータ・プログラム製品。
【請求項３２】
前記複数の一致の各々が一致長さの値および位置の値を有し、前記長さの値が前記一致データの長さを示し、前記位置の値が、前記入力データ・ストリーム中の前記一致データの以前の発生を参照する、請求項３１に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般的に、改善されたデータ処理装置および方法に関し、より詳細には、符号化データ・ストリームへの高帯域圧縮のためのメカニズムに関する。
【背景技術】
【０００２】
デフレートは、ＬＺ７７アルゴリズムおよびハフマン・コーディングの組合せを使用する、無損失データ圧縮アルゴリズムである。ＬＺ７７アルゴリズムは、繰り返し発生するデータを、入力される（圧縮されない）データ・ストリーム内に以前に存在する、そのデータの単一のコピーを参照して置換することによって、圧縮を実現する。一致は、長さ−距離ペアと呼ばれる１組の数により符号化され、これは、「次の長さの文字の各々は、圧縮されないストリーム内の、その後の、正確な距離の文字である文字に等しい」という文と等価である。「距離」は、代わりに「オフセット」と呼ばれることがある。
【０００３】
ハフマン・コーディングは、無損失データ圧縮に使用される、エントロピー符号化アルゴリズムである。その用語は、ソース・シンボルを符号化するための、可変長コード表の使用を指しており、ここで、可変長コード表は、ソース・シンボルの各可能な値についての推定された発生確率に基づいた特定のやり方で導出された。
【０００４】
圧縮されたブロック内で、重複する一連のバイト（繰り返される文字列）が見いだされる場合、後方参照が挿入され、代わりのその同一文字列の前の場所へリンクする。以前の文字列へ符号化される一致は、長さ（３〜２５８バイト）および距離（１〜３２，７６８バイト）からなる。相対後方参照は、距離が、デコードされた圧縮されないデータの最後の３２ｋＢ内（スライディング・ウィンドウと称される）に現れる限り、任意の数のブロックにわたってなされ得る。
【０００５】
第２の圧縮ステージは、一般に使用されるシンボルをより短い表現で置換し、あまり一般に使用されないシンボルをより長い表現で置換することからなる。ハフマン・コーディングは、オーバーラップしない間隔のプレフィックスされないツリーを作り出し、ここで、各シーケンスの長さは、符号化される必要があるシンボルの確率に反比例する。シンボルが符号化されなければならない可能性が高いほど、そのビット・シーケンスは、より短くなることになる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データ処理システム中の、多バイト・フレームのパイプライン化圧縮のメカニズムを提供する。
【課題を解決するための手段】
【０００７】
１つの例示的な実施形態では、データ処理システム中の、多バイト・フレームのパイプライン化圧縮のための方法は、データのフレームを形成するように、入力データ・ストリーム中の現在のサイクルのデータに、入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせることを含む。方法は、複数の辞書メモリ中の複数の一致を識別することをさらに含む。各一致は、データのフレーム内の所与の下位文字列の一部と一致する。方法は、現在のサイクルのデータの、最良のカバレージを提供する、複数の一致からの一致のサブセットを識別することをさらに含む。方法は、データのフレームを符号化出力データ・ストリームに符号化することをさらに含む。
【０００８】
他の例示的な実施形態では、コンピュータ可読プログラムを有するコンピュータ使用可能または可読媒体を備えるコンピュータ・プログラム製品が提供される。コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、方法の例示的な実施形態に関して上に概説された動作のうちの、さまざまな動作および動作の組合せをコンピューティング・デバイスに実施させる。
【０００９】
さらに別の例示的な実施形態では、システム／装置が提供される。符号化データ・ストリームへの高帯域圧縮のための装置であって、装置は、複数の辞書メモリおよび関連するロジックを備える辞書ルックアップ／アップデート・ステージ、複数の比較回路および関連するロジックを備える一致選択ステージ、ならびに符号化ステージを備える。辞書ルックアップ／アップデート・ステージは、入力データ・ストリーム中の現在のサイクルのデータに入力データ・ストリーム中の次のサイクルのデータの少なくとも一部を組み合わせて含むデータのフレームを受け取り、複数の辞書メモリ中の複数の一致を識別する。各一致は、複数の下位文字列中の所与の下位文字列の一部と一致する。一致選択ステージは、複数の比較回路を使用して、現在のサイクルのデータの最良のカバレージを提供する、複数の一致からの一致のサブセットを識別する。符号化ステージは、データのフレームを符号化出力データ・ストリームに符号化する。
【００１０】
本発明のこれらおよび他の特徴ならびに利点は、本発明の例示の実施形態の以下の詳細な説明中に記載されることになり、または本発明の例示の実施形態の以下の詳細な説明を見れば当業者には明らかとなるであろう。
【００１１】
本発明、また本発明の使用の好ましいモードならびにさらなる目的および利点は、添付の図面と一緒に読まれると、例示的な実施形態の以下の詳細な説明を参照することにより、最も良好に理解されるであろう。
【図面の簡単な説明】
【００１２】
【図１】例示的な実施形態の態様が実装され得る、例示の分散データ処理システムを描く、図式的な表現である。
【図２】例示的な実施形態の態様が実装され得る、例示のデータ処理システムのブロック図である。
【図３】例示的な実施形態に従う、任意の長さのバイトの任意のストリームを処理し、圧縮されたデータ形式でバイトのストリームを出力するメカニズムを図示するブロック図である。
【図４】例示的な実施形態に従う、入力データ・ストリームを２サイクル・フレームのデータに変換するための変換フェーズを描く図である。
【図５】例示的な実施形態に従う、辞書ルックアップ／アップデートのためのアドレスの生成を描く図である。
【図６】例示的な実施形態に従う、辞書ルックアップ／アップデート・フェーズを描く図である。
【図７】例示的な実施形態に従う、一致選択のためのメカニズムを図示するブロック図である。
【図８】例示的な実施形態に従う、一致選択および整合を図示する図である。
【図９】例示的な実施形態に従う、符号化データ・ストリームへの高帯域圧縮のためのメカニズムの動作を図示するフローチャートである。
【発明を実施するための形態】
【００１３】
例示的な実施形態は、低遅延および高スループットをもたらす、連続サイクル中のデータ・ストリームを処理するためのメカニズムを提供する。辞書の組織は、データのサイクル中の各バイト・オフセットについて１つが、配列中にある。いくつかのステージは、同じステージ中で使用するため、次のサイクルで直ちに利用可能となる結果を必要とする。
【００１４】
例示的な実施形態は、多くの異なるタイプのデータ処理環境で利用することができる。例示的な実施形態の特定の要素および機能性を記載するための文脈を提供するために、図１および図２は、以下で、例示的な実施形態の態様が実装され得る例示の環境として提供される。図１および図２は、単に例であり、本発明の態様または実施形態が実装され得る環境に関して、何らかの限定を主張または暗示することは意図していないことを理解されたい。本発明の思想および範囲から逸脱することなく、描かれる環境へ多くの変形を行うことができる。
【００１５】
図１は、例示的な実施形態の態様が実装され得る、例示の分散データ処理システムの図式的な表現を描く。分散データ処理システム１００は、例示的な実施形態の態様が実装され得る、コンピュータのネットワークを含むことができる。分散データ処理システム１００は、分散データ処理システム１００内で一緒に接続されるさまざまなデバイスおよびコンピュータ間で通信リンクを実現するために使用される媒体である、少なくとも１つのネットワーク１０２を含む。ネットワーク１０２としては、ワイヤ、無線通信リンク、または光ファイバ・ケーブルなどの接続が挙げられる。
【００１６】
描かれる例では、サーバ１０４およびサーバ１０６が、記憶ユニット１０８とともにネットワーク１０２に接続される。加えて、クライアント１１０、１１２、および１１４が、やはり、ネットワーク１０２に接続される。これらのクライアント１１０、１１２、および１１４は、例えば、パーソナル・コンピュータ、ネットワーク・コンピュータなどであってよい。描かれる例では、サーバ１０４は、クライアント１１０、１１２、および１１４に、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータを提供する。クライアント１１０、１１２、および１１４は、描かれる例では、サーバ１０４に対するクライアントである。分散データ処理システム１００は、追加のサーバ、クライアント、および他の図示されないデバイスを含むことができる。
【００１７】
描かれる例では、分散データ処理システム１００は、互いに通信するため、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）スイートのプロトコルを使用する、ネットワークおよびゲートウェイの世界的な集合を表す、ネットワーク１０２を備えるインターネットである。インターネットの中心にあるのは、データおよびメッセージを配信する、数千の商業用、政府用、教育用、および他のコンピュータ・システムからなる、主要ノードまたはホスト・コンピュータ間の高速データ通信線のバックボーンである。もちろん、分散データ処理システム１００は、例えば、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）などの、多数の異なるタイプのネットワークを含むように実装されてもよい。上記のように、図１は、例として意図されており、本発明の異なる実施形態についてのアーキテクチャ上の限定としては意図されておらず、したがって、図１に示される特定の要素は、本発明の例示的な実施形態が実装され得る環境に関して限定すると考えられるべきでない。
【００１８】
図２は、例示的な実施形態の態様が実装され得る、例示のデータ処理システムのブロック図である。データ処理システム２００は、図１内のクライアント１１０のようなコンピュータの例であり、本発明の例示的な実施形態用のプロセスを実装する、コンピュータ使用可能コードまたは命令を配置することができる。
【００１９】
描かれた例では、データ処理システム２００は、ノース・ブリッジおよびメモリ・コントローラ・ハブまたはＮＢ／ＭＣＨ２０２、ならびにサウス・ブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブまたはＳＢ／ＩＣＨ２０４を含むハブ・アーキテクチャを採用する。処理ユニット２０６、メイン・メモリ２０８、およびグラフィックス・プロセッサ２１０は、ＮＢ／ＭＣＨ２０２に接続される。グラフィックス・プロセッサ２１０は、アクセラレィティッド・グラフィックス・ポート（ＡＧＰ）を通してＮＢ／ＭＣＨ２０２に接続することができる。
【００２０】
描かれた例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタまたはネットワーク・アダプタ２１２は、ＳＢ／ＩＣＨ２０４に接続する。オーディオ・アダプタ２１６、キーボードおよびマウス・アダプタ２２０、モデム２２２、読取り専用メモリまたはＲＯＭ２２４、ハード・ディスク・ドライブまたはＨＤＤ２２６、ＣＤ−ＲＯＭドライブ２３０、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよび他の通信ポート２３２、ならびにＰＣＩ／ＰＣＩｅデバイス２３４は、バス２３８およびバス２４０を通してＳＢ／ＩＣＨ２０４に接続する。ＰＣＩ／ＰＣＩｅデバイスとしては、例えば、ノートブック・コンピュータ用のイーサネット・アダプタ、アドイン・カード、およびＰＣカードが挙げられる。ＰＣＩは、カード・バス・コントローラを使用するが、ＰＣＩｅは使用しない。ＲＯＭ２２４は、例えば、フラッシュ基本入出力システム（ＢＩＯＳ）であってよい。
【００２１】
ＨＤＤ２２６およびＣＤ−ＲＯＭドライブ２３０は、バス２４０を通してＳＢ／ＩＣＨ２０４に接続する。ＨＤＤ２２６およびＣＤ−ＲＯＭドライブ２３０は、例えば、統合デバイス・エレクトロニクス（ＩＤＥ）またはシリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）インターフェイスを使用することができる。スーパーＩ／Ｏ（ＳＩＯ）デバイス２３６を、ＳＢ／ＩＣＨ２０４に接続することができる。
【００２２】
オペレーティング・システムは、処理ユニット２０６上で走る。オペレーティング・システムは、図２のデータ処理システム２００内のさまざまな構成要素の制御を協調して提供する。クライアントとして、オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）  ７（ＭｉｃｒｏｓｏｆｔおよびＷｉｎｄｏｗｓは、米国、他の国または両方のＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）などの市販のオペレーティング・システムであってよい。Ｊａｖａ（Ｒ）プログラミング・システムなど、オブジェクト指向プログラミング・システムは、オペレーティング・システムと一緒に走ることができ、データ処理システム２００上で実行しているＪａｖａ（Ｒ）プログラムまたはアプリケーションからオペレーティング・システムに、呼出しを行う（Ｊａｖａは、Ｏｒａｃｌｅまたはその関連会社あるいはその両方の商標である。）。
【００２３】
サーバとして、データ処理システム２００は、例えば、Ａｄｖａｎｃｅｄ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｅｘｅｃｕｔｉｖｅ（ＡＩＸ（Ｒ））オペレーティング・システムまたはＬＩＮＵＸ（Ｒ）オペレーティング・システムが走るＩＢＭ（Ｒ）  ｅＳｅｒｖｅｒ（商標）  Ｓｙｓｔｅｍ  ｐ（Ｒ）コンピュータ・システムであってよい（ＩＢＭ、ｅＳｅｒｖｅｒ、Ｓｙｓｔｅｍ  ｐ、およびＡＩＸは、米国、他の国、またはその両方のＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの商標であり、ＬＩＮＵＸは、米国、他の国、またはその両方のＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標である）。データ処理システム２００は、処理ユニット２０６中に複数のプロセッサを含む、対称型マルチプロセッサ（ＳＭＰ）システムであってよい。あるいは、単一プロセッサシステムを採用することができる。
【００２４】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムのための命令は、ＨＤＤ２２６などの記憶デバイス上に配置され、処理ユニット２０６によって実行するためメイン・メモリ２０８にロードされ得る。例えば、本発明の例示的な実施形態のためのプロセスは、例えば、メイン・メモリ２０８、ＲＯＭ２２４、またはＨＤＤ２２６およびＣＤ−ＲＯＭドライブ２３０など１つまたは複数の周辺デバイス内などのメモリに配置され得る、コンピュータ使用可能プログラム・コードを使用して、処理ユニット２０６により実施することができる。
【００２５】
図２に示されるような、バス２３８またはバス２４０などのバス・システムは、１つまたは複数のバスからなってよい。もちろん、バス・システムは、通信機構またはアーキテクチャに取り付けられる異なる構成要素またはデバイス間でデータの転送を可能にする、任意のタイプの通信機構またはアーキテクチャを使用して実装することができる。図２のモデム２２２またはネットワーク・アダプタ２１２などの通信ユニットは、データを送受信するために使用される１つまたは複数のデバイスを含むことができる。メモリは、例えば、図２内の、メイン・メモリ２０８、ＲＯＭ２２４、またはＮＢ／ＭＣＨ２０２内に見られるようなキャッシュであってよい。
【００２６】
当業者なら、図１および図２のハードウェアが、実装に依存して変わってよいことを理解するであろう。フラッシュ・メモリ、等価な不揮発性メモリ、または光ディスク・ドライブなどの、他の内部ハードウェアまたは周辺デバイスは、図１および図２に描かれたハードウェアに加えて、または図１および図２に描かれたハードウェアの代わりに使用することができる。また、例示的な実施形態のプロセスは、本発明の思想および範囲から逸脱することなく、上述のＳＭＰシステム以外の、マルチプロセッサ・データ処理システムに適用することができる。
【００２７】
さらに、データ処理システム２００は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話または他の通信デバイス、携帯情報端末（ＰＤＡ）などを含む、複数の異なるデータ処理システムのいずれかの形をとることができる。例えば、いくつかの例示的な実施形態では、データ処理システム２００は、オペレーティング・システム・ファイルまたはユーザが生成したデータあるいはその両方を記憶させるための不揮発性メモリを提供するため、フラッシュ・メモリで構成される、携帯型コンピューティング・デバイスであってよい。本質的に、データ処理システム２００は、アーキテクチャ上の限定のない、任意の知られた、または後で開発されるデータ処理システムであってよい。
【００２８】
データ処理システム２００は、さまざまな理由でデータ圧縮を必要とする場合がある。例えば、データ処理システム２００は、ＨＤＤ２２６に記憶されるデータを圧縮する場合があり、またはネットワーク・アダプタ２１２を経由して送信されるデータを圧縮する場合がある。
【００２９】
図３は、例示的な実施形態に従う、任意の長さのバイトの任意のストリームを処理し、圧縮されたデータ形式でバイトのストリームを出力するメカニズムを図示するブロック図である。メカニズムは、サイクルごとに入力ストリームからＮバイトを連続的に消費して、符号化出力ストリームを生成する。メカニズムは、辞書ルックアップ／アップデート３０１、一致選択３０２、ハフマン符号化３０３、および最後のビット／バイト整合３０４という、４つのフェーズからなる。
【００３０】
図４は、例示的な実施形態に従う、入力データ・ストリームを２サイクル・フレームのデータに変換するための変換フェーズを描く。ステージ０  ４００は、ＮバイトのサイクルＣ０、Ｃ１、Ｃ２、Ｃ３を受け取る。ステージ０  ４００の変換メカニズムは、入力ストリームを２サイクル・フレームＣ０／Ｃ１、Ｃ１／Ｃ２、Ｃ２／Ｃ３に変換する。
【００３１】
図５は、例示的な実施形態に従う、辞書ルックアップ／アップデートのためのアドレスの生成を描く。辞書ルックアップ／アップデート・フェーズでは、各サイクルで、２つの連続サイクル分のデータ、すなわち、２Ｎ−１バイトをメカニズムが検査する。メカニズムは、サイクル境界を横切る第１の下位文字列を除く、下位文字列をもたらし第１のサイクルのデータのＮバイトの各々で開始する、あらゆるＮバイト下位文字列のバイトを考慮する。したがって、入力フレームＣｋ／Ｃｋ＋１について、メカニズムは、下位文字列Ｄ０〜ＤＦを考慮する。メカニズムは、各下位文字列にハッシュを実施して、アドレスＡ０〜ＡＦを生成する。（表記しやすさのため、Ｆ＝Ｎ−１である。）
【００３２】
図６は、例示的な実施形態に従う、辞書ルックアップ／アップデート・フェーズを描く。Ｎバイトオフセット位置の各々で、ステージ１  辞書ルックアップ／アップデート・メカニズム６００は、辞書メモリ６０１、６０２、６０３のＮ回読取り、１回書込みを維持する。メカニズムは、アドレスＡ０〜ＡＦを使用して、Ｎ個のメモリの各々で、Ｎバイトの下位文字列の各々をルックアップし、以前に見られたデータとの最大Ｎ２個の一致、およびバイト・ストリーム中の以前の位置を戻す。辞書ルックアップ／アップデート・メカニズム６００は、辞書メモリ６０１、６０２、６０３の各々を、そのＮバイトの下位文字列でアップデートし、バイト・ストリーム中で発生した下位文字列ならびにバイト・ストリーム中の位置を後の一致のために記録する。
【００３３】
こうして、辞書ルックアップ／アップデート・メカニズム６００は、図５からの各下位文字列について、アドレスＡ０〜ＡＦ、データＤ０〜ＤＦ、および位置Ｐ０〜ＰＦを受け取る。アドレスＡ０〜ＡＦは、データＤ０〜ＤＦのハッシュである。位置Ｐ０〜ＰＦは、バイト・ストリーム中の位置である。Ｃｋ／Ｃｋ＋１のフレームを仮定すると、Ｐｉ＝（Ｃｋの位置）＋ｉであり、ここで、各Ｐｉは、ｉ番目の下位文字列の位置の値であり、ここで、ｉ＝０〜Ｆである。各辞書メモリ６０１、６０２、６０３は、それぞれのアドレスにデータおよび位置を書き込む。こうして、辞書メモリ６０１は、アドレスＡ０にデータＤ０および位置Ｐ０を書き込み、辞書メモリ６０２は、アドレスＡ１にデータＤ１および位置Ｐ１を書き込み、辞書メモリ６０３は、アドレスＡＦにデータＤＦおよび位置ＰＦを書き込む。
【００３４】
各辞書メモリ６０１、６０２、６０３は、アドレスＡ０〜ＡＦにおいて、Ｎ回の読取りを実施する。Ａ０における辞書メモリ６０１の読取りは、有効ビットＶ００、読取りデータＲ００、位置の値Ｐ００をもたらす。Ａ１における辞書メモリ６０１の読取りは、有効ビットＶ０１、読取りデータＲ０１、位置の値Ｐ０１をもたらす。ＡＦにおける辞書メモリ６０１の読取りは、有効ビットＶ０Ｆ、読取りデータＲ０Ｆ、位置の値Ｐ０Ｆをもたらす。
【００３５】
Ａ０における辞書メモリ６０２の読取りは、有効ビットＶ１０、読取りデータＲ１０、位置の値Ｐ１０をもたらす。Ａ１における辞書メモリ６０１の読取りは、有効ビットＶ１１、読取りデータＲ１１、位置の値Ｐ１１をもたらす。ＡＦにおける辞書メモリ６０１の読取りは、有効ビットＶ１Ｆ、読取りデータＲ１Ｆ、位置の値Ｐ１Ｆをもたらす。
【００３６】
Ａ０における辞書メモリ６０３の読取りは、有効ビットＶＦ０、読取りデータＲＦ０、位置の値ＰＦ０をもたらす。Ａ１における辞書メモリ６０１の読取りは、有効ビットＶＦ１、読取りデータＲＦ１、位置の値ＰＦ１をもたらす。ＡＦにおける辞書メモリ６０１の読取りは、有効ビットＶＦＦ、読取りデータＲＦＦ、位置の値ＰＦＦをもたらす。
【００３７】
こうして、各サイクルについて、ルックアップ／アップデート・フェーズは、Ｎ回書込みおよびＮ２回読取り（Ｎ個の下位文字列のそれぞれにＮ回読取り）をもたらす。最初は、辞書メモリ６０１、６０２、６０３中の各エントリは、無効である。辞書メモリ６０１、６０２、６０３への各書込みが、有効ビットをアサートする。こうして、所与のアドレスにおける読取りについて、アドレスに対応するエントリに有効データが以前に書き込まれたかどうかを、有効ビットが示す。
【００３８】
図７は、例示的な実施形態に従う、一致選択のためのメカニズムを図示するブロック図である。ステージ２  一致選択メカニズム７００は、比較構成要素７０１、７０２、７０３を備える。一致選択メカニズム７００は、辞書メモリ６０１、６０２、６０３からＮ組の読取りデータを受け取る。各組の読取りデータについて、一致選択メカニズム７００は、対応する下位文字列データＤ０〜ＤＦを受け取る。
【００３９】
各比較構成要素７０１、７０２、７０３は、辞書メモリ６０１、６０２、６０３からの有効読取りデータを下位文字列データＤ０〜ＤＦと比較する。例えば、比較構成要素７０１は、Ｒ００〜Ｒ０Ｆを下位文字列データＤ０と比較する。各Ｒ００〜Ｒ０Ｆについて、比較構成要素７０１は、下位文字列の最初から始めて、どれだけ多くの連続バイトが一致するのかを決定する。比較構成要素７０１は、次いで、最長一致を有する読取りデータＲ００〜Ｒ０Ｆを選択する。比較構成要素７０１は、次いで、もし存在する場合、最長一致Ｍ０およびＢ０と一致するバイトの数を出力する。
【００４０】
同様に、比較構成要素７０２は、Ｒ１０〜Ｒ１Ｆを下位文字列データＤ１と比較する。各Ｒ１０〜Ｒ１Ｆについて、比較構成要素７０２は、下位文字列の最初から始めて、どれだけ多くの連続バイトが一致するのかを決定する。比較構成要素７０２は、次いで、最長一致を有する読取りデータＲ１０〜Ｒ１Ｆを選択する。比較構成要素７０２は、次いで、もし存在する場合、最長一致Ｍ１およびＢ１と一致するバイトの数を出力する。
【００４１】
比較構成要素７０３は、ＲＦ０〜ＲＦＦを下位文字列データＤＦと比較する。各ＲＦ０〜ＲＦＦについて、比較構成要素７０３は、下位文字列の最初から始めて、どれだけ多くの連続バイトが一致するのかを決定する。比較構成要素７０３は、次いで、最長一致を有する読取りデータＲＦ０〜ＲＦＦを選択する。比較構成要素７０３は、次いで、もし存在する場合、最長一致ＭＦおよびＢＦと一致するバイトの数を出力する。
【００４２】
図８は、例示的な実施形態に従う、一致選択および整合を図示する。場合によってオーバーラップする一致Ａ、Ｂ、Ｃ、Ｄのいくつかの組を仮定すると、一致選択および整合フェーズは、データのカバレージを最大化するために一致を選択しなければならない。図８に示される例に見られるように、一致ＢとＤがオーバーラップし、一致ＡとＤがオーバーラップし、一致ＡとＣがオーバーラップする。これによって、一致ＡとＢ、ＢとＣ、またはＤとＣを使用することが残る。例示的な実施形態のメカニズムは、元のデータのほとんどをカバーする一致の可能な組合せを選択する。
【００４３】
図８に見られるように、一致ＡおよびＢが最良のカバレージを提供し、最小の一致しないバイトを残す。一致Ａは、４バイトだけサイクル境界を横切るので、最初の４つの下位文字列は、次のサイクルで無視することができる。
【００４４】
こうして、例示的な実施形態のメカニズムは、現在のサイクル内のバイト・オフセットごとに１つ、Ｎバイト・オフセット位置からその位置内のＮバイトの潜在的な一致の中で最長一致を選択し、Ｎ２もの数からＮ個の一致へと潜在的な一致の数を減少させる。メカニズムは、これらの一致のサブセットを選択し、できるだけ、２Ｎ−１バイトの多数をカバーしようと試みる。
【００４５】
メカニズムは、最初に、サイクル境界を横切り、できるだけ現在のサイクルの多くを費やす一致を見つける。メカニズムは、次いで、現在のサイクル内でより多くのバイトをカバーする追加の一致を見つける。メカニズムは、境界を横切ることによりカバーされるバイトについて、次のサイクルのために十分な情報を残す。
【００４６】
一致選択および整合フェーズは、カバーされないバイトおよび一致したバイトをもたらす。一実施形態では、例示的な実施形態のメカニズムは、次いで、逐語的に、現在のサイクル内のカバーされないバイトにハフマン・コーディングを実施する。例示的な実施形態のメカニズムは、一致を長さおよび距離でコード化する。
【００４７】
次いで、ビット／バイト・パッキング・フェーズは、デフレート規格に適合するバイトのシーケンスをもたらす。現在のサイクル内の、第１の可変ビット幅コードは、ビット・シフト動作により整合され、次のサイクルのビットに追加されるべく残された、潜在的な部分バイトを有する、いくつかのバイトをもたらす。サイクル内のバイトは、Ｎバイトが単一サイクル中に出力され得るまで、蓄積される。
【００４８】
当業者なら理解するように、本発明は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の態様は、全体的にハードウェアの実施形態、（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）全体的にソフトウェアの実施形態、または、本明細書で「回路」、「モジュール」、もしくは「システム」と全てが一般的に呼ばれ得る、ソフトウェアとハードウェアの態様を組み合わせる実施形態の形をとることができる。さらに、本発明の態様は、そこに具現化されるコンピュータ使用可能プログラム・コードを有する、任意の１つまたは複数のコンピュータ可読媒体内に具現化されるコンピュータ・プログラム製品の形をとることができる。
【００４９】
１つまたは複数のコンピュータ可読媒体の任意の組合せを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってよい。コンピュータ可読記憶媒体は、例えば、限定するものではないが、電子的、磁気的、光学的、電磁的、赤外線、もしくは半導体のシステム、装置、デバイス、または上記の任意の好適な組合せであってよい。コンピュータ可読記憶媒体のより具体的な例（網羅的でないリスト）としては以下、すなわち、１つまたは複数のワイヤを有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読取り専用メモリ（ＣＤＲＯＭ）、光学的記憶デバイス、磁気的記憶デバイス、または上記の任意の好適な組合せが挙げられる。この文書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスにより使用される、または命令実行システム、装置、もしくはデバイスに関連して使用されるプログラムを含む、または記憶することができる、任意の有形の媒体であってよい。
【００５０】
コンピュータ可読信号媒体としては、例えば、ベースバンドで、または搬送波の部分として、その中にコンピュータ可読プログラム・コードが具現化される、伝播されるデータ信号を挙げることができる。そのような伝播される信号は、限定するものではないが、電磁的、光学的、またはその任意の好適な組合せを含む、さまざまな形のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスにより使用される、または命令実行システム、装置、またはデバイスに関連して使用されるプログラムを通信、伝播、または搬送することができる任意のコンピュータ可読媒体であってよい。
【００５１】
コンピュータ可読媒体上に具現化されるコンピュータ・コードは、限定するものではないが、無線、有線、光ファイバ・ケーブル、電波周波数（ＲＦ）など、またはそれらの任意の好適な組合せを含む、任意の適切な媒体を使用して送信することができる。
【００５２】
本発明の態様のための動作を行うためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来型手順的プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組合せで書くことができる。プログラム・コードは、完全にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にはユーザのコンピュータ上および部分的にはリモート・コンピュータ上で、または完全にリモート・コンピュータまたはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを通してユーザのコンピュータに接続することができ、または、外部コンピュータに（例えば、インターネット・サービス・プロバイダを使用してインターネットを通して）接続をすることができる。
【００５３】
本発明の態様は、本発明の例示的な実施形態に従う方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して以下に記載される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方中のブロックの組合せは、コンピュータ・プログラム命令により実装することが可能であることが理解されよう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで指定される機能／動作を実施するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。
【００５４】
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体中に記憶された命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで指定される機能／動作を実装する命令を含む製品を作り出すように、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに特定の方式で機能するように指示するものであってよい。
【００５５】
コンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能装置で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで指定される機能／動作を実施するためのプロセスを実現するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってよい。
【００５６】
図９は、例示的な実施形態に従う、符号化データ・ストリームへの高帯域圧縮のためのメカニズムの動作を図示するフローチャートである。動作を開始し（ブロック９００）、メカニズムがデータ・ストリームの一部を２サイクル・フレームに変換する（ブロック９０１）。メカニズムは、第１のコード化されていないバイトで開始し（ブロック９０２）、フレーム中の、各サイクル長の下位文字列のデータにハッシュを計算する（ブロック９０３）。メカニズムは、次いで、対応する辞書メモリのアドレスとしてハッシュを使用して、各下位文字列のデータを書き込む（ブロック９０４）。各サイクルがＮバイトである２サイクル・フレームについて、メカニズムは、Ｎ個の辞書メモリの各々に、１つのＮバイトの下位文字列を書き込む。
【００５７】
メカニズムは、計算されたハッシュの全てをアドレスとして使用して、全ての辞書メモリから下位文字列のデータを読み取る（ブロック９０５）。ブロック９０５では、メカニズムは、Ｎ個の辞書メモリからＮ回読取りを実施するが、読取りの多くは、無効データをもたらす可能性がある。次いで、メカニズムは、各下位文字列を対応する辞書メモリからの読取りデータと比較し（ブロック９０６）、下位文字列の最初のバイトで開始する最長一致の連続バイトを選択する（ブロック９０７）。メカニズムは、ここで、各辞書メモリから１つの一致、合計でＮ個の一致を有する。
【００５８】
その後、メカニズムは、一致のサブセットを選択する（ブロック９０８）。メカニズムは、できるだけ２Ｎ−１バイトの多数をカバーする一致を選択する。メカニズムは、最初に、サイクル境界を横切り、できるだけ現在のサイクルの多くをカバーする一致を選択することができる。メカニズムは、次いで、現在のサイクルのより多くのバイトをカバーする追加の一致を選択することができる。メカニズムは、次いで、不一致バイトを逐語的にコード化し、一致を長さおよび距離情報でコード化し（ブロック９０９）、ここで、長さが一致のバイト中の長さを示し、距離がデータ・ストリーム中のデータの以前のインスタンスを参照する。次いで、メカニズムは、ビット／バイト整合を実施する（ブロック９１０）。
【００５９】
メカニズムは、次いで、現在のサイクルが最後のサイクルであるかどうかを決定する（ブロック９１１）。現在のサイクルがデータ・ストリーム中の最後のサイクルでない場合、メカニズムは、データ・ストリーム中の次のサイクルのデータを考慮し（ブロック９１２）、動作は、ブロック９０１に戻って、データを２サイクル・フレームに変換する。動作は、次いで、次のサイクルのために繰り返す。ブロック９１１で、現在のサイクルがデータ・ストリーム中の最後のサイクルのデータである場合、動作は終了する（ブロック９１３）。
【００６０】
図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従うシステム、方法、およびコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能性、および動作を図示する。この点に関連し、フローチャートまたはブロック図内の各ブロックは、指定された論理的機能を実装するための１つまたは複数の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表すことができる。いくつかの代替実装において、ブロック内に言及される機能は、図中で言及される順序から外れて生じ得ることにも留意されたい。例えば、含まれる機能性に依存して、連続して示される２つのブロックが、実際には、実質的に同時に実行されてよく、またはブロックが、場合によって逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方中のブロックの組合せは、指定される機能または行為を実施する専用ハードウェアベースのシステムまたは専用ハードウェアおよびコンピュータ命令の組合せにより実装できることも留意されよう。
【００６１】
こうして、例示的な実施形態は、符号化データ・ストリームに対する高帯域圧縮のためのメカニズムを提供する。メカニズムは、データを連続サイクルで処理し、低遅延および高スループットをもたらす。Ｎバイト・サイクルのデータについて、メカニズムは、Ｎバイト・データ中の各バイト・オフセットについてＮ回読取りおよび１回書込みを実施するＮ個の辞書メモリを使用する。いくつかのステージは、同じステージ中で使用するため、次のサイクルで直ちに利用可能となる結果を要求する。
【００６２】
上述したように、例示的な実施形態は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態、または、ハードウェアおよびソフトウェアの両方の要素を含む実施形態の形をとることができることを理解されたい。１つの例示の実施形態では、例示的な実施形態のメカニズムは、限定するものではないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、ソフトウェアまたはプログラム・コードに実装される。
【００６３】
プログラム・コードを記憶または実行あるいはその両方をするのに好適なデータ処理システムは、システム・バスを通してメモリ要素に直接または間接に結合される少なくとも１つのプロセッサを含むことになる。メモリ要素としては、プログラム・コードの実際の実行期間に採用されるローカル・メモリ、大容量記憶装置、および実行期間に大容量記憶装置からコードが取り出されなければならない回数を減少させるため、少なくともいくつかのプログラム・コードの一時記憶を実現するキャッシュ・メモリが挙げられる。
【００６４】
（限定するものではないが、キーボード、ディスプレイ、ポインティング・デバイスなどを含む）入出力またはＩ／Ｏデバイスは、直接または介在するＩ／Ｏコントローラを通してシステムと結合することができる。ネットワーク・アダプタがやはりシステムに結合されて、データ処理システムが、介在するプライベート・ネットワークまたは公衆ネットワークを通して、他のデータ処理システムまたはリモート・プリンタまたは記憶デバイスに結合されることを可能にすることができる。モデム、ケーブル・モデム、およびイーサネット・カードは、現在利用可能なタイプのネットワーク・アダプタのうちのごくわずかである。
【００６５】
本発明の記載は、例示および記載のために提示されたが、網羅的であること、または開示された形に発明を限定することを意図していない。多くの変形形態および変更形態が当業者には明らかであろう。さまざまな変更形態を備えるさまざまな実施形態が意図された具体的な使用に適するので、実施形態は、本発明の原理および実践的な適用を最もよく説明するため、および当業者が本発明を理解することが可能となるために、選択され記載された。
【図１】
0006381546.tif 000002
【図２】
0006381546.tif 000003
【図３】
0006381546.tif 000004
【図４】
0006381546.tif 000005
【図５】
0006381546.tif 000006
【図６】
0006381546.tif 000007
【図７】
0006381546.tif 000008
【図８】
0006381546.tif 000009
【図９】
0006381546.tif 000010