(57)【要約】  ホストプロセッサとハードウェアアクセラレータとを有する情報処理装置において、処理実行中のデータ転送に伴う性能劣化を防ぐことができる情報処理装置等が提供される。  情報処理装置１は、ホストプロセッサ１０２に接続された第１メモリ領域とハードウェアアクセラレータ１０６に接続された第２メモリ領域とを用いて行われる仮想記憶処理を管理する仮想記憶管理部１１２と、前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理部１１２を制御するデータ転送制御部１１０と、を有する。
2014132619.tif 000002
【特許請求の範囲】
【請求項１】
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を管理する仮想記憶管理手段と、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理手段を制御するデータ転送制御手段と、
を備える情報処理装置。
【請求項２】
前記データ転送制御手段は、
前記第１メモリ領域から転送される、前記ハードウェアアクセラレータにおいて実行される処理に必要なデータに基づいて、その処理に利用する前記第２メモリ領域をデータ退避の対象外に設定するよう前記仮想記憶管理手段を制御し、
前記処理が完了するのに応じて、前記第１のメモリ領域に転送される処理結果のデータに基づいて、前記設定を解除するよう前記仮想記憶管理手段を制御する、
請求項１に記載の情報処理装置。
【請求項３】
前記データ転送制御手段は、
前記第２のメモリ領域から前記第１のメモリ領域に対して、前記処理結果を転送した際、転送した前記処理結果の情報に基づいて、前記処理に利用された前記第２のメモリ領域におけるメモリ領域のデータを退避するよう前記仮想記憶管理手段を制御する、
請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記ホストプロセッサは、前記第２のメモリ領域から前記第１のメモリ領域に転送されるデータを複製するデータ複製手段を更に有し、
前記データ転送制御手段は、
前記第２のメモリ領域から転送されるデータを前記第１のメモリ領域に書き込むよう前記データ複製手段を制御するとともに、前記複製手段によって複製された該データをスワップ領域にも書き込むよう前記データ複製手段を制御し、
前記アクセラレータにおけるメモリ領域をデータ退避済みとして設定するよう前記仮想記憶管理手段を制御する、
請求項１乃至３の何れかに記載の情報処理装置。
【請求項５】
前記データ転送制御手段は、
前記ハードウェアアクセラレータにおいて実行される処理に必要なデータを転送する際に、前記仮想記憶において前記第２のメモリ領域から退避されたデータが存在する場合、前記仮想記憶における前記データについて物理領域を割り当てるよう前記仮想記憶管理手段を制御する
請求項１乃至４の何れかに記載の情報処理装置。
【請求項６】
サーバであることを特徴とする請求項１乃至５の何れかに記載の情報処理装置。
【請求項７】
コンピュータが、
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を仮想記憶管理手段によって管理し、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理手段の動作を制御する
情報処理方法。
【請求項８】
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を管理する仮想記憶管理処理と、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理処理を制御するデータ転送制御処理と、
をコンピュータに実行させるコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストプロセッサとハードウェアアクセラレータとを有する情報処理装置において、円滑な処理を実現すべく、メモリ領域に退避するデータを適宜制御する技術分野に関する。
【背景技術】
【０００２】
近年、ホストプロセッサとハードウェアアクセラレータとを有する情報処理システムが知られている。このような情報処理システムにおいて、そのホストプロセッサには主記憶装置（主メモリ、メモリ、以降「主メモリ」と表現する）が更に接続される。そして、そのハードウェアアクセラレータには、アクセラレータメモリが接続される。【０００３】
係る情報処理システムは、主メモリとアクセラレータメモリとを用いて仮想記憶動作を実行し、さらにハードディスク等の記憶装置にも仮想的なメモリ領域（スワップ領域）を割り当てることができる。この仮想記憶動作により、ハードウェアアクセラレータは、アクセラレータメモリの物理的な容量以上のメモリ領域を確保することが可能になる。【０００４】
具体的には、メモリ領域のページング及びスワップという技術により、上述した効果を得ることができる。【０００５】
係るページングとは、仮想記憶方式の１つである。係るページングは、物理メモリ領域及び仮想メモリ領域をページと呼ばれる一定の大きさの領域に分割し、このページを単位として主メモリと、ハードディスク等の記憶装置との間において、データを転送する技術である。係るスワップとは、主にページングのデータ転送に関する技術である。具体的には、係るスワップとは、主メモリと、ハードディスク等の記憶装置との間において、内容を書き出したり読み込んだりすることによりデータを交換する技術である。【０００６】
次に、ページングにおけるページングアウトとは、メモリ領域の不要なページを、ハードディスク等の記憶装置に割り当てられた仮想的な領域に書き出すことにより、物理メモリから当該ページを消去する技術である。尚、ここで説明したページングアウトは、スワップにおけるスワップアウトである。
また、ページングにおけるページングインとは、上述したページングアウトとは逆に、必要なページをハードディスク等に割り当てられた仮想的な領域から読み出し、読み出したページに相当するデータを物理メモリに配置する技術である。尚、ここで説明したページングインは、スワップにおけるスワップインである。【０００７】
上記技術によれば、係る物理メモリのデータを仮想的な領域へ移すことにより、新たに使用可能な記憶領域を物理メモリに確保することができる。即ち、上記技術によれば、高速なメモリを他の処理のために用いることが可能になる。【０００８】
上記技術について、図１０及び図１１を参照して説明する。図１０は、仮想記憶管理方式を用いたホストプロセッサとハードウェアアクセラレータから構成される情報処理システム５を例示するブロック図である。【０００９】
図１０に示すように、情報処理システム５は、以下の構成を有する。即ち、
・ホストプロセッサ５０２、
・ホストプロセッサ５０２がアクセスする主メモリ５０４、
・ハードウェアアクセラレータ５０６、
・ハードウェアアクセラレータ５０６がアクセスするアクセラレータメモリ５０８、
・ハードウェアアクセラレータ５０６が有する仮想記憶管理部１１２。【００１０】
更に、情報処理システム５は、スワップ領域５１４を有する。仮想記憶管理部１１２は、アクセラレータメモリ５０８のデータの退避先として、記憶装置５１４におけるスワップ領域を用いる。【００１１】
仮想記憶管理部５１２の機能としては、アクセラレータメモリ５０８の領域をページ単位で管理し、デマンドページング方式により動作する技術が知られている。【００１２】
具体的に、仮想記憶管理部５１２は、アクセラレータメモリ５０８が必要とするページが確保できなくなると、アクセラレータメモリ５０８に確保されているページ群から、いくつかのページを選択する。次に、仮想記憶管理部５１２は、選択したページを、スワップ領域に退避させる。そして、ハードウェアアクセラレータ５０６がアクセスしようとするページが当該スワップ領域に退避されている場合、仮想記憶管理部５１２は、係るスワップ領域に退避されたページを、アクセラレータメモリ５０８に読み込むよう制御する。【００１３】
次に、図１１を参照して、情報処理システム５の動作について説明する。図１１は、情報処理システム５における処理の流れを示すフローチャートである。図１１に示すように、まず情報処理システム５にタスクが投入され、ホストプロセッサ５０２は、処理を実行する（ステップＳ５０２）。次いで、ホストプロセッサ５０２は、ハードウェアアクセラレータ５０６において処理するデータを、主メモリ５０４からアクセラレータメモリ５０８に転送する（ステップＳ５０４）。ハードウェアアクセラレータ５０６は、ホストプロセッサ５０２から転送されたデータを用いて処理を実行する（ステップＳ５０６）。その後、ホストプロセッサ５０２は、ハードウェアアクセラレータ５０６が処理した結果を、アクセラレータメモリ５０８から主メモリ５０４に転送する（ステップＳ５０８）。次に、ホストプロセッサ５０２は、次のタスクを処理する（ステップＳ５０２、あるいはステップＳ５０４）。情報処理システム５は、ステップＳ５０２乃至ステップＳ５０８における処理を何回か繰り返すことにより、ホストプロセッサ５０２におけるタスクの処理を完了する。【００１４】
例えば、特許文献１は、汎用プロセッサとハードウェアアクセラレータとを有する装置を開示する。即ち、特許文献１は、主メモリとハードディスクドライブとの間のページングイン及びページングアウト等のメモリオペレーションを実行するメモリシステムについて開示する。【００１５】
特許文献２は、スワップ処理において、あるタスクを実行可能な状態になった直後のプログラムの動作特性を踏まえて、スワップアウト抑制対象のページを選択する技術を開示する。その際、特許文献２に開示された技術では、ページ置換アルゴリズムによりスワップアウト処理を抑制するページの優先順位付けを行う。【００１６】
特許文献３は、複数の情報処理装置が同一の論理ボリュームに記録されたデータを共有するシステムを開示する。即ち、特許文献３は、係る論理ボリュームが複数の区域により構成されている場合、係る論理ボリュームの複数の区域を排他的に制御する技術を記載する。具体的に、特許文献３に開示された技術は、複数の区域から構成される当該論理ボリュームにおいて、未使用の区域がある場合、その未使用の区域を、他の情報処理装置からアクセスできるように開放する技術である。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００９−１４０４７９号公報
【特許文献２】特開２０１０−００９２６５号公報
【特許文献３】特開平１０−１６１９１９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、特許文献１に記載された技術は、主メモリとハードディスクドライブとの間において、ページングイン及びページングアウト等の処理を実行する。このため、特許文献１に記載された技術は、係るページングイン及びページングアウトの実行時に、システムの性能が劣化する。【００１９】
特許文献２に記載された技術は、プログラムの動作特性を踏まえて、ページ置換アルゴリズムによりスワップアウト処理を抑制するページの選択を行う。即ち、特許文献２に記載された技術は、最近使われたページのスワップアウトを抑制するような選択をすることになる。このため、特許文献２に記載された技術は、最近使われたページであっても、その後、いつ使うかわからないページのスワップアウトを抑制するおそれがある。【００２０】
特許文献３に記載された技術は、論理ボリュームの未使用の区域を開放するため、開放する区域を選択する際に、その区域のデータが今後使われないのか否かが考慮されていない。【００２１】
本発明は、上記課題を鑑みなされた。即ち、本発明は、ホストプロセッサとハードウェアアクセラレータとを有する情報処理装置において、処理実行中のデータ転送に伴う性能劣化を防ぐことを１つの目的とする。
【課題を解決するための手段】
【００２２】
上記目的を達成するために、本発明に係る情報処理装置は、
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を管理する仮想記憶管理手段と、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理手段を制御するデータ転送制御手段と、を備える。【００２３】
上記目的を達成するために、本発明に係る情報処理方法は、
コンピュータが、
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を仮想記憶管理手段によって管理し、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理手段の動作を制御する。【００２４】
上記目的を達成するために、本発明に係るコンピュータプログラムは、ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を管理する仮想記憶管理処理と、前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理処理を制御するデータ転送制御処理と、をコンピュータに実行させる。【００２５】
尚、係る同目的は、当該コンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体によっても達成することができる。
【発明の効果】
【００２６】
本発明の情報処理装置によれば、ホストプロセッサとハードウェアアクセラレータとを有する情報処理装置において、処理実行中のデータ転送に伴う性能劣化を防ぐことができる。
【図面の簡単な説明】
【００２７】
【図１】本実施形態に係る情報処理装置１を実現可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。
【図２】第１の実施形態に係る情報処理装置１の機能構成を例示するブロック図である。
【図３】第１の実施形態に係る情報処理装置１における処理の流れを示すフローチャートである。
【図４】第２の実施形態に係る情報処理装置２の機能構成を例示するブロック図である。
【図５】第２の実施形態に係る情報処理装置２における処理の流れを示すフローチャートである。
【図６】第３の実施形態に係る情報処理装置３の機能構成を例示するブロック図である。
【図７】第３の実施形態に係る情報処理装置３における処理の流れを示すフローチャートである。
【図８】第４の実施形態に係る情報処理装置４の機能構成を例示するブロック図である。
【図９】第４の実施形態に係る情報処理装置４における処理の流れを示すフローチャートである。
【図１０】本発明に関連する仮想記憶管理方式を用いた情報処理システム５の機能構成を例示するブロック図である。
【図１１】本発明に関連する仮想記憶管理方式を用いた情報処理システム５における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２８】
本発明の実施形態について、図面を参照して詳細に説明する。
【００２９】
＜第１の実施形態＞
はじめに、本発明の第１の実施形態に係る情報処理装置１について説明する。
【００３０】
図１は、本発明の第１の実施形態に係る情報処理装置１を実現可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。情報処理装置１は、図１に例示する構成を有する。即ち、
・ＣＰＵ（Central Processing Unit）１０、
・メモリ１２、
・ＨＤＤ（ハードディスクドライブ）１４、
・図示しないネットワークを介して通信を行う通信ＩＦ（インタフェース）１６、
・入力装置１８、
・出力装置２０、
・ＣＤ（コンパクトディスク）等のコンピュータ読み取り可能な記憶媒体２４に記憶された情報を読み取り可能なリーダーライター２２。
【００３１】
そして、上記の各構成要素は、バス２６を通して互いに接続されており、互いにデータの入出力を行うことができる。
【００３２】
本実施形態に係る情報処理装置１は、メモリ１２又はＨＤＤ１４に記憶されているコンピュータプログラム（以下、「プログラム」と称する）をＣＰＵ１０が実行する。または、情報処理装置１は、ＣＰＵ１０が記憶媒体２４に記憶されているプログラムを実行する。ＣＰＵ１０において実行するプログラムは、通信ＩＦ１６、入力装置１８あるいはリーダーライター２２を介して外部から取得してもよい。また、表示が必要な場合、ＣＰＵ１０は出力装置２０に出力結果を表示する。図１に示す情報処理装置１のハードウェア構成例は、後述する実施形態にも適用可能である。
【００３３】
図２は、本発明の第１の実施形態に係る情報処理装置１の機能構成を例示するブロック図である。例えば、後述する本発明の実施形態に係る情報処理装置は、サーバ等である。図２に示すように、第１の実施形態に係る情報処理装置１は、例えば以下の構成を有する。即ち、
・ホストプロセッサ１０２、
・ホストプロセッサ１０２がアクセスする主メモリ１０４（第１のメモリ領域）、
・ハードウェアアクセラレータ１０６、
・ハードウェアアクセラレータ１０６がアクセスするアクセラレータメモリ１０８（第２のメモリ領域）、
・データ転送制御部１１０。
【００３４】
例えば、ハードウェアアクセラレータ１０６には、メニコアアクセラレータやグラフィックアクセラレータ等が含まれる。
【００３５】
ハードウェアアクセラレータ１０６は、仮想記憶管理部１１２を有する。また、ホストプロセッサ１０２及びハードウェアアクセラレータ１０６は、以下に説明する仮想記憶管理部１１２とは異なる不図示の仮想記憶管理機能を有することとする。但し、係る不図示の仮想記憶管理機能自体現在では、一般的に知られた技術を採用することができるので、本実施形態における説明は省略する。
【００３６】
本実施形態においては、ハードウェアアクセラレータ１０６が、仮想記憶管理部１１２を有する構成について説明するが、仮想記憶管理部１１２は、ハードウェアアクセラレータ１０６が有していなくてもよい。例えば、ホストプロセッサ１０２あるいは外部装置等は、仮想記憶管理部１１２を有していてもよい。
【００３７】
さらに、情報処理装置１は、記憶装置（ハードディスクドライブ等）１１４にデータを読み書き可能である。例えば、記憶装置１１４は、情報処理装置１が備えていてもよいし、外部装置として設置されていてもよい。
【００３８】
ホストプロセッサ１０２は、プログラムに従って処理Ａを実行する。処理Ａは、ホストプロセッサ１０２が実行すべき処理全体を表わし、後述するハードウェアアクセラレータ１０６が実行する処理Ｂ等を含む複数の処理からなる。ホストプロセッサ１０２は、処理Ｂ等の複数の処理を含む一連の処理Ａを完了した場合、動作を終了する。また、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６に関する制御を行う。具体的には、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６における処理に必要なデータを、主メモリ１０４からアクセラレータメモリ１０８に転送する。
【００３９】
ハードウェアアクセラレータ１０６は、主メモリ１０４からアクセラレータメモリ１０８に転送されたデータを用いて処理Ｂを実行する。ハードウェアアクセラレータ１０６が実行する処理Ｂは、ホストプロセッサ１０２が実行する処理Ａに含まれる複数の処理のうち、ハードウェアアクセラレータ１０６に振り分けられた処理である。処理Ｂの振り分け手法については、現在では一般的な技術を採用できるので、本実施例における説明を省略する。係る処理Ｂが完了した場合、ハードウェアアクセラレータ１０６は、処理結果をアクセラレータメモリ１０８から主メモリ１０４に転送する。
【００４０】
仮想記憶管理部１１２は、アクセラレータメモリ１０８のメモリ領域を管理する。仮想記憶管理部１１２は、アクセラレータメモリ１０８のメモリ領域において、必要とするメモリ領域が確保できなくなると、アクセラレータメモリ１０８に確保されているメモリ領域の一部を選択する。そして、仮想記憶管理部１１２は、選択した当該一部のメモリ領域に記載されているデータを、記憶装置１１４におけるスワップ領域に退避させる（スワップアウト）。
【００４１】
データ転送制御部１１０は、仮想記憶管理部１１２と連携することにより、主メモリ１０４とアクセラレータメモリ１０８との間におけるデータの転送を制御する。具体的には、データ転送制御部１１０は、仮想記憶管理部１１２と連携し、アクセラレータメモリ１０８におけるメモリ領域に格納されているデータを退避するよう設定を行う。例えば、データ転送制御部１１０は、アクセラレータメモリ１０８の特定のメモリ領域におけるデータ退避の対象外設定（スワップ対象外設定）及びその設定の解除を行う。スワップ対象外設定とは、当該メモリ領域をデータ退避のための対象領域から除外する手続である。係るスワップ対象外設定は、アクセラレータメモリ１０８における特定のメモリ領域がスワップされる頻度を減らす設定であればよい。例えば、データ転送制御部１１０は、アクセラレータメモリ１０８における特定のメモリ領域が完全にスワップされないよう設定してもよいし、スワップされる頻度を少なくする（小さくする）よう設定してもよい。
【００４２】
次に、情報処理装置１における処理の流れを説明する。
【００４３】
図３は、本発明の第１の実施形態に係る情報処理装置１における処理の流れを示すフローチャートである。
【００４４】
ステップＳ１０２において、ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。
【００４５】
ステップＳ１０４において、データ転送制御部１１０は、仮想記憶管理部１１２と連携し、アクセラレータメモリ１０８のメモリ領域をスワップの対象外として設定する。具体的に、データ転送制御部１１０は、仮想記憶管理部１１２と連携する。そして、データ転送制御部１１０は、特定のメモリ領域に対して、記憶装置１１４におけるスワップ領域に退避されているデータを、記憶装置１１４におけるスワップ領域からアクセラレータメモリ１０８に全て読み込む処理を実施する。ここで、当該特定のメモリ領域とは、ハードウェアアクセラレータ１０６が処理Ｂに用いるアクセラレータメモリ１０８が有するメモリ領域である。そして、ハードウェアアクセラレータ１０６は、処理Ｂに用いるアクセラレータメモリ１０８のメモリ領域をスワップ対象外に設定する。
【００４６】
ステップＳ１０６において、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６が処理Ｂに用いるデータを、主メモリ１０４からアクセラレータメモリ１０８に転送する。
【００４７】
ステップＳ１０８において、ハードウェアアクセラレータ１０６は、当該プログラムに記述された一連の処理（処理Ａ）のうち、指定された一部の処理である処理Ｂを実行する。具体的には、ハードウェアアクセラレータ１０６は、ステップＳ１０６において、ホストプロセッサ１０２から転送されたデータを用いて処理Ｂを実行する。
【００４８】
ステップＳ１１０において、例えばホストプロセッサ１０２は、ハードウェアアクセラレータ１０６における処理結果を、アクセラレータメモリ１０８から主メモリ１０４に転送する。
【００４９】
ステップＳ１１２において、データ転送制御部１１０は、仮想記憶管理部１１２と連携し、ステップＳ１０４において設定されたアクセラレータメモリ１０８におけるスワップ対象外の設定を解除する。
【００５０】
尚、図示していないが、ステップＳ１０２からステップＳ１１２の処理は、繰り返し行われる。処理Ａに含まれる複数の処理が完了した場合に、ホストプロセッサ１０２は、処理Ａの処理結果を出力することにより、情報処理装置１の動作は終了する。後述する実施形態に係る情報処理装置も、処理Ａの処理結果が出力された場合に、動作を終了する。
【００５１】
なお、上述した処理の流れの変形例として、ステップＳ１０４とステップＳ１０６の実行順序は、逆であってもよい。即ち、主メモリ１０４からアクセラレータメモリ１０８にデータを転送した後に、アクセラレータメモリ１０８のメモリ領域をデータ退避の対象外として設定してもよい。
【００５２】
また、ステップＳ１１０とステップＳ１１２の実行順序は、逆であってもよい。即ち、アクセラレータメモリ１１２のメモリ領域に設定されたデータ転送の対象外とする設定を解除した後に、アクセラレータメモリ１０８から主メモリ１０４に処理結果を転送してもよい。
【００５３】
以上説明したように、本発明の第１の実施形態に係る情報処理装置１は、ホストプロセッサとハードウェアアクセラレータとを有する情報処理装置において、処理実行中のデータ転送に伴う性能劣化を防ぐことができる。その理由は、ハードウェアアクセラレータ１０６が処理Ｂを実行しているフェーズ（ステップＳ１０８）においては、処理Ｂを実行する際に用いているアクセラレータメモリ１０８のメモリ領域に記載されているデータがスワップアウトされない、あるいはされにくくなっているためである。
【００５４】
従って、本実施形態によれば、ハードウェアアクセラレータ１０６が処理Ｂを実行しているフェーズ（ステップＳ１０８）において、ページミスが発生しない、あるいはページミスの頻度が低くなる。
【００５５】
＜第２の実施形態＞
次に、上述した本発明の第１の実施形態に係る情報処理装置１を基本とする第２の実施形態に係る情報処理装置２について説明する。
【００５６】
図４は、本発明の第２の実施形態に係る情報処理装置２の機能構成を例示するブロック図である。図４に示すように、第２の実施形態に係る情報処理装置２は、データ転送制御部１１０がデータ転送制御部２１０に置き換えられた構成が、第１の実施形態に係る情報処理装置１と異なる。それ以外については、第１の実施形態に係る情報処理装置１と同様のため、同一の図面番号を付与すると共に、重複する説明は省略する。
【００５７】
ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始し、データを主メモリ１０４からアクセラレータメモリ１０８に転送する。
【００５８】
ハードウェアアクセラレータ１０６は、アクセラレータメモリ１０８に転送されたデータを用いて処理Ｂを実行し、処理結果をアクセラレータメモリ１０８から主メモリ１０４に転送する。
【００５９】
仮想記憶管理部１１２は、アクセラレータメモリ１０８のメモリ領域を管理し、アクセラレータメモリ１０８のデータを、記憶装置１１４におけるスワップ領域に退避（スワップアウト）させる。
【００６０】
データ転送制御部２１０は、仮想記憶管理部１１２と連携することにより、主メモリ１０４とアクセラレータメモリ１０８との間におけるデータの転送を制御する。具体的には、データ転送制御部２１０は、仮想記憶管理部１１２と連携し、アクセラレータメモリ１０８における特定のメモリ領域をスワップアウトする。例えば、アクセラレータメモリ１０８における特定のメモリ領域は、以降のハードウェアアクセラレータ１０６が実行する処理Ｂにおいて、再利用されないメモリ領域でもよい。
【００６１】
例えば、データ転送制御部２１０は、アクセラレータメモリ１０８から主メモリ１０４に転送されたデータ（ハードウェアアクセラレータ１０６において処理されたデータ）のメモリ領域をスワップアウトするよう決定してもよい。また、スワップアウトされる特定のメモリ領域は、主メモリ１０４からアクセラレータメモリ１０８に転送されたデータのメモリ領域としてもよい。また、スワップアウトされる特定のメモリ領域は、ユーザによって記述されたプログラムによって指定されたメモリ領域としてもよい。また、スワップアウトされる特定のメモリ領域は、上記説明した特定手法の組み合わせにより指定してもよい。
【００６２】
次に、情報処理装置２における処理の流れを説明する。
【００６３】
図５は、本発明の第２の実施形態に係る情報処理装置２における処理の流れを示すフローチャートである。
【００６４】
ステップＳ１０２において、ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。ステップＳ１０６において、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６が処理Ｂに用いるデータを、主メモリ１０４からアクセラレータメモリ１０８に転送する。ステップＳ１０８において、ハードウェアアクセラレータ１０６は、処理Ｂを実行する。ステップＳ１１０において、例えばホストプロセッサ１０２は、ハードウェアアクセラレータ１０６における処理結果を、アクセラレータメモリ１０８から主メモリ１０４に転送する。
【００６５】
ステップＳ２２０において、データ転送制御部２１０が、仮想記憶管理部１１２と連携し、アクセラレータメモリ１１２における特定のメモリ領域をスワップアウトさせる。特定のメモリ領域の決定手法は、上記説明した通りである。
【００６６】
以上説明したように、本発明の第２の実施形態に係る情報処理装置２は、ハードウェアアクセラレータ１０６が処理Ｂを実行しているフェーズ（ステップＳ１０８）において、スワップ発生の頻度を減らすことにより、性能劣化を抑えることができる。その理由は、積極的にデータの保持が不要なメモリ領域を、仮想記憶管理部１１２が開放するからである。
【００６７】
＜第３の実施形態＞
次に、本発明の第３の実施形態に係る情報処理装置３について説明する。
【００６８】
図６は、本発明の第３の実施形態に係る情報処理装置３の機能構成を例示するブロック図である。図６に示すように、第３の実施形態に係る情報処理装置３は、データ転送制御部１１０がデータ転送制御部３１０に置き換えられ、ホストプロセッサ１０２がデータ複製部３１６を備える構成が、第１の実施形態及び第２の実施形態に係る情報処理装置１と異なる。それ以外については、第１の実施形態及び第２の実施形態に係る情報処理装置１及び情報処理装置２と同様のため、同一の図面番号を付与すると共に、重複する説明は省略する。
【００６９】
ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始し、データを主メモリ１０４からアクセラレータメモリ１０８に転送する。
【００７０】
ハードウェアアクセラレータ１０６は、アクセラレータメモリ１０８に転送されたデータを用いて処理Ｂを実行し、処理結果をアクセラレータメモリ１０８からデータ複製部３１６に転送する。
【００７１】
仮想記憶管理部１１２は、データ複製部３１６に転送された処理結果のメモリ領域をスワップアウト済みと設定する。
【００７２】
データ転送制御部３１０は、仮想記憶管理部１１２と連携することにより、データの転送を制御する。具体的には、データ転送制御部３１０は、ハードウェアアクセラレータ１０６において処理された結果を、データ複製部３１６に転送するよう制御する。
【００７３】
データ複製部３１６は、アクセラレータメモリ１０８から転送された処理結果を主メモリの指定されたメモリ領域に書き込む。さらに、データ複製部３１６は、アクセラレータメモリ１０８から転送された処理結果を複製し、複製した処理結果を記憶装置１１４におけるスワップ領域に退避する。
【００７４】
次に、情報処理装置３における処理の流れを説明する。
【００７５】
図７は、本発明の第３の実施形態に係る情報処理装置３における処理の流れを示すフローチャートである。
【００７６】
ステップＳ１０２において、ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。ステップＳ１０６において、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６が処理Ｂに用いるデータを、主メモリ１０４からアクセラレータメモリ１０８に転送する。ステップＳ１０８において、ハードウェアアクセラレータ１０６は、処理Ｂを実行する。
【００７７】
ステップＳ３３２において、データ転送制御部３１０は、ハードウェアアクセラレータ１０６において処理された結果を、アクセラレータメモリ１０８からデータ複製部３１６に転送する。
【００７８】
ステップＳ３３４において、仮想記憶管理部１１２は、アクセラレータメモリ１０８において転送されたメモリ領域をスワップアウト済みに設定する。
【００７９】
ステップＳ３３６において、データ複製部３１６は、アクセラレータメモリ１０８から転送された処理結果を、主メモリ１０４の特定のメモリ領域に書き込む。
【００８０】
ステップＳ３３８において、データ複製部３１６は、アクセラレータメモリ１０８から転送された処理結果を複製し、複製した処理結果を記憶装置１１４におけるスワップ領域に退避する。
【００８１】
以上説明したように、本発明の第３の実施形態に係る情報処理装置３は、スワップアウトによる性能劣化を回避することができる。その理由は、ハードウェアアクセラレータ１０６とホストプロセッサ１０２との間におけるデータ転送を増やすことなく、データ転送にあわせてスワップアウトを実行することができるからである。
【００８２】
＜第４の実施形態＞
次に、本発明の第４の実施形態に係る情報処理装置４について説明する。
【００８３】
図８は、本発明の第４の実施形態に係る情報処理装置４の機能構成を例示するブロック図である。図８に示すように、第４の実施形態に係る情報処理装置４は、データ転送制御部１１０がデータ転送制御部４１０に置き換えられた構成が、第１の実施形態に係る情報処理装置１と異なる。それ以外については、第１の実施形態に係る情報処理装置１と同様のため、同一の図面番号を付与すると共に、重複する説明は省略する。
【００８４】
ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。また、ホストプロセッサ１０２は、指定された領域を主メモリ１０４から、アクセラレータメモリ１０８にデータを転送する。
【００８５】
データ転送制御部４１０は、仮想記憶管理部１１２と連携することにより、主メモリ１０４とアクセラレータメモリ１０８との間におけるデータの転送を制御する。具体的には、データ転送制御部４１０は、ハードウェアアクセラレータ１０６が実行する処理Ｂに用いるデータを確保するよう仮想記憶管理部１１２を制御する。
【００８６】
仮想記憶管理部１１２は、アクセラレータメモリ１０８においてスワップアウトされたデータに対して、記憶装置１１４におけるスワップ領域からデータの読み込みを行わず、物理領域の割り当てを行うことにより、スワップイン済みと設定する。
【００８７】
ハードウェアアクセラレータ１０６は、仮想記憶管理部１１２によりスワップイン済みと設定されたデータを用いて処理Ｂを実行し、処理結果をアクセラレータメモリ１０８から主メモリ１０４に転送する。
【００８８】
次に、情報処理装置４における処理の流れを説明する。
【００８９】
図９は、本発明の第４の実施形態に係る情報処理装置４における処理の流れを示すフローチャートである。
【００９０】
ステップＳ１０２において、ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。
【００９１】
ステップＳ４４２において、仮想記憶管理部１１２は、仮想記憶上において物理領域を割り当て、ハードウェアアクセラレータ１０６が実行する処理Ｂに用いるデータをスワップイン済みに設定する。具体的には、仮想記憶管理部１１２は、アクセラレータメモリ１０８からスワップアウトされた仮想記憶上のデータに対して物理領域を割り当てる。
【００９２】
ステップＳ４４４において、例えばホストプロセッサ１０２は、主メモリ１０４からアクセラレータメモリ１０８に指定された領域のデータを転送する。
【００９３】
ステップＳ１０８において、ハードウェアアクセラレータ１０６は、処理Ｂを実行する。ステップＳ１１０において、例えばホストプロセッサ１０２は、ハードウェアアクセラレータ１０６における処理結果を、アクセラレータメモリ１０８から主メモリ１０４に転送する。
【００９４】
以上説明したように、本発明の第４の実施形態に係る情報処理装置４は、スワップインによる性能劣化を回避することができる。その理由は、ハードウェアアクセラレータ１０６とホストプロセッサ１０２との間におけるデータ転送を増やすことなく、データ転送にあわせてスワップインを実行することができるからである。
【００９５】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【００９６】
この出願は、２０１３年３月１日に出願された日本出願特願２０１３−０４０９８２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００９７】
１，２，３，４    情報処理装置
５    情報処理システム
１０    ＣＰＵ
１２    メモリ
１４    ＨＤＤ
１６    通信ＩＦ
１８    入力装置
２０    出力装置
２２    リーダーライター
２４    記憶媒体
２６    バス
１０２，５０２    ホストプロセッサ
１０４，５０４    主メモリ
１０６、５０６    ハードウェアアクセラレータ
１０８，５０８    アクセラレータメモリ
１１０，２１０，３１０，４１０    データ転送制御部
１１２，５１２    仮想記憶管理部
１１４，５１４    記憶装置（スワップ領域）
３１６    データ複製部
【図１】
2014132619.tif 000003
【図２】
2014132619.tif 000004
【図３】
2014132619.tif 000005
【図４】
2014132619.tif 000006
【図５】
2014132619.tif 000007
【図６】
2014132619.tif 000008
【図７】
2014132619.tif 000009
【図８】
2014132619.tif 000010
【図９】
2014132619.tif 000011
【図１０】
2014132619.tif 000012
【図１１】
2014132619.tif 000013
【手続補正書】
【提出日】平成27年9月1日(2015.9.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を管理する仮想記憶管理手段と、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理手段を制御するデータ転送制御手段と、
を備える情報処理装置。
【請求項２】
前記データ転送制御手段は、
前記第１メモリ領域から転送される、前記ハードウェアアクセラレータにおいて実行される処理に必要なデータに基づいて、その処理に利用する前記第２メモリ領域をデータ退避の対象外に設定するよう前記仮想記憶管理手段を制御し、
前記処理が完了するのに応じて、前記第１のメモリ領域に転送される処理結果のデータに基づいて、前記設定を解除するよう前記仮想記憶管理手段を制御する、
請求項１に記載の情報処理装置。
【請求項３】
前記データ転送制御手段は、
前記第２のメモリ領域から前記第１のメモリ領域に対して、前記処理結果を転送した際、転送した前記処理結果の情報に基づいて、前記処理に利用された前記第２のメモリ領域におけるメモリ領域のデータを退避するよう前記仮想記憶管理手段を制御する、
請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記ホストプロセッサは、前記第２のメモリ領域から前記第１のメモリ領域に転送されるデータを複製するデータ複製手段を更に有し、
前記データ転送制御手段は、
前記第２のメモリ領域から転送されるデータを前記第１のメモリ領域に書き込むよう前記データ複製手段を制御するとともに、前記複製手段によって複製された該データをスワップ領域にも書き込むよう前記データ複製手段を制御し、
前記アクセラレータにおけるメモリ領域をデータ退避済みとして設定するよう前記仮想記憶管理手段を制御する、
請求項１乃至３の何れかに記載の情報処理装置。
【請求項５】
前記データ転送制御手段は、
前記ハードウェアアクセラレータにおいて実行される処理に必要なデータを転送する際に、前記仮想記憶において前記第２のメモリ領域から退避されたデータが存在する場合、前記仮想記憶における前記データについて物理領域を割り当てるよう前記仮想記憶管理手段を制御する
請求項１乃至４の何れかに記載の情報処理装置。
【請求項６】
サーバであることを特徴とする請求項１乃至５の何れかに記載の情報処理装置。
【請求項７】
コンピュータが、
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を仮想記憶管理手段によって管理し、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理手段の動作を制御する
情報処理方法。
【請求項８】
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を管理する仮想記憶管理処理と、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理処理を制御するデータ転送制御処理と、
をコンピュータに実行させるコンピュータプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストプロセッサとハードウェアアクセラレータとを有する情報処理装置において、円滑な処理を実現すべく、メモリ領域に退避するデータを適宜制御する技術分野に関する。
【背景技術】
【０００２】
近年、ホストプロセッサとハードウェアアクセラレータとを有する情報処理システムが知られている。このような情報処理システムにおいて、そのホストプロセッサには主記憶装置（主メモリ、メモリ、以降「主メモリ」と表現する）が更に接続される。そして、そのハードウェアアクセラレータには、アクセラレータメモリが接続される。
【０００３】
係る情報処理システムは、主メモリとアクセラレータメモリとを用いて仮想記憶動作を実行し、さらにハードディスク等の記憶装置にも仮想的なメモリ領域（スワップ領域）を割り当てることができる。この仮想記憶動作により、ハードウェアアクセラレータは、アクセラレータメモリの物理的な容量以上のメモリ領域を確保することが可能になる。
【０００４】
具体的には、メモリ領域のページング及びスワップという技術により、上述した効果を得ることができる。
【０００５】
係るページングとは、仮想記憶方式の１つである。係るページングは、物理メモリ領域及び仮想メモリ領域をページと呼ばれる一定の大きさの領域に分割し、このページを単位として主メモリと、ハードディスク等の記憶装置との間において、データを転送する技術である。係るスワップとは、主にページングのデータ転送に関する技術である。具体的には、係るスワップとは、主メモリと、ハードディスク等の記憶装置との間において、内容を書き出したり読み込んだりすることによりデータを交換する技術である。
【０００６】
次に、ページングにおけるページングアウトとは、メモリ領域の不要なページを、ハードディスク等の記憶装置に割り当てられた仮想的な領域に書き出すことにより、物理メモリから当該ページを消去する技術である。尚、ここで説明したページングアウトは、スワップにおけるスワップアウトである。
また、ページングにおけるページングインとは、上述したページングアウトとは逆に、必要なページをハードディスク等に割り当てられた仮想的な領域から読み出し、読み出したページに相当するデータを物理メモリに配置する技術である。尚、ここで説明したページングインは、スワップにおけるスワップインである。
【０００７】
上記技術によれば、係る物理メモリのデータを仮想的な領域へ移すことにより、新たに使用可能な記憶領域を物理メモリに確保することができる。即ち、上記技術によれば、高速なメモリを他の処理のために用いることが可能になる。
【０００８】
上記技術について、図１０及び図１１を参照して説明する。図１０は、仮想記憶管理方式を用いたホストプロセッサとハードウェアアクセラレータから構成される情報処理システム５を例示するブロック図である。
【０００９】
図１０に示すように、情報処理システム５は、以下の構成を有する。即ち、
・ホストプロセッサ５０２、
・ホストプロセッサ５０２がアクセスする主メモリ５０４、
・ハードウェアアクセラレータ５０６、
・ハードウェアアクセラレータ５０６がアクセスするアクセラレータメモリ５０８、
・ハードウェアアクセラレータ５０６が有する仮想記憶管理部１１２。
【００１０】
更に、情報処理システム５は、スワップ領域５１４を有する。仮想記憶管理部１１２は、アクセラレータメモリ５０８のデータの退避先として、記憶装置５１４におけるスワップ領域を用いる。
【００１１】
仮想記憶管理部５１２の機能としては、アクセラレータメモリ５０８の領域をページ単位で管理し、デマンドページング方式により動作する技術が知られている。
【００１２】
具体的に、仮想記憶管理部５１２は、アクセラレータメモリ５０８が必要とするページが確保できなくなると、アクセラレータメモリ５０８に確保されているページ群から、いくつかのページを選択する。次に、仮想記憶管理部５１２は、選択したページを、スワップ領域に退避させる。そして、ハードウェアアクセラレータ５０６がアクセスしようとするページが当該スワップ領域に退避されている場合、仮想記憶管理部５１２は、係るスワップ領域に退避されたページを、アクセラレータメモリ５０８に読み込むよう制御する。
【００１３】
次に、図１１を参照して、情報処理システム５の動作について説明する。図１１は、情報処理システム５における処理の流れを示すフローチャートである。図１１に示すように、まず情報処理システム５にタスクが投入され、ホストプロセッサ５０２は、処理を実行する（ステップＳ５０２）。次いで、ホストプロセッサ５０２は、ハードウェアアクセラレータ５０６において処理するデータを、主メモリ５０４からアクセラレータメモリ５０８に転送する（ステップＳ５０４）。ハードウェアアクセラレータ５０６は、ホストプロセッサ５０２から転送されたデータを用いて処理を実行する（ステップＳ５０６）。その後、ホストプロセッサ５０２は、ハードウェアアクセラレータ５０６が処理した結果を、アクセラレータメモリ５０８から主メモリ５０４に転送する（ステップＳ５０８）。次に、ホストプロセッサ５０２は、次のタスクを処理する（ステップＳ５０２、あるいはステップＳ５０４）。情報処理システム５は、ステップＳ５０２乃至ステップＳ５０８における処理を何回か繰り返すことにより、ホストプロセッサ５０２におけるタスクの処理を完了する。
【００１４】
例えば、特許文献１は、汎用プロセッサとハードウェアアクセラレータとを有する装置を開示する。即ち、特許文献１は、主メモリとハードディスクドライブとの間のページングイン及びページングアウト等のメモリオペレーションを実行するメモリシステムについて開示する。
【００１５】
特許文献２は、スワップ処理において、あるタスクを実行可能な状態になった直後のプログラムの動作特性を踏まえて、スワップアウト抑制対象のページを選択する技術を開示する。その際、特許文献２に開示された技術では、ページ置換アルゴリズムによりスワップアウト処理を抑制するページの優先順位付けを行う。
【００１６】
特許文献３は、複数の情報処理装置が同一の論理ボリュームに記録されたデータを共有するシステムを開示する。即ち、特許文献３は、係る論理ボリュームが複数の区域により構成されている場合、係る論理ボリュームの複数の区域を排他的に制御する技術を記載する。具体的に、特許文献３に開示された技術は、複数の区域から構成される当該論理ボリュームにおいて、未使用の区域がある場合、その未使用の区域を、他の情報処理装置からアクセスできるように開放する技術である。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００９−１４０４７９号公報
【特許文献２】特開２０１０−００９２６５号公報
【特許文献３】特開平１０−１６１９１９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、特許文献１に記載された技術は、主メモリとハードディスクドライブとの間において、ページングイン及びページングアウト等の処理を実行する。このため、特許文献１に記載された技術は、係るページングイン及びページングアウトの実行時に、システムの性能が劣化する。
【００１９】
特許文献２に記載された技術は、プログラムの動作特性を踏まえて、ページ置換アルゴリズムによりスワップアウト処理を抑制するページの選択を行う。即ち、特許文献２に記載された技術は、最近使われたページのスワップアウトを抑制するような選択をすることになる。このため、特許文献２に記載された技術は、最近使われたページであっても、その後、いつ使うかわからないページのスワップアウトを抑制するおそれがある。
【００２０】
特許文献３に記載された技術は、論理ボリュームの未使用の区域を開放するため、開放する区域を選択する際に、その区域のデータが今後使われないのか否かが考慮されていない。
【００２１】
本発明は、上記課題を鑑みなされた。即ち、本発明は、ホストプロセッサとハードウェアアクセラレータとを有する情報処理装置において、処理実行中のデータ転送に伴う性能劣化を防ぐことを１つの目的とする。
【課題を解決するための手段】
【００２２】
上記目的を達成するために、本発明に係る情報処理装置は、
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を管理する仮想記憶管理手段と、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理手段を制御するデータ転送制御手段と、を備える。
【００２３】
上記目的を達成するために、本発明に係る情報処理方法は、
コンピュータが、
ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を仮想記憶管理手段によって管理し、
前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理手段の動作を制御する。
【００２４】
上記目的を達成するために、本発明に係るコンピュータプログラムは、ホストプロセッサに接続された第１メモリ領域とハードウェアアクセラレータに接続された第２メモリ領域とを用いて行われる仮想記憶処理を管理する仮想記憶管理処理と、前記第１メモリ領域と前記第２メモリ領域との間において転送されるデータに基づいて、前記第２メモリ領域におけるデータ退避の設定及び該設定の解除を行うよう前記仮想記憶管理処理を制御するデータ転送制御処理と、をコンピュータに実行させる。
【００２５】
尚、係る同目的は、当該コンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体によっても達成することができる。
【発明の効果】
【００２６】
本発明の情報処理装置によれば、ホストプロセッサとハードウェアアクセラレータとを有する情報処理装置において、処理実行中のデータ転送に伴う性能劣化を防ぐことができる。
【図面の簡単な説明】
【００２７】
【図１】本実施形態に係る情報処理装置１を実現可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。
【図２】第１の実施形態に係る情報処理装置１の機能構成を例示するブロック図である。
【図３】第１の実施形態に係る情報処理装置１における処理の流れを示すフローチャートである。
【図４】第２の実施形態に係る情報処理装置２の機能構成を例示するブロック図である。
【図５】第２の実施形態に係る情報処理装置２における処理の流れを示すフローチャートである。
【図６】第３の実施形態に係る情報処理装置３の機能構成を例示するブロック図である。
【図７】第３の実施形態に係る情報処理装置３における処理の流れを示すフローチャートである。
【図８】第４の実施形態に係る情報処理装置４の機能構成を例示するブロック図である。
【図９】第４の実施形態に係る情報処理装置４における処理の流れを示すフローチャートである。
【図１０】本発明に関連する仮想記憶管理方式を用いた情報処理システム５の機能構成を例示するブロック図である。
【図１１】本発明に関連する仮想記憶管理方式を用いた情報処理システム５における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２８】
本発明の実施形態について、図面を参照して詳細に説明する。
【００２９】
＜第１の実施形態＞
はじめに、本発明の第１の実施形態に係る情報処理装置１について説明する。
【００３０】
図１は、本発明の第１の実施形態に係る情報処理装置１を実現可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。情報処理装置１は、図１に例示する構成を有する。即ち、
・ＣＰＵ（Central Processing Unit）１０、
・メモリ１２、
・ＨＤＤ（ハードディスクドライブ）１４、
・図示しないネットワークを介して通信を行う通信ＩＦ（インタフェース）１６、
・入力装置１８、
・出力装置２０、
・ＣＤ（コンパクトディスク）等のコンピュータ読み取り可能な記憶媒体２４に記憶された情報を読み取り可能なリーダーライター２２。
【００３１】
そして、上記の各構成要素は、バス２６を通して互いに接続されており、互いにデータの入出力を行うことができる。
【００３２】
本実施形態に係る情報処理装置１は、メモリ１２又はＨＤＤ１４に記憶されているコンピュータプログラム（以下、「プログラム」と称する）をＣＰＵ１０が実行する。または、情報処理装置１は、ＣＰＵ１０が記憶媒体２４に記憶されているプログラムを実行する。ＣＰＵ１０において実行するプログラムは、通信ＩＦ１６、入力装置１８あるいはリーダーライター２２を介して外部から取得してもよい。また、表示が必要な場合、ＣＰＵ１０は出力装置２０に出力結果を表示する。図１に示す情報処理装置１のハードウェア構成例は、後述する実施形態にも適用可能である。
【００３３】
図２は、本発明の第１の実施形態に係る情報処理装置１の機能構成を例示するブロック図である。例えば、後述する本発明の実施形態に係る情報処理装置は、サーバ等である。図２に示すように、第１の実施形態に係る情報処理装置１は、例えば以下の構成を有する。即ち、
・ホストプロセッサ１０２、
・ホストプロセッサ１０２がアクセスする主メモリ１０４（第１のメモリ領域）、
・ハードウェアアクセラレータ１０６、
・ハードウェアアクセラレータ１０６がアクセスするアクセラレータメモリ１０８（第２のメモリ領域）、
・データ転送制御部１１０。
【００３４】
例えば、ハードウェアアクセラレータ１０６には、メニコアアクセラレータやグラフィックアクセラレータ等が含まれる。
【００３５】
ハードウェアアクセラレータ１０６は、仮想記憶管理部１１２を有する。また、ホストプロセッサ１０２及びハードウェアアクセラレータ１０６は、以下に説明する仮想記憶管理部１１２とは異なる不図示の仮想記憶管理機能を有することとする。但し、係る不図示の仮想記憶管理機能自体現在では、一般的に知られた技術を採用することができるので、本実施形態における説明は省略する。
【００３６】
本実施形態においては、ハードウェアアクセラレータ１０６が、仮想記憶管理部１１２を有する構成について説明するが、仮想記憶管理部１１２は、ハードウェアアクセラレータ１０６が有していなくてもよい。例えば、ホストプロセッサ１０２あるいは外部装置等は、仮想記憶管理部１１２を有していてもよい。
【００３７】
さらに、情報処理装置１は、記憶装置（ハードディスクドライブ等）１１４にデータを読み書き可能である。例えば、記憶装置１１４は、情報処理装置１が備えていてもよいし、外部装置として設置されていてもよい。
【００３８】
ホストプロセッサ１０２は、プログラムに従って処理Ａを実行する。処理Ａは、ホストプロセッサ１０２が実行すべき処理全体を表わし、後述するハードウェアアクセラレータ１０６が実行する処理Ｂ等を含む複数の処理からなる。ホストプロセッサ１０２は、処理Ｂ等の複数の処理を含む一連の処理Ａを完了した場合、動作を終了する。また、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６に関する制御を行う。具体的には、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６における処理に必要なデータを、主メモリ１０４からアクセラレータメモリ１０８に転送する。
【００３９】
ハードウェアアクセラレータ１０６は、主メモリ１０４からアクセラレータメモリ１０８に転送されたデータを用いて処理Ｂを実行する。ハードウェアアクセラレータ１０６が実行する処理Ｂは、ホストプロセッサ１０２が実行する処理Ａに含まれる複数の処理のうち、ハードウェアアクセラレータ１０６に振り分けられた処理である。処理Ｂの振り分け手法については、現在では一般的な技術を採用できるので、本実施例における説明を省略する。係る処理Ｂが完了した場合、ハードウェアアクセラレータ１０６は、処理結果をアクセラレータメモリ１０８から主メモリ１０４に転送する。
【００４０】
仮想記憶管理部１１２は、アクセラレータメモリ１０８のメモリ領域を管理する。仮想記憶管理部１１２は、アクセラレータメモリ１０８のメモリ領域において、必要とするメモリ領域が確保できなくなると、アクセラレータメモリ１０８に確保されているメモリ領域の一部を選択する。そして、仮想記憶管理部１１２は、選択した当該一部のメモリ領域に記載されているデータを、記憶装置１１４におけるスワップ領域に退避させる（スワップアウト）。
【００４１】
データ転送制御部１１０は、仮想記憶管理部１１２と連携することにより、主メモリ１０４とアクセラレータメモリ１０８との間におけるデータの転送を制御する。具体的には、データ転送制御部１１０は、仮想記憶管理部１１２と連携し、アクセラレータメモリ１０８におけるメモリ領域に格納されているデータを退避するよう設定を行う。例えば、データ転送制御部１１０は、アクセラレータメモリ１０８の特定のメモリ領域におけるデータ退避の対象外設定（スワップ対象外設定）及びその設定の解除を行う。スワップ対象外設定とは、当該メモリ領域をデータ退避のための対象領域から除外する手続である。係るスワップ対象外設定は、アクセラレータメモリ１０８における特定のメモリ領域がスワップされる頻度を減らす設定であればよい。例えば、データ転送制御部１１０は、アクセラレータメモリ１０８における特定のメモリ領域が完全にスワップされないよう設定してもよいし、スワップされる頻度を少なくする（小さくする）よう設定してもよい。
【００４２】
次に、情報処理装置１における処理の流れを説明する。
【００４３】
図３は、本発明の第１の実施形態に係る情報処理装置１における処理の流れを示すフローチャートである。
【００４４】
ステップＳ１０２において、ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。
【００４５】
ステップＳ１０４において、データ転送制御部１１０は、仮想記憶管理部１１２と連携し、アクセラレータメモリ１０８のメモリ領域をスワップの対象外として設定する。具体的に、データ転送制御部１１０は、仮想記憶管理部１１２と連携する。そして、データ転送制御部１１０は、特定のメモリ領域に対して、記憶装置１１４におけるスワップ領域に退避されているデータを、記憶装置１１４におけるスワップ領域からアクセラレータメモリ１０８に全て読み込む処理を実施する。ここで、当該特定のメモリ領域とは、ハードウェアアクセラレータ１０６が処理Ｂに用いるアクセラレータメモリ１０８が有するメモリ領域である。そして、ハードウェアアクセラレータ１０６は、処理Ｂに用いるアクセラレータメモリ１０８のメモリ領域をスワップ対象外に設定する。
【００４６】
ステップＳ１０６において、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６が処理Ｂに用いるデータを、主メモリ１０４からアクセラレータメモリ１０８に転送する。
【００４７】
ステップＳ１０８において、ハードウェアアクセラレータ１０６は、当該プログラムに記述された一連の処理（処理Ａ）のうち、指定された一部の処理である処理Ｂを実行する。具体的には、ハードウェアアクセラレータ１０６は、ステップＳ１０６において、ホストプロセッサ１０２から転送されたデータを用いて処理Ｂを実行する。
【００４８】
ステップＳ１１０において、例えばホストプロセッサ１０２は、ハードウェアアクセラレータ１０６における処理結果を、アクセラレータメモリ１０８から主メモリ１０４に転送する。
【００４９】
ステップＳ１１２において、データ転送制御部１１０は、仮想記憶管理部１１２と連携し、ステップＳ１０４において設定されたアクセラレータメモリ１０８におけるスワップ対象外の設定を解除する。
【００５０】
尚、図示していないが、ステップＳ１０２からステップＳ１１２の処理は、繰り返し行われる。処理Ａに含まれる複数の処理が完了した場合に、ホストプロセッサ１０２は、処理Ａの処理結果を出力することにより、情報処理装置１の動作は終了する。後述する実施形態に係る情報処理装置も、処理Ａの処理結果が出力された場合に、動作を終了する。
【００５１】
なお、上述した処理の流れの変形例として、ステップＳ１０４とステップＳ１０６の実行順序は、逆であってもよい。即ち、主メモリ１０４からアクセラレータメモリ１０８にデータを転送した後に、アクセラレータメモリ１０８のメモリ領域をデータ退避の対象外として設定してもよい。
【００５２】
また、ステップＳ１１０とステップＳ１１２の実行順序は、逆であってもよい。即ち、アクセラレータメモリ１１２のメモリ領域に設定されたデータ転送の対象外とする設定を解除した後に、アクセラレータメモリ１０８から主メモリ１０４に処理結果を転送してもよい。
【００５３】
以上説明したように、本発明の第１の実施形態に係る情報処理装置１は、ホストプロセッサとハードウェアアクセラレータとを有する情報処理装置において、処理実行中のデータ転送に伴う性能劣化を防ぐことができる。その理由は、ハードウェアアクセラレータ１０６が処理Ｂを実行しているフェーズ（ステップＳ１０８）においては、処理Ｂを実行する際に用いているアクセラレータメモリ１０８のメモリ領域に記載されているデータがスワップアウトされない、あるいはされにくくなっているためである。
【００５４】
従って、本実施形態によれば、ハードウェアアクセラレータ１０６が処理Ｂを実行しているフェーズ（ステップＳ１０８）において、ページミスが発生しない、あるいはページミスの頻度が低くなる。
【００５５】
＜第２の実施形態＞
次に、上述した本発明の第１の実施形態に係る情報処理装置１を基本とする第２の実施形態に係る情報処理装置２について説明する。
【００５６】
図４は、本発明の第２の実施形態に係る情報処理装置２の機能構成を例示するブロック図である。図４に示すように、第２の実施形態に係る情報処理装置２は、データ転送制御部１１０がデータ転送制御部２１０に置き換えられた構成が、第１の実施形態に係る情報処理装置１と異なる。それ以外については、第１の実施形態に係る情報処理装置１と同様のため、同一の図面番号を付与すると共に、重複する説明は省略する。
【００５７】
ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始し、データを主メモリ１０４からアクセラレータメモリ１０８に転送する。
【００５８】
ハードウェアアクセラレータ１０６は、アクセラレータメモリ１０８に転送されたデータを用いて処理Ｂを実行し、処理結果をアクセラレータメモリ１０８から主メモリ１０４に転送する。
【００５９】
仮想記憶管理部１１２は、アクセラレータメモリ１０８のメモリ領域を管理し、アクセラレータメモリ１０８のデータを、記憶装置１１４におけるスワップ領域に退避（スワップアウト）させる。
【００６０】
データ転送制御部２１０は、仮想記憶管理部１１２と連携することにより、主メモリ１０４とアクセラレータメモリ１０８との間におけるデータの転送を制御する。具体的には、データ転送制御部２１０は、仮想記憶管理部１１２と連携し、アクセラレータメモリ１０８における特定のメモリ領域をスワップアウトする。例えば、アクセラレータメモリ１０８における特定のメモリ領域は、以降のハードウェアアクセラレータ１０６が実行する処理Ｂにおいて、再利用されないメモリ領域でもよい。
【００６１】
例えば、データ転送制御部２１０は、アクセラレータメモリ１０８から主メモリ１０４に転送されたデータ（ハードウェアアクセラレータ１０６において処理されたデータ）のメモリ領域をスワップアウトするよう決定してもよい。また、スワップアウトされる特定のメモリ領域は、主メモリ１０４からアクセラレータメモリ１０８に転送されたデータのメモリ領域としてもよい。また、スワップアウトされる特定のメモリ領域は、ユーザによって記述されたプログラムによって指定されたメモリ領域としてもよい。また、スワップアウトされる特定のメモリ領域は、上記説明した特定手法の組み合わせにより指定してもよい。
【００６２】
次に、情報処理装置２における処理の流れを説明する。
【００６３】
図５は、本発明の第２の実施形態に係る情報処理装置２における処理の流れを示すフローチャートである。
【００６４】
ステップＳ１０２において、ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。ステップＳ１０６において、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６が処理Ｂに用いるデータを、主メモリ１０４からアクセラレータメモリ１０８に転送する。ステップＳ１０８において、ハードウェアアクセラレータ１０６は、処理Ｂを実行する。ステップＳ１１０において、例えばホストプロセッサ１０２は、ハードウェアアクセラレータ１０６における処理結果を、アクセラレータメモリ１０８から主メモリ１０４に転送する。
【００６５】
ステップＳ２２０において、データ転送制御部２１０が、仮想記憶管理部１１２と連携し、アクセラレータメモリ１１２における特定のメモリ領域をスワップアウトさせる。特定のメモリ領域の決定手法は、上記説明した通りである。
【００６６】
以上説明したように、本発明の第２の実施形態に係る情報処理装置２は、ハードウェアアクセラレータ１０６が処理Ｂを実行しているフェーズ（ステップＳ１０８）において、スワップ発生の頻度を減らすことにより、性能劣化を抑えることができる。その理由は、積極的にデータの保持が不要なメモリ領域を、仮想記憶管理部１１２が開放するからである。
【００６７】
＜第３の実施形態＞
次に、本発明の第３の実施形態に係る情報処理装置３について説明する。
【００６８】
図６は、本発明の第３の実施形態に係る情報処理装置３の機能構成を例示するブロック図である。図６に示すように、第３の実施形態に係る情報処理装置３は、データ転送制御部１１０がデータ転送制御部３１０に置き換えられ、ホストプロセッサ１０２がデータ複製部３１６を備える構成が、第１の実施形態及び第２の実施形態に係る情報処理装置１と異なる。それ以外については、第１の実施形態及び第２の実施形態に係る情報処理装置１及び情報処理装置２と同様のため、同一の図面番号を付与すると共に、重複する説明は省略する。
【００６９】
ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始し、データを主メモリ１０４からアクセラレータメモリ１０８に転送する。
【００７０】
ハードウェアアクセラレータ１０６は、アクセラレータメモリ１０８に転送されたデータを用いて処理Ｂを実行し、処理結果をアクセラレータメモリ１０８からデータ複製部３１６に転送する。
【００７１】
仮想記憶管理部１１２は、データ複製部３１６に転送された処理結果のメモリ領域をスワップアウト済みと設定する。
【００７２】
データ転送制御部３１０は、仮想記憶管理部１１２と連携することにより、データの転送を制御する。具体的には、データ転送制御部３１０は、ハードウェアアクセラレータ１０６において処理された結果を、データ複製部３１６に転送するよう制御する。
【００７３】
データ複製部３１６は、アクセラレータメモリ１０８から転送された処理結果を主メモリの指定されたメモリ領域に書き込む。さらに、データ複製部３１６は、アクセラレータメモリ１０８から転送された処理結果を複製し、複製した処理結果を記憶装置１１４におけるスワップ領域に退避する。
【００７４】
次に、情報処理装置３における処理の流れを説明する。
【００７５】
図７は、本発明の第３の実施形態に係る情報処理装置３における処理の流れを示すフローチャートである。
【００７６】
ステップＳ１０２において、ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。ステップＳ１０６において、ホストプロセッサ１０２は、ハードウェアアクセラレータ１０６が処理Ｂに用いるデータを、主メモリ１０４からアクセラレータメモリ１０８に転送する。ステップＳ１０８において、ハードウェアアクセラレータ１０６は、処理Ｂを実行する。
【００７７】
ステップＳ３３２において、データ転送制御部３１０は、ハードウェアアクセラレータ１０６において処理された結果を、アクセラレータメモリ１０８からデータ複製部３１６に転送する。
【００７８】
ステップＳ３３４において、仮想記憶管理部１１２は、アクセラレータメモリ１０８において転送されたメモリ領域をスワップアウト済みに設定する。
【００７９】
ステップＳ３３６において、データ複製部３１６は、アクセラレータメモリ１０８から転送された処理結果を、主メモリ１０４の特定のメモリ領域に書き込む。
【００８０】
ステップＳ３３８において、データ複製部３１６は、アクセラレータメモリ１０８から転送された処理結果を複製し、複製した処理結果を記憶装置１１４におけるスワップ領域に退避する。
【００８１】
以上説明したように、本発明の第３の実施形態に係る情報処理装置３は、スワップアウトによる性能劣化を回避することができる。その理由は、ハードウェアアクセラレータ１０６とホストプロセッサ１０２との間におけるデータ転送を増やすことなく、データ転送にあわせてスワップアウトを実行することができるからである。
【００８２】
＜第４の実施形態＞
次に、本発明の第４の実施形態に係る情報処理装置４について説明する。
【００８３】
図８は、本発明の第４の実施形態に係る情報処理装置４の機能構成を例示するブロック図である。図８に示すように、第４の実施形態に係る情報処理装置４は、データ転送制御部１１０がデータ転送制御部４１０に置き換えられた構成が、第１の実施形態に係る情報処理装置１と異なる。それ以外については、第１の実施形態に係る情報処理装置１と同様のため、同一の図面番号を付与すると共に、重複する説明は省略する。
【００８４】
ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。また、ホストプロセッサ１０２は、指定された領域を主メモリ１０４から、アクセラレータメモリ１０８にデータを転送する。
【００８５】
データ転送制御部４１０は、仮想記憶管理部１１２と連携することにより、主メモリ１０４とアクセラレータメモリ１０８との間におけるデータの転送を制御する。具体的には、データ転送制御部４１０は、ハードウェアアクセラレータ１０６が実行する処理Ｂに用いるデータを確保するよう仮想記憶管理部１１２を制御する。
【００８６】
仮想記憶管理部１１２は、アクセラレータメモリ１０８においてスワップアウトされたデータに対して、記憶装置１１４におけるスワップ領域からデータの読み込みを行わず、物理領域の割り当てを行うことにより、スワップイン済みと設定する。
【００８７】
ハードウェアアクセラレータ１０６は、仮想記憶管理部１１２によりスワップイン済みと設定されたデータを用いて処理Ｂを実行し、処理結果をアクセラレータメモリ１０８から主メモリ１０４に転送する。
【００８８】
次に、情報処理装置４における処理の流れを説明する。
【００８９】
図９は、本発明の第４の実施形態に係る情報処理装置４における処理の流れを示すフローチャートである。
【００９０】
ステップＳ１０２において、ホストプロセッサ１０２は、当該プログラムに従って処理Ａの実行を開始する。
【００９１】
ステップＳ４４２において、仮想記憶管理部１１２は、仮想記憶上において物理領域を割り当て、ハードウェアアクセラレータ１０６が実行する処理Ｂに用いるデータをスワップイン済みに設定する。具体的には、仮想記憶管理部１１２は、アクセラレータメモリ１０８からスワップアウトされた仮想記憶上のデータに対して物理領域を割り当てる。
【００９２】
ステップＳ４４４において、例えばホストプロセッサ１０２は、主メモリ１０４からアクセラレータメモリ１０８に指定された領域のデータを転送する。
【００９３】
ステップＳ１０８において、ハードウェアアクセラレータ１０６は、処理Ｂを実行する。ステップＳ１１０において、例えばホストプロセッサ１０２は、ハードウェアアクセラレータ１０６における処理結果を、アクセラレータメモリ１０８から主メモリ１０４に転送する。
【００９４】
以上説明したように、本発明の第４の実施形態に係る情報処理装置４は、スワップインによる性能劣化を回避することができる。その理由は、ハードウェアアクセラレータ１０６とホストプロセッサ１０２との間におけるデータ転送を増やすことなく、データ転送にあわせてスワップインを実行することができるからである。
【００９５】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【００９６】
この出願は、２０１３年３月１日に出願された日本出願特願２０１３−０４０９８２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００９７】
１，２，３，４    情報処理装置
５    情報処理システム
１０    ＣＰＵ
１２    メモリ
１４    ＨＤＤ
１６    通信ＩＦ
１８    入力装置
２０    出力装置
２２    リーダーライター
２４    記憶媒体
２６    バス
１０２，５０２    ホストプロセッサ
１０４，５０４    主メモリ
１０６、５０６    ハードウェアアクセラレータ
１０８，５０８    アクセラレータメモリ
１１０，２１０，３１０，４１０    データ転送制御部
１１２，５１２    仮想記憶管理部
１１４，５１４    記憶装置（スワップ領域）
３１６    データ複製部
【国際調査報告】
2014132619.tif 000014
2014132619.tif 000015