(57)【特許請求の範囲】
【請求項１】
複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップを所定の数ごとの複数のレーンに分割したとき、前記レーンごとにそのレーンに属する不揮発性メモリチップに接続され、前記不揮発性メモリチップに対する書き込みまたは読み出しデータを一時記憶するバッファ記憶制御部と、を含んで構成された不揮発データ記憶部と、
前記不揮発性メモリチップにおける書き込みデータ消去の単位領域であるブロックのデータ消去回数を平準化するための平準化管理情報を記憶する平準化管理情報記憶部と、
電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、
前記電源供給オン・オフ検知部により電源供給のオフが検知されたとき、前記平準化管理情報記憶部に記憶されている平準化管理情報を前記不揮発データ記憶部に退避し、前記電源供給オン・オフ検知部により電源供給のオンが検知されたとき、前記不揮発データ記憶部に退避されている平準化管理情報を前記平準化管理情報記憶部に回復させる平準化管理情報退避・回復処理部と、
を備え、
前記平準化管理情報退避・回復処理部が前記平準化管理情報記憶部から読み出した退避データを前記複数のバッファ記憶制御部へ順次転送し、前記退避データの転送を受けた前記複数のバッファ記憶制御部のそれぞれが、互いに独立に並行して前記退避データを前記不揮発性メモリチップに転送して書き込むように構成されたソリッド・ステート・ドライブ装置であって、
前記平準化管理情報退避・回復処理部は、
前記平準化管理情報を前記不揮発データ記憶部に退避する場合には、
前記平準化管理情報記憶部から前記平準化管理情報を順次所定のデータ長の退避データとして読み出し、
前記読み出した退避データの先頭データが前記平準化管理情報記憶部に記憶されていたときのアドレス情報を取得し、
前記退避データに前記取得したアドレス情報を付加した情報を、前記不揮発データデータ記憶部に書き込むこと
を特徴とするソリッド・ステート・ドライブ装置。
【請求項２】
複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップを所定の数ごとの複数のレーンに分割したとき、前記レーンごとにそのレーンに属する不揮発性メモリチップに接続され、前記不揮発性メモリチップに対する書き込みまたは読み出しデータを一時記憶するバッファ記憶制御部と、を含んで構成された不揮発データ記憶部と、
前記不揮発性メモリチップにおける書き込みデータ消去の単位領域であるブロックのデータ消去回数を平準化するための平準化管理情報を記憶する平準化管理情報記憶部と、
電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、
前記電源供給オン・オフ検知部により電源供給のオフが検知されたとき、前記平準化管理情報記憶部に記憶されている平準化管理情報を前記不揮発データ記憶部に退避し、前記電源供給オン・オフ検知部により電源供給のオンが検知されたとき、前記不揮発データ記憶部に退避されている平準化管理情報を前記平準化管理情報記憶部に回復させる平準化管理情報退避・回復処理部と、
を備え、
前記平準化管理情報退避・回復処理部が前記平準化管理情報記憶部から読み出した退避データを前記複数のバッファ記憶制御部へ順次転送し、前記退避データの転送を受けた前記複数のバッファ記憶制御部のそれぞれが、互いに独立に並行して前記退避データを前記不揮発性メモリチップに転送して書き込むように構成されたソリッド・ステート・ドライブ装置であって、
前記平準化管理情報退避・回復処理部は、
前記退避データを前記不揮発データ記憶部の所定のページに書き込んだ結果として、書き込みエラーが生じたときには、前記退避データと同じデータを、前記不揮発データ記憶部の前記所定のページの次のページに書き込むこと
を特徴とするソリッド・ステート・ドライブ装置。
【請求項３】
複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップを所定の数ごとの複数のレーンに分割したとき、前記レーンごとにそのレーンに属する不揮発性メモリチップに接続され、前記不揮発性メモリチップに対する書き込みまたは読み出しデータを一時記憶するバッファ記憶制御部と、を含んで構成された不揮発データ記憶部と、
前記不揮発性メモリチップにおける書き込みデータ消去の単位領域であるブロックのデータ消去回数を平準化するための平準化管理情報を記憶する平準化管理情報記憶部と、
電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、
前記電源供給オン・オフ検知部により電源供給のオフが検知されたとき、前記平準化管理情報記憶部に記憶されている平準化管理情報を前記不揮発データ記憶部に退避し、前記電源供給オン・オフ検知部により電源供給のオンが検知されたとき、前記不揮発データ記憶部に退避されている平準化管理情報を前記平準化管理情報記憶部に回復させる平準化管理情報退避・回復処理部と、
を備え、
前記平準化管理情報退避・回復処理部が前記平準化管理情報記憶部から読み出した退避データを前記複数のバッファ記憶制御部へ順次転送し、前記退避データの転送を受けた前記複数のバッファ記憶制御部のそれぞれが、互いに独立に並行して前記退避データを前記不揮発性メモリチップに転送して書き込むように構成されたソリッド・ステート・ドライブ装置であって、
前記平準化管理情報退避・回復処理部は、
前記不揮発データ記憶部を構成する前記不揮発性メモリチップの故障チップについての情報を記憶した故障チップ情報記憶部を備えており、
前記平準化管理情報を前記不揮発データ記憶部へ退避する場合には、前記故障チップ情報記憶部を参照して、前記不揮発データ記憶部の退避先の領域が前記故障チップに該当するか否かを判定し、前記故障チップに該当するときには、前記平準化管理情報の前記故障チップへの退避を省略し、
前記平準化管理情報の前記故障チップ以外の前記不揮発性メモリチップへの退避完了後に、前記平準化管理情報のうち前記故障チップへ退避することになっていた情報を、前記故障チップ以外の前記不揮発性メモリチップへ分散して退避すること
を特徴とするソリッド・ステート・ドライブ装置。
【請求項４】
複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップを所定の数ごとの複数のレーンに分割したとき、前記レーンごとにそのレーンに属する不揮発性メモリチップに接続され、前記不揮発性メモリチップに対する書き込みまたは読み出しデータを一時記憶するバッファ記憶制御部と、を含んで構成された不揮発データ記憶部と、
前記不揮発性メモリチップにおける書き込みデータ消去の単位領域であるブロックのデータ消去回数を平準化するための平準化管理情報を記憶する平準化管理情報記憶部と、
電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、
前記電源供給オン・オフ検知部により電源供給のオフが検知されたとき、前記平準化管理情報記憶部に記憶されている平準化管理情報を前記不揮発データ記憶部に退避し、前記電源供給オン・オフ検知部により電源供給のオンが検知されたとき、前記不揮発データ記憶部に退避されている平準化管理情報を前記平準化管理情報記憶部に回復させる平準化管理情報退避・回復処理部と、
を備え、
前記平準化管理情報退避・回復処理部が前記平準化管理情報記憶部から読み出した退避データを前記複数のバッファ記憶制御部へ順次転送し、前記退避データの転送を受けた前記複数のバッファ記憶制御部のそれぞれが、互いに独立に並行して前記退避データを前記不揮発性メモリチップに転送して書き込むように構成されたソリッド・ステート・ドライブ装置における平準化管理情報の退避・回復方法であって、
前記平準化管理情報退避・回復処理部は、
前記平準化管理情報を前記不揮発データ記憶部に退避する場合には、
前記平準化管理情報記憶部から前記平準化管理情報を順次所定のデータ長の退避データとして読み出し、
前記読み出した退避データの先頭データが前記平準化管理情報記憶部に記憶されていたときのアドレス情報を取得し、
前記退避データに前記取得したアドレス情報を付加した情報を、前記不揮発データデータ記憶部に書き込むこと
を特徴とする平準化管理情報の退避・回復方法。
【請求項５】
複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップを所定の数ごとの複数のレーンに分割したとき、前記レーンごとにそのレーンに属する不揮発性メモリチップに接続され、前記不揮発性メモリチップに対する書き込みまたは読み出しデータを一時記憶するバッファ記憶制御部と、を含んで構成された不揮発データ記憶部と、
前記不揮発性メモリチップにおける書き込みデータ消去の単位領域であるブロックのデータ消去回数を平準化するための平準化管理情報を記憶する平準化管理情報記憶部と、
電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、
前記電源供給オン・オフ検知部により電源供給のオフが検知されたとき、前記平準化管理情報記憶部に記憶されている平準化管理情報を前記不揮発データ記憶部に退避し、前記電源供給オン・オフ検知部により電源供給のオンが検知されたとき、前記不揮発データ記憶部に退避されている平準化管理情報を前記平準化管理情報記憶部に回復させる平準化管理情報退避・回復処理部と、
を備え、
前記平準化管理情報退避・回復処理部が前記平準化管理情報記憶部から読み出した退避データを前記複数のバッファ記憶制御部へ順次転送し、前記退避データの転送を受けた前記複数のバッファ記憶制御部のそれぞれが、互いに独立に並行して前記退避データを前記不揮発性メモリチップに転送して書き込むように構成されたソリッド・ステート・ドライブ装置における平準化管理情報の退避・回復方法であって、
前記平準化管理情報退避・回復処理部は、
前記退避データを前記不揮発データ記憶部の所定のページに書き込んだ結果として、書き込みエラーが生じたときには、前記退避データと同じデータを、前記不揮発データ記憶部の前記所定のページの次のページに書き込むこと
を特徴とする平準化管理情報の退避・回復方法。
【請求項６】
複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップを所定の数ごとの複数のレーンに分割したとき、前記レーンごとにそのレーンに属する不揮発性メモリチップに接続され、前記不揮発性メモリチップに対する書き込みまたは読み出しデータを一時記憶するバッファ記憶制御部と、を含んで構成された不揮発データ記憶部と、
前記不揮発性メモリチップにおける書き込みデータ消去の単位領域であるブロックのデータ消去回数を平準化するための平準化管理情報を記憶する平準化管理情報記憶部と、
電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、
前記電源供給オン・オフ検知部により電源供給のオフが検知されたとき、前記平準化管理情報記憶部に記憶されている平準化管理情報を前記不揮発データ記憶部に退避し、前記電源供給オン・オフ検知部により電源供給のオンが検知されたとき、前記不揮発データ記憶部に退避されている平準化管理情報を前記平準化管理情報記憶部に回復させる平準化管理情報退避・回復処理部と、
を備え、
前記平準化管理情報退避・回復処理部が前記平準化管理情報記憶部から読み出した退避データを前記複数のバッファ記憶制御部へ順次転送し、前記退避データの転送を受けた前記複数のバッファ記憶制御部のそれぞれが、互いに独立に並行して前記退避データを前記不揮発性メモリチップに転送して書き込むように構成されたソリッド・ステート・ドライブ装置における平準化管理情報の退避・回復方法であって、
前記平準化管理情報退避・回復処理部は、
前記不揮発データ記憶部を構成する前記不揮発性メモリチップの故障チップについての情報を記憶した故障チップ情報記憶部を備え、
前記平準化管理情報を前記不揮発データ記憶部へ退避する場合には、前記故障チップ情報記憶部を参照して、前記不揮発データ記憶部の退避先の領域が前記故障チップに該当するか否かを判定し、前記故障チップに該当するときには、前記平準化管理情報の前記故障チップへの退避を省略し、
前記平準化管理情報の前記故障チップ以外の前記不揮発性メモリチップへの退避完了後に、前記平準化管理情報のうち前記故障チップへ退避することになっていた情報を、前記故障チップ以外の前記不揮発性メモリチップへ分散して退避すること
を特徴とする平準化管理情報の退避・回復方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを用いて構成された記憶装置であるソリッド・ステート・ドライブ装置（以下、ＳＳＤ装置と略称）、および、そのＳＳＤ装置の記憶領域におけるデータ書き換え回数を平準化するために用いられる平準化管理情報の退避・回復方法に関する。
【背景技術】
【０００２】
近年、不揮発性半導体メモリであるフラッシュメモリを用いて、ハードディスク装置に代わるＳＳＤ装置を構成することが盛んに行われるようになった。ＳＳＤ装置は、ハードディスク装置で必須の可動部品が不要であるため、一般には、高速かつ高信頼であるとされている。
【０００３】
しかしながら、フラッシュメモリには、データの書き込みと消去に伴う疲労現象がみられ、そのメモリセルへのデータの書き換え回数は、通常、１０万回とされている。コンピュータ応用の場合、その使い方にもよるが、ＳＳＤ装置におけるフラッシュメモリの特定の記憶領域のデータが１０万回書き換えられるまでに、必ずしも長い時間を要しない。これでは、可動部品がないがゆえに高信頼である、というＳＳＤ装置のメリットが損なわれてしまう。
【０００４】
そこで、フラッシュメモリを用いたＳＳＤ装置では、その期待される高信頼性を確保するために、特定の記憶領域へのデータの書き込み（消去）が集中するのを回避し、各記憶領域におけるデータ書き換え回数を平準化する、いわゆる、ウェアレベリング技術が導入されている（例えば、特許文献１、特許文献２参照）。
【０００５】
特許文献１、特許文献２などに示されているように、ウェアレベリングの方法は様々であるが、一般的なウェアレベリングでは、記憶領域ごとに書き換え回数（消去回数）を管理するテーブルや、コンピュータから指定される論理アドレスをフラッシュメモリの物理アドレスに変換するためのアドレス変換テーブルがしばしば利用される。本明細書では、アドレス変換テーブルなどウェアレベリングに用いられる情報を総称して、平準化管理情報と呼ぶ。
【０００６】
平準化管理情報は、しばしば、ＳＳＤ装置を構成するフラッシュメモリの所定の記憶領域に記憶される（例えば、特許文献２参照）。しかしながら、データアクセスの高速性が要求されるような応用では、論理・物理アドレス変換も高速で行う必要があり、その目的のために、アドレス変換テーブルが高速のＤＲＡＭ（Dynamic Random Access Memory）などに記憶されることがある。その場合、ＤＲＡＭが揮発性メモリであることから、ＳＳＤ装置は、電源投入の都度、アドレス変換テーブルを含む平準化管理情報をＤＲＡＭにロードすることが必要となる。また、平準化管理情報が、例えば、過去の履歴に伴って、時々刻々に変化するような場合には、ＳＳＤ装置は、電源切断のたびに、ＤＲＡＭに記憶されている平準化管理情報を不揮発性のフラッシュメモリに退避することが必要となる。
【０００７】
以上のように、平準化管理情報が揮発性メモリに記憶され、時々刻々書き換えられるような応用のＳＳＤ装置においては、電源が切断または投入されるたびに、平準化管理情報を退避または回復する処理が実行される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００３−２０３０１６号公報
【特許文献２】特開２００８−１９１８５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
一般に、ＳＳＤ装置は、数１０ＧＢ〜数１００ＧＢとういう大容量の記憶装置であるから、その平準化管理情報も数１０ＭＢに及ぶ場合がある。また、電源の切断では、突然の停電も考慮しなければならない。すなわち、ＳＳＤ装置における平準化管理情報の退避・回復処理では、数１０ＭＢに及ぶ大容量の平準化管理情報を短時間（例えば、０．３秒〜０．５秒）のうちに不揮発性メモリに退避させることが解決すべき大きな課題となる。
【００１０】
そこで、本発明の目的は、大容量の平準化管理情報を短時間のうちに不揮発性メモリに退避させることが可能なＳＳＤ装置およびその平準化管理情報の退避・回復方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明に係るソリッド・ステート・ドライブ（ＳＳＤ）装置は、（１）複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップを所定の数ごとの複数のレーンに分割したとき、前記レーンごとにそのレーンに属する不揮発性メモリチップに接続され、前記不揮発性メモリチップに対する書き込みまたは読み出しデータを一時記憶するバッファ記憶制御部と、を含んで構成された不揮発データ記憶部と、（２）前記不揮発性メモリチップにおける書き込みデータ消去の単位領域であるブロックのデータ消去回数を平準化するための平準化管理情報を記憶する平準化管理情報記憶部と、（３）電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、（４）前記電源供給オン・オフ検知部により電源供給のオフが検知されたとき、前記平準化管理情報記憶部に記憶されている平準化管理情報を前記不揮発データ記憶部に退避し、前記電源供給オン・オフ検知部により電源供給のオンが検知されたとき、前記不揮発データ記憶部に退避されている平準化管理情報を前記平準化管理情報記憶部に回復させる平準化管理情報退避・回復処理部と、を備え、さらに、（５）前記平準化管理情報退避・回復処理部が前記平準化管理情報記憶部から読み出した退避データを順次前記複数のバッファ記憶制御部のそれぞれに転送したときには、前記複数のバッファ記憶制御部は、前記それぞれに転送された退避データを受け取り、前記受け取った退避データを互いに独立に並行して前記不揮発性メモリチップに転送して書き込むように構成されている。（６）そして、以上のように構成された本発明に係るソリッド・ステート・ドライブ（ＳＳＤ）装置は、前記平準化管理情報退避・回復処理部が、前記平準化管理情報を前記不揮発データ記憶部に退避する場合には、前記平準化管理情報記憶部から前記平準化管理情報を順次所定のデータ長の退避データとして読み出し、前記読み出した退避データの先頭データが前記平準化管理情報記憶部に記憶されていたときのアドレス情報を取得し、前記退避データに前記取得したアドレス情報を付加した情報を、前記不揮発データデータ記憶部に書き込むことを特徴とする。
【００１２】
一般に、不揮発性メモリへのデータの書き込みは、データ読み出しに比べ長時間を要するが、本発明では、平準化管理情報記憶部から読み出されて退避される平準化管理情報を、複数のレーンそれぞれに設けられたバッファ記憶制御部を介することによって、それぞれのレーンごとにそのレーンに属する不揮発性メモリチップに、互いに独立に並行して書き込むことが可能となる。従って、平準化管理情報の退避に要する時間が短縮される。
【発明の効果】
【００１３】
本発明によれば、大容量の平準化管理情報を短時間のうちに不揮発性メモリに退避させることが可能なソリッド・ステート・ドライブ装置およびその平準化管理情報の退避・回復方法を提供することが可能になる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係るＳＳＤ装置の構成の例を示した図。
【図２】本発明の実施形態に係るＮＶＭチップの構成の例を示した図。
【図３】平準化管理情報記憶部とＮＶＭチップの記憶領域の構成の例を示した図。
【図４】退避先のＮＶＭチップに故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しない場合の平準化管理情報の退避処理において行われる退避データの基本転送手順の例を示した図。
【図５】図４に示した基本転送手順に従って平準化管理情報をＮＶＭチップへ退避するとき、平準化管理情報記憶部のＷＭに記憶されている平準化管理情報データが各ＮＶＭチップへ退避される様子を例示した図。
【図６】退避先のＮＶＭチップに故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しない場合の平準化管理情報の回復処理において行われる回復データの基本転送手順の例を示した図。
【図７】図４および図６を用いて説明した平準化管理情報の退避処理および回復処理で行われるデータの転送手順をタイムチャートで示した図。
【図８】不良ブロック情報テーブルおよび故障チップ情報テーブルの構成の例を示した図。
【図９】平準化管理情報の退避処理中にページ書き込みエラーが生じる場合の退避データの転送手順の例を示した図（前半部分）。
【図１０】平準化管理情報の退避処理中にページ書き込みエラーが生じる場合の退避データの転送手順の例を示した図（後半部分）。
【図１１】故障チップがある場合の退避データの転送手順のうち、後半部分の転送手順の例を示した図。
【図１２】故障チップがある場合の退避データの転送手順において、前半部分の退避処理で退避されなかった平準化管理情報が後半部分の退避処理で各ＮＶＭチップに退避される様子を示した図。
【図１３】不良ブロックが存在するＮＶＭチップにおけるページアドレスの付し方を説明する図。
【図１４】平準化管理情報退避・回復処理部およびバッファ記憶制御部が行う平準化管理情報の退避処理の処理フローの例を示した図。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
【００１６】
図１は、本発明の実施形態に係るＳＳＤ装置の構成の例を示した図である。図１に示すように、ＳＳＤ装置１は、自身にとって外部装置となるホスト装置２に、ホストバス３を介して接続されて用いられる。
【００１７】
ここで、ホスト装置２は、いわゆるコンピュータ、または、コンピュータを利用した様々な形態の情報処理装置、制御装置、端末装置などである。また、ホストバス３は、ＩＤＥ（Integrated Drive Electronics），ＳＣＳＩ（Small Computer System Interface），ＳＡＴＡ（Serial Advanced Technology Attachment），ＳＡＳ（Serial Attached SCSI），ＵＳＢ（Universal Serial Bus）などである。
【００１８】
ＳＳＤ装置１は、不揮発データ記憶部２０および不揮発データ記憶制御部１０によって構成される。不揮発データ記憶部２０は、不揮発性メモリであるフラッシュメモリからなるＮＶＭ（Non-Volatile Memory：不揮発性メモリ）チップ２３を複数個含んで構成され、ホスト装置２から供給されるデータを不揮発に記憶する。また、不揮発データ記憶制御部１０は、基本的には、ホスト装置２から供給されるデータをＮＶＭチップ２３へ書き込む制御、および、ホスト装置２からの求めに応じてＮＶＭチップ２３に書き込まれているデータを読み出す制御を行う。
【００１９】
不揮発データ記憶制御部１０は、データ書き込み・読み出し制御部１１、平準化管理部１２、平準化管理情報記憶部１３、平準化管理情報退避・回復処理部１４、電源オン・オフ検知部１５を含んで構成される。
【００２０】
データ書き込み・読み出し制御部１１は、ホストバス３を介してホスト装置２から送信されるＳＳＤ装置１に対するデータ書き込み要求、データ読み出し要求などのコマンドを受信する。そして、そのコマンドがデータ書き込み要求である場合には、コマンドに続いてホスト装置２から送信される論理アドレスと書き込みデータを受信し、論理アドレスをＮＶＭチップ２３の物理アドレスに変換して、前記の受信した書き込みデータをその変換した物理アドレスで指定されるＮＶＭチップ２３へ書き込む。また、コマンドがデータ読み出し要求である場合には、コマンドに続いてホスト装置２から送信される論理アドレスをＮＶＭチップ２３の物理アドレスに変換して、その変換した物理アドレスで指定されるＮＶＭチップ２３からデータを読み出し、読み出したデータをホスト装置２へ送信する。
【００２１】
平準化管理情報記憶部１３は、データ書き込み・読み出し制御部１１が論理アドレスを物理アドレスに変換するときに用いられる論理・物理変換テーブルや、ＮＶＭチップ２３の物理アドレスとその物理アドレスで指定される記憶領域のデータの書き換え（消去）回数などの情報を記憶する。本実施形態では、この平準化管理情報記憶部１３は、揮発性半導体メモリであるＤＲＡＭによって構成されるとする。
【００２２】
平準化管理部１２は、データ書き込み・読み出し制御部１１が実行するコマンドを監視して、平準化管理情報記憶部１３におけるＮＶＭチップ２３の各記憶領域のデータの消去回数などを更新するとともに、その消去回数を平準化するために、適宜、論理・物理変換テーブルを変更する。なお、本実施形態では、論理・物理変換テーブルを含んで構成される平準化管理情報は、所定の時間ごとにまたは所定の条件が満たされるごとに変更されるものであれば、どのようなものであってもよい。従って、平準化管理情報を変更する条件や論理・物理変換の方法などについては、とくに限定をするものではない。
【００２３】
電源オン・オフ検知部１５は、ＳＳＤ装置１へ供給される電源供給の切断（オフ）および投入（オン）を検知する。なお、ＳＳＤ装置１は、図示しない電源回路を有し、その電源回路に設けられているコンデンサにより、電源オン・オフ検知部１５により電源供給のオフが検知された後も、所定の時間（例えば、０．３〜０．５秒）は、ＳＳＤ装置１が正常に動作するための電圧および電流が供給されるものとする。
【００２４】
平準化管理情報退避・回復処理部１４は、電源オン・オフ検知部１５によってＳＳＤ装置１への電源供給のオフが検知されたとき、平準化管理情報記憶部１３に記憶されている平準化管理情報を不揮発データ記憶部２０のＮＶＭチップ２３の記憶領域のあらかじめ定められた領域に退避する。また、平準化管理情報退避・回復処理部１４は、ＳＳＤ装置１への電源供給のオンが検知されたとき、ＮＶＭチップ２３に退避されている平準化管理情報を平準化管理情報記憶部１３に回復させる。
【００２５】
ここで、各レーン２１のバッファ記憶制御部２２とそのレーン２１に属するＮＶＭチップ２３とは、チップ接続バス２４によって接続されている。また、各レーン２１のバッファ記憶制御部２２と不揮発データ記憶制御部１０とは、レーン接続バス３０によって接続されている。
【００２６】
平準化管理情報退避・回復処理部１４は、その内部に不良ブロック情報テーブル１４１および故障チップ情報テーブル１４２を有しているが、その詳細については後記する。また、平準化管理情報の退避・回復の詳細な処理手順については、この明細書の中で順次説明する。
【００２７】
不揮発データ記憶部２０は、複数のＮＶＭチップ２３を含んで構成されるが、その複数のＮＶＭチップ２３は、レーン２１によってグループ化される。本実施形態では、８個のレーン２１が設けられ、それぞれのレーン２１には、それぞれ独立に動作するバッファ記憶制御部２２および３個のＮＶＭチップ２３が含まれている。
【００２８】
バッファ記憶制御部２２は、高速のＲＡＭなどで構成されたバッファメモリ（ＢＭ：図４など参照）を有して構成され、ＮＶＭチップ２３への書き込み・読み出しデータをバッファメモリに一時記憶するとともに、ＮＶＭチップ２３に対するデータの書き込みおよび読み出しタイミングの調整を行う。
【００２９】
図２は、ＮＶＭチップ２３の構成の例を示した図である。ここでは、ＮＶＭチップ２３は、いわゆるフラッシュメモリである。フラッシュメモリの場合、図２（ａ），（ｂ）に示すように、１個のＮＶＭチップ２３の記憶領域は、複数のブロック２３１に分割され、それぞれのブロック２３１は、複数のページ２３２（例えば、６４ページ）に分割されて構成されている。また、図２（ｃ）に示すように、それぞれのページ２３２には、４ｋＢのデータを記憶する記憶領域が設けられている。
【００３０】
そこで、１個のＮＶＭチップ２３の記憶容量が、例えば、４ＧＢである場合には、１ブロック＝６４ページ、１ページ＝４ｋＢであるとすると、１個のＮＶＭチップ２３には、およそ１６０００個のブロックが設けられていることになる。本実施形態では、このうち、例えば、１４個のブロックを、平準化管理情報を退避するための退避データ記憶領域として用い、残りのブロックを外部データ（ホスト装置２から供給されるデータ）を記憶する外部データ記憶領域として用いる。
【００３１】
これらＮＶＭチップ２３におけるブロック２３１およびページ２３２の構成は、フラッシュメモリ自体の構造およびその読み出し・書き込み方法に由来し、そのデータの読み出し・書き込みついては、次のような制約が設けられている。
（１）データ読み出し・書き込みは、ページ２３２の単位で行う。（２）データの消去はブロック２３１の単位で行う。（３）ページ２３２が消去された状態でなければ、そのページ２３２への書き込みはできない。（４）ブロック２３１の消去回数には、上限がある。
【００３２】
本実施形態では、ＮＶＭチップ２３に対する退避データの書き込みまたは読み出しは、図２（ｃ）に示すフォーマットを有するページ２３２を単位として行われる。そのフォーマットによれば、ページ２３２は、ヘッダ２３３とそれぞれが５１２Ｂの退避データを含んでなる８個のセグメント２３４とによって構成される。このとき、各セグメント２３４の退避データには、ＣＲＣ（Cyclic Redundancy Check）符号やリード・ソロモン符号などの検査符号２３５が付加される。また、本実施形態では、ヘッダ２３３は、退避される１ページ分（４ｋＢ）の平準化管理情報の先頭データが平準化管理情報記憶部１３に記憶されていたときのアドレス（以下、本明細書では、このアドレスを退避データ先頭アドレスと呼ぶ）を含んで構成される。
【００３３】
なお、ここまでの説明では、ページ２３２は、４ｋＢのデータを記憶する記憶領域を有するとしているが、実際には（物理的には）４ｋＢ＋αの記憶領域を有している。このとき、＋αは２００〜２５６Ｂ程度であるが、この＋αの記憶領域部分を利用して、ヘッダ２３３や検査符号２３５が記憶される。
【００３４】
図３は、平準化管理情報記憶部１３とＮＶＭチップ２３の記憶領域の構成の例を示した図である。図３に示すように、平準化管理情報記憶部１３には、平準化管理情報のほかに追加退避情報やそれらを併せたデータに対するチェックサムが記憶され、平準化管理情報がＮＶＭチップ２３に退避されるときには、これらのデータがすべて退避される。ここで、追加退避情報とは、平準化管理情報退避・回復処理部１４に含まれる各種レジスタ、不良ブロック情報テーブル１４１、故障チップ情報テーブル１４２などに記憶されているデータをいう。
【００３５】
従って、電源オン・オフ検知部１５により電源供給のオフが検知されたときには、平準化管理情報退避・回復処理部１４は、まず、不良ブロック情報テーブル１４１などの追加退避情報を平準化管理情報記憶部１３に格納した上で、平準化管理情報記憶部１３に記憶されているすべてのデータを退避データとしてＮＶＭチップ２３へ退避する。
【００３６】
本実施形態では、平準化管理情報記憶部１３に記憶されるデータの総容量を全４８ＭＢであるとし、その４８ＭＢのデータを２４個のＮＶＭチップ２３に分散して退避する。このとき、２４個のＮＶＭチップ２３全体として、全８４ＭＢの退避データ記憶領域が用意され、そのうち、４８ＭＢが基本退避領域であり、３６ＭＢが予備退避領域である。すなわち、ＮＶＭチップ２３それぞれについて見れば、５１２ページ（８ブロック）が基本退避領域として用いられ、３８４ページ（６ブロック）が予備退避領域として用いられる。なお、本実施形態では、これら８９６ページの退避データ記憶領域は、各ＮＶＭチップ２３において物理ページのアドレス（＃０）〜（＃８９５）の領域に、固定的に割当てられるものとする。
【００３７】
予備退避領域には、２４個のＮＶＭチップ２３のいずれかが故障チップであった場合に、その故障チップに退避されることになっていた退避データが各ＮＶＭチップ２３の予備退避領域に分散されて退避される。また、ＮＶＭチップ２３に不良ブロックが存在した場合や、ＮＶＭチップ２３へのデータ書き込み時にページ書き込みエラーが生じた場合には、その分、余分な退避領域が必要となるので、その場合にも、平準化管理情報は、予備退避領域に広がって記憶される。
【００３８】
続いて、図４〜図７を参照して、ＮＶＭチップ２３に故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しないまたは生じない場合について、平準化管理情報記憶部１３に記憶されている平準化管理情報をＮＶＭチップ２３に退避または回復する手順について説明する。なお、本明細書では、単に、平準化管理情報という場合には、平準化管理情報記憶部１３に記憶されている全部のデータ、すなわち、図３に示した平準化管理情報だけでなく、追加退避情報およびチェックサムを含むものとする。また、以下では、退避または回復されているときの平準化管理情報を、しばしば、退避データまたは回復データと呼ぶ。
【００３９】
図４は、退避先のＮＶＭチップ２３に故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しない場合の平準化管理情報の退避処理において行われる退避データの基本転送手順の例を示した図である。なお、図４において、矢線は退避データの転送方向を示し、矢線の傍の括弧付の数字は、その転送が行われる順序を表す。
【００４０】
図４において、平準化管理情報記憶部１３は、ＤＲＡＭなどで構成されたＷＭ（ウェアレベリングメモリ）１３０を含んで構成され、また、バッファ記憶制御部２２は、１ページ分（４ｋＢ）の記憶容量のＢＭ（バッファメモリ）２２０を含んで構成される。なお、ＷＭ１３０は、実質的には平準化管理情報記憶部１３そのものと考えてよいが、本明細書では、平準化管理情報記憶部１３を構成するＤＲＡＭなどの揮発性メモリからなる部分を、とくに、ＷＭ１３０と呼んだものである。
【００４１】
ＷＭ１３０からＮＶＭチップ２３への退避データの転送は、平準化管理情報退避・回復処理部１４の制御のもとに、１ページ分のデータ（４ｋＢ）を単位として行われる。すなわち、平準化管理情報退避・回復処理部１４は、まず、ＷＭ１３０から最初の１ページ分の退避データを読み出し、読み出した退避データをＢＭ（＃０）と記載されたＢＭ２２０（以下、ＢＭ（＃０）と略記する）へ転送する（転送順序（１）参照）。このとき、ＢＭ（＃０）へ転送された１ページ分の退避データは、当該ＢＭ（＃０）に一時記憶される。
【００４２】
なお、平準化管理情報退避・回復処理部１４は、当該１ページ分の退避データを転送するに際して、当該退避データの先頭データがＷＭ１３０に記憶されていたときのアドレス、つまり、退避データ先頭アドレスを併せてＢＭ（＃０）へ転送する。
【００４３】
次に、平準化管理情報退避・回復処理部１４は、ＢＭ（＃０）を有するバッファ記憶制御部２２に対し、ＢＭ（＃０）に一時記憶されている１ページ分の退避データを、ＮＶＭ（＃０）と記載されたＮＶＭチップ２３（以下、ＮＶＭ（＃０）と略記する）へ転送することを指示する。そして、その転送指示を受けたＢＭ（＃０）を有するバッファ記憶制御部２２は、ＢＭ（＃０）に一時記憶されている１ページ分の退避データに、ヘッダ２３３（退避データ先頭アドレス）および退避データ５１２Ｂごとの検査符号２３５を付加し、ＮＶＭ（＃０）へ転送する（転送順序（２）参照）。ＮＶＭ（＃０）に転送された退避データは、ＮＶＭ（＃０）のページ（＃０）の領域に書き込まれる。
【００４４】
平準化管理情報退避・回復処理部１４は、以上の処理においてＢＭ（＃０）を有するバッファ記憶制御部２２に対し、退避データのＮＶＭ（＃０）への退避データの転送を指示すると、その転送の終了を待つことなく、次の処理へ移行する。すなわち、平準化管理情報退避・回復処理部１４は、ＷＭ１３０から次の１ページ分の退避データを読み出し、その読み出した退避データを、ＢＭ（＃１）へ転送する（転送順序（３）参照）。転送された退避データは、そのＢＭ（＃１）に一時記憶される。また、その転送に際しては、退避データ先頭アドレスが併せて転送される。
【００４５】
次に、平準化管理情報退避・回復処理部１４は、ＢＭ（＃１）を有するバッファ記憶制御部２２に対し、ＢＭ（＃１）に一時記憶されている１ページ分の退避データを、ＮＶＭ（＃１）へ転送することを指示する。そして、その転送指示を受けたＢＭ（＃１）を含むバッファ記憶制御部２２は、ＢＭ（＃１）に一時記憶されている１ページ分の退避データにヘッダ２３３（退避データ先頭アドレス）および退避データ５１２Ｂごとの検査符号２３５を付加し、ＮＶＭ（＃１）へ転送する（転送順序（４）参照）。
【００４６】
以下、同様に、平準化管理情報退避・回復処理部１４およびバッファ記憶制御部２２は、転送順序（５），（６），・・・，（４７），（４８）で示される退避データの転送を実行する。そして、以上の転送順序（１）〜（４８）で示される退避データの転送により、ＮＶＭ（＃０）〜ＮＶＭ（＃２３）のそれぞれのページ（＃１）に所定の退避データが退避されたことになる。
【００４７】
さらに、同様に、転送順序（１）〜（４８）で示される退避データの転送が繰り返し実行されることによって、所定の退避データがＮＶＭ（＃０）〜ＮＶＭ（＃２３）のそれぞれのページ（＃２），ページ（＃３），・・・，ページ（＃５１１）へ、順次、退避される。
【００４８】
図５は、図４に示した基本転送手順に従って平準化管理情報をＮＶＭチップ２３へ退避するとき、平準化管理情報記憶部１３のＷＭ１３０に記憶されている平準化管理情報が各ＮＶＭチップ２３へ退避される様子を例示した図である。
【００４９】
図５では、ＷＭ１３０は、１ページ（４ｋＢ）分のデータで区分され、その区分された区画内には、転送先となるＮＶＭチップ２３のチップ番号およびページアドレスが記載されている。また、各区画の左側には、その区画の先頭アドレスが記載されている。この先頭アドレスは、退避データ先頭アドレスとして、各ＮＶＭチップ２３に書き込まれるページ２３２のデータのヘッダ２３３に含まれる。
【００５０】
また、図５では、矢線により、退避元のＷＭ１３０の区画と退避先のＮＶＭチップ２３のページが接続されて示されている。そして、この矢線の傍に付された括弧付の数字は、図４における括弧付の数字と同じものであり、データの転送順序を意味している。ただし、図が煩雑になることを避けるため、この転送順序を表す数は、一部の矢線にのみ付されている。
【００５１】
図６は、退避先のＮＶＭチップ２３に故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しない場合の平準化管理情報の回復処理において行われる回復データの基本転送手順の例を示した図である。なお、ここで、回復データとは、ＮＶＭチップ２３に退避されている平準化管理情報をいう。また、図６において、矢線は回復データの転送方向を示し、矢線の傍の括弧付の数字は、その転送が行われる順序を表す。
【００５２】
平準化管理情報の回復処理では、平準化管理情報退避・回復処理部１４は、まず、各レーン２１のバッファ記憶制御部２２に対して、ＮＶＭチップ２３からの回復データの読み出を指示する。各レーン２１のバッファ記憶制御部２２は、その指示を受けて、ＮＶＭ（＃０）〜ＮＶＭ（＃７）から１ページ分の回復データを読み出し、その読み出した回復データをそれぞれＢＭ（＃０）〜ＢＭ（＃７）へ転送する（転送順序（１）参照）。そして、その転送されたそれぞれの回復データは、ＢＭ（＃０）〜ＢＭ（＃７）に一時記憶される。
【００５３】
ここで、８つのバッファ記憶制御部２２が平準化管理情報退避・回復処理部１４から回復データの読み出し指示を受ける時間は、バッファ記憶制御部２２がＮＶＭ（＃０）〜ＮＶＭ（＃７）から回復データ読み出して、ＢＭ（＃０）〜ＢＭ（＃７）へ転送する時間に比べ、極めて小さいため、各レーン２１におけるＮＶＭチップ２３からＢＭ２２０への回復データの転送は、ほとんど同時に行われる。
【００５４】
次に、平準化管理情報退避・回復処理部１４は、ＢＭ（＃０）〜（＃７）に一時記憶された回復データを、順次、ＷＭ１３０へ転送し（転送順序（２）〜（９）参照）、ＷＭ１３０の元のアドレスへ格納する。
【００５５】
なお、このＢＭ（＃０）〜（＃７）からＷＭ１３０への回復データの転送に際しては、ＮＶＭ（＃０）〜（＃７）から読み出された回復データのヘッダ２３３（回復データのフォーマットは、図２の退避データのフォーマットと同じ）に含まれる退避データ先頭アドレスが併せて転送される。従って、平準化管理情報退避・回復処理部１４は、ＢＭ（＃０）〜（＃７）から転送される回復データをＷＭ１３０の元のアドレスに容易に格納することができる。
【００５６】
以下、同様に、平準化管理情報退避・回復処理部１４は、各レーン２１のバッファ記憶制御部２２に対して、ＮＶＭチップ２３から次の回復データの読み出しを指示し、その指示を受けて、各レーン２１のバッファ記憶制御部２２は、ＮＶＭ（＃８）〜ＮＶＭ（＃１５）から１ページ分の回復データを読み出し、その読み出した回復データをそれぞれＢＭ（＃０）〜ＢＭ（＃７）へ転送し（転送順序（１０）参照）、それぞれＢＭ（＃０）〜ＢＭ（＃７）に一時記憶する。
【００５７】
次に、平準化管理情報退避・回復処理部１４は、ＢＭ（＃０）〜（＃７）に一時記憶された回復データを、順次、ＷＭ１３０へ転送し（転送順序（１１）〜（１８）参照）、ＷＭ１３０の元のアドレスへ格納する。
【００５８】
さらに、同様に、平準化管理情報退避・回復処理部１４およびバッファ記憶制御部２２は、ＮＶＭ（＃１６）〜ＮＶＭ（＃２３）から次の１ページ分の回復データを読み出し、読み出したデータを、ＢＭ（＃０）〜ＢＭ（＃７）経由でＷＭ１３０へ転送する（転送順序（１９）〜（２７）参照）。
【００５９】
以上の転送順序（０）〜（２７）で示される回復データの転送により、ＮＶＭ（＃０）〜ＮＶＭ（＃２３）のそれぞれのページ（＃０）に退避されていたデータがＷＭ１３０に回復されたことになる。さらに、転送順序（０）〜（２７）で示される回復データの転送を５１１回繰り返すことによって、ＮＶＭ（＃０）〜ＮＶＭ（＃２３）のそれぞれのページ（＃１）〜ページ（＃５１１）に退避されていたデータがＷＭ１３０に回復される。
【００６０】
図７は、図４および図６を用いて説明した平準化管理情報の退避処理および回復処理で行われるデータの転送手順をタイムチャートで示した図であり、（ａ）は、退避処理時のタイムチャート、（ｂ）は、回復処理時のタイムチャートである。なお、図７において、横方向は時間軸を示し、縦方向の各段には、各ＮＶＭチップ２３（ＮＶＭ（＃０）〜（＃２３））に係るデータ転送動作が網掛けされた横方向のバーで示されている。
【００６１】
退避処理の場合、その単位処理は、［１］平準化管理情報退避・回復処理部１４が１ページ分の退避データをＷＭ１３０からＢＭ２２０へ転送する動作（レーン接続バス３０を利用）、［２］バッファ記憶制御部２２が１ページ分の退避データをＢＭ２２０へ転送する動作（各レーン２１のチップ接続バス２４を利用）、［３］ＮＶＭチップ２３が１ページ分の退避データをプログラムする動作（ここでいうプログラムとは、フラッシュメモリの記憶セルへのデータの電気的・物理的な書き込み動作をいう）、によって構成される。すなわち、１ページ分の退避データをＷＭ１３０から読み出して、ＮＶＭチップ２３に書き込むまでの単位退避処理は、［１］＋［２］＋［３］の動作によって構成される。
【００６２】
また、回復処理の場合、その単位処理は、［４］バッファ記憶制御部２２が１ページ分の回復データをＮＶＭチップ２３から読み出し、ＢＭ２２０へ転送する動作（各レーン２１のチップ接続バス２４を利用）、［５］平準化管理情報退避・回復処理部１４が１ページ分の回復データをＢＭ２２０からＷＭ１３０へ転送する動作（レーン接続バス３０を利用）、によって構成される。すなわち、１ページ分の回復データをＮＶＭチップ２３から読み出して、ＷＭ１３０に戻すまでの単位回復処理は、［４］＋［５］の動作によって構成される。
【００６３】
なお、図７（ａ），（ｂ）において、網掛けされた横方向バーの上側に記載された括弧付の数字は、退避または回復データの転送順序を表し、図４（退避処理）および図６（回復処理）における括弧付の数字の転送順序に対応付けられている。
【００６４】
ところで、退避処理の動作［２］におけるＢＭ２２０からＮＶＭチップ２３への退避データの転送は、レーン２１のそれぞれに独立に設けられたチップ接続バス２４を介して行われるので、図７（ａ）（図４も参照）に示すように、各レーン２１における退避データの転送（図中の転送順序（２），（４），・・・，（８））は、それぞれ同時に、並行して行われることが可能である。また、動作［３］のプログラムは、２４個のＮＶＭチップ２３でそれぞれ同時に、並行して行われることが可能である。
【００６５】
従って、実質的には、動作［２］は、その動作時間を本来の１／８まで短縮することができ、また、動作［３］は、その動作時間を本来の１／２４まで短縮することができることになる。ちなみに、図４および図７（ａ）に括弧付の数字で示した転送順序で退避処理が行われ、動作［１］，［２］，［３］の動作時間を、それぞれＴ１，Ｔ２，Ｔ３としたとき、Ｔ２≦Ｔ１×８、かつ、Ｔ２＋Ｔ３≦Ｔ１×２４という条件が満たされる場合には、単位退避処理（［１］＋［２］＋［３］）の動作時間は、見かけ上、Ｔ１の時間で済むことになる。これは、単位退避処理の動作時間が最良値で１／２４まで短縮されることを意味している。
【００６６】
同様に、回復処理の動作［４］におけるＮＶＭチップ２３からＢＭ２２０への回復データの転送も、レーン２１のそれぞれに独立に設けられたチップ接続バス２４を介して行われるので、図７（ａ）（図６も参照）に示すように、各レーン２１における回復データの転送（図中の転送順序（１），（１０），・・・）は、それぞれ同時に、並行して行われることが可能である。
【００６７】
従って、実質的には、動作［４］は、その動作時間を本来の１／８まで短縮することができる。ちなみに、図６および図７（ａ）に括弧付の数字で示した転送順序で回復処理が行われ、動作［４］，［５］の動作時間を、それぞれＴ４，Ｔ５としたときには、単位回復処理（［４］＋［５］）の動作時間は、見かけ上、Ｔ４／８＋Ｔ５の時間で済むことになる。
【００６８】
以上の通り、本実施形態では、平準化管理情報の退避・回復処理の所要時間が大きく短縮される（最良値で１／２４または１／８に短縮）ことになる。
【００６９】
続いて、図８〜図１２を参照して、ＮＶＭチップ２３に故障チップ、不良ブロックまたはページ書き込みエラーが存在または生じる場合について、平準化管理情報記憶部１３に記憶されている平準化管理情報をＮＶＭチップ２３に退避または回復する手順について説明する。図８は、不良ブロック情報記憶部としての不良ブロック情報テーブル１４１および故障チップ情報記憶部としての故障チップ情報テーブル１４２の構成の例を示した図である。
【００７０】
図８（ａ）の不良ブロック情報テーブル１４１は、２４個のＮＶＭチップ２３のそれぞれについて、平準化管理情報の退避領域として用いられるブロック２３１の「良」または「不良」の状態情報を記憶するテーブルである。不良ブロック情報テーブル１４１は、平準化管理情報退避・回復処理部１４が平準化管理情報をＮＶＭチップ２３に退避する際に、各ＮＶＭチップ２３の退避領域として用いられるブロック２３１を消去したとき、その都度、その消去結果に基づき作成される。すなわち、平準化管理情報退避・回復処理部１４は、ブロック２３１を消去しても、そのブロック２３１に含まれるページ２３２のデータの少なくとも一部が消去されなかった場合には、そのブロックを「不良」と判定する。そして、不良ブロック情報テーブル１４１における当該のＮＶＭチップ２３中の不良と判定されたブロックの状態情報に“１”をセットする。
【００７１】
なお、不良ブロック情報テーブル１４１において、“１”は、当該ブロックが「不良」であることを、また、“０”は、当該ブロックが「良」であることを表す。図８（ａ）の例では、２４個のＮＶＭチップ２３のそれぞれに、退避領域のブロック２３１が１４ブロック設けられ、ＮＶＭ（＃１）のブロック（＃２）、および、ＮＶＭ（＃２）のブロック（＃１）を「不良」であるとしている。
【００７２】
故障チップ情報テーブル１４２は、２４個のＮＶＭチップ２３のそれぞれについて、そのＮＶＭチップ２３の「非故障」または「故障」の状態情報を記憶するテーブルである。平準化管理情報退避・回復処理部１４は、平準化管理情報の退避処理において、ページ書き込みエラーが多発したＮＶＭチップ２３を故障チップと判定し、故障チップ情報テーブル１４２における当該ＮＶＭチップ２３の状態情報に“１”をセットする。
【００７３】
なお、故障チップ情報テーブル１４２において、“１”は、当該ＮＶＭチップ２３が故障チップであることを、“０”は、当該ブロックが非故障チップであることを表す。図８（ｂ）の例では、ＮＶＭチップ２３の数を２４とし、ＮＶＭ（＃２）が故障チップであるとしている。
【００７４】
図９および図１０は、平準化管理情報の退避処理中にページ書き込みエラーが生じる場合の退避データの転送手順の例を示した図であり、図９は、その前半部分の転送手順、図１０は、後半部分の転送手順を示している。なお、図９および図１０において、矢線は、退避データの転送方向を示し、矢線の傍の括弧付の数字は、その転送が行われるそれぞれの図の中での順序を表す。
【００７５】
図９の例では、転送順序（１６）に×印が付されているが、この×印は、ＮＶＭ（＃７）が、ＢＭ（＃７）から転送された１ページ分の退避データを所定のページにプログラムした（書き込んだ）とき、ページ書き込みエラーが発生したことを表している。
【００７６】
ページ書き込みエラーの有無は、ＮＶＭチップ２３の当該ページへのプログラム（書き込み）が終了したときに判定され、その判定結果であるページ書き込みエラーの有無情報は、ＮＶＭチップ２３からバッファ記憶制御部２２を介して平準化管理情報退避・回復処理部１４へ通知される。
【００７７】
ところで、図７（ａ）に示した退避処理のタイムチャートから分かるように、転送順序（１６）に係る退避データのプログラムが終了するのは、ＮＶＭ（＃７）へ次の退避データの転送が開始される少し前である（図１０の転送順序（６２）の頃）。従って、平準化管理情報退避・回復処理部１４は、転送順序（６２）の転送が行われている頃に、前回ＮＶＭ（＃７）へ転送した退避データの書き込みエラーの有無を知ることになる。
【００７８】
そこで、平準化管理情報退避・回復処理部１４は、転送順序（６３）の転送を開始するとき、ＮＶＭ（＃７）から通知されたページ書き込みエラーの有無情報に基づき、前回転送した退避データがＮＶＭ（＃７）へ正常に書き込まれたか否かを判定する。そして、ページ書き込みエラーがあった場合、つまり、退避データがＮＶＭ（＃７）へ正常に書き込まれていないと判定された場合には、平準化管理情報退避・回復処理部１４は、前回転送した退避データを、再度、ＢＭ（＃７）を介して、ＮＶＭ（＃７）へ転送する（転送順序（６３），（６４））。すなわち、転送順序（６３）および（６４）の転送では、転送順序（１５）および（１６）での転送がリトライされる。
【００７９】
なお、このリトライに際しては、ＮＶＭ（＃７）における退避先のページアドレスは、１つインクリメントされる。すなわち、本実施形態では、ページ書き込みエラーが生じたページ２３２への退避データの再書き込み（リトライ）はしないものとする。従って、ページ書き込みエラーが生じたＢＭ（＃７）では、リトライ１回ごとに、ＢＭ（＃７）における退避に必要なページ数は１つずつ増加していく。
【００８０】
また、同じＮＶＭチップ２３で所定回数以上のページ書き込みエラーが生じた場合には、そのＮＶＭチップ２３を故障チップと判定し、故障チップ情報テーブル１４２中の不良と判定されたＮＶＭチップ２３の状態情報に“１”をセットする。
【００８１】
次に、平準化管理情報退避・回復処理部１４は、転送順序（６３）および（６４）における転送により、転送順序（１５）および（１６）で失敗した転送のリトライをすると、続く転送順序（６５）および（６６）では、転送順序（６３）および（６４）のときに転送することになっていた退避データの転送を行う（図１０参照）。その後の転送順序（６７）以降の転送は、ページ書き込みエラーが生じない場合の通常の退避処理の転送手順に戻る。
【００８２】
図１１は、故障チップがある場合の退避データの転送手順のうち、後半部分の転送手順の例を示した図である。故障チップがある場合の退避データの転送手順の前半部分は、故障チップがない場合の退避データの転送手順（例えば、図４に示した手順）とは、故障チップへの退避データの転送が行われないことを除けば、同じである。
【００８３】
例えば、図１１に示すようにＮＶＭ（＃２）が故障チップであった場合には、図４における転送手順でいえば、ＮＶＭ（＃２）への退避データの転送に係る転送順序（５）および（６）の退避データの転送は省略される。
【００８４】
すなわち、平準化管理情報退避・回復処理部１４は、前半部分の退避処理では、故障チップがあった場合でも、故障チップへの退避データの転送を省略することだけを除き、図４に示した転送手順と同じ転送手順に従って、ＷＭ１３０に記憶されている平準化管理情報を一通り終りまでＮＶＭチップ２３へ退避する。その結果、故障チップへ退避することになっていた退避データを除き、退避データはすべて故障チップ以外のＮＶＭチップ２３へ退避されることになる。
【００８５】
そこで、平準化管理情報退避・回復処理部１４は、後半部分の退避処理として、故障チップへ退避することになっていたため退避されなかった退避データを、図１１に示す転送手順に従って、故障チップ以外のＮＶＭチップ２３へ分散して退避する。
【００８６】
図１１に示した退避データの転送手順は、次の２点を除き、故障チップが存在しない場合の図４の転送手順と同じである。
（１）ＷＭ１３０からは、故障チップへ退避することになっていた平準化管理情報のみを抽出して転送する（ただし、図４には表されていない）。
（２）故障チップへの退避は行わない。
従って、図１１だけを図４と比較すると、故障チップであるＮＶＭ（＃２）への転送が行われないことを除き、全く同じである。そこで、次に、図１２を用いて、前記（１），（２）の相違を補足説明する。
【００８７】
図１２は、故障チップがある場合の退避データの転送手順において、前半部分の退避処理で退避されなかった平準化管理情報が後半部分の退避処理で各ＮＶＭチップ２３に退避される様子を示した図である。図１２では、ＷＭ１３０は、１ページ（４ｋＢ）分のデータで区分されて示されているが、そのうち、前半部分の退避処理で退避されなかったデータ部分が太線枠で示されている。この太線枠で示されたデータ部分は、故障チップであるＮＶＭ（＃２）へ退避されることになっていた平準化管理情報に相当する。
【００８８】
ＮＶＭ（＃２）へ退避されることになっていた太線枠部分の平準化管理情報は、ＮＶＭ（＃２）以外のＮＶＭチップ２３の予備退避領域（図３参照）に退避される。すなわち、ＷＭ１３０に記憶されていたデータのうち、ＮＶＭ（＃２）のページ（＃０）に退避されることになっていたデータは、ＮＶＭ（＃０）のページ（＃０）に退避され、ＮＶＭ（＃２）のページ（＃１）に退避されることになっていたデータは、ＮＶＭ（＃１）のページ（＃０）に退避され、ＮＶＭ（＃２）のページ（＃２）に退避されることになっていたデータは、ＮＶＭ（＃３）のページ（＃０）に退避され、以下、同様に、ＷＭ１３０からは、ＮＶＭ（＃２）へ退避されることになっていたデータが順に１ページ分ずつ読み出され、ＮＶＭ（＃２）以外のＮＶＭチップ２３へ順次退避される。
【００８９】
なお、図１２では、矢線の始点および終点により、退避元データおよび退避先データを表し、さらに、矢線の始点側に記載されている括弧付番号は、ＷＭ１３０におけるＮＶＭ（＃２）へ退避されることになっていたデータのページアドレスであることを表し、矢線の終点側に記載されている括弧付番号は、退避先のＮＶＭチップ２３のチップ番号であることを表している。
【００９０】
また、図１２では、退避先のＮＶＭチップ２３の退避領域の先頭のページアドレスは、（＃５１２）となっているが、図９および図１０で説明したページ書き込みエラーによる退避のリトライが行われたときには、その先頭のページアドレスは、リトライ回数に応じて、５１２より後のページとなる。
【００９１】
図１３は、不良ブロックが存在するＮＶＭチップ２３におけるページアドレスの付し方を説明する図である。図２を用いて説明したように、ＮＶＭチップ２３は複数のブロック２３１によって構成され、それぞれのブロック２３１は、複数のページ２３２によって構成される。ページ２３２は、ＮＶＭチップ２３におけるデータ書き込みおよび読み出しの単位であるから、各ページにはアドレスが付される。
【００９２】
ＮＶＭチップ２３におけるページアドレスは、そのＮＶＭチップ２３に不良ブロックがない場合には、図１３（ａ）に示すように、そのＮＶＭチップ２３に含まれるすべてのブロック２３１を通して、その中に含まれるページ２３２に対して通し番号が付され、その通し番号をページアドレスとする。一方、不良ブロックがある場合には、図１３（ｂ）に示すように、不良ブロックを除外したすべてのブロック２３１を通して、その中に含まれるページ２３２に対して通し番号が付され、その通し番号をページアドレスとする。
【００９３】
図１３（ｂ）の例では、×印が付されたブロック（＃１）を不良ブロックとして、ブロック（＃１）を除くブロック２３１に含まれるページ２３２に対して通し番号が付され、その通し番号がページアドレスとされている。従って、不良のブロック（＃１）に含まれるページ２３２に対しては、ページアドレスは付されない。
【００９４】
不良ブロックが存在するＮＶＭチップ２３に対して、このようなページアドレスの付し方をした場合には、その分だけ、ＮＶＭチップ２３における実質的な予備退避領域は、減少するが、図９〜図１２で説明した退避処理中にページ書き込みエラーが生じる場合の退避データの転送手順や、故障チップがある場合の退避データの転送手順は、不良ブロックの有無の考慮せずにそのまま適用することができる。
【００９５】
なお、不良ブロックが存在する場合のＮＶＭチップ２３におけるページアドレスの管理は、平準化管理情報退避・回復処理部１４が不良ブロック情報テーブル１４１に基づき行う。
【００９６】
図１４は、平準化管理情報退避・回復処理部１４およびバッファ記憶制御部２２が行う平準化管理情報の退避処理の処理フローの例を示した図である。
【００９７】
図１４に示すように、平準化管理情報退避・回復処理部１４は、まず、退避データ先頭アドレスを表すＷＭＡを初期化（ゼロクリア）する（ステップＳ１１）。ここで、ＷＭＡは、退避対象の１ページ分のデータがＷＭ１３０に格納されているときの先頭データのアドレスである。次に、平準化管理情報退避・回復処理部１４は、ＣＡを、ＮＶＭチップ２３を識別するチップ番号としたとき、すべてのＣＡ（ＣＡ＝０，…，２３）に対し、ＰＡ（ＣＡ）＝０とする（ステップＳ１２）。ここで、ＰＡ（ＣＡ）は、ＣＡで指定されるＮＶＭチップ２３におけるページアドレスを表す。
【００９８】
次に、平準化管理情報退避・回復処理部１４は、ＣＡ＝０，ＣＡＥ＝“Ｎｕｌｌ”とする（ステップＳ１３）。すなわち、退避データの転送先となるＮＶＭチップ２３のチップ番号ＣＡを初期化し、さらに、ページ書き込みエラーが生じたため、退避処理の処理遅れが生じたＮＶＭチップ２３のチップ番号であるＣＡＥを初期化する。なお、“Ｎｕｌｌ”は、処理遅れのＮＶＭチップ２３がないことを表している。
【００９９】
次に、平準化管理情報退避・回復処理部１４は、ＢＭ（ＣＡ）が退避データの転送を受付可能であるか否かを判定する（ステップＳ１４）。ここで、ＢＭ（ＣＡ）は、ＣＡで指定されるＮＶＭチップ２３が接続されているＢＭ２２０であることを意味する。ここで、ＢＭ（ＣＡ）が、前回の退避データをＮＶＭチップ２３に転送中であれば、新たな退避データの転送を受け付けることができないので、その転送が終わるまで待つ（ステップＳ１４でＮｏ）。
【０１００】
一方、ＢＭ（ＣＡ）が転送受付可能な場合には（ステップＳ１４でＹｅｓ）、平準化管理情報退避・回復処理部１４は、さらに、当該ＣＡで指定されるＮＶＭチップ２３への前回退避時にページ書き込みエラーがあったか否かを判定する（ステップＳ１５）。この判定で、前回退避時にページ書き込みエラーがなかった場合には（ステップＳ１５でＮｏ）、ＷＭ１３０から先頭データのアドレスがＷＭＡで指定される１ページ分の退避データＷＭ（ＷＭＡ）を読み出し、その読み出した１ページ分の退避データＷＭ（ＷＭＡ）をＢＭ（ＣＡ）へ転送する（ステップＳ１６）。
【０１０１】
その１ページ分の退避データの転送を受けたＢＭ（ＣＡ）を有するバッファ記憶制御部２２は、その退避データをＢＭ（ＣＡ）からＮＶＭ（ＣＡ，ＰＡ（ＣＡ））へ転送する（ステップＳ１７）。なお、ＮＶＭ（ＣＡ，ＰＡ（ＣＡ））は、チップ番号ＣＡで指定されるＮＶＭチップ２３のページアドレスＰＡ（ＣＡ）の記憶領域であることを表す。退避テータの転送を受けたＮＶＭチップ２３であるＮＶＭ（ＣＡ）は、その退避データをＮＶＭ（ＣＡ，ＰＡ（ＣＡ））の領域に書き込む（プログラムする）。
【０１０２】
次に、平準化管理情報退避・回復処理部１４は、ＷＭ１３０のアドレスＷＭＡを４０９８（４ｋＢ分）インクリメントするとともに（ステップＳ１８）、ＮＶＭチップ２３のチップ番号ＣＡを１つインクリメントする（ステップＳ１９）。続いて、平準化管理情報退避・回復処理部１４は、そのチップ番号ＣＡが８，１６，２４のいずれかであるか否かを判定し（ステップＳ２０）、チップ番号ＣＡが、８，１６，２４のいずれでもなかった場合には（ステップＳ２０でＮｏ）、さらに、チップ番号ＣＡが２４であるか否かを判定する（ステップＳ２１）。
【０１０３】
ステップＳ２１の判定で、ＮＶＭチップ２３のチップ番号ＣＡが２４でなかった場合には（ステップＳ２１でＮｏ）、平準化管理情報退避・回復処理部１４は、処理の実行をステップＳ１４へ戻す。また、チップ番号ＣＡが２４であった場合には（ステップＳ２１でＹｅｓ）、すべてのＣＡ（ＣＡ＝０，…，２３）に対して、ＰＡ（ＣＡ）を１つインクリメントし（ステップＳ２２）、さらに、ＷＭＡがその上限値ＷＭＡｍａｘを越えたか否かを判定する（ステップＳ２３）。なお、本実施形態の場合、図５から分かるように、ＷＭＡｍａｘは、５１２×２４×４，０９６−１＝５０，３３１，６４７である。
【０１０４】
ステップＳ２３の判定で、ＷＭＡが上限値ＷＭＡｍａｘを越えていない場合には（ステップＳ２３でＮｏ）、平準化管理情報退避・回復処理部１４は、処理の実行をステップＳ１３に戻す。また、ＷＭＡが上限値ＷＭＡｍａｘを越えた場合には（ステップＳ２３でＹｅｓ）、退避すべきデータがなくなったことを意味するので、図１４の退避処理を終了する。以上の処理により、ページ書き込みエラーが生じなかった場合についての退避処理が行われたことになる。
【０１０５】
一方、ステップＳ１５の判定で、前回退避時にページ書き込みエラーがあった場合には（ステップＳ１５でＹｅｓ）、平準化管理情報退避・回復処理部１４は、以下の手順に従って、前回の退避データと同じデータを、再度、当該ＣＡで指定されるＮＶＭチップ２３への退避を行う。
【０１０６】
すなわち、平準化管理情報退避・回復処理部１４は、ＷＭＡを前回の退避データの先頭アドレスに戻すために、ＷＭＡ＝ＷＭＡ−２４×４０９６を計算し（ステップＳ３１）、ＷＭ１３０からＷＭＡで指定される１ページ分の退避データＷＭ（ＷＭＡ）を読み出し、その読み出した１ページ分の退避データＷＭ（ＷＭＡ）をＢＭ（ＣＡ）へ転送する（ステップＳ３２）。そして、その１ページ分の退避データの転送を受けたＢＭ（ＣＡ）を有するバッファ記憶制御部２２は、その退避データをＢＭ（ＣＡ）からＮＶＭ（ＣＡ，ＰＡ（ＣＡ））へ転送する（ステップＳ３３）。その後、退避テータの転送を受けたＮＶＭチップ２３であるＮＶＭ（ＣＡ）は、その退避データをＮＶＭ（ＣＡ，ＰＡ（ＣＡ））の領域に書き込む（プログラムする）。
【０１０７】
次に、平準化管理情報退避・回復処理部１４は、本来のＷＭＡに戻すために、ＷＭＡ＝ＷＭＡ＋２４×４０９６を計算し（ステップＳ３４）、当該ＣＡで指定されるＮＶＭチップ２３におけるページアドレスＰＡ（ＣＡ）を１つインクリメントし（ステップＳ３５）、そのときのＣＡＥ＝ＣＡ，ＷＭＡＥ＝ＷＭＡとして（ステップＳ３６）、そのときのＣＡおよびＷＭＡをＣＡＥおよびＷＭＡＥに記憶しておく。
【０１０８】
以上、ステップＳ３１〜ステップＳ３６の処理は、図１０における転送順序（６３）および（６４）の転送処理に相当する。従って、ステップＳ３１〜ステップＳ３６の処理により、前回の退避処理でページ書き込みエラーが生じた場合について、前回退避することになっていたＷＭ１３０のデータの退避がリトライされたことになる。そこで、平準化管理情報退避・回復処理部１４は、ステップＳ３６の次には、処理の実行をステップＳ１８へ移行させる。
【０１０９】
また、ステップＳ２０の判定で、チップ番号ＣＡが、８，１６，２４のいずれかであった場合には（ステップＳ２０でＹｅｓ）、平準化管理情報退避・回復処理部１４は、さらに、ＣＡＥが“Ｎｕｌｌ”であるか否かを判定し（ステップＳ４１）、ＣＡＥが“Ｎｕｌｌ”であった場合には（ステップＳ４１でＹｅｓ）、チップ番号ＣＡが０〜７，８〜１５または１６〜２３のいずれのときにも、ページ書き込みエラーのリトライ処理がされていないことを意味するので、何もせずに、処理の実行を元のステップＳ２０の次のステップＳ２１へ戻す。
【０１１０】
一方、ステップＳ４１の判定で、ＣＡＥが“Ｎｕｌｌ”でなかった場合には（ステップＳ４１でＮｏ）、チップ番号ＣＡが０〜７，８〜１５または１６〜２３のいずれかのときに、ページ書き込みエラーのリトライ処理がされたことを意味するので、平準化管理情報退避・回復処理部１４は、ページ書き込みエラーのリトライのために行われなかった退避データの退避処理を行う。その場合、退避の対象となるＮＶＭチップ２３のチップ番号は、ＣＡＥに記憶され、ＷＭ１３０の退避データ先頭アドレスは、ＷＭＡＥに記憶されている。
【０１１１】
そこで、平準化管理情報退避・回復処理部１４は、ＷＭ１３０からＷＭＡＥで指定される１ページ分の退避データＷＭ（ＷＭＡ）を読み出し、その読み出した１ページ分の退避データＷＭ（ＷＭＡＥ）をＢＭ（ＣＡＥ）へ転送する（ステップＳ４２）。そして、その１ページ分の退避データの転送を受けたＢＭ（ＣＡＥ）を有するバッファ記憶制御部２２は、その退避データをＢＭ（ＣＡＥ）からＮＶＭ（ＣＡＥ，ＰＡ（ＣＡＥ））へ転送する（ステップＳ４３）。その後、退避テータの転送を受けたＮＶＭチップ２３であるＮＶＭ（ＣＡＥ）は、その退避データをＮＶＭ（ＣＡＥ，ＰＡ（ＣＡＥ））の領域に書き込む（プログラムする）。
【０１１２】
これらステップＳ４２、ステップＳ４３の処理は、図１０における転送順序（６５），（６６）の転送処理に相当する。平準化管理情報退避・回復処理部１４は、続いて、ＣＡＥを“Ｎｕｌｌ”に戻し（ステップＳ４４）、その処理の実行をステップＳ２１へ移行させる。
【０１１３】
以上で平準化管理情報の退避処理の処理フローの説明を終える。なお、以上に示した処理フローでは、図９および図１０で説明したページ書き込みエラー時のリトライ処理については考慮されているが、図１１および図１２で説明したチップ故障がある場合については考慮されていない。チップ故障があることを考慮するためには、この処理フローを一部修正する必要があるが、ここでは、その説明を省略する。
【０１１４】
続いて、故障チップ、不良ブロックまたはページ書き込みエラーがあり得ることを考慮してＮＶＭチップ２３に退避した平準化管理情報を、ＮＶＭチップ２３からＷＭ１３０へ回復する処理における回復データの転送手順について説明する。その回復データの転送手順は、以下に説明する点を除き、図６に示した回復データの転送手順と同じである。
【０１１５】
図６に示した回復データの転送手順の場合には、故障チップ、不良ブロックまたはページ書き込みエラーのいずれもあり得ないとしているので、退避された平準化管理情報は、ＮＶＭチップ２３のページ（＃０）からページ（＃５１１）までの基本退避領域（図３参照）に記憶される。一方、故障チップ、不良ブロックまたはページ書き込みエラーがある場合には、平準化管理情報は、基本退避領域だけでなく、ページ（＃５１２）以降の予備退避領域に広がって記憶される。
【０１１６】
平準化管理情報退避・回復処理部１４は、平準化管理情報の回復処理を、電源オン・オフ検知部１５によって電源供給の開始が検知されたときに開始するため、その回復処理の開始時点では、予備退避領域のうち、どのページアドレスまで平準化管理情報が退避されているかを知ることができない。そこで、本実施形態では、その退避データの最終ページアドレスなどからなる管理情報をＮＶＭチップ２３とは別体の不揮発性メモリに記憶しておくことをせずに、平準化管理情報の回復処理においては、基本退避領域の最初のページ（＃０）から予備退避領域の最後のページ（＃８９５）までのすべてのデータを読み出すようにした。
【０１１７】
すなわち、平準化管理情報退避・回復処理部１４がＮＶＭチップ２３の退避データ記憶領域からすべてのデータを読み出すとは、図６の転送手順に従って、ＮＶＭチップ２３から回復データをＷＭ１３０に転送することに他ならない。ただし、ＮＶＭチップ２３からの読み出しの最終ページアドレスは、（＃５１１）ではなく、（＃８９５）である。
【０１１８】
この場合、不良ブロックのデータや、消去されたままで、書き込みが行われなかったページ２３２のデータなど、無意味なデータが多数読み出されることになる。しかしながら、有意な平準化管理情報の退避データには、セグメント２３４ごとの退避データに、ＣＲＣ符号やリード・ソロモン符号などの検査符号２３５が付されている（図２（ｃ）参照）ので、無意味なデータは、その検査符号２３５を用いた誤り検査によって検出することができので、廃棄することができる。
【０１１９】
また、退避処理の途中から故障チップになったようなＮＶＭチップ２３には、その途中のページアドレスまでには、誤りのない平準化管理情報の退避データが書き込まれている可能性がある。このようなＮＶＭチップ２３については、その後、そのＮＶＭチップ２３に退避される予定であった（一部は退避されているが）退避データは、再度、図１１に示した手順によって、故障チップでない他のＮＶＭチップ２３に分散して退避されている。従って、このような場合には、同じデータが重複してＷＭ１３０に回復されることになるが、重複回復は問題がない。同様に、退避処理において、ページ書き込みエラーが生じていた場合にも、場合によっては、重複回復がされるが、これも問題がない。
【０１２０】
また、故障チップやページ書き込みエラーが生じたページ２３２では、誤って書き込まれたデータが、たまたま、正しく読み出され、その誤ったデータがＷＭ１３０へ回復されることがないとはいえない。しかしながら、図９〜図１１で説明した退避処理の転送手順によれば、故障チップの退避データや書き込みエラーが生じたページ２３２の退避データについては、その後で、後方のページ２３２に必ず再退避される。従って、本実施形態の回復処理では、その再退避されたデータが後で読み出され、ＷＭ１３０に回復されることになる。再退避されたデータは、誤りなく退避されたデータであるので、その結果、ＷＭ１３０には誤りのないデータが回復されることなる。
【０１２１】
さらに、本実施形態では、ＷＭ１３０へ退避された平準化管理情報がすべて回復されると、平準化管理情報退避・回復処理部１４は、チェックサム（図３参照）が正しいか否かを判定する。チェックサムが正しければ、平準化管理情報の回復処理は正常に行われたことになる。チェックサムが正しくない場合は、平準化管理情報の回復が失敗したことを意味するので、別途、平準化管理情報回復失敗時の処理を実行する。
【０１２２】
なお、前記したように、本実施形態では、ＷＭ１３０に回復データが書き込まれるときのアドレスとしては、ページ２３２のヘッダ２３３に含まれる退避データ先頭アドレスが用いられる。従って、この退避データ先頭アドレスが誤って退避されたり回復されたりすると、ＷＭ１３０に回復された平準化管理情報は、信頼できないものとなる。そこで、退避データ先頭アドレスは、例えば、二重化したり、複数ビット訂正可能な誤り符号を付したりして、高信頼化しておくとよい。
【０１２３】
以上、本実施形態によれば、平準化管理情報記憶部１３のＷＭ１３０は、レーン接続バス３０を介して複数のレーン２１それぞれに含まれるバッファ記憶制御部２２のＢＭ２２０に接続され、また、それぞれのレーン２１には、ＢＭ２２０とＮＶＭチップ２３とを接続するチップ接続バス２４が設けられている。従って、平準化管理情報の退避処理においては、それぞれのレーンにおけるＢＭ２２０からＮＶＭチップ２３への退避データの転送を独立に並行して行うことができるので、退避時間の短縮を図ることができる。
【０１２４】
また、ＮＶＭチップ２３へ退避する１ページ分の平準化管理情報を含む退避データの中に、その１ページ分の平準化管理情報がＷＭ１３０に記憶されていたときの先頭アドレスが含まれているので、その結果として、回復処理における回復データの転送手順が簡単化されている。
【符号の説明】
【０１２５】
１      ＳＳＤ装置
２      ホスト装置
３      ホストバス
１０    不揮発データ記憶制御部
１１    データ書き込み・読み出し制御部
１２    平準化管理部
１３    平準化管理情報記憶部
１４    平準化管理情報退避・回復処理部
１５    電源オン・オフ検知部
２０    不揮発データ記憶部
２１    レーン
２２    バッファ記憶制御部
２３    ＮＶＭチップ（不揮発性メモリチップ）
２４    チップ接続バス
３０    レーン接続バス
１３０  ＷＭ（ウェアレベリングメモリ）
１４１  不良ブロック情報テーブル（不良ブロック情報記憶部）
１４２  故障チップ情報テーブル（故障チップ情報記憶部）
２２０  ＢＭ（バッファメモリ）
２３１  ブロック
２３２  ページ
２３３  ヘッダ
２３４  セグメント
２３５  検査符号
【図１】
0005579431.tif 000002
【図２】
0005579431.tif 000003
【図３】
0005579431.tif 000004
【図４】
0005579431.tif 000005
【図５】
0005579431.tif 000006
【図６】
0005579431.tif 000007
【図７】
0005579431.tif 000008
【図８】
0005579431.tif 000009
【図９】
0005579431.tif 000010
【図１０】
0005579431.tif 000011
【図１１】
0005579431.tif 000012
【図１２】
0005579431.tif 000013
【図１３】
0005579431.tif 000014
【図１４】
0005579431.tif 000015