(57)【要約】 【課題】不揮発性半導体メモリをメインメモリとする場合において、キャッシュメモリのヒット率を向上することが可能なメモリ管理装置を提供する。【解決手段】不揮発性半導体メモリ（９，１０）は、データを記憶する。揮発性半導体メモリ（８）は、複数の領域を含み、少なくとも一部が不揮発性半導体メモリのキャッシュメモリとして用いられる。制御部（１）は、不揮発性半導体メモリ又は揮発性半導体メモリに書き込まれるデータの特性に基づいて生成され、データの不揮発性半導体メモリ又は揮発性半導体メモリ上の配置領域を決定するヒントとなる配置ヒント情報に基づき、揮発性半導体メモリの複数の領域からデータの配置領域を決定する。【選択図】図１
2011186559.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する不揮発性半導体メモリと、
複数の領域を含み、少なくとも一部が前記不揮発性半導体メモリのキャッシュメモリとして用いられる揮発性半導体メモリと、
前記不揮発性半導体メモリ又は前記揮発性半導体メモリに書き込まれるデータの特性に基づいて生成され、データの前記不揮発性半導体メモリ又は前記揮発性半導体メモリ上の配置領域を決定するヒントとなる配置ヒント情報に基づき、前記揮発性半導体メモリの前記複数の領域からデータの配置領域を決定する制御部と、
を具備することを特徴とするメモリ管理装置。
【請求項２】
前記不揮発性半導体メモリの前記複数の領域は、上位領域と下位領域を含み、上位領域が下位領域より大きいことを特徴とする請求項１に記載のメモリ管理装置。
【請求項３】
前記制御部は、前記配置ヒント情報に基づき、前記上位領域に対して、アクセス頻度の高いデータを配置し、前記下位領域に対して、アクセス頻度の低いデータを配置することを特徴とする請求項２に記載のメモリ管理装置。
【請求項４】
前記上位領域が、前記下位領域に対して拡張可能であることを特徴とする請求項２又は３に記載のメモリ管理装置。
【請求項５】
前記制御部は、前記揮発性半導体メモリの上位領域又は下位領域に空き領域がないと判断した場合、前記上位領域又は下位領域に配置されたデータを、前記不揮発性半導体メモリに移動させ、前記上位領域又は下位領域に空き領域を確保することを特徴とする請求項２乃至４に記載のメモリ管理装置。
【請求項６】
前記揮発性半導体メモリに記憶され、前記揮発性半導体メモリの前記複数の領域に対応してそれぞれ設けられ、前記複数の領域のうち空き領域を管理する複数の管理情報により構成された第１のデータ構造と、
前記揮発性半導体メモリに記憶され、前記揮発性半導体メモリの前記複数の領域の１つにデータが記憶されるとき、その領域に対応して前記第１のデータ構造から取得された前記管理情報に基づき、前記揮発性半導体メモリの使用領域を管理する第２のデータ構造と、
をさらにすることを特徴とする請求項１記載のメモリ管理装置。
【請求項７】
前記揮発性半導体メモリにデータを記憶するとき、対応する領域に空き領域がない場合、前記制御手段は、前記第２のデータ構造に管理されたその領域に対応する少なくとも１つの管理情報のうち先頭の管理情報に対応するデータを前記不揮発性半導体メモリに転送し、空き領域を確保することを特徴とする請求項１乃至２記載のメモリ管理装置。
【請求項８】
前記複数の領域のうち優先度の高い領域は、優先度の低い領域に拡張可能であり、前記揮発性半導体メモリは、各領域に対応して拡張限界情報を管理していることを特徴とする請求項１乃至３記載のメモリ管理装置。
【請求項９】
前記第２のデータ構造は、少なくともＦＩＦＯ（First-in First-out）、ＬＲＵ（Least Recently Used）のうちの１つにより管理されることを特徴とする請求項１乃至４記載のメモリ管理装置。
【請求項１０】
前記各管理情報は、その管理情報に対応するデータが更新されたかどうかを示すフラグ情報を有することを特徴とする請求項２乃至５記載のメモリ管理装置。
【請求項１１】
外部に、不揮発性半導体メモリと、複数の領域を含み、少なくとも一部が前記不揮発性半導体メモリのキャッシュメモリとして用いられる揮発性半導体メモリとが電気的に接続され、
前記不揮発性半導体メモリ又は前記揮発性半導体メモリに書き込まれるデータの特性に基づいて生成され、データの前記不揮発性半導体メモリ又は前記揮発性半導体メモリ上の配置領域を決定するヒントとなる配置ヒント情報に基づき、前記揮発性半導体メモリの前記複数の領域からデータの配置領域を決定する制御部、
を具備することを特徴とするメモリ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに対するアクセスを管理するメモリ管理装置に関する。
【背景技術】
【０００２】
コンピュータ・アーキテクチャの基本的な型であるノイマン型アーキテクチャはＣＰＵの周波数とメインメモリの速度差によって生じるフォン・ノイマン・ボトルネックと呼ばれる問題を有している。従来、揮発性メモリをメインメモリに使用する場合、メインメモリとＣＰＵコアの間に高速なキャッシュメモリ（ＳＲＡＭ等）を設置することにより、この問題を緩和してきた。
【０００３】
近時、メインメモリとして揮発性半導体メモリより低速な不揮発性半導体メモリを使用する技術が開発されている。この場合、上記問題がより顕著に現れる。このため、キャッシュメモリのヒット率を向上させる必要がある。
【０００４】
尚、関連技術として、次のようなものがある。特許文献１には、統合メモリ管理装置が開示されている。特許文献２には、情報処理装置の主記憶装置としてフラッシュメモリを採用する技術が開示されている。特許文献３においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２４２９４４号公報
【特許文献２】特開平７−１４６８２０号公報
【特許文献３】特開２００１−２６６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、不揮発性半導体メモリをメインメモリとする場合において、キャッシュメモリのヒット率を向上することが可能なメモリ管理装置を提供しようとするものである。
【課題を解決するための手段】
【０００７】
本発明のメモリ管理装置の態様は、データを記憶する不揮発性半導体メモリと、複数の領域を含み、少なくとも一部が前記不揮発性半導体メモリのキャッシュメモリとして用いられる揮発性半導体メモリと、前記不揮発性半導体メモリ又は前記揮発性半導体メモリに書き込まれるデータの特性に基づいて生成され、データの前記不揮発性半導体メモリ又は前記揮発性半導体メモリ上の配置領域を決定するヒントとなる配置ヒント情報に基づき、前記揮発性半導体メモリの前記複数の領域からデータの配置領域を決定する制御部と、を具備することを特徴とする。
【０００８】
本発明のメモリ管理装置の態様は、外部に、不揮発性半導体メモリと、複数の領域を含み、少なくとも一部が前記不揮発性半導体メモリのキャッシュメモリとして用いられる揮発性半導体メモリとが電気的に接続され、前記不揮発性半導体メモリ又は前記揮発性半導体メモリに書き込まれるデータの特性に基づいて生成され、データの前記不揮発性半導体メモリ又は前記揮発性半導体メモリ上の配置領域を決定するヒントとなる配置ヒント情報に基づき、前記揮発性半導体メモリの前記複数の領域からデータの配置領域を決定する制御部、を具備することを特徴とする。
【発明の効果】
【０００９】
本発明は、不揮発性メモリをメインメモリとする場合において、キャッシュメモリのヒット率を向上することが可能なメモリ管理装置を提供できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図。
【図２】第１の実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図。
【図３】第１の実施形態に係る混成メインメモリのメモリマップの一例を示す図。
【図４】第１の実施形態に係るアドレス変換情報の一例を示す図。
【図５】第１の実施形態に係るカラーリングテーブルの一例を示す図。
【図６】第１の実施形態に係る静的カラー情報の一例を説明するための図。
【図７】第１の実施形態に係るデータ配置の処理の一例を示すフローチャート。
【図８】第１の実施形態に係るカラーリングテーブルの構成の一例を示す図。
【図９】各種データに対する静的カラー情報の設定の第１の例を示す図。
【図１０】各種データに対する静的カラー情報の設定の第２の例を示す図。
【図１１】第１の実施形態に係るカラーリングテーブルの生成処理の一例を示すフローチャート。
【図１２】第１の実施形態に係るカラーリングテーブルのエントリの生成処理の一例を示すフローチャート。
【図１３】カラーリングテーブルのエントリのアライメントの第１の例を示す図。
【図１４】カラーリングテーブルのエントリのアライメントの第２の例を示す図。
【図１５】動的カラー情報と静的カラー情報に基づいて動的書き込み頻度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領域を総称して、メモリ領域と称する。
【００５０】
揮発性半導体メモリ８は、例えば、１２８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）を用いた２次記憶装置を使用しなくてもよい。
【０２７９】
本実施形態においては、不揮発性半導体メモリ９，１０をメインメモリとして用いるため、インスタント・オンを高速化できる。
【０２８０】
（第２の実施形態）
前述したように、本実施形態は、不揮発性半導体メモリ９、１０をメインメモリとして用い、揮発性半導体メインメモリ８の一部をキャッシュメモリとして用いる。本実施形態では、キャッシュメモリとして用いられる揮発性半導体メモリ８について説明する。
【０２８１】
図３０は、揮発性半導体メモリ（以下、単にキャッシュメモリとも言う）８の物理アドレス空間を示している。
【０２８２】
本実施形態において、キャッシュメモリ８の物理アドレス空間は、複数の領域（エリア）Ｌ０〜Ｌ５に分けられている。各エリアは、物理アドレス空間上連続である必要はない。各エリアのサイズは、例えば上位のエリア程、物理アドレス空間が大きく設定されている。さらに、上位のエリアは、隣接する下位のエリアにエリアが拡張可能とされている。各エリアの最大拡張サイズは、エリアリミットＥＬＭにより管理されている。
【０２８３】
上位エリアはエリアサイズが大きいため、このエリア内のデータは長期間保持される可能性が高い。一方、下位エリアはエリアサイズが小さいため、このエリア内のデータは短期間しか保持されない可能性が高い。
【０２８４】
本実施形態においては、上位エリアには、書き出し優先度の低いデータを配置し、下位エリアには、書き出し優先度の高いデータを配置する。この配置の処理は、例えば、図１の書き込み管理部２０が行う。書き出し優先度は、カラーリング情報を用いて判断する。なお、「書き出し」とは、揮発性半導体メモリ８から不揮発性半導体メモリ９、１０へのデータの移動を意味する。
【０２８５】
キャッシュメモリ８は、キャッシュヘッダＣＨＤを有している。キャッシュヘッダＣＨＤは各エリアの管理情報を格納している。すなわち、キャッシュヘッダＣＨＤには、各エリアのエリアリミットＥＬＭ、フリーキャッシュラインリストＦＣＬ、及びエリアキャッシュラインリストＥＣＬが記憶されている。
【０２８６】
フリーキャッシュラインリストＦＣＬは、キャッシュメモリ８の空き領域を管理するデータ構造であり、どのエリアにも属していないキャッシュラインに対応する管理情報としての複数のノードを格納している。
【０２８７】
エリアキャッシュラインリストＥＣＬは、キャッシュメモリ８の使用領域を管理するデータ構造であり、エリア毎に、フリーキャッシュラインリストＦＣＬから取得したノードを格納する。
【０２８８】
キャッシュヘッダＣＨＤの内容は、情報処理装置１００の起動時に不揮発性半導体メモリから読み込むことにより初期化される。また、情報処理装置１００の終了時、キャッシュヘッダＣＨＤの内容は、不揮発性半導体メモリ領域に退避される。
【０２８９】
情報処理装置１００の起動時（コールドブート時）は、オペレーションシステムが設定した内容がキャッシュヘッダＣＨＤに記録され、各エリアの基本情報が生成される。
【０２９０】
尚、エリアリミットＥＬＭは、ユーザが各自のシステムの使用形態に合わせて設定すること可能であり、これを可能とするためのインターフェースを設けてもよい。
【０２９１】
フリーキャッシュラインリストＦＣＬ、エリアキャッシュラインリストＥＣＬ、及びノードの詳細については後述する。
【０２９２】
上記のように、混成メインメモリ２に書き込まれるデータは、混成メインメモリ２上の配置（書き込み）領域を決定するヒント情報としてのカラーリング情報を有している。このため、このカラーリング情報を用いてキャッシュメモリ８の各エリアに対するデータの書き込みを制御することにより、キャッシュのヒット率を向上することが可能となる。これにより、不揮発性半導体メモリ９、１０への読み出しの頻度の低減が図れ、不揮発性半導体メモリ９、１０を保護することが可能である。
【０２９３】
図３１（ａ）（ｂ）、図３２（ａ）（ｂ）は、上記カラーリングテーブル１４のカラーリング情報と、図３０に示すキャッシュメモリ８の各エリアとの対応関係を示すテーブル（ＣＥＴ）の例を示している。
【０２９４】
図３１（ａ）は、読み出しアクセスを優先したものであり、読み出しのヒット率を向上可能とするものである。具体的には、図３１（ａ）は、カラーリング情報としてのデータ寿命SL_color、静的読み出し頻度情報SR_colorと、動的読み出し頻度DR_color、及び揮発性半導体メモリ８のエリアの対応関係を示している。図３１（ａ）に示すように、静的読み出し頻度情報SR_colorの値が大きく、読み出し頻度が高いデータ程、揮発性半導体メモリ８の上位のエリアに配置される。つまり、読み出しアクセスを優先する場合には、静的読み出し頻度情報SR_colorと動的読み出し頻度DR_colorを参照し、静的読み出し頻度情報SR_colorと動的読み出し頻度DW_colorをエリアのサイズが大きい上位エリアに配置する。上位エリアはエリアサイズが大きいため、このエリア内のデータは長期間保持される可能性が高い。このため、読み出しアクセスのキャッシュヒット率を向上することが可能である。
【０２９５】
また、データ寿命が“Ｓ”であるデータは、他のカラーリング情報に係らずエリアＬ５に配置される。例えば演算途中のデータなどは、データの寿命が短いため、不揮発性半導体メモリ９、１０に書き込む必要が低い。しかし、このようなデータは数多く存在する。このため、このようなデータはキャッシュメモリ８において、最も大きなサイズのエリアＬ５に配置される。
【０２９６】
図３１（ｂ）は、書き込みアクセスを優先したものであり、書き込みのヒット率を向上可能とするものである。具体的には、図３１（ｂ）は、カラーリング情報としてのデータ寿命SL_color、静的書き込み頻度情報SW_colorと、動的書き込み頻度情報DW_color、及び揮発性半導体メモリ８のエリアの対応関係を示している。つまり、書き込みアクセスを優先する場合には、静的書き込み頻度情報SW_colorと動的書き込み頻度DW_colorを参照し、静的書き込み頻度情報SR_colorと動的書き込み頻度SW_colorをエリアのサイズが大きい上位エリアに配置する。これにより、書き込みアクセスのキャッシュヒット率を向上することが可能である。
【０２９７】
また、データ寿命が“Ｓ”のデータは、図３１（ａ）と同様に、エリアＬ５に配置される。
【０２９８】
図３２（ａ）は、読み出し頻度と書き込み頻度の両方を考慮したものであり、読み出し頻度と書き込み頻度の少なくとも一方が高ければヒット率を向上可能とするものである。具体的には、カラーリング情報としてのデータ寿命SL_colorと、静的読み出し頻度情報SR_colorの値と静的書き込み頻度情報SW_colorの値の和と、揮発性半導体メモリ８のエリアの対応関係を示している。
【０２９９】
図３２（ｂ）は、図３２（ａ）の変形であり、読み出し頻度と書き込み頻度に重み付けしたものであり、読み出し頻度と書き込み頻度に任意に重みを設定し、ヒット率を向上可能とするものである。図３２（ａ）と異なり、SR_color * W + SW_color * (1-W) の値に対して揮発性半導体メモリ８のエリアが対応付けられている。
【０３００】
図３２（ａ）（ｂ）において、データ寿命が“Ｓ”のデータは、図３１（ａ）（ｂ）と同様に、エリアＬ５に配置される。
【０３０１】
図３１（ａ）（ｂ）、図３２（ａ）（ｂ）に示すカラーリング情報とエリアの関係を示すテーブルＣＥＴは、これらのうちの１つが、例えば情報記憶部１７に記憶される。
【０３０２】
また、カラーリング情報とエリアの関係は、図３１（ａ）（ｂ）、図３２（ａ）（ｂ）に示す例に限定されるものではなく、ユーザの要求に応じて変化し得るものである。このため、拡張性を有するように、キャッシュメモリ８のエリアが上記にように拡張可能に設定されている。
【０３０３】
次に、図３３を参照して、キャッシュエリアの管理方法の一例を説明する。図３３は、キャッシュメモリ８のキャッシュヘッダＣＨＤに記憶されたフリーキャッシュラインリストＦＣＬ、エリアキャッシュラインリストＥＣＬの一例を示している。
【０３０４】
フリーキャッシュラインリストＦＣＬは、前述したように、キャッシュメモリ８の空き領域を示すデータ構造であり、キャッシュラインに対応した複数のノードＮＤにより構成されている。各ノードＮＤは、キャッシュラインの物理アドレス、所属エリア、更新フラグにより構成されている。
【０３０５】
キャッシュラインは、不揮発性半導体メモリ９、１０のページサイズ（Ｉ／Ｏサイズ）に対応している。各ノードＮＤは、キャッシュラインの物理アドレスを記憶している。
【０３０６】
所属エリアは、キャッシュメモリに設定されたエリアＬ０〜Ｌ５のいずれかである。
【０３０７】
更新フラグは、キャッシュラインのデータに更新等が発生したかどうかを示すフラグである。この更新フラグが“０”である場合、データが消去されたこと、又は、データが揮発性半導体メモリ８に書き込まれ、この書き込まれたデータが更新されていないことを示している。
【０３０８】
また、更新フラグが“１”である場合、キャッシュラインのデータが更新され、このデータの更新が不揮発性半導体メモリ９、１０に反映されていないことを示している。
【０３０９】
この更新フラグは、例えば処理部１５により制御される。処理部１５は、不揮発性半導体メモリ９、１０からキャッシュメモリ８にデータを書き込む際、対応する更新フラグを“０”にセットし、この書き込まれたデータがキャッシュメモリ８において更新された場合、更新フラグを“１”にセットする。また、処理部１５は、キャッシュメモリ８のデータが消去された際、対応する更新フラグを“０”にセットし、さらに、キャッシュメモリ８のデータの更新を不揮発性半導体メモリ９、１０に反映した場合、対応する更新フラグを“０”にセットする。
【０３１０】
尚、更新フラグは、各ノードに配置せず、例えば情報処理部１７に記憶されているダーティビットを示すフィールドの内容を参照してもよい。
【０３１１】
一方、エリアキャッシュラインリストＥＣＬは、前述したように、キャッシュメモリ８の使用領域を管理するデータ構造であり、各エリアに含まれるキャッシュラインに対応してノードを格納している。すなわち、不揮発性半導体メモリ９、１０から読み出されたデータをキャッシュメモリ８に書き込む場合、データに付されたカラーリング情報に基づきフリーキャッシュラインリストＦＣＬの各ノードの所属エリアがサーチされ、空きエリアがある場合、そのノードが取得され、エリアキャッシュラインリストＥＣＬの対応するエリアに配置される。例えば書き込みデータがエリアＬ５に書き込むべきデータである場合、フリーキャッシュラインリストＦＣＬの各ノードがサーチされ、エリアＬ５又は拡張領域としての下位のエリアＬ４〜Ｌ０のうちの１つのノードが取得される。この取得されたノードは、エリアＬ５に対応するエリアキャッシュラインリストＥＣＬに接続される。
【０３１２】
また、取得されたノードのキャッシュライン物理アドレスに従って、キャッシュメモリ８にデータが書き込まれる。さらに、ノードＮＤの更新フラグが“０”に設定される。
【０３１３】
エリアキャッシュラインリストＥＣＬは、例えばＦＩＦＯ（First-in/First-out）や、ＬＲＵ（Least Recently Used）等のアルゴリズムに基づき管理される。このため、例えば各エリアに対応してフリーキャッシュラインリストＦＣＬからノードが取得された場合、取得されたノードは、設定されたアルゴリズムに基づきソートされる。
【０３１４】
エリアキャッシュラインリストＥＣＬの例えば先頭に位置するノードに対応するキャッシュラインが常にそのエリアの書き出し対象となる。
【０３１５】
また、エリアキャッシュラインリストＥＣＬにおいて、各エリアに対応して配置されるノードの数は、エリアリミットＥＬＭにより管理され、各エリアのリストの長さがエリアリミットＥＬＭを越えないように管理されている。
【０３１６】
なお、図３３では、キャッシュエリアの管理方法として、キャッシュヘッダを用いた、ソフトウェア処理による管理について説明したが、キャッシュラインをキャッシュタグで管理する構成を用いた、ハードウェアによる管理であってもよい。
【０３１７】
図３４は、例えば処理部１５によるデータの書き込み処理を示している。すなわち、図３４は、不揮発性半導体メモリ９、１０から新たにデータが読み出され、キャッシュメモリ８に配置されることが決定された場合の処理の流れを示している。本実施形態は、各エリアのサイズを可変長にしているため、エリアが拡張可能かどうかにより、データ書き込みまでのプロセスが異なる。
【０３１８】
図３４において、キャッシュメモリ８にデータを配置する場合、先ず、キャッシュメモリ８のデータ配置エリアが決定される（ステップＳ３１）。すなわち、図３１（ａ）（ｂ）、図３２（ａ）（ｂ）に示す対応関係に基づき、読み出されたデータをキャッシュメモリ８のどのエリアに配置するかが決定される。
【０３１９】
具体的には、不揮発性半導体メモリ９、１０から読み出されたデータに付されたカラーリング情報に基づき、例えば図３１（ａ）に示すテーブルＣＥＴが参照される。データに付されたカラーリング情報のうち、データ寿命が“Ｌ”で、静的読み出し頻度情報SR_colorの値が“１”、読み出し頻度が“高”である場合、このデータは、エリアＬ０に配置される。また、データに付されたカラーリング情報のうち、データ寿命が“Ｌ”で、SR_colorの値が“４”、読み出し頻度が“高”である場合、このデータは、エリアＬ４に配置される。
【０３２０】
次に、エリアの拡張が可能かどうか判別される（ステップＳ３２）。例えばエリアキャッシュラインリストのノードの数から、そのエリアの現在のサイズを認識できる。このため、この現在のサイズと、キャッシュヘッダＣＨＤに記載されたエリアリミットＥＬＭの値が比較される。この結果、現在のサイズがエリアリミットＥＬＭの値より小さい場合、エリアが拡張可能であると判定される。
【０３２１】
エリアが拡張可能である場合、フリーキャッシュラインリストＦＣＬに、そのエリアに対応するノードＮＤが存在するかどうかが判定される（ステップＳ３３）。すなわち、フリーキャッシュラインリストＦＣＬ内のノードの所属エリアがサーチされ、対応するエリアが存在するかどうかが判別される。この場合、データがエリアＬ４に書き込むべきデータである場合、エリアＬ４はエリアＬ３の一部まで拡張可能であるため、エリアＬ４とエリアＬ３がサーチされる。
【０３２２】
この結果、対応するノードＮＤが存在する場合、そのノードＮＤがフリーキャッシュラインリストから取得される（ステップＳ３４）。
【０３２３】
この取得したノードＮＤからキャッシュラインの物理アドレスが取得され、この物理アドレスに基づき、不揮発性半導体メモリ９、１０から読み出されたデータがキャッシュメモリ８に書き込まれる（ステップＳ３５）。
【０３２４】
この後、キャッシュヘッダＣＨＤが更新される（ステップＳ３６）。すなわち、フリーキャッシュラインリストＦＣＬから取得されたノードＮＤがエリアキャッシュラインリストＥＣＬに移動され、更新フラグがデータ“０”に設定される。
【０３２５】
次いで、アドレス変換テーブルが更新される（ステップＳ３７）。すなわち、キャッシュメモリ８に書き込まれたデータに対応する不揮発性半導体メモリ９、１０の物理アドレスがアドレス変換テーブルに書き込まれる。
【０３２６】
一方、ステップＳ３３において、フリーキャッシュラインリストＦＣＬに対応するノードＮＤが存在しないと判定された場合、エリアキャッシュラインリストＥＣＬが最下位エリアからサーチされる（ステップＳ３８）。すなわち、新たなノードＮＤを生成するため、キャッシュメモリ８内のいずれかのデータを不揮発性半導体メモリ９、１０へ転送してフリーエリアを生成する必要がある。このため、図３３に示すエリアキャッシュラインリストＥＣＬの最下位エリアＬ０からエリアＬ５の全エリアがサーチされる。
【０３２７】
例えば不揮発性半導体メモリ９、１０から読み出されたデータがエリアＬ４に書き込むべきデータである場合において、エリアＬ４は下位エリアの一部に拡張可能とされている。このため、エリアキャッシュラインリストＥＣＬの下位エリアのノードＮＤが取得される。
【０３２８】
次いで、ノードＮＤが取得できたかどうかが判定される（ステップＳ３９）。この結果、ノードＮＤを取得できた場合、この取得したノードＮＤからキャッシュラインの物理アドレスが取得され、この物理アドレスに基づき、キャッシュメモリ８内のデータが不揮発性半導体メモリ９、１０に書き込まれる（ステップＳ４０）。
【０３２９】
この後、キャッシュヘッダＣＨＤが更新される（ステップＳ４１）。すなわち、エリアキャッシュラインリストＥＣＬのノードＮＤに対応するデータが不揮発性半導体メモリ９、１０に書き込まれたことにより、フリーのノードＮＤが生成されたことなる。このノードＮＤがフリーキャッシュラインリストＦＣＬに移動され、更新フラグがデータ“０”に設定される。
【０３３０】
次いで、制御が前記ステップＳ３３に移行される。この場合、フリーキャッシュラインリストＦＣＬにフリーなノードＮＤが存在するため、このノードが取得され、このノードで指定された物理アドレスにデータが書き込まれる（ステップＳ３３〜Ｓ３５）。次いで、キャッシュヘッダＣＨＤ及びアドレス変換テーブルが更新される（ステップＳ３６、Ｓ３７）。
【０３３１】
また、ステップＳ３２において、エリアの拡張が困難と判別された場合、エリアキャッシュラインリストＥＬＣのそのエリアのノードＮＤがサーチされ、先頭ノードＮＤが取得される（ステップＳ４２）。この取得されたノードＮＤは、優先度の低いエリアのノードである。
【０３３２】
この後、前述した動作と同様に、取得したノードからキャッシュラインの物理アドレスが取得され、この物理アドレスに基づき、揮発性半導体メモリ８のデータが不揮発性半導体メモリ９、１０に書き込まれる（ステップＳ４０）。この後、キャッシュヘッダが更新される（ステップＳ４１）。
【０３３３】
さらに、前記ステップＳ３９において、エリアキャッシュラインリストＥＣＬをサーチした結果、ノードＮＤを取得できなかった場合、キャッシュメモリ８を使用することができないため、不揮発性半導体メモリ９、１０にデータが書き込まれる（ステップＳ４３）。この後、アドレス変換テーブルが更新される（ステップＳ３７）。
【０３３４】
（キャッシュメモリの消去）
図３５は、キャッシュメモリ８の消去動作の一例を示している。キャッシュメモリ８は、ソフトウェアにより消去可能とされている。
【０３３５】
図３５に示すように、キャッシュメモリ８に記憶されたデータの消去要求が発行された場合（ステップＳ５１）、各ノードＮＤの更新フラグがサーチされ、不揮発性半導体メモリ９、１０に更新されていないデータが検出される（ステップＳ５２）。すなわち、例えばエリアキャッシュラインリストＥＣＬの更新フラグがデータ“１”であるノードが検出される。この結果、データ“１”である更新フラグがない場合、処理が終了される。
【０３３６】
また、データ“１”である更新フラグがある場合、そのノードＮＤのキャッシュラインの物理アドレスに基づき、キャッシュメモリ８内のデータが不揮発性半導体メモリ９、１０に書き込まれる（ステップＳ５３）。
【０３３７】
この後、キャッシュヘッダＣＨＤが更新される（ステップＳ５４）。すなわち、エリアキャッシュラインリストＥＣＬのノードが、フリーキャッシュラインリストＦＣＬに移行され、更新フラグがデータ“０”に設定される。次いで、制御がステップＳ５２に移行される。このような動作が、データ“１”である更新フラグが無くなるまで繰り返される。
【０３３８】
上記第２の実施形態によれば、データに付されたカラーリング情報とキャッシュメモリ８のエリアとの関係に基づき、重要度の高いデータは揮発性半導体メモリ８の上位のエリアに記憶している。したがって、キャッシュメモリ８のヒット率を向上させることが可能である。
【０３３９】
また、キャッシュメモリ８のヒット率が高いため、不揮発性半導体メモリ９、１０に対するアクセス回数を低減することが可能であり、不揮発性半導体メモリ９、１０を保護することが可能である。
【０３４０】
しかも、上位のエリアは拡張領域があるため、拡張領域が満杯となるまでデータを書き込むことができる。エリアが小さい場合、重要度が高くとも、アクセスが暫くないデータは、例えばＬＲＵのアルゴリズムに基づき、キャッシュメモリ８からライトバックされてしまう可能性が高い。しかし、上位エリアを下位エリアまで拡張可能とし、拡張領域を含めて広いエリア確保することにより、アクセスが少ないデータもキャッシュメモリ内に残すことが可能である。したがって、キャッシュメモリ８のヒット率を向上することが可能である。
【０３４１】
また、キャッシュメモリ８は、カラーリング情報毎にエリアがＬ０〜Ｌ５に分けられている。上位のエリアとしての例えばエリアＬ５は、規定のサイズ以上のデータを記憶する場合、それより下位のエリアＬ４の一部までエリアを拡張可能とされている。また、拡張領域までデータが書き込まれ、エリアを拡張できなくなった場合、ＦＩＦＯや、ＬＲＵ等のアルゴリズムに基づき、キャッシュメモリ８のデータが不揮発性半導体メモリ９、１０へライトバックされる。最下位のエリアＬ０は、拡張領域を持たないため、エリアが満杯となった場合、ＦＩＦＯやＬＲＵ等のアルゴリズムに基づきライトバックが行われる。このため、書き込み頻度が高いデータをキャッシュメモリ８に長期間保存することが可能である。したがって、消去回数に制限がある不揮発性半導体メモリ９、１０を保護することが可能である。
【０３４２】
尚、本発明は、上記実施形態に限定されるものではなく、発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【符号の説明】
【０３４３】
１…メモリ管理装置、２…混成メインメモリ、３ａ〜３ｂ…プロセッサ、４ａ〜４ｃ…１次キャッシュメモリ、５ａ〜５ｃ…２次キャッシュメモリ、６ａ〜６ｃ…プロセス、７…バス、８…揮発性半導体メモリ（キャッシュメモリ）、９，１０，２９…不揮発性半導体メモリ、１１…メモリ使用情報、１２…メモリ固有情報、１３…アドレス変換情報、１４…カラーリングテーブル、１５…処理部、１６…作業メモリ、１７…情報記憶部、１８…アドレス管理部、１９…読み出し管理部、２０…書き込み管理部、２１…カラーリング情報管理部、２２…メモリ使用情報管理部、２３…再配置部、２４…アクセス頻度算出部、２５…動的カラー情報管理部、２７…オペレーティングシステム、２８…キャッシュメモリ、３ｍａ〜３ｍｃ…メモリ管理ユニット、ｃｔａ〜ｃｔｃ…カウンタ、ｃｉａ〜ｃｉｃ…カウント情報、３０…メモリモジュール、３１…ボタン、Ｌ０〜Ｌ５…エリア、ＣＥＴ…テーブル、ＣＨＤ…キャッシュヘッダ、ＥＬＭ…エリアリミット、ＦＣＬ…フリーキャッシュラインリスト、ＥＣＬ…エリアキャッシュラインリスト、ＮＤ…ノード。
【図１】
2011186559.tif 000003
【図２】
2011186559.tif 000004
【図３】
2011186559.tif 000005
【図４】
2011186559.tif 000006
【図５】
2011186559.tif 000007
【図６】
2011186559.tif 000008
【図７】
2011186559.tif 000009
【図８】
2011186559.tif 000010
【図９】
2011186559.tif 000011
【図１０】
2011186559.tif 000012
【図１１】
2011186559.tif 000013
【図１２】
2011186559.tif 000014
【図１３】
2011186559.tif 000015
【図１４】
2011186559.tif 000016
【図１５】
2011186559.tif 000017
【図１６】
2011186559.tif 000018
【図１７】
2011186559.tif 000019
【図１８】
2011186559.tif 000020
【図１９】
2011186559.tif 000021
【図２０】
2011186559.tif 000022
【図２１】
2011186559.tif 000023
【図２２】
2011186559.tif 000024
【図２３】
2011186559.tif 000025
【図２４】
2011186559.tif 000026
【図２５】
2011186559.tif 000027
【図２６】
2011186559.tif 000028
【図２７】
2011186559.tif 000029
【図２８】
2011186559.tif 000030
【図２９】
2011186559.tif 000031
【図３０】
2011186559.tif 000032
【図３１】
2011186559.tif 000033
【図３２】
2011186559.tif 000034
【図３３】
2011186559.tif 000035
【図３４】
2011186559.tif 000036
【図３５】
2011186559.tif 000037