(57)【要約】      （修正有）【課題】分散オブジェクトストレージのような複数台の情報処理装置（サーバ）を用いて構築された情報処理システムにおけるアンド検索時の検索性能の低下を抑制するための技術を提供する。【解決手段】ネットワークインタフェース装置２２は、ネットワーク１から、アトミック操作を要求するパケットを受信した場合、各キャッシュメモリ２１２、及び主記憶装置２３に対し、アトミック操作の実行を要求する。各キャッシュメモリ２１２は、対象となるデータが何れかのキャッシュラインに存在し、状態がInvalidでなければ、キャッシュライン上でアトミック操作を実行し、その実行結果を通知する。主記憶装置２３も、対象となるデータが存在していれば、アトミック操作を実行し、その実行結果を通知する。ネットワークインタフェース装置２２は、キャッシュメモリ２１２からの通知を優先する形で応答を生成し、生成した応答をネットワーク１に送信する。【選択図】図１
2015106312.tif 000002
【特許請求の範囲】
【請求項１】
通信を行う通信制御装置と、データを記憶する主記憶装置と、前記通信制御装置と前記主記憶装置とに接続される演算処理装置とをそれぞれ有するとともに前記通信制御装置によりネットワークを介して接続される情報処理装置を複数備える並列計算機システムにおいて、
前記演算処理装置は、
不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行う処理部と、
前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知する通知部と、
を有することを特徴とする並列計算機システム。
【請求項２】
前記通信制御装置は、
前記アトミック操作を要求するために前記ネットワークを介して送信されるメッセージであるアトミック操作要求メッセージを受信した場合、前記アトミック操作要求を前記演算処理装置と前記主記憶装置とに対して出力する要求部と、
前記要求部が出力したアトミック操作要求によるアトミック操作を行った処理結果の通知である処理結果通知を、前記演算処理装置又は前記主記憶装置から受信する受信部と、
前記受信部が受信した処理結果通知の送信元と前記処理結果通知が表すアトミック操作の実行情報とに基づき、前記アトミック操作要求メッセージの応答の生成に用いる処理結果通知を決定し、決定した前記処理結果通知を用いて前記応答を生成して前記ネットワークに出力する制御部と、
を有することを特徴とする請求項１記載の並列計算機システム。
【請求項３】
前記制御部は、
前記アトミック操作を前記キャッシュメモリ上で実行した旨を表す実行通知を前記受信部が受信した場合、前記実行通知を用いて前記応答を生成し、前記実行通知を受信せずに前記主記憶装置からの処理結果通知を前記受信部が受信した場合、前記主記憶装置からの処理結果通知を用いて前記応答を生成する、
ことを特徴とする請求項２記載の並列計算機システム。
【請求項４】
通信を行う通信制御装置と、データを記憶する主記憶装置と、前記通信制御装置と前記主記憶装置とに接続される演算処理装置とをそれぞれ有するとともに前記通信制御装置によりネットワークを介して接続される情報処理装置を複数備える並列計算機システムにおいて、
前記演算処理装置は、
不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行い、
前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知することを特徴とする並列計算機システムの制御方法。
【請求項５】
通信を行う通信制御装置と、データを記憶する主記憶装置と、前記通信制御装置と前記主記憶装置とに接続される演算処理装置とをそれぞれ有するとともに前記通信制御装置によりネットワークを介して他の情報処理装置に接続される情報処理装置において、
前記演算処理装置は、
不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行う処理部と、
前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知する通知部と、
を有することを特徴とする情報処理装置。
【請求項６】
通信を行う通信制御装置と、データを記憶する主記憶装置と、前記通信制御装置と前記主記憶装置とに接続される演算処理装置において、
不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行う処理部と、
前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知する通知部と、
を有することを特徴とする演算処理装置。
【請求項７】
データを記憶する主記憶装置に接続され、不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行う処理部と、前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知する通知部とを備える演算処理装置に接続する通信制御装置において、
前記アトミック操作を要求するために前記ネットワークを介して送信されるメッセージであるアトミック操作要求メッセージを受信した場合、前記アトミック操作要求を前記演算処理装置と前記主記憶装置とに対して出力する要求部と、
前記要求部が出力したアトミック操作要求によるアトミック操作を行った処理結果の通知である処理結果通知を、前記演算処理装置又は前記主記憶装置から受信する受信部と、
前記受信部が受信した処理結果通知の送信元と前記処理結果通知が表すアトミック操作の実行情報とに基づき、前記アトミック操作要求メッセージの応答の生成に用いる処理結果通知を決定し、決定した前記処理結果通知を用いて前記応答を生成して前記ネットワークに出力する制御部と、
を有することを特徴とする通信制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機システム、並列計算機システムの制御方法、情報処理装置、演算処理装置および通信制御装置に関する。
【背景技術】
【０００２】
情報処理装置（コンピュータ）をデータ処理用の計算機（ノード）として複数、ネットワークに接続させて構築される並列計算機システムは、ネットワークに接続させるノードを多くするほど、高い性能を得ることが可能となる。そのため、高い性能が要求される処理は、並列計算機システムに実行させるのが普通である。
【０００３】
並列計算機システムは、各ノードがそれぞれメモリ空間を有する分散メモリ型のコンピュータシステムである。そのため、各ノードは、必要に応じて、データを他のデータから取得するようになっている。
【０００４】
各ノードは、ネットワークを介した通信用のＮＩＣ（Network Interface Card）等の通信制御装置、及びＣＰＵ（Central Processing Unit）等の演算処理装置を備えている。普通、演算処理装置には、１つのプロセッサとして機能するプロセッサコアが複数、搭載され、各プロセッサコアには、キャッシュメモリが用意されている。それにより、演算処理装置は、主記憶装置上の必要なデータをキャッシュメモリに読み出すようになっている。
【０００５】
キャッシュメモリには、データ格納用の領域として、複数のキャッシュラインが用意されている。キャッシュメモリにおけるデータの読み出し、及び書き込みは、キャッシュライン単位で行われる。
【０００６】
キャッシュメモリ上のデータは、必要に応じて更新される。そのため、キャッシュメモリ上のデータは、主記憶装置上のデータ、及び他のキャッシュメモリ上のデータと一致しない場合がある。適切な処理を行うには、適切なデータを用いなければならない。このことから、並列計算機システムのような複数のキャッシュメモリが存在するシステム環境では、複数のキャッシュメモリ間で内容に矛盾が生じないようにするキャッシュコヒーレンシ制御が行われる。キャッシュコヒーレンシプロトコルは、キャッシュコヒーレンシ制御のためのプロトコルであり、キャッシュコヒーレンシプロトコルとしては、ＭＳＩプロトコル、ＭＥＳＩプロトコル、及びＭＯＥＳＩプロトコル等がある。
【０００７】
ＭＯＥＳＩプロトコルでは、キャッシュメモリ上の各キャッシュラインの状態は、Ｍ（Modified）、Ｏ（Owned）、Ｅ（Exclusive）、Ｓ（Shared）、Ｉ（Invalid）の５状態に分類される。
【０００８】
Ｍ状態とは、データが自キャッシュメモリだけに存在し、且つ主記憶装置上のデータと内容が一致しない状態である。Ｅ状態とは、データが自キャッシュメモリだけに存在し、且つ主記憶装置上のデータと内容が一致している状態である。Ｓ状態とは、データが他のキャッシュメモリにも存在している状態である。Ｉ状態とは、キャッシュラインが無効となっている状態である。Ｏ状態とは、データが主記憶装置上のデータの内容と一致せず、且つそのデータが他のキャッシュメモリ上にも存在する状態である。Ｓ状態とは、データを主記憶装置に格納するライトバックを行わなければならない点で異なる。つまり、主記憶装置上のデータの内容と一致しないデータが存在する複数のキャッシュメモリでは、１つのキャッシュメモリのみがＯ状態となり、他の全てのキャッシュメモリはＳ状態となる。
【０００９】
並列計算機システムには、普通、各ノードがスレッドと呼ばれるプログラムの最小の実行単位を同時に実行するマルチスレッドが採用される。各ノードが主記憶装置上に保持しているデータは共有リソースであり、データは同期させる必要がある。データの同期のために、或いは排他制御のために並列計算機システムで行われる操作として、これ以上の細かい操作に分割できない不可分操作であるアトミック操作がある。
【００１０】
アトミック操作は、データに対する単純な数学的演算、或いは単純な論理演算を実行させる複数の一連の操作である。アトミック操作の実行中は、データはロックされ、他のスレッドによるアクセスが行われる前にアトミック操作は完了する。そのため、データを同期させることができる。
【００１１】
アトミック操作としては、例えばFetch and Addがある。このFetch and Addは、以下の一連の操作を含む。
（１）主記憶装置からデータをキャッシュメモリにリード
（２）リードしたデータとオペランドの加算
（３）加算結果を主記憶装置にライトバック
【００１２】
Fetch and Addを実行している間、他のスレッド（或いはプロセス）は、主記憶装置上のリード対象のデータにはアクセスできない。これにより、他のスレッドによる加算結果前のデータの取得、及び他のスレッドによる加算結果への上書き等が防止される。
【００１３】
アトミック操作は、他にも様々なものがある。例えばCompare and Swapは、オペランドと主記憶装置上のデータの値を比較し、それらが一致していれば主記憶装置上のデータを別のオペランドの値に置き換えるアトミック操作である。
【００１４】
ノード間でアトミック操作を行う場合であっても、キャッシュメモリの整合性（キャッシュコヒーレンシ）は維持させなければならない。そのため、従来、演算処理装置（に搭載されたプロセッサコア）は、アトミック操作の対象となる対象データを格納したキャッシュラインの状態を確認し、その確認結果に応じた処理を行っている。より具体的には、演算処理装置は、キャッシュラインの確認した状態がＥ状態、或いはＳ状態であればＩ状態に遷移させ、Ｍ状態、或いはＯ状態であれば、主記憶装置に対象データをライトバックしてからＩ状態に遷移させる。その後、演算処理装置は、主記憶装置上の対象データへのアトミック操作を行う。このような処理により、キャッシュコヒーレンシは維持することができる。
【００１５】
主記憶装置上のデータの操作には、長い時間がかかる。そのため、従来のアトミック操作を要求したノードでは、アトミック操作を要求してから応答を得るまでの時間であるレイテンシも長くなる。より効率的な処理を行うためには、レイテンシはより短くする必要がある。このことから、キャッシュコヒーレンシは、アトミック操作時のレイテンシをより短くしつつ、実現させることが重要と思われる。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特表２０１０−５０７１６０号公報
【特許文献２】特開２００８−２０４１０１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
１側面では、本発明は、ノード間のアトミック操作時のレイテンシをより短くしつつ、キャッシュコヒーレンシを実現させるための技術を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明を適用した１システムは、通信を行う通信制御装置と、データを記憶する主記憶装置と、通信制御装置と主記憶装置とに接続される演算処理装置とをそれぞれ有するとともに通信制御装置によりネットワークを介して接続される情報処理装置を複数備える並列計算機システムであり、演算処理装置は、不可分操作であるアトミック操作を要求するアトミック操作要求を通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で対象データへのアトミック操作を行う処理部と、キャッシュメモリ上でアトミック操作を行った結果を通信制御装置に通知する通知部と、を有する。
【発明の効果】
【００１９】
本発明を適用した場合には、ノード間のアトミック操作時のレイテンシをより短くしつつ、キャッシュコヒーレンシを実現させることができる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態による並列計算機システムの構築例を説明する図である。
【図２】本実施形態による通信制御装置であるネットワークインタフェース装置の構成例を説明する図である。
【図３】アトミック操作要求パケットの構成例を説明する図である。
【図４】内部メッセージの一つであるアトミック操作要求の構成例を説明する図である。
【図５】アトミック操作要求の応答の構成例を説明する図である。
【図６】処理状況情報の構成例を説明する図である。
【図７】キャッシュコントローラによるアトミック操作要求処理のフローチャートである。
【図８】アトミック操作要求パケット処理のフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態による並列計算機システムの構築例を説明する図である。
【００２２】
本実施形態による並列計算機システムは、本実施形態による情報処理装置をノード２として用いたコンピュータシステムである。図１に表すように、並列計算機システムは、ネットワーク１にノード２を複数台、接続する形で構築されている。
【００２３】
各ノード２は、図１に表すように、演算処理装置であるプロセッサ２１、ネットワークインタフェース装置２２、主記憶装置２３、及びハードディスク装置２４がメモリバス２５にそれぞれ接続されている。プロセッサ２１には、複数のプロセッサコア２１１、及びプロセッサコア２１１毎に用意されたキャッシュメモリ２１２が搭載されている。
【００２４】
各ノード２に搭載されているプロセッサ２１は、本実施形態による演算処理装置である。各ノード２に搭載されているネットワークインタフェース２２は、本実施形態による通信制御装置である。各ノード２に搭載されている主記憶装置２３は、本実施形態による記憶装置である。
【００２５】
各キャッシュメモリ２１２は、キャッシュコントローラ２１３を備える。各キャッシュメモリ２１２は、例えば他に、データの格納に用いられるデータ部、タグの格納に用いられるタグ部、各キャッシュラインの状態を管理するタグステート管理部等を備えている（不図示）。キャッシュコントローラ２１３は、これらデータ部、タグ部、及びタグステート管理部を制御する。
【００２６】
タグ部、及びデータ部は、それぞれ同じ数のエントリを備える。１つのキャッシュラインは、タグ部の１エントリと、データ部の１エントリとを含む。ここでは、便宜的に、キャッシュメモリ２１２にはダイレクトマップ方式が採用されていると想定する。ダイレクトマップ方式では、アドレスに対応するデータを格納できるデータ部のエントリ（空間）は１つのみである。このことから、ダイレクトマップ方式では、１つのキャッシュラインは、タグ部の１エントリと、データ部の対応する１エントリとを含む構成となる。
【００２７】
タグステート管理部も、タグ部、及びデータ部と同じ数のエントリを備える。各エントリには、対応するキャッシュラインの状態を表す状態データが格納される。ここでは、キャッシュコヒーレンシプロトコルとして、ＭＯＥＳＩプロトコルが採用されていると想定する。上記のように、ＭＯＥＳＩプロトコルでは、各キャッシュラインの状態は、Ｍ（Modified）、Ｏ（Owned）、Ｅ（Exclusive）、Ｓ（Shared）、Ｉ（Invalid）の５状態に分類される。そのため、各エントリに格納される状態データは、その５状態のうちの一つを表す。
【００２８】
キャッシュコントローラ２１３は、任意のキャッシュラインに対する操作を実行可能なコントローラである。実行可能な操作としては、アトミック操作が含まれる。それにより、キャッシュメモリ２１２は、キャッシュコントローラ２１３により、要求されたアトミック操作を実行する。
【００２９】
主記憶装置２３は、メモリコントローラ２３ａを備える。このメモリコントローラ２３ａは、主記憶装置２３の任意のアドレスに格納されているデータに対する操作を行うことができる。
【００３０】
プロセッサ２１に搭載された何れかのプロセッサコア２１１は、他のプロセッサコア２１１、及び他のノード２に対し、必要に応じてアトミック操作を要求する。自ノード２内の他のプロセッサコア２１１によるアトミック操作のレイテンシは、他のノード２によるアトミック操作のレイテンシと比較して、非常に長いのが普通である。これは、他のノード２によるアトミック操作では、ネットワーク１を介した通信に要する時間もレイテンシに含まれるからである。このことから、本実施形態では、ノード２間で要求されるアトミック操作のレイテンシをより短縮させている。以降、各プロセッサコア２１１のキャッシュメモリ２１２、ネットワークインタフェース装置２２、及び主記憶装置２３に着目し、ノード２間で要求されるアトミック操作に係わる動作について詳細に説明する。
【００３１】
図２は、本実施形態による通信制御装置であるネットワークインタフェース装置の構成例を説明する図である。
【００３２】
ネットワークインタフェース装置２３は、ノード２間のネットワーク１を介した通信をパケット単位で行う通信制御装置である。図２に表すように、ネットワークインタフェース装置２３は、パケット送信部２２１、パケット受信部２２２、ＤＭＡ（Direct Memory Access）コントローラ２２３、及び制御部２２４を備える。
【００３３】
制御部２２４は、プロセッサ２１に搭載された何れかのプロセッサコア２１１からのパケット送信指示に従って、パケットの生成、及び生成されたパケットのネットワーク１への送信を実現させる。そのために、制御部２２４は、パケット送信部２２１、及びＤＭＡコントローラ２２３を制御する。
【００３４】
パケット送信部２２１は、ネットワーク１にパケットを送信する。パケットの送信先とするノード２（リモートノード）のアドレス等を含むパケットヘッダは、制御部２２４からパケット送信部２２１に出力される。制御部２２４は、パケット送信指示に従って、パケットヘッダを生成する。
【００３５】
ＤＭＡコントローラ２２３は、制御部２２４からの指示に従い、プロセッサ２１を介さずに主記憶装置２３へのアクセスを行う。制御部２２４は、パケット送信指示を参照して、ＤＭＡコントローラ２２３にアドレス、及びデータ長を指示し、主記憶装置２３にアクセスさせる。ＤＭＡコントローラ２２３は、制御部２２４の指示に従って主記憶装置２３から読み出したデータをパケット送信部２２１に出力する。それにより、パケット送信部２２１は、制御部２２４から取得したパケットヘッダに、ＤＭＡコントローラ２２３から取得したデータをペイロードとして付加して、パケットを生成し、生成したパケットをネットワーク１に送信する。
【００３６】
パケット送信部２２１が生成するパケットには、アトミック操作を要求するためのパケット（以降「アトミック操作要求パケット」と表記）が含まれる。そのアトミック操作要求パケットは、例えば図３に表すような構成である。
【００３７】
パケットは、パケットヘッダと、ペイロードとに大別される。アトミック操作要求パケットのパケットヘッダには、図３に表すように、例えばパケットタイプ、ルーティングヘッダ、ローカルノードアドレス、リモートノードアドレス、オフセット、及びアトミック操作種類の各データが格納される。
【００３８】
パケットタイプデータは、パケットの種類を表すデータである。ルーティングヘッダデータは、パケットの送信元であるローカルノードから送信先であるリモートノードまでの経路を指定するデータである。ローカルノードアドレスは、ローカルノードのアドレスを表すデータであり、リモートノードアドレスは、リモートノードのアドレスを表すデータである。オフセットは、アトミック操作を行う対象となる対象データが格納されている主記憶装置２３上のアドレスを表すデータである。アトミック操作種類は、アトミック操作の種類を表すデータである。
【００３９】
ペイロードには、アトミック操作で用いるオペランドが含まれる。それにより、アトミック操作要求パケットを受信したノード（リモートノード）２では、アトミック操作種類が表すアトミック操作を、オフセットで指定される対象データに対し、ペイロード中のオペランドを用いて行うことができる。
【００４０】
他のノード２がネットワーク１上に送信したアトミック操作要求パケットは、リモートノードアドレスで指定されるリモートノード２のネットワークインタフェース装置２２のパケット受信部２２２によって受信される。パケット受信部２２２は、アトミック操作要求パケットを受信した場合、図４に表すような構成の内部メッセージを生成し、生成した内部メッセージをメモリバス２５上に出力する。以降、その内部メッセージは「アトミック操作要求」と表記する。
【００４１】
アトミック操作要求は、図４に表すように、アトミック操作種類、アトミック操作対象アドレス、シーケンス番号、及びオペランドの各データを含む。
【００４２】
アトミック操作種類は、アトミック操作要求パケットと同じく、アトミック操作の種類を表すデータである。アトミック操作対象アドレスは、アトミック操作の対象となる対象データが格納されている主記憶装置２３上のアドレスを表すデータである。このアトミック操作対象アドレスは、オフセットそのものか、或いはそのオフセットとペイロード中のオペランドを用いて生成されるデータである。
【００４３】
シーケンス番号は、このアトミック操作要求を識別するためのデータである。オペランドは、アトミック操作に用いるデータであり、そのオペランドは、アトミック操作対象アドレスの生成に用いられるオペランドとは異なる。
【００４４】
このアトミック操作要求は、プロセッサ２１に搭載された全てのキャッシュメモリ２１２、及び主記憶装置２３を対象にしたメッセージである。それにより、本実施形態では、全てのキャッシュメモリ２１２、及び主記憶装置２３に、アトミック操作要求によるアトミック操作をそれぞれ並行して行わせ、アトミック操作を行った結果を応答として返信させるようにしている。
【００４５】
キャッシュメモリ２１２、及び主記憶装置２３が返信する応答は、例えば図５に表すように、有効、実行元、シーケンス番号、及びデータを含む。
【００４６】
有効データは、アトミック操作要求によるアトミック操作を実行したか否かを表すデータである。実行元データは、アトミック操作要求によるアトミック操作の実行元、つまり応答の返信元を表すデータであり、例えば実行元が主記憶かキャッシュかを示す値である。シーケンス番号は、アトミック操作要求に格納されていたシーケンス番号である。データは、アトミック操作対象アドレスのアトミック操作の実行前のデータである。
【００４７】
主記憶装置２３のメモリコントローラ２３ａは、メモリバス２５上を転送されるアトミック操作要求を受信し、受信したアトミック操作要求を処理する。それにより、メモリコントローラ２３ａは、アトミック操作対象アドレスのデータに対して要求されたアトミック操作を実行し、アトミック操作の実行後のデータを新たに保持させる。このとき、応答は、有効データとして、アトミック操作の実行を表すデータ、シーケンス番号として、アトミック操作要求に格納されているシーケンス情報、データとして、アトミック操作の実行前のデータをそれぞれ用いて生成される。
【００４８】
各キャッシュメモリ２１２では、アトミック操作要求はキャッシュコントローラ２１３によって処理される。キャッシュメモリ２１２では、主記憶装置２３とは異なり、各キャッシュラインは状態で管理されている。キャッシュコントローラ２１３は、アトミック操作対象アドレスのデータを格納したキャッシュラインの状態を確認し、確認した状態に応じて、アトミック操作を実行する。
【００４９】
ＭＯＥＳＩプロトコルでは、キャッシュラインの状態は、Ｍ、Ｏ、Ｅ、Ｓ、Ｉの５状態に分類される。Ｉ状態以外では、キャッシュラインにアトミック操作対象アドレスの有効なデータが存在する。このことから、キャッシュコントローラ２１３は、Ｉ状態以外、即ちＭ、Ｏ、Ｅ、及びＳのうちの何れかの状態であった場合、キャッシュラインのデータにアトミック操作を実行し、そのキャッシュラインのデータを更新する。それにより、キャッシュコントローラ２１３は、アトミック操作の実行を表す有効データを用いて応答を生成し、生成した応答をメモリバス２５上に出力する。その応答に格納されるデータは、アトミック操作の実行前のデータである。
【００５０】
Ｉ状態であった場合、或いはアトミック操作対象アドレスのデータを格納したキャッシュラインが存在しない場合、キャッシュコントローラ２１３は、アトミック操作を実行することなく、応答を生成してメモリバス２５上に出力する。このとき、応答に格納される有効データは、アトミック操作の未実行を表すデータである。
【００５１】
キャッシュラインの状態は、アトミック操作を実行するか否か、及びその状態に係わらず、維持される。これは、上記のように、キャッシュラインのデータを保存する主記憶装置２３上でも、そのデータに対するアトミック操作が実行されるからである。
【００５２】
図７は、キャッシュコントローラによるアトミック操作要求処理のフローチャートである。このアトミック操作要求処理は、アトミック操作要求の受信を契機に、受信したアトミック操作要求の処理のためにキャッシュコントローラ２１３が実行する一連の処理の流れを表したものである。ここで図7を参照し、アトミック操作要求処理について詳細に説明する。
【００５３】
キャッシュコントローラ２３は、メモリバス２５上を転送されるメッセージを監視しており、そのメモリバス２５上にアトミック操作要求をパケット受信部２２２が出力した場合、キャッシュコントローラ２３はそのアトミック操作要求を検知する（ＳＣ１）。アトミック操作要求を検知した場合、キャッシュコントローラ２３は、検知したアトミック操作要求のアトミック操作対象アドレスのデータを格納したキャッシュラインがヒットし、且つヒットしたキャッシュラインがＩ状態以外か否か判定する（ＳＣ２）。アトミック操作対象アドレスのデータを格納したキャッシュラインがヒットしない、或いはヒットしたキャッシュラインがＩ状態であった場合、ＳＣ２の判定はＮｏとなってＳＣ４に移行する。アトミック操作対象アドレスのデータを格納したキャッシュラインがヒットし、且つヒットしたキャッシュラインがＩ状態以外の状態であった場合、ＳＣ２の判定はＹｅｓとなってＳＣ３に移行する。
【００５４】
ＳＣ３では、キャッシュコントローラ２３は、ヒットしたキャッシュラインのデータに対し、検知したアトミック操作要求のアトミック操作種類が指定するアトミック操作を、検知したアトミック操作要求のオペランドを用いて実行する。このとき、アトミック操作の実行後のデータは、新たにキャッシュラインに上書きされ、アトミック操作の実行前のデータは保存される。加算結果の主記憶装置２３へのライトバックは行われない。
【００５５】
キャッシュライン上のデータを更新したキャッシュコントローラ２３は、アトミック操作の実行を表す有効データ、アトミック操作要求のシーケンス番号、アトミック操作の実行前のデータを用いて応答を生成し、生成した応答をメモリバス２５上に出力する（ＳＣ４）。その後、このアトミック操作要求処理が終了する。
【００５６】
このＳＣ２にＳＣ４から移行した場合、キャッシュコントローラ２３は、アトミック操作の未実行を表す有効データ、アトミック操作要求のシーケンス番号を用いて応答を生成し、生成した応答をメモリバス２５上に出力する（ＳＣ４）。その後、このアトミック操作要求処理が終了する。
【００５７】
このように、キャッシュコントローラ２３は、アトミック操作要求が主記憶装置２３でも処理されることから、キャッシュラインがＭ状態、及びＯ状態の何れであっても主記憶装置２３へのライトバック等は行わない。そのため、アトミック操作要求は非常に短時間に処理される。キャッシュメモリ２１２間の整合性、つまりキャッシュコヒーレンシは、アトミック操作要求が主記憶装置２３に無条件に処理させることにより、維持される。
【００５８】
各キャッシュメモリ２１２、及び主記憶装置２３からメモリバス２５上に出力された応答は、ネットワークインタフェース装置２２のパケット受信部２２２によって受信され、処理される。
【００５９】
パケット受信部２２２は、キャッシュメモリ２１２からの応答を受信した場合、アトミック操作要求パケットの応答（以降「アトミック操作応答パケット」と表記）をネットワーク１上に送信する。
【００６０】
アトミック操作応答パケットは、アトミック操作要求パケット（図３）と同様の構成である。パケットヘッダでは、アトミック操作種類データが存在しないことがアトミック操作要求パケットと異なる。ペイロードには、アトミック操作を実行したキャッシュメモリ２１２、或いは主記憶装置２３が存在している場合、アトミック操作要求の応答に格納されたデータが含まれる。キャッシュメモリ２１２、及び主記憶装置２３の何れもアトミック操作を実行していない場合、その旨を表すデータがペイロードに含まれる。
【００６１】
アトミック操作要求の応答は、キャッシュメモリ２１２のほうが主記憶装置２３よりも早く返信されるのが普通である。しかし、何らかの理由により、主記憶装置２３からの応答が、アトミック操作を実行したキャッシュメモリ２１２よりも早く返信される可能性が考えられる。アトミック操作を実行していないキャッシュメモリ２１２からの応答が、アトミック操作を実行したキャッシュメモリ２１２よりも早く出力されることは高い頻度で発生すると考えられる。また、全てのキャッシュメモリ２１２がアトミック操作を実行しない可能性もある。全てのキャッシュメモリ２１２がアトミック操作を実行しない場合、アトミック操作応答パケットのペイロードには、主記憶装置２３からの応答に格納されるデータを含めなければならない。このようなことから、パケット受信部２２２は、アトミック操作応答パケットを送信すべき契機の特定用に、処理状況情報２２２ａを用いている。
【００６２】
図６は、処理状況情報の構成例を説明する図である。図６では、処理状況情報２２２ａの構成例をテーブル形式で表している。ここでは、処理状況情報２２２ａはテーブル形式の情報であると想定する。処理状況情報２２２ａは、テーブル形式以外であっても良い。
【００６３】
図６に表すように、この処理状況情報２２２ａは、受信したアトミック操作要求パケット毎に、シーケンス番号、受信数、状態、及びデータを１レコード（エントリ）に格納するテーブルである。
【００６４】
シーケンス番号は、例えば直前に受信したアトミック操作要求パケットに割り当てたシーケンス番号をインクリメントした値であり、処理状況管理テーブル２２２ａから参照すべきエントリの抽出に用いられる。受信数は、各キャッシュメモリ２１２、及び主記憶装置２３からの応答の受信数を表すデータである。図６中に表記の「０」は、キャッシュメモリ２１２、及び主記憶装置２３の何れからも応答を受信していないことを表す初期値である。
【００６５】
状態は、アトミック操作応答パケットを送信したか否かを表すデータである。図６に表記の「待ち」は、アトミック操作応答パケットを送信していない待ち状態を表している。アトミック操作応答パケットを送信した場合、状態は、待ち状態から送信済み状態に移行される。
【００６６】
データは、アトミック操作応答パケットのペイロードとして格納するデータの有無、つまりアトミック操作の実行を表す有効データを有する応答の受信の有無を表すデータである。図６に表記の「無」は、アトミック操作の実行を表す有効データを有する応答を受信していないことを表している。その応答を受信した場合の内容は、「有」と表記する。
【００６７】
図８は、アトミック操作要求パケット処理のフローチャートである。このアトミック操作要求パケット処理は、アトミック操作要求パケットの受信を契機に、パケット受信部２２２がその応答であるアトミック操作応答パケットを送信するまでの一連の処理の流れを表したものである。次に図８を参照し、アトミック操作要求パケット処理について詳細に説明する。
【００６８】
パケット受信部２２２は、ネットワーク１上を転送されるパケットを監視しており、そのネットワーク１上を転送される自ノード２宛のアトミック操作要求パケットを受信する（ＳＮ１）。パケット受信部２２２は、受信したアトミック操作要求パケットにシーケンス番号を割り当て、割り当てたシーケンス番号を格納したアトミック操作要求を生成し、生成したアトミック操作要求をメモリバス１上に出力する。また、パケット受信部２２２は、処理状況情報２２２ａに１エントリを追加し、追加したエントリに、シーケンス番号、０の受信数、待ち状態を表す状態データ、「無」を表すデータを格納する（以上ＳＮ２）。
【００６９】
そのようにして処理状況情報２２２ａを更新したパケット受信部２２２は、アトミック操作要求の応答を受信するのを待つ（ＳＮ３）。応答を受信すると、パケット受信部２２２は、受信した応答のシーケンス番号を用いて処理状況情報２２２ａから１エントリを抽出し、抽出したエントリの状態データが「待ち状態」（図８中「応答待ち」と表記）を表しているか否か判定する（ＳＮ４）。その状態データが「待ち状態」を表していた場合、ＳＮ４の判定はＹｅｓとなってＳＮ５に移行する。その状態データが「送信済み状態」を表していた場合、ＳＮ４の判定はＮｏとなって上記ＳＮ３に戻る。ＳＮ４でのＮｏの判定は、対応するアトミック操作応答パケットが既に送信されたアトミック操作要求の応答を受信したことを意味する。
【００７０】
ＳＮ５では、パケット受信部２２２は、受信した応答の有効データがアトミック操作の実行を表し、且つ実行元データが何れかのキャッシュメモリ２１２を表しているか否か判定する。受信した応答がアトミック操作を実行した何れかのキャッシュメモリ２１２から送信されていた場合、ＳＮ５の判定はＹｅｓとなってＳＮ６に移行する。受信した応答の有効データがアトミック操作の未実行を表しているか、或いは受信した応答の実行元データが主記憶装置２３を表している場合、ＳＮ５の判定はＮｏとなってＳＮ８に移行する。
【００７１】
ＳＮ６では、パケット受信部２２２は、受信した応答中のデータ（図８中「アトミック操作結果のデータ」と表記）をペイロードに用いたアトミック操作応答パケットを生成し、生成したアトミック操作応答パケットをネットワーク１上に送信させる。生成したアトミック操作応答パケットのネットワーク１上への送信は、生成したアトミック操作応答パケットをパケット受信部２２２がパケット送信部２２１に出力し、その送信を依頼することで行われる。
【００７２】
アトミック操作応答パケットを送信させたパケット受信部２２２は、次に、処理状況情報２２２ａの受信した応答中のシーケンス番号を有するエントリの状態データを、「送信済み状態」を表す内容に更新する（ＳＮ７）。そのような処理状況情報２２２ａの更新を行った後、アトミック操作要求パケット処理が終了する。
【００７３】
上記ＳＮ５の判定がＮｏとなって移行するＳＮ８では、パケット受信部２２２は、処理状況情報２２２ａの受信した応答中のシーケンス番号を有するエントリの受信数データの値をインクリメントする。次に、パケット受信部２２２は、受信した応答の実行元データが何れかのキャッシュメモリ２１２を表しているか否か判定する（ＳＮ９）。受信した応答が何れかのキャッシュメモリ２１２から送信されていた場合、ＳＮ９の判定はＹｅｓとなってＳＮ１１に移行する。受信した応答が主記憶装置２３から送信されていた場合、ＳＮ９の判定はＮｏとなってＳＮ１０に移行する。
【００７４】
ＳＮ１０では、パケット受信部２２２は、受信した応答中のデータを保存し、処理状況情報２２２ａの受信した応答中のシーケンス番号を有するエントリのデータの内容を「有」に更新する。その更新を行った後、ＳＮ１１に移行する。
【００７５】
ＳＮ１１では、パケット受信部２２２は、処理状況情報２２２ａの受信した応答中のシーケンス番号を有するエントリの受信数データの値が、キャッシュメモリ２１２の数に１を加算した値と等しいか否か判定する。全てのキャッシュメモリ２１２、及び主記憶装置２３からの応答を受信した場合、受信数データの値は加算結果と等しくなる。そのため、ＳＮ１１の判定はＹｅｓとなってＳＮ１２に移行する。何れかのキャッシュメモリ２１２、或いは主記憶装置２３からの応答を受信していない場合、ＳＮ１１の判定はＮｏとなって上記ＳＮ３に戻る。
【００７６】
ＳＮ１２では、パケット受信部２２２は、ＳＮ１０で保存したデータをペイロードとして用いるアトミック操作応答パケットを生成し、生成したアトミック操作応答パケットをネットワーク１上に送信させる。その後、上記ＳＮ７に移行する。
【００７７】
このように、本実施形態では、何れかのキャッシュメモリ２１２から、アトミック操作応答パケットの生成に用いるべきデータを有する応答を受信できなければ、全ての応答を受信するのを待って、アトミック操作応答パケットを送信させるようにしている。処理速度の違いから、通常、パケット受信部２２２が最後に受信する応答を送信するのは主記憶装置２３となる。そのため、何れかのキャッシュメモリ２１２からアトミック操作の実行を表す応答が出力された場合、アトミック操作応答パケットはより迅速に返信されることとなる。従って、ノード２間のアトミック操作時のレイテンシはより短くなる。ノード２間のキャッシュコヒーレンシは、各キャッシュメモリ２１２、及び主記憶装置２３に、必要なアトミック操作を行わせることで維持される。
【００７８】
主記憶装置２３から応答をパケット受信部２２２が受信した時には、全キャッシュメモリ２１２からの応答をパケット受信部２２２は受信しているのが普通である。そのため、全キャッシュメモリ２１２からの応答を受信している場合、主記憶装置２３からの応答を待つ待ち合わせを行っても、通常、その待ち合わせは並列計算機システムの性能を低下させる要因とはならない。
【００７９】
なお、本実施形態では、アトミック操作要求に対する応答の処理、及びアトミック操作応答パケットの生成をパケット受信部２２２が行っているが、その処理、及びアトミック操作応答パケットの生成は別の構成要素に行わせても良い。それら全て、或いは一部を例えば制御部２２４に行わせても良い。
【００８０】
また、本実施形態では、プロセッサ２１に搭載された各キャッシュメモリ２１２にアトミック操作要求の処理を行わせているが、アトミック操作要求を処理させるコントローラをキャッシュメモリ２１２とは別に設けても良い。その別に設けるコントローラは、複数のキャッシュメモリ２１２へのアトミック操作要求を処理させるものであっても良い。
【００８１】
本実施形態では、主記憶装置２３にもアトミック操作を行わせるようにしているが、主記憶装置２３はアトミック操作を行わせる対象から除外させても良い。これは、キャッシュメモリ２１２上でアトミック操作を実行した後のデータは、主記憶装置２３上の対応するデータへのリード要求への返信として用いることができるためである。返信として用いることができるデータのキャッシュラインは、状態がＭ状態、或いはＯ状態のキャッシュラインである。
【００８２】
上記以外にも、様々な変形を行うことができる。
【００８３】
以上の変形例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
通信を行う通信制御装置と、データを記憶する主記憶装置と、前記通信制御装置と前記主記憶装置とに接続される演算処理装置とをそれぞれ有するとともに前記通信制御装置によりネットワークを介して接続される情報処理装置を複数備える並列計算機システムにおいて、
前記演算処理装置は、
不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行う処理部と、
前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知する通知部と、
を有することを特徴とする並列計算機システム。
（付記２）
前記主記憶装置は、
前記アトミック操作要求を前記通信制御装置が出力した場合に、前記アトミック操作を行う対象データに対して前記アトミック操作を行う他の処理部と、
前記対象データに対する前記アトミック操作を行った結果を前記通信制御装置に通知する他の通知部と、
を有することを特徴とする付記１記載の並列計算機システム。
（付記３）
前記通信制御装置は、
前記アトミック操作を要求するために前記ネットワークを介して送信されるメッセージであるアトミック操作要求メッセージを受信した場合、前記アトミック操作要求を前記演算処理装置と前記主記憶装置とに対して出力する要求部と、
前記要求部が出力したアトミック操作要求によるアトミック操作を行った処理結果の通知である処理結果通知を、前記演算処理装置又は前記主記憶装置から受信する受信部と、
前記受信部が受信した処理結果通知の送信元と前記処理結果通知が表すアトミック操作の実行情報とに基づき、前記アトミック操作要求メッセージの応答の生成に用いる処理結果通知を決定し、決定した前記処理結果通知を用いて前記応答を生成して前記ネットワークに出力する制御部と、
を有することを特徴とする付記１、または２記載の並列計算機システム。
（付記４）
前記制御部は、
前記アトミック操作を前記キャッシュメモリ上で実行した旨を表す実行通知を前記受信部が受信した場合、前記実行通知を用いて前記応答を生成し、前記実行通知を受信せずに前記主記憶装置からの処理結果通知を前記受信部が受信した場合、前記主記憶装置からの処理結果通知を用いて前記応答を生成する、
ことを特徴とする付記３記載の並列計算機システム。
（付記５）
通信を行う通信制御装置と、データを記憶する主記憶装置と、前記通信制御装置と前記主記憶装置とに接続される演算処理装置とをそれぞれ有するとともに前記通信制御装置によりネットワークを介して接続される情報処理装置を複数備える並列計算機システムにおいて、
前記演算処理装置は、
不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行い、
前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知することを特徴とする並列計算機システムの制御方法。
（付記６）
通信を行う通信制御装置と、データを記憶する主記憶装置と、前記通信制御装置と前記主記憶装置とに接続される演算処理装置とをそれぞれ有するとともに前記通信制御装置によりネットワークを介して他の情報処理装置に接続される情報処理装置において、
前記演算処理装置は、
不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行う処理部と、
前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知する通知部と、
を有することを特徴とする情報処理装置。
（付記７）
通信を行う通信制御装置と、データを記憶する主記憶装置と、前記通信制御装置と前記主記憶装置とに接続される演算処理装置において、
不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行う処理部と、
前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知する通知部と、
を有することを特徴とする演算処理装置。
（付記８）
データを記憶する主記憶装置に接続され、不可分操作であるアトミック操作を要求するアトミック操作要求を前記通信制御装置が出力した場合、対象データを格納するキャッシュメモリ上で前記対象データへの前記アトミック操作を行う処理部と、前記キャッシュメモリ上で前記アトミック操作を行った結果を前記通信制御装置に通知する通知部とを備える演算処理装置に接続する通信制御装置において、
前記アトミック操作を要求するために前記ネットワークを介して送信されるメッセージであるアトミック操作要求メッセージを受信した場合、前記アトミック操作要求を前記演算処理装置と前記主記憶装置とに対して出力する要求部と、
前記要求部が出力したアトミック操作要求によるアトミック操作を行った処理結果の通知である処理結果通知を、前記演算処理装置又は前記主記憶装置から受信する受信部と、
前記受信部が受信した処理結果通知の送信元と前記処理結果通知が表すアトミック操作の実行情報とに基づき、前記アトミック操作要求メッセージの応答の生成に用いる処理結果通知を決定し、決定した前記処理結果通知を用いて前記応答を生成して前記ネットワークに出力する制御部と、
を有することを特徴とする通信制御装置。
【符号の説明】
【００８４】
１    ネットワーク
２    ノード（情報処理装置）
２１    プロセッサ
２２    ネットワークインタフェース装置
２３    主記憶装置
２３ａ    メモリコントローラ
２５    メモリバス
２１１    プロセッサコア
２１２    キャッシュメモリ
２１３    キャッシュコントローラ
２２１    パケット送信部
２２２    パケット受信部
２２４    制御部
【図１】
2015106312.tif 000003
【図２】
2015106312.tif 000004
【図３】
2015106312.tif 000005
【図４】
2015106312.tif 000006
【図５】
2015106312.tif 000007
【図６】
2015106312.tif 000008
【図７】
2015106312.tif 000009
【図８】
2015106312.tif 000010