説明

メモリ管理装置及びメモリ管理方法

【課題】不揮発性半導体メモリの寿命を延ばすとともに、シーケンシャルデータのアクセス効率及び管理効率を向上させる。
【解決手段】本発明の一態様に係るメモリ管理装置12,14は、プロセッサ2から不揮発性半導体メモリ3に書き込まれるデータが通常データの場合に、発生済みのアドレスの示す位置と通常データの書き込み位置が重ならないように第1の書き込みアドレスを発生させ、シーケンシャルデータの場合に、シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第2の書き込みアドレスを発生させる手段16と、発生した書き込みの新しさを表わす順序情報を発生させる手段17と、第1の書き込みアドレスが発生された場合に、第1の書き込みアドレスに対して、発生された順序情報を対応付けて通常データを書き込み、第2の書き込みアドレスが発生された場合に、第2の書き込みアドレスに対して、シーケンシャルデータをシーケンシャルに書き込む手段18とを具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリへのアクセスを管理するメモリ管理装置及びメモリ管理方法に関する。
【背景技術】
【0002】
従来の情報処理装置においては、プロセッサの主記憶装置(メインメモリ)として、例えばDynamic Random Access Memory(DRAM)などの揮発性半導体メモリが使用されている。さらに、従来の情報処理装置では、揮発性半導体メモリと組み合わせて2次記憶装置が使用される。
【0003】
特許文献1(特開平7−146820)には、情報処理装置の主記憶装置としてフラッシュメモリを採用する技術が開示されている。特許文献1において、システムのメモリバスには、揮発性メモリであるキャッシュメモリを介して、フラッシュメモリが接続される。キャッシュメモリには、このキャッシュメモリに格納されているデータのアドレス又はアクセス履歴などの情報を記録するアドレスアレイが設けられる。コントローラは、アクセス先のアドレスを参照し、キャッシュメモリ又はフラッシュメモリのデータをメモリバスに供給し、あるいは、メモリバスのデータを格納する。
【0004】
特許文献2(特開2001−266580号公報)においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。
【0005】
この特許文献2の半導体メモリ装置は、ランダムアクセスメモリチップと、前記ランダムアクセスメモリチップを備えたパッケージを含む。前記パッケージは、前記ランダムアクセスメモリチップを外部装置に電気的に連結する複数のピンを有する。複数のピンは、前記ランダムアクセスメモリと、電気的に消去及びプログラム可能な不揮発性半導体メモリとに、共通にメモリ機能を提供する。前記複数のピンの各々は、不揮発性半導体メモリの対応するピンの位置に配列されている。
【0006】
従来の情報処理装置では、メインメモリは不揮発性の記憶装置であるため、電源を切るとメインメモリの記憶内容は消えてしまう。このため、従来の情報処理装置では、毎回ブート時に、システムの立ち上げが必要であり、プログラム又はデータを2次記憶装置からメインメモリに読み込む必要があり、処理を実行するまでに時間を要していた。
【0007】
また、従来の情報処理装置では、電源が切れた場合にメインメモリの記憶内容が保存されないため、従来の情報処理装置が正しくシャットダウンしなかった場合に、データ、システム、プログラムが破壊される可能性がある。
【0008】
上記特許文献1,2においては、フラッシュメモリに対してどのようにデータ又はプログラムを格納するかについて具体的に説明されていない。また、不揮発性半導体メモリの寿命を長くする具体的な手法は、検討されていない。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平7−146820号公報
【特許文献2】特開2001−266580号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明は、シーケンシャルデータのアクセス効率を向上させるメモリ管理装置及びメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の一態様に係るメモリ管理装置は、プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、前記データが、連続的にアクセスされるシーケンシャルデータであるか、前記シーケンシャルデータではない通常データであるか判断する判断手段と、前記判断手段によって前記データが前記通常データと判断された場合に、発生済みのアドレスの示す位置と前記通常データの書き込み位置が重ならないように第1の書き込みアドレスを発生させ、前記判断手段によって前記データが前記シーケンシャルデータと判断された場合に、前記シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第2の書き込みアドレスを発生させるアドレス発生手段と、発生した書き込みの新しさを表わす順序情報を発生させる順序発生手段と、前記アドレス発生手段によって前記第1の書き込みアドレスが発生された場合に、前記第1の書き込みアドレスに対して、前記順序発生手段によって発生された順序情報を対応付けて前記通常データを書き込み、前記アドレス発生手段によって前記第2の書き込みアドレスが発生された場合に、前記第2の書き込みアドレスに対して、前記シーケンシャルデータをシーケンシャルに書き込む書き込み制御手段とを具備する。
【0012】
なお、上記の態様はメモリ管理装置として表現されている。しかしながら、これに限らず、上記の態様は、メモリ管理方法、情報処理装置などで表現されるとしてもよい。
【発明の効果】
【0013】
本発明においては、不揮発性半導体メモリの寿命を延ばすとともに、シーケンシャルデータのアクセス効率及び管理効率を向上させる。
【図面の簡単な説明】
【0014】
【図1】本発明の第1の形態に係る情報処理装置の詳細構成の一例を示すブロック図。
【図2】第1の実施の形態に係る情報処理装置におけるライトバックの一例を示すフローチャート。
【図3】第1の実施の形態に係る情報処理装置におけるフェッチの一例を示すフローチャート。
【図4】第1の実施の形態に係る情報処理装置の復元処理の一例を示すフローチャート。
【図5】第1の実施の形態に係る情報処理装置におけるメモリ管理ユニットのエントリの登録処理の一例を示すフローチャート。
【図6】通常データ格納領域と、シーケンシャルデータ格納領域とを区別した第1の実施の形態に係る情報処理装置の一例を示すブロック図。
【図7】本発明の第2の実施の形態に係る連続してアクセスすることが効果的な複数のメモリユニットを備える不揮発性メインメモリの一例を示すブロック図。
【図8】第2の実施の形態に係る不揮発性メインメモリの論理的なデータ格納位置と物理的なデータ格納位置との関係の第1の例を示すブロック図。
【図9】第2の実施の形態に係る不揮発性メインメモリの論理的なデータ格納位置と物理的なデータ格納位置との関係の第2の例を示すブロック図。
【図10】第2の実施の形態に係る不揮発性メインメモリの論理的なデータ格納位置と物理的なデータ格納位置との関係の第3の例を示すブロック図。
【図11】本発明の第3の実施の形態に係る情報処理装置の構成の一例を示すブロック図。
【図12】本発明の第4の実施の形態に係る情報処理装置の構成の一例を示すブロック図。
【図13】本発明の第5の実施の形態に係るプログラム、データ、状態情報が複数のデータ部(格納領域)に分けて格納される不揮発性メインメモリの一例を示すブロック図。
【図14】本発明の第6の実施の形態に係る情報処理装置の構成の一例を示すブロック図。
【図15】本発明の第7の実施の形態に係る混成メモリを含む情報処理装置の一例を示すブロック図。
【図16】第7の実施の形態に係る情報処理装置に用いられるプログラム及びデータの一例を示すブロック図。
【発明を実施するための形態】
【0015】
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
【0016】
(第1の実施の形態)
本実施の形態に係る情報処理装置においては、主記憶装置(メインメモリ)として不揮発性の半導体メモリ(不揮発性メインメモリ)を用いる。
【0017】
本実施の形態において、情報処理装置は、例えばMicro Processing Unit(MPU)などのようなプロセッサと、不揮発性の半導体メモリであるメインメモリとを含む。
【0018】
本実施の形態において、メモリに対するアクセスとは、メモリに対する読み出し、書き込み、消去のうちの少なくとも一つを含む。
【0019】
本実施の形態においては、データ、プログラム、又は、データとプログラムの組合せがアクセスされるが、以下においては、説明を簡略化するために主にデータがアクセスされる場合を例として説明する。
【0020】
図1は、本実施の形態に係る情報処理装置の詳細構成の一例を示すブロック図である。
【0021】
情報処理装置1は、プロセッサ2と不揮発性メインメモリ3とを具備する。プロセッサ2は、図示しない外部の2次記憶装置、外部アクセス装置、I/O装置などの各種装置をアクセス可能である。なお、2次記憶装置、外部アクセス装置、I/O装置などの装置が、情報処理装置1の一部として備えられるとしてもよい。
【0022】
不揮発性メインメモリ3としては、例えばフラッシュメモリが用いられる。フラッシュメモリとしては、例えば、NAND型、NOR型などのフラッシュメモリを適用可能である。また、不揮発性メインメモリ3として、PRAM(Phase change memory)、ReRAM(Resistive Random access memory)、MRAM(Magnetoresistive Random Access Memory)のような不揮発性の半導体メモリを用いてもよい。
【0023】
不揮発性メインメモリ3内に、コアプログラム7とメインメモリとして使用されるデータ部25とが含まれており、データ部25には、エントリごとに、順序情報19、Vフラグ20、データ21又は状態情報24、状態情報フラグ22、MMU情報23、Sフラグ26が含まれる。データ部25の構成についての詳細は後述する。
【0024】
不揮発性メインメモリ3における上記の各種のデータ21は、例えば、プロセッサ2、又は、図示しない外部の2次記憶装置、外部アクセス装置、I/O装置から不揮発性メインメモリ3に格納される。
【0025】
プロセッサ2は、少なくとも一つの演算コア(この図1の例では4つ)91〜94、キャッシュメモリ10、ライトバッファ11、メモリ管理ユニット(MMU)12を具備する。プロセッサ2は、さらに、状態情報生成部(例えばPSW制御部)13、アクセス制御部14を具備する。
【0026】
本実施の形態に係るメモリ管理装置201は、メモリ管理ユニット12、アクセス制御部14を具備する。なお、メモリ管理装置201は、さらに、キャッシュメモリ10、ライトバッファ11などを具備するとしてもよい。
【0027】
演算コア91〜94は、キャッシュメモリ10、不揮発性メインメモリ3にアクセスしつつ、プログラムを実行する。演算コア91〜94は、並列に動作可能である。
【0028】
キャッシュメモリ10は、演算コア91〜94がアクセスするデータをキャッシュライン単位で格納する。キャッシュメモリ10のラインサイズは、不揮発性メインメモリ3のデータの書き込み、読み出しサイズの単位であるページサイズ、又はページサイズの倍数とする。ページサイズの倍数のデータの単位を、ブロック単位とし、ブロック単位のサイズをブロックサイズとする。
【0029】
キャッシュメモリ10の出力段にはライトバッファ11が設けられている。キャッシュメモリ10から不揮発性メインメモリ3に書き込まれる書き込み対象データは、ライトバッファ11経由で、不揮発性メインメモリ3に書き込まれる。
【0030】
ライトバッファ11は、キャッシュメモリ10からの、書き込み対象データを蓄積する。ライトバッファ11に蓄積されている書き込み対象データのサイズが、不揮発性メインメモリ3に書き込みを行うために効率的なサイズになると、この蓄積されたデータは、不揮発性メインメモリ3に書き込まれる。
【0031】
上記のように、本実施の形態においては、キャッシュメモリ10のラインサイズを不揮発性メインメモリ3のページサイズ、ページサイズの倍数、又はブロックサイズとする。これにより、キャッシュメモリ10から不揮発性メインメモリ3へのデータの書き込み等の処理を効率化でき、ハードウェアの削減を図ることができる。
【0032】
メモリ管理ユニット12は、エントリ単位で、キャッシュメモリ10及び不揮発性メインメモリ3についての論理アドレスと物理アドレスとを関係付けたアドレス変換情報15と、連続ブロックフラグ27、連続ブロック数28を管理する。アドレス変換情報15は、論理アドレスと物理アドレスとの間の変換を行うために用いられる。
【0033】
状態情報生成部13は、所定の又は任意のタイミングで、プロセッサの状態及びプログラムの状態を表わす状態情報(例えばプログラム状態語:PSW)を求める。状態情報には、汎用レジスタ、制御レジスタ、プログラムカウンタなどのプロセッサ2の動作状態を復元するために必要な情報が含まれている。例えば、状態情報生成部13は、所定時間を経過する毎に、状態情報を生成する。また、例えば、状態情報生成部13は、所定の回数、プロセッサ2から不揮発性メインメモリ3への書き込みが発生するたびに、状態情報を生成する。さらに、状態情報生成部13は、オペレーティングシステム等のソフトウェアからの指示があった場合に、状態情報を生成する。
【0034】
アクセス制御部14は、プロセッサ2から不揮発性メインメモリ3へのデータの書き込み及び読み出し、不揮発性メインメモリ3におけるデータの消去など、プロセッサ2と不揮発性メインメモリ3との間におけるアクセスを制御する。本実施の形態において、不揮発性メインメモリ3への書き込み及び読み出しは、例えばページ単位で行われ、消去は例えばブロック単位で行われるとする。しかし、これには限定されず、他のデータサイズによって書き込み、読み出し、消去が行われるとしてもよい。
【0035】
本実施の形態において、アクセス制御部14は、アドレス発生部16、順序発生部17、書き込み制御部18を具備する。
【0036】
アドレス発生部16は、プロセッサ2から不揮発性メインメモリ3へのデータの書き込みが発生すると、所定の規則にそって、発生済みのアドレスの示す位置と書き込み対象のデータの書き込み位置が重ならないように、書き込みアドレスを発生させる。
【0037】
書き込みアドレスの発生方法の例として、アドレス発生部16は、所定の初期値から順に書き込み先となるアドレスの値を増加させていき、所定の最終値(初期値より大)に達すると、再び、所定の初期値から順に書き込み先となるアドレスの値を増加させていく。
【0038】
また、書き込みアドレスの発生方法の別の例として、アドレス発生部16は、所定の初期値から順に書き込み先となるアドレスの値を減少させていき、所定の最終値(初期値より小)に達すると、再び、所定の初期値から順に書き込み先となるアドレスの値を減少させていく。
【0039】
さらに、書き込みアドレスの発生方法の別の例として、アドレス発生部16は、1巡目において数スペースを空けて(例えば所定の間隔で)順に書き込み先のアドレスの値を発生させ、2巡目において1巡目で書き込みのなされなかった未使用領域において書き込み先のアドレスの値を順に発生させ、以下同様に、n巡目においてn−1巡目までで書き込みのなされなかった未使用領域において書き込み先のアドレスの値を順に発生させる動作を繰り返し、利用可能な未使用領域が所定値又は所定割合以下になった場合(例えば、利用可能な未使用領域がなくなった場合)に、上記の1巡目から再び同様の動作を繰り返す。
【0040】
さらに、書き込みアドレスの発生方法の別の例として、アドレス発生部16が、メモリ管理ユニット12のアドレス変換情報15を参照して、アドレス変換情報15で未使用のアドレス(物理アドレス)を、書き込みアドレスとして選択し、発生させる。
【0041】
以上のような書き込みアドレスの発生方法を用いることにより、発生済みのアドレスの示す位置と書き込み対象のデータの書き込み位置の重なりが少ない書き込みが可能となる。このアドレス発生部16の動作によって追記式の書き込みが実行される。ここで、追記式とは、後から付け足して書き加えていく方式であるとする。
【0042】
順序発生部17は、書き込みの新しさを判断するための順序情報を発生させる。この順序情報を用いることにより、追記式によりあるデータの値を更新した場合であってもこのデータの最新の値を求めることが可能になる。本実施の形態において、順序発生部17は、不揮発性メインメモリ3への書き込みが発生するたびに、カウントアップを実行し、このカウント値を順序情報として用いる。この順序情報を書き込み対象のデータと関係付けて不揮発性メインメモリ3に格納することで、例えば変数名などのような識別情報が同じデータに関する書き込みが不揮発性メインメモリ3の複数のエントリになされている場合に、順序情報の大きいデータが最新であることを判断可能となる。
【0043】
書き込み制御部18は、プロセッサ2から不揮発性メインメモリ3への書き込み処理を制御する。詳細は後述するが、不揮発性メインメモリ3は、データをエントリ単位で管理する。書き込み制御部18は、書き込み時に、書き込み対象データが書き込まれたエントリのV(Valid)フラグを1にセットする。このVフラグを用いることで、書き込み対象のエントリが有効か無効かを判断可能となる。また、書き込み制御部18は、不揮発性メインメモリ3上のエントリのVフラグが1であってもメモリ管理ユニット12で使用されていないと判断された場合には、このエントリに格納されているデータを消去し、Vフラグを0とする。さらに、書き込み制御部18は、この消去を行ったエントリに再度書き込みを行う場合に、再度書き込みを行った上で、このエントリのVフラグを1とする。
【0044】
書き込み制御部18は、所定数又は所定割合以上のエントリのVフラグが1となったと判断した場合(例えば全てのVフラグが1となった場合)に、例外処理を発生させ、ソフトウェアにより不揮発性メインメモリ3における不要エントリのクリーンアップを行い、該当する不要部分を消去してVフラグを0とする。
【0045】
本実施の形態において、オペレーティングシステムは、プロセッサ2から不揮発性メインメモリ3に書き込まれるデータ又はプログラムが発生した場合に、この書き込み対象のデータ又はプログラムが、シーケンシャルデータ又はシーケンシャルプログラムであるか、通常データ又は通常プログラムであるか判断する。
【0046】
シーケンシャルデータとは、連続的にアクセスされる一連のデータであり、シーケンシャルプログラムとは、連続的に実行される一連のプログラムであるとする。
【0047】
シーケンシャルデータとしては、例えば、ストリームデータ(映像)、ログデータなどがある。ストリームデータについては、読み出しが中心であり、書き込みがなされる頻度は少ない。これとは逆に、ログデータは、継続的に書き込みが行われるデータであり、読み出しが行われる頻度は少ない。
【0048】
ストリームデータ及びログデータの判別は、オペレーティングシステムによって行われ、ファイルの拡張子の検出、又はアプリケーションからメモリ割付API(Application Program Interface)が呼ばれた場合にデータ種別が指定されることにより判別される。なお、ストリームデータが編集可能な設定の場合などには、このストリームデータはシーケンシャルデータとしてメモリ割付されない場合がある。
【0049】
シーケンシャルデータの判別の方法として、オペレーティングシステムが、過去のアクセス履歴に基づいてシーケンシャルにアクセスされる頻度の高いデータを検出し、この検出されたデータをシーケンシャルデータと判別してもよい。
【0050】
シーケンシャルデータが判別された場合、例えば、オペレーティングシステムは、アドレス変換情報15に対して、検出されたシーケンシャルデータに対応するエントリの連続ブロックフラグ27を、シーケンシャルデータ又はシーケンシャルプログラムであることを示すフラグにセットする。ここで、連続ブロックフラグ27は、対応するエントリがシーケンシャルデータを格納するブロックのエントリであることを表すフラグである。
【0051】
通常データ及び通常プログラムは、それぞれ、シーケンシャルデータではないデータ及びシーケンシャルデータではないプログラムである。
【0052】
以下においては、シーケンシャルデータの場合について説明するが、シーケンシャルプログラムについても、シーケンシャルデータと同様に扱うことができる。
【0053】
また、本実施の形態では、シーケンシャルデータをブロック単位で管理する場合を例に説明するが、例えばページ単位など他のサイズで管理する場合も同様である。
【0054】
アドレス発生部16は、書き込まれるデータがオペレーティングシステムによって通常データと判断された場合に、発生済みのアドレスの示す位置と通常データの書き込み位置が重ならないように書き込みアドレスを発生させる。また、アドレス発生部16は、書き込まれるデータがオペレーティングシステムによってシーケンシャルデータと判断された場合に、シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す書き込みアドレスを発生させる。アドレス発生部16は、シーケンシャルデータがブロック領域の先頭から格納されるように、書き込みアドレスを発生させる。ここで、ブロック領域とは、ブロック単位のデータを格納するメモリの一領域である。ブロック領域は、ブロック単位で格納するデータのサイズにより決まる任意のサイズであり、例えば、1MB程度である。ブロック単位は、ベージサイズの整数倍の単位である。また、不揮発性メインメモリ3としてNAND型フラッシュメモリを用いる場合、例えば、本実施の形態のブロック領域のブロック単位を、NAND型フラッシュメモリのデータの消去単位である、所謂「ブロック単位」としてもよい。
【0055】
書き込み制御部18は、不揮発性メインメモリ3への書き込み対象のデータの書き込み時に、アドレス発生部16によって発生されたアドレスにより指定される位置に、順序発生部17によって発生された順序情報(カウンタ値)19、Vフラグ20「1」、書き込み対象のデータ21、状態情報フラグ22「0」、MMU情報23、Sフラグ26「1」又は「0」を書き込む。
【0056】
ここで、状態情報フラグ22は、当該エントリが状態情報の書き込みのためのエントリであるか否かを表わす情報である。該当エントリが状態情報の書き込みである場合には、状態情報フラグ22には1がセットされ、該当エントリが状態情報の書き込みでない場合には、状態情報フラグ22には0がセットされる。
【0057】
MMU情報23は、MMU12で管理されている各種情報であり、例えばアドレス変換情報15、連続ブロックフラグ27、連続ブロック数28を含む。
【0058】
書き込み制御部18は、状態情報生成部13によって新規の状態情報が発生された場合には、不揮発性メインメモリ3に対して、発生された状態情報24の書き込みを行う。この状態情報24の書き込み時は、書き込み制御部18は、アドレス発生部16によって発生されたアドレスによって指定される位置に、順序発生部17によって発生された順序情報19、Vフラグ20「1」、状態情報24、状態情報フラグ22「1」、MMU情報23、Sフラグ26を書き込む。
【0059】
書き込み制御部18は、アドレス発生部16によって通常データの書き込みアドレスが発生された場合に、発生された書き込みアドレスによって指定される位置に対して、順序発生部17によって発生された順序情報を対応付けて通常データを不揮発性メインメモリ3に書き込む。
【0060】
また、書き込み制御部18は、アドレス発生部16によってシーケンシャルデータの書き込みアドレスが発生された場合に、発生された書き込みアドレスに対して、順序発生部17によって発生された順序情報を対応付けてシーケンシャルデータを不揮発性メインメモリ3にシーケンシャルに書き込む。
【0061】
ここで、書き込み制御部18は、シーケンシャルデータの書き込みアドレスに基づいて、シーケンシャルデータを、不揮発性メインメモリ3のブロック領域の先頭から連続するように書き込む。
【0062】
書き込み制御部18は、シーケンシャルデータをすべて連続して格納できない場合には、シーケンシャルデータを複数のブロック領域に亘って書き込み、この複数のブロック領域が連続的な配置となるように書き込む。さらに、複数のブロック領域内でシーケンシャルデータが連続となるように書き込む。
【0063】
そして、書き込み制御部18は、シーケンシャルデータが不揮発性メインメモリ3のブロック領域の先頭から連続的に書き込まれる場合に、このシーケンシャルデータを格納する不揮発性メインメモリ3のブロック領域にSフラグ26として1を関係付ける。書き込み制御部18は、不揮発性メインメモリ3において複数のブロック領域に連続してシーケンシャルデータが書き込まれる場合には、このシーケンシャルデータが連続的に書き込まれている不揮発性メインメモリ3の複数のブロック領域に対して、Sフラグ26「1」を関係付ける。
【0064】
Sフラグ26は、不揮発性メインメモリ3に書き込まれたデータがシーケンシャルデータであるか否かを判断するための情報であり、1の場合にはシーケンシャルデータであることを表し、0の場合にはシーケンシャルデータでないことを表す。
【0065】
アクセス制御部14は、プロセッサ2が不揮発性メインメモリ3から通常データを読み出す場合、メモリ管理ユニット12のアドレス変換情報15に基づいて、論理アドレスを不揮発性メインメモリ3の物理アドレスに変換する。そして、アクセス制御部14は、物理アドレスに基づいて、不揮発性メインメモリ3から通常データを読み出す。
【0066】
アクセス制御部14は、プロセッサ2が不揮発性メインメモリ3からシーケンシャルデータを読み出す場合、メモリ管理ユニット12のアドレス変換情報15に基づいて、論理アドレスを不揮発性メインメモリ3の物理アドレスに変換する。加えて、アクセス制御部14は、アドレス変換情報15、連続ブロックフラグ27、連続ブロック数28、不揮発性メインメモリ3のSフラグ26に基づいて、不揮発性メインメモリ3において物理アドレスの示す位置から連続的に格納されているシーケンシャルデータを、順次読み出す。
【0067】
以下に、本実施の形態に係るアドレス変換情報15によるシーケンシャルデータの取り扱い例についてより詳細に説明する。
【0068】
上述したように、情報処理装置1は、シーケンシャルデータを、可能な限りブロック領域の先頭から連続して格納する。
【0069】
シーケンシャルデータが、ブロック領域の先頭から連続する複数のブロック領域に亘って格納された場合に、これらの複数の連続するブロック領域に関するSフラグは1に設定される。
【0070】
シーケンシャルデータが連続した複数のブロック領域に亘って格納される場合、メモリ管理ユニット12は、シーケンシャルデータのアドレス変換情報15を、シーケンシャルデータを格納する複数ブロック領域単位で管理する。また、別の管理方法として、メモリ管理ユニット12は、シーケンシャルデータのアドレス変換情報15を、ページ又はブロック単位で管理するとしてもよい。
【0071】
例えば、シーケンシャルデータが複数の連続するブロック領域に亘って格納される場合に、メモリ管理ユニット12は、シーケンシャルデータのアドレス変換情報15を1エントリで管理し、このエントリの連続ブロックフラグ27に1を設定するとともに、連続するブロック数(サイズ)を設定する。
【0072】
ここで、連続ブロックフラグ27は、アクセス変換情報15のエントリが、シーケンシャルデータを格納する複数ブロック領域についての情報か否か判断するために用いられる情報である。連続ブロックフラグ27は、1の場合には、シーケンシャルデータに関するエントリであることを表し、0の場合には、シーケンシャルデータではないデータに関するエントリであることを表す。連続ブロック数28は、シーケンシャルデータを連続して格納するブロック領域の数である。
【0073】
また、本実施の形態において、アクセス制御部14は、連続ブロック数28を用いなくても、例えば、不揮発性メインメモリ3におけるSフラグ1が連続して1であり続ける間、シーケンシャルデータが連続したブロック領域に格納されていると判断してもよい。ただし、この場合には、シーケンシャルデータを途中からアクセスする場合であっても、シーケンシャルデータを最初から辿る必要がある。
【0074】
このように、シーケンシャルデータが、不揮発性メインメモリ3の連続する複数のブロック領域に格納される場合、アドレス変換情報15において、シーケンシャルデータが格納されている不揮発性メインメモリ3の複数ブロック領域をアドレス変換情報15の1エントリで管理することにより、アドレス変換情報15の使用量(エントリ数)を減らすことができる。
【0075】
アクセス制御部14は、アドレス変換情報15において論理アドレスの示すエントリの連続ブロックフラグ27が1の場合、シーケンシャルデータに対するアクセスであると認識し、アクセス対象のシーケンシャルデータが格納されているブロック領域数を連続ブロック数28に基づいて認識する。
【0076】
そして、アクセス制御部14は、物理アドレスと連続ブロック数28に基づいて、不揮発性メインメモリ3に格納されているシーケンシャルデータを順次読み出す。
【0077】
本実施の形態において、アクセス制御部14は、シーケンシャルデータを連続して格納するブロック領域に対するガーベージコレクションが発生した場合に、この移動対象となった連続のブロック領域の記憶内容を、可能な限り、連続する他のブロック領域に移動する。
【0078】
図2は、本実施の形態に係る情報処理装置1におけるライトバックの一例を示すフローチャートである。
【0079】
キャッシュメモリ10のデータは、演算コア91〜94により更新されるため、定期的にキャッシュメモリ10のキャッシュラインを不揮発性メインメモリ3のエントリに書き戻す、ライトバックが必要となる。以下において、本実施形態の情報処理装置1のライトバックの処理工程について説明する。本実施の形態では不揮発性メインメモリ3へのキャッシュラインの書き込みは、上述のように追記式である。このため、本実施の形態のライトバックでは、キャッシュメモリ10のキャッシュラインは、アドレス発生部16により発生される不揮発性メインメモリ3の未使用のアドレスの示す位置に書き戻される。
【0080】
ライトバックが実行される場合、ステップS1において、アクセス制御部14のアドレス発生部16は、メモリ管理ユニット12を参照し、発生されたアドレスが未使用か否か判断する。
【0081】
発生されたアドレスが使用中の場合、ステップS2において、アドレス制御部14のアドレス発生部16は、次のアドレスを発生させ、処理は、上記ステップS1に戻る。これにより、現在使用中のページは新しいページで上書きされないことになる。不揮発性メインメモリ3における書き込み対象のアドレスは、次の空いているエントリのアドレスまでスキップされる。なお、ステップS1,S2のように、ライトバックが開始されてから未使用のアドレスを求めるのではなく、予め次の未使用のアドレスを検出しておくとしてもよい。
【0082】
発生されたアドレスが使用中でない場合、ステップS3において、書き込み制御部18は、ライトバック対象のキャッシュラインを、不揮発性メインメモリ3の未使用であり発生されたアドレスの示す位置に書き戻す。
【0083】
この時、書き込み制御部18は、メモリ管理ユニット12のアドレス変換情報15を、書き戻し後の状態を表わすように更新し、ライトバック対象のページについて、現在の順序情報19、メモリ管理ユニット12のアドレス変換情報15を含むMMU情報23を、不揮発性メインメモリ3に書き込む。また、書き込み制御部18は、Vフラグ20を1とし、状態情報フラグ22を0とし、Sフラグ26を0とし、不揮発性メインメモリ3に書き込む。
【0084】
これにより、順序情報19、Vフラグ20、ページ21、状態情報フラグ22、MMU情報23、Sフラグ26が、発生したアドレスによって示される不揮発性メインメモリ3の位置に書き込まれ、ライトバックが実行される。
【0085】
上記ステップS3の書き込み処理の後、アクセス制御部14のアドレス発生部16は、ステップS4において、新たなアドレスを発生させ、順序発生部17は、新たな順序情報を発生させる。
【0086】
状態情報24を不揮発性メインメモリ3に書き込む場合において、キャッシュメモリ10中にダーティラインが存在する場合には、まずこのダーティラインが不揮発性メインメモリ3に書き戻される。ダーティラインとは、メインメモリにデータの内容が反映されておらず、メインメモリとキャッシュメモリとの間でデータの内容が整合していないキャッシュメモリのキャッシュラインをいう。
【0087】
さらに、外部の2次記憶装置、外部アクセス装置、I/O装置などの装置において異常が発生している場合には、状態情報生成部13は、SYNCなどの操作により、これらの装置を復元可能な状態とし、その後状態情報24を生成する。そして、書き込み制御部18が、生成された状態情報24の書き込み処理を行う。
【0088】
図3は、本実施の形態に係る情報処理装置1におけるフェッチの一例を示すフローチャートである。
【0089】
ステップT1において、メモリ管理ユニット12は、アクセス対象のデータがキャッシュメモリ10に格納されているか(キャッシュヒットか)否か判断する。
【0090】
アクセス対象のデータがキャッシュメモリ10に格納されている場合、ステップT2において、演算コア91〜94は、キャッシュメモリ10上のデータをロードする。
【0091】
アクセス対象のデータがキャッシュメモリ10に格納されていない場合、ステップT3において、メモリ管理ユニット12は、メモリ管理ユニット12内に、このアクセス対象のデータに関するアドレス変換情報15が存在するか否か判断する。
【0092】
メモリ管理ユニット12のアドレス変換情報15にアクセス対象データのアドレスに関するエントリが存在する場合、ステップT4において、メモリ管理ユニット12は、アドレス変換情報15のアクセス対象データのエントリを参照し、論理アドレスを物理アドレスに変換する。
【0093】
メモリ管理ユニット12のアドレス変換情報15にアクセス対象データのアドレスに関するエントリが存在しない場合、ステップT5において、例外処理が実行される。
【0094】
例外処理が実行されると、ステップT6において、アクセス制御部14は、ソフトウェア処理により、アクセス対象データを、例えば、2次記憶装置4、外部アクセス装置5、I/O装置6などの装置から不揮発性メインメモリ3にロードする。メモリ管理ユニット12は、ロード後のエントリをアドレス変換情報15にセットし、アドレス変換情報15の更新を行う。その後処理は、ステップT4に移る。
【0095】
ステップT4の後、ステップT7において、アクセス制御部14は、不揮発性メインメモリ3の物理アドレスの位置に格納されているデータを読み出し、キャッシュメモリ10へロードする。また、アクセス制御部14は、必要であれば、直接、読み出したデータを演算コア91〜94にフィードする。
【0096】
図4は、本実施の形態に係る情報処理装置1の復元処理(再構成)の一例を示すフローチャートである。
【0097】
例えば、情報処理装置1の電源が再投入されると、プロセッサ2は、不揮発性メインメモリ3に格納されているコアプログラム7を読み出し、コアプログラム7を実行し、復元を行う。コアプログラム7は、演算コア91〜94のうちの少なくとも一つによって実行される。以下においては、演算コア91においてコアプログラム7が実行される場合を例として説明する。
【0098】
ステップU1において、コアプログラム7を実行する演算コア91は、不揮発性メインメモリ3に格納されたデータ部25のエントリを順に読み出す。
【0099】
そして、コアプログラム7を実行する演算コア91は、Vフラグ20が「1」のエントリの中から、順序情報19が最新のエントリを求め、この最新のエントリのアドレス(最新のアドレス)を求める。さらに、コアプログラム7を実行する演算コア91は、状態情報フラグ22が「1」のエントリの中から、順序情報19が最新のエントリの状態情報24(最新の状態情報)、順序情報19が最新のエントリのMMU情報23(最新のMMU情報)を求める。
【0100】
ステップU2において、コアプログラム7を実行する演算コア91は、Vフラグ20が「1」で順序情報19が最新のエントリのアドレスに対する次のアドレスを、アドレス発生部16に発生させる。
【0101】
コアプログラム7を実行する演算コア91は、Vフラグ20が「1」で順序情報19が最新のエントリの順序情報に対する次の順序情報を、順序発生部17に発生させる。
【0102】
コアプログラム7を実行する演算コア91は、Vフラグ20が「1」で順序情報19が最新のエントリのMMU情報23に基づいて、メモリ管理ユニット12を復元する。
【0103】
コアプログラム7を実行する演算コア91は、状態情報フラグ22が「1」で順序情報19が最新の状態情報24をロードし、このロードした状態情報24に基づいて、プロセッサ2の状態を復元する。
【0104】
ステップU3において、演算コア91は、コアプログラム7の実行から抜けて、ロードされた状態情報24の示す状態から動作を再開する。
【0105】
図5は、本実施の形態に係る情報処理装置1におけるメモリ管理ユニット12のエントリの登録処理の一例を示すフローチャートである。この図5では、書き込み対象が通常データ又はシーケンシャルデータの場合を例に説明するが、書き込み対象が通常プログラム又はシーケンシャルプログラムの場合も同様である。
【0106】
ステップV1において、メモリ管理ユニット12は、オペレーティングシステムによる判断結果に基づいて、書き込み対象データがシーケンシャルデータか否か判断する。
【0107】
書き込み対象データがシーケンシャルデータでない場合、ステップV2において、メモリ管理ユニット12は、アクセス変換情報15の新たなエントリの連続ブロックフラグ27を0に設定し、ステップV3において、新たなエントリを、通常データを格納する不揮発性メインメモリ3のエリアに割り付ける。その後、ステップV7が実行される。
【0108】
書き込み対象データがシーケンシャルデータの場合、ステップV4において、メモリ管理ユニット12は、アクセス変換情報15の新たなエントリの連続ブロックフラグ27を1に設定し、ステップV5において、アクセス変換情報15の新たなエントリに対してオペレーティングシステムから受けた連続ブロック数28を設定し、ステップV6において、新たなエントリを、シーケンシャルデータを格納する不揮発性メインメモリ3のエリアに割り付ける。その後、ステップV7が実行される。
【0109】
ステップV7において、メモリ管理ユニット12は、十分なエリアが確保され、割り付けが正しく行われたか判断する。
【0110】
割り付けが正しく行われた場合、メモリ管理ユニット12のエントリ登録処理は終了する。
【0111】
割り付けが正しく行われていない場合、ステップV8において、いずれかの演算コアは、ソフトウェアによる例外処理を実行し、メモリ管理ユニット12は、必要なエントリを確保し、割り付けを行う。その後、メモリ管理ユニット12のエントリ登録処理は終了する。
【0112】
本実施の形態において、情報処理装置1は、通常データを格納する通常データ格納領域と、シーケンシャルデータを格納するシーケンシャルデータ格納領域とを分けているとしてもよい。
【0113】
図6は、通常データ格納領域と、シーケンシャルデータ格納領域とを区別した本実施の形態に係る情報処理装置1の一例を示すブロック図である。
【0114】
情報処理装置1において、不揮発性メインメモリ3は、通常データ格納領域29と、シーケンシャルデータ格納領域30とを具備する。通常データ格納領域29と、シーケンシャルデータ格納領域30とは、分離されているか、又は、異なるメモリユニットに格納される。
【0115】
例えば、シーケンシャルデータ格納領域30のアクセス回数の上限が、通常データ格納領域29のアクセス回数の上限よりも少ない場合、シーケンシャルデータのうちオペレーティングシステムなどから書き込み頻度が小さいことが示されたシーケンシャルデータは、書き込み頻度が大きいシーケンシャルデータよりも優先的にシーケンシャルデータ格納領域30に格納されるとしてもよい。
【0116】
例えば、不揮発性メインメモリ3をMLC(Multi Level Cell)領域とSLC(Single Level Cell)領域とに分け、データサイズの大きいシーケンシャルデータはSLC領域よりも集積度が高いMLC領域に優先的に割り付けられ、通常データはMLC領域よりも集積度が低いSLC領域に優先的に割り付けられるとしてもよい。
【0117】
例えば、SLCタイプのNAND型フラッシュメモリとMLCタイプのNAND型フラッシュメモリとを比較すると、SLCタイプのNANDフラッシュメモリは、MLCタイプのNAND型フラッシュメモリと比べて、アクセス速度は速く、信頼性は高いが、素子の集積度が低く、大容量化に向かない。これに対して、MLCタイプのNAND型フラッシュメモリは、SLCタイプのNAND型フラッシュメモリと比べて、アクセス速度は遅く、信頼性は低いが、素子の集積度が高く、大容量化に向いている。
【0118】
なお、本実施の形態において、耐久性とは、例えば書き込みに対する耐久性を意味する。信頼性とは、データ読み出しにおけるデータの欠損の起こりにくさを意味する。
【0119】
本実施の形態において、シーケンシャルデータがストリームデータの場合、このシーケンシャルデータが書き換えられる回数又は頻度は通常データが書き換えられる回数又は頻度よりも少ないと考えられる。そこで、不揮発性メインメモリ3のうち、書き込み回数が上限書き込み回数に近い領域(書き込み回数に余裕がない領域)がシーケンシャルデータ格納領域30として使用され、書き込み回数が上限書き込み回数まで余裕がある領域が通常データ格納領域29として使用されるとしてもよい。例えば、オペレーティングシステムによって、不揮発性メインメモリ3の各領域における書き込み回数と上限書き込み回数との比較と、通常データ格納領域29とシーケンシャルデータ格納領域30との決定が行われる。
【0120】
シーケンシャルデータ格納領域30であっても、書き込み回数の少ない領域(例えば、書き込み回数が所定数未満の領域又は書き込み回数が上限書き込み回数の所定の割合未満の領域)は、通常データ格納領域29に変更されるとしてもよい。これとは逆に、通常データ格納領域29であっても、書き込み回数の多い領域(例えば、書き込み回数が所定数以上の領域又は書き込み回数が上限書き込み回数の所定の割合以上の領域)は、シーケンシャルデータ格納領域30に変更されるとしてもよい。
【0121】
以上説明した本実施の形態に係る情報処理装置1の効果について説明する。
【0122】
本実施の形態では、シーケンシャルデータ又はシーケンシャルプログラムを不揮発性メインメモリ3に対して書き込む場合に、シーケンシャルデータ又はシーケンシャルプログラムをブロック単位で連続的に書き込む。これにより、連続的にアクセスされるシーケンシャルデータ又はシーケンシャルプログラムに対するアクセス効率の向上を図ることができる。
【0123】
さらに、本実施の形態では、シーケンシャルデータ又はシーケンシャルプログラムをブロック領域で格納し、メモリ管理ユニット12がシーケンシャルデータ又はシーケンシャルプログラムのアドレス変換情報15をブロック領域単位で管理する。これにより、メモリ管理ユニット12のアドレス変換情報の使用量を減らすことが可能となる。
【0124】
以上のように、本実施形態では、シーケンシャルデータのアクセス効率及び管理効率を向上させることができる。
【0125】
また、本実施の形態においては、不揮発性半導体メモリへのアクセスを管理する場合において、ハードウェア構成を複雑化させることなく、動作を高速化させ、高い信頼性を実現させることができる。さらに、本実施の形態においては、不揮発性半導体メモリの寿命を延ばすことができる。
【0126】
また、従来の情報処理装置では、メインメモリに揮発性メモリが使用されているため、再起動のたびにオペレーティングシステム、プログラム、データをロードする必要があった。これに対して、本実施の形態に係る情報処理装置1においては、メインメモリに不揮発性半導体メモリが使用されるため、再起動する場合であっても、必要なプログラム及びデータが不揮発性メインメモリ3に格納されており、システムブート、プログラム及びデータのロードを削減すること又は不要とすることができ、情報処理装置1の処理を高速化させることができる。すなわち、本実施の形態に係る情報処理装置1では、プロセッサ2のメインメモリに不揮発性半導体メモリを使用し、処理経過を不揮発性メインメモリ3に書き込むことにより、バックアップ電源がなくても情報処理装置1の状態を保持可能としている。また、情報処理装置1においては、プログラムの起動が高速化される。
【0127】
さらに、本実施の形態に係る情報処理装置1においては、状態情報24の生成イベントが発生するたびに、状態情報24が不揮発性メインメモリ3に格納されるため、電源が急に切断された場合であっても、最新の状態情報24を読み出してプロセッサ2の状態を電源切断前の状態に復元させることができ、情報処理装置1の動作を再実行させることができる。
【0128】
さらに、本実施の形態においては、キャッシュメモリ10のキャッシュサイズと、不揮発性メインメモリ3の書き込みサイズ、データ・プログラム21及び状態情報24の書き込みサイズとを一致又は整数倍の関係とする。これにより、キャッシュメモリ10と不揮発性メインメモリ3との間で、データ又はプログラムのサイズを変換させる必要がなく、サイズの変換ハードウェア量を削減させることができ、不揮発性メインメモリ3に対する制御を簡略化でき、情報処理装置1の処理を効率化させることができる。
【0129】
さらに、本実施の形態においては、必要であれば、キャッシュメモリ10からのライトバックのレート制御を行うとしてもよい。演算コア91〜94はローカルメモリを備えるとしてもよいが、不揮発性メインメモリ3には、キャッシュメモリを介してアクセスする。これにより、アクセス速度を高速化することができる。
【0130】
さらに、本実施の形態において、例えば、不揮発性メインメモリ3として、NAND型フラッシュメモリ又はNOR型フラッシュメモリなどを用いた場合、従来行われていたウェアレベリングを行うことなくメインメモリとして利用することができる。
【0131】
(第2の実施の形態)
本実施の形態においては、第1の実施の形態の変形例について説明する。
【0132】
本実施の形態において、シーケンシャルデータが格納される連続する複数のブロック領域は、必ずしも実際の物理記憶媒体上で連続して配置されている必要はなく、シーケンシャルにデータをアクセス及びデータ転送することが効率的、効果的な配置であればよい。
【0133】
図7は、連続してアクセスすることが効果的な複数のメモリユニットを備える不揮発性メインメモリ3の一例を示すブロック図である。
【0134】
不揮発性メインメモリ3は、複数のメモリユニット(メモリチップ)31,32を含む。この図7では、シーケンシャルデータの格納されるブロック領域数が4、メモリユニットが2つの場合を例に説明するが、シーケンシャルデータの格納されるブロック領域数及びメモリユニットは2以上であればよい。
【0135】
不揮発性メインメモリ3が複数のメモリユニット31,32を含む場合、アクセス制御部14は、同じメモリユニットに対して連続してシーケンシャルデータSD1〜SD4を格納するのではなく、格納先のメモリユニット31,32を切り替えながらシーケンシャルデータSD1〜SD4を格納する。
【0136】
例えば、第1のメモリユニット31の第0ブロック領域31−0、第2のメモリユニット32の第0ブロック領域32−0、第1のメモリユニット31の第1ブロック領域31−1、第2のメモリユニット32の第1ブロック領域32−1、という順序で、シーケンシャルデータSD1〜SD4を格納する。この場合、第1のメモリユニット31の第0ブロック領域31−0にアクセスしつつ、第2のメモリユニット32の第0ブロック領域32−0をアクセス可能であり、第2のメモリユニット32の第0ブロック領域32−0へのアクセスを、第1のメモリユニット31の第0ブロック領域31−0へのアクセスと重複(並列化)させることができ、高速にデータアクセスを行うことができる。
【0137】
図8は、本実施の形態に係る不揮発性メインメモリ3の論理的なデータ格納位置と物理的なデータ格納位置との関係の第1の例を示すブロック図である。
【0138】
シーケンシャルデータ格納領域30には、論理的に連続した状態でシーケンシャルデータSD1〜SD4が格納される。しかしながら、物理的には、シーケンシャルデータSD1〜SD4は、メモリユニット31,32を切り替えながら格納される。
【0139】
図9は、本実施の形態に係る不揮発性メインメモリ3の論理的なデータ格納位置と物理的なデータ格納位置との関係の第2の例を示すブロック図である。
【0140】
この図9において、メモリユニット31は、MLC領域31MとSLC領域31Sを具備する。メモリユニット32は、MLC領域32MとSLC領域32Sを具備する。
【0141】
不揮発性メインメモリ3において、通常データは、論理的には、通常データ格納領域29に格納されるが、物理的には、メモリユニット31,32のSLC領域31S,32Sに格納される。
【0142】
シーケンシャルデータは、論理的には、シーケンシャルデータ格納領域30に格納されるが、物理的には、メモリユニット31,32のMLC領域31M,32Mに格納される。
【0143】
図10は、本実施の形態に係る不揮発性メインメモリ3の論理的なデータ格納位置と物理的なデータ格納位置との関係の第3の例を示すブロック図である。この図10の関係では、上記図8及び図9の関係が組み合わされている。
【0144】
不揮発性メインメモリ3において、通常データは、論理的には、通常データ格納領域29に格納されるが、物理的には、メモリユニット31,32のSLC領域31S,32Sに格納される。
【0145】
シーケンシャルデータ格納領域30には、論理的に連続した状態でシーケンシャルデータSD1〜SD4が格納される。物理的には、シーケンシャルデータSD1〜SD4は、メモリユニット31,32のMLC領域31M,32Mを切り替えながら、それぞれブロック領域31−0,32−0,31−1,32−1の順で格納される。
【0146】
本実施の形態においては、シーケンシャルデータのアクセスを並列化することができ、高速化することができる。
【0147】
(第3の実施の形態)
本実施の形態においては、上記第1及び第2の実施の形態に係る情報処理装置1の変形例であり、キャッシュメモリが階層化された構成を持つ情報処理装置について説明する。
【0148】
図11は、本実施の形態に係る情報処理装置の構成の一例を示すブロック図である。
【0149】
情報処理装置33は、少なくとも一つのプロセッサ(この図11の例では4つ)341〜344、制御装置35、不揮発性メインメモリ3を備えている。
【0150】
情報処理装置33は、2次記憶装置4、外部アクセス装置5、I/O装置6を具備する。不揮発性メインメモリ3には、コアプログラム7、オペレーティングシステム60が格納されている。プロセッサ341〜344及び制御装置35は、オペレーティングシステム60を実行する。プロセッサ341〜344は、不揮発性メインメモリ3のデータD1,D2をアクセスしつつ、プログラムP1,P2を実行する。
【0151】
それぞれのプロセッサ341〜344は、それぞれ1次キャッシュメモリ361〜364を備えている。プロセッサ341〜344は、1次キャッシュメモリ361〜364においてキャッシュミスが発生すると、アクセス対象のアドレスを制御装置35に送信する。
【0152】
制御装置35は、2次キャッシュメモリ10、ライトバッファ11、状態情報生成部13、アクセス制御部14とメモリ管理ユニット12とを含むメモリ管理装置201を備えている。この制御装置35によって実行される例えばライトバック、フェッチ、復元などの各種処理は、上記第1の実施の形態の場合と同様である。
【0153】
なお、本実施の形態においては、1次キャッシュメモリ361〜364と2次キャッシュメモリ10とから構成される2階層の場合を例に説明しているが、キャッシュメモリの階層は3階層以上であっても同様に制御装置35を適用可能である。
【0154】
本実施の形態において、プロセッサ341〜344は、1次キャッシュメモリ361〜364、2次キャッシュメモリ10を介して不揮発性メインメモリ3をアクセスする。これにより、プロセッサ341〜344によるアクセス処理を高速化することができる。
【0155】
(第4の実施の形態)
本実施の形態においては、上記第1乃至第3の実施の形態に係る情報処理装置に、書き込み回数チェック部及び異常検出部を備えた場合について説明する。なお、本実施の形態においては、上記第1の実施の形態に係る情報処理装置1に書き込み回数チェック部及び異常検出部を備えた場合について説明するが、第2及び第3の実施の形態に係る情報処理装置など他の形態の情報処理装置についても同様に適用可能である。
【0156】
図12は、本実施の形態に係る情報処理装置の構成の一例を示すブロック図である。
【0157】
本実施の形態に係る情報処理装置37のプロセッサ38は、メモリ管理装置202を具備する。さらに、メモリ管理装置202は、メモリ管理ユニット39、アクセス制御部43、異常検出部46を具備する。
【0158】
本実施の形態に係るメモリ管理ユニット39は、アドレス変換情報15に加えて、不揮発性メインメモリ3の領域(例えばアドレス領域又はブロック領域)毎に、書き込み回数を表わす書き込み回数情報40と、Bad情報41とを備える。
【0159】
Bad情報41は、不揮発性メインメモリ3のそれぞれの領域について、書き込み回数情報40の示す書き込み回数が上限を超えた場合に、異常を示す値となる。なお、Bad情報41は、不揮発性メインメモリ3のデータ部42にも格納される。
【0160】
本実施の形態において、メモリ管理ユニット39は、不揮発性メインメモリ3が書き込まれるタイミングで、書き込み回数情報40を更新する(書き込み対象の領域又はエントリに関する書き込み回数に1を加える)。
【0161】
アクセス制御部43の書き込み制御部44は、書き込み回数情報40を、順序情報19に対応づけて不揮発性メインメモリ3の該当領域に格納する。
【0162】
アクセス制御部43には、書き込み回数チェック部45が備えられている。書き込み回数チェック部45は、不揮発性メインメモリ3への書き込み時に、書き込み先の領域の書き込み回数をチェックし、この書き込み回数が上限を表わす所定値を超える場合又は上限に対する所定の割合になった場合に例外処理を発生させる。例外処理では、ソフトウェアが起動され、このソフトウェアにより必要な処理が実行される。
【0163】
例えば、このソフトウェアによる例外処理では、メモリ管理ユニット39と不揮発性メインメモリ3に対して、書き込み回数が上限を超えた領域のエントリにおけるBad情報41に異常を示す値をセットし、書き込み回数が上限を超えたエントリへの書き込みを行わないようにする。メモリ管理ユニット32は、Bad情報41が異常を表わすエントリへの書き込みを禁止する。
【0164】
さらに、本実施の形態に係る情報処理装置37において、プロセッサ38は、異常検出部46を備えている。異常検出部46としては例えばECC回路などが用いられる。異常検出部46は、ビット誤り訂正、訂正不可能エラー検出、例外発生を行う。
【0165】
上記の書き込み回数チェック部45では、書き込み回数が上限を超えた場合に使用不可としているが、書き込み回数が上限を超える前であってもビットエラーが発生する場合がある。
【0166】
このようなエラーに対応するために、異常検出部46は、不揮発性メインメモリ3に対するビットエラー検出を行う。さらに、異常検出部46は、発生したビットエラーを訂正可能な場合には、訂正を行う。そして、異常検出部46は、訂正不可能なビットエラーが発生した場合に、例外処理を発生させ、ソフトウェアにより必要な処理を行う。例えば、このソフトウェアによる例外処理により、メモリ管理ユニット39と不揮発性メインメモリ3に対して、訂正不可能なエラーの発生した領域のエントリにおけるBad情報41に異常を示す値をセットし、訂正不可能なエラーの発生したエントリに対して書き込みを行わないようにする。メモリ管理ユニット39は、Bad情報41が異常を示すエントリへの書き込みを禁止する。
【0167】
以上説明した本実施の形態においては、不揮発性メインメモリ3への書き込みに異常が発生した場合に、異常の発生した領域の使用禁止、ユーザへの取り替え指示、など適当な処理をソフトウェアにより行うことができる。
【0168】
上記各実施の形態においては、キャッシュメモリからのライトバックのレート制御を行うとしてもよい。
【0169】
(第5の実施の形態)
上記各実施の形態において、不揮発性メインメモリ3の格納領域は、例えばプログラム、データ、状態情報など書き込まれる内容の種類に応じて分けられるとしてもよい。
【0170】
図13は、プログラム、データ、状態情報が複数のデータ部(格納領域)に分けて格納される不揮発性メインメモリ3の一例を示すブロック図である。
【0171】
アクセス制御部14,43のアドレス発生部16は、書き込まれる内容がプログラム21aか、データ21bか、状態情報24かを判断する。そして、アドレス発生部16は、書き込まれる内容がプログラム21aの場合には、書き込み対象のプログラム21aがデータ部(格納領域)25Aに格納されるようにアドレスを発生させる。アクセス制御部14,43は、書き込まれる内容がデータ21bの場合には、書き込み対象のデータ21bがデータ部(領域)25Bに格納されるようにアドレスを発生させる。アクセス制御部14,43は、書き込まれる内容が状態情報24の場合には、書き込み対象の状態情報24がデータ部(領域)25Cに格納されるようにアドレスを発生させる。それぞれの書き込まれる内容には、順序情報19、Vフラグ20、MMU情報23、が関連付けられる。
【0172】
データ部25A,25Bに書き込まれる内容には、Sフラグ26が関連付けられる。
【0173】
なお、MMU情報23についても、他の格納領域に格納されるとしてもよい。
【0174】
(第6の実施の形態)
本実施の形態においては、上記第1乃至第5の実施の形態の変形例について説明する。なお、以下においては上記第1の実施の形態の変形例について説明するが、上記第2乃至第5の実施の形態の変形例についても同様である。
【0175】
図14は、本実施の形態に係る情報処理装置の構成の一例を示すブロック図である。
【0176】
メモリ管理装置201のアクセス制御部14は、さらに、性能低下検出部48を具備する。
【0177】
コアプログラム7は、性能低下抑制プログラム49を具備する。
【0178】
不揮発性メインメモリ3において書き込み可能な領域(書き込み可能なエントリ数)が少なくなると、不揮発性メインメモリ3に対するアクセスについて性能が低下する場合がある。また、書き込み可能な領域がなくなると、処理の継続が不可能である。
【0179】
性能低下検出部48は、情報処理装置1においてプロセッサ2から不揮発性メインメモリ3へのアクセスについて性能低下が発生しているかを検出する。例えば、性能低下検出部48は、書き込み領域を探す時間が設定値を超えた場合、書き込み可能エントリ数が設定値又は設定割合以下になった場合、又は、この2つの組み合わせが発生した場合に、性能低下の発生を検出する。
【0180】
性能低下検出部48は、プロセッサ2から不揮発性メインメモリ3へのアクセスについて性能低下の発生が検出された場合に、プロセッサ2に例外コマンドを発する。
【0181】
プロセッサ2は、例外コマンドが発生された場合に、コアプログラム7内の性能低下抑制プログラム49を実行する。
【0182】
この性能低下抑制プログラム49にそって、プロセッサ2は、ガーベージコレクションなどのような性能低下を抑制する処理を実行する。
【0183】
性能低下抑制プログラム49は、例えば、現在の不揮発性メインメモリ3内をサーチし、複数のエントリのうち一つにまとめられるものを一つにまとめる処理、不揮発性メインメモリ3内で有効なデータと未使用のデータ(消去されたデータ)とが混在する場合に、有効なデータのみを集めて再配置する処理、アクセス頻度の低いデータ、重要度又は優先度の低いデータ、使用頻度の低いデータを他のメモリに移動させて空き領域を増やす処理などのような各種の処理、又は各種の処理の組み合わせを実行する。
【0184】
以上説明した本実施の形態においては、書き込み可能領域が少なくなるなどの理由で情報処理装置1の性能が低下することを防止することができる。
【0185】
性能低下抑制プログラム49の処理を、通常の処理と並行して実行することで、通常の処理への影響を最小限に抑えることができる。
【0186】
また、性能低下抑制プログラム49の処理を行う専用のプロセッサが備えられることで、例外処理によってプロセッサ2の能力が低下することを抑制することができる。
【0187】
上記各実施の形態の制御は、不揮発性半導体メモリをメインメモリではない他の目的で利用する場合にも適用可能である。
【0188】
(第7の実施の形態)
上記各実施の形態においては、メインメモリとして、不揮発性メインメモリ3が利用されている。
【0189】
しかしながら、上記各実施の形態における不揮発性メインメモリ3に代えて、性質が互いに異なる異種の半導体メモリが混合された混成メモリがメインメモリとして利用されるとしてもよい。
【0190】
図15は、本実施の形態に係る混成メモリを含む情報処理装置の一例を示すブロック図である。
【0191】
図16は、本実施の形態に係る情報処理装置に用いられるプログラム及びデータの一例を示すブロック図である。
【0192】
情報処理装置54は、キャッシュメモリ55を備えた少なくとも一つのプロセッサ56、メモリ管理装置57、混成メモリ52を具備する。
【0193】
プロセッサ56は、メモリ管理装置57を介して、混成メモリ52に接続されている。メモリ管理装置57は、例えば、上記各実施の形態に係るアクセス制御部14,43と同様の機能を具備するアクセス制御部59を備えている。また、メモリ管理装置57は、メモリ管理ユニット12,39の機能を具備する。本実施の形態において、メモリ管理装置57は、アドレス発生部16、順序情報発生部17、書き込み制御部18を具備するとする。
【0194】
混成メモリ52は、複数の種別の半導体メモリを組み合わせて構成される。本実施の形態では、混成メモリ52は、例えば、揮発性半導体メモリ52a、不揮発性半導体メモリ58を具備する。さらに、この不揮発性半導体メモリ58は、不揮発性半導体メモリ52b,52cを備える。
【0195】
揮発性半導体メモリ52aとしては、例えば、DRAMが利用されるが、DRAMに代えて、FPM−DRAM(Fast Page Mode Dynamic Random Access Memory)、EDO−DRAM(Extended Data Out Dynamic Random Access Memory)、SDRAM(Synchronous Dynamic Random Access Memory)などを用いてもよい。
【0196】
揮発性半導体メモリ52aに代えて、例えばMRAMなどの不揮発性半導体メモリを用いるとしてもよい。
【0197】
不揮発性半導体メモリ52bは、例えば、SLCタイプのNAND型フラッシュメモリである。不揮発性半導体メモリ52cは、例えばMLCタイプのNAND型フラッシュメモリである。
【0198】
なお、不揮発性半導体メモリ52b,52cとして、NAND型フラッシュメモリに代えて、他の不揮発性半導体メモリを用いることもできる。
【0199】
本実施の形態において、揮発性半導体メモリ52aは、不揮発性半導体メモリ52bよりも信頼性又は耐久性が高く、アクセス回数の上限が多いとする。また、不揮発性半導体メモリ52bは、不揮発性半導体メモリ52cよりも信頼性又は耐久性が高く、アクセス回数の上限が多いとする。
【0200】
アクセス制御部59のアドレス発生部16は、揮発性半導体メモリ52aのアクセス回数又はアクセス頻度が、不揮発性半導体メモリ52bのアクセス回数又はアクセス頻度よりも多くなり、不揮発性半導体メモリ52bのアクセス回数又はアクセス頻度が、不揮発性半導体メモリ52cのアクセス回数又はアクセス頻度よりも多くなるように、混成メモリ52における書き込み先のメモリを選択する。
【0201】
このように、書き込み先のメモリは、書き込み対象データのアクセス回数、アクセス頻度、重要度などの情報に基づいてアドレス発生部16によって選択される。
【0202】
アクセス頻度は、アクセスの発生する頻度を表す値である。アクセス頻度は、例えば、プロセスの優先度、ファイルの形式情報、アクセスパターン、ELFフォーマットのセグメントなどに基づいて決定される。例えば、メディアファイルに関連するデータの書き込み頻度は、低く設定される。例えば、アクセスパターンがシステムコールで指定されたパーミッションの場合には、アクセス頻度は高く設定され、アクセスパターンがファイルのパーミッションの場合には、アクセス頻度は低く設定される。例えば、リードオンリーのセクションで構成されるセグメントに対するアクセス頻度のうちの書き込み頻度は、低く設定される。アクセス頻度には、値が変化しない静的アクセス頻度と、値がアクセス状況に応じて変化する動的アクセス頻度との2種類があるとする。動的アクセス頻度は、データ配置を効果的に行うためにデータのアクセス回数に基づいて求められる値である。動的アクセス頻度としては、例えば、アクセス回数と時間に関する情報とに基づいて算出される値を用いることができる。例えば、動的アクセス頻度は、単位時間あたりのアクセス回数としてもよい。
【0203】
重要度は、データの重要さを表す値であり、値が変化しない静的重要度と、値がアクセス状況に応じて変化する動的重要度との2種類があるとする。静的重要度は、例えば、データの種別(ファイル形式)、ユーザによって設定された設定情報に基づいて決定される。動的重要度は、アクセス時刻などに基づいて決定される。例えば、実行可能ファイルに関連するデータに対しては、静的重要度が高く設定される。例えば、メディアファイルに関連するデータに対しては、静的重要度が中レベルに設定される。例えば、ファイルの保存されているフォルダがゴミ箱又はメールボックスの場合、このファイルに関連するデータに対して、静的重要度は低く設定される。例えば、最終アクセス時刻から現在までの間隔に比例して、書き込み対象データの動的重要度は減少するように設定される。
【0204】
情報処理装置54は、オペレーティングシステム60を実行する。このオペレーティングシステム60は、データ固有情報管理部61、メモリ使用情報管理部62を具備する。
【0205】
情報処理装置54は、オペレーティングシステム60のデータ固有情報管理部61により、データ固有情報631〜63nを管理する。
【0206】
データ固有情報631〜63nは、各データ(プログラムなどでもよい)641〜64nについて、アクセス頻度、アクセス回数、重要度のうちの少なくとも一つなどのデータ固有の情報を含む。
【0207】
すなわち、情報処理装置1で扱われるデータ641〜64nには、そのデータ641〜64nに対するデータ固有情報631〜63nが関係付けられている。データ固有情報631〜63nには、各データ641〜64nのアクセス頻度が含まれる。データ固有情報管理部61は、データ641〜64nに対する書き込み又は読み出しが発生した場合に、そのデータ641〜64nのデータ固有情報631〜63nを更新する。
【0208】
なお、データ固有情報631〜63nは、各データ641〜64nから分離された状態で管理されるとしてもよい。
【0209】
情報処理装置54は、オペレーティングシステム60のメモリ使用情報管理部62により、メモリ使用情報65を管理する。
【0210】
メモリ使用情報65は、各メモリ52a〜52cの使用量又は使用率、各メモリ52a〜52cの各領域の使用量又は使用率などのようなメモリ52a〜52cの使用状況を示す情報を含む。例えば、メモリ使用情報65は、各メモリ52a〜52cの「アクセス回数/アクセス回数の上限」、各メモリ52a〜52cの各領域の「アクセス回数/アクセス回数の上限」、各メモリ52a〜52cの「使用容量/全容量」、各メモリ52a〜52cの各領域のアクセス回数、アクセス頻度、などを含む。例えば、混成メモリ52へのアクセスが実行されると、メモリ使用情報管理部62は、メモリ使用情報65に対して、アクセスされたメモリの使用量又は使用率、アクセスされた領域の使用量又は使用率、アクセス回数、アクセス頻度などの情報を更新する。本実施の形態において、メモリ使用情報65は、上記第4の実施の形態の書き込み回数情報40を含むとする。
【0211】
情報処理装置54は、オペレーティングシステム60により、メモリ固有情報66を管理する。
【0212】
メモリ固有情報66は、混成メモリ52の各メモリ52a〜52cのアクセス回数の上限(寿命情報、耐久性情報)などのようなメモリ固有の情報を含む。
【0213】
例えば、アクセス制御部59のアドレス発生部16は、オペレーティングシステム60によって管理されているデータとファイルとの関係を示す情報、データ固有情報631〜63nなどに基づいて、書き込み対象データのアクセス回数、アクセス頻度、重要度を求め、この書き込み対象データのアクセス回数、アクセス頻度、重要度に基づいて書き込み対象データの評価値を算出する。この評価値は、アクセス回数、アクセス頻度、重要度が大きいほど、大きい値となる。そして、アドレス発生部16は、書き込み対象データの評価値と、メモリ使用情報65と、メモリ固有情報66と、メモリの選択で用いられるメモリ選択しきい値とに基づいて、書き込み先のメモリを選択する。アドレス発生部16は、評価値の値が大きいデータほど、不揮発性半導体メモリ52bよりも揮発性半導体メモリ52aを優先して選択し、揮発性半導体メモリ52cよりも揮発性半導体メモリ52bを優先して選択する。なお、本実施の形態において、メモリ選択しきい値は、メモリ固有情報66の一要素として予め設定されているとしてもよく、メモリ使用情報65などに基づいて動的に算出されるとしてもよい。
【0214】
アクセス発生部16は、混成メモリ52における複数のメモリのうち、選択されたメモリに対して、上記第1乃至第6の実施の形態で説明した追記式の書き込みを行うためのアドレスを発生させる。
【0215】
メモリ管理装置57によるメモリ52a〜52cの選択についてより具体的に説明する。
【0216】
メモリ管理装置57は、データ641の書き込み時に、書き込み対象のデータ641のデータ固有情報631、メモリ使用情報65、メモリ固有情報66を調べ、揮発性半導体メモリ52a、不揮発性半導体メモリ52b、不揮発性半導体メモリ52cのうち書き込み耐性に余裕のあるいずれかのメモリを書き込み先のメモリとして選択する。この選択により、高性能で、安価で、大容量のメモリを、長期間使用することが可能となる。
【0217】
例えば、メモリ管理装置57は、書き込み対象データ641のデータ固有情報631に基づいて、書き込み対象データ641のアクセス頻度が高い場合に書き込み先として耐久性の高いSLCタイプの不揮発性半導体メモリ52bを選択し、書き込み対象データ641のアクセス頻度が低い場合に書き込み先として耐久性の低いMLCタイプの不揮発性半導体メモリ52cを選択する。これにより、混成メモリ52のコスト、性能、アクセス速度、寿命の最適化を図ることができる。
【0218】
例えば、メモリ管理装置57のアクセス制御部59は、書き込み対象データ641がストリームデータの場合、このストリームデータの書き込み先として例えばMLCタイプのNAND型フラッシュメモリ62を選択し、格納する。ストリームデータについては、書き込み頻度が小さい傾向があるため、MLCタイプのNAND型フラッシュメモリ52cを書き込み先に用いてもメモリの性能は十分確保される。
【0219】
そして、メモリ管理装置57のアクセス制御部59は、SLCタイプの不揮発性半導体メモリ52bとMLCタイプの不揮発性半導体メモリ52cとのうちのいずれかが選択された場合に、上記各実施の形態で説明したように、アドレスの順次発行を行い、発行されたアドレスが未使用領域の場合に、この未使用領域に書き込み対象データ641を格納する追記式の書き込み動作を実行する。これにより、不揮発性半導体メモリ52b,52c内のアクセス回数の平滑化を実現することができる。
【0220】
メモリ管理装置57によって用いられるメモリ選択しきい値についてより具体的に説明する。
【0221】
本実施の形態においては、アクセス回数、アクセス頻度、重要度に基づいて算出される評価値と、メモリ選択しきい値に基づいて、混成メモリ52の異機種のメモリ52a〜52cの中から、書き込み先のメモリが選択される。例えば、メモリ選択しきい値は、メモリの使用率に基づいて変化される。
【0222】
使用率は、「アクセス回数/アクセス回数の上限」としてもよく、「メモリ使用領域の容量/メモリの全容量」としてもよい。
【0223】
オペレーティングシステム60は、揮発性半導体メモリ52aの使用率が高いほど、書き込み先として揮発性半導体メモリ52aよりも不揮発性半導体メモリ52が選択されやすくなるように、第1のメモリ選択しきい値を決定する。
【0224】
オペレーティングシステム60は、不揮発性半導体メモリ52bの使用率が高いほど、書き込み先として不揮発性半導体メモリ52bよりも不揮発性半導体メモリ52cが選択されやすくなるように、第2のメモリ選択しきい値を決定する。
【0225】
そして、オペレーティングシステム60及びメモリ管理装置57は、評価値と、第1のメモリ選択しきい値及び第2のメモリ選択しきい値との大小関係に基づいて、書き込み先のメモリを選択する。
【0226】
本実施の形態の制御は、混成メモリ52をメインメモリではない他の目的で利用する場合にも適用可能である。
【0227】
以上説明した本実施の形態においては、データのアクセス回数、アクセス頻度、重要度に基づいて、揮発性半導体メモリ52a、SLCタイプの不揮発性半導体メモリ52b、MLCタイプの不揮発性半導体メモリ52cを使い分けることにより、情報処理装置54で使用されるメインメモリを低コスト化でき、記憶容量を大きくすることができ、長寿命化することができる。
【0228】
混成メモリ52は、揮発性半導体メモリ52aと比べて安価で大容量の不揮発性半導体メモリ52b,52cを備えるため、単に揮発性半導体メモリ52aのみをメインメモリに用いる場合よりも、安価で大容量化することができる。
【0229】
また、本実施の形態においては、メモリ選択後に追記式の書き込みを行うことにより、ハードウェア資源の簡素化を実現することができる。
【0230】
上記各実施の形態において説明した各構成要素は、自由に組み合わせることができ、自由に分割することができる。例えば、アクセス制御部14,43とメモリ管理ユニット12,39とは組み合わせてもよい。例えば、メモリ管理ユニット12、状態情報生成部13、アクセス制御部13,43の機能は、演算コア91〜94のうちの少なくとも一つによって実現されるとしてもよい。オペレーティングシステム60によるシーケンシャルデータか否かの判断機能は、例えばアクセス制御部14などのようなハードウェアにより実現させてもよい。アドレス発生部16、順序情報発生部17、書き込み制御部18は、自由に組み合わせることができる。
【0231】
本発明は、上記実施の形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【産業上の利用可能性】
【0232】
本発明は、プロセッサがメインメモリをアクセスする場合のアクセス先のアドレスを管理する技術分野に有効である。
【符号の説明】
【0233】
1,33,37…情報処理装置、2,341〜344,38…プロセッサ、3…不揮発性メインメモリ、4…2次記憶装置、5…外部アクセスメモリ、6…I/O装置、7…コアプログラム、60…オペレーティングシステム、91〜94…演算コア、10,361〜364…キャッシュメモリ、11…ライトバッファ、12,39…メモリ管理ユニット、13…状態情報生成部、14,43…アクセス制御部、15…アドレス変換情報、16…アドレス発生部、17…順序発生部、18,44…書き込み制御部、19…順序情報、20…Vフラグ、21…ページ、22…状態情報フラグ、23…MMU情報、24…状態情報、25…データ部、26…Sフラグ、27…連続ブロックフラグ、28…連続ブロック数、29…通常データ格納領域、30…シーケンシャルデータ格納領域、31,32…メモリユニット、35…制御装置、40…書き込み回数情報、41…Bad情報、45…書き込み回数チェック部、46…異常検出部、48…性能低下検出部、49…性能低下抑制プログラム、52…混成メモリ、52a…揮発性半導体メモリ、52b,52c…不揮発性半導体メモリ、57…メモリ管理装置、58…不揮発性半導体メモリ、59…アクセス制御部、61…データ固有情報管理部、62…メモリ使用情報管理部、631〜63n…データ固有情報、641〜64n…データ、65…メモリ使用情報、66…メモリ固有情報。

【特許請求の範囲】
【請求項1】
プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、前記データが、連続的にアクセスされるシーケンシャルデータであるか、前記シーケンシャルデータではない通常データであるか判断する判断手段と、
前記判断手段によって前記データが前記通常データと判断された場合に、発生済みのアドレスの示す位置と前記通常データの書き込み位置が重ならないように第1の書き込みアドレスを発生させ、前記判断手段によって前記データが前記シーケンシャルデータと判断された場合に、前記シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第2の書き込みアドレスを発生させるアドレス発生手段と、
発生した書き込みの新しさを表わす順序情報を発生させる順序発生手段と、
前記アドレス発生手段によって前記第1の書き込みアドレスが発生された場合に、前記第1の書き込みアドレスに対して、前記順序発生手段によって発生された順序情報を対応付けて前記通常データを書き込み、前記アドレス発生手段によって前記第2の書き込みアドレスが発生された場合に、前記第2の書き込みアドレスに対して、前記シーケンシャルデータをシーケンシャルに書き込む書き込み制御手段と
を具備するメモリ管理装置。
【請求項2】
請求項1記載のメモリ管理装置において、
前記アドレス発生手段は、前記シーケンシャルデータを格納するための少なくとも一つのブロック領域の先頭に、前記シーケンシャルデータの先頭が格納されるように、前記第2の書き込みアドレスを発生させることを特徴とするメモリ管理方法。
【請求項3】
請求項1又は請求項2記載のメモリ管理装置において、
前記シーケンシャルデータに対する論理アドレスと物理アドレスと前記シーケンシャルデータであることを示すフラグとを関連付けて管理するメモリ管理ユニットをさらに具備するメモリ管理装置。
【請求項4】
請求項3記載のメモリ管理装置において、
前記メモリ管理ユニットは、さらに、前記シーケンシャルデータに対する論理アドレスと物理アドレスと前記シーケンシャルデータについて連続する数とを関連付けて管理することを特徴とするメモリ管理装置。
【請求項5】
請求項1乃至請求項4のいずれか1項に記載のメモリ管理装置において、
前記書き込み制御手段は、前記シーケンシャルデータを、前記シーケンシャルデータであることを示すフラグと関連付けて前記不揮発性半導体メモリに書き込むことを特徴とするメモリ管理装置。
【請求項6】
請求項1乃至請求項5のいずれか1項に記載のメモリ管理装置において、
前記アドレス発生手段は、前記プロセッサから前記不揮発性半導体メモリへの前記通常データの書き込みが発生すると、シーケンシャルにアドレスを発生させ、発生されたアドレスが未使用の場合に、当該発生されたアドレスを前記第1の書き込みアドレスとして選択し、前記発生されたアドレスが所定値に達すると、アドレス発生を再び初期値から行うことを特徴とするメモリ管理装置。
【請求項7】
請求項1乃至請求項6のいずれか1項に記載のメモリ管理装置において、
前記書き込み制御手段は、前記プロセッサにおける状態情報生成手段によって生成された状態情報を、前記順序発生手段によって発生された順序情報と対応付けて、前記不揮発性半導体メモリに書き込み、
前記プロセッサの復元時に、前記順序情報に基づいて、前記不揮発性半導体メモリから最新の状態情報を読み出し、当該最新の状態情報を用いて前記プロセッサの復元を行う復元手段をさらに具備する
ことを特徴とするメモリ管理装置。
【請求項8】
請求項7記載のメモリ管理装置において、
前記復元手段は、前記不揮発性半導体メモリに格納されているプログラムが前記プロセッサによって実行されて実現されることを特徴とするメモリ管理装置。
【請求項9】
請求項1乃至請求項8のいずれか1項に記載のメモリ管理装置において、
前記書き込み制御手段は、メモリ管理ユニットで管理されているメモリ管理情報を、前記順序発生手段によって発生された順序情報と対応付けて、前記不揮発性半導体メモリに書き込み、
前記プロセッサの復元時に、前記順序情報に基づいて、前記不揮発性半導体メモリから最新のメモリ管理情報を読み出し、当該最新のメモリ管理情報を用いて前記プロセッサの復元を行う復元手段をさらに具備する
ことを特徴とするメモリ管理装置。
【請求項10】
請求項1乃至請求項9のいずれか1項に記載のメモリ管理装置において、
前記書き込み制御手段は、前記不揮発性半導体メモリの領域又に関する書き込み回数情報を書き込み、
前記書き込み回数情報の示す書き込み回数がしきい値を超えた領域に対する書き込みを禁止する書き込み回数チェック手段をさらに具備する
ことを特徴とするメモリ管理装置。
【請求項11】
請求項1乃至請求項10のいずれか1項に記載のメモリ管理装置において、
前記不揮発性半導体メモリに対するエラーの検出を行い、エラー訂正可能な場合に、前記エラーを訂正し、エラー訂正可能でない場合に、前記エラーの発生した領域に対する書き込みを禁止する異常検出手段をさらに具備する
ことを特徴とするメモリ管理装置。
【請求項12】
請求項1乃至請求項11のいずれか1項に記載のメモリ管理装置において、
前記不揮発性半導体メモリは、複数の種別の領域を含み、
前記アドレス発生手段は、前記不揮発性半導体メモリにおける前記複数の種別の領域のうち前記データの種別に応じた領域を選択し、選択された領域内で、書き込みアドレスの選択を行う
ことを特徴とするメモリ管理装置。
【請求項13】
請求項1乃至請求項12のいずれか1項に記載のメモリ管理装置において、
前記プロセッサから前記不揮発性半導体メモリへのアクセスの性能低下を検出する検出手段と、
前記検出手段によって性能低下が検出された場合に、ガーベージコレクション処理を実行する性能低下抑制手段と
を具備することを特徴とするメモリ管理装置。
【請求項14】
請求項1乃至請求項13のいずれか1項に記載のメモリ管理装置において、
前記不揮発性半導体メモリと、前記不揮発性半導体メモリと種別の異なる他の半導体メモリとを具備する混成メモリへのアクセスを管理し、
前記アドレス決定手段は、前記混成メモリに具備されている前記不揮発性半導体メモリと前記他の半導体メモリとのうち、信頼性又は耐久性の高い第1のメモリへのアクセス回数又はアクセス頻度が、信頼性又は耐久性の低い第2のメモリへのアクセス回数又はアクセス頻度よりも多くなるように、記憶先のメモリを選択する
ことを特徴とするメモリ管理装置。
【請求項15】
プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、前記データが、連続的にアクセスされるシーケンシャルデータであるか、前記シーケンシャルデータではない通常データであるか判断し、
前記データが前記通常データと判断された場合に、発生済みのアドレスの示す位置と前記通常データの書き込み位置が重ならないように第1の書き込みアドレスを発生させ、前記データが前記シーケンシャルデータと判断された場合に、前記シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第2の書き込みアドレスを発生させ、さらに、発生した書き込みの新しさを表わす順序情報を発生させ、
前記第1の書き込みアドレスが発生された場合に、前記第1の書き込みアドレスに対して、発生された前記順序情報を対応付けて前記通常データを書き込み、前記第2の書き込みアドレスが発生された場合に、前記第2の書き込みアドレスに対して、前記シーケンシャルデータをシーケンシャルに書き込む
ことを特徴とするメモリ管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2011−154547(P2011−154547A)
【公開日】平成23年8月11日(2011.8.11)
【国際特許分類】
【出願番号】特願2010−15866(P2010−15866)
【出願日】平成22年1月27日(2010.1.27)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】