(57)【要約】【課題】書き込み回数、読み出し回数、消去回数のうちの少なくとも一つに上限のある不揮発性半導体メモリを効率的に使用する。【解決手段】本発明の一例のメモリ管理装置１は、外部から接続された不揮発性半導体メモリ３２ａの所定領域毎の消去回数を含むメモリ使用情報１１を管理するメモリ使用情報管理部２２と、メモリ使用情報１１に基づき、不揮発性半導体メモリ３２ａの消去回数が、当該不揮発性半導体メモリ３２ａの消去可能上限回数に達する前に、不揮発性半導体メモリ３２ａに警告を通知する通知部３５とを具備する。【選択図】      図３０
2011186553.tif 000002
【特許請求の範囲】
【請求項１】
外部から接続された不揮発性半導体メモリの所定領域毎の消去回数を含むメモリ使用情報を管理するメモリ使用情報管理部と、
前記メモリ使用情報に基づき、前記不揮発性半導体メモリの消去回数が、当該不揮発性半導体メモリの消去可能上限回数に達する前に、前記不揮発性半導体メモリに警告を通知する通知部と
を具備するメモリ管理装置。
【請求項２】
前記通知部は、前記メモリ使用情報に基づき、所定時間後の消去回数を予測し、予測した前記所定時間後の消去回数が前記消去可能上限回数を超える場合に、前記不揮発性半導体メモリに警告を通知することを特徴とする請求項１に記載のメモリ管理装置。
【請求項３】
交換制御部をさらに備え、
前記交換制御部は、外部から接続された前記不揮発性半導体メモリが、電気的に非接続状態となる前に、前記不揮発性半導体メモリに対し、当該不揮発性半導体メモリの所定領域毎の消去回数を書き込むことを特徴とする請求項１又は請求項２記載のメモリ管理装置。
【請求項４】
外部から接続された複数の前記不揮発性半導体メモリのうち、１つの前記不揮発性半導体メモリに対して警告を通知した後に、当該不揮発性半導体メモリに記憶されているデータを、別の前記不揮発性半導体メモリに書き込むことを特徴とする請求項１乃至請求項３のいずれか１項に記載のメモリ管理装置。
【請求項５】
前記不揮発性半導体メモリに書き込むデータについての書き込み頻度情報、又は読み出し頻度情報を管理するカラーリング情報管理部をさらに備え、
外部から接続された複数の前記不揮発性半導体メモリのうち、所定の前記不揮発性半導体メモリに対して、書き込み頻度又は読み出し頻度の高いデータを書き込むことを特徴とする請求項１乃至請求項４のいずれか１項に記載のメモリ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに対するアクセスを管理するメモリ管理装置に関する。
【背景技術】
【０００２】
従来の情報処理装置においては、プロセッサの主記憶装置（メインメモリ）として、例えばＤＲＡＭ（Dynamic Random Access Memory）などの揮発性半導体メモリが使用されている。さらに、従来の情報処理装置では、揮発性半導体メモリと組み合わせて、不揮発性半導体メモリが２次記憶装置として使用される。
【０００３】
特開２００８−２４２９４４号公報（特許文献１）には、統合メモリ管理装置が提案されている。この統合メモリ管理装置では、ＭＰＵに対するメインメモリとしてＮＡＮＤ型フラッシュメモリが用いられている。さらに、特許文献１では、ＭＰＵの１次キャッシュメモリと、２次キャッシュメモリと、メインメモリであるＮＡＮＤ型フラッシュメモリとが同一のメモリ階層で扱われる。統合メモリ管理装置のキャッシュコントローラは、１次キャッシュメモリ及び２次キャッシュメモリに対するメモリ管理に加えて、メインメモリに対するメモリ管理を実行する。
【０００４】
特開平７−１４６８２０号公報（特許文献２）には、情報処理装置の主記憶装置としてフラッシュメモリを採用する技術が開示されている。特許文献２において、システムのメモリバスには、揮発性メモリであるキャッシュメモリを介して、フラッシュメモリが接続される。キャッシュメモリには、このキャッシュメモリに格納されているデータのアドレス又はアクセス履歴などの情報を記録するアドレスアレイが設けられる。コントローラは、アクセス先のアドレスを参照し、キャッシュメモリ又はフラッシュメモリのデータをメモリバスに供給し、あるいは、メモリバスのデータを格納する。
【０００５】
特開２００１−２６６５８０号公報（特許文献３）においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。
【０００６】
この特許文献３の半導体メモリ装置は、ランダムアクセスメモリチップと、前記ランダムアクセスメモリチップを備えたパッケージを含む。前記パッケージは、前記ランダムアクセスメモリチップを外部装置に電気的に連結する複数のピンを有する。複数のピンは、前記ランダムアクセスメモリと、電気的に消去及びプログラム可能な不揮発性半導体メモリとに、共通にメモリ機能を提供する。前記複数のピンの各々は、不揮発性半導体メモリの対応するピンの位置に配列されている。
【０００７】
一般的に、不揮発性半導体メモリは、正常にアクセス可能な上限の回数が揮発性半導体メモリよりも少ない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２４２９４４号公報
【特許文献１】特開平７−１４６８２０号公報
【特許文献２】特開２００１−２６６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、不揮発性半導体メモリを効率的に使用するためのメモリ管理装置を提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明の一態様に係るメモリ管理装置は、外部から接続された不揮発性半導体メモリの所定領域毎の消去回数を含むメモリ使用情報を管理するメモリ使用情報管理部と、メモリ使用情報に基づき、不揮発性半導体メモリの消去回数が、当該不揮発性半導体メモリの消去可能上限回数に達する前に、不揮発性半導体メモリに警告を通知する通知部とを具備する。
【００１１】
上記の態様はメモリ管理装置として表現されている。しかしながら、これに限らず、上記の態様は、メモリ管理装置を含むプロセッサ、メモリ管理方法、情報処理装置などで表現されるとしてもよい。
【発明の効果】
【００１２】
本発明によれば、不揮発性半導体メモリを効率的に使用することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図。
【図２】第１の実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図。
【図３】第１の実施形態に係る混成メインメモリのメモリマップの一例を示す図。
【図４】第１の実施形態に係るアドレス変換情報の一例を示す図。
【図５】第１の実施形態に係るカラーリングテーブルの一例を示す図。
【図６】第１の実施形態に係る静的カラー情報の一例を説明するための図。
【図７】第１の実施形態に係るデータ配置の処理の一例を示すフローチャート。
【図８】第１の実施形態に係るカラーリングテーブルの構成の一例を示す図。
【図９】各種データに対する静的カラー情報の設定の第１の例を示す図。
【図１０】各種データに対する静的カラー情報の設定の第２の例を示す図。
【図１１】第１の実施形態に係るカラーリングテーブルの生成処理の一例を示すフローチャート。
【図１２】第１の実施形態に係るカラーリングテーブルのエントリの生成処理の一例を示すフローチャート。
【図１３】カラーリングテーブルのエントリのアライメントの第１の例を示す図。
【図１４】カラーリングテーブルのエントリのアライメントの第２の例を示す図。
【図１５】動的カラー情報と静的カラー情報に基づいて動的書き込み頻度DW_colorと動的読み出し頻度DR_colorを算出する方法の一例を示す図。
【図１６】第１の実施形態に係るデータの読み出し処理の一例を示すフローチャート。
【図１７】第１の実施形態に係るデータの読み出し方式の決定処理の一例を示すフローチャート。
【図１８】第１の実施形態に係るデータの書き込み処理の一例を示すフローチャート。
【図１９】第１の実施形態に係るデータの書き込み先領域の決定処理の一例を示すフローチャート。
【図２０】第１の実施形態に係るデータに対する書き込み対象ブロックの決定処理について説明するための図。
【図２１】不揮発性半導体メモリの任意のブロック領域における消去回数の推移の一例を示すグラフ。
【図２２】ウェアレベリングにおいて消去回数の差に対する閾値を小さく設定した場合の変化の一例を示すグラフ。
【図２３】消去回数に応じたブロック領域のグループ分けの一例を示すグラフ。
【図２４】消去回数に応じたブロック領域のグループ分けの判断基準を表す図。
【図２５】ウェアレベリングにおけるブロック領域の検索の一例を示す図。
【図２６】キャッシュメモリを備えたメモリ管理装置の一例を示すブロック図。
【図２７】メモリ管理装置、混成メインメモリ、プロセッサの実装例を示すブロック図。
【図２８】第１の実施形態に係るメモリ管理装置と情報処理装置の別構成態様の一例を示すブロック図。
【図２９】複数の不揮発性半導体メモリを管理する複数のメモリ管理装置の一例を示す斜視図。
【図３０】本発明の第２の実施形態に係るメモリ管理装置、情報処理装置及びメモリ装置の構成の一例を示すブロック図。
【図３１】メモリユニットの消去回数の変化の一例を示すグラフ。
【図３２】メモリ装置の消去回数に基づく、メモリ装置の使用状態の一例を示すグラフ。
【図３３】メモリ装置の読み出し発生回数に基づく、メモリ装置の使用状態の一例を示すグラフ。
【図３４】メモリ装置の消去回数に基づき、メモリ装置に使用状態を通知する処理の一例を示すフローチャート。
【図３５】メモリ装置の読み出し発生回数に基づき、メモリ装置に使用状態を通知する処理の一例を示すフローチャート。
【図３６】管理情報に含まれるデータの一例を示す図。
【図３７】メモリ管理装置にメモリ装置が電気的に接続されてから、メモリ装置にアクセスを開始するまでの処理の一例を示すフローチャート。
【図３８】メモリ管理装置がメモリ装置から取り外し通知を受信してから、メモリ装置が取り外し可能となるまでの処理の一例を示すフローチャート。
【図３９】メモリ装置の取り替え状態の一例を示す図。
【図４０】メモリ装置の再利用の一例を示すブロック図。
【図４１】カラーリング情報に基づいて、特定のメモリ装置に対するアクセス回数が他のメモリ装置に対するアクセス回数よりも多くなるように制御を行った場合のアクセス回数の変化の一例を示すグラフ。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
【００１５】
（第１の実施形態）
図１を参照して、本発明の第１の実施形態に係るメモリ管理装置１及び情報処理装置１００について説明する。図１は、本実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図である。
【００１６】
情報処理装置１００は、メモリ管理装置１と、混成メインメモリ２と、プロセッサ３ａ，３ｂ，３ｃとを備える。
【００１７】
プロセッサ３ａ，３ｂ，３ｃは、例えば、ＭＰＵ（Micro Processor Unit）又はＧＰＵ（Graphic Processor Unit）である。プロセッサ３ａ，３ｂ，３ｃは、各々に１次キャッシュメモリ４ａ，４ｂ，４ｃと、２次キャッシュメモリ５ａ，５ｂ，５ｃを備える。プロセッサ３ａ，３ｂ，３ｃは、それぞれプロセス６ａ，６ｂ，６ｃを実行し、種々のデータを処理する。プロセッサ３ａ，３ｂ，３ｃは、プロセス６ａ，６ｂ，６ｃの実行においては、仮想アドレスによりデータを指定する。
【００１８】
プロセッサ３ａ，３ｂ，３ｃは、データ（書き込み対象データ）を混成メインメモリ２に書き込む場合には、書き込み要求を発生させる。また、プロセッサ３ａ，３ｂ，３ｃは、データ（読み出し対象データ）を混成メインメモリ２から読み出す場合には、読み出し要求を発生させる。
【００１９】
プロセッサ３ａ，３ｂ，３ｃは、各々に仮想アドレスをＭＰＵ又はＧＰＵの物理アドレス（混成メインメモリ２に対する論理アドレス）に変換するページテーブル（図示せず）を備える。プロセッサ３ａ，３ｂ，３ｃは、１次キャッシュメモリ４ａ，４ｂ，４ｃ、２次キャッシュメモリ５ａ，５ｂ，５ｃ、又は混成メインメモリ２にデータを書き込む場合には、ページテーブルにより仮想アドレスを論理アドレスに変換し、論理アドレスにより書き込み対象データを指定する。同様に、プロセッサ３ａ，３ｂ，３ｃは、１次キャッシュメモリ４ａ，４ｂ，４ｃ、２次キャッシュメモリ５ａ，５ｂ，５ｃ、又は混成メインメモリ２からデータを読み出す場合には、ページテーブルにより仮想アドレスを論理アドレスに変換し、論理アドレスにより読み出し対象データを指定する。
【００２０】
なお、以下において、１次キャッシュメモリ４ａ，４ｂ，４ｃ、２次キャッシュメモリ５ａ，５ｂ，５ｃ、又は混成メインメモリ２に対する書き込み、読み出しを総称して「アクセス」と表現する。
【００２１】
メモリ管理装置１は、プロセッサ３ａ，３ｂ，３ｃの混成メインメモリ２に対するアクセス（書き込み、読み出し）を管理する。メモリ管理装置１は、処理部１５と、作業メモリ１６と、情報記憶部１７とを備える。メモリ管理装置１は、後述するメモリ使用情報１１と、メモリ固有情報１２と、アドレス変換情報１３と、カラーリングテーブル１４とを情報記憶部１７に格納する。メモリ管理装置１の情報記憶部１７に格納されるカラーリングテーブル１４は、不揮発性半導体メモリ９，１０に格納されているカラーリングテーブル１４の一部であってもよい。例えば、不揮発性半導体メモリ９，１０に格納されているカラーリングテーブル１４のうち、頻繁に用いられるカラーリングテーブル１４のデータを、メモリ管理装置１の情報記憶部１７に格納するとしてもよい。メモリ管理装置１は、カラーリングテーブル１４等を参照し、プロセッサ３ａ，３ｂ，３ｃの混成メインメモリ２に対するアクセスを管理する。詳細については後述する。
【００２２】
混成メインメモリ２は、第１のメモリ、第２のメモリ、及び第３のメモリを備えている。第１のメモリは、第２のメモリよりもアクセス可能上限回数が多い。第２のメモリは、第３のメモリよりもアクセス可能上限回数が多い。ここでアクセス可能上限回数とは、統計的に予想される期待値であって、常にこの関係が保証されることを意味してはいないことに注意されたい。
【００２３】
本実施形態では、第１のメモリは揮発性半導体メモリ８であるとする。揮発性半導体メモリ８としては、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、ＦＰＭ−ＤＲＡＭ、ＥＤＯ−ＤＲＡＭ、ＳＤＲＡＭなどのような、一般的なコンピュータにおいてメインメモリとして利用されるメモリが用いられる。また、ＤＲＡＭ程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限が無いのであれば、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などの不揮発性ランダムアクセスメモリを採用してもよい。
【００２４】
第２のメモリは不揮発性半導体メモリ９であるとする。不揮発性半導体メモリ９としては、例えば、ＳＬＣ（Single Level Cell）タイプのＮＡＮＤ型フラッシュメモリが用いられる。ＳＬＣは、ＭＬＣ（Multi Level Cell）と比較して、読み出し及び書き込みが高速であり、信頼性が高い。しかしながら、ＳＬＣは、ＭＬＣと比較して、ビットコストが高く、大容量化には向いていない。
【００２５】
第３のメモリは不揮発性半導体メモリ１０であるとする。不揮発性半導体メモリ１０としては、例えば、ＭＬＣタイプのＮＡＮＤ型フラッシュメモリが用いられる。ＭＬＣは、ＳＬＣと比較して、読み出し及び書き込みが低速であり、信頼性が低い。しかしながら、ＭＬＣは、ＳＬＣと比較して、ビットコストが低く、大容量化に向いている。
【００２６】
なお、本実施形態では、不揮発性半導体メモリ９がＳＬＣタイプのＮＡＮＤ型フラッシュメモリであり、不揮発性半導体メモリ１０がＭＬＣタイプのＮＡＮＤ型フラッシュメモリであるが、例えば、不揮発性半導体メモリ９が2bit/CellのＭＬＣタイプのＮＡＮＤ型フラッシュメモリであり、不揮発性半導体メモリ１０が3bit/CellのＭＬＣタイプのＮＡＮＤ型フラッシュメモリであってもよい。
【００２７】
信頼性とは、記憶装置からデータを読み出す場合におけるデータの欠損の起こりにくさの程度（耐久性）を意味する。ＳＬＣの耐久性は、ＭＬＣの耐久性よりも高い。ここで、耐久性が高いとは、アクセス可能上限回数が多く、耐久性が低いとは、アクセス可能上限回数が少ないことを意味する。
【００２８】
ＳＬＣは１つのメモリセルに１ビットの情報を記憶可能である。一方、ＭＬＣは１つのメモリセルに２ビット以上の情報を記憶可能である。すなわち、本実施形態に係る混成メインメモリ２は、第１に、揮発性メモリ８、第２に、不揮発性半導体メモリ９、第３に、不揮発性半導体メモリ１０、の順で耐久性が高い。
【００２９】
ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリ９，１０は、揮発性半導体メモリ８と比較して、安価で大容量化が可能である。不揮発性半導体メモリ９，１０としては、ＮＡＮＤ型フラッシュメモリに代えて、例えばＮＯＲ型フラッシュメモリなどのような他の種類のフラッシュメモリ、ＰＲＡＭ（Phase change memory）、ＲｅＲＡＭ（Resistive Random access memory）を用いることもできる。
【００３０】
なお、第３のメモリとしてＭＬＣを採用し、第２のメモリとして、ＭＬＣの下位ページのみを使用してデータ書き込みを行う擬似ＳＬＣモードが利用可能なＭＬＣを採用してもよい。この場合、第２のメモリと第３のメモリとを共通のチップのみで構成することが可能であり、製造コスト面で有利となる。
【００３１】
メインメモリとして不揮発性半導体メモリ９，１０を利用する場合と、２次記憶装置として不揮発性半導体メモリ９，１０を利用する場合とを比較すると、メインメモリとして不揮発性半導体メモリ９，１０を使用した場合にはこの不揮発性半導体メモリ９，１０へのアクセス頻度が高くなる。本実施形態においては、揮発性半導体メモリ８とＳＬＣの不揮発性半導体メモリ９とＭＬＣの不揮発性半導体メモリ１０とを混成してメインメモリとする混成メインメモリ２を備えた情報処理装置を実現している。混成メインメモリ２は、異機種混在型の主記憶装置であり、メモリ管理装置１によってデータの配置が管理される。
【００３２】
不揮発性半導体メモリ９，１０の所定の領域には、メモリ使用情報１１、メモリ固有情報１２、アドレス変換情報１３、カラーリングテーブル１４が記憶されている。
【００３３】
メモリ使用情報１１は、不揮発性半導体メモリ９，１０の各ページ領域の書き込み発生回数及び読み出し発生回数と、各ブロック領域の消去回数と、使用中領域サイズを含む。
【００３４】
メモリ固有情報１２は、揮発性半導体メモリ８のメモリサイズと、不揮発性半導体９、１０のメモリサイズと、不揮発性半導体メモリ９，１０のページサイズ及びブロックサイズと、各領域のアクセス可能上限回数（書き込み可能上限回数、読み出し可能上限回数、消去可能上限回数）と、を含む。ここで、ページサイズとは、不揮発性半導体メモリ９，１０の書き込み、読み出しのデータサイズの単位である。ブロックサイズとは、不揮発性半導体メモリ９，１０のデータ消去サイズの単位である。不揮発性半導体メモリ９，１０において、ブロックサイズはページサイズよりも大きい。
【００３５】
アドレス変換情報１３は、プロセッサ３ａ，３ｂ，３ｃから与えられる論理アドレスを、論理アドレスに対応する物理アドレスに変換する情報である。アドレス変換情報１３の詳細については後述する。
【００３６】
カラーリングテーブル１４は、データ毎のカラーリング情報が保持するテーブルである。カラーリング情報は、静的カラー情報と動的カラー情報を含む。詳細は後述する。
【００３７】
次に、図２を参照して、本実施形態に係るメモリ管理装置とオペレーティングシステムとについてさらに説明する。図２は、本実施形態に係るメモリ管理装置１及び情報処理装置１００の構成の一例を示すブロック図である。図２では、図１のプロセッサ３ａ，３ｂ，３ｃのうちプロセッサ３ｂを代表として説明するが、他のプロセッサ３ａ，３ｃについても同様である。
【００３８】
オペレーティングシステム２７は、プロセッサ３ｂにより実行される。オペレーティングシステム２７は、プロセッサ３ｂで実行され、情報記憶部１７に格納されているカラーリングテーブル１４にアクセスする権限を有する。
【００３９】
メモリ管理装置１の処理部１５は、アドレス管理部１８、読み出し管理部１９、書き込み管理部２０、カラーリング情報管理部２１、メモリ使用情報管理部２２、再配置部２３を備える。さらに、カラーリング情報管理部２１は、アクセス頻度算出部２４、動的カラー情報管理部２５を備える。
【００４０】
処理部１５は、情報記憶部１７に記憶されている情報に基づいて、作業メモリ１６を使用しつつ各種処理を実行する。
【００４１】
作業メモリ１６は、例えばバッファとして利用され、各種のデータ変換などの作業領域として使用される。
【００４２】
処理部１５に備えられている上記機能ブロックは、ハードウェア及びソフトウェア（例えばオペレーティングシステム２７、ファームウェア等）のいずれか一方、又は両者の組み合わせとして実現することができる。これらの機能ブロックが、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施形態、又は情報処理装置１００全体に課せられた設計制約に依存する。当業者は、具体的な実施形態毎に、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。なお、以下の説明において用いられる機能ブロックについても同様である。
【００４３】
アドレス管理部１８は、論理アドレスに対して物理アドレスを割り当て、アドレス変換情報１３に記憶する。これにより、処理部１５は、アドレス変換情報１３を参照することにより、論理アドレスに対応する物理アドレスを取得することができる。
【００４４】
読み出し管理部１９は、プロセッサ３ａ，３ｂ，３ｃが読み出し要求を発生した場合に、混成メインメモリ２に対して読み出し対象データの読み出し処理を管理する。
【００４５】
書き込み管理部２０は、プロセッサ３ａ，３ｂ，３ｃが書き込み要求を発生した場合に、混成メインメモリ２に対して書き込み対象データを書き込む処理を管理する。
【００４６】
カラーリング情報管理部２１は、カラーリングテーブル１４を管理する。
【００４７】
メモリ使用情報管理部２２は、混成メインメモリ２のメモリ使用情報１１を管理する。
【００４８】
再配置部２３は、プロセッサ３ａ，３ｂ，３ｃの動作と非同期に、カラーリングテーブル１４に含まれているカラーリング情報に基づき、任意の論理アドレスに対応する物理アドレスに配置されているデータの再配置を行う。再配置部２３は、例えば、後述する動的カラー情報に基づき、不揮発性半導体メモリ１０に含まれるデータのうち、読み出し頻度、書き込み頻度が高いデータを、定期的に、不揮発性半導体メモリ９に再配置する。また、再配置部２３は、例えば、動的カラー情報に基づき、不揮発性半導体メモリ９に含まれるデータのうち、読み出し頻度、書き込み頻度が低いデータを、定期的に、不揮発性半導体メモリ１０に再配置する。同様に、再配置部２３は、揮発性半導体メモリ８、不揮発性半導体メモリ９，１０の間でもデータの再配置を行うことが可能である。後述する書き込み管理部２０による書き込み処理は、データの更新が発生するたびに、書き込み先メモリ領域の判断処理と書き込み先ブロック領域の判断処理を行うことで再配置を行う。これに対し、再配置部２３はデータの再配置を定期的に行う。再配置部２３がデータの再配置を行う場合、書き込み管理部２０及び読み出し管理部１９は再配置が終了するまで動作しない。再配置部２３の動作開始のトリガは、開発者によって設定された周期や、ユーザインターフェースにて設定可能な周期としてもよい。また、情報処理装置１００が休止状態になる時に再配置部２３が動作してもよい。
【００４９】
アクセス頻度算出部２４は、カラーリングテーブル１４に含まれているカラーリング情報に基づき、データのアクセス頻度情報（動的書き込み頻度DW_color、動的読み出し頻度DR_color）を算出する。
【００５０】
動的カラー情報管理部２５は、カラーリングテーブル１４に含まれている動的カラー情報を管理する。
【００５１】
次に、図３を参照して、本実施形態に係る混成メインメモリについて説明する。図３は、本実施形態に係る混成メインメモリ２のメモリマップの一例を示す図である。
【００５２】
混成メインメモリ２は、揮発性半導体メモリ８（ＤＲＡＭ領域）と、不揮発性半導体メモリ９（ＳＬＣ領域）と、不揮発性半導体メモリ１０(2bit/Cell領域、3bit/Cell領域、4bit/Cell領域)とを備える。2bit/Cell領域、3bit/Cell領域、4bit/Cell領域はＭＬＣ領域を構成する。ＤＲＡＭ領域、ＳＬＣ領域、2bit/Cell領域、3bit/Cell領域、4bit/Cell領域を総称して、メモリ領域と称する。
【００５３】
揮発性半導体メモリ８は、例えば、１２８MByteのＤＲＡＭ領域から構成される。
【００５４】
不揮発性半導体メモリ９は、例えば、２GByteのＢ領域と１２８MByteのＢ冗長ブロック領域と、２GByteのＣ領域と１２８MByteのＣ冗長ブロック領域から構成される。不揮発性半導体メモリ９の各メモリ領域は、ＳＬＣタイプのＮＡＮＤ型フラッシュメモリである。
【００５５】
不揮発性半導体メモリ１０は、例えば、４GByteのＡ領域と１２８MByteのＡ冗長ブロック領域から構成される2bit/Cell領域と、４GByteのＤ領域と１２８MByteのＤ冗長ブロック領域から構成される3bit/Cellと、４GByteのＥ領域と１２８MByteのＥ冗長ブロック領域から構成される4bit/Cell領域とにより構成される。不揮発性半導体メモリ１０の各メモリ領域は、ＭＬＣタイプのＮＡＮＤ型フラッシュメモリである。図３に示すように、メモリ領域には、物理アドレスが割り付けられる。
【００５６】
混成メインメモリ２が上記構成である場合には、メモリ固有情報１２は、１）混成メインメモリ２のメモリ空間内の揮発性半導体メモリ８（ＤＲＡＭ領域）のメモリサイズ、２）混成メインメモリ２のメモリ空間内の不揮発性半導体メモリ９，１０のメモリサイズ、３）混成メインメモリ２のメモリ空間を構成するＮＡＮＤ型フラッシュメモリのブロックサイズ、ページサイズ、４）不揮発性半導体メモリ９内のＳＬＣ領域（２値領域）として割り付けられたメモリ空間情報（消去可能上限回数、読み出し可能上限回数、書き込み可能上限回数を含む）、５）2bit/Cell領域に割り付けられたメモリ空間情報（消去可能上限回数、読み出し可能上限回数、書き込み可能上限回数を含む）、６）3bit/Cell領域に割り付けられたメモリ空間情報（消去可能上限回数、読み出し可能上限回数、書き込み可能上限回数を含む）、７）4bit/Cell領域に割り付けられたメモリ空間情報（消去可能上限回数、読み出し可能上限回数を含む）を含む。
【００５７】
次に、図４を参照して、本実施形態に係るアドレス変換情報（アドレス変換テーブル）１３について説明する。図４は、本実施形態に係るアドレス変換情報１３の一例を示す図である。
【００５８】
アドレス変換情報１３では、論理アドレス、揮発性半導体メモリ８の物理アドレス、不揮発性半導体メモリ９，１０の物理アドレス、有効／無効フラグが、テーブル形式で管理される。
【００５９】
アドレス変換情報１３の各エントリには、論理アドレス、この論理アドレスに対応する揮発性半導体メモリ８の物理アドレスと不揮発性半導体メモリ９，１０の物理アドレスとのうちの少なくとも一つ、有効／無効フラグが登録される。
【００６０】
有効／無効フラグは、各エントリが有効であるか否かを示す情報である。有効／無効フラグは、１のときに有効、０のときに無効を表す。エントリの有効／無効フラグの初期値は０である。有効／無効フラグが０のエントリは、論理アドレスのマッピングされていないエントリ、又は、論理アドレスがマッピングされたが消去されたエントリである。有効／無効フラグが１のエントリには、論理アドレスがマッピングされており、揮発性半導体メモリ８と不揮発性半導体メモリ９，１０とのうちの少なくとも一方に、論理アドレスに対応する物理アドレスが存在する。
【００６１】
なお、図４に示すアドレス変換情報１３の例では、アドレス変換情報１３の１エントリで論理アドレス、揮発性半導体メモリ８の物理アドレス、不揮発性半導体メモリ９，１０の物理アドレスを管理しているが、例えば、アドレス変換情報１３では論理アドレスと不揮発性半導体メモリ８の物理アドレスを管理し、論理アドレスと揮発性半導体メモリ９，１０の物理アドレスは、別のタグＲＡＭで管理してもよい。この場合、論理アドレスから物理アドレスへ変換する際には、まず、タグＲＡＭが参照され、タグＲＡＭに当該論理アドレスに対応する物理アドレスがない場合に、アドレス変換情報１３が参照される。
【００６２】
次に、図５を参照して、本実施形態に係るカラーリングテーブル１４について説明する。図５は、本実施形態に係るカラーリングテーブル１４の一例を示す図である。
【００６３】
本実施形態では、データ毎にカラーリング情報が付与される。カラーリング情報が付与されるデータのデータサイズ単位は、例えば、読み出し、書き込みの最小の単位である。例えば、読み出し、書き込みの最小の単位は、ＮＡＮＤ型フラッシュメモリのページサイズである。カラーリングテーブル１４は、データ毎にカラーリング情報を対応付け、エントリ単位でカラーリング情報を格納する。カラーリングテーブル１４の各エントリには、インデックスが付されている。インデックスとは、論理アドレスを基に生成される値である。メモリ管理装置１の読み出し管理部１９、書き込み管理部２０、カラーリング情報管理部２１、再配置部２３などは、データを指定する論理アドレスが与えられると、論理アドレスに対応するインデックスにより管理されているエントリを参照し、データのカラーリング情報を取得する。
【００６４】
カラーリング情報は、静的カラー情報と、動的カラー情報とを含む。静的カラー情報は、カラーリング情報が付与される当該データの特性に基づいて生成される情報であり、当該データの混成メインメモリ２上の配置（書き込み）領域を決定するヒントとなる情報である。動的カラー情報は、データの読み出しと書き込みの回数と頻度の少なくとも一方を含む情報である。
【００６５】
次に、図６を参照して、静的カラー情報について説明する。図６は、本実施形態に係る静的カラー情報の一例を説明するための図である。
【００６６】
静的カラー情報は、当該データの「重要度」、「読み出し頻度、書き込み頻度」、「データ寿命」のうち少なくとも一つの情報を含む。図６において説明する、読み出し頻度は、後述する、静的読み出し頻度に対応し、書き込み頻度は、静的書き込み頻度に対応する。
【００６７】
「重要度」とは、データの種類等に基づいて、当該データの重要性を推測して設定される値である。
【００６８】
「読み出し頻度、書き込み頻度」とは、データの種類等に基づいて、当該データが読み出し、又は書き込みされる頻度を推測して設定される値である。
【００６９】
「データ寿命」とは、データの種類等に基づいて、当該データが消去されずにデータとして使用される期間（データの寿命）を推測して設定される値である。
【００７０】
「重要度」、「読み出し頻度、書き込み頻度（読み書き頻度）」、「データ寿命」は、例えば、ファイルシステムに保持されるファイルの特性、又はプログラムに一次的に使用される領域の特性により推測される。
【００７１】
ファイルシステムに保持されるファイルの特性とは、カラーリング情報が付与される当該データが含まれるファイルデータのファイルに付加されたデータ属性により判断される特性である。ファイルに付加されたデータ属性には、ファイルのヘッダ情報、ファイル名、ファイルの位置、ファイル管理データ（ｉｎｏｄｄに保持される情報）等が含まれる。例えば、ファイルの位置としては、ファイルがファイルシステムのゴミ箱に位置している場合には、当該ファイルに含まれるデータの特性は、重要性が低い、読み出しの頻度、書き込みの頻度が低い、データの寿命が短い、と予測できる。この特性に基づき、当該データのカラーリング情報は、書き込み頻度は低、読み出し頻度は低、データの寿命は短、と推測される。
【００７２】
プログラムに一時的に使用される領域の特性には、カラーリング情報が付与される当該データが扱われるプログラムのプログラム実行時のデータ種別に基づき判断される特性と、プログラムファイル生成時のデータ種別に基づき判断される特性とが含まれる。
【００７３】
プログラム実行時のデータ種別とは、例えば、プログラム実行時に、当該データがスタック領域、ヒープ領域、テキスト領域のいずれの領域にマッピングされたかに基づいて分類されるデータ種別である。例えば、スタック領域、ヒープ領域にマッピングされたデータの特性は、書き込みの頻度は高く、読み出しの頻度は高く、重要性は高く、データ寿命は短い、と予測される。この特性に基づき、当該データの静的カラーリング情報は、書き込み頻度は高、読み出し頻度は高、重要度は高、データ寿命は短、と推測される。例えば、テキスト領域にマッピングされたデータの特性は、リード・オンリーのデータであるので、書き込みの頻度は低く、読み出しの頻度は高く、重要性は高く、データの寿命は長いと予測される。この特性に基づき、当該データの静的カラーリング情報は、書き込み頻度は高、読み出し頻度は高、重要度は高、データ寿命は長、と推測される。
【００７４】
プログラムファイル生成時のデータ種別予測とは、プログラム生成時に、当該プログラムで扱われるデータの重要度、読み書き頻度、データ寿命を推測することである。
【００７５】
また、静的カラー情報は、ユーザインターフェースにより、ユーザが直接設定してもよい。
【００７６】
次に、図７を参照して、カラーリング情報に基づく、データの書き込み処理の一例を示す。図７は、データ配置の処理の一例を示すフローチャートである。
【００７７】
前述のように、本実施形態では、混成メインメモリ２は、揮発性半導体メモリ８、不揮発性半導体メモリ９，１０を備える。データを混成メインメモリ２に配置する場合、カラーリング情報に基づいて、揮発性半導体メモリ８、不揮発性半導体メモリ９，１０のいずれかのメモリ領域が配置先として決定される。
【００７８】
まず、データ（書き込み対象データ）の書き込み要求が発生した場合、書き込み管理部２０は、書き込み対象データに付与されているカラーリング情報を参照する（ステップＳ１）。
【００７９】
次に、書き込み管理部２０は、カラーリング情報の「データ寿命」を参照し、書き込み対象データのデータ寿命の判断を行う（ステップＳ２）。
【００８０】
書き込み対象データのデータ寿命が短いと判断された場合（ステップＳ３）には、書き込み管理部２０は、書き込み対象データが配置されるメモリ領域として揮発性半導体メモリ８を選択し（ステップＳ４）、書き込み対象データが配置されるメモリ領域を、揮発性半導体メモリ８に決定する（ステップＳ１２）
書き込み対象データのデータ寿命が長いと判断された場合（ステップＳ３）には、書き込み管理部２０は、書き込み対象データのカラーリング情報の「重要度」を参照し、書き込み対象データの重要度の判断を行う（ステップＳ５）。
【００８１】
書き込み対象データの重要度が高いと判断された場合（ステップＳ６）には、書き込み管理部２０は、書き込み対象データが配置されるメモリ領域として耐久性（信頼性）の高い不揮発性メインメモリ９を選択する（ステップＳ７）。さらに、書き込み管理部２０は、書き込み対象データのカラーリング情報に基づき、書き込み対象データを揮発性半導体メモリ８にキャッシュするか否か（カラーリング情報によるキャッシュ方式）の判断を行い（ステップＳ８）、書き込み対象データが配置されるメモリ領域を、不揮発性半導体メモリ９に決定する（ステップＳ１２）。
【００８２】
書き込み対象データの重要度が低いと判断された場合（ステップＳ６）には、書き込み管理部２０は、書き込み対象データが配置されるメモリ領域として耐久性の低い不揮発性半導体メモリ１０を選択する（ステップＳ９）。さらに、書き込み管理部２０は、書き込み対象データのカラーリング情報（動的カラー情報、静的カラー情報）により、書き込み対象データの読み出し頻度、書き込み頻度の判断を行う（ステップＳ１０）。
【００８３】
書き込み対象データの読み出し頻度、書き込み頻度が高いと判断された場合（ステップＳ１１）には、書き込み管理部２０は、書き込み対象データが配置されるメモリ領域として不揮発性半導体メモリ９を選択する（ステップＳ７）。さらに、書き込み管理部２０は、書き込み対象データのカラーリング情報に基づき、書き込み対象データを揮発性半導体メモリ８にキャッシュするか否か（カラーリング情報によるキャッシュ方式）の判断を行い（ステップＳ８）、書き込み対象データが配置されるメモリ領域を不揮発性半導体メモリ９に決定する（ステップＳ１２）。
【００８４】
書き込み対象データの読み出し頻度、書き込み頻度が低いと判断された場合（ステップＳ１１）には、書き込み管理部２０は、書き込み対象データのカラーリング情報に基づき、書き込み対象データを不揮発性メインメモリ８にキャッシュするか否か（カラーリング情報によるキャッシュ方式）の判断を行い（ステップＳ８）、書き込み対象データが配置されるメモリ領域を不揮発性半導体メモリ１０に決定する（ステップＳ１２）。
【００８５】
次に、図８を参照して、本実施形態に係るカラーリングテーブル１４の構成例について説明する。図８は、本実施形態に係るカラーリングテーブル１４の構成の一例を示す図である。図８に示すカラーリングテーブル１４では、図５、図６に示すカラーリング情報のうち、特に、読み出し頻度、書き込み頻度、データ寿命をカラーリング情報として用いる場合について説明する。
【００８６】
なお、カラーリング情報としては、「重要度」、「読み出し頻度、書き込み頻度」、「データ寿命」のいずれか１つを用いてもよいし、または任意の２つを組み合わせて用いてもよいし、または全てを組み合わせて用いてもよい。さらに、図６で示していない他のカラーリング情報を別途定義して用いることも可能である。
【００８７】
カラーリングテーブル１４は、データ毎にカラーリング情報を対応付け、エントリ単位で保持するテーブルである。カラーリングテーブル１４によりカラーリング情報が対応付けられるデータのデータサイズは、例えば、読み出し、書き込まれる最小のデータサイズである。例えば、読み出し、書き込まれる最小のデータサイズは、ＮＡＮＤ型フラッシュメモリのページサイズである。以下において、カラーリングテーブル１４によりカラーリング情報が対応付けられるデータのデータサイズがページサイズであるとして説明するが、これに限定されるものではない。
【００８８】
カラーリングテーブル１４の各エントリには、インデックスが付されている。
【００８９】
カラーリングテーブル１４に保持されるカラーリング情報には、静的カラー情報と、動的カラー情報とが含まれる。
【００９０】
インデックスとは、論理アドレスを基に生成される値である。メモリ管理装置１の読み出し管理部１９、書き込み管理部２０、カラーリング情報管理部２１、再配置部２３などは、データを指定する論理アドレスが与えられると、論理アドレスに対応するインデックスにより管理されているエントリを参照することで、データのカラーリング情報を取得する。
【００９１】
静的カラー情報は、静的書き込み頻度を示す値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の算出方法については、後述する。
【００９８】
後述するように、プロセッサ３ａ，３ｂ，３ｃから混成メインメモリ２に対して書き込み要求、読み出し要求が発生すると、メモリ管理装置１は、カラーリング情報を参照することにより、書き込み領域、読み出し方式等を決定する。
【００９９】
次に、図９、図１０を参照して、本実施形態に係る静的カラー情報について説明する。図９は、各種データに対する静的カラー情報（静的書き込み頻度SW_color、静的読み出し頻度SR_color、データ寿命SL_color）の設定の第１の例を示す図である。図１０は、各種データに対する静的カラー情報（静的書き込み頻度SW_color、静的読み出し頻度SR_color、データ寿命SL_color）の設定の第２の例を示す図である。
【０１００】
カーネルのテキスト領域は、通常、読み出しの頻度は高く、書き込みの頻度は低い。オペレーティングシステム２７は自身が動作するテキスト領域の静的読み出し頻度SR_colorを５、静的書き込み頻度SW_colorを１と設定する。また、オペレーティングシステム２７は、カーネルのテキスト領域のデータ寿命SL_colorは長い（LONG）と予測する。
【０１０１】
一方、カーネルのデータ領域は、通常、読み出しの頻度、書き込みの頻度がともに高い。よって、オペレーティングシステム２７は、カーネルのデータ領域について、静的読み出し頻度SR_colorを５、静的書き込み頻度SW_colorを５に設定する。
【０１０２】
カーネルに動的に確保されるデータ領域は、データが不要になると削除されるためデータ寿命SL_colorは短い（SHORT）とする。
【０１０３】
ユーザプログラムのテキスト領域は、通常、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出しの頻度は低い。ただし、プロセスがアクティブになっている状態ではカーネル同様読み出しの頻度が高くなる。このため、ユーザプログラムのテキスト領域においては、静的書き込み頻度SW_colorが１、静的読み出し頻度SR_colorが４に設定される。ユーザプログラムのテキスト領域について、データ寿命SL_colorは、そのプログラムがアンインストールされるまでの期間であるため、一般的には長くなる。よって、ユーザプログラムのテキスト領域について、データ寿命SL_colorは長い(LONG)と設定される。
【０１０４】
プログラムに動的に確保される領域は、大きく分けて２種類ある。まず１つはプログラムの実行終了とともに廃棄されるデータ（スタック領域を含む）である。これらのデータはデータ寿命SL_colorが短く、読み出しの頻度と書き込みの頻度は高い。したがって、プログラムの実行終了とともに廃棄されるデータについて、静的読み出し頻度SR_colorが４に設定され、静的書き込み頻度SW_colorが４に設定される。もう１つのプログラムに動的に確保される領域は、プログラムが新たなファイルのために生成した領域である。プログラムによって生成されたデータはデータ寿命SL_colorが長く、読み出しと書き込みの頻度は生成されるファイルの種別に依存する。
【０１０５】
プロセスによって参照されるファイルとして扱われるデータについて、ファイルのデータ寿命SL_colorは長いと設定される。
【０１０６】
例えばファイルの拡張子がSYS，dll，DRVなどで示されるようなシステムファイルが読み込まれる場合について説明する。このような拡張子を持つデータは、オペレーティングシステム２７が様々な処理を実行する場合に読み出されるファイルである。このような拡張子を持つデータは、混成メインメモリ２上にオペレーティングシステム２７がインストールされる場合に、１度書き込まれるとその後更新されることはほとんどない。これらの拡張子を持つファイルは、ファイルのなかでも比較的アクセスの頻度は高いが、プログラム(カーネル)のテキスト領域と比較してアクセスの頻度は低いと予測される。したがって、オペレーティングシステム２７は、これらの拡張子を持つデータの静的書き込み頻度SW_colorを１に設定し、静的読み出し頻度SR_colorを３に設定する。この設定は、データから予測される書き込みの頻度は極めて低く、予測される読み出しの頻度は高いことを示している。すなわち、これらの拡張子を持つデータは、オペレーティングシステム２７のアップデートや他のプログラムをインストールする場合に数度書き換わる程度であり、ほとんどリード・オンリーとして扱われると予測される。
【０１０７】
音声ファイルを編集するプログラムを使用するユーザは少ない。したがって、例えば、ＭＰ３などによって圧縮されている音楽データの書き込みの頻度は低いと考えられる。音楽データの読み出しの頻度は、書き込みの頻度よりは高いと考えられる。したがって、ＭＰ３などによって圧縮されている音楽データの静的書き込み頻度SW_colorは１、静的読み出し頻度SW_colorは２に設定される。
【０１０８】
動画編集プログラムを使用するユーザは少ない。このため、例えば、ＭＰＥＧなどによって圧縮されている動画データの書き込みの頻度は低いと考えられる。動画データの読み出しの頻度は、書き込みの頻度よりは高いと考えられる。したがって、ＭＰ３などによって圧縮されている動画データの静的書き込み頻度SW_colorは１、静的読み出し頻度SW_colorは２に設定される。
【０１０９】
テキストデータの編集プログラムを使用するユーザは多い。このため、例えば、テキストファイルの書き込みの頻度及び読み出しの頻度は、高いと考えられる。したがって、テキストファイルの静的書き込み頻度SW_colorは３、静的読み出し頻度SW_colorは３に設定される。
【０１１０】
ウェブブラウザを使用するユーザは多い。このため、ブラウザキャッシュファイルの読み出しの頻度及び書き込みの頻度は、音楽データや動画データなどのメディアファイル以上であると考えられる。したがって、ブラウザキャッシュファイルの静的書き込み頻度SW_colorは１、静的読み出し頻度SW_colorは３に設定される。
【０１１１】
例えば、ごみ箱などのようなアクセスの頻度の低いディレクトリに配置されているファイルの静的書き込み頻度SW_colorは１、静的読み出し頻度SW_colorは１に設定される。
【０１１２】
拡張子がJPEGで代表されるような写真データ、及び拡張子がMOVで代表されるようなムービーデータは、一度書き込まれると再度度書き込みが行なわれることは少ない。このような写真データ及びムービーデータはプログラムからアクセスされる頻度が少ないと予測される。したがって、オペレーティングシステム２７は、写真データ及びムービーデータの静的書き込み頻度SW_color及び静的読み出し頻度SR_colorに対して小さい値を設定する。
【０１１３】
次に、図１１を参照して、本実施形態に係るカラーリングテーブル１４の生成処理について説明する。図１１は、カラーリングテーブル１４の生成処理の一例を示すフローチャートである。カラーリングテーブル１４は、システムの初期起動時に生成される。カラーリングテーブル１４は、不揮発性半導体メモリ９，１０上の任意の領域に配置される。カラーリングテーブル１４の配置されている番地は、メモリ管理装置１の実装により決定されるとしてもよい。
【０１１４】
ステップＴ１において、情報処理装置１００は、電源が投入され、起動する。
【０１１５】
ステップＴ２において、カラーリング情報管理部２１は、カラーリングテーブル１４のベースアドレスを論理アドレスに変換し、各データについてのインデックスを生成する。
【０１１６】
ステップＴ３において、カラーリング情報管理部２１は、情報記憶部１７に、カラーリングテーブル１４のベースアドレスをセットする。情報記憶部１７は、例えばレジスタで構成される。カラーリングテーブル１４のベースアドレスは、例えばカラーリングテーブルレジスタにセットされる。
【０１１７】
次に、図１２を参照して、本実施形態に係るカラーリングテーブル１４のエントリの生成処理について説明する。図１２は、カラーリングテーブル１４のエントリの生成処理の一例を示すフローチャートである。
【０１１８】
プロセッサ３ａ，３ｂ，３ｃはプロセス６ａ，６ｂ，６ｃを実行するために用いる論理アドレス空間上の領域を確保する。論理アドレス空間上の領域を確保した段階では、確保した論理アドレスのアドレス変換情報１３の有効／無効フラグには０が設定されている。論理アドレスに対する物理アドレスの割り当ては、確保された論理アドレス空間の範囲内の論理アドレスに対して、プロセス６ａ，６ｂ，６ｃがアクセス（読み出し、書き込み）した段階で行われる。論理アドレスに対する物理アドレスの割り当てが行われると、当該論理アドレスに対応するデータに対する静的カラー情報をカラーリングテーブル１４に登録するとともに、当該論理アドレスのアドレス変換情報１３の有効／無効フラグには１が設定される。
【０１１９】
まず、プロセッサ３ａ，３ｂ，３ｃにより実行されるプロセス６ａ，６ｂ，６ｃは、新たなデータを配置するための論理アドレス空間上の領域の確保要求を出す（ステップＵ１）。論理アドレス空間上の未使用領域は、オペレーティングシステム２７が管理しており、論理アドレスはオペレーティングシステム２７により決定される。（ステップＵ２）
次に、プロセス６ａ，６ｂ，６ｃにより新たなデータが生成されると、オペレーティングシステム２７は、新たに生成されたデータの種類等に基づいて、静的カラー情報を生成する（ステップＵ３）。静的カラー情報は、生成されたデータのページサイズ毎に生成される。例えば、生成されたデータのデータサイズがページサイズより大きい場合には、データをページサイズに分割し、分割後のページサイズ毎に静的カラー情報が生成される。以下において、書き込み対象データのデータサイズがページサイズである場合を想定し説明するが、これに限定されない。
【０１２０】
次に、オペレーティングシステム２７が、情報記憶部１７にセットされたベースアドレスに基づき、カラーリングテーブル１４を参照する（ステップＵ４）。
【０１２１】
次に、オペレーティングシステム２７が、生成された静的カラー情報を、確保された論理アドレスに対応するインデックスが付されたカラーリングテーブル１４のエントリに登録する（ステップＵ５）。
【０１２２】
プロセッサ３ａ，３ｂ，３ｃにより実行されるプロセス６ａ，６ｂ，６ｃは、オペレーティングシステム２７による論理アドレス空間の確保が成功した後、確保された論理アドレス空間に対し、読み出し要求、又は、書き込み要求を出す。このとき、アドレス管理部１８は、書き込みが生じた論理アドレスに対する物理アドレスを決定するが、この処理は後に説明する。
【０１２３】
以上の処理により、プロセッサ３ａ，３ｂ，３ｃがプロセス６ａ，６ｂ，６ｃを実行することにより、新たなデータが生成され、新たなデータが混成メインメモリ２に書き込まれる場合に、新たに生成されたデータに対してカラーリング情報が生成され、カラーリングテーブル１４の新たなエントリに登録される。これにより、新たなデータを混成メインメモリ２に書き込むことが可能となる。
【０１２４】
次に、図１３、図１４を参照して、カラーリングテーブル１４のエントリのアライメントについて説明する。図１３は、カラーリングテーブル１４のエントリのアライメントの第１の例を示す図である。図１４は、カラーリングテーブル１４のエントリのアライメントの第２の例を示す図である。
【０１２５】
カラーリングテーブル１４のエントリは、データの最少の読み書きサイズ（例えばＮＡＮＤ型フラッシュメモリのページサイズ）に対応しているが、プロセス６ａ，６ｂ，６ｃは、論理アドレス空間にデータをマップする際、データの最少の読み書きサイズにアライメントしてマップすることを義務づけられていない。このため、カラーリングテーブル１４の１エントリに対して複数のデータが対応する可能性がある。
【０１２６】
このような場合、オペレーティングシステム２７は、図１３に示すように、１エントリに対応する複数のデータのうちで、最も読み出し頻度及び書き込み頻度が高いと予測されるデータを代表とする。
【０１２７】
あるいは、オペレーティングシステム２７は、図１４に示すように、１エントリを占めるデータのサイズを重みとし、各データの静的書き込み頻度SW_color、静的読み出し頻度SR_colorの加重平均値を設定する。
【０１２８】
カラーリングテーブル１４によって示されている静的書き込み頻度SW_colorと静的読み出し頻度SR_colorとは、プログラム開発者によりオペレーティングシステム２７などのソースコードに埋め込まれるか、オペレーティングシステム２７によって予測される。しかしながら、プログラム開発者が意図した場合と別の用途でファイルや写真データが使われる場合もある。一般的に、写真データなどのようなデータのアクセスはほとんどが読み出しであり、写真データの内容が書き換えられることは少ない。しかしながら、写真データを加工するプログラムが特定の写真データを扱う場合、加工中の写真データが頻繁に書き換えられることがある。このような場合、カラーリングテーブル１４の静的書き込み頻度SW_colorと静的読み出し頻度SR_colorをユーザが書き換え可能であれば、特定のファイルを、より高速で書き換え回数に余裕のある領域に移動することが可能になる。
【０１２９】
このような動作を実現させるため、各データのカラーリング情報は、オペレーティングシステム２７のソフトウェア上で書き換えられるように、オペレーティングシステム２７のファイルシステムを設計することが好ましい。たとえば一般的なブラウザでファイルのプロパティを開けば、カラーリングテーブル１４に相当する属性がＧＵＩ画面上で見ることができるように情報処理装置１００が設計されており、その初期データをユーザがＧＵＩ上で変更できるようオペレーティングシステム２７を設計することが好ましい。
【０１３０】
次に、図１５を参照して、動的カラー情報と静的カラー情報に基づいて動的書き込み頻度DW_colorと動的読み出し頻度DR_colorを算出する方法について説明する。図１５は、動的カラー情報と静的カラー情報に基づいて動的書き込み頻度DW_colorと動的読み出し頻度DR_colorを算出する方法の一例を示す図である。図１５において、横軸は時間であり、縦軸はアクセス回数（読み出し回数DWC_color、又は書き込み回数DRC_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とが算出される。
【０１３３】
次に、算出された動的書き込み頻度DW_colorと、動的読み出し頻度DR_colorとに基づいて、当該データに対するアクセスの頻度の高低が判断される。アクセス頻度の高低の判断は、例えば、当該データが書き込まれている混成メインメモリ２のメモリ固有情報１１、算出された動的書き込み頻度DW_color及び動的読み出し頻度DR_colorに基づいて行われる。
【０１３４】
図１５においては、まず、式Ａの傾きとして「アクセス可能上限回数×重み１／データ寿命」を設定し、式Ｂの傾きとして「アクセス可能上限回数×重み２／データ寿命」を設定する。ここで、重み１＞重み２である。重み１、重み２は、動的書き込み頻度DW_color、動的読み出し頻度DR_colorを算出する当該データを書き込む混成メインメモリ２に応じて、任意に設定することができる。
【０１３５】
平均変化率α＜式Ａの傾き、が成り立つ場合、このデータの動的アクセス頻度は、高いと判断される。
【０１３６】
式Ｂの傾き＜平均変化率α≦式Ａの傾き、が成り立つ場合、このデータの動的アクセス頻度は、中と判断される。
【０１３７】
平均変化率α≦式Ｂの傾き、が成り立つ場合、このデータの動的アクセス頻度は、低いと判断される。
【０１３８】
次に、図１６を参照して、混成メインメモリ２からデータを読み出す処理について説明する。図１６は、データの読み出し処理の一例を示すフローチャートである。
【０１３９】
まず、プロセッサ３ａ，３ｂ，３ｃにより実行されるプロセス６ａ，６ｂ，６ｃが、データ（読み出し対象データ）の読み出し要求を発生させる（ステップＷ１）。
【０１４０】
次に、プロセッサ３ａ，３ｂ，３ｃに備えられているページテーブル（図示せず）により、読み出し対象データを指定する仮想アドレスが論理アドレスに変換される（ステップＷ２）。
【０１４１】
次に、読み出し管理部１９は、アドレス変換情報１３の読み出し対象データに対応する論理アドレスのエントリの有効／無効フラグを参照する（ステップＷ３）。
【０１４２】
アドレス変換情報１３の有効／無効フラグが０のとき（ステップＷ３ａ）、論理アドレスに対する書き込みが一度も発生していないのでデータは不定である。この場合、読み出し管理部１９は読み出し要求サイズ分の０データを読み出したようにふるまい（ステップＷ８）、ステップＷ１０の処理に移る。
【０１４３】
アドレス変換情報１３の有効／無効フラグが１のとき（ステップＷ３ａ）、論理アドレスに対するデータの書き込みが少なくとも一度発生している。この場合、読み出し管理部１９は、アドレス変換情報１３を参照し、論理アドレスに対応するデータが揮発性半導体メモリ８に記憶されているか判断する（ステップＷ４）。
【０１４４】
読み出し管理部１９は、論理アドレスに対応するデータが揮発性半導体メモリ８に記憶されていると判断された場合（ステップＷ４ａ）、揮発性半導体メモリ８から読み出しを行うため、処理はステップＷ１０に移る。
【０１４５】
読み出し管理部１９は、論理アドレスに対応するデータが揮発性半導体メモリ８に記憶されていないと判断された場合（ステップＷ４ａ）、カラーリングテーブル１４を参照して、不揮発性半導体メモリ９，１０からの読み出し対象データの読み出し方式を決定する（ステップＷ５）。読み出し方式の決定処理については後述する。
【０１４６】
次に、読み出し管理部１９は、読み出し対象データが記憶されている不揮発性半導体メモリ９，１０のメモリ固有情報１１と、メモリ使用情報１２を参照し、読み出し対象データの移動（再書き込み）の要否を判断する（ステップＷ６）。
【０１４７】
読み出し管理部１９は、読み出し対象データの移動が不要であると判断された場合（ステップＷ６ａ）には、ステップＷ９に移る。
【０１４８】
読み出し管理部１９は、読み出し対象データの移動が必要であると判断された場合（ステップＷ６ａ）には、読み出し対象データを不揮発性半導体メモリ９，１０の別の領域への移動を行い（ステップＷ７）、その後、処理はステップＷ９に移る。
【０１４９】
ステップＷ９において、メモリ使用情報管理部２２は、不揮発性メモリ領域から読み出しを行った際に、メモリ使用情報１１の読み出し回数をインクリメントする。ステップＷ１０において、動的カラー情報管理部２５は、データの読み出しを行った際に、カラーリングテーブル１４のデータの読み出し回数DRC_colorをインクリメントする。ステップＷ１１において、読み出し管理部１９は、論理アドレスとアドレス変換情報１３とから得られる物理アドレスに基づいてデータの読み出しを行う。
【０１５０】
次に、図１７を参照して、データの読み出し方式の決定処理について説明する。図１７は、データの読み出し方式の決定処理の一例を示すフローチャートである。読み出し方式の決定処理は不揮発性半導体メモリ９、１０のメモリ領域からデータを読み出す時に、揮発性半導体メモリ８のメモリ領域をキャッシュとして使用するか否かを判断する処理である。本処理は図１６のステップＷ５に該当する。
【０１５１】
前述のように、混成メインメモリ２は、揮発性半導体メモリ８と、不揮発性半導体メモリ９，１０とを具備する。本実施形態では、揮発性半導体メモリ８の一部を、キャッシュメモリとして用いることも可能である。混成メインメモリ２の不揮発性半導体メモリ９，１０からデータを読み出す場合には、読み出される頻度が高いデータは、揮発性半導体メモリ８にキャッシュされた上で、読み出される。一方、読み出される頻度が低いデータは、揮発性半導体メモリ８にキャッシュされずに、不揮発性半導体メモリ９，１０から直接読み出される。
【０１５２】
まず、読み出し管理部１９は、カラーリングテーブル１４を参照することにより、読み出し対象データの静的読み出し頻度SR_colorを参照する（ステップＶ１）。静的読み出し頻度SR_colorが大きい（例えば、SR_color＝５）場合には（ステップＶ１ａ）、読み出し対象データを揮発性半導体メモリ９，１０から揮発性メインメモリ８（ＤＲＡＭ領域）にキャッシュするため、処理はステップＶ４に移る。
【０１５３】
読み出し管理部１９は、読み出し対象データの静的読み出し頻度SR_colorが小さい（例えば、SR_color＜＝４）場合には（ステップＶ１ａ）、アドレス変換情報１３を参照することにより、読み出し対象データが書き込まれている領域を確認し（ステップＶ２）、さらに、アクセス頻度算出部２４は、読み出し対象データの動的読み出し頻度DR_colorを算出する（ステップＶ３）。
【０１５４】
読み出し管理部１９は、読み出し対象データの静的読み出し頻度SR_colorと動的読み出し頻度DR_colorとに対して「SR_color≧３又はDR_colorが高い」が成り立つ場合には（ステップＶ３ａ）、揮発性半導体メモリ８（ＤＲＡＭ領域）に読み出し対象データを書き込む空き領域があるか否か確認する（ステップＶ４）。読み出し管理部１９は、揮発性半導体メモリ８に、空き領域がある場合には（ステップＶ４ａ）、読み出し対象データを揮発性半導体メモリ９，１０から揮発性半導体メモリ８（ＤＲＡＭ領域）にキャッシュする（ステップＶ５）。読み出し管理部１９は、揮発性メモリ８に、空き領域がない場合には（ステップＶ４ａ）、揮発性半導体メモリ８に記憶されているデータを不揮発性半導体メモリ９，１０にライトバックし、揮発性半導体メモリ８に記憶されているデータを消去することにより、空き領域を確保する（ステップＶ６）。ライトバック処理の後、読み出し管理部１９は、揮発性半導体メモリ８の空き領域を再度確認する（ステップＶ７）。揮発性半導体メモリ８に空き領域が存在する場合（ステップＶ７ａ）、処理はステップＶ５に移り、存在しない場合（ステップＶ７ａ）、処理はステップＶ８に移る。
【０１５５】
読み出し管理部１９は、読み出し対象データの静的読み出し頻度SR_colorと動的読み出し頻度DR_colorとに対して「SR_color≧３又はDR_colorが高い」が成り立たない場合には（ステップＶ３ａ）、読み出し対象データを、揮発性半導体メモリ８にキャッシュせずに、不揮発性半導体メモリ９，１０から直接読み出す（ステップＶ８）。
【０１５６】
以上のように、静的読み出し頻度SR_color、動的読み出し頻度DR_colorを参照することで、読み出し方式が決定される。
【０１５７】
この図１７においては、データ寿命SL_colorの判断は行われていない。この理由について説明する。後述するように、書き込み時においては、データ寿命SL_colorの短いデータは揮発性半導体メモリ８に配置される。このため、有効／無効フラグが１であり、データ寿命SL_colorが短いことを示すデータは、揮発性半導体メモリ８に記憶されることになる。この結果、図１７において、データ寿命SL_colorに基づく判断は不要となる。
【０１５８】
次に、データの図９、図１０に示すデータについての読み出し方式について具体的に説明する。図９、図１０に示すデータは、図１７で説明したデータの読み出し方式の決定処理のフローチャートに従うことにより、以下のように読み出し方式が決定される。
【０１５９】
まず、静的読み出し頻度SR_colorに５、静的書き込み頻度SW_colorに１が設定されているカーネルのテキスト領域は、読み出しの頻度が高く、書き込みの頻度は低いと推測される。このカーネルのテキスト領域における第１のデータは、オペレーティングシステム２７が様々な処理をする際に読み出されるため、読み出し回数は多くなり、さらに高速に読み出される必要がある。
【０１６０】
メモリ管理装置１は、不揮発性半導体メモリ９，１０から読み出された第１のデータを、プロセッサ３ｂの２次キャッシュメモリ５ｂ又は１次キャッシュメモリ４ｂに対して書き込むとともに、並行して、混成メインメモリ２内の揮発性半導体メモリ８のメモリ領域にも読み出された第１のデータを転送する。
【０１６１】
再度同じ第１のデータが読み出される場合には、プロセッサ３ｂの２次キャッシュメモリ５ｂ又は１次キャッシュメモリ４ｂ上から、又はキャッシュヒットしない場合は混成メインメモリ２の揮発性半導体メモリ８のメモリ領域から、第１のデータの読み出しが行なわれる。混成メインメモリ２上の揮発性半導体メモリ８のメモリ領域に記憶された第１のデータは、揮発性半導体メモリ８のメモリ領域が枯渇しない限り、電源がオフされるまで揮発性半導体メモリ８上に保持される。
【０１６２】
次に、静的読み出し頻度SR_colorに５、静的書き込み頻度SW_colorに５が設定指定されているカーネルのデータ領域は、システム（情報処理装置１００）が起動するたびに新たに生成、初期化される領域である。このため、カーネルのデータ領域における第２のデータ寿命SL_colorは短いと推測される。メモリ管理装置１は、最初に第２のデータの寿命SL_colorを参照する。第２のデータは、揮発性半導体メモリ８のメモリ領域が枯渇しない限り、揮発性半導体メモリ８上に存在し、電源がオフされるとともに揮発性半導体メモリ８から消去される。
【０１６３】
次に、静的読み出し頻度SR_colorに４、静的書き込み頻度SW_colorに１が設定されているユーザプログラムの領域は、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出しの頻度は低い。ユーザプログラムの領域における第３のデータは揮発性半導体メモリ８のメモリ領域に配置されるが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がＦＵＬＬに埋まった場合、揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。ライトバックされる第３のデータの順番は、カラーリングテーブル１４の情報に基づいて決定される。ライトバックされる場合には、読み出し回数が少ない順に、第３のデータが揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０上に移される。
【０１６４】
静的書き込み頻度SR_colorに４、静的読み出し頻度SW_colorに４が設定されている、プログラムによって動的に確保される領域における第４のデータのうち、データ寿命SL_colorが短いと指定された第４のデータは、カーネルのデータ領域と同様に、揮発性半導体メモリ８のメモリ領域が枯渇しない限り、揮発性半導体メモリ８上に存在し、電源がオフされるとともに揮発性半導体メモリ８から消去される。
【０１６５】
一方、データ寿命SL_colorが長いと設定されている第４のデータは、揮発性半導体メモリ８のメモリ領域に配置されるが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がＦＵＬＬに埋まった場合、揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。
【０１６６】
次に、プロセスに参照されるファイルとして扱われるデータについて説明する。上記図１０において、プロセスに参照されるファイルとして扱われるデータのデータ寿命SL_colorはすべて長いと設定されている。
【０１６７】
静的書き込み頻度SW_colorに１、静的読み出し頻度SR_colorに３が設定されているファイル類に含まれる第５のデータは、書き込みの頻度が極めて低く、予測される読み出しの頻度が高いことがオペレーティングシステム２７によって推測される。このとき、メモリ管理装置１は、第５のデータを揮発性半導体メモリ８のメモリ領域に配置するが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がＦＵＬＬに埋まった場合、揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。
【０１６８】
静的書き込み頻度SW_colorに１、静的読み出し頻度SR_colorに２が設定されているファイル類に含まれる第６のデータは、静的書き込み頻度SW_colorが極めて低く、予測される静的読み出し頻度SR_colorも低いことがオペレーティングシステム２７によって推測される。このように、メモリ管理装置１は、静的読み出し頻度SR_colorが高いと判断されていない場合、読み出し時に揮発性半導体メモリ８のキャッシュを介さず、不揮発性半導体メモリ９，１０に直接アクセスする。
【０１６９】
静的書き込み頻度SW_colorに１、静的読み出し頻度SR_colorに１が設定されているファイル類に含まれる第７のデータは、静的書き込み頻度SW_colorが極めて低く、予測される静的読み出し頻度SR_colorも極めて低いことがオペレーティングシステム２７によって推測される。このように、メモリ管理装置１は、静的読み出し頻度が高いと判断されていない場合、読み出し時に揮発性半導体メモリ８のキャッシュを介さず、不揮発性半導体メモリ９，１０に直接アクセスする。
【０１７０】
以上のように、読み出し対象データの読み出し方式は、読み出し対象データのカラーリング情報に基づき決定される。これにより、読み出し対象データの特性（静的読み出し頻度SR_color、静的書き込み頻度SW_color、データ寿命SL_color）に合った読み出し方式を用いることが可能となり、データの読み出し効率の向上が図られる。
【０１７１】
次に、図１８を参照して、混成メインメモリ２へのデータの書き込み処理について説明する。図１８は、データの書き込み処理の一例を示すフローチャートである。
【０１７２】
まず、プロセッサ３ａ，３ｂ，３ｃにより実行されるプロセス６ａ，６ｂ，６ｃが、データ（書き込み対象データ）の書き込み要求を発生させる（ステップＸ１）。
【０１７３】
次に、プロセッサ３ａ，３ｂ，３ｃに備えられているページテーブル（図示せず）により、書き込み対象データを指定する仮想アドレスが論理アドレスに変換される（ステップＸ２）。
【０１７４】
次に、書き込み管理部２０は、カラーリングテーブル１４を参照することにより、混成メインメモリ２のうちの書き込み対象のメモリ領域を決定する（ステップＸ３）。書き込み対象メモリ領域の選定については後述する。
【０１７５】
書き込み管理部２０は、ステップＸ３により選択された書き込み対象メモリが揮発性半導体メモリ８か否か判断する（ステップＸ４）。判断の結果、選択された書き込み対象メモリが揮発性半導体メモリ８の場合（ステップＸ４ａ）、ステップＸ７の処理が実行され、書き込み対象メモリが不揮発性メモリの場合（ステップＸ４ａ）、ステップＸ５の処理が実行される。
【０１７６】
ステップＸ５において、書き込み管理部２０は、メモリ使用情報１１とカラーリングテーブル１４を参照し、不揮発性半導体メモリ９，１０のメモリ領域中の書き込み対象ブロック領域を決定する。ステップＸ６において、アドレス管理部１８は、書き込み対象ブロック中のページの物理アドレスに基づきアドレス変換情報１３を更新する。不揮発性半導体メモリ９，１０がＮＡＮＤ型フラッシュメモリの場合、同一物理アドレスに対する上書きは行われないため、書き込みに伴う物理アドレスの更新が必要となる。
【０１７７】
書き込み管理部２０は、書き込み先物理アドレスが決定した後、データの書き込み処理を行う（ステップＸ７）。続いて、アドレス管理部１８は、アドレス変換情報１３の有効／無効フラグを１にセットする（ステップＸ８）。動的カラー情報管理部２５はカラーリングテーブル１４の書き込み回数DWC_colorをインクリメントし（ステップＸ９）、メモリ使用情報管理部２２は、メモリ使用情報１１の書き込み回数をインクリメントする（ステップＸ１０）。
【０１７８】
次に、図１９を参照して、データの書き込み対象メモリ領域の決定処理について説明する。図１９は、データの書き込み先領域の決定処理の一例を示すフローチャートである。
【０１７９】
ステップＹ１において、書き込み管理部２０は、書き込み対象データのデータ寿命SL_colorを参照する。
【０１８０】
ステップＹ２において、書き込み管理部２０は、データ寿命SL_colorが所定の値より長いか、短いか判断する。データ寿命SL_colorが所定の値以上の場合、処理は、ステップＹ９に移る。
【０１８１】
データ寿命が所定の値より短い場合、ステップＹ３において、書き込み管理部２０は、ＤＲＡＭ領域の空き領域を確認し、ステップＹ４において、書き込み管理部２０は、ＤＲＡＭ領域に空き領域があるか否か判断する。
【０１８２】
ＤＲＡＭ領域に空き領域がある場合、ステップＹ５において、書き込み管理部２０は、書き込み対象データをＤＲＡＭ領域に書き込む。
【０１８３】
ＤＲＡＭ領域に空き領域がない場合、ステップＹ６において、書き込み管理部２０は、ＤＲＡＭ領域から他の不揮発性半導体メモリへのライトバック処理を実行する。そして、ステップＹ７において、書き込み管理部２０は、ＤＲＡＭ領域の空き領域を確認し、ステップＹ８において、書き込み管理部２０は、ＤＲＡＭ領域に空き領域があるか否か判断する。
【０１８４】
ＤＲＡＭ領域に空き領域がある場合、処理は、ステップＹ５に移り、書き込み管理部２０は、書き込み対象データをＤＲＡＭ領域に書き込む。
【０１８５】
ＤＲＡＭ領域に空き領域がない場合、処理はステップＹ９に移る。
【０１８６】
ステップＹ９において、書き込み管理部２０は、カラーリングテーブル１４で管理されている書き込み対象データの静的書き込み頻度SW_colorを参照する。
【０１８７】
ステップＹ１０において、書き込み管理部２０は、静的書き込み頻度SW_colorに５が設定されているか否か（書き込み対象データの静的書き込み頻度SW_colorが高いか否か）、判断する。
【０１８８】
静的書き込み頻度SW_colorに５が設定されている場合、処理はＹ１３に移り、書き込み管理部２０は、書き込み対象データの書き込み先としてＢ領域を選択する。
【０１８９】
静的書き込み頻度SW_colorに５ではない値（５未満の値）が設定されている場合、ステップＹ１１において、メモリ管理装置１は、カラーリングテーブル１４で管理されている書き込み対象データの静的読み出し頻度SR_colorを参照する。
【０１９０】
ステップＹ１２において、書き込み管理部２０は、静的読み出し頻度SR_colorに１〜５のどの値が設定されているか判断する。
【０１９１】
このステップＹ１２において静的読み出し頻度SR_colorに５が設定されている場合、ステップＹ１３において、書き込み管理部２０は、書き込み対象データの書き込み先として、Ｂ領域を選択する。
【０１９２】
ステップＹ１２において静的読み出し頻度SR_colorに４が設定されている場合、ステップＹ１４において、書き込み管理部２０は、書き込み対象データの書き込み先として、Ａ領域を選択する。
【０１９３】
このステップＹ１２において静的読み出し頻度SR_colorに３が設定されている場合、ステップＹ１５において、書き込み管理部２０は、データのカラーリング情報に基づいて、データの動的書き込み頻度DW_colorを算出する。次に、ステップＹ１６において、書き込み管理部２０は、カラーリングテーブル１４で管理されている書き込み対象データの静的書き込み頻度SW_colorを参照する。
【０１９４】
ステップＹ１７において、書き込み管理部２０は、「静的書き込み頻度SW_colorが３以上であるか、又は、データの動的書き込み頻度DW_colorが高レベルである」ことが成り立つか否か判断する。
【０１９５】
このステップＹ１７において「SW_colorが３以上であるか、又は、データの動的書き込み頻度DW_colorが高レベルである」が成り立たない場合、処理はステップＹ１４に移り、書き込み管理部２０は、Ａ領域を選択する。
【０１９６】
ステップＹ１７において「SW_colorが３以上であるか、又は、データの動的書き込み頻度DW_colorが高レベルである」が成り立つ場合、処理はステップＹ１８に移り、書き込み管理部２０は、Ｃ領域を選択する。
【０１９７】
上記ステップＹ１２において静的読み出し頻度SR_colorに２が設定されている場合、ステップＹ１９において、書き込み管理部２０は、データのカラーリング情報に基づいて、データの動的書き込み頻度DW_colorを算出する。
【０１９８】
ステップＹ２０において、書き込み管理部２０は、カラーリングテーブル１４で管理されている書き込み対象データの静的書き込み頻度SW_colorを参照する。
【０１９９】
ステップＹ２１において、書き込み管理部２０は、「SW_colorが３以上であるか、又は、算出された動的書き込み頻度DW_colorが高レベルである」ことが成り立つか否か判断する。
【０２００】
このステップＹ２１において「SW_colorが３以上であるか、又は、算出された動的書き込み頻度DW_colorが高レベルである」が成り立つ場合、処理はステップＹ１８に移り、書き込み管理部２０は、Ｃ領域を選択する。
【０２０１】
ステップＹ２１において「SW_colorが３以上であるか、又は、算出された動的書き込み頻度DW_colorが高レベルである」が成り立たない場合、処理はステップＹ２２に移る。
【０２０２】
ステップＹ２２において、書き込み管理部２０は、「SW_colorが２以上であるか、又は、算出された動的書き込み頻度DW_colorが中レベルである」ことが成り立つか否か判断する。
【０２０３】
このステップＹ２２において「SW_colorが２以上であるか、又は、算出された動的書き込み頻度DW_colorが中レベルである」が成り立つ場合、処理はステップＹ２３に移り、書き込み管理部２０は、Ｄ領域を選択する。
【０２０４】
ステップＹ２２において「SW_colorが２以上であるか、又は、算出された動的書き込み頻度DW_colorが中レベルである」が成り立たない場合、処理はステップＹ２４に移り、書き込み管理部２０は、Ｅ領域を選択する。
【０２０５】
上記ステップＹ１２において静的読み出し頻度SR_colorに１が設定されている場合、ステップＹ２５において、書き込み管理部２０は、データのカラーリング情報に基づいて、データの動的書き込み頻度DW_colorを算出する。
【０２０６】
ステップＹ２６において、書き込み管理部２０は、カラーリングテーブル１４で管理されている書き込み対象データの静的読み出し頻度SW_colorを参照する。その後、処理はステップＹ２１に移る。
【０２０７】
例えば、オペレーティングシステム２７の開発者は、読み出し管理部１９のデータ読み出し方式と書き込み管理部２０データ書き込み方式の実装に対して、上記図９及び図１０に示すような設定を行う。
【０２０８】
例えば、SR_colorに５、SW_colorに１が設定されているカーネルのテキスト領域における第１のデータは読み出される回数が多く、書き込まれる回数は少ないと推測される。第１のデータは、上記図１７に示されている読み出し方式の決定動作に基づいて、システム稼働中に揮発性半導体メモリ８に移され読み書きされる。このため、第１のデータが実際に不揮発性半導体メモリ９，１０に書き込まれる頻度は低い。しかし、第１のデータの重要性は高いため、この図１９において、書き込み管理部２０は、第１のデータを、ＳＬＣである不揮発性半導体メモリ９のＢ領域に書き込む。
【０２０９】
次に、SR_colorに５、SW_colorに５が設定されているカーネルのデータ領域は、情報処理装置１００が起動するたびに新たに生成、初期化される領域なので、カーネルのデータ領域における第２のデータのデータ寿命は短いと推測される。書き込み管理部２０は、最初に第２のデータのデータ寿命SL_colorを参照する。第２のデータは、情報処理装置１００の稼働中に必ず揮発性半導体メモリ８上に存在し、電源がオフされるとともに揮発性半導体メモリ８から消去される。したがって、第２のデータは、不揮発性半導体メモリ９，１０のメモリ領域に書き込まれない。
【０２１０】
次に、SR_colorに４、SW_colorに１が設定されているユーザプログラムの領域は、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出し頻度は低い。ユーザプログラムの領域における第３のデータは、上記図１６に示した読み出し方式によって長期にわたりアクセスされない場合にのみ不揮発性半導体メモリ９，１０のメモリ領域に書き込まれる。したがって、第３のデータが不揮発性半導体メモリ９，１０に書き込まれる頻度は低い。第３のデータは、カーネルのテキスト領域におけるデータと比較して重要度は低いため、図１９ではＭＬＣ領域であるＡ領域に書き込まれる。
【０２１１】
SR_colorに４、SW_colorに４が設定されているプログラムに動的に確保される領域における第４のデータのうち、データ寿命SL_colorが短いと設定されている第４のデータは、カーネルのデータ領域と同様に、情報処理装置１００稼働中に必ず揮発性半導体メモリ８上に存在する。書き込み管理部２０は、最初にデータ寿命SL_colorを参照する。第４のデータは、システム稼働中に必ず揮発性半導体メモリ８上に存在し、電源がオフされるとともに揮発性半導体メモリ８から消去されるので不揮発性半導体メモリ９，１０のメモリ領域に書き込まれない。
【０２１２】
一方、データ寿命SL_colorが長いと設定されている第４のデータは、揮発性半導体メモリ８のメモリ領域に配置されるが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がＦＵＬＬに埋まった場合、揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。プログラムのテキスト領域はデータの重要度が高いため、プログラムのテキスト領域におけるデータは、ＳＬＣであるＣ領域に書き込まれる。
【０２１３】
次にプロセスによって参照されるファイルとして扱われるデータについて説明する。図１０では、プロセスによって参照されるファイルのデータ寿命SL_colorはすべて長いと設定されている。
【０２１４】
SW_colorに１、SR_colorに３が設定されているシステムファイル類における第５のデータは、書き込み頻度が極めて低く、予測される読み出し頻度が高いことがオペレーティングシステム２７によって推測される。このとき、書き込み管理部２０は、第５のデータを揮発性半導体メモリ８のメモリ領域に配置するが、混成メインメモリ２の揮発性半導体メモリ８のメモリ領域がＦＵＬＬに埋まった場合、第５のデータは揮発性半導体メモリ８上から不揮発性半導体メモリ９，１０のメモリ領域へのライトバック対象となる。第５のデータの書き込み頻度は低いと判断されるので書き込み管理部２０は第５のデータをＭＬＣ領域へ配置する。
【０２１５】
SW_colorに３、SR_colorに３が設定されているファイル類は、書き込み頻度が極めて高く、予測される読み出し頻度も高いことがオペレーティングシステム２７によって推測される。したがって、書き込み管理部２０は、SW_colorに３、SR_colorに３が設定されているファイル類におけるデータをＳＬＣ領域へ配置する。
【０２１６】
SW_colorに１、SR_colorに２が設定されているファイル類に含まれる第６のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も低いことがオペレーティングシステム２７によって推測される。第６のデータは、ファイルとしての重要度も低いと判断されるため、書き込み管理部２０は、第６のデータをＭＬＣ領域へ配置する。
【０２１７】
SW_colorに１、SR_colorに１が設定されているファイル類に含まれる第７のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も極めて低いことがオペレーティングシステム２７によって推測される。第７のデータについては、ファイルとしての重要度も低いと判断されるため、書き込み管理部２０は、第７のデータをＭＬＣ領域へ配置する。
【０２１８】
上記の処理により書き込み対象のメモリ領域が決定された場合、書き込み管理部２０は、書き込み先の物理アドレスを決定する。この場合、書き込み管理部２０は、カラーリングテーブル１４を参照し、書き込み先の物理アドレスを適切に選択することでウェアレベリングの発生を抑え、不要な消去処理を低減する。
【０２１９】
ここでウェアレベリングとは、例えば、消去回数が最大のブロックと、消去回数が最小のブロックとの消去回数の差が、所定の閾値以内に収まるように、ブロック間でデータの入れ替え（交換）を行うことを意味する。例えば、ＮＡＮＤ型フラッシュメモリは消去処理なしでのデータ上書きができないため、データ移動先は未使用のブロックである必要があり、元々データを記憶していたブロックの消去処理が発生することになる。
【０２２０】
次に、図２０を参照して、データに対する書き込み対象ブロックの決定処理について説明する。図２０は、データに対する書き込み対象ブロックの決定処理について説明するための図である。
【０２２１】
不揮発性半導体メモリ９，１０は、ブロック単位でデータの消去が行われる。不揮発性半導体メモリ９，１０のブロック領域毎の消去回数ECは、メモリ使用情報１１を参照することにより取得することができる。ブロック領域の消去回数の上限値（消去可能上限回数）に対する消去回数ECの割合を消耗率とする。
【０２２２】
ブロック領域の消去回数ECが、当該ブロック領域の消去可能上限回数に達している場合には、消耗率は１００％である。消耗率が１００％の場合には、当該ブロック領域へのデータの書き込みは行われない。
【０２２３】
ブロック領域の消去回数ECが、当該ブロック領域の消去回数の上限値に近い場合（例えば、９０％）には、当該ブロック領域に対するデータの書き込みを少なくする。書き込み管理部２０は、カラーリングテーブル１４を参照することにより、書き込み頻度（静的書き込み頻度SW_color、動的書き込み頻度DW_color）の低い書き込み対象データ（例えば、SW_colorが１、DW_colorが「中」）を、消耗率の高いブロック領域（例えば、消耗率９０％未満）に書き込む。
【０２２４】
一方、ブロック領域の消去回数ECが、当該ブロック領域の消去回数の上限値より低い場合（例えば、消耗率１０％）には、当該ブロック領域に対するデータの書き込みは、多くてもよい。書き込み管理部２０は、カラーリングテーブル１４を参照することにより、書き込み頻度（静的書き込み頻度SW_color、動的書き込み頻度DW_color）の高い書き込み対象データ（例えば、SW_colorが５、DW_colorが「高」）を、消耗率の低いブロック領域（例えば、消耗率１０未満）に書き込む。
【０２２５】
以上のように、書き込み対象データを書き込むブロック領域は、書き込み対象データのカラーリング情報と、ブロック領域の消耗率に基づいて決定する。これにより、書き込み対象データの特性（書き込み頻度）に合った書き込み対象ブロック領域を選択することができ、データの信頼性の向上が図れる。また、以下において説明するように、混成メインメモリの寿命の延ばすことが可能となる。
【０２２６】
次に、図２１乃至図２５を参照して、書き込み対象データを書き込むブロック領域を、書き込み対象データのカラーリング情報、メモリ使用情報１１、メモリ固有情報１２に基づいて決定する処理についての詳細と効果について説明する。
【０２２７】
図２１は、不揮発性半導体メモリ９，１０の任意のブロック領域における消去回数の推移の一例を示すグラフである。この図２１において、縦軸は消去回数、横軸は時間を表す。
【０２２８】
時間の経過により各ブロック領域における理想的な消去回数は変化する。例えばＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリ９，１０を使用する情報処理装置１では、将来的に不揮発性半導体メモリ９，１０が劣化し、不揮発性半導体メモリ９，１０を交換する必要が生じる。メモリ交換期までに不揮発性半導体メモリ９，１０の多数のブロック領域を使用するためには、ウェアレベリングによる消去回数の平準化が必要である。図２１では、不揮発性半導体メモリ９，１０の任意のブロック領域における消去回数の推移を示している。ブロック領域に対して期待されている寿命に達した時点で、ブロック領域の消去回数が消去可能上限回数に達することが好ましい。
【０２２９】
例えば、すべてのブロック領域が図２１で示した消去回数の推移に従うためには、ウェアレベリングにおいて各ブロック領域の消去回数の差に対する閾値を小さく設定することも可能である。
【０２３０】
図２２は、ウェアレベリングにおいて消去回数の差に対する閾値を小さく設定した場合の変化の一例を示すグラフである。
【０２３１】
図２２における破線は各ブロック領域の消去回数のばらつきの範囲を示している。図２２に示すように、閾値を小さくすることにより、各ブロック領域の消去回数のばらつきは小さくなるが、ウェアレベリングのための消去処理の発生回数が増加し、この結果、不揮発性半導体メモリ９，１０全体の寿命が短くなる可能性がある。
【０２３２】
書き込み管理部２０は、消去回数の分散を低減させ、ウェアレベリングによる消去処理の発生回数を抑えるために、データを書き込む際に、メモリ使用情報１１、メモリ固有情報１２、カラーリングテーブル１４に基づいた消去ブロック領域の選択を行う。
【０２３３】
図２３は、消去回数に応じたブロック領域のグループ分けの一例を示すグラフである。
【０２３４】
図２４は、消去回数に応じたブロック領域のグループ分けの判断基準を表す図である。
【０２３５】
本実施形態においては、ブロック領域毎に消去回数によるグループ分けが行われる。ブロック領域のグループ分けの結果を示す情報は、メモリ使用情報１１として保存される。なお、ブロック領域のグループ分けの結果を示す情報は、メモリ固有情報１２として保存されるとしてもよい。
【０２３６】
図２３の太線は、最小の消去回数の推移を示しており、破線はウェアレベリングの閾値を表している。図２３に示すように、各ブロック領域はウェアレベリングの閾値の範囲内（ばらつきの範囲内）でそれぞれの消去回数のグループに分類される。
【０２３７】
メモリ使用情報管理部２２は、あるブロック領域のデータが消去され、再度書き込み可能になったとき、図２４に示すような判断表に基づいて、このブロック領域がどのグループに属するか判断し、メモリ使用情報１１に記憶する。
【０２３８】
この図２４の判断表では、全てのブロック領域の消去回数のうちの最小の消去回数と、この最小の消去回数とウェアレベリングを行うか否かを判断するための閾値とを加算した値との間が、グループの数で分割されている。グループは、分割された範囲の下から上に向けて、ｈ，ｇ，ｆ，ｅ，ｄ，ｃ，ｂ，ａと設定されている。そして、判断表には、各グループに対する上限の消去回数と下限の消去回数とが設定されている。
【０２３９】
図２５は、ウェアレベリングにおけるブロック領域の検索の一例を示す図である。
【０２４０】
書き込み管理部２０は、カラーリングテーブル１４の情報に基づいて、書き込み対象データのブロック領域を検索する基準となるグループを決定する。例えば、書き込み対象データのアクセス頻度が高い場合には、消去回数の少ないグループが決定され、書き込み対象データのアクセス頻度が低い場合には、消去回数の多いグループが決定される。以下においては、書き込み対象データに対して、グループｃが決定されたとして説明を行う。
【０２４１】
検索基準となる書き込み対象データのグループｃが決定されると、図２５に示すように、書き込み管理部２０は、メモリ使用情報１１に基づいて、決定された書き込み対象データのグループｃに属するブロック領域を検索する。
【０２４２】
決定された書き込み対象データのグループｃに属するブロック領域が存在する場合、このブロック領域が書き込み対象データの書き込み先として決定される。
【０２４３】
これに対して、決定された書き込み対象データのグループｃに属するブロック領域が存在しない場合、書き込み管理部２０は、決定された書き込み対象データのグループｃの近傍のグループｂに属するブロック領域を検索する。
【０２４４】
決定された書き込み対象データの近傍グループｂに属するブロック領域が存在する場合、この近傍グループｂに属するブロック領域が書き込み対象データの書き込み先として選択される。
【０２４５】
決定された書き込み対象データの近傍グループｂに属するブロック領域が存在しない場合、以下同様に、ブロック領域が決定されるまで、さらに書き込み対象データのグループｃに対する他の近傍グループｄに対する検索が実行される。このような検索処理によってデータを書き込むブロック領域の物理アドレスが決定されると、書き込み管理部２０は、データの書き込みを行い、アドレス管理部１８はアドレス変換情報１３を更新する。
【０２４６】
なお、書き込み管理部２０は、他のブロック領域の検索方法を用いて書き込み先のアドレスを決定するとしてもよい。例えば、書き込み管理部２０は、消去回数をキーとし、消去ブロック領域をノードとする木構造（B-Tree B+Tree RB-Tree等）で書き込み可能なブロック領域（消去処理済み）を管理し、メモリ固有情報１２又はメモリ使用情報１１に保存する。書き込み管理部２０は、基準となる消去回数をキーにツリーを検索し、最も近い消去回数をもつブロック領域を抽出する。
【０２４７】
任意のプロセス３ｂによってデータが消去されると、オペレーティングシステム２７はこのデータについてのカラーリングテーブル１４の内容を消去する。アドレス管理部１８は、カラーリングテーブル１４の内容が消去されたとき、アドレス変換情報１３における消去対象データの論理アドレスに対応する物理アドレスを消去する。
【０２４８】
データが揮発性半導体メモリ８上に存在する場合は、揮発性半導体メモリ８上のデータが消去される。
【０２４９】
次に、図２６を参照して、本実施形態に係るメモリ管理装置１にキャッシュメモリを備えた構成について説明する。図２６は、本実施形態に係るメモリ管理装置１にさらにキャッシュメモリを備えたメモリ管理装置の一例を示すブロック図である。なお、この図２６においては、プロセッサ３ａ，３ｂ，３ｃのうちプロセッサ３ｂを代表として説明するが、他のプロセッサ３ａ，３ｃについても同様である。
【０２５０】
メモリ管理装置１は、さらに、キャッシュメモリ２８を備えている。
【０２５１】
プロセッサ３ｂは、１次キャッシュメモリ４ｂ、２次キャッシュメモリ５ｂに加えて、キャッシュメモリ２８を直接アクセス可能である。
【０２５２】
メモリ管理装置２８は、１次キャッシュメモリ４ｂ、２次キャッシュメモリ５ｂ、キャッシュメモリ２８のいずれかにおいて、ページイン又はページアウトが発生した場合に、混成メインメモリ２をアクセスする。
【０２５３】
メモリ管理装置１、混成メインメモリ２、プロセッサ３ａの実装例を、図２７の例に基づいて説明する。
【０２５４】
図２７（Ａ）は、メモリ管理装置１、混成メインメモリ２、プロセッサ３ａの第１の実装例を示すブロック図である。図２７（Ａ）では、揮発性半導体メモリ８が、ＤＲＡＭであり、不揮発性半導体メモリ９，１０がＮＡＮＤ型フラッシュメモリである場合について説明するが、これに限定されない。
【０２５５】
プロセッサ３ａは、メモリコントローラ(ＭＭＵ)３ｍａと、１次キャッシュメモリ４ａと、２次キャッシュメモリ４ｂとを備える。メモリ管理装置１は、ＤＲＡＭコントローラを備える。プロセッサ３ａとメモリ管理装置１は同一基板（例えば、ＳｏＣ）上に形成される。
【０２５６】
揮発性半導体メモリ８は、メモリ管理装置１が備えるＤＲＡＭコントローラにより制御される。不揮発性半導体メモリ９，１０は、メモリ管理装置１により制御される。図２７（Ａ）の実装例では、揮発性半導体メモリ８が搭載されるメモリモジュールと、不揮発性半導体メモリ９，１０が搭載されるメモリモジュールとは、別モジュールである。
【０２５７】
図２７（Ｂ）は、メモリ管理装置１、混成メインメモリ２、プロセッサ３ａの第１の実装例を示すブロック図である。図２７（Ｂ）では、揮発性半導体メモリ８が、ＤＲＡＭであり、不揮発性半導体メモリ９，１０がＮＡＮＤ型フラッシュメモリである場合について説明するが、これに限定されない。図２７（Ａ）と同様の構成については、説明を省略する。
【０２５８】
図２７（Ｂ）の例では、プロセッサ３ａが搭載されたチップに、メモリ管理装置１が外部から電気的に接続される構成となっている。また、メモリ管理装置１に、揮発性半導体メモリ８が接続される構成となっている。メモリ管理装置１は、ＤＲＡＭコントローラ（図示省略）を備える。
【０２５９】
次に、図２８を参照して、本実施形態に係るメモリ管理装置１と情報処理装置１００の別構成態様について説明する。図１に示したメモリ管理装置１と情報処理装置１００では、データについての書き込み回数DWC_color、読み出し回数RWC_colorのカウント（インクリメント）は、メモリ管理装置１の動的カラー情報管理部２２で管理する。これに対し、図２８に示すメモリ管理装置１と情報処理装置１００では、データについての書き込み回数DWC_color、読み出し回数RWC_colorのカウントは、プロセッサ３ａ，３ｂ，３ｃが備えるメモリコントローラ（ＭＭＵ）３ｍａ，３ｍｂ，３ｍｃで行う。以下の説明において、メモリコントローラ３ｍａ，３ｍｂ，３ｍｃのうちメモリコントローラ３ｍａを代表として説明するが、他のメモリコントローラ３ｍｂ，３ｍｃについても同様である。
【０２６０】
プロセッサ３ａに備えられているメモリコントローラ３ｍａは、データについての書き込み回数DWC_color、読み出し回数DRC_colorのカウントを行うカウンタｃｔａを備える。さらに、メモリコントローラ３ｍａは、データについての書き込み回数DWC_color、読み出し回数DRC_colorを管理するカウント情報ｃｉａを含む。
【０２６１】
カウンタｃｔａは、例えば、プロセッサ３ａがデータに対してロード命令を発生させた場合、当該データに対する読み出し回数DRC_colorをカウント（インクリメント）し、カウント情報ｃｉａを更新する。また、カウンタｃｔａは、例えば、プロセッサ３ａがデータに対してストア命令を発生させた場合、当該データに対する書き込み回数DWC_colorをカウント（インクリメント）し、カウント情報ｃｉａを更新する。
【０２６２】
カウント情報ｃｉａにより管理される、データについての書き込み回数DWC_color、読み出し回数DRC_colorは、定期的に、当該データについてのメモリ管理装置１のカラーリングテーブル１４の書き込み回数DWC_color、読み出し回数DRC_colorに反映される。
【０２６３】
この図２８の構成態様においては、次の効果が得られる。すなわち、プロセッサ３ａの動作周波数はＧＨｚオーダーであるのに対し、メモリ管理装置１の動作周波数はＭＨｚオーダーである場合に、メモリ管理装置１では、プロセッサ３ａで発生する書き込み、読み出しをカウントすることが困難な場合が考えられる。これに対し、図２８の構成態様の場合には、プロセッサ３ａのカウンタｃｔａで、書き込み、読み出しをカウントするため、高い動作周波数での読み出し回数、書き込み回数をカウントすることが可能となる。
【０２６４】
次に、図２９を参照して、複数のメモリ管理装置１により、複数の不揮発性半導体メモリを管理する構成について説明する。図２９は、複数の不揮発性半導体メモリを管理する複数のメモリ管理装置の一例を示す斜視図である。
【０２６５】
図２９においては、一つのメモリ管理装置１と、複数のＮＡＮＤ型フラッシュメモリ２９とで、一つのメモリモジュール３０が形成される。図２９の例では、３つのメモリモジュール３０が形成されている。
【０２６６】
複数の不揮発性半導体メモリ２９は、例えばＮＡＮＤ型フラッシュメモリであり、上記の不揮発性半導体メモリ９，１０として用いられる。
【０２６７】
メモリ管理装置１は、同じメモリモジュール３０に属する複数の不揮発性半導体メモリ２９に対するアクセスを管理する。
【０２６８】
さらに、複数のメモリモジュール３０内に備えられている複数のメモリ管理装置１は、互いに連携して一つのメモリ管理装置にように動作する。
【０２６９】
メモリモジュール３０のメモリ管理装置１は、メモリモジュール３０内の複数の不揮発性半導体メモリ２９に対するＥＣＣ機能及びＲＡＩＤ機能を備え、ミラーリング及びストライピングを行う。
【０２７０】
それぞれの不揮発性半導体メモリ２９は、メモリモジュール３０が通電中（動作中）であっても、ホットスワップ（交換）可能である。複数の不揮発性半導体メモリ２９のそれぞれには、ボタン３１が対応付けられている。
【０２７１】
ボタン３１は、警告出力部（例えばＬＥＤなど）を備える。例えば、警告出力部が第１の色（緑）の場合は、正常状態を表し、第２の色（赤）の場合には交換必要な状態を表す。
【０２７２】
ボタン３１が押されると、プロセス６ａ，６ｂ，６ｃ及びオペレーティングシステム２７に通知が送信され、アクセスなどが発生していない取り外し安全なときに、ボタン３１は、第３の色（青）になり、このボタン３１に対応する不揮発性半導体メモリ２９は、ホットスワップ可能となる。
【０２７３】
ホットスワップ実行時には、ホットスワップを要求するボタン３１が押された後、ライトバックが完了した時点で、交換可能であることを示すランプが点灯し、不揮発性半導体メモリ２９の交換が行われる。
【０２７４】
メモリ管理装置１の処理部１５は、情報記憶部１７に記憶されているメモリ使用情報１１とメモリ固有情報１２とを参照し、各不揮発性半導体メモリ２９の書き換え回数又は読み出し回数が、メモリ固有情報１２に記述されているアクセス可能上限回数の所定割合に達したか否か判断する。そして、処理部１５は、書き込み回数又は読み出し回数が、書き込み可能上限回数又は読み出し可能上限回数の所定割合に達している場合、メモリ交換を通知又は警告する。
【０２７５】
本実施形態において、不揮発性半導体メモリ２９のページサイズ又はブロックサイズが大きい場合、プリロードが有効である。
【０２７６】
プリロードが行われる場合、メモリ管理装置１の処理部１５は、不揮発性半導体メモリ２９に記憶されているデータに対応するカラーリング情報を参照し、頻繁にアクセスされる可能性の高いデータを、予めキャッシュメモリ２８にプリロードしておく。
【０２７７】
あるいは、処理部１５は、周期性のあるデータであって、所定の時間にアクセスされる可能性の高いデータを、その所定時間の前にプリロードしておく。
【０２７８】
本実施形態においては、混成メインメモリ２の各メモリの耐久性に基づいてデータの配置が決定され、混成メインメモリ２の寿命を延ばすことができる。また、混成メインメモリ２に対する高速なアクセスを実現できる。
【０２７９】
本実施形態においては、混成メインメモリ２の各メモリの耐久性に基づいてデータが配置されるため、混成メインメモリ２における致命的なデータ欠損を防止することができる。
【０２８０】
本実施形態に係るメモリ管理装置１及び混成メインメモリ２を用いることにより、スワップをなくすことができる。
【０２８１】
本実施形態においては、不揮発半導体メモリ９，１０がメインメモリとして用いられる。これにより、メインメモリの記憶容量を大容量化することができ、ハードディスク又はＳＳＤ（Solid State Disk）を用いた２次記憶装置を使用しなくてもよい。
【０２８２】
本実施形態においては、不揮発性半導体メモリ９，１０をメインメモリとして用いるため、インスタント・オンを高速化できる。
【０２８３】
（第２の実施形態）
図３０を参照して、本実施形態に係るメモリ管理装置１、情報処理装置１００、メモリ装置３２ａ，３２ｂ，３２ｃについて説明する。図３０は、本実施形態に係るメモリ管理装置１、情報処理装置１００及びメモリ装置３２ａ，３２ｂ，３２ｃの構成の一例を示すブロック図である。第１実施形態と同一又は同様の構成については、同一の符号を付し、説明を省略する。なお、図３０の説明において、図１のプロセッサ３ａ，３ｂ，３ｃのうちプロセッサ３ｂを代表として説明するが、他のプロセッサ３ａ，３ｃについても同様である。
【０２８４】
メモリ管理装置１に備えられている処理部１５は、メモリ使用情報管理部２２、接続検出部３３、判断部３４、通知部３５、交換制御部３６を備える。メモリ管理装置に備えられている。情報記憶部１７には、前述した、メモリ使用情報１１、メモリ固有情報１２、アドレス変換情報１３、カラーリングテーブル１４が格納されている。さらに、メモリ管理装置１は、複数のコネクタ部４４ａ，４４ｂ，４４ｃに接続されている。
【０２８５】
メモリ装置３２ａ，３２ｂ，３２ｃは、各々に、メモリユニット３７ａ，３７ｂ，３７ｃと、正常通知部３８ａ，３８ｂ，３８ｃと、警告通知部３９ａ，３９ｂ，３９ｃと、使用停止通知部４０ａ，４０ｂ，４０ｃと、接続操作部４１ａ，４１ｂ，４１ｃとを備える。さらに、メモリ装置３２ａ，３２ｂ，３２ｃは、各々に、コネクタ部４２ａ，４２ｂ，４２ｃを備える。メモリユニット３７ａ，３７ｂ，３７ｃには、管理情報４３ａ，４３ｂ，４３ｃが格納されている。管理情報４３ａ，４３ｂ，４３ｃの詳細については後述する。
【０２８６】
メモリ装置３２ａ，３２ｂ，３２ｃに備えられているコネクタ部４２ａ，４２ｂ，４２ｃは、それぞれ、コネクタ部４４ａ，４４ｂ，４４ｃに接続される。
【０２８７】
次に、メモリ管理装置１の構成についてより詳細に説明する。以下の説明において、メモリ装置３２ａ，３２ｂ，３２ｃのうちメモリ装置３２aを代表として説明するが、他のメモリ装置３２ｂ，３２ｃについても同様である。
【０２８８】
接続検出部３３は、メモリ管理装置１とメモリ装置３２aとの接続を検出する。接続検出部３０は、メモリ装置３２aの接続操作部４１aから、後述する「取り付け通知」を受信すると、メモリ装置３２ａがメモリ管理装置１に電気的に接続されたことを検出する（「接続状態」を検出する）。また、接続検出部３３は、メモリ装置３２ａの接続操作部４１ａから、後述する「取り外し通知」を受信すると、メモリ装置３２ａがメモリ管理装置１から電気的に非接続されることを検出する（「取り外し準備状態」を検出する）。
【０２８９】
判断部３４は、メモリ使用情報１１に基づき、メモリ装置３２ａの使用状態を判断する。使用状態は、例えば、「正常状態」「警告状態」「使用停止状態」を含む。判断部３４は、例えば、定期的に、メモリ装置３２ａの使用状態を判断する。また、判断部３４は、例えば、メモリ装置３２ａに対するアクセスが発生する毎に、メモリ装置３２ａの使用状態を判断する。使用状態の判断方法については後述する。
【０２９０】
通知部３５は、判断部３４によって判断された使用状態に基づいて、メモリ装置３２aａに対して使用状態を通知する。
【０２９１】
交換制御部３６は、接続検出部３３がメモリ装置３２ａの接続操作部４１ａからの「取り付け通知」に基づき「接続状態」を検出すると、メモリユニット３７ａに格納されている管理情報４３ａに含まれるメモリユニット３７ａの所定領域毎の消去回数、書き込み発生回数、読み出し発生回数を読み出し、メモリ使用情報１１に格納する。また、交換制御部３６は、接続検出部３３が、メモリ装置３２ａの接続操作部４１ａからの「取り外し通知」に基づき「取り外し準備状態」を検出すると、情報記憶部１７に格納されているメモリ使用情報１１に含まれる、メモリ装置３２ａの所定領域毎の消去回数、書き込み発生回数、読み出し発生回数を読み出し、メモリユニット３７ａの管理情報４３ａに格納する。管理情報４３ａの詳細については後述する。
【０２９２】
例えば、メモリ装置３２ａが、ＮＡＮＤ型フラッシュメモリである場合には、例えば、消去回数は、ブロック領域単位、書き込み発生回数、読み出し発生回数は、ページ領域単位で管理されている。
【０２９３】
次に、メモリ装置３２ａ，３２ｂ，３２ｃの構成について説明する。
【０２９４】
メモリユニット３７ａは、ＳＬＣタイプのＮＡＮＤ型フラッシュメモリ、又はＭＬＣタイプのＮＡＮＤ型フラッシュメモリであり、第１実施形態の不揮発性半導体メモリ９，１０に相当する。また、メモリユニット３７ａは、一部の領域がＳＬＣタイプのＮＡＮＤ型フラッシュメモリ（ＳＬＣ領域）であり、ＳＬＣ領域を除く部分がＭＬＣタイプのＮＡＮＤ型フラッシュメモリ(ＭＬＣ領域)であってもよい。この場合、ＳＬＣ領域が不揮発性半導体メモリ９に相当し、ＭＬＣ領域が不揮発性半導体メモリ１０に相当する。
【０２９５】
正常通知部３８ａは、メモリ管理装置１の通知部３５から「正常状態」の通知を受けた場合に、正常状態を表示する。例えば、正常通知部３８ａは、第１の色（青色）の発光体であり、点灯することにより、正常状態を表示する。
【０２９６】
警告通知部３９ａは、メモリ管理装置１の通知部３５から「警告状態」の通知を受けた場合に、警告状態を表示する。例えば、警告通知部３９ａは、第２の色（黄色）の発光体であり、点灯することにより、警告状態を表示する。
【０２９７】
使用停止部４０ａは、メモリ管理装置１の通知部３５から「使用停止状態」の通知を受けた場合に、停止状態を表示する。例えば、使用停止通知部４０ａは、第３の色（赤色）の発光体であり、点灯することにより、使用停止状態を表示する。
【０２９８】
接続操作部４１ａは、メモリ装置３２ａがメモリ管理装置１から電気的に非接続される場合（取り外される場合）に、取り外される旨（取り外し通知）をメモリ管理装置１に通知する。接続操作部４１ａは、例えば、電気的、又は機械的なボタンを備え、メモリ装置３２ａを取り外す際に、ユーザが当該ボタンを押すことにより、取り外し通知をメモリ管理装置１に通知する。
【０２９９】
また、接続操作部４１ａは、メモリ装置３２ａがメモリ管理装置１に電気的に接続された場合に、接続された旨（取り付け通知）をメモリ管理装置１に通知する。例えば、メモリ装置３２ａをメモリ管理装置１に電気的に接続する際に、ユーザが当該ボタンを押すことにより、取り付け通知をメモリ管理装置１に通知する。
【０３００】
コネクタ部４２ａが、コネクタ部４４ａに接続されることにより、メモリ装置３２ａとメモリ管理装置１とが電気的に接続される。
【０３０１】
次に、図３１を参照してメモリ装置３２ａに備えられているメモリユニット３７ａの消去回数の変化について説明する。図３１は、メモリユニット３７ａの消去回数の変化の一例を示すグラフである。横軸は時間であり、縦軸は消去回数である。
【０３０２】
本実施形態のメモリ装置３２ａのメモリユニット３７ａは、プロセッサ３ｂからアクセス（読み出し、書き込み、消去）を受ける。このため、メモリユニット３７ａの消去回数、読み出し発生回数、書き込み発生回数は、使用時間とともに増加し、ある時刻において、消去回数はメモリユニット３７ａの消去可能上限回数に達する。メモリユニット３２ａの消去回数が消去可能上限回数に達すると、メモリユニット３２ａに対するデータの書き込み、読み出し、消去は、信頼性の観点から、望ましくない。
【０３０３】
前述のように、メモリ管理装置１は、メモリ使用情報１１により不揮発性半導体メモリ９，１０（メモリ装置３２ａ）の消去回数、読み出し発生回数、書き込み発生回数等を管理している。本実施形態では、以下に示すように、メモリ管理装置１が、メモリ使用情報１１に基づき、メモリ装置３２ａの使用状態をモニターし、メモリ管理装置３２ａの消去回数が消去発生上限回数に達する前に、メモリ装置３２ａに対して警告する。
【０３０４】
図３２を参照して、メモリ装置３２ａの消去回数に基づく、メモリ装置３２ａの使用状態の判断について説明する。図３２は、メモリ装置３２ａの消去回数に基づく、メモリ装置３２ａの使用状態の一例を示すグラフである。横軸は時間であり、縦軸は消去回数である。なお、書き込みについても、消去と同様にメモリ装置３２ａの使用状態の判断に用いることができる。
【０３０５】
図３２に、メモリユニット３７ａの消去回数の変化の例を破線で示す。メモリユニット３７ａの消去回数に対する回帰曲線ΔtERASE（例えば、１次回帰線）を実線で示す。この１次回帰線から、現在時刻から所定時間（警告期間）tERASEbefore後の消去回数ERASEalertを予測する。ERASEalertが消去可能上限回数ERASEmaxを超えている場合、メモリユニット３７ａの使用状態は「警告状態」であると判断される。ERASEalertが消去可能上限回数ERASEmaxを超えていない場合、メモリユニット３７ａの使用状態は「正常状態」であると判断される。また、現在時刻の消去回数が、消去可能上限回数ERASEmaxを超えている場合、メモリユニット３７ａの使用状態は「使用停止状態」と判断される。
【０３０６】
なお、前述のように、メモリユニット３７ａがＮＡＮＤ型フラッシュメモリである場合には、メモリユニット３７ａの消去回数は、ブロック領域単位で管理される。メモリユニット３７ａは、複数のブロック領域を含む。メモリユニット３７ａに含まれる複数のブロック領域間では、ウェアレベリングにより、消去回数のばらつきは小さくなる。このため、例えば、メモリユニット３７ａに含まれる複数のブロック領域の各々の消去回数の平均値をメモリユニット３７ａの消去回数とする。また、例えば、メモリユニット３７ａに含まれる複数のブロック領域の最大の消去回数を、メモリユニット３７ａの消去回数としてもよい。読み出し発生回数、書き込み発生回数についても、同様である。
【０３０７】
次に図３３を参照して、メモリ装置３２ａの読み出し発生回数に基づく、メモリ装置３２ａの使用状態の判断について説明する。図３３は、メモリ装置３２ａの読み出し発生回数に基づく、メモリ装置３２ａの使用状態の一例を示すグラフである。横軸は時間であり、縦軸は読み出し発生回数である。
【０３０８】
図３３に、メモリユニット３７ａの読み出し発生回数の変化の例を破線で示す。メモリユニット３７ａの読み出し発生回数に対する回帰曲線ΔtREAD（例えば、１次回帰線）を実線で示す。この１次回帰線から、現在時刻から所定時間（警告期間）tREADbefore後の読み出し発生回数READalertを予測する。READalertが読み出し可能上限回数READmaxを超えている場合、メモリユニット３７ａの使用状態は「警告状態」であると判断される。READalertが読み出し可能上限回数READmaxを超えていない場合、メモリユニット３７ａの使用状態は「正常状態」であると判断される。また、現在時刻の読み出し発生回数が、読み出し可能上限回数READmaxを超えている場合、メモリユニット３７ａの使用状態は「使用停止状態」と判断される。
【０３０９】
次に、図３４を参照して、メモリ装置３２ａの消去回数に基づき、メモリ装置３２ａに使用状態を通知する処理の一例を説明する。図３４は、メモリ装置３２ａの消去回数に基づき、メモリ装置３２ａに使用状態を通知する処理の一例を示すフローチャートである。
【０３１０】
ステップＨＡ１において、メモリ使用情報管理部２２は、メモリ使用情報１１を読み出す。
【０３１１】
ステップＨＡ２において、メモリ使用情報管理部２２は、メモリ使用情報１１から、メモリ装置３２ａの現在時刻の消去回数を読み出す。
【０３１２】
ステップＨＡ３において、判断部３４は、現在の時刻、現在より前の時刻、現在時刻の消去回数、現在より前の時刻の消去回数、メモリ使用情報１１に格納されている過去のΔtERASEなどに基づいて、新たなΔtERASEを計算する。例えば、判断部３４は、消去開始時刻、現在時刻、現在時刻の消去回数に基づいて、単位時間当たりの消去回数であるΔtERASEを計算する。
【０３１３】
ステップＨＡ４において、判断部３４は、現在時刻の消去回数が、消去可能上限回数ERASEmax以下か否か判断する。
【０３１４】
現在時刻の消去回数が、消去可能上限回数ERASEmaxを超えている場合、ステップＨＡ５において、判断部３４は、メモリ装置３２ａが使用停止状態であると判断し、処理はステップＨＡ９に移動する。
【０３１５】
現在時刻の消去回数が、消去可能上限回数ERASEmax以下の場合、ステップＨＡ６において、判断部３４は、ΔtERASE×tERASEbefore＋現在時刻の消去回数、を算出し、現在時刻からtERASEbefore経過後の消去回数の予測値ERASEalertを求める。
【０３１６】
ステップＨＡ７において、判断部３４は、予測値ERASEalertが、消去可能上限回数ERASEmax以下か否か判断する。
【０３１７】
予測値ERASEalertが消去可能上限回数ERASEmaxを超えている場合、ステップＨＡ８において、判断部３４は、メモリ装置３２ａに対して警告状態と判断し、処理はステップＨＡ９に移動する。
【０３１８】
予測値ERASEalertが消去可能上限回数ERASEmax以下の場合、処理はステップＨＡ９に移動する。
【０３１９】
ステップＨＡ９において、判断部３４は、メモリ使用情報１１に、現在時刻の消去回数、ΔtERASE格納し、更新を行う。
【０３２０】
以上のように、メモリ装置３２ａの消去回数に基づき、メモリ装置３２aに使用状態を通知することで、メモリ装置３２aの使用状態が「使用停止状態」となる前に、警告を通知することが可能となる。
【０３２１】
次に、図３５を参照して、メモリ装置３２ａの読み出し発生回数に基づき、メモリ装置３２ａに使用状態を通知する処理の一例を説明する。図３５は、メモリ装置３２ａの読み出し発生回数に基づき、メモリ装置３２ａに使用状態を通知する処理の一例を示すフローチャートである。
【０３２２】
図３５のステップＨＢ１〜ＨＢ９は判断の対象が読み出し発生回数である点を除き、判断の対象が消去回数である上記図３４のステップＨＡ１〜ＨＡ９と同様であるため、説明を省略する。
【０３２３】
以上のように、メモリ装置３２ａの読み出し発生回数に基づき、メモリ装置３２ａに使用状態を通知することで、メモリ装置３２ａの使用状態が「使用停止状態」となる前に、警告を通知することが可能となる。
【０３２４】
上記の本実施形態においては、現在時刻から所定時間tERASEbefore，tREADbefore後の予測された消去回数ERASEalert，READalertが消去可能上限回数ERASEmax，読み出し可能上限回数READmaxを超える場合に、警告状態とする。しかしながら、上記の判断処理は、様々に変更することができる。以下に、本実施の形態における判断処理の変形例について説明する。
【０３２５】
例えば、判断部３４は、ΔtERASEを算出する。
【０３２６】
判断部３４は、現在時刻の消去回数とΔtERASEとERASEmaxとに基づいて、消去回数がERASEmaxに達すると予測される時間tERASEmaxを求める。
【０３２７】
判断部３４は、tERASEmaxからtERASEbeforeを引くことにより、警告状態とすべき時間tERASEalertを求める。
【０３２８】
そして、判断部３４は、現在時刻が警告状態とすべき時間tERASEalertとなるか又は超えた場合に、警告状態と判断する。あるいは、判断部３４は、消去開始時刻とΔtERASEと警告を発すべき時間tERASEalertとに基づいて、警告状態とすべき消去回数ERASEalertを求め、消去回数が警告状態とすべき消去回数ERASEalert以上となった場合に、警告状態と判断する。
【０３２９】
なお、消去回数に代えて、読み出し発生回数を判断の対象とする場合においても同様である。
【０３３０】
次に、図３６を参照してメモリ装置３２ａに格納されている管理情報４３ａについて説明する。図３６は、管理情報４３ａに含まれるデータの一例を示す図である。
【０３３１】
管理情報４３ａは、メモリ装置３２ａのメモリユニット３７ａの所定領域毎の消去回数、消去回数についての回帰曲線ΔtERASE、消去可能上限回数ERASEmax、警告期間tERASEbefore、消去開始時刻を含む。さらに、管理情報４３ａは、メモリ装置３２ａのメモリユニット３７ａの所定領域毎の読み出し発生回数、読み出し発生回数についての回帰曲線ΔtREAD、消去可能上限回数READmax、警告期間tREADbefore、読み出し開始時刻を含む。
【０３３２】
消去回数、読み出し発生回数、回帰曲線ΔtERASE，ΔtREADは、メモリ管理装置１のメモリ使用情報１１で管理されている情報であり、後述するように、メモリ装置３２ａがメモリ管理装置１から取り外される際に、管理情報４３ａに格納される。
【０３３３】
次に、図３７を参照して、メモリ管理装置１にメモリ装置３２ａが電気的に接続されてから、メモリ装置３２ａにアクセスを開始するまでの処理について説明する。図３７は、メモリ管理装置１にメモリ装置３２ａが電気的に接続されてから、メモリ装置３２ａにアクセスを開始するまでの処理の一例を示すフローチャートである。
【０３３４】
まず、ステップＨＣ１において、メモリ管理装置１の接続検出部３３がメモリ装置３２ａから「取り付け通知」を受信することにより、メモリ装置３２ａがメモリ管理装置１に電気的に接続されたこと（接続状態）を検出する。
【０３３５】
次に、ステップＨＣ１においてメモリ装置３２ａに管理情報４３ａが格納されているか否か判断する。管理情報４３ａが格納されている場合、ステップＨＣ３に移動する。管理情報４３ａが格納されていない場合、ステップＨＣ４に移動する。
【０３３６】
ステップＨＣ３では、管理情報４３ａに含まれているメモリユニット３７ａの所定領域毎の消去回数、書き込み発生回数、読み出し発生回数を読み出し、メモリ使用情報１１に格納する。また、管理情報４３ａに含まれているメモリユニット３７ａの消去可能上限回数ERASEmax、読み出し可能上限回数READmax、警告期間tERASEbefore、tREADbeforeを読み出し、メモリ固有情報１２に格納する。
【０３３７】
ステップＨＣ４では、管理情報４３ａを新規生成し、メモリユニット３７ａに書き込み、メモリ使用情報１１には、所定領域毎の消去回数、書き込み発生回数、読み出し発生回数の値として「０」を格納する。
【０３３８】
ステップＨＣ３又はステップＨＣ４の処理の後に、メモリ装置３２ａに対するアクセスが開始される。メモリ装置３２ａに対するアクセスが発生すると、前述のように、メモリ装置３２ａに対応するメモリ使用情報１１の所定領域毎の消去回数、書き込み発生回数、読み出し発生回数が更新される。
【０３３９】
次に、図３８を参照して、メモリ管理装置１がメモリ装置３２ａから「取り外し通知」を受信してから、メモリ装置３２ａが取り外し可能となるまでの処理について説明する。図３８は、メモリ管理装置１がメモリ装置３２ａから「取り外し通知」を受信してから、メモリ装置３２ａが取り外し可能となるまでの処理の一例を示すフローチャートである。
【０３４０】
まず、ステップＨＤ１において、メモリ管理装置１の接続検出部３３がメモリ装置３２ａから「取り外し通知」を受信する。
【０３４１】
次に、ステップＨＤ２において、メモリ管理装置１の交換制御部３６は、メモリ装置３２ａに記憶されているデータを、メモリ装置３２ａから読み出し、別のメモリ装置（例えば、メモリ装置３２ｂ）に書き込む。
【０３４２】
次に、ステップＨＤ３において、交換制御部３６は、メモリ使用情報１１で管理されているメモリ装置３２ａの所定領域毎の書き込み回数、読み出し回数、消去回数を、管理情報４３ａとして、メモリ装置３２ａのメモリユニット３７ａに格納する。
【０３４３】
次に、ステップＨＤ４において、メモリ管理装置１の通知部３５は、メモリ装置３２ａに、取り外し可能であることを通知する。
【０３４４】
以上のように、メモリ装置３２ａの取り外し時に、メモリ装置３２ａの所定領域毎の書き込み回数、読み出し回数、消去回数を、管理情報４３ａとして、メモリ装置３２ａのメモリユニット３７ａに格納し、次に、メモリ装置３２ａの取り付け時に、管理情報４３ａを読み出すことで、メモリ装置３２ａの使用情報を取得することが可能となる。
【０３４５】
次に、図３９を参照して、メモリ装置の取り替え状態について説明する。図３９は、メモリ装置の取り替え状態の一例を示す図である。
【０３４６】
この図３９の情報処理装置１００は、プロセッサ３ｂ、メモリ管理装置１、メモリ装置３２ａ〜３２ｌを具備する。情報処理装置１００は、ＲＡＩＤの技術を、メモリ装置３２ａ〜３２ｌに適用する。さらに、本実施形態において、メモリ装置３２ａ〜３２ｌに対するアクセスを制御するメモリ管理装置１は、ハードウェアとしてホットスワップに対応している。情報処理装置１００は、サーバ装置などのような連続運転が必要な装置とする。
【０３４７】
メモリ装置３２ａ〜３２ｍは、メモリ読み出し回数及びメモリ消去回数に上限があり、寿命がきたら交換される。各メモリ装置３２ａ〜３２ｍは、表示部４５ａ〜４５ｍを具備する。この図３９では、表示部４５ａ〜４５ｍは、メモリ装置３２ａ〜３２ｍが正常状態の場合に例えば緑色で発光し、警告状態又は使用停止状態の場合に例えば赤色で発光する。
【０３４８】
装着されているメモリ装置３２ａ〜３２ｌには、それぞれボタン４６ｋが割り当てられている。
【０３４９】
メモリ管理装置１にＲＡＩＤの技術を適用することにより、メモリ装置３２ａ〜３２ｌのうちの一部（図３９ではメモリ装置３２ｋ）が警告状態又は使用停止状態になっても、残りのメモリ装置３２ａ〜３２ｊ，３２ｌにより情報処理装置１００は正常に稼動可能である。そして、ユーザは、警告状態又は使用停止状態になったメモリ装置３２ｋを、情報処理装置１００を稼動させたまま取り外して、代わりのメモリ装置３２ｍを取り付けることができる。
【０３５０】
例えば、メモリ装置３２ｋが使用され、メモリ装置３２ｋの読み出し発生回数又は消去回数が増加して読み出し可能上限回数又は消去可能上限回数に接近すると、メモリ装置３２ｋの表示部４５ｋは赤く発光する。装着されているメモリ装置３２ｋを交換する場合には、対応するボタン４６ｋがユーザによって押される。ボタン４６ｋが押されると、メモリ管理装置１に、取り外し通知が送信される。メモリ管理装置１は、取り外し通知を受信すると、メモリ装置３２ｋのデータの退避、メモリ装置３２ｋの電源ＯＦＦなどの処理を実行する。
【０３５１】
なお、取り外し対象のメモリ装置３２ｋに重要度が特定のしきい値より低いデータのみが記憶されている場合には、メモリ装置３２ｋのデータを退避させないですぐに交換してもよい。
【０３５２】
ユーザは、メモリ装置３２ｋが取り外し可能状態になると、メモリ装置３２ｋを取り外し、新たなメモリ装置３２ｍを取り付ける。
【０３５３】
例えば、サーバ装置、パーソナルコンピュータ、ゲーム機などのような情報処理装置１００の主記憶装置としてメモリ装置３２ｋが使用され、メモリ装置３２ｋが警告状態となったとしても、このメモリ装置３２ｋは、例えば、ＣＤ−Ｒの代わりのようなメディア、デジタルカメラの写真記録メディアとして再利用可能である。
【０３５４】
本実施の形態において、中古のメモリ装置３２ｋを他の情報処理装置で使用可能とするために、このメモリ装置３２ｋの管理情報は、このメモリ装置３２ｋに格納され、さらに、表示部４５ｋがメモリ装置３２ｋに備えられている。
【０３５５】
表示部４５ａ〜４５ｍには、電子インク用の表示部を用いるとしてもよい。例えば、メモリ管理装置１の判断部３４は、メモリ使用情報１１及びメモリ固有情報１２に基づいて、各メモリ装置３２ａ〜３２ｌに対するアクセス状態（例えば、「消去回数／消去可能上限回数」、「読み出し発生回数／読み出し可能上限回数」など）を求める。メモリ管理装置１の通知部３５は、各メモリ装置３２ａ〜３２ｌに対するアクセス状態に基づいて、電子インク用の表示部４５ａ〜４５ｌの表示を制御する。例えば、表示部４５ａ〜４５ｌは、アクセス状態を棒グラフで表す。
【０３５６】
電子インク用の表示部４５ａ〜４５ｌの表示内容は、メモリ装置３２ａ〜３２ｌがメモリシステム３ａから取り外された場合であっても維持される。したがって、ユーザは、メモリ装置３２ａ〜３２ｌを取り外した後、この電子インク用の表示部４５ａ〜４５ｌの表示内容を参考にして、他の情報処理装置にメモリ装置３２ａ〜３２ｌを取り付け、再利用することができる。
【０３５７】
次に、図４０を参照して、メモリ装置３２ａの再利用について説明する。図４０は、メモリ装置３２ａの再利用の一例を示すブロック図である。
【０３５８】
例えば、情報処理装置１は、サーバ装置、パーソナルコンピュータなどのようにデータの記憶及びアクセスについて高い信頼性が要求される装置であるとする。
【０３５９】
例えば、情報処理装置１００Ａは、デジタルカメラ、プリンター、携帯電話などのようにデータの記憶及びアクセスについて情報処理装置１００ほどは高い信頼性を要求されていない装置とする。
【０３６０】
情報処理装置１００では、正常動作が望まれるため、警告が発行されたタイミングから早めの時点でメモリ装置３２ａが交換される。
【０３６１】
これに対して、情報処理装置１００Ａでは、警告が発行された後であっても使用停止通知が発生するまでメモリ装置３２ａを使用可能である。
【０３６２】
ユーザは、情報処理装置１００においてメモリ装置３２ａに対して警告が通知された場合に、このメモリ装置３２ａを情報処理装置１００から取り外し、メモリ装置３２ａを情報処理装置１００Ａに取り付けて使用することができる。このようにメモリ装置３２ａは有効に再利用される。
【０３６３】
次に、図４１を参照して、カラーリング情報に基づいて、メモリ装置３２ａ，３２ｂ，３２ｃの警告時期が短期間内に集中しないように、メモリ装置３２ａ，３２ｂ，３２ｃの中から書き込み先を選択する方法について説明する。
【０３６４】
図４１に示すように、書き込み管理部２０は、カラーリング情報に基づいて、静的カラー情報の高いデータ又は動的カラー情報の高いデータを、メモリ装置３２ａ，３２ｂ，３２ｃのうち特定のメモリ装置３２ａに書き込むように制御する。これにより、メモリ装置３２ａに対するアクセス回数（消去回数、読み出し発生回数、書き込み発生回数）が、他のメモリ装置３２ｂ，３２ｃに比べ、早く増加する。
【０３６５】
これにより、特定のメモリ装置３２ａが早く警告状態となり、警告時期が短期間内に集中するのを抑制でき、短期間に多数のメモリ装置を取り替えるような作業負担の増加を防止することができる。
【０３６６】
上記の本実施形態においては、アクセス回数に上限のあるメモリ装置３２ａ〜３２ｌをメモリ管理装置１に簡単に取り付けることができ、さらに、簡単に取り外すことができる。
【０３６７】
したがって、情報処理装置１００で使用されるメモリ装置３２ａ〜３２ｌの状態監視及びメンテナンスを容易に行うことができる。
【０３６８】
本実施形態においては、情報処理装置１００を連続運転させながら、メモリ装置３２ａ〜３２ｌの取り替えを行うことができる。
【０３６９】
さらに、本実施の形態においては、メモリ管理装置１に対して着脱可能なメモリ装置３２ａ〜３２ｌを再利用することができる。
【０３７０】
本実施形態においては、メモリ装置３２ａ〜３２ｌを組み合わせた高信頼性、高速、大容量の記憶装置を実現することができ、メモリ装置３２ａ〜３２ｌを容易に交換でき、情報処理装置１００の稼働率を向上させることができる。
【０３７１】
上記各実施形態において説明した各構成要素は、自由に組み合わせることができ、自由に分割することができる。
【０３７２】
本発明は、上記実施の形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。
【符号の説明】
【０３７３】
１…メモリ管理装置、２…混成メインメモリ、３ａ〜３ｂ…プロセッサ、４ａ〜４ｃ…１次キャッシュメモリ、５ａ〜５ｃ…２次キャッシュメモリ、６ａ〜６ｃ…プロセス、７…バス、８…揮発性半導体メモリ、９，１０，２９…不揮発性半導体メモリ、１１…メモリ使用情報、１２…メモリ固有情報、１３…アドレス変換情報、１４…カラーリングテーブル、１５…処理部、１６…作業メモリ、１７…情報記憶部、１８…アドレス管理部、１９…読み出し管理部、２０…書き込み管理部、２１…カラーリング情報管理部、２２…メモリ使用情報管理部、２３…再配置部、２４…アクセス頻度算出部、２５…動的カラー情報管理部、２７…オペレーティングシステム、２８…キャッシュメモリ、３ｍａ〜３ｍｃ…メモリ管理ユニット、ｃｔａ〜ｃｔｃ…カウンタ、ｃｉａ〜ｃｉｃ…カウント情報、３０…メモリモジュール、３１…ボタン、３２ａ〜３２ｍ…メモリ装置、３３…接続検出部、３４…判断部、３５…通知部、３６…交換制御部、３７〜３７ｃ…メモリユニット、３８ａ〜３８ｃ…正常通知部、３９ａ〜３９ｃ…警告通知部、４０ａ〜４０ｃ…使用停止通知部、４１ａ〜４１ｃ…接続操作部、４２ａ〜４２ｃ，４４ａ〜４４ｃ…コネクタ部、４３ａ〜４３ｃ…管理情報、４５ａ〜４５ｍ…表示部、４６ａ〜４６ｌ…ボタン。
【図１】
2011186553.tif 000003
【図２】
2011186553.tif 000004
【図３】
2011186553.tif 000005
【図４】
2011186553.tif 000006
【図５】
2011186553.tif 000007
【図６】
2011186553.tif 000008
【図７】
2011186553.tif 000009
【図８】
2011186553.tif 000010
【図９】
2011186553.tif 000011
【図１０】
2011186553.tif 000012
【図１１】
2011186553.tif 000013
【図１２】
2011186553.tif 000014
【図１３】
2011186553.tif 000015
【図１４】
2011186553.tif 000016
【図１５】
2011186553.tif 000017
【図１６】
2011186553.tif 000018
【図１７】
2011186553.tif 000019
【図１８】
2011186553.tif 000020
【図１９】
2011186553.tif 000021
【図２０】
2011186553.tif 000022
【図２１】
2011186553.tif 000023
【図２２】
2011186553.tif 000024
【図２３】
2011186553.tif 000025
【図２４】
2011186553.tif 000026
【図２５】
2011186553.tif 000027
【図２６】
2011186553.tif 000028
【図２７】
2011186553.tif 000029
【図２８】
2011186553.tif 000030
【図２９】
2011186553.tif 000031
【図３０】
2011186553.tif 000032
【図３１】
2011186553.tif 000033
【図３２】
2011186553.tif 000034
【図３３】
2011186553.tif 000035
【図３４】
2011186553.tif 000036
【図３５】
2011186553.tif 000037
【図３６】
2011186553.tif 000038
【図３７】
2011186553.tif 000039
【図３８】
2011186553.tif 000040
【図３９】
2011186553.tif 000041
【図４０】
2011186553.tif 000042
【図４１】
2011186553.tif 000043