(57)【要約】【課題】シャットダウン及び起動に要する時間を短縮可能であり、不揮発性メモリの性質を考慮した安全性の高いデ―タの保管が可能なメモリ管理装置と管理方法を提供する。【解決手段】第１の記憶手段２１は、不揮発性半導体メモリ９，１０と揮発性半導体メモリ８のうちの少なくとも一方に記憶される各データの特性に基づいて生成され、各データの配置領域を決定するヒントとなる配置ヒント情報１４を記憶する。第２の記憶手段ＤＢＦは、揮発性半導体メモリ内で更新され、不揮発性半導体メモリに更新されていないデータを示す第１のフラグデータを記憶する。第１の検出手段１５は、シャットダウン時、第２の記憶手段に記憶された第１のフラグデータに基づき、揮発性半導体メモリから不揮発性半導体メモリに転送すべきデータを検出する。転送手段１５は、検出されたデータを配置ヒント情報とは無関係に不揮発性半導体メモリの第２の記憶領域に転送する。【選択図】図１
2011186558.tif 000002
【特許請求の範囲】
【請求項１】
２値データを記憶する第１の記憶領域と、多値データを記憶する第２の記憶領域とを有する不揮発性半導体メモリと、
少なくとも前記不揮発性半導体メモリから読み出されたデータを記憶する揮発性半導体メモリと、
前記不揮発性半導体メモリと揮発性半導体メモリのうちの少なくとも一方に記憶される各データの特性に基づいて生成され、各データの配置領域を決定するヒントとなる配置ヒント情報を記憶する第１の記憶手段と、
揮発性半導体メモリ内で更新され、不揮発性半導体メモリに更新されていないデータを示す第１のフラグデータを記憶する第２の記憶手段と、
情報処理装置のシャットダウン時、前記第２の記憶手段に記憶された前記第１のフラグデータに基づき、揮発性半導体メモリから不揮発性半導体メモリに転送すべきデータを検出する第１の検出手段と、
前記第１の検出手段により検出されたデータを前記第１の記憶手段に記憶された配置ヒント情報とは無関係に前記不揮発性半導体メモリの前記第２の記憶領域に転送する転送手段と
を具備することを特徴とするメモリ管理装置。
【請求項２】
前記第１の検出手段により検出された揮発性半導体メモリから不揮発性半導体メモリに転送すべきデータのサイズを算出する手段と、
前記算出手段により算出されたサイズが、前記第２の記憶領域のサイズより大きい場合、前記第１の記憶手段の前記配置ヒント情報に基づき、前記揮発性半導体メモリのデータを前記不揮発性半導体メモリの第１又は第２の記憶領域に転送する転送手段と
を具備することを特徴とする請求項１記載のメモリ管理装置。
【請求項３】
前記第１の記憶手段は、前記配置ヒント情報が記憶される各エントリに情報処理装置の起動時に先に読み出すべきデータであるかどうかを示す第２のフラグデータを有し、
情報処理装置の起動時に前記第２のフラグデータを検出する第２の検出手段と、
前記第２の検出手段により、先に読み出すべきデータが検出された場合、そのデータを読み出す読み出し手段と
を具備することを特徴とする請求項１又は２記載のメモリ管理装置。
【請求項４】
前記第２のフラグデータは、情報処理装置のシャットダウン時に前記第１の記憶手段の対応するエントリに設定されることを特徴とする請求項３記載のメモリ管理装置。
【請求項５】
２値データを記憶する第１の記憶領域と、多値データを記憶する第２の記憶領域とを有する不揮発性半導体メモリと、
少なくとも前記不揮発性半導体メモリから読み出されたデータを記憶する揮発性半導体メモリと、
前記不揮発性半導体メモリと揮発性半導体メモリのうちの少なくとも一方に記憶される各データの特性に基づいて生成され、各データの配置領域を決定するヒントとなる配置ヒント情報を記憶する第１の記憶手段と、
を有する統合メモリ管理方法であって、
情報処理装置のシャットダウン時、第２の記憶手段に記憶された揮発性半導体メモリ内で更新され、不揮発性半導体メモリに更新されていないデータを示す第１のフラグデータに基づき、揮発性半導体メモリから不揮発性半導体メモリに転送すべきデータを検出し、
前記検出されたデータを前記第１の記憶手段に記憶された前記配置ヒント情報とは無関係に前記不揮発性半導体メモリの前記第１の記憶領域に転送する
ことを特徴とするメモリ管理方法。
【請求項６】
前記検出された揮発性半導体メモリから不揮発性半導体メモリに転送すべきデータのサイズを算出し、
前記算出されたサイズが、前記第１の記憶領域のサイズより大きい場合、前記第１の記憶手段に記憶された前記配置ヒント情報に基づき、前記揮発性半導体メモリのデータを前記不揮発性半導体メモリの第１又は第２の記憶領域に転送する
ことを特徴とする請求項５記載のメモリ管理方法。
【請求項７】
前記第１の記憶手段は、前記配置ヒント情報が記憶される各エントリに情報処理装置の起動時に先に読み出すべきデータであるかどうかを示す第２のフラグデータを有し、
情報処理装置の起動時に前記第２のフラグデータを検出し、
先に読み出すべきデータが検出された場合、そのデータを読み出す
ことを特徴とする請求項５又は６記載のメモリ管理方法。
【請求項８】
前記第２のフラグデータは、情報処理装置のシャットダウン時に前記第１の記憶手段の対応するエントリに設定されることを特徴とする請求項７記載のメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを含むメインメモリを用いたメモリ管理装置及び方法に関する。
【背景技術】
【０００２】
一般に、ＭＰＵ（Micro Processing Unit）は、ＤＲＡＭ（Dynamic Random Access Memory）をメインメモリ（主記憶装置）として用いている。このようなシステムがシャットダウンされる場合、メインメモリ内の実行コードやデータなどやプロセスのコンテキストが二次記憶装置に保存される。このため、システムを再起動する際、Ｉ/Ｏインターフェースを介して二次記憶装置から必要な実行コードやデータなどを再度メモリ上にロードしなくてはならない。さらに、各プログラムの初期化も再度行われる。このため、システムの起動時間は長くなることが多い。
【０００３】
この問題を解決するため、（ａ）メインメモリの記憶状態やプロセスのコンテキストをスワップ領域（二次記憶装置と同義）に退避し、シャットダウンを行う方式（例えばsuspend to swap）や、（ｂ）完全にシステムの電源を落とさず、揮発性メモリからデータが消えないような状態で休止する方式（例えばsuspend to RAM）が提案されている。
【０００４】
しかし、（ａ）の場合、スワップ領域に退避する実行コードやデータなどの最適化が難しく、実行コードやデータなどのサイズに比例して起動時間が長くなる。
【０００５】
また、（ｂ）の場合、揮発性メモリ上にデータが存在するため、通電状態を保たなければならない。このため、長期間の休止が困難であるという問題がある。
【０００６】
尚、関連技術として、次のようなものがある。特許文献１には、統合メモリ管理装置が開示されている。特許文献２には、情報処理装置の主記憶装置としてフラッシュメモリを採用する技術が開示されている。特許文献３においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２４２９４４号公報
【特許文献２】特開平７−１４６８２０号公報
【特許文献３】特開２００１−２６６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、シャットダウン及び起動に要する時間を短縮可能であり、不揮発性メモリの性質を考慮した安全性の高いデ―タの保管が可能なメモリ管理装置及び方法を提供しようとするものである。
【課題を解決するための手段】
【０００９】
本発明のメモリ管理装置の態様は、２値データを記憶する第１の記憶領域と、多値データを記憶する第２の記憶領域とを有する不揮発性半導体メモリと、少なくとも前記不揮発性半導体メモリから読み出されたデータを記憶する揮発性半導体メモリと、前記不揮発性半導体メモリと揮発性半導体メモリのうちの少なくとも一方に記憶される各データの特性に基づいて生成され、各データの配置領域を決定するヒントとなる配置ヒント情報を記憶する第１の記憶手段と、揮発性半導体メモリ内で更新され、不揮発性半導体メモリに更新されていないデータを示す第１のフラグデータを記憶する第２の記憶手段と、情報処理装置のシャットダウン時、前記第２の記憶手段に記憶された前記第１のフラグデータに基づき、揮発性半導体メモリから不揮発性半導体メモリに転送すべきデータを検出する第１の検出手段と、前記第１の検出手段により検出されたデータを前記第１の記憶手段に記憶された配置ヒント情報とは無関係に前記不揮発性半導体メモリの前記第２の記憶領域に転送する転送手段とを具備することを特徴とする。
【００１０】
本発明のメモリ管理方法の態様は、２値データを記憶する第１の記憶領域と、多値データを記憶する第２の記憶領域とを有する不揮発性半導体メモリと、少なくとも前記不揮発性半導体メモリから読み出されたデータを記憶する揮発性半導体メモリと、前記不揮発性半導体メモリと揮発性半導体メモリのうちの少なくとも一方に記憶される各データの特性に基づいて生成され、各データの配置領域を決定するヒントとなる配置ヒント情報を記憶する第１の記憶手段と、を有する統合メモリ管理方法であって、情報処理装置のシャットダウン時、第２の記憶手段に記憶された揮発性半導体メモリ内で更新され、不揮発性半導体メモリに更新されていないデータを示す第１のフラグデータに基づき、揮発性半導体メモリから不揮発性半導体メモリに転送すべきデータを検出し、前記検出されたデータを前記第１の記憶手段に記憶された前記配置ヒント情報とは無関係に前記不揮発性半導体メモリの前記第１の記憶領域に転送することを特徴とする。
【発明の効果】
【００１１】
本発明は、シャットダウン及び起動に要する時間を短縮可能であり、不揮発性メモリの性質を考慮した安全性の高いデ―タの保管が可能なメモリ管理装置及び方法を提供できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図。
【図２】第１の実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図。
【図３】第１の実施形態に係る混成メインメモリのメモリマップの一例を示す図。
【図４】第１の実施形態に係るアドレス変換情報の一例を示す図。
【図５】第１の実施形態に係るカラーリングテーブルの一例を示す図。
【図６】第１の実施形態に係る静的カラー情報の一例を説明するための図。
【図７】第１の実施形態に係るデータ配置の処理の一例を示すフローチャート。
【図８】第１の実施形態に係るカラーリングテーブルの構成の一例を示す図。
【図９】各種データに対する静的カラー情報の設定の第１の例を示す図。
【図１０】各種データに対する静的カラー情報の設定の第２の例を示す図。
【図１１】第１の実施形態に係るカラーリングテーブルの生成処理の一例を示すフローチャート。
【図１２】第１の実施形態に係るカラーリングテーブルのエントリの生成処理の一例を示すフローチャート。
【図１３】カラーリングテーブルのエントリのアライメントの第１の例を示す図。
【図１４】カラーリングテーブルのエントリのアライメントの第２の例を示す図。
【図１５】動的カラー情報と静的カラー情報に基づいて動的書き込み頻度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）を用いた２次記憶装置を使用しなくてもよい。
【０２８１】
本実施形態においては、不揮発性半導体メモリ９，１０をメインメモリとして用いるため、インスタント・オンを高速化できる。
【０２８２】
（第２の実施形態）
第２の実施形態は、情報処理装置１００をシャットダウンする際における揮発性半導体メモリ８から不揮発性半導体メモリ９、１０へのデータの移動に関するものである。
【０２８３】
統合メモリ管理装置において、混成メインメモリ２のメモリマップは、図３に示す通りである。情報処理装置１００が動作しているとき、揮発性半導体メモリ８（ＤＲＡＭ領域）には、データの読み、書きによりキャッシュされたデータが存在する。情報処理装置１００をシャットダウンするとき、例えば揮発性半導体メモリ８において更新され、不揮発性半導体メモリ９、１０において更新されていないダーティなデータが存在する。このため、ダーティなデータを選択し、不揮発性半導体メモリ９、１０に転送する必要がある。
【０２８４】
図３０は、情報記憶部１７に設けられた揮発性半導体メモリ８のダーティビットフィールドＤＢＦの一例を示している。このダーティビットフィールドＤＢＦ各カラムは、物理アドレスに基づいて設定されたインデックス情報に対応して、そのデータがダーティかどうかを示すフラグデータが設定されている。フラグデータ“０”は、そのエントリに対応するデータが消去されたこと、又は、そのデータが揮発性半導体メモリ８に読み込まれ、更新されていないこと（同期されている）ことを示し、フラグデータ“１”は、揮発性半導体メモリ８において更新され、不揮発性半導体メモリ９、１０において更新されていない（同期されていない）ことを示している。すなわち、データ“１”のエントリに対応するデータは、シャットダウン時に不揮発性半導体メモリ９、１０へ転送する必要があり、データ“０”のエントリに対応するデータは、不揮発性半導体メモリ９、１０へ転送する必要がない。
【０２８５】
メモリ管理装置１は、不揮発性半導体メモリ９、１０から読み出されたデータを揮発性半導体メモリ８に書き込む際、又は揮発性半導体メモリ８からデータが消去された際、及び揮発性半導体メモリ８内のデータの更新を不揮発性半導体メモリ９、１０に反映した際のいずれかにおいて、対応するエントリのフラグデータを“０”にセットする。
【０２８６】
また、メモリ管理装置１は、揮発性半導体メモリ８上のデータが更新されたとき、対応するエントリのフラグデータを“１”にセットする。
【０２８７】
ダーティビットフィールドＤＢＦのエントリ数は、揮発性半導体メモリ８のサイズをＩ／Ｏ単位（キャッシュラインサイズ＝ページサイズ）で割った値となる。
【０２８８】
図３１は、情報処理装置１００がシャットダウンされる際の処理の一例を示している。この処理は、例えば処理部１５において実行される。
【０２８９】
情報処理装置１００がシャットダウンされる際、先ず、不揮発性半導体メモリ９、１０に更新されていないデータの合計サイズＳＡが算出される（ステップＳ３１）。すなわち、ダーティビットフィールドＤＢＦのエントリがサーチされてフラグデータが“１”であるデータが検出される。この検出されたフラグデータが“１”であるデータのサイズが合計され、未更新データサイズＳＡが算出される。
【０２９０】
前述したように、ダーティビットフィールドＤＢＦの各エントリは、不揮発性半導体メモリのページサイズ毎に設定されている。このため、フラグデータが“１”の数を計数し、この計数値にページサイズを乗算することにより、更新データサイズＳＡを求めることができる。
【０２９１】
次いで、不揮発性半導体メモリの空き領域サイズＳＢが算出される（ステップＳ３２）。本実施形態は、シャットダウン時に、揮発性半導体メモリ８のデータを不揮発性半導体メモリ書き込む場合、書き込み、読み出しの高速化、及びデータを長期間保管する可能性があることを考慮して、不揮発性半導体メモリ９のＳＬＣ領域にデータが書き込まれる。具体的には、図３に示すＳＬＣ領域の例えばＢ領域に優先的にデータが書き込まれる。
【０２９２】
上述したように、メモリ管理装置１は、カラーリングテーブル１４の情報に基づき、不揮発性半導体メモリ９、１０の書き込みを管理している。しかし、本実施形態に係るシャットダウン処理は、この原則を無視し、例えば高速かつ高信頼性を維持してデータを記憶させるため、不揮発性半導体メモリ９の例えばＢ領域にデータを優先的に記憶させる。
【０２９３】
このため、Ｂ領域の空き領域サイズが算出される。空き領域サイズの計算は、例えばメモリ使用情報１７の内容に基づき求められる。
【０２９４】
この後、算出された未更新データサイズＳＡとＢ領域の空き領域サイズＳＢが比較される（ステップＳ３３）。この結果、算出された未更新データサイズＳＡがＢ領域の空き領域サイズＳＢ以下である場合、揮発性半導体メモリ８の未更新のデータが不揮発性半導体メモリのＢ領域に書き込まれる（ステップＳ３４）。次いで、Ｂ領域に書き込に基づき、図４に示すアドレス管理情報が更新される（ステップＳ３５）。
【０２９５】
一方、ステップＳ３３において、算出された未更新データサイズＳＡがＢ領域の空き領域サイズＳＢより大きいと判断された場合、通常の書き込み処理が実行される。すなわち、原則に従って、カラーリングテーブル１４を参照してデータの書き込みが実行される（ステップＳ３６）。この後、アドレス管理情報が更新される（ステップＳ３５）。
【０２９６】
上記第２の実施形態によれば、情報記憶部１７にダーティビットフィールドＤＢＦを設け、揮発性半導体メモリ８のデータが更新されたか、されていないかをフラグデータにより管理し、情報処理装置１００がシャットダウンされる際、ダーティビットフィールドＤＢＦのフラグデータに基づき、揮発性半導体メモリ８のデータを不揮発性半導体メモリ９に転送している。したがって、シャットダウン時、未更新のデータを確実に不揮発性半導体メモリ９へ転送することができる。
【０２９７】
しかも、シャットダウン時、揮発性半導体メモリ８から出力される未更新のデータは、不揮発性半導体メモリ９のＳＬＣ領域に書き込まれる。このため、書き込み処理を高速化することができるとともに、長期間の保存に対して信頼性を保持することが可能である。
【０２９８】
（第３の実施形態）
第３の実施形態は、情報処理装置１００の起動の高速化を目的とするものである。
【０２９９】
例えば動画プレーヤとブラウザが動作していた状態において、シャットダウンされたとき、ブラウザが動作していた場合、動画プレーヤは次にスケジュールされる可能性が高いという優先度を持っている場合、情報処理装置１００の起動後、優先度の高い動画プレーヤのコードが揮発性半導体メモリ８に転送されていれば、高速に動作させることが可能と考えられる。
【０３００】
そこで、第３の実施形態は、起動の高速化を目的として、カラーリングテーブル１４に先読みヒント情報を付加し、この先読みヒント情報を用いて情報処理装置１００を起動させる。この先読みヒント情報は、シャットダウン時にカラーリングテーブルに設定される。すなわち、オペレーティングシステムは、シャットダウンプロセスにおいてカラーリングテーブルに先読みヒント情報を格納することにより、起動時のメモリアクセスのオーバーヘッドを低減することができ、高速に起動することが可能である。
【０３０１】
図３２は、本実施形態に適用されるカラーリングテーブル１４の一例を示している。図８に示すカラーリングテーブル１４に対して、各エントリに先読みヒント情報のフィールドが付加されている。この先読みヒント情報は、静的カラー情報のフィールドに設けられる例えばフラグデータである。このフラグデータは、“０”である場合、そのエントリに対応するデータを起動時に先読みせず、“１”である場合、そのエントリに対応するデータを起動時に先読みすることを示している。このフラグデータは、２値データに限定されるものではなく、多値データとすることも可能である。
【０３０２】
この先読み情報としてのフラグデータは、情報処理装置１００がシャットダウンされるとき、例えばオペレーティングシステムのシャットダウンプロセスにおいて、カラーリングテーブル１４に設定される。
【０３０３】
図３３は、先読み情報の設定処理を示している。この処理は、例えば処理部１５において実行される。
【０３０４】
情報処理装置１００がシャットダウンされるとき、先ず、起動に必要なコードデータが格納されたアドレスに先読み情報が付加される（ステップＳ４１）。すなわち、カラーリングテーブル１４の対応するエントリに先読み情報として、フラグデータ“１”が設定される。
【０３０５】
この後、優先度が最も高いプロセスのコンテキストに先読み情報が付加される（ステップＳ４２）。すなわち、カラーリングテーブル１４の優先度が最も高いプロセスのコンテキストに対応するエントリに先読み情報として、フラグデータ“１”が設定される。優先度が高いデータとしては、例えばデバイスの初期化コードデータや、シャットダウンする時に優先度が高かいプロセスのコンテキストなどがある。
【０３０６】
尚、優先度が最も高いプロセスに関連していても、静的カラーとしての例えば静的読み出し頻度(SR_color)が低いデータである場合、先読み情報としてのフラグデータ“０”が設定される。例えばＭＰＥＧデータをマップしたアドレス空間がこれに相当し、このアドレス空間は先読みを行わないように設定される。
【０３０７】
次いで、設定されたサイズのデータに先読み情報を付加したかどうかが判別される（ステップＳ４３）。すなわち、先読みされたデータが格納される揮発性半導体メモリ８のサイズを越えたかどうかが判別される。揮発性半導体メモリ８の使用サイズは、例えばユーザにより設定可能されている。このため、設定されたサイズを越えたかどうかが判別される。この結果、設定されたサイズ以内の場合、ステップＳ４２に移行され、上記の動作が行われる。また、判別の結果、設定されたサイズを超えたものと判別された場合、処理が終了される。このようにして、シャットダウンの際に、カラーリングテーブル１４に先読み情報が設定される。
【０３０８】
情報処理装置１００が起動された場合、情報処理装置１００の起動プロセスには、必ず実行される実行コードや読み込むデータが存在する。オペレーティングシステムは起動の早期で実行される実行コードやデータ領域を知ることができる。
【０３０９】
情報処理装置１００の起動時、カラーリングテーブル１４に設定された先読み情報を用いて、起動プロセスと並行に、不揮発性半導体メモリから揮発性半導体メモリへデータが転送される。
【０３１０】
図３４は、起動時のオペレーティングシステムの処理を示している。
【０３１１】
先ず、カラーリングテーブル１４がサーチされ（ステップＳ５１）、エントリの先読み情報としてのフラグデータが読み出される（ステップＳ５２）。次いで、このフラグデータが“１”であるかどうかが判別される（ステップＳ５３）。この結果、フラグデータが“１”である場合、そのエントリに対応するデータが不揮発性半導体メモリ９、１０から読み出される（ステップＳ５４）。すなわち、他のデータに優先して先読み情報が付されたデータが不揮発性半導体メモリ９、１０から揮発性半導体メモリ８に転送される。
【０３１２】
また、ステップＳ５３の判別において、フラグデータが“０”である場合、そのエントリに対応するデータは読み出されない。
【０３１３】
この後、カラーリングテーブル１４に次のエントリがあるかどうかが判別される（ステップＳ５５）。この結果、次のエントリがある場合、制御がステップＳ５１に移行され、上記動作が繰り返される。また、次のエントリがない場合、処理が終了される。
【０３１４】
尚、処理の終了条件は、次のエントリがない場合に限定されるものではなく、揮発性半導体メモリ８の起動時の書き込みサイズを予め設定し、この書き込みサイズに達した場合、処理を終了するように設定することも可能である。このようにすることにより、揮発性半導体メモリ８に空き容量を確保することができる。
【０３１５】
上記第３の実施形態によれば、情報処理装置１００のシャットダウン時に、起動後、即実行される可能性の高いデータに対応するカラーリングテーブルのエントリに先読み情報を付加し、起動時、この先読み情報を検索して優先的に不揮発性半導体メモリ９、１０から揮発性半導体メモリ８にデータを転送している。このため、読み出しが多発する起動時にオーバーヘッドを低減し、高速に情報処理装置１００を起動することが可能である。
【０３１６】
また、優先度の高いデータのみを揮発性半導体メモリ８に転送しているため、シャットダウン時に揮発性半導体メモリ８に存在していたデータを全てセイブし、起動時にリカバーする場合に比べて、揮発性半導体メモリ８の内容を整理でき、起動後の実行処理を高速化することが可能である。
【０３１７】
尚、本発明は、上記実施形態に限定されるものではなく、発明の要旨を変えない範囲において種々変形可能なことは勿論である。
【符号の説明】
【０３１８】
１…メモリ管理装置、２…混成メインメモリ、３ａ〜３ｂ…プロセッサ、４ａ〜４ｃ…１次キャッシュメモリ、５ａ〜５ｃ…２次キャッシュメモリ、６ａ〜６ｃ…プロセス、７…バス、８…揮発性半導体メモリ、９，１０，２９…不揮発性半導体メモリ、１１…メモリ使用情報、１２…メモリ固有情報、１３…アドレス変換情報、１４…カラーリングテーブル、１５…処理部、１６…作業メモリ、１７…情報記憶部、１８…アドレス管理部、１９…読み出し管理部、２０…書き込み管理部、２１…カラーリング情報管理部、２２…メモリ使用情報管理部、２３…再配置部、２４…アクセス頻度算出部、２５…動的カラー情報管理部、２７…オペレーティングシステム、２８…キャッシュメモリ、３ｍａ〜３ｍｃ…メモリ管理ユニット、ｃｔａ〜ｃｔｃ…カウンタ、ｃｉａ〜ｃｉｃ…カウント情報、３０…メモリモジュール、３１…ボタン、ＤＢＦ…ダーティビットフィールド、ＰＲＨ…先読みヒント情報。
【図１】
2011186558.tif 000003
【図２】
2011186558.tif 000004
【図３】
2011186558.tif 000005
【図４】
2011186558.tif 000006
【図５】
2011186558.tif 000007
【図６】
2011186558.tif 000008
【図７】
2011186558.tif 000009
【図８】
2011186558.tif 000010
【図９】
2011186558.tif 000011
【図１０】
2011186558.tif 000012
【図１１】
2011186558.tif 000013
【図１２】
2011186558.tif 000014
【図１３】
2011186558.tif 000015
【図１４】
2011186558.tif 000016
【図１５】
2011186558.tif 000017
【図１６】
2011186558.tif 000018
【図１７】
2011186558.tif 000019
【図１８】
2011186558.tif 000020
【図１９】
2011186558.tif 000021
【図２０】
2011186558.tif 000022
【図２１】
2011186558.tif 000023
【図２２】
2011186558.tif 000024
【図２３】
2011186558.tif 000025
【図２４】
2011186558.tif 000026
【図２５】
2011186558.tif 000027
【図２６】
2011186558.tif 000028
【図２７】
2011186558.tif 000029
【図２８】
2011186558.tif 000030
【図２９】
2011186558.tif 000031
【図３０】
2011186558.tif 000032
【図３１】
2011186558.tif 000033
【図３２】
2011186558.tif 000034
【図３３】
2011186558.tif 000035
【図３４】
2011186558.tif 000036