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