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