(57)【要約】【課題】不揮発性半導体メモリの寿命を延ばすとともに、シーケンシャルデータのアクセス効率及び管理効率を向上させる。【解決手段】本発明の一態様に係るメモリ管理装置１２，１４は、プロセッサ２から不揮発性半導体メモリ３に書き込まれるデータが通常データの場合に、発生済みのアドレスの示す位置と通常データの書き込み位置が重ならないように第１の書き込みアドレスを発生させ、シーケンシャルデータの場合に、シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第２の書き込みアドレスを発生させる手段１６と、発生した書き込みの新しさを表わす順序情報を発生させる手段１７と、第１の書き込みアドレスが発生された場合に、第１の書き込みアドレスに対して、発生された順序情報を対応付けて通常データを書き込み、第２の書き込みアドレスが発生された場合に、第２の書き込みアドレスに対して、シーケンシャルデータをシーケンシャルに書き込む手段１８とを具備する。【選択図】      図１
2011154547.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、前記データが、連続的にアクセスされるシーケンシャルデータであるか、前記シーケンシャルデータではない通常データであるか判断する判断手段と、
前記判断手段によって前記データが前記通常データと判断された場合に、発生済みのアドレスの示す位置と前記通常データの書き込み位置が重ならないように第１の書き込みアドレスを発生させ、前記判断手段によって前記データが前記シーケンシャルデータと判断された場合に、前記シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第２の書き込みアドレスを発生させるアドレス発生手段と、
発生した書き込みの新しさを表わす順序情報を発生させる順序発生手段と、
前記アドレス発生手段によって前記第１の書き込みアドレスが発生された場合に、前記第１の書き込みアドレスに対して、前記順序発生手段によって発生された順序情報を対応付けて前記通常データを書き込み、前記アドレス発生手段によって前記第２の書き込みアドレスが発生された場合に、前記第２の書き込みアドレスに対して、前記シーケンシャルデータをシーケンシャルに書き込む書き込み制御手段と
を具備するメモリ管理装置。
【請求項２】
請求項１記載のメモリ管理装置において、
前記アドレス発生手段は、前記シーケンシャルデータを格納するための少なくとも一つのブロック領域の先頭に、前記シーケンシャルデータの先頭が格納されるように、前記第２の書き込みアドレスを発生させることを特徴とするメモリ管理方法。
【請求項３】
請求項１又は請求項２記載のメモリ管理装置において、
前記シーケンシャルデータに対する論理アドレスと物理アドレスと前記シーケンシャルデータであることを示すフラグとを関連付けて管理するメモリ管理ユニットをさらに具備するメモリ管理装置。
【請求項４】
請求項３記載のメモリ管理装置において、
前記メモリ管理ユニットは、さらに、前記シーケンシャルデータに対する論理アドレスと物理アドレスと前記シーケンシャルデータについて連続する数とを関連付けて管理することを特徴とするメモリ管理装置。
【請求項５】
請求項１乃至請求項４のいずれか１項に記載のメモリ管理装置において、
前記書き込み制御手段は、前記シーケンシャルデータを、前記シーケンシャルデータであることを示すフラグと関連付けて前記不揮発性半導体メモリに書き込むことを特徴とするメモリ管理装置。
【請求項６】
請求項１乃至請求項５のいずれか１項に記載のメモリ管理装置において、
前記アドレス発生手段は、前記プロセッサから前記不揮発性半導体メモリへの前記通常データの書き込みが発生すると、シーケンシャルにアドレスを発生させ、発生されたアドレスが未使用の場合に、当該発生されたアドレスを前記第１の書き込みアドレスとして選択し、前記発生されたアドレスが所定値に達すると、アドレス発生を再び初期値から行うことを特徴とするメモリ管理装置。
【請求項７】
請求項１乃至請求項６のいずれか１項に記載のメモリ管理装置において、
前記書き込み制御手段は、前記プロセッサにおける状態情報生成手段によって生成された状態情報を、前記順序発生手段によって発生された順序情報と対応付けて、前記不揮発性半導体メモリに書き込み、
前記プロセッサの復元時に、前記順序情報に基づいて、前記不揮発性半導体メモリから最新の状態情報を読み出し、当該最新の状態情報を用いて前記プロセッサの復元を行う復元手段をさらに具備する
ことを特徴とするメモリ管理装置。
【請求項８】
請求項７記載のメモリ管理装置において、
前記復元手段は、前記不揮発性半導体メモリに格納されているプログラムが前記プロセッサによって実行されて実現されることを特徴とするメモリ管理装置。
【請求項９】
請求項１乃至請求項８のいずれか１項に記載のメモリ管理装置において、
前記書き込み制御手段は、メモリ管理ユニットで管理されているメモリ管理情報を、前記順序発生手段によって発生された順序情報と対応付けて、前記不揮発性半導体メモリに書き込み、
前記プロセッサの復元時に、前記順序情報に基づいて、前記不揮発性半導体メモリから最新のメモリ管理情報を読み出し、当該最新のメモリ管理情報を用いて前記プロセッサの復元を行う復元手段をさらに具備する
ことを特徴とするメモリ管理装置。
【請求項１０】
請求項１乃至請求項９のいずれか１項に記載のメモリ管理装置において、
前記書き込み制御手段は、前記不揮発性半導体メモリの領域又に関する書き込み回数情報を書き込み、
前記書き込み回数情報の示す書き込み回数がしきい値を超えた領域に対する書き込みを禁止する書き込み回数チェック手段をさらに具備する
ことを特徴とするメモリ管理装置。
【請求項１１】
請求項１乃至請求項１０のいずれか１項に記載のメモリ管理装置において、
前記不揮発性半導体メモリに対するエラーの検出を行い、エラー訂正可能な場合に、前記エラーを訂正し、エラー訂正可能でない場合に、前記エラーの発生した領域に対する書き込みを禁止する異常検出手段をさらに具備する
ことを特徴とするメモリ管理装置。
【請求項１２】
請求項１乃至請求項１１のいずれか１項に記載のメモリ管理装置において、
前記不揮発性半導体メモリは、複数の種別の領域を含み、
前記アドレス発生手段は、前記不揮発性半導体メモリにおける前記複数の種別の領域のうち前記データの種別に応じた領域を選択し、選択された領域内で、書き込みアドレスの選択を行う
ことを特徴とするメモリ管理装置。
【請求項１３】
請求項１乃至請求項１２のいずれか１項に記載のメモリ管理装置において、
前記プロセッサから前記不揮発性半導体メモリへのアクセスの性能低下を検出する検出手段と、
前記検出手段によって性能低下が検出された場合に、ガーベージコレクション処理を実行する性能低下抑制手段と
を具備することを特徴とするメモリ管理装置。
【請求項１４】
請求項１乃至請求項１３のいずれか１項に記載のメモリ管理装置において、
前記不揮発性半導体メモリと、前記不揮発性半導体メモリと種別の異なる他の半導体メモリとを具備する混成メモリへのアクセスを管理し、
前記アドレス決定手段は、前記混成メモリに具備されている前記不揮発性半導体メモリと前記他の半導体メモリとのうち、信頼性又は耐久性の高い第１のメモリへのアクセス回数又はアクセス頻度が、信頼性又は耐久性の低い第２のメモリへのアクセス回数又はアクセス頻度よりも多くなるように、記憶先のメモリを選択する
ことを特徴とするメモリ管理装置。
【請求項１５】
プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、前記データが、連続的にアクセスされるシーケンシャルデータであるか、前記シーケンシャルデータではない通常データであるか判断し、
前記データが前記通常データと判断された場合に、発生済みのアドレスの示す位置と前記通常データの書き込み位置が重ならないように第１の書き込みアドレスを発生させ、前記データが前記シーケンシャルデータと判断された場合に、前記シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第２の書き込みアドレスを発生させ、さらに、発生した書き込みの新しさを表わす順序情報を発生させ、
前記第１の書き込みアドレスが発生された場合に、前記第１の書き込みアドレスに対して、発生された前記順序情報を対応付けて前記通常データを書き込み、前記第２の書き込みアドレスが発生された場合に、前記第２の書き込みアドレスに対して、前記シーケンシャルデータをシーケンシャルに書き込む
ことを特徴とするメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリへのアクセスを管理するメモリ管理装置及びメモリ管理方法に関する。
【背景技術】
【０００２】
従来の情報処理装置においては、プロセッサの主記憶装置（メインメモリ）として、例えばDynamic Random Access Memory（ＤＲＡＭ）などの揮発性半導体メモリが使用されている。さらに、従来の情報処理装置では、揮発性半導体メモリと組み合わせて２次記憶装置が使用される。
【０００３】
特許文献１（特開平７−１４６８２０）には、情報処理装置の主記憶装置としてフラッシュメモリを採用する技術が開示されている。特許文献１において、システムのメモリバスには、揮発性メモリであるキャッシュメモリを介して、フラッシュメモリが接続される。キャッシュメモリには、このキャッシュメモリに格納されているデータのアドレス又はアクセス履歴などの情報を記録するアドレスアレイが設けられる。コントローラは、アクセス先のアドレスを参照し、キャッシュメモリ又はフラッシュメモリのデータをメモリバスに供給し、あるいは、メモリバスのデータを格納する。
【０００４】
特許文献２（特開２００１−２６６５８０号公報）においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。
【０００５】
この特許文献２の半導体メモリ装置は、ランダムアクセスメモリチップと、前記ランダムアクセスメモリチップを備えたパッケージを含む。前記パッケージは、前記ランダムアクセスメモリチップを外部装置に電気的に連結する複数のピンを有する。複数のピンは、前記ランダムアクセスメモリと、電気的に消去及びプログラム可能な不揮発性半導体メモリとに、共通にメモリ機能を提供する。前記複数のピンの各々は、不揮発性半導体メモリの対応するピンの位置に配列されている。
【０００６】
従来の情報処理装置では、メインメモリは不揮発性の記憶装置であるため、電源を切るとメインメモリの記憶内容は消えてしまう。このため、従来の情報処理装置では、毎回ブート時に、システムの立ち上げが必要であり、プログラム又はデータを２次記憶装置からメインメモリに読み込む必要があり、処理を実行するまでに時間を要していた。
【０００７】
また、従来の情報処理装置では、電源が切れた場合にメインメモリの記憶内容が保存されないため、従来の情報処理装置が正しくシャットダウンしなかった場合に、データ、システム、プログラムが破壊される可能性がある。
【０００８】
上記特許文献１，２においては、フラッシュメモリに対してどのようにデータ又はプログラムを格納するかについて具体的に説明されていない。また、不揮発性半導体メモリの寿命を長くする具体的な手法は、検討されていない。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平７−１４６８２０号公報
【特許文献２】特開２００１−２６６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、シーケンシャルデータのアクセス効率を向上させるメモリ管理装置及びメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様に係るメモリ管理装置は、プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、前記データが、連続的にアクセスされるシーケンシャルデータであるか、前記シーケンシャルデータではない通常データであるか判断する判断手段と、前記判断手段によって前記データが前記通常データと判断された場合に、発生済みのアドレスの示す位置と前記通常データの書き込み位置が重ならないように第１の書き込みアドレスを発生させ、前記判断手段によって前記データが前記シーケンシャルデータと判断された場合に、前記シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第２の書き込みアドレスを発生させるアドレス発生手段と、発生した書き込みの新しさを表わす順序情報を発生させる順序発生手段と、前記アドレス発生手段によって前記第１の書き込みアドレスが発生された場合に、前記第１の書き込みアドレスに対して、前記順序発生手段によって発生された順序情報を対応付けて前記通常データを書き込み、前記アドレス発生手段によって前記第２の書き込みアドレスが発生された場合に、前記第２の書き込みアドレスに対して、前記シーケンシャルデータをシーケンシャルに書き込む書き込み制御手段とを具備する。
【００１２】
なお、上記の態様はメモリ管理装置として表現されている。しかしながら、これに限らず、上記の態様は、メモリ管理方法、情報処理装置などで表現されるとしてもよい。
【発明の効果】
【００１３】
本発明においては、不揮発性半導体メモリの寿命を延ばすとともに、シーケンシャルデータのアクセス効率及び管理効率を向上させる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の形態に係る情報処理装置の詳細構成の一例を示すブロック図。
【図２】第１の実施の形態に係る情報処理装置におけるライトバックの一例を示すフローチャート。
【図３】第１の実施の形態に係る情報処理装置におけるフェッチの一例を示すフローチャート。
【図４】第１の実施の形態に係る情報処理装置の復元処理の一例を示すフローチャート。
【図５】第１の実施の形態に係る情報処理装置におけるメモリ管理ユニットのエントリの登録処理の一例を示すフローチャート。
【図６】通常データ格納領域と、シーケンシャルデータ格納領域とを区別した第１の実施の形態に係る情報処理装置の一例を示すブロック図。
【図７】本発明の第２の実施の形態に係る連続してアクセスすることが効果的な複数のメモリユニットを備える不揮発性メインメモリの一例を示すブロック図。
【図８】第２の実施の形態に係る不揮発性メインメモリの論理的なデータ格納位置と物理的なデータ格納位置との関係の第１の例を示すブロック図。
【図９】第２の実施の形態に係る不揮発性メインメモリの論理的なデータ格納位置と物理的なデータ格納位置との関係の第２の例を示すブロック図。
【図１０】第２の実施の形態に係る不揮発性メインメモリの論理的なデータ格納位置と物理的なデータ格納位置との関係の第３の例を示すブロック図。
【図１１】本発明の第３の実施の形態に係る情報処理装置の構成の一例を示すブロック図。
【図１２】本発明の第４の実施の形態に係る情報処理装置の構成の一例を示すブロック図。
【図１３】本発明の第５の実施の形態に係るプログラム、データ、状態情報が複数のデータ部（格納領域）に分けて格納される不揮発性メインメモリの一例を示すブロック図。
【図１４】本発明の第６の実施の形態に係る情報処理装置の構成の一例を示すブロック図。
【図１５】本発明の第７の実施の形態に係る混成メモリを含む情報処理装置の一例を示すブロック図。
【図１６】第７の実施の形態に係る情報処理装置に用いられるプログラム及びデータの一例を示すブロック図。
【発明を実施するための形態】
【００１５】
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
【００１６】
（第１の実施の形態）
本実施の形態に係る情報処理装置においては、主記憶装置（メインメモリ）として不揮発性の半導体メモリ（不揮発性メインメモリ）を用いる。
【００１７】
本実施の形態において、情報処理装置は、例えばMicro Processing Unit（ＭＰＵ）などのようなプロセッサと、不揮発性の半導体メモリであるメインメモリとを含む。
【００１８】
本実施の形態において、メモリに対するアクセスとは、メモリに対する読み出し、書き込み、消去のうちの少なくとも一つを含む。
【００１９】
本実施の形態においては、データ、プログラム、又は、データとプログラムの組合せがアクセスされるが、以下においては、説明を簡略化するために主にデータがアクセスされる場合を例として説明する。
【００２０】
図１は、本実施の形態に係る情報処理装置の詳細構成の一例を示すブロック図である。
【００２１】
情報処理装置１は、プロセッサ２と不揮発性メインメモリ３とを具備する。プロセッサ２は、図示しない外部の２次記憶装置、外部アクセス装置、Ｉ／Ｏ装置などの各種装置をアクセス可能である。なお、２次記憶装置、外部アクセス装置、Ｉ／Ｏ装置などの装置が、情報処理装置１の一部として備えられるとしてもよい。
【００２２】
不揮発性メインメモリ３としては、例えばフラッシュメモリが用いられる。フラッシュメモリとしては、例えば、ＮＡＮＤ型、ＮＯＲ型などのフラッシュメモリを適用可能である。また、不揮発性メインメモリ３として、ＰＲＡＭ(Phase change memory)、ＲｅＲＡＭ(Resistive Random access memory)、ＭＲＡＭ（Magnetoresistive Random Access Memory）のような不揮発性の半導体メモリを用いてもよい。
【００２３】
不揮発性メインメモリ３内に、コアプログラム７とメインメモリとして使用されるデータ部２５とが含まれており、データ部２５には、エントリごとに、順序情報１９、Ｖフラグ２０、データ２１又は状態情報２４、状態情報フラグ２２、ＭＭＵ情報２３、Ｓフラグ２６が含まれる。データ部２５の構成についての詳細は後述する。
【００２４】
不揮発性メインメモリ３における上記の各種のデータ２１は、例えば、プロセッサ２、又は、図示しない外部の２次記憶装置、外部アクセス装置、Ｉ／Ｏ装置から不揮発性メインメモリ３に格納される。
【００２５】
プロセッサ２は、少なくとも一つの演算コア（この図１の例では４つ）９１〜９４、キャッシュメモリ１０、ライトバッファ１１、メモリ管理ユニット（ＭＭＵ）１２を具備する。プロセッサ２は、さらに、状態情報生成部（例えばＰＳＷ制御部）１３、アクセス制御部１４を具備する。
【００２６】
本実施の形態に係るメモリ管理装置２０１は、メモリ管理ユニット１２、アクセス制御部１４を具備する。なお、メモリ管理装置２０１は、さらに、キャッシュメモリ１０、ライトバッファ１１などを具備するとしてもよい。
【００２７】
演算コア９１〜９４は、キャッシュメモリ１０、不揮発性メインメモリ３にアクセスしつつ、プログラムを実行する。演算コア９１〜９４は、並列に動作可能である。
【００２８】
キャッシュメモリ１０は、演算コア９１〜９４がアクセスするデータをキャッシュライン単位で格納する。キャッシュメモリ１０のラインサイズは、不揮発性メインメモリ３のデータの書き込み、読み出しサイズの単位であるページサイズ、又はページサイズの倍数とする。ページサイズの倍数のデータの単位を、ブロック単位とし、ブロック単位のサイズをブロックサイズとする。
【００２９】
キャッシュメモリ１０の出力段にはライトバッファ１１が設けられている。キャッシュメモリ１０から不揮発性メインメモリ３に書き込まれる書き込み対象データは、ライトバッファ１１経由で、不揮発性メインメモリ３に書き込まれる。
【００３０】
ライトバッファ１１は、キャッシュメモリ１０からの、書き込み対象データを蓄積する。ライトバッファ１１に蓄積されている書き込み対象データのサイズが、不揮発性メインメモリ３に書き込みを行うために効率的なサイズになると、この蓄積されたデータは、不揮発性メインメモリ３に書き込まれる。
【００３１】
上記のように、本実施の形態においては、キャッシュメモリ１０のラインサイズを不揮発性メインメモリ３のページサイズ、ページサイズの倍数、又はブロックサイズとする。これにより、キャッシュメモリ１０から不揮発性メインメモリ３へのデータの書き込み等の処理を効率化でき、ハードウェアの削減を図ることができる。
【００３２】
メモリ管理ユニット１２は、エントリ単位で、キャッシュメモリ１０及び不揮発性メインメモリ３についての論理アドレスと物理アドレスとを関係付けたアドレス変換情報１５と、連続ブロックフラグ２７、連続ブロック数２８を管理する。アドレス変換情報１５は、論理アドレスと物理アドレスとの間の変換を行うために用いられる。
【００３３】
状態情報生成部１３は、所定の又は任意のタイミングで、プロセッサの状態及びプログラムの状態を表わす状態情報（例えばプログラム状態語：ＰＳＷ）を求める。状態情報には、汎用レジスタ、制御レジスタ、プログラムカウンタなどのプロセッサ２の動作状態を復元するために必要な情報が含まれている。例えば、状態情報生成部１３は、所定時間を経過する毎に、状態情報を生成する。また、例えば、状態情報生成部１３は、所定の回数、プロセッサ２から不揮発性メインメモリ３への書き込みが発生するたびに、状態情報を生成する。さらに、状態情報生成部１３は、オペレーティングシステム等のソフトウェアからの指示があった場合に、状態情報を生成する。
【００３４】
アクセス制御部１４は、プロセッサ２から不揮発性メインメモリ３へのデータの書き込み及び読み出し、不揮発性メインメモリ３におけるデータの消去など、プロセッサ２と不揮発性メインメモリ３との間におけるアクセスを制御する。本実施の形態において、不揮発性メインメモリ３への書き込み及び読み出しは、例えばページ単位で行われ、消去は例えばブロック単位で行われるとする。しかし、これには限定されず、他のデータサイズによって書き込み、読み出し、消去が行われるとしてもよい。
【００３５】
本実施の形態において、アクセス制御部１４は、アドレス発生部１６、順序発生部１７、書き込み制御部１８を具備する。
【００３６】
アドレス発生部１６は、プロセッサ２から不揮発性メインメモリ３へのデータの書き込みが発生すると、所定の規則にそって、発生済みのアドレスの示す位置と書き込み対象のデータの書き込み位置が重ならないように、書き込みアドレスを発生させる。
【００３７】
書き込みアドレスの発生方法の例として、アドレス発生部１６は、所定の初期値から順に書き込み先となるアドレスの値を増加させていき、所定の最終値（初期値より大）に達すると、再び、所定の初期値から順に書き込み先となるアドレスの値を増加させていく。
【００３８】
また、書き込みアドレスの発生方法の別の例として、アドレス発生部１６は、所定の初期値から順に書き込み先となるアドレスの値を減少させていき、所定の最終値（初期値より小）に達すると、再び、所定の初期値から順に書き込み先となるアドレスの値を減少させていく。
【００３９】
さらに、書き込みアドレスの発生方法の別の例として、アドレス発生部１６は、１巡目において数スペースを空けて（例えば所定の間隔で）順に書き込み先のアドレスの値を発生させ、２巡目において１巡目で書き込みのなされなかった未使用領域において書き込み先のアドレスの値を順に発生させ、以下同様に、ｎ巡目においてｎ−１巡目までで書き込みのなされなかった未使用領域において書き込み先のアドレスの値を順に発生させる動作を繰り返し、利用可能な未使用領域が所定値又は所定割合以下になった場合（例えば、利用可能な未使用領域がなくなった場合）に、上記の１巡目から再び同様の動作を繰り返す。
【００４０】
さらに、書き込みアドレスの発生方法の別の例として、アドレス発生部１６が、メモリ管理ユニット１２のアドレス変換情報１５を参照して、アドレス変換情報１５で未使用のアドレス（物理アドレス）を、書き込みアドレスとして選択し、発生させる。
【００４１】
以上のような書き込みアドレスの発生方法を用いることにより、発生済みのアドレスの示す位置と書き込み対象のデータの書き込み位置の重なりが少ない書き込みが可能となる。このアドレス発生部１６の動作によって追記式の書き込みが実行される。ここで、追記式とは、後から付け足して書き加えていく方式であるとする。
【００４２】
順序発生部１７は、書き込みの新しさを判断するための順序情報を発生させる。この順序情報を用いることにより、追記式によりあるデータの値を更新した場合であってもこのデータの最新の値を求めることが可能になる。本実施の形態において、順序発生部１７は、不揮発性メインメモリ３への書き込みが発生するたびに、カウントアップを実行し、このカウント値を順序情報として用いる。この順序情報を書き込み対象のデータと関係付けて不揮発性メインメモリ３に格納することで、例えば変数名などのような識別情報が同じデータに関する書き込みが不揮発性メインメモリ３の複数のエントリになされている場合に、順序情報の大きいデータが最新であることを判断可能となる。
【００４３】
書き込み制御部１８は、プロセッサ２から不揮発性メインメモリ３への書き込み処理を制御する。詳細は後述するが、不揮発性メインメモリ３は、データをエントリ単位で管理する。書き込み制御部１８は、書き込み時に、書き込み対象データが書き込まれたエントリのＶ（Valid）フラグを１にセットする。このＶフラグを用いることで、書き込み対象のエントリが有効か無効かを判断可能となる。また、書き込み制御部１８は、不揮発性メインメモリ３上のエントリのＶフラグが１であってもメモリ管理ユニット１２で使用されていないと判断された場合には、このエントリに格納されているデータを消去し、Ｖフラグを０とする。さらに、書き込み制御部１８は、この消去を行ったエントリに再度書き込みを行う場合に、再度書き込みを行った上で、このエントリのＶフラグを１とする。
【００４４】
書き込み制御部１８は、所定数又は所定割合以上のエントリのＶフラグが１となったと判断した場合（例えば全てのＶフラグが１となった場合）に、例外処理を発生させ、ソフトウェアにより不揮発性メインメモリ３における不要エントリのクリーンアップを行い、該当する不要部分を消去してＶフラグを０とする。
【００４５】
本実施の形態において、オペレーティングシステムは、プロセッサ２から不揮発性メインメモリ３に書き込まれるデータ又はプログラムが発生した場合に、この書き込み対象のデータ又はプログラムが、シーケンシャルデータ又はシーケンシャルプログラムであるか、通常データ又は通常プログラムであるか判断する。
【００４６】
シーケンシャルデータとは、連続的にアクセスされる一連のデータであり、シーケンシャルプログラムとは、連続的に実行される一連のプログラムであるとする。
【００４７】
シーケンシャルデータとしては、例えば、ストリームデータ（映像）、ログデータなどがある。ストリームデータについては、読み出しが中心であり、書き込みがなされる頻度は少ない。これとは逆に、ログデータは、継続的に書き込みが行われるデータであり、読み出しが行われる頻度は少ない。
【００４８】
ストリームデータ及びログデータの判別は、オペレーティングシステムによって行われ、ファイルの拡張子の検出、又はアプリケーションからメモリ割付ＡＰＩ（Application Program Interface）が呼ばれた場合にデータ種別が指定されることにより判別される。なお、ストリームデータが編集可能な設定の場合などには、このストリームデータはシーケンシャルデータとしてメモリ割付されない場合がある。
【００４９】
シーケンシャルデータの判別の方法として、オペレーティングシステムが、過去のアクセス履歴に基づいてシーケンシャルにアクセスされる頻度の高いデータを検出し、この検出されたデータをシーケンシャルデータと判別してもよい。
【００５０】
シーケンシャルデータが判別された場合、例えば、オペレーティングシステムは、アドレス変換情報１５に対して、検出されたシーケンシャルデータに対応するエントリの連続ブロックフラグ２７を、シーケンシャルデータ又はシーケンシャルプログラムであることを示すフラグにセットする。ここで、連続ブロックフラグ２７は、対応するエントリがシーケンシャルデータを格納するブロックのエントリであることを表すフラグである。
【００５１】
通常データ及び通常プログラムは、それぞれ、シーケンシャルデータではないデータ及びシーケンシャルデータではないプログラムである。
【００５２】
以下においては、シーケンシャルデータの場合について説明するが、シーケンシャルプログラムについても、シーケンシャルデータと同様に扱うことができる。
【００５３】
また、本実施の形態では、シーケンシャルデータをブロック単位で管理する場合を例に説明するが、例えばページ単位など他のサイズで管理する場合も同様である。
【００５４】
アドレス発生部１６は、書き込まれるデータがオペレーティングシステムによって通常データと判断された場合に、発生済みのアドレスの示す位置と通常データの書き込み位置が重ならないように書き込みアドレスを発生させる。また、アドレス発生部１６は、書き込まれるデータがオペレーティングシステムによってシーケンシャルデータと判断された場合に、シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す書き込みアドレスを発生させる。アドレス発生部１６は、シーケンシャルデータがブロック領域の先頭から格納されるように、書き込みアドレスを発生させる。ここで、ブロック領域とは、ブロック単位のデータを格納するメモリの一領域である。ブロック領域は、ブロック単位で格納するデータのサイズにより決まる任意のサイズであり、例えば、１ＭＢ程度である。ブロック単位は、ベージサイズの整数倍の単位である。また、不揮発性メインメモリ３としてＮＡＮＤ型フラッシュメモリを用いる場合、例えば、本実施の形態のブロック領域のブロック単位を、ＮＡＮＤ型フラッシュメモリのデータの消去単位である、所謂「ブロック単位」としてもよい。
【００５５】
書き込み制御部１８は、不揮発性メインメモリ３への書き込み対象のデータの書き込み時に、アドレス発生部１６によって発生されたアドレスにより指定される位置に、順序発生部１７によって発生された順序情報（カウンタ値）１９、Ｖフラグ２０「１」、書き込み対象のデータ２１、状態情報フラグ２２「０」、ＭＭＵ情報２３、Ｓフラグ２６「１」又は「０」を書き込む。
【００５６】
ここで、状態情報フラグ２２は、当該エントリが状態情報の書き込みのためのエントリであるか否かを表わす情報である。該当エントリが状態情報の書き込みである場合には、状態情報フラグ２２には１がセットされ、該当エントリが状態情報の書き込みでない場合には、状態情報フラグ２２には０がセットされる。
【００５７】
ＭＭＵ情報２３は、ＭＭＵ１２で管理されている各種情報であり、例えばアドレス変換情報１５、連続ブロックフラグ２７、連続ブロック数２８を含む。
【００５８】
書き込み制御部１８は、状態情報生成部１３によって新規の状態情報が発生された場合には、不揮発性メインメモリ３に対して、発生された状態情報２４の書き込みを行う。この状態情報２４の書き込み時は、書き込み制御部１８は、アドレス発生部１６によって発生されたアドレスによって指定される位置に、順序発生部１７によって発生された順序情報１９、Ｖフラグ２０「１」、状態情報２４、状態情報フラグ２２「１」、ＭＭＵ情報２３、Ｓフラグ２６を書き込む。
【００５９】
書き込み制御部１８は、アドレス発生部１６によって通常データの書き込みアドレスが発生された場合に、発生された書き込みアドレスによって指定される位置に対して、順序発生部１７によって発生された順序情報を対応付けて通常データを不揮発性メインメモリ３に書き込む。
【００６０】
また、書き込み制御部１８は、アドレス発生部１６によってシーケンシャルデータの書き込みアドレスが発生された場合に、発生された書き込みアドレスに対して、順序発生部１７によって発生された順序情報を対応付けてシーケンシャルデータを不揮発性メインメモリ３にシーケンシャルに書き込む。
【００６１】
ここで、書き込み制御部１８は、シーケンシャルデータの書き込みアドレスに基づいて、シーケンシャルデータを、不揮発性メインメモリ３のブロック領域の先頭から連続するように書き込む。
【００６２】
書き込み制御部１８は、シーケンシャルデータをすべて連続して格納できない場合には、シーケンシャルデータを複数のブロック領域に亘って書き込み、この複数のブロック領域が連続的な配置となるように書き込む。さらに、複数のブロック領域内でシーケンシャルデータが連続となるように書き込む。
【００６３】
そして、書き込み制御部１８は、シーケンシャルデータが不揮発性メインメモリ３のブロック領域の先頭から連続的に書き込まれる場合に、このシーケンシャルデータを格納する不揮発性メインメモリ３のブロック領域にＳフラグ２６として１を関係付ける。書き込み制御部１８は、不揮発性メインメモリ３において複数のブロック領域に連続してシーケンシャルデータが書き込まれる場合には、このシーケンシャルデータが連続的に書き込まれている不揮発性メインメモリ３の複数のブロック領域に対して、Ｓフラグ２６「１」を関係付ける。
【００６４】
Ｓフラグ２６は、不揮発性メインメモリ３に書き込まれたデータがシーケンシャルデータであるか否かを判断するための情報であり、１の場合にはシーケンシャルデータであることを表し、０の場合にはシーケンシャルデータでないことを表す。
【００６５】
アクセス制御部１４は、プロセッサ２が不揮発性メインメモリ３から通常データを読み出す場合、メモリ管理ユニット１２のアドレス変換情報１５に基づいて、論理アドレスを不揮発性メインメモリ３の物理アドレスに変換する。そして、アクセス制御部１４は、物理アドレスに基づいて、不揮発性メインメモリ３から通常データを読み出す。
【００６６】
アクセス制御部１４は、プロセッサ２が不揮発性メインメモリ３からシーケンシャルデータを読み出す場合、メモリ管理ユニット１２のアドレス変換情報１５に基づいて、論理アドレスを不揮発性メインメモリ３の物理アドレスに変換する。加えて、アクセス制御部１４は、アドレス変換情報１５、連続ブロックフラグ２７、連続ブロック数２８、不揮発性メインメモリ３のＳフラグ２６に基づいて、不揮発性メインメモリ３において物理アドレスの示す位置から連続的に格納されているシーケンシャルデータを、順次読み出す。
【００６７】
以下に、本実施の形態に係るアドレス変換情報１５によるシーケンシャルデータの取り扱い例についてより詳細に説明する。
【００６８】
上述したように、情報処理装置１は、シーケンシャルデータを、可能な限りブロック領域の先頭から連続して格納する。
【００６９】
シーケンシャルデータが、ブロック領域の先頭から連続する複数のブロック領域に亘って格納された場合に、これらの複数の連続するブロック領域に関するＳフラグは１に設定される。
【００７０】
シーケンシャルデータが連続した複数のブロック領域に亘って格納される場合、メモリ管理ユニット１２は、シーケンシャルデータのアドレス変換情報１５を、シーケンシャルデータを格納する複数ブロック領域単位で管理する。また、別の管理方法として、メモリ管理ユニット１２は、シーケンシャルデータのアドレス変換情報１５を、ページ又はブロック単位で管理するとしてもよい。
【００７１】
例えば、シーケンシャルデータが複数の連続するブロック領域に亘って格納される場合に、メモリ管理ユニット１２は、シーケンシャルデータのアドレス変換情報１５を１エントリで管理し、このエントリの連続ブロックフラグ２７に１を設定するとともに、連続するブロック数（サイズ）を設定する。
【００７２】
ここで、連続ブロックフラグ２７は、アクセス変換情報１５のエントリが、シーケンシャルデータを格納する複数ブロック領域についての情報か否か判断するために用いられる情報である。連続ブロックフラグ２７は、１の場合には、シーケンシャルデータに関するエントリであることを表し、０の場合には、シーケンシャルデータではないデータに関するエントリであることを表す。連続ブロック数２８は、シーケンシャルデータを連続して格納するブロック領域の数である。
【００７３】
また、本実施の形態において、アクセス制御部１４は、連続ブロック数２８を用いなくても、例えば、不揮発性メインメモリ３におけるＳフラグ１が連続して１であり続ける間、シーケンシャルデータが連続したブロック領域に格納されていると判断してもよい。ただし、この場合には、シーケンシャルデータを途中からアクセスする場合であっても、シーケンシャルデータを最初から辿る必要がある。
【００７４】
このように、シーケンシャルデータが、不揮発性メインメモリ３の連続する複数のブロック領域に格納される場合、アドレス変換情報１５において、シーケンシャルデータが格納されている不揮発性メインメモリ３の複数ブロック領域をアドレス変換情報１５の１エントリで管理することにより、アドレス変換情報１５の使用量（エントリ数）を減らすことができる。
【００７５】
アクセス制御部１４は、アドレス変換情報１５において論理アドレスの示すエントリの連続ブロックフラグ２７が１の場合、シーケンシャルデータに対するアクセスであると認識し、アクセス対象のシーケンシャルデータが格納されているブロック領域数を連続ブロック数２８に基づいて認識する。
【００７６】
そして、アクセス制御部１４は、物理アドレスと連続ブロック数２８に基づいて、不揮発性メインメモリ３に格納されているシーケンシャルデータを順次読み出す。
【００７７】
本実施の形態において、アクセス制御部１４は、シーケンシャルデータを連続して格納するブロック領域に対するガーベージコレクションが発生した場合に、この移動対象となった連続のブロック領域の記憶内容を、可能な限り、連続する他のブロック領域に移動する。
【００７８】
図２は、本実施の形態に係る情報処理装置１におけるライトバックの一例を示すフローチャートである。
【００７９】
キャッシュメモリ１０のデータは、演算コア９１〜９４により更新されるため、定期的にキャッシュメモリ１０のキャッシュラインを不揮発性メインメモリ３のエントリに書き戻す、ライトバックが必要となる。以下において、本実施形態の情報処理装置１のライトバックの処理工程について説明する。本実施の形態では不揮発性メインメモリ３へのキャッシュラインの書き込みは、上述のように追記式である。このため、本実施の形態のライトバックでは、キャッシュメモリ１０のキャッシュラインは、アドレス発生部１６により発生される不揮発性メインメモリ３の未使用のアドレスの示す位置に書き戻される。
【００８０】
ライトバックが実行される場合、ステップＳ１において、アクセス制御部１４のアドレス発生部１６は、メモリ管理ユニット１２を参照し、発生されたアドレスが未使用か否か判断する。
【００８１】
発生されたアドレスが使用中の場合、ステップＳ２において、アドレス制御部１４のアドレス発生部１６は、次のアドレスを発生させ、処理は、上記ステップＳ１に戻る。これにより、現在使用中のページは新しいページで上書きされないことになる。不揮発性メインメモリ３における書き込み対象のアドレスは、次の空いているエントリのアドレスまでスキップされる。なお、ステップＳ１，Ｓ２のように、ライトバックが開始されてから未使用のアドレスを求めるのではなく、予め次の未使用のアドレスを検出しておくとしてもよい。
【００８２】
発生されたアドレスが使用中でない場合、ステップＳ３において、書き込み制御部１８は、ライトバック対象のキャッシュラインを、不揮発性メインメモリ３の未使用であり発生されたアドレスの示す位置に書き戻す。
【００８３】
この時、書き込み制御部１８は、メモリ管理ユニット１２のアドレス変換情報１５を、書き戻し後の状態を表わすように更新し、ライトバック対象のページについて、現在の順序情報１９、メモリ管理ユニット１２のアドレス変換情報１５を含むＭＭＵ情報２３を、不揮発性メインメモリ３に書き込む。また、書き込み制御部１８は、Ｖフラグ２０を１とし、状態情報フラグ２２を０とし、Ｓフラグ２６を０とし、不揮発性メインメモリ３に書き込む。
【００８４】
これにより、順序情報１９、Ｖフラグ２０、ページ２１、状態情報フラグ２２、ＭＭＵ情報２３、Ｓフラグ２６が、発生したアドレスによって示される不揮発性メインメモリ３の位置に書き込まれ、ライトバックが実行される。
【００８５】
上記ステップＳ３の書き込み処理の後、アクセス制御部１４のアドレス発生部１６は、ステップＳ４において、新たなアドレスを発生させ、順序発生部１７は、新たな順序情報を発生させる。
【００８６】
状態情報２４を不揮発性メインメモリ３に書き込む場合において、キャッシュメモリ１０中にダーティラインが存在する場合には、まずこのダーティラインが不揮発性メインメモリ３に書き戻される。ダーティラインとは、メインメモリにデータの内容が反映されておらず、メインメモリとキャッシュメモリとの間でデータの内容が整合していないキャッシュメモリのキャッシュラインをいう。
【００８７】
さらに、外部の２次記憶装置、外部アクセス装置、Ｉ／Ｏ装置などの装置において異常が発生している場合には、状態情報生成部１３は、ＳＹＮＣなどの操作により、これらの装置を復元可能な状態とし、その後状態情報２４を生成する。そして、書き込み制御部１８が、生成された状態情報２４の書き込み処理を行う。
【００８８】
図３は、本実施の形態に係る情報処理装置１におけるフェッチの一例を示すフローチャートである。
【００８９】
ステップＴ１において、メモリ管理ユニット１２は、アクセス対象のデータがキャッシュメモリ１０に格納されているか（キャッシュヒットか）否か判断する。
【００９０】
アクセス対象のデータがキャッシュメモリ１０に格納されている場合、ステップＴ２において、演算コア９１〜９４は、キャッシュメモリ１０上のデータをロードする。
【００９１】
アクセス対象のデータがキャッシュメモリ１０に格納されていない場合、ステップＴ３において、メモリ管理ユニット１２は、メモリ管理ユニット１２内に、このアクセス対象のデータに関するアドレス変換情報１５が存在するか否か判断する。
【００９２】
メモリ管理ユニット１２のアドレス変換情報１５にアクセス対象データのアドレスに関するエントリが存在する場合、ステップＴ４において、メモリ管理ユニット１２は、アドレス変換情報１５のアクセス対象データのエントリを参照し、論理アドレスを物理アドレスに変換する。
【００９３】
メモリ管理ユニット１２のアドレス変換情報１５にアクセス対象データのアドレスに関するエントリが存在しない場合、ステップＴ５において、例外処理が実行される。
【００９４】
例外処理が実行されると、ステップＴ６において、アクセス制御部１４は、ソフトウェア処理により、アクセス対象データを、例えば、２次記憶装置４、外部アクセス装置５、Ｉ／Ｏ装置６などの装置から不揮発性メインメモリ３にロードする。メモリ管理ユニット１２は、ロード後のエントリをアドレス変換情報１５にセットし、アドレス変換情報１５の更新を行う。その後処理は、ステップＴ４に移る。
【００９５】
ステップＴ４の後、ステップＴ７において、アクセス制御部１４は、不揮発性メインメモリ３の物理アドレスの位置に格納されているデータを読み出し、キャッシュメモリ１０へロードする。また、アクセス制御部１４は、必要であれば、直接、読み出したデータを演算コア９１〜９４にフィードする。
【００９６】
図４は、本実施の形態に係る情報処理装置１の復元処理（再構成）の一例を示すフローチャートである。
【００９７】
例えば、情報処理装置１の電源が再投入されると、プロセッサ２は、不揮発性メインメモリ３に格納されているコアプログラム７を読み出し、コアプログラム７を実行し、復元を行う。コアプログラム７は、演算コア９１〜９４のうちの少なくとも一つによって実行される。以下においては、演算コア９１においてコアプログラム７が実行される場合を例として説明する。
【００９８】
ステップＵ１において、コアプログラム７を実行する演算コア９１は、不揮発性メインメモリ３に格納されたデータ部２５のエントリを順に読み出す。
【００９９】
そして、コアプログラム７を実行する演算コア９１は、Ｖフラグ２０が「１」のエントリの中から、順序情報１９が最新のエントリを求め、この最新のエントリのアドレス（最新のアドレス）を求める。さらに、コアプログラム７を実行する演算コア９１は、状態情報フラグ２２が「１」のエントリの中から、順序情報１９が最新のエントリの状態情報２４（最新の状態情報）、順序情報１９が最新のエントリのＭＭＵ情報２３（最新のＭＭＵ情報）を求める。
【０１００】
ステップＵ２において、コアプログラム７を実行する演算コア９１は、Ｖフラグ２０が「１」で順序情報１９が最新のエントリのアドレスに対する次のアドレスを、アドレス発生部１６に発生させる。
【０１０１】
コアプログラム７を実行する演算コア９１は、Ｖフラグ２０が「１」で順序情報１９が最新のエントリの順序情報に対する次の順序情報を、順序発生部１７に発生させる。
【０１０２】
コアプログラム７を実行する演算コア９１は、Ｖフラグ２０が「１」で順序情報１９が最新のエントリのＭＭＵ情報２３に基づいて、メモリ管理ユニット１２を復元する。
【０１０３】
コアプログラム７を実行する演算コア９１は、状態情報フラグ２２が「１」で順序情報１９が最新の状態情報２４をロードし、このロードした状態情報２４に基づいて、プロセッサ２の状態を復元する。
【０１０４】
ステップＵ３において、演算コア９１は、コアプログラム７の実行から抜けて、ロードされた状態情報２４の示す状態から動作を再開する。
【０１０５】
図５は、本実施の形態に係る情報処理装置１におけるメモリ管理ユニット１２のエントリの登録処理の一例を示すフローチャートである。この図５では、書き込み対象が通常データ又はシーケンシャルデータの場合を例に説明するが、書き込み対象が通常プログラム又はシーケンシャルプログラムの場合も同様である。
【０１０６】
ステップＶ１において、メモリ管理ユニット１２は、オペレーティングシステムによる判断結果に基づいて、書き込み対象データがシーケンシャルデータか否か判断する。
【０１０７】
書き込み対象データがシーケンシャルデータでない場合、ステップＶ２において、メモリ管理ユニット１２は、アクセス変換情報１５の新たなエントリの連続ブロックフラグ２７を０に設定し、ステップＶ３において、新たなエントリを、通常データを格納する不揮発性メインメモリ３のエリアに割り付ける。その後、ステップＶ７が実行される。
【０１０８】
書き込み対象データがシーケンシャルデータの場合、ステップＶ４において、メモリ管理ユニット１２は、アクセス変換情報１５の新たなエントリの連続ブロックフラグ２７を１に設定し、ステップＶ５において、アクセス変換情報１５の新たなエントリに対してオペレーティングシステムから受けた連続ブロック数２８を設定し、ステップＶ６において、新たなエントリを、シーケンシャルデータを格納する不揮発性メインメモリ３のエリアに割り付ける。その後、ステップＶ７が実行される。
【０１０９】
ステップＶ７において、メモリ管理ユニット１２は、十分なエリアが確保され、割り付けが正しく行われたか判断する。
【０１１０】
割り付けが正しく行われた場合、メモリ管理ユニット１２のエントリ登録処理は終了する。
【０１１１】
割り付けが正しく行われていない場合、ステップＶ８において、いずれかの演算コアは、ソフトウェアによる例外処理を実行し、メモリ管理ユニット１２は、必要なエントリを確保し、割り付けを行う。その後、メモリ管理ユニット１２のエントリ登録処理は終了する。
【０１１２】
本実施の形態において、情報処理装置１は、通常データを格納する通常データ格納領域と、シーケンシャルデータを格納するシーケンシャルデータ格納領域とを分けているとしてもよい。
【０１１３】
図６は、通常データ格納領域と、シーケンシャルデータ格納領域とを区別した本実施の形態に係る情報処理装置１の一例を示すブロック図である。
【０１１４】
情報処理装置１において、不揮発性メインメモリ３は、通常データ格納領域２９と、シーケンシャルデータ格納領域３０とを具備する。通常データ格納領域２９と、シーケンシャルデータ格納領域３０とは、分離されているか、又は、異なるメモリユニットに格納される。
【０１１５】
例えば、シーケンシャルデータ格納領域３０のアクセス回数の上限が、通常データ格納領域２９のアクセス回数の上限よりも少ない場合、シーケンシャルデータのうちオペレーティングシステムなどから書き込み頻度が小さいことが示されたシーケンシャルデータは、書き込み頻度が大きいシーケンシャルデータよりも優先的にシーケンシャルデータ格納領域３０に格納されるとしてもよい。
【０１１６】
例えば、不揮発性メインメモリ３をＭＬＣ（Multi Level Cell）領域とＳＬＣ（Single Level Cell）領域とに分け、データサイズの大きいシーケンシャルデータはＳＬＣ領域よりも集積度が高いＭＬＣ領域に優先的に割り付けられ、通常データはＭＬＣ領域よりも集積度が低いＳＬＣ領域に優先的に割り付けられるとしてもよい。
【０１１７】
例えば、ＳＬＣタイプのＮＡＮＤ型フラッシュメモリとＭＬＣタイプのＮＡＮＤ型フラッシュメモリとを比較すると、ＳＬＣタイプのＮＡＮＤフラッシュメモリは、ＭＬＣタイプのＮＡＮＤ型フラッシュメモリと比べて、アクセス速度は速く、信頼性は高いが、素子の集積度が低く、大容量化に向かない。これに対して、ＭＬＣタイプのＮＡＮＤ型フラッシュメモリは、ＳＬＣタイプのＮＡＮＤ型フラッシュメモリと比べて、アクセス速度は遅く、信頼性は低いが、素子の集積度が高く、大容量化に向いている。
【０１１８】
なお、本実施の形態において、耐久性とは、例えば書き込みに対する耐久性を意味する。信頼性とは、データ読み出しにおけるデータの欠損の起こりにくさを意味する。
【０１１９】
本実施の形態において、シーケンシャルデータがストリームデータの場合、このシーケンシャルデータが書き換えられる回数又は頻度は通常データが書き換えられる回数又は頻度よりも少ないと考えられる。そこで、不揮発性メインメモリ３のうち、書き込み回数が上限書き込み回数に近い領域（書き込み回数に余裕がない領域）がシーケンシャルデータ格納領域３０として使用され、書き込み回数が上限書き込み回数まで余裕がある領域が通常データ格納領域２９として使用されるとしてもよい。例えば、オペレーティングシステムによって、不揮発性メインメモリ３の各領域における書き込み回数と上限書き込み回数との比較と、通常データ格納領域２９とシーケンシャルデータ格納領域３０との決定が行われる。
【０１２０】
シーケンシャルデータ格納領域３０であっても、書き込み回数の少ない領域（例えば、書き込み回数が所定数未満の領域又は書き込み回数が上限書き込み回数の所定の割合未満の領域）は、通常データ格納領域２９に変更されるとしてもよい。これとは逆に、通常データ格納領域２９であっても、書き込み回数の多い領域（例えば、書き込み回数が所定数以上の領域又は書き込み回数が上限書き込み回数の所定の割合以上の領域）は、シーケンシャルデータ格納領域３０に変更されるとしてもよい。
【０１２１】
以上説明した本実施の形態に係る情報処理装置１の効果について説明する。
【０１２２】
本実施の形態では、シーケンシャルデータ又はシーケンシャルプログラムを不揮発性メインメモリ３に対して書き込む場合に、シーケンシャルデータ又はシーケンシャルプログラムをブロック単位で連続的に書き込む。これにより、連続的にアクセスされるシーケンシャルデータ又はシーケンシャルプログラムに対するアクセス効率の向上を図ることができる。
【０１２３】
さらに、本実施の形態では、シーケンシャルデータ又はシーケンシャルプログラムをブロック領域で格納し、メモリ管理ユニット１２がシーケンシャルデータ又はシーケンシャルプログラムのアドレス変換情報１５をブロック領域単位で管理する。これにより、メモリ管理ユニット１２のアドレス変換情報の使用量を減らすことが可能となる。
【０１２４】
以上のように、本実施形態では、シーケンシャルデータのアクセス効率及び管理効率を向上させることができる。
【０１２５】
また、本実施の形態においては、不揮発性半導体メモリへのアクセスを管理する場合において、ハードウェア構成を複雑化させることなく、動作を高速化させ、高い信頼性を実現させることができる。さらに、本実施の形態においては、不揮発性半導体メモリの寿命を延ばすことができる。
【０１２６】
また、従来の情報処理装置では、メインメモリに揮発性メモリが使用されているため、再起動のたびにオペレーティングシステム、プログラム、データをロードする必要があった。これに対して、本実施の形態に係る情報処理装置１においては、メインメモリに不揮発性半導体メモリが使用されるため、再起動する場合であっても、必要なプログラム及びデータが不揮発性メインメモリ３に格納されており、システムブート、プログラム及びデータのロードを削減すること又は不要とすることができ、情報処理装置１の処理を高速化させることができる。すなわち、本実施の形態に係る情報処理装置１では、プロセッサ２のメインメモリに不揮発性半導体メモリを使用し、処理経過を不揮発性メインメモリ３に書き込むことにより、バックアップ電源がなくても情報処理装置１の状態を保持可能としている。また、情報処理装置１においては、プログラムの起動が高速化される。
【０１２７】
さらに、本実施の形態に係る情報処理装置１においては、状態情報２４の生成イベントが発生するたびに、状態情報２４が不揮発性メインメモリ３に格納されるため、電源が急に切断された場合であっても、最新の状態情報２４を読み出してプロセッサ２の状態を電源切断前の状態に復元させることができ、情報処理装置１の動作を再実行させることができる。
【０１２８】
さらに、本実施の形態においては、キャッシュメモリ１０のキャッシュサイズと、不揮発性メインメモリ３の書き込みサイズ、データ・プログラム２１及び状態情報２４の書き込みサイズとを一致又は整数倍の関係とする。これにより、キャッシュメモリ１０と不揮発性メインメモリ３との間で、データ又はプログラムのサイズを変換させる必要がなく、サイズの変換ハードウェア量を削減させることができ、不揮発性メインメモリ３に対する制御を簡略化でき、情報処理装置１の処理を効率化させることができる。
【０１２９】
さらに、本実施の形態においては、必要であれば、キャッシュメモリ１０からのライトバックのレート制御を行うとしてもよい。演算コア９１〜９４はローカルメモリを備えるとしてもよいが、不揮発性メインメモリ３には、キャッシュメモリを介してアクセスする。これにより、アクセス速度を高速化することができる。
【０１３０】
さらに、本実施の形態において、例えば、不揮発性メインメモリ３として、ＮＡＮＤ型フラッシュメモリ又はＮＯＲ型フラッシュメモリなどを用いた場合、従来行われていたウェアレベリングを行うことなくメインメモリとして利用することができる。
【０１３１】
（第２の実施の形態）
本実施の形態においては、第１の実施の形態の変形例について説明する。
【０１３２】
本実施の形態において、シーケンシャルデータが格納される連続する複数のブロック領域は、必ずしも実際の物理記憶媒体上で連続して配置されている必要はなく、シーケンシャルにデータをアクセス及びデータ転送することが効率的、効果的な配置であればよい。
【０１３３】
図７は、連続してアクセスすることが効果的な複数のメモリユニットを備える不揮発性メインメモリ３の一例を示すブロック図である。
【０１３４】
不揮発性メインメモリ３は、複数のメモリユニット（メモリチップ）３１，３２を含む。この図７では、シーケンシャルデータの格納されるブロック領域数が４、メモリユニットが２つの場合を例に説明するが、シーケンシャルデータの格納されるブロック領域数及びメモリユニットは２以上であればよい。
【０１３５】
不揮発性メインメモリ３が複数のメモリユニット３１，３２を含む場合、アクセス制御部１４は、同じメモリユニットに対して連続してシーケンシャルデータＳＤ１〜ＳＤ４を格納するのではなく、格納先のメモリユニット３１，３２を切り替えながらシーケンシャルデータＳＤ１〜ＳＤ４を格納する。
【０１３６】
例えば、第１のメモリユニット３１の第０ブロック領域３１−０、第２のメモリユニット３２の第０ブロック領域３２−０、第１のメモリユニット３１の第１ブロック領域３１−１、第２のメモリユニット３２の第１ブロック領域３２−１、という順序で、シーケンシャルデータＳＤ１〜ＳＤ４を格納する。この場合、第１のメモリユニット３１の第０ブロック領域３１−０にアクセスしつつ、第２のメモリユニット３２の第０ブロック領域３２−０をアクセス可能であり、第２のメモリユニット３２の第０ブロック領域３２−０へのアクセスを、第１のメモリユニット３１の第０ブロック領域３１−０へのアクセスと重複（並列化）させることができ、高速にデータアクセスを行うことができる。
【０１３７】
図８は、本実施の形態に係る不揮発性メインメモリ３の論理的なデータ格納位置と物理的なデータ格納位置との関係の第１の例を示すブロック図である。
【０１３８】
シーケンシャルデータ格納領域３０には、論理的に連続した状態でシーケンシャルデータＳＤ１〜ＳＤ４が格納される。しかしながら、物理的には、シーケンシャルデータＳＤ１〜ＳＤ４は、メモリユニット３１，３２を切り替えながら格納される。
【０１３９】
図９は、本実施の形態に係る不揮発性メインメモリ３の論理的なデータ格納位置と物理的なデータ格納位置との関係の第２の例を示すブロック図である。
【０１４０】
この図９において、メモリユニット３１は、ＭＬＣ領域３１ＭとＳＬＣ領域３１Ｓを具備する。メモリユニット３２は、ＭＬＣ領域３２ＭとＳＬＣ領域３２Ｓを具備する。
【０１４１】
不揮発性メインメモリ３において、通常データは、論理的には、通常データ格納領域２９に格納されるが、物理的には、メモリユニット３１，３２のＳＬＣ領域３１Ｓ，３２Ｓに格納される。
【０１４２】
シーケンシャルデータは、論理的には、シーケンシャルデータ格納領域３０に格納されるが、物理的には、メモリユニット３１，３２のＭＬＣ領域３１Ｍ，３２Ｍに格納される。
【０１４３】
図１０は、本実施の形態に係る不揮発性メインメモリ３の論理的なデータ格納位置と物理的なデータ格納位置との関係の第３の例を示すブロック図である。この図１０の関係では、上記図８及び図９の関係が組み合わされている。
【０１４４】
不揮発性メインメモリ３において、通常データは、論理的には、通常データ格納領域２９に格納されるが、物理的には、メモリユニット３１，３２のＳＬＣ領域３１Ｓ，３２Ｓに格納される。
【０１４５】
シーケンシャルデータ格納領域３０には、論理的に連続した状態でシーケンシャルデータＳＤ１〜ＳＤ４が格納される。物理的には、シーケンシャルデータＳＤ１〜ＳＤ４は、メモリユニット３１，３２のＭＬＣ領域３１Ｍ，３２Ｍを切り替えながら、それぞれブロック領域３１−０，３２−０，３１−１，３２−１の順で格納される。
【０１４６】
本実施の形態においては、シーケンシャルデータのアクセスを並列化することができ、高速化することができる。
【０１４７】
（第３の実施の形態）
本実施の形態においては、上記第１及び第２の実施の形態に係る情報処理装置１の変形例であり、キャッシュメモリが階層化された構成を持つ情報処理装置について説明する。
【０１４８】
図１１は、本実施の形態に係る情報処理装置の構成の一例を示すブロック図である。
【０１４９】
情報処理装置３３は、少なくとも一つのプロセッサ（この図１１の例では４つ）３４１〜３４４、制御装置３５、不揮発性メインメモリ３を備えている。
【０１５０】
情報処理装置３３は、２次記憶装置４、外部アクセス装置５、Ｉ／Ｏ装置６を具備する。不揮発性メインメモリ３には、コアプログラム７、オペレーティングシステム６０が格納されている。プロセッサ３４１〜３４４及び制御装置３５は、オペレーティングシステム６０を実行する。プロセッサ３４１〜３４４は、不揮発性メインメモリ３のデータＤ１，Ｄ２をアクセスしつつ、プログラムＰ１，Ｐ２を実行する。
【０１５１】
それぞれのプロセッサ３４１〜３４４は、それぞれ１次キャッシュメモリ３６１〜３６４を備えている。プロセッサ３４１〜３４４は、１次キャッシュメモリ３６１〜３６４においてキャッシュミスが発生すると、アクセス対象のアドレスを制御装置３５に送信する。
【０１５２】
制御装置３５は、２次キャッシュメモリ１０、ライトバッファ１１、状態情報生成部１３、アクセス制御部１４とメモリ管理ユニット１２とを含むメモリ管理装置２０１を備えている。この制御装置３５によって実行される例えばライトバック、フェッチ、復元などの各種処理は、上記第１の実施の形態の場合と同様である。
【０１５３】
なお、本実施の形態においては、１次キャッシュメモリ３６１〜３６４と２次キャッシュメモリ１０とから構成される２階層の場合を例に説明しているが、キャッシュメモリの階層は３階層以上であっても同様に制御装置３５を適用可能である。
【０１５４】
本実施の形態において、プロセッサ３４１〜３４４は、１次キャッシュメモリ３６１〜３６４、２次キャッシュメモリ１０を介して不揮発性メインメモリ３をアクセスする。これにより、プロセッサ３４１〜３４４によるアクセス処理を高速化することができる。
【０１５５】
（第４の実施の形態）
本実施の形態においては、上記第１乃至第３の実施の形態に係る情報処理装置に、書き込み回数チェック部及び異常検出部を備えた場合について説明する。なお、本実施の形態においては、上記第１の実施の形態に係る情報処理装置１に書き込み回数チェック部及び異常検出部を備えた場合について説明するが、第２及び第３の実施の形態に係る情報処理装置など他の形態の情報処理装置についても同様に適用可能である。
【０１５６】
図１２は、本実施の形態に係る情報処理装置の構成の一例を示すブロック図である。
【０１５７】
本実施の形態に係る情報処理装置３７のプロセッサ３８は、メモリ管理装置２０２を具備する。さらに、メモリ管理装置２０２は、メモリ管理ユニット３９、アクセス制御部４３、異常検出部４６を具備する。
【０１５８】
本実施の形態に係るメモリ管理ユニット３９は、アドレス変換情報１５に加えて、不揮発性メインメモリ３の領域（例えばアドレス領域又はブロック領域）毎に、書き込み回数を表わす書き込み回数情報４０と、Ｂａｄ情報４１とを備える。
【０１５９】
Ｂａｄ情報４１は、不揮発性メインメモリ３のそれぞれの領域について、書き込み回数情報４０の示す書き込み回数が上限を超えた場合に、異常を示す値となる。なお、Ｂａｄ情報４１は、不揮発性メインメモリ３のデータ部４２にも格納される。
【０１６０】
本実施の形態において、メモリ管理ユニット３９は、不揮発性メインメモリ３が書き込まれるタイミングで、書き込み回数情報４０を更新する（書き込み対象の領域又はエントリに関する書き込み回数に１を加える）。
【０１６１】
アクセス制御部４３の書き込み制御部４４は、書き込み回数情報４０を、順序情報１９に対応づけて不揮発性メインメモリ３の該当領域に格納する。
【０１６２】
アクセス制御部４３には、書き込み回数チェック部４５が備えられている。書き込み回数チェック部４５は、不揮発性メインメモリ３への書き込み時に、書き込み先の領域の書き込み回数をチェックし、この書き込み回数が上限を表わす所定値を超える場合又は上限に対する所定の割合になった場合に例外処理を発生させる。例外処理では、ソフトウェアが起動され、このソフトウェアにより必要な処理が実行される。
【０１６３】
例えば、このソフトウェアによる例外処理では、メモリ管理ユニット３９と不揮発性メインメモリ３に対して、書き込み回数が上限を超えた領域のエントリにおけるＢａｄ情報４１に異常を示す値をセットし、書き込み回数が上限を超えたエントリへの書き込みを行わないようにする。メモリ管理ユニット３２は、Ｂａｄ情報４１が異常を表わすエントリへの書き込みを禁止する。
【０１６４】
さらに、本実施の形態に係る情報処理装置３７において、プロセッサ３８は、異常検出部４６を備えている。異常検出部４６としては例えばＥＣＣ回路などが用いられる。異常検出部４６は、ビット誤り訂正、訂正不可能エラー検出、例外発生を行う。
【０１６５】
上記の書き込み回数チェック部４５では、書き込み回数が上限を超えた場合に使用不可としているが、書き込み回数が上限を超える前であってもビットエラーが発生する場合がある。
【０１６６】
このようなエラーに対応するために、異常検出部４６は、不揮発性メインメモリ３に対するビットエラー検出を行う。さらに、異常検出部４６は、発生したビットエラーを訂正可能な場合には、訂正を行う。そして、異常検出部４６は、訂正不可能なビットエラーが発生した場合に、例外処理を発生させ、ソフトウェアにより必要な処理を行う。例えば、このソフトウェアによる例外処理により、メモリ管理ユニット３９と不揮発性メインメモリ３に対して、訂正不可能なエラーの発生した領域のエントリにおけるＢａｄ情報４１に異常を示す値をセットし、訂正不可能なエラーの発生したエントリに対して書き込みを行わないようにする。メモリ管理ユニット３９は、Ｂａｄ情報４１が異常を示すエントリへの書き込みを禁止する。
【０１６７】
以上説明した本実施の形態においては、不揮発性メインメモリ３への書き込みに異常が発生した場合に、異常の発生した領域の使用禁止、ユーザへの取り替え指示、など適当な処理をソフトウェアにより行うことができる。
【０１６８】
上記各実施の形態においては、キャッシュメモリからのライトバックのレート制御を行うとしてもよい。
【０１６９】
（第５の実施の形態）
上記各実施の形態において、不揮発性メインメモリ３の格納領域は、例えばプログラム、データ、状態情報など書き込まれる内容の種類に応じて分けられるとしてもよい。
【０１７０】
図１３は、プログラム、データ、状態情報が複数のデータ部（格納領域）に分けて格納される不揮発性メインメモリ３の一例を示すブロック図である。
【０１７１】
アクセス制御部１４，４３のアドレス発生部１６は、書き込まれる内容がプログラム２１ａか、データ２１ｂか、状態情報２４かを判断する。そして、アドレス発生部１６は、書き込まれる内容がプログラム２１ａの場合には、書き込み対象のプログラム２１ａがデータ部（格納領域）２５Ａに格納されるようにアドレスを発生させる。アクセス制御部１４，４３は、書き込まれる内容がデータ２１ｂの場合には、書き込み対象のデータ２１ｂがデータ部（領域）２５Ｂに格納されるようにアドレスを発生させる。アクセス制御部１４，４３は、書き込まれる内容が状態情報２４の場合には、書き込み対象の状態情報２４がデータ部（領域）２５Ｃに格納されるようにアドレスを発生させる。それぞれの書き込まれる内容には、順序情報１９、Ｖフラグ２０、ＭＭＵ情報２３、が関連付けられる。
【０１７２】
データ部２５Ａ，２５Ｂに書き込まれる内容には、Ｓフラグ２６が関連付けられる。
【０１７３】
なお、ＭＭＵ情報２３についても、他の格納領域に格納されるとしてもよい。
【０１７４】
（第６の実施の形態）
本実施の形態においては、上記第１乃至第５の実施の形態の変形例について説明する。なお、以下においては上記第１の実施の形態の変形例について説明するが、上記第２乃至第５の実施の形態の変形例についても同様である。
【０１７５】
図１４は、本実施の形態に係る情報処理装置の構成の一例を示すブロック図である。
【０１７６】
メモリ管理装置２０１のアクセス制御部１４は、さらに、性能低下検出部４８を具備する。
【０１７７】
コアプログラム７は、性能低下抑制プログラム４９を具備する。
【０１７８】
不揮発性メインメモリ３において書き込み可能な領域（書き込み可能なエントリ数）が少なくなると、不揮発性メインメモリ３に対するアクセスについて性能が低下する場合がある。また、書き込み可能な領域がなくなると、処理の継続が不可能である。
【０１７９】
性能低下検出部４８は、情報処理装置１においてプロセッサ２から不揮発性メインメモリ３へのアクセスについて性能低下が発生しているかを検出する。例えば、性能低下検出部４８は、書き込み領域を探す時間が設定値を超えた場合、書き込み可能エントリ数が設定値又は設定割合以下になった場合、又は、この２つの組み合わせが発生した場合に、性能低下の発生を検出する。
【０１８０】
性能低下検出部４８は、プロセッサ２から不揮発性メインメモリ３へのアクセスについて性能低下の発生が検出された場合に、プロセッサ２に例外コマンドを発する。
【０１８１】
プロセッサ２は、例外コマンドが発生された場合に、コアプログラム７内の性能低下抑制プログラム４９を実行する。
【０１８２】
この性能低下抑制プログラム４９にそって、プロセッサ２は、ガーベージコレクションなどのような性能低下を抑制する処理を実行する。
【０１８３】
性能低下抑制プログラム４９は、例えば、現在の不揮発性メインメモリ３内をサーチし、複数のエントリのうち一つにまとめられるものを一つにまとめる処理、不揮発性メインメモリ３内で有効なデータと未使用のデータ（消去されたデータ）とが混在する場合に、有効なデータのみを集めて再配置する処理、アクセス頻度の低いデータ、重要度又は優先度の低いデータ、使用頻度の低いデータを他のメモリに移動させて空き領域を増やす処理などのような各種の処理、又は各種の処理の組み合わせを実行する。
【０１８４】
以上説明した本実施の形態においては、書き込み可能領域が少なくなるなどの理由で情報処理装置１の性能が低下することを防止することができる。
【０１８５】
性能低下抑制プログラム４９の処理を、通常の処理と並行して実行することで、通常の処理への影響を最小限に抑えることができる。
【０１８６】
また、性能低下抑制プログラム４９の処理を行う専用のプロセッサが備えられることで、例外処理によってプロセッサ２の能力が低下することを抑制することができる。
【０１８７】
上記各実施の形態の制御は、不揮発性半導体メモリをメインメモリではない他の目的で利用する場合にも適用可能である。
【０１８８】
（第７の実施の形態）
上記各実施の形態においては、メインメモリとして、不揮発性メインメモリ３が利用されている。
【０１８９】
しかしながら、上記各実施の形態における不揮発性メインメモリ３に代えて、性質が互いに異なる異種の半導体メモリが混合された混成メモリがメインメモリとして利用されるとしてもよい。
【０１９０】
図１５は、本実施の形態に係る混成メモリを含む情報処理装置の一例を示すブロック図である。
【０１９１】
図１６は、本実施の形態に係る情報処理装置に用いられるプログラム及びデータの一例を示すブロック図である。
【０１９２】
情報処理装置５４は、キャッシュメモリ５５を備えた少なくとも一つのプロセッサ５６、メモリ管理装置５７、混成メモリ５２を具備する。
【０１９３】
プロセッサ５６は、メモリ管理装置５７を介して、混成メモリ５２に接続されている。メモリ管理装置５７は、例えば、上記各実施の形態に係るアクセス制御部１４，４３と同様の機能を具備するアクセス制御部５９を備えている。また、メモリ管理装置５７は、メモリ管理ユニット１２，３９の機能を具備する。本実施の形態において、メモリ管理装置５７は、アドレス発生部１６、順序情報発生部１７、書き込み制御部１８を具備するとする。
【０１９４】
混成メモリ５２は、複数の種別の半導体メモリを組み合わせて構成される。本実施の形態では、混成メモリ５２は、例えば、揮発性半導体メモリ５２ａ、不揮発性半導体メモリ５８を具備する。さらに、この不揮発性半導体メモリ５８は、不揮発性半導体メモリ５２ｂ，５２ｃを備える。
【０１９５】
揮発性半導体メモリ５２ａとしては、例えば、ＤＲＡＭが利用されるが、ＤＲＡＭに代えて、ＦＰＭ−ＤＲＡＭ（Fast Page Mode Dynamic Random Access Memory）、ＥＤＯ−ＤＲＡＭ（Extended Data Out Dynamic Random Access Memory）、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などを用いてもよい。
【０１９６】
揮発性半導体メモリ５２ａに代えて、例えばＭＲＡＭなどの不揮発性半導体メモリを用いるとしてもよい。
【０１９７】
不揮発性半導体メモリ５２ｂは、例えば、ＳＬＣタイプのＮＡＮＤ型フラッシュメモリである。不揮発性半導体メモリ５２ｃは、例えばＭＬＣタイプのＮＡＮＤ型フラッシュメモリである。
【０１９８】
なお、不揮発性半導体メモリ５２ｂ，５２ｃとして、ＮＡＮＤ型フラッシュメモリに代えて、他の不揮発性半導体メモリを用いることもできる。
【０１９９】
本実施の形態において、揮発性半導体メモリ５２ａは、不揮発性半導体メモリ５２ｂよりも信頼性又は耐久性が高く、アクセス回数の上限が多いとする。また、不揮発性半導体メモリ５２ｂは、不揮発性半導体メモリ５２ｃよりも信頼性又は耐久性が高く、アクセス回数の上限が多いとする。
【０２００】
アクセス制御部５９のアドレス発生部１６は、揮発性半導体メモリ５２ａのアクセス回数又はアクセス頻度が、不揮発性半導体メモリ５２ｂのアクセス回数又はアクセス頻度よりも多くなり、不揮発性半導体メモリ５２ｂのアクセス回数又はアクセス頻度が、不揮発性半導体メモリ５２ｃのアクセス回数又はアクセス頻度よりも多くなるように、混成メモリ５２における書き込み先のメモリを選択する。
【０２０１】
このように、書き込み先のメモリは、書き込み対象データのアクセス回数、アクセス頻度、重要度などの情報に基づいてアドレス発生部１６によって選択される。
【０２０２】
アクセス頻度は、アクセスの発生する頻度を表す値である。アクセス頻度は、例えば、プロセスの優先度、ファイルの形式情報、アクセスパターン、ＥＬＦフォーマットのセグメントなどに基づいて決定される。例えば、メディアファイルに関連するデータの書き込み頻度は、低く設定される。例えば、アクセスパターンがシステムコールで指定されたパーミッションの場合には、アクセス頻度は高く設定され、アクセスパターンがファイルのパーミッションの場合には、アクセス頻度は低く設定される。例えば、リードオンリーのセクションで構成されるセグメントに対するアクセス頻度のうちの書き込み頻度は、低く設定される。アクセス頻度には、値が変化しない静的アクセス頻度と、値がアクセス状況に応じて変化する動的アクセス頻度との２種類があるとする。動的アクセス頻度は、データ配置を効果的に行うためにデータのアクセス回数に基づいて求められる値である。動的アクセス頻度としては、例えば、アクセス回数と時間に関する情報とに基づいて算出される値を用いることができる。例えば、動的アクセス頻度は、単位時間あたりのアクセス回数としてもよい。
【０２０３】
重要度は、データの重要さを表す値であり、値が変化しない静的重要度と、値がアクセス状況に応じて変化する動的重要度との２種類があるとする。静的重要度は、例えば、データの種別（ファイル形式）、ユーザによって設定された設定情報に基づいて決定される。動的重要度は、アクセス時刻などに基づいて決定される。例えば、実行可能ファイルに関連するデータに対しては、静的重要度が高く設定される。例えば、メディアファイルに関連するデータに対しては、静的重要度が中レベルに設定される。例えば、ファイルの保存されているフォルダがゴミ箱又はメールボックスの場合、このファイルに関連するデータに対して、静的重要度は低く設定される。例えば、最終アクセス時刻から現在までの間隔に比例して、書き込み対象データの動的重要度は減少するように設定される。
【０２０４】
情報処理装置５４は、オペレーティングシステム６０を実行する。このオペレーティングシステム６０は、データ固有情報管理部６１、メモリ使用情報管理部６２を具備する。
【０２０５】
情報処理装置５４は、オペレーティングシステム６０のデータ固有情報管理部６１により、データ固有情報６３１〜６３ｎを管理する。
【０２０６】
データ固有情報６３１〜６３ｎは、各データ（プログラムなどでもよい）６４１〜６４ｎについて、アクセス頻度、アクセス回数、重要度のうちの少なくとも一つなどのデータ固有の情報を含む。
【０２０７】
すなわち、情報処理装置１で扱われるデータ６４１〜６４ｎには、そのデータ６４１〜６４ｎに対するデータ固有情報６３１〜６３ｎが関係付けられている。データ固有情報６３１〜６３ｎには、各データ６４１〜６４ｎのアクセス頻度が含まれる。データ固有情報管理部６１は、データ６４１〜６４ｎに対する書き込み又は読み出しが発生した場合に、そのデータ６４１〜６４ｎのデータ固有情報６３１〜６３ｎを更新する。
【０２０８】
なお、データ固有情報６３１〜６３ｎは、各データ６４１〜６４ｎから分離された状態で管理されるとしてもよい。
【０２０９】
情報処理装置５４は、オペレーティングシステム６０のメモリ使用情報管理部６２により、メモリ使用情報６５を管理する。
【０２１０】
メモリ使用情報６５は、各メモリ５２ａ〜５２ｃの使用量又は使用率、各メモリ５２ａ〜５２ｃの各領域の使用量又は使用率などのようなメモリ５２ａ〜５２ｃの使用状況を示す情報を含む。例えば、メモリ使用情報６５は、各メモリ５２ａ〜５２ｃの「アクセス回数／アクセス回数の上限」、各メモリ５２ａ〜５２ｃの各領域の「アクセス回数／アクセス回数の上限」、各メモリ５２ａ〜５２ｃの「使用容量／全容量」、各メモリ５２ａ〜５２ｃの各領域のアクセス回数、アクセス頻度、などを含む。例えば、混成メモリ５２へのアクセスが実行されると、メモリ使用情報管理部６２は、メモリ使用情報６５に対して、アクセスされたメモリの使用量又は使用率、アクセスされた領域の使用量又は使用率、アクセス回数、アクセス頻度などの情報を更新する。本実施の形態において、メモリ使用情報６５は、上記第４の実施の形態の書き込み回数情報４０を含むとする。
【０２１１】
情報処理装置５４は、オペレーティングシステム６０により、メモリ固有情報６６を管理する。
【０２１２】
メモリ固有情報６６は、混成メモリ５２の各メモリ５２ａ〜５２ｃのアクセス回数の上限（寿命情報、耐久性情報）などのようなメモリ固有の情報を含む。
【０２１３】
例えば、アクセス制御部５９のアドレス発生部１６は、オペレーティングシステム６０によって管理されているデータとファイルとの関係を示す情報、データ固有情報６３１〜６３ｎなどに基づいて、書き込み対象データのアクセス回数、アクセス頻度、重要度を求め、この書き込み対象データのアクセス回数、アクセス頻度、重要度に基づいて書き込み対象データの評価値を算出する。この評価値は、アクセス回数、アクセス頻度、重要度が大きいほど、大きい値となる。そして、アドレス発生部１６は、書き込み対象データの評価値と、メモリ使用情報６５と、メモリ固有情報６６と、メモリの選択で用いられるメモリ選択しきい値とに基づいて、書き込み先のメモリを選択する。アドレス発生部１６は、評価値の値が大きいデータほど、不揮発性半導体メモリ５２ｂよりも揮発性半導体メモリ５２ａを優先して選択し、揮発性半導体メモリ５２ｃよりも揮発性半導体メモリ５２ｂを優先して選択する。なお、本実施の形態において、メモリ選択しきい値は、メモリ固有情報６６の一要素として予め設定されているとしてもよく、メモリ使用情報６５などに基づいて動的に算出されるとしてもよい。
【０２１４】
アクセス発生部１６は、混成メモリ５２における複数のメモリのうち、選択されたメモリに対して、上記第１乃至第６の実施の形態で説明した追記式の書き込みを行うためのアドレスを発生させる。
【０２１５】
メモリ管理装置５７によるメモリ５２ａ〜５２ｃの選択についてより具体的に説明する。
【０２１６】
メモリ管理装置５７は、データ６４１の書き込み時に、書き込み対象のデータ６４１のデータ固有情報６３１、メモリ使用情報６５、メモリ固有情報６６を調べ、揮発性半導体メモリ５２ａ、不揮発性半導体メモリ５２ｂ、不揮発性半導体メモリ５２ｃのうち書き込み耐性に余裕のあるいずれかのメモリを書き込み先のメモリとして選択する。この選択により、高性能で、安価で、大容量のメモリを、長期間使用することが可能となる。
【０２１７】
例えば、メモリ管理装置５７は、書き込み対象データ６４１のデータ固有情報６３１に基づいて、書き込み対象データ６４１のアクセス頻度が高い場合に書き込み先として耐久性の高いＳＬＣタイプの不揮発性半導体メモリ５２ｂを選択し、書き込み対象データ６４１のアクセス頻度が低い場合に書き込み先として耐久性の低いＭＬＣタイプの不揮発性半導体メモリ５２ｃを選択する。これにより、混成メモリ５２のコスト、性能、アクセス速度、寿命の最適化を図ることができる。
【０２１８】
例えば、メモリ管理装置５７のアクセス制御部５９は、書き込み対象データ６４１がストリームデータの場合、このストリームデータの書き込み先として例えばＭＬＣタイプのＮＡＮＤ型フラッシュメモリ６２を選択し、格納する。ストリームデータについては、書き込み頻度が小さい傾向があるため、ＭＬＣタイプのＮＡＮＤ型フラッシュメモリ５２ｃを書き込み先に用いてもメモリの性能は十分確保される。
【０２１９】
そして、メモリ管理装置５７のアクセス制御部５９は、ＳＬＣタイプの不揮発性半導体メモリ５２ｂとＭＬＣタイプの不揮発性半導体メモリ５２ｃとのうちのいずれかが選択された場合に、上記各実施の形態で説明したように、アドレスの順次発行を行い、発行されたアドレスが未使用領域の場合に、この未使用領域に書き込み対象データ６４１を格納する追記式の書き込み動作を実行する。これにより、不揮発性半導体メモリ５２ｂ，５２ｃ内のアクセス回数の平滑化を実現することができる。
【０２２０】
メモリ管理装置５７によって用いられるメモリ選択しきい値についてより具体的に説明する。
【０２２１】
本実施の形態においては、アクセス回数、アクセス頻度、重要度に基づいて算出される評価値と、メモリ選択しきい値に基づいて、混成メモリ５２の異機種のメモリ５２ａ〜５２ｃの中から、書き込み先のメモリが選択される。例えば、メモリ選択しきい値は、メモリの使用率に基づいて変化される。
【０２２２】
使用率は、「アクセス回数／アクセス回数の上限」としてもよく、「メモリ使用領域の容量／メモリの全容量」としてもよい。
【０２２３】
オペレーティングシステム６０は、揮発性半導体メモリ５２ａの使用率が高いほど、書き込み先として揮発性半導体メモリ５２ａよりも不揮発性半導体メモリ５２が選択されやすくなるように、第１のメモリ選択しきい値を決定する。
【０２２４】
オペレーティングシステム６０は、不揮発性半導体メモリ５２ｂの使用率が高いほど、書き込み先として不揮発性半導体メモリ５２ｂよりも不揮発性半導体メモリ５２ｃが選択されやすくなるように、第２のメモリ選択しきい値を決定する。
【０２２５】
そして、オペレーティングシステム６０及びメモリ管理装置５７は、評価値と、第１のメモリ選択しきい値及び第２のメモリ選択しきい値との大小関係に基づいて、書き込み先のメモリを選択する。
【０２２６】
本実施の形態の制御は、混成メモリ５２をメインメモリではない他の目的で利用する場合にも適用可能である。
【０２２７】
以上説明した本実施の形態においては、データのアクセス回数、アクセス頻度、重要度に基づいて、揮発性半導体メモリ５２ａ、ＳＬＣタイプの不揮発性半導体メモリ５２ｂ、ＭＬＣタイプの不揮発性半導体メモリ５２ｃを使い分けることにより、情報処理装置５４で使用されるメインメモリを低コスト化でき、記憶容量を大きくすることができ、長寿命化することができる。
【０２２８】
混成メモリ５２は、揮発性半導体メモリ５２ａと比べて安価で大容量の不揮発性半導体メモリ５２ｂ，５２ｃを備えるため、単に揮発性半導体メモリ５２ａのみをメインメモリに用いる場合よりも、安価で大容量化することができる。
【０２２９】
また、本実施の形態においては、メモリ選択後に追記式の書き込みを行うことにより、ハードウェア資源の簡素化を実現することができる。
【０２３０】
上記各実施の形態において説明した各構成要素は、自由に組み合わせることができ、自由に分割することができる。例えば、アクセス制御部１４，４３とメモリ管理ユニット１２，３９とは組み合わせてもよい。例えば、メモリ管理ユニット１２、状態情報生成部１３、アクセス制御部１３，４３の機能は、演算コア９１〜９４のうちの少なくとも一つによって実現されるとしてもよい。オペレーティングシステム６０によるシーケンシャルデータか否かの判断機能は、例えばアクセス制御部１４などのようなハードウェアにより実現させてもよい。アドレス発生部１６、順序情報発生部１７、書き込み制御部１８は、自由に組み合わせることができる。
【０２３１】
本発明は、上記実施の形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【産業上の利用可能性】
【０２３２】
本発明は、プロセッサがメインメモリをアクセスする場合のアクセス先のアドレスを管理する技術分野に有効である。
【符号の説明】
【０２３３】
１，３３，３７…情報処理装置、２，３４１〜３４４，３８…プロセッサ、３…不揮発性メインメモリ、４…２次記憶装置、５…外部アクセスメモリ、６…Ｉ／Ｏ装置、７…コアプログラム、６０…オペレーティングシステム、９１〜９４…演算コア、１０，３６１〜３６４…キャッシュメモリ、１１…ライトバッファ、１２，３９…メモリ管理ユニット、１３…状態情報生成部、１４，４３…アクセス制御部、１５…アドレス変換情報、１６…アドレス発生部、１７…順序発生部、１８，４４…書き込み制御部、１９…順序情報、２０…Ｖフラグ、２１…ページ、２２…状態情報フラグ、２３…ＭＭＵ情報、２４…状態情報、２５…データ部、２６…Ｓフラグ、２７…連続ブロックフラグ、２８…連続ブロック数、２９…通常データ格納領域、３０…シーケンシャルデータ格納領域、３１，３２…メモリユニット、３５…制御装置、４０…書き込み回数情報、４１…Ｂａｄ情報、４５…書き込み回数チェック部、４６…異常検出部、４８…性能低下検出部、４９…性能低下抑制プログラム、５２…混成メモリ、５２ａ…揮発性半導体メモリ、５２ｂ，５２ｃ…不揮発性半導体メモリ、５７…メモリ管理装置、５８…不揮発性半導体メモリ、５９…アクセス制御部、６１…データ固有情報管理部、６２…メモリ使用情報管理部、６３１〜６３ｎ…データ固有情報、６４１〜６４ｎ…データ、６５…メモリ使用情報、６６…メモリ固有情報。
【図１】
2011154547.tif 000003
【図２】
2011154547.tif 000004
【図３】
2011154547.tif 000005
【図４】
2011154547.tif 000006
【図５】
2011154547.tif 000007
【図６】
2011154547.tif 000008
【図７】
2011154547.tif 000009
【図８】
2011154547.tif 000010
【図９】
2011154547.tif 000011
【図１０】
2011154547.tif 000012
【図１１】
2011154547.tif 000013
【図１２】
2011154547.tif 000014
【図１３】
2011154547.tif 000015
【図１４】
2011154547.tif 000016
【図１５】
2011154547.tif 000017
【図１６】
2011154547.tif 000018