(57)【要約】      （修正有）【課題】不揮発メモリに効率良くアクセスする情報処理装置を提供する。【解決手段】情報処理装置は、第１メモリ１４と、不揮発メモリ１６と、プロセッサ１２とを備える。プロセッサは、オペレーティングシステムを実行することにより、不揮発メモリに記憶されたファイルに含まれる複数のページのそれぞれについて、不揮発メモリから第１メモリにコピーしたデータに対して書き込みおよび読み出しをするコピーアクセス処理と、不揮発メモリに記憶されたデータに対して直接書き込みおよび読み出しをするダイレクトアクセス処理の何れを実行するかを示すメモリアクセス方法を割り当てる。プロセッサは、オペレーティングシステムがアプリケーションプログラムからファイルに対して書き込みまたは読み出しの要求を受けた場合、ファイルに含まれる複数のページのそれぞれに対して割り当てられたメモリアクセス方法により不揮発メモリおよび第１メモリにアクセスする。【選択図】図２
2020042627.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリと、
不揮発メモリと、
前記第１メモリおよび前記不揮発メモリに記憶されたデータに対して情報処理を実行するプロセッサと
を備え、
前記プロセッサは、
オペレーティングシステムを実行することにより、前記不揮発メモリに記憶されたファイルに含まれる複数のページのそれぞれについて、前記不揮発メモリから前記第１メモリにコピーしたデータに対して書き込みおよび読み出しをするコピーアクセス処理と、前記不揮発メモリに記憶されたデータに対して直接書き込みおよび読み出しをするダイレクトアクセス処理の何れを実行するかを示すメモリアクセス方法を割り当て、
前記オペレーティングシステムがアプリケーションプログラムから前記ファイルに対して書き込みまたは読み出しの要求を受けた場合、前記ファイルに含まれる前記複数のページのそれぞれに対して割り当てられた前記メモリアクセス方法により前記不揮発メモリおよび前記第１メモリにアクセスする
情報処理装置。
【請求項２】
前記プロセッサは、前記ファイルに含まれる前記複数のページのそれぞれについて、仮想記憶装置における記憶位置を示す仮想アドレスと、前記第１メモリまたは前記不揮発メモリにおける記憶位置を示すメモリアドレスと、前記メモリアクセス方法とを対応付けたマッピング情報を管理する
請求項１に記載の情報処理装置。
【請求項３】
前記プロセッサは、前記オペレーティングシステムが前記アプリケーションプログラムから、前記ファイルに対してアクセスを開始することを宣言するファイルオープンのシステムコールを受けた場合、前記アプリケーションプログラムから取得した情報に基づき前記マッピング情報を生成する
請求項２に記載の情報処理装置。
【請求項４】
前記プロセッサは、前記オペレーティングシステムが前記アプリケーションプログラムから、前記ファイルのデータを仮想記憶装置にマッピングさせるためのメモリマッピングのシステムコールを受けた場合、前記アプリケーションプログラムから取得した情報に基づき前記マッピング情報を生成または更新する
請求項２に記載の情報処理装置。
【請求項５】
前記プロセッサにおける前記第１メモリおよび前記不揮発メモリに対する動作を解析するパフォーマンス収集装置をさらに備え、
前記プロセッサは、予め定められたタイミングにおいて、前記パフォーマンス収集装置による解析結果に応じて、前記ファイルに含まれる前記複数のページのそれぞれに対する前記メモリアクセス方法を決定し、前記複数のページのそれぞれに対して決定した前記メモリアクセス方法に応じて前記マッピング情報を更新する
請求項２から４の何れか１項に記載の情報処理装置。
【請求項６】
前記プロセッサは、前記第１メモリおよび前記不揮発メモリに対する動作を解析し、予め定められたタイミングにおいて解析結果に応じて前記複数のページのそれぞれに対する前記メモリアクセス方法を決定し、前記複数のページのそれぞれに対して決定した前記メモリアクセス方法が設定された前記マッピング情報を更新する
請求項２から４の何れか１項に記載の情報処理装置。
【請求項７】
前記プロセッサは、前記複数のページのそれぞれについて、所定期間内の前記不揮発メモリに対する書き込み回数を取得し、前記書き込み回数が第１閾値より大きい場合、前記コピーアクセス処理に決定し、前記書き込み回数が前記第１閾値以下の場合、前記ダイレクトアクセス処理に決定する
請求項５または６に記載の情報処理装置。
【請求項８】
前記プロセッサからの前記第１メモリおよび前記不揮発メモリに対するアクセス要求を受け付けて、前記第１メモリおよび前記不揮発メモリにアクセスする管理装置をさらに備え、
前記管理装置は、
前記複数のページのそれぞれについて、前記不揮発メモリから前記第１メモリにコピーしたデータに対して書き込みおよび読み出しをする第１アクセス処理、または、前記不揮発メモリに記憶されたデータに対して直接書き込みおよび読み出しをする第２アクセス処理の何れを実行するかを示すアクセス方法を記憶する設定記憶部と、
前記プロセッサから前記第１アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第１アクセス処理を実行し、前記プロセッサから前記第２アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第２アクセス処理を実行するアクセス処理部と、
を有する請求項１に記載の情報処理装置。
【請求項９】
前記プロセッサは、前記ファイルに含まれる前記複数のページのそれぞれについて、前記設定記憶部における対応するページにおける前記アクセス方法に前記第１アクセス処理が設定されている場合、前記コピーアクセス処理を割り当て、前記設定記憶部における対応するページにおける前記アクセス方法に前記第２アクセス処理が設定されている場合、前記ダイレクトアクセス処理を割り当てる
請求項８に記載の情報処理装置。
【請求項１０】
第１メモリおよび不揮発メモリに記憶されたデータに対して情報処理を実行するプロセッサがオペレーティングシステムを実行することにより、前記プロセッサにより実行されるメモリ制御方法であって、
前記不揮発メモリに記憶されたファイルに含まれる複数のページのそれぞれについて、前記不揮発メモリから前記第１メモリにコピーしたデータに対して書き込みおよび読み出しをするコピーアクセス処理と、前記不揮発メモリに記憶されたデータに対して直接書き込みおよび読み出しをするダイレクトアクセス処理の何れを実行するかを示すメモリアクセス方法を割り当て、
アプリケーションプログラムから前記ファイルに対して書き込みまたは読み出しの要求を受けた場合、前記ファイルに含まれる前記複数のページのそれぞれに対して割り当てられた前記メモリアクセス方法により前記不揮発メモリおよび前記第１メモリにアクセスする
メモリ制御方法。
【請求項１１】
第１メモリおよび不揮発メモリに記憶されたデータに対して情報処理を実行するプロセッサにより実行されるプログラムであって、
前記プロセッサを、
前記不揮発メモリに記憶されたファイルに含まれる複数のページのそれぞれについて、前記不揮発メモリから前記第１メモリにコピーしたデータに対して書き込みおよび読み出しをするコピーアクセス処理と、前記不揮発メモリに記憶されたデータに対して直接書き込みおよび読み出しをするダイレクトアクセス処理の何れを実行するかを示すメモリアクセス方法を割り当てるファイルシステム管理部と、
アプリケーションプログラムから前記ファイルに対して書き込みまたは読み出しの要求を受けた場合、前記ファイルに含まれる前記複数のページのそれぞれに対して割り当てられた前記メモリアクセス方法により前記不揮発メモリおよび前記第１メモリにアクセスするアクセス管理部と
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、メモリ制御方法およびプログラムに関する。
【背景技術】
【０００２】
近年、ストレージクラスメモリと呼ばれる高速な不揮発メモリが開発されている。ストレージクラスメモリは、ページ単位でのデータの書き換えに加えて、ページよりも小さい例えばバイト単位でのデータの書き込みが可能である。このようにバイト単位でデータの書き込み可能となった不揮発メモリは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）から直接アクセスが可能となる。
【０００３】
また、従来のファイルシステムは、ストレージに記憶されたファイルに含まれるデータを、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を仮想化した仮想記憶装置におけるアドレス空間にマッピングする。これにより、ＣＰＵは、ファイルに含まれるデータに対して効率良くアクセスをすることが可能となる。
【０００４】
ところで、従来のファイルシステムは、ストレージクラスメモリと呼ばれる不揮発メモリに記憶されたファイルを、ストレージに記憶されたファイルと同様に扱う。従って、従来のファイルシステムが適用されたＣＰＵは、ストレージクラスメモリに記憶されたファイルに含まれるデータにアクセスする場合、一旦、ファイルを仮想記憶装置にマッピングしてからアクセスする。従って、従来のファイルシステムは、ストレージクラスメモリに記憶されたファイルに対して効率良くアクセスすることができなかった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−１３８８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、不揮発メモリに記憶されたファイルに含まれるデータに対して効率良くアクセスすることにある。
【課題を解決するための手段】
【０００７】
実施形態に係る情報処理装置は、第１メモリと、不揮発メモリと、プロセッサとを備える。前記プロセッサは、前記第１メモリおよび前記不揮発メモリに記憶されたデータに対して情報処理を実行する。前記プロセッサは、オペレーティングシステムを実行することにより、前記不揮発メモリに記憶されたファイルに含まれる複数のページのそれぞれについて、前記不揮発メモリから前記第１メモリにコピーしたデータに対して書き込みおよび読み出しをするコピーアクセス処理と、前記不揮発メモリに記憶されたデータに対して直接書き込みおよび読み出しをするダイレクトアクセス処理の何れを実行するかを示すメモリアクセス方法を割り当てる。前記プロセッサは、前記オペレーティングシステムがアプリケーションプログラムから前記ファイルに対して書き込みまたは読み出しの要求を受けた場合、前記ファイルに含まれる前記複数のページのそれぞれに対して割り当てられた前記メモリアクセス方法により前記不揮発メモリおよび前記第１メモリにアクセスする。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係る情報処理装置のハードウェア構成を示す図。
【図２】プロセッサの機能構成を第１メモリおよび不揮発メモリとともに示す図。
【図３】マッピング情報の一例を示す図。
【図４】アクセス管理部の処理の流れを示すフローチャート。
【図５】第１実施形態のファイルシステム管理部の処理の流れを示す図。
【図６】第２実施形態に係る情報処理装置のハードウェア構成を示す図。
【図７】第２実施形態のファイルシステム管理部の処理の流れを示す図。
【図８】第３実施形態に係る情報処理装置のハードウェア構成を示す図。
【図９】管理装置の構成を示す図。
【図１０】変換テーブルの一例を示す図。
【図１１】第１アクセス処理および第２アクセス処理の内容を示す図。
【図１２】第３実施形態のファイルシステム管理部の処理の流れを示す図。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら実施形態に係る情報処理装置１０について詳細に説明する。なお、以下、複数の実施形態について説明をするが、略同一の機能および構成を有するブロックに同一の符号を付け、第２実施形態以降においては重複する内容の説明を省略する。
【００１０】
（第１実施形態）
図１は、第１実施形態に係る情報処理装置１０のハードウェア構成を示す図である。第１実施形態に係る情報処理装置１０は、プロセッサ１２と、第１メモリ１４と、不揮発メモリ１６とを備える。
【００１１】
プロセッサ１２は、例えば、ＣＰＵである。プロセッサ１２は、１または複数のＣＰＵコアを含んでいてもよい。プロセッサ１２は、プログラムを実行して、データを処理する。プロセッサ１２は、プログラムの実行に応じて、第１メモリ１４または不揮発メモリ１６からデータを読み出したり、第１メモリ１４または不揮発メモリ１６にデータを書き込んだりする。
【００１２】
第１メモリ１４は、プロセッサ１２による作業領域として用いられる主記憶装置（メインメモリ）である。第１メモリ１４は、例えば、電源の供給を停止すると記憶しているデータが消える揮発メモリである。第１メモリ１４は、例えば、ＤＲＡＭである。なお、第１メモリ１４は、ＤＲＡＭと同様に高速アクセスが可能な、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の不揮発メモリであってもよい。
【００１３】
また、第１メモリ１４は、不揮発メモリ１６よりも書き込み可能回数が多い。例えば、第１メモリ１４は、書き込み可能回数を考慮した設計をしなくてよい程度（例えば、書き込み回数に制限が無いとして設計をすることが可能な程度）、書き込み可能回数が多い。
【００１４】
不揮発メモリ１６は、電源の供給を停止してもデータを記憶し続けるメモリである。不揮発メモリ１６は、記憶しているデータがファイルシステムにより管理される。ファイルシステムは、不揮発メモリ１６に記憶されているデータを、ファイルと呼ばれる単位で管理する。不揮発メモリ１６は、ファイルシステムが設定され、設定されたファイルシステムに応じた管理情報等が書き込まれる。
【００１５】
不揮発メモリ１６は、例えば、ＤＲＡＭより大容量な大容量高速不揮発メモリ（Ｎｏｎ−ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）を含む。不揮発メモリ１６は、例えば、ＭＲＡＭ、ＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＣＲＡＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、３ＤＸＰｏｉｎｔまたはＭｅｍｒｉｓｔｏｒ等である。不揮発メモリ１６は、いわゆるストレージクラスメモリ（ＳＣＭ）と呼ばれるメモリであってもよい。また、不揮発メモリ１６は、複数の半導体装置を１つの基板または筐体等に設けたモジュールであってもよい。
【００１６】
不揮発メモリ１６は、第１メモリ１４と比較して容量が大きい。不揮発メモリ１６の容量は、第１メモリ１４と同じであってもよい。また、不揮発メモリ１６は、第１メモリ１４のアクセス速度と同等または少し遅い程度である。また、不揮発メモリ１６は、待機電力がゼロか、または、第１メモリ１４と比較して待機電力が非常に少ない。不揮発メモリ１６は、一例として、アクセスレイテンシが１０ｎ秒から数μ秒程度の間のメモリである。
【００１７】
不揮発メモリ１６は、バイト単位等の小領域単位でデータを書き込みおよび読み出し可能である。従って、プロセッサ１２は、読み出し命令または書き込み命令により不揮発メモリ１６に対して直接アクセスが可能である。プロセッサ１２は、例えばキャッシュライン単位等で不揮発メモリ１６に直接アクセスすることが可能である。
【００１８】
図２は、プロセッサ１２の機能構成を第１メモリ１４および不揮発メモリ１６とともに示す図である。プロセッサ１２は、オペレーティングシステム部２２と、アプリケーション部２４とを有する。
【００１９】
オペレーティングシステム部２２は、プロセッサ１２がオペレーティングシステムを実行することにより実現される機能ブロックである。オペレーティングシステムは、情報処理装置１０を動作させるための基本的なプログラムである。オペレーティングシステム部２２は、情報処理装置１０の全体の動作制御、第１メモリ１４および不揮発メモリ１６に対するアクセスの制御、情報処理装置１０に接続されるデバイスの制御、および、ユーザインターフェース等を実行する。
【００２０】
アプリケーション部２４は、プロセッサ１２がアプリケーションプログラムを実行することにより実現される機能ブロックである。アプリケーション部２４は、オペレーティングシステム部２２の管理の下で動作する。プロセッサ１２は、複数のアプリケーションプログラムを並行して実行してもよい。この場合、プロセッサ１２は、複数のアプリケーション部２４を有する。
【００２１】
オペレーティングシステム部２２は、ファイルシステム管理部３４と、アクセス管理部３６と、インターフェース部３８とを含む。
【００２２】
ファイルシステム管理部３４は、ファイルシステムに基づき、不揮発メモリ１６に記憶されているデータをファイルの単位で管理する。また、ファイルシステム管理部３４は、ファイルを、仮想記憶装置のデータの管理単位であるページの単位で管理する。ページのサイズは、アーキテクチャ毎に異なるが、例えば４Ｋバイトである。また、ファイルシステム管理部３４は、アプリケーション部２４がアクセスするファイルに含まれる複数のページのそれぞれに対して、仮想記憶装置における記憶位置を示す仮想アドレスを割り当てる。ファイルシステム管理部３４は、ファイル毎に、複数のページのそれぞれの仮想アドレスと、第１メモリ１４または不揮発メモリ１６における記憶位置を示すメモリアドレスとを対応付けたマッピング情報を管理する。
【００２３】
アクセス管理部３６は、アプリケーション部２４からのファイルに対するアクセス要求に応じて、第１メモリ１４または不揮発メモリ１６にアクセスする。例えば、アクセス管理部３６は、書き込み命令に応じて、ファイルに含まれる指定されたページのデータを、第１メモリ１４または不揮発メモリ１６に書き込む。また、例えば、アクセス管理部３６は、読み出し命令に応じて、ファイルに含まれる指定されたページのデータを、第１メモリ１４または不揮発メモリ１６から読み出す。
【００２４】
インターフェース部３８は、アプリケーション部２４に対してファイルに対する操作を行うＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供する。インターフェース部３８は、一例として、ｏｐｅｎシステムコール、ｒｅａｄシステムコール、ｗｒｉｔｅシステムコールおよびｍｍａｐシステムコール等を提供する。
【００２５】
ｏｐｅｎシステムコールは、ファイルに対してアクセスを開始することを宣言するファイルオープンのシステムコールである。ｒｅａｄシステムコールは、指定したデータを読み出す読み出し要求を表すシステムコールである。ｗｒｉｔｅシステムコールは、指定したデータを書き込む書き込み要求を表すシステムコールである。ｍｍａｐシステムコールは、ファイルのデータを仮想記憶装置にマッピングさせるためのメモリマッピングのシステムコールである。
【００２６】
インターフェース部３８は、アプリケーション部２４からシステムコールを受け取ると、対応する処理をファイルシステム管理部３４またはアクセス管理部３６等に実行させる。そして、インターフェース部３８は、実行結果等を示す戻り値をアプリケーション部２４に返す。
【００２７】
図３は、マッピング情報の一例を示す図である。ファイルシステム管理部３４は、アプリケーション部２４がアクセスするファイルに対して、仮想記憶装置における連続したアドレス空間を割り当てる。そして、ファイルシステム管理部３４は、ファイルに含まれる複数のページのそれぞれに対して、仮想記憶装置における記憶位置を示す仮想アドレスを割り当てる。これにより、アクセス管理部３６は、ファイルに含まれる指定されたページのデータに、容易にアクセスをすることが可能となる。
【００２８】
さらに、ファイルシステム管理部３４は、不揮発メモリ１６に記憶されたファイルに含まれる複数のページのそれぞれについて、コピーアクセス処理またはダイレクトアクセス処理の何れを実行するかを示すメモリアクセス方法を割り当てる。
【００２９】
コピーアクセス処理は、不揮発メモリ１６から第１メモリ１４にコピーしたデータに対して書き込みおよび読み出しをする方法である。ダイレクトアクセス処理は、不揮発メモリ１６に記憶されたデータに対して直接書き込みおよび読み出しをする方法である。
【００３０】
ファイルシステム管理部３４は、例えば、アプリケーション部２４から取得した情報に基づき、ファイルに含まれる複数のページのそれぞれについて、コピーアクセス処理を実行するか、ダイレクトアクセス処理を実行するかを割り当ててもよい。また、ファイルシステム管理部３４は、例えば、不揮発メモリ１６に記憶されたファイルシステム情報に予め登録された情報に基づき、ファイルに含まれる複数のページのそれぞれについて、コピーアクセス処理を実行するか、ダイレクトアクセス処理を実行するかを割り当ててもよい。
【００３１】
ファイルシステム管理部３４は、複数のページに対するメモリアクセス方法の割り当てに応じて、ファイル毎にマッピング情報を生成する。マッピング情報は、対応するファイルに含まれる複数のページのそれぞれについて、仮想アドレスと、第１メモリ１４または不揮発メモリ１６における記憶位置を示すメモリアドレスと、メモリアクセス方法とを対応付けている。
【００３２】
図４は、アクセス管理部３６の処理の流れを示すフローチャートである。アクセス管理部３６は、アプリケーション部２４からファイルに含まれる指定されたページに対するアクセス要求（書き込み要求または読み出し要求）を受けた場合、図４に示す流れで処理を実行する。
【００３３】
まず、Ｓ１１において、アクセス管理部３６は、マッピング情報を参照して、アクセス対象のページにおけるメモリアクセス方法を取得する。続いて、Ｓ１２において、アクセス管理部３６は、取得したメモリアクセス方法がダイレクトアクセスか否かを判断する。メモリアクセス方法がダイレクトアクセスである場合（Ｓ１２のＹｅｓ）、アクセス管理部３６は、処理をＳ１３に進める。そして、Ｓ１３において、アクセス管理部３６は、不揮発メモリ１６におけるマッピング情報に示されたメモリアドレスにアクセスする。アクセス管理部３６は、Ｓ１３を終了すると、当該ページについてのアクセス処理を終了する。
【００３４】
一方、メモリアクセス方法がダイレクトアクセスではない場合（Ｓ１２のＮｏ）、すなわち、メモリアクセス方法がコピーアクセスである場合、アクセス管理部３６は、処理をＳ１４に進める。Ｓ１４において、アクセス管理部３６は、不揮発メモリ１６に記憶される当該ページのデータが、第１メモリ１４にコピー済みであるか否かを判断する。コピー済みの場合（Ｓ１４のＹｅｓ）、アクセス管理部３６は、処理をＳ１６に進める。
【００３５】
コピー済みではない場合（Ｓ１４のＮｏ）、アクセス管理部３６は、処理をＳ１５に進める。Ｓ１５において、アクセス管理部３６は、当該ページのデータを、不揮発メモリ１６から第１メモリ１４にコピーする。さらに、アクセス管理部３６は、マッピング情報に示された対応するメモリアドレスを、不揮発メモリ１６上のアドレスから、第１メモリ１４上のアドレスに書き換える。アクセス管理部３６は、Ｓ１５を終えると、処理をＳ１６に進める。
【００３６】
Ｓ１６において、アクセス管理部３６は、第１メモリ１４におけるマッピング情報に示されたメモリアドレスにアクセスする。アクセス管理部３６は、Ｓ１６を終了すると、当該ページについてのアクセス処理を終了する。
【００３７】
以上のように、アクセス管理部３６は、オペレーティングシステムがアプリケーションプログラムからファイルに対してアクセス要求（書き込みまたは読み出しの要求）を受けた場合、ファイルに含まれる複数のページのそれぞれに対して、割り当てられたメモリアクセス方法により第１メモリ１４および不揮発メモリ１６にアクセスする。より具体的には、アクセス要求がされたページのメモリアクセス方法にコピーアクセス処理が割り当てられている場合、アクセス管理部３６は、不揮発メモリ１６から第１記憶１４部にコピーしたデータに対して書き込みおよび読み出しをするコピーアクセス処理を実行する。また、アクセス要求がされたページのメモリアクセス方法にダイレクトアクセス処理が割り当てられている場合、アクセス管理部３６は、不揮発メモリ１６に記憶されたデータに対して直接書き込みおよび読み出しをするコピーアクセス処理を実行する。
【００３８】
このように、アクセス管理部３６は、２種類のアクセス方法により不揮発メモリ１６に対してアクセスする。例えば、メモリアクセスに局所性が高いアプリケーションを実行した場合、アクセス管理部３６は、コピーアクセス処理により不揮発メモリ１６に記憶されたページをアクセスする。これにより、アクセス管理部３６は、メモリアクセスに局所性が高いアプリケーションを実行した場合、同一のページに対してより高速に処理をすることができる。
【００３９】
また、例えば、ランダムアクセスのようにメモリアクセスに局所性が低い処理を実行する場合、アクセス管理部３６は、ダイレクトアクセス処理により不揮発メモリ１６に記憶されたページをアクセスする。これにより、アクセス管理部３６は、局所性が低い処理を実行する場合、不揮発メモリ１６から第１メモリ１４への転送処理のオーバヘッドを無くして、効率良く処理をすることができる。このように、アクセス管理部３６は、コピーアクセス処理およびダイレクトアクセス処理の２種類のアクセス方法を用いることにより、処理の効率化を図ることができる。
【００４０】
図５は、第１実施形態において、マッピング情報を生成または更新する場合のファイルシステム管理部３４の処理の流れを示すフローチャートである。ファイルシステム管理部３４は、例えば、図５に示す処理を実行してマッピング情報を生成または更新する。
【００４１】
まず、Ｓ２１において、ファイルシステム管理部３４は、所定のシステムコールをアプリケーション部２４から取得したか否かを判断する。所定のシステムコールを取得した場合（Ｓ２１のＹｅｓ）、ファイルシステム管理部３４は、処理をＳ２２に進め、所定のシステムコールを取得していない場合（Ｓ２１のＮｏ）、処理をＳ２１で待機する。所定のシステムコールは、例えば、ｏｐｅｎシステムコールまたはｍｍａｐシステムコールである。
【００４２】
Ｓ２２において、ファイルシステム管理部３４は、アプリケーション部２４から、ファイルに含まれる複数のページのそれぞれのメモリアクセス方法を示す情報を取得する。続いて、Ｓ２３において、ファイルシステム管理部３４は、アプリケーション部２４から取得した情報について、マッピング情報を生成または更新する。例えば、ファイルシステム管理部３４は、まだマッピング情報を生成していない場合には、新たにマッピング情報を生成する。また、ファイルシステム管理部３４は、既にマッピング情報が生成されている場合には、アプリケーション部２４から取得した情報によりマッピング情報を更新する。ファイルシステム管理部３４は、Ｓ２３の処理を終えると、本フローを終了する。
【００４３】
このように、ファイルシステム管理部３４は、オペレーティングシステムがアプリケーションプログラムから所定のシステムコールを受けた場合、アプリケーションプログラムから取得した情報に基づきマッピング情報を生成または更新する。例えば、ファイルシステム管理部３４は、オペレーティングシステムがアプリケーションプログラムからファイルオープンのシステムコールを受けた場合、アプリケーションプログラムから取得した情報に基づきマッピング情報を生成する。また、例えば、ファイルシステム管理部３４は、オペレーティングシステムがアプリケーションプログラムからメモリマッピングのシステムコールを受けた場合、アプリケーションプログラムから取得した情報に基づきマッピング情報を生成または更新する。これにより、ファイルシステム管理部３４は、アプリケーションプログラムの作成者またはユーザの指示により、それぞれのページのメモリアクセス方法を割り当てることができる。
【００４４】
以上のように、本実施形態に係る情報処理装置１０は、ファイルに含まれる複数のページのそれぞれについて、コピーアクセス処理かダイレクトアクセス処理かを設定することができる。これにより、本実施形態に係る情報処理装置１０によれば、不揮発メモリ１６に記憶されたファイルに含まれるデータに対して効率良くアクセスすることができる。
【００４５】
（第２実施形態）
図６は、第２実施形態に係る情報処理装置１０のハードウェア構成を示す図である。第２実施形態に係る情報処理装置１０は、プロセッサ１２と、第１メモリ１４と、不揮発メモリ１６と、パフォーマンス収集装置４０とを備える。
【００４６】
パフォーマンス収集装置４０は、プロセッサ１２の動作情報を検出する。パフォーマンス収集装置４０は、パフォーマンスカウンタと呼ばれる装置であってもよい。
【００４７】
パフォーマンス収集装置４０は、一定時間毎に、プロセッサ１２における第１メモリ１４および不揮発メモリ１６に対する動作を解析して動作情報を取得する。動作情報は、例えば、プロセッサ１２による主記憶装置に対する書き込み回数、プロセッサ１２による主記憶装置に対する読み出し回数、プロセッサ１２のプリフェッチ成功率、プロセッサ１２のキャッシュヒット数、プロセッサ１２のキャッシュミス数、またはＴＬＢミス回数等である。また、これらに限らず、動作情報は、例えば、プロセッサ１２内での所定のイベントの回数、リタイアした命令数、コアクロック数およびキャッシュメモリにおける階層毎（Ｌ１キャッシュ、Ｌ２キャッシュ、Ｌ３キャッシュおよびラストレベルキャッシュ）のキャッシュヒット数／キャッシュミス数、ラストレベルキャッシュから追い出されたキャッシュライン数、各階層のキャッシュがキャッシュミスでストールするサイクル数等であってもよい。
【００４８】
ファイルシステム管理部３４は、所定のタイミングにおいて、パフォーマンス収集装置４０による解析結果を取得する。ファイルシステム管理部３４は、取得した解析結果に応じて、ファイルに含まれる複数のページのそれぞれに対するメモリアクセス方法を決定し、複数のページのそれぞれに対して決定したメモリアクセス方法に応じてマッピング情報を更新する。
【００４９】
なお、第２実施形態においてパフォーマンス収集装置４０は、プロセッサ１２とは別体の装置により実現されている。しかし、パフォーマンス収集装置４０は、プロセッサ１２が実行するオペレーティングシステムの一部の機能またはアプリケーションプログラムにより実行される機能として実現されてもよい。また、パフォーマンス収集装置４０は、プロセッサ１２の一部の機能としてプロセッサ１２に内蔵されていてもよい。
【００５０】
図７は、第２実施形態において、マッピング情報を更新する場合のファイルシステム管理部３４の処理の流れを示すフローチャートである。ファイルシステム管理部３４は、例えば、図７に示す処理を実行してマッピング情報を生成または更新する。
【００５１】
まず、Ｓ３１において、ファイルシステム管理部３４は、所定の更新タイミングとなったか否かを判断する。例えば、ファイルシステム管理部３４は、ファイルがオープンしてから一定期間経過した後、または、一定期間毎に所定の更新タイミングとなったと判断する。ファイルシステム管理部３４は、所定の更新タイミングとなった場合（Ｓ３１のＹｅｓ）、ファイルシステム管理部３４は、処理をＳ３２に進め、所定の更新タイミングとなっていない場合（Ｓ３１のＮｏ）、処理をＳ３１で待機する。
【００５２】
Ｓ３２において、ファイルシステム管理部３４は、パフォーマンス収集装置４０から解析結果を取得する。続いて、Ｓ３３において、ファイルシステム管理部３４は、解析結果に応じて、ファイルに含まれる複数のページのそれぞれに対するメモリアクセス方法を決定する。例えば、ファイルシステム管理部３４は、複数のページのそれぞれについて、所定期間内の不揮発メモリ１６に対する書き込み回数を取得する。そして、ファイルシステム管理部３４は、書き込み回数が予め設定された第１閾値より大きい場合、コピーアクセス処理に決定し、書き込み回数が第１閾値以下の場合、ダイレクトアクセス処理に決定する。
【００５３】
続いて、Ｓ３４において、ファイルシステム管理部３４は、複数のページのそれぞれに対して決定したメモリアクセス方法に応じてマッピング情報を更新する。ファイルシステム管理部３４は、Ｓ３４の処理を終えると、本フローを終了する。
【００５４】
このように、ファイルシステム管理部３４は、パフォーマンス収集装置４０による解析結果に基づきマッピング情報を更新する。これにより、ファイルシステム管理部３４は、現時点の動作状況に応じて、効率良くファイルにアクセスできるようにメモリアクセス方法を決定することができる。
【００５５】
不揮発メモリ１６は、仕様において書き込み回数の上限が設定される。従って、不揮発メモリ１６は、同一のページに短時間に大量の書き込みが発生した場合、他のページの書き込み回数が少ないにも関わらず、そのページの書き込み回数が短い期間で上限に達してしまい、寿命が尽きてしまう。ファイルシステム管理部３４は、短時間に大量に書き込みが発生しているページ（局所的な書き込みが発生しているページ）をコピーアクセス処理に決定し、局所的な書き込みが発生していないページをダイレクトアクセス処理に決定することができる。これにより、ファイルシステム管理部３４は、複数のページの全体に対して平均的に書き込みをさせることができる。
【００５６】
以上のように、本実施形態に係る情報処理装置１０は、ファイルに含まれる複数のページのそれぞれについて、パフォーマンス収集装置４０から解析結果に応じて、コピーアクセス処理かダイレクトアクセス処理かを設定することができる。これにより、本実施形態に係る情報処理装置１０によれば、不揮発メモリ１６に記憶されたファイルに含まれるデータに対して効率良くアクセスさせるとともに、不揮発メモリ１６の寿命を延ばすことができる。
【００５７】
（第３実施形態）
図８は、第３実施形態に係る情報処理装置１０のハードウェア構成を示す図である。第３実施形態に係る情報処理装置１０は、処理回路５０と、第１メモリ１４と、不揮発メモリ１６と、管理装置５２とを備える。
【００５８】
処理回路５０は、プロセッサ１２を有する。処理回路５０は、プロセッサ１２によるプログラムの実行に応じて、管理装置５２を介して第１メモリ１４または不揮発メモリ１６からデータを読み出したり、第１メモリ１４または不揮発メモリ１６にデータを書き込んだりする。
【００５９】
管理装置５２は、第１メモリ１４および不揮発メモリ１６に対する、処理回路５０によるデータの読み出しおよび書き込みを制御する。管理装置５２は、処理回路５０からの第１メモリ１４および不揮発メモリ１６に対するアクセス要求を受け付けて、アクセス要求に応じた処理を実行する。すなわち、管理装置５２は、処理回路５０からの書込命令に応じて、データを第１メモリ１４または不揮発メモリ１６に書き込む。また、管理装置５２は、処理回路５０からの読出命令に応じて、データを第１メモリ１４または不揮発メモリ１６から読み出し、読み出したデータを処理回路５０に与える。
【００６０】
また、管理装置５２は、不揮発メモリ１６に対するウェアレベリング制御を実行する。より具体的には、管理装置５２は、不揮発メモリ１６における領域毎のデータの書き換え回数を管理する。そして、管理装置５２は、領域毎の書き換え回数に基づき、不揮発メモリ１６における全体の領域に平均的にデータが書き込まれるように、データの書き込み位置を制御する。
【００６１】
なお、管理装置５２は、例えば、処理回路５０とは別体のハードウェアで構成されるメモリコントローラであってもよい。また、管理装置５２は、処理回路５０の一部のハードウェア（例えば、処理回路５０と同一の半導体基板に形成された回路）であってもよいし、処理回路５０の一部のハードウェアとメモリコントローラとの組み合わせにより実現されてもよい。
【００６２】
また、管理装置５２は、例えば、処理回路５０とは別体のハードウェアで構成されたメモリ管理ユニット（ＭＭＵ）であってもよい。また、管理装置５２は、処理回路５０の一部のハードウェアとメモリ管理ユニットとの組み合わせにより実現されてもよい。
【００６３】
また、管理装置５２は、メモリコントローラと、ＭＭＵ（メモリ管理ユニット）との組み合わせにより実現されてもよい。また、管理装置５２は、処理回路５０の一部のハードウェアと、メモリコントローラと、メモリ管理ユニットとの組み合わせにより実現されてもよい。
【００６４】
図９は、管理装置５２の構成を示す図である。管理装置５２は、設定記憶部６２と、アクセス処理部６４と、カウンタ記憶部６６と、ウェアレベリング実行部６８と、テーブル管理部７０とを有する。
【００６５】
設定記憶部６２は、変換テーブルを記憶する。変換テーブルは、処理回路５０がアクセス要求をするそれぞれのページについて、要求アドレスと、第１メモリ１４または不揮発メモリ１６における対応するページ番号（物理アドレス）との対応関係を記憶する。
【００６６】
さらに、変換テーブルは、処理回路５０がアクセス要求をするそれぞれのページについて、第１アクセス処理または第２アクセス処理の何れを実行するか示すアクセス方法を記憶する。
【００６７】
第１アクセス処理は、不揮発メモリ１６から第１メモリ１４に転送したデータに対して、書き込みおよび読み出しをする方法である。第２アクセス処理は、不揮発メモリ１６に記憶されるデータに対して直接書き込みおよび読み出しをする方法である。なお、変換テーブルの詳細については、図１０を参照して後述する。
【００６８】
アクセス処理部６４は、処理回路５０のプロセッサ１２からの第１メモリ１４および不揮発メモリ１６に対するアクセス要求を処理する。すなわち、アクセス処理部６４は、プロセッサ１２からの書込命令に応じて、データを第１メモリ１４または不揮発メモリ１６に書き込む。また、アクセス処理部６４は、プロセッサ１２からの読出命令に応じて、データを第１メモリ１４または不揮発メモリ１６から読み出し、読み出したデータを処理回路５０に与える。
【００６９】
また、アクセス処理部６４は、プロセッサ１２がアクセス要求をしたページについて、変換テーブルに記憶されたアクセス方法により第１メモリ１４および不揮発メモリ１６にアクセスする。つまり、アクセス処理部６４は、第１アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、第１アクセス処理を実行する。また、アクセス処理部６４は、第２アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、第２アクセス処理を実行する。アクセス方法の詳細については、図１０および図１１を参照して後述する。
【００７０】
カウンタ記憶部６６は、カウンタテーブルを記憶する。カウンタテーブルは、不揮発メモリ１６に含まれる複数の記憶領域（ページ領域）のそれぞれについての、データの書き込み回数を表すカウンタ値を格納する。
【００７１】
ウェアレベリング実行部６８は、カウンタ記憶部６６に記憶されたページ領域毎のカウンタ値に基づき、不揮発メモリ１６に対するウェアレベリング制御を実行する。ウェアレベリング実行部６８は、不揮発メモリ１６における全体の領域に平均的にデータが書き込まれるように、不揮発メモリ１６に記憶されているデータの配置を制御する。
【００７２】
テーブル管理部７０は、変換テーブルに記憶されたアクセス方法の変更処理を行う。例えば、テーブル管理部７０は、例えば、不揮発メモリ１６に対する書き込み量が設定値より大きい場合、変換テーブルにより管理されている複数のページのうちの第２アクセス処理に設定されている何れかの交換対象ページを選択する。そして、テーブル管理部７０は、選択した交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。
【００７３】
図１０は、変換テーブルの一例を示す図である。変換テーブルは、処理回路５０がアクセス要求をするそれぞれのページについて、要求アドレスと、第１メモリ１４または不揮発メモリ１６における対応するページ番号（物理アドレス）との対応関係を記憶する。すなわち、変換テーブルは、処理回路５０による要求アドレスに対応するデータが、第１メモリ１４または不揮発メモリ１６における何れのページに記憶されているのかを示すマッピング情報を記憶する。
【００７４】
例えば、図１０の例では、変換テーブルにおけるページ番号の列に“Ｓｘｘｘｘ”と記述されたページは、不揮発メモリ１６におけるページ番号が“ｘｘｘｘ”のページを示す。例えば、図１０の例では、ページ番号の列に“Ｄｘｘｘｘ”と記述されたページは、第１メモリ１４におけるページ番号が“ｘｘｘｘ”のページを示す。なお、ここでのｘは、任意の値である。
【００７５】
さらに、変換テーブルは、処理回路５０がアクセス要求をするそれぞれのページについて、第１アクセス処理または第２アクセス処理の何れを実行するか示すアクセス方法を記憶する。なお、変換テーブルは、図１０に示すような構成に限らず、他の構成であってもよい。
【００７６】
図１１は、第１アクセス処理および第２アクセス処理の内容を示す図である。アクセス処理部６４は、第１アクセス処理に設定されている第１ページに対して書き込みまたは読み出しの要求を受けた場合、不揮発メモリ１６に対して、第１アクセス処理を実行する。
【００７７】
例えば、図１１に示すように、第１アクセス処理において、アクセス処理部６４は、不揮発メモリ１６に記憶された第１ページのデータを転送して、第１メモリ１４に記憶させる。これにより、第１メモリ１４は、不揮発メモリ１６に記憶された第１ページのデータのコピーを記憶することができる。続いて、第１アクセス処理において、アクセス処理部６４は、第１メモリ１４に記憶されている、不揮発メモリ１６から転送された第１ページのデータに対して、読み出しおよび書き込みをする。例えば、アクセス処理部６４は、不揮発メモリ１６から第１メモリ１４に転送された第１ページのデータに対して、ページ領域より小さいサイズ（例えばプロセッサ１２のキャッシュラインサイズ）でデータの読み出しおよび書き込みをする。そして、第１アクセス処理において、アクセス処理部６４は、第１メモリ１４の空き容量が無くなり不揮発メモリ１６から第１メモリ１４にデータを転送できなくなった場合、および、第１メモリ１４に記憶させておくことが不要と判断された場合等において、第１メモリ１４に転送された第１ページのデータを、不揮発メモリ１６に書き戻す。
【００７８】
なお、アクセス処理部６４は、第１メモリ１４に転送された第１ページのデータを、元の領域に書き戻してもよいし、他の領域に書き戻してもよい。例えば、アクセス処理部６４は、第１アクセス処理において、不揮発メモリ１６から第１メモリ１４に転送された第１ページのデータを、何れの要求アドレスも対応付けられていない未使用領域に書き戻してよい。これにより、アクセス処理部６４は、ページ領域毎の書き換え回数の隔たりを小さくし、特定のページ領域の品質劣化を抑制することができる。
【００７９】
また、アクセス処理部６４は、第２アクセス処理に設定されている第２ページに対して書き込みまたは読み出しの要求を受けた場合、不揮発メモリ１６に対して、第２アクセス処理を実行する。
【００８０】
例えば、図１１に示すように、第２アクセス処理において、アクセス処理部６４は、不揮発メモリ１６における第２ページのデータに対して、直接読み出しおよび書き込みをする。例えば、アクセス処理部６４は、ページ領域より小さいサイズでデータの読み出しおよび書き込みをする。
【００８１】
このように、アクセス処理部６４は、２種類のアクセス方法により不揮発メモリ１６に対してアクセスする。例えば、メモリアクセスに局所性が高いアプリケーションを実行した場合、アクセス処理部６４は、第１アクセス処理によりページにアクセスする。これにより、アクセス処理部６４は、メモリアクセスに局所性が高いアプリケーションを実行した場合、より高速に処理をすることができる。
【００８２】
また、例えば、ランダムアクセスのようにメモリアクセスに局所性が低い処理を実行する場合、アクセス処理部６４は、第２アクセス処理によりページにアクセスする。これにより、アクセス処理部６４は、局所性が低い処理を実行する場合、不揮発メモリ１６から第１メモリ１４への転送処理のオーバヘッドを無くして、効率良く処理をすることができる。このように、アクセス処理部６４は、第１アクセス処理および第２アクセス処理の２種類のアクセス方法を用いることにより、処理の効率化を図ることができる。
【００８３】
図１２は、第３実施形態において、マッピング情報を更新する場合のファイルシステム管理部３４の処理の流れを示すフローチャートである。第３実施形態において、ファイルシステム管理部３４は、例えば、図１２に示す処理を実行してマッピング情報を生成または更新する。
【００８４】
まず、Ｓ４１において、ファイルシステム管理部３４は、所定の更新タイミングとなったか否かを判断する。例えば、ファイルシステム管理部３４は、ファイルをオープンするタイミング、または、ファイルに含まれる複数のページを仮想記憶装置の仮想アドレスに割り当てるタイミングにおいて、更新タイミングになったと判断する。また、ファイルシステム管理部３４は、ファイルがオープンしてから一定期間経過した後、または、一定期間毎に所定の更新タイミングとなったと判断してもよい。ファイルシステム管理部３４は、所定の更新タイミングとなった場合（Ｓ４１のＹｅｓ）、ファイルシステム管理部３４は、処理をＳ４２に進め、所定の更新タイミングとなっていない場合（Ｓ４１のＮｏ）、処理をＳ４１で待機する。
【００８５】
Ｓ４２において、ファイルシステム管理部３４は、管理装置５２の設定記憶部６２に記憶された変換テーブルにアクセスして、対象のファイルに含まれる複数のページについてのアクセス方法を読み出す。
【００８６】
続いて、Ｓ４３において、ファイルシステム管理部３４は、読み出したアクセス方法に基づき、ファイルに含まれる複数のページのそれぞれに対するメモリアクセス方法を決定する。具体的には、ファイルシステム管理部３４は、ファイルに含まれる複数のページのそれぞれについて、設定記憶部６２の変換テーブルにおける対応するページにおけるアクセス方法に第１アクセス処理が設定されている場合、コピーアクセス処理を割り当てる。また、ファイルシステム管理部３４は、ファイルに含まれる複数のページのそれぞれについて、設定記憶部６２の変換テーブルにおける対応するページにおけるアクセス方法に第２アクセス処理が設定されている場合、ダイレクトアクセス処理を割り当てる。
【００８７】
続いて、Ｓ４４において、ファイルシステム管理部３４は、複数のページのそれぞれに対して割り当てたメモリアクセス方法に応じてマッピング情報を生成または更新する。ファイルシステム管理部３４は、Ｓ４４の処理を終えると、本フローを終了する。
【００８８】
このように、ファイルシステム管理部３４は、管理装置５２によるアクセス方法に応じて、複数のページのそれぞれに対してメモリアクセス方法を割り当てる。これにより、ファイルシステム管理部３４は、管理装置５２によるアクセス方法と同期したメモリアクセス方法でファイルにアクセスすることができる。
【００８９】
以上のように、本実施形態に係る情報処理装置１０は、ファイルに含まれる複数のページのそれぞれについて、管理装置５２によるアクセス方法に応じて、コピーアクセス処理かダイレクトアクセス処理かを設定することができる。これにより、本実施形態に係る情報処理装置１０によれば、管理装置５２と連携して効率良くアクセスさせるとともに、不揮発メモリ１６の寿命を延ばすことができる。
【００９０】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９１】
１０  情報処理装置
１２  プロセッサ
１４  第１メモリ
１６  不揮発メモリ
２２  オペレーティングシステム部
２４  アプリケーション部
３４  ファイルシステム管理部
３６  アクセス管理部
３８  インターフェース部
４０  パフォーマンス収集装置
５０  処理回路
５２  管理装置
６２  設定記憶部
６４  アクセス処理部
６６  カウンタ記憶部
６８  ウェアレベリング実行部
７０  テーブル管理部
【図１】
2020042627.tif 000003
【図２】
2020042627.tif 000004
【図３】
2020042627.tif 000005
【図４】
2020042627.tif 000006
【図５】
2020042627.tif 000007
【図６】
2020042627.tif 000008
【図７】
2020042627.tif 000009
【図８】
2020042627.tif 000010
【図９】
2020042627.tif 000011
【図１０】
2020042627.tif 000012
【図１１】
2020042627.tif 000013
【図１２】
2020042627.tif 000014