(57)【要約】【課題】ネットワーク透過な単一レベル記憶を実現すること。【解決手段】本発明の一つの実施形態によれば、情報処理装置は、第１メモリと、第２メモリと、仮想アドレス空間の少なくとも一部の仮想アドレスと前記第１メモリの物理アドレスとの対応関係を管理する変換情報を参照して、前記第１メモリにアクセスする制御部と、を備える。前記仮想アドレス空間には、他の情報処理装置に格納されたデータも割り当てられる。前記制御部は、アクセス対象データが前記他の情報処理装置に格納され手いる状態でページフォールトが発生した場合、前記他の情報処理装置に格納された前記アクセス対象データを前記第１メモリに格納するとともに、前記アクセス対象データに対応する仮想アドレスと前記第１メモリの物理アドレスの対応関係を前記変換情報に登録する。【選択図】図１３
2013073335.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して他の情報処理装置に接続可能な情報処理装置であって、
第１メモリと、
不揮発性の第２メモリと、
仮想アドレス空間の少なくとも一部の仮想アドレスと前記第１メモリの物理アドレスとの対応関係を管理する変換情報を参照して、前記第１メモリにアクセスする制御部と、
を備え、
前記仮想アドレス空間には、前記他の情報処理装置に格納されたデータも割り当てられ、
前記制御部は、アクセス対象データが前記他の情報処理装置に格納され、前記アクセス対象データに対応する仮想アドレスが前記変換情報に登録されていないことによりページフォールトが発生した場合、前記他の情報処理装置に格納された前記アクセス対象データを前記第１メモリに格納するとともに、前記アクセス対象データに対応する仮想アドレスと前記第１メモリの物理アドレスの対応関係を前記変換情報に登録する、
ことを特徴する情報処理装置。
【請求項２】
前記制御部は、前記アクセス対象データが前記第２メモリに格納され、前記アクセス対象データに対応する仮想アドレスが前記変換情報に登録されていないことによりページフォールトが発生した場合、前記第２メモリに格納された前記アクセス対象データを前記第１メモリに格納するとともに、前記アクセス対象データに対応する仮想アドレスと前記第１メモリの物理アドレスの対応関係を前記変換情報に登録することを特徴とする情報処理装置。
【請求項３】
前記制御部は、前記アクセス対象データに対応する仮想アドレスと前記第１メモリの物理アドレスの対応関係を前記変換情報に登録した際、前記他の情報処理装置に格納されている変換情報における前記アクセス対象データに対応するエントリを無効化する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記制御部は、
前記第２メモリが保持するデータが前記他の情報処理装置に格納されているデータからコピーされたデータであるか否かを示すマスタ情報を管理し、
所定のタイミングで、前記第１メモリに格納されているデータを自情報処理装置の第２メモリのみに、または自情報処理装置の第２メモリおよび前記他の情報処理装置の両方に退避させ、
前記退避の際に、自情報処理装置の第２メモリのみに退避させるか、または自情報処理装置の第２メモリおよび前記他の情報処理装置の両方に退避させるかを、前記マスタ情報に基づいて決定する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
ＣＰＵをさらに備え、
前記第２メモリは、前記ＣＰＵにかかるリソース情報を保持し、
前記仮想アドレス空間は、前記リソース情報および前記他の情報処理装置にかかるリソース情報が割り当てられており、
前記制御部は、スレッドの実行開始時に、前記自他の情報処理装置にかかるリソース情報を参照して前記自情報処理装置のＣＰＵよりも効率よく前記スレッドを実行可能なＣＰＵを求め、前記求めたＣＰＵに前記スレッドを実行させる、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記第２メモリは、ＮＡＮＤ型のフラッシュメモリである、ことを特徴とする請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置に関する。
【背景技術】
【０００２】
単一レベル記憶（Single-Level  Store；ＳＬＳ）は、１つのコンピュータ（情報処理装置）が使っている記憶装置の全てを１つの仮想アドレス空間で管理するメモリ管理技術である。ＳＬＳによれば、メインメモリとストレージとの区別を意識しないプログラミングが可能になる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−６６９１４号公報
【非特許文献】
【０００４】
【非特許文献１】E.I.  Organick:  The  Multics  System,  MIT  Press,  1972
【非特許文献２】F.G.  Soltis:  Inside  the  AS/400,  29th  Street  Press,  1997
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、ネットワーク透過な単一レベル記憶を実現する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、ネットワークを介して他の情報処理装置に接続可能な情報処理装置は、第１メモリと、不揮発性の第２メモリと、仮想アドレス空間の少なくとも一部の仮想アドレスと前記第１メモリの物理アドレスとの対応関係を管理する変換情報を参照して、前記第１メモリにアクセスする制御部と、を備える。前記仮想アドレス空間には、前記他の情報処理装置に格納されたデータも割り当てられる。前記制御部は、アクセス対象データが前記他の情報処理装置に格納され、前記アクセス対象データに対応する仮想アドレスが前記変換情報に登録されていないことによりページフォールトが発生した場合、前記他の情報処理装置に格納された前記アクセス対象データを前記第１メモリに格納するとともに、前記アクセス対象データに対応する仮想アドレスと前記第１メモリの物理アドレスの対応関係を前記変換情報に登録する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態の情報処理装置が使用される様子を説明する図である。
【図２】図２は、仮想アドレス空間の概念を説明する図である。
【図３】図３は、第１の実施形態の情報処理装置の構成を説明する図である。
【図４】図４は、メモリ間のデータの対応関係を説明する図である。
【図５】図５は、アドレス管理情報の構成を説明する図である。
【図６】図６は、ページテーブルのデータ構成例を説明する図である。
【図７】図７は、第１アドレス変換テーブルのデータ構成例を説明する図である。
【図８】図８は、第２アドレス変換テーブルのデータ構成例を説明する図である。
【図９】図９に、２個のテーブルにより構成される第１アドレス変換テーブルのデータ構成例を示す図である。
【図１０−１】図１０−１は、ディレクトリ構成の一例を示す図である。
【図１０−２】図１０−２は、ファイル管理情報のデータ構成例を示す図である。
【図１１】図１１は、サーチルール情報のデータ構成例を示す図である。
【図１２】図１２は、セグメントを最初に参照する際の第１の実施形態の情報処理装置の動作を説明するフローチャートである。
【図１３】図１３は、ページフォールトが発生した際の第１の実施形態の情報処理装置の動作を説明するフローチャートである。
【図１４】図１４は、セグメントをＮＡＮＤメモリに退避させる際の第１の実施形態の情報処理装置の動作を説明するフローチャートである。
【図１５】図１５は、ｉｍｍビットの値が「１」となっている場合の第１の実施形態の情報処理装置の動作を説明するフローチャートである。
【図１６】図１６は、第２の実施形態の情報処理装置の構成を説明する図である。
【図１７】図１７は、リソース情報が仮想アドレス空間に割り当てられている様子を説明する図である。
【図１８】図１８は、新規のスレッドを実行する際の第２の実施形態の情報処理装置の動作を説明するフローチャートである。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかる情報処理装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１は、本発明の第１の実施形態の情報処理装置が使用される様子を説明する図である。本発明の第１の実施形態の情報処理装置１ａ〜１ｄは、本図に示すように、例えばインターネットなどのネットワーク２に接続されて情報処理システムを構成する。情報処理装置１ａ〜１ｄは、情報処理システム内で仮想アドレス空間を共有しており、情報処理装置１ａ〜１ｄが備えるストレージに保持しているデータやプログラム（以降、単にデータ）は、夫々この仮想アドレス空間上の領域が排他的に割り当てられる。なお、仮想アドレス空間上の領域に割り当てられたデータのことをセグメントと表現することもある。
【００１０】
図２は、情報処理装置１ａ〜１ｄが共有する仮想アドレス空間の概念を説明する図である。図示するように、仮想アドレス空間１００には、情報処理装置１ａが記憶装置内に保持するプログラムＡおよびデータＢと、情報処理装置１ｂが記憶装置内に保持するプログラムＣとが夫々セグメントとして割り当てられている。プログラムＡおよびＣは、夫々スレッドが使用できるコードにより構成されている。例えば、情報処理装置１ａだけでなく情報処理装置１ｂ〜１ｄは、プログラムＡが割り当てられているアドレスをロードすることによってプログラムＡにかかるスレッドを実行することができる。また、情報処理装置１ｂ〜１ｄは、データＢが割り当てられているアドレスをロードすることによってデータＢを読み出すことができる。また、情報処理装置１ａ〜１ｄは仮想アドレスを指定してデータをストアすることができる。
【００１１】
本発明の第１の実施形態の情報処理装置１ａ〜１ｄはコンピュータ上で後述するオペレーティングシステム（ＯＳ）プログラム４１を実行することによって実現される。本発明の第１の実施形態の情報処理装置１ａ〜１ｄは、サーバ、コンピュータ端末、組み込み機器の別を問わずどのようなコンピュータであっても実現可能である。図３は、情報処理装置１ａ〜１ｄの構成例を説明する図である。本発明の第１の実施形態を実現するための情報処理装置１ａ〜１ｄの構成は同一であるので、ここでは情報処理装置１ａ〜１ｄの代表として情報処理装置１ａの構成を説明する。
【００１２】
図３に示すように、情報処理装置１ａは、ＣＰＵ１０、ＤＲＡＭ（第１メモリ）２０、ネットワークインタフェース（Ｉ／Ｆ）３０、およびＮＡＮＤメモリ（第２メモリ）４０を具備する。ＣＰＵ１０、ＤＲＡＭ２０、ネットワークＩ／Ｆ３０、およびＮＡＮＤメモリ４０はバスで接続されている。
【００１３】
ネットワークＩ／Ｆ３０は、ネットワーク２を介して他の情報処理装置１ｂ〜１ｄと通信を行うための通信インタフェースである。なお、以降、情報処理装置１ａを基準とした場合において、情報処理装置１ａをローカル、他の情報処理装置１ｂ〜１ｄをリモートと表現することがある。
【００１４】
ＮＡＮＤメモリ４０は、ローカルが主体となってロード／ストアするデータを記憶するストレージである。また、ＮＡＮＤメモリ４０には、リモートのデータのキャッシュが格納される。ＮＡＮＤメモリ４０は、ページと呼ばれる単位サイズ毎に読み出し／書き込みが実行され、ページよりも大きいブロックと呼ばれる単位サイズ毎にデータの消去が実行される。
【００１５】
ＤＲＡＭ２０の少なくとも一部は、ＣＰＵ１０がＮＡＮＤメモリ４０にアクセスする際のキャッシュメモリとして使用される。ＤＲＡＭ２０上のデータは、単位サイズ毎に管理され、当該管理の単位もページと呼ばれる。以降、ＮＡＮＤメモリ４０の読み出し／書き込みの単位を第１ページ、ＤＲＡＭ２０の管理単位を第２ページと表記して区別する。第１ページと第２ページとは同一のサイズであってもよいし異なるサイズであってもよい。ここでは、第１ページは第２ページの２倍のサイズを有するものとする。
【００１６】
図４は、ＤＲＡＭ２０、ローカルのＮＡＮＤメモリ４０、およびリモートのＮＡＮＤメモリ４０の間のデータの対応関係を説明する図である。
図示するように、ローカルのＮＡＮＤメモリ４０には、ローカルが主体となってロード／ストアする第１ページ単位のデータ３０１が格納されている。また、リモートのＮＡＮＤメモリ４０には、当該リモートが主体となってロード／ストアする第１ページ単位のデータ４０１が格納されており、当該データ４０１は、ローカルのＮＡＮＤメモリ４０にもデータ３０２としてキャッシュされている。即ち、データ３０２は、データ４０１をコピーしたものである。そして、データ３０１は２つの第２ページ単位のデータに分割されてデータ２０１、２０２としてＤＲＡＭ２０上にキャッシュされており、データ２０１、２０２は仮想アドレス空間１００上の領域１０１、１０２に夫々割り当てられている。また、ＮＡＮＤメモリ４０にキャッシュされているデータ３０２は、２つの第２ページ単位のデータに分割されてデータ２０３、２０４としてＤＲＡＭ２０上にキャッシュされており、データ２０３、２０４は仮想アドレス空間１００上の領域１０３、１０４に夫々割り当てられている。ＤＲＡＭ２０上にキャッシュされたデータ２０１、２０２の仮想アドレス空間１００上の領域への割り当ては、後述するページテーブルを介して行われる。なお、図４における仮想アドレス空間１００上に割り当てられた領域１０１〜１０４が、図２におけるセグメント又はセグメントの一部に相当する。また、図２に示すように、仮想アドレス空間１００には、複数の情報処理装置１ａ〜１ｄが備えるストレージに保持しているデータが割り当てられている。このため、他の情報処理装置（例えば、情報処理装置１ｄ）が仮想アドレス空間１００上に割り当てた領域１０５、１０６について、情報処理装置１ａがページテーブルを介して情報処理装置１ａのＤＲＡＭ２０と対応付けしていない場合には、仮想アドレス空間１００上の領域１０５、１０６はＤＲＡＭ２０に対応付けられていないこととなる。このような場合、情報処理装置１ａが仮想アドレス空間上の領域１０５、１０６に対応する仮想アドレスにより、領域１０５、１０６にアクセスすると、ページフォールトが発生する。
【００１７】
ＣＰＵ１０は、ＯＳプログラム４１を実行することによって、制御部として機能する。即ち、ＯＳプログラム４１の制御の下で、ＣＰＵ１０は、仮想アドレスを使用してＮＡＮＤメモリ４０上のデータを識別するとともに、ＤＲＡＭ２０をキャッシュメモリとして使用してＮＡＮＤメモリ４０上のデータにアクセスすることができる。ＣＰＵ１０は、ページフォールトの発生をトリガとしてＤＲＡＭ２０へのキャッシュを実行する。即ち、ＣＰＵ１０は、目的のデータを指定する仮想アドレスに当該目的のデータが存在しない場合に、ローカルのＮＡＮＤメモリ４０から当該目的のデータを読み出して、読み出したデータをＤＲＡＭ２０に格納する。ＣＰＵ１０は、ローカルのＮＡＮＤメモリ４０に前記目的のデータが格納されていない場合には、リモートのＮＡＮＤメモリ４０から前記目的のデータを読み出して、読み出した目的のデータをＤＲＡＭ２０に格納する。
【００１８】
ここで、一般的な情報処理装置においては、メインメモリ、ローカルのストレージ、ネットワークの向こう側のストレージの夫々に対するアクセス方法が異なる。例えば、メインメモリ上のデータにはプログラム上で名前が付けられ、その名前でアクセスすることが可能である。また、ローカルのストレージにはデータの一塊としてファイルが存在し、ｒｅａｄ／ｗｒｉｔｅというアクセス方式によってアクセスされる。ネットワークの向こう側のストレージにはＨＴＴＰやＦＴＰなどのプロトコルでアクセスされる。
【００１９】
これに対し、本発明の第１の実施形態によれば、情報処理装置１ａ〜１ｄの夫々は仮想アドレス空間上でロード／ストアすることによってＤＲＡＭ２０およびローカルのＮＡＮＤメモリ４０へのアクセスのみならずリモートのＮＡＮＤメモリ４０へのアクセスを行うことができるので、アクセス先のデータがＤＲＡＭ２０、ローカルのＮＡＮＤメモリ４０、およびリモートのＮＡＮＤメモリ４０のうちの何れに存在するかを意識せずにプログラミングを行うことができるようになる。即ち、ネットワーク透過な単一レベル記憶を実現することができる。
【００２０】
なお、ＮＡＮＤメモリ４０に格納されているデータのうち、おおもとのデータをマスタデータということとする。即ち、ＮＡＮＤメモリ４０には、マスタデータと、リモートのＮＡＮＤメモリ４０に格納されているマスタデータのキャッシュデータ（即ちリモートのＮＡＮＤメモリ４０に格納されているマスタデータからコピーされたデータ）が格納されることになる。図４においては、データ３０１およびデータ４０１がマスタデータに該当する。
【００２１】
また、本発明の第１の実施形態によれば、マスタデータには夫々排他的に仮想アドレスが割り当てられる。情報処理装置１ａ〜１ｄ間で仮想アドレスの排他性を確保する手法は特定の手法に限定されない。例えば、仮想アドレスの一部（例えば上位ビット）として情報処理装置１ａ〜１ｄのＩＰアドレスを使用することによって仮想アドレスの排他性を確保するようにしてもよい。また、仮想アドレスを排他的に生成する専用のスレッドを情報処理装置１ａ〜１ｄのうちの何れかで動作させるようにしてもよい。また、仮想アドレスを排他的に生成する専用のハードウェアをネットワーク２に接続しておくようにしてもよい。
【００２２】
ＮＡＮＤメモリ４０は、ＯＳプログラム４１、アドレス管理情報４２、ファイル管理情報４３およびサーチルール情報４４を保持する。これらのデータの一部もしくは全部を、マスタデータとしてローカルのＮＡＮＤメモリ４０に保持させてもよいし、これらのデータの一部もしくは全部のマスタデータをリモートのＮＡＮＤメモリ４０に保持させて、ローカルのＮＡＮＤメモリ４０に当該マスタデータをキャッシュするようにしてもよい。
【００２３】
ＯＳプログラム４１は、ＣＰＵ１０を本発明の実施形態の制御部として機能させるためのコンピュータプログラムである。
【００２４】
アドレス管理情報４２は、各記憶装置間のアドレスの対応関係を管理する情報である。図５は、アドレス管理情報４２の構成を説明する図である。図示するように、アドレス管理情報４２は、仮想アドレスとＤＲＡＭ２０上の物理アドレスとの対応関係を記述したページテーブル４２１と、仮想アドレスとローカルのＮＡＮＤメモリ４０の物理アドレスとの対応関係を記述した第１アドレス変換テーブル４２２と、ローカルのＮＡＮＤメモリ４０とリモートのＮＡＮＤメモリ４０の物理アドレスとの対応関係を記述した第２アドレス変換テーブル４２３を具備する。
【００２５】
図６は、ページテーブル４２１のデータ構成例を説明する図である。ページテーブル４２１が参照される際には、変換対象の仮想アドレスは、ＭＳＢ（Most  Significant  Bit）から仮想ページアドレスとページ内オフセットとに分割される。ここでのページは第２ページである。ページテーブル４２１を構成する夫々のエントリは、ＤＲＡＭ２０の物理ページアドレスが記述されるフィールド４２１１と、データが有効であるか否かを示す有効ビットが格納されるフィールド４２１２と、ストア処理が許可されているか否かを示す書込可ビットが格納されるフィールド４２１３と、ＤＲＡＭ２０上で書き込みが行われたか否かを示す書込済ビットが格納されるフィールド４２１４とを備えており、仮想ページアドレスをインデックスとして配列されている。変換対象の仮想アドレスに含まれる仮想ページアドレスをインデックスとする物理ページアドレスにページ内オフセットをマージすると、前記変換対象の仮想アドレスに対応するＤＲＡＭ２０の物理アドレスが得られる。
【００２６】
図７は、第１アドレス変換テーブル４２２のデータ構成例を説明する図である。第１アドレス変換テーブル４２２が参照される際には、変換対象の仮想アドレスは、ＭＳＢから仮想ページアドレスとページ内オフセットとに分割される。ここでのページとは第１ページである。第１アドレス変換テーブル４２２を構成する夫々のエントリは、ローカルのＮＡＮＤメモリ４０の物理ページアドレスが記述されるフィールド４２２１と、データが有効であることを示す有効ビットが格納されるフィールド４２２２とを備えており、仮想ページアドレスをインデックスとして配列されている。変換対象の仮想アドレスに含まれる仮想ページアドレスをインデックスとする物理ページアドレスにページ内オフセットをマージすると、前記変換対象の仮想アドレスに対応する、ローカルのＮＡＮＤメモリ４０の物理アドレスが得られる。
【００２７】
図８は、第２アドレス変換テーブル４２３のデータ構成例を説明する図である。第２アドレス変換テーブル４２３が参照される際には、ローカルのＮＡＮＤメモリ４０における変換対象の物理アドレスは、ＭＳＢから物理ページアドレスとページ内オフセットとに分割される。ここでのページとは第１ページである。第２アドレス変換テーブル４２３を構成する夫々のエントリは、リモートのＮＡＮＤメモリ４０の物理ページアドレスが記述されるフィールド４２３１と、データが有効であることを示す有効ビットが格納されるフィールド４２３２とを備えており、ローカルのＮＡＮＤメモリ４０の物理ページアドレスをインデックスとして配列されている。ローカルのＮＡＮＤメモリ４０における変換対象の物理アドレスに含まれる物理ページアドレスをインデックスとするリモートのＮＡＮＤメモリ４０の物理ページアドレスにページ内オフセットをマージすると、ローカルのＮＡＮＤメモリ４０の物理アドレスに対応する、リモートのＮＡＮＤメモリ４０の物理アドレスが得られる。
【００２８】
なお、ページテーブル４２１、第１アドレス変換テーブル４２２、第２アドレス変換テーブル４２３は、夫々一段のテーブルで構成されるものとして説明したが、各情報のテーブルを複数段のテーブルにより構成するようにしてもよい。図９に、２段のテーブルにより構成する場合の第１アドレス変換テーブル４２２のデータ構成例を示す。図示するように、第１アドレス変換テーブル４２２は、テーブル４２２３とテーブル４２２４とに分割されて構成されており、この第１アドレス変換テーブル４２２が参照される際には変換対象の仮想アドレスが３つのビット列（第１〜第３ビット列）に分割される。テーブル４２２３は、第１ビット列をインデックスとして参照される。テーブル４２２３の参照により得られたビット列と第２ビット列とはマージされる。そして、テーブル４２２４は、前記テーブル４２２３から得られたビット列と第２ビット列とがマージされて生成されたビット列をインデックスとして参照される。テーブル４２２４の参照により得られたビット列は第３ビット列とマージされて、ローカルのＮＡＮＤメモリ４０の物理アドレスが得られる。なお、本図では有効ビットを格納するフィールド４２２２の図示を省略したが、仮想ページアドレスを第１ビット列と第２ビット列に分割する場合にはフィールド４２２２をテーブル４２２３に持たせるようにし、ページ内オフセットを第２ビット列と第３ビット列とに分割する場合にはフィールド４２２２をテーブル４２２４に持たせるようにするとよい。
【００２９】
また、例えばページテーブル４２１のデータ構成例の説明においては、仮想アドレスからローカルのＮＡＮＤメモリ４０の物理アドレスへの片方向の変換が可能なテーブルの例を示したが、仮想アドレスとローカルのＮＡＮＤメモリ４０の物理アドレスとの間で双方向の変換が可能に構成されるものとする。同様に、第１アドレス変換テーブル４２２および第２アドレス変換テーブル４２３は、双方向の変換が可能に構成される。
【００３０】
ファイル管理情報４３は、ファイルの属性を管理する情報である。ファイル管理情報４３により管理される属性には、割り当てられた仮想アドレス、サイズ、アクセスコントロールリスト（ＡＣＬ）、更新時刻、ｉｍｍビット、マスタビット（マスタ情報）などが存在する。ここで、ｉｍｍビットとは、複数のリモートからの同時アクセスがある場合にある変更がただちに他のアクセス内容にも反映されるか否かを規定する情報であり、マスタビットは、ローカルのＮＡＮＤメモリ４０に格納されている対象のファイルがマスタデータであるか否かを示す情報である。ファイル管理情報４３は、ディレクトリ毎にメタデータとしてＮＡＮＤメモリ４０に保持される。
【００３１】
図１０−１は、ディレクトリ構成の一例を示す図であり、図１０−２は、図１０−１に示すディレクトリ構成例に対応するファイル管理情報４３のデータ構成例を示す図である。図１０−１に示すディレクトリ構成によれば、ディレクトリ５０１の下にファイル５０２、ファイル５０３およびサブディレクトリ５０４が存在する。ディレクトリ５０１にかかるファイル管理情報４３は、図１０−２に示すように、メインテーブル４３１とディレクトリ５０１に属する要素（ファイル５０２、ファイル５０３、サブディレクトリ５０４）毎のＡＣＬを記述したＡＣＬテーブル４３２とを備えている。ファイル（ファイル５０２、５０３）に対するＡＣＬテーブル４３２には、ユーザ毎に読み出し許可ビット（ｒ）、書き込み許可ビット（ｗ）、および実行許可ビット（ｘ）が設定される。ディレクトリ５０１に属するディレクトリ（サブディレクトリ５０４）に対するＡＣＬテーブル４３２には、検索許可ビット（ｓ）、追加許可ビット（ａ）、および削除許可ビット（ｄ）が設定される。メインテーブル４３１は、ディレクトリ５０１に属する要素の夫々について、仮想アドレス、サイズ、ＡＣＬテーブル４３２の格納位置を示すポインタ、更新時刻（time）、ｉｍｍビット、およびマスタビットが記述されるエントリが登録されて構成されている。なお、以降、マスタビットが「１」のファイルはマスタデータであることを示し、ｉｍｍビットが「１」のファイルは複数のリモートからの同時アクセスが禁止されているファイルであることを示すものとする。
【００３２】
図１１は、サーチルール情報４４のデータ構成例を説明する図である。図示するように、サーチルール情報４４には、パス（ここでは一例として絶対パス）毎に参照先の仮想アドレスが登録されて構成されている。サーチルール情報４４への仮想アドレスの登録の手法は特に限定されない。
【００３３】
次に、本発明の第１の実施形態の情報処理装置１ａ〜１ｄの動作を説明する。ここでは代表として情報処理装置１ａの動作を説明する。
【００３４】
図１２は、セグメントが最初に参照されたときのＯＳプログラム４１に基づく情報処理装置１ａの動作を説明するフローチャートである。以降、動作の主体をＣＰＵ１０として説明し、特に断りがない場合はＯＳプログラム４１による制御の下で動作が行われるものとする。なお、セグメントの参照自体を実行させるプログラムはＯＳプログラム４１だけに限定されない。
セグメントの最初の参照は、パスを用いて行われる。ＣＰＵ１０は、最初にセグメントの参照を行う際、サーチルール情報４４に基づいて、参照のためのパスに対応する仮想アドレスを求める（ステップＳ１）。なお、参照に用いられたパスが相対パスであった場合には、ＣＰＵ１０は、ＯＳプログラム４１の機能により絶対パスを求めて、当該求めた絶対パスを用いてサーチルール情報４４を検索するようにしてよい。
【００３５】
そして、ＣＰＵ１０は、ページテーブル４２１のうちの前記求めた仮想アドレスに対応するエントリのフィールド４２２１に、ＤＲＡＭ２０の物理ページアドレスをセットする（ステップＳ２）。フィールド４２２１にセットする物理ページアドレスを求める方法は特に限定されない。そして、ＣＰＵ１０は、同じエントリのフィールド４２１２、４２１３、４２１４に夫々有効ビット、書込可ビット、書込済ビットをセットする（ステップＳ３）。ここでは、有効ビットとして有効でない旨を示す「０」がセットされ、書込済ビットとして書き込み済みでない旨を示す「０」がセットされる。書込可ビットは、ＡＣＬテーブル４３２の書き込み許可ビット（ｗ）の値とｉｍｍビットの値に基づいて値がセットされる。例えば、書き込み許可ビット（ｗ）が書き込み禁止の旨を示す「０」であるか、またはｉｍｍビットが同時アクセスの際に変更がたたちに反映する旨を示す「１」である場合には、書込可ビットとして、書き込みを禁止する旨の「０」がセットされる。そして、ＣＰＵ１０は、最初のページにアクセスを行い（ステップＳ４）、動作を終了する。
【００３６】
図１３は、ページフォールトが発生した際の情報処理装置１ａの動作を説明するフローチャートである。ページフォールトは、ページテーブル４２１上で、ロード／ストアを行った際に目的のデータを指定する仮想ページアドレスの有効ビットの値が「０」である場合には（他には書込み禁止部に書込んだ場合にも）発生する。
【００３７】
ページフォールトが発生すると、ＣＰＵ１０は、ローカルのＮＡＮＤメモリ４０に目的のデータが存在するか否かを判定する（ステップＳ１１）。ローカルのＮＡＮＤメモリ４０に目的のデータが存在するか否かは、第１アドレス変換テーブル４２２上の対応するエントリに設定されている有効ビットの値により判定することができる。
【００３８】
ローカルのＮＡＮＤメモリ４０に目的のデータが存在しない場合（ステップＳ１１、Ｎｏ）、ＣＰＵ１０は、リモートのＮＡＮＤメモリ４０に目的のデータが存在するか否かを判定する（ステップＳ１２）。リモートのＮＡＮＤメモリ４０に目的のデータが存在するか否かは、第２アドレス変換テーブル４２３に設定されている有効ビットの値により判定することができる。
【００３９】
リモートのＮＡＮＤメモリ４０に目的のデータが存在しない場合（ステップＳ１２、Ｎｏ）、ＣＰＵ１０はエラー処理を実行する（ステップＳ１３）。なお、エラー処理はどのような処理であってもよい。リモートのＮＡＮＤメモリ４０に目的のデータが存在する場合（ステップＳ１２、Ｙｅｓ）、ＣＰＵ１０は、リモートのＮＡＮＤメモリ４０に格納されている目的のデータをローカルのＮＡＮＤメモリ４０に格納する（ステップＳ１４）。
【００４０】
ローカルのＮＡＮＤメモリ４０に目的のデータが存在する場合（ステップＳ１１、Ｙｅｓ）、またはステップＳ１４の処理の後、ＣＰＵ１０は、ページテーブル４２１の対応するエントリの有効ビットに「１」を、書込済ビットに「０」を夫々セットする（ステップＳ１５）。そして、ＣＰＵ１０は、ＤＲＡＭ２０における前記エントリのフィールド４２１１に記述されている物理アドレスに、前記ローカルのＮＡＮＤメモリ４０に格納した目的のデータを読み込んで（ステップＳ１６）、動作を終了する。
【００４１】
図１４は、情報処理装置１ａがＤＲＡＭ２０上で上書きしたセグメントをＮＡＮＤメモリ４０に退避させる動作を説明するフローチャートである。セグメントの退避は、例えば電源オフ時や、ＤＲＡＭ２０が溢れたときなどに発生する。
セグメントの退避時には、ＣＰＵ１０は、まず、ローカルのＮＡＮＤメモリ４０に退避対象のデータを追記する（ステップＳ２１）。そして、ＣＰＵ１０は、ローカルの第１アドレス変換テーブル４２２を更新する（ステップＳ２２）。具体的には、ＣＰＵ１０は、ローカルの第１アドレス変換テーブル４２２における対応するエントリのフィールド４２２１に格納されている物理ページアドレスを追記先の物理ページアドレスで更新するとともに、当該エントリの有効ビットの値を「１」にセットする。
【００４２】
そして、ＣＰＵ１０は、リモートのファイル管理情報４３を参照して、追記前の対象のデータのファイルのマスタビットの値が「１」であるか否かを判定する（ステップＳ２３）。リモートのファイル管理情報４３の該当するマスタビットの値が「１」である場合（ステップＳ２３、Ｙｅｓ）、ＣＰＵ１０は、ローカルのＮＡＮＤメモリ４０に追記したデータをリモートのＮＡＮＤメモリ４０に追記する（ステップＳ２４）。そして、ＣＰＵ１０は、リモートの第２アドレス変換テーブル４２３を更新する（ステップＳ２５）。具体的には、ＣＰＵ１０は、リモートの第２アドレス変換テーブル４２３における退避前のデータにかかるエントリの有効ビットに「０」をセットし、退避により追記されたデータにかかるエントリを生成して、当該生成したエントリの有効ビットに「１」をセットする。
【００４３】
一方、リモートのファイル管理情報４３の該当するマスタビットの値が「０」である場合（ステップＳ２３、Ｎｏ）、ＣＰＵ１０は、リモートの第２アドレス変換テーブル４２２における退避前のデータにかかるエントリの有効ビットに「０」をセットする（ステップＳ２６）。ステップＳ２５またはステップＳ２６の処理の後、ＣＰＵ１０は、ローカルのページテーブル４２１における対応するエントリの書込済ビットに「１」をセットし（ステップＳ２７）、動作を終了する。
【００４４】
ｉｍｍビットの値が「１」となっているファイル、即ち複数のリモートからの同時アクセスの際に変更がただちに反映されるべきファイルに対して最初の書き込みを行った際には、ＣＰＵ１０は次の動作を実行する。
図１５は、同時アクセスの際に変更がただちに反映されるべきファイルに最初に書き込みを行なった場合の情報処理装置１ａの動作を説明するフローチャートである。まず、ＣＰＵ１０は、ローカルのページテーブル４２１における書き込み先のデータにかかるエントリの書込済ビットおよび書込可ビットに「１」をセットする（ステップＳ３１）。そして、ＣＰＵ１０は、ローカルの第１アドレス変換テーブル４２２における書き込み先のデータにかかるエントリの有効ビットに「０」をセットし（ステップＳ３２）、リモートの第１アドレス変換テーブル４２２における書き込み先のデータにかかるエントリの有効ビットに「０」をセットする（ステップＳ３３）。そして、ＣＰＵ１０は、リモートのページテーブル４２１における書き込み先のデータにかかるエントリの有効ビットを「０」とし（ステップＳ３４）、動作を終了する。この動作は最新のデータが情報処理装置１ａのＤＲＡＭ２０にのみ存在することを示し、かつ情報処理装置１ａがアクセスする際にはＤＲＡＭ２０のみをアクセスすることによってアクセスの高速化を実現するためのものである。
【００４５】
このように、情報処理装置１ａは、ｉｍｍビットの値が「１」となっているファイルに書き込みを行うと、情報処理装置１ｂ〜１ｄのページテーブル４２１における前記ファイルに対応するエントリを無効化、即ち情報処理装置１ｂ〜１ｄのＤＲＡＭ２０上の対応するファイルを無効化する。この状態で、情報処理装置１ｂが同じファイルに書き込みを行う際には、情報処理装置１ｂにてページフォールトが発生する。すると、情報処理装置１ｂは、図１３にて説明した動作と図１５にて説明した動作とを実行し、情報処理装置１ａのＤＲＡＭ２０にキャッシュされているファイルが無効となる。このように、ｉｍｍビットが「１」となっているファイルに書込まれた直後には情報処理装置１ａ〜１ｄのうちの複数が同時にＤＲＡＭ２０に有効なデータとしてキャッシュしていないので、同時アクセスの際に変更をただちに反映されるとともに最後に変更した情報処理装置１ａからは高速にアクセスすることができる。なお一旦書込まれた後に読み出す場合には、次の書込みが発生するまではそれぞれの情報処理装置においてキャッシュすることが可能である。
【００４６】
以上述べたように、本発明の第１の実施形態によれば、情報処理装置１ａは、ＤＲＡＭ２０と、不揮発性のストレージとしてのＮＡＮＤメモリ４０と、ＯＳプログラム４１による制御に基づいて制御部として機能して、ＮＡＮＤメモリ４０にアクセスする際にＤＲＡＭ２０をキャッシュメモリとして使用するＣＰＵ１０と、を備え、制御部としてのＣＰＵ１０は、ローカルおよびリモートがＮＡＮＤメモリ４０に保持するデータの夫々を仮想アドレスを用いて識別し、目的のデータに仮想アドレスを用いてアクセスした際にページフォールトが発生したとき、ローカルおよびリモートのＮＡＮＤメモリ４０を検索し、目的のデータがローカルにある場合にはローカルのＮＡＮＤメモリ４０から、目的のデータがリモートにある場合にはリモートのＮＡＮＤメモリ４０から、目的のデータを読み出して、読み出した目的のデータをＤＲＡＭ２０にキャッシュさせる、ように構成したので、アクセス先のデータがＤＲＡＭ２０、ローカルのＮＡＮＤメモリ４０、およびリモートのＮＡＮＤメモリ４０のうちの何れに存在するかを意識せずにプログラミングを行うことができるようになる。即ち、ネットワーク透過な単一レベル記憶を実現することができる。
【００４７】
また、制御部としてのＣＰＵ１０は、目的のデータがリモートのＮＡＮＤメモリ４０にある場合には、リモートから読み出した目的のデータをローカルのＮＡＮＤメモリ４０にキャッシュさせる、ように構成したので、ローカルでは、ネットワーク２が急に切断されても、ＮＡＮＤメモリ４０にキャッシュされているリモートのデータを使用して作業を続行することができるようになる。
【００４８】
また、制御部としてのＣＰＵ１０は、目的のデータをＤＲＡＭ２０にキャッシュさせた際、ページテーブル４２１における該当するエントリを有効化し、ＤＲＡＭ２０にキャッシュされている目的のデータに最初の書き込みを行った際、リモートのページテーブル４２１における該当するエントリを無効化する、ように構成したので、複数の情報処理装置からの１つのデータに対する同時アクセスする場合に変更をただちに反映することができるようになる。
【００４９】
また、制御部としてのＣＰＵ１０は、ＮＡＮＤメモリ４０が保持するデータがマスタデータであるか否かを示すマスタ情報を管理し、ＤＲＡＭ２０にキャッシュされているデータを退避させる際に、退避対象のデータをローカルのＮＡＮＤメモリ４０に退避させるか、またはローカルおよびリモートのＮＡＮＤメモリ４０の両方に退避させるかを、マスタ情報に基づいて決定する、ように構成した。
【００５０】
なお、以上の説明においては、制御部としてのＣＰＵ１０は、リモートのＮＡＮＤメモリ４０に格納されているマスタデータにアクセスする際には、ローカルのＮＡＮＤメモリ４０に前記マスタデータのキャッシュを格納するものとして説明したが、当該マスタデータのキャッシュをローカルのＮＡＮＤメモリ４０に格納しないようにしてもよい。また、マスタデータのキャッシュをローカルのＮＡＮＤメモリ４０に置くか否かを示す属性情報をファイル管理情報４３に保持させ、ＣＰＵ１０は、当該属性情報に基づいてＮＡＮＤメモリ４０に対象のデータをキャッシュさせるか否かを決定するように構成してもよい。
【００５１】
（第２の実施形態）
第２の実施形態においては、情報処理装置は、ローカルのＣＰＵよりも効率よくスレッドを実行できるＣＰＵを具備するリモートがある場合には、当該リモートのＣＰＵに前記スレッドを実行させるようにする。第２の実施形態の夫々の情報処理装置は、ＣＰＵのリソース情報を仮想アドレス空間に置いておき、仮想アドレス空間に置かれたＣＰＵ毎のリソース情報を参照することによって、ローカルのＣＰＵとリモートのＣＰＵとの内から最も効率よくスレッドを実行できるＣＰＵを求める。
【００５２】
図１６は、第２の実施形態の情報処理装置の構成を説明する図である。なお、第２の実施形態の情報処理装置は、第１の実施形態と同一のハードウェア構成のコンピュータにより実現される。したがって、ハードウェア構成要素には第１の実施形態と同一の符号を付すこととする。また、第１の実施形態と同じソフトウェア構成要素には第１の実施形態と同一の符号を付して重複する説明を省略する。
【００５３】
図１６に示すように、情報処理装置１ａは、ＣＰＵ１０、ＤＲＡＭ２０、ネットワークＩ／Ｆ３０、およびＮＡＮＤメモリ４０を備えている。ＮＡＮＤメモリ４０は、スケジューラプログラム４６を具備するＯＳプログラム４５と、アドレス管理情報４２と、ファイル管理情報４３と、サーチルール情報４４と、リソース情報４７とを備えている。
【００５４】
スケジューラプログラム４６は、ローカルにてＣＰＵ１０が新規にスレッドを実行する際に、ローカルおよびリモートのＣＰＵ１０のうち、最も効率よく当該新規のスレッドを実行することができるＣＰＵ１０を求め、求めたＣＰＵ１０に当該新規のスレッドを実行させる。なお、ここでは、最も効率がよいとは、一例として、当該新規のスレッドの実行結果をローカルの情報処理装置が得るまでの時間が最も早いことをいうこととする。
【００５５】
リソース情報４７は、ＭＩＰＳ値や実行スレッド数など、ＣＰＵ１０の実行性能の判断材料となる情報が記述されている。リソース情報４７は、スケジューラプログラム４６によって逐次更新される。
【００５６】
図１７は、リソース情報４７が仮想アドレス空間に割り当てられている様子を説明する図である。図示するように、夫々のＣＰＵ１０にかかるリソース情報４７は、夫々仮想アドレス空間１００に割り当てられており、ローカルのＣＰＵ１０は、スケジューラプログラム４６に基づいて、自ＣＰＵ１０にかかるリソース情報４７のみならずリモートのＣＰＵ１０にかかるリソース情報４７を参照することができるようになっている。
【００５７】
図１８は、新規のスレッドを実行する際の第２の実施形態の情報処理装置１ａの動作を説明するフローチャートである。まず、ＣＰＵ１０は、ネットワーク２に接続されている情報処理装置１ａ〜１ｄが具備する全てのＣＰＵ１０にかかるリソース情報４７を参照して（ステップＳ４１）、参照した夫々のリソース情報４７に基づいて、実行対象のスレッドを実行したときの実行時間をＣＰＵ１０毎に算出する（ステップＳ４２）。
【００５８】
ＣＰＵ１０毎の実行時間は例えば次のようにして求めることができる。ＭＩＰＳ値を、実行中のスレッド数に１を加算した値で除算する。そして、当該除算により得られた値に、実行対象のスレッドの実行に必要なセグメントのサイズをネットワーク速度で除した値を加算すると、結果が得られるまでにかかるトータルの実行時間が得られる。
【００５９】
ステップＳ４２に続いて、ＣＰＵ１０は、最も実行時間が短いＣＰＵ１０に、前記実行対象のスレッドを実行させ（ステップＳ４３）、動作が終了となる。
【００６０】
なお、リモートのＣＰＵ１０にスレッドを実行させる手法は特定の手法に限定されない。例えば、ローカルのＣＰＵ１０は、リモートのＣＰＵ１０のスレッドキューに対象のスレッドをエンキューするようにしてもよい。また、ローカルのＣＰＵ１０は、リモートのＣＰＵ１０にリクエストを発行して前記実行対象のスレッドを実行させるようにしてもよい。
【００６１】
また、ローカルのＣＰＵ１０は、実行時間が最も短いＣＰＵ１０にスレッドを実行させることとしたが、ローカルのＣＰＵ１０よりも実行時間が短い任意のＣＰＵ１０にスレッドを実行させるようにしてもよい。
【００６２】
また、情報処理装置１ａは、ＣＰＵ１０を複数備えていてもよい。その場合には、リソース情報４７は、情報処理装置１ａが備えるＣＰＵ１０毎に用意される。
【００６３】
このように、本発明の第２の実施形態によると、ローカルのＮＡＮＤメモリ４０はローカルのＣＰＵ１０にかかるリソース情報４７を保持し、制御部としてのＣＰＵ１０は、新規にスレッドを実行する際、ローカルおよびリモートのＣＰＵ１０にかかるリソース情報４７を仮想アドレスを使用して読み出して、前記読み出したリソース情報４７に基づいてローカルのＣＰＵ１０よりも効率よく前記スレッドを実行可能なＣＰＵ１０を求め、前記求めたＣＰＵ１０に前記スレッドを実行させる、ように構成したので、スレッドを効率よく実行することが可能となる。
【００６４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６５】
１ａ〜１ｄ  情報処理装置、２  ネットワーク、１０  ＣＰＵ、２０  ＤＲＡＭ、３０  ネットワークＩ／Ｆ、４０  ＮＡＮＤメモリ、４１、４５  ＯＳプログラム、４２  アドレス管理情報、４３  ファイル管理情報、４４  サーチルール情報、４６  スケジューラプログラム、４７  リソース情報、１００  仮想アドレス空間、４２１  ページテーブル、４２２  第１アドレス変換テーブル、４２３  第２アドレス変換テーブル、４３２  ＡＣＬテーブル。
【図１】
2013073335.tif 000003
【図２】
2013073335.tif 000004
【図３】
2013073335.tif 000005
【図４】
2013073335.tif 000006
【図５】
2013073335.tif 000007
【図６】
2013073335.tif 000008
【図７】
2013073335.tif 000009
【図８】
2013073335.tif 000010
【図９】
2013073335.tif 000011
【図１０−１】
2013073335.tif 000012
【図１０−２】
2013073335.tif 000013
【図１１】
2013073335.tif 000014
【図１２】
2013073335.tif 000015
【図１３】
2013073335.tif 000016
【図１４】
2013073335.tif 000017
【図１５】
2013073335.tif 000018
【図１６】
2013073335.tif 000019
【図１７】
2013073335.tif 000020
【図１８】
2013073335.tif 000021