(57)【要約】【課題】論理アドレスにより指定されるデータ量よりも、ＮＡＮＤ型フラッシュメモリの記憶容量を大きくすることにより、主記憶装置として用いられるＮＡＮＤ型フラッシュメモリのブロックの消去回数が増大することを抑制することを可能にする。【解決手段】本発明の主記憶装置３０は、論理アドレスにより指定されるデータ量よりも記憶容量が大きく、データ、論理アドレス、およびバージョン番号とを関連付けて記憶するフラッシュメモリ２００と、フラッシュメモリ２００に記憶されるデータの論理アドレスと物理アドレスとを関連付けて記憶するマッピング記憶部１２１と、フラッシュメモリ２００に書き込まれるデータが一時的に記憶されるバッファメモリ１１１と、バッファメモリ１１１に記憶されたデータをフラッシュメモリ２００に書き込むメモリコントローラ１００とを備えることを特徴とする。【選択図】  図１
2008287398.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによりアクセスされるデータを指定する論理アドレスを受信し、前記受信した論理アドレスと対応する物理アドレスによって指定されるデータを出力する主記憶装置であって、
前記プロセッサが前記論理アドレスを用いてアクセスできるデータ量よりも記憶容量が大きいフラッシュメモリと、
前記フラッシュメモリに記憶されるデータの論理アドレスの少なくとも一部と、当該データが記憶される前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて記憶する第１の記憶手段と、
前記プロセッサによって書き込み処理が行われ、前記フラッシュメモリへ書き込まれるデータを一時的に記憶する第２の記憶手段と、
前記第２の記憶手段に記憶されたデータを前記フラッシュメモリに書き込む際に、当該データの論理アドレスの少なくとも一部と当該データが書き込まれる前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて前記第１の記憶手段に書き込むメモリコントローラと
を備えることを特徴とする主記憶装置。
【請求項２】
前記第２の記憶手段の空き容量が一定値以下となった場合に、前記メモリコントローラが、前記第２の記憶手段に記憶されたデータを前記フラッシュメモリに書き込むことを特徴とする請求項１に記載の主記憶装置。
【請求項３】
チェックポイントを作成するために前記第２の記憶手段に記憶されたデータが前記フラッシュメモリに書き込まれた後、
前記メモリコントローラが、
前記第１の記憶手段に記憶された、前記論理アドレスの少なくとも一部と前記物理アドレスの少なくとも一部との対応関係を、前記フラッシュメモリに書き込むことを特徴とする請求項１に記載の主記憶装置。
【請求項４】
論理アドレスを用いてアクセスするデータを指定するプロセッサと、前記プロセッサから受信する論理アドレスと対応する物理アドレスによって指定されるデータを出力する主記憶装置とを備える情報処理装置であって、
前記主記憶装置が、
前記プロセッサが前記論理アドレスを用いてアクセスできるデータ量よりも記憶容量が大きいフラッシュメモリと、
前記フラッシュメモリに記憶されるデータの論理アドレスの少なくとも一部と、当該データが記憶される前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて記憶する第１の記憶手段と、
前記プロセッサによって書き込み処理が行われ、前記フラッシュメモリへ書き込まれるデータを一時的に記憶する第２の記憶手段と、
前記第２の記憶手段に記憶されたデータを前記フラッシュメモリに書き込む際に、当該データの論理アドレスの少なくとも一部と当該データが書き込まれる前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて前記第１の記憶手段に書き込むメモリコントローラとを備えることを特徴とする情報処理装置。
【請求項５】
プロセッサが論理アドレスを用いてアクセスできるデータ量よりも記憶容量が大きいフラッシュメモリと、前記フラッシュメモリに記憶されるデータの論理アドレスの少なくとも一部と当該データが記憶される前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて記憶する第１の記憶手段と、前記プロセッサによって書き込み処理が行われ、前記フラッシュメモリへ書き込まれるデータを一時的に記憶する第２の記憶手段とを備える主記憶装置の制御方法であって、
前記プロセッサによって書き込み処理が行われたデータを前記第２の記憶手段に書き込み、
前記第２の記憶手段に書き込まれたデータを前記フラッシュメモリに書き込む際に、当該データの論理アドレスの少なくとも一部と当該データが書き込まれる前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて前記第１の記憶手段に書き込むことを特徴とする主記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主記憶装置、主記憶装置の制御方法、およびこの主記憶装置を用いた情報処理装置に関するものである。
【背景技術】
【０００２】
フラッシュメモリを用いて、主記憶装置を構成する方法が提案されている。このような主記憶装置では、電源を切っても記憶した情報が消失しないという特徴がある。しかし、主記憶装置を構成するフラッシュメモリは、ブロックと呼ばれるまとまった単位ごとにしかデータを消去できず、１回のブロック消去ごとに１回だけしかデータを書き込むことができない。また、フラッシュメモリは、データを消去するたびに素子が劣化するため、その消去回数が制限される。そのため、データの書き込みがフラッシュメモリの特定のブロックに集中した場合など、そのブロックのデータの消去回数が制限回数を超え、データを正常に記憶できなくなるという問題点がある。
【０００３】
このような問題を解決する手法として、プロセッサがアクセスするデータを指定するために用いられる論理アドレスを、フラッシュメモリ上の領域を指定する物理アドレスへ変換する際に、その対応関係を動的に変更するウェアレベリングという手法がある（例えば、非特許文献１。）。
【０００４】
上記の非特許文献１に記載される手法では、プロセッサから同一の論理アドレスに対して繰り返しデータの書き込み要求があった場合でも、データが書き込まれる物理アドレスは動的に変更される。そのため、フラッシュメモリの特定のブロックが、集中的にデータの書き込みおよび消去されることを抑制できる。
【非特許文献１】Ａｌｇｏｒｉｔｈｍｓ  ａｎｄ  Ｄａｔａ  Ｓｔｒｕｃｔｕｒｅｓ  ｆｏｒ  Ｆｌａｓｈ  Ｍｅｍｏｒｉｅｓ，  ＥＲＡＮ  ＧＡＬ  ＡＮＤ  ＳＩＶＡＮ  ＴＯＬＥＤＯ，  Ｔｅｌ−Ａｖｉｖ  Ｕｎｉｖｅｒｓｉｔｙ，  ＡＣＭ  Ｃｏｍｐｕｔｉｎｇ  Ｓｕｒｖｅｙｓ，  Ｖｏｌ．３７，  Ｎｏ．２，  Ｊｕｎｅ  ２００５，  ｐｐ．１３８―１６３
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、フラッシュメモリを主記憶装置として用いると、プロセッサなどから小容量のデータの書き込みが頻発する。そのため、上記の非特許文献１に記載される手法によりフラッシュメモリに対する書き込みを平準化しても、フラッシュメモリのブロックの消去回数の増大を十分に抑制できないという問題があった。
【０００６】
本発明は、上記従来技術の問題点を解決するためになされたものであって、フラッシュメモリを主記憶装置として用いたとしても、そのフラッシュメモリのブロックの消去回数が増大することを抑制できる主記憶装置、主記憶装置の制御方法、およびこの主記憶装置を用いた情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の実施形態に係る主記憶装置は、プロセッサによりアクセスされるデータを指定する論理アドレスを受信し、前記受信した論理アドレスと対応する物理アドレスによって指定されるデータを出力する主記憶装置であって、前記プロセッサが前記論理アドレスを用いてアクセスできるデータ量よりも記憶容量が大きいフラッシュメモリと、前記フラッシュメモリに記憶されるデータの論理アドレスの少なくとも一部と、当該データが記憶される前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて記憶する第１の記憶手段と、前記プロセッサによって書き込み処理が行われ、前記フラッシュメモリへ書き込まれるデータを一時的に記憶する第２の記憶手段と、前記第２の記憶手段に記憶されたデータを前記フラッシュメモリに書き込む際に、当該データの論理アドレスの少なくとも一部と当該データが書き込まれる前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて前記第１の記憶手段に書き込むメモリコントローラとを備えることを特徴とする。
【０００８】
本発明の第２の実施形態に係る情報処理装置は、論理アドレスを用いてアクセスするデータを指定するプロセッサと、前記プロセッサから受信する論理アドレスと対応する物理アドレスによって指定されるデータを出力する主記憶装置とを備える情報処理装置であって、前記主記憶装置が、前記プロセッサが前記論理アドレスを用いてアクセスできるデータ量よりも記憶容量が大きいフラッシュメモリと、前記フラッシュメモリに記憶されるデータの論理アドレスの少なくとも一部と、当該データが記憶される前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて記憶する第１の記憶手段と、前記プロセッサによって書き込み処理が行われ、前記フラッシュメモリへ書き込まれるデータを一時的に記憶する第２の記憶手段と、前記第２の記憶手段に記憶されたデータを前記フラッシュメモリに書き込む際に、当該データの論理アドレスの少なくとも一部と当該データが書き込まれる前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて前記第１の記憶手段に書き込むメモリコントローラとを備えることを特徴とする。
【０００９】
本発明の第３の実施形態に係る主記憶装置の制御方法は、プロセッサが論理アドレスを用いてアクセスできるデータ量よりも記憶容量が大きいフラッシュメモリと、前記フラッシュメモリに記憶されるデータの論理アドレスの少なくとも一部と当該データが記憶される前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて記憶する第１の記憶手段と、前記プロセッサによって書き込み処理が行われ、前記フラッシュメモリへ書き込まれるデータを一時的に記憶する第２の記憶手段とを備える主記憶装置の制御方法であって、前記プロセッサによって書き込み処理が行われたデータを前記第２の記憶手段に書き込み、前記第２の記憶手段に書き込まれたデータを前記フラッシュメモリに書き込む際に、当該データの論理アドレスの少なくとも一部と当該データが書き込まれる前記フラッシュメモリの物理アドレスの少なくとも一部とを関連付けて前記第１の記憶手段に書き込むことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、フラッシュメモリを主記憶装置として用いたとしても、フラッシュメモリのブロックの消去回数が増大することを抑制できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の一実施形態について説明する。なお、主記憶装置として用いられるフラッシュメモリがＮＡＮＤ型である実施形態について説明するが、ＮＡＮＤ型に限られるものではない。
【００１２】
図１は、本発明の一実施形態に係る情報処理装置１を示すブロック図である。  
この実施形態に係る情報処理装置１は、論理アドレスを用いてアクセスするデータを指定するプロセッサ１０と、プロセッサ１０によりアクセスされるデータを記憶する主記憶装置３０とを備える。主記憶装置３０は、物理アドレスにより記憶領域が指定されるＮＡＮＤ型フラッシュメモリ２００を有する。なお、プロセッサ１０と主記憶装置３０とは、システムバス２０で接続される。
【００１３】
プロセッサ１０は、例えば、２８ビットの論理アドレスを用いて主記憶装置３０に記憶されたデータへアクセスし、演算処理を行う。各論理アドレスが主記憶装置３０に記憶された１バイトのデータを指定するものとすると、プロセッサ１０は、論理アドレスを用いて主記憶装置３０上の２５６ＭＢのデータを指定しアクセスすることができる。
【００１４】
図２は、論理アドレスの構成を示す図である。論理アドレスは２８ビット幅であり、以下では、論理アドレスの上位１７ビットを論理ページ番号、下位１１ビットを論理ページ内オフセットと呼ぶ。
【００１５】
図１の説明に戻り、プロセッサ１０は、主記憶装置３０よりもデータ供給速度が大きいキャッシュメモリ１１を内蔵する。このキャッシュメモリ１１のキャッシュラインサイズを、例えば、３２バイトとする。プロセッサ１０が主記憶装置３０からデータを読み出す、あるいはプロセッサ１０が主記憶装置３０に対してデータを書き込む場合、システムバス２０を介して、例えば、３２バイトごとにデータが送受信される。
【００１６】
主記憶装置３０が備えるＮＡＮＤ型フラッシュメモリ２００の記憶容量を、例えば、４ＧＢ（Ｇｉｇａ  Ｂｙｔｅｓ）とし、その物理アドレスのビット幅を３２ビットとする。ここで、各物理アドレスが主記憶装置３０に記憶された１バイトのデータを指定するものとする。
【００１７】
図３は、ＮＡＮＤ型フラッシュメモリ２００の物理アドレスの構成を示す図である。  
３２ビット幅の物理アドレスは、１５ビット幅のブロック番号、６ビット幅のブロック内のページ番号、および１１ビット幅のページ内オフセットにより構成される。なお、本実施の形態では、例えば、ＮＡＮＤ型フラッシュメモリ２００のブロックサイズを１２８ｋＢとし、ページサイズを２ｋＢとした。なお、ＮＡＮＤ型フラッシュメモリ２００では、消去処理を行う最小単位をブロック、書き込みおよび読み出し処理を行う最小単位をページと呼ぶ。また、以下では、１５ビットのブロック番号と６ビットのブロック内のページ番号とを連結した２１ビットのビット列を物理ページ番号と呼ぶ。
【００１８】
ＮＡＮＤ型フラッシュメモリ２００は、２１５個のブロック領域を有する。各ブロック領域は２６個のページ領域を有する。ＮＡＮＤ型フラッシュメモリ２００は、ブロック領域ごとに、そのブロックの消去回数を記憶する消去回数部２０１を備える。ＮＡＮＤ型フラッシュメモリ２００は、ページ領域ごとに、論理ページ番号部２０２、バージョン番号部２０３、およびデータ部２０４を備える。
【００１９】
データ部２０４には、書き込みおよび読み出し処理を行う最小単位（ページサイズ：２ｋＢ）と同じ大きさのデータが記憶される。論理ページ番号部２０２には、データ部２０４に記憶されたデータの論理ページ番号が記憶される。バージョン番号部２０３には、データ部２０４上のデータが更新されたタイミングを示すバージョン番号が記憶される。
【００２０】
バージョン番号は、初期値を“０”とし、論理ページ番号が同一のデータがＮＡＮＤ型フラッシュメモリ２００に書き込まれるたびに、“１”が加算される“０”以上の数字である。ＮＡＮＤ型フラッシュメモリ２００に論理ページ番号が同一のデータが複数記憶されたとき、バージョン番号が最大であるデータが最新のデータである。
【００２１】
なお、バージョン番号は、論理ページ番号が同一のデータがＮＡＮＤ型フラッシュメモリ２００に複数記憶された場合に、それらのデータが更新されたタイミングの前後関係を示す情報であればよい。例えば、バージョン番号は、データが更新されたタイミングのタイムスタンプを記憶するなどとしても良い。
【００２２】
図１の説明に戻り、主記憶装置３０は、バッファメモリ１１１と、論理アドレス記憶部１１２と、バッファ制御部１１０と、マッピング記憶部１２１と、退避用メモリ１２２と、消去回数記憶部１２３と、マッピング制御部１２０と、チェックポイント制御部１３０とを備える。
【００２３】
なお、メモリコントローラ１００はバッファ制御部１１０とマッピング制御部１２０とチェックポイント制御部１３０とにより構成され、システムバス２０を介してプロセッサ１０からのコマンドを受信する。また、バッファメモリ１１１、論理ページ番号記憶部１１２、マッピング記憶部１２１、退避用メモリ１２２、および消去回数記憶部１２３は、揮発性メモリで構成する。
【００２４】
バッファメモリ１１１は、プロセッサ１０が主記憶装置３０に書き込むデータを一時的に記憶する。バッファメモリ１１１は、データをＮＡＮＤ型フラッシュメモリ２０のページサイズ（２ｋＢ）ごとに記憶する。バッファメモリ１１１の記憶容量を、例えば、２５６ｋＢとすると、１２８ページ分のデータを記憶する。
【００２５】
図４は、論理ページ番号記憶部１１２の構成を示す図である。  
論理ページ番号記憶部１１２は、バッファメモリ１１１にページ単位で記憶される１２８ページ分のデータの論理ページ番号を記憶する。図４の例では、バッファメモリ１１１の０ページ目に、論理ページ番号「０ｘ００１２Ａ」のデータが記憶されていることを示す。また、バッファメモリ１１１の１ページ目には、データは記憶されていないことを示す。さらにまた、バッファメモリ１１１の２ページ目に、論理ページ番号「０ｘ１０３１１」のデータが記憶されていることを示す。
【００２６】
図１の説明に戻り、バッファ制御部１１０は、プロセッサ１０から主記憶装置３０へのデータ書き込みがなされた際に、そのデータをバッファメモリ１１１へ書き込む。また、バッファ制御部１１０は、バッファメモリ１１１に蓄積されたデータをＮＡＮＤ型フラッシュメモリ２００へ書き込む。なお、バッファメモリ１１１へのデータ書き込みおよびデータ消去に伴い、バッファ制御部１１０は、論理ページ番号記憶部１１２を更新する。
【００２７】
図５は、マッピング記憶部１２１の構成を示す図である。  
マッピング記憶部１２１は、ＮＡＮＤ型フラッシュメモリ２００に記憶されたデータの論理ページ番号およびバージョン番号とに関連付けて、そのデータが記憶されているＮＡＮＤ型フラッシュメモリ２００のページ領域の物理ページ番号（論理・物理マッピングテーブル）を記憶する。なお、マッピング記憶部１２１は、ＮＡＮＤ型フラッシュメモリ２００に記憶されたデータのうちバージョン番号が最大のデータ、即ち最新のデータについての論理ページ番号と物理ページ番号との関係（論理・物理マッピングテーブル）を記憶するものとする。
【００２８】
図５の例では、論理ページ番号「０ｘ１０１ＦＦ」、バージョン番号「１」のデータが、ＮＡＮＤ型フラッシュメモリ２００の物理ページ番号「０ｘ１０ＦＦ０１」の領域に記憶されていることを示す。また、論理ページ番号「０ｘ０Ａ０１１」、バージョン番号「３」のデータが、ＮＡＮＤ型フラッシュメモリ２００の物理ページ番号「０ｘ０Ａ１１０Ｆ」の領域に記憶されていることを示す。さらにまた、論理ページ番号「０ｘ１０１３１」、バージョン番号「０」のデータが、ＮＡＮＤ型フラッシュメモリ２００の物理ページ番号「０ｘ０Ａ１００１」の領域に記憶されていることを示す。
【００２９】
図１の説明に戻り、退避用メモリ１２２には、ＮＡＮＤ型フラッシュメモリ２００のブロック消去が行われる際に、そのブロック領域に記憶されるデータが複製される。退避用メモリ１２２の記憶容量は、例えば、ＮＡＮＤ型フラッシュメモリ２００のブロックサイズと同じ１２８ｋＢとする。
【００３０】
消去回数記憶部１２３には、ＮＡＮＤ型フラッシュメモリ２００の各ブロック領域の消去回数が記憶される。なお、消去回数記憶部１２３には、主記憶装置３０の初期化時に、ＮＡＮＤ型フラッシュメモリ２００の各ブロック領域の消去回数部２０１に記憶された消去回数が消去回数記憶部１２３に複製される。
【００３１】
マッピング制御部１２０は、ＮＡＮＤ型フラッシュメモリ２００へのデータ書き込みおよびデータ消去が行われる際に、マッピング記憶部１２１に記憶された論理・物理マッピングテーブルを更新する。即ち、マッピング制御部１２０は、マッピング記憶部１２１へアクセスし、ＮＡＮＤ型フラッシュメモリ２００に記憶されるデータの論理ページ番号と、そのデータのバージョン情報、およびそのデータが記憶されるＮＡＮＤ型フラッシュメモリ２００のページ領域の物理ページ番号とを更新する。
【００３２】
次に図１および図６、７、８を用いて、本発明の一実施形態に係る情報処理装置１の動作について説明する。  
図６は、プロセッサ１０が主記憶装置３０に対して送信した書き込みデータがバッファメモリ１１１に記憶される際の、情報処理装置１の動作を示すフローチャートである。  
まず、バッファ制御部１１０は、プロセッサ１０から主記憶装置３０に対する書き込み要求と書き込みデータ（３２バイト）とを受信する（ステップＳ１０１）。
【００３３】
次に、バッファ制御部１１０は、書き込みデータの論理ページ番号が論理ページ番号記憶部１１２に記憶されているか否かを判定する（ステップＳ１０２）。
【００３４】
書き込みデータの論理ページ番号が論理ページ番号記憶部１１２に記憶されていると判定された場合（ステップＳ１０２のはい）、プロセッサ１０から受信した書き込みデータと同一の論理ページ番号に指定されるデータが、バッファメモリ１１１に既に記憶されていることになる。そこで、バッファ制御部１１０は、プロセッサ１０から受信した書き込みデータを用いて、バッファメモリ１１１に記憶されている、書き込みデータの論理ページ番号に指定されるデータを更新する。
【００３５】
一方、書き込みデータの論理ページ番号が論理ページ番号記憶部１１２に記憶されていないと判定された場合（ステップＳ１０２のいいえ）、次に、バッファ制御部１１０は、論理ページ番号記憶部１１２に“空き”を示す情報が記憶されているか否かを判定する（ステップＳ１０３）。
【００３６】
論理ページ番号記憶部１１２に“空き”を示す情報が記憶されていると判定された場合（ステップＳ１０３のはい）、バッファメモリ１１１に空き領域はある。そこで、当該空き領域に、プロセッサ１０から受信した書き込みデータを記憶する（ステップＳ１０５、Ｓ１０６）。
【００３７】
一方、論理ページ番号記憶部１１２に“空き”を示す情報が記憶されていないと判定された場合（ステップＳ１０３のいいえ）、バッファメモリ１１１に空き領域はない。そこで、バッファ制御部１１０は、バッファメモリ１１１に記憶されているデータを、すべて、あるいは適宜選択し、ＮＡＮＤ型フラッシュメモリ２００に書き込む（ステップＳ１０４）。そして、バッファ制御部１１０は、ＮＡＮＤ型フラッシュメモリ２００に書き込みを行ったデータを消去し、バッファメモリ１１１に空き領域を作成する。なお、バッファ制御部１１０がバッファメモリ１１１に記憶されているデータをＮＡＮＤ型フラッシュメモリ２００に書き込む方法については後述する。
【００３８】
論理ページ番号記憶部１１２に“空き”を示す情報が記憶されているかが判定され（ステップＳ１０３）、論理ページ番号記憶部１１２に“空き”を示す情報が記憶されていないと判定された場合（ステップＳ１０３のいいえ）にバッファメモリ１１１に空き領域を作成した後（ステップＳ１０４）、次に、バッファ制御部１１０は、書き込みデータと同一の論理ページ番号のデータをＮＡＮＤ型フラッシュメモリ２００からバッファメモリ１１１の空き領域へ複製する（ステップＳ１０５）。なお、バッファ制御部１１０は、データを複製したバッファメモリ１１１上の領域に対応する論理ページ番号記憶部１１２のエントリに書き込みデータの論理ページ番号を書き込む。
【００３９】
次に、バッファ制御部１１０は、プロセッサ１０から受信した書き込みデータを用いて、バッファメモリ１１１に記憶されている、書き込みデータの論理ページ番号に指定されるデータを更新する（ステップＳ１０６）。以上の処理により、プロセッサ１０から受信した書き込みデータは、バッファメモリ１１１に記憶される。
【００４０】
図７は、バッファメモリ１１１に記憶されたデータをＮＡＮＤ型フラッシュメモリ２００に書き込む際の、情報処理装置１の動作を示すフローチャートである。  
まず、バッファ制御部１１０は、ＮＡＮＤ型フラッシュメモリ２００へ書き込むデータの論理ページ番号を、論理ページ番号記憶部１１２から読み出し、マッピング制御部１２０に送信する（ステップＳ２０１）。なお、バッファメモリ１１１の空き容量がない場合（図６のステップＳ１０４）、バッファメモリ１１１に記憶されたデータのＮＡＮＤ型フラッシュメモリ２００への書き込みを指示する要求をプロセッサ１０から受信した場合、バッファメモリ１１１の空き容量が一定以下となった場合などに、バッファ制御部１１０は、バッファメモリ１１１に記憶されたデータをＮＡＮＤ型フラッシュメモリ２００へ書き込む処理を開始する。
【００４１】
次に、マッピング制御部１２０は、ＮＡＮＤ型フラッシュメモリ２００へ書き込むデータの論理ページ番号を受信した後、ＮＡＮＤ型フラッシュメモリ２００に空きページが存在するかを判定する（ステップＳ２０２）。即ち、マッピング制御部１２０は、ＮＡＮＤ型フラッシュメモリ２００の論理ページ番号部２０２およびバージョン番号部２０３を参照し、双方に初期値が設定されているページの有無を判定する。
【００４２】
ＮＡＮＤ型フラッシュメモリ２００に空きページが存在すると判定された場合（ステップＳ２０２のはい）、バッファメモリ１１１のデータはその空きページに書き込まれる。
【００４３】
一方、ＮＡＮＤ型フラッシュメモリ２００に空きページが存在しないと判定された場合（ステップＳ２０２のいいえ）、マッピング制御部１２０はＮＡＮＤ型フラッシュメモリ２００のブロックのうち、消去回数が最も少ないブロックを選択し、そのブロックを消去する（ステップＳ２０３）。即ち、マッピング制御部１２０は、消去回数記憶部１２３を参照し、最も消去回数が少ないブロックを選択する。マッピング制御部１２０は、そのブロックに記憶されているデータであって、最新のデータが記憶されているページを、退避用メモリ１２２に複製し、そのブロックを消去する。なお、退避用メモリ１２２に記憶されたデータは、ブロック消去処理が完了した後、ブロック消去前と同じ物理ページ番号に指定されるＮＡＮＤ型フラッシュメモリ２００の領域に書き込まれる。
【００４４】
ＮＡＮＤ型フラッシュメモリ２００に空きページが存在するか判定され（ステップＳ２０２）、ＮＡＮＤ型フラッシュメモリ２００に空きページが存在しない場合（ステップＳ２０２のいいえ）にＮＡＮＤ型フラッシュメモリ２００に空きページが作成された後（ステップＳ２０３）、次に、マッピング制御部１２０は、マッピング記憶部１２１を検索し、バッファ制御部１１０から受信した論理ページ番号を有するエントリのバージョン番号を読み出す（ステップＳ２０４）。
【００４５】
次に、マッピング制御部１２０は、バッファ制御部１１０に対して、ＮＡＮＤ型フラッシュメモリ２００の空き領域の物理ページ番号、およびバッファ制御部１１０から受信した論理ページ番号と関連付けられたバージョン番号に“１”を加えた結果を送信する（ステップＳ２０５）。
【００４６】
また、マッピング制御部１２０は、バッファ制御部１１０から受信した論理ページ番号と、バッファ制御部１１０に送信したバージョン番号と、バッファ制御部１１０に送信したＮＡＮＤ型フラッシュメモリ２００の物理ページ番号とをマッピング記憶部１２１に書き込み、論理・物理マッピングテーブルを更新する（ステップＳ２０６）。
【００４７】
次に、バッファ制御部１１０は、マッピング制御部１２０から受信したＮＡＮＤ型フラッシュメモリ２００の物理ページ番号とバージョン番号を用いて、バッファメモリ１１１に記憶されたデータを、ＮＡＮＤ型フラッシュメモリ２００へ書き込む（ステップＳ２０７）。即ち、バッファ制御部１１０は、受信した物理ページ番号に指定される領域に、バッファメモリ１１１に記憶された書き込みデータ、その書き込みデータの論理ページ番号、およびマッピング制御部１２０から受信したバージョン番号を書き込む。以上の処理により、バッファメモリ１１１に記憶されたプロセッサ１０から受信した書き込みデータは、ＮＡＮＤ型フラッシュメモリ２００へ記憶される。
【００４８】
このように、ＮＡＮＤ型フラッシュメモリ２００の記憶容量（４ＧＢ）よりもプロセッサ１０が使用可能な主記憶装置３０の容量（２５６ＭＢ）を小さくし、かつ、ＮＡＮＤ型フラッシュメモリ２００へのデータの書込みを分散することにより、ＮＡＮＤ型フラッシュメモリ２００のブロック消去の回数の増大を抑制することができる。
【００４９】
ＮＡＮＤ型フラッシュメモリ２００の記憶容量（４ＧＢ）よりもプロセッサ１０が使用できる主記憶装置３０の容量（２５６ＭＢ）は小さい。そのため、ＮＡＮＤ型フラッシュメモリ２００に記憶されるデータの量は最大４ＧＢであるが、最新のデータの量は最大２５６ＭＢである。そのため、例えば、プロセッサ１０からの小容量のデータ書込みが頻発した場合であっても、ＮＡＮＤ型フラッシュメモリ２００には常に十分な空き領域があり、ブロック消去が頻発するのを抑制することができる。
【００５０】
さらに、プロセッサ１０から３２バイトごとに送信される書込みデータを、揮発性メモリであるバッファメモリ１１１に蓄積し、一括してＮＡＮＤ型フラッシュメモリ２００へ書き込むことにより、ＮＡＮＤ型フラッシュメモリ２００のブロック消去の回数の増大を抑制することができる。
【００５１】
図８は、主記憶装置３０に記憶されたデータのチェックポイントを作成する際の、情報処理装置１の動作を示すフローチャートである。  
チェックポイント制御部１３０は、プロセッサ１０からチェックポイントの作成要求を受信した場合、あるいは前回チェックポイントを作成してから一定期間経過した場合などに、主記憶装置３０に記憶されたデータのチェックポイントを作成するための処理を開始する。
【００５２】
まず、チェックポイント制御部１３０は、バッファ制御部１１０に対してバッファメモリ１１１に記憶されたデータをＮＡＮＤ型フラッシュメモリ２００に書き込むことを指示する（ステップＳ３０１）。
【００５３】
次に、バッファ制御部１１０は、チェックポイント制御部１３０から上記指示を受け、バッファメモリ１１１に記憶されたすべてのデータをＮＡＮＤ型フラッシュメモリ２００に書き込む（ステップＳ３０２）。バッファ制御部１１０が、バッファメモリ１１１上のデータをＮＡＮＤ型フラッシュメモリ２００へ書き込む処理については上述の通りである。
【００５４】
次に、チェックポイント制御部１３０は、マッピング制御部１２０に対して、マッピング記憶部１２１に記憶されている論理・物理マッピングテーブルのＮＡＮＤ型フラッシュメモリ２００へ書き込みを指示する（ステップＳ３０３）。
【００５５】
次に、マッピング制御部１２０は、チェックポイント制御部１３０からの上記指示に従い、マッピング記憶部１２１に記憶されている論理・物理マッピングテーブルと、ＮＡＮＤ型フラッシュメモリ２００の空き領域の物理ページ番号とを、バッファ制御部１１０に送信する（ステップＳ３０４）。なお、マッピング制御部１２０がＮＡＮＤ型フラッシュメモリ２００の空き領域の物理ページ番号を取得する方法は、バッファメモリ１１１に記憶されたデータをＮＡＮＤ型フラッシュメモリ２００へ書き込む際に行う動作と同様である。
【００５６】
ここで、論理・物理マッピングテーブルの論理ページ番号は、例えば、「−２」とされる。この論理・物理マッピングテーブルの論理ページ番号は、ＮＡＮＤ型フラッシュメモリ２００に書き込まれるデータの論理ページ番号のいずれとも異なるものであれば良い。
【００５７】
次に、バッファ制御部１１０は、チェックポイント制御部１３０から受信したＮＡＮＤ型フラッシュメモリ２００の空き領域の物理ページ番号に指定される領域へ、論理・物理マッピングテーブルを書き込む（ステップＳ３０５）。
【００５８】
このように、主記憶装置３０に記憶されたデータのチェックポイントを作成することにより、チェックポイント制御部１３０は、情報処理装置１の電源が突然オフ状態になり主記憶装置３０に記憶されたデータが消失した場合でも、最新のチェックポイントを作成した時点の主記憶装置３０に記憶されていたデータを復帰することができる。
【００５９】
即ち、チェックポイント制御部１３０は、プロセッサ１０からチェックポイントによるデータ回復命令を受ける。チェックポイント制御部１３０は、バッファメモリ１１１および論理ページ番号記憶部１１２を初期化する。チェックポイント制御部１３０は、ＮＡＮＤ型フラッシュメモリ２００の論理ページ番号が「−２」であって、バージョン番号が最大のページ領域に記憶されている論理・物理マッピングテーブルを、マッピング記憶部１２１に複製する。このようにチェックポイントによるデータ回復処理を行うことにより、最新のチェックポイント作成時の主記憶装置３０に記憶されていたデータを回復することができる。
【００６０】
このように、本実施形態に係る情報処理装置１によれば、論理アドレスにより指定されるデータ量よりも、ＮＡＮＤ型フラッシュメモリ２００の記憶容量を大きくすることにより、ＮＡＮＤ型フラッシュメモリ２００を主記憶装置３０として用いても、ＮＡＮＤ型フラッシュメモリ２００のブロックの消去回数の増大を抑制することが可能となる。
【００６１】
さらに、本実施形態に係る主記憶装置３０のチェックポイントを作成することにより、情報処理装置１の電源が突然オフ状態になり主記憶装置３０の揮発性メモリに記憶されたデータが失われた場合でも、最新のチェックポイントを作成した時点の主記憶装置３０に記憶されていたデータを復帰することができる。
【図面の簡単な説明】
【００６２】
【図１】本発明の一実施形態に係る情報処理装置の構成を示すブロック図。
【図２】本発明の一実施形態に係る主記憶装置の論理アドレスの構成を示す図。
【図３】本発明の一実施形態に係るＮＡＮＤ型フラッシュメモリの物理アドレスの構成を示す図。
【図４】本発明の一実施形態に係る論理アドレス記憶部の構成を示す図。
【図５】本発明の一実施形態に係るマッピング記憶部の構成を示す図。
【図６】本発明の一実施形態に係る情報処理装置の動作を示すフローチャート。
【図７】本発明の一実施形態に係る情報処理装置の動作を示すフローチャート。
【図８】本発明の一実施形態に係る情報処理装置の動作を示すフローチャート。
【符号の説明】
【００６３】
１０・・・プロセッサ
１１・・・キャッシュメモリ
２０・・・システムバス
３０・・・主記憶装置
１００・・・メモリコントローラ
１１０・・・バッファ制御部
１１１・・・バッファメモリ
１１２・・・論理ページ番号記憶部
１２０・・・マッピング制御部
１２１・・・マッピング記憶部
１２２・・・退避用メモリ
１２３・・・消去回数記憶部
２００・・・ＮＡＮＤ型フラッシュメモリ
２０１・・・消去回数部
２０２・・・論理ページ番号部
２０３・・・バージョン番号部
２０４・・・データ部
【図１】
2008287398.tif 000003
【図２】
2008287398.tif 000004
【図３】
2008287398.tif 000005
【図４】
2008287398.tif 000006
【図５】
2008287398.tif 000007
【図６】
2008287398.tif 000008
【図７】
2008287398.tif 000009
【図８】
2008287398.tif 000010