特許第6789788号(P6789788)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社メガチップスの特許一覧

特許6789788メモリ装置、コントローラ、ホスト装置、データ処理システム、制御プログラム、メモリ装置の動作方法及びホスト装置の動作方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6789788
(24)【登録日】2020年11月6日
(45)【発行日】2020年11月25日
(54)【発明の名称】メモリ装置、コントローラ、ホスト装置、データ処理システム、制御プログラム、メモリ装置の動作方法及びホスト装置の動作方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20201116BHJP
   G06F 12/00 20060101ALI20201116BHJP
【FI】
   G06F12/02 530E
   G06F12/00 597U
【請求項の数】37
【全頁数】63
(21)【出願番号】特願2016-240341(P2016-240341)
(22)【出願日】2016年12月12日
(65)【公開番号】特開2018-97516(P2018-97516A)
(43)【公開日】2018年6月21日
【審査請求日】2019年9月10日
(73)【特許権者】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100088672
【弁理士】
【氏名又は名称】吉竹 英俊
(74)【代理人】
【識別番号】100088845
【弁理士】
【氏名又は名称】有田 貴弘
(72)【発明者】
【氏名】岸田 治展
(72)【発明者】
【氏名】今川 雅之
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開2004−62554(JP,A)
【文献】 特開平11−126488(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 12/02
(57)【特許請求の範囲】
【請求項1】
ホスト装置によって制御されるメモリ装置であって、
それぞれがデータ消去単位となり、前記ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、
前記メモリコアを制御するコントローラと、
前記複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと、論理アドレスとの対応関係を示す第1テーブルと
を備え、
前記コントローラの動作モードには、第1〜第3モードが含まれ、
前記第1モードの前記コントローラは、前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取ると、
前記第1テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定し、
前記第1テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定し、
前記第1モードの前記コントローラは、前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスを受け取ると、前記第1テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込み、
前記第2モードの前記コントローラは、前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定し、
前記コントローラは、前記第2モードで動作する場合、前記消去待ち領域のデータを消去している最中に前記第2モードの解除を指示する解除コマンドを前記ホスト装置から受け取ると、前記動作モードを前記第2モードから前記第3モードに変更し、
前記コントローラは、前記第3モードで動作する場合、前記消去待ち領域の未消去のデータを消去して当該消去待ち領域を前記消去済み領域に設定し、前記動作モードを前記第3モードから前記第1モードに変更する、メモリ装置。
【請求項2】
請求項1に記載のメモリ装置であって、
前記第2モードの前記コントローラは、前記記憶領域に複数の前記消去待ち領域が含まれる場合には、前記解除コマンドを受け取るまで、前記複数の前記消去待ち領域のデータ消去を継続して行う、メモリ装置。
【請求項3】
請求項1及び請求項2のいずれか一つに記載のメモリ装置であって、
前記コントローラは、前記第2モードで動作する場合、前記解除コマンドを受け取ると、前記消去待ち領域のデータを消去している最中であるか否かにかかわらず前記動作モードを前記第2モードから前記第3モードに変更し、
前記コントローラは、前記第3モードで動作する場合、
データが途中まで消去された前記消去待ち領域が存在する場合には、当該消去待ち領域の未消去のデータを消去して前記動作モードを前記第1モードに変更し、
データが途中まで消去された前記消去待ち領域が存在しない場合には、前記消去待ち領域のデータ消去を行わずに、前記動作モードを前記第1モードに変更し、
前記コントローラは、前記第1モードで動作する場合、前記第2モードで動作することを指示する指示コマンドを前記ホスト装置から受け取ると、前記動作モードを前記第2モードに変更し、
前記ホスト装置は、前記コントローラが前記第2モードで動作する前記メモリ装置に対して前記解除コマンドを出力した後に、前記消去コマンドを出力し、前記消去コマンドの後に前記書き込みコマンドを出力し、前記書き込みコマンドの後に前記指示コマンドを出力するという処理を繰り返し実行し、
前記コントローラは、
前記指示コマンドを受け取ってから所定時間が経過する前に前記解除コマンドを受け取る場合には、前記消去待ち領域のデータ消去を行わずに、前記動作モードを前記第3モードに変更し、
前記指示コマンドを受け取ってから前記所定時間が経過する前に前記解除コマンドを受け取らない場合には、前記消去待ち領域のデータ消去を開始する、メモリ装置。
【請求項4】
請求項1乃至請求項3のいずれか一つに記載のメモリ装置であって、
前記複数の消去単位領域のそれぞれは、前記出力データが書き込まれるホストデータ領域と、当該消去単位領域の状態を管理するための管理領域とを有し、
前記管理領域は、
当該管理領域を含む前記消去単位領域が、前記アクセス領域であるのか、前記消去済み領域であるのか、前記消去待ち領域であるのかを示すステータス情報を記憶する第1管理領域と、
前記ステータス情報の更新状況を示す第2管理領域と
を有し、
前記第2管理領域は、前記消去済み領域、前記アクセス領域及び前記消去待ち領域にそれぞれ対応する第1乃至第3更新管理領域を含み、
前記コントローラは、
前記ステータス情報を、前記消去単位領域が前記消去済み領域であることを示す第1ステータス情報に書き換える際には、第1所定情報を前記第1更新管理領域に書き込み、
前記ステータス情報を、前記消去単位領域が前記アクセス領域であることを示す第2ステータス情報に書き換える際には、第2所定情報を前記第2更新管理領域に書き込み、
前記ステータス情報を、前記消去単位領域が前記消去待ち領域であることを示す第3ステータス情報に書き換える際には、第3所定情報を前記第3更新管理領域に書き込み、
前記コントローラは、前記ステータス情報が正しいか否かを、前記第1乃至第3更新管理領域内の情報に基づいて判定する正否判定を行う、メモリ装置。
【請求項5】
ホスト装置によって制御されるメモリ装置であって、
それぞれがデータ消去単位となり、前記ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、
前記メモリコアを制御するコントローラと、
前記複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと、論理アドレスとの対応関係を示す第1テーブルと
を備え、
前記コントローラは、前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取ると、
前記第1テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定し、
前記第1テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定し、
前記コントローラは、前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記第1テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込み、
前記コントローラは、前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定し、
前記複数の消去単位領域のそれぞれは、前記出力データが書き込まれるホストデータ領域と、当該消去単位領域の状態を管理するための管理領域とを有し、
前記管理領域は、
当該管理領域を含む前記消去単位領域が、前記アクセス領域であるのか、前記消去済み領域であるのか、前記消去待ち領域であるのかを示すステータス情報を記憶する第1管理領域と、
前記ステータス情報の更新状況を示す第2管理領域と
を有し、
前記第2管理領域は、前記消去済み領域、前記アクセス領域及び前記消去待ち領域にそれぞれ対応する第1乃至第3更新管理領域を含み、
前記コントローラは、
前記ステータス情報を、前記消去単位領域が前記消去済み領域であることを示す第1ステータス情報に書き換える際には、第1所定情報を前記第1更新管理領域に書き込み、
前記ステータス情報を、前記消去単位領域が前記アクセス領域であることを示す第2ステータス情報に書き換える際には、第2所定情報を前記第2更新管理領域に書き込み、
前記ステータス情報を、前記消去単位領域が前記消去待ち領域であることを示す第3ステータス情報に書き換える際には、第3所定情報を前記第3更新管理領域に書き込み、
前記コントローラは、前記ステータス情報が正しいか否かを、前記第1乃至第3更新管理領域内の情報に基づいて判定する正否判定を行う、メモリ装置。
【請求項6】
請求項5に記載のメモリ装置であって、
前記コントローラの動作モードには、第1及び第2動作モードが含まれ、
前記第1モードの前記コントローラは、前記消去コマンド及び前記第1論理アドレスを受け取ると、
前記第1テーブルにおいて前記第1論理アドレスに対応付けられている前記第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域を前記消去待ち領域に設定し、
前記第1テーブルにおいて、前記第1物理アドレスを、前記消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を前記アクセス領域に設定し、
前記第1モードの前記コントローラは、前記書き込みコマンド及び前記第2論理アドレスを受け取ると、前記第1テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込み、
前記第2モードの前記コントローラは、前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定する、メモリ装置。
【請求項7】
請求項4乃至請求項6のいずれか一つに記載のメモリ装置であって、
前記コントローラは、
前記正否判定において正しいと判定される前記ステータス情報が前記第1ステータス情報を示す場合には、前記第1更新管理領域に前記第1所定情報を再度書き込み、
前記正否判定において正しいと判定される前記ステータス情報が前記第2ステータス情報を示す場合には、前記第2更新管理領域に前記第2所定情報を再度書き込み、
前記正否判定において正しいと判定される前記ステータス情報が前記第3ステータス情報を示す場合には、前記第3更新管理領域に前記第3所定情報を再度書き込む、メモリ装置。
【請求項8】
請求項4乃至請求項7のいずれか一つに記載のメモリ装置であって、
前記コントローラは、前記消去コマンド及び前記第1論理アドレスを受け取った場合に前記複数の消去単位領域に前記消去済み領域が含まれていないときには、前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定した後、前記第1テーブルにおいて、前記第1物理アドレスを、当該消去済み領域に割り当てられた前記物理アドレスに置き換えて、当該消去済み領域を前記アクセス領域に設定する、メモリ装置。
【請求項9】
請求項4乃至請求項8のいずれか一つに記載のメモリ装置であって、
前記アクセス領域の前記第1管理領域は、前記第1テーブルにおいて、当該アクセス領域に割り当てられた前記物理アドレスに対応付けられる前記論理アドレスを記憶する、メモリ装置。
【請求項10】
請求項4乃至請求項9のいずれか一つに記載のメモリ装置であって、
前記コントローラは、前記第1ステータス情報を記憶する前記第1管理領域の一部のビットにデータを書きこむことによって、前記ステータス情報を前記第1ステータス情報から前記第2ステータス情報に変更する、メモリ装置。
【請求項11】
請求項4乃至請求項10のいずれか一つに記載のメモリ装置であって、
前記コントローラは、前記第2ステータス情報を記憶する前記第1管理領域の一部のビットにデータを書きこむことによって、前記ステータス情報を前記第2ステータス情報から前記第3ステータス情報に変更する、メモリ装置。
【請求項12】
請求項4乃至請求項11のいずれか一つに記載のメモリ装置であって、
前記第1乃至第3所定情報の少なくとも一つの情報は複数ビットの値で構成され、
前記複数ビットの値は、データ消去後の前記消去単位領域の各ビットが示す値とは異なる値である、メモリ装置。
【請求項13】
請求項4乃至請求項11のいずれか一つに記載のメモリ装置であって、
前記コントローラは、
前記ステータス情報を前記第1ステータス情報に書き換えた後に前記第1管理領域に記憶されるデータを誤り訂正符号化して得られる第1誤り訂正符号を、前記第1所定情報として前記第1更新管理領域に書き込む第1処理と、
前記ステータス情報を前記第2ステータス情報に書き換えた後に前記第1管理領域に記憶されるデータを誤り訂正符号化して得られる第2誤り訂正符号を、前記第2所定情報として前記第2更新管理領域に書き込む第2処理と、
前記ステータス情報を前記第3ステータス情報に書き換えた後に前記第1管理領域に記憶されるデータを誤り訂正符号化して得られる第3誤り訂正符号を、前記第3所定情報として前記第3更新管理領域に書き込む第3処理と
の少なくとも一つの処理を行う、メモリ装置。
【請求項14】
請求項13に記載のメモリ装置であって、
データ消去後の前記消去単位領域の各ビットは第1の値を示し、
前記コントローラは、
前記第1更新管理領域内のデータを誤り訂正復号化した第1結果、前記第2更新管理領域内のデータを誤り訂正復号化した第2結果及び前記第3更新管理領域内のデータを誤り訂正復号化した第3結果の少なくとも一つの結果に基づいて、前記ステータス情報を構成するビットの値が、前記第1の値とは異なる第2の値から前記第1の値に誤っているか否かを判定し、
前記ステータス情報を構成するビットの値が前記第2の値から前記第1の値に誤っている場合には、当該ビットに前記第2の値を書き込んで前記ステータス情報を修復する、メモリ装置。
【請求項15】
請求項13及び請求項14のいずれか一つに記載のメモリ装置であって、
データ消去後の前記消去単位領域の各ビットは第1の値を示し、
前記コントローラは、
前記第1更新管理領域内のデータを誤り訂正復号化した第1結果、前記第2更新管理領域内のデータを誤り訂正復号化した第2結果及び前記第3更新管理領域内のデータを誤り訂正復号化した第3結果の少なくとも一つの結果に基づいて、前記ステータス情報を構成するビットの値が、前記第1の値から、当該第1の値とは異なる第2の値に誤っているか否かを判定し、
前記ステータス情報を構成するビットの値が前記第1の値から前記第2の値に誤っている場合には、当該ステータス情報を記憶する前記消去単位領域のデータを消去した上で、当該消去単位領域に正しい前記ステータス情報を書き込む、メモリ装置。
【請求項16】
請求項13乃至請求項15のいずれか一つに記載のメモリ装置であって、
前記コントローラは、前記消去単位領域の前記第1更新管理領域内のデータを誤り訂正復号化した結果、正しく復号化できない場合には当該消去単位領域のデータを消去し、前記消去単位領域の前記第2更新管理領域内のデータを誤り訂正復号化した結果、正しく復号化できない場合には当該消去単位領域のデータを消去し、前記消去単位領域の前記第3更新管理領域内のデータを誤り訂正復号化した結果、正しく復号化できない場合には当該消去単位領域のデータを消去し、データを消去した前記消去単位領域を前記消去済み領域に設定する、メモリ装置。
【請求項17】
請求項13乃至請求項16のいずれか一つに記載のメモリ装置であって、
前記コントローラは、前記第1更新管理領域内のデータを誤り訂正復号化した第1結果、前記第2更新管理領域内のデータを誤り訂正復号化した第2結果及び前記第3更新管理領域内のデータを誤り訂正復号化した第3結果の少なくとも一つの結果と、前記ステータス情報とに基づいて、当該ステータス情報の誤り原因を推定する推定処理を行う、メモリ装置。
【請求項18】
請求項17に記載のメモリ装置であって、
前記コントローラは、前記推定処理において、前記ステータス情報が、前記第1乃至第3ステータス情報以外の他の情報を示す場合、
前記第3更新管理領域に前記第3誤り訂正符号が記憶されているときには、前記第3結果に基づいて前記誤り原因を推定し、
前記第3更新管理領域にデータ前記第3誤り訂正符号が記憶されておらず、前記第2更新管理領域に前記第2誤り訂正符号が記憶されているときには、前記第2結果に基づいて前記誤り原因を推定し、
前記第3更新管理領域に前記第3誤り訂正符号が記憶されておらず、前記第2更新管理領域に前記第2誤り訂正符号が記憶されておらず、前記第1更新管理領域に前記第1誤り訂正符号が記憶されているときには、前記第1結果に基づいて前記誤り原因を推定する、メモリ装置。
【請求項19】
請求項17に記載のメモリ装置であって、
前記コントローラは、前記推定処理において、
前記ステータス情報が前記第1ステータス情報を示し、前記第1更新管理領域内のデータを誤り訂正復号化することによって得られる復号化データが前記第1管理領域内のデータと一致し、前記第2更新管理領域に前記第2誤り訂正符号が記憶されている場合には、前記第2結果に基づいて前記誤り原因を推定し、
前記ステータス情報が前記第2ステータス情報を示し、前記第2更新管理領域内のデータを誤り訂正復号化することによって得られる復号化データが前記第1管理領域内のデータと一致し、前記第3更新管理領域に前記第3誤り訂正符号が記憶されている場合には、前記第3結果に基づいて前記誤り原因を推定する、メモリ装置。
【請求項20】
請求項17に記載のメモリ装置であって、
前記コントローラは、前記推定処理において、
前記ステータス情報が前記第1ステータス情報を示し、前記第1更新管理領域内のデータを誤り訂正復号化することによって得られる復号化データが前記第1管理領域内のデータと一致せず、前記第2更新管理領域に前記第2誤り訂正符号が記憶されている場合には、前記第2結果に基づいて前記誤り原因を推定し、
前記ステータス情報が前記第2ステータス情報を示し、前記第2更新管理領域内のデータを誤り訂正復号化することによって得られる復号化データが前記第1管理領域内のデータと一致せず、前記第3更新管理領域に前記第3誤り訂正符号が記憶されている場合には、前記第3結果に基づいて前記誤り原因を推定する、メモリ装置。
【請求項21】
請求項17に記載のメモリ装置であって、
前記コントローラは、前記推定処理において、
前記ステータス情報が前記第1ステータス情報を示し、前記第1更新管理領域内のデータを誤り訂正復号化することによって得られる復号化データが前記第1管理領域内のデータと一致せず、前記第2更新管理領域に前記第2誤り訂正符号が記憶されていない場合には、前記第1結果に基づいて前記誤り原因を推定し、
前記ステータス情報が前記第2ステータス情報を示し、前記第2更新管理領域内のデータを誤り訂正復号化することによって得られる復号化データが前記第1管理領域内のデータと一致せず、前記第3更新管理領域に前記第3誤り訂正符号が記憶されていない場合には、前記第2結果に基づいて前記誤り原因を推定し、
前記ステータス情報が前記第3ステータス情報を示し、前記第3更新管理領域内のデータを誤り訂正復号化することによって得られる復号化データが前記第1管理領域内のデータと一致しない場合には、前記第3結果に基づいて前記誤り原因を推定する、メモリ装置。
【請求項22】
請求項4乃至請求項21のいずれか一つに記載のメモリ装置であって、
前記コントローラは、前記ホストデータ領域に記憶される前記出力データを誤り訂正符号化して得られる第4誤り訂正符号を、前記管理領域における、前記第1及び第2管理領域以外の領域に書き込む、メモリ装置。
【請求項23】
請求項4乃至請求項22のいずれか一つに記載のメモリ装置であって、
前記管理領域に対して情報の書き込みが行われる第1期間の後に、前記消去待ち領域のデータの消去が行われる第2期間が発生し、当該第2期間の後に、前記管理領域に対して情報の書き込みが行われる第3期間が発生し、
前記第2期間での前記メモリ装置の消費電流は、前記第1期間での当該消費電流よりも大きくなり、前記第3期間での当該消費電流は、前記第2期間での当該消費電流よりも小さくなる、メモリ装置。
【請求項24】
請求項1乃至請求項4及び請求項6のいずれか一つに記載のメモリ装置であって、
前記コントローラは、前記第1モードで動作する場合、前記第2モードで動作することを指示する指示コマンドを前記ホスト装置から受け取ると、前記動作モードを前記第2モードに変更する、メモリ装置。
【請求項25】
請求項1乃至請求項24のいずれか一つに記載のメモリ装置であって、
それぞれが、前記第1テーブルに登録されている前記物理アドレス以外の前記物理アドレスである複数の第2物理アドレスが登録される第2テーブルをさらに備え、
前記複数の第2物理アドレスには順番が割り当てられ、
前記コントローラは、前記複数の第2物理アドレスの一つを指し示す第1ポインタと、前記複数の第2物理アドレスの一つを指し示す第2ポインタのそれぞれを、前記順番で循環して移動し、
前記複数の第2物理アドレスを前記順番で循環して見る場合において、前記第1ポインタが指し示す前記第2物理アドレスから、前記第2ポインタが指し示す前記第2物理アドレスよりも一つ前の前記第2物理アドレスまでが、前記消去済み領域の前記物理アドレスであって、前記第2ポインタが指し示す前記第2物理アドレスから、前記第1ポインタが指し示す前記第2物理アドレスよりも一つ前の前記第2物理アドレスまでが、前記消去待ち領域の前記物理アドレスであって、
前記第1モードの前記コントローラは、前記消去コマンドを受け取ると、前記第1テーブルにおいて、前記第1物理アドレスを、前記第1ポインタが指し示す、前記消去済み領域の前記第2物理アドレスである第3物理アドレスに置き換え、前記第2テーブルにおいて、当該第3物理アドレスを、当該第1物理アドレスに置き換え、次の前記第2物理アドレスを指し示すように前記第1ポインタを移動し、
前記第2モードの前記コントローラは、前記第2ポインタが指し示す前記第2物理アドレスの前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定し、次の前記第2物理アドレスを示すように前記第2ポインタを移動する、メモリ装置。
【請求項26】
請求項1乃至請求項25のいずれか一つに記載のメモリ装置が備えるコントローラ。
【請求項27】
請求項1乃至請求項4のいずれか一つに記載のメモリ装置を制御するホスト装置であって、
前記解除コマンドを出力する、ホスト装置。
【請求項28】
請求項24に記載のメモリ装置を制御するホスト装置であって、
前記指示コマンドを出力する、ホスト装置。
【請求項29】
請求項1乃至請求項25のいずれか一つに記載のメモリ装置と、
前記メモリ装置を制御し、前記消去コマンド及び前記書き込みコマンドを出力するホスト装置と
を備える、データ処理システム。
【請求項30】
それぞれがデータ消去単位となり、ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、当該複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと論理アドレスとの対応関係を示すテーブルとを備え、当該ホスト装置によって制御されるメモリ装置を制御するための制御プログラムであって、
前記メモリ装置に、
(a)第1モードで動作する工程と、
(b)第2モードで動作する工程と、
(c)第3モードで動作する工程と
を実行させ、
前記工程(a)において、
(a−1)前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取る工程と、
(a−2)前記工程(a−1)の後に、前記テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定する工程と、
(a−3)前記工程(a−1)の後に、前記テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定する工程と、
(a−4)前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込む工程と
を実行させ、
前記工程(b)において、(b−1)前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定する工程を実行させ、
(d)前記第2モードで動作する場合、前記消去待ち領域のデータを消去している最中に前記第2モードの解除を指示する解除コマンドを前記ホスト装置から受け取ると、前記動作モードを前記第2モードから前記第3モードに変更する工程と、
(e)前記第3モードで動作する場合、前記消去待ち領域の未消去のデータを消去して当該消去待ち領域を前記消去済み領域に設定し、前記動作モードを前記第3モードから前記第1モードに変更する工程と
を実行させるための制御プログラム。
【請求項31】
それぞれがデータ消去単位となり、ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、当該複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと論理アドレスとの対応関係を示すテーブルとを備え、当該ホスト装置によって制御されるメモリ装置を制御するための制御プログラムであって、
前記メモリ装置に、
(a)前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取る工程と、
(b)前記工程(a)の後に、前記テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定する工程と、
(c)前記工程(a)の後に、前記テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定する工程と、
(d)前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記第1テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込む工程と、
(e)前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定する工程と
を実行させ、
前記複数の消去単位領域のそれぞれは、前記出力データが書き込まれるホストデータ領域と、当該消去単位領域の状態を管理するための管理領域とを有し、
前記管理領域は、
当該管理領域を含む前記消去単位領域が、前記アクセス領域であるのか、前記消去済み領域であるのか、前記消去待ち領域であるのかを示すステータス情報を記憶する第1管理領域と、
前記ステータス情報の更新状況を示す第2管理領域と
を有し、
前記第2管理領域は、前記消去済み領域、前記アクセス領域及び前記消去待ち領域にそれぞれ対応する第1乃至第3更新管理領域を含み、
(f)前記ステータス情報を、前記消去単位領域が前記消去済み領域であることを示す第1ステータス情報に書き換える際には、第1所定情報を前記第1更新管理領域に書き込む工程と、
(g)前記ステータス情報を、前記消去単位領域が前記アクセス領域であることを示す第2ステータス情報に書き換える際には、第2所定情報を前記第2更新管理領域に書き込む工程と、
(h)前記ステータス情報を、前記消去単位領域が前記消去待ち領域であることを示す第3ステータス情報に書き換える際には、第3所定情報を前記第3更新管理領域に書き込む工程と、
(i)前記ステータス情報が正しいか否かを、前記第1乃至第3更新管理領域内の情報に基づいて判定する正否判定を行う工程と
を実行させるための制御プログラム。
【請求項32】
請求項1乃至請求項4のいずれか一つに記載のメモリ装置を制御するホスト装置を制御するための制御プログラムであって、
前記ホスト装置に前記解除コマンドを出力させるための制御プログラム。
【請求項33】
請求項24に記載のメモリ装置を制御するホスト装置を制御するための制御プログラムであって、
前記ホスト装置に前記指示コマンドを出力させるための制御プログラム。
【請求項34】
それぞれがデータ消去単位となり、ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、当該複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと論理アドレスとの対応関係を示すテーブルとを備え、当該ホスト装置によって制御されるメモリ装置の動作方法であって、
(a)第1モードで動作する工程と、
(b)第2モードで動作する工程と、
(c)第3モードで動作する工程と
を備え、
前記工程(a)は、
(a−1)前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取る工程と、
(a−2)前記工程(a−1)の後に、前記テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定する工程と、
(a−3)前記工程(a−1)の後に、前記テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定する工程と、
(a−4)前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する出力データを書き込む工程と
を有し、
前記工程(b)は、(b−1)前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定する工程を有し、
(d)前記第2モードで動作する場合、前記消去待ち領域のデータを消去している最中に前記第2モードの解除を指示する解除コマンドを前記ホスト装置から受け取ると、前記動作モードを前記第2モードから前記第3モードに変更する工程と、
(e)前記第3モードで動作する場合、前記消去待ち領域の未消去のデータを消去して当該消去待ち領域を前記消去済み領域に設定し、前記動作モードを前記第3モードから前記第1モードに変更する工程と
をさらに備える、メモリ装置の動作方法。
【請求項35】
それぞれがデータ消去単位となり、ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、当該複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと論理アドレスとの対応関係を示すテーブルとを備え、当該ホスト装置によって制御されるメモリ装置の動作方法であって、
(a)前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取る工程と、
(b)前記工程(a)の後に、前記テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定する工程と、
(c)前記工程(a)の後に、前記テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定する工程と、
(d)前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記第1テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込む工程と、
(e)前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定する工程と
を備え、
前記複数の消去単位領域のそれぞれは、前記出力データが書き込まれるホストデータ領域と、当該消去単位領域の状態を管理するための管理領域とを有し、
前記管理領域は、
当該管理領域を含む前記消去単位領域が、前記アクセス領域であるのか、前記消去済み領域であるのか、前記消去待ち領域であるのかを示すステータス情報を記憶する第1管理領域と、
前記ステータス情報の更新状況を示す第2管理領域と
を有し、
前記第2管理領域は、前記消去済み領域、前記アクセス領域及び前記消去待ち領域にそれぞれ対応する第1乃至第3更新管理領域を含み、
(f)前記ステータス情報を、前記消去単位領域が前記消去済み領域であることを示す第1ステータス情報に書き換える際には、第1所定情報を前記第1更新管理領域に書き込む工程と、
(g)前記ステータス情報を、前記消去単位領域が前記アクセス領域であることを示す第2ステータス情報に書き換える際には、第2所定情報を前記第2更新管理領域に書き込む工程と、
(h)前記ステータス情報を、前記消去単位領域が前記消去待ち領域であることを示す第3ステータス情報に書き換える際には、第3所定情報を前記第3更新管理領域に書き込む工程と、
(i)前記ステータス情報が正しいか否かを、前記第1乃至第3更新管理領域内の情報に基づいて判定する正否判定を行う工程と
をさらに備える、メモリ装置の動作方法。
【請求項36】
請求項1乃至請求項4のいずれか一つに記載のメモリ装置を制御するホスト装置の動作方法であって、
前記解除コマンドを出力する工程を備える、ホスト装置の動作方法。
【請求項37】
請求項24に記載のメモリ装置を制御するホスト装置の動作方法であって、
前記指示コマンドを出力する工程を備える、ホスト装置の動作方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ装置に関する。
【背景技術】
【0002】
特許文献1及び2に記載されているように、従来からメモリ装置に関して様々な技術が提案されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3450071号公報
【特許文献2】特許第5162846号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
さて、メモリ装置については、その性能の向上が望まれる。
【0005】
そこで、本発明は上述の点に鑑みて成されたものであり、メモリ装置の性能の向上を図ることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
メモリ装置の一態様は、ホスト装置によって制御されるメモリ装置であって、それぞれがデータ消去単位となり、前記ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、前記メモリコアを制御するコントローラと、前記複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと、論理アドレスとの対応関係を示す第1テーブルとを備え、前記コントローラの動作モードには、第1〜第3モードが含まれ、前記第1モードの前記コントローラは、前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取ると、前記第1テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定し、前記第1テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定し、前記第1モードの前記コントローラは、前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスを受け取ると、前記第1テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込み、前記第2モードの前記コントローラは、前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定し、前記コントローラは、前記第2モードで動作する場合、前記消去待ち領域のデータを消去している最中に前記第2モードの解除を指示する解除コマンドを前記ホスト装置から受け取ると、前記動作モードを前記第2モードから前記第3モードに変更し、前記コントローラは、前記第3モードで動作する場合、前記消去待ち領域の未消去のデータを消去して当該消去待ち領域を前記消去済み領域に設定し、前記動作モードを前記第3モードから前記第1モードに変更する。
【0007】
また、メモリ装置の一態様は、ホスト装置によって制御されるメモリ装置であって、それぞれがデータ消去単位となり、前記ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、前記メモリコアを制御するコントローラと、前記複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと、論理アドレスとの対応関係を示す第1テーブルとを備え、前記コントローラは、前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取ると、前記第1テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定し、前記第1テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定し、前記コントローラは、前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記第1テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込み、前記コントローラは、前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定し、前記複数の消去単位領域のそれぞれは、前記出力データが書き込まれるホストデータ領域と、当該消去単位領域の状態を管理するための管理領域とを有し、前記管理領域は、当該管理領域を含む前記消去単位領域が、前記アクセス領域であるのか、前記消去済み領域であるのか、前記消去待ち領域であるのかを示すステータス情報を記憶する第1管理領域と、前記ステータス情報の更新状況を示す第2管理領域とを有し、前記第2管理領域は、前記消去済み領域、前記アクセス領域及び前記消去待ち領域にそれぞれ対応する第1乃至第3更新管理領域を含み、前記コントローラは、前記ステータス情報を、前記消去単位領域が前記消去済み領域であることを示す第1ステータス情報に書き換える際には、第1所定情報を前記第1更新管理領域に書き込み、前記ステータス情報を、前記消去単位領域が前記アクセス領域であることを示す第2ステータス情報に書き換える際には、第2所定情報を前記第2更新管理領域に書き込み、前記ステータス情報を、前記消去単位領域が前記消去待ち領域であることを示す第3ステータス情報に書き換える際には、第3所定情報を前記第3更新管理領域に書き込み、前記コントローラは、前記ステータス情報が正しいか否かを、前記第1乃至第3更新管理領域内の情報に基づいて判定する正否判定を行う。
【0008】
また、コントローラの一態様は、上記のメモリ装置が備えるコントローラである。
【0009】
また、ホスト装置の一態様は、上記のメモリ装置を制御するホスト装置であって、前記解除コマンドを出力する。
【0010】
また、ホスト装置の一態様は、上記のメモリ装置を制御するホスト装置であって、前記指示コマンドを出力する。
【0011】
また、データ処理システムの一態様は、上記のメモリ装置と、前記メモリ装置を制御し、前記消去コマンド及び前記書き込みコマンドを出力するホスト装置とを備える。
【0012】
また、制御プログラムの一態様は、それぞれがデータ消去単位となり、ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、当該複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと論理アドレスとの対応関係を示すテーブルとを備え、当該ホスト装置によって制御されるメモリ装置を制御するための制御プログラムであって、前記メモリ装置に、(a)第1モードで動作する工程と、(b)第2モードで動作する工程と、(c)第3モードで動作する工程とを実行させ、前記工程(a)において、(a−1)前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取る工程と、(a−2)前記工程(a−1)の後に、前記テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定する工程と、(a−3)前記工程(a−1)の後に、前記テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定する工程と、(a−4)前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込む工程とを実行させ、前記工程(b)において、(b−1)前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定する工程を実行させ、(d)前記第2モードで動作する場合、前記消去待ち領域のデータを消去している最中に前記第2モードの解除を指示する解除コマンドを前記ホスト装置から受け取ると、前記動作モードを前記第2モードから前記第3モードに変更する工程と、(e)前記第3モードで動作する場合、前記消去待ち領域の未消去のデータを消去して当該消去待ち領域を前記消去済み領域に設定し、前記動作モードを前記第3モードから前記第1モードに変更する工程とを実行させるためのものである。
【0013】
また、制御プログラムの一態様は、それぞれがデータ消去単位となり、ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、当該複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと論理アドレスとの対応関係を示すテーブルとを備え、当該ホスト装置によって制御されるメモリ装置を制御するための制御プログラムであって、前記メモリ装置に、(a)前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取る工程と、(b)前記工程(a)の後に、前記テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定する工程と、(c)前記工程(a)の後に、前記テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定する工程と、(d)前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記第1テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込む工程と、(e)前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定する工程とを実行させ、前記複数の消去単位領域のそれぞれは、前記出力データが書き込まれるホストデータ領域と、当該消去単位領域の状態を管理するための管理領域とを有し、前記管理領域は、当該管理領域を含む前記消去単位領域が、前記アクセス領域であるのか、前記消去済み領域であるのか、前記消去待ち領域であるのかを示すステータス情報を記憶する第1管理領域と、前記ステータス情報の更新状況を示す第2管理領域とを有し、前記第2管理領域は、前記消去済み領域、前記アクセス領域及び前記消去待ち領域にそれぞれ対応する第1乃至第3更新管理領域を含み、(f)前記ステータス情報を、前記消去単位領域が前記消去済み領域であることを示す第1ステータス情報に書き換える際には、第1所定情報を前記第1更新管理領域に書き込む工程と、(g)前記ステータス情報を、前記消去単位領域が前記アクセス領域であることを示す第2ステータス情報に書き換える際には、第2所定情報を前記第2更新管理領域に書き込む工程と、(h)前記ステータス情報を、前記消去単位領域が前記消去待ち領域であることを示す第3ステータス情報に書き換える際には、第3所定情報を前記第3更新管理領域に書き込む工程と、(i)前記ステータス情報が正しいか否かを、前記第1乃至第3更新管理領域内の情報に基づいて判定する正否判定を行う工程とを実行させるためのものである。
【0014】
また、制御プログラムの一態様は、上記のメモリ装置を制御するホスト装置を制御するための制御プログラムであって、前記ホスト装置に前記解除コマンドを出力させるためのものである。
【0015】
また、制御プログラムの一態様は、上記のメモリ装置を制御するホスト装置を制御するための制御プログラムであって、前記ホスト装置に前記指示コマンドを出力させるためのものである。
【0016】
また、メモリ装置の動作方法の一態様は、それぞれがデータ消去単位となり、ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、当該複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと論理アドレスとの対応関係を示すテーブルとを備え、当該ホスト装置によって制御されるメモリ装置の動作方法であって、(a)第1モードで動作する工程と、(b)第2モードで動作する工程と、(c)第3モードで動作する工程とを備え、前記工程(a)は、(a−1)前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取る工程と、(a−2)前記工程(a−1)の後に、前記テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定する工程と、(a−3)前記工程(a−1)の後に、前記テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定する工程と、(a−4)前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する出力データを書き込む工程とを有し、前記工程(b)は、(b−1)前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定する工程を有し、(d)前記第2モードで動作する場合、前記消去待ち領域のデータを消去している最中に前記第2モードの解除を指示する解除コマンドを前記ホスト装置から受け取ると、前記動作モードを前記第2モードから前記第3モードに変更する工程と、(e)前記第3モードで動作する場合、前記消去待ち領域の未消去のデータを消去して当該消去待ち領域を前記消去済み領域に設定し、前記動作モードを前記第3モードから前記第1モードに変更する工程とをさらに備える。
【0017】
また、メモリ装置の動作方法の一態様は、それぞれがデータ消去単位となり、ホスト装置が出力する出力データが書き込まれる複数の消去単位領域を含む記憶領域を有するメモリコアと、当該複数の消去単位領域にそれぞれ割り当てられた複数の物理アドレスの一部の各物理アドレスと論理アドレスとの対応関係を示すテーブルとを備え、当該ホスト装置によって制御されるメモリ装置の動作方法であって、(a)前記ホスト装置が出力する、データ消去を指示する消去コマンドと、当該消去コマンドとともに前記ホスト装置が出力する前記論理アドレスである第1論理アドレスとを受け取る工程と、(b)前記工程(a)の後に、前記テーブルにおいて前記第1論理アドレスに対応付けられている前記物理アドレスである第1物理アドレスが割り当てられた前記消去単位領域のデータを消去せずに、当該消去単位領域をデータの消去待ち領域に設定する工程と、(c)前記工程(a)の後に、前記テーブルにおいて、前記第1物理アドレスを、データ消去済みの前記消去単位領域である消去済み領域に割り当てられた前記物理アドレスに置き換え、当該消去済み領域を、前記ホスト装置がデータを書き込むことが可能なアクセス領域に設定する工程と、(d)前記ホスト装置が出力する、データ書き込みを指示する書き込みコマンドと、当該書き込みコマンドとともに前記ホスト装置が出力する前記論理アドレスである第2論理アドレスとを受け取ると、前記第1テーブルにおいて当該第2論理アドレスに対応付けられている前記物理アドレスが割り当てられた前記アクセス領域に、前記ホスト装置が出力する前記出力データを書き込む工程と、(e)前記消去待ち領域のデータを消去して、当該消去待ち領域を前記消去済み領域に設定する工程とを備え、前記複数の消去単位領域のそれぞれは、前記出力データが書き込まれるホストデータ領域と、当該消去単位領域の状態を管理するための管理領域とを有し、前記管理領域は、当該管理領域を含む前記消去単位領域が、前記アクセス領域であるのか、前記消去済み領域であるのか、前記消去待ち領域であるのかを示すステータス情報を記憶する第1管理領域と、前記ステータス情報の更新状況を示す第2管理領域とを有し、前記第2管理領域は、前記消去済み領域、前記アクセス領域及び前記消去待ち領域にそれぞれ対応する第1乃至第3更新管理領域を含み、(f)前記ステータス情報を、前記消去単位領域が前記消去済み領域であることを示す第1ステータス情報に書き換える際には、第1所定情報を前記第1更新管理領域に書き込む工程と、(g)前記ステータス情報を、前記消去単位領域が前記アクセス領域であることを示す第2ステータス情報に書き換える際には、第2所定情報を前記第2更新管理領域に書き込む工程と、(h)前記ステータス情報を、前記消去単位領域が前記消去待ち領域であることを示す第3ステータス情報に書き換える際には、第3所定情報を前記第3更新管理領域に書き込む工程と、(i)前記ステータス情報が正しいか否かを、前記第1乃至第3更新管理領域内の情報に基づいて判定する正否判定を行う工程とをさらに備える。
【0018】
また、ホスト装置の動作方法の一態様は、上記のメモリ装置を制御するホスト装置の動作方法であって、前記解除コマンドを出力する工程を備える。
【0019】
また、ホスト装置の動作方法の一態様は、上記のメモリ装置を制御するホスト装置の動作方法であって、前記指示コマンドを出力する工程を備える。
【発明の効果】
【0020】
メモリ装置の性能が向上する。
【図面の簡単な説明】
【0021】
図1】データ処理システムの構成の一例を示す図である。
図2】記憶領域の構成の一例を示す図である。
図3】セクタの構成の一例を示す図である。
図4】動作モードの一例を示す図である。
図5】論物変換テーブル(L2Pテーブル)の一例を示す図である。
図6】管理テーブルの一例を示す図である。
図7】メモリ装置の動作の一例を説明するための図である。
図8】メモリ装置の動作の一例を説明するための図である。
図9】セクタ内のデータの一例を図である。
図10】メモリ装置の動作の一例を説明するための図である。
図11】メモリ装置の動作の一例を説明するための図である。
図12】メモリ装置の動作の一例を示すフローチャートである。
図13】メモリ装置の動作の一例を説明するための図である。
図14】メモリ装置の動作の一例を説明するための図である。
図15】メモリ装置の動作の一例を説明するための図である。
図16】メモリ装置の動作の一例を説明するための図である。
図17】メモリ装置の動作の一例を説明するための図である。
図18】メモリ装置の動作の一例を説明するための図である。
図19】メモリ装置の動作の一例を説明するための図である。
図20】メモリ装置の動作の一例を示すフローチャートである。
図21】メモリ装置の動作の一例を説明するための図である。
図22】メモリ装置の動作の一例を説明するための図である。
図23】メモリ装置の動作の一例を説明するための図である。
図24】メモリ装置の動作の一例を説明するための図である。
図25】メモリ装置の動作の一例を説明するための図である。
図26】メモリ装置の動作の一例を説明するための図である。
図27】メモリ装置の動作の一例を説明するための図である。
図28】メモリ装置の動作の一例を説明するための図である。
図29】メモリ装置の動作の一例を説明するための図である。
図30】メモリ装置の動作の一例を説明するための図である。
図31】メモリ装置の動作の一例を示すフローチャートである。
図32】メモリ装置の動作の一例を説明するための図である。
図33】メモリ装置の動作の一例を説明するための図である。
図34】メモリ装置の動作の一例を説明するための図である。
図35】メモリ装置の動作の一例を説明するための図である。
図36】メモリ装置の消費電流波形の一例を示す図である。
図37】メモリ装置の動作の一例を示すフローチャートである。
図38】ホスト装置の動作の一例を示すフローチャートである。
図39】メモリ装置の動作の一例を示すフローチャートである。
図40】メモリ装置の動作の一例を示すフローチャートである。
図41】メモリ装置の動作の一例を示すフローチャートである。
図42】メモリ装置の動作の一例を示すフローチャートである。
図43】メモリ装置の動作の一例を示すフローチャートである。
図44】メモリ装置の動作の一例を示すフローチャートである。
図45】メモリ装置の動作の一例を示すフローチャートである。
図46】メモリ装置の動作の一例を示すフローチャートである。
図47】セクタ内のデータの一例を示す図である。
図48】セクタ内のデータの一例を示す図である。
図49】セクタ内のデータの一例を示す図である。
図50】セクタ内のデータの一例を示す図である。
図51】セクタ内のデータの一例を示す図である。
図52】セクタ内のデータの一例を示す図である。
図53】セクタ内のデータの一例を示す図である。
図54】セクタ内のデータの一例を示す図である。
図55】セクタ内のデータの一例を示す図である。
図56】セクタ内のデータの一例を示す図である。
図57】セクタ内のデータの一例を示す図である。
図58】メモリ装置の動作の一例を説明するための図である。
図59】メモリ装置の動作の一例を説明するための図である。
【発明を実施するための形態】
【0022】
<データ処理システムの全体構成>
図1はデータ処理システム1の構成の一例を示す図である。データ処理システム1は、ホスト装置2と、メモリ装置3とを備えている。ホスト装置2は、メモリ装置3を制御する上位装置である。メモリ装置3は、例えば不揮発性メモリ装置である。メモリ装置3は、例えば、SPI(Serial Peripheral Interface)フラッシュメモリである。メモリ装置3はメモリコア4を有する。メモリ装置3は、例えば1つの半導体チップで構成されている。なおメモリ装置3は、複数の半導体チップで構成されてもよい。メモリ装置3は半導体メモリ装置であると言える。
【0023】
ホスト装置2は、データ処理システム1全体の動作を統括的に管理する。ホスト装置2は、データ処理システム1の本体装置であると言える。ホスト装置2は、メモリ装置3からデータを読み出したり、メモリ装置3にデータを書き込んだりすることが可能である。例えば、ホスト装置2がメモリ装置3に対してデータの読み出しを指示すると、メモリ装置3は、メモリコア4内のデータを読み出してホスト装置2に出力する。また、ホスト装置2がデータの書き込みを指示すると、メモリ装置3は、ホスト装置2からのデータをメモリコア4内に書き込む。
【0024】
メモリコア4は、ホスト装置2が出力するデータ210(以後、「ホスト出力データ210」あるいは「出力データ210」と呼ぶ)を記憶する。データ処理システム1が例えばスマートフォン、タブレット等の携帯型電子機器である場合、ホスト出力データ210は、例えば、任意のアプリケーションプログラムの進行中に生成されるセーブデータである。この場合、アプリケーションプログラムは、例えば、メモリ装置3とは別に設けられた、メモリカード等のメモリ装置に記憶される。携帯型電子機器本体として機能するホスト装置2が、メモリカード等から読み出したアプリケーションプログラムを実行することによって、データ処理システム1ではアプリケーションプログラムが進行する。なお、データ処理システム1は携帯型電子機器以外であってもよいし、ホスト出力データ210はセーブデータ以外のデータであってもよい。
【0025】
<ホスト装置の構成>
ホスト装置2は、一種のコンピュータ装置であって、コントローラ20、記憶部22及びI/F回路23を備える。コントローラ20は、例えば、マイクロプロセッサ21等を備えており、ホスト装置2の動作を統括的に管理する。記憶部22は、ROM(Read Only Memory)及びRAM(Random Access Memory)等の、マイクロプロセッサ21が読み取り可能な非一時的な記録媒体で構成されている。記憶部22には、ホスト装置2の動作を制御するための制御プログラム200等が記憶されている。ホスト装置2の各種機能は、マイクロプロセッサ21が記憶部22内の制御プログラム200を実行することによって実現される。I/F回路23は、ホスト装置2とメモリ装置3と接続するための回路であって、メモリ装置3からの信号をコントローラ20に入力したり、コントローラ20からの信号をメモリ装置3に出力したりする。
【0026】
コントローラ20は、メモリ装置3に対して指示を行うための各種コマンドを生成して出力する。コントローラ20が出力するコマンドは、I/F回路23からメモリ装置3に入力される。またコントローラ20は、I/F回路23が出力する、メモリ装置3から読み出されたデータに対して各種処理を行う。
【0027】
なお、コントローラ20の全ての機能あるいはコントローラ20の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また、記憶部22は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。記憶部22は、例えば、小型のハードディスクドライブ及びSSD(Solid State Drive)等を備えてもよい。
【0028】
<メモリ装置の構成>
メモリ装置3は、コントローラ30、揮発性メモリ32、I/F回路33及びメモリコア4を備えている。コントローラ30は、例えば、マイクロプロセッサ31等を備えており、メモリ装置3の動作を統括的に管理する。I/F回路33は、メモリ装置3とホスト装置2とを接続するための回路であって、ホスト装置2からの信号をコントローラ30に入力したり、コントローラ30からの信号をホスト装置2に出力したりする。コントローラ30は、I/F回路33から出力される、ホスト装置2からのコマンドに応じた処理を行う。
【0029】
揮発性メモリ32は、例えばSRAM(Static RAM)であって、コントローラ30がデータ処理する際のワークメモリ等として機能する。なお、揮発性メモリ32は、DRAM(Dynamic RAM)であってもよい。
【0030】
メモリコア4の記憶領域5には、ホスト出力データ210以外にも、メモリ装置3の動作を制御するための制御プログラム300が記憶されている。メモリ装置3の各種機能は、マイクロプロセッサ31が記憶領域5内の制御プログラム300を実行することによって実現される。メモリコア4は、マイクロプロセッサ31が読み取り可能な非一時的な記録媒体であると言える。
【0031】
なお、コントローラ30の全ての機能あるいはコントローラ30の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。
【0032】
<メモリコアの記憶領域の構成>
図2はメモリコア4の記憶領域5の構成の一例を示す図である。図2に示されるように、記憶領域5は、N個(N≧2)のセクタ50で構成されている。本例では、N=512であるが、Nは512以外の値であってもよい。データ処理システム1では、記憶領域5内のデータはセクタ50単位で消去される。したがって、各セクタ50は、データ消去単位である消去単位領域であると言える。
【0033】
記憶領域5がN個のセクタ50に対しては、N個の物理アドレス(「物理ADD」と表されることがある)がそれぞれ割り当てられている。本例では、512個のセクタ50に対して、000h〜1FFh(hは16進数を示す)の物理アドレスがそれぞれ割り当てられている。
【0034】
ホスト装置2は、物理アドレス000h〜1EFhの496個のセクタ50で構成される第1部分記憶領域5Aに対してアクセスすることが可能である。一方で、ホスト装置2は、物理アドレス1F0h〜1FFhの16個のセクタ50で構成される第2部分記憶領域5Bに対してアクセスすることができない。第2部分記憶領域5Bには、制御プログラム300がファームウェアとして記憶される。
【0035】
各セクタ50は、ユーザデータ領域50Aと、冗長領域50Bとを備えている。コントローラ30は、第1部分記憶領域5Aの各セクタ50のユーザデータ領域50Aに対して、ホスト装置2からの出力データ210を書き込むことが可能である。
【0036】
図3は各セクタ50の構成の一例を示す図である。図3に示されるように、各セクタ50はM個(M≧2)のページPGで構成されている。本例では、M=8であるが、Mは8以外の値であってもよい。データ処理システム1では、記憶領域5に対するデータ書き込み及びデータ読み出しは、ページPG単位で行うことが可能である。またデータ処理システム1では、ユーザデータ領域50A及び冗長領域50Bのそれぞれに対して、独立して、データ書き込み及びデータ読み出しを行うことができる。本例では、セクタ50を構成する8個のページPGに対して、0番から7番までの番号が割り当てられている。以後、m番(0≦m≦7)のページPGを「ページm」と呼ぶことがある。
【0037】
本例では、メモリ装置3はフラッシュメモリであるため、コントローラ30は、セクタ50にデータを書き込む場合には、当該セクタ50のデータを消去した上で当該セクタ50にデータを書き込む必要がある。データ書き込みは「プログラム」と呼ばれることがある。
【0038】
本例では、第1部分記憶領域5Aを構成する496個のセクタ50のうち、256個のセクタ50が、R/Wアクセスセクタ50として使用される。一方で、当該496個のセクタ50のうち、240個のセクタ50のそれぞれが、消去済みセクタ50あるいは消去待ちセクタ50として使用される。
【0039】
ここで、R/Wアクセスセクタ50とは、ホスト装置2がコントローラ30を通じてデータ書き込み及びデータ読み出しを行うことが可能なセクタ50である。R/Wアクセスセクタ50は、ホスト装置2がコントローラ30を通じてデータ書き込み及びデータ読み出しを行うことが可能な消去単位領域であるホストアクセス領域と言える。
【0040】
消去済みセクタ50はデータ消去済みのセクタ50である。ホスト装置2は消去済みセクタ50にアクセスできない。消去済みセクタ50は、データ消去済みの消去単位領域である消去済み領域と言える。
【0041】
消去待ちセクタ50はデータ消去待ちのセクタ50である。ホスト装置2は消去待ちセクタ50にアクセスできない。消去待ちセクタ50は、データ消去待ちの消去単位領域である消去待ち領域と言える。
【0042】
後述のように、データ処理システム1が動作しているときには、第1部分記憶領域5Aのセクタ50は、R/Wアクセスセクタ50から消去待ちセクタ50に変化することがある。また、第1部分記憶領域5Aのセクタ50は、消去待ちセクタ50から消去済みセクタ50に変化することがある。そして、第1部分記憶領域5Aのセクタ50は、消去済みセクタ50からR/Wアクセスセクタ50に変化することがある。データ処理システム1が動作しているときには、第1部分記憶領域5Aのセクタ50は、R/Wアクセスセクタ50、消去待ちセクタ50及び消去済みセクタ50の順に繰り返し変化することがある。以後、単にセクタ50と言えば、第1部分記憶領域5Aのセクタ50を意味する。
【0043】
<メモリ装置の動作モードについて>
図4はコントローラ30の動作モードの一例を示す図である。コントローラ30の動作モードには、スタンバイモード、アイドルイレースモード(以後、「IEモード」と呼ぶ)及びリリースアイドルイレースモード(以後、「RIEモード」と呼ぶ)が含まれる。スタンバイモード、IEモード及びRIEモードは、メモリ装置3の動作モードとして見ることができる。なお、コントローラ30の動作モードには、他のモードが含まれてもよい。
【0044】
スタンバイモードのコントローラ30は、ホスト装置2からの書き込みコマンド、読み出しコマンド及び消去コマンドを受け付けることが可能である。書き込みコマンドは、セクタ50に対するデータ書き込みを指示するコマンドである。ホスト装置2は、書き込みコマンドを使用して、ページPG単位でメモリコア4に対してデータを書き込むことができる。書き込みコマンドはページプログラムコマンド(PPコマンド)と呼ばれることがある。読み出しコマンドは、セクタ50からのデータ読み出しを指示するコマンドである。ホスト装置2は、読み出しコマンドを使用して、ページPG単位でメモリコア4からデータを読み出すことができる。消去コマンドは、セクタ50のデータの消去を指示するコマンドであって、セクタイレースコマンド(SEコマンド)と呼ばれることがある。
【0045】
コントローラ30は、書き込みコマンドを受け取ると、ホスト装置2が指定するセクタ50のページPGに、ホスト装置2が出力するデータを書き込む。またコントローラ30は、読み出しコマンドを受け取ると、ホスト装置2が指定するセクタ50のページPGからデータを読み出し、読み出したデータをI/F回路33を通じてホスト装置2に出力する。
【0046】
また、スタンバイモードのコントローラ30は、ホスト装置2が出力する、IEモードで動作することを指示する指示コマンドであるIEコマンドを受け付けることができる。コントローラ30は、IEコマンドを受け付けると、動作モードを、スタンバイモードからIEモードに変更する。
【0047】
IEモードのコントローラ30は、消去待ちセクタ50のデータを消去する。そして、IEモードのコントローラ30は、データを消去した消去待ちセクタ50を消去済みセクタ50に設定する。
【0048】
また、IEモードのコントローラ30は、ホスト装置2が出力する、IEモードの解除を指示する解除コマンドであるRIEコマンドを受け付けることが可能である。コントローラ30は、RIEコマンドを受け付けると、動作モードを、IEモードからRIEモードに変更した後、スタンバイモードに変更する。
【0049】
RIEモードのコントローラ30は、IEモードにおいてデータが途中まで消去された消去待ちセクタ50が存在する場合には、当該消去待ちセクタ50の未消去のデータを消去する。そして、コントローラ30は、未消去のデータを消去した消去待ちセクタ50を消去済みセクタ50に設定する。その後、コントローラ30は、動作モードをスタンバイモードに変更する。また、コントローラ30は、データが途中まで消去された消去待ちセクタ50が存在しない場合には、特に処理を行わずに、動作モードをスタンバイモードに変更する。
【0050】
本例では、スタンバイモードのコントローラ30は、ホスト装置2から消去コマンドを受け取ると、ホスト装置2から指定されたセクタ50のデータを消去する替りに、消去済みセクタ50をR/Wアクセスセクタ50に変更する。これにより、ホスト装置2から見れば、指定したセクタ50のデータが消去されたように見える。そして、コントローラ30は、データを消去しなかったセクタ50を消去待ちセクタ50とし、IEモードにおいて当該消去待ちセクタ50のデータを消去する。
【0051】
なお、スタンバイモード、IEモード及びRIEモードのコントローラ30の動作については後で詳細に説明する。
【0052】
<メモリ装置が使用するテーブルについて>
コントローラ30は、2種類のテーブルを使用して、ホスト装置2からのコマンドに応じてメモリコア4にアクセスする。具体的には、コントローラ30は、R/Wアクセスセクタ50の物理アドレスと論理アドレス(「論理ADD」と表されることがある)との対応関係を示す論物変換テーブル(以後、「L2Pテーブル」と呼ぶ)60と、消去済みセクタ50及び消去待ちセクタ50の物理アドレスを管理するための管理テーブル70とを使用する。管理テーブル70には、消去済みセクタ50及び消去待ちセクタ50の物理アドレスが登録されている。コントローラ30は、メモリ装置3の起動時に、つまりメモリ装置3の電源がオフからオンになったときに、L2Pテーブル60及び管理テーブル70を生成して揮発性メモリ32に記憶する。
【0053】
図5はL2Pテーブル60の一例を示す図である。図6は管理テーブル70の一例を示す図である。L2Pテーブル60では、256個のR/Wアクセスセクタ50の物理アドレスと、256個の論理アドレスとがそれぞれ対応付けられている。図5の例では、256個のR/Wアクセスセクタ50の物理アドレスと、00h〜FFhの256個の論理アドレスとがそれぞれ対応付けられている。L2Pテーブル60では、論理アドレスは変化しない。一方で、R/Wアクセスセクタ50に設定されるセクタ50が変化することから、L2Pテーブル60では、論理アドレスに対応付けられる物理アドレスは変化する。ホスト装置2では論理アドレスが管理されており、ホスト装置2は、論理アドレスを指定することによって、データ書き込み及びデータ読み出しを行うR/Wアクセスセクタ50を指定する。以後、R/Wアクセスセクタ50の物理アドレスを「R/Wアクセスアドレス」と呼ぶことがある。
【0054】
管理テーブル70では、消去済みセクタ50及び消去待ちセクタ50についての240個の物理アドレスが登録されている。そして、管理テーブル70では、240個の物理アドレスに対して240個の番号が割当番号としてそれぞれ割り当てられている。図6の例では、00h〜EFhまでの240個の通し番号が割当番号として240個の物理アドレスにそれぞれ割り当てられている。管理テーブル70では、登録されている割当番号は変化しない。一方で、消去済みセクタ50に設定されるセクタ50が変化し、消去待ちセクタ50に設定されるセクタ50が変化することから、管理テーブル70では、割当番号に対応付けられる物理アドレスは変化する。コントローラ30は、消去済みセクタ50をR/Wアクセスセクタ50に変更すると、それに応じて管理テーブル70を更新する。
【0055】
またコントローラ30は、管理テーブル70に登録されている複数の物理アドレスの一つを指し示す消去済みポインタSPと、当該複数の物理アドレスの一つを指し示す消去待ちポインタEPとを使用して、消去済みセクタ50及び消去待ちセクタ50の物理アドレスを管理する。
【0056】
管理テーブル70の複数の物理アドレスには所定の順番が割り当てられている。具体的には、各物理アドレスには割当番号が所定の順番として割り当てられている。コントローラ30は、消去済みポインタSP及び消去待ちポインタEPのそれぞれを、割当番号(00h〜EFhまでの通し番号)の順に循環して移動する。
【0057】
管理テーブル70に登録されている240個の物理アドレスを割当番号の順で循環して見る場合において、消去済みポインタSPが指し示す物理アドレスから、消去待ちポインタEPが指し示す物理アドレスよりも一つ前の物理アドレスまでが、消去済みセクタ50の物理アドレスとなっている。また、管理テーブル70に登録されている240個の物理アドレスを割当番号の順で循環して見る場合において、消去待ちポインタEPが指し示す物理アドレスから、消去済みポインタSPが指し示す物理アドレスよりも一つ前の物理アドレスまでが、消去待ちセクタ50の物理アドレスとなっている。
【0058】
図6の例では、管理テーブル70に登録されている240の物理アドレスを割当番号の順で循環して見る場合において、消去待ちポインタEPが指し示す000hから、消去済みポインタSPが指し示す1EEhよりも一つ前の1EDhまでの238個の物理アドレスが、消去待ちセクタ50の物理アドレスとなっている。また、管理テーブル70に登録されている240の物理アドレスを割当番号の順で循環して見る場合において、消去済みポインタSPが指し示す1EEhから、消去待ちポインタEPが指し示す000hよりも一つ前の1EFhまでの2個の物理アドレスが、消去済みセクタ50の物理アドレスとなっている。
【0059】
本例では、消去待ちポインタEP及び消去済みポインタSPは、ハードウェア回路によってコントローラ30に実装されているが、ソフトウェアで実現されてもよい。つまり、制御プログラム300を実行するマイクロプロセッサ31が消去待ちポインタEP及び消去済みポインタSPを生成してもよい。
【0060】
以後、消去待ちセクタ50の物理アドレスを「消去待ちアドレス」と呼び、消去済みセクタ50の物理アドレスを「消去済みアドレス」と呼ぶことがある。
【0061】
スタンバイモードのコントローラ30は、ホスト装置2から消去コマンドを受け取ると、L2Pテーブル60において、ホスト装置2から指定される論理アドレスに対応するR/Wアクセスアドレスを、消去済みポインタSPが指し示す、消去済みセクタ50の消去済みアドレスに置き換える。これにより、消去済みセクタ50からR/Wアクセスセクタ50に変更されるセクタ50の物理アドレスがL2Pテーブル60に登録される。また、スタンバイモードのコントローラ30は、管理テーブル70において、消去済みポインタSPが指し示す、消去済みセクタ50の消去済みアドレスを、ホスト装置2から指定される論理アドレスに対応するR/Wアクセスアドレスに置き換え、次の物理アドレスを指し示すように消去済みポインタSPを移動する。これにより、R/Wアクセスセクタ50から消去待ちセクタ50に変更されるセクタ50の物理アドレスが、管理テーブル70に登録される。
【0062】
図7には、L2Pテーブル60において、ホスト装置2から指定される論理アドレスに対応するR/Wアクセスアドレスが、消去済みポインタSPが指し示す消去済みアドレスに置き換えられる様子の一例が示される。また図7には、管理テーブル70において、消去済みポインタSPが指し示す消去済みアドレスが、ホスト装置2から指定される論理アドレスに対応するR/Wアクセスアドレスに置き換えられ、次の物理アドレスを指し示すように消去済みポインタSPが移動する様子の一例が示されている。図7の例では、L2Pテーブル60において、ホスト装置2から指定される論理アドレス00hに対応するR/Wアクセスアドレス100hが、消去済みポインタSPが指し示す消去済みアドレス1EEhに置き換えられている。また図7の例では、管理テーブル70において、消去済みポインタSPが指し示す消去済みアドレス1EEhが、ホスト装置2から指定される論理アドレスに対応するR/Wアクセスアドレス100hに置き換えられている。
【0063】
IEモードのコントローラ30は、管理テーブル70において、消去待ちポインタEPが指し示す物理アドレスの消去待ちセクタ50のデータを消去して当該消去待ちセクタ50を消去済みセクタ50に変更し、次の物理アドレスを指し示すように消去待ちポインタEPを移動する。これにより、データが消去されたセクタ50の物理アドレスが、消去済みアドレスとして管理テーブル70に登録される。
【0064】
図8には、次の物理アドレスを指し示すように消去待ちポインタEPが移動する様子の一例が示されている。図8では、消去済みアドレスにハッチングが示されている。図8の例では、消去待ちポインタEPが指し示す物理アドレス000hの消去待ちセクタ50のデータが消去され、消去待ちポインタEPが1つ次に移動している。図8の例では、データが消去されたセクタ50の物理アドレス000hが消去済みアドレスに変化している。
【0065】
なお、消去済みポインタSP及び消去待ちポインタEPが同じ物理アドレスを指し示す場合には、管理テーブル70に登録されているすべての物理アドレスは、消去済みアドレスあるいは消去待ちアドレスとなる。消去済みポインタSPが次に移動して、消去済みポインタSP及び消去待ちポインタEPが指し示す物理アドレスが一致した場合には、管理テーブル70に登録されているすべての物理アドレスは、すべて消去待ちポインタEPとなる。一方で、消去待ちポインタEPが次に移動して、消去済みポインタSP及び消去待ちポインタEPが指し示す物理アドレスが一致した場合には、管理テーブル70に登録されているすべての物理アドレスは、すべて消去済みポインタSPとなる。
【0066】
このように、コントローラ30は、消去済みポインタSP及び消去待ちポインタEPを使用することによって、消去済みアドレス及び消去待ちアドレスを1つの管理テーブル70で管理することから、消去済みアドレス及び消去待ちアドレスを管理するために必要なテーブルを記憶するために必要な記憶容量を低減することができる。
【0067】
なお、コントローラ30は、消去済みアドレスが登録された消去済みテーブルと、消去待ちアドレスが登録された消去待ちテーブルとを使用してもよい。240個の物理アドレスのすべてが消去済みアドレスとなったり、240個の物理アドレスのすべてが消去待ちアドレスとなったりすることから、消去済みテーブル及び消去待ちテーブルのそれぞれは、240個分の物理アドレスを登録できる必要がある。つまり、消去済みテーブルと消去待ちテーブルとを合わせて、480個分の物理アドレスを記憶するための記憶容量が必要となる。これに対して、本例のように、240個の物理アドレスを登録できる1つの管理テーブル70を使用する場合には、240個分の物理アドレスを記憶するための記憶容量があればよい。
【0068】
<冗長領域に書き込まれる管理情報について>
図9は第1部分記憶領域5Aのセクタ50に書き込まれる情報の一例を示す図である。上述のように、コントローラ30は、第1部分記憶領域5Aのセクタ50のユーザデータ領域50Aにホスト装置2からの出力データ210を書き込むことが可能である。一方で、コントローラ30は、第1部分記憶領域5Aのセクタ50の冗長領域50Bを、当該セクタ50の状態を管理するために使用する。以後、第1部分記憶領域5Aのセクタ50のユーザデータ領域50Aを特に「ホストデータ領域50A」と呼ぶことがある。また、第1部分記憶領域5Aのセクタ50の冗長領域50Bを特に「管理領域50B」と呼ぶことがある。
【0069】
本例では、セクタ50の管理領域50Bのページ0が、ステータス情報が記憶される第1管理領域501として使用される。ステータス情報は、それを記憶するセクタ50が、R/Wアクセスセクタ50であるのか、消去済みセクタ50であるのか、消去待ちセクタ50であるのかを示す情報である。また、第1管理領域501には、L2Pテーブル60において、当該第1管理領域501を有するセクタ50の物理アドレスと対応付けられる論理アドレスが記憶される。
【0070】
本例では、冗長領域50Bの各ページPGの記憶容量は、例えば4バイトである。また、ユーザデータ領域50Aの各ページPGの記憶容量は、例えば512バイトである。第1管理領域501に記憶することが可能な32ビットのデータのうち、例えば、下位から25ビット目から32ビット目の1バイトのデータがステータス情報を示す。また、当該32ビットのデータのうち、例えば、下位から17ビット目から24ビット目の1バイトのデータが論理アドレスを示す。本例では、当該32ビットデータのうち、1ビット目から16ビット目までの2バイトのデータは使用されない。
【0071】
ステータス情報は、それを記憶するセクタ50が消去済みセクタ50である場合には、例えばFFhを示す。またステータス情報は、それを記憶するセクタ50がR/Wアクセスセクタ50である場合には、例えばAAhを示す。そして、ステータス情報は、それを記憶するセクタ50が消去待ちセクタ50である場合には、例えば88hを示す。
【0072】
図9に示される、物理アドレス000hのセクタ50及び物理アドレス0FFhのセクタ50はR/Wアクセスセクタ50である。また図9に示される物理アドレス100hのセクタ50は消去済みセクタ50である。そして、図9に示される物理アドレス1EFhのセクタ50は消去待ちセクタ50である。
【0073】
以後、消去済みセクタ50内のステータス情報を「消去済みステータス情報」と呼ぶことがある。またR/Wアクセスセクタ50内のステータス情報を「R/Wアクセスステータス情報」と呼ぶことがある。そして消去待ちセクタ50内のステータス情報を「消去待ちステータス情報」と呼ぶことがある。
【0074】
なお、図9のホストデータ領域50Aに示される「Data」及び「Data_old」は、それぞれ、ホスト装置2が読み出すことができるホスト出力データ210及び消去待ちの出力データ210を意味している。また、図9のホストデータ領域50Aに示される「Erase」は、当該ホストデータ領域50A内にデータが記憶されていないことを意味する。以降の図に示される「Data」、「Data_old」及び「Erase」の意味も同様である。
【0075】
ここで、本例では、セクタ50のデータが消去されると、当該セクタ50の各ビットの値は“1”を示す。コントローラ30は、セクタ50のデータ消去済みのビットに“0”を書き込むことによって、当該ビットの値を“1”から“0”に書き換えることができる。コントローラ30は、セクタ50のデータを消去しない限り、セクタ50のビットの値を“1”から“0”に書き換えることができない。
【0076】
上述のように、本例では、消去済みステータス情報はFFhを示す。FFhは、2進数表記で1111_1111b(bは2進数を意味する)となることから、消去済みステータス情報を構成する各ビットの値はデータ消去済みのビットの値であると言える。セクタ50のデータが消去されて、当該セクタ50が消去済みセクタ50になると、当該消去済みセクタ50内のステータス情報は自動的にFFhを示す。
【0077】
また、R/Wアクセスステータス情報はAAhを示す。AAhは、2進数表記で1010_1010b(bは2進数を意味する)となる。したがって、R/Wアクセスステータス情報は、消去済みステータス情報の上位から2ビット目、4ビット目、6ビット目、8ビット目の値を“0”に変更したものと一致する。コントローラ30は、消去済みステータス情報を記憶する第1管理領域501の一部のビットにデータ“0”を書き込むことによって、当該第1管理領域501内のステータス情報を消去済みステータス情報からR/Wアクセスステータス情報に変更することができる。具体的には、コントローラ30は、第1管理領域501における、消去済みステータス情報を記憶する8ビットの領域のうち、上位から2ビット目、4ビット目、6ビット目及び8ビット目のビットにデータ“0”を書き込むことによって、ステータス情報をR/Wアクセスステータス情報に変更することができる。
【0078】
また、消去待ちステータス情報は88hを示す。88hは、2進数表記で1000_1000b(bは2進数を意味する)となる。したがって、消去待ちステータス情報は、R/Wアクセスステータス情報の上位から3ビット目及び7ビット目の値を“0”に変更したものと一致する。コントローラ30は、R/Wアクセスステータス情報を記憶する第1管理領域501の一部のビットにデータ“0”を書き込むことによって、当該第1管理領域501内のステータス情報をR/Wアクセスステータス情報から消去待ちステータス情報に変更することができる。具体的には、コントローラ30は、第1管理領域501における、R/Wアクセスステータス情報を記憶する8ビットの領域のうち、上位から3ビット目及び7ビット目のビットにデータ“0”を書き込むことによって、ステータス情報を消去待ちステータス情報に変更することができる。
【0079】
また本例では、セクタ50の管理領域50Bのページ1〜3が、ステータス情報の更新状況を示す第2管理領域502として使用される。第2管理領域502のページ1〜ページ3は、消去済みセクタ50、R/Wアクセスセクタ50及び消去待ちセクタ50にそれぞれ対応している。
【0080】
コントローラ30は、セクタ50を消去済みセクタ50に変更する場合には、当該セクタ50の第2管理領域502のページ1に第1所定情報を書き込む。言い換えれば、コントローラ30は、セクタ50の第1管理領域501内のステータス情報をFFhに書き換える場合には、当該セクタ50の第2管理領域502のページ1に第1所定情報を書き込む。第2管理領域502のページ1を第1更新管理領域と呼ぶと、コントローラ30は第1更新管理領域に第1所定情報を書き込む。第1所定情報は、例えば0000_0000hである。以後、ある領域に0000_0000hを書き込むことを「オール0を書き込む」と呼ぶことがある。本例では、第1更新管理領域にオール0が書き込まれる。
【0081】
コントローラ30は、セクタ50をR/Wアクセスセクタ50に変更する場合には、当該セクタ50の第2管理領域502のページ2に第2所定情報を書き込む。言い換えれば、コントローラ30は、セクタ50の第1管理領域501内のステータス情報をAAhに書き換える場合には、当該セクタ50の第2管理領域502のページ2に第2所定情報を書き込む。第2管理領域502のページ2を第2更新管理領域と呼ぶと、コントローラ30は第2更新管理領域に第2所定情報を書き込む。第2所定情報は、例えば0000_0000hである。
【0082】
コントローラ30は、セクタ50を消去待ちセクタ50に設定する場合には、当該セクタ50の第2管理領域502のページ3に第3所定情報を書き込む。言い換えれば、コントローラ30は、セクタ50の第1管理領域501内のステータス情報を88hに書き換える場合には、当該セクタ50の第2管理領域502のページ3に第3所定情報を書き込む。第2管理領域502のページ3を第3更新管理領域と呼ぶと、コントローラ30は第3更新管理領域に第3所定情報を書き込む。第3所定情報は、例えば0000_0000hである。
【0083】
以後、第1〜第3所定情報を第1〜第3ステータス更新情報とそれぞれ呼ぶことがある。また、第1〜第3ステータス更新情報を互いに区別する必要がないときには、それぞれを単にステータス更新情報と呼ぶことがある。
【0084】
上述の説明から理解できるように、セクタ50は、消去済みセクタ50からR/Wアクセスセクタ50に変化し、R/Wアクセスセクタ50から消去待ちセクタ50に変化する。したがって、消去済みセクタ50(図9の物理アドレス100hのセクタ50)の第2管理領域502では、ページ1だけにデータが書き込まれ、R/Wアクセスセクタ50(図9の物理アドレス000h及び0FFhのセクタ50)の第2管理領域502では、ページ1及びページ2だけにデータが書き込まれ、消去待ちセクタ50(図9の物理アドレス1EFhのセクタ50)の第2管理領域502では、ページ1、ページ2及びページ3のすべてにデータが書き込まれる。
【0085】
<セクタの初期出荷状態>
図10は、製造されたメモリ装置3が出荷される際のセクタ50の状態の一例を示す図である。図10に示されるように、初期出荷状態のメモリ装置3では、物理アドレス000h〜0FFhまでのセクタ50がR/Wアクセスセクタ50に設定されている。そして、物理アドレス000h〜0FFhまでのセクタ50の第1管理領域501には、それぞれ論理アドレス00h〜FFhが記憶される。したがって、初期出荷状態のメモリ装置3の起動時には、図10に示されるように、000h〜0FFhの物理アドレスと、00h〜FFhの論理アドレスとがそれぞれ対応付けられたL2Pテーブル60が生成される。
【0086】
また、初期出荷状態のメモリ装置3では、物理アドレス100h〜1EFhまでのセクタ50が消去済みセクタ50に設定されている。初期出荷状態のメモリ装置3の記憶領域5には消去待ちセクタ50が含まれない。初期出荷状態のメモリ装置3の起動時には、図10に示されるように、例えば、割当番号00h〜EFhに対して、それぞれ、100h〜1EFhの物理アドレスが対応付けられた管理テーブル70が生成される。
【0087】
初期出荷状態のメモリ装置3の起動時に、コントローラ30は、各セクタ50の第1管理領域501内のステータス情報及び論理アドレスに基づいて、L2Pテーブル60及び管理テーブル70を生成して揮発性メモリ32に記憶する。
【0088】
なお、図10及び後述の図に記載される「消去済みセクタ=Full」及び「消去待ちセクタ=Empty」は、管理テーブル70内のすべての物理アドレスが消去済みアドレスであることと、管理テーブル70には消去待ちアドレスが登録されていないことをそれぞれ意味する。また、後述の図に記載される「消去済みセクタ=Empty」及び「消去待ちセクタ=Full」は、管理テーブル70には消去済みアドレスが登録されていないことと、管理テーブル70内のすべての物理アドレスが消去待ちアドレスであることをそれぞれ意味する。
【0089】
<各動作モードの詳細>
次に、スタンバイモード、IEモード及びRIEモードについて詳細に説明する。
【0090】
<スタンバイモードの詳細>
<書き込みコマンドを受け取った際のコントローラの動作>
ホスト装置2は、書き込みコマンドとともに論理アドレスを出力する。またホスト装置2は、メモリ装置3に対して書き込み先のページPGを指定するとともに、当該ページPGに書き込むデータを出力する。書き込みコマンドの種類としては、ホストデータ領域50Aにデータを書き込むことを指示する第1書き込みコマンドと、管理領域50Bにデータを書き込むことを指示する第2書き込みコマンドとがある。
【0091】
メモリ装置3では、コントローラ30は、書き込みコマンドを受け取ると、L2Pテーブル60において、当該書き込みコマンドとともにホスト装置2が出力する論理アドレスに対応付けられている物理アドレス(R/Wアクセスアドレス)を特定する。そして、コントローラ30は、特定した物理アドレスのセクタ50(R/Wアクセスセクタ50)のホストデータ領域50A及び管理領域50Bのうち、書き込みコマンドの種類に応じた領域における、ホスト装置2が指定するページPGに対して、ホスト装置2が出力するデータを書き込む。このとき、コントローラ30は、メモリコア4に対して書き込みコマンドを出力し、当該書込みコマンドを受け取ったメモリコア4はセクタ50にデータを書きこむ。コントローラ30は、セクタ50にデータを書き込む際には管理テーブル70を使用しない。その後、コントローラ30は、ホスト装置2からの書き込みコマンドに応じた処理が完了したことを、I/F回路33を通じてホスト装置2に通知する。
【0092】
図11は、ホスト装置2からのデータがセクタ50のホストデータ領域50Aに対して書き込まれる様子の一例を示す図である。図11には、ホスト装置2が第1書き込みコマンド及び論理アドレス00hを出力し、かつ書き込み先のページPGとしてページ0を指定する場合の例が示されている。図11の例では、L2Pテーブル60では、論理アドレス00hに物理アドレス000hが対応付けられていることから、物理アドレス000hが割り当てられたR/Wアクセスセクタ50のホストデータ領域50Aのページ0に対して、ホスト装置2が出力するデータが書き込まれる。
【0093】
<読み出しコマンドを受け取った際のコントローラの動作>
ホスト装置2は、読み出しコマンドとともに論理アドレスを出力する。またホスト装置2は、メモリ装置3に対して読み出し対象のページPGを指定する。読み出しコマンドの種類としては、ホストデータ領域50Aからデータを読み出すことを指示する第1読み出しコマンドと、管理領域50Bからデータを読み出すことを指示する第2読み出しコマンドとがある。
【0094】
メモリ装置3では、コントローラ30は、読み出しコマンドを受け取ると、L2Pテーブル60において、当該読み出しコマンドとともにホスト装置2が出力する論理アドレスに対応付けられている物理アドレス(R/Wアクセスアドレス)を特定する。そして、コントローラ30は、特定した物理アドレスのセクタ50(R/Wアクセスセクタ50)のホストデータ領域50A及び管理領域50Bのうち、読み出しコマンドの種類に応じた領域における、ホスト装置2が指定するページPGからデータを読み出す。このとき、コントローラ30は、メモリコア4に対して読み出しコマンドを出力し、当該読み出しコマンドを受け取ったメモリコア4はセクタ50からデータを読み出してコントローラ30に出力する。コントローラ30は、読み出したデータをI/F回路33を通じてホスト装置2に出力する。コントローラ30は、セクタ50からデータを読み出す際には管理テーブル70を使用しない。
【0095】
<消去コマンドを受け取った際のコントローラの動作>
図12は、メモリコア4に消去待ちセクタ50が含まれる場合において、消去コマンドを受け取るコントローラ30の動作の一例を示すフローチャートである。ホスト装置2は、読み出しコマンドとともに論理アドレスを出力する。以後、ホスト装置2が出力する論理アドレスを「指定論理アドレス」と呼ぶことがある。
【0096】
図12に示されるように、ステップs1において、コントローラ30は、ホスト装置2からの消去コマンド及び指定論理アドレスを受け取ると、ステップs2において、消去済みポインタSPが指し示す消去済みアドレスを特定する。この特定された消去済みアドレスを「特定消去済みアドレス」と呼ぶ。そしてステップs3において、コントローラ30は、消去済みポインタSPを次に移動する。
【0097】
次にステップs4において、コントローラ30は、特定消去済みアドレスが割り当てられた消去済みセクタ50をR/Wアクセスセクタ50に変更する。具体的には、コントローラ30は、特定消去済みアドレスのセクタ50の第1管理領域501内のステータス情報をFFhからAAhに変更し、当該第1管理領域501内の論理アドレスを指定論理アドレスに変更する。コントローラ30は、消去済みセクタ50の第1管理領域501における、消去済みステータス情報(FFh)を記憶する8ビットの領域のうち、上位から2ビット目、4ビット目、6ビット目及び8ビット目のビットにデータ“0”を書き込むことによって、ステータス情報を、消去済みステータス情報(FFh)からR/Wアクセスステータス情報(AAh)に変更する。コントローラ30は、消去済みセクタ50のデータを消去することなく、ステータス情報を、消去済みステータス情報(FFh)からR/Wアクセスステータス情報(AAh)に変更することができることから、簡単にステータス情報を変更することができる。
【0098】
ここで、コントローラ30は、セクタ50のページPGにデータを書き込むと、当該ページPGからデータを読み出し、読み出したデータと、書き込んだデータとが一致するか否かを判定して、正しくデータが書き込まれていることを確認するベリファイ処理を行う。ステップs4において、コントローラ30は、特定消去済みアドレスのセクタ50の第1管理領域501(ページ0)にデータを書き込んでステータス情報及び論理アドレスを変更すると、ベリファイ処理を行う。以後、特に説明しなくても、コントローラ30はセクタ50にデータを書き込んだ後にベリファイ処理を行うものとする。
【0099】
次にステップs5において、コントローラ30は、特定消去済みアドレスのセクタ50の第2管理領域502のページ2にオール0を書き込む。
【0100】
次にステップs6において、コントローラ30は、L2Pテーブル60において、指定論理アドレスに対応するR/Wアクセスアドレスを特定する。この特定されたR/Wアクセスアドレスを「特定R/Wアクセスアドレス」と呼ぶ。
【0101】
次にステップs7において、コントローラ30は、特定R/Wアクセスアドレスが割り当てられたR/Wアクセスセクタ50を消去待ちセクタ50に変更する。具体的には、コントローラ30は、特定R/Wアクセスアドレスのセクタ50の第1管理領域501内のステータス情報をAAhから88hに変更する。コントローラ30は、R/Wアクセスセクタ50の第1管理領域501における、R/Wアクセスステータス情報(AAh)を記憶する8ビットの領域のうち、上位から3ビット目及び7ビット目のビットにデータ“0”を書き込むことによって、ステータス情報を、R/Wアクセスステータス情報(AAh)から消去待ちステータス情報(88h)に変更する。コントローラ30は、R/Wアクセスセクタ50のデータを消去することなく、ステータス情報を、R/Wアクセスステータス情報(AAh)から消去待ちステータス情報(88h)に変更することができることから、簡単にステータス情報を変更することができる。
【0102】
次にステップs8において、コントローラ30は、特定R/Wアクセスアドレスが割り当てられたセクタ50の第2管理領域502のページ3にオール0を書き込む。
【0103】
次にステップs9において、コントローラ30は、L2Pテーブル60において、特定R/Wアクセスアドレスを特定消去済みアドレスに置き換える。そしてステップs10にて、コントローラ30は、管理テーブル70において、特定消去済みアドレスを特定R/Wアクセスアドレスに置き換える。ステップs10の実行後、コントローラ30は、ホスト装置2からの消去コマンドに応じた処理が完了したことを、I/F回路33を通じてホスト装置2に通知する。
【0104】
以上のようにしてメモリ装置3が動作することによって、ホスト装置2が消去コマンド及び指定論理アドレスを出力する場合には、メモリ装置3では、指定論理アドレスに対応するセクタ50のデータが疑似的に消去される。
【0105】
図13〜19は、セクタ50、L2Pテーブル60及び管理テーブル70の状態が図11に示される状態の場合に、消去コマンド及び指定論理アドレス00hを受け取ったコントローラ30の一連の動作の一例を説明するための図である。
【0106】
コントローラ30は、消去コマンド及び指定論理アドレス00hを受け取ると(ステップs1)、消去済みポインタSPが指し示す消去済みアドレス100hを特定する(図13参照)。そして、図13に示されるように、コントローラ30は、消去済みポインタSPを次に移動する。これにより、管理テーブル70上では、消去済みセクタ50の数が239個となり、消去待ちセクタ50の数が1個となる。図13での「消去済みセクタ=239」は、消去済みセクタ50の数が239個であることを意味し、「消去待ちセクタ=1」は、消去待ちセクタ50の数が1個であることを意味している。
【0107】
次に図14に示されるように、コントローラ30は、特定消去済みアドレス100hのセクタ50の第1管理領域501内のステータス情報をFFhからAAhに変更する(ステップs4)。また図15に示されるように、コントローラ30は、特定消去済みアドレス100hのセクタ50の第1管理領域501内の論理アドレスFFhを、ホスト装置2からの指定論理アドレス00hに変更する(ステップs4)。これにより、特定消去済みアドレス100hが割り当てられた消去済みセクタ50がR/Wアクセスセクタ50に変更される。
【0108】
次に図16に示されるように、コントローラ30は、特定消去済みアドレス100hのセクタ50の第2管理領域502のページ2にオール0を書き込む(ステップs5)。
【0109】
次にコントローラ30は、L2Pテーブル60において、指定論理アドレスに対応するR/Wアクセスアドレス000hを特定する(ステップs6)。そして、図17に示されるように、コントローラ30は、特定R/Wアクセスアドレス000hが割り当てられたR/Wアクセスセクタ50の第1管理領域501内のステータス情報をAAhから88hに変更する(ステップs7)。これにより、特定R/Wアクセスアドレス000hが割り当てられたR/Wアクセスセクタ50が消去待ちセクタ50に変更される。
【0110】
次に図18に示されるように、コントローラ30は、特定R/Wアクセスアドレス000hが割り当てられたセクタ50の第2管理領域502のページ3にオール0を書き込む。
【0111】
次に図19に示されるように、コントローラ30は、L2Pテーブル60において、特定R/Wアクセスアドレス000hを特定消去済みアドレス100hに置き換える(ステップs9)。そして、コントローラ30は、管理テーブル70において、特定消去済みアドレス100hを特定R/Wアクセスアドレス000hに置き換える(ステップs10)。その後、コントローラ30は、ホスト装置2からの消去コマンドに応じた処理が完了したことを、I/F回路33を通じてホスト装置2に通知する。
【0112】
以上のように、本例では、コントローラ30は、消去コマンド及び指定論理アドレスを受け取った場合、指定論理アドレスに対応するセクタ50のデータを消去せずに、当該セクタ50の代りに、消去済みセクタ50を当該指定論理アドレスに対応付けることによって、指定論理アドレスに対応するセクタ50のデータを疑似的に消去している。セクタ50のデータを消去するために必要な時間は非常に大きいことから、このようにセクタ50のデータが疑似的に消去されることにより、コントローラ30の処理時間を大幅に低減することができる。よって、メモリ装置3の性能が向上する。またホスト装置2は、セクタ50のデータが実際に消去される場合と比較して、消去コマンドの出力から書き込みコマンドの出力までの時間を短くすることができる。よって、ホスト装置2は、セクタ50のデータが実際に消去される場合と比較して、セーブデータ等のデータを短時間でメモリ装置3に保存することができる。
【0113】
次に、メモリコア4に消去済みセクタ50が含まれない場合において、消去コマンドを受け取るコントローラ30の動作について説明する。図20は当該動作の一例を示すフローチャートである。メモリコア4に消去済みセクタ50が含まれない場合において、コントローラ30は、消去コマンドを受け取ると、消去待ちセクタ50のデータを消去して消去済みセクタ50を生成した後に、上記のステップs2〜10を実行する。
【0114】
図20に示されるように、ステップs21において、コントローラ30は、ホスト装置2からの消去コマンド及び指定論理アドレスを受け取ると、ステップs22において、消去待ちポインタEPが指し示す消去待ちアドレスを特定する。この特定された消去待ちアドレスを「特定消去待ちアドレス」と呼ぶ。そしてステップs23において、コントローラ30は、消去待ちポインタEPを次に移動する。
【0115】
次にステップs24において、コントローラ30は、特定消去待ちアドレスが割り当てられた消去待ちセクタ50の管理領域50Bのページ0,4,5,6,7に対してオール0を書き込む。
【0116】
次にステップs25において、コントローラ30は、特定消去待ちアドレスが割り当てられた消去待ちセクタ50のデータを消去するために、メモリコア4に対して消去コマンドを出力する。消去コマンドを受け取ったメモリコア4は、特定消去待ちアドレスが割り当てられた消去待ちセクタ50のデータを消去する。これにより、特定消去待ちアドレスが割り当てられた消去待ちセクタ50が消去済みセクタ50に変更される。その後、メモリコア4は、データ消去が完了したことを通知する消去完了通知をコントローラ30に出力する。
【0117】
ステップs26において、コントローラ30は、消去完了通知を受け取ると、ステップs27において、特定消去待ちアドレスが割り当てられた消去待ちセクタ50の第2管理領域502のページ1にオール0を書き込む。その後、コントローラ30は上記のステップs2〜s10を実行する。ステップs10の実行後、コントローラ30は、ホスト装置2からの消去コマンドに応じた処理が完了したことを、I/F回路33を通じてホスト装置2に通知する。
【0118】
図21は、メモリコア4に消去済みセクタ50が含まれない場合のセクタ50、L2Pテーブル60及び管理テーブル70の状態の一例を示す図である。図21に示される、物理アドレス000h及び0FFhのセクタ50はR/Wアクセスセクタ50である。また図21に示される、物理アドレス100h及び1EFhのセクタ50は消去待ちセクタ50である。
【0119】
図22〜29は、セクタ50、L2Pテーブル60及び管理テーブル70の状態が図21に示される状態の場合に、消去コマンド及び指定論理アドレス00hを受け取ったコントローラ30の一連の動作の一例を説明するための図である。
【0120】
コントローラ30は、消去コマンド及び指定論理アドレス00hを受け取ると(ステップs21)、消去待ちポインタEPが指し示す消去待ちアドレス100hを特定する(ステップs22)。そして図22に示されるように、コントローラ30は、消去待ちポインタEPを次に移動する(ステップs23)。
【0121】
次に、図22に示されるように、コントローラ30は、特定消去待ちアドレス100hが割り当てられた消去待ちセクタ50の管理領域50Bのページ0,4,5,6,7に対してオール0を書き込む(ステップs24)。
【0122】
次にコントローラ30は、メモリコア4に対して消去コマンドを出力する(ステップs25)。これにより、図23に示されるように、特定消去待ちアドレス100hが割り当てられた消去待ちセクタ50のデータが消去される。
【0123】
その後、コントローラ30は、メモリコア4から消去完了通知を受け取ると(ステップs26)、図24に示されるように、特定消去待ちアドレス100hが割り当てられた消去待ちセクタ50の第2管理領域502のページ1にオール0を書き込む(ステップs27)。
【0124】
次にコントローラ30は、消去済みポインタSPが指し示す消去済みアドレス100hを特定する(ステップs2)。そして、図25に示されるように、コントローラ30は、消去済みポインタSPを次に移動する(ステップs3)。
【0125】
次に図25に示されるように、コントローラ30は、特定消去済みアドレス100hのセクタ50の第1管理領域501内のステータス情報をFFhからAAhに変更する(ステップs4)。また図26に示されるように、コントローラ30は、特定消去済みアドレス100hのセクタ50の第1管理領域501内の論理アドレスFFhを、ホスト装置2からの指定論理アドレス00hに変更する(ステップs4)。
【0126】
次に図27に示されるように、コントローラ30は、特定消去済みアドレス100hのセクタ50の第2管理領域502のページ2にオール0を書き込む(ステップs5)。
【0127】
次にコントローラ30は、L2Pテーブル60において、指定論理アドレスに対応するR/Wアクセスアドレス000hを特定する(ステップs6)。そして、図28に示されるように、コントローラ30は、特定R/Wアクセスアドレス000hが割り当てられたR/Wアクセスセクタ50の第1管理領域501内のステータス情報をAAhから88hに変更する(ステップs7)。
【0128】
次に図29に示されるように、コントローラ30は、特定R/Wアクセスアドレス000hが割り当てられたセクタ50の第2管理領域502のページ3にオール0を書き込む。
【0129】
次に図30に示されるように、コントローラ30は、L2Pテーブル60において、特定R/Wアクセスアドレス000hを特定消去済みアドレス100hに置き換える(ステップs9)。そして、コントローラ30は、管理テーブル70において、特定消去済みアドレス100hを特定R/Wアクセスアドレス000hに置き換える(ステップs10)。その後、コントローラ30は、ホスト装置2からの消去コマンドに応じた処理が完了したことを、I/F回路33を通じてホスト装置2に通知する。
【0130】
なお、コントローラ30が消去コマンドを受け取ったときに行う複数の処理の順番は上記の例に限られない。例えば、ステップs3はステップs1よりも後であればいつでも実行されてよい。また、ステップs6〜s8はステップs2〜s5の前に実行されてもよい。また、ステップs10はステップs9の前に実行されてもよい。また、ステップs9,s10は、ステップs2,s6の後であればいつでも実行されてよい。また、ステップs5はステップs4の前に実行されてもよい。また、ステップs8はステップs7の前に実行されてもよい。
【0131】
<IEモードの詳細>
図31は、ホスト装置2からのIEコマンドを受け取ったコントローラ30の動作の一例を示すフローチャートである。図31に示されるように、スタンバイモードのコントローラ30は、ステップs31において、ホスト装置2からのIEコマンドを受け取ると、ステップs32において、動作モードをスタンバイモードからIEモードに変更する。
【0132】
次にステップs33において、IEモードのコントローラ30は、IEコマンドを受け取ってから所定時間が経過する前にIREコマンドを受け取ったか否かを判定する。所定時間は例えば数百msに設定される。コントローラ30は、IEコマンドを受け取ってから所定時間が経過する前にIREコマンドを受け取った場合には(ステップs33でYES)、ステップs34において、消去待ちセクタ50のデータを消去せずに、動作モードをIEモードからRIEモードに変更する。したがって、ホスト装置2が、IEコマンドを出力してから所定時間が経過する前にIREコマンドを出力する場合には、メモリ装置3ではセクタ50のデータの消去が行われない。一方で、コントローラ30は、IEコマンドを受け取ってから、IREコマンドを受け取らずに所定時間が経過すると(ステップs33でNO)、消去待ちセクタ50のデータの消去を開始する。
【0133】
コントローラ30は、消去待ちセクタ50のデータを消去する際には、まずステップs35において、消去待ちポインタEPが指し示す消去待ちアドレスを特定する。次にステップs36において、消去待ちポインタEPを次に移動する。
【0134】
次にステップs37において、コントローラ30は、ステップs35で特定した特定消去待ちアドレスが割り当てられた消去待ちセクタ50の管理領域50Bのページ0,4,5,6,7に対してオール0を書き込む。
【0135】
次にステップs38において、コントローラ30は、特定消去待ちアドレスが割り当てられた消去待ちセクタ50のデータを消去するために、メモリコア4に対して消去コマンドを出力する。消去コマンドを受け取ったメモリコア4は、特定消去待ちアドレスが割り当てられた消去待ちセクタ50のデータを消去する。これにより、特定消去待ちアドレスが割り当てられた消去待ちセクタ50が消去済みセクタ50に変更される。その後、メモリコア4は消去完了通知をコントローラ30に出力する。
【0136】
ステップs39において、コントローラ30は消去完了通知を受け取ると、ステップs40において、特定消去待ちアドレスが割り当てられたセクタ50の第2管理領域502のページ1にオール0を書き込む。
【0137】
次にステップs41において、コントローラ30は、メモリコア4において消去待ちセクタ50が無くなったか否かを判定する。コントローラ30は、メモリコア4において消去待ちセクタ50が無くなった場合には(ステップs41でのYES)、ステップs42において、動作モードをIEモードに維持する。一方で、コントローラ30は、メモリコア4において消去待ちセクタ50が存在する場合には(ステップs41でのNO)、再度ステップs35を実行して、消去待ちポインタEPが指し示す消去待ちアドレスを特定する。以後、コントローラ30は同様に動作する。
【0138】
なお、コントローラ30は、ステップs33において、IEコマンドを受け取ってから、IREコマンドを受け取らずに所定時間が経過したと判定した場合であって、メモリコア4に消去待ちセクタ50が存在しない場合には、ステップs35〜ステップs41を実行せずにステップs42を実行する。
【0139】
IEモードのコントローラ30は、ステップs35〜s42の間でホスト装置2からRIEコマンドを受け取ると、すぐに動作モードをIEモードからRIEモードに変更する。したがって、消去待ちセクタ50のデータが消去されている最中に、動作モードがIEモードからRIEモードに変化することがある。コントローラ30は、IEモードで動作する場合、IREコマンドを受け取ると、消去待ちセクタ50のデータを消去している最中であるか否かにかかわらず動作モードをIEモードからRIEモードに変更する。また、IEモードのコントローラ30は、メモリコア4の記憶領域5に複数の消去待ちセクタ50が含まれる場合には、RIEコマンドを受け取るまで、当該複数の消去待ちセクタ50のデータ消去を継続して行う。
【0140】
図32は、セクタ50、L2Pテーブル60及び管理テーブル70の状態の一例を示す図である。図33〜35は、セクタ50、L2Pテーブル60及び管理テーブル70の状態が図32に示される状態の場合に、IEコマンドを受け取ったコントローラ30が消去待ちセクタ50のデータを消去する際の一連の動作の一例を説明するための図である。図32に示される、物理アドレス000h及び0FFhのセクタ50はR/Wアクセスセクタ50である。図32に示される、物理アドレス100hのセクタ50は消去待ちセクタ50である。図32に示される、物理アドレス1EFhのセクタ50は消去済みセクタ50である。
【0141】
コントローラ30は、上述のステップs31〜s33を実行し、ステップs33において、IEコマンドを受け取ってから、IREコマンドを受け取らずに所定時間が経過したと判定すると、消去待ちポインタEPが指し示す消去待ちアドレス100hを特定する(ステップs35)。次に図33に示されるように、コントローラ30は、消去待ちポインタEPを次に移動する(ステップs36)。
【0142】
次に図33に示されるように、コントローラ30は、特定消去待ちアドレス100hが割り当てられた消去待ちセクタ50の管理領域50Bのページ0,4,5,6,7に対してオール0を書き込む(ステップs37)。
【0143】
次にコントローラ30は、メモリコア4に対して消去コマンドを出力する(ステップs38)。これにより、図34に示されるように、特定消去待ちアドレス100hが割り当てられた消去待ちセクタ50のデータが消去され、当該消去待ちセクタ50が消去済みセクタ50に変化する。
【0144】
その後、コントローラ30は、消去完了通知を受け取ると(ステップs39)、図35に示されるように、特定消去待ちアドレス100hがセクタ50の第2管理領域502のページ1にオール0を書き込む(ステップs40)。
【0145】
次にコントローラ30は、メモリコア4において消去待ちセクタ50が無くなったか否かを判定する(ステップs41)。ここでは、メモリコア4に消去待ちセクタ50が存在することから、コントローラ30は、消去待ちポインタEPが現在指し示す消去待ちアドレス101hを特定する(ステップs35)。以後、コントローラ30は同様に動作する。
【0146】
以上のように、IEモードのコントローラ30は、メモリコア4の記憶領域5に複数の消去待ちセクタ50が含まれる場合には、RIEコマンドを受け取るまで、当該複数の消去待ちセクタ50のデータ消去を継続して行う。したがって、ホスト装置2は、消去待ちセクタ50のデータが消去されるたびにコマンドを出力する必要がなくなる。よって、コントローラ30は、消去待ちセクタ50のデータを消去するたびにホスト装置2からのコマンドを処理する必要はなく、メモリ装置3が複数の消去待ちセクタ50のデータを消去する処理を簡素化することができる。よって、メモリ装置3の性能が向上する。また、ホスト装置2の処理も簡素化される。
【0147】
なお、コントローラ30は、IEモードで動作している場合に、消去待ちセクタ50が無くなった場合には(ステップs41でのYES)、RIEモードを経由せずに、動作モードをIEモードから直接スタンバイモードに変更してもよい。
【0148】
<IEモードでのメモリ装置の消費電流>
図36は、IEモードのコントローラ30が、消去待ちセクタ50のデータを消去する際のメモリ装置3の消費電流波形の一例を示す図である。以後、単に消費電流と言えば、メモリ装置3の消費電流を意味する。
【0149】
図36に示されるように、IEモードのコントローラ30が、消去待ちセクタ50のデータを消去する際には、動作期間600,610,620,630が順に現れる。動作期間600は、特定消去待ちアドレスが割り当てられたセクタ50の管理領域50Bのページ0,4,5,6,7に対しオール0が書き込まれて、その後、当該ページ0,4,5,6,7に対するベリファイ処理が行われる期間(ステップs37)である。動作期間610は、消去コマンドを受け取ったメモリコア4が、特定消去待ちアドレスが割り当てられたセクタ50のデータを消去する期間(ステップs38,s39)である。動作期間620は、データ消去されたセクタ50のホストデータ領域50A及び管理領域50Bに対してベリファイ処理が行われる期間である。動作期間630は、データ消去されたセクタ50の第2管理領域502のページ1にオール0が書き込まれて、その後、当該ページ1に対するベリファイ処理が行われる期間(ステップs40)である。
【0150】
本例では、図36に示されるように、動作期間610での消費電流は、動作期間600での当該消費電流よりも大きくなっている。また、動作期間620での消費電流は、動作期間610での消費電流よりも小さくなっている。そして、動作期間630での消費電流は、動作期間620での消費電流よりも大きくなり、動作期間610よりも小さくなっている。これらのことから、セクタ50のデータが消去されているときの消費電流は、セクタ50に対してデータ書き込みを行うときの消費電流よりも大きく、セクタ50に対してデータ読み出しを行うときの消費電流よりも大きくなると言える。
【0151】
なお、スタンバイモードのコントローラ30は、消去コマンドを受け取った場合、メモリコア4に消去済みセクタ50が含まれないときには、上述のように、消去待ちセクタ50のデータを消去して消去済みセクタ50を生成した後に、ステップs2〜10を実行する。スタンバイモードのコントローラ30が消去待ちセクタ50のデータを消去する際の当該コントローラ30の動作は、IEモードのコントローラ30が消去待ちセクタ50のデータを消去する際の当該コントローラ30の動作と同様であることから、スタンバイモードのコントローラ30が消去待ちセクタ50のデータを消去する場合にも、図36に示される動作期間600,610,620,630が順に現れる。
【0152】
<RIEモードの詳細>
図37は、ホスト装置2からのRIEコマンドを受け取ったコントローラ30の動作の一例を示すフローチャートである。図37に示されるように、IEモードのコントローラ30は、ステップs51において、ホスト装置2からのRIEコマンドを受け取ると、ステップs52において、動作モードをIEモードからRIEモードに変更する。
【0153】
次にステップs53において、RIEモードのコントローラ30は、データが途中まで消去された消去待ちセクタ50がメモリコア4に存在するか否かを判定する。コントローラ30は、データが途中まで消去された消去待ちセクタ50がメモリコア4に存在する場合には、ステップs54において、当該消去待ちセクタ50の未消去のデータを消去して、当該消去待ちセクタ50を消去済みセクタ50に変更する。そしてステップs55において、コントローラ30は、動作モードをRIEモードからスタンバイモードに変更する。コントローラ30が、IEモードで動作する場合に、消去待ちセクタ50のデータを消去している最中にRIEコマンドを受け取ると、データが途中まで消去された消去待ちセクタ50が発生することになる。一方で、コントローラ30は、データが途中まで消去された消去待ちセクタ50がメモリコア4に存在しない場合には、ステップs55を実行して、動作モードをRIEモードからスタンバイモードに変更する。
【0154】
このように、本例では、コントローラは、IEモードにおいて消去待ちセクタ50のデータを消去している最中にRIEコマンドを受け取ると、動作モードをすぐにスタンバイモードに変更するのではなく、動作モードをいったんRIEモードに変更している。そして、コントローラ30は、RIEモードにおいて、データが途中まで消去された消去待ちセクタ50の未消去のデータを消去した後に、動作モードをスタンバイモードに変更している。したがって、動作モードがスタンバイモードに設定されたときには、IEモードにおいて途中までしかデータが消去されなかったセクタ50のデータはすべて消去されていることになる。よって、コントローラ30は当該セクタ50に対してデータをすぐに書き込むことができる。その結果、メモリ装置3の性能が向上する。
【0155】
なお、ある消去待ちセクタ50のデータの消去中に、コントローラ30の動作モードがIEモードからRIEモードに変化してステップs54が実行される場合であっても、コントローラ30が当該ある消去待ちセクタ50のデータを消去することには変わりがないことから、上述の図36に示される動作期間600,610,620,630が順に現れる。つまり、コントローラ30の動作モードにかかわらず、コントローラ30が消去待ちセクタ50のデータを消去する場合には、図36に示される動作期間600,610,620,630が順に現れる。
【0156】
<ホスト装置のコマンド発行動作>
図38は、ホスト装置2がセクタ50に対してデータを書き込む際に出力するコマンドの順番を示す図である。本例では、コントローラ30の動作モードは、基本的にはIEモードに設定されている。ホスト装置2がセクタ50にデータを書き込む際には、図38に示されるように、ホスト装置2のコントローラ20は、まずRIEコマンドを出力して、メモリ装置3のコントローラ30の動作モードをスタンバイモードに変更する。そして、コントローラ20は、消去コマンドを出力し、その後書き込みコマンドを出力する。セクタ50は8個のページPGで構成されていることから、ホスト装置2は、セクタ50の全ページPGにデータを書き込む場合には、8回書き込みコマンドを出力する。
【0157】
その後、ホスト装置2は、読み出しコマンドを、データを書き込んだページPGの数だけ出力して、データを書き込んだ各ページPGからデータを読み出す。ホスト装置2は、ページPGから読み出したデータと、当該ページPGに書き込んだデータとを比較して、当該ページPGに対して正しくデータが書き込まれていることを確認するベリファイ処理を行う。その後、コントローラ20はIEコマンドを出力し、コントローラ30の動作モードをIEモードに戻す。
【0158】
コントローラ20は、データを書き込むべき他のセクタ50が存在する場合には、IEコマンドを出力した後、RIEコマンド、消去コマンド、書き込みコマンド、読み出しコマンド及びIEコマンドを再度順に出力して、当該他のセクタ50にデータを書き込む。コントローラ20は、複数のセクタ50に対して連続的にデータを書き込む場合には、RIEコマンド、消去コマンド、書き込みコマンド、読み出しコマンド及びIEコマンドを順に出力する処理を繰り返し行う。
【0159】
ここで、上述のように、コントローラ30は、IEコマンドを受け取ってから所定時間が経過するまでにRIEコマンドを受け取ると、消去待ちセクタ50のデータを消去せずに、動作モードをIEモードからRIEモードに変更する。ホスト装置2のコントローラ20は、複数のセクタ50に対して連続的にデータを書き込む場合には、IEコマンドを出力してから所定時間が経過するまでにRIEコマンドを出力する。これにより、複数のセクタ50に対して連続的にデータが書き込まれる場合に、消去待ちセクタ50のデータが消去されることを防止できる。よって、メモリ装置3が複数のセクタ50に対してデータを書き込むために必要な時間が短縮化される。その結果、メモリ装置3の性能が向上する。
【0160】
また本例では、ホスト装置2は、コマンドを出力する順番を変更することなく、RIEコマンドを出力するタイミングを変更するだけで、メモリ装置3が消去待ちセクタ50のデータ消去を実行するか否かを制御することができる。よって、メモリ装置3が消去待ちセクタ50のデータ消去を実行するか否かをホスト装置2が制御する際の処理を簡素化できる。上述のように、ホスト装置2は、複数のセクタ50に対して連続的にデータを書き込む場合には、IEコマンドを出力してから所定時間が経過するまでにRIEコマンドを出力する。一方で、ホスト装置2は、メモリ装置3に消去待ちセクタ50のデータを消去させたい場合には、IEコマンドを出力してから所定時間が経過するまでにRIEコマンドを出力することは行わない。ホスト装置2は、コントローラ30の動作モードをスタンバイモードに設定したいときにRIEコマンドを出力する。ホスト装置2は、例えば、メモリ装置3に対してデータ書き込み及びデータ読み出しを行う必要がない期間はRIEコマンドを出力せずに、コントローラ30に消去待ちセクタ50のデータを消去させる。例えば、ホスト装置2は、メモリ装置3とは別に設けられたメモリ装置からアプリケーションプログラムを読み出す期間はRIEコマンドを出力せずに、コントローラ30に消去待ちセクタ50のデータを消去させる。これにより、メモリ装置3は、ホスト装置2からアクセスされないときに、消去待ちセクタ50のデータを消去することができる。よって、消去待ちセクタ50のデータ消去が、データ処理システム1全体での処理に悪影響を与える可能性を低減することができる。
【0161】
<メモリ装置の起動時の動作>
図39はメモリ装置3の起動時の動作の一例を示すフローチャートである。メモリ装置3に対する電源供給が開始すると、図39に示されるように、ステップs61において、コントローラ30は、各ステータス情報が正しいか否かを、各セクタ50の第2管理領域502のページ1〜3(第1〜第3更新管理領域)内のステータス更新情報に基づいて判定する正否判定を行う。コントローラ30は、正否判定において正しいと判定されたステータス情報を記憶するセクタ50を正常セクタ50とし、正否判定において正しくない判定されたステータス情報を記憶するセクタ50をエラーセクタ50とする。正否判定については後で詳細に説明する。
【0162】
次にステップs62において、コントローラ20は、各正常セクタ50について、当該正常セクタ50の第2管理領域502に、当該正常セクタ50の種類に応じたステータス更新情報を書き込む。
【0163】
具体的には、正常セクタ50が記憶するステータス情報がFFhを示す場合、コントローラ30は、当該正常セクタ50(消去済みセクタ50)の第2管理領域502のページ1に対してオール0(第1ステータス更新情報)を書き込む。
【0164】
また、正常セクタ50が記憶するステータス情報がAAhを示す場合、コントローラ30は、当該正常セクタ50(R/Wアクセスセクタ50)の第2管理領域502のページ2に対してオール0(第2ステータス更新情報)を書き込む。
【0165】
また、正常セクタ50が記憶するステータス情報が88hを示す場合、コントローラ30は、当該正常セクタ50(消去待ちセクタ50)の第2管理領域502のページ3に対してオール0(第3ステータス更新情報)を書き込む。
【0166】
ここで、メモリ装置3が動作している間に、セクタ50のページPGに対するデータ読み出しの回数が多くなると、当該ページPG内の情報に誤りが発生する可能性がある。本例のように、メモリ装置3の動作中に、正常セクタ50の第2管理領域502に対して、当該正常セクタ50の種類に応じたステータス更新情報が再度書き込まれることによって、メモリ装置3の動作中に、第2管理領域502内のステータス更新情報に誤りが発生する可能性を低減することができる。
【0167】
次にステップs63において、コントローラ30は、各エラーセクタ50について、当該エラーセクタ50のデータを消去して、当該エラーセクタ50を消去済みセクタ50に設定する。このとき、消去済みセクタ50に設定されたエラーセクタ50の第2管理領域502のページ1にはオール0が書き込まれる。
【0168】
次にステップs64において、コントローラ30は、各セクタ50に割り当てられた物理アドレスと、各セクタ50に記憶される情報とに基づいて、L2Pテーブル60及び管理テーブル70を生成する。ステップs64において、コントローラ30は、ステータス情報AAhを記憶するR/Wアクセスセクタ50に割り当てられた物理アドレスと、当該R/Wアクセスセクタ50の第1管理領域501内の論理アドレスと互いに対応付けてL2Pテーブルに登録する。またコントローラ30は、ステータス情報FFhを記憶する消去済みセクタ50に割り当てられた物理アドレスを管理テーブル70に登録する。このとき、メモリコア4に複数の消去済みセクタ50が存在する場合には、当該複数の消去済みセクタ50の物理アドレスに対して連続した複数の割当番号が対応付けられる。またコントローラ30は、ステータス情報88hを記憶する消去待ちセクタ50に割り当てられた物理アドレスを管理テーブル70に登録する。このとき、メモリコア4に複数の消去待ちセクタ50が存在する場合には、当該複数の消去待ちセクタ50の物理アドレスに対して連続した複数の割当番号が対応付けられる。
【0169】
なお、メモリコア4にエラーセクタ50が存在する場合には、そのエラーセクタ50が消去済みセクタ50に設定されることから、ステップs64が実行されるときに、メモリコア4に含まれるR/Wアクセスセクタ50の数が256個未満である可能性がある。このような場合には、コントローラ30は、R/Wアクセスセクタ50の数が256個となるように、所定数の消去済みセクタ50をR/Wアクセスセクタ50に変更する。そして、コントローラ30は、論理アドレス00h〜FFhのうち、元からR/Wアクセスセクタ50であった各セクタ50の第1管理領域501に記憶されていない論理アドレスを、R/Wアクセスセクタ50に変更した各セクタ50の第1管理領域501内に記憶する。これにより、ステップs64が実行されるときに、メモリコア4に含まれるR/Wアクセスセクタ50の数が256個未満であったとしても、最終的に生成されるL2Pテーブルでは256個のR/Wアクセスアドレスが登録される。
【0170】
図40は、コントローラ30が、正否判定において、あるセクタ50内のステータス情報が正しいか否かを判定する際の当該コントローラ30の動作の一例を示すフローチャートである。以後、説明対象のセクタ50を「対象セクタ50」と呼ぶことがある。また、対象セクタ50の第1管理領域501内のステータス情報を「対象ステータス情報」と呼ぶことがある。コントローラ30は、正否判定において、各セクタ50について図40に示される処理を実行する。
【0171】
図40に示されるように、ステップs611において、コントローラ30は、対象ステータス情報が想定される情報を示すか否かを判定する。具体的には、コントローラ30は、対象セクタ50から読み出した対象ステータス情報が、FFh、AAh及び88hのいずれか一つを示すか否かを判定する。コントローラ30は、ステップs611において、対象情報が想定される情報を示す場合、つまり対象ステータス情報がFFh、AAh及び88hのいずれか一つを示す場合、ステップs612を実行する。一方で、コントローラ30は、対象ステータス情報が想定される情報を示さない場合、つまり対象ステータス情報がFFh、AAh及び88h以外の情報を示す場合、ステップs614において、対象ステータス情報は正しくないと判定する。
【0172】
ここで、例えば、FFhであるステータス情報に誤りが発生すると、当該ステータス情報が例えばAAhとなる可能性がある。したがって、ステータス情報が想定される情報を示す場合であっても、当該ステータス情報が正しくない可能性がある。
【0173】
そこで、本例では、対象ステータス情報が想定される情報を示す場合、コントローラ30は、ステータス更新情報を使用して、対象ステータス情報が本当に正しい情報であるのか否かを判定する。
【0174】
ステップs612において、コントローラ30は、対象ステータス情報に対応する、対象セクタ50の第2管理領域502のページPGに、ステータス更新情報が書き込まれているか否かを判定する。以後、当該ページPGを「対応ページPG」と呼ぶ。対象ステータス情報がFFhを示す場合、対象セクタ50の第2管理領域502のページ1が対応ページPGとなる。対象ステータス情報がAAhを示す場合、対象セクタ50の第2管理領域502のページ2が対応ページPGとなる。対象ステータス情報が88hを示す場合、対象セクタ50の第2管理領域502のページ3が対応ページPGとなる。
【0175】
ステップs612において、コントローラ30は、対象ステータス情報がFFhを示す場合、対象セクタ50の第2管理領域502のページ1に、第1ステータス更新情報が書き込まれているか否かを判定する。つまり、コントローラ30は、対象セクタ50の第2管理領域502のページ1に、0000_0000hが書き込まれているか否かを判定する。コントローラ30は、対象セクタ50の第2管理領域502のページ1に、0000_0000hが書き込まれている場合、対応ページPGにステータス更新情報が書き込まれていると判定する。一方で、コントローラ30は、対象セクタ50の第2管理領域502のページ1に、0000_0000hが書き込まれていない場合、対応ページPGにステータス更新情報が書き込まれていないと判定する。
【0176】
またコントローラ30は、対象セクタ50内のステータス情報がAAhを示す場合、対象セクタ50の第2管理領域502のページ2に、第2ステータス更新情報が書き込まれているか否かを判定する。つまり、コントローラ30は、対象セクタ50の第2管理領域502のページ2に、0000_0000hが書き込まれているか否かを判定する。コントローラ30は、対象セクタ50の第2管理領域502のページ2に、0000_0000hが書き込まれている場合、対応ページPG内にステータス更新情報が記憶されていると判定する。一方で、コントローラ30は、対象セクタ50の第2管理領域502のページ2に、0000_0000hが書き込まれていない場合、対応ページPGにステータス更新情報が書き込まれていないと判定する。
【0177】
またコントローラ30は、対象セクタ50内のステータス情報が88hを示す場合、対象セクタ50の第2管理領域502のページ3に、第3ステータス更新情報が書き込まれているか否かを判定する。つまり、コントローラ30は、対象セクタ50の第2管理領域502のページ3に、0000_0000hが書き込まれているか否かを判定する。コントローラ30は、対象セクタ50の第2管理領域502のページ3に、0000_0000hが書き込まれている場合、対応ページPGにステータス更新情報が書き込まれていると判定する。一方で、コントローラ30は、対象セクタ50の第2管理領域502のページ3に、0000_0000hが書き込まれていない場合、対応ページPG内にステータス更新情報が書き込まれていないと判定する。
【0178】
コントローラ30は、ステップs612において、対応ページPGにステータス更新情報が書き込まれていると判定すると、ステップs613において対象ステータス情報が正しいと判定し、ステップs614において対象セクタ50を正常セクタ50とする。一方で、コントローラ30は、対応ページPGにステータス更新情報が書き込まれていないと判定すると、ステップs615において対象ステータス情報が正しくないと判定し、ステップs616において対象セクタ50をエラーセクタ50とする。
【0179】
以上のように、本例では、セクタ50の状態は、消去済みセクタ50からR/Wアクセスセクタ50に変更し、R/Wアクセスセクタ50から消去待ちセクタ50に変更し、消去待ちセクタ50から消去済みセクタに変更する。そして、ステータス情報がFFhに変更されると(セクタ50が消去済みセクタ50に変更されると)、第1ステータス更新情報が第2管理領域502のページ1に書き込まれ、ステータス情報がAAhに変更されると(セクタ50がR/Wアクセスセクタ50に変更されると)、第2ステータス更新情報が第2管理領域502のページ2に書き込まれ、ステータス情報が88hに変更されると(セクタ50が消去待ちセクタ50に変更されると)、第3ステータス更新情報が第2管理領域502のページ3に書き込まれる。したがって、ステータス情報が正しいか否かを、第2管理領域502のページ1〜3内のステータス更新情報に基づいて判定することによって、ステータス情報が正しいか否かをより正確に判定することができる。よって、メモリ装置3の性能が向上する。
【0180】
例えば、本来はFFhであるステータス情報に誤りが発生して当該ステータス情報がAAhとなっている場合、第2管理領域502のページ2には第2ステータス更新情報は記憶されていない。したがって、ステータス情報がAAhを示す場合に、第2管理領域502のページ2に第2ステータス更新情報が記憶されていない場合には、当該ステータス情報が正しくないと正確に判定することができる。また、本来はAAhであるステータス情報に誤りが発生して当該ステータス情報が88hとなっている場合、第2管理領域502のページ3には第3ステータス更新情報は記憶されていない。したがって、ステータス情報が88hを示す場合に、第2管理領域502のページ3に第3ステータス更新情報が記憶されていない場合には、当該ステータス情報が正しくないと正確に判定することができる。
【0181】
また本例では、ステータス更新情報を構成する複数ビットの値は“0”となっており、データ消去後のセクタ50の各ビットが示す値である“1”とは異なる値となっている。そのため、コントローラ30は、ステータス更新情報を、第2管理領域502のそれに対応するページPGに書き込む場合には、当該ページPGを構成する複数のビットのそれぞれの値を“1”から“0”に書き換える必要がある。したがって、上述のステップs612においては、対応ページPGの各ビットの値がすべて“1”から“0”に書き換えられているとき、対応ページPGにステータス更新情報が記憶されていると判定される。よって、ステップs61において、対応ページPGに対してステータス更新情報が記憶されていると誤って判定される可能性を低減することができる。その結果、正否判定において、ステータス情報が正しいと誤って判定される可能性を低減することができる。
【0182】
なお上記の例では、第1〜第3ステータス更新情報のすべてを0000_0000hとしたが、第1〜第3ステータス更新情報の少なくとも一つの情報を0000_0000hとしてもよい。また、ステータス更新情報は0000_0000h以外であってもよい。
【0183】
また上記の例では、メモリ装置3の起動時にステップs61〜s63が実行されているが、メモリ装置3の起動時以外においてステップs61〜s63が実行されてもよい。
【0184】
<各種変形例>
以下にメモリ装置3の各種変形例について説明する。
【0185】
<第1変形例>
例えば、本来はAAhであるステータス情報に誤りが発生して当該ステータス情報がFFhとなっている場合、FFhに対応する第2管理領域502のページ1には、第1ステータス更新情報が記憶されている。したがって、この場合には、図40の正否判定では、ステップs612でYESと判定され、ステータス情報が誤って正しいと判定されてしまう。
【0186】
そこで、本変形例では、図41に示されるように、コントローラ30はステップs612の後にステップs618を実行する。ステップs618では、コントローラ30は、対象セクタ50の第2管理領域502における、対応ページPGの次の番号のページPG(以後、単に「次のページPG」と呼ぶ)にステータス更新情報が書き込まれているか否かを判定する。つまり、コントローラ30は次のページPGに0000_0000hが書き込まれているか否かを判定する。コントローラ30は、対応ページPGが、第2管理領域502のページ1であれば、次のページPGである第2管理領域502のページ2に0000_0000hが書き込まれているか否かを判定する。コントローラ30は、対応ページPGが、第2管理領域502のページ2であれば、次のページPGである第2管理領域502のページ3に0000_0000hが書き込まれているか否かを判定する。コントローラ30は、対応ページPGが、第2管理領域502のページ3であれば、次のページPGである第2管理領域502のページ4に0000_0000hが書き込まれているか否かを判定する。
【0187】
コントローラ30は、次のページPGに0000_0000hが書き込まれていない場合には、ステップs613において対象ステータス情報が正しいと判定してステップs614を実行する。一方で、コントローラ30は、次のページPGに0000_0000hが書き込まれている場合には、ステップs615において対象ステータス情報が正しくないと判定してステップs616を実行する。
【0188】
このように、本変形例では、コントローラ30は、対象ステータス情報が想定される情報を示し、かつ対応ページPGにステータス更新情報が書き込まれている場合には、すぐに対象ステータス情報が正しいと判定するのではなく、次のページにステータス更新情報が書き込まれているか否かの判定結果に基づいて、対象ステータス情報が正しいか否かを判定している。したがって、ステータス情報が正しいか否かをより正確に判定することができる。
【0189】
なお、第2管理領域502のページ4は未使用であることから、コントローラ30は、ステップs618において、対応ページPGが、第2管理領域502のページ3であれば、第2管理領域502のページ4に0000_0000hが書き込まれているか否かを判定せずに、ステップs615を実行してもよい。
【0190】
<第2変形例>
本変形例では、コントローラ30は、ステータス情報をFFhに変更した場合、その変更の後の第1管理領域501に記憶される全データを誤り訂正符号化して得られる第1誤り訂正符号を第1ステータス更新情報として、第2管理領域502のページ1に書き込む。例えば、上述の図20のステップs27及び図31のステップs40において、コントローラ30は、特定消去待ちアドレスのセクタ50の第1管理領域501に記憶されるデータを誤り訂正符号化して得られる第1誤り訂正符号を、当該セクタ50の第2管理領域502のページ1に書き込む。
【0191】
またコントローラ30は、ステータス情報をAAhに変更した場合、その変更の後の第1管理領域501に記憶される全データを誤り訂正符号化して得られる第2誤り訂正符号を第2ステータス更新情報として、第2管理領域502のページ2に書き込む。例えば、上述の図12のステップs5において、コントローラ30は、特定消去済みアドレスのセクタ50の第1管理領域501に記憶されるデータを誤り訂正符号化して得られる第2誤り訂正符号を、当該セクタ50の第2管理領域502のページ2に書き込む。
【0192】
またコントローラ30は、ステータス情報を88hに変更した場合、その変更の後の第1管理領域501に記憶される全データを誤り訂正符号化して得られる第3誤り訂正符号を第3ステータス更新情報として、第2管理領域502のページ3に書き込む。例えば、上述の図12のステップs8において、コントローラ30は、特定R/Wアクセスアドレスのセクタ50の第1管理領域501に記憶されるデータを誤り訂正符号化して得られる第3誤り訂正符号を、当該セクタ50の第2管理領域502のページ3に書き込む。
【0193】
コントローラ30は、第1管理領域501に記憶されるデータを、例えば、BCC(Block Check Character)、BCH符号あるいはリード・ソロモン符号などのECC(Error Correction Code)を用いて誤り訂正符号化してよい。本変形例では、コントローラ30は、第1管理領域501に記憶されるすべてのデータを誤り訂正符号化しているが、第1管理領域501に記憶される必要なデータのみ、つまりステータス情報及び論理アドレスだけを誤り訂正符号化してもよい。また、コントローラ30は、ステータス情報だけを誤り訂正符号化してもよい。以後、第1〜第3誤り訂正符号を互いに区別する必要がないときには、それぞれを「誤り訂正符号」と呼ぶ。
【0194】
図42は、ステップs61で実行される本変形例に係る正否判定の一例を示すフローチャートである。正否判定において、コントローラ30は、各セクタ50について図42に示される処理を実行する。
【0195】
図42に示されるように、ステップs101において、コントローラ30は、上述のステップs611と同様に、対象ステータス情報が想定される情報を示すか否かを判定する。コントローラ30は、対象ステータス情報が想定される情報を示さない場合、ステップs108において、対象ステータス情報は正しくないと判定する。そして、ステップs109において、コントローラ30は対象セクタ50をエラーセクタ50とする。一方で、コントローラ30は、対象ステータス情報が想定される情報を示す場合、ステップs102において、対応ページPG内の全データを誤り訂正復号化する。以後、誤り訂正復号化を単に「復号化」と呼ぶことがある。
【0196】
ステップs102の後、ステップs103において、コントローラ30は、ステップs102において正しく復号化できたか否かを判定する。正しく復号化できた場合には、誤り訂正符号化した元のデータが復元される。コントローラ30は、正しく復号化できた場合にはステップs104を実行する。一方で、コントローラ30は、正しく復号化できなかった場合には、ステップs112を実行する。対応ページPG内に誤り訂正符号が記憶されていない場合には、コントローラ30は正しく復号化できない。また、誤り訂正能力を超えるビット数の誤りが対応ページPG内の誤り訂正符号に発生している場合には、コントローラ30は、対応ページPG内のデータに含まれるすべての誤りを訂正できず、正しく復号化ができない。以後、正しく復号化されることによって得られるデータを「復号化データ」と呼ぶ。
【0197】
ステップs104では、コントローラ30は、対象ステータス情報と、復号化データ(復元された元のデータ)に含まれるステータス情報とが一致するか否かを判定する。コントローラ30は、対象ステータス情報と、復号化データに含まれるステータス情報とが一致する場合には、ステップs105を実行する。一方で、コントローラ30は、対象ステータス情報と、復号化データに含まれるステータス情報とが一致しない場合には、ステップs110において、次のページPGにデータが書き込まれているか否かを判定する。コントローラ30は、次のページPGの各ビットの値が“1”であれば、次のページPGにデータが書き込まれていないと判定する。一方で、コントローラ30は、次のページPGのいずれかのビットの値が“0”であれば、次のページPGにデータが書き込まれていると判定する。コントローラ30は、次のページPGにデータが書き込まれていると判定すると、ステップs111を実行する。一方で、コントローラ30は、次のページPGにデータが書き込まれていないと判定すると、ステップs108において対象ステータス情報が正しくないと判定する。そして、コントローラ30はステップs109を実行する。
【0198】
ステップs105において、コントローラ30は、上述のステップs110と同様に、次のページPGにデータが書き込まれているか否かを判定する。コントローラ30は、次のページPGにデータが書き込まれていると判定する場合、ステップs111を実行する。一方で、コントローラ30は、次のページPGにデータが書き込まれていないと判定する場合、ステップs106において、対象ステータス情報は正しいと判定する。そして、ステップs107において、コントローラ30は対象セクタ50を正常セクタ50とする。
【0199】
ステップs103でNOと判定されたときに実行されるステップs112において、コントローラ30は、ステップs110と同様に、次のページPGにデータが書き込まれているか否かを判定する。コントローラ30は、次のページPGにデータが書き込まれていると判定すると、ステップs111を実行する。一方で、コントローラ30は、次のページPGにデータが書き込まれていないと判定すると、ステップs113において、対象ステータス情報の正否は不明であると判断する。そしてステップs109において、コントローラ30は、正否が不明である対象ステータス情報を記憶する対象セクタ50をエラーセクタ50とする。
【0200】
ステップs111では、コントローラ30は、次のページPG内のデータを復号化する。そしてステップs114において、コントローラ30は、ステップs111において正しく復号化できたか否かを判定する。コントローラ30は、正しく復号化できたと判定すると、ステップs108において対象ステータス情報は正しくないと判定する。そして、コントローラ30はステップs109を実行する。次のページPG内のデータを正しく復号化できたということは、次のページPGに誤り訂正符号が記憶されていることを意味する。一方で、対象ステータス情報が正しい場合には、次のページPGに誤り訂正符号が記憶されない。したがって、ステップs114において正しく復号化できたと判定される場合には、対象ステータス情報は正しくないと言える。
【0201】
一方で、ステップs114において、コントローラ30は、正しく復号化できなかったと判定すると、ステップs113において、対象ステータス情報の正否は不明であると判定する。そして、コントローラ30はステップs109を実行する。
【0202】
以上のように、ステータス更新情報として誤り訂正符号が採用されることによって、ステータス更新情報に含まれる誤りを訂正することができる。よって、ステータス情報が正しいか否かをより正確に判定することができる。
【0203】
なお、第1〜第3ステータス更新情報のすべてを誤り訂正符号としたが、第1〜第3ステータス更新情報の少なくとも一つの情報を誤り訂正符号としてもよい。
【0204】
<第3変形例>
本変形例に係るメモリ装置3は、上述の第2変形例に係るメモリ装置3での正否判定を変更したものである。本変形例では、コントローラ30は、ステップs61での正否判定において、ステータス情報が正しいか否かを判定するだけではなく、ステータス情報に含まれる誤りの原因の推定と、その誤りの修復を行う。図43〜46は、本変形例に係る正否判定の一例を示すフローチャートである。正否判定において、コントローラ30は、各セクタ50について図43〜46に示される処理を実行する。以下では、本変形例に係るメモリ装置3と第2変形例に係るメモリ装置3との相違点を主に説明する。
【0205】
図43に示されるように、コントローラ30は、上述のステップs101を実行する。ステップs101において、コントローラ30は、対象ステータス情報が想定される情報を示さないと判定すると、ステップs125において、対象ステータス情報は正しくないと判定する。そして、コントローラ30は、図44に示されるステップs131を実行する。一方で、コントローラ30は、対象ステータス情報が想定される情報を示すと判定すると、上述のステップs102,s103を実行する。
【0206】
ステップs103において、コントローラ30は、正しく復号化できなかったと判定すると、上述のステップs112を実行する。ステップs112において、コントローラ30は、次のページにデータが書き込まれていると判定すると、図45に示されるステップs151を実行する。一方で、コントローラ30は、次のページにデータが書き込まれていないと判定すると、上述のステップs113を実行して、対象ステータス情報の正否は不明であると判断する。そして、コントローラ30は、上述のステップs109を実行して、対象セクタ50をエラーセクタ50とする。
【0207】
ステップs103において、コントローラ30は、正しく復号化できたと判定すると、ステップs121において、対象セクタ50の第1管理領域501の全データと、復号化データ(復元された元のデータ)とが一致するか否かを判定する。コントローラ30は、対象セクタ50の第1管理領域501の全データと復号化データとが一致すると判定すると、ステップs122において、次のページPGにデータが書き込まれているか否かを判定する。コントローラ30は、次のページPGにデータが書き込まれていないと判定すると、ステップs123において、第1管理領域の全データが正しいと判定する。これにより、対象ステータス情報が正しいと判定される。そして、ステップs124において、対象セクタ50を正常セクタ50とする。一方で、コントローラ30は、ステップs122において、次のページPGにデータが書き込まれていると判定すると、図45に示されるステップs151を実行する。以後、第1管理領域501のデータを「第1管理データ」と呼ぶことがある。本変形例では、第1管理データには、ステータス情報及び論理アドレスが含まれる。
【0208】
ステップs121において、コントローラ30は、対象セクタ50の第1管理領域501のデータと復号化データとが異なっていると判定すると、ステップs126において、次のページPGにデータが書き込まれているか否かを判定する。コントローラ30は、次のページPGにデータが書き込まれていると判定すると、図45に示されるステップs151を実行する。一方で、コントローラ30は、次のページPGにデータが書き込まれていないと判定すると、ステップs127において、対象ステータス情報は正しくないと判定する。そして、コントローラ30は、図46に示されるステップs171を実行する。
【0209】
図44に示されるステップs131では、コントローラ30は、対象セクタ50の第2管理領域502への書き込みが最新のデータを復号化する。以後、対象セクタ50の第2管理領域502への書き込みが最新のデータを単に「最新のデータ」と呼ぶ。
【0210】
ステップs131において、コントローラ30は、まず、対象セクタ50の第2管理領域502のページ3にデータが書き込まれているか否かを判定する。コントローラ30は、対象セクタ50の第2管理領域502のページ3にデータが書き込まれている場合には、当該データを、最新のデータとして復号化する。コントローラ30は、対象セクタ50の第2管理領域502のページ3にデータが書き込まれていない場合には、対象セクタ50の第2管理領域502のページ2にデータが書き込まれているか否かを判定する。コントローラ30は、対象セクタ50の第2管理領域502のページ2にデータが書き込まれている場合には、当該データを、最新のデータとして復号化する。コントローラ30は、対象セクタ50の第2管理領域502のページ2にデータが書き込まれていない場合には、対象セクタ50の第2管理領域502のページ1に書き込まれているデータを、最新の誤り訂正符号として復号化する。
【0211】
ステップs131の後、ステップs132において、コントローラ30は、ステップs31において正しく復号化できたか否かを判定する。コントローラ30は、正しく復号化できないと判定すると、ステップs133において、対象セクタ50をエラーセクタ50とする。
【0212】
ステップs132において、コントローラ30は、正しく復号化できたと判定すると、ステップs134において、ステップs131で得られた復号化データに基づいて、対象セクタ50の第1管理データの各ビットについてビット化け方向確認を行う。ここで、ビット化け方向確認とは、ビットの値が、“1”から“0”に誤っているのか(化けているのか)、“0”から“1”に誤っているのか(化けているのか)いるかを推定することを意味する。
【0213】
ここで、復号化データは、第1管理データの正しい値を示していると考えることができる。言い換えれば、復号化データは、誤りを含まない第1管理データを示していると考えることができる。したがって、第1管理データのあるビットの値が、復号化データにおける、当該あるビットと同じビット位置のビットの値と異なっている場合には、当該あるビットの値は誤っていると推定できる。以後、第1管理データにおける、誤っていると推定されるビットの値を「誤りビット値」と呼ぶ。また、誤りビット値が“1”を示す場合、当該誤りビット値は“0”から“1”に誤っていると言える。一方で、誤りビット値が“0”を示す場合、当該誤りビット値は“1”から“0”に誤っていると言える。“1”を示す誤りビット値を「誤りビット値(0→1)」と呼び、“0”を示す誤りビット値を「誤りビット値(1→0)」と呼ぶ。
【0214】
ビット化け方向確認において、コントローラ30は、第1管理データを構成する32ビットの値と、復号化データを構成する32ビットのビットの値とを、同じビット位置同士で比較することによって、第1管理データに含まれる誤りビット値を特定する。コントローラ30は、特定した誤りビット値がすべて誤りビット値(0→1)である場合には、ステップs139において、第1管理データに含まれる誤りの原因は、リテンションであると推定する。リテンションとは、時間の経過によってメモリセルに格納された電子が抜けて、記憶領域5内のデータのビットの値が“0”から“1”に変化する現象である。特定した誤りビット値がすべて誤りビット値(0→1)であって、対象ステータス情報に誤りビット値が含まれる場合には、対象ステータス情報に含まれる誤りの原因がリテンションであると推定できる。
【0215】
またコントローラ30は、特定した誤りビット値がすべて誤りビット値(1→0)である場合には、ステップs137において、第1管理データに含まれる誤りの原因は、リードディスターブであると推定する。リードディスターブとは、記憶領域5に対するデータ読み出しによって生じる、記憶領域5内のデータのビットの値が“1”から“0”に変化する現象である。特定した誤りビット値がすべて誤りビット値(1→0)であって、対象ステータス情報に誤りビット値が含まれる場合には、対象ステータス情報に含まれる誤りの原因がリードディスターブであると推定できる。
【0216】
そして、コントローラ30は、特定した誤りビット値に誤りビット値(1→0)及び誤りビット値(0→1)の両方が含まれる場合には、ステップs135おいて、第1管理データに含まれる誤りの原因は、第1管理領域501にデータを書き込んでいる最中あるいはセクタ50のデータ消去中にメモリ装置3に対する電源供給が停止したことであると推定する。特定した誤りビット値に誤りビット値(1→0)及び誤りビット値(0→1)の両方が含まれ、対象ステータス情報に誤りビット値が含まれる場合には、対象ステータス情報に含まれる誤りの原因は、第1管理領域501にステータス情報を書き込んでいる最中あるいはセクタ50のデータ消去中にメモリ装置3に対する電源供給が停止したことであると推定できる。
【0217】
コントローラ30は、ステップs139の後、ステップs140において、第1管理データに含まれる誤りを修復する。コントローラ30は、メモリコア4に対して書き込みコマンドを出力することによって、ページPG単位でセクタ50のビットに“0”を書き込むことができる。コントローラ30は、第1管理データに含まれる各誤りビット値(0→1)について、当該誤りビット値(0→1)を有するビットに“0”を書き込む。これにより、第1管理データに含まれる誤りが修復され、正しい第1管理データを得ることができる。
【0218】
コントローラ30は、ステップs137の後、ステップs138において、第1管理データに含まれる誤りを修復する。コントローラ30は、メモリコア4に対して書き込みコマンドを出力することによって、ページPG単位でセクタ50のビットに“1”を書き込むことはできない。コントローラ30は、対象セクタ50のデータを一度消去した上で、対象セクタ50の第1管理領域501に、正しいデータ、つまりステップs131で得られた復号化データを書き込む。これにより、第1管理データの誤りが修復される。このとき、対象セクタ50の第2管理領域502には、対象セクタ50のデータの消去前に第2管理領域502記憶されていたデータが書き込まれる。
【0219】
コントローラ30は、ステップs135の後、ステップs136において、第1管理データに含まれる誤りを、ステップs138と同様にして修復する。コントローラ30は、対象セクタ50のデータを消去した後、対象セクタ50の第1管理領域501に、正しいデータ、つまりステップs131で得られた復号化データを書き込む。これにより、第1管理データの誤りが修復される。このとき、対象セクタ50の第2管理領域502には、対象セクタ50のデータの消去前に第2管理領域502記憶されていたデータが書き込まれる。
【0220】
ステップs140の後、コントローラ30は、ステップs141において対象セクタ50を正常セクタ50にする。コントローラ30は、ステップs138の後、ステップs141を実行して、対象セクタ50を正常セクタ50にする。コントローラ30は、ステップs136の後、ステップs141を実行して、対象セクタ50を正常セクタ50にする。
【0221】
図47は、ステップs135において、第1管理データに含まれる誤りの原因が、第1管理領域501にデータを書き込んでいる最中にメモリ装置3に対する電源供給が停止したことであると推定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。図48は、ステップs137において、第1管理データに含まれる誤りの原因がリードディスターブであると推定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。図49は、ステップs139において、第1管理データに含まれる誤りの原因がリテンションであると推定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。図47〜49では、左側にページ0〜7の本来の正しいデータが示されており、右側に対象セクタ50の管理領域50Bのページ0〜7の誤りを含むデータが示されている。後述の図についても同様である。図47〜49では、右側に示されるデータでは、誤りが発生している部分に下線が示されている。後述の図についても同様である。図47〜49では、ページPG内の正しく復号化できる誤り訂正符号が「XXXX_XXXX」で示されている。後述の図についても同様である。図48,49の例では、対象ステータス情報に誤りが発生している。
【0222】
図45に示されるステップs151では、コントローラ30は、次のページPG内のデータを復号化する。そして、ステップs152において、コントローラ30は、ステップs151において正しく復号化できたか否かを判定する。コントローラ30は、正しく復号化できないと判定すると、ステップs153において、対象ステータス情報の正否は不明であると判定する。そしてステップs154において、コントローラ30は対象セクタ50をエラーセクタ50とする。
【0223】
ステップs152において、コントローラ30は、正しく復号化できたと判定すると、ステップs155において、対象ステータス情報は正しくないと判定する。次のページPG内のデータを正しく復号化できたということは、次のページPG内には誤り訂正符号が書き込まれていることになる。対象ステータス情報が正しい場合には、次のページPGには誤り訂正符号は書き込まれていない。したがって、ステップs152において正しく復号化できたと判定されたときには、言い換えれば、次のページPGに誤り訂正符号が記憶されているときには、対象ステータス情報が正しくないと言える。
【0224】
ステップs155の後、ステップs156において、コントローラ30は、上述のステップs134と同様にして、ステップs151で得られた復号化データに基づいて、対象セクタ50の第1管理データの各ビットについてビット化け方向確認を行う。
【0225】
コントローラ30は、特定した誤りビット値がすべて誤りビット値(0→1)である場合には、ステップs161において、第1管理データに含まれる誤りの原因はリテンションであると推定する。またコントローラ30は、ビット化け方向確認において特定した誤りビット値がすべて誤りビット値(1→0)である場合には、ステップs159において、第1管理データに含まれる誤りの原因はリードディスターブであると推定する。そして、コントローラ30は、特定した誤りビット値に誤りビット値(1→0)及び誤りビット値(0→1)の両方が含まれる場合には、ステップs157おいて、第1管理データに含まれる誤りの原因は、第1管理領域501にデータを書き込んでいる最中あるいはセクタ50のデータ消去中にメモリ装置3に対する電源供給が停止したことであると推定する。
【0226】
コントローラ30は、ステップs161の後、ステップs162において、第1管理データに含まれる誤りを、上述のステップs140と同様にして修復する。そして、コントローラ30は、ステップs163において、対象セクタ50を正常セクタ50とする。
【0227】
コントローラ30は、ステップs159の後、ステップs160において、第1管理データに含まれる誤りを、上述のステップs138と同様にして修復する。そして、コントローラ30は、ステップs163を実行する。
【0228】
コントローラ30は、ステップs157の後、ステップs158において、第1管理データに含まれる誤りを、上述のステップs136と同様にして修復する。そして、コントローラ30は、ステップs163を実行する。
【0229】
図50は、ステップs126においてYESと判定された場合に実行されるステップs157において、第1管理データに含まれる誤りの原因が、第1管理領域501にデータを書き込んでいる最中にメモリ装置3に対する電源供給が停止したことであると推定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。図51は、ステップs126においてYESと判定された場合に実行されるステップs161において、第1管理データに含まれる誤りの原因がリテンションであると推定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。図51の例では、対象ステータス情報に誤りが発生している。
【0230】
図52は、ステップs122においてYESと判定された場合に実行されるステップs152において、正しく復号化できなかったと判定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。図52では、正しく復号化できなかった次のページPG内のデータが太字の「YYYY_YYYY」で示されている。図52の例では、第1管理データに誤りが含まれていない。図53,54は、ステップs122においてYESと判定された場合に実行されるステップs161において、第1管理データに含まれる誤りの原因がリテンションであると推定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。図53,54の例では、対象ステータス情報に誤りが発生している。
【0231】
図46に示されるステップs171では、コントローラ30は、上述のステップs134と同様にして、ステップs102で得られた復号化データに基づいて、対象セクタ50の第1管理データの各ビットについてビット化け方向確認を行う。
【0232】
コントローラ30は、ビット化け方向確認において特定した誤りビット値がすべて誤りビット値(0→1)である場合には、ステップs176において、第1管理データに含まれる誤りの原因はリテンションであると推定する。またコントローラ30は、特定した誤りビット値がすべて誤りビット値(1→0)である場合には、ステップs174において、第1管理データに含まれる誤りの原因はリードディスターブであると推定する。そして、コントローラ30は、特定した誤りビット値に誤りビット値(1→0)及び誤りビット値(0→1)の両方が含まれる場合には、ステップs172おいて、第1管理データに含まれる誤りの原因は、第1管理領域501にデータを書き込んでいる最中あるいはセクタ50のデータ消去中にメモリ装置3に対する電源供給が停止したことであると推定する。
【0233】
コントローラ30は、ステップs176の後、ステップs177において、第1管理データに含まれる誤りを、上述のステップs140と同様にして修復する。そして、コントローラ30は、ステップs178において、対象セクタ50を正常セクタ50とする。
【0234】
コントローラ30は、ステップs174の後、ステップs175において、第1管理データに含まれる誤りを、上述のステップs138と同様にして修復する。そして、コントローラ30は、ステップs178を実行する。
【0235】
コントローラ30は、ステップs172の後、ステップs173において、第1管理データに含まれる誤りを、上述のステップs136と同様にして修復する。そして、コントローラ30は、ステップs178を実行する。
【0236】
図55は、ステップs174において、第1管理データに含まれる誤りの原因がリードディスターブであると推定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。図56は、ステップs176において、第1管理データに含まれる誤りの原因がリテンションであると推定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。
【0237】
図57は、ステップs103において正しく復号化できなかったと判定され、ステップs112において次のページPGにデータが書き込まれていないと判定される場合の対象セクタ50の管理領域50B内のデータの一例を示す図である。図57では、正しく復号化できなかった対応ページPG内のデータが太字の「YYYY_YYYY」で示されている。
【0238】
以上のようにして、コントローラ30は、対象セクタ50が記憶する第1管理データの誤りの原因を推定すると、推定した誤りの原因を、対象セクタ50の管理領域50Bの未使用のページPG(例えばページ7)に記憶する。このとき、コントローラ30は、推定した誤りの原因を、その誤りの原因を推定した日時とともに管理領域50Bに記憶してもよい。これにより、メモリ装置3のユーザは、どのセクタ50でどのような誤りが発生したのかを特定することができる。ユーザは、特定した内容に基づいて、メモリ装置3の使用状態等を推定し、その推定結果を設計変更等に役立てることができる。
【0239】
<第4変形例>
本変形例では、コントローラ30は、セクタ50のホストデータ領域50Aに記憶される出力データ210を誤り訂正符号化して得られる第4誤り訂正符号を、当該セクタ50の管理領域50Bにおける、第1管理領域501及び第2管理領域502以外の領域に書き込む。本変形例では、コントローラ30は、例えば管理領域50Bのページ4に第4誤り訂正符号を書き込む。
【0240】
図58は本変形例に係るメモリ装置3が対象セクタ50に出力データ210を書き込む場合の動作例を説明するための図である。図58の上側には、新しい出力データ210が書き込まれる前の対象セクタ50、つまり、古い出力データ210を記憶する対象セクタ50が示されている。コントローラ30は、新しい出力データ210を対象セクタ50に書き込む際には、上述のように、対象セクタ50のデータを消去した後に、新しい出力データ210を対象セクタ50のホストデータ領域50Aに書き込む。図58の中央部には、新しい出力データ210が書き込まれた直後の対象セクタ50が示されている。
【0241】
コントローラ30は、対象セクタ50に新しい出力データ210を書き込むと、ホストデータ領域50Aに対してベリファイ処理を行う。コントローラ30は、対象セクタ50のホストデータ領域50Aの最後のページPGに対するベリファイ処理を完了すると、ホストデータ領域50Aに書き込んだ出力データ210全体を誤り訂正符号化して第4誤り訂正符号を生成する。そして、コントローラ30は、生成した第4誤り訂正符号を、対象セクタ50の管理領域50Bのページ4に書き込む。図58の下側には、第4誤り訂正符号が管理領域50Bのページ4に書き込まれた対象セクタ50が示されている。
【0242】
コントローラ30は、複数のセクタ50に対して連続的に出力データ210を書き込む際には、上記の処理を繰り返し行う。
【0243】
またコントローラ30は、対象セクタ50のホストデータ領域50Aの一部にだけしか出力データ210を書き込まない場合には、ホストデータ領域50A全体のデータではなく、ホストデータ領域50Aに書き込んだ出力データ210だけを誤り訂正符号化し、それによって得られた第4誤り訂正符号を管理領域50Bのページ4に書き込む。図59の上側には、ホストデータ領域50Aの一部にだけ出力データ210が書き込まれた対象セクタ50が示されており、図59の下側には、その対象セクタ50に対して第4誤り訂正符号が書き込まれた様子が示されている。
【0244】
このように、ホストデータ領域50Aに記憶される出力データ210を誤り訂正符号化して得られる第4誤り訂正符号が、管理領域50Bに書き込まれることによって、第4誤り訂正符号から、ホストデータ領域50Aに記憶される正しい出力データ210を得ることができる。よって、メモリ装置3の性能が向上する。
【0245】
以上のように、データ処理システム1は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【0246】
1 データ処理システム
2 ホスト装置
3 メモリ装置
4 メモリコア
5 記憶領域
30 コントローラ
50A ホストデータ領域(ユーザデータ領域)
50B 管理領域(冗長領域)
200,300 制御プログラム
501 第1管理領域
502 第2管理領域
PG ページ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46
図47
図48
図49
図50
図51
図52
図53
図54
図55
図56
図57
図58
図59