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