(57)【要約】      （修正有）【課題】データ処理システムのキャッシュ・コヒーレンシにおいてキャストアウトに関する改良されたコヒーレンシ管理を支援するプロセッサ、データ処理システム、および方法を提供する。【解決手段】データ処理システムにおけるコヒーレンシ管理の方法は、キャッシュ・ラインを上位レベルのキャッシュ・メモリ内に排他的所有コヒーレンシ状態で保持するステップ、しかる後、そのキャッシュ・ラインを上位レベルのキャッシュ・メモリから取り除き、かつ、共用的所有コヒーレンシ状態の指示を含めて、そのキャッシュ・ラインについてのキャストアウト要求を、上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るステップと、キャストアウト要求に応答して、キャストアウト要求に従って決定されたコヒーレンシ状態でキャッシュ・ラインを下位レベルのキャッシュ・メモリに配置するステップを含む。【選択図】図１
2008077650.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも上位レベルおよび下位レベルを含むマルチレベル・キャッシュ・ハイアラーキを有するマルチプロセッサ・データ処理システムにおいてコヒーレンシを管理する方法であって、
キャッシュ・ラインを上位レベルのキャッシュ・メモリ内に排他的所有コヒーレンシ状態で保持するステップと、
その後、前記キャッシュ・ラインを前記上位レベルのキャッシュ・メモリから取り除き、かつ、共用的所有コヒーレンシ状態の指示を含めて、前記キャッシュ・ラインについてのキャストアウト要求を、前記上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るステップと、
前記キャストアウト要求に応答して、前記キャストアウト要求に従って決定されたコヒーレンシ状態で前記キャッシュ・ラインを前記下位レベルのキャッシュ・メモリに配置するステップと、
を含む、方法。
【請求項２】
前記データ処理システムは予約レジスタを含み、
前記上位レベルのキャッシュ・メモリが、前記キャッシュ・ラインについての予約に関して前記予約レジスタをチェックするステップと、
前記予約レジスタが前記キャッシュ・ラインについての予約を表わす場合、前記上位レベルのキャッシュ・メモリが、前記キャストアウト要求内に前記共用的所有コヒーレンシ状態の前記指示を加えるステップと、
前記予約レジスタが前記キャッシュ・ラインについての予約を表わさない場合、前記上位レベルのキャッシュ・メモリが、前記キャストアウト要求内に前記排他的所有コヒーレンシ状態の指示を加えるステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記共用的所有コヒーレンシ状態は、前記キャッシュ・ラインが、システム・メモリにおける対応するデータに関連した修正済みデータを含むこと、および前記キャッシュ・ラインを保持するキャッシュ・メモリが、前記修正済みデータによるシステム・メモリの更新を担当すること、を示す、請求項１に記載の方法。
【請求項４】
前記下位レベルのキャッシュ・メモリが、前記共用的所有コヒーレンシ状態にあるキャッシュ・ラインを前記上位レベルのキャッシュ・メモリに供給するステップを更に含む、請求項１に記載の方法。
【請求項５】
前記下位レベルのキャッシュ・メモリは、前記上位レベルのキャッシュ・メモリについてのビクティム・キャッシュであり、
前記下位レベルのキャッシュ・メモリを、前記上位レベルのキャッシュ・メモリからキャストアウトされたキャッシュ・ラインで占めさせるステップを更に含む、請求項１に記載の方法。
【請求項６】
プロセッサ・コアと、
前記プロセッサ・コアに接続された上位レベルのキャッシュ・メモリであって、
キャッシュ・ラインを保持するデータ・アレイと、
前記キャッシュ・ラインと関連したコヒーレンシ状態フィールドを含む、前記データ・アレイの内容のディレクトリと、
前記データ・アレイから前記キャッシュ・ラインを取り除き、かつ、前記キャッシュ・ラインについてのキャストアウト要求を前記上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るキャッシュ・コントローラであって、前記下位レベルのキャッシュ・メモリが前記キャストアウト要求によって指定されたコヒーレンシ状態で前記キャッシュ・ラインをバッファするように、共用的所有コヒーレンシ状態の指示を前記キャストアウト要求が含むことを特徴とする、キャッシュ・コントローラと、
を含む、上位レベルのキャッシュ・メモリと、
を備える、データ処理システム。
【請求項７】
前記キャッシュ・コントローラに接続された予約レジスタを含み、
前記キャッシュ・コントローラは、前記予約レジスタが前記キャッシュ・ラインについての予約を表わす場合には、前記キャストアウト要求内に前記共用的所有コヒーレンシ状態の指示を加え、前記予約レジスタが前記予約を表わさない場合には、前記キャストアウト要求内に排他的所有コヒーレンシ状態の指示を加える、
請求項６に記載のデータ処理システム。
【請求項８】
前記下位レベルのキャッシュ・メモリは前記上位レベルのキャッシュ・メモリに接続される、請求項６に記載のデータ処理システム。
【請求項９】
複数の上位レベルのキャッシュ・メモリおよび１つの下位レベルのキャッシュ・メモリを有するマルチプロセッサ・データ処理システムにおいてコヒーレンシを管理する方法であって、
キャッシュ・ラインを前記複数の上位レベルのキャッシュ・メモリのうちの第１の上位レベルのキャッシュ・メモリから取り除き、かつ、排他的所有コヒーレンシ状態の指示を含めて、前記キャッシュ・ラインについてのキャストアウト要求を、前記第１の上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るステップと、
前記キャストアウト要求に応答して、前記キャッシュ・ラインを前記下位レベルのキャッシュ・メモリに前記排他的所有コヒーレンシ状態で配置し、かつ、前記複数の上位レベルのキャッシュ・メモリのどれが前記キャッシュ・ラインのソースであったかを表わすソース指示を前記下位レベルのキャッシュ・メモリに記録するステップと、
前記複数の上位レベルのキャッシュ・メモリの１つからのその後のデータ要求に応答して、前記データ要求が前記キャッシュ・ラインの前記ソースから受取られたかどうかを前記ソース指示を参照して決定し、その決定の結果が肯定的である場合、前記データ要求に応答して前記キャッシュ・ラインを前記排他的所有コヒーレンシ状態で供給するステップと
を含む、方法。
【請求項１０】
前記下位レベルのキャッシュ・メモリは、前記データ要求が前記キャッシュ・ラインの前記ソースから受取られなかった場合、前記データ要求に応答して前記キャッシュ・ラインを共用的所有コヒーレンシ状態で供給する、請求項９に記載の方法。
【請求項１１】
前記下位レベルのキャッシュ・メモリは、前記第１の上位レベルのキャッシュ・メモリと、前記上位レベルのキャッシュ・メモリのうちの第２の上位レベルのキャッシュ・メモリとに接続された、共有ビクティム・キャッシュであり、
前記第１の上位レベルのキャッシュ・メモリおよび前記第２の上位レベルのキャッシュ・メモリのうちの１つから前記データ要求を受取るステップを更に含む、請求項９に記載の方法。
【請求項１２】
前記下位レベルのキャッシュ・メモリは第１の下位レベルのキャッシュ・メモリであり、前記キャストアウト要求は第２のキャストアウト要求であり、
前記第１の下位レベルのキャッシュ・メモリが前記キャッシュ・ラインを置換のために選択するステップと、
前記キャッシュ・ラインを置換のために選択するステップに応答して、前記第１の下位レベルのキャッシュ・メモリから第２の下位レベルのキャッシュ・メモリに第２のキャストアウト要求を送るステップと
を更に含む、請求項９に記載の方法。
【請求項１３】
前記第２のキャストアウト要求は共用的所有コヒーレンシ状態の指示を含む、請求項１２に記載の方法。
【請求項１４】
第１のプロセッサ・コアおよび第２のプロセッサ・コアと、
前記第１のプロセッサ・コアに接続された第１の上位レベルのキャッシュ・メモリおよび前記第２のプロセッサ・コアに接続された第２の上位レベルのキャッシュ・メモリと、
前記第１の上位レベルのキャッシュ・メモリおよび前記第２の上位レベルのキャッシュ・メモリ、に接続された下位レベルのキャッシュ・メモリであって、
データ・アレイと、
前記データ・アレイの内容のディレクトリと、
排他的所有コヒーレンシ状態を表わすキャストアウト要求を受取ったことに応答して、キャッシュ・ラインを前記データ・アレイに前記排他的所有コヒーレンシ状態で配置し、前記上位レベルのキャッシュ・メモリのどちらが前記キャッシュ・ラインのソースであったかを表わすソース指示を前記ディレクトリに記録し、前記上位レベルのキャッシュ・メモリの１つからのその後のデータ要求に応答して、前記データ要求が前記キャッシュ・ラインの前記ソースから受取られたかどうかを前記ソース指示を参照して決定し、その決定の結果が肯定的である場合、前記データ要求に応答して前記キャッシュ・ラインを前記排他的所有コヒーレンシ状態で供給する、キャッシュ・コントローラと、
を含むキャッシュ・メモリと、
を備えるデータ処理システム。
【請求項１５】
前記キャッシュ・コントローラは、前記データ要求が前記キャッシュ・ラインの前記ソースから受取られなかった場合、前記データ要求に応答して前記キャッシュ・ラインを共用的所有コヒーレンシ状態で供給する、請求項１４に記載のデータ処理システム。
【請求項１６】
前記下位レベルのキャッシュ・メモリは、前記第１の上位レベルのキャッシュ・メモリと、前記第２の上位レベルのキャッシュ・メモリとに接続された、共有ビクティム・キャッシュである、請求項１４に記載のデータ処理システム。
【請求項１７】
前記下位レベルのキャッシュ・メモリは第１の下位レベルのキャッシュ・メモリであり、
前記第１の下位レベルのキャッシュ・メモリに接続された第２の下位レベルのキャッシュ・メモリを含み、
前記キャストアウト要求は第２のキャストアウト要求であり、
前記キャッシュ・コントローラは、前記キャッシュ・ラインを置換のために選択し、かつ、前記選択したことに応答して、前記第１の下位レベルのキャッシュ・メモリから前記第２の下位レベルのキャッシュ・メモリに第２のキャストアウト要求を送る、
請求項１４に記載のデータ処理システム。
【請求項１８】
前記第２のキャストアウト要求は共用的所有コヒーレンシ状態の指示を含む、請求項１７に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ処理システムに関し、特に、データ処理システムにおけるコヒーレンシ管理に関するものである。更に詳しく云えば、本発明は、データ処理システムのキャッシュ・コヒーレンシにおいてキャストアウトに関する改良されたコヒーレンシ管理を支援するプロセッサ、データ処理システム、および方法に関するものである。
【背景技術】
【０００２】
サーバ・コンピュータ・システムのような通常の対称マルチプロセッサ（ＳＭＰ）コンピュータ・システムは、典型的には１つまたはそれ以上のアドレス、データ、および制御バスを有するシステム相互接続網にすべて接続された複数の処理ユニットを含む。そのシステム相互接続網にはシステム・メモリが接続される。システム・メモリは、マルチプロセッサ・コンピュータ・システムにでは最も低いレベルの揮発性メモリを表わし、一般に、すべての処理ユニットによる読取りおよび書込みアクセスのためにアクセス可能である。システム・メモリにある命令およびデータに対するアクセス待ち時間を少なくするために、各処理ユニットは、一般に、それぞれのマルチレベル・キャッシュ・コヒーレンシによって更に支援される。低いレベルのキャッシュ・コヒーレンシは１つまたは複数のプロセッサ・コアによって共用されることもある。
【０００３】
キャッシュ・メモリは、一般に、システム・メモリから必要なデータおよび命令をロードしなければならないことにより生じるアクセス待ち時間を少なくすることによって処理をスピード・アップするために、プロセッサによりアクセスされるメモリ・ブロックを一時的にバッファするように利用される。或るマルチプロセッサ（ＭＰ）システムでは、キャッシュ・コヒーレンシは少なくとも２つのレベルを有する。レベル１（Ｌ１）の、即ち、上位レベルのキャッシュは、通常、特定のプロセッサ・コアに関連した専用キャッシュであり、ＭＰシステムにおける他のコアがそれを直接にアクセスすることはできない。典型的には、ロードまたはストア命令のようなメモリ・アクセス命令に応答して、プロセッサ・コアは、先ず、上位レベルのキャッシュをアクセスする。要求されたメモリ・ブロックが上位レベルのキャッシュにおいて見つからなかった場合、またはメモリ・アクセス要求が上位レベルのキャッシュにおいてサービスされ得なかった場合（例えば、Ｌ１キャッシュがストア・スルー・キャッシュである場合）、プロセッサ・コアは、要求されたメモリ・ブロックへのメモリ・アクセスをサービスするために下位レベルのキャッシュ（例えば、レベル２（Ｌ２）のキャッシュまたはレベル３（Ｌ３）のキャッシュ）をアクセスする。最低レベル（例えば、Ｌ２またはＬ３）のキャッシュは、多くの場合、複数のプロセッサ・コア間で共用される。
【０００４】
メモリの内容の一貫したビューは、コヒーレンシ・プロトコルの実装によって、コンピュータ・システム全体にわたって分布した個々のメモリ・ブロックの潜在的に複数のコピーが存在することで維持される。コヒーレンシ・プロトコル、例えば、周知のＭＥＳＩプロトコルまたはそれの変形は、メモリ・ブロックの各キャッシュされたコピーと関連する状態情報を維持すること、およびメモリ・アクセス要求を他の処理ユニットにとって可視的にするために処理ユニット間で少なくとも幾つかのメモリ・アクセス要求を伝達することを伴う。
【０００５】
複数の処理ユニットおよび実行スレッドの間におけるメモリの特定部分（例えば、キャッシュ・ライン）に対するアクセスを同期させるために、多くの場合、ロード・予約（load-reserve）命令およびストア・条件付き（store-conditional）命令のペアが使用される。例えば、ロード・予約命令およびストア・条件付き命令は、それぞれ、ＬＷＡＲＸ／ＬＤＡＲＸおよびＳＴＷＣＸ／ＳＴＤＣＸニーモニック（以下、ＬＡＲＸおよびＳＴＣＸという）と関連した命令コード（オペランド）と共にＰｏｗｅｒＰＣ（商標）命令セット体系において実装されている。プロセッサによるＬＡＲＸ命令の実行は、指定されたキャッシュ・ラインをそのプロセッサのキャッシュ・メモリにロードし、そして、プロセッサが、その予約されたキャッシュ・ラインをターゲットとするその後のＳＴＣＸ命令の実行を通してそのキャッシュ・ラインを自動的に更新することに関心を持っている、ということを意味する予約フラッグおよびアドレス・レジスタをセットする。その後、キャッシュは、他のプロセッサがそのキャッシュ・ラインを修正したということを意味するオペレーションに関してストレージ・サブシステムを監視し、そのオペレーションが検出された場合、予約の取り消しを表わすために予約フラッグをリセットする。プロセッサが、ＬＡＲＸの実行を通して予約されたキャッシュ・ラインをターゲットとするその後のＳＴＣＸ命令を実行するとき、キャッシュ・メモリは、そのキャッシュラインについての予約が依然として保留中である場合、ＳＴＣＸ命令によって要求されたキャッシュ・ラインの更新だけを行う。従って、微量性（atomicity）を厳格に強制する基本的な微量更新を使わずに共用メモリに対する更新を同期化することが可能である。
【０００６】
予約フラッグの状態とその予約されたキャッシュ・ラインのキャッシングとは無関係であり、それは、例えば、キャストアウト・オペレーションによって予約プロセッサのキャッシュから関連のキャッシュ・ラインが取り除かれる場合、予約フラッグが自動的にはリセットされないということを意味する。キャッシュ・メモリからキャストアウトされる１つの予約されたキャッシュ・ラインが、その後、予約プロセッサ以外のプロセッサによって修正される場合、予約されたキャッシュ・ラインが「修正済み」以外の状態にあるならば、予約は通常のコヒーレンシ伝達によって自動的に取り消されるであろう。しかし、「予約済み」のキャッシュ・ラインは「暗黙に」（即ち、キャッシュ間のコヒーレンシ伝達なしに）更新され得るので、失敗するべきＳＴＣＸ命令が成功しないことを保証するために、そのようなキャッシュ・ラインに対して特別の準備が施されなければならない。
【０００７】
或る従来技術の方法では、１つのキャッシュ・ライン（予約されたキャッシュ・ラインを含む）が、上位レベルのキャッシュから下位レベルのキャッシュに、それが上位レベルのキャッシュに保持されていた状態と同じコヒーレンシ状態で、キャストアウトされることを許容することによって、および、そのキャッシュ・ラインが上位レベルのキャッシュによって下位レベルのキャッシュから再び得られる場合、そのキャッシュ・ラインのコヒーレンシ状態が、排他的所有状態（例えば、「修正済み」（Ｍ））から共用的所有状態（例えば、「タグ付き」（Ｔ））に格下げされることを、それが妥当ならば、要求することによって、１つのコヒーレンシ・プロトコルが上記の動作シナリオに対処した。その強制された格下げは、キャッシュ・ラインを排他的所有状態に保持しているときに別のプロセッサがそのキャッシュ・ラインを更新しようとする場合、そのキャッシュ・ラインに対するいずれの保留の予約も取り消されることを保証する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明者は、キャッシュ・ラインが更新される場合に待ち時間を少なくし且つ不必要なコヒーレンシ・コミュニケーションを排除するために、「修正済み」（Ｍ）コヒーレンシ状態のような排他的所有コヒーレンシ状態を、できれば、保存することが望ましいことを認識した。従って、本発明の目的は、データ処理システムのキャッシュ・ハイアラーキにおけるキャストアウトに関する改良されたコヒーレンシ管理を支援する、改良されたプロセッサ、データ処理システム、およびデータ処理の方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一実施例によれば、データ処理システムにおけるコヒーレンシ管理の方法は、キャッシュ・ラインを上位レベルのキャッシュ・メモリ内に排他的所有コヒーレンシ状態で保持するステップと、しかる後、そのキャッシュ・ラインを上位レベルのキャッシュ・メモリから取り除き、かつ、共用的所有コヒーレンシ状態の指示を含めて、そのキャッシュ・ラインについてのキャストアウト要求を、上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るステップと、キャストアウト要求に応答して、キャストアウト要求に従って決定されたコヒーレンシ状態でキャッシュ・ラインを下位レベルのキャッシュ・メモリに配置するステップと、を含む。
【００１０】
本発明のすべての目的、特徴、および利点が、以下の詳細に記載された説明において明らかになるであろう。
【発明を実施するための最良の形態】
【００１１】
図面全体を通して、同じ参照番号は同じ部分または対応する部分を指す。図１を参照すると、本発明を具現化し得る例示的なデータ処理システムを表わす高レベルのブロック図が示される。データ処理システムは、キャッシュ・コヒーレント対称マルチプロセッサ（ＳＭＰ）・データ処理システム１００として示される。図示のように、データ処理システム１００は、データおよび命令を処理するための複数の処理ノード１０２ａ、１０２ｂを含む。処理ノード１０２は、アドレス、データ、および制御情報を搬送するためのシステム相互接続網１１０に接続される。システム相互接続網１１０は、例えば、バス型の相互接続網、交換型の相互接続網、またはハイブリッド相互接続網として具現化することが可能である。
【００１２】
図示の実施例では、各処理ノード１０２は、４つの処理ユニット１０４ａ〜１０４ｄを含むマルチチップ・モジュール（ＭＣＭ）として実現される。各処理ユニットは、それぞれの集積回路として実現されることが望ましい。各処理ノード１０２における処理ユニット１０４はローカル相互接続網１１４によって相互におよびシステム相互接続網１１０にコミュニケーションのために接続される。ローカル相互接続網１１４は、システム相互接続網１１０のように、例えば、１つまたはそれ以上のバスまたはスイッチを用いて具現化することも可能である。
【００１３】
図２に示されるように、各処理ユニット１０４は、それぞれのシステム・メモリ１０８に接続された統合メモリ・コントローラ（ＩＭＣ）２０６を含む。システム・メモリ１０８に存在するデータおよび命令は、一般に、データ処理システム１００内の任意の処理ノード１０２の任意の処理ユニット１０４におけるプロセッサ・コアによってアクセスおよび修正され得る。本発明の別の実施例では、１つまたはそれ以上のメモリ・コントローラ２０６（およびシステム・メモリ１０８）をシステム相互接続網１１０またはローカル相互接続網１１４に接続することも可能である。
【００１４】
図１のＳＭＰデータ処理システム１００が、相互接続ブリッジ、不揮発性記憶装置、ネットワークまたは付属装置への接続のためのポート、のような多くの更なる図示されてないコンポーネントを含み得るということは当業者には明らかであろう。そのような更なるコンポーネントは、本発明の理解にとっては必要ないので図１には示されず、これ以上説明されない。しかし、本発明によって提供される機能強化が様々なアーキテクチャのキャッシュ・コヒーレント・データ処理システムに適用可能であって、図１に示された汎用のデータ処理システム・アーキテクチャにまったく限定されないということは当然である。
【００１５】
図２を参照すると、本発明に従って例示的な処理ユニット１０４の更に詳細なブロック図が示される。図示の実施例では、各処理ユニット１０４は、命令およびデータを独立的に処理するための４つのプロセッサ・コア２００ａ〜２００ｄを含む。１つの好適な実施例では、各プロセッサ・コア２００は複数（例えば、２つ）の同じ権限を持つハードウェア・スレッドの処理を支援する。
【００１６】
各プロセッサ・コア２００のオペレーションは、最低レベルにある共用システム・メモリ１０８を有し、キャッシュ可能なアドレス内に存在するデータおよび命令をキャッシュするための上位レベルである２つまたはそれ以上のレベルのキャッシュ・メモリを有するマルチ・レベルの揮発性メモリ・サブシステムによって支援される。図示の実施例では、キャッシュ・メモリ・ハイアラーキは、各プロセッサ・コア２００内にそのプロセッサ・コア専用のそれぞれのストア・スルー・レベル１（Ｌ１）キャッシュ、各プロセッサ・コア２００に専用のそれぞれのストア・イン・レベル２（Ｌ２）キャッシュ２３０、およびＬ２キャストアウトをバッファするためのＬ３ビクティム（victim）・キャッシュ２３２を含む。図示の実施例では、プロセッサ・コア２００ａおよび２００ｄがそれぞれのＬ３キャッシュ（即ち、それぞれ、Ｌ３キャッシュ２３０ａおよび２３０ｄ）を有し、プロセッサ・コア２００ｂおよび２００ｃがＬ３キャッシュ２３０ｂを共用する。もちろん、別の実施例では、プロセッサ・コア２００の各々がそれ自身のＬ３キャッシュ２３２を有してもよく、或いは、プロセッサ・コア２００の各々がＬ３キャッシュを１つまたはそれ以上の他のプロセッサ・コアと共用してもよい。少なくともいくつかの実施例では、Ｌ３キャッシュ２３２は、プロセッサ・コア２００によってアクセスされそうなデータを処理ユニット１０４のキャッシュ・ハイアラーキ内にできるだけ長い間保存するために、１つのＬ３キャッシュ２３２がそれのキャッシュ・ラインの１つを他のＬ３キャッシュ２３２にキャストアウトすることを可能にすることを含む、データ交換の許容のために接続される。
【００１７】
各処理ユニット１０４は、応答ロジック２１０の一例を含み、その応答ロジックは、データ処理システム１００内のキャッシュ・コヒーレンシを維持する分散したコヒーレンシ信号機構の一部を実装する。更に、各処理ユニット１０４は、処理ユニット１０４と、ローカル相互接続網１１４およびシステム相互接続網１１０との間の伝達を管理するための相互接続ロジック２１２の一例を含む。Ｌ２キャッシュ２３０およびＬ３キャッシュ２３２の各々は、図１の相互接続網１１０および１１４を介したデータおよびコヒーレンシ・コミュニケーションへの参加を可能にするために相互接続ロジック２１２に接続される。最後に、各処理ユニット１０４は、Ｉ／Ｏ装置２１６のような１つまたはそれ以上のＩ／Ｏ装置の接続を支援する統合Ｉ／Ｏコントローラ２１４を含む。Ｉ／Ｏコントローラ２１４は、Ｉ／Ｏ装置２１６による要求に応答してローカル相互接続網１１４および／またはシステム相互接続網１１０上のオペレーションを生じさせることが可能である。
【００１８】
次に図３を参照すると、図２の処理ユニット１０４におけるプロセッサ・コア２００およびＬ２キャッシュ２３０の更に詳細なブロック図が示される。図示のように、プロセッサ・コア２００は、実行のために命令をフェッチして順序付けるための命令シーケンス・ユニット（ＩＳＵ）３００、命令を実行するための１つまたはそれ以上の実行ユニット３０２、およびＬ１キャッシュ３０６を含む。
【００１９】
実行ユニット３０２は、データをメモリからロードさせるためにおよびメモリにストアさせるためにメモリ・アクセス命令を実行するロード・ストア・ユニット（ＬＳＵ）３０４を含む。そのようなメモリ・アクセス命令はロード・予約命令およびストア・条件付き命令を含み、それらの命令は、同じ処理ユニット内または異なる処理ユニット内の、同じプロセッサ・コア２００における実行であろうとまたは異なるプロセッサ・ユニット２００における実行であろうと、特定のスレッド実行および他の並行したスレッド実行の間で共用メモリに対するアクセスを同期させるために利用される。
【００２０】
本発明によれば、分岐したＬ１データ・キャッシュおよび命令キャッシュを含み得るＬ１キャッシュ３０６は、他のプロセッサ・コア２００に関するキャッシュ・コヒーレンシのポイントがＬ１キャッシュ３０６の下に置かれるということ、および、図示の実施例では、Ｌ２キャッシュ２３０に置かれるということを意味するストア・スルー・キャッシュとして実施される。従って、Ｌ１キャッシュ３０６は、それのキャッシュラインについての真のキャッシュ・コヒーレンシ状態を維持するのではなく、有効／無効ビットだけを維持する。
【００２１】
更に図３に示されるように、Ｌ２キャッシュ２３０は、命令およびデータのキャッシュ・ラインをストアするデータ・アレイ３１０、データ・アレイ３１０のキャッシュ・ディレクトリ３１２、およびＬ２キャッシュ２３０のデータおよびコヒーレンシ・オペレーションを制御するキャッシュ・コントローラ３３０を含む。通常のセット・アソシアティブ・キャッシュにおけるように、システム・メモリ１０８におけるメモリ・ロケーションが、システム・メモリ（実）アドレス内の所定のインデックス・ビットを利用してデータ・アレイ３１０内の特定の合同クラスにマップされる。一実施例では、コヒーレンシ・システムに対する標準のメモリ・ブロックが１２８バイトのキャッシュ・ラインにセットされる。データ・アレイ３１０内にストアされた特定のキャッシュ・ラインが、データ・アレイ３１０における各キャッシュ・ラインに対する１つのディレクトリ・エントリを含むキャッシュ・ディレクトリ３１２に記録される。当業者には明らかであるように、キャッシュ・ディレクトリ３１２における各ディレクトリ・エントリは、少なくとも、対応する実アドレスの一部を利用してデータ・アレイ３１０に記憶された特定のキャッシュ・ラインを指定するタグ・フィールド３１４、キャッシュ・ラインのコヒーレンシ状態を表わす状態フィールド３１６、および同じ合同クラスにおける他のキャッシュ・ラインに関してそのキャッシュラインについての置換順序を表わすＬＲＵ（最低使用頻度）フィールド３１８を含む。
【００２２】
状態フィールド３１６に記録することが可能なコヒーレンシ状態は具現化方法特有のものであり、システム・アーキテクチャと複雑性および精度の所望レベルとに従って変わり得る。１つの好適な実施例（他の実施例も可能である）では、周知のＭＥＳＩプロトコルの変形が使用され、それは、少なくとも、下記の表１に示されたコヒーレンシ状態を含む。
【表１】
2008077650.tif 000003
【００２３】
表１に示された例示的なコヒーレンシ状態が、更なる無効状態、共用状態、共用的所有状態、および排他的所有状態を含む１つまたはそれ以上の更なるコヒーレンシ状態を含むように拡張可能であるということは当業者には明らかであろう。
【００２４】
Ｌ２キャッシュ２３０は、結局、関連するプロセッサ・コア２００によって実行されたスレッドの予約を記録するための予約ロジック３２０を含む。特に、予約ロジック３２０は、プロセッサ・コア２００によって並行して実行され得る各スレッドに対する、予約アドレス・フィールド３２２および予約フラッグ３２４を含むそれぞれの予約レジスタを含む。例えば、プロセッサ・コア２００が２つのスレッドを並行して実行し得る図示の例では、予約ロジック３２０はプロセッサ・コア２００のための２つの予約レジスタ、即ち、スレッド０に対する予約アドレス・フィールド３２２ａおよび予約フラッグ３２４ａと、スレッド１に対する予約アドレス・フィールド３２２ｂおよび予約フラッグ３２４ｂとを含む。予約フラッグ３２４は、それが（例えば、１に）セットされると、関連の実行スレッドが、関連の予約アドレス・フィールド３２２に含まれたアドレスに対する予約を保持していることを表わし、予約フラッグがセットされない場合には、それは、予約が保持されてないことを表わす。予約ロジック３２０は、ストア・条件付きオペレーションの結果を表わす合格／失敗の指示をそれぞれの合格／失敗バス３２６を介してプロセッサ・コア２００に供給する。
【００２５】
次に図４を参照すると、Ｌ３キャッシュに関する本発明の実施例の更に詳細なブロック図が示される。図３および図４を比較するとわかるように、Ｌ２キャストアウトをバッファするためのビクティム・キャッシュとして働くＬ３キャッシュ２３２が、図３のＬ２キャッシュ２３０と同様に構成される。従って、Ｌ３キャッシュ２３２は、セット・アソシアティブ・データ・アレイ４１０、データ・アレイ４１０の内容のキャッシュ・ディレクトリ４１２、およびキャッシュ・コントローラ４３０を含む。更に図４に示されるように、キャッシュ・ディレクトリ４１２における各ディレクトリ・エントリは、少なくとも、対応する実アドレスの一部分を利用して、データ・アレイ４１０にストアされた特定のキャッシュ・ラインを指定するタグ・フィールド４１４、キャッシュ・ラインのコヒーレンシ状態を表わす状態フィールド４１６、およびそのキャッシュラインについての置換順序を、同じ合同クラスにおける他のキャッシュ・ラインに関連して表わすＬＲＵ（最低使用頻度）フィールド４１８を含む。Ｌ３キャッシュ２３２が複数のＬ２キャッシュ２３０によって共用され、および／または、Ｌ３キャッシュ２３２がＬ３からＬ３へのキャストアウトを許容するように接続されるような本発明の少なくとも幾つかの実施例では、Ｌ３キャッシュ・ディレクトリ４１２における各エントリは、どのＬ２キャッシュ２３０がそのキャッシュ・ラインのオリジナル・ソースであったかを表わすソース・フィールド４２０を更に含む。
【００２６】
図５を参照すると、本発明に従って、Ｌ２キャッシュがデータ処理システムにおいてプロセッサ（ＣＰＵ）要求をサービスする例示的な方法の高レベルの論理的フローチャートが示される。図示のように、プロセスはブロック５００で開始し、そのブロックは、Ｌ２キャッシュ２３０におけるキャッシュ・コントローラ３３０が処理ユニット１０４における関連のプロセッサ・コア２００からＣＰＵ要求（例えば、ＣＰＵデータ・ロード要求、ＣＰＵデータ・ストア要求、ＣＰＵロードおよび予約要求、ＣＰＵ命令ロード要求等）を受けることを表わす。ブロック５０２では、ＣＰＵ要求を受けたことに応答して、ターゲット実アドレスによりそのＣＰＵ要求内の識別されるターゲット・メモリ・ブロックが、相互接続ファブリック上のオペレーションを生じることなくそのＣＰＵ要求のサービスを許容するコヒーレンシ状態でＬ２キャッシュ・ディレクトリ３１２に保持されているかどうかを、キャッシュ・コントローラ３３０が決定する。例えば、ＣＰＵ命令フェッチ要求またはデータ・ロード要求は、ターゲット・メモリ・ブロックのコヒーレンシ状態がＭ、Ｍｅ、Ｔ、またはＳ状態のいずれかであるということをＬ２キャッシュ・ディレクトリ３１２が表わす場合、相互接続ファブリックにおいてバス・オペレーションを生じることなくサービスされ得る。ＣＰＵデータ・ストア要求は、ターゲット・メモリ・ブロックのコヒーレンシ状態がＭまたはＭｅ状態の一方であるということをキャッシュ・ディレクトリ３１２が表わす場合、相互接続ファブリックにおいてバス・オペレーションを生じることなくサービスされ得る。ＣＰＵ要求が相互接続ファブリックにおいてバス・オペレーションを生じることなくサービスされ得るということを、ブロック５０２においてキャッシュ・コントローラ３３０が決定する場合、キャッシュ・コントローラ３３０は、ブロック５１４に示されるように、ＣＰＵ要求をサービスするためにＬ２データ・アレイ３１０をアクセスする。例えば、キャッシュ・コントローラ３３０は、ＣＰＵデータ・ロード要求または命令フェッチ要求に応答して１つの要求されたメモリ・ブロックを獲得し、その要求されたメモリ・ブロックを要求元のプロセッサ・コア２００に供給し得るか、またはＣＰＵデータ・ストア要求において与えられたデータをＬ２データ・アレイ３１０にストアし得る。ブロック５１４に続いて、プロセスはブロック５２０において終了する。
【００２７】
ブロック５０２に説明を戻すと、ターゲット・メモリ・ブロックが、相互接続ファブリックにおけるバス・オペレーションを生じることなくそのＣＰＵ要求のサービスを許容するコヒーレンシ状態でＬ２キャッシュ・ディレクトリ３１２内に保持されていない場合、ブロック５０４において、既存のＬ２キャッシュ・ラインのキャストアウトがターゲット・メモリ・ブロックをＬ２キャッシュ２３０内に収容することを求められるかまたは収容することが望ましいかどうかの決定が行われる。１つの実施例では、ブロック５０４において、ＣＰＵ要求に応答して要求元のプロセッサのＬ２キャッシュ２３０から排出するためのメモリ・ブロックが選択される場合、キャストアウト・オペレーションが行われ、Ｍ、Ｍｅ、Ｔ、またはＳコヒーレンシ状態のいずれかにあるものとしてＬ２キャッシュ・ディレクトリ３１２においてマークされる。キャストアウトが行われるというブロック５０４における決定に応答して、キャッシュ・コントローラ３３０は、ブロック５０６に表されるように、Ｌ２からＬ３へのキャッシュアウト・オペレーションを遂行する。ブロック５０６に示されたキャストアウト・オペレーションは、後述のように、宛先のＬ３キャッシュ２３２にそれ自身のキャッシュアウトを行わせ得る。キャッシュ・コントローラ３３０は、ブロック５１０に示されるように、相互接続網１１０および１１４を含む相互接続ファブリックにおけるバス・オペレーションを開始する。
【００２８】
バス・オペレーションに応答して、キャッシュ・コントローラ３３０は、そのバス・オペレーションに対するシステムの応答を供給する、結合応答と呼ばれるコヒーレンシ・メッセージを受取る。ブロック５１２において、キャッシュ・コントローラ３３０はその結合応答をテストする。バス・オペレーションが成功したということを結合応答が表わさない場合（例えば、結合応答が「再試行」を表わす場合）、プロセスがブロック５１０に戻ることによって表されるように、キャッシュ・コントローラ３３０はバス・オペレーションを再発行する。一方、ブロック５１２において、キャッシュ・コントローラが「成功」を表わすバス・オペレーションに対する結合応答を受取る場合、プロセスは、コントローラ２３２がＣＰＵ要求をサービスすることを表わすブロック５１４に進む。しかる後、プロセスは、ブロック５２０で終了する。
【００２９】
本発明によれば、キャッシュ・コントローラ３３０、４３０によるキャストアウト・キャッシュラインについてのコヒーレンシ状態の管理（例えば、図５のＬ２キャストアウト・オペレーション５０６およびキャッシュ・ラインのすべてのキャッシュ・ラインの転送）は、プロセッサ・コア２００が排他的所有状態（例えば、ＭまたはＭｅ状態）におけるキャストアウト・キャッシュ・ラインに対して保留の予約を有する可能性を考慮する。キャッシュ・コントローラ３３０、４３０の予約承知の（reservation-aware）コヒーレンシ管理は、下記の点を含む多数の設計要素に基づいて種々の異なる実施例において実現することが可能である。
（１）ソースの高レベル・キャッシュからキャストアウトされる排他的所有状態のキャッシュ・ラインを、宛先の低レベル・キャッシュにおいて共用状態（例えば、Ｔ）に格下げし得るかどうか、
（２）どのようなコヒーレンシ状態のキャストアウトされたキャッシュ・ラインを、２つの低レベル・キャッシュ（例えば、Ｌ３）の間で「水平に」送り得るか、
（３）どのようなコヒーレンシ状態のキャストアウトされたキャッシュ・ラインを、低レベル・キャッシュ（Ｌ３）から高レベル・キャッシュ（Ｌ２）に「垂直に」送り得るか。
本明細書では、５つのそのような実施例を説明することにする。
【００３０】
本発明のコヒーレンシ管理に関する第１および第２実施例では、上位レベル（例えば、Ｌ２）のキャッシュに排他的所有（例えば、ＭまたはＭｅ）状態で保持され、しかる後、下位レベル（例えば、Ｌ３）のキャッシュにキャストアウトされるキャッシュ・ラインのコヒーレンシ状態が初期のキャストアウト・オペレーション中だけキャッシュ・ラインの起り得る予約を明示するように修正される。キャッシュ・ラインがその後他のキャッシュに水平に（例えば、Ｌ３からＬ３に）または垂直に（例えば、Ｌ３からＬ２に）送られる場合、起り得る予約を明示するための更なるコヒーレンシ状態管理は必要ない。第１および第２実施例は、第１実施例では、キャッシュラインについての予約が存在し得るものと仮定して、上位レベル（例えば、Ｌ２）のキャッシュから下位レベル（例えば、Ｌ３）のキャッシュにキャストアウトされる排他的所有状態におけるキャッシュ・ラインが下位レベルのキャッシュにおいて排他的所有状態から共用的所有状態に不正確に格下げされる、という点で異なる。一方、第２実施例は、キャッシュラインについての予約が実際に存在する場合にのみ、そのラインのコヒーレンシ状態を排他的所有状態から共用的所有状態に正確に格下げする。第１および第２実施例では、ソース・フィールド４２０は使用されない。
【００３１】
本発明のコヒーレンシ管理に関する第３、第４、および第５実施例では、上位レベル（例えば、Ｌ２）のキャッシュに排他的所有（例えば、ＭまたはＭｅ）状態で保持され、しかる後、下位レベル（例えば、Ｌ３）のキャッシュにキャストアウトされるキャッシュ・ラインのコヒーレンシ状態は、初期のキャストアウト・オペレーションに続くキャッシュからキャッシュへのキャッシュ・ラインの転送時にのみ、そのキャッシュ・ラインの可能な予約を明示するように修正される。即ち、本発明の第３、第４、および第５実施例では、排他的所有状態（例えば、ＭまたはＭｅ状態）におけるキャッシュ・ラインが同じ排他的所有状態でキャッシュアウトされる。その第３、第４、および第５実施例は、そのようなキャストアウトされたキャッシュ・ラインのコヒーレンシ状態を、必要な場合に格下げする方法が異なる。
【００３２】
第３実施例では、下位レベルのキャッシュは専用の（即ち、単一の上位レベルのキャッシュのみに直接に接続された）ものであり、ソース・フィールド４２０を利用するソース追跡は使用されない。この第３実施例では、排他的所有状態でキャストアウトされたキャッシュ・ラインのコヒーレンシ状態は、そのキャッシュ・ラインがその後（例えば、データ要求に応答して）上位レベルのキャッシュに送り戻される場合には変更されず、キャストアウトされたキャッシュ・ラインの水平方向の（例えば、Ｌ３からＬ３への）転送が許容される場合には、水平方向の（例えば、Ｌ３からＬ３への）転送時に、排他的所有（例えば、ＭまたはＭｅ）コヒーレンシ状態から共用的所有（例えば、Ｔ）コヒーレンシ状態に格下げされる。
【００３３】
第４および第５実施例では、ソース・フィールド４２０を利用したキャッシュ・ラインのコヒーレンシ状態のソース追跡が使用される。第４実施例では、ソース追跡は、例えば、Ｌ２キャッシュ２３０ｂおよび２３０ｃがＬ３キャッシュ２３２ｂに直接接続されるというように、下位レベルのキャッシュ・メモリに直接接続された上位レベルのキャッシュ・メモリに限定される。この第４実施例では、キャッシュ・ラインは、キャストアウトされたキャッシュ・ラインの水平方向の（例えば、Ｌ３からＬ３への）転送時またはソース・キャッシュ以外の上位レベルのキャッシュへの垂直方向の（例えば、Ｌ３からＬ２への）転送時には排他的所有（例えば、ＭまたはＭｅ）コヒーレンシ状態から共用的所有（例えば、Ｔ）コヒーレンシ状態に格下げされるが、上位レベルのソース・キャッシュへの垂直方向の転送時には排他的所有状態のままである。
【００３４】
第５実施例では、下位レベルのキャッシュ・メモリにおけるソース追跡が同じ処理ユニットにおけるすべての上位レベルのキャッシュ・メモリ（例えば、すべてのＬ２キャッシュ２３０ａ〜２３０ｄ）に拡張される。第５実施例では、キャストアウトされたキャッシュ・ラインは、そのキャストアウトされたキャッシュ・ラインのすべての水平方向の（例えば、Ｌ３からＬ３への）転送時または上位レベルのソース・キャッシュへの垂直方向の（例えば、Ｌ３からＬ２への）転送時には排他的所有状態のままであることを許容されるが、ソース・キャッシュ以外の上位レベルのキャッシュへの垂直方向の（例えば、Ｌ３からＬ２への）転送時には排他的所有状態から共用的所有（例えば、Ｔ）状態に格下げされる。下位レベルのキャッシュ相互間での排他的所有状態におけるキャストアウトされたキャッシュ・ラインの水平方向の転送を許容するために、下位レベルのキャッシュ相互間の転送はソース・フィールド４２０からのソース追跡情報を含む。
【００３５】
本発明の上記の実施例が排他的でないことは明らかであろう。実際に、第１乃至第４実施例のいずれかを、任意の数の第１乃至第４実施例と関連して、１つのデータ処理システムにおいて使用することも可能である。更に、本発明の第５実施例を具現化する任意の処理ユニットにおけるすべてのキャッシュ・メモリが第５実施例を具現化するように構成される限り、その第５実施例を１つまたはそれ以上の他の実施例と共に同じデータ処理ユニットにおいて使用することも可能である。
【００３６】
次に図６を参照すると、本発明の第１および第２実施例による例示的なＬ２キャストアウト・プロセスの高レベルの論理的フローチャートが示される。図示のように、プロセスは、例えば、ＣＰＵ要求をサービスするためにＬ２キャストアウト・オペレーションが遂行されなければならない図５のブロック５０４におけるＬ２キャッシュ・コントローラ３３０による決定に応答して、ブロック６００で開始する。そこで、プロセスはブロック６０２に進む。ブロック６０２では、例えば、ＣＰＵ要求のターゲット・アドレスがマップする合同クラスにおけるディレクトリ・エントリのＬＲＵフィールド３１８を参照することによって、キャッシュ・コントローラ３３０が、キャストアウトすべきキャッシュ・ラインを選択する。次に、ブロック６０４において、キャッシュ・コントローラ３３０は、状態フィールド３１６が、キャストアウト・オペレーションの開始直前にキャッシュに対して排他的所有状態（例えば、ＭまたはＭｅ）を表わしていたかどうかを決定する。その決定が否定的である場合、プロセスはブロック６１４に進む。ブロック６１４において、キャッシュ・コントローラ３３０は、データのキャッシュ・ラインと、それの実アドレスと、キャッシュ・ディレクトリ３１２に記録されたコヒーレンシ状態とを含むキャストアウト要求を関連のＬ３キャッシュ２３２に送る。関連のＬ３キャッシュ２３２のキャッシュ・コントローラ４３０がデータ・アレイ４１０にそのキャッシュ・ラインを収納し、キャストアウト要求の内容に基づいてキャッシュ・ディレクトリ４１２における対応するエントリのタグ・フィールド４１４、状態フィールド４１６、およびＬＲＵフィールド４１８を更新する。この場合、キャストアウト・オペレーションによる、そのキャッシュラインについてのコヒーレンシ状態の変更は行われない。ブロック６１４に続いて、プロセスはブロック６２０において終了する。
【００３７】
ブロック６０４に説明を戻すと、キャストアウトされるべきキャッシュが排他的所有状態にあるという決定に応答して、Ｌ２キャッシュ・コントローラ３３０は、必要な場合、ブロック６１０、６１２に示されるように、キャッシュ・ラインの状態を格下げする。コヒーレンシ状態の格下げが不明確に行われる本発明の第１実施例では、キャッシュ・コントローラ３３０は動作ブロック６１０に示された決定を省略し、キャストアウトされるべきキャッシュ・ラインのコヒーレンシ状態を排他的所有状態（例えば、ＭまたはＭｅ）から共用的所有状態（例えば、Ｔ）に格下げする。そこで、キャッシュ・コントローラ３３０は、共用的所有状態（例えば、Ｔ）を指定するキャストアウト要求を関連のＬ３キャッシュ２３２に発生し（ブロック６１４）、それによって、そのキャッシュラインについてのすべてのその後の更新が、その更新を知る必要のあるすべてのキャッシュにとって可視的に行われることを保証する。上述のように、ブロック６１４に示されたキャストアウト・オペレーションは、更に、後述のように、宛先のＬ３キャッシュ２３２にそれ自身のキャストアウトを行わせることが可能である。しかる後、プロセスはブロック６２０において終了する。
【００３８】
代替方法として、本発明の第２実施例では、ブロック６１０に示されるように、現在、キャッシュ・ラインにとって予約が保留中であることを予約アドレス・フィールド３２２および予約フラッグ３２４が表わしているかどうかを決定するために、キャッシュ・コントローラ３３０が予約ロジック３２０のチェックを行う。そのキャッシュ・ラインのアドレスに対する予約が現在保留中でないということをキャッシュ・コントローラ３３０が決定する場合、キャッシュ・コントローラ３３０は、キャストアウトされるべきキャッシュ・ラインのコヒーレンシ状態を格下げせず、プロセスはブロック６１０から前述のブロック６１４に直接に進む。一方、キャストアウトされるべきキャッシュ・ラインの予約が関連のプロセッサ２００では実行中のスレッドの１つによって現在保持されているということをキャッシュ・コントローラ３３０が決定する場合、キャッシュ・コントローラ３３０は、ブロック６１２に関連して説明したように、キャッシュ・ライン要求におけるキャッシュ・ラインのコヒーレンシ状態を明確に格下げする。
【００３９】
従って、本発明の第１および第２実施例は、キャッシュ・ラインが上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリにキャストアウトされるとき、キャッシュ・ラインのコヒーレンシ状態を格下げする。キャッシュ・ラインに関する予約の可能性を明示するためには、キャストアウト・キャッシュ・ラインの更なるコヒーレンシ管理は必要ない。（もちろん、例えば、相互接続ファブリックにおけるスヌーピング・オペレーションに応答して、キャッシュ・ラインの一般的なコヒーレンシ管理が実施される）。
【００４０】
次に図７を参照すると、本発明の第３、第４、および第５実施例によるコヒーレンシ管理の例示的方法に関する高レベルのフローチャートが示される。上述のように、本発明の第３、第４、および第５実施例では、上位レベル（例えば、Ｌ２）のキャッシュに排他的所有（例えば、ＭまたはＭｅ）状態に保持され、その後、下位レベル（例えば、Ｌ３）のキャッシュにキャストアウトされるキャッシュ・ラインのコヒーレンシ状態は、必要な場合、初期のキャストアウト・オペレーションに続いてキャッシュ・ラインのキャッシュ間転送時にのみキャッシュ・ラインの可能な予約を明示するように修正される。
【００４１】
図示のプロセスはブロック７００で始まり、ブロック７０２に進む。ブロック７０２では、Ｌ３キャッシュ・コントローラ４３０が、垂直方向に接続されたＬ２キャッシュ２３２から要求を受取る。Ｌ２キャストアウト要求またはデータ要求であってもよいその要求は、少なくともターゲット・アドレスと、Ｌ２キャストアウト要求の場合、Ｌ３データ・アレイ４１０においてキャッシュされるべきデータのキャッシュ・ラインとを指定する。その要求を受けたことに応答して、キャッシュ・コントローラ４３０は、ブロック７０４において、要求のタイプを決定する。要求がＬ２キャストアウト（ＣＯ）要求であるということをキャッシュ・コントローラ４３０が決定する場合、キャッシュ・コントローラ４３０は、ブロック７１０〜７１４に示されるように、その要求をサービスする。要求がデータ要求であるということをキャッシュ・コントローラ４３０が決定する場合、キャッシュ・コントローラ４３０は、ブロック７２０〜７２８に示されるように、その要求をサービスする。
【００４２】
要求がＬ２キャストアウト要求である場合、キャッシュ・コントローラ４３０は、ブロック７１０において、垂直方向に接続されたＬ２キャッシュ２３２から受けたキャストアウト・キャッシュ・ラインを収容するためのＬ３キャッシュアウトを行うべきかどうかを決定する。本発明によれば、少なくとも、Ｌ３キャッシュから排出するために選択されたキャッシュ・ラインが排他的所有コヒーレンシ状態または共用的所有コヒーレンシ状態のいずれかにあるときに、Ｌ３キャストアウトが遂行される。ブロック７１０において、遂行されるべきキャッシュアウトがないということをキャッシュ・コントローラ４３０が決定する場合、プロセスはブロック７１４に進み、キャッシュ・ライン・データを用いてデータ・アレイ４１０を更新することおよびキャッシュ・ディレクトリ４１２の対応するエントリを更新することによって、Ｌ３キャッシュ・コントローラ４３０は、Ｌ２キャッシュ２３０から受取ったキャッシュ・ラインのキャストインを遂行する。キャッシュ・ディレクトリ４１２を更新する場合、キャッシュ・コントローラ４３０は、キャッシュ・ライン・アドレスの一部分を用いてエントリのタグ・フィールド４１４を更新し、Ｌ２キャストアウト要求において指定されたコヒーレンシ状態を用いて状態フィールド４１６を更新し、最高使用頻度（ＭＲＵ）を反映するようにＬＲＵフィールド４１８を更新し、そしてキャッシュ・コントローラ４３０が本発明の第４および第５実施例を具現化する場合にＬ２キャストアウト要求のソースであったＬ２キャッシュ２３０を識別するためにソース・フィールド４２０を更新する。上述のように、Ｌ３キャッシュ・コントローラ４３０が本発明の第３実施例を具現化する場合、ソース・フィールド４２０がキャッシュ・ディレクトリ４１２から省かれ、ソース・フィールドに対する更新は行われない。ブロック７１４に続いて、プロセスはブロック７４０において終了する。
【００４３】
ブロック７１０に説明を戻すと、Ｌ２キャッシュ２３０から受けたキャッシュ・ラインを収容するために排出されたＬ３キャッシュラインについてのＬ３キャストアウトが行われなければならないということをＬ３キャッシュ・コントローラ４３０が決定する場合、Ｌ３キャッシュ・コントローラ４３０は、ブロック７１４に示されたキャストイン・オペレーションに加えて、Ｌ３キャストアウトを行う。Ｌ３キャッシュ２３２が他のＬ３キャッシュ２３２に「水平方向に」接続されてない場合、Ｌ３キャッシュ・コントローラ４３０は、ブロック７１２において、システム・メモリ１０８に対して通常のＬ３キャストアウトを行う。しかし、Ｌ３キャッシュ２３２が他のＬ３キャッシュ２３２に「水平方向に」接続されている（例えば、Ｌ３キャッシュ２３２ｂがＬ３キャッシュ２３２ａおよび２３２ｄに接続されている）場合、Ｌ３キャッシュ・コントローラ４３０は、ブロック７１２において、Ｌ３からＬ３へのキャストアウトを行うことが可能である。上述のように、図８に関連して更に詳細に説明される本発明の第３および第４実施例では、排他的所有状態におけるキャッシュ・ラインがＬ３からＬ３へのキャストアウト時に共用的所有状態に格下げされる。しかし、図９に関連して後述する本発明の第５実施例では、そのようなコヒーレンシ状態の格下げは適用されない。
【００４４】
再びブロック７０４を参照すると、垂直方向に接続されたＬ２キャッシュ２３０から受けた要求がデータ要求であるということをキャッシュ・コントローラ４３０が決定する場合、Ｌ３キャッシュ・コントローラ４３０は、その要求のターゲット・アドレスがキャッシュ・ヒットという結果を生じるかどうかを決定するためにキャッシュ・ディレクトリ４１２をアクセスする。その結果が否定的である場合、プロセスは、ブロック７４０において終了する。しかし、要求の指定されたターゲット・アドレスがキャッシュ・ディレクトリ４１２においてヒットする場合、キャッシュ・コントローラ４３０は、ブロック７２２において、ターゲット・アドレスが排他的所有（例えば、ＭまたはＭｅ）コヒーレンシ状態でキャッシュ・ディレクトリ４１２においてヒットするかどうかを決定する。その結果が否定的である場合、キャッシュ・コントローラ４３０は、ブロック７２８に示されるように、要求されたキャッシュ・ラインおよびそのコヒーレンシ状態の指示を要求元のＬ２キャッシュ２３０に供給するだけである。しかる後、プロセスはブロック７４０において終了する。
【００４５】
ブロック７２２における、Ｌ２データ要求のターゲット・アドレスが排他的所有状態でキャッシュ・ディレクトリ４１２においてヒットするという決定に応答して、ブロック７２４において、要求元のＬ２キャッシュ２３０が、そのキャッシュ・ラインをＬ３キャッシュ２３２に取込んだキャストアウト・オペレーションのソースであったかどうかに関する決定が行われる。キャッシュ・コントローラ４３０が本発明の第３実施例を具現化する場合、ブロック７２４に示された決定は肯定的であり、その設計により非明示的に行われる。一方、Ｌ３キャッシュ・コントローラ４３０が本発明の第４および第５実施例を具現化する場合（例えば、そのＬ３キャッシュ・コントローラが垂直方向に接続された複数のＬ２キャッシュ２３０によるＬ３キャッシュ２３０の共用（例えば、Ｌ３キャッシュ２３２ｂが、垂直方向に接続されたＬ２キャッシュ２３０ｂ〜２３０ｃによって共用されるとき）によって、或いは、Ｌ３からＬ３へのキャストアウトを支援するためにＬ３キャッシュ２３２の水平方向接続によって、複数の可能なソースのＬ２キャッシュ２３０に接続される場合）、キャッシュ・コントローラ４３０は、キャッシュ・ディレクトリ４１２における関連のソース・フィールド４２０を参照することにより、ブロック７２４に示された決定を明示的に行う。
【００４６】
ブロック７２４における肯定的な決定に応答して、要求されたキャッシュ・ラインのコヒーレンシ状態に対する格下げは適用されず、プロセスは上述のブロック７２８に進む。一方、ブロック７２４において、キャッシュ・コントローラ４３０が否定的な決定を行う場合、プロセスはブロック７２６に進む。ブロック７２６では、キャッシュ・コントローラ４３０は、ブロック７２８においてキャッシュ・ラインを要求元のＬ２キャッシュ２３０に供給する前に、要求されたキャッシュ・ラインのコヒーレンシ状態を排他的所有状態から共用的所有（例えば、Ｔ）状態に格下げする。コヒーレンシ状態の格下げは、キャッシュラインについてのその後のすべての更新が、予約管理のための更新を知る必要のあるすべてのキャッシュにとって可視的に行われるということを保証する。しかる後、プロセスはブロック７４０において終了する。
【００４７】
次に図８を参照すると、本発明の第３、および第４実施例に従ってキャッシュ・ラインについてのコヒーレンシ状態の格下げを排他的所有状態に加える例示的な、Ｌ３からＬ３へのキャストアウト・プロセスに関する高レベルの論理的フローチャートが示される。上述のように、本発明の第１、第２、および第５実施例は、Ｌ３からＬ３へのキャストアウト時に排他的所有状態におけるキャッシュ・ラインに対してそのようなコヒーレンシ状態の格下げを適用しない。
【００４８】
図示のように、プロセスは、例えば、Ｌ２キャストアウト要求をサービスするためにはＬ３キャストアウト・オペレーションを行わなければならないという、図７のブロック７１０におけるＬ３キャッシュ・コントローラ４３０による決定に応答して開始する。次にプロセスはブロック８０２に進む。ブロック８０２では、キャッシュ・コントローラ４３０が、例えば、Ｌ２キャストアウト要求のターゲット・アドレスがマップする合同クラスにおけるディレクトリ・エントリのＬＲＵフィールド４１８を参照することによって、キャストアウトすべきキャッシュ・ラインを選択する。次に、ブロック８０４において、キャッシュ・コントローラ４３０は、状態フィールド４１６が、キャストアウト・オペレーションの開始直前にキャッシュラインについての排他的所有状態（例えば、ＭまたはＭｅ）を表わしたかどうかを決定する。その結果が否定的である場合、プロセスはブロック８０８に進む。ブロック８０８では、キャッシュ・コントローラ４３０が、データのキャッシュ・ラインと、その実アドレスと、キャッシュ・ディレクトリ４１２内に記録されたコヒーレンシ状態とを他のＬ３キャッシュ２３２に送る。他のＬ３キャッシュ２３２のキャッシュ・コントローラ４３０は、そのキャッシュ・ラインをデータ・アレイ４１０に収納し、キャストアウト要求の内容に基づいてそのキャッシュ・ディレクトリ４１２における対応するエントリのタグ・フィールド４１４、状態フィールド４１６、およびＬＲＵフィールド４１８を更新する。宛先のＬ３キャッシュ２３２は、システム・メモリ１０８に対してすべての必要なキャストアウトを遂行する。この場合、キャッシュ・ラインに対して、キャストアウト・オペレーションによるコヒーレンシ状態の変更は行われない。ブロック８０８に続いて、プロセスはブロック８１０において終了する。
【００４９】
ブロック８０４に説明を戻すと、キャストアウトされるべきキャッシュ・ラインが排他的所有状態にあるという決定に応答して、Ｌ３キャッシュ・コントローラ４３０は、ブロック８０６に示されるように、キャッシュ・ラインの状態を排他的所有状態（例えば、ＭまたはＭｅ）から共用的所有状態（例えば、Ｔ）に格下げする。次に、Ｌ３キャッシュ・コントローラ４３０は、共用的所有状態（例えば、Ｔ）を指定するＬ３キャストアウト要求を他のＬ３キャッシュ２３２に発生し、それによって、キャッシュラインについてのいずれのその後の更新も、予約管理に関する更新を知る必要のあるすべてのキャッシュにとって可視的に行われることを保証する（ブロック８０８）。しかる後、プロセスはブロック８１０において終了する。
【００５０】
次に図９を参照すると、本発明の第５実施例による例示的なＬ３からＬ３へのキャストアウト・プロセスの高レベルの論理的フローチャートが示される。上述のように、本発明の第５実施例は、Ｌ３からＬ３へのキャストアウト時に排他的所有状態におけるキャッシュ・ラインにコヒーレンシ状態の格下げを適用しないで、Ｌ３からＬ３へのキャストアウトと関連したソース追跡情報を送る。
【００５１】
図示のように、プロセスは、ブロック８２０において、例えば、Ｌ３キャストアウト・オペレーションがＬ２キャストアウト要求をサービスするために行われなければならない、図７のブロック７１０におけるＬ３キャッシュ・コントローラ４３０による決定に応答して開始する。次に、プロセスは、キャストアウトすべきキャッシュ・ラインをＬ３キャッシュ・コントローラ４３０が選択することを示すブロック８２２に進む。そのキャッシュ・ラインの選択は、例えば、Ｌ２キャストアウト要求のターゲット・アドレスがマップする合同クラスにおけるディレクトリ・エントリのＬＲＵフィールド４１８を参照することによって行われる。次に、ブロック８２４において、キャッシュ・コントローラ４３０は、状態フィールド４１６が、キャストアウト・オペレーションの開始直前にそのキャッシュラインについての排他的所有状態（例えば、ＭまたはＭｅ）を表わしたかどうかを決定する。その結果が否定的である場合、プロセスはブロック８２８に進む。ブロック８２８では、キャッシュ・コントローラ４３０が、データのキャッシュ・ラインと、その実アドレスと、キャッシュ・ディレクトリ４１２に記録されたコヒーレンシ状態とを含むＬ３キャストアウト要求を他のＬ３キャッシュ２３２に送る。他のＬ３キャッシュ２３２のキャッシュ・コントローラ４３０は、そのキャッシュ・ラインをキャッシュ・アレイ４１０に収納し、キャストアウト要求の内容に基づいてそのキャッシュ・ディレクトリ４１２における対応するエントリのタグ・フィールド４１４、状態フィールド４１６、およびＬＲＵフィールド４１８を更新する。ディレクトリ・エントリのソース・フィールド４２０に対する更新は行われない。Ｌ３キャストアウト要求をサービスする場合、宛先のＬ３キャッシュ２３２はシステム・メモリ１０８に対する任意の必要なキャストアウトを行う。ブロック８２８に続いて、プロセスはブロック８３０において終了する。
【００５２】
ブロック８２４に説明を戻すと、キャスアウトされるべきキャッシュ・ラインが排他的所有状態にあるという決定に応答して、Ｌ３キャッシュ・コントローラ４３０は、データのキャッシュ・ラインと、その実アドレスと、キャッシュ・ディレクトリ４１２における関連のディレクトリ・エントリの状態フィールド４１６およびソース・フィールド４２０に記録されたコヒーレンシ状態およびソース追跡情報とを含むＬ３キャストアウト要求を形成する（ブロック８２６）。次に、Ｌ３キャッシュ・コントローラ４３０は、ブロック８２８に示されるように、Ｌ３キャストアウト要求を他のＬ３キャッシュ２３２に発生する。この場合、宛先のＬ３キャッシュ２３２のキャッシュ・コントローラ４３０はシステム・メモリ１０８に対する任意の必要なキャストアウトを行い、しかる後、Ｌ３キャストアウト要求によって表わされたキャストインを行う。特に、宛先のＬ３キャッシュ２３２のキャッシュ・コントローラ４３０はそのデータ・アレイ４１０にキャッシュ・ラインを収納し、Ｌ３キャストアウト要求の内容に基づいてそのキャッシュ・ディレクトリ４１２における対応するエントリのタグ・フィールド４１４、状態フィールド４１６、ＬＲＵフィールド４１８、およびソース・フィールド４２０を更新する。しかる後、プロセスはブロック８３０において終了する。
【００５３】
前述したように、本発明は、機能強化された予約承知のコヒーレンシ管理を提供する改良されたデータ処理システム、プロセッサ、およびデータ処理方法を提供する。或る実施例では、排他的所有状態におけるキャッシュ・ラインのコヒーレンシ状態が、上位レベルのキャッシュに存在する予約を明示するために、必要な場合、上位レベルのキャッシュから下位レベルのキャッシュに格下げされる。別の実施例では、排他的所有状態におけるキャストアウト・キャッシュのコヒーレンシ状態が、キャストアウト・キャッシュ・ラインを上位レベルのキャッシュに垂直方向にまたは下位レベルのキャッシュに水平方向に転送する際、必要な場合、格下げされる。いずれの場合も、キャストアウト・キャッシュ・ラインのコヒーレンシ状態は排他的所有状態から共用的所有状態（例えば、Ｔ）のような共用状態に格下げされる。共用的所有状態の使用は、宛先のキャッシュが、キャッシュ間のデータ介在によって他のキャッシュに対してキャストアウト・キャッシュ・ラインのソースを明示することを可能にし、キャッシュ・ラインがキャッシュ・コヒーレンシから排出される場合に、修正されたデータが失われないことを保証する。
【００５４】
好適な実施例に関連して説明したように本発明を詳細に示したが、本発明の真意および範囲を逸脱することなく形式および細部における種々の変更を行い得ることは当業者には明らかであろう。例えば、本発明はＬ１、Ｌ２、およびＬ３キャッシュが処理ユニット内に組み込まれているメモリ・ハイアラーキの特定の実施例に関連して説明されているが、追加のレベルのインライン・キャッシュ、ルックアサイド・キャッシュまたはビクティム・キャッシュを使用することが可能であること、および、実施例によっては、１つまたはそれ以上のキャッシュがオフ・チップであってもよいことは当業者には明らかであろう。更に、特定のコヒーレンシ状態を有する例示的なコヒーレンシ・プロトコルに関して本発明を説明したが、異なるまたは追加の状態名および／または状態定義を使用し得るということも明らかである。
【図面の簡単な説明】
【００５５】
【図１】本発明による例示的なデータ処理システムの高レベルのブロック図である。
【図２】図１のデータ処理システムにおける処理ユニットの実施例のより詳細なブロック図である。
【図３】図２の処理ユニットにおけるプロセッサ・コアおよびＬ２キャッシュのより詳細なブロック図である。
【図４】図２の処理ユニットにおけるＬ３キャッシュのより詳細なブロック図である。
【図５】図１のデータ処理システムにおけるプロセッサ・コアから受けたオペレーションをＬ２キャッシュ・メモリがサービスする例示的な方法の高レベルの論理的フローチャートである。
【図６】本発明の第１および第２実施例に従ってＬ２キャッシュ・メモリがキャストアウト・オペレーションを遂行する例示的な方法の高レベルの論理的フローチャートである。
【図７】本発明の第３、第４、および第５実施例に従って、Ｌ２キャッシュ・メモリから受けたオペレーションをＬ３キャッシュ・メモリがサービスする例示的な方法の高レベルの論理的フローチャートである。
【図８】本発明の第３および第４実施例に従って、Ｌ３からＬ３へのキャストアウト・オペレーションを遂行する例示的な方法の高レベルの論理的フローチャートである。
【図９】本発明の第５実施例に従って、Ｌ３からＬ３へのキャストアウト・オペレーションを遂行する例示的な方法の高レベルの論理的フローチャートである。
【符号の説明】
【００５６】
１００  データ処理システム
１０２ａ、１０２ｂ  処理ノード
１０４ａ〜１０４ｄ  処理ユニット
１１０  システム相互接続網
１１４  ローカル相互接続網
【図１】
2008077650.tif 000004
【図２】
2008077650.tif 000005
【図３】
2008077650.tif 000006
【図４】
2008077650.tif 000007
【図５】
2008077650.tif 000008
【図６】
2008077650.tif 000009
【図７】
2008077650.tif 000010
【図８】
2008077650.tif 000011
【図９】
2008077650.tif 000012