(57)【要約】【課題】書込処理を高速化する情報処理装置を提供する。【解決手段】ページキャッシュ２２は、書込単位が第１サイズである。ブロックストレージデバイス４は、書込単位が第１サイズよりも大きい第２サイズである。ページ管理部３０２は、ブロックストレージデバイス４に対する第１サイズの書込データの書込指示を受信し、ブロックストレージデバイス４における書込データを書き込む第２サイズの所定領域に対応する第２サイズの第１領域をページキャッシュ２２に作成し、書込指示を受信したタイミングと異なるタイミングで、ブロックストレージデバイス４の所定領域に格納された格納データを読み出し、第１領域に書き込まれた書込データで格納データを更新しブロックストレージデバイス４の所定領域に格納する。メモリアクセス制御部１０１は、ページキャッシュ２２におけるページ管理部３０２により作成された第１領域に書込データを書き込む。【選択図】図３
2020140626.tif 000002
【特許請求の範囲】
【請求項１】
書込単位が第１サイズである第１記憶部と、
書込単位が前記第１サイズよりも大きい第２サイズである第２記憶部と、
前記第２記憶部に対する前記第１サイズの書込データの書込指示を受信し、前記第２記憶部における前記書込データを書き込む前記第２サイズの所定領域に対応する前記第２サイズの第１領域を前記第１記憶部に作成し、前記書込指示を受信したタイミングと異なるタイミングで、前記第２記憶部の前記所定領域に格納された格納データを読み出し、前記第１領域に書き込まれた前記書込データで前記格納データを更新し、更新された前記格納データを前記第２記憶部の前記所定領域に格納する更新管理部と
前記第１記憶部における前記更新管理部により作成された前記第１領域に前記書込データを書き込む書込部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記書込部により前記書込データが書き込まれた前記第１領域における書込位置を示す書込位置情報を生成する書込制御部をさらに備え、
前記更新管理部は、前記書込位置情報を基に前記格納データにおける前記書込データを書き込む位置を決定して前記格納データを更新する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
データの書き込み先を示す書込先情報に対応する前記第１記憶部の位置情報を保持する一時保持部をさらに備え、
前記書込部は、前記書込指示に含まれる特定書込先情報に対応する特定位置情報を前記一時保持部が保持する場合、前記一時保持部から前記特定位置情報を取得し、取得した前記特定位置情報を基に前記書込データを前記第１記憶部に書き込み、前記特定位置情報を前記一時保持部から削除し、前記特定位置情報を前記一時保持部が保持しない場合、前記更新管理部に前記第１領域を作成させ、
前記書込制御部は、前記更新管理部により前記第１領域が作成された場合、前記書込位置を前記特定位置情報として前記一時保持部に保持させ、前記書込部に前記書込指示を再度処理させる
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記更新管理部は、前記第１領域に含まれる前記第１サイズの個別領域に特定の初期値を書き込み、前記個別領域のうち前記特定の初期値以外の値が格納された領域を、前記書込部により前記第１領域に書き込みデータが書き込まれた領域として抽出して、前記格納データを更新することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
書込単位が第１サイズである第１記憶装置及び書込単位が前記第１サイズよりも大きい第２サイズである第２記憶装置を有する情報処理装置における情報処理方法であって、
前記第２記憶装置に対する前記第１サイズの書込データの書込指示を受信し、前記第２記憶装置における前記書込データを書き込む前記第２サイズの所定領域に対応する前記第２サイズの第１領域を前記第１記憶装置に作成し、
前記第１記憶装置における前記第１領域に前記書込データを書き込み、
前記書込指示を受信したタイミングと異なるタイミングで、前記第２記憶装置の前記所定領域に格納された格納データを読み出し、前記第１領域に書き込まれた前記書込データで前記格納データを更新し、更新された前記格納データを前記第２記憶装置の前記所定領域に格納する
ことを特徴とする情報処理方法。
【請求項６】
書込単位が第１サイズである第１記憶装置及び書込単位が前記第１サイズよりも大きい第２サイズである第２記憶装置を有する情報処理装置を制御する情報処理プログラムであって、
前記第２記憶装置に対する前記第１サイズの書込データの書込指示を受信し、前記第２記憶装置における前記書込データを書き込む前記第２サイズの所定領域に対応する前記第２サイズの第１領域を前記第１記憶装置に作成し、
前記第１記憶装置における前記第１領域に前記書込データを書き込み、
前記書込指示を受信したタイミングと異なるタイミングで、前記第２記憶装置の前記所定領域に格納された格納データを読み出し、前記第１領域に書き込まれた前記書込データで前記格納データを更新し、更新された前記格納データを前記第２記憶装置の前記所定領域に格納する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【０００２】
ＨＤＤ（Hard  Disk  Drive）及びＳＳＤ（Solid  State  Drive）といったブロックストレージデバイスの高速化に伴い、ブロックストレージデバイスを用いてメモリ容量を拡張するメモリマップドファイルと呼ばれる技術の利用が一般的になってきている。メモリマップドファイルでは、ブロックストレージデバイスに格納されたファイルがアプリケーションの仮想アドレス空間にマッピングされことでメモリ容量が拡張される。
【０００３】
メモリマップドファイルを用いない場合、アプリケーションは、リード及びライトシステムコールを用いてブロックストレージデバイスに格納されたファイルにアクセスする。これに対して、メモリマップドファイルでは、アプリケーションは、ブロックストレージデバイスに格納されたファイル内のデータにロード及びストア命令でアクセスすることができる。アクセスされたページは、ＤＲＡＭ（Dynamic  Random  Access  Memory）などのメモリ上のページキャッシュに一時保存される。こうしたメモリマップドファイルは、アプリケーションに大幅な修正を加えることなくファイルに格納されたデータにアクセスできる。
【０００４】
さらに、メモリマップドファイルを用いた場合、データは不揮発性の記憶媒体であるブロックストレージデバイスに格納されるため、データの永続化が可能となる。ここでは、メモリマップドファイルにより仮想アドレス空間にマッピングされたブロックストレージデバイス内のファイルに対する書込処理を、メモリマップド領域に対する書込処理と言う。メモリマップド領域に対する書込処理において、ブロックストレージデバイスとメモリとの間のデータの読み出し及び書き込みは、ＰＦＨ（ページフォルトハンドラ：Page  Fault  Handler）により行われる。
【０００５】
メモリマップド領域に対する書込処理では、書き込み対象のページがメモリ上のページキャッシュに存在する場合、ＣＰＵ（Central  Processing  Unit）は、ページキャッシュ上の書き込み対象のページに直接データを書き込む。すなわち、書き込み対象のページがメモリ上のページキャッシュに存在する場合には、データに対する高速なアクセスが可能である。
【０００６】
これに対して、ページキャッシュに書き込み対象のページが存在しない場合、ＣＰＵは、対象とするページに対するリードモディファイライト（ＲＭＷ：Read  Modify  Write）を行う。具体的には、ページキャッシュに書き込み対象のページが存在しない場合、ページフォルトが発生する。ページフォルトが発生すると、ＣＰＵからの指示を受けてＰＦＨが、ブロックストレージデバイスから対象とするページを読み出して、ページキャッシュへ格納する。この処理がリード処理にあたる。このブロックストレージデバイスからのページの読み出しは、ＣＰＵによるデータの書き込み処理に対して同期的に行われる。次に、ＣＰＵは、ページキャッシュに格納された対象のページに対してデータの書き込みを行う。この処理が、モディファイ処理にあたる。その後、ＰＦＨは、更新したページをブロックストレージデバイスに非同期で追い出す。例えば、ＰＦＨは、ページキャッシュに格納された更新ページの容量が閾値を超えるなどの予め決められた条件を満たす場合に、ページキャッシュからデータを読み出してブロックストレージデバイスに格納して、ページキャッシュ内から読み出したデータを削除する。
【０００７】
ここで、ＣＰＵは、キャッシュライン単位でページキャッシュに対してデータの読み書きを行う。例えば、ＣＰＵは、６４Ｂｙｔｅ単位でページキャッシュに対するデータの読み書きを行う。これに対して、ＰＦＨによるデータの読み書きは、ＯＳとブロックストレージデバイスとの間でのデータの取り扱い単位に依存する。例えば、ＰＦＨは、４ＫＢｙｔｅでページキャッシュに対するデータの読み書きを行う。そのため、ブロックストレージデバイスに格納されたページに対してリードモディファイライトを行う場合、ブロックストレージデバイスとページキャッシュとの間におけるデータの移行は、キャッシュライン単位よりも大きいＰＦＨの処理単位で行われる。
【０００８】
メモリマップドファイルの技術として、ＰＦＨによる物理メモリの確保及びページテーブル更新の処理とブロックストレージデバイスの入出力処理とをオーバラップさせて実行する従来技術がある。また、初回ページフォルト時にファイル内の全てのデータをメモリにキャッシングする従来技術がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−１８８４９９号公報
【特許文献２】特開平１１−１６１５２７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、リードモディファイライトでは、データの書き込みと同期してページの読み出しが行われるため、少なくともＤＲＡＭの書き込みレイテンシにブロックストレージデバイスの読み出しレイテンシが追加される。そして、上述したように、ブロックストレージデバイスとページキャッシュとの間のデータのやり取りはキャッシュライン単位よりも大きい処理単位で行われる。そのため、リードモディファイライト時のレイテンシは、ページキャッシュへの単なるデータの書き込みと比較して大きくなる。例えば、ＤＲＡＭへのデータの書き込みレイテンシが約１００ｎｓであり、ブロックストレージデバイスからのデータの読み出しレイテンシが約１０μｓの場合、１００倍以上のレイテンシの増加が見込まれる。
【００１１】
特に、高頻度なランダム書き込みを行うアプリケーションでは、ファイルシステムの先読みが機能せず、ページキャッシュに存在しないページへの高頻度な書き込みが発生する可能性がある。そのため、高頻度なランダム書き込みを行うアプリケーションでは、リードモディファイライトによるレイテンシの増加の影響が大きく、性能が大幅に低下するおそれがある。
【００１２】
また、ＰＦＨの処理とブロックストレージデバイスの入出力処理とをオーバラップさせて実行する従来技術では、リードモディファイライト時のレイテンシの増加を抑えることは困難である。また、初回ページフォルト時にファイル内の全データをメモリにキャッシングする従来技術では、メモリにデータが載り切らないおそれがあり、書込処理を高速化することは困難である。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、書込処理を高速化する情報処理装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの一つの態様において、第１記憶部は、書込単位が第１サイズである。第２記憶部は、書込単位が前記第１サイズよりも大きい第２サイズである。更新管理部は、前記第２記憶部に対する前記第１サイズの書込データの書込指示を受信し、前記第２記憶部における前記書込データを書き込む前記第２サイズの所定領域に対応する前記第２サイズの第１領域を前記第１記憶部に作成する。また、更新管理部は、前記書込指示を受信したタイミングと異なるタイミングで、前記第２記憶部の前記所定領域に格納された格納データを読み出す。また、更新管理部は、前記第１領域に書き込まれた前記書込データで前記格納データを更新し、更新された前記格納データを前記第２記憶部の前記所定領域に格納する。書込部は、前記第１記憶部における前記更新管理部により作成された前記第１領域に前記書込データを書き込む。
【発明の効果】
【００１５】
１つの側面では、本発明は、書込処理を高速化することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施例１に係る情報処理装置のハードウェア構成図である。
【図２】図２は、ページテーブルに格納される情報の一例を表す図である。
【図３】図３は、実施例１に係る情報処理装置のデータ書き込み時の機能を表すブロック図である。
【図４】図４は、データ書込時のページフォルトが発生した場合のページキャッシュ及びブロックストレージデバイスの状態を表す図である。
【図５】図５は、ページ追出時のページキャッシュ及びブロックストレージデバイスの状態を表す図である。
【図６】図６は、実施例１に係る情報処理装置によるメモリアクセス処理のフローチャートである。
【図７】図７は、ＭＭＵによるページ探索処理のフローチャートである。
【図８】図８は、実施例１に係るページフォルト発生時のページ制御処理のフローチャートである。
【図９】図９は、実施例１に係るページの追出処理のフローチャートである。
【図１０】図１０は、実施例２に係る情報処理装置のハードウェア構成図である。
【図１１】図１１は、ＩＶＡＴに格納される情報の一例を表す図である。
【図１２】図１２は、実施例２に係る情報処理装置のブロック図である。
【図１３】図１３は、実施例２に係るメモリコントローラによるメモリアクセス処理のフローチャートである。
【図１４】図１４は、実施例２に係るページフォルト発生時のページ制御処理のフローチャートである。
【図１５】図１５は、実施例２に係るページの追出処理のフローチャートである。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。
【実施例１】
【００１８】
図１は、実施例１に係る情報処理装置のハードウェア構成図である。情報処理装置１００は、図１に示すように、ＣＰＵ（Central  Processing  Unit）１、ＤＲＡＭ２、ページフォルトハンドラ３及びブロックストレージデバイス４を有する。
【００１９】
ブロックストレージデバイス４は、例えば、ハードディスクやＳＳＤなどである。ここで、情報処理装置１００は、ブロックストレージデバイス４に格納されたファイルであって仮想アドレス空間にマッピングされたメモリマップドファイルを有する。以下では、ブロックストレージデバイス４におけるメモリマップドファイルが格納された領域をメモリマップド領域と言う。ブロックストレージデバイス４は、ページ単位でデータの読み出し及び書き込みが行われる。このブロックストレージデバイス４が、「第２記憶部」の一例にあたる。
【００２０】
ＣＰＵ１は、ＴＬＢ（Translation  Lookaside  Buffer）１１及びＭＭＵ（Memory  Management  Unit）１２が搭載される。ＴＬＢ１１は、仮想アドレスと物理アドレスとの間の変換を行うためのアドレス変換情報を一時的に保存するためのキャッシュである。すなわち、ＴＬＢ１１には、読出命令又は書込命令のメモリアクセス要求で指定された仮想アドレスとＤＲＡＭ２における物理アドレスとを対応付ける情報がＣＰＵ１により格納される。
【００２１】
ＣＰＵ１は、データの読出命令又は書込命令であるメモリアクセス要求を受けた場合、メモリアクセス要求で指定された仮想アドレスを用いてＴＬＢ１１を検索する。ＴＬＢ１１にアドレス変換情報が存在する場合、すなわち、ＴＬＢ１１でヒットした場合、ＣＰＵ１は、メモリアクセス要求で指定された仮想アドレスに対応する物理アドレスをＴＬＢ１１から取得する。その後、ＣＰＵ１は、取得した物理アドレスを用いてＤＲＡＭ２に対してメモリアクセスを行う。
【００２２】
これに対して、ＴＬＢ１１にアクセス要求で指定された仮想アドレスに対応するアドレス変換情報が存在しない場合、ＣＰＵ１は、仮想アドレスをＭＭＵ１２へ出力してページテーブル２１の探索を実行させる。仮想アドレスで指定されたアドレス変換情報がページテーブル２１に格納されていれば、メモリアクセス要求で指定された仮想アドレスに対応するアドレス変換情報がＭＭＵ１２によりＴＬＢ１１に格納される。そこで、ＣＰＵ１は、ＴＬＢ１１から物理アドレスを取得する。その後、ＣＰＵ１は、取得した物理アドレスを用いてＤＲＡＭ２に対してメモリアクセスを行う。
【００２３】
これに対して、ページテーブル２１に仮想アドレスで指定されたアドレス変換情報が存在しない場合はページフォルトが発生し、ＣＰＵ１は、ページフォルトハンドラ３に仮想アドレスを通知する。その後、ＣＰＵ１は、ＭＭＵ１２にページテーブル探索を実行させてＴＬＢ１１から物理アドレスを取得し、取得した物理アドレスを用いてＤＲＡＭ２に対してメモリアクセスを行う。
【００２４】
ＭＭＵ１２は、仮想アドレスと物理アドレスとの変換などを行う専用のハードウェアである。ＭＭＵ１２は、ＴＬＢ１１にアドレス変換情報が格納されていない場合に、ページテーブル２１を用いて仮想アドレスに対応する物理アドレスを取得する。
【００２５】
ＤＲＡＭ２は、ページテーブル２１及びページキャッシュ２２を有する。ページテーブル２１は、仮想アドレスと物理アドレスとを対応づけるデータ構造である。本実施例に係るページテーブル２１は、図２に示す情報を保持する。図２は、ページテーブルに格納される情報の一例を表す図である。ページテーブル２１は、ページテーブルエントリ（ＰＴＥ：Page  Table  Entry）２１１及び更新状態情報２１２を有する。
【００２６】
ページテーブルエントリ２１１は、ＤＲＡＭ２におけるページ情報を格納する要素である。ページ情報には、物理アドレスやアクセス権限などが含まれる。また、本実施例に係るページテーブルエントリ２１１は、そのページがメモリマップド領域に存在するか否かを表すメモリマップドビット２１３を有する。また、ページテーブルエントリ２１１は、対応するページが書き込み可能か否かを示すＲ／Ｗビット２１４及びページキャッシュ２２上に存在するか否かを示すプレゼンスビット２１５を有する。さらに、ページテーブルエントリ２１１は、そのページに対して書き込みが行われたか否かを判定するダーティビット２１６を有する。
【００２７】
また、更新状態情報２１２は、ページ毎にそのページに含まれる各キャッシュラインに対応したビットマップを有する。例えば、１つのページのサイズが４ＫＢｙｔｅであり、キャッシュラインのサイズが６４Ｂｙｔｅであれば、更新状態情報２１２は、ページ毎に６４ビットのビットマップを有する。そして、更新状態情報２１２は、後述するように、ビットマップに含まれる特定のビットの値が１であれば、その特定のビットに対応するキャッシュラインが更新されたことを表す。逆に、更新状態情報２１２は、ビットマップに含まれる特定のビットの値が０であれば、その特定のビットに対応するキャッシュラインが更新されていないことを表す。
【００２８】
ページキャッシュ２２には、ブロックストレージデバイス４に格納されたメモリマップドファイルが一時的に保存される。ブロックストレージデバイス４に格納されたメモリマップドファイルのデータは、ページキャッシュ２２に格納された上でＣＰＵ１に取得される。
【００２９】
ページキャッシュ２２は、キャッシュライン単位でのデータの読み出し及び書き込みがＣＰＵ１により行われる。また、ページキャッシュ２２は、ブロックストレージデバイス４におけるデータの処理単位に合わせてページ単位でのデータの読み出し及び書き込みがページフォルトハンドラ３により行われる。ページは、例えば１ページが４ＫＢｙｔｅである。また、ページは複数のキャッシュラインを含み、１つのキャッシュラインは、例えば６４Ｂｙｔｅである。すなわち、ページキャッシュ２２は、ＣＰＵ１とページフォルトハンドラ３とで異なる単位でのアクセスが行われる。このページキャッシュ２２が、「第１記憶部」の一例にあたる。
【００３０】
ページフォルトハンドラ３は、ブロックストレージデバイス４に格納されたメモリマップドファイルに対する読み出し及び書き込みを行う。例えば、読み出し命令で指定されたデータがページキャッシュ２２に存在しない場合、ページフォルトハンドラ３は、ＣＰＵ１から対象とするデータの読み出し命令を受けて、ブロックストレージデバイス４から対象とするデータを読み出す。そして、ページフォルトハンドラ３は、読み出したデータをページキャッシュ２２へ格納する。その後、ページフォルトハンドラ３は、ＣＰＵ１へデータの読み出しを通知する。
【００３１】
次に、図３を参照して、本実施例に係る情報処理装置１００におけるメモリアクセス要求を処理する機能について詳細に説明する。図３は、実施例１に係る情報処理装置のデータ書き込み時の機能を表すブロック図である。
【００３２】
ＣＰＵ１は、メモリアクセス制御部１０１及びＴＬＢエントリ無効化部１０２を有する。また、ＭＭＵ１２は、ＰＴＥ登録部１２１、ページテーブル管理部１２２及びビットマップ更新部１２３を有する。
【００３３】
メモリアクセス制御部１０１は、ＣＰＵ１が実行するアプリケーションから発行されたメモリアクセス要求を取得する。以下では、メモリアクセス要求で読み出し又は書き込みの対象として指定されたデータを「対象データ」と呼び、その対象データを含むページを「対象ページ」と呼ぶ。書込命令であるメモリアクセス要求が、「書込指示」の一例にあたる。
【００３４】
次に、メモリアクセス制御部１０１は、メモリアクセス要求で指定された対象データを示す仮想アドレスに対応するアドレス変換情報がＴＬＢ１１に存在するか否かを判定する。このＴＬＢ１１が、「一時保持部」の一例にあたる。そして、仮想アドレスが「書込先情報」の一例にあたり、アドレス変換情報が、「位置情報」の一例にあたる。
【００３５】
仮想アドレスがＴＬＢ１１でヒットした場合、メモリアクセス制御部１０１は、メモリアクセス要求で指定された仮想アドレスに対応する物理アドレスをＴＬＢ１１１から取得する。次に、メモリアクセス制御部１０１は、対象ページの情報をＴＬＢエントリ無効化部１０２へ出力する。
【００３６】
その後、メモリアクセス制御部１０１は、ＴＬＢ１１から取得した物理アドレスを用いてメモリアクセス要求に応じたＤＲＡＭ２に対する対象データの読み出し又は書き込みを実行する。メモリアクセス制御部１０１は、例えば、ページキャッシュ２２におけるキャッシュラインのサイズである６４Ｂｙｔｅの単位で、ページキャッシュ２２に対するデータの読み出し及び書き込みを行う。この、メモリアクセス制御部１０１によるページキャッシュ２２に対するデータの処理単位が「第１サイズ」の一例にあたる。
【００３７】
ここで、対象ページが書き込み可能であり且つメモリマップド領域に含まれるページであれば、対象ページのＴＬＢ１１のエントリは削除される。そこで、そのページに対する次のアクセス要求時には、メモリアクセス制御部１０１は、ＭＭＵ１２のページテーブル管理部１２２にページテーブル探索を依頼することになる。
【００３８】
一方、仮想アドレスがＴＬＢ１１でミスした場合、メモリアクセス制御部１０１は、ＭＭＵ１２のページテーブル管理部１２２にページテーブル探索を依頼する。
【００３９】
その後、メモリアクセス制御部１０１は、ページフォルトの通知又はアクセス要求の再処理の依頼をページテーブル管理部１２２から受ける。ページフォルトの通知を受けた場合、メモリアクセス制御部１０１は、メモリアクセス要求で指定された対象ページのブロックストレージデバイス４からの取得を状態管理部３０１に指示する。その後、メモリアクセス制御部１０１は、ページテーブルエントリ２１１の登録完了の通知を状態管理部３０１から受ける。そして、メモリアクセス制御部１０１は、ＴＬＢ１１の検索を行う。この場合、ＴＬＢ１１には対象データのアドレス変換情報は、未だ格納されていない。そこで、メモリアクセス制御部１０１は、ページテーブル管理部１２２にページテーブル探索を再度行わせ、ＴＬＢ１１に対象ページのアドレス変換情報を格納する。
【００４０】
ここで、ＴＬＢ１１に対象データを示す仮想アドレスのアドレス変換情報が格納されているので、メモリアクセス制御部１０１は、ＴＬＢ１１から仮想アドレスに対応する物理アドレスを取得する。その後、メモリアクセス制御部１０１は、メモリアクセス要求で指定された対象データの情報をＴＬＢエントリ無効化部１０２に出力する。その後、メモリアクセス制御部１０１は、ＴＬＢ１１から取得した物理アドレスを用いてメモリアクセス要求に応じたＤＲＡＭ２に対するデータの読み出し又は書き込みを実行する。このメモリアクセス制御部１０１が、「書込部」の一例にあたる。
【００４１】
ＴＬＢエントリ無効化部１０２は、メモリアクセス要求で指定された対象データの情報の入力をメモリアクセス制御部１０１から受ける。次に、ＴＬＢエントリ無効化部１０２は、ページテーブル２１におけるメモリアクセス要求で指定された対象ページのページテーブルエントリ２１１を確認する。そして、ＴＬＢエントリ無効化部１０２は、ページテーブルエントリ２１１におけるＲ／Ｗビット２１４及びメモリマップドビット２１３の値を取得する。Ｒ／Ｗビット２１４が１であり、且つ、メモリマップドビット２１３が１の場合、ＴＬＢエントリ無効化部１０２は、ＴＬＢ１１における対象データの仮想アドレスに対応するアドレス変換情報を削除して、ＴＬＢ１１の対象データのエントリを無効化する。
【００４２】
ここで、Ｒ／Ｗビット２１４が１である場合、そのページへの書き込みが可能であることを表す。また、メモリマップドビット２１３が１である場合、そのページがメモリマップド領域のページであることを表す。すなわち、ＴＬＢエントリ無効化部１０２は、対象ページがメモリマップド領域に存在するページであり且つ書き込みが可能なページであれば、次のそのページに対するメモリアクセス要求の際に、ＴＬＢ１１でミスするように設定する。これにより、次のそのページに対するメモリアクセス要求時に、ＭＭＵ１２ページテーブル探索が実行される。逆に、そのページが書き込み不可である場合やメモリマップド領域にない場合であれば、ページフォルトハンドラ３による非同期書込処理の対象にならないので、ＴＬＢエントリ無効化部１０２は、ＴＬＢ１１のエントリをそのまま維持する。
【００４３】
次に、ＭＭＵ１２の機能について説明する。ページテーブル管理部１２２は、ページテーブル探索要求の入力をメモリアクセス制御部１０１から受ける。ページテーブル探索要求には、アクセスする対象データの仮想アドレスが含まれる。
【００４４】
ページテーブル管理部１２２は、ページテーブル探索要求に含まれる仮想アドレスを用いてページテーブル２１の探索を行う。ページテーブル２１にデータアクセス要求で指定された対象ページのページテーブルエントリ２１１が存在しない場合、ページテーブル管理部１２２は、ページフォルトをメモリアクセス制御部１０１に通知してページフォルトを発生させる。
【００４５】
これに対して、ページテーブル２１にデータアクセス要求で指定された対象ページのページテーブルエントリ２１１が存在する場合、ページテーブル管理部１２２は、対象ページのアクセス権限をチェックする。アクセス権限が不適格な場合、ページテーブル管理部１２２は、ページフォルトをメモリアクセス制御部１０１に通知してページフォルトを発生させる。
【００４６】
これに対して、アクセス権限が適格な場合、ページテーブル管理部１２２は、ページテーブル２１における対象ページのページテーブルエントリ２１１のプレゼンスビット２１５を確認する。プレゼンスビット２１５が０であり、対象ページがページキャッシュ２２に存在しない場合、ページテーブル管理部１２２は、ページフォルトをメモリアクセス制御部１０１に通知してページフォルトを発生させる。
【００４７】
これに対して、プレゼンスビット２１５が１であり、対象ページがページキャッシュ２２に存在する場合、ページテーブル管理部１２２は、データアクセス要求が書込命令か読出命令かを判定する。データアクセス要求が読出命令の場合、ページテーブル管理部１２２は、対象ページのページテーブルエントリ２１１を用いてアドレス変換情報を取得する。そして、ページテーブル管理部１２２は、対象ページの仮想アドレスをＰＴＥ登録部１２１へ出力して、ＴＬＢ１１への対象ページのアドレス変換情報の格納を依頼する。その後、ページテーブル管理部１２２は、アクセス要求の再処理の依頼をメモリアクセス制御部１０１へ出力する。
【００４８】
これに対して、データアクセス要求が書込命令の場合、ページテーブル管理部１２２は、更新状態情報２１２の更新依頼をビットマップ更新部１２３へ出力する。その後、ページテーブル管理部１２２は、対象ページのページテーブルエントリ２１１を用いてアドレス変換情報を取得する。そして、ページテーブル管理部１２２は、対象ページの仮想アドレスをＰＴＥ登録部１２１へ出力して、ＴＬＢ１１への対象ページのアドレス変換情報の格納を依頼する。その後、ページテーブル管理部１２２は、アクセス要求の再処理の依頼をメモリアクセス制御部１０１へ出力する。このページテーブル管理部１２２が、「書込制御部」の一例にあたる。
【００４９】
ビットマップ更新部１２３は、更新状態情報２１２の更新依頼の入力をページテーブル管理部１２２から受ける。そして、ビットマップ更新部１２３は、対象ページのページテーブルエントリ２１１に対応する更新状態情報２１２に対して対象ページにおける書込データの位置のビットを１に設定する。
【００５０】
ＰＴＥ登録部１２１は、対象ページの仮想アドレスの入力とともに、ＴＬＢ１１への対象ページのアドレス変換情報の格納の依頼をページテーブル管理部１２２から受ける。そして、ＰＴＥ登録部１２１は、取得した仮想アドレスと物理アドレスとのアドレス変換情報をＴＬＢ１１に登録する。これにより、対象ページに対するアクセス要求の再度の処理の依頼を受けたメモリアクセス制御部１０１がアクセス要求にしたがいＴＬＢ１１を検索することでＴＬＢ１１がヒットすることになり、アクセス要求が処理される。
【００５１】
次に、ページフォルトハンドラ３の機能について説明する。ページフォルトハンドラ３は、状態管理部３０１及びページ管理部３０２を有する。
【００５２】
状態管理部３０１は、ページフォルトが発生すると、メモリアクセス要求で指定された対象データのブロックストレージデバイス４からの取得の依頼をメモリアクセス制御部１０１から受ける。この際、状態管理部３０１は、メモリアクセス要求で指定された仮想アドレスを取得する。
【００５３】
次に、状態管理部３０１は、取得した仮想アドレスがアクセス要求を出力したプロセスに割り当てられた仮想メモリ空間内に含まれるか否かを確認する。仮想アドレスがアクセス要求を出力したプロセスに割り当てられた仮想メモリ空間内に含まれない場合、状態管理部３０１は、エラー応答をメモリアクセス制御部１０１へ出力する。
【００５４】
これに対して、仮想アドレスがアクセス要求を出力したプロセスに割り当てられた仮想メモリ空間内に含まれる場合、状態管理部３０１は、仮想メモリ空間の書き込みフラグを参照して書き込み可能領域か否かを判定する。書き込み可能でない領域に対して書き込み要求がなされた場合、状態管理部３０１は、エラー応答をメモリアクセス制御部１０１へ出力する。
【００５５】
この後、状態管理部３０１は、ページキャッシュ２２の探索をページ管理部３０２に依頼する。その後、ページキャッシュ２２に対象ページが存在する場合、状態管理部３０１は、ページキャッシュ２２でのヒットの通知をページ管理部３０２から受ける。この状態でのページキャッシュ２２に対象ページが存在する場合とは、メモリアクセス要求を発行したプロセス以外の他のプロセスによって割り当てられた物理ページにアクセスする場合である。この場合、対象ページの全てのデータがブロックストレージデバイス４から読み出されて正しいデータがページキャッシュ２２に存在するといえる。そこで、状態管理部３０１は、ページテーブル２１における対象ページを表すページテーブルエントリ２１１の更新状態情報２１２の全てのビットを１で初期化する。これにより、対象ページの全てのキャッシュラインが更新された状態となる。その後、状態管理部３０１は、ページテーブルエントリ２１１の登録完了の通知をメモリアクセス制御部１０１へ送信する。
【００５６】
一方、ページキャッシュ２２に対象ページが存在しない場合、状態管理部３０１は、空ページ割り当ての通知又は対象ページのページキャッシュ２２への格納完了の通知をページ管理部３０２から受ける。空ページ割り当ての通知を受けた場合は、ページキャッシュ２２に対象ページに対応する空のページが生成された場合といえる。そこで、状態管理部３０１は、ページテーブル２１における対象ページを表すページテーブルエントリ２１１の更新状態情報２１２の全てのビットを０で初期化する。これにより、対象ページの全てのキャッシュラインが未更新の状態となる。その後、状態管理部３０１は、ページテーブルエントリ２１１の登録完了の通知をメモリアクセス制御部１０１へ送信する。
【００５７】
これに対して、対象ページのページキャッシュ２２への格納完了の通知を受けた場合、対象ページの全てのデータがブロックストレージデバイス４から読み出されて正しいデータがページキャッシュ２２に存在する場合である。そこで、状態管理部３０１は、ページテーブル２１における対象ページを表すページテーブルエントリ２１１の更新状態情報２１２の全てのビットを１で初期化する。これにより、対象ページの全てのキャッシュラインが更新された状態となる。その後、状態管理部３０１は、ページテーブルエントリ２１１の登録完了の通知をメモリアクセス制御部１０１へ送信する。
【００５８】
また、状態管理部３０１は、ページキャッシュ２２に格納された更新ページが予め決められた閾値を超えた場合、ＬＲＵ（Least  Recently  Used）を基にページキャッシュ２２から追出対象ページを決定する。ここで、本実施例では、閾値を超過した場合をページキャッシュ２２からのページ追出処理の開始条件としたが、この条件はページキャッシュ２２に格納された更新ページの量を適切に調整できれば他の条件を使用してもよく、例えば、一定周期でページ追出処理を行ってもよい。また、本実施例では、追出対象ページをＬＲＵに基づき決定したが、他のアルゴリズムを用いて追出対象ページを決定してもよい。例えば、各ページの使用頻度にしたがって追出対象ページを決定してもよい。このページキャッシュ２２からのページの追出処理のタイミングが、「書込指示を受信したタイミングと異なるタイミング」の一例にあたる。
【００５９】
次に、状態管理部３０１は、追出対象ページのページテーブルエントリ２１１におけるダーティビット２１６を確認する。追出対象ページのダーティビット２１６が０であり書き込みが行われていないページであれば、状態管理部３０は、その追出対象ページのページテーブルエントリ２１１のプレゼンスビット２１５を０に設定する。すなわち、状態管理部３０は、その追出対象ページがメモリ（ＤＲＡＭ２）上に格納されていないことを示す。その後、状態管理部３０１は、その追出対象ページのページキャッシュ２２からの削除依頼をページ管理部３０２へ出力する。
【００６０】
これに対して、ダーティビット２１６が１であり書き込みが行われたページであれば、状態管理部３０１は、その追出対象ページの更新状態情報２１２を確認する。状態管理部３０１は、その追出対象ページの更新状態情報２１２の全てのビットが１、すなわち、その追出対象ページの全てのキャッシュラインが更新された状態の場合、状態管理部３０１は、その追出対象ページの書き込みの指示をページ管理部３０２に出力する。その後、状態管理部３０は、その追出対象ページのページテーブルエントリ２１１のプレゼンスビット２１５を０に設定する。その後、状態管理部３０１は、その追出対象ページのページキャッシュ２２からの削除依頼をページ管理部３０２へ出力する。
【００６１】
また、追出対象ページの更新状態情報２１２のいずれかのビットが０、すなわち、その追出対象ページに更新されていないキャッシュラインを有する場合、状態管理部３０１は、その追出対象ページのリードモディファイライトをページ管理部３０２に指示する。この場合、状態管理部３０１は、更新状態情報２１２のビットマップを用いて更新されたキャッシュラインの位置の情報をページ管理部３２０に通知する。この更新状態情報２１２が、「書込位置情報」の一例にあたる。
【００６２】
次に、状態管理部３０は、その追出対象ページのページテーブルエントリ２１１のプレゼンスビット２１５を０に設定する。その後、状態管理部３０１は、その追出対象ページのページキャッシュ２２からの削除依頼をページ管理部３０２へ出力する。
【００６３】
ページ管理部３０２は、ページキャッシュ２２とブロックストレージデバイス４との間のデータの移動を管理する。ページ管理部３０２は、ページ単位でデータの読み出し及び書き込みを行う。例えば、ページ管理部３０２は、１ページが４ＫＢｙｔｅの場合、４ＫＢｙｔｅ単位でページキャッシュ２２に対するデータの読み出し及び書き込みを行う。このページ管理部３０２によるデータの処理単位が「第２サイズ」の一例にあたる。また、ページ管理部３０２が、「更新管理部」の一例にあたる。
【００６４】
ページ管理部３０２は、ページキャッシュ２２の探索の依頼を状態管理部３０１から受ける。この際、ページ管理部３０２は、対象データのファイルオフセットを取得する。次に、ページ管理部３０２は、ファイルオフセットでページキャッシュ２２を検索して、対象ページがページキャッシュ２２に存在するか否かを判定する。対象ページがページキャッシュ２２に存在する場合、ページ管理部３０２は、ページキャッシュ２２でのヒットの通知を状態管理部３０１へ出力する。
【００６５】
一方、対象ページがページキャッシュ２２に存在しない場合、ページ管理部３０２は、ページキャッシュ２２に対象ページに対応する空のページを割り当てる。この空のページが、「第１領域」の一例にあたる。そして、対象ページを格納するブロックストレージデバイス４の領域が「所定領域」の一例にあたる。
【００６６】
次に、ページ管理部３０２は、アクセス要求が読出命令又は書込命令のいずれかを判定する。アクセス要求が書込命令の場合、ページ管理部３０２は、空ページ割り当ての通知を状態管理部３０１へ出力する。
【００６７】
これに対して、アクセス要求が読出命令の場合、ページ管理部３０２は、ファイルオフセットで指定されたデータをブロックストレージデバイス４から取得する。そして、ページ管理部３０２は、取得したデータをページキャッシュ２２に生成した空のページに格納する。その後、ページ管理部３０２は、対象ページのページキャッシュ２２への格納完了の通知を状態管理部３０１へ出力する。
【００６８】
また、ページ管理部３０２は、追出対象ページの書き込みの指示の入力を状態管理部３０１から受ける。次に、ページ管理部３０２は、指定された追出対象ページをページキャッシュ２２から読み出す。そして、ページ管理部３０２は、読み出したページをブロックストレージデバイス４に書き込んでページを更新する。
【００６９】
また、ページ管理部３０２は、追出対象ページのリードモディファイライト指示の入力を状態管理部３０１から受ける。次に、ページ管理部３０２は、指定された追出対象ページをページキャッシュ２２から読み出す。また、ページ管理部３０２は、指定された追出対象ページに対応するページをブロックストレージデバイス４から読み出す。そして、ページ管理部３０２は、ページキャッシュ２２から読み出した追出対象ページにおける更新されたキャッシュラインに格納されたデータでブロックストレージデバイス４から読み出したページの同じ位置のキャッシュラインを更新する。その後、ページ管理部３０２は、キャッシュラインを更新したページをブロックストレージデバイス４に書き込んでページを更新する。
【００７０】
また、ページ管理部３０２は、追出対象ページのページキャッシュ２２からの削除依頼の入力を状態管理部３０１から受ける。この場合、ページ管理部３０２は、指定された追出対象ページをページキャッシュ２２から削除する。
【００７１】
ここで、図４を参照して、本実施例に係る情報処理装置１００による書込時の処理の概要を説明する。図４は、データ書込時のページフォルトが発生した場合のページキャッシュ及びブロックストレージデバイスの状態を表す図である。
【００７２】
メモリアクセス制御部１０１は、ブロックストレージデバイス４に格納されたページ２２３に含まれるキャッシュラインに対する書き込みのメモリアクセス要求をＣＰＵ１が実行するアプリケーションから受ける。ページフォルトが発生すると、ページ管理部３０２は、ページキャッシュ２２の上にブロックストレージデバイス４の上のページ２２３に対応する空のページ２２１を生成する。その後、メモリアクセス制御部１０１は、ページキャッシュ２２に生成された空のページ２２１におけるメモリアクセス要求で指定された領域２２２にデータを書き込む書込処理Ｗ１を行う。
【００７３】
この状態では、ブロックストレージデバイス４の上のページ２２３は、更新されない。一方、ページキャッシュ２２の上には、ページ２２３に対応する空のページ２２１が生成され、その中のメモリアクセス要求で指定された領域２２２に更新データが書き込まれる。すなわち、ページキャッシュ２２へのデータの書き込みは、書込命令のメモリアクセス要求と同期して行われる。
【００７４】
次に、図５を参照して、本実施例に係る情報処理装置１００によるページキャッシュ２２からのページ追出処理の概要を説明する。図５は、ページ追出時のページキャッシュ及びブロックストレージデバイスの状態を表す図である。
【００７５】
ページ追出処理の開始条件が満たされると、ページ管理部３０２は、ブロックストレージデバイス４からページ２２３を読み出す読出処理Ｒを実行する。そして、ページ管理部３０２は、読み出したページ２２３と空のページ２２１に含まれる領域２２２のデータとをマージしたページ２２４をページキャッシュ２２に書き込む書込処理Ｗ２を実行する。これにより、ページキャッシュ２２には、領域２２２のデータを含むページ２２４が格納される。その後、ページ管理部３０２は、ブロックストレージデバイス４のページ２２３の領域にページキャッシュ２２に格納されたページ２２４を格納する。これにより、ブロックストレージデバイス４に格納されたページ２２３のページ２２４への更新が完了する。このように、ブロックストレージデバイス４上のページの更新は、書込命令のメモリアクセス要求とは非同期で行われる。
【００７６】
次に、図６を参照して、本実施例に係る情報処理装置１００によるメモリアクセス処理の流れについて説明する。図６は、実施例１に係る情報処理装置によるメモリアクセス処理のフローチャートである。
【００７７】
メモリアクセス制御部１０１は、ＣＰＵ１により実行されるアプリケーションからメモリアクセス要求を受信する（ステップＳ１）。
【００７８】
次に、メモリアクセス制御部１０１は、ＴＬＢ１１を参照する（ステップＳ２）。
【００７９】
そして、メモリアクセス制御部１０１は、メモリアクセス要求で指定された仮想アドレスに対応するアドレス変換情報がＴＬＢ１１に格納されているか否かにより、仮想アドレスがＴＬＢ１１でヒットしたか否かを判定する（ステップＳ３）。
【００８０】
ＴＬＢ１１でミスの場合（ステップＳ３：否定）、メモリアクセス制御部１０１は、ページテーブル探索処理をＭＭＵ１２に実行させ（ステップＳ４）、その後ステップＳ２へ戻る。
【００８１】
これに対して、ＴＬＢ１１でヒットした場合（ステップＳ３：肯定）、メモリアクセス制御部１０１は、ＴＬＢ１１が有するアドレス変換情報から物理アドレスを取得する（ステップＳ５）。
【００８２】
次に、メモリアクセス制御部１０１は、メモリアクセス要求で指定された対象ページのページテーブルエントリ２１１のＲ／Ｗビット２１４及びメモリマップドビット２１３を確認する。そして、メモリアクセス制御部１０１は、Ｒ／Ｗビット２１４が１で且つメモリマップドビット２１３が１か否かを判定する（ステップＳ６）。すなわち、メモリアクセス制御部１０１は、対象ページが書き込み可能であり且つメモリマップド領域に配置されたページであるか否かを判定する。
【００８３】
Ｒ／Ｗビット２１４が０又はメモリマップドビット２１３が０の場合（ステップＳ６：否定）、メモリアクセス制御部１０１は、ステップＳ８へ進む。
【００８４】
これに対して、Ｒ／Ｗビット２１４が１で且つメモリマップドビット２１３が１の場合（ステップＳ６：肯定）、メモリアクセス制御部１０１は、ＴＬＢ１１における対象ページのエントリを削除して無効化する（ステップＳ７）。
【００８５】
その後、メモリアクセス制御部１０１は、対象ページの物理アドレスを用いてメモリアクセスを行う（ステップＳ８）。
【００８６】
次に、図７を参照して、ＭＭＵ１２によるページテーブル探索処理の流れを説明する。図７は、ＭＭＵによるページ探索処理のフローチャートである。図７のフローで記載した処理は、図６のステップＳ４で実行される処理の一例にあたる。
【００８７】
ページテーブル管理部１２２は、メモリアクセス要求に基づくデータアクセス要求をメモリアクセス制御部１０１から受信する（ステップＳ１０１）。
【００８８】
次に、ページテーブル管理部１２２は、データアクセス要求に含まれる仮想アドレスを取得して、取得した仮想アドレスを用いてページテーブル２１を探索する（ステップＳ１０２）。
【００８９】
そして、ページテーブル管理部１２２は、仮想アドレスで指定された対象ページのページテーブルエントリ２１１が存在するか否かを判定する（ステップＳ１０３）。対象ページのページテーブルエントリ２１１が存在しない場合（ステップＳ１０３：否定）、ページテーブル管理部１２２は、ステップＳ１０９へ進む。
【００９０】
これに対して、対象ページのページテーブルエントリ２１１が存在する場合（ステップＳ１０３：肯定）、ページテーブル管理部１２２は、アクセス権限が適切か否かを判定する（ステップＳ１０４）。アクセス権限が不適切な場合（ステップＳ１０４：否定）、ページテーブル管理部１２２は、ステップＳ１０９へ進む。
【００９１】
これに対して、アクセス権限が適切な場合（ステップＳ１０４：肯定）、ページテーブル管理部１２２は、対象ページのページテーブルエントリ２１１のプレゼンスビット２１５を確認する。そして、ページテーブル管理部１２２は、対象ページがメモリ（ＤＲＡＭ２）に存在するか否かを判定する（ステップＳ１０５）。プレゼンスビット２１５が０であり、対象ページがメモリ（ＤＲＡＭ２）に存在しない場合（ステップＳ１０５：否定）、ページテーブル管理部１２２は、ステップＳ１０９へ進む。
【００９２】
これに対して、プレゼンスビット２１５が１であり、対象ページがメモリ（ＤＲＡＭ２）に存在する場合（ステップＳ１０５：肯定）、ページテーブル管理部１２２は、データアクセス要求が書込命令か否かを判定する（ステップＳ１０６）。データアクセス要求が書込命令でない場合（ステップＳ１０６：否定）、ページテーブル管理部１２２は、ステップＳ１０８へ進む。
【００９３】
これに対して、データアクセス要求が書込命令である場合（ステップＳ１０６：肯定）、ページテーブル管理部１２２は、更新状態情報２１２の更新依頼をビットマップ更新部１２３へ出力する。ビットマップ更新部１２３は、対象ページの更新状態情報２１２のうちのデータが書き込まれるキャッシュラインにあたるビットを１に設定する（ステップＳ１０７）。
【００９４】
その後、ページテーブル管理部１２２は、対象ページのページテーブルエントリ２１１を用いてアドレス変換情報を取得する。そして、ページテーブル管理部１２２は、対象ページの仮想アドレスをＰＴＥ登録部１２１へ出力して、ＴＬＢ１１への対象ページのアドレス変換情報の格納を依頼する。ＰＴＥ登録部１２１は、ＴＬＢ１１への対象ページのアドレス変換情報の格納依頼をページテーブル管理部１２２から受けて、アドレス変換情報をＴＬＢ１１に格納する（ステップＳ１０８）。
【００９５】
一方、対象ページのページテーブルエントリ２１１が存在しない場合（ステップＳ１０３：否定）は、ページテーブル管理部１２２は、ページフォルトをメモリアクセス制御部１０１へ通知してページフォルトを発生させる（ステップＳ１０９）。また、アクセス権限が不適切な場合（ステップＳ１０４：否定）及びページキャッシュ２２に対象ページが存在しない場合（ステップＳ１０５：否定）も、ページテーブル管理部１２２は、同様にページフォルトを発生させる（ステップＳ１０９）。
【００９６】
次に、図８を参照して、本実施例に係るページフォルト発生時のページフォルトハンドラ３によるページ制御処理の流れを説明する。図８は、実施例１に係るページフォルト発生時のページ制御処理のフローチャートである。
【００９７】
メモリアクセス制御部１０１は、ページフォルトの通知をページテーブル管理部１２２から受ける。そして、メモリアクセス制御部１０１は、ページフォルト発生の通知を状態管理部３０１へ送信する。状態管理部３０１は、ページフォルトの発生の通知をメモリアクセス制御部１０１から受信する（ステップＳ２０１）。
【００９８】
次に、状態管理部３０１は、対象ページを示す仮想アドレスがメモリアクセス要求の送信元のプロセスに割り当てられた仮想メモリ空間に含まれるか否かによりアクセス領域の正当性を確認する。また、状態管理部３０１は、仮想アドレスを含む仮想メモリ空間の書き込みフラグを参照して書き込み可能領域か否かを確認する（ステップＳ２０２）。ここでは、アクセス領域が正当であり且つ書き込み可能領域である場合で説明する。
【００９９】
状態管理部３０１は、ページキャッシュ２２の探索依頼をページ管理部３０２へ出力する。ページ管理部３０２は、ページキャッシュ２２の探索依頼を受けて、ページキャッシュ２２の探索を行う（ステップＳ２０３）。
【０１００】
そして、ページ管理部３０２は、対象ページがページキャッシュ２２に存在するか否かを判定する（ステップＳ２０４）。対象ページがページキャッシュ２２に存在する場合（ステップＳ２０４：肯定）、ページ管理部３０２は、ページキャッシュ２２でのヒットの通知を状態管理部３０１へ出力して、ステップＳ２０８へ進む。
【０１０１】
これに対して、対象ページがページキャッシュ２２に存在しない場合（ステップＳ２０４：否定）、ページ管理部３０２は、ページキャッシュ２２の上の対象ページに対応する領域に空のページを割り当てる（ステップＳ２０５）。
【０１０２】
次に、ページ管理部３０２は、メモリアクセス要求が書込命令か否かを判定する（ステップＳ２０６）。メモリアクセス要求が書込命令でない場合（ステップＳ２０６：否定）、ページ管理部３０２は、ブロックストレージデバイス４から対象ページを読み出す（ステップＳ２０７）。そして、ページ管理部３０２は、読み出した対象ページのデータをページキャッシュ２２に生成した空のページに格納する。その後、ページ管理部３０２は、対象ページのページキャッシュ２２への格納完了の通知を状態管理部３０１へ出力する。
【０１０３】
状態管理部３０１は、ページキャッシュ２２でのヒットの通知又は対象ページのページキャッシュ２２への格納完了の通知の入力をページ管理部３０２から受ける。そして、状態管理部３０１は、対象ページの更新状態情報２１２のビットマップの全ビットを１で初期化する（ステップＳ２０８）。
【０１０４】
これに対して、メモリアクセス要求が書込命令の場合（ステップＳ２０６：肯定）、ページ管理部３０２は、空のページの割り当て完了の通知を状態管理部３０１へ出力する。状態管理部３０１は、空のページの割り当て完了の通知の入力をページ管理部３０２から受けると、対象ページの更新状態情報２１２のビットマップの全ビットを０で初期化する（ステップＳ２０９）。
【０１０５】
その後、状態管理部３０１は、ページテーブル２１に対象ページのページテーブルエントリ２１１を登録する（ステップＳ２１０）。
【０１０６】
次に、図９を参照して、本実施例に係るページフォルトハンドラ３によるページキャッシュ２２からのページの追い出しの処理の流れを説明する。図９は、実施例１に係るページの追出処理のフローチャートである。ここでは、ページの追出処理の開始条件が満たされた後の処理を説明する。
【０１０７】
状態管理部３０１は、ＬＲＵによりページキャッシュ２２に格納されたページの中から追出対象ページを決定する（ステップＳ３０１）。
【０１０８】
次に、状態管理部３０１は、追出対象ページのページテーブルエントリ２１１のダーティビット２１６を確認し（ステップＳ３０２）、追出対象ページに新規のデータが書き込まれた状態か否かを判定する（ステップＳ３０３）。ダーティビット２１６が０の場合（ステップＳ３０３：否定）、状態管理部３０１は、ステップＳ３０９へ進む。
【０１０９】
これに対して、ダーティビット２１６が１の場合（ステップＳ３０３：肯定）、状態管理部３０１は、追出対象ページの更新状態情報２１２を確認する（ステップＳ３０４）。
【０１１０】
そして、状態管理部３０１は、追出対象ページの更新状態情報２１２のビットマップの全ビットが１であるか否かを判定する（ステップＳ３０５）。すなわち、状態管理部３０１は、追出対象ページに更新されてないキャッシュラインが存在するか否かを判定する。
【０１１１】
更新状態情報２１２のビットマップの全ビットが１の場合（ステップＳ３０５：肯定）、状態管理部３０１は追出対象ページのブロックストレージデバイス４への書き込みの指示をページ管理部３０２へ出力する。そして、処理はステップＳ３０８へ進む。
【０１１２】
これに対して、更新状態情報２１２のビットマップの中に０のビットが存在する場合（ステップＳ３０５：否定）、状態管理部３０１は、リードモディファイライトの指示をページ管理部３０２へ出力する。リードモディファイライトの指示の入力を受けて、ページ管理部３０２は、追出対象ページに対応するページをブロックストレージデバイス４から読み出す（ステップＳ３０６）。
【０１１３】
次に、ページ管理部３０２は、更新状態情報２１２を用いて更新されたキャッシュラインの位置の情報を状態管理部３０１から取得する。次に、ページ管理部３０２は、更新されたキャッシュラインの位置の情報にしたがって、ページキャッシュ２２における空のページに含まれる更新されたデータを読み出したページに更新する。そして、ページ管理部３０２は、更新したページをページキャッシュ２２に書き込む。これにより、ページ管理部３０２は、キャッシュラインの更新を読み出したページに反映させる（ステップＳ３０７）。
【０１１４】
ページ管理部３０２は、ページキャッシュ２２に格納された追出対象ページをブロックストレージデバイス４へ書き込む（ステップＳ３０８）。
【０１１５】
その後、状態管理部３０１は、追出対象ページのページテーブルエントリ２１１におけるプレゼンスビット２１５を０に設定する（ステップＳ３０９）。そして、状態管理部３０１は、追出対象ページの削除依頼をページ管理部３０２へ出力する。
【０１１６】
ページ管理部３０２は、追出対象ページの削除依頼の入力を状態管理部３０１から受ける。そして、ページ管理部３０２は、追出対象ページをページキャッシュ２２から削除する（ステップＳ３１０）。
【０１１７】
本実施例に係る情報処理装置では、ブロックストレージデバイスに対するデータの読み書きの単位と、ページキャッシュに対するデータの読み書きの単位が異なる。そこで、以上に説明したように、本実施例に係る情報処理装置は、ページキャッシュに格納されていないメモリマップドファイルに対する書き込みが行われた場合に、ページキャッシュに空のページを生成して、その空のページに書込データを格納する。その後、情報処理装置は、書込命令を受けたタイミングとは異なるタイミングでデータが書き込まれたページに対する更新を行う。すなわち、本実施例に係る情報処理装置は、ブロックストレージデバイスに格納されたデータの更新におけるブロックストレージデバイスからのデータの読み出しを、必要であれば書込命令に対して非同期で行う。これにより、データの書込処理においてブロックストレージデバイスからのデータの読み出しレイテンシが追加されることが回避でき、書込処理を高速化することが可能となる。特に、高頻度なランダム書き込みを行うアプリケーションを動作させる場合に、性能の低下を軽減することが可能となる。
【実施例２】
【０１１８】
図１０は、実施例２に係る情報処理装置のハードウェア構成図である。本実施例に係るＤＲＡＭ２は、ＩＶＡＴ（Identical  Value  Address  Table）２３を有する。本実施例に係る情報処理装置１００は、割り当てた空のページを特定の初期値で初期化しておき、初期値以外の値が書き込まれた箇所を非同期に更新する。
【０１１９】
ここで、データ書き込み時にページキャッシュ２２に割り当てた空のページを特定の初期値で初期化しておけば、初期値以外のデータが書き込まれた箇所は更新箇所であるので、ページの更新が行える。ただし、書き込んだデータの値が偶発的に初期値と一致するおそれがある。そのため、書き込んだデータと初期値とが一致した場合について書き込みが発生したと判定できる機構を備えることが好ましい。そこで、本実施例に係る情報処理装置は、ＩＶＡＴ２３を用いて書き込んだデータと初期値とが一致した場合を管理する。以下の説明では、実施例１と同様の各部の動作については説明を省略する。
【０１２０】
ＩＶＡＴ２３は、一定数のエントリを有しＤＲＡＭ２に格納される専用データ構造である。ＩＶＡＴ２３は、図１１に示すデータを保持する。図１１は、ＩＶＡＴに格納される情報の一例を表す図である。図１１に示すように、ＩＶＡＴ２３は、各エントリに有効ビット２３１及び物理アドレス２３２が登録される。各エントリはページ毎にキャッシュラインサイズに合わせて配置される。すなわち各エントリに格納された物理アドレスが各キャッシュラインを表す。
【０１２１】
また、本実施例に係るページテーブル２１は、ページテーブルエントリを保持すればよい。すなわち、本実施例に係るページテーブル２１は、実施例１における更新状態情報２１２を保持しなくてもよい。
【０１２２】
次に、図１２を参照して、本実施例に係る情報処理装置１００におけるメモリアクセス要求を処理する機能について詳細に説明する。図１２は、実施例２に係る情報処理装置のブロック図である。
【０１２３】
本実施例に係るＭＭＵ１２は、ＰＴＥ登録部１２１及びページテーブル管理部１２２を有する。ページテーブル管理部１２２は、メモリアクセス制御部１０１からのデータアクセス要求を受けて、指定された仮想アドレスを用いてページテーブル２１を探索する。また、ページテーブル管理部１２２は、対象ページのアクセス権限のチェック及び対象ページがメモリ（ＤＲＡＭ２）に存在するか否かを確認する。
【０１２４】
ページテーブル管理部１２２は、対象ページのページテーブルエントリが存在しない場合、アクセス権限が不適格な場合又は対象ページがメモリ（ＤＲＡＭ２）に存在しない場合、ページフォルトをメモリアクセス制御部１０１へ出力する。
【０１２５】
一方、対象ページのページテーブルエントリが存在し、アクセス権限が適格であり、且つ、対象ページがメモリ（ＤＲＡＭ２）に存在する場合、ページテーブル管理部１２２は、ＴＬＢ１１のエントリの登録指示をＰＴＥ登録部１２１へ出力する。
【０１２６】
ＰＴＥ登録部１２１は、ＴＬＢ１１のエントリの登録指示をページテーブル管理部１２２から受けると、対象テーブルの仮想アドレスと物理アドレスとの対応を表すアドレス変換情報をＴＬＢ１１に登録する。
【０１２７】
メモリアクセス制御部１０１は、メモリアクセス要求を受けると、指定された仮想アドレスでＴＬＢ１１を探索する。ＴＬＢ１１でヒットした場合、メモリアクセス制御部１１０は、ＴＬＢ１１から取得した物理アドレスを含むメモリアクセス要求をメモリコントローラ１３へ出力する。
【０１２８】
メモリコントローラ１３は、アクセス処理部１３１及びＩＶＡＴ更新部１３２を有する。アクセス処理部１３１は、ＩＶＡＴ２３に格納される物理アドレス２３２の初期値を自己が有するレジスタに格納して保持する。
【０１２９】
アクセス処理部１３１は、対象データの物理アドレスを用いたメモリアクセス要求の入力をメモリアクセス制御部１０１から受ける。次に、アクセス処理部１３１は、メモリアクセス要求が書込命令か否かを判定する。
【０１３０】
アクセス要求が書込命令でなければ、リードモディファイライトの対象となるデータの書き込みは発生しないので、アクセス処理部１３１は、メモリアクセスコマンドをＤＲＡＭ２に発行して、メモリアクセスを実行する。
【０１３１】
これに対して、アクセス要求が書込命令の場合、アクセス処理部１３１は、対象データの値とレジスタ内の初期値とを比較する。そして、対象データの値とレジスタ内の初期値とが一致した場合、アクセス処理部１３１は、ＩＶＡＴ２３を探索して有効ビット２３１が０のエントリが存在するか否かを判定する。ＩＶＡＴ２３に有効ビット２３１が０のエントリが存在しない場合、アクセス処理部１３１は、一定期間待機した後に、ＩＶＡＴ２３における有効ビット２３１が０のエントリの存在の判定を繰り返す。ここで、有効ビット２３１が０のエントリが存在しない場合とは、ページの更新が行われたが未だページフォルトハンドラ３０２がそのページに対する処理を行っていない場合である。そこで、その場合に、アクセス処理部１３１は、ページフォルトハンドラ３０２によるページの更新処理の完了を待つ。
【０１３２】
ＩＶＡＴ２３に有効ビットが０のエントリが存在した場合、アクセス処理部１３１は、その有効ビットが０のエントリの有効ビット２３１を１に変更して物理アドレスを格納する。これにより、初期値と同じ値が書き込まれたキャッシュラインの物理アドレスがＩＶＡＴ２３から特定できるようになり、ページの追出処理時に初期値と同じ値が書き込まれたキャッシュラインを初期値で更新できるようになる。その後、アクセス処理部１３１は、メモリアクセスコマンドをＤＲＡＭ２に発行して、メモリアクセスを実行する。
【０１３３】
ページ管理部３０２は、ページフォルトが発生した場合、対象ページに対応する空のページをページキャッシュ２２上に割り当てる。次に、メモリアクセス要求が書込命令である場合、ページ管理部３０２は、空のページの作成の通知を状態管理部３０１へ出力する。
【０１３４】
ページキャッシュ２２からのページ追出処理の場合、ページ管理部３０２は、追出対象ページに含まれるデータをキャッシュラインサイズ毎に初期値と比較する。そして、全データが初期値と異なる場合は追出対象ページの全データが更新されたといえるので、ページ管理部３０２は、追出対象ページをブロックストレージデバイス４に書き込みページを更新する。
【０１３５】
これに対して、初期値と値が一致するキャッシュラインが存在する場合、ページ管理部３０２は、データが更新されていないキャッシュラインが存在する、もしくは、データが初期値に更新されたキャッシュラインが存在すると判定する。そこで、データが初期値に更新されたキャッシュラインが存在するか否かを確認するため、ページ管理部３０２は、追出対象ページの物理アドレスを通知してＩＶＡＴ２３の探索を状態管理部３０１に依頼する。
【０１３６】
その後、ページ管理部３０２は、追出対象ページの中にデータが初期値に更新されたキャッシュラインが存在すれば、そのキャッシュラインのページ内オフセットを状態管理部３０１から受ける。また、データが初期値に更新されたキャッシュラインが存在しない場合、ページ管理部３０２は、状態管理部３０１から情報の入力を受けない。
【０１３７】
そして、ページ管理部３０２は、初期値と値が異なるデータが格納されたキャッシュライン及びデータが初期値に更新されたキャッシュラインを有する追出対象ページに対応するページをブロックストレージデバイス４から読み出す。次に、ページ管理部３０２は、読み出したページの初期値と値が異なるデータが格納されたキャッシュライン及びデータが初期値に更新されたキャッシュラインを追出対象ページの値に更新してページキャッシュ２２に格納する。その後、ページ管理部３０２は、更新したページをブロックストレージデバイス４に書き込む。さらに、ページ管理部３０２は、追出対象ページの書き込み完了を状態管理部３０１に通知し、その後、ページキャッシュ２２から追出対象ページを削除する。
【０１３８】
状態管理部３０１は、空ページ作成通知の入力を受けると、キャッシュラインサイズ毎に特定の値でその空ページを初期化する。これにより、空ページに対するデータの更新が無ければ、基本的には空ページの各キャッシュラインは初期値が格納された状態となり、データの更新箇所が特定できる。
【０１３９】
また、状態管理部３０１は、ＩＶＡＴ２３の探索指示をページ管理部３０２から受ける。そして、追出対象ページの物理アドレスを用いて、追出対象ページ内の物理アドレスがＩＶＡＴ２３に存在するか否かを判定する。ＩＶＡＴ２３に該当する物理アドレスが存在すれば、状態管理部３０１は、その物理アドレスが示すキャッシュラインのデータが初期値で更新されたと判定する。そこで、状態管理部３０１は、追出対象ページ内の物理アドレスが格納されたエントリの有効ビットを０に設定する。そして、状態管理部３０１は、ＩＶＡＴ２３に格納された物理アドレスのオフセットを、データが初期値で更新されたキャッシュラインのアドレスを表すオフセットとして、ページ管理部３０２へ出力する。
【０１４０】
次に、図１３を参照して、メモリコントローラ１３によるメモリアクセス処理の流れについて説明する。図１３は、実施例２に係るメモリコントローラによるメモリアクセス処理のフローチャートである。
【０１４１】
アクセス処理部１３１は、対象データの物理アドレスとともにメモリアクセス要求をメモリアクセス制御部１０１から受信する（ステップＳ４０１）。
【０１４２】
次に、アクセス処理部１３１は、メモリアクセス要求が書込命令か否かを判定する（ステップＳ４０２）。アクセス要求が書込命令でない場合（ステップＳ４０２：否定）、アクセス処理部１３１は、ステップＳ４０９へ進む。
【０１４３】
これに対して、アクセス要求が書込命令の場合（ステップＳ４０２：肯定）、アクセス処理部１３１は、対象データの値とレジスタ内の初期値とを比較する（ステップＳ４０３）。
【０１４４】
そして、アクセス処理部１３１は、対象データの値とレジスタ内の初期値とが一致するか否かを判定する（ステップＳ４０４）。対象データの値と初期値とが一致する可能性は極めて低いが、一致してしまう可能性は存在する。対象データの値とレジスタ内の初期値とが一致しない場合（ステップＳ４０４：否定）、アクセス処理部１３１は、ステップＳ４０９へ進む。
【０１４５】
これに対して、対象データの値とレジスタ内の初期値が一致した場合（ステップＳ４０４：肯定）、アクセス処理部１３１は、ＩＶＡＴ２３の更新指示をＩＶＡＴ更新部１３２へ出力する。ＩＶＡＴ更新部１３２は、ＩＶＡＴ２３の更新指示の入力を受けると、ＩＶＡＴ２３を探索する（ステップＳ４０５）。
【０１４６】
そして、ＩＶＡＴ更新部１３２は、有効ビットが０のエントリが存在するか否かを判定する（ステップＳ４０６）。
【０１４７】
有効ビットが０のエントリが存在しない場合（ステップＳ４０６：否定）、ＩＶＡＴ更新部１３２は、一定期間待機する（ステップＳ４０７）。その後、ＩＶＡＴ更新部１３２は、ステップＳ４０５へ進む。
【０１４８】
有効ビットが０のエントリが存在する場合（ステップＳ４０６：肯定）、ＩＶＡＴ更新部１３２は、有効ビットが０であるエントリの有効ビットを１に設定して、書込命令で指定された物理アドレスを格納する（ステップＳ４０８）。その後、ＩＶＡＴ更新部１３２は、更新完了の通知をアクセス処理部１３１へ出力する。
【０１４９】
次に、アクセス処理部１３１は、更新完了の通知の入力を受けると、アクセス要求にしたがってメモリアクセスコマンドを発行する（ステップＳ４０９）。
【０１５０】
次に、図１４を参照して、本実施例に係るページフォルト発生時のページフォルトハンドラ３によるページ制御処理の流れを説明する。図１４は、実施例２に係るページフォルト発生時のページ制御処理のフローチャートである。
【０１５１】
メモリアクセス制御部１０１は、ページフォルトの通知をページテーブル管理部１２２から受ける。そして、メモリアクセス制御部１０１は、ページフォルト発生の通知を状態管理部３０１へ送信する。状態管理部３０１は、ページフォルトの発生の通知をメモリアクセス制御部１０１から受信する（ステップＳ５０１）。
【０１５２】
次に、状態管理部３０１は、対象ページを示す仮想アドレスがメモリアクセス要求の送信元のプロセスに割り当てられた仮想メモリ空間に含まれるか否かによりアクセス領域の正当性を確認する。また、状態管理部３０１は、仮想アドレスを含む仮想メモリ空間の書き込みフラグを参照して書き込み可能領域か否かを確認する（ステップＳ５０２）。ここでは、アクセス領域が正当であり且つ書き込み可能領域である場合で説明する。
【０１５３】
状態管理部３０１は、ページキャッシュ２２の探索依頼をページ管理部３０２へ出力する。ページ管理部３０２は、ページキャッシュ２２の探索依頼を受けて、ページキャッシュ２２の探索を行う（ステップＳ５０３）。
【０１５４】
そして、ページ管理部３０２は、対象ページがページキャッシュ２２に存在するか否かを判定する（ステップＳ５０４）。対象ページがページキャッシュ２２に存在する場合（ステップＳ５０４：肯定）、ページ管理部３０２は、ページキャッシュ２２でのヒットの通知を状態管理部３０１へ出力して、ステップＳ５０９へ進む。
【０１５５】
これに対して、対象ページがページキャッシュ２２に存在しない場合（ステップＳ５０４：否定）、ページ管理部３０２は、ページキャッシュ２２上に対象ページに対応する空ページを割り当てる（ステップＳ５０５）。
【０１５６】
次に、ページ管理部３０２は、メモリアクセス要求が書込命令か否かを判定する（ステップＳ５０６）。メモリアクセス要求が書込命令でない場合（ステップＳ５０６：否定）、ページ管理部３０２は、ブロックストレージデバイス４から対象ページを読み出す（ステップＳ５０７）。そして、ページ管理部３０２は、読み出した対象ページのデータをページキャッシュ２２に生成した空のページに格納する。その後、ページ管理部３０２は、対象ページのページキャッシュ２２への格納完了の通知を状態管理部３０１へ出力する。
【０１５７】
これに対して、メモリアクセス要求が書込命令である場合（ステップＳ５０６：肯定）、ページ管理部３０２は、空のページの作成の通知を状態管理部３０１へ出力する。状態管理部３０１は、空のページの作成の通知の入力を受けると、キャッシュラインサイズ毎に特定の値でその空ページを初期化する（ステップＳ５０８）。
【０１５８】
その後、状態管理部３０１は、ページテーブル２１に対象ページのページテーブルエントリ２１１を登録する（ステップＳ５０９）。
【０１５９】
次に、図１５を参照して、本実施例に係るページフォルトハンドラ３によるページキャッシュ２２からのページの追い出しの処理の流れを説明する。図１５は、実施例２に係るページの追出処理のフローチャートである。ここでは、ページの追出処理の開始条件が満たされた後の処理を説明する。
【０１６０】
状態管理部３０１は、ＬＲＵによりページキャッシュ２２に格納されたページの中から追出対象ページを決定する（ステップＳ６０１）。
【０１６１】
次に、状態管理部３０１は、追出対象ページのページテーブルエントリ２１１のダーティビット２１６を確認し（ステップＳ６０２）、追出対象ページに新規のデータが書き込まれた状態か否かを判定する（ステップＳ６０３）。ダーティビット２１６が０の場合（ステップＳ６０３：否定）、状態管理部３０１は、ステップＳ６１２へ進む。
【０１６２】
これに対して、ダーティビット２１６が１の場合（ステップＳ６０３：肯定）、状態管理部３０１は、ページ管理部３０２に、ページの更新依頼をページ管理部３０２へ出力する。ページ管理部３０２は、ページの更新依頼の入力を受けると、追出対象ページに含まれるデータの値とＩＶＡＴ２３の初期値とをキャッシュラインサイズ毎に比較する（ステップＳ６０４）。
【０１６３】
そして、ページ管理部３０２は、追出対象ページに含まれるキャッシュラインサイズ毎の全データがＩＶＡＴ２３の初期値と一致するか否かを判定する（ステップＳ６０５）。
【０１６４】
データの値でＩＶＡＴ２３の初期値と一致するものが存在する場合（ステップＳ６０５：否定）、ページ管理部３０２は、値がＩＶＡＴ２３の初期値と異なるデータのページオフセットを取得する（ステップＳ６０６）。そして、ページ管理部３０２は、追い出し対象ページの物理アドレスを状態管理部３０１へ出力する。
【０１６５】
状態管理部３０１は、物理アドレスの入力をページ管理部３０２から受ける。そして、状態管理部３０１は、取得したページの物理アドレスを使用して、追出対象ページに含まれる物理アドレスがＩＶＡＴ２３に存在するか否かを判定する（ステップＳ６０７）。これにより、状態管理部３０１は、追出対象ページの中に初期値と一致する値で更新されたキャッシュラインが存在するか否かを判定する。
【０１６６】
追出対象ページに含まれる物理アドレスがＩＶＡＴ２３に存在しない場合（ステップＳ６０７：否定）、状態管理部３０１は、追出対象ページの中に初期値と一致する値で更新されたキャッシュラインが存在しないと判定して、処理はステップＳ６１０へ進む。
【０１６７】
一方、追出対象ページに含まれる物理アドレスがＩＶＡＴ２３に存在する場合（ステップＳ６０７：肯定）、状態管理部３０１は、ＩＶＡＴ２３における追出対象ページに含まれる物理アドレスを格納したエントリの有効ビットを０に設定する（ステップＳ６０８）。
【０１６８】
次に、状態管理部３０１は、ＩＶＡＴ２３における追出対象ページに含まれる物理アドレスを格納したエントリに格納された物理アドレスのページオフセットを取得する（ステップＳ６０９）。
【０１６９】
その後、状態管理部３０１は、ページオフセットを送信して追出対象ページのリードモディファイライトをページ管理部３０２に指示する。この時、ＩＶＡＴ２３から物理アドレスのページオフセットを取得していれば、状態管理部３０１は、そのオフセットもページ管理部３０２へ送信する。ページ管理部３０２は、ブロックストレージデバイス４から追出対象ページに対応するページを読み出す。そして、ページ管理部３０２は、物理アドレスのページオフセットを取得していれば、追出対象ページの初期値と一致する値が書き込まれたキャッシュラインで読み出したページを更新する。また、物理アドレスのオフセットを取得していない場合、状態管理部３０１は、ステップＳ６０６で取得した初期値と値が異なるキャッシュラインのページオフセットを用いて読み出したページを追出対象ページで更新する。これにより、状態管理部３０１は、読み出したページに更新箇所を反映させる（ステップＳ６１０）。
【０１７０】
一方、追い出し対象ページの全データが初期値と異なる場合（ステップＳ６０５：肯定）、ページ管理部３０２は、追出対象ページをブロックストレージデバイス４へ書き込む（ステップＳ６１１）。その後、ページ管理部３０２は、ページの書き込み完了を状態管理部３０１に通知する。
【０１７１】
状態管理部３０１は、ページ管理部３０２からのページの書き込み完了の通知を受けて、書き込みが完了したページに対応するページテーブルエントリ２１のプレゼンスビット２１５を０に設定する（ステップＳ６１２）。そして、状態管理部３０１は、追出対象ページの削除依頼をページ管理部３０２へ出力する。
【０１７２】
ページ管理部３０２は、追出対象ページの削除依頼の入力を状態管理部３０１から受ける。そして、ページ管理部３０２は、追出対象ページをページキャッシュ２２から削除する（ステップＳ６１３）。
【０１７３】
以上に説明したように、本実施例に係る情報処理装置は、各キャッシュラインに格納されたデータの値及びＩＶＡＴを用いて更新されたキャッシュラインの情報を管理する。これにより、本実施例に係る情報処理装置は、書込命令を受けたタイミングとは異なるタイミングでデータが書き込まれたページに対する更新を行うことができる。すなわち、ＩＶＡＴを用いても、データの書込処理においてブロックストレージデバイスからのデータの読み出しレイテンシが追加されることが回避でき、書込処理を高速化することが可能となる。
【符号の説明】
【０１７４】
１  ＣＰＵ
２  ＤＲＡＭ
３  ページフォルトハンドラ
４  ブロックストレージデバイス
１１  ＴＬＢ
１２  ＭＭＵ
１３  メモリコントローラ
２１  ページテーブル
２２  ページキャッシュ
２３  ＩＶＡＴ
１００  情報処理装置
１０１  メモリアクセス制御部
１０２  ＴＬＢエントリ無効化部
１２１  ＰＴＥ登録部
１２２  ページテーブル管理部
１２３  ビットマップ更新部
１３１  アクセス処理部
１３２  ＩＶＡＴ更新部
２１１  ページテーブルエントリ
２１２  更新状態情報
３０１  状態管理部
３０２  ページ管理部
【図１】
2020140626.tif 000003
【図２】
2020140626.tif 000004
【図３】
2020140626.tif 000005
【図４】
2020140626.tif 000006
【図５】
2020140626.tif 000007
【図６】
2020140626.tif 000008
【図７】
2020140626.tif 000009
【図８】
2020140626.tif 000010
【図９】
2020140626.tif 000011
【図１０】
2020140626.tif 000012
【図１１】
2020140626.tif 000013
【図１２】
2020140626.tif 000014
【図１３】
2020140626.tif 000015
【図１４】
2020140626.tif 000016
【図１５】
2020140626.tif 000017