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