(57)【要約】【課題】書き換え回数又は読み出し回数に制限のある不揮発性メモリを効果的に利用可能とする。【解決手段】本発明の一例のメモリ管理装置１を含む情報処理装置は、第１のメモリ８と、不揮発性の第２のメモリ９とを含む混成メモリ２に対する書き込み位置を指定する書き込み先論理アドレスと、書き込み対象データとを、プロセッサ６ｂから受け付ける受付手段１８と、第２のメモリ９へのアクセス回数が第１のメモリ８へのアクセス回数より少なくなるように、書き込み先論理アドレスに対応する書き込み先物理アドレスを決定するアドレス決定手段１９と、書き込み先論理アドレスと書き込み先物理アドレスとを関連付けたアドレス変換データ１３を、記憶手段１７に記憶するアドレス管理手段２０と、混成メモリ２における書き込み先物理アドレスの示す位置に、書き込み対象データを書き込む書き込み手段２１とを具備する。【選択図】      図２
2011022933.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリと、不揮発性の第２のメモリとを含む混成メモリに対する書き込み位置を指定する書き込み先論理アドレスと、書き込み対象データとを、プロセッサから受け付ける受付手段と、
前記第２のメモリへのアクセス回数が前記第１のメモリへのアクセス回数より少なくなるように、前記書き込み先論理アドレスに対応する書き込み先物理アドレスを決定するアドレス決定手段と、
前記書き込み先論理アドレスと前記書き込み先物理アドレスとを関連付けたアドレス変換データを、記憶手段に記憶するアドレス管理手段と、
前記混成メモリにおける前記書き込み先物理アドレスの示す位置に、前記書き込み対象データを書き込む書き込み手段と
を具備するメモリ管理装置を含む情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、
前記アドレス決定手段は、前記書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一つに基づいて、前記混成メモリにおける前記書き込み対象データの書き込み先物理アドレスを決定し、
前記書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一つは、前記書き込み対象データの種類、ユーザによって設定されたデータ、前記書き込み対象データのアクセス頻度情報に基づいて決定される
ことを特徴とする情報処理装置。
【請求項３】
請求項１又は請求項２記載の情報処理装置において、
前記アドレス決定手段は、前記書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一方に基づいて、前記書き込み対象データがアクセス頻度の高いグループに属するか低いグループに属するか判断し、前記書き込み対象データがアクセス頻度の高いグループに属すると判断された場合に、前記第１のメモリにおける未使用の物理アドレスを前記書き込み先物理アドレスとして決定し、前記書き込み対象データがアクセス頻度の低いグループに属する場合に、前記第２のメモリにおける未使用の物理アドレスを前記書き込み先物理アドレスとして決定する
ことを特徴とする情報処理装置。
【請求項４】
請求項２又は請求項３記載の情報処理装置において、
前記重要度は、前記書き込み対象データのデータ種別と、データの特徴と重要度とを関連付けたユーザ設定データと、前記書き込み対象データの最後のアクセスから現在までの未使用時間とのうちの少なくとも一つに基づいて求められる
ことを特徴とする情報処理装置。
【請求項５】
請求項２乃至請求項４のいずれか１項に記載の情報処理装置において、
前記アクセス頻度は、前記書き込み対象データのデータ種別によって決定されるアクセス頻度の推測値と、前記書き込み対象データのアクセス頻度の観測値とのうちの少なくとも一つに基づいて求められることを特徴とする情報処理装置。
【請求項６】
請求項１乃至請求項５のいずれか１項に記載の情報処理装置において、
前記記憶手段は、書き込み対象データ固有のアクセス頻度情報を含むデータ固有情報を記憶し、
前記アドレス決定手段は、前記データ固有情報に基づいて、前記第１のメモリのアクセス頻度が前記第２のメモリのアクセス頻度よりも多くなり、かつ、前記第１のメモリ内及び前記第２のメモリ内ではアクセス頻度が均等化するように、前記混成メモリにおける前記書き込み対象データの書き込み先物理アドレスを決定する
ことを特徴とする情報処理装置。
【請求項７】
請求項１乃至請求項６のいずれか１項に記載の情報処理装置において、
前記記憶手段は、前記混成メモリの各領域に対するアクセス発生回数を含むメモリ使用情報を記憶し、
前記アドレス決定手段は、前記メモリ使用情報に基づいて、前記第１のメモリのアクセス頻度が前記第２のメモリのアクセス頻度よりも多くなり、かつ、前記第１のメモリ内及び前記第２のメモリ内ではアクセス頻度が均等化するように、前記混成メモリにおける前記書き込み対象データの書き込み先物理アドレスを決定する
ことを特徴とする情報処理装置。
【請求項８】
請求項１乃至請求項７のいずれか１項に記載の情報処理装置において、
前記記憶手段は、前記混成メモリのページサイズ及びブロックサイズと、前記混成メモリにおける領域ごとのアクセス可能回数とを含むメモリ固有情報、を記憶し、
前記アドレス決定手段は、前記メモリ固有情報に基づいて、前記第１のメモリのアクセス頻度が前記第２のメモリのアクセス頻度よりも多くなり、かつ、前記第１のメモリ内及び前記第２のメモリ内ではアクセス頻度が均等化するように、前記混成メモリにおける前記書き込み対象データの書き込み先物理アドレスを決定する
ことを特徴とする情報処理装置。
【請求項９】
請求項１乃至請求項８のいずれか１項に記載の情報処理装置において、
前記アドレス決定手段は、前記第１のメモリの使用率情報と前記第２のメモリの使用率情報に応じて、前記書き込み対象データを前記第１のメモリに記憶するか、前記第２のメモリに記憶するか判断に用いるしきい値を変更する
ことを特徴とする情報処理装置。
【請求項１０】
請求項１乃至請求項９記載のいずれか１項に記載の情報処理装置において、
前記書き込み対象データは、データ本体と前記データ本体についてのアクセス頻度情報とを具備し、
前記アドレス決定手段は、前記書き込み対象データに含まれている前記アクセス頻度情報に基づいて、前記書き込み先物理アドレスを決定する
ことを特徴とする情報処理装置。
【請求項１１】
請求項１乃至請求項１０のいずれか１項に記載の情報処理装置において、
前記書き込み対象データの前記アクセス頻度情報は、オペレーティングシステムによって管理される又はユーザによって設定されうる
ことを特徴とする情報処理装置。
【請求項１２】
請求項１乃至請求項１１のいずれか１項に記載の情報処理装置において、
前記第１のメモリは、揮発性半導体メモリであり、前記第２のメモリは、１つのメモリセルにＭ（１以上の整数）ビット記憶可能な第１の不揮発性半導体メモリブロックと、１つのメモリセルにＭ＋１ビット以上記憶可能な第２の不揮発性半導体メモリブロックとを具備し、前記アドレス決定手段は、前記書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一方に基づいて、前記書き込み対象データがアクセス頻度の高グループ、中グループ、低グループのいずれに属するか判断し、前記書き込み対象データが高グループに属すると判断された場合に、前記揮発性半導体メモリにおける未使用の物理アドレスを前記書き込み先物理アドレスとして決定し、前記書き込み対象データが中グループに属する場合に、前記第１の不揮発性半導体メモリブロックにおける未使用の物理アドレスを前記書き込み先物理アドレスとして決定し、前記書き込み対象データが低グループに属する場合に、前記第２の不揮発性半導体メモリブロックにおける未使用の物理アドレスを前記書き込み先物理アドレスとして決定する
ことを特徴とする情報処理装置。
【請求項１３】
請求項１乃至請求項１２のいずれか１項に記載の情報処理装置において、
前記書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一方についての前回の書き込み時からの動的変化に応じて、前記第１のメモリと前記第２のメモリとのうちの一方のメモリに記憶された前記書き込み対象データを、前記第１のメモリと前記第２のメモリとのうちの他方のメモリに再配置するための再配置後の書き込み先物理アドレスを決定し、前記書き込み対象データを前記他方のメモリに再配置する再配置手段をさらに具備し、
前記アドレス管理手段は、前記記憶手段に記憶されているアドレス変換データを、前記再配置後の書き込み先物理アドレスによって更新する
ことを特徴とする情報処理装置。
【請求項１４】
請求項１２記載の情報処理装置において、
前記書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一方についての前回の書き込み時からの動的変化に応じて、前記第１の不揮発性メモリブロックと前記第２の不揮発性メモリブロックとのうちの一方のメモリブロックに記憶された前記書き込み対象データを、前記第１の不揮発性メモリブロックと前記第２の不揮発性メモリブロックとのうちの他方のメモリに再配置するための再配置後の書き込み先物理アドレスを決定し、前記書き込み対象データを前記他方のメモリに再配置する再配置手段をさらに具備し、
前記アドレス管理手段は、前記記憶手段に記憶されているアドレス変換データを、前記再配置後の書き込み先物理アドレスによって更新する
ことを特徴とする情報処理装置。
【請求項１５】
請求項１乃至請求項１４のいずれか１項に記載の情報処理装置において、
前記受付手段は、前記プロセッサから、読み出し先論理アドレスを取得し、
前記記憶手段に記憶されているアドレス変換データに基づいて、前記読み出し先論理アドレスを、前記混成メモリの読み出し先物理アドレスに変換するアドレス変換手段と、
前記混成メモリから、前記読み出し物理アドレスに対応する読み出し対象データを読み出す読み出し手段と、
前記読み出し対象データを、前記プロセッサに転送する転送手段と
をさらに具備する情報処理装置。
【請求項１６】
請求項１５記載の情報処理装置において、
前記転送手段は、前記混成メモリから読み出したデータを作業記憶手段に記憶し、前記作業記憶手段に記憶されたデータのうち、前記読み出し先物理アドレスに対応する部分の読み出し対象データを、前記プロセッサに送る
ことを特徴とする情報処理装置。
【請求項１７】
請求項１５記載の情報処理装置において、
前記混成メモリに対する書き込み単位及び読み出し単位は、ページサイズ、ページサイズの倍数、ブロックサイズ、又は、ブロックサイズの倍数である
ことを特徴とする情報処理装置。
【請求項１８】
請求項１記載の情報処理装置において、
前記第１のメモリは、揮発性メモリ、もしくは不揮発性メモリであることを特徴とする情報処理装置。
【請求項１９】
第１のメモリと、不揮発性の第２のメモリとを含む混成メモリに対する書き込み位置を指定する書き込み先論理アドレスと、書き込み対象データとを、プロセッサから受け付け、
前記第２のメモリへのアクセス回数が前記第１のメモリへのアクセス回数より少なくなるように、前記書き込み先論理アドレスに対応する書き込み先物理アドレスを決定し、
前記書き込み先論理アドレスと前記書き込み先物理アドレスとを関連付けたアドレス変換データを、記憶手段に記憶し、
前記混成メモリにおける前記書き込み先物理アドレスの示す位置に、前記書き込み対象データを書き込む
ことを特徴とするメモリ管理方法。
【請求項２０】
前記第１のメモリは、揮発性メモリ、もしくは不揮発性メモリであることを特徴とする請求項１９記載のメモリ管理方法。
【請求項２１】
請求項１９記載のメモリ管理方法において、
データを書き込んだ後に、さらに前記書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一方についての前回の書き込み時からの動的変化に応じて、前記第１のメモリと前記第２のメモリとのうちの一方のメモリに記憶された前記書き込みデータを、前記第１のメモリと前記第２のメモリとのうちの他方のメモリに再配置するための再配置後の書き込み先物理アドレスを決定し、前記書き込み対象データを前記他方のメモリに再配置し、
前記記憶手段に記憶されているアドレス変換データを、前記再配置後の書き込み先物理アドレスによって更新する
ことを特徴とするメモリ管理方法。
【請求項２２】
請求項１９記載のメモリ管理方法において、
前記プロセッサから、読み出し先論理アドレスを取得し、
前記記憶手段に記憶されているアドレス変換データに基づいて、前記読み出し先論理アドレスを、前記混成メモリの読み出し先物理アドレスに変換し、
前記混成メモリから、前記読み出し物理アドレスに対応する読み出し対象データを読み出し、
前記読み出し対象データを、前記プロセッサに転送する
ことを特徴とするメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き込み又は読み出しを管理するメモリ管理装置を含む情報処理装置及びメモリ管理方法に関する。
【背景技術】
【０００２】
従来のＭＰＵ（Micro Processing Unit）は、ＤＲＡＭ（Dynamic Random Access Memory）をメインメモリ（主記憶装置）として用いる。また、従来のＭＰＵは、例えば、フラッシュメモリを２次記憶装置として用いる。従来のＭＰＵとフラッシュメモリとは、Ｉ／Ｏインタフェースを介して接続される。フラッシュメモリは、ＭＰＵによってファイルメモリとして扱われる。
【０００３】
ＭＰＵが２次記憶装置のファイルをアクセスする場合には、従来のオペレーティングシステム（ＯＳ）は多くの処理を実行する必要がある。メインメモリの記憶容量の小さい情報処理装置（コンピュータシステム）においては、ＨＤＤ（ハードディスク）又はＳＳＤ（Solid State Drive）などの２次記憶装置がＭＰＵによってアクセスされる回数が多くなり、プログラムの処理数が増え、処理時間が大きくなる場合がある。
【０００４】
このような問題を解決するために、例えばモバイル機器において、ＮＡＮＤ型フラッシュメモリと同じ容量のＤＲＡＭを用意して、起動時にＮＡＮＤ型フラッシュメモリの全データをＤＲＡＭに転送する方式が用いられている。
【０００５】
しかしながら、この方式は安価なＮＡＮＤ型フラッシュメモリと同じ容量分の高価なＤＲＡＭを実装する必要があり、例えばモバイル機器などのような小容量のメモリを持つ機器に対しては適用しやすいが、他の記憶容量の大きい装置に対しては適用困難である。
【０００６】
特許文献１（特開２００８−２４２９４４号公報）には、統合メモリ管理装置が提案されている。この統合メモリ管理装置では、ＭＰＵに対するメインメモリとしてＮＡＮＤ型フラッシュメモリが用いられている。さらに、特許文献１では、ＭＰＵの１次キャッシュメモリと、２次キャッシュメモリと、メインメモリであるＮＡＮＤ型フラッシュメモリとが同一のメモリ階層で扱われる。統合メモリ管理装置のキャッシュコントローラは、１次キャッシュメモリ及び２次キャッシュメモリに対するメモリ管理に加えて、メインメモリに対するメモリ管理を実行する。
【０００７】
特許文献２（特開平７−１４６８２０）には、情報処理装置の主記憶装置としてフラッシュメモリを採用する技術が開示されている。特許文献２において、システムのメモリバスには、揮発性メモリであるキャッシュメモリを介して、フラッシュメモリが接続される。キャッシュメモリには、このキャッシュメモリに格納されているデータのアドレス又はアクセス履歴などの情報を記録するアドレスアレイが設けられる。コントローラは、アクセス先のアドレスを参照し、キャッシュメモリ又はフラッシュメモリのデータをメモリバスに供給し、あるいは、メモリバスのデータを格納する。
【０００８】
特許文献３（特開２００１−２６６５８０号公報）においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。
【０００９】
この特許文献３の半導体メモリ装置は、ランダムアクセスメモリチップと、前記ランダムアクセスメモリチップを備えたパッケージを含む。前記パッケージは、前記ランダムアクセスメモリチップを外部装置に電気的に連結する複数のピンを有する。複数のピンは、前記ランダムアクセスメモリと、電気的に消去及びプログラム可能な不揮発性半導体メモリとに、共通にメモリ機能を提供する。前記複数のピンの各々は、不揮発性半導体メモリの対応するピンの位置に配列されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００８−２４２９４４号公報
【特許文献２】特開平７−１４６８２０号公報
【特許文献３】特開２００１−２６６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、書き換え回数又は読み出し回数に制限のある不揮発性メモリを効果的に利用可能とするためのメモリ管理装置を含む情報処理装置、及びメモリ管理方法を提供することを目的としている。
【課題を解決するための手段】
【００１２】
本発明の第１の態様によるメモリ管理装置を含む情報処理装置は、第１のメモリと、不揮発性の第２のメモリとを含む混成メモリに対する書き込み位置を指定する書き込み先論理アドレスと、書き込み対象データとを、プロセッサから受け付ける受付手段と、前記第２のメモリへのアクセス回数が前記第１のメモリへのアクセス回数より少なくなるように、前記書き込み先論理アドレスに対応する書き込み先物理アドレスを決定するアドレス決定手段と、前記書き込み先論理アドレスと前記書き込み先物理アドレスとを関連付けたアドレス変換データを、記憶手段に記憶するアドレス管理手段と、前記混成メモリにおける前記書き込み先物理アドレスの示す位置に、前記書き込み対象データを書き込む書き込み手段とを具備する。
【００１３】
本発明の第２の態様によるメモリ管理方法は、第１のメモリと、不揮発性の第２のメモリとを含む混成メモリに対する書き込み位置を指定する書き込み先論理アドレスと、書き込み対象データとを、プロセッサから受け付け、前記第２のメモリへのアクセス回数が前記第１のメモリへのアクセス回数より少なくなるように、前記書き込み先論理アドレスに対応する書き込み先物理アドレスを決定し、前記書き込み先論理アドレスと前記書き込み先物理アドレスとを関連付けたアドレス変換データを、記憶手段に記憶し、前記混成メモリにおける前記書き込み先物理アドレスの示す位置に、前記書き込み対象データを書き込む。
【発明の効果】
【００１４】
本発明によれば、書き換え回数又は読み出し回数に制限のある不揮発性メモリを効果的に利用することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施の形態に係るメモリ管理装置の構成の一例を示すブロック図。
【図２】第１の実施の形態に係るメモリ管理装置の処理部の構成の一例を示すブロック図。
【図３】第１の実施の形態に係るメモリ管理装置によって実現される物理アドレス空間の一例を示すブロック図。
【図４】第１の実施の形態に係るオペレーティングシステムの動作の一例を示すブロック図。
【図５】プロセスがファイルを混成メインメモリにマップするための領域についての動的重要度の算出例を示す図。
【図６】第１の実施の形態に係るメモリの使用率としきい値との関係の一例を示す図。
【図７】第１の実施の形態に係るメモリ管理装置による混成メインメモリへのデータ書き込み動作の一例を示すフローチャート。
【図８】第１の実施の形態に係る書き込み対象データ及び読み出し対象データのデータ構造の一例を示す図。
【図９】第１の実施の形態に係るカラーリングテーブルの一例を示す図。
【図１０】第１の実施の形態に係る混成メインメモリ２のアドレスマップの一例を示す図。
【図１１】本発明の第２の実施の形態に係る混成メインメモリのメモリマップの一例を示す図
【図１２】第２の実施の形態に係るカラーリングテーブルの一例を示す図。
【図１３】カラーリングテーブルの生成処理の一例を示すフローチャート。
【図１４】オペレーティングシステムによるカラーリングテーブルのエントリの生成処理の一例を示すフローチャート。
【図１５】各種のデータに対するSW_Color、SR_Color、データ寿命の割り当ての設定の第１の例を示す図。
【図１６】各種のデータに対するSW_Color、SR_Color、データ寿命の割り当ての設定の第２の例を示す図。
【図１７】カラーリングテーブルのエントリのアライメントの第１の例を示す図。
【図１８】カラーリングテーブルのエントリのアライメントの第２の例を示す図。
【図１９】カラーリングテーブルにおける書き込み頻度及び読み出し頻度の算出の方法の一例を示す図。
【図２０】第２の実施の形態に係るメモリ管理装置１による読み出し方式の決定動作の一例を示すフローチャート。
【図２１】第２の実施の形態に係るメモリ管理装置のデータ読み出しの処理の一例を示すフローチャート。
【図２２】第２の実施の形態に係るメモリ管理装置のデータ書き込みの処理の一例を示すフローチャート。
【図２３】第２の実施の形態に係るメモリ管理装置による書き込み先領域の決定動作の一例を示すフローチャート。
【図２４】不揮発性半導体メモリの任意のブロックにおける消去回数の推移の一例を示すグラフ。
【図２５】ウェアレベリングにおいて消去回数の差に対するしきい値を小さく設定した場合の変化の一例を示すグラフ。
【図２６】カラーリングテーブルの情報から基準となる消去回数を決定する決定表の一例を示す図。
【図２７】消去可能回数に応じたブロックのグループ分けの一例を示すグラフ。
【図２８】消去可能回数に応じたブロックのグループ分けの判断基準を表す図。
【図２９】カラーリングテーブルの情報に基づいてウェアレベリングにおけるブロックの属するグループの探索の一例を示す図。
【図３０】キャッシュメモリをさらに備えた第２の実施の形態に係るメモリ管理装置の一例を示すブロック図。
【図３１】本発明の第３の実施の形態に係るメモリ管理装置の一例を示すブロック図。
【図３２】第３の実施の形態に係るメモリ管理装置のメモリ階層の第１例を示す図。
【図３３】第３の実施の形態に係るメモリ管理装置を備えたＭＰＵが、ＮＡＮＤ型フラッシュメインメモリのデータ、書き換え回数データの一部、アドレス変換テーブルの一部を記憶する場合の動作の一例を示すフローチャート。
【図３４】第３の実施の形態に係るメモリ管理装置を備えたＭＰＵにおいて、１次キャッシュメモリ又はＮＡＮＤ型フラッシュメインメモリからデータを読み出す場合の動作の一例を示すフローチャート。
【図３５】第３の実施の形態に係るメモリ管理装置を備えたＭＰＵから、１次キャッシュメモリのキャッシュラインへの上書きが発生し、さらに１次キャッシュメモリのデータをＮＡＮＤ型フラッシュメインメモリに記憶する場合の動作の一例を示すフローチャート。
【図３６】本発明の第４の実施の形態に係るメモリ管理装置の一例を示すブロック図。
【図３７】第４の実施の形態に係るメモリ管理装置のメモリ階層の一例を示す図。
【図３８】本発明の第５の実施の形態に係るメモリ管理装置の第１例を示すブロック図。
【図３９】第５の実施の形態に係るメモリ管理装置の第２例を示すブロック図。
【図４０】本発明の第６の実施の形態に係るメモリ管理装置の適用例を示すブロック図。
【図４１】本発明の第７の実施の形態に係る記憶装置の一例を示すブロック図。
【図４２】第７の実施の形態に係るシステム論理アドレスの一例を示す図。
【図４３】本発明の第８の実施の形態に係る記憶装置の一例を示すブロック図。
【図４４】第８の実施の形態に係るシステム論理アドレスの一例を示す図。
【図４５】本発明の第９の実施の形態に係るメモリ管理装置の一例を示すブロック図。
【図４６】本発明の第１０の実施の形態に係るメモリ管理装置の構成の一例を示すブロック図。
【図４７】第１０の実施の形態に係るメモリ管理装置のマイクロプロセッサの機能の一例を示すブロック図。
【図４８】第１０の実施の形態に係るメモリ管理装置の転送アルゴリズムの第１の動作の例を示すブロック図。
【図４９】第１０の実施の形態に係るメモリ管理装置の転送アルゴリズムの第２の動作の例を示すブロック図。
【図５０】第１０の実施の形態に係るメモリ管理装置の転送アルゴリズムの第３の動作の例を示すブロック図。
【図５１】ウェアレベリングの一例を示すブロック図。
【図５２】複数のＮＡＮＤ型フラッシュメインメモリを管理するメモリ管理装置の一例を示す斜視図。
【図５３】ＭＭＵを備えている既存のプロセッサに対して、第１０の実施の形態に係るメモリ管理装置を用いたマルチプロセッサシステムの一例を示すブロック図。
【図５４】従来のマルチプロセッサシステムの一例を示すブロック図。
【図５５】広いアドレス空間用のポインタを求める処理の一例を示すブロック図。
【図５６】複数のキャッシュメモリと複数のＮＡＮＤ型フラッシュメインメモリとで形成される仮想記憶空間の一例を示すブロック図。
【発明を実施するための形態】
【００１６】
以下の各図において、同一の構成要素については同一の符号を付して説明を省略する。
【００１７】
（第１の実施の形態）
本実施の形態においては、メインメモリとして複数の種類のメモリを含む混成メインメモリが用いられている場合に、この混成メインメモリに対するアクセスを管理する装置について説明する。本実施の形態において、混成メインメモリは、不揮発性の半導体メモリを含む。
【００１８】
図１は、本実施の形態に係るメモリ管理装置の構成の一例を示すブロック図である。
【００１９】
また、図２は、本実施の形態に係るメモリ管理装置の処理部の構成の一例を示すブロック図である。
【００２０】
メモリ管理装置１は、機種の異なる複数のメモリを組み合わせて形成された混成メインメモリ２に対するアクセスを管理する。ここで、アクセスとは、記憶装置に対する書き込みと読み出しとのうちの少なくとも一方を意味するとする。
【００２１】
メモリ管理装置１は、例えばＭＰＵなどのようなプロセッサを含む情報処理装置、又はプロセッサ及びメモリを含む情報処理装置に具備される。
【００２２】
本実施の形態においては、プロセッサ３ａ〜３ｃとメモリ管理装置１とが分離した構成の場合を例として説明するが、メモリ管理装置１はプロセッサ３ａ〜３ｃのうちの少なくとも一つに内蔵されるとしてもよい。
【００２３】
プロセッサ３ａ〜３ｃは、それぞれ１次キャッシュメモリ４ａ〜４ｃ、２次キャッシュメモリ５ａ〜５ｃを備えている。プロセッサ３ａ〜３ｃは、それぞれ仮想論理アドレスを含むプロセス６ａ〜６ｃを実行する。上記の図１では、３つのプロセッサ３ａ〜３ｃが図示されているが、プロセッサの数は１以上であればよい。
【００２４】
複数のプロセッサ３ａ〜３ｃは、バス７、メモリ管理装置１を経由して、混成メインメモリ２と接続されている。
【００２５】
以下においては、プロセッサ３ｂを用いて本実施の形態の説明を行うがプロセッサ３ａ，３ｃについても同様である。
【００２６】
本実施の形態において、プロセッサ３ｂは、論理アドレスを用いて、１次キャッシュメモリ４ｂ、２次キャッシュメモリ５ｂをアクセス可能である。
【００２７】
混成メインメモリは、第１のメモリ、第２のメモリ、第３のメモリを備えている。第１のメモリは、第２のメモリよりもアクセス可能回数が多い。第２のメモリは、第３のメモリよりもアクセス可能回数が多い。
【００２８】
本実施の形態では、第１のメモリは揮発性半導体メモリ８であるとする。揮発性半導体メモリ８としては、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、ＦＰＭ−ＤＲＡＭ、ＥＤＯ−ＤＲＡＭ、ＳＤＲＡＭなどのような一般的なコンピュータにおいてメインメモリとして利用されるメモリが用いられる。
【００２９】
第２のメモリは不揮発性半導体メモリ９であるとする。不揮発性半導体メモリ９としては、例えば、ＳＬＣ（Single Level Cell）タイプのＮＡＮＤ型フラッシュメモリが用いられる。ＳＬＣは、ＭＬＣと比較して、読み出し及び書き込みが高速であり、信頼性が高い。しかしながら、ＳＬＣは、ＭＬＣと比較して、素子の集積度が低く、大容量化には向いていない。
【００３０】
第３のメモリは不揮発性半導体メモリ１０であるとする。不揮発性半導体メモリ１０としては、例えば、ＭＬＣ（Multi Level Cell）タイプのＮＡＮＤ型フラッシュメモリが用いられる。ＭＬＣは、ＳＬＣと比較して、読み出し及び書き込みが低速であり、信頼性が低い。しかしながら、ＭＬＣは、ＳＬＣと比較して、素子の集積度が高く、大容量化に向いている。
【００３１】
なお、信頼性とは、記憶装置からデータを読み出す場合におけるデータの欠損の起こりにくさの程度を意味する。
【００３２】
ＳＬＣの耐久性は、ＭＬＣの耐久性よりも高い。ここで、耐久性が高いとは、アクセス可能回数が多く、耐久性が低いとは、アクセス可能回数が少ないことを意味する。
【００３３】
ＳＬＣは１つのメモリセルにＭ（１以上の整数）のビットの情報を記憶可能である。ＭＬＣは１つのメモリセルにＭ＋１ビット以上の情報を記憶可能である。
【００３４】
すなわち、本実施の形態に係る混成メインメモリ２は、第１に、揮発性メモリ８、第２に、不揮発性メモリ９、第３に不揮発性メモリ１０、の順で耐久性が高い。
【００３５】
ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリ９，１０は、揮発性半導体メモリ８と比較して、安価で大容量化が可能である。
【００３６】
なお、ＮＡＮＤ型フラッシュメモリに代えて、例えばＮＯＲ型フラッシュメモリなどのような他の種類のフラッシュメモリ、ＰＲＡＭ(Phase change memory)、ＲｅＲＡＭ(Resistive Random access memory)を用いることもできる。
【００３７】
メインメモリとして不揮発性半導体メモリ９，１０を利用する場合と、２次記憶装置として不揮発性半導体メモリ９，１０を利用する場合とを比較すると、メインメモリとして不揮発性半導体メモリ９，１０を使用した場合にはこの不揮発性半導体メモリ９，１０へのアクセス頻度が高くなる。本実施の形態においては、揮発性半導体メモリ８とＳＬＣの不揮発性半導体メモリ９とＭＬＣの不揮発性半導体メモリ１０とを混成してメインメモリとする混成メインメモリ２を備えた情報処理装置を実現している。混成メインメモリ２は、異機種混在型の主記憶装置であり、メモリ管理装置１によってデータの格納位置が管理される。
【００３８】
メモリ使用情報１１、メモリ固有情報１２、アドレス変換情報１３、カラーリングテーブル１４は、不揮発性半導体メモリ９と不揮発性半導体メモリ１０のうちのいずれかに記憶される。ここで、カラーリングテーブル１４は、各データに対するデータ固有情報を、エントリとして持つテーブルである。
【００３９】
なお、混成メインメモリ２は、異なる複数の種別のメモリを含み、複数のメモリのうちの少なくとも一つが不揮発性メモリであり、複数のメモリのうちの第１のメモリは、この複数のメモリのうちの第２のメモリよりも、耐久性が低ければよい。
【００４０】
メモリ管理装置１は、処理部１５、作業メモリ１６、情報記憶部１７を具備する。
【００４１】
処理部１５は、情報記憶部１７に記憶されている情報に基づいて、作業メモリ１６を使用しつつ各種処理を実行する。
【００４２】
作業メモリ１６は、例えばバッファとして利用され、各種のデータ変換などの作業領域として使用される。
【００４３】
処理部１５は、受付部１８、アドレス決定部１９、アドレス管理部２０、書き込み部２１、再配置部２２、アドレス変換部２３、読み出し部２４、転送部２５を具備する。処理部１５の機能は、例えばオペレーティングシステム２７などのようなプログラムを処理部１５が実行することで実現されるとしてもよい。
【００４４】
本実施の形態において、オペレーティングシステム２７は、混成メインメモリ２に対する書き込み及び読み出しを管理するメモリ管理装置１を制御する。
【００４５】
メモリ管理装置１は、メモリ管理装置１の動作開始時に、不揮発性メモリ９又は不揮発性メモリ１０に記憶されているメモリ使用情報１１、メモリ固有情報１２、アドレス変換情報１３、カラーリングテーブル１４を読み出し、メモリ使用情報１１、メモリ固有情報１２、アドレス変換情報１３、カラーリングテーブル１４を情報記憶部１７に記憶する。不揮発性メモリ９，１０に記憶されているメモリ使用情報１１、メモリ固有情報１２、アドレス変換情報１３、カラーリングテーブル１４を起動時に情報記憶部１７に記憶する処理は、例えば、メモリ管理装置１の処理部１５、受付部１８によって実行される。
【００４６】
メモリ使用情報１１は、混成メインメモリ２の各領域についてのアクセス発生回数（読み出し回数及び書き込み回数）、混成メインメモリ２に含まれる各種メモリの使用率情報（空きスペースの割合）など、混成メインメモリ２の各領域の使用状態を表す。
【００４７】
メモリ固有情報１２は、混成メインメモリ２のページサイズ及びブロックサイズ、混成メインメモリ２における領域ごとのアクセス可能回数（書き込み可能回数及び読み出し可能回数）など、混成メインメモリ２の各領域の特徴を表す。
【００４８】
アドレス変換情報１３は、例えばテーブル形式で、論理アドレスと、この論理アドレスに対応する物理アドレスとを関係付けた情報である。
【００４９】
カラーリングテーブル１４は、上述したように、各データのデータ固有情報をエントリとして持つテーブルである。
【００５０】
データ固有情報は、対応付けられているデータについてのアクセス回数（書き込み回数及び読み出し回数）などのデータ固有の情報を含む。
【００５１】
情報記憶部１７は、上記のメモリ使用情報１１、メモリ固有情報１２、アドレス変換情報１４、カラーリングテーブル１４を記憶する装置である。情報記憶部１７としては、例えばレジスタが用いられる。なお、情報記憶部１７は、複数のレジスタに分割されてもよい。
【００５２】
以下に、処理部１５による書き込み動作について説明する。
【００５３】
受付部１８は、プロセッサ３ｂからの書き込み対象データを混成メインメモリ２に書き込む場合に、プロセッサ３ｂから書き込み先論理アドレスと書き込み対象データとを受け付ける。
【００５４】
そして、受付部１８は、書き込み先論理アドレスと書き込み対象データを作業メモリ１６に記憶する。
【００５５】
アドレス決定部１９は、書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一つに基づいて、揮発性半導体メモリ８へのアクセス回数が不揮発性半導体メモリ９へのアクセス回数よりも多くなり、かつ、不揮発性半導体メモリ９へのアクセス回数が不揮発性半導体メモリ１０へのアクセス回数よりも多くなるように、前記書き込み先論理アドレスに対応する書き込み先物理アドレスを決定する。
【００５６】
ここで、アドレス決定部１９は、各メモリ８，９，１０内では、アクセス頻度が均等化されるように、作業メモリ１６に記憶された書き込み先論理アドレスに対応する書き込み先物理アドレスを決定する。
【００５７】
そして、アドレス決定部１９は、書き込み先物理アドレスを作業メモリ１６に記憶する。
【００５８】
より具体的に説明すると、アドレス決定部１９は、メモリ使用情報１１、メモリ固有情報１２、データ固有情報に基づいて、書き込み対象データがアクセス頻度の高グループ、中グループ、低グループのいずれに属するか判断する。
【００５９】
アドレス決定部１９は、書き込み対象データが高グループに属すると判断された場合に、揮発性半導体メモリ８における未使用の物理アドレスを書き込み先物理アドレスとして決定する。
【００６０】
アドレス決定部１９は、書き込み対象データが中グループに属する場合に、不揮発性半導体メモリ９における未使用の物理アドレスを書き込み先物理アドレスとして決定する。
【００６１】
アドレス決定部１９は、書き込み対象データが低グループに属する場合に、不揮発性半導体メモリ１０における未使用の物理アドレスを書き込み先物理アドレスとして決定する。
【００６２】
書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一つは、書き込み対象データの種類、ユーザによって設定されたデータ、書き込み対象データの最後のアクセスから現在までの未使用時間、書き込み対象データのデータ種別によって決定されるアクセス頻度の推測値と書き込み対象データのアクセス頻度の観測値とのうちの少なくとも一つを含むアクセス頻度情報（読み書き頻度情報）に基づいて求められる。
【００６３】
さらに、本実施の形態において、アドレス決定部１９は、揮発性メモリ８の記憶装置使用率、不揮発性メモリ９の記憶装置使用率、不揮発性メモリ１０の記憶装置使用率に応じて、書き込み対象データを揮発性メモリ８と不揮発性メモリ９と不揮発性メモリ１０のうちのどの装置に記憶するか判断する際に用いるしきい値を変更する。
【００６４】
アドレス決定部１９は、メモリ使用情報１１に含まれている揮発性半導体メモリ８の使用率情報、不揮発性半導体メモリ９の使用率情報、不揮発性半導体メモリ１０の使用率情報に基づいて、書き込み対象データを揮発性半導体メモリ８、不揮発性半導体メモリ９、不揮発性半導体メモリ１０のいずれに記憶するかを判断するために用いられるしきい値を変更する。
【００６５】
例えば、不揮発性半導体メモリ９，１０の空き領域に比べて揮発性メモリ８の空き領域が多い場合には、たとえ中グループ、低グループに属する書き込み対象データであっても、揮発性メモリ８に記憶するようにアドレスを決定する。
【００６６】
アドレス管理部２０は、受付部１８によって取得され作業メモリ１６に記憶された書き込み先論理アドレスと、アドレス決定部１９によって決定され作業メモリ１６に記憶された書き込み先物理アドレスとを対応付けて情報記憶部１７に記憶されているアドレス変換情報１３に記憶する。アドレス変換情報１３は、例えばテーブル形式により、論理アドレスと物理アドレスとの関係を管理する。
【００６７】
書き込み部２１は、混成メインメモリ２に対して、作業メモリ１６に記憶されている書き込み対象データを、アドレス決定部１９によって決定され作業メモリ１６に記憶されている書き込み先物理アドレスの示す位置に書き込む。
【００６８】
例えば、書き込み部２１は、書き込み対象データを、書き込み単位（例えばページ単位）のデータに変換して作業メモリ１６に記憶し、この作業メモリ１６に記憶されている書き込み単位のデータを、混成メインメモリ２に記憶する。
【００６９】
再配置部２２は、書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一方に基づいて、混成メインメモリ２におけるあるメモリに記憶された書き込み対象データを、混成メインメモリ２における他のメモリに再配置するための再配置後の書き込み先物理アドレスを決定し、書き込み対象データの再配置を行う。
【００７０】
なお、再配置部２２は、アドレス決定部１９の一機能であってもよい。再配置のための書き込みは、書き込み部２１によって行われるとしてもよい。
【００７１】
再配置部２２によって再配置が実行されると、アドレス管理部２０は、情報記憶部１７に記憶されているメモリ使用情報１１、アドレス変換情報１３、データ固有情報などを、再配置後の書き込み先物理アドレスによって更新する。すなわち、アドレス管理部２０は、書き込み対象データの書き込み先論理アドレスと再配置後の書き込み先物理アドレスを関係付けてアドレス変換情報に登録する。さらに、アドレス管理部２０は、メモリ使用情報１１、データ固有情報が再配置後の状態を表すように、書き込み回数、書き込み頻度などを更新する。
【００７２】
この再配置は、書き込み対象データの重要度又はアクセス頻度が時間の経過に応じて変化する場合（動的である場合）に有効である。
【００７３】
例えば、書き込み対象データのデータ種別、アクセス頻度の推測値などのような、データ書き込み前に得ることが可能な静的情報に基づいて、書き込み対象データは、アドレス決定部１９及び書き込み部２１によってＳＬＣの不揮発性半導体メモリ９に書き込まれたとする。その後、再配置部２２は、書き込み対象データのアクセス頻度の観測値などのような、書き込み後に時間経過にそって変化する動的情報に基づいて、前回の書き込み時よりも書き込み対象データの重要度とアクセス頻度のうちの少なくとも一方がある程度を超えて高くなっている場合に、書き込み対象データの記憶先をＳＬＣの不揮発性半導体メモリ９から揮発性半導体メモリ８に変える。再配置部２２は、動的情報に基づいて、前回の書き込み時よりも書き込み対象データの重要度とアクセス頻度のうちの少なくとも一方がある程度を超えて低くなっている場合に、書き込み対象データの記憶先をＳＬＣの不揮発性半導体メモリ９からＭＬＣの不揮発性半導体メモリ１０に変える。
【００７４】
同様に、再配置部２２は、静的情報に基づいて揮発性半導体メモリ８に記憶された書き込み対象データを、動的情報に基づいて、不揮発性半導体メモリ９又は不揮発性半導体メモリ１０に再配置してもよい。
【００７５】
再配置部２２は、静的情報に基づいて不揮発性半導体メモリ１０に記憶された書き込み対象データを、動的情報に基づいて、揮発性半導体メモリ８又は不揮発性半導体メモリ９に再配置してもよい。
【００７６】
再配置部２２は、揮発性半導体メモリ８、不揮発性半導体メモリ９，１０の領域内で、書き込み対象データの記憶位置を移動させるとしてもよい。
【００７７】
再配置部２２は、上記の再配置処理を、例えば、所定の時間経過するたびに実行するとしてもよく、例えば、揮発性半導体メモリ８及び不揮発性半導体メモリ９，１０のいずれかの領域において記憶容量がしきい値を超えた場合に実行するとしてもよい。
【００７８】
以下に、処理部１５による読み出し動作について説明する。
【００７９】
受付部１８は、プロセッサ３ｂが混成メインメモリ２からデータを読み出す場合に、プロセッサ３ｂから読み出し先論理アドレスを受け付け、この読み出し先論理アドレスを作業メモリ１６に記憶する。
【００８０】
アドレス変換部２３は、情報記憶部１７に記憶されているアドレス変換情報１３に基づいて、作業メモリ１６に記憶された読み出し先論理アドレスを読み出し先物理アドレスに変換し、この読み出し先物理アドレスを作業メモリ１６に記憶する。
【００８１】
読み出し部２４は、混成メインメモリ２から、作業メモリ１６に記憶されている読み出し先物理アドレスに対応する読み出し単位（例えばページ単位）のデータを読み出し、作業メモリ１６に記憶する。
【００８２】
転送部２５は、混成メインメモリ２から読み出され作業メモリ１６に記憶された読み出し単位のデータから、読み出し先物理アドレスに対応する部分の読み出し対象データ（例えばバイト単位のデータ）を抽出し、この抽出された読み出し対象データをプロセッサ１ｂに送る。
【００８３】
本実施の形態において、混成メインメモリ２に対する書き込み単位及び読み出しのデータ単位は、ページサイズ、ページサイズの整数倍（２倍以上）、ブロックサイズ、ブロックサイズの整数倍（２倍以上）としてもよい。
【００８４】
なお、転送部２５は、読み出し単位のデータをプロセッサ３ｂに送信し、プロセッサ３ｂでは、読み出し単位のデータを１次キャッシュメモリ４ｂ又は２次キャッシュメモリ５ｂに記憶するとしてもよい。
【００８５】
すなわち、本実施の形態においては、１次キャッシュメモリ４ｂ又は２次キャッシュメモリ５ｂの書き込み単位及び読み出し単位についても、ページサイズ、ページサイズの整数倍（２倍以上）、ブロックサイズ、ブロックサイズの整数倍（２倍以上）としてもよい。
【００８６】
図３は、本実施の形態に係るメモリ管理装置１によって実現される物理アドレス空間の一例を示すブロック図である。
【００８７】
本実施の形態に係るメモリ管理装置１は、例えば、各種のキャッシュメモリ４ａ〜４ｃ，５ａ〜５ｃ、揮発性半導体メモリ８、不揮発性半導体メモリ９，１０を含む物理アドレス空間２６を形成する。メモリ管理装置１は、この物理アドレス空間２６上でアドレス決定などのアドレス管理を行う。これにより、キャッシュメモリ４ａ〜４ｃ，５ａ〜５ｃ、揮発性半導体メモリ８、不揮発性半導体メモリ９，１０をフラットなメモリ階層で扱うことができる。
【００８８】
図４は、本実施の形態に係るオペレーティングシステム２７の動作の一例を示すブロック図である。
【００８９】
本実施の形態においては、オペレーティングシステム２７において混成メインメモリ２のどのメモリにデータを記憶するかの選択が行われる。
【００９０】
オペレーティングシステム２７は、プロセスにおいて、プロセス生成時要求領域へのデータ書き込み、ファイルマップ用領域へのデータ書き込み、プロセスが動的に要求する領域へのデータ書き込みが発生した場合、または、カーネル内で使用するパラメータ用領域へのデータ書き込みが発生した場合、これらのデータ書き込みについて定められている重要度、アクセス頻度、記憶装置毎の使用可能領域の残量に基づいて、記憶装置選択用のしきい値を求める。そして、オペレーティングシステム２７は、データの重要度とアクセス頻度とのうちの少なくとも一方に基づいて求められるデータ書き込みの評価値（カラーリングレベル）と、決定された記憶装置選択用のしきい値とを比較することによって、揮発性半導体メモリ、不揮発性半導体メモリ（ＳＬＣ）、不揮発性半導体メモリ（ＭＬＣ）を含む混在メインメモリのうち、どのメモリにデータを配置するか決定する。
【００９１】
例えば、データの重要度は、静的情報によって決定され、データのアクセス頻度は、静的情報と動的情報とによって決定される。カラーリングレベルは、静的情報と動的情報とのうちの少なくとも一方に基づいて求められる。
【００９２】
本実施の形態においては、耐久性の観点から、異機種のメモリを含む混成メインメモリ２を効果的に使用する。すなわち、本実施の形態においては、混成メインメモリ２の寿命を可能な限り延ばすために、各メモリの耐久性に基づいてデータ配置が決定される。
【００９３】
さらに、本実施の形態においては、信頼性の観点から、異機種のメモリを含む混成メインメモリ２を効果的に使用する。本実施の形態においては、混成メインメモリ２における致命的なデータ欠損を避けるために、各メモリの信頼性に基づいてデータ配置が決定される。
【００９４】
上記のように、オペレーティングシステム２７は、例えば、書き込み対象データのアクセス頻度、データの重要度などの情報に基づいてカラーリングレベル（評価値）を算出し、このカラーリングレベルを求める。
【００９５】
そして、オペレーティングシステム２７は、例えば、各メモリの使用可能領域の残量、カラーリングレベルなどの情報に基づいて、揮発性半導体メモリ８、不揮発性半導体メモリ９，１０のどの位置に書き込み対象データを格納するか決定する。
【００９６】
このように、本実施の形態においては、オペレーティングシステム２７によって重要度、アクセス頻度が生成及び解釈され、この解釈の結果得られるカラーリングレベルは保存される。カラーリングレベルの演算において、例えば、ユーザによる設定データ、オペレーティングシステム２７による解釈結果などの情報のうち、どの情報を用いるかは情報処理装置の実装に依存する。
【００９７】
オペレーティングシステム２７は、ＭＭＵ置き換えアルゴリズムの最適化を行う。また、オペレーティングシステム２７は、すべてのデータに対して、そのデータのアクセス頻度を含むデータ固有情報を付加する処理を行う。
【００９８】
データの重要度の評価指標としては、例えば、実行可能ファイルか否かの区別、メディアファイルか否かの区別、ファイルの位置情報などが用いられる。
【００９９】
実行可能ファイルか否かの区別は、ファイルの実行可能パーミッションにより判別可能である。例えば、実行可能ファイルの重要度は、高く設定される。
【０１００】
メディアファイルか否かの区別は、ファイルの拡張子によって判別可能である。例えば、メディアファイルの重要度は低く設定される。
【０１０１】
ファイルの位置情報としては、例えば、ファイルの位置が、情報処理装置におけるメールボックスか、ゴミ箱かなどの判別に用いられる。例えば、メールボックスにあるファイル、ゴミ箱にあるファイルの重要度は低く設定される。
【０１０２】
また、データの重要度の評価指標としては、例えば、ユーザによって指定された情報が用いられる。例えば、データの重要度の評価指標を含むファイルとして、ファイルの拡張子を変えたシャドウファイルが使用される、ユーザによって指定された重要度の設定は、このシャドウファイルに記入される。シャドウファイルには、例えば、データ識別情報と重要度との関係、フォルダ位置と重要度との関係、データの種別と重要度との関係などのような、データの特徴と重要度との関係が記述されている。オペレーティングシステム２７は、このシャドウファイルの情報、書き込み対象データの識別情報、書き込み対象データのフォルダ位置、書き込み対象データの種別に基づいて、書き込み対象データの重要度を決定する。
【０１０３】
また、データの重要度の評価指標として、例えば、データの最終アクセス時刻から現在の時刻までの間隔（データの未使用時間）を用いるとしてもよい。例えば、重要度は、データの未使用時間の長さに比例して小さくなるとする。
【０１０４】
データのアクセス頻度の評価指標としては、例えば、ファイルの形式、アクセスパターン、ＥＬＦフォーマットのセグメント、ユーザによって設定されたデータ、アクセス頻度の実測値が用いられる。
【０１０５】
例えば、ファイルの形式がメディアファイルの場合、このデータに対する書き込み頻度は低いと推測される。
【０１０６】
例えば、アクセス頻度は、アクセスパターンについて、システムコールによって指定されたパーミッションと、ファイルのパーミッションとのうちのいずれであるかに応じて変更される。
【０１０７】
例えば、ＥＬＦフォーマットのセグメントについて、リード・オンリーセクションにおけるセグメントは、書き込み頻度が低いと推測される。また、ｔｅｘｔセクション、リード及びライトが可能なセクションにおけるセグメントは、書き込み頻度が高いと推測される。
【０１０８】
例えば、アクセス頻度を表す複数の評価指標が異なる値を表す場合に、アクセス頻度が高いことを示す評価指標が優先して用いられるとしてもよい。
【０１０９】
本実施の形態においては、カラーリングレベルＣＬを下記の（１）及び（２）式のように定義する。なお、このカラーリングレベルＣＬの算出は一例であり、自由に変更可能である。
【０１１０】
ＣＬ＝ｍｉｎ（９，（重要度×Ｗ＋アクセス頻度×（１−Ｗ）））  …（１）
０≦Ｗ≦１：重要度、アクセス頻度の重み付けを行う補正値  …（２）
この場合、ＣＬは、０≦ＣＬ≦９の範囲となる。
【０１１１】
カーネル内で使用されるパラメータ用領域について、重要度は、９（固定値）とする。
【０１１２】
プロセス生成時に要求される領域について、重要度は、９（固定値）とする。
【０１１３】
プロセスが動的に要求する領域について、重要度は、５（固定値）とする。
【０１１４】
プロセスがファイルを混成メインメモリ２にマップするための領域について、重要度は、（３）（４）式に基づいて求められる。
【０１１５】
重要度＝ｍｉｎ（９，ｍａｘ（静的重要度，ユーザ指定重要度））  …（３）
０≦静的重要度≦９  …（４）
アクセス頻度は、（５）〜（８）式に基づいて求められる。
【０１１６】
アクセス頻度＝静的アクセス頻度×Ｔ  …（５）
静的アクセス頻度＝ｍａｘ（ユーザ指定アクセス頻度，ＯＳ指定アクセス頻度）  …（６）
Ｔ＝ｍａｘ（０，−（アクセス時間間隔／最大アクセス時間間隔）＋１）  …（７）
０≦Ｔ≦１  …（８）
ここで、静的重要度は、データの形式に基づいて経験的に判断される値である。時間補正値Ｔは、データの未使用時間に応じて経験的に設定される。例えば、時間補正値Ｔは、データの未使用時間が長くなるほど小さくなる値となるとする。
【０１１７】
最大アクセス時間間隔は、経験的に定義される値である。アクセス時間間隔は実測値である。
【０１１８】
上記の（３）式によって得られる重要度は、０≦重要度≦９となる。
【０１１９】
図５は、プロセスがファイルを混成メインメモリ２にマップするための領域についての動的重要度の算出例を示す図である。
【０１２０】
アクセス時間間隔（月単位の未使用時間）がそれぞれ０，１，…，１０の場合、時間補正値Ｔは、それぞれ１，０．９，…，０と設定されている。
【０１２１】
この図５において、データ形式が実行可能ファイル、メディアファイル、ゴミ箱ファイルの場合、静的重要度はそれぞれ９，４，２とする。
【０１２２】
例えば、データ形式が実行可能ファイルであり、アクセス時間間隔が０（１ヶ月未満）の場合、動的重要度は（少数点以下切捨て）９となる。他の場合も図５の関係に基づいて動的重要度が決定される。
【０１２３】
カーネル内で使用するパラメータ用領域について、アクセス頻度は、９（固定値）とする。
【０１２４】
プロセスが使用する領域について、アクセス頻度は、アクセスパターンに基づいて決定される。例えば、データに対するアクセスパターンが読み出しのみの場合、アクセス頻度は３とする。例えば、データに対して書き込みの可能性がある場合、アクセス頻度は５とする。
【０１２５】
以下に、メモリの選択の具体例について説明する。
【０１２６】
混成メインメモリ２に含まれる揮発性半導体メモリ８、不揮発性半導体メモリ（ＳＬＣ）９、不揮発性半導体メモリ（ＭＬＣ）１０のうちのいずれのメモリにデータを記憶するかを選択するために用いられるしきい値は、各メモリの使用可能領域の残量（使用率）に基づいて決定される。カラーリングレベルと決定されたしきい値との大小関係に基づいて、書き込み先のメモリが選択される。
【０１２７】
図６は、本実施の形態に係るメモリの使用率としきい値との関係の一例を示す図である。
【０１２８】
しきい値ONRAMは、データを揮発性半導体メモリ８に配置するか否かを判断するためのしきい値である。本実施の形態において、カラーリングレベルがしきい値ONRAM以上のデータは、揮発性半導体メモリ８に記憶される。
【０１２９】
しきい値ONRAMは、以下の（９）式で算出され、少数点以下の値は切り捨てられる。
【０１３０】
ONRAM＝ｍｉｎ（９，（９×（記憶装置使用率（％）／１００）＋６））…（９）
上記の図６において、しきい値ONRAMの範囲は、６≦ONRAM≦９である。揮発性半導体メモリ８の使用率が高いほど、しきい値ONRAMは大きくなり、書き込み先として揮発性半導体メモリ８が選択されにくくなる。
【０１３１】
しきい値ONSLCは、データを不揮発性半導体メモリ（ＳＬＣ）９に配置するか否かを判断するためのしきい値である。本実施の形態においては、しきい値ONSLC以上であり、上記のしきい値ONRAM未満のカラーリングレベルを持つデータは、不揮発性半導体メモリ９に配置される。
【０１３２】
しきい値ONSLCは、以下の（１０）式で算出され、少数点以下は切り捨てて扱う。
【０１３３】
ONSLC＝ｍｉｎ（５，（９×（記憶装置使用率（％）／１００）＋３））…（１０）
上記の図６において、しきい値ONSLCの範囲は、３≦ONSLC≦５である。不揮発性半導体メモリ９の使用率が高いほど、しきい値ONSLCは大きくなり、書き込み先として不揮発性半導体メモリ９が選択されにくくなる。
【０１３４】
そして、しきい値ONSLC未満であり、揮発性半導体メモリ８と不揮発性半導体メモリ９とのどちらにも配置されないデータは、不揮発性半導体メモリ（ＭＬＣ）１０に配置される。
【０１３５】
上記図６において、揮発性半導体メモリ８の使用率が２０％、不揮発性半導体メモリ９の使用率が２０％の場合、しきい値ONRAMは７、しきい値ONSLCは４となる。この場合、カラーリングレベルが７≦ＣＬ≦１０のデータは、揮発性半導体メモリ８に記憶される。カラーリングレベルが４≦ＣＬ＜７のデータは、不揮発性半導体メモリ９に記憶される．カラーリングレベルが０≦ＣＬ＜４のデータは、不揮発性半導体メモリ１０に記憶される。他の場合についても同様である。
【０１３６】
図７は、本実施の形態に係るメモリ管理装置１による混成メインメモリ２へのデータ書き込み動作の一例を示すフローチャートである。
【０１３７】
ステップＳ１において、メモリ管理装置１は、データと論理アドレスを受け付ける。
【０１３８】
ステップＳ２において、メモリ管理装置１は、メモリ使用情報１１、メモリ固有情報１２、カラーリングテーブル１４内のデータ固有情報を参照し、混成メインメモリ２における書き込み先となるメモリを選択する。
【０１３９】
ステップＳ３において、メモリ管理装置１は、選択されたメモリ内の空き領域を選択する。
【０１４０】
ステップＳ４において、メモリ管理装置１は、選択された空き領域に、データを書き込む。
【０１４１】
ステップＳ５において、メモリ管理装置１は、書き込みが正常に終了したか判断する。
【０１４２】
書き込みが正常に終了していない場合、ステップＳ６において、メモリ管理装置１は、エラー処理を実行し、書き込み処理を終了する。
【０１４３】
書き込みが正常に終了した場合、ステップＳ７において、メモリ管理装置１は、受け付けた論理アドレスと、選択された空き領域に対応する物理アドレスとに基づいて、アドレス変換情報１３を更新する。
【０１４４】
ステップＳ８において、メモリ管理装置１は、メモリ使用情報１１におけるメモリの書き込み回数、カラーリングテーブル１４に記憶されているデータ固有情報の書き込み回数、書き込み対象データに付されているデータ固有情報の書き込み回数を更新する。
【０１４５】
図８は、本実施の形態に係る書き込み対象データ及び読み出し対象データのデータ構造の一例を示す図である。
【０１４６】
データ２８は、データ本体２９と、このデータの書き込み頻度、読み出し頻度などを含むデータ固有情報３０とを組み合わせたデータ構造を持つ。
【０１４７】
カラーリングテーブル１４は、各データに付されているデータ固有情報３０に基づいて生成される。
【０１４８】
図９は、カラーリングテーブル１４の一例を示す図である。
【０１４９】
カラーリングテーブル１４の各エントリは、データの最小ＩＯ単位に割り当てられる。
【０１５０】
エントリにおける書き込み頻度、読み出し頻度、重要度は、オペレーティングシステム２７又はユーザによって推測（予測）された値である。
【０１５１】
書き込み頻度、読み出し頻度、重要度がオペレーティングシステム２７によって推測される場合、オペレーティングシステム２７は、データに関する拡張子又はパーミッションを参照し、書き込み頻度、読み出し頻度、重要度を決定する。
【０１５２】
書き込み頻度、読み出し頻度、重要度がユーザによって設定される場合、設定のための専用のＧＵＩ（Graphical User Interface）又はコンフィグレーションが用意される。
【０１５３】
この書き込み頻度は、下記の第２の実施の形態に係るSW_Colorに対応する。
【０１５４】
本実施の形態における重要度及び読み出し頻度は、下記の第２の実施の形態に係るSR_Colorに対応する。
【０１５５】
書き込み頻度、読み出し頻度、重要度は、データ生成時に、オペレーティングシステム２７によって書き込まれる。
【０１５６】
エントリにおける最終アクセス時刻は、対応するデータが最後にアクセスされた時間情報である。最終アクセス時刻と現在時刻との差は、上記（７）のアクセス時間間隔となる。
【０１５７】
エントリにおけるカラーリングレベルは、例えば上記の（１）式で算出される。
【０１５８】
カラーリングテーブル１４におけるカラーリングレベルと最終アクセス時刻とは、上記図７のステップＳ８において、メモリ管理装置１によって更新される。
【０１５９】
図１０は、本実施の形態に係る混成メインメモリ２のアドレスマップの一例を示す図である。
【０１６０】
混成メインメモリ２は、揮発性半導体メモリ８の記憶領域３１Ａ、不揮発性半導体メモリ９の記憶領域３１Ｂ、不揮発性半導体メモリ９用の冗長ブロック領域３１Ｃ、不揮発性半導体メモリ１０の記憶領域３１Ｄ、不揮発性半導体メモリ１０用の冗長ブロック領域３１Ｅを具備する。
【０１６１】
データの書き込みの際に、記憶領域３１Ａ、記憶領域３１Ｂ、記憶領域３１Ｄのうちのいずれの領域を選択するかは、上記のようにカラーリングレベルとしきい値とに基づいて決定される。
【０１６２】
記憶領域３１Ｂ、記憶領域３１Ｄ内においてどの位置にデータを記憶するかは、例えば、追記式の書き込みが採用される。
【０１６３】
追記式の書き込みでは、それぞれの記憶領域３１Ｂ，３１Ｄ内では、シーケンシャルに記憶位置を変えてデータが書き込まれる。このような追記式の書き込みにより、記憶領域３１Ｂ，３１Ｄ内におけるアクセス頻度を均等化することができる。
【０１６４】
本実施の形態では、アドレス決定部１９は、記憶領域３１Ｂ，３１Ｄがデータの書き込み先として選択されると、記憶領域３１Ｂ，３１Ｄ内における書き込み先物理アドレスをシーケンシャルに発生させる。書き込み部２１は、シーケンシャルに発生された物理アドレスに基づいてデータの書き込みを行う。
【０１６５】
記憶領域３１Ｂ，３１Ｄに対して、追記式の書き込みがある程度進むと、ガーベージコレクションが行われる。
【０１６６】
ガーベージコレクションの一例としては、例えば現在の記憶領域３１Ｂ，３１Ｄ内をサーチし、複数のエントリのうち一つにまとめられるものを一つにまとめる処理、記憶領域３１Ｂ，３１Ｄ内で有効なデータと消去されたデータとが混在する場合に、有効なデータをのみを集めて再配置する処理、アクセス頻度の低いデータ、重要度の低いデータを他のメモリに移動させて空き領域を増やす処理などがある。
【０１６７】
記憶領域３１Ｂに対するガーベージコレクションが実行される場合には、冗長領域３１Ｃが利用される。記憶領域３１Ｄに対するガーベージコレクションが実行される場合には、冗長領域３１Ｅが利用される。
【０１６８】
ガーベージコレクションは、例えば再配置部２２によって実行される。ガーベージコレクションのための書き込みは、書き込み部２１によって行われるとしてもよい。
【０１６９】
再配置部２２によってガーベージコレクションが実行されると、アドレス管理部２０は、情報記憶部１７に記憶されているメモリ使用情報１１、アドレス変換情報１３、データ固有情報などを、ガーベージコレクション後の書き込み先物理アドレスによって更新する。
【０１７０】
以上説明した本実施の形態においては、書き換え回数又は読み出し回数に制限のある不揮発性半導体メモリをメインメモリとして効果的に利用することができる。
【０１７１】
本実施の形態においては、メモリ管理装置１とオペレーティングシステム２７とが協調してデータ固有のアクセス頻度情報を生成し、メモリ管理装置１はこのアクセス頻度情報に基づいて最適な書き込み方式を実現することができる。
【０１７２】
これにより、混成メインメモリ２における不揮発性半導体メモリ９，１０に記憶されたデータに、過剰に劣化することを防止することができ、不揮発性半導体メモリ９，１０を用いた高速で安価な情報処理装置を実現することができる。
【０１７３】
（第２の実施の形態）
本実施の形態においては、上記第１の実施の形態で説明したメモリ管理装置１及び混成メインメモリ２の詳細について説明する。
【０１７４】
本実施の形態に係るオペレーティングシステム２７は、データ固有のアクセス頻度情報（読み書き頻度情報）を生成する。メモリ管理装置１は、データ固有のアクセス頻度情報を用いてデータの書き込み先を決定する。また、メモリ管理装置１は、データ固有のアクセス情報、メモリ使用情報、メモリ固有情報に基づいて最適なウェアレベリングを実行する。上記第１の実施の形態においては、カラーリングレベルを用いて記憶領域を決定しているが、本実施の形態においては、データから推測されるアクセス頻度を示す値SW_Color，SR_Colorを用いて記憶領域を決定する。
【０１７５】
ＮＡＮＤ型フラッシュメモリは上書き動作が行えない。このため、有効なデータが存在しないＮＡＮＤ型フラッシュメモリのブロックに対して新たなデータを書き込む場合、そのブロック全体を消去してからデータを書き込む動作が行われる。ブロックの消去処理を繰り返すと、ブロックは劣化し、データを書き込むことが困難になる。このため特定のブロックのみにデータの書き込み処理が集中すると、一部の領域だけ書き込み処理ができなくなる現象が生じる。これを回避するために、データ管理装置１は、ウェアレベリング機能を備える。このウェアレベリング機能は、ブロックの消去回数に応じて、データの入れ替えを定期的に行う。
【０１７６】
従来においては、不揮発性半導体メモリは２次記憶装置として用いられており、ＭＰＵは、２次記憶装置をアクセスする場合に、Ｉ／Ｏインタフェースを介したデータの転送が必要であった。
【０１７７】
これに対して、本実施の形態では、不揮発性半導体メモリ９，１０が、メインメモリ領域に配置される。メモリ管理装置１は、オペレーティングシステム２７が揮発性半導体メモリ８と同じレベルで不揮発性半導体メモリ９，１０にアクセスできるような構成を持つ。これにより、ＭＰＵと不揮発性半導体メモリ９，１０との間でＩ／Ｏインタフェースを介したデータの転送必要なくなり、不揮発性半導体メモリ９，１０に対して高速なアクセスが可能となる。
【０１７８】
また、本実施の形態では、従来のモバイル機器のように安価なフラッシュメモリと同等な容量の高価なＤＲＡＭメモリを配置する必要がなく、安価なシステムを提供することができる。
【０１７９】
オペレーティングシステム２７がメインメモリと同じレベルで不揮発性半導体メモリにアクセスできるようにシステムを設計する場合、２次記憶装置として不揮発性半導体メモリを使用していた従来のシステムと比較して、不揮発性半導体メモリへの書き込みは増加する。
【０１８０】
不揮発性半導体メモリがＮＡＮＤ型フラッシュメモリの場合、過度な書き込みを避け、システムの寿命を延ばすような方式が必要である。
【０１８１】
本実施の形態では、書き換え回数に制限のある不揮発性半導体メモリ９，１０をメインメモリとして使用できるように書き込み方式が改善されている。本実施の形態では、データ固有のアクセス頻度情報を用いて、データが書き込まれる頻度が予測される。アクセス頻度の高いデータは、耐久性が高いＤＲＡＭ、ＳＬＣ領域に配置する等の処理を行い、情報処理装置のメモリ領域を保護する。データ固有のアクセス頻度情報はウェアレベリングに適用される。例えば、データ固有のアクセス頻度情報に基づいて、ウェアレベリングにおけるデータの移動が抑制される。
【０１８２】
上記図１に示すように、メモリ管理装置（フラットメモリ管理装置）１は、ＭＰＵであるプロセッサ（Graphic IPなどでもよい）３ａ〜３ｃなどが接続される論理アドレスバス７と混成メインメモリ２との間に備えられる。メモリ管理装置１は、混成メインメモリ２についてメモリ管理を行う。上記図１ではＭＰＵ２個とＧＰＵ１個が共通に論理バス７に接続された例を示しているが、単一のプロセッサを実装する機器に応用しても得られる効果は同じである。
【０１８３】
メモリ管理装置１はメモリ管理のためのＭＰＵなどのような処理部１５、処理部１５によって使用される作業メモリ１６、不揮発性半導体メモリ９，１０への書き込み方式を決定する情報などを保持する情報記憶部１７を具備する。
【０１８４】
なお、メモリ管理装置１は、情報記憶部１７とは独立して、不揮発性半導体メモリ９，１０へ書き込まれるデータ毎のデータ固有のアクセス頻度情報を保持するカラーリングテーブルのベースアドレスを示すカラーリングテーブルレジスタを備えるとしてもよい。
【０１８５】
メモリ管理装置１に接続される混成メインメモリ２は、例えばＤＲＡＭなどのような揮発性半導体メモリ８と不揮発性半導体メモリ９，１０とを備えている。
【０１８６】
不揮発性半導体メモリ９，１０としては、例えばＮＡＮＤ型フラッシュメモリが用いられるが、例えばＰＲＡＭ、ＲｅＲＡＭなどのような他のファイルメモリでもよい。
【０１８７】
不揮発性半導体メモリ９，１０のメモリ空間内の所定の番地には、メモリ使用情報１１、メモリ固有情報１２、アドレス変換情報（ページテーブル）１３、カラーリングテーブル（データ毎のデータ固有のアクセス情報を保持するテーブル）１４が記憶されている。メモリ使用情報１１、メモリ固有情報１２、アドレス変換情報１３は、システムのパワーオン後に、不揮発性半導体メモリ９，１０の領域から情報記憶部１７にコピーされる。情報記憶部１７は、高速にアドレス変換を行なうためにメモリ管理装置１のチップ上にＳＲＡＭで構成されるのが好ましい。また、カラーリングテーブル１４のベースアドレス（論理アドレス）は、システムのパワーオン後に、メモリ管理装置１内に存在する情報記憶部１７又はカラーリングテーブルレジスタにセットされる。
【０１８８】
アドレス変換情報１３は、混成メインメモリ２の物理マップ情報（ＣＨＩＰアドレス、Ｂｌｏｃｋアドレス、Ｐａｇｅアドレス）と論理アドレスを関連付けたテーブルである。
【０１８９】
アドレス変換情報１３によって保持される不揮発性半導体メモリのメモリ領域のマッピングデータは、論理アドレスと混成メインメモリ２との間でアドレスを関連付けた情報に加えて、それぞれのブロックが書き込み可能な状態かどうかを示すフラグ情報、それぞれのＰａｇｅデータが最新で有効かあるいはすでに他のページに更新されたため無効であるかを判別するためのフラグ情報を含む。
【０１９０】
図１１は、本実施の形態に係る混成メインメモリ２のメモリマップの一例を示す図である。
【０１９１】
メモリ固有情報１２は、１）混成メインメモリ２のメモリ空間内のＤＲＡＭ空間サイズ、２）混成メインメモリ２のメモリ空間内の不揮発性半導体メモリ９，１０のメモリサイズ、３）混成メインメモリ２のメモリ空間を構成するＮＡＮＤ型フラッシュメモリのブロックのサイズ、ページのサイズ、４）不揮発性半導体メモリ９内のＳＬＣ領域（２値領域）として割り付けられたメモリ空間情報（上限消去回数、上限読み出し回数を含む）、５）２ｂｉｔ／Ｃｅｌｌの多値領域に割り付けられたメモリ空間情報（上限消去回数、上限読み出し回数を含む）、６）３ｂｉｔ／Ｃｅｌｌの多値領域に割り付けられたメモリ空間情報（上限消去回数、上限読み出し回数を含む）、７）４ｂｉｔ／Ｃｅｌｌの多値領域に割り付けられたメモリ空間情報（上限消去回数、上限読み出し回数を含む）を含む。
【０１９２】
メモリ管理装置１は、オペレーティングシステム２７からのデータ書き込み処理の命令に対して、メモリ固有情報１２と、カラーリングテーブル１４を参照して、どのメモリ空間（ＳＬＣ領域（２値領域）、２ｂｉｔ／Ｃｅｌｌの多値領域、３ｂｉｔ／Ｃｅｌｌの多値領域、４ｂｉｔ／Ｃｅｌｌの多値領域）にデータを書き込むか決定し、さらにそのメモリ空間内のどの物理アドレスに書き込むかについてメモリ使用情報１１と、データ固有のアクセス頻度情報を参照して決定する。
【０１９３】
また、メモリ管理装置１は、オペレーティングシステム２７によってデータの読み出し処理が実行される場合に、カラーリングテーブル１４を参照して読み出し方式を決定する。
【０１９４】
メモリ使用情報１１は不揮発性半導体メモリ９，１０のメモリ領域内の各ブロックが何回消去されたかと、何回読み出されたかを示す情報である。各ブロックが消去されるたびに、メモリ使用情報１１におけるそれぞれのブロックの消去回数（書き換え回数）はインクリメントされる。また、各ページが読み出されるたびに、メモリ使用情報１１におけるそのページの読み出し回数がインクリメントされる。
【０１９５】
図１２は、カラーリングテーブル１４の一例を示す図である。
【０１９６】
カラーリングテーブル１４は、各データについて、それぞれのデータ固有のアクセス頻度情報を保持するテーブルである。
【０１９７】
カラーリングテーブル１４は、任意のデータが生成された場合に、データがマップされた論理アドレス空間とデータ固有のアクセス頻度情報を関連付けるために使用される。
【０１９８】
カラーリングテーブル１４の各エントリは、データの最少の読み書きサイズ（たとえばＮＡＮＤ型フラッシュメモリのページサイズ）に対応しており、データから推測される書き込み頻度を示す値SW_Color、データから推測される読み出し頻度を示す値SR_Color、データから推測されるデータの寿命、データの生成された時刻、データへの書き込み回数、データの読み出し回数を含む。
【０１９９】
図１３は、カラーリングテーブル１４の生成処理の一例を示すフローチャートである。
【０２００】
カラーリングテーブル１４は、不揮発性半導体メモリ９，１０上の任意の領域に配置される。カラーリングテーブル１４の配置されている番地は、メモリ管理装置１の実装により決定されるとしてもよい。
【０２０１】
ステップＴ１において、メモリ管理装置１は、電源が投入され、起動する。
【０２０２】
ステップＴ２において、メモリ管理装置１は、カラーリングテーブル１４のベースアドレスを論理アドレスに変換し、各データについてのインデックスを生成する。
【０２０３】
ステップＴ３において、メモリ管理装置１は、情報記憶部１７又はカラーリングテーブルレジスタに、カラーリングテーブル１４のベースアドレスをセットする。
【０２０４】
オペレーティングシステム２７及びメモリ管理装置１は、情報記憶部１７又はカラーリングテーブルレジスタを介して、カラーリングテーブル１４を参照する。
【０２０５】
図１４は、オペレーティングシステム２７によるカラーリングテーブル１４のエントリの生成処理の一例を示すフローチャートである。この図１４は、プロセス６ｂが任意のデータを生成する際に、オペレーティングシステム２７がカラーリングテーブル１４のエントリにデータをセットする動作を示している。新たなデータを不揮発性半導体メモリ９，１０に書き込む場合、オペレーティングシステム２７は、データ固有のアクセス頻度情報の値SW_Color，SR_Color、データの寿命、データ生成時刻をカラーリングテーブル２７のエントリに書き込む。
【０２０６】
SW_Color，SR_Colorは、オペレーティングシステム２７がデータの書き込み頻度及び、読み出し頻度を予測して設定する値である。SW_Color、SR_Colorには、それぞれ書き込み頻度及び読み出し頻度が高いと予測される場合ほど、高い値が設定される。データの寿命は、このデータがどのくらい長く混成メインメモリ２上に存在するか予測され、この予測に基づいて設定される。これらの値は、データを生成するプログラムのソースコードにより静的に指定されるとしてもよく、オペレーティングシステム２７がその値をカラーリングテーブル１４に書き込むとしてもよく、オペレーティングシステム２７がファイルの拡張子又はファイルヘッダ等を参照することにより予測されるとしてもよい。
【０２０７】
ステップＵ１において、任意のプロセス６ｂは、データ書き込み要求を発生させる。
【０２０８】
ステップＵ２において、オペレーティングシステム２７は、不揮発性半導体メモリ９，１０のページサイズごとのスタティック情報を生成する。
【０２０９】
ステップＵ３において、オペレーティングシステム２７は、情報記憶部１７又はカラーリングテーブルレジスタの記憶内容に基づいてカラーリングテーブル１４を参照する。
【０２１０】
ステップＵ４において、オペレーティングシステム２７は、スタティック情報をカラーリングテーブル１４に書き込む。
【０２１１】
ステップＵ５において、オペレーティングシステム２７は、書き込み先論理アドレスをメモリ管理装置１に通知する。
【０２１２】
そして、ステップＵ６において、メモリ管理装置１は、書き込み処理を実行する。
【０２１３】
W_Color及びSR_Colorの範囲、後述するオペレーティングシステム２７による頻度予測のパターン、SW_Color及びSR_Colorを用いてメモリ領域を決定するメモリ管理装置１の動作は一例である。システム実装者は、メモリ管理装置１の動作を適切にチューニング可能としてもよい。
【０２１４】
ここで、任意のデータに対するオペレーティングシステム２７によるSW_Color、SR_Color、データ寿命の割り当てについて説明する。
【０２１５】
図１５は、各種のデータに対するSW_Color、SR_Color、データ寿命の割り当ての設定の第１の例を示す図である。
【０２１６】
図１６は、各種のデータに対するSW_Color、SR_Color、データ寿命の割り当ての設定の第２の例を示す図である。
【０２１７】
カーネルのテキスト領域は読み込まれるケースが多く、書き込まれる可能性は低い。オペレーティングシステム２７は自身が動作するテキスト領域のSR_Colorを５、SW_Colorを１と設定する。また、オペレーティングシステム２７は、カーネルのテキスト領域のデータ寿命は長い（LONG）と予測している。
【０２１８】
一方、カーネルのデータ領域は、読み込み、書き込みの頻度がともに高い。よって、オペレーティングシステム２７は、カーネルのデータ領域について、SR_Colorを５、SW_Colorを５に設定する。
【０２１９】
カーネルが動的に確保するデータ領域は、データが不要になると削除されるためデータの寿命は短い（SHORT）とする。
【０２２０】
ユーザプログラムのテキスト領域は、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出し頻度は低い。ただし、プロセスがアクティブになっている状態ではカーネル同様読み出し頻度が高くなる。このため、ユーザプログラムのテキスト領域においては、SW_Colorが１、SR_Colorが４に設定される。ユーザプログラムのテキスト領域について、データ寿命は、そのプログラムがアンインストールされるまでの期間であるため、一般的には長くなる。よって、ユーザプログラムのテキスト領域について、データ寿命は長い(LONG)と設定される。
【０２２１】
プログラムが動的に確保する領域は、大きく分けて２種類ある。まず１つはプログラムの実行終了とともに廃棄されるデータ（stack領域を含む）である。これらのデータはデータ寿命が短く、読み出しと書き込みの頻度は高い。したがって、プログラムの実行終了とともに廃棄されるデータについて、SR_Colorとして4が設定され、SW_Colorとして４が設定される。もう１つのプログラムが動的に確保する領域は、プログラムが新たなファイルのために生成した領域である。プログラムによって生成されたデータはデータ寿命が長く、読み出しと書き込みの頻度は生成するファイルの種別に依存する。
【０２２２】
プロセスによって参照されるファイルとして扱われるデータについて、ファイルのデータ寿命は長いと設定される。
【０２２３】
例えばファイルの拡張子がSYS，dll，DRVなどで示されるようなシステムファイルが読み込まれる場合について説明する。このような拡張子を持つデータは、オペレーティングシステムが様々な処理を実行する場合に読み込まれるファイルである。混成メインメモリ２上にオペレーティングシステムがインストールされる場合に、１度書き込まれるとその後更新されることはほとんどない。これらの拡張子を持つファイルは、ファイルのなかでも比較的アクセス頻度は高いが、プログラム(カーネル)のテキスト領域と比較してアクセス頻度は低いと予測される。したがって、オペレーティングシステム２７は、これらの拡張子を持つデータのSW_Colorを１に設定し、SR_Colorを３に設定する。この設定は、データから予測される書き込み頻度は極めて低く、予測される読み出し頻度は高いことを示している。すなわち、これらの拡張子を持つデータは、オペレーティングシステムのアップデートや他のプログラムをインストールする場合に数度書き換わる程度であり、ほとんどRead Onlyとして扱われると予測される。
【０２２４】
拡張子がJPEGで代表されるような写真データ、及び拡張子がMOVで代表されるようなムービーデータは、一度書かれると再度度書き込みが行なわれることは少ない。このような写真及びムービーデータはプログラムから何度もアクセスされる頻度が少ないと予測される。したがって、オペレーティングシステム２７は、写真及びムービーデータに対して、SW_Color及びSR_Colorの設定値は小さくなる。
【０２２５】
図１７は、カラーリングテーブルのエントリのアライメントの第１の例を示す図である。
【０２２６】
図１８は、カラーリングテーブルのエントリのアライメントの第２の例を示す図である。
【０２２７】
カラーリングテーブルのエントリは、データの最少の読み書きサイズ（たとえばＮＡＮＤ型フラッシュメモリのページサイズ）に対応しているが、プロセスは、論理アドレス空間にデータをマップする際、データの最少の読み書きサイズにアライメントしてマップすることを義務づけられていない。このため、カラーリングテーブルの1エントリに対して複数のデータが対応する可能性がある。
【０２２８】
このような場合、オペレーティングシステム２７は、図１７に示すように、１エントリに対応する複数のデータのうちで、最も読み出し頻度及び書き込み頻度が高いと予測されるデータを代表とする。
【０２２９】
あるいは、オペレーティングシステム２７は、図１８に示すように、１エントリを占めるデータのサイズを重みとし、各データのSW_Color、SR_Colorの加重平均値を設定する。
【０２３０】
カラーリングテーブル１４によって示されているSW_ColorとSR_Colorとは、プログラム作成者によりオペレーティングシステム２７などのソースコードに埋め込まれるか、オペレーティングシステム２７によって予測される。しかしながら、プログラム開発者が意図した場合と別の用途でファイルや写真データが使われる場合もある。一般的に、写真などのようなデータのアクセスはほとんどが読み出しであり、写真の内容が書き換えられることは少ない。しかしながら、写真を加工するプログラムが特定の写真を扱う場合、加工中の写真が頻繁に書き換えられることがある。このような場合、カラーリングテーブル１４のSW_ColorとSR_Colorをユーザが書き換え可能であれば、特定のファイルを、より高速で書き換え回数に余裕のある領域に移動することが可能になる。このような動作を実現させるため、各データのデータ固有のアクセス頻度情報は、オペレーティングシステム２７のソフトウェア上で書き換えられるように、オペレーティングシステム２７のファイルシステムを設計することが好ましい。たとえば一般的なブラウザでファイルのプロパティを開けば、カラーリングテーブル２７に相当する属性がＧＵＩ画面上で見ることができるようにシステムが設計されており、その初期データをユーザがＧＵＩ上で変更できるようオペレーティングシステム２７を設計するのが好ましい。
【０２３１】
次に、本実施の形態に係るメモリ管理装置１を使用した情報処理装置による混成メインメモリ２からのデータ読み出し動作について詳細に説明する。
【０２３２】
プロセッサ３ｂからデータの読み出し要求が発生すると、それぞれのプロセッサが発行する仮想論理アドレスは論理アドレス空間に割り付けられた論理アドレスに変換（CPUID プロセスIDの付加）される。そして、メモリ管理装置１は、変換後の論理アドレスに対応して揮発性半導体メモリ８、不揮発性半導体メモリ９，１０からデータの読み出しを行う。論理アドレスに対応するデータが揮発性半導体メモリ８のメモリ領域に存在する場合には、揮発性半導体メモリ８上のデータは、メモリ管理装置１を介して２次キャッシュメモリ５ｂに取り込まれる。
【０２３３】
揮発性半導体メモリ８上に論理アドレスに対応するデータが存在しない場合、メモリ管理装置１は論理アドレスに対応する不揮発性半導体メモリ９，１０のチップ内のブロックアドレス、ページアドレスを情報記憶部１７内のアドレス変換情報１３に基づいて検索し、必要なデータを不揮発性半導体メモリ９，１０のチップにおける指し示されたブロック内の所定ページから読み出す。
【０２３４】
このとき、メモリ管理装置1は、カラーリングテーブル１４に基づいて、論理アドレスに対応するデータの固有のアクセス頻度情報を参照し、読み出し方法を決定する。
【０２３５】
図１９は、カラーリングテーブル１４における書き込み頻度及び読み出し頻度の算出の方法の一例を示す図である。
【０２３６】
オペレーティングシステム２７の開発者は、メモリ管理装置１のデータ読み込み方式とデータ書き込み方式の実装により、先で説明した基準などを用いてSW_Color、SR_Colorを設定する。
【０２３７】
図２０は、本実施の形態に係るメモリ管理装置１による読み出し方式の決定動作の一例を示すフローチャートである。
【０２３８】
この図２０におけるSR_Colorは、カラーリングテーブル１４のSR_Colorに対応している。カラーリングテーブル１４の書き込み頻度及び読み出し頻度は、メモリ管理装置１がメモリ使用情報１１、メモリ固有情報１２、カラーリングテーブル１４に含まれている書き込み回数、読み出し回数、データ生成時刻を用いて算出される値である。
【０２３９】
図２０のフローチャートのステップＶ１〜Ｖ１３では、上記図１５，１６において設定されているSR_Colorなどに基づいて、データがメモリ管理装置１によってどのように読み出されるかが説明されている。
【０２４０】
まず、SR_Colorを５、SW_Colorを１と指定されたカーネルのテキスト領域は、読み込まれるケースが多く、書き込まれる可能性は低いと推測される。このカーネルのテキスト領域における第１のデータは、オペレーティングシステムが様々な処理をする際に読み出されるため、読み出し回数は多くなり、さらに高速に読み出される必要がある。
【０２４１】
メモリ管理装置１は、不揮発性半導体メモリ９，１０から読み出された第１のデータを、プロセッサ３ｂの２次キャッシュメモリ５ｂ又は１次キャッシュメモリ４ｂに対して書き込むとともに、並行して、混成メインメモリ２内の揮発性半導体メモリ８のメモリ領域にも読み出された第１のデータを転送する。
【０２４２】
再度同じ第１のデータが読み出される場合には、プロセッサ３ｂの２次キャッシュメモリ５ｂ又は１次キャッシュメモリ４ｂ上から、又はキャッシュヒットしない場合は混成メインメモリ２の揮発性半導体記憶メモリ８のメモリ領域から、第１のデータの読み出しが行なわれる。混成メインメモリ２上の揮発性半導体メモリ８のメモリ領域に記憶された第１のデータは、電源がオフされるまで揮発性半導体メモリ８上に保持される。
【０２４３】
次に、SR_Colorを５、SW_Colorを５と指定されたカーネルのデータ領域は、システムが起動するたびに新たに生成、初期化する領域である。このため、カーネルのデータ領域における第２のデータの寿命は短いと推測される。メモリ管理装置１は、最初に第２のデータの寿命を参照する。第２のデータは、システム稼働中に必ず揮発性半導体メモリ８上に存在し、電源がオフされるとともに揮発性半導体メモリ８から消去される。
【０２４４】
次に、SR_Colorを４、SW_Colorを１と指定されたユーザプログラムの領域は、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出し頻度は低い。ユーザプログラムの領域における第３のデータは揮発性半導体メモリ８のメモリ領域に配置されるが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がFullに埋まった場合、揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。消去される第３のデータの順番は、カラーリングテーブル１４の情報に基づいて決定される。ライトバックされる場合には、読み出しが少ない順に、第３のデータが揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０上に移される。
【０２４５】
SR_Colorを4、SW_Colorを4と指定したプログラムが動的に確保する領域における第４のデータのうち、データ寿命が短いと指定された第４のデータは、カーネルのデータ領域と同様に、システム稼働中に必ず揮発性半導体メモリ８上に存在し、電源がオフされるとともに揮発性半導体メモリ８から消去される。
【０２４６】
一方、データ寿命が長いと指定された第４のデータは、揮発性半導体メモリ８のメモリ領域に配置されるが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がFullに埋まった場合、揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。
【０２４７】
次に、プロセスが参照するファイルとして扱われるデータについて説明する。上記図１５，１６ではファイルのデータ寿命はすべて長いと設定されている。
【０２４８】
SW_Colorを１とし、SR_Colorを３と指定されたファイル類に含まれる第５のデータは、書き込み頻度が極めて低く、予測される読み出し頻度が高いことがオペレーティングシステム２７によって推測される。このとき、メモリ管理装置１は、第５のデータを揮発性半導体メモリ８のメモリ領域に配置するが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がFullに埋まった場合、揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。
【０２４９】
SW_Colorを１とし、SR_Colorを２と指定されたファイル類に含まれる第６のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も低いことがオペレーティングシステム２７によって推測される。このように、メモリ管理装置１は、読み出し頻度が高いと判定されていない場合、読み出し時に揮発性半導体メモリ８のメモリ領域にコピーを行わず、不揮発性半導体メモリ９，１０に直接アクセスする。
【０２５０】
SW_Colorを１とし、SR_Colorを１と指定したファイル類に含まれる第７のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も極めて低いことがオペレーティングシステム２７によって推測される。このように、メモリ管理装置１は、読み出し頻度が高いと判定されていない場合、読み出し時に揮発性半導体メモリ８のメモリ領域にコピーを行わず、不揮発性半導体メモリ９，１０に直接アクセスする。
【０２５１】
図２１は、本実施の形態に係るメモリ管理装置１のデータ読み出しの処理の一例を示すフローチャートである。
【０２５２】
この図２１のステップＷ１〜Ｗ１０において、メモリ管理装置１は、情報記憶装置１７内のメモリ使用情報１１のうち対応するページアドレスの読み出し回数とメモリ固有情報１２の読み出し上限回数を参照する。
【０２５３】
メモリ管理装置１は、メモリ使用情報１１から読み出されたメモリの読み出し回数が、読み出し上限回数を超えているか否かチェックする。
【０２５４】
メモリの読み出し回数が、読み出し上限回数を超えていない場合、メモリ管理装置１は、情報記憶部１７内の読み出し回数をインクリメントする処理をする。
【０２５５】
メモリの読み出し回数が、読み出し上限回数を超えている場合は、メモリ管理装置１は、同じメモリ空間（ＳＬＣ領域（２値領域）、２ｂｉｔ／Ｃｅｌｌの多値領域、３ｂｉｔ／Ｃｅｌｌの多値領域、４ｂｉｔ／Ｃｅｌｌの多値領域）の他のブロックに、ブロック内の総てのページのデータをコピーする。このようにコピーを行う場合、メモリ管理装置１は、読み出し回数の少ないフレッシュなブロックを検索し、そこに総てのページデータを再配置する（引っ越す）ことが好ましい。読み出し処理が成功した場合、メモリ管理装置１はカラーリングテーブル１４の読み出し回数をインクリメントする。
【０２５６】
図２２は、本実施の形態に係るメモリ管理装置１のデータ書き込みの処理の一例を示すフローチャートである。
【０２５７】
この図２２のステップＸ１〜Ｘ８において、プロセス（プログラム）６ａ〜６ｃからデータの書き込み要求が発生すると、それぞれのプロセッサ３ａ〜３ｃは、それぞれのプロセッサ３ａ〜３ｃが備える１次キャッシュメモリ４ａ〜４ｃ、２次キャッシュメモリ５ａ〜５ｃ上にデータが存在するかどうかチェックする。
【０２５８】
１次キャッシュメモリ４ａ〜４ｃ又は２次キャッシュメモリ５ａ〜５ｃ上にデータが存在する場合、プロセッサ３ａ〜３ｃは、１次キャッシュメモリ４ａ〜４ｃ又は２次キャッシュメモリ５ａ〜５ｃ上のデータを書き換えて書き込み動作が終了する。
【０２５９】
１次キャッシュメモリ４ａ〜４ｃ又は２次キャッシュメモリ５ａ〜５ｃ上にデータが存在しない場合、メモリ管理装置１は、仮想論理アドレスを論理アドレス空間に割り付けられた論理アドレスに変換する。
【０２６０】
変換後の論理アドレスに対応するデータが揮発性半導体メモリ８上に存在する場合、メモリ管理装置１は、混成メインメモリ１の揮発性半導体メモリ８に対して書き込み動作を行う。
【０２６１】
論理アドレスに対するデータが揮発性半導体メモリ８上に存在しない場合、図２２に示すように、メモリ管理装置１は、不揮発性半導体メモリ９，１０のメモリ領域に対して書き込み動作を行う。データ生成時には、この論理アドレスに対応した不揮発性半導体メモリ９，１０の書き込み番地は、論理アドレスに対応するカラーリングテーブル１４のエントリとメモリ管理装置１の情報管理装置１７内に保存されたメモリ使用情報１１、メモリ固有情報１２とに基づいて決定される。書き込み番地の決定後、メモリ管理装置１は、決定された書き込み番地に関する情報をアドレス変換情報１３に書き込む。書き込みが成功した場合、メモリ管理装置１はカラーリングテーブル１４の書き込み回数をインクリメントする。
【０２６２】
図２３は、本実施の形態に係るメモリ管理装置１による書き込み先領域の決定動作の一例を示すフローチャートである。メモリ管理装置１は、この図２３の書き込み先領域の決定を、カラーリングテーブル１４に基づいて実行する。メモリ領域を決定するために使用するカラーリングテーブル１４の属性はSW_Color、SR_Color、書き込み頻度とする。
【０２６３】
オペレーティングシステム２７の開発者は、メモリ管理装置１のデータ読み込み方式とデータ書き込み方式の実装に対して、上記図１５及び図１６に示すような設定を行う。この図２３のステップＹ１〜Ｙ１２は、上記図１５及び図１６に示す設定にしたがって、データがメモリ管理装置１によってどのように読み出されるかを表している。
【０２６４】
まず、SR_Colorを５、SW_Colorを１と指定されたカーネルのテキスト領域における第１のデータは読み込まれる回数が多く、書き込まれる可能性は低いと推測される。第１のデータは、上記図２０に示されている読み出し方式の決定動作に基づいて、システム稼働中に揮発性半導体メモリ８に移され読み書きされる。このため、第１のデータが実際に不揮発性半導体メモリ９，１０に書き出される頻度は低い。しかし、第１のデータの重要性は高いため、この図２３において、メモリ管理装置１は、第１のデータを、ＳＬＣである第１のデータを不揮発性半導体メモリ９のＢ領域に書き込む。
【０２６５】
次に、SR_Colorを5、SW_Colorを5と指定されたカーネルのデータ領域は、システムが起動するたびに新たに生成、初期化する領域なので、カーネルのデータ領域における第２のデータの寿命は短いと推測される。メモリ管理装置１は、最初に第２のデータの寿命を参照する。第２のデータは、システム稼働中に必ず揮発性半導体メモリ８上に存在し、電源がオフされるとともに揮発性半導体メモリ８から消去される。したがって、第２のデータは、不揮発性半導体メモリ９，１０のメモリ領域に書き込まれることはない。
【０２６６】
次に、SR_Colorを４、SW_Colorを１と指定されたユーザプログラムの領域は、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出し頻度は低い。上記図２０に示した読み出し動作から、ユーザプログラムの領域における第３のデータは、長期にわたりアクセスされない場合にのみ不揮発性半導体メモリ９，１０のメモリ領域に書き出される。したがって、第３のデータが不揮発性半導体メモリ９，１０に書き込まれる頻度は低い。第３のデータは、カーネルのテキスト領域におけるデータと比較して重要度は低いため、図２３ではＭＬＣ領域であるＡ領域に書き込まれる。
【０２６７】
SR_Colorを４、SW_Colorを４と指定されたプログラムが動的に確保する領域における第４のデータのうち、データ寿命が短いと指定された第４のデータは、カーネルのデータ領域と同様に、システム稼働中に必ず揮発性半導体メモリ８上に存在する。メモリ管理装置１は、最初にデータの寿命を参照する。第４のデータは、システム稼働中に必ず揮発性半導体メモリ８上に存在し、電源がオフされるとともに揮発性半導体メモリ８から消去されるので不揮発性半導体メモリ９，１０のメモリ領域に書き込まれることはない。
【０２６８】
一方、データ寿命が長いと指定された第４のデータは、揮発性半導体メモリ８のメモリ領域に配置されるが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がFullに埋まった場合、揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。プログラムのテキスト領域はデータの重要度が高いため、プログラムのテキスト領域におけるデータは、ＳＬＣ領域であるＣ領域に書き込むようにしている。
【０２６９】
次にプロセスが参照するファイルとして扱われるデータについて説明する。図１５及び図１６ではファイルのデータ寿命はすべて長いと設定されている。
【０２７０】
SW_Colorを１とし、SR_Colorを３と指定されたシステムファイル類における第５のデータは、書き込み頻度が極めて低く、予測される読み出し頻度が高いことがオペレーティングシステム２７によって推測される。このとき、メモリ管理装置１は、第５のデータを揮発性半導体メモリ８のメモリ領域に配置するが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がFullに埋まった場合、揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。第５のデータの書き込み頻度は低いと判断できるのでメモリ管理装置１は第５のデータをＭＬＣ領域へ配置する。
【０２７１】
SW_Colorを３とし、SR_Colorを３と指定されたファイル類は、書き込み頻度が極めて高く、予測される読み出し頻度も高いことがオペレーティングシステム２７によって推測される。したがって、メモリ管理装置１は、SW_Colorが３であり、SR_Colorが３のファイル類におけるデータをＳＬＣ領域へ配置する。
【０２７２】
SW_Colorを１とし、SR_Colorを２と指定されたファイル類に含まれる第６のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も低いことがオペレーティングシステム２７によって推測される。第６のデータについては、ファイルとしての重要度も低いと判断されるため、メモリ管理装置１は、第６のデータをＭＬＣ領域へ配置する。
【０２７３】
SW_Colorを１とし、SR_Colorを１と指定されたファイル類に含まれる第７のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も極めて低いことがオペレーティングシステム２７によって推測される。第７のデータについては、ファイルとしての重要度も低いと判断されるため、メモリ管理装置１は、第７のデータをＭＬＣ領域へ配置する。
【０２７４】
次に、メモリ領域内での書き込み先物理アドレスの決定について説明する。
【０２７５】
上記の処理により書き込み対象のメモリ領域が決定された場合、メモリ管理装置１は、書き込み先のブロックアドレスを決定する。この場合、メモリ管理装置１は、カラーリングテーブル１４を参照し、書き込み先ブロックアドレスを適切に選択することでウェアレベリングの発生を抑え、不要な消去処理を低減する。
【０２７６】
以下にこのウェアレベリングの発生を抑制する手法の詳細について説明する。
【０２７７】
一般に、ウェアレベリングは、ブロック間でデータの入れ替えを行う。このため、ウェアレベリングが行われる頻度によって消去回数の平準化が行われる。ウェアレベリングでは、その都度ブロックに対する消去処理が実行される。ウェアレベリングの頻度を下げると、消去処理の回数は減少するが、消去ブロックの平準化が行われないというトレードオフをもつ。ブロック間の消去回数の差がウェアレベリング発動のトリガとなるアルゴリズムにおいて、ウェアレベリングの頻度は、消去回数の差の閾値に依存する。本実施の形態において、メモリ管理装置１は、ウェアレベリングによる消去処理の増加を避けつつ、平準化を行うために、データ固有のアクセス頻度情報を使用し、ブロックへの書き込み時に適切なブロックを選択する。
【０２７８】
図２４は、不揮発性半導体メモリ９，１０の任意のブロックにおける消去回数の推移の一例を示すグラフである。
【０２７９】
時間の経過により理想的な消去回数は、変化する。ＮＡＮＤ型フラッシュメモリを使用する情報処理装置では、将来的にＮＡＮＤ型フラッシュメモリが劣化し、メモリを交換する必要が生じる。メモリの交換期までＮＡＮＤ型フラッシュメモリの多数のブロックを使用するためにはウェアレベリングによる消去回数の平準化が必要である。この図２４では、ＮＡＮＤ型フラッシュメモリの任意のブロックにおける消去回数の推移を示している。
【０２８０】
すべてのブロックが図２４で示した消去回数の推移に従うためには、ウェアレベリングにおいて各ブロックの消去回数の差に対するしきい値を小さく設定する。
【０２８１】
図２５は、ウェアレベリングにおいて消去回数の差に対するしきい値を小さく設定した場合の変化の一例を示すグラフである。
【０２８２】
この図２５における破線は各ブロックの消去回数のばらつきの範囲を示している。図２５では、しきい値を小さくすることでウェアレベリングのための消去処理が増加し、ＮＡＮＤ型フラッシュメモリ全体の寿命が短くなる状態が図示されている。
【０２８３】
メモリ管理装置１は、消去回数の分散を低減させ、ウェアレベリングによる消去処理を抑えるために、データを書き込む際にデータのアクセス頻度情報に基づいた消去ブロックの選択を行う。
【０２８４】
図２６は、カラーリングテーブル１４の情報から基準となる消去回数を決定する決定表の一例を示している。
【０２８５】
メモリ管理装置１は、カラーリングテーブル１４のパラメータに基づき、基準となる消去回数を算出し、基準となる消去回数にもっとも近い消去回数をもつブロックを選択する。基準となるブロックの消去回数は、現在のメモリ領域内のブロックの最少の消去回数を最小値（使用率０％）とし、最小の消去回数にウェアレベリングのしきい値を加算した値を最大値（使用率１００％）とする。
【０２８６】
この図２６においては、カラーリングテーブル１４のSW_Colorと書き込み頻度とを用いて、基準となる消去回数が算出される。しかしながら、パラメータとしてSR_Colorや読み出し頻度を用いてウェアレベリングの抑制を行うとしてもよい。
【０２８７】
図２７は、消去可能回数に応じたブロックのグループ分けの一例を示すグラフである。
【０２８８】
図２８は、消去可能回数に応じたブロックのグループ分けの判断基準を表す図である。
【０２８９】
本実施の形態においては、メモリ領域毎に消去回数によるブロックのグループ分けが行われる。ブロックのグループ分けの結果を示す情報は、メモリ固有情報１２として保存される。なお、ブロックのグループ分けの結果を示す情報は、メモリ使用情報１１として保存されるとしてもよい。
【０２９０】
図２７の太線は、最小の消去回数の推移を示しており、破線はウェアレベリングのしきい値を表している。図２７に示すように、各ブロックはウェアレベリングのしきい値の範囲内（ばらつきの範囲内）で消去回数ごとのグループに分割される。
【０２９１】
メモリ管理装置１は、あるブロックのデータが消去され、再度書き込み可能になったとき、図２８に示すような判定表に基づいて、ブロックのグループがどこに属するか判定し、メモリ固有情報１２に記憶する。
【０２９２】
図２９は、カラーリングテーブル１４の情報に基づいてウェアレベリングにおけるブロックの属するグループの探索の一例を示す図である。
【０２９３】
メモリ管理装置１は、カラーリングテーブル１４の情報に基づいて、ブロックを探索する基準となるブロックのグループを決定する。
【０２９４】
探索基準となるブロックのグループが決定されると、図２９に示すように、メモリ管理装置１はブロックが見つかるまで、その近傍のブロックグループを探索する。この探索処理によってデータを書き込む領域の物理アドレスが決定されると、メモリ管理装置１は、データの書き込みを行い、アドレス変換情報１３を更新する。
【０２９５】
なお、メモリ管理装置１は、他のブロック探索法を用いて書き込み番地を決定するとしてもよい。例えば、メモリ管理装置１は消去回数をキーとし、消去ブロックをノードとする木構造（B-Tree B+Tree RB-Tree等）で書き込み可能なブロック（消去処理済み）を管理し、メモリ固有情報１２又はメモリ使用情報１１に保存する。メモリ管理装置１、基準となる消去回数をキーにツリーを探索し、最も近い消去回数をもつブロックを選択する。
【０２９６】
任意のプロセス３ｂによってデータが消去されると、オペレーティングシステム２７はこのデータについてのカラーリングテーブル１４の内容を消去する。メモリ管理装置１は、カラーリングテーブル１４の内容が消去されたとき、アドレス変換情報１３における消去対象データの論理アドレスに対応する物理アドレスを消去する。
【０２９７】
データが揮発性半導体メモリ８上に存在する場合は、揮発性半導体メモリ８上のデータが消去される。
【０２９８】
図３０は、本実施の形態に係るメモリ管理装置１にさらにキャッシュメモリを備えたメモリ管理装置の一例を示すブロック図である。
【０２９９】
メモリ管理装置は、上記メモリ管理装置１と同様の構成に加えて、キャッシュメモリ３３を備えている。
【０３００】
プロセッサ３ｂは、１次キャッシュメモリ４ｂ、２次キャッシュメモリ５ｂに加えて、キャッシュメモリ３３を直接アクセス可能である。
【０３０１】
メモリ管理装置３２は、１次キャッシュメモリ４ｂ、２次キャッシュメモリ５ｂ、キャッシュメモリ３３のいずれかにおいて、ページイン又はページアウトが発生した場合に、混成メインメモリ２をアクセスする。
【０３０２】
以上説明した本実施の形態においては、混成メインメモリ２の各メモリの耐久性に基づいてデータ配置が実現され、混成メインメモリ２の寿命を延ばすことができる。
【０３０３】
また、本実施の形態においては、混成メインメモリ２の各メモリの信頼性に基づいてデータ配置が実現されるため、混成メインメモリ２における致命的なデータ欠損を防止することができる。
【０３０４】
本実施の形態に係るメモリ管理装置１及び混成メインメモリ２を用いることにより、スワップをなくすことができる。
【０３０５】
本実施の形態においては、不揮発半導体メモリ９，１０がメインメモリとして用いられる。これにより、メインメモリの記憶容量を大容量化することができ、ＨＤＤ／ＳＳＤを用いた２次記憶システムを使用しなくてもよい。
【０３０６】
本実施の形態においては、メモリ階層を少なくすることができ、オペレーティングシステム２７の構造を簡単にすることができる。例えば、本実施の形態においては、１次キャッシュメモリ４ａ〜４ｃ，２次キャッシュメモリ５ａ〜５ｃ，混成メインメモリ２を同じ階層で扱うことができる。
【０３０７】
本実施の形態においては、不揮発性半導体メモリ９，１０をメインメモリとして用いるため、インスタント・オンを高速化できる。
【０３０８】
本実施の形態においては、メモリ使用情報１１、メモリ固有情報１２、データ固有情報を含むカラーリングテーブル１４を用いて混成メインメモリ２の寿命を延ばすことができ、また、高速アクセス可能なメモリ変換を行うことができる。
【０３０９】
本実施の形態においては、混成メインメモリ２からのデータ読み出しにおいて、不揮発性半導体メモリ９，１０のページサイズ、ページサイズの倍数、ブロックサイズ、ブロックサイズの倍数の読み出し単位のデータを、一旦作業メモリ１６に記憶し、この作業メモリ１６からさらに必要なデータ（例えばバイトデータ）のみをプロセッサ３ｂに送信することができる。これにより、データ読み出しにおいてバイトアクセスを可能にできる。
【０３１０】
なお、作業メモリ１６は、プロセッサ３ａ〜３ｃ内の１次キャッシュメモリ４ａ〜４ｃ，２次キャッシュメモリ５ａ〜５ｃ、情報記憶部１７を用いて実現するとしてもよい。
【０３１１】
上記各実施の形態において、書き込み頻度とは、単位時間当たりの書き込み回数としてもよい。読み出し頻度は、単位時間当たりの読み出し回数としてもよい。
【０３１２】
（第３の実施の形態）
本実施の形態のメモリ管理装置（フラットメモリ管理装置）は、ＭＰＵに具備されており、キャッシュメモリとメインメモリとについてメモリ管理を行う。メモリ管理装置は、メモリアクセスに関するメモリ階層の数を削減し、メモリアクセスの最適化を容易に実現可能にする。
【０３１３】
なお、下記の各実施の形態において、メインメモリとしては、例えば、上記各実施の形態で説明した混成メインメモリ１が用いられるとしてもよく、例えば、単に不揮発性半導体メモリが用いられるとしてもよい。
【０３１４】
ここで、下記のメインメモリとして混成メインメモリ１が用いられる場合には、下記のメモリ管理装置は、上記各実施の形態で説明したメモリ管理装置１，３２の機能を実現可能であり、さらに、各種のメモリを同一の記憶階層で扱うとする。
【０３１５】
本実施の形態においては、ＭＰＵのＭＭＵと、ＭＰＵのキャッシュコントローラと、メインメモリ用ＭＭＵとを統合したメモリ管理装置について説明する。
【０３１６】
図３１は、本実施の形態に係るメモリ管理装置の一例を示すブロック図である。なお、本実施の形態においては、メインメモリがＮＡＮＤ型フラッシュメモリの場合を例として説明するが、上述したように、例えば混成メインメモリ１，３２などのような他の記憶装置を用いることもできる。また、本実施の形態において、アクセスとは、データ（又はプログラム）の読み出しと書き込みの少なくとも一方を含むとする。
【０３１７】
ＭＰＵ１０１は、メモリ管理装置１０２を具備し、ＮＡＮＤ型フラッシュメインメモリ１０４をアクセスする。
【０３１８】
ＮＡＮＤ型フラッシュメインメモリ１０４は、内部に、アドレス変換テーブル１０５、書き換え回数データ１０６を記憶する。書き換え回数データ１０６は、メインメモリのアクセス状態を示すメインメモリ履歴データに対応する。
【０３１９】
アドレス変換テーブル１０５は、ＮＡＮＤ型フラッシュメインメモリ１０４における論理アドレスと、物理位置（Physical Location）又は物理アドレスとを関連付けたデータである。
【０３２０】
書き換え回数データ１０６は、ＮＡＮＤ型フラッシュメインメモリ１０４の各ページ又はブロックの書き換え回数を表す。
【０３２１】
メモリ管理装置１０２は、ＭＭＵ１０７、キャッシュコントローラ１０８、１次キャッシュメモリ１０３、２次キャッシュメモリ１２２、メインメモリ用ＭＭＵ１０９、アクセス履歴格納部（NAND Information Registers）１１０を具備する。また、キャッシュコントローラ１０８は、１次キャッシュメモリ１０３用の第１のキャッシュコントローラ１０８ａと２次キャッシュメモリ１２２用の第２のキャッシュコントローラ１０８ｂとを具備する。さらに、メインメモリ用ＭＭＵ１０９は、アドレス関係格納部１２３を具備する。なお、メインメモリ用ＭＭＵ１０９と、アドレス関係格納部１２３とは、分離していてもよい。
【０３２２】
例えば、メモリ管理装置１０２は、１チップ上に統合された状態で形成される。
【０３２３】
本実施の形態においては、キャッシュメモリが２つの場合を例に説明するが、キャッシュメモリの数は１つ又は３以上であってもよい。
【０３２４】
ＭＭＵ１０７は、キャッシュメモリ１０３，１２２の論理アドレスを物理アドレスに変換する。
【０３２５】
１次キャッシュメモリ１０３は、タグ格納領域１０３ａと、ライン格納領域１０３ｂとを持つ。
【０３２６】
２次キャッシュメモリ１２２は、タグ格納領域１２２ａと、ライン格納領域１２２ｂとを持つ。
【０３２７】
本実施の形態において、１次キャッシュメモリ１０３のラインサイズ及び２次キャッシュメモリ１２２のラインサイズは、ＮＡＮＤ型フラッシュメインメモリ１０４のブロックと同じサイズ（例えば２５６キロバイト）又はブロックサイズの倍数か、ＮＡＮＤ型フラッシュメインメモリ１０４のページサイズ又はページサイズの倍数となるサイズとする。これにより、ＮＡＮＤ型フラッシュメインメモリ１０４のデータを１次キャッシュメモリ１０３又は２次キャッシュメモリ１２２に移動する動作、及び１次キャッシュメモリ１０３又は２次キャッシュメモリ１２２のデータをＮＡＮＤ型フラッシュメインメモリ１０４に移動する動作をページ単位、ページサイズの整数倍単位、ブロック単位、ブロックサイズの整数倍単位で行うことができ、データの移動を簡素化できる。
【０３２８】
本実施の形態において、１次キャッシュメモリ１０３及び２次キャッシュメモリ１２２は、例えばライトバック型であるとする。また、２次キャッシュメモリ１２２は、１次キャッシュメモリ１０３よりも記憶容量が大きいが低速であるとする。
【０３２９】
第１のキャッシュコントローラ１０８ａは、１次キャッシュメモリ１０３に対するアクセスを制御する。
【０３３０】
より具体的には、第１のキャッシュコントローラ１０８ａは、１次キャッシュメモリ１０３からデータを読み出す場合には、ＭＭＵ１０７から得られた物理アドレスにそって、１次キャッシュメモリ１０３における物理アドレスに対応するデータを読み出す。また、第１のキャッシュコントローラ１０８ａは、１次キャッシュメモリ１０３にデータを書き込む場合には、ＭＭＵ１０７から得られた物理アドレスにそって、１次キャッシュメモリ１０３における物理アドレスに対応する位置に、書き込み対象のデータを書き込む。
【０３３１】
第２のキャッシュコントローラ１０８ｂは、２次キャッシュメモリ１２２に対するアクセスを制御する。
【０３３２】
より具体的には、第２のキャッシュコントローラ１０８ｂは、２次キャッシュメモリ１２２からデータを読み出す場合には、ＭＭＵ１０７から得られた物理アドレスにそって、２次キャッシュメモリ１２２における物理アドレスに対応するデータを読み出す。また、第２のキャッシュコントローラ１０８ｂは、２次キャッシュメモリ１２２にデータを書き込む場合には、ＭＭＵ１０７から得られた物理アドレスにそって、２次キャッシュメモリ１２２における物理アドレスに対応する位置に、書き込み対象のデータを書き込む。
【０３３３】
メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４に対するアクセスを制御する。
【０３３４】
メインメモリ用ＭＭＵ１０９は、必要に応じて、ＮＡＮＤ型フラッシュメインメモリ１０４のアドレス変換テーブル１０５の一部又は全部を、アドレス関係データとして、アドレス関係格納部１２３に格納する。また、メインメモリ用ＭＭＵ１０９は、必要に応じて、ＮＡＮＤ型フラッシュメインメモリ１０４の書き換え回数データ１０６の一部又は全部を、アクセス履歴データとして、アクセス履歴格納部１１０に格納する。
【０３３５】
メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４の論理アドレスを物理位置に変換する。
【０３３６】
メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４の物理位置に基づいて、ＮＡＮＤ型フラッシュメインメモリ１０４からデータの読み出しを行い、第１のキャッシュコントローラ１０８ａ又は第２のキャッシュコントローラ１０８ｂを経由して、１次キャッシュメモリ１０３又は２次キャッシュメモリ１２２にデータを記憶する。
【０３３７】
メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４から新たなデータを読み出した場合には、その新たなデータに関するアドレス変換テーブルのデータ、及び書き換え回数データを読み出し、それぞれアドレス関係格納部１２３及びアクセス履歴格納部１１０に格納する。
【０３３８】
メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４にデータを書き込む場合、アドレス関係データ及びアクセス履歴データに基づいて、ＮＡＮＤ型フラッシュメインメモリ１０４の全領域又は全ブロックを隔たりなくアクセスさせる制御、ＮＡＮＤ型フラッシュメインメモリ１０４の各領域又はブロックの書き換え回数を均等化するための制御、不良領域又は不良ブロックを避ける制御などを行う。さらに、メインメモリ用ＭＭＵ１０９は、１次キャッシュメモリ１０３又は２次キャッシュメモリ１２２に記憶されていたデータを、第１のキャッシュコントローラ１０８ａ又は第２のキャッシュコントローラ１０８ｂを経由して取得し、この取得したデータをＮＡＮＤ型フラッシュメインメモリ１０４の物理位置に基づいてＮＡＮＤ型フラッシュメインメモリ１０４に記憶する。
【０３３９】
メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４にデータが書き込まれた場合に、書き込まれたデータに関する論理アドレスと物理位置との関係に基づいてアドレス関係格納部１２３のアドレス関係データを更新し、また、アクセス履歴格納部１１０のアクセス履歴データを更新する。
【０３４０】
メインメモリ用ＭＭＵ１０９は、必要に応じて、メインメモリ用ＭＭＵ１０９に格納されているアドレス関係データと、アクセス履歴格納部１１０に記憶されているアクセス履歴データとを、それぞれＮＡＮＤ型フラッシュメインメモリ１０４のアドレス変換テーブル１０５と書き換え回数データ１０６とに対して反映する。すなわち、メインメモリ用ＭＭＵ１０９は、ＭＰＵ１０１に記憶されているアドレス関係データと、ＮＡＮＤ型フラッシュメインメモリ１０４に記憶されているアドレス変換テーブル１０５とを整合させる。また、メインメモリ用ＭＭＵ１０９は、アクセス履歴格納部１１０のアクセス履歴データと、ＮＡＮＤ型フラッシュメインメモリ１０４の書き換え回数データ１０６とを整合させる。
【０３４１】
アクセス履歴格納部１１０は、ＮＡＮＤ型フラッシュメインメモリ１０４のページ又はブロック（物理位置）のアクセス状態の履歴を格納する。本実施の形態において、アクセス履歴格納部１１０は、ＮＡＮＤ型フラッシュメインメモリ１０４における各ページ又はブロックの書き換え回数データ１０６のうち、一部又は全部のページ又はブロックについての書き換え回数データを格納する。
【０３４２】
例えば、各ブロックの書き換え回数は４バイトで記録され、各ブロックサイズは２５６キロバイトとする。この場合において、ＮＡＮＤ型フラッシュメインメモリ１０４の記憶容量が１メガバイトであるとすると、ＮＡＮＤ型フラッシュメインメモリ１０４に記憶されるブロック数は４ブロックであり、各ブロックの書き換え回数を記憶するために必要な記憶容量は１６バイトとなる。同様の場合において、ＮＡＮＤ型フラッシュメインメモリ１０４の記憶容量が１ギガバイトであるとすると、ＮＡＮＤ型フラッシュメインメモリ１０４に記憶されるブロック数は４０９６ブロックであり、各ブロックの書き換え回数を記憶するために必要な記憶容量は１６キロバイトとなる。さらに、同様の場合において、ＮＡＮＤ型フラッシュメインメモリ１０４の記憶容量が１６ギガバイトであるとすると、各ブロックの書き換え回数を記憶するために必要な記憶容量は６４キロバイトとなる。
【０３４３】
例えば、ＮＡＮＤ型フラッシュメインメモリ１０４の記憶容量が例えば１２８ギガバイトなどのように大きくなった場合、アクセス履歴格納部１１０は、ＮＡＮＤ型フラッシュメインメモリ１０４における書き換え回数データ１０６の一部を格納する。このように、アクセス履歴格納部１１０は、書き換え回数データ１０６の一部を格納するため、書き換え回数にはｐｏｓが付されている。ｐｏｓはキャッシュタグと同様の手法で使用される。
【０３４４】
メインメモリ用ＭＭＵ１０９の動作例の概略を説明する。
【０３４５】
メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４のアドレス変換テーブル１０５の一部を、アドレス関係格納部１２３に記憶し、書き換え回数データ１０６の一部をアクセス履歴格納部１１０に記憶する。
【０３４６】
メインメモリ用ＭＭＵ１０９は、キャッシュメモリ１０３，１２２に読み出し対象のデータが記憶されておらず、ＮＡＮＤ型フラッシュメインメモリ１０４からデータの読み出しを行う場合、ＮＡＮＤ型フラッシュメインメモリ１０４からデータを読み出す。そして、メインメモリ用ＭＭＵ１０９は、アドレス変換テーブル１０５のうち読み出したデータに関するデータをアドレス関係格納部１２３に記憶する。また、メインメモリ用ＭＭＵ１０９は、書き換え回数データ１０６のうち読み出したデータに関するデータをアクセス履歴格納部１１０に記憶する。
【０３４７】
ＭＰＵ１０１からＮＡＮＤ型フラッシュメインメモリ１０４へのデータの書き込みを行う場合、メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４における論理アドレスを物理位置に変換し、キャッシュライン１０３ｂ，１２２ｂにおける書き込み対象のデータをＮＡＮＤ型フラッシュメインメモリ１０４に書き込む。加えて、メインメモリ用ＭＭＵ１０９は、アドレス関係格納部１２３に記憶しているアドレス関係データと、アクセス履歴格納部１１０に記憶されているアクセス履歴データとを更新する。
【０３４８】
そして、メインメモリ用ＭＭＵ１０９は、アドレス関係格納部１２３のアドレス関係データと、アクセス履歴格納部１１０のアクセス履歴データとに基づいて、それぞれアドレス変換テーブル１０５と書き換え回数データ１０６を更新する。
【０３４９】
例えば、１次キャッシュメモリ１０３がリード・オンリー（Read Only）の場合、ＭＰＵ１０１からキャッシュライン１０３ｂへの書き込みはない。この場合、メインメモリ用ＭＭＵ１０９は、第１のキャッシュコントローラ１０８ａを用いて、ＮＡＮＤ型フラッシュメインメモリ１０４から読み出したデータを１次キャッシュメモリ１０３に上書きする。この１次キャッシュメモリ１０３に記憶されたデータの読み出しが発生すると、第１のキャッシュコントローラ１０８ａは、１次キャッシュメモリ１０３からデータを読み出す。
【０３５０】
一方、１次キャッシュメモリ１０３がリード・オンリーでない場合、ＭＰＵ１０１は、プログラムを実行して得られたデータをキャッシュメモリ１０３に書き込む。ＭＰＵ１０１からキャッシュライン１０３ｂにデータの書き込みが発生した場合、キャッシュライン１０３ｂのデータをＮＡＮＤ型フラッシュメインメモリ１０４にライトバック（Write Back）する。この場合、メインメモリ用ＭＭＵ１０９は、ライトバックされるデータをキャッシュメモリ１０３から第１のキャッシュコントローラ１０８ａ経由で読み出す。そして、メインメモリ用ＭＭＵ１０９は、アクセス履歴格納部１１０のアクセス履歴データに基づいて、ＮＡＮＤ型フラッシュメインメモリ１０４においてライトバックされる位置として、所定数より少ない書き換え回数のページ又はブロックを選択する。メインメモリ用ＭＭＵ１０９は、この選択されたページ又はブロックにライトバックされるデータを記憶し、選択されたページ又はブロックについて、ＮＡＮＤ型フラッシュメインメモリ１０４用の論理アドレスと物理位置との変換関係を示すアドレス関係データを更新し、選択されたページ又はブロックについてアクセス履歴格納部１１０の書き換え回数を更新する。
【０３５１】
その後、必要に応じて、アドレス関係格納部１２３とアクセス履歴格納部１１０の内容により、アドレス変換テーブル１０５と書き換え回数データ１０６とを更新する。
【０３５２】
図３２は、本実施の形態に係るメモリ管理装置１０２のメモリ階層の一例を示す図である。
【０３５３】
この例におけるメモリ階層は、ＭＭＵ１０７の属する階層と、メインメモリ用ＭＭＵ１０９及びキャッシュコントローラ１０８との属する階層を持つ。
【０３５４】
ＭＭＵ１０７の階層では、論理アドレスが物理アドレスに変換される。
【０３５５】
メインメモリ用ＭＭＵ１０９の属する階層では、例えば、アクセス先となるＮＡＮＤ型フラッシュメインメモリ１０４の物理位置又は物理アドレスが決定される。メインメモリ用ＭＭＵ１０９の属する階層では、書き込み回数が所定数以下（例えば最小）のページ又はブロックをアクセスさせる制御が行われる。
【０３５６】
そして、メモリ管理装置１０２は、決定された物理位置に基づいて、ＮＡＮＤ型フラッシュメインメモリ１０４をアクセスする。
【０３５７】
図３３は、本実施の形態に係るメモリ管理装置１０２を備えたＭＰＵ１０１が、ＮＡＮＤ型フラッシュメインメモリ１０４のデータ、書き換え回数データ１０６の一部、アドレス変換テーブル１０５の一部を記憶する場合の動作の一例を示すフローチャートである。
【０３５８】
ステップＳＳ１において、メインメモリ用ＭＭＵ１０９は、ＭＰＵ１０１によって使用されるＮＡＮＤ型フラッシュメインメモリ１０４のデータの一部（最初は、先頭から１ギガバイト分などでもよい）のデータを読み出す。キャッシュコントローラ１０８は、読み出されたデータを、キャッシュメモリ１０３，１２２のキャッシュライン１０３ｂ，１２２ｂに書き込む。
【０３５９】
ステップＳＳ２において、メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４に保管されている書き換え回数データ１０６の一部（キャッシュメモリ１０３，１２２に格納されたデータに対するブロックの書き換え回数など。なお、最初は、先頭から１ギガバイト分などでもよい）を、ＭＰＵ１０１内のアクセス履歴格納部１１０にコピーする。
【０３６０】
ステップＳＳ３において、メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４に保管されているアドレス変換テーブル１０５の一部（キャッシュメモリ１０３，１２２に格納されたデータに対応するブロックの論理アドレスと物理位置との関係を示すデータなど。なお、最初は、先頭から１ギガバイト分などでもよい）を、ＭＰＵ１０１内のメインメモリ用ＭＭＵ１０９のアドレス関係格納部１２３にコピーする。
【０３６１】
なお、このステップＳＳ１〜ＳＳ３は、自由な順序で実行されてよく、並列に実行されてもよい。
【０３６２】
図３４は、本実施の形態に係るメモリ管理装置１０２を備えたＭＰＵ１０１において、１次キャッシュメモリ１０３又はＮＡＮＤ型フラッシュメインメモリ１０４からデータを読み出す場合の動作の一例を示すフローチャートである。なお、２次キャッシュメモリ１２２からデータを読み出す場合についても、１次キャッシュメモリ１０３の場合と同様である。
【０３６３】
ステップＴＴ１において、ＭＭＵ１０７及びメインメモリ用ＭＭＵ１０９は、読み出し対象の論理アドレスを物理アドレスに変換する。
【０３６４】
読み出し対象の物理アドレスが１次キャッシュメモリ１０３を示す場合、ステップＴＴ２ａにおいて、第１のキャッシュコントローラ１０８ａは、物理アドレスに基づいて１次キャッシュメモリ１０３から読み出し対象のデータを読み出す。
【０３６５】
読み出し対象の物理アドレス（物理位置）がＮＡＮＤ型フラッシュメインメモリ１０４を示す場合、ステップＴＴ２ｂにおいて、メインメモリ用ＭＭＵ１０９は、物理アドレスに対応するデータを、ＮＡＮＤ型フラッシュメインメモリ１０４から読み出す。
【０３６６】
ステップＴＴ３ｂにおいて、メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４から読み出したデータを、第１のキャッシュコントローラ１０８ａ経由で、１次キャッシュメモリ１０３に上書きする。
【０３６７】
なお、メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４から新たに読み出したデータに対応するアドレス関係データ及びアクセス履歴データがそれぞれアドレス関係格納部及びアクセス履歴格納部に記憶されていない場合、ＮＡＮＤ型フラッシュメインメモリ１０４のアドレス変換テーブル１０５及び書き換え回数データ１０６に基づいてアドレス関係格納部及びアクセス履歴格納部に新たに読み出したデータに対応するデータを記憶する。
【０３６８】
図３５は、本実施の形態に係るメモリ管理装置１０２を備えたＭＰＵ１０１から、１次キャッシュメモリ１０３のキャッシュライン１０３ｂへの上書きが発生し、さらに１次キャッシュメモリ１０３のデータをＮＡＮＤ型フラッシュメインメモリ１０４に記憶する場合の動作の一例を示すフローチャートである。なお、２次キャッシュメモリ１２２への上書きが発生した場合についても、この１次キャッシュメモリ１０３の場合と同様である。
【０３６９】
ステップＵＵ１において、ＭＭＵ１０７は、論理アドレスから物理アドレスへの変換を行う。
【０３７０】
ステップＵＵ２において、第１のキャッシュコントローラ１０８ａは、物理アドレスに応じて、書き込み対象のデータを、１次キャッシュメモリ１０３に記憶する。
【０３７１】
ステップＵＵ３において、メインメモリ用ＭＭＵ１０９は、アドレス関係格納部１２３のアドレス関係データと、アクセス履歴格納部１１０のアクセス履歴データとに基づいて、書き換え回数がある値より少ないブロックの位置又は一番書き換えの少ないブロックの位置を、ＮＡＮＤ型フラッシュメインメモリ１０４における書き込み位置として選択する。
【０３７２】
ステップＵＵ４において、メインメモリ用ＭＭＵ１０９は、ＮＡＮＤ型フラッシュメインメモリ１０４における選択された位置に、書き込み対象のデータを記憶する。
【０３７３】
ステップＵＵ５において、メインメモリ用ＭＭＵ１０９は、上書き後のキャッシュライン１０３ｂに対応するように、アドレス関係格納部１２３のアドレス関係データを更新し、アクセス履歴格納部１１０のアクセス履歴データを更新する。
【０３７４】
ステップＵＵ６において、メインメモリ用ＭＭＵ１０９は、メインメモリ用ＭＭＵ１０９に格納されているアドレス関係データと整合するように、ＮＡＮＤ型フラッシュメインメモリ１０４のアドレス変換テーブル１０５を更新し、また、アクセス履歴格納部１１０に格納されているアドレス履歴データと整合するように、ＮＡＮＤ型フラッシュメインメモリ１０４の書き換え回数データ１０６を更新する。例えば、ＮＡＮＤ型フラッシュメインメモリ１０４の書き換え回数データの更新は、ＭＰＵ１０１の電源が切られるとき、又は、ＭＰＵ１０１のアクセス履歴格納部１１０の書き換え時に、実行される。
【０３７５】
本実施の形態において、メモリ管理装置１０２は、書き換え回数に基づいて書き換えを行うブロックの物理位置を選択している。しかしながら、これに代えて、メモリ管理装置１０２は、不良領域又は不良ブロックを避ける制御、ＮＡＮＤ型フラッシュメインメモリ１０４の全領域又は全ブロックを隔たりなくアクセスさせる制御、アクセス先の領域又はブロックの位置が分散されるようにする制御を行うとしてもよい。この場合、アクセス履歴格納部１１０には、ＮＡＮＤ型フラッシュメインメモリ１０４に記憶されている不良領域又は不良ブロックの発生位置、ＮＡＮＤ型フラッシュメインメモリ１０４の書き換え位置の分布などのデータが記憶される。また、メモリ管理装置１０２は、各種の制御を自由に組み合わせて、書き換えを行う領域又はブロックの位置を選択するとしてもよい。
【０３７６】
本実施の形態において、メモリ管理装置１０２は、キャッシュメモリ１０３のデータ入れ替え時に、ＮＡＮＤ型フラッシュメインメモリ１０４のガーベージコレクション処理又は消去のための制御を行うとしてもよい。
【０３７７】
本実施の形態において、メインメモリ用ＭＭＵ１０９のアドレス関係格納部１２３とアクセス履歴格納部１１０とのうち、少なくとも一方について、二次キャッシュメモリを用いてデータを格納するとしてもよい。すなわち、アドレス関係格納部１２３に記憶されているアドレス関係データは、２次キャッシュメモリ１２２に格納されるとしてもよい。また、アクセス履歴格納部１１０に記憶される書き込み回数などを含むアクセス履歴データは、２次キャッシュメモリ１２２に格納されるとしてもよい。
【０３７８】
本実施の形態に係るＭＰＵ１０１のメモリ管理装置１０２においては、アクセス履歴格納部１１０に格納されているデータを用いて書き込みを行う対象となるＮＡＮＤ型フラッシュメインメモリ１０４の物理位置を選択し、ライトバックするアルゴリズムを採用し、このアルゴリズムを実行するプログラムを用いることができる。例えば、書き換え回数の多い領域又はブロックの書き換えを避けるなどのような高度なアルゴリズムを用いることができる。
【０３７９】
以上説明した本実施の形態に係るメモリ管理装置１０２においては、ＭＰＵ１０１内で、ＭＭＵ１０７、第１のキャッシュコントローラ１０８ａ、第１のキャッシュコントローラ１０８ｂ、キャッシュメモリ１０３、キャッシュメモリ１２２、メインメモリ用ＭＭＵ１０９、アクセス履歴格納部１１０が統合された構成が採用されている。すなわち、本実施の形態においては、ＮＡＮＤ型フラッシュメインメモリ１０４のメモリマッピング管理がＭＰＵ１０１のメモリ管理装置１０２で実行されるアーキテクチャが実現されている。
【０３８０】
これにより、メモリ階層において、オーバーヘッドの大きい階層を削除することができる。
【０３８１】
本実施の形態においては、一般的なＮＡＮＤ型フラッシュメモリに備えられているメモリコントローラの動作を、ＭＰＵ１０１側で実行する。このように、ＭＰＵの動作とメモリコントローラの動作とを組み合わせてＭＰＵ１０１で実行することで、メモリ制御を協調させることができる。
【０３８２】
本実施の形態においては、多層化されていたメモリ階層を単純化することができ、アクセスに必要な時間、製造時に必要な時間、製造時に必要な費用などの様々なコストを削減することができる。
【０３８３】
本実施の形態においては、メモリ階層がシンプルになるため、プログラマはどこの階層でＭＭＵ変換、キャッシュメモリの置き換えが発生するかを把握することが容易であり、プログラム・オプティマイズを容易に行うことができる。
【０３８４】
本実施の形態においては、ＭＰＵ１０１のキャッシュ動作とメインメモリのアクセス動作との間で最適化を容易に実現することができる。
【０３８５】
従来の不揮発性メモリに対しては、この不揮発性メモリへのアクセスを制御するメモリコントローラがＭＰＵと別に用意されていた。そして、従来において、ＭＰＵが不揮発性メモリにアクセスする場合には、ＭＰＵは、Ｉ／Ｏインタフェースを介してメモリコントローラにデータ転送を行い、メモリコントローラは、ＭＰＵから受信したデータに基づいて不揮発性メモリへのアクセス制御を行っていた。
【０３８６】
これに対して、本実施の形態においては、不揮発性メモリがメインメモリ領域に配置され、オペレーティングシステムは、メインメモリと同じレベルで不揮発性メモリにアクセス可能である。
【０３８７】
これにより、本実施の形態においては、Ｉ／Ｏインタフェースを介したデータの転送の必要がなく、高速なアクセスが可能であり、安価な不揮発性メモリをメインメモリとして用いることができる。
【０３８８】
（第４の実施の形態）
本実施の形態においては、上記第３の実施の形態の変形例について説明する。
【０３８９】
図３６は、本実施の形態に係るメモリ管理装置の一例を示すブロック図である。
【０３９０】
ＭＰＵ１１１には、本実施の形態に係るメモリ管理装置１１２が備えられている。統合ＭＭＵ１１３は、上記第３の実施の形態に係るＭＭＵ１０７とメインメモリ用ＭＭＵ１０９とを統合した機能を実現する。
【０３９１】
本実施の形態において、１次キャッシュメモリ１０３のタグ及び２次キャッシュメモリ１２２のタグは、プロセスＩＤと論理アドレスとで、それぞれ１次キャッシュメモリ１０３及び２次キャッシュメモリ１２２を管理するために用いられる。
【０３９２】
本実施の形態においては、プロセッサであるＭＰＵ１１１の統合ＭＭＵ１１３により、１次キャッシュメモリ１０３、２次キャッシュメモリ１２２、ＮＡＮＤ型フラッシュメインメモリ１０４のメモリマッピング管理が行われ、各種メモリの一括管理が行われる。
【０３９３】
図３７は、本実施の形態に係るメモリ管理装置１１２のメモリ階層の一例を示す図である。
【０３９４】
この例におけるメモリ階層は、統合ＭＭＵ１１３とキャッシュコントローラ１０８とが同じ階層に属している。メモリ管理装置１１２は、１次キャッシュメモリ１０３及び２次キャッシュメモリ１２２に対するアドレス変換と、ＮＡＮＤ型フラッシュメインメモリ１０４に対するアドレス変換とを統合し、同等のメモリ階層で扱う。メモリ管理装置１１２は、ある基準にそって、キャッシュメモリ１０３、キャッシュメモリ１２２、ＮＡＮＤ型フラッシュメインメモリ１０４のどの領域をアクセスするか決定する。
【０３９５】
このメモリ階層では、論理アドレスがＮＡＮＤ型フラッシュメインメモリ１０４の物理位置に変換される場合、書き込み回数が所定数以下の領域又はブロックをアクセスさせる制御が行われる。
【０３９６】
そして、メモリ管理装置１１２は、決定された物理位置に基づいて、ＮＡＮＤ型フラッシュメインメモリ１０４をアクセスする。
【０３９７】
以上説明した本実施の形態においては、上記第３の実施の形態に係るＭＭＵ１０７とメインメモリ用ＭＭＵ１０９とを統合することにより、構成がシンプルになり、アクセスに必要な時間コストや製造時に必要な経済コストなどの様々なコストを削減できる。
【０３９８】
統合ＭＭＵ１１３を用いることにより、１次キャッシュメモリ１０３及び２次キャッシュメモリ１２２に対するアドレス変換と、ＮＡＮＤ型フラッシュメインメモリ１０４に対するアドレス変換とを統合することができる。例えば、あるプロセスに関する記憶内容を、なるべくＮＡＮＤ型フラッシュメインメモリ１０４内の近い位置に記憶することにより、高速アクセスが可能となる。また、例えば、書き換え回数の少ない領域又はブロックだけを選んで一つのプロセスに割り当てることができる。
【０３９９】
（第５の実施の形態）
本実施の形態においては、上記第３又は第４の実施の形態に係るメモリ管理装置１０２，１１２の変形例について説明する。
【０４００】
図３８は、上記図３１に示す第３の実施の形態に係るメモリ管理装置１０２の変形例を示す図である。
【０４０１】
上記第３の実施の形態においては、物理位置に基づくＮＡＮＤ型フラッシュメインメモリ１０４へのアクセスは、メインメモリ用ＭＭＵ１０９によって実行している。しかしながら、物理位置に基づくＮＡＮＤ型フラッシュメインメモリ１０４へのアクセスは、キャッシュコントローラ１０８が行うとしてもよい。
【０４０２】
この場合、メインメモリ用ＭＭＵ１０９は、論理アドレスを物理位置に変換する制御を行い、このメインメモリ用ＭＭＵ１０９で選択された物理位置に基づいて、キャッシュコントローラ１０８は、ＮＡＮＤ型フラッシュメインメモリ１０４をアクセスする。なお、本実施の形態において、キャッシュコントローラ１０８は、メインメモリ用ＭＭＵ１０９に代わって、ＮＡＮＤ型フラッシュメインメモリ１０４のアドレス変換テーブル１０５の読み出し及び更新、書き換え回数データ１０６の読み出し及び更新をするとしてもよい。
【０４０３】
図３９は、上記図３６に示す第４の実施の形態に係るメモリ管理装置１１２の変形例を示す図である。
【０４０４】
上記第４の実施の形態においては、物理位置に基づくＮＡＮＤ型フラッシュメインメモリ１０４へのアクセスは、統合ＭＭＵ１１３によって実行している。しかしながら、物理位置に基づくＮＡＮＤ型フラッシュメインメモリ１０４へのアクセスは、キャッシュコントローラ１０８が行うとしてもよい。
【０４０５】
この場合、統合ＭＭＵ１１３は、論理アドレスを物理位置に変換する制御を行い、この統合ＭＭＵ１１３で選択された物理位置に基づいて、キャッシュコントローラ１０８は、ＮＡＮＤ型フラッシュメインメモリ１０４をアクセスする。なお、本実施の形態において、キャッシュコントローラ１０８は、ＮＡＮＤ型フラッシュメインメモリ１０４のアドレス変換テーブル１０５の読み出し及び更新、書き換え回数データ１０６の読み出し及び更新をするとしてもよい。
【０４０６】
（第６の実施の形態）
本実施の形態においては、上記第３乃至第５の実施の形態に係るメモリ管理装置１０２，１１２の適用例に付いて説明する。
【０４０７】
図４０は、本実施の形態に係るメモリ管理装置の適用例を示すブロック図である。
【０４０８】
例えば、ゲーム機や、カーナビゲーションシステムでは、ディスクドライブにより読み出されたデータ又はプログラムがメインメモリに一度書き込まれ、その後、このメインメモリに書き込まれたデータ又はプログラムが多回数リードされる。本実施の形態において、メモリ管理装置１２０は、ゲーム機に適用される場合について説明するが、カーナビゲーションシステムなどの他の装置に適用される場合も同様である。メモリ管理装置１２０の代わりに、上記メモリ管理装置１０２，１１２を用いるとしてもよい。
【０４０９】
ポータブル・ゲーム・コンソール・プロセッサ１１４は、グラフィクス・プロセッサ１１５とプロセッサ１１６とを具備する。
【０４１０】
グラフィクス・プロセッサ１１５、プロセッサ１１６、２次キャッシュメモリ１１７、ＮＡＮＤ型フラッシュメインメモリ１０４、ディスクドライブ１１８はバス１１９に接続されている。
【０４１１】
プロセッサ１１６は、１次キャッシュメモリ１０３、２次キャッシュメモリ１１７をアクセスするための２次キャッシュタグ１２１、キャッシュコントローラ１０８、統合ＭＭＵ１１３を具備する。
【０４１２】
さらに、プロセッサ１１６は、書き換え回数格納部１１０を具備するが、この図４０では省略している。なお、プロセッサ１１６は、１次キャッシュメモリ１０３又は２次キャッシュメモリ１１７を、書き換え回数格納部１１０として用いるとしてもよい。
【０４１３】
キャッシュコントローラ１０８は、１次キャッシュメモリ１０３、２次キャッシュメモリ１１７へのアクセスを制御する。２次キャッシュメモリ１１７には、例えば、ＤＲＡＭを用いることができる。本実施の形態において、２次キャッシュメモリ１１７は、ポータブル・ゲーム・コンソール・プロセッサ１１４と分離している。
【０４１４】
２次キャッシュメモリ１１７に対するバンド幅は、ＮＡＮＤ型フラッシュメインメモリ１０４の１０倍程度とする。ディスクドライブ１１８としては、例えば、光ディスクドライブを用いることができる。
【０４１５】
本実施の形態において、ＮＡＮＤ型フラッシュメインメモリ１０４への書き込みは、ゲームカートリッジの交換時とし、他の時点ではＮＡＮＤ型フラッシュメインメモリ１０４はリード・オンリーで利用されるとする。頻繁に書き込まれるデータ又はプログラムコード、頻繁に読み出されるデータ又はプログラムコードは、２次キャッシュメモリ１７に格納される。さらに頻繁に読み出されるデータ又はプログラムコードは、１次キャッシュメモリ１０３に格納される。
【０４１６】
なお、例えば、１次キャッシュメモリ１０３又は２次キャッシュメモリ１１７に記憶されているデータ又はプログラムコードのうち、使用頻度の低いデータ又はプログラムコードをＮＡＮＤ型フラッシュメインメモリ１０４に書き込み、ＮＡＮＤ型フラッシュメインメモリ１０４に記憶されているデータ又はプログラムコードのうち、使用頻度の高いデータ又はプログラムコードを１次キャッシュメモリ１０３又は２次キャッシュメモリ１１７に記憶するとしてもよい。
【０４１７】
本実施の形態では、例えば、１次キャッシュメモリ１０３は６４キロバイト程度であり、２次キャッシュメモリ１１７は１６〜１２８メガバイト程度であり、ＮＡＮＤ型フラッシュメインメモリ１０４は１ギガバイト程度であるとする。
【０４１８】
例えば、グラフィクス・プロセッサ１１５の処理能力は、１／１０バンド幅のＮＡＮＤ型フラッシュメインメモリ１０４の速度とつりあうか、その２〜３倍程度の能力とする。使用頻度の低いデータは、ＮＡＮＤ型フラッシュメインメモリ１０４から読み出し、使用頻度の高いデータは、１次キャッシュメモリ１０３又は２次キャッシュメモリ１１７から読み出すとする。
【０４１９】
本実施の形態においては、キャッシュ入れ替え（キャッシュミスなど）時に、ＮＡＮＤ型フラッシュメインメモリ１０４のガーベージコレクション処理やイレースを行う、などのような最適化を実現することができるプロセッサ１１６を提供することができ、高度な最適化を行うことができる。
【０４２０】
なお、２次キャッシュメモリ１１７のエントリーサイズを１メガバイト程度とすると、ＮＡＮＤ型フラッシュメインメモリ１０４との相性がよくなる。
【０４２１】
本実施の形態においては、例えば２重に仮想メモリ変換が行われてオーバーヘッドが大きくなることを防止できる。
【０４２２】
本実施の形態においては、プロセッサ１１６に統合ＭＭＵ１１３が備えられることにより、１次キャッシュメモリ１０３と二次キャッシュメモリ１１７とＮＡＮＤ型フラッシュメインメモリ１０４とを一括管理することができる。
【０４２３】
そして、本実施の形態では、レジューム時に保存するデータ量を削減することができる。
【０４２４】
本実施の形態においては、ＮＡＮＤ型フラッシュメインメモリ１０４にデータ又はプログラムを記憶することにより、ディスクドライブ１１８へのアクセスを削減でき、待ち時間を削減でき、ユーザの操作性及び満足度を向上させることができる。
【０４２５】
本実施の形態においては、二次キャッシュメモリ１１７（ＤＲＡＭ）よりもメモリ単価の安いＮＡＮＤ型フラッシュメインメモリ１０４を用いることにより、より多くのデータ又はプログラムを高速にアクセスすることができる。
【０４２６】
（第７の実施の形態）
本実施の形態においては、プロセッサとメインメモリとの間に備えられたメモリ管理装置について説明する。
【０４２７】
図４１は、本実施の形態に係るメモリ管理装置の一例を示すブロック図である。
【０４２８】
本実施の形態に係るメモリ管理装置１２４は、システムバス１３０経由で、複数のプロセッサ（例えばCodec IP、Graphic IPを含む）１２５１〜１２５４と接続されている。メモリ管理装置１２４は、マルチプロセッサ構成に対して適用される。また、メモリ管理装置１２４は、例えばＮＡＮＤ型フラッシュメモリなどのような不揮発性のメインメモリ１２６と接続されている。なお、本実施の形態において、プロセッサの数は１又は２以上で自由に変更可能である。
【０４２９】
メインメモリ１２６では、書き込み及び読み込みは、ページと呼ばれる複数ビット単位で行われる。消去は、ブロックと呼ばれる、複数のページをまとめた単位で一括して行われる。
【０４３０】
複数のプロセッサ１２５１〜１２５４のうちのいくつかでは、論理アドレスを含むプロセスが実行されている。この例では、プロセッサ１２５１，１２５２，１２５４でプロセス１２７１，１２７２，１２７４が実行されている。なお、プロセス１２７１，１２７２，１２７４は、オペレーティングシステムであってもよい。
【０４３１】
複数のプロセッサ１２５１〜１２５４のそれぞれは、１次キャッシュメモリ１２８１〜１２８４、２次キャッシュメモリ１２９１〜１２９４を具備する。
【０４３２】
メモリ管理装置１２４は、ウェアレベリングと、論理アドレスから物理アドレスへの変換を行う。
【０４３３】
メモリ管理装置１２４は、メインメモリ１２６のページ単位、ページサイズの整数倍単位、ブロック単位、ブロックサイズの整数倍単位でウェアレベリングを行う。ウェアレベリングカウンタは、メインメモリ１２６のリダンダンシ領域１２６ａに記憶される。リダンダンシ領域１２６ａは、メインメモリ１２６のページ又はブロック毎に設けられている冗長領域である。メモリ管理装置１２４は、メモリ空間にマッピングを行う場合に、ウェアレベリングを考慮してメモリ確保を行う。
【０４３４】
メモリ管理装置１２４は、リムーバブルメモリもメインメモリとして扱い、メモリ空間にマッピングする。
【０４３５】
このメモリ管理装置１２４は、複数のプロセッサ１２５１〜１２５４側というよりむしろメインメモリ１２６側に備えられている。しかしながら、メモリ管理装置１２４は、複数のプロセッサ１２５１〜１２５４側に備えられるとしてもよい。
【０４３６】
メモリ管理装置１２４は、命令とデータとで、ページサイズを切り換える。例えば、命令用のページサイズは１６キロバイトなどのように小さいサイズとし、データ用のページサイズは５１２キロバイトなどのように大きいサイズとする。
【０４３７】
メインメモリ１２６は、メモリ管理装置１２４のページサイズ（プロセス又はＯＳ）と同じメモリページサイズ又はメモリ管理装置１２４のページサイズの倍数となるメモリページサイズを持つ。
【０４３８】
１次キャッシュメモリ１２８１〜１２８４及び２次キャッシュメモリ１２９１〜１２９４と、メインメモリ１２６との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのページ単位、ページサイズの整数倍単位、ブロック単位（例えば、256 kilobyte 〜 512 kilobyte）、又は、ブロックサイズの整数倍単位で行われる。
【０４３９】
１次キャッシュメモリ１２８１〜１２８４に対するアクセス、及び２次キャッシュメモリ１２９１〜１２９４に対するアクセスは論理アドレスに基づいて行われる。システムバス１３０上でも、論理アドレスが用いられる。
【０４４０】
統一的なメモリ管理装置１２４は、複数のプロセッサ１２５１〜１２５４に対して、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、メインメモリ１２６のページ単位、ページサイズの整数倍単位、ブロック単位、又は、ブロックサイズの整数倍単位でのウェアレベリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を総合して行う。
【０４４１】
本実施の形態においては、図４２に示す形式のシステム論理アドレス１３１が用いられる。このシステム論理アドレス１３１は、プロセッサＩＤとプロセスＩＤ、プロセス内論理アドレスを含む。なお、プロセッサＩＤとプロセスＩＤとのうちの少なくとも一つは変換され（例えばハッシングなどを用いてＩＤの長さが短くされ）、システム論理アドレス１３１は、変換後の内容を含むとしてもよい。例えば、プロセッサＩＤとプロセスＩＤをハッシングで変換し、システム論理アドレス１３１は、このハッシングで変換されたビットとプロセス内論理アドレスとを含むとしてもよい。
【０４４２】
メインメモリ１２６は、システム全体で単一のページテーブル１２６ｂを記憶する。すなわち、メインメモリ１２６は、プロセス１２７１，１２７２，１２７４毎のページテーブルを持つのではなく、プロセス１２７１，１２７２，１２７４全体で統一したページテーブル１２６ｂを持つ。
【０４４３】
本実施の形態においては、メインメモリ１２６にハードディスクドライブ（ＨＤＤ）と同じ程度の容量を持つメインメモリ１２６を使用する。この場合、物理メモリよりも大きなメモリ空間を使用するために２次記憶（スワップアウト）を使用する必要はない。従来においては、物理メインメモリが例えばＤＲＡＭであって記憶容量が１ＧＢ程度であるが、プロセス毎に４ＧＢの論理メモリ空間を使いたい場合に、より記憶容量の大きいハードディスクドライブ上に２次記憶領域を確保し、スワップイン／スワップアウトを行う必要があった。しかしながら、本実施の形態では、メインメモリ１２６がハードディスクドライブと同レベル以上の記憶容量を持つため、２次記憶を用いる必要がない。
【０４４４】
したがって、装置構成及び動作をシンプルにすることができる。
【０４４５】
本実施の形態においては、インスタントＯＮ／ＯＦＦを行うことができ、レジュームなどを高速化することができる。
【０４４６】
従来においては、実行する前にファイルをロードする必要があった。これに対して、本実施の形態においては、キャッシュメモリ１２８１〜１２８４，１２９１〜１２９４又はメインメモリ１２６上の実行アドレスにジャンプするのみでよく、実行する前にファイルをロードする必要がない。
【０４４７】
（第８の実施の形態）
本実施の形態においては、上記第７の実施の形態の変形例について説明する。
【０４４８】
図４３は、本実施の形態に係る記憶装置の一例を示すブロック図である。
【０４４９】
本実施の形態に係る記憶装置において、複数のメモリ管理装置１２４１，１２４２は、ネットワーク１３３経由で、複数のプロセッサ（Codec IP、Graphic IPを含む）１２５１〜１２５４と接続されている。メモリ管理装置１２４１，１２４２は、例えばＮＡＮＤ型フラッシュメモリなどのような不揮発性の複数のメインメモリ１２６１，１２６２と接続されている。
【０４５０】
なお、メモリ管理装置の数、メインメモリの数は、自由に変更可能である。
【０４５１】
メインメモリ１２６１は、上記第７の実施の形態におけるメインメモリ１２６と同様の特徴を持ち、ウェアレベリングカウンタを記憶するリンダンシ領域１２６１ａ、プロセス１２７１，１２７２，１２７４全体で統一したページテーブル１２６１ｂを持つ。メインメモリ１２６２も、このメインメモリ１２６１と同様の特徴を持つ。
【０４５２】
本実施の形態で用いられる論理アドレス１３４は、図４４に示すように、ネットワーク１３３のＩＰアドレス又はＩＰｖ６アドレス、プロセッサＩＤとプロセスＩＤ、プロセス内論理アドレスを含む。なお、各アドレス及びＩＤのうちの少なくとも一つは、変換され（例えばハッシングなどを用いてＩＤの長さが短くされ）、論理アドレス１３４は、変換後の内容を含むとしてもよい。例えば、ＩＰアドレス又はＩＰｖ６アドレス、プロセッサＩＤとプロセスＩＤをハッシングで変換し、論理アドレス１３４は、このハッシングで変換されたビットとプロセス内論理アドレスとを含むとしてもよい。
【０４５３】
メインメモリ１２６１，１２６２は、メモリ管理装置１２４１，１２４２のページサイズと同じメモリページサイズ又はＭＭＵ１２４１，１２４２のページサイズの整数倍となるメモリページサイズを持つ。
【０４５４】
１次キャッシュメモリ１２８１〜１２８４及び２次キャッシュメモリ１２９１〜１２９４と、メインメモリ１２６１，１２６２との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのページ単位、ページサイズの整数倍単位、ブロック単位（例えば、256 kilobyte 〜 512 kilobyte）、又は、ブロックサイズの整数倍単位で行われる。
【０４５５】
本実施の形態において、１次キャッシュメモリ１２８１〜１２８４に対するアクセス、及び２次キャッシュメモリ１２９１〜１２９４に対するアクセスは、論理アドレスに基づいて実行される。ネットワーク１３３上でも、論理アドレスが用いられる。
【０４５６】
統一的なメモリ管理装置１２４１，１２４２は、複数のプロセッサ１２５１〜１２５４に対して、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、不揮発性のメインメモリ１２６１，１２４２のページ単位、ページサイズの整数倍単位、ブロック単位、又は、ブロックサイズの整数倍単位でのウェアレベリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を総合して行う。
【０４５７】
本実施の形態においては、ネットワーク１３３経由の広大なメモリ空間において上記第７の実施の形態と同様の効果を得ることができる。
【０４５８】
（第９の実施の形態）
本実施の形態においては、上記第７及び第８の実施の形態の変形例について説明する。以下においては、上記第７の実施の形態の変形例について説明するが、上記第８の実施の形態についても同様に変形可能である。
【０４５９】
図４５は、本実施の形態に係るメモリ管理装置の一例を示すブロック図である。
【０４６０】
複数のプロセッサ１３５１〜１３５４は、システムバス１３０経由で、メインメモリ１２６と接続されている。なお、本実施の形態において、プロセッサの数は自由に変更可能である。
【０４６１】
複数のプロセッサ１３５１〜１３５４のうちのいくつかでは、論理アドレスを含むプロセスが実行されている。この例では、プロセッサ１３５１，１３５２，１３５４でプロセス１２７１，１２７２，１２７４が実行されている。プロセス１２７１，１２７２，１２７４はオペレーティングシステムであってもよい。
【０４６２】
複数のプロセッサ１３５１〜１３５４のそれぞれは、１次キャッシュメモリ１３６１〜１３６４、２次キャッシュメモリ１３７１〜１３７４、メモリ管理装置１３８１〜１３８４を具備する。
【０４６３】
メモリ管理装置１３８１〜１３８４は、ウェアレベリングと、論理アドレスから物理アドレスへの変換を行う。メモリ管理装置１３８１〜１３８４は、複数のプロセッサ１３５１〜１３５４側に備えられている。
【０４６４】
メインメモリ１２６は、メモリ管理装置１３８１〜１３８４のページサイズと同じメモリページサイズ又はメモリ管理装置１３８１〜１３８４のページサイズの整数数となるメモリページサイズを持つ。
【０４６５】
１次キャッシュメモリ１３６１〜１３６４及び２次キャッシュメモリ１３７１〜１３７４と、メインメモリ１２６との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのブロック（ページの整数倍）単位（例えば、256 kilobyte 〜 512 kilobyte）で行われる。
【０４６６】
本実施の形態において、１次キャッシュメモリ１３６１〜１３６４に対するアクセス、及び２次キャッシュメモリ１３７１〜１３７４に対するアクセスでは物理アドレスが用いられる。システムバス１３０上では、論理アドレスが用いられる。
【０４６７】
複数のプロセッサ１３５１〜１３５４毎に備えられるメモリ管理装置１３８１〜１３８４は、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、メインメモリ１２６のページ単位、ページサイズの整数倍単位又はブロック単位でのウェアレベリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を行う。
【０４６８】
以上説明した本実施の形態においては、メモリ管理装置１３８１〜１３８４をプロセッサ１３５１〜１３５４側に設けた場合であっても、上記第７と同様の効果を得ることができる。
【０４６９】
（第１０の実施の形態）
本実施の形態では、上記第７の実施の形態の詳細について説明する。
【０４７０】
図４６は、本実施の形態に係るメモリ管理装置１２４の構成の一例を示すブロック図である。
【０４７１】
ＮＡＮＤ型フラッシュメインメモリ１２６は、物理アドレスに対応する物理ブロック１３９、ページテーブル１２６ｂ、メモリ使用情報１４０、メモリ固有情報１４１を備える。
【０４７２】
各プロセッサ１２５１〜１２５４の１次キャッシュメモリ１２８１〜１２８４、２次キャッシュメモリ１２９１〜１２９４のキャッシュラインサイズと、ＮＡＮＤ型フラッシュメインメモリ１２６のブロックサイズ又はページサイズの整数倍とは、同じサイズであり、データ転送の効率化が図られている。
【０４７３】
ＮＡＮＤ型フラッシュメインメモリ１２６において、各種のデータは、例えばデータＤ１のように複数の物理ブロック１３９にまたがって存在するとしてもよい。また、例えば複数のデータＤ１，Ｄ２のように、複数のデータが一つの物理ブロック１３９に存在するとしてもよい。
【０４７４】
そして、各データＤ１，Ｄ２は、固有の読み書き頻度情報Ｅ１，Ｅ２を持つとしてもよい。例えば、各データＤ１，Ｄ２は、スタティック情報とダイナミック情報とのうちの少なくとも一方を備えている。スタティック情報は、当初から決まっている値である。ダイナミック情報は、実際にそのデータが書き換えられた回数、読み出された回数を含む。
【０４７５】
例えば、デジタルカメラの画像データのスタティック情報として、撮影された直後に２時間に１回読み出し及び書き込みが行われる旨の情報、撮影されて３日経過後に２週間に一度読み出しが行われ、書き込みは行われない旨の情報、などが記憶される。また、例えば、ウェブブラウザのキャッシュ情報のスタティック情報として、数分に１回書き込み及び読み出しが行われる旨の情報、ある程度以上アクセスされるサイトの情報が１日に１回書き込まれる旨の情報、周期性のアクセスパターンがある場合にはその情報が書き込まれる旨の情報、所定の時間において書き込みが多い旨の情報、などが記憶される。
【０４７６】
スタティック情報は、様々なデータの種類に対して、効果的な値を設定する必要がある。このスタティック情報の設定ファイルは、ネットワーク上で共有されるとしてもよい。
【０４７７】
ページテーブル１２６ｂは、全システムで一つあればよい。あるいは、ページテーブル１２６ｂはなくてもよい。
【０４７８】
メモリ使用情報１４０は、各メモリ領域の読み書き回数と、各データの読み書き回数を含む。より詳細に説明すると、例えば、メモリ使用情報１４０は、各メモリ領域（ページ又はブロック）について、書き換え回数、読み出し回数、この領域内に存在するデータ情報（個数、種類、各データ固有の読み出し回数、書き換え回数などを含む）を具備する。
【０４７９】
メモリ固有情報１４１は、ＮＡＮＤ型フラッシュメインメモリ１２６のページサイズ、ブロックサイズ、書き換え可能回数、読み出し可能回数などを含む。より詳細に説明すると、例えば、メモリ固有情報１４１は、ＮＡＮＤ型フラッシュメインメモリ１２６のページサイズ、ブロックサイズ、全記憶容量、ＳＬＣ（Single Level Cell）領域情報（ブロック位置、サイズ、読み出し可能回数（読み出し可能回数の予測値でもよい）、書き込み可能回数（書き込み可能回数の予測値でもよい）などを含む）、ＭＬＣ（Multi Level Cell）領域情報（ブロック位置、サイズ、読み出し可能回数、書き込み可能回数などを含む）を具備する。
【０４８０】
メモリ管理装置１２４は、各プロセス（ＯＳでもよい）用論理アドレスを物理アドレスに変換し、ＮＡＮＤ型フラッシュメインメモリ１２６用の論理アドレスを物理アドレスに変換する。
【０４８１】
また、メモリ管理装置１２４は、データＤ１，Ｄ２固有の読み書き頻度情報Ｅ１，Ｅ２、メモリ使用情報１４０、メモリ固有情報１４１に基づいて、最適なウェアレベリングを実行する。
【０４８２】
メモリ管理装置１２４は、マイクロプロセッサ１４２、作業メモリ１４３、情報レジスタ１４４、キャッシュメモリ１４５を具備する。
【０４８３】
マイクロプロセッサ１４２は、情報レジスタ１４４、作業メモリ１４３を利用しつつ、メモリ管理を実行する。キャッシュメモリ１４５は、各プロセッサ１２５１〜１２５４からのデータ及びＮＡＮＤ型フラッシュメインメモリ１２６からのデータの一時保存などに用いられる。なお、キャッシュメモリ１４５は、外付けのＤＲＡＭでもよい。
【０４８４】
図４７は、マイクロプロセッサ１４２の機能の一例を示すブロック図である。
【０４８５】
マイクロプロセッサ１４２は、取得機能１４２ａ、アドレス変換機能１４２ｂ、アクセス機能１４２ｃ、転送機能１４２ｄを備える。
【０４８６】
複数のプロセッサ１２５１〜１２５４のいずれかが、ＮＡＮＤ型フラッシュメインメモリ１２６のデータを読み出す場合、取得機能１４２ａは、複数のプロセッサ１２５１〜１２５４のいずれかから、読み出し論理アドレスを取得する。
【０４８７】
アドレス変換機能１４２ｂは、取得機能１４２ａによって取得された読み出し先論理アドレスを、ＮＡＮＤ型フラッシュメインメモリ１２６の読み出し先物理アドレスに変換する。例えば、ＮＡＮＤ型フラッシュメインメモリ１２６は、複数のグループ属性を持つ領域に分割されており、それぞれのグループ属性がメモリ固有情報１４１として保有されているとする。この場合、アドレス変換機能１４２ｂは、いずれかのプロセッサ上で動作するファイル管理プログラム（プロセス）により定義されたデータＤ１，Ｄ２固有の読み書き頻度情報Ｅ１，Ｅ２と、メモリ固有情報１４１とを参照し、データＤ１，Ｄ２固有の読み書き頻度情報Ｅ１，Ｅ２に対応するグループ属性の領域内に書き込み先物理アドレスを対応させる。
【０４８８】
アクセス機能１４２ｃは、ＮＡＮＤ型フラッシュメインメモリ１２６から、読み出し先物理アドレスに対応するデータを読み出す。ここで、この読み出されるデータのデータサイズは、ＮＡＮＤ型フラッシュメインメモリ１２６のページサイズの整数倍又はブロックサイズとする。
【０４８９】
転送機能１４２ｄは、読み出されたデータを、読み出し論理アドレスを発行したプロセッサのキャッシュメモリに転送する。ここで、読み出し論理アドレスを発行したプロセッサのキャッシュメモリのキャッシュサイズは、ＮＡＮＤ型フラッシュメインメモリ１２６のページサイズ、ページサイズの整数倍又はブロックサイズに依存している。
【０４９０】
複数のプロセッサ１２５１〜１２５４のいずれかが、ＮＡＮＤ型フラッシュメインメモリ１２６へデータを書き込む場合、取得機能１４２ａは、プロセッサから、書き込み先論理アドレスと、書き込みデータとを取得する。ここで、書き込みデータのサイズは、キャッシュサイズとする。
【０４９１】
アドレス変換機能１４２ｂは、取得機能１４２ａによって取得された書き込み先論理アドレスを、ＮＡＮＤ型フラッシュメインメモリ１２６の書き込み先物理アドレスに変換する。
【０４９２】
アクセス機能１４２ｃは、ＮＡＮＤ型フラッシュメインメモリ１２６の書き込み先物理アドレスに対応する位置に、書き込みデータを書き込む。
【０４９３】
マイクロプロセッサ１４２のアドレス変換機能１４２ｂは、データ固有の読み書き頻度情報、メモリ使用情報１４０と、メモリ固有情報１４１とのうちの少なくとも一つに基づいて、ウェアレベリングを行う。
【０４９４】
図４８は、メモリ管理装置１２４の転送アルゴリズムの第１の動作の例を示す図である。
【０４９５】
メモリ管理装置１２４のマイクロプロセッサ１４２は、起動時に、メモリ使用情報１４０及びメモリ固有情報１４１を読み込み、情報レジスタ１４４に格納する。メモリ固有情報１４１には、ＮＡＮＤ型フラッシュメインメモリ１２６のページサイズ及びブロックサイズが含まれている。各プロセッサ１２５１〜１２５４のキャッシュサイズは、ＮＡＮＤ型フラッシュメインメモリ１２６のページサイズ、ページサイズの整数倍、ブロックサイズ、又は、ブロックサイズの整数倍である。
【０４９６】
従来から使用されているプロセッサにメモリ管理装置１２４を適用する場合であって、この従来のプロセッサについてキャッシュサイズを変更できない場合には、マイクロプロセッサ１４２は、作業メモリ１４３又はキャッシュメモリ１４５でバッファリングを行い、プロセッサ１２５１〜１２５４のキャッシュサイズとＮＡＮＤ型フラッシュメインメモリ１２６のページサイズ、ページサイズの整数倍、ブロックサイズ、又は、ブロックサイズの整数倍との差を調整する。例えば、マイクロプロセッサ１４２は、ページサイズ２５６kilobyte分のデータを作業メモリ１４３又はキャッシュメモリ１４５に読み込み、プロセッサ１２５１〜１２５４のいずれかに対して、キャッシュライン４kilobyte分のデータを出力する。
【０４９７】
図４９は、メモリ管理装置１２４の転送アルゴリズムの第２の動作の例を示す図である。
【０４９８】
メモリ管理装置１２４のマイクロプロセッサ１４２は、プロセッサ１２５２から、１キャッシュライン分のアクセス要求を受信する（Ｔｒ１９Ａ）。
【０４９９】
次に、マイクロプロセッサ１４２は、アクセス要求に対応するページサイズ、ページサイズの整数倍、ブロックサイズ、又は、ブロックサイズの整数倍のデータを、ＮＡＮＤ型フラッシュメインメモリ１２６から読み出し、キャッシュメモリ１４５に記憶する（Ｔｒ１９Ｂ）。
【０５００】
次に、マイクロプロセッサ１４２は、アクセス要求に対応するデータを、キャッシュメモリ１４５からプロセッサ１２５２に送信する（Ｔｒ１９Ｃ）。
【０５０１】
図５０は、メモリ管理装置１２４の転送アルゴリズムの第３の動作の例を示す図である。
【０５０２】
プロセッサ１２５２は、キャッシュメモリ１２８２又はキャッシュメモリ１２９２のデータを書き換える（Ｔｒ２０Ａ）。
【０５０３】
次に、メモリ管理装置１２４のマイクロプロセッサ１４２は、キャッシュメモリ１２８２又はキャッシュメモリ１２９２の書き換えられたデータをキャッシュアウトし、キャッシュメモリ１４５に転送する（Ｔｒ２０Ｂ）。
【０５０４】
すると、マイクロプロセッサ１４２は、このデータが持つ読み書き頻度情報、情報レジスタ１４４に記憶されているメモリ使用情報１４０及びメモリ固有情報１４１に基づいて、ウェアレベリングを行い、ＮＡＮＤ型フラッシュメインメモリ１２６の複数の物理ブロックの中から書き込みを行う物理ブロック１３９を決定する。
【０５０５】
マイクロプロセッサ１４２は、キャッシュメモリ１４５に記憶されている書き換えられたデータを、決定された物理ブロック１３９に記憶する（Ｔｒ２０Ｃ）。
【０５０６】
この書き込みにおいては、必要に応じて、メモリブロックの移動、ガーベージコレクションが行われる。
【０５０７】
図５１は、ウェアレベリングの一例を示すブロック図である。
【０５０８】
ＮＡＮＤ型フラッシュメインメモリ１２６は、２以上のバンク１４６ａ，１４６ｂを備える。
【０５０９】
マイクロプロセッサ１４２は、データ（ブロック又はページ）を、順次、一方のバンク１４６ａに追加記憶していく。すなわち、ＮＡＮＤ型フラッシュメインメモリ１２６に対して追記式のデータ書き込みが行われる。
【０５１０】
データの削除が発生すると、マイクロプロセッサ１４２は、バンク１４６ａ上の削除対象のデータを削除する。しかしながら、このバンク１４６ａにおける最後の領域にデータが記憶されるまで、順次、追加記憶は継続される。書き込み対象となっているバンク１４６ａでは、途中で削除された部分に書き込みは行われない。したがって、書き込み対象となっているバンク１４６ａにおいてデータの削除が発生すると、この削除された領域のデータが欠けた状態となる。
【０５１１】
マイクロプロセッサ１４２は、一方のバンク１４６ａの最後の領域までデータを記憶すると、このバンク１４６ａのうち削除されていない有効なデータを、他方のバンク１４６ｂにガーベージコレクションしながらコピーし、この他方のバンク１４８ｂにおいて、コピーされたデータの次から新たなデータを追加記憶していく。また、マイクロプロセッサ１４２は、一方のバンク１４６ａのデータを他方のバンク１４６ｂにコピーした後、一方のバンク１４６ａに対してクリアを行う。その後、同様の処理が繰り返される。
【０５１２】
なお、上記のような空き領域を整理する処理は、ＮＡＮＤ型フラッシュメインメモリ１２６におけるメモリ領域のデータを、ＮＡＮＤ型フラッシュメインメモリ１２６の冗長領域に移動させて実現されてもよい。
【０５１３】
ここで、メモリ管理装置１２４のマイクロプロセッサ１４２で用いられるウェアレベリング・アルゴリズムの具体的動作例について説明する。
【０５１４】
まず、マイクロプロセッサ１４２は、いずれかのプロセッサ又はオペレーティングシステムから、書き込まれるデータを受信する。書き込まれるデータが複数の場合には、書き込み頻度の一番高いデータを基準として用いる。プロセッサ又はオペレーティングシステムが従来型の場合、マイクロプロセッサ１４２は、データの先頭などを調べて、データの種類を判断する。
【０５１５】
例えば、マイクロプロセッサ１４２は、書き込まれるデータの種別が圧縮された画像データの場合、この書き込まれるデータの書き込み頻度は少ないため、ＭＬＣ領域を書き換え領域に決定する。または、マイクロプロセッサ１４２は、書き込まれるデータの種別が圧縮された画像データの場合、すでに書き換え回数が多くなっている空領域を書き換え領域に決定する。
【０５１６】
例えば、マイクロプロセッサ１４２は、書き込まれるデータの種別がウェブブラウザのキャッシュデータの場合、書き込み頻度が高いため、ＳＬＣ領域を書き換え領域に決定する。
【０５１７】
例えば、マイクロプロセッサ１４２は、ＳＬＣ領域又はＭＬＣ領域の中から、書き換え回数の一番少ない空ブロックを、書き込み領域に決定する。
【０５１８】
例えば、マイクロプロセッサ１４２は、ＮＡＮＤ型フラッシュメインメモリ１２６における全ての空き領域（例えば空きブロック）の書き換え回数が、最大書き込み可能回数の所定の割合（例えば８０％など）に達している場合に、すでにデータの書き込まれている領域のうち、スタティック情報に基づく書き換え頻度が少なく、さらにダイナミック情報に基づく書き換え回数も少ない領域を選択し、この選択された領域のデータを、空き領域に記憶する。そして、マイクロプロセッサ１４２は、この選択された領域のデータを削除する。すなわち、空き領域と選択された領域との間でデータの入れ替えを行う。
【０５１９】
本実施の形態において、メモリ管理装置１２４のマイクロプロセッサ１４２は、複数のＮＡＮＤ型フラッシュメインメモリ１２６を管理するとしてもよい。
【０５２０】
図５２は、複数のＮＡＮＤ型フラッシュメインメモリ１２６を管理するメモリ管理装置１２４の一例を示す斜視図である。
【０５２１】
一つのメモリ管理装置１２４と、複数のＮＡＮＤ型フラッシュメインメモリ１２６とで、一つのメモリユニット１４７が形成される。図５２の例では、３つのメモリユニット１４７が形成されている。
【０５２２】
メモリ管理装置１２４は、同じメモリユニット１４７に属する複数のＮＡＮＤ型フラッシュメインメモリ１２６に対するアクセスを管理する。
【０５２３】
さらに、複数のメモリユニット１４７内に備えられている複数のメモリ管理装置１２４は、互いに連携して一つのメモリ管理装置にように動作する。
【０５２４】
メモリユニット１４７のメモリ管理装置１２４は、メモリユニット１４７内の複数のＮＡＮＤ型フラッシュメインメモリ１２６に対するＥＣＣ機能及びＲＡＩＤ機能を備え、ミラーリング及びストライピングを行う。
【０５２５】
それぞれのＮＡＮＤ型フラッシュメインメモリ１２６は、メモリユニット１４７が通電中（動作中）であっても、ホットスワップ（交換）可能である。複数のＮＡＮＤ型フラッシュメインメモリ１２６のそれぞれには、ボタン１４８が備えられている。
【０５２６】
ボタン１４８は、警告出力部（例えばＬＥＤなど）を備える。例えば、警告出力部が第１の色（緑）の場合は、正常状態を表し、第２の色（赤）の場合には交換必要な状態を表す。
【０５２７】
ボタン１４８を押すと、プロセス及びオペレーティングシステムに通知が送信され、アクセスなどが発生していない取り外し安全なときに、ボタン１４８は、第３の色（青）になり、このボタン１４８に対応するＮＡＮＤ型フラッシュメインメモリ１２６は、ホットスワップ可能となる。
【０５２８】
ホットスワップ実行時には、ホットスワップを要求するボタン１４８が押された後、ライトバックが完了した時点で、交換可能であることを示すランプが点灯し、ＮＡＮＤ型フラッシュメインメモリ１２６の交換が行われる。
【０５２９】
メモリ管理装置１２６のマイクロプロセッサ１４２は、情報レジスタ１４４に記憶されているメモリ使用情報１４０とメモリ固有情報１４１とを参照し、各ＮＡＮＤ型フラッシュメインメモリ１２６の書き換え回数又は読み出し回数とが、メモリ固有情報１４１に記述されている上限に達したか否か判断する。そして、マイクロプロセッサ１４２は、書き換え回数又は読み出し回数が上限に達している場合、メモリ交換を通知又は警告する。
【０５３０】
本実施の形態において、ＮＡＮＤ型フラッシュメインメモリ１２６のページサイズ又はブロックサイズが大きい場合、プリロードが有効である。
【０５３１】
プリロードを行う場合、メモリ管理装置１２４のマイクロプロセッサ１４２は、ＮＡＮＤ型フラッシュメインメモリ１２６におけるデータ固有情報Ｅ１，Ｅ２を参照し、頻繁にアクセスされる可能性の高いデータを、予めキャッシュメモリ１４５にプリロードしておく。
【０５３２】
あるいは、マイクロプロセッサ１４２は、周期性のあるデータであって、所定の時間にアクセスされる可能性の高いデータを、その所定時間の前にプリロードしておく。
【０５３３】
図５３は、ＭＭＵを備えている既存のプロセッサに対して、本実施の形態に係るメモリ管理装置１２４を用いたマルチプロセッサシステムの一例を示すブロック図である。
【０５３４】
プロセッサ１２５５は、既存のプロセッサであり、ＭＭＵ１４９５、１次キャッシュメモリ１２８５、２次キャッシュメモリ１２９５を備え、プロセス１２７５を実行する。この図５３のシステムでは、通常のＭＭＵ１４９５によるアドレス変換と、本実施の形態に係るメモリ管理装置１２４によるアドレス変換とが混在することになる。この場合、プロセッサ１２５５のＭＭＵ１４９５は、ＮＡＮＤ型フラッシュメインメモリ１２６へアクセスする場合に、まずＮＡＮＤ型フラッシュメインメモリ１２６のページテーブル１２６ｂをアクセスする。しかしながら、このページテーブル１２６ｂは、アドレス変換を行うことなく、変換をスルーする内容とする。例えば、ページテーブル１２６ｂでは、変換前のアドレスと変換後のアドレスとが同じに設定されている。これにより、プロセッサ１２５５のＭＭＵ１４９５ではアドレス変換が行われず、メモリ管理装置１２４でアドレス変換を行うことが可能となる。
【０５３５】
上記の図４６に示す本実施の形態に係るメモリ管理装置１２４を用いたシステムと、従来のマルチプロセッサシステムとの相違点を、以下で説明する。
【０５３６】
図５４は、一般的な従来のマルチプロセッサシステムの一例を示すブロック図である。
【０５３７】
従来のマルチプロセッサシステムでは、既存のプロセッサ１２５５〜１２５８とメインメモリ１５０と２次記憶装置１５１とがシステムバス１３０で接続されている。
【０５３８】
各プロセッサ１２５５〜１２５８は、それぞれ、ＭＭＵ１４９５〜１４９８、１次キャッシュメモリ１２８５〜１２８８、２次キャッシュメモリ１２９５〜１２９８を具備する。各プロセッサ１２５５，１２５６，１２５８は、それぞれプロセス１２７５，１２７６，１２７８を実行する。
【０５３９】
ＭＭＵ１４９５〜１４９８は、論理アドレスと物理アドレスとの間の変換を行う。各プロセッサ１２５５〜１２５８から、１次キャッシュメモリ１２８５〜１２８８、２次キャッシュメモリ１２９５〜１２９８、メインメモリ１５０、２次記憶装置１５１のいずれかへのアクセスは、物理アドレスに基づいて行われる。
【０５４０】
メインメモリ１５０には、例えばＤＲＡＭなどのような揮発性の記憶装置が用いられる。メインメモリ１５０は、各プロセス１２７５〜１２７８ごとのページテーブル１５２５〜１５２８を備える。
【０５４１】
２次記憶装置１５１には、例えば、ハードディスクドライブ、ＳＳＤ（Solid State Drive）、ＮＡＮＤ型フラッシュメモリなどが用いられる。
【０５４２】
従来のマルチプロセッサシステムではメインメモリにＤＲＡＭなどが用いられているのに対して、本実施の形態に係るマルチプロセッサシステムでは、ＮＡＮＤ型フラッシュメインメモリ１２６がメインメモリとして用いられている。通常、ＤＲＡＭのビット単価は、ＮＡＮＤ型フラッシュメインメモリ１２６のビット単価よりも高い。したがって、本実施の形態においては、コストを削減させることができる。
【０５４３】
従来のマルチプロセッサシステムではメインメモリが揮発性であるのに対して、本実施の形態に係るマルチプロセッサシステムではメインメモリとして不揮発性のＮＡＮＤ型フラッシュメインメモリ１２６が用いられる。これにより、本実施の形態においては、インスタントオンが可能となり、メインメモリへプログラム又はデータなどのロード時間などを削除することができ、動作速度を向上させることができる。
【０５４４】
従来のマルチプロセッサシステムでは、揮発性のメインメモリ１５０と不揮発性の２次記憶装置１５１との双方が搭載される。これに対して、本実施の形態に係るマルチプロセッサシステムでは、ＮＡＮＤ型フラッシュメインメモリ１２６を搭載することで、メインメモリを不揮発性にすることができ、ハードディスクなどのような２次記憶装置を除去することができる。本実施の形態においては、メインメモリとしてＤＲＡＭを搭載する必要がない。そして、本実施の形態においては、キャッシュとしてＤＲＡＭを搭載する場合に、このキャッシュの記憶容量が少なくてもよい。したがって、本実施の形態においては、システム構成及びメモリ管理を簡略化することができ、コストを削減することができる。
【０５４５】
従来のマルチプロセッサシステムでは、ページテーブル１５２５〜１５２８を共有しなければならず、アクセスネックが発生する。これに対して、本実施の形態に係るマルチプロセッサシステムでは、ページテーブルを共有する必要がなく、アクセスネックを解消することができる。
【０５４６】
従来のように、２次記憶装置にＤＲＡＭ又はＳＳＤを用いた場合、ファイル、ＳＡＴＡ（Serial ATA）などの概念が用いられる。この場合、必ずオーバーヘッドが存在する。これに対して、本実施の形態では、データはファイルによって抽象化されることはなく、メモリが直接アクセスされる。したがって、本実施の形態では、データに対するアクセスを効率化できる。
【０５４７】
従来のように２次記憶装置にＤＲＡＭ又はＳＳＤを用いた場合と比べて、本実施の形態では、立ち上り時に、ディスクサーチ時間が必要ないため、立ち上り時間を短縮化できる。本実施の形態では、アプリケーションの立ち上りスピードも高速化できる。本実施の形態では、検索速度及びアプリケーションの実行速度を高速化できる。本実施の形態では、複数のプロセッサ毎にアプリケーションを動作させることができる。本実施の形態では、不揮発性のメインメモリが利用されるため、システムのスリープ時に、バッテリの寿命を考慮する必要がない。本実施の形態では、部品数を削減させることができ、コストを抑制できる。本実施の形態は、マルチプロセッサ環境に容易に適応できる。本実施の形態では、インストールが必要なく、プロセスマイグレーションをなくすことができる。
【０５４８】
本実施の形態においては、データ固有の読み書き頻度情報Ｅ１，Ｅ２、メモリ使用情報１４０、メモリ固有情報１４１に基づいて、メモリ管理装置１２４によって最適なウェアレベリングが行われる。本実施の形態においては、データ固有の読み書き頻度情報Ｅ１，Ｅ２に基づいてウェアレベリングを行うことにより、ＳＳＤよりも効率よくウェアレベリングを行うことができる。
【０５４９】
一般的に、ＮＡＮＤ型フラッシュメモリの世代が異なる場合には、ページサイズ及びブロックサイズも相違している。本実施の形態において、メモリ管理装置１２４は、ＮＡＮＤ型フラッシュメインメモリ１２６からメモリ固有情報１４１を読み出し、このメモリ固有情報１４１で示されるページサイズ又はブロックサイズに応じた処理を行う。これにより、様々な世代のＮＡＮＤ型フラッシュメモリを、ＮＡＮＤ型フラッシュメインメモリ１２６として用いることができる。本実施の形態において、メインメモリ管理装置１２４は、ＮＡＮＤ型フラッシュメインメモリ１２６からページサイズ又はブロックサイズを含むメモリ固有情報１４１を読み出し、ＮＡＮＤ型フラッシュメインメモリ１２６のページサイズ又はブロックサイズと、各プロセッサのキャッシュラインサイズとを合わせることができる。
【０５５０】
本実施の形態において、メモリ管理装置１２４は、ＮＡＮＤ型フラッシュメインメモリ１２６の寿命管理を行い、警告を行う。これにより、不具合の発生を防止することができる。
【０５５１】
本実施の形態において、メモリ管理装置１２４は、複数のＮＡＮＤ型フラッシュメインメモリ１２６に対するＲＡＩＤ機能を持ち、取り替え換え対象のＮＡＮＤ型フラッシュメインメモリ１２６のホットスワップを実現することができる。これにより、寿命のつきたＮＡＮＤ型フラッシュメインメモリ１２６を容易に取り替えることができる。
【０５５２】
ここで、複数のプロセッサに対して、複数のＮＡＮＤ型フラッシュメインメモリを備えた場合の仮想記憶アクセスの一例について説明する。
【０５５３】
図５５は、広いアドレス空間用のポインタを求める処理の一例を示すブロック図である。
【０５５４】
ポインタ１５３は、狭いアドレス空間用のポインタ１５３ａと、狭いアドレス空間用のポインタ１５３ｂとを含む。
【０５５５】
セグメントテーブル１５４は、プロセスＩＤ１５５ごとに設けられており、広いアドレス空間用のポインタ１５６を備える。
【０５５６】
例えば、広いアドレス空間用のポインタ１５７は、狭いアドレス空間用のポインタ１５３ｂと、狭いアドレス空間用のポインタ１５３ａによって特定されるセグメントテーブル１５４上の広いアドレス空間用のポインタ１５６とを組み合わせることで得られる。なお、広いアドレス空間用のポインタ１５７は、狭いアドレス空間用のポインタ１５３ｂと、狭いアドレス空間用のポインタ１５３ａと、セグメントテーブル５４上の広いアドレス空間用のポインタ１５６とを組み合わせて生成されるとしてもよい。
【０５５７】
図５６は、複数のキャッシュメモリと複数のＮＡＮＤ型フラッシュメインメモリとで形成される仮想記憶空間の一例を示すブロック図である。
【０５５８】
広いアドレス空間用のポインタ１５７は、プロセッサのキャッシュメモリ１５８１〜１５８ｎと、複数のＮＡＮＤ型フラッシュメインメモリ１５９１〜１５９ｍとによって構成される仮想記憶空間１６０のいずれかを指す。
【０５５９】
これにより、プロセッサのキャッシュメモリ１５８１〜１５８ｎと、複数のＮＡＮＤ型フラッシュメインメモリ１５９１〜１５９ｍとを統合的に扱うことが可能である。
【０５６０】
上記各実施の形態に係るメモリ管理装置は、キャッシュがライトバック型の場合及びライトスルー型の場合のいずれにおいても適用可能である。
【符号の説明】
【０５６１】
１…メモリ管理装置、２…混成メインメモリ、３ａ〜３ｃ…プロセッサ、４ａ〜４ｃ…１次キャッシュメモリ、５ａ〜５ｃ…２次キャッシュメモリ、６ａ〜６ｃ…プロセス、７…バス、８…揮発性半導体メモリ、９，１０…不揮発性半導体メモリ、１１…メモリ使用情報、１２…メモリ固有情報、１３…アドレス変換情報、１４…カラーリングテーブル、１５…処理部、１６…作業メモリ、１７…情報記憶部、１８…受付部、１９…アドレス決定部、２０…アドレス管理部、２１…書き込み部、２２…再配置部、２３…アドレス変換部、２４…読み出し部、２５…転送部。
【図１】
2011022933.tif 000003
【図２】
2011022933.tif 000004
【図３】
2011022933.tif 000005
【図４】
2011022933.tif 000006
【図５】
2011022933.tif 000007
【図６】
2011022933.tif 000008
【図７】
2011022933.tif 000009
【図８】
2011022933.tif 000010
【図９】
2011022933.tif 000011
【図１０】
2011022933.tif 000012
【図１１】
2011022933.tif 000013
【図１２】
2011022933.tif 000014
【図１３】
2011022933.tif 000015
【図１４】
2011022933.tif 000016
【図１５】
2011022933.tif 000017
【図１６】
2011022933.tif 000018
【図１７】
2011022933.tif 000019
【図１８】
2011022933.tif 000020
【図１９】
2011022933.tif 000021
【図２０】
2011022933.tif 000022
【図２１】
2011022933.tif 000023
【図２２】
2011022933.tif 000024
【図２３】
2011022933.tif 000025
【図２４】
2011022933.tif 000026
【図２５】
2011022933.tif 000027
【図２６】
2011022933.tif 000028
【図２７】
2011022933.tif 000029
【図２８】
2011022933.tif 000030
【図２９】
2011022933.tif 000031
【図３０】
2011022933.tif 000032
【図３１】
2011022933.tif 000033
【図３２】
2011022933.tif 000034
【図３３】
2011022933.tif 000035
【図３４】
2011022933.tif 000036
【図３５】
2011022933.tif 000037
【図３６】
2011022933.tif 000038
【図３７】
2011022933.tif 000039
【図３８】
2011022933.tif 000040
【図３９】
2011022933.tif 000041
【図４０】
2011022933.tif 000042
【図４１】
2011022933.tif 000043
【図４２】
2011022933.tif 000044
【図４３】
2011022933.tif 000045
【図４４】
2011022933.tif 000046
【図４５】
2011022933.tif 000047
【図４６】
2011022933.tif 000048
【図４７】
2011022933.tif 000049
【図４８】
2011022933.tif 000050
【図４９】
2011022933.tif 000051
【図５０】
2011022933.tif 000052
【図５１】
2011022933.tif 000053
【図５２】
2011022933.tif 000054
【図５３】
2011022933.tif 000055
【図５４】
2011022933.tif 000056
【図５５】
2011022933.tif 000057
【図５６】
2011022933.tif 000058