(57)【特許請求の範囲】
【請求項１】
データを記憶する記憶装置と、前記記憶装置に接続され、演算処理を実行する演算処理部と前記演算処理部が処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と前記演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と前記記憶装置が記憶するデータと前記キャッシュメモリが保持するデータとの整合性を維持する処理とを実行するメモリアクセス制御部とを含む演算処理装置とを含むノードを複数有する情報処理装置において、
前記メモリアクセス制御部は、
発行されたメモリアクセス要求のアクセス対象である対象データと、前記対象データを持ち出したノードを識別するディレクトリ情報とを前記記憶装置から読み出すメモリ制御部と、
対応する記憶装置から読み出した対象データを持ち出した他のノードである持ち出しノードをディレクトリ情報に基づいて検出する検出部と、
前記検出部が検出した持ち出しノードのキャッシュメモリ部から対象データを追い出す追い出し要求を前記持ち出しノードに発行後、所定時間の経過までに対応する応答を受信しない場合、前記持ち出しノードのキャッシュメモリ部に保持された対象データを無効化する無効化要求を前記持ち出しノードに発行するコヒーレンシ制御部を有することを特徴とする情報処理装置。
【請求項２】
前記メモリアクセス制御部はさらに、
追い出し要求に対する応答に基づいて、前記記憶装置から読み出したディレクトリ情報のエラーを検出するエラー検出部と、
前記所定時間が経過するまでに追い出し要求に対する応答を受信しないタイムアウトエラーを示す情報または前記エラー検出部が検出したディレクトリ情報のエラーを示す情報を記憶するエラー種記憶部を有し、
前記コヒーレンシ制御部は、
前記エラー種記憶部がタイムアウトエラーを示す情報を記憶する場合、無効化要求を前記持ち出しノードに発行し、
前記エラー種記憶部がディレクトリ情報のエラーを示す情報を記憶する場合、無効化要求を全てのノードに発行することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記メモリアクセス制御部はさらに、
対象データが失われることを予防するロスト予防情報をメモリアクセス要求が含むかを検出するロスト予防検出部と、
ロスト予防情報をメモリアクセス要求が含むことを前記ロスト予防検出部が検出した場合にセットされる予防フラグを有し、
前記コヒーレンシ制御部は、前記予防フラグがセットされた場合、対象データを含む応答をメモリアクセス要求の発行元に発行した後、メモリアクセス要求の発行元のキャッシュメモリ部から対象データを追い出させる追い出し要求を発行することを特徴とする請求項１または請求項２記載の情報処理装置。
【請求項４】
前記メモリアクセス制御部はさらに、
メモリアクセス要求の発行元のノードを識別する識別情報を記憶する第１の識別情報記憶部を有し、
前記コヒーレンシ制御部は、対象データを含む応答をメモリアクセス要求の発行元に発行した後、前記第１の識別情報記憶部に記憶された識別情報が示すノードに追い出し要求を発行することを特徴とする請求項３記載の情報処理装置。
【請求項５】
コヒーレンシ制御部は、前記持ち出しノードへの追い出し要求の発行から所定時間が経過するまでに追い出し要求に対する応答を受信しない場合、メモリアクセス要求の発行元にエラー応答を発行した後、無効化要求を前記持ち出しノードに発行することを特徴とする請求項１ないし請求項４のいずれか１項記載の情報処理装置。
【請求項６】
前記エラー種記憶部がディレクトリ情報のエラーを示す情報を記憶する場合、メモリアクセス要求の発行元にエラー応答を発行した後、無効化要求を全てのノードに発行することを特徴とする請求項２記載の情報処理装置。
【請求項７】
前記メモリアクセス制御部はさらに、
前記検出部が検出した前記持ち出しノードを識別する識別情報を記憶する第２の識別情報記憶部を有し、
前記コヒーレンシ制御部は、前記所定時間が経過するまでに前記持ち出しノードへの追い出し要求に対する応答を受信しない場合、前記第２の識別情報記憶部に記憶された識別情報が示すノードに無効化要求を発行することを特徴とする請求項１ないし請求項６のいずれか１項記載の情報処理装置。
【請求項８】
データを記憶する記憶装置と、前記記憶装置に接続され、演算処理を実行する演算処理部と前記演算処理部が処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と前記演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と前記記憶装置が記憶するデータと前記キャッシュメモリが保持するデータとの整合性を維持する処理とを実行するメモリアクセス制御部とを含む演算処理装置とを含むノードを複数有する情報処理装置において、
前記メモリアクセス制御部は、
発行されたメモリアクセス要求のアクセス対象である対象データと、前記対象データを持ち出したノードを識別するディレクトリ情報とを前記記憶装置から読み出すメモリ制御部と、
対象データが失われることを予防するロスト予防情報をメモリアクセス要求が含むかを検出する第１の検出部と、
ロスト予防情報をメモリアクセス要求が含むことを前記第１の検出部が検出した場合にセットされる予防フラグと、
対応する記憶装置から読み出した対象データを持ち出した他のノードである持ち出しノードをディレクトリ情報に基づいて検出する第２の検出部と、
前記第２の検出部が検出した持ち出しノードのキャッシュメモリ部から対象データを追い出す追い出し要求を発行し、前記予防フラグがセットされた場合、対象データを含む応答をメモリアクセス要求の発行元に発行後、メモリアクセス要求の発行元のノードから対象データを追い出す追い出し要求を発行するコヒーレンシ制御部を有することを特徴とする情報処理装置。
【請求項９】
情報処理装置が有する複数のノードの各々に設けられ、データを記憶する記憶装置と、前記記憶装置に接続され、演算処理を実行する演算処理部と前記演算処理部が処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と前記演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と前記記憶装置が記憶するデータと前記キャッシュメモリが保持するデータとの整合性を維持する処理とを実行するメモリアクセス制御部とを含む演算処理装置において、
前記メモリアクセス制御部は、
発行されたメモリアクセス要求のアクセス対象である対象データと、前記対象データを持ち出したノードを識別するディレクトリ情報とを前記記憶装置から読み出すメモリ制御部と、
対応する記憶装置から読み出した対象データを持ち出した他のノードである持ち出しノードをディレクトリ情報に基づいて検出する検出部と、
前記検出部が検出した持ち出しノードのキャッシュメモリ部から対象データを追い出す追い出し要求を前記持ち出しノードに発行後、所定時間の経過までに対応する応答を受信しない場合、前記持ち出しノードのキャッシュメモリ部に保持された対象データを無効化する無効化要求を前記持ち出しノードに発行するコヒーレンシ制御部を有することを特徴とする演算処理装置。
【請求項１０】
データを記憶する記憶装置と、前記記憶装置に接続され、演算処理を実行する演算処理部と前記演算処理部が処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と前記演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と前記記憶装置が記憶するデータと前記キャッシュメモリが保持するデータとの整合性を維持する処理とを実行するメモリアクセス制御部とを含む演算処理装置とを含むノードを複数有する情報処理装置の制御方法において、
前記メモリアクセス制御部が有するメモリ制御部が、発行されたメモリアクセス要求のアクセス対象である対象データと、前記対象データを持ち出したノードを識別するディレクトリ情報とを前記記憶装置から読み出し、
前記メモリアクセス制御部が有する検出部が、対応する記憶装置から読み出した対象データを持ち出した他のノードである持ち出しノードをディレクトリ情報に基づいて検出し、
前記メモリアクセス制御部が有するコヒーレンシ制御部が、前記検出部が検出した持ち出しノードのキャッシュメモリ部から対象データを追い出す追い出し要求を前記持ち出しノードに発行後、所定時間の経過までに対応する応答を受信しない場合、前記持ち出しノードのキャッシュメモリ部に保持された対象データを無効化する無効化要求を前記持ち出しノードに発行することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、演算処理装置および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
近時、演算処理装置と主記憶装置とをそれぞれ有する複数のノードを互いに接続し、複数のノードの主記憶装置を演算処理装置で共有するマルチプロセッサシステムが提案されている。この種のマルチプロセッサシステムでは、ディレクトリ方式またはスヌープ方式により、主記憶装置が保持するデータと各ノードのキャッシュメモリが保持するデータとの整合性または一貫性（キャッシュコヒーレンシ）が維持される。ディレクトリ方式では、自ノードの主記憶装置に保持されたデータを他ノードのキャッシュメモリに持ち出したことを示すディレクトリ情報に基づいてキャッシュコヒーレンシを維持する制御が実行される。スヌープ方式では、ブロードキャストされたメモリアクセス要求に対応して各ノードから発行される応答に基づいて、キャッシュコヒーレンシを維持する制御が実行される。
【０００３】
例えば、ディレクトリ方式のマルチプロセッサシステムでは、データ返送要求に対する応答が要求先のノードの故障等により得られない場合、データ返送要求の要求元のノードは、ディレクトリ情報にエラーマークを書き込む。この後、エラーマークを含むディレクトリ情報に対応するメモリアクセス要求を受けたノードは、エラー応答を返すことで、故障と判定されたノード以外の動作が継続可能になる（例えば、特許文献１参照）。
【０００４】
一方、スヌープ方式のマルチプロセッサシステムでは、スヌープ処理時に誤ったメモリアクセス要求が紛れ込むことで同期エラーを検出した場合、ブロードキャストの処理からリトライを実行する（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１９７４０２号公報
【特許文献２】特開２００６−１５５１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ディレクトリ方式のマルチプロセッサシステムでは、ノード間を接続する通信経路等で故障が一時的に発生した場合、データ返送要求が要求先のノードに伝達されない場合がある。この場合、要求先のノードは、要求元のノードから持ち出したデータを返送することなく参照し続けてしまう。上述したように、要求元のノードがディレクトリ情報にエラーマークを書き込むことで、故障と判定されたノード以外の動作は継続可能になる。しかしながら、データが返送されずに参照され続ける場合、例えば、マルチプロセッサシステム上で並列動作するプログラム間で扱うデータの整合性を取ることが困難になり、キャッシュコヒーレンシは維持されなくなる。
【０００７】
１つの側面では、本件開示の情報処理装置、演算処理装置および情報処理装置の制御方法は、ノード間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することを目的とする。
【課題を解決するための手段】
【０００８】
一つの観点によれば、データを記憶する記憶装置と、記憶装置に接続され、演算処理を実行する演算処理部と演算処理部が処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と記憶装置が記憶するデータとキャッシュメモリが保持するデータとの整合性を維持する処理とを実行するメモリアクセス制御部とを含む演算処理装置とを含むノードを複数有する情報処理装置において、メモリアクセス制御部は、発行されたメモリアクセス要求のアクセス対象である対象データと、対象データを持ち出したノードを識別するディレクトリ情報とを記憶装置から読み出すメモリ制御部と、対応する記憶装置から読み出した対象データを持ち出した他のノードである持ち出しノードをディレクトリ情報に基づいて検出する検出部と、検出部が検出した持ち出しノードのキャッシュメモリ部から対象データを追い出す追い出し要求を持ち出しノードに発行後、所定時間の経過までに対応する応答を受信しない場合、持ち出しノードのキャッシュメモリ部に保持された対象データを無効化する無効化要求を持ち出しノードに発行するコヒーレンシ制御部を有する。
【０００９】
別の観点によれば、データを記憶する記憶装置と、記憶装置に接続され、演算処理を実行する演算処理部と演算処理部が処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と記憶装置が記憶するデータとキャッシュメモリが保持するデータとの整合性を維持する処理とを実行するメモリアクセス制御部とを含む演算処理装置とを含むノードを複数有する情報処理装置において、メモリアクセス制御部は、発行されたメモリアクセス要求のアクセス対象である対象データと、対象データを持ち出したノードを識別するディレクトリ情報とを記憶装置から読み出すメモリ制御部と、対象データが失われることを予防するロスト予防情報をメモリアクセス要求が含むかを検出する第１の検出部と、ロスト予防情報をメモリアクセス要求が含むことを第１の検出部が検出した場合にセットされる予防フラグと、対応する記憶装置から読み出した対象データを持ち出した他のノードである持ち出しノードをディレクトリ情報に基づいて検出する第２の検出部と、第２の検出部が検出した持ち出しノードのキャッシュメモリ部から対象データを追い出す追い出し要求を発行し、予防フラグがセットされた場合、対象データを含む応答をメモリアクセス要求の発行元に発行後、メモリアクセス要求の発行元のノードから対象データを追い出す追い出し要求を発行するコヒーレンシ制御部を有する。
【００１０】
別の観点によれば、情報処理装置が有する複数のノードの各々に設けられ、データを記憶する記憶装置と、記憶装置に接続され、演算処理を実行する演算処理部と演算処理部が処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と記憶装置が記憶するデータとキャッシュメモリが保持するデータとの整合性を維持する処理とを実行するメモリアクセス制御部とを含む演算処理装置において、メモリアクセス制御部は、発行されたメモリアクセス要求のアクセス対象である対象データと、対象データを持ち出したノードを識別するディレクトリ情報とを記憶装置から読み出すメモリ制御部と、対応する記憶装置から読み出した対象データを持ち出した他のノードである持ち出しノードをディレクトリ情報に基づいて検出する検出部と、検出部が検出した持ち出しノードのキャッシュメモリ部から対象データを追い出す追い出し要求を持ち出しノードに発行後、所定時間の経過までに対応する応答を受信しない場合、持ち出しノードのキャッシュメモリ部に保持された対象データを無効化する無効化要求を持ち出しノードに発行するコヒーレンシ制御部を有する。
【００１１】
さらなる別の観点によれば、情報処理装置が有する複数のノードの各々に設けられ、データを記憶する記憶装置と、記憶装置に接続され、演算処理を実行する演算処理部と演算処理部が処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と記憶装置が記憶するデータとキャッシュメモリが保持するデータとの整合性を維持する処理とを実行するメモリアクセス制御部とを含む演算処理装置とを含むノードを複数有する情報処理装置の制御方法において、メモリアクセス制御部が有するメモリ制御部が、発行されたメモリアクセス要求のアクセス対象である対象データと、対象データを持ち出したノードを識別するディレクトリ情報とを記憶装置から読み出し、メモリアクセス制御部が有する検出部が、対応する記憶装置から読み出した対象データを持ち出した他のノードである持ち出しノードをディレクトリ情報に基づいて検出し、メモリアクセス制御部が有するコヒーレンシ制御部が、検出部が検出した持ち出しノードのキャッシュメモリ部から対象データを追い出す追い出し要求を持ち出しノードに発行後、所定時間の経過までに対応する応答を受信しない場合、持ち出しノードのキャッシュメモリ部に保持された対象データを無効化する無効化要求を持ち出しノードに発行する。
【発明の効果】
【００１２】
本件開示の情報処理装置、演算処理装置および情報処理装置の制御方法は、ノード間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。
【図面の簡単な説明】
【００１３】
【図１】情報処理装置、演算処理装置および情報処理装置の制御方法の一実施形態を示す図である。
【図２】図１に示す情報処理装置の動作の一例を示す図である。
【図３】情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す図である。
【図４】図３に示す記憶装置およびキャッシュメモリ部に保持されるデータの一例を示す図である。
【図５】図３に示すシステム制御部の動作の一例を示す図である。
【図６】図５に示すステップＳ１３０の処理の一例を示す図である。
【図７】情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す図である。
【図８】図７に示すシステム制御部の動作の一例を示す図である。
【図９】図８に示すステップＳ１４０の処理の一例を示す図である。
【図１０】情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す図である。
【図１１】図１０に示すプロセッサインタフェースに転送されるメモリアクセス要求パケットの一例を示す図である。
【図１２】図１０に示すシステム制御部の動作の一例を示す図である。
【図１３】図１２に示すステップＳ１５０の処理の一例を示す図である。
【図１４】情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す図である。
【図１５】図１４に示すシステム制御部の動作の一例を示す図である。
【図１６】図１５に示すステップＳ１６０の処理の一例を示す図である。
【図１７】情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す図である。
【図１８】図１７に示すシステム制御部の動作の一例を示す図である。
【図１９】図１８に示すステップＳ１８０の処理の一例を示す図である。
【図２０】図１から図１９に示す実施形態が適用されるサーバの一例を示す図である。
【図２１】サーバの別の例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を用いて実施形態を説明する。
【００１５】
図１は、情報処理装置、演算処理装置および情報処理装置の制御方法の一実施形態を示す。図１に示す情報処理装置ＩＰＥ１は、サーバ等であり、演算処理装置１と、演算処理装置１に接続される記憶装置２とを含む複数のノードＮＤ（ＮＤ１、ＮＤ２）を有する。すなわち、情報処理装置ＩＰＥ１は、マルチプロセッサシステムとして機能する。記憶装置２は、主記憶装置、または演算処理装置１の外部に接続されるキャッシュメモリ部である。記憶装置２がキャッシュメモリ部の場合、さらに、主記憶装置が記憶装置２に接続される。
【００１６】
演算処理装置１は、演算処理を実行する演算処理部３と、演算処理部３で処理するデータを保持するキャッシュメモリ部４と、キャッシュミス時に記憶装置２に対するメモリアクセス要求を発行するキャッシュメモリ制御部５と、メモリアクセス制御部６とを有する。メモリアクセス制御部６は、メモリアクセス要求に基づいてメモリアクセス処理を実行するとともに、キャッシュコヒーレンシを維持させる処理を実行する。
【００１７】
メモリアクセス制御部６は、メモリ制御部７と、持ち出し先検出部８と、コヒーレンシ制御部９とを有する。メモリ制御部７は、キャッシュメモリ制御部５からのメモリアクセス要求に基づいて、メモリアクセス要求のアクセス対象である対象データと、対象データをキャッシュメモリ部４に持ち出したノードＮＤを識別するディレクトリ情報とを記憶装置２から読み出す。以下では、対象データを持ち出した他ノードＮＤは、持ち出しノードＮＤとも称される。なお、メモリ制御部７は、自ノードＮＤまたは他ノードＮＤのキャッシュメモリ制御部５が発行する自ノードＮＤの記憶装置２に対するメモリアクセス要求に基づいてメモリアクセス処理を実行する。
【００１８】
持ち出し先検出部８は、記憶装置２から読み出された対象データが他ノードＮＤのキャッシュメモリ部４に持ち出されたか否かを、対象データとともに記憶装置２から読み出したディレクトリ情報に基づいて検出する。持ち出し先検出部８は、記憶装置２から読み出した対象データを持ち出している他のノードＮＤである持ち出しノードＮＤをディレクトリ情報に基づいて検出する検出部の一例である。
【００１９】
コヒーレンシ制御部９は、持ち出し先検出部８が持ち出しノードＮＤを検出した場合、持ち出しノードＮＤのキャッシュメモリ部４から対象データを追い出させる追い出し要求を持ち出しノードＮＤに発行する。持ち出しノードＮＤのキャッシュメモリ制御部５は、追い出し要求に基づいて、キャッシュメモリ部４に保持された対象データをキャッシュメモリ部４から追い出す。例えば、対象データの追い出しは、対象データをキャッシュメモリ部４から読み出した後、キャッシュメモリ制御部５における対象データを保持するエントリのキャッシュステータスを無効（インバリッド）に設定することで実行される。
【００２０】
持ち出しノードＮＤのキャッシュメモリ制御部５は、キャッシュメモリ部４に保持した対象データを更新（上書き）した場合、更新した対象データを含む応答を追い出し要求の要求元に発行する。一方、持ち出しノードＮＤのキャッシュメモリ制御部５は、キャッシュメモリ部４に保持された対象データを更新していない場合、対象データをキャッシュメモリ部４から追い出したことを示す情報を含む応答を追い出し要求の要求元に発行する。なお、持ち出しノードＮＤのキャッシュメモリ制御部５は、キャッシュメモリ部４に保持された対象データを更新していない場合にも、キャッシュメモリ部４から追い出した対象データを含む応答を追い出し要求の要求元に発行してもよい。
【００２１】
コヒーレンシ制御部９は、追い出し要求に対する応答に基づいて、メモリアクセス要求に対する応答をメモリアクセス要求の発行元に発行する。例えば、追い出し要求に対応して持ち出しノードＮＤが発行した応答に更新された対象データが含まれる場合、メモリアクセス要求に対する応答は、対象データを他ノードＮＤから追い出したことを示す情報と、更新された対象データとを含む。追い出し要求に対応して持ち出しノードＮＤから発行された応答に更新された対象データが含まれない場合、メモリアクセス要求に対する応答は、メモリアクセス要求に基づいて記憶装置２から読み出された対象データと、対象データを他ノードＮＤから追い出したことを示す情報とを含む。持ち出しノードＮＤが存在しないことを持ち出し先検出部８が検出した場合、メモリアクセス要求に対する応答は、メモリアクセス要求に基づいて記憶装置２から読み出された対象データと、持ち出しノードＮＤが存在しないことを示す情報とを含む。そして、コヒーレンシ制御部９は、対象データの追い出しに伴い更新したディレクトリ情報の記憶装置２への書き込みを、メモリ制御部７に指示する。
【００２２】
さらに、コヒーレンシ制御部９は、追い出し要求の発行から所定時間が経過するまでに追い出し要求に対する応答を受信しない場合、メモリアクセス要求に対するエラー応答をメモリアクセス要求の発行元に発行する。エラー応答は、持ち出しノードＮＤからの応答を受信しなかったことを示す情報を含む。例えば、ノードＮＤ間を接続する通信経路等で故障が一時的に発生し、追い出し要求が持ち出しノードＮＤに届かない場合、持ち出しノードＮＤは、追い出し要求を認識しないため、追い出し要求に対する応答を発行しない。持ち出しノードＮＤは、対象データをキャッシュメモリ部４から追い出すことなく、演算処理を続ける。所定時間の経過後、コヒーレンシ制御部９は、持ち出しノードＮＤのキャッシュメモリ部４に保持されている対象データを無効化させる無効化要求を持ち出しノードＮＤに発行する。
【００２３】
無効化要求の発行時に、通信経路等の故障が解消している場合、持ち出しノードＮＤは、無効化要求を受信する。持ち出しノードＮＤのキャッシュメモリ制御部５は、無効化要求に基づいて、キャッシュメモリ部４に保持されている対象データを無効化し、対象データを無効化したことを示す情報を含む応答を、無効化要求を発行したノードＮＤに発行する。例えば、対象データの無効化は、キャッシュメモリ制御部５における対象データを保持するエントリのキャッシュステータスを無効（インバリッド）に設定することで実行される。
【００２４】
なお、ノードＮＤ間を接続する通信経路等で発生した故障が一時的でなく継続している場合、持ち出しノードＮＤは、無効化要求を受信しないため、対象データを無効化せず、無効化要求に対する応答を発行しない。無効化要求の発行元のコヒーレンシ制御部９は、無効化要求に対する応答を受信せずにタイムアウトが発生した場合、ノードＮＤ間での通信に異常が発生したことを、ノードＮＤの動作を管理する管理装置に通知する。
【００２５】
図２は、図１に示す情報処理装置ＩＰＥ１の動作の一例を示す。
【００２６】
まず、図２（Ａ）において、ノードＮＤ１のキャッシュメモリ制御部５は、ノードＮＤ１の記憶装置２に対するメモリアクセス要求ＭＲＱを発行する。なお、メモリアクセス要求ＭＲＱは、ノードＮＤ１、ＮＤ２以外のノードＮＤから発行されてもよい。ノードＮＤ１におけるメモリアクセス制御部６内のメモリ制御部７は、メモリアクセス要求ＭＲＱに基づいてリード要求ＲＲＱを記憶装置２に発行し、メモリアクセス要求ＭＲＱに対応する対象データＤ１とディレクトリ情報ＤＩＲとを記憶装置２から読み出す。ノードＮＤ１におけるメモリアクセス制御部６内の持ち出し先検出部８は、ディレクトリ情報ＤＩＲに基づいて、対象データＤ１がノードＮＤ２に持ち出されていることを検出する。
【００２７】
次に、図２（Ｂ）において、ノードＮＤ１におけるメモリアクセス制御部６内のコヒーレンシ制御部９は、追い出し要求ＭＯＲＱを持ち出しノードＮＤ２に発行する。しかしながら、図２（Ｂ）に示す例では、ノードＮＤ１、ＮＤ２間の通信経路等で発生した一時的な故障により、追い出し要求ＭＯＲＱは、持ち出しノードＮＤ２に届かない。この場合、追い出し要求を認識しない持ち出しノードＮＤ２は、対象データを用いて演算処理を実行し、対象データを更新するおそれがある。なお、ノードＮＤ１、ＮＤ２間の通信経路等で発生した故障は一時的であるため、図２（Ｂ）の後に解消されるものとする。
【００２８】
次に、図２（Ｃ）において、ノードＮＤ１におけるメモリアクセス制御部６内のコヒーレンシ制御部９は、追い出し要求ＭＯＲＱの発行から所定時間（例えば、数ミリ秒から数十ミリ秒）が経過しても追い出し要求に対する応答を受信しない。このため、ノードＮＤ１のコヒーレンシ制御部９は、タイムアウトを検出し、図２（Ａ）のメモリアクセス要求ＭＲＱに対するエラー応答ＥＲＥＳをメモリアクセス要求ＭＲＱの発行元であるノードＮＤ１のキャッシュメモリ制御部５に発行する。すなわち、コヒーレンシ制御部９は、追い出し要求をリトライすることなく、エラー応答ＥＲＥＳを発行する。これにより、追い出し要求をリトライする場合に比べて、メモリアクセス要求に対する応答が遅れることを抑止することができる。また、ノードＮＤ１のメモリアクセス制御部６は、エラー情報ＥＲＲを追加したディレクトリ情報ＤＩＲを記憶装置２に書き込む。例えば、ノードＮＤ２では、対象データＤ１を用いた演算処理が実行され、対象データＤ１は、データＤ１’に更新される。なお、ノードＮＤ１のメモリアクセス制御部６は、ノードＮＤ１、ＮＤ２以外のノードＮＤからメモリアクセス要求ＭＲＱを受信した場合、メモリアクセス要求ＭＲＱの発行元にエラー応答ＥＲＥＳを発行する。
【００２９】
次に、図２（Ｄ）において、ノードＮＤ１のコヒーレンシ制御部９は、持ち出しノードＮＤ２のキャッシュメモリ部４に保持されている対象データＤ１’を無効化させる無効化要求ＩＶＲＱを持ち出しノードＮＤ２に発行する。ノードＮＤ１、ＮＤ２間の通信経路等で発生した故障は解消されているため、持ち出しノードＮＤ２は、無効化要求ＩＶＲＱを受信する。持ち出しノードＮＤ２のメモリアクセス制御部６は、無効化要求ＩＶＲＱに基づいて、キャッシュメモリ部４に保持された対象データＤ１’をキャッシュメモリ部４内で無効化する処理をキャッシュメモリ制御部５に実行させる。そして、持ち出しノードＮＤ２のメモリアクセス制御部６は、無効化要求ＩＶＲＱに対応して、対象データＤ１’を無効化させたことを示す情報を含む応答ＩＶＲＥＳをノードＮＤ１のコヒーレンシ制御部９に発行する。
【００３０】
以上の動作により、通信経路等で発生した一時的な故障により、追い出し要求ＭＯＲＱが持ち出しノードＮＤ２に届かない場合にも、持ち出しノードＮＤ２のキャッシュメモリ部４に保持された対象データＤ１’（またはＤ１）を無効化することができる。これにより、ノードＮＤ１以外に対象データＤ１を持ち出しているノードＮＤはなくなるため、情報処理装置ＩＰＥ１のキャッシュコヒーレンシを維持することができる。この結果、情報処理装置ＩＰＥ１のＲＡＳ（Reliability、Availability、Serviceability）性能の低下を抑止することができる。
【００３１】
なお、図２（Ｂ）および図２（Ｃ）において、ノードＮＤ１のコヒーレンシ制御部９は、追い出し要求ＭＯＲＱを発行後、所定時間が経過したことに基づいて、ノードＮＤ１が追い出し要求ＭＯＲＱを再度発行するとする（追い出し要求ＭＯＲＱのリトライ）。この場合、ノードＮＤ１のコヒーレンシ制御部９は、リトライに対する応答を待ってからメモリアクセス要求ＭＲＱに対する応答（正常応答またはエラー応答）を発行するため、メモリアクセス要求ＭＲＱに対する応答が図２に示す動作に比べて遅れてしまう。この結果、情報処理装置ＩＰＥ１の処理性能は、図２に示す動作に比べて低下する。
【００３２】
以上、図１および図２に示す実施形態では、ノードＮＤ間を接続する通信経路等で故障が一時的に発生した場合にも、メモリアクセス要求に対する対象データであって、自ノードＮＤ以外のノードＮＤに持ち出しているデータを無効化することができる。この結果、ノードＮＤ間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、追い出し要求をリトライすることなく、自ノードＮＤ以外のノードＮＤに持ち出しているデータを無効化できるため、メモリアクセス要求に対する応答が遅れることを抑止することができ、情報処理装置ＩＰＥ１の処理性能の低下を抑止することができる。
【００３３】
図３は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図３に示す情報処理装置ＩＰＥ２は、サーバ等であり、システムバスＳＢＵＳを介して互いに接続されたＣＰＵ（Central Processing Unit）等の複数のプロセッサ１００Ａと、各プロセッサ１００Ａに接続された記憶装置２００とを有する。以下では、互いに接続されたプロセッサ１００Ａおよび記憶装置２００は、ノードとも称される。記憶装置２００は、主記憶装置、または演算処理装置の外部に接続されるキャッシュメモリ部である。記憶装置２００がキャッシュメモリ部の場合、主記憶装置が記憶装置２００にさらに接続される。
【００３４】
各プロセッサ１００Ａは、キャッシュメモリ部１０、キャッシュメモリ制御部１２、複数のプロセッサコア部１４およびシステム制御部１６を有する。例えば、各ノードのプロセッサコア部１４は、ノード内の記憶装置２００に格納されたプログラムを実行することで、演算処理およびメモリアクセス処理を実行する。プロセッサ１００Ａは、演算処理装置の一例であり、プロセッサコア部１４は、演算処理部の一例である。システム制御部１６は、メモリアクセス要求に基づいてメモリアクセス処理を実行するとともに、キャッシュコヒーレンシを維持する処理を実行するメモリアクセス制御部の一例である。
【００３５】
各プロセッサ１００Ａは、自ノードの記憶装置２００にアクセスする以外に、システムバスＳＢＵＳを介して他ノードの記憶装置２００にアクセス可能である。また、情報処理装置ＩＰＥ２は、例えば、ＭＥＳＩ（Modified, Exclusive, Shared, Invalid）プロトコルの手法を用いて、キャッシュコヒーレンシを維持する制御を実行する。すなわち、情報処理装置ＩＰＥ２は、ｃｃ−ＮＵＭＡ（cache-coherent NonUniform Memory Access）アーキテクチャを採用したマルチプロセッサシステムとして機能する。
【００３６】
ＭＥＳＩプロトコルにおいて、”Ｍｏｄｉｆｉｅｄ”は、キャッシュメモリ部１０に保持されたデータが更新され（書き替えられ）、記憶装置２００に記憶されたデータと異なる状態を示す。”Ｅｘｃｌｕｓｉｖｅ”は、アクセス対象のデータが複数のプロセッサ１００Ａのキャッシュメモリ部１０のいずれか１つのみに保持され、データが更新されていない状態を示す。”Ｓｈａｒｅｄ”は、アクセス対象のデータが複数のプロセッサ１００Ａのキャッシュメモリ部１０に保持され、データが更新されていない状態を示す。”Ｉｎｖａｌｉｄ”は、キャッシュメモリ部１０に保持されたデータが無効であることを示す。以下では、Ｍｏｄｉｆｉｅｄ状態、Ｅｘｃｌｕｓｉｖｅ状態、Ｓｈａｒｅｄ状態およびＩｎｖａｌｉｄ状態は、それぞれＭ状態、Ｅ状態、Ｓ状態およびＩ状態とも称される。
【００３７】
キャッシュメモリ部１０は、例えば、セットアソシアティブ方式を採用しており、複数のウェイを有する。各ウェイは、タグ領域およびデータ領域を含む複数のエントリ（キャッシュライン）を有する。タグ領域は、例えば、アドレスの上位ビット群とキャッシュステータスとを保持する領域を有する。この場合、エントリは、アドレスの中位ビット群により選択され、キャッシュライン内のデータは、アドレスの下位ビット群により選択される。例えば、各キャッシュラインに保持されるデータのサイズは、記憶装置２００に保持されたデータのアクセス単位である１２８バイトである。キャッシュステータスを保持する領域には、Ｍ状態、Ｅ状態、Ｓ状態またはＩ状態を示す情報が設定される。
【００３８】
キャッシュメモリ制御部１２は、プロセッサコア部１４からリードコマンドを受信した場合、リードコマンドに含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されているか否かを判定する。なお、プロセッサコア部１４は、データをプロセッサコア部１４に読み出すロード命令等の命令を実行した場合、リードコマンドを発行する。データがキャッシュメモリ部１０に保持されている場合（キャッシュヒット）、キャッシュメモリ制御部１２は、キャッシュメモリ部１０からデータを読み出し、読み出したデータをプロセッサコア部１４に出力する。
【００３９】
一方、データがキャッシュメモリ部１０に保持されていない場合（キャッシュミス）、キャッシュメモリ制御部１２は、記憶装置２００に対するメモリアクセス要求をシステム制御部１６に発行し、システム制御部１６からのデータの受信を待つ。データをプロセッサコア部１４に読み出すロード命令等に基づきキャッシュメモリ制御部１２が発行するメモリアクセス要求は、共有型のメモリアクセス要求とも称される。すなわち、共有型のメモリアクセス要求は、記憶装置２００に保持されたデータを参照する場合に発行される。ＮＵＭＡアーキテクチャを採用したマルチプロセッサシステムでは、メモリアクセス要求を発行してからデータを受信するまでの時間は、同じノード内の記憶装置２００にアクセスする場合と、他ノード内の記憶装置２００にアクセスする場合とで異なる。メモリアクセス要求を発行してからデータの受信が完了するまでの処理は、トランザクションと称される。
【００４０】
キャッシュメモリ制御部１２は、システム制御部１６を介して記憶装置２００のいずれかから読み出されたデータをキャッシュメモリ部１０に格納するとともにプロセッサコア部１４に出力し、タグ領域にアドレスの上位ビット群とキャッシュステータスとを格納する。キャッシュメモリ制御部１２は、記憶装置２００から読み出したデータが他ノードのキャッシュメモリ部１０に保持されていない場合、タグ領域のキャッシュステータスをＥ状態に設定する。キャッシュメモリ制御部１２は、記憶装置２００から読み出したデータが他ノードのキャッシュメモリ部１０に保持されている場合、タグ領域のキャッシュステータスをＳ状態に設定する。なお、他ノードのキャッシュメモリ部１０の状態は、データとともに記憶装置２００から読み出されるディレクトリ情報に基づいて、システム制御部１６により判定される。すなわち、情報処理装置ＩＰＥ２は、ディレクトリ方式により、キャッシュコヒーレンシを維持する制御を実行する。ディレクトリ情報については、図４で説明される。
【００４１】
キャッシュメモリ制御部１２は、プロセッサコア部１４からライトコマンドを受信した場合、ライトコマンドに含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されているか否かを判定する。なお、プロセッサコア部１４は、データをプロセッサコア部１４から出力するストア命令等の命令を実行した場合、ライトコマンドを発行する。ライトコマンドに含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されている場合（キャッシュヒット）、キャッシュメモリ制御部１２は、キャッシュメモリ部１０に保持されているデータを上書きする。そして、キャッシュメモリ制御部１２は、キャッシュステータスをＥ状態またはＳ状態からＭ状態に変更する。なお、キャッシュステータスをＳ状態からＭ状態に変更する場合、キャッシュメモリ制御部１２は、他ノードのキャッシュメモリ部１０に保持されている対象データを無効化するキャッシュ無効化要求を他ノードに発行する。これにより、一方のノードのキャッシュメモリ部１０がＳ状態でデータを保持し、他方のノードのキャッシュメモリ部１０がＭ状態でデータを保持することが抑止され、キャッシュコヒーレンシが維持される。
【００４２】
一方、データがキャッシュメモリ部１０に保持されていない場合（キャッシュミス）、キャッシュメモリ制御部１２は、記憶装置２００に対するメモリアクセス要求をシステム制御部１６に発行し、システム制御部１６からのデータの受信を待つ。データをプロセッサコア部１４から出力するストア命令等に基づきキャッシュメモリ制御部１２が生成するメモリアクセス要求は、排他型のメモリアクセス要求とも称される。すなわち、排他型のメモリアクセス要求は、記憶装置２００に保持されたデータを書き替える場合に生成される。
【００４３】
キャッシュメモリ制御部１２は、システム制御部１６からデータを受信した場合、受信したデータにライトコマンドに含まれるライトデータをマージし、マージしたデータをキャッシュメモリ部１０に格納するとともに、タグ領域にアドレスの上位ビットを格納する。また、キャッシュメモリ制御部１２は、タグ領域のキャッシュステータスをＭ状態に設定する。なお、アクセス対象のデータを記憶装置２００に保持しているノードにおいて排他型のメモリアクセス要求を受信したシステム制御部１６は、対象データを保持する他ノードのキャッシュメモリ部１０に、対象データを無効化させるキャッシュ無効化要求を発行する。
【００４４】
キャッシュメモリ制御部１２は、キャッシュメモリ部１０のエントリに空きがない場合、エントリのいずれかに保持されたデータをキャッシュメモリ部１０から追い出し、記憶装置２００から読み出すデータを格納するエントリを確保する。データを追い出すエントリは、ＬＲＵ（Least Recently Used）手法等を用いて決められる。キャッシュメモリ部１０上で書き替えられたＭ状態のデータをキャッシュメモリ部１０から追い出す場合、キャッシュメモリ制御部１２は、追い出したデータを記憶装置２００に書き戻すためのメモリアクセス要求をシステム制御部１６に発行する。
【００４５】
さらに、キャッシュメモリ制御部１２は、システム制御部１６を介して他ノードのプロセッサ１００Ａからデータ返送要求を受けた場合、データ返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されているか否かを判定する。キャッシュメモリ制御部１２は、データ返送要求に含まれるアドレスに対応するデータが更新されることなくキャッシュメモリ部１０に保持されている場合、キャッシュメモリ部１０からデータを追い出す。そして、キャッシュメモリ制御部１２は、データを追い出したことを示す情報を含む応答を、データ返送要求を発行したプロセッサ１００Ａに発行する。データ返送要求は、キャッシュメモリ部１０からデータを追い出させる追い出し要求の一例である。
【００４６】
キャッシュメモリ制御部１２は、データ返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０上で更新されている場合、キャッシュメモリ部１０からデータを追い出したデータを含む応答を、データ返送要求を発行したプロセッサ１００Ａに発行する。キャッシュメモリ制御部１２は、データ返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０上に存在しない場合、データが存在しないことを示すエラー情報を含む応答を、データ返送要求を発行したプロセッサ１００Ａに発行する。
【００４７】
キャッシュメモリ制御部１２は、システム制御部１６を介して他ノードのプロセッサ１００Ａからキャッシュ無効化要求を受けた場合、キャッシュ無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されているか否かを判定する。キャッシュメモリ制御部１２は、キャッシュ無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されている場合、キャッシュメモリ部１０に保持されたデータを無効化する。そして、キャッシュメモリ制御部１２は、データを無効化したことを示す情報を含む応答を、キャッシュ無効化要求を発行したプロセッサ１００Ａに発行する。キャッシュ無効化要求は、キャッシュメモリ部１０に保持されているデータを無効化させる無効化要求の一例である。
【００４８】
キャッシュメモリ制御部１２は、キャッシュ無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０上に存在しない場合、データが存在しないことを示すエラー情報を含む応答を、キャッシュ無効化要求を発行したプロセッサ１００Ａに発行する。以下では、データ返送要求およびキャッシュ無効化要求は、コヒーレンシ制御要求とも称される。
【００４９】
システム制御部１６は、プロセッサインタフェース１８、応答調停部２０、エントリ決定部２２、制御要求発行部２４、複数の要求処理エントリ２６およびメモリ制御部２８を有する。
【００５０】
プロセッサインタフェース１８は、キャッシュメモリ制御部１２およびシステムバスＳＢＵＳに接続され、各ノードのキャッシュメモリ制御部１２との間での通信を制御する。プロセッサインタフェース１８は、自ノードのキャッシュメモリ制御部１２および他ノードのプロセッサ１００Ａから受信するメモリアクセス要求を調停により選択し、選択した順にメモリアクセス要求をエントリ決定部２２に出力する。
【００５１】
なお、プロセッサインタフェース１８は、受信したメモリアクセス要求に含まれるアドレスが、他ノードの記憶装置２００に割り当てられている場合、システムバスＳＢＵＳを介して他ノードにメモリアクセス要求を発行する。プロセッサインタフェース１８は、メモリアクセス要求に基づいて応答調停部２０から出力されるデータおよび応答を受信し、受信したデータおよび応答をメモリアクセス要求の発行元に発行する。
【００５２】
また、プロセッサインタフェース１８は、自ノードのキャッシュメモリ部１０に保持しているデータに対応する排他型のメモリアクセス要求を他ノードのプロセッサ１００Ａから受信した場合、自ノードのキャッシュメモリ制御部１２に、データ返送要求を発行する。自ノードのキャッシュメモリ部１０がメモリアクセス要求に対応するデータを保持しているか否かは、ディレクトリ情報により判定される。プロセッサインタフェース１８は、自ノードのキャッシュメモリ制御部１２から更新されたデータを受信した場合、メモリアクセス要求の発行元のプロセッサ１００Ａに更新されたデータを出力し、記憶装置２００に更新されたデータを書き込む。
【００５３】
プロセッサインタフェース１８は、システムバスＳＢＵＳを介して他ノードのプロセッサ１００Ａからコヒーレンシ制御要求（データ返送要求またはキャッシュ無効化要求）を受信した場合、受信したコヒーレンシ制御要求をキャッシュメモリ制御部１２に発行する。プロセッサインタフェース１８は、コヒーレンシ制御要求に対応してキャッシュメモリ制御部１２から発行される応答をコヒーレンシ制御要求の発行元のプロセッサ１００Ａに発行する。
【００５４】
さらに、プロセッサインタフェース１８は、制御要求発行部２４から出力されるコヒーレンシ制御要求を受信した場合、受信したコヒーレンシ制御要求を、システムバスＳＢＵＳを介して他ノードのプロセッサ１００Ａに発行する。プロセッサインタフェース１８は、システムバスＳＢＵＳを介して他ノードのプロセッサ１００Ａからコヒーレンシ制御要求に対する応答を受信した場合、受信した応答をコヒーレンシ制御要求の発行元の要求処理エントリ２６に出力する。
【００５５】
応答調停部２０は、要求処理エントリ２６のステートマシン３２から出力されるメモリアクセス要求に対する応答およびデータを受信し、受信した応答を調停し、調停した順に、応答およびデータをプロセッサインタフェース１８に出力する。
【００５６】
エントリ決定部２２は、プロセッサインタフェース１８から受信したメモリアクセス要求を処理するために使用する要求処理エントリ２６を、ＬＲＵまたはラウンドロビン等の手法を用いて決定する。エントリ決定部２２は、使用を決定した要求処理エントリ２６にメモリアクセス要求を転送する。
【００５７】
制御要求発行部２４は、要求処理エントリ２６から出力されるコヒーレンシ制御要求を保持するコヒーレンシ制御要求キューＣＲＱＵＥを有する。制御要求発行部２４は、コヒーレンシ制御要求キューＣＲＱＵＥに保持されたコヒーレンシ制御要求を調停することにより選択する。そして、制御要求発行部２４は、選択したコヒーレンシ制御要求を、プロセッサインタフェース１８およびシステムバスＳＢＵＳを介して、宛先のプロセッサ１００Ａに発行する。
【００５８】
要求処理エントリ２６は、アクセス要求バッファ３０、ステートマシン３２、データバッファ３４、ディレクトリバッファ３６およびタイマ３８を有する。システム制御部１６が有する要求処理エントリ２６の数は、８個、１６個または３２個等である。ステートマシン３２は、データ返送要求およびキャッシュ無効化要求を発行する制御要求発行部の一例である。
【００５９】
アクセス要求バッファ３０は、エントリ決定部２２から受信したメモリアクセス要求に含まれるアドレスおよび要求元ＩＤ（Identification）等の情報を保持し、保持している情報をステートマシン３２に出力する。
【００６０】
ディレクトリバッファ３６は、ステートマシン３２から記憶装置２００に発行されるリード要求に基づいて記憶装置２００から読み出されるディレクトリ情報を保持する。
【００６１】
データバッファ３４は、ステートマシン３２から記憶装置２００に発行されるリード要求に基づいて記憶装置２００から読み出されるデータを保持する。また、データバッファ３４は、ステートマシン３２が他ノードのプロセッサ１００Ａに発行するデータ返送要求に対する応答に含まれるデータ（更新されたデータ）を保持する。
【００６２】
タイマ３８は、データ返送要求が他ノードに発行されてから、データ返送要求に対する応答を他ノードから受信するまでの時間を計測する。タイマ３８は、計測している時間が予め設定された時間を越えた場合、タイムアウトの発生を示すエラー情報をステートマシン３２に通知する。
【００６３】
ステートマシン３２は、持ち出し先検出部４０とプロセッサ番号記憶部４２とを有する。なお、持ち出し先検出部４０とプロセッサ番号記憶部４２とは、要求処理エントリ２６内であってステートマシン３２の外部に配置されてもよい。持ち出し先検出部４０は、記憶装置２００からデータとともに出力されるディレクトリ情報を解析し、記憶装置２００から出力されたデータが他ノードのキャッシュメモリ部１０に格納されているか否かを検出する。持ち出し先検出部４０は、記憶装置２００から読み出した対象データを持ち出している他のノードＮＤである持ち出しノードＮＤをディレクトリ情報に基づいて検出する検出部の一例である。
【００６４】
記憶装置２００から出力されたデータが他ノードのキャッシュメモリ部１０に持ち出されている場合、持ち出し先検出部４０は、データを持ち出しているプロセッサ１００Ａをデータ返送要求の宛先に決定する。そして、持ち出し先検出部４０は、データ返送要求の宛先に決定されたプロセッサ１００Ａを識別するプロセッサ番号をプロセッサ番号記憶部４２に格納する。なお、プロセッサ番号のプロセッサ番号記憶部４２への格納は、ステートマシン３２により実行されてもよい。プロセッサ番号記憶部４２は、データを持ち出しているプロセッサ１００Ａを識別するプロセッサ番号を記憶する識別情報記憶部の一例である。プロセッサ番号は、データを持ち出しているプロセッサ１００Ａを識別する識別情報の一例である。
【００６５】
ステートマシン３２は、記憶装置２００に対するメモリアクセス要求（リード要求またはライト要求）の発行と、他ノードのプロセッサ１００Ａに対するコヒーレンシ制御要求の発行と、発行した要求に対する応答とを制御する。例えば、ステートマシン３２は、アクセス要求バッファ３０から受信するメモリアクセス要求に基づいて、リード要求またはライト要求を、メモリ制御部２８を介して記憶装置２００に出力する。
【００６６】
ステートマシン３２は、持ち出し先検出部４０によりデータが他ノードのプロセッサ１００Ａに持ち出されていないと検出された場合、記憶装置２００から出力されたデータとともに応答を応答調停部２０に出力し、要求処理エントリ２６を開放する。一方、ステートマシン３２は、持ち出し先検出部４０によりデータが他ノードのプロセッサ１００Ａに持ち出されていると検出された場合、データを持ち出しているプロセッサ１００Ａにデータ返送要求を発行し、タイマ３８を起動する。
【００６７】
ステートマシン３２は、データ返送要求に対する応答が、他ノードのプロセッサ１００Ａが更新したデータを含む場合、応答に含まれる更新されたデータを応答調停部２０に出力し、ディレクトリバッファ３６に保持されたディレクトリ情報を更新する。そして、ステートマシン３２は、更新したディレクトリ情報を更新されたデータとともに記憶装置２００に書き込むためにライト要求をメモリ制御部２８に出力し、要求処理エントリ２６を開放する。
【００６８】
ステートマシン３２は、データ返送要求に対する応答を受信する前に、タイマ３８が所定時間の計測を完了してタイムアウトを検出した場合、エラーの発生を示すエラー応答を応答調停部２０に出力する。そして、ステートマシン３２は、ディレクトリバッファ３６に保持されたディレクトリ情報にエラー情報を書き込み、エラー情報を書き込んだディレクトリ情報を記憶装置２００に書き込むためにライト要求をメモリ制御部２８に出力する。なお、データ返送要求の発行に基づいて、タイマ３８が計測する所定時間は、例えば、数ミリ秒から数十ミリ秒である。
【００６９】
さらに、ステートマシン３２は、タイムアウトが発生した場合、プロセッサ番号記憶部４２が記憶するプロセッサ番号により識別されるプロセッサ１００Ａに、制御要求発行部２４を介してキャッシュ無効化要求を発行する。ステートマシン３２は、キャッシュ無効化要求に対する応答を処理した後、要求処理エントリ２６を開放する。
【００７０】
メモリ制御部２８は、要求処理エントリ２６から出力されるリード要求またはライト要求を保持するメモリ要求キューＭＲＱＵＥを有する。メモリ制御部２８は、メモリ要求キューＭＲＱＵＥに保持されたリード要求またはライト要求を調停することにより選択し、選択したリード要求またはライト要求を記憶装置２００に順に出力する。
【００７１】
記憶装置２００は、複数のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）等を含み、プロセッサコア部１４で処理するデータとディレクトリ情報とを保持する記憶領域を有する。記憶装置２００は、プロセッサコア部１４が実行するプログラムを保持する記憶領域を有してもよい。
【００７２】
図４は、図３に示す記憶装置２００およびキャッシュメモリ部１０に保持されるデータの一例を示す。図４に示す例では、プロセッサ１００Ａおよび記憶装置２００を有する２つのノードＮＤ１、ＮＤ２がシステムバスＳＢＵＳを介して互いに接続されている。
【００７３】
ノードＮＤ１の記憶装置２００は、アドレスＡ０、Ａ１、Ａ２、Ａ３、Ａ４、...が割り当てられ、ノードＮＤ２の記憶装置２００は、アドレスＢ０、Ｂ１、Ｂ２、Ｂ３、Ｂ４、...が割り当てられる。各記憶装置２００は、アドレス毎にディレクトリ情報を記憶するディレクトリ領域と、データを記憶するデータ領域とを有する。例えば、各データ領域は、１２８バイトであり、キャッシュメモリ部１０のキャッシュラインのサイズと等しいが、図４では、データは４ビットで表す。
【００７４】
ディレクトリ領域は、ディレクトリ情報を記憶する。各ディレクトリ領域は、キャッシュメモリ部１０へのデータの持ち出し情報を記憶するＥＳＩ領域と、データの持ち出し先のプロセッサ１００Ａを識別するプロセッサ番号を記憶するＣＰＵ領域と、エラー情報を記憶するＥＲＲ領域とを有する。ＥＳＩ領域において、符号Ｉ（Ｉｎｖａｌｉｄ）は、データが自ノードのキャッシュメモリ部１０のみに持ち出されていることを示し、符号Ｅ（Ｅｘｃｌｕｓｉｖｅ）は、データが他ノードのいずれかのキャッシュメモリ部１０のみに持ち出されていることを示す。符号Ｓ（Ｓｈａｒｅｄ）は、データが複数のノードのキャッシュメモリ部１０に持ち出されていることを示す。
【００７５】
ノードＮＤ１のキャッシュメモリ部１０のディレクトリ領域から、次のことが分かる。アドレスＡ０のデータ”００００”およびアドレスＡ１のデータ”０００１”は、ノードＮＤ１のキャッシュメモリ部１０のみに持ち出されている。アドレスＡ２のデータ”１１１１”およびアドレスＡ３のデータ”１１０１”は、ノードＮＤ２のキャッシュメモリ部１０のみに持ち出されている。アドレスＡ４のデータ”１０１０”は、ノードＮＤ１、ＮＤ２のキャッシュメモリ部１０に持ち出されている。また、ノードＮＤ２のキャッシュメモリ部１０のディレクトリ領域から、アドレスＢ０のデータ”０１１１”は、ノードＮＤ１、ＮＤ２のキャッシュメモリ部１０に持ち出されていることが分かる。
【００７６】
各キャッシュメモリ部１０は、１２８バイトのデータを記憶するデータ領域と、データ領域に対応するタグ領域とを含む複数のエントリを有する。タグ領域は、アドレスを記憶するＡＤ領域と、キャッシュステータスを記憶するＭＥＳＩ領域とを有する。なお、セットアソシアティブ方式のキャッシュメモリ部１０では、ＡＤ領域には、アドレスの上位ビット群が格納されるが、図４では、説明を分かりやすくするために、ＡＤ領域に記憶装置２００のアドレスが格納されるとする。ＭＥＳＩ領域には、Ｍ状態、Ｅ状態、Ｓ状態またはＩ状態を示す情報が格納される。
【００７７】
ノードＮＤ１のキャッシュメモリ部１０のタグ領域から、次のことが分かる。アドレスＡ０のデータ”００００”は、ノードＮＤ１のキャッシュメモリ部１０のみが保持する（Ｅ状態）。アドレスＡ１のデータ”０１１０”は、ノードＮＤ１の記憶装置２００に記憶されているデータに対して更新されており、ノードＮＤ１のキャッシュメモリ部１０のみが保持する（Ｍ状態）。アドレスＢ０のデータ”０１１１”およびアドレスＡ４のデータ”１０１０”は、他ノードのキャッシュメモリ部１０と共有されている（Ｓ状態）。
【００７８】
ノードＮＤ２のキャッシュメモリ部１０のタグ領域から、次のことが分かる。アドレスＡ２のデータ”１１１１”は、ノードＮＤ２のキャッシュメモリ部１０のみが保持する（Ｅ状態）。アドレスＡ３のデータ”０１０１”は、ノードＮＤ１の記憶装置２００に記憶されているデータに対して更新されており、ノードＮＤ２のキャッシュメモリ部１０のみが保持する（Ｍ状態）。アドレスＢ０のデータ”０１１１”およびアドレスＡ４のデータ”１０１０”は、他ノードのキャッシュメモリ部１０と共有されている（Ｓ状態）。
【００７９】
各プロセッサ１００Ａのシステム制御部１６は、メモリアクセス要求に基づいてデータとともに記憶装置２００から読み出されるディレクトリ情報が”Ｓ”または”Ｅ”を含む場合、データが他ノードに持ち出されていると判定する。例えば、ノードＮＤ１のプロセッサ１００Ａは、アドレスＡ２に対する共有型または排他型のメモリアクセス要求に基づいて記憶装置２００から読み出されるディレクトリ情報に基づいて、データがノードＮＤ２のプロセッサ１００Ａに持ち出されていると判定する。そして、ノードＮＤ１のプロセッサ１００Ａは、ノードＮＤ２のプロセッサ１００Ａに、アドレスＡ２に対するデータ返送要求を発行する。アドレス返送要求を受けたノードＮＤ２のプロセッサ１００Ａは、データを更新していないため（Ｅ状態）、キャッシュメモリ部１０からデータを追い出し、データを追い出したことを示す情報を含む応答をノードＮＤ１のプロセッサ１００Ａに発行する。
【００８０】
なお、アドレスＡ２に対する共有型のメモリアクセス要求が発行された場合、ノードＮＤ２のプロセッサ１００Ａは、データを追い出さずに、キャッシュステータスをＳ状態に変更し、データを共有することを示す情報を含む応答をノードＮＤ１に発行してもよい。この場合、ノードＮＤ１のプロセッサ１００Ａは、記憶装置２００のアドレスＡ２のＥＳＩ領域（ディレクトリ情報）をＥ状態からＳ状態に書き替える。
【００８１】
また、ノードＮＤ１のプロセッサ１００Ａは、アドレスＡ３に対する共有型または排他型のメモリアクセス要求に基づいて記憶装置２００から読み出されるディレクトリ情報に基づいて、データがノードＮＤ２のプロセッサ１００Ａに持ち出されていると判定する。そして、ノードＮＤ１のプロセッサ１００Ａは、ノードＮＤ２のプロセッサ１００Ａに、アドレスＡ３に対するデータ返送要求を発行する。アドレス返送要求を受けたノードＮＤ２のプロセッサ１００Ａは、キャッシュメモリ部１０内でデータを更新しているため（Ｍ状態）、キャッシュメモリ部１０からデータを追い出し、追い出したデータを含む応答をノードＮＤ１のプロセッサ１００Ａに発行する。
【００８２】
さらに、ノードＮＤ１のプロセッサ１００Ａは、アドレスＡ４に対する排他型のメモリアクセス要求を受けた場合、ディレクトリ情報に基づいて、データがノードＮＤ２のプロセッサ１００Ａに持ち出されていると判定する。そして、ノードＮＤ１のプロセッサ１００Ａは、ノードＮＤ２のプロセッサ１００Ａに、アドレスＡ４に対するデータ返送要求を発行する。アドレス返送要求を受けたノードＮＤ２のプロセッサ１００Ａはデータを更新していないため（Ｓ状態）、キャッシュメモリ部１０からデータを追い出し、データを追い出したことを示す情報を含む応答をノードＮＤ１のプロセッサ１００Ａに発行する。なお、ノードＮＤ１のプロセッサ１００Ａは、アドレスＡ４に対する共有型のメモリアクセス要求を受けた場合、アドレスＡ４に対するデータ返送要求の発行を抑止する。すなわち、共有型のメモリアクセス要求に対するディレクトリ情報がＳ状態を示す場合、データは他ノードに持ち出されていないと判定される。
【００８３】
一方、ノードＮＤ１のプロセッサ１００Ａは、アドレスＡ１に対する排他型または共有型のメモリアクセス要求をノードＮＤ２のプロセッサ１００Ａから受けた場合、ディレクトリ情報に基づいて、データが自ノードのキャッシュメモリ部１０に持ち出されていると判定する。そして、ノードＮＤ１のプロセッサ１００Ａは、自ノードのキャッシュメモリ制御部１２に、アドレスＡ１に対するデータ返送要求を発行する。アドレス返送要求を受けたキャッシュメモリ制御部１２は、データを更新しているため（Ｍ状態）、キャッシュメモリ部１０からデータを追い出し、追い出したデータを含む応答をノードＮＤ２のプロセッサ１００Ａに発行する。そして、ノードＮＤ１のプロセッサ１００Ａは、ノードＮＤ１のキャッシュメモリ部１０から返送されたデータを記憶装置２００に書き込む。また、ノードＮＤ１のプロセッサ１００Ａは、記憶装置２００のアドレスＡ１のＥＳＩ領域（ディレクトリ情報）をＩ状態からＥ状態に書き替え、ＣＰＵ領域に”２”を格納する。
【００８４】
ノードＮＤ１のプロセッサ１００Ａは、アドレスＡ０に対する共有型のメモリアクセス要求をノードＮＤ２のプロセッサ１００Ａから受けた場合、Ｅ状態のデータを追い出すことなく応答として発行する。そして、ノードＮＤ１のプロセッサ１００Ａは、タグ領域のキャッシュステータスをＥ状態からＳ状態に変更する。この場合、ノードＮＤ１のプロセッサ１００Ａは、データを共有することを示す情報を含む応答をノードＮＤ２のプロセッサ１００Ａに発行する。また、ノードＮＤ１のプロセッサ１００Ａは、記憶装置２００のアドレスＡ０のＥＳＩ領域（ディレクトリ情報）をＩ状態からＳ状態に書き替え、ＣＰＵ領域に”１、２”を格納する。
【００８５】
ノードＮＤ２のプロセッサ１００Ａは、アドレスＢ０に対する排他型のメモリアクセス要求を受けた場合、ディレクトリ情報に基づいて、データがノードＮＤ１のプロセッサ１００Ａに持ち出されていると判定する。そして、ノードＮＤ２のプロセッサ１００Ａは、ノードＮＤ１のプロセッサ１００Ａに、アドレスＢ０に対するデータ返送要求を発行する。アドレス変換要求を受けたノードＮＤ１のプロセッサ１００Ａは、データを更新していないため（Ｓ状態）、キャッシュメモリ部１０からデータを追い出し、データを追い出したことを示す情報を含む応答をノードＮＤ２のプロセッサ１００Ａに発行する。なお、データが更新されている場合、追い出したデータをノードＮＤ２のプロセッサ１００Ａに応答として発行する。
【００８６】
図５は、図３に示すシステム制御部１６の動作の一例を示す。すなわち、図５は、情報処理装置の制御方法の一例を示す。図５に示す処理は、キャッシュメモリ制御部１２がキャッシュミスを判定し、システム制御部１６に共有型または排他型のメモリアクセス要求を出力したことに基づいて開始される。なお、システム制御部１６は、メモリアクセス要求を、自ノードのキャッシュメモリ制御部１２から受信し、あるいは、他ノードのプロセッサ１００Ａのキャッシュメモリ制御部１２から受信する。
【００８７】
まず、ステップＳ１０において、プロセッサインタフェース１８は、受信したメモリアクセス要求を調停により選択し、選択したメモリアクセス要求をエントリ決定部２２に出力する。
【００８８】
次に、ステップＳ２０において、エントリ決定部２２は、メモリアクセス要求を処理する要求処理エントリ２６を、空いている要求処理エントリ２６の中から選択し、選択した要求処理エントリ２６のアクセス要求バッファ３０にメモリアクセス要求を転送する。
【００８９】
次に、ステップＳ３０において、ステートマシン３２は、アクセス要求バッファ３０に保持されたメモリアクセス要求に基づいて、メモリ制御部２８を介して記憶装置２００にリード要求を発行する。
【００９０】
次に、ステップＳ４０において、ステートマシン３２は、リード要求に基づいて記憶装置２００から読み出されるデータおよびディレクトリ情報を受信する。ステートマシン３２は、受信したデータをデータバッファ３４に格納し、受信したディレクトリ情報をディレクトリバッファ３６に格納する。
【００９１】
次に、ステップＳ５０において、ステートマシン３２は、ディレクトリバッファ３６に格納したディレクトリ情報に基づいて、記憶装置２００から読み出したデータが他ノードに持ち出されているか否かを判定する。データが他ノードに持ち出されている場合、処理はステップＳ６０に移行され、データが他ノードに持ち出されていない場合、処理はステップＳ１１０に移行される。
【００９２】
ステップＳ６０において、ステートマシン３２は、データを持ち出している他ノードのプロセッサ１００Ａにデータ返送要求を発行する。次に、ステップＳ７０において、ステートマシン３２は、データ返送要求を発行したプロセッサ１００Ａを識別するプロセッサ番号をプロセッサ番号記憶部４２に格納する。なお、ステップＳ１０で排他型のメモリアクセス要求を受信し、ステップＳ４０で読み出したディレクトリ情報がＳ状態の場合、他ノードのプロセッサ１００Ａは、データを更新していない。このため、ステートマシン３２は、データを持ち出している他ノードのプロセッサ１００Ａに、データ返送要求の代わりにキャッシュ無効化要求を発行してもよい。
【００９３】
次に、ステップＳ８０において、ステートマシン３２は、タイマ３８によるタイムアウトが発生する前に、データ返送要求に対する応答を受信した場合、処理をステップＳ９０に移行する。ステートマシン３２は、データ返送要求に対する応答を受信する前にタイマ３８によるタイムアウトが発生した場合、処理をステップＳ１００に移行する。例えば、タイムアウトは、ノード間の通信経路等の一時的な故障により、データ返送要求が通信経路の途中で失われた場合に発生する。データ返送要求が届かなかったプロセッサ１００Ａは、データ返送要求の対象データを返送することなく参照し続けるおそれがあり、対象データを更新するおそれがある。対象データが更新された場合、情報処理装置ＩＰＥ２のキャッシュコヒーレンシは維持されなくなる。
【００９４】
ステップＳ９０において、ステートマシン３２は、データ返送要求に対する応答に含まれるデータをデータバッファ３４に格納し、処理をステップＳ１１０に移行する。返送されたデータは、データを持ち出した他ノードのプロセッサ１００Ａにより更新されたデータ（書き替えられたデータ）である。なお、データを持ち出した他ノードのプロセッサ１００Ａがデータを更新していない場合、ステップＳ９０の処理は省略されてもよい。
【００９５】
ステップＳ１００において、ステートマシン３２は、ディレクトリバッファ３６に保持されているディレクトリ情報にタイムアウトが発生したことを示すエラー情報を書き込み、処理をステップＳ１１０に移行する。
【００９６】
ステップＳ１１０において、ステートマシン３２は、データバッファ３４が保持しているデータとともに応答を応答調停部２０に出力する。応答調停部２０は、ステートマシン３２から受信したデータを含む応答を、メモリアクセス要求の要求元に発行する。なお、ステートマシン３２は、データを持ち出したプロセッサ１００Ａによりデータが更新されている場合、更新されたデータを、応答調停部２０を介してメモリアクセス要求の要求元に発行する。ステートマシン３２は、タイムアウト等のエラーが発生した場合、エラーの発生を示すエラー応答を、応答調停部２０を介してメモリアクセス要求の要求元に発行する。
【００９７】
ステートマシン３２は、タイムアウトが発生した場合にも、データ返送要求をリトライすることなく、エラー応答をメモリアクセス要求の要求元に発行する。これにより、メモリアクセス要求の要求元のプロセッサ１００Ａは、エラー応答に関係する処理以外の処理を実行することができる。これに対して、メモリアクセス要求をリトライする場合、ステートマシン３２は、リトライ用のメモリアクセス要求の応答を待った後、応答をメモリアクセス要求の発行元に発行する。このため、メモリアクセス要求の発行元のプロセッサ１００Ａの処理効率は、リトライしない場合に比べて低下する。
【００９８】
次に、ステップＳ１２０において、ステートマシン３２は、データを持ち出したプロセッサ１００Ａによりデータが更新されている場合またはディレクトリ情報を更新した場合、記憶装置２００にライト要求を発行する。そして、ステートマシン３２は、データおよびディレクトリ情報を記憶装置２００に書き込む。ステップＳ８０でタイムアウトが発生した場合、タイムアウトの発生を示すエラー情報を含むディレクトリ情報が記憶装置２００に書き込まれる。
【００９９】
次に、ステップＳ１３０において、ステートマシン３２は、トランザクションの後処理を実行する。トランザクションの後処理は、データ返送要求に対する応答が所定時間内に受信されなかった場合に、データの持ち出し先のプロセッサ１００Ａのキャッシュメモリ部１０が保持しているメモリアクセス要求の対象データを無効にするために実行される。トランザクションの後処理については、図６で説明される。次に、ステップＳ２００において、ステートマシン３２は、ステートマシン３２が含まれる要求処理エントリ２６を開放し、処理を終了する。
【０１００】
図６は、図５に示すステップＳ１３０の処理の一例を示す。まず、ステップＳ１３１において、ステートマシン３２は、ディレクトリバッファ３６に保持されているディレクトリ情報が、タイムアウトの発生を示すエラー情報を含むか否かを判定する。ディレクトリ情報がタイムアウトの発生を示すエラー情報を含む場合、処理はステップＳ１３２に移行され、ディレクトリ情報がタイムアウトの発生を示すエラー情報を含まない場合、処理は終了する。
【０１０１】
ステップＳ１３２において、ステートマシン３２は、プロセッサ番号記憶部４２からプロセッサ番号を読み出す。プロセッサ番号記憶部４２に記憶されたプロセッサ番号は、図５に示すステップＳ６０で発行したデータ返送要求の宛先のプロセッサ１００Ａを示し、データ返送要求に対する応答を受信することなくタイムアウトが発生したエラー対象のプロセッサ１００Ａを示す。
【０１０２】
次に、ステップＳ１３３において、ステートマシン３２は、データ返送要求の宛先のプロセッサ１００Ａにキャッシュ無効化要求を発行する。ここで、ノード間の通信経路等の一時的な故障により、メモリアクセス要求が通信経路の途中で失われた場合、一時的な故障が回復していればキャッシュ無効化要求は、データ返送要求の宛先のプロセッサ１００Ａに届く。データ返送要求の宛先のプロセッサ１００Ａは、キャッシュ無効化要求の受信に基づいて、対象データをキャッシュメモリ部１０から追い出し、対象データを追い出したことを示す情報を含む応答をキャッシュ無効化要求の発行元のプロセッサ１００Ａに発行する。
【０１０３】
次に、ステップＳ１３４において、ステートマシン３２は、データ返送要求の発行先のプロセッサ１００Ａからキャッシュ無効化要求に対する応答を受信し、処理を終了する。すなわち、データ返送要求に対する応答がない場合に、キャッシュ無効化要求を発行することで、情報処理装置ＩＰＥ２のキャッシュコヒーレンシを維持することができる。なお、ステートマシン３２は、キャッシュ無効化要求に対する正常な応答を受信しない場合、プロセッサ１００Ａを管理するために情報処理装置ＩＰＥ２に搭載される管理装置等にエラーの発生を通知する。
【０１０４】
以上、図３から図６に示す実施形態においても、図１に示す実施形態と同様に、ノードＮＤ間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、要求処理エントリ２６は、データ返送要求に対するタイムアウトが発生した場合に、データ返送要求をリトライすることなく、エラー応答をメモリアクセス要求の要求元に発行する。これにより、メモリアクセス要求の要求元のプロセッサ１００Ａは、エラー応答に関係する処理以外の処理を実行することができ、データ返送要求をリトライすることで応答の受信が遅れる場合に比べて、処理性能を向上することができる。
【０１０５】
さらに、図３から図６に示す実施形態では、データ返送要求の宛先のプロセッサ１００Ａを識別するプロセッサ番号を記憶するプロセッサ番号記憶部４２を有する。これにより、データ返送要求を発行した後、タイムアウトの発生後に、キャッシュ無効化要求を発行する場合にも、プロセッサ番号記憶部４２を参照することで、データ返送要求の宛先のプロセッサ１００Ａにキャッシュ無効化要求を発行することができる。
【０１０６】
この結果、情報処理装置ＩＰＥ２のキャッシュコヒーレンシを維持しつつ、情報処理装置ＩＰＥ２の処理性能およびＲＡＳ性能の低下を抑止することができる。
【０１０７】
図７は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図３に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【０１０８】
図７に示す情報処理装置ＩＰＥ３は、サーバ等であり、図３に示す情報処理装置ＩＰＥ２のプロセッサ１００Ａの代わりにプロセッサ１００Ｂを有する。プロセッサ１００Ｂは、図３に示すシステム制御部１６の代わりにシステム制御部１６Ｂを有する。システム制御部１６Ｂは、図３に示す複数の要求処理エントリ２６の代わりに複数の要求処理エントリ２６Ｂを有する。情報処理装置ＩＰＥ３のその他の構成は、図３に示す情報処理装置ＩＰＥ２の構成と同様である。
【０１０９】
要求処理エントリ２６Ｂは、アクセス要求バッファ３０、ステートマシン３２Ｂ、データバッファ３４、ディレクトリバッファ３６、タイマ３８およびエラー検出部４４を有する。ステートマシン３２Ｂは、図３に示すステートマシン３２にエラー種記憶部４６を追加している。なお、持ち出し先検出部４０、プロセッサ番号記憶部４２およびエラー種記憶部４６は、要求処理エントリ２６Ｂ内であって、ステートマシン３２Ｂの外部に配置されてもよい。
【０１１０】
エラー検出部４４は、記憶装置２００から読み出したディレクトリ情報と、データ返送要求に対する応答とに基づいて、ディレクトリ情報が矛盾していることを検出した場合、ディレクトリ矛盾エラーを示すエラー情報をステートマシン３２Ｂに通知する。
【０１１１】
例えば、記憶装置２００から読み出したディレクトリ情報に誤りがあり、ディレクトリ情報に示されるデータの持ち出し先のプロセッサ１００Ｂが、実際にはデータを持ち出していない場合がある。この場合、データ返送要求を受信したプロセッサ１００Ｂは、対象データをキャッシュメモリ部１０に保持してないことを示すエラー応答（ディレクトリ矛盾）を発行する。記憶装置２００に保持されているディレクトリ情報が誤っている可能性がある場合、ステートマシン３２Ｂは、ノード外の全てのプロセッサ１００Ｂにキャッシュ無効化要求を発行し、対象データをキャッシュメモリ部１０から追い出すことが望ましい。記憶装置２００に保持されているディレクトリ情報に誤りがあり、データの持ち出し先の判別が困難な場合、ノード外へのデータの持ち出しを一旦解除することで、キャッシュコヒーレンシが維持されなくなることを抑止することができる。
【０１１２】
ステートマシン３２Ｂは、データ返送要求に対する応答を受信する前にタイムアウトが発生した場合、エラー種記憶部４６にタイムアウトの発生を示すエラー情報を格納する。また、ステートマシン３２Ｂは、エラー検出部４４によりディレクトリ矛盾エラーが検出された場合、エラー種記憶部４６にディレクトリ矛盾エラーの発生を示すエラー情報を格納する。
【０１１３】
図８は、図７に示すシステム制御部の動作の一例を示す。図５と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップＳ１０、Ｓ２０、Ｓ３０、Ｓ４０の処理は、図５に示すステップＳ１０、Ｓ２０、Ｓ３０、Ｓ４０の処理と同じである。
【０１１４】
ステップＳ４０の処理の後、ステップＳ４２において、ステートマシン３２Ｂは、エラー種記憶部４６に格納された情報に基づいて、ディレクトリ矛盾エラーが発生したか否かを判定する。ディレクトリ矛盾エラーが発生した場合、処理はステップＳ９８に移行され、ディレクトリ矛盾エラーが発生していない場合、処理は、ステップＳ５０に移行される。
【０１１５】
ステップＳ５０、Ｓ６０、Ｓ７０、Ｓ９０、Ｓ１００、Ｓ１１０、Ｓ１２０、Ｓ２００の処理は、図５に示すステップＳ５０、Ｓ６０、Ｓ７０、Ｓ９０、Ｓ１００、Ｓ１１０、Ｓ１２０、Ｓ２００の処理と同一または同様である。
【０１１６】
記憶装置２００から読み出されたデータが他ノードのプロセッサ１００Ｂに持ち出されている場合、ステートマシン３２Ｂは、ステップＳ７０の後にステップＳ８２を実行する。ステップＳ８２において、ステートマシン３２Ｂは、タイマ３８によるタイムアウトまたはディレクトリ矛盾エラーが発生した場合、処理をステップＳ９８に移行する。ステートマシン３２Ｂは、タイマ３８によるタイムアウトおよびディレクトリ矛盾エラーのいずれも発生していない場合、処理をステップＳ９０に移行する。
【０１１７】
ステップＳ９８において、ステートマシン３２Ｂは、タイムアウトの発生を示す情報またはディレクトリ矛盾エラーの発生を示す情報をエラー種記憶部４６に格納し、処理をステップＳ１００に移行する。ステップＳ１００では、ステートマシン３２は、ディレクトリバッファ３６に保持されているディレクトリ情報にタイムアウトの発生またはディレクトリ矛盾エラーの発生を示すエラー情報を書き込み、処理をステップＳ１１０に移行する。
【０１１８】
この後、ステートマシン３２Ｂは、図５と同様にステップＳ１１０、Ｓ１２０の処理を実行する。ステップＳ１２０の後、ステップＳ１４０において、ステートマシン３２は、トランザクションの後処理を実行する。ステップＳ１４０の処理の例は、図９に示される。
【０１１９】
図９は、図８に示すステップＳ１４０の処理の一例を示す。図６と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップＳ１４４、Ｓ１４５、Ｓ１４６の処理は、図５に示すステップＳ１３１、Ｓ１３２、Ｓ１３３の処理と同一または同様である。
【０１２０】
まず、ステップＳ１４１において、ステートマシン３２Ｂは、ディレクトリバッファ３６に保持されているディレクトリ情報が、タイムアウトの発生を示すエラー情報を含むか否かを判定する。ディレクトリ情報がタイムアウトの発生を示すエラー情報を含む場合、処理はステップＳ１４２に移行され、ディレクトリ情報がタイムアウトの発生を示すエラー情報を含まない場合、処理は終了する。
【０１２１】
ステップＳ１４２において、ステートマシン３２Ｂは、エラー種記憶部４６からエラー情報を読み出す。次に、ステップＳ１４３において、ステートマシン３２Ｂは、エラー情報がディレクトリ矛盾エラーの発生を示す場合、処理をステップＳ１４７に移行し、エラー情報がタイムアウトの発生を示す場合、処理をステップＳ１４４に移行する。
【０１２２】
ステップＳ１４７において、ステートマシン３２Ｂは、全てのプロセッサ１００Ｂにキャッシュ無効化要求を発行する。次に、ステップＳ１４８において、ステートマシン３２Ｂは、データ返送要求の発行先の全てのプロセッサ１００Ｂからキャッシュ無効化要求に対する応答を受信し、処理を終了する。すなわち、ディレクトリ矛盾エラーが発生した場合に、全てのプロセッサ１００Ｂに対象データを削除させることで、情報処理装置ＩＰＥ３のキャッシュコヒーレンシを維持することができる。なお、ステートマシン３２Ｂは、キャッシュ無効化要求に対する正常な応答を受信しない場合、プロセッサ１００Ｂを管理するために情報処理装置ＩＰＥ３に搭載される管理装置等にエラーの発生を通知する。
【０１２３】
以上、図７から図９に示す実施形態においても、図１から図６に示す実施形態と同様にノードＮＤ間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、データ返送要求をリトライせずにキャッシュ無効化要求を他ノードＮＤに発行するため、メモリアクセス要求に対する応答が遅れることを抑止することができ、情報処理装置ＩＰＥ３の処理性能の低下を抑止することができる。プロセッサ番号記憶部４２を参照することで、データ返送要求の宛先のプロセッサ１００Ｄを検出し、検出したプロセッサ１００Ｄにキャッシュ無効化要求を発行することができる。
【０１２４】
さらに、図７から図９に示す実施形態では、ディレクトリ矛盾エラーが発生した場合に、全てのプロセッサ１００Ｂに対象データを削除させることで、情報処理装置ＩＰＥ３のキャッシュコヒーレンシを維持することができる。この結果、情報処理装置ＩＰＥ３のキャッシュコヒーレンシを維持しつつ、情報処理装置ＩＰＥ３の処理性能およびＲＡＳ性能の低下を抑止することができる。
【０１２５】
図１０は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図３に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【０１２６】
図１０に示す情報処理装置ＩＰＥ４は、サーバ等であり、図３に示す情報処理装置ＩＰＥ２のプロセッサ１００Ａの代わりにプロセッサ１００Ｃを有する。プロセッサ１００Ｃは、図３に示すキャッシュメモリ制御部１２およびシステム制御部１６の代わりにキャッシュメモリ制御部１２Ｃおよびシステム制御部１６Ｃを有する。システム制御部１６Ｃは、図３に示すプロセッサインタフェース１８および複数の要求処理エントリ２６の代わりにプロセッサインタフェース１８Ｃおよび複数の要求処理エントリ２６Ｃを有する。また、システム制御部１６Ｃは、図３に示すシステム制御部１６に対してロスト予防検出部４８を追加している。情報処理装置ＩＰＥ４のその他の構成は、図３に示す情報処理装置ＩＰＥ２の構成と同様である。
【０１２７】
要求処理エントリ２６Ｃは、アクセス要求バッファ３０、ステートマシン３２Ｃ、データバッファ３４、ディレクトリバッファ３６およびタイマ３８を有する。ステートマシン３２Ｃは、図３に示すプロセッサ番号記憶部４２の代わりにプロセッサ番号記憶部４３を有し、図３に示すステートマシン３２に予防フラグ５０を追加している。なお、持ち出し先検出部４０、プロセッサ番号記憶部４３および予防フラグ５０は、要求処理エントリ２６Ｃ内であって、ステートマシン３２Ｃの外部に配置されてもよい。
【０１２８】
各プロセッサ１００Ｃのキャッシュメモリ制御部１２Ｃは、記憶装置２００から読み出してキャッシュメモリ部１０に格納するデータが何らかの原因により失われた場合、情報処理装置ＩＰＥ４にとって致命的なエラーとなるかを、メモリアクセス要求毎に判断する。そして、致命的なエラーになる場合、データが失われることを予防するロスト予防情報を付加したメモリアクセス要求をシステム制御部１６Ｃに発行する。なお、ロスト予防情報をメモリアクセス要求に付加するか否かは、プロセッサコア部１４が実行するプログラムにより判断させてもよい。
【０１２９】
プロセッサインタフェース１８Ｃは、図３に示すプロセッサインタフェース１８の機能に加えて、調停により選択したメモリアクセス要求をロスト予防検出部４８に転送する機能を有する。
【０１３０】
ロスト予防検出部４８は、プロセッサインタフェース１８から転送されるメモリアクセス要求をデコードし、メモリアクセス要求に含まれるロスト予防情報を検出する。ロスト予防検出部４８は、対象データが失われることを予防するロスト予防情報をメモリアクセス要求が含むかを検出する第１の検出部の一例である。ロスト予防検出部４８は、メモリアクセス要求がロスト予防情報を含む場合、エントリ決定部２２が決定したメモリアクセス要求を処理するために使用する要求処理エントリ２６に含まれるステートマシン３２Ｃにロスト予防情報を出力する。例えば、メモリアクセス要求は、パケットとしてキャッシュメモリ制御部１２Ｃにより生成され、メモリアクセス要求の宛先のプロセッサ１００Ｃのプロセッサインタフェース１８に転送される。メモリアクセス要求パケットの例は、図１１に示される。なお、ロスト予防検出部４８の機能は、エントリ決定部２２に含まれていてもよい。
【０１３１】
ステートマシン３２Ｃは、メモリアクセス要求の受信とともに、ロスト予防検出部４８からロスト予防情報を受信した場合、予防フラグ５０をセットする。すなわち、ステートマシン３２Ｃは、ロスト予防情報を付加したメモリアクセス要求を受信した場合、予防フラグ５０をセットする。ステートマシン３２Ｃは、予防フラグ５０をセットする場合、メモリアクセス要求の発行元のプロセッサ１００Ｃを示すプロセッサ番号をプロセッサ番号記憶部４３に格納する。一方、ステートマシン３２Ｃは、メモリアクセス要求にロスト予防情報が含まれない場合、予防フラグ５０をリセットする。
【０１３２】
その後、ステートマシン３２Ｃは、記憶装置２００からデータを読み出し、他ノードのプロセッサ１００Ｃのキャッシュメモリ部１０がデータを持ち出している場合、データを返送させる処理を実行する。そして、ステートマシン３２Ｃは、メモリアクセス要求の発行元のプロセッサ１００Ｃにデータを含む応答を発行し、ディレクトリ情報およびデータを更新した場合、記憶装置２００に書き込む。
【０１３３】
さらに、ステートマシン３２Ｃは、予防フラグ５０がセットされている場合、プロセッサ番号記憶部４３に保持されたプロセッサ番号に基づいて、メモリアクセス要求の発行元のプロセッサ１００Ｃにデータ返送要求を発行してデータを取り戻す。これにより、データの消失により致命的なエラーが発生するおそれがある場合に、自ノードの記憶装置２００から読み出したデータが他ノードのプロセッサ１００Ｃで処理された後に取り戻すことができる。データを予め取り戻しておくことで、ノード間の通信経路等の一時的な故障によりデータ返送要求およびキャッシュ無効化要求を発行する頻度を上述した実施形態に比べて下げることができる。この結果、情報処理装置ＩＰＥ４のキャッシュコヒーレンシを維持しつつ、情報処理装置ＩＰＥ４のＲＡＳ性能の低下を抑止することができる。
【０１３４】
図１１は、メモリアクセス要求パケットの一例を示す。メモリアクセス要求パケットは、制御部とデータ部とを有する。制御部は、メモリアクセス要求パケットが有効の場合、バリッドＶを示す情報がセットされる。データ部は、命令コード、メモリアクセス要求の要求元のプロセッサ１００ＣのＩＤ、メモリアクセスアドレスおよびロスト予防情報が格納される領域を有する。
【０１３５】
命令コードの領域には、「共有型」または「排他型」を示す情報が格納される。例えば、ロスト予防情報の領域は、１ビットであり、論理１の場合、ロスト予防タイプのメモリアクセス要求であることを示し、論理０の場合、通常のメモリアクセス要求であることを示す。
【０１３６】
図１２は、図１０に示すシステム制御部１６Ｃの動作の一例を示す図である。図５と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップＳ１０、Ｓ２０、Ｓ３０、Ｓ４０、Ｓ５０、Ｓ６０、Ｓ９０、Ｓ１１０、Ｓ１２０、Ｓ２００の処理は、図５に示すステップＳ１０、Ｓ２０、Ｓ３０、Ｓ４０、Ｓ５０、Ｓ６０、Ｓ９０、Ｓ１１０、Ｓ１２０、Ｓ２００の処理と同一または同様である。
【０１３７】
ステップＳ２０の処理の後、ステップＳ２４において、ステートマシン３２Ｃは、メモリアクセス要求がロスト予防情報を含むか否かを判定する。メモリアクセス要求がロスト予防情報を含む場合、処理はステップＳ２５に移行され、メモリアクセス要求がロスト予防情報を含まない場合、処理はステップＳ２７に移行される。
【０１３８】
ステップＳ２５において、ステートマシン３２Ｃは、予防フラグ５０を”１”にセットする。次に、ステップＳ２６において、ステートマシン３２Ｃは、ロスト予防情報を含むメモリアクセス要求を発行したプロセッサ１００Ｃを識別するプロセッサ番号をプロセッサ番号記憶部４３に格納する。ステップＳ２７において、ステートマシン３２Ｃは、予防フラグ５０を”０”にリセットする。
【０１３９】
ステップＳ３０、Ｓ４０の実行後、ステップＳ５０において、データを他ノードのプロセッサ１００Ｃに持ち出している場合、ステップＳ６０において、ステートマシン３２Ｃは、データを持ち出している他ノードのプロセッサ１００Ｃにデータ返送要求を発行する。次に、ステップＳ９０において、ステートマシン３２Ｃは、データ返送要求に対する応答に含まれるデータをデータバッファ３４に格納し、処理をステップＳ１１０に移行する。なお、データを持ち出した他ノードのプロセッサ１００Ｃがデータを更新していない場合、ステップＳ２６の処理は省略されてもよい。
【０１４０】
この後、ステートマシン３２Ｃは、図５と同様にステップＳ１１０、Ｓ１２０の処理を実行する。ステップＳ１２０の後、ステップＳ１５０において、ステートマシン３２Ｃは、トランザクションの後処理を実行する。ステップＳ１５０の処理の例は、図１３に示される。
【０１４１】
図１３は、図１２に示すステップＳ１５０の処理の一例を示す。まず、ステップＳ１５１において、ステートマシン３２Ｃは、予防フラグ５０が”１”にセットされているか否かを判定する。予防フラグ５０が”１”にセットされている場合、処理はステップＳ１５２に移行され、予防フラグ５０が”０”にリセットされている場合、処理は終了する。
【０１４２】
ステップＳ１５２において、ステートマシン３２Ｃは、プロセッサ番号記憶部４３からプロセッサ番号を読み出す。プロセッサ番号記憶部４３に記憶されたプロセッサ番号は、ロスト予防情報を含むメモリアクセス要求を発行したプロセッサ１００Ｃを示す。
【０１４３】
次に、ステップＳ１５３において、ステートマシン３２Ｃは、ロスト予防情報を含むメモリアクセス要求の発行元のプロセッサ１００Ｃにデータ返送要求を発行する。次に、ステップＳ１５４において、ステートマシン３２Ｃは、データ返送要求の発行先（すなわち、メモリアクセス要求の発行元）のプロセッサ１００Ｃからデータ返送要求に対する応答を受信する。次に、ステップＳ１５５において、ステートマシン３２Ｃは、データ返送要求に対する応答に含まれるデータが更新されている場合またはディレクトリ情報を更新した場合、記憶装置２００にライト要求を発行する。そして、ステートマシン３２は、データおよびディレクトリ情報を記憶装置２００に書き込み処理を終了する。
【０１４４】
以上、図１０から図１３に示す実施形態では、データの消失により致命的なエラーが発生するおそれがある場合に、自ノードの記憶装置２００から読み出したデータが他ノードのプロセッサ１００Ｃで処理された後に取り戻すことができる。データを予め取り戻しておくことで、ノード間の通信経路等の一時的な故障によりデータ返送要求およびキャッシュ無効化要求を発行する頻度を上述した実施形態に比べて下げることができる。また、要求処理エントリ２６Ｃは、メモリアクセス要求の発行元のプロセッサ１００Ｃを識別するプロセッサ番号を記憶するプロセッサ番号記憶部４３を有する。これにより、データを持ち出しているノードへのデータ返送要求に対する応答を受信した後、プロセッサ番号記憶部４３を参照することで、データ返送要求を発行するメモリアクセス要求の発行元のプロセッサ１００Ｃを検出することができる。そして、要求処理エントリ２６Ｃは、検出したプロセッサ１００Ｃにデータ返送要求を発行することができる。この結果、情報処理装置ＩＰＥ４のキャッシュコヒーレンシを維持しつつ、情報処理装置ＩＰＥ４のＲＡＳ性能の低下を抑止することができる。
【０１４５】
図１４は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図３および図１０に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【０１４６】
図１４に示す情報処理装置ＩＰＥ５は、サーバ等であり、図３に示す情報処理装置ＩＰＥ２のプロセッサ１００Ａの代わりにプロセッサ１００Ｄを有する。プロセッサ１００Ｄは、図３に示すキャッシュメモリ制御部１２およびシステム制御部１６の代わりにキャッシュメモリ制御部１２Ｃおよびシステム制御部１６Ｄを有する。システム制御部１６Ｄは、図３に示すプロセッサインタフェース１８および複数の要求処理エントリ２６の代わりにプロセッサインタフェース１８Ｃおよび複数の要求処理エントリ２６Ｄを有する。また、システム制御部１６Ｄは、図１０に示すロスト予防検出部４８を有する。
【０１４７】
キャッシュメモリ制御部１２Ｃは、図１０に示すキャッシュメモリ制御部１２Ｃと同様に、ロスト予防情報を付加したメモリアクセス要求をシステム制御部１６Ｄに発行する機能を有する。プロセッサインタフェース１８Ｃは、図１０に示すプロセッサインタフェース１８Ｃと同様に、調停により選択したメモリアクセス要求をロスト予防検出部４８に転送する機能を有する。情報処理装置ＩＰＥ５のその他の構成は、図３に示す情報処理装置ＩＰＥ２の構成と同様である。
【０１４８】
要求処理エントリ２６Ｄは、アクセス要求バッファ３０、ステートマシン３２Ｄ、データバッファ３４、ディレクトリバッファ３６およびタイマ３８を有する。ステートマシン３２Ｄは、図３に示すステートマシン３２に、プロセッサ番号記憶部４３をおよび予防フラグ５０を追加している。プロセッサ番号記憶部４３は、図１０に示すプロセッサ番号記憶部４３と同様に、メモリアクセス要求の発行元のプロセッサ１００Ｄを識別するプロセッサ番号を保持する。予防フラグ５０は、図１０に示す予防フラグ５０と同様に、ロスト予防情報を付加したメモリアクセス要求を受信した場合にセットされる。なお、持ち出し先検出部４０、プロセッサ番号記憶部４２、４３および予防フラグ５０は、要求処理エントリ２６Ｄ内であって、ステートマシン３２Ｄの外部に配置されてもよい。
【０１４９】
ステートマシン３２Ｄは、図３に示すステートマシン３２の機能に加えて、図１０に示すステートマシン３２Ｃの機能を有する。すなわち、ステートマシン３２Ｄは、予防フラグ５０がセットされている場合、プロセッサ番号記憶部４３に保持されたプロセッサ番号に基づいて、メモリアクセス要求の発行元のプロセッサ１００Ｄにデータ返送要求を発行してデータを取り戻す処理を実行する。
【０１５０】
図１５は、図１４に示すシステム制御部１６Ｄの動作の一例を示す図である。図５および図１２と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップＳ１０からステップＳ４０までの処理は、図１２に示すステップＳ１０からステップＳ４０までの処理と同一または同様である。ステップＳ５０からステップＳ１２０までの処理は、図５に示すステップＳ５０からステップＳ１２０までの処理と同一または同様である。
【０１５１】
ステップＳ１２０の後、ステップＳ１６０において、ステートマシン３２Ｄは、トランザクションの後処理を実行する。ステップＳ１６０の処理の例は、図１６に示される。
【０１５２】
図１６は、図１５に示すステップＳ１６０の処理の一例を示す。図６および図１３と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。
【０１５３】
まず、ステップＳ１６１において、ステートマシン３２Ｄは、ディレクトリバッファ３６に保持されているディレクトリ情報が、タイムアウトの発生を示すエラー情報を含むか否かを判定する。ディレクトリ情報がタイムアウトの発生を示すエラー情報を含む場合、処理はステップＳ１６２に移行され、ディレクトリ情報がタイムアウトの発生を示すエラー情報を含まない場合、処理はステップＳ１６５に移行される。
【０１５４】
ステップＳ１６２からステップＳ１６４までの処理は、図６に示すステップＳ１３２からステップＳ１３４に示す処理と同じである。ステップＳ１６５からステップＳ１６９までの処理は、図１３に示すステップＳ１５１からステップＳ１５５に示す処理と同じである。すなわち、ステートマシン３２Ｄは、データ返送要求に対する応答を受信する前にタイムアウトが発生し、ディレクトリバッファ３６にエラー情報を書き込んだ場合、データ返送要求の宛先のプロセッサ１００Ｄにキャッシュ無効化要求を発行する。また、ステートマシン３２Ｄは、メモリアクセス要求がロスト予防情報を含む場合、メモリアクセス要求の発行元のプロセッサ１００Ｄにデータ返送要求を発行し、メモリアクセス要求に基づいて転送したデータを取り戻す処理を実行する。
【０１５５】
なお、データ返送要求に対する応答を受信する前にタイムアウトが発生した場合、メモリアクセス要求の発行元のプロセッサ１００Ｄは、データを含む応答を受信せず、エラーを示す応答を受信する。この場合、メモリアクセス要求の発行元のプロセッサ１００Ｄは、メモリアクセス要求に対するデータの演算処理等を実行していないため、ステートマシン３２Ｄは、予防フラグ５０の値に拘わらず、ステップＳ１６５からステップＳ１６９までの処理を省略する。
【０１５６】
以上、図１４から図１６に示す実施形態においても、図１から図６および図１０から図１３に示す実施形態と同様の効果を得ることができる。すなわち、ノードＮＤ間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、データ返送要求をリトライせずにキャッシュ無効化要求を他ノードＮＤに発行するため、メモリアクセス要求に対する応答が遅れることを抑止することができる。さらに、データの消失により致命的なエラーが発生するおそれがある場合に、自ノードの記憶装置２００から読み出したデータが他ノードのプロセッサ１００Ｄで処理された後に取り戻すことができる。データを予め取り戻しておくことで、ノード間の通信経路等の一時的な故障によりデータ返送要求およびキャッシュ無効化要求を発行する頻度を図１に示す実施形態に比べて下げることができる。また、プロセッサ番号記憶部４２を参照することで、データ返送要求の宛先のプロセッサ１００Ｄを検出し、検出したプロセッサ１００Ｄにキャッシュ無効化要求を発行することができる。さらに、プロセッサ番号記憶部４３を参照することで、メモリアクセス要求の発行元のプロセッサ１００Ｄを検出し、検出したプロセッサ１００Ｄにデータ返送要求を発行することができる。この結果、情報処理装置ＩＰＥ５のキャッシュコヒーレンシを維持しつつ、情報処理装置ＩＰＥ５の処理性能およびＲＡＳ性能の低下を抑止することができる。
【０１５７】
図１７は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図３、図７および図１０に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【０１５８】
図１７に示す情報処理装置ＩＰＥ６は、サーバ等であり、システムバスＳＢＵＳを介して互いに接続された複数のプロセッサ１００Ｅと、各プロセッサ１００Ｅに接続された記憶装置２００とを有する。プロセッサ１００Ｅのシステム制御部１６Ｅは、図１４に示す複数の要求処理エントリ２６Ｄの代わりに複数の要求処理エントリ２６Ｅを有する。要求処理エントリ２６Ｅは、アクセス要求バッファ３０、ステートマシン３２Ｅ、データバッファ３４、ディレクトリバッファ３６、エラー検出部４４およびタイマ３８を有する。ステートマシン３２Ｅは、図１４に示すステートマシン３２Ｄに、エラー種記憶部４６を追加している。なお、持ち出し先検出部４０、プロセッサ番号記憶部４２、４３、エラー種記憶部４６および予防フラグ５０は、要求処理エントリ２６Ｅ内であって、ステートマシン３２Ｅの外部に配置されてもよい。情報処理装置ＩＰＥ６のその他の構成は、図１４に示す情報処理装置ＩＰＥ５の構成と同様である。
【０１５９】
ステートマシン３２Ｅは、図７に示すステートマシン３２Ｂの機能に加えて、図１０に示すステートマシン３２Ｃの機能を有する。すなわち、ステートマシン３２Ｅは、メモリアクセス要求を契機に発行したデータ返送要求に対する応答を受信する前にタイムアウトが発生した場合、データ返送要求の発行先のプロセッサ１００Ｅにキャッシュ無効化要求を発行する。また、ステートマシン３２Ｅは、データ返送要求に対する応答がディレクトリ矛盾を示す場合、全てのプロセッサ１００Ｅにキャッシュ無効化要求を発行する。さらに、ステートマシン３２Ｅは、予防フラグ５０がセットされている場合、プロセッサ番号記憶部４３に保持されたプロセッサ番号に基づいて、メモリアクセス要求の発行元のプロセッサ１００Ｅにデータ返送要求を発行してデータを取り戻す処理を実行する。
【０１６０】
図１８は、図１７に示すシステム制御部１６Ｅの動作の一例を示す図である。図８および図１２と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップＳ１０からステップＳ４０までの処理は、図１２に示すステップＳ１０からステップＳ４０までの処理と同一または同様である。ステップＳ４２からステップＳ１２０までの処理は、図８に示すステップＳ４２からステップＳ１２０までの処理と同一または同様である。
【０１６１】
ステップＳ１２０の後、ステップＳ１８０において、ステートマシン３２Ｅは、トランザクションの後処理を実行する。ステップＳ１８０の処理の例は、図１９に示される。
【０１６２】
図１９は、図１８に示すステップＳ１８０の処理の一例を示す。図９および図１３と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。
【０１６３】
まず、ステップＳ１８１において、ステートマシン３２Ｅは、ディレクトリバッファ３６に保持されているディレクトリ情報が、タイムアウトの発生またはディレクトリ矛盾の発生を示すエラー情報を含むか否かを判定する。ディレクトリ情報がタイムアウトの発生またはディレクトリ矛盾の発生を示すエラー情報を含む場合、処理はステップＳ１８２に移行される。ディレクトリ情報がタイムアウトの発生またはディレクトリ矛盾の発生を示すエラー情報を含まない場合、処理はステップＳ１８９に移行される。
【０１６４】
ステップＳ１８２からステップＳ１８８までの処理は、図９に示すステップＳ１４２からステップＳ１４８に示す処理と同じである。ステップＳ１８９からステップＳ１９３までの処理は、図１３に示すステップＳ１５１からステップＳ１５５に示す処理と同じである。すなわち、ステートマシン３２Ｅは、データ返送要求に対する応答を受信する前にタイムアウトが発生し、ディレクトリバッファ３６にエラー情報を書き込んだ場合、データ返送要求の宛先のプロセッサ１００Ｅにキャッシュ無効化要求を発行する。また、ステートマシン３２Ｅは、データ返送要求に対する応答がディレクトリ矛盾を示す場合、全てのプロセッサ１００Ｅにキャッシュ無効化要求を発行する。さらに、ステートマシン３２Ｅは、メモリアクセス要求がロスト予防情報を含む場合、メモリアクセス要求の発行元のプロセッサ１００Ｅにデータ返送要求を発行し、メモリアクセス要求に基づいて転送したデータを取り戻す処理を実行する。
【０１６５】
なお、データ返送要求に対する応答を受信する前にタイムアウトが発生し、またはデータ返送要求に対する応答がディレクトリ矛盾を示す場合、メモリアクセス要求の発行元のプロセッサ１００Ｅは、データを含む応答を受信せず、エラーを示す応答を受信する。この場合、メモリアクセス要求の発行元のプロセッサ１００Ｅは、メモリアクセス要求に対応するデータの演算処理等を実行していないため、ステートマシン３２Ｅは、予防フラグ５０の値に拘わらず、ステップＳ１８９からステップＳ１９３までの処理を省略する。
【０１６６】
以上、図１７から図１９に示す実施形態においても、図１から図１６に示す実施形態と同様の効果を得ることができる。すなわち、ノードＮＤ間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、データ返送要求をリトライせずにキャッシュ無効化要求を他ノードＮＤに発行するため、メモリアクセス要求に対する応答が遅れることを抑止することができる。データの消失により致命的なエラーが発生するおそれがある場合に、自ノードの記憶装置２００から読み出したデータが他ノードのプロセッサ１００Ｅで処理された後に取り戻すことができる。データを予め取り戻しておくことで、ノード間の通信経路等の一時的な故障によりデータ返送要求およびキャッシュ無効化要求を発行する頻度を図１に示す実施形態に比べて下げることができる。さらに、ディレクトリ矛盾エラーが発生した場合に、全てのプロセッサ１００Ｅに対象データを削除させることで、情報処理装置ＩＰＥ６のキャッシュコヒーレンシを維持することができる。この結果、情報処理装置ＩＰＥ６のキャッシュコヒーレンシを維持しつつ、情報処理装置ＩＰＥ６の処理性能およびＲＡＳ性能の低下を抑止することができる。また、プロセッサ番号記憶部４２を参照することで、データ返送要求の宛先のプロセッサ１００Ｅを検出し、検出したプロセッサ１００Ｅにキャッシュ無効化要求を発行することができる。さらに、プロセッサ番号記憶部４３を参照することで、メモリアクセス要求の発行元のプロセッサ１００Ｅを検出し、検出したプロセッサ１００Ｅにデータ返送要求を発行することができる。この結果、情報処理装置ＩＰＥ６のキャッシュコヒーレンシを維持しつつ、情報処理装置ＩＰＥ６の処理性能およびＲＡＳ性能の低下を抑止することができる。
【０１６７】
図２０は、図１から図１９に示す実施形態が適用されるサーバの一例を示す。図２０に示すサーバＳＶ１は、プロセッサと記憶装置とを含む所定数のマザーボードＭＢを有する。各マザーボードＭＢは、ノードに対応する。プロセッサは、図１、図３、図７、図１０、図１４、図１７に示す演算処理装置１、プロセッサ１００Ａ、１００Ｂ、１００Ｃ、１００Ｄ、１００Ｅのいずれかである。プロセッサは、キャッシュメモリ部１０、キャッシュメモリ制御部１２（または１２Ｃ）および複数のプロセッサコア部１４を含むプロセッサ部と、システム制御部とを有する。キャッシュメモリ部１０は、図１に示すキャッシュメモリ部４に対応し、キャッシュメモリ制御部１２は、図１に示すキャッシュメモリ制御部５に対応し、プロセッサコア部１４は、図１に示す演算処理部３に対応する。システム制御部は、図１、図３、図７、図１０、図１４、図１７に示すメモリアクセス制御部６、システム制御部１６、１６Ｂ、１６Ｃ、１６Ｄ、１６Ｅのいずれかである。システム制御部は、システムバスＳＢＵＳを介して互いに接続される。サーバＳＶ１は、情報処理装置の一例である。
【０１６８】
図２１は、サーバの別の例を示す。図２１に示すサーバＳＶ２は、複数のプロセッサとシステム制御部と記憶装置２００とを含むマザーボードＭＢを有する。プロセッサは、図３、図７、図１０、図１４、図１７に示すキャッシュメモリ部１０、キャッシュメモリ制御部１２（または１２Ｃ）および複数のプロセッサコア部１４を含む。また、プロセッサは、図１に示す演算処理部３、キャッシュメモリ部４およびキャッシュメモリ制御部５を有してもよい。システム制御部は、複数のプロセッサに共通に設けられる。システム制御部は、図１、図３、図７、図１０、図４、図１７に示すメモリアクセス制御部６、システム制御部１６、１６Ｂ、１６Ｃ、１６Ｄ、１６Ｅのいずれかと同様の構成を有する。但し、システム制御部のプロセッサインタフェースは、システムバスを介することなく各プロセッサのキャッシュメモリ制御部に接続される。
【０１６９】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１７０】
１…演算処理装置；２…記憶装置；３…演算処理部；４…キャッシュメモリ部；５…キャッシュメモリ制御部；６…メモリアクセス制御部；７…メモリ制御部；８…持ち出し先検出部；９…コヒーレンシ制御部；１０…キャッシュメモリ部；１２、１２Ｃ…キャッシュメモリ制御部；１４…プロセッサコア部；１６、１６Ｂ、１６Ｃ、１６Ｄ、１６Ｅ…システム制御部；１８、１８Ｃ…プロセッサインタフェース；２０…応答調停部；２２…エントリ決定部；２４…制御要求発行部；２６、２６Ｂ、２６Ｃ、２６Ｄ、２６Ｅ…要求処理エントリ；２８…メモリ制御部；３０…アクセス要求バッファ；３２、３２Ｂ、３２Ｃ、３２Ｄ、３２Ｅ…ステートマシン；３４…データバッファ；３６…ディレクトリバッファ；３８…タイマ；４０…持ち出し先検出部；４２、４３…プロセッサ番号記憶部；４６…エラー種記憶部；４８…ロスト予防検出部；５０…予防フラグ；１００Ａ、１００Ｂ、１００Ｃ、１００Ｄ、１００Ｅ…プロセッサ；２００…記憶装置；ＩＰＥ１、ＩＰＥ２、ＩＰＥ３、ＩＰＥ４、ＩＰＥ５、ＩＰＥ６…情報処理装置；ＭＢ…マザーボード；ＮＤ（ＮＤ１、ＮＤ２）…ノード；ＳＢＵＳ…システムバス；ＳＶ１、ＳＶ２…サーバ
【図１】
0006493187.tif 000002
【図２】
0006493187.tif 000003
【図３】
0006493187.tif 000004
【図４】
0006493187.tif 000005
【図５】
0006493187.tif 000006
【図６】
0006493187.tif 000007
【図７】
0006493187.tif 000008
【図８】
0006493187.tif 000009
【図９】
0006493187.tif 000010
【図１０】
0006493187.tif 000011
【図１１】
0006493187.tif 000012
【図１２】
0006493187.tif 000013
【図１３】
0006493187.tif 000014
【図１４】
0006493187.tif 000015
【図１５】
0006493187.tif 000016
【図１６】
0006493187.tif 000017
【図１７】
0006493187.tif 000018
【図１８】
0006493187.tif 000019
【図１９】
0006493187.tif 000020
【図２０】
0006493187.tif 000021
【図２１】
0006493187.tif 000022