"複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置であって、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、該誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、その誤り訂正単位が属するページに比較的に多くの誤りが存在している場合に対応するために、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの少ない1以上の別のページにある誤り訂正単位とに記憶するための第2冗長領域とを含む、不揮発性半導体メモリ装置。比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置であって、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りの多いページに属する誤り訂正単位にある誤りを訂正するための第2組の冗長ビットの少なくとも一部を記憶するための第2冗長領域とを含む、不揮発性半導体メモリ装置。複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、該誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、その誤り訂正単位が属するページに比較的に多くの誤りが存在していることが判明している場合に当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの比較的に少ない別のページにある誤り訂正単位とに分散させて記憶するための第2冗長領域とを含み、比較的に誤りの少ないページに属する誤り訂正単位のユーザデータに対しては前記第1組の冗長ビットにより誤り訂正を行うステップと、比較的に誤りの多いページに属する誤り訂正単位のユーザデータについては、そのユーザデータ領域を分割して、分割されたユーザデータ領域のそれぞれに対して、前記第2冗長領域にある冗長ビットを適用して誤り訂正を行うステップとを含む不揮発性半導体メモリ装置の誤り訂正方法。比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りが多いページに属するある誤り訂正単位の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域とを含み、比較的に誤りの少ないページに属する誤り訂正単位のユーザデータ領域に対してはその誤り訂正領域内にある前記第1組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、比較的に誤りの多いページに属する誤り訂正単位のユーザデータ領域については、そのユーザデータ領域を分割して、分割されたユーザデータ領域のそれぞれに対して、前記第2冗長領域の冗長ビット又は比較的に誤りの多いページの当該誤り訂正単位の冗長ビットの全部又は一部あるいはそれらの両方を適用して誤り訂正を行う第2の訂正ステップとを含む不揮発性半導体メモリ装置の誤り訂正方法。比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りが多いページのある誤り訂正単位の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域とを含み、1以上の比較的に誤りの多いページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための少なくとも一組の冗長ビットを記憶しており、比較的に誤りが多いページにある誤り訂正単位のユーザデータ領域に対してその誤り訂正単位内にある前記一組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、前記第1の訂正ステップにより当該誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、その誤り訂正単位のユーザデータ領域を分割して、分割されたユーザデータのそれぞれに対して、前記第2冗長領域の冗長ビット又は比較的に誤りの多いページの当該誤り訂正単位にある前記一組の冗長ビット以外の冗長ビットの全部又は一部あるいはそれらの両方を適用して誤り訂正を行うステップとを含む不揮発性半導体メモリ装置の誤り訂正方法。比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、比較的に誤りの多いページにある1以上の誤り訂正単位のユーザデータ領域内にある特定領域が設定されており、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りが多いページに属するある誤り訂正単位内の前記特定領域の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域とを含み、1以上の比較的に誤りの多いページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための少なくとも一組の冗長ビットを記憶しており、比較的誤りが多いページにある誤り訂正単位のユーザデータ領域に対してその誤り訂正単位内にある前記一組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、前記第1の訂正ステップにより前記誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、前記特定領域に対して、前記第2組の冗長ビットを適用して誤り訂正を行うステップと、訂正された前記特定領域のデータによって前記特定領域内のデータを置換した後、置換されたデータを含むユーザデータ領域に対して当該誤り訂正単位にある前記一組の冗長ビットにより訂正を行うステップとを含む不揮発性半導体メモリ装置の誤り訂正方法。前記第1の訂正ステップを行う前に、前記誤り訂正単位のユーザデータにある誤りの数を検出する誤り検出ステップと、前記誤り検出ステップにより検出された誤りの数が前記第1の訂正ステップにより訂正可能であるか否かを判断して、訂正可能であれば前記第1の訂正ステップに進み、さもなければ前記第2の訂正ステップに進むステップとをさらに含む請求項4に記載の誤り訂正方法。前記誤り検出ステップにおいて、ユーザデータと冗長ビットを0と1の値の数が同じバランス化符号に変換して、不揮発性半導体メモリ装置に書き込み、それを読み出すことにより、0と1の値の数のバランスの崩れを用いて誤りを検出する、請求項7に記載の誤り訂正方法。複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置の誤り訂正装置であって、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、ある誤り訂正単位のユーザデータにある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを当該誤り訂正単位に記憶する第1の冗長ビット書き込み手段と、前記誤り訂正単位のユーザデータに比較的に多くの誤りが存在している場合には、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該誤り訂正単位の属するページより誤りの少ない別のページに属する誤り訂正単位とに分散させて書き込む第2の冗長ビット書き込み手段と、前記ある誤り訂正単位にある誤りビットを前記第1組の冗長ビットを用いて訂正する第1の誤り訂正実行手段と、前記第1の誤り訂正実行手段により前記誤り訂正単位のユーザデータにある誤りが訂正されたか否かを判断する訂正後状態判断手段と、前記訂正後状態判断手段により、誤りが訂正されていないと判断された場合には、前記第2組の冗長ビットを用いて当該誤り訂正単位にある誤りビットを訂正する第2の誤り訂正実行手段とを備えた誤り訂正装置。前記誤り訂正単位にある誤りビットの数を検出する誤り検出手段と、前記誤り検出手段により検出された誤りビットの数が前記第1の誤り訂正実行手段により訂正可能であるか否かを判断する訂正方法判断手段とをさらに備えており、前記訂正方法判断手段により訂正可能と判断された場合には、前記第1の誤り訂正実行手段が誤り訂正を実行し、さもなければ、前記第2の誤り訂正実行手段が誤り訂正を実行する、請求項9に記載の誤り訂正装置。前記誤り検出手段が、ユーザデータと冗長ビットを0と1の値の数が同じバランス化符号に変換して、不揮発性半導体メモリ装置に書き込み、それを読み出すことにより、0と1の値の数のバランスの崩れを用いて誤りの数を検出する、請求項10に記載の誤り訂正装置。このような従来技術の課題に鑑み、本発明は、不揮発性半導体メモリのための新たな誤り訂正方法及びその装置を提供するものである。本発明は、不揮発性半導体メモリの誤りビットの発生状況の傾向に着目し、誤り訂正符号の記憶領域を有効に活用し、誤り訂正回路の大きさを抑制する誤り訂正方法と誤り訂正装置を実現することを目的とする。まず、データが誤っているビットの発生状況の傾向について図1と図2を参照して説明する。図1は、横軸にページ番号、縦軸に誤りビットの個数を示したグラフである。図に例示しているように、ページ番号が0~120の各ページにある誤りビットの個数は、最も多くて約120個である。これに対し、ページ番号が120~127のページにある誤りビットの個数は、最も多くて約370個、最少でも約150個である。つまり、誤りビットの個数が少ないページが大半であり、誤りビットがある一定数以上存在するページは、ページ番号の大きなページに数が限られている。この例でもわかるように、誤りビットが多い少数のページと、そうでない多数のページが存在するのが普通である。誤りビットが多いページは、ブロックの先頭や終わりの部分に偏在している傾向にあって、ブロックの全体に分布しているのではないことが分かる。書き込みと読み取りの誤りには、ビット値が正しくは0であるビットを1と誤る誤りと、ビット値が正しくは1であるビットを0と誤る誤りの2種類がある。以下、前者の誤りをマイナス-誤りと呼び、後者の誤りをプラス誤りと呼ぶことにする。この2種類の誤りの発生の傾向を図2に示している。ページ番号を横軸にとり、マイナス誤りの個数を縦軸の負の方向にとり、プラス誤りの個数を縦軸の正の方向にとっている。そして、マイナス誤りの個数を結んだ線を符号C1で示しており、プラス誤りの個数を結んだ線を符号C2で示している。この図からわかるように、マイナス誤りの多いページは、プラス誤りが非常に少ない。また、プラス誤りの多いページは、マイナス誤りが非常に少ない。つまり、誤りビットそのものの個数の多寡に関わらず、各ページについてみると、あるページについてマイナス誤りとプラス誤りが同様の頻度で発生することはほとんどなく、いずれか一方が他方に比べて極端に多い傾向があるといえる。図3は、誤りビットを含んだページを読み取って従来の誤り訂正を行う際に、誤り訂正された誤りビット数の分布を各ページ毎に模式的に示したグラフである。誤りビットの数が大きいページを基準に冗長領域のサイズを決定するため、実際には多くのページに対しては過剰な冗長ビットを付加していることになることがわかる。つまり、誤りビットの個数が少ないページの冗長領域が有効に活用されていないということがいえる。そこで、本発明は、このような誤りビットの発生状況の傾向と冗長領域の使用状況とに着目して、なされたものである。本発明は、まず、複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置であって、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、該誤り訂正単位は、その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、その誤り訂正単位が属するページに比較的に多くの誤りが存在している場合に対応するために、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの少ない1以上の別のページにある誤り訂正単位とに記憶するための第2冗長領域とを含む、不揮発性半導体メモリ装置を提供する。また、本発明は、複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、該誤り訂正単位は、その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、その誤り訂正単位が属するページに比較的に多くの誤りが存在していることが判明している場合に当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの比較的に少ない別のページにある誤り訂正単位とに分散させて記憶するための第2冗長領域とを含み、比較的に誤りの少ないページに属する誤り訂正単位のユーザデータに対しては前記第1組の冗長ビットにより誤り訂正を行うステップと、比較的に誤りの多いページに属する誤り訂正単位のユーザデータについては、そのユーザデータ領域を分割して、分割されたユーザデータ領域のそれぞれに対して、前記第2冗長領域にある第2組の冗長ビットを適用して誤り訂正を行うステップとを含む不揮発性半導体メモリ装置の誤り訂正方法を提供する。さらに、本発明は、複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、誤り訂正単位は、その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、その誤り訂正単位が属するページに比較的に多くの誤りが存在していることが判明している場合には、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの比較的に少ない1以上の別のページにある誤り訂正単位とに記憶するための第2冗長領域とを含み、ある誤り訂正単位のユーザデータに対して前記第1組の冗長ビットを用いて誤り訂正する第1の訂正ステップと、前記第1の訂正ステップにより前記誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、前記第2組の冗長ビットを用いて当該誤り訂正単位のユーザデータに対して誤り訂正を行う第2の訂正ステップとを含む誤り訂正方法を提供する。ここで、前記第1の訂正ステップを行う前に、前記誤り訂正単位のユーザデータにある誤りを検出する誤り検出ステップと、前記誤り検出ステップにより検出された誤りが前記第1の訂正ステップにより訂正可能であるか否かを判断して、訂正可能であれば前記第1の訂正ステップに進み、さもなければ前記第2の訂正ステップに進むステップとをさらに含んでいてもよい。また、前記誤り検出ステップにおいて、ユーザデータと冗長ビットを0と1の値の数が同じバランス化符号に変換して、不揮発性半導体メモリ装置に書き込み、それを読み出すことにより、0と1の値の数のバランスの崩れを用いて誤りを検出してもよい。そして、本発明は、複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置の誤り訂正装置であって、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、ある誤り訂正単位のユーザデータにある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを当該誤り訂正単位に記憶する第1の冗長ビット書き込み手段と、前記誤り訂正単位のユーザデータに比較的に多くの誤りが存在している場合には、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該誤り訂正単位の属するページより誤りの少ない別のページに属する誤り訂正単位とに分散させて書き込む第2の冗長ビット書き込み手段と、前記ある誤り訂正単位にある誤りビットを前記第1組の冗長ビットを用いて訂正する第1の誤り訂正実行手段と、前記第1の誤り訂正実行手段により前記誤り訂正単位のユーザデータにある誤りが訂正されたか否かを判断する訂正後状態判断手段と、前記訂正後状態判断手段により、誤りが訂正されていないと判断された場合には、前記第2組の冗長ビットを用いて当該誤り訂正単位にある誤りビットを訂正する第2の誤り訂正実行手段とを備えた誤り訂正装置を提供する。ここで、前記誤り訂正単位にある誤りビットを検出する誤り検出手段と、前記誤り検出手段により検出された誤りビットが前記第1の誤り訂正実行手段により訂正可能であるか否かを判断する訂正方法判断手段とをさらに備えていてもよく、前記訂正方法判断手段により訂正可能と判断された場合には、前記第1の誤り訂正実行手段が誤り訂正を実行し、さもなければ、前記第2の誤り訂正実行手段が誤り訂正を実行することができる。また、前記誤り検出手段が、ユーザデータと冗長ビットを0と1の値の数が同じバランス化符号に変換して、不揮発性半導体メモリ装置に書き込み、それを読み出すことにより、0と1の値の数のバランスの崩れを用いて誤りの数を検出してもよい。本発明は、さらに、比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置であって、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りの多いページに属する誤り訂正単位にある誤りを訂正するための第2組の冗長ビットの少なくとも一部を記憶するための第2冗長領域とを含む、不揮発性半導体メモリ装置を提供する。ここで、訂正を行う対象である比較的に誤りの多いページの誤り訂正単位と、その訂正に用いる冗長ビットの保存先は、一定のルールに基づいて関係付けておくことが出来る。例えば、一定数のページをおいて離れたページ比較的に誤りの少ないページ内の対応する位置にある誤り訂正単位に含めた冗長ビットを用いるといったようにである。このような関係性は任意であり、特定の例に限定されるものではない。本発明は、また、比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りが多いページに属するある誤り訂正単位の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域とを含み、比較的に誤りの少ないページに属する誤り訂正単位のユーザデータ領域に対してはその誤り訂正領域内にある前記第1組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、比較的に誤りの多いページに属する誤り訂正単位のユーザデータ領域については、そのユーザデータ領域を分割して、分割されたユーザデータ領域のそれぞれに対して、前記第2冗長領域の冗長ビット又は比較的に誤りの多いページの当該誤り訂正単位の冗長ビットの全部又は一部あるいはそれらの両方を適用して誤り訂正を行う第2の訂正ステップとを含む不揮発性半導体メモリ装置の誤り訂正方法を提供する。さらに別の実施の形態として、本発明は、比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りが多いページのある誤り訂正単位の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域とを含み、1以上の比較的に誤りの多いページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための少なくとも一組の冗長ビットを記憶しており、比較的に誤りが多いページにある誤り訂正単位のユーザデータ領域に対してその誤り訂正単位内にある前記一組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、前記第1の訂正ステップにより当該誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、その誤り訂正単位のユーザデータ領域を分割して、分割されたユーザデータのそれぞれに対して、前記第2冗長領域の冗長ビット又は比較的に誤りの多いページの当該誤り訂正単位にある前記一組の冗長ビット以外の冗長ビットの全部又は一部あるいはそれらの両方を適用して誤り訂正を行うステップとを含む不揮発性半導体メモリ装置の誤り訂正方法を提供する。さらに、本発明は、比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、比較的に誤りの多いページにある1以上の誤り訂正単位のユーザデータ領域内にある特定領域が設定されており、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りが多いページに属するある誤り訂正単位内の前記特定領域の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域とを含み、1以上の比較的に誤りの多いページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための少なくとも一組の冗長ビットを記憶しており、比較的誤りが多いページにある誤り訂正単位のユーザデータ領域に対してその誤り訂正単位内にある前記一組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、前記第1の訂正ステップにより前記誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、前記特定領域に対して、前記第2組の冗長ビットを適用して誤り訂正を行うステップと、訂正された前記特定領域のデータによって前記特定領域内のデータを置換した後、置換されたデータを含むユーザデータ領域に対して当該誤り訂正単位にある前記一組の冗長ビットにより訂正を行うステップとを含む不揮発性半導体メモリ装置の誤り訂正方法を提供する。図1~図3を通して説明したビット誤りの発生状況の傾向に鑑みて、誤りビットが多いページに用いる誤り訂正の訂正能力と、誤りが少ないページに用いる誤り訂正の訂正能力を変更することが好ましい。具体的には、上述した図16の例では訂正能力を24ビットとした場合を例示したが、訂正能力を高めることを考えてみる。例えば、訂正能力を24ビットから60ビットに高めるとすると、それに伴って誤り訂正回路の複雑さも増加してしまう。そこで、20ビットの訂正能力を持つ誤り訂正と41ビットの訂正能力を持つ誤り訂正とを用いて、誤り訂正回路の複雑さが余り増大しないようにすることを考えてみる。ここで、説明のために20ビット、41ビット、60ビットといった訂正能力の数値を例示して説明するが、本発明はこれらの数値に拘束されるものではもちろんない。ここで、第1の誤り訂正は、1キロバイトのユーザデータに対して、20ビットの訂正能力を有する誤り訂正であり、比較的に誤りが少ないページgoodpageに対して適用する。そして、第2の誤り訂正は、1キロバイトのユーザデータを2つに分割した512バイトのユーザデータに対して、41ビットの訂正能力を有する誤り訂正符号であり、比較的に誤りの多いページbadpageに適用する。誤り訂正方式の例としてBCHを使用する。前者をBCH20,1024、後者をBCH41,512と記すことにする。つまり、BCHA,Bは、Aビットの訂正能力を有するBCH法をBバイトのユーザデータに適用することを表す。BCH41,512は、BCH20,1024の4倍以上の訂正能力を持っている。そして、図4に、BCH20,1024とBCH41,512とを用いて誤り訂正を行うためのページの領域の使用を示している。仮に、誤り訂正単位210は誤りビットの個数が少ないページgoodpage内の一領域であり、誤り訂正単位220は誤りビットの個数が多いページbadpage内の一領域であるとする。誤り訂正単位210は、サイズが1キロバイトであるユーザデータ領域211と、20ビット訂正の第1の冗長領域212と、41ビット訂正の第2の冗長領域213とから構成されている。誤り訂正単位220も、誤り訂正単位210と同様の構成であり、ユーザデータ領域221と、第1の冗長領域222と、第2の冗長領域223とから構成されている。なお、誤り訂正単位210と220は、ある1つのブロックに存在している領域である。両者は互いに隣接したページにあることが考えられるが、必ずしも隣接している必要はなく、1ページあるいは複数のページを間に挟んで位置していてもよい。このような誤りビット数が多いページとそのページの訂正に使う冗長ビットを保存する比較的に誤りビット数の少ないページとの間の関係は一定のルールによって決定されるものであればよく、どのようなルールであるかは任意である。誤り訂正単位210において、第1の冗長領域212は、ユーザデータ領域211の誤りを訂正するための第1の誤り訂正、すなわちBCH20,1024に使用する第1組の冗長ビットを記憶する領域である。第2の冗長領域213は、誤りの多いページにあるユーザデータ領域221の前半のユーザデータ領域221A512バイトの誤りを訂正するための第2の誤り訂正、すなわちBCH41,512に使用する第2組の冗長ビットを記憶する領域である。また、誤り訂正単位220において、第1の冗長領域222は、ユーザデータ領域221の誤りを訂正するための第1の誤り訂正、すなわちBCH20,1024に使用する第1組の冗長ビットを記憶する領域である。そして、第2の冗長領域223は、誤り訂正単位220内のユーザデータ領域221の後半であるユーザデータ領域221Bの誤りを訂正するための第2の誤り訂正、すなわちBCH41,512に使用する第2組の冗長ビットを記憶する領域である。つまり、誤りの多い誤り訂正単位220内のユーザデータ領域221にある誤りを訂正するための第2組の冗長ビットは、第2の冗長領域213と223に分散して記憶されている。このようにすることにより、誤りの多い1キロバイトのユーザデータ領域221に対して、第2の冗長領域213と223からなる冗長領域を確保することができる。つまり、ユーザデータ領域221を構成している領域221Aと221Bのそれぞれいずれも512バイトに対して41ビット訂正の第2の冗長領域を確保することができる。加えて、従来技術においては浪費されていた冗長領域212あるいは213を無駄なく有効に利用することができる。つまり、60ビット訂正の冗長ビットをすべてのページに適用するのではなく、通常は20ビット訂正の冗長ビットを適用し、誤りの多いページに対しては、そのページのユーザデータ領域を分割したうえで、例えば、二つの分割されたユーザデータ領域のそれぞれに対して41ビット訂正の冗長ビットを用いて誤り訂正を行う。これにより、誤り訂正に必要な回路の大きさを60ビット用回路から41ビット用回路へと大幅に抑えることができる。また、同様に、図5に示すように、比較的に誤りの少ないページ内の誤り訂正単位310と比較的に誤りの多いページ内の誤り訂正単位320を考えたとき、比較的に誤りの少ないページの誤り訂正単位310にある1キロバイトのユーザデータ領域311のためにBCH20,1024を使って訂正する。そこで、そのための冗長領域312を設けておく。上に定義したように、この冗長領域312は、20ビットの訂正能力を与えるものである。そして、比較的に誤りの多いページの誤り訂正単位320のためにはBCH20,512を使って、誤り訂正単位320のユーザデータの半分321Aと残りの半分321Bとのそれぞれに対してBCH20,512の訂正を施すことが考えられる。その場合には、ユーザデータ領域の半分の領域321Aの訂正ために、BCH20,512用の冗長ビットを2分割して、領域313と領域323として、それぞれ、誤り訂正単位310と誤り訂正単位320の中に分けて保存することが出来る。そして、ユーザデータ領域の残り半分の領域321Bのためには、領域312に対応する領域322にBCH20,512のための冗長ビットを保存することが出来る。ここで、領域321Aに対する誤り訂正を行う際には、領域313と領域323とに分割されて保存されていた冗長ビットを組み合わせて訂正を実行することとなる。この場合には、20ビット訂正用の回路しか必要としないこととなる。さらに、図6に示すように、比較的に誤りの少ないページ内の誤り訂正単位350、360と、比較的に誤りの多いページ内の誤り訂正単位370とを考える。比較的に誤りの少ないページの誤り訂正単位350にある1キロバイトのユーザデータ領域351はBCH20,1024を使って訂正するので、そのための冗長領域353を設ける。誤り訂正単位360についても同様である。これらの冗長領域352と362は、それぞれ20ビットの訂正能力を与えるものである。そして、比較的に誤りの多いページ内の誤り訂正単位370のユーザデータ領域371は、0.5キロバイトずつに2分割して、それぞれ領域371Aと領域371Bとする。そして、ユーザデータ領域371Aの訂正に用いるBCH41,512のための冗長ビットは、比較的に誤りの少ないページ内の誤り訂正単位350と360とに分割して含める。ユーザデータ371Bの訂正に用いる冗長ビットは、比較的に誤りの多いページの誤り訂正単位370内の領域372に含めることが出来る。このように、ユーザデータ訂正用の冗長ビットの少なくとも一部は、比較的に誤りの多いページ内の誤り訂正単位の外、すなわち比較的に誤りの少ないページ内の誤り訂正単位に、分散して配置することが出来る。そして、その分散の仕方は全く任意であり、一定のルールに従っていれば、どのように配置することも可能である。図4~図6の例においては、比較的に誤りの多いページ内のユーザデータ領域を2分割して、等しいサイズの2つの領域を作ったが、これは一例に過ぎず、2:3や34など任意の割合に分割することが出来る。また下記の例にあるように、4分割またはそれ以上の分割、3分割などの奇数の領域数への分割も可能である。図7は、本発明の実施の形態に係るSSDSolidStateDrive1を概略的に示したブロック図である。SSD1はホスト装置4に接続されており、ホスト装置4の外部メモリとして機能する。SSD1は、不揮発性メモリとしてのNANDフラッシュメモリ以下、NANDメモリと略す2と、ホスト装置4の指示に応じて、NANDメモリ2に対してデータの読み込み及び書き込みを行うNANDコントローラ3とを備えている。NANDメモリ2の記憶領域は、上述したように、一定のサイズの複数のブロックから構成されており、各ブロックは一定のサイズの複数のページから構成されている。本実施の形態では、不揮発性メモリとしてNANDメモリを使用しているが、それに限定されるものではない。図7において、NANDコントローラ3は、ホスト装置4とのインターフェース処理を行うホストインターフェース6と、NANDメモリ2とのインターフェース処理を行い、データの読み込み及び書き込みを制御するNANDインターフェース5と、NANDメモリ2に書き込むデータに対して、誤り訂正符号を生成する誤り訂正符号部7と、NANDメモリ2から読み出されたデータに対して、誤り検出および誤り訂正を行う誤り訂正復号部8とを備えている。図8に示すように、誤り訂正符号部7は、ホスト装置4からのユーザデータを受け付けるユーザデータ受付手段71と、これから書き込むNANDメモリのページが誤りの多いページかそうでないページかを判断する誤り数判定手段73と、第1の冗長ビット生成手段75と、第2の冗長ビット生成手段77と、ページデータ生成手段79とを備えている。第1の冗長ビット生成手段75は、NANDメモリ2のユーザデータに対して、上述した誤り訂正単位210で、その誤り訂正を行うための第1組の冗長ビットを生成する。この第1組の冗長ビットは、第1の誤り訂正、例えばBCH20,1024に用いる冗長ビットである。第2の冗長ビット生成手段77はその誤り訂正単位が誤りの多いページに書き込まれる場合に、NANDメモリ2のユーザデータに対して、上述した誤り訂正単位220で、その誤り訂正を行うための第2組の冗長ビットを生成する。この第2組の冗長ビットは、第2の誤り訂正、例えばBCH41,512に用いる冗長ビットである。ここで、これから書き込むページが誤り数の多いページか否かは、すでに行ったテストの結果を記憶させておいて判断することもできるし、過去の書き込み及び読み出しの結果を記憶して判定を行うものであってもよい。この場合には、誤りの数があまり多くないページに対しても積極的に第2の冗長領域の付与を行うことにより、経時的な誤り率の悪化などに対してもよりフレキシブルに対応できるようにすることができる。ページデータ生成手段79は、ホスト装置4から受け取ったユーザデータを所定のサイズ例えば1キロバイトに分割して、図4に示したユーザデータ領域211に書き込むためのユーザデータを生成し、このユーザデータと、第1の冗長ビット生成手段75により生成された第1組の冗長ビットと、第2の冗長ビット生成手段77により生成された第2組の冗長ビットとを組み合わせて誤り訂正単位210のデータを作成する。さらに、ページデータ生成手段79は、ホスト装置4から受け取ったユーザデータを所定のサイズ例えば512バイトに分割して、図4に示したユーザデータ領域221A及び221Bに書き込むためのユーザデータを作成し、これら2つのユーザデータと、第1の冗長ビット生成手段75により生成された第1組の冗長ビットと、第2の冗長ビット生成手段77により生成された第2組の冗長ビットとを組み合わせて誤り訂正単位220のデータを作成する。このとき、ユーザデータ領域221Aに書き込まれるユーザデータのための第2組の冗長ビットは、誤り訂正単位210のデータの中に含まれ、ユーザデータ領域221Bに書き込まれるユーザデータのための第2組の冗長ビットは、誤り訂正単位220のデータの中に含まれるように、ページデータ生成手段79が誤り訂正単位210及び220のデータを生成する。図9は、図4のさらに別の変形例を示している。誤り訂正単位410、420、430は、いずれも、誤りの数が少ないページに属する。誤り訂正単位440は、誤りの数が多いページに属する。なお、上述の例と同様、これらの4つの誤り訂正単位の位置関係は、410、420、430と、440とが異なるページに属しているほかは特に問わない。第1の冗長領域412、422、432、442は、それぞれ、ユーザデータ領域411、421、431、441のための第1の誤り訂正に用いる冗長ビットを記憶する領域である。また、誤りの数が多い誤り訂正単位440内のユーザデータ領域441内の領域441A、441B、441C、441Dサイズはいずれも256バイトのための第2の誤り訂正に用いる冗長ビットは、それぞれ第2の冗長領域413、423、433、443に分散して記憶されている。一例として、上記第1の誤り訂正は、BCH31,1024であり、上記第2の誤り訂正は、BCH29,256である。BCH29,256は、BCH31,1024の約3.7倍の訂正能力を持っている。図10は、図4のさらに別の変形例を示している。誤り訂正単位510、520、530は、いずれも、誤りの数が少ないページに属する。一方で、誤り訂正単位540は、誤りの数が多いページに属する。この誤り訂正単位540内のユーザデータ領域541は、領域541Aと領域541Bの2つの領域サイズはいずれも512バイトからなる。なお、上述の例と同様、これらの4つの誤り訂正単位の位置関係は、510、520、530と540とが異なるページに属しているほかは、特に問わない。第1の冗長領域512、522、532、542は、それぞれ、ユーザデータ領域511、521、531、541のための第1の誤り訂正に用いる冗長ビットを記憶する領域である。そして、誤りの数が多い誤り訂正単位540内の領域541Aのための第2の誤り訂正に用いる冗長ビットは、第2の冗長領域533及び543に分散して記憶されている。また、領域541Bのための第2の誤り訂正に用いる冗長ビットは、第2の冗長領域513及び523に分散して記憶されている。一例として、上記第1の誤り訂正は、BCH31,1024であり、上記第2の誤り訂正は、BCH50,512である。BCH50,512は、BCH31,1024の約3.2倍の訂正能力を持っている。図11は、4種類の誤り訂正法、すなわち、BCH60,1024とBCH41,512とBCH29,256とBCH50,512の訂正能力を比較したグラフである。横軸は元のユーザデータの誤りの割合を示しており、縦軸は、誤り訂正を行ってもなお訂正できなかった誤りビットの割合を示している。4つの曲線は、それぞれ、BCH60,1024、BCH41,512、BCH29,256、BCH50,512を示している。この図からわかるように、4つの方法のいずれも、ユーザデータの誤りの割合が大きくなるにつれて、訂正できなかった誤りの割合も大きくなる。現在、一般的には、許容される誤りの割合として10-13程度が基準となっている。図からわかるように、この基準に照らして、回路規模が小さなBCH29,256は回路規模の大きなBCH60、1024よりも性能が良い。また、BCH50,512は、BCH60,1024よりも回路規模が小さいにも関わらず、優れた性能を持っている。図12は、図4~図6、図9あるいは図10に示したような、分散させて記憶した冗長ビットを用いて、2組の誤り訂正を適用する場合の誤り訂正のフローチャートである。図13は、図12に示しているフローチャートを実行する誤り訂正復号部8のブロック図である。図13に示しているように、誤り訂正復号部8は、第1の誤り訂正実行手段84と、訂正後状態判断手段86と、第2の誤り訂正実行手段88とを備えている。まず、ステップS11にて、第1の誤り訂正実行手段84が第1の誤り訂正を用いて誤り訂正を行う。そして、ステップS12にて、訂正後状態判断手段86が訂正できたかどうかの判断を行う。具体的には、復号器の訂正不能の信号により判断する。この場合の訂正できたという状態は、一例として、41ビット誤り訂正BCHであれば、BCH単位例えば512KBにおける誤りの数が41ビット以下となった状態とする。そして、ステップS12の結果がYesであった場合には、ステップS14にて終了する。あるいは、ステップS12の結果がNoであった場合には、ステップS13に進み、第2の誤り訂正実行手段88が、より高い訂正能力を持つ第2の誤り訂正を用いて誤り訂正を行う。そして、ステップS14にて終了する。図12に示したフローにより、図4~図6、図7あるいは図8に示したデータ構造に基づいて、各誤り訂正単位につき2組の誤り訂正符号を適用して誤り訂正を行うことができる。そのため、誤りが多いページであっても少ないページであっても、誤りを効率的に訂正することができる。しかし、第1の誤り訂正で訂正しきれなかった場合には、第2の誤り訂正を実行するため、1つのページに対して2種類の誤り訂正を行うことに起因してスループットが低下してしまうという欠点もある。上述の欠点を回避する、2組の誤り訂正を適用して誤り訂正を行うフローチャートを図14に示している。図12と同様のステップには、同様の符号を付している。そして、図15は、図14に示しているフローチャートを実行する誤り訂正復号部8のブロック図である。図13と同様の要素には、同じ符号を付している。図13と異なるのは、誤り訂正復号部8が事前判定手段81を備えている点である。この事前判定手段81は、誤り検出手段82と、訂正方法判断手段83とを備えている。まず、ステップS1にて誤り検出手段82が誤りを検出する。その詳細は後述する。そして、誤り検出手段82により検出された誤りが第1の誤り訂正により訂正可能かどうかをステップS2で訂正方法判断手段83が判断する。ここでの第1の誤り訂正ECC1は、誤り訂正能力が比較的低いBCHにすることが望ましく、例えばBCH20,1024とすることが望ましい。そして、ステップS2の判断結果がYesであった場合には、ステップS11に進む。また、ステップS2の判断結果がNoであった場合には、ステップS13に進む。図14のフローによれば、ステップS1にて誤り検出手段82が誤りを検出し、検出された誤りを第1の誤り訂正により訂正可能であるとステップS2にて訂正方法判断手段83が判断した場合のみ、第1の誤り訂正実行手段84が第1の誤り訂正を実行する。さもなければ、第2の誤り訂正実行手段88が訂正能力の高い第2の誤り訂正を実行する。つまり、誤り訂正を行う前に、事前判定手段81がステップS1及びS2からなる事前判定を行うため、各ページにつき誤り訂正は1回しか行われないこととなり、スループットの低下という上述の問題を回避することができる。図14に示したステップS1の誤り検出の具体的な流れについて図16を参照して説明する。符号610は、元のユーザデータのビット列の一部である。このビット列610のビット数が12ビットであるとし、うち5ビットがビット値1であり、残りの7ビットがビット値0であるとする。このようなビット列610に対して、バランス化処理を適用する。バランス化処理とは、値が1のビットの数と、値が0のビットの数とを等しくなるように変換することであり、その結果得られる符号をバランス化符号BalancedCode。詳細は、非特許文献DonaldEKnuthEfficientBalancedCodesIEEETransactionsonInformationTheoryIEEEJanuary1986VolIT32No1pp5153に記載されている。具体的には、ビット列610について、パラメータKを決定した上で、最初のKビットを反転させる。ここではK=5として、ビット列610の最初の5ビット01100を反転させて10011とすることにより、ビット列621を得る。ビット列621においては、ビット値1、0の数はいずれも6である。このビット列621をバランス化符号と呼ぶ。また、ビット列621の後方には、4ビットのパリティビット622が設けられている。パリティビット622のビット値は、上記パラメータK=5を二進数により表現した0101であり、これ自体も0と1の数が同じバランス化符号である。このようなパリティビットを設けることにより、最初の何ビット分のビット値が反転されたかがわかる。バランス化符号であるビット列621と、同じくバランス化符号であるパリティビット622とからなるビット列620もバランス化符号となっている。このビット列620においては、ビット値1、0の数はいずれも8である。なお、どのようなビット列についても上記パラメータKが必ず存在することが証明されており、その詳細は上記文献を参照されたい。図16に示した例では、パラメータKを二進数により表現したパリティビット622がそれ自体バランス化符号であった。しかし、パラメータKの値によっては、パラメータKを二進数により表現したビット列がバランス化符号ではない場合もある。例えば、パラメータK=7である場合に、パラメータKを二進数で表現すると0111となる。このビット列0111はバランス化符号ではないため、このビット列をそのままパリティビット622とすることはできない。そこで、ビット列0111を、バランス化符号である1010へと符号化するようなルールを定めておき、このルールをルックアップテーブルとして保存しておくことができる。このようにすることで、パラメータKがどんな値であっても、パラメータKからパリティビットのバランス化符号を導き出すことができる。このルックアップテーブルによる方法は一例であり、パラメータKの二進表現がバランス化符号になればいいのであって、これに限定されるものではない。ビット列621と622からなるビット列620をあるページに書き込んで、それを読み出した結果をビット列630として示している。このビット列630は、ビット列631と632とからなる。ビット列630においては、値1のビットの数は6ビットであり、値0のビットの数は10ビットである。つまり、ビット列620及び630について値1の数を比較すると、8ビットから6ビットに減少しているため、2つのビットについてプラス誤りが生じたことがわかる。元のユーザデータのビット列の全てに対して、このようなバランス化符号に変換したうえでページへの書き込みを行うことにより、ステップS1に示したような誤り検出を容易に行うことができる。なお、ステップS1における誤りの検出には、バランス化符号を用いるもののほか、従来から知られている検出方法を用いることができる。具体的には、ユーザデータの読み込みの際に、ソフト情報信頼度情報を用いて、その信頼度の低いビットの数によって誤りを検出する方法などがある。なお、ビット列620をページへ書き込む際に、マイナス誤りとプラス誤りが同じ数だけ発生した場合には、書き込み前後でビット値1のビット数が変化しないため、誤りを検出することができない。これは、ビット列620及び630における値1のビットの数を単純に比較することにより、誤りを検出しているからである。しかし、図2を参照して上述したように、マイナス誤りとプラス誤りが同数発生することは実際にはほぼないため、バランス化符号を用いて容易に誤り検出を行うことができる。図17は、事前判定手段81がステップS1及びS2からなる事前判定を行った場合と行わなかった場合のスループットの違いを示したグラフである。第1の誤り訂正としてBCH20,1024を使用し、第2の誤り訂正としてBCH41,512を使用した。横軸は、ユーザデータ領域に書き込まれているユーザデータの誤りの割合を示しており、縦軸はスループットを示している。事前判定を行わなかった場合と、事前判定を行った場合とをそれぞれ示している。この図からわかるように、ユーザデータの誤りビットの割合が大きくなるにつれて、事前判定を行わなかった場合のスループットは著しく低下するのに対し、事前判定を行った場合にはスループットが高いまま安定しており、事実、0.99を下回ることはなかった。図18は、比較的に誤りの少ないページ内の誤り訂正単位610と比較的に誤りの多いページ内の誤り訂正単位620があったとき、どのような手順で、本願発明の方法を適用することが出来るかを示すもう一つの変形例である。これまでと同様、ユーザデータ領域611と621はそれぞれ1kBであるとする。比較的に誤りの少ないページ内の領域であれば、BCH20,1024により訂正可能であるとする。比較的に誤りの多いページ内の領域620であるとユーザデータ領域621をBCH20,1024で訂正できない可能性がある。そこで、ユーザデータ領域621内に254バイトの特定領域621Aを設けて、そのための冗長データを比較的に誤りの少ないページ内の領域613に保存する。特定領域621Aは、ユーザデータ領域620の左端又は右端にあってもよいし、図示したように、ユーザデータの中の任意の位置においてもよい。また、この特定領域621Aはユーザデータ領域620内において複数の領域に分割しておくことも出来る。この特定領域621Aの大きさも任意であるが、この特定領域621A内のデータの訂正が成功し、それがユーザデータ領域621全体の訂正の成功に貢献する程度の大きさが求められる。まず、ステップS21で開始すると、第1の誤り訂正法によりユーザデータ領域621の訂正を行うステップS22。ステップS23において、もし訂正が可能であったと判断されれば、訂正が可能であったことを表す信号と復号されたユーザデータを出力してステップS24、終了するステップS29。ステップS23において、もし訂正が出来なかったと判断されれば、第2の誤り訂正法により特定領域621Aのデータを訂正するステップS25。このとき、例えば、BCH20,256を用いる。ステップS26において特定領域621Aが訂正できたと判断されれば、ユーザデータ領域621のうち特定領域621Aのデータを復号された訂正済みデータで置換するステップS27。そして、ステップS22の訂正をこの一部置換されたユーザデータ621の出力に対して行う。改めてステップS23において訂正が可能であったかどうかを判断して、訂正可能と判断されれば、ステップS24において訂正可能信号と復号されたデータを出力するステップS24。ステップS23において訂正が出来なかったと判断されると、ステップS25において、特定領域621Aに対して再度第2の誤り訂正法による訂正を行ったこの訂正は可能であることは既に分かっている上で、ステップS26において、第1回目の第2の訂正法による訂正ではないかをチェックする。第1回目の試行でないと判断されれば、ステップS28において訂正不能を表す信号を出力して、終了するステップS29。なお、図18では、特定領域621Aは一つのユーザデータ621内に設けられていたが、それを複数に分割して、2以上のユーザデータ領域に配置することも可能である。この場合には、分割された特定領域を再結合して、その再結合された特定領域に対して第2の訂正法を適用することとなる。これまでに述べた実施の形態では、誤り訂正を行うにあたってBCH符号を用いている。しかし、BCH符号に限らず、リードソロモン符号、低密度パリティ検査符号といった誤り訂正符号を用いることもできる。また、訂正可能なビット数の値も上記の例に限るものでは一切ない。これまでに述べた実施の形態に関して、1つの誤り訂正単位にある誤りの多寡の基準としては、その誤り訂正単位における誤りの割合や、誤りの数を用いることができる。仮に、誤りの数を基準とする場合には、その誤り訂正単位が属しているブロック内のすべての誤り訂正単位ごとの誤りの数の平均値あるいはその平均値に一定の数を足したものを基準としたり、あるいは、そのブロックにおけるページあるいは誤り訂正単位ごとの誤りの数の最大値と最小値との平均値を基準とすることができる。あるいは、第1組の冗長ビットを用いて訂正できる誤りの数を基準として誤りが多いか少ないかを区別して、第2組の冗長ビットを使用するかを判断することができる。このとき、NANDメモリの経時的な誤り特性の劣化に対応して若干の余裕をみて基準を設定することができる。また、不揮発性メモリの設計段階で適当な値をしきい値として設定して、これを基準に誤りが多い場合と誤りが少ない場合とを区別することも可能である。"