説明

フラッシュメモリの状態検出方法

【課題】 工場出荷段階において、個別にその生来的書込み精度を推定しその品質管理に資することができるとともに、ユーザによる使用段階においては、当該フラッシュメモリの総体的な書込み精度や記憶値の経年変化(劣化)を知ることのできる、フラッシュメモリの新たな状態検出方法の提供。
【解決手段】ファームウエアによって、物理ブロック番号順に、データ書込済のブロックに対してはその書込みエラーを、データ消去済ブロックに対してはその消去エラーを、それぞれシンボル単位で検出し、それらを総計して当該フラッシュメモリのSER(Symbol Error Rate)を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体フラッシュメモリの工場出荷段階の品質管理及び/又はユーザ使用後における寿命到来の予測などに用いて好適なフラッシュメモリの状態検出方法に関する。
【背景技術】
【0002】
半導体記憶装置の一つとして、フラッシュメモリが知られている。フラッシュメモリは工場出荷前において、セルに物理的欠陥のある不良ブロックを検査するとともに、該不良ブロックを除いた一群の良ブロックに対しては繰り返しデータの書き込みを行なって電気的ストレスを負荷し、その電気的耐性を検査することによる信頼性試験が行なわれている。しかしながらこの方法は、あくまでセルの物理的構造上の欠陥や電気的耐性の観点で実施される信頼性試験であり、フラッシュメモリ特有のデータの書き込みエラーの発生頻度が増大することによって推定される当該フラッシュメモリの総体的かつ経年的な劣化を監視するという観点に立ったものではない(特許文献1乃至特許文献3)。
【0003】
また、フラッシュメモリは不揮発性メモリの一種であるが、セルの構造上、例えば、10万回など、データの書き替え回数に一定の制限がある。このため、通常、主記憶領域の他に、予め予備記憶領域を設けておき、特定のブロックの書き換え回数やビットエラーが所定数に達すると、その物理ブロックを予備のブロックにおき替えて書き換え処理が行なわれ、記憶エラーがないよう担保されている。この方法の場合、書き換え回数の増大にしたがって予備記憶領域数も減少し、記憶エラーを生ずる虞があるため、残存予備記憶領域数を常時監視して、フラッシュメモリの交換時期をユーザに報知する方法が提案されている(特許文献4)。この方法は、当該フラッシュメモリが産業機器の場合など、特にそのデータの信頼性が要求される場合に有用である。しかしながら、主記憶領域の各ブロックの書込みエラー頻度が近似している場合、予備記憶領域のブロックが急激に減少する場合が考えられ、不測の事態も生じかねない。
【0004】
特に、近年、フラッシュメモリは、旧来の二値メモリだけでなく、多値メモリが出現している。二値メモリの場合は、一つのセル(ビット線とワード線の交点)で、“0”か“1”の二つの値しか表現できないが、多値メモリの場合は、一つのセルで、“00”、“01”、“10”、“11”の4つの値(2bit)を表現できる。これは、セルに対し、電荷が0から3までの4段階で蓄積し得ることによるものであるが、書込み時における書込みエラーや記憶値の経年変化は2値メモリの場合とは当然異なる。さらに回路線幅が90nmから70nmへ、さらには56nmへと、より細線化が図られており、セル面積や線間マージンの縮小が記憶エラーや記憶値の経年変化に及ぼす影響は計り知れない。
【特許文献1】特開2006−048893
【特許文献2】特開2006−351056
【特許文献3】特開平09−288899
【特許文献4】特許第3242890号(米国特許第6993690号)
【発明の開示】
【発明が解決しようとする課題】
【0005】
ここにおいて、本発明が解決すべき第1の課題は、工場出荷段階において、個別にその生来的書込み精度を推定しその品質管理に資することができるとともに、ユーザによる使用段階においては、当該フラッシュメモリの総体的な書込み精度や記憶値の経年変化(劣化)を検知し、これによりフラッシュメモリの寿命到来を好適に予測することのできるフラッシュメモリの新たな状態検出方法の提供である。その他の課題は、明細書、図面、特に特許請求の範囲から自ずと明らかとなろう。
【課題を解決するための手段】
【0006】
上記課題解決のため、本発明方法は、ユーザデータの書込み対象となるすべての物理ブロックに対し、データエラーを検出する。即ち、本発明方法の第1の特徴は、そのブロックがデータ書込済のブロックであるかデータ消去済のブロックであるかに拘らず、論理ブロックアドレスで対応付けされるすべての物理ブロックに対しデータエラーをシンボル単位で検出し、これをシンボルエラーとして総計し、これにより当該フラッシュメモリのSER(Symbol Error Rate)を算出するフラッシュメモリの状態検出方法の構成採用にある。
【0007】
ここにおいて、“論理ブロックアドレスで対応付けされるすべての物理ブロック”とは、1)システム情報が記憶されている、通常、アドレス番号「0」の物理ブロック、2)システム上の予約領域(reserved block)であって論理ブロックアドレスと対応付けされない物理ブロック、3)製造段階で不良と判断された物理ブロック(Bad Block)、4)使用後にBad Blockとなった物理ブロック、を除いたすべての物理ブロックである。即ち、ユーザデータが書込まれ得る全ブロックである。この内、データ消去済ブロックは、工場出荷の際にフォーマットされたブロックと工場出荷後ユーザが一旦データを書込んだ後これを消去したブロックの両者を含む。ブロックのデータ消去は、そのブロックのセル(ビット線とワード線の交点)に蓄積されていた電荷を除去するものであるが、セルの構造上の欠陥によりこの電荷除去処理がうまく実行されない場合がある。当該ブロックの全セルの電荷除去が完全に実行された場合は、Readの際、ALL“1”の値のデータとして読み出される。構造上の欠陥によりこの電荷除去処理がうまく実行されないセルが存在すると、そのセルについてはReadの際“0”の値として読み出される。すなわち、当該セルにデータがプログラムされた状態となる。本願ではこれを消去エラー(data erasing error)と定義する。データエラーであるこの消去エラーはセル毎、即ちbit単位で生じ得る。工場出荷段階では、電気的耐性試験終了後、全ブロックがフォーマットされるが、このときの消去エラーをシンボル単位で検出し、これによりSERを求める。データ消去済ブロックに関するSERは、消去エラーのあったシンボル数をエラー検出対象となった全シンボル数で除した値、又は、消去エラーのあったシンボル数をエラー検出対象となった全bit数で除した値のいずれかである。これにより、工場出荷段階における個別的かつ初期的な書込み品質を推し量ることができる。
【0008】
ユーザがその使用を開始した後は、データ書込済ブロックとデータ消去済ブロック(フォーマットされた状態のブロックを含む)が混在する。当該ブロックに対して所定のデータの書込みを実行する場合、データ書込対象のセルには電荷蓄積処理が実行される。このとき、その構造上の欠陥により電荷蓄積処理がうまく実行されないセルが存在すると、書込み指令がなされた値と異なる値が読み出されることとなる。本願ではこれを書込みエラー(data writing error)と定義する。このデータエラーもセル毎、即ちbit単位で生じ得る。また、データの書込みを実行した際、ライトディスターブエラー(write disturb error)という現象を生じる場合がある。ライトディスターブエラーとは、データの書込みを実行するページ内の非選択セルやデータの書込みを実行するそのブロック内の他のページの非選択セルに電荷が蓄積され、“0”が誤ってプログラムされてしまう現象をいう。このデータエラーもセル毎、即ちbit単位で生じ得る。また、データの読み出しを実行した場合、リードディスターブエラー(read disturb error)という現象を生じる場合がある。リードディスターブとは、同一ブロック内のあるページを読み出したときに、他のページの一つまたは複数のセルに電荷が蓄積され、“0が誤ってプログラムされてしまう現象をいう。このデータエラーもセル毎、即ちbit単位で生じ得る。また、データ保持エラー(data retention error)という現象を生じる場合がある。フラッシュメモリでは、bit線とワード線間に存在する浮遊ゲートに電荷が蓄積されてデータを保持するが、この浮遊ゲートに蓄積されている電荷が時間の経過によって徐々に抜けて、遂にはデータを保持し得なくなる現象、または電荷が保持されていないセルに不如意に電荷が蓄積され、データがプログラムされる現象をいう。浮遊ゲートは、書込み回数が多いほど劣化する。このデータエラーもセル毎、即ちbit単位で生じ得る。
【0009】
本発明方法では、物理ブロックアドレスを指定して、ユーザデータが書込まれ得る全ブロックを対象に、上述のデータエラーをシンボル単位で検出し、これを総計して、SERを算出する。このSERは、エラーのあったシンボル数をエラー検出対象となった全シンボル数で除した値(請求項2)、又は、消去エラーのあったシンボル数をエラー検出対象となった全bit数で除した値(請求項3)のいずれかである。尚、本願においてシンボルエラーとは、コレクタにおいてエラーとして検出されたシンボル単位のエラーであって、上述したもの以外のデータエラーがあった場合はそれを含む。
【0010】
本発明は、上記の通り、データ消去済ブロックもエラーチェック対象となるが、その意義は下記の通りである。即ち、特許文献4に記載された実施形態例では、主記憶領域のブロック(データ書込済ブロック)だけをエラーチェックの対象としているが、書込みの平均化の図る上で、予備ブロック(spare block)は何回も使いまわされることがある。即ち、その時点ではデータが何も書き込まれていない予備ブロックと雖も、以前に何回も書込みが実行されていることがあり、フラッシュメモリの総体的な書き込み精度(言い換えれば、劣化)をチェックするという観点では、エラーチェック対象とすることが好ましい。本発明はまさにその点を解決するものである。
【0011】
以上より、本発明によれば、工場出荷段階においては、フラッシュメモリの生来的書込み精度を個別的に推定してその品質管理に資することができるとともに、ユーザが使用を開始した後においては、当該フラッシュメモリの書込み精度や記憶値の経年変化(データ劣化)を、当該フラッシュメモリについて総体的に知ることができる。特にフラッシュメモリでは多くの場合、バーストエラーではなくランダムエラーが発生する。複数のランダムビットエラーが発生した場合は、特定シンボルにbitエラーが集中するのではなく、拡散してシンボルエラー数が増える可能性が高い。このことから、シンボルエラー数を用いてエラーレートを計算することによって、フラッシュメモリの寿命到来を好適に予測することができる。
【0012】
さらに具体的には、本願において、上記課題解決のため、本発明が以下に列挙する上位概念から下位概念に亙るそれぞれ新規な特徴的構成を採用することにより、上記課題を解決する。
【0013】
即ち、本発明方法の第2の特徴は、本発明方法の第1の特徴において、(A)ブロックに対するデータの書込みは、ホスト側から1byteずつ送出されるユーザデータを反転してその先頭にNbit(Nは正の整数)のダミーデータを付加してこれを1情報シンボルとして、エンコーダに計512シンボル分順次入力するステップと、セクタ/ブロック情報を反転してその先頭にNbitのダミーデータを付加し、これを同じく1情報シンボルとしてエンコーダに計6シンボル分順次入力するステップと、エンコーダから出力された1情報シンボルのユーザデータの先頭Nbitの前記ダミーデータを除去し、残りの1byteを反転した本来のユーザデータを計512byte分フラッシュメモリのデータ領域に順次格納するステップと、エンコーダから出力された1情報シンボルのセクタ/ブロック情報の先頭Nbitの前記ダミーデータを除去し、残りの1byteを反転した本来のセクタ/ブロック情報を計6byte分フラッシュメモリの冗長領域に順次格納するステップと、エンコーダから(8+N)bit単位で順次出力されるチェックシンボルを、連続する1byte単位のECCに順次加工し、これを反転したものをフラッシュメモリの冗長領域に順次格納するステップを含み、(B)データ書込済ブロックに対するシンボルエラーの検出は、データ領域に格納された前記ユーザデータを1byteずつ読み出してこれを反転するとともに、その先頭にNbitのダミーデータを付加して1情報シンボルとし、これを順次デコーダに入力するステップと、冗長領域に格納された前記セクタ/ブロック情報を1byteずつ読み出してこれを反転するとともに、その先頭にNbitのダミーデータを付加して同じく1情報シンボルとし、これを順次デコーダに入力するステップと、冗長領域に格納された前記ECCを1byteずつ順次読み出し、これを(8+N)bit構成に加工し反転して、本来のチェックシンボルを順次デコーダに入力するステップと、デコーダに入力された前記情報シンボルとチェックシンボルとに基づいてそのシンドロームを生成するステップと、前記シンドロームによってデータエラーがあることが判明した場合、該シンドロームをコレクタに入力し、シンボルエラー数をカウントするステップを含み、
(C)データ消去済ブロックに対するシンボルエラーの検出は、データ領域から1byteずつデータを読み出してこれを反転し、その先頭にNbitのダミーデータを付加して1情報シンボルとし、これを512シンボル分、デコーダに順次入力するステップと、当該ブロックの冗長領域のセクタ/ブロック情報格納領域から、1byteずつデータを読み出してこれを反転し、その先頭にNbitのダミーデータを付加して同じく1情報シンボルとし、これを6シンボル分、順次デコーダに入力するステップと、当該ブロックの冗長領域のECC格納領域から1byteずつデータを読み出して、これを10bitで構成される連続する1シンボル単位に順次加工して反転し、これをチェックシンボルとして計8シンボル分、デコーダに順次入力するステップと、デコーダに入力された前記情報シンボルとチェックシンボルとに基づいてそのシンドロームを生成するステップと、前記シンドロームによってデータエラーがあることが判明した場合、該シンドロームをコレクタに入力し、シンボルエラー数をカウントするステップを含むフラッシュメモリの状態検出方法の構成採用にある。
【0014】
この方法によれば、従来、データ消去済ブロックをReadしようとしてもECCエラーとなって検出困難であった消去エラーをシンボル単位で確実に検出することができる。
【0015】
また、本発明方法の第3の特徴は、本発明方法の第1の特徴において、(A)ブロックに対するデータの書込みは、ホスト側から1byteずつ送出されるユーザデータを反転してその先頭に2bitのダミーデータを付加してこれを1情報シンボルとして、エンコーダに計512シンボル分順次入力するステップと、セクタ/ブロック情報を反転してその先頭に2bitのダミーデータを付加し、これを同じく1情報シンボルとしてエンコーダに計6シンボル分順次入力するステップと、エンコーダから出力された1情報シンボルのユーザデータの先頭2bitの前記ダミーデータを除去し、残りの1byteを反転した本来のユーザデータを計512byte分フラッシュメモリのデータ領域に順次格納するステップと、エンコーダから出力された1情報シンボルのセクタ/ブロック情報の先頭2bitの前記ダミーデータを除去し、残りの1byteを反転した本来のセクタ/ブロック情報を計6byte分フラッシュメモリの冗長領域に順次格納するステップと、エンコーダから10bit単位で順次出力されるチェックシンボルを、連続する1byte単位のECCに順次加工し、これを反転したものをフラッシュメモリの冗長領域に順次格納するステップを含み、(B)データ書込済ブロックに対するシンボルエラーの検出は、データ領域に格納された前記ユーザデータを1byteずつ読み出してこれを反転するとともに、その先頭に2bitのダミーデータを付加して1情報シンボルとし、これを順次デコーダに入力するステップと、冗長領域に格納された前記セクタ/ブロック情報を1byteずつ読み出してこれを反転するとともに、その先頭に2bitのダミーデータを付加して同じく1情報シンボルとし、これを順次デコーダに入力するステップと、冗長領域に格納された前記ECCを1byteずつ順次読み出し、これを10bitで構成される連続する1シンボル単位に順次加工し反転した本来のチェックシンボルをデコーダに順次入力するステップと、デコーダに入力された前記情報シンボルとチェックシンボルとに基づいてそのシンドロームを生成するステップと、前記シンドロームによってデータエラーがあることが判明した場合、該シンドロームをコレクタに入力し、シンボルエラー数をカウントするステップを含み、(C)データ消去済ブロックに対するシンボルエラーの検出は、当該ブロックのデータ領域から1byteずつデータを読み出してこれを反転し、その先頭に2bitのダミーデータを付加して1情報シンボルとし、これを512シンボル分、デコーダに順次入力するステップと、当該ブロックの冗長領域のセクタ/ブロック情報格納領域から、1byteずつデータを読み出してこれを反転し、その先頭に2bitのダミーデータを付加して同じく1情報シンボルとし、これを6シンボル分、順次デコーダに入力するステップと、当該ブロックの冗長領域のECC格納領域から1byteずつデータを読み出して、これを10bitで構成される連続する1シンボル単位に順次加工して反転し、これをチェックシンボルとして計8シンボル分、デコーダに順次入力するステップと、デコーダに入力された前記情報シンボルとチェックシンボルとに基づいてそのシンドロームを生成するステップと、前記シンドロームによってデータエラーがあることが判明した場合、該シンドロームをコレクタに入力し、シンボルエラー数をカウントするステップを含むフラッシュメモリの状態検出方法の構成採用にある。
【発明を実施するための最良の形態】
【0016】
以下、本発明を実施するための最良の形態について図面を用いて説明するが、本発明は特許請求の範囲内において種々の形態を採ることができ、下記実施形態に限定されないことはいうまでもない。
【0017】
(フラシュメモリのデータ領域の構成)
本発明方法を説明するにあたり、初めに、フラッシュメモリのページ構成について図1により説明する。フラッシュメモリは、二値小ブロック、二値大ブロックの他、多値大ブロックがある。二値小ブロックは、1ページが1ECCセクタ、即ち、512byteのデータ領域と16byteの冗長領域で構成されるとともに(図1(a))、1ブロックが16ページ又は32ページで構成される。二値大ブロックは、例えば1ページが4ECCセクタで構成されるとともに、1ブロックが64ページで構成される。多値大ブロックも、例えば、1ページが4ECCセクタで構成され得るが(図1(b))、1ブロックが128ページで構成される。
【0018】
そのさらに具体的構成例は、図2に示される通り、データ領域と冗長領域とで構成される。データ領域は、512byteのユーザデータを格納する領域であり、冗長領域は、そのユーザデータを格納するセクタやブロックに関する6byte分のセクタ/ブロック情報を格納するセクタ/ブロック情報格納領域とデータ量10byte分のECC(error correcting code)を格納するECC格納領域とで構成される。ユーザデータとセクタ/ブロック情報は、ともに後述する情報シンボルを構成するものである。ECCは、後述するエンコーダで生成されるチェックシンボルの構成要素である。なお、本発明方法は二値メモリと多値メモリの両者に適用できる。
【0019】
(システム構成)
本発明方法を実施するシステムは、NAND型フラッシュメモリ(以下、フラッシュメモリという)と、ホストからの指令に基づいてこのフラッシュメモリにデータの書き込みや読み出しの制御を行なうコントローラとで構成されるフラッシュメモリデバイス(「記憶装置」という)と、この記憶装置に対しデータの書き込みや読み出しを指令する前記ホストとによって構成される。フラッシュメモリとコントローラは、個別のICで構成してもよいし、ワンパッケージで構成してもよい。記憶装置は、それ自身若しくはそれが搭載された基板ごと、ホストから着脱自在にして、新品と容易に交換可能な構成にすることが好ましい。コントローラは、ハードウエアとして図3に示すエラー訂正回路(リードソロモン方式)と、該エラー訂正回路を用いて本発明方法を実行するためのプログラム(ファームウエア)を有している。エラー訂正回路は、10bitを1シンボルという単位でデータ処理するENDEC(エンコーダ1及びデコーダ2)と、後述するコレクタ3とにより構成される。
【0020】
(ユーザデータ及びセクタ/ブロック情報のエンコード処理、メモリへの格納)
まず、本発明方法において実行される1ECCセクタ単位のデータの書込み処理について、図4を用いて説明する。ここで図4はエンコーダであり、その内部処理を表している(図4は、後述するデコーダの処理の説明でも使用するが、以下の説明はあくまでエンコーダの処理に関するものであることに注意されたい)。まず、ホストからデータ書込み指令(Writeコマンド)を受けると、エンコーダ1に1byte(即ち8bit)ずつユーザデータが順次入力される(図のData_in)。この1byteの各bitをXOR 0xff処理、即ち8bitの各bitの値を“1”とXORすると、8bitの全データが反転される。エンコーダ1は、10bitのデータを1シンボルという単位で扱うため、前記反転した8bitのデータの先頭に2bitのダミーデータを付加し、形式上計10bitの1シンボル形式に加工して、演算回路に入力し(図のData_in1)、エンコードを実行する。
【0021】
ここで、エンコードとはエンコーダ1に入力された情報(ユーザデータと後述するセクタ/ブロック情報)をもとに、そのECC(error check code)を生成することを意味する。ユーザデータがエンコードされると、1シンボル(10bit)単位のユーザデータが演算回路より出力されるが(図4のData_out1)、この内、先頭の2bitはダミーであるため除去されるとともに、残りの8bitのユーザデータに再度XOR 0xff処理が実行される(図4のData_out)。この1byteのユーザデータは、入力された本来のユーザデータである。以上述べたユーザデータの処理が、計512byte分順次実行され、ブロックのデータ領域に順次書き込まれる。
【0022】
ユーザデータのエンコードが終了すると、コントローラ内のデータフォーマッタと呼ばれるハードウエア(図示せず)から、前記ユーザデータの書込み対象となるセクタ及び該セクタが属するブロックに関する情報(特許請求範囲の「セクタ/ブロック情報」)が1byteずつエンコーダ1入力される(Data_in)。このセクタ/ブロック情報は、ALL“1”ではない値となるよう予め規定されており、前記計512byteのユーザデータのエンコードが終了すると、セクタ/ブロック情報が、上述したユーザデータと同様の処理によって、演算回路に入力されて(Data_in1)、エンコードされる。セクタ/ブロック情報については、当業者において周知であるから、本願においてその詳細な説明は割愛する。
【0023】
セクタ/ブロック情報がエンコードされると、ユーザデータの場合同様、1シンボル(10bit)単位のセクタ/ブロック情報が出力されるが(Data_out1)、この内先頭の2bitは同様にダミーデータであるため除去され、残りの8bitのセクタ/ブロック情報にXOR 0xff処理が実行される(Data_out)。この1byteのユーザデータは、入力された本来のセクタ/ブロック情報である。以上述べたセクタ/ブロック情報の処理が、計6byte分順次実行され、ブロックの冗長領域に順次書き込まれる。
【0024】
尚、フラッシュメモリをフォーマット(初期化/initialize)するとき、またはデータ書込済ブロックに対してデータの消去(delete)を実行する場合は、対象となるブロックの全セルの電荷を除去する処理が実行される。
【0025】
(チェックシンボルの形成、メモリへの格納)
ユーザデータとセクタ/ブロック情報に対する上記エンコード処理によって、エンコーダ1では、前記ユーザデータ及びセクタ/ブロック情報に関する計10byte(80bit)分のECC(error check code)が生成され、演算回路から出力される。これを、図5を用いて説明する。図示するように、エンコーダ1の演算回路からは、10bitからなる1シンボル単位で、計8シンボル分のECCが順次出力される。本願ではシンボルという単位で構成されたECCをチェックシンボルという。尚、生成されたECCは上述したダミーデータを含んだユーザデータ及びセクタ/ブロック情報に対するエラーチェックコードである。図5に示すように、第1番目に出力されたチェックシンボルCS0、2番目のチェックシンボルCS1、以降順番に、8番目のチェックシンボル(CS7)が順に出力される。チェックシンボルが出力されるごとに、これらが連続した1byte単位の構成に順次切り貼り加工され、加工されるごとに反転される。反転されたものは、最初の1byte目の8bitのECCをCB0として、次の1byteのECCをCB1、以降順番に、10番目の1byteのECC(CB9)として再構成される。そして順次冗長領域に格納される。途中切り貼り加工されるが、エンコーダ1から出力されたチェックシンボルと冗長領域に格納されるECCは、どちらも総計80bitで、同じデータ量である(図7a)参照)。
【0026】
(情報シンボルのデコード)
次に、ブロックに格納されているユーザデータとセクタ/ブロック情報のエラー検出方法について説明する。尚、以下の第1実施例では、エラー訂正回路は10bitを1シンボルという単位でデータ処理するENDEC(エンコーダ1及びデコーダ2)を使用するため、エンコーダ1とデコーダ2の演算回路で処理される際のユーザデータとセクタ/ブロック情報を“情報シンボル”という。まずブロックに格納されているデータのRead処理について、図4を用いて説明するが、ここで図4はデコーダ2を表すものとする。すなわち、以下の説明において、図4の演算回路はデコード処理する演算回路であり、先に説明したエンコード処理する演算回路とは当然異なることに注意されたい。
【0027】
読み出し対象となる物理ブロックアドレスを指定し当該物理ブロックからデータの読み出しを実行するファームウエアに基づき、フラッシュメモリに対しReadが実行されると、そのブロックの先頭ページに存在する最初のECCセクタのデータ領域からユーザデータがFIFO方式で、1byte(8bit)ずつ読み出され、デコーダ2に入力される(図4のData_in)。
【0028】
この8bitのデータは、XOR 0xff処理され、その先頭に2bitのダミーデータが付加されて形式上1シンボル(10bit)に加工され(図4のData_in1)、情報シンボルとして演算回路に順次入力される。データ消去ブロックに関しては、消去エラーがない限り、その値がすべて“1”のデータがデータ領域から読み出され、上記同様の処理が実行される。
【0029】
演算回路でデコードされると、当該演算回路に入力されたときと同じく1シンボルのユーザデータが演算回路から出力される(図4のData_ont1)。そして、その先頭のダミーデータ2bitが除去され、残りの8bitにXOR 0xff処理が実行される(Data_out)。これはデコーダ1に入力された本来の8bitのユーザデータである。このユーザデータのデコード処理が計512byte分順次実行され、デコーダ2からコントローラ内のRAMに転送される。
【0030】
続いて、当該セクタの冗長領域に格納されているセクタ/ブロック情報が同じくFIFO方式で1byte(8bit)ずつデータが読み出される(Data_in)。この8bitのデータも、ユーザデータ同様にXOR 0xff処理され、その先頭に2bitのダミーデータが付加されて形式上1シンボル(10bit)に加工され(Data_in1)、ユーザデータ同様に情報シンボルとしてデコーダに順次入力される。データ消去済ブロックに関しては、消去エラーがない限り、その値がすべて“1”であるデータがセクタ/ブロック格納領域から読み出され、上記同様の処理が実行される。このセクタ/ブロック情報のデコード処理が、計6byte分順次実行される。
【0031】
(ECCのデコード)
次に、セクタ/ブロック情報に続き、冗長領域より、ECCが読み出される。そして、ECCのチェックシンボル化、並びにそのデコードが実行されるが、これを、図6を用いて説明する。尚、図6はデコーダ2を示している。ECCは、前述したCB0乃至CB9がそのまま(即ち8bitずつ)FIFO方式で読み出されるが、デコーダ2は10bitを1シンボルとしてその処理を実行するため、読み出されたECCは10bitのシンボル形式に順次切り貼り加工され、その後、各シンボル(10bit)の全データに反転処理(XOR 0x3ff)が実行され、計8の本来のチェックシンボルとしてデコーダに順次入力される(CS0乃至CS7)。図6では、チェックシンボルCS3が構成され、デコーダ2の演算回路に入力される状態を示している。冗長領域から読み出されたECC(CB0乃至CB9)と反転されてデコーダ2の演算回路に入力されるチェックシンボル(CS0乃至CS9)は、どちらも総計80bitで、同じデータ量である(図7b)参照)。尚、データ消去済ブロックに関しては、消去エラーがない限り、その値がすべて“1”であるデータがECC格納領域から読み出され、上記同様の処理が実行される。
【0032】
(シンボルエラー有無検出)
デコーダ2は、ブロックから、コントローラ内の通信路を経由してその演算回路に入力された受信語(情報シンボルとチェックシンボル)に基づいて、シンドロームを生成するものである。ユーザデータからなる計512の情報シンボルと、セクタ/ブロック情報からなる計6の情報シンボル、並びに、ECCからなる計8のチェックシンボルのすべてがデコーダ2の演算回路に入力されると、デコーダ2はそのECCセクタに関するシンドロームを生成する。デコーダ2では、このシンドロームにより、情報シンボル(ユーザデータとセクタ/ブロック情報)とチェックシンボルにデータエラーがあるか否かを判別する。
【0033】
(シンボルエラー数検出)
シンドロームに依って、情報シンボル又はチェックシンボルのいずれか、またはその両者にデータエラーがあることが判明した場合、そのシンドロームはコレクタ3に入力される。コレクタ3は、デコーダ2から入力したシンドロームをもとに、Berlekamp-Massey Algorithmを用いて誤り位置多項式を生成するとともに、Chein Searchを用いて、誤りの位置(エラーのあるシンボル位置)とその根を求める。これらにより、当該セクタにおけるシンボルエラー数が判明する。
【0034】
このシンボルエラー数の検出を、その物理ブロックのすべてのページのすべてのセクタについて実施する。シンボルエラー数は、1ECCセクタの情報シンボルとチェックシンボルをエラーチェックするごとに累積記憶する。この処理を、物理ブロック番号「1」から順に、物理ブロック番号「2」、「3」・・・というように、ブロック番号(アドレス番号)を指定して、順に実施する。但し、論理ブロックアドレスと対応付けされない物理ブロック、例えば、1)システム情報が記憶されている、通常、アドレス番号「0」の物理ブロック、2)システム上の予約領域(reserved block)であって論理ブロックアドレスと対応付けされない物理ブロック、3)製造段階で不良と判断された物理ブロック(Bad Block)、4)使用後にBad Blockとなった物理ブロックは除外される。エラー検出対象の全ブロックのシンボルエラー数の検出を終了したら、エラーチェック対象となった全ブロックのシンボル数で、カウント集計されたシンボルエラー数を除算し、当該フラッシュメモリのSER(Symbol Error Rate)を求める。又は、エラーチェック対象となった全bit数で、カウント集計された前記シンボルエラー数を除算して求める。求めた値を記憶装置(フラッシュメモリ又はコントローラの所定記憶領域)に記憶する。
【0035】
尚、通常のデータのReadでは、ブロックから読み出された情報にデータエラーがなかった場合、前記RAMに転送されたユーザデータは、ホストに読み出される。ブロックから読み出された情報にデータエラーがあった場合は、デコーダ2で生成された前記シンドロームがコレクタ3に入力され、Forney Algorithm によって正しい値が求められて、この正しい値で前記RAMに転送されているユーザデータを訂正する。そして正しい値に訂正されたユーザデータが前記RAMからホストに読み出される。この点、本発明方法はSERを求めること自体を主目的とするため、ユーザデータは、必ずしもホストに送出される必要はない。
【0036】
シンボルエラー数の検出並びにSERの算出は、例えば毎日1回定刻(例えば午前零時)に実施することができる。このとき、システムが稼働中であっても、ホストから受けるコマンドとコマンドの間など、フラッシュメモリのアイドリング中に実行することができる。
【0037】
経験則又は実験値によって、フラッシュメモリのメンテナンス時期若しくは交換時期とSERの関係を予め把握し、そのSERの値を閾値として設定することにより、フラッシュメモリが当該時期に達したことを、光、音などでシステム管理人に報知するようにしてもよい。報知は、特許文献4に記載したように、記憶装置に設けた報知手段、または、ホストに接続された表示装置やホストに内蔵されているスピーカのいずれで行ってもよい。ホスト側で報知する場合は、記憶装置に記憶してあるSERをホストが読み出して行う。尚閾値は、第1の値(注意caution)、第2の値(警告warning)のように複数のレベルで設定し、閾値ごとに異なる方法で報知するようにしても良い。
【0038】
また、カレンダー機能やタイマー機能、さらにはコマンド発行機能を設けた外部監視装置を別途設けるとともに、記憶装置側からシリアルインターフェースやGPIOを介し又はBluetooth無線通信によってこの外部監視装置に接続し、外部監視装置から一定日の一定時刻にコマンドを発行してフラッシュメモリの状態を監視するようにしてもよい。さらには外部監視装置に通信機能を設け、フラッシュメモリの状態を管理者の携帯電話やパーソナルコンピュータ(PC)に通知するようにしてもよい。そして、SERが上記第2の閾値に達し、外部監視装置から記憶装置の交換時期の到来が通知されたとき、交換までの予備的な措置として、管理者のPCから記憶装置に対してフラッシュメモリに対するライトプロテクトやデータバックアップなどのコマンドを送り、記憶装置のコントローラにその処理を行わせてもよい。
【0039】
また、SERの履歴を、記憶装置若しくはホストに不揮発的に記録して、管理可能にしてもよい。特に従来、エラーの発生頻度は、一般にデータの書き替え回数に依存すると考えられていたため、書替え回数を概算して寿命の到来を予測するなどしていたが、データの読み出しによっても記憶データにエラーが発生することが判明している。本発明方法によって得られたSERに依れば、そのフラッシュメモリが主にデータの書替えの行われるものであるか、読み出しの行なわれるものであるかなどの使われ方の如何に拘らず、そのメンテナンス時期または寿命到来時期(endpoint period)を事前に検知して、データ破損など不測の事態を未然に防止することに大いに役立つであろう。
【0040】
なお、上記実施形態例では、エンコーダ1、デコーダ2及びコレクタ3は、リードソロモン符号に対応するものであって、10bitを1シンボルという単位でデータ処理するため、ホストから送出された1byteのデータにダミーデータを2bit付加してその処理を実行している。また、エンコーダ1からは1ECCセクタあたり計10byte出力されたECCにより、1ECCセクタあたり最大4シンボルまで、情報シンボル(ユーザデータおよびセクタ/ブロック情報)とチェックシンボルのシンボルエラー数をカウント可能である。
【0041】
同様に、リードソロモン符号に対応するエンコーダ1、デコーダ2及びコレクタ3を使用し、10bitを1シンボルという単位でデータ処理するとともに、エンコーダ1からは1ECCセクタあたりECCが計20byte出力するように構成し、該ECCにより、1ECCセクタあたり最大8シンボルまでシンボルエラー数をカウントすることもできる。このとき、1ECCセクタは、ユーザデータ512byteを格納するデータ領域、並びに、6byteのセクタ/ブロック情報と20byteのECCを格納する冗長領域で構成されることになる。
【0042】
以上説明したように、本発明方法によれば、フラッシュメモリの状態(書込み精度、データ劣化)を日常的に監視し、その保守に利用して好適である。また本発明方法を利用してフラッシュメモリの寿命到来の予測を行う場合は、特許文献4に開示している構成、またはパワーオン時間の総計、その他の判断要素を併せてS.M.A.R.T.(self-monitoring analysis and
reporting technology)方式で実行してもよいことは言うまでもない。
【図面の簡単な説明】
【0043】
【図1】フラッシュメモリのページ構成例である。
【図2】リードソロモン方式ENDECを使用する場合の1ECCセクタのデータ構成例である。
【図3】リードソロモン方式のエラー訂正回路の構成である。
【図4】リードソロモン方式のエンコーダ又はデコーダにおける情報シンボルのデータ入出力状態例である。
【図5】リードソロモン方式のエンコーダからのチェックシンボルのデータ出力例である。
【図6】リードソロモン方式のデコーダでのECC−チェックシンボル変換と演算回路への入力例である。
【図7】リードソロモン方式ENDECを使用する場合のエンコード時とデコード時のチェックシンボルのデータ加工例である。
【符号の説明】
【0044】
1 エンコーダ
2 デコーダ
3 コレクタ




























【特許請求の範囲】
【請求項1】
そのブロックがデータ書込済のブロックであるかデータ消去済のブロックであるかに拘らず、論理ブロックアドレスで対応付けされるすべての物理ブロックに対し、データエラーをシンボル単位で検出し、これをシンボルエラーとして総計し、当該フラッシュメモリのSER(Symbol Error Rate)を算出することを特徴とするフラッシュメモリの状態検出方法。
【請求項2】
SERは、エラーチェック対象となった全シンボル数で、検出された前記シンボルエラー総数を除して求めることを特徴とする請求項1記載のフラッシュメモリの状態検出方法。
【請求項3】
SERは、エラーチェック対象となった全bit数で、検出された前記シンボルエラー総数を除して求めることを特徴とする請求項1記載のフラッシュメモリの状態検出方法。
【請求項4】
(A)ブロックに対するデータの書込みは、
ホスト側から1byteずつ送出されるユーザデータを反転してその先頭にNbit(Nは正の整数)のダミーデータを付加してこれを1情報シンボルとして、エンコーダに計512シンボル分順次入力するステップと、
セクタ/ブロック情報を反転してその先頭にNbitのダミーデータを付加し、これを同じく1情報シンボルとしてエンコーダに計6シンボル分順次入力するステップと、
エンコーダから出力された1情報シンボルのユーザデータの先頭Nbitの前記ダミーデータを除去し、残りの1byteを反転した本来のユーザデータを計512byte分フラッシュメモリのデータ領域に順次格納するステップと、
エンコーダから出力された1情報シンボルのセクタ/ブロック情報の先頭Nbitの前記ダミーデータを除去し、残りの1byteを反転した本来のセクタ/ブロック情報を計6byte分フラッシュメモリの冗長領域に順次格納するステップと、
エンコーダから(8+N)bit単位で順次出力されるチェックシンボルを、連続する1byte単位のECCに順次加工し、これを反転したものをフラッシュメモリの冗長領域に順次格納するステップを含み、
(B)データ書込済ブロックに対するシンボルエラーの検出は、
データ領域に格納された前記ユーザデータを1byteずつ読み出してこれを反転するとともに、その先頭にNbitのダミーデータを付加して1情報シンボルとし、これを順次デコーダに入力するステップと、
冗長領域に格納された前記セクタ/ブロック情報を1byteずつ読み出してこれを反転するとともに、その先頭にNbitのダミーデータを付加して同じく1情報シンボルとし、これを順次デコーダに入力するステップと、
冗長領域に格納された前記ECCを1byteずつ順次読み出し、これを(8+N)bit構成に加工し反転して、本来のチェックシンボルを順次デコーダに入力するステップと、
デコーダに入力された前記情報シンボルとチェックシンボルとに基づいてそのシンドロームを生成するステップと、
前記シンドロームによってデータエラーがあることが判明した場合、該シンドロームをコレクタに入力し、シンボルエラー数をカウントするステップを含み、
(C)データ消去済ブロックに対するシンボルエラーの検出は、
データ領域から1byteずつデータを読み出してこれを反転し、その先頭にNbitのダミーデータを付加して1情報シンボルとし、これを512シンボル分、デコーダに順次入力するステップと、
当該ブロックの冗長領域のセクタ/ブロック情報格納領域から、1byteずつデータを読み出してこれを反転し、その先頭にNbitのダミーデータを付加して同じく1情報シンボルとし、これを6シンボル分、順次デコーダに入力するステップと、
当該ブロックの冗長領域のECC格納領域から1byteずつデータを読み出して、これを10bitで構成される連続する1シンボル単位に順次加工して反転し、これをチェックシンボルとして計8シンボル分、デコーダに順次入力するステップと、
デコーダに入力された前記情報シンボルとチェックシンボルとに基づいてそのシンドロームを生成するステップと、
前記シンドロームによってデータエラーがあることが判明した場合、該シンドロームをコレクタに入力し、シンボルエラー数をカウントするステップを含む、
ことを特徴とする請求項1記載のフラッシュメモリの状態検出方法。
【請求項5】
(A)ブロックに対するデータの書込みは、
ホスト側から1byteずつ送出されるユーザデータを反転してその先頭に2bitのダミーデータを付加してこれを1情報シンボルとして、エンコーダに計512シンボル分順次入力するステップと、
セクタ/ブロック情報を反転してその先頭に2bitのダミーデータを付加し、これを同じく1情報シンボルとしてエンコーダに計6シンボル分順次入力するステップと、
エンコーダから出力された1情報シンボルのユーザデータの先頭2bitの前記ダミーデータを除去し、残りの1byteを反転した本来のユーザデータを計512byte分フラッシュメモリのデータ領域に順次格納するステップと、
エンコーダから出力された1情報シンボルのセクタ/ブロック情報の先頭2bitの前記ダミーデータを除去し、残りの1byteを反転した本来のセクタ/ブロック情報を計6byte分フラッシュメモリの冗長領域に順次格納するステップと、
エンコーダから10bit単位で順次出力されるチェックシンボルを、連続する1byte単位のECCに順次加工し、これを反転したものをフラッシュメモリの冗長領域に順次格納するステップを含み、
(B)データ書込済ブロックに対するシンボルエラーの検出は、
データ領域に格納された前記ユーザデータを1byteずつ読み出してこれを反転するとともに、その先頭に2bitのダミーデータを付加して1情報シンボルとし、これを順次デコーダに入力するステップと、
冗長領域に格納された前記セクタ/ブロック情報を1byteずつ読み出してこれを反転するとともに、その先頭に2bitのダミーデータを付加して同じく1情報シンボルとし、これを順次デコーダに入力するステップと、
冗長領域に格納された前記ECCを1byteずつ順次読み出し、これを10bitで構成される連続する1シンボル単位に順次加工し反転した本来のチェックシンボルをデコーダに順次入力するステップと、
デコーダに入力された前記情報シンボルとチェックシンボルとに基づいてそのシンドロームを生成するステップと、
前記シンドロームによってデータエラーがあることが判明した場合、該シンドロームをコレクタに入力し、シンボルエラー数をカウントするステップを含み、
(C)データ消去済ブロックに対するシンボルエラーの検出は、
当該ブロックのデータ領域から1byteずつデータを読み出してこれを反転し、その先頭に2bitのダミーデータを付加して1情報シンボルとし、これを512シンボル分、デコーダに順次入力するステップと、
当該ブロックの冗長領域のセクタ/ブロック情報格納領域から、1byteずつデータを読み出してこれを反転し、その先頭に2bitのダミーデータを付加して同じく1情報シンボルとし、これを6シンボル分、順次デコーダに入力するステップと、
当該ブロックの冗長領域のECC格納領域から1byteずつデータを読み出して、これを10bitで構成される連続する1シンボル単位に順次加工して反転し、これをチェックシンボルとして計8シンボル分、デコーダに順次入力するステップと、
デコーダに入力された前記情報シンボルとチェックシンボルとに基づいてそのシンドロームを生成するステップと、
前記シンドロームによってデータエラーがあることが判明した場合、該シンドロームをコレクタに入力し、シンボルエラー数をカウントするステップを含む、
ことを特徴とする請求項4記載のフラッシュメモリの状態検出方法。
【請求項6】
エンコーダ、デコーダ及びコレクタは、リードソロモン符号に対応するものであって、エンコーダからは1ECCセクタあたり計10のチェックシンボルが出力され、1ECCセクタあたり最大4シンボルまでシンボルエラー数をカウント可能であることを特徴とする請求項4又は請求項5記載のフラッシュメモリの状態検出方法。
【請求項7】
エンコーダ、デコーダ及びコレクタは、リードソロモン符号に対応するものであって、エンコーダからは1ECCセクタあたり計20のチェックシンボルが出力され、1ECCセクタあたり最大8シンボルまでシンボルエラー数をカウント可能であることを特徴とする請求項4又は請求項5記載のフラッシュメモリの状態検出方法。
【請求項8】
シンボルエラーの検出は、フラッシュメモリがアイドリング中に実行されることを特徴とする、請求項1乃至請求項7いずれか1項記載のフラッシュメモリの状態検出方法。
【請求項9】
SERが所定の閾値に達した場合、当該閾値に到達したことを外部に報知することを特徴とする、請求項1乃至請求項7いずれか1項記載のフラッシュメモリの状態検出方法。
【請求項10】
閾値は少なくとも2以上の値で設定されてなり、外部への報知は、閾値ごとに異なった方法で実行されることを特徴とする請求項9記載のフラッシュメモリの状態検出方法。























【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2008−305507(P2008−305507A)
【公開日】平成20年12月18日(2008.12.18)
【国際特許分類】
【出願番号】特願2007−152907(P2007−152907)
【出願日】平成19年6月8日(2007.6.8)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
【出願人】(594096966)株式会社ハギワラシスコム (32)
【Fターム(参考)】