(57)【要約】【課題】不揮発記憶部に対する不正なアクセスを検知する。【解決手段】実施形態に係る管理装置は、不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する。管理装置は、アクセス処理部と、更新部と、検知部と、を備える。アクセス処理部は、処理回路からの要求に応じて、不揮発記憶部に対して書き込みまたは読み出しを実行する。更新部は、不揮発記憶部に対する書き込みに応じて、不揮発記憶部における領域毎の書き換え回数を示すテーブルを更新する。検知部は、テーブルを参照して、不揮発記憶部の同一領域に対する基準値以上の書き換え操作である局所性の高い書き込みを検知して、局所性の高い書き込みがされた攻撃対象領域を特定する。【選択図】図４
2019160233.tif 000002
【特許請求の範囲】
【請求項１】
不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置であって、
前記処理回路からの要求に応じて、前記不揮発記憶部に対して書き込みまたは読み出しを実行するアクセス処理部と、
前記不揮発記憶部に対する書き込みに応じて、前記不揮発記憶部における領域毎の書き換え回数を示すテーブルを更新する更新部と、
前記テーブルを参照して、前記不揮発記憶部の同一領域に対する基準値以上の書き換え操作である局所性の高い書き込みを検知して、前記局所性の高い書き込みがされた攻撃対象領域を特定する検知部と、
を備える管理装置。
【請求項２】
前記検知部は、同一領域に対する基準回数以上の連続書き換えを検知し、前記基準回数以上の連続した書き換えが発生した領域を、前記攻撃対象領域として特定する
請求項１に記載の管理装置。
【請求項３】
前記検知部は、同一領域に対する所定期間内における基準回数以上の書き換えを検知し、前記所定期間内における前記基準回数以上の書き換えが発生した領域を、前記攻撃対象領域として特定する
請求項１に記載の管理装置。
【請求項４】
前記不揮発記憶部に対してウェアレベリングを実行するウェアレベリング実行部をさらに備え、
前記検知部は、前記ウェアレベリングを実行するタイミング毎に、同一領域に対する前記所定期間内における前記基準回数以上の書き換えの発生を検知する
請求項３に記載の管理装置。
【請求項５】
前記不揮発記憶部は、複数のページを含み、
前記管理装置は、前記複数のページのそれぞれについて、ページに対する書き換え回数を表すカウンタ値を格納するカウンタテーブルを記憶するカウンタ記憶部をさらに備え、
前記更新部は、前記テーブルとして前記カウンタテーブルを更新し、
前記検知部は、前記カウンタテーブルに格納されたカウンタ値の更新を検出して、攻撃対象ページを特定する
請求項１から４の何れか１項に記載の管理装置。
【請求項６】
前記不揮発記憶部は、複数のページを含み、
前記複数のページのそれぞれは、複数の第２領域を含み、
前記管理装置は、
前記複数のページのそれぞれについて、ページに対する書き換え回数を表すカウンタ値を格納するカウンタテーブルを記憶するカウンタ記憶部と、
前記複数のページより少ない所定個のページのそれぞれについての管理情報を格納可能な管理テーブルを記憶する管理情報記憶部と、
をさらに備え、
前記更新部は、前記テーブルとして、前記カウンタテーブルを更新し、
前記管理情報は、対応するページに含まれる複数の第２領域のそれぞれが書き込み済みか未書き込みかを示し、
前記不揮発記憶部に対する第１データの書き込みに応じて、前記更新部は、
前記第１データが書き込まれるページである対象ページについての前記管理情報に示された、前記第１データが書き込まれる第２領域である対象第２領域の状態が、未書き込みの場合、書き込み済みに変更し、
前記管理情報に示された前記対象第２領域の状態が書き込み済みの場合、前記対象第２領域の状態を書き込み済みに変更し、前記対象第２領域以外の状態を未書き込みに変更し、前記対象ページについての前記カウンタ値を更新し、
前記検知部は、前記カウンタテーブルに格納された前記カウンタ値の更新を検出して、攻撃対象ページを特定する
請求項１から４の何れか１項に記載の管理装置。
【請求項７】
前記更新部は、前記管理テーブルに前記対象ページについての前記管理情報が存在しない場合、管理情報生成処理を実行し、
前記管理情報生成処理において、前記更新部は、
前記管理テーブルに未使用エントリが有る場合、未使用エントリに前記対象ページについての前記管理情報を書き込み、
前記管理テーブルに未使用エントリが無い場合、何れかの使用中エントリに書き込まれている前記管理情報を消去して、前記対象ページについての前記管理情報を書き込み、
消去した前記管理情報により管理されていたページについての前記カウンタ値を更新する
請求項６に記載の管理装置。
【請求項８】
前記管理情報は、前記処理回路に記憶された、仮想アドレスから物理アドレスへアドレス変換を行うために、ページにおける論理アドレスと物理アドレスとの対応を示す対応関係情報を記憶するＴＬＢにより管理されるアドレスを含み、
前記管理テーブルは、前記ＴＬＢと同一のエントリを有し、
前記更新部は、前記ＴＬＢのエントリの更新に同期して前記管理テーブルのエントリを更新する
請求項６または７に記載の管理装置。
【請求項９】
前記管理装置は、前記不揮発記憶部よりも書き換え可能回数が多い第１記憶部に対する、前記処理回路によるデータの読み出しおよび書き込みをさらに制御し、
前記管理装置は、前記局所性の高い書き込みの発生が検知された場合、前記不揮発記憶部における前記攻撃対象領域に記憶された対象データを前記第１記憶部に移動させる回避制御部をさらに備える
請求項１から８の何れか１項に記載の管理装置。
【請求項１０】
前記局所性の高い書き込みの発生が検知された場合、前記アクセス処理部による前記攻撃対象領域に対する書き込みを停止させる回避制御部をさらに備える
請求項１から８の何れか１項に記載の管理装置。
【請求項１１】
前記局所性の高い書き込みの発生が検知された場合、前記局所性の高い書き込みがされたことを前記処理回路に通知する回避制御部
をさらに備える請求項１から８の何れか１項に記載の管理装置。
【請求項１２】
前記回避制御部は、不正アクセスがされていることの通知を前記処理回路から取得した場合、前記アクセス処理部による前記不揮発記憶部に対するアクセスを停止させる
請求項１１に記載の管理装置。
【請求項１３】
第１記憶部および複数のページを含む不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置であって、
前記複数のページのそれぞれについて、前記不揮発記憶部から前記第１記憶部に転送したデータに対して書き込みおよび読み出しをする第１アクセス処理、または、前記不揮発記憶部に記憶されたデータに対して直接書き込みおよび読み出しをする第２アクセス処理の何れを実行するかを示すアクセス方法を割り当てる割当処理部と、
前記第１アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第１アクセス処理を実行し、前記第２アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第２アクセス処理を実行するアクセス処理部と、
前記第２アクセス処理が割り当てられた複数のページおける同一領域に対する基準値以上の書き換え操作である局所性の高い書き込みを検知して、前記局所性の高い書き込みがされた攻撃対象ページを特定する検知部と、
を備える管理装置。
【請求項１４】
前記局所性の高い書き込みがされた場合、前記攻撃対象ページのアクセス方法を、前記第２アクセス処理から前記第１アクセス処理に変更する回避制御部
をさらに備える請求項１３に記載の管理装置。
【請求項１５】
前記処理回路と、
前記不揮発記憶部と、
請求項１から請求項１４の何れか１項に記載の管理装置と、
を備える情報処理装置。
【請求項１６】
不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置によるメモリ制御方法であって、
前記処理回路からの要求に応じて、前記不揮発記憶部に対して書き込みまたは読み出しを実行し、
前記不揮発記憶部に対する書き込みに応じて、前記不揮発記憶部における領域毎の書き換え回数を示すテーブルを更新し、
前記テーブルを参照して、前記不揮発記憶部の同一領域に対する基準値以上の書き換え操作である局所性の高い書き込みを検知して、前記局所性の高い書き込みがされた攻撃対象領域を特定する
メモリ制御方法。
【請求項１７】
第１記憶部および複数のページを含む不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置によるメモリ制御方法であって、
前記複数のページのそれぞれについて、前記不揮発記憶部から前記第１記憶部に転送したデータに対して書き込みおよび読み出しをする第１アクセス処理、または、前記不揮発記憶部に記憶されたデータに対して直接書き込みおよび読み出しをする第２アクセス処理の何れを実行するかを示すアクセス方法を割り当て、
前記第１アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第１アクセス処理を実行し、前記第２アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第２アクセス処理を実行し、
前記第２アクセス処理が割り当てられた複数のページにおける同一領域に対する基準値以上の書き換え操作である局所性の高い書き込みを検知して、前記局所性の高い書き込みがされた攻撃対象ページを特定する
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、管理装置、情報処理装置およびメモリ制御方法に関する。
【背景技術】
【０００２】
フラッシュメモリ等の不揮発メモリは、書き換え回数に制限がある。このため、不揮発メモリを備える情報処理装置は、不揮発メモリに対してウェアレベリング制御をする。例えば、情報処理装置は、書き換え回数を書き換え単位であるページ単位やそれより大きな単位であるブロック単位で管理して、ページ毎に平均的にデータを書き込む。これにより、情報処理装置は、不揮発メモリの寿命を延ばすことができる。
【０００３】
近年、ストレージクラスメモリと呼ばれる高速な不揮発メモリが開発されている。ストレージクラスメモリは、ページ単位でのデータの書き換えに加えて、ページよりも小さい例えばバイト単位でのデータの書き込みが可能である。このようにバイト単位でデータの書き込み可能となった不揮発メモリは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の作業領域として機能する主記憶装置として用いることができる。
【０００４】
ところで、不揮発メモリは、ＣＰＵの主記憶装置として機能した場合、ＣＰＵからのストア命令またはロード命令等により、キャッシュライン単位あるいはバイト単位で直接アクセスされる。このため、もし、ＣＰＵが、特定のアドレスに対して、局所的な書き込み（同一領域に対する短時間の大量の書き込み）をさせるような悪意のあるプログラムを実行した場合、不揮発メモリは、正常に動作しなくなるおそれがある。従って、不揮発メモリを主記憶装置として用いる情報処理装置は、特定のメモリアドレスに対する不正な書き込みを検知するためのセキュリティ機能を有さなければならない。
【０００５】
特定のアドレスに対する局所的な書き込みを検知するためには、情報処理装置は、不揮発メモリのどのアドレスにどれだけの書き込みがされているかを正確にカウントしなければならない。しかし、キャッシュライン単位あるいはバイト単位での書き込み回数のカウントは、管理のための構造が複雑で大規模となってしまい、情報処理装置のコストが大きくなってしまう。このため、情報処理装置は、小さいコストで正確に不揮発メモリに対する局所的な書き込みを検出する必要があった。
【０００６】
さらに、特定のメモリアドレスに対する不正な書き込みを検知した場合、情報処理装置は、不揮発メモリが正常に動作しなくなることを防がなければならない。従って、不揮発メモリを主記憶装置として用いる情報処理装置は、特定のメモリアドレスに対する不正な書き込みを検知した場合に、不揮発メモリが正常に動作しなくなることを防ぐためのセキュリティ機能を有さなければならない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１４６２５５号公報
【非特許文献】
【０００８】
【非特許文献１】R.  F.  Freitas  and  W.  W.  Wilcke，  “Storage-class  Memory:  The  Next  Storage  System  Technology”，  IBM  Journal  of  Research  and  Development  Vol.52  No.4，  pp.439-447，  2008.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明が解決しようとする課題は、不揮発記憶部に対する不正なアクセスを検知する。
【課題を解決するための手段】
【００１０】
実施形態に係る管理装置は、不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する。前記管理装置は、アクセス処理部と、更新部と、検知部と、を備える。前記アクセス処理部は、前記処理回路からの要求に応じて、前記不揮発記憶部に対して書き込みまたは読み出しを実行する。前記更新部は、前記不揮発記憶部に対する書き込みに応じて、前記不揮発記憶部における領域毎の書き換え回数を示すテーブルを更新する。前記検知部は、前記テーブルを参照して、前記不揮発記憶部の同一領域に対する基準値以上の書き換え操作である局所性の高い書き込みを検知して、前記局所性の高い書き込みがされた攻撃対象領域を特定する。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置のハードウェア構成の一例を示す図。
【図２】不揮発記憶部の構成を示す図。
【図３】アドレス情報の一例を示す図。
【図４】第１実施形態に係る管理装置の構成を示す図。
【図５】変換テーブルの一例を示す図。
【図６】第１アクセス処理および第２アクセス処理の内容を示す図。
【図７】アクセス処理を示すフローチャート。
【図８】カウンタテーブルの一例を示す図。
【図９】管理テーブルの一例を示す図。
【図１０】更新部による処理の流れを示すフローチャート。
【図１１】更新部による管理情報生成処理の流れを示すフローチャート。
【図１２】ウェアレベリング処理の流れを示すフローチャート。
【図１３】管理部の構成を示す図。
【図１４】検知部による第１の処理を示すフローチャート。
【図１５】検知部による第２の処理を示すフローチャート。
【図１６】管理テーブルの変形例を示す図。
【図１７】検知部による第３の処理を示すフローチャート。
【図１８】カウンタテーブルの変形例を示す図。
【図１９】回避制御部による第１の処理を示すフローチャート。
【図２０】回避制御部による第２の処理を示すフローチャート。
【図２１】回避制御部による第３の処理を示すフローチャート。
【図２２】第２実施形態に係る管理装置の構成を示す図。
【図２３】局所性の高い書き込みが検知される場合を説明するための図。
【図２４】識別情報の変形例を示す図。
【図２５】情報処理装置の構成の第１変形例を示す図。
【図２６】情報処理装置の構成の第２変形例を示す図。
【図２７】情報処理装置の構成の第３変形例を示す図。
【図２８】情報処理装置の構成の第４変形例を示す図。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら実施形態に係る情報処理装置１０について詳細に説明する。なお、以下、複数の実施形態について説明をするが、略同一の機能および構成を有するブロックに同一の符号を付け、第２実施形態以降においては重複する内容の説明を省略する。
【００１３】
（第１実施形態）
図１は、情報処理装置１０のハードウェア構成の一例を示す図である。情報処理装置１０は、処理回路１２と、第１記憶部１４と、不揮発記憶部１６と、管理装置１８とを備える。
【００１４】
処理回路１２は、１または複数のプロセッサを有する。プロセッサは、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。プロセッサは、１または複数のＣＰＵコアを含んでいてもよい。処理回路１２は、プログラムを実行して、データを処理する。処理回路１２は、プログラムの実行に応じて、第１記憶部１４または不揮発記憶部１６からデータを読み出したり、第１記憶部１４または不揮発記憶部１６にデータを書き込んだりする。
【００１５】
また、処理回路１２は、Ｌ１データキャッシュ、Ｌ１命令キャッシュ、Ｌ２キャッシュおよびＬ３キャッシュ等の階層的なキャッシュメモリを有する。処理回路１２は、このようなキャッシュメモリを用いて、第１記憶部１４または不揮発記憶部１６に記憶されているデータを一時的に記憶する。処理回路１２は、例えば、階層的なキャッシュにおける最下層のキャッシュ（ラストレベルキャッシュ）でキャッシュミスをした場合、キャッシュライン単位で第１記憶部１４または不揮発記憶部１６に対してアクセスして必要なデータを読み出したり書き込んだりする。
【００１６】
なお、処理回路１２は、データ処理を実行できれば、どのような回路であってもよい。例えば、処理回路１２は、ＧＰＧＰＵ（Ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で利用されるＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であってもよい。また、処理回路１２は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等のアクセラレータであってもよい。
【００１７】
第１記憶部１４は、処理回路１２による作業領域として用いられる主記憶装置（メインメモリ）である。第１記憶部１４は、例えば、電源の供給を停止すると記憶しているデータが消える揮発記憶部である。第１記憶部１４は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓ  Ｍｅｍｏｒｙ）である。なお、第１記憶部１４は、ＤＲＡＭと同様に高速アクセスが可能な、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓ  Ｍｅｍｏｒｙ）等の不揮発メモリであってもよい。
【００１８】
また、第１記憶部１４は、不揮発記憶部１６よりも書き込み可能回数が多い。例えば、第１記憶部１４は、書き込み可能回数を考慮した設計をしなくてよい程度（例えば、書き込み回数に制限が無いとして設計をすることが可能な程度）、書き込み可能回数が多い。
【００１９】
不揮発記憶部１６は、電源の供給を停止してもデータを記憶し続けるメモリである。不揮発記憶部１６は、第１記憶部１４とともに処理回路１２の主記憶装置として機能する。
【００２０】
不揮発記憶部１６は、例えば、ＤＲＡＭより大容量な大容量高速不揮発メモリ（Ｎｏｎ−ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）を含む。不揮発記憶部１６は、例えば、ＭＲＡＭ、ＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＣＲＡＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ    Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、３ＤＸＰｏｉｎｔまたはＭｅｍｒｉｓｔｏｒ等である。不揮発記憶部１６は、いわゆるストレージクラスメモリ（ＳＣＭ）と呼ばれるメモリであってもよい。また、不揮発記憶部１６は、複数の半導体装置を１つの基板または筐体等に設けたモジュールであってもよい。
【００２１】
不揮発記憶部１６は、第１記憶部１４と比較して容量が大きい。不揮発記憶部１６の容量は、第１記憶部１４と同じであってもよい。また、不揮発記憶部１６は、第１記憶部１４のアクセス速度と同等または少し遅い程度である。また、不揮発記憶部１６は、待機電力がゼロか、または、第１記憶部１４と比較して待機電力が非常に少ない。不揮発記憶部１６は、一例として、アクセスレイテンシが１０ｎ秒から数μ秒程度の間のメモリである。
【００２２】
不揮発記憶部１６は、バイト単位等の小領域単位でデータを書き込みおよび読み出し可能である。従って、処理回路１２は、ロード命令またはストア命令により不揮発記憶部１６に対して直接アクセスが可能である。処理回路１２は、例えばキャッシュライン単位等で不揮発記憶部１６に直接アクセスする。
【００２３】
管理装置１８は、第１記憶部１４および不揮発記憶部１６に対する、処理回路１２によるデータの読み出しおよび書き込みを制御する。管理装置１８は、処理回路１２からの第１記憶部１４および不揮発記憶部１６に対するアクセス要求を処理する。すなわち、管理装置１８は、処理回路１２からの書込命令に応じて、データを第１記憶部１４または不揮発記憶部１６に書き込む。また、管理装置１８は、処理回路１２からの読出命令に応じて、データを第１記憶部１４または不揮発記憶部１６から読み出し、読み出したデータを処理回路１２に与える。
【００２４】
また、管理装置１８は、不揮発記憶部１６に対するウェアレベリング制御を実行する。より具体的には、管理装置１８は、不揮発記憶部１６における領域毎のデータの書き換え回数を管理する。そして、管理装置１８は、領域毎の書き換え回数に基づき、不揮発記憶部１６における全体の領域に平均的にデータが書き込まれるように、データの書き込み位置を制御する。
【００２５】
なお、管理装置１８は、例えば、処理回路１２とは別体のハードウェアで構成されたメモリコントローラである。また、管理装置１８は、処理回路１２の一部のハードウェア（例えば、処理回路１２と同一の半導体基板に形成された回路）であってもよいし、処理回路１２の一部のハードウェアとメモリコントローラとの組み合わせにより実現されてもよい。また、管理装置１８は、処理回路１２が実行するオペレーティングシステムの一部の機能により実現されてもよいし、オペレーティングシステムの一部の機能とメモリコントローラとの組み合わせにより実現されてもよい。
【００２６】
また、管理装置１８は、例えば、処理回路１２とは別体のハードウェアで構成されたメモリ管理ユニット（ＭＭＵ）であってもよい。また、管理装置１８は、処理回路１２の一部のハードウェアとメモリ管理ユニットとの組み合わせにより実現されてもよい。また、管理装置１８は、処理回路１２が実行するオペレーティングシステムの一部の機能とメモリ管理ユニットとの組み合わせにより実現されてもよい。
【００２７】
また、管理装置１８は、メモリコントローラと、ＭＭＵとの組み合わせにより実現されてもよい。また、管理装置１８は、処理回路１２の一部のハードウェアと、メモリコントローラと、メモリ管理ユニットとの組み合わせにより実現されてもよい。また、管理装置１８は、処理回路１２が実行するオペレーティングシステムの一部の機能と、メモリコントローラと、メモリ管理ユニットとの組み合わせにより実現されてもよい。
【００２８】
図２は、不揮発記憶部１６の構成を示す図である。不揮発記憶部１６は、複数のページ（第１領域）を含む。ページは、処理回路１２が管理するデータ単位に対応する。ページは、例えば、オペレーティングシステムが管理する仮想記憶装置のページに対応する。ページは、例えば、４Ｋバイトであってよい。
【００２９】
また、複数のページのそれぞれは、複数のキャッシュライン（第２領域）を含む。キャッシュラインは、処理回路１２内のキャッシュメモリに対するデータの書き換え単位に対応する。処理回路１２は、キャッシュラインの単位で、不揮発記憶部１６に対してデータの書き込みおよび読み出しをする。処理回路１２は、ページ単位でもデータの書き込みおよび読み出しが可能である。
【００３０】
キャッシュラインは、例えば、６４バイトである。なお、第２領域は、キャッシュラインよりも小さい単位（例えば、バイト単位）であってもよいし、複数のキャッシュラインであってもよい。
【００３１】
図３は、アドレス情報の一例を示す図である。管理装置１８は、例えば、処理回路１２から図３に示すような、３つのビットフィールドに分割されたアドレス情報を取得する。
【００３２】
アドレス情報の上位のビットフィールドは、データを書き込むまたはデータを読み出すページ（対象ページ）の位置を示す。アドレス情報の中位のビットフィールドは、対象ページにおける、データを書き込むまたはデータを読み出すキャッシュライン（対象キャッシュライン）の位置を示す。また、アドレス情報の下位のビットフィールドは、対象キャッシュラインにおける、データを書き込むまたはデータを読み出すバイトの位置を示す。
【００３３】
図４は、管理装置１８の構成を示す図である。管理装置１８は、設定記憶部２６と、アクセス処理部２８と、カウンタ記憶部３２と、管理情報記憶部３４と、更新部３６と、ウェアレベリング実行部３８と、管理部４０とを有する。
【００３４】
設定記憶部２６は、変換テーブルを記憶する。変換テーブルは、処理回路１２がアクセス要求をするそれぞれのページについて、要求アドレスと、第１記憶部１４または不揮発記憶部１６における対応するページ番号（物理アドレス）との対応関係を記憶する。
【００３５】
さらに、変換テーブルは、処理回路１２がアクセス要求をするそれぞれのページについて、第１アクセス処理または第２アクセス処理の何れを実行するか示すアクセス方法を記憶する。
【００３６】
第１アクセス処理は、不揮発記憶部１６から第１記憶部１４に転送したデータに対して、書き込みおよび読み出しをする方法である。第２アクセス処理は、不揮発記憶部１６に記憶されるデータに対して直接書き込みおよび読み出しをする方法である。なお、変換テーブルの詳細については、図５を参照して後述する。
【００３７】
アクセス処理部２８は、処理回路１２からの第１記憶部１４および不揮発記憶部１６に対するアクセス要求を処理する。すなわち、アクセス処理部２８は、処理回路１２からの書込命令に応じて、データを第１記憶部１４または不揮発記憶部１６に書き込む。また、アクセス処理部２８は、処理回路１２からの読出命令に応じて、データを第１記憶部１４または不揮発記憶部１６から読み出し、読み出したデータを処理回路１２に与える。
【００３８】
また、アクセス処理部２８は、処理回路１２がアクセス要求をしたページについて、変換テーブルに記憶されたアクセス方法により第１記憶部１４および不揮発記憶部１６にアクセスする。つまり、アクセス処理部２８は、第１アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、第１アクセス処理を実行する。また、アクセス処理部２８は、第２アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、第２アクセス処理を実行する。アクセス方法の詳細については、図５、図６および図７を参照して後述する。
【００３９】
カウンタ記憶部３２は、カウンタテーブルを記憶する。カウンタテーブルは、不揮発記憶部１６に含まれる複数のページのそれぞれについての、データの書き換え回数を表すカウンタ値を格納する。カウンタテーブルの詳細については、図８を参照して後述する。
【００４０】
管理情報記憶部３４は、管理テーブルを記憶する。管理テーブルの詳細については、図９を参照して後述する。
【００４１】
更新部３６は、カウンタテーブルに格納されたそれぞれのカウンタ値、および、管理テーブルを更新する。更新部３６は、処理回路１２が不揮発記憶部１６にデータを書き込んだ場合、書き込んだデータのアドレス情報を取得し、取得したアドレス情報に基づきカウンタテーブルおよび管理テーブルを更新する。更新部３６の具体的な処理手順については、図１０および図１１を参照して後述する。
【００４２】
ウェアレベリング実行部３８は、カウンタ記憶部３２に記憶されたページ毎のカウンタ値に基づき、不揮発記憶部１６に対するウェアレベリング制御を実行する。ウェアレベリング実行部３８は、不揮発記憶部１６における全体の領域に平均的にデータが書き込まれるように、不揮発記憶部１６に記憶されているデータの配置を制御する。なお、ウェアレベリング実行部３８の処理については、図１２を参照して後述する。
【００４３】
管理部４０は、不揮発記憶部１６に対する空間的および時間的に局所性の高い書き込みを検知する。すなわち、管理部４０は、不揮発記憶部１６の同一領域に対する基準値以上の書き換え操作である局所性の高い書き込みを検知する。そして、管理部４０は、局所性の高い書き込みがされた攻撃対象領域を特定する。さらに、管理部４０は、局所性の高い書き込みの発生が検知された場合、不揮発記憶部１６が正常に動作しなくなることを回避するための回避処理を実行する。なお、管理部４０の詳細な構成および処理については、図１３以降においてさらに説明する。
【００４４】
また、さらに、通常動作時において、管理部４０は、変換テーブルに記憶されたアクセス方法の変更処理を行ってもよい。例えば、管理部４０は、不揮発記憶部１６に対する書き込み量が設定値より大きい場合、変換テーブルにより管理されている複数のページのうちの第２アクセス処理に設定されている何れかの交換対象ページを選択する。そして、管理部４０は、選択した交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。
【００４５】
図５は、変換テーブルの一例を示す図である。変換テーブルは、処理回路１２がアクセス要求をするそれぞれのページについて、要求アドレスと、第１記憶部１４または不揮発記憶部１６における対応するページ番号（物理アドレス）との対応関係を記憶する。すなわち、変換テーブルは、処理回路１２による要求アドレスに対応するデータが、第１記憶部１４または不揮発記憶部１６における何れのページに記憶されているのかを示すマッピング情報を記憶する。
【００４６】
例えば、図５の例では、変換テーブルにおけるページ番号の列に“Ｓｘｘｘｘ”と記述されたページは、不揮発記憶部１６におけるページ番号が“ｘｘｘｘ”のページを示す。例えば、図５の例では、ページ番号の列に“Ｄｘｘｘｘ”と記述されたページは、第１記憶部１４におけるページ番号が“ｘｘｘｘ”のページを示す。なお、ここでのｘは、任意の値である。
【００４７】
さらに、変換テーブルは、処理回路１２がアクセス要求をするそれぞれのページについて、第１アクセス処理または第２アクセス処理の何れを実行するか示すアクセス方法を記憶する。なお、変換テーブルは、図５に示すような構成に限らず、他の構成であってもよい。
【００４８】
図６は、第１アクセス処理および第２アクセス処理の内容を示す図である。アクセス処理部２８は、第１アクセス処理に設定されている第１ページに対して書き込みまたは読み出しの要求を受けた場合、不揮発記憶部１６に対して、第１アクセス処理を実行する。
【００４９】
例えば、図６に示すように、第１アクセス処理において、アクセス処理部２８は、不揮発記憶部１６における第１ページに記憶された全てのデータを転送して、第１記憶部１４に記憶させる。これにより、第１記憶部１４は、不揮発記憶部１６における第１ページに記憶されたデータのコピーを記憶することができる。続いて、第１アクセス処理において、アクセス処理部２８は、第１記憶部１４に記憶されている、不揮発記憶部１６から転送されたデータに対して、読み出しおよび書き込みをする。例えば、アクセス処理部２８は、不揮発記憶部１６から第１記憶部１４に転送されたデータに対して、ページより小さいサイズ（例えばプロセッサのキャッシュラインサイズ）でデータの読み出しおよび書き込みをする。そして、第１アクセス処理において、アクセス処理部２８は、第１記憶部１４の空き容量が無くなり不揮発記憶部１６から第１記憶部１４にデータを転送できなくなった場合、および、第１記憶部１４に記憶させておくことが不要と判断された場合等において、第１記憶部１４に転送されたデータを、不揮発記憶部１６における第１ページに書き戻す。
【００５０】
なお、アクセス処理部２８は、第１記憶部１４に転送されたデータを、第１ページ（同じ場所）以外に書き戻してもよい。例えば、アクセス処理部２８は、第１アクセス処理において、不揮発記憶部１６から第１記憶部１４に転送されたデータを、何れの要求アドレスも対応付けられていない未使用ページに書き戻してよい。これにより、アクセス処理部２８は、ページ毎の書き換え回数の隔たりを小さくし、特定のページの品質劣化を抑制することができる。
【００５１】
また、アクセス処理部２８は、第２アクセス処理に設定されている第２ページに対して書き込みまたは読み出しの要求を受けた場合、不揮発記憶部１６に対して、第２アクセス処理を実行する。
【００５２】
例えば、図６に示すように、第２アクセス処理において、アクセス処理部２８は、不揮発記憶部１６における第２ページに対して、直接読み出しおよび書き込みをする。例えば、アクセス処理部２８は、ページより小さいサイズでデータの読み出しおよび書き込みをする。
【００５３】
このように、アクセス処理部２８は、２種類のアクセス方法により不揮発記憶部１６に対してアクセスする。例えば、メモリアクセスに局所性が高いアプリケーションを実行した場合、アクセス処理部２８は、第１アクセス処理により不揮発記憶部１６に記憶されたページをアクセスする。これにより、アクセス処理部２８は、メモリアクセスに局所性が高いアプリケーションを実行した場合、同一のページに対してより高速に処理をすることができる。
【００５４】
また、例えば、ランダムアクセスのようにメモリアクセスに局所性が低い処理を実行する場合、アクセス処理部２８は、第２アクセス処理により不揮発記憶部１６に記憶されたページをアクセスする。これにより、アクセス処理部２８は、局所性が低い処理を実行する場合、不揮発記憶部１６から第１記憶部１４への転送処理のオーバヘッドを無くして、効率良く処理をすることができる。このように、アクセス処理部２８は、第１アクセス処理および第２アクセス処理の２種類のアクセス方法を用いることにより、処理の効率化を図ることができる。
【００５５】
図７は、第１実施形態に係るアクセス処理部２８によるアクセス処理を示すフローチャートである。第１実施形態に係るアクセス処理部２８は、図７に示すフローチャートに従って、第１記憶部１４および不揮発記憶部１６に対してアクセスをする。
【００５６】
まず、Ｓ１１において、アクセス処理部２８は、処理回路１２からアクセス要求があったか否かを判断する。アクセス処理部２８は、アクセス要求が無い場合（Ｓ１１のＮｏ）、処理をＳ１１で待機する。アクセス処理部２８は、アクセス要求が有った場合（Ｓ１１のＹｅｓ）、処理をＳ１２に進める。
【００５７】
Ｓ１２において、アクセス処理部２８は、変換テーブルを参照して、アクセス要求に含まれる要求アドレスから、第１記憶部１４または不揮発記憶部１６におけるアクセス先となる対象ページのページ番号を特定する。これにより、アクセス処理部２８は、要求アドレスから物理アドレスへのアドレス変換処理を実行することができる。
【００５８】
続いて、Ｓ１３において、アクセス処理部２８は、対象ページに対するアクセス方法が、第１アクセス処理か否かを判断する。対象ページに対するアクセス方法が第１アクセス処理ではない場合、すなわち、アクセス方法が第２アクセス処理である場合（Ｓ１３のＮｏ）、アクセス処理部２８は、処理をＳ１４に進める。Ｓ１４において、アクセス処理部２８は、不揮発記憶部１６における対象ページに直接アクセスする。そして、アクセス処理部２８は、Ｓ１４の処理を終えると本フローを終了する。
【００５９】
また、対象ページに対するアクセス方法が第１アクセス処理である場合（Ｓ１３のＹｅｓ）、アクセス処理部２８は、処理をＳ１５に進める。Ｓ１５において、アクセス処理部２８は、データが第１記憶部１４に転送済みか未転送かを判断する。アクセス処理部２８は、データが第１記憶部１４に転送済みか未転送かを、変換テーブルにおけるページ番号（物理アドレス）を参照することにより判断することができる。転送済みの場合（Ｓ１５のＹｅｓ）、アクセス処理部２８は、処理をＳ１７に進める。
【００６０】
未転送の場合（Ｓ１５のＮｏ）、アクセス処理部２８は、処理をＳ１６に進める。Ｓ１６において、アクセス処理部２８は、対象ページのデータを第１記憶部１４に転送する。さらに、アクセス処理部２８は、変換テーブルにおける転送したデータのページ番号（物理アドレス）を、第１記憶部１４における転送先のページ番号に変更する。アクセス処理部２８は、Ｓ１６の処理を終えると、処理をＳ１７に進める。
【００６１】
Ｓ１７において、アクセス処理部２８は、第１記憶部１４における対象ページにアクセスする。そして、アクセス処理部２８は、Ｓ１７の処理を終えると本フローを終了する。以上のように処理を実行することにより、アクセス処理部２８は、変換テーブルに示されたアクセス方法により第１記憶部１４および不揮発記憶部１６にアクセスすることができる。
【００６２】
図８は、カウンタテーブルの一例を示す図である。カウンタテーブルは、不揮発記憶部１６に含まれる複数のページ（第１領域）のそれぞれについての、データの書き換え回数を表すカウンタ値を格納する。例えば、カウンタテーブルは、不揮発記憶部１６に含まれる複数のページを識別する識別情報（例えばページ番号）のそれぞれに対応させて、カウンタ値を格納する。
【００６３】
それぞれのカウンタ値は、対応するページの書き換え回数の推定値を表してもよい。それぞれのカウンタ値は、工場出荷時等の初期時には、例えば０とされている。それぞれのカウンタ値は、更新部３６により１ずつ増加（インクリメント）されていく。
【００６４】
図９は、管理テーブルの一例を示す図である。管理テーブルは、所定個のエントリを有する。例えば、図９の例において、管理テーブルは、６４個のエントリを有する。
【００６５】
それぞれのエントリには、管理情報を格納することができる。すなわち、管理テーブルは、所定個のページのそれぞれについての管理情報を格納可能である。管理テーブルが格納できる管理情報の数は、不揮発記憶部１６に含まれるページの数より少ない。管理テーブルは、処理回路１２が不揮発記憶部１６における最近アクセスしたページについての管理情報を格納する。管理テーブルは、エントリが一杯となった場合、例えば最も古い管理情報（アクセスしてから最も時間が経過した管理情報）を消去して、新しい管理情報を格納する。
【００６６】
管理情報は、識別情報と、マップ情報とを含む。
【００６７】
識別情報は、その管理情報が管理するページを識別するための番号（ページ番号）である。更新部３６は、識別情報を参照することにより、そのエントリが何れのページを管理している管理情報を格納しているかを判断することができる。
【００６８】
マップ情報は、対応するページに含まれる複数のキャッシュライン（第２領域）のそれぞれが、書き込み済みか未書き込みかを示す。例えば、マップ情報は、対応するページにデータが記憶されていない場合には、対応するページに含まれている複数のキャッシュラインの全ての状態が、未書き込みとなる。管理情報は、対応するページにデータが記憶されていない状態から、何れかのキャッシュラインにデータが書き込まれた場合、そのキャッシュラインの状態が書き込み済みとされ、他のキャッシュラインの状態が未書き込みとされる。
【００６９】
例えば、マップ情報は、ページに含まれる複数のキャッシュラインのそれぞれに対応したビットを含む。例えば、１ページ内に６４個のキャッシュラインが含まれる場合、マップ情報は、６４個のビットを含む。それぞれのビットは、例えば１である場合、対応するキャッシュラインが、書き込み済みであることを示す。また、それぞれのビットは、例えば０である場合、対応するキャッシュラインが、未書き込みであることを示す。
【００７０】
なお、管理テーブルは、全てのエントリに管理情報が格納されていなくてよい。つまり、管理テーブルは、未使用エントリが有ってもよい。
【００７１】
図１０は、更新部３６による処理の流れを示すフローチャートである。更新部３６は、図１０に示すフローチャートに従って、カウンタテーブルおよび管理テーブルを更新する。
【００７２】
まず、Ｓ２１において、更新部３６は、不揮発記憶部１６にデータの書き込みがされるか否かを検出する。更新部３６は、書き込みがされない場合（Ｓ２１のＮｏ）、処理をＳ２１で待機し、書き込みがされる場合（Ｓ２１のＹｅｓ）、処理をＳ２２に進める。
【００７３】
Ｓ２２において、更新部３６は、書き込み対象のデータ（第１データ）が書き込まれるページである対象ページ（対象第１領域）についての管理情報が、管理テーブルに存在するか否かを判断する。
【００７４】
管理テーブルに対象ページについての管理情報が存在しない場合（Ｓ２２のＮｏ）、更新部３６は、処理をＳ２３に進める。Ｓ２３において、更新部３６は、管理情報生成処理を実行する。管理情報生成処理については、図１１を参照して説明する。更新部３６は、管理情報生成処理を終了した場合、本フローを終了し、次の書き込みを待機する。
【００７５】
管理テーブルに対象ページについての管理情報が存在する場合（Ｓ２２のＹｅｓ）、更新部３６は、処理をＳ２４に進める。
【００７６】
Ｓ２４において、更新部３６は、対象ページにおける管理情報を参照して、第１データが書き込まれるキャッシュラインである対象キャッシュライン（対象第２領域）の状態が、書き込み済みであるか否かを判断する。例えば、更新部３６は、対象ページについての管理情報におけるマップ情報を参照して、対象キャッシュラインに対応するビットが１であるか否かを判断する。
【００７７】
更新部３６は、対象キャッシュラインの状態が未書き込みの場合（Ｓ２４のＮｏ）、処理をＳ２５に進める。Ｓ２５において、更新部３６は、対象ページについての管理情報に示された対象キャッシュラインの状態を、未書き込みから、書き込み済みに変更する。例えば、更新部３６は、対応するビットを、０から１に変更する。これにより、更新部３６は、第１データが書き込まれた後の不揮発記憶部１６の状態を、管理テーブルに反映することができる。更新部３６は、Ｓ２５の処理を終了した場合、本フローを終了し、次の書込を待機する。
【００７８】
更新部３６は、対象キャッシュラインの状態が書き込み済みの場合、例えば、対象キャッシュラインに対応するビットが１である場合（Ｓ２４のＹｅｓ）、処理をＳ２６に進める。Ｓ２６において、更新部３６は、対象ページについての管理情報に示された対象キャッシュライン以外のキャッシュラインの状態を、未書き込みに変更する。つまり、更新部３６は、対象ページについての管理情報に示された対象キャッシュラインのみを書き込み済みとし、他のキャッシュラインを未書き込みとする。例えば、更新部３６は、対応するビットのみを１とし、他のビットを０とする。
【００７９】
これにより、更新部３６は、対象キャッシュラインに対して第１データを書き込んだ後の不揮発記憶部１６の状態を、管理テーブルに反映することができる。
【００８０】
更新部３６は、Ｓ２６を終了すると、Ｓ２７に処理を進める。Ｓ２７において、更新部３６は、対象ページについてのカウンタ値を更新する。例えば、更新部３６は、カウンタテーブルにおける、アドレス情報に含まれるページ番号に対応するカウンタ値を、１増加させる。これにより、更新部３６は、対象ページの書き換え回数を更新することができる。
【００８１】
なお、更新部３６は、Ｓ２６とＳ２７の処理を逆に実行してもよい。更新部３６は、Ｓ２６およびＳ２７の処理を終了した場合、本フローを終了し、次の書込を待機する。
【００８２】
図１１は、更新部３６による管理情報生成処理の流れを示すフローチャートである。更新部３６は、図１０のＳ２３における管理情報生成処理において、図１１に示すＳ３１からＳ３５の処理を実行する。
【００８３】
まず、Ｓ３１において、更新部３６は、管理テーブルに未使用エントリが有るか否かを判断する。つまり、更新部３６は、管理情報が格納されていないエントリが、管理テーブルに存在するか否かを判断する。
【００８４】
未使用エントリが有る場合（Ｓ３１のＹｅｓ）、更新部３６は、処理をＳ３２に進める。Ｓ３２において、更新部３６は、未使用エントリに対象ページについての管理情報を書き込む。つまり、更新部３６は、対象ページを識別する識別情報と、対象キャッシュラインのみを書き込み済みとし、他の領域を未書き込みとしたマップ情報とを含む管理情報を、未使用エントリに書き込む。
【００８５】
これにより、更新部３６は、第１データが書き込まれた後の不揮発記憶部１６の状態を管理テーブルに反映することができる。更新部３６は、Ｓ３２の処理を終了した場合、処理を図１０のフローに戻す。
【００８６】
未使用エントリが無い場合（Ｓ３１のＮｏ）、更新部３６は、処理をＳ３３に進める。Ｓ３３において、更新部３６は、管理テーブルから、何れかの使用中エントリを選択する。例えば、更新部３６は、最も古い管理情報を格納した使用中エントリを選択する。なお、更新部３６は、他のアルゴリズムに従って何れかの使用中エントリを選択してもよい。
【００８７】
更新部３６は、Ｓ３３を終了すると、Ｓ３４に処理を進める。Ｓ３４において、更新部３６は、選択した使用中エントリに書き込まれている管理情報を消去して、対象ページについての管理情報を書き込む。つまり、更新部３６は、選択した使用中エントリに、対象ページを識別する識別情報と、対象キャッシュラインのみを書き込み済みとし、他の領域を未書き込みとしたマップ情報とを含む管理情報を、上書きする。
【００８８】
これにより、更新部３６は、選択した管理情報（例えば最も古い管理情報）を管理テーブルから消去して、新たな管理情報を管理テーブルに格納することができる。そして、更新部３６は、第１データが書き込まれた後の不揮発記憶部１６の状態を管理テーブルに反映することができる。
【００８９】
更新部３６は、Ｓ３４を終了すると、Ｓ３５に処理を進める。Ｓ３５において、更新部３６は、管理テーブルから消去した管理情報により管理されていたページについてのカウンタ値を更新する。例えば、更新部３６は、カウンタテーブルにおける、消去する管理情報に含まれていたページ番号に対応するカウンタ値を、１増加させる。
【００９０】
Ｓ３５の処理を実行することにより、更新部３６は、管理テーブルを用いた管理を終了したページについて、データを追記したと仮定して、書き込み回数を更新することができる。これにより、更新部３６は、管理テーブルによりアクティブに管理がされていないページについて、書き込み回数を推定することができる。
【００９１】
なお、更新部３６は、Ｓ３４とＳ３５の処理を逆に実行してもよい。更新部３６は、Ｓ３４およびＳ３５の処理を終了した場合、処理を図１０のフローに戻す。
【００９２】
以上のように、管理装置１８は、不揮発記憶部１６に含まれるページの数より少ない数の管理情報を記憶する。これにより、管理装置１８によれば、管理テーブルのエントリ数を少なくすることができるので、管理情報記憶部３４の記憶容量を少なくすることができる。
【００９３】
さらに、管理装置１８は、管理テーブルにより管理されていないページについては、管理テーブルから管理情報が消去されたタイミングでカウンタ値を更新する。これにより、管理装置１８によれば、不揮発記憶部１６に含まれる全てのページについての書き込み回数を精度良く推定することができる。
【００９４】
図１２は、ウェアレベリング実行部３８によるウェアレベリング処理の流れを示すフローチャートである。ウェアレベリング実行部３８は、図１２に示すフローチャートに従って、ウェアレベリングを実行する。
【００９５】
例えば、ウェアレベリング実行部３８は、定期的に、図１２に示すウェアレベリングを実行する。例えば、ウェアレベリング実行部３８は、カウンタテーブルにおけるカウンタ値が所定回更新される毎に、ウェアレベリングを実行する。
【００９６】
まず、Ｓ４１において、ウェアレベリング実行部３８は、カウンタテーブルを参照して、カウンタ値が大きい方から所定個のページを選択する。続いて、Ｓ４２において、ウェアレベリング実行部３８は、カウンタテーブルを参照して、カウンタ値が小さい方から同数のページを選択する。
【００９７】
続いて、Ｓ４３において、ウェアレベリング実行部３８は、不揮発記憶部１６における、カウンタ値が大きい方から所定個のページに記録されているデータと、カウンタ値が小さい方から所定個のページに記録されているデータとのページ位置を交換する。さらに、Ｓ４３において、ウェアレベリング実行部３８は、変換テーブルにおける、ページ位置を変更したデータの物理アドレスを示すページ番号を修正する。
【００９８】
以上の処理を実行することにより、ウェアレベリング実行部３８は、キャッシュライン単位のメモリアクセスを考慮した上で推定したページ毎の書き換え回数に基づき、不揮発記憶部１６における全体の領域に平均的にデータが書き込まれるように、データの書き込み位置を制御することができる。なお、ウェアレベリング実行部３８は、図１２に示したフローチャートとは異なる処理によりウェアレベリングを実行してもよい。
【００９９】
図１３は、管理部４０の構成を示す図である。管理部４０は、検知部５２と、回避制御部５４とを含む。
【０１００】
検知部５２は、不揮発記憶部１６に対する空間的および時間的に局所性の高い書き込みを検知する。すなわち、管理部４０は、不揮発記憶部１６の同一領域に対する基準値以上の書き換え操作である局所性の高い書き込みを検知する。そして、検知部５２は、局所性の高い書き込みがされた攻撃対象領域を特定する。
【０１０１】
例えば、検知部５２は、同一領域に対する基準回数以上の連続書き換えを検知し、基準回数以上の連続した書き換えが発生した領域を、攻撃対象領域として特定する。例えば、検知部５２は、不揮発記憶部１６における同一ページに対する基準回数以上の連続した書き換えを、局所性の高い書き込みとして検知する。この場合、検知部５２は、局所性の高い書き込みがされたと検知されたページを攻撃対象ページとして特定する。
【０１０２】
また、例えば、検知部５２は、不揮発記憶部１６における同一キャッシュライン（第２領域）に対する基準回数以上の連続した書き込みを、局所性の高い書き込みとして検知する。この場合、検知部５２は、局所性の高い書き込みがされたと検知されたキャッシュラインを攻撃対象キャッシュラインとして特定する。
【０１０３】
また、例えば、検知部５２は、同一領域に対する所定期間内における基準回数以上の書き換えを検知し、所定期間内における基準回数以上の書き換えが発生した領域を、攻撃対象領域として特定する。所定期間内における基準回数以上の書き込みとは、例えば、全部で１０回の書き込みがされた期間内で、同一領域に対して８割以上（８回以上）行われるような書き込みをいう。
【０１０４】
例えば、検知部５２は、不揮発記憶部１６における同一ページに対する所定期間内における基準回数以上の書き換えを、局所性の高い書き込みとして検知する。この場合、検知部５２は、局所性の高い書き込みがされたと検知されたページを攻撃対象ページとして特定する。
【０１０５】
また、例えば、検知部５２は、不揮発記憶部１６における同一キャッシュライン（第２領域）に対する所定期間内における基準回数以上の書き込みを、局所性の高い書き込みとして検知する。この場合、検知部５２は、局所性の高い書き込みがされたと検知されたキャッシュラインを攻撃対象キャッシュラインとして特定する。
【０１０６】
さらに、検知部５２は、不揮発記憶部１６における領域毎の書き換え回数を示すテーブルを参照して、不揮発記憶部１６に対する局所性の高い書き込みを検知する。例えば、検知部５２は、カウンタテーブルに格納されたカウンタ値の更新を検出して、同一ページに対する局所性の高い書き込みを検知する。
【０１０７】
そして、検知部５２は、局所性の高い書き込みの発生を検知した場合、局所性の高い書き込みがされたこと、および、特定した攻撃対象領域を回避制御部５４に通知する。例えば、検知部５２は、攻撃対象ページのページ番号、または、攻撃対象キャッシュラインのページ番号およびキャッシュライン番号を回避制御部５４に通知する。
【０１０８】
検知部５２は、このような処理を実行することにより、処理回路１２により悪意のあるプログラムが実行された可能性があることを検知することができる。そして、検知部５２は、悪意のあるプログラムにより攻撃された可能性の有る攻撃対象領域を回避制御部５４に通知することができる。
【０１０９】
回避制御部５４は、検知部５２により局所性の高い書き込みの発生が検知された場合、不揮発記憶部１６が正常に動作しなくなることを回避するための回避処理を実行する。
【０１１０】
例えば、回避制御部５４は、局所性の高い書き込みの発生が検知された場合、不揮発記憶部１６における攻撃対象領域に記憶された対象データを第１記憶部１４に移動させる。例えば、回避制御部５４は、局所性の高い書き込みの発生が検知された場合、攻撃対象ページ、または、攻撃対象キャッシュラインを含むページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。これにより、回避制御部５４は、処理回路１２により悪意のあるプログラムが実行された可能性がある場合、不揮発記憶部１６に対するアクセスを強制的に第１記憶部１４に移動させて、不揮発記憶部１６が正常に動作しなくなることを回避することができる。
【０１１１】
また、例えば、回避制御部５４は、局所性の高い書き込みが検知された場合、アクセス処理部２８による攻撃対象領域に対するアクセスを停止させる。例えば、回避制御部５４は、アクセス処理部２８による攻撃対象領域に対する書き込みを停止させてもよい。これにより、回避制御部５４は、処理回路１２により悪意のあるプログラムが実行された可能性がある場合、不揮発記憶部１６に対する不正な書き込みを即座に停止させることができる。
【０１１２】
また、例えば、回避制御部５４は、局所性の高い書き込みの発生が検知された場合、局所性の高い書き込みがされたことを処理回路１２に通知する。これにより、回避制御部５４は、不正アクセスがされているか否かを処理回路１２に判断させることができる。
【０１１３】
さらに、回避制御部５４は、局所性の高い書き込みがされたことを処理回路１２に通知した後に、不正アクセスが発生したことの通知を処理回路１２から取得した場合、アクセス処理部２８による不揮発記憶部１６に対するアクセスを停止させてもよい。これにより、回避制御部５４は、処理回路１２により悪意のあるプログラムが実行されていた場合、不揮発記憶部１６に対するアクセスを停止させることができる。
【０１１４】
このように回避制御部５４は、処理回路１２により悪意のあるプログラムが実行された可能性がある場合、悪意のあるプログラムにより攻撃された可能性の有る攻撃対象領域を保護することができる。
【０１１５】
図１４は、検知部５２による第１の処理を示すフローチャートである。検知部５２は、例えば、図１４に示すフローチャートに従って処理を行う。
【０１１６】
まず、Ｓ１１１において、検知部５２は、Ｎを０にリセットする。Ｎは、同一ページに対する連続書き換え回数を表す変数である。続いて、Ｓ１１２において、検知部５２は、カウンタテーブルに格納されている何れかのカウンタ値が更新されたか否かを判断する。カウンタ値が更新されていない場合（Ｓ１１２のＮｏ）、検知部５２は、Ｓ１１２で処理を待機する。カウンタ値が更新された場合（Ｓ１１２のＹｅｓ）、検知部５２は、処理をＳ１１３に進める。
【０１１７】
Ｓ１１３において、検知部５２は、カウンタ値が更新されたページのページ番号を取得する。続いて、Ｓ１１４において、検知部５２は、前回カウンタ値が更新されたページと、今回カウンタ値が更新されたページとが同一であるか否かを判断する。
【０１１８】
ページが同一でない場合（Ｓ１１４のＮｏ）、検知部５２は、処理をＳ１１５に進める。Ｓ１１５において、検知部５２は、Ｎを０にリセットする。Ｓ１１５を終えると、検知部５２は、処理をＳ１１８に進める。
【０１１９】
ページが同一である場合（Ｓ１１４のＹｅｓ）、検知部５２は、処理をＳ１１６に進める。Ｓ１１６において、Ｎを１増加させる。続いて、Ｓ１１７において、検知部５２は、Ｎが予め定められた基準回数（Ｒ）より大きいか否かを判断する。ＮがＲより大きくない場合（Ｓ１１７のＮｏ）、検知部５２は、処理をＳ１１８に進める。ＮがＲより大きい場合（Ｓ１１７のＹｅｓ）、検知部５２は、処理をＳ１１９に進める。
【０１２０】
Ｓ１１８において、検知部５２は、今回のページ番号を記憶して、処理をＳ１１２戻す。そして、検知部５２は、Ｓ１１２からＳ１１９までの処理を繰り返す。
【０１２１】
Ｓ１１９において、検知部５２は、局所性の高い書き込みがされたことを回避制御部５４に通知する。これとともに、検知部５２は、基準回数以上の連続書き換えが発生したページを攻撃対象ページとして回避制御部５４に通知する。そして、検知部５２は、Ｓ１１９を終えると、本フローを終了する。
【０１２２】
以上の処理を実行することにより、検知部５２は、不揮発記憶部１６における同一ページに対する基準回数以上の連続書き換えが発生したことを検出することができる。そして、検知部５２は、基準回数以上の連続書き換えが発生したことおよび攻撃対象ページを回避制御部５４に通知することができる。
【０１２３】
図１５は、検知部５２による第２の処理を示すフローチャートである。検知部５２は、例えば、図１５に示すフローチャートに従って処理を行ってもよい。
【０１２４】
まず、Ｓ１２１において、検知部５２は、Ｍを０にリセットする。Ｍは、同一キャッシュラインに対する連続書き換え回数を表す変数である。続いて、Ｓ１２２において、検知部５２は、不揮発記憶部１６に対する書き込みがされたか否かを判断する。書き込みがされていない場合（Ｓ１２２のＮｏ）、検知部５２は、Ｓ１２２で処理を待機する。書き込みがされた場合（Ｓ１２２のＹｅｓ）、検知部５２は、処理をＳ１２３に進める。
【０１２５】
Ｓ１２３において、検知部５２は、書き込み対象のキャッシュラインのページ番号およびキャッシュライン番号を取得する。続いて、Ｓ１２４において、検知部５２は、前回書き込みがされたキャッシュラインのページ番号およびキャッシュライン番号と、今回書き込みがされたキャッシュラインのページ番号およびキャッシュライン番号とが同一であるか否かを判断する。
【０１２６】
ページ番号およびキャッシュライン番号が同一でない場合（Ｓ１２４のＮｏ）、検知部５２は、処理をＳ１２５に進める。Ｓ１２５において、検知部５２は、Ｍを０にリセットする。Ｓ１２５を終えると、検知部５２は、処理をＳ１２８に進める。
【０１２７】
ページ番号およびキャッシュライン番号が同一である場合（Ｓ１２５のＹｅｓ）、検知部５２は、処理をＳ１２６に進める。Ｓ１２６において、Ｍを１増加させる。続いて、Ｓ１２７において、検知部５２は、Ｍが予め定められた基準回数（Ｓ）より大きいか否かを判断する。ＭがＳより大きくない場合（Ｓ１２７のＮｏ）、検知部５２は、処理をＳ１２８に進める。ＭがＳより大きい場合（Ｓ１２７のＹｅｓ）、検知部５２は、処理をＳ１２９に進める。
【０１２８】
Ｓ１２８において、検知部５２は、今回書き込みがされたキャッシュラインのページ番号およびキャッシュライン番号を記憶して、処理をＳ１２２戻す。そして、検知部５２は、Ｓ１２２からＳ１２９までの処理を繰り返す。
【０１２９】
Ｓ１２９において、検知部５２は、局所性の高い書き込みがされたことを回避制御部５４に通知する。これとともに、検知部５２は、基準回数以上の連続書き換えが発生したキャッシュラインを攻撃対象キャッシュラインとして回避制御部５４に通知する。そして、検知部５２は、Ｓ１２９を終えると、本フローを終了する。
【０１３０】
以上の処理を実行することにより、検知部５２は、不揮発記憶部１６における同一キャッシュラインに対する基準回数以上の連続書き換えが発生したことを検出することができる。そして、検知部５２は、基準回数以上の連続書き換えが発生したことおよび攻撃対象キャッシュラインを回避制御部５４に通知することができる。
【０１３１】
図１６は、管理テーブルの変形例を示す図である。管理テーブルは、例えば、図１６に示すような構成であってもよい。図１６の管理テーブルの各エントリに格納された管理情報は、所定期間内における書き換え回数を含む。所定期間内における書き換え回数は、対応するページにおけるカウンタ値の更新が、所定期間内に何回実行されたかを示す値である。更新部３６は、何れかのページのカウンタ値を更新する毎に（カウンタ値を１増加させる毎に）、管理テーブル内の対応するページの管理情報に含まれる対応するページの書き換え回数を１増加させる。
【０１３２】
図１７は、検知部５２による第３の処理を示すフローチャートである。検知部５２は、例えば、図１６に示すような管理テーブルを用いる場合、図１７に示すフローチャートに従って処理を行ってもよい。
【０１３３】
Ｓ１４１において、検知部５２は、予め定められた検出タイミングであるか否かを判断する。検出タイミングは、例えば、所定時間毎のタイミングであってよい。また、検出タイミングは、アクセス処理部２８が所定数の書き込みをする毎のタイミングであってもよい。また、検出タイミングは、カウンタ値の更新が所定回数実行される毎のタイミングであってもよい。
【０１３４】
検出タイミングではない場合（Ｓ１４１のＮｏ）、検知部５２は、Ｓ１４１で処理を待機する。検出タイミングである場合（Ｓ１４１のＹｅｓ）、検知部５２は、処理をＳ１４２に進める。
【０１３５】
Ｓ１４２において、検知部５２は、管理テーブルにおける書き換え回数の項目を参照して、書き換え回数が予め定められた閾値より多いページがあるか否かを判断する。書き換え回数が閾値より多いページが無い場合（Ｓ１４２のＮｏ）、検知部５２は、処理をＳ１４３に進める。Ｓ１４３において、検知部５２は、管理テーブルにおける全てのエントリの、所定期間内の書き換え回数を０にリセットする。検知部５２は、Ｓ１４３の処理を終えると、処理をＳ１４１に戻す。そして、検知部５２は、Ｓ１４１からＳ１４４までの処理を繰り返す。
【０１３６】
書き換え回数が閾値より多いページが有る場合（Ｓ１４２のＹｅｓ）、検知部５２は、処理をＳ１４４に進める。Ｓ１４４において、検知部５２は、局所性の高い書き込みがされたことを回避制御部５４に通知する。これとともに、検知部５２は、書き換え回数が閾値より多いページを攻撃対象ページとして回避制御部５４に通知する。そして、検知部５２は、Ｓ１４４を終えると、本フローを終了する。
【０１３７】
以上の処理を実行することにより、検知部５２は、所定期間内において同一ページに対して閾値以上の書き換えが発生したことを検出することができる。そして、検知部５２は、所定期間内において同一ページに対して閾値以上の書き換えが発生したことおよび攻撃対象ページを回避制御部５４に通知することができる。
【０１３８】
なお、図１７のＳ１４１の検出タイミングは、ウェアレベリングを実行するタイミングであってもよい。この場合、検知部５２は、ウェアレベリングを実行するタイミング毎に、閾値以上の書き換えが発生したこと検知することができる。ウェアレベリング実行部３８は、例えば、予め定められた回数分、カウンタ値が更新された場合に、ウェアレベリングを実行する。従って、検知部５２は、ウェアレベリングを実行するタイミング毎に、同一領域に対する基準割合以上の書き換えの発生を検知することができる。
【０１３９】
図１８は、カウンタテーブルの変形例を示す図である。カウンタテーブルは、図１８に示すような構成であってもよい。図１８のカウンタテーブルは、各エントリに、所定期間内における対応するページの書き換え回数を含む。更新部３６は、何れかのページのカウンタ値を更新する毎に（カウンタ値を１増加させる毎に）、カウンタテーブル内の対応するエントリの書き換え回数も１増加させる。
【０１４０】
また、カウンタ記憶部３２が図１８のカウンタテーブルを記憶する場合、管理テーブルは、所定期間内における書き換え回数を含まなくてもよい。さらに、検知部５２は、管理テーブルに代えて、図１８のカウンタテーブルを用いて、図１７のＳ１４１からＳ１４４の処理を実行する。
【０１４１】
図１９は、回避制御部５４による第１の処理を示すフローチャートである。回避制御部５４は、例えば、図１９に示すフローチャートに従って処理を行う。
【０１４２】
まず、Ｓ２１１において、回避制御部５４は、検知部５２により局所性の高い書き込みの発生が検知されたか否かを判断する。局所性の高い書き込みが発生していない場合（Ｓ２１１のＮｏ）、回避制御部５４は、処理をＳ２１１で待機する。局所性の高い書き込みがされた場合（Ｓ２１１のＹｅｓ）、回避制御部５４は、処理をＳ２１２に進める。
【０１４３】
Ｓ２１２において、回避制御部５４は、検知部５２により特定された攻撃対象ページまたは攻撃対象キャッシュラインを含むページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。これにより、回避制御部５４は、局所性の高い書き込みの発生が検知された場合、不揮発記憶部１６における攻撃対象領域に記憶された対象データを第１記憶部１４に移動させることができる。そして、検知部５２は、Ｓ２１２を終えると、本フローを終了する。
【０１４４】
以上の処理を実行することにより、回避制御部５４は、処理回路１２により悪意のあるプログラムが実行された可能性がある場合、不揮発記憶部１６に対するアクセスを強制的に第１記憶部１４に移動させることができる。これにより、回避制御部５４は、不揮発記憶部１６が正常に動作しなくなることを回避することができる。
【０１４５】
図２０は、回避制御部５４による第２の処理を示すフローチャートである。回避制御部５４は、例えば、図２０に示すフローチャートに従って処理を行ってもよい。
【０１４６】
まず、Ｓ２２１において、回避制御部５４は、検知部５２により局所性の高い書き込みの発生が検知されたか否かを判断する。局所性の高い書き込みが発生していない場合（Ｓ２２１のＮｏ）、回避制御部５４は、処理をＳ２２１で待機する。局所性の高い書き込みがされた場合（Ｓ２２１のＹｅｓ）、回避制御部５４は、処理をＳ２２２に進める。
【０１４７】
Ｓ２２２において、回避制御部５４は、検知部５２により特定された攻撃対象ページまたは攻撃対象キャッシュラインに対するアクセスを停止させる。例えば、回避制御部５４は、アクセス処理部２８による攻撃対象ページまたは攻撃対象キャッシュラインに対する書き込みを停止させてもよい。また、回避制御部５４は、不揮発記憶部１６の全体に対するアクセスを停止させてもよい。そして、検知部５２は、Ｓ２２２を終えると、本フローを終了する。
【０１４８】
以上の処理を実行することにより、回避制御部５４は、処理回路１２により悪意のあるプログラムが実行された可能性がある場合、不揮発記憶部１６に対する不正な書き込みを即座に停止させることができる。これにより、回避制御部５４は、不揮発記憶部１６が正常に動作しなくなることを回避することができる。
【０１４９】
図２１は、回避制御部５４による第３の処理を示すフローチャートである。回避制御部５４は、例えば、図２１に示すフローチャートに従って処理を行ってもよい。
【０１５０】
まず、Ｓ２３１において、回避制御部５４は、検知部５２により局所性の高い書き込みの発生が検知されたか否かを判断する。局所性の高い書き込みが発生していない場合（Ｓ２３１のＮｏ）、回避制御部５４は、処理をＳ２３１で待機する。局所性の高い書き込みがされた場合（Ｓ２３１のＹｅｓ）、回避制御部５４は、処理をＳ２３２に進める。
【０１５１】
Ｓ２３２において、回避制御部５４は、検知部５２により特定された攻撃対象ページまたは攻撃対象キャッシュラインを含むページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。これにより、回避制御部５４は、局所性の高い書き込みの発生が検知された場合、不揮発記憶部１６における攻撃対象領域に記憶された対象データを第１記憶部１４に移動させることができる。
【０１５２】
続いて、Ｓ２３３において、回避制御部５４は、局所性の高い書き込みがされたことを処理回路１２に通知する。これにより、回避制御部５４は、不正アクセスがされているか否かを処理回路１２に判断させることができる。この通知を受けた処理回路１２は、回避制御部５４から取得した情報に基づき、攻撃対象領域に対して不正アクセスがされているか否かを判断する。そして、処理回路１２は、判断結果を回避制御部５４に返信する。
【０１５３】
続いて、Ｓ２３４において、回避制御部５４は、処理回路１２から不正アクセスがされているか否かの判断結果を取得する。続いて、Ｓ２３５において、回避制御部５４は、取得した判断結果に基づき、不正アクセスがされているか否かを判断する。不正アクセスがされていない場合（Ｓ２３５のＮｏ）、回避制御部５４は、処理をＳ２３６に進める。不正アクセスがされている場合（Ｓ２３５のＹｅｓ）、回避制御部５４は、処理をＳ２３７に進める。
【０１５４】
Ｓ２３６において、回避制御部５４は、そのまま処理を続行させる。そして、回避制御部５４は、処理をＳ２３１に戻して、Ｓ２３１〜Ｓ２３７の処理を繰り返す。すなわち、回避制御部５４は、検知部５２により特定された攻撃対象ページまたは攻撃対象キャッシュラインを含むページのアクセス方法を、第１アクセス処理に設定したままで処理を続けさせる。これにより、回避制御部５４は、不正アクセスではないが局所的なアクセスがされているデータを第１記憶部１４に移動させて、不揮発記憶部１６における特定の領域に対する書き換え回数の増加を抑制することができる。
【０１５５】
Ｓ２３７において、回避制御部５４は、検知部５２により特定された攻撃対象ページまたは攻撃対象キャッシュラインに対するアクセスを停止させる。例えば、回避制御部５４は、アクセス処理部２８による攻撃対象ページまたは攻撃対象キャッシュラインに対する書き込みを停止させてもよい。また、回避制御部５４は、不揮発記憶部１６の全体に対するアクセスを停止させてもよい。これにより、回避制御部５４は、不正アクセスがされていた場合、不揮発記憶部１６に対する不正な書き込みを停止させることができる。そして、検知部５２は、Ｓ２３７を終えると、本フローを終了する。
【０１５６】
以上の処理を実行することにより、回避制御部５４は、局所性の高い書き込みがされたことにより、不正アクセスの可能性がある場合、第１段階において、不揮発記憶部１６に対するアクセスを強制的に第１記憶部１４に移動させて、不揮発記憶部１６が正常に動作しなくなることを回避する。続いて、回避制御部５４は、不正アクセスがされたことが確定した場合、第２段階において、不揮発記憶部１６に対するアクセスを停止させる。これにより、回避制御部５４は、不揮発記憶部１６を保護するとともに、不正アクセスではないにかかわらずアクセスを停止させてしまうことを回避することができる。
【０１５７】
以上のように、本実施形態に係る管理装置１８は、カウンタテーブルを参照して、不揮発記憶部１６に対する局所性の高い書き込みを検知して、局所性の高い書き込みがされた攻撃対象領域を特定する。さらに、本実施形態に係る管理装置１８は、局所性の高い書き込みの発生を検知した場合、回避処理を実行する。これにより、管理装置１８によれば、不揮発記憶部１６に対する不正なアクセスを検知することができる。さらに、管理装置１８によれば、不揮発記憶部１６が正常に動作しなくなることを回避することができる。
【０１５８】
（第２実施形態）
つぎに、第２実施形態に係る情報処理装置１０について説明する。
【０１５９】
図２２は、第２実施形態に係る管理装置１８の構成を示す図である。第２実施形態に係る管理装置１８は、割当処理部６０をさらに備える。
【０１６０】
割当処理部６０は、不揮発記憶部１６に含まれる複数のページのそれぞれについて、アクセス方法を割り当てる。より具体的には、割当処理部６０は、複数のページのそれぞれに対して、第１アクセス処理を実行するか、第２アクセス処理を実行するかを割り当てる。
【０１６１】
例えば、処理回路１２が正当なプログラムを実行していることが保証されている期間において、割当処理部６０は、複数のページのそれぞれに対する書き込み量を解析する。そして、割当処理部６０は、解析結果に基づき、それぞれのページに対して第１アクセス処理を実行させるか、第２アクセス処理を実行させるかを割り当てて、設定記憶部２６に記憶されている変換テーブルに登録する。
【０１６２】
例えば、割当処理部６０は、管理テーブルのマップ情報のビットが１になっている数が第１閾値以上のエントリのページを、第１アクセス処理に割り当てる。さらに、マップ情報のビットが１になっている数が第１閾値より小さいエントリのページを第２アクセス処理に割り当てるようにしてもよい。
【０１６３】
例えば、割当処理部６０は、第１アクセス処理を割り当てることにより、不揮発記憶部１６に対する書き込み量（例えば所定期間における書き込み回数）がより多く減少するページを、第１アクセス処理に割り当てる。さらに、割当処理部６０は、第１記憶部１４のメモリ使用量が設定範囲を超えないように、第１アクセス処理を割り当てるページの数を制限してもよい。
【０１６４】
さらに、例えば、割当処理部６０は、処理回路１２がプログラムの実行中において、不揮発記憶部１６に対する書き込み量（例えば、所定期間内における書き込み回数）が第１閾値より大きい場合、第２アクセス処理に設定されている何れかのページを交換対象ページとして選択し、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更してもよい。また、例えば、割当処理部６０は、処理回路１２がプログラムの実行中において、不揮発記憶部１６に対する書き込み量（例えば、所定期間内における書き込み回数）が第２閾値（第２閾値は第１閾値より小さい）より小さい場合、第１アクセス処理に設定されている何れかのページを退避対象ページとして選択し、退避対象ページのアクセス方法を、第１アクセス処理から第２アクセス処理に変更してもよい。このような処理を実行することにより、割当処理部６０は、第１記憶部１４のメモリ使用量を設定された範囲内としながら、不揮発記憶部１６に対する書き込み量を抑制することができる。
【０１６５】
図２３は、局所性の高い書き込みが検知される場合に実行されるプログラムを説明するための図である。
【０１６６】
悪意により、不揮発記憶部１６の特定の領域にアクセスを集中的に発生させて不揮発記憶部１６を攻撃しようとした場合、不正者は、空間的および時間的に局所性の高いメモリアクセスを行うプログラムを処理回路１２に実行させる。しかし、空間的および時間的に局所性の高いメモリアクセスを行うプログラムの中には、悪意のないプログラムも含まれている。従って、メモリアクセスを解析することにより、プログラムに悪意があるか否かの判別は、一般的には難しい。しかし、本実施形態に係る管理装置１８は、局所性の高いメモリアクセスをする悪意のあるプログラムと、局所性の高いメモリアクセスをする悪意の無いプログラムとを区別することができる。その理由は以下の通りである。
【０１６７】
割当処理部６０は、正当なプログラムの実行中のメモリアクセスを解析した結果に基づき、アクセス方法を割り当てる。この場合、複数のページに対するアクセス方法の割り当ては、次のようになる。すなわち、局所性の高いメモリアクセスをする正常なプログラムは、第１アクセス処理によりメモリアクセスをするか、処理回路１２内のキャッシュ機能を用いてメモリアクセスをする。また、局所性の低い（分散した）メモリアクセスをする正常なプログラムは、第２アクセス処理によりメモリアクセスをする。従って、正常なプログラムが実行されている場合には、不揮発記憶部１６に対して、局所性の高いメモリアクセスが発生する確率は低い。
【０１６８】
これに対して、悪意のあるプログラムは、不揮発記憶部１６に攻撃をするために、割当処理部６０によるアクセス方法の割り当てをくぐり抜けて、第２アクセス処理により局所性の高いメモリアクセスを実行する。つまり、悪意のあるプログラムは、割当処理部６０によって第１アクセス処理に割り当てられないような機能を有したプログラムである。
【０１６９】
このため、第２アクセス処理がされるのは、（Ａ）悪意のあるプログラムによるメモリアクセスと、（Ｂ）局所性の低いメモリアクセスを行うプログラムによるメモリアクセスである。従って、検知部５２は、不揮発記憶部１６に対する局所性の高いメモリアクセスを検出することにより、高い確率で、局所性の高いメモリアクセスをする悪意のあるプログラムを検出することができる。
【０１７０】
つまり、管理装置１８は、第１アクセス処理と第２アクセス処理の２種類のアクセス方法を用いる。そして、管理装置１８は、悪意のない空間的および時間的な局所性の高いメモリアクセスを行うプログラムにより参照されるデータを、処理回路１２内のキャッシュにヒットさせる、または、第１アクセス処理でメモリアクセスさせるように、事前に、アクセス方法を割り当てる。これにより、管理装置１８は、不揮発記憶部１６への局所性の高いメモリアクセスを、悪意のあるプログラムによるものに絞り込むことができる。以上のように管理装置１８は、悪意のあるプログラムを容易に検出することができる。
【０１７１】
（変形例）
以下、各実施形態の変形例について説明する。
【０１７２】
図２４は、識別情報の変形例を示す図である。管理装置１８は、ページ番号を用いて、管理テーブルに格納される管理情報を識別していた。これに代えて、管理装置１８は、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）により管理されるアドレスに対応させて、管理テーブルに格納される管理情報を識別してもよい。
【０１７３】
処理回路１２は、ＴＬＢと呼ばれる仮想記憶機構を有する。ＴＬＢは、仮想アドレスから物理アドレスへアドレス変換を行うために、ページにおける論理アドレスと物理アドレスとの対応を示す対応関係情報を記憶する。しかし、ＴＬＢは、保有しているエントリが限られているので、対応関係情報を必要に応じて入れ替える。ＴＬＢは、例えば、直近において高い頻度でアクセスされるページについての対応関係情報を優先して記憶する。
【０１７４】
そこで、管理装置１８は、ＴＬＢに対応関係情報が記憶されているページについて、管理テーブルに記憶させてもよい。例えば、管理装置１８は、ＴＬＢのエントリの数と同一の数のエントリを有する管理テーブルを記憶する。そして、更新部３６は、ＴＬＢのエントリから対応関係情報が追い出されたタイミングにおいて、対応する管理テーブルに記憶されている管理情報を消去する。この場合、更新部３６は、管理情報が他の管理情報に書き込みされた場合と同様の処理を実行する。なお、管理テーブルは、ＴＬＢのエントリと同一のエントリを有するので、識別情報を格納するエントリを含まなくてもよい。
【０１７５】
管理装置１８は、このように管理テーブルに管理情報を格納することにより、処理回路１２に同期して効率良くウェアレベリングに必要なページ毎の書き換え回数を管理することができる。
【０１７６】
図２５は、情報処理装置１０の構成の第１変形例を示す図である。例えば、第１変形例に係る処理回路１２は、管理装置１８を内部に備える。第１変形例に係る第１記憶部１４および不揮発記憶部１６は、この処理回路１２の外部に設けられる。
【０１７７】
図２６は、情報処理装置１０の構成の第２変形例を示す図である。例えば、第２変形例に係る処理回路１２は、管理装置１８を内部に備える。第２変形例に係る処理回路１２は、第１記憶部１４も内部に備える。
【０１７８】
図２７は、情報処理装置１０の構成の第３変形例を示す図である。例えば、情報処理装置１０は、処理回路１２と、不揮発記憶モジュール８０とを備えてもよい。この場合、不揮発記憶モジュール８０は、不揮発記憶部１６と、管理装置１８とを有する。
【０１７９】
図２８は、情報処理装置１０の構成の第４変形例を示す図である。例えば、情報処理装置１０は、処理回路１２と、不揮発記憶部１６と、管理装置１８とを備える。つまり、情報処理装置１０は、第１記憶部１４を備えない構成であってもよい。この場合、管理装置１８は、アクセス方法を第２アクセス処理から第１アクセス処理に切り換えることはできないが、不揮発記憶部１６に対して局所性の高い書き込みがされたことは検出することができる。
【０１８０】
また、各実施形態および変形例において、第１記憶部１４は、例えば、プロセッサ内のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であってもよい。また、第１記憶部１４は、不揮発記憶部１６よりも書き換え可能回数が多いＭＲＡＭ等の不揮発メモリであってもよい。
【０１８１】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８２】
１０  情報処理装置
１２  処理回路
１４  第１記憶部
１６  不揮発記憶部
１８  管理装置
２６  設定記憶部
２８  アクセス処理部
３２  カウンタ記憶部
３４  管理情報記憶部
３６  更新部
３８  ウェアレベリング実行部
４０  管理部
５２  検知部
５４  回避制御部
６０  割当処理部
【図１】
2019160233.tif 000003
【図２】
2019160233.tif 000004
【図３】
2019160233.tif 000005
【図４】
2019160233.tif 000006
【図５】
2019160233.tif 000007
【図６】
2019160233.tif 000008
【図７】
2019160233.tif 000009
【図８】
2019160233.tif 000010
【図９】
2019160233.tif 000011
【図１０】
2019160233.tif 000012
【図１１】
2019160233.tif 000013
【図１２】
2019160233.tif 000014
【図１３】
2019160233.tif 000015
【図１４】
2019160233.tif 000016
【図１５】
2019160233.tif 000017
【図１６】
2019160233.tif 000018
【図１７】
2019160233.tif 000019
【図１８】
2019160233.tif 000020
【図１９】
2019160233.tif 000021
【図２０】
2019160233.tif 000022
【図２１】
2019160233.tif 000023
【図２２】
2019160233.tif 000024
【図２３】
2019160233.tif 000025
【図２４】
2019160233.tif 000026
【図２５】
2019160233.tif 000027
【図２６】
2019160233.tif 000028
【図２７】
2019160233.tif 000029
【図２８】
2019160233.tif 000030