(57)【要約】【課題】容量の小さなバックアップ電源を使用して電源断時の不揮発化処理を可能とする。【解決手段】電源断が発生する前の通常時に、少なくとも１つの消去済みフリーブロックが予備のブロックとして常に確保されているように不揮発性メモリに消去済みフリーブロックを作成し、電源断が発生した場合、予備のブロックを使用して不揮発化が完了していないデータおよび該データに関する論物変換情報を不揮発性メモリに書き込む不揮発化処理を実行する。【選択図】図２
2013061799.tif 000002
【特許請求の範囲】
【請求項１】
揮発性の第１のメモリと、
データ消去の単位であるブロックが複数個形成された不揮発性の第２のメモリと、
前記第２のメモリに保存される管理情報であって、ホスト装置で指定される論理アドレスと前記第２のメモリでの物理的なデータの記憶位置とを対応付ける論物変換情報を含む管理情報を前記第１のメモリに転送し、該転送された管理情報を用いて、前記ホスト装置からのデータを前記第１のメモリを介して前記第２のメモリに書き込むとともに、前記第２のメモリから読み出したデータを前記第１のメモリを経由して前記ホスト装置に送信する読み書き制御部を有するコントローラと、
バックアップ電源を有し、外部から供給された電力を記憶装置内の各部に供給する電源回路と、
を備え、
前記電源回路は、前記外部からの電力の供給が断たれたことを検出すると、前記バックアップ電源からの電力を記憶装置内の各部に供給し、
前記コントローラは、
前記外部からの電力の供給が断たれる前の通常時に、前記第２のメモリに少なくとも１つの消去済みフリーブロックが予備のブロックとして常に確保されているように消去済みフリーブロックを作成する消去済みブロック管理部と、
前記外部からの電力の供給が断たれた場合、前記予備のブロックを使用して不揮発化が完了していないデータおよび該データに関する前記論物変換情報を書き込む不揮発化処理を実行する電源断時制御部と、
を備える記憶装置。
【請求項２】
前記消去済みブロック管理部は、電源投入後、予め少なくとも一つの消去済みフリーブロックを予備ブロックとして確保しておき、前記第２のメモリに書き込みを行う際には、前記予備ブロックとは異なる消去済みフリーブロックを作成した後、前記予備ブロックに対し書き込みを行い、今回作成した消去済みフリーブロックを次の書き込みを行う際に使用する予備ブロックとする請求項１に記載の記憶装置。
【請求項３】
揮発性の第１のメモリと、
データ消去の単位であるブロックが複数個形成された不揮発性の第２のメモリと、
前記第２のメモリに保存される管理情報であって、ホスト装置で指定される論理アドレスと前記第２のメモリでの物理的なデータの記憶位置とを対応付ける論物変換情報を含む管理情報を前記第１のメモリに転送し、該転送された管理情報を用いて、前記ホスト装置からのデータを前記第１のメモリを介して前記第２のメモリに書き込むとともに、前記第２のメモリから読み出したデータを前記第１のメモリを経由して前記ホスト装置に送信する読み書き制御部を有するコントローラと、
バックアップ電源を有し、外部から供給された電力を記憶装置内の各部に供給する電源回路と、
を備え、
前記電源回路は、前記外部からの電力の供給が断たれたことを検出すると、前記バックアップ電源からの電力を記憶装置内の各部に供給し、
前記コントローラは、
前記外部からの電力の供給が断たれた場合、前記ブロックの消去、前記第２のメモリからの読み出しを中止し、不揮発化が完了していないデータおよび該データに関する前記論物変換情報を、不正電源断通知前に予め用意している前記第２のメモリの消去済みフリーブロックに書き込む不揮発化処理を行う電源断時制御部
を備える記憶装置。
【請求項４】
前記第２のメモリに対して書き込むデータおよび前記第２のメモリから読み出すデータに対する誤り訂正処理を実行する誤り訂正部をさらに備え、
前記電源断時処理部は、
前記外部からの電力の供給が断たれた場合、前記誤り訂正部での誤り訂正処理を中止させる請求項３に記載の記憶装置。
【請求項５】
前記コントローラは、
前記第２のメモリに記憶された有効データを複数選択して新たなブロックに書き直すデータ整理を行う整理部を更に備え、
前記電源断処理部は、
前記外部からの電力の供給が断たれた場合、前記整理部でのデータ整理を中止させる請求項３または請求項４に記載の記憶装置。
【請求項６】
前記電源断処理部は、前記外部からの電力の供給が断たれた場合、前記第２のメモリからデータを読み出し、読み出したデータに変更を加えて、再び前記第２のメモリに書き戻すリードモディファイライト処理を行っている場合は、このリードモディファイライト処理を中止し、このリードモディファイライト処理で前記変更すべきデータおよび該変更すべきデータに関する論理アドレスを含む管理情報を前記第２のメモリの消去済みフリーブロックに退避する不揮発化処理を行う請求項３乃至請求項５の何れか一つに記載の記憶装置。
【請求項７】
書き込み先ブロックとして選択するフリーブロックの順番を管理するフリーブロック管理部を更に備え、
前記電源断処理部は、前記外部からの電力の供給が断たれた後の電源投入時、前記フリーブロック管理部で管理されている順番にしたがってフリーブロックを選択し、選択したフリーブロックを消去した消去済みフリーブロックを、前記不揮発化した情報に関連する情報の書き込み先ブロックとして使用する請求項３乃至請求項６の何れか一つに記載の記憶装置。
【請求項８】
揮発性の第１のメモリと、データ消去の単位であるブロックが複数個形成された不揮発性の第２のメモリと、バックアップ電源を有し、外部から供給された電力を記憶装置内の各部に供給するとともに、前記外部からの電力の供給が断たれたことを検出すると、前記バックアップ電源からの電力を記憶装置内の各部に供給する電源回路とを備え、前記第２のメモリに保存される管理情報であって、ホスト装置で指定される論理アドレスと前記第２のメモリでの物理的なデータの記憶位置とを対応付ける論物変換情報を含む管理情報を前記第１のメモリに転送し、該転送された管理情報を用いて、前記ホスト装置からのデータを前記第１のメモリを介して前記第２のメモリに書き込むとともに、前記第２のメモリから読み出したデータを前記第１のメモリを経由して前記ホスト装置に送信する記憶装置の制御方法であって、
前記外部からの電力の供給が断たれる前の通常時に、前記第２のメモリに少なくとも１つの消去済みフリーブロックが予備のブロックとして常に確保されているように消去済みフリーブロックを作成し、
前記外部からの電力の供給が断たれた場合、前記予備のブロックを使用して不揮発化が完了していないデータおよび該データに関する前記論物変換情報を書き込む不揮発化処理を実行する
記憶装置の制御方法。
【請求項９】
揮発性の第１のメモリと、データ消去の単位であるブロックが複数個形成された不揮発性の第２のメモリと、バックアップ電源を有し、外部から供給された電力を記憶装置内の各部に供給するとともに、前記外部からの電力の供給が断たれたことを検出すると、前記バックアップ電源からの電力を記憶装置内の各部に供給する電源回路とを備える記憶装置を制御するコントローラであって、
前記第２のメモリに保存される管理情報であって、ホスト装置で指定される論理アドレスと前記第２のメモリでの物理的なデータの記憶位置とを対応付ける論物変換情報を含む管理情報を前記第１のメモリに転送し、該転送された管理情報を用いて、前記ホスト装置からのデータを前記第１のメモリを介して前記第２のメモリに書き込むとともに、前記第２のメモリから読み出したデータを前記第１のメモリを経由して前記ホスト装置に送信する読み書き制御部と、
前記外部からの電力の供給が断たれる前の通常時に、前記第２のメモリに少なくとも１つの消去済みフリーブロックが予備のブロックとして常に確保されているように消去済みフリーブロックを作成する消去済みブロック管理部と、
前記外部からの電力の供給が断たれた場合、前記予備のブロックを使用して不揮発化が完了していないデータおよび該データに関する前記論物変換情報を書き込む不揮発化処理を実行する電源断時制御部と、
を備えるコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを備えた記憶装置、記憶装置の制御方法およびコントローラに関する。
【背景技術】
【０００２】
ＳＳＤ（Solid  State  Drive）は、不揮発性半導体メモリとしての複数のフラッシュメモリチップ、ホスト装置からの要求に応じて各フラッシュメモリチップのリード/ライト制御を行うコントローラ、各フラッシュメモリチップとホスト装置との間でデータ転送を行うためのバッファメモリ、電源回路、ホスト装置に対する接続インタフェースなどを備えている。
【０００３】
ＳＳＤを使用する際に、外部電源からの電力供給を予告なく断たれることがある。電力を断たれた時点で、不揮発性半導体メモリで不揮発化していないデータは、不揮発化する必要がある。このため、ＳＳＤでは、電池やキャパシタなどのバックアップ電源を搭載し、不正な電源断が発生した場合、このバックアップ電源を用いて、所要データの不揮発化処理を行っている。
【０００４】
このキャパシタ電源としては、１０ミリ秒〜０．１秒程度の極めて短い時間の電源供給が可能なものが採用されることが多い。このため、不正な電源断時の不揮発化処理は、出来るだけ短い時間で処理すべきである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許公報７６３４６８８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、不正な電源断時の不揮発化処理の際に、ブロックの消去処理を行った後に、この消去済みブロックに所要データを書き込む不揮発化処理を行った場合、消去処理に時間がかかり、所要データを書き込むための時間が不足する可能性がある。
【０００７】
また、不正な電源断の発生前に、フラッシュメモリからのデータ読み出しおよび読み出したデータの誤り訂正処理を行っている場合、その後の不正な電源断時の不揮発化処理の際に、データの読み出しおよび誤り訂正処理を続行する場合は、バックアップ電源が切れる前に、所要データの不揮発化処理を終了しない可能性がある。
【０００８】
本発明は、上記に鑑みてなされたものであって、容量の小さなバックアップ電源を使用して電源断時の不揮発化処理を可能とする記憶装置、記憶装置の制御方法およびコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態の記憶装置は、揮発性の第１のメモリと、データ消去の単位であるブロックが複数個形成された不揮発性の第２のメモリとを備える。記憶装置は、第２のメモリに保存される管理情報であって、ホスト装置で指定される論理アドレスと第２のメモリでの物理的なデータの記憶位置とを対応付ける論物変換情報を含む管理情報を第１のメモリに転送し、該転送された管理情報を用いて、ホスト装置からのデータを前記第１のメモリを介して前記第２のメモリに書き込むとともに、前記第２のメモリから読み出したデータを前記第１のメモリを経由してホスト装置に送信する読み書き制御部を有するコントローラと、バックアップ電源を有し、外部から供給された電力を記憶装置内の各部に供給する電源回路とをさらに備える。前記電源回路は、前記外部からの電力の供給が断たれたことを検出すると、前記バックアップ電源からの電力を記憶装置内の各部に供給する。前記コントローラは、前記外部からの電力の供給が断たれる前の通常時に、第２のメモリに少なくとも１つの消去済みフリーブロックが予備のブロックとして常に確保されているように消去済みフリーブロックを作成する消去済みブロック管理部と、前記外部からの電力の供給が断たれた場合、前記予備のブロックを使用して不揮発化が完了していないデータおよび該データに関する前記論物変換情報を書き込む不揮発化処理を実行する電源断時制御部とを備える。
【図面の簡単な説明】
【００１０】
【図１】図１は、ＳＳＤの機能構成例を示すブロック図である。
【図２】図２は、ＳＳＤの他の視点からの機能構成例を示すブロック図である。
【図３】図３は、ブロックの状態遷移を示す概念図である。
【図４】図４は、消去済みフリーブロックを確保するための手順を示すフローチャートである。
【図５】図５は、不正電源断処理の手順を示すフローチャートである。
【図６】図６は、不正電源断処理後の電源投入時処理の手順を示すフローチャートである。
【図７】図７は、不正電源断処理時と、不正電源断処理後の電源投入時処理時のリードモディファイライト処理を概念的に示す図である。
【図８】図８は、不正電源断処理後の電源投入時処理時のリードモディファイライト処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明の実施の形態にかかる記憶装置、記憶装置の制御方法およびコントローラを詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
【００１２】
先ず、本明細書で用いる用語について定義しておく。
・ページ：ＮＡＮＤ型フラッシュメモリ内部において一括して書き込み／読み出しが可能な単位のこと。
・ブロック：ＮＡＮＤ型フラッシュメモリ内部において設定される消去単位であり、ブロックは、複数のページから構成される。
・セクタ：ホストからの最小アクセス単位のこと。セクタサイズは、例えば５１２Ｂ。
・フリーブロック（ＦＢ）：内部に有効データを含まない、用途未割り当てのブロックのこと。
・アクティブブロック（ＡＢ）：内部に有効データを含むブロックのこと。
・ＮＡＮＤの整理：有効な最新のデータを集めて、違うブロックに書き直す処理のこと。
【００１３】
図１は、ＳＳＤ１００の実施形態の構成例を示す機能ブロック図である。ＳＳＤ１００は、ＳＡＳ（Serial Attached SCSI）インタフェースあるいはＳＡＴＡ（Serial Advanced Technology Attachment）インタフェースなどのホストインタフェース５を介してパーソナルコンピュータなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。ホスト１としては、パーソナルコンピュータのＣＰＵ、スチルカメラ、ビデオカメラなどの撮像装置のＣＰＵなどがあげられる。ＳＡＳコマンドあるいはＳＡＴＡコマンドなどを総称してホストインタフェースコマンド（ホストＩＦコマンド）と呼称する。
【００１４】
ＳＳＤ１００は、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤと略す）１０と、ホストＩＦコマンドを送受信処理し、ホストインタフェース５を介してホスト１との間でデータを送受信するフロントエンド部４０と、ホストＩＦコマンドをＮＡＮＤ１０に対するコマンドに変換して各種処理を実行するバックエンド部３０と、ＮＡＮＤ１０の駆動制御を行うＮＡＮＤコントローラ２０と、ＮＡＮＤ１０に書き込むデータおよびＮＡＮＤから読み出したデータに対する誤り訂正符号のエンコードおよびデコードを行う誤り訂正回路２５と、ＳＳＤ１００内の各回路に電源を供給する電源回路５０と、バックアップ電源としての充電可能な電池５５を備える。
【００１５】
ホスト１はＳＳＤ１００に対し、ホストＩＦコマンドとしてのリード要求またはライト要求を発行する際には、論理アドレスとしてのＬＢＡ（Logical  Block  Addressing）を含むコマンドを発行する。ＬＢＡは、セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。ＳＳＤ１００は、ホスト１からＬＢＡを指定したユーザデータのリード要求およびライト要求などを受け付ける。ＳＳＤ１００は、リード要求の場合、ＮＡＮＤ１０に保存してあるユーザデータをリードバッファ３５を介してホストに送信し、ライト要求の場合は、ホスト１から受信したユーザデータをライトバッファ３４を介してＮＡＮＤ１０に保存する。
【００１６】
ＮＡＮＤ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位であるブロックを複数配列して構成される。また、ＮＡＮＤ１０では、ページごとにデータの書き込み及びデータの読み出しが行われる。ブロックは、複数のページによって構成されている。１ページは、複数のセクタデータで構成されている。
【００１７】
この実施形態のＳＳＤ１００では、ＮＡＮＤ１０のユーザデータを管理する単位としてサイズの小さな１つの管理単位を採用し、１つの管理単位でＮＡＮＤ１０全体を管理する管理方式を採用している。小さな管理単位としては、セクタ以上のサイズで、ブロックより小さな管理単位であれば任意の管理単位を採用可能であるが、この実施の形態では、管理単位をページと同サイズとする。各ページ内においては、セクタデータがＬＢＡ順にかつＬＢＡに対応する位置に記憶されている。ブロック内では、ページ毎にデータが追記されるが、ページ間はＬＢＡ順に並んでいるとは限らない。
【００１８】
フロントエンド部４０は、ＣＰＵ４１およびコマンドキュー４３を有し、主にホストＩＦコマンドを処理する機能を有する。フロントエンド部４０は、その機能をＣＰＵ４１上で実行するソフトウェア（ファームウエア）によって実現する。コマンドキュー４３は複数のコマンドを蓄積可能なキュー構造を有し、ホスト１からホストＩＦコマンドを受け取り、コマンドの種類がＬＢＡを指定したユーザデータのリード要求またはライト要求であれば、コマンドをバックエンド部３０に転送する。また、フロントエンド部４０のＣＰＵ４１は、バックエンド部３０のＣＰＵ３１と協動して、ライトバッファ３４−ホスト１間およびリードバッファ３５−ホスト１間のデータ転送処理を行う。
【００１９】
バックエンド部３０は、ＣＰＵ３１、ＤＲＡＭ３２、コマンドキュー３３、ライトバッファ３４、リードバッファ３５を有する。バックエンド部３０は、ホストＩＦコマンドをＮＡＮＤ１０に対するコマンドに変換して各種処理を実行するものであり、その機能をＣＰＵ３１上で実行するソフトウェア（ファームウエア）によって実現する。バックエンド部３０で行われる処理としては、ホスト１からのライト要求、リード要求等の各種コマンドへの応答と、ホスト１から与えられる論理アドレスとＮＡＮＤ１０の物理アドレス（記憶位置）との対応関係を示す論物変換テーブルなどの管理情報の更新、不揮発化制御と、ＮＡＮＤ１０の整理などがある。ＤＲＡＭ３２には、論理アドレスとしてのＬＢＡと、ＮＡＮＤ１０上でのデータの記憶位置（ブロックアドレス＋ブロック内ページアドレス）との対応を示す論物変換テーブル３７を含む管理テーブル（マスターテーブル）３６が記憶されている。ＣＰＵ３１によって、管理テーブル３６の登録、更新が行われる。この管理テーブル３６は、ＮＡＮＤ１０に保存されており、起動時に、ＮＡＮＤ１０に保存されていた管理テーブルがＤＲＡＭ３２上に展開されたものである。ＤＲＡＭ３２上の管理テーブル３６は、定期的にあるいは電源断時に、ＮＡＮＤ１０に退避保存される。
【００２０】
コマンドキュー３３は、複数のコマンドを蓄積可能なキュー構造を有し、フロントエンド部４０から受け取ったコマンドに関して、ＤＲＡＭ３２上の論物変換テーブル３７を用いてＬＢＡをＮＡＮＤ１０上の記憶位置である物理アドレスに変換し、変換した物理アドレスを含むリードコマンドまたはライトコマンドを順次ＮＡＮＤコントローラ２０に出力する。ホスト１から送られたユーザデータの書き込みについては、ＮＡＮＤ１０の書き込み単位であるページ単位で、コマンドの出力を行う。ライトバッファ３４は、ＮＡＮＤ１０に書き込むユーザデータを一時的に保存する揮発性メモリである。リードバッファ３５は、ＮＡＮＤ１０から読み出したユーザデータをホスト１に渡すまで一時的に保存する揮発性メモリである。ライトバッファ３４、リードバッファ３５は、ランダムアクセス可能な揮発性メモリ上に配置する。
【００２１】
ＤＲＡＭ３２に、ライトバッファ３４およびリードバッファ３５を配置してもよい。バックエンド部３０が使用するメモリとしては、ＮＡＮＤ１０よりも高速記憶動作が可能でランダムアクセスが可能で消去動作が不要な揮発性半導体メモリであれば、ＤＲＡＭ３２の他に、ＳＲＡＭ、ＦｅＲＡＭなどの任意のＲＡＭを採用してもよい。
【００２２】
ＮＡＮＤコントローラは２０は、バックエンド部３０から発行されたコマンドに基づき、ＮＡＮＤ１０へのユーザデータの書き込みおよびＮＡＮＤ１０からのユーザデータの読み出しを行う。ＮＡＮＤコントローラは２０は、誤り訂正回路２５を用いてＮＡＮＤ１０に書き込むユーザデータにＥＣＣ処理（誤り訂正処理）におけるエンコード処理を行い、エンコード結果をデータに付加して出力する。また、ＮＡＮＤコントローラは２０は、誤り訂正回路２５を用いてＮＡＮＤ１０から読み出されたデータに対して、ＥＣＣ処理におけるデコード処理（誤り訂正符号を用いた誤り訂正処理）を行い、誤り訂正されたデータをバックエンド部３０に出力する。バックエンド部３０のＣＰＵ３１は、誤り訂正回路２５に対して誤り訂正処理の中止を指示することができる。
【００２３】
電源回路５０は、ホスト１側の電源回路（外部電源）２から供給された直流電力を複数の異なる内部直流電源電圧に変換し、これら内部直流電源電圧をＳＳＤ１００内の各回路に供給する。電源回路５０は、外部電源２からの電力供給が不正に断たれたことを検知すると、電池５５からの電力供給に切り替え、外部電源２からの電力供給が不正に断たれたことを示す不正電源断通知ＦＥＩをフロントエンド部４０のＣＰＵ４１に通知する。これによりフロントエンド部４０のＣＰＵ４１は不正電源断を検知し、バックエンド部３０のＣＰＵ３１に対して不正電源断処理を指示する。
【００２４】
図２は、ＳＳＤ１００の要部構成要素の機能ブロック図を示すものである。ＮＡＮＤ１０は、ユーザデータを記憶するユーザデータ記憶部２０１を有する。また、ＮＡＮＤ１０には、ＮＡＮＤ管理テーブル２０２（論物変換テーブル３７、フリーブロック管理リスト３８など）が記憶されている。
【００２５】
ＤＲＡＭ３２には、ライトバッファ３４と、リードバッファ３５が形成されている。また、ＤＲＡＭ３２には、起動時などに、ＤＲＡＭ３２上に展開されたＮＡＮＤ管理テーブル２０２であるマスターテーブル３６が記憶される。
【００２６】
フロントエンド部４０、バックエンド部３０およびＮＡＮＤコントローラ２０を纏めた機能要素としてのコントローラ６０は、コマンド処理部６１，読み書き制御部６２、ＮＡＮＤ整理部６３、フリーブロック管理部６４、消去済みブロック管理部６５および不正電源断処理部６６を有する。
【００２７】
コマンド処理部６１は、ホスト１からのコマンドを解析し、解析結果を読み書き制御部６２，ＮＡＮＤ整理部６３、フリーブロック管理部６４、消去済みブロック管理部６５および不正電源断処理部６６に通知する。また、コマンド処理部６１は、ＳＳＤ１００からのコマンド応答をホスト１に送信する。
【００２８】
読み書き制御部６２は、ホスト１から入力されたデータをライトバッファ３４に書き込むライトバッファ書き込み制御、ライトバッファ３４からＮＡＮＤ１０にデータを追い出す追い出し制御、ライトバッファ書き込み制御及び追い出し制御に対応する各種管理テーブルの更新など書き込みに関する制御を実行する。また、読み書き制御部６２は、ホスト１から指定された読み出しデータをＮＡＮＤ１０から読み出して、リードバッファ３５を経由してホスト１へ転送する読み出し制御、読み出し制御に対応する各種管理テーブルの更新など読み出しに関する制御を実行する。読み書き制御部６２は、ＮＡＮＤ１０に対する書き込み、読み出しの際に、誤り訂正回路２５を使用して誤り訂正処理を実行する。
【００２９】
ＮＡＮＤ整理部６３は、ＮＡＮＤ１０でのデータの整理を実行する。ＳＳＤにおいて、データの消去単位（ブロック）と、データの管理単位が異なる場合、ＮＡＮＤ１０の書き換えが進むと、無効な（最新ではない）データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、ＮＡＮＤ１０の記憶領域を有効利用できなくなる。そこで、例えば、ＮＡＮＤ１０のフリーブロックが所定の閾値より少なくなった場合、有効な最新のデータを集めて、違うブロックに書き直すコンパクション、ガベージコレクションなどのＮＡＮＤ１０の整理を実行し、用途未割り当てのフリーブロックを確保する。
【００３０】
フリーブロック管理部６４は、マスターテーブル３６のフリーブロック管理リスト（ＦＢ管理リスト）３８を用いてフリーブロックを管理する。ブロックは、フリーブロックＦＢ、アクティブブロックＡＢとして区別して管理される。フリーブロックＦＢとは、内部に有効データを含まない、用途未割り当ての論理ブロックのことである。アクティブブロックＡＢとは、内部に有効データを含み、用途が割り当てられたブロックのことである。ＳＳＤ１００では、論理アドレス（ＬＢＡ）と物理アドレス（ＮＡＮＤ１０の記憶位置）との関係は予め静的に決定されておらず、データの書込み時に動的に関係付けられる論物動的割当方式が採用されている。
【００３１】
例えば、同じＬＢＡのデータを上書きする場合は、つぎのような処理が行われる。論理アドレスＡ１にブロックサイズの有効なデータが保存されており、記憶領域としてはブロックＢ１が使用されていたとする。ホスト１から論理アドレスＡ１のブロックサイズの更新データを上書きするコマンドを受信した場合、フリーブロック（ブロックＢ２とする）を１個確保し、そのフリーブロックにホスト１から受信したデータを書き込む。その後、論理アドレスＡ１とブロックＢ２を関係付ける。その結果、ブロックＢ２はアクティブブロックＡＢになり、ブロックＢ１に保存されたデータは無効になるためブロックＢ１はフリーブロックＦＢとなる。
【００３２】
このように、ＳＳＤ１００では、同じ論理アドレスＡ１のデータであっても、実際の記録領域として使用されるブロックは書込みの度に変化する。なお、ブロックサイズの更新データ書き込みでは、必ず書き込み先ブロックが変化するが、ブロックサイズ未満の更新データ書き込みでは、同じブロックに更新データが書き込まれることもある。例えばブロックサイズ未満のページデータが更新される場合、当該ブロック内において同じ論理アドレスの旧ページデータが無効化され、新たに書き込まれた最新のページデータが有効ページとして管理される。ブロック内の全データが無効化されると、当該ブロックはフリーブロックＦＢとして解放される。
【００３３】
フリーブロックＦＢは、ＦＢ管理リスト３８によって管理されている。ＦＢ管理リスト３８は、書き込み先ブロックとして選択するフリーブロックの順番を管理するためのリストである。ＦＢ管理リスト３８は、例えば、フリーブロックＦＢとなった時間順やブロックの消去回数順にソートされたＦＩＦＯ形式のリストであり、各エントリには、ブロック識別子が保持される。アクティブブロックＡＢからフリーブロックＦＢとなったフリーブロックＦＢは、ＦＢ管理リストに追加され、フリーブロックＦＢが使用される際には、ＦＢ管理リストから取り出される。ＦＢ管理リストでは、全てのブロックの消去回数、消去間隔を概ね等しくするウェアレベリング処理が実行されている。フリーブロック管理部６４は、書き込み用のブロックが必要な場合、ＦＢ管理リスト３８で管理されている順にフリーブロックＦＢを選択し、選択したブロックを消去した後、読み書き制御部６２に対し書き込み用のブロックとして供給する。
【００３４】
消去済みブロック管理部６５は、不正電源断が発生する前の通常処理において、常に、少なくとも１つの消去済みフリーブロックが予備ブロックとして確保されるようフリーブロックの消去処理を行う。例えば、通常の電源投入時に、フリーブロックを消去することにより少なくとも１つの消去済みフリーブロックＦＢ−Ａを作成しておく。この消去済みフリーブロックＦＢ−Ａは、新たに別の消去済みフリーブロックを作成するまでは、書き込み先ブロックとして使用しないようにする。その後、書き込み先ブロックとしてフリーブロックが要求された場合、別のフリーブロックを消去することにより消去済みフリーブロックＦＢ−Ｂをもう１つ作成する。そして、以前に作成しておいた消去済みフリーブロックＦＢ−Ａを今回の書き込み先ブロックとして使用する。以下、同様に、その後書き込み先ブロックとしてフリーブロックが要求された場合、別のフリーブロックを消去することにより消去済みフリーブロックＦＢ−Ｃをもう１つ作成する。そして、以前に作成しておいた消去済みフリーブロックＦＢ−Ｂを今回の書き込み先ブロックとして使用する。なお、消去済みブロック管理部６５は、ＦＢ管理リスト３８で管理される順番にしたがって消去済みフリーブロックを作成する。
【００３５】
不正電源断処理部６６は、外部電源２からの電力供給が不正に断たれたことを示す不正電源断通知ＦＥＩが発生された場合、電池５５からの電力供給時間中に不正電源断処理を行うものである。ＳＳＤ１００では、ホスト１からユーザデータの書き込みを要求された際に、該ユーザデータをライトバッファ３４に一時記憶させた時点で、ホスト１に対して書き込み完了を返す。このようにすることで、ＳＳＤ１００では、ホスト１からのユーザデータの書き込み性能を向上させている。したがって、ホスト１に書き込み完了を返したデータに関しては、電池５５が電力供給が可能な時間内でライトバッファ３４から読み出してＮＡＮＤ１０に書き込む不揮発化処理を行う必要がある。しかし、前述したように、電池５５としては、１０ミリ秒〜０．１秒程度の極めて短い電源供給が可能なものが採用されることが多いため、不正電源断通知ＦＥＩが発生した際の不揮発化処理は、出来るだけ短い時間で処理しなくてはいけない。
【００３６】
そこで、不正電源断処理部６６は、以下の処理を行う。
・不正電源断通知ＦＥＩが発生する前の通常処理で消去済みブロック管理部６５が予め確保しておいた消去済みフリーブロックを使用して、ＤＲＡＭ３２の記憶データ（管理情報、ライトバッファ３４に一時記憶されているユーザデータなど）を不揮発化する。つまり、ホスト１に書き込み完了を応答したが、まだ不揮発化していないユーザデータを、消去済みフリーブロックを使用して、不揮発化する。また、不揮発化していない管理情報、すなわちマスターテーブル３６における不揮発化されていない管理情報を消去済みフリーブロックを使用して、不揮発化する。
・ＮＡＮＤ１０のブロックを消去中であれば消去を中止させる。
・ＮＡＮＤ１０が整理中であれば、整理を中止させる。
・ＮＡＮＤ１０からの読み出しを中止する。読み出しに伴う誤り訂正処理も中止する。
・リードモディファイライトを行っている場合は、リードモディファイライト処理を中止する。
【００３７】
（リードモディファイライト：ＲＭＷ）
リードモディファイライトについて説明する。ページ内の一部セクタの更新を行うときなどには、ＮＡＮＤ１０の記憶データを読み取って、変更を加えて、書き戻すリード・モディファイ・ライト（ＲＭＷ）を実行する。ＲＭＷ処理においては、まず、更新セクタを含むページまたはブロックをＮＡＮＤ１０からリードし、リードしたデータを、例えばＤＲＡＭ３２の作業領域でホスト１から受信した更新データと統合する。そして、この統合データをＮＡＮＤ１０の新たなページまたは新たなブロックに書き込む。
【００３８】
（消去処理）
つぎに、図３および図４を用いて、消去済みブロック管理部６５によって行われるブロックの消去処理について説明する。図３は、ブロックの状態遷移を示すものである。図４は、不正電源断通知ＦＥＩが発生する前の通常処理での消去済みブロック作成処理手順を示すものである。ブロックは、図３に示すように、初期状態では、有効データを保持していないフリーブロックＦＢの状態にある。このフリーブロックＦＢを消去することで、このフリーブロックＦＢは書き込み可能な状態となる。消去が完了する前に消去を中止した場合は、このブロックは消去候補のフリーブロックＦＢに戻す。消去済みフリーブロックＦＢは、その後、ユーザデータや管理情報の書き込み先としてのアクティブブロックＡＢとして使用され、使用後に再びフリーブロックＦＢとして登録される。
【００３９】
本実施形態においては、例えば、通常の電源投入時に、ＦＢ管理リスト３８によって最先に使用すべきであると管理されているフリーブロックを選択し（ステップＳ３０１）、選択したフリーブロックを消去することにより少なくとも１つの消去済みフリーブロックＦＢ−Ａを予め作成しておく（ステップＳ３０２）。この消去済みフリーブロックＦＢ−Ａは、図３に示すように、先に使用する消去済みフリーブロックである先使用消去済みフリーブロックＥＦＢ１として登録される（ステップＳ３０３）。この先使用消去済みフリーブロックＥＦＢ１は、前述したように、新たに別の消去済みフリーブロックを作成するまでは、書き込み先ブロックとして使用されないようにする。
【００４０】
その後書き込み先ブロックとしてフリーブロックが要求された場合（ステップＳ３０４）、別のフリーブロックを消去することにより消去済みフリーブロックＦＢ−Ｂがもう１つ作成される（ステップＳ３０５）。そして、この消去済みフリーブロックＦＢ−Ｂは、図３に示すように、次回に使用する消去済みフリーブロックである次使用消去済みフリーブロックＥＦＢ２として登録される（ステップＳ３０６）。そして、以前に作成しておいた、先使用消去済みフリーブロックＥＦＢ１に登録されている消去済みフリーブロックＦＢ−Ａが今回の書き込み先ブロックとして使用される。また、今回作成した、次使用消去済みフリーブロックＥＦＢ２に登録されている消去済みフリーブロックＦＢ−Ｂが、先使用消去済みフリーブロックＥＦＢ１に登録される（ステップＳ３０７）。
【００４１】
以下、同様に、その後書き込み先ブロックとしてフリーブロックが要求された場合（ステップＳ３０８）、別のフリーブロックを消去することにより消去済みフリーブロックＦＢ−Ｃがもう１つ作成され、この消去済みフリーブロックＦＢ−Ｃが、次回に使用する消去済みフリーブロックである次使用消去済みフリーブロックＥＦＢ２として登録される。そして、先使用消去済みフリーブロックＥＦＢ１に登録されている消去済みフリーブロックＦＢ−Ｂは今回の書き込み先ブロックとして使用される。また、今回作成した、次使用消去済みフリーブロックＥＦＢ２に登録されている消去済みフリーブロックＦＢ−Ｃが、先使用消去済みフリーブロックＥＦＢ１として登録される。
【００４２】
先使用消去済みフリーブロックＥＦＢ１として登録されている消去済みフリーブロックは、図３に示すように、通常時は、ユーザデータや管理情報の書き込み先として使用されるが、不正電源断通知ＦＥＩが発生した場合は、不正電源断処理でのユーザデータや管理情報の書き込み先として使用される。
【００４３】
このように消去済みブロック管理部６５は、常に少なくとも１つの消去済みフリーブロックを確保するようにしており、この消去済みのフリーブロックを不正電源断時の不揮発化処理のための書き込み先としても使用する。このため、不正電源断時に、ブロックを消去することなく即座にこの消去済みのフリーブロックを使用した不揮発化処理を行うことが可能となる。ブロックの消去には１０ミリ秒程度の時間が掛かり、不正電源断処理に掛けられる時間を上回る可能性があるため、不正電源断時の不揮発化処理の際には、消去処理を行わないようにする。先に消去処理を行ったフリーブロックを書き込み先ブロックとして先に使用することで、書き込み特性の低下を防止している。
【００４４】
（不正電源断処理）
図５は、電源回路５０から不正電源断通知ＦＥＩが発生された時の不正電源断処理部６６での不正電源断処理の動作手順を示すフローチャートである。電源回路５０は、外部電源２からの電力供給が断たれたことを検知するまでは（ステップＳ４０１：Ｎｏ）、通常通り、外部電源２からの電力をＳＳＤ１００の各部に供給する。電源回路５０は、外部電源２からの電力供給が断たれたことを検知すると（ステップＳ４０１：Ｙｅｓ）、電力を電池５５から供給するように切り替える。さらに、電源回路５０は、フロントエンド部４０のＣＰＵ４１に対して、外部電源２からの電力供給が不正に断たれたことを示す不正電源断通知ＦＥＩを通知する（ステップＳ４０２）。フロントエンド部４０は、これ以降、バックエンド部３０に対するコマンドの発行を中止する。さらに、フロントエンド部４０のＣＰＵ４１は、バックエンド部３０のＣＰＵ３１に対して、不正電源断処理を実行することを指示する（ステップＳ４０３）。
【００４５】
これ以降は、主にバックエンド部３０のＣＰＵ３１における不正電源断処理を行う機能要素としての不正電源断処理部６６が行う処理である。不正電源断処理部６６は、ＮＡＮＤコントローラ２０に対して、ＮＡＮＤ１０の消去を中止するよう指示する（ステップＳ４０４）。これにより、ＮＡＮＤ１０が消去中であれば消去が中止される。
【００４６】
不正電源断処理部６６は、ＮＡＮＤ１０の整理中であれば、ＮＡＮＤ整理部６３によるＮＡＮＤ整理を中止させる（ステップＳ４０５）。具体的には、ＮＡＮＤ１０からのデータの読み込み、ＮＡＮＤ１０へのデータの書き込み、マスターテーブル３６での論物変換テーブル３７の更新について、仕掛中の処理単位が完了した以後の処理を中止する。ＮＡＮＤ整理によって更新されたがこの時点でＮＡＮＤ１０に書き込まれていない論物変換テーブル３７などの管理情報については、この後の手順で、前述の退避先ブロックである先使用消去済みフリーブロックＥＦＢ１に書き込み、さらにその後の電源投入時に管理情報を整合する。
【００４７】
不正電源断処理部６６は、誤り訂正回路２５に対して、ＮＡＮＤ１０からの読み込みについて、誤り訂正を行わないよう指示する（ステップＳ４０６）。すなわち、ＮＡＮＤ１０からの読み込みについて、仕掛り中の誤り訂正処理を中止させる。以後、読み込みで誤りが発生した場合は、誤り訂正を行わず、読み込み中断として扱う。
【００４８】
不正電源断処理部６６は、ＮＡＮＤコントローラ２０からの読み込みを中止する（ステップＳ４０７）。仕掛り中のＮＡＮＤ１０からの読み込み処理があれば継続し、それ以降の読み込み処理を一切中止する。また、ホスト１に対して読み込み応答は返さない。さらに、不正電源断処理部６６は、ＲＭＷを行っている場合は、ＲＭＷも中止する。
【００４９】
不正電源断処理部６６は、消去済みブロック管理部６５によって確保されている先使用消去済みフリーブロックＥＦＢ１を、不正電源断処理の退避先ブロックとして割り当てる（ステップＳ４０８）
【００５０】
不正電源断処理部６６は、ホスト１に書き込み完了を応答したが、まだライトバッファ３４に記憶されて不揮発化されていないユーザデータを、ステップＳ４０８で割り当てた不正電源断処理の退避先ブロックＥＦＢ１に書き込む（ステップＳ４０９）。
【００５１】
不正電源断処理部６６は、不揮発化していない論物変換テーブル３７を含む管理情報を、ステップＳ４０８で割り当てた不正電源断処理の退避先ブロックＥＦＢ１に書き込む（ステップＳ４１０）。この管理情報は、退避先ブロックに追記するようにする。また、管理情報の書き込みは、論物変換テーブルなどのテーブル全体を書き込むのではなく、不揮発化していない管理情報のみを例えば更新前後の差分情報として書き込むようにしたほうがよい。
【００５２】
不正電源断処理部６６は、ＲＭＷ処理を中断した場合は、少なくとも、このＲＭＷ処理で更新する更新データ（例えば、ホスト１から受信したデータ）と、この更新データの論理アドレス（ＬＢＡ）を含む管理情報を、退避先ブロックＥＦＢ１に追記するようにする（ステップＳ４１１）。なお、ＲＭＷ処理に関しては、後で詳述する。
【００５３】
これ以降、不正電源断処理部６６は、ＮＡＮＤ１０に対する動作を一切行わず、その後、電池５５が切れる。
【００５４】
（不正電源断後の電源投入時動作）
つぎに、図６を用いて不正電源断が発生した後の電源投入時の動作について説明する。この電源投入時の動作は、不正電源断処理部６６によって実行される。不正電源断後の電源投入時動作時に、新たな不正電源断が繰り返し発生する可能性がある。そこで、退避先ブロックＥＦＢ１に退避したデータや管理情報のための新たな退避先としてのフリーブロックをＦＢ管理リスト３８の先頭から選択することにより、ＦＢ管理リスト３８で最先に使用すべきであると管理されているフリーブロックを選択し、選択したフリーブロックを消去処理して消去済みフリーブロックとしておく。また、退避先ブロックＥＦＢ１に退避したデータを読み出して最終的に書き込むためのフリーブロックをＦＢ管理リスト３８の先頭から選択し、選択したフリーブロックも消去処理して消去済みフリーブロックとしておく。また、退避先ブロックＥＦＢ１に退避した論物変換情報を整合して最終的に書き込むためのフリーブロックをＦＢ管理リスト３８の先頭から選択し、選択したフリーブロックも消去処理して消去済みフリーブロックとしておく。さらに、不正電源断後に電源投入処理が完了したことを示す管理情報などを書き込むためのフリーブロックをＦＢ管理リスト３８の先頭から選択し、選択したフリーブロックも消去処理して消去済みフリーブロックとしておく。
【００５５】
このように、不正電源断後の電源投入時に、ＦＢ管理リスト３８を用いて
・退避先ブロックに退避したデータ、管理情報のための新たな退避先消去済みブロックＢ１
・退避したデータを最終的に書き込むための新たな消去済みブロックＢ２
・退避した論物変換情報を最終的に書き込むための新たな消去済みブロックＢ３
・不正電源断後に電源投入時処理が完了したことを示す管理情報などを書き込む新たな消去済みブロックＢ４
を最初に確保しておく（ステップＳ５０１）。これらのブロックＢ１〜Ｂ４の選択は、ＦＢ管理リスト３８を用いて行われる。したがって、不正電源断と、電源投入が繰り返し発生した場合でも、上記ブロックＢ１〜Ｂ４としては、同じ（ＩＤ番号を持つ）ブロックが選択されて、消去済みブロックとして再利用される。このため、不正電源断と、電源投入が繰り返し発生した場合でも、ＮＡＮＤ１０の書き込み先が枯渇することを防止することが可能となる。なお、ＦＢ管理リスト３８にフリーブロックが不足している場合は、ＮＡＮＤ１０の整理を行ってフリーブロックを確保する。
【００５６】
なお、不正電源断後の電源投入時処理の際に、不正電源断が再度発生した場合、不正電源断処理中に、上記ブロックＢ１〜Ｂ４のブロック識別子を退避先ブロックに記憶しておき、その後の電源投入時処理の際に、退避先ブロックに記憶しておいたブロック識別子を読み出すことで、同じブロックを再利用するようにしてもよい。
【００５７】
つぎに、不正電源断処理部６６は、退避先ブロックＥＦＢ１から、ＲＭＷの退避情報である、ＲＭＷの管理情報（例えば、更新データのＬＢＡ）を読み出し、例えば、ＤＲＡＭ３２に一時記憶する（ステップＳ５０２）。
【００５８】
不正電源断処理部６６は、退避先ブロックＥＦＢ１から論物変換情報を読み出し、例えば、ＤＲＡＭ３２に一時記憶する（ステップＳ５０３）。
【００５９】
電源投入時の通常処理として、ＮＡＮＤ１０からＮＡＮＤ管理テーブル２０２が読み出され、ＤＲＡＭ３２にマスターテーブル３６として書き込まれる。不正電源断処理部６６は、退避先ブロックＥＦＢ１から読み出した論物変換情報で、マスターテーブル３６の論物変換テーブル３７を更新して統合し、マスターテーブル３６の論物変換テーブル３７の整合性を回復する。その後、この論物変換テーブル３７は、ステップＳ５０１で用意した消去済みブロックＢ３に書き込む（ステップＳ５０４）。
【００６０】
不正電源断処理部６６は、退避先ブロックＥＦＢ１からユーザデータを読み出し、例えば、ＤＲＡＭ３２に一時記憶する（ステップＳ５０５）。
【００６１】
不正電源断処理部６６は、ステップＳ５０５で読み出したデータがＲＭＷに関するデータであればＲＭＷを行い、単なるライト処理であればライト処理を行う。ＲＭＷまたはライトでは、ステップＳ５０１で用意した消去済みブロックＢ２に対してデータを書き込む（ステップＳ５０６）。ＲＭＷについては、後で詳述する。ＲＭＷにおいて、ＮＡＮＤ１０から読み込んだユーザデータに読み込みエラーがあれば、誤り訂正回路２５で誤り訂正する。
【００６２】
不正電源断処理部６６は、不正電源断後の電源投入処理が完了したことを、管理情報として、ステップＳ５０１で用意した消去済みブロックＢ４に書き込む（ステップＳ５０７）。
【００６３】
不正電源断処理部６６は、不正電源断処理で退避情報を格納していた退避先ブロックＥＦＢ１をフリーブロックとし、ＦＢ管理リスト３８に登録する（ステップＳ５０８）。
【００６４】
なお、この不正電源断後の電源投入時処理の途中に不正電源断が発生した場合は、不揮発化されていないユーザデータ、および不揮発化されていない論物変換情報を含む管理情報を、ステップＳ５０１で用意した新たな退避先消去済みブロックＢ１に退避する。
【００６５】
つぎに、図７、図８を用いてＲＭＷについて説明する。図７は、不正電源断を挟むＲＭＷ処理を概念的に示す図である。不正電源断が発生すると、不正電源断処理部６６（バックエンド部３０）は、ＮＡＮＤコントローラ２０からの読み込みおよび誤り訂正を中止する。そのため不正電源断が発生した時点で実行中であったＲＭＷを中止し、電源投入後に再実行する。ＮＡＮＤ１０への書き込みはページ単位で行う必要がある。そのため不正電源断処理においては、不正電源断時に、不揮発化されずにＤＲＡＭ３２に記憶されていたデータ（図７（ａ）参照；ＬＢＡ１のセクタデータ、ＬＢＡ３のセクタデータ、ＬＢＡ４のセクタデータ）の他のＬＢＡのセクタ部分にダミーデータを埋め込み、このダミーデータを含むページデータ（図７（ｂ）参照）を、図５のステップＳ４１１で、退避先ブロックに対し、書き込む。
【００６６】
図８は、不正電源断後の電源投入時のＲＭＷの動作手順を示すものである。まず、不正電源断処理部６６は、退避先ブロックＥＦＢ１から、ＲＭＷの退避情報である、ＲＭＷの管理情報（例えば、更新データのＬＢＡ）を読み出し、例えば、ＤＲＡＭ３２に一時記憶する（ステップＳ７０１）。
【００６７】
ＲＭＷの退避情報としては、前述したように、ＲＭＷ処理で更新する更新データと、この更新データの論理アドレス（ＬＢＡ）を採用すれば、その後の電源投入時処理で、更新データのＬＢＡを用いて新たに論物変換テーブル３７を検索することで、ＲＭＷ処理を再開することが可能である。
【００６８】
論物変換テーブル３７を検索することなくＲＭＷ処理の再開を可能とするために、ＲＭＷの退避情報として、つぎのような冗長情報を採用するようにしてもよい。
・更新データ
・ＲＭＷ対象データ位置情報：ＲＭＷ対象の更新データのＬＢＡ（セクタ）が属するＮＡＮＤ１０上の位置（ページ）
・ＲＭＷ−ＬＢＡマップ情報：ＲＭＷ対象のページ内に所属する各ＬＢＡが更新データであるかあるいは元々ＮＡＮＤ１０上に保存されていたデータであるかを識別する情報
【００６９】
ＲＭＷで退避する管理情報として、冗長情報を採用した場合は、図５のステップＳ４１１において、ＲＭＷ対象データ位置情報と、ＲＭＷ−ＬＢＡマップ情報を管理情報として退避先ブロックＥＦＢ１に退避する。また、図６のステップＳ５０２、図７のステップＳ７０１において、ＲＭＷ対象データ位置情報と、ＲＭＷ−ＬＢＡマップ情報を管理情報として退避先ブロックＥＦＢ１から読み出す。なお、ＲＭＷ−ＬＢＡマップ情報のみを退避する管理情報としてもよい。その場合は、ＲＭＷ−ＬＢＡマップ情報と、論物変換テーブル３７を用いて、ＲＭＷ対象データ位置情報を取得する。
【００７０】
つぎに、不正電源断処理部６６は、退避先ブロックＥＦＢ１から、ＲＭＷの退避情報である、ダミーデータ付き更新データを読み出し、例えば、ＤＲＡＭ３２に一時記憶する（ステップＳ７０２）。
【００７１】
つぎに、不正電源断処理部６６は、ＲＭＷ対象データ位置情報に基づきあるいは論物変換テーブル３７に基づきＲＭＷ対象の更新データのＬＢＡ（セクタ）が属するＮＡＮＤ１０上のページデータ（図７（ｄ）参照）を読み出し、例えば、ＤＲＡＭ３２に一時記憶する（ステップＳ７０３）。
【００７２】
つぎに、不正電源断処理部６６は、図７（ｃ）に示すように、退避先ブロックＥＦＢ１から読み込んだダミーデータ付き更新データと、ＮＡＮＤ１０の通常領域から読み込んだページデータとを統合し、統合したページデータをＮＡＮＤ１０に書き込む（ステップＳ７０４）。この書き込みに伴って、マスターテーブル３６の論物変換テーブル３７を更新し、更新された論物変換テーブル３７をＮＡＮＤ１０で不揮発化する。
【００７３】
このようにこの実施形態では、常に少なくとも１つの消去済みフリーブロックを確保するようにしており、この消去済みのフリーブロックを不正電源断時の不揮発化処理のための書き込み先としても使用する。このため、不正電源断処理中には、ＮＡＮＤの消去処理は発生せず、また消去を失敗したときの再試行も発生せず、その分の処理時間も不正電源断処理中に発生しない。このため、この実施形態では、不正電源断処理に要する時間が短縮され、容量の少ないバックアップ電源を用いた場合でも、所要の不正電源断処理を完結させることが可能となる。
【００７４】
また、この実施形態では、不正電源断処理においては、ブロックの消去、ＮＡＮＤ１０からの読み出しを中止し、不揮発化が完了していないデータおよび該データに関する論物変換情報を、不正電源断通知前に予め用意している消去済みフリーブロックに書き込む不揮発化処理を行うようにしているので、不正電源断処理に要する時間が短縮され、容量の少ないバックアップ電源を用いた場合でも、所要の不正電源断処理を完結させることが可能となる。
【００７５】
また、この実施形態では、不正電源断処理中に仕掛り中の読み出しについて、誤り訂正処理を中止することとしているので、誤り訂正によってデータを復元するのに時間がかかることがなくなり、不正電源断処理に要する時間が短縮され、容量の少ないバックアップ電源を用いた場合でも、所要の不正電源断処理を完結させることが可能となる。因みに、従来技術では、不正電源断発生後に読み込みを停止しないため、不揮発性メモリから読み込んだユーザデータを誤り訂正すると、電池が切れるまでに不正電源断処理が完了しない可能性がある。
【００７６】
また、この実施形態では、不正電源断時にＮＡＮＤの整理を行っている場合は、不正電源断処理時にＮＡＮＤの整理を中止させるようにしているので、不正電源断処理に要する時間が短縮され、容量の少ないバックアップ電源を用いた場合でも、所要の不正電源断処理を完結させることが可能となる。
【００７７】
また、この実施形態では、不正電源断時にＲＭＷを行っている場合は、不正電源断処理時にＲＭＷを中止させるようにしているので、不正電源断処理に要する時間が短縮され、容量の少ないバックアップ電源を用いた場合でも、所要の不正電源断処理を完結させることが可能となる。
【００７８】
また、この実施形態では、不正電源断後の電源復帰時処理の際に、退避データの新たな退避先としての消去済みブロックと、退避データおよび退避データに関する論物変換情報の最終的な書き込み先としての消去済みブロックと、不正電源断後に電源投入時処理が完了したことなどを示す管理情報の書き込み先としての消去済みブロックとを、フリーブロック管理リストに基づき選択して予め用意することとしたので、不正電源断と、電源投入が繰り返し発生した場合でも、上記消去済みブロックとしては同じブロックが使用されることとなり、不正電源断と、電源投入が繰り返し発生した場合でも、ＮＡＮＤの書き込み先が枯渇することを防止することが可能となる。
【００７９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８０】
１  ホスト装置、５  ホストインタフェース、１０  ＮＡＮＤ型フラッシュメモリ（ＮＡＮＤ）、２０  ＮＡＮＤコントローラ、２５  誤り訂正回路、３０  バックエンド部、３４  ライトバッファ、３５  リードバッファ、３６  マスターテーブル、３７  論物変換テーブル、３８  フリーブロック管理リスト、４０  フロントエンド部、５０  電源回路、５５  電池、６０  コントローラ、６１  コマンド処理部、６２  読み書き制御部、６３  ＮＡＮＤ整理部、６４  フリーブロック管理部、６５  消去済みブロック管理部、６６  不正電源断処理部。
【図１】
2013061799.tif 000003
【図２】
2013061799.tif 000004
【図３】
2013061799.tif 000005
【図４】
2013061799.tif 000006
【図５】
2013061799.tif 000007
【図６】
2013061799.tif 000008
【図７】
2013061799.tif 000009
【図８】
2013061799.tif 000010