JP2013171343A - ストレージデバイス - Google Patents

ストレージデバイス Download PDF

Info

Publication number
JP2013171343A
JP2013171343A JP2012033313A JP2012033313A JP2013171343A JP 2013171343 A JP2013171343 A JP 2013171343A JP 2012033313 A JP2012033313 A JP 2012033313A JP 2012033313 A JP2012033313 A JP 2012033313A JP 2013171343 A JP2013171343 A JP 2013171343A
Authority
JP
Japan
Prior art keywords
error
block
occurred
physical block
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012033313A
Other languages
English (en)
Inventor
Takeaki Kato
丈明 加藤
Hitoshi Shimono
仁司 下野
Akinori Kamizono
明典 神園
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2012033313A priority Critical patent/JP2013171343A/ja
Priority to US13/600,124 priority patent/US9043675B2/en
Publication of JP2013171343A publication Critical patent/JP2013171343A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】エラーが真に発生した物理ブロックを特定することができるストレージデバイスを提供する。
【解決手段】不揮発性メモリは、消去単位としてのブロックを複数備え、各ブロックは書き込み単位としてのページを複数有する。コントローラは、論理アドレスにて指定された前記不揮発性メモリのブロックから読み出したデータに対して、エラーの検出及び訂正を行い、エラーが訂正できないときにエラー発生を通知するエラー訂正回路と、エラー訂正回路及び不揮発性メモリの動作を制御する処理回路とを備える。処理回路は、エラー訂正回路からエラー発生の通知を受け取ったとき、エラーが発生した論理アドレスと前記論理アドレスに対応する物理アドレスを登録したエラーブロックテーブルを生成する。
【選択図】図4

Description

本発明の実施形態は、不揮発性メモリを搭載したストレージデバイスに関するものである。
不揮発性メモリ(例えば、NAND型フラッシュメモリ)を搭載したストレージデバイス、例えば、SD(Secure Digital)カードなどのメモリカードでは、一般的にビットエラーが発生することを前提に使用される。
例えば、NAND型フラッシュメモリでは、フローティングゲートに保存した電子が自然と抜けてしまうことで発生するデータ破壊(データリテンション)や、同じブロックに対するリードの繰り返しなどによるストレスでデータが破壊(リードディスターブ)することによりエラーが発生する。このため、ECC(Error Checking and Correction)回路によるエラー訂正技術を用いてビットエラーを訂正しながら使用するのが一般的である。
ECC回路の訂正能力は使用するECCのアルゴリズムによって異なるが、そのアルゴリズムで訂正できる範囲内であれば、ビットエラーを全て訂正でき、正しいデータを読み出すことができる。
一方で、ECC回路の訂正範囲を超えるビットエラーが発生した場合、ECC回路はビットエラーを全て訂正できないため、エラーが発生していることを通知する。この場合、メモリカードは正しいデータを出力することができず、メモリカードはホスト機器へエラーが発生したことを通知する。以下、ECC回路にて訂正不可能なエラーが発生してECC回路から通知されたエラーを、ECCエラーと記す。
ECCエラーが発生するほどのビットエラーが発生するケースは、上述したデータリテンションやリードディスターブが特に悪化したケース(製造時のプロセスに起因するNANDメモリセルの問題)や、NAND型フラッシュメモリを制御するファームウェアの問題や、ホスト機器のアクセスパターンによる問題、またはNAND型フラッシュメモリの寿命と様々考えられる。
場合によっては、ECCエラーが発生した原因を調査する必要があり、ECCエラーが発生したNAND型フラッシュメモリにおける物理ブロックを特定する必要がある。ECCエラーが発生した物理ブロックを特定する場合、その物理ブロックが最初にECCエラーが発生した物理ブロックのままであれば、その物理ブロックを特定することは容易である。
しかし、コントローラが実行するファームウェアのアルゴリズムによっては、ECCエラーが発生した物理ブロックがバックグラウンド処理で別の物理ブロックにコピーされてしまうことも考えられる。
例えば、ある物理ブロックに書かれているアドレスのデータでECCエラーが発生したとする。次に、この物理ブロック内でECCエラーが発生した物理アドレス以外の箇所にデータライトが発生した場合、NAND型フラッシュメモリの特性上、特定の箇所のみ上書きすることはできないため、別の物理ブロックを取得し、新しくライトされるデータ以外のデータは元の物理ブロックからコピーされる。そして、物理ブロックが確定したタイミングで、論理アドレスと物理アドレスの繋がりを示すテーブルが更新される。
このような場合は、論理アドレスとECCエラーが真に発生した物理ブロックとの繋がりが無くなってしまうため、ECCエラーが真に発生した物理ブロックを特定することが困難となる。
一方で、ECCエラーが発生した場合に、その物理ブロックをテーブルに登録/管理する技術提案がされているが、あくまでNAND型フラッシュメモリの特定ブロックへのリードでECCエラーが発生した時に、そのブロックを登録/管理するのみである。このため、バックグラウンド処理で別の物理ブロックにコピーが行われ、物理ブロックが変わってしまった場合、コピー前とコピー後の物理ブロックの繋がりがないため、ECCエラーが真に発生した物理ブロックを特定することは困難である。
国際公開番号WO2007/010829号
エラーが真に発生した物理ブロックを特定することができるストレージデバイスを提供する。
一実施態様のストレージデバイスは、不揮発性メモリと前記不揮発性メモリを制御するコントローラとを備えたストレージデバイスにおいて、前記不揮発性メモリは、消去単位としてのブロックを複数備え、各ブロックは書き込み単位としてのページを複数有し、前記コントローラは、論理アドレスにて指定された前記不揮発性メモリのブロックから読み出したデータに対して、エラーの検出及び訂正を行い、エラーが訂正できないときにエラー発生を通知するエラー訂正回路と、前記エラー訂正回路及び前記不揮発性メモリの動作を制御する処理回路とを備え、前記処理回路は、前記エラー訂正回路からエラー発生の通知を受け取ったとき、エラーが発生した前記論理アドレスと前記論理アドレスに対応する物理アドレスを登録したエラーブロックテーブルを生成することを特徴とする。
第1実施形態のメモリカードの全体構成を示すブロック図である。 第1実施形態におけるNAND型フラッシュメモリ内の記憶領域を示す図である。 第1実施形態におけるNAND型フラッシュメモリで行われるバックグラウンド処理を示す図である。 第1実施形態におけるエラーブロックテーブルの構成を示す図である。 第1実施形態におけるエラーブロックテーブルにアドレスを登録する際のフローチャートである。 第1実施形態におけるエラーブロックテーブルにアドレスを登録する際の他のフローチャートである。 第1実施形態におけるエラーブロックテーブルの他の構成を示す図である。 第2実施形態のメモリカードが備えるページの構成を示す図である。 第2実施形態におけるページにアドレスを登録する際のフローチャートである。 第2実施形態におけるページにアドレスを登録する際の他のフローチャートである。
以下、図面を参照して実施形態のストレージデバイスについて説明する。ここでは、ストレージデバイスとして、不揮発性メモリ、例えばNAND型フラッシュメモリを搭載したSDカードなどのメモリカードを例に取る。なお、ここで説明する実施形態は、SDカードに限るわけではなく、その他の不揮発性メモリを備えたストレージデバイス、例えばマルチメディアカード、USBフラッシュメモリ、SSD(solid state drive)等に適用することも可能である。以下の説明において、同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
[第1実施形態]
第1実施形態では、メモリカードを制御するファームウェアで用いるシステムデータ上で、ECCエラーが発生した論理ブロックとこの論理ブロックに対応する物理ブロックとを含むエラーブロックテーブルを管理することにより、エラーが発生した物理ブロックの特定を可能にする。
図1は、第1実施形態のメモリカードの全体構成を示すブロック図である。
図示するように、メモリカード1は、データを保存するデバイスである不揮発性メモリ、例えばNAND型フラッシュメモリ10と、それを制御するメモリコントローラ20により構成される。メモリコントローラ20は、MPU(Micro Processing Unit)21などの処理回路、ROM(Read-Only Memory)22、RAM(Random Access Memory)23、データバッファ24、ECC(Error Checking and Correction)回路25などのエラー訂正回路、ホストインターフェイス(ホスト I/F)26、及びNANDインターフェイス(NAND I/F)27を備える。メモリカード1は、ホスト機器2に装着され、ホスト機器2からのアクセスに応じた処理を実行する。
メモリコントローラ20の制御プログラムであるファームウェアは、コントローラ20内部のROM22あるいはNAND型フラッシュメモリ10に記録されており、読み出されて利用される。
MPU21は、ファームウェアに基づいてメモリコントローラ20に対する書き込み、読み出し、及び消去の動作を制御する。ROM22は、MPU21により使用される制御プログラムなどを格納するメモリである。RAM23は、MPU21の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する揮発性メモリである。データバッファ24は、書き込み時及び読み出し時に一時的にデータを記憶する記憶領域である。
ECC回路25は、書き込みデータにECCコードを付与する機能を有する。さらに、ECC回路25は、NAND型フラッシュメモリ10から読み出したデータに対して、エラーの検出、エラーの訂正、及びエラーの通知を行う機能を有する。すなわち、ECC回路25は、読み出したデータに対してエラーを検出し、エラーがある場合、そのエラーを訂正する。さらに、検出したエラーが訂正可能な範囲を超えている場合は、エラーが発生していることをメモリコントローラ20に通知する。
ホストインターフェイス26は、メモリコントローラ20とホスト機器2との間のインターフェイス処理を実行する。NANDインターフェイス27は、メモリコントローラ20とNAND型フラッシュメモリとの間のインターフェイス処理を実行する。
図2は、NAND型フラッシュメモリ内の記憶領域を概略的に示している。
メモリカード1におけるNAND型フラッシュメモリ10の記憶領域は、ユーザー領域11、セキュア領域12、各種レジスタ13、及びシステム領域14から成る。ユーザー領域11は、通常データを格納する。セキュア領域12は、機密性の高いデータを格納する。各種レジスタ13は、各種の動作情報などを格納する。システム領域14は、NAND型フラッシュメモリ10を制御するためにメモリコントローラ20で実行されるファームウェアやその他のシステムデータを格納する。
一般的に、ホスト機器2とメモリカード1間でのデータ転送は、メモリコントローラ20が定義する論理ブロックアドレスが使用される。この論理ブロックアドレスは、NAND型フラッシュメモリ10における真のアドレスである物理ブロックアドレスと1対1でマッピングされている。論理ブロックアドレスと物理ブロックアドレスをマッピングするマッピングテーブル(論物変換テーブル)はNAND型フラッシュメモリ10内のシステム領域14にて管理されている。また、この論理ブロックアドレスに対する物理ブロックアドレスは必ずしも1から順番に並んでおらず、状況に応じて様々な物理ブロックアドレスが割り当たる可能性がある。
図3は、NAND型フラッシュメモリ10で行われるバックグラウンド処理において、ある物理ブロックから別の物理ブロックにマッピングが変化する様子を示している。
例えば、ある論理ブロックAのページアドレスLAにデータが存在し、これが物理ブロックAのページアドレスPAにマッピングされているとする。
ここで、(1)論理ブロックAの別のページアドレスLBに書き込みが実行される場合、NAND型フラッシュメモリ10はその特性上、特定のデータのみの上書きはできないため、新規の物理ブロックBを用意し、新規の書き込みデータとその他のデータをマージする必要がある。
物理ブロックBには、まず、(2)書き込みデータより前の部分を物理ブロックAよりコピーしてくる。この際には、既に存在しているページPAのデータも含む。また、物理ブロックAから読み出されたデータに対して、ECC回路25がエラーを検出する。検出したエラーが訂正可能な範囲を超えていない場合、ECC回路25は、そのエラーを訂正し、訂正後のデータに基づいて新たなECCコードを生成する。この新たなECCコードと訂正後のデータが物理ブロックBに書き込まれる。検出したエラーが訂正可能な範囲を超えている場合、ECC回路25は、ECCエラーを通知し、ビットエラーを含むデータに基づいて新たなECCコードを生成する。この新たなECCコードとビットエラーを含むデータが物理ブロックBに書き込まれる。このとき、コントローラ20は、過去にECCエラーが起きたことを示すフラグを用いて、過去にECCエラーが生じたことを管理する。
続いて、(3)書き込みデータを物理ブロックBのページPDに書き込む。次に、(4)書き込みデータよりも後ろの部分を物理ブロックAよりコピーする。この際のECC回路25の動作は、(2)で説明したものと同様である。
最後に、(5)論理ブロックアドレスと物理ブロックアドレスのマッピングを更新して完了となる。図3の例では、論理ブロックAのページLAとのマッピングを、物理ブロックAのページPAから物理ブロックBのページPCへ更新する。このように、ある論理ブロックアドレスに対応する物理ブロックアドレスが変更されることになる。
もし、上記ケースにおいて、ECCエラーを含んだ物理ブロックが、論理ブロックAのページLA及び物理ブロックAのページPAに含まれていた場合、実際にECCエラーが発生した物理ブロックが変わってしまうため、ECCエラーを含んだ真の物理ブロックを特定することは困難となる。具体的には、物理ブロックAのページPAから物理ブロックBのページPCにデータをコピーする際、ECC回路25は、ECCエラーが生じたデータから新たにECCコードを生成する。このため、ページPCからECCコードを読み出しても、新たなビットエラーが生じない限り、ECC回路25は、ECCコードに基づいてエラーを検出することができない。このとき、コントローラ20は、上述のフラグから、ページPCに格納されたデータで過去にECCエラーが生じたことを検知することができる。しかし、フラグはECCエラーの有無を示すだけのものであるため、どの物理ブロックで生じたエラーによりECCエラーが発生したのか、特定することができない。
そこで、本実施形態では、NAND型フラッシュメモリ10のシステム領域14上にエラーブロックテーブルを用意し、ECCエラーを含んだ論理ブロックとこの論理ブロックに対応した物理ブロックとを管理していくことにより、ECCエラーが真に発生した物理ブロックを特定できる仕組みを構築する。
図4は、ECCエラーが発生したブロックを記録するエラーブロックテーブルの構成を示す。エラーブロックテーブルには、ECCエラーが発生した論理ブロックアドレスとそれにマッピングされた物理ブロックアドレスが記録され、管理される。すなわち、ECCエラーが発生した論理ブロックアドレスとこの論理ブロックアドレスに対応する物理ブロックアドレスが登録され、管理される。
図5に、図4に示したエラーブロックテーブルにアドレスを登録する際のフローチャートを示す。
まず、コントローラ20は、NAND型フラッシュメモリ10へデータの読み出し要求を出す(ステップS11)。続いて、読み出したデータにECCエラーが発生しているか否かを判定する(ステップS12)。詳述すると、コントローラ20は、選択された物理ブロックから読み出したデータに訂正不可能なエラーが含まれているか否か、さらにコントローラ20を制御するファームウェアが管理するフラグにおいて、過去にECCエラーが起きたことを示すフラグが立っているか否かを判定する。そして、訂正不可能なエラーが含まれている場合、あるいはフラグが立っている場合の少なくともいずれかの場合、ECCエラーが発生していると判定する。
NAND型フラッシュメモリ10から読み出したデータにECCエラーが発生している場合、コントローラ20はエラーブロックテーブルにECCエラーが発生した論理ブロックアドレスが登録されているか否かを判定する(ステップS13)。
エラーブロックテーブルに同じ論理ブロックアドレスが登録されていなければ、ECCエラーが発生した論理ブロックアドレスとそれに対応する物理ブロックアドレスをエラーブロックテーブルに登録する(ステップS14)。
ステップ13において、エラーブロックテーブルに同じ論理ブロックアドレスが登録されている場合、コントローラ20は、発生したECCエラーがビットエラー過多により訂正不可能なエラーを含む真のECCエラーであるか否かを判定する。言い換えると、ここでは、読み出したデータがECCエラーを含む物理ブロックからコピーされたデータであり、この読み出したデータに対して再度ECCコードが計算されてエラーの検出が行われたとき、そのデータが訂正不可能なエラーを含んでいるか否かを判定する。さらに、ファームウェアが管理するフラグにおいて、過去にECCエラーが起きたことを示すフラグが立っているか否かを判定する。そして、前述した訂正不可能なエラーを含んでいる場合だけ真のECCエラーであると判定する。(ステップS15)。
発生したECCエラーが真のECCエラーである場合、エラーブロックテーブルに論理ブロックアドレスの登録が無いケースと同様に、その論理ブロックアドレスとそれに対応する物理ブロックアドレスをエラーブロックテーブルに登録する(ステップS14)。
一方、発生したECCエラーが真のECCエラーでない場合、前述したように、例えば、読み出したデータがECCエラーを含む物理ブロックからコピーされて来ただけのデータであり、新たなビットエラーに因るものではない場合であって、ファームウェアが単に過去にECCエラーが起きたことを示すフラグによってその選択された物理ブロックがECCエラーを含むと判断しているに過ぎない場合等は、それらアドレスを登録しない。
以上がエラーブロックテーブルにアドレスを登録する際の処理フローである。
第1実施形態では、エラーが発生した論理ブロックアドレスとこの論理ブロックアドレスに対応する物理ブロックアドレスを記録したエラーブロックテーブルを備えることにより、不揮発性メモリへのアクセス時にエラーが発生した際、真にエラーが発生した物理ブロックへ遡ることができ、その物理ブロックを特定することが可能となる。
また、エラーブロックテーブルにアドレスを登録する際の別の処理として、エラーが発生した場合の論理ブロックアドレスと物理ブロックアドレスを全てエラーブロックテーブルに登録するようにしてもよい。
図6に、エラーが発生した全てのアドレスをエラーブロックテーブルに登録する際のフローチャートを示す。
前述した図5では、ECCエラーが真のECCエラーでない場合、エラーブロックテーブルにアドレスを登録せずに終了していた。しかし、図6に示す処理では、読み出したデータにECCエラーが発生しているか否かを判定し(ステップS12)、ECCエラーが発生した全ての論理ブロックアドレスとそれに対応する物理ブロックアドレスをエラーブロックテーブルに登録する。
このように、ECCエラーが発生した全ての論理ブロックアドレスと物理ブロックアドレスを登録することは、ECCエラーが発生したアドレスの遷移を記録することになる。つまり、ECCエラーが発生した論理ブロックアドレスに対して、その大元の真にエラーを含む物理ブロックアドレスだけでなく、その論理ブロックアドレスが使用してきた物理ブロックアドレスの履歴を記録することになる。この履歴を解析すれば、不具合の発生シーケンスの確認に役立てることができる。
さらに、図4に示したエラーブロックテーブルに、図7に示すように、その物理ブロックがECCエラー発生時の状態を保っているかどうかを示すフラグを登録するようにしても良い。
コントローラ20のファームウェアによるが、消去や上書きの書き込みが発生した場合、その物理ブロックの状態が変わってしまうことがありえる。このため、例えば物理ブロックの状態を示す状態保持フラグを1バイト分持っておく。ECCエラー発生時の状態を保っているときフラグを“0x00”とし、ECCエラー発生時の状態を保っていないときフラグを“0xFF”とする。
最初のデータを保持しているとき保持状態フラグを“0x00”とし、メモリカードへ書き込み処理が発生した場合に、このエラーブロックテーブルの物理ブロックアドレスを検索する。もし、同じ物理ブロックアドレスがエラーブロックテーブルに既に登録されている場合、検索対象の論理ブロックアドレス、その物理ブロックアドレス、及びその状態保持フラグ“0xFF”をエラーブロックテーブルに新規に登録する。このように新規に登録するのは、NAND型フラッシュメモリの特性上、上書きの書き込みができないためである。
消去及び書き込みを行う毎に、上述したように、エラーブロックテーブルに論理ブロックアドレス、物理ブロックアドレス及び状態保持フラグを登録しておけば、常に登録されているエントリの最下位エントリが最新となる。このため、重複した論理ブロックアドレス及び物理ブロックアドレスが存在していても、最新の登録情報を判断することが可能となる。状態保持フラグをエラーブロックテーブルに持つことにより、該当する物理ブロックのデータが保存されているかどうかが分かり、エラーが発生した物理ブロックの解析に役立てることができる。
第1実施形態によれば、エラーブロックテーブルを持ち、論理アドレスとこの論理アドレスに対応する物理アドレスをエラーブロックテーブルで管理することにより、ECCエラーが真に発生した物理ブロックを特定することが可能となる。加えて、ECCエラーが真に発生した物理アドレスのみを登録しておくだけでなく、その過程の物理アドレスも同様に登録しておけば、アクセスシーケンスを確認することもできる。
さらに、エラーブロックテーブルに状態保持フラグを記録しておくことにより、エラーが発生した物理ブロックにそのデータがそのまま残っているかどうかも確認でき、エラー発生の解析に役立てることができる。本実施形態では、ECCエラーが真に発生した物理ブロックを、現行使われている物理ブロックから遡り特定することが可能となる。
[第2実施形態]
第2実施形態では、NAND型フラッシュメモリが備えるページの冗長部にECCエラーのアドレス情報を登録しておくことにより、ECCエラーが発生した物理ブロックの特定を可能にする。
図8は、第2実施形態のメモリカードが備えるページの構成を示す図である。
NAND型フラッシュメモリ10は、消去単位としてのブロックを複数有し、各ブロックは書き込み単位としてのページを複数有している。NAND型フラッシュメモリ10が有するページは、図8に示すように、通常データが記憶されるデータ部15と、冗長部16とを有する。冗長部16は、ECCコードが記憶される領域16Aと、空き領域16Bを含んでいる。第2実施形態では、ページの冗長部16が持つ空き領域16Bに、ECCエラーが発生した物理ブロックアドレスを記憶する。このように、ページ冗長部16が含む空き領域16Bに、ECCエラーが発生した物理ブロックアドレスを登録しておくことにより、コントローラ20はECCエラーが発生した物理ブロックアドレスを管理する。
メモリコントローラ20からNAND型フラッシュメモリ10へ読み出し要求が発生し、NAND型フラッシュメモリ10から読み出したデータにECCエラーが発生した場合、ECCエラーが発生した物理ブロックアドレスをページ冗長部16に登録する。
一方、例えば、ホスト機器からの直接の読み出し要求でECCエラーが発生した場合は、特にその論理ブロックアドレスに対応する物理ブロックアドレスを登録しない。これは、次にまた同じ論理ブロックアドレスを読み出せばECCエラーが発生し、論理ブロックアドレスと物理ブロックアドレスを繋ぐテーブル(論物変換テーブル)を確認すれば、ECCエラーが発生した物理ブロックアドレスを特定することが可能だからである。
しかし、例えば、ホスト機器からの要求ではなく、メモリコントローラ20からのバックグラウンド処理等によるデータコピーで読み出しが実行され、ECCエラーが検出された場合は、図9に示すフローチャートに従って物理ブロックアドレスの登録処理を実行する。
まず、コントローラ20は、NAND型フラッシュメモリ10におけるコピー元のページへデータの読み出し要求を出す(ステップS21)。続いて、コピー元のページから読み出したデータにECCエラーが発生しているか否かを判定する(ステップS22)。詳述すると、コントローラ20は、読み出したデータに訂正不可能なエラーが含まれているか否か、さらにコントローラ20を制御するファームウェアが管理するフラグにおいて、過去にECCエラーが起きたことを示すフラグが立っているか否かを判定する。そして、訂正不可能なエラーが含まれている場合、あるいはフラグが立っている場合の少なくともいずれかの場合、ECCエラーが発生していると判定する。
コピー元のページから読み出したデータにECCエラーが発生していない場合、登録処理を終了する。一方、コピー元のページから読み出したデータにECCエラーが発生している場合、コントローラ20はコピー元のページ冗長部16に、以前にECCエラーが発生した物理ブロックアドレスが登録されているか否かを判定する(ステップS23)。
ページ冗長部16に物理ブロックアドレスが登録されていない場合、コピー先のページ冗長部16の空き領域16Bに、コピー元の物理ブロックアドレスを登録し(ステップS24)、処理を終了する。
一方、ステップS23において、ページ冗長部16に物理ブロックアドレスが既に登録されている場合、コントローラ20は、読み出したデータに発生したECCエラーがビットエラー過多により訂正不可能なエラーを含む真のECCエラーであるか否かを判定する。言い換えると、ここでは、読み出したデータがECCエラーを含む物理ブロックからコピーされたデータであり、この読み出したデータに対して再度ECCコードが計算されてエラーの検出が行われたとき、そのデータが訂正不可能なエラーを含んでいるか否かを判定する。さらに、ファームウェアが管理するフラグにおいて、過去にECCエラーが起きたことを示すフラグが立っているか否かを判定する。そして、前述した訂正不可能なエラーを含んでいる場合だけ真のECCエラーであると判定する。(ステップS25)。
発生したECCエラーが真のECCエラーである場合、コピー元のページ冗長部16に登録されている物理ブロックアドレス及びコピー元の物理ブロックアドレスを、コピー先のページ冗長部16の空き領域16Bに登録する。すなわち、コピー元のページ冗長部16に既に登録済みの物理ブロックアドレスをコピー先のページ冗長部16の空き領域16Bに引き継ぎ、登録すると共に、今回エラーが発生した物理ブロックアドレスを登録し(ステップS26)、処理を終了する。
一方、ステップS25において、発生したECCエラーが真のECCエラーでない場合、コピー元のページ冗長部16に登録されている物理ブロックアドレスを、コピー先のページ冗長部16の空き領域16Bに登録し(ステップS27)、処理を終了する。
以上により、ECCエラーが発生した場合の物理ブロックアドレスをページ冗長部に登録する処理を終了する。
前述したように、既に、物理ブロックアドレスが冗長部に登録されたページを含む物理ブロックが、別の物理ブロックにコピーされる場合においても、このコピー先の物理ブロックにおいてビットエラーによる真のECCエラーが発生する可能性がある。この場合、先にECCエラーが発生した1つ目の物理ブロックアドレスに加えて、今回ECCエラーが発生した物理ブロックアドレスも2つ目として登録する必要がある。
このようにすることで、例えばECCエラーが発生した物理ブロックが何度も別の物理ブロックにコピーされたとしても、ECCエラーが真に発生した物理ブロックを特定することが可能となる。
また、NAND型フラッシュメモリ10のページ冗長部に物理ブロックアドレスを登録する際の別の処理として、エラーが発生した場合の物理ブロックアドレスをすべてページ冗長部に引き継ぎ、登録するようにしてもよい。
図10に、エラーが発生した全ての物理ブロックアドレスをページ冗長部に登録する際のフローチャートを示す。
前述した図9では、ECCエラーが真のECCエラーでない場合、その物理ブロックアドレスはページ冗長部16に登録せずに終了していた。しかし、図10に示す処理では、読み出したデータにECCエラーが発生しているか否かを判定し(ステップS22)、ECCエラーが発生している場合、ECCエラーが発生したコピー元のページ冗長部に登録されている物理ブロックアドレスと、コピー元の物理ブロックアドレスとを、真のECCエラーか否かにかかわらず、コピー先のページ冗長部に登録する(ステップS26)。
このように、ECCエラーが真に発生した物理ブロックアドレスだけでなく、その過程の物理ブロックアドレスも同様に登録しておく。これにより、ECCエラーデータが繰り返しコピーされてしまったケースにおいても、エラーが発生した物理ブロックアドレスのアクセス履歴を知ることができ、不具合を解析する際の手がかりとすることが可能となる。すなわち、この場合、ECCエラーが発生してからの全てのアドレス履歴を追うことが可能となり、不具合の解析に役立てることができる。
第2実施形態によれば、NAND型フラッシュメモリのブロック内のページ冗長部にエラーが発生した物理アドレスを登録しておくことにより、ECCエラーが真に発生した物理ブロックを特定することが可能となる。加えて、ECCエラーが真に発生した物理アドレスのみを登録しておくだけでなく、その過程の物理アドレスも同様に登録しておけば、アクセスシーケンスを確認することもできる。本実施形態では、ECCエラーが真に発生した物理ブロックを、現行使われている物理ブロックから遡り特定することが可能となる。
以上説明したように前記実施形態では、ECCエラーが発生した物理アドレスをエラーブロックテーブルとして、NAND型フラッシュメモリ内部のシステムテーブルで管理すること、またはECCエラーが発生した物理アドレスをNAND型フラッシュメモリのページ冗長部で管理することにより、ホスト機器からの要求時だけでなく、コントローラによるバックグラウンド処理におけるデータコピー等でECCエラーが発生しても、ECCエラーが真に発生した物理アドレスを特定することが可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリカード、2…ホスト機器、10…NAND型フラッシュメモリ、11…ユーザー領域、12…セキュア領域、13…各種レジスタ、14…システム領域、20…メモリコントローラ、21…MPU、22…ROM、23…RAM、24…データバッファ、25…ECC回路、26…ホストインターフェイス(ホスト I/F)、27…NANDインターフェイス(NAND I/F)。

Claims (5)

  1. 不揮発性メモリと前記不揮発性メモリを制御するコントローラとを備えたストレージデバイスにおいて、
    前記不揮発性メモリは、消去単位としてのブロックを複数備え、各ブロックは書き込み単位としてのページを複数有し、
    前記コントローラは、論理アドレスにて指定された前記不揮発性メモリのブロックから読み出したデータに対して、エラーの検出及び訂正を行い、エラーが訂正できないときにエラー発生を通知するエラー訂正回路と、前記エラー訂正回路及び前記不揮発性メモリの動作を制御する処理回路とを備え、
    前記処理回路は、前記エラー訂正回路からエラー発生の通知を受け取ったとき、エラーが発生した前記論理アドレスと前記論理アドレスに対応する物理アドレスを登録したエラーブロックテーブルを生成することを特徴とするストレージデバイス。
  2. 前記エラーブロックテーブルは前記物理アドレスが指定するブロックが書き換えられたか否かを示すフラグを有し、
    前記処理回路は、前記エラーブロックテーブルに登録されている前記物理アドレスが指定するブロックが書き換えられたとき、前記フラグを書き換えることを特徴とする請求項1に記載のストレージデバイス。
  3. 前記処理回路は、前記エラー訂正回路からエラー発生の通知を受け取ったとき、そのエラーが真のエラーであるか否かの判定を行わず、エラーが発生した全ての論理アドレスと前記論理アドレスに対応する物理アドレスを前記エラーブロックテーブルに記録することを特徴とする請求項1または2に記載のストレージデバイス。
  4. 書き込み単位としてのページを複数含む物理ブロックを複数備えた不揮発性メモリと、
    論理アドレスにて指定された前記不揮発性メモリのブロックから読み出したデータに対して、エラーの検出及び訂正を行い、エラーが訂正できないときにエラー発生を通知するエラー訂正回路と、
    前記エラー訂正回路及び前記不揮発性メモリの動作を制御する処理回路と、
    を具備し、
    前記処理回路は、第1のブロックのページから読み出したデータに対して前記エラー訂正回路からエラー発生の通知を受け取ったとき、前記読み出したデータを書き込む第2のブロックのページの冗長部に、前記第1のブロックの物理アドレスを登録することを特徴とするストレージデバイス。
  5. 前記処理回路は、前記エラー訂正回路からエラー発生の通知を受け取ったとき、前記第1のブロックのページの冗長部に登録されていた物理アドレスを、前記第2のブロックのページの冗長部に登録することを特徴とする請求項4に記載のストレージデバイス。
JP2012033313A 2012-02-17 2012-02-17 ストレージデバイス Pending JP2013171343A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012033313A JP2013171343A (ja) 2012-02-17 2012-02-17 ストレージデバイス
US13/600,124 US9043675B2 (en) 2012-02-17 2012-08-30 Storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012033313A JP2013171343A (ja) 2012-02-17 2012-02-17 ストレージデバイス

Publications (1)

Publication Number Publication Date
JP2013171343A true JP2013171343A (ja) 2013-09-02

Family

ID=48983299

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012033313A Pending JP2013171343A (ja) 2012-02-17 2012-02-17 ストレージデバイス

Country Status (2)

Country Link
US (1) US9043675B2 (ja)
JP (1) JP2013171343A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11847341B2 (en) 2020-11-04 2023-12-19 Kioxia Corporation Memory card, memory system, and method of consolidating fragmented files

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9959059B2 (en) * 2014-10-20 2018-05-01 Sandisk Technologies Llc Storage error management
US10339343B2 (en) * 2017-06-06 2019-07-02 Western Digital Technologies, Inc. Storage system and method for improved generation and storage of data protection information
US11023374B2 (en) 2018-07-09 2021-06-01 Silicon Motion, Inc. Apparatus and method and computer program product for controlling data access
CN110765156A (zh) * 2018-07-09 2020-02-07 慧荣科技股份有限公司 链表搜索装置及方法
CN110471818B (zh) * 2019-07-15 2023-11-17 深圳市德明利技术股份有限公司 一种对闪存出错物理地址的标记方法和装置以及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019A (en) * 1853-09-13 Improvement in the manufacture of plain and figured fabrics
WO2005111812A1 (ja) * 2004-05-19 2005-11-24 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置のためのエラー訂正方法
JP2007148965A (ja) * 2005-11-30 2007-06-14 Oki Electric Ind Co Ltd フラッシュディスク装置のエラーブロック管理方法及び装置
JP2008009614A (ja) * 2006-06-28 2008-01-17 Tdk Corp メモリコントローラ、メモリシステム及びメモリ制御方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3576625B2 (ja) 1995-02-28 2004-10-13 株式会社東芝 フラッシュメモリカードのデータ管理方法およびそのデータ管理方法を使用したデータ処理装置
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
JP2007525978A (ja) 2004-02-18 2007-09-13 アイシス ファーマシューティカルズ インコーポレイテッド 細菌の同定で用いられる組成物
JP4950886B2 (ja) 2005-07-15 2012-06-13 パナソニック株式会社 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法
JP2009181439A (ja) * 2008-01-31 2009-08-13 Toshiba Corp メモリシステム
US8312204B2 (en) 2009-01-23 2012-11-13 Seagate Technology Llc System and method for wear leveling in a data storage device
KR101516580B1 (ko) * 2009-04-22 2015-05-11 삼성전자주식회사 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
JP5612514B2 (ja) * 2010-03-24 2014-10-22 パナソニック株式会社 不揮発性メモリコントローラ及び不揮発性記憶装置
JP2010160816A (ja) 2010-03-29 2010-07-22 Toshiba Corp 半導体記憶装置の制御方法
US9176810B2 (en) * 2011-05-27 2015-11-03 SanDisk Technologies, Inc. Bit error reduction through varied data positioning

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019A (en) * 1853-09-13 Improvement in the manufacture of plain and figured fabrics
WO2005111812A1 (ja) * 2004-05-19 2005-11-24 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置のためのエラー訂正方法
JP2007148965A (ja) * 2005-11-30 2007-06-14 Oki Electric Ind Co Ltd フラッシュディスク装置のエラーブロック管理方法及び装置
JP2008009614A (ja) * 2006-06-28 2008-01-17 Tdk Corp メモリコントローラ、メモリシステム及びメモリ制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11847341B2 (en) 2020-11-04 2023-12-19 Kioxia Corporation Memory card, memory system, and method of consolidating fragmented files

Also Published As

Publication number Publication date
US9043675B2 (en) 2015-05-26
US20130219244A1 (en) 2013-08-22

Similar Documents

Publication Publication Date Title
TWI527037B (zh) 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
US8453021B2 (en) Wear leveling in solid-state device
US8495281B2 (en) Intra-block memory wear leveling
TWI490871B (zh) 防止讀取干擾的方法、記憶體控制電路單元與記憶體儲存裝置
US8516184B2 (en) Data updating using mark count threshold in non-volatile memory
US10635527B2 (en) Method for processing data stored in a memory device and a data storage device utilizing the same
US8479062B2 (en) Program disturb error logging and correction for flash memory
US10613943B2 (en) Method and system for improving open block data reliability
WO2009118917A1 (ja) フラッシュメモリを用いた記憶装置
JP2006318366A (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
TWI554886B (zh) 資料保護方法、記憶體控制電路單元及記憶體儲存裝置
JP2013171343A (ja) ストレージデバイス
US9710375B2 (en) Writing an address conversion table for nonvolatile memory wear leveling
US8819387B2 (en) Memory storage device, memory controller, and method for identifying valid data
US9465538B2 (en) Flash memory control chip and data storage device and flash memory control method
JP2014052978A (ja) 不揮発性半導体メモリの制御方法及びメモリシステム
TWI768764B (zh) 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
US8607123B2 (en) Control circuit capable of identifying error data in flash memory and storage system and method thereof
JP2013125513A (ja) 不揮発性半導体記憶装置及びその管理方法
TWI616807B (zh) 資料寫入方法以及儲存控制器
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR20120070408A (ko) 블록을 관리하는 비휘발성 메모리 장치의 제어 방법
JP2014006811A (ja) 不揮発性半導体記憶装置
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP2010140261A (ja) 情報処理装置、エラー訂正方法及びプログラム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131212

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131226

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140617

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141021