(57)【要約】  圧縮されたキャッシュラインのワース・オブ・インフォメーションにより動作可能なマルチプロセッサ計算システムのキャッシュコヒーレンシルールが説明される。圧縮されたキャッシュラインのワース・オブ・インフォメーションにより動作可能なマルチプロセッサ計算システムがまた説明される。マルチプロセッサ計算システムは、各種計算システムのコンポーネントと通信し、キャッシュラインのワース・オブ・インフォメーションを圧縮／解凍するための複数のハブを有する。キャッシュコヒーレンシルールに従ってキャッシュラインのワース・オブ・インフォメーションをラベル付け可能なプロセッサが説明される。上述されるようなハブを有するプロセッサもまた、説明される。
2007520813.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュコヒーレンシルールロジック回路を有するプロセッサであって、
ａ）キャッシュラインのワース・オブ・インフォメーションが、当該圧縮されたキャッシュラインのワース・オブ・インフォメーションが圧縮されたままであることを可能にする新たな情報により書き込まれた圧縮されたキャッシュラインのワース・オブ・インフォメーションである場合、書き込み直前と同一の状態により前記圧縮されたキャッシュラインのワース・オブ・インフォメーションを維持することと、
ｂ）前記キャッシュラインのワース・オブ・インフォメーションが、新たな情報により書き込み後は圧縮されたままとすることができない圧縮されたキャッシュラインのワース・オブ・インフォメーションから得られた圧縮されていないキャッシュラインのワース・オブ・インフォメーションである場合、該圧縮されていないキャッシュラインのワース・オブ・インフォメーションをＭｏｄｉｆｉｅｄ状態であるとしてラベル付けすることと、
ｃ）前記キャッシュラインのワース・オブ・インフォメーションが、圧縮されていないキャッシュラインのワース・オブ・インフォメーションと該圧縮されていないキャッシュラインのワース・オブ・インフォメーションのコンパニオンとを圧縮することによって生成される圧縮されたキャッシュラインのワース・オブ・インフォメーションである場合、前記圧縮されたキャッシュラインのワース・オブ・インフォメーションをＭｏｄｉｆｉｅｄ状態であるとしてラベル付けすることと、
から構成されるグループから選択された少なくとも１つのキャッシュコヒーレンシルールに従って、前記キャッシュコヒーレンシロジック回路は、前記キャッシュラインのワース・オブ・インフォメーションをラベル付けすることを特徴とするプロセッサ。
【請求項２】
圧縮されたキャッシュラインのワース・オブ・インフォメーションを使用するマルチプロセッサ計算システムへの当該プロセッサの参入をサポートするためのハブを有するプロセッサであって、
前記ハブは、
ａ）圧縮されたキャッシュラインのワース・オブ・インフォメーションを送受信不可な前記システムのコンポーネントに接続するための第１バス又はリンクインタフェースと、
ｂ）圧縮されたキャッシュラインのワース・オブ・インフォメーションを送受信可能な前記システムのコンポーネントに接続するための第２バス又はリンクインタフェースと、
ｃ）解凍ロジック回路を有するｂ）からａ）への第１データパスと、
ｄ）前記解凍ロジック回路をバイパスするｂ）からａ）への第２データパスと、
ｅ）バッファ及び圧縮ロジック回路を有するａ）からｂ）への第１データパスと、
ｆ）前記バッファを有し、前記圧縮ロジック回路をバイパスするａ）からｂ）への第２データパスと、
を有することを特徴とするプロセッサ。
【請求項３】
マルチプロセッサ計算システム内において、
第１キャッシュラインのワース・オブ・インフォメーションと第２キャッシュラインのワース・オブ・インフォメーションとを圧縮されたキャッシュラインのワース・オブ・インフォメーションに圧縮するステップを有する方法であって、
前記第１キャッシュラインのワース・オブ・インフォメーションと前記第２キャッシュラインのワース・オブ・インフォメーションとは、互いのコンパニオンであることを特徴とする方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［発明の技術分野］
本発明の技術分野は、一般に計算システムに関し、より詳細には、圧縮されたキャッシュラインのワース・オブ・インフォメーション（ｗｏｒｔｈ  ｏｆ  ｉｎｆｏｒｍａｔｉｏｎ）を利用したマルチプロセッサ計算システム及び当該マルチプロセッサ計算システムに利用可能なプロセッサに関する。
【０００２】
［背景］
図１は、１）プロセッサ１０１と、２）キャッシュ１０２と、３）メモリコントローラ１０３と、４）システムメモリ１０４とを有する基本的な計算システムのアーキテクチャの一部を示す。プロセッサ１０１は、データの各要素に対して各種処理を実行する命令を実行することによって、ソフトウェアルーチンを実現する。これらの命令及びデータ要素は、キャッシュ１０２２及び／又はシステムメモリ１０４に格納されている。プロセッサ１０１が特定の命令又はデータ要素を必要とするとき、それをシステムメモリ１０４からリクエストする前に、所望の命令又はデータ要素に対してキャッシュ１０２を検索する。
【０００３】
一般に、キャッシュ１０２は、システムメモリ１０４より「高速である」と考えられている。すなわち、プロセッサ１０１は、システムメモリ１０４に存在する命令又はデータ要素より、キャッシュ１０２に存在する命令又はデータ要素に対する待機時間の方が短い。このキャッシュ１０２とシステムメモリ１０４との間の待機時間の相違は、典型的には、システムメモリが実現されるものより（ＤＲＡＭセルなど）、キャッシュ１０２（ＳＲＡＭセルなど）が本来的により高速なメモリセルにより実現されている結果として生じるものである。
【０００４】
格納スペースのビット当たり、ＳＲＡＭタイプキャッシュ１０２は、ＤＲＡＭタイプシステムメモリ１０４より高価である。従って、図１の計算システムのアーキテクチャは、より頻繁に使用される命令及びデータ要素をキャッシュ１０２に格納し、あまり頻繁には使用されない命令及びデータ要素をシステムメモリ１０４に格納するよう構成されることによって、コストとパフォーマンスの両方を最適化しようとするものである。より頻繁に使用される命令及びデータ要素をキャッシュに格納することによって、プロセッサは、命令／データがシステムメモリ１０４からフェッチされるのを待機する無駄な時間の形式の許容される「タイミング・ペナルティ・ヒット（ｔｉｍｉｎｇ  ｐｅｎａｌｔｙ  ｈｉｔ）」を耐えるべきである。なぜなら、プロセッサにより必要とされる命令／データのかなりの割合が、キャッシュ１０２において検出されるであろうという理由からである。
【０００５】
「キャッシュヒット」（すなわち、必要とされる命令又はデータ要素がキャッシュ１０２において検出されるインスタンス）の割合を向上させるため、「時間ロカリティ（ｔｅｍｐｏｒａｌ  ｌｏｃａｌｉｔｙ）」及び「空間ロカリティ（ｓｐａｔｉａｌ  ｌｏｃａｌｉｔｙ）」が関係する。時間ロカリティは、１つの命令又はデータ要素は、それがすでに使用された直後に使用される傾向があるという概念である。空間ロカリティは、メモリにおいて互いに近接して配置されている（すなわち、類似したアドレスを有する）命令及びデータ要素は、ほぼ同時に使用される傾向がある。時間ロカリティは、システムメモリ１０４からキャッシュ１０２に最初に転送された後少なくともしばらくの期間、命令及びデータ要素をキャッシュ１０２に保持することによる措置が可能である。
【０００６】
空間ロカリティは、システムメモリ１０４からフェッチされる必要がある何れか１つの命令又はデータ要素に近接する（例えば、「取り囲む」など）コンテンツを有するシステムメモリ１０２からのデータブロック（すなわち、複数の命令又はデータ要素）によりキャッシュ１０２がロードされるよう構成することによる措置が可能である。例えば、アドレスＸにある命令がシステムメモリ１０４から必要とされる場合、当該必要とされる命令のみをシステムメモリ１０４からキャッシュ１０２に転送する代わりに、アドレスＸに関連する複数のアドレスに対応するコンテンツブロックが、システムメモリ１０４からキャッシュ１０２に転送される。
【０００７】
図２は、第１の連続するコンテンツ「ブロック」１０５（複数のシステムメモリアドレスを介し参照される）が１つのキャッシュライン１０７にロードされ、第２の連続するコンテンツ「ブロック」１０６（異なる複数のシステムメモリアドレスを介し参照される）が他の１つのキャッシュライン１０８にロードされることを示すことによって、上記状況を示そうとするものである。簡単化のため、図２は、キャッシュ２０４を単一の構成として示している。しかしながら、異なるレベルのキャッシュによる各種計算システムが構成される。例えば、多くのタイプの計算システムは、２つのレベルのキャッシュ（レベル１（Ｌ１）キャッシュとレベル２（Ｌ２）キャッシュ）を有し、第１レベルキャッシュ（Ｌ１）は、第２レベルキャッシュ（Ｌ２）より短いプロセッサ待機時間に対応している。Ｌ１キャッシュは、最も頻繁に使用されるデータ要素及び命令を格納するよう想定され、Ｌ２キャッシュは、Ｌ１キャッシュ内のものより頻繁には使用されないが、システムメモリ内のものより頻繁に使用されるデータ要素及び命令を格納するよう想定される。
【０００８】
従来、２つのキャッシュレベルは、システムメモリと比較してより高速なメモリタイプにより実現されている（例えば、Ｌ１とＬ２の何れのキャッシュもＳＲＡＭメモリセルにより実現されるなど）。しかしながら、Ｌ１キャッシュはプロセッサと同じ半導体ダイ上に一体化され、Ｌ２キャッシュはプロセッサと異なる半導体ダイにより実現される。「オンチップ」キャッシュへのアクセスは、「オフチップ」キャッシュへのアクセスより高速であり、Ｌ１キャッシュへのアクセスは、Ｌ２キャッシュへのアクセスより少ないプロセッサ待機時間に対応する。
【０００９】
メモリコントローラ１０３は、キャッシュによって満足されないデータに対するリクエストをプロセッサ１０１から受け付け、当該リクエストのためにサーブするプロセスをシステムメモリ１０４において管理するためのものである。キャッシュに存在しないデータに対するロードリクエスト、メモリに戻される必要があるデータのキャッシュからのイビクトなど、多数の各種タイプのリクエストが存在するかもしれない。典型的には、メモリコントローラは、多数のリクエストが発行され、より短い平均遅延によりパラレルにサービス可能となるように、リクエストをパイプラインすることが可能である。メモリコントローラは、あるメモリ技術のディテールとインタフェースをとるためのものであり、モジュラー形式によりプロセッサからシステムメモリを分離する。メモリコントローラは、例えば、同一ダイ上でプロセッサと一体化されてもよいし、あるいは、チップセット内で分離されてもよい。
【００１０】
システムメモリは、典型的には、特定タイプのシステムメモリ（ＥＤＯ  ＲＡＭ、ＳＤＲＡＭ、ＤＤＲなど）により実現される。
【００１１】
［詳細な説明］
・キャッシュラインのワース・オブ・インフォメーションの圧縮
問題を明確にするため、キャッシュラインは、キャッシュ内の格納スペースの基本単位である。例えば、多くのアプリケーションでは、一意的なタグ及びセットアドレスが、計算システムのキャッシュ内の１つのキャッシュラインを具体的に特定するのに利用される。従って、キャッシュラインは、特定の電気回路要素（ＳＲＡＭセルなど）により実現される。他方、「キャッシュラインのワース・オブ・インフォメーション（ｗｏｒｔｈ  ｏｆ  ｉｎｆｏｒｍａｔｉｏｎ）」又は「ライン・オブ・インフォメーション（ｌｉｎｅ  ｏｆ  ｉｎｆｏｒｍａｔｉｏｎ）」とは、キャッシュラインを充填し得る情報量（データ要素又は命令など）である。ここで、図２の説明に戻って、「ブロック」１０５に格納されている情報量は、ブロック１０５のコンテンツがキャッシュライン１０７を充填するため、キャッシュラインとのワース・オブ・インフォメーションに対応する。
【００１２】
図３ａは、通常、キャッシュラインのペアを占有する整列されたシステムメモリ３０４のブロック３０５と３０９のペアを１つのキャッシュライン３０７に圧縮するため（すなわち、キャッシュラインのワース・オブ・インフォメーションの情報が、１つのキャッシュラインに圧縮される）、空間ロカリティの概念を拡張するアプローチを示す。図３ａにおいて、通常、キャッシュラインペアを占有する他の整列されたメモリブロック３０６と３１０のペアのコンテンツが、第２の１つのキャッシュライン３０８を占有するため圧縮される第２の例もまた観察される。圧縮は、メッセージ自体の実質的なコンテンツに影響を与えることなく（すなわち、命令又はデータ要素を表すのに利用される「ナンバー」を再度キャプチャする可能性を排除することなく）、情報（命令又はデータ要素など）を洗うのに必要とされるデータ量を低減する技術である。整列されたブロックのペアを１つのキャッシュラインに圧縮可能となることは、キャッシュの有効サイズが増大するため、計算システムのパフォーマンスをより高速にする（従って、より低速なキャッシュレベル又はシステムメモリへのアクセス遅延を増大させるのに可能性が低下する）。さらない、以下でより詳細に説明されるように、計算システムの帯域幅は、すでにアクセスした他の情報により圧縮されるため、情報へのアクセスを抑制することによって向上させることができる。
【００１３】
一実施例では、図３ａ及び４ａを参照するに、１）キャッシュラインのワース・オブ・インフォメーションが、整列した連続するメモリブロックを表し、２）キャッシュラインのワース・オブ・インフォメーションのペアの情報コンテンツが、１つのキャッシュラインに圧縮可能である場合、プロセッサのキャッシュコントローラ４１０には、２つのキャッシュラインのワース・オブ・インフォメーションを圧縮する圧縮／解凍ロジック４１１が搭載される。利用される圧縮のタイプは、Ｌｅｍｐｅｌ−Ｚｉｖ、Ｗｉｌｓｏｎ−Ｋａｐｌａｎ、Ｘ−Ｍａｔｃｈ又はおそらく他の既知の又は専用のタイプの圧縮などの各種形式を採用するものであってもよい。
【００１４】
一実施例では、コンパニオンブロック（ｃｏｍｐａｎｉｏｎ  ｂｌｏｃｋ）が整列しているということは、コンパニオンブロックに係る最下位アドレスが、当該コンパニオンブロックの結合された複数のサイズとなることを意味する。例えば、各キャッシュラインのワース・オブ・インフォメーションが６４バイトである場合、２つの連続するキャッシュラインのワース・オブ・インフォメーション（すなわち、Ｎにおける第１のものは、「下位の」キャッシュラインのワース・オブ・インフォメーションと呼ばれ、Ｎ＋６４における第２のものは、「上位」のキャッシュラインのワース・オブ・インフォメーションと呼ばれる）のベースアドレスＮは、１２８により割り切れる（すなわち、Ｎ／１２８の剰余が０となる）。さらなる例として、図３ａを参照するに、ブロック３０５はＮのベースアドレスによりアドレス指定可能であり、ブロック３０９はＮ＋６４のアドレスによりアドレス指定可能である。
【００１５】
便宜上、整列された連続するキャッシュラインのワース・オブ・インフォメーションは、互いの「コンパニオン」と呼ばれる。従って、上述された記載に基づき、コンパニオンキャッシュラインのワース・オブ・インフォメーションのペアは、その実質的なコンテンツが圧縮可能である場合、圧縮／解凍ロジック４１１により圧縮される。同様に、圧縮／解凍ロジック４１１は、コンテンツをもはや１つのキャッシュラインに圧縮可能にしないキャッシュラインのコンテンツへの書き込みが行われる場合、圧縮されたキャッシュラインのワース・オブ・インフォメーションを２つの別々のコンパニオンキャッシュラインのワース・オブ・インフォメーションに解凍することが可能である。
【００１６】
キャッシュラインのワース・オブ・インフォメーションのペアが圧縮されると、それらは、もはや圧縮可能とみなされなくされる圧縮された情報への書き込みが行われるまで、（例えば、キャッシュに格納されている間、１つのタグ及びセットアドレスにより参照されることによって）計算システム全体によって１つのキャッシュラインのワース・オブ・インフォメーションとして扱われる。圧縮不可とみなされると、当該情報は、コンパニオンキャッシュラインペアに分割される。従って、プロセッサ４０１がキャッシュ４０２から特定のキャッシュラインのワース・オブ・インフォメーションに継続的にアクセスする場合、プロセッサ４０１は、キャッシュラインペアに等しい情報が実際に読み込まれているとしても、１つのキャッシュラインのみを継続的に読み込む。例えば、キャッシュラインのワース・オブ・インフォメーションを圧縮／解凍可能なキャッシュを有するプロセッサにおいて、インスタンス化可能な一例となる圧縮／解凍ロジックの実現形態に関する詳細は、当該詳細な説明のためのものである。
【００１７】
情報が１つのキャッシュラインのワース・オブ・インフォメーションに圧縮されると、当該１つのキャッシュラインのワース・オブ・インフォメーションは、１）キャッシュ（アルレベルのキャッシュを含む）に対する読み書き、２）システムメモリに対する読み書き、及び３）キャッシュラインのワース・オブ・インフォメーションをトランスポートするため構成される任意の構成（例えば、システムメモリへのアクセスを制御するメモリコントローラとプロセッサとの間のキャッシュライン・オブ・インフォメーションをトランスポートするフロントサイドバス又はポイント・ツー・ポイントリンク、マルチプロセッサ環境では、キャッシュされた情報を共有するプロセッサペアなど）などの任意の「通常の」圧縮されていないキャッシュライン・オブ・インフォメーションとして扱われるかもしれない。
【００１８】
キャッシュラインの圧縮されたワース・オブ・インフォメーションの可能な移転の例として、図４ａを参照するに、キャッシュラインのワース・オブ・インフォメーションが、キャッシュ４０２からイビクトされ（例えば、それが、キャッシュ４０２に継続的に格納される価値があるとみなされるのに十分頻繁には使用されなかったため）、システムメモリ４０４に移転される状況を検討する。ここで、キャッシュラインの圧縮されたワース・オブ・インフォメーションは、１つのキャッシュラインのワース・オブ・インフォメーションを格納することが可能な１つのブロックのシステムメモリアドレッシングスペースに格納することが可能である。例えば、図３ｂは、圧縮されたキャッシュライン３０７のコンテンツが、キャッシュ３０２と４０２からイビクトされた後、図３ａのブロック３０５と３０９の実質的なコンテンツに関して、システムメモリ３０４の使用を示す。図３ｂは、キャッシュ３０２と４０２からのイビクト及びシステムメモリ３０４と４０４への格納により、キャッシュライン３０７のコンテンツがメモリブロック３０５のみを占有するため格納されることを示す。これは、明らかに対照的に、図３ａに示される圧縮前に存在した同一の情報量を格納するためのシステムメモリを利用することである。
【００１９】
２つのキャッシュラインのワース・オブ・データが、１つのキャッシュラインのワース・オブ・データにより通常占有されるスペースに格納される可能性があっても、システムメモリにコンパクトな形式により格納されるとき、圧縮されたキャッシュについて真であるように、これは、システムの物理的メモリの容量の有効な増大を意味するものではない。これは、システムメモリにおいて、アドレススペースがコンパクト化されないという理由である。アドレススペースのコンパクト化は、ページテーブルへの変更を要し、従って、ここで提供されるスキームが回避可能なオペレーティングシステムのサポートを必要とする。
【００２０】
すなわち、圧縮後、ブロック３０５のみが、圧縮前にブロック３０５及び３０９に先に格納されたものの情報コンテンツを格納するのに必要とされる。図３ｂはまた、イビクトにより、圧縮されたキャッシュライン３０８のコンテンツが、ブロック３０６及び３１０が圧縮前に同一の情報を格納するのに使用されたとしても、ブロック３０６のみを占有するため、システムメモリ３０４において復元されることを示す。図３ｂの「圧縮されたコンテンツ」ブロック３０５と３０６の１つが、プロセッサ４０１により再び必要とされる場合、それは、１つのキャッシュラインのワース・オブ・インフォメーションとしてメモリコントローラ４０３ａによってシステムメモリ３０４と４０４から読み出され、メモリコントローラ４０３ａからプロセッサ４０１に移転され（再び、１つのキャッシュラインのワース・オブ・インフォメーションとして）、プロセッサのキャッシュ４０２に書き込まれる（再び、１つのキャッシュラインのワース・オブ・インフォメーションとして）。
【００２１】
・メモリコントローラ
シングルプロセッサ環境に関して、メモリコントローラは、圧縮／解凍動作が行われていることをほとんど認識することなく動作可能である。すなわち、例えば、プロセッサ４０１は、圧縮されているキャッシュラインのワース・オブ・インフォメーションと、圧縮されていないものとを「追跡」及び処理してもよく、対照的に、メモリコントローラは、プロセッサ４０１により割り当てられた識別子又はラベルに従って、データブロックを単に読み書きするよう構成される。
【００２２】
しかしながら、システムメモリの何れのブロックが圧縮されたキャッシュラインのワース・オブ・インフォメーションに対応するコンテンツを格納するのに使用されるか（及び／又はシステムメモリの何れのブロックが圧縮されていないキャッシュラインのワース・オブ・インフォメーションに対応するコンテンツを格納するのに使用されるか）を考慮するより高度なメモリコントローラ４０３ａは、計算システム内のシステムメモリの利用をより効率的にするため、システムメモリへのアクセス要求を低減することが可能であるかもしれない。例えば、第２データブロックを読むことを拒絶することによって、それの実質的なコンテンツが圧縮された第１のデータブロックから読み出されたところであるため、システムメモリに対して実行される要求は、効果的に低減される。
【００２３】
より詳細な例として、プロセッサが情報をそれのキャッシュラインに圧縮可能なマルチプロセッサ環境を検討する。ここで、第１プロセッサ（例えば、図４ａのプロセッサ４０１など）は、情報をキャッシュラインに圧縮し、その後、システムメモリ４０４に格納するため、キャッシュ４０２からそれをイビクトする。マルチプロセッサシステムにおける第２プロセッサ（図４ａには図示せず）が、第１プロセッサの圧縮処理を知ることなく、圧縮された情報の両方のコンパニオンに格納されている情報をシステムメモリ４０４から読み出されることを所望する場合、メモリコントローラ４０３ａは、第２プロセッサからの読み出しリクエストのペア（すなわち、第１のリクエストは第１コンパニオンに対するものであり、第２リクエストは第２コンパニオンに対するものである）を受信することに応答して、圧縮されたキャッシュラインのワース・オブ・インフォメーションを読み出視線用となるのに「十分スマート」なものであるよう構成されてもよい。ここで、圧縮されたキャッシュラインのワース・オブ・インフォメーションは、第２プロセッサにより行われた両方のリクエストを満たすのに十分なものとなるであろう。
【００２４】
・圧縮マップ
図４ｂは、メモリコントローラ４０３ａによってそれのシステムメモリ４０４内の圧縮された情報の有無を認識するのに利用可能な圧縮マップ４１２と呼ばれる情報ボディに対する３つの実施例４１２ａ、４１２ｂ及び４１２ｃを提供する。まず、「基本実施例」４１２ａを参照するに、圧縮マップ４１２ａは、システムメモリ４０４内の各情報ブロックについて、当該ブロックの対応するキャッシュラインのワース・オブ・インフォメーションが、圧縮形式又は非圧縮形式によりシステムメモリ４０４に現在格納されているか否か特定するビットマップとしてシステムメモリ４０４に格納されてもよいということに留意されたい。
【００２５】
典型的な実現形態では、アドレスカラムは、圧縮マップに実際には含まれない（例えば、当該マップがメモリ全体をカバーしている場合など）。図４ｂは、読者が圧縮マップの構成及び構造を容易に理解できるように、実施例４１２ａ、４１２ｂ及び４１２ｃのそれぞれのアドレスカラムを示す。具体的には、図３ｂに示されるシステムメモリに基づき、すぐ後で説明される具体例に関して、ビットにはアクティブ値「１」が与えられている（その他には非アクティブ値「０」は与えられていない）。また、圧縮マップは、特定のシステムメモリブロックに対応する位置（データフィールドなど）において特定の値を有するよう構成されるデータ構造として実現されてもよい。
【００２６】
図４ｂの圧縮マップの実施例４１２ａは、図３ｂにおいて観察されたシステムメモリに適用するため示される。具体的には、図３ｂのシステムメモリは、圧縮前にブロック３０５及び３０９に存在した情報の圧縮に対応する情報をブロック３０５に格納する。図３ａのブロック３０５及び３０９の情報は共に圧縮されているため、図４ａの圧縮マップ４１２ａは、ブロック３０５と３０９のそれぞれについての表示（「１」）を提供する。同様に、図３ａのブロック３０６と３１０の情報は共に圧縮されているため（ブロック３０６に）、図４ｂの圧縮マップ４１２ａは、ブロック３０５と３０９のそれぞれについての表示を提供する。図４ａを参照するに、圧縮マップ４１２ａは、システムメモリ自体４０４に格納可能であるということに留意されたい。
【００２７】
図４ｂの「より精巧な」圧縮マップの実施例４１２ｂは、１）キャッシュラインのワース・オブ・インフォメーションの実質的なコンテンツを提供する情報（インスタンス４１４などの選択ケースにおいてなど）、２）圧縮形式により格納されている各キャッシュラインのワース・オブ・インフォメーションについて使用される圧縮タイプの表示の形式による付加情報と共に、実施例４１２ａに関して上述されたようなビットマップ情報を含む。
【００２８】
前者の付加情報４１４は、ａ）圧縮されていないキャッシュラインのワース・オブ・インフォメーションを有するシステムメモリのブロックのコンテンツ、及び／又はｂ）圧縮形式によりシステムメモリにすでに格納されているキャッシュラインのワース・オブ・インフォメーションの「先頭に」適用可能な極端な圧縮形式に対応する（実施例４１２ｂは、上述の１つのインスタンスを示す）。例えば、あるシステムメモリブロックに格納されているキャッシュラインのワース・オブ・インフォメーションが「すべてゼロ」である場合、圧縮マップ４１２ｂのあるブロック位置に１つの「ゼロ」（ゼロ４１４など）が格納されてもよい。同様の表示が、何れかのタイプの定数（「すべて１」など）について利用されてもよい。ここで、メモリコントローラは、ある定数を有するキャッシュラインを特定するロジック（総和ロジック（例えば、すべてゼロの総和はゼロとなるであろうなど）など）を有することが予想されるであろう。
【００２９】
後者の付加情報４１５は、特定タイプの圧縮を示す。ここで、異なるタイプの圧縮（Ｌｅｍｐｅｌ−Ｚｉｖ、Ｗｉｌｓｏｎ−Ｋａｐｌａｎ、Ｘ−Ｍａｔｃｈなど）が利用可能であるということを思い起こされたい。ある計算システム内には１つのみのタイプの圧縮が存在するだけでなく（例えば、Ｌｅｍｐｌｅ−Ｚｉｖのみを使用する１つのシステムなど）、１つのシステムが異なるタイプの圧縮を実現可能である実施例もまた構成されてもよい（例えば、Ｌｅｍｐｅｌ−Ｚｉｖ、Ｗｉｌｓｏｎ−Ｋａｐｌａｎ、Ｘ−Ｍａｔｃｈ及びおそらく他の圧縮アルゴリズムの何れかを利用可能な１つのシステムなど）。
【００３０】
圧縮マップの実施例４１２ａと４１２ｂの何れもが、キャッシュラインのワース・オブ・インフォメーションを格納可能なシステムメモリの各整列されたブロックに対する圧縮／非圧縮状態を提供するビットを示す。対照的に、実施例４１２ｃは、整列されたシステムメモリブロックの各ペアの圧縮／非圧縮状態を表すのに１ビットしか使用しない。ここで、２：１以外の圧縮比（４：１など）が利用可能であり、実施例４１２ｃのアプローチに従って実現される圧縮マップのサイズは、圧縮比が増大するに従ってより小さくなるということに留意することは価値あることである。すなわち、２：１の圧縮について、メモリブロックのすべての整列されたペアを表すためのビットが使用され、４：１の圧縮比が使用される場合には、４つの整列されたメモリブロックのすべてのグループについてのビットが存在することとなる。また、実施例４１２ｂのより精巧な情報が、実施例４１２ｃに付加可能であるということに留意されたい。
【００３１】
圧縮マップの他の実施例は、フラットビットベクトルではなく、選択的な階層的スキームを利用可能である。フラットビットベクトルは、メモリにすべてのブロックについて１ビットを有することが必要である。圧縮がメモリのある領域のみに選択的に適用可能であり、これにより、圧縮されるメモリの領域のみをカバーするように圧縮マップが構成可能である。同様に、付加領域が圧縮されても、メモリ領域の一部のみしか実際には圧縮は行われなかった（これまで）。完全に又は部分的に圧縮された領域をカバーする圧縮マップの様々な選択が、リンクトリストとして一緒にリンク可能であり、あるいは、メモリのより小さな領域及びサブ領域を徐々にカバーするある階層のデータ構造に作用することが可能である。
【００３２】
コンパニオンのペアの圧縮状態は、コンパニオンの実質的なコンテンツが１つのキャッシュラインのワース・オブ・インフォメーションに「圧縮可能」であるというものであることを思い起こし、異なる圧縮スキームを介し異なる数学的技術が利用されることにより、ある圧縮技術はあるコンパニオンのペアを圧縮可能であるとみなし、他の圧縮スキームは同一のコンパニオンを圧縮可能とみなさないかもしれない（例えば、コンパニオンのペアの実質的なコンテンツは、Ｗｉｌｓｏｎ−ＫａｐｌａｎやＸ−ＭａｔｃｈではなくＬｅｍｐｅｌ−Ｚｉｖにより圧縮可能であるかもしれない）。また、より多くのコンパニオンが、１つのタイプの圧縮のみを提供する計算システムと比較して、異なるタイプの圧縮を「提供する」計算システムにおいて圧縮されるかもしれない。図４ｂのエンハンスされたビットマップの実施例４１２ｂの圧縮タイプの表示４１５は、このようなシステムにおいて利用可能である（それが、圧縮タイプ「Ａ」がブロック３０５と３０９に使用され、圧縮タイプ「Ｂ」がブロック３０６と３１０に使用されたことを示すことに留意して）。従って、図４ａの圧縮／解凍ロジック４１１は、実施例に応じて単一又は複数のタイプの圧縮を実行可能であると理解されるべきである。
【００３３】
また、図４ａから、圧縮マップがシステムメモリ４０４に格納可能であるということに留意されたい。一実施例では、メモリコントローラ４０３ａは、１以上のシステムメモリの圧縮／解凍状態をチェックするため、適切な時点においてシステムメモリ４１２から圧縮マップ４１２の一部をフェッチするよう構成される。
【００３４】
圧縮マップ４１２の一部をフェッチするため、システムメモリ４０４へのアクセスに関する効率性のペナルティを低減するため、メモリコントローラ４０３ａが、圧縮マップキャッシュ４１３を有するよう構成されることに留意されたい。圧縮マップキャッシュ４１３は、圧縮マップの１以上の直近にフェッチされた部分を含む。通常のキャッシュと同様に、圧縮マップ情報は、システムメモリ４０４にイビクトされる前に、圧縮マップキャッシュ４１３において継続的に更新されるようにしてもよい。図５ａ〜５ｄに関して以下でより詳細に説明されるように、圧縮マップキャッシュ４１３は、圧縮マップ情報が所望されるときに参照される。所望される情報が圧縮マップキャッシュ４１３において検出されない場合、当該情報は、システムメモリ４０４に存在する圧縮マップ４１２からフェッチされる。
【００３５】
図４ｃは、圧縮マップ４１２より動作するよう構成されるメモリコントローラ４０３ｂが、１つのプロセッサ４２０を有する計算システムにおいてだけでなく、キャッシュされた情報を圧縮／解凍する能力を有しない１以上のプロセッサ（プロセッサ４２０やおそらく図４ｃには図示されない他のプロセッサなど）により実現されてもよい。従って、図４ｃのメモリコントローラ４０３ｂは、圧縮動作を認識している計算システム内の主要な（そしておそらく唯一の）コンポーネントであることが可能である。図４ｃの図は、図４ａと対照的に、メモリコントローラ４０３ｂ自体には、キャッシュラインを圧縮及び解凍するのに利用される適切な圧縮／解凍ロジック４１６が再度搭載可能であることを示すプロセッサ４２０がこのようなロジックを欠落していることに留意されたい）。圧縮／解凍ロジック４１６は、１以上のタイプの圧縮／解凍技術をサポートするものであってもよい。
【００３６】
メモリコントローラ４０３ｂはさらに、図４ａを参照して上述されたような圧縮マップキャッシュ４１３を有するようにしてもよい。圧縮／解凍処理の認識を維持しないプロセッサとの動作において、メモリコントローラ４０３ｂは、プロセッサへの／からの圧縮されていないキャッシュラインのワース・オブ・データを提供／受付する。プロセッサが圧縮されたキャッシュラインにより動作不可となる環境において動作しているメモリコントローラ４０３ｂによって実行可能な具体的な方法が、以下においてより詳細に説明される。
【００３７】
図４ｄは、圧縮マップ４１２が、関連しないメモリ一において「バーチャルな」方法により実現されるのではなく、システムメモリ４０４の「物理的な」連続するアドレッシング範囲内に格納されるようにしてもよい（例えば、ソフトウェアにより管理されるリンクリスト技術によって）。物理的アドレッシングスペースにおいて圧縮マップ４１２を実現することによって、オペレーティングシステム（ＯＳ）は、圧縮／処理を意識することなく動作可能であり、システムメモリの何れの位置が圧縮マップ４１２について使用されるべきか管理又は認識するための命令を実行することによって、ＯＳがダウンすることを救済する。また、かなりの程度のオーバヘッドが、ＯＳに通知することから回避される。
【００３８】
システムメモリのアドレッシングスペースの物理的範囲において実現されるよう圧縮マップを構成することによって、圧縮マップは、それのオペレーティングシステムではなく計算システムのハードウェアによって管理及び制御可能とすべきである。上述のように、これは、圧縮マップに関するオーバヘッドにより実質的に取り除かれるように、ＯＳを「解放」すべきである。一実施例では、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）４３０は、システムメモリの何れの物理的アドレス範囲が、レジスタ４３１と４３２のペアに書き込みすることによって、圧縮マップ４１２に使用されるべきか示す。例えば、第１アドレスは、圧縮マップのスタートアドレスを規定するレジスタ４３１に格納され、第２アドレスは、圧縮マップのエンドアドレスを規定するレジスタ４３２に格納されるようにしてもよい。
【００３９】
あるいは、圧縮マップのサイズはレジスタ４３１と４３２の一方に格納され、スタート又はエンドアドレスはレジスタ４３１と４３２の他方に格納される（圧縮マップのサイズは、２：１、４：１又は他の圧縮アスペクト比が使用されるか否かに応じて可変とされてもよい）。レジスタ４３１と４３２のロード処理の後、ハードウェアは、レジスタ４３１及び４３２を介し特定されるアドレッシングスペースへの非圧縮マップ情報の格納を避けることが可能であり、同様に、圧縮マップを同一のアドレッシングスペースにのみ向けることを避けることができる。あるいは、レジスタ４３１と４３２はプロセッサに配置されてもよい。
【００４０】
圧縮マップが複数のローカルメモリに物理的に分散化されている場合、又は圧縮マップの各部分が物理的に連続するメモリに配置されることが要求されていない圧縮マップスキームが利用される場合、複数のレジスタペアが、ＢＩＯＳから圧縮マップが存在するハードウェアに通信するのに使用されてもよい。
【００４１】
また、オペレーティングシステムから隠され、ページ処理されていない連続する物理的アドレス範囲において圧縮マップを格納することは、オペレーティングシステムが物理的メモリからバーチャルメモリにページをスワップし、再び戻すときに発生する可能性があるバーチャルアドレスの変更及びページフォルトを処理する必要なく、圧縮マップが物理的アドレスを用いて参照されることを許可すべきであるということに留意することは重要である。これは、当該スキームがＯＳのサポートの必要を回避し、ソフトウェアに透過である他の方法である。
【００４２】
・圧縮マップの利用
上述のように、圧縮マップは、メインメモリに格納されているあるキャッシュラインのワース・オブ・インフォメーションが、圧縮されているか、又は圧縮されていないか表す。様々な実施例において、それは、メモリの圧縮状態を変更するメモリの各書き込みにより更新される。圧縮マップは、少なくとも以下の３つの目的のため、すなわち、１）非重複的スキームにより圧縮された上位のキャッシュラインのワース・オブ・インフォメーションのターゲットアドレスを効果的に変更するため、２）システムから読み出されたキャッシュラインのワース・オブ・インフォメーションが、解凍を実行するメモリコントローラによって解凍されるべきか、あるいはされないべきか決定するため、３）各コンパニオンに対するリクエストが認識され、当該コンパニオンが圧縮されていた場合、システムメモリアクセスを抑制するため、利用することが可能である。上記のそれぞれは、システムメモリへの書き込み及び読み出しに関して、以下においてより十分に説明される。
【００４３】
・システムメモリの書き込み
図５ａは、キャッシュラインのワース・オブ・インフォメーションをシステムメモリのブロックに書き込むためのメモリコントローラメソッド５５１と５５２のペアを示す。図５ａのメソッド５５１と５５２のそれぞれは、圧縮マップを呼び出す。第１の方法５５１によると、メモリコントローラ５５１によって、圧縮されたキャッシュラインのワース・オブ・インフォメーションが受信される（例えば、プロセッサから送信されるとき）。圧縮されたキャッシュラインのワース・オブ・インフォメーションは、圧縮フォーマットによるものとしてメモリコントローラに特定されることが前提とされている（例えば、アクティブ化されたライン又はコントロールヘッダの設定ビットによって）。圧縮されたキャッシュラインのワース・オブ・インフォメーションの受付により、メモリコントローラは、受け付けたキャッシュラインのワース・オブ・インフォメーションが圧縮されていることを反映させるため、圧縮マップを更新する（５０２）。図４ｂの実施例４１２〜４１２ｃ又はその変形の何れかが、圧縮マップを実現するのに利用可能である。
【００４４】
図４ａを参照するに、更新５０２を実行するため、メモリコントローラ４０３ａは、圧縮マップキャッシュ４１３を参照する。受け付けた圧縮されたキャッシュラインのワース・オブ・インフォメーションが関連付けされているシステムメモリブロックと相関する圧縮マップのセクションが、圧縮マップキャッシュ４１３内に配置されている場合、圧縮マップキャッシュ４１３のみが更新される（システムメモリ４０４の圧縮マップ４１２へのアクセスを回避するため）。圧縮マップの適切な部分が圧縮マップキャッシュ４１３内に存在しない場合、適切な部分がシステムメモリ４０４からフェッチされ、更新される（５０２）。
【００４５】
また、メモリコントローラ４０３ｂが圧縮された情報によりキャッシュラインを使用していないプロセッサに接続されている実施例では（図４ｃに示されるものなど）、１）ボックス５０１において、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのみが受け付けられ、２）ボックス５０１と５０２の間で、メモリコントローラ４０３ｂが、受け付けたキャッシュラインのワース・オブ・インフォメーションがそれのコンパニオンにより圧縮可能であると判断し（例えば、メモリコントローラ４０３ｂのインバウンド又はアウトバウンドキューにおけるそれのコンパニオンの実質的なコンテンツを参照することによって）、３）ボックス５０３の実行前に、メモリコントローラ４０３ｂが、それのコンパニオンにより受け付けたキャッシュラインのワース・オブ・インフォメーションを圧縮するように、プロセス５０１は若干変更される。
【００４６】
２つのコンパニオンのキャッシュラインのワース・オブ・インフォメーションは、メインメモリの整列されたアドレススペースのブロックペアに対応することを思い起こされたい。ここで、整列されたブロックペアの組み合わせは、一方のコンパニオンがマクロブロックの「下位半分」を占有し、他方がマクロブロックの「上位半分」を占有する場合、それらがそれぞれ圧縮されていないとき、メモリスペースのより大きな「マクロブロック」としてみなすことができる。当該コンパニオンが圧縮されると、マクロブロック全体の実質的なコンテンツは、より小さなコンパニオンブロックの１つのみに用いられるアドレッシング情報により参照可能である（例えば、マクロブロックの下位半分に用いられるアドレッシング情報など）。圧縮されていないとき、マクロブロックの上位及び下位半分は、別々にアドレス指定可能である。
【００４７】
例えば、図３ａ及び３ｂを簡単に参照すると、ブロック３０５と３０９の組み合わせは、ブロック３０５がマクロブロックの「下位半分」に対応し（なぜなら、それがブロック３０５と３０９のペアの下位アドレッシングスペースを用いて参照されるため）、ブロック３０９がマクロブロックの「上位半分」に対応する場合（なぜなら、それはペアブロック３０５と３０９の上位のアドレッシングスペースを用いて参照されるため）、情報のマクロブロックとしてみなすことができる。圧縮されていないとき、「下位半分」３０５は別々にアドレス指定可能であり、「上位半分」３０９は別々にアドレス指定可能である。圧縮されているとき、両半分の組み合わされたコンテンツは、下位半分３０５をアドレス指定することによってアクセス可能である。
【００４８】
メモリコントローラは、任意の圧縮されていないキャッシュラインのワース・オブ・インフォメーションについて、それがマクロブロックの何れか半分を占有していると仮定され、それの対応するコンパニオンがマクロブロックの何れか半分は占有していると仮定されるか認識するよう構成されるべきである。例えば、図３ｂ及び４ｂを簡単に参照すると、メモリコントローラは、上位半分３０９にアドレス指定される圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、下位半分３０５にアドレス指定される圧縮されていないキャッシュラインのワース・オブ・インフォメーションのコンパニオンラインとなることを認識するよう構成されるであろう。このような認識は、何れのブロックが互いにコンパニオンであるか規定する整列スキームの数学に基づく直接的なものである。簡単化のため、マクロブロックの下位半分は、以降において下位ブロックと呼ばれ、マクロブロックの上位半分は、上位ブロックと呼ばれる。
【００４９】
２：１の圧縮比について、マクロブロックの上位及び下位ブロックの使用に関して、それの実質的コンテンツが圧縮されるとき、実施例のペアが可能である。図５ａを参照するに、「非重複」と呼ばれる第１実施例では、システムメモリに書き込まれる圧縮されたキャッシュラインの情報が、メモリコントローラ又はプロセッサによって圧縮されたか否かに関係なく、圧縮されたキャッシュラインのワース・オブ・インフォメーションの書き込み５０３は、対応するマクロブロックの下位ブロックのみのアドレススペースへの書き込みに関するものである。図３ａ及び３ｂは、当初説明されたように、図３ａのブロック３０５と３０９が一緒に圧縮されている場合、図３ｂの下位ブロックのみが書き込まれるため（もちろん、あるいは上位ブロックのみが書き込み可能である）、「非重複」アプローチを示す。
【００５０】
図５ｂの方法５５５に関して以下でより詳細に説明されるように、「非重複」アプローチによると、メモリコントローラは、読み出し前に圧縮マップを参照する。なぜなら、下位ブロックに圧縮された上位ブロックに対するリクエストが（例えば、圧縮処理を認識していないシステムコンポーネントによって）、下位ブロックからの読み出しによってのみ満たすことが可能となるためである（すなわち、当該リクエストにおいて指定されるターゲットは、読み出しがリクエストを満たすのに実行されるシステムメモリの位置と異なる）。
【００５１】
「重複」と呼ばれる他の第２の実施例では、圧縮されたキャッシュラインの書き込み５０３は、適用可能なコンパニオンセットのすべてのブロックのアドレススペースへの書き込みに関する（例えば、２：１圧縮について適応可能なコンパニオンセットの下位と上位両方のブロックなど）。例えば、２：１圧縮アプローチについて、図３ａのブロック３０５及び３０９が一緒に圧縮される場合、図３ｂのブロック３０５と３０９の両方が、同一の圧縮された情報により書き込みされる。重複アプローチは、メモリコントローラが、上位ブロックの情報に対するリクエストが受け付けられるとき、情報の下位の圧縮されたブロックから情報を抽出する必要を回避することを可能にする（「非重複」実施例に関して上述されるように）。
【００５２】
また、圧縮マップは、「上位」の情報ブロックに対するリクエストについては参照される必要はない。図３ｂが重複アプローチを反映するよう変更される場合、上位ブロック３０９は、シェード処理され、さらに、上位ブロック３０９のコンテンツが下位ブロック３０５に格納されているものと同一の圧縮されているコンテンツとなることは理解されるであろう。同様に、上位ブロック３１０は、シェード処理され、さらに、上位ブロック３１０のコンテンツが、下位ブロック３０６に格納されているものと同一の圧縮されているコンテンツとなることが理解されるであろう。
【００５３】
図５ａの第２のメモリコントローラの書き込み方法５５２では、圧縮されていないキャッシュラインが、圧縮を実行可能なプロセッサから受け付けられる（５０４）。また、受け付けた圧縮されていないキャッシュラインは、何れの人にとっても「圧縮不可」であるとみなされる。従って、圧縮マップは、更新され（５０５）（例えば、圧縮されていないキャッシュラインの対応するブロックを表す位置において圧縮マップに「０」を書き込むことによって）、システムメモリに書き込まれる（５０６）。
【００５４】
書き込み方法５５２はまた、メモリコントローラが圧縮／解凍を実行するシステムにおける書き込みプロセスを表すよう若干変更することができる（例えば、プロセッサが圧縮をサポートしない図４ｃに示されるシステムなど）。また、直前の説明と異なり、受け付けられた圧縮されていないキャッシュラインが、圧縮可能か圧縮不可かはわかっていない。このようなケースでは、ボックス５０４と５０５の間に、メモリコントローラの圧縮／解凍ロジック４１６は、受け付けたキャッシュラインが圧縮可能ではないと決定する（例えば、メモリコントローラの入力キュー又は出力キューにおいて見つけられるようなそれのコンパニオンのコンテンツと共にそれのコンテンツを解析することによって）。それが圧縮可能であるとみなされた場合、それはそれのコンパニオンにより圧縮され、書き込み５０６は圧縮された情報の書き込みとなる。
【００５５】
・システムメモリの読み出し
図５ｂは、３つのメモリコントローラメソッド５５３、５５４及び５５５を示す。第１の読み出しメソッド実施例５５３は、図４ｃに示されるものなど、メモリコントローラがキャッシュラインの圧縮及び解凍を実行し、メモリコントローラが通信するプロセッサが、圧縮された情報をサポートするキャッシュラインを使用しない実施形態に関するものである。また、システムメモリから読み出される（５０７）何れかのキャッシュラインのワース・オブ・インフォメーションについて、メモリコントローラは、読み出される情報が圧縮されているか確認するため、圧縮マップを参照する（５０８）（圧縮マップへの参照５０８は、読み出し（５０７）後のものとして示されるが、あるいは、読み出し（５０７）とパラレルに及び／又は読み出し（５０７）前に実行されてもよいということに留意されたい）。読み出されたキャッシュラインのワース・オブ・インフォメーションが圧縮されている場合、メモリコントローラはそれを解凍する（５０９，５１０）。読み出されたキャッシュラインのワース・オブ・インフォメーションが圧縮されていない場合、メモリコントローラは、それを解凍しようとはしない（５０９，５１０）。
【００５６】
メモリコントローラが、圧縮されたキャッシュラインのワース・オブ・インフォメーションの存在を認識するコンポーネントを有する計算システムにたまたま存在する場合、メモリコントローラは、圧縮／解凍ロジックなしに実現されてもよい（例えば、図４ａの環境は、図４ｃの環境よりむしろ適用可能である）。そうである場合、メモリコントローラは、実際の解凍を実行するのではなく、読み出された情報が圧縮されているか、あるいは解凍されているか単に表示するため（例えば、キャッシュラインのワース・オブ・インフォメーションに添付されるヘッダ内の値を調整することによって）構成されるべきである。このようなメモリコントローラについて読み出しプロセスを表すため、図５ｂの方法５５３のボックス５１０は、読み出された情報が圧縮されているという表示を提供することに対応すべきであり（例えば、ヘッダ又はアクティブ化されたラインにおいて）、ボックス５１１は、読み出された情報が圧縮されていないという表示を提供することに対応すべきである。
【００５７】
方法５５４と５５５は、圧縮／解凍ロジックを有しないメモリコントローラ又は圧縮／解凍ロジックを有するメモリコントローラによって実行されてもよい。すでに簡単に指摘された第２の読み出し方法５５４は、すでに読み出された圧縮されたキャッシュラインのワース・オブ・インフォメーションのコンパニオンについて、第２のシステムメモリへの読み出しを生成することを回避するのに「十分スマート」なものとなるよう構成されるメモリコントローラに関する。当該方法によると、メモリコントローラが互いにコンパニオンとなるキャッシュラインのワース・オブ・インフォメーションに対する中断中の読み出しリクエストが存在すると認識する場合、圧縮マップが参照される（５１２，５１４）。圧縮マップが、これらのコンパニオンが一緒に圧縮されていることを明らかにする場合、メモリコントローラのみが、両方のリクエストを満足するため、システムメモリから圧縮されたキャッシュラインを読み出す（５１８）。
【００５８】
圧縮マップが当該コンパニオンが一緒に圧縮されていないことを明らかにする場合、メモリコントローラは、当該リクエストを満足するため、それらの対応する情報の下位及び上位ブロックとは別に両方のキャッシュラインのワース・オブ・インフォメーションを読み出す（２：１の圧縮スキームについて）。互いにコンパニオンとなるキャッシュラインのワース・オブ・インフォメーションに対する中断中の読み出しリクエストが存在しない場合、メモリコントローラは、通常のメモリコントローラと同様に動作し、各リクエストを満たすようにシステムメモリからの別々の読み出しを単に実行する（５１３）。
【００５９】
「保留中の」リクエストとは、物理的メモリコンポーネントが、当該リクエストを発したメモリコントローラにまだ実際に応答していないことを意味するということに留意することは重要である。しかしながら、物理的メモリコンポーネントがすでに第１のものに応答していたとしても（すなわち、第１リクエストがもはや「保留中」でない）、メモリコントローラが第２のリクエストを止めることは可能である。例えば、メモリコントローラが、第１リクエストの結果から提供可能な（例えば、メモリコントローラから）第２リクエストのデータを提供する圧縮情報に対する第２リクエストを止めるよう構成可能である。従って、リクエストを止める可能性は、図５ｂの方法５５４によって説明されたものを超えた状況に拡張可能である。
【００６０】
メモリコントローラが解凍を実行するよう構成されるケースでは、メモリコントローラは、１）方法５５４が読み出し前に大部分実行され、２）方法５５３が読み出し後に大部分実行され、３）方法５５４の読み出し５１８、５１７及び５１３の何れかはまた、方法５５３と５５４を一緒に「接続する」ため、読み出し５０７に対応する場合、読み出しメソッド５５３と５５４の両方を一緒に連続的なフローにより実行するようにしてもよい。方法５５３と５５４がこのように接続される場合、メモリ読み出し前に圧縮マップ５１４への参照が行われた場合には、参照５０８は「スキップ」されてもよい（すなわち、実行されない）ということに留意されたい。これは、方法５５３が示す照会５０９への回答が、と以外読み出しが読み出し前に実行される参照５１４から収集可能となる前に実行されるべきであるためである。
【００６１】
方法５５５は、図５ａに関して上述された「非重複」書き込みアプローチを実現するのに利用可能な書き込み方法に対応する。ここで、圧縮マップは、リクエストされたキャッシュラインのワース・オブ・インフォメーションのターゲットアドレスが、コンパニオンペア５１９とい５２１の上位ブロックに対応する場合に参照される。リクエストされたキャッシュラインのワース・オブ・インフォメーションが圧縮されている場合、圧縮されているキャッシュラインが、下位ブロック５２２と５２０から読み出される。リクエストされたキャッシュラインのワース・オブ・インフォメーションが圧縮されていない場合、読み出しリクエストにおいて指定されるターゲットブロックから、圧縮されていないリクエストされたキャッシュラインのワース・オブ・インフォメーションが読み出される。読み出しリクエストに指定されたターゲットブロックが上位ブロックでない場合、メモリコントローラは単に、下位ブロック５１９と５２０に対応するアドレッシングによって、システムメモリから圧縮されている又は圧縮されていないキャッシュラインのワース・オブ・インフォメーションを読み出す（すなわち、圧縮マップへの参照は不要となる）。
【００６２】
方法５５４と同様に、方法５５５は、解凍も実行するメモリコントローラによって実行されるメモリの読み出しのための方法５５３と合成されてもよい。ここで、メソッド５５５の読み出し５２３と５２０の何れかが、２つの方法５５５と５５３を一緒に接続するため、メソッド５５３の読み出し５０７としてみなすことが可能である。メソッド５５５の実行がメモリ読み出し５０７まえに圧縮マップ参照５２１を通過する場合、照会５０９への回答が参照５２１から収集可能であるため、圧縮マップ参照５０８をスキップすることができる。図５ａに関して説明されるような重複スキームの利用は、ターゲットアドレスの変更が照会５２２に対する「イエス」の回答によっては有効とされないため、方法５５５に対する必要性を削除する。
【００６３】
・圧縮マップキャッシュルックアップ
図５ｃは、図５ｂに関して上述された圧縮マップ５０８、５１４及び５２１への参照に関する３つの方法５５６、５５７及び５５８を提供する。特に、方法５５６は、図５ｂの圧縮マップ参照５０８、５１４及び５２１の何れかを実現するのに利用可能なプロセスのより詳細な図を示す。方法５５６は、システムメモリに存在する圧縮マップとメモリコントローラの圧縮マップのキャッシュの新規な特徴により適用されたとしても、基本的なキャッシュ／システムメモリ読み出しプロセスに対応する。すなわち、圧縮マップ５５６を参照するため、メモリコントローラはまず、それのオンボード圧縮マップキャッシュ４１３を参照する（５２５）。
【００６４】
圧縮マップキャッシュ４１３は、システムメモリ４０４に格納されている圧縮マップ４１２の全体の一部しか含まないため、キャッシュラインの情報が圧縮マップキャッシュ５２６に検出される場合（すなわち、「ヒット」）、圧縮マップへの参照は完了される。あるブロックの情報が圧縮マップキャッシュに検出されない場合（すなわち、「ミス」）、当該情報は、システムメモリ５２６に存在する完全な圧縮マップからフェッチされる（すなわち、システムメモリへの読み出しが実行される）。
【００６５】
圧縮マップミスは、システムメモリの読み出し５２７が結果として実行されるため、効率性のペナルティに対応する。方法５５７と５５８は、対応するメモリの読み出し５１６〜５１８、５２０及び５２３に先行する図５ｂの圧縮マップ参照５１４と５２１の何れかに対する圧縮マップキャッシュミスに関するタイミングペナルティヒットを軽減するため、メモリコントローラによって実行可能な方法に対応する。方法５５７と５５８の何れもが、解凍を実行し（例えば、それは、図４ｃに示されるような圧縮されたキャッシュラインを使用しないプロセッサと動作するため）、従って、キャッシュラインのすべてのシステムメモリの読み出しについて図５ｂの方法を実行する。
【００６６】
方法５５７は、メモリコントローラが、第１のメモリ読み出しリクエストを満たすため、システムメモリからのキャッシュラインのワース・オブ・インフォメーションの読み出し５３０と重複する期間において、第２のメモリ読み出しリクエストを満たす処理においてメモリ読み出し５１４と５２１の前に行われる圧縮マップキャッシュ５３１への参照を実行するよう構成されてもよいということを示す。すなわち、ある程度の並列性により異なるリクエストのメモリ読み出し５３０と予めのメモリ読み出しキャッシュルックアップ５３１を実行することは、キャッシュルックアップ５３１がミスであるとわかると、タイミングペナルティヒットを軽減するのを助けるべきである。ここで、メモリ読み出しとキャッシュルックアップとの間の時間的な重複の程度は（部分的又はそうでないものなど）、実現形態に応じて可変とされてもよい。
【００６７】
パイプライメモリコントローラとシステムメモリの特定のケースでは（複数のシステムメモリ読み出しリクエストをパラレルにサービス可能とするため）、第１リクエストをサービスルするためのキャッシュラインのワース・オブ・インフォメーション５３０の読み出しは、圧縮マップルックアップ５３１がミスとなる場合に必要とされる圧縮マップ情報５３２の読み出しとパラレルに継続されてもよい。方法５５７は、フローチャート形式（ラベル５３０、５３１及び５３２におけるサブスクリプト「１」）とガントチャート形式（ラベル５３０、５３１及び５３２におけるサブスクリプト「２」）の両方においてこのような状況を示す。
【００６８】
方法５５８は、図５ａに関して上述された「非重複」した実施例に適用可能である。それは、参照５１４と５２０の実行におけるキャッシュミスのケースにおいて、予測が利用可能であり（「圧縮」又は「非圧縮」）、解凍が必要かチェックするために圧縮マップ５０８の以降の参照が、当該予測の有効性をチェックするのに利用されることを示す。方法５５８に従って、キャッシュルックアップがミス５３２となる場合、リクエストされたキャッシュラインの状態が、圧縮又は非圧縮であると予測される。第１実施例では、状態は控えめに圧縮されていないと予測される。他の実施例では、圧縮マップのコンテンツの最近の履歴が、圧縮状態又は非圧縮状態を予測するための基礎として利用される。その後、キャッシュラインが、当該予測に従ってフェッチされる。
【００６９】
例えば、リクエストされたキャッシュラインのワース・オブ・インフォメーションが上位ブロックに対応し、圧縮状態にあると予測される場合、キャッシュラインのワース・オブ・インフォメーションは、下位ブロックのアドレスから読み出される（５３３）。他方、キャッシュラインのワース・オブ・インフォメーションの予測された状態が非圧縮である場合、キャッシュラインのワース・オブ・インフォメーションは、上位ブロックのアドレスから読み出される（５３３）。その後、圧縮マップの適切な部分がシステムメモリ５３４からフェッチされる（ミス５３２は、圧縮マップが適用可能なキャッシュラインのワース・オブ・インフォメーションの情報を含んでいないことを示すため）。その後、適切な圧縮マップ情報が、予測が正しかったか確認するためチェックされる（５３５）。正しかった場合、残りの読み出しリクエストプロセスが実行される。さらなる実施例では、他のリクエストの圧縮マップキャッシュ更新が、照会５３２の実行後、ボックス５３４の実行前におこなわれるようにしてもよい。そうである場合、ボックス５３４は、代わりに圧縮マップへの「リルック（ｒｅ−ｌｏｏｋ）」に対応するようにしてもよく、ヒットの場合、圧縮マップ情報のシステムメモリへのフェッチが一緒に排除される。
【００７０】
・メモリコントローラの実施例
図６ａ〜６ｃは、各メモリコントローラの実施例６０３が、圧縮マップキャッシュ６１３ａ、６１３ｂ及び６１３ｃを含む様々なメモリコントローラの実施例６０３ａ、６０３ｂ及び６０３ｃを示している。実施例６１３ａは、圧縮又は解凍ロジック回路を有しない。実施例６１３ｂは、解凍回路６１６ｂを有する。実施例６１３ｃは、圧縮ロジック回路６１６ｄと、解凍ロジック回路６１６ｃとを有する。各実施例６１３ａ、６０３ｂ及び６０３ｃについて、バス／ポイント・ツー・ポイントリンクインタフェース６０１は、１）メモリ読み出し及びメモリ書き込みに対するリクエストが受け付けられ、２）当該リクエストに対するレスポンスが与えられるメモリコントローラのインタフェースに対応する。リクエストはバス（フロントサイドマルチドロップバスなど）を介し受け付け及びレスポンスされ、及び／又はポイント・ツー・ポイントリンク（リクエストを受け付ける第１インバウンドリンクト、レスポンスを送信する第２アウトバウンドリンクなど）を介し受け付け及びレスポンスされるため、インタフェース６０１は、バス及び／又はポイント・ツー・ポイントリンクとのインタフェースであってもよい。
【００７１】
各実施例６０３ａ、６０３ｂ及び６０３ｃのリクエスト／レスポンスキュー６０２は、インバウンド方法にリクエストをキュー処理する（例えば、第１のリクエストキューに）。各実施例６０３ａ、６０３ｂ及び６０３ｃのスケジューラロジック回路６２３は、これらのリクエストのサービス提供をスケジューリングする。各実施例６０３ａ、６０３ｂ及び６０３ｃのメモリリクエストキュー６０４は、スケジューラロジック回路６２３によってスケジューリングされたリクエストをキュー処理する。各実施例６０３ａ、６０３ｂ及び６０３ｃのメモリインタフェース６０５は、メモリコントローラが接続される特定のタイプのメモリに対して情報の読み書きを行う。各実施例６０３ａ、６０３ｂ及び６０３ｃのリクエスト／レスポンスキュー６０２はまた、リクエストに対するレスポンスをアウトバウンド方向にキュー処理する（例えば、第２のレスポンスキューに）。
【００７２】
各種実施例では、上述の更新又は参照５０２、５０５、５１４及び５２１は、スケジューラロジック回路によって（又は他の適切な位置から）実行されてもよい。各実施例６０３ａ、６０３ｂ及び６０３ｃについて、圧縮マップキャッシュ６１３への入力６１２は、第１の例では、外部メモリから圧縮マップに圧縮マップ情報を供給する入力としてみなすことができる（圧縮マップキャッシュミスの場合など）。さらに、入力６１２は、システムメモリからのキャッシュラインのワース・オブ・インフォメーションの読み出しに関して実行される圧縮マップ情報への参照としてみなすことができる。
【００７３】
ここで、図５ｂの方法５５３の上記説明から、例えば、実施例６０３ｂと６０３ｃが適用するなど、メモリコントローラが解凍を実行可能である場合、圧縮マップが参照される（５０８）ということを思い起こされたい。読み出されたデータが圧縮されている場合、マルチプレクサ６１８は、解凍ロジック回路６１６ｂと６１６ｃの出力を選択する（解凍ロジック回路への入力が、メモリインタフェース６０５ｂと６０５ｃのデータパス出力に従っているということに留意して）。読み出されたデータが圧縮されていない場合、マルチプレクサは、解凍ロジック回路が当該方法に従って呼び出されることなく、メモリインタフェース６０５ｂと６０５ｃからのデータパスを選択する。
【００７４】
図６ｃは、圧縮ロジック回路６１６ｄと解凍ロジック回路６１６ｃを含む実施例を示す。メモリリクエストキュー６０４ｃに接続された圧縮ロジック回路６１６ｄが示される。また、メモリリクエストキュー６０４ｃにおいて観察（又は参照）される何れかの圧縮可能なコンパニオンラインのワース・オブ・インフォメーションが、システムメモリへの書き込み前に一緒に圧縮することが可能である。ライン６１７は、さらにシステムメモリへの書き込みを待機する何れらのキャッシュラインのワース・オブ・インフォメーションが、それのコンパニオンがリクエストキュー又はレスポンスキューに配置（又は参照）されたとしても、それのコンパニオンにより圧縮されてもよい。さらに、又はその代わりに、圧縮ロジック回路は、リクエスト／レスポンスキュー６０２ｂと６０３ｃに接続されてもよい。
【００７５】
・マルチプロセッサシステム及びキャッシュコヒーレンシルール
マルチプロセッサシステム
図７は、複数のキャッシュラインのワース・オブ・データの１つのキャッシュラインへの圧縮を容易にするよう調整されるマルチプロセッサ計算システムのアーキテクチャを示す。圧縮されたキャッシュラインのワース・オブ・データを送受信可能であり、圧縮マップ情報を維持するメモリコントローラは（図４ａに上述されるような）、図７に開示される特定のマルチプロセッサアーキテクチャに一体化されるようにしてもよい。図７のアプローチによると、圧縮／解凍ロジック７０７１と７０７２は、計算システム内において圧縮が命令／データ要素の異なるタイプの転送中に適用可能となるように、計算サブシステム７１１１と７１１２の「ハブ」７１０１と７１０２の内部に配置される。圧縮を利用する一例となる計算システムの転送がさらに、図８ａ〜８ｃに関して以下でさらに説明される。
【００７６】
処理コア（処理コア７０１１など）は、命令を実行するためのロジック回路としてみなされ、プロセッサ（プロセッサ７１６１など）は、処理コア（処理コア７０１１など）と、圧縮／解凍ハブ（ハブ７１０１など）と、キャッシュコントローラ（キャッシュコントローラ７０５１とを有する回路としてみなされる。図に関係なく、プロセッサ又はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、典型的には、処理コアと、少なくとも１つのキャッシュを制御するキャッシュコントローラ回路とを有する（キャッシュを有するシステムでは）。図７の図は、圧縮／解凍ハブがプロセッサの一部となることを仮定している。しかしながら、他の図は、ハブ又はそれの構成部分の何れかをプロセッサと独立したコンポーネントとしてみなすよう選択するかもしれない。
【００７７】
図８ａは、１）処理コア（処理コア７０１１など）からの圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、それがキャッシュ（キャッシュ７０２１など）にわたされるとき、それのコンパニオンにより圧縮され（８０１）、２）処理コア（処理コア７０１１など）又はキャッシュ（キャッシュ７０２１など）からの圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、それがシステムメモリ（システムメモリ７０４１など）にわたされるとき、圧縮されてもよく（８０２）、３）処理コア（処理コア７０１１）又はキャッシュ（キャッシュ７０２１など）からの圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、それが他の計算サブシステム（計算システム７１１２など）にわたされるとき、圧縮されてもよい（８０３）ということを示す。
【００７８】
上記第２のケースの例として、圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、キャッシュコントローラ７０５１から圧縮／解凍ハブ７１０１を介し、その後、圧縮／解凍ハブ７１０１を介しシステムメモリコントローラ７０３１にわたされるように（それが、システムメモリ７０４１に書き込み可能となるように）、キャッシュ７０２１からイビクトされる場合、圧縮されていないイビクトされたキャッシュラインのワース・オブ・インフォメーションは、圧縮／解凍ハブ７１０１がそれのコンパニオンにアクセスする場合、それのコンパニオンにより圧縮され（８０２）、キャッシュラインのペアのワース・オブ・インフォメーションが、１つのキャッシュラインのワース・オブ・インフォメーションに圧縮することができる。
【００７９】
上記第３のケースの例として、圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、キャッシュ７０２１からイビクトされ、システムメモリ７０４１ではなくシステムメモリ７０４２に格納される場合（キャッシュコントローラ７０５１から圧縮／解凍ハブ７１０１と７１０２を介しシステムメモリコントローラ７０３２にわたされるように）、計算サブシステム７１１１から計算サブシステム７１１２への転送が行われる。ここで、イビクトされたキャッシュラインのワース・オブ・インフォメーションが、ハブ７１０１又は７１０２において圧縮されるかもしれない（再び、ハブがイビクトされたキャッシュラインのコンパニオンにアクセスし、これら２つが圧縮可能である場合）。何れかのケースでは、イビクトされたキャッシュラインのワース・オブ・インフォメーションは、計算サブシステム７１１１と７１１２との間のそれの転送の一部として圧縮されるとみなされる。従って、図８ａに示されるように、イビクトされたキャッシュラインのワース・オブ・インフォメーションは、それの対応する計算ユニットのシステムメモリ８０２への転送の一部として圧縮されてもよく、あるいは、それの計算サブシステム８０３の外部への転送の一部として圧縮されてもよい。
【００８０】
図７に観察される計算システムでは、各圧縮／解凍ハブは、圧縮／解凍ロジック回路７０７１と７０７２と、コンパニオンが圧縮されるのを可能にするため、非圧縮及び圧縮されたコンパニオンペアが同一の圧縮／解凍ハブに同時に存在することを希望して、それが直近に受信したキャッシュラインのワース・オブ・インフォメーションを一時的にキュー処理するバッファ７１２１と７１２２とを有する。
【００８１】
図８ｂは、同様に、システムメモリから読み出された圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、圧縮／解凍ハブを介しその途中でそれが存在する計算サブシステムのキャッシュ８０４又は他の計算サブシステム８０５にわたされるとき、それのコンパニオンにより圧縮可能であるということを示す。例えば、システムメモリ７０４１から読み出された圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、キャッシュ７０２２の途中で圧縮／解凍ハブ７１０１によりそれのコンパニオンにより圧縮されてもよく、あるいは、計算サブシステム７１１１から計算サブシステム７１１２へのそれの転送の一部として、圧縮／解凍ハブ７１０１と７１０２の何れかによって圧縮されてもよい。
【００８２】
図８ｃは、Ｉ／Ｏコンポーネント（磁気ディスク格納ユニット又はネットワークインタフェースなど）から送信される圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、キャッシュ８０６、システムメモリ８０７又は他の計算サブシステム８０８の途中でそれのコンパニオンにより圧縮可能であることを示す（特定のシステムメモリブロックが、それのコンパニオンが認識可能となるように、Ｉ／Ｏユニットからの情報に関連付けされるべきであるということに留意して）。例えば、Ｉ／Ｏインタフェース７０８１において受信されるキャッシュラインのワース・オブ・インフォメーションは、キャッシュ７０２１、システムメモリ７０４１又は計算サブシステム７１１２の途中で圧縮／解凍ハブ７１０１によってそれの対応するコンパニオンにより圧縮されてもよい。
【００８３】
計算サブシステム７１１１と７１１２はまた、通信可能に接続される。ここで、これらのサブシステムを互いに接続するのに利用される構成７０９は、双方向ポイント・ツー・ポイントリンク、反対方向の一方向ポイント・ツー・ポイントリンクのペア又はバスとして実現されてもよい。より多くの計算サブシステムが、計算サブシステムの各ペア間に他の通信構成を単に追加することによって追加することが可能である。Ｉ／Ｏインタフェース７０８１と７０８２の何れかなどのＩ／Ｏインタフェースが、Ｉ／Ｏコンポーネントに接続されるバス又はポイント・ツー・ポイントリンクにより実現されてもよい。複数のＩ／Ｏコンポーネントが、何れか１つの圧縮／解凍ハブに接続されてもよい。
【００８４】
システム処理の経路を介し、圧縮及び非圧縮キャッシュラインのワース・オブ・インフォメーションが、両方のタイプの情報（すなわち、圧縮されている情報と圧縮されていない情報）を受け付け可能な上記システムコンポーネントにインタフェースを介しわたされ、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのみが、圧縮されていない情報を受付することのみ可能な上記システムコンポーネントにわたされる。例えば、処理コア７０１１、７０１２及びＩ／Ｏコンポーネント（図７には図示せず）が圧縮されていないキャッシュラインのワース・オブ・インフォメーションを受け付ける（及び協調する）ことのみ可能な実現形態を検討する。
【００８５】
この場合、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのみが、処理コア及びＩ／Ｏユニットにわたされる。キャッシュ７０２１，２、キャッシュコントローラ７０５１，２、システムメモリコントローラ７０３１，２及びシステムメモリ７０４１，２がそれぞれ非圧縮及び圧縮キャッシュラインのワース・オブ・インフォメーションを受け付け可能であると仮定すると、非圧縮及び圧縮キャッシュラインのワース・オブ・インフォメーションが、これらの装置にわたされる。ここで、圧縮又は非圧縮情報の何れかを受け付け可能なシステムコンポーネントに少なくとも送信される各キャッシュラインのワース・オブ・インフォメーションについて、あるタイプの識別子がそれが圧縮されているか否かを特定するためそれに関連付けされるであろう。
【００８６】
基本的な実施例によると、システムに送信中のキャッシュラインのワース・オブ・インフォメーションには、当該キャッシュラインのワース・オブ・インフォメーションが「圧縮されているか」又は「圧縮されていないか」特定するヘッダ情報が添付されている（例えば、圧縮されている場合にはアクティブに設定され、又は圧縮されていない場合には非アクティブに設定されているヘッダ内のビット、又はヘッダ情報の一部の特別な符号化など）。キャッシュラインのワース・オブ・インフォメーションがシステムの基本的なコンポーネント（例えば、キャッシュ、キャッシュコントローラ、メモリコントローラ、圧縮／解凍ハブなど）の内部にある間には、それはバッファ／キュー処理又は格納される傾向にある。キャッシュラインのワース・オブ・インフォメーションがバッファ／キュー処理又は格納されている間には、キャッシュラインのワース・オブ・インフォメーションが「圧縮されている」か、又は「圧縮されていない」か特定するため、ビット又は符号化された値が設定されてもよい。
【００８７】
当該ビット又は符号化された値は、キュー処理又は格納されている間、キャッシュラインのワース・オブ・インフォメーションに添付されるヘッダの一部であってもよく、あるいは、それの格納又はバッファ／キュー位置に参照されるようにしてもよい。一実施例では、当該ビット又は符号化された値は、誤り訂正符号（ＥＣＣ）フィールド（典型的には、情報グループ（ヘッダ情報の一部としてなど）に「従う」）に配置される。他のＥＣＣフィールドのアプリケーションでは、システムメモリのＥＣＣフィールドは、圧縮マップへの「バックアップ」として利用される。ここで各種実施例では、ＥＣＣ情報はシステムメモリにすべてのデータと共に格納される。
【００８８】
おそらく、より効果的な圧縮への参照は、システムメモリに格納されている特定のキャッシュラインのワース・オブ・インフォメーション（部分的に又は全体的に）適用可能なＥＣＣフィールド内に、特定のキャッシュラインのワース・オブ・インフォメーションが「圧縮されている」か、又は「圧縮されていない」かについて記録することによって、完全に回避することが可能である（例えば、方法５５３の参照５０８など）。ここでは、単にメモリから当該情報及びそれに関連するＥＣＣ情報を読み出す場合、キャッシュラインのワース・オブ・インフォメーションの状態（圧縮されているか、又は圧縮されていないか）が利用可能である。これは、圧縮マップのキャッシュミスをサービスするためのさらなる遅延が回避されるという点において、対応するデータの読み出しフェッチが完了するまでに、まだサービスが完了していない圧縮マップキャッシュへのミスが存在するとき、特に効果的である。
【００８９】
図９は、圧縮／解凍ハブ９１０の「データパス」構成の実施例を示す。図９の実施例は、圧縮された情報９０１を送受信しないシステムコンポーネント通信するインタフェースと、圧縮された情報と圧縮されていない情報９０２の両方を送受信可能なシステムコンポーネントと通信するインタフェースに分割されたものとみなすことができる。例えば、（処理コア７０１１と７０１２及びＩ／Ｏコンポーネント（図７には図示せず）は受信（協調）することしか可能ではない実現形態）図９のハブ構成が図７のハブ７１０１に対応する直前に接続された例と整合して、インタフェース９０１が、計算サブシステム７１１１が接続されるＩ／Ｏコンポーネント及び処理コア７０１１と通信するのに利用される（例えば、リンク又はバス９１４はリンク又はバス７１４に対応し、又はリンク又はバス９０８はリンク又はバス７０８１に対応する）。同様に、１）計算サブシステム７１１２、２）キャッシュコントローラ７０５１、及び３）システムメモリコントローラ７０３１と通信するため、インタフェース９０２が利用される（例えば、リンク又はバス９０９はリンク又はバス７０９に対応し、リンク又はバス９１３はリンク又はバス７１３に対応し、リンク又はバス９１７はリンク又はバス７１７に対応する）。
【００９０】
図９のデータパス構成によると、何れかのシステムコンポーネントソースから送信され、圧縮されたキャッシュラインのワース・オブ・インフォメーションを受け付け可能なシステムコンポーネントターゲットに送信される受け付けられた圧縮されていないキャッシュラインのワース・オブ・インフォメーションがバッファ９１２に入力される（図７のバッファ７１２に対応するものとして具体例としてみなすことが可能である）。圧縮されていないキャッシュラインのワース・オブ・インフォメーションとのコンパニオンがまた、バッファ９１２内の圧縮されていないキャッシュラインのワース・オブ・インフォメーションの保留中にバッファ９１２にたまたま存在し、コンパニオンが互いに圧縮可能である場合、それらは圧縮ロジック回路９０７ａによって共に圧縮される。
【００９１】
コンパニオンがバッファ９１２内の圧縮されていないキャッシュラインのワース・オブ・インフォメーションの保留中にバッファ９１２において観察されない場合、圧縮ロジック回路がデータパス９２０によりバイパスされる。圧縮が実行されるか否かに応じて、マルチプレクサ９０５の何れのチャネルが選択されるか決定する。マルチプレクサ９０５から転送されると、圧縮された又は圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、インタフェース９０２に転送され、適切なターゲットシステムコンポーネントに送信される。再び、上述のプロセスでは、当初受け付けられた圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、圧縮された情報を送信する又は送信しないソースから受け付けられてもよい。前者のケースでは、データパス９２２ａが使用される。後者のケースでは、データパス９２１が使用される。ターゲットシステムコンポーネントが圧縮されている又は圧縮されていない情報を受け付け可能であるとき、インタフェース９０２が、ハブ９１０からの排出ポイントとして利用される。
【００９２】
また、図９のデータパス構成に従って、圧縮されたキャッシュラインのワース・オブ・インフォメーションを送信可能なシステムコンポーネントソースから送信され（すなわち、インタフェース９０２において受信される）、圧縮されたキャッシュラインのワース・オブ・インフォメーションを受け付け不可なシステムコンポーネントターゲットに送信される（すなわち、インタフェース９０１から送信される）受け付けたキャッシュラインのワース・オブ・インフォメーションが、それが圧縮されているか否か確認するためチェックされる。圧縮されている場合、圧縮されているキャッシュラインのワース・オブ・インフォメーションは、データパス９２２ｂを介し解凍ロジック回路９０７ｂに送信され、解凍される。
【００９３】
圧縮されていない場合、圧縮されていないキャッシュラインのワース・オブ・インフォメーションは、データパス９２２ｃを介しわたされるように解凍ロジック回路９０７ｂにバイパスされる。解凍が行われる場合、解凍ロジック回路９０７ｂからの結果として得られる圧縮されていないキャッシュラインのワース・オブ・インフォメーションは、インタフェース９０１を介しターゲットシステムコンポーネントに転送される。解凍が行われていない場合、当初受け付けた圧縮されていないキャッシュラインのワース・オブ・インフォメーションは、インタフェース９０１を介しターゲットシステムコンポーネントに転送される。圧縮が行われている否かに応じて、マルチプレクサ９０６の何れのチャネルが選択されるか決定される。
【００９４】
図７に戻って、実現形態に応じて、キャッシュコントローラ７０５及び／又はメモリコントローラ７０３はまた、圧縮及び解凍を実行するための自らのロジック回路を有するものであってもよく、又はそうでなくてもよい。キャッシュラインのワース・オブ・インフォメーションのターゲットシステムコンポーネントが、圧縮回路を有しないシステムメモリコントローラ又はキャッシュコントローラである状況について、ハブの圧縮論理ロジック回路（図９の圧縮ロジック回路９０７ａなど）は、それがキャッシュ又はシステムメモリにそれぞれ格納される前に、情報を圧縮するのに利用可能である。
【００９５】
この場合、キャッシュ又はシステムメモリに圧縮形式によりキャッシュラインのワース・オブ・インフォメーションを格納する可能性を向上させるため、対応するキャッシュ又はシステムメモリに書き込みを行うため、キャッシュコントローラ又はシステムメモリコントローラに送信されたキャッシュラインのワース・オブ・インフォメーションのコピーが、ある期間バッファ９１２に「保持される」。また、キャッシュラインのワース・オブ・インフォメーションへのコンパニオンが、１）キャッシュラインのワース・オブ・インフォメーションのコピーが、バッファ９１２と区別される前に、当該コンパニオンがバッファ９１２に出現し、２）それへの書き込みのため、コンパニオンが同一のキャッシュ又はシステムメモリコンポーネントに送信され、３）コンパニオンがキャッシュラインのワース・オブ・インフォメーションにより圧縮可能である場合、圧縮ロジック回路９０７ａによるキャッシュラインのワース・オブ・インフォメーションのコピーと、キャッシュ又はシステムメモリに格納されている圧縮結果により圧縮することが可能である。
【００９６】
さらに、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのソースシステムコンポーネントが、圧縮回路を有しないシステムメモリコントローラ又はキャッシュコントローラである状況について（すなわち、圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、圧縮回路を有しない対応するコントローラを有するシステムメモリ又はキャッシュから読み出される）、圧縮されていないキャッシュラインのワース・オブ・インフォメーションとのコンパニオンがまた、ソースキャッシュ又はシステムメモリから読み出されてもよく、読み出された圧縮されていないキャッシュラインのワース・オブ・インフォメーションとそれの読み出されたコンパニオンの両方が、バッファ９１２に格納される。それらが圧縮可能である場合、それらはその後に圧縮ロジック回路９０７ａによって圧縮される。それらが圧縮可能でない場合、圧縮されていないキャッシュラインのワース・オブ・インフォメーションは、圧縮ロジック回路９０７ａをバイパスし、当該コンパニオンがバッファ９１２から消去される。さらなる実施例では、コンパニオンの読み出しは実行されず、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのターゲットが、圧縮された情報を受け付けないターゲットである場合、圧縮の可能性は利用されない。
【００９７】
上述の圧縮方法（「バッファへのコピーの保持」、「コンパニオンの読み出し」）が、圧縮回路を有しないメモリコントローラ及び／又はキャッシュコントローラを有するシステムにおいて利用可能であったとしても、これら同一の方法が、圧縮回路を有するメモリコントローラ及び／又はキャッシュコントローラを有するシステムにおいて利用可能であるということは想定することができる。そうすることによってパフォーマンスの効果はほとんど得られないと仮定すると、しかしながら、これらの方法は、キャッシュコントローラ及び／又はメモリコントローラが実際には圧縮回路を有する場合には、システムの能力から「低下される」かもしれない。さらに、各種実施例では、その対応するキャッシュ及び／又はシステムメモリコンポーネントに圧縮された情報を格納可能なメモリコントローラ及び／又はキャッシュコンとｒ−らは。圧縮されたキャッシュラインへの新たな情報の「書き込み」が、圧縮されたキャッシュラインをもはや圧縮可能にしない状況に対処するため、解凍回路及びサポート回路を有するよう構成される。
【００９８】
システムメモリコントローラの実現形態に関して、様々なマルチプロセッサシステムの実施例では、システムメモリコントローラコンポーネントは、図４ａ〜６ｃに関して上述された実施例など、圧縮マップ情報をシステムメモリに格納する従来のものではないメモリコントローラである。しかしながら、圧縮マップが実現される方法は、各種形態を取りうる。例えば、第１のアプローチによると（「集中化アプローチ」と呼ばれる）、システム全体の圧縮マップは、単一の情報本体としてみなされ、第２アプローチでは（「分散化アプローチ」と呼ばれる）、メモリマップはシステム全体の圧縮マップにまとまって対応する個別のものとしてみなされる。マルチプロセッサの集中化された圧縮マップ環境では、プロセッサ自体のキャッシュは、圧縮マップの「キャッシュされた部分」を格納するのに利用可能である（また、圧縮マップキャッシュは、所望の場合には、メモリコントローラから一緒に消去されてもよい）。
【００９９】
さらに、従来のマルチプロセッサキャッシュコヒーレンシ技術（各キャッシュライン及びプロセッサ／バス間のエージェント通信要求について、特定のＭＥＳＩ状態を規定するルールなど）が、圧縮マップのキャッシュされた部分のコンテンツを管理するだけでなく、それに行われた変更を通信するのに利用可能である。典型的には、マルチプロセッサシステムの各プロセッサについて、メモリコントローラとそれ自身の関連するシステムメモリリソースが存在する。また、マルチプロセッサ集中化アプローチにおける圧縮マップ情報は、システム内の異なるシステムメモリリソースに格納されてもよく、圧縮マップ情報は、システム内の何れのシステムメモリが、圧縮マップが圧縮又は非圧縮されていると認識するシステムメモリの特定ブロックに関するかさらに特定するため、図４ｂの実施例４１２ａと４１２ｂから拡張されるべきである。
【０１００】
マルチプロセッサ分散化圧縮マップ環境では、システム内の各メモリコントローラは、圧縮マップの一部を維持するよう構成可能である。ここで、各コントローラの圧縮マップは、アクセスを制御するためのシステムメモリリソースの各種ブロックの圧縮／解凍状態を特定する。従って、圧縮マップ実施例４１２ａと４１２ｂは、分散化アプローチに適している。さらに、圧縮マップのキャッシュ部分がプロセッサのキャッシュに格納されていない場合、メモリコントローラは、圧縮マップキャッシュを有するよう構成されてもよい。
【０１０１】
図１０は、圧縮されているキャッシュラインのワース・オブ・インフォメーションと圧縮されていないキャッシュラインのワース・オブ・インフォメーションの両方を格納可能なキャッシュからのキャッシュラインのワース・オブ・インフォメーションを参照するのに使用されるアドレスビットのマップの実施例を示す。下位ビット１０００は、キャッシュライン内のバイトオフセットを決定する。次に最も下位のビット１００１は、１）圧縮されたキャッシュラインエントリの場合、一緒に圧縮されたコンパニオンから選択するため、又は２）圧縮されていないキャッシュラインエントリの場合、キャッシュタグの一部として利用される。次に最も下位のビット１００２は、キャッシュにおける設定を選択する設定ビットである。最後に、アドレスの上位ビット１００３は、タグビットを指定する。
【０１０２】
圧縮された情報を保持する構成へのスヌープ（ｓｎｏｏｐ）は、キャッシュ内のオフセットを考慮しないものとして決定するアドレスビット１００の直前のビットを処理し、これにより、圧縮されているマクロブロックの上位半分又は下位半分についてマッチングする。例えば、ラインサイズが７４バイトであり（従って、ビット０〜７がオフセット１０００について使用される）、２：１の圧縮が利用される場合、ビット９（図１０は、選択ビット１０００１として示す）は、圧縮された情報により特定のキャッシュラインを選択する。所望のアドレスと格納されているブロックとの間の比較は、ビット９を無視するであろう。４：１の圧縮が代わりに使用される場合、ビット９と１０は無視される。
【０１０３】
キャッシュコヒーレンシルール
使用されるマルチプロセッサアーキテクチャ環境の正確なタイプに関係なく、キャッシュコヒーレンシルールが使用されるべきである。複数のプロセッサがそれらが共有するデータを変更することが可能であるとき、最も「直近の」データを追跡することが重要であり、そうでない場合には、プロセッサは偶然に「ステール（ｓｔａｌｅ）」情報により動作するかもしれない。キャッシュコヒーレンシルールを実現することによって、マルチプロセッサ環境内のプロセッサは、計算システム内のデータ要素の状態を互いに協力して通知し、それらに適切に反応する。図７は、以下で説明されるようなキャッシュコヒーレンシルールを実現するためのロジック回路（ロジックゲートを有する回路など）を含む各圧縮／解凍ハブ７１０１と７１０２に関するキャッシュコヒーレンシルールロジック７１５１と７１５２を示す。キャッシュコヒーレンシルールロジックが圧縮は部の一部であるか否かは、実施例毎に可変とされる。キャッシュコヒーレンシルールロジックは、適用可能なキャッシュコヒーレンシルールが有効化できるように、ある方法によりそれのプロセッサの対応するプロセッサに接続されるべきである（そうでない場合、対応するプロセッサの外部インタフェースも（圧縮／解凍ハブなど）。
【０１０４】
ＭＥＳＩ（Ｍｏｄｉｆｉｅｄ，Ｅｘｃｌｕｓｉｖｅ，Ｓｈａｒｅｄ，Ｉｎｖａｌｉｄ）と呼ばれるキャッシュコヒーレンシをサポートするための周知の状態セットは、キャッシュライン内の情報に適用可能な４つの可能な状態を記述する。Ｍｏｄｉｆｉｅｄ状態（Ｍ）は、キャッシュラインのコンテンツが、システムメモリ内の対応するブロックのコンテンツとは異なることを意味する。Ｅｘｃｌｕｓｉｖｅ状態（Ｅ）は、キャッシュラインのコンテンツが、システム内の１つのキャッシュからのみ利用可能であることを意味する。Ｓｈａｒｅｄ状態（Ｓ）は、キャッシュラインのコンテンツが、システムの他のキャッシュに存在するかもしれないことを意味する。Ｉｎｖａｌｉｄ（Ｉ）とラベル付けされたキャッシュラインのコンテンツは、それのコンテンツが潜在的にストールであり、利用可能でないとみなされるべきであることを意味する。
【０１０５】
一般に、プロセッサが動作すると、それらは対応するキャッシュラインのコンテンツを変更し、次に、当該コンテンツの状態を変更させるかもしれない。従って。キャッシュコヒーレンシルールは、特定の状態の割当てに関するだけでなく、キャッシュライン状態が、それのコンテンツにより実行される動作に応じてどのように変更するか規定する状態遷移を規定する。図１１〜１４は、キャッシュラインレベルにおける圧縮を有するマルチプロセッサ計算システムにおいて利用可能なあるキャッシュコヒーレンシ状態遷移を説明する。ここで、圧縮されたキャッシュラインのワース・オブ・インフォメーションには、Ｍ、Ｅ、Ｓ又はＩ状態の何れかが与えられることが理解されるべきである。
【０１０６】
図１１は、圧縮されたキャッシュラインのワース・オブ・インフォメーションが新たな情報により書き込まれる状況の状態遷移テーブルの実施例を示し、キャッシュラインのワース・オブ・インフォメーションは、それの圧縮された状態を維持することが可能である（すなわち、新たに書き込まれた情報が、コンテンツに圧縮不可とみなさなかった）。図１１の状態遷移テーブルに従って、コンテンツが圧縮されたままとすることを可能にする圧縮されたキャッシュラインのコンテンツの変更は、それが以前にあった状態に関係なく（例えば、Ｍ、Ｅ、Ｓ又はＩ）、Ｍｏｄｉｆｉｅｄ状態（Ｍ）に圧縮されたキャッシュラインに到達させる。
【０１０７】
図１２は、圧縮されたキャッシュラインのワース・オブ・インフォメーションが新たな情報により書き込みされるが、当該キャッシュがそれの圧縮された状態を維持することができない（すなわち、新たに書き込まれた情報は、コンテンツをそれを構成するコンパニオンのキャッシュラインのワース・オブ・インフォメーションに分割する）状況の状態遷移テーブルの実施例を示す。図１２の状態遷移テーブルによると、再び、元の圧縮されたキャッシュラインのワース・オブ・インフォメーションの状態とは関係なく（すなわち、Ｘ＝「考慮しない」）、生成される２つのコンパニオンは、初期的にはＭｏｄｉｆｉｅｄ（Ｍ）状態におかれる。
【０１０８】
図１３は、単一のコンパニオンラインのペアが、単一の圧縮されたキャッシュラインを一緒になって構成するよう圧縮されるときに利用される状態遷移テーブルの実施例を示す。ここで、第１及び第２コンパニオンがすでにキャッシュに存在し、コンパニオンのペアを圧縮可能とみなされるようにするキャッシュラインの１つのコンテンツに変更が書き込まれると仮定する。ここで、書き込まれるキャッシュラインのコンテンツへのコンパニオンの状態がＭ又はＳ状態にある場合、結果として生成される圧縮されたキャッシュラインのワース・オブ・インフォメーションは、Ｍ状態におかれる。書き込み前のコンパニオンの状態がＳ状態である場合、Ｓ状態のコンパニオンに関してＲＦＯ（Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｏｗｎｅｒｓｈｉｐ）が成功しなければ、圧縮は行われるべきでない。すなわち、他のエンティティが何を利用しても、コンパニオンの状態はそれを変更するそれの可能性を「放棄する」ことを可能にする（例えば、それをＳ状態にするため）。
【０１０９】
図１４は、コンパニオンラインのペアが１つの圧縮されたキャッシュラインのワース・オブ・インフォメーションを構成するよう圧縮されるときに使用される状態遷移テーブルの他の実施例を示す。ここで、１）キャッシュラインのワース・オブ・インフォメーションが、フェッチされたキャッシュラインのワース・オブ・インフォメーションがフェッチされたキャッシュにすでに存在するコンパニオンを有する外部リソースからフェッチされ（例えば、他の計算ユニットからのキャッシュ又はシステムメモリなど）、及び２）コンパニオンペアが圧縮可能であるということが仮定される。図１４の状態遷移テーブルに従って、コンパニオンが読み出し前にいる状態に関係なく（すなわち、Ｘ＝「考慮せず」）、圧縮されたキャッシュラインのワース・オブ・インフォメーションの状態はＭである。また、Ｍ状態のコンパニオンについて、それについてのＲＦＯが成功しない場合、圧縮は行われるべきではないということに留意されたい。
【０１１０】
図１５は、ＲＦＯか生じるキャッシュコヒーレンシルールを示す。ＲＦＯは、他のプロセッサ（及び／又は計算システム内の他のコンポーネント）に要求元のプロセッサが自らの排他的使用のため特定のアイテムを使用しようとすることを知らせる特定の情報アイテムに対するプロセッサによるリクエストである。従って、図１５の方法では、第１プロセッサ１５０１は、ＲＦＯによって自らの排他的使用のため圧縮されたキャッシュラインのワース・オブ・インフォメーションをリクエストする（１５０１）。これに対して、リクエストされた圧縮されたキャッシュラインのワース・オブ・インフォメーションが、他の（すなわち、第２の）プロセッサに関するキャッシュ内に配置されている場合、第２プロセッサは、圧縮されているキャッシュラインのワース・オブ・インフォメーションを第１プロセッサに転送し、圧縮されているキャッシュラインのワース・オブ・インフォメーションを自らのキャッシュ１５０２内においてＩｎｖａｌｉｄ状態（Ｉ）にラベル付けする。
【０１１１】
・圧縮／解凍情報のキャッシュ可能性
上述のシステムの実施例が、キャッシュラインのワース・オブ・インフォメーションを圧縮及び解凍することが可能なキャッシュコントローラを使用可能であるため、図１６〜２０に関する説明は、圧縮／解凍処理が可能なキャッシュコントローラの実施例に関する。図１６Ａは、従来のキャッシュにおいて実現される一例となるメモリアドレスを示す。従来のキャッシュでは、アドレスは、タグ、セット及びオフセットコンポーネントにより分割される。セットコンポーネントは、ラインセットの１つを選択するのに使用される。同様に、オフセットコンポーネントは、ライン内のバイトを選択するのに使用されるアドレスの下位ビットである。図１６Ｂは、圧縮された情報により動作可能なキャッシュ（以降、「圧縮されたキャッシュ」と呼ぶ）内の検索のために実現されるメモリアドレスの一実施例を示す。図１６Ｂは、情報のコンパニオンラインを同一のセットにマッピングするのに用いられるコンパニオンビットの実現形態を示す。コンパニオンビットは、１ラインの情報が圧縮されないインスタンスにおいて使用される。従って、１ラインの情報が圧縮されていない場合、コンパニオンビットは、２つの圧縮されたコンパニオンラインの情報の何れが利用されるべきか示す。
【０１１２】
一実施例では、セット選択に使用されるアドレスビットのウィンドウは、セット選択とバイトオフセットビットとの間にコンパニオンビットが存在するように、１つずつ左にシフトされる。このようにして、コンパニオンビットとセット選択ビットは重複しないため、コンパニオンラインは、同一のキャッシュセットにマッピングする。ここで、実際のタグサイズは拡大しないが、もはやセット選択ビットの一部ではないコンパニオンビットがタグの一部となる。従来の圧縮されていないキャッシュでは、コンパニオンビットはアドレスの一部であり、アドレスが基数又は偶数キャッシュセットにハッシュされるか判断するため、セット選択に利用される。
【０１１３】
図１７は、圧縮されたキャッシュのタグアレイエントリの一実施例を示す。タグアレイエントリは、コンパニオンビット（アドレスタグビットの一部としてなど）及び圧縮ビットとを有する。圧縮ビットは、圧縮されたキャッシュタグを従来の圧縮されていないキャッシュのタグより大きな１ビットにする。圧縮ビットは、１ラインの情報が圧縮されているか示す。特に、圧縮ビットは、コンパニオンビットの処理方法を特定する。圧縮ビットが１ラインの情報が圧縮されていると示す場合、コンパニオンビットは、当該ラインが圧縮されたペアであるため、オフセットの一部として扱われる。圧縮ビットが非圧縮を示す場合、コンパニオンビットは、タグアレイの一部とみなされ、オフセットの一部として無視される。
【０１１４】
図１８は、キャッシュコントローラ１８０４の一実施例を示すブロック図である。キャッシュコントローラ１８０４は、設定及び方向選択ロジック１８１０と、バイト選択ロジック１８２０と、圧縮ロジック１８３０とを有する。設定及び方向選択ロジック１８１０は、圧縮されたキャッシュ内のキャッシュラインを選択するのに利用される。図１９は、圧縮されたキャッシュにおける設定及び方向選択ロジック１８１０の一実施例を示す。図１９を参照するに、設定及び方向選択ロジック１８１０は、受け付けたアドレスに基づきキャッシュラインを選択するため、タグアレイから入力を受け付けるタグ比較ロジック１９１０を有する。タグ比較ロジック１９１０は、キャッシュラインが圧縮されたデータを保持するか考慮する。
【０１１５】
キャッシュラインが可変的なデータサイズを保持することが可能であるため、タグ比較ロジック１９１０はまた、特定のラインが圧縮されているか否かに応じて可変長となる。従って、タグの一致は圧縮ビットを考慮する。少なくとも２：１により圧縮可能であるとき、各ラインの２つのセクタが、１つの物理的キャッシュラインに格納される（すなわち、１方向に）。圧縮されていないとき、与えられた論理ラインの異なる論理セクタが、異なる方向に同時に格納可能であるため、これが従来のセクタ化されたキャッシュ構成と異なることに留意することが重要である。
【０１１６】
図１８によると、バイト選択ロジック１８２０は、１つのライン内のアドレス指定されたデータを選択する。一実施例によると、バイト選択ロジック１８２０は、圧縮ビットに依存する。図２０は、バイト選択ロジック１８２０の一実施例を示す。バイト選択ロジック１８２０は、必要に応じて、選択されたキャッシュラインを解凍するデコンプレッサ２０１０を有する。入力マルチプレクサは、圧縮ビットに応じて、解凍されたキャッシュラインのワース・オブ・インフォメーションと圧縮されていないキャッシュラインのワース・オブ・インフォメーションとの間で選択を行う。一実施例では、オフセットの範囲は、当該ラインの情報が圧縮されているかに依存する。
【０１１７】
当該ラインの情報が圧縮されている場合、アドレスのコンパニオンビットは、オフセットの上位ビットとして使用される。当該ラインの情報が圧縮されていない場合、デコンプレッサ２０１０はバイパスされ、アドレスのコンパニオンビットは、オフセットについては使用されない。選択されたラインは、圧縮されたデータを調整するため、物理的ラインのサイズの２倍のサイズを有するバッファに保持される。他の実施例は、物理的ラインのサイズと同一の長さを有するバッファに格納すべき解凍されたワードの何れか半分を選択するため、コンパニオンビットを使用することを選択するものであってもよい。しかしながら、ライン全体の情報のバッファリングは、キャッシュへの書き込み後にデータを変更及び再圧縮するのに便利である。
【０１１８】
圧縮ロジック１８３０はまた、１ラインの情報が圧縮されるべきときを決定するのに利用されてもよい。一実施例によると、日和見主義的な圧縮が、１ラインの情報が圧縮されるべきときを決定するのに利用される。上述の機構は、設定マッピング関数を変更し、隣接するメモリラインの情報が一緒に圧縮されるのを可能にするように、コンパニオンビットを選択する。これは、空間ロカリティを利用する。
【０１１９】
・結びのコメント
本発明の実施例は、半導体チップ内だけでなく、マシーン可読媒体内においてもまた実現可能であるということに留意されたい。例えば、上述の構成は、半導体装置を設計するのに用いられる設計ツールに関するマシーン可読媒体内に格納及び／又は埋め込まれてもよい。例えば、ＶＨＳＩＣ  ＶＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）言語、Ｖｅｒｉｌｏｇ言語又はＳＰＩＣＥ言語によりフォーマット化された回路記述を含む。いくつかの回路記述の例として、動作レベル記述、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述、ゲートレベルネットリスト及びトランジスタレベルネットリストがあげられる。マシーン可読媒体はまた、ＧＤＳ−ＩＩファイルなどのレイアウト情報を有する媒体を含むものであってもよい。さらに、ネットリストファイル又は半導体チップ構成の他のマシーン可読媒体は、上述の教示の方法を実行するため、シミュレーション環境において利用されてもよい。
【０１２０】
従って、本発明の実施例は、ある形式の処理コア（コンピュータの中央演算ユニット（ＣＰＵ）など）により実行されるソフトウェアプログラムとして利用又はサポートするものであってもよく、あるいは、マシーン可読媒体により又はその内部において実現されてもよい。マシーン可読媒体は、マシーン（コンピュータなど）により読み出し可能な形式により情報を格納又は送信するための任意の機構を含む。例えば、マシーン可読媒体は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、電気、光、音響又は他の形式の伝搬信号（搬送波、赤外線信号、デジタル信号など）などを含む。
【０１２１】
本明細書において、本発明は、それの具体的な実施例を参照して説明された。しかしながら、添付された請求項に記載されるような本発明のより広範な趣旨及び範囲から逸脱することなく、様々な変更及び改良が可能であるということは、明らかであろう。従って、本明細書及び図面は、限定的な意味ではなく例示的なものとしてみなされるべきである。
【図面の簡単な説明】
【０１２２】
【図１】図１は、計算システムのアーキテクチャの一部を示す。
【図２】図２は、システムメモリからのコンテンツブロックが、１つのキャッシュラインにロードされることを示す。
【図３ａ】図３ａは、システムメモリコンテンツの整列されたブロックが、１つのキャッシュラインに圧縮可能な改良されたアプローチを示す。
【図３ｂ】図３ｂは、圧縮されたキャッシュラインがキャッシュからイビクトされ、システムメモリに格納された後、実質的なシステムメモリのコンテンツの一例となる結果として得られるマップを示す。
【図４ａ】図４ａは、圧縮されたキャッシュラインを利用可能なシングルプロセッサアーキテクチャの一部を示す。
【図４ｂ】図４ｂは、圧縮されたそれのシステムメモリ内のブロックを追跡するため、システムメモリコントローラによって利用可能な圧縮マップを示す。
【図４ｃ】図４ｃは、圧縮マップキャッシュ及び圧縮／解凍ロジックを有するメモリコントローラを示す。
【図４ｄ】図４ｄは、圧縮マップに対して物理的システムメモリの割当てを特定するレジスタスペースを有するメモリコントローラを示す。
【図５ａ】図５ａは、キャッシュラインのシステムメモリへの書き込み中、メモリコントローラによって利用可能な２つの方法を示す。
【図５ｂ】図５ｂは、キャッシュラインのシステムメモリからの読み出し中、メモリコントローラによって利用可能な３つの方法を示す。
【図５ｃ】図５ｃは、圧縮マップのコンテンツの参照に関する３つの方法を示す。
【図６ａ】図６ａは、メモリコントローラの第１実施例を示す。
【図６ｂ】図６ｂは、メモリコントローラの第２実施例を示す。
【図６ｃ】図６ｃは、メモリコントローラの第３実施例を示す。
【図７】図７は、圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用可能なマルチプロセッサ計算システムを示す。
【図８ａ】図８ａは、圧縮されたキャッシュラインのワース・オブ・インフォメーションにより動作可能な図７のマルチプロセッサ計算システムなどのマルチプロセッサ計算システム内で行われる圧縮に関する各種転送を示す。
【図８ｂ】図８ｂは、圧縮されたキャッシュラインのワース・オブ・インフォメーションにより動作可能な図７のマルチプロセッサ計算システムなどのマルチプロセッサ計算システム内で行われる圧縮に関する各種転送を示す。
【図８ｃ】図８ｃは、圧縮されたキャッシュラインのワース・オブ・インフォメーションにより動作可能な図７のマルチプロセッサ計算システムなどのマルチプロセッサ計算システム内で行われる圧縮に関する各種転送を示す。
【図９】図９は、圧縮／解凍ハブ内のデータパスについての構成の実施例を示す。
【図１０】図１０は、圧縮されたキャッシュラインのワース・オブ・インフォメーションと圧縮されていないキャッシュラインのワース・オブ・インフォメーションの両方を格納可能なキャッシュからのキャッシュラインのワース・オブ・インフォメーションを参照するのに利用されるアドレスビットのマップの実施例を示す。
【図１１】図１１は、キャッシュコヒーレンシルールの第１セットの実施例を示す。
【図１２】図１２は、キャッシュコヒーレンシルールの第２セットの実施例を示す。
【図１３】図１３は、キャッシュコヒーレンシルールの第３セットの実施例を示す。
【図１４】図１４は、キャッシュコヒーレンシルールの第４セットの実施例を示す。
【図１５】図１５は、圧縮されたキャッシュラインのワース・オブ・インフォメーションのオーナーシップに対するリクエストに関する方法の実施例を示す。
【図１６ａ】図１６ａは、キャッシュに実現される従来のメモリアドレスを示す。
【図１６ｂ】図１６ｂは、キャッシュラインのワース・オブ・インフォメーションを圧縮／解凍することが可能なキャッシュにより実現されるメモリアドレスの一実施例を示す。
【図１７】図１７は、キャッシュラインのワース・オブ・インフォメーションを圧縮／解凍可能なキャッシュに対するタグアレイエントリの一実施例を示す。
【図１８】図１８は、キャッシュコントローラの一実施例を示すブロック図である。
【図１９】図１９は、キャッシュラインのワース・オブ・インフォメーションを圧縮／解凍可能なキャッシュにおける設定及び方向選択機構の一実施例を示す。
【図２０】図２０は、バイト選択ロジックの一実施例を示す。
【図１】
2007520813.tif 000003
【図２】
2007520813.tif 000004
【図３ａ】
2007520813.tif 000005
【図３ｂ】
2007520813.tif 000006
【図４ａ】
2007520813.tif 000007
【図４ｂ】
2007520813.tif 000008
【図４ｃ】
2007520813.tif 000009
【図４ｄ】
2007520813.tif 000010
【図５ａ】
2007520813.tif 000011
【図５ｂ】
2007520813.tif 000012
【図５ｃ】
2007520813.tif 000013
【図６ａ】
2007520813.tif 000014
【図６ｂ】
2007520813.tif 000015
【図６ｃ】
2007520813.tif 000016
【図７】
2007520813.tif 000017
【図８ａ】
2007520813.tif 000018
【図８ｂ】
2007520813.tif 000019
【図８ｃ】
2007520813.tif 000020
【図９】
2007520813.tif 000021
【図１０】
2007520813.tif 000022
【図１１】
2007520813.tif 000023
【図１２】
2007520813.tif 000024
【図１３】
2007520813.tif 000025
【図１４】
2007520813.tif 000026
【図１５】
2007520813.tif 000027
【図１６ａ】
2007520813.tif 000028
【図１６ｂ】
2007520813.tif 000029
【図１７】
2007520813.tif 000030
【図１８】
2007520813.tif 000031
【図１９】
2007520813.tif 000032
【図２０】
2007520813.tif 000033
【国際調査報告】
2007520813.tif 000034
2007520813.tif 000035
2007520813.tif 000036
2007520813.tif 000037
2007520813.tif 000038