(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
[第1の実施形態]
本発明の第1の実施形態について、
図1乃至
図10を参照して説明する。
図1は、並列計算機1の構成の一例を示すブロック図である。
図2は、計算コア24の構成の一例を示すブロック図である。
図3は、並列計算機1が有する制御ノード10と計算ノード20の構成の一例を示すブロック図である。
図4は、計算ノード20が計算プロセスを実行する際の構成の一例を示すブロック図である。
図5は、デバイス内ページテーブル201の構成の一例を示す図である。
図6は、制御ノード10のCPU12から計算ノード20のメモリ21へアクセスする様子の一例を示す図である。
図7は、並列計算機1がコンテキストスイッチを行う際の処理の一例を示すフローチャートである。
図8は、
図7で示すステップS109の処理の詳細な一例を示すフローチャートである。
図9は、RDMAデバイス40がデータ転送を行う際の処理の一例を示すフローチャートである。
図10は、並列計算機1の他の構成の一例を示すブロック図である。
【0016】
本実施形態において説明する並列計算機1は、OSが組み込まれた制御ノード10と、制御ノード10による制御により計算プロセス202を実行する計算ノード20と、を有している。後述するように、制御ノード10は、計算プロセス202が使用する計算用データ210をメモリ21に展開する際に、PCIメモリ空間アドレスとメモリ21内の物理アドレスであるデバイス内アドレスとを対応付けたデバイス内ページテーブル201を作成する。このようにデバイス内ページテーブル201を作成することで、制御ノード10は、計算ノード20が有するメモリ21を仮想化する。これにより、制御ノード10は、PCIメモリ空間の大きさに制限されずにメモリ21を活用することが可能となる。
【0017】
また、制御ノード10は、計算ノード20が実行する計算プロセス202を変更するコンテキストスイッチを行う際に、必要に応じて、当該計算プロセス202を実行するためにメモリ21に展開されていた計算用データ210を制御ノード10に退避させる。この際、制御ノード10は、RDMAデバイス40によるデータの転送を禁止するとともに、必要に応じて、転送アドレスリスト1031を更新する。これにより、RDMAデバイス40によるデータの転送を保証しつつ、計算ノード20のメモリ21を効率的に活用することが可能となる。
【0018】
図1を参照すると、本実施形態における並列計算機1は、制御ノード10(制御装置)と、計算プロセス202を実行するPCIデバイスである計算ノード20と、プロセッサを介さずにメモリ間のデータ転送を行うRDMAデバイス40(転送装置)と、を有している。制御ノード10と計算ノード20とは、ノード間通信手段30(例えば、PCI express)を介して互いに通信可能なよう接続されている。また、制御ノード10とRDMAデバイス40とは、ノード間通信手段30を介して互いに通信可能なよう接続されている。
【0019】
なお、本実施形態における並列計算機1は、例えば、HPC(High Performance Computing)向けの並列計算機として利用することが出来る。本実施形態における並列計算機1は、例えば、特開2015−94974号公報に開示されている並列計算機などに適用することも出来る。
【0020】
また、本実施形態では、並列計算機1が制御ノード10と計算ノード20の2つのノードから構成されている場合について説明する。しかしながら、並列計算機1の構成は、本実施形態で例示する場合に限定されない。例えば、並列計算機1は、1つの制御ノード10と2つの計算ノード20とから構成されるなど、3つ以上の複数のノードから構成されていても構わない。また、本実施形態で説明する例では、制御ノード10と計算ノード20とは、同じコンピュータアーキテクチャを有している。しかしながら、制御ノード10と計算ノード20とは、異なるコンピュータアーキテクチャを採用していても構わない。
【0021】
図1で示すように、制御ノード10は、例えば、メモリ11(記憶装置)と、CPU12(central processing unit)と、データ転送手段13と、を有している。また、CPU12は、m個(mは1以上の正の整数)のプロセッサコア14を有している。メモリ11と、CPU12と、データ転送手段13とは、ノード内ではPCI Expressなどによって接続されている。プロセッサコア14は、自ノード(制御ノード10)内のメモリ11、データ転送手段13に上記PCI Expressなどを通じてアクセス可能である。また、計算ノード20は、制御ノード10と同様の構成を有している。つまり、計算ノード20は、メモリ21と、CPU22と、データ転送手段23と、を有している。また、CPU22は、複数のプロセッサコア24を有している。
【0022】
本実施形態における並列計算機1は、NUMA(Non−Uniformed Memory Access)型の情報処理装置である。各ノードが他のノードのメモリへアクセスするとき(例えば、制御ノード10が計算ノード20のメモリ21へアクセスするとき)は、ノード間通信手段30を用いることになる。
【0023】
メモリ11は、データや実行するプログラムなどを記憶する半導体メモリである。メモリ11は、制御ノード10内のプロセッサコア14から共有される。メモリ21の構成は、メモリ11と同様である。つまり、メモリ21は、計算ノード20内のプロセッサコア24から共有される。
【0024】
データ転送手段13は、CPU12を介さずにメモリ11に対してアクセスするDMA(Direct Memory Access)エンジン15と、CPU12上のレジスタ等の資源に対してアクセスする対CPU通信機能16とを有している。なお、対CPU通信機能16は、CPU12上のレジスタ等の資源をメモリ空間にマップし、DMAエンジン15からアクセスするように構成しても構わない。データ転送手段23の構成は、データ転送手段13の構成と同様である。
【0025】
ノード間通信手段30は、PCI Express、InfinibandなどのDMA機能若しくはRDMA(Remote Direct Memory Access)機能を持つインターコネクトによって実現することが出来る。
【0026】
制御ノード10及び計算ノード20は、上述したような構成を有している。なお、後述するように、本実施形態では、制御ノード10がオペレーティングシステム(OS、Operating System)機能を有するのに対して、計算ノード20はオペレーティングシステム機能を有していない。また、計算ノード20は、制御ノード10からの制御により計算プロセス202を実行することになる。以下においては、計算ノード20上のプロセッサコア24を計算コア24と呼ぶ。
【0027】
ここで、計算コア24の構成の詳細について説明する。
図2を参照すると、計算コア24は、例えば、汎用レジスタ群240と、制御レジスタ群241と、例外検出手段242と、レジスタ群アクセス手段243と、例外通知手段244と、を有している。
【0028】
汎用レジスタ群240は、x86やARMなどの一般的なプロセッサと同様に、プログラムカウンタ(PC)や演算結果を格納するための汎用レジスタ(GPR)などから構成される。これらのレジスタは、計算コア24での命令の実行に伴い書き換えられることになる。また、計算コア24がロード命令、ストア命令を実行することで、汎用レジスタ群240とメモリ21との間でデータ転送が行われる。
【0029】
制御レジスタ群241は、計算コア24の実行を制御するためのレジスタである。制御ノード10は、計算ノード20の制御レジスタ群241に対して、ノード間通信手段30及びデータ転送手段13、23を通じて、命令の実行の開始及び実行の停止を指示することになる。制御ノード10が計算コア24に実行の開始を指示すると、計算コア24は汎用レジスタ群240の内容に従って処理を開始する。具体的には、計算コア24は、プログラムカウンタの値に従い命令をフェッチして、フェッチされた命令の実行を行い、汎用レジスタ群240やメモリ21の内容の更新を実施する。この状態を命令実行状態と呼ぶ。また、制御ノード10が計算コア24に実行の停止を指示すると、計算コア24は、新規の命令実行を停止させる。実行の停止が指示された状態で、計算コア24上に仕掛中の命令が無い状態を、命令実行停止状態と呼ぶ。計算コア24は、一旦命令実行停止状態に遷移すると、制御ノード10から実行の開始の指示があるまで、新規の命令実行を行わない。なお、計算コア24が命令実行状態であるか、あるいは、命令実行停止状態であるかは、ノード間通信手段30、データ転送手段13、レジスタ群アクセス手段243を通じて、制御ノード10から参照することが出来る。仮に、参照を行う機能が無い場合には、例外情報の送出によって、命令実行状態であるか、命令実行停止状態であるかを制御ノード10に対して通知するように構成することが出来る。
【0030】
例外検出手段242は、命令の実行中に何らかの例外を検出した場合に、制御レジスタ群241に実行の停止の指示を行う。同時に、例外検出手段242は、例外通知手段244に対して、例外通知の依頼を行う(例外発生情報を送信する)。上記の例外とは、ゼロ除算例外などの演算例外、メモリアクセス境界違反などのメモリアクセス系例外、システムコール呼び出しのためのソフトウェアトラップなどの一般のプロセッサで発生する例外を指す。
【0031】
例外通知手段244は、例外検出手段242から取得した例外発生情報に基づき、ノード間通信手段30を用いて、制御ノード10に対して、計算コア24の実行停止を通知する。この例外通知手段244は、例外の発生を制御ノード10に通知することが出来れば、実装方法は問わない。例えば、(A)PCI ExpressのMSI/MSI−Xのようなノード間通信手段30が持つ割り込み機能、(B)事前に予約したメモリ領域へのDMA書き込み、などの方法で実現することが出来る。(B)の方法の場合には、制御ノード10上で後述する計算ノード用管理手段102が、計算ノード20からの例外通知の有無をポーリング等の方式で監視する必要がある。さらに、例外通知手段244は、制御ノード10からの設定により、制御ノード10への例外発生の通知を抑止することも出来る。その場合には、例えば、(C)制御ノード10が直接に制御レジスタ群241の実行状態を監視(ポーリング)することで、例外の発生を制御ノード10が検知するように構成することが出来る。
【0032】
レジスタ群アクセス手段243は、制御ノード10から発行された指示に基づいて、汎用レジスタ群240及び制御レジスタ群241の各レジスタに対して読み出し・書き込みを行う。ただし、汎用レジスタ群240への読み出し及び書き込みは、命令実行停止状態の計算コア24にのみ発行が許可される。命令実行状態の計算コア24の汎用レジスタ群240へアクセスがあったときの計算コア24の動作は不定である(例えば、当該アクセスは無視される)。
【0033】
以上が、計算コア24の構成の一例である。本実施形態における並列計算機1がコンテキストスイッチを行う際には、計算コア24の汎用レジスタ群240のコンテキスト(レジスタ値)を変更することになる。並列計算機1は、後述するように、このようなコンテキストスイッチを行う際などにおいて、効率的にメモリ21を活用することが出来る。
図3は、本実施形態における並列計算機1において、計算ノード20が有するメモリ21を効率的に活用するための構成の一例を示している。以下、計算ノード20、制御ノード10についてより詳細に説明する。
【0034】
<計算ノード20>
図3を参照すると、計算ノード20上には、制御ノード10からの制御により1つまたは複数の計算プロセス202が展開されている。なお、計算プロセス202とは、計算ノード20上に展開されたプロセスのことをいう(任意の実行単位で構わない)。計算プロセス202は、計算ノード20上で動作するアプリケーションプログラムの開始等に伴い生成され、その実行の終了に伴って破棄されることになる。
【0035】
具体的には、例えば、
図4で示すように、計算ノード20のメモリ21内には、計算プロセス202を実行する際などに利用される計算用データ210(計算用データ210−1、210−2、……210−n。特に区別しない場合は、計算用データ210と表記する)が格納されている。また、計算コア24には、それぞれ、1つの計算プロセス202のコンテキストが格納されている。各計算コア24は、格納されたコンテキストに対応するメモリ21上の計算用データ210を用いて、計算プロセス202の処理を行うことになる。
【0036】
また、計算ノード20は、制御ノード10の計算ノードメモリ仮想化手段1025により作成されたデバイス内ページテーブル201を有している。デバイス内ページテーブル201は、メモリマップドI/Oアドレスへのアクセスを計算ノード20内部でデバイス内物理アドレスへ変換するのに用いる。デバイス内ページテーブル201は、例えば、計算ノード用管理手段102が計算用データ210をメモリ21に展開する際に、計算ノードメモリ仮想化手段1025により作成される。
【0037】
図5は、デバイス内ページテーブル201の構成の一例である。
図5を参照すると、デバイス内ページテーブル201では、例えば、制御ノード10のCPU12から認識されるPCIメモリ空間アドレスと、メモリ21内の物理アドレスであるデバイス内アドレスと、が対応付けられている。例えば、
図5の1行目では、PCIメモリ空間アドレス「0」と、デバイス内アドレス「0x5000」と、が対応付けられている。
【0038】
このようにデバイス内ページテーブル201を作成することで、例えば、PCIメモリ空間アドレスと対応付けられるデバイス内アドレスを変更することが可能となる。これにより、制御ノード10が使用可能なメモリのサイズがPCIメモリ空間のサイズで制限されなくなる。なお、デバイス内ページテーブル201には、例えば、メモリ21の1ページごとに対応するページテーブルエントリがある。また、デバイス内ページテーブル201には、使用状況や属性を示す情報を含むことが出来る。
【0039】
以上が、計算ノード20の構成の一例である。計算ノード20内の計算コア24によるメモリ21へのアクセスは、計算コア24専用のページテーブル(図示しない)を用いて行っても良いし、デバイス内ページテーブル201を利用しても良い。
【0040】
<制御ノード10>
制御ノード10は、オペレーティングシステムを採用する通常のスタンドアローン型の計算機システムと同じ構成を採用し、計算ノード20のためのオペレーティングシステム機能のサービスを提供する。なお、本明細書では、制御ノード10上に搭載されるオペレーティングシステムを、制御ノード用OS101と呼ぶ。制御ノード用OS101は、例えば、オペレーティングシステムとしての一般的な機能を有している。制御ノード用OS101は、Linux(登録商標)やWindowsなどに代表される計算機に用いられるコモディティのオペレーティングシステムであってよい。
【0041】
図3を参照すると、制御ノード10は、制御ノード用OS101と、計算ノード用管理手段102(外部装置制御手段)と、RDMAデバイス40を管理するRDMAデバイスドライバ103(転送手段)と、代理プロセス104と、しての機能を有している。上記各構成(機能)は、例えば、図示しない記憶装置に格納されたプログラムをCPU12が実行することで実現される。
【0042】
制御ノード用OS101は、制御ノード10のメモリ管理を行うMMU1011(Memory Management Unit)(メモリアクセス手段)と、データ転送許可フラグ1012(データ転送禁止手段)と、を有している。なお、データ転送許可フラグ1012は、例えば、RDMAデバイスドライバ103が有していても構わない。
【0043】
MMU1011は、例えば、論理アドレスと物理アドレスとを対応付けた図示しない表を有している。MMU1011は、図示しない表を参照することで、CPU12が使用する論理アドレスを物理アドレスに変換する処理を行う。本実施形態における並列計算機1はメモリマップドI/Oの仕組みを用いており、物理アドレス空間の一部には入出力のための領域が設けられている。
【0044】
データ転送許可フラグ1012は、RDMAデバイス40によるデータの転送を許可するか否かを示している。後述するように、データ転送許可フラグ1012が「許可」を示している場合、RDMAデバイス40は、データ転送を実行することが出来る。一方、データ転送許可フラグ1012が「不許可」を示している場合、RDMAデバイス40は、データ転送許可フラグ1012が「許可」を示すまで待機することになる。
【0045】
データ転送許可フラグ1012は、後述するデータ転送許可フラグ更新手段1023により更新される。なお、データ転送許可フラグ1012は、一律に全てのデータ転送を許可するか否か示しても構わないし、例えば、計算プロセス202やメモリ21、ページごとにデータ転送を許可するか否か示しても構わない。換言すると、データ転送許可フラグ1012は、例えば、計算プロセス202やメモリ21、ページごとの「許可」又は「不許可」を示しても構わない。
【0046】
RDMAデバイスドライバ103は、RDMAデバイス40を制御する。RDMAデバイスドライバ103は、計算プロセス202ごとに転送アドレスリスト1031とRDMAリクエストキュー1032とを保持している。また、RDMAデバイスドライバ103は、データ転送許可フラグ確認手段1033を有している。
【0047】
転送アドレスリスト1031は、計算プロセス202で使用する論理アドレスと、物理アドレスと、を対応付けている。転送アドレスリスト1031の物理アドレスは、例えば、PCIメモリ空間アドレスを示している。また、後述するように、転送アドレスリスト1031の物理アドレスは、RDMAアドレス更新手段1024によりPCIメモリ空間アドレスから退避先のアドレス(つまり、デバイスメモリ退避領域111のアドレス)に更新されることがある。このように、転送アドレスリスト1031の物理アドレスは、計算用データ210がメモリ11に退避中であるか否かに応じて更新される。
【0048】
RDMAリクエストキュー1032は、CPU12や代理プロセス104などからデータ転送リクエストを受け付けて保管する。データ転送リクエストには、例えば、データ転送元の論理アドレスやデータ転送先の論理アドレスなどを示す情報が含まれている。
【0049】
データ転送許可フラグ確認手段1033は、RDMAデバイス40にデータ転送を実行させる際に、データ転送許可フラグ1012を確認する。データ転送許可フラグ1012が「許可」を示している場合、データ転送許可フラグ確認手段1033は、データ転送を許可する。一方、データ転送許可フラグ1012が「不許可」を示している場合、データ転送許可フラグ確認手段1033は、データ転送を許可しない。
【0050】
計算ノード用管理手段102は、計算ノード20で計算プロセス202を実行するために必要な準備を行うとともに、計算ノード20上のメモリ管理全般を行う。例えば、計算ノード用管理手段102は、計算ノード20に計算プロセス202を実行させる場合、計算コア24にコンテキストを格納するとともに、実行させる計算プロセス202に対応する計算用データ210をメモリ21に展開する。また、計算ノード用管理手段102は、メモリ21上に計算用データ210を展開する際に、計算ノードメモリ仮想化手段1025に対してデバイス内ページテーブル201を作成するよう指示する。これにより、計算ノードメモリ仮想化手段1025は、デバイス内ページテーブル201を作成する。
【0051】
図3を参照すると、計算ノード用管理手段102は、プロセススケジューラ1021と、計算ノードメモリ退避・復元手段1022(退避手段)と、データ転送許可フラグ更新手段1023と、RDMAアドレス更新手段1024(アドレス更新手段)と、計算ノードメモリ仮想化手段1025(外部メモリ仮想化手段)と、を有している。
【0052】
プロセススケジューラ1021は、計算ノード20で実行される計算プロセス202を管理する。
【0053】
例えば、プロセススケジューラ1021は、システムコールの実行やタイムスライスを使いきった等の理由により、計算コア24で実行中の計算プロセス202を変更するコンテキストスイッチを行うことを決定する。
【0054】
また、プロセススケジューラ1021は、コンテキストスイッチを行う際に、予め定められた管理方針に応じて変更前の計算プロセス202用の計算用データ210を制御ノード10のメモリ11に退避させるか否か判断する。
【0055】
例えば、プロセススケジューラ1021は、コンテキストスイッチが発生するごとに、変更前の計算プロセス202用の計算用データ210を退避させることを決定する。または、プロセススケジューラ1021は、任意の回数のコンテキストスイッチが発生するごとに、変更前の計算プロセス202用の計算用データ210を退避させることを決定する。このように、プロセススケジューラ1021は、例えば、コンテキストスイッチの発生回数に応じて計算用データ210を退避させるか否か判断する構成することが出来る。また、プロセススケジューラ1021は、メモリ21の空き容量に応じて変更前の計算プロセス202用の計算用データ210を退避させるか否か判断しても構わない。例えば、プロセススケジューラ1021は、新たな計算プロセス202に対応する計算用データ210をメモリ21に展開した後のメモリ21の空き容量が所定の閾値以下となる場合に、変更前の計算プロセス202で使用していた計算用データ210を退避させるよう決定することが出来る。また、プロセススケジューラ1021は、計算用データ210がRDMAデバイス40によるデータ転送の対象となっているか否かに応じて、計算用データ210を退避させるか否か判断するよう構成しても構わない。このように、プロセススケジューラ1021は、予め定められた管理方針に従って、計算用データ210をメモリ11に退避させるか否か判断する。なお、プロセススケジューラ1021は、上記条件のいくつかを組み合わせて計算用データ210を退避させるか否か判断しても構わないし、上記例示した以外の管理方針に基づいて計算用データ210を退避させるか否か判断しても構わない。
【0056】
さらに、プロセススケジューラ1021は、計算用データ210を制御ノード10のメモリ11に退避させる際に、データ転送許可フラグ1012を「不許可」に更新するようデータ転送許可フラグ更新手段1023に指示する。また、プロセススケジューラ1021は、転送アドレスリスト1031などを確認して退避させる計算用データ210がRDMA対象であると判断される場合に、RDMAアドレス更新手段1024に対して転送アドレスリスト1031を更新するよう指示する。
【0057】
このように、プロセススケジューラ1021は、計算プロセス202に対する全体的な管理を行う。
【0058】
計算ノードメモリ退避・復元手段1022は、プロセススケジューラ1021からの指示に応じて、メモリ21に展開された計算用データ210をメモリ11に確保されたデバイスメモリ退避領域111に退避させる。また、計算ノードメモリ退避・復元手段1022は、プロセススケジューラ1021からの指示に応じて、デバイスメモリ退避領域111に退避した計算用データ210をメモリ21に復元する。
【0059】
例えば、計算ノードメモリ退避・復元手段1022は、計算用データ210を退避させる旨の指示をプロセススケジューラ1021から受けると、メモリ11にデバイスメモリ退避領域111を確保する。そして、計算ノードメモリ退避・復元手段1022は、確保したデバイスメモリ退避領域111に対象の計算用データ210を退避させる。この際、計算ノードメモリ退避・復元手段1022は、退避する前のPCIメモリ空間アドレスを示す情報や退避している計算用データ210が対応する計算プロセス202を示す情報など、退避した計算用データ210を復元する際に必要となる情報を管理情報として管理するよう構成することが出来る。
【0060】
データ転送許可フラグ更新手段1023は、プロセススケジューラ1021からの指示に応じて、データ転送許可フラグ1012を更新する。換言すると、データ転送許可フラグ更新手段1023は、プロセススケジューラ1021からの指示に応じて、データ転送許可フラグ1012を「許可」又は「不許可」のいずれかに更新する。
【0061】
RDMAアドレス更新手段1024は、プロセススケジューラ1021からの指示に応じて、転送アドレスリスト1031の物理アドレスを変更する。
【0062】
例えば、RDMAアドレス更新手段1024は、メモリ11に計算用データ210を退避させる際に、転送アドレスリスト1031のうち対象となる物理アドレスをPCIメモリ空間アドレスから退避先のアドレスに変更する。また、RDMAアドレス更新手段1024は、メモリ11に退避させた計算用データ210をメモリ21に復元する際に、転送アドレスリスト1031のうち対象となる物理アドレスを退避先のアドレスからPCIメモリ空間アドレスに変更する。
【0063】
計算ノードメモリ仮想化手段1025は、デバイス内ページテーブル201の作成や管理を行う。
【0064】
例えば、計算ノードメモリ仮想化手段1025は、計算ノード用管理手段102がメモリ21上に計算用データ210を展開する際に、計算ノード用管理手段102からの指示に応じてデバイス内ページテーブル201を作成する。
【0065】
また、計算ノードメモリ仮想化手段1025は、計算ノードメモリ退避・復元手段1022が計算用データ210を退避させた後、デバイス内ページテーブル201内の退避させた計算用データ210に対応するPCIメモリ空間アドレスやデバイス内アドレスを解放する。さらに、計算ノードメモリ仮想化手段1025は、例えば、コンテキストスイッチを行う場合であって、計算用データ210の退避を行わず、かつ、退避しない計算用データ210がRDMAデバイス40による転送の対象でない場合、PCIメモリ空間アドレスのみを解放することが出来る。換言すると、計算ノードメモリ仮想化手段1025は、コンテキストスイッチを行う場合であって、対象の計算用データ210がRDMAデバイス40による転送の対象でない場合、計算用データ210を退避させる際にはPCIメモリ空間アドレスとデバイス内アドレスを解放し、計算用データ210を退避させない際にはPCIメモリ空間アドレスを解放する、ということが出来る。つまり、計算ノードメモリ仮想化手段1025は、コンテキストスイッチを行う場合であって、対象の計算用データ210がRDMAデバイス40による転送の対象でない場合、少なくともPCIメモリ空間アドレスを解放する。
【0066】
また、計算ノードメモリ仮想化手段1025は、計算ノードメモリ退避・復元手段1022が計算用データ210を復元した後、管理情報などを参照して、デバイス内ページテーブル201を復元する。この際、デバイス内アドレスは任意の場所で構わないが、格納されるデータとPCIメモリ空間アドレスとの対応が退避前と同じになるように、計算ノードメモリ仮想化手段1025はデバイス内ページテーブル201を復元する。このようにデバイス内ページテーブル201を復元することで、MMU1011を更新する必要はないことになる。
【0067】
代理プロセス104は、計算ノード20で動作する計算プロセス202の実行を補助する。代理プロセス104は、計算プロセス202と対応する形で生成される。代理プロセス104は、例えば、計算プロセス202からの要求に応じて、計算ノード20上に存在するべきOSの代替でシステムコール処理を行う。また、代理プロセス104は、計算プロセス202がRDMAデバイス40を利用する際にも利用される。換言すると、計算プロセス202は、代理プロセス104に対して指示することで、RDMAデバイス40を利用したデータ転送を行うことになる。
【0068】
以上が、制御ノード10と計算ノード20のより詳細な構成の一例である。
【0069】
RDMAデバイス40は、RDMAデバイスドライバ103からの指示に応じて、データの転送などの処理を行う。つまり、RDMAデバイス40は、RDMAデバイスドライバ103からの指示に応じて、データが記憶されているメモリから他のメモリへ直接データを転送する処理などを行う。RDMAデバイス40の構成は既知のものと同じであるため、詳細な説明は省略する。
【0070】
以上が、並列計算機1の構成の一例である。ここで、メモリ21を仮想化した場合の制御ノード10のCPU12から計算ノード20のメモリ21へアクセスする様子の一例を
図6で示す。
図6を参照すると、CPU12は、PCIメモリ空間にアクセスすることで計算ノード20のメモリ21へアクセスすることが分かる。この際に、計算ノード20では、PCIメモリ空間アドレスとデバイス内アドレスとを対応付けたデバイス内ページテーブル201を有している。デバイス内ページテーブル201を用いてメモリ21を仮想化することで、CPU12がPCIメモリ空間の大きさに制限されずにメモリ21を活用することが可能となる。
【0071】
続いて、
図7乃至
図9を参照して、並列計算機1の動作の一例について説明する。まず、
図7を参照して、コンテキストスイッチを行う際の全体的な流れの一例について説明する。
【0072】
図7を参照すると、プロセススケジューラ1021は、システムコールの実行やタイムスライスを使いきった等の理由により、計算コア24で実行中の計算プロセス202を変更するコンテキストスイッチを行うことを決定する。すると、プロセススケジューラ1021は、予め定められた管理方針に応じて、コンテキストスイッチによる変更前の計算プロセス202用の計算用データ210を制御ノード10のメモリ11に退避させるか否か判断する(ステップS101)。
【0073】
計算用データ210をメモリ11に退避させる場合(ステップS101、Yes)、プロセススケジューラ1021は、データ転送許可フラグ1012を「不許可」に更新するようデータ転送許可フラグ更新手段1023に指示する。これにより、データ転送許可フラグ更新手段1023は、データ転送許可フラグ1012を「不許可」に更新する(ステップS102)。また、プロセススケジューラ1021は、計算ノードメモリ退避・復元手段1022に対して、計算用データ210を退避させるよう指示する。すると、計算ノードメモリ退避・復元手段1022は、プロセススケジューラ1021からの指示に応じて、メモリ11にデバイスメモリ退避領域111を確保する(ステップS103)。そして、計算ノードメモリ退避・復元手段1022は、確保したデバイスメモリ退避領域111に対象の計算用データ210を退避させる(ステップS104)。計算ノードメモリ退避・復元手段1022による計算用データ210の退避の後、計算ノードメモリ仮想化手段1025は、デバイス内ページテーブル201のうち退避させた計算用データ210に対応するPCIメモリ空間アドレスとデバイス内アドレスを解放する(ステップS105)。
【0074】
また、プロセススケジューラ1021は、転送アドレスリスト1031などを確認して、退避させる計算用データ210がRDMA対象であるか否か確認する(ステップS106)。計算用データ210がRDMA対象であった場合(ステップS106、Yes)、プロセススケジューラ1021は、RDMAアドレス更新手段1024に対して転送アドレスリスト1031を更新するよう指示する。当該指示を受けて、RDMAアドレス更新手段1024は、転送アドレスリスト1031の対応する物理アドレスを、PCIメモリ空間アドレスから退避先のアドレス(つまり、デバイスメモリ退避領域111のアドレス)に更新する(ステップS107)。
【0075】
ステップS107の処理の後、計算ノード用管理手段102は、計算コア24の汎用レジスタ群240からコンテキストを引き上げる(ステップS108)。計算ノード用管理手段102は、引き上げたコンテキストを図示しない計算プロセスDB(database)などで管理することになる。また、計算ノード用管理手段102は、新しい計算プロセス202に対応するコンテキストを汎用レジスタ群240に保存する(ステップS109)。なお、ステップS109の処理の詳細は、
図8を参照して後に説明する。
【0076】
ステップS109の処理の後、プロセススケジューラ1021は、データ転送許可フラグ1012を「許可」に更新するようデータ転送許可フラグ更新手段1023に指示する。これにより、データ転送許可フラグ更新手段1023は、データ転送許可フラグ1012を「許可」に更新する(ステップS110)。なお、データ転送許可フラグ1012が既に「許可」である場合、データ転送許可フラグ更新手段1023は何もしなくて構わない。
【0077】
一方、ステップS101の処理で計算用データ210をメモリ11に退避させないと判断した場合(ステップS101、No)、プロセススケジューラ1021は、転送アドレスリスト1031などを確認して、退避しない計算用データ210がRDMA対象であるか否か確認する(ステップS111)。そして、退避しない計算用データ210がRDMA対象でなかった場合(ステップS111、No)、プロセススケジューラ1021は、計算ノードメモリ仮想化手段1025を用いてデバイス内ページテーブル201のうち退避しない計算用データ210に対応するPCIメモリ空間アドレスのみを解放する(ステップS112)。ステップS112の処理の後、また、退避しない計算用データ210がRDMA対象である場合(ステップS111、Yes)、ステップS108の処理に進むことになる。
【0078】
以上が、コンテキストスイッチを行う際の全体的な流れの一例である。続いて、
図8を参照して、
図7のステップS109の処理の詳細について説明する。
【0079】
図8を参照すると、プロセススケジューラ1021は、コンテキストスイッチによる変更後の計算プロセス202が使用する計算用データ210がデバイスメモリ退避領域111に退避されているか否か確認する(ステップS201)。ステップS201の確認は、例えば、転送アドレスリスト1031を確認したり、管理情報などを確認したりすることで確認することが出来る。
【0080】
計算用データ210がデバイスメモリ退避領域111に退避されている場合(ステップS201、Yes)、プロセススケジューラ1021は、対象の計算用データ210を復元するよう計算ノードメモリ退避・復元手段1022に指示する。これにより、計算ノードメモリ退避・復元手段1022は、メモリ21に対象の計算用データ210を復元する(ステップS202)。その後、計算ノードメモリ仮想化手段1025により、デバイス内ページテーブル201を復元する(ステップS203)。この際、デバイス内アドレスは任意の場所で構わないが、格納されるデータとPCIメモリ空間アドレスとの対応が退避前と同じになるように、計算ノードメモリ仮想化手段1025はデバイス内ページテーブル201を復元する。
【0081】
また、プロセススケジューラ1021は、転送アドレスリスト1031などを確認して、復元する計算用データ210がRDMA対象であるか否か確認する(ステップS204)。計算用データ210がRDMA対象であった場合(ステップS204、Yes)、プロセススケジューラ1021は、RDMAアドレス更新手段1024に対して転送アドレスリスト1031を更新するよう指示する。当該指示を受けて、RDMAアドレス更新手段1024は、転送アドレスリスト1031の対応する物理アドレスを、退避先のアドレスからPCIメモリ空間アドレスに更新する(ステップS205)。
【0082】
その後、計算ノード用管理手段102は、計算コア24の汎用レジスタ群240にコンテキストを保存する(ステップS206)。
【0083】
一方、計算用データ210がデバイスメモリ退避領域111に退避されていない場合(ステップS201、No)、プロセススケジューラ1021は、デバイス内ページテーブル201を参照してPCIメモリ空間アドレスが解放されているか否か確認する(ステップS207)。そして、PCIメモリ空間アドレスが解放されていた場合(ステップS207、Yes)、プロセススケジューラ1021は、計算ノードメモリ仮想化手段1025を用いてデバイス内ページテーブル201のうち対応するPCIメモリ空間アドレスを復元する(ステップS208)。ステップS208の処理の後、また、PCIメモリ空間アドレスが解放されていなかった場合(ステップS207)、ステップS206の処理に進むことになる。
【0084】
以上が、
図7のステップS109の処理の詳細な一例である。続いて、
図9を参照して、RDMAデバイス40がデータ転送を行う際の処理の一例について説明する。
【0085】
図9を参照すると、RDMAデバイスドライバ103は、RDMAリクエストキュー1032に登録されたリクエストを1つずつ取り出す。そして、RDMAデバイスドライバ103は、転送アドレスリスト1031を参照して、論理アドレスを物理アドレスに変換する。
【0086】
RDMAデバイスドライバ103のデータ転送許可フラグ確認手段1033は、データ転送許可フラグ1012を確認する。そして、データ転送許可フラグ1012が「許可」であった場合(ステップS302、Yes)、データ転送許可フラグ確認手段1033は、データ転送を許可する。これにより、RDMAデバイス40は、データ転送を実行する(ステップS303)。
【0087】
一方で、データ転送許可フラグ1012が「不許可」であった場合(ステップS302、No)、データ転送許可フラグ確認手段1033は、例えば所定時間ごと(任意の時間で構わない)に再度データ転送許可フラグ1012を確認する(ステップS301)。このように、データ転送許可フラグ1012が「不許可」であった場合にデータ転送許可フラグ確認手段1033がデータ転送を許可しないことで、RDMAデバイス40は、データ転送許可フラグ1012が「許可」である場合のみデータ転送を実行する。
【0088】
以上が、RDMAデバイス40がデータ転送を行う際の処理の一例である。
【0089】
このように、本実施形態における制御ノード10は、計算ノードメモリ仮想化手段1025を有している。このような構成により、計算ノードメモリ仮想化手段1025は、PCIメモリ空間アドレスとメモリ21内の物理アドレスであるデバイス内アドレスとを対応付けたデバイス内ページテーブル201を作成することで、メモリ21を仮想化することが出来る。これにより、PCIメモリ空間の大きさに制限されずにメモリ21を活用することが可能となる。その結果、計算ノード20に搭載するメモリ21を効率的に活用することが可能となる。
【0090】
また、制御ノード10は、計算ノードメモリ退避・復元手段1022と、データ転送許可フラグ更新手段1023と、RDMAアドレス更新手段1024と、を有している。このような構成により、計算ノードメモリ退避・復元手段1022が計算用データ210を退避させる際に、データ転送許可フラグ更新手段1023によりRDMAデバイス40によるデータ転送を禁止することが出来る。また、RDMAアドレス更新手段1024により、転送アドレスリスト1031中の対応する物理アドレスをPCIメモリ空間アドレスから退避先のアドレスに変更することが出来る。これにより、RDMA対象のデータであっても、RDMAによるデータ転送を保証しつつ、制御ノード10にデータを退避させることが可能となる。その結果、計算ノード20に搭載するメモリ21を効率的に活用することが可能となる。
【0091】
なお、繰り返し計算プロセス202を実行すると、メモリ21内で使用中の領域が物理的に不連続になった場所が多数できてしまうおそれがある。このような状態になると、物理的に連続な領域が必要な場合などにおいてメモリ取得が失敗する可能性が高くなる。本実施形態によると、メモリ21を仮想化しているため、分断されているデバイス内アドレスを移動してもデバイス内ページテーブル201のPCIメモリ空間アドレスはそのまま使う事ができる。そのため、メモリ21を対象としたメモリコンパクションやデフラグメンテーションが実施可能である。換言すると、制御ノード10の計算ノード用管理手段102は、メモリコンパクションやデフラグメンテーションを行う再配置手段1026を有することが出来る(
図10参照)。
【0092】
また、一般にメモリは一定の容量ごとにメモリバンクと呼ばれる単位でCPUからアクセスされ、同時にアクセスするデータを別のメモリバンクに配置することでメモリアクセスの並列化を行うことができる。本発明によると、メモリ21が仮想化されるため、計算コア24からよりアクセス効率の良い位置にデータの物理アドレスを移動させることができる。
【0093】
また、通常のメモリ領域は確保したプロセスの終了とともに解放されるが、RDMA対象の領域はRDMAデバイスドライバ103が安全にメモリを解放できるまで確保し続けることになる。一方で、本実施形態で説明した並列計算機1によると、メモリ操作の主体である計算プロセス202が終了したあとはメモリ21に計算用データ210がある必要が低下するため、当該計算用データ210をメモリ11のデバイスメモリ退避領域111に退避させることが可能となる。そして、RDMA転送が完全に終了した後にデバイスメモリ退避領域111に退避させた計算用データ210を解放することが可能となる。換言すると、プロセススケジューラ1021は、計算プロセス202が終了すると、計算用データ210をメモリ11に退避させるよう計算ノードメモリ退避・復元手段1022に指示するよう構成することが出来る。これにより、計算ノードメモリ退避・復元手段1022は、計算プロセス202が終了した計算用データ210を確保したデバイスメモリ退避領域111に退避させることが可能となる。また、この際に、プロセススケジューラ1021は、転送アドレスリスト1031を更新するようRDMAアドレス更新手段1024に対して指示する。これにより、RDMAアドレス更新手段1024は、転送アドレスリスト1031を更新することが出来る。このような構成により、RDMA対象のデータであっても、計算プロセス202が終了した時点でメモリ21を確保し続ける必要がなくなる。これにより、メモリ21を効率的に活用することが可能となる。
【0094】
[第2の実施形態]
次に、
図11、
図12を参照して、本発明の第2の実施形態について説明する。
図11は、制御装置5の構成の一例を示している。
図12は、情報処理装置6の構成の一例を示している。第2の実施形態では、制御装置5と情報処理装置6の構成の概要について説明する。まず、
図11を参照して制御装置5について説明する。
【0095】
図11を参照すると、制御装置5は、外部装置制御手段51と、メモリアクセス手段52と、外部メモリ仮想化手段53と、を有している。例えば、制御装置5は、図示しない演算装置と記憶装置とを有しており、記憶装置に格納されたプログラムを演算装置が実行することで、上記各手段を実現する。
【0096】
外部装置制御手段51は、外部装置の有する外部メモリに計算処理を実行する際に必要となるデータを展開するとともに、外部装置に計算処理を実行させる。
【0097】
メモリアクセス手段52は、計算処理で使用する論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスに基づいて外部メモリにアクセスする。
【0098】
外部メモリ仮想化手段93は、変換した物理アドレスと、外部メモリ内の物理アドレスである外部メモリ物理アドレスと、を対応付けることで外部メモリを仮想化する。
【0099】
このように、本実施形態における制御装置5は、外部メモリ仮想化手段53を有している。このような構成により、外部メモリ仮想化手段53は、変換した物理アドレスと、外部メモリ内の物理アドレスである外部メモリ物理アドレスと、を対応付けることで外部メモリを仮想化することが出来る。これにより、制御装置5で確保可能な物理アドレスの大きさに制限されずに外部メモリを活用することが可能となる。その結果、外部メモリを有効に活用することが可能となる。
【0100】
また、上述した制御装置5は、当該制御装置5に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、情報処理装置に、外部装置の有する外部メモリに計算処理を実行する際に必要となるデータを展開するとともに、外部装置に計算処理を実行させる外部装置制御手段51と、計算処理で使用する論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスに基づいて外部メモリにアクセスするメモリアクセス手段52と、変換した物理アドレスと、外部メモリ内の物理アドレスである外部メモリ物理アドレスと、を対応付けることで外部メモリを仮想化する外部メモリ仮想化手段53と、を実現させるためのプログラムである。
【0101】
また、上述した制御装置5により実行される制御方法は、制御装置が、外部装置の有する外部メモリに計算処理を実行する際に必要となるデータを展開するとともに、外部装置に計算処理を実行させ、計算処理で使用する論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスに基づいて外部メモリにアクセスし、変換した物理アドレスと、外部メモリ内の物理アドレスである外部メモリ物理アドレスと、を対応付けることで外部メモリを仮想化する、という方法である。
【0102】
上述した構成を有する、プログラム、又は、制御方法、の発明であっても、上記制御装置5と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【0103】
また、本発明の目的は、
図12で示すような情報処理装置6であっても達成することが出来る。
図12を参照すると、情報処理装置6は、制御ノード7と、計算ノード8とを有している。
【0104】
計算ノード8は、制御ノード7により制御される。計算ノード8は、メモリ81を有している。
【0105】
制御ノード7は、オペレーティングシステムが組み込まれている。
図12を参照すると、制御ノード7は、外部装置制御手段71と、メモリアクセス手段72と、外部メモリ仮想化手段73と、を有している。例えば、制御ノード7は、図示しない演算装置と記憶装置とを有しており、記憶装置に格納されたプログラムを演算装置が実行することで、上記各手段を実現する。
【0106】
外部装置制御手段71は、計算ノード8の有するメモリ81に計算処理を実行する際に必要となるデータを展開するとともに、計算ノード8に計算処理を実行させる。
【0107】
メモリアクセス手段52は、計算処理で使用する論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスに基づいてメモリ81にアクセスする。
【0108】
外部メモリ仮想化手段93は、変換した物理アドレスと、メモリ81内の物理アドレスである外部メモリ物理アドレスと、を対応付けることでメモリ81を仮想化する。
【0109】
このような構成を有する情報処理装置6であっても、制御装置5と同様に、本発明の目的を達成することが出来る。
【0110】
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における制御装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【0111】
(付記1)
外部装置の有する外部メモリに計算処理を実行する際に必要となるデータを展開するとともに、前記外部装置に前記計算処理を実行させる外部装置制御手段と、
前記計算処理で使用する論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスに基づいて前記外部メモリにアクセスするメモリアクセス手段と、
前記変換した物理アドレスと、前記外部メモリ内の物理アドレスである外部メモリ物理アドレスと、を対応付けることで前記外部メモリを仮想化する外部メモリ仮想化手段と、
を有する
制御装置。
(付記2)
付記1に記載の制御装置であって、
記憶装置と、
前記外部メモリに格納されたデータを前記記憶装置に退避させる退避手段と、
を有し、
前記退避手段は、前記外部装置制御手段により前記外部装置が実行する前記計算処理の内容が変更される際に、前記外部メモリに格納された当該計算処理用のデータを前記記憶装置に退避させる
制御装置。
(付記3)
付記2に記載の制御装置であって、
データが記憶されているメモリから他のメモリへ直接データを転送する転送装置を制御する転送装置制御手段を備え、
前記転送装置制御手段は、前記退避手段がデータを退避させる際に前記転送装置によるデータの転送を禁止する
制御装置。
(付記4)
付記3に記載の制御装置であって、
前記外部メモリ仮想化手段は、前記外部装置制御手段により前記外部装置が実行する前記計算処理の内容が変更される際であって、前記外部メモリに格納された当該計算処理用のデータが前記転送装置による転送の対象でない場合、前記変換した物理アドレスと前記外部メモリ物理アドレスとを対応づけた情報のうち、前記変換した物理アドレスを少なくとも解放する
制御装置。
(付記5)
付記3又は4に記載の制御装置であって、
前記退避手段が退避するデータが前記転送装置による転送の対象である場合に、当該転送装置がデータを転送する際に用いる転送アドレスリストの物理アドレスを前記外部メモリにアクセスする際に用いるアドレスから退避先の前記記憶装置のアドレスに変更するアドレス更新手段を有する
制御装置。
(付記6)
付記5に記載の制御装置であって、
前記退避手段は、前記外部装置による前記計算処理が終了すると、前記外部メモリに展開された前記計算処理用のデータを前記記憶装置に退避させ、
前記アドレス更新手段は、前記転送アドレスリストの物理アドレスを前記外部メモリのアドレスから退避先の前記記憶装置のアドレスに変更する
制御装置。
(付記7)
付記1乃至6のいずれかに記載の制御装置であって、
前記外部メモリ内の断片化したデータを連続する領域に最配置する再配置手段を有する
制御装置。
(付記8)
制御装置が、
外部装置の有する外部メモリに計算処理を実行する際に必要となるデータを展開するとともに、前記外部装置に前記計算処理を実行させ、
前記計算処理で使用する論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスに基づいて前記外部メモリにアクセスし、
前記変換した物理アドレスと、前記外部メモリ内の物理アドレスである外部メモリ物理アドレスと、を対応付けることで前記外部メモリを仮想化する
制御方法。
(付記8−1)
付記8に記載の制御方法であって、
前記外部装置が実行する前記計算処理の内容が変更される際に、前記外部メモリに格納された当該計算処理用のデータを前記制御装置が有する記憶装置に退避させる
制御方法。
(付記8−2)
付記8−1に記載の制御方法であって、
前記外部メモリに格納された当該計算処理用のデータを前記制御装置が有する記憶装置に退避させる際に、データが記憶されているメモリから他のメモリへ直接データを転送する転送装置によるデータの転送を禁止する
制御方法。
(付記9)
情報処理装置に、
外部装置の有する外部メモリに計算処理を実行する際に必要となるデータを展開するとともに、前記外部装置に前記計算処理を実行させる外部装置制御手段と、
前記計算処理で使用する論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスに基づいて前記外部メモリにアクセスするメモリアクセス手段と、
前記変換した物理アドレスと、前記外部メモリ内の物理アドレスである外部メモリ物理アドレスと、を対応付けることで前記外部メモリを仮想化する外部メモリ仮想化手段と、
を実現させるための
プログラム。
(付記9−1)
付記9に記載のプログラムであって、
前記外部メモリに格納されたデータを前記記憶装置に退避させる退避手段を実現させ、
前記退避手段は、前記外部装置制御手段により前記外部装置が実行する前記計算処理の内容が変更される際に、前記外部メモリに格納された当該計算処理用のデータを前記情報処理装置が有する記憶装置に退避させる
プログラム。
(付記9−2)
付記9−1に記載のプログラムであって、
データが記憶されているメモリから他のメモリへ直接データを転送する転送装置を制御する転送装置制御手段を実現させ、
前記転送装置制御手段は、前記退避手段がデータを退避させる際に前記転送装置によるデータの転送を禁止する
プログラム。
(付記10)
オペレーティングシステムが組み込まれた制御ノードと、前記制御ノードにより制御される計算ノードと、を有し、
前記制御ノードは、
前記計算ノードの有するメモリに計算処理を実行する際に必要となるデータを展開するとともに、前記計算ノードに前記計算処理を実行させる外部装置制御手段と、
前記計算処理で使用する論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスに基づいて前記メモリにアクセスするメモリアクセス手段と、
前記変換した物理アドレスと、前記メモリ内の物理アドレスである外部メモリ物理アドレスと、を対応付けることで前記メモリを仮想化する外部メモリ仮想化手段と、
を有する
情報処理装置。
(付記10−1)
付記10に記載の情報処理装置であって、
前記制御ノードは、
記憶装置と、
前記メモリに格納されたデータを前記記憶装置に退避させる退避手段と、
を有し、
前記退避手段は、前記外部装置制御手段により前記計算ノードが実行する前記計算処理の内容が変更される際に、前記メモリに格納された当該計算処理用のデータを前記記憶装置に退避させる
情報処理装置。
(付記10−2)
付記10−1に記載の情報処理装置であって、
前記制御ノードは、データが記憶されているメモリから他のメモリへ直接データを転送する転送装置を制御する転送装置制御手段を備え、
前記転送装置制御手段は、前記退避手段がデータを退避させる際に前記転送装置によるデータの転送を禁止する
情報処理装置。
【0112】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0113】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【解決手段】外部装置の有する外部メモリに計算処理を実行する際に必要となるデータを展開するとともに、外部装置に計算処理を実行させる外部装置制御手段と、計算処理で使用する論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスに基づいて外部メモリにアクセスするメモリアクセス手段と、変換した物理アドレスと、外部メモリ内の物理アドレスである外部メモリ物理アドレスと、を対応付けることで外部メモリを仮想化する外部メモリ仮想化手段と、を有する。