(57)【特許請求の範囲】
【請求項１】
演算処理装置であって、
キャッシュデータ部と、
入出力装置が自己の演算処理装置又は他の演算処理装置のダイレクトメモリアクセス要求に応じて出力したデータを、主記憶装置を介さずに入力し、前記入力したデータをデータの内容に依らず前記ダイレクトメモリアクセス要求のアドレスに対応する前記キャッシュデータ部に書き込むキャッシュ制御部と、
前記ダイレクトメモリアクセス要求の処理が完了した後、前記ダイレクトメモリアクセス要求のアドレスの読み出し要求を出力する演算処理部と、
バッファとを有し、
前記キャッシュ制御部は、前記読み出し要求に応じて、前記キャッシュデータ部に記憶されているデータを前記演算処理部に出力し、
前記キャッシュ制御部は、前記バッファに空き領域がある場合には、前記入出力装置から入力したデータを前記バッファを介して前記キャッシュデータ部に書き込み、前記読み出し要求に応じて、前記キャッシュデータ部に記憶されているデータを前記演算処理部に出力し、
前記キャッシュ制御部は、前記バッファに空き領域がない場合には、前記入出力装置が出力したデータが前記主記憶装置に書き込まれ、前記読み出し要求に応じて、前記主記憶装置に記憶されているデータを入力し、前記入力したデータを前記キャッシュデータ部に書き込むと共に、前記入力したデータを前記演算処理部に出力することを特徴とする演算処理装置。
【請求項２】
ダイレクトメモリアクセス要求を入出力装置に出力する入出力装置制御部と、
前記ダイレクトメモリアクセス要求に応じて、前記入出力装置が出力したデータをデータの内容に依らず主記憶装置を介さずに前記ダイレクトメモリアクセス要求のアドレスに対応する演算処理装置内のキャッシュデータ部に書き込む要求を前記演算処理装置に出力し、前記演算処理装置のバッファに空き領域がある場合には、前記書き込む要求を前記演算処理装置に出力する演算処理装置制御部と、
前記演算処理装置のバッファに空き領域がない場合には、前記入出力装置が出力したデータを前記主記憶装置に書き込む要求を前記主記憶装置に出力する主記憶装置制御部と
を有することを特徴とする制御装置。
【請求項３】
前記演算処理装置制御部は、複数の演算処理装置のうちの前記ダイレクトメモリアクセス要求のアドレスのデータを前記キャッシュデータ部に記憶している演算処理装置に対して掃出し要求又は無効化要求を出力し、前記複数の演算処理装置のうちの１個の演算処理装置に前記書き込む要求を出力することを特徴とする請求項２記載の制御装置。
【請求項４】
前記演算処理装置制御部は、前記掃出し要求又は前記無効化要求を出力する前の前記演算処理装置の状態であって、前記複数の演算処理装置のうちで前記ダイレクトメモリアクセス要求のアドレスのデータを前記キャッシュデータ部に記憶している演算処理装置が１個である場合には、前記データを記憶している１個の演算処理装置に前記書き込む要求を出力することを特徴とする請求項３記載の制御装置。
【請求項５】
前記演算処理装置制御部は、前記掃出し要求又は前記無効化要求を出力する前の前記演算処理装置の状態であって、前記複数の演算処理装置のうちで前記ダイレクトメモリアクセス要求のアドレスのデータを前記キャッシュデータ部に記憶している演算処理装置が複数ある場合には、前記データを記憶している複数の演算処理装置のうちの１個の演算処理装置をラウンドロビンで選択し、前記選択した１個の演算処理装置に前記書き込む要求を出力することを特徴とする請求項３又は４記載の制御装置。
【請求項６】
前記演算処理装置制御部は、前記掃出し要求又は前記無効化要求を出力する前の前記演算処理装置の状態であって、前記複数の演算処理装置のうちで前記ダイレクトメモリアクセス要求のアドレスのデータを前記キャッシュデータ部に記憶している演算処理装置がない場合には、前記複数の演算処理装置のうちの１個の演算処理装置をラウンドロビンで選択し、前記選択した１個の演算処理装置に前記書き込む要求を出力することを特徴とする請求項３〜５のいずれか１項に記載の制御装置。
【請求項７】
演算処理装置と、
制御装置と、
主記憶装置と、
入出力装置とを有し、
前記演算処理装置は、キャッシュデータ部を有し、
前記制御装置は、
ダイレクトメモリアクセス要求を前記入出力装置に出力する入出力装置制御部と、
前記ダイレクトメモリアクセス要求に応じて、前記入出力装置が出力したデータをデータの内容に依らず前記主記憶装置を介さずに前記ダイレクトメモリアクセス要求のアドレスに対応する前記演算処理装置内の前記キャッシュデータ部に書き込む要求を前記演算処理装置に出力し、前記演算処理装置のバッファに空き領域がある場合には、前記書き込む要求を前記演算処理装置に出力する演算処理装置制御部と、
前記演算処理装置のバッファに空き領域がない場合には、前記入出力装置が出力したデータを前記主記憶装置に書き込む要求を前記主記憶装置に出力する主記憶装置制御部とを有し、
前記演算処理装置は、
前記書き込む要求に応じて、前記入出力装置が出力したデータをデータの内容に依らず前記主記憶装置を介さずに前記ダイレクトメモリアクセス要求のアドレスに対応する前記キャッシュデータ部に書き込むキャッシュ制御部と、
前記ダイレクトメモリアクセス要求の処理が完了した後、前記ダイレクトメモリアクセス要求のアドレスの読み出し要求を出力する演算処理部と、
バッファとを有し、
前記キャッシュ制御部は、前記読み出し要求に応じて、前記キャッシュデータ部に記憶されているデータを前記演算処理部に出力し、
前記キャッシュ制御部は、前記バッファに空き領域がある場合には、前記入出力装置から入力したデータを前記バッファを介して前記キャッシュデータ部に書き込み、前記読み出し要求に応じて、前記キャッシュデータ部に記憶されているデータを前記演算処理部に出力し、
前記キャッシュ制御部は、前記バッファに空き領域がない場合には、前記入出力装置が出力したデータが前記主記憶装置に書き込まれ、前記読み出し要求に応じて、前記主記憶装置に記憶されているデータを入力し、前記入力したデータを前記キャッシュデータ部に書き込むと共に、前記入力したデータを前記演算処理部に出力することを特徴とする情報処理装置。
【請求項８】
演算処理装置と、制御装置と、主記憶装置と、入出力装置とを有する情報処理装置の制御方法であって、
前記制御装置が有する入出力装置制御部が、ダイレクトメモリアクセス要求を前記入出力装置に出力し、
前記制御装置が有する演算処理装置制御部が、前記ダイレクトメモリアクセス要求に応じて、前記入出力装置が出力したデータをデータの内容に依らず前記主記憶装置を介さずに前記ダイレクトメモリアクセス要求のアドレスに対応する前記演算処理装置内のキャッシュデータ部に書き込む要求を前記演算処理装置に出力し、前記演算処理装置のバッファに空き領域がある場合には、前記書き込む要求を前記演算処理装置に出力し、
前記制御装置が有する主記憶装置制御部が、前記演算処理装置のバッファに空き領域がない場合には、前記入出力装置が出力したデータを前記主記憶装置に書き込む要求を前記主記憶装置に出力し、
前記演算処理装置が有するキャッシュ制御部が、前記書き込む要求に応じて、前記入出力装置が出力したデータをデータの内容に依らず前記主記憶装置を介さずに前記ダイレクトメモリアクセス要求のアドレスに対応する前記キャッシュデータ部に書き込み、
前記演算処理装置が有する演算処理部が、前記ダイレクトメモリアクセス要求の処理が完了した後、前記ダイレクトメモリアクセス要求のアドレスの読み出し要求を出力し、
前記演算処理装置が有する前記キャッシュ制御部が、前記読み出し要求に応じて、前記キャッシュデータ部に記憶されているデータを前記演算処理部に出力し、
前記演算処理装置が有する前記キャッシュ制御部が、前記演算処理装置のバッファに空き領域がある場合には、前記入出力装置から入力したデータを前記演算処理装置のバッファを介して前記キャッシュデータ部に書き込み、前記読み出し要求に応じて、前記キャッシュデータ部に記憶されているデータを前記演算処理部に出力し、
前記演算処理装置が有する前記キャッシュ制御部が、前記演算処理装置のバッファに空き領域がない場合には、前記入出力装置が出力したデータが前記主記憶装置に書き込まれ、前記読み出し要求に応じて、前記主記憶装置に記憶されているデータを入力し、前記入力したデータを前記キャッシュデータ部に書き込むと共に、前記入力したデータを前記演算処理部に出力することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
データブロックを含む共用ディスクと、ディスクコントローラと、要求ノードと、管理ノードとを有する装置が知られている（特許文献１参照）。ディスクコントローラは、共用ディスクに結合され、データブロックを要求ノードに送ることによって管理ノードからの第２のメッセージに応答するよう構成される。要求ノードは、ディスクコントローラに結合され、要求されたデータのための第１のメッセージを送るよう構成される。要求ノードは、第１のプロセッサと、第１のプロセッサに結合される第１のバッファキャッシュとを含む。管理ノードは、ディスクコントローラ及び要求ノードに結合され、第１のメッセージを受取り、要求ノードからのロック要求を許可し、第１のメッセージに基づいて第２のメッセージをディスクコントローラに転送するよう構成される。管理ノードは、第２のプロセッサを含む。
【０００３】
また、ＣＰＵとメインメモリとの間に設置され高速のバッファメモリとして動作するキャッシュ部を備えるキャッシュメモリ装置が知られている（特許文献２参照）。キャッシュメモリ装置は、入力データに付加された属性情報が所定の属性を示す情報であるときに入力データをキャッシュ部に格納する機能を有する。
【０００４】
また、複数のプリフェッチコマンドがデータへのアクセス前且つ複数のダイレクトキャッシュアクセス（ＤＣＡ）転送後に発行されることを確実にするために幾つかのＤＣＡ転送が制限されるよう複数のプリフェッチコマンドと合わせて複数のＤＣＡ転送を使用する工程を含む方法が知られている（特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００１−５１９５６５号公報
【特許文献２】特開２００２−２７８８３４号公報
【特許文献２】特表２００８−５４１２７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ダイレクトメモリアクセスでは、入出力装置のデータが主記憶装置に書き込まれる。演算処理装置は、主記憶装置からそのデータを読み出す。しかし、演算処理装置が主記憶装置からデータを読み出す速度は比較的遅い。
【０００７】
１つの側面では、本発明の目的は、演算処理装置が入出力装置のデータを高速に読み出すことが可能になる演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法を提供することである。
【課題を解決するための手段】
【０００８】
演算処理装置は、演算処理装置であって、キャッシュデータ部と、入出力装置が自己の演算処理装置又は他の演算処理装置のダイレクトメモリアクセス要求に応じて出力したデータを、主記憶装置を介さずに入力し、前記入力したデータをデータの内容に依らず前記ダイレクトメモリアクセス要求のアドレスに対応する前記キャッシュデータ部に書き込むキャッシュ制御部と、前記ダイレクトメモリアクセス要求の処理が完了した後、前記ダイレクトメモリアクセス要求のアドレスの読み出し要求を出力する演算処理部と、バッファとを有し、前記キャッシュ制御部は、前記読み出し要求に応じて、前記キャッシュデータ部に記憶されているデータを前記演算処理部に出力し、前記キャッシュ制御部は、前記バッファに空き領域がある場合には、前記入出力装置から入力したデータを前記バッファを介して前記キャッシュデータ部に書き込み、前記読み出し要求に応じて、前記キャッシュデータ部に記憶されているデータを前記演算処理部に出力し、前記キャッシュ制御部は、前記バッファに空き領域がない場合には、前記入出力装置が出力したデータが前記主記憶装置に書き込まれ、前記読み出し要求に応じて、前記主記憶装置に記憶されているデータを入力し、前記入力したデータを前記キャッシュデータ部に書き込むと共に、前記入力したデータを前記演算処理部に出力する。
【０００９】
制御装置は、ダイレクトメモリアクセス要求を入出力装置に出力する入出力装置制御部と、前記ダイレクトメモリアクセス要求に応じて、前記入出力装置が出力したデータをデータの内容に依らず主記憶装置を介さずに前記ダイレクトメモリアクセス要求のアドレスに対応する演算処理装置内のキャッシュデータ部に書き込む要求を前記演算処理装置に出力し、前記演算処理装置のバッファに空き領域がある場合には、前記書き込む要求を前記演算処理装置に出力する演算処理装置制御部と、前記演算処理装置のバッファに空き領域がない場合には、前記入出力装置が出力したデータを前記主記憶装置に書き込む要求を前記主記憶装置に出力する主記憶装置制御部とを有する。
【発明の効果】
【００１０】
演算処理装置が入出力装置のデータを高速に読み出すことが可能になる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施形態による情報処理装置の構成例を示す図である。
【図２】図２（Ａ）〜（Ｅ）は、情報処理装置の課題を説明するための情報処理装置の制御方法を示す図である。
【図３】図３（Ａ）〜（Ｄ）は、本実施形態による情報処理装置の制御方法を示す図である。
【図４】図４は、システムコントローラの構成例を示す図である。
【図５】図５は、プロセッサの構成例を示す図である。
【図６】図６は、本実施形態による情報処理装置の制御方法を示すフローチャートである。
【図７】図７は、図６のステップＳ６０３の処理の詳細を示すフローチャートである。
【図８】図８は、図６のステップＳ６０５及びＳ６０６の処理の詳細を示すフローチャートである。
【図９】図９（Ａ）及び（Ｂ）は、図２（Ａ）〜（Ｅ）の処理を示すタイミングチャートである。
【図１０】図１０（Ａ）及び（Ｂ）は、本実施形態による図３（Ａ）〜（Ｄ）の処理を示すタイミングチャートである。
【発明を実施するための形態】
【００１２】
図１は、本実施形態による情報処理装置の構成例を示す図である。情報処理装置は、複数のプロセッサ１０１と、システムコントローラ１０２と、メモリデバイス１０３と、入出力（Ｉ／Ｏ）デバイス１０４と、他ノード１０５とを有する。図１の情報処理装置のうちの他ノード１０５以外の部分は、自ノードである。他ノード１０５は、自ノードと同様の構成を有する。メモリデバイス１０３は、データを記憶する主記憶装置である。Ｉ／Ｏデバイス１０４は、ハードディスク装置又はネットワークインタフェース等の入出力装置である。
【００１３】
プロセッサ１０１は、演算処理を行う演算処理装置である。複数のプロセッサ１０１の各々は、コア１１１及びキャッシュユニット１１２を有する。コア１１１は、ソフトウェアの命令を解釈及び実行する演算処理部である。キャッシュユニット１１２は、キャッシュデータ部１１３及びキャッシュ制御部１１４を有する。キャッシュデータ部１１３は、キャッシュデータを記憶する。例えば、キャッシュデータ部１１３はＳＲＡＭ（Static Random Access Memory）であり、メモリデバイス１０３はＤＩＭＭ（Dual Inline Memory Module）のＤＲＡＭ（Dynamic Random Access Memory）である。キャッシュデータ部１１３は、メモリデバイス１０３に比べて高速にアクセスが可能である。キャッシュデータ部１１３は、メモリデバイス１０３のデータの一部を格納可能である。コア１１１は、必要なデータがキャッシュデータ部１１３に存在する場合（キャッシュヒット）には、メモリデバイス１０３までアクセスせずにキャッシュデータ部１１３からデータを読み出すことにより、データのアクセスを高速化する。
【００１４】
キャッシュ制御部１１４は、キャッシュデータ部１１３を管理し、キャッシュデータ部１１３にデータが存在しなかった場合にメモリアクセス要求を出力する。キャッシュ制御部１１４は、Ｉ／Ｏキャッシュ登録部１１５を有する。Ｉ／Ｏキャッシュ登録部１１５は、システムコントローラ１０２からＩ／Ｏキャッシュ登録要求を入力し、キャッシュ登録用資源を確保し、システムコントローラ１０２からダイレクトメモリアクセス（ＤＭＡ）書き込みデータを入力した後に、そのデータをキャッシュデータ部１１３に登録する（書き込む）。
【００１５】
システムコントローラ１０２は、プロセッサインタフェース１２１と、コヒーレンシ制御部１２２と、コヒーレンシリクエスト格納部１２３と、メモリリクエスト制御部１２４と、Ｉ／Ｏ制御部１２５とを有する。プロセッサインタフェース１２１は、複数のプロセッサ１０１とシステムコントローラ１０２との間のインタフェースである。メモリリクエスト制御部１２４は、主記憶装置制御部であり、メモリデバイス１０３に対して、読み出し要求及び書き込み要求を出力する。Ｉ／Ｏ制御部１２５は、入出力装置制御部であり、Ｉ／Ｏデバイス１０４を制御する。コヒーレンシ制御部１２２は、プロセッサ１０１を制御する演算処理装置制御部であり、具体的には、複数のプロセッサ１０１内のキャッシュデータ部１１３内のデータのコヒーレンシを保つための制御を行う。コヒーレンシリクエスト格納部１２３は、他ノード１０５に対するキャッシュデータ部１１３の掃出し要求及び無効化要求を一時的に格納する。コヒーレンシ制御部１２２は、Ｉ／Ｏキャッシュ指示部１２７を有する。Ｉ／Ｏキャッシュ指示部１２７は、Ｉ／Ｏデバイス１０４からＤＭＡ書き込み要求を入力した場合、プロセッサ１０１に対してＤＭＡ書き込みデータのキャッシュ登録処理を指示する。
【００１６】
図２（Ａ）〜（Ｅ）は、情報処理装置の課題を説明するための情報処理装置の制御方法を示す図である。なお、プロセッサ１０１は、複数のコア１１１を有していてもよい。まず、図２（Ａ）では、複数のコア１１１のうちのいずれか１個のコア１１１は、Ｉ／Ｏデバイス１０４のデータを読み出すため、ＤＭＡ書き込み要求をシステムコントローラ１０２を介してＩ／Ｏデバイス１０４に出力する。すると、Ｉ／Ｏデバイス１０４は、Ｉ／Ｏデバイス１０４のデータ２０１のＤＭＡ書き込み要求をシステムコントローラ１０２に出力する。すると、システムコントローラ１０２は、Ｉ／Ｏデバイス１０４のデータ２０１を、ＤＭＡ書き込み要求のアドレスに書き込む。
【００１７】
次に、図２（Ｂ）において、Ｉ／Ｏデバイス１０４は、システムコントローラ１０２からＤＭＡ書き込み要求完了通知を入力すると、ＤＭＡ書き込み要求完了の割り込みをプロセッサ１０１内のコア１１１に通知する。
【００１８】
次に、図２（Ｃ）において、コア１１１は、ＤＭＡ書き込みを行ったアドレスを指定して読み出し要求をキャッシュユニット１１２に出力する。
【００１９】
次に、図２（Ｄ）において、キャッシュユニット１１２は、読み出し要求に応じて、システムコントローラ１０２を介して、メモリデバイス１０３のＤＭＡ書き込みを行った領域からデータ２０１を読み出してキャッシュデータ部１１３に書き込む。
【００２０】
次に、図２（Ｅ）において、キャッシュユニット１１２は、読み出し要求の応答として、データ２０１を要求元のコア１１１に出力する。
【００２１】
上記のように、ＤＭＡ書き込み要求では、Ｉ／Ｏデバイス１０４のデータ２０１がメモリデバイス１０３に書き込まれる。コア１１１は、ＤＭＡ書き込み要求の完了後に、メモリデバイス１０３からデータ２０１を読み出す。しかし、メモリデバイス１０３の読み出し速度は低速なため、読み出し要求の応答までの時間が長く、その結果、Ｉ／Ｏデバイス１０４のアクセスを伴う処理速度が遅くなってしまう課題がある。この課題を解決するための実施形態を以下に説明する。
【００２２】
図３（Ａ）〜（Ｄ）は、本実施形態による情報処理装置の制御方法を示す図である。まず、図３（Ａ）では、複数のコア１１１のうちのいずれか１個のコア１１１は、Ｉ／Ｏデバイス１０４のデータを読み出すため、ＤＭＡ書き込み要求をシステムコントローラ１０２を介してＩ／Ｏデバイス１０４に出力する。すると、Ｉ／Ｏデバイス１０４は、Ｉ／Ｏデバイス１０４のデータ２０１のＤＭＡ書き込み要求をシステムコントローラ１０２に出力する。すると、システムコントローラ１０２は、Ｉ／Ｏデバイス１０４のデータ２０１を、データ２０１の内容に依らず、メモリデバイス１０３を介さずに、直接、ＤＭＡ書き込み要求のアドレスに対応するキャッシュユニット１１２内のキャッシュデータ部１１３に書き込む。
【００２３】
次に、図３（Ｂ）において、Ｉ／Ｏデバイス１０４は、システムコントローラ１０２からＤＭＡ書き込み要求完了通知を入力すると、ＤＭＡ書き込み要求完了の割り込みをプロセッサ１０１内のコア１１１に通知する。
【００２４】
次に、図３（Ｃ）において、コア１１１は、ＤＭＡ書き込みを行ったアドレスを指定して読み出し要求をキャッシュユニット１１２に出力する。
【００２５】
次に、図２（Ｄ）において、キャッシュユニット１１２は、読み出し要求に応じて、キャッシュデータ部１１３からデータ２０１を読み出して要求元のコア１１１に出力する。
【００２６】
本実施形態によれば、ＤＭＡ書き込み要求では、Ｉ／Ｏデバイス１０４のデータ２０１がキャッシュデータ部１１３に直接書き込まれる。そのため、コア１１１は、ＤＭＡ書き込み要求の完了後に、キャッシュデータ部１１３からデータ２０１を読み出すことができる。キャッシュデータ部１１３の読み出し速度は、メモリデバイス１０３の読み出し速度に比べて高速である。そのため、コア１１１の読み出し要求の応答までの時間が短くなり、その結果、Ｉ／Ｏデバイス１０４のアクセスを伴う処理速度を高速化することができる。
【００２７】
また、本実施形態では、Ｉ／Ｏデバイス１０４のデータ２０１は、データ２０１の内容に依らず、またソフトウェアの設定や指示なく、ハードウェア自律で、メモリデバイス１０３を介さずに、キャッシュデータ部１１３に書き込まれる。このため、本実施形態では、Ｉ／Ｏデバイス１０４のドライバやソフトウェアの修正、及びＩ／Ｏデバイス１０４の対応等を行わずに上記の効果を得ることができる。
【００２８】
図４は、システムコントローラ１０２の構成例を示す図である。システムコントローラ１０２は、プロセッサインタフェース１２１と、コヒーレンシ制御部１２２と、コヒーレンシリクエスト格納部１２３と、メモリリクエスト制御部１２４と、Ｉ／Ｏ制御部１２５とを有する。コヒーレンシ制御部１２２は、キャッシュ要求格納部４０１と、Ｉ／Ｏ要求格納部４０２と、キャッシュタグ更新要求格納部４０３と、要求調停部４０４と、コヒーレンシ制御パイプライン４０５と、ホームリクエスト処理部４０６と、キャッシュタグ部４０７とを有する。コヒーレンシ制御パイプライン４０５は、Ｉ／Ｏキャッシュ指示部１２７を有する。Ｉ／Ｏキャッシュ指示部１２７は、登録プロセッサ決定回路４０８を有する。
【００２９】
プロセッサインタフェース１２１は、複数のプロセッサ１０１からメモリアクセス要求を入力し、それをキャッシュ要求格納部４０１に転送する。また、プロセッサインタフェース１２１は、コヒーレンシ制御パイプライン４０５から出力されるＩ／Ｏキャッシュ登録要求や、ホームリクエスト処理部４０６から出力される応答データを対象のプロセッサ１０１に転送する。
【００３０】
コヒーレンシ制御部１２２は、複数のプロセッサ１０１内のキャッシュデータ部１１３のコヒーレンシを保つための制御を行う。
【００３１】
メモリリクエスト制御部１２４は、コヒーレンシ制御部１２２から出力されるメモリアクセス要求をキューに格納し、メモリアクセス要求を順にメモリデバイス１０３に対して出力する。
【００３２】
Ｉ／Ｏ制御部１２５は、Ｉ／Ｏデバイス１０４からＤＭＡアクセス要求（ＤＭＡ書き込み要求）を入力すると、それをＩ／Ｏ要求格納部４０２に転送する。また、Ｉ／Ｏ制御部１２５は、そのＤＭＡアクセス要求に対してＩ／Ｏ要求格納部４０２から応答を受けると、その応答をＩ／Ｏデバイス１０４に対して出力する。
【００３３】
コヒーレンシリクエスト格納部１２３は、ホームリクエスト処理部４０６が出力するキャッシュ掃出し要求又は無効化要求をキューに格納し、それを順に他ノード１０５へ出力する。
【００３４】
キャッシュ要求格納部４０１は、プロセッサインタフェース１２１を介してプロセッサ１０１から入力したメモリアクセス要求をキューに格納し、キューに格納されたメモリアクセス要求を順に要求調停部４０４に出力し、調停参加する。
【００３５】
Ｉ／Ｏ要求格納部４０２は、Ｉ／Ｏ制御部１２５から入力したＤＭＡアクセス要求をキューに格納し、キューに格納されたＤＭＡアクセス要求を順に要求調停部４０４に出力し、調停参加する。さらに、Ｉ／Ｏ要求格納部４０２は、要求調停部４０４に発行したＤＭＡアクセス要求に対するホームリクエスト処理部４０６からのＤＭＡ処理完了通知を待ち、ＤＭＡ処理完了通知を入力すると、Ｉ／Ｏ制御部１２５に対してＤＭＡアクセス応答を出力する。
【００３６】
キャッシュタグ更新要求格納部４０３は、ホームリクエスト処理部４０６から入力したキャッシュタグ更新要求をキューに格納し、キューに格納されたキャッシュタグ更新要求を順に要求調停部４０４に出力し、調停参加する。
【００３７】
要求調停部４０４は、キャッシュ要求格納部４０１、Ｉ／Ｏ要求格納部４０２、及びキャッシュタグ更新要求格納部４０３から出力される各要求を調停し、コヒーレンシ制御パイプライン４０５に転送する。
【００３８】
コヒーレンシ制御パイプライン４０５は、要求調停部４０４から出力された各要求に応じて、キャッシュタグの検索、キャッシュタグの内容に応じたプロセッサ１０１へのキャッシュ掃出し要求又は無効化要求の出力、及びキャッシュタグ更新を行う。また、コヒーレンシ制御パイプライン４０５は、要求調停部４０４から出力された各要求が自ノードが管理するメモリ領域に対するアクセス要求だった場合、その要求をホームリクエスト処理部４０６に出力する。また、コヒーレンシ制御パイプライン４０５は、その要求が他ノード１０５が管理するメモリ領域に対するアクセス要求だった場合、その要求を他ノード１０５のシステムコントローラに出力する。
【００３９】
コヒーレンシ制御パイプライン４０５は、Ｉ／Ｏキャッシュ指示部１２７を有する。Ｉ／Ｏキャッシュ指示部１２７は、要求調停部４０４から出力された要求が自ノードが管理するメモリ領域に対するＤＭＡ書き込み要求だった場合、プロセッサ１０１に対してＩ／Ｏキャッシュ登録要求を出力し、ＤＭＡ書き込みデータ転送用のムーブインバッファ確保を要求する。このときの登録要求先プロセッサは、登録プロセッサ決定回路４０８により決定される。
【００４０】
キャッシュタグ部４０７は、自ノード内のプロセッサ１０１内のキャッシュデータ部１１３が保持するデータのキャッシュタグ（アドレス及びキャッシュの状態）を格納する。キャッシュの状態は、自己のプロセッサ１０１内のキャッシュデータ部１１３のデータが排他型、共有型、及び無効型のいずれであるのかを示す。排他型は、自ノード内において、自己のプロセッサ１０１のキャッシュデータ部１１３だけに存在し、他のプロセッサ１０１のキャッシュデータ部１１３には存在しないデータである。共有型は、自ノード内において、自己のプロセッサ１０１及び他のプロセッサ１０１のキャッシュデータ部１１３に存在するデータを示す。無効型は、自己のプロセッサ１０１のキャッシュデータ部１１３のそのキャッシュライン（１２８バイト）のデータが無効であることを示す。
【００４１】
ホームリクエスト処理部４０６は、コヒーレンシ制御パイプライン４０５から出力された各要求に応じて、メモリデバイス１０３内のディレクトリ情報を読み出す。ディレクトリ情報は、メモリデバイス１０３の各アドレスに記憶されているデータが他ノード１０５内のプロセッサ１０１内のキャッシュデータ部１１３に記憶されている場合に、そのデータをキャッシュデータ部１１３に記憶しているノードのプロセッサ１０１を特定するためのノード番号を示す。ホームリクエスト処理部４０６は、ディレクトリ情報を基に、該当ラインのデータを他ノード１０５のプロセッサがキャッシュしている場合は、そのノードにキャッシュ掃出し要求又は無効化要求を出力する。ホームリクエスト処理部４０６は、入力要求がＤＭＡ書き込み要求の場合、同時にＤＭＡ書き込みデータ（Ｉ／Ｏデバイス１０４のデータ２０１）をＩ／Ｏ要求格納部４０２から入力するとともに、プロセッサ１０１からムーブインバッファ獲得成否通知の入力を待つ。ホームリクエスト処理部４０６は、ムーブインバッファ獲得成功通知を入力した場合、ＤＭＡ書き込みデータをプロセッサ１０１へ転送した後、キャッシュタグ部４０７のキャッシュタグを「転送先プロセッサ＝排他型」に更新するためのキャッシュタグ更新要求をキャッシュタグ更新要求格納部４０３に出力する。一方、ホームリクエスト処理部４０６は、プロセッサ１０１からムーブインバッファ獲得失敗通知を入力した場合、ＤＭＡ書き込みデータをメモリデバイス１０３に書き込む。
【００４２】
図５は、プロセッサ１０１の構成例を示す図である。プロセッサ１０１は、コア１１１と、キャッシュデータ部１１３と、キャッシュ制御部１１４と、セレクタ５０１とを有する。キャッシュ制御部１１４は、キャッシュ要求格納部５０２と、Ｉ／Ｏキャッシュ要求格納部５０８と、要求調停部５０３と、キャッシュ制御パイプライン５０６と、キャッシュタグ部５０４と、ムーブインバッファ５０５とを有する。キャッシュ制御パイプライン５０６は、ムーブインバッファ獲得可否判定回路５０７を有する。キャッシュ制御部１１４は、Ｉ／Ｏキャッシュ登録部１１５を有する。Ｉ／Ｏキャッシュ登録部１１５は、ムーブインバッファ獲得可否判定回路５０７及びＩ／Ｏキャッシュ要求格納部５０８とを有する。
【００４３】
コア１１１は、ソフトウェアの命令に応じて命令を解釈及び実行し、必要に応じてメモリアクセス要求をキャッシュ制御部１１４に出力する。
【００４４】
キャッシュ制御部１１４は、コア１１１からメモリアクセス要求を入力し、キャッシュタグ部５０４のキャッシュタグを検索し、キャッシュヒットの場合は、ヒットしたデータを、キャッシュデータ部１１３からセレクタ５０１を介してコア１１１に応答データとして出力する。また、キャッシュ制御部１１４は、キャッシュミスの場合は、システムコントローラ１０２にメモリアクセス要求を出力する。
【００４５】
キャッシュデータ部１１３は、メモリデバイス１０３の一部のアドレスのデータを格納可能である。セレクタ５０１は、ムーブインバッファ５０５が出力する応答データとキャッシュデータ部１１３が出力する応答データとのいずれかを選択し、選択した応答データをコア１１１に出力する。
【００４６】
キャッシュ要求格納部５０２は、コア１１１から入力したメモリアクセス要求をキューに格納し、キューに格納されたメモリアクセス要求を順に要求調停部５０３に出力し、調停参加する。
【００４７】
Ｉ／Ｏキャッシュ要求格納部５０８は、システムコントローラ１０２から入力したＩ／Ｏキャッシュ登録要求をキューに格納し、キューに格納されたＩ／Ｏキャッシュ登録要求を順に要求調停部５０３に出力し、調停参加する。
【００４８】
要求調停部５０３は、キャッシュ要求格納部５０２、Ｉ／Ｏキャッシュ要求格納部５０８及びムーブインバッファ５０５から出力される各要求を調停し、キャッシュ制御パイプライン５０６に転送する。
【００４９】
キャッシュ制御パイプライン５０６は、要求調停部５０３から出力された各要求に応じて、キャッシュタグ部５０４のキャッシュタグの検索、及びキャッシュデータ部１１３のデータのアクセスを行う。キャッシュ制御パイプライン５０６は、キャッシュタグ部５０４のキャッシュタグを検索し、キャッシュミスだった場合は、システムコントローラ１０２に対してメモリアクセス要求を出力する。
【００５０】
Ｉ／Ｏキャッシュ登録部１１５は、要求調停部５０３から入力した要求がＩ／Ｏキャッシュ登録要求だった場合、ムーブインバッファ獲得可否判定回路５０７により、ムーブインバッファ獲得要求をムーブインバッファ５０５に出力する。その後、Ｉ／Ｏキャッシュ登録部１１５は、ムーブインバッファ獲得可否判定回路５０７により、ムーブインバッファ獲得成否通知をシステムコントローラ１０２に出力する。
【００５１】
キャッシュタグ部５０４は、自己のプロセッサ１０１内のキャッシュデータ部１１３が記憶するデータのキャッシュタグ（アドレス及びキャッシュの状態）を格納する。
【００５２】
ムーブインバッファ５０５は、システムコントローラ１０２から応答データを入力してバッファリングするためのバッファである。Ｉ／Ｏキャッシュ登録要求時は、システムコントローラ１０２からＤＭＡ書き込みデータが応答データとしてムーブインバッファ５０５に転送される。ムーブインバッファ５０５は、システムコントローラ１０２からの応答データの転送が完了すると、要求調停部５０３に対してキャッシュ登録要求を出力する。
【００５３】
図６は、本実施形態による情報処理装置の制御方法を示すフローチャートである。複数のプロセッサ１０１のうちの１個のプロセッサ１０１は、システムコントローラ１０２にＤＭＡ書き込み要求を出力する。すると、システムコントローラ１０２内のＩ／Ｏ制御部１２５は、ＤＭＡ書き込み要求をＩ／Ｏデバイス１０４に出力する。すると、Ｉ／Ｏデバイス１０４は、ＤＭＡ書き込み要求及びＤＭＡ書き込み要求のデータをＩ／Ｏ制御部１２５に出力する。Ｉ／Ｏ制御部１２５は、ＤＭＡ書き込み要求及びＤＭＡ書き込み要求のデータをＩ／Ｏ要求格納部４０２に出力する。ホームリクエスト処理部４０６は、コヒーレンシ制御パイプライン４０５のリクエスト処理要求に応じて、メモリリクエスト制御部１２４を介して、ＤＭＡ書き込み要求のアドレスのディレクトリ情報をメモリデバイス１０３から読み出す。
【００５４】
ステップＳ６０１では、コヒーレンシ制御パイプライン４０５及びホームリクエスト処理部４０６は、キャッシュタグ情報及びディレクトリ情報を基に、ＤＭＡ書き込み要求のアドレスのデータをキャッシュデータ部１１３に記憶しているプロセッサ１０１があるか否かを判定し、ある場合にはステップＳ６０２に処理を進め、ない場合にはステップＳ６０３に処理を進める。
【００５５】
ステップＳ６０２では、コヒーレンシ制御パイプライン４０５は、キャッシュタグ部４０７のキャッシュタグを参照し、ＤＭＡ書き込み要求のアドレスのデータをキャッシュデータ部１１３に記憶している自ノード内のプロセッサ１０１に対し、排他型のキャッシュ状態である場合には掃出し要求を出力し、共有型のキャッシュ状態である場合には無効化要求を出力する。ホームリクエスト処理部４０６は、ディレクトリ情報を基に、他ノード１０５内のプロセッサ１０１がＤＭＡ書き込み要求のアドレスのデータをキャッシュデータ部１１３に記憶している場合、その他ノード１０５に対して掃出し要求又は無効化要求を出力する。この処理は、そのアドレスのキャッシュコヒーレンシを保つために行われる。その後、ホームリクエスト処理部４０６は、ステップＳ６０３に処理を進める。
【００５６】
ここで、プロセッサ１０１は、掃出し要求を入力した場合には、キャッシュデータ部１１３内のＤＭＡ書き込み要求のアドレスに対応するデータのキャッシュラインを掃出し、そのキャッシュラインには新たな別のアドレスのデータを書き込み可能にする。掃出されたキャッシュラインのデータは、ホームリクエスト処理部４０６内のバッファに格納される。
【００５７】
ステップＳ６０３では、システムコントローラ１０２は、複数のプロセッサ１０１の中から、Ｉ／Ｏデバイス１０４のデータをキャッシュする１個のＩ／Ｏキャッシュ登録プロセッサを決定する。システムコントローラ１０２は、本来であれば、上記のＤＭＡ書き込み要求の発行元のプロセッサ１０１をＩ／Ｏキャッシュ登録プロセッサとして決定することが望ましい。しかし、現状の情報処理装置では、システムコントローラ１０２がその発行元のプロセッサ１０１をハードウェア的に認識するための手段が存在しない。そこで、本実施形態では、その手段を新たに追加することなく、複数のプロセッサ１０１の中から１個のＩ／Ｏキャッシュ登録プロセッサを決定する。なお、システムコントローラ１０２は、その発行元のプロセッサ１０１を認識するための手段を設け、その発行元のプロセッサ１０１をＩ／Ｏキャッシュ登録プロセッサとして決定してもよい。
【００５８】
図７は、図６のステップＳ６０３の処理の詳細を示すフローチャートである。登録プロセッサ決定回路４０８は、複数のプロセッサ１０１の中から１個のＩ／Ｏキャッシュ登録プロセッサを決定する。なお、情報処理装置が１個のプロセッサ１０１を有する場合には、登録プロセッサ決定回路４０８は、その１個のプロセッサ１０１をＩ／Ｏキャッシュ登録プロセッサとして決定する。例えば、登録プロセッサ決定回路４０８は、ＤＭＡ書き込み要求のアドレスのデータがＤＭＡ書き込み要求の前に自ノードのプロセッサ１０１にどのようなキャッシュ状態で所持されていたかによって、Ｉ／Ｏキャッシュ登録プロセッサを決定する。登録プロセッサ決定回路４０８は、ＤＭＡ書き込み要求の前にＩ／Ｏデバイス１０４のアドレスのデータを所有していたプロセッサ１０１がＤＭＡ書き込み要求の後もそのアドレスのデータを使用する確率が高いであろうという想定の下、将来、そのアドレスのデータを使用する可能性が高いと考えられるそのプロセッサ１０１をＩ／Ｏキャッシュ登録プロセッサとして決定する。なお、登録プロセッサ決定回路４０８は、上記の決定方法に限定されず、他のアルゴリズム（例えばラウンドロビン等）により、Ｉ／Ｏキャッシュ登録プロセッサを決定してもよい。
【００５９】
ステップＳ７０１では、登録プロセッサ決定回路４０８は、ＤＭＡ書き込み要求のアドレスについて、キャッシュタグ部４０７のキャッシュタグを検索する。次に、ステップＳ７０２では、登録プロセッサ決定回路４０８は、キャッシュタグを基に、ＤＭＡ書き込み要求のアドレスのデータについて、プロセッサ１０１のキャッシュ状態を判定する。
【００６０】
登録プロセッサ決定回路４０８は、自ノード内の１個のプロセッサ１０１のキャッシュタグが排他型の場合には、ステップＳ７０５に処理を進め、そのキャッシュタグが排他型であるプロセッサ１０１をＩ／Ｏキャッシュ登録プロセッサとして選択する。
【００６１】
すなわち、ステップＳ７０５では、コヒーレンシ制御部１２２は、複数のプロセッサ１０１のうち、ステップＳ６０２の掃出し要求又は無効化要求の出力前にＤＭＡ書き込み要求のアドレスのデータをキャッシュデータ部１１３に記憶していたプロセッサ１０１が１個であった場合には、そのデータを記憶していた１個のプロセッサ１０１をＩ／Ｏキャッシュ登録プロセッサとして選択する。
【００６２】
また、登録プロセッサ決定回路４０８は、自ノード内の複数のプロセッサ１０１のキャッシュタグが共有型の場合には、ステップＳ７０４に処理を進め、そのキャッシュタグが共有型である複数のプロセッサ１０１の中から１個のＩ／Ｏキャッシュ登録プロセッサをラウンドロビンで選択する。
【００６３】
すなわち、ステップＳ７０４では、コヒーレンシ制御部１２２は、複数のプロセッサ１０１のうち、ステップＳ６０２の掃出し要求又は無効化要求の出力前にＤＭＡ書き込み要求のアドレスのデータをキャッシュデータ部１１３に記憶していたプロセッサ１０１が複数あった場合には、そのデータを記憶していた複数のプロセッサ１０１のうちの１個のプロセッサ１０１をＩ／Ｏキャッシュ登録プロセッサとしてラウンドロビンで選択する。
【００６４】
また、登録プロセッサ決定回路４０８は、自ノード内の全てのプロセッサ１０１のキャッシュタグが無効型である場合には、ステップＳ７０３に処理を進め、自ノード内の全プロセッサ１０１の中から１個のＩ／Ｏキャッシュ登録プロセッサをラウンドロビンで選択する。
【００６５】
すなわち、ステップＳ７０３では、コヒーレンシ制御部１２２は、複数のプロセッサ１０１のうち、ステップＳ６０２の掃出し要求又は無効化要求の出力前にＤＭＡ書き込み要求のアドレスのデータをキャッシュデータ部１１３に記憶していたプロセッサ１０１がなかった場合には、複数のプロセッサ１０１のうちの１個のプロセッサ１０１をＩ／Ｏキャッシュ登録プロセッサとしてラウンドロビンで選択する。
【００６６】
図６において、システムコントローラ１０２は、ステップＳ６０３の後、ステップＳ６０４に処理を進める。ステップＳ６０４では、Ｉ／Ｏキャッシュ指示部１２７は、ステップＳ６０３で選択されたＩ／Ｏキャッシュ登録プロセッサに対して、Ｉ／Ｏキャッシュ登録要求を出力する。
【００６７】
次に、ステップＳ６０５では、プロセッサ１０１は、Ｉ／Ｏキャッシュ登録要求を入力した場合、ＤＭＡ書き込み要求のデータをムーブインバッファ５０５にバッファリングするために、ムーブインバッファ５０５の空き領域を獲得する。
【００６８】
次に、ステップＳ６０６では、プロセッサ１０１は、システムコントローラ１０２に対して、ムーブインバッファ獲得成否通知を出力する。
【００６９】
図８は、図６のステップＳ６０５及びＳ６０６の処理の詳細を示すフローチャートである。ステップＳ８０１では、Ｉ／Ｏキャッシュ登録部１１５がＩ／Ｏキャッシュ登録要求を入力した場合、ムーブインバッファ獲得可否判定回路５０７は、ムーブインバッファ５０５がフルであるか否かを判定し、フルでない場合にはステップＳ８０２に処理を進め、フルである場合にはステップＳ８０５に処理を進める。すなわち、ムーブインバッファ獲得可否判定回路５０７は、ムーブインバッファ５０５に空き領域がある場合にはステップＳ８０２に処理を進め、ムーブインバッファ５０５に空き領域がない場合にはステップＳ８０５に処理を進める。
【００７０】
ステップＳ８０２では、ムーブインバッファ獲得可否判定回路５０７は、Ｉ／Ｏキャッシュ登録要求のアドレスについて他のトランザクションにより既にムーブインバッファ５０５の空き領域の獲得中であるか否かを判定し、獲得中でない場合にはステップＳ８０３に処理を進め、獲得中である場合にはステップＳ８０５に処理を進める。
【００７１】
ステップＳ８０３では、ムーブインバッファ獲得可否判定回路５０７は、ムーブインバッファ獲得要求をムーブインバッファ５０５に出力し、ムーブインバッファ５０５の空き領域を獲得する。
【００７２】
次に、ステップＳ８０４では、ムーブインバッファ獲得可否判定回路５０７は、システムコントローラ１０２に対して、ムーブインバッファ獲得成功通知を出力する。
【００７３】
ステップＳ８０５では、ムーブインバッファ獲得可否判定回路５０７は、システムコントローラ１０２に対して、ムーブインバッファ獲得失敗通知を出力する。
【００７４】
図６において、情報処理装置は、ステップＳ６０６の後、ステップＳ６０７に処理を進める。ステップＳ６０７では、システムコントローラ１０２は、ムーブインバッファ５０５の獲得の成否を判定する。ホームリクエスト処理部４０６は、プロセッサ１０１からムーブインバッファ獲得成功通知を入力した場合にはステップＳ６０８に処理を進め、プロセッサ１０１からムーブインバッファ獲得失敗通知を入力した場合にはステップＳ６１１に処理を進める。
【００７５】
ステップＳ６０８では、システムコントローラ１０２内のホームリクエスト処理部４０６は、ＤＭＡデータ転送要求に応じて、ＤＭＡ書き込み要求のデータを応答データとして、プロセッサ１０１内のムーブインバッファ５０５に転送する。
【００７６】
次に、ステップＳ６０９では、プロセッサ１０１内のキャッシュ制御パイプライン５０６は、転送されたＤＭＡ書き込み要求のデータをキャッシュデータ部１１３に登録し（書き込み）、そのデータのキャッシュタグをキャッシュタグ部５０４に登録する。
【００７７】
次に、ステップＳ６１０では、システムコントローラ１０２内のコヒーレンシ制御パイプライン４０５は、キャッシュタグ更新要求に応じて、転送先のＩ／Ｏキャッシュ登録プロセッサについてのＤＭＡ書き込み要求のデータのキャッシュタグを排他型に更新し、キャッシュタグ部４０７に登録する。
【００７８】
ステップＳ６１１では、システムコントローラ１０２内のホームリクエスト処理部４０６は、メモリリクエスト制御部１２４を介して、メモリデバイス１０３にＤＭＡ書き込み要求のデータを書き込む。
【００７９】
次に、ステップＳ６１２では、システムコントローラ１０２内のコヒーレンシ制御パイプライン４０５は、キャッシュタグ更新要求に応じて、全てのプロセッサ１０１についてのＤＭＡ書き込み要求のデータのキャッシュタグを無効型に更新し、キャッシュタグ部４０７に登録する。
【００８０】
ステップＳ６１０及びＳ６１２の後、Ｉ／Ｏ制御部１２５は、ＤＭＡ処理完了通知をＩ／Ｏデバイス１０４に出力する。すると、Ｉ／Ｏデバイス１０４は、ＤＭＡ書き込み要求完了の割り込みをプロセッサ１０１に通知する。
【００８１】
以上のように、情報処理装置は、ムーブインバッファ獲得成功通知が出力される場合には、ステップＳ６０８〜Ｓ６１０により図３（Ａ）〜（Ｄ）の処理を行う。コヒーレンシ制御部１２２は、プロセッサ１０１のムーブインバッファ５０５に空き領域がある場合には、プロセッサ１０１のキャッシュデータ部１１３に書き込む要求をプロセッサ１０１に出力する。その場合、キャッシュ制御部１１４は、Ｉ／Ｏデバイス１０４から入力したデータをムーブインバッファ５０５を介してキャッシュデータ部１１３に書き込み、読み出し要求に応じて、キャッシュデータ部１１３に記憶されているデータをコア１１１に出力する。
【００８２】
また、情報処理装置は、ムーブインバッファ獲得失敗通知が出力される場合には、ステップＳ６１１〜Ｓ６１２により図２（Ａ）〜（Ｅ）の処理を行う。ホームリクエスト処理部４０６は、プロセッサ１０１のムーブインバッファ５０５に空き領域がない場合には、Ｉ／Ｏデバイス１０４が出力したデータをメモリデバイス１０３に書き込む要求をメモリデバイス１０３に出力する。Ｉ／Ｏデバイス１０４が出力したデータは、メモリデバイス１０３に書き込まれる。その場合、キャッシュ制御部１１４は、読み出し要求に応じて、メモリデバイス１０３に記憶されているデータを入力し、その入力したデータをキャッシュデータ部１１３に書き込むと共に、その入力したデータをコア１１１に出力する。
【００８３】
図９（Ａ）及び（Ｂ）は、図２（Ａ）〜（Ｅ）の処理を示すタイミングチャートである。情報処理装置は、まず、図９（Ａ）のＤＭＡ書き込み要求の処理を行い、その後、図９（Ｂ）の読み出し要求の処理を行う。
【００８４】
まず、図９（Ａ）において、Ｉ／Ｏデバイス１０４は、ＤＭＡ書き込み要求（ＤＭＡアクセス要求）及びＤＭＡ書き込み要求のデータを、Ｉ／Ｏ制御部１２５を介して、Ｉ／Ｏ要求格納部４０２に出力する。
【００８５】
次に、Ｉ／Ｏ要求格納部４０２は、要求調停部４０４を介して、ＤＭＡ書き込み要求をコヒーレンシ制御パイプライン４０５に出力する。
【００８６】
次に、コヒーレンシ制御パイプライン４０５は、ＤＭＡ書き込み要求をホームリクエスト処理部４０６に出力する。
【００８７】
次に、ホームリクエスト処理部４０６は、メモリリクエスト制御部１２４を介して、ＤＭＡ書き込み要求のアドレスのディレクトリ情報の読み出し要求を、メモリデバイス１０３に出力する。
【００８８】
次に、メモリデバイス１０３は、ＤＭＡ書き込み要求のアドレスのディレクトリ情報を読み出し、読み出し要求の応答として、メモリリクエスト制御部１２４を介して、読み出したディレクトリ情報をホームリクエスト処理部４０６に出力する。ホームリクエスト処理部４０６は、そのディレクトリ情報に応じて、掃出し要求又は無効化要求をプロセッサ１０１に出力する。
【００８９】
次に、ホームリクエスト処理部４０６は、ＤＭＡデータ転送要求をＩ／Ｏ要求格納部４０２に出力する。
【００９０】
次に、Ｉ／Ｏ要求格納部４０２は、ＤＭＡ書き込み要求のデータをホームリクエスト処理部４０６に出力する。
【００９１】
次に、ホームリクエスト処理部４０６は、メモリリクエスト制御部１２４を介して、ＤＭＡ書き込み要求のデータの書き込み要求をメモリデバイス１０３に出力する。
【００９２】
次に、メモリデバイス１０３は、ＤＭＡ書き込み要求のデータを書き込み、メモリリクエスト制御部１２４を介して、書き込み要求に対する応答をホームリクエスト処理部４０６に出力する。
【００９３】
次に、ホームリクエスト処理部４０６は、ＤＭＡ処理完了通知をＩ／Ｏ要求格納部４０２に出力する。
【００９４】
次に、Ｉ／Ｏ要求格納部４０２は、Ｉ／Ｏ制御部１２５を介して、Ｉ／Ｏデバイス１０４にＤＭＡ書き込み要求の応答（ＤＭＡアクセス応答）を出力する。
【００９５】
次に、図９（Ｂ）において、コア１１１は、ＤＭＡ書き込みを行ったアドレスの読み出し要求をキャッシュ要求格納部５０２に出力する。
【００９６】
次に、キャッシュ要求格納部５０２は、要求調停部５０３を介して、その読み出し要求をキャッシュ制御パイプライン５０６に出力する。
【００９７】
次に、キャッシュ制御パイプライン５０６は、ムーブインバッファ５０５にムーブインバッファ獲得要求を出力し、獲得できた場合には、プロセッサインタフェース１２１を介して、その読み出し要求をキャッシュ要求格納部４０１に出力する。
【００９８】
次に、キャッシュ要求格納部４０１は、要求調停部４０４を介して、その読み出し要求をコヒーレンシ制御パイプライン４０５に出力する。
【００９９】
次に、コヒーレンシ制御パイプライン４０５は、その読み出し要求をホームリクエスト処理部４０６に出力する。
【０１００】
次に、ホームリクエスト処理部４０６は、メモリリクエスト制御部１２４を介して、その読み出し要求をメモリデバイス１０３に出力する。
【０１０１】
次に、メモリデバイス１０３は、その読み出し要求のアドレスのデータを読み出し、読み出し要求の応答として、メモリリクエスト制御部１２４を介して、読み出したデータをホームリクエスト処理部４０６に出力する。
【０１０２】
次に、ホームリクエスト処理部４０６は、読み出したデータを読み出し要求の要求元のプロセッサ１０１のキャッシュデータ部１１３に登録するため、コヒーレンシ制御パイプライン４０５を介して、キャッシュタグ部４０７のキャッシュタグを排他型として登録する。また、ホームリクエスト処理部４０６は、プロセッサインタフェース１２１を介して、読み出したデータを応答データとして、ムーブインバッファ５０５に出力する。
【０１０３】
次に、ムーブインバッファ５０５は、応答データをバッファリングし、キャッシュ制御パイプライン５０６を介して、その応答データをキャッシュデータ部１１３に登録し、キャッシュタグ部５０４のキャッシュタグを更新する。また、ムーブインバッファ５０５は、セレクタ５０１を介して、その応答データをコア１１１に出力する。上記の図９（Ｂ）の読み出し時間がリードレイテンシである。
【０１０４】
図１０（Ａ）及び（Ｂ）は、本実施形態による図３（Ａ）〜（Ｄ）の処理を示すタイミングチャートである。情報処理装置は、まず、図１０（Ａ）のＤＭＡ書き込み要求の処理を行い、その後、図１０（Ｂ）の読み出し要求の処理を行う。
【０１０５】
まず、図１０（Ａ）において、Ｉ／Ｏデバイス１０４は、ＤＭＡ書き込み要求（ＤＭＡアクセス要求）及びＤＭＡ書き込み要求のデータを、Ｉ／Ｏ制御部１２５を介して、Ｉ／Ｏ要求格納部４０２に出力する。
【０１０６】
次に、Ｉ／Ｏ要求格納部４０２は、要求調停部４０４を介して、ＤＭＡ書き込み要求をコヒーレンシ制御パイプライン４０５に出力する。
【０１０７】
次に、コヒーレンシ制御パイプライン４０５は、プロセッサインタフェース１２１を介して、Ｉ／Ｏキャッシュ登録要求をＩ／Ｏキャッシュ要求格納部５０８に出力する。また、コヒーレンシ制御パイプライン４０５は、ＤＭＡ書き込み要求をホームリクエスト処理部４０６に出力する。
【０１０８】
次に、Ｉ／Ｏキャッシュ要求格納部５０８は、要求調停部５０３を介して、Ｉ／Ｏキャッシュ登録要求をキャッシュ制御パイプライン５０６に出力する。
【０１０９】
次に、キャッシュ制御パイプライン５０６は、ムーブインバッファ５０５にムーブインバッファ獲得要求を出力し、獲得できた場合には、プロセッサインタフェース１２１を介して、ムーブインバッファ獲得成功通知をホームリクエスト処理部４０６に出力する。
【０１１０】
次に、ムーブインバッファ５０５は、ホームリクエスト処理部４０６から応答データを入力すると、その応答データをバッファリングし、キャッシュ制御パイプライン５０６を介して、その応答データをキャッシュデータ部１１３に登録し、キャッシュタグ部５０４のキャッシュタグを更新する。
【０１１１】
ホームリクエスト処理部４０６は、コヒーレンシ制御パイプライン４０５からＤＭＡ書き込み要求を入力すると、メモリリクエスト制御部１２４を介して、ＤＭＡ書き込み要求のアドレスのディレクトリ情報の読み出し要求を、メモリデバイス１０３に出力する。
【０１１２】
次に、メモリデバイス１０３は、ＤＭＡ書き込み要求のアドレスのディレクトリ情報を読み出し、読み出し要求の応答として、メモリリクエスト制御部１２４を介して、読み出したディレクトリ情報をホームリクエスト処理部４０６に出力する。ホームリクエスト処理部４０６は、そのディレクトリ情報に応じて、掃出し要求又は無効化要求をプロセッサ１０１に出力する。
【０１１３】
次に、ホームリクエスト処理部４０６は、ＤＭＡデータ転送要求をＩ／Ｏ要求格納部４０２に出力する。
【０１１４】
次に、Ｉ／Ｏ要求格納部４０２は、ＤＭＡ書き込み要求のデータをホームリクエスト処理部４０６に出力する。
【０１１５】
次に、ホームリクエスト処理部４０６は、キャッシュ制御パイプライン５０６からムーブインバッファ獲得成功通知を入力すると、プロセッサインタフェース１２１を介して、ＤＭＡ書き込み要求のデータを応答データとして、ムーブインバッファ５０５に出力する。
【０１１６】
次に、ホームリクエスト処理部４０６は、コヒーレンシ制御パイプライン４０５を介して、キャッシュタグ部４０７のキャッシュタグを排他型として登録する。また、ホームリクエスト処理部４０６は、ＤＭＡ処理完了通知をＩ／Ｏ要求格納部４０２に出力する。
【０１１７】
次に、Ｉ／Ｏ要求格納部４０２は、Ｉ／Ｏ制御部１２５を介して、Ｉ／Ｏデバイス１０４にＤＭＡ書き込み要求の応答（ＤＭＡアクセス応答）を出力する。
【０１１８】
次に、図１０（Ｂ）において、コア１１１は、ＤＭＡ書き込みを行ったアドレスの読み出し要求をキャッシュ要求格納部５０２に出力する。
【０１１９】
次に、キャッシュ要求格納部５０２は、要求調停部５０３を介して、その読み出し要求をキャッシュ制御パイプライン５０６に出力する。
【０１２０】
次に、キャッシュ制御パイプライン５０６は、キャッシュタグ部５０４のキャッシュタグを参照し、その読み出し要求に対応するデータをキャッシュデータ部１１３から読み出してコア１１１に出力する。上記の図１０（Ｂ）の読み出し時間がリードレイテンシであり、図９（Ｂ）のリードレイテンシより短い。これにより、プロセッサ１０１は、Ｉ／Ｏデバイス１０４のデータを高速に読み出すことが可能になる。
【０１２１】
ここで、Ｉ／Ｏキャッシュ登録プロセッサ以外のプロセッサ１０１が読み出し要求を出力する場合を説明する。その場合、システムコントローラ１０２は、その読み出し要求を入力すると、その読み出し要求に対応するデータをＩ／Ｏキャッシュ登録プロセッサ内のキャッシュデータ部１１３から読み出し、Ｉ／Ｏキャッシュ登録プロセッサ以外のプロセッサ１０１に出力する。この場合のリードレイテンシも、図９（Ｂ）のリードレイテンシより短い。
【０１２２】
以上のように、本実施形態によれば、ＤＭＡ書き込み要求により、Ｉ／Ｏデバイス１０４のデータは、データの内容に依らず、メモリデバイス１０３を介さずに、プロセッサ１０１のキャッシュデータ部１１３に書き込まれる。これにより、プロセッサ１０１は、読み出し要求による読み出し時間を短縮することができる。
【０１２３】
プロセッサ１０１のキャッシュ制御部１１４は、Ｉ／Ｏデバイス１０４が自己のプロセッサ１０１又は他のプロセッサ１０１のＤＭＡ書き込み要求に応じて出力したデータをメモリデバイス１０３を介さずに入力し、その入力したデータをデータの内容に依らずＤＭＡ書き込み要求のアドレスに対応するキャッシュデータ部１１３に書き込む。
【０１２４】
システムコントローラ１０２のコヒーレンシ制御部１２２は、ＤＭＡ書き込み要求に応じて、Ｉ／Ｏデバイス１０４が出力したデータをデータの内容に依らずメモリデバイス１０３を介さずにＤＭＡ書き込み要求のアドレスのプロセッサ１０１内のキャッシュデータ部１１３に書き込む要求をプロセッサ１０１に出力する。
【０１２５】
なお、プロセッサ１０１とシステムコントローラ１０２は、１個のＣＰＵチップで構成してもよい。また、システムコントローラ１０２は、１個のホームリクエスト処理部４０６を有する例を示したが、複数のホームリクエスト処理部４０６を有していてもよい。実用的な回路では、メモリデバイス１０３やプロセッサ１０１間のアクセスバスの帯域を使い切るために、システムコントローラ１０２が複数（８〜３２セット程度）のホームリクエスト処理部４０６を備え、アクセス要求を並列処理することができる。
【０１２６】
Ｉ／Ｏキャッシュ登録プロセッサの決定方法は、図７の方法に限定されない。例えば、システムコントローラ１０２にＤＭＡ書き込み要求完了時の割り込み宛先プロセッサを指定するレジスタを設け、プロセッサ１０１がソフトウェアによりＩ／Ｏキャッシュ登録プロセッサを指定してもよい。これにより、データを使いたいプロセッサ１０１のキャッシュデータ部１１３にＤＭＡ書き込み要求のデータを登録することが可能になる。
【０１２７】
情報処理装置は、全てのＤＭＡ書き込み要求に対して、プロセッサ１０１のキャッシュデータ部１１３にデータを登録する例に限定されず、特定の条件に応じて、プロセッサ１０１のキャッシュデータ部１１３にデータを登録してもよい。例えば、キャッシュデータ部１１３に登録させるアドレス領域をソフトウェアから指定できるレジスタを用意して、ＤＭＡ書き込み要求のアドレスがそのレジスタ内のアドレスに一致したときのみ、キャッシュデータ部１１３に登録してもよい。
【０１２８】
また、PCI Express仕様に準拠したソフトウェア指示を用いて、キャッシュデータ部１１３にデータを登録してもよい。例えば、PCI Express Base Specification Revision 3.0で規定されているTLP Processing Hints (TPH) を用いて、キャッシュデータ部１１３の登録可否やＩ／Ｏキャッシュ登録プロセッサを決定してもよい。
【０１２９】
また、プロセッサ１０１のキャッシュデータ部１１３にＤＭＡ書き込み要求のデータが過剰に登録され、Ｉ／Ｏデバイス１０４のデータ以外のデータがキャッシュデータ部１１３から追い出されるのを防ぐため、Ｉ／Ｏデバイス１０４のデータのキャッシュデータ部１１３への登録数を制限してもよい。例えば、キャッシュタグにＩ／Ｏキャッシュビットを追加し、同一キャッシュインデックスにＩ／Ｏデバイス１０４のデータを登録できるウェイ（ｗａｙ）数を制限することができる。
【０１３０】
また、キャッシュデータ部１１３への登録が効果的なＤＭＡ書き込み要求のデータを選択的に登録することを目的として、ＤＭＡ書き込み要求のデータサイズがキャッシュラインサイズよりも小さいもののみキャッシュデータ部１１３に登録してもよい。例えば、ＤＭＡ書き込み要求が部分的書き込み（パーシャルライト）だった場合のみキャッシュデータ部１１３への登録の対象とすることができる。
【０１３１】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１３２】
１０１  プロセッサ
１０２  システムコントローラ
１０３  メモリデバイス
１０４  入出力デバイス
１０５  他ノード
１１１  コア
１１２  キャッシュユニット
１１３  キャッシュデータ部
１１４  キャッシュ制御部
１１５  Ｉ／Ｏキャッシュ登録部
１２１  プロセッサインタフェース
１２２  コヒーレンシ制御部
１２３  コヒーレンシリクエスト格納部
１２４  メモリリクエスト制御部
１２５  Ｉ／Ｏ制御部
１２７  Ｉ／Ｏキャッシュ指示部
【図１】
0006565729.tif 000002
【図２】
0006565729.tif 000003
【図３】
0006565729.tif 000004
【図４】
0006565729.tif 000005
【図５】
0006565729.tif 000006
【図６】
0006565729.tif 000007
【図７】
0006565729.tif 000008
【図８】
0006565729.tif 000009
【図９】
0006565729.tif 000010
【図１０】
0006565729.tif 000011