(57)【要約】【課題】システムの性能を向上させる情報処理装置、情報処理プログラム及び情報処理方法を提供する。【解決手段】情報処理装置１は、ＤＲＡＭ１２１と、不揮発メモリ１２２及び不揮発ストレージ１３を有する。処理実行部１１２は、書込命令を受けて、ＤＲＡＭ１２１に書込データを書き込み且つ不揮発ストレージ１３に書込データの書き込みのログを格納する第１書込処理又は不揮発メモリ１２２に書込データを書き込む第２書込処理を実行する。ページ管理部１１４は、ＤＲＡＭ１２１又は不揮発メモリ１２２に格納された所定データの所定期間における書込回数及び読出回数、ＤＲＡＭ１２１及び不揮発メモリ１２２の処理速度、並びに、処理実行部１１２による不揮発ストレージ１３へのログの格納にかかる時間を基に、ＤＲＡＭ１２１と不揮発メモリ１２２との間で所定データを移動する。【選択図】図２
2019045974.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶部と、
前記第１記憶部より処理速度が遅い第２記憶部と、
前記第２記憶部より処理速度が遅い第３記憶部と、
書込命令を受けて、前記第１記憶部に書込データを書き込み且つ前記第３記憶部に前記書込データの書込履歴を格納する第１書込処理又は前記第２記憶部に前記書込データを書き込む第２書込処理を実行する実行部と、
前記第１記憶部又は前記第２記憶部に格納された所定データの所定期間における書込回数及び読出回数、前記第１記憶部及び前記第２記憶部の処理速度、並びに、前記実行部による前記第３記憶部への前記書込履歴の格納にかかる時間を基に、前記第１記憶部と前記第２記憶部との間で前記所定データを移動するデータ管理部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記データ管理部は、前記所定データを前記第１記憶部に格納した場合の前記所定期間における書き込み及び読み出しにかかる時間、前記所定データを前記第２記憶部に格納した場合の前記所定期間における書き込み及び読み出しにかかる時間、及び、前記実行部により前記所定期間において前記所定データに対して前記第２書込処理が行われた場合の前記第３記憶部への前記書込履歴の格納にかかる時間を基に前記所定データを移動するか否かを判定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記データ管理部は、前記第１記憶部又は前記第２記憶部のうち、前記所定データを格納した場合に前記所定期間内における前記所定データの読み出し及び書き込みにかかる時間の合計が短くなる方に前記所定データを移動させることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
第１記憶装置、前記第１記憶装置より処理速度が遅い第２記憶装置、及び、前記第２記憶装置より処理速度が遅い第３記憶装置を有する情報処理装置を動作させる情報処理プログラムであって、
書込命令を受けて、前記第１記憶装置に書込データを書き込み且つ前記第３記憶装置に前記書込データの書込履歴を格納する第１書込処理又は前記第２記憶装置に前記書込データを書き込む第２書込処理を実行し、
前記第１記憶装置又は前記第２記憶装置に格納された所定データの所定期間における書込回数及び読出回数、前記第１記憶装置及び前記第２記憶装置の処理速度、並びに、前記第３記憶装置への前記書込履歴の格納にかかる時間を基に、前記第１記憶装置と前記第２記憶装置との間で前記所定データを移動する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項５】
第１記憶装置、前記第１記憶装置より処理速度が遅い第２記憶装置、及び、前記第２記憶装置より処理速度が遅い第３記憶装置を有する情報処理装置における情報処理方法であって、
書込命令を受けて、前記第１記憶装置に書込データを書き込み且つ前記第３記憶装置に前記書込データの書込履歴を格納する第１書込処理又は前記第２記憶装置に前記書込データを書き込む第２書込処理を実行し、
前記第１記憶装置又は前記第２記憶装置に格納された所定データの所定期間における書込回数及び読出回数、前記第１記憶装置及び前記第２記憶装置の処理速度、並びに、前記第３記憶装置への前記書込履歴の格納にかかる時間を基に、前記第１記憶装置と前記第２記憶装置との間で前記所定データを移動する
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理プログラム及び情報処理方法に関する。
【背景技術】
【０００２】
近年、価格面でも性能面でも揮発メモリに匹敵する不揮発メモリが開発されたことにより、不揮発メモリの主記憶装置への利用が提案されている。不揮発メモリは、主記憶装置として一般的に使用されているＤＲＡＭ（Dynamic  Random  Access  Memory）とは異なり電源遮断時にデータが消失しない。主記憶装置として利用される不揮発メモリには、例えば、フェーズチェンジメモリなどがある。
【０００３】
主記憶装置として利用される不揮発メモリは、ハードディスクなどの補助記憶装置に比べて読み出し速度及び書き込み速度が早い。そのため、不揮発メモリを主記憶装置として用いた場合、永続データに高速にアクセスすることができる。以下では、ハードディスクやＳＳＤ（Solid  State  Drive）などの補助記憶装置を「不揮発ストレージ」という。
【０００４】
これに対して、不揮発メモリは、読み出し速度はＤＲＡＭとほぼ同じであるが、書き込み速度はＤＲＡＭに劣る。そのため、主記憶装置としてＤＲＡＭと不揮発メモリとで構成し、一次保存データはＤＲＡＭに格納してより高速にアクセスし、永続データは不揮発メモリに格納して不揮発ストレージに比べて高速なアクセスを行うことが考えられる。この場合、不揮発ストレージは、大量のデータの永続保存に用いられる。
【０００５】
このように、ＤＲＡＭと不揮発メモリとは処理速度が異なるため、使用目的や使用状態に応じてＤＲＡＭ又は不揮発メモリのどちらにデータを配置するかを決定することが好ましい。ＤＲＡＭ又は不揮発メモリにデータを適切に配置することで、情報処理措置の性能を向上させることができる。
【０００６】
この点、速度の異なる記憶装置を有するシステムにおける従来技術として、書き込み頻度に応じて、抵抗変化型メモリ又はフラッシュメモリのどちらにデータを書き込むかを決定する従来技術がある。また、書き込み頻度に応じて、揮発メモリ又は不揮発メモリのどちらにデータを書き込むかを決定する従来技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−０５９８２０号公報
【特許文献２】特許第６１１３３７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、データベースのようなデータの永続性を保証する処理の場合、ＤＲＡＭ上へデータの書き込みを行うたびにデータ変更の履歴であるログの不揮発ストレージへの記録が発生する。不揮発ストレージにログを記録しておくことで、電源遮断時のデータ復旧が可能となる。ただし、ログを記録する処理によってＣＰＵ（Central  Processing  Unit）サイクルを消費することになり、性能オーバヘッドが発生する。特に、書き込み頻度の高いデータをＤＲＡＭへ配置してしまうと、ログ記録によるオーバヘッドが増大しシステムの性能が低下してしまう。
【０００９】
また、書き込み頻度に応じてデータの配置先を決定する従来技術を用いても、単に書き込み頻度が高いデータがより高速な記憶装置に配置されることになり、ログ記録によるオーバヘッドは増大してしまい、システムの性能を向上させることは困難である。
【００１０】
開示の技術は、上記に鑑みてなされたものであって、システムの性能を向上させる情報処理装置、情報処理プログラム及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示する情報処理装置、情報処理プログラム及び情報処理方法の一つの態様において、情報処理装置は、第１記憶部、前記第１記憶部より処理速度が遅い第２記憶部及び前記第２記憶部より処理速度が遅い第３記憶部を有する。さらに、実行部は、書込命令を受けて、前記第１記憶部に書込データを書き込み且つ前記第３記憶部に前記書込データの書込履歴を格納する第１書込処理又は前記第２記憶部に前記書込データを書き込む第２書込処理を実行する。データ管理部は、前記第１記憶部又は前記第２記憶部に格納された所定データの所定期間における書込回数及び読出回数、前記第１記憶部及び前記第２記憶部の処理速度、並びに、前記実行部による前記第３記憶部への前記書込履歴の格納にかかる時間を基に、前記第１記憶部と前記第２記憶部との間で前記所定データを移動する。
【発明の効果】
【００１２】
１つの側面では、本発明は、システムの性能を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例に係る情報処理装置のハードウェア構成図である。
【図２】図２は、実施例に係る情報処理装置のブロック図である。
【図３】図３は、ページテーブルエントリの一例を表す図である。
【図４】図４は、ページテーブルの登録処理のフローチャートである。
【図５】図５は、ページ移動処理のフローチャートである。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する情報処理装置、情報処理プログラム及び情報処理方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理プログラム及び情報処理方法が限定されるものではない。
【実施例】
【００１５】
図１は、実施例に係る情報処理装置のハードウェア構成図である。本実施例に係る情報処理装置１は、図１に示すように、ＣＰＵ１１、主記憶部１２及び不揮発ストレージ１３を有する。
【００１６】
ＣＰＵ１１は、主記憶部１２及び不揮発ストレージ１３とバスで接続される。ＣＰＵ１１は、ＯＳ（Operating  System）及び各種アプリケーションを動作させるプログラムを不揮発ストレージ１３から読み出して実行する。ＣＰＵ１１は、アプリケーションの実行の際にデータの読み出し及び書き込みのために主記憶部１２へアクセスし、データの主記憶部１２からの読み出し及びデータの主記憶部１２への書き込みを行う。
【００１７】
ここで、ソフトウェアを動作主体として説明すると、ＣＰＵ１１によりＯＳ上で動作させられたアプリケーションは、一時的に記憶装置へ格納する一時データをＤＲＡＭ１２１へ格納する。また、ＣＰＵ１１によりＯＳ上で動作させられたアプリケーションは、電源供給が停止しても保持し続けることが要求される永続データを不揮発メモリ１２２又は不揮発ストレージ１３へ格納する。
【００１８】
以下の説明では、ＣＰＵ１１が、データの永続性を保証するアプリケーションを動作させる場合で説明する。データの永続性を保証するアプリケーションとしては、例えば、データベースなどがある。
【００１９】
データベースはデータの永続性の保証が要求されるため、ＣＰＵ１１は、データベースのプログラムを実行した際に、ＤＲＡＭ１２１にデータを書き込む場合には、データの書込履歴であるログを不揮発ストレージ１３に記録する。ここで、ログとは、例えば、データを書き込み更新した場合の更新後のデータを圧縮したデータや更新前のデータと更新後のデータの差分などの更新内容を示す情報をＤＲＡＭ１２１に書き込んだデータに対応させて記録した情報である。
【００２０】
すなわち、ＣＰＵ１１は、ＤＲＡＭ１２１に対してデータベース用のデータを格納する際には、ログを記録するためのログ記録オーバヘッドを発生させる。ログ記録オーバヘッドには、差分の計算などといったログの作成にかかる時間及び作成したログの不揮発ストレージへの格納にかかる時間が含まれる。ＣＰＵ１１は、ログ記録オーバヘッドを小さくするために、一定の数のデータの書き込みが終了した段階で、まとめて各データのログを不揮発ストレージ１３に書き込んでもよい。
【００２１】
これに対して、不揮発メモリ１２２はデータの永続性が保証されるため、ＣＰＵ１１は、データベースのプログラムを実行した際に、不揮発メモリ１２２にデータを書き込む場合には、ログの記録を省略することができる。
【００２２】
さらに、ＣＰＵ１１は、データの読み出し及び書き込みの時間が短くなるか否を基に、周期的にＤＲＡＭ１２１及び不揮発メモリ１２２に格納した各データを移動するか否かを、各データを移動することで読み出し及び書き込みに費やす時間が短くなるか否かにより判定する。そして、ＣＰＵ１１は、移動を決定したデータの移動をＤＲＡＭ１２１と不揮発メモリ１２２との間で移動する。データの移動については後で詳細に説明する。
【００２３】
主記憶部１２は、ＤＲＡＭ１２１及び不揮発メモリ１２２を有する。ＤＲＡＭ１２１は、電源供給が停止するとデータが消失する揮発メモリである。不揮発メモリ１２２は、電源供給が停止してもデータを保持する。ＤＲＡＭ１２１の処理速度は、不揮発メモリ１２２の処理速度よりも高速である。また、不揮発メモリ１２２の処理速度は、不揮発ストレージ１３の処理速度よりも高速である。また、不揮発メモリ１２２のサイズは、ＤＲＡＭ１２１のサイズに比べて十分に大きい。例えば、不揮発メモリ１２２のサイズは、ＤＲＡＭ２１のサイズの５倍程度である。ＤＲＡＭ１２１が、「第１記憶部」の一例にあたる。また、不揮発メモリ１２２が、「第２記憶部」の一例にあたる。
【００２４】
不揮発ストレージ１３は、大容量かつ不揮発の記憶装置である。不揮発ストレージ１３は、例えば、ハードディスク又はＳＳＤなどである。不揮発ストレージ１３は、ＯＳ及びアプリケーションなどの各種プログラムを記憶する。不揮発ストレージ１３は、ＤＲＡＭ１２１及び不揮発メモリ１２２に比べて処理速度が非常に遅い。この不揮発ストレージ１３が、「第３記憶部」の一例にあたる。
【００２５】
次に、図２を参照して、ＤＲＡＭ１２１と不揮発メモリ１２２との間でのデータの移動について説明する。図２は、実施例に係る情報処理装置のブロック図である。
【００２６】
情報処理装置１は、メモリ管理部１１１、処理実行部１１２、時間差算出部１１３及びページ管理部１１４を有する。メモリ管理部１１１、処理実行部１１２、時間差算出部１１３及びページ管理部１１４は、ＣＰＵ１１により実現される。具体的には、メモリ管理部１１１、処理実行部１１２、時間差算出部１１３及びページ管理部１１４を実現するプログラムを含む各種プログラムが不揮発ストレージ１３に格納される。そして、ＣＰＵ１１は、不揮発ストレージ１３から各種プログラムを読み出し実行する。これにより、ＣＰＵ１１は、メモリ管理部１１１、処理実行部１１２、時間差算出部１１３及びページ管理部１１４の機能を実現する。
【００２７】
処理実行部１１２は、データベースのアプリケーションを実行し読出命令及び書込命令を取得する。以下では、読出命令及び書込命令を区別せずに表す場合、単に「処理命令」という場合がある。処理命令は、ＯＳによるデータの管理単位であるページを単位として発行される。ページのサイズは、ＯＳに依存するが、例えば、４ｋＢである。以下では、ページ単位のデータを、単に「ページ」という場合がある。
【００２８】
処理実行部１１２は、処理命令をメモリ管理部１１１へ出力する。その後、処理実行部１１２は、処理命令が指定する仮想アドレスに対応する物理アドレスをメモリ管理部１１１から取得する。
【００２９】
そして、処理実行部１１２は、既存のデータの書込命令であれば取得した物理アドレスで示されるＤＲＡＭ１２１、不揮発メモリ１２２又は不揮発ストレージ１３に格納されたデータに対して、書込命令で指示された上書きを行ってデータを更新する。さらに、処理実行部１１２は、ＤＲＡＭ１２１にデータを書き込んだ場合、実行したデータ書き込みのログを不揮発ストレージ１３に記録する。一方、未存在のデータの書込命令であれば、処理実行部１１２は、取得した物理アドレスで指定されたＤＲＡＭ１２１の格納位置にデータを書き込む。この場合も、処理実行部１１２は、実行したデータ書き込みのログを不揮発ストレージ１３に記録する。この処理実行部１１２が、「実行部」の一例にあたる。そして、ＤＲＡＭ１２１にデータを書き込み不揮発ストレージ１３にログを書き込む処理が、「第１書込処理」の一例にあたる。また、不揮発メモリ１２２にデータを書き込む処理が、「第２書込処理」の一例にあたる。
【００３０】
また、データの読出命令の場合、処理実行部１１２は、取得した物理アドレスで示されるＤＲＡＭ１２１、不揮発メモリ１２２又は不揮発ストレージ１３に格納されたデータを読み出す。
【００３１】
メモリ管理部１１１は、ページテーブル２００を作成してＤＲＡＭ１２１に格納する。ページテーブル２００は、図３に示す１つのページの各種情報を格納するページテーブルエントリ２０１を有する。図３は、ページテーブルエントリの一例を表す図である。
【００３２】
ページテーブルエントリ２０１は、例えば、存在フラグ、物理アドレス、アクセスフラグ、ダーティフラグ、読出カウンタ及び書込カウンタを有する。存在フラグは、主記憶部１２上にページが存在するか否かを示す情報である。物理アドレスは、ページテーブルエントリ２０１に対応するページが格納された物理的な場所を示すアドレスである。アクセスフラグは、ページテーブルエントリ２０１に対応するページがアクセスされたか否かを表す情報である。ダーティフラグは、ページテーブルエントリ２０１に対応するページに対して書き込みが行われたか否かを表す情報である。読出カウンタは、ページテーブルエントリ２０１に対応するページが読み出された回数を表すカウンタである。書込カウンタは、ページテーブルエントリ２０１に対応するページに対する書き込みが行われた回数を表すカウンタである。ページテーブルエントリ２０１は、仮想アドレスをインデックスとして登録される。
【００３３】
メモリ管理部１１１は、処理命令の入力を処理実行部１１２から受ける。次に、メモリ管理部１１１は、処理命令で指定された仮想アドレスを取得する。次に、メモリ管理部１１１は、取得した仮想アドレスを用いてページテーブル２００を検索し、その仮想アドレスに対応するページテーブルエントリ２０１を特定する。そして、メモリ管理部１１１は、特定したページテーブルエントリ２０１のアクセスフラグをセットする。
【００３４】
次に、メモリ管理部１１１は、処理命令が書込命令か読出命令かを判定する。処理命令が書込命令の場合、メモリ管理部１１１は、特定したページテーブルエントリ２０１のダーティフラグをセットする。さらに、メモリ管理部１１１は、特定したページテーブルエントリ２０１の書込カウンタを１つインクリメントする。これに対して、処理命令が読出命令の場合、メモリ管理部１１１は、特定したページテーブルエントリ２０１の読出カウンタを１つインクリメントする。
【００３５】
その後、メモリ管理部１１１は、特定したページテーブルエントリ２０１から物理アドレスを取得する。そして、メモリ管理部１１１は、取得した物理アドレスを処理実行部１１２へ出力する。
【００３６】
時間差算出部１１３は、ＤＲＡＭ１２１の読出速度及び不揮発メモリ１２２の読出速度の情報を予め有する。また、時間差算出部１１３は、ＤＲＡＭ１２１のバンド幅及び不揮発メモリ１２２のバンド幅の情報を予め有する。また、時間差算出部１１３は、ＤＲＡＭ１２１及び不揮発メモリ１２２に対する１回の読み出し又は書き出しで扱うデータの単位であるキャッシュラインサイズの情報を予め有する。さらに、時間差算出部１１３は、過去に実行した不揮発ストレージ１３へのログの記録にかかった時間を保持する。そして、時間差算出部１１３は、その保持した情報を用いて統計処理を行い、ＤＲＡＭ１２１に対するデータの書き込みを１回行った際の不揮発ストレージ１３に対するログの記録にかかる時間を求める。そして、時間差算出部１１３は、求めた値をログ記録オーバヘッドの算出に用いる係数として記憶する。
【００３７】
時間差算出部１１３は、予め決められた所定期間毎にページテーブル２００の各ページテーブルエントリ２０１の書込カウンタの値及び読出カウンタの値を取得する。書込カウンタの値及び読出カウンタの値が、各ページの所定期間における読出回数及び書込回数にあたる。ここで、時間差算出部１１３は、例えば、所定期間を１秒とする。その後、時間差算出部１１３は、カウンタ値を０に戻す。ここで、本実施例では、カウンタ値を０に戻したが、時間差算出部１１３は、前回までのカウンタ値を記憶しておき、読み出したカウンタ値から減算することで所定時間における書込回数及び読出回数を取得してもよい。
【００３８】
そして、時間差算出部１１３は、次の数式１を用いて各ページに対する所定時間における書き込み及び読み出しをＤＲＡＭ１２１に対して行った場合の時間と不揮発メモリ１２２に対して行った場合の読書処理時間差を求める。
【００３９】
【数１】
2019045974.tif 000003
【００４０】
数式１における「＃ｒｅａｄｓ」は、ページの所定期間における読出回数である。また、「＃ｗｒｉｔｅｓ」は、ページの所定期間における書込回数である。ここで、ＤＲＡＭ１２１及び不揮発メモリ１２２の処理速度は、主にページの読み出し時に処理時間に対して影響を及ぼす。そこで、数式１の第１項では、ＤＲＡＭ１２１及び不揮発メモリ１２２の読み出し速度を用いた処理時間の差の算出が行われる。
【００４１】
次に、時間差算出部１１３は、次に数式２を用いてＤＲＡＭ１２１に各データが配置された場合の所定時間におけるログ記録オーバヘッドを求める。
【００４２】
【数２】
2019045974.tif 000004
【００４３】
Ｋは、ログ記録オーバヘッドの算出に用いる係数である。
【００４４】
次に、時間差算出部１１３は、各ページの読書処理時間差からログ記録オーバヘッドを減算して、各ページをＤＲＡＭ１２１に配置した場合と不揮発メモリ１２２に配置した場合との所定時間における処理命令の実行に係る全体の時間の時間差を算出する。その後、時間差算出部１１３は、算出した各ページの時間差をページ管理部１１４へ出力する。
【００４５】
ページ管理部１１４は、各ページをＤＲＡＭ１２１に配置した場合と不揮発メモリ１２２に配置した場合との所定時間における処理命令の実行に係る全体の時間の時間差の入力を時間差算出部１１３から受ける。次に、ページ管理部１１４は、時間差の降順にＤＲＡＭ１２１に配置された各ページの識別情報を並べたＤＲＡＭリストを作成する。例えば、ページ管理部１１４は、識別情報として仮想アドレスを用いることができる。また、ページ管理部１１４は、時間差の降順に不揮発メモリ１２２に配置された各ページの識別情報を並べた不揮発メモリリストを作成する。
【００４６】
以下では、ＤＲＡＭリストの先頭に記載された識別情報に対応するページを、ＤＲＡＭリストの先頭のページという。すなわち、ＤＲＡＭリストの先頭のページとは、ＤＲＡＭ１２１に格納されたページのうちの最も時間差が長いページである。また、ＤＲＡＭリストの最後尾に記載された識別情報に対応するページを、ＤＲＡＭリストの最後尾のページという。すなわち、ＤＲＡＭリストの最後尾のページとは、ＤＲＡＭ１２１に格納されたページのうちの最も時間差が短いページである。同様に、不揮発メモリリストの先頭に記載された識別情報に対応するページを、不揮発メモリリストの先頭のページという。すなわち、不揮発メモリリストの先頭のページとは、不揮発メモリ１２２に格納されたページのうちの最も時間差が長いページである。また、不揮発メモリリストの最後尾に記載された識別情報に対応するページを、不揮発メモリリストの最後尾のページという。すなわち、不揮発メモリリストの最後尾のページとは、不揮発メモリ１２２に格納されたページのうちの最も時間差が短いページである。
【００４７】
次に、ページ管理部１１４は、ＤＲＡＭリストの最後尾に記載されたページの時間差が０以上かを判定する。ＤＲＡＭリストの最後尾に記載されたページの時間差が０以下の場合、ページ管理部１１４は、ＤＲＡＭリストの最後尾に記載されたページをＤＲＡＭ１２１から不揮発メモリ１２２へ移動する。その後、ページ管理部１１４は、ＤＲＡＭリストの最後尾に記載されたページの識別情報を不揮発メモリリストの最後尾に移動する。ページ管理部１１４は、ＤＲＡＭリストの最後尾のページの時間差が０より大きくなるまで、ＤＲＡＭリストの最後尾のページの移動処理を繰り返す。
【００４８】
これに対して、ＤＲＡＭリストの最後尾のページの時間差が０より大きい場合、ページ管理部１１４は、ＤＲＡＭリストのページの登録数がＤＲＡＭ１２１に配置可能な最大ページ数未満か否かを判定する。
【００４９】
ＤＲＡＭリストのページの登録数がＤＲＡＭ１２１に格納可能な最大ページ数未満の場合、ページ管理部１１４は、不揮発メモリリストの先頭のページの時間差が０より大きいか否かを判定する。不揮発メモリリストの先頭のページの時間差が０より大きい場合、ページ管理部１１４は、不揮発メモリリストの先頭のページを不揮発メモリ１２２からＤＲＡＭ１２１へ移動する。その後、ページ管理部１１４は、不揮発メモリリストの先頭に記載された識別情報をＤＲＡＭリストの先頭へ移動する。ページ管理部１１４は、ＤＲＡＭリストのページの登録数がＤＲＡＭ１２１に格納可能な最大ページ数未満になるか又は不揮発メモリリストの先頭のページの時間差が０以下になるまで、不揮発メモリリストの先頭に記載されたページの移動処理を繰り返す。
【００５０】
これに対して、不揮発メモリリストの先頭のページの時間差が０以下の場合、ページ管理部１１４は、ページ移動処理を終了する。
【００５１】
一方、ＤＲＡＭリストのページの登録数がＤＲＡＭ１２１に配置可能な最大ページ数に達している場合、ページ管理部１１４は、ＤＲＡＭリストの最後尾のページの時間差が、不揮発メモリリストの先頭ページの時間差未満か否かを判定する。
【００５２】
不揮発メモリリストの先頭ページの時間差未満の場合、ページ管理部１１４は、ＤＲＡＭ１２１に格納されたＤＲＡＭリストの最後尾のページと不揮発メモリ１２２に格納された不揮発メモリリストの先頭のページとを入れ替える。その後、ページ管理部１１４は、不揮発メモリリストの先頭に記載された識別情報をＤＲＡＭリストの先頭に移動する。次に、ページ管理部１１４は、ＤＲＡＭリストの最後尾に記載された識別情報を不揮発メモリリストの最後尾に移動する。
【００５３】
ページ管理部１１４は、ＤＲＡＭリストの最後尾のページの時間差が、不揮発メモリリストの先頭ページの時間差以上になるまで、ＤＲＡＭ１２１と不揮発メモリ１２２におけるページの入れ替えの処理を繰り返す。不揮発メモリ１２２のサイズがＤＲＡＭ１２１のサイズに比べて十分大きいことから、ページ管理部１１４は、ＤＲＡＭ１２１の空き容量が無い場合に、ＤＲＡＭ１２１に格納されたページを不揮発メモリ１２２に移動することでＤＲＡＭ１２１に空き領域を作る。
【００５４】
これに対して、ＤＲＡＭリストの最後尾のページの時間差が、不揮発メモリリストの先頭ページの時間差以上の場合、ページ管理部１１４は、ページ移動処理を終了する。このページ管理部１１４が、「データ管理部」の一例にあたる。
【００５５】
次に、図４を参照して、処理命令を受信した場合のメモリ管理部１１１によるページテーブル２００の登録処理の流れについて説明する。図４は、ページテーブル登録処理のフローチャートである。
【００５６】
メモリ管理部１１１は、書込命令又は読出命令を処理実行部１１２から受信する（ステップＳ１０１）。
【００５７】
次に、メモリ管理部１１１は、受信した処理命令で指定された仮想アドレスを取得する。次に、メモリ管理部１１１は、取得した仮想アドレスを基にページテーブル２００を検索する（ステップＳ１０２）。そして、メモリ管理部１１１は、仮想アドレスに対応するページテーブルエントリ２０１を特定する。
【００５８】
次に、メモリ管理部１１１は、特定したページテーブルエントリ２０１のアクセスフラグをセットする（ステップＳ１０３）。
【００５９】
次に、メモリ管理部１１１は、受信した処理命令が書込命令か否かを判定する（ステップＳ１０４）。
【００６０】
受信した処理命令が書込命令の場合（ステップＳ１０４：肯定）、メモリ管理部１１１は、特定したページテーブルエントリ２０１のダーティフラグをセットする（ステップＳ１０５）。
【００６１】
さらに、メモリ管理部１１１は、特定したページテーブルエントリ２０１の書込カウンタを１つインクリメントする（ステップＳ１０６）。
【００６２】
これに対して、受信した処理命令が書込命令でない場合（ステップＳ１０４：否定）、すなわち受信した処理命令が読出命令の場合、メモリ管理部１１１は、特定したページテーブルエントリ２０１の読出カウンタを１つインクリメントする（ステップＳ１０７）。その後、メモリ管理部１１１は、特定したページテーブルエントリ２０１から物理アドレスを取得し、取得した物理アドレスを処理実行部１１２へ出力する。
【００６３】
次に、図５を参照して、時間差算出部１１３及びページ管理部１１４によるページ移動処理の流れについて説明する。図５は、ページ移動処理のフローチャートである。
【００６４】
時間差算出部１１３は、予め決められた所定期間毎にページテーブル２００の各ページテーブルエントリ２０１の書込カウンタの値及び読出カウンタの値を取得する。そして、時間差算出部１１３は、数式１を用いて各ページに対する所定時間における書き込み及び読み出しをＤＲＡＭ１２１に対して行った場合の時間と不揮発メモリ１２２に対して行った場合の読書処理時間差を算出する。また、時間差算出部１１３は、数式２を用いてＤＲＡＭ１２１に各データが配置された場合の所定時間におけるログ記録オーバヘッドを算出する（ステップＳ２０１）。
【００６５】
次に、時間差算出部１１３は、算出した読書処理時間差からログ記録オーバヘッドを減算して各ページをＤＲＡＭ１２１に配置した場合と不揮発メモリ１２２に配置した場合の時間差を算出する（ステップＳ２０２）。その後、時間差算出部１１３は、算出した各ページの時間差をページ管理部１１４へ出力する。
【００６６】
ページ管理部１１４は、各ページの時間差の入力を時間差算出部１１３から受ける。次に、ページ管理部１１４は、時間差の降順にＤＲＡＭ１２１に配置された各ページの識別情報を並べたＤＲＡＭリストを作成する（ステップＳ２０３）。
【００６７】
次に、ページ管理部１１４は、時間差の降順に不揮発メモリ１２２に配置された各ページの識別情報を並べた不揮発メモリリストを作成する（ステップＳ２０４）。
【００６８】
次に、ページ管理部１１４は、ＤＲＡＭリストの最後尾に記載されたページの時間差が０以下か否かを判定する（ステップＳ２０５）。ＤＲＡＭリストの最後尾に記載されたページの時間差が０以下の場合（ステップＳ２０５：肯定）、ページ管理部１１４は、ＤＲＡＭリストの最後尾に記載されたページをＤＲＡＭ１２１から不揮発メモリ１２２へ移動する（ステップＳ２０６）。
【００６９】
次に、ページ管理部１１４は、ＤＲＡＭリストの最後尾に記載されたページの識別情報を不揮発メモリリストの最後尾に移動する（ステップＳ２０７）。その後、ページ管理部１１４は、ステップＳ２０５へ戻る。
【００７０】
これに対して、ＤＲＡＭリストの最後尾のページの時間差が０より大きい場合（ステップＳ２０５：否定）、ページ管理部１１４は、ＤＲＡＭリストのページの登録数がＤＲＡＭ１２１に配置可能な最大ページ数未満か否かを判定する（ステップＳ２０８）。
【００７１】
ＤＲＡＭリストのページの登録数がＤＲＡＭ１２１に格納可能な最大ページ数未満の場合（ステップＳ２０８：肯定）、ページ管理部１１４は、不揮発メモリリストの先頭のページの時間差が０より大きいか否かを判定する（ステップＳ２０９）。不揮発メモリリストの先頭のページの時間差が０以下の場合（ステップＳ２０９：否定）、ページ管理部１１４は、ページ移動処理を終了する。
【００７２】
これに対して、不揮発メモリリストの先頭のページの時間差が０より大きい場合（ステップＳ２０９：肯定）、ページ管理部１１４は、不揮発メモリリストの先頭のページを不揮発メモリ１２２からＤＲＡＭ１２１へ移動する（ステップＳ２１０）。
【００７３】
次に、ページ管理部１１４は、不揮発メモリリストの先頭に記載された識別情報をＤＲＡＭリストの先頭へ移動する（ステップＳ２１１）。その後、ページ管理部１１４は、ステップＳ２０８へ戻る。
【００７４】
一方、ＤＲＡＭリストのページの登録数がＤＲＡＭ１２１に配置可能な最大ページ数に達している場合(ステップＳ２０８：否定)、ページ管理部１１４は、ＤＲＡＭリストの最後尾のページの時間差が、不揮発メモリリストの先頭ページの時間差未満か否かを判定する（ステップＳ２１２）。
【００７５】
不揮発メモリリストの先頭ページの時間差未満の場合（ステップＳ２１２：肯定）、ページ管理部１１４は、ページの入替処理を実行する。具体的には、ページ管理部１１４は、ＤＲＡＭ１２１に格納されたＤＲＡＭリストの最後尾のページと不揮発メモリ１２２に格納された不揮発メモリリストの先頭のページとを入れ替える（ステップＳ２１３）。
【００７６】
次に、ページ管理部１１４は、不揮発メモリリストの先頭に記載された識別情報をＤＲＡＭリストの先頭に移動する（ステップＳ２１４）。
【００７７】
次に、ページ管理部１１４は、ＤＲＡＭリストの最後尾に記載された識別情報を不揮発メモリリストの最後尾に移動する（ステップＳ２１５）。その後、ページ管理部１１４は、ステップＳ２１２へ戻る。
【００７８】
これに対して、ＤＲＡＭリストの最後尾のページの時間差が不揮発メモリリストの先頭ページの時間差以上の場合（ステップＳ２１２：否定）、ページ管理部１１４は、ページ移動処理を終了する。
【００７９】
以上に説明したように、本実施例に係る情報処理装置は、あるページをＤＲＡＭに配置した場合と不揮発メモリに格納した場合のどちらが全体的な処理時間が短くなるかを判定し、より全体的な処理時間が短くなるようにそのページの移動を行う。より具体的には、本実施例に係る情報処理装置は、あるページをＤＲＡＭに配置した場合及び不揮発メモリに配置した場合の所的時間におけるＤＲＡＭ及び不揮発メモリに対する書き込み及び読み出しにかかる時間の差である読書処理時間差を算出する。また、本実施例に係る情報処理装置は、ログ記録オーバヘッドを算出する。そして、本実施例に係る情報処理装置は、読書処理時間差及びログ記録オーバヘッドを用いてあるページをＤＲＡＭに配置した場合と不揮発メモリに格納した場合のどちらが全体的な処理時間が短くなるかを判定する。
【００８０】
これにより、単に処理速度の速い記憶装置に書き込み頻度の高いデータを配置するのではなく、ログ記録オーバヘッドを考慮した全体的な処理時間が短くなるように処理速度の異なる記憶装置へのデータの配置を行うことができる。特に、データベースなどのデータの永続性を保証するアプリケーションにおいて、全体的な処理時間が短くなるようなデータ配置を行うことができる。これにより、システムの全体的な処理時間を短縮することができ、性能を向上させることができる。
【００８１】
ここで、本実施例では、揮発メモリが接続されるメモリバスに不揮発メモリが接続される場合で説明したが、この構成に限定されるわけではない。例えば、揮発メモリが接続されるメモリバスとは異なるバスに接続される不揮発メモリを有する構成であっても、実施例と同様の機能を備えることで、システムの性能を向上させることができる。
【符号の説明】
【００８２】
１  情報処理装置
１１  ＣＰＵ
１２  主記憶部
１３  不揮発ストレージ
１１１  メモリ管理部
１１２  処理実行部
１１３  時間差算出部
１１４  ページ管理部
１２１  ＤＲＡＭ
１２２  不揮発メモリ
【図１】
2019045974.tif 000005
【図２】
2019045974.tif 000006
【図３】
2019045974.tif 000007
【図４】
2019045974.tif 000008
【図５】
2019045974.tif 000009