(57)【特許請求の範囲】
【請求項１】
演算処理を実行する演算処理部と前記演算処理部が処理するデータを保持するキャッシュメモリ部とを含みメモリアクセス要求を発行する演算処理装置と、データおよびデータの持ち出し先を識別するディレクトリ情報を記憶する記憶装置と、前記演算処理装置からの転送指示に基づいてデータ転送要求を発行する入出力装置とともに複数のノードの各々に設けられ、メモリアクセス要求に基づいて前記記憶装置と前記演算処理装置との間のデータの入出力を制御し、前記入出力装置が発行したデータ転送要求に基づいて前記記憶装置と前記入出力装置との間のデータの転送を制御する制御装置において、
前記記憶装置から読み出したディレクトリ情報に基づいてデータを持ち出したノードである持ち出しノードを検出する検出部と、
持ち出しノードからデータを追い出す追い出し要求を、前記検出部が検出した持ち出しノードに発行するとともに、検出された前記持ち出しノードからの応答に前記追い出し要求に対応する追い出し対象データが含まれる場合、前記追い出し対象データを前記記憶装置に書き込む追い出し制御部と、
データ転送要求に基づいて、前記検出部が前記持ち出しノードを検出した場合であって、前記追い出し制御部が発行した追い出し要求に対応する応答を持ち出しノードから受信しない場合、エラーを示すエラー応答の代わりに、データ転送要求に対応するデータ転送処理が正常に完了したことを示す正常応答を前記入出力装置に発行する応答発行部と、
前記入出力装置から前記記憶装置にデータを転送するデータ転送要求に対応する正常応答を前記入出力装置に発行する場合、前記入出力装置から受信したデータを前記記憶装置に書き込む書き込み制御部を有することを特徴とする制御装置。
【請求項２】
前記制御装置は、
前記記憶装置から前記入出力装置にデータを転送する転送指示を前記演算処理装置が前記入出力装置に発行する前に、前記演算処理装置から受信する返送指示に基づいて、前記記憶装置から前記入出力装置に転送するデータを持ち出した持ち出しノードから前記記憶装置にデータを返送させる返送要求を持ち出しノードに発行し、
返送要求に基づいて持ち出しノードから返送されたデータを前記記憶装置に格納し、
前記記憶装置から前記入出力装置にデータを転送する転送指示に基づいて前記入出力装置が発行するデータ転送要求に対応する正常応答を前記入出力装置に発行する場合、データ転送要求に基づいて前記記憶装置から読み出したデータを前記入出力装置に転送することを特徴とする請求項１記載の制御装置。
【請求項３】
前記応答発行部は、
データ転送要求に基づいて前記追い出し制御部が発行した追い出し要求に対応する応答を持ち出しノードから受信しない場合、切り替え情報を出力する応答切り替え制御部と、
前記応答切り替え制御部から切り替え情報を受信した場合、エラー応答の代わりに正常応答を生成する応答生成部を有することを特徴とする請求項１または請求項２記載の制御装置。
【請求項４】
前記制御装置は、
メモリアクセス要求またはデータ転送要求を発行した要求元を識別する識別情報を保持する要求保持バッファと、
要求保持バッファに保持された識別情報に基づいて、データ転送要求の発行を判定する入出力アクセス判定部を有し、
前記応答切り替え制御部は、前記入出力アクセス判定部がデータ転送要求の発行を判定し、前記追い出し制御部が発行した追い出し要求に対応する応答を持ち出しノードから受信しない場合、切り替え情報を出力することを特徴とする請求項３記載の制御装置。
【請求項５】
前記応答発行部は、データ転送要求に基づいて前記追い出し制御部が発行した追い出し要求に対してエラーを示す応答を持ち出しノードから受信した場合、エラー応答の代わりに、データ転送要求に対応するデータ転送処理が正常に完了したことを示す正常応答を前記入出力装置に発行することを特徴とする請求項１ないし請求項４のいずれか１項記載の制御装置。
【請求項６】
前記応答発行部は、データ転送要求に基づいて前記記憶装置から読み出したディレクトリ情報がエラーの発生を示す情報を含む場合、エラー応答の代わりに、データ転送要求に対応するデータ転送処理が正常に完了したことを示す正常応答を前記入出力装置に発行することを特徴とする請求項１ないし請求項５のいずれか１項記載の制御装置。
【請求項７】
前記記憶装置から読み出したデータのエラーを検出し、検出したデータのエラーを訂正するエラー検出訂正部を有し、
前記応答発行部は、データ転送要求に基づいて前記記憶装置から読み出したデータまたはディレクトリ情報に訂正が困難なエラーが含まれることを前記エラー検出訂正部が検出した場合、エラー応答を前記入出力装置に発行することを特徴とする請求項１ないし請求項６のいずれか１項記載の制御装置。
【請求項８】
演算処理を実行する演算処理部と前記演算処理部が処理するデータを保持するキャッシュメモリ部とを含みメモリアクセス要求を発行する演算処理装置と、データおよびデータの持ち出し先を識別するディレクトリ情報を記憶する記憶装置と、前記演算処理装置からの転送指示に基づいてデータ転送要求を発行する入出力装置と、メモリアクセス要求に基づいて前記記憶装置と前記演算処理装置との間のデータの入出力を制御し、前記入出力装置が発行したデータ転送要求に基づいて前記記憶装置と前記入出力装置との間のデータの転送を制御する制御装置とを各々含むノードを複数有する情報処理装置において、
前記制御装置は、
前記記憶装置から読み出したディレクトリ情報に基づいてデータを持ち出したノードである持ち出しノードを検出する検出部と、
持ち出しノードからデータを追い出す追い出し要求を、前記検出部が検出した持ち出しノードに発行するとともに、検出された前記持ち出しノードからの応答に前記追い出し要求に対応する追い出し対象データが含まれる場合、前記追い出し対象データを前記記憶装置に書き込む追い出し制御部と、
データ転送要求に基づいて、前記検出部が前記持ち出しノードを検出した場合であって、前記追い出し制御部が発行した追い出し要求に対応する応答を持ち出しノードから受信しない場合、エラーを示すエラー応答の代わりに、データ転送要求に対応するデータ転送処理が正常に完了したことを示す正常応答を前記入出力装置に発行する応答発行部と、
前記入出力装置から前記記憶装置にデータを転送するデータ転送要求に対応する正常応答を前記入出力装置に発行する場合、前記入出力装置から受信したデータを前記記憶装置に書き込む書き込み制御部を有することを特徴とする情報処理装置。
【請求項９】
前記演算処理装置は、
前記記憶装置から前記入出力装置にデータを転送する転送指示を前記入出力装置に発行する前に、前記記憶装置から前記入出力装置に転送するデータを持ち出した持ち出しノードから前記記憶装置にデータを返送させる返送指示を前記制御装置に発行し、
前記制御装置は、
前記演算処理装置から受信する返送指示に基づいて、前記記憶装置から前記入出力装置に転送するデータを持ち出した持ち出しノードから前記記憶装置にデータを返送させる返送要求を持ち出しノードに発行し、
返送要求に基づいて持ち出しノードから返送されたデータを前記記憶装置に格納し、
前記記憶装置から前記入出力装置にデータを転送する転送指示に基づいて前記入出力装置が発行するデータ転送要求に対応する正常応答を前記入出力装置に発行する場合、データ転送要求に基づいて前記記憶装置から読み出したデータを前記入出力装置に転送することを特徴とする請求項８記載の情報処理装置。
【請求項１０】
前記記憶装置は、自ノードまたは他ノードの演算処理装置が発行するメモリアクセス要求に基づいてデータが入出力される第１のデータ領域と、自ノードの入出力装置が発行するデータ転送要求に基づいてデータが入出力される第２のデータ領域と、前記第１のデータ領域および前記第２のデータ領域に対応して設けられ、ディレクトリ情報を保持するディレクトリ領域を有することを特徴とする請求項８または請求項９記載の情報処理装置。
【請求項１１】
演算処理を実行する演算処理部と前記演算処理部が処理するデータを保持するキャッシュメモリ部とを含みメモリアクセス要求を発行する演算処理装置と、データおよびデータの持ち出し先を識別するディレクトリ情報を記憶する記憶装置と、前記演算処理装置からの転送指示に基づいてデータ転送要求を発行する入出力装置と、メモリアクセス要求に基づいて前記記憶装置と前記演算処理装置との間のデータの入出力を制御し、前記入出力装置が発行したデータ転送要求に基づいて前記記憶装置と前記入出力装置との間のデータの転送を制御する制御装置とを各々含むノードを複数有する情報処理装置の制御方法において、
前記制御装置が有する検出部が、前記記憶装置から読み出したディレクトリ情報に基づいてデータを持ち出したノードである持ち出しノードを検出し、
前記制御装置が有する追い出し制御部が、持ち出しノードからデータを追い出す追い出し要求を、前記検出部が検出した持ち出しノードに発行するとともに、検出された前記持ち出しノードからの応答に前記追い出し要求に対応する追い出し対象データが含まれる場合、前記追い出し対象データを前記記憶装置に書き込み、
前記制御装置が有する応答発行部が、データ転送要求に基づいて、前記検出部が前記持ち出しノードを検出した場合であって、前記追い出し制御部が発行した追い出し要求に対応する応答を持ち出しノードから受信しない場合、エラーを示すエラー応答の代わりに、データ転送要求に対応するデータ転送処理が正常に完了したことを示す正常応答を前記入出力装置に発行し、
前記制御装置が有する書き込み制御部が、前記入出力装置から前記記憶装置にデータを転送するデータ転送要求に対応する正常応答を前記入出力装置に発行する場合、前記入出力装置から受信したデータを前記記憶装置に書き込むことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、情報処理装置および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
近時、複数の演算処理装置と、各演算処理装置に対応して設けられるキャッシュメモリと、複数の演算処理装置に共有される主記憶装置と、主記憶装置にアクセスする入出力装置とを有するマルチプロセッサシステムが提案されている。この種のマルチプロセッサシステムでは、ディレクトリ方式またはスヌープ方式により、主記憶装置が保持するデータと各キャッシュメモリが保持するデータとの整合性または一貫性（キャッシュコヒーレンシ）が維持される。
【０００３】
ディレクトリ方式では、演算処理装置に割り当てられた主記憶装置の記憶領域に保持されたデータを他の演算処理装置に対応するキャッシュメモリに持ち出したことを示すディレクトリ情報に基づいてキャッシュコヒーレンシを維持する制御が実行される。スヌープ方式では、ブロードキャストされたメモリアクセス要求に対応する応答に基づいて、キャッシュコヒーレンシを維持する制御が実行される。
【０００４】
ディレクトリ方式のマルチプロセッサシステムでは、データを持ち出した持ち出しノードへのデータの無効化要求に対応する応答が持ち出しノードの故障等により受信されない場合、無効化要求の要求元のノードは、ディレクトリ情報にエラーマークを書き込む。この後、エラーマークを含むディレクトリ情報に対応するメモリアクセス要求を受けたノードは、エラー応答を返すことで、故障と判定されたノード以外の動作が継続可能になる（例えば、特許文献１参照）。
【０００５】
入出力装置が出力するメモリアクセス要求に含まれるアドレスが、バッファに保持された過去のアクセス要求に含まれるアドレスと一致する場合、スヌープ処理の実行を抑止することで、キャッシュメモリへのアクセス頻度が低減される（例えば、特許文献２参照）。
【０００６】
また、主記憶装置が接続されるシステムバスと入出力装置が接続される入出力バスとの間に、ストアイン型のキャッシュメモリを含むバスインタフェースアダプタを設けたシステムが知られている。この種のインタフェースアダプタは、入出力装置が出力するメモリアクセス要求に含まれる書き込みデータの転送長がキャッシュブロック長と一致する場合、書き込みデータを主記憶装置に書き込む。さらに、インタフェースアダプタは、書き込みデータに対応して複数のキャッシュメモリに保持されたデータを無効化する。これにより、入出力装置から主記憶装置にデータを書き込むＤＭＡ書き込み転送時のシステムバスの負荷が軽減される（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−１４０４４５号公報
【特許文献２】国際公開第９７／３４２２８号
【特許文献３】特開平８−６８５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ディレクトリ方式のマルチプロセッサシステムにおいて、各ノード内のシステムコントローラ等の制御装置は、入出力装置から発行されたデータ転送要求に基づいて、データ転送の対象データを持ち出した持ち出しノードをディレクトリ情報に基づいて判定する。制御装置は、持ち出しノードに対してデータを追い出させる追い出し要求を発行し、当該追い出し要求に対応する応答を持ち出しノードから受信しない場合、ディレクトリ情報にエラーマークを書き込み、入出力装置にエラー応答を発行する。エラー応答を受信した入出力装置は、データ転送処理中にエラーが発生したことを、データ転送の指示を発行した演算処理装置に通知する。エラーの発生の通知により、演算処理装置によるデータ転送の処理が完了しない場合、演算処理装置は、データ転送の処理後の動作を実行することが困難になり、演算処理装置を含む情報処理装置の動作が停止するおそれがある。
【０００９】
１つの側面では、本件開示の制御装置、情報処理装置および情報処理装置の制御方法は、記憶装置と入出力装置との間で実行されるデータ転送の対象データを持ち出したノードからの応答がない場合にも、情報処理装置の動作の停止を抑止することを目的とする。
【課題を解決するための手段】
【００１０】
一つの観点によれば、演算処理を実行する演算処理部と演算処理部が処理するデータを保持するキャッシュメモリ部とを含みメモリアクセス要求を発行する演算処理装置と、データおよびデータの持ち出し先を識別するディレクトリ情報を記憶する記憶装置と、演算処理装置からの転送指示に基づいてデータ転送要求を発行する入出力装置とともに複数のノードの各々に設けられ、メモリアクセス要求に基づいて記憶装置と演算処理装置との間のデータの入出力を制御し、入出力装置が発行したデータ転送要求に基づいて記憶装置と入出力装置との間のデータの転送を制御する制御装置は、記憶装置から読み出したディレクトリ情報に基づいてデータを持ち出したノードである持ち出しノードを検出する検出部と、持ち出しノードからデータを追い出す追い出し要求を、検出部が検出した持ち出しノードに発行するとともに、検出された持ち出しノードからの応答に追い出し要求に対応する追い出し対象データが含まれる場合、追い出し対象データを記憶装置に書き込む追い出し制御部と、データ転送要求に基づいて、前記検出部が前記持ち出しノードを検出した場合であって、追い出し制御部が発行した追い出し要求に対応する応答を持ち出しノードから受信しない場合、エラーを示すエラー応答の代わりに、データ転送要求に対応するデータ転送処理が正常に完了したことを示す正常応答を入出力装置に発行する応答発行部と、入出力装置から記憶装置にデータを転送するデータ転送要求に対応する正常応答を入出力装置に発行する場合、入出力装置から受信したデータを記憶装置に書き込む書き込み制御部を有する。
【００１１】
別の観点によれば、演算処理を実行する演算処理部と演算処理部が処理するデータを保持するキャッシュメモリ部とを含みメモリアクセス要求を発行する演算処理装置と、データおよびデータの持ち出し先を識別するディレクトリ情報を記憶する記憶装置と、演算処理装置からの転送指示に基づいてデータ転送要求を発行する入出力装置と、メモリアクセス要求に基づいて記憶装置と演算処理装置との間のデータの入出力を制御し、入出力装置が発行したデータ転送要求に基づいて記憶装置と入出力装置との間のデータの転送を制御する制御装置とを各々含むノードを複数有する情報処理装置において、制御装置は、記憶装置から読み出したディレクトリ情報に基づいてデータを持ち出したノードである持ち出しノードを検出する検出部と、持ち出しノードからデータを追い出す追い出し要求を、検出部が検出した持ち出しノードに発行するとともに、検出された持ち出しノードからの応答に追い出し要求に対応する追い出し対象データが含まれる場合、追い出し対象データを記憶装置に書き込む追い出し制御部と、データ転送要求に基づいて、前記検出部が前記持ち出しノードを検出した場合であって、追い出し制御部が発行した追い出し要求に対応する応答を持ち出しノードから受信しない場合、エラーを示すエラー応答の代わりに、データ転送要求に対応するデータ転送処理が正常に完了したことを示す正常応答を入出力装置に発行する応答発行部と、入出力装置から記憶装置にデータを転送するデータ転送要求に対応する正常応答を入出力装置に発行する場合、入出力装置から受信したデータを記憶装置に書き込む書き込み制御部を有する。
【００１２】
さらなる別の観点によれば、演算処理を実行する演算処理部と演算処理部が処理するデータを保持するキャッシュメモリ部とを含みメモリアクセス要求を発行する演算処理装置と、データおよびデータの持ち出し先を識別するディレクトリ情報を記憶する記憶装置と、演算処理装置からの転送指示に基づいてデータ転送要求を発行する入出力装置と、メモリアクセス要求に基づいて記憶装置と演算処理装置との間のデータの入出力を制御し、入出力装置が発行したデータ転送要求に基づいて記憶装置と入出力装置との間のデータの転送を制御する制御装置とを各々含むノードを複数有する情報処理装置の制御方法は、制御装置が有する検出部が、記憶装置から読み出したディレクトリ情報に基づいてデータを持ち出したノードである持ち出しノードを検出し、制御装置が有する追い出し制御部が、持ち出しノードからデータを追い出す追い出し要求を、検出部が検出した持ち出しノードに発行するとともに、検出された持ち出しノードからの応答に追い出し要求に対応する追い出し対象データが含まれる場合、追い出し対象データを記憶装置に書き込み、制御装置が有する応答発行部が、データ転送要求に基づいて、前記検出部が前記持ち出しノードを検出した場合であって、追い出し制御部が発行した追い出し要求に対応する応答を持ち出しノードから受信しない場合、エラーを示すエラー応答の代わりに、データ転送要求に対応するデータ転送処理が正常に完了したことを示す正常応答を入出力装置に発行し、制御装置が有する書き込み制御部が、入出力装置から記憶装置にデータを転送するデータ転送要求に対応する正常応答を入出力装置に発行する場合、入出力装置から受信したデータを記憶装置に書き込む。
【発明の効果】
【００１３】
本件開示の制御装置、情報処理装置および情報処理装置の制御方法は、記憶装置と入出力装置との間で実行されるデータ転送の対象データを持ち出したノードからの応答がない場合にも、情報処理装置の動作の停止を抑止することできる。
【図面の簡単な説明】
【００１４】
【図１】制御装置、情報処理装置および情報処理装置の制御方法の一実施形態を示す図である。
【図２】図１に示す情報処理装置において、入出力装置から記憶装置にデータを転送する書き込みＤＭＡ転送の一例を示す図である。
【図３】図１に示す情報処理装置において、記憶装置から入出力装置にデータを転送する読み出しＤＭＡ転送の一例を示す図である。
【図４】制御装置、情報処理装置および情報処理装置の制御方法の別の実施形態を示す図である。
【図５】図４に示す応答発行部の一例を示す図である。
【図６】図４に示す記憶装置およびキャッシュメモリ部に保持されるデータの一例を示す図である。
【図７】図４に示すプロセッサが記憶装置にアクセスする前に実行する前処理の一例を示す図である。
【図８】図４に示すシステムコントローラの動作の一例を示す図である。
【図９】図７に示す前処理において、持ち出しノードからデータを返送する処理の一例を示す図である。
【図１０】図７に示す前処理において、データの返送が失敗した場合のエラー処理の一例を示す図である。
【図１１】図４に示す情報処理装置が実行する書き込みＤＭＡ転送の一例を示す図である。
【図１２】図４に示す情報処理装置において、書き込みＤＭＡ転送が正常に実行される場合の動作の一例を示す図である。
【図１３】図１２の動作の続きを示す図である。
【図１４】図４に示す情報処理装置において、書き込みＤＭＡ転送時にタイムアウトエラーが発生した場合の動作の一例を示す図である。
【図１５】図４に示す情報処理装置において、書き込みＤＭＡ転送時にディレクトリ矛盾エラーが発生した場合の動作の一例を示す図である。
【図１６】図１５の動作の続きを示す図である。
【図１７】図４に示す情報処理装置において、書き込みＤＭＡ転送時にディレクトリエラーが発生した場合の動作の一例を示す図である。
【図１８】図４に示す情報処理装置において、書き込みＤＭＡ転送時に２ビットエラーが発生した場合の動作の一例を示す図である。
【図１９】図４に示す情報処理装置において、読み出しＤＭＡ転送が正常に実行される場合の動作の一例を示す図である。
【図２０】図１９の動作の続きを示す図である。
【図２１】図４に示す情報処理装置において、読み出しＤＭＡ転送時にタイムアウトエラーが発生した場合の動作の一例を示す図である。
【図２２】図４に示す情報処理装置において、読み出しＤＭＡ転送時にディレクトリ矛盾エラーが発生した場合の動作の一例を示す図である。
【図２３】図２２の動作の続きを示す図である。
【図２４】図４に示す情報処理装置において、読み出しＤＭＡ転送時にディレクトリエラーが発生した場合の動作の一例を示す図である。
【図２５】図２４の動作の続きを示す図である。
【図２６】図４に示す情報処理装置において、読み出しＤＭＡ転送時に２ビットエラーが発生した場合の動作の一例を示す図である。
【図２７】他の情報処理装置において、書き込みＤＭＡ転送時にディレクトリ矛盾エラーが発生した場合の動作の一例を示す図である。
【図２８】他の情報処理装置において、読み出しＤＭＡ転送時にタイムアウトエラーが発生した場合の動作の一例を示す図である。
【図２９】図１から図２６に示す実施形態を適用可能な情報処理システムの一例を示す図である。
【図３０】図１から図２６に示す実施形態を適用可能な情報処理システムの別の例を示す図である。
【図３１】図１から図２６に示す実施形態を適用可能な情報処理システムの別の例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を用いて実施形態を説明する。
【００１６】
図１は、制御装置、情報処理装置および情報処理装置の制御方法の一実施形態を示す。図１に示す情報処理装置ＩＰＥ１は、サーバ等であり、制御装置４に接続されるＣＰＵ（Central Processing Unit）等の演算処理装置１、記憶装置２および入出力装置３をそれぞれ含む複数のノードＮＤ（ＮＤ１、ＮＤ２）を有する。すなわち、情報処理装置ＩＰＥ１は、マルチプロセッサシステムとして機能する。
【００１７】
演算処理装置１は、演算処理を実行する演算処理部１ａと、演算処理部１ａが処理するデータを保持するキャッシュメモリ部１ｂを含む。演算処理装置１は、キャッシュメモリ部１ｂにアクセス対象のデータが存在しない場合（すなわち、キャッシュミス）、メモリアクセス要求ＭＲＱを制御装置４に発行し、記憶装置２との間でデータの入出力（読み書き）を実行する。
【００１８】
記憶装置２は、主記憶装置、または演算処理装置１の外部に接続されるキャッシュメモリ部である。記憶装置２がキャッシュメモリ部の場合、さらに、主記憶装置が記憶装置２に接続される。記憶装置２は、データとデータの持ち出し先を識別するディレクトリ情報とを記憶する記憶領域を有する。
【００１９】
入出力装置３は、演算処理装置１からの転送指示ＴＲに基づいてデータ転送要求ＤＲＱを制御装置４に発行し、記憶装置２との間でデータ転送を実行する。入出力装置３と記憶装置２との間でのデータ転送は、演算処理装置１を介さずに実行されるため、ＤＭＡ（Direct Memory Access）転送とも称される。データ転送要求ＤＲＱは、入出力装置３から記憶装置２にデータを転送する場合に発行される書き込みデータ転送要求と、記憶装置２から入出力装置３にデータを転送する場合に発行される読み出しデータ転送要求とがある。以下では、入出力装置３から記憶装置２へのデータの転送は、書き込みＤＭＡ転送とも称され、記憶装置２から入出力装置３へのデータの転送は、読み出しＤＭＡ転送とも称される。
【００２０】
制御装置４は、メモリアクセス要求ＭＲＱに基づいて記憶装置２と演算処理装置１との間のデータの入出力（書き込みおよび読み出し）を制御し、データ転送要求ＤＲＱに基づいて記憶装置２と入出力装置３との間のデータの転送を制御する。制御装置４は、検出部４ａ、追い出し制御部４ｂ、応答発行部４ｃおよび書き込み制御部４ｄを有する。応答発行部４ｃは、応答切り替え制御部４ｅおよび応答生成部４ｆを有する。
【００２１】
検出部４ａは、メモリアクセス要求ＭＲＱまたはデータ転送要求ＤＲＱに基づいて記憶装置２からデータとともに読み出したディレクトリ情報に基づいて、データを持ち出したノードＮＤである持ち出しノードＮＤを検出する。追い出し制御部４ｂは、検出部４ａが検出した持ち出しノードＮＤからデータを追い出す追い出し要求を持ち出しノードＮＤに発行し、追い出したデータが持ち出しノードＮＤからの応答に含まれる場合、追い出したデータを記憶装置２に書き込む処理を実行する。
【００２２】
応答発行部４ｃは、メモリアクセス要求ＭＲＱに対するメモリアクセス処理の結果を示す応答を、メモリアクセス要求ＭＲＱを発行した演算処理装置１に発行し、データ転送要求ＤＲＱに対するデータ転送処理の結果を示す応答を入出力装置３に発行する。なお、メモリアクセス要求ＭＲＱに対するメモリアクセス処理は、記憶装置２からのディレクトリ情報の読み出し、検査部４ａによる持ち出しノードＮＤの検出、および持ち出しノードＮＤからのデータの追い出し処理を含む。同様に、データ転送要求ＤＲＱに対するデータ転送処理は、記憶装置２からのディレクトリ情報の読み出し、検査部４ａによる持ち出しノードＮＤの検出、および持ち出しノードＮＤからのデータの追い出し処理を含む。
【００２３】
応答発行部４ｃは、メモリアクセス処理が正常に完了した場合、メモリアクセス要求ＭＲＱを発行した演算処理装置１に正常応答を発行する。応答発行部４ｃは、メモリアクセス処理がエラーの発生により正常に完了しなかった場合、メモリアクセス要求ＭＲＱを発行した演算処理装置１にエラー応答を発行する。応答発行部４ｃは、データ転送要求ＤＲＱが正常に完了した場合、入出力装置３に正常応答を発行し、データ転送要求ＤＲＱがエラーの発生により正常に完了しなかった場合、入出力装置３にエラー応答または正常応答を発行する。データ転送要求ＤＲＱがエラーの発生により正常に完了しない例は、図２および図３に示す。
【００２４】
応答発行部４ｃの応答切り替え制御部４ｅは、データ転送要求ＤＲＱに基づいて追い出し制御部４ｂが発行した追い出し要求に対応する応答を持ち出しノードＮＤから受信しない場合、切り替え情報ＳＷＩを応答生成部４ｆに出力する。応答発行部４ｃの応答生成部４ｆは、メモリアクセス要求ＭＲＱに基づくメモリアクセス処理の結果を示す応答を生成し、データ転送要求ＤＲＱに基づくデータ転送処理の結果を示す応答を生成する。また、応答生成部４ｆは、応答切り替え制御部４ｅから切り替え情報ＳＷＩを受信した場合、追い出し要求に対応する応答を持ち出しノードＮＤから受信しないことを示すエラー応答の代わりに、正常応答を生成する。正常応答は、データ転送要求ＤＲＱに対応するデータ転送処理が正常に完了したことを示す。このように、応答発行部４ｃは、データ転送要求ＤＲＱに基づく追い出し要求に対応する応答を持ち出しノードＮＤから受信しない場合、エラー応答の代わりに正常応答を生成する。応答生成部４ｆが、応答切り替え制御部４ｅから切り替え情報ＳＷＩを受信することで、切り替え情報ＳＷＩを受信しない場合に比べて、エラー応答と正常応答との切り替えを容易に実行することができる。
【００２５】
書き込み制御部４ｄは、入出力装置３から記憶装置２にデータを転送するデータ転送要求ＤＲＱに対応する正常応答を応答発行部４ｃが生成し、入出力装置３に発行する場合、入出力装置３から受信したデータを記憶装置２に書き込む。
【００２６】
図２は、図１に示す情報処理装置ＩＰＥ１において、入出力装置３から記憶装置２にデータを転送する書き込みＤＭＡ転送の一例を示す。すなわち、図２は、情報処理装置ＩＰＥ１の制御方法の一例を示す。
【００２７】
演算処理装置１は、書き込みＤＭＡ転送を入出力装置３に実行させる決定をした場合、書き込みＤＭＡ転送の指示を示す転送指示を入出力装置３に発行する（図２（ａ））。入出力装置３は、転送指示の受信に基づいて、記憶装置２に転送するデータ（書き込みデータ）とともに書き込みデータ転送要求ＷＤＲＱを制御装置４に発行する（図２（ｂ））。
【００２８】
制御装置４は、書き込みデータ転送要求ＷＤＲＱの受信に基づいて、記憶装置２に読み出し要求を発行し、記憶装置２における書き込みデータを書き込む記憶領域からディレクトリ情報を読み出す（図２（ｃ））。制御装置４は、書き込みデータを書き込む記憶装置２の記憶領域からディレクトリ情報を読み出す。制御装置４は、読み出したディレクトリ情報に基づいて、記憶装置２の記憶領域に保持されたデータを持ち出したノードＮＤである持ち出しノードＮＤを検出し、持ち出しノードＮＤにデータの追い出し要求を発行する（図２（ｄ））。
【００２９】
追い出し要求を受信した持ち出しノードＮＤは、持ち出したデータをキャッシュメモリ部１ｂから追い出し、データを追い出したことを示す応答を制御装置４に発行する。ここで、データの追い出しにより、持ち出しノードＮＤのキャッシュメモリ部１ｂからデータが消去される。書き込みＤＭＡ転送では、持ち出しノードＮＤのキャッシュメモリ部１ｂから追い出されたデータは、記憶装置２に書き戻されることなく、入出力装置３から出力されるデータが記憶装置２に書き込まれる。このため、持ち出しノードＮＤのキャッシュメモリ部１ｂから追い出されたデータは、制御装置４に返送されない。すなわち、書き込みＤＭＡ転送における追い出し要求は、持ち出しノードＮＤのキャッシュメモリ部１ｂに保持された対象データを無効化する無効化要求である。
【００３０】
図２に示すＸ印は、持ち出しノードＮＤと制御装置４との間の通信経路等に一時的な故障が発生したことを示す。一時的な故障により、追い出し要求に基づいて持ち出しノードＮＤが発行する応答は、制御装置４に届かない（図２（ｅ））。なお、追い出し要求に対応する応答は、持ち出しノードＮＤ自体が故障等により動作していない場合にも制御装置４に届かない。制御装置４は、持ち出しノードＮＤから応答を受信しないため、入出力装置３から受信した書き込みデータとエラーを示すディレクトリ情報とともに、書き込み要求を記憶装置２に発行する（図２（ｆ））。すなわち、記憶装置２に保持されたディレクトリ情報が更新される。ディレクトリ情報により示されるエラーは、持ち出しノードＮＤからの応答が受信されなかったことを示す。入出力装置３からの書き込みデータは、持ち出しノードＮＤからの応答の有無に拘わらず、記憶装置２に正常に書き込まれる。
【００３１】
なお、制御装置４は、データをキャッシュメモリ部１ｂから追い出したことを示す応答を持ち出しノードＮＤから受信した場合、入出力装置３から受信した書き込みデータと正常を示すディレクトリ情報とともに、書き込み要求を記憶装置２に発行する。ここで、正常を示すディレクトリ情報は、データが他ノードＮＤに持ち出されていないことを示す。また、追い出し要求を受信した持ち出しノードＮＤが実際にはデータを持ち出していない場合、持ち出しノードＮＤは、ディレクトリ情報が矛盾していることを示す応答（ディレクトリ矛盾）を制御装置４に発行してもよい。この場合、制御装置４は、入出力装置３から受信した書き込みデータとディレクトリ矛盾を示すディレクトリ情報とともに、書き込み要求を記憶装置２に発行する。このように、制御装置４は、追い出し要求に対応する持ち出しノードＮＤから応答の受信の有無に拘わらず、書き込みデータ転送要求ＷＤＲＱに対応して入出力装置３から受信した書き込みデータを記憶装置２に書き込む。
【００３２】
制御装置４は、記憶装置２内のディレクトリ情報を更新した後、書き込みＤＭＡ転送が正常に完了したことを示す正常応答を入出力装置３に発行する（図２（ｇ））。入出力装置３は、正常応答の受信に基づいて、書き込みＤＭＡ転送の完了通知を演算処理装置１に発行する（図２（ｈ））。例えば、完了通知は、書き込みＤＭＡ転送の完了を示す割り込みとして演算処理装置１に発行される。
【００３３】
図２に示す動作では、書き込みＤＭＡ転送により記憶装置２に転送するデータに関係しないエラーが発生した場合に、制御装置４から入出力装置３にエラー応答が発行されることを抑止することができる。これにより、入出力装置３から記憶装置２にデータが転送可能であるにも拘わらず、書き込みＤＭＡ転送が失敗したと見なされることを抑止することができ、データが記憶装置２に転送されない不具合の発生を抑止することができる。換言すれば、書き込みＤＭＡ転送の実行対象でないノードＮＤ（持ち出しノードＮＤ）で発生したエラーにより、データが記憶装置２に転送されない不具合の発生を抑止することができる。
【００３４】
また、演算処理装置１は、書き込みＤＭＡ転送により記憶装置２に書き込むデータに関係しないエラーが発生した場合、書き込みＤＭＡ転送の完了通知を入出力装置３から受信する。これにより、演算処理装置１（すなわち、演算処理装置１が実行するアプリケーションプログラム等）は、書き込みＤＭＡ転送に続く処理を継続することができ、情報処理装置ＩＰＥ１の動作が停止することを抑止することができる。すなわち、システムダウンを抑止することができる。
【００３５】
これに対して、書き込みＤＭＡ転送により記憶装置２に転送するデータに関係しないエラーが発生した場合に、制御装置４から入出力装置３にエラー応答が発行されるとする。この場合、入出力装置３は、書き込みＤＭＡ転送が正常に完了しなかったことを示すエラー通知を演算処理装置１に発行する。演算処理装置１は、書き込みＤＭＡ転送を実行させる転送指示後、書き込みＤＭＡ転送が完了する前（すなわち、書き込みＤＭＡ転送の処理の実行中）にエラー通知を入出力装置３から受信するため、書き込みＤＭＡ転送後の処理を実行することが困難になる。最悪の場合、再起動以外に情報処理装置ＩＰＥ１が復旧されないカーネルパニック等のエラーが発生するおそれがある。すなわち、書き込みＤＭＡ転送を実行するノードＮＤ以外のノードＮＤで発生したエラーにより、書き込みＤＭＡ転送を実行するノードＮＤでカーネルパニック等のシステムエラーが発生するおそれがある。
【００３６】
図３は、図１に示す情報処理装置ＩＰＥ１において、記憶装置２から入出力装置３にデータを転送する読み出しＤＭＡ転送の一例を示す。すなわち、図３は、情報処理装置ＩＰＥ１の制御方法の一例を示す。図２と同一または同様の動作については、詳細な説明は省略する。
【００３７】
読み出しＤＭＡ転送では、演算処理装置１は、読み出しＤＭＡ転送の実行を決定した場合、転送指示の前に返送指示を制御装置４に発行する（図３（ａ））。制御装置４は、返送指示の受信に基づいて、記憶装置２に読み出し要求を発行し、読み出しＤＭＡ転送により記憶装置２から読み出しデータが読み出される記憶領域からディレクトリ情報を読み出す（図３（ｂ））。制御装置４は、記憶装置２から読み出したディレクトリ情報に基づいて、読み出しデータが保持された記憶装置２の記憶領域からデータを持ち出した持ち出しノードＮＤを検出し、持ち出しノードＮＤにデータの返送要求を発行する（図３（ｃ））。
【００３８】
返送要求を受信した持ち出しノードＮＤは、持ち出したデータをキャッシュメモリ部１ｂから追い出し、追い出したデータである返送データを含む応答を制御装置４に発行する（図３（ｄ））。なお、通信経路の一時的な故障等により、返送要求に対応する応答が持ち出しノードＮＤから制御装置４に届かず、返送指示に対応する制御装置４からのエラー応答を受信した場合、演算処理装置１は、返送指示を再発行するリトライ処理を実行する。
【００３９】
制御装置４は、持ち出しノードＮＤからの応答に含まれる返送データと持ち出しノードＮＤがなくなったことを示すディレクトリ情報とともに、書き込み要求を記憶装置２に発行する（図３（ｅ））。すなわち、記憶装置２に保持されたディレクトリ情報が更新される。
【００４０】
演算処理装置１は、返送指示に基づいて、持ち出しノードＮＤが持ち出したデータを返送させた後、読み出しＤＭＡ転送の指示を示す転送指示を入出力装置３に発行する（図３（ｆ））。入出力装置３は、転送指示の受信に基づいて、読み出しデータ転送要求ＲＤＲＱを制御装置４に発行する（図３（ｇ））。
【００４１】
制御装置４は、読み出しデータ転送要求ＲＤＲＱの受信に基づいて、記憶装置２に読み出し要求を発行し、記憶装置２から読み出しデータとディレクトリ情報とを読み出す（図３（ｈ））。記憶装置２から読み出す読み出しデータは、読み出しＤＭＡ転送における転送対象のデータである。制御装置４は、ディレクトリ情報に基づいて、記憶装置２から読み出すデータを持ち出した持ち出しノードＮＤを検出し、持ち出しノードＮＤに追い出し要求を発行する（図３（ｉ））。なお、転送指示の前に発行される返送指示に基づいて、持ち出しノードＮＤからデータが返送されるため、転送指示後に追い出し要求が発行される可能性を、返送指示を発行しない従来に比べて低くすることができる。
【００４２】
追い出し要求を受信した持ち出しノードＮＤは、持ち出したデータをキャッシュメモリ部１ｂから追い出し、追い出したデータを含む応答を制御装置４に発行する。ここで、読み出しＤＭＡ転送では、持ち出しノードＮＤから追い出されたデータは、記憶装置２に書き込まれるため、読み出しＤＭＡ転送における追い出し要求は、持ち出しノードのキャッシュメモリ部１ｂに保持された対象データを返送させる返送要求である。
【００４３】
図２と同様に、追い出し要求に基づいて持ち出しノードが発行する応答は、持ち出しノードＮＤと制御装置４との間の通信経路等の一時的な故障により、制御装置４に届かない（図３（ｊ））。制御装置４は、タイムアウトの発生に基づいて、エラーを示すディレクトリ情報とともに書き込み要求を記憶装置２に発行する（図３（ｋ））。すなわち、記憶装置２に保持されたディレクトリ情報が更新される。ディレクトリ情報により示されるエラーは、持ち出しノードＮＤからの応答が受信されなかったことを示す。通信経路等の一時的な故障が発生した場合、持ち出しノードＮＤからのデータは返送されない。しかし、持ち出しノードＮＤからのデータは、返送指示に基づく返送要求の応答として記憶装置２に返送済みである。
【００４４】
なお、制御装置４は、データをキャッシュメモリ部１ｂから追い出したことを示す応答を持ち出しノードＮＤから受信した場合、応答に含まれる返送データと正常を示すディレクトリ情報とともに書き込み要求を記憶装置２に発行する。さらに、追い出し要求を受信した持ち出しノードが実際にはデータを持ち出していない場合、持ち出しノードは、ディレクトリ矛盾を示す応答を制御装置４に発行してもよい。
【００４５】
制御装置４は、記憶装置２内のディレクトリ情報を更新した後、記憶装置２から読み出したデータとともに、読み出しＤＭＡ転送が正常に完了したことを示す正常応答を入出力装置３に発行する（図３（ｌ））。このように、読み出しＤＭＡ転送においても、制御装置４は、追い出し要求に対応する持ち出しノードから応答の受信の有無に拘わらず、読み出しデータ転送要求ＲＤＱに対応して記憶装置２から読み出したデータを入出力装置３に転送する。入出力装置３は、正常応答の受信に基づいて、読み出しＤＭＡ転送の完了通知を演算処理装置１に発行する（図３（ｍ））。例えば、完了通知は、読み出しＤＭＡ転送の完了を示す割り込みとして演算処理装置１に発行される。
【００４６】
図３に示す動作では、読み出しＤＭＡ転送により入出力装置３に転送するデータに関係しないエラーが発生した場合に、制御装置４から入出力装置３にエラー応答が発行されることを抑止することができる。これにより、記憶装置２から入出力装置３にデータが転送可能であるにも拘わらず、読み出しＤＭＡ転送が失敗したと見なされることを抑止することができ、データが入出力装置３に転送されない不具合の発生を抑止することができる。換言すれば、読み出しＤＭＡ転送の実行対象でないノードＮＤ（持ち出しノードＮＤ）で発生したエラーにより、データが入出力装置３に転送されない不具合の発生を抑止することができる。
【００４７】
また、演算処理装置１は、読み出しＤＭＡ転送により入出力装置３に転送するデータに関係しないエラーが発生した場合、読み出しＤＭＡ転送の完了通知を入出力装置３から受信する。これにより、演算処理装置１は、読み出しＤＭＡ転送に続く処理を継続することができ、情報処理装置ＩＰＥ１の動作が停止することを抑止することができる。すなわち、システムダウンを抑止することができる。
【００４８】
これに対して、読み出しＤＭＡ転送により入出力装置３に転送するデータに関係しないエラーが発生した場合に、制御装置４から入出力装置３にエラー応答が発行されるとする。この場合、入出力装置３は、読み出しＤＭＡ転送が正常に完了しなかったことを示すエラー通知を演算処理装置１に発行する。演算処理装置１は、読み出しＤＭＡ転送を実行させる転送指示後、読み出しＤＭＡ転送が完了する前（すなわち、読み出しＤＭＡ転送の処理の実行中）にエラー通知を入出力装置３から受信するため、読み出しＤＭＡ転送後の処理を実行することが困難になる。最悪の場合、カーネルパニック等のエラーが発生するおそれがある。すなわち、読み出しＤＭＡ転送を実行するノードＮＤ以外のノードＮＤで発生したエラーにより、読み出しＤＭＡ転送を実行するノードＮＤでカーネルパニック等のシステムエラーが発生するおそれがある。
【００４９】
以上、図１から図３に示す実施形態では、書き込みＤＭＡ転送または読み出しＤＭＡ転送により記憶装置２に対して転送するデータに関係しないエラーが発生した場合に、制御装置４から入出力装置３にエラー応答が発行されることを抑止することができる。これにより、入出力装置３と記憶装置２との間でデータのＤＭＡ転送が可能であるにも拘わらず、ＤＭＡ転送が失敗したと見なされ、データが転送されない不具合の発生を抑止することができる。例えば、ＤＭＡ転送の実行対象でない持ち出しノードＮＤで発生したエラーにより、ＤＭＡ転送が実行されない不具合の発生を抑止することができる。
【００５０】
また、演算処理装置１は、ＤＭＡ転送の実行対象でない持ち出しノードＮＤでエラーが発生した場合にも、ＤＭＡ転送の完了通知を入出力装置３から受信する。これにより、演算処理装置１は、ＤＭＡ転送に続く処理を実行することができ、情報処理装置ＩＰＥ１の動作が停止することを抑止することができる。すなわち、記憶装置２と入出力装置３との間で実行されるデータ転送の対象データを持ち出したノードからの応答がない場合にも、情報処理装置ＩＰＥ１の動作が停止することを抑止することできる。
【００５１】
さらに、読み出しＤＭＡ転送時に、転送指示の前に返送指示を発行し、持ち出しノードＮＤからデータを返送させることで、転送指示後に追い出し要求が発行される可能性を、返送指示を発行しない場合に比べて低くすることができる。この結果、転送指示後に持ち出しノードＮＤからデータが返送されないエラーの発生の頻度を低くすることができる。
【００５２】
また、応答生成部４ｆが、追い出し要求に対応する応答の受信に応じて応答切り替え制御部４ｅから切り替え情報ＳＷＩを受信することで、切り替え情報ＳＷＩを受信しない場合に比べて、エラー応答と正常応答との切り替えを容易に実行することができる。
【００５３】
図４は、制御装置、情報処理装置および情報処理装置の制御方法の別の実施形態を示す。図４に示す情報処理装置ＩＰＥ２は、サーバ等であり、複数のシステムコントローラ２００と、各システムコントローラ２００に接続されたＣＰＵ等のプロセッサ１００、記憶装置３００および入出力装置４００とを有する。以下では、互いに接続されたプロセッサ１００、システムコントローラ２００、記憶装置３００および入出力装置４００の集合は、ノードとも称される。なお、システムコントローラ２００は、プロセッサ１００内に含まれてもよい。記憶装置３００は、主記憶装置、または演算処理装置の外部に接続されるキャッシュメモリ部である。記憶装置３００がキャッシュメモリ部の場合、主記憶装置が記憶装置３００にさらに接続される。
【００５４】
各プロセッサ１００は、キャッシュメモリ部１０、キャッシュメモリ制御部１２および複数のプロセッサコア部１４を有する。例えば、各ノードのプロセッサコア部１４は、ノード内の記憶装置３００に格納されたプログラムを実行することで、演算処理を実行し、メモリアクセス処理をシステムコントローラ２００に実行させるためにメモリアクセス要求を発行する。メモリアクセス要求は、記憶装置３００からデータを読み出す読み出しメモリアクセス要求または記憶装置３００にデータを書き込む書き込みメモリアクセス要求のいずれかである。また、プロセッサ１００は、記憶装置３００と入出力装置４００との間でデータ転送を実行する場合、入出力装置４００に転送指示ＴＲを出力する。プロセッサ１００は、演算処理装置の一例であり、プロセッサコア部１４は、演算処理部の一例である。
【００５５】
各プロセッサ１００は、自ノードの記憶装置３００にアクセスする以外に、システムコントローラ２００を介して他ノードの記憶装置３００にアクセス可能である。また、情報処理装置ＩＰＥ２は、例えば、ＭＥＳＩプロトコルの手法を用いて、記憶装置３００が記憶するデータとキャッシュメモリ部１０が保持するデータとの整合性または一貫性を維持する制御を実行する。ここで、ＭＥＳＩは、”Modified”、”Exclusive”、”Shared”、”Invalid”の頭文字である。記憶装置３００が記憶するデータとキャッシュメモリ部１０が保持するデータとの整合性または一貫性は、キャッシュコヒーレンシとも称される。すなわち、情報処理装置ＩＰＥ２は、ｃｃ−ＮＵＭＡ（cache-coherent NonUniform Memory Access）アーキテクチャを採用したマルチプロセッサシステムとして機能する。
【００５６】
ＭＥＳＩプロトコルにおいて、”Ｍｏｄｉｆｉｅｄ”は、キャッシュメモリ部１０に保持されたデータが更新され（書き替えられ）、記憶装置３００に記憶されたデータと異なる状態を示す。”Ｅｘｃｌｕｓｉｖｅ”は、アクセス対象のデータが複数のプロセッサ１００のキャッシュメモリ部１０のいずれか１つのみに保持され、データが更新されていない状態を示す。”Ｓｈａｒｅｄ”は、アクセス対象のデータが複数のプロセッサ１００のキャッシュメモリ部１０に保持され、データが更新されていない状態を示す。”Ｉｎｖａｌｉｄ”は、キャッシュメモリ部１０に保持されたデータが無効であることを示す。以下では、Ｍｏｄｉｆｉｅｄ状態、Ｅｘｃｌｕｓｉｖｅ状態、Ｓｈａｒｅｄ状態およびＩｎｖａｌｉｄ状態は、それぞれＭ状態、Ｅ状態、Ｓ状態およびＩ状態とも称される。
【００５７】
キャッシュメモリ部１０は、例えば、セットアソシアティブ方式を採用しており、複数のウェイを有する。各ウェイは、タグ領域およびデータ領域を含む複数のエントリ（キャッシュライン）を有する。タグ領域は、例えば、アドレスの上位ビット群とキャッシュステータスとを保持する領域を有する。この場合、エントリは、アドレスの中位ビット群により選択され、キャッシュライン内のデータは、アドレスの下位ビット群により選択される。例えば、各キャッシュラインに保持されるデータのサイズは、記憶装置３００に保持されたデータのアクセス単位である１２８バイトである。キャッシュステータスを保持する領域には、Ｍ状態、Ｅ状態、Ｓ状態またはＩ状態を示す情報が設定される。
【００５８】
キャッシュメモリ制御部１２は、プロセッサコア部１４から読み出しコマンドを受信した場合、読み出しコマンドに含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されているか否かを判定する。なお、プロセッサコア部１４は、データをプロセッサコア部１４に読み出すロード命令等の命令を実行した場合、読み出しコマンドを発行する。データがキャッシュメモリ部１０に保持されている場合（キャッシュヒット）、キャッシュメモリ制御部１２は、キャッシュメモリ部１０からデータを読み出し、読み出したデータをプロセッサコア部１４に出力する。
【００５９】
一方、データがキャッシュメモリ部１０に保持されていない場合（キャッシュミス）、キャッシュメモリ制御部１２は、記憶装置３００に対するメモリアクセス要求をシステムコントローラ２００に発行し、システムコントローラ２００からのデータの受信を待つ。データをプロセッサコア部１４に読み出すロード命令等に基づきキャッシュメモリ制御部１２が発行するメモリアクセス要求は、共有型のメモリアクセス要求とも称される。すなわち、共有型のメモリアクセス要求は、記憶装置３００に保持されたデータを参照する場合に発行される。ＮＵＭＡアーキテクチャを採用したマルチプロセッサシステムでは、メモリアクセス要求を発行してからデータを受信するまでの時間は、同じノード内の記憶装置３００にアクセスする場合と、他ノード内の記憶装置３００にアクセスする場合とで異なる。メモリアクセス要求を発行してからデータの受信が完了するまでの処理は、トランザクションと称される。
【００６０】
キャッシュメモリ制御部１２は、システムコントローラ２００を介して記憶装置３００のいずれかから読み出されたデータをキャッシュメモリ部１０に格納するとともにプロセッサコア部１４に出力する。また、キャッシュメモリ制御部１２は、データを読み出した記憶装置３００のアドレスの上位ビット群とキャッシュステータスとをタグ領域に格納する。キャッシュメモリ制御部１２は、記憶装置３００から読み出したデータが他ノードのキャッシュメモリ部１０に保持されていない場合、タグ領域のキャッシュステータスをＥ状態に設定する。キャッシュメモリ制御部１２は、記憶装置３００から読み出したデータが他ノードのキャッシュメモリ部１０に保持されている場合、タグ領域のキャッシュステータスをＳ状態に設定する。なお、他ノードのキャッシュメモリ部１０の状態は、データとともに記憶装置３００から読み出されるディレクトリ情報に基づいて、システムコントローラ２００により判定される。すなわち、情報処理装置ＩＰＥ２は、ディレクトリ方式により、キャッシュコヒーレンシを維持する制御を実行する。ディレクトリ情報については、図６で説明される。
【００６１】
キャッシュメモリ制御部１２は、プロセッサコア部１４から書き込みコマンドを受信した場合、書き込みコマンドに含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されているか否かを判定する。なお、プロセッサコア部１４は、データをプロセッサコア部１４から出力するストア命令等の命令を実行した場合、書き込みコマンドを発行する。書き込みコマンドに含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されている場合（キャッシュヒット）、キャッシュメモリ制御部１２は、キャッシュメモリ部１０に保持されているデータを上書きする。そして、キャッシュメモリ制御部１２は、キャッシュステータスをＥ状態またはＳ状態からＭ状態に変更する。なお、キャッシュステータスをＳ状態からＭ状態に変更する場合、キャッシュメモリ制御部１２は、他ノードのキャッシュメモリ部１０に保持されている対象データを無効化する無効化要求を他ノードに発行する。これにより、一方のノードのキャッシュメモリ部１０がＳ状態でデータを保持し、他方のノードのキャッシュメモリ部１０がＭ状態でデータを保持することが抑止され、キャッシュコヒーレンシが維持される。
【００６２】
一方、データがキャッシュメモリ部１０に保持されていない場合（キャッシュミス）、キャッシュメモリ制御部１２は、記憶装置３００に対するメモリアクセス要求をシステムコントローラ２００に発行し、システムコントローラ２００からのデータの受信を待つ。データをプロセッサコア部１４から出力するストア命令等に基づきキャッシュメモリ制御部１２が生成するメモリアクセス要求は、排他型のメモリアクセス要求とも称される。すなわち、排他型のメモリアクセス要求は、記憶装置３００に保持されたデータを書き替える場合に生成される。
【００６３】
キャッシュメモリ制御部１２は、システムコントローラ２００からデータを受信した場合、受信したデータに書き込みコマンドに含まれる書き込みデータをマージし、マージしたデータをキャッシュメモリ部１０に格納する。また、キャッシュメモリ制御部１２は、受信したデータを記憶する記憶装置３００のアドレスの上位ビット群をタグ領域に格納し、タグ領域のキャッシュステータスをＭ状態に設定する。なお、アクセス対象のデータを記憶装置３００に保持しているノードにおいて排他型のメモリアクセス要求を受信したシステムコントローラ２００は、対象データを保持する他ノードのキャッシュメモリ部１０に、対象データを無効化させる無効化要求を発行する。
【００６４】
キャッシュメモリ制御部１２は、キャッシュメモリ部１０のエントリに空きがない場合、エントリのいずれかに保持されたデータをキャッシュメモリ部１０から追い出し、記憶装置３００から読み出すデータを格納するエントリを確保する。データを追い出すエントリは、ＬＲＵ（Least Recently Used）手法等を用いて決められる。キャッシュメモリ部１０上で書き替えられたＭ状態のデータをキャッシュメモリ部１０から追い出す場合、キャッシュメモリ制御部１２は、追い出したデータを記憶装置３００に書き戻すためのメモリアクセス要求をシステムコントローラ２００に発行する。
【００６５】
さらに、キャッシュメモリ制御部１２は、システムコントローラ２００を介して他ノードからデータの返送要求を受けた場合、返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されているか否かを判定する。キャッシュメモリ制御部１２は、返送要求に含まれるアドレスに対応するデータが更新されることなくキャッシュメモリ部１０に保持されている場合、キャッシュメモリ部１０からデータを追い出す。そして、キャッシュメモリ制御部１２は、データを追い出したことを示す情報を含む応答を、返送要求を発行したシステムコントローラ２００に発行する。データの返送要求は、キャッシュメモリ部１０からデータを追い出させる追い出し要求の一例である。
【００６６】
キャッシュメモリ制御部１２は、データの返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０上で更新されている場合、キャッシュメモリ部１０から追い出したデータを含む応答を、返送要求を発行したシステムコントローラ２００に発行する。キャッシュメモリ制御部１２は、返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０上に存在しない場合、データが存在しないことを示すエラー情報を含む応答を、返送要求を発行したシステムコントローラ２００に発行する。
【００６７】
キャッシュメモリ制御部１２は、システムコントローラ２００を介して他ノードから無効化要求を受けた場合、無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されているか否かを判定する。キャッシュメモリ制御部１２は、無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０に保持されている場合、キャッシュメモリ部１０に保持されたデータを無効化する。そして、キャッシュメモリ制御部１２は、データを無効化したことを示す情報を含む応答を、無効化要求を発行したシステムコントローラ２００に発行する。無効化要求は、キャッシュメモリ部１０からデータを追い出させる追い出し要求の一例である。
【００６８】
キャッシュメモリ制御部１２は、無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部１０上に存在しない場合、データが存在しないことを示すエラー情報を含む応答を、無効化要求を発行したシステムコントローラ２００に発行する。以下では、データの返送要求および無効化要求は、コヒーレンシ制御要求とも称される。
【００６９】
システムコントローラ２００は、プロセッサインタフェース２０、エントリ決定部２２、制御要求発行部２４、入出力制御部２６、応答調停部２８、メモリ制御部３０および複数の要求処理エントリ３２を有する。システムコントローラ２００は、制御装置の一例である。
【００７０】
プロセッサインタフェース２０は、キャッシュメモリ制御部１２および他ノードのシステムコントローラ２００に接続され、各ノードのキャッシュメモリ制御部１２との間での通信を制御する。プロセッサインタフェース２０は、自ノードのキャッシュメモリ制御部１２および他ノードのシステムコントローラ２００から受信するメモリアクセス要求を調停により選択し、選択した順にメモリアクセス要求をエントリ決定部２２に出力する。
【００７１】
なお、プロセッサインタフェース２０は、受信したメモリアクセス要求に含まれるアドレスが、他ノードの記憶装置３００に割り当てられている場合、他ノードにメモリアクセス要求を発行する。プロセッサインタフェース２０は、メモリアクセス要求に基づいて応答調停部２８から出力されるデータおよび応答を受信し、受信したデータおよび応答をメモリアクセス要求の発行元に発行する。
【００７２】
また、プロセッサインタフェース２０は、自ノードのキャッシュメモリ部１０に保持しているデータに対応する排他型のメモリアクセス要求を他ノードから受信した場合、自ノードのキャッシュメモリ制御部１２に、データの返送要求を発行する。自ノードのキャッシュメモリ部１０がメモリアクセス要求に対応するデータを保持しているか否かは、ディレクトリ情報により判定される。プロセッサインタフェース２０は、自ノードのキャッシュメモリ制御部１２から更新されたデータを受信した場合、メモリアクセス要求の発行元に更新されたデータを出力し、記憶装置３００に更新されたデータを書き込む。
【００７３】
プロセッサインタフェース２０は、他ノードのシステムコントローラ２００からコヒーレンシ制御要求（データの返送要求またはキャッシュメモリ部１０の無効化要求）を受信した場合、受信したコヒーレンシ制御要求をキャッシュメモリ制御部１２に発行する。プロセッサインタフェース２０は、コヒーレンシ制御要求に対応してキャッシュメモリ制御部１２から発行される応答をコヒーレンシ制御要求の発行元のシステムコントローラ２００に発行する。
【００７４】
さらに、プロセッサインタフェース２０は、制御要求発行部２４から出力されるコヒーレンシ制御要求を受信した場合、受信したコヒーレンシ制御要求を他ノードのシステムコントローラ２００に発行する。プロセッサインタフェース２０は、他ノードのシステムコントローラ２００からコヒーレンシ制御要求に対応する応答を受信した場合、受信した応答をコヒーレンシ制御要求の発行元の要求処理エントリ３２に出力する。
【００７５】
入出力制御部２６は、入出力装置４００内のＤＭＡＣ（Direct Memory Access Controller）が発行するデータ転送要求を受信し、受信したデータ転送要求をエントリ決定部２２に出力する。データ転送要求は、入出力装置４００から記憶装置３００にデータを転送する書き込みデータ転送要求または記憶装置３００から入出力装置４００にデータを転送する読み出しデータ転送要求のいずれかである。書き込みデータ転送要求は、記憶装置３００に書き込む書き込みデータを含む。また、入出力制御部２６は、データ転送要求に基づいて応答調停部２８から出力される応答を受信し、受信した応答を入出力装置４００に発行する。読み出しデータ転送要求に対応する応答は、記憶装置３００から読み出した読み出しデータを含む。
【００７６】
応答調停部２８は、要求処理エントリ３２のステートマシン３６から出力されるメモリアクセス要求またはデータ転送要求に対応する応答およびデータを受信し、受信した応答を調停する。応答調停部２８は、ステートマシン３６からの応答を調停した順に、プロセッサインタフェース２０または入出力制御部２６に出力する。メモリアクセス要求に対応する応答は、プロセッサインタフェース２０に出力され、データ転送要求に対応する応答は、入出力制御部２６に出力される。
【００７７】
エントリ決定部２２は、プロセッサインタフェース２０から受信したメモリアクセス要求および入出力制御部２６から受信したデータ転送要求を処理するために使用する要求処理エントリ３２を、ＬＲＵまたはラウンドロビン等の手法を用いて決定する。エントリ決定部２２は、使用を決定した要求処理エントリ３２にメモリアクセス要求またはデータ転送要求を転送する。
【００７８】
制御要求発行部２４は、要求処理エントリ３２から出力されるコヒーレンシ制御要求を保持するコヒーレンシ制御要求キューＣＲＱＵＥを有する。制御要求発行部２４は、コヒーレンシ制御要求キューＣＲＱＵＥに保持されたコヒーレンシ制御要求を調停することにより選択する。そして、制御要求発行部２４は、選択したコヒーレンシ制御要求を、プロセッサインタフェース２０を介して、宛先のノードに発行する。
【００７９】
要求処理エントリ３２は、要求保持バッファ３４、ステートマシン３６、データバッファ３８、ディレクトリバッファ４０、エラー検出訂正部４２およびタイマ４４を有する。システムコントローラ２００が有する要求処理エントリ３２の数は、８個、１６個または３２個等である。各ステートマシン３６は、メモリアクセス要求に基づくメモリアクセス処理およびデータ転送要求に基づくデータ転送処理を制御するとともに、キャッシュコヒーレンシを維持する処理を制御する。
【００８０】
要求保持バッファ３４は、エントリ決定部２２から受信したメモリアクセス要求またはデータ転送要求に含まれるアドレスおよび要求元ＩＤ（Identification）等の情報を保持し、保持している情報をステートマシン３６に出力する。
【００８１】
データバッファ３８は、記憶装置３００から読み出されるデータを保持し、記憶装置３００に書き込む書き込まれるデータを保持する。また、データバッファ３８は、ステートマシン３６が他ノードに発行するデータの返送要求に対応する応答に含まれるデータ（更新データ）を保持する。ステートマシン３６は、データバッファ３８から読み出す更新データを記憶装置３００に書き込む書き込み要求を発行する。
【００８２】
ディレクトリバッファ４０は、ステートマシン３６から記憶装置３００に発行される読み出し要求に基づいて記憶装置３００から読み出されるディレクトリ情報を保持する。
【００８３】
エラー検出訂正部４２は、記憶装置３００から読み出されるディレクトリ情報に含まれるエラー情報を検出し、記憶装置３００から読み出されるデータおよびディレクトリ情報のビットエラーを検出する。例えば、エラー検出訂正部４２は、記憶装置３００から読み出されるデータおよびディレクトリ情報の１ビットエラーを検出して訂正する機能と、２ビットエラーを検出する機能とを有する。２ビットエラーは、訂正が困難なエラーの一例である。また、エラー検出訂正部４２は、他ノードのシステムコントローラ２００に発行するコヒーレンシ制御要求に対応する応答がディレクトリ矛盾のエラーを示すことを検出する。そして、エラー検出訂正部４２は、検出したエラーを示すエラー情報をステートマシン３６に出力する。
【００８４】
タイマ４４は、コヒーレンシ制御要求が他ノードに発行されてから、コヒーレンシ制御要求に対応する応答を他ノードから受信するまでの時間を計測する。タイマ４４は、計測している時間が予め設定された時間を越えた場合、タイムアウトの発生を示すエラー情報（タイムアウトエラー）をステートマシン３６に通知する。
【００８５】
ステートマシン３６は、持ち出し先検出部４６と応答発行部４８とを有する。なお、持ち出し先検出部４６は、要求処理エントリ３２内であってステートマシン３６の外部に配置されてもよい。持ち出し先検出部４６は、記憶装置３００からデータとともに出力されるディレクトリ情報を解析し、記憶装置３００から出力されたデータが他ノードのキャッシュメモリ部１０に格納されているか否かを検出する。記憶装置３００から出力されたデータが他ノードのキャッシュメモリ部１０に持ち出された場合、持ち出し先検出部４６は、データを持ち出しているプロセッサ１００をコヒーレンシ制御要求の宛先に決定する。持ち出し先検出部４６は、記憶装置３００からデータとともに読み出したディレクトリ情報に基づいてデータを持ち出したノードである持ち出しノードを検出する検出部の一例である。
【００８６】
ステートマシン３６は、記憶装置３００に対するメモリアクセス要求の発行と、入出力装置４００に対するデータ転送要求とを制御する。また、ステートマシン３６は、自ノードおよび他ノードのプロセッサ１００に対するコヒーレンシ制御要求の発行と、発行した要求に対応する応答とを制御する。例えば、ステートマシン３６は、要求保持バッファ３４から受信するメモリアクセス要求またはデータ転送要求に基づいて、読み出し要求または書き込み要求を、メモリ制御部３０を介して記憶装置３００に出力する。
【００８７】
ステートマシン３６は、持ち出し先検出部４６によりデータが他ノードのプロセッサ１００に持ち出されていないと検出された場合、記憶装置３００から出力されたデータとともに応答を応答調停部２８に出力し、要求処理エントリ３２を開放する。一方、ステートマシン３６は、持ち出し先検出部４６によりデータが他ノードのプロセッサ１００に持ち出されたと検出された場合、データを持ち出したプロセッサ１００にコヒーレンシ制御要求を発行し、タイマ４４を起動する。
【００８８】
ステートマシン３６は、データの返送要求に対応する応答が、他ノードのプロセッサ１００が更新したデータを含む場合、応答に含まれる更新されたデータを応答調停部２８に出力し、ディレクトリバッファ４０に保持されたディレクトリ情報を更新する。そして、ステートマシン３６は、更新したディレクトリ情報を、データバッファ３８に保持された更新されたデータとともに記憶装置３００に書き込むために書き込み要求をメモリ制御部３０に出力し、要求処理エントリ３２を開放する。制御要求発行部２４、ステートマシン３６およびメモリ制御部３０は、追い出し要求を持ち出しノードに発行し、持ち出しノードからの応答に追い出したデータが含まれる場合、応答に含まれるデータを記憶装置３００に書き込む追い出し制御部の一例である。また、ステートマシン３６およびメモリ制御部３０は、入出力装置４００から記憶装置３００にデータを転送する書き込みデータ転送要求に対応する正常応答を入出力装置４００に発行する場合、入出力装置４００から受信したデータを記憶装置３００に書き込む書き込み制御部の一例である。
【００８９】
ステートマシン３６は、コヒーレンシ制御要求に対応する応答を受信する前に、タイマ４４が所定時間の計測を完了してタイムアウトを検出した場合、エラーの発生を示すエラー応答を応答調停部２８に出力する。そして、ステートマシン３６は、ディレクトリバッファ４０に保持されたディレクトリ情報にエラー情報を書き込み、エラー情報を書き込んだディレクトリ情報を記憶装置３００に書き込むために書き込み要求をメモリ制御部３０に出力する。その後、ステートマシン３６は、要求処理エントリ３２を開放する。
【００９０】
応答発行部４８は、入出力アクセス判定部５０と応答切り替え制御部５２と応答生成部５４とを有する。なお、入出力アクセス判定部５０は、ステートマシン３６内であって、応答発行部４８の外部に設けられてもよい。入出力アクセス判定部５０は、要求保持バッファ３４から供給される要求元ＩＤを解読し、入出力装置４００からデータ転送要求を受け付けたことを検出した場合、マスク情報ＭＳＫを応答切り替え制御部５２に出力する。応答切り替え制御部５２は、マスク情報ＭＳＫを受信した場合、エラー検出訂正部４２およびタイマ４４から出力される情報に基づいて、エラー応答を正常応答に切り替える切り替え情報ＳＷＩを応答生成部５４に出力する。応答生成部５４は、切り替え情報ＳＷＩと、エラー検出訂正部４２およびタイマ４４から出力される情報とに基づいて、正常応答またはエラー応答を生成する。入出力アクセス判定部５０、応答切り替え制御部５２および応答生成部５４の例は、図５に示される。
【００９１】
メモリ制御部３０は、要求処理エントリ３２から出力される読み出し要求または書き込み要求を保持するメモリ要求キューＭＲＱＵＥを有する。メモリ制御部３０は、メモリ要求キューＭＲＱＵＥに保持された読み出し要求または書き込み要求を調停することにより選択し、選択した読み出し要求または書き込み要求を記憶装置３００に順に出力する。
【００９２】
記憶装置３００は、複数のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）等を含み、プロセッサコア部１４で処理するデータとディレクトリ情報とを保持する記憶領域を有する。記憶装置３００は、プロセッサコア部１４が実行するプログラムを保持する記憶領域を有してもよい。
【００９３】
入出力装置４００は、例えば、ＨＤＤ（Hard Disk Drive）またはＳＳＤ（Solid State Drive）であり、プロセッサ１００を介することなく、記憶装置３００との間でＤＭＡ転送を実行する機能を含むＤＭＡＣを有する。ＤＭＡＣは、図１に示す入出力装置３と同様に、プロセッサ１００からの転送指示ＴＲに基づいて、データ転送要求をシステムコントローラ２００に発行する。
【００９４】
図５は、図４に示す応答発行部４８の一例を示す。入出力アクセス判定部５０は、要求デコーダＲＱＤＥＣ、インバータＩＶ１およびアンド回路ＡＮＤ１を有する。要求デコーダＲＱＤＥＣは、要求保持バッファ３４から供給される要求元ＩＤを解読し、要求元ＩＤが入出力装置４００を示す場合、入出力アクセス情報ＩＯＡ（論理１）を出力する。要求デコーダＲＱＤＥＣは、要求元ＩＤがプロセッサ１００を示す場合、入出力アクセス情報ＩＯＡ（論理０）を出力する。インバータＩＶ１は、エラー検出訂正部４２が出力する２ビットエラーを示すエラー情報２ＢＥＲＲの論理を反転する。エラー情報２ＢＥＲＲは、２ビットエラーが発生した場合、論理１に設定され、２ビットエラーが発生しない場合、論理０に設定される。
【００９５】
なお、エラー検出訂正部４２は、記憶装置３００から読み出したディレクトリ情報が正しい持ち出しノードを示していないエラーであるディレクトリ矛盾エラーを検出した場合、エラー情報ＤＥＲＲを出力する。例えば、ディレクトリ矛盾エラーは、ディレクトリ情報が示す持ち出しノードにデータの返送要求を発行し、データを持ち出していないことを示すエラー応答を持ち出しノードから受信した場合に検出される。また、エラー検出訂正部４２は、記憶装置３００の過去のアクセスでエラーが発生したことを示すエラーマークが記憶装置３００から読み出したディレクトリ情報に含まれる場合（ディレクトリエラー）、エラー情報ＥＭＡＲＫを出力する。
【００９６】
アンド回路ＡＮＤ１は、入出力アクセス情報ＩＯＡが論理１で、エラー情報２ＢＥＲＲが論理０の場合、マスク情報ＭＳＫを論理１に設定し、入出力アクセス情報ＩＯＡが論理０またはエラー情報２ＢＥＲＲが論理１の場合、マスク情報ＭＳＫを論理０に設定する。すなわち、入出力アクセス判定部５０は、入出力装置４００が発行したデータ転送要求に基づいて、２ビットエラーが発生した場合を除き、マスク情報ＭＳＫを論理１に設定する。換言すれば、入出力アクセス判定部５０は、ステートマシン３２がプロセッサ１００からのメモリアクセス要求に基づいて動作する場合、または２ビットエラーが発生した場合、マスク情報ＭＳＫを論理０に設定する。
【００９７】
マスク情報ＭＳＫは、データ転送要求に基づいて、ディレクトリ矛盾エラー（ＤＥＲＲ）、ディレクトリエラー（ＥＭＡＲＫ）またはタイムアウトエラー（ＴＯＵＴ）が発生した場合に、エラー応答の発行をマスクして正常応答を発行するために生成される。ディレクトリ矛盾エラー（ＤＥＲＲ）、ディレクトリエラー（ＥＭＡＲＫ）またはタイムアウトエラー（ＴＯＵＴ）が発生したか否かは、応答切り替え制御部５２により判定される。なお、エラー検出訂正部４２が２ビットエラーを検出しない場合、入出力アクセス判定部５０は、インバータＩＶ１およびアンド回路ＡＮＤ１を持たず、入出力アクセス情報ＩＯＡをマスク情報ＭＳＫとして出力する。この場合、入出力アクセス判定部５０は、要求元ＩＤに基づいて、データ転送要求の発行を判定する。入出力アクセス判定部５０を用いてマスク情報ＭＳＫを生成することで、ステートマシン３２がデータ転送要求の処理を実行することを、入出力アクセス判定部５０を用いない場合に比べて、容易に判定することができる。
【００９８】
応答切り替え制御部５２は、オア回路ＯＲ、インバータＩＶ２およびアンド回路ＡＮＤ２を有する。オア回路ＯＲは、エラー情報２ＢＥＲＲ、ＤＥＲＲ、ＥＭＡＲＫ、ＴＯＵＴのいずれかが論理１の場合、エラー情報ＥＲＲを論理１に設定し、エラー情報２ＢＥＲＲ、ＤＥＲＲ、ＥＭＡＲＫ、ＴＯＵＴがいずれも論理０の場合、エラー情報ＥＲＲを論理０に設定する。エラー情報２ＢＥＲＲの論理１は、２ビットエラーの発生を示し、エラー情報ＤＥＲＲの論理１は、ディレクトリ矛盾エラーの発生をす。エラー情報ＥＭＡＲＫの論理１は、ディレクトリエラーの発生を示し、エラー情報ＴＯＵＴの論理１は、タイムアウトエラーの発生を示す。
【００９９】
インバータＩＶ２は、マスク情報ＭＳＫの論理を反転する。アンド回路ＡＮＤ２は、マスク情報ＭＳＫが論理０で、エラー情報ＥＲＲが論理１の場合、切り替え情報ＳＷＩを論理１に設定し、マスク情報ＭＳＫが論理１またはエラー信号ＥＲＲが論理０の場合、切り替え情報ＳＷＩを論理０に設定する。すなわち、応答切り替え制御部５２は、入出力装置４００が発行したデータ転送要求に基づいて２ビットエラーが発生した場合、切り替え情報ＳＷＩを論理１に設定する。また、応答切り替え制御部５２は、出力装置４００が発行したデータ転送要求に基づいて、２ビットエラー以外のエラー（ＤＥＲＲ、ＥＭＡＲＫまたはＴＯＵＴ）が発生した場合、切り替え情報ＳＷＩを論理０に設定する。
【０１００】
例えば、応答切り替え制御部５２は、データ転送要求に基づいて制御要求発行部２４が発行したコヒーレンシ制御要求に対応する応答を持ち出しノードから受信しない場合（ＴＯＵＴ）、切り替え情報ＳＷＩを論理０に設定する。また、応答切り替え制御部５２は、データ転送要求に基づいて制御要求発行部２４が発行したコヒーレンシ制御要求に対応する応答がディレクトリ矛盾エラーを示す場合（ＤＥＲＲ）、切り替え情報ＳＷＩを論理０に設定する。さらに、応答切り替え制御部５２は、データ転送要求に基づいて記憶装置３００から読み出したディレクトリ情報がエラーマークを含む場合（ＥＭＡＲＫ）、切り替え情報ＳＷＩを論理０に設定する。
【０１０１】
なお、応答切り替え制御部５２は、プロセッサ１００が発行したメモリアクセス要求に基づいて、エラー（ＷＢＥＲＲ、ＤＥＲＲ、ＥＭＡＲＫまたはＴＯＵＴ）が発生した場合、切り替え情報ＳＷＩを論理１に設定する。しかしながら、応答生成部５４は、入出力アクセス情報ＩＯＡが論理０の場合（メモリアクセス要求による処理）、切り替え情報ＳＷＩの入力をマスクし、論理０の切り替え情報ＳＷＩを受信したとして動作する。
【０１０２】
応答生成部５４は、論理１の入出力アクセス情報ＩＯＡと、論理０の切り替え情報ＳＷＩを受信した場合、データ転送要求に対応するエラー応答の代わりに正常応答を生成し、生成した応答を応答調停部２８に出力する。応答生成部５４は、論理１の入出力アクセス情報ＩＯＡと、論理１の切り替え情報ＳＷＩを受信した場合、データ転送要求に基づくエラー応答を応答調停部２８に出力する。すなわち、応答生成部５４は、データ転送要求に基づいて、ディレクトリ矛盾エラー、ディレクトリエラーまたはタイムアウトエラーが発生した場合（ＳＷ＝０）、エラー応答を生成せず、正常応答を生成する。また、応答生成部５４は、データ転送要求に基づいて、２ビットエラーが発生した場合（ＳＷ＝１）、エラー応答を生成する。
【０１０３】
応答生成部５４は、論理０の入出力アクセス情報ＩＯＡと、エラー情報ＷＢＥＲＲ、ＤＥＲＲ、ＥＭＡＲＫ、ＴＯＵＴのいずれかを受信した場合、切り替え情報ＳＷＩに拘わらず、エラー応答を生成する。応答生成部５４は、論理０の入出力アクセス情報ＩＯＡを受信し、エラー情報ＷＢＥＲＲ、ＤＥＲＲ、ＥＭＡＲＫ、ＴＯＵＴのいずれも受信しない場合、切り替え情報ＳＷＩに拘わらず、正常応答を生成する。
【０１０４】
なお、応答生成部５４は、データ転送要求に基づく応答を生成する場合、切り替え情報ＳＷＩの論理を、応答に含まれるエラービットに付加してもよい。例えば、データ転送要求に基づいて、エラー情報ＤＥＲＲ、ＥＭＡＲＫ、ＴＯＵＴが発生した場合、応答に含まれるエラービットは、切り替え情報ＳＷＩの論理０に設定される（正常な転送完了を示す正常応答）。データ転送要求に基づいて、エラー情報２ＢＥＲＲが発生した場合、応答に含まれるエラービットは、切り替え情報ＳＷＩの論理１に設定される（エラーの発生を示すエラー応答）。
【０１０５】
図６は、図４に示す記憶装置３００およびキャッシュメモリ部１０に保持されるデータの一例を示す。図６に示す例では、プロセッサ１００および記憶装置３００を有する２つのノードＮＤ１、ＮＤ２が互いに接続されている。
【０１０６】
ノードＮＤ１の記憶装置３００は、アドレスＡ０、Ａ１、Ａ２、Ａ３、Ａ４、...が割り当てられ、ノードＮＤ２の記憶装置３００は、アドレスＢ０、Ｂ１、Ｂ２、Ｂ３、Ｂ４、...が割り当てられる。各記憶装置３００は、アドレス毎にディレクトリ情報を記憶するディレクトリ領域と、データを記憶するデータ領域とを有する。例えば、各データ領域は、１２８バイトであり、キャッシュメモリ部１０のキャッシュラインのサイズと等しい。
【０１０７】
各データ領域は、自ノードの入出力装置４００に対して入出力されるデータを記憶するＤＭＡ領域と、自ノードおよび他ノードのプロセッサ１００によりアクセスされるデータを記憶するＣＰＵ領域とを有する。以下では、ＤＭＡ領域に記憶されるデータは、ＤＭＡデータとも称され、ＣＰＵ領域に記憶されるデータは、ＣＰＵデータとも称される。
【０１０８】
各ノードは、自ノードの記憶装置３００からキャッシュメモリ部１０に格納されたＤＭＡデータにアクセス可能であり、他ノードの記憶装置３００からキャッシュメモリ部１０に格納されたＤＭＡデータのアクセスは許可されない。また、各ノードは、自ノードおよび他ノードの記憶装置３００からキャッシュメモリ部１０に格納されたＣＰＵデータにアクセス可能である。
【０１０９】
各ディレクトリ領域は、キャッシュメモリ部１０へのデータの持ち出し情報を記憶するＥＳＩ領域と、データの持ち出し先のプロセッサ１００を識別するプロセッサ番号を記憶するＣＮＯ領域と、エラー情報を記憶するＥＡ領域とを有する。なお、図５に示すエラー検出訂正部４２は、エラー領域ＥＡから読み出された情報にエラー情報が含まれる場合、エラー情報ＥＭＡＲＫを出力する。
【０１１０】
ＥＳＩ領域において、符号Ｉ（Ｉｎｖａｌｉｄ）は、データが他ノードのキャッシュメモリ部１０に持ち出されていないことを示す。ＥＳＩ領域に符号Ｉを示す情報が格納された場合、データは自ノードのキャッシュメモリ部１０に持ち出された可能性がある。データが自ノードのキャッシュメモリ部１０に持ち出されたか否かは、システムコントローラ２００により判別されるため、符号Ｉを示す情報がＥＳＩ領域に保持される場合にも、ＣＮＯ領域にはプロセッサ番号が格納されない。なお、自ノードのキャッシュメモリ部１０のみにデータが持ち出された場合、符号Ｉを示す情報とともに、ＣＮＯ領域に自ノードのプロセッサ番号が格納されてもよい。この場合、自ノードのキャッシュメモリ部１０のみにデータが持ち出されたか否かを、ディレクトリ情報に基づいて判定することができる。
【０１１１】
符号Ｅ（Ｅｘｃｌｕｓｉｖｅ）は、データが他ノードのいずれかのキャッシュメモリ部１０のみに持ち出されたことを示す。符号Ｓ（Ｓｈａｒｅｄ）は、データが複数のノードのキャッシュメモリ部１０に持ち出されたことを示す。
【０１１２】
ノードＮＤ１のキャッシュメモリ部１０のディレクトリ領域から、次のことが分かる。アドレスＡ０のデータＤＤ０、ＤＣ０およびアドレスＡ１のデータＤＤ１、ＤＣ１は、ノードＮＤ１のキャッシュメモリ部１０のみに持ち出された可能性がある。なお、図６に示す例では、アドレスＡ０のデータＤＤ０、ＤＣ０およびアドレスＡ１のデータＤＤ１、ＤＣ１は、ノードＮＤ１のキャッシュメモリ部１０のみに持ち出されている。
【０１１３】
アドレスＡ２のデータＤＤ２、ＤＣ２およびアドレスＡ３のデータＤＤ３、ＤＣ３は、ノードＮＤ２のキャッシュメモリ部１０のみに持ち出されている。アドレスＡ４のデータＤＤ４、ＤＣ４は、ノードＮＤ１、ＮＤ２のキャッシュメモリ部１０に持ち出されている。また、ノードＮＤ２のキャッシュメモリ部１０のディレクトリ領域から、アドレスＢ０のデータＤＤ５、ＤＣ５は、ノードＮＤ１、ＮＤ２のキャッシュメモリ部１０に持ち出されたことが分かる。
【０１１４】
各キャッシュメモリ部１０は、１２８バイトのデータを記憶するデータ領域と、データ領域に対応するタグ領域とを含む複数のエントリを有する。タグ領域は、アドレスを記憶するＡＤ領域と、キャッシュステータスを記憶するＭＥＳＩ領域とを有する。なお、セットアソシアティブ方式のキャッシュメモリ部１０では、ＡＤ領域には、アドレスの上位ビット群が格納されるが、図６では、説明を分かりやすくするために、ＡＤ領域に記憶装置３００のアドレスが格納されるとする。ＭＥＳＩ領域には、Ｍ状態、Ｅ状態、Ｓ状態またはＩ状態を示す情報が格納される。
【０１１５】
ノードＮＤ１のキャッシュメモリ部１０のタグ領域から、次のことが分かる。アドレスＡ０のデータＤＤ０、ＤＣ０は、ノードＮＤ１のキャッシュメモリ部１０のみが保持する（Ｅ状態）。アドレスＡ１のデータＤＤ１’は、ノードＮＤ１の記憶装置３００に記憶されているデータＤＤ１に対して更新されており、データＤＤ１’、ＤＣ１は、ノードＮＤ１のキャッシュメモリ部１０のみが保持する（Ｍ状態）。
【０１１６】
ノードＮＤ１のキャッシュメモリ部１０が保持するアドレスＢ０のデータＤＤ５、ＤＣ５およびアドレスＡ４のデータＤＤ４、ＤＣ４は、他ノードＮＤ２のキャッシュメモリ部１０と共有されている（Ｓ状態）。なお、ノードＮＤ１は、アドレスＢ０のＤＭＡデータＤＤ５の書き替えを許可されていない。
【０１１７】
ノードＮＤ２のキャッシュメモリ部１０のタグ領域から、次のことが分かる。アドレスＡ２のデータＤＤ２、ＤＣ２は、ノードＮＤ２のキャッシュメモリ部１０のみが保持する（Ｅ状態）。アドレスＡ３のデータＤＤ３、ＤＣ３’は、ノードＮＤ２のキャッシュメモリ部１０のみが保持し、ＣＰＵデータＤＣ３’はノードＮＤ１の記憶装置３００に記憶されているＣＰＵデータＤＣ３に対して更新されている（Ｍ状態）。アドレスＢ０のデータＤＤ５、ＤＣ５およびアドレスＡ４のデータＤＤ４、ＤＣ４は、他ノードＮＤ１のキャッシュメモリ部１０と共有されている（Ｓ状態）。なお、ノードＮＤ２は、アドレスＡ２のＤＭＡデータＤＤ２、アドレスＡ３のＤＭＡデータＤＤ３およびアドレスＡ４のＤＭＡデータＤＤ４の書き替えを許可されていない。
【０１１８】
システムコントローラ２００は、メモリアクセス要求に基づいてデータとともに記憶装置３００から読み出されるディレクトリ情報が”Ｓ”または”Ｅ”を含む場合、データが他ノードに持ち出されたと判定する。例えば、ノードＮＤ１のシステムコントローラ２００は、アドレスＡ２に対する共有型または排他型のメモリアクセス要求により記憶装置３００から読み出されるディレクトリ情報に基づいて、データがノードＮＤ２のプロセッサ１００に持ち出されたと判定する。そして、ノードＮＤ１のシステムコントローラ２００は、ノードＮＤ２のプロセッサ１００に、アドレスＡ２に対するデータの返送要求を発行する。返送要求を受けたノードＮＤ２のプロセッサ１００は、データを更新していないため（Ｅ状態）、キャッシュメモリ部１０からデータを追い出し、データを追い出したことを示す情報を含む応答をノードＮＤ１のシステムコントローラ２００に発行する。
【０１１９】
なお、アドレスＡ２に対する共有型のメモリアクセス要求が発行された場合、ノードＮＤ２のプロセッサ１００は、データを追い出さずに、キャッシュステータスをＳ状態に変更し、データを共有することを示す情報を含む応答をノードＮＤ１に発行してもよい。この場合、ノードＮＤ１のシステムコントローラ２００は、記憶装置３００のアドレスＡ２のＥＳＩ領域（ディレクトリ情報）をＥ状態からＳ状態に書き替える。
【０１２０】
また、ノードＮＤ１のシステムコントローラ２００は、アドレスＡ３に対する共有型または排他型のメモリアクセス要求により記憶装置３００から読み出されるディレクトリ情報に基づいて、データがノードＮＤ２のプロセッサ１００に持ち出されたと判定する。そして、ノードＮＤ１のシステムコントローラ２００は、ノードＮＤ２のプロセッサ１００に、アドレスＡ３に対するデータの返送要求を発行する。返送要求を受けたノードＮＤ２のプロセッサ１００は、キャッシュメモリ部１０内でデータを更新しているため（Ｍ状態）、キャッシュメモリ部１０からデータを追い出し、追い出したデータを含む応答をノードＮＤ１のシステムコントローラ２００に発行する。
【０１２１】
さらに、ノードＮＤ１のシステムコントローラ２００は、アドレスＡ４に対する排他型のメモリアクセス要求を受けた場合、ディレクトリ情報に基づいて、データがノードＮＤ２のプロセッサ１００に持ち出されたと判定する。そして、ノードＮＤ１のシステムコントローラ２００は、ノードＮＤ２のプロセッサ１００に、アドレスＡ４に対するデータの返送要求を発行する。返送要求を受けたノードＮＤ２のプロセッサ１００はデータを更新していないため（Ｓ状態）、キャッシュメモリ部１０からデータを追い出し、データを追い出したことを示す情報を含む応答をノードＮＤ１のシステムコントローラ２００に発行する。なお、ノードＮＤ１のシステムコントローラ２００は、アドレスＡ４に対する共有型のメモリアクセス要求を受けた場合、アドレスＡ４に対するデータの返送要求の発行を抑止する。すなわち、共有型のメモリアクセス要求に対するディレクトリ情報がＳ状態を示す場合、データは他ノードに持ち出されていないと判定される。
【０１２２】
一方、ノードＮＤ１のシステムコントローラ２００は、アドレスＡ１に対する排他型または共有型のメモリアクセス要求をノードＮＤ２のプロセッサ１００から受けた場合、ディレクトリ情報に基づいて、次のように判定する。すなわち、ノードＮＤ１のシステムコントローラ２００は、データが自ノードのキャッシュメモリ部１０に持ち出されたと判定する。そして、ノードＮＤ１のシステムコントローラ２００は、自ノードのキャッシュメモリ制御部１２に、アドレスＡ１に対するデータの返送要求を発行する。返送要求を受けたキャッシュメモリ制御部１２は、データを更新しているため（Ｍ状態）、キャッシュメモリ部１０からデータを追い出し、追い出したデータを含む応答をノードＮＤ２のシステムコントローラ２００に発行する。そして、ノードＮＤ１のシステムコントローラ２００は、ノードＮＤ１のキャッシュメモリ部１０から返送されたデータを記憶装置３００に書き込む。また、ノードＮＤ１のシステムコントローラ２００は、記憶装置３００のアドレスＡ１のＥＳＩ領域（ディレクトリ情報）をＩ状態からＥ状態に書き替え、ＣＮＯ領域に”２”を格納する。
【０１２３】
ノードＮＤ１のシステムコントローラ２００は、アドレスＡ０に対する共有型のメモリアクセス要求をノードＮＤ２のプロセッサ１００から受けた場合、Ｅ状態のデータをプロセッサ１００から追い出させることなく応答として発行する。そして、ノードＮＤ１のシステムコントローラ２００は、タグ領域のキャッシュステータスをＥ状態からＳ状態に変更する。この場合、ノードＮＤ１のシステムコントローラ２００は、データを共有することを示す情報を含む応答をノードＮＤ２のプロセッサ１００に発行する。また、ノードＮＤ１のシステムコントローラ２００は、記憶装置３００のアドレスＡ０のＥＳＩ領域（ディレクトリ情報）をＩ状態からＳ状態に書き替え、ＣＮＯ領域に”１、２”を格納する。
【０１２４】
ノードＮＤ２のシステムコントローラ２００は、アドレスＢ０に対する排他型のメモリアクセス要求を受けた場合、ディレクトリ情報に基づいて、データがノードＮＤ１のプロセッサ１００に持ち出されたと判定する。そして、ノードＮＤ２のシステムコントローラ２００は、ノードＮＤ１のプロセッサ１００に、アドレスＢ０に対するデータの返送要求を発行する。アドレス変換要求を受けたノードＮＤ１のプロセッサ１００は、データを更新していないため（Ｓ状態）、キャッシュメモリ部１０からデータを追い出し、データを追い出したことを示す情報を含む応答をノードＮＤ２のシステムコントローラ２００に発行する。なお、データが更新されている場合、追い出したデータをノードＮＤ２のシステムコントローラ２００に応答として発行する。
【０１２５】
図７は、図４に示すプロセッサ１００が記憶装置３００にアクセスする前に実行する前処理の一例を示す。すなわち、図７は、情報処理装置ＩＰＥ２の制御方法の一例を示す。図７に示す動作は、プロセッサ１００が実行するプログラムにより実行される。前処理のプログラムは、図４に示す情報処理装置ＩＰＥ２が実行するアプリケーションプログラムに含まれてもよい。
【０１２６】
まず、ステップＳ１０において、プロセッサ１００は、記憶装置３００のアクセスをＤＭＡ転送により実行する場合、処理をステップＳ１２に移行し、記憶装置３００のアクセスをメモリアクセス処理により実行する場合、処理をステップＳ２２に移行する。なお、プロセッサ１００が実行するプログラムでは、記憶装置３００のアクセスを、ＤＭＡ転送により実行するかメモリアクセス処理により実行するかは、予め決められている場合が多い。この場合、プロセッサ１００は、ステップＳ１０の処理を省略し、ＤＭＡ転送を実行する場合にステップＳ１２からＳ２０の処理を実行し、メモリアクセス処理を実行する場合にステップＳ２２の処理を実行してもよい。
【０１２７】
ステップＳ１２において、プロセッサ１００は、ＤＭＡ転送が、記憶装置３００から入出力装置４００にデータを読み出す読み出しＤＭＡ転送の場合、処理をステップＳ１４に移行する。プロセッサ１００は、ＤＭＡ転送が、入出力装置４００から記憶装置３００にデータを書き込む書き込みＤＭＡ転送の場合、処理をステップＳ１８に移行する。
【０１２８】
ステップＳ１４において、プロセッサ１００は、読み出しＤＭＡ転送により記憶装置３００から読み出すデータを持ち出しているノードからデータを返送させる返送指示をシステムコントローラ２００に発行し、処理をステップＳ１６に移行する。なお、返送指示を受信したシステムコントローラ２００は、データを持ち出している持ち出しノードを検出し、持ち出しノードからデータを返送させ、返送させたデータを記憶装置３００に書き込む。持ち出しノードからデータを返送させる処理の例は、図９に示される。
【０１２９】
ステップＳ１６において、プロセッサ１００は、持ち出しノードからデータが返送された場合、処理をステップＳ１８に移行し、持ち出しノードからデータが返送されない場合、処理をステップＳ２０に移行する。
【０１３０】
ステップＳ１８において、プロセッサ１００は、データ転送要求（読み出しデータ転送要求または書き込みデータ転送要求）を入出力装置４００に発行し、処理を終了する。データ転送要求を受信したシステムコントローラ２００が実行する処理の例は、図８に示される。プロセッサ１００は、読み出しデータ転送要求を発行する前に、返送指示をシステムコントローラ２００に発行し、持ち出しノードから記憶装置３００にデータを書き戻す処理をシステムコントローラ２００に実行させる。これにより、ＤＭＡ転送により記憶装置３００から読み出されるデータを最新の状態に設定することができる。この結果、その後のＤＭＡ転送において、最新のデータを入出力装置４００に転送する可能性を、ステップＳ１４を実行しない場合に比べて高くすることができる。
【０１３１】
一方、データが返送されない場合、ステップＳ２０において、プロセッサ１００は、エラー処理を実行し、処理を終了する。エラー処理の例は、図１０で説明される。
【０１３２】
メモリアクセス処理により記憶装置３００にアクセスする場合、ステップＳ２２において、プロセッサ１００は、メモリアクセス要求をシステムコントローラ２００に発行し、処理を終了する。
【０１３３】
図８は、図４に示すシステムコントローラ２００の動作の一例を示す。すなわち、図８は、情報処理装置ＩＰＥ２の制御方法の一例を示す。図８に示す動作は、システムコントローラ２００のハードウェアにより実行され、あるいは、システムコントローラ２００に搭載されるＣＰＵ等のプロセッサが実行するプログラムにより実行される。図８に示す動作は、入出力装置４００から発行されるデータ転送要求を受信したことに基づいて開始され、あるいは、プロセッサ１００から発行されるメモリアクセス要求を受信したことに基づいて開始される。
【０１３４】
まず、ステップＳ３０において、システムコントローラ２００は、記憶装置３００に読み出し要求を発行し、記憶装置３００からデータとディレクトリ情報とを読み出す。ここで、データとディレクトリ情報とが読み出される記憶装置３００の記憶領域は、データ転送要求またはメモリアクセス要求によりアクセスされるアクセス対象の記憶領域である。
【０１３５】
次に、ステップＳ３２において、システムコントローラ２００は、エラー検出訂正部４２を用いて、記憶装置３００から読み出したデータおよびディレクトリ情報のエラーを検出し、訂正可能なエラーを訂正する。そして、システムコントローラ２００は、訂正が困難なエラーを検出した場合、処理をステップＳ４６に移行し、エラーがない場合またはエラーが訂正可能な場合、処理をステップＳ３４に移行する。この例では、訂正が困難なエラーは、２ビットエラーである。
【０１３６】
ステップＳ３４において、システムコントローラ２００は、エラー検出訂正部４２を用いて、記憶装置３００から読み出したディレクトリ情報にエラー情報が書き込まれているか否かを検出する。システムコントローラ２００は、エラーがある場合（ディレクトリエラー）、処理をステップＳ４６に移行し、エラーがない場合、処理をステップＳ３６に移行する。
【０１３７】
ステップＳ３６において、システムコントローラ２００は、記憶装置３００から読み出したディレクトリ情報に基づいて、アクセス対象のデータを持ち出しているノードが存在するか否かを判定する。システムコントローラ２００は、データが持ち出された場合、処理をステップＳ３８に移行し、データが持ち出されていない場合、処理をステップＳ５４に移行する。
【０１３８】
ステップＳ３８において、システムコントローラ２００は、データを持ち出したノードに返送要求または無効化要求（すなわち、コヒーレンシ制御要求）を発行し、処理をステップＳ４０に移行する。
【０１３９】
ステップＳ４０において、システムコントローラ２００は、コヒーレンシ制御要求に対応する持ち出しノードから応答でエラーが発生した場合、処理をステップＳ４４に移行し、持ち出しノードから正常な応答を受信した場合、処理をステップＳ４２に移行する。ここで、持ち出しノードからの応答において発生するエラーは、持ち出しノードから応答が返送されないエラー（タイマ４４によるタイムアウトエラー）である。または、持ち出しノードからの応答において発生するエラーは、データを持ち出していないことを示す持ち出しノードからのエラー応答（エラー検出訂正部４２によるディレクトリ矛盾エラーの検出）である。
【０１４０】
ステップＳ４２において、システムコントローラ２００は、データの返送要求に対応して返送データを含む応答を持ち出しノードから受信した場合、返送データをデータバッファ３８に格納し、処理をステップＳ５４に移行する。なお、ステップＳ３８において、持ち出しノードのキャッシュメモリ部１０に対する無効化要求が発行された場合、ステップＳ４２の処理は省略される。
【０１４１】
一方、ステップＳ４４において、システムコントローラ２００は、持ち出しノードからの応答において発生したエラーを示すエラーマークを、ディレクトリバッファ４０におけるＥＡ領域（図６）に対応する領域に格納する。ここで、持ち出しノードからの応答において発生したエラーは、タイムアウトエラーまたはディレクトリ矛盾エラーである。この後、処理はステップＳ４６に移行される。
【０１４２】
ステップＳ４６において、システムコントローラ２００は、データ転送要求に基づいてＤＭＡ転送処理を実行する場合、処理をステップＳ４８に移行し、メモリアクセス要求に基づいてメモリアクセス処理を実行する場合、処理をステップＳ５４に移行する。ＤＭＡ転送処理が実行されるか否かは、図５に示す入出力アクセス判定部５０により判定される。なお、ステップＳ４６は、２ビットエラー、ディレクトリエラー、ディレクトリ矛盾エラーまたはタイムアウトエラーのいずれかが発生した場合に実行される。
【０１４３】
ステップＳ４８において、システムコントローラ２００は、ステップＳ３２で訂正が困難なエラー（この例では、２ビットエラー）を検出した場合、処理をステップＳ５２に移行し、訂正が困難なエラーを検出していない場合、処理をステップＳ５０に移行する。
【０１４４】
ステップＳ５０において、システムコントローラ２００は、図５に示す応答切り替え制御部５２を用いて、切り替え情報ＳＷＩを論理０に設定し、処理をステップＳ５４に移行する。切り替え情報ＳＷＩを論理０に設定することで、後述するステップＳ５８において、図５で説明したように、データ転送要求に基づくエラー応答の代わりに正常応答が生成される。ステップＳ５２において、システムコントローラ２００は、図５に示す応答切り替え制御部５２を用いて、切り替え情報ＳＷＩを論理１に設定し、処理をステップＳ５６に移行する。
【０１４５】
ステップＳ５４において、システムコントローラ２００は、記憶装置３００に書き込みコマンドを発行し、記憶装置３００に記憶されたデータとディレクトリ情報とを更新する。次に、ステップＳ５６において、システムコントローラ２００は、ＤＭＡ転送処理またはメモリアクセス処理で使用した要求処理エントリ３２を開放する。次に、ステップＳ５８において、システムコントローラ２００は、図５に示す応答生成部５４を用いて、データ転送要求を発行した入出力装置４００またはメモリアクセス要求を発行したプロセッサ１００に応答を発行し、処理を終了する。
【０１４６】
図９は、図７に示す前処理において、持ち出しノードからデータを返送する処理の一例を示す。図３と同様の処理については、詳細な説明は省略する。図７で説明したように、持ち出しノードからのデータの返送は、読み出しＤＭＡ転送を実行する場合に実行される。なお、読み出しＤＭＡ転送されるデータは、図９に示す前処理を開始する前に、プロセッサ１００から記憶装置３００に書き込まれている。また、プロセッサ１００による処理は、例えば、プロセッサ１００が実行するアプリケーションプログラムにより実現される。
【０１４７】
まず、プロセッサ１００は、持ち出しノードから記憶装置３００にデータを返送する返送指示をシステムコントローラ２００に発行する（図９（ａ））。システムコントローラ２００は、記憶装置３００に読み出しメモリアクセス要求を発行し、記憶装置３００からディレクトリ情報を読み出し、持ち出しノードの有無を検出する（図９（ｂ））。そして、持ち出しノードの存在を検出した場合、システムコントローラ２００は、持ち出しノードにデータの返送要求を発行し、持ち出しノードから返送データを受信する（図９（ｃ））。持ち出しノードからのデータの返送は、持ち出したデータの容量に応じた回数だけ繰り返し実行される。
【０１４８】
システムコントローラ２００は、持ち出しノードからの応答に含まれる返送データと持ち出しノードがなくなったことを示すディレクトリ情報とともに、書き込みメモリアクセス要求を記憶装置３００に発行し、ディレクトリ情報を更新する（図９（ｄ））。
【０１４９】
この後、システムコントローラ２００は、レジスタ等に設定された返送ステータスを”完了状態”に設定する（図９（ｅ））。プロセッサ１００は、返送指示の発行後、返送ステータスをポーリングし、返送ステータスの”完了状態”を完了応答と見なし、返送指示の処理を完了する（図９（ｆ））。
【０１５０】
図１０は、図７に示す前処理において、データの返送が失敗した場合のエラー処理の一例を示す。図３および図９と同様の処理については、詳細な説明は省略する。
【０１５１】
システムコントローラ２００が返送要求を発行するまでの処理は、図９と同じである。図１０に示す例では、通信経路の一時的な故障等により、返送要求に対応する応答が持ち出しノードからシステムコントローラ２００に届かない（図１０（ａ））。システムコントローラ２００は、タイマ４４によりタイムアウトを検出した後、書き込みメモリアクセス要求を記憶装置３００に発行し、タイムアウトを示すエラーマークを含むディレクトリ情報を記憶装置３００に書き込む（図１０（ｂ））。
【０１５２】
この後、システムコントローラ２００は、レジスタ等に設定された返送ステータスを”エラー状態”に設定する（図１０（ｃ））。プロセッサ１００は、返送指示の発行後、返送ステータスをポーリングし、返送ステータスの”エラー状態”をエラー応答と見なす。プロセッサ１００は、持ち出しノードからのデータの返送処理をリトライするために返送指示を再発行する（図１０（ｄ））。なお、リトライは、読み出しＤＭＡ転送されるデータを記憶装置３００に書き込む処理から実行される。また、所定の回数のリトライが実行されても持ち出しノードからデータが返送されない場合、プロセッサ１００は、管理装置等の上位の装置にエラーの発生を通知し、前処理を終了する。
【０１５３】
図１１は、図４に示す情報処理装置ＩＰＥ２が実行する書き込みＤＭＡ転送の一例を示す。すなわち、図１１は、情報処理装置ＩＰＥ２の制御方法の一例を示す。図２と同様の処理については、詳細な説明は省略する。なお、図１１は、ＤＭＡ転送が正常に実行される例を示す。
【０１５４】
まず、プロセッサ１００は、書き込みＤＭＡ転送を入出力装置４００に実行させるための転送指示を入出力装置４００に発行する（図１１（ａ））。入出力装置４００は、転送指示の受信に基づいて、書き込みデータとともに書き込みデータ転送要求をシステムコントローラ２００に発行する（図１１（ｂ））。例えば、書き込みデータ転送要求とともに受信する書き込みデータのサイズは、キャッシュメモリ部１０の１つのキャッシュラインのデータ領域のサイズに等しい。
【０１５５】
システムコントローラ２００は、記憶装置３００に読み出しメモリアクセス要求を発行し、記憶装置３００から読み出されるディレクトリ情報に基づいて、持ち出しノードの有無を検出する（図１１（ｃ））。そして、持ち出しノードの存在を検出した場合、システムコントローラ２００は、持ち出しノードにデータの無効化要求を発行し、持ち出しノードから無効化が完了したことを示す応答を受信する（図１１（ｄ））。
【０１５６】
システムコントローラ２００は、入出力装置４００からの応答を受信した後、ディレクトリ情報と入出力装置４００から受信した書き込みデータとともに、書き込みメモリアクセス要求を記憶装置３００に発行する（図１１（ｅ））。これにより、入出力装置４００から受信した書き込みデータは記憶装置３００に書き込まれ、記憶装置３００に記憶されたディレクトリ情報は、持ち出しノードが存在しない状態に更新される。そして、１つのキャッシュラインに対応するデータのＤＭＡ転送が完了する。
【０１５７】
書き込みデータ転送要求に基づいて、複数のキャッシュラインのサイズに対応するデータが転送される場合、入出力装置４００は、次の書き込みデータをシステムコントローラ２００に出力する（図１１（ｆ））。システムコントローラ２００は、記憶装置３００からディレクトリ情報を読み出し、持ち出しノードが存在する場合、データの無効化要求を発行し、持ち出しノードから無効化が完了したことを示す応答を受信する（図１１（ｇ））。そして、システムコントローラ２００は、ディレクトリ情報と入出力装置４００から受信した書き込みデータとともに、書き込みメモリアクセス要求を記憶装置３００に発行し、データのＤＭＡ転送が完了する（図１１（ｈ））。
【０１５８】
システムコントローラ２００は、図１１（ｆ）から図１１（ｈ）に示す処理を、転送するデータ量に応じた回数繰り返す。そして、入出力装置４００から記憶装置３００へのデータの転送が全て完了した後、システムコントローラ２００は、書き込みＤＭＡ転送が完了したことを示す完了応答を入出力装置４００に発行する（図１１（ｉ））。入出力装置４００は、完了応答に基づいて、書き込みＤＭＡ転送が完了したことをプロセッサ１００に通知する完了割り込みを発行する（図１１（ｊ））。そして、書き込みＤＭＡ転送の処理が完了する。
【０１５９】
なお、読み出しＤＭＡ転送の処理は、以下の点を除き、図１１に示す書き込みＤＭＡ転送の処理と同様である。すなわち、読み出しＤＭＡ転送では、入出力装置４００は、書き込みデータをシステムコントローラ２００に出力しない。システムコントローラ２００は、持ち出しノードの存在を検出した場合、持ち出しノードにデータの無効化要求またはデータの返送要求を発行する。無効化要求は、データがＳ状態で持ち出された場合に発行される。返送要求は、データがＥ状態で持ち出された場合に発行され、返送供給の応答は、返送データを含む。システムコントローラ２００は、書き込みメモリアクセス要求の発行前に、持ち出しノードの検出時に記憶装置３００から読み出したデータを、入出力装置４００に転送する。但し、持ち出しノードからデータが返送された場合、返送されたデータを入出力装置４００に転送する。そして、読み出しＤＭＡ転送が完了したことに基づいて、システムコントローラ２００は、完了応答を入出力装置４００に発行し、入出力装置４００は、完了割り込みをプロセッサ１００に発行する。
【０１６０】
図１２および図１３は、図４に示す情報処理装置ＩＰＥ２において、書き込みＤＭＡ転送が正常に実行される場合の動作の一例を示す。図１２において、プロセッサ１００内の２つの枠は、図６に示すキャッシュメモリ部１０のＤＭＡ領域とＣＰＵ領域とを示す。システムコントローラ２００内において、上側の２つの枠は、ディレクトリバッファ４０に保持されるＣＮＯ領域とＥＡ領域とを示し、下側の２つの枠は、データバッファ３８に保持されるＤＭＡ領域とＣＰＵ領域とを示す。
【０１６１】
記憶装置３００内において、上側の２つの枠は、ディレクトリ領域のＣＮＯ領域とＥＡ領域とを示し、下側の２つの枠は、データ領域のＤＭＡ領域とＣＰＵ領域とを示す。なお、説明を分かりやすくするため、データが自ノードＮＤ１のプロセッサ１００のキャッシュメモリ部１０に持ち出された場合、記憶装置３００内のＣＮＯ領域において、自ノードＮＤ１のプロセッサ１００を示すプロセッサ番号”１”が格納されるとする。網掛けで示す枠は、保持する情報が変更されたことを示す。
【０１６２】
データＤＤ０、ＤＤ０’、ＤＤ０’’等の同じ数字で示されるデータは、記憶装置３００において、同じアドレスの記憶領域に対応する。書き込みＤＭＡ転送では、図７で説明したように、書き込みＤＭＡ転送を入出力装置４００に実行させるための転送指示を入出力装置４００に発行する前に、データの書き戻し処理は実行されない。
【０１６３】
図１２の状態（Ａ）において、記憶装置３００は、ＤＭＡデータＤＤ０とＣＰＵデータＤＣ０とを保持し、入出力装置４００は、記憶装置３００に転送するＤＭＡデータＤＤ０’’を保持している。状態（Ｂ）において、ノードＮＤ２のプロセッサ１００が記憶装置３００からデータＤＤ０、ＤＣ０を持ち出し、記憶装置３００のＣＮＯ領域が”２”に更新される。
【０１６４】
状態（Ｃ）において、プロセッサ１００は、書き込みＤＭＡ転送の転送指示を入出力装置４００に発行し、入出力装置４００は、書き込みデータ転送要求ＷＤＲＱをシステムコントローラ２００に発行する。一方、ノードＮＤ２のプロセッサ１００は、ＣＰＵデータをＤＣ０からＤＣ０’に書き替える。次に、状態（Ｄ）において、システムコントローラ２００は、記憶装置３００からディレクトリ情報（ＤＩＲ）およびデータを読み出し、読み出したディレクトリ情報に基づいて、ノードＮＤ２のプロセッサ１００にデータの返送要求を発行する。なお、システムコントローラ２００は、ノードＮＤ２のプロセッサ１００にデータの無効化要求を発行してもよい。
【０１６５】
次に、図１３の状態（Ａ）において、ノードＮＤ２のプロセッサ１００は、データＤＤ０、ＤＣ０’をシステムコントローラ２００に返送する。次に、状態（Ｂ）において、システムコントローラ２００は、データＤＤ０、ＤＣ０’が返送されたことに基づいて、ＣＮＯ領域を更新する。また、入出力装置４００は、記憶装置３００に書き込むデータＤＤ０’’をシステムコントローラ２００に転送する。システムコントローラ２００は、データＤＤ０’’の受信後、読み出しデータ転送要求ＲＤＲＱに対応する正常応答を入出力装置４００に発行する。
【０１６６】
次に、状態（Ｃ）において、データＤＤ０’’をシステムコントローラ２００に転送した入出力装置４００は、書き込みＤＭＡ転送の完了を示す完了割り込みをプロセッサ１００に発行する。また、状態（Ｃ）と並行して、状態（Ｄ）において、システムコントローラ２００は、データバッファ３８に保持しているデータＤＤ０’’、ＤＣ０’およびディレクトリバッファ４０に保持しているディレクトリ情報を記憶装置３００に書き込む。
【０１６７】
そして、状態（Ｅ）において、システムコントローラ２００は、書き込みＤＭＡ転送で使用した要求処理エントリ３２を開放し、書き込みＤＭＡ転送を完了する。
【０１６８】
図１４は、図４に示す情報処理装置ＩＰＥ２において、書き込みＤＭＡ転送時にタイムアウトエラーが発生した場合の動作の一例を示す。図１４は、図１２の状態（Ｄ）に続く動作を示す。
【０１６９】
状態（Ａ）において、ノードＮＤ２のプロセッサ１００は、データＤＤ０、ＤＣ０’をシステムコントローラ２００に返送する。しかし、通信経路の一時的な故障等により、返送されたデータＤＤ０、ＤＣ０’は、システムコントローラ２００に返送されず、タイムアウトが発生する。なお、データＤＤ０、ＤＣ０’は、ノードＮＤ２自体が故障等により動作していない場合にもノードＮＤ１のシステムコントローラ２００に返送されない。状態（Ｂ）において、システムコントローラ２００は、タイムアウトの発生を示すエラーマークＥＲＲをディレクトリバッファ４０に書き込む。なお、システムコントローラ２００は、ノードＮＤ２からデータが返送されないため、ＣＮＯ領域のプロセッサ番号”２”を維持する。これに対して、ノードＮＤ２のプロセッサ１００は、データをシステムコントローラ２００に返送したため、キャッシュメモリ部１０のデータＤＤ０、ＤＣ０’を削除する。
【０１７０】
次に、状態（Ｃ）において、出力装置４００は、記憶装置３００に書き込むデータＤＤ０’’をシステムコントローラ２００に転送する。システムコントローラ２００の応答生成部５４（図５）は、タイムアウトによるエラーが発生した場合、データＤＤ０’’の受信後、書き込みデータ転送要求ＷＤＲＱに対応してエラー応答ではなく正常応答を生成する。すなわち、システムコントローラ２００は、正常応答を発行することで、書き込みＤＭＡ転送が正常に完了したことを入出力装置４００に通知する。
【０１７１】
状態（Ｄ）および状態（Ｅ）の動作は、システムコントローラ２００のディレクトリバッファ４０とデータバッファ３８とが保持する情報が異なることを除き、図１３の状態（Ｃ）および状態（Ｄ）の動作と同様である。すなわち、システムコントローラ２００のディレクトリバッファ４０は、プロセッサ番号”２”とエラーマークＥＲＲを保持し、データバッファ３８は古いデータＤＣ０を保持する。そして、状態（Ｅ）の動作の後、図１３の状態（Ｅ）と同様に、システムコントローラ２００は、書き込みＤＭＡ転送で使用した要求処理エントリ３２を開放し、読み出しＤＭＡ転送を完了する。
【０１７２】
図６で説明したように、記憶装置３００のデータ領域は、自ノードの入出力装置４００に対して入出力されるデータを記憶するＤＭＡ領域と、自ノードおよび他ノードのプロセッサ１００によりアクセスされるデータを記憶するＣＰＵ領域とを有する。このため、データが他ノードに持ち出された場合にも、ＤＭＡ領域のＤＭＡデータは、他ノードで書き換えられることはない。したがって、情報処理装置ＩＰＥ２は、システムコントローラ２００が持ち出しノードに発行したデータの返送要求またはデータの無効化要求に対応する正常な応答を受信しない場合にも、書き込みＤＭＡ転送を正常に完了することができる。
【０１７３】
図１５および図１６は、図４に示す情報処理装置ＩＰＥ２において、書き込みＤＭＡ転送時にディレクトリ矛盾エラーが発生した場合の動作の一例を示す。図１２から図１４と同一または同様の動作については、詳細な説明は省略する。
【０１７４】
図１５の状態（Ａ）は、図１２の状態（Ａ）と同様であるが、記憶装置３００のＣＮＯ領域に保持された持ち出しノードを示す情報と、実際にデータを持ち出しているノードとが一致しない。すなわち、ノードＮＤ２のプロセッサ１００は、ノードＮＤ１のデータを持ち出していないが、ディレクトリバッファ４０に保持されたプロセッサ番号は、ノードＮＤ２のプロセッサ１００がデータを持ち出していることを示す。
【０１７５】
次に、状態（Ｂ）において、図１２の状態（Ｃ）と同様に、プロセッサ１００は、書き込みＤＭＡ転送の転送指示を入出力装置４００に発行し、入出力装置４００は、書き込みデータ転送要求ＷＤＲＱをシステムコントローラ２００に発行する。次に、状態（Ｃ）において、図１２の状態（Ｄ）と同様に、システムコントローラ２００は、記憶装置３００からディレクトリ情報（ＤＩＲ）およびデータを読み出す。システムコントローラ２００は、記憶装置３００から読み出した誤ったディレクトリ情報に基づいて、ノードＮＤ２のプロセッサ１００にデータの返送要求を発行する。
【０１７６】
次に、図１６の状態（Ａ）において、ノードＮＤ２のプロセッサ１００は、データを持ち出していないため、ディレクトリ矛盾を示すエラー応答を発行する。次に、状態（Ｂ）において、エラー応答を受信したシステムコントローラ２００は、ディレクトリ矛盾の発生を示すエラーマークＥＲＲをディレクトリバッファ４０に書き込む。なお、ディレクトリ矛盾エラーが発生した場合、ノードＮＤ２は、ノードＮＤ１の記憶装置３００に記憶されたデータを持ち出していないため、システムコントローラ２００は、書き込みＤＭＡ転送を正常に実行することが可能である。
【０１７７】
次に、状態（Ｃ）において、図１４の状態（Ｃ）と同様に、入出力装置４００は、記憶装置３００に書き込むデータＤＤ０’’をシステムコントローラ２００に転送する。システムコントローラ２００は、ディレクトリ矛盾によるエラーが発生した場合、入出力装置４００からデータＤＤ０’’を受信した後、書き込みデータ転送要求ＷＤＲＱに対応してエラー応答ではなく正常応答を生成する。すなわち、システムコントローラ２００は、正常応答を発行することで、書き込みＤＭＡ転送が正常に完了したことを入出力装置４００に通知する。
【０１７８】
図１６の状態（Ｄ）および状態（Ｅ）の動作は、図１４の状態（Ｄ）および状態（Ｅ）の動作と同様である。そして、状態（Ｅ）の動作の後、図１３の状態（Ｅ）と同様に、システムコントローラ２００は、書き込みＤＭＡ転送で使用した要求処理エントリ３２を開放し、書き込みＤＭＡ転送を完了する。
【０１７９】
図１７は、図４に示す情報処理装置ＩＰＥ２において、書き込みＤＭＡ転送時にディレクトリエラーが発生した場合の動作の一例を示す。図１２から図１４と同一または同様の動作については、詳細な説明は省略する。
【０１８０】
状態（Ａ）は、記憶装置３００のディレクトリ領域がエラーマークＥＲＲを保持していることを除き、図１２の状態（Ａ）と同様である。次に、状態（Ｂ）において、図１２の状態（Ｃ）と同様に、プロセッサ１００は、書き込みＤＭＡ転送の転送指示を入出力装置４００に発行し、入出力装置４００は、書き込みデータ転送要求ＷＤＲＱをシステムコントローラ２００に発行する。次に、状態（Ｃ）において、システムコントローラ２００は、記憶装置３００からディレクトリ情報（ＤＩＲ）およびデータを読み出し、エラーマークＥＲＲ（ディレクトリエラー）を検出する。なお、図１７に示す例では、ノードＮＤ２は、ノードＮＤ１の記憶装置３００に記憶されたデータを持ち出していない。このため、ディレクトリエラーが発生した場合にも、システムコントローラ２００は、書き込みＤＭＡ転送を正常に実行することが可能である。
【０１８１】
次に、状態（Ｄ）において、図１４の状態（Ｃ）と同様に、入出力装置４００は、記憶装置３００に書き込むデータＤＤ０’’をシステムコントローラ２００に転送する。システムコントローラ２００の応答生成部５４（図５）は、ディレクトリエラーが発生した場合、入出力装置２００からデータＤＤ０’’を受信した後、書き込みデータ転送要求ＷＤＲＱに対応してエラー応答ではなく正常応答を生成する。すなわち、システムコントローラ２００は、正常応答を発行することで、書き込みＤＭＡ転送が正常に完了したことを入出力装置４００に通知する。
【０１８２】
状態（Ｅ）の動作は、図１３の状態（Ｃ）の動作と同様である。そして、状態（Ｅ）の動作の後、図１３の状態（Ｄ）および状態（Ｅ）と同様に、システムコントローラ２００は、ディレクトリ情報を記憶装置３００に書き込み、書き込みＤＭＡ転送で使用した要求処理エントリ３２を開放し、書き込みＤＭＡ転送を完了する。
【０１８３】
図１８は、図４に示す情報処理装置ＩＰＥ２において、書き込みＤＭＡ転送時に２ビットエラーが発生した場合の動作の一例を示す。図１８は、図１２の状態（Ｃ）に続く動作を示す。図１２および図１３と同一または同様の動作については、詳細な説明は省略する。
【０１８４】
状態（Ａ）において、システムコントローラ２００は、記憶装置３００からディレクトリ情報（ＤＩＲ）およびデータを読み出す。システムコントローラ２００のエラー検出訂正部４２は、記憶装置３００から読み出したデータＤＤＤが訂正が困難な２ビットエラーを含むことを検出する。２ビットエラーが検出された場合、記憶装置３００の動作は保障されず、記憶装置３００に記憶されたデータおよびディレクトリ情報の信頼性はなく、情報処理装置ＩＰＥ２による情報処理を継続することが困難である。
【０１８５】
次に、状態（Ｂ）において、システムコントローラ２００は、２ビットエラーの検出に基づいて、書き込みデータ転送要求ＷＤＲＱに対応するエラー応答ＣＡ（Completer Abort）を入出力装置４００に発行する。なお、エラー応答ＣＡは、応答生成部５４が生成してもよく、入出力制御部２６がエラー応答にＣＡ情報を付加してもよい。次に、状態（Ｃ）において、入出力装置４００は、書き込みＤＭＡ転送の実行中に回復が困難なエラー（ＣＡ）が発生したことを示すエラー報告を、転送指示の発行元であるノードＮＤ１のプロセッサ１００に発行する。また、状態（Ｄ）において、システムコントローラ２００は、書き込みＤＭＡ転送を完了することなく、書き込みＤＭＡ転送で使用した要求処理エントリ３２を開放する。
【０１８６】
このように、訂正が困難な２ビットエラーを検出した場合、エラー応答ＣＡを入出力装置４００に発行し、書き込みＤＭＡ転送を中止することで、動作が保障されない記憶装置３００にデータＤＤ０’’が書き込まれることを抑止することができる。これにより、記憶装置３００に書き込まれた後にエラーが発生してデータ値が変化したデータＤＤ０’’を用いて、プロセッサ１００がデータ処理を実行することを抑止することができ、情報処理装置ＩＰＥ２の誤動作を抑止することができる。
【０１８７】
図１９および図２０は、図４に示す情報処理装置ＩＰＥ２において、読み出しＤＭＡ転送が正常に実行される場合の動作の一例を示す。図１２および図１３と同一または同様の動作については、詳細な説明は省略する。
【０１８８】
図１９の状態（Ａ）において、ノードＮＤ１のプロセッサ１００のキャッシュメモリ部１０にＤＭＡデータＤＤ０とＣＰＵデータＤＣ０とが持ち出され、ＤＭＡデータはＤＤ０からＤＤ０’に書き替えられる。記憶装置３００が記憶するデータＤＤ０、ＤＣ０がプロセッサ１００に持ち出されたため、記憶装置３００のＣＮＯ領域に”１”が格納される。
【０１８９】
次に、状態（Ｂ）において、ノードＮＤ１のプロセッサ１００は、読み出しＤＭＡ転送を実行するためにデータの返送指示をシステムコントローラ２００に発行する。システムコントローラ２００は、記憶装置３００が保持するディレクトリ情報を参照し、ノードＮＤ１のプロセッサ１００からデータＤＤ０’、ＤＣ０を返送させ、記憶装置３００のデータ領域およびディレクトリ領域を更新する。なお、プロセッサ１００から返送されたデータＤＤ０’、ＤＣ０は、データバッファ３８に格納されることなく、メモリ制御部３０のメモリ要求キューＭＲＱＵＥを介して記憶装置３００に書き込まれる。
【０１９０】
次に、ノードＮＤ１のプロセッサ１００が読み出しＤＭＡ転送の転送指示を発行する前に、状態（Ｃ）において、ノードＮＤ２のプロセッサ１００が記憶装置３００からデータＤＤ０’、ＤＣ０を持ち出し、記憶装置３００のＣＮＯ領域が更新される。
【０１９１】
次に、状態（Ｄ）において、プロセッサ１００は、読み出しＤＭＡ転送の転送指示を入出力装置４００に発行し、入出力装置４００は、読み出しデータ転送要求ＲＤＲＱをシステムコントローラ２００に発行する。一方、ノードＮＤ２のプロセッサ１００は、ＣＰＵデータをＤＣ０からＤＣ０’に書き替える。
【０１９２】
次に、状態（Ｅ）において、図１２の状態（Ｅ）と同様に、システムコントローラ２００は、記憶装置３００から読み出したディレクトリ情報（ＤＩＲ）に基づいて、ノードＮＤ２のプロセッサ１００にデータの返送要求を発行する。
【０１９３】
次に、図２０の状態（Ａ）において、図１３の状態（Ａ）と同様に、ノードＮＤ２のプロセッサ１００は、データＤＤ０’、ＤＣ０’をシステムコントローラ２００に返送する。次に、状態（Ｂ）において、システムコントローラ２００は、データＤＤ０’、ＤＣ０’が返送されたことに基づいて、ディレクトリバッファ４０のＣＮＯ領域を更新する。また、システムコントローラ２００は、入出力装置４００にデータＤＤ０’を含む正常応答を発行することで、入出力装置４００にデータＤＤ０’を転送する。すなわち、記憶装置３００から入出力装置４００にデータＤＤ０’を転送するＤＭＡ転送が実行される。
【０１９４】
この後、状態（Ｃ）、状態（Ｄ）および状態（Ｅ）において、図１３に示す状態（Ｃ）、状態（Ｄ）および状態（Ｅ）と同様の動作が実行され、読み出しＤＭＡ転送が完了する。
【０１９５】
図２１は、図４に示す情報処理装置ＩＰＥ２において、読み出しＤＭＡ転送時にタイムアウトエラーが発生した場合の動作の一例を示す。図２１は、図１９の状態（Ｅ）に続く動作を示す。図１３、図１４および図２０と同一または同様の動作については、詳細な説明は省略する。
【０１９６】
状態（Ａ）において、ノードＮＤ２のプロセッサ１００は、データＤＤ０’、ＤＣ０’をシステムコントローラ２００に返送する。しかし、通信経路の一時的な故障等により、返送されたデータＤＤ０’、ＤＣ０’は、システムコントローラ２００に返送されず、タイムアウトが発生する。次に、状態（Ｂ）において、図１４の状態（Ｂ）と同様に、システムコントローラ２００は、タイムアウトの発生を示すエラーマークＥＲＲをディレクトリバッファ４０に書き込む。
【０１９７】
次に、状態（Ｃ）において、システムコントローラ２００の応答生成部５４（図５）は、タイムアウトによるエラーが発生した場合、読み出しデータ転送要求ＲＤＲＱに対応して、エラー応答ではなく正常応答を生成する。すなわち、システムコントローラ２００は、入出力装置４００にデータＤＤ０’を含む正常応答を発行することで、入出力装置４００にデータＤＤ０’を転送するＤＭＡ転送を実行する。
【０１９８】
状態（Ｄ）および状態（Ｅ）の動作は、システムコントローラ２００のディレクトリバッファ４０とデータバッファ３８とが保持する情報が異なることを除き、図２０の状態（Ｃ）および状態（Ｄ）の動作と同様である。すなわち、システムコントローラ２００のディレクトリバッファ４０は、プロセッサ番号”２”とエラーマークＥＲＲを保持し、データバッファ３８は古いデータＤＣ０を保持する。そして、状態（Ｅ）の動作の後、図２０の状態（Ｅ）と同様に、システムコントローラ２００は、読み出しＤＭＡ転送で使用した要求処理エントリ３２を開放し、読み出しＤＭＡ転送を完了する。
【０１９９】
図６および図１４で説明したように、他ノードが持ち出したＤＭＡ領域のＤＭＡデータは、他ノードで書き換えられることはない。このため、持ち出しノードに発行したデータの返送要求またはデータの無効化要求に対応する正常な応答を受信しない場合にも、書き込みＤＭＡ転送を正常に完了することができる。
【０２００】
図２２および図２３は、図４に示す情報処理装置ＩＰＥ２において、読み出しＤＭＡ転送時にディレクトリ矛盾エラーが発生した場合の動作の一例を示す。図１６、図１９および図２１と同一または同様の動作については、詳細な説明は省略する。
【０２０１】
図２２の状態（Ａ）は、図１９の状態（Ａ）と同じであり、ノードＮＤ１のプロセッサ１００がデータＤＤ０、ＤＣ０を持ち出し、データＤＤ０をデータＤＤ０’に書き替える。
【０２０２】
次に、状態（Ｂ）において、図１９の状態（Ｂ）と同様に、ノードＮＤ１のプロセッサ１００は、読み出しＤＭＡ転送を実行するためにデータの返送指示を発行する。システムコントローラ２００は、ノードＮＤ１のプロセッサ１００から記憶装置３００にデータＤＤ０’、ＤＣ０を返送させ、記憶装置３００のディレクトリ領域を更新する。しかしながら、記憶装置３００への書き込み時の発生したノイズ等により、記憶装置３００のＣＮＯ領域に保持された持ち出しノードを示す情報と、実際にデータを持ち出しているノードとが一致しないディレクトリ矛盾のエラーが発生する。すなわち、ノードＮＤ２のプロセッサ１００は、ノードＮＤ１のデータを持ち出していないが、ディレクトリバッファ４０に保持されたプロセッサ番号は、ノードＮＤ２のプロセッサ１００がデータを持ち出していることを示す。
【０２０３】
次に、状態（Ｃ）において、図１９の状態（Ｄ）と同様に、プロセッサ１００は、読み出しＤＭＡ転送の転送指示を入出力装置４００に発行し、入出力装置４００は、読み出しデータ転送要求ＲＤＲＱをシステムコントローラ２００に発行する。次に、状態（Ｄ）において、図１９の状態（Ｅ）と同様に、システムコントローラ２００は、記憶装置３００からディレクトリ情報（ＤＩＲ）およびデータを読み出す。そして、システムコントローラ２００は、記憶装置３００から読み出した誤ったディレクトリ情報に基づいて、ノードＮＤ２のプロセッサ１００にデータの返送要求を発行する。
【０２０４】
次に、図２３の状態（Ａ）において、図１６の状態（Ａ）と同様に、ノードＮＤ２のプロセッサ１００は、データを持ち出していないため、ディレクトリ矛盾を示すエラー応答を発行する。次に、状態（Ｂ）において、図１６の状態（Ｂ）と同様に、エラー応答を受信したシステムコントローラ２００は、ディレクトリ矛盾の発生を示すエラーマークＥＲＲをディレクトリバッファ４０に書き込む。なお、ディレクトリ矛盾エラーが発生した場合、ノードＮＤ２は、ノードＮＤ１の記憶装置３００に記憶されたデータを持ち出していないため、システムコントローラ２００は、読み出しＤＭＡ転送を正常に実行することが可能である。
【０２０５】
次に、状態（Ｃ）において、図２０の状態（Ｂ）と同様に、システムコントローラ２００の応答生成部５４（図５）は、ディレクトリ矛盾によるエラーが発生した場合、読み出しデータ転送要求ＲＤＲＱに対応して、エラー応答ではなく正常応答を生成する。すなわち、システムコントローラ２００は、入出力装置４００にデータＤＤ０’を含む正常応答を発行することで、入出力装置４００にデータＤＤ０’を転送するＤＭＡ転送を実行する。
【０２０６】
状態（Ｄ）および状態（Ｅ）の動作は、図２０の状態（Ｃ）および状態（Ｄ）の動作と同様である。そして、状態（Ｅ）の動作の後、図２０の状態（Ｅ）と同様に、システムコントローラ２００は、読み出しＤＭＡ転送で使用した要求処理エントリ３２を開放し、読み出しＤＭＡ転送を完了する。
【０２０７】
図２４および図２５は、図４に示す情報処理装置ＩＰＥ２において、読み出しＤＭＡ転送時にディレクトリエラーが発生した場合の動作の一例を示す。図１７、図１９および図２０と同一または同様の動作については、詳細な説明は省略する。
【０２０８】
まず、図２４の状態（Ａ）において、図１９の状態（Ａ）と同様に、ノードＮＤ１のプロセッサ１００がデータＤＤ０、ＤＣ０を持ち出し、データＤＤ０をデータＤＤ０’に書き替える。但し、記憶装置３００のディレクトリ領域は、エラーマークＥＲＲを保持している。
【０２０９】
次に、状態（Ｂ）において、図１９の状態（Ｂ）と同様に、ノードＮＤ１のプロセッサ１００は、読み出しＤＭＡ転送を実行するためにデータの返送指示を発行する。システムコントローラ２００は、ノードＮＤ１のプロセッサ１００から記憶装置３００にデータＤＤ０’、ＤＣ０を返送させ、記憶装置３００のディレクトリ領域を更新する。このとき、ディレクトリ領域が保持するエラーマークＥＲＲは維持される。
【０２１０】
次に、状態（Ｃ）において、図１９の状態（Ｄ）と同様に、プロセッサ１００は、読み出しＤＭＡ転送の転送指示を入出力装置４００に発行し、入出力装置４００は、読み出しデータ転送要求ＲＤＲＱをシステムコントローラ２００に発行する。次に、状態（Ｄ）において、図１７の状態（Ｄ）と同様に、システムコントローラ２００は、記憶装置３００からディレクトリ情報（ＤＩＲ）およびデータを読み出し、エラーマークＥＲＲ（ディレクトリエラー）を検出する。なお、図２４に示す例では、ノードＮＤ２は、ノードＮＤ１の記憶装置３００に記憶されたデータを持ち出していない。このため、ディレクトリエラーが発生した場合にも、システムコントローラ２００は、読み出しＤＭＡ転送を正常に実行することが可能である。
【０２１１】
次に、図２５の状態（Ａ）において、図２０の状態（Ｂ）と同様に、システムコントローラ２００の応答生成部５４（図５）は、ディレクトリエラーが発生した場合、読み出しデータ転送要求ＲＤＲＱに対応して、エラー応答ではなく正常応答を生成する。すなわち、システムコントローラ２００は、入出力装置４００にデータＤＤ０’を含む正常応答を発行することで、入出力装置４００にデータＤＤ０’を転送するＤＭＡ転送を実行する。
【０２１２】
状態（Ｂ）、状態（Ｃ）および状態（Ｄ）の動作は、図２０の状態（Ｃ）、状態（Ｄ）および状態（Ｅ）の動作と同様である。すなわち、入出力装置４００は、読み出しＤＭＡ転送の完了を示す完了割り込みをプロセッサ１００に発行する。システムコントローラ２００は、データＤＤ０’、ＤＣ０およびディレクトリ情報を記憶装置３００に書き込んだ後、読み出しＤＭＡ転送で使用した要求処理エントリ３２を開放する。
【０２１３】
図２６は、図４に示す情報処理装置ＩＰＥ２において、読み出しＤＭＡ転送時に２ビットエラーが発生した場合の動作の一例を示す。図２６は、図１９の状態（Ｄ）に続く動作を示す。図１８と同一または同様の動作については、詳細な説明は省略する。
【０２１４】
状態（Ａ）において、図１８の状態（Ａ）と同様に、システムコントローラ２００は、記憶装置３００からディレクトリ情報（ＤＩＲ）およびデータを読み出し、記憶装置３００から読み出したデータＤＤＤが訂正できない２ビットエラーを含むことを検出する。
【０２１５】
状態（Ｂ）、状態（Ｃ）および状態（Ｄ）の動作は、図１８の状態（Ｂ）、状態（Ｃ）および状態（Ｄ）の動作と同様である。すなわち、システムコントローラ２００は、２ビットエラーの検出に基づいて、読み出しデータ転送要求ＲＤＲＱに対応するエラー応答ＣＡを入出力装置４００に発行する。入出力装置４００は、読み出しＤＭＡ転送中に回復が困難なエラー（ＣＡ）が発生したことを示すエラー報告を、転送指示の発行元であるノードＮＤ１のプロセッサ１００に発行する。また、システムコントローラ２００は、読み出しＤＭＡ転送を完了することなく、読み出しＤＭＡ転送で使用した要求処理エントリ３２を開放する。
【０２１６】
このように、訂正が困難な２ビットエラーを検出した場合、エラー応答ＣＡを入出力装置４００に発行し、読み出しＤＭＡ転送を中止することで、エラーが発生したデータＤＤＤが記憶装置３００から入出力装置４００に転送されることを抑止することができる。これにより、入出力装置４００に転送されたデータＤＤＤを用いて、プロセッサ１００がデータ処理を実行することを抑止することができ、情報処理装置ＩＰＥ２の誤動作を抑止することができる。
【０２１７】
図２７は、他の情報処理装置において、書き込みＤＭＡ転送時にディレクトリ矛盾エラーが発生した場合の動作の一例を示す。図１６および図１８と同一または同様の動作については、詳細な説明は省略する。図２７では、説明を分かりやすくするために、システムコントローラを符号２００で示すが、図２７のシステムコントローラの応答発行部は、図５に示す応答発行部４８と異なり、入出力アクセス判定部５０および応答切り替え制御部５２を持たない。このため、書き込みＤＭＡ転送において、タイムアウトエラー（ＴＯＵＴ）、ディレクトリ矛盾エラー（ＤＥＲＲ）およびディレクトリエラー（ＥＭＡＲＫ）が発生した場合、応答発行部はエラー応答を発行する。
【０２１８】
まず、図１５の状態（Ａ）から状態（Ｃ）と同様の動作が実行される。次に、図２７の状態（Ａ）において、図１６の状態（Ａ）と同様に、ノードＮＤ２のプロセッサ１００は、ディレクトリ矛盾を示すエラー応答を発行する。次に、状態（Ｂ）において、図１６の状態（Ｂ）と同様に、エラー応答を受信したシステムコントローラ２００は、ディレクトリ矛盾の発生を示すエラーマークＥＲＲをディレクトリバッファ４０に書き込む。
【０２１９】
次に、状態（Ｃ）において、図１８の状態（Ｂ）と同様に、システムコントローラ２００は、ディレクトリ矛盾エラーの検出に基づいて、書き込みデータ転送要求ＷＤＲＱに対応するエラー応答ＣＡを入出力装置４００に発行する。
【０２２０】
状態（Ｄ）および状態（Ｅ）の動作は、図１８の状態（Ｃ）および状態（Ｄ）の動作と同様である。すなわち、入出力装置４００は、書き込みＤＭＡ転送中に回復が困難なエラー（ＣＡ）が発生したことを示すエラー報告を、転送指示の発行元であるノードＮＤ１のプロセッサ１００に発行する。システムコントローラ２００は、書き込みＤＭＡ転送を完了することなく、書き込みＤＭＡ転送で使用した要求処理エントリ３２を開放する。
【０２２１】
図２８は、他の情報処理装置において、読み出しＤＭＡ転送時にタイムアウトエラーが発生した場合の動作の一例を示す。図２１および図２６と同一または同様の動作については、詳細な説明は省略する。図２８では、説明を分かりやすくするために、システムコントローラを符号２００で示すが、図２８のシステムコントローラの応答発行部は、図５に示す応答発行部４８と異なり、入出力アクセス判定部５０および応答切り替え制御部５２を持たない。このため、読み出しＤＭＡ転送において、タイムアウトエラー（ＴＯＵＴ）、ディレクトリ矛盾エラー（ＤＥＲＲ）およびディレクトリエラー（ＥＭＡＲＫ）が発生した場合、応答発行部はエラー応答を発行する。
【０２２２】
まず、図１９の状態（Ａ）から状態（Ｅ）と同様の動作が実行される。次に、図２８の状態（Ａ）において、図２１の状態（Ａ）と同様に、通信経路の一時的な故障等により、ノードＮＤ２のプロセッサ１００から返送されたデータＤＤ０’、ＤＣ０’は、システムコントローラ２００に届かず、タイムアウトが発生する。
【０２２３】
次に、状態（Ｂ）において、図２１の状態（Ｂ）と同様に、システムコントローラ２００は、タイムアウトの発生を示すエラーマークＥＲＲをディレクトリバッファ４０に書き込む。次に、状態（Ｃ）において、図２６の状態（Ｂ）と同様に、システムコントローラ２００は、タイムアウトエラーの検出に基づいて、読み出しデータ転送要求ＲＤＲＱに対応するエラー応答ＣＡを入出力装置４００に発行する。
【０２２４】
状態（Ｄ）および状態（Ｅ）の動作は、図２６の状態（Ｃ）および状態（Ｄ）の動作と同様である。すなわち、入出力装置４００は、読み出しＤＭＡ転送中に回復が困難なエラー（ＣＡ）が発生したことを示すエラー報告を、転送指示の発行元であるノードＮＤ１のプロセッサ１００に発行する。システムコントローラ２００は、読み出しＤＭＡ転送を完了することなく、読み出しＤＭＡ転送で使用した要求処理エントリ３２を開放する。
【０２２５】
以上、図４から図２６に示す実施形態においても、図１から図３に示す実施形態と同様の効果を得ることができる。すなわち、ＤＭＡ転送により記憶装置３００に対して転送するデータに関係しないエラーが発生した場合に、システムコントローラ２００から入出力装置４００にエラー応答が発行されることを抑止することができる。これにより、入出力装置４００と記憶装置３００との間でデータのＤＭＡ転送が可能であるにも拘わらず、ＤＭＡ転送が失敗したと見なされ、データが転送されない不具合の発生を抑止することができる。例えば、ＤＭＡ転送の実行対象でない持ち出しノードで発生したエラーにより、ＤＭＡ転送が実行されない不具合の発生を抑止することができる。
【０２２６】
また、プロセッサ１００は、ＤＭＡ転送の実行対象でない持ち出しノードでエラーが発生した場合にも、ＤＭＡ転送の完了通知を入出力装置４００から受信する。これにより、プロセッサ１００は、ＤＭＡ転送に続く処理を実行することができ、情報処理装置ＩＰＥ２の動作が停止することを抑止することができる。すなわち、システムダウンを抑止することができる。換言すれば、記憶装置３００と入出力装置４００との間で実行されるデータ転送の対象データを持ち出したノードからの応答がない場合にも、情報処理装置ＩＰＥ２の動作が停止することを抑止することできる。
【０２２７】
また、応答生成部５４が、追い出し要求に対応する応答の受信に応じて応答切り替え制御部５２から切り替え情報ＳＷＩを受信することで、切り替え情報ＳＷＩを受信しない場合に比べて、エラー応答と正常応答との切り替えを容易に実行することができる。
【０２２８】
さらに、図４から図２６に示す実施形態では、プロセッサ１００は、読み出しデータ転送要求ＲＤＲＱを発行する前に、返送指示をシステムコントローラ２００に発行する。そして、プロセッサ１００は、持ち出しノードから記憶装置３００にデータを書き戻す処理をシステムコントローラ２００に実行させる。これにより、ＤＭＡ転送により記憶装置３００から読み出されるデータを最新の状態に設定することができる。この結果、その後のＤＭＡ転送において、最新のデータを入出力装置４００に転送する可能性を、図７に示すステップＳ１４を実行しない場合に比べて高くすることができる。
【０２２９】
記憶装置３００のデータ領域は、自ノードの入出力装置４００に対して入出力されるデータを記憶するＤＭＡ領域と、自ノードおよび他ノードのプロセッサ１００によりアクセスされるデータを記憶するＣＰＵ領域とを有する。このため、データが他ノードに持ち出された場合にも、ＤＭＡ領域のＤＭＡデータは、他ノードで書き換えられることはない。したがって、情報処理装置ＩＰＥ２は、システムコントローラ２００が持ち出しノードに発行したデータの返送要求またはデータの無効化要求に対応する正常な応答を受信しない場合にも、書き込みＤＭＡ転送および読み出しＤＭＡ転送を正常に完了することができる。
【０２３０】
書き込みＤＭＡ転送において、訂正が困難なデータのエラーを検出した場合、ＤＭＡ転送を中止することで、動作が保障されない記憶装置３００に入出力装置４００からデータが転送されることを抑止することができる。これにより、記憶装置３００に書き込まれた後にエラーが発生してデータ値が変化したデータを用いて、プロセッサ１００がデータ処理を実行することを抑止することができ、情報処理装置ＩＰＥ２の誤動作を抑止することができる。読み出しＤＭＡ転送において、訂正が困難なデータのエラーを検出した場合、ＤＭＡ転送を中止することで、エラーが発生したデータが記憶装置３００から入出力装置４００に転送されることを抑止することができる。これにより、入出力装置４００に転送されたエラーを含むデータを用いて、プロセッサ１００がデータ処理を実行することを抑止することができ、情報処理装置ＩＰＥ２の誤動作を抑止することができる。
【０２３１】
図２９は、図１から図２６に示す実施形態を適用可能な他の情報処理システムの一例を示す。図２９において、太い破線はシステム基板を示し、一点鎖線はＬＳＩ（Large Scale Integration）チップを示す。図２９に示す情報処理システムＳＹＳ１は、プロセッサと記憶装置と入出力インタフェースとを複数組含むシステム基板と、各入出力インタフェースに接続された入出力装置とを有する。プロセッサと記憶装置と入出力インタフェースと入出力装置とが、ノードに対応する。
【０２３２】
プロセッサは、図１に示す演算処理装置１または図４に示すプロセッサ１００のいずれかである。プロセッサは、キャッシュメモリ部、複数のプロセッサコア部、キャッシュメモリ制御部およびシステムコントローラを含む。すなわち、図２９に示す例では、各プロセッサは、図４と異なり、システムコントローラを内蔵する。キャッシュメモリ部は、図１に示すキャッシュメモリ部１ｃまたは図４に示すキャッシュメモリ部１０に対応し、プロセッサコア部は、図１に示す演算処理部１ａまたは図４に示すプロセッサコア部１４に対応する。キャッシュメモリ制御部は、図４に示すキャッシュメモリ制御部１２に対応し、システムコントローラは、図１に示す制御装置４または図４に示すシステムコントローラ２００に対応する。記憶装置は、例えば、メモリモジュールであり、図１に示す記憶装置２または図４に示す記憶装置３００に対応する。入出力インタフェース部および入出力装置は、図１に示す入出力装置３または図４に示す入出力装置３００に対応する。例えば、入出力インタフェース部は、ＰＣＩ（Peripheral Component Interconnect）規格のスロットに装着されるＬＡＮ（Local Area Network）カード等である。入出力装置は、ＬＡＮを介して接続されるＨＤＤまたはＳＳＤである。なお、入出力インタフェースの代わりに、入出力装置がシステム基板に直接搭載されてもよい。
【０２３３】
図３０は、図１から図２６に示す実施形態を適用可能な情報処理システムの別の例を示す。図２９に示す要素と同じ要素については、詳細な説明は省略する。図２９と同様に、太い破線はシステム基板を示し、一点鎖線はＬＳＩチップを示す。図３０に示す情報処理システムＳＹＳ２は、プロセッサとシステムコントローラと記憶装置と入出力インタフェースとを複数組含む複数のシステム基板を有する。図３０に示す要素と、図１および図４に示す要素との対応は、図２９と同様である。図３０に示す例では、システムコントローラは、図１および図４と異なり、複数のプロセッサを接続する。
【０２３４】
図３１は、図１から図２６に実施形態を適用可能な情報処理システムの別の例を示す。図３１に示す情報処理システムＳＹＳ３は、スイッチ装置ＳＷを介して複数のノードＮＤを接続したネットワークを有し、並列計算機として動作する。図３１は、軸Ｘ１および軸Ｘ２のそれぞれに４つのノードＮＤを配置したメッシュ型の２次元ネットワークの例を示すが、ネットワークの次元数、トポロジ（メッシュ、トーラス等）およびノードＮＤの数は、図３１に限定されない。各ノードＮＤは、図１に示すノードＮＤ１、ＮＤ２または図６に示すノードＮＤ１、ＮＤ２に対応する。すなわち、図３１では、図１に示す制御装置４または図４に示すシステムコントローラ２００は、スイッチ装置ＳＷを介して他のノードＮＤに接続される。
【０２３５】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０２３６】
１…演算処理装置；１ａ…演算処理部；１ｂ…キャッシュメモリ部；２…記憶装置；３…入出力装置；４…制御装置；４ａ…検出部；４ｂ…追い出し制御部；４ｃ…応答発行部；４ｄ…書き込み制御部；４ｅ…応答切り替え制御部；４ｆ…応答生成部；１０…キャッシュメモリ部；１２…キャッシュメモリ制御部；１４…複数のプロセッサコア部；２０…プロセッサインタフェース；２２…エントリ決定部；２４…制御要求発行部；２６…入出力制御部；２８…応答調停部；３０…メモリ制御部；３２…要求処理エントリ；３４…要求保持バッファ；３６…ステートマシン；３８…データバッファ；４０…ディレクトリバッファ；４２…エラー検出訂正部；４４…タイマ；４６…持ち出し先検出部；４８…応答発行部；５０…入出力アクセス判定部；５２…応答切り替え制御部；５４…応答生成部；１００…プロセッサ；２００…システムコントローラ；３００…記憶装置；４００…入出力装置；ＣＲＱＵＥ…コヒーレンシ制御要求キュー；ＤＲＱ…データ転送要求；ＩＰＥ１、ＩＰＥ２…情報処理装置；ＭＲＱ…メモリアクセス要求；ＭＲＱＵＥ…メモリ要求キュー；ＭＳＫ…マスク情報；ＮＤ１、ＮＤ２…ノード；ＳＷＩ…切り替え情報；ＴＲ…転送指示
【図１】
0006583046.tif 000002
【図２】
0006583046.tif 000003
【図３】
0006583046.tif 000004
【図４】
0006583046.tif 000005
【図５】
0006583046.tif 000006
【図６】
0006583046.tif 000007
【図７】
0006583046.tif 000008
【図８】
0006583046.tif 000009
【図９】
0006583046.tif 000010
【図１０】
0006583046.tif 000011
【図１１】
0006583046.tif 000012
【図１２】
0006583046.tif 000013
【図１３】
0006583046.tif 000014
【図１４】
0006583046.tif 000015
【図１５】
0006583046.tif 000016
【図１６】
0006583046.tif 000017
【図１７】
0006583046.tif 000018
【図１８】
0006583046.tif 000019
【図１９】
0006583046.tif 000020
【図２０】
0006583046.tif 000021
【図２１】
0006583046.tif 000022
【図２２】
0006583046.tif 000023
【図２３】
0006583046.tif 000024
【図２４】
0006583046.tif 000025
【図２５】
0006583046.tif 000026
【図２６】
0006583046.tif 000027
【図２７】
0006583046.tif 000028
【図２８】
0006583046.tif 000029
【図２９】
0006583046.tif 000030
【図３０】
0006583046.tif 000031
【図３１】
0006583046.tif 000032