(57)【要約】  ある実施例によると、コンピューターシステムが開示される。コンピューターシステムは、中央演算処理装置（ＣＰＵ）、ＣＰＵに結合されたキャッシュメモリー及びキャッシュメモリーに結合されたキャッシュ制御部を有する。キャッシュメモリーは、追加データを格納する複数の圧縮可能なキャッシュラインを有する。キャッシュ制御部は、キャッシュラインへの各アクセスの後、キャッシュラインを圧縮キャッシュラインに圧縮する前に、キャッシュラインを順序付けする。
2007519100.tif 000002
【特許請求の範囲】
【請求項１】
コンピューターシステムであって、
中央演算処理装置（ＣＰＵ）、
前記ＣＰＵと結合され、追加データを格納する複数の圧縮可能なキャッシュラインを有するキャッシュメモリー、及び
前記キャッシュメモリーと結合され、キャッシュラインへの各アクセスの後、前記キャッシュラインを圧縮キャッシュラインに圧縮する前に、前記キャッシュラインを再順序付けするキャッシュ制御部、
を有する、コンピューターシステム。
【請求項２】
前記キャッシュ制御部は、次にアクセスされるキャッシュライン内のワードを予測し、予測されたワードを前記キャッシュラインの先頭に位置させる再順序付け方式を実行する、請求項１記載のコンピューターシステム。
【請求項３】
前記キャッシュライン内の前記予測されたワードは、関連したオフセットを有する、請求項２記載のコンピューターシステム。
【請求項４】
前記再順序付け方式は、アクセスされたワードがキャッシュラインの先頭に移動させられるようキャッシュラインを回転する段階を有する、請求項２記載のコンピューターシステム。
【請求項５】
前記キャッシュラインは、圧縮される時に回転される、請求項４記載のコンピューターシステム。
【請求項６】
インデックスの配列は、キャッシュラインの回転順列を記録するために格納される、請求項４記載のコンピューターシステム。
【請求項７】
前記再順序付け方式は、キャッシュラインの最後にアクセスされたワードを、キャッシュラインの先頭に移動し、同時にキャッシュラインの残りのライン順序を維持する段階を有する、請求項２記載のコンピューターシステム。
【請求項８】
前記再順序付け方式は、最後にアクセスされたワードがキャッシュラインの２番目のワードに位置するようキャッシュラインを回転する段階を有する、請求項２記載のコンピューターシステム。
【請求項９】
前記再順序付け方式は、キャッシュラインで最近利用されたワード順序に基づく、請求項２記載のコンピューターシステム。
【請求項１０】
前記キャッシュ制御部は、１つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、及び前記圧縮データラインを伸長する伸長ロジックを有する、請求項１記載のコンピューターシステム。
【請求項１１】
前記ＣＰＵと結合されたメモリー制御部を更に有し、前記メモリー制御部は、
１つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、
前記データの圧縮ラインを伸長する伸長ロジック、及び
ラインへの各アクセスの後、データラインを圧縮データラインに圧縮する前に、データラインを再順序付けするロジック、
を有する、請求項２記載のコンピューターシステム。
【請求項１２】
前記メモリー制御部と結合され、圧縮データラインを送信及び受信するバス、及び
前記バスと結合された主記憶装置、
を更に有する、請求項１１記載のコンピューターシステム。
【請求項１３】
方法であって、
第１のデータラインにアクセスする段階、
次にアクセスされる前記データライン内の第１のワードを予測する段階、
前記第１のワードを前記データラインの先頭に位置させる段階、
前記第１のデータラインを圧縮データラインの形式に圧縮する段階、
を有する、方法。
【請求項１４】
前記データライン内の前記第１のワードが位置する場所を示すオフセットをデータラインに格納する段階を更に有する、請求項１３記載の方法。
【請求項１５】
前記第１のワードをデータラインの先頭に位置する段階は、前記第１のワードがデータラインの先頭に位置するよう、データラインを回転する段階を有する、請求項１３記載の方法。
【請求項１６】
データラインの回転順列を記録するために、インデックスの配列を格納する段階を有する、請求項１５記載の方法。
【請求項１７】
前記第１のワードをデータラインの先頭に位置する段階は、データラインの最後にアクセスされたワードがデータラインの先頭に位置するよう、データラインを回転し、同時にキャッシュラインの残りのライン順序が維持する段階を有する、請求項１３記載の方法。
【請求項１８】
前記第１のワードをデータラインの先頭に位置する段階は、最後にアクセスされたワードがキャッシュラインの２番目のワードに位置するよう、キャッシュラインを回転する段階を有する、請求項１３記載の方法。
【請求項１９】
装置であって、
１つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、及び
ラインへの各アクセスの後、データラインを圧縮データラインへ圧縮する前に、データラインを再順序付けするロジック、
を有する、装置。
【請求項２０】
圧縮データラインを伸長する伸長ロジックを更に有する、請求項１９記載の装置。
【請求項２１】
前記データラインを再順序付けするロジックは、次にアクセスされるデータライン内のワードを予測し、予測されたワードをデータラインの先頭に位置させる再順序付け方式を実行する、請求項１９記載の装置。
【請求項２２】
前記データライン内の前記予測されたワードは、関連したオフセットを有する、請求項２１記載の装置。
【請求項２３】
前記再順序付け方式は、アクセスされたワードがデータラインの先頭に移動させられるようデータラインの回転する段階を有する、請求項２１記載の装置。
【請求項２４】
前記キャッシュラインは、圧縮される時に回転される、請求項２３記載の装置。
【請求項２５】
コンピューターシステムであって、
中央演算処理装置（ＣＰＵ）、
前記ＣＰＵと結合され、複数のキャッシュラインの１つ以上を圧縮キャッシュラインに圧縮する圧縮ロジック及びラインへの各アクセスの後、データのラインをデータの圧縮ラインに圧縮する前に、データのラインを再順序付けするロジックを有するメモリー制御部、及び
前記メモリー制御部と結合された主記憶装置、
を有する、コンピューターシステム。
【請求項２６】
前記キャッシュ制御部は、圧縮キャッシュラインを伸長する伸長ロジックを更に有する、請求項２５記載のコンピューターシステム。
【請求項２７】
前記キャッシュ制御部は、次にアクセスされるデータライン内のワードを予測し、予測されたワードをデータラインの先頭に位置させる再順序付け方式を実行する、請求項２５記載のコンピューターシステム。
【請求項２８】
前記データライン内の前記予測されたワードは、関連したオフセットを有する、請求項２７記載のコンピューターシステム。
【請求項２９】
コンピューターシステムであって、
１つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、及び
ラインへの各アクセスの後、データラインを圧縮データラインへ圧縮する前に、データラインを再順序付けするロジック、を有する、
コントロールハブ／スイッチを有するコンピューターシステム。
【請求項３０】
前記コントロールハブ／スイッチは、圧縮キャッシュラインを伸長する伸長ロジックを更に有する、請求項２９記載のコンピューターシステム。
【請求項３１】
前記ヒントロジックは、圧縮データラインからヒント情報を抽出する、請求項３０記載のコンピューターシステム。
【請求項３２】
コンピューターシステムであって、
１つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、及び
ラインへの各アクセスの後、データラインを圧縮データラインへ圧縮する前に、データラインを再順序付けするロジック、を有する、
バス制御部を有するコンピューターシステム。
【請求項３３】
前記コントロールハブ／スイッチは、圧縮キャッシュラインを伸長する伸長ロジックを更に有する、請求項３２記載のコンピューターシステム。
【請求項３４】
前記ヒントロジックは、圧縮データラインからヒント情報を抽出する、請求項３３記載のコンピューターシステム。
【請求項３５】
装置であって、
１つ以上のデータブロックを圧縮データブロックに変換する変換ロジック、及び
ブロックへの各アクセスの後、データブロックを圧縮データブロックへ圧縮する前に、データブロックを再順序付けするロジック、
を有する、装置。
【請求項３６】
圧縮データブロックを伸長する伸長ロジックを更に有する、請求項３５記載の装置。
【請求項３７】
前記データブロックを再順序付けするロジックは、次にアクセスされるデータブロック内のワードを予測し、予測されたワードをブロックの先頭に位置させる再順序付け方式を実行する、請求項３５記載の装置。
【請求項３８】
前記ブロック内の前記予測されたワードは、関連したオフセットを有する、請求項３７記載の装置。
【請求項３９】
前記データ変換ロジックは、収集／分散動作を実行する、請求項２１記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューターシステムに関し、より詳細には、本発明は中央演算処理装置（ＣＰＵ）キャッシュに関する。
【背景技術】
【０００２】
現在、種々の方法が、ランダムアクセスメモリー（ＲＡＭ）のようなコンピューターシステムの主記憶装置の内容を圧縮するために利用されている。
これらの方法は、同一の性能を提供するために必要な物理記憶空間の量を減少させる。例えば、メモリーが２：１の比を用いて圧縮される場合、メモリーは２倍のデータ量を同一のコストで、又は同一のデータ量を半分のコストで格納し得る。
【０００３】
このような方法の１つに、ニューヨーク州アーモンク市のＩＢＭ（インターナショナル・ビジネス・マシンズ）社により開発されたメモリー拡張技術（ＭＸＴ）がある。ＭＸＴは、インストールされている主記憶装置の有効容量を２倍にするメモリーシステムアーキテクチャーを用い、システムメモリーのコストを解決する。論理集中型の圧縮器及び伸長器ハードウェアエンジンは、データが共有キャッシュと主記憶装置の間を移動する時に、圧縮と伸長を同時に行う。圧縮器は、データブロックをアルゴリズムの許容範囲で小さく符号化する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、現在、キャッシュに格納されているデータを圧縮する方法はない。キャッシュデータを圧縮する能力を有することは、結果として主記憶の圧縮と同様の効果を得るだろう（例えば、同一の性能を提供するために必要なキャッシュ空間の量を削減する）。
【発明を実施するための最良の形態】
【０００５】
本発明は、以下の詳細な説明及び本発明の種々の実施例の図からより完全に理解されるだろう。図は、しかしながら、本発明を特定の実施例に限定するものと見なされるべきではなく、単に説明及び理解のためである。
【０００６】
キャッシュのデータを圧縮する方法が開示される。以下の説明では、多くの詳細事項が説明される。しかしながら、当業者は、本発明がそのような特定の詳細にかかわらず実施されて良いことを理解するだろう。他の例では、既知の構造及び装置は、本発明の不明瞭さを回避するため、詳細ではなくブロック図の形式で示される。
【０００７】
本願明細書における「ある実施例」又は「実施例」という表現は、実施例と関連付けられて説明される特定の機能、構造、又は特徴が、本発明の少なくとも１つの実施例に包含されるということを意味する。本願明細書における「ある実施例では」という表現は、必ずしも全て同一の実施例を参照するものではない。
【０００８】
図１は、コンピューターシステム１００の実施例を示すブロック図である。コンピューターシステム１００は、バス１０５と結合された中央演算処理装置（ＣＰＵ）１０２を有する。ある実施例では、ＣＰＵ１０２は、カリフォルニア州サンタクララのインテル社から入手可能なＰｅｎｔｉｕｍ（登録商標）  ＩＩ系プロセッサー、Ｐｅｎｔｉｕｍ（登録商標）  ＩＩＩプロセッサー及びＰｅｎｔｉｕｍ（登録商標）  ＩＶを含むＰｅｎｔｉｕｍ（登録商標）系プロセッサーの１つである。代案として、他のＣＰＵが利用されて良い。
【０００９】
チップセット１０７も、バス１０５と結合される。チップセット１０７は、メモリーコントローラハブ（ＭＣＨ）１１０を有する。ＭＣＨ１１０は、主記憶装置１１５と結合されたメモリー制御部１１２を有して良い。主記憶装置１１５は、データ及び命令シーケンス及びＣＰＵ１０２又はシステム１００に含まれる他の装置により実行され得るデータ信号により表されるコードを格納する。
【００１０】
ある実施例では、主記憶装置１１５は、ダイナミックランダムアクセスメモリー（ＤＲＡＭ）を有するが、主記憶装置１１５は、他のメモリー種類を用いて実施されても良い。複数のＣＰＵ及び／又は複数のシステムメモリーのような追加装置はまた、バス１０５と結合されて良い。
【００１１】
ある実施例では、ＭＣＨ１１０は、入出力制御ハブ（ＩＣＨ）１４０とハブインターフェースを経由して結合される。ＩＣＨ１４０は、コンピューターシステム１１０内の入出力（Ｉ／Ｏ）装置にインターフェースを提供する。例えば、ＩＣＨ１４０は、オレゴン州ポートランドのＰＣＩ−ＳＩＧ（ＰＣＩ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ）により開発されたＰＣＩバスｖ２．１と結合されて良い。
【００１２】
圧縮キャッシュ
ある実施例によると、キャッシュメモリー１０３は、プロセッサー１０２内に存在し、メモリー１１５にも格納されるデータ信号を格納する。キャッシュ１０３は、アクセスの局所性を利用してプロセッサー１０３によるメモリーアクセスを高速化する。別の実施例では、キャッシュ１０３は、プロセッサー１０３の外部に存在する。
【００１３】
更に別の実施例によると、キャッシュ１０３は、圧縮キャッシュラインを有し、同一の大きさの空間内で追加データの格納を可能にする。図２は、キャッシュ１０３の物理構造の実施例を示す。ある実施例では、キャッシュ１０３は、５１２セット、４ウェイのセットアソシアティブキャッシュである。しかしながら、この分野の通常の知識を有する者は、他の大きさを有するキャッシュが本発明の範囲から逸脱することなく実施され得ることを理解するだろう。
【００１４】
タグは、セットの各ラインに関連付けられる。更に、圧縮ビットは、各タグに関連付けられる。圧縮ビットは、対応するキャッシュラインが圧縮データを有するか否かを示す。圧縮ビットが設定されている場合、キャッシュラインの物理メモリーは、２つの圧縮コンパニオンラインを有する。コンパニオンラインは、コンパニオンビットだけが異なるアドレスを有する２つのライン（例えば、行配列に配置された２つの連続するメモリーライン）である。
【００１５】
ある実施例では、コンパニオンビットは、コンパニオンラインが隣接するラインであるように選択される。しかしながら、如何なるビットもコンパニオンビットに選択され得る。他の実施例では、圧縮表示を、ＭＥＳＩ状態ビットのような、キャッシュラインの状態を符号化する他のビットと共に符号化し、この空間のオーバーヘッドを全て除去することが可能であって良い。
【００１６】
圧縮ビットが設定されていない場合、キャッシュラインの物理メモリーは、１つの非圧縮ラインを有する。図２の塗り潰された圧縮ビットは、圧縮キャッシュラインを示す。図３は、キャッシュ１０３の論理構造の実施例を示す。図３に示されるように、キャッシュラインは、２：１の圧縮方法に従い圧縮されている。例えば、セット０の２番目のラインは圧縮され、従って１つというより２つのキャッシュラインを格納する。
【００１７】
ある実施例では、各キャッシュラインは、圧縮されていない場合、６４バイトのデータを有する。従って、各キャッシュラインは、圧縮されている場合、１２８バイトのデータを有する。以上に説明された圧縮方法の効果は、各キャッシュタグが可変長の論理キャッシュラインの位置を示すことである。結果として、キャッシュ１０３は、物理的大きさを増加させることなく、２倍のデータ量を格納し得る。
【００１８】
再び図１を参照すると、キャッシュ制御部１０４は、キャッシュ１０３と結合され、キャッシュ１０３の動作を管理する。特に、キャッシュ制御部１０４は、キャッシュ１０３のルックアップ動作を実行する。ある実施例によると、アドレスを物理セット及びウェイに位置付けるために利用されるハッシュ関数は、一般のキャッシュ制御部で利用されるものから変更される。ある実施例では、ハッシュ関数は、コンパニオンラインが同一のセットに位置付けられるよう構成される。従って、コンパニオンラインは、１つのアドレスタグを利用する単一のライン（例えばウェイ）に一緒に圧縮されて良い。
【００１９】
図４Ａは、非圧縮キャッシュで利用されるメモリーアドレスの例を示す。従来のキャッシュでは、アドレスは、タグ、セット及びオフセット部に分割される。セット部は、ライン内のセットの１つを選択するために利用される。同様に、オフセット部は、ライン内のバイトを選択するために利用されるアドレスの下位ビットである。
【００２０】
図４Ｂは、圧縮キャッシュ内の検索のために利用されるメモリーアドレスの例を示す。図４Ｂは、コンパニオンラインを同一のセットに位置付けるために利用されるコンパニオンビットの実施例を示す。コンパニオンビットは、ラインが圧縮されていない場合に利用される。従って、ラインが圧縮されていない場合、コンパニオンビットは２つの圧縮コンパニオンラインのどちらが利用されるべきかを示す。
【００２１】
ある実施例では、セット選択に利用されるアドレスビット部は、コンパニオンビットがセット選択とバイトオフセットビットの間に位置するよう、１つ左にシフトされる。このように、コンパニオンビットとセット選択ビットが重なり合わないので、コンパニオンラインは、同一のキャッシュセットに位置する。コンパニオンビットは、もはやセット選択ビットの一部ではなく、タグの一部になるが、実際のタグの大きさは増加しない。従来の非圧縮キャッシュでは、コンパニオンビットは、アドレスの一部であり、セット選択で利用され、アドレスが奇数又は偶数キャッシュセットにハッシュされるかを決定する。
【００２２】
図５は、圧縮キャッシュのタグアレイエントリーの実施例を示す。タグアレイエントリーは、コンパニオンビット（例えばアドレスタグビットの一部として）及び圧縮ビットを有する。圧縮ビットは、圧縮キャッシュ１０３のタグを従来の非圧縮キャッシュのタグより１ビット長くする。圧縮ビットは、ラインが圧縮されているか否かを示す。
【００２３】
特に、圧縮ビットは、コンパニオンビットの処理方法を特定する。圧縮ビットがラインは圧縮されていると示す場合、ラインは圧縮された対なので、コンパニオンビットは、オフセットの一部として扱われる。圧縮ビットが圧縮を示さない場合、コンパニオンビットは、タグアレイの一部と見なされ、オフセットの一部として無視される。
【００２４】
図６は、キャッシュ制御部１０４の実施例を示すブロック図である。キャッシュ制御部１０４は、セット及びウェイ選択ロジック６１０、バイト選択ロジック６２０及び圧縮ロジック６３０を有する。セット及びウェイ選択ロジック６１０は、キャッシュ１０３内のキャッシュラインを選択するために利用される。図７は、圧縮キャッシュのセット及びウェイ選択ロジック６１０の実施例を示す。
【００２５】
図７を参照すると、セット及びウェイ選択ロジック６１０は、タグアレイからの入力を受信し受信したアドレスに基づきキャッシュラインを選択するタグ比較ロジック７１０を有する。タグ比較ロジック７１０は、キャッシュラインが圧縮データを有するか否かを考慮する。キャッシュラインは可変データサイズを有するので、タグ比較ロジック７１０も特定のラインが圧縮されているか否かに依存して長さが変わる。従って、タグ整合は、圧縮ビットを考慮する。
【００２６】
図８は、非排他的論理和（ＸＮＯＲ）ゲート１からｎ、ＯＲゲート及びＡＮＤゲートを有するタグ比較ロジック７１０の実施例を示す。ＸＮＯＲゲート及びＡＮＤゲートは、従来の非圧縮キャッシュに含まれ、対応するものが見付かるまで、アドレスをタグアレイ内のタグエントリーと比較するために利用される。ＯＲゲートは、ラインの圧縮状態に基づきコンパニオンビットを選択するために利用される。
【００２７】
アドレスのコンパニオンビットは、圧縮ビットが設定されているか否かに基づき、選択的に無視される。以上に説明されたように、圧縮ビットが設定されている場合、キャッシュラインは両方のコンパニオンを有するので、アドレスのコンパニオンビットは、タグ整合の間無視される。圧縮ビットが設定されていない場合、アドレスのコンパニオンビットは、タグのコンパニオンビットと比較される。
【００２８】
等価演算子の「ＸＮＯＲの結果」の構成は、従って、ＯＲゲートを利用し選択的にコンパニオンビットを無視する。ある実施例では、タグのコンパニオンビットは、圧縮ビットが設定されている（例えば、「ｄｏｎ’ｔ  ｃａｒｅ」である）場合、タグのコンパニオンビットは他の用途に利用され得る。例えば、ラインが圧縮されている場合、このビットは圧縮形式ビットとして用いられ、２つの異なる圧縮アルゴリズムの間の選択に利用されて良い。別の例では、コンパニオンビットは、圧縮ライン内のコンパニオンラインの順序を符号化するために利用され得る。
【００２９】
他の実施例では、各キャッシュラインは、セクターが共に圧縮され得る場合のみ、同一の物理キャッシュラインに格納された２つのセクターに分けられる。タグエントリーでは、コンパニオンビット及び圧縮ビットは、図９に示されるようにセクター存在表示になる。この実施例では、コンパニオンビットはセクター表示（例えば上位又は下位）であり、従ってセクターＩＤとして改称されている。
【００３０】
従って、「０１」は下位セクター（圧縮されていない）を示し、「１０」は上位セクター（圧縮されていない）を示し、及び「１１」は両方のセクター（２：１圧縮）を示す。また、この構成では、物理キャッシュラインサイズは、論理セクターサイズと等しい。非圧縮の場合、ラインの各セクターは、同一のセット内の異なる物理ライン（例えば、同一のセットの異なるウェイ）に格納される。
【００３１】
少なくとも２：１で圧縮可能な場合、各ラインの２つのセクターは、（例えば、１つのウェイ内の）単一の物理キャッシュラインに格納される。重要なことに、これは、所与の論理ラインの異なる論理セクターが非圧縮時に同時に異なるウェイに格納され得る従来のセクター分けされたキャッシュ構成と異なる。
【００３２】
ある実施例では、未使用符号（「００」）は、ＭＥＳＩ状態を符号化する他のビットと結合された場合、タグビットコストを低下する可能性のある無効なエントリーを示すために利用される。これは単に補助的な符号化なので、セクター存在ビットは、タグ整合を検出する若干異なるロジックを必要とする。図１０は、セクター存在ビットを利用するタグ比較ロジック７１０の別の実施例を示す。
【００３３】
再び図６を参照すると、バイト選択ロジック６２０は、ライン内のアドレス指定されたデータを選択する。ある実施例によると、バイト選択ロジック６２０は、圧縮ビットに依存する。図１１は、バイト選択ロジック６２０の実施例を示す。バイト選択ロジック６２０は、選択されたキャッシュラインを必要な場合に伸長する伸長器１１１０を有する。入力マルチプレクサは、伸長されたキャッシュラインと非圧縮キャッシュラインの間で、圧縮ビットに基づき選択する。
【００３４】
ある実施例では、オフセットの範囲は、ラインが圧縮されているか否かに依存する。ラインが圧縮されている場合、アドレスのコンパニオンビットは、オフセットの高位のビットとして利用される。ラインが圧縮されていない場合、伸長器１１１０はバイパスされ、アドレスのコンパニオンビットはオフセットに利用されない。選択されたラインは、圧縮データを格納できるよう、物理ラインサイズの２倍のサイズを有するバッファに有せられる。
【００３５】
代案の実施例は、コンパニオンビットを利用し、伸長されたワードの半分のどちらを、物理ラインサイズと同じ長さのバッファに格納するか選択するよう選んで良い。しかしながら、ライン全体のバッファリングは、キャッシュへのライト後にデータを変更及び再圧縮する場合に便利である。
【００３６】
再び図６を参照すると、圧縮ロジック６３０は、キャッシュラインを圧縮するために利用される。ある実施例では、キャッシュラインは、Ｌｅｍｐｅｌ−Ｚｉｖ圧縮アルゴリズムに従い圧縮されている。しかしながら、他の実施例では、キャッシュラインを圧縮するために他の圧縮アルゴリズム（例えば、ＷＫ、Ｘ―Ｍａｔｃｈ、符号ビット圧縮、ラン長圧縮、等）が利用されて良い。
【００３７】
圧縮ロジック６３０はまた、何時ラインが圧縮されるべきかを決定するために利用されて良い。  ある実施例によると、機を見て圧縮が行われ、何時ラインが圧縮されるべきかが決定されて良い。機を見て圧縮する場合、キャッシュミスの発生時、要求されるキャッシュラインは、メモリー１１５からフェッチされ、キャッシュ１０３は、コンパニオンラインがキャッシュに存在する場合、２つのコンパニオンを１つのラインに圧縮しようとする。コンパニオンラインがキャッシュ１０３に存在しない場合、又は２つのコンパニオンが２：１で圧縮可能でない場合、キャッシュ１０３は標準の置換アルゴリズムを利用しフェッチされたラインのために空間を作る。
【００３８】
その他の場合、キャッシュ１０３は存在するコンパニオンのキャッシュラインを再利用し、新たに圧縮されたコンパニオンの対を格納するので、置換を回避する。留意すべきは、タグ整合演算子は、第２のキャッシュアクセスを行うことなくコンパニオンラインが存在するか否かを検査するよう、簡単に変更されることである。例えば、コンパニオンビットを除くアドレスタグビットの全てが整合する場合、コンパニオンラインは存在する。
【００３９】
別の実施例では、プリフェッチ方式が利用され、ラインが圧縮されるべきかどうかを判定する。プリフェッチ方式では、機を見た方法はプリフェッチを追加することにより高機能化される。要求−フェッチされたラインのコンパニオンが存在しない場合、キャッシュはコンパニオンをプリフェッチし、２つのコンパニオンを１つのラインに圧縮しようとする。
【００４０】
２つのコンパニオンラインが２：１に圧縮可能でない場合、キャッシュ１０３は、プリフェッチされたライン（従ってバス帯域を消費する）の廃棄又は非圧縮プリフェッチラインのキャッシュへの格納（従ってセット内で置換されるべき２つのラインの合計になる可能性がある）の何れかの選択を有する。ある実施例では、ハードウェアは、どれだけの空間的局所性及びプログラムの待ち時間の許容範囲があるかに基づき、これら方法の間を適切に切り替え得る。
【００４１】
別の実施例では、犠牲者圧縮方式が利用され、ラインが圧縮されるべきかどうかを判定する。犠牲者圧縮の場合、強制退去させられようとしている（例えば、犠牲者）ラインを圧縮しようとする。犠牲者がまだ圧縮されてなくそのコンパニオンが存在する場合、キャッシュ１０３は、犠牲者をコンパニオンと一緒に圧縮しようとすることにより、犠牲者にキャッシュ内に残る機会を与える。犠牲者が既に圧縮されており、そのコンパニオンが存在しないか、又は犠牲者とそのコンパニオンが２：１で圧縮可能でない場合、犠牲者は強制退去させられる。その他の場合、キャッシュ１０３は存在するコンパニオンのキャッシュラインを再利用し、圧縮されたコンパニオンの対を格納するので、強制退去を回避する。
【００４２】
データが書き込まれる時、ラインの圧縮可能性は変化して良い。コンパニオンの圧縮された対へのライトは、その対をもはや圧縮可能でなくさせる。圧縮キャッシュラインが非圧縮になる場合、３つの方法が採られて良い。第１の方法は、別のラインを単に強制退去させ、展開の結果得られた余分のラインのために空間を作る方法である。これは、セット内の全てのラインが圧縮されている場合、２つのコンパニオンラインを強制退去させる。
【００４３】
第２の方法は、書き込まれたラインのコンパニオンを強制退去させる方法である。第３の方法は、書き込まれたラインを強制退去させる方法である。これらの方法のどれを利用するかという選択は、圧縮キャッシュ１０３とプロセッサーに最も近い次のキャッシュとの間の相互作用に依存する（例えば、Ｌ３が圧縮キャッシュである場合、Ｌ３及びＬ２の相互作用に依存する）。
【００４４】
圧縮キャッシュがＬ３キャッシュを包含し及びＬ２がライトバックキャッシュであるとすると、始めの２つの方法は、Ｌ２キャッシュ内の強制退去させられたラインの無効化を含み、複数段の包含を維持する。これは、Ｌ２又はＬ１内の最近アクセスされたキャッシュラインを強制退去させる危険を有する。第３の方法は、Ｌ２無効化を必要とせず、書き込まれているラインはＬ２から強制退去させられているので、最近アクセスされたキャッシュラインをＬ２から強制退去させる危険を有さない。
【００４５】
以上に説明された機構は、同一のセットに位置付けられコンパニオンビットのみが異なる如何なる２つのキャッシュラインも、１つのキャッシュラインに一緒に圧縮することが可能である。ある実施例では、この機構はセット位置付け機能を変更し、隣接メモリーラインが一緒に圧縮されるようコンパニオンビットを選択し、空間的局所性を利用する。
【００４６】
圧縮のためのキャッシュラインの再順序付け
以上に説明されたキャッシュ圧縮の機構は、キャッシュの空間的時間的資源の要求を低減するために有効な技術である。しかしながら、シリアルアルゴリズムが利用されキャッシュラインデータを圧縮する場合はいつでも、ラインはアクセスの前に伸長されなければならないので、キャッシュラインをアクセスする時の待ち時間の増加がしばしば起こるだろう。例えば、Ｌｅｍｐｅｌ−Ｚｉｖ及びＷｉｌｓｏｎ−Ｋａｐｌａｎのような圧縮アルゴリズムは、圧縮データへのランダムアクセスを妨げる。従って、圧縮キャッシュライン内のデータは、シリアルにのみアクセスされ得る。
【００４７】
図１２は、キャッシュラインにおけるリードオフセットの実施例を示す。キャッシュラインへの第１のリードアクセスでは、キャッシュライン内のダブルワード（３２ビットワード）３がアクセスされる。しかしながら、３番目のダブルワードをアクセスする前に、ダブルワード０−３は伸長されなければならない。続くリードアクセスでは、ダブルワード４がアクセスされる。この例では、ダブルワード４をアクセスする前に、ダブルワード０−４は伸長されなければならない。方法がクロック周期毎に１つのダブルワードを伸長する場合、４番目のダブルワードをアクセスする時間は４周期を要する。ダブルワードをアクセスする度に４以上のダブルワードを伸長しなければならないことは、非効率であり処理時間の浪費になる。
【００４８】
ある実施例によると、キャッシュラインは、各アクセスの後、圧縮の前に、アクセス待ち時間を減少させるために再順序付けされる。例えば、再順序付け方法は、どのワードがラインへの次のアクセスでアクセスされるか（例えば、重要なワード）を予測し、この予測されたワードをブロックの先頭に置き、アクセス待ち時間を最小限に抑える。
【００４９】
本願明細書で説明された実施例は、キャッシュ圧縮システムに重点を置くが、この分野の通常の知識を有する者は、説明された機構はバストランザクション又はメモリーブロック内のワードの再順序付けにも拡大して適用されることを理解するだろう。このようなシステムの例は、ブロック順序に複数のバストランザクションを要求する大きいブロック転送方式、及びデータが重要なチャンクに最初に送信されないメモリーシステムのシリアル圧縮方式を包含する。このようなシステムでは、重要なワードのアクセスにおけるアクセス時間はまた、データブロック内の重要なワードの位置にほぼ比例する。
【００５０】
この分野の通常の知識を有する者は、説明された機構はまた、他のデータ変換システムに適用されて良いことを理解するだろう。このようなデータ変換システムのある実施例は、疎記憶域を密記憶域、レジスター又はキャッシュラインに圧縮／解凍する収集分散動作を有する。このような実施例では、大きなデータブロックは、実際にリードされるワードをほんのわずかしか有さなくて良い。最適化は、キャッシュを汚さず又は帯域を消費しないよう、この大きなデータブロックから少数の重要ワードのリード（及びキャッシュライン内の圧縮）のみ行う、「収集」動作を可能にする。いくつかの特定のメモリーシステム（例えば、ネットワークに適用される記憶装置のホスト−バスアダプター）は、この変換を利用する。データブロックのメモリーへの書き込み処理及び大きなデータブロックのデータの解凍は、「分散」動作と称される。
【００５１】
ある実施例では、再順序付け方式は、各キャッシュライン内の次にアクセスされるワードは予測可能であるという前提に基づく。２つの運用規則がある。第１に、シーケンシャルアクセスでは、次にアクセスされるワードは、最後にアクセスされたワードに直ぐ隣接する次のワードである。第２に、非シーケンシャルアクセスでは、特定のプログラムレベルのアクセスされたデータ構造インスタンスは、キャッシュライン内に固定のオフセットを有して残る。結果として、このデータ構造インスタンスへのアクセスは、キャッシュライン内の同一のアクセスオフセットで現れる。
【００５２】
再順序付け方式は、種々の順列を可能にする。ある実施例では、ダブルワード又はオフセットへのキャッシュラインの回転が利用される。特に、キャッシュラインはリードアクセス時にラインへ回転され、アクセスされたワード又はチャンクはラインの先頭へ移動させられる。図１３は、回転方式を利用するキャッシュラインの実施例を示す。ダブルワード３のリードでは、ラインは、最初のダブルワードとしてダブルワード３へ回転する。続くダブルワード１のリードでは、ラインは、ダブルワード１が最初のダブルワードとなるよう回転する。
【００５３】
図１４は、回転方式を利用するキャッシュラインの実施例を示す。この実施例では、プロセッサーはダブルワード３を、次にライン内でダブルワード４をリードする。回転により、ダブルワード４への第２のアクセスは、ラインのオフセット１を有する。結果として、回転方式により３周期の節約が実現される。
【００５４】
ある実施例では、回転方式の順列は、ラインにオフセットとして記録される。このように、６４バイトのライン内のライン当たり４ビットのダブルワードに関する回転は、オフセットに組み込まれる。他の実施例では、キャッシュラインはチャンクにより回転されて良い（例えば２ダブルワード）。このように、ライン当たり３ビットのチャンクに関する回転は、オフセットに組み込まれる。圧縮キャッシュでは、圧縮ラインは、圧縮ライン内のビットを用いて符号化される順列方式を用い回転される。
【００５５】
ある実施例では、回転はラインが圧縮された時に生じる（例えば、メモリーから届く、また圧縮がメモリー転送と重複して良い、重要なチャンクが最初にある順序でラインが圧縮される）。この方式の利点は、順列データを格納する如何なる追加テーブルも要求されないことである。
【００５６】
代案として、順列を記録するタグアレイと同時に、順列インデックスの配列を有する方式がある。この方式の利点は、再順序付けの圧縮を必要としない点である。バス又は相互接続トランザクションでは、エージェントの送信は、通信ブロック内の順序を特定する。他の実施例では、回転はキャッシュへのトランザクションのライト又は最初のリードで生じる。
【００５７】
別の再順序付け順列は、最後にアクセスされたダブルワードを先頭へ移動し、同時にラインの残りのライン順序を維持する。更に別の実施例では、キャッシュラインは、最後にアクセスされたダブルワードがライン内の２番目のダブルワードの位置になるよう回転される。更に別の実施例では、ラインの圧縮された対を有し、最後にアクセスされたダブルワードが、圧縮された対の先頭へ移動させられる。他の実施例では、キャッシュラインは、最近に利用されたダブルワードの順序に基づき順列を特徴付けて良い。
【００５８】
また、本発明の多くの代案及び変更は、以上の説明から、この分野の通常の知識を有する者には明らかである。示された如何なる特定の実施例も例であり、本発明を限定する者ではない。従って、種々の実施例の詳細に関する参照は、本発明として考えられる特徴に言及したものであり、請求の範囲を限定するものではない。
【図面の簡単な説明】
【００５９】
【図１】コンピューターシステムの実施例を示す。
【図２】物理キャッシュ構造の実施例を示す。
【図３】論理キャッシュ構造の実施例を示す。
【図４Ａ】非圧縮キャッシュで利用されるメモリーアドレスの例を示す。
【図４Ｂ】圧縮キャッシュで利用されるメモリーアドレスの例を示す。
【図５】圧縮キャッシュのタグエントリーの実施例を示す。
【図６】キャッシュ制御部の実施例を示すブロック図である。
【図７】圧縮キャッシュのセット及びウェイ選択機構の実施例を示す。
【図８】タグ比較ロジックの実施例を示す。
【図９】圧縮キャッシュのタグエントリーの別の実施例を示す。
【図１０】タグ比較ロジックの別の実施例を示す。
【図１１】バイト選択ロジックの実施例を示す。
【図１２】非回転キャッシュラインの実施例を示す。
【図１３】回転キャッシュラインの実施例を示す。
【図１４】回転キャッシュラインの別の実施例を示す。
【図１】
2007519100.tif 000003
【図２】
2007519100.tif 000004
【図３】
2007519100.tif 000005
【図４Ａ】
2007519100.tif 000006
【図４Ｂ】
2007519100.tif 000007
【図５】
2007519100.tif 000008
【図６】
2007519100.tif 000009
【図７】
2007519100.tif 000010
【図８】
2007519100.tif 000011
【図９】
2007519100.tif 000012
【図１０】
2007519100.tif 000013
【図１１】
2007519100.tif 000014
【図１２】
2007519100.tif 000015
【図１３】
2007519100.tif 000016
【図１４】
2007519100.tif 000017
【国際調査報告】
2007519100.tif 000018
2007519100.tif 000019
2007519100.tif 000020