(57)【特許請求の範囲】
【請求項１】
キャッシュ管理の方法であって、
新しいキャッシュ・ラインをキャッシュに挿入する為に、第１のキャッシュ・コントローラによって、キャッシュ制御動作のための要求を受信するステップであって、前記キャッシュは前記第１のキャッシュ・コントローラによって第１のプロセッサに接続されており、前記要求が第２のキャッシュ・コントローラを介して第２のプロセッサから受信される、前記受信するステップと、
前記第１のキャッシュ・コントローラによって、前記要求が強制キャッシュ注入を表すか否かを判定するステップと、
前記要求が強制キャッシュ注入を表すという判定に応答して、前記第１のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記キャッシュへの挿入を承認するステップと、
前記要求が強制キャッシュ注入を表していないという判定に応答して、前記第１のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインのアドレスと既定アドレス範囲との比較に基づいて、前記新しいキャッシュ・ラインの前記挿入を承認するか否かを判定するステップと
を含む、前記方法。
【請求項２】
前記新しいキャッシュ・ラインのアドレスと前記既定アドレス範囲との比較に基づいて、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するか否かを判定するステップが、
前記第１のキャッシュ・コントローラによって、無効キャッシュ・ラインが利用可能であるか否かを判定するステップと、
前記無効キャッシュ・ラインが利用可能であるという判定に応答して、前記第１のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するステップと
を含む、請求項１に記載の方法。
【請求項３】
前記新しいキャッシュ・ラインのアドレスと前記既定アドレス範囲との比較に基づいて、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するか否かを判定するステップが、
前記無効キャッシュ・ラインが利用可能でないという判定に応答して、前記第１のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記アドレスが第１のクラスのアドレス範囲内にあるか否かを判定するステップと、
前記新しいキャッシュ・ラインの前記アドレスが前記第１のクラスのアドレス範囲内にあるという判定に応答して、前記第１のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するステップと
を更に含む、請求項２に記載の方法。
【請求項４】
前記新しいキャッシュ・ラインのアドレスと前記既定アドレス範囲との比較に基づいて、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するか否かを判定するステップが、
前記新しいキャッシュ・ラインの前記アドレスが前記第１のクラスのアドレス範囲内にないという判定に応答して、前記第１のキャッシュ・コントローラによって、少なくとも１つの可能な犠牲キャッシュ・ラインが前記第１のクラスのアドレス範囲外にあるか否かを判定するステップと、
前記少なくとも１つの可能な犠牲キャッシュ・ラインが前記第１のクラスのアドレス範囲外にあるという判定に応答して、前記第１のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記挿入を承認するステップと、
前記少なくとも１つの可能な犠牲キャッシュ・ラインが前記第１のクラスのアドレス範囲外にないという判定に応答して、前記第１のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を拒否するステップと
を更に含む、請求項３に記載の方法。
【請求項５】
前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するステップが、
前記第１のキャッシュ・コントローラによって、無効キャッシュ・ラインが利用可能であるか否かを判定するステップと、
前記無効キャッシュ・ラインが利用可能であるという判定に応答して、前記第１のキャッシュ・コントローラによって、前記無効キャッシュ・ラインを犠牲キャッシュ・ラインとして選択し、前記キャッシュ内で、前記第１のキャッシュ・コントローラによって、前記犠牲キャッシュ・ラインを前記新しいキャッシュ・ラインによって置換するステップと
を含む、請求項１に記載の方法。
【請求項６】
前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するステップが、
無効キャッシュ・ラインが利用可能でないという判定に応答して、前記第１のキャッシュ・コントローラによって、前記キャッシュが第２のクラスの犠牲キャッシュ・ラインを含むか否かを判定するステップであって、前記第２のクラスの犠牲キャッシュ・ラインが第２のクラスのアドレス範囲内にあるアドレスを有する、前記判定するステップと、
前記キャッシュが第２のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、前記第１のキャッシュ・コントローラによって、前記第２のクラスの犠牲キャッシュ・ラインを前記犠牲キャッシュ・ラインとして選択し、前記キャッシュ内で、前記第１のキャッシュ・コントローラによって、前記犠牲キャッシュ・ラインを前記新しいキャッシュ・ラインによって置換するステップと、
前記キャッシュが第２のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、前記第１のキャッシュ・コントローラによって、第１のクラスの犠牲キャッシュ・ラインを前記犠牲キャッシュ・ラインとして選択し、前記キャッシュ内で、前記第１のキャッシュ・コントローラによって、前記犠牲キャッシュ・ラインを前記新しいキャッシュ・ラインによって置換するステップと
を更に含む、請求項５に記載の方法。
【請求項７】
キャッシュ管理のための、キャッシュ・メモリを制御するキャッシュ・コントローラを含む装置であって、第１のキャッシュ・コントローラが、請求項１〜６のいずれか一項に記載の方法の各ステップを実行することによって機能するように構成されている、前記装置。
【請求項８】
コンピュータ・プログラムであって、コンピュータに、請求項１〜６のいずれか一項に記載の方法の各ステップを実行させる前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、更に具体的には、キャッシュ管理のための方法、装置、および製品である。
【背景技術】
【０００２】
マルチプロセッサ・システムにおいては、様々な理由で、隣接した処理コアに設けられた記憶エリア（キャッシュ）内にキャッシュ・ラインを挿入する。時として、これは、隣接キャッシュから容量不足のために排除されたデータを保持するために用いられる。挿入の別の理由は、コプロセッサが、特定のデータを有するあるキャッシュ・ラインをプロセッサのキャッシュ内に置くことを選択することで、プロセッサがそのキャッシュ・ラインを見つけるためにメモリまで検索に行くことなく容易にデータにアクセスできるようにすることである。新しいキャッシュ・ラインをキャッシュに挿入する要求の受信に応答して、キャッシュのためのキャッシュ・コントローラは、挿入を拒否するかまたは承認するかを決定することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
キャッシュ管理のための方法、装置、およびコンピュータ・プログラムを開示する。
【課題を解決するための手段】
【０００４】
実施形態は、キャッシュ・コントローラによって、新しいキャッシュ・ラインをキャッシュに挿入する要求を受信することと、キャッシュ・コントローラによって、新しいキャッシュ・ラインが強制注入に関連付けられているか否かを判定することと、新しいキャッシュ・ラインが強制注入に関連付けられているという判定に応答して、キャッシュ・コントローラによって、新しいキャッシュ・ラインのキャッシュへの挿入を承認することと、新しいキャッシュ・ラインが強制注入に関連付けられていないという判定に応答して、キャッシュ・コントローラによって、新しいキャッシュ・ラインのアドレスと既定アドレス範囲との比較に基づいて、新しいキャッシュ・ラインの挿入を承認するか否かを判定することと、を含む。
【０００５】
本発明の前述およびその他の目的、特徴、および利点は、添付図面に図示されたような、以下に述べる本発明の例示的な実施形態の更に詳細な説明から明らかとなろう。図面において、同様の参照番号は概して本発明の例示的な実施形態の同様の部分を表す。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態に従った、キャッシュ管理を実施するコンピュータの一例の機能ブロック図を示す。
【図２】本発明の実施形態に従った、キャッシュ管理のための方法の一例を示すフローチャートを図示する。
【図３】本発明の実施形態に従った、キャッシュ管理のための方法の別の例を示すフローチャートを図示する。
【図４】本発明の実施形態に従った、キャッシュ管理のための方法の別の例を示すフローチャートを図示する。
【発明を実施するための形態】
【０００７】
本発明の実施形態に従った、マルチプロセッシング・コンピュータにおけるキャッシュ管理のための例示的な方法、装置、およびコンピュータ・プログラムについて、図１から始まる添付図面を参照して説明する。図１は、本発明の実施形態に従った、キャッシュ管理を実施するコンピュータ（１００）の一例の機能ブロック図を示す。
【０００８】
図１の例示的なコンピュータ（１００）は、いくつかのコンピュータ・プロセッサ（１０２）を含む。各プロセッサ（１０２）は、コンピュータ・コア（１０４）を含み、これはメモリ動作のためにメモリ管理ユニット（「ＭＭＵ」）（１０６）を介して共有キャッシュ・レベルおよびメイン・メモリ（１１４）に結合されている。図１の例において、第１のプロセッサ・セット（１９３）は第１の共有キャッシュ・レベル（１０８）に結合され、第２のプロセッサ・セット（１９４）は第２の共有キャッシュ・レベル（１０９）に結合されている。第１の共有キャッシュ・レベル（１０８）は、キャッシュ・ディレクトリ（１１２）、キャッシュ・コントローラ（１１０）、およびＬ２キャッシュ（１８１）を含む。第２の共有キャッシュ・レベル（１０９）は、第１の共有キャッシュ・レベル（１０８）の以下のコンポーネントを含む。すなわち、キャッシュ・ディレクトリ、キャッシュ・コントローラ、およびＬ２キャッシュである。第２のプロセッサ・セット（１９４）は、第２の共有キャッシュ・レベル（１０９）から第１の共有キャッシュ・レベル（１０８）内へのキャッシュ・ラインの挿入を要求することができる。この場合、第２の共有キャッシュ・レベル（１０９）のキャッシュ・コントローラ（図示せず）は、この要求を第１の共有キャッシュ・レベル（１０８）のキャッシュ・コントローラ（１１０）に送信することができる。キャッシュ・コントローラ（１１０）は、挿入の要求を承認するかまたは拒否するかを決定することができる。図１の第１の共有キャッシュ・レベル（１０８）および第２の共有キャッシュ・レベル（１０９）は、バス・マネージャ（１９１）によって制御されるバス（１６６）を介して要求およびデータを送信することができる。
【０００９】
図１のプロセッサ（１０２）の各々はＬ１メモリを含む。Ｌ１は、比較的小さく高速のキャッシュであり、同一チップ上でプロセッサ自体の内部に作られている。ＭＭＵ（１０６）は、アドレス変換論理、変換ルックアサイド・バッファ、オンプロセッサ・キャッシュＬ１のための制御装置等を含む。
【００１０】
メイン・メモリ（１１４）は、コンピュータ（１００）上でデータ処理するためのプログラム・データおよびプログラム命令の主要なランダム・アクセス記憶装置である。メイン・メモリ（１１４）の特徴は、メモリ待ち時間、すなわちメイン・メモリに対する読み取りまたは書き込みといったメモリ・アクセスに必要な時間である。メイン・メモリ（１１４）は、プロセッサ（１０２）間で共有される物理アドレス空間のシングル・エクステントを実現する。
【００１１】
キャッシュＬ１およびＬ２（１８１）は、メモリ・アクセス待ち時間を短縮するためにプロセッサ（１０２）によって用いられる専用のメモリ・セグメントである。各キャッシュは、メイン・メモリよりも小型かつ高速であり、頻繁に用いられるメイン・メモリ位置からのデータのコピーを記憶する。プロセッサが、メイン・メモリ内のある位置に対する読み出しまたは書き込みを必要とする場合、そのデータのコピーすなわち「キャッシュ・ライン」がキャッシュ内に存在するか否かを最初にチェックする。存在する場合、プロセッサは直ちにキャッシュに対する読み取りまたは書き込みを行う。これは、メイン・メモリに対する読み取りまたは書き込みよりも著しく高速である。ほとんどのメモリ・アクセスがキャッシュされたメモリ位置である限り、メモリ・アクセスの平均待ち時間はメイン・メモリの待ち時間よりもキャッシュ待ち時間に近くなる。前述したように、メイン・メモリはあらゆるキャッシュよりも著しく低速であり、キャッシュ・ミスはメモリ・アクセス待ち時間において大きな損害を引き起こす。
【００１２】
キャッシュ・メモリは、「キャッシュ・ライン」と称するデータ・ブロックに構成されている。異なる設計の各キャッシュ・ラインは、８から５１２バイト以上のサイズ範囲に及ぶことがある。典型的な１キャッシュ・ラインのサイズは、１から１６バイトの範囲であるＣＰＵ命令によって要求される通常のアクセスのサイズよりも大きい。現在の３２ビットおよび６４ビット・アーキテクチャによって典型的に処理される最大のアドレスおよびデータは、長さ１２８ビットすなわち１６バイトである。各キャッシュ・ラインを特徴付けるのは、キャッシュ・ラインの内容がメイン・メモリに記憶される開始アドレスの最上位ビットから成る「タグ」である。
【００１３】
図１の例では、プロセッサ（１０２）は、Ｌ１キャッシュおよびＬ２キャッシュ（１８１）によって表す２つのレベルを有するマルチレベル・キャッシュを利用する。マルチレベル・キャッシュは、キャッシュ待ち時間とヒット・レートとの間のトレードオフに対処する。キャッシュが大型化するとヒット・レートは向上するが待ち時間が長くなる。このトレードオフに対処するため、多くのコンピュータは多レベルのキャッシュを用いて、小さい高速キャッシュをもっと大きい低速キャッシュによって補強する。概して、マルチレベル・キャッシュが動作する際は、最小のレベル１（Ｌ１）キャッシュを最初にチェックし、これがヒットすればプロセッサは高速で進行する。小さい方のキャッシュがミスした場合は次に大きいキャッシュ（Ｌ２）をチェックする等とし、その後でメイン・メモリをチェックする。図１の例示的なコンピュータは２つのキャッシュ・レベルを実施するが、これは単に説明の便宜のためであって、限定ではない。多くのコンピュータは、３または４キャッシュ・レベルのような更に多いキャッシュ・レベルを実施する。いくつかのプロセッサでは３レベルのオンチップ・キャッシュを実施する。例えば、Ａｌｐｈａ  ２１１６４（ＴＭ）は９６ＫＢのオンダイＬ３キャッシュを有し、ＩＢＭ  ＰＯＷＥＲ４（ＴＭ）は２５６ＭＢのＬ３キャッシュ・オフチップを有し、いくつかのプロセッサ間で共有する。
【００１４】
キャッシュ・コントローラ（１１０）は、キャッシュ内のキャッシュ・ラインに関する情報のレポジトリであるキャッシュ・ディレクトリ（１１２）を含む。ディレクトリは、コンピュータ内の全キャッシュにおける各キャッシュ・ラインごとに、キャッシュ・ラインのアイデンティティすなわちキャッシュ・ラインの「タグ」、キャッシュ・ラインの状態すなわち「変更済み」、「共有」、「無効」等、および、低レベル共有キャッシュのキャッシュ・ラインのコピーがもっと高いキャッシュ・レベルに記憶されているか否かを各プロセッサごとに特定するビット・ベクトルを記録する。ＭＭＵ（１０６）およびキャッシュ・コントローラ（１１０）は、コンピュータ・ノード上の全てのキャッシュ動作について、キャッシュ・ディレクトリ（１１２）内の情報を調べて更新する。キャッシュ・コントローラ（１１０）は、Ｌ２キャッシュ（１８１）に直接接続されているがＬ１キャッシュには直接接続されておらず、Ｌ１キャッシュのキャッシュ・ラインに関する情報をキャッシュ・ディレクトリ（１１２）から取得する。
【００１５】
キャッシュ・コントローラ（１１０）は、キャッシュ・メモリを管理する論理回路であり、プロセッサ（１０２）、キャッシュ・メモリ（Ｌ１、Ｌ２）、およびメイン・メモリ（１１４）間のインタフェースを提供する。ここではキャッシュ・コントローラ（１１０）をプロセッサ（１０２）の外部に図示するが、最近のコンピュータ上のキャッシュ・コントローラはプロセッサまたはＭＭＵに直接組み込まれていることが多い。実際、この例においてＭＭＵ（１０６）はＬ１キャッシュのためのキャッシュ制御論理を含む。
【００１６】
図１の例において、キャッシュ・コントローラ（１１０）は、本発明に従ってキャッシュ管理を実施するように構成されている。図１のキャッシュ・コントローラ（１１０）は、新しいキャッシュ・ラインをキャッシュ（１８１）に挿入するための要求を受信し、新しいキャッシュ・ラインが強制注入に関連付けられているか否かを判定し、新しいキャッシュ・ラインが強制注入に関連付けられているという判定に応答して、新しいキャッシュ・ラインのキャッシュ（１８１）への挿入を承認し、新しいキャッシュ・ラインが強制注入に関連付けられていないという判定に応答して、新しいキャッシュ・ラインのアドレスと既定アドレス範囲との比較に基づいて新しいキャッシュ・ラインの挿入を承認するか否かを判定するように構成されている。新しいキャッシュ・ラインの挿入を承認するかまたは拒否するかの決定を、新しいキャッシュ・ラインのアドレスと既定アドレス範囲との比較に基づいて行うことによって、キャッシュ・コントローラ（１１０）は、新しいキャッシュ・ラインのアドレスの優先度に基づいて挿入決定を行うことができる。挿入決定プロセスに優先度の検討を組み込むことによって、キャッシュ利用の最適化におけるキャッシュ・コントローラ（１１０）の有効性を向上させることができる。
【００１７】
更に説明すると、図２は、本発明の実施形態に従った、キャッシュ管理のための例示的な方法を示すフローチャートを図示する。図２の方法は、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入するための要求（２２０）を受信すること（２０２）を含む。新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入するための要求（２２０）を受信すること（２０２）は、バス（１６６）を介して第２のプロセッサ・セット（１９４）からプロセッサ（１０２）のいずれか１つからの要求（２２０）を受信することによって実施可能である。
【００１８】
また、図２の方法は、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）が強制注入に関連付けられているか否かを判定すること（２０４）を含む。新しいキャッシュ・ライン（２２２）が強制注入に関連付けられているか否かを判定すること（２０４）は、要求（２２０）を調べて、新しいキャッシュ・ライン（２２２）が強制注入に関連付けられていることを要求（２２０）が示すか否かを判定することによって実施可能である。強制注入は、新しいキャッシュ・ライン（２２２）に関連付けられたアドレス（２２４）とは無関係に、キャッシュ・コントローラ（１１０）が新しいキャッシュ・ライン（２２２）を承認しなければならないことを示すものである。
【００１９】
図２の方法は、新しいキャッシュ・ライン（２２２）が強制注入に関連付けられているという判定に応答して、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を承認すること（２０６）含む。新しいキャッシュ・ライン（２２２）が強制注入に関連付けられているという判定に応答して新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を承認すること（２０６）は、キャッシュ・コントローラ（１１０）から、第２のプロセッサ・セット（１９４）に関連付けられた第２の共有キャッシュ・レベル（１０９）内の別のキャッシュ・コントローラ（図示せず）に、要求（２２０）の承認を送信することによって実施可能である。
【００２０】
また、図２の方法は、新しいキャッシュ・ライン（２２２）が強制注入に関連付けられていないという判定に応答して、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）を含む。新しいキャッシュ・ライン（２２２）のアドレス（２０４）は、メイン・メモリ（１１４）の実メモリ・アドレスに基づくものとすることができる。新しいキャッシュ・ライン（２２２）が強制注入に関連付けられていないという判定に応答して、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）は、１つ以上の既定アドレス範囲（２２６）を確立し、この既定アドレス範囲（２２６）をディレクトリ（１１２）、キャッシュ・ライン、キャッシュ・コントローラ（１１０）等に記憶し、既定アドレス範囲（２２６）の最上位アドレスおよび最下位アドレスを識別し、新しいキャッシュ・ライン（２２２）のアドレス（２２４）が最上位アドレスを超えるかまたは最下位アドレス未満であるかを判定することによって、実施可能である。どのアドレス範囲を所定アドレス範囲内とするべきかという判定は、ディレクトリ・ルックアップまたは設計上の検討事項（例えばキャッシュ（１８１）内のラッチ・サイズ対犠牲選択決定のための時間）等のファクターに基づくものとすることができる。
【００２１】
更に説明すると、図３は、本発明の実施形態に従ったキャッシュ管理のための更に別の例示的な方法を示すフローチャートを図示する。図３の方法は、図２の方法の以下の要素を含む。すなわち、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入するための要求（２２０）を受信すること（２０２）、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）が強制注入に関連付けられているか否かを判定すること（２０４）、新しいキャッシュ・ライン（２２２）が強制注入に関連付けられているという判定に応答して、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を承認すること（２０６）、および、新しいキャッシュ・ライン（２２２）が強制注入に関連付けられていないという判定に応答して、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）である。
【００２２】
図２の方法と異なる図３の要素を図３に点線で示す。更に具体的には、それらの要素は、キャッシュ・コントローラ（１１０）が、無効キャッシュ・ラインが利用可能であるか否かを判定すること（３０２）、無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）が第１のクラスのアドレス範囲内にあるか否かを判定すること（３０４）、新しいキャッシュ・ライン（２２２）のアドレス（２２４）が第１のクラスのアドレス範囲内にないという判定に応答して、キャッシュ・コントローラ（１１０）が、少なくとも１つの可能な犠牲キャッシュ・ラインが第１のクラスのアドレス範囲外にあるか否かを判定すること（３０６）、少なくとも１つの可能な犠牲キャッシュ・ラインが第１のクラスのアドレス範囲外にないという判定に応答して、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を拒否すること（３３０）を含む。
【００２３】
図３の方法において、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）は、キャッシュ・コントローラ（１１０）によって、無効キャッシュ・ラインが利用可能であるか否かを判定すること（３０２）を含む。無効キャッシュ・ラインが利用可能であるか否かを判定すること（３０２）は、キャッシュ（１８１）内の特定のキャッシュ・ラインが期限切れであるかまたは無効化されているか否かを判定し、あらゆる無効化キャッシュ・ラインを識別することによって実施可能である。特定のキャッシュ・ラインは、もはや用いられていないか、または古くなったかもしくは破損した場合に、期限切れであるまたは無効化されているとすることができる。
【００２４】
図３の方法において、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）は、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ（１１０）が新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を承認すること（２０６）を含む。無効キャッシュ・ラインが利用可能であるという判定に応答して新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を承認すること（２０６）は、キャッシュ・コントローラ（１１０）から、第２のプロセッサ・セット（１９４）に関連付けられた第２の共有キャッシュ・レベル（１０９）内の別のキャッシュ・コントローラ（図示せず）に、要求（２２０）の承認を送信することによって、実施可能である。
【００２５】
図３の方法において、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）は、無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）が第１のクラスのアドレス範囲内にあるか否かを判定すること（３０４）を含む。新しいキャッシュ・ライン（２２２）のアドレス（２２４）が第１のクラスのアドレス範囲内にあるか否かの判定（３０４）は、第１のクラスのアドレス範囲に割り当てるアドレス範囲を示すユーザ・プログラマブル・エントリを受信し、第１のクラスのアドレス範囲にアドレス範囲を割り当て、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と、第１のクラスのアドレス範囲を含む最上位アドレスおよび最下位アドレスとを比較することによって実施可能である。この場合、第１のクラスのアドレス範囲は、どのアドレス範囲で挿入を許可するかを示すように選択することができる。
【００２６】
キャッシュ・ラインを割り当てる特定のクラスは、特定のキャッシュ・ラインのアドレスに加えて他の考察事項に基づくようにすることができる。例えば、特定のキャッシュ・ラインをある共有キャッシュ・レベルから別の共有キャッシュ・レベルに移動させることに応じて、キャッシュ・ラインのアドレスを変更することなく、特定のキャッシュ・ラインを割り当てるクラスを変更することができる。
【００２７】
図３の方法において、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）は、新しいキャッシュ・ライン（２２２）のアドレス（２２４）が第１のクラスのアドレス範囲内にあるという判定に応答して、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を承認すること（２０６）を含む。新しいキャッシュ・ライン（２２２）のアドレス（２２４）が第１のクラスのアドレス範囲内にあるという判定に応答して、新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を承認すること（２０６）は、キャッシュ・コントローラ（１１０）から、第２のプロセッサ・セット（１９４）に関連付けられた第２の共有キャッシュ・レベル（１０９）内の別のキャッシュ・コントローラ（図示せず）に、要求（２２０）の承認を送信することによって、実施可能である。
【００２８】
図３の方法において、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）は、新しいキャッシュ・ライン（２２２）のアドレス（２２４）が第１のクラスのアドレス範囲内にないという判定に応答して、キャッシュ・コントローラ（１１０）が、少なくとも１つの可能な犠牲キャッシュ・ラインが第１のクラスのアドレス範囲外にあるか否かを判定すること（３０６）を含む。新しいキャッシュ・ライン（２２２）のアドレス（２２４）が第１のクラスのアドレス範囲内にないという判定に応答して、少なくとも１つの可能な犠牲キャッシュ・ラインが第１のクラスのアドレス範囲外にあるか否かを判定すること（３０６）は、第１のクラスのアドレス範囲に割り当てるアドレス範囲を示すユーザ・プログラマブル・エントリを受信し、第１のクラスのアドレス範囲にアドレス範囲を割り当て、キャッシュ（１８１）内のキャッシュ・ラインのアドレスと、第１のクラスのアドレス範囲を含む最上位アドレスおよび最上位アドレスとを比較し、どのキャッシュ・ラインが第１のクラスのアドレス範囲外のアドレスを有するかを識別し、識別されたキャッシュ・ラインを可能な犠牲キャッシュ・ラインとして標示することによって実施可能である。この場合、犠牲キャッシュ・ラインは、新しいキャッシュ・ラインによって置換される可能性があるキャッシュ・ラインである。
【００２９】
図３の方法において、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）は、少なくとも１つの可能な犠牲キャッシュ・ラインが第１のクラスのアドレス範囲外にあるという判定に応答して、キャッシュ・コントローラ（１１０）が新しいキャッシュ・ライン（２２２）の挿入を承認すること（２０６）を含む。少なくとも１つの可能な犠牲キャッシュ・ラインが第１のクラスのアドレス範囲外にあるという判定に応答して、キャッシュ・コントローラ（１１０）が新しいキャッシュ・ライン（２２２）の挿入を承認すること（２０６）は、キャッシュ・コントローラ（１１０）から、第２のプロセッサ・セット（１９４）に関連付けられた第２の共有キャッシュ・レベル（１０９）内の別のキャッシュ・コントローラ（図示せず）に、要求（２２０）の承認を送信することによって実施可能である。
【００３０】
図３の方法において、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のアドレス（２２４）と既定アドレス範囲（２２６）との比較に基づいて新しいキャッシュ・ライン（２２２）の挿入を承認するか否かを判定すること（２０８）は、少なくとも１つの可能な犠牲キャッシュ・ラインが第１のクラスのアドレス範囲外にないという判定に応答して、キャッシュ・コントローラ（１１０）が新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を拒否すること（３３０）を含む。少なくとも１つの可能な犠牲キャッシュ・ラインが第１のクラスのアドレス範囲外にないという判定に応答して、キャッシュ・コントローラ（１１０）が新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を拒否すること（３３０）は、キャッシュ・コントローラ（１１０）から、第２のプロセッサ・セット（１９４）に関連付けられた第２の共有キャッシュ・レベル（１０９）内の別のキャッシュ・コントローラ（図示せず）に、要求（２２０）の拒否を送信することによって実施可能である。キャッシュ・コントローラ（１１０）が要求（２２０）を拒否した場合、新しいキャッシュ・ライン（２２２）はキャッシュ（１８１）に挿入されない。この場合、キャッシュ（１８１）内のキャッシュ・ラインは全て、新しいキャッシュ・ライン（２２２）よりも高い優先度を有する。
【００３１】
更に説明すると、図４は、本発明の実施形態に従ったキャッシュ管理のための更に別の例示的な方法を示すフローチャートを図示する。図４の方法は、図２の方法の以下の要素を含む。すなわち、新しいキャッシュ・ライン（２２２）が強制注入に関連付けられているという判定に応答して、キャッシュ・コントローラ（１１０）が、新しいキャッシュ・ライン（２２２）のキャッシュ（１８１）への挿入を承認すること（２０６）である。
【００３２】
図２の方法と異なる図４の要素を図４に点線で示す。更に具体的には、それらの要素は、キャッシュ・コントローラ（１１０）が、無効キャッシュ・ラインが利用可能であるか否かを判定すること（４０２）、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ（１１０）が、無効キャッシュ・ラインを犠牲キャッシュ・ライン（３５０）として選択すること（４０４）、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ（１１０）が、キャッシュ（１８１）内で、犠牲キャッシュ・ライン（３５０）を新しいキャッシュ・ライン（２２２）によって置換すること（４０６）、無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ・コントローラ（１１０）が、キャッシュ（１８１）が第２のクラスの犠牲キャッシュ・ラインを含むか否かを判定すること（４０８）、キャッシュが第２のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ・コントローラ（１１０）が、第２のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン（３５０）として選択すること（４１０）、キャッシュが第２のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ・コントローラ（１１０）が、キャッシュ（１８１）内で、犠牲キャッシュ・ライン（３５０）を新しいキャッシュ・ライン（２２２）によって置換すること（４１２）、キャッシュが第２のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ・コントローラ（１１０）が、第１のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン（３５０）として選択すること（４１４）、キャッシュが第２のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ・コントローラ（１１０）が、キャッシュ（１８１）内で、犠牲キャッシュ・ライン（３５０）を新しいキャッシュ・ライン（２２２）によって置換すること（４１６）を含む。
【００３３】
図４の方法において、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入することの承認（２０６）は、キャッシュ・コントローラ（１１０）によって、無効キャッシュ・ラインが利用可能であるか否かを判定すること（４０２）を含む。無効キャッシュ・ラインが利用可能であるか否かの判定（４０２）は、キャッシュ（１８１）内の特定のキャッシュ・ラインが期限切れであるかまたは無効化されているか否かを判定し、あらゆる無効化キャッシュ・ラインを識別することによって実施可能である。
【００３４】
図４の方法において、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入することの承認（２０６）は、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ（１１０）が、無効キャッシュ・ラインを犠牲キャッシュ・ライン（３５０）として選択すること（４０４）を含む。無効キャッシュ・ラインが利用可能であるという判定に応答して、無効キャッシュ・ラインを犠牲キャッシュ・ライン（３５０）として選択すること（４０４）は、無効キャッシュ・ラインの少なくとも１つを犠牲キャッシュ・ラインとして識別し、犠牲キャッシュ・ラインとしての無効キャッシュ・ラインの識別をキャッシュ・コントローラ（１１０）に記憶することによって実施可能である。
【００３５】
図４の方法において、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入することの承認（２０６）は、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ（１１０）が、キャッシュ（１８１）内で、犠牲キャッシュ・ライン（３５０）を新しいキャッシュ・ライン（２２２）によって置換すること（４０６）を含む。無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ（１８１）内で犠牲キャッシュ・ライン（３５０）を新しいキャッシュ・ライン（２２２）によって置換すること（４０６）は、犠牲キャッシュ・ライン（３５０）がどのキャッシュ物理位置を占有しているかを判定し、犠牲キャッシュ・ライン（３５０）が占有するキャッシュ物理地位に新しいキャッシュ・ライン（２２２）を記憶するためのコマンドをキャッシュ・コントローラ（１１０）からキャッシュ（１８１）に送信することによって、実施可能である。
【００３６】
図４の方法において、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入することの承認（２０６）は、無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ・コントローラ（１１０）が、キャッシュ（１８１）が第２のクラスの犠牲キャッシュ・ラインを含むか否かを判定すること（４０８）を含む。無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ（１８１）が第２のクラスの犠牲キャッシュ・ラインを含むか否かを判定すること（４０８）は、どのアドレス範囲を第２のクラスのアドレス範囲に関連付けるかを示す入力をユーザから受信し、そのアドレス範囲を第２のクラスのアドレス範囲に関連付け、キャッシュ（１８１）内のキャッシュ・ラインのいずれかが、第２のクラスのアドレス範囲に割り当てられたアドレス内のアドレスを含むか否かを判定することによって、実施可能である。この場合、第２のクラスの犠牲キャッシュ・ラインは、第２のクラスのアドレス範囲内にあるアドレスを有する。第２のクラスのアドレス範囲は、第１のクラスのアドレス範囲に関連付けられたアドレス範囲よりも優先度の低いアドレス範囲とすることができる。この場合、図４の方法では、第１のクラスの犠牲の前に第２のクラスの犠牲を置換することが試みられる。
【００３７】
図４の方法において、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入することの承認（２０６）は、キャッシュが第２のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ・コントローラ（１１０）が、第２のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン（３５０）として選択すること（４１０）を含む。キャッシュが第２のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、第２のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン（３５０）として選択すること（４１０）は、第２のクラスの犠牲キャッシュ・ラインの少なくとも１つを犠牲キャッシュ・ラインとして識別し、犠牲キャッシュ・ラインとしての選択した第２のクラスの犠牲キャッシュ・ラインの識別をキャッシュ・コントローラ（１１０）に記憶することによって実施可能である。
【００３８】
図４の方法において、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入することの承認（２０６）は、キャッシュが第２のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ・コントローラ（１１０）が、キャッシュ（１８１）内で、犠牲キャッシュ・ライン（３５０）を新しいキャッシュ・ライン（２２２）によって置換すること（４１２）を含む。キャッシュ（１８１）が第２のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ（１８１）内で、犠牲キャッシュ・ライン（３５０）を新しいキャッシュ・ライン（２２２）によって置換すること（４１２）は、犠牲キャッシュ・ライン（３５０）がどのキャッシュ物理位置を占有しているかを判定し、犠牲キャッシュ・ライン（３５０）が占有するキャッシュ物理地位に新しいキャッシュ・ライン（２２２）を記憶するためのコマンドをキャッシュ・コントローラ（１１０）からキャッシュ（１８１）に送信することによって、実施可能である。
【００３９】
図４の方法において、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入することの承認（２０６）は、キャッシュが第２のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ・コントローラ（１１０）が、第１のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン（３５０）として選択すること（４１４）を含む。キャッシュが第２のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、第１のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン（３５０）として選択すること（４１４）は、第１のクラスの犠牲キャッシュ・ラインの少なくとも１つを犠牲キャッシュ・ラインとして識別し、犠牲キャッシュ・ラインとしての選択した第１のクラスの犠牲キャッシュ・ラインの識別をキャッシュ・コントローラ（１１０）に記憶することによって実施可能である。
【００４０】
図４の方法において、新しいキャッシュ・ライン（２２２）をキャッシュ（１８１）に挿入することの承認（２０６）は、キャッシュが第２のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ・コントローラ（１１０）が、キャッシュ（１８１）内で、犠牲キャッシュ・ライン（３５０）を新しいキャッシュ・ライン（２２２）によって置換すること（４１６）を含む。キャッシュが第２のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ（１８１）内で、犠牲キャッシュ・ライン（３５０）を新しいキャッシュ・ライン（２２２）によって置換すること（４１６）は、犠牲キャッシュ・ライン（３５０）がどのキャッシュ物理位置を占有しているかを判定し、犠牲キャッシュ・ライン（３５０）が占有するキャッシュ物理地位に新しいキャッシュ・ライン（２２２）を記憶するためのコマンドをキャッシュ・コントローラ（１１０）からキャッシュ（１８１）に送信することによって、実施可能である。
【００４１】
本発明の例示的な実施形態について、主として、キャッシュ管理のための完全に機能できるコンピュータ・システムの文脈において説明している。しかしながら、いずれかの適切なデータ処理システムと共に用いるためのコンピュータ読み取り可能記憶媒体上に配置されたコンピュータ・プログラムにおいて本発明を具現化することが可能であることは、当業者には認められよう。かかるコンピュータ読み取り可能記憶媒体は、磁気媒体、光媒体、または他の適切な媒体を含む機械読み取り可能情報のためのいずれかの記憶媒体とすることができる。かかる媒体の例には、ハード・ドライブまたはディスケットにおける磁気ディスク、光ドライブのコンパクト・ディスク、磁気テープ、および当業者に想起される他のものが含まれる。適切なプログラミング手段を有するいかなるコンピュータ・システムでも、コンピュータ・プログラムにおいて具現化されたような本発明の方法のステップを実行可能であることは、当業者には速やかに認められよう。また、本明細書に記載された例示的な実施形態のいくつかは、コンピュータ・ハードウェア上にインストールされて実行するソフトウェアに合わせたものであるが、ファームウェアとしてまたはハードウェアとして実施された代替的な実施形態が充分に本発明の範囲内であることは、当業者には認められよう。
【００４２】
当業者には認められるであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する１つ以上のコンピュータ読み取り可能媒体において具現化されるコンピュータ・プログラムの形態を取ることも可能である。
【００４３】
１つ以上のコンピュータ読み取り可能媒体のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例（非網羅的な列挙）は、以下を含む。すなわち、１本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかのタンジブルな媒体とすることができる。
【００４４】
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
【００４５】
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
【００４６】
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等のオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む１つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の場合、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、（例えばインターネット・サービス・プロバイダを用いてインターネットを介して）外部コンピュータに対して行うことができる。
【００４７】
本発明の実施形態に従った方法、装置（システム）、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様について記載している。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するための手段を生成するようになっている。
【００４８】
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施する命令を含む製造品を生成するようになっている。
【００４９】
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するためのプロセスを提供するようになっている。
【００５０】
上述した図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムの可能な実施のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能（複数の機能）を実施するための１つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した２つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
【００５１】
キャッシュ制御動作のための要求は、新しいキャッシュ・ラインをキャッシュに挿入することを含む。キャッシュ制御動作は、キャッシュに関わるいずれの数の動作も含むことができ、新しいキャッシュ・ラインをキャッシュに挿入することには限定されないことは、当業者には認められよう。前述の記載から、本発明の真の精神から逸脱することなくその様々な実施形態において変形および変更を実行可能であることは理解されよう。本明細書における記載は例示の目的のためだけのものであり、限定の意味で解釈されるべきではない。本発明の範囲は、以下の特許請求の範囲の文言によってのみ限定される。
【符号の説明】
【００５２】
１１０  マルチプロセッシング・コンピュータ
１０２  プロセッサ
１０４  コア
１０６  ＭＭＵ
１０８  第１の共有キャッシュ・レベル
１０９  第２の共有キャッシュ・レベル
１１０  キャッシュ・コントローラ
１１２  キャッシュ・ディレクトリ
１１４  メイン・メモリ
１８１  Ｌ２キャッシュ
１９３  第１のプロセッサ・セット
１９４  第２のプロセッサ・セット
【図１】
0005607603.tif 000002
【図２】
0005607603.tif 000003
【図３】
0005607603.tif 000004
【図４】
0005607603.tif 000005