(57)【要約】【解決手段】  コンピュータシステムの共有キャッシュメモリにおけるデータ割り当てのためのシステム及び方法が検討される。共有セットアソシアティブキャッシュの各キャッシュウエイは、多重ソース、例えば１つ以上のプロセッサコア、グラフィクス処理ユニット（ＧＰＵ）、入力／出力（Ｉ／Ｏ）デバイス、又は多重の異なるソフトウエアスレッドにアクセス可能である。共有キャッシュ制御器は、受信したメモリ要求の対応するソースに基いてキャッシュウエイの各々へのアクセスを別々に有効にし又は無効にする。１つ以上の構成及び状態レジスタ（ＣＳＲ）が、共有キャッシュウエイの各々へのアクセス可能性を変更するために用いられるエンコードされた値を記憶している。ＣＳＲ内に記憶される値を変更することによる共有キャッシュウエイのアクセス可能性の制御が、共有キャッシュ内の擬似ＲＡＭ構造を作り出すこと、及び共有キャッシュが動作を継続している間におけるパワーダウンシーケンスに際して共有キャッシュのサイズを徐々に減少させることのために用いられ得る。【選択図】図３
2012522290.tif 000002
【特許請求の範囲】
【請求項１】
メモリ要求を生成するように構成される第１のソースと、
メモリ要求を生成するように構成される、前記第１のソースとは異なる第２のソースと、
１つ以上のエントリの第１の部分及び前記第１の部分とは異なる１つ以上のエントリの第２の部分を備えている共有キャッシュと、
前記共有キャッシュに結合される共有キャッシュ制御器とを備えたコンピュータシステムであって、
前記共有キャッシュ制御器は、
前記第１のソースによって割り当てられるが前記第２のソースによっては割り当てられないデータを前記第１の部分が有することを許可されているかを決定し、
前記第２のソースによって割り当てられるが前記第１のソースによっては割り当てられないデータを前記第２の部分が有することを許可されているかを決定するように構成されるコンピュータシステム。
【請求項２】
前記共有キャッシュ制御器は、対応するメモリ要求のコマンド種類、及び対応するメモリ要求に含まれるヒントビットの少なくとも一方に更に基いて前記決定することを実行するように更に構成される請求項１に記載のコンピュータシステム。
【請求項３】
前記共有キャッシュ制御器は、前記共有キャッシュが動作を継続している間に、パワーダウン通知を受信することに応答して、
任意のソースによって割り当てられるデータを前記第１の部分が有することを許可されていないかを続いて決定し、
当該内容を前記第１の部分の低レベルメモリへフラッシュし、
前記第１の部分へのメモリ要求をブロックし、
パワーダウン通知を前記第１の部分に対する前記共有キャッシュへ送信するように更に構成される請求項２に記載のコンピュータシステム。
【請求項４】
任意のソースによって割り当てられるデータを有することが許可されないと決定される前記共有キャッシュの部分内に基本入力出力ソフトウエア（ＢＩＯＳ）によって利用されるシステムセットアップ情報を記憶することを更に備えた請求項２に記載のコンピュータシステム。
【請求項５】
前記第１のソース及び前記第２のソースの各々は、プロセッサコア、グラフィクス処理ユニット（ＧＰＵ）、及び入力／出力（Ｉ／Ｏ）デバイスの少なくとも１つである請求項２に記載のコンピュータシステム。
【請求項６】
前記共有キャッシュ制御器は、複数のソースの唯一のソースによって割り当てられるデータを前記第１の部分が有することを許可されているかを決定するように更に構成される請求項５に記載のコンピュータシステム。
【請求項７】
前記第１の部分及び前記第２の部分の前記決定のために用いられるエンコードされた値を記憶するために前記共有キャッシュ制御器に結合される１つ以上の構成及び状態レジスタ（ＣＳＲ）を更に備えた請求項６に記載のコンピュータシステム。
【請求項８】
前記共有キャッシュはセットアソシアティブキャッシュであり、前記第１の部分及び前記第２の部分は少なくとも１つのキャッシュウエイに対応する請求項７に記載のコンピュータシステム。
【請求項９】
第１のソースによってメモリ要求を生成することと、
前記第１のソースとは異なる第２のソースによってメモリ要求を生成することと、
共有キャッシュの１つ以上のエントリを備えている第１の部分が、前記第１のソースによって割り当てられるが前記第２のソースによっては割り当てられないデータを有することを許可されているかを決定することと、
前記共有キャッシュの１つ以上のエントリを備えている第２の部分が、前記第２のソースによって割り当てられるが前記第１のソースによっては割り当てられないデータを有することを許可されているかを決定することとを備えた方法。
【請求項１０】
対応するメモリ要求のコマンド種類、及び対応するメモリ要求に含まれるヒントビットの少なくとも一方に更に基いて前記決定することを実行することを更に備えた請求項９に記載の方法。
【請求項１１】
パワーダウン通知を受信することに応答して、
任意のソースによって割り当てられるデータを前記第１の部分が有することを許可されていないかを続いて決定することと、
当該内容を前記第１の部分の低レベルメモリへフラッシュすることと、
前記第１の部分へのメモリ要求をブロックすることと、
パワーダウン通知を前記第１の部分に対する前記共有キャッシュへ送信することとを更に備えた請求項１０に記載の方法。
【請求項１２】
前記複数のソースの各々によるアクセスに対して無効にされている前記共有エントリの１つ以上のエントリ内に基本入力出力ソフトウエア（ＢＩＯＳ）によって利用されるシステムセットアップ情報を記憶している請求項１０に記載の方法。
【請求項１３】
前記第１のソース及び前記第２のソースの各々は、プロセッサコア、グラフィクス処理ユニット（ＧＰＵ）、及び入力／出力（Ｉ／Ｏ）デバイスの少なくとも１つである請求項１０に記載の方法。
【請求項１４】
複数のソースの唯一のソースによって割り当てられるデータを前記第１の部分が有することを許可されているかを決定することを更に備えた請求項１３に記載の方法。
【請求項１５】
前記第１の部分及び前記第２の部分のために前記決定することのための１つ以上の構成及び状態レジスタ（ＣＳＲ）内にエンコードされた値を記憶することを更に備えた請求項１４に記載の方法。
【請求項１６】
前記共有キャッシュはセットアソシアティブキャッシュであり、前記第１の部分及び前記第２の部分は少なくとも１つのキャッシュウエイに対応する請求項１５に記載の方法。
【請求項１７】
１つ以上のエントリの第１の部分及び前記第１の部分とは異なる１つ以上のエントリの第２の部分を備えている共有キャッシアレイに結合される第１のインタフェースと、
少なくとも第１のソース及び前記第１のソースとは異なる第２のソースからのメモリ要求を受信するように構成される第２のインタフェースと、
制御ユニットとを備えた共有キャッシュ制御器であって、
前記制御ユニットは、
前記第１のソースによって割り当てられるが前記第２のソースによっては割り当てられないデータを前記第１の部分が有することを許可されているかを決定し、
前記第２のソースによって割り当てられるが前記第１のソースによっては割り当てられないデータを前記第２の部分が有することを許可されているかを決定するように構成される共有キャッシュ制御器。
【請求項１８】
前記制御ユニットは、対応するメモリ要求のコマンド種類、及び対応するメモリ要求に含まれるヒントビットの少なくとも一方に更に基いて前記決定することを実行するように更に構成される請求項１７に記載の共有キャッシュ制御器。
【請求項１９】
前記制御ユニットは、前記共有キャッシュが動作を継続している間に、パワーダウン通知を受信することに応答して、
任意のソースによって割り当てられるデータを前記第１の部分が有することを許可されていないかを続いて決定し、
当該内容を前記第１の部分の低レベルメモリへフラッシュし、
前記第１の部分へのメモリ要求をブロックし、
パワーダウン通知を前記第１の部分に対する前記共有キャッシュへ送信するように更に構成される請求項１８に記載の共有キャッシュ制御器。
【請求項２０】
任意のソースによって割り当てられるデータを有することが許可されないと決定される前記共有キャッシュの部分内に基本入力出力ソフトウエア（ＢＩＯＳ）によって利用されるシステムセットアップ情報を記憶することを更に備えた請求項１８に記載の共有キャッシュ制御器。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はコンピュータシステムに関し、更に特定的にはコンピュータシステムの共有キャッシュメモリにおけるデータ割り当てに関する。
【背景技術】
【０００２】
最新のマイクロプロセッサは１つ以上のプロセッサコア又はプロセッサを含むであろうし、各プロセッサはソフトウエアアプリケーションの命令を実行することができる。これらのプロセッサは典型的にはパイプライン化され、この場合、これらのプロセッサは１つ以上のデータ処理段階を含み、データ処理段階はこれら段階の間に置かれる記憶要素（例えばレジスタ及びアレイ）と共に直列に接続されている。パイプラインは命令処理の部分部分が実行される任意の数の段階に分割されていてよいが、命令処理は一般的に、命令をフェッチすること(fetching)と、命令を復号することと、命令を実行することと、実行結果を命令によって指定される宛先に記憶することとを備えている。
【０００３】
理想的には、クロック周期毎にパイプラインの各段階に対する命令の有用な実行が生み出される。しかし、パイプライン内のストール(stall)が当該特定のパイプライン段階の間に実行されるべき有用なワークを生じさせないことがある。ストールの１つの例は典型的には多重サイクルストールであり、データキャッシュ又は命令キャッシュのミスである。性能損失を低減する１つの方法は、多重サイクルストールの発生を低減することである。
【０００４】
マイクロプロセッサは、読み出し又は書き込み動作に対するメモリ内のデータのマイクロプロセッサによる要求の待ち時間を減少させるために、１つ以上のレベルのキャッシュに結合されるであろう。一般的に、キャッシュは１つ以上のブロックを記憶することができ、各ブロックはシステムメモリ内の対応するアドレスで記憶されるデータのコピーである。ここで用いられるように、「ブロック」は連続するメモリロケーション内に記憶される一連のバイトであり、ヒーレンシ(coherency)目的のための単位として取り扱われる。本出願においては、「キャッシュブロック」、「ブロック」、「キャッシュライン」、及び「ライン」の用語には互換性がある。幾つかの実施形態では、ブロックはキャッシュ内での割り当て及び割り当て解除(deallocation)の単位であってもよい。１つのブロック内のバイト数は、設計上の選択に従って変化させられるであろうし、そして任意のサイズである。例としては、３２バイト及び６４バイトがしばしば用いられる。
【０００５】
過多なブロックが同一のセットにマッピングし、従って１つ以上のブロックが当該セットにおいて廃棄される必要がある場合、コンフリクト(conflict)、又はコリジョン(collision)、ミス(misses)がセットアソシアティブ(set-associative)又は直接マッピングのキャッシュ内で生じる。特定のキャッシュは、そのキャッシュをデータ記憶のために用いる２つ以上のソースを有しているであろう。例えば、１つ以上のプロセッサコア、１つ以上のグラフィクス処理ユニット（ＧＰＵ）、１つ以上の入力／出力（Ｉ／Ｏ）デバイス、その他が１つの特定のキャッシュにアクセスするであろう。これらのソースは、キャッシュの記憶資源を均等には共有しないかもしれない。ソースの増大された平均メモリ待ち時間に起因して経験されるシステム性能劣化は、各ソースに対して均等ではないであろう。
【０００６】
例えば、メモリ階層内でＬ２又はＬ３キャッシュであるであろうセットアソシアティブ共有キャッシュは、２つのダイ上プロセッサコア、又はコア、１つのグラフィクス処理ユニット（ＧＰＵ）、及び多重入力／出力（Ｉ／Ｏ）デバイスによってデータ記憶のために利用され得る。このキャッシュ内に記憶されるべき新たなデータに対して、例えばキャッシュミスに続くフィルキャッシュライン(fill cache line)に対して空間を割り当てるために、典型的なキャッシュ実装は、置換されるべく選択されたセット内に最長時間未使用(Least Recently Used)（ＬＲＵ）ウエイ(way)を可能にする。この割り当て戦略は異なるソースからの要求を区別しないので、１つのソース、例えばＩ／Ｏソースがキャッシュ内のウエイのかなりの部分を占めることを可能にしてしまい、これは望ましくないであろう。この選択されたセット内ではコアのデータブロックが直ちに退去させられることがあり、システム内のコアから見た平均メモリ待ち時間を劣化させるかもしれない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述に鑑み、コンピュータシステムのメモリにおけるデータ割り当てのための効率的な方法及びメカニズムが要望されている。
【課題を解決するための手段】
【０００８】
コンピュータシステムの共有キャッシュメモリにおけるデータ割り当てのためのシステム及び方法が検討される。１つの実施形態では、コンピュータシステムは、１つ以上のプロセッサコアと共有セットアソシアティブキャッシュを備えている。共有キャッシュの各キャッシュウエイは多重ソースにアクセス可能であり、ここでは多重ソースはメモリ要求を生成するように構成される。共有キャッシュ制御器は、受信したメモリ要求の対応するソースに基いてキャッシュウエイの各々へのキャッシュフィルライン割り当てを別々に有効にし又は無効にするように構成される。多重ソースの各々は、プロセッサコア、グラフィクス処理ユニット（ＧＰＵ）、及び入力／出力（Ｉ／Ｏ）デバイスの少なくとも１つであってよい。
【０００９】
１つ以上の構成及び状態レジスタ（ＣＳＲ）が、共有キャッシュウエイの各々への前記の割り当てを別々に有効にし又は無効にするために用いられるエンコーディング値を記憶するために、共有キャッシュ制御器に結合される。ＣＳＲ内に記憶される値のプログラミングは、共有キャッシュウエイの各々を１つ以上の予め選択されたソースのみによるキャッシュミスに続く割り当てに対して利用可能にすることができる。従って、Ｉ／Ｏデバイスのような特定の第１のソースは、プロセッサコアのような第２のソースのデータの不所望な退去を回避するために、キャッシュミスに続く特定のキャッシュウエイへの割り当て利用可能性を有していなくてよい。１つ以上のＣＳＲ内に記憶される値を変更することによる共有キャッシュウエイの割り当て利用可能性の制御が、共有キャッシュ内の擬似ＲＡＭ構造を作り出すこと、及び共有キャッシュが動作を継続している間におけるパワーダウンシーケンスに際して共有キャッシュのサイズを徐々に減少させることの両方のために用いられてもよい。
【００１０】
これらの及び他の実施形態は、以下の説明及び添付の図面を参照することによって明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】図１はコンピュータシステムの１つの実施形態を示す一般化されたブロック図である。
【００１２】
【図２】図２は例示的な処理ノードの１つの実施形態を示す一般化されたブロック図である。
【００１３】
【図３】図３はセットアソシアティブキャッシュ記憶配置の１つの実施形態を示す一般化されたブロック図である。
【００１４】
【図４】図４は共有資源内でのデータの効率的な割り当てのための方法の１つの実施形態のフロー図である。
【００１５】
【図５】図５は効率的なキャッシュラインロックメカニズムのための方法の１つの実施形態のフロー図である。
【００１６】
【図６】図６は効率的なキャッシュセクターパワーダウンシーケンスのための方法の１つの実施形態のフロー図である。
【００１７】
【図７】図７は効率的なキャッシュセクターパワーアップシーケンスのための方法の１つの実施形態のフロー図である。
【００１８】
本発明が種々の修正及び代替的な形態を許容し得る一方で、具体的な実施形態が例示の目的で図面に示されており、またここに詳細に説明されている。しかし、図面及びそれに対する詳細な説明は、開示された特定の形態に本発明を限定することを意図しているのではなく、むしろ本発明は、添付の特許請求の範囲により画定されるような本発明の精神及び範囲内にある全ての修正、均等なもの及び代替案を網羅するものであることが理解されるべきである。
【発明を実施するための形態】
【００１９】
以下の説明においては、本発明の完全な理解をもたらすために多くの特定の詳細が示されている。しかし、当業者であれば、これらの特定の詳細なしに本発明が実施され得ることを認識すべきである。幾つかの例では、周知の回路、構造及び技術は、本発明を不明瞭にすることを避けるために、詳細には示されていない。
【００２０】
図１を参照すると、コンピュータシステム１００の１つの実施形態が示されている。一般的に言えば、コンピュータシステム１００は複数の処理ノード１１０ａ〜１１０ｄを含む。ここで用いられているように、文字が続く参照番号によって参照される要素は、当該番号単独によって集合的に参照されることがある。例えば、処理ノード１１０ａ〜１１０ｄは、処理ノード１１０又はノード１１０として集合的に参照されることがある。図１には４つのノード１１０が示されているが、他の実施形態は、１個の、２個の、６個の、又は任意の異なる数のノードを備えていてよく、各ノード１１０は１つ以上のプロセッサコアを備えている。
【００２１】
各ノード１１０は、それぞれのメモリ制御器（ＭＣ）１２０を介してそれぞれのメモリ１３０に結合されてよい。加えて、各処理ノード１１０は、他の処理ノード１１０と通信するために用いられるインタフェース（ＩＦ）論理１４０を含んでいてよい。例えば、処理ノード１１０ａは、処理ノード１１０ｂ及び１１０ｃと通信するためのインタフェース論理１４０ａを含む。同様に、処理ノード１１０ｂは、処理ノード１１０ａ及び１１０ｄと通信するためのインタフェース論理１４０ｂを含み、他も同様である。図１の実施形態においては、処理ノード１１０ｄは、インタフェース論理１４０ｄを介して入力／出力（Ｉ／Ｏ）デバイス１６０ａと通信するように結合されるものとして示されている。Ｉ／Ｏデバイス１６０ａは更に第２のＩ／Ｏデバイス１６０ｂに結合される。また、処理ノード１１０ｄは、グラフィクス処理ユニット（ＧＰＵ）１７０と通信するように結合されるものとして示されている。他の処理ノードも同じようにして他のＩ／Ｏデバイス、他のＧＰＵ、又は他の要素と通信してよい。代替的には、処理ノード１１０はＩ／Ｏブリッジと通信してよく、Ｉ／ＯブリッジはＩ／Ｏバスに結合される。
【００２２】
１つの実施形態では、コンピュータシステム１００は、Ｉ／Ｏデバイス１６０及びＧＰＵ１７０に結合するものとして示されるノード１１０ｄのような唯一の処理ノード１１０を有していてよい。そのような実施形態の例は、モバイルラップトップシステム、デスクトップ、低位機サーバシステム、中位機ワークステーション、その他を含む。そのような実施形態に対しては、単一の処理ノード１１０が通信のためのシステムバス制御器を内部的に利用してよい。システムバス制御器の１つの例は、ＡＭＤ−７６２（商標）ノースブリッジシステムバス制御器(Northbridge system bus controller)である。
【００２３】
別の実施形態においては、コンピュータシステム１００は多重処理ノード１１０を含んでいてよい。そのような実施形態に対しては、コンピュータシステム１００がノード間通信のためのパケットベースのリンクを実装していてよい。図示される実施形態においては、複数の単方向性の線の複数のセットとしてリンクが実装される（例えば、処理ノード１１０ａから処理ノード１１０ｂへパケットを送信するために複数の線１５０ａが用いられ、そして処理ノード１１０ｂから処理ノード１１０ａへパケットを送信するために複数の線１５０ｂが用いられる）。図１に示される他の処理ノードの間でパケットを送信するために他の線１５０ｃ〜１５０ｈのセットが用いられる。
【００２４】
リンク１５０は、複数の処理ノード間での通信のためのキャッシュコヒーレントなやり方で動作させられてよく、又はＩ／Ｏデバイス１６０ａ〜１６０ｂ（及び所望に応じて追加的なＩ／Ｏデバイス）の間でのデイジーチェイン(daisy-chain)構成として非コヒーレントなやり方で動作させられてよい。尚、１つの処理ノード１１０から他へ送信されるべきパケットは、１つ以上の中間ノードを通過してよい。例えば、処理ノード１１０ａによって処理ノード１１０ｄへ送信されるパケットは、図１に示されるような処理ノード１１０ｂ又は処理ノード１１０ｃのいずれかを通過してよい。任意の適切な経路付けアルゴリズムが用いられてよい。コンピュータシステム１００の他の実施形態は、図１に示される実施形態よりも多い又は少ない処理ノードを含んでいてよい。また、各処理ノードが点対点ネットワークを介して全ての他の処理ノードと結合される他の実施形態も可能である。
【００２５】
図示されるメモリ制御器及びインタフェース論理に加えて、各処理ノード１１０は、後で更に説明されるように１つ以上のプロセッサ及び関連するキャッシュを含んでいてよい。概して処理ノード１１０は、少なくとも１つのプロセッサを備えており、そして所望に応じて、メモリ及び他の論理と通信するためのメモリ制御器を随意的に含んでいてよい。
【００２６】
メモリ１３０は任意の適切なメモリデバイスを備えていてよい。例えばメモリ１３０は、１つ以上のＲＡＭＢＵＳダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ＤＲＡＭ、スタティックＲＡＭ等を備えていてよい。コンピュータシステム１００のアドレス空間は複数のメモリ１３０間で分割される。各処理ノード１１０は、どのアドレスがどのメモリ１３０にアドレスされるか、及びこれに伴い特定のアドレスに対するメモリ要求がどの処理ノード１１０に経路付けられるべきかを決定するために用いられるメモリマップを含んでいてよい。１つの実施形態では、コンピュータシステム１００内でのアドレスに対するコヒーレンシ点は、そのアドレスに対応するバイトを記憶しているメモリに結合されるメモリ制御器１２０である。メモリ制御器１２０は、メモリ１３０とインタフェースするための制御回路を備えていてよい。加えて、メモリ制御器１２０は、メモリ要求を待ち行列に入れるための要求キュー(request queues for queuing memory requests)を含んでいてよい。
【００２７】
概してインタフェース論理１４０は、リンクからのパケットを受信するため及びリンク上に送信されるべきパケットをバッファするためのバッファを備えていてよい。コンピュータシステム１００は、パケットを送信するための任意の適切なフロー制御メカニズムを採用していてよい。Ｉ／Ｏデバイス１６０は任意の所望の周辺デバイスとして図示されている。例えばＩ／Ｏデバイス１６０は、ネットワークインタフェースカード、ビデオアクセラレータ、オーディオカード、ハード又はフロッピー（登録商標）のディスクドライブ又はドライブ制御器、スモールコンピュータシステムズインタフェース（ＳＣＳＩ）アダプタ及びテレホンカード(telephony cards)、モデム、サウンドカード、並びに汎用インタフェースバス（ＧＰＩＢ）又はフィールドバスインタフェースカードのような種々のデータ収集カードを備えていてよい。
【００２８】
図２は例示的な処理ノード１１０の１つの実施形態のブロック図である。図１の回路部分に対応する回路部分には同一の数字が付されている。処理ノード１１０は、メモリ制御器１２０と、インタフェース論理１４０と、プロセッサコア１１２及び対応するキャッシュメモリサブシステム１１４を含み得る１つ以上の処理ユニット１１５と、システム通信論理１１６と、共有キャッシュメモリサブシステム１１８とを含んでいてよい。１つの実施形態では、処理ノード１１０の図示される機能は単一の集積回路上に組み込まれている。別の実施形態では、図示される機能はコンピュータマザーボード上のチップセット内に組み込まれる。
【００２９】
１つの実施形態では、処理ノード１１０は、モバイルコンピュータ、デスクトップ、その他におけるスタンドアローンシステムである。１つの実施形態では、システム通信論理１１６はシステムバスである。別の実施形態では、ユニット１１５をメモリ１３０、Ｉ／Ｏデバイス１６０、ＧＰＵ１７０、その他に結合するために、処理ノード１１０はノースブリッジシステムバス制御器を論理１１６内に組み込んでいる。そのような実施形態においては、システム通信論理１１６は、メモリ制御器１２０及びインタフェース論理１４０の機能を置換し又は組み込んでいてよい。１つの実施形態では、論理１１６はノースブリッジ及びサウスブリッジ両方のシステムバス制御器を組み込んでいてよい。ノースブリッジプロトコルは、ユニット１１５をメモリ１３０及びＧＰＵ１７０に結合するために用いられてよい。サウスブリッジプロトコルは、ユニット１１５をＩ／Ｏデバイス１６０、リアルタイムクロック、電力管理ユニット、その他に結合するために用いられてよい。論理１１６のそのような実施形態の１つの例は、ＡＭＤ−７６２（商標）ノースブリッジシステム制御器及びＡＭＤ−７６８（商標）サウスブリッジ周辺バス制御器を含んでいてよい。
【００３０】
別の実施形態においては、処理ノード１１０は多重ソケットシステムの１つのソケットである。そのような実施形態においては、システム通信論理１１６はパケット処理論理を組み込んでいてよい。概してシステム通信論理１１６は、プロセッサコア１１２及び／又はキャッシュメモリサブシステム１１４に応答して制御パケットを生成すること、メモリ制御器１２０によって選択されるサービスのためのトランザクションに応答してプローブコマンド(probe commands)及び応答パケットを生成すること、並びにインタフェース論理１４０を介して他のノードへの中間ノードであるノード１１０に対してパケットを経路付けることのために、処理ノード１１０が結合されているリンク上で受信される制御パケットに応答するように構成されてよい。インタフェース論理１４０は、パケットを受信し且つ論理１１６内のパケット処理論理によって用いられる内部クロックにパケットを同期させる論理を含んでいてよい。
【００３１】
プロセッサコア１１２は、所定の命令セットに従って命令を実行するための回路を含む。例えば、ｘ８６命令セットアーキテクチャ（ＩＳＡ）が選択されてよい。代替的には、アルファ(Alpha)、パワーＰＣ(PowerPC)、又は任意の他の命令セットアーキテクチャが選択されてよい。概してプロセッサコア１１２は、データ及び命令に対してそれぞれキャッシュメモリサブシステム１１４にアクセスする。ここで用いられているように、キャッシュメモリサブシステムに関して「アクセスする(access)」の用語は、対応する要求アドレスの要求されたデータがキャッシュ内に存在する場合におけるキャッシュヒット又はキャッシュ内にそれが存在しない場合におけるキャッシュミスをもたらし得る読み出し又は書き込み要求動作を実行することを参照する。
【００３２】
要求されたブロックがキャッシュメモリサブシステム１１４内又は共有キャッシュメモリサブシステム１１８内で発見されないようなキャッシュミスが生じると、読み出し要求が生成されてよく、読み出し要求はミスしているブロックがマッピングされているノード内のメモリ制御器へ送信されてよい。要求されたブロックを伴う対応するキャッシュフィルライン(cache fill line)は、元の読み出し又は書き込み要求を完了するために、対応するキャッシュへと運ばれてよい。また、キャッシュフィルラインは、そのキャッシュ内の対応するセット内に置かれてよい。対応するセット内に利用可能なウエイ(ways)がない場合には、典型的には最長時間未使用(Least Recently Used)（ＬＲＵ）アルゴリズムが、セット内のどのウエイがそのデータを退去させると共にキャッシュフィルラインデータで置換されるべきかを決定する。ここで用いられているように、「割り当てる(allocate)」の用語は、より低レベルのキャッシュ階層からフェッチされたキャッシュフィルラインを、特定のキャッシュへのキャッシュミスに続いてその特定のキャッシュのウエイ内に記憶することを参照する。
【００３３】
キャッシュサブシステム１１４及び１１８は、データのブロックを記憶するように構成される高速キャッシュメモリを備えていてよい。キャッシュメモリサブシステム１１４は、それぞれのプロセッサコア１１２内に一体化されていてよい。代替的には、キャッシュメモリサブシステム１１４は、所望に応じてバックサイドキャッシュ構成又はインライン構成でプロセッサコア１１２と結合されていてよい。更には、キャッシュメモリサブシステム１１４は、キャッシュの階層として実装されてよい。プロセッサコア１１２（階層内）のより近くに位置しているキャッシュは、所望に応じてプロセッサコア１１２内に一体化されていてよい。１つの実施形態では、キャッシュメモリサブシステム１１４は各々Ｌ２キャッシュ構造を代表し、そして共有キャッシュサブシステム１１８はＬ３キャッシュ構造を代表する。別の実施形態では、キャッシュメモリサブシステム１１４は各々Ｌ１キャッシュ構造を代表し、そして共有キャッシュサブシステム１１８はＬ２キャッシュ構造を代表する。他の実施形態もまた可能であり、そして検討されている。
【００３４】
キャッシュメモリサブシステム１１４及び共有キャッシュメモリサブシステム１１８の両方が、対応するキャッシュ制御器に結合されるキャッシュメモリ又はキャッシュアレイを含んでいてよい。１つの実施形態では、セットアソシアティブ(set-associative)共有キャッシュメモリサブシステム１１８のためのキャッシュ制御器は、プログラム可能な構成及び状態レジスタ(configuration and status registers（ＣＳＲ）並びに論理を含んでいてよい。サブシステム１１８を使用している種々のソースが、キャッシュミスに続くデータ、例えばキャッシュフィルラインを同一の領域内に割り当てることを防止するために、ＣＳＲ及び対応する論理は、サブシステム１１８のキャッシュアレイを多重独立セクションにセグメント化するために利用されてよい。
【００３５】
キャッシュ内に現在すでに記憶されているデータは、ＣＳＲ内に記憶されている値にかかわらず読み出し又は書き込みアクセスに対して任意のソースによってヒットされてよい。例えば、キャッシュは修正されたデータを有しているであろうから、より低レベルのメモリ階層は対応する古いデータ(stale data)を有しているかもしれない。要求中のソースは、要求されたキャッシュラインの更新されたコピーを受信するべきである。従って、共有キャッシュの特定のセット内の特定のウエイに対しては、任意のソースからのアクセスが許可される一方で、キャッシュミスに起因する割り当ては、ＣＳＲ内に記憶されている値によって決定される。そのようなスキームは、有用なデータの退去を制限し、あるいは有用でないデータによる共有ャッシュの汚染を制限するであろう。アクセスは任意のソースによって許可されるが、アクセスに対するアドレスの範囲は、各ソースに対して予め定められていてよい。
【００３６】
データは共有キャッシュメモリ１１８のアレイ内に種々の方法で記憶され得る。例えば、図３は１６ウエイセットアソシアティブキャッシュ組織(organization)を用いてデータが記憶される記憶配置(storage arrangement)３００の１つの実施形態を示している。セットアソシアティブキャッシュ内の異なる数のウエイ、例えば４ウエイ、８ウエイ、その他が選択されてよい。所与のキャッシュセット３３２は、共有キャッシュメモリサブシステム１１８のようなセットアソシアティブキャッシュにアクセスするのに用いられるアドレス３１０のブロックインデックス３１８部によって他のセットから選択されてよい。ブロックタグ３１２及び３３６が同一の値を含み且つ対応するブロック状態３３４が有効キャッシュブロックのような予め定められたマッチ値を指定する場合に、キャッシュブロックヒットが生じてよい。
【００３７】
１つの実施形態では、キャッシュ３３０内のキャッシュライン又はキャッシュブロックのデータ部３３８は、６４バイトを記憶するように構成される。他のサイズも可能であり、そして検討されている。キャッシュ３３０の１６ウエイの各々はまた、状態情報３３４を記憶してよい。このブロック状態３３４は、有効ビットと、対応するキャッシュブロックを所有しているソースを表示するキャッシュブロックオーナーエンコーディングと、キャッシュ制御器によって採用されているキャッシュ交換アルゴリズムに関連して使用される最長時間未使用（ＬＲＵ）退去情報と、キャッシュコヒーレンシ状態、例えば修正された状態、排他的な状態、所有された状態、共有された状態、無効にされた状態、その他の状態を指定する表示とのうちの少なくとも１つ又は２つ以上を備えていてよい。他の含まれる状態情報も可能であり、そして検討されている。ブロックタグ３３６は、選択されたキャッシュセット３３２内で１６キャッシュラインのどれがアクセスされている最中であるかを決定するために用いられてよい。加えて、アドレス３１０のオフセット３２０が、キャッシュライン内の具体的なバイト又はワードを表示するために用いられてよい。
【００３８】
キャッシュセット３３２は、アドレス３１０のブロックインデックス３１８によって選択されてよい。ブロック状態３３４及びブロックタグ３３６は、各キャッシュウエイ内のデータ３３８と共に連続するビット内に記憶されていてよいが、１つの実施形態では、ブロック状態３３４及びブロックタグ３３６は、データ３３８と同じアレイ内よりはむしろ、別個のアレイ内に記憶されていてよい。
【００３９】
キャッシュアレイ内でのキャッシュミスに続くメモリ要求のデータ記憶の割り当てを制御することは有用であろう。特定のキャッシュの対応するセット内に利用可能なウエイがない場合には、対応するセット内に現在記憶されているキャッシュラインは退去させられる必要がある。典型的には、現在記憶されているキャッシュラインを退去のために選択するのに最長時間未使用（ＬＲＵ）スキームが利用される。例えば、コア１１２ａ及びコア１１２ｂは共有キャッシュ１１８の特定のセクション内のみに割り当てることを許可されてよく、Ｉ／Ｏデバイスは別個のセクションに割り当てることに制限されてよく、そしてグラフィクス処理ユニット（ＧＰＵ）は更に別の別個のセクション内のみに割り当てることに制限されてよい。
【００４０】
例えばキャッシュ３３０内の記憶配置に関しては、コア１１２ａはウエイ１５〜１２内のみに割り当てることを許可されてよく、コア１１２ｂはウエイ１１〜８内のみに割り当てることを許可されてよく、ＧＰＵはウエイ７及び６内のみに割り当てることを許可されてよく、そして３つの別個のＩ／Ｏデバイスは各２ウエイ内のみに、例えばそれぞれウエイ５及び４内のみと、ウエイ３及び２内のみと、ウエイ１及び０内のみとに割り当てることを許可されてよい。従って、コア１１２ａ及び１１２ｂは各々共有キャッシュの１／４を割り当てることができ、そしてＧＰＵ１７０及び３つのＩ／Ｏデバイス１６０の各々は、同じ共有キャッシュの１／８を各々が割り当てることができる。割り当てのための予め定められた許可を提供するメカニズムについては簡単に説明されるであろう。このようにして、別個のセクション内で各ソースに関連する非共有、独立のデータ記憶を維持することによって、これらのソースはサブシステム１１８のキャッシュアレイを効率的に共有することができる。１つの実施形態では、例において説明されるように、コア１１２は、データ割り当てに対してＧＰＵ１７０及び任意のＩ／Ｏデバイス１６０よりも大きな共有キャッシュ１１８のセクションを有していてよい。
【００４１】
尚、割り当てる許可を有していないソースによる特定のウエイ内への書き込み動作キャッシュヒットは、通常どおりに行われる。上述の例を用いると、Ｉ／Ｏデバイス１６０は、ウエイ１５内に割り当てる許可を有していないであろう。もし、Ｉ／Ｏデバイス１６０が特定のセット内のキャッシュラインの読み出し動作を実行してキャッシュミスが生じると、要求されたキャッシュラインを含んでいるキャッシュフィルラインが、より低レベルのメモリ階層からフェッチされる。このキャッシュフィルラインは読み出し動作を完了するために用いられる。それに続いて又は同時に、キャッシュセット内の全てのキャッシュウエイの間で選択するよりはむしろ、対応するキャッシュセット内の予め定められた数のウエイ内で、置換されるべきキャッシュウエイを選択するために、最長時間未使用（ＬＲＵ）アルゴリズムのようなメカニズムが展開されてよい。対応するＣＳＲ内に記憶されるエンコードされた値が、キャッシュウエイ１及び０のみがＩ／Ｏデバイス１６０に対する割り当てのために用いられ得ることを決定するのに使用されてよい。それに続く退去はキャッシュウエイ１及び０内でのみ生じてよく、そしてこれら２つのキャッシュウエイの最長時間未使用キャッシュウエイが選択されてよい。１つの実施形態では、Ｉ／Ｏデバイス１６０が特定のセット内への書き込み動作を実行し且つウエイ１５内へのキャッシュヒットが生じている場合には、Ｉ／Ｏデバイス１６０はウエイ１５内のデータを修正してよい。
【００４２】
別の実施形態においては、コア１１２ａ及び１１２ｂはデータを共有してよいが、このデータはＧＰＵ１７０又は３つの別個のＩ／Ｏデバイス１６０とは共有されなくてよい。両コア１１２ａ及び１１２ｂはウエイ１５〜８のみを割り当てることを許可されてよく、ＧＰＵ１７０はウエイ７及び６のみを割り当てることを許可されてよく、そして３つの別個のＩ／Ｏデバイス１６０は各２ウエイのみ、例えばそれぞれウエイ５及び４のみと、ウエイ３及び２のみと、ウエイ１及び０のみとを割り当てることを許可されてよい。従って、コア１１２ａ及び１１２ｂは共有キャッシュの１／２を割り当てる許可を有し、そしてＧＰＵ１７０及び３つのＩ／Ｏデバイス１６０の各々は、同じ共有キャッシュの１／８を各々が割り当てる許可を有している。
【００４３】
１つの実施形態では、構成及び状態レジスタ（ＣＳＲ）は、システム内で指定されたキャッシュ、例えばキャッシュメモリサブシステム１１８を使用する各ソース、例えばコア１１２ａ、Ｉ／Ｏデバイス１６０、ＧＰＵ１７０、その他に対する割り当て空間を制御するために、エンコードされた値を記憶するのに用いられてよい。例えば、メモリ要求のソースに基く１６ウエイセットアソシアティブ指定キャッシュの分割(partitioning)は、５ビットマスクエンコーディングを利用してよい。エンコーディング値の１つの例が表１に示されている。
【表１】
2012522290.tif 000003
【００４４】
上掲の表１に示されるエンコーディングは、システム内で指定されるキャッシュを共有している各ソースに対する割り当て空間を制御することができる。１つの実施形態では、コア１１２ａに対する５ビットＣＳＲは、コア１１２ａがキャッシュ１１８の１６ウエイの半分内にデータを割り当てることを可能にする表１における表項目２のような値「０００１１」を記憶するようにプログラムされてよい。これらの特定のウエイはウエイ７〜０に指定されてよく、ここでは、図３におけるキャッシュ３３０の例示的な記憶配置と同様に、ウエイは、キャッシュのセット内で左から右へ１５〜０の番号を付されている。他の標識付けスキームも可能であり、そして検討されている。
【００４５】
同様に、ＧＰＵ１７０に対する５ビットＣＳＲは、ＧＰＵがキャッシュ１１８の１６ウエイの４つ内にデータを割り当てることを可能にする表１における表項目３のような値「０１００１」を記憶していてよい。これらの特定のウエイはウエイ１１〜８に指定されてよい。第１のＩ／Ｏデバイス１６０に対する第３の５ビットＣＳＲは、第１のＩ／Ｏデバイスがキャッシュ１１８の２つのウエイ内にデータを割り当てることを可能にする表１における表項目２のような値「０１１００」を記憶していてよい。これらの特定のウエイはウエイ１３〜１２に指定されてよい。最後に、第２のＩ／Ｏデバイス１６０に対する第４の５ビットＣＳＲは、第２のＩ／Ｏデバイスがキャッシュ１１８の２つのウエイ内にデータを割り当てることを可能にする表１における表項目４のような値「０１１１０」を記憶していてよい。これらの特定のウエイはウエイ１５〜１４に指定されてよい。同様に、キャッシュ１１８は異なる数のウエイを利用してよく、また表１のエンコーディングは、異なる数のウエイ、例えば４ウエイ、８ウエイ、又は他のセットアソシアティブ選択に適合するように変更されてよい。
【００４６】
尚、キャッシュのある領域、例えばウエイ１及び０、即ち１６ウエイセットアソシアティブキャッシュの１／８は、全てのソースによる割り当てに対して無効にされていてよく、同時に全てのソースによる割り当てのためにキャッシュの他の領域を有効にしてよい。１つの実施形態では、各ソースが対応する個々のＣＳＲを利用することに加えて、グローバルＣＳＲが全てのソースによって利用されてよい。グローバルＣＳＲ内に記憶されるエンコードされた値は、個々のＣＳＲ内に記憶されるエンコードされた値をオーバーライド(override)してよい。例えば１つの実施形態では、グローバルＣＳＲは、表１の表項目６のような値「１００００」を記憶するようにプログラムされてよい。表１に従うこの値は、対応するセットアソシアティブキャッシュのウエイ１及び０について任意のソースによる割り当てを無効にする。キャッシュのウエイ１及び０以外の追加的なウエイは、対応する個々のＣＳＲに従って特定のソースによる割り当てに対して無効にされてよいが、ウエイ１及び０は、個々のＣＳＲの記憶されているエンコードされた値にかかわらず、無効にされていることが保証される。別の実施形態では、グローバルＣＳＲを利用するよりはむしろ、特定のソースのための各個々のＣＳＲが、ウエイ１及び０を無効にするために修正されたその内容を有していてよい。いまや、ウエイ１及び０内に記憶されている情報は、後のフィルトランザクション(later fill transaction)によりビクティム化されること(being victimized)が防止されている。これら特定のウエイ、即ちこのケースにおけるウエイ１及び０は、割り当てのために先に使用されていてよい。そのような使用の更なる詳細は後で提供される。
【００４７】
１つの実施形態では、処理ノード１１０内のキャッシュ１１８のためのキャッシュ制御器は、特定のキャッシュアクセス要求のソースを認識しているので、キャッシュ制御器及び対応する論理は、どのＣＳＲがキャッシュのウエイ有効及びウエイ無効制御のためにアクセスしているのかを知っていることになる。１つの実施形態では、特定のソースへの特定のＣＳＲの割り当て及び特定のＣＳＲの記憶されている値の両方ともが、システムの起動の間に基本入力出力ソフトウエア（ＢＩＯＳ）によってセットされる。従って、割り当て及び値は１回だけセットされ、このことはセキュリティの理由からなされていてよく、その一方でＢＩＯＳは後で変更され又は更新されてよい。別の実施形態では、デバイスドライバによって動的にロードされ且つオペレーティングシステム更新メカニズムを介して透過的に(transparently)更新されるファームウエアが、ＣＳＲの割り当て及び記憶される値の両方をそのような許可が与えられている場合に変更するために用いられてよい。更に別の実施形態では、ＣＳＲの割り当て及び記憶される値をプログラムしまた再プログラムするために、例えば特定のアプリケーションのための制御をソフトウエアプログラマに提供することのような他のソフトウエアメカニズムが利用されてよい。繰り返すが、そのような制御はセキュリティを理由として制限されてよい。
【００４８】
下の表２は表１に示されるエンコーディングを拡張している。表２に関して、１つの実施形態では、ベクトル［１５：０］内の論理「１」は指定されたセットアソシアティブキャッシュ内で有効にされているウエイを定義していてよく、そして論理「０」は無効にされているウエイを定義していてよい。
【表２】
2012522290.tif 000004
【００４９】
既に述べたように、構成及び状態レジスタ（ＣＳＲ）は、共有されている資源内での各ソースに対する割り当て空間を制御するために、表１又は表２に示される値のようなエンコードされた値を記憶するのに用いられてよい。例えば、上で議論されたように、Ｉ／Ｏ要求ソースは、１６ウエイセットアソシアティブキャシュの２ウエイのみ、例えばキャッシュのウエイ１５及び１４のみを割り当てるようにプログラムされてよい。このことは、これらのＩ／Ｏ要求に対応するＣＳＲが５ビット値「０１１１０」を記憶するようにＣＳＲをプログラムすることによって達成され得る。表１の表項目４及び表２の表項目１５は両方とも５ビット値「０１１１０」に対応しており、ウエイ１５及び１４がこのエンコーディングに対して有効にされることを示している。上述の実施形態におけるそのようなエンコーディングは、共有キャッシュ内の記憶の１／８を超えてＩ／Ｏ要求が割り当てることを可能にはしなくてよい。
【００５０】
セットアソシアティブキャッシュのような共有資源の割り当てのためにメモリ要求のソースを利用することに加えて、メモリ要求の種類が用いられてもよい。共有キャッシュの特定のウエイの対応するキャッシュラインを割り当てることをメモリ要求が許可されているかどうかを決定するために、メモリ要求の種類がキャッシュ制御器内の制御論理のような論理によって利用されてよい。オプコード(opcode)にエンコードされているであろうメモリ要求の種類、及びＣＳＲ内に記憶される値は両方とも、キャッシュミスに由来するキャッシュフィルトランザクションの間にキャッシュラインを割り当てるかどうか、及び対応するセットのどのウエイにキャッシュフィルラインが割り当てられるかの両方を決定するために、制御論理によって利用されてよい。更なる詳細が簡潔に提供される。概して、キャッシュをヒットする読み出し要求に対しては、対応するキャッシュラインのデータ部は修正されない。しかし、状態情報、例えばコヒーレンシ状態、ＬＲＵ情報、その他は更新されることがある。キャッシュをミスする読み出し要求に対しては、同様に、対応する要求されたキャッシュラインのデータ部は修正されないが、状態情報は更新されることがある。ミスしている対応するキャッシュラインは、より低レベルのメモリ階層からフェッチされたものであろう。この対応するキャッシュラインは、予め定められたキャッシュラインフィル要求に応じて共有キャッシュ内に記憶されても記憶されなくてもよく、又は割り当てられても割り当てられなくてもよい。
【００５１】
一方、概してキャッシュをヒットする書き込み要求に対しては、対応するキャッシュラインのデータ部は、キャッシュコヒーレンシ、オーナーシップ状態、及び／又はその他のような他の要求が満たされている場合に修正される。加えて、対応する状態情報について更新が生じることがある。共有キャッシュをミスする書き込み要求は、同様に他の要求が満たされている場合に、フェッチされたキャッシュフィルラインのデータ部が修正されるのを可能にしてよい。読み出し要求ミスと同様に、書き込みミスに対する対応するキャッシュラインは、より低レベルのメモリ階層からフェッチされたものであろう。この対応するキャッシュラインは、予め定められたキャッシュラインフィル要求に応じて共有キャッシュ内に記憶されても記憶されなくてもよく、又は割り当てられても割り当てられなくてもよい。
【００５２】
キャッシュラインフィル要求を決定する制御論理は、表１及び２に示される例のようなソースに基くエンコーディング情報に加えて、入ってくるメモリ要求の命令種類を利用してよい。共有可能なキャッシュは、多重の異なる種類の要求をサポートしてよい。共有可能なキャッシュによってサポートされるメモリ要求の幾つかの例が表３に示されている。
【表３】
2012522290.tif 000005
【００５３】
ソース及びメモリ要求種類の組み合わせは、キャッシュラインの単一又は複数のデータ部及び同時に対応する状態情報が割り当てられる条件をユーザがプログラムすることに対する柔軟性を提供し得る。所与の要求ソースからの要求の予め定められた種類のみが、キャッシュ内への割り当てのために考えられてよい。１つの実施形態では、表２に示されるエンコーディングと同様のエンコーディングを伴う各ソースからの各コマンド種類に対するシステム内の１つ以上のＣＳＲの追加によって、プログラム可能性が提供され得る。このプログラム可能性は、キャッシュ制御器によるトランザクション毎に基いて強化され得る。割り当てに対してプログラムされていない要求は、キャッシュミスの間キャッシュ内へは割り当てられない。
【００５４】
別の実施形態では、表２に示されるエンコーディングと同様のエンコーディングを伴うメモリ要求の各ソースに対するシステム内の１つ以上のＣＳＲの追加によって、プログラム可能性が提供され得る。キャッシュミスに起因するキャッシュフィルイベントの場合、キャッシュフィルラインがキャッシュ内へ割り当てること及び場合によってはキャッシュの同じセット内の別のキャッシュラインの退去を生じさせることを許可されているか否かを決定するために、メモリ要求のオプコード又はコマンドの種類がキャッシュ制御器内の論理によって利用されてよい。表２における例のようなソースに基く表エンコーディング値は、そのような割り当てが生じることを可能にするが、このエンコーディング値は、セットのどのウエイが割り当てられ得るかを制限することがある一方で、コマンド種類がこの許可をオーバーライドして割り当てを阻むであろう。更に別の実施形態では、予め定められた値を記憶しているＣＳＲが前述したように各ソースに対して存在していてよいが、１つ以上のＣＳＲ内の値は、入ってくるコマンド種類によって変更されてよい。予め定められた値の変更は、それが生じることをセキュリティ制限が許す場合にのみ可能であってよい。例えば、ＣＳＲ値は、典型的なソフトウエアアプリケーションの実行に基いては変化させられることを許可されなくてよい。
【００５５】
この付加された特徴は、どの種類の要求がキャッシュ内へ割り当てることを許可されているのかをユーザが選択し得るので極めて有用であろう。例えばＣＬＶＩＣＢＬＫメモリ要求がキャッシュ内でミスする場合、このラインを、より良いプローブフィルタリング(probe filtering)結果のためだけに追跡されることを必要とするクリーンビクティム(clean victims)としてキャッシュ内へ割り当てないことが有益であろう。また、特定のＩ／Ｏデバイス１６０に対しては、このデバイスに対するデータが殆ど用いられない場合、共有可能キャッシュ内でミスしているこの特定のＩ／Ｏデバイス１６０からの読み出し及び書き込みメモリ要求は、プロセッサコアに対して有用なデータを不注意に退去させてしまうかもしれない。このような状況においては、共有可能なキャッシュのかなりの部分が、再び用いられないであろうデータを記憶していることがある一方で、有用な情報は退去させられてしまう。このように、システム性能が劣ってしまうであろう。表１〜３によって説明されキャッシュ制御器内の論理によって強化されるプログラム可能性は、そのような状況を回避すること及びシステム性能を高めることを支援し得る。
【００５６】
更に、システムアーキテクチャは、１つの実施形態においては、メモリ要求と共に例えば対応するパケット内に含まれるべき予め定められたヒントビット(hint bits)の付加及び使用を支援してよい。このヒント情報は、オプコードに連続して位置させられ又はメモリ要求命令若しくはパケット内の別の場所に置かれるビットであってよい。キャッシュ制御器内の論理は、オプコード又はコマンド種類情報と同様にこれらのヒントビットを利用して、例えばキャッシュミスに由来するフィルイベントの間に、対応するメモリ要求が共有可能キャッシュ内へ割り当てることを許可されているか否かを決定してよい。
【００５７】
１つの実施形態では、これらのヒントビットは、オプコードによって供給されるメモリ要求に加えてよりはむしろ単独で用いられてよい。別の実施形態では、これらのヒントビットは、当該決定を行うためにオプコードと一緒に用いられてよい。例えば、ヒントビットの第１の値は、オプコードが単独で決定のために用いられるべきであることを表示してよい。ヒントビットの第２の値は、オプコード値がバイパスされ、そしてヒントビットのみが決定のために用いられることを表示してよい。第３の値は、ヒントビット及びオプコード値の両方が決定のために考慮される必要があることを表示してよい。状態図(state diagram)において用いられ得る他の組み合わせが可能であり、そして検討されている。
【００５８】
前述したように、１つの実施形態では、表２における例のようなソースに基く表エンコーディング値は、フィルイベントが共有キャッシュ内に割り当てることを可能にするであろうが、ヒントビット又はヒントビットとコマンド種類の組み合わせは、この許可をオーバーライドして割り当てを阻むであろう。更に別の実施形態では、予め定められた値を記憶しているＣＳＲが前述したように各ソースに対して存在していてよいが、１つ以上のＣＳＲ内の値は、入ってくるコマンド種類のヒントビットによって変更されてよい。予め定められた値の変更は、それが生じることをセキュリティ制限が許す場合にのみ可能であってよい。繰り返すが、ＣＳＲ値は、典型的なユーザによって書かれた典型的なソフトウエアアプリケーションの実行に基いては変化させられることを許可されなくてよい。
【００５９】
ヒントビットにより供給されるトランザクション毎ベースの表示は、特定のトランザクションに属しているデータの再使用される見込みが殆どない状況において有用であり、従って、フィルメカニズムは、このデータをミスの後に表２のような予め定められた表に従ってキャッシュ内へと割り当てることはしないが、メモリ要求命令種類はキャッシュ修正可能であってよい。１つの実施形態では、この特徴は、Ｉ／Ｏデバイス１６０のようなＩ／Ｏ要求ソースに対して広範囲に用いられてよい。そのようなメカニズムはキャッシュの汚染を防止することができる。
【００６０】
図４は共有資源におけるデータの効率的な割り当てのための方法４００を示している。方法４００は、代替的な実施形態を導き出すために当業者によって修正され得る。また、この実施形態におけるステップは逐次的な順序で示されている。しかし、幾つかのステップは図示されているのとは異なる順序で起こってよく、幾つかのステップは同時に実行されてよく、幾つかのステップは他のステップと組み合わされてよく、そして幾つかのステップは別の実施形態ではなくてよい。図示される実施形態においては、入ってくる動作による割り当てに対して共有資源のどのサブ部分が有効にされているか又は無効にされているかを決定するために用いられる初期割り当てが、ブロック４０２においてセットされる。例えば、表２のような表において定義される初期エンコーディング値が適切なＧＳＲ内に記憶されてよい。
【００６１】
ブロック４０４においては、１つ以上のコンピュータプログラム又はソフトウエアアプリケーションが実行される。これらのアプリケーションは、１つ以上のプロセッサコア１１２、グラフィック処理ユニット（ＧＰＵ）１７０、Ｉ／Ｏデバイス１６０、その他によって実行されてよい。ソフトウエアアプリケーションを実行するこれら構成要素は、各々データキャッシュのような共有可能資源にアクセスしてよい。１つの実施形態では、共有可能資源は、図２における共有キャッシュメモリサブシステム１１８のような共有可能Ｌ２又はＬ３キャッシュであってよい。プロセッサコア１１２による共有キャッシュのアクセス又はメモリ要求は、ＧＰＵ１７０又はＩ／Ｏデバイス１６０のような他のソースに由来するアクセスよりも強い衝撃(higher impact)をシステム性能に対して有するであろう。
【００６２】
共有キャッシュに対してメモリ要求が提示されると（条件ブロック４０６）、ブロック４０８において、共有キャッシュの対応するセット内での割り当てに対する可能なウエイの決定が行われる。メモリ要求のソースは知られており、そして対応するＣＳＲにアクセスするために用いられてよく、ＣＳＲの記憶されている値は、対応するセット内の可能なウエイの集合(collection)を決定する。他の実施形態においては、メモリ要求種類及び／又はヒントビットが、表３に関して先に述べたように、可能なウエイの集合を決定するために用いられてもよい。
【００６３】
メモリ要求がキャッシュをミスし、従って正しいラインが低レベルのメモリから検索されること(to be retrieved)を必要とする場合（条件ブロック４１０）、フィルラインが共有キャッシュ内へ割り当てられることを許可されているか否かに関する決定が行われる（条件ブロック４１４）。この決定はソース、オプコードによって決定され得るコマンド種類、命令又はパケット内に含まれるヒントビット、これらの因子の組み合わせ、その他に基いていてよい。
【００６４】
メモリ要求が共有キャッシュ内へ割り当てることを許可されない場合（条件ブロック４１４）、メモリ要求の動作はブロック４１６へ進んでよく、例えば検索されたフィルラインの内容が読み出され又は書き込まれるが、フィルラインは共有キャッシュ内には置かれない。例えば、対応するデータを再使用しないものとして知られているＩ／Ｏデバイス１６０が、キャッシュミスに続き共有キャッシュ内へ値を割り当てることができないように、対応するＣＳＲ内に記憶されている値によってプログラムされてよい。従って、共有キャッシュ内のより多い空間が、１つ以上のプロセッサコア１１２又はＧＰＵ１７０のような他のソースに対して利用され得る。
【００６５】
メモリ要求がキャッシュミスに続いて共有キャッシュを割り当てることを許可される場合（条件ブロック４１４）には、メモリ要求の動作はブロック４１８へ進んでよく、例えば検索されたフィルラインの内容が読み出され又は書き込まれ、加えてフィルラインは共有キャッシュ内に置かれる。共有キャッシュ内へ置くことの間、ＣＳＲの内容が、どのキャッシュウエイが修正されることが可能かを決定してよい。例えば、コア１１２ａは、ウエイ１５〜８のようなキャッシュの半分を修正し又は割り当てることを許可されてよい。一方、Ｉ／Ｏデバイス１６０は、ウエイ５及び４のようなキャッシュの１／８のみを修正し又は割り当てることを許可されてよい。既に満杯のセットに対しては、ＬＲＵスキームに基くキャッシュラインの退去が割り当てプロセスの間に生じてよい。また、セットは満杯でないが、特定のソースに対するセットの全ての可能なウエイ、例えば上述の例におけるＩ／Ｏデバイス１６０に対するウエイ５及び４が満杯である場合には、ＬＲＵ又は他のスキームに基くキャッシュラインの退去が割り当てプロセスの間に生じてよい。
【００６６】
上述の方法は、キャッシュの特定の指定されたラインをロードし且つロックし又は退去させられることから回避するために用いられてもよい。これらのロックされたラインは、全てのソースによる割り当てに対して無効にされてよい。これらのロックされたラインは、擬似ランダムアクセスメモリ（ＲＡＭ）として用いられてよい。そのようなメカニズムは、次いで、システム起動の間に基本入力出力ソフトウエア（ＢＩＯＳ）がキャッシュのセクションをロードし且つロックすることを可能にするために用いられてよい。例えば、そのようなメカニズムは、システム内のダイナミックランダムアクセスメモリ（ＤＲＡＭ）が未だ初期化されていない場合に、ＢＩＯＳが共有キャッシュ１１８その他のようなキャッシュを汎用記憶のために用いることを可能にするために用いられてよい。この特徴は、システム起動のために必要な時間を短縮することができる。
【００６７】
ＢＩＯＳは、いまや、キャッシュ内の特定のセグメントを利用して、他のソースによって退去させられているそれらのロックされたラインなしでデータ構造を記憶することができる。例えば、そのようなキャッシュウエイロックスキームは、Ｉ／Ｏ空間、例えばプログラム可能リードオンリメモリ（ＰＲＯＭ）イメージからの起動コードの読み出し動作のようなキャッシュへの他のフィル要求をシステムが実行する場合に、ＢＩＯＳがデータを記憶しているラインが退去させられないことを確実にし得る。
【００６８】
次に図５を参照すると、効率的なキャッシュラインロックメカニズムのための方法が示されている。方法５００は、代替的な実施形態を導き出すために当業者によって修正され得る。また、この実施形態におけるステップは逐次的な順序で示されている。しかし、幾つかのステップは図示されているのとは異なる順序で起こってよく、幾つかのステップは同時に実行されてよく、幾つかのステップは他のステップと組み合わされてよく、そして幾つかのステップは別の実施形態ではなくてよい。図示される実施形態においては、コンピュータシステムのためのセットアップソフトウエアがブロック５０２で実行される。
【００６９】
ブロック５０４においては、システム内の１つ以上のＣＳＲが、共有キャッシュ内に特定のウエイを割り当てる許可を表示する値を記憶するようにプログラムされてよい。例えば、「０００００」のエンコーディング値に対応する表２の表項目１が、１６ウエイセットアソシアティブ共有キャッシュのウエイ１及び０内への割り当てを可能にするために用いられてよい。共有キャッシュの全サイズの１／８のサイズの領域がこのようにしてマッピングされてよく、そして擬似ＲＡＭとして用いられてよい。
【００７０】
次いでブロック５０６においては、ＢＩＯＳのようなセットアップソフトウエアが、共有キャッシュのキャッシュラインと同一のサイズ及びアライメントを有する擬似ＲＡＭ内のロケーションを初期化してよい。この初期化を実行するために、ＢＩＯＳは、未だ初期化されておらず且つこのキャッシュラインロケーションの少なくとも１バイトへのロード動作又は読み出し動作を未だ発行してしてない書き戻し(write-back)ＤＲＡＭへキャッシュラインをマッピングしてよい。このロードの一部として発行される、結果としてのフィルトランザクションは、ＤＲＡＭを未だ初期化していない無効にされたメモリ制御器へと送られてよい。メモリ制御器は、全論理ゼロのデータ値を返送してよく、そして係属中のフィル要求を完了してよい。このデータは次いで共有キャッシュ内へ割り当てられる。ＢＩＯＳは、このキャッシュラインが共有キャッシュに割り当てられた後であれば、このキャッシュに対して記憶動作又は書き込み動作を実行してよい。
【００７１】
共有キャッシュの終点に達していない場合（条件ブロック５０８）、例えば初期化されている最中の可能なウエイに対応する最後の非初期化キャッシュラインである場合、方法５００の制御フローはブロック５０６に戻る。それ以外の場合には、共有キャッシュの別の可能なウエイが同様にして初期化されてよい（条件ブロック５１０）。共有キャッシュの全ての可能なウエイが既に初期化されている場合（条件ブロック５１０）には、次いでブロック５１２において、ＢＩＯＳのようなセットアップソフトウエアが所望の情報をこれら初期化された領域内へ記憶してよい。ブロック５１４においては、これらの修正されたラインは、前もって割り当てのために用いられたのと同じウエイに対する割り当てを無効にすることによって、共有キャッシュ内へロックされてよい。例えば、対応するＣＳＲが表２の表項目１７に記憶される値「１００００」を保持するようにセットすることによって、ウエイ１及び０はいまや割り当てに対して無効にされているであろう。いまやウエイ１及び２は、他のソースによって割り当てられないようにされ、又はより新しいフィルトランザクションによって退去させられないようにされている。
【００７２】
加えて、上述した割り当ての方法は、キャッシュが動作している最中にキャッシュのサイズを徐々に減少させことによって、キャッシュの一部分又は全部をパワーダウン状態に置くために用いられてよい。システムレベルでの電力管理のためには、キャッシュのセクションへの電力をオフにし又はゲートする一方で他のセクションが機能しているのを維持することが望ましいであろう。さもなければ、キャッシュは全ての機能を停止する一方で、特定のセクションがパワーダウンされると共にエイリアシング(aliasing)問題を回避するためにキャッシュラインの退去及びリロードが生じるので、システム性能を低下させる待ち時間(latencies)が導入されてしまうであろう。キャッシュが動作を継続しつつパワーダウンメカニズムを介してキャッシュのサイズを徐々に減少させることは、異なる性能及び電力消費特性を伴う幾つかの中間キャッシュスリープ状態を生み出す。キャッシュを監視しているシステム電力管理ハードウエアは、これらの異なる状態を用いてアプリケーション性能とバッテリ寿命の間でトレードオフすることができる。加えて、そのようなパワーダウンシーケンスは、製造不良に悩まされるキャッシュに対して用いられてよい。そのようなキャッシュは廃棄され又は半分に切断され、そしてより低い価格で販売されるであろう。
【００７３】
表１及び表２で指定される値のようなプログラム可能エンコーディング値を介してセットアソシアティブキャッシュ内で特定のウエイの割り当てを有効にすること及び無効にすることは、キャッシュが動作しながらキャッシュのサイズを徐々に削減し、そして最終的にはキャッシュ全体を停止させるために用いられてよい。例えば、１６ウエイセットアソシアティブキャッシュ内の全てのウエイが割り当てに対して有効である上述の表２の表項目８のようなエンコーディング値「００１１１」から、キャッシュのサイズを連続的に減少させる他の複数のエンコーディング値へと徐々に移行させることができ、例えば、「１００００」（１４ウエイを有効にする表項目１７）、「１０００１」（１２ウエイを有効にする表項目１８）、「０１０１１」（８ウエイを有効にする表項目１２）、「０１１０１」（４ウエイを有効にする表項目１４）、「０１１１０」（２ウエイを有効にする表項目１５）、そして最終的には「１０１１１」（全てのウエイを無効にする表項目２４）へと徐々に移行させることができる。
【００７４】
上述の進行は、対応するアドレスのインデックス部を単一ビットだけ減少させることによって直接的にキャッシュを半分にするよりも効率的であろう。また、アドレスのインデックス部を減少させることによりキャッシュを半分にすることは、キャッシュのパワーダウンされた半分内に通常は置かれる他のアドレスを、むしろパワーアップされ小型にされたキャッシュ内に置いてしまうかもしれない。それにより、そのようなシナリオは、キャッシュのサイズが再び増加させられる必要のあることが後で決定された場合に、これらのアドレスを退去させる付加的な作業を生み出してしまう。
【００７５】
次に図６を参照すると、効率的なキャッシュセクターパワーダウンシーケンスのための方法が示されている。方法４００及び５００と同様に、方法６００のような追加的な方法は、代替的な実施形態を導き出すために当業者によって修正され得る。また、この実施形態におけるステップは逐次的な順序で示されている。しかし、幾つかのステップは図示されているのとは異なる順序で起こってよく、幾つかのステップは同時に実行されてよく、幾つかのステップは他のステップと組み合わされてよく、そして幾つかのステップは別の実施形態ではなくてよい。図示される実施形態では、入ってくる動作による割り当てに対して共有資源のどのサブ部分が有効にされ又は無効にされるのかを決定するために用いられる初期割り当てが、ブロック６０２においてセットされる。例えば、表２のような表において定義される初期エンコーディング値が、適切なＣＳＲ内に記憶されてよい。
【００７６】
ブロック６０４においては、１つ以上のコンピュータプログラム又はソフトウエアアプリケーションが実行される。これらのアプリケーションは、１つ以上のプロセッサコア１１２、グラフィック処理ユニット（ＧＰＵ）１７０、Ｉ／Ｏデバイス１６０、その他によって実行されてよい。ソフトウエアアプリケーションを実行するこれら構成要素は、各々データキャッシュのような共有可能資源にアクセスしてよい。１つの実施形態では、共有可能資源は、図２における共有キャッシュメモリサブシステム１１８のような共有可能Ｌ２又はＬ３キャッシュであってよい。プロセッサコア１１２による共有キャッシュのアクセス又はメモリ要求は、ＧＰＵ１７０又はＩ／Ｏデバイス１６０のような他のソースに由来するアクセスよりも強い衝撃をシステム性能に対して有するであろう。
【００７７】
パワーダウン条件が存在すると決定されると（条件ブロック６０６）、表２のような表において定義される初期エンコーディング値のような１つ以上のＣＳＲ内に記憶されている値は、ブロック６０８において変更されてよい。処理システムの内部又は外部のいずれかから、例えば図１における処理ノード１１０からキャッシュ制御器へ入ってくる信号が、特定のキャッシュセクターがパワーダウンされるべきであることを表示している場合に、パワーダウン条件が存在し得る。１つの実施形態では、キャッシュ制御器は、処理システム内の共有キャッシュに対応する。そのような表示を提供するために、種々のパワーダウンメカニズムが当業者によって用いられるであろう。
【００７８】
キャッシュ制御器又は他の論理へ入ってくるパワーダウン表示が、ＣＳＲによって記憶されているエンコードされた値を徐々に移行させるための方法を決定するために用いられてよい。影響を受けるＣＳＲは、特定のソースのための個々のＣＳＲ、キャッシュ全体に対応する単一のマスターＣＳＲ、組み合わせ、その他を含んでいてよい。１つの実施形態では、キャッシュ制御器は、ウエイマスキングによりキャッシュの特定のセクターを割り当てに対して無効にするために、現在の記憶されているエンコーディング値を変化させてよい。１つの実施形態では、キャッシュ全体のための単一のマスターＣＳＲが存在してよい。特定のソースに対しては、メモリ要求割り当てに対して用いられるべきキャッシュの可能なウエイは、マスターＣＳＲ及び特定ソース向けＣＳＲの両方に記憶されている値を入力とする論理によって決定されてよい。パワーダウン又はパワーアップのシーケンスに対しては、各ソースのための各ＣＳＲに対して単一のマスターＣＳＲのみが修正されてよい。従って、上述したような単一の移行（例えば「００１１１」から「１００００」〜「１０００１」等）のみが利用されてよい。別の実施形態においては、システム内の各ＣＳＲに対して別個の移行が用いられてよい。
【００７９】
ブロック６１０においては、キャッシュ制御器は、例えば各可能なインデックスにアクセスしながら又は支持する回路が存在する場合には多重インデックス及び対応するセットにアクセスしながらキャッシュのセットを介して移行し、そして無効にされているキャッシュウエイの内容をフラッシュする(flushes)。このステップの間キャッシュそれ自身はまだ機能しており、またメモリ要求はまだ処理されている。
【００８０】
１つの実施形態では、フラッシュすることが完了すると、キャッシュ制御器は、ブロック６１２において、キャッシュ全体へのメモリ要求の処理をブロックする。別の実施形態では、フラッシュすることが完了すると、キャッシュ制御器は、ブロック６１２において、無効にされているキャッシュウエイのみへのメモリ要求の処理をブロックする。従って、メモリ要求アクセスは無効にされているウエイのみに対して選択的にブロックされてよく、あるいはメモリ要求アクセスはキャッシュ全体に対してブロックされてよい。次いでブロック６１４においては、キャッシュ制御器はパワーダウン連絡をキャッシュアレイへ送信する。例えば、キャッシュの目標セクタをウエイマスキングによりパワーダウンするために、キャッシュ制御器からキャッシュアレイへとコマンドが発行されてよい。パワーダウン処理は幾つかのクロックサイクルを必要とするであろうし、それらのクロックサイクルはパワーダウン要求に際して知られていても知られていなくてもよい。キャッシュアレイのパワーダウンが完了した旨の表示が提供されると（条件ブロック６１６）、キャッシュ制御器は、ブロック６１８において、メモリ要求がキャッシュにアクセスすることを再び有効にする。このステップは、キャッシュ全体がメモリ要求アクセスに対して事前に無効にされていた場合に、キャッシュ全体へのアクセスを再び有効にしてよい。そうではない場合において、無効にされているキャッシュウエイへのメモリ要求のみがアクセスしないように事前にされていたときには、このステップはスキップされてよい。方法６００の制御フローは次いでブロック６０４へ戻り、ここでは有効にされているキャッシュウエイのみがコンピュータプログラムの実行の間にアクセスされる。
【００８１】
次に図７を参照すると、効率的なキャッシュセクターパワーアップシーケンスのための方法が示されている。ブロック７０２では、１つ以上のコンピュータプログラム又はソフトウエアアプリケーションが実行される。これらのアプリケーションは、１つ以上のプロセッサコア１１２、グラフィック処理ユニット（ＧＰＵ）１７０、Ｉ／Ｏデバイス１６０、その他によって実行されてよい。ソフトウエアアプリケーションを実行するこれら構成要素は、各々データキャッシュのような共有可能資源にアクセスしてよい。この共有キャッシュは、例えば方法６００と同様の方法によって事前にパワーダウンさせられた特定のセクター又は部分を有していてよい。
【００８２】
対応する論理による場合又はパワーアップ表示が受信される場合のようにパワーアップ条件が存在すると決定されると（条件ブロック７０４）、１つの実施形態では、ブロック７０６において、キャッシュ制御器がキャッシュ全体へのメモリ要求の処理をブロックする。別の実施形態においては、パワーアップ条件が存在すると決定されると、キャッシュ制御器は、キャッシュの無効にされた（事前にパワーダウンされた）キャッシュウエイのみへのメモリ要求の処理を単にブロックし続けてよい。従って、メモリ要求アクセスは、無効にされたウエイのみに対して選択的にブロックされ続けてよく、あるいはメモリ要求アクセスはキャッシュ全体に対してブロックされてよい。１つの実施形態では、パワーアップされるべきキャッシュセクターは、キャッシュの全ての無効にされた（事前にパワーダウンされた）キャッシュウエイであってよい。別の実施形態では、パワーアップされるべきキャッシュセクターは、特定のソースのための個々のＣＳＲ、キャッシュ全体に対応する単一のマスターＣＳＲ、組み合わせ、その他に記憶されるエンコードされた値によって決定されてよい。
【００８３】
次いでブロック７０８においては、キャッシュ制御器はパワーアップ連絡をキャッシュアレイへ送信する。例えば、キャッシュの目標セクタ又は部分をパワーアップするために、キャッシュ制御器からキャッシュアレイへとコマンドが発行されてよい。同様に、目標セクタは、１つ以上のＣＳＲ内に記憶されるエンコードされた値によって決定されてよい。パワーアップ処理は幾つかのクロックサイクルを必要とするであろうし、それらのクロックサイクルはパワーアップ要求に際して知られていても知られていなくてもよい。１つの実施形態では、キャッシュアレイは、ウエイクアップトランジスタを用いて新たなセクターのノード及びワイヤルートを駆動して論理０及び１値を埋める。一旦このステップが完了すると、アレイはトランジスタをフルパワーにオンする。次いで内部初期化が実行され、内部ブロッキングビットがセットされる。
【００８４】
キャッシュアレイのパワーアップが完了した旨の表示が提供されると（条件ブロック７１０）、キャッシュ制御器は、キャッシュ全体へのアクセスが事前に無効にされていた場合には、ブロック７１２において、メモリ要求がキャッシュにアクセスすることを再び有効にする。しかし、同時に、キャッシュ制御器はキャッシュウエイマスキングを利用して、直近にパワーオンされたセクターにメモリ要求がアクセスしないようにしてよい。別の実施形態では、キャッシュは状態情報を更新して、直近にパワーオンされたセクターが非アクティブであることを表示してよい。代替的な実施形態では、ウエイマスキング及び状態情報の両方が、キャッシュの直近にパワーオンされたセクターにメモリ要求がアクセスしないようにする一方で、事前にパワーオンされたセクターへのアクセスが再開する(resume)ことの両方に用いられてよい。
【００８５】
ブロック７１４においては、直近にパワーオンされたセクター又はキャッシュウエイに関して、状態情報が初期化され、またキャッシュチェックが再び有効にされる。１つの実施形態では、キャッシュ制御器は状態マシンを用いて、直接ウエイアクセスを通して直近にパワーオンされたキャッシュウエイを並べ、そして対応する有効ビットがリセットされる。また、ヒット及びパリティ(parity)チェック論理が再び有効にされる。初期キャッシュコヒーレンシプロトコル状態は無効状態にセットされてよい。同様に、このステップと並行して、メモリ要求によるキャッシュの他のセクターへのアクセスが生じる。
【００８６】
ブロック７１４におけるステップが完了すると、キャッシュアレイは対応する表示をキャッシュ制御器へ送ってよい。続いてブロック７１６においては、直近にパワーオンされたセクターに対してキャッシュウエイマスキングがいまや有効にされており、１つ以上のＣＳＲ内に記憶されている値、例えば表２のような表において定義される初期エンコーディング値は、ブロック７１６において変更されてよく又は再プログラムされてよい。尚、直近にパワーオンされたキャッシュウエイへの初期アクセスはキャッシュミスを経験するであろうし、またそれに続く割り当ては、１つ以上のＣＳＲ内に記憶されるエンコードされた値に少なくとも一部分は基いて決定されてよい。直近にパワーオンされたキャッシュウエイに対しては、初期キャッシュミスは無効データの退去を必要とはしないであろう。
【００８７】
上述の実施形態はかなり詳細に説明されてきたが、上述の開示が完全に理解されるならば、多くの変形及び修正が当業者にとって明らかであろう。後述の特許請求の範囲は、そのような全ての変形及び修正を包含するものとして解釈されることが意図されている。
【図１】
2012522290.tif 000006
【図２】
2012522290.tif 000007
【図３】
2012522290.tif 000008
【図４】
2012522290.tif 000009
【図５】
2012522290.tif 000010
【図６】
2012522290.tif 000011
【図７】
2012522290.tif 000012
【国際調査報告】
2012522290.tif 000013
2012522290.tif 000014
2012522290.tif 000015