(57)【要約】【課題】キャッシュメモリから他の不揮発性半導体メモリへの書き戻しの効率化を図る。【解決手段】実施形態に係る情報処理装置１は、メインメモリとして用いられる不揮発性半導体メモリ６１〜６ｎ上の第１のデータと、不揮発性半導体メモリ６１〜６ｎのキャッシュメモリとして用いられる半導体メモリ５上の第１のデータと対応する第２のデータとの不一致が発生しているか否かを判断する第１の判断部９１と、第１の判断部９１によって第１のデータと第２のデータとが不一致であると判断された場合、第２のデータのアクセス頻度情報に基づいて、第１のデータと第２のデータとを一致させる書き戻しの実行タイミングを設定する設定部９２と、第２のデータが最後に書き戻されてからの経過時間が、設定部９２により設定された実行タイミングとなったか否か判断する第２の判断部９３と、第２の判断部９３によって、第２のデータの書き戻しの実行タイミングとなったと判断された場合、書き戻しを実行する書き戻し部９４とを具備する。【選択図】      図１
2012033047.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリとして用いられる不揮発性半導体メモリ上の第１のデータと、前記不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の前記第１のデータと対応する第２のデータとの不一致が発生しているか否かを判断する第１の判断部と、
前記第１の判断部によって前記第１のデータと前記第２のデータとが不一致であると判断された場合、前記第２のデータのアクセス頻度情報に基づいて、前記第１のデータと前記第２のデータとを一致させる書き戻しの実行タイミングを設定する設定部と、
前記第２のデータが最後に書き戻されてからの経過時間が、前記設定部により設定された実行タイミングとなったか否か判断する第２の判断部と、
前記第２の判断部によって、前記第２のデータの書き戻しの実行タイミングとなったと判断された場合、前記書き戻しを実行する書き戻し部と
を具備することを特徴とする情報処理装置。
【請求項２】
前記アクセス頻度情報は、前記第２のデータがスタック領域又はヒープ領域に配置されるデータか否かを示す情報であり、
前記設定部は、前記第２のデータが前記スタック領域又は前記ヒープ領域に配置されるデータである場合に、前記第２のデータが前記スタック領域又は前記ヒープ領域に配置されるデータではない場合よりも書き戻しの実行間隔が長くなるように、前記実行タイミングを設定する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記設定部は、前記第２のデータが書き戻されてから次に書き戻しを実行するまでの書き込みアクセスの発生回数を前記第２の判断部に対して設定し、
前記第２の判断部は、前記第２のデータの最後の書き戻しからカウントされた書き込みアクセス回数が、前記設定手段によって設定された前記発生回数になった場合に、前記実行タイミングとなったと判断する
ことを特徴とする請求項１又は請求項２記載の情報処理装置。
【請求項４】
前記第２のデータに対する書き込みアクセスが発生したか否かを監視し、前記第２のデータに対する書き込みアクセス頻度情報を算出するプロファイル部をさらに具備し、
前記設定部は、前記書き込みアクセス頻度情報に基づいて、前記書き戻しの実行タイミングを設定する
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
メインメモリとして用いられる不揮発性半導体メモリ上の第１のデータと、前記不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の前記第１のデータと対応する第２のデータとの不一致が発生しているか否かを判断する第１の判断部と、
前記第１の判断部によって前記第１のデータと前記第２のデータとが不一致であると判断された場合、前記第２のデータのアクセス頻度情報に基づいて、前記第１のデータと前記第２のデータとを一致させる書き戻しの実行タイミングを設定する設定部と、
前記第２のデータが最後に書き戻されてからの経過時間が、前記設定部により設定された実行タイミングとなったか否か判断する第２の判断部と、
前記第２の判断部によって、前記第２のデータの書き戻しの実行タイミングとなったと判断された場合、前記書き戻しを実行する書き戻し部と
を具備するメモリ管理装置。
【請求項６】
処理ユニットが、メインメモリとして用いられる不揮発性半導体メモリ上の第１のデータと、前記不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の前記第１のデータと対応する第２のデータとの不一致が発生しているか否かを判断し、
前記処理ユニットが、前記第１のデータと前記第２のデータとが不一致であると判断された場合、前記第２のデータのアクセス頻度情報に基づいて、前記第１のデータと前記第２のデータとを一致させる書き戻しの実行タイミングを設定し、
前記処理ユニットが、前記第２のデータが最後に書き戻されてからの経過時間が、前記設定部により設定された実行タイミングとなったか否か判断し、
前記処理ユニットが、前記第２のデータの書き戻しの実行タイミングとなったと判断された場合、前記書き戻しを実行する
ことを特徴とするメモリ管理方法。
【請求項７】
処理ユニットに、メインメモリとして用いられる不揮発性半導体メモリ上の第１のデータと、前記不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の前記第１のデータと対応する第２のデータとの不一致が発生しているか否かを判断する第１の判断機能を実現させ、
前記処理ユニットに、前記第１の判断機能によって前記第１のデータと前記第２のデータとが不一致であると判断された場合、前記第２のデータのアクセス頻度情報に基づいて、前記第１のデータと前記第２のデータとを一致させる書き戻しの実行タイミングを設定する設定機能を実現させ、
前記処理ユニットに、前記第２のデータが最後に書き戻されてからの経過時間が、前記設定機能により設定された実行タイミングとなったか否か判断する第２の判断機能を実現させ、
前記処理ユニットに、前記第２の判断機能によって、前記第２のデータの書き戻しの実行タイミングとなったと判断された場合、前記書き戻しを実行する書き戻し機能を実現させる
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラムに関する。
【背景技術】
【０００２】
一般的な仮想記憶技術では、主記憶装置と２次記憶装置とが用いられ、実際の主記憶装置のメモリ容量以上のメモリ空間が提供される。仮想記憶技術では、主記憶装置上に存在していないデータの読み出しが要求された場合には、２次記憶装置から主記憶装置へデータの転送が行われ、これにより、あたかもそのデータが主記憶装置上に存在していたように見せかける。しかしながら、この転送処理に時間がかかると、システム全体の性能が低下してしまう。
【０００３】
仮想記憶技術において、あるデータは、主記憶装置上で更新され、２次記憶装置上のこのデータと一致しない状態(以下、ダーティ（dirty）状態という)になる場合がある。
【０００４】
一般的なＯＳ（オペレーティングシステム）では、定期的に主記憶装置上のデータがダーティ状態であるか否かの確認を行い、ダーティ状態である場合には、主記憶装置から２次記憶装置にデータを書き戻す処理（制御）を行う機能が実装されている。
【０００５】
しかし、既存の書き戻し処理は、最後（最新）の書き込みアクセスから一定時間以上(例えば３０秒など)、書き込みアクセスが発生しない場合に、主記憶装置から２次記憶装置にデータの書き戻しを行う、というアルゴリズムになっており、すべての主記憶装置のデータにおいて一律の時間を適用して書き戻しを行っている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】詳細Linux（登録商標）カーネル  第３版  １５章「ページキャッシュ」  １７章「ページフレームの回収」
【非特許文献２】Understanding the LINUX（登録商標） KERNEL THIRD EDITION
【特許文献】
【０００７】
【特許文献１】特開２００８−２４２９４４号公報
【特許文献２】特開平７−１４６８２０号公報
【特許文献３】特開２００１−２６６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の実施形態は、キャッシュメモリとして使用される半導体メモリから他の半導体メモリへのデータの書き戻しを効率化する情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態によれば、情報処理装置は、第１の判断部と、設定部と、第２の判断部と、書き戻し部とを具備する。第１の判断部は、メインメモリとして用いられる不揮発性半導体メモリ上の第１のデータと、不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の第１のデータと対応する第２のデータとの不一致が発生しているか否かを判断する。設定部は、第１の判断部によって第１のデータと第２のデータとが不一致であると判断された場合、第２のデータのアクセス頻度情報に基づいて、第１のデータと第２のデータとを一致させる書き戻しの実行タイミングを設定する。第２の判断部は、第２のデータが最後に書き戻されてからの経過時間が、設定部により設定された実行タイミングとなったか否か判断する。書き戻し部は、第２の判断部によって、第２のデータの書き戻しの実行タイミングとなったと判断された場合、書き戻しを実行する。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係る情報処理装置の構成の一例を示すブロック図。
【図２】第１の実施形態に係る第１のデータと第２のデータとの関係を示すブロック図。
【図３】第１の実施形態に係るデータ管理テーブルの一例を示す図。
【図４】第１の実施形態に係るダーティ状態判断カウントテーブルの一例を示す図。
【図５】第１の実施形態に係る情報処理装置の書き戻し処理の一例を示すフローチャート。
【図６】第２の実施形態に係る情報処理装置の構成の一例を示すブロック図。
【図７】第２の実施形態に係る情報処理装置の書き戻し処理の一例を示すフローチャート。
【図８】書き込みカウントテーブルの一例を示す図。
【図９】第３の実施形態に係る情報処理装置の構成の一例を示すブロック図。
【図１０】第３の実施形態に係るプロファイル部の一例を示すブロック図。
【図１１】第３の実施形態に係る書き込みアクセスの発生状態のシーケンスと、このシーケンスの条件でプロファイル部を動作させた場合のプロファイルテーブルの変化との一例を示す図。
【図１２】第３の実施形態に係る情報処理装置の書き戻し処理の一例を示すフローチャート。
【図１３】第３の実施形態に係る情報処理装置の第１の変形例を示すブロック図。
【図１４】第３の実施形態に係る情報処理装置の第２の変形例を示すブロック図。
【図１５】第３の実施形態に係る情報処理装置の第３の変形例を示すブロック図。
【図１６】第３の実施形態に係る情報処理装置の第４の変形例を示すブロック図。
【図１７】第４の実施形態に係る情報処理装置の構成の一例を示すブロック図。
【図１８】第４の実施形態に係るメモリ管理装置と、記憶装置に記憶される各種データとの関係の一例を示すブロック図。
【図１９】第４の実施形態に係るカラーリング情報とカラーリングテーブルの一例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略または実質的に同一の機能および構成要素については、同一符号を付し、必要に応じて説明を行う。
【００１２】
（第１の実施形態）
図１は、本実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【００１３】
情報処理装置１は、例えばＳｏＣ（System-on-a-Chip）で構成される。情報処理装置１は、プロセッサＰ１〜Ｐ４、２次キャッシュメモリＬ２、バス２、メモリ管理装置３を具備する。
【００１４】
プロセッサＰ１〜Ｐ４は、それぞれが１次キャッシュメモリＬ１−１〜Ｌ１−４、ＭＭＵ４１〜４４を具備する。プロセッサＰ１〜Ｐ４としては、例えばＣＰＵ（Central Processing Unit）が用いられるが、ＭＰＵ（Micro Processor Unit）、ＧＰＵ（Graphic Processor Unit）などのような他の処理ユニットが用いられてもよい。この図１において、プロセッサＰ１〜Ｐ４の数は４つであるが、プロセッサの数は１以上であればよい。
【００１５】
プロセッサＰ１〜Ｐ４は、２次キャッシュメモリＬ２を共有し、バス２を介して、メモリ管理装置３と電気的に接続される。
【００１６】
メモリ管理装置３は、外部の揮発性半導体メモリ５、不揮発性半導体メモリ６１〜６ｎと電気的に接続されている。プロセッサＰ１〜Ｐ４は、メモリ管理装置３を介して、揮発性半導体メモリ５、不揮発性半導体メモリ６１〜６ｎにアクセス可能である。
【００１７】
プロセッサＰ１〜Ｐ４とメモリ管理装置３とは、バス２によってデータを送受信可能に接続されている。また、例えば、プロセッサＰ１〜Ｐ４とメモリ管理装置３とは、非同期に動作可能であり、プロセッサＰ１〜Ｐ４で処理実行中に、メモリ管理装置３が不揮発性半導体メモリ６１〜６ｎに対してウェアレベリング、ガーベージコレクション、コンパクションを実行することができる。
【００１８】
なお、本実施の形態において、情報処理装置１と、揮発性半導体メモリ５及び不揮発性半導体メモリ６１〜６ｎとは、別チップとされているが、情報処理装置１内に、揮発性半導体メモリ５及び不揮発性半導体メモリ６１〜６ｎが含まれる構成としてもよい。
【００１９】
メモリ管理装置３の内部には、処理部７が備えられている。この処理部７としては、例えばＭＰＵが用いられるが、他の処理ユニットが用いられるとしてもよい。
【００２０】
処理部７は、不揮発性半導体メモリ６１〜６ｎを使用するための種々の処理を、ソフトウェア８に基づいて制御する。本実施形態において、プロセッサＰ１〜Ｐ４と処理部７とで、不揮発性半導体メモリ６１〜６ｎに対する処理を分担して実行するとしてもよい。例えば、ソフトウェア８は、不揮発性半導体メモリ６１〜６ｎに記憶されており、起動時に処理部７によって不揮発性半導体メモリ６１〜６ｎから読み出され、実行される。
【００２１】
揮発性半導体メモリ５と不揮発性半導体メモリ６１〜６ｎは、メインメモリとして使用される。本実施形態では、不揮発性半導体メモリ６１〜６ｎに、十分なメモリ量が確保される。不揮発性半導体メモリ６１〜６ｎのメモリ容量は、揮発性半導体メモリ５よりも大きい。そして、揮発性半導体メモリ５には、例えば、最近アクセスされたデータ、使用頻度の高いデータなどのアクセスされる可能性の高いデータが不揮発性半導体メモリ６１〜６ｎからキャッシュされる。プロセッサＰ１〜Ｐ４が揮発性半導体メモリ５にアクセスする場合に、揮発性半導体メモリ５にアクセス対象データが存在しない場合、不揮発性半導体メモリ６１〜６ｎと揮発性半導体メモリ５との間でデータ転送が実行される。このように、揮発性半導体メモリ５と不揮発性半導体メモリ６１〜６ｎとを組み合わせて使用することで、揮発性半導体メモリ５のメモリ容量より大きいメモリ空間がメインメモリとして使用可能となる。
【００２２】
本実施形態において揮発性半導体メモリ５は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）であるとする。しかしながら、揮発性半導体メモリ５としては、ＤＲＡＭに代えて、ＦＰＭ−ＤＲＡＭ（Fast Page Mode）、ＥＤＯ−ＤＲＡＭ（Extended Data Out DRAM）、ＳＤＲＡＭ（Synchronous DRAM）などのような、コンピュータにおいてメインメモリとして利用されるメモリを用いるとしてもよい。また、ＤＲＡＭ程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限がないのであれば、揮発性半導体メモリ５に代えて、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などの不揮発性ランダムアクセスメモリが用いられるとしてもよい。
【００２３】
本実施形態において不揮発性半導体メモリ６１〜６ｎは、例えば、ＮＡＮＤ型フラッシュメモリであるとする。しかしながら、不揮発性半導体メモリ６１〜６ｎは、例えばＮＯＲ型フラッシュメモリなど、他の不揮発性半導体メモリが用いられるとしてもよい。
【００２４】
揮発性半導体メモリ５は、不揮発性半導体メモリ６１〜６ｎよりも小容量（例えば１２８MByte〜４GByteなど)だが高速にアクセス可能である。
【００２５】
不揮発性半導体メモリ６１〜６ｎは、揮発性半導体メモリ５よりも大容量(例えば３２GByte〜５１２GByteなど)だがアクセス時間が長い。本実施形態のように、不揮発性半導体メモリ６１〜６ｎがＮＡＮＤ型フラッシュメモリの場合、書き込みと読み出しとはページ単位で実行される。消去は複数ページを含むブロック単位で行われる。ＮＡＮＤ型フラッシュメモリでは、書き込みは、消去後に実行されなければならない。したがって、ページ単位のデータ書き替えにおいては、このページ単位のデータを含むブロックの内容がすべて読み出されて一時記憶され、ブロック領域が消去され、一時記憶されているブロックの内容に含まれているページ単位のデータの書き替えが実行され、書き替え後のブロックの内容が、消去されたブロック領域に書き込まれる。
【００２６】
不揮発性半導体メモリ６１〜６ｎは、最大の書き込み回数(例えば１万回や３万回など)に制限があり、その回数を超えると、エラー率が上昇し、デバイスとして正しいデータ書き込みの保証ができなくなる場合がある。
【００２７】
情報処理装置１では、プロセッサＰ１〜Ｐ４により、ＯＳ９及びアプリケーションなどのソフトウェア１０が実行される。
【００２８】
ＯＳ９は、不一致判断部９１、設定部９２、判断部９３、書き戻し部９４を含む。不一致判断部９１は、メインメモリとして用いられる不揮発性半導体メモリ６１〜６ｎ上の第１のデータと、不揮発性半導体メモリ６１〜６ｎのキャッシュメモリとして用いられる揮発性半導体メモリ５上に記憶され、第１のデータと対応する第２のデータとの不一致が発生しているか否かを判断する。
【００２９】
ここで、図２を参照して、不揮発性半導体メモリ６１〜６ｎ上の第１のデータと、揮発性半導体メモリ５上の第２のデータとの関係について説明する。
【００３０】
不揮発性半導体メモリ６１〜６ｎ上には、複数のデータが記憶されている。前述のように、不揮発性半導体メモリ６１上に記憶された複数のデータのうちアクセス可能性の高いデータは、揮発性半導体メモリ５上にキャッシュされる。本実施形態では、不揮発性半導体メモリ６１〜６ｎ上のデータを第１のデータと称し、揮発性半導体メモリ５にキャッシュされたデータを第２のデータと称する。つまり、不揮発性半導体メモリ６１〜６ｎ上の第１のデータが揮発性半導体メモリ５上にキャッシュされた場合、このキャッシュされたデータを、第２のデータと称する。また、第１のデータと第２のデータとの関係を「対応する」と称する。
【００３１】
第１のデータと第２のデータとは、第２のデータがキャッシュされた直後においては同一のデータであり、一致している。しかし、第２のデータに対して、プロセッサＰ１〜Ｐ４から書き込みアクセスが発生すると、第２のデータは更新され、第１のデータと第２のデータとが不一致となる状態（ダーティ状態）が発生する。その後、第２のデータと第１のデータとが一致するように、揮発性半導体メモリ５の第２のデータを不揮発性半導体メモリ６１〜６ｎ上の第１のデータに書き戻す。これにより、第１のデータと第２のデータとが一致する。このように、第２のデータへの書き込みアクセス発生から書き戻しが行われるまでの間において、第１のデータと第２のデータとの間で不一致の状態が発生する。
【００３２】
設定部９２は、不一致判断部９１によって第１のデータと第２のデータとが不一致であると判断された場合に、第２のデータのアクセス頻度情報に基づいて、第１のデータと第２のデータを一致させる書き戻しの実行タイミングを設定する。アクセス頻度情報及び設定部９２の書き戻しの実行タイミングの設定についての詳細は後述する。
【００３３】
判断部９３は、第２のデータが最後に書き戻されてからの経過時間が、設定部９２により設定された実行タイミングとなったか否か判断する。
【００３４】
書き戻し部９４は、判断部９３によって、第２のデータの書き戻しの実行タイミングとなったと判断された場合、書き戻しを実行する。
【００３５】
次に、ＯＳ９の動作について詳細に説明する。
【００３６】
前述のように、揮発性半導体メモリ５にアクセス対象データが存在しない場合、不揮発性半導体メモリ６１〜６ｎと揮発性半導体メモリ５との間でデータ転送が実行される。本実施形態において、このデータ転送を実現するために、一般的な仮想記憶技術と同様に、プロセッサＰ１〜Ｐｎに実装されているメモリ管理ユニット（ＭＭＵ：Memory Management Unit）４１〜４４が利用される。揮発性半導体メモリ５に存在するデータは、メモリ管理ユニット４１〜４ｎに登録され、アクセスを可能な状態となっている。一方、揮発性半導体メモリ５に存在しないデータは、ＭＭＵ４１〜４４に登録されておらず、この揮発性半導体メモリ５に存在しないデータにアクセスする場合には、ＭＭＵ例外を発生させる。このＭＭＵ例外により、プロセッサＰ１〜Ｐｎ上のソフトウェア１０からＯＳ９への切り替えが実行され、ＯＳ９は、不揮発性半導体メモリ６１〜６ｎから揮発性半導体メモリ５へのデータ転送が実行される。そして、ＯＳ９により、不揮発性半導体メモリ６１〜６ｎから揮発性半導体メモリ５に必要なデータが転送されると、ＭＭＵ４１〜４４の動作に必要なテーブルを書き換え、転送されたデータをアクセス可能とし、ＯＳ９からソフトウェア１０に処理を戻す。このデータ転送のデータ処理単位は４KByteや１MByteなどのサイズであり、一般的にはページサイズと呼ばれる。なお、このデータ転送動作の処理単位であるページサイズと、ＮＡＮＤ型フラッシュメモリの書き込み単位又は読み出し単位のページサイズとは異なる意味で使用される。
【００３７】
このデータ転送によって、ＯＳ９及びソフトウェア１０は、本来の揮発性半導体メモリ５のメモリ容量以上のメモリ空間を使用可能になる。しかしながら、ＯＳ９及びソフトウェア１０にとって、上記のデータ転送動作が発生した場合、データ転送の時間分、処理が中断し、性能の低下が生じる。そのため、上記のデータ転送の処理時間を短くすることが重要である。
【００３８】
上記のデータ転送により、新しいデータを不揮発性半導体メモリ６１〜６ｎから揮発性半導体メモリ５に転送する場合に、揮発性半導体メモリ５上のデータ転送先の領域に記憶されたデータがダーティ状態の場合には、一旦、転送先に記憶されているダーティ状態のデータを揮発性半導体メモリ５から不揮発性半導体メモリ６１〜６ｎに書き戻した後でなければ、不揮発性半導体メモリ６１〜６ｎから揮発性半導体メモリ５に新しいデータをデータ転送することができない。このため、データ転送を実行する場合に、転送先の領域がダーティ状態である場合、データ転送の処理時間が長くなる。
【００３９】
このような処理時間の長時間化を抑制することを目的として、ダーティ状態の領域を減らすために書き戻しを頻繁に実行すると、不揮発性半導体メモリ６１〜６ｎへの書き込み回数が増加し、不揮発性半導体メモリ６１〜６ｎの寿命が低下する可能性がある。
【００４０】
本実施形態の情報処理装置１は、後述するアクセス頻度情報に基づき、揮発性半導体メモリ５上の第２のデータのアクセス頻度情報に応じて、揮発性半導体メモリ６１〜６ｎへの書き戻しの実行タイミングを制御することにより、データ転送の処理時間の短縮化を図り、かつ、不揮発性半導体メモリ６１〜６ｎの寿命低下の抑制を図ることを可能とする。
【００４１】
次に、アクセス頻度情報について説明する。
【００４２】
情報処理装置１は、書き戻しを行うか否か判断するために、データ固有のアクセス頻度情報を用いる。アクセス頻度情報は、例えば、ページサイズごとのデータに対して付与され、当該データの特性（データの特徴又は属性）に基づいて決定される情報であり、データのアクセス頻度を表す情報である。本実施形態において、アクセス頻度は、例えば、データの特性に基づいて決定され、当該データの単位時間当たりに発生するアクセスの回数などを表すとする。アクセス頻度情報は、例えば、アクセス頻度情報管理テーブル（図示せず）で管理される。アクセス頻度情報管理テーブルは、例えば、ＯＳ９又はメモリ管理装置３によって管理され、揮発性半導体メモリ５又はメモリ管理装置３内の記憶部（図示せず）に配置される。
【００４３】
アクセス頻度情報は、例えば、プログラム自身が持つ特徴、プログラムのテキスト（txt）領域、スタック（stack）領域、ヒープ（heap）領域、データ（data）領域のうちのどの領域に配置されるかなどの、データの特性に基づいて定義される。
【００４４】
なお、アクセス頻度情報としては、例えば、後述するカラーリング情報を用いることもできる。
【００４５】
前述のＯＳ９に備えられる設定部９２は、既存の書き戻し処理（書き戻し制御）において一定に決められていた最後に書き込みアクセスが発生してから書き戻しを行なうまでの時間を、アクセス頻度情報に基づいて変更させる。
【００４６】
書き戻し処理の第１の例について説明する。
【００４７】
例えば、既存の書き戻し処理において、書き込みアクセスから３０秒経過後にダーティ領域のデータの書き戻しが実行されるように設定されているとする。この場合、あるデータに対して書き込みアクセスから３２秒後に次の書き込みアクセスが発生すると、ダーティ状態を解消するために、２回の書き戻しが必要となる。すなわち、第１の書き込みアクセスによりデータがダーティ状態となり、第１の書き込みアクセスから３０秒後に第１の書き戻しが実行され、その第１の書き戻しの２秒後に当該データに対する第２の書き込みアクセスが実行されて再びダーティ状態となり、第２の書き込みアクセスから３０秒後に第２の書き戻しが発生する。
【００４８】
これに対して、本実施形態のＯＳ９は、アクセス頻度情報に基づいて、このデータの書き戻しを、最後の書き込みアクセスから３２秒より長い時間経過した後に実行するように設定する。これにより、上記の第１の書き込みアクセス及び第２の書き込みアクセスの後に１回の書き戻し処理を実行することでダーティ状態を解消することが可能である。したがって、書き戻しの発生回数を抑制することが可能となる。
【００４９】
書き戻し処理の第２の例について説明する。
【００５０】
既存の書き戻し処理では、書き込み頻度の低いデータについて書き込みアクセスが発生した場合、設定された期間が経過するまでダーティ状態が続く。
【００５１】
これに対して、本実施形態のＯＳ９は、アクセス頻度情報に基づいて、書き込みアクセスが単発であり、次の書き込みアクセスがしばらく発生しないデータについて、書き込みアクセスから短い時間経過後に書き戻しを実行する。これにより、ダーティ状態のデータ領域を減少させることができる。
【００５２】
このように、本実施形態では、揮発性半導体メモリ５から不揮発性半導体メモリ６１〜６ｎへの書き戻し回数を減少させることができ、その結果、不揮発性半導体メモリ６１〜６ｎの寿命低下を抑制することができる。また、本実施形態では、ダーティ状態を少なくすることができ、不揮発性半導体メモリ６１〜６ｎから揮発性半導体メモリ５へのデータ転送の処理時間を抑制することができる。
【００５３】
ここで、アクセス頻度情報に基づく最後の書き込みアクセスから書き戻しを実行するまでの時間の設定方法の具体例について説明する。
【００５４】
スタック領域又はヒープ領域に配置されるデータ（スタック領域又はヒープ領域に基づくデータ）は、ある一定期間アクセスが発生しなくても、再度、アクセスされる可能性が非常に高いデータであり、他のデータ領域に配置されるデータと異なる特徴を持つ。スタック領域又はヒープ領域に配置されるデータは、他のデータ領域に配置されるデータと比較して、書き戻し後すぐに書き込みアクセスが発生する確率が高い。したがって、スタック領域又はヒープ領域に配置されるデータと他のデータ領域に配置されるデータを区別せず、最後の書き込みアクセスから共通の一定時間で書き戻しを行うのではなく、スタック領域又はヒープ領域に配置されるデータに対する書き戻しは、最後の書き込みアクセスから書き戻しが実行されるまでの時間を通常よりも長く設定する。
【００５５】
これにより、書き戻し後すぐに書き込みアクセスが発生する回数を減少させることができ、結果として不揮発性半導体メモリ６１〜６ｎへの書き込み回数を減らすことができる。
【００５６】
ここで説明した具体例は本実施形態の一例であり、他のアクセスパターン又は領域においても別の観点から、最後の書き込みアクセスから書き戻しまでの時間を増減させることが可能である。
【００５７】
図３は、本実施形態に係るデータ管理テーブルの一例を示す図である。
【００５８】
データ管理テーブル１１は、例えばＯＳ９の判断部９３によって管理されており、例えば揮発性半導体メモリ５に記憶されている。
【００５９】
このデータ管理テーブル１１は、各エントリにおいて、データ識別情報と、このデータに対する最後の書き込みアクセスが発生した時刻情報とを含む。このデータ管理テーブル１１を参照することにより、ＯＳ９の判断部９３は、各データについて、最後の書き込みアクセスから経過した時間を求めることができる。
【００６０】
図４は、本実施形態に係るダーティ状態判断カウントテーブルの一例を示す図である。
【００６１】
ダーティ状態判断カウントテーブル１２は、例えばＯＳ９の判断部９３によって管理されており、例えば揮発性半導体メモリ５に記憶されている。
【００６２】
このダーティ状態判断カウントテーブル１２は、各エントリにおいて、データ識別情報と、このデータの最後の書き戻し後にダーティ状態と判断されたが書き戻しが行われなかった回数とを含む。このダーティ状態判断カウントテーブル１２を参照することにより、ＯＳ９の判断部９３は、最後の書き戻し後にダーティ状態と判断された回数が所定の回数以上の場合に書き戻しを実行する、などの判断を行うことができる。
【００６３】
図５は、本実施形態に係る情報処理装置１の書き戻し処理の一例を示すフローチャートである。図５は、スタック領域又はヒープ領域に配置されるデータの書き戻し処理について例示している。
【００６４】
ＯＳ９は、例えば、一定の周期で、書き戻し処理を開始する。
【００６５】
ＯＳ９は、揮発性半導体メモリ５に割り当てられているデータのうち、処理対象データ（未処理のデータ）を選択する（ステップＳ１）。
【００６６】
ＯＳ９の不一致判断部９１は、処理対象データがダーティ状態か否か判断する（ステップＳ２）。
【００６７】
処理対象データがダーティ状態でない場合、書き戻し処理は、ステップＳ１１に移動する。
【００６８】
処理対象データがダーティ状態の場合、ＯＳ９の設定部９２は、データ管理テーブル１１に基づいて、処理対象データがダーティ状態となった時点から所定の時間が経過しているか否か判断する（ステップＳ３）。
【００６９】
処理対象データがダーティ状態となった時点から所定の時間が経過していない場合、書き戻し処理はステップＳ１１に移動する。
【００７０】
処理対象データがダーティ状態となった時点から所定の時間が経過している場合、ＯＳ９の設定部９２は、処理対象データがスタック領域又はヒープ領域に配置されるデータであるかなどを示すアクセス頻度情報を確認する（ステップＳ４）。
【００７１】
処理対象データがスタック領域又はヒープ領域に配置されるデータでない場合、書き戻し処理はステップＳ９に移動し、処理対象データがスタック領域又はヒープ領域に配置されるデータである場合、書き戻し処理はステップＳ６に移動する（ステップＳ５）。
【００７２】
処理対象データがスタック領域又はヒープ領域に配置されるデータである場合、ＯＳ９の判断部９３はダーティ状態判断カウントテーブル１２に基づいて、揮発性半導体５のスタック領域又はヒープ領域に配置される処理対象データに対して、最後の書き戻し後から所定の回数（例えば４回など）ダーティ状態であると判断されたか否か確認する（ステップＳ６）。なお、この所定の回数は、アクセス頻度情報などに基づいて、設定部９２によって変更可能であるとする。
【００７３】
処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態であると判断された場合、書き戻し処理はステップＳ８に移動し、処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態でないと判断された場合、書き戻し処理はステップＳ１０に移動する（ステップＳ７）。
【００７４】
処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態と判断された場合、ＯＳ９の判断部９３は、ダーティ状態判断カウントテーブル１２において、処理対象データに対する最後の書き戻し後からのダーティ状態判断回数をクリアし（ステップＳ８）、さらに、ＯＳ９の書き戻し部９４は、この処理対象データに対する揮発性半導体メモリ５から不揮発性半導体メモリ６１〜６ｎへの書き戻しを実行する（ステップＳ９）。なお、このステップＳ８及びステップＳ９の実行順序は、逆でもよく、並列に実行されてもよい。その後、処理はステップＳ１１に移動する。
【００７５】
一方、処理対象データに対して、最後の書き戻し後からの所定の回数ダーティ状態と判断されていない場合、ＯＳ９の判断部９３は、ダーティ状態判断カウントテーブル１２における処理対象データに対して、最後の書き戻し後からダーティ状態と判断された回数をインクリメントする（ステップＳ１０）。その後、処理はステップＳ１１に移動する。
【００７６】
そして、ＯＳ９は、上記ステップＳ１においてすべてのデータが選択されたか否か判断する。まだ、未選択のデータが揮発性半導体メモリ５に存在する場合、書き戻し処理はステップＳ１に戻る。揮発性半導体メモリ５のすべてのデータが選択された場合、書き戻し処理は終了する（ステップＳ１１）。
【００７７】
以上説明した本実施形態において、情報処理装置１は、データ固有のアクセス頻度情報に基づいて、書き戻し処理（同期処理）のタイミングを制御する。例えば、本実施形態では、特定のデータ領域に配置されるデータに対する、最終の書き込みアクセスから書き戻しを実行するまでの時間が変化され、データ領域に適したタイミングで書き戻しが実行される。これにより、本実施形態においては、既存の書き戻し処理と比較して、不揮発性半導体メモリ６１〜６ｎへの書き戻し回数を減少させることができる。
【００７８】
また、本実施形態においては、既存の書き戻し処理と比べて、書き戻しを早めに実行することができる。これにより、新たなデータが不揮発性半導体メモリ６１〜６ｎから揮発性半導体メモリ５にデータ転送される場合に、揮発性半導体メモリ５のデータを不揮発性半導体メモリ６１〜６ｎに書き戻すことを抑制でき、データのロード処理のオーバーヘッドを軽減させることができる。
【００７９】
（第２の実施形態）
本実施形態では、上記第１の実施形態の変形例として第１から第４の変形例について説明する。
【００８０】
第１の変形例においては、上記図５で説明したＯＳ９による書き戻し処理を、ソフトウェア８を実行する処理部７によって実現する。
【００８１】
これにより、プロセッサＰ１〜Ｐ４の負荷の増加を防止することができる。また、ＯＳ９に処理の追加をしなくてもよい。
【００８２】
第２の変形例において、メモリ管理装置３は、図６に示すように、揮発性半導体メモリ５用のコントローラ１３と、不揮発性半導体メモリ６１〜６ｎ用のコントローラ１４とを備えているとしてもよい。
【００８３】
この図６において、コントローラ１３は、揮発性半導体メモリ５に対する書き込みアクセス、読み出しアクセス、データの消去などの各種処理を制御する。コントローラ１４は、不揮発性半導体メモリ６１〜６ｎに対する書き込みアクセス、読み出しアクセス、データの消去などの各種処理を制御する。
【００８４】
揮発性半導体メモリ５のデータは、コントローラ１３、バス２、コントローラ１４を経由して、不揮発性半導体メモリ６１〜６ｎに転送される。
【００８５】
一方、不揮発性半導体メモリ６１〜６ｎのデータは、コントローラ１４、バス２、コントローラ１３を経由して、揮発性半導体メモリ５に転送される。
【００８６】
第３の変形例において、書き戻し処理は、図７に示すフローチャートにしたがって実行される。この図７の書き戻し処理は、揮発性半導体メモリ５上の各データに対して書き戻しを行うか否か判断し、各データに対する判断の終了後に書き戻しを行うと判断されたデータに対して書き戻しを実行する点で、揮発性半導体メモリ５上の各データに対して、書き戻しの判断と実行を繰り返す上記図５の書き戻し処理と異なっている。
【００８７】
図７の書き戻し処理においては、まず、ＯＳ９は、処理対象データを選択する（ステップＴ１）。
【００８８】
ＯＳ９の不一致判断部９１は、前回の書き戻し後から現時点までについて、処理対象データに対して書き込みアクセスが発生しており、処理対象データがダーティ情報か否か判断する（ステップＴ２）。
【００８９】
処理対象データがダーティ状態でなければ、書き戻し処理はステップＴ８に移動する。
【００９０】
処理対象データがダーティ状態の場合、ＯＳ９の設定部９２は、アクセス頻度情報に基づいて、処理対象データに対する書き戻しを早くするか、遅らせるか、変化させないか判断し、所定回数を設定する（ステップＴ３）。
【００９１】
ＯＳ９の判断部９３は、ダーティ状態判断カウントテーブル１２に基づいて、処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態であると判断されたか否か判断する（ステップＴ４）。
【００９２】
処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態であると判断された場合、書き戻し処理はステップＴ５に移動し、処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態でないと判断された場合、書き戻し処理はステップＴ７に移動する。
【００９３】
処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態と判断された場合、ＯＳ９の判断部９３は、ダーティ状態判断カウントテーブル１２において、処理対象データに対する最後の書き戻し後からのダーティ状態判断回数をクリアし（ステップＴ５）、さらに、ＯＳ９の判断部９３は、この処理対象データを、書き戻し対象として選択する（ステップＴ６）。なお、このステップＴ５及びステップＴ６の実行順序は、逆でもよく、並列に実行されてもよい。
【００９４】
一方、処理対象データに対して、最後の書き戻し後からの所定の回数ダーティ状態と判断されていない場合、ＯＳ９は、ダーティ状態判断カウントテーブル１２における処理対象データに対して、最後の書き戻し後からダーティ状態と判断された回数をインクリメントする（ステップＴ７）。
【００９５】
そして、ＯＳ９の書き戻し部９４は、上記ステップＴ１においてすべてのデータが選択されたか否か判断する（ステップＴ８）。
【００９６】
未選択のデータが揮発性半導体メモリ５に存在する場合、書き戻し処理はステップＴ１に戻る。
【００９７】
揮発性半導体メモリ５のすべてのデータが選択された場合、ＯＳ９の書き戻し部９４は、書き戻し対象として選択されたデータに対する書き戻しを実行し（ステップＴ９）、書き戻し処理を終了する。
【００９８】
このように、書き戻し処理は、様々に最適化して適用することができる。
【００９９】
なお、この図７についても、後述の第４の実施形態で説明するように、ＯＳ９に代えて、ソフトウェア８を実行する処理部７が処理主体であるとしてもよい。
【０１００】
第４の変形例において、ＯＳ９は、図８に示すような書き込みカウントテーブル１５に基づいて、書き戻しを実行するか否か判断するとしてもよい。
【０１０１】
書き込みカウントテーブル１５は、例えば揮発性半導体メモリ５に記憶されている。この書き込みカウントテーブル１５は、各エントリにおいて、データ識別情報と、このデータに対する最後の書き戻し後の揮発性半導体メモリ５への書き込みアクセス回数とを含む。
【０１０２】
ＯＳ９は、書き込みカウントテーブル１５を用いて、揮発性半導体メモリ５に記憶されている各データに対して、このデータの最後の書き戻し後から書き込みアクセスの実行された回数を管理する。
【０１０３】
そして、ＯＳ９は、アクセス頻度情報に基づいて、各データの所定の回数を設定し、各データについて、設定された所定の回数以上、最後の書き戻しから書き込みアクセスが実行された場合に、書き戻しを実行する。
【０１０４】
このように、書き戻しを遅らせる又は早めるための判断には、様々な基準を用いることができる。
【０１０５】
（第３の実施形態）
本実施形態では、上記第１及び第２の実施形態の変形例であり、プロファイル部を具備する情報処理装置について説明する。
【０１０６】
上記第１の実施形態で説明されたアクセス頻度情報は、データの特性に基づいて、予め決定（予測）される情報である。アクセス頻度情報に基づいて、書き戻しを実行するか否か判断される場合、情報処理装置毎の差異が吸収されない場合がある。情報処理装置毎に、プロセッサ自体の速度、プロセッサの１次キャッシュメモリの動作周波数、共有の２次キャッシュメモリの動作周波数、容量は変わることがある。このような情報処理装置の相違に応じて揮発性半導体メモリ５に対するアクセスパターンも変わる場合がある。
【０１０７】
そこで、本実施形態では、例えば、第１の実施形態の情報処理装置１に、さらにアクセス頻度情報を収集するプロファイル部を具備する。プロファイル部はハードウェアで構成される。そして、本実施形態では、第１の実施形態で説明したアクセス頻度情報を補正し、より高精度の書き戻し処理を実現する。
【０１０８】
第１の実施形態で説明したアクセス頻度情報は、データ特性に基づいて、予め決定される情報であり、以下において「静的なアクセス頻度情報」と称する。本実施形態で説明される、プロファイル部によって収集されるアクセス頻度情報は、以下において、単に「アクセス頻度情報」と称する。
【０１０９】
また、本実施形態では、ハードウェアで構成されたプロファイル部によってアクセス頻度情報の収集を行うため、ソフトウェアでの収集に比べて細かい時間単位での収集がシステム性能の低下を起こさずに可能になる。
【０１１０】
図９は、本実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【０１１１】
この図９の情報処理装置１６においては、上記図６の構成に対して、さらにコントローラ１３に隣接してプロファイル部１７が備えられている。
【０１１２】
プロファイル部１７は、コントローラ１３へのアクセス情報（アクセス要求信号）を監視し、揮発性半導体メモリ５へのアクセス頻度情報（例えばアクセス履歴情報など）を収集し、記憶する。プロセッサＰ１〜Ｐ４及び処理部７は、バス２を介して、プロファイル部１７をアクセスし、プロファイル部１７によって収集されたアクセス頻度情報を読み出すことが可能である。
【０１１３】
プロファイル部１７によって収集される情報には様々な情報が考えられ、さらに、その情報を表現するための実装形態にも様々な構成が考えられる。本実施形態では、プロファイル部１７は、データ領域への書き込みアクセスの間隔を監視する。
【０１１４】
図１０は、本実施形態に係るプロファイル部１７の一例を示すブロック図である。
【０１１５】
プロファイル部１７は、イネーブルレジスタ１８、ティックジェネレータ１９、マスタカウンタ２０、プロファイルテーブル２１を記憶する記憶部２２、プロファイル制御部２３を具備する。
【０１１６】
イネーブルレジスタ１８は、アクセス頻度情報の収集を行うか否かを示すフラグを記録する。例えば、イネーブルレジスタ１８に１がセットされると、プロファイル部１７の動作が開始され、所定の時間ごとのティック（Tick）の発生と、揮発性半導体メモリ５に対するアクセス情報の収集が開始される。
【０１１７】
ティックジェネレータ１９は、アクセス頻度情報を所定の時間単位でアップデートするために、この所定の時間単位でアップデート命令を発する。本実施形態では、ティックが発生されるごとに、アクセス頻度情報が更新される。このように、ティックという概念を用いることにより、あるティック間隔において集中的にアクセスが発生しても、１単位のアクセスとしてカウントすることができる。このティックの間隔は、ＯＳ９による書き戻しチェック間隔より短い時間とすることにより、ハードウェアでティックを生成する意義が生じる。ティックの間隔は、例えばＯＳ９、ソフトウェア８などのソフトウェア（以下、単に「ソフトウェア」という）で設定可能とする。
【０１１８】
マスタカウンタ２０は、ティックが発生されるたびに、値を１インクリメントする３２bit長のカウンタである。マスタカウンタ２０の値は、ソフトウェアから読み出し可能である。
【０１１９】
プロファイルテーブル２１は、プロファイル部１７によって収集されるアクセス頻度情報の本体である。本実施形態において、プロファイルテーブル２１のエントリ数は、１２８とする。プロファイルテーブル２１のすべてのフィールドについて、ソフトウェアから読み出し及び書き込み可能である。
【０１２０】
プロファイルテーブル２１の各エントリは、有効／無効ビット、アドレス情報、サイズ情報、ティック間書き込み検出情報、最終アクセスティック時間、前最終アクセスティック時間を含む。この図１０において、有効／無効ビットは「Valid」、アドレス情報は「Address」、サイズ情報は「Size」、ティック間書き込み検出情報は「Write」、最終アクセスティック時間は「Last Tick Count」、前最終アクセスティック時間は「Prev Tick Count」で表現されている。
【０１２１】
有効／無効ビット(1bit)は、そのエントリが有効であるか無効であるかを示す。有効／無効ビットが１の時に、そのエントリはアクセス頻度情報を収集する。
【０１２２】
アドレス情報（３２bit長）は、このエントリが、どのアドレスについてのアクセス頻度情報を示すかを特定するために基準として用いられる情報である。アドレス情報は、例えばソフトウェアによって設定される。アドレス情報のビット長は、揮発性半導体メモリ５のアドレス範囲と同じであり、本実施形態では揮発性半導体メモリ５は４GByteの容量があるとして、３２bitとする。使用されるプロセッサ、揮発性半導体メモリの容量によって、アドレス情報のビット長は変化する。
【０１２３】
サイズ情報（２bit長）は、このエントリが、アドレス情報からどの範囲までについてのアクセス頻度情報を管理するかを特定するための情報である。サイズ情報は例えばソフトウェアによって設定される。
【０１２４】
例えば、サイズ情報に０が設定されている場合、このエントリはアドレス情報＋４KByteの領域に関するアクセス頻度情報を管理する。
【０１２５】
例えば、サイズ情報に１が設定されている場合、このエントリはアドレス情報＋１６KByteの領域に関するアクセス頻度情報を管理する。
【０１２６】
例えば、サイズ情報に２が設定されている場合、このエントリはアドレス情報＋１MByteの領域に関するアクセス頻度情報を管理する。
【０１２７】
例えば、サイズ情報に３が設定されている場合、このエントリはアドレス情報+４MByteの領域部に関するアクセス頻度情報を管理する。
【０１２８】
ティック間書き込み検出情報（１bit)は、基本的にハードウェアによってセット、リセットされる。ティック間書き込み検出情報には、ティック区間内でこのエントリに対応する領域に書き込みアクセスが１回でも発生した場合に、１がセットされる。ティック処理の終了時に、ティック間書き込み検出情報には０がセットされる。ティック間書き込み検出情報には、ティック区間内でこのエントリに対応する領域に書き込みアクセスが発生しない場合に、０がセットされる。
【０１２９】
最終アクセスティック時間(３２bit)は、基本的にハードウェアによって更新される。ティックジェネレータ１９によるアップデート命令が発行された際に、ティック間書き込み検出情報に１がセットされている場合、最終アクセスティック時間に、マスタカウンタ２０の値がコピーされる。
【０１３０】
前最終アクセスティック時間（３２bit)は、基本的にハードウェアによって更新される。ティックジェネレータ１９によるアップデート命令が発行された際に、ティック間書き込み検出情報に１がセットされている場合、前最終アクセスティック時間に、更新される前の最終アクセスティック時間の値がコピーされる。
【０１３１】
プロファイル制御部２３は、ティックジェネレータ１９からのティック（割り込み）、揮発性半導体メモリ５のアクセス情報を受信し、プロファイルテーブル２１の内容を更新する。
【０１３２】
本実施形態に係るプロファイル部１７が使用される場合には、ソフトウェアによって次の初期設定が実行される。
【０１３３】
第１に、プロファイルテーブル２１の全エントリに共通的な処理として、ティック間隔が決定される。本実施形態では、１マイクロ秒に１回、ティックが発生されるように、ティック間隔が設定されたとする。
【０１３４】
第２に、アクセス頻度情報の測定が求められる揮発性半導体メモリ５のデータ領域毎に、基準となるアドレス情報及び範囲が、プロファイルテーブル２１のエントリのアドレス情報及びサイズ情報にセットされ、有効／無効ビットに１がセットされる。エントリ中のその他のフィールドには、初期的に０がセットされる。
【０１３５】
第３に、マスタカウンタの値が０にリセットされる。
【０１３６】
第４に、イネーブルレジスタ１８に１がセットされる。
【０１３７】
上記の初期設定後、プロファイル部１７の動作は開始され、プロファイル制御部２３は、例えば１マイクロ秒ごとに揮発性半導体メモリ５に対するアクセスが発生したか否かを判断し、アクセスが発生していた場合には、プロファイルテーブル２１のエントリにおいて、最後（今回）アクセスティック時間と、前回の最終アクセスティック時間とを保存する。
【０１３８】
図１１は、本実施形態に係る書き込みアクセスの発生状態のシーケンスと、このシーケンスの条件でプロファイル部１７を動作させた場合のプロファイルテーブル２１の変化との一例を示す図である。
【０１３９】
この図１１において、１ティックは１マイクロ秒、アクセスのチェック範囲は、アドレス「0x1000_0000から0x1000_0FFF」(４KByte)、アドレス「0x2000_0000から0x2000_3FFF」(１６KByte)、アドレス「0x3000_0000から0x300F_FFFF」（１MByte）の３領域とする。
【０１４０】
図１１のシーケンス図における破線とその数字は、数字が示すアドレスへの書き込みアクセスが発生したことを示す。
【０１４１】
この図１１のプロファイルテーブル２１の変化では、初期設定完了直後のタイミングＡと、ティックが発生し、マスタカウンタ２０の値がインクリメントされた直後のタイミングＢ，Ｄ，Ｆのプロファイルテーブル２１の状態と、ティックが発生したことに基づいて処理が実行された直後Ｃ，Ｅ，Ｇのプロファイルテーブル２１の値が図示されている。
【０１４２】
タイミングＡにおいては、ソフトウェアによりプロファイル部１７の初期設定が完了された状態が表されている。設定されたフィールドを除く他のフィールドには、０が設定される。
【０１４３】
タイミングＢにおいては、該当ティック間隔において、アドレス「0x1000_0000」の属する領域とアドレス「0x3000_0000」の属する領域へアクセスが発生したため、これらの領域に対応するエントリのティック間書き込み検出情報に１がセットされている。
【０１４４】
タイミングＢに対する処理が実行されたタイミングＣにおいて、ティック間書き込み検出情報に１がセットされていたエントリに対して、前最終アクセスティック時間にその時の最終アクセスティック時間の値がセーブされ、最終アクセスティック時間にその時のマスタカウンタの値がセーブされる。このため、１行目のエントリと、３行目のエントリの値が書き換えられる。その後、ティック間書き込み検出情報にはすべて０がセットされる。
【０１４５】
タイミングＤにおいては、該当ティック間隔において、アドレス「0x1000_0000」の属する領域にのみ書き込みアクセスが発生している。このため、この領域に対応する１行目のエントリのみ、ティック間書き込み検出情報に１がセットされている。
【０１４６】
タイミングＤに対する処理が実行されたタイミングＥにおいて、ティック間書き込み検出情報に１がセットされていた１行目のエントリに対して、前最終アクセスティック時間にその時の最終アクセスティック時間の値「１」がセーブされ、最終アクセスティック時間にその時のマスタカウンタの値「２」がセーブされる。その後、ティック間書き込み検出情報にはすべて０がセットされる。
【０１４７】
タイミングＦにおいては、タイミングＢと同様に、該当ディック間隔において、アドレス「0x1000_0000」の属する領域とアドレス「0x3000_0000」の属する領域へのアクセスが発生している。このため、これらの領域に対応する１行目と３行目のエントリのティック間書き込み検出情報に１がセットされる。
【０１４８】
タイミングＦに対する処理が実行されたタイミングＧにおいて、ティック間書き込み検出情報に１がセットされていた１行目のエントリに対して、前最終アクセスティック時間にその時の最終アクセスティック時間の値「２」がセーブされ、最終アクセスティック時間にその時のマスタカウンタの値「３」がセーブされる。さらに、ティック間書き込み検出情報に１がセットされていた３行目のエントリに対して、前最終アクセスティック時間にその時の最終アクセスティック時間の値「１」がセーブされ、最終アクセスティック時間にその時のマスタカウンタの値「３」がセーブされる。その後、ティック間書き込み検出情報にはすべて０がセットされる。
【０１４９】
上記の図１１のように、プロファイル部１７は動作を進める。ソフトウェアは、適当なタイミングでその瞬間のマスタカウンタ２０の値と、各エントリの前最終アクセスティック時間の値及び最終アクセスティック時間の値を参照する。これにより、アクセス頻度情報の調査対象のデータ領域についての、現在から最終の書き込みアクセスまでの間隔と、現在から前回の最後の書き込みアクセスまでの間隔（最後の２アクセス分の間隔）を算出することができる。そして、これら間隔に基づいて、書き戻しを行うか否か判断することができる。
【０１５０】
例えば、ソフトウェアは、現在から前回の最後の書き込みアクセスまでの間隔の値が大きい場合には、書き込み間隔が長いデータ領域と判断し、その更新間隔に応じて、データの書き戻しの発生を遅らせる。
【０１５１】
また、ソフトウェアは、上記第１の実施形態で説明した静的なアクセス頻度情報を、本実施形態のアクセス頻度情報と併せて利用することも可能である。ソフトウェアは、第１の実施形態で説明した静的なアクセス頻度情報を、本実施形態のアクセス頻度情報よりも重視したい場合には、プロファイル部１７によって収集された本実施形態のアクセス頻度情報を無視して書き戻し処理を実行してもよい。第１の実施形態の静的なアクセス頻度情報と、本実施形態のハードウェアによるアクセス頻度情報とを柔軟に組み合わせることで、最適なタイミングで書き戻しを実行することができる。
【０１５２】
また、ソフトウェアは、どのデータ領域に対して、プロファイル部１７によってアクセス頻度情報を収集するかを、第１の実施形態の静的なアクセス頻度情報に基づいて決定するとしてもよい。
【０１５３】
なお、本実施形態では、マスタカウンタ２０を３２bitとし、ティック間隔を１マイクロ秒としている。このため、最大で振り返られる過去の時間は、２の３２乗×１マイクロ秒＝約４２９５秒＝約７２分となる。つまり約７２分後にはマスタカウンタ２０の値が０に戻り、また１からカウントされる。つまり、約７２分が経過すると、プロファイルテーブル２１に登録される前最終アクセスティック時間及び最終アクセスティック時間の大小と、実際にアクセスされた時間との関係が整合しないことになる。このため、ソフトウェアは、マスタカウンタ２０が０に戻る可能性を考慮してアクセス頻度の解析を行うか、あるいは７２分に一回、プロファイル部１７を停止し、設定をやり直す。
【０１５４】
本実施形態において、プロファイル部１７は、ハードウェアにより実装される。このため、プロファイル部１７では、収集できる情報量に上限が存在する。例えば、プロファイル部１７は、２GByteのメモリ空間に対するアクセスを４KByte単位で管理するとする。この場合、プロファイル部１７は、２GByte／４KByte＝５１２K個のエントリを管理する必要がある。また、プロファイル部１７は、１エントリあたり１６Byteの情報量を必要とする場合、５１２K×１６Byte＝８MByteの情報量を必要とする。８MByteの記憶容量は現在の半導体デバイスでは実装可能なサイズであるが、大きなコストとなる。
【０１５５】
また、すべての情報処理装置がメモリ空間２GByteを提供するわけではない。情報処理装置ごとに、提供されるメモリ空間の記憶容量は増減する。したがって、プロファイル部１７に求められるエントリ数は情報処理装置ごとに変化する。
【０１５６】
そのため、本実施形態においてプロファイル部１７は、上述したようにソフトウェアによって指定された領域に対してのみ、アクセス頻度情報を収集する。
【０１５７】
しかし、プロファイル部１７としては、ソフトウェアによって指示された領域に対してアクセス頻度情報を収集する他にも、効率的にアクセス頻度情報を収集するために、様々な制御を行うことが考えられる。例えば、収集されたアクセス頻度情報のデータ容量が、プロファイル部１７の記憶部２２に記憶可能なデータ容量を超えた場合（プロファイル部１７からアクセス頻度情報が溢れた場合）、プロファイル部１７のプロファイル制御部２３は、収集されたアクセス頻度情報の一部を、揮発性半導体メモリ５に出力する。このプロファイル制御部２３の制御においては、不揮発性半導体メモリ５の領域及びバンド幅が使用される。また、例えば、収集されたアクセス頻度情報のデータ容量が、記憶部２２に記憶可能なデータ容量を超えた場合、プロファイル部１７のプロファイル制御部２３は、記憶部２２に直近のアクセス頻度情報を残し、記憶部２２から古いアクセス頻度情報を消去する。
【０１５８】
なお、本実施形態に係るプロファイル部１７は一例であり、本質的にはデータの更新間隔が取得できる仕組みを備えることで様々に構成を変更することができる。本実施形態においては、マスタカウンタ２０の値、プロファイルテーブル２１の前最終アクセスティック時間の値、最終アクセスティック時間の値から書き込みアクセスの間隔が算出されているが、プロファイルテーブル２１の構成を変更することにより、前最終アクセスティック時間よりもさらに前のアクセスティック時間を保存できるようにし、それらの値を用いて書き込みアクセスの間隔が算出されるとしてもよい。これにより、書き込みアクセスの間隔の見積もり精度を向上させることができる。また、プロファイルテーブル２１のティック間書き込み検出情報を多ビットにし、ティックが発生するたびに値をシフトさせることで、書き込みアクセスの発生の有無とその発生時間（ティック数）を記憶するなどにより、マスタカウンタ２０の値を用いることなく、書き込みアクセスの間隔が算出されるとしてもよい。このように、プロファイル部１７の実装は様々に変更して適用できる。
【０１５９】
図１２は、本実施形態に係る情報処理装置１６の書き戻し処理の一例を示すフローチャートである。
【０１６０】
この図１２において、ステップＵ１，Ｕ２，Ｕ４〜Ｕ９は、上記図７のステップＴ１，Ｔ２，Ｔ４〜Ｔ９と同様である。
【０１６１】
本実施形態において、ステップＵ３は、上記第１の実施形態の静的なアクセス頻度情報とプロファイル部１７によって収集されたアクセス頻度情報とに基づいて、書き戻しを実行するタイミングを早めたいか、遅くしたいか、変更しないかを判断し、所定の回数を設定する。
【０１６２】
上述したプロファイル部１７の動作により、プロセッサＰ１〜Ｐ４で実行されるＯＳ９、処理部７で実行されるソフトウェア８などのソフトウェアは、情報処理装置１における各種のデータ領域への書き込みアクセスの間隔を認識することができる。このため、本実施形態では、第１の実施形態の静的なアクセス頻度情報による書き戻し処理の時間決定を補正することができる。
【０１６３】
以上説明した本実施形態においては、静的なアクセス頻度情報に加えて、情報処理装置１６における実際のアクセス頻度情報（例えば、最後にアクセスした時間情報）が利用され、実際のアクセス頻度の偏りに応じて、静的なアクセス頻度情報だけではカバーしきれなかった、情報処理装置毎に変化するメインメモリへのアクセス回数、同一種別のデータ領域内のアクセス頻度の偏りに対処することができ、書き戻しが実行されるまでの時間を変化させることができる。
【０１６４】
また、本実施形態では、指定された一定時間よりも速いタイミングで書き戻しを行うことができ、結果として情報処理装置１６の性能を向上させることができる。
【０１６５】
なお、本実施形態に係る情報処理装置１６は様々に変更することができる。
【０１６６】
例えば、図１３に示すように、コントローラ１４は、ＤＭＡＣ（Direct Memory Access Controler）５０を備えるとしてもよい。ＤＭＡＣ５０は、揮発性半導体メモリ５と不揮発性半導体メモリ６１〜６ｎの間のデータ転送を行う。この図１３の構成においては、プロファイル部１７の独立性を高くすることができる。
【０１６７】
例えば、図１４に示すように、プロファイル部１７は、コントローラ１３に備えられるとしてもよい。この図１４の構成においては、情報処理装置１６内のバス２の構造を変更することなく、プロファイル部１７を追加することができる。
【０１６８】
例えば、図１５に示すように、プロファイル部１７は、２次キャッシュメモリＬ２に備えられるとしてもよい。このように、２次キャッシュメモリＬ２内にプロファイル部１７を実装させることにより、プロセッサＰ１〜Ｐ４からのアクセスのみ確認することができ、プロセッサＰ１〜Ｐ４からのアクセスに対するアクセス頻度情報を収集することができる。
【０１６９】
例えば、図１６に示すように、プロファイル部１７は、メモリ管理装置３に備えられるとしてもよい。この図１６の構成においては、情報処理装置１６内のバス２の構造を変更することなく、プロファイル部１７を追加することができる。
【０１７０】
（第４の実施形態）
上記第１の実施形態では、ＯＳ９により書き戻し処理が実行されているが、本実施形態では、メモリ管理装置３によって書き戻し処理が実行される場合について詳細に説明する。
【０１７１】
また、本実施形態では、アクセス頻度情報としてカラーリング情報を用いる。
【０１７２】
図１７は、本実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【０１７３】
本実施形態において、処理部７は、ソフトウェア８を実行し、これによりキャッシュ制御部２４、キャッシュミス検出部２５、データ配置領域決定部２６、書き戻し処理部２７を実現する。
【０１７４】
本実施形態において、不揮発性半導体メモリ６１〜６ｎは、第１のメモリ、第２のメモリを備えているとしてもよい。第１のメモリは、第２のメモリよりもアクセス可能上限回数が多い。ここでアクセス可能上限回数とは、統計的に予想される期待値であって、常にこの関係が保証されることを意味してはいないことに注意すべきである。
【０１７５】
不揮発性半導体メモリ６１〜６ｎに含まれている第１のメモリは、例えば、ＳＬＣ（Single Level Cell）のＮＡＮＤ型フラッシュメモリであるとする。不揮発性半導体メモリ６１〜６ｎに含まれている第２のメモリは、例えば、ＭＬＣ（Multi Level Cell）のＮＡＮＤ型フラッシュメモリであるとする。
【０１７６】
ＳＬＣは、ＭＬＣと比較して、読み出しおよび書き込みが高速であり、信頼性が高く、耐久性が高い。しかしながら、ＳＬＣは、ＭＬＣと比較して、ビットコストが高く、大容量化には向いていない。一方、ＭＬＣは、ＳＬＣと比較して、読み出しおよび書き込みが低速であり、信頼性が低く、耐久性が低い。しかしながら、ＭＬＣは、ＳＬＣと比較して、ビットコストが低く、大容量化に向いている。
【０１７７】
なお、信頼性とは、記憶装置からデータを読み出す場合におけるデータの欠損の起こりにくさの程度を意味する。また、耐久性が高いとは、アクセス可能上限回数が多く、耐久性が低いとは、アクセス可能上限回数が少ないことを意味する。
【０１７８】
本実施形態では、不揮発性半導体メモリ６１〜６ｎは、ＮＡＮＤ型フラッシュメモリであるとして説明するが、不揮発性半導体メモリ６１〜６ｎはこれに限定されず、例えば、ＮＯＲ型フラッシュメモリなどのような他の種類のフラッシュメモリ、ＰＲＡＭ（Phase change memory）、ＲｅＲＡＭ（Resistive Random access memory）であるとしてもよい。
【０１７９】
本実施形態では、不揮発性半導体メモリ６１〜６ｎがＳＬＣのＮＡＮＤ型フラッシュメモリと、ＭＬＣのＮＡＮＤ型フラッシュメモリとを含むが、例えば、不揮発性半導体メモリ６１〜６ｎが２bit/CellのＭＬＣのＮＡＮＤ型フラッシュメモリと、３bit/CellのＭＬＣのＮＡＮＤ型フラッシュメモリとを含むとしてもよい。
【０１８０】
また、第２のメモリとしてＭＬＣを採用し、第１のメモリとして、ＭＬＣの下位ページのみを使用してデータ書き込みを行う擬似ＳＬＣモードが利用可能なＭＬＣを採用してもよい。この場合、第１のメモリと第２のメモリとを共通のチップのみで構成することが可能であり、製造コスト面で有利となる。
【０１８１】
本実施形態では、不揮発性半導体メモリ６１〜６ｎをメインメモリとして用いる。メインメモリとして不揮発性半導体メモリ６１〜６ｎを利用する場合、従来の２次記憶装置として不揮発性半導体メモリ６１〜６ｎを利用する場合（例えば、ＳＳＤ（Solid State Drive）等）と比べ、不揮発性半導体メモリ６１〜６ｎへのアクセス頻度が高くなり、不揮発性半導体メモリ６１〜６ｎの寿命を短くする。本実施形態において、不揮発性半導体メモリ６１〜６ｎ、揮発性半導体メモリ５に対するデータの配置を管理することにより、不揮発性半導体メモリ６１〜６ｎの寿命の長期化を実現する。
【０１８２】
メモリ管理装置３は、例えばプロセッサＰ１〜Ｐ４からの揮発性半導体メモリ５と不揮発性半導体メモリ６１〜６ｎとに対する読み出し、書き込み、消去を制御する。
【０１８３】
なお、メモリ管理装置３は、プロセッサＰ１〜Ｐ４に備えられ、プロセッサＰ１〜Ｐ４からの揮発性半導体メモリ５と不揮発性半導体メモリ６１〜６ｎとに対する読み出し、書き込み、消去を制御する構成としてもよい。本実施形態において、揮発性半導体メモリ５、不揮発性半導体メモリ６１〜６ｎに対する書き込みデータ、読み出しデータのデータサイズは、例えば、ページサイズであり、消去サイズはブロックサイズである。
【０１８４】
プロセッサＰ１〜Ｐ４のＭＭＵ４１〜４４は、仮想アドレスと物理アドレスの間のアドレス変換機能などの各種機能を具備する。
【０１８５】
上記のメモリ管理装置３の各種処理は、ソフトウェア８で実行するが、ハードウェアで実行してもよい。また、メモリ管理装置３のこれらの処理を、メモリ管理装置３とソフトウェア８で分担して行ってもよい。
【０１８６】
揮発性半導体メモリ５は、不揮発性半導体メモリ６１〜６ｎのキャッシュメモリとして用いられる。
【０１８７】
ソフトウェア１０又はＯＳ９は、１次キャッシュメモリＬ１−１〜Ｌ１−４、２次キャッシュメモリＬ２にアクセスしながらデータの処理を実行する。処理対象データが１次キャッシュメモリＬ１−１〜Ｌ１−４、２次キャッシュメモリＬ２に存在しない場合（１次キャッシュメモリＬ１−１〜Ｌ１−４、２次キャッシュメモリＬ２におけるキャッシュミス）、揮発性半導体メモリ５又は不揮発性半導体メモリ６１〜６ｎから処理データを読み出す。処理データが揮発性半導体メモリ５に存在しない場合、キャッシュミス（揮発性半導体メモリ５におけるキャッシュミス）が発生する。後述のように、揮発性半導体メモリ５におけるキャッシュミスは、キャッシュミス検出部２５により検出される。
【０１８８】
キャッシュ制御部２４は、不揮発性半導体メモリ６１〜６ｎから揮発性半導体メモリ５へのデータキャッシュを制御する。例えば、ソフトウェア１０又はＯＳ９によりアクセスされるデータを不揮発性半導体メモリ６１〜６ｎから揮発性半導体メモリ５へキャッシュする。これにより、ソフトウェア１０又はＯＳ９は、不揮発性半導体メモリ６１〜６ｎより高速にアクセス可能な揮発性半導体メモリ５からデータの読み出しが可能となり、データへのアクセスが高速化される。
【０１８９】
キャッシュミス検出部２５は、揮発性半導体メモリ５におけるキャッシュミスを検出する。前述のように、キャッシュミス制御部２４は、ソフトウェア１０又はＯＳ９からアクセスされるデータを揮発性半導体メモリ５へキャッシュするが、ソフトウェア１０又はＯＳ９からアクセスされるデータが揮発性半導体メモリ５にキャッシュされていない場合には、キャッシュミスが発生する。
【０１９０】
データ配置領域決定部２６は、ソフトウェア１０又はＯＳ９において、新たにデータが生成された場合等に、当該データの配置領域（書き込み領域）を決定する。データ配置領域決定部２６は、当該データのアクセス頻度に応じて、揮発性半導体メモリ５、不揮発性半導体メモリ６１〜６ｎのＳＬＣのＮＡＮＤ型フラッシュメモリ、ＭＬＣのＮＡＮＤ型フラッシュメモリから配置領域を決定する。
【０１９１】
書き戻し処理部２７は、上記第１の実施形態又は上記第２の実施形態で説明した書き戻し処理を実行し、例えば、不一致判断部９１、設定部９２、判断部９３、書き戻し部９４を具備する。
【０１９２】
本実施形態では、各データについての読み出し回数、書き込み回数、読み出し頻度、書き込み頻度などを含むカラーリング情報を用いてウェアレベリング、書き戻し処理が実行される。各データのカラーリング情報は、例えばＯＳ９によって生成される。
【０１９３】
データ配置領域決定部２６は、プロセスＰ１〜Ｐｎにおいて、新たにデータが生成された場合等に、当該データの配置領域（書き込み領域）を決定する。データ配置領域決定部２６は、カラーリング情報に基づいて、揮発性半導体メモリ５、不揮発性半導体メモリ６１〜６ｎのＳＬＣのＮＡＮＤ型フラッシュメモリ、ＭＬＣのＮＡＮＤ型フラッシュメモリから配置領域を決定する。カラーリング情報についての詳細は後述する。
【０１９４】
書き戻し処理部２７は、前述のアクセス頻度情報に加えて、後で詳しく説明するカラーリング情報に基づいて、書き戻しを行うか否かの判断を行い、書き戻しが必要と判断されたデータに対する書き戻しを行う。
【０１９５】
メモリ管理装置３は、カラーリング情報に基づいて、ウェアレベリングを行う。例えば、メモリ管理装置３は、書き込み頻度の高いデータを、揮発性半導体メモリ５と不揮発性半導体メモリ６１〜６ｎのうち、揮発性半導体メモリ５に配置する。また、例えば、メモリ管理装置３は、書き込み頻度の高いデータを、不揮発性半導体メモリ６１〜６ｎのＳＬＣのＮＡＮＤ型フラッシュメモリとＭＬＣのＮＡＮＤ型フラッシュメモリとのうち、ＳＬＣのＮＡＮＤ型フラッシュメモリに記憶する。
【０１９６】
なお、本実施形態のＯＳ９は、不揮発性半導体メモリ６１〜６ｎのＳＬＣのＮＡＮＤ型フラッシュメモリのメモリ領域をＭＬＣのＮＡＮＤ型フラッシュメモリに変更する制御、不揮発性半導体メモリ６１〜６ｎのＭＬＣのＮＡＮＤ型フラッシュメモリのメモリ領域をＳＬＣのＮＡＮＤ型フラッシュメモリに変更する制御を実行するとしてもよい。
【０１９７】
図１８は、本実施形態に係るメモリ管理装置３と、記憶装置に記憶される各種データとの関係の一例を示すブロック図である。
【０１９８】
記憶装置２８は、揮発性半導体メモリ５及び不揮発性半導体メモリ６１〜６ｎに相当する。
【０１９９】
メモリ管理装置３は、メモリ使用情報２９と、メモリ固有情報３０と、アドレス変換情報３１と、カラーリングテーブル３２とを記憶装置２８に格納する。
【０２００】
揮発性半導体メモリ５には、不揮発性半導体メモリ６１〜６ｎに格納されているカラーリングテーブル３２の一部が格納されるとしてもよい。例えば、不揮発性半導体メモリ６１〜６ｎに格納されているカラーリングテーブル３２のうち、頻繁に用いられるカラーリング情報を、揮発性半導体メモリ５に格納するとしてもよい。メモリ管理装置３は、カラーリングテーブル３２等を参照し、記憶装置２８に対するアクセスを管理する。
【０２０１】
メインメモリとして不揮発性半導体メモリ６１〜６ｎを利用する場合、不揮発性半導体メモリ６１〜６ｎへのアクセス頻度は、２次記憶装置として不揮発性半導体メモリ６１〜６ｎを利用する場合よりも高くなり、不揮発性半導体メモリ６１〜６ｎの寿命は短期化する。本実施形態においては、揮発性半導体メモリ５とＳＬＣの不揮発性半導体メモリとＭＬＣの不揮発性半導体メモリとを混成してメインメモリとする記憶装置２８を、情報処理装置１は用いる。記憶装置２８は、異機種混在型のメインメモリであり、メモリ管理装置３によってデータの配置が管理される。
【０２０２】
メモリ使用情報２９は、不揮発性半導体メモリ６１〜６ｎの各ページ領域の書き込み発生回数および読み出し発生回数と、各ブロック領域の消去回数と、使用中領域サイズを含む。
【０２０３】
メモリ固有情報３０は、揮発性半導体メモリ５のメモリサイズと、不揮発性半導体メモリ６１〜６ｎのメモリサイズと、不揮発性半導体メモリ６１〜６ｎのページサイズおよびブロックサイズと、各メモリ領域のアクセス可能上限回数（書き込み可能上限回数、読み出し可能上限回数、消去可能上限回数）と、を含む。ここで、ページサイズとは、不揮発性半導体メモリ６１〜６ｎの書き込み、読み出しのデータサイズの単位である。ブロックサイズとは、不揮発性半導体メモリ６１〜６ｎのデータ消去サイズの単位である。不揮発性半導体メモリ６１〜６ｎにおいて、ブロックサイズはページサイズよりも大きい。
【０２０４】
アドレス変換情報３１は、プロセッサＰ１〜Ｐ４から与えられる論理アドレスを、論理アドレスに対応する物理アドレスに変換する情報である。
【０２０５】
カラーリングテーブル３２は、データ毎のカラーリング情報が保持されるテーブルである。カラーリング情報は、静的カラー情報と動的カラー情報を含む。
【０２０６】
メモリ管理装置３は、アドレス管理部３３、読み出し管理部３４、書き込み管理部３５、カラーリング情報管理部３６、メモリ使用情報管理部３７、再配置部３８を備える。さらに、カラーリング情報管理部３６は、アクセス頻度算出部３９、動的カラー情報管理部４０を備える。
【０２０７】
アドレス管理部３３は、論理アドレスに対して物理アドレスを割り当て、アドレス変換情報３１に記憶する。これにより、メモリ管理装置３は、アドレス変換情報３１を参照することにより、論理アドレスに対応する物理アドレスを取得することができる。
【０２０８】
読み出し管理部３４は、プロセッサＰ１〜Ｐ４が読み出し要求を発生した場合に、記憶装置２８に対して読み出し対象データの読み出し処理を管理する。
【０２０９】
書き込み管理部３５は、プロセッサＰ１〜Ｐ４が書き込み要求を発生した場合に、記憶装置２８に対して書き込み対象データを書き込む処理を管理する。
【０２１０】
カラーリング情報管理部３６は、カラーリングテーブル３２を管理する。
【０２１１】
メモリ使用情報管理部３７は、記憶装置２８のメモリ使用情報２９を管理する。
【０２１２】
再配置部３８は、プロセッサＰ１〜Ｐ４の動作と非同期に、カラーリングテーブル３２に含まれているカラーリング情報に基づき、任意の論理アドレスに対応する物理アドレスに配置されているデータの再配置を行う。再配置部３８は、例えば、動的カラー情報に基づき、ＭＬＣの不揮発性半導体メモリに含まれるデータのうち、読み出し頻度、書き込み頻度が高いデータを、定期的に、ＳＬＣの不揮発性半導体メモリに再配置する。また、再配置部３８は、例えば、動的カラー情報に基づき、ＳＬＣの不揮発性半導体メモリに含まれるデータのうち、読み出し頻度、書き込み頻度が低いデータを、定期的に、ＭＬＣの不揮発性半導体メモリに再配置する。同様に、再配置部３８は、揮発性半導体メモリ、不揮発性半導体メモリ６１〜６ｎの間でもデータの再配置を行うことが可能である。書き込み管理部３５による書き込み処理は、データの更新が発生するたびに、書き込み先メモリ領域の判断処理と書き込み先ブロック領域の判断処理を行うことで再配置を行う。
【０２１３】
アクセス頻度算出部３９は、カラーリングテーブル３２に含まれているカラーリング情報に基づき、データのアクセス頻度情報（動的書き込み頻度DW_color、動的読み出し頻度DR_color）を算出する。
【０２１４】
動的カラー情報管理部４０は、カラーリングテーブル３２に含まれている動的カラー情報を管理する。
【０２１５】
図１９は、本実施形態に係るカラーリング情報とカラーリングテーブル３２の一例を示す図である。
【０２１６】
本実施形態では、データ毎にカラーリング情報が付与される。カラーリング情報が付与されるデータのデータサイズ単位は、例えば、読み出し、書き込みの最小の単位である。例えば、読み出し、書き込みの最小の単位は、ＮＡＮＤ型フラッシュメモリのページサイズである。以下において、カラーリングテーブル３２によりカラーリング情報が対応付けられるデータのデータサイズはページサイズであるとして説明するが、これに限定されるものではない。
【０２１７】
カラーリングテーブル３２は、データ毎にカラーリング情報を対応付け、エントリ単位でカラーリング情報を格納する。カラーリングテーブル３２の各エントリには、インデックスが付されている。インデックスとは、論理アドレスを基に生成される値である。上記の読み出し管理部２７、書き込み管理部２８、カラーリング情報管理部２９、再配置部３１などは、データを指定する論理アドレスが与えられると、論理アドレスに対応するインデックスにより管理されているエントリを参照し、データのカラーリング情報を取得する。
【０２１８】
カラーリング情報は、各データの配置領域を決定する基準として用いられる情報であり、静的カラー情報と、動的カラー情報とを含む。静的カラー情報は、カラーリング情報が付与される当該データの特性に基づいて生成される情報であり、当該データの記憶装置２８上の配置（書き込み）領域を決定するヒントとなる情報である。動的カラー情報は、データの読み出しと書き込みの回数と頻度の少なくとも一方を含む情報である。
【０２１９】
静的カラー情報は、当該データの重要度、静的書き込み頻度を示す値SW_color、静的読み出し頻度を示すSR_color、データ寿命SL_color、データの生成された時刻ST_colorを含む。
【０２２０】
重要度とは、データの種類等に基づいて、当該データの重要性を推測して設定される値である。重要度は、例えば、ファイルシステムに保持されるファイルの特性、またはプログラムに一次的に使用される領域（例えばスタック領域、ヒープ領域など）の特性により推測される。
【０２２１】
静的書き込み頻度SW_colorとは、データの種類等に基づいて、当該データが書き込まれる頻度を推測して設定される値である。静的読み出し頻度SR_colorとは、データの種類等に基づいて、当該データが読み出される頻度を推測して設定される値である。例えば、静的書き込み頻度SW_colorは、書き込み頻度が高いと推測されるデータほど、高い値が設定される。例えば、静的読み出し頻度SR_colorは、読み出し頻度が高いと推測されるデータほど、高い値が設定される。
【０２２２】
データ寿命SL_colorとは、データの種類等に基づいて、当該データが消去されずにデータとして使用される期間（データの寿命）を推測して設定される値である。
【０２２３】
静的カラー情報は、データを生成するプログラム（プロセス）により、静的に、予め決められた値である。また、ＯＳ９が、データのファイル拡張子またはファイルヘッダ等に基づいて、静的カラー情報を予測してもよい。
【０２２４】
動的カラー情報は、データの書き込み回数DWC_color、データの読み出し回数DRC_colorを含む。ここで、データの書き込み回数DWC_colorとは、当該データが記憶装置５に書き込まれた回数である。データの読み出し回数DRC_colorとは、当該データが記憶装置２８から読み出された回数である。動的カラー情報管理部４０は、データの書き込み回数DWC_colorにより、データ毎に、当該データが記憶装置２８に書き込まれた回数を管理する。動的カラー情報管理部４０は、データ読み出し回数DRC_colorにより、データ毎に、当該データが記憶装置２８から読み出された回数を管理する。前述のように、記憶装置２８は、メインメモリとして用いられる。このため、プロセッサＰ１〜Ｐ４で処理されるデータは、記憶装置２８に書き込まれ、記憶装置２８から読み出される。動的カラー情報管理部４０は、データが書き込まれる度に、当該データの書き込み回数DWC_colorをインクリメントする。また、動的カラー情報管理部４０は、データが読み出される度に、当該データの読み出し回数DRC_colorをインクリメントする。
【０２２５】
アクセス頻度算出部３９は、データの書き込み回数DWC_colorから、動的書き込み頻度DW_colorを算出する。アクセス頻度算出部３９は、データの読み出し回数DRC_colorから、動的読み出し頻度DR_colorを算出する。
【０２２６】
動的書き込み頻度DW_colorとは、当該データが記憶装置２８に書き込まれた頻度を示す値である。動的読み出し頻度DR_colorとは、当該データが記憶装置２８から読み出された頻度を示す値である。
【０２２７】
ここで、動的カラー情報と静的カラー情報に基づいて動的書き込み頻度DW_colorと動的読み出し頻度DR_colorを算出する方法について説明する。
【０２２８】
新たなデータがデータ生成時刻において生成されると、新たに生成されたデータに対してカラーリング情報（データ生成時刻を含む）が生成され、カラーリングテーブル３２の新たなエントリに登録された上で、データは記憶装置２８に書き込まれる。データ生成時刻以降、このデータに対するアクセス（読み出し、書き込み）が発生することにより、時間の経過とともに、アクセス回数（書き込み回数DWC_color、読み出し回数DRC_color）が増加する。このアクセス回数の増加は、動的カラー情報管理部４０によって行われる。メモリ管理装置３によって実現されるアクセス頻度算出部３９は、アクセス回数から動的書き込み頻度DW_color、動的読み出し頻度DR_colorを算出する。
【０２２９】
現在時刻における、当該データの書き込み回数DWC_color、データの読み出し回数DRC_colorは、カラーリングテーブル３２を参照することにより求めることができる。例えば、現在時刻における当該動的書き込み頻度DW_colorは、データ生成時刻ST_colorから現在時刻までの書き込み回数DWC_colorの時間平均により求める。また、例えば、現在時刻における当該動的読み出し頻度DR_colorは、データ生成時刻ST_colorから現在時刻までの読み出し回数DRC_colorの時間平均により求める。これにより、動的カラー情報（書き込み回数DWC_color、読み出し回数DRC_color）から、当該データの動的書き込み頻度DW_colorと、動的読み出し頻度DR_colorとが算出される。
【０２３０】
書き込み管理部３５は、メモリ使用情報２９、メモリ固有情報３０、カラーリングテーブル３２に基づいて、記憶装置２８に対して書き込み対象データを書き込むメモリ領域を決定し、この決定されたメモリ領域に書き込み対象データを書き込む。
【０２３１】
例えば、書き込み管理部３５は、記憶装置２８の各メモリ領域に対して、消耗度（＝書き込み回数／書き込み可能上限回数）を算出し、消耗度の高いメモリ領域に動的書き込み頻度の低いデータを書き込む。
【０２３２】
例えば、書き込み管理部３５は、消耗度の低いメモリ領域に動的書き込み頻度の高いデータを書き込む。
【０２３３】
例えば、書き込み管理部３５は、動的読み出し頻度または動的書き込み頻度が「高」のデータを揮発性半導体メモリ５のメモリ領域に書き込み、動的読み出し頻度または動的書き込み頻度が「中」のデータをＳＬＣのＮＡＮＤ型フラッシュメモリのメモリ領域に書き込み、動的読み出し頻度または動的書き込み頻度が「低」のデータをＭＬＣのＮＡＮＤ型フラッシュメモリのメモリ領域に書き込む。
【０２３４】
上記の処理により書き込み対象のメモリ領域が決定された場合、書き込み管理部３５は、書き込み先の物理アドレスを決定する。この場合、書き込み管理部３５は、カラーリングテーブル３２を参照し、書き込み先の物理アドレスを適切に選択することでウェアレベリングの発生を抑え、不要な消去処理を低減する。
【０２３５】
ここでウェアレベリングとは、例えば、消去回数が最大のブロックと、消去回数が最小のブロックとの消去回数の差が、所定の閾値以内に収まるように、ブロック間でデータの入れ替え（交換）を行うことを意味する。例えば、ＮＡＮＤ型フラッシュメモリは消去処理なしでのデータ上書きができないため、データ移動先は未使用のブロックである必要があり、元々データを記憶していたブロックの消去処理が発生することになる。
【０２３６】
なお、本実施の形態においては、算出された各メモリの消耗度に応じて、ＳＬＣのメモリ領域をＭＬＣのメモリ領域に切り替えてもよく、ＭＬＣのメモリ領域をＳＬＣのメモリ領域に切り替えてもよい。
【０２３７】
以上に説明した本実施形態では、メモリ管理装置３によって、記憶装置２８に対する書き込み、読み出し、消去の処理が制御される。
【０２３８】
なお、記憶装置２８に対する書き込み、読み出し、消去の処理の一部をソフトウェアで実行させると、自由度の高い、高度なウェアレベリングを実行させることができ、記憶装置２８の一部のメモリ領域だけが劣化することを防止することができ、記憶装置２８の長寿命化を実現させることができる。
【０２３９】
本実施形態では、ＯＳ９から、メモリ管理装置３に、カラーリング情報が送信され、このカラーリング情報に基づいて効率的かつ高度なウェアレベリングが実施される。
【０２４０】
なお、本実施の形態において、ソフトウェア８は、ＯＳ９の一部であるとしてもよい。
【０２４１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２４２】
１６…情報処理装置、Ｐ１〜Ｐ４…プロセッサ、Ｌ１−１〜Ｌ１−４…１次キャッシュメモリ、Ｌ２…２次キャッシュメモリ、２…バス、３…メモリ管理装置、４１〜４４…ＭＭＵ、５…揮発性半導体メモリ、６１〜６ｎ…不揮発性半導体メモリ、７…処理部、８，１０…ソフトウェア、９…ＯＳ、９１…不一致判断部、９２…設定部、９３…判断部、９４…書き戻し部、１１…データ管理テーブル、１２…ダーティ状態判断カウントテーブル、１３，１４…コントローラ、１５…書き込みカウントテーブル、１７…プロファイル部、１８…イネーブルレジスタ、１９…ティックジェネレータ、２０…マスタカウンタ、２１…プロファイルテーブル、２２…記憶部、２３…プロファイル制御部、２４…キャッシュ制御部、２５…キャッシュミス検出部、２６…データ配置領域決定部、２７…書き戻し処理部、２８…記憶装置、２９…メモリ使用情報、３０…メモリ固有情報、３１…アドレス変換情報、３２…カラーリングテーブル、３３…アドレス管理部、３４…読み出し管理部、３５…書き込み管理部、３６…カラーリング情報管理部、３７…メモリ使用情報管理部、３８…再配置部、３９…アクセス頻度算出部、４０…動的カラー情報管理部、５０…ＤＭＡＣ。
【図１】
2012033047.tif 000003
【図２】
2012033047.tif 000004
【図３】
2012033047.tif 000005
【図４】
2012033047.tif 000006
【図５】
2012033047.tif 000007
【図６】
2012033047.tif 000008
【図７】
2012033047.tif 000009
【図８】
2012033047.tif 000010
【図９】
2012033047.tif 000011
【図１０】
2012033047.tif 000012
【図１１】
2012033047.tif 000013
【図１２】
2012033047.tif 000014
【図１３】
2012033047.tif 000015
【図１４】
2012033047.tif 000016
【図１５】
2012033047.tif 000017
【図１６】
2012033047.tif 000018
【図１７】
2012033047.tif 000019
【図１８】
2012033047.tif 000020
【図１９】
2012033047.tif 000021