(57)【特許請求の範囲】
【請求項１】
第１の演算処理装置と、主記憶装置と接続された第２の演算処理装置と、第３の演算処理装置とを有する情報処理装置において、
前記第１の演算処理装置は、
データを保持するキャッシュメモリと、
前記データをリプレースするリプレース処理が発生した場合、前記データの状態を示す状態情報に基づき、前記データを前記主記憶装置に書き戻すかを判定する判定部と、
前記判定部の判定結果に基づき、前記データをリプレースするリプレース要求に前記データを含めて前記第２の演算処理装置に発行する発行部とを有し、
前記第２の演算処理装置は、
前記リプレース要求を受信した際に前記第３の演算処理装置からの前記データの読み出し要求を実行中ではない場合、前記データを主記憶装置に書き戻して前記リプレース処理が完了した旨の完了通知を前記第１の演算処理装置に通知し、前記リプレース要求を受信した際に前記読み出し要求を実行中の場合、前記読み出し要求の終了後に前記データを廃棄して前記完了通知を前記第１の演算処理装置に通知する処理部と、
前記読み出し要求を前記第３の演算処理装置から要求された際に前記データを主記憶装置に書き戻す処理を実行中ではない場合、前記第１の演算処理装置に前記第３の演算処理装置への前記データの転送要求を出力する要求部とを有し、
前記第１の演算処理装置はさらに、
前記要求部から前記データの転送要求を受信した場合、前記データを前記第３の演算処理装置に転送するとともに、前記データを前記主記憶装置に書き戻す要求と前記リプレース要求を中止する要求とを前記第２の演算処理装置に転送する転送部
を有することを特徴とする情報処理装置。
【請求項２】
前記第１の演算処理装置はさらに、
前記発行部がリプレース要求を発行した場合、前記リプレース要求を識別する識別子と前記リプレース要求の要求先アドレスとを対応付けたリプレース要求情報に、前記リプレース要求情報が有効である旨を示す有効情報を設定する設定部を有し、
前記転送部は、
前記要求部から前記データの転送要求を受信した際に、前記リプレース要求情報の有効情報に基づき、前記第３の演算処理装置に前記データを転送することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記設定部は、
前記処理部から前記完了通知が通知された場合、前記リプレース要求情報に前記リプレース要求情報が無効である旨を示す無効情報を設定することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記発行部は、
前記判定部が前記データを前記主記憶装置に書き戻さないと判定した場合、前記データのリプレース要求に前記データを破棄する旨の指示を含めて発行し、
前記処理部は、
前記リプレース要求を受信した場合、前記完了通知を前記第１の演算処理装置に通知することを特徴とする請求項１記載の情報処理装置。
【請求項５】
第１の演算処理装置と、主記憶装置と接続された第２の演算処理装置と、第３の演算処理装置とを有する情報処理装置の制御方法において、
前記第１の演算処理装置が有する第１のキャッシュメモリに保持したデータをリプレースするリプレース処理が発生した場合、前記第１の演算処理装置が有する判定部が、前記データの状態を示す状態情報に基づき、前記データを前記主記憶装置に書き戻すかを判定し、
前記判定部の判定結果に基づき、前記第１の演算処理装置が有する発行部が、前記データをリプレースするリプレース要求に前記データを含めて前記第２の演算処理装置に発行し、
前記第２の演算処理装置が前記リプレース要求を受信した際に前記第３の演算処理装置からの前記データの読み出し要求を実行中ではない場合、前記第２の演算処理装置が有する処理部が、前記データを主記憶装置に書き戻して前記リプレース処理が完了した旨の完了通知を前記第１の演算処理装置に通知し、
前記第２の演算処理装置が前記リプレース要求を受信した際に前記読み出し要求を実行中の場合、前記処理部が、前記読み出し要求の終了後に前記データを廃棄して前記完了通知を前記第１の演算処理装置に通知し、
前記読み出し要求を前記第３の演算処理装置から要求された際に前記データを主記憶装置に書き戻す処理を実行中ではない場合、前記第２の演算処理装置が有する要求部が、前記第１の演算処理装置に前記第３の演算処理装置への前記データの転送要求を出力し、
前記要求部から前記データの転送要求を受信した場合、前記第１の演算処理装置が有する転送部が、前記データを前記第３の演算処理装置に転送するとともに、前記データを前記主記憶装置に書き戻す要求と前記リプレース要求を中止する要求とを前記第２の演算処理装置に転送することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
従来、ＮＵＭＡ（Non-Uniform  Memory  Access）の技術を用いた情報処理装置がある。ＮＵＭＡの技術を用いた情報処理装置では、例えば、複数の演算処理装置（以下、ＣＰＵ（Central  Processing  Unit）と記す）それぞれにメモリが接続され、各メモリは、複数のＣＰＵ間で共有される。
【０００３】
１つのメモリを共有するＣＰＵは、プログラムの実行により主記憶装置であるメインメモリから新たなデータを読み出した場合、ＣＰＵに内蔵されたキャッシュメモリにメインメモリからのデータを登録する。ここで、ＣＰＵは、キャッシュメモリに空きがない場合、過去に登録していたエントリを選択し、選択したエントリのデータを新たに読み出したデータに置き換えるリプレース処理を行う。
【０００４】
また、ＣＰＵは、リプレース処理を行う場合、複数のＣＰＵ間で共有されるデータの整合性に関する状態を示すキャッシュステートに基づいて、データの破棄または、当該データをメインメモリへ書き戻すライトバックを実行する。例えば、ＣＰＵは、データのキャッシュステートがデータを変更済みであることを示すダーティであれば、当該データを保持するメインメモリと接続するＣＰＵにデータのライトバックを要求する。また、ＣＰＵは、データのキャッシュステートがデータを変更していないことを示すクリーンであれば、当該データを保持するメモリと接続するＣＰＵにデータの破棄を通知する。
【０００５】
さらに、ＣＰＵがリプレース処理を行うのと同時に、他のＣＰＵからリプレース対象データへフェッチアクセスが発生する場合がある。このような場合、データを保持するメインメモリと接続するＣＰＵは、リプレース処理と、リプレース対象データへのフェッチアクセスとの順序を調停する。
【０００６】
図１７及び図１８を用いて、リプレース処理と、リプレース対象データへのフェッチアクセスとの順序を調停する処理について説明する。なお、以下の説明では、リプレース処理の要求元であるＣＰＵをＬ（Local）−ＣＰＵと記載し、リプレース処理の対象であるデータを保持するメモリと接続するＣＰＵをＨ（Home）−ＣＰＵと記載する。また、リプレース対象データへのフェッチアクセスを要求するＣＰＵをＲ（Remote）−ＣＰＵと記載する。
【０００７】
図１７は、従来のリプレース処理の動作の一例を示すシーケンス図である。図１７は、リプレース処理が、リプレース対象データへのフェッチアクセスに先行する場合を示す。まず、Ｌ−ＣＰＵでリプレース処理が発生した場合に、Ｌ−ＣＰＵは、対象アドレスのＨ−ＣＰＵにリプレース要求を発行する（ステップＳ９０１）。続いて、Ｈ−ＣＰＵでリプレース処理の実行が確定した場合に、Ｈ−ＣＰＵは、Ｌ−ＣＰＵに対して起動許可を発行する（ステップＳ９０２）。
【０００８】
また、Ｈ−ＣＰＵは、Ｌ−ＣＰＵに起動を許可した後に、リプレース対象データへのフェッチアクセス要求をＲ−ＣＰＵから受信する（ステップＳ９０３）。この場合、Ｈ−ＣＰＵは、リプレース処理が完了するまでフェッチアクセスを待機させる（ステップＳ９０４）。
【０００９】
Ｌ−ＣＰＵは、起動許可を受信後に、この時点のリプレース対象データのキャッシュステートを検査する。ここで、Ｌ−ＣＰＵは、データのキャッシュステートがダーティであることを示すＭ(Modified)であるので、ライトバック要求をデータ付で発行する（ステップＳ９０５）。
【００１０】
そして、Ｈ−ＣＰＵは、Ｌ−ＣＰＵから受信したデータのライトバックを実行し、Ｌ−ＣＰＵがデータを保持しないことを示す「Ｌ＝Ｉ」にディレクトリ情報を更新して、リプレース処理の完了をＬ−ＣＰＵに応答する（ステップＳ９０６）。この時点でＬ−ＣＰＵはリプレース対象データを所有していない状態となる。そして、Ｈ−ＣＰＵは、Ｒ−ＣＰＵがダーティな可能性があるデータを保持することを示す「Ｒ＝Ｅ」にディレクトリ情報を更新し、Ｒ−ＣＰＵにフェッチデータを応答する（ステップＳ９０７）。
【００１１】
図１８は、従来のリプレース処理の動作の別の一例を示すシーケンス図である。図１８は、リプレース対象データへのフェッチアクセスが、リプレース処理に先行する場合を示す。
【００１２】
Ｈ−ＣＰＵは、リプレース対象データへのフェッチアクセス要求をＲ−ＣＰＵから受信し（ステップＳ９２０）、要求されたデータをキャッシュメモリに保持するＬ−ＣＰＵにデータの転送を要求する（ステップＳ９２１）。また、Ｈ−ＣＰＵは、Ｌ−ＣＰＵにデータの転送を要求した後に、リプレース要求をＬ−ＣＰＵから受信する（ステップＳ９２２）。この場合、Ｈ−ＣＰＵは、フェッチアクセスが終了するまで、リプレース処理を待機させる（ステップＳ９２３）。
【００１３】
Ｈ−ＣＰＵからデータの転送要求を受信したＬ−ＣＰＵは、リプレース対象データのライトバックをＨ−ＣＰＵに指示するとともに（ステップＳ９２４）、Ｒ−ＣＰＵに要求されたリプレース対象データを転送する（ステップＳ９２５）。そして、Ｌ−ＣＰＵは、リプレース対象データのキャッシュステートを無効であることを示す「Ｉ(Invalid)」に更新する。
【００１４】
そして、Ｈ−ＣＰＵは、ライトバックを実行して、Ｌ−ＣＰＵがデータを保持しないことを示す「Ｌ＝Ｉ」、Ｒ−ＣＰＵがダーティな可能性があるデータを保持することを示す「Ｒ＝Ｅ」にディレクトリ情報を更新する。フェッチアクセスが終了後、Ｈ−ＣＰＵは、Ｌ−ＣＰＵに対して起動許可を発行する（ステップＳ９２６）。
【００１５】
Ｌ−ＣＰＵは、起動許可を受信し、その時点のリプレース対象データのキャッシュステートが無効であることを示す「Ｉ」であるので、データの破棄をＨ−ＣＰＵに指示する（ステップＳ９２７）。また、Ｈ−ＣＰＵは、Ｒ−ＣＰＵがクリーンなデータを保持することを示す「Ｓ」にディレクトリ情報を更新する。そして、Ｈ−ＣＰＵは、リプレース処理の完了をＬ−ＣＰＵに応答する（ステップＳ９２８）。
【００１６】
このように、情報処理装置において、Ｈ−ＣＰＵは、リプレース処理と、リプレース対象データへのフェッチアクセスとの順序を調停する。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００７−４８３１４号公報
【特許文献２】特開２００７−１９９９９９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、上述した従来の技術では、リプレース処理の通信量が増加するという課題がある。
【００１９】
具体的には、Ｌ−ＣＰＵは、Ｈ−ＣＰＵにリプレース処理を要求して起動の許可を得る。そして、Ｌ−ＣＰＵは、起動の許可を得た後、ライトバック要求またはデータを破棄する旨をＨ−ＣＰＵに送信し、リプレース処理の完了応答をＨ−ＣＰＵから受信する。このように、Ｌ−ＣＰＵがリプレース処理を要求してから完了までに、Ｈ−ＣＰＵとの間で２往復の通信が発生する。
【００２０】
さらに、大規模システムにおいては、リプレースを要求するＬ−ＣＰＵとＨ−ＣＰＵとの間に複数のＸＢ（クロスバスイッチ）が介在することにより、Ｌ−ＣＰＵとＨ−ＣＰＵとの物理的距離が長い場合がある。このような場合には、Ｌ−ＣＰＵとＨ−ＣＰＵとの通信時間が増加するので、リプレース処理と同一アドレスへのフェッチアクセスの完了が遅延する。
【００２１】
１つの側面では、演算処理装置間のリプレース処理の通信量を削減することができる情報処理装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２２】
第１の案では、第１の演算処理装置と、主記憶装置と接続された第２の演算処理装置と、第３の演算処理装置とを有する情報処理装置である。第１の演算処理装置は、データを保持するキャッシュメモリと、データをリプレースするリプレース処理が発生した場合、データの状態を示す状態情報に基づき、データを主記憶装置に書き戻すかを判定する。第１の演算処理装置は、判定結果に基づき、データをリプレースするリプレース要求にデータを含めて第２の演算処理装置に発行する。第２の演算処理装置は、リプレース要求を受信した際に第３の演算処理装置からのデータの読み出し要求を実行中ではない場合、データを主記憶装置に書き戻してリプレース処理が完了した旨の完了通知を第１の演算処理装置に通知する。また、第２の演算処理装置は、リプレース要求を受信した際に読み出し要求を実行中の場合、読み出し要求の終了後にデータを廃棄して完了通知を第１の演算処理装置に通知する。また、第２の演算処理装置は、読み出し要求を第３の演算処理装置から要求された際にデータを主記憶装置に書き戻す処理を実行中ではない場合、第１の演算処理装置に第３の演算処理装置へのデータの転送要求を出力する。そして、第１の演算処理装置は、データの転送要求を受信した場合、データを第３の演算処理装置に転送するとともに、データを主記憶装置に書き戻す要求とリプレース要求を中止する要求とを第２の演算処理装置に転送する。
【発明の効果】
【００２３】
本願発明によれば、演算処理装置間のリプレース処理の通信量を削減することができる。
【図面の簡単な説明】
【００２４】
【図１】図１は、実施例１に係る情報処理システムの構成の一例を示す図である。
【図２】図２は、実施例１に係るＳＢの構成の一例を示す図である。
【図３】図３は、実施例１に係るＣＰＵの構成の一例を示す図である。
【図４】図４は、実施例１に係るキャッシュ制御部の構成の一例を示す図である。
【図５】図５は、実施例１に係るコヒーレント制御部の構成の一例を示す図である。
【図６】図６は、リプレース処理記録部が記憶する情報の一例を示す図である。
【図７】図７は、ライトバックキャンセル記録部が記憶する情報の一例を示す図である。
【図８】図８は、実施例１に係る情報処理装置によるリプレース処理の動作の一例を示すシーケンス図である。
【図９】図９は、実施例１に係る情報処理装置によるリプレース処理の動作の別の一例を示すシーケンス図である。
【図１０】図１０は、Ｌ−ＣＰＵによるリプレース処理を要求する処理の処理手順を示す図である。
【図１１】図１１は、Ｈ−ＣＰＵによるデータ転送要求処理の処理手順を示す図である。
【図１２】図１２は、Ｈ−ＣＰＵによるライトバック要求を保留する処理の処理手順を示す図である。
【図１３】図１３は、Ｌ−ＣＰＵによるデータ転送要求に応答する処理の処理手順を示す図である。
【図１４】図１４は、Ｈ−ＣＰＵによるデータ転送応答を受信する処理の処理手順を示す図である。
【図１５】図１５は、Ｈ−ＣＰＵによるライトバック起動処理の処理手順を示す図である。
【図１６】図１６は、Ｌ−ＣＰＵによるリプレース完了処理の処理手順を示す図である。
【図１７】図１７は、従来のリプレース処理の動作の一例を示すシーケンス図である。
【図１８】図１８は、従来のリプレース処理の動作の別の一例を示すシーケンス図である。
【発明を実施するための形態】
【００２５】
以下に、本願の開示する情報処理装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００２６】
［実施例１に係る情報処理システムの構成］
図１を用いて実施例１に係る情報処理システムの構成について説明する。図１は、実施例１に係る情報処理システムの構成の一例を示す図である。図１に示すように、実施例１に係る情報処理システム１は、ＸＢ（クロスバスイッチ）２ａとＸＢ２ｂと、ＳＢ（システムボード）３ａ〜ＳＢ３ｈとを有する。なお、図１に示すクロスバスイッチおよびシステムボードの数はあくまで例示であり、これに限定されるものではない。
【００２７】
ＸＢ２ａは、各ＳＢ３ａ〜３ｈ間でやり取りされるデータの経路を動的に選択するとともに、当該データを転送するデータ転送装置としてのスイッチである。ここで、データには、プログラムや演算処理結果などが含まれる。なお、ＸＢ２ｂの構成は、ＸＢ２ａと同様であるので、詳細な説明は省略する。また、以下の説明では、ＸＢ２ａ〜ＸＢ２ｂを一般化してＸＢ２と称して適宜説明する。
【００２８】
ＳＢ３ａは、ＣＰＵとメモリとを有し、各種演算処理を実行する。なお、ＳＢ３ｂからＳＢ３ｈの構成は、ＳＢ３ａと同様であるので、詳細な説明は省略する。また、以下の説明では、ＳＢ３ａ〜ＳＢ３ｈを一般化してＳＢ３と称して説明する。
【００２９】
［実施例１に係るＳＢの構成］
次に、図２を用いて、ＳＢの構成例について説明する。図２は、実施例１に係るＳＢの構成の一例を示す図である。図２に示す例では、ＳＢ３は、主記憶装置としてのメモリ１０ａ〜メモリ１０ｄと、演算処理装置としてのＣＰＵ２０ａ〜ＣＰＵ２０ｄとを有する。各ＣＰＵ２０ａ〜ＣＰＵ２０ｄは、相互に接続されており、本実施の形態で開示する演算処理装置である。また、ＣＰＵ２０ａ〜ＣＰＵ２０ｄは、それぞれメモリ１０ａ〜メモリ１０ｄと接続される。
【００３０】
メモリ１０ａは、例えば、ＲＡＭ（Random  Access  Memory）であり、データを記憶する。また、メモリ１０ａ上には、要求されたアドレスのデータがどのＣＰＵに保持されているかを示すディレクトリ情報がマッピングされる。
【００３１】
ディレクトリ情報には、「ＩＮＶ（Invalid）」、「ＳＨ（Shared）」、「ＥＸ（Exclusive）」がある。ここで、「ＩＮＶ」は、データが他のＣＰＵに保持されていないことを示す。また、「ＳＨ」は、データが他のＣＰＵにクリーンな状態で保持されていることを示す。そして、「ＥＸ」は、データが単一のＣＰＵに保持され、ダーティな可能性があることを示す。
【００３２】
また、ディレクトリ情報は、このディレクトリ情報を有するメモリと接続するＣＰＵにより管理される。なお、メモリ１０ａ〜メモリ１０ｄは、同様の構成を有するので、以下の説明では、メモリ１０ａ〜メモリ１０ｄを一般化してメモリ１０と称して適宜説明する。
【００３３】
ＣＰＵ２０ａは、メインメモリであるメモリ１０ａに格納されたデータを取得し、また、他のＣＰＵ２０ｂ〜ＣＰＵ２０ｄを介して、各メモリ１０ｂ〜１０ｄに格納されたデータを取得する。また、ＣＰＵ２０ａ〜ＣＰＵ２０ｄは、ＸＢ２ａと接続されており、ＸＢ２ａに接続された図示しないＸＢ２ｂと接続されたＳＢ３が有するメモリに格納されたデータを取得する。そして、ＣＰＵ２０ａは、メモリから読出したデータを用いて、演算処理を実行する。なお、ＣＰＵ２０ａ〜ＣＰＵ２０ｄは、同様の構成を有するので、以下の説明では、ＣＰＵ２０ａ〜ＣＰＵ２０ｄを一般化してＣＰＵ２０と称して適宜説明する。また、ＣＰＵ２０の詳細な構成については、図３を用いて後述する。
【００３４】
また、このような、データを記憶するメモリ１０に接続されたＣＰＵ２０を複数有する情報処理システム１では、ＣＰＵ２０は、メモリ１０が記憶するデータの一部をキャッシュメモリに保持する。そして、ＣＰＵ２０は、キャッシュメモリが保持するデータのリプレース処理が発生した場合、データのキャッシュステートに基づいて、リプレース処理対象のデータをメモリ１０へ書き戻すか否かを判定する。なお、ここでは、ＣＰＵ２０ａが、ＣＰＵ２０ｂに接続されたメモリ１０ｂへデータを書き戻す例を説明する。
【００３５】
ここで、ＣＰＵ２０ａは、データを書き戻すと判定した場合に、データのリプレース要求にメモリ１０ｂへの書き戻し対象のデータを含めて発行し、発行したリプレース要求をＣＰＵ２０ｂに送信する。また、ＣＰＵ２０ｂは、メモリ１０ｂへの書き戻し対象のデータを含むリプレース要求をＣＰＵ２０ａから受信するとともに、メモリ１０ｂへの書き戻し対象のデータを読み出すフェッチ要求を他のＣＰＵから受信する。なお、ここでは、ＣＰＵ２０ｃが、書き戻し対象のデータの読み出しを要求する例を説明する。
【００３６】
ＣＰＵ２０ｂは、ＣＰＵ２０ａからリプレース要求を受信した際に、メモリ１０ｂへの書き戻し対象のデータを読み出すフェッチ要求を実行中ではない場合には、書き戻し対象のデータをメモリ１０ｂに書き戻してリプレース処理が完了した旨をＣＰＵ２０ａに応答する。また、ＣＰＵ２０ｂは、ＣＰＵ２０ａからリプレース要求を受信した際に、ＣＰＵ２０ｃからのメモリ１０ｂへの書き戻し対象のデータを読み出すフェッチ要求を実行中の場合には、フェッチ要求の処理の終了後に、書き戻し対象のデータを破棄してリプレース処理が完了した旨をＣＰＵ２０ａに応答する。
【００３７】
なお、以下の説明では、リプレース処理の要求元であるＣＰＵをＬ（Local）−ＣＰＵと記載し、リプレース処理の対象であるデータを保持するメモリと接続するＣＰＵをＨ（Home）−ＣＰＵと記載する。また、リプレース対象データへフェッチアクセスを要求するＣＰＵをＲ（Remote）−ＣＰＵと記載する。
【００３８】
［実施例１に係るＣＰＵの構成］
次に、図３を用いて、ＣＰＵの構成例について説明する。図３は、実施例１に係るＣＰＵの構成の一例を示す図である。図３に示す例では、ＣＰＵ２０は、通信制御部２１、コア２２ａ〜コア２２ｆ、Ｌ２（Level  2）キャッシュ制御部２３、メモリ制御部２４、及びコヒーレント制御部２５を有する。なお、ＣＰＵ２０が有するコアの数は、図示に限定されるものではない。
【００３９】
通信制御部２１は、ＸＢ２を介したＣＰＵ２０と他のＣＰＵ２０との間の通信を制御する。例えば、通信制御部２１は、データのフェッチアクセスを要求するコマンドをＬ２キャッシュ制御部２３から受付け、受付けたコマンドをＨ−ＣＰＵに送信する。また、通信制御部２１は、データのリプレース処理を要求するコマンドをコヒーレント制御部２５から受付け、受付けたコマンドをＨ−ＣＰＵに送信する。
【００４０】
また、通信制御部２１は、リプレース処理が完了したことを示すコマンドや、データの転送を要求するコマンドをＨ−ＣＰＵから受信し、受信したコマンドをコヒーレント制御部２５に出力する。
【００４１】
また、通信制御部２１は、データのリプレース処理を要求するコマンドをＬ−ＣＰＵから受信し、受信したコマンドをコヒーレント制御部２５に出力する。また、通信制御部２１は、データのフェッチアクセスを要求するコマンドをＲ−ＣＰＵから受信し、受信したコマンドをコヒーレント制御部２５に出力する。
【００４２】
また、通信制御部２１は、リプレース処理が完了したことを示すコマンドや、データの転送を要求するコマンドをコヒーレント制御部２５から受付け、受付けたコマンドをＬ−ＣＰＵへ送信する。
【００４３】
コア２２ａは、図示しないＬ１（Level  1）キャッシュを有し、Ｌ１キャッシュが記憶するＬ１データを用いて、各種演算処理を実行するＣＰＵ２０のプロセッサコアである。また、Ｌ１キャッシュに格納されるデータには、各キャッシュデータの状態を示すＬ１タグが付加される。なお、Ｌ１キャッシュに格納されるデータのことをＬ１データと称する。また、キャッシュデータの状態には、登録されていないことを示す「Ｉｎｖａｌｉｄ（Ｉ）」、共有型であり、かつクリーンな状態であることを示す「Ｓｈａｒｅｄ（Ｓ）」が含まれる。また、キャッシュデータの状態には、配排他型であり、かつクリーンな状態であることを示す「Ｅｘｃｌｕｓｉｖｅ（Ｅ）」、排他型であり、かつダーティな状態であることを示す「Ｍｏｄｉｆｉｅｄ（Ｍ）」が含まれる。なお、以下の説明では、キャッシュデータの状態を「キャッシュステート」と適宜記載する。
【００４４】
また、コア２２ａは、Ｌ１キャッシュにデータが保持されておらずキャッシュミスが発生した場合には、キャッシュミスが発生したデータをＬ２キャッシュ制御部２３に要求する。なお、コア２２ｂ〜コア２２ｆの構成は、コア２２ａの構成と同様である。また、以下の説明では、コア２２ａ〜コア２２ｆを一般化してコア２２と称して適宜説明する。
【００４５】
Ｌ２キャッシュ制御部２３は、図示しないＬ２キャッシュを有し、Ｌ２キャッシュの制御と、各コア間のＬ１キャッシュのコヒーレント制御を実行する。ここで、Ｌ２キャッシュに格納されるデータには、各キャッシュデータの状態を示すＬ２タグが付加される。なお、Ｌ２キャッシュに格納されるデータのことをＬ２データと称する。また、キャッシュデータの状態は、Ｌ１キャッシュに格納されるデータと同様に、「Ｉ」、「Ｓ」、「Ｅ」、「Ｍ」のいずれかである。
【００４６】
例えば、Ｌ２キャッシュ制御部２３は、コア２２からデータを要求された場合、Ｌ２キャッシュを検索し、要求されたデータが保持されているか否かを判定する。ここで、Ｌ２キャッシュ制御部２３は、Ｌ２キャッシュに要求されたデータが保持されていると判定した場合、要求されたデータをコア２２に出力する。
【００４７】
また、Ｌ２キャッシュ制御部２３は、Ｌ２キャッシュに要求されたデータが保持されていないと判定した場合、いずれのＣＰＵがＨ−ＣＰＵであるか否かを判定する。Ｌ２キャッシュ制御部２３は、ＣＰＵ２０が有するアドレスマップを参照し、要求されたデータのメモリアドレスに対応付けられたＣＰＵを識別する。なお、アドレスマップは、アクセス対象となるデータのメモリアドレスと、メモリアドレスが示す記憶領域にアクセスするＣＰＵを一意に示す情報とを対応付けて記憶する。ここで、Ｌ２キャッシュ制御部２３は、自装置がＨ−ＣＰＵであると判定した場合、コヒーレント制御部２５に要求されたデータの読出しを要求する。そして、Ｌ２キャッシュ制御部２３は、コヒーレント制御部２５を介してメモリ１０から読出したデータをＬ２キャッシュに格納する。
【００４８】
また、Ｌ２キャッシュ制御部２３は、他のＣＰＵがＨ−ＣＰＵであると判定した場合、通信制御部２１を介してＨ−ＣＰＵにデータの転送を要求する。そして、Ｌ２キャッシュ制御部２３は、通信制御部２１を介してデータを保持するＣＰＵからデータを受信し、受信したデータをＬ２キャッシュに格納する。ここで、Ｌ２キャッシュ制御部２３は、キャッシュステートを変更する。
【００４９】
また、Ｌ２キャッシュ制御部２３は、Ｌ２キャッシュに空き容量がない場合、過去に登録していたエントリを選択し、選択したデータを新たに読み出したデータに置き換えるリプレース処理を行う旨をコヒーレント制御部２５に通知する。なお、Ｌ２キャッシュ制御部２３によるリプレース処理の詳細については、図４を用いて後述する。
【００５０】
メモリ制御部２４は、自制御部と接続するメモリ１０との情報のやり取りを制御する。例えば、メモリ制御部２４は、コヒーレント制御部２５からデータの読出しを指示された場合、データの読出しを指示されたデータとディレクトリ情報とを自制御部と接続するメモリ１０から読出してコヒーレント制御部２５に出力する。また、メモリ制御部２４は、コヒーレント制御部２５から受付けたデータやディレクトリ情報を自制御部と接続するメモリ１０に書込む。
【００５１】
コヒーレント制御部２５は、他のＣＰＵとの間のキャッシュデータのコヒーレント制御を実行する。例えば、コヒーレント制御部２５は、通信制御部２１を介して他のＣＰＵからメモリ１０に格納されたデータを要求された場合、あるいはＬ２キャッシュ制御部２３からデータを要求された場合、以下の処理を実行する。すなわち、コヒーレント制御部２５は、メモリ制御部２４を介してデータとディレクトリ情報とをメモリ１０から取得し、取得したディレクトリ情報を解析する。そして、コヒーレント制御部２５は、解析結果に基づいて、Ｌ２キャッシュ制御部２３または通信制御部２１に指示を出力する。
【００５２】
また、コヒーレント制御部２５は、通信制御部２１を介してＨ−ＣＰＵからデータの転送要求を受信した場合、転送要求対象のデータをＬ２キャッシュから読出し、通信制御部２１を介してＲ−ＣＰＵに読出したデータを転送する。
【００５３】
また、コヒーレント制御部２５は、リプレース処理を行う旨をＬ２キャッシュ制御部２３から通知された場合、リプレース要求を発行し、データを保持するメモリと接続するＣＰＵにリプレース要求を送信する。
【００５４】
また、コヒーレント制御部２５は、他のＣＰＵからリプレース処理を要求された場合、リプレース処理を実行し、リプレース処理の完了後に、リプレース処理の要求元のＣＰＵにリプレース処理の完了を応答する。なお、コヒーレント制御部２５によるリプレース処理の詳細については、図５を用いて後述する。
【００５５】
［実施例１に係るキャッシュ制御部の構成］
次に、図４を用いて、実施例１に係るＬ２キャッシュ制御部２３の機能構成について説明する。図４は、実施例１に係るキャッシュ制御部の機能構成の一例を示す図である。なお、ここでは、Ｌ２キャッシュ制御部２３が有する機能のうちリプレース処理に関わる機能について説明する。
【００５６】
図４に示す例では、Ｌ２キャッシュ制御部２３は、リプレース処理記録部３１と、キャッシュデータ部３２と、キャッシュタグ部３３と、コマンド受信部３４と、アクセス実行部３５と、データ応答部３６と、を有する。
【００５７】
リプレース処理記録部３１は、リプレース処理が要求中であるか否かを示す情報を記憶する。なお、リプレース処理記録部３１が記憶する情報については、図６を用いて後述する。
【００５８】
キャッシュデータ部３２は、自装置のメモリ１０または、他のＣＰＵのメモリから読み出したデータを保持するＬ２キャッシュである。キャッシュタグ部３３は、キャッシュデータ部３２が保持する各キャッシュデータの状態を示すＬ２タグを保持する。
【００５９】
ここで、キャッシュデータの状態には、登録されていないことを示す「Ｉｎｖａｌｉｄ（Ｉ）」、共有型でありかつクリーンな状態であることを示す「Ｓｈａｒｅｄ（Ｓ）」が含まれる。また、キャッシュデータの状態には、排他型でありかつクリーンな状態であることを示す「Ｅｘｃｌｕｓｉｖｅ（Ｅ）」、排他型でありかつダーティな状態であることを示す「Ｍｏｄｉｆｉｅｄ（Ｍ）」が含まれる。なお、以下の説明では、キャッシュデータの状態を「キャッシュステート」と適宜記載する。
【００６０】
コマンド受信部３４は、データを要求するコマンドをコア２２から受信する。そして、コマンド受信部３４は、受信したコマンドをアクセス実行部３５に出力する。
【００６１】
アクセス実行部３５は、コマンドをコマンド受信部３４から受付け、コア２２に応答するデータを検索する。例えば、アクセス実行部３５は、メモリ１０から新たなデータを読み出した場合、キャッシュデータ部３２に読み出したデータを登録する。ここで、アクセス実行部３５は、キャッシュデータ部３２に空き領域がない場合、過去に登録していたエントリを選択し、選択したデータを新たに読み出したデータに置き換えるリプレース処理を行う。
【００６２】
また、アクセス実行部３５は、リプレース処理を行う場合、キャッシュタグ部３３からキャッシュステートを読出して、データがダーティであることを示す「Ｅ」であるか否かを判定する。ここで、アクセス実行部３５は、データがダーティである場合、データを保持するメモリにデータを書き戻すライトバックを実行すると判定する。アクセス実行部３５は、ライトバックを実行すると判定した場合、データをコヒーレント制御部２５に出力するとともに、リプレース要求を発行する旨をコヒーレント制御部２５に指示する。
【００６３】
また、アクセス実行部３５は、データがダーティではない場合、ライトバックを実行しないと判定する。そして、アクセス実行部３５は、データを破棄する旨を含んだリプレース要求を発行する旨をコヒーレント制御部２５に指示する。
【００６４】
データ応答部３６は、コア２２から要求されたデータをキャッシュデータ部３２から読出してコア２２に応答する。
【００６５】
［実施例１に係るコヒーレント制御部の構成］
次に、図５を用いて、コヒーレント制御部２５の機能構成について説明する。図５は、実施例１に係るコヒーレント制御部の機能構成の一例を示す図である。なお、ここでは、コヒーレント制御部２５が有する機能のうちリプレース処理に関わる機能について説明する。
【００６６】
図５に示す例では、コヒーレント制御部２５は、ライトバックキャンセル記録部４１と、コマンド受信部４２と、ディレクトリ検査アクセス実行部４３と、アドレスロック制御部４４と、コマンド発行／応答部４５と、データ応答部４６とを有する。
【００６７】
ライトバックキャンセル記録部４１は、リプレース対象データのライトバックを中止しているか否かを示す情報を記憶する。なお、ライトバックキャンセル記録部４１が記憶する情報については、図７を用いて後述する。
【００６８】
コマンド受信部４２は、通信制御部２１を介して他のＣＰＵから、あるいは自装置のＬ２キャッシュ制御部２３からコマンドを受信する。そして、コマンド受信部４２は、受信したコマンドをディレクトリ検査アクセス実行部４３に出力する。
【００６９】
ディレクトリ検査アクセス実行部４３は、コマンド受信部４２からコマンドを受付けた場合、リプレース要求の発行を確定する処理や、リプレース処理の実行、あるいは、リプレース処理とフェッチアクセスとを調停する処理を実行する。
【００７０】
まず、ディレクトリ検査アクセス実行部４３によるリプレース要求の発行を確定する処理について説明する。例えば、ディレクトリ検査アクセス実行部４３は、ライトバックを実行すると判定した場合、データを含んだリプレース要求を発行し、データを保持するメモリに接続するＣＰＵに送信することを確定する。また、ディレクトリ検査アクセス実行部４３は、ライトバックを実行しないと判定した場合、データを破棄する旨を含んだリプレース要求を発行し、データを保持するメモリと接続するＣＰＵに送信することを確定する。
【００７１】
また、ディレクトリ検査アクセス実行部４３は、リプレース要求を他のＣＰＵから受信した場合、アドレスがロックされているか否かを検査する。ディレクトリ検査アクセス実行部４３は、アドレスがロックされていると判定した場合、アドレスのロックが解除されるまで、リプレース処理を待機させる。
【００７２】
また、ディレクトリ検査アクセス実行部４３は、アドレスがロックされていないと判定した場合、あるいは、アドレスのロックが解除されたと判定した場合、ライトバックを要求されたか否かを判定する。ディレクトリ検査アクセス実行部４３は、ライトバックを要求されていない場合、データを破棄する旨の通知を受付け、ディレクトリ情報を更新して、リプレース処理が完了した旨をコマンド発行／応答部４５に通知する。
【００７３】
また、ディレクトリ検査アクセス実行部４３は、ライトバックを要求された場合、ライトバックキャンセル記録部４１にライトバックの中止が記録されているか否かを判定する。ディレクトリ検査アクセス実行部４３は、ライトバックキャンセル記録部４１にライトバックの中止が記録されていない場合、ディレクトリ情報を更新し、ライトバックを実行する。そして、ディレクトリ検査アクセス実行部４３は、リプレース処理が完了した旨をコマンド発行／応答部４５に通知する。
【００７４】
また、ディレクトリ検査アクセス実行部４３は、ライトバックキャンセル記録部４１にライトバックの中止が記録されている場合、ライトバック対象データを破棄し、リプレース処理が完了した旨をコマンド発行／応答部４５に通知する。
【００７５】
また、ディレクトリ検査アクセス実行部４３は、フェッチアクセス要求を受信した場合、アドレスがロックされているか否かを検査する。そして、ディレクトリ検査アクセス実行部４３は、アドレスがロックされていると判定した場合、アドレスのロックが解除されるまで、フェッチアクセスを待機させる。
【００７６】
また、ディレクトリ検査アクセス実行部４３は、フェッチアクセス要求を受信した際に、アドレスがロックされていないと判定した場合、あるいは、アドレスのロックが解除されたと判定した場合、メモリ制御部２４を介してディレクトリ情報を読出す。そして、ディレクトリ検査アクセス実行部４３は、読出したディレクトリ情報に基づいて、データ応答部４６またはコマンド発行／応答部４５に指示を出力する。
【００７７】
例えば、ディレクトリ検査アクセス実行部４３は、データが単一のＣＰＵに保持され、ダーティな可能性があることを示す「ＥＸ」であれば、フェッチアクセス対象データを保持するＣＰＵに、フェッチアクセス要求元のＣＰＵにデータを転送させる。また、ディレクトリ検査アクセス実行部４３は、データが単一のＣＰＵに保持され、ダーティな可能性があることを示す「ＥＸ」でなければ、フェッチアクセス対象データをフェッチアクセス要求元のＣＰＵに転送する。
【００７８】
また、ディレクトリ検査アクセス実行部４３は、転送要求を受信した場合、リプレース処理記録部３１を参照してリプレース処理を要求中であるか否かを判定する。ディレクトリ検査アクセス実行部４３は、リプレース処理を要求中ではない場合、転送要求されたデータを要求元のＣＰＵに転送する。また、ディレクトリ検査アクセス実行部４３は、リプレース処理を要求中である場合、転送要求されたデータを要求元のＣＰＵに転送するとともに、Ｈ−ＣＰＵにライトバックの中止を要求する。
【００７９】
アドレスロック制御部４４は、ディレクトリ検査アクセス実行部４３から処理が要求されたアドレスに対して、処理が実行中であることを示すアドレスロックをかける。また、アドレスロック制御部４４は、ディレクトリ検査アクセス実行部４３から処理が要求されたアドレスに対して、既にアドレスロックをかけている場合には、アドレスがロックされていることをディレクトリ検査アクセス実行部４３に通知する。
【００８０】
また、アドレスロック制御部４４は、ディレクトリ検査アクセス実行部４３から処理が終了したことを通知された場合、アドレスロックをかけていたアドレスに対してアドレスロックを解除する。
【００８１】
コマンド発行／応答部４５は、ディレクトリ検査アクセス実行部４３から受付けたデータやコマンドを通信制御部２１に出力する。データ応答部４６は、ディレクトリ検査アクセス実行部４３から受付けたデータを自装置のＬ２キャッシュ制御部２３に出力する。
【００８２】
次に、図６を用いて、リプレース処理記録部３１が記憶する情報の一例について説明する。図６は、リプレース処理記録部が記憶する情報の一例を示す図である。図６に示すように、リプレース処理記録部３１は、「ＩＤ」と「有効ビット」と「対象アドレス」とを対応付けた情報を記憶する。
【００８３】
ここで、リプレース処理記録部３１が記憶する「ＩＤ」は、要求されたリプレース処理を識別する識別子を示す。例えば、「ＩＤ」には、「０ｘ００」、「０ｘ０１」などの値が格納される。
【００８４】
また、リプレース処理記録部３１が記憶する「有効ビット」は、「ＩＤ」に対応するリプレース処理を要求中であるか否かを示す情報である。例えば、「有効ビット」には、リプレース処理を要求中であることを示す「１」、または、リプレース処理を要求中ではないことを示す「０」が格納される。
【００８５】
また、リプレース処理記録部３１が記憶する「対象アドレス」は、リプレース処理の要求先アドレスを示す。例えば、「対象アドレス」には、「０ｘ０００００００００」や「０ｘ３ＦＦＦＦＦＦＦ」などのアドレスが格納される。
【００８６】
図６に示す例では、リプレース処理記録部３１は、アドレス「０ｘ３ＦＦＦＦＦＦＦ」に対するリプレース処理をＩＤ「０ｘ０１」として要求中であることを示す。
【００８７】
次に、図７を用いて、ライトバックキャンセル記録部４１が記憶する情報の一例について説明する。図７は、ライトバックキャンセル記録部が記憶する情報の一例を示す図である。図７に示すように、ライトバックキャンセル記録部４１は、「ＩＤ」とＣＰＵごとの「中止ビット」とを対応付けた情報を記憶する。
【００８８】
ここで、ライトバックキャンセル記録部４１が記憶する「ＩＤ」は、リプレース処理記録部３１が記憶する「ＩＤ」と同様に、リプレース処理を識別する識別子を示す。また、ライトバックキャンセル記録部４１が記憶する「中止ビット」は、各ＣＰＵから要求されたリプレース処理のライトバックを中止しているか否かを示す情報である。
【００８９】
例えば、「中止ビット」には、要求されたリプレース処理のライトバックを中止していることを示す「１」、要求されたリプレース処理のライトバックを中止していないことを示す「０」が格納される。また、各ＣＰＵの識別子として「ＣＰＵ＃０」、「ＣＰＵ＃１」、「ＣＰＵ＃Ｎ」が格納される。
【００９０】
図７に示す例では、ライトバックキャンセル記録部４１は、「ＣＰＵ＃０」からＩＤ「０ｘ００」として要求されたリプレース処理のライトバックを中止していることを示す。また、ライトバックキャンセル記録部４１は、「ＣＰＵ＃１」からＩＤ「０ｘ０１」として要求されたリプレース処理のライトバックを中止していることを示す。
【００９１】
図８及び図９を用いて、リプレース処理と、リプレース対象データへのフェッチアクセスとの順序を調停する処理について説明する。図８は、実施例１に係る情報処理装置によるリプレース処理の動作の一例を示すシーケンス図である。図８は、リプレース処理が、リプレース対象データへのフェッチアクセスに先行する場合を示す。
【００９２】
図８に示すように、Ｌ−ＣＰＵは、リプレース処理が発生した場合に、キャッシュステートを検査し、データがダーティであることを示す「Ｍ」であることから、ライトバックを要求すると判定する。そして、Ｌ−ＣＰＵは、対象アドレスのＨ−ＣＰＵにデータを含めたリプレース要求を発行する（ステップＳ１）。
【００９３】
続いて、Ｈ−ＣＰＵは、ライトバックを実行し、Ｌ−ＣＰＵに対応するディレクトリ情報を「Ｌ＝Ｉ」に更新する。そして、Ｈ−ＣＰＵは、リプレース処理の完了をＬ−ＣＰＵに応答する（ステップＳ２）。
【００９４】
また、Ｈ−ＣＰＵは、リプレース処理を実行中に、リプレース対象データへのフェッチアクセスをＲ−ＣＰＵから受信する（ステップＳ３）。この場合、Ｈ−ＣＰＵは、リプレース処理が完了するまでフェッチアクセスを待機させる（ステップＳ４）。
【００９５】
Ｈ−ＣＰＵは、Ｌ−ＣＰＵにリプレース処理の完了を応答した後、Ｒ−ＣＰＵに対するディレクトリ情報を「Ｒ＝Ｅ」に更新し、フェッチアクセス対象データをＲ−ＣＰＵに応答する（ステップＳ５）。
【００９６】
図９は、実施例１に係る情報処理装置によるリプレース処理の動作の別の一例を示すシーケンス図である。図９は、リプレース対象データへのフェッチアクセスが、リプレース処理に先行する場合を示す。
【００９７】
図９に示すように、Ｌ−ＣＰＵは、リプレース処理が発生した場合に、キャッシュステートを検査し、データがダーティであることを示す「Ｍ」であることから、ライトバックを要求すると判定する。そして、Ｌ−ＣＰＵは、対象アドレスのＨ−ＣＰＵにデータを含めたリプレース要求を発行する（ステップＳ１１）。
【００９８】
また、Ｈ−ＣＰＵは、Ｌ−ＣＰＵからリプレース要求を受信するより前に、リプレース対象データへのフェッチアクセスをＲ−ＣＰＵから受信し（ステップＳ１２）、要求されたデータを保持するＬ−ＣＰＵにデータの転送を要求する（ステップＳ１３）。なお、Ｈ−ＣＰＵは、フェッチアクセスが終了するまで、Ｌ−ＣＰＵから受信したリプレース処理を待機させる（ステップＳ１４）。
【００９９】
Ｌ−ＣＰＵは、リプレース対象データをＨ−ＣＰＵにライトバックさせるとともにライトバックの中止をＨ−ＣＰＵに通知する（ステップＳ１５）。また、Ｌ−ＣＰＵは、Ｒ−ＣＰＵに要求されたリプレース対象データを転送する（ステップＳ１６）。
【０１００】
続いて、Ｈ−ＣＰＵは、ライトバックを実行した後、リプレース対象データを破棄する。そして、Ｈ−ＣＰＵは、Ｌ−ＣＰＵ及びＲ−ＣＰＵに対応するディレクトリ情報を「Ｌ＝Ｉ、Ｒ＝Ｓ」に更新する。そして、Ｈ−ＣＰＵは、リプレース処理の完了をＬ−ＣＰＵに応答する（ステップＳ１７）。
【０１０１】
次に、図１０から図１６を用いて、情報処理装置による処理の処理手順について説明する。図１０から図１６では、Ｈ−ＣＰＵが、Ｌ−ＣＰＵから受付けるリプレース処理に先行して、Ｒ−ＣＰＵからリプレース対象データへフェッチアクセスを受付ける場合の各ＣＰＵによる処理手順を説明する。
【０１０２】
図１０を用いて、Ｌ−ＣＰＵによるリプレース処理を要求する処理の処理手順を説明する。図１０は、Ｌ−ＣＰＵによるリプレース処理を要求する処理の処理手順を示す図である。図１０に示すように、Ｌ−ＣＰＵでは、Ｌ２キャッシュ制御部２３のコマンド受信部３４は、データの読出し要求をコア２２から受付けた場合（ステップＳ１０１）。アクセス実行部３５にデータの読出し処理の実行を指示する（ステップＳ１０２）。
【０１０３】
ここで、アクセス実行部３５は、キャッシュデータ部３２を検索し、キャッシュミスした場合、読み出しを要求されたデータを保持するメモリまたは他のＣＰＵのキャッシュにデータを要求するとともに、キャッシュデータ部３２に空きエントリがあるか否かを判定する。ここで、アクセス実行部３５は、キャッシュデータ部３２に空きエントリが無いと判定した場合、リプレース処理を実行すると判定する。
【０１０４】
そして、アクセス実行部３５は、リプレース処理の対象に選択したデータのキャッシュステートをキャッシュタグ部３３から検索する（ステップＳ１０３）。なお、ここでは、リプレース処理の対象データのキャッシュステートが「Ｍ」であり、アクセス実行部３５は、データのライトバックを要求する例を説明する。
【０１０５】
続いて、アクセス実行部３５は、リプレース処理記録部３１に、リプレース処理を識別するＩＤと、リプレース対象アドレスとを対応付けて記憶させるとともに、有効ビットに「１」を設定する（ステップＳ１０４）。そして、アクセス実行部３５は、リプレース処理の対象データを、コヒーレント制御部２５のコマンド受信部４２に出力する旨をキャッシュデータ部３２に指示する（ステップＳ１０５）。
【０１０６】
キャッシュデータ部３２は、リプレース処理の対象データをコヒーレント制御部２５のコマンド受信部４２に出力する（ステップＳ１０６）。そして、アクセス実行部３５は、コヒーレント制御部２５のコマンド受信部４２に、データのライトバックを要求する旨を通知する（ステップＳ１０７）。
【０１０７】
コヒーレント制御部２５のコマンド受信部４２は、ディレクトリ検査アクセス実行部４３に、データをライトバックする旨を通知する（ステップＳ１０８）。そして、ディレクトリ検査アクセス実行部４３は、リプレース要求の発行を確定した旨をコマンド発行／応答部４５に通知する（ステップＳ１０９）。コマンド発行／応答部４５は、リプレース処理の対象データを含むリプレース要求コマンドを発行し、通信制御部２１を介してＨ−ＣＰＵに送信する（ステップＳ１１０）。
【０１０８】
図１１を用いて、Ｈ−ＣＰＵによるデータ転送要求処理の処理手順を説明する。図１１は、Ｈ−ＣＰＵによるデータ転送要求処理の処理手順を示す図である。図１１に示すように、Ｈ−ＣＰＵでは、コヒーレント制御部２５のコマンド受信部４２は、通信制御部２１を介してＲ−ＣＰＵからフェッチアクセス要求を受信する（ステップＳ２０１）。そして、コマンド受信部４２は、ディレクトリ検査アクセス実行部４３にフェッチアクセス要求を受信した旨を通知する（ステップＳ２０２）。
【０１０９】
ディレクトリ検査アクセス実行部４３は、アドレスロック制御部４４に、フェッチアクセス対象データのアドレスがロックされているか否かを判定させる（ステップＳ２０３）。なお、ここでは、アドレスロック制御部４４が、フェッチアクセス対象データのアドレスがロックされていないと判定する場合を例に示す。
【０１１０】
ディレクトリ検査アクセス実行部４３は、メモリ制御部２４にフェッチアクセス対象データのディレクトリ情報のリードを指示し（ステップＳ２０４）、メモリ制御部２４を介してメモリ１０からディレクトリ情報を受信する（ステップＳ２０５）。
【０１１１】
そして、ディレクトリ検査アクセス実行部４３は、ディレクトリ情報からフェッチアクセス対象データの所有元を判定して、所有元のＣＰＵにデータの転送要求の発行を確定した旨をコマンド発行／応答部４５に通知する（ステップＳ２０６）。なお、ここでは、ディレクトリステートが「Ｅ」であり、ディレクトリ検査アクセス実行部４３が、Ｌ−ＣＰＵからＲ−ＣＰＵにフェッチアクセス対象データを転送させると判定する場合を例に示す。
【０１１２】
続いて、コマンド発行／応答部４５は、フェッチアクセス対象データをＲ−ＣＰＵに送信する旨を要求するコマンドを発行し、通信制御部２１を介してＬ−ＣＰＵに発行したコマンドを送信する（ステップＳ２０７）。
【０１１３】
図１２を用いて、Ｈ−ＣＰＵによるライトバック要求を保留する処理の処理手順を説明する。図１２は、Ｈ−ＣＰＵによるライトバック要求を保留する処理の処理手順を示す図である。図１２に示すように、Ｈ−ＣＰＵでは、コヒーレント制御部２５のコマンド受信部４２は、通信制御部２１を介してＬ−ＣＰＵからライトバック要求を受信する（ステップＳ３０１）。そして、コマンド受信部４２は、ディレクトリ検査アクセス実行部４３にライトバック要求を受信した旨を通知する（ステップＳ３０２）。
【０１１４】
そして、ディレクトリ検査アクセス実行部４３は、アドレスロック制御部４４に、ライトバック対象データのアドレスがロックされているか否かを判定させさる（ステップＳ３０３）。なお、ここでは、アドレスロック制御部４４は、先行するフェッチアクセスにより、ライトバック対象データのアドレスがロックされていると判定する場合を例に示す。この場合、ディレクトリ検査アクセス実行部４３は、ライトバック要求処理をフェッチアクセスが終了するまで保留する。
【０１１５】
図１３を用いて、Ｌ−ＣＰＵによるデータ転送要求に応答する処理の処理手順を説明する。図１３は、Ｌ−ＣＰＵによるデータ転送要求に応答する処理の処理手順を示す図である。図１３に示すように、Ｌ−ＣＰＵでは、コヒーレント制御部２５のコマンド受信部４２は、フェッチアクセス対象データをＲ−ＣＰＵに送信する旨を要求するコマンドを、通信制御部２１を介してＨ−ＣＰＵから受信する（ステップＳ４０１）。
【０１１６】
そして、コマンド受信部４２は、ディレクトリ検査アクセス実行部４３にフェッチアクセス対象データをＲ−ＣＰＵに送信する旨の要求を受信したことを通知する（ステップＳ４０２）。
【０１１７】
ディレクトリ検査アクセス実行部４３は、リプレース処理記録部３１を検査して、フェッチアクセス対象データのアドレスに対応する有効ビットが「１」であるか否かを判定する（ステップＳ４０３）。ここでは、ディレクトリ検査アクセス実行部４３は、有効ビットが「１」であると判定し、データの転送を確定する場合を例に示す。そして、ディレクトリ検査アクセス実行部４３は、キャッシュデータ部３２にフェッチアクセス対象データをコマンド発行／応答部４５に出力する旨を指示する（ステップＳ４０４）。続いて、キャッシュデータ部３２は、フェッチアクセス対象データをコマンド発行／応答部４５に出力する（ステップＳ４０５）。
【０１１８】
また、ディレクトリ検査アクセス実行部４３は、コマンド発行／応答部４５にフェッチアクセス対象データの転送を指示する（ステップＳ４０６）。そして、コマンド発行／応答部４５は、フェッチアクセス対象データをＲ−ＣＰＵに転送するとともに、要求中であるリプレース対象データのライトバックを中止する旨とフェッチアクセス対象データとをＨ−ＣＰＵに転送する（ステップＳ４０７）。
【０１１９】
図１４を用いて、Ｈ−ＣＰＵによるデータ転送応答を受信する処理の処理手順を説明する。図１４は、Ｈ−ＣＰＵによるデータ転送応答を受信する処理の処理手順を示す図である。図１４に示すように、Ｈ−ＣＰＵでは、コヒーレント制御部２５のコマンド受信部４２は、通信制御部２１を介してＬ−ＣＰＵからデータ転送応答を受信する（ステップＳ５０１）。そして、コマンド受信部４２は、ディレクトリ検査アクセス実行部４３にデータ転送応答を受信した旨を通知する（ステップＳ５０２）。
【０１２０】
続いて、ディレクトリ検査アクセス実行部４３は、アドレスロック制御部４４にフェッチアクセス対象データのアドレスのロックを解除させる（ステップＳ５０３）。また、ディレクトリ検査アクセス実行部４３は、ライトバックキャンセル記録部４１に、ライトバックの中止を記録する（ステップＳ５０４）。そして、ディレクトリ検査アクセス実行部４３は、ディレクトリ情報の更新とライトバックの実行とをメモリ制御部２４に指示する（ステップＳ５０５）。
【０１２１】
図１５を用いて、Ｈ−ＣＰＵによるライトバック起動処理の処理手順を説明する。図１５は、Ｈ−ＣＰＵによるライトバック起動処理の処理手順を示す図である。図１５に示すように、Ｈ−ＣＰＵでは、コヒーレント制御部２５のディレクトリ検査アクセス実行部４３は、アドレスロック制御部４４にリプレース処理対象データのアドレスがロックされているか否かを判定させる（ステップＳ６０１）。そして、ディレクトリ検査アクセス実行部４３は、リプレース処理対象データのアドレスのロックが解除されている場合、ライトバック要求処理を再開させると判定する。
【０１２２】
また、ディレクトリ検査アクセス実行部４３は、ライトバックを実行するか否かを判定する（ステップＳ６０２）。例えば、ディレクトリ検査アクセス実行部４３は、ライトバックキャンセル記録部４１のリプレース処理対象データのアドレスを読み出して、ライトバックの中止を示すビット「１」が設定されている場合、ライトバックを中止すると判定する。この場合、ディレクトリ検査アクセス実行部４３は、ライトバックデータを破棄する。
【０１２３】
そして、ディレクトリ検査アクセス実行部４３は、コマンド発行／応答部４５に、ライトバック要求の完了をＬ−ＣＰＵに応答する旨を指示する（ステップＳ６０３）。続いて、コマンド発行／応答部４５は、通信制御部２１を介してＬ−ＣＰＵにライトバック要求の完了を応答する（ステップＳ６０４）。
【０１２４】
図１６を用いて、Ｌ−ＣＰＵによるリプレース完了処理の処理手順を説明する。図１６は、Ｌ−ＣＰＵによるリプレース完了処理の処理手順を示す図である。図１６に示すように、Ｌ−ＣＰＵでは、コヒーレント制御部２５のコマンド受信部４２は、通信制御部２１を介してＨ−ＣＰＵからリプレース完了応答を受信する（ステップＳ７０１）。そして、コマンド受信部４２は、Ｌ２キャッシュ制御部２３のリプレース処理記録部３１が記憶する情報をリセットする（ステップＳ７０２）。例えば、コマンド受信部４２は、完了応答を受信したリプレースＩＤに対応する有効ビットに「０」を設定する。
【０１２５】
［実施例１の効果］
このように、Ｌ−ＣＰＵは、ダーティなデータをリプレースする場合、Ｈ−ＣＰＵにリプレース実行の許可を得ずに当該データを含むリプレース要求をＨ−ＣＰＵに発行する。この結果、ｃｃＮＵＭＡ型のメモリシステムにおいて、最下位層キャッシュでリプレースが発生した場合、Ｈ−ＣＰＵとＬ−ＣＰＵとの間の処理時間とパケット通信量とを削減できる。
【０１２６】
また、リプレース対象データへのアクセスとリプレースフローの起動が同時期に競合した場合にも、リプレース対象データを保持するメモリと接続するＨ−ＣＰＵは、データの一貫性を保障できる。
【実施例２】
【０１２７】
ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例２では、本発明に含まれる他の実施例について説明する。
【０１２８】
（システム構成等）
本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
【０１２９】
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、コヒーレント制御部２５では、ディレクトリ検査アクセス実行部４３とコマンド発行／応答部４５とが統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【符号の説明】
【０１３０】
１  情報処理システム
２、２ａ、２ｂ  ＸＢ
３、３ａ〜３ｈ  ＳＢ
１０、１０ａ〜１０ｄ  メモリ
２０、２０ａ〜２０ｄ  ＣＰＵ
２１  通信制御部
２２、２２ａ〜２２ｆ  コア
２３  キャッシュ制御部
２４  メモリ制御部
２５  コヒーレント制御部
３１  リプレース処理記録部
３２  キャッシュデータ部
３３  キャッシュタグ部
３４  コマンド受信部
３５  アクセス実行部
３６  データ応答部
４１  ライトバックキャンセル記録部
４２  コマンド受信部
４３  ディレクトリ検査アクセス実行部
４４  アドレスロック制御部
４５  コマンド発行／応答部
４６  データ応答部
【図１】
0005906881.tif 000002
【図２】
0005906881.tif 000003
【図３】
0005906881.tif 000004
【図４】
0005906881.tif 000005
【図５】
0005906881.tif 000006
【図６】
0005906881.tif 000007
【図７】
0005906881.tif 000008
【図８】
0005906881.tif 000009
【図９】
0005906881.tif 000010
【図１０】
0005906881.tif 000011
【図１１】
0005906881.tif 000012
【図１２】
0005906881.tif 000013
【図１３】
0005906881.tif 000014
【図１４】
0005906881.tif 000015
【図１５】
0005906881.tif 000016
【図１６】
0005906881.tif 000017
【図１７】
0005906881.tif 000018
【図１８】
0005906881.tif 000019