(57)【要約】【課題】  データ処理システム内のメモリ・ブロックを初期設定するプロセッサ、データ処理システム、および方法を提供することにある。【解決手段】  初期設定すべきターゲット・メモリ・ブロックを示す関連プロセッサ・コアからの初期設定動作を受信したことに応答して、キャッシュ・メモリはターゲット・メモリ・ブロックのコヒーレンス状態を決定する。ターゲット・メモリ・ブロックがキャッシュ・メモリに対するデータ無効コヒーレンス状態を有するという判断に応答して、キャッシュ・メモリは、ターゲット・メモリ・ブロックを示す対応する初期設定要求を相互接続上で発行する。初期設定要求に応答して、ターゲット・メモリ・ブロックはデータ処理システムのメモリ内で初期設定値に初期設定される。したがって、ターゲット・メモリ・ブロックは、キャッシュ・メモリによりターゲット・メモリ・ブロックの有効なコピーを保持せずに初期設定することができる。【選択図】  図１
2006323845.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システム内のデータ処理の方法であって、
初期設定すべきターゲット・メモリ・ブロックを示す関連プロセッサ・コアからの初期設定動作をキャッシュ・メモリが受信したことに応答して、前記キャッシュ・メモリが前記キャッシュ・メモリに対する前記ターゲット・メモリ・ブロックのコヒーレンシ状態を決定するステップと、
前記ターゲット・メモリ・ブロックが前記キャッシュ・メモリに対するデータ無効コヒーレンシ状態を有するという判断に応答して、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックを示す対応する初期設定要求を発行するステップと、
前記初期設定要求に応答して、前記キャッシュ・メモリにより前記ターゲット・メモリ・ブロックの有効なコピーを保持せずに、前記データ処理システムのメモリ内の前記ターゲット・メモリ・ブロックを初期設定値に初期設定するステップと、
を有する方法。
【請求項２】
前記初期設定するステップが、システム・メモリのメモリ・コントローラが前記システム・メモリ内の前記ターゲット・メモリ・ブロックを前記初期設定値に初期設定するステップを有する、請求項１に記載の方法。
【請求項３】
前記初期設定するステップが、他のキャッシュ・メモリが前記初期設定要求をスヌープし、それに応答して、前記ターゲット・メモリ・ブロックのそのコピーを前記初期設定値に初期設定するステップをさらに有する、請求項２に記載の方法。
【請求項４】
他のキャッシュ・メモリが前記初期設定要求をスヌープし、それに応答して、前記ターゲット・メモリ・ブロックのそのコピーをデータ無効コヒーレンシ状態に更新するステップをさらに有する、請求項１に記載の方法。
【請求項５】
前記ターゲット・メモリ・ブロックが他のプロセッサ・コアに関連する他のキャッシュ・メモリによってキャッシュされないことを示す変更コヒーレンシ状態を前記ターゲット・メモリ・ブロックが有するという判断に応答して、前記キャッシュ・メモリが対応する初期設定要求を発行せずに前記メモリ・ブロックを前記キャッシュ・メモリのデータ・アレイ内で前記初期設定値に初期設定するステップをさらに有する、請求項１に記載の方法。
【請求項６】
前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックに関する最高コヒーレンシ点であることを示すコヒーレンシ状態を前記ターゲット・メモリ・ブロックが有し、他のプロセッサ・コアに関連する他のキャッシュ・メモリによって前記ターゲット・メモリ・ブロックをキャッシュすることができるという判断に応答して、前記キャッシュ・メモリが、
初期設定要求を発行するステップと、
他のプロセッサ・コアに関連する他のキャッシュ・メモリのいずれも前記ターゲット・メモリ・ブロックの有効なコピーを保持しないことを示す前記初期設定要求に対する応答の受信に応答して、前記ターゲット・メモリ・ブロックをそのデータ・アレイ内で前記初期設定値に初期設定するステップと、
をさらに有する、請求項１に記載の方法。
【請求項７】
相互接続と、システム・メモリと、前記相互接続に結合されたメモリ・コントローラとを含むデータ処理システム用の処理装置であって、
プロセッサ・コアと、
前記相互接続および前記プロセッサ・コアに結合されたキャッシュ・メモリであって、初期設定すべきターゲット・メモリ・ブロックを示す初期設定動作を前記プロセッサ・コアから受信したことに応答して、前記キャッシュ・メモリに対する前記ターゲット・メモリ・ブロックのコヒーレンシ状態を決定し、前記ターゲット・メモリ・ブロックが前記キャッシュ・メモリに対するデータ無効コヒーレンシ状態を有するという判断に応答して、前記ターゲット・メモリ・ブロックのそのコピーを初期設定値に初期設定するように他のキャッシュ・メモリおよび前記メモリ・コントローラのうちの少なくとも一方に要求する対応する初期設定要求を前記相互接続上で発行し、前記キャッシュ・メモリにより前記ターゲット・メモリ・ブロックの有効なコピーを保持せずに前記ターゲット・メモリ・ブロックが初期設定されるようにするキャッシュ・メモリと、
を有する処理装置。
【請求項８】
請求項７に記載の処理装置と、
前記相互接続と、
前記相互接続に結合された前記システム・メモリおよび前記メモリ・コントローラと、
前記他のキャッシュ・メモリと、
を有し、
前記初期設定要求に応答して、前記他のキャッシュ・メモリと前記メモリ・コントローラを含む組のうちの少なくとも一つが、前記ターゲット・メモリ・ブロックを前記初期設定値に初期設定する、データ処理システム。
【請求項９】
前記他のキャッシュ・メモリおよび前記メモリ・コントローラのそれぞれが、前記相互接続上で前記初期設定要求をスヌープしたことに応答して、前記ターゲット・メモリ・ブロックのそれぞれのコピーを前記初期設定値に初期設定する、請求項８に記載のデータ処理システム。
【請求項１０】
前記他のキャッシュ・メモリが、前記相互接続上で前記初期設定要求をスヌープしたことに応答して、前記ターゲット・メモリ・ブロックのそのコピーをデータ無効コヒーレンシ状態に更新する、請求項８に記載のデータ処理システム。
【請求項１１】
初期設定すべきターゲット・メモリ・ブロックを示す初期設定動作をプロセッサ・コアが関連キャッシュ・メモリに伝送するステップと、
前記初期設定動作を前記キャッシュ・メモリが受信したことに応答して、前記キャッシュ・メモリが前記キャッシュ・メモリに対する前記ターゲット・メモリ・ブロックのコヒーレンシ状態を決定するステップと、
前記ターゲット・メモリ・ブロックが前記キャッシュ・メモリに対するデータ無効コヒーレンシ状態を有するという判断に応答して、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックを示す対応する初期設定要求を発行するステップと、
前記初期設定要求に応答して、前記キャッシュ・メモリにより前記ターゲット・メモリ・ブロックの有効なコピーを保持せずに、データ処理システムのメモリ内の前記ターゲット・メモリ・ブロックを初期設定値に初期設定するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データ処理に関し、特に、データ処理システム内のメモリ・ブロックの初期設定に関する。
【背景技術】
【０００２】
本発明は、米国特許出願第１１／０５５３０５号の発明に関連している。
【０００３】
サーバ・コンピュータ・システムなどの従来の対称型マルチプロセッサ（ＳＭＰ）コンピュータ・システムは、すべてがシステム相互接続に結合された複数の処理装置を含み、そのシステム相互接続は概して１つまたは複数のアドレス・バス、データ・バス、および制御バスを有する。システム・メモリはシステム相互接続に結合されているが、これはマルチプロセッサ・コンピュータ・システム内の最低レベルの揮発性メモリを表し、一般にすべての処理装置による読取りおよび書込みアクセスのためにアクセス可能である。システム・メモリ内にある命令およびデータに対するアクセス待ち時間を削減するために、各処理装置は概して、それぞれのマルチレベル・キャッシュ階層によってさらにサポートされ、その階層の下位レベル（複数も可）は１つまたは複数のプロセッサ・コアによって共用することができる。
【０００４】
複数のプロセッサ・コアが同じキャッシュ・ラインのデータへの書込みアクセスを要求する可能性があり、変更されたキャッシュ・ラインは直ちにシステム・メモリと同期するわけではないので、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は概して、システム・メモリの内容に関する様々なプロセッサ・コアの「ビュー」間で少なくとも最低レベルのコヒーレンシを保証するために、キャッシュ・コヒーレンシ・プロトコルを実装する。特に、キャッシュ・コヒーレンシは最低でも、処理装置があるメモリ・ブロックのコピーにアクセスし、その後、そのメモリ・ブロックの更新済みコピーにアクセスした後に、処理装置がそのメモリ・ブロックの古いコピーにもう一度アクセスできないことを要求する。
【０００５】
キャッシュ・コヒーレンシ・プロトコルは概して、各キャッシュ階層のキャッシュ・ラインに関連して保管された１組のコヒーレンシ状態ならびにキャッシュ階層間でキャッシュ状態情報を通信するために使用される１組のコヒーレンシ・メッセージを定義する。典型的な実装例では、コヒーレンシ状態情報は周知のＭＥＳＩ（変更、排他、共用、無効）プロトコルまたはその変種の形を取り、コヒーレンシ・メッセージはメモリ・アクセス要求の要求元または受信側あるいはその両方のキャッシュ階層内のプロトコル定義のコヒーレンシ状態遷移を示す。
【０００６】
本発明では、命令の実行によりＳＭＰコンピュータ・システム内のメモリ・ブロックを初期設定することが有用であり望ましいであろうと認識している。本発明ではさらに、メモリ・ブロックをキャッシュすることを必要とせずに初期設定を実行することにより、コンピュータ・システムのキャッシュ階層の汚染を回避することが望ましいであろうと認識している。
【特許文献１】米国特許出願第１１／０５５３０５号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、本発明は、データ処理システム内のメモリ・ブロックを初期設定するプロセッサ、データ処理システム、および方法を提供する。
【課題を解決するための手段】
【０００８】
一実施形態では、初期設定すべきターゲット・メモリ・ブロックを示す関連プロセッサ・コアからの初期設定動作を受信したことに応答して、キャッシュ・メモリはターゲット・メモリ・ブロックのコヒーレンシ状態を決定する。ターゲット・メモリ・ブロックがキャッシュ・メモリに対するデータ無効コヒーレンシ状態を有するという判断に応答して、キャッシュ・メモリは、ターゲット・メモリ・ブロックを示す対応する初期設定要求を相互接続上で発行する。初期設定要求に応答して、ターゲット・メモリ・ブロックはデータ処理システムのメモリ内で初期設定値に初期設定される。したがって、ターゲット・メモリ・ブロックは、キャッシュ・メモリによりターゲット・メモリ・ブロックのコピーを保持せずに初期設定することができる。
【０００９】
本発明のすべての目的、特徴、および利点は、以下の詳細な説明で明らかになるであろう。
【００１０】
本発明に特有と思われる新規の特徴は特許請求の範囲に示されている。しかし、本発明ならびに好ましい使用態様は、添付図面に併せて読んだときに、例示的な一実施形態に関する以下の詳細な説明を参照することにより、最も良く理解されるであろう。
【発明を実施するための最良の形態】
【００１１】
Ｉ．例示的なデータ処理システム
次に、図面、特に図１に関連して説明すると、本発明によるキャッシュ・コヒーレント対称型マルチプロセッサ（ＳＭＰ）データ処理システムの例示的な一実施形態のハイレベル・ブロック図が示されている。図示の通り、データ処理システム１００は、データおよび命令を処理するための複数の処理ノード１０２ａ、１０２ｂを含む。処理ノード１０２ａ、１０２ｂは、アドレス、データ、および制御情報を搬送するためにシステム相互接続１１０に結合されている。システム相互接続１１０は、たとえば、バス状相互接続、交換相互接続、またはハイブリッド相互接続として実装することができる。
【００１２】
図示された実施形態では、各処理ノード１０２は、それぞれが好ましくは集積回路として実現された、４つの処理装置１０４ａ〜１０４ｄを収容するマルチチップ・モジュール（ＭＣＭ）として実現されている。各処理ノード１０２内の処理装置１０４ａ〜１０４ｄは、ローカル相互接続１１４によって通信のために結合されており、そのローカル相互接続は、システム相互接続１１０のように、１つまたは複数のバスまたはスイッチあるいはその両方で実現することができる。
【００１３】
各ローカル相互接続１１４に結合されたデバイスとしては、処理装置１０４だけでなく、１つまたは複数のシステム・メモリ１０８ａ〜１０８ｄも含む。システム・メモリ１０８内にあるデータおよび命令は一般に、データ処理システム１００の任意の処理ノード１０２の任意の処理装置１０４内のプロセッサ・コアによってアクセスし変更することができる。本発明の代替諸実施形態では、１つまたは複数のシステム・メモリ１０８は、ローカル相互接続１１４ではなくシステム相互接続１１０に結合することができる。
【００１４】
当業者であれば、ＳＭＰデータ処理システム１００が、相互接続ブリッジ、不揮発性ストレージ、ネットワークまたは付加デバイスへの接続のためのポートなど、多くの追加の図示していないコンポーネントを含むことができることを認識するであろう。このような追加のコンポーネントは本発明の理解のためには不要であるので、図１には図示されておらず、本明細書ではこれ以上論じない。しかし、本発明によって提供される機能強化は、多様なアーキテクチャのキャッシュ・コヒーレント・データ処理システムに適用可能であり、決して図１に図示されている汎用データ処理システム・アーキテクチャに限定されないことも理解されたい。
【００１５】
次に図２を参照すると、本発明による例示的な処理装置１０４のより詳細なブロック図が示されている。図示された実施形態では、各処理装置１０４は、命令およびデータを独立して処理するための２つのプロセッサ・コア２００ａ、２００ｂを含む。各プロセッサ・コア２００は、実行のために命令を取り出して順序付けるための少なくとも１つの命令順序付けユニット（ＩＳＵ）２０８と、命令を実行するための１つまたは複数の実行ユニット２２４とを含む。以下にさらに論じる通り、実行ユニット２２４によって実行される命令は、メモリ・ブロックへのアクセスを要求するかまたはメモリ・ブロックへのアクセスを要求する動作を生成させるメモリ・アクセス命令を含む。
【００１６】
各プロセッサ・コア２００の動作は、その最低レベルに共用システム・メモリ１０８ａ〜１０８ｄを有し、その上位レベルに１つまたは複数レベルのキャッシュ・メモリを有する、マルチレベル揮発性メモリ階層によってサポートされる。図示された実施形態では、各処理装置１０４は、プロセッサ・コア２００ａ〜２００ｂから受信された要求およびローカル相互接続１４上のスヌーパ（Ｓ）２２２によってスヌープされた動作に応答して、その処理ノード１０２内のシステム・メモリ１０８ａ〜１０８ｄのうちのそれぞれ１つへの読取りおよび書込みアクセスを制御する統合メモリ・コントローラ（ＩＭＣ）２０６を含む。ＩＭＣ２０６は、基底アドレス・レジスタ（ＢＡＲ）ロジック２４０への参照により、それが担当するアドレスを決定する。
【００１７】
この例示的な実施形態では、処理装置１０４のキャッシュ・メモリ階層は、各プロセッサ・コア２００内のストアスルー・レベル１（Ｌ１）キャッシュ２２６と、処理装置１０４のすべてのプロセッサ・コア２００ａ、２００ｂによって共用されるレベル２（Ｌ２）キャッシュ２３０とを含む。Ｌ２キャッシュ２３０は、Ｌ２アレイおよびディレクトリ２３４と、マスタ２３２およびスヌーパ２３６を有するキャッシュ・コントローラとを含む。マスタ２３２は、ローカル相互接続１１４およびシステム相互接続１１０上でのトランザクションを開始し、関連のプロセッサ・コア２００ａ〜２００ｂから受信されたメモリ・アクセス（およびその他の）要求に応答して、Ｌ２アレイおよびディレクトリ２３４にアクセスする。スヌーパ２３６は、ローカル相互接続１１４上の動作をスヌープし、適切な応答を提供し、その動作によって要求されたＬ２アレイおよびディレクトリ２３４への任意のアクセスを実行する。
【００１８】
図示されたキャッシュ階層は２つのレベルのキャッシュのみを含むが、当業者であれば、代替諸実施形態が追加レベル（Ｌ３、Ｌ４、Ｌ５など）のオンチップまたはオフチップのインラインまたはルックアサイド・キャッシュを含むことができ、そのキャッシュは上位レベルのキャッシュの内容について完全包含、部分包含、または非包含である可能性があることを認識するであろう。
【００１９】
各処理装置１０４は応答ロジック２１０のインスタンスをさらに含み、そのロジックは、データ処理システム１００内のキャッシュ・コヒーレンシを維持する分散コヒーレンシ・シグナリング・メカニズムの一部分を実現する。加えて、各処理装置１０４は、そのローカル相互接続１１４とシステム相互接続１１０との間で通信を選択的に転送するための相互接続ロジック２１２のインスタンスを含む。最後に、各処理装置１０４は、入出力装置２１６などの１つまたは複数の入出力装置の接続をサポートする統合入出力コントローラ２１４を含む。入出力コントローラ２１４は、入出力装置２１６による要求に応答して、ローカル相互接続１１４またはシステム相互接続１１０あるいはその両方で動作を発行することができる。
【００２０】
次に図３に関して説明すると、Ｌ２アレイおよびディレクトリ２３４の例示的な一実施形態のより詳細なブロック図が示されている。図示した通り、Ｌ２アレイおよびディレクトリ２３４は、セット・アソシエイティブＬ２キャッシュ・アレイ３００と、Ｌ２キャッシュ・アレイ３００の内容のＬ２キャッシュ・ディレクトリ３０２とを含む。従来のセット・アソシエイティブ・キャッシュと同様に、システム・メモリ１０８内の記憶場所は、システム・メモリ（実）アドレス内の所定のインデックス・ビットを使用して、キャッシュ・アレイ３００内の特定の合同クラスにマッピングされる。キャッシュ・アレイ３００内に保管された特定のキャッシュ・ラインはキャッシュ・ディレクトリ３０２内に記録される。キャッシュ・ディレクトリ３００は、キャッシュ・アレイ３００内の各キャッシュ・ラインごとに１つのディレクトリ項目を含む。当業者によって理解される通り、キャッシュ・ディレクトリ３０２内の各ディレクトリ項目は、少なくとも、対応する実アドレスのタグ部分を使用してキャッシュ・アレイ３００内に保管された特定のキャッシュ・ラインを指定するタグ・フィールド３０４と、キャッシュ・ラインのコヒーレンシ状態を示す状態フィールド３０６と、同じ合同クラス内の他のキャッシュ・ラインに対する当該キャッシュ・ラインの置換順序を示すＬＲＵ（最長未使用時間）フィールド３０８とを有する。
【００２１】
ＩＩ．例示的な動作
次に図４を参照すると、図１のデータ処理システム１００のローカルまたはシステム相互接続１１０、１１４上の例示的な動作の時間空間図が示されている。この動作は、Ｌ２キャッシュ２３０のマスタ２３２（または入出力コントローラ２１４などの他のマスタ）がローカル相互接続１１４またはシステム相互接続１１０あるいはその両方で要求４０２を発行したときに始まる。要求４０２は好ましくは、所望のアクセスのタイプを示すトランザクション・タイプと、その要求によってアクセスすべきリソースを示すリソースＩＤ（たとえば、実アドレス）とを含む。一般的なタイプの要求としては好ましくは以下の表Ｉに示すものを含む。
【表１】
2006323845.tif 000003
【００２２】
要求４０２は、図２に示すＬ２キャッシュ２３０のスヌーパ２３６ならびにメモリ・コントローラ２０６のスヌーパ２２２によって受信される。一般に、いくつかの例外を除いて、要求４０２を出したマスタ２３２と同じＬ２キャッシュ２３０内のスヌーパ２３６は要求４０２をスヌープしない（すなわち、一般に自己スヌープは行われない）。というのは、要求４０２がローカル相互接続１１４またはシステム相互接続１１０あるいはその両方で伝送されるのは、処理装置１０４によって内部で要求４０２を処理できない場合のみだからである。要求４０２を受信した各スヌーパ２２２、２３６は、要求４０２に対する少なくとも当該スヌーパの応答を表すそれぞれの部分応答４０６を提供する。メモリ・コントローラ２０６内のスヌーパ２２２は、たとえば、スヌーパ２２２が要求アドレスを担当するかどうかならびにそれが要求を処理するために使用可能なリソースを有するかどうかに基づいて、提供すべき部分応答４０６を決定する。Ｌ２キャッシュ２３０のスヌーパ２３６は、たとえば、そのＬ２キャッシュ・ディレクトリ３０２の可用性、要求を処理するためのスヌーパ２３６内のスヌープ・ロジック・インスタンスの可用性、ならびにＬ２キャッシュ・ディレクトリ３０２内の要求アドレスに関連するコヒーレンシ状態に基づいて、その部分応答４０６を決定することができる。
【００２３】
スヌーパ２２２および２３６の部分応答４０６は、要求４０２に対するシステム全体に及ぶ結合応答（ＣＲ）４１０を決定するために、応答ロジック２１０の１つまたは複数のインスタンスにより、段階的にまたはすべて同時に、論理的に結合される。以下に論じる範囲制限を条件として、応答ロジック２１０は、要求４０２に対するシステム全体に及ぶ応答（たとえば、成功、失敗、再試行など）を示すために、そのローカル相互接続１１４またはシステム相互接続１１０あるいはその両方を介してマスタ２３２およびスヌーパ２２２、２３６に結合応答４１０を提供する。ＣＲ４１０が要求４０２の成功を示す場合、ＣＲ４１０は、たとえば、要求されたメモリ・ブロックに関するデータ・ソース、要求されたメモリ・ブロックがマスタ２３２によってキャッシュされる場合のキャッシュ状態、ならびに１つまたは複数のＬ２キャッシュ２３０内の要求されたメモリ・ブロックを無効にする「クリーンアップ」動作が必要であるかどうかを示すことができる。
【００２４】
結合応答４１０の受信に応答して、マスタ２３２およびスヌーパ２２２、２３６のうちの１つまたは複数は概して、要求４０２を処理するために１つまたは複数の動作を実行する。これらの動作としては、マスタ２３２にデータを供給すること、１つまたは複数のＬ２キャッシュ２３０内にキャッシュされたデータのコヒーレンシ状態を無効にするかまたはその他の更新を行うこと、キャストアウト動作を実行すること、システム・メモリ１０８にデータをライトバックすることなどを含むことができる。以下にさらに論じる通り、要求４０２によって必要とされる場合、要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックは、応答ロジック２１０による結合応答４１０の生成前または生成後に、マスタ２３２にまたはマスタ２３２から伝送することができる。
【００２５】
次に、要求によって指定された要求アドレスに対してそのスヌーパが最高コヒーレンシ点（ＨＰＣ）であるか、最低コヒーレンシ点（ＬＰＣ）であるか、またはいずれでもないかに関して、要求に対するスヌーパ２２２、２３６の部分応答ならびに要求またはその結合応答あるいはその両方に応答してスヌーパによって実行される動作について説明する。ＬＰＣは本明細書では、メモリ・ブロック用のリポジトリとして働くメモリ・デバイスまたは入出力装置として定義される。メモリ・ブロックに関するＨＰＣがない場合、ＬＰＣは、そのメモリ・ブロックの真のイメージを保持し、そのメモリ・ブロックの追加のキャッシュ・コピーを生成するための要求を承諾または拒否するための権限を有する。図１および図２のデータ処理システム実施形態における典型的な要求の場合、ＬＰＣは、参照されたメモリ・ブロックを保持するシステム・メモリ１０８用のメモリ・コントローラ２０６になる。ＨＰＣは本明細書では、メモリ・ブロックの真のイメージ（ＬＰＣにおける対応するメモリ・ブロックと一致する場合もあれば、一致しない場合もある）をキャッシュする一意的に識別されたデバイスとして定義され、メモリ・ブロックを変更するための要求を承諾または拒否するための権限を有する。ＨＰＣは、メモリ・ブロックを変更しない動作に応答して要求元にメモリ・ブロックのコピーを提供することもできる。したがって、図１および図２のデータ処理システム実施形態における典型的な要求の場合、ＨＰＣがあれば、それはＬ２キャッシュ２３０になる。あるメモリ・ブロックに関するＨＰＣを指定するために他のインジケータを使用することもできるが、本発明の好ましい一実施形態では、表ＩＩに関連して以下に詳述する通り、メモリ・ブロックに関するＨＰＣがある場合、Ｌ２キャッシュ２３０のＬ２キャッシュ・ディレクトリ３０２内の選択されたキャッシュ・コヒーレンシ状態（複数も可）を使用して、そのＨＰＣを指定する。
【００２６】
図４をさらに参照すると、要求４０２で参照されたメモリ・ブロックに関するＨＰＣがある場合はそのＨＰＣ、あるいは、ＨＰＣがない場合はそのメモリ・ブロックのＬＰＣは、好ましくは、保護ウィンドウ４０４ａの間、要求４０２に応答してメモリ・ブロックの所有権の移転を保護する責任を有する。図４に示されている例示的なシナリオでは、要求４０２の要求アドレスによって指定されたメモリ・ブロックに関するＨＰＣであるスヌーパ２３６は、スヌーパ２３６がその部分応答４０６を決定したときからスヌーパ２３６が結合応答４１０を受信するまで継続する保護ウィンドウ４０４ａの間、要求されたメモリ・ブロックの所有権のマスタ２３２への移転を保護する。保護ウィンドウ４０４ａの間、スヌーパ２３６は、所有権がマスタ２３２に正常に移転されるまで他のマスタが所有権を獲得するのを防止し、同じ要求アドレスを指定する他の要求に対して部分応答４０６を提供することにより、所有権の移転を保護する。マスタ２３２は同様に、結合応答４１０の受信後に要求４０２で要求されたメモリ・ブロックに対する自身の所有権を保護するために保護ウィンドウ４０４ｂを開始する。
【００２７】
スヌーパ２２２、２３６はいずれも、上述のＣＰＵおよび入出力要求を処理するためのリソースが限られているので、数通りのレベルの部分応答および対応するＣＲが可能である。たとえば、要求されたメモリ・ブロックを担当するメモリ・コントローラ２０６内のスヌーパ２２２が要求を処理するために使用可能なキューを有する場合、スヌーパ２２２は、それがその要求に関するＬＰＣとして働くことができることを示す部分応答で応答することができる。これに反して、スヌーパ２２２が要求を処理するために使用可能なキューをまったく持たない場合、スヌーパ２２２は、それがメモリ・ブロックに関するＬＰＣであるが、現在、その要求を処理することができないことを示す部分応答で応答することができる。
【００２８】
同様に、Ｌ２キャッシュ２３０内のスヌーパ２３６は、要求を処理するために、スヌープ・ロジックの使用可能なインスタンスおよびＬ２キャッシュ・ディレクトリ３０２へのアクセスを必要とする可能性がある。これらのリソースのいずれか一方（または両方）へのアクセスがない場合、部分応答（および対応するＣＲ）は、必要なリソースがないために要求を処理できないことを通知することになる。
【００２９】
この後、要求を処理するために必要なすべての使用可能な内部リソースをスヌーパが備えていることを示す部分応答を提供するスヌーパ２２２、２３６は、その要求を「肯定」したことになる。スヌーパ２３６の場合、スヌープされた動作を肯定する部分応答は好ましくは、そのスヌーパ２３６における要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックのキャッシュ状態を示す。要求を処理するために必要なすべての使用可能な内部リソースをスヌーパ２３６が備えていないことを示す部分応答を提供するスヌーパ２２２、２３６は、「隠蔽可能」と言うことができる。このようなスヌーパ２３６は、使用可能なスヌープ・ロジックのインスタンスまたはＬ２キャッシュ・ディレクトリ３０２へのアクセスがないために、上記で定義された意味で要求を「肯定」することができず、他のマスタ２３２およびスヌーパ２２２、２３６の見地から見て、未知のコヒーレンシ状態を有するので、スヌーパ２３６は「隠蔽可能」である。
【００３０】
ＩＩＩ．データ送達ドメイン
従来のブロードキャストベースのデータ処理システムは、ブロードキャスト通信によりキャッシュ・コヒーレンシとデータ送達の両方を処理し、そのブロードキャスト通信は従来のシステムではシステム相互接続上で少なくともシステム内のすべてのメモリ・コントローラおよびキャッシュ階層に伝送される。代替アーキテクチャおよび同様の規模のシステムと比べて、ブロードキャストベースのシステムは、アクセス待ち時間の減少をもたらし、共用メモリ・ブロックのデータ処理およびコヒーレンシ管理を改善する傾向がある。
【００３１】
ブロードキャストベースのシステムの規模が拡大すると、システム相互接続上のトラフィック量が増加し、これは、システム相互接続による通信に必要な帯域幅が大きくなるにつれてシステムの規模とともにシステム・コストが急激に上昇することを意味する。すなわち、それぞれがｎ回のトランザクションという平均トラフィック量を有するｍ個のプロセッサ・コアを備えたシステムは、ｍ×ｎというトラフィック量を有し、ブロードキャストベースのシステム内のトラフィック量が加法的ではなく乗法的に拡大することを意味する。実質的により大きい相互接続帯域幅に関する要件を超えて、システム・サイズが増加することは、何らかのアクセス待ち時間を増加するという２次的効果を有する。たとえば、読取りデータのアクセス待ち時間は、最悪の場合、要求されたメモリ・ブロックを共用コヒーレンシ状態で保持する最も遠く離れた下位レベルのキャッシュ（ここから要求されたデータを調達できる）の結合応答待ち時間によって制限される。
【００３２】
依然としてブロードキャストベースのシステムの利点を保持しながらシステム相互接続の帯域幅要件およびアクセス待ち時間を低減するために、本発明は、要求元のＬ２キャッシュ２３０とデータ・ソースとの平均距離を減少させることにより、データ・アクセス待ち時間を低減する。これを行うための１つの技法は、要求元のＬ２キャッシュ２３０とデータ・ソースとの平均距離を低減するために、データ処理システム１００全体にわたって分散された複数のＬ２キャッシュ２３０が同じメモリ・ブロックのコピーを「特殊」共用コヒーレンシ状態で保持できるようにすることであり、これにより、これらのキャッシュは、キャッシュ間介入を使用して要求元のＬ２キャッシュ２３０にそのメモリ・ブロックを供給することができる。
【００３３】
データ処理システム１００などのＳＭＰデータ処理システムにおいて共用メモリ・ブロックについて複数の同並行分散ソースを実装するために、２つの問題に対処しなければならない。第１に、上記で言及した「特殊」共用コヒーレンシ状態のメモリ・ブロックのコピーの作成を支配する何らかのルールを実装しなければならない。第２に、たとえば、バス読取り動作またはバスＲＷＩＴＭ動作に応答して、スヌープするＬ２キャッシュ２３０がある場合にどのキャッシュが要求元のＬ２キャッシュ２３０に共用メモリ・ブロックを提供するかを支配するルールが存在しなければならない。
【００３４】
本発明によれば、これらの問題はいずれも、データ・ソーシング・ドメインの実装により対処される。特に、ドメインがデータ要求への応答に参加する１つまたは複数の下位レベルの（たとえば、Ｌ２）キャッシュを含むものと定義される場合に、ＳＭＰデータ処理システム内の各ドメインは、特定のメモリ・ブロックを「特殊」共用コヒーレンシ状態で保持するキャッシュ階層を一度に１つだけ含むことができる。そのキャッシュ階層は、同じドメイン内の要求元の下位レベルのキャッシュによってバス読取りタイプ（たとえば、読取りまたはＲＷＩＴＭ）動作が開始されたときに存在する場合、要求元の下位レベルのキャッシュに対し要求されたメモリ・ブロックを調達することを担当する。多くの異なるドメイン・サイズを定義することができるが、図１のデータ処理システム１００では、各処理ノード１０２（すなわち、ＭＣＭ）をデータ・ソーシング・ドメインと見なすことができれば都合が良い。このような「特殊」共用状態（すなわち、Ｓｒ）の一例については、表ＩＩに関連して以下に説明する。
【００３５】
ＩＶ．コヒーレンシ・ドメイン
上述したデータ送達ドメインの実装はデータ・アクセス待ち時間を改善するが、この機能強化は、システムの規模が増大したときのトラフィック量のｍ×ｎという増加に対処するものではない。依然としてブロードキャストベースのコヒーレンシ・メカニズムを維持しながらトラフィック量を低減するために、本発明の好ましい諸実施形態ではコヒーレンシ・ドメインをさらに実装する。コヒーレンシ・ドメインは、本明細書で上述したデータ送達ドメインのように、個別のコヒーレンシ・ドメインを形成する各処理ノード１０２で都合よく実装することができる（しかし、実装しなければならないわけではない）。データ送達ドメインとコヒーレンシ・ドメインは、同一の広がりを持つものにすることができるが、そうでなければならないわけではなく、データ処理システム１００の例示的な動作を説明するために、以下では、処理ノード１０２によって定義された境界を有するものとする。
【００３６】
コヒーレンシ・ドメインの実装は、すべてより少ないコヒーレンシ・ドメインによる参加によって要求を処理できる場合にシステム相互接続１１０によるドメイン間ブロードキャスト通信を制限することにより、システム・トラフィックを低減する。たとえば、処理ノード１０２ａの処理装置１０４ａが発行すべきバス読取り動作を有する場合、処理装置１０４ａは、他のコヒーレンシ・ドメイン（たとえば、処理ノード１０２ｂ）内の参加者ではなく、それ自体のコヒーレンシ・ドメイン（たとえば、処理ノード１０２ａ）内のすべての参加者にバス読取り動作をまずブロードキャストすることを選ぶことができる。動作のマスタと同じコヒーレンシ・ドメイン内の参加者のみに伝送されたブロードキャスト動作は本明細書では「ローカル動作」として定義される。処理装置１０４ａのコヒーレンシ・ドメイン内でローカル・バス読取り動作を処理できる場合、バス読取り動作のそれ以上のブロードキャストはまったく実行されない。しかし、処理ノード１０２ａのコヒーレンシ・ドメイン内のみでバス読取り動作を処理できないことをローカル・バス読取り動作に対する部分応答および結合応答が示す場合、ローカル・コヒーレンシ・ドメインに加えて、１つまたは複数の追加のコヒーレンシ・ドメインを含むように、ブロードキャストの範囲を拡張することができる。
【００３７】
基本的な実装では、ローカル・コヒーレンシ・ドメインのみを含む「ローカル」範囲と、ＳＭＰデータ処理システム内の他のコヒーレンシ・ドメインのすべてを含む「グローバル」範囲という２つのブロードキャスト範囲が使用される。したがって、ＳＭＰデータ処理システム内のすべてのコヒーレンシ・ドメインに伝送される動作は本明細書では「グローバル動作」として定義される。重要なのは、動作を処理するためにローカル動作を使用するか、より広範囲の動作（たとえば、グローバル動作）を使用するかにかかわらず、ＳＭＰデータ処理システム内のすべてのコヒーレンシ・ドメインにわたってキャッシュ・コヒーレンシが維持されるということである。
【００３８】
好ましい一実施形態では、動作の範囲はローカル／グローバル・インジケータ（信号）によってバス動作で示される。このインジケータは一実施形態では１ビット・フラグでよい。処理装置１０４内の転送ロジック２１２は好ましくは、動作のローカル／グローバル・インジケータ（信号）の設定に基づいて、ローカル相互接続１１４を介して受信した動作をシステム相互接続１１０上に転送するかどうかを決定する。
【００３９】
Ｖ．ドメイン・インジケータ
不必要なローカル動作の発行を制限し、それにより、動作待ち時間を低減し、ローカル相互接続上の追加の帯域幅を温存するために、本発明は好ましくは、関連メモリ・ブロックのコピーがローカル・コヒーレンシ・ドメインの外側にキャッシュされるかどうかを示す、メモリ・ブロック当たりのドメイン・インジケータを実現する。たとえば、図５は、本発明によるドメイン・インジケータの第１の例示的な実現例を示している。図５に図示されている通り、システム・メモリ１０８は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）で実現可能であり、複数のメモリ・ブロック５００を保管する。システム・メモリ１０８は、各メモリ・ブロック５００に関連して、エラーがある場合にそのエラーを訂正するために使用される関連のエラー訂正コード（ＥＣＣ：error correcting code）５０２をメモリ・ブロック５００およびドメイン・インジケータ５０４に保管する。本発明のいくつかの諸実施形態では、ドメイン・インジケータ５０４は特定のコヒーレンシ・ドメインを識別する（すなわち、コヒーレンシ・ドメインまたはノードＩＤを指定する）ことができるが、以後、ドメイン・インジケータ５０４は、関連メモリ・ブロック５００がそのメモリ・ブロック５００に関するＬＰＣとして働くメモリ・コントローラ２０６と同じコヒーレンシ・ドメイン内のみにキャッシュされる場合に（たとえば、「ローカル」を示すために「１」に）設定される１ビット・インジケータであるものと想定される。そうではない場合、ドメイン・インジケータ５０４は（たとえば、「グローバル」を示すために「０」に）リセットされる。「ローカル」を示すためのドメイン・インジケータ５０４の設定は、「グローバル」の設定が間違っていてもコヒーレンシ・エラーを誘発しないが、動作の不必要なグローバル・ブロードキャストを引き起こす可能性があるという点で、不正確に実現される可能性がある。
【００４０】
ある動作に応答してメモリ・ブロックを調達するメモリ・コントローラ２０６（およびＬ２キャッシュ２３０）は、要求されたメモリ・ブロックに併せて関連のドメイン・インジケータ５０４を伝送する。
【００４１】
ＶＩ．例示的なコヒーレンシ・プロトコル
本発明は好ましくは、上述のデータ送達およびコヒーレンシ・ドメインの実装を可能にするように設計されたキャッシュ・コヒーレンシ・プロトコルを実現する。好ましい一実施形態では、プロトコル内のキャッシュ・コヒーレンシ状態は、（１）キャッシュがメモリ・ブロックに関するＨＰＣであるかどうかの表示を提供することに加えて、（２）キャッシュ・コピーがそのメモリ階層レベルのキャッシュ間で固有のものである（すなわち、システム全体で唯一のキャッシュ・コピーである）かどうか、（３）キャッシュがメモリ・ブロックに関する要求のマスタに対してメモリ・ブロックのコピーを提供できるかどうか、また、いつ提供できるか、（４）メモリ・ブロックのキャッシュ・イメージがＬＰＣ（システム・メモリ）において対応するメモリ・ブロックと整合しているかどうか、（５）リモート・コヒーレンシ・ドメイン内の他のキャッシュが（おそらく）一致アドレスを有するキャッシュ項目を保持するかどうかも示す。これらの５つの属性は、たとえば、以下の表ＩＩに要約した周知のＭＥＳＩ（変更、排他、共用、無効）プロトコルの変形例で表すことができる。
【表２】
2006323845.tif 000004
【００４２】
Ａ．Ｉｇ状態
メモリ・ブロックがローカルのみでキャッシュされたかどうかを判定するためにＬＰＣにアクセスしなければならないことを回避するために、メモリ・ブロックのいかなるコピーもコヒーレンシ・ドメイン内にキャッシュされた状態で存続していない場合にドメイン表示を維持するために、Ｉｇ（無効グローバル）コヒーレンシ状態が使用される。Ｉｇ状態は本明細書では、（１）キャッシュ・アレイ内の関連メモリ・ブロックが無効であることと、（２）キャッシュ・ディレクトリ内のアドレス・タグが有効であることと、（３）アドレス・タグによって識別されたメモリ・ブロックのコピーが他のコヒーレンシ・ドメイン内にキャッシュされるかもしれないことを示すキャッシュ・コヒーレンシ状態として定義される。このＩｇ表示が不正確であっても、コヒーレンシの違反が生じることはない。
【００４３】
このＩｇ状態は、排他アクセス要求（たとえば、バスＲＷＩＴＭ動作）に応答して下位レベルのキャッシュが要求されたメモリ・ブロックを他のコヒーレンシ・ドメイン内の要求元に提供することに応答してそのキャッシュ内に形成される。本発明のいくつかの実施形態では、そのメモリ・ブロックに関するＬＰＣを含むコヒーレンシ・ドメイン内にのみＩｇ状態を形成することが好ましい。このような実施形態では、要求されたメモリ・ブロックを調達するキャッシュに対して、ＬＰＣがそのローカル・コヒーレンシ・ドメイン内にあることを示すために、何らかのメカニズム（たとえば、ＬＰＣによる部分応答およびその後の結合応答）を実装しなければならない。ＬＰＣがローカルであるという表示の通信をサポートしない他の実施形態では、排他アクセス要求に応答してキャッシュがリモート・コヒーレンシ・ドメインに対してメモリ・ブロックを調達するときはいつでもＩｇ状態を形成することができる。
【００４４】
Ｉｇ状態を含むキャッシュ・ディレクトリ項目は潜在的に有用な情報を担持するので、少なくともいくつかの実装例では、（たとえば、置換のために犠牲キャッシュ項目を選択するために使用される最長未使用時間（ＬＲＵ）アルゴリズムを変更することにより）Ｉ状態の項目よりＩｇ状態の項目を優先的に保持することが望ましい。Ｉｇディレクトリ項目はキャッシュ内に保持されるので、排他アクセス要求によってＩｇ状態の形成が引き起こされたキャッシュが、Ｉｇ状態のメモリ・ブロックのアドレス・タグを保持するキャッシュへの通知なしにメモリ・ブロックのそのコピーを割振り解除またはライトバックする可能性があるという点で、いくつかのＩｇ項目が時間の経過につれて「失効」になる可能性がある。このような場合、ローカル動作の代わりにグローバル動作を発行しなければならないことを誤って示す「失効」Ｉｇ状態は、コヒーレンシ・エラーを引き起こさないが、ローカル動作を使用して処理できるはずの動作がグローバル動作として発行されることになる。このような非能率の発生は、「失効」Ｉｇキャッシュ項目の置換によって期間が制限される。
【００４５】
Ｉｇキャッシュ項目の選択および置換は、いくつかのルールによって支配される。第１に、キャッシュが置換のための犠牲としてＩｇ項目を選択した場合、（Ｉ項目が選択された場合と異なり）そのＩｇ項目のキャストアウトが実行される。第２に、メモリ・ブロックをキャッシュ内にロードさせる要求が同じキャッシュ内のＩｇキャッシュ項目にヒットした場合、キャッシュはそのＩｇヒットをキャッシュ・ミスとして扱い、そのＩｇ項目を選択された犠牲として使用してキャストアウト動作を実行する。したがって、キャッシュは同じアドレス・タグの２つのコピーをキャッシュ・ディレクトリに入れることを回避する。第３に、Ｉｇ状態のキャストアウトは好ましくは、ローカル動作として実行され、グローバル動作として実行される場合は非ローカル・コヒーレンシ・ドメインのメモリ・コントローラによって無視される。メモリ・ブロックに関するＬＰＣと同じコヒーレンシ・ドメイン内にないキャッシュにＩｇ項目を形成できる場合、ＬＰＣ内のドメイン・インジケータに対する更新はまったく不要である。第４に、Ｉｇ状態のキャストアウトは好ましくは、（キャストアウトを実行するキャッシュに対してローカルである場合に）ドメイン・インジケータがＬＰＣにライトバックされるデータレス・アドレス専用動作として実行される。
【００４６】
本発明によるＩｇ状態の実装は、メモリ・ブロックのいかなる有効なコピーもコヒーレンシ・ドメイン内にキャッシュされた状態で存続していない場合でも、メモリ・ブロックに関するキャッシュ・ドメイン・インジケータをそのコヒーレンシ・ドメイン内に維持することにより、通信効率を改善する。その結果として、メモリ・ブロックに関するＨＰＣは、リモート・コヒーレンシ・ドメインからの排他アクセス要求（たとえば、バスＲＷＩＴＭ動作）を再試行することなく、かつ要求されたメモリ・ブロックのＬＰＣへのプッシュを実行することなく、その要求を処理することができる。
【００４７】
Ｂ．Ｉｎ状態
Ｉｎ状態は本明細書では、（１）キャッシュ・アレイ内の関連メモリ・ブロックが無効であることと、（２）キャッシュ・ディレクトリ内のアドレス・タグが有効であることと、（３）アドレス・タグによって識別されたメモリ・ブロックのコピーがキャッシュされる場合に、ローカル・コヒーレンシ・ドメイン内の１つまたは複数の他のキャッシュ階層のみによってキャッシュされる可能性があることを示すキャッシュ・コヒーレンシ状態として定義される。このＩｎ表示が不正確であっても、コヒーレンシの違反が生じることはない。このＩｎ状態は、排他アクセス要求（たとえば、バスＲＷＩＴＭ動作）に応答して下位レベルのキャッシュが要求されたメモリ・ブロックを同じコヒーレンシ・ドメイン内の要求元に提供することに応答して、そのキャッシュ内に形成される。
【００４８】
Ｉｎ状態を含むキャッシュ・ディレクトリ項目は潜在的に有用な情報を担持するので、少なくともいくつかの実現例では、（たとえば、置換のために犠牲キャッシュ項目を選択するために使用される最長未使用時間（ＬＲＵ）アルゴリズムを変更することにより）Ｉ状態の項目よりＩｎ状態の項目を優先的に保持することが望ましい。Ｉｎディレクトリ項目はキャッシュ内に保持されるので、排他アクセス要求によってＩｎ状態の形成が引き起こされたキャッシュが、Ｉｎ状態のメモリ・ブロックのアドレス・タグを保持するキャッシュへの通知なしにメモリ・ブロックの共用コピーをリモート・コヒーレンシ・ドメインに供給する可能性があるという点で、いくつかのＩｎ項目が時間の経過につれて「失効」になる可能性がある。このような場合、グローバル動作の代わりにローカル動作を発行しなければならないことを誤って示す「失効」Ｉｎ状態は、コヒーレンシ・エラーを引き起こさないが、何らかの動作が最初はグローバル動作としてではなくローカル動作として誤って発行されることになる。このような非能率の発生は、「失効」Ｉｎキャッシュ項目の置換によって期間が制限される。好ましい一実施形態では、Ｉｎコヒーレンシ状態のキャッシュ項目はキャストアウトの対象にならないが、その代わりに単純に置換される。したがって、Ｉｇキャッシュ項目とは異なり、Ｉｎキャッシュ項目はシステム・メモリ１０８内のドメイン・インジケータ５０４を更新するために使用されない。
【００４９】
本発明によるＩｎ状態の実装は、マスタがその動作の１つについてローカル範囲を選択するために調べる可能性のあるメモリ・ブロックに関するキャッシュ・ドメイン・インジケータを維持することにより、通信効率を改善する。その結果として、他のコヒーレンシ・ドメイン内のシステム相互接続１１０およびローカル相互接続１１４上の帯域幅が維持される。
【００５０】
Ｃ．Ｓｒ状態
以下に記載する動作では、要求された共用メモリ・ブロックをＳｒコヒーレンシ状態で保持する下位レベルのキャッシュが要求元のマスタと同じドメイン内に位置するかどうかを判定できることは有用である。一実施形態では、要求元のマスタと同じドメイン内の「ローカル」Ｓｒスヌーパの存在は、要求されたメモリ・ブロックをＳｒコヒーレンシ状態で保持する下位レベルのキャッシュにあるスヌーパの応答動作によって示すことができる。たとえば、バス動作がドメイン境界を横切ったかどうかを示す範囲インジケータ（たとえば、マスタの明示ドメインＩＤまたは単一ローカル／非ローカル・ビット）を各バス動作が含むと想定すると、共用メモリ・ブロックをＳｒコヒーレンシ状態で保持する下位レベルのキャッシュは、同じデータ・ソーシング・ドメイン内のマスタによる要求のみについてＳｒ状態の要求を肯定する部分応答を提供し、他のすべての要求についてはＳ状態を示す部分応答を提供することができる。このような実施形態では、表ＩＩＩに示されているように応答動作を要約することができる。表ＩＩＩでは、メモリ・ブロックの実際のキャッシュ状態とは異なる可能性のある部分応答を示すために、プライム符号（’）表記が使用されている。
【表３】
2006323845.tif 000005
上記の表ＩＩＩに示されている応答動作を想定すると、共用データに関する平均データ待ち時間は、調達元のデータ・ソースとして働くことができる、ＳＭＰデータ処理システム内に分散されたメモリ・ブロックの共用コピーの数を増加することにより、著しく減少させることができる。
【００５１】
ＶＩＩ．メモリ・ブロックの初期設定
図６〜８には、マルチプロセッサ・データ処理システム内のメモリ初期設定動作を処理する例示的な方法を示すハイレベル論理流れ図が示されている。当業者であれば、図示されている諸ステップの順序付けが論理シーケンスを表し、本発明の特定の実装例では図示されている諸ステップのうちのいくつかを同時にまたは代替順序で実行できることを認識するであろう。
【００５２】
図６には、本発明によりキャッシュ・メモリが関連プロセッサ・コアから受信したメモリ初期設定動作を処理する方法の例示的な一実施形態のハイレベル論理流れ図が示されている。図示されているプロセスは、処理装置１０４内の関連プロセッサ・コア２００のうちの１つからのＣＰＵ動作をＬ２キャッシュ２３０のマスタ２３２が受信したことに応答して、ブロック６００から始まる。次にプロセスはブロック６０２に移行し、その動作がたとえばソース・プロセッサ・コア２００による対応するＤＣＢＮ命令の実行に応答して受信されたＣＰＵ  ＤＣＢＮ（データ・キャッシュ・ブロック初期設定）動作であるかどうかをマスタ２３２が判定する。
【００５３】
図９は、システム・メモリ１０８内に少なくとも部分的に記憶され、プロセッサ・コア２００による実行または処理の対象となるコンピュータ使用可能プログラム・コード９００の一部分を形成する例示的なＤＣＢＮ命令９０２を示している。例示的なＤＣＢＮ命令は好ましくは、その命令をＤＣＢＮ命令として識別する命令コード（ニーモニック「ｄｃｂｎ」によって図９に表されている）と、初期設定すべきターゲット・メモリ・ブロックのターゲット実アドレスの表示とを含む。ターゲット実アドレスは好ましくは、従来通り、命令入力オペランドｏｐ１、ｏｐ２、およびｏｐ３のうちの１つまたは複数によって示される。入力オペランドは任意選択で、追加の情報、たとえば、初期設定すべきターゲット・メモリ・ブロックのアドレス範囲の表示、ターゲット・メモリ・ブロックが初期設定される初期設定値の表示（たとえば、すべて０、すべて１、またはレジスタ指定値）などを示すことができる。いかなる初期設定値も明示的に示されない場合、ＤＣＢＮ命令の命令コードでデフォルト値（たとえば、すべて０またはすべて１）を暗黙指定してもよい。
【００５４】
好ましい一実施形態では、ＤＣＢＮ命令の実行に応答してプロセッサ・コア２００によってマスタ２３２に送信されたＣＰＵ  ＤＣＢＮ動作は同様に、少なくとも、メモリ・アクセス動作をＣＰＵ  ＤＣＢＮ動作として識別する命令コードと、初期設定すべきターゲット・メモリ・ブロックのターゲット実アドレスの表示とを含む。ＣＰＵ  ＤＣＢＮ動作は任意選択で、追加の情報、たとえば、初期設定すべきターゲット・メモリ・ブロックのアドレス範囲の表示、ターゲット・メモリ・ブロックが初期設定される初期設定値の表示（たとえば、すべて０、すべて１、またはレジスタ指定値）などを示すことができる。いかなる初期設定値も明示的に示されない場合、ＣＰＵ  ＤＣＢＮ動作の命令コードでデフォルト値（たとえば、すべて０またはすべて１）を暗黙指定してもよい。
【００５５】
マスタ２３２によって受信されたＣＰＵ動作がＣＰＵ  ＤＣＢＮ動作ではないというブロック６０２の判断に応答して、プロセスはブロック６０４に移行し、受信したＣＰＵ動作の動作タイプに応じてマスタ２３２が他の処理を実行する。次にプロセスはブロック６３０で終了する。
【００５６】
ブロック６０２に戻ると、受信された動作がＣＰＵ  ＤＣＢＮ動作であるという判断に応答して、マスタ２３２は、ＣＰＵ  ＤＣＢＮ動作によって指定されたターゲット・アドレスに関してＬ２キャッシュ・ディレクトリ３０２内に記録されたコヒーレンシ状態がある場合にそのコヒーレンシ状態を決定するために、ブロック６０６でＬ２キャッシュ・ディレクトリ３０２のルックアップを開始する。ターゲット・アドレスがどのデータ有効コヒーレンシ状態（たとえば、Ｍ、Ｍｅ、Ｔ、Ｔｎ、Ｔｅ、Ｔｅｎ、Ｓｒ、またはＳ）にも関連していないが、データ無効コヒーレンシ状態（たとえば、Ｉ、Ｉｇ、またはＩｎ）に関連していることをＬ２キャッシュ・ディレクトリ３０２が示している場合、プロセスはブロック６２２に移行し、マスタ２３２がそのローカル相互接続１１４およびシステム相互接続１１０上でグローバル範囲のＤＣＢＮ要求を発行する。相互接続１１４、１１０は必ずしもバス状相互接続でなくてもよいが、このような要求は本明細書では、プロセッサ・コア２００からマスタ２３２が受信したＣＰＵ  ＤＣＢＮ動作およびプロセッサ実行ＤＣＢＮ命令と区別するために、バスＤＣＢＮ要求として示される。
【００５７】
好ましい一実施形態では、相互接続１１０、１１４上で発行されたバスＤＣＢＮ要求は、少なくとも、要求をバスＤＣＢＮ要求として識別する要求ベクトルと、ターゲット・メモリ・ブロックのターゲット実アドレスの表示とを含む。上述のＣＰＵ  ＤＣＢＮ動作のように、バスＤＣＢＮ要求は任意選択で、追加の情報、たとえば、初期設定すべきターゲット・メモリ・ブロックのアドレス範囲の表示、ターゲット・メモリ・ブロックが初期設定される初期設定値の表示（たとえば、すべて０、すべて１、または指定値）などを示すことができる。いかなる初期設定値も明示的に示されない場合、バスＤＣＢＮ要求の要求ベクトルでデフォルト値（たとえば、すべて０またはすべて１）を暗黙指定してもよい。
【００５８】
ブロック６２２後に、マスタ２３２はＣＰＵ  ＤＣＢＮ要求の結合応答を待つ。結合応答（ＣＲ）が「再試行」を示している場合、すなわち少なくとも１つのスヌーパ２３６、２２２が「再試行」を示す部分応答を提供した場合、マスタ２３２は、ブロック６２４からブロック６２２に戻るプロセスによって示される通り、ＣＰＵ  ＤＣＢＮ要求を再発行する。これに反して、結合応答が「再試行」以外のものである場合、ターゲット・メモリ・ブロックの初期設定が成功しており、プロセスはブロック６３０で終了する。要求元のＬ２キャッシュ２３０がＣＰＵ  ＤＣＢＮ動作のターゲット・メモリ・ブロックのコピーを保持していないときに、要求元のＬ２キャッシュ２３０は、ＣＰＵ  ＤＣＢＮ動作を処理するためにターゲット・メモリ・ブロックのコピーをロードすることによりそのＬ２キャッシュ・アレイ３００を「汚染する」必要がないことに留意されたい。その代わりに、要求元のＬ２キャッシュ２３０は、「再試行」以外の結合応答が受信されるまで、単に１つまたは複数の対応するバスＤＣＢＮ要求を発行することにより、ＣＰＵ  ＤＣＢＮ動作を処理する。
【００５９】
ブロック６０８に戻ると、ターゲット・アドレスがデータ有効コヒーレンシ状態でＬ２キャッシュ・ディレクトリ３０２でヒットしたとマスタ２３２が判断したことに応答して、マスタ２３２はターゲット・メモリ・ブロックのコヒーレンシ状態に応じてＣＰＵ  ＤＣＢＮ動作を処理する。ターゲット・メモリ・ブロックのコヒーレンシ状態がＭｘ（たとえば、ＭまたはＭｅ）である場合、マスタ２３２は、ブロック６１８に図示されている通り、適切な初期設定値をターゲット・メモリ・ブロックに書き込むことにより、ターゲット・メモリ・ブロックを初期設定する。まだＭに設定されていない場合、ターゲット・メモリ・ブロックがその時点でシステム・メモリ１０８内の対応するメモリ・ブロックに整合していないことを示すために、ターゲット・メモリ・ブロックのコヒーレンシ状態がＭに更新される。その後、プロセスはブロック６３０で終了する。
【００６０】
次にブロック６１２を参照すると、ターゲット・メモリ・ブロックのコヒーレンシ状態がＭｘまたはＴｘではない（たとえば、ＳまたはＳｒ）とマスタ２３２が判断した場合、マスタ２３２は、ブロック６２０に図示されている通り、そのＬ２キャッシュ・ディレクトリ３０２内のターゲット・キャッシュ・ブロックのコヒーレンシ状態をＩコヒーレンシ状態に更新する。その後、プロセスは、すでに説明したブロック６２２およびそれ以降のブロックに移行する。したがって、要求元のＬ２キャッシュ２３０がターゲット・メモリ・ブロックを非ＨＰＣデータ有効コヒーレンシ状態で保持する場合、要求元のＬ２キャッシュ２３０は好ましくは、ＣＰＵ  ＤＣＢＮ動作を処理するために、ターゲット・メモリ・ブロックのそのコピーを変更するための許可を取得して、そのリソースおよび相互接続帯域幅を消費しない。その代わりに、要求元のＬ２キャッシュ２３０は好ましくは、「再試行」以外の結合応答が受信されるまで、単にターゲット・メモリ・ブロックのそのコピーを無効にし、１つまたは複数の対応するバスＤＣＢＮ要求を発行することにより、ＣＰＵ  ＤＣＢＮ動作を処理する。
【００６１】
もう一度、ブロック６１２を参照すると、マスタ２３２がそのＬ２キャッシュ・ディレクトリ３０２内のターゲット・メモリ・ブロックのコヒーレンシ状態がＴｘ（たとえば、Ｔ、Ｔｎ、Ｔｅ、またはＴｅｎ）であると判断した場合、マスタ２３２は、ブロック６１４に図示されている通り、そのローカル相互接続１１４およびシステム相互接続１１０上でグローバル範囲のバスＤＣＢＮ要求を発行する。ブロック６１４後に、マスタ２３２はそのＣＰＵ  ＤＣＢＮ要求の結合応答を待つ。結合応答（ＣＲ）の受信に応答して、マスタ２３２はブロック６１６で、結合応答（ＣＲ）が「再試行」を示しているかどうかを判定する。そうである場合、マスタ２３２は、ブロック６１６からブロック６１４に戻るプロセスが示す通り、ＣＰＵ  ＤＣＢＮ要求を再発行する。このようにバスＤＣＢＮ要求を再発行すると、要求元のＬ２キャッシュ２３０によるターゲット・メモリ・ブロックの初期設定の前に、ターゲット・メモリ・ブロックのコピーを保持する他のＬ２キャッシュ２３０のそれぞれがターゲット・メモリ・ブロックのそれぞれのコピーをデータ無効状態に更新することをコミットすることが保証される。これに反して、結合応答が「再試行」を示していないとマスタ２３２がブロック６１６で判断した場合、マスタ２３２は、ブロック６１８に図示されている通り、適切な初期設定値をターゲット・メモリ・ブロックに書き込むことにより、ターゲット・メモリ・ブロックを初期設定する。また、マスタ２３２は、そのＬ２キャッシュ・ディレクトリ３０２内のターゲット・キャッシュ・ラインのコヒーレンシ状態をＭに更新する（ただし、この更新は、ターゲット・メモリ・ブロックに関するコヒーレンシをＴまたはＴｎコヒーレンシ状態に維持するためには不要であり、したがって、このようなメモリ・ブロックについては省略することができる）。その後、プロセスはブロック６３０で終了する。
【００６２】
次に図７に関して説明すると、本発明により統合メモリ・コントローラ２０６などのメモリ・コントローラがメモリ初期設定要求を処理する方法の例示的な一実施形態のハイレベル論理流れ図が示されている。図示されているプロセスは、ＩＭＣ２０６内のスヌーパ２２２によるメモリ・アクセス要求の受信に応答して、ブロック７００から始まる。次にプロセスはブロック７０２に移行し、メモリ・アクセス要求がバスＤＣＢＮ要求であるかどうかをスヌーパ２２２が判定する。そうである場合、プロセスは後述するブロック７１０に移行する。そうではない場合、プロセスはブロック７０４に移行し、スヌーパ２２２がその要求タイプに応じて要求を処理する。その後、プロセスはブロック７３０で終了する。
【００６３】
次にブロック７１０を参照すると、受信した要求がバスＤＣＢＮ要求である場合、スヌーパ２２２は、それがバスＤＣＢＮ要求を処理するために使用可能なリソースを十分備えているかどうかを判定する。そうではない場合、スヌーパ２２２は、ブロック７１２に図示されている通り、「再試行」を示す部分応答（ＰＲ）を提供する。その後、処理はブロック７３０で終了する。しかし、バスＤＣＢＮ要求を処理するために使用可能なリソースを十分備えているとスヌーパ２２２がブロック７１０で判断した場合、スヌーパ２２２は、それがＢＡＲロジック２４０への参照によりバスＤＣＢＮ要求によって指定されたターゲット・アドレスに関するＬＰＣであるかどうかを判定する（ブロック７１４）。スヌーパ２２２が指定ターゲット・メモリ・ブロックに関するＬＰＣでなければ、処理はブロック７３０で終了する。しかし、スヌーパ２２２がそのターゲット・メモリ・ブロックに関するＬＰＣであれば、スヌーパ２２２は、ブロック７２２に図示されている通り、バスＤＣＢＮ要求に関する結合応答（ＣＲ）を受信するのを待つ。結合応答が「再試行」を示している場合、処理はブロック７３０で終了する。しかし、結合応答が「再試行」を示していない場合、スヌーパ２２２は、ブロック７２６に示されている通り、システム・メモリ１０８内のターゲット・メモリ・ブロックを適切な初期設定値に更新する。次にプロセスはブロック７３０で終了する。
【００６４】
本発明の代替実施形態では、スヌーパ２２２は、「再試行」結合応答を受信しない各バスＤＣＢＮ動作に応答してシステム・メモリ１０８内のメモリ・ブロックのコピーを初期設定する必要がないことが認識されるであろう。特に、スヌーパ２３６によって生成された部分応答および応答ロジック２１０によって生成された結合応答が、バスＤＣＢＮ動作に応答してターゲット・メモリ・ブロックの自身のコピーを初期設定するＨＰＣの存在を示している場合、ターゲット・メモリ・ブロックのシステム・メモリ・コピーの初期設定は、リソースの可用性に基づいて省略するかまたは選択的に実行することができる。
【００６５】
次に図８を参照すると、本発明によりキャッシュ・メモリが相互接続上でスヌープされたメモリ初期設定要求を処理する方法の例示的な一実施形態のハイレベル論理流れ図が示されている。図示されているプロセスは、Ｌ２キャッシュ２３０のスヌーパ２３６によるそのローカル相互接続１１４上の要求の受信に応答して、ブロック８００から始まる。次にプロセスはブロック８０２に移行し、受信した動作がバスＤＣＢＮ要求であるかどうかをスヌーパ２３６が判定する。そうではない場合、プロセスはブロック８０４に移行し、スヌーパ２３６が受信した要求の要求タイプに応じて他の処理を実行する。次にプロセスはブロック８５０で終了する。
【００６６】
ブロック８０２に戻ると、受信した動作がバスＤＣＢＮ要求であるという判断に応答して、スヌーパ２３６は、それがバスＤＣＢＮ要求を処理するために使用可能なリソースを十分備えているかどうかを判定する。そうではない場合、スヌーパ２３６は、ブロック８１２に図示されている通り、「再試行」を示す部分応答（ＰＲ）を提供する。その後、処理はブロック８５０で終了する。しかし、バスＤＣＢＮ要求を処理するために使用可能なリソースを十分備えているとスヌーパ２３６がブロック８１０で判断した場合、スヌーパ２３６は、バスＤＣＢＮ要求によって指定されたターゲット・アドレスについて記録されたコヒーレンシ状態がある場合にそのコヒーレンシ状態を決定するために、ブロック８１２でＬ２キャッシュ・ディレクトリ３０２のルックアップを開始する。ターゲット・アドレスがＭｘコヒーレンシ状態（たとえば、ＭまたはＭｅ）に関連していることをＬ２キャッシュ・ディレクトリ３０２が示している場合、スヌーパ２３６は、ブロック８１６に図示されている通り、そのＬ２キャッシュ・アレイ２３０内のターゲット・メモリ・ブロックを初期設定する。その後、処理はブロック８５０で終了する。ターゲット・メモリ・ブロックのコヒーレンシ状態がＭｘではなく、Ｔｘである場合（ブロック８２０）、プロセスはブロック８２２に移行する。
【００６７】
ブロック８２２は、スヌーパ２３６がバスＤＣＢＮ要求の結合応答（ＣＲ）の受信を待っていることを示している。ブロック８２４に示されている通り、結合応答が「再試行」を示していない場合、ターゲット・メモリ・ブロックの他のキャッシュ・コピーがある場合にそのそれぞれが無効にされていることを意味し、スヌーパ２３６は、ブロック８２６に示されている通り、ターゲット・メモリ・ブロックを適切な初期設定値に初期設定する。その後、プロセスはブロック８５０で終了する。しかし、スヌーパ２３６がブロック８２４で「再試行」を示す結合応答を受信した場合、バスＤＣＢＮ要求が再発行されるまで、スヌーパ２３６はターゲット・メモリ・ブロックを初期設定せず、処理はブロック８５０で終了する。
【００６８】
もう一度、ブロック８２０を参照すると、ターゲット・メモリ・ブロックがＬ２キャッシュ・ディレクトリ３０２内のＴｘコヒーレンシ状態に関連していないとスヌーパ２３６が判断した場合、スヌーパ２３６は、ターゲット・メモリ・ブロックのコヒーレンシ状態がＳｘ（たとえば、ＳまたはＳｒ）であるかどうかを判定する。そうではない場合、プロセスはブロック８５０で終了する。しかし、ターゲット・メモリ・ブロックがＬ２キャッシュ・ディレクトリ３０２内のＳｘコヒーレンシ状態に関連している場合、スヌーパ２３６はターゲット・メモリ・ブロックのＳｘコピーを無効にする（ブロック８４２）。その後、プロセスはブロック８５０で終了する。
【００６９】
これまでに述べた通り、本発明は、ターゲット・メモリ・ブロックを初期設定する処理装置、データ処理システム、および方法を提供する。有利には、本発明により、初期設定前または初期設定後に要求元のキャッシュ・メモリがターゲット・メモリ・ブロックの有効なコピーを保持することを必要とせずに、メモリ・ブロックを初期設定することができる。さらに、選択された動作シナリオでは、システム・メモリ内に保持されたターゲット・メモリ・ブロックのコピーを更新せずに、ターゲット・メモリ・ブロックを初期設定することができる。
【００７０】
好ましい実施形態に関して述べたように本発明を詳しく示してきたが、当業者であれば、本発明の精神および範囲を逸脱せずに、形式および詳細について様々な変更が可能であることを理解するであろう。たとえば、本発明の諸機能を指図するプログラム・コードを実行するコンピュータ・システムに関して本発明の諸態様を説明してきたが、代わって本発明はデータ処理システムとともに使用するためのプログラムとして実装可能であることを理解されたい。本発明の諸機能を定義するプログラム・コードは、書換え不能記憶媒体（たとえば、ＣＤ−ＲＯＭ）、書換え可能記憶媒体（たとえば、フレキシブル・ディスクまたはハード・ディスク・ドライブ）、ならびにディジタルおよびアナログ・ネットワークなどの通信媒体を含む、様々な信号担持媒体を介してデータ処理システムに送達することができる。したがって、このような信号担持媒体は、本発明の諸機能を指図するコンピュータ可読命令を担持またはエンコードするときに、本発明の代替実施形態を表すものであることを理解されたい。
【図面の簡単な説明】
【００７１】
【図１】本発明による例示的なデータ処理システムのハイレベル・ブロック図である。
【図２】本発明による処理装置のより詳細なブロック図である。
【図３】図２に示されているＬ２キャッシュ・アレイおよびディレクトリのより詳細なブロック図である。
【図４】図１のデータ処理システムのシステム相互接続上の例示的なトランザクションの時間空間図である。
【図５】本発明の好ましい一実施形態によるドメイン・インジケータを示す図である。
【図６】本発明によりキャッシュ・メモリが関連プロセッサ・コアのメモリ初期設定動作を処理する方法の例示的な一実施形態のハイレベル論理流れ図である。
【図７】本発明によりスヌープ・メモリ・コントローラによりメモリ初期設定要求を処理する方法の例示的な一実施形態のハイレベル論理流れ図である。
【図８】本発明によりスヌープ・キャッシュ・メモリによりメモリ初期設定要求を処理する方法の例示的な一実施形態のハイレベル論理流れ図である。
【図９】本発明によるプログラム・コードのブロック図である。
【符号の説明】
【００７２】
１００：データ処理システム
１０２ａ：処理ノード
１０２ｂ：処理ノード
１０４ａ：処理装置（ＰＵ）
１０４ｂ：処理装置（ＰＵ）
１０４ｃ：処理装置（ＰＵ）
１０４ｄ：処理装置（ＰＵ）
１０８ａ：システム・メモリ
１０８ｂ：システム・メモリ
１０８ｃ：システム・メモリ
１０８ｄ：システム・メモリ
１１０：システム相互接続
１１４：ローカル相互接続
【図１】
2006323845.tif 000006
【図２】
2006323845.tif 000007
【図３】
2006323845.tif 000008
【図４】
2006323845.tif 000009
【図５】
2006323845.tif 000010
【図６】
2006323845.tif 000011
【図７】
2006323845.tif 000012
【図８】
2006323845.tif 000013
【図９】
2006323845.tif 000014