(57)【特許請求の範囲】
【請求項１】
アドレス単位にユーザデータ及び初期シンドロームを格納した半導体メモリに対する読み出し時にエラー訂正を行うエラー訂正装置であって、
訂正用シンドロームを用いて、前記訂正用シンドロームを含む訂正対象データ内のビットエラーを訂正して訂正後データを得るビットエラー訂正処理を実行する訂正回路を備え、前記訂正回路は前記訂正対象データのビットエラー数が訂正可能ビット数以内の場合に訂正可能であり、
第２のシンドロームをアドレスに対応づけて格納する一時記憶部と、
前記半導体メモリからアドレス単位に得られる、前記ユーザデータ及び前記初期シンドロームを含む読み出しデータを取り込み、前記訂正回路による前記ビットエラー訂正処理を含むデータ訂正読み出し処理を実行制御して、訂正後読み出しデータを得る制御部とをさらに備え、
前記データ訂正読み出し処理は、
(a) 通常状態時、前記読み出しデータを前記訂正対象データとし、前記初期シンドロームを前記訂正用シンドロームとして、前記訂正回路に前記ビットエラー訂正処理を実行させ、前記訂正後データに含まれるデータを前記訂正後読み出しデータとするステップと、
(b) 前記読み出しデータのビットエラー数が、前記訂正可能ビット数以下の値で予め設定された警戒基準ビット数以上に達した要警戒状態時に、前記読み出しデータをシンドローム生成対象データとし、前記訂正回路によって前記シンドローム生成対象データ用の前記第２のシンドロームを生成させ、前記第２のシンドロームを前記読み出しデータの読み出し時におけるアドレスに対応づけて前記一時記憶部に保存するステップと、
(c) 前記読み出しデータのビットエラー数が、前記訂正可能ビット数を超える異常状態の有無を判定するステップと、
(d) 前記ステップ(c) で前記読み出しデータの前記異常状態が判定された時に、２段階訂正処理を実行するステップとを含み、
前記ステップ(d) は、
(d-1) 前記読み出しデータと前記一時記憶部に保存された前記第２のシンドロームとを前記訂正対象データとし、前記第２のシンドロームを前記訂正用シンドロームとして、前記訂正回路に前記ビットエラー訂正処理を実行させ、前記訂正後データにおけるユーザデータ部分を訂正ユーザデータとし、初期シンドローム部分を訂正初期シンドロームとするステップと、
(d-2) 前記訂正ユーザデータ及び訂正初期シンドロームを前記訂正対象データとし、前記訂正初期シンドロームを前記訂正用シンドロームとして、前記訂正回路に前記ビットエラー訂正処理を実行させ、前記訂正後データに含まれるデータを前記訂正後読み出しデータとするステップとを含む、
エラー訂正装置。
【請求項２】
請求項１記載のエラー訂正装置であって、
前記読み出しデータが、前記訂正可能ビット数を超えるビットエラーである大量ビットエラーを発生しているか否かの判定基準となる大量ビットエラー判定情報を出力するビットエラー検出回路をさらに備え、
前記制御部は、前記ステップ(c) において、前記大量ビットエラー判定情報に基づき、前記読み出しデータの前記異常状態の有無を判定する、
エラー訂正装置。
【請求項３】
請求項２記載のエラー訂正装置であって、
前記訂正回路は、前記ビットエラー訂正処理の実行時に前記訂正対象データにおいて発生したエラービット数を指示するエラービット情報を、前記大量ビットエラー判定情報としてさらに出力し、前記エラービット情報は前記大量ビットエラーとなるエラービット数の少なくとも一部を指示し、
前記ビットエラー検出回路は前記訂正回路を含み、
前記制御部は、前記ステップ(c) で、前記エラービット情報に基づき、前記読み出しデータの前記異常状態を判定すると、以後、当該読み出しデータにおける判定を前記異常状態で固定する、
エラー訂正装置。
【請求項４】
請求項２記載のエラー訂正装置であって、
前記半導体メモリは、アドレス単位に前記ユーザデータ及び前記初期シンドロームに加え、誤り検出符号をさらに格納し、前記誤り検出符号は前記ユーザデータに対し符号生成演算処理を行って得られた符号であり、前記読み出しデータは前記誤り検出符号を含み、
前記制御部は、前記ステップ(d-1) の実行時における前記訂正後データにおける誤り訂正検出部分を訂正誤り検出符号とし、前記ステップ(d-2) の実行時における前記訂正対象データに前記訂正誤り検出符号を含め、
前記ビットエラー検出回路は、演算対象データに対し前記符号生成演算処理を行って比較用誤り検出符号を生成する訂正可否演算部を含み、
前記ステップ(c) は、
(c-1) 前記読み出しデータを前記訂正対象データとし、前記初期シンドロームを前記訂正用シンドロームとして、前記訂正回路に前記ビットエラー訂正処理を実行させて、前記訂正後データを得るステップと、
(c-2) 前記ステップ(c-1)で得た前記訂正後データにおける前記ユーザデータ部分を前記演算対象データとして、前記訂正可否演算部に前記符号生成演算処理を実行させて、前記比較用誤り検出符号を前記大量ビットエラー判定情報として得るステップと、
(c-3) 前記ステップ(c-1)で得た前記訂正後データにおける前記誤り検出符号と、前記ステップ(c-2)で得た前記比較用誤り検出符号との比較結果に基づき、前記読み出しデータの前記異常状態の有無を判定するステップとを含む、
エラー訂正装置。
【請求項５】
請求項１記載のエラー訂正装置であって、
前記ステップ(c) は、
前記一時記憶部への対応するアドレス情報の登録の有無に基づき、前記読み出しデータの前記異常状態の有無を判定する、
エラー訂正装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＮＡＮＤ型セル等の劣化によりビットエラーが発生するセルより構成される半導体メモリに対する読み出し時におけるエラー訂正を行うエラー訂正装置に関する。
【背景技術】
【０００２】
メモリコントローラと半導体メモリであるＮＡＮＤメモリ（ＮＡＮＤ型セルを有する不揮発性メモリ）とに構成されるメモリシステムにおいて、ＮＡＮＤメモリの特性上、リードディスターブ（Read Disturb）によるビットエラー(bit error)が発生する。
【０００３】
さらに、ＮＡＮＤメモリを継続的に使用することによりメモリセルにダメージが蓄積され、ダメージを受けたメモリセルは保持（Retention）特性が劣化したり、健常なメモリセルに比べてビットエラーが多く発生したりする。
【０００４】
通常、一定量のビットエラーであればエラー訂正機能で訂正可能であるが、エラー訂正能力以上のビットエラーが発生してしまうと正常なデータ読み出しが不可能になる。
【０００５】
ＮＡＮＤメモリに増大するビットエラーに対して一般的に以下の対策が採られる。
【０００６】
(1) 異なるエラー訂正能力を有する複数の（エラー）訂正回路を搭載し、ビットエラーの発生状況に応じて、複数の訂正回路のうち一の訂正回路を選択してエラー訂正を行う。
【０００７】
(2) リフレッシュ（正常なデータの書き直し）によって保持データを正常な状態に戻す。
【０００８】
上記(1)の例として、例えば、特許文献１において、異なるエラー訂正能力をもつ複数の訂正回路を搭載し、複数の訂正回路のうち、使用する訂正回路をビットエラーの発生状況に応じて動的に変化させ、エラー訂正能力を超えるビットエラーが発生しないようにする技術が開示されている。
【０００９】
また、訂正回路の選択を動的に可変にするのではなく、異なるエラー訂正能力もしくは符号長(訂正するデータの単位)が異なる複数の訂正回路を組み合わせることにより、単体の訂正回路のエラー訂正能力を超えるようなビットエラーが発生しても、相互補完的に訂正できる技術が、例えば、特許文献２に開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１３−１５２６０４号公報
【特許文献２】特開２０１１−５０７０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、エラー訂正能力を高めるため、特許文献１及び特許文献２に開示された技術は、いずれにおいても複数の訂正回路が必要になる分、回路規模が増大するという問題点があった。
【００１２】
この発明は上記問題点を解決するためになされたもので、回路規模を増大させることなく、エラー訂正能力を高めたエラー訂正装置を得ることを目的とする。
【課題を解決するための手段】
【００１３】
この発明に係る請求項１記載のエラー訂正装置は、アドレス単位にユーザデータ及び初期シンドロームを格納した半導体メモリに対する読み出し時にエラー訂正を行うエラー訂正装置であって、訂正用シンドロームを用いて、前記訂正用シンドロームを含む訂正対象データ内のビットエラーを訂正して訂正後データを得るビットエラー訂正処理を実行する訂正回路を備え、前記訂正回路は前記訂正対象データのビットエラー数が訂正可能ビット数以内の場合に訂正可能であり、第２のシンドロームをアドレスに対応づけて格納する一時記憶部と、前記半導体メモリからアドレス単位に得られる、前記ユーザデータ及び前記初期シンドロームを含む読み出しデータを取り込み、前記訂正回路による前記ビットエラー訂正処理を含むデータ訂正読み出し処理を実行制御して、訂正後読み出しデータを得る制御部とをさらに備え、前記データ訂正読み出し処理は、(a) 通常状態時、前記読み出しデータを前記訂正対象データとし、前記初期シンドロームを前記訂正用シンドロームとして、前記訂正回路に前記ビットエラー訂正処理を実行させ、前記訂正後データに含まれるデータを前記訂正後読み出しデータとするステップと、(b) 前記読み出しデータのビットエラー数が、前記訂正可能ビット数以下の値で予め設定された警戒基準ビット数以上に達した要警戒状態時に、前記読み出しデータをシンドローム生成対象データとし、前記訂正回路によって前記シンドローム生成対象データ用の前記第２のシンドロームを生成させ、前記第２のシンドロームを前記読み出しデータの読み出し時におけるアドレスに対応づけて前記一時記憶部に保存するステップと、(c) 前記読み出しデータのビットエラー数が、前記訂正可能ビット数を超える異常状態の有無を判定するステップと、(d) 前記ステップ(c) で前記読み出しデータの前記異常状態が判定された時に、２段階訂正処理を実行するステップとを含み、前記ステップ(d) は、(d-1) 前記読み出しデータと前記一時記憶部に保存された前記第２のシンドロームとを前記訂正対象データとし、前記第２のシンドロームを前記訂正用シンドロームとして、前記訂正回路に前記ビットエラー訂正処理を実行させ、前記訂正後データにおけるユーザデータ部分を訂正ユーザデータとし、初期シンドローム部分を訂正初期シンドロームとするステップと、(d-2) 前記訂正ユーザデータ及び訂正初期シンドロームを前記訂正対象データとし、前記訂正初期シンドロームを前記訂正用シンドロームとして、前記訂正回路に前記ビットエラー訂正処理を実行させ、前記訂正後データに含まれるデータを前記訂正後読み出しデータとするステップとを含む。
【発明の効果】
【００１４】
この発明における請求項１記載の本願発明のエラー訂正装置は、ステップ(c) で読み出しデータの異常状態を判定すると、ステップ(d) のステップ(d-1)及び(d-2)による２段階訂正処理を実行している。
【００１５】
このため、請求項１記載の本願発明のエラー訂正装置は、訂正回路の訂正可能ビット数を超える大量ビットエラーを有する読み出しデータが半導体メモリに格納されている場合においても、訂正後読み出しデータとしてビットエラー訂正された正常な読み出しデータを得ることができる。
【００１６】
その結果、請求項１記載の本願発明は、内蔵する訂正回路のエラー訂正能力を上回る、ビットエラー訂正能力を有するエラー訂正装置を、単一の訂正回路からなる比較的簡単な構成で得ることができる。
【図面の簡単な説明】
【００１７】
【図１】この発明の実施の形態１であるメモリシステムの構成を示すブロック図である。
【図２】実施の形態１のエラー訂正装置のデータ訂正読み出し処理の流れを示す説明図である。
【図３】実施の形態１のデータ訂正読み出し処理実行時における読み出しデータ及び訂正後データの内容を示す説明図である。
【図４】実施の形態１における訂正対象データ及び訂正用シンドロームの内容を示す説明図である。
【図５】この発明の実施の形態２であるメモリシステムの構成を示すブロック図である。
【図６】実施の形態２のエラー訂正装置のデータ訂正読み出し処理の流れを示す説明図である。
【図７】実施の形態２のデータ訂正読み出し処理実行時における読み出しデータ及び訂正後データの内容を示す説明図である。
【図８】実施の形態２における訂正対象データ及び訂正用シンドロームの内容を示す説明図である。
【図９】この発明の実施の形態３であるメモリシステムの構成を示すブロック図である。
【図１０】実施の形態３のエラー訂正装置のデータ訂正読み出し処理の流れを示す説明図である。
【図１１】実施の形態３のデータ訂正読み出し処理実行時における読み出しデータ及び訂正後データの内容を示す説明図である。
【図１２】実施の形態３における訂正対象データ及び訂正用シンドロームの内容を示す説明図である。
【図１３】ＮＡＮＤメモリにおける読み出し回数に伴うビットエラー数を示すグラフ（その１）である。
【図１４】ＮＡＮＤメモリにおける読み出し回数に伴うビットエラー数を示すグラフ（その２）である。
【図１５】ＮＡＮＤメモリにおける読み出し回数に伴うビットエラー数を示すグラフ（その３）である。
【発明を実施するための形態】
【００１８】
＜実施の形態１＞
（全体構成）
図１はこの発明の実施の形態１であるメモリシステム５１の構成を示すブロック図である。同図に示すように、実施の形態１のメモリシステム５１は、ホスト６、メモリコントローラ１及びＮＡＮＤメモリ７により構成される。
【００１９】
ホスト６は、メモリコントローラ１を経由して制御対象の不揮発メモリであるＮＡＮＤメモリ７に対してデータ書き込み、あるいはデータ読み出しを行う。
【００２０】
ＮＡＮＤメモリ７は、継続使用による劣化でデータ保持特性が悪くなるＮＡＮＤセル構造のメモリセルにより構成される半導体メモリである。
【００２１】
ＮＡＮＤメモリ７は管理領域７１に後述する訂正管理用データＤ５１を格納し、ユーザデータ領域７２にアドレス単位にユーザデータＤ１と初期シンドロームＳ１との組み合わせを格納している。なお、初期シンドロームＳ１はユーザデータＤ１のＮＡＮＤメモリ７への書き込み時に併せて設定されるエラー訂正用の符号である。
【００２２】
メモリコントローラ１は、エラー訂正装置４１を内蔵し、ホスト６の書き込み及び読み出し等の要求に応じて、ＮＡＮＤメモリ７に対して消去動作、書き込み動作及び読み出し動作を行う。
【００２３】
メモリコントローラ１はホストＩ／Ｆ１１、ＮＡＮＤ制御部１５及びエラー訂正装置４１を有している。エラー訂正装置４１は内部にコントローラ制御部１２Ａ、ＳＲＡＭ１３及び（エラー）訂正回路１４Ａを有しており、ＮＡＮＤメモリ７に対するアクセス時におけるエラー訂正を行う。
【００２４】
ホストＩ／Ｆ１１はホスト６とメモリコントローラ１との間のインタフェースであり、ＮＡＮＤ制御部１５はメモリコントローラ１とＮＡＮＤメモリ７との間のデータの授受等を制御し、メモリコントローラ１とＮＡＮＤメモリ７とのインタフェース的な働きを有する。
【００２５】
ＳＲＡＭ１３は後述する第２のシンドロームをアドレスに対応づけて訂正管理用データＤ５１として格納し、エラー訂正装置４１内における一時記憶部として機能する。
【００２６】
訂正回路１４Ａは、訂正用シンドロームＣＳを用いて、訂正用シンドロームＣＳ自体を含む訂正対象データＣＴ内のビットエラーを訂正して訂正後データＣＤを得るビットエラー訂正処理を実行する。
【００２７】
訂正回路１４Ａは訂正対象データＣＴに発生したビットエラー数が、訂正可能ビット数である２４ビット以内の場合に訂正可能なビットエラー訂正能力を有するとともに、２８ビット以下のエラービット数を指示するエラービット情報ＥＢを出力するビットエラー検出能力を有している。このように、訂正回路１４Ａはビットエラー訂正能力（２４ビット）を超えるビットエラー検出能力（２８ビット）を有している。
【００２８】
コントローラ制御部１２Ａ（制御部）はＮＡＮＤメモリ７に対する消去動作、書き込み動作及び読み出し動作を制御する消去機能、書き込み機能及び読み出し機能を有している。そして、コントローラ制御部１２Ａは、上述したＳＲＡＭ１３及び訂正回路１４Ａを用いて、訂正回路１４Ａのビットエラー訂正能力（２４ビット）を超えるビットエラー訂正が可能なデータ訂正読み出し処理を実行制御することを特徴している。
【００２９】
（動作）
図２は実施の形態１のエラー訂正装置４１のデータ訂正読み出し処理の流れを示す説明図である。図３はエラー訂正装置４１によるデータ訂正読み出し処理実行時における読み出しデータ及び訂正後データの内容を示す説明図である。図４は訂正対象データ及び訂正用シンドロームの内容を示す説明図である。以下、図２〜図４を参照して、実施の形態１のエラー訂正装置４１によるデータ訂正読み出し処理の内容を説明する。
【００３０】
なお、説明の都合上、以下のように、読み出しデータＤＴ、ユーザデータＤ１、訂正対象データＣＴ、訂正後データＣＤ及びエラービット情報ＥＢを識別して標記する場合がある。
【００３１】
読み出しデータＤＴ（ＤＴ０〜ＤＴ２）において、ビットエラーが無いデータを「読み出しデータＤＴ０」、訂正回路１４Ａの訂正可能ビット数である２４ビット以下のビットエラーを有するデータを「読み出しデータＤＴ１」、２５ビット以上の大量ビットエラーを有するデータを「読み出しデータＤＴ２」と標記する。なお、読み出しデータＤＴには少なくともユーザデータＤ１及び初期シンドロームＳ１が含まれている。
【００３２】
また、コントローラ制御部１２Ａから訂正回路１４Ａに出力する訂正対象データＣＴ（ＣＴ１，ＣＴ２）において、初期シンドロームＳ１を訂正用シンドロームＣＳとする場合のデータを「訂正対象データＣＴ１」、第２シンドロームＳ２を訂正用シンドロームＣＳとする場合のデータを「訂正対象データＣＴ２」として標記する。
【００３３】
さらに、訂正回路１４Ａのビットエラー訂正処理によって得られた訂正後データＣＤ（ＣＤ１，ＣＤ２）において、初期シンドロームＳ１を用いて得られたデータを「訂正後データＣＤ１」、第２シンドロームＳ２を用いて得られたデータを「訂正後データＣＤ２」と標記する。
【００３４】
また、エラービット情報ＥＢ（ＥＢ０〜ＥＢ２）において、ビットエラー“０”を指示する情報を「エラービット情報ＥＢ０」、訂正可能ビット数である２４ビット以下のビットエラー数を指示する情報を「エラービット情報ＥＢ１」、２５ビット以上の大量ビットエラーを指示する情報を「エラービット情報ＥＢ２」と標記する。
【００３５】
（１．読み出しデータにビットエラーが無い場合（通常状態））
まず、ユーザデータＤ１及び初期シンドロームＳ１を含む読み出しデータＤＴがビットエラーの無い読み出しデータＤＴ０である場合について説明する。図２の読み出し区間ＰＤ０が読み出しデータＤＴ０に対するデータ訂正読み出し処理を示している。
【００３６】
まず、ステップＳＴ１で、コントローラ制御部１２Ａは、ＮＡＮＤメモリ７のユーザデータ領域７２から、ＮＡＮＤ制御部１５を介して読み出しデータＤＴを読み出す。図３(a) に示すように、読み出しデータＤＴは読み出しデータＤＴ０であるため、読み出しデータＤＴ０に含まれるユーザデータＤ１及びユーザデータＤ１に対応する初期シンドロームＳ１のいずれにもビットエラーは存在していない。
【００３７】
次に、ステップＳＴ２で、コントローラ制御部１２Ａは、読み出しデータＤＴ０及びダミーデータＭＤの組み合わせを訂正対象データＣＴ１とし、初期シンドロームＳ１を訂正用シンドロームＣＳとして訂正回路１４Ａに出力する。その結果、図４(a) に示すように、訂正回路１４Ａのビットエラー訂正処理実行前の設定状態において、訂正対象データＣＴ１として、ユーザデータＤ１とダミーデータＭＤと初期シンドロームＳ１とが格納され、この際、訂正用シンドロームＣＳとして初期シンドロームＳ１が設定される。なお、ダミーデータＭＤは初期シンドロームＳ１と同一ビット数で、すべてが“０”に設定されている。また、ステップＳＴ２の処理は一部、ステップＳＴ１の処理と並列的に実行することができる。すなわち、コントローラ制御部１２Ａは、ステップＳＴ１において読み出しデータＤＴ０のデータをコントローラ制御部１２Ａにて受信次第、受信完了を待つことなく直ちにステップＳＴ２の処理を実行しても良い。
【００３８】
その後、ステップＳＴ３において、訂正回路１４Ａは、初期シンドロームＳ１を用いてビットエラー訂正処理を実行して得られる訂正後データＣＤ１をコントローラ制御部１２Ａに出力する。読み出しデータＤＴ０にはビットエラーが元々存在しないため、訂正後データＣＤ１内には読み出しデータＤＴ０と“０”を指示するエラービット情報ＥＢ０とが含まれることになる。なお、訂正後データＣＤ１内には訂正後のダミーデータＭＤも存在するが、図示を省略している。
【００３９】
（２．読み出しデータにビットエラーが発生し、そのビット数が訂正可能ビット（２４ビット）以下の場合（通常状態））
（２−１．ビットエラー数が警戒基準ビット数（１６ビット）未満の場合）
次に、読み出しデータＤＴにビットエラーが発生し、そのビット数が２４ビット以下の読み出しデータＤＴ１である場合について説明する。図２の読み出し区間ＰＤ１が読み出しデータＤＴ１に対するデータ訂正読み出し処理を示している。
【００４０】
まず、ステップＳＴ１１で、コントローラ制御部１２Ａは、ＮＡＮＤメモリ７から、読み出しデータＤＴを読み出す。読み出しデータＤＴは、ビットエラーが存在する読み出しデータＤＴ１であるため、読み出しデータＤＴ１に含まれるユーザデータＤ１及び初期シンドロームＳ１のうち少なくとも一方にビットエラーが存在している。
【００４１】
次に、ステップＳＴ１２で、コントローラ制御部１２Ａは、読み出しデータＤＴ１及びダミーデータＭＤの組み合わせを訂正対象データＣＴ１とし、初期シンドロームＳ１を訂正用シンドロームＣＳとして訂正回路１４Ａに出力する。また、ステップＳＴ１２の処理は一部、ステップＳＴ１１の処理と並列的に実行することができる。
【００４２】
ステップＳＴ１３において、訂正回路１４Ａは、初期シンドロームＳ１を用いてビットエラー訂正処理を行って得られる訂正後データＣＤ１をコントローラ制御部１２Ａに出力する。読み出しデータＤＴ１にはビットエラーが存在しているため、訂正後データＣＤ１内にはビットエラーが存在しない訂正後の読み出しデータＤＴ０と訂正前の読み出しデータＤＴ１内のビットエラー数を指示するエラービット情報ＥＢ１とが含まれることになる。
【００４３】
ステップＳＴ１３で得たエラービット情報ＥＢ１が警戒基準ビット数である“１６”を下回る１５以下を指示する場合は、上述したステップＳＴ１３で処理を終了する。一方、エラービット情報ＥＢ１が１６以上（２４以下）を指示する場合は、要警戒状態となり、さらに、次の項目（２−２．）で述べるステップＳＴ１４〜ＳＴ１６が続行される。なお、警戒基準ビット数は訂正可能ビット数以下の条件を満足して予め設定された値である。
【００４４】
なお、上述した項目（１．）及び（２−１．）の処理は後述する異常状態とならないため、通常状態の処理として実行される。
【００４５】
（２−２．ビットエラー数が警戒基準ビット数（１６ビット）以上の要警戒状態時の場合）
ステップＳＴ１４において、コントローラ制御部１２Ａは、図３(b) に示すように、読み出しデータＤＴ１（ユーザデータＤ１＋初期シンドロームＳ１）をシンドローム生成対象データＣＴＳとして訂正回路１４Ａに出力する。
【００４６】
ステップＳＴ１５において、訂正回路１４Ａはシンドローム生成対象データＣＴＳに対応する第２シンドロームＳ２を生成し、この第２シンドロームＳ２をコントローラ制御部１２Ａに出力する。
【００４７】
そして、ステップＳＴ１６において、コントローラ制御部１２Ａは、第２シンドロームＳ２と、読み出しデータＤＴ１の読み出し時におけるのアドレスを指示するアドレス情報ＡＤとを組にした訂正管理用データＤ５１を、ＳＲＡＭ１３のＳＲＡＭ内管理領域Ｒ１３に格納する。すなわち、図３の右側に示すように、ＳＲＡＭ内管理領域Ｒ１３には第２シンドロームＳ２とアドレス情報ＡＤと後述するフラグ情報ＦＧの組み合わせよりなる訂正管理用データＤ５１が格納される。なお、フラグ情報ＦＧの初期値は“０”である。
【００４８】
（３．読み出しデータにビットエラーが発生し、そのビット数が訂正可能ビット数（２４ビット）を超えた異常状態の場合）
（３−１．異常状態の有無の判定）
次に、読み出しデータＤＴにビットエラーが発生し、そのビット数が２４ビットを超える大量ビットエラーを有する読み出しデータＤＴ２である場合について説明する。図２の読み出し区間ＰＤ２が読み出しデータＤＴ２に対するデータ訂正読み出し処理を示している。
【００４９】
まず、ステップＳＴ２１で、コントローラ制御部１２Ａは、ＮＡＮＤメモリ７から、読み出しデータＤＴを読み出す。読み出しデータＤＴは、図３(c) に示すように、大量ビットエラーが存在する読み出しデータＤＴ２であるため、読み出しデータＤＴ２に含まれるユーザデータＤ１及び初期シンドロームＳ１に存在するビットエラー合計数が２５ビット以上ある。
【００５０】
次に、ステップＳＴ２２で、コントローラ制御部１２Ａは、読み出しデータＤＴ２及びダミーデータＭＤの組み合わせを訂正対象データＣＴ１とし、初期シンドロームＳ１を訂正用シンドロームＣＳとして訂正回路１４Ａに出力する。なお、ステップＳＴ２２の処理は一部、ステップＳＴ２１の処理と並列的に実行することができる。
【００５１】
ステップＳＴ２３において、訂正回路１４Ａは、初期シンドロームＳ１を用いてビットエラー訂正処理を実行して得られる訂正後データＣＤ１をコントローラ制御部１２Ａに出力する。
【００５２】
この際、読み出しデータＤＴ２には２５ビット以上の大量ビットエラーが発生しているため、訂正回路１４Ａはエラー訂正することができず、訂正後データＣＤ１内のデータは不明データＤＴｘｘとなる。ただし、読み出しデータＤＴ２のビットエラーが２８ビット以下（２５〜２８）であれば、正しいビットエラー数を指示するエラービット情報ＥＢ２が訂正後データＣＤ１内に含まれる。
【００５３】
したがって、コントローラ制御部１２Ａは、エラービット情報ＥＢ２によって読み出しデータＤＴ２が２５ビット以上の異常状態であることを正確に認識することができる。以下、ステップＳＴ２１〜ＳＴ２３の実行による異常状態の判定処理を第１の異常判定処理とする。
【００５４】
続いて、ステップＳＴ２４で、コントローラ制御部１２Ａは、ＳＲＡＭ１３にアクセスし、読み出しデータＤＴ２における読み出し時ののアドレスを指示するアドレス情報ＡＤを有する訂正管理用データＤ５１において、フラグ情報ＦＧを“１”にセットする。
【００５５】
以降、コントローラ制御部１２Ａは、フラグ情報ＦＧが“１”を指示するアドレスの読み出しデータＤＴを読み込んだ場合、上述したステップＳＴ２１〜ＳＴ２３の処理を行うことなく、直ちに当該読み出しデータＤＴは異常状態であると判定する。
【００５６】
したがって、図２では図示していないが、コントローラ制御部１２Ａは、ステップＳＴ２１〜ＳＴ２３の処理に先がけて、読み出しデータＤＴの読み出し時におけるアドレスが、ＳＲＡＭ内管理領域Ｒ１３内の訂正管理用データＤ５２として存在し、かつ、当該訂正管理用データＤ５２のフラグ情報ＦＧが“１”にセットされているか否かを認識し、“１”にセットされている場合は、直ちに異常状態であると判定する。以下、フラグ情報ＦＧの内容に基づく異常状態の判定処理を第２の異常判定処理とする。
【００５７】
上述した第１あるいは第２の異常判定処理により、読み込んだ読み出しデータＤＴの異常状態が検出されると、以下のステップＳＴ２５〜ＳＴ２９の２段階訂正処理（初段訂正処理＋第２段訂正処理）に移行する。
【００５８】
（３−２．初段訂正処理）
読み出しデータＤＴ２のアドレスは、読み出しデータＤＴ２のアドレスを指示するアドレス情報ＡＤに対応して第２シンドロームＳ２が既にＳＲＡＭ１３のＳＲＡＭ内管理領域Ｒ１３内に格納されている。なぜなら、通常、同一アドレスの読み出しデータＤＴのビットエラー数が２５ビット以上となる大量ビットエラー発生に先がけて、当該読み出しデータＤＴのビットエラー数が警戒基準ビット数以上の１６〜２４ビットとなるからである。
【００５９】
そこで、ステップＳＴ２５において、コントローラ制御部１２Ａは、ＳＲＡＭ１３のＳＲＡＭ内管理領域Ｒ１３から、読み出しデータＤＴ２のアドレスを指示するアドレス情報ＡＤに対応づけられた第２シンドロームＳ２を読み出す。
【００６０】
次に、ステップＳＴ２６で、コントローラ制御部１２Ａは、図３(d) 及び図４(b) に示すように、読み出しデータＤＴ２（ユーザデータＤ１＋初期シンドロームＳ１）及び第２シンドロームＳ２の組み合わせを訂正対象データＣＴ２として訂正回路１４Ａに出力する。この際、ステップＳＴ２５で読み込んだ第２シンドロームＳ２が訂正用シンドロームＣＳとして設定される。
【００６１】
また、フラグ情報ＦＧに基づく第２の異常判定処理が実行される場合、ステップＳＴ２６の処理は一部、ステップＳＴ２１の処理と並列的に実行することができる。すなわち、コントローラ制御部１２Ａは、ステップＳＴ２１において読み出しデータＤＴ０のデータを受信し、ステップＳＴ２５にて第２シンドロームＳ２を受信次第、ステップＳＴ２１の受信完了を待つことなく直ちにステップＳＴ２６の処理を実行しても良い。
【００６２】
すると、ステップＳＴ２７において、訂正回路１４Ａは、第２シンドロームＳ２を用いてビットエラー訂正処理を実行して得られる訂正後データＣＤ２をコントローラ制御部１２Ａに出力する。この訂正後データＣＤ２は、図３(e) に示すように、２４ビット以下のビットエラーを有する読み出しデータＤＴ１（ユーザデータ部分；訂正ユーザデータＤ１ｃ及び初期シンドローム部分Ｓ１；訂正初期シンドロームＳ１ｃ）が含まれる。
【００６３】
このように、２５ビット以上のビットエラーを有する読み出しデータＤＴ２を、２４ビット以下のビットエラーを有する読み出しデータＤＴ１に戻す初段訂正処理が実行される。
【００６４】
（３−３．第２段訂正処理）
続いて、ステップＳＴ２８で、コントローラ制御部１２Ａは、訂正後データＣＤ２内に含まれる読み出しデータＤＴ１（訂正ユーザデータＤ１ｃ及び訂正初期シンドロームＳ１ｃ）とダミーデータＭＤとを訂正対象データＣＴ１として訂正回路１４Ａに出力する。この際、ステップＳＴ２７で得られた訂正初期シンドロームＳ１ｃが訂正用シンドロームＣＳとして設定される。
【００６５】
すると、ステップＳＴ２９において、訂正回路１４Ａは、訂正初期シンドロームＳ１ｃを用いてビットエラー訂正処理を実行して得られる訂正後データＣＤ１をコントローラ制御部１２Ａに出力する。この訂正後データＣＤ１は、図３(f) に示すように、ビットエラーが無い状態に訂正された読み出しデータＤＴ０が含まれる。
【００６６】
このように、初段訂正処理により得られた２４ビット以下のビットエラーを有する読み出しデータＤＴ１を、ビットエラーの無い読み出しデータＤＴ０に戻す第２段訂正処理が実行される。
【００６７】
その結果、メモリコントローラ１は、エラー訂正装置４１により誤り訂正された読み出しデータＤＴ０に含まれるユーザデータＤ１を訂正後読み出しデータとして、ホストＩ／Ｆ１１を介してホスト６に出力することができる。
【００６８】
（ＳＲＡＭ１３の訂正管理用データＤ５１）
ＳＲＡＭ１３はＳＲＡＭ内管理領域Ｒ１３内に訂正管理用データＤ５１をアドレス単位格納しており、同一アドレスにおいて２回以上の第２シンドロームＳ２が生成される場合、訂正管理用データＤ５１の第２シンドロームＳ２が最新の第２シンドロームＳ２が上書きされる。
【００６９】
メモリコントローラ１は、ＳＲＡＭ１３のＳＲＡＭ内管理領域Ｒ１３に格納された内容が更新された場合、任意のタイミングでＳＲＡＭ内管理領域Ｒ１３の内容をＮＡＮＤメモリ７の管理領域７１に転送する。
【００７０】
また、メモリシステム５１の電源投入時(リセット解除後)の初期動作として、メモリコントローラ１は、ＮＡＮＤメモリ７の管理領域７１の内容を、ＮＡＮＤ制御部１５を介してＳＲＡＭ１３のＳＲＡＭ内管理領域Ｒ１３に転送する。
【００７１】
このように、ＳＲＡＭ１３，ＮＡＮＤメモリ７間において、訂正管理用データＤ５１が最新の内容となるように、適宜、データ転送がなされる。
【００７２】
仮に、ＳＲＡＭ１３からＮＡＮＤメモリ７への訂正管理用データＤ５２の更新前にリセットがかかり、ＳＲＡＭ１３の保持内容が消去された場合、更新前との差分情報を失うことになる。
【００７３】
しかしながら、第２シンドロームＳ２を生成するための警戒基準ビット数（１６）は、訂正回路１４Ａの訂正可能ビット数（２４）との間に余裕をもった値に設定されている。このため、再度のＮＡＮＤメモリ７からの読み出し時に、第２シンドロームＳ２を生成する条件を満足して第２シンドロームＳ２を有する訂正管理用データＤ５１がほぼ確実に生成されるため、異常状態発生時に読み出しデータＤＴ２に対応するアドレス情報ＡＤをＳＲＡＭ１３が保持していないという、実質的な問題は生じない。
【００７４】
（効果等）
このように、メモリコントローラ１内における実施の形態１のエラー訂正装置４１は、上述した第１あるいは第２の異常状態判定処理により、読み出しデータＤＴに大量ビットエラーが生じる異常状態を判定すると、初段訂正処理及び第２段訂正処理による段階訂正処理を実行している。
【００７５】
このため、エラー訂正装置４１は、ＮＡＮＤメモリ７に格納されている読み出しデータＤＴが、訂正回路１４Ａの訂正可能ビット数である２４ビットを超える大量ビットエラーを有する読み出しデータＤＴ２のような場合においても、訂正後読み出しデータとしてビットエラー訂正された正常な読み出しデータＤＴ０を得ることができる。
【００７６】
例えば、ＳＲＡＭ１３に保存した読み出しデータＤＴに対応する第２シンドロームＳ２が、２４ビットのビットエラー発生時のものであれば、４８ビット（２４＋２４）のビットエラーを有する読み出しデータＤＴ２に対しても、ビットエラーの無い読み出しデータＤＴ０にエラー訂正することができる。
【００７７】
その結果、内蔵する訂正回路１４Ａのビットエラー訂正能力を上回る、ビットエラー訂正能力を有する実施の形態１のエラー訂正装置４１を、単一の訂正回路１４Ａからなる比較的簡単な構成で得ることができる。
【００７８】
また、エラー訂正装置４１は、訂正可能ビット数を超えるビットエラーである大量ビットエラーを読み出しデータＤＴが発生しているか否かの判定基準となる大量ビットエラー判定情報として、訂正回路１４Ａからエラービット情報ＥＢ（ＥＢ０〜ＥＢ２）を取得している。
【００７９】
このため、エラービット情報ＥＢに基づくことにより、２段階訂正処理が必要な読み出しデータＤＴの大量ビット発生時の的確に異常状態と判定することにより、２段階訂正処理を効率的に実行することができる。
【００８０】
また、訂正回路１４Ａは、大量ビットエラーとなるエラービット数の一部（２５〜２８ビット）を指示するエラービット情報ＥＢをさらに出力可能であるため、大量ビットエラー判定情報を出力するビットエラー検出回路の機能を訂正回路１４Ａで兼用させることができる分、エラー訂正装置４１の装置構成の簡略化を図ることができる。
【００８１】
さらに、コントローラ制御部１２Ａは、エラービット情報ＥＢに基づく異常状態の判定処理により読み出しデータＤＴの異常状態を１度判定すると、その読み出しデータＤＴのアドレスを指示するアドレス情報ＡＤを有する訂正管理用データＤ５１のフラグ情報ＦＧを“１”にセットすることにより、当該読み出しデータＤＴにおける判定を異常状態で固定することができる。
【００８２】
このため、エラービット情報ＥＢに基づき読み出しデータＤＴが異常状態とする判定処理（第１の異常判定処理）は、同一アドレスの読み出しデータＤＴにおいて最初の１回で済ますことにより、以降はフラグ情報ＦＧの“１”，“０”に基づく第２の異常判定処理によって異常認識できる分、異常判定処理の実行時間の短縮化を図ることができる。
【００８３】
＜実施の形態２＞
（全体構成）
図５はこの発明の実施の形態２であるメモリシステム５２の構成を示すブロック図である。同図に示すように、実施の形態２のメモリシステム５２は、ホスト６、メモリコントローラ２及びＮＡＮＤメモリ７により構成される。以下、実施の形態１と同一構成部は同一符号を付して適宜説明を省略する。
【００８４】
ＮＡＮＤメモリ７は管理領域７１に後述する訂正管理用データＤ５２を格納し、ユーザデータ領域７２にアドレス単位にユーザデータＤ１と初期シンドロームＳ１との組み合わせを格納している。
【００８５】
メモリコントローラ２は、実施の形態２のエラー訂正装置４２を内蔵し、ホスト６の書き込み及び読み出し等の要求に応じて、ＮＡＮＤメモリ７に対して消去動作、書き込み動作及び読み出し動作を行う。
【００８６】
メモリコントローラ２はホストＩ／Ｆ１１、ＮＡＮＤ制御部１５及びエラー訂正装置４２を有している。エラー訂正装置４２は内部にコントローラ制御部１２Ｂ、ＳＲＡＭ１３及び訂正回路１４Ｂを有しており、ＮＡＮＤメモリ７に対するアクセス時におけるエラー訂正を行う。
【００８７】
ＳＲＡＭ１３は第２シンドロームＳ２をアドレスに対応づけて訂正管理用データＤ５２として格納し、エラー訂正装置４２内における一時記憶部として機能する。
【００８８】
訂正回路１４Ｂは、実施の形態１の訂正回路１４Ａと同様、訂正用シンドロームＣＳを用いて、訂正用シンドロームＣＳ自体を含む訂正対象データＣＴ内のビットエラーを訂正して訂正後データＣＤを得るビットエラー訂正処理を実行する。
【００８９】
また、訂正回路１４Ｂは２４ビット以下のエラービット数を指示するエラービット情報ＥＢを出力するビットエラー検出能力を有している。このように、訂正回路１４Ｂはビットエラー訂正能力（２４ビット）と同一のビットエラー検出能力（２４ビット）を有している。
【００９０】
コントローラ制御部１２Ｂ（制御部）はＮＡＮＤメモリ７に対する消去動作、書き込み動作及び読み出し動作を制御する消去機能、書き込み機能及び読み出し機能を有している。そして、コントローラ制御部１２Ｂは、上述したＳＲＡＭ１３及び訂正回路１４Ｂを用いて、訂正回路１４Ｂのビットエラー訂正能力（２４ビット）を超えるビットエラー訂正が可能なデータ訂正読み出し処理を実行制御することを特徴している。
【００９１】
（訂正回路１４Ｂ）
訂正回路１４Ｂとして、ビットエラー訂正処理をＢＣＨ符号の使用により行う訂正回路が考えられる。以下、ＢＣＨ符号を使用する場合を例に挙げて説明する。
【００９２】
例えば、５１２バイト(Byte)（＝４０９２ビット）単位のユーザデータＤ１に対しビットエラー訂正処理を行う場合、ガロア拡大体GF(2^13)の既約多項式は｛X^13+X^4+X^3+X+1｝となり、１０２４バイト単位のユーザデータＤ１に対しビットエラー訂正処理を行う場合、ガロア拡大体GF(2^14)の既約多項式 は｛X^14+X^10+X^6+X+1｝となる。なお、"^"は階乗を意味する。
【００９３】
また、ユーザデータＤ１が５１２バイト（４０９６ビット）の場合、２４ビットのビットエラー訂正能力を行うための初期シンドロームＳ１及びダミーデータＭＤのビット長は３１２ビットとなる。したがって、ユーザデータＤ１にダミーデータＭＤ及び訂正用シンドロームＣＳを加えたビット長である４７２０ビット（＝４０９６＋３１２＋３１２）が訂正対象データＣＴのビット長となる。一方、上記条件で４０ビットのビットエラー訂正能力を持たそうとすると初期シンドロームＳ１のビット長は５２０ビット必要となる。
【００９４】
一方、ユーザデータＤ１が１０２４バイト（８１９２ビット）の場合、初期シンドロームＳ１及びダミーデータＭＤのビット長は３３６ビットとなる。したがって、ユーザデータＤ１に訂正用シンドロームＣＳ及びダミーデータＭＤを加えたビット長である８８６４ビット（＝８１９２＋３３６＋３３６）が訂正対象データＣＴのビット長となる。一方、上記条件で４０ビットのビットエラー訂正能力を持たそうとすると初期シンドロームＳ１のビット長は５６０ビット必要となる。
【００９５】
なお、ＮＡＮＤメモリ７において、ユーザデータ領域７２は正確にはユーザデータＤ１用のユーザ領域と初期シンドロームＳ１の冗長領域に割り当てられている。
【００９６】
ＮＡＮＤメモリ７において、１０２４バイトあたりに４０ビットのビット訂正能力を要求している場合の具体例を考える。
【００９７】
この場合、具体例１として、ユーザ領域を８１９２バイトに、冗長領域を６４０バイトに設定し、総計８８３２バイトで１ページのサイズを設定する態様が考えられる。この場合、１０２４バイトあたりに冗長領域が８０バイト（６４０ビット）設けられ、５１２バイトあたりに冗長領域が４０バイト（３２０ビット）設けられることになる。
【００９８】
また、具体例２として、ユーザ領域を１６３８４バイトに、冗長領域を１２８０バイトに設定し、総計１７６６４バイトで１ページのサイズを設定する態様が考えられる。この場合も具体例１と同様、１０２４バイトあたりに冗長領域が８０バイト（６４０ビット）設けられ、５１２バイトあたりに冗長領域が４０バイト（３２０ビット）設けられることになる。
【００９９】
したがって、具体例１及び具体例２それぞれにおいて、上述したＢＣＨ符号を用いる場合のユーザデータＤ１が１０２４バイトの際の初期シンドロームＳ１用の３３６ビット、ユーザデータＤ１が５１２バイトの際の初期シンドロームＳ１用の３１２ビットを共に冗長領域に格納することができる。
【０１００】
（動作）
図６は実施の形態２のメモリコントローラ２におけるエラー訂正装置４２のデータ訂正読み出し処理の流れを示す説明図である。図７はエラー訂正装置４２によるデータ訂正読み出し処理実行時における読み出しデータ及び訂正後データの内容を示す説明図である。図８は訂正対象データ及び訂正用シンドロームの内容を示す説明図である。以下、図６〜図８を参照して、実施の形態２のエラー訂正装置４２によるデータ訂正読み出し処理の内容を説明する。
【０１０１】
（１．読み出しデータにビットエラーが無い場合（通常状態））
まず、読み出しデータＤＴがビットエラーの無い読み出しデータＤＴ０である場合は、図２で示した実施の形態１の読み出し区間ＰＤ０と同様、図６の読み出し区間ＰＤ０にて読み出しデータＤＴ０に対するデータ訂正読み出し処理としてステップＳＴ１〜ＳＴ３が実行される。
【０１０２】
（２．読み出しデータにビットエラーが発生し、そのビット数が訂正可能ビット（２４ビット）以下の場合）
（２−１．ビットエラー数が警戒基準ビット数（１６ビット）未満の場合）
次に、読み出しデータＤＴにビットエラーが発生し、そのビット数が警戒基準ビット数（１６ビット）未満の読み出しデータＤＴ１である場合、実施の形態１の読み出し区間ＰＤ１のステップＳＴ１１〜ＳＴ１３と同様に、図６の読み出し区間ＰＤ１にステップＳＴ１１〜ＳＴ１３が実行される。なお、図７(a) は図３の(a) に対応する。
【０１０３】
したがって、エラービット情報ＥＢ１が１６以上（２４以下）を指示する場合は、要警戒状態となり、さらに、次の項目（２−２．）で述べるステップＳＴ１４〜ＳＴ１６が続行される。
【０１０４】
なお、上述した項目（１．）及び（２−１．）の処理は異常状態と判定されない状況下で実行される通常状態の処理となる。
【０１０５】
（２−２．ビットエラー数が警戒基準ビット数（１６ビット）以上の要警戒状態時の場合）
ステップＳＴ１４において、コントローラ制御部１２Ｂは、図７(b) に示すように、読み出しデータＤＴ１（ユーザデータＤ１＋初期シンドロームＳ１）をシンドローム生成対象データＣＴＳとして訂正回路１４Ｂに出力する。
【０１０６】
ステップＳＴ１５において、訂正回路１４Ｂはシンドローム生成対象データＣＴＳに対応する第２シンドロームＳ２を生成し、この第２シンドロームＳ２をコントローラ制御部１２Ｂに出力する。
【０１０７】
そして、ステップＳＴ１６において、コントローラ制御部１２Ｂは、第２シンドロームＳ２と、読み出しデータＤＴ１の読み出し時におけるアドレスを指示するアドレス情報ＡＤとを組にした訂正管理用データＤ５２を、ＳＲＡＭ１３のＳＲＡＭ内管理領域Ｒ１３に格納する。図７の右側に示すように、訂正管理用データＤ５２は、第２シンドロームＳ２とアドレス情報ＡＤとのみの組み合わせよりなる訂正管理用データＤ５２がＳＲＡＭ内管理領域Ｒ１３に格納される。すなわち、訂正管理用データＤ５２はフラグ情報ＦＧを有さない点で実施の形態１の訂正管理用データＤ５１と異なる。
【０１０８】
実施の形態２のエラー訂正装置４２では、読み出しデータＤＴが警戒基準ビット数以上に達して、訂正管理用データＤ５２としてアドレス情報ＡＤがＳＲＡＭ１３に登録されると、以降、当該アドレス情報ＡＤが指示するアドレスの読み出しデータＤＴは異常状態であると判定するようにしている。このため、同一アドレスにおいて第２シンドロームＳ２が登録されるのは一度だけである。
【０１０９】
（３．読み出しデータにビットエラーが発生し、そのビット数が訂正可能ビット数（２４ビット）を超えた異常状態時の場合）
（３−１．異常状態の有無の判定）
次に、読み出しデータＤＴにビットエラーが発生し、そのビット数が２４ビットを超える大量ビットエラーを有する読み出しデータＤＴ２である場合について説明する。
【０１１０】
図６には図示しないが、コントローラ制御部１２Ｂは、読み出しデータＤＴ２の読み出し時におけるアドレスを指示するアドレス情報ＡＤが訂正管理用データＤ５２として格納されているか否かに基づき、読み出しデータＤＴ２の異常状態の有無を判定している。
【０１１１】
したがって、コントローラ制御部１２Ｂは、読み出しデータＤＴ２のアドレスを指示するアドレス情報ＡＤが訂正管理用データＤ５２に存在する場合、直ちに読み出しデータＤＴ２は異常状態であると判定し、以下のステップＳＴ２５〜ＳＴ２９の２段階訂正処理に移行する。
【０１１２】
（３−２．初段訂正処理）
ステップＳＴ２５において、コントローラ制御部１２Ｂは、実施の形態１と同様、ＳＲＡＭ１３から、読み出しデータＤＴ２のアドレスを指示するアドレス情報ＡＤに対応づけられた第２シンドロームＳ２を読み出す。
【０１１３】
なお、以降は実施の形態１と同様、ステップＳＴ２６及びＳＴ２７が実行され、２５ビット以上のビットエラーを有する読み出しデータＤＴ２が、２４ビット以下のビットエラーを有する読み出しデータＤＴ１に戻される。なお、図７(c),(d)は図３(d),(e) に対応する。
【０１１４】
（３−３．第２段訂正処理）
実施の形態１と同様、ステップＳＴ２８及びＳＴ２９が実行され、初段訂正処理により得られた２４ビット以下のビットエラーを有する読み出しデータＤＴ１が、ビットエラーの無い読み出しデータＤＴ０に戻される。
【０１１５】
その結果、メモリコントローラ２は、エラー訂正装置４２により誤り訂正された読み出しデータＤＴ０に含まれるユーザデータＤ１を訂正後読み出しデータとして、ホストＩ／Ｆ１１を介してホスト６に出力することができる。なお、図７(e) は図３(f) に対応する。
【０１１６】
なお、説明の都合上、項目（３−１．〜３−３．）の説明として、大量ビットエラーを有する読み出しデータＤＴ２を使用している。しかしながら、警戒基準ビット数（１６ビット）以上であるが訂正可能ビット数（２４ビット）以下のビットエラーを有する読み出しデータＤＴ１においても、既に対応するアドレス情報ＡＤが訂正管理用データＤ５２としてＳＲＡＭ内管理領域Ｒ１３に登録されておれば、異常状態と判定されるため２段階訂正処理の対象となり得る。
【０１１７】
したがって、図８(b) に示すように、読み出しデータＤＴ１及び第２シンドロームＳ２を訂正対象データＣＴ２とし、第２シンドロームＳ２を訂正用シンドロームＣＳとして、訂正回路１４Ｂにビットエラー訂正処理を実行させるケースもあり得る。
【０１１８】
一方、図８(a) に示すように、初期シンドロームＳ１を訂正用シンドロームＣＳとしたビットエラー訂正処理における訂正対象データＣＴ１に含まれる読み出しデータＤＴは、ほぼ確実に読み出しデータＤＴ０あるいは読み出しデータＤＴ１となり、読み出しデータＤＴ２が含まれる可能性は極めて低い。なぜなら、読み出しデータＤＴ２が発生する事前段階において、同一アドレスの読み出し時に警戒基準ビット数を超える読み出しデータＤＴ１がほぼ確実に発生して、ＳＲＡＭ内管理領域Ｒ１３にアドレス情報ＡＤが登録されるからである。
【０１１９】
（ＳＲＡＭ１３の訂正管理用データＤ５２）
ＳＲＡＭ１３はＳＲＡＭ内管理領域Ｒ１３内に訂正管理用データＤ５２をアドレス単位格納しており、同一アドレスにおいて第２シンドロームＳ２が１度のみ生成され、上書きされることはない。
【０１２０】
また。ＳＲＡＭ１３，ＮＡＮＤメモリ７間において、実施の形態１と同様、訂正管理用データＤ５２が最新の内容となるように、適宜、データ転送がなされる。
【０１２１】
（効果等）
このように、メモリコントローラ２内に設けられた実施の形態２のエラー訂正装置４２は、ＳＲＡＭ内管理領域Ｒ１３内における、読み出しデータＤＴのアドレスを指示するアドレス情報ＡＤの存在の有無に基づく異常状態判定処理により、異常状態を判定すると、初段訂正処理及び第２段訂正処理による段階訂正処理を実行している。
【０１２２】
このため、エラー訂正装置４２は、ＮＡＮＤメモリ７から読み出される読み出しデータＤＴが、訂正回路１４Ｂの大量ビットエラーを有する読み出しデータＤＴ２のような場合においても、訂正後読み出しデータとしてビットエラー訂正された正常な読み出しデータＤＴ０を得ることができる。
【０１２３】
例えば、読み出しデータＤＴに対応する第２シンドロームＳ２をＳＲＡＭ内管理領域Ｒ１３に保存したのが、１６ビットのビットエラー発生時のものであっても、４０ビット（２４＋１６）のビットエラーを有する読み出しデータＤＴ２に対して、ビットエラーの無い読み出しデータＤＴ０にエラー訂正することができる。
【０１２４】
その結果、内蔵する訂正回路１４Ｂのビットエラー訂正能力を上回る、ビットエラー訂正能力を有する実施の形態２のエラー訂正装置４２を、単一の訂正回路１４Ｂからなる比較的簡単な構成で得ることができる。
【０１２５】
さらに、エラー訂正装置４２は、ＳＲＡＭ内管理領域Ｒ１３内の訂正管理用データＤ５２において、読み出しデータＤＴの読み出し時におけるアドレスを指示するアドレス情報ＡＤの登録の有無に基づき、読み出しデータＤＴの異常状態の有無を判定している。したがって、訂正管理用データＤ５２に登録されたアドレス情報ＡＤの指示するアドレスの読み出しデータＤＴを必ず、異常状態と判定するため、一度異常状態と判定すると、当該読み出しデータＤＴにおける判定は異常状態で固定される。
【０１２６】
このように、実施の形態２のエラー訂正装置４２は、読み出しデータＤＴの異常状態の有無判定を、ＳＲＡＭ内管理領域Ｒ１３内容を参照することにより行うため、大量ビットエラーの発生を検出するためのビットエラー検出回路（実施の形態１の訂正回路１４Ａのエラービット情報ＥＢ２の生成機能、あるいは実施の形態２の訂正可否演算部１６）に相当する構成部を設ける必要がない分、装置構成の簡略化を図ることができる。
【０１２７】
また、実施の形態２のエラー訂正装置４２で用いる訂正回路１４Ｂは、実施の形態１の訂正回路１４Ａのように訂正可能ビット数を上回るビットエラー検出能力を持たせる必要がない分、訂正回路１４Ａより回路構成を簡略化することができる。
【０１２８】
＜実施の形態３＞
（全体構成）
図９はこの発明の実施の形態３であるメモリシステム５３の構成を示すブロック図である。同図に示すように、実施の形態３のメモリシステム５３は、ホスト６、メモリコントローラ３及びＮＡＮＤメモリ７により構成される。以下、実施の形態１あるいは実施の形態２と同一構成部は同一符号を付して適宜説明を省略する。
【０１２９】
ＮＡＮＤメモリ７は管理領域７１に実施の形態２と同様、訂正管理用データＤ５２を格納し、ユーザデータ領域７２にアドレス単位にユーザデータＤ１と初期シンドロームＳ１との組み合わせを格納している。
【０１３０】
メモリコントローラ３は、実施の形態３のエラー訂正装置４３を内蔵し、ホスト６の書き込み及び読み出し等の要求に応じて、ＮＡＮＤメモリ７に対して消去動作、書き込み動作及び読み出し動作を行う。
【０１３１】
メモリコントローラ３はホストＩ／Ｆ１１、ＮＡＮＤ制御部１５及びエラー訂正装置４３を有している。エラー訂正装置４３は内部にコントローラ制御部１２Ｃ、ＳＲＡＭ１３及び訂正回路１４Ｂを有しており、ＮＡＮＤメモリ７に対するアクセス時におけるエラー訂正を行う。
【０１３２】
ＳＲＡＭ１３は第２シンドロームＳ２をアドレスに対応づけて訂正管理用データＤ５２として格納し、エラー訂正装置４３内における一時記憶部として機能する。
【０１３３】
訂正回路１４Ｂは、実施の形態２の訂正回路１４Ｂと同様、訂正用シンドロームＣＳを用いて、訂正用シンドロームＣＳを含む訂正対象データＣＴ内のビットエラーを訂正して訂正後データＣＤを得るビットエラー訂正処理を実行する。すなわち、訂正回路１４Ｂはビットエラー訂正能力（２４ビット）と同一のビットエラー検出能力（２４ビット）を有している。
【０１３４】
訂正可否演算部１６は、演算対象データＪＤに対しＣＲＣ（Cyclic redundancy check）用の符号生成演算処理を行い、演算対象データＪＤに対応する比較用ＣＲＣコードＣＲ１６（比較用誤り検出符号）を生成する誤り検出符号生成処理を実行する。
【０１３５】
コントローラ制御部１２Ｃ（制御部）はＮＡＮＤメモリ７に対する消去動作、書き込み動作及び読み出し動作を制御する消去機能、書き込み機能及び読み出し機能を有している。そして、コントローラ制御部１２Ｃは、上述したＳＲＡＭ１３、訂正回路１４Ｂ及び訂正可否演算部１６を用いて、訂正回路１４Ｂのビットエラー訂正能力（２４ビット）を超えるビットエラー訂正が可能なデータ訂正読み出し処理を実行制御することを特徴している。
【０１３６】
（動作）
図１０は実施の形態３のメモリコントローラ３におけるエラー訂正装置４３のデータ訂正読み出し処理の流れを示す説明図である。図１１はエラー訂正装置４３によるデータ訂正読み出し処理実行時における読み出しデータ及び訂正後データの内容を示す説明図である。図１２は訂正対象データ及び訂正用シンドロームの内容を示す説明図である。以下、図１０〜図１２を参照して、実施の形態３のエラー訂正装置４３によるデータ訂正読み出し処理の内容を説明する。
【０１３７】
（１．読み出しデータにビットエラーが無い場合（通常状態））
まず、読み出しデータＤＴがビットエラーの無い読み出しデータＤＴ０である場合について説明する。図８の読み出し区間ＰＤ０が読み出しデータＤＴ０に対するデータ訂正読み出し処理を示している。
【０１３８】
まず、ステップＳＴ５１で、コントローラ制御部１２Ｃは、ＮＡＮＤメモリ７のユーザデータ領域７２から、ＮＡＮＤ制御部１５を介して読み出しデータＤＴとして読み出す。図１１(a) に示すように、読み出しデータＤＴは、ビットエラーの無い読み出しデータＤＴ０であるため、読み出しデータＤＴ０に含まれるユーザデータＤ１及びユーザデータＤ１に対応する初期シンドロームＳ１及びＣＲＣコードＣＲ（誤り検出符号）のいずれにもビットエラーは存在していない。ＣＲＣコードＣＲはユーザデータＤ１に対し訂正可否演算部１６によるＣＲＣ用の符号生成演算処理を実行することにより得られたコードである。
【０１３９】
次に、ステップＳＴ５２で、コントローラ制御部１２Ｃは、読み出しデータＤＴ０及びダミーデータＭＤの組み合わせを訂正対象データＣＴ１とし、初期シンドロームＳ１を訂正用シンドロームＣＳとして訂正回路１４Ｂに出力する。その結果、図１２(a) に示すように、訂正回路１４Ｂのビットエラー訂正処理実行前の設定状態において、訂正対象データＣＴ１として、ユーザデータＤ１とＣＲＣコードＣＲとダミーデータＭＤと初期シンドロームＳ１とが格納され、この際、訂正用シンドロームＣＳとして初期シンドロームＳ１が設定される。なお、ダミーデータＭＤは初期シンドロームＳ１と同一ビット数で、すべてが“０”に設定されている。また、ステップＳＴ５２の処理は一部、ステップＳＴ５１の処理と並列的に実行することができる。
【０１４０】
その後、ステップＳＴ５３において、訂正回路１４Ｂは、初期シンドロームＳ１を用いてビットエラー訂正処理を実行して得られる訂正後データＣＤ１をコントローラ制御部１２Ｃに出力する。読み出しデータＤＴ０にはビットエラーが元々存在しないため、訂正後データＣＤ１内には読み出しデータＤＴ０と“０”を指示するエラービット情報ＥＢ０とが含まれることになる。
【０１４１】
続いて、ステップＳＴ５４において、コントローラ制御部１２Ｃは、訂正後データＣＤ１内に含まれるユーザデータＤ１を演算対象データＪＤとして訂正可否演算部１６に出力する。
【０１４２】
訂正可否演算部１６はユーザデータＤ１に対してＣＲＣ用の符号生成演算処理を実行して、ユーザデータＤ１に対応する比較用ＣＲＣコードＣＲ１６を生成する。
【０１４３】
続く、ステップＳＴ５５において、コントローラ制御部１２Ｃは訂正後データＣＤ１内に含まれるＣＲＣコードＣＲと、比較用ＣＲＣコードＣＲ１６とを比較し、両者が一致するため、訂正可能ビットを超える大量ビットエラーが生じていないことを確認することができる。
【０１４４】
（２．読み出しデータにビットエラーが発生し、そのビット数が訂正可能ビット（２４ビット）以下の場合（通常状態））
（２−１．ビットエラー数が警戒基準ビット数（１６ビット）未満の場合）
次に、読み出しデータＤＴにビットエラーが発生し、そのビット数が２４ビット以下の読み出しデータＤＴ１である場合について説明する。図１０の読み出し区間ＰＤ１が読み出しデータＤＴ１に対するデータ訂正読み出し処理を示している。
【０１４５】
まず、ステップＳＴ６１で、コントローラ制御部１２Ｃは、ＮＡＮＤメモリ７から、読み出しデータＤＴを読み出す。読み出しデータＤＴは、ビットエラーが存在する読み出しデータＤＴ１及び初期シンドロームＳ１との組み合わせにより構成される。
【０１４６】
次に、ステップＳＴ６２で、コントローラ制御部１２Ｃは、読み出しデータＤＴ１及びダミーデータＭＤの組み合わせを訂正対象データＣＴ１とし、初期シンドロームＳ１を訂正用シンドロームＣＳとして訂正回路１４Ｂに出力する。なお、ステップＳＴ６２の処理は一部、ステップＳ６１の処理と並列的に実行することができる。
【０１４７】
ステップＳＴ６３において、訂正回路１４Ｂは、初期シンドロームＳ１を用いてビットエラー訂正処理を実行して得られる訂正後データＣＤ１をコントローラ制御部１２Ｃに出力する。読み出しデータＤＴ１にはビットエラーが存在しているため、訂正後データＣＤ１内にはビットエラーが存在しない訂正後の読み出しデータＤＴ０と訂正前の読み出しデータＤＴ１内のビットエラー数を指示するエラービット情報ＥＢ１とが含まれることになる。
【０１４８】
その後、ステップＳＴ６４及びＳＴ６５において、ステップＳＴ５４及びＳＴ５５と同様の処理を実行し、ＣＲＣコードＣＲと比較用ＣＲＣコードＣＲ１６との比較に基づく大量ビットエラーの発生の有無を確認する。
【０１４９】
ステップＳＴ６３で得たエラービット情報ＥＢ１が警戒基準ビット数である“１６”を下回る１５以下を指示する場合は、上述したステップＳＴ６５で処理を終了する。一方、エラービット情報ＥＢ１が１６以上（２４以下）を指示する場合は、要警戒状態となり、さらに、次の項目（２−２．）で述べるステップＳＴ６６〜ＳＴ６８が続行される。
【０１５０】
（２−２．ビットエラー数が警戒基準ビット数（１６ビット）以上の要警戒状態時の場合）
ステップＳＴ６６において、コントローラ制御部１２Ｃは、図１１(b) に示すように、読み出しデータＤＴ１（ユーザデータＤ１＋ＣＲＣコードＣＲ＋初期シンドロームＳ１）をシンドローム生成対象データＣＴＳとして訂正回路１４Ｂに出力する。
【０１５１】
ステップＳＴ６７において、訂正回路１４Ｂはシンドローム生成対象データＣＴＳに対応する第２シンドロームＳ２を生成し、この第２シンドロームＳ２をコントローラ制御部１２Ｃに出力する。
【０１５２】
そして、ステップＳＴ６８において、コントローラ制御部１２Ｃは、第２シンドロームＳ２と、読み出しデータＤＴ１の読み出し時におけるアドレスを指示するアドレス情報ＡＤとを組にした訂正管理用データＤ５２を、ＳＲＡＭ１３のＳＲＡＭ内管理領域Ｒ１３に格納する。すなわち、図１１の右側に示すように、ＳＲＡＭ内管理領域Ｒ１３には第２シンドロームＳ２とアドレス情報ＡＤとの組み合わせよりなる訂正管理用データＤ５２が格納される。
【０１５３】
（３．読み出しデータにビットエラーが発生し、そのビット数が訂正可能ビット数（２４ビット）を超えた異常状態時の場合）
（３−１．異常状態の有無の判定）
次に、読み出しデータＤＴにビットエラーが発生し、そのビット数が２４ビットを超える大量ビットエラーを有する読み出しデータＤＴ２である場合について説明する。図１０の読み出し区間ＰＤ２が読み出しデータＤＴ２に対するデータ訂正読み出し処理を示している。
【０１５４】
まず、ステップＳＴ７１で、コントローラ制御部１２Ｃは、ＮＡＮＤメモリ７から、読み出しデータＤＴを読み出す。読み出しデータＤＴは、図１１(c) に示すように、大量ビットエラーが存在する読み出しデータＤＴ２であるため、読み出しデータＤＴ２に含まれるユーザデータＤ１、ＣＲＣコードＣＲ及び初期シンドロームＳ１に存在するビットエラー合計数が２５ビット以上ある。
【０１５５】
次に、ステップＳＴ７２で、コントローラ制御部１２Ｃは、読み出しデータＤＴ２及びダミーデータＭＤの組み合わせを訂正対象データＣＴ１とし、初期シンドロームＳ１を訂正用シンドロームＣＳとして訂正回路１４Ｂに出力する。なお、ステップＳＴ７２の処理は一部、ステップＳＴ７１の処理と並列的に実行することができる。
【０１５６】
ステップＳＴ７３において、訂正回路１４Ｂは、初期シンドロームＳ１を用いてビットエラー訂正処理を実行して得られる訂正後データＣＤ１をコントローラ制御部１２Ｃに出力する。
【０１５７】
この際、読み出しデータＤＴ２は２５ビット以上の大量ビットエラーが発生しているため、訂正後データＣＤ１内のユーザデータは不明データＤＴｘｘとなる。
【０１５８】
一方、ステップＳＴ７４において、コントローラ制御部１２Ｃは、訂正後データＣＤ１内に含まれるユーザデータである不明ユーザデータＤ１ｘｘを演算対象データＪＤとして訂正可否演算部１６に出力する。
【０１５９】
訂正可否演算部１６は不明ユーザデータＤ１ｘｘに対してＣＲＣ用の符号生成演算処理を実行して、不明ユーザデータＤ１ｘｘに対応する比較用ＣＲＣコードＣＲ１６を生成する。
【０１６０】
続く、ステップＳＴ７５において、コントローラ制御部１２Ｃは訂正後データＣＤ１内に含まれるＣＲＣコードＣＲと、比較用ＣＲＣコードＣＲ１６とを比較し、両者が不一致となるため、訂正可能ビットを超える大量ビットエラーが生じたことを正確に判定することができる。
【０１６１】
このように、実施の形態３のエラー訂正装置４３は、ステップＳＴ７１〜ＳＴ７５の実行により、訂正可否演算部１６を利用してＣＲＣコードＣＲと比較用ＣＲＣコードＣＲ１６との比較に基づき、読み出しデータＤＴの異常状態の有無を判定する異常判定処理を実行している。
【０１６２】
上述した異常判定処理により、読み込んだ読み出しデータＤＴの異常状態が検出されると、以下のステップＳＴ７６〜ＳＴ８２の２段階訂正処理（初段訂正瀬処理＋第２段訂正処理）に移行する。
【０１６３】
（３−２．初段訂正処理）
実施の形態１と同様、読み出しデータＤＴ２の読み出し時におけるアドレスを指示するアドレス情報ＡＤに対応して第２シンドロームＳ２が既にＳＲＡＭ１３のＳＲＡＭ内管理領域Ｒ１３内に格納されている。
【０１６４】
そこで、ステップＳＴ７６において、コントローラ制御部１２Ｃは、ＳＲＡＭ１３から、読み出しデータＤＴ２の読み出し時におけるアドレスを指示するアドレス情報ＡＤに対応づけられた第２シンドロームＳ２を読み出す。
【０１６５】
次に、ステップＳＴ７７で、コントローラ制御部１２Ｃは、図１１(d) 及び図１２(b) に示すように、読み出しデータＤＴ２（ユーザデータＤ１＋ＣＲＣコードＣＲ＋初期シンドロームＳ１）及び第２シンドロームＳ２の組み合わせを訂正対象データＣＴ２として訂正回路１４Ｂに出力する。この際、ステップＳＴ７６で読み込んだ第２シンドロームＳ２が訂正用シンドロームＣＳとして設定される。
【０１６６】
すると、ステップＳＴ７８において、訂正回路１４Ｂは、第２シンドロームＳ２を用いてビットエラー訂正処理を実行して得られる訂正後データＣＤ２をコントローラ制御部１２Ｃに出力する。この訂正後データＣＤ２は、図１１(e) に示すように、２４ビット以下のビットエラーを有する読み出しデータＤＴ１（ユーザデータ部分；訂正ユーザデータＤ１ｃ、ＣＲＣコード部分（誤り検出符号部分）；訂正ＣＲＣコードＣＲｃ（訂正誤り検出符号）及び初期シンドローム部分；訂正初期シンドロームＳ１ｃ）が含まれる。
【０１６７】
このように、２５ビット以上のビットエラーを有する読み出しデータＤＴ２を、２４ビット以下のビットエラーを有する読み出しデータＤＴ１に戻す初段訂正処理が実行される。
【０１６８】
（３−３．第２段訂正処理）
続いて、ステップＳＴ７９で、コントローラ制御部１２Ｃは、訂正後データＣＤ２内に含まれる読み出しデータＤＴ１（訂正ユーザデータＤ１ｃ、訂正ＣＲＣコードＣＲｃ及び訂正初期シンドロームＳ１ｃ）とダミーデータＭＤとを訂正対象データＣＴ１として訂正回路１４Ａに出力する。この際、ステップＳＴ２７で得られた訂正初期シンドロームＳ１ｃが訂正用シンドロームＣＳとして設定される。
【０１６９】
すると、ステップＳＴ８０において、訂正回路１４Ｂは、初期シンドロームＳ１を用いてビットエラー訂正処理を実行して得られる訂正後データＣＤ１をコントローラ制御部１２Ｃに出力する。この訂正後データＣＤ１は、図１１(f) に示すように、ビットエラーが無い状態に訂正された読み出しデータＤＴ０が含まれる。
【０１７０】
その後、ステップＳＴ８１及びＳＴ８２において、ステップＳＴ５４及びＳＴ５５と同様に、ＣＲＣコードＣＲと比較用ＣＲＣコードＣＲ１６との比較に基づく大量ビットエラーの発生の有無を確認する。
【０１７１】
このように、初段訂正処理により得られた２４ビット以下のビットエラーを有する読み出しデータＤＴ１を、ビットエラーの無い読み出しデータＤＴ０に戻す第２段訂正処理が実行される。
【０１７２】
その結果、メモリコントローラ３は、エラー訂正装置４３により誤り訂正された読み出しデータＤＴ０に含まれるユーザデータＤ１を訂正後読み出しデータとして、ホストＩ／Ｆ１１を介してホスト６に出力することができる。
【０１７３】
上述したように、コントローラ制御部１２Ｃはコントローラ制御部１２Ａと異なり、ステップＳＴ５２，ＳＴ６２、ＳＴ７２及びＳＴ７９の実行時における訂正対象データＣＴ１にＣＲＣコードＣＲを含め、ステップＳＴ７７の実行時における訂正対象データＣＴ２にＣＲＣコードＣＲを含めている。
【０１７４】
さらに、ステップＳＴ６６の実行時におけるシンドローム生成対象データＣＴＳにＣＲＣコードＣＲを含め、ステップＳＴ７８の実行時における訂正後データＣＤ２のＣＲＣコードＣＲ部分を訂正ＣＲＣコードＣＲｃとし、ステップＳ８０実行時における訂正後データＣＤ１に訂正ＣＲＣコードＣＲｃを含めている。
【０１７５】
（ＳＲＡＭ１３の訂正管理用データＤ５２）
ＳＲＡＭ１３はＳＲＡＭ内管理領域Ｒ１３内に訂正管理用データＤ５２をアドレス単位格納しており、同一アドレスにおいて２回以上の第２シンドロームＳ２が生成される場合、訂正管理用データＤ５２の第２シンドロームＳ２が最新の第２シンドロームＳ２が上書きされる。
【０１７６】
また、ＳＲＡＭ１３，ＮＡＮＤメモリ７間において、実施の形態１と同様、訂正管理用データＤ５２が最新の内容となるように、適宜、データ転送がなされる。
【０１７７】
（効果等）
このように、メモリコントローラ１内における実施の形態３のエラー訂正装置４３は、ビットエラー検出回路として専用の訂正可否演算部１６を利用した異常状態判定処理により、読み出しデータＤＴに大量ビットエラーが生じる異常状態を判定すると、初段訂正処理及び第２段訂正処理による段階訂正処理を実行している。
【０１７８】
このため、エラー訂正装置４３は、ＮＡＮＤメモリ７に格納されている読み出しデータＤＴが、訂正回路１４Ｂの訂正可能ビット数である２４ビットを超える大量ビットエラーを有する読み出しデータＤＴ２のような場合においても、訂正後読み出しデータとしてビットエラー訂正された正常な読み出しデータＤＴ０を得ることができる。
【０１７９】
例えば、ＳＲＡＭ１３に保存した読み出しデータＤＴに対応する第２シンドロームＳ２が、２４ビットのビットエラー発生時のものであれば、４８ビット（２４＋２４）のビットエラーを有する読み出しデータＤＴ２に対しても、ビットエラーの無い読み出しデータＤＴ０にエラー訂正することができる。
【０１８０】
その結果、内蔵する訂正回路１４Ｂのビットエラー訂正能力を上回る、ビットエラー訂正能力を有する実施の形態３のエラー訂正装置４３を、単一の訂正回路１４Ｂからなる比較的簡単な構成で得ることができる。
【０１８１】
また、エラー訂正装置４３は、訂正可能ビット数を超えるビットエラーである大量ビットエラーを読み出しデータＤＴが発生しているか否かの判定基準となる大量ビットエラー判定情報として、訂正可否演算部１６からの比較用ＣＲＣコードＣＲ１６を用いている。
【０１８２】
このため、比較用ＣＲＣコードＣＲ１６に基づいて、２段階訂正処理が必要な読み出しデータＤＴの大量ビットエラー発生時を異常状態と正確に判定することにより、２段階訂正処理を効率的に実行することができる。
【０１８３】
上述したように、実施の形態３のエラー訂正装置４３は、ビットエラー検出回路として、ＣＲＣ用の符号生成演算処理（誤り検出符号生成処理）を実行する訂正可否演算部１６を備えている。このため、コントローラ制御部１２Ｃは、訂正可否演算部１６に符号生成演算処理を実行させながら、上述したステップＳＴ７１〜ＳＴ７５を実行することにより、読み出しデータＤＴにおける大量ビットエラー発生時にのみ、確実に２段階訂正処理を行うことができる。その結果、上述した２段階訂正処理を最も効率的に行うことができる。
【０１８４】
また、実施の形態３のエラー訂正装置４３で用いる訂正回路１４Ｂは、実施の形態１の訂正回路１４Ａのように訂正可能ビット数を上回るビットエラー検出能力を持たせる必要がない分、訂正回路１４Ａより回路構成を簡略化することができる。
【０１８５】
なお、実施の形態３のエラー訂正装置４３の訂正可否演算部１６では、誤り検出符号生成処理としてＣＲＣ用の符号生成演算処理を行う場合を示したが、これに代えて、Ｈｕｓｈ関数を利用した符号生成演算処理を行うようにしても良い。
【０１８６】
＜ＮＡＮＤメモリ７の特性による各実施の形態の考察＞
図１３〜図１５はＮＡＮＤメモリ７から読み出したデータに関し、訂正対象データのデータ長あたりの読み出し回数に伴うビットエラー数を示すグラフであり、図１３は消去及びプログラム回数が１０回の場合、図１４は消去及びプログラム回数が２０００回の場合、図１５は消去及びプログラム回数が３０００回の場合を示している。
【０１８７】
図１３〜図１５において、ＮＡＮＤメモリ７相当の６４個のＮＡＮＤフラッシュメモリをサンプルとして、横軸は読み出し回数（ＲＮ）を示し、縦軸はビットエラー数（ＢＥＮ）を示している。また、ビットエラー数Ｌ１、Ｌ２及びＬ３は検出されたビットエラー数（ＢＥＮ）の最小値（Ｍｉｎ）、平均値（Ａｖｅ）及び最大値（Ｍａｘ）を示している。
【０１８８】
図１３及び図１４に示すように、消去及びプログラム回数が２０００回以下で、かつ、読み出し回数が４００万回以下である場合、ビットエラー数の最大値は２０ビット程度に収まるため、訂正可能ビット数が２４ビットの比較的回路規模が小さい訂正回路１４Ａや訂正回路１４Ｂを用いても十分にエラー訂正が可能である。
【０１８９】
すなわち、上記の場合、エラー訂正装置４１〜４３は、いずれも初期シンドロームＳ１を用いた通常状態における１回の訂正処理でエラー訂正が可能であるため、比較的時間を要する２段階訂正処理が頻繁に実行されることによる動作効率が低下する懸念は少ないと推測される。
【０１９０】
一方、図１４及び図１５に示すように、消去及びプログラム回数が２０００回以上で、かつ、読み出し回数が５００万回以上である場合、ビットエラー数の最大値は２４ビットを超える大量ビットエラーがほぼ確実に発生する。
【０１９１】
しかしながら、実施の形態１〜実施の形態３のエラー訂正装置４１〜４３はそれぞれ２段階訂正処理により、大量ビットエラーが生じて場合においても、訂正回路１４Ａや訂正回路１４Ｂのみを用いて確実にエラー訂正を行うことができる。
【０１９２】
このように、実施の形態１〜実施の形態３のエラー訂正装置４１〜４３は、訂正可能ビット数が４０ビット程度の訂正回路に比べて、回路規模が小さい訂正可能ビット数が２４ビットの単一の訂正回路１４Ａあるいは訂正回路１４Ｂを用いて装置構成の簡略化を図りながら、動作効率を劣化させることなく、訂正可能ビット数２４を超える大量ビットエラーのエラー訂正も可能な高いビットエラー訂正能力を有することができる。
【０１９３】
＜その他＞
なお、上述した実施の形態１〜実施の形態３では、訂正可能ビット数“２４”に対し、警戒基準ビット数を“１６”に設定したが、これに限定されず、訂正可能ビット数以下で適切な値に設定することが望ましい。
【０１９４】
警戒基準ビット数を決定する主な要因として、想定する書き換え（消去及びプログラム）回数、想定する読み出し回数、ＮＡＮＤメモリの特性(図１３〜図１５のような評価結果を含む) 等が考えられる。
【０１９５】
例えば、ＮＡＮＤメモリ７が図１３〜図１５のような特性を有し、書き換え回数が２０００回以下、読み出し回数が４００万回以下の利用を想定している場合、警戒基準ビット数は訂正可能ビット数の“２４”に近い値に設定することが、ビットエラー訂正能力を高まることができるため望ましい。さらに、実施の形態２のエラー訂正装置４２において、２段階訂正処理の実行効率も高めることができる。
【０１９６】
一方、ＮＡＮＤメモリ７が図１３〜図１５のような特性を有し、書き換え回数が３０００回以上、読み出し回数が３００万回以上を想定している場合、２段階訂正処理を確実に行うべく、訂正可能ビット数“２４”から余裕をもって、実施の形態１〜実施の形態３の“１６”程度に警戒基準ビット数を設定することが望ましい。
【０１９７】
また、ＮＡＮＤメモリ７に対し新たに消去及びプログラム処理が実行され、ユーザデータＤ１が新たな内容に書き換えられた場合、初期シンドロームＳ１も内容変更され、当該ユーザデータＤ１に関する訂正管理用データＤ５１（Ｄ５２）の内容も管理領域７１からクリアされる。
【０１９８】
なお、ダミーデータＭＤは一の訂正回路１４Ａ（１４Ｂ）を用いて２段階訂正処理を行うべく、訂正対象データＣＴ１及びＣＴ２間のビット数の調整用に用いている。訂正回路１４Ａ（１４Ｂ）の訂正対象データのビット数を可変設定可能な場合、訂正対象データＣＴ１及びＣＴ２間のビット数調整用のダミーデータＭＤを不要にすることが可能である。
【０１９９】
また、メモリコントローラ１〜３の各部は、基本的にハードウェアで構成されるが、ＳＲＡＭ１３を除き、ソフトウェアに基づくＣＰＵを用いたプログラム処理によって実行するようにしても良い。
【０２００】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略したりすることが可能である。
【符号の説明】
【０２０１】
１〜３  メモリコントローラ
６  ホスト
７  ＮＡＮＤメモリ
１１  ホストＩ／Ｆ
１２Ａ〜１２Ｃ  コントローラ制御部
１３  ＳＲＡＭ
１４Ａ，１４Ｂ  訂正回路
１５  ＮＡＮＤ制御部
１６  訂正可否演算部
４１〜４３  エラー訂正装置
５１〜５３  メモリシステム
【図１】
0006438763.tif 000002
【図２】
0006438763.tif 000003
【図３】
0006438763.tif 000004
【図４】
0006438763.tif 000005
【図５】
0006438763.tif 000006
【図６】
0006438763.tif 000007
【図７】
0006438763.tif 000008
【図８】
0006438763.tif 000009
【図９】
0006438763.tif 000010
【図１０】
0006438763.tif 000011
【図１１】
0006438763.tif 000012
【図１２】
0006438763.tif 000013
【図１３】
0006438763.tif 000014
【図１４】
0006438763.tif 000015
【図１５】
0006438763.tif 000016