(57)【要約】【課題】不揮発性メモリの寿命の延長を実現する。【解決手段】本発明の一例のメモリ管理装置は、アクセス回数に上限のある不揮発性メモリに対する書き込みデータと論理アドレスとをプロセッサから受ける手段２１と、書き込みデータに対する種別、アクセス回数、アクセス頻度、重要度のうちの少なくとも一つが管理されている固有情報に基づいて、書き込みデータを圧縮するか否か判断する手段２２と、書き込みデータを圧縮すると判断された場合に、書き込みデータを圧縮する手段２３と、不揮発性メモリに対する書き込みデータの書き込み領域を選択する手段２４と、書き込み領域を示す物理アドレスと論理アドレスとを関連付けたアドレス変換情報を更新する手段２５ａと、固有情報を更新する手段２５ｂと、不揮発性メモリの書き込み領域に、書き込みデータを圧縮すると判断された場合に、圧縮された書き込みデータを書き込み、書き込みデータを圧縮すると判断されなかった場合に、非圧縮の書き込みデータを書き込む手段２６とを具備する。【選択図】      図３
2011128792.tif 000002
【特許請求の範囲】
【請求項１】
アクセス回数に上限のある不揮発性メモリに対する書き込みデータ又は書き込みプログラムと、書き込み論理アドレスとを、プロセッサから受け付ける受付手段と、
前記書き込みデータ又は前記書き込みプログラムに対する種別、アクセス回数、アクセス頻度、重要度のうちの少なくとも一つが管理されている固有情報に基づいて、前記書き込みデータ又は前記書き込みプログラムを圧縮するか否か判断する圧縮判断手段と、
前記圧縮判断手段によって前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断された場合に、前記書き込みデータ又は前記書き込みプログラムを圧縮する圧縮手段と、
前記固有情報に基づいて、前記不揮発性メモリに対する前記書き込みデータ又は前記書き込みプログラムの書き込み領域を選択する領域選択手段と、
前記領域選択手段によって選択された前記書き込み領域を示す書き込み物理アドレスと前記書き込み論理アドレスとを関連付けた情報に基づいてアドレス変換情報を更新するアドレス情報更新手段と、
書き込みに対して前記固有情報を更新する書き込み更新手段と、
前記圧縮判断手段によって前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断された場合に、圧縮された前記書き込みデータ又は前記書き込みプログラムを前記不揮発性メモリの前記書き込み領域に書き込み、前記圧縮判断手段によって前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断されなかった場合に、非圧縮の前記書き込みデータ又は前記書き込みプログラムを前記不揮発性メモリの前記書き込み領域に書き込む書き込み手段と
を具備するメモリ管理装置。
【請求項２】
請求項１記載のメモリ管理装置において、
前記受付手段は、前記プロセッサから読み出し論理アドレスを受け付け、
前記アドレス変換情報に基づいて、前記読み出し論理アドレスを読み出し物理アドレスに変換するアドレス変換手段と、
前記読み出し物理アドレスの示す読み出し領域に記憶されている読み出しデータ又は読み出しプログラムを読み出す読み出し手段と、
前記固有情報に基づいて、前記読み出しデータ又は前記読み出しプログラムを伸張するか否か判断する伸張判断手段と、
前記伸張判断手段によって前記読み出しデータ又は前記読み出しプログラムを伸張すると判断された場合に、前記読み出しデータ又は前記読み出しプログラムを伸張する伸張手段と、
読み出しに対して前記固有情報を更新する読み出し更新手段と、
前記伸張判断手段によって前記読み出しデータ又は前記読み出しプログラムを伸張すると判断された場合に、伸張された前記読み出しデータ又は前記読み出しプログラムを前記プロセッサに転送し、前記伸張判断手段によって前記読み出しデータ又は前記読み出しプログラムを伸張すると判断されなかった場合に、前記不揮発性メモリから読み出された前記読み出しデータ又は前記読み出しプログラムを前記プロセッサに転送する転送手段と、
をさらに具備するメモリ管理装置。
【請求項３】
請求項１又は請求項２記載のメモリ管理装置において、
前記不揮発性メモリと、前記不揮発性メモリと種別の異なる他の半導体メモリとを含む混成メモリをさらに具備し、
前記領域選択手段は、前記固有情報に基づいて、前記不揮発性メモリの領域と前記他の半導体メモリの領域とのうち、前記書き込みデータ又は前記書き込みプログラムを書き込むメモリ領域を選択し、選択された前記メモリ領域の中から、前記書き込みデータ又は前記書き込みプログラムの書き込み領域を選択する
ことを特徴とするメモリ管理装置。
【請求項４】
請求項１乃至請求項３のいずれか１項に記載のメモリ管理装置において、
前記不揮発性メモリは、前記プロセッサによって主記憶装置として用いられ、
前記書き込みデータ又は前記書き込みプログラムは、ファイルより小さい単位のデータ、又は、ファイルに対応するデータではなくプログラムによって確保されるメモリ領域に格納されるデータ又はプログラムである
ことを特徴とするメモリ管理装置。
【請求項５】
請求項１乃至請求項４のいずれか１項に記載のメモリ管理装置において、
前記固有情報は、前記書き込みデータ又は前記書き込みプログラムに対応するファイルの名称が圧縮ファイルを示す拡張子を持つか否かを示す圧縮判断情報を含み、
前記圧縮判断手段は、前記圧縮判断情報が圧縮済みであることを示す場合に、前記書き込みデータ又は前記書き込みプログラムを圧縮しないと判断し、前記圧縮判断情報が圧縮されていないことを示す場合に、前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断する
ことを特徴とするメモリ管理装置。
【請求項６】
請求項１乃至請求項５のいずれか１項に記載のメモリ管理装置において、
前記固有情報は、前記書き込みデータム又は前記書き込みプログラムの過去の圧縮率を含み、
前記圧縮判断手段は、
前記固有情報に含まれている過去の圧縮率が、当該圧縮率に対して設定されているしきい値以下の場合に、前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断し、
前記固有情報に含まれている過去の圧縮率が、前記圧縮率に対して設定されているしきい値を超える場合に、前記書き込みデータ又は前記書き込みプログラムを圧縮しないと判断する
ことを特徴とするメモリ管理装置。
【請求項７】
請求項１乃至請求項６のいずれか１項に記載のメモリ管理装置において、
前記書き込み更新手段は、オペレーティングシステムによって実現されることを特徴とするメモリ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに対するデータ又はプログラムの書き込み又は読み出しを管理するメモリ管理装置に関する。
【背景技術】
【０００２】
特表２００９−５２７８４７（特許文献１）には、ＦＡＴボリューム内の個々のファイルを圧縮するとともに、圧縮するファイル以外のファイルを非圧縮状態に保つためのコンピュータ実装方法が開示されている。
【０００３】
このコンピュータ実装方法において、ＦＡＴ圧縮フィルタ（ＦＣＦ）プログラムは、ファイルシステムに対する呼び出しをインタセプトし、ＦＡＴボリュームにおけるファイルに関する圧縮タスクおよび解凍タスクを実行する。このコンピュータ実装方法では、ＦＡＴファイルシステムと共に個々のファイルの圧縮が使用される。これにより、個々のファイルの圧縮の利点を提供しながら、確実にフラッシュメモリに寿命を長くし、すぐに機能しなくなることがないようにすることができる。ＦＡＴ圧縮フィルタ（ＦＣＦ）によって、ボリューム内の個々のファイルを圧縮から除外することができる。
【０００４】
特開２００８−２４２９４４号公報（特許文献２）には、統合メモリ管理装置が提案されている。この統合メモリ管理装置では、ＭＰＵに対するメインメモリとしてＮＡＮＤ型フラッシュメモリが用いられている。さらに、特許文献２では、ＭＰＵの１次キャッシュメモリと、２次キャッシュメモリと、メインメモリであるＮＡＮＤ型フラッシュメモリとが同一のメモリ階層で扱われる。統合メモリ管理装置のキャッシュコントローラは、１次キャッシュメモリ及び２次キャッシュメモリに対するメモリ管理に加えて、メインメモリに対するメモリ管理を実行する。
【０００５】
特開平７−１４６８２０号公報（特許文献３）には、情報処理装置の主記憶装置としてフラッシュメモリを採用する技術が開示されている。特許文献３において、システムのメモリバスには、揮発性メモリであるキャッシュメモリを介して、フラッシュメモリが接続される。キャッシュメモリには、このキャッシュメモリに格納されているデータのアドレス又はアクセス履歴などの情報を記録するアドレスアレイが設けられる。コントローラは、アクセス先のアドレスを参照し、キャッシュメモリ又はフラッシュメモリのデータをメモリバスに供給し、あるいは、メモリバスのデータを格納する。
【０００６】
特開２００１−２６６５８０号公報（特許文献４）においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。
【０００７】
この特許文献４の半導体メモリ装置は、ランダムアクセスメモリチップと、前記ランダムアクセスメモリチップを備えたパッケージを含む。前記パッケージは、前記ランダムアクセスメモリチップを外部装置に電気的に連結する複数のピンを有する。複数のピンは、前記ランダムアクセスメモリと、電気的に消去及びプログラム可能な不揮発性半導体メモリとに、共通にメモリ機能を提供する。前記複数のピンの各々は、不揮発性半導体メモリの対応するピンの位置に配列されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００９−５２７８４７号公報
【特許文献２】特開２００８−２４２９４４号公報
【特許文献３】特開平７−１４６８２０号公報
【特許文献４】特開２００１−２６６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、アクセス回数に上限のあるメモリの寿命を延ばすメモリ管理装置を提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明の第１の態様によるメモリ管理装置は、アクセス回数に上限のある不揮発性メモリに対する書き込みデータ又は書き込みプログラムと、書き込み論理アドレスとを、プロセッサから受け付ける受付手段と、前記書き込みデータ又は前記書き込みプログラムに対する種別、アクセス回数、アクセス頻度、重要度のうちの少なくとも一つが管理されている固有情報に基づいて、前記書き込みデータ又は前記書き込みプログラムを圧縮するか否か判断する圧縮判断手段と、前記圧縮判断手段によって前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断された場合に、前記書き込みデータ又は前記書き込みプログラムを圧縮する圧縮手段と、前記固有情報に基づいて、前記不揮発性メモリに対する前記書き込みデータ又は前記書き込みプログラムの書き込み領域を選択する領域選択手段と、前記領域選択手段によって選択された前記書き込み領域を示す書き込み物理アドレスと前記書き込み論理アドレスとを関連付けた情報に基づいてアドレス変換情報を更新するアドレス情報更新手段と、書き込みに対して前記固有情報を更新する書き込み更新手段と、前記圧縮判断手段によって前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断された場合に、圧縮された前記書き込みデータ又は前記書き込みプログラムを前記不揮発性メモリの前記書き込み領域に書き込み、前記圧縮判断手段によって前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断されなかった場合に、非圧縮の前記書き込みデータ又は前記書き込みプログラムを前記不揮発性メモリの前記書き込み領域に書き込む書き込み手段とを具備する。
【００１１】
なお、上記の態様はメモリ管理装置として表現されている。しかしながら、これに限らず、上記の態様は、メモリ管理方法、情報処理装置、プログラム、プログラムを記録した記録媒体などで表現されるとしてもよい。
【発明の効果】
【００１２】
本発明によれば、アクセス回数に上限のあるメモリの寿命を延ばすことができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施の形態に係るメモリ管理装置を備えた情報処理装置の構成の一例を示すブロック図。
【図２】第１の実施の形態に係る情報処理装置で扱われるプログラム及びデータの一例を示すブロック図。
【図３】第１の実施の形態に係る処理部の構成の一例を示すブロック図。
【図４】第１の実施の形態に係るカラーリングテーブルのフォーマットの一例を示すブロック図。
【図５】第１の実施の形態に係る圧縮判断情報の一例を示すブロック図。
【図６】第１の実施の形態に係る混成メモリのメモリ空間の一例を示すブロック図。
【図７】第１の実施の形態に係るオペレーティングシステムによって実行される圧縮判断情報の設定処理を示すフローチャート。
【図８】第１の実施の形態に係る領域選択部による書き込み領域の選択処理の一例を示すフローチャート。
【図９】第１の実施の形態に係る圧縮判断部による圧縮判断の概要の一例を示す図。
【図１０】第１の実施の形態に係る圧縮判断部による圧縮判断処理及び圧縮部による圧縮処理の一例を示すフローチャート。
【図１１】第１の実施の形態に係る領域選択部によるメモリ領域の選択結果と、圧縮判断情報の設定と、書き込みデータに対する圧縮判断部の判断結果との関係の一例を示す図。
【図１２】データ圧縮を行った場合とデータ圧縮を行わなかった場合の記憶装置の記録容量の比較結果を示すグラフ。
【図１３】本発明の第２の実施の形態に係るカラーリングテーブルのフォーマットの一例を示すブロック図。
【図１４】第２の実施の形態に係る圧縮判断処理及び圧縮処理の一例を示すフローチャート。
【図１５】動的重要度の算出例を示す図。
【図１６】カラーリングレベルと、メモリの使用率と、しきい値との関係の一例を示す図。
【図１７】プロセスとオペレーティングシステムとの関係の一例を示すブロック図。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら本発明の実施の形態について説明する。なお、以下の各図において同一又はほぼ同一の要素には同一の符号を付して説明を省略するか又は簡単に説明し、異なる部分についてのみ詳しく説明する。
【００１５】
（第１の実施の形態）
本実施の形態においては、アクセス回数に上限（制限）のある半導体メモリの寿命を延長するためのメモリ管理装置について説明する。
【００１６】
ここで、アクセスとは、読み出しと書き込みとのうちの少なくとも一方を含むとする。本実施の形態においては、主に書き込み回数に上限のある半導体メモリについて説明するが、読み出し回数、又は、読み出し回数と書き込み回数との双方に上限があるとしてもよい。
【００１７】
半導体メモリは、不揮発性半導体メモリでもよく、揮発性半導体メモリでもよい。不揮発性半導体メモリとしては、例えば、ＮＡＮＤ型フラッシュメモリ、ＮＯＲ型フラッシュメモリ、ＰＲＡＭ(Phase change memory)、ＲｅＲＡＭ(Resistive Random access memory)、ＭＲＡＭ（Magnetoresistive Random Access Memory）を用いることができる。揮発性半導体メモリとしては、ＤＲＡＭ（Dynamic Random Access Memory）、ＦＰＭ−ＤＲＡＭ（Fast Page Mode Dynamic Random Access Memory）、ＥＤＯ−ＤＲＡＭ（Extended Data Out Dynamic Random Access Memory）、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などを用いることができる。
【００１８】
半導体メモリへは、データ、プログラム、データとプログラムの組み合わせなどが書き込まれるが、本実施の形態においては、データが書き込まれる場合を例として説明する。
【００１９】
図１は、本実施の形態に係るメモリ管理装置を備えた情報処理装置の構成の一例を示すブロック図である。
【００２０】
図２は、本実施の形態に係る情報処理装置で扱われるプログラム及びデータの一例を示すブロック図である。
【００２１】
情報処理装置１は、少なくとも一つのプロセッサ（図１の例では３つ）２ａ〜２ｃ、バス３、メモリ管理装置４、混成メモリ５を具備する。
【００２２】
プロセッサ２ａ〜２ｃは、バス３及びメモリ管理装置４を経由して混成メモリ５にアクセスする。プロセッサ２ａ〜２ｃは、それぞれ１次キャッシュメモリ６ａ〜６ｃ、２次キャッシュメモリ７ａ〜７ｃを備えている。
【００２３】
本実施の形態において、例えば、混成メモリ５にＮＡＮＤ型フラッシュメモリが含まれている場合、１次キャッシュメモリ６ａ〜６ｃ及び２次キャッシュメモリ７ａ〜７ｃは、ページ単位、ページ単位の２以上の整数倍、ブロック単位、又は、ブロック単位の２以上の整数倍で、書き込み、読み出し、消去が行われる。
【００２４】
混成メモリ５に対しても、例えば、ページ単位、ページ単位の２以上の整数倍、ブロック単位、又は、ブロック単位の２以上の整数倍で、書き込み、読み出し、消去が行われる。
【００２５】
例えば、１次キャッシュメモリ６ａ〜６ｃ及び２次キャッシュメモリ７ａ〜７ｃと、混成メモリ５との間で、書き込みサイズ、読み出しサイズ、消去サイズは、整合させる。この場合、プロセッサ２ａ〜２ｃ、メモリ管理装置４、混成メモリ５の間で、データの送受信を効率的に行うことができる。
【００２６】
本実施の形態においては、書き込みデータが圧縮される場合がある。書き込みデータが圧縮された場合、書き込みデータは通常のデータサイズよりも小さくなる。この場合、例えば、メモリ管理装置４は、複数の書き込みデータをまとめて、ページサイズ、ページサイズの２以上の整数倍のサイズ、ブロックサイズ、又は、ブロックサイズの２以上の整数倍のサイズの複合データを生成し、この複合データを混成メモリ５のＮＡＮＤ型フラッシュメモリに書き込む。一般的に、ＮＡＮＤ型フラッシュメモリでは、読み出し及び書き込みの最小単位はページであり、消去の最小単位はブロックである。
【００２７】
例えば、混成メモリ５のＮＡＮＤ型フラッシュメモリのページサイズが４Kbyteとする。そして、このＮＡＮＤ型フラッシュメモリに対して３つの書き込みデータが発生し、圧縮された第１の書き込みデータのサイズは３Kbyteであり、圧縮された第２の書き込みデータのサイズは２Kbyteであり、第３の書き込みデータは圧縮の効果がなく又は圧縮がされず４Kbyteのサイズであるとする。
【００２８】
この例の場合、メモリ管理装置４は、圧縮された第１の書き込みデータと、圧縮された第２の書き込みデータのうちの１Kbyte分のデータをまとめた４Kbyte（３Kbyte＋１Kbyte）の第１の複合データを、ＮＡＮＤ型フラッシュメモリに対して書き込む。
【００２９】
次に、メモリ管理装置４は、圧縮された第２の書き込みデータの残りの１Kbyte分のデータと、第３の書き込みデータのうちの３Kbyte分のデータをまとめた４Kbyte（１Kbyte＋３Kbyte）の第２の複合データを、ＮＡＮＤ型フラッシュメモリに対して書き込む。
【００３０】
そして、メモリ管理装置４は、第３の書き込みデータの残りの１Kbyte分のデータを例えばバッファメモリなどの作業メモリ１０に一時保存し、次の書き込みデータの発生時に組み合わせの対象とする。なお、強制書き込み指定が発生した時点（例えば情報処理装置１のシャットダウン時など）、メモリ管理装置４は、この作業メモリ１０に保存されている第３の書き込みデータの残りの１Kbyte分のデータと、３Kbyteのダミーデータとをまとめた第３の複合データを、ＮＡＮＤ型フラッシュメモリに対して書き込む。
【００３１】
プロセッサ２ａ〜２ｃは、それぞれプロセス８ａ〜８ｃを実行している。このプロセス８ａ〜８ｃでは、仮想論理アドレスが用いられている。
【００３２】
本実施の形態においては、プロセッサ２ｂから混成メモリ５へのアクセスが実行される場合を例として説明するが、他のプロセッサ２ａ，２ｃから混成メモリ５へのアクセスが実行される場合についても同様である。
【００３３】
メモリ管理装置４は、例えばＭＰＵなどの処理部９、作業メモリ１０、第１のレジスタ１１、第２のレジスタ１２を具備する。
【００３４】
混成メモリ５は、アクセス回数の上限の異なる複数の種別の半導体メモリを具備する。本実施の形態において、混成メモリ５は、揮発性半導体メモリ５ａと不揮発性半導体メモリ５ｂ，５ｃを具備する。
【００３５】
本実施の形態において、混成メモリ５は、情報処理装置１の主記憶装置として用いられるとするが、他の用途で用いられるとしてもよい。
【００３６】
例えば、揮発性半導体メモリ５ａはＤＲＡＭであり、不揮発性半導体メモリ５ｂはＳＬＣ（Single Level Cell）のＮＡＮＤ型フラッシュメモリであり、不揮発性半導体メモリ５ｃはＭＬＣ（Multi Level Cell）のＮＡＮＤ型フラッシュメモリである。しかしながら、混成メモリ５は、他の種別の半導体メモリの組み合わせであってもよい。また、混成メモリ５に代えて、単一の不揮発性半導体メモリが用いられるとしてもよい。
【００３７】
ＳＬＣは、ＭＬＣと比較して、読み出し及び書き込みが高速であり、信頼性が高い。しかしながら、ＳＬＣは、ＭＬＣと比較して、素子の集積度が低く、大容量化には向いていない。
【００３８】
ＭＬＣは、ＳＬＣと比較して、読み出し及び書き込みが低速であり、信頼性が低い。しかしながら、ＭＬＣは、ＳＬＣと比較して、素子の集積度が高く、大容量化に向いている。
【００３９】
なお、信頼性とは、記憶装置からデータを読み出す場合におけるデータの欠損の起こりにくさの程度を意味する。
【００４０】
ＳＬＣの耐久性は、ＭＬＣの耐久性よりも高い。ここで、耐久性が高いとは、アクセス回数の上限が高く（アクセス可能回数が多く）、耐久性が低いとは、アクセス回数の上限が低い（アクセス可能回数が少ない）ことを意味する。
【００４１】
ＳＬＣは１つのメモリセルにＭ（１以上の整数）のビットの情報を記憶可能である。ＭＬＣは１つのメモリセルにＭ＋１ビット以上の情報を記憶可能である。
【００４２】
すなわち、本実施の形態に係る混成メモリ５は、第１に、揮発性半導体メモリ５ａ、第２に、不揮発性半導体メモリ５ｂ、第３に、不揮発性半導体メモリ５ｃ、の順で耐久性が高い。
【００４３】
ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリ５ｂ，５ｃは、揮発性半導体メモリ５ａと比較して、安価で大容量化が可能である。
【００４４】
混成メモリ５の不揮発性半導体メモリ５ｂ，５ｃのうちの少なくとも一方には、オペレーティングシステム１３が記憶されている。
【００４５】
このオペレーティングシステム１３は、プロセッサ８ａ〜８ｃのうちの少なくとも一つ及びメモリ管理装置４の処理部９によって実行される。
【００４６】
さらに、混成メモリの不揮発性半導体メモリ５ｂ，５ｃのうちの少なくとも一方には、メモリ使用情報１４、メモリ固有情報１５、アドレス変換テーブル１６、カラーリングテーブル１７が記憶されている。メモリ使用情報１４、メモリ固有情報１５、アドレス変換テーブル１６、カラーリングテーブル１７は、例えば、オペレーティングシステム１３によって管理され、更新される。
【００４７】
メモリ使用情報１４は、混成メモリ５の各領域（例えば、ページ単位又はブロック単位の領域）のアクセス回数、アクセス頻度など、各領域の使用状態を示す情報を含む。
【００４８】
メモリ固有情報１５は、混成メモリ５の各領域（例えば、ページ単位、ブロック単位、メモリの種別単位）のアクセス回数の上限など、混成メモリ５の各領域について設定される固有の情報を含む。
【００４９】
アドレス変換テーブル１６は、論理アドレスと物理アドレスとを関連付けた情報を含む。このアドレス変換テーブル１６を用いることにより、プロセッサ２ａ〜２ｃのいずれかから受けた論理アドレスを物理アドレスに変換することができる。
【００５０】
カラーリングテーブル１７は、各データのアクセス状態の特性を示す情報を含む。カラーリングテーブル１７の各エントリには、各データに対するアクセス固有情報が含まれている。
【００５１】
各データに対するアクセス固有情報は、静的書き込み頻度、静的読み出し頻度、圧縮判断情報（例えばデータに対するファイルの種別情報などのようなデータ圧縮ヒント情報）、静的重要度、データ寿命、データ生成時刻、書き込み回数、読み出し回数、動的書き込み頻度、動的読み出し頻度、前回のアクセス時刻、動的重要度、圧縮有無情報などを含む。
【００５２】
カラーリングテーブル１７は、混成メモリ５にデータを書き込む場合及び混成メモリ５からデータを読み出す場合に参照され、その内容に応じた書き込み位置の選択、書き込みの際に圧縮するか否かの判断、読み出しデータが圧縮されているか否かの判断などに用いられる。
【００５３】
本実施の形態において、書き込み又は読み出し対象となる各データ１８１〜１８ｎは、データ本体１９１〜１９ｎと、このデータ１８１〜１８ｎの書き込み回数、読み出し回数、書き込み頻度、読み出し頻度、書き込み時刻、読み出し時刻などを含むデータ固有情報２０１〜２０ｎとを組み合わせたデータ構造を持つ。
【００５４】
なお、データ固有情報２０１〜２０ｎは、各データ１８１〜１８ｎから削除又は分離されていてもよい。この場合、各データ１８１〜１８ｎから分離されたデータ固有情報２０１〜２０ｎは、カラーリングテーブル１７において管理されているとしてもよいし、まとめて別データで管理されてもよい。
【００５５】
カラーリングテーブル１７の各エントリは、各データ１８１〜１８ｎに対応するデータ固有情報２０１〜２０ｎに基づいて生成される。
【００５６】
メモリ管理装置１の作業メモリ１０は、例えばバッファ、キャッシュメモリなどとして利用され、各種のデータ変換、一時記憶などの作業領域として使用される。
【００５７】
メモリ管理装置１の処理部９は、第１のレジスタ１１、第２のレジスタ１２、混成メモリ５に記憶されている各種の情報に基づいて、作業メモリ１６をアクセスしながら各種処理を実行する。
【００５８】
処理部９は、混成メモリ５に記憶されているメモリ使用情報１４、メモリ固有情報１５、アドレス変換テーブル１６を、第１のレジスタ１１に記憶する。
【００５９】
また、処理部９は、混成メモリ５に記憶されているカラーリングテーブル１７をアクセスするために必要なアドレス（例えばベースアドレス）を、第２のレジスタ１２に記憶する。
【００６０】
そして、処理部９は、第１のレジスタ１１に記憶されたメモリ使用情報１４、メモリ固有情報１５、アドレス変換テーブル１６、及び第２のレジスタ１２に記憶されているアドレスを用いて参照されるカラーリングテーブル１７をアクセスし、混成メモリ５に対するデータのアクセス制御を行う。
【００６１】
処理部９は、情報処理装置１の動作停止前、設定されている更新期間の経過などのようなデータ更新イベントが発生した場合に、第１のレジスタ１１の記憶内容にそって、混成メモリ５に記憶されているメモリ使用情報１４、アドレス変換テーブル１６を更新し、必要であればメモリ固有情報１５を更新する。
【００６２】
なお、第１のレジスタ１１には、メモリ使用情報１４、メモリ固有情報１５、アドレス変換テーブル１６をアクセスするために必要とされるアドレス（ベースアドレスなど）が記憶されるとしてもよい。この場合、処理部９は、第１のレジスタ１１に記憶されているアドレスに基づいて、混成メモリ５に記憶されているメモリ使用情報１４、メモリ固有情報１５、アドレス変換テーブル１６を参照し、混成メモリ５に対するアクセス制御を行う。
【００６３】
第２のレジスタ１２には、混成メモリ５に記憶されているカラーリングテーブル１７が記憶されるとしてもよい。この場合、処理部９は、第２のレジスタ１２に記憶されたカラーリングテーブル１７をアクセスしつつ、混成メモリ５に対するアクセス制御を行う。処理部９は、データ更新イベントが発生した場合に、第２のレジスタ１２の記憶内容にそって、混成メモリ５に記憶されているカラーリングテーブル１７を更新する。
【００６４】
図３は、本実施の形態に係る処理部９の構成の一例を示すブロック図である。この図３では、処理部９の動作内容とその遷移が表現されている。
【００６５】
処理部９は、受付部２１、圧縮判断部２２、圧縮部２３、領域選択部２４、アドレス情報更新部２５ａ、書き込み更新部２５ｂ、書き込み部２６、アドレス変換部２７、読み出し部２８、伸張判断部２９、伸張部３０、転送部３１、読み出し更新部２５ｃを具備する。
【００６６】
まず、処理部９による書き込み動作について説明する。以下においては、データ１８１に対する書き込み動作が行われるとする。
【００６７】
処理部９の受付部２１は、プロセッサ２ｂから書き込みデータ１８１と、この書き込みデータ１８１に対する論理アドレスを受け、書き込みデータ１８１と論理アドレスとを作業メモリ１０に格納する。
【００６８】
領域選択部２４は、メモリ使用情報１４、メモリ固有情報１５、カラーリングテーブル１７における書き込みデータ１８１に対応するエントリの情報、書き込みデータ１８１のデータ固有情報２０１などに基づいて、混成メモリ５の中から、書き込みデータ１８１を書き込む書き込み領域を選択する。
【００６９】
例えば、本実施の形態において、領域選択部２４は、まず、書き込みデータ１８１のアクセス特性に基づいて、混成メモリ５のメモリ５ａ〜５ｃのうちのいずれかから、書き込みデータ１８１の書き込みを行うメモリを選択する。次に、領域選択部２４は、ウェアレベリングなどの結果に基づいて、選択されたメモリの領域の中から、書き込みデータ１８１の書き込み領域（書き込み位置）を選択する。
【００７０】
なお、領域選択部２４は、作業メモリ１０に記憶されている圧縮された書き込みデータ１８１又は非圧縮の書き込みデータ１８１と、他の圧縮された書き込みデータ又は非圧縮の書き込みデータとを組み合わせて、ページサイズ、ページサイズの２以上の倍数のサイズ、ブロックサイズ、又は、ブロックサイズの２以上の倍数のサイズとした複合データの書き込み領域を選択するとしてもよい。
【００７１】
圧縮判断部２２は、カラーリングテーブル１７で管理されている書き込みデータ１８１に対する圧縮判断情報、アクセス回数、アクセス頻度、前回のアクセス時刻、領域選択部２４による領域選択結果（選択されたメモリ領域、書き込み領域）などに基づいて、書き込みデータ１８１が圧縮を許可する条件を満たすか否か判断する。
【００７２】
例えば、圧縮判断部２２は、書き込みデータ１８１に対する圧縮判断情報が圧縮を許可する種別を示す場合には、書き込みデータ１８１を圧縮すると判断し、書き込みデータ１８１に対する圧縮判断情報が圧縮を許可しない種別を示す場合には、書き込みデータ１８１を圧縮しないと判断する。
【００７３】
例えば、圧縮判断部２２は、書き込みデータ１８１に対する圧縮判断情報が圧縮を許可する種別を示し、かつ、アクセス回数（アクセス頻度でもよい）が圧縮許可しきい値以下の場合には、書き込みデータ１８１を圧縮すると判断する。これに対して、圧縮判断部２２は、書き込みデータ１８１に対する圧縮判断情報が圧縮を許可しない種別を示す場合、又は、アクセス回数（アクセス頻度でもよい）が圧縮許可しきい値を超える場合には、書き込みデータ１８１を圧縮しないと判断する。この判断により、圧縮を許可する種別であり、アクセス回数又はアクセス頻度が小さいデータのみを圧縮して、混成メモリ５に記憶することができる。
【００７４】
例えば、圧縮判断部２２は、書き込みデータ１８１に対する圧縮判断情報が圧縮を許可する種別を示し、かつ、現在時刻と前回のアクセス時刻との間隔が圧縮許可間隔以上の場合には、書き込みデータ１８１を圧縮すると判断する。これに対して、圧縮判断部２２は、書き込みデータ１８１に対する圧縮判断情報が圧縮を許可しない種別を示す場合、又は、現在時刻と前回のアクセス時刻との間隔が圧縮許可間隔未満の場合には、書き込みデータを圧縮しないと判断する。この判断により、圧縮を許可する種別であり、先にアクセスされてから次にアクセスされるまでの間隔が長いと推測されるデータのみを、圧縮して混成メモリ５に記憶することができる。
【００７５】
例えば、圧縮判断部２２は、領域選択部２４によって選択された書き込みデータ１８１のメモリ領域の種別に応じて、書き込みデータ１８１の圧縮又は非圧縮を判断するとしてもよい。
【００７６】
例えば、圧縮判断部２２は、ＳＬＣの不揮発性半導体メモリ５ｂが書き込み領域として選択された場合には圧縮せず、ＭＬＣの不揮発性半導体メモリ５ｃが書き込み領域として選択された場合には圧縮するとしてもよい。これにより、ＳＬＣの不揮発性半導体メモリ５ｂに対するアクセス速度の高速化を図ることができる。
【００７７】
これとは逆に、圧縮判断部２２は、ＳＬＣの不揮発性半導体メモリ５ｂが書き込み領域として選択された場合には圧縮し、ＭＬＣの不揮発性半導体メモリ５ｃが書き込み領域として選択された場合には圧縮しないとしてもよい。これにより、ＳＬＣの不揮発性半導体メモリ５ｂに書き込むことが可能な記憶容量を増加させることができる。
【００７８】
データ固有情報更新部２５ｄは、書き込みの発生に応じて、書き込みデータ１８１のデータ固有情報２０１における書き込み回数、書き込み頻度、前回の書き込み時刻などを更新する。
【００７９】
圧縮部２３は、圧縮判断部２２の判断結果に応じて、書き込みデータ１８１を圧縮すると判断された場合に、作業メモリ１０における書き込みデータ１８１を圧縮し、圧縮された書き込みデータ１８１を作業メモリ１０に格納する。
【００８０】
アドレス情報更新部２５ａは、作業メモリ１０に格納されている書き込みデータ１８１に対する論理アドレスと、書き込みデータ１８１の書き込み領域を示す物理アドレスとを関連付けた情報を用いてアドレス変換テーブル１６を更新する。
【００８１】
書き込み更新部２５ｂは、書き込みの発生に応じて、メモリ使用情報１４のうち書き込みデータ１８１の書き込み領域の情報、カラーリングテーブル１７における書き込みデータ１８１に対応するエントリの情報などにおける書き込み回数、書き込み頻度、前回の書き込み時刻などを更新する。
【００８２】
例えば、書き込み更新部２５ｂは、カラーリングテーブル１７における書き込みデータ１８１に対応するエントリに、書き込みデータ１８１に対して圧縮が行われたか否かを判断するための圧縮有無情報（フラグ）を登録するとしてもよい。
【００８３】
書き込み部２６は、作業メモリ１０に記憶されている圧縮された書き込みデータ１８１又は非圧縮の書き込みデータ１８１を、混成メモリ５における選択された書き込み領域に記憶する。なお、書き込み部２６は、作業メモリ１０に記憶されている圧縮された書き込みデータ１８１又は非圧縮の書き込みデータ１８１と、他の圧縮された書き込みデータ又は非圧縮の書き込みデータとの組み合わせを行い、ページサイズ、ページサイズの２以上の倍数のサイズ、ブロックサイズ、又は、ブロックサイズの２以上の倍数のサイズの組み合わせ後の複合データを、混成メモリ５に書き込むとしてもよい。
【００８４】
次に、処理部９による読み出し動作について説明する。以下においては、データ１８１に対する読み出し動作が行われるとする。
【００８５】
受付部２１は、プロセッサ２ｂから読み出しデータ１８１に対する論理アドレスを受け、論理アドレスを作業メモリ１０に格納する。
【００８６】
アドレス変換部２７は、アドレス変換テーブル１６を用いて、作業メモリ１０に格納された論理アドレスを物理アドレスに変換し、物理アドレスを作業メモリ１０に記憶する。
【００８７】
読み出し部２８は、作業メモリ１０に記憶されている物理アドレスの示す領域に記憶されている圧縮された読み出しデータ１８１又は非圧縮の読み出しデータ１８１を読み出し、作業メモリ１０に記憶する。
【００８８】
伸張判断部２９は、カラーリングテーブル１７における読み出しデータ１８１に対応するエントリの情報（例えば圧縮有無情報）に基づいて、混成メモリ５から読み出され作業メモリ１０９に記憶された読み出しデータ１８１が圧縮されているか否か判断する。
【００８９】
伸張部３０は、作業メモリ１０９に記憶された読み出しデータ１８１が圧縮されていると判断された場合に、圧縮されている読み出しデータ１８１に対して伸張処理（解凍処理／展開処理）を実行し、伸張された読み出しデータ１８１を作業メモリ１０に記憶する。
【００９０】
読み出し更新部２５ｃは、読み出しの発生に応じて、メモリ使用情報１４のうち読み出しデータ１８１の記憶領域の情報、カラーリングテーブル１７における読み出しデータ１８１に対応するエントリの情報の読み出し回数、読み出し頻度、前回の読み出し時刻、データ固有情報２０１の読み出し回数、読み出し頻度、前回の読み出し時刻などを更新する。
【００９１】
転送部３１は、作業メモリ１０に記憶された非圧縮の読み出しデータ１８１をプロセッサ２ｂに送る。
【００９２】
図４は、本実施の形態に係るカラーリングテーブル１７のフォーマットの一例を示すブロック図である。
【００９３】
カラーリングテーブル１７の各エントリは、データの最小ＩＯ単位（読み出し及び書き込みのデータサイズ）に割り当てられる。例えば、読み出し及び書き込みのデータサイズは、ＮＡＮＤ型フラッシュメモリのページサイズとする。
【００９４】
カラーリングテーブル１７の各エントリには、各データのアクセス固有情報が格納される。
【００９５】
アクセス固有情報は、静的情報と動的情報とを含む。静的情報は、対応するデータについて固定的に設定されるアクセス情報である。動的情報は、対応するデータに対するアクセスの状況に応じて変化するアクセス情報である。
【００９６】
本実施の形態において、書き込み頻度は、書き込みの多さを表す値であり、データの種別などから静的に設定されてもよく、書き込み回数と時間情報とから求められる動的な情報でもよい。例えば、書き込み頻度は、単位時間あたりの書き込み回数、又は、時間の経過に伴う書き込み回数の変化状態などであるとする。
【００９７】
本実施の形態において、読み出し頻度は、読み出しの多さを表す値であり、データの種別などから静的に設定されてもよく、読み出し回数と時間情報とから求められる動的な情報でもよい。例えば、読み出し頻度は、単位時間あたりの読み出し回数、又は、時間の経過に伴う読み出し回数の変化状態などであるとする。
【００９８】
すなわち、静的書き込み頻度、静的読み出し頻度、静的重要度は、それぞれ、対応するデータから推測される書き込み頻度、読み出し頻度、重要度である。例えば、静的書き込み頻度、静的読み出し頻度、静的重要度は、対応するデータの種別などから、ユーザによる設定又は予め設定されている規則に応じて生成される。
【００９９】
データ寿命は対応するデータの有効期間であり、データ生成時刻は対応するデータの生成時間である。
【０１００】
圧縮判断情報は、対応するデータを混成メモリ５に記憶する場合にこの対応するデータに対して圧縮が必要か否かを判断するための情報である。
【０１０１】
書き込み回数は、対応するデータに対して実行された書き込みの回数を意味する。
【０１０２】
読み出し回数は、対応するデータに対して実行された読み出しの回数を意味する。
【０１０３】
動的書き込み頻度は、対応するデータの書き込み回数、データ生成時刻、現在時刻などに基づいて生成された例えば単位時間あたりの書き込み回数、書き込み回数の変化率などの値である。
【０１０４】
動的読み出し頻度は、対応するデータの読み出し回数、データ生成時刻、現在時刻などに基づいて生成された例えば単位時間あたりの読み出し回数、読み出し回数の変化率などの値である。
【０１０５】
動的重要度は、時間に応じて変化する対応データの重要度を表す値である。例えばアクセス間隔が長いほど、重要度は低いとする。
【０１０６】
動的情報には、書き込みデータ１８１に対して圧縮が行われたか否かを表す圧縮有無情報（フラグ）が設定されるとしてもよい。例えば、この圧縮有無情報は、書き込まれたデータが読み出される際に、伸張判断部２９による伸張判断処理に用いられる。
【０１０７】
図５は、本実施の形態に係る圧縮判断情報の一例を示すブロック図である。
【０１０８】
圧縮判断情報「０」は、対応するデータについて圧縮が不要であることを意味する。例えば、対応するデータを含むファイルの拡張子が圧縮データであることを示す「mpeg」「mpeg2」「mp3」「mp4」「jpeg」「png」などの場合には、対応するデータは圧縮済みであり、再度の圧縮は必要ないため、圧縮判断情報「０」が設定される。
【０１０９】
圧縮判断情報「１」は、対応するデータについて圧縮が必要であることを意味する。例えば、対応するデータを含むファイルが圧縮ファイルではない場合、又は、対応するデータを含むファイルの拡張子が圧縮することが有効なデータであることを示す「c」「txt」「html」「log」などの場合には、圧縮判断情報「１」が設定される。
【０１１０】
圧縮判断情報「２」は、対応するデータについて圧縮が必要か否か不明であることを意味する。例えば、対応するデータが、オペレーティングシステム１３のカーネル内使用領域、プロセス生成時要求領域、プロセスが動的に要求する領域に格納される場合には、圧縮判断情報「２」が設定される。
【０１１１】
データとファイルとの関係は、オペレーティングシステム１３によって管理される。
【０１１２】
図６は、本実施の形態に係る混成メモリ５のメモリ空間の一例を示すブロック図である。
【０１１３】
混成メモリ５の各領域には、物理アドレスが割り当てられている。
【０１１４】
混成メモリ５は、ＤＲＡＭであるチップ５Ａと、ＮＡＮＤ型フラッシュメモリであるチップ５Ｂ〜５Ｆを具備する。
【０１１５】
混成メモリ５のメモリ空間は、チップ５ＡのＤＲＡＭ領域、チップ５ＢのＡ領域及びＡ冗長ブロック領域、チップ５ＣのＢ領域及びＢ冗長ブロック領域、チップ５ＤのＣ領域及びＣ冗長ブロック領域、チップ５ＥのＤ領域及びＤ冗長ブロック領域、チップ５ＦのＥ領域及びＥ冗長ブロック領域を含む。
【０１１６】
Ａ領域及びＡ冗長ブロック領域は、２bit/CellのＭＬＣ領域である。Ｂ領域、Ｂ冗長ブロック領域、Ｃ領域、Ｃ冗長ブロック領域は、ＳＬＣ領域である。Ｄ領域及びＤ冗長ブロック領域は、３bit/CellのＭＬＣ領域である。Ｅ領域及びＥ冗長ブロック領域は、４bit/CellのＭＬＣ領域である。
【０１１７】
本実施の形態において、Ａ冗長ブロック領域、Ｂ冗長ブロック領域、Ｃ冗長ブロック領域、Ｄ冗長ブロック領域、Ｅ冗長ブロック領域は、それぞれ、Ａ領域、Ｂ領域、Ｃ領域、Ｄ領域、Ｅ領域に対してガーベージコレクションを行う場合、使用されているデータをまとめて再配置する場合などに利用される。
【０１１８】
図７は、本実施の形態に係るオペレーティングシステム１３によって実行される圧縮判断情報の設定処理を示すフローチャートである。
【０１１９】
この図７では、論理アドレスがファイルに関連するか、及び、論理アドレスに対応するファイルが圧縮済みか、に基づいて、圧縮判断情報を設定する場合を例として表している。
【０１２０】
ステップＳ１において、オペレーティングシステム１３は、圧縮判断情報を設定する対象の論理アドレスを取得する。
【０１２１】
ステップＳ２において、オペレーティングシステム１３は、取得された論理アドレスがファイルにマップされているか否か（ファイルに対応するか否か）判断する。
【０１２２】
論理アドレスがファイルにマップされてない場合、ステップＳ３において、オペレーティングシステム１３は、論理アドレスがカーネルアドレスか否か判断する。
【０１２３】
論理アドレスがカーネルアドレスではない場合、ステップＳ４において、オペレーティングシステム１３は、論理アドレスはアプリケーションメモリを指すアプリケーションアドレスであり、ファイルに対応しないアドレスであり、カラーリングテーブル１７の圧縮判断情報に「２」を設定する。
【０１２４】
論理アドレスがカーネルアドレスの場合、ステップＳ５において、オペレーティングシステム１３は、論理アドレスはカーネルメモリを指すカーネルアドレスであり、ファイルに対応しないアドレスであり、カラーリングテーブル１７の圧縮判断情報に「２」を設定する。
【０１２５】
論理アドレスがファイルにマップされている場合、ステップＳ６において、オペレーティングシステム１３は、論理アドレスに対応するファイルの識別情報（名称又は拡張子）を取得する。
【０１２６】
ステップＳ７において、オペレーティングシステム１３は、論理アドレスに対応するファイルの識別情報が圧縮ファイルの拡張子を含むか否か判断する。
【０１２７】
論理アドレスに対応するファイルの識別情報が圧縮ファイルの拡張子を含む場合、ステップＳ８において、オペレーティングシステム１３は、論理アドレスに対応するファイルが既に圧縮済みであり、さらなる圧縮を必要としないため、圧縮判断情報に「０」を設定する。
【０１２８】
論理アドレスに対応するファイルの識別情報が圧縮ファイルの拡張子を含まない場合、ステップＳ９において、オペレーティングシステム１３は、論理アドレスに対応するファイルは圧縮されておらず、圧縮を必要とするため、圧縮判断情報に「１」を設定する。
【０１２９】
図８は、本実施の形態に係る領域選択部２４によるメモリ領域の選択処理の一例を示すフローチャートである。
【０１３０】
この図８において、SW_Colorは、書き込みデータ１８１の書き込み頻度を表す。SW_Colorは、数値が大きいほど、書き込みデータ１８１の書き込み頻度が高く、例えば１〜５の値で表される。
【０１３１】
SR_Colorは、書き込みデータ１８１の読み出し頻度を表す。SR_Colorは、数値が大きいほど、書き込みデータ１８１の読み出し頻度が高く、例えば１〜５の値で表される。
【０１３２】
また、この図８は、上記図６のような構成の混成メモリ５のＤＲＡＭ領域及びＡ領域〜Ｅ領域の中から、書き込みデータ１８１を書き込むメモリ領域を選択する場合を例として表している。
【０１３３】
ステップＴ１において、領域選択部２４は、カラーリングテーブル１７で管理されている書き込みデータ１８１の寿命を参照する。
【０１３４】
ステップＴ２において、領域選択部２４は、寿命が所定の値より長いか、短いか判断する。
【０１３５】
寿命が所定の値より短い場合、ステップＴ３において、領域選択部２４は、書き込みデータ１８１の書き込み先として、ＤＲＡＭ領域を選択する。
【０１３６】
寿命が所定の値以上の場合、ステップＴ４において、領域選択部２４は、カラーリングテーブル１７で管理されている書き込みデータ１８１のSW_Colorを参照する。
【０１３７】
ステップＴ５において、領域選択部２４は、SW_Colorに５が設定されているか否か（書き込みデータ１８１の書き込み頻度が高いか否か）、判断する。
【０１３８】
SW_Colorに５が設定されている場合、処理はＴ８に移り、書き込みデータ１８１の書き込み先としてＢ領域が選択される。
【０１３９】
SW_Colorに５ではない値が設定されている場合、ステップＴ６において、領域選択部２４は、カラーリングテーブル１７で管理されている書き込みデータ１８１のSR_Colorを参照する。
【０１４０】
ステップＴ７において、領域選択部２４は、SR_Colorに１〜５のどの値が設定されているかチェックする。
【０１４１】
このステップＴ７においてSR_Colorに５が設定されている場合、ステップＴ８において、領域選択部２４は、書き込みデータ１８１の書き込み先として、Ｂ領域を選択する。
【０１４２】
ステップＴ７においてSR_Colorに４が設定されている場合、ステップＴ９において、領域選択部２４は、書き込みデータ１８１の書き込み先として、Ａ領域を選択する。
【０１４３】
このステップＴ７においてSR_Colorに３が設定されている場合、ステップＴ１０において、領域選択部２４は、メモリ固有情報１５からＣ領域に対するデータの書き込み頻度を算出する。
【０１４４】
ステップＴ１１において、領域選択部２４は、カラーリングテーブル１７で管理されている書き込みデータ１８１のSW_Colorを参照する。
【０１４５】
ステップＴ１２において、領域選択部２４は、「SW_Colorが３以上であるか、又は、Ｃ領域に対する書き込み頻度が高レベルである」ことが成り立つか否か判断する。
【０１４６】
このステップＴ１２において「SW_Colorが３以上であるか、又は、Ｃ領域に対する書き込み頻度が高レベルである」が成り立たない場合、処理はステップＴ９に移り、領域選択部２４は、Ａ領域を選択する。
【０１４７】
ステップＴ１２において「SW_Colorが３以上であるか、又は、Ｃ領域に対する書き込み頻度が高レベルである」が成り立つ場合、処理はステップＴ１３に移り、領域選択部２４は、Ｃ領域を選択する。
【０１４８】
上記ステップＴ７においてSR_Colorに２が設定されている場合、ステップＴ１４において、領域選択部２４は、メモリ固有情報１５からＤ領域に対するデータの書き込み頻度を算出する。
【０１４９】
ステップＴ１５において、領域選択部２４は、カラーリングテーブル１７で管理されている書き込みデータ１８１のSW_Colorを参照する。
【０１５０】
ステップＴ１６において、領域選択部２４は、「SW_Colorが３以上であるか、又は、算出された書き込み頻度が高レベルである」ことが成り立つか否か判断する。
【０１５１】
このステップＴ１６において「SW_Colorが３以上であるか、又は、算出された書き込み頻度が高レベルである」が成り立つ場合、処理はステップＴ１３に移り、領域選択部２４は、Ｃ領域を選択する。
【０１５２】
ステップＴ１６において「SW_Colorが３以上であるか、又は、算出された書き込み頻度が高レベルである」が成り立たない場合、処理はステップＴ１７に移る。
【０１５３】
ステップ１７において、領域選択部２４は、「SW_Colorが２以上であるか、又は、算出された書き込み頻度が中レベルである」ことが成り立つか否か判断する。
【０１５４】
このステップＴ１７において「SW_Colorが２以上であるか、又は、算出された書き込み頻度が中レベルである」が成り立つ場合、処理はステップＴ１８に移り、領域選択部２４は、Ｄ領域を選択する。
【０１５５】
ステップＴ１７において「SW_Colorが２以上であるか、又は、算出された書き込み頻度が中レベルである」が成り立たない場合、処理はステップＴ１９に移り、領域選択部２４は、Ｅ領域を選択する。
【０１５６】
上記ステップＴ７においてSR_Colorに１が設定されている場合、ステップＴ２０において、領域選択部２４は、メモリ固有情報１５からＥ領域に対するデータの書き込み頻度を算出する。
【０１５７】
ステップＴ２１において、領域選択部２４は、カラーリングテーブル１３で管理されている書き込みデータ１８１のSW_Colorを参照する。その後、処理はステップＴ１６に移る。
【０１５８】
図９は、本実施の形態に係る圧縮判断部２２による圧縮判断の概要の一例を示す図である。
【０１５９】
圧縮判断部２２は、SW_Colorが大きく、SR_Colorが大きい場合、書き込みデータ１８１を圧縮しない。
【０１６０】
圧縮判断部２２は、SW_Colorが大きく、SR_Colorが小さい場合、書き込みデータ１８１をなるべく圧縮する。
【０１６１】
圧縮判断部２２は、SW_Colorが小さく、SR_Colorが大きい場合、書き込みデータ１８１を圧縮しなくてもよい。
【０１６２】
圧縮判断部２２は、SW_Colorが小さく、SR_Colorが小さい場合、書き込みデータ１８１を圧縮する。
【０１６３】
図１０は、本実施の形態に係る圧縮判断部２２による圧縮判断処理及び圧縮部２３による圧縮処理の一例を示すフローチャートである。
【０１６４】
この図１０の例では、書き込みデータ１８１に対応するファイルが圧縮済みのファイルか否か、及び、書き込みデータ１８１の書き込み先のメモリ領域に基づいて、書き込みデータ１８１を圧縮するか否かが判断される。
【０１６５】
図１１は、領域選択部２４によるメモリ領域の選択結果と、圧縮判断情報の設定と、書き込みデータ１８１に対する圧縮判断部２２の判断結果との関係の一例を示す図である。
【０１６６】
ステップＵ１において、圧縮判断部２２は、圧縮判断情報が「０」か（既に圧縮されているか）否か判断する。
【０１６７】
圧縮判断情報が「０」の場合、ステップＵ２において、圧縮判断部２２は、書き込みデータ１８１を圧縮せず、そのまま書き込む。
【０１６８】
圧縮判断情報が「０」ではない場合、ステップＵ３において、圧縮判断部２２は、領域選択部２４において選択されたメモリ領域を確認する。
【０１６９】
このステップＵ３においてＢ領域が選択されている場合、ステップＵ２に処理は移動する。これにより、書き込みデータ１８１は、Ｂ領域に、圧縮されずに書き込まれる。
【０１７０】
上記ステップＵ３においてＡ領域又はＣ領域が選択されている場合、ステップＵ４において、領域選択部２４は、圧縮判断情報が「２」か（圧縮不明か）否か判断する。
【０１７１】
このステップＵ４において圧縮判断情報が「２」の場合、処理は、ステップＵ２に移動する。これにより、書き込みデータ１８１は、Ａ領域又はＣ領域に、圧縮されずに書き込まれる。
【０１７２】
上記ステップＵ４において圧縮判断情報が「２」ではない場合、ステップＵ５において、圧縮判断部２２は、書き込みデータ１８１を圧縮して書き込む。
【０１７３】
上記ステップＵ３においてＤ領域が選択されている場合、ステップＵ６において、領域選択部２４は、圧縮判断情報が「２」か（圧縮不明か）否か判断する。
【０１７４】
このステップＵ６において圧縮判断情報が「２」ではない場合、処理は、ステップＵ２に移動する。これにより、書き込みデータ１８１は、Ｄ領域に、圧縮されずに書き込まれる。
【０１７５】
上記ステップＵ６において圧縮判断情報が「２」の場合、処理はステップＵ５に移動し、圧縮判断部２２は、書き込みデータ１８１を圧縮して書き込む。
【０１７６】
上記ステップＵ３においてＥ領域が選択された場合、処理はステップＵ５に移動する。これにより、書き込みデータ１８１は、Ｅ領域に、圧縮して書き込まれる。
【０１７７】
本実施の形態においては、書き込みデータ１８１に対応するアクセス固有情報の静的情報に、圧縮判断情報が含まれている。
【０１７８】
圧縮判断情報は、静的情報の他の情報と同様に、オペレーティングシステム１３によって設定される。オペレーティングシステム１３は、例えば、上記図７に示す処理に基づいて、書き込みデータ１８１に対応するファイルを認識し、このファイルが圧縮済みか否か認識し、ファイルが圧縮済みであればこのファイルに対応する書き込みデータ１８１に対しては圧縮不要と判断し、圧縮判断情報「０」を設定する。
【０１７９】
データ書き込み要求があると、領域選択部２４は、例えば上記図８などの処理に基づいて、上記図６のような混成メモリ５のいずれかのメモリ領域を選択する。
【０１８０】
さらに、上記図１０に示すように、圧縮判断部２２は、書き込みデータ１８１に対してデータ圧縮を行うか否か判断し、圧縮部２３は、この圧縮判断結果に基づいて、書き込みデータ１８１を圧縮するか、又は非圧縮とする。
【０１８１】
すなわち、本実施の形態においては、データ書き込み領域が選択された後、圧縮判断情報が参照される。この圧縮判断情報が０の場合は、書き込みデータ１８１に対応するファイルが既に圧縮されているため、書き込みデータ１８１に対して圧縮処理は実行されず、書き込みデータ１８１はそのまま混成メモリ５に記憶される。圧縮判断情報が０でない場合には、選択されたメモリ領域に応じて圧縮するか否かの判断が実行される。
【０１８２】
書き込み先としてＳＬＣ領域であるＢ領域が選択された場合には、書き込みデータ１８１の書き込み頻度、読み出し頻度の双方が高く、処理速度を高速化することが重要であるため、書き込みデータ１８１に対する圧縮は行われずそのままＢ領域のいずれかの領域に記憶される。
【０１８３】
書き込み先としてＡ領域又はＣ領域が選択された場合、書き込みデータ１８１の圧縮判断情報が参照される。書き込み先がＡ領域又はＣ領域であり圧縮判断情報が２の場合、書き込みデータ１８１は圧縮されずそのままＡ領域又はＣ領域のいずれかの領域に記憶される。書き込み先がＡ領域又はＣ領域であり圧縮判断情報が２でない場合、書き込みデータ１８１は圧縮されＡ領域又はＣ領域のいずれかの領域に記憶される。
【０１８４】
書き込み先としてＤ領域が選択された場合、書き込みデータ１８１の圧縮判断情報が参照される。書き込み先がＤ領域であり圧縮判断情報が２ではない場合、書き込みデータ１８１は圧縮されずそのままＤ領域のいずれかの領域に記憶される。書き込みデータ１８１がＤ領域であり圧縮判断情報が２の場合、書き込みデータ１８１は圧縮されＤ領域のいずれかの領域に記憶される。
【０１８５】
書き込み先としてＥ領域が選択された場合、書き込みデータ１８１の書き込み頻度、読み出し頻度の双方が低く、データサイズの低減が重要であるため、書き込みデータ１８１に対する圧縮が実行されＥ領域のいずれかの領域に記憶される。
【０１８６】
本実施の形態においては、書き込み回数に制限のある不揮発性半導体メモリ５ｂ，５ｃの寿命を延長するために、必要に応じて書き込みデータ１８１が圧縮され、実際に不揮発性半導体メモリ５ｂ，５ｃに書き込まれるデータ１８１のデータサイズが小さくなる。
【０１８７】
本実施の形態に係るメモリ管理装置４は、処理部９によって処理されるデータに対応するアクセス固有情報を管理する。メモリ管理装置４は、各プロセス８ａ〜８ｃで使用される仮想論理アドレスを、物理アドレスに変換する。さらに、メモリ管理装置４は、データに対応するアクセス固有情報、メモリ使用情報１４、メモリ固有情報１５などに基づいて、ウェアレベリングを実行するとともに、書き込みデータの圧縮、読み出しデータの伸張を行う。
【０１８８】
例えば、Ｌｉｎｕｘ（登録商標）のＵＢＩＦＳにおいては、圧縮方式（ＬＺＯ、ＺＬＩＢなど）を選択することが可能である。
【０１８９】
ＬｉｎｕｘのＵＢＩＦＳにおいて、ファイルシステム全体を圧縮対象として指定すると、既に圧縮されているデータに対してさらに圧縮が行われることがある。このように、既に圧縮されているデータをさらに圧縮すると、かえってデータサイズが大きくなる場合がある。このような不要な圧縮は適切ではない。
【０１９０】
ＬｉｎｕｘのＵＢＩＦＳにおいては、個別のファイルを圧縮対象として指定することもできる。しかしながら、ユーザが個別のファイルごとに圧縮対象とするか否か指定する作業の労力は過大になる。
【０１９１】
従来の技術において、不揮発性半導体メモリを主記憶装置として用いる場合、又は、不揮発性半導体メモリをスワップ先として用いる場合、どのデータを圧縮し、どのデータを非圧縮とするか判断することは困難である。
【０１９２】
このような問題に対し、本実施の形態においては、メモリ管理装置４によって書き込みデータ単位で圧縮・非圧縮が自動で判断されるため、不要な圧縮が実行されてデータサイズが増加することを防止することができ、ユーザの作業労力の増加も防止することができる。
【０１９３】
本実施の形態に係るメモリ管理装置４は、まず、アクセス回数に上限のある不揮発性メモリに対する書き込みデータ又は書き込みプログラムと、書き込み論理アドレスとを、プロセッサから受け付ける。
【０１９４】
次に、メモリ管理装置４は、前記書き込みデータ又は前記書き込みプログラムに対する種別、アクセス回数、アクセス頻度、重要度のうちの少なくとも一つが管理されている固有情報に基づいて、前記書き込みデータ又は前記書き込みプログラムを圧縮するか否か判断する。
【０１９５】
次に、メモリ管理装置４は、前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断された場合に、前記書き込みデータ又は前記書き込みプログラムを圧縮する。
【０１９６】
次に、メモリ管理装置４は、前記固有情報に基づいて、前記不揮発性メモリに対する前記書き込みデータ又は前記書き込みプログラムの書き込み領域を選択する。
【０１９７】
次に、メモリ管理装置４は、前記書き込み領域を示す書き込み物理アドレスと前記書き込み論理アドレスとを関連付けた情報に基づいてアドレス変換情報を更新する。また、メモリ管理装置４は、書き込みに対して前記固有情報を更新する。さらに、メモリ管理装置４は、前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断された場合に、圧縮された前記書き込みデータ又は前記書き込みプログラムを前記選択領域に書き込み、前記書き込みデータ又は前記書き込みプログラムを圧縮すると判断されなかった場合に、非圧縮の前記書き込みデータ又は前記書き込みプログラムを前記書き込み領域に書き込む。
【０１９８】
メモリ管理装置４は、前記プロセッサから読み出し論理アドレスを受け付ける。
【０１９９】
次に、メモリ管理装置４は、前記アドレス変換情報に基づいて、前記読み出し論理アドレスを読み出し物理アドレスに変換し、前記読み出し物理アドレスの示す読み出し領域に記憶されている読み出しデータ又は読み出しプログラムを読み出す。
【０２００】
次に、メモリ管理装置４は、前記固有情報に基づいて、前記読み出しデータ又は前記読み出しプログラムを伸張するか否か判断する。
【０２０１】
次に、メモリ管理装置４は、前記読み出しデータ又は前記読み出しプログラムを伸張すると判断された場合に、前記読み出しデータ又は前記読み出しプログラムを伸張する。また、メモリ管理装置４は、読み出しに対して前記固有情報を更新する。さらに、メモリ管理装置４は、前記読み出しデータ又は前記読み出しプログラムを伸張すると判断された場合に、伸張された前記読み出しデータ又は前記読み出しプログラムを前記プロセッサに転送し、前記読み出しデータ又は前記読み出しプログラムを伸張すると判断されなかった場合に、前記不揮発性メモリから読み出された前記読み出しデータ又は前記読み出しプログラムを前記プロセッサに転送する。
【０２０２】
以上説明したように、本実施の形態においては、カラーリングテーブル１７に基づいて、書き込み先の領域が選択され、さらに圧縮判断情報に基づいて書き込みデータ１８１に対する圧縮するか否かが判断され、圧縮すると判断された場合に圧縮が実行される。
【０２０３】
これにより、最適なアクセス速度を保ちつつ、混成メモリ５への書き込みデータサイズを低減させることができ、混成メモリ５の寿命を延ばすことができる。
【０２０４】
図１２は、データ圧縮を行った場合とデータ圧縮を行わなかった場合の記憶装置の記録容量の比較結果を示すグラフである。
【０２０５】
このように、データ圧縮を行うと、データ圧縮を行わない場合によりも必要な記憶容量を減少させることができ、書き込み量を少なくすることができ、記憶装置の寿命を延ばすことができる。
【０２０６】
本実施の形態においては、ファイル単位ではなく、書き込みデータの単位（例えばページ単位、ブロック単位など）で圧縮するか否かを判断することができ、圧縮処理をファイルよりも細かい単位で制御することができる。
【０２０７】
本実施の形態においては、データの対応するファイルの拡張子が「c」「txt」「html」の場合に、このデータに対して圧縮を行うと判断している。しかしながら、圧縮される対象のファイルは「c」「txt」「html」に限定されるものではなく、他の拡張子を持つファイルであってもよい。
【０２０８】
例えば、Ｌｉｎｕｘでは、システム可動状態が「log」の拡張子を持つファイルに追記される。また、テキストファイル作成ソフトウェアの中には、定期的に、「bak」の拡張子を持つバックアップファイルを作成するソフトウェアがある。
【０２０９】
このようなログファイル、バックアップファイルは、「mpeg」「jpg」の拡張子を持つ画像ファイルに比べて、書き込み頻度は高いが、読み出し頻度は低く、圧縮率が高くなる傾向がある。
【０２１０】
そこで、例えば、メモリ管理装置４は、ログファイル、バックアップファイルについて、圧縮判断情報を１に設定し、圧縮必要とし、圧縮されている画像ファイルについて、圧縮判断情報を０に設定し、圧縮不要とする。これにより、混成メモリ５の不揮発性半導体メモリ５ｂ，５ｃに書き込まれるデータのサイズを効率的に削減することができる。
【０２１１】
（第２の実施の形態）
本実施の形態においては、上記第１の実施の形態の変形例であり、書き込みデータの過去（例えば前回又は平均などの）の圧縮率と過去の圧縮時間（圧縮速度でもよい）とのうちの少なくとも一方に基づいて、書き込みデータ１８１を圧縮するか否か判断するメモリ管理装置４について説明する。
【０２１２】
図１３は、カラーリングテーブルのフォーマットの一例を示すブロック図である。
【０２１３】
本実施の形態においては、カラーリングテーブル３２の各エントリにおいて、各データのアクセス固有情報が格納されている。
【０２１４】
アクセス固有情報の動的情報には、過去の圧縮率と過去の圧縮時間とが含まれている。
【０２１５】
過去の圧縮率は、例えば、（圧縮後のデータサイズ／圧縮前のデータサイズ）×１００によって算出される。
【０２１６】
過去の圧縮時間は、例えば、過去の圧縮処理において圧縮開始から終了までに要した時間（書き込みデータに対する圧縮速度でもよい）である。
【０２１７】
過去の圧縮率及び過去の圧縮時間は、例えば、オペレーティングシステム１３によって動的情報に対して設定される。
【０２１８】
以下においては、過去の圧縮率と過去の圧縮時間とのうち、過去の圧縮率を用いる場合について説明する。
【０２１９】
図１４は、本実施の形態に係る圧縮判断処理及び圧縮処理の一例を示すフローチャートである。
【０２２０】
この図１４では、書き込みデータ１８１を圧縮して混成メモリ５に書き込むステップＵ５の前に、ステップＵ５ａが追加されている。
【０２２１】
このステップＵ５ａにおいて、圧縮判断部２２は、書き込みデータ１８１の過去の圧縮率が圧縮許可率（しきい値：例えば、８０％など）を超えるか否か判断する。
【０２２２】
書き込みデータ１８１の過去の圧縮率が圧縮許可率を超える場合、処理はステップＵ２に移動する。これにより、書き込みデータ１８１は、圧縮されることなく、混成メモリ５のうちの選択された領域に記憶される。
【０２２３】
書き込みデータ１８１の過去の圧縮率が圧縮許可率以下の場合、処理はステップＵ５に移動する。これにより、書き込みデータ１８１は、圧縮されて混成メモリ５のうちの選択された領域に記憶される。
【０２２４】
さらに、この図１４では、書き込みデータ１８１を圧縮して混成メモリ５に書き込むステップＵ５の後に、ステップＵ５ｂが追加されている。
【０２２５】
このステップＵ５ｂにおいて、オペレーティングシステム１３は、圧縮された書き込みデータ１８１の圧縮率を計算し、書き込みデータ１８１の過去の圧縮率を更新する
本実施の形態においては、過去の圧縮率に代えて、過去の圧縮時間を用いてもよい。この場合、圧縮判断部２２は、書き込みデータ１８１の過去の圧縮時間が圧縮許可時間（しきい値）を超えるか否か判断する。
【０２２６】
書き込みデータ１８１の過去の圧縮時間が圧縮許可時間を超える場合、書き込みデータ１８１は、圧縮されることなく、混成メモリ５のうちの選択された領域に記憶される。
【０２２７】
書き込みデータ１８１の過去の圧縮時間が圧縮許可時間以下の場合、書き込みデータ１８１は、圧縮されて混成メモリ５のうちの選択された領域に記憶される。
【０２２８】
また、本実施の形態においては、過去の圧縮率と過去の圧縮時間との双方を用いてもよい。本実施の形態に係るメモリ管理装置４は、例えば、過去の圧縮時間が設定されている圧縮許可時間を超える場合、又は、過去の圧縮率が設定されている圧縮許可率を超える場合には、書き込みデータ１８１を圧縮せず、過去の圧縮時間が圧縮許可時間以下であり、かつ、過去の圧縮率が圧縮許可率以下の場合に、書き込みデータ１８１を圧縮する。
【０２２９】
上記図１４において、ステップＵ５ａは、ステップＵ１の前に実行されるとしてもよい。
【０２３０】
以上説明した本実施の形態においては、カラーリングテーブル３２の動的情報に、さらに、過去の圧縮率と過去の圧縮時間とのうちの少なくとも一方が含まれる。
【０２３１】
過去の圧縮率は、データ圧縮を行って書き込みが行われた場合に、（圧縮後のデータサイズ／圧縮前のデータサイズ）×１００によって算出される値である。
【０２３２】
過去の圧縮時間は、データ圧縮を行って書き込みが行われた場合におけるデータ圧縮開始時点からデータ圧縮終了時点までの時間である。
【０２３３】
過去の圧縮率と過去の圧縮時間とは、カラーリングテーブル３２に格納される。
【０２３４】
データ書き込み要求が発生すると、メモリ管理装置は、例えば上記図１３に処理により、書き込みデータに対するデータ圧縮又は非圧縮を判断する。
【０２３５】
本実施の形態に係るメモリ管理装置４は、上記第１の実施の形態に係るメモリ管理装置４の特徴に加えて、データ圧縮及び書き込みを行う前に、過去の圧縮率と過去の圧縮時間とのうちの少なくとも一方を参照し、過去の圧縮率と過去の圧縮時間とのうちの少なくとも一方がしきい値を超えた場合、圧縮することが有効ではないと判断し、非圧縮の書き込みデータ１８１を混成メモリ１のうちの選択された領域に書き込むという特徴を持つ。また、本実施の形態に係るメモリ管理装置４は、過去の圧縮率及び過去の圧縮時間がしきい値以下の場合、圧縮された書き込みデータ１８１を混成メモリ１のうちの選択された領域に書き込み、カラーリングテーブル３２の過去の圧縮率及び過去の圧縮時間を更新する。
【０２３６】
このような本実施の形態においては、例えば書き込みデータ１８１に対応するファイルの種別が識別できない場合であっても、過去の圧縮率と過去の圧縮時間とを参照することにより、有効なデータ圧縮を行うことができ、有効でないデータ圧縮を防止することができ、無駄な圧縮時間を削減することができ、書き込みデータサイズを低減化することができ、混成メモリ５の寿命を延長させることができる。
【０２３７】
また、過去の圧縮時間を参照することにより、圧縮時間の長くなるデータ圧縮を削減でき、処理遅延が発生することを防止することができる。
【０２３８】
なお、本実施の形態においては、過去の圧縮率及び過去の圧縮時間を用いる場合を例として説明しているが、過去の圧縮率及び過去の圧縮時間に代えて、過去の伸張率及び過去の伸張時間を用いてもよい。
【０２３９】
（第３の実施の形態）
本実施の形態においては、上記第１及び第２の実施の形態に係るメモリ管理装置４の変形例について説明する。
【０２４０】
例えば、メモリ管理装置４は、ライトバックキャッシュメモリとして機能するキャッシュメモリを具備する。メモリ管理装置４は、混成メモリ５に書き込まれるデータ（例えばページ）がある程度の量（例えばブロックサイズ）になるまで蓄積し、書き込まれるデータがある量に達すると、キャッシュメモリに記憶されているデータをまとめて混成メモリ５に書き込む。この場合において、バックグラウンドで、上記の圧縮判断処理及び圧縮処理が実行される。
【０２４１】
これにより、メモリ管理装置４から混成メモリ５への書き込み処理の回数を削減することができる。
【０２４２】
例えば、メモリ管理装置４では、読み出し頻度又は書き込み頻度の高いデータを圧縮せず、読み出し頻度及び書き込み頻度の低いデータを圧縮する。
【０２４３】
例えば、メモリ管理装置４は、圧縮することが有効なファイルに対するデータを全て圧縮する寿命優先モードと、アクセス頻度がしきい値以下のデータを圧縮し、アクセス頻度がしきい値を超えるデータを圧縮しないアクセス速度優先モードとを持ち、設定されたモードに基づいてデータの圧縮又は非圧縮を選択する。
【０２４４】
例えば、メモリ管理装置４は、混成メモリ５の不揮発性半導体メモリ５ｂ，５ｃの残りの容量がある量又はある割合を超えた場合に、データ圧縮を行うとしてもよい。
【０２４５】
例えば、メモリ管理装置４は、混成メモリ５のうち、ＳＬＣの不揮発性半導体メモリ５ｂに記憶されるデータを非圧縮とし、ＭＬＣの不揮発性半導体メモリ５ｃに記憶されるデータを圧縮するとしてもよい。これとは逆に、メモリ管理装置４は、混成メモリ５のうち、ＳＬＣの不揮発性半導体メモリ５ｂに記憶されるデータを圧縮し、ＭＬＣの不揮発性半導体メモリ５ｃに記憶されるデータを非圧縮としてもよい。
【０２４６】
例えば、メモリ管理装置４は、混成メモリ５の不揮発性半導体メモリ５ｂ，５ｃの書き込み回数（読み出し回数、消去回数でもよい）が書き込み回数の上限（読み出し回数の上限、消去回数の上限でもよい）までに余裕があるか否か判断し、余裕がある場合にデータを圧縮せず、余裕がない場合にデータを圧縮するとしてもよい。書き込み回数が書き込み回数の上限までに余裕があるか否かの判断は、例えば、（書き込み回数／書き込み回数の上限）で求められるメモリの使用量がしきい値以下か否かにより、判断される。
【０２４７】
上記各実施の形態においては、例えば、ファイルリスト、ファイルの拡張子、ファイルのヘッダに基づいて、ファイルから読み込まれるデータ（ファイルに対応するデータ）について圧縮するか否か判断される。
【０２４８】
さらに、上記各実施の形態に係るメモリ管理装置４は、ファイルリスト、ファイルの拡張子、ファイルのヘッダに基づいて圧縮の要否を判断できないデータ、例えば、オペレーティングシステム１３のカーネルにより主記憶装置のｂｓｓ領域、スタック領域、ヒープ領域に格納されるデータについても、動的に求められる圧縮率、圧縮時間、アクセス回数、アクセス頻度などに基づいて圧縮するか否か判断する。
【０２４９】
上記各実施の形態において、混成メモリ５の不揮発性半導体メモリ５ｂ，５ｃが主記憶装置として用いられる場合、例えば、プログラム実行時にスタックに用いられるメモリ領域は、更新頻度が高い。これに対して、プログラムコード領域に用いられるメモリ領域は、書き換えが少ない。
【０２５０】
そこで、例えば、メモリ管理装置４は、プログラム実行時にスタックに用いられるメモリ領域に書き込まれるデータを非圧縮とし、プログラムコード領域に用いられるメモリ領域に書き込まれるデータを圧縮する。これにより、更新頻度の高い領域に対するアクセスにおける圧縮時間・伸張時間を削除し、高速に動作することが可能になり、更新頻度の低い領域に対する使用量、使用容量を低下させることができる。
【０２５１】
さらに、メモリ管理装置４は、例えば、ＤＲＡＭをキャッシュメモリとして用いる場合には、キャッシュ入れ替えの際に、スタック領域をプログラムコード領域より優先してキャッシュメモリに残すようにデータ管理を行う。
【０２５２】
例えば、メモリ管理装置４は、カーネルによって使用される領域に格納されるデータ、ユーザプロセスによって使用される領域に格納されるデータとで、圧縮するか否かの優先度を変えてもよい。
【０２５３】
例えば、メモリ管理装置４は、プロセスの優先度に応じて、このプロセスに基づいて発生したデータの書き込みに対して圧縮を行うか否かを判断する。
【０２５４】
以上のように、本実施の形態においては、情報処理装置１の特性に応じて、様々な基準にしたがって混成メモリ５に書き込まれるデータ単位で圧縮するか否か判断することができる。
【０２５５】
（第４の実施の形態）
本実施の形態においては、上記第１乃至第３の実施の形態に係る混成メモリ５に含まれるメモリ５ａ〜５ｃのうちどのメモリをアクセス先として選択するかについてさらに詳細に説明する。
【０２５６】
メモリ管理装置４は、揮発性半導体メモリ５ａ、ＳＬＣの不揮発性半導体メモリ５ｂ、ＭＬＣの不揮発性半導体メモリ５ｃへの書き込み、読み出しを実行する。
【０２５７】
メモリ管理装置４は、読み出し回数と書き込み回数とのうちの少なくとも一方を、不揮発性半導体メモリ５ｂ，５ｃのそれぞれのメモリ内で平滑化するウェアレベリングを実行する。
【０２５８】
情報処理装置１は、オペレーティングシステム１３を実行する。情報処理装置１は、オペレーティングシステム１３により、データ固有情報２０１〜２０ｎを管理する。
【０２５９】
データ固有情報２０１〜２０ｎは、各データ（プログラムなどでもよい）１８１〜１８ｎについて、アクセス頻度とアクセス回数とのうちの少なくとも一方などのデータ固有のアクセス情報を含む。
【０２６０】
すなわち、情報処理装置１で扱われるデータ１８１〜１８ｎには、そのデータ本体１９１〜１９ｎに対してデータ固有情報２０１〜２０ｎが関係付けられている。
【０２６１】
オペレーティングシステム１３は、データ１８１〜１８ｎに対する書き込み又は読み出しが発生した場合に、そのデータ１８１〜１８ｎのデータ固有情報２０１〜２０ｎを更新する。
【０２６２】
情報処理装置１は、オペレーティングシステム１３により、メモリ使用情報１４を管理する。
【０２６３】
メモリ使用情報１４は、各メモリ５ａ〜５ｃの使用量又は使用率、各メモリ５ａ〜５ｃ内の各領域の使用量又は使用率などのようなメモリ５ａ〜５ｃの使用状況を示す情報を含む。例えば、メモリ使用情報１４は、各メモリ５ａ〜５ｃの「アクセス回数／アクセス回数の上限」、各メモリ５ａ〜５ｃ内の各領域の「アクセス回数／アクセス回数の上限」、各メモリ５ａ〜５ｃの「使用容量／全容量」、各メモリ５ａ〜５ｃの各領域のアクセス回数、アクセス頻度などを含む。例えば、混成メモリ５へのアクセスが実行されると、オペレーティングシステム１３は、メモリ使用情報１４に対して、アクセスされたメモリの使用量又は使用率、アクセスされた領域の使用量又は使用率、アクセス回数、アクセス頻度などの情報を更新する。
【０２６４】
メモリ固有情報１５は、混成メモリ５の各メモリ５ａ〜５ｃのアクセス回数の上限（寿命情報、耐久性情報）などのようなメモリ固有の情報を含む。
【０２６５】
カラーリングテーブル１７は、各データ１８１〜１８ｎについて、アクセスの状態を表すアクセス固有情報を管理する。
【０２６６】
メモリ管理装置４は、データ１８１の書き込み時に、カラーリングテーブル１７を調べ、混成メモリ５のメモリ５ａ〜５ｃのうちのいずれかのメモリを書き込み先のメモリとして選択する。この選択により、高性能で、安価で、大容量のメモリを、長期間使用することが可能となる。例えば、メモリ管理装置４は、カラーリングテーブル１７に基づいて書き込み耐性に余裕のあるメモリを選択する。
【０２６７】
例えば、メモリ管理装置４は、書き込みデータ１８１のアクセス頻度が高い場合に書き込み先としてＳＬＣの不揮発性半導体メモリ５ｂを選択し、書き込みデータ１８１のアクセス頻度が低い場合に書き込み先としてＭＬＣの不揮発性半導体メモリ５ｃを選択する。これにより、混成メモリ５のコスト、性能、アクセス速度、寿命の最適化を図ることができる。
【０２６８】
メモリ管理装置４は、ＳＬＣの不揮発性半導体メモリ５ｂとＭＬＣの不揮発性半導体メモリ５ｃとのうちのいずれかが選択された場合に、上記各実施の形態で説明したように、選択された書き込みメモリに対して、ウェアレベリング又は追記式の書き込みアルゴリズムに基づいて、書き込みデータ１８１の書き込み動作を実行する。
【０２６９】
本実施の形態に係る混成メモリ５は、異機種混在型の主記憶装置である。混成メモリ５の寿命を可能な限り長くし、データ欠損を避けるために、メモリ管理装置４は、混成メモリ５の各メモリ５ａ〜５ｃの耐久性及び信頼性に基づいてデータ配置を決定する。
【０２７０】
本実施の形態に係るメモリ管理装置４は、アクセスされるデータのアクセス頻度と重要度とに基づいて、カラーリングレベル（評価値）を求める。
【０２７１】
次に、メモリ管理装置４は、カラーリングレベルと、混成メモリ５のメモリ５ａ〜５ｃの使用率（例えば、書き込み回数／書き込み回数の上限、又は、使用容量／全容量）とに基づいて、メモリ５ａ〜５ｃの中から書き込み先のメモリを選択する。
【０２７２】
データの重要度は、例えば、データファイルの形式情報、ユーザによって設定された設定情報、データのアクセス時刻情報などに基づいて決定される。
【０２７３】
例えば、重要度は、データが実行可能ファイルか、データがメディアファイルかに基づいて判断され、またデータファイルの保存されているフォルダの種別に基づいて判断される。
【０２７４】
実行可能ファイルか否かは、ファイルの実行可能パーミッションにより判断される。例えば、データが実行可能ファイルの場合、重要度は高く設定される。
【０２７５】
メディアファイルは、ファイルの拡張子により判断される。例えば、データがメディアファイルの場合、重要度は中レベルに設定される。
【０２７６】
例えば、データファイルの保存されているフォルダがゴミ箱の場合又はメールボックスの場合、重要度は低く設定される。
【０２７７】
ユーザによってデータファイルの重要度が設定されている場合、拡張子を変えたシャドウファイルに各ファイルの重要度の設定が記憶される。ユーザに対して、システムコールにより、重要度を設定する旨の通知がなされるとしてもよい。
【０２７８】
例えば、最終アクセス時刻から現在の時刻までの間隔に比例して重要度は減少するとしてもよい。
【０２７９】
重要度には、値が変化しない静的重要度と、値がアクセス状況に応じて変化する動的重要度とがある。
【０２８０】
データのアクセス頻度は、プロセスの優先度、ファイルの形式情報、アクセスパターン、ＥＬＦフォーマットのセグメントなどに基づいて決定される。
【０２８１】
例えば、メディアファイルについての書き込み頻度は、低く設定される。
【０２８２】
例えば、アクセスパターンがシステムコールで指定されたパーミッションの場合には、アクセス頻度は高く設定され、ファイルのパーミッションの場合には、アクセス頻度は低く設定される。
【０２８３】
例えば、リードオンリーのセクションで構成されるセグメントについて、アクセス頻度のうちの書き込み頻度は低く設定される。
【０２８４】
アクセス頻度には、値が変化しない静的アクセス頻度と、値がアクセス状況に応じて変化する動的アクセス頻度とがある。
【０２８５】
メモリ管理装置４は、例えば、（１）式、重要度、アクセス頻度に基づいてカラーリングレベルを算出する。
【０２８６】
ＣＬ＝ｍｉｎ（９，（重要度×Ｗ＋アクセス頻度×（１−Ｗ）））  …（１）
ここで、Ｗは、重要度、アクセス頻度の重み付けを行う補正値である。Ｗは０≦Ｗ≦１の範囲とする。
【０２８７】
この（１）式では、カラーリングレベルＣＬは、０≦ＣＬ≦９の範囲となる。
【０２８８】
以下に、重要度の具体的な決定例について説明する。
【０２８９】
例えば、カーネル内で使用されるパラメータ用領域の重要度は固定値であり、９と設定される。プロセス生成時に要求される領域の重要度は固定値であり、９と設定される。プロセスに動的に要求される領域の重要度は固定値であり、５と設定される。
【０２９０】
図１５は、動的重要度の算出例を示す図である。
【０２９１】
プロセスがファイルを主記憶装置にマップするための領域の重要度は、０≦重要度≦９の範囲となり、下記の（２）〜（４）の式で設定される。
【０２９２】
重要度＝ｍｉｎ（９，ｍａｘ（動的重要度，ユーザ指定重要度））  …（２）
動的重要度＝静的重要度×Ｔ  …（３）
Ｔ＝ｍａｘ（０，−（１／最大アクセス時間間隔）＋１）  …（４）
ここで、静的重要度は、０≦静的補正値≦９の範囲であり、データの形式に基づいて経験的に設定される。
【０２９３】
最大アクセス時間間隔は、経験的に設定され、あるいはアクセス履歴などから求められる。
【０２９４】
以下に、アクセス頻度の具体的な決定例について説明する。
【０２９５】
例えば、カーネル内で使用されるパラメータ用領域のアクセス頻度は、固定値であり、９と設定される。
【０２９６】
例えば、プロセスで使用される領域のアクセス頻度は、読み出しのみの領域については３、読み出しに加えて書き込みの可能性もある領域については５などのように、アクセスパターンに基づいて設定される。
【０２９７】
例えば、データ配置を効果的に行うためにアクセス回数と時間情報に基づいてアクセス頻度を求めるとしてもよい。
【０２９８】
以下に、書き込み先のメモリの選択に使用されるしきい値の具体的な決定例について説明する。
【０２９９】
図１６は、カラーリングレベルと、メモリの使用率と、しきい値との関係の一例を示す図である。
【０３００】
本実施の形態においては、カラーリングレベルに基づいて、混成メモリ５の異機種のメモリ５ａ〜５ｃの中から、書き込み先のメモリが選択される。本実施の形態においては、書き込み先のメモリの選択に用いられるカラーリングレベルのしきい値を、メモリの使用率に基づいて変化させる。例えば、使用率は、「アクセス回数／アクセス回数の上限」としてもよく、「使用領域の容量／メモリの全容量」としてもよい。なお、使用可能残量又は使用可能残率などに応じてしきい値を変化させるとしてもよい。
【０３０１】
しきい値ONRAMは、データを揮発性半導体メモリ５ａに記憶するか否かの判断に用いられる。書き込みデータ１８１のカラーリングレベルがこのしきい値ONRAM以上の場合、書き込み先メモリとして揮発性半導体メモリ５ａが選択される。書き込みデータ１８１のカラーリングレベルがこのしきい値ONRAM未満の場合、書き込み先メモリとして不揮発性半導体メモリ５ｂ，５ｃのいずれかが選択される。
【０３０２】
しきい値ONRAMは、下記の式（５）で算出され、少数点以下は切り捨てとする。しきい値ONRAMは、６≦ONRAM≦９の範囲となる。
【０３０３】
ONRAM＝ｍｉｎ（９，（９／１００×メモリの使用率（％）＋６））  …（５）
この（５）式において、６は、しきい値ONRAMの最低値である。
【０３０４】
さらに、しきい値ONSLCは、データをＳＬＣの不揮発性半導体メモリ５ｂに記憶するか否かの判断に用いられる。書き込みデータ１８１のカラーリングレベルが、上記しきい値ONRAM未満であり、しきい値ONSLC以上の場合、書き込み先メモリとしてＳＬＣの不揮発性半導体メモリ５ｂが選択される。書き込みデータ１８１のカラーリングレベルがこのしきい値ONSLC未満の場合、書き込み先メモリとしてＭＬＣの不揮発性半導体メモリ５ｃが選択される。
【０３０５】
しきい値ONSLCは、下記の式（６）で算出され、少数点以下は切り捨てとする。しきい値ONRAMは、３≦ONSLC≦５の範囲となる。
【０３０６】
ONSLC＝ｍｉｎ（９，（９／１００×メモリの使用率（％）＋３））  …（６）
この（６）式において、３は、しきい値ONSLCの最低値である。
【０３０７】
書き込みデータ１８１について、アクセス頻度と重要度とのうちの少なくとも一方が高く、カラーリングレベルが高い順に、揮発性半導体メモリ５ａ、ＳＬＣの不揮発性半導体メモリ５ｂ、ＭＬＣの不揮発性半導体メモリ５ｃが割り当てられる。
【０３０８】
揮発性半導体メモリ５ａの使用率が高いほど、揮発性半導体メモリ５ａにはデータが記憶されにくくなり、不揮発性半導体メモリ５ｂ，５ｃに記憶されやすくなる。
【０３０９】
ＳＬＣタイプの不揮発性半導体メモリ５ｂの使用率が高いほど、ＳＬＣの不揮発性半導体メモリ５ｂにはデータが記憶されにくくなり、ＭＬＣの不揮発性半導体メモリメモリ５ｃに記憶されやすくなる。
【０３１０】
図１７は、プロセスとオペレーティングシステム１３との関係の一例を示すブロック図である。
【０３１１】
プロセス３３は、プロセス生成時に要求される領域、ファイル３４に対応するファイルマップ用領域、プロセスによって動的に要求される領域のいずれかに記憶する。
【０３１２】
オペレーティングシステム１３は、カーネル内使用領域にデータを記憶する。
【０３１３】
オペレーティングシステム１３は、書き込みデータ１８１が、プロセス生成時に要求される領域、ファイルマップ用領域、プロセス３３によって動的に要求される領域、カーネル内使用領域のいずれの領域に記憶されるかなどに基づいて、書き込みデータ１８１に対するカラーリングレベルを求める。
【０３１４】
オペレーティングシステム１３は、揮発性半導体メモリ５ａとＳＬＣの不揮発性半導体メモリ５ｂとの使用率に基づいて、しきい値ONRAM，ONSLCを求める。
【０３１５】
そして、メモリ管理装置４及びオペレーティングシステム１３は、カラーリングレベルとしきい値ONRAM，ONSLCとの大小関係に基づいて、記憶先のメモリを選択する。
【０３１６】
以上説明した本実施の形態においては、混成メモリ５の耐久性、寿命、使用状況に基づく効率的なデータ配置を行うことができる。
【０３１７】
上記各実施の形態においては、混成メモリ５が主記憶装置として用いられる場合を例として説明している。しかしながら、混成メモリ５に代えて、単に不揮発性半導体メモリが主記憶装置として用いられる場合に、データ圧縮を行うか否か判断するとしてもよい。
【０３１８】
本発明は、上記実施の形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【符号の説明】
【０３１９】
１…情報処理装置、２ａ〜２ｃ…プロセッサ、３…バス、４…メモリ管理装置、５…混成メモリ、６ａ〜６ｃ…１次キャッシュメモリ、７ａ〜７ｃ…２次キャッシュメモリ、８ａ〜８ｃ…プロセス、９…処理部、１０…作業メモリ、１１…第１のレジスタ、１２…第２のレジスタ、１３…オペレーティングシステム、１４…メモリ使用情報、１５…メモリ固有情報、１６…アドレス変換テーブル、１７，３２…カラーリングテーブル、１８１〜１８ｎ…データ、１９１〜１９ｎ…データ本体、２０１〜２０ｎ…データ固有情報、２１…受付部、２２…圧縮判断部、２３…圧縮部、２４…領域選択部、２５ａ…アドレス情報更新部、２５ｂ…書き込み更新部、２５ｃ…読み出し更新部、２５ｄ…データ固有情報更新部、２６…書き込み部、２７…アドレス変換部、２８…読み出し部、２９…伸張判断部、３０…伸張部、３１…転送部。
【図１】
2011128792.tif 000003
【図２】
2011128792.tif 000004
【図３】
2011128792.tif 000005
【図４】
2011128792.tif 000006
【図５】
2011128792.tif 000007
【図６】
2011128792.tif 000008
【図７】
2011128792.tif 000009
【図８】
2011128792.tif 000010
【図９】
2011128792.tif 000011
【図１０】
2011128792.tif 000012
【図１１】
2011128792.tif 000013
【図１２】
2011128792.tif 000014
【図１３】
2011128792.tif 000015
【図１４】
2011128792.tif 000016
【図１５】
2011128792.tif 000017
【図１６】
2011128792.tif 000018
【図１７】
2011128792.tif 000019