(57)【要約】【課題】制御ノードと計算ノードとを有する情報処理装置において、計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御する方法の実現が望まれていること。【解決手段】情報処理装置は、第１のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第２のメモリを有し、制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、第１のメモリと第２のメモリとには、ファイルの内容を記憶する第１のメモリ領域がそれぞれ形成されている。制御ノードは、計算ノードで動作する第１の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、第１の計算プロセスと計算ノードで上記第１のメモリ領域を利用している第２の計算プロセスとで第２のメモリの第１のメモリ領域を共有させるか否かを決定する。【選択図】図８
2019139404.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第２のメモリを有し、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、
前記第１のメモリと前記第２のメモリとには、ファイルの内容を記憶する第１のメモリ領域がそれぞれ形成されており、
前記制御ノードは、前記計算ノードで動作する第１の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第１の計算プロセスと前記計算ノードで前記第１のメモリ領域を利用している第２の計算プロセスとで前記第２のメモリの前記第１のメモリ領域を共有させるか否かを決定するように構成された
情報処理装置。
【請求項２】
前記制御ノードは、前記共有させるか否かの決定では、前記ファイルの更新日時、読み込み専用か否か、読み書き可能か否かのうちの少なくとも一つをさらに考慮して前記共有させるか否かの決定を行う、
請求項１に記載の情報処理装置。
【請求項３】
前記制御ノードは、前記決定で共有させると決定した場合、前記制御ノードで動作する、前記第１の計算プロセスに対応する代理プロセスの仮想アドレス空間に前記第１のメモリに形成された前記第１のメモリ領域をマッピングし、前記第１の計算プロセスの仮想アドレス空間に前記第２のメモリに形成された前記第１のメモリ領域をマッピングする、
請求項１または２に記載の情報処理装置。
【請求項４】
前記制御ノードは、前記決定で共有させないと決定した場合、前記制御ノードで動作する、前記第１の計算プロセスに対応する代理プロセスの仮想アドレス空間に前記第１のメモリに形成された前記第１のメモリ領域をマッピングし、前記第２のメモリに、前記ファイルの内容を記憶する第２のメモリ領域を形成し、前記第１の計算プロセスの仮想アドレス空間に前記第２のメモリ領域をマッピングし、前記第１の計算プロセスに対応する前記代理プロセスの仮想アドレス空間から前記ファイルの内容を前記第１の計算プロセスの仮想アドレス空間にコピーする、
請求項１乃至３の何れかに記載の情報処理装置。
【請求項５】
前記制御ノードは、前記ファイルが更新されると、前記第１のメモリに前記ファイルの更新内容を格納する第３のメモリ領域を生成する
請求項１乃至４の何れかに記載の情報処理装置。
【請求項６】
前記制御ノードは、前記ファイルの更新後に、前記決定で共有させないと決定した場合、前記制御ノードで動作する、前記第１の計算プロセスに対応する代理プロセスの仮想アドレス空間に前記第１のメモリに形成された前記第３のメモリ領域をマッピングし、前記第２のメモリに、前記ファイルの内容を記憶する第３のメモリ領域を形成し、前記第１の計算プロセスの仮想アドレス空間に前記第２のメモリの前記第３のメモリ領域をマッピングし、前記第１の計算プロセスに対応する前記代理プロセスの仮想アドレス空間から前記ファイルの更新内容を前記第１の計算プロセスの仮想アドレス空間にコピーする、
請求項５に記載の情報処理装置。
【請求項７】
第１のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第２のメモリを有し、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、前記第１のメモリと前記第２のメモリとには、ファイルの内容を記憶する第１のメモリ領域がそれぞれ形成された情報処理処置が実行する情報処理方法であって、
前記制御ノードは、前記計算ノードで動作する第１の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とファイル更新日時とマッピング種別とに基づいて、前記第１の計算プロセスと前記計算ノードで前記第１のメモリ領域を利用している第２の計算プロセスとで前記第２のメモリの前記第１のメモリ領域を共有させるか否かを決定する
情報処理方法。
【請求項８】
オペレーティングシステムが組み込まれていない計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードであって、
第１のメモリを有し、
前記第１のメモリには、前記計算ノードが有する第２のメモリの第１のメモリ領域に記憶されたファイルと同じファイルの内容を記憶する第１のメモリ領域が形成されており、
前記計算ノードで動作する第１の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第１の計算プロセスと前記計算ノードで前記第１のメモリ領域を利用している第２の計算プロセスとで前記第２のメモリの前記第１のメモリ領域を共有させるか否かを決定する判定手段を有する
制御ノード。
【請求項９】
第１のメモリを有し、前記第１のメモリには、オペレーティングシステムが組み込まれていない計算ノードが有する第２のメモリの第１のメモリ領域に記憶されたファイルと同じファイルの内容を記憶する第１のメモリ領域が形成されている、前記計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードを、
前記計算ノードで動作する第１の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第１の計算プロセスと前記計算ノードで前記第１のメモリ領域を利用している第２の計算プロセスとで前記第２のメモリの前記第１のメモリ領域を共有させるか否かを決定する判定手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、制御ノード、およびプログラムに関する。
【背景技術】
【０００２】
メモリマップドファイル機能は、ファイルを仮想アドレス空間上の領域にマッピングさせる機能である。プロセスごとに固有の内容を保持するプライベートマッピングと、プロセス間で内容を共有する共有マッピングとがある。メモリマップドファイル機能を利用すると、システムコールを使ってファイルの内容を読み書きする必要はなく、メモリアクセス命令でファイルの内容を読み書きできる。
【０００３】
メモリマップドファイル機能は、通常、オペレーティングシステムの一つの機能として提供される。従って、オペレーティングシステムが組み込まれていないコンピュータ単体では、メモリマップドファイル機能を利用することは困難である。
【０００４】
他方、オペレーティングシステムが組み込まれていないコンピュータとオペレーティングシステムが組み込まれているコンピュータとで構成されるマルチプロセッサシステムにおいて、オペレーティングシステムが組み込まれているコンピュータの制御により、オペレーティングシステムが組み込まれていないコンピュータでメモリマップドファイル機能を利用可能にした技術が特許文献１で提案されている。
【０００５】
特許文献１に記載される技術では、第１のメモリを有しオペレーティングシステムが組み込まれたコンピュータ（以下、制御ノードと記す）と、第２のメモリを有し、制御ノードにより制御される、オペレーティングシステムが組み込まれていないコンピュータ（以下、計算ノードと記す）とを有する情報処理装置において、第１のメモリと第２のメモリとには、双方のメモリ間でデータの内容を同期する共有メモリ領域がそれぞれ形成されており、制御ノードは、計算ノードの動作が停止しているときに、第１のメモリと第２のメモリとにそれぞれ形成されている共有メモリ領域内のデータの同期を行うように構成されている。これによって、制御ノードで動作するプロセスと計算ノードで動作するプロセスとが同じファイルをメモリマップドファイル機能の共有マッピングという形態でアクセスすることを可能にしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第５９４９９７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述したように、特許文献１に記載する技術を使用することにより、計算ノードで動作するプロセスは、ファイルをメモリマップドファイル機能の共有マッピングという形態でアクセスすることができる。しかしながら、特許文献１には、第２のメモリを計算ノードで動作する複数のプロセスで共有する方法については説明されていない。また、メモリマップドファイルには、メモリを複数のプロセスで共有する共有マッピングと、複数のプロセスが別々のメモリをアクセスするプライベートマッピングという異なる形態が存在する。しかし、特許文献１には、プライベートマッピングについては説明されていない。そのため、制御ノードと計算ノードとを有する情報処理装置において、計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御する方法の実現が望まれている。
【０００８】
本発明の目的は、上述した課題、即ち、制御ノードと計算ノードとを有する情報処理装置において、計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御する方法の実現が望まれている、という課題を解決する情報処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一形態に係る情報処理装置は、
第１のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第２のメモリを有し、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、
前記第１のメモリと前記第２のメモリとには、ファイルの内容を記憶する第１のメモリ領域がそれぞれ形成されており、
前記制御ノードは、前記計算ノードで動作する第１の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第１の計算プロセスと前記計算ノードで前記第１のメモリ領域を利用している第２の計算プロセスとで前記第２のメモリの前記第１のメモリ領域を共有させるか否かを決定するように構成されている。
【００１０】
また本発明の他の形態に係る情報処理方法は、
第１のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第２のメモリを有し、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、前記第１のメモリと前記第２のメモリとには、ファイルの内容を記憶する第１のメモリ領域がそれぞれ形成された情報処理処置が実行する情報処理方法であって、
前記制御ノードは、前記計算ノードで動作する第１の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第１の計算プロセスと前記計算ノードで前記第１のメモリ領域を利用している第２の計算プロセスとで前記第２のメモリの前記第１のメモリ領域を共有させるか否かを決定する。
【００１１】
また本発明の他の形態に係る制御ノードは、
オペレーティングシステムが組み込まれていない計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードであって、
第１のメモリを有し、
前記第１のメモリには、前記計算ノードが有する第２のメモリの第１のメモリ領域に記憶されたファイルと同じファイルの内容を記憶する第１のメモリ領域が形成されており、
前記計算ノードで動作する第１の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第１の計算プロセスと前記計算ノードで前記第１のメモリ領域を利用している第２の計算プロセスとで前記第２のメモリの前記第１のメモリ領域を共有させるか否かを決定する判定手段を有する。
【００１２】
また本発明の他の形態に係るプログラムは、
第１のメモリを有し、前記第１のメモリには、オペレーティングシステムが組み込まれていない計算ノードが有する第２のメモリの第１のメモリ領域に記憶されたファイルと同じファイルの内容を記憶する第１のメモリ領域が形成されている、前記計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードを、
前記計算ノードで動作する第１の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第１の計算プロセスと前記計算ノードで前記第１のメモリ領域を利用している第２の計算プロセスとで前記第２のメモリの前記第１のメモリ領域を共有させるか否かを決定する判定手段として機能させる。
【発明の効果】
【００１３】
本発明は、上述した構成を有することにより、制御ノードと計算ノードとを有する情報処理装置において、計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態の情報処理装置のソフトウェア構成の一例を示すブロック図である。
【図３】本発明の第１の実施形態で使用する、計算ノードの物理メモリ共有要否の判定基準の一例を示す図である。
【図４】本発明の第１の実施形態の計算ノードにおける計算プロセスが実行する処理の一例を表すフローチャートである。
【図５】本発明の第１の実施形態の制御ノードにおける代理プロセスと計算ノード管理手段とが実行する処理の一例を表すフローチャートである。
【図６】本発明の第１の実施形態において共有マッピングでファイルをマップするときの動作を説明する図である。
【図７】本発明の第１の実施形態において読み込み専用のプライベートマッピングでファイルをマップするときの動作を説明する図である。
【図８】本発明の第１の実施形態において読み書き可能なプライベートマッピングでファイルをマップするときの動作を説明する図である。
【図９】本発明の第２の実施形態に係る情報処理装置のブロック図である。
【発明を実施するための形態】
【００１５】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第１の実施形態]
図１は、本発明の第１の実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。図１を参照すると、本実施形態の情報処理装置は、制御ノード１００と、計算ノード２００と、制御ノード１００と計算ノード２００間を接続するノード間通信手段３００とから構成されている。図１の例では、計算ノード２００は１つであるが、２つ以上あっても良い。
【００１６】
制御ノード１００は、物理メモリ１２０と、プロセッサ１８０と、データ転送手段１９０とを含んで構成されている。計算ノード２００は、物理メモリ２２０と、プロセッサ２８０と、データ転送手段２９０とを含んで構成されている。制御ノード１００と計算ノード２００とは、同じコンピュータアーキテクチャを有していても良いし、互いに異なるコンピュータアーキテクチャを有していても良い。物理メモリ１２０、２２０と、プロセッサ１８０、２８０と、データ転送手段１９０、２９０とは、ノード内ではお互いに接続されており、プロセッサ１８０、２８０は、自ノード内の物理メモリ１２０、２２０、データ転送手段１９０、２９０にアクセス可能である。また、本実施形態の情報処理装置は、制御ノード１００が計算ノード２００の物理メモリ２２０へアクセスするときは、ノード間通信手段３００を使用する。
【００１７】
データ転送手段１９０、２９０は、プロセッサ１８０、２８０を介さずに物理メモリ１２０、２２０に対してアクセスするＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）エンジン、プロセッサ１８０、２８０上のレジスタ等の資源に対してアクセスする対プロセッサ通信機能を有している。
【００１８】
計算ノード２００のプロセッサ２８０は、１つ以上のプロセッサコアを含んで構成されている。計算ノード２００のプロセッサコアを計算コアと呼ぶ。計算コアは、例えば、汎用レジスタ群と、制御レジスタ群と、例外検出手段と、レジスタ群アクセス手段と、例外通知手段とを有している。プロセッサ２８０は、並列に命令を実行しており、ある命令がページフォールトを発生させても、その命令から実行を再開させることができなくても良い。
【００１９】
汎用レジスタ群は、ｘ８６やＡＲＭなどの一般的なプロセッサと同様に、プログラムカウンタ（ＰＣ）や演算結果を格納するための汎用レジスタ（ＧＰＲ）などから構成される。これらのレジスタは、プロセッサ２８０の計算コアでの命令の実行に伴い書き換えられる。また、プロセッサ２８０の計算コアがロード命令、ストア命令を実行することで、汎用レジスタ群とメモリとの間でデータ転送が行われる。
【００２０】
制御レジスタ群は、プロセッサ２８０の計算コアの実行を制御するためのレジスタである。制御ノード１００は、プロセッサ２８０の計算コアの制御レジスタに対して、ノード間通信手段３００及びデータ転送手段１９０、２９０を通じて、命令の実行の開始及び実行の停止を指示する。
【００２１】
例外検出手段は、命令の実行中に何らかの例外を検出した場合に、制御レジスタ群に実行の停止の指示を行う。同時に、例外検出手段は、例外通知手段に対して、例外通知の依頼を行う（例外発生情報を送信する）。上記の例外とは、ゼロ除算例外などの演算例外、ページフォールトやメモリアクセス境界違反などのメモリアクセス系例外、システムコール呼び出しのためのソフトウェアトラップなどの一般のプロセッサで発生する例外を指す。
【００２２】
例外通知手段は、例外検出手段から取得した例外発生情報に基づき、ノード間通信手段３００を用いて、制御ノード１００に対して、プロセッサ２８０の計算コアでの例外を通知する。
【００２３】
レジスタ群アクセス手段は、制御ノード１００から発行された指示に基づいて、汎用レジスタ群及び制御レジスタ群の各レジスタに対して読み出し・書き込みを行う。
【００２４】
図２は、本実施形態の情報処理装置のソフトウェア構成の一例を示すブロック図である。図２を参照すると、計算ノード２００上では、複数の計算プロセス２４０、２５０、２６０が動作する。計算プロセス２４０、２５０、２６０は、計算ノード２００上で動作するアプリケーションプログラムの開始等に伴い生成され、その実行の終了に伴って破棄される。
【００２５】
計算ノード２００では、オペレーティングシステムが動作しない。そのため、オペレーティングシステムが提供するサービスの代替機能を、制御ノード１００がノード間通信手段３００を介して計算ノード２００に対して提供する。
【００２６】
一方、制御ノード１００は、計算ノード管理手段１１０と、ファイルシステム１３０と、複数の代理プロセス１４０、１５０、１６０と、オペレーティングシステム１７０とを有する。
【００２７】
ファイルシステム１３０は、ファイル１３１、１３２を保持する。ファイル１３１、１３２は、デバイス番号とｉノード番号の組合せなどで構成されたファイル識別情報で特定可能である。ファイルシステム１３０は、物理メモリ１２０に保持することもでき、或いは制御ノード１００からアクセス可能な外部ストレージに保持することもできる。
【００２８】
オペレーティングシステム１７０は、例えば、メモリマップドファイル機能やシステムコールなどのオペレーティングシステムとしての一般的な機能を有している。オペレーティングシステム１７０は、Ｌｉｎｕｘ（登録商標）やＷｉｎｄｏｗｓ（登録商標）などに代表される計算機に用いられるコモディティのオペレーションシステムであって良い。
【００２９】
代理プロセス１４０、１５０、１６０は、計算ノード２００上の計算プロセス２４０、２５０、２６０に対して１対１に対応して生成される。代理プロセス１４０、１５０、１６０は、対応する計算プロセス２４０、２５０、２６０が発行するシステムコール要求を、ノード間通信手段３００、計算ノード管理手段１１０を介して受け付ける。そして、代理プロセス１４０、１５０、１６０は、計算ノード２００上に存在するべきオペレーションシステムの代替でシステムコール処理を行う。
【００３０】
また代理プロセス１４０、１５０、１６０は、システムコール要求を代理実行する機能を複数有する。例えば、代理プロセス１４０、１５０、１６０は、計算プロセス２４０、２５０、２６０のメモリ更新を行うシステムコールを代理実行する。また、代理プロセス１４０、１５０、１６０は、計算プロセス２４０、２５０、２６０のメモリマップドファイル要求を代理実行する。
【００３１】
代理プロセス１４０、１５０、１６０が利用する物理メモリ１２０の領域と、ファイルシステム１３０上のファイルとの対応状態を表す情報は、オペレーティングシステム１７０が保持する。
【００３２】
計算ノード管理手段１１０は、計算ノード２００上のプロセッサ２８０、物理メモリ２２０などのハードウェア資源の管理を行う。また、計算ノード管理手段１１０は、一部のリソースに対する代理プロセス１４０、１５０、１６０からプロセッサ２８０へのアクセスの仲介なども実施する。例えば、計算ノード管理手段１１０は、計算プロセス２４０、２５０、２６０を生成する際のプロセッサ２８０中の計算コアの割り当て、計算ノード２００上のメモリ管理、計算プロセス２４０、２５０、２６０から代理プロセス１４０、１５０、１６０に対するシステムコールの仲介などを行う。また、計算ノード管理手段１１０は、計算プロセス２４０、２５０、２６０が利用する物理メモリ２２０の領域と、ファイルシステム１３０上のファイルとの対応関係を表す情報を管理する。以上のような操作を実現するために、計算ノード管理手段１１０は、計算ノード２００上のプロセッサ２８０及び物理メモリ２２０などのハードウェア資源と計算プロセス２４０、２５０、２６０や代理プロセス１４０、１５０、１６０などのソフトウェア資源との紐付けを行って、これらを管理する。
【００３３】
また、計算ノード管理手段１１０は、制御ノード１００上の物理メモリ１２０と計算ノード２００上の物理メモリとの同期をとる機能を有する。例えば、計算ノード管理手段１１０は、計算ノード２００上の物理メモリ２２０の領域内のデータの更新内容を、制御ノード１００上の物理メモリ１２０上の対応する領域にコピーする。或いは計算ノード管理手段１１０は、制御ノード１００上の物理メモリ１２０の領域内のデータの更新内容を、計算ノード２００上の物理メモリ２２０上の対応する領域にコピーする。この同期は、例えば特許文献１に記載されるように、計算ノード２００のプロセッサ２８０の動作が停止しているときに行われる。
【００３４】
さらに、計算ノード管理手段１１０は、図２に示すように、計算ノードの物理メモリ共有要否判定手段（以下、単に判定手段と記す）１１１を有している。判定手段１１１は、計算プロセス２４０、２５０、２６０がメモリマップドファイルを要求した際に、計算ノード２００の物理メモリ２２０の共有要否を、ファイル識別情報、ファイル更新日時、マッピング種別などの情報に基づいて判定するように構成されている。
【００３５】
図３は、計算ノードの物理メモリ共有要否の判定基準の一例を示す。判定手段１１１は、計算ノード２００の物理メモリ２２０上に既に存在するファイルのファイル識別情報と同じファイル識別情報を有するファイルのメモリマップドファイル要求が発生した場合、図３に示す判定基準に基づいて計算ノードの物理メモリ共有の要否を判定する。図３に示す判定基準では、マッピング種別が共有マッピングの場合、読み込み専用であるか、読み書き可能であるかを問わず、共有が必要である。また、マッピング種別がプライベートマッピングの場合、読み書き可能であれば、共有が不要である。また、読み込み専用のプライベートマッピングであれば、当該ファイルの更新日時に変化がない場合（つまり更新日時が同じ場合）は、共有が必要である（従って、更新日時が相違する場合、共有は不要である）。
【００３６】
判定手段１１１は、発生したメモリマップドファイル要求を解析することにより、メモリマップドファイルを要求されたファイルのファイル識別情報、マッピング種別を取得することができる。また判定手段１１１は、計算ノード２００の物理メモリ２２０上に既に存在するメモリマップドファイルのファイル識別情報、ファイル更新日時、およびそのメモリ領域は、例えば計算ノード管理手段１１０におけるメモリ管理情報やｉノードから取得することができる。
【００３７】
以上のような制御ノード１００は、既製品のＰＣサーバや、ＬＳＩでも良い。またノード間通信手段３００は、ＰＣＩエクスプレスや、ＡＸＩなどのインターコネクトでも良い。また計算ノード２００は、ＰＣＩエクスプレスのカードでも良いし、制御ノードに接続されたＬＳＩでも良い。計算ノード２００は、アクセラレーターや、グラフィックスプロセッシングユニットでも良い。制御ノード１００と計算ノード２００が一つのＬＳＩに実装されても良い。
【００３８】
次に本実施形態の情報処理装置の動作を説明する。
【００３９】
図４は、計算ノード２００における計算プロセスが実行する処理の一例を表すフローチャートである。図５は、制御ノード１００における代理プロセスと計算ノード管理手段とが実行する処理の一例を表すフローチャートである。図５の各処理は、代理プロセスが行っても良いし、計算ノード管理手段が行っても良い。但し、物理メモリの共有要否の判定５１４は、計算ノードの物理メモリ共有要否判定手段１１１が行う。
【００４０】
＜共有マッピング＞
図６は、共有マッピングでファイルをマップするときの動作の一例を説明する図である。以下、図１〜図６を参照して、共有マッピングでファイルをマップするときの動作を説明する。
【００４１】
計算プロセス２４０が共有マッピングでファイル１３１のマップを要求すると（５０１）、プロセッサ２８０が計算プロセス２４０の実行を停止する（５０２）。この場合は、代理プロセス１４０と計算ノード管理手段１１０とによって図５に示した処理が行われる。まず、上記要求を受信すると（５１１）、代理プロセス１４０の仮想アドレス空間上の領域１４１にファイル１３１をマップする（５１２）。これは、オペレーティングシステム１７０の一般的な機能を用いて行う。その結果、制御ノード１００の物理メモリ１２０上に物理メモリ１２１が確保され、ファイル１３１の内容が読み込まれる。次に、ファイル１３１の内容が計算ノードの物理メモリ２２０上に存在するか否かを判定する（５１３）。初めてファイル１３１をマップする場合は、存在しない。そのため、計算ノード２００の物理メモリ２２０上に物理メモリ２２１を確保し（５１５）、計算プロセス２４０の仮想アドレス空間２４１に物理メモリ２２１をマップする（５１６）。次に、代理プロセス１４０の仮想アドレス空間の領域１４１にマップされているファイル１３１の内容を、計算プロセス２４０の仮想アドレス空間上の領域２４１へコピーし（５１７）、計算プロセス２４０の実行再開を指示する（５１９）。すると、計算ノード２００で計算プロセス２４０が実行再開される（５０３）。
【００４２】
続けて、計算プロセス２５０が共有マッピングでのファイル１３１のマップを要求すると（５０１）、プロセッサ２８０が計算プロセス２５０の実行を停止する（５０２）。この場合は、代理プロセス１５０と計算ノード管理手段１１０とによって図５に示した処理が行われる。まず、上記要求を受信すると（５１１）、代理プロセス１５０の仮想アドレス空間上の領域１５１にファイル１３１をマップする（５１２）。その結果、物理メモリ１２１が代理プロセス１５０の仮想アドレス空間上の領域１５１にもマップされる。次に、ファイル１３１の内容が計算ノード２００の物理メモリ２２０上に存在するか否かを判定する（５１３）。すでにファイル１３１をマップした計算プロセス２４０が存在するので、ファイル１３１の内容が物理メモリ２２０上の物理メモリ２２１に存在する。次に、物理メモリ２２１の共有要否の判定を図３に基づいて行う（５１４）。共有マッピングの場合は、読み込み専用であるか、読み書き可能であるかを問わず、常に共有が必要と判定する。そのため、計算プロセス２５０の仮想アドレス空間上の領域２５１に物理メモリ２２１をマップし（５１８）、計算プロセス２５０の実行再開を指示する（５１９）。すると、計算ノード２００で計算プロセス２５０が実行再開される（５０３）。この結果、計算プロセス２４０と計算プロセス２５０が物理メモリ２２１を共有するため、メモリマップドファイルを共有メモリとしてプロセス間通信に使用することができる。
【００４３】
＜読み込み専用プライベートマッピング＞
図７は、読み込み専用のプライベートマッピングでファイルをマップするときの動作の一例を説明する図である。以下、図１〜図５、図７を参照して、読み込み専用のプライベートマッピングでファイルをマップするときの動作を説明する。
【００４４】
計算プロセス２４０が読み込み専用のプライベートマッピングでのファイル１３１のマップを要求すると（５０１）、プロセッサ２８０が計算プロセス２４０の実行を停止する（５０２）。この場合は、代理プロセス１４０と計算ノード管理手段１１０とが図５の処理を行う。まず、上記要求を受信すると（５１１）、代理プロセス１４０の仮想アドレス空間上の領域１４２にファイル１３１をマップする（５１２）。これは、オペレーティングシステム１７０の一般的な機能を用いて行う。その結果、制御ノード１００の物理メモリ１２０上に物理メモリ１２２が確保され、ファイル１３１の内容が読み込まれる。次に、ファイル１３１の内容が計算ノード２００の物理メモリ２２０上に存在するか否かを判定する（５１３）。初めてファイル１３１をマップする場合は、存在しない。そのため、計算ノード２００の物理メモリ２２０上に物理メモリ２２２を確保し（５１５）、計算プロセス２４０の仮想アドレス空間上の領域２４２に物理メモリ２２２をマップする（５１６）。次に、代理プロセス１４０の仮想アドレス空間上の領域１４２にマップされているファイル１３１の内容を、計算プロセス２４０の仮想アドレス空間上の領域２４２へコピーし（５１７）、計算プロセス２４０の実行再開を指示する（５１９）。すると、計算ノード２００で計算プロセス２４０が実行再開される（５０３）。
【００４５】
続けて、計算プロセス２５０が読み込み専用のプライベートマッピングでのファイル１３１のマップを要求すると（５０１）、プロセッサ２８０が計算プロセス２５０の実行を停止する（５０２）。この場合は、代理プロセス１５０と計算ノード管理手段１１０とが図５の処理を行う。まず、上記要求を受信すると（５１１）、代理プロセス１５０の仮想アドレス空間上の領域１５２にファイル１３１をマップする（５１０）。その結果、物理メモリ１２２が代理プロセス１５０の仮想アドレス空間上の領域１５２にもマップされる。次に、ファイル１３１の内容が計算ノード２００の物理メモリ２２０上に存在するか否かを判定する（５１３）。すでにファイル１３１をマップした計算プロセス２４０が存在するので、ファイル１３１の内容が物理メモリ２２３に存在する。次に、物理メモリ２２３の共有要否の判定を図３に基づいて行う（５１４）。読み込み専用のプライベートマッピングの場合、ファイルが同一で、かつ、ファイルの更新日時が同一であれば、共有が必要と判定する。そのため、計算プロセス２５０の仮想アドレス空間上の領域２５２に物理メモリ２２２をマップし（５１８）、計算プロセス２５０の実行再開を指示する（５１９）。すると、計算ノード２００で計算プロセス２５０が実行再開される（５０３）。この結果、計算プロセス２４０と計算プロセス２５０とが物理メモリ２２２を共有することで、省メモリを実現できる。
【００４６】
さらに、制御ノード１００または計算ノード２００のプロセスによって、ファイル１３１が更新された場合を考える。この場合、オペレーティングシステム１７０の機能によって、新たに物理メモリ１２３が割り当てられ、更新内容が保持される（コピーオンライト）。
【００４７】
その後、計算プロセス２６０が読み込み専用のプライベートマッピングでのファイル１３１のマップを要求すると（５０１）、プロセッサ２８０が計算プロセス２６０の実行を停止する（５０２）。この場合は、代理プロセス１６０と計算ノード管理手段１１０が図５の処理を行う。まず、上記要求を受信すると（５１１）、代理プロセス１６０の仮想アドレス空間上の領域１６２にファイル１３１をマップする（５１０）。その結果、物理メモリ１２３が代理プロセス１６０の仮想アドレス空間上の領域１６２にマップされる。次に、ファイル１３１の内容が計算ノード２００の物理メモリ２２０上に存在するか判定する（５１３）。すでにファイル１３１をマップした計算プロセス２４０が存在するので、ファイル１３１の内容が物理メモリ２２０に存在する。次に、物理メモリの共有要否の判定を図３に基づいて行う（５１４）。読み込み専用のプライベートマッピングの場合、ファイルが同一であっても、ファイルの更新日時が異なれば、共有が不要と判定する。そのため、計算ノード２００の物理メモリ２２０から物理メモリ２２３を確保し（５１５）、計算プロセス２６０の仮想アドレス空間上の領域２６２に物理メモリ２２３をマップする（５１６）。次に、代理プロセス１６０の仮想アドレス空間上の領域１６２にマップされているファイル１３１の内容を、計算プロセス２６０の仮想アドレス空間上の領域２６２へコピーし（５１７）、計算プロセス２６０の実行再開を指示する（５１９）。すると、計算ノード２００で計算プロセス２６０が実行再開される（５０３）。この結果、計算プロセス２６０は、ファイル１３１の更新された内容を参照することができる。
【００４８】
＜読み書き可能なプライベートマッピング＞
図８は、読み書き可能なプライベートマッピングでファイルをマップするときの動作の一例を説明する図である。以下、図１〜図５、図８を参照して、読み書き可能なプライベートマッピングでファイルをマップするときの動作を説明する。
【００４９】
計算プロセス２４０が読み書き可能なプライベートマッピングでのファイル１３１のマップを要求すると（５０１）、プロセッサ２８０が計算プロセス２４０の実行を停止する（５０２）。この場合は、代理プロセス１４０と計算ノード管理手段１１０とが図５の処理を行う。まず、要求を受信すると（５１１）、代理プロセス１４０の仮想アドレス空間上の領域１４３にファイル１３１をマップする（５１０）。これは、オペレーティングシステム１７０の一般的な機能を用いて行う。その結果、制御ノード１００の物理メモリ１２０から物理メモリ１２４が確保され、ファイル１３１の内容が読み込まれる。次に、ファイル１３１の内容が計算ノード２００の物理メモリ２２０上に存在するか否かを判定する（５１３）。初めてファイル１３１をマップする場合は、存在しない。そのため、計算ノード２００の物理メモリ２２０から物理メモリ２２４を確保し（５１５）、計算プロセス２４０の仮想アドレス空間上の領域２４３に物理メモリ２２４をマップする（５１６）。代理プロセス１４０の仮想アドレス空間上の領域１４３にマップされているファイル１３１の内容を、計算プロセス２４０の仮想アドレス空間上の領域２４３へコピーし（５１７）、計算プロセス２４０の実行再開を指示する（５１９）。すると、計算ノード２００で計算プロセス２４０が実行再開される（５０３）。
【００５０】
続けて、計算プロセス２５０が読み書き可能なプライベートマッピングでのファイル１３１のマップを要求すると（５０１）、プロセッサ２８０が計算プロセス２５０の実行を停止する（５０２）。計算プロセス２５０がファイル１３１のマップを要求した場合は、代理プロセス１５０と計算ノード管理手段１１０とが図５の処理を行う。まず、上記要求を受信すると（５１１）、代理プロセス１５０の仮想アドレス空間上の領域１５３にファイル１３１をマップする（５１０）。その結果、物理メモリ１２４が代理プロセス１５０の仮想アドレス空間上の領域１５３にもマップされる。次に、ファイル１３１の内容が計算ノード２００の物理メモリ２２０上に存在するか否かを判定する（５１３）。すでにファイル１３１をマップした計算プロセス２４０が存在するので、ファイル１３１の内容が物理メモリ２２０に存在する。次に、物理メモリの共有要否の判定を図３に基づいて行う（５１４）。読み書き可能なプライベートマッピングの場合、常に共有不要と判定する。そのため、計算ノード２００の物理メモリ２２５を確保し（５１５）、計算プロセス２５０の仮想アドレス空間上の領域２５３に物理メモリ２２５をマップする（５１６）。次に、代理プロセス１５０の仮想アドレス空間上の領域１５３にマップされているファイルの内容を、計算プロセス２５０の仮想アドレス空間上の領域２５３へコピーし（５１７）、計算プロセス２５０の実行再開を指示する（５１９）。すると、計算ノード２００で計算プロセス２５０が実行再開される（５０３）。この結果、計算プロセス２５０は、ファイル１３１の内容をプロセス固有のデータとしてメモリマップドファイル上に保持することができる。
【００５１】
さらに、制御ノード１００または計算ノード２００のプロセスによって、ファイル１３１が更新された場合を考える。この場合、オペレーティングシステム１７０の機能によって、新たに物理メモリ１２５が割り当てられ、更新内容が保持される（コピーオンライト）。
【００５２】
その後、計算プロセス２６０が読み書き可能なプライベートマッピングでのファイル１３１のマップを要求すると（５０１）、プロセッサ２８０が計算プロセス２６０の実行を停止する（５０２）。この場合は、代理プロセス１６０と計算ノード管理手段１１０とが図５の処理を行う。まず、上記要求を受信すると（５１１）、代理プロセス１６０の仮想アドレス空間上の領域１６３にファイル１３１をマップする（５１０）。その結果、物理メモリ１２５が代理プロセス１６０の仮想アドレス空間上の領域１６３にマップされる。次に、ファイル１３１の内容が計算ノード２００の物理メモリ２２０上に存在するか否かを判定する（５１３）。すでにファイル１３１をマップした計算プロセス２４０が存在するので、ファイル１３１の内容が物理メモリに存在する。次に、物理メモリの共有要否の判定を図３に基づいて行う（５１４）。読み書き可能なプライベートマッピングの場合、常に共有が不要と判定する。そのため、計算ノード２００の物理メモリ２２６を確保し（５１５）、計算プロセス２６０の仮想アドレス空間上の領域２６３に物理メモリ２２６をマップする（５１６）。次に、代理プロセス１６０の仮想アドレス空間上の領域１６３にマップされているファイルの内容を、計算プロセス２６０の仮想アドレス空間上の領域２６３へコピーし（５１７）、計算プロセス２６０の実行再開を指示する（５１９）。すると、計算ノード２００で計算プロセス２６０が実行再開される（５０３）。この結果、計算プロセス２６０は、ファイル１３１の内容をプロセス固有のデータとしてメモリマップドファイル上に保持することができる。
【００５３】
以上のように構成され動作する本実施形態によれば、以下のような効果が奏される。
【００５４】
主記憶を共有しない、制御ノードと計算ノードから構成されるマルチプロセッサシステムにおいて、制御ノードのファイルシステム上にあるファイルを、計算ノード上で動作する計算プロセスの仮想メモリ空間にマップし、メモリアクセス命令でファイルの内容を読み書きできる。
【００５５】
共有マッピングで同一ファイルをマップすると、計算ノード上で動作する複数プロセス間で物理メモリを共有し、共有メモリとしてプロセス間通信に使用できる。
【００５６】
読み込み専用のプライベートマッピングで同一ファイルをマップした場合、ファイルの更新日時に変化がなければ、計算ノード上で動作する複数プロセス間で物理メモリを共有し、メモリを効率的に利用できる。例えば、同一の入力データを複数のプロセスが参照する場合に、メモリを効率的に利用できる。
【００５７】
読み込み専用のプライベートマッピングで同一ファイルをマップした場合でも、ファイルの更新日時に変化があれば、新たに物理メモリを確保し、最新のファイルの内容を読み込める。例えば、実行ファイルのテキスト領域は読み取り専用のプライベートマッピングでマップされるため、実行ファイルをビルドし直して、実行すると、最新の実行ファイルを実行できる。
【００５８】
読み書き可能なプライベートマッピングの場合は、同一のファイルをプロセス毎に固有なデータとして保持できる。例えば、実行ファイルのデータ領域は読み書き可能なプライベートマッピングでマップされるため、プロセス毎に固有なデータを保持して計算することができる。
【００５９】
ページフォールトが発生した命令から実行を再開できない計算ノードでも、このようなメモリマップドファイルが実現できる。
【００６０】
計算ノードでオペレーティングシステムが動作していなくても、このようなメモリマップドファイルが実現できる。
【００６１】
これらの結果、計算ノード上で動作するプロセスが、あたかも制御ノード上で動作するプロセスと同様に、メモリマップドファイルを扱うことができ、プログラム開発の生産性や移植性が高まる。
【００６２】
[第２の実施形態]
図９は、本発明の第２の実施形態に係る情報処理装置のブロック図である。図９を参照すると、本実施形態の情報処理装置は、制御ノード１０００と計算ノード２０００とを含んで構成される。
【００６３】
制御ノード１０００は、メモリ１００１、代理プロセス１００３、および、ファイル１００６を有し、オペレーティングシステムが組み込まれたコンピュータである。計算ノード２０００は、メモリ２００１、計算プロセス２００３を有し、オペレーティングシステムが組み込まれていないコンピュータである。計算ノード２０００は、制御ノード１０００により制御されるようになっている。
【００６４】
メモリ１００１とメモリ２００１とには、ファイル１００６の内容を記憶するメモリ領域１００２、２００２がそれぞれ形成されている。また、計算ノード２０００で動作する計算プロセス２００３の仮想アドレス空間２００４にメモリ領域２００２がマッピングされている。また、制御ノード１０００で動作する、計算プロセス２００３に対応する代理プロセス１００３の仮想アドレス空間１００４にメモリ領域１００２がマッピングされている。これにより、計算プロセス２００３は、仮想アドレス空間２００４をアクセスすることにより、ファイル１００６の内容をアクセスすることができるようになっている。
【００６５】
以上の構成は特許文献１に記載される構成と同じである。本実施形態では、制御ノード１０００は、判定手段１００５を有している。判定手段１００５は、計算ノード２０００で動作する計算プロセス２００７からファイル識別情報およびマッピング種別を指定してファイル１００６のマッピング要求が出されると、ファイル識別情報とマッピング種別とに基づいて、計算プロセス２００３と計算プロセス２００７とでメモリ領域２００２を共有させるか否かを決定するように構成されている。
【００６６】
このように構成された本実施形態の情報処理装置は、以下のように動作する。即ち、計算プロセス２００３に既にファイル１００６がマップされている状況で、計算ノード２０００で動作する計算プロセス２００７からファイル識別情報およびマッピング種別を指定してファイル１００６のマッピング要求が出されると、制御ノード１０００の判定手段１００５は、ファイル識別情報とマッピング種別とに基づいて、計算プロセス２００３と計算プロセス２００７とでメモリ領域２００２を共有させるか否かを決定する。このように、制御ノード１０００は、制御を行う計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御することができる。その結果、メモリを複数の計算プロセスで共有する共有マッピング、複数の計算プロセスが別々のメモリをアクセスするプライベートマッピングという異なる形態のメモリマップドファイル機能を実現することができる。
【産業上の利用可能性】
【００６７】
本発明は、制御ノードと１または複数の計算ノードとがノード間通信手段で接続された情報処理装置に適用でき、特にＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）向けの並列計算機に利用できる。
【符号の説明】
【００６８】
１００…制御ノード
１１０…計算ノード管理手段
１１１…計算ノードの物理メモリ共有要否判定手段
１２０…物理メモリ
１３０…ファイルシステム
１３１…ファイル
１３２…ファイル
１４０…代理プロセス
１５０…代理プロセス
１６０…代理プロセス
１７０…オペレーティングシステム
１８０…プロセッサ
１９０…データ転送手段
２００…計算ノード
２２０…物理メモリ
２４０…計算プロセス
２５０…計算プロセス
２６０…計算プロセス
２８０…プロセッサ
２９０…データ転送手段
３００…ノード間通信手段
１０００…制御ノード
１００１…メモリ
１００２…メモリ領域
１００３…代理プロセス
１００４…仮想アドレス空間
１００５…判定手段
１００６…ファイル
２０００…計算ノード
２００１…メモリ
２００２…メモリ領域
２００３…計算プロセス
２００４…仮想アドレス空間
２００７…計算プロセス
【図１】
2019139404.tif 000003
【図２】
2019139404.tif 000004
【図３】
2019139404.tif 000005
【図４】
2019139404.tif 000006
【図５】
2019139404.tif 000007
【図６】
2019139404.tif 000008
【図７】
2019139404.tif 000009
【図８】
2019139404.tif 000010
【図９】
2019139404.tif 000011