(57)【要約】【課題】不揮発性メモリの２ビット誤り訂正を容易に行なうことが可能な誤り訂正装置を提供すること。【解決手段】テーブルには、１物理セルに格納される２つの論理情報に対応する２ビットに誤りが発生する場合のシンドロームに対応して、誤り位置情報が格納される。たとえば、５１２バイト目のデータのビット０およびビット４に誤りがある場合（Ｄａｔａ［５１１］＝１１）には、シンドローム値（ＣＲＣＤ）が０ｘ０１０８となる。したがって、所定長のデータとＥＣＣコードとから計算されたシンドローム値に基づいて、２ビットの誤り位置情報を検索し、容易に誤り訂正を行なうことが可能になる。【選択図】        図４
2005011386.tif 000002
【特許請求の範囲】
【請求項１】
１物理セルに２つの論理情報を格納する不揮発性メモリの誤りを訂正する誤り訂正装置であって、
１物理セルに格納される２つの論理情報に対応する２ビットに誤りが発生する場合のシンドロームに対応する誤り位置情報を格納するためのテーブルと、
所定データ長のデータとそれに付加された誤り検出／訂正用コードとからシンドロームを演算し、演算されたシンドロームに基づいて前記テーブルを検索して２ビットの誤りを訂正するための２ビット訂正手段とを含む、誤り訂正装置。
【請求項２】
前記誤り訂正装置はさらに、前記演算されたシンドロームに応じて１ビットの誤りか、２ビットの誤りかを判定するための判定手段と、
前記判定手段によって１ビットの誤りであると判定された場合に、１ビット誤りを訂正するための１ビット訂正手段とを含み、
前記２ビット訂正手段は、前記判定手段によって２ビット誤りであると判定された場合に、前記演算されたシンドロームに基づいて前記テーブルを検索して２ビットの誤りを訂正する、請求項１記載の誤り訂正装置。
【請求項３】
前記２ビット訂正手段は、前記演算されたシンドロームに基づいて前記テーブルを検索し、一致するものがない場合にはランダムな２ビット誤りであると判定する、請求項２記載の誤り訂正装置。
【請求項４】
前記テーブルは、前記演算されたシンドロームがアドレスとして入力されると、誤りバイト位置情報と誤りビット位置情報とを出力する記憶装置によって構成される、請求項１〜３のいずれかに記載の誤り訂正装置。
【請求項５】
前記不揮発性メモリには、前記所定データ長のデータに対応する誤り検出／訂正用コードを３つ格納する領域が設けられ、
前記２ビット訂正手段は、前記３つの誤り検出／訂正用コードの多数決をとって正しい誤り検出／訂正用コードを求める、請求項１〜４のいずれかに記載の誤り訂正装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性メモリの誤り訂正装置に関し、特に、不揮発性メモリの２ビットの誤り訂正を行なう誤り訂正装置に関する。
【０００２】
【従来の技術】
近年、不揮発性メモリが広く利用されるようになってきている。先行技術の特開２００１−２０２７９３号公報に記載があるように、不揮発性メモリではデータの信頼性を高めるため、一般にＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅｓ）等が使われる。
【０００３】
２値メモリの場合には、１ビットのデータ化けがランダムに発生した場合、不揮発性メモリなどの多値メモリは１物理セルに２つの論理情報を格納するため、データ化けが発生した１物理セルにおいては１ビットまたは２ビットのデータ化けが発生することになる。このような多値メモリにおける２ビットの誤り訂正に関する先行技術として、特開昭６０−１６３３００号公報、特開２００１−２０２７９３号公報および特開昭６０−１９１３３８号公報に開示された発明がある。
【０００４】
特開昭６０−１６３３００号公報に開示された誤り訂正機能付半導体メモリにおいては、１個のメモリセルに記憶されるｑ値（ｑ≧３）の情報をまとめて１つのｑ元シンボルとみなし、このシンボルを単位として符号化、復号を行なう。これによって、α線によって１個のメモリセルに記憶されているｑ値の情報がすべて失われるというソフトエラーが発生した場合でも、修正を容易に行なうことができる。
【０００５】
また、特開２００１−２０２７９３号公報に開示されたエラー訂正符号化方法においては、１ページのデータを２つの領域に分割し、各領域に対してハミング符号のＥＣＣコードを生成付加すると共に、全領域に対してモジュロ２の加算をしてＥＣＣコードを生成付加するものである。これによって、各領域に１ビットずつのエラーが発生した場合に限り、エラーデータの訂正が可能になる。
【０００６】
また、特開昭６０−１９１３３８号公報は、ＳＥＣ−ＤＥＤ法によるエラー訂正方法において、検査マトリクスの行数を検査ビット数に応じて定め、かつ、列数をデータビット数に応じて定めると共に、検査マトリクスの各列ベクトルを各々異なったパターンとし、かつ、各パターン中の特定論理値を示すビット数を奇数に定め、シンドロームにしたがい、再生データビット群中のエラーを生じたビット順位を示す訂正信号を発生し、これによりいずれかの２ビットにわたるエラーを訂正するものである。
【０００７】
【特許文献１】
特開昭６０−１６３３００号
【０００８】
【特許文献２】
特開２００１−２０２７９３号
【０００９】
【特許文献３】
特開昭６０−１９１３３８号
【００１０】
【発明が解決しようとする課題】
上述した特開昭６０−１６３３００号公報に開示された誤り訂正機能付半導体メモリにおいては、１個のメモリセルに記憶されるｑ値の情報をまとめて１つのｑ元シンボルとみなし、このシンボルを単位として符号化、復号を行なうため、符号化、復号のための回路の規模が大きくなるといった問題点がある。
【００１１】
また、特開２００１−２０２７９３号公報に開示されたエラー訂正符号化方法においては、１ページのデータを２つの領域に分割し、各領域に対してＥＣＣコードを生成付加すると共に、全領域に対してモジュロ２の加算をしてＥＣＣコードを生成付加する。そのため、分割された２つの領域のそれぞれに１ビットずつのエラーが発生した場合に限りエラーデータの訂正が可能であり、同じ領域に２ビットのエラーが発生した場合にはエラーデータの訂正が行なえないといった問題点があった。
【００１２】
本発明は、上記問題点を解決するためになされたものであり、その目的は、不揮発性メモリの２ビット誤り訂正を容易に行なうことが可能な誤り訂正装置を提供することである。
【００１３】
【課題を解決するための手段】
本発明のある局面に従えば、１物理セルに２つの論理情報を格納する不揮発性メモリの誤りを訂正する誤り訂正装置であって、１物理セルに格納される２つの論理情報に対応する２ビットに誤りが発生する場合のシンドロームに対応する誤り位置情報を格納するためのテーブルと、所定データ長のデータとそれに付加された誤り検出／訂正用コードとからシンドロームを演算し、演算されたシンドロームに基づいてテーブルを検索して２ビットの誤りを訂正するための２ビット訂正手段とを含む。
【００１４】
【発明の実施の形態】
図１は、本発明の実施の形態における半導体記憶装置の概略構成を示すブロック図である。この半導体記憶装置は、半導体メモリ２と、半導体メモリ２に記憶されるデータの誤り検出、誤り訂正などの制御を行なうＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）１とを含む。なお、ＭＣＵ１は、誤り訂正装置とも呼ぶ。
【００１５】
ＭＣＵ１は、半導体メモリ２へ制御信号３を出力することによって、データ・バス４を介したデータの書込み／読出しを行なう。ＭＣＵ１は内部に、プログラムや後述するテーブルを記憶したＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリを有しており、メモリに格納されたプログラムを実行することによってＥＣＣコードの生成、誤り訂正などの処理を行なう。
【００１６】
半導体メモリ２は、たとえばＡＮＤ型のフラッシュメモリによって構成され、１物理セルで“１１”、“１０”、“００”、“０１”の４つの情報を格納することができる多値メモリである。この４値の情報のそれぞれは、８ビットのうちビット０とビット４、ビット１とビット５、ビット２とビット６、ビット３とビット７に割当てられる。
【００１７】
図２は、本発明の実施の形態における半導体メモリ２の１セクタ内のデータ構成を示す図である。半導体メモリ２の各セクタは、データが格納される５１２ビットのデータ・エリア１１と、３つのＥＣＣコードを格納する管理エリア１２とを含む。また、管理エリア１２には、３つのＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）−ＣＣＩＴＴの演算コードであるＥＣＣコード１（１３）と、ＥＣＣコード２（１４）と、ＥＣＣコード３（１５）とが格納される。
【００１８】
図２に示すＥＣＣコード１〜３（１３〜１５）には、同じＥＣＣコードが格納され、３重化された構成を有している。この構成によって、いずれかのＥＣＣコードのデータが化けた場合でも、多数決によって正しいＥＣＣコードを決定することが可能となる。
【００１９】
ＣＲＣ−ＣＣＩＴＴ巡回符号は、３ビットの誤り検出能力がある。このＣＲＣ−ＣＣＩＴＴ巡回符号を誤り訂正に使用する場合、２ビットの誤り検出と、１ビットの誤り訂正とが可能である。本実施の形態においては、誤り訂正装置が１ビットまたは２ビットの誤り訂正を行なうが、１ビットの誤り訂正については広く知られているので、その詳細な説明は行なわない。
【００２０】
図３は、１ビットの誤り訂正における誤りパターン（以下、１ビットシンドロームと呼ぶ。）の一部を示す図である。この１ビットシンドロームは、データ長が５１２バイトの場合を示している。たとえば、図３の最初の行には、５１２バイト目のデータのうちビット７に誤りがある場合の１ビットシンドローム（ＣＲＣＤ）が１６進数で“１１８９”であり、１０進数で“４４８９”であることが示されている。
【００２１】
図３に示す１ビットシンドローム（ＣＲＣＤ）の値をアドレスとするテーブルを、ＭＣＵ１内に設け、テーブルのそれぞれの内容として５１２バイトのデータのうちどの１ビットにエラーが発生しているかを示す情報を格納することによって、５１２バイトのデータとＥＣＣコードとに基づいて計算したシンドロームから、どの１ビットのデータが化けているかを容易に検索することが可能である。
【００２２】
ＡＮＤ型フラッシュメモリは、４値メモリであるという特徴を考慮すると、２ビット誤りの種類として以下の２種類を挙げることができる。
【００２３】
（１）ランダムな１ビット誤りが２箇所で発生する。
（２）あるバイトのビット０とビット４、ビット１とビット５、ビット２とビット６またはビット３とビット７との２ビットの組合せで誤りが発生する。
【００２４】
なお、（１）に示すランダムな２ビット誤りは、（２）に示すあるバイトの特定ビットの組合わせで発生する２ビット誤り以外の誤りを指すものとする。
【００２５】
１セクタの実データ長を５１２ビットとした場合、フラッシュメモリの特性上２ビット誤りは上記（２）の誤りが支配的になる。ＣＲＣ−ＣＣＩＴＴ符号を用いた場合、ＣＲＣ−ＣＣＩＴＴコードに誤りがなければ、得られたシンドロームの値の１６ビットのうち“１”のビットが偶数個であるか、奇数個であるかによって１ビット誤りであるか、２ビット誤りであるかを判定できる。すなわち、シンドロームの値の１６ビットのうち“１”のビットが偶数個であれば２ビット誤りであり、奇数個であれば１ビット誤りである。
【００２６】
上述したように、管理エリア１２に格納されるＣＲＣ−ＣＣＩＴＴコードは３つであるので、その多数決によって正しいＣＲＣ−ＣＣＩＴＴコードを抽出できるので、１ビット誤りであるか、２ビット誤りであるかを正しく判定することができる。
【００２７】
データ長を５１２バイトとした場合、上記（２）の２ビット誤りの誤りパターンは２０４８パターンである。この誤りパターン（以下、多値２ビットシンドロームと呼ぶ。）は独立線形であり、容易に求めることができる。この多値２ビットシンドロームは、上述したランダムな２ビット誤りのシンドロームと重複していないことが確認されている。
【００２８】
図４は、２ビット誤り訂正における多値２ビットシンドロームの一部を示す図である。この多値２ビットシンドロームは、データ長が５１２バイトの場合を示している。たとえば、図４の最初の行には、５１２バイト目のデータのうちビット０とビット４とに誤りがある場合の多値２ビットシンドローム（ＣＲＣＤ）が１６進数で“０１０８”であり、１０進数で“２６４”であることが示されている。
【００２９】
図４に示す多値２ビットシンドローム（ＣＲＣＤ）の値をアドレスとするテーブルを、ＭＣＵ１内に設け、テーブルのそれぞれの内容として５１２バイトのデータのうちどの２ビットにエラーが発生しているかを示す情報を格納することによって、５１２バイトのデータとＥＣＣコードとから計算したシンドロームに基づいて、どの２ビットのデータが化けているかを容易に検出することが可能である。
【００３０】
この場合、多値２ビットシンドロームとして、２１６−１個の誤りバイト位置情報（２バイト）と、誤りビット位置情報（１バイト）とによって構成されるＲＯＭテーブルがＭＣＵ１内に設けられる。たとえば、多値２ビットシンドローム（ＣＲＣＤ）を用いて検索された誤りバイト位置情報および誤りビット位置情報が、それぞれ“０ｘ０１ＦＦ”、“０ｘ１１”であれば、５１２バイト目のビット４およびビット０に誤りが発生していると判定できる。
【００３１】
なお、上述したように、多値２ビットシンドロームの誤りパターンは２０４８パターンであるので、多値２ビットシンドロームが格納されるＲＯＭテーブルには、飛び飛びにデータが格納されることになる。多値２ビットシンドロームがない箇所については、誤りバイト位置情報および誤りビット位置情報として、それぞれ“０ｘ００００”および“０ｘ００”が格納される。多値２ビットシンドロームがない箇所が検索された場合には、ランダム２ビット誤りであると判定される。
【００３２】
これらのデータを詰めて格納するようにすれば、２０４８個の誤りバイト位置情報（２バイト）と、誤りビット位置情報（１バイト）と、その多値２ビットシンドローム（ＣＲＣＤ）とによってＲＯＭテーブルを構成できる。ただし、この場合には検索に多少時間がかかるようになる。
【００３３】
また、誤りバイト位置情報に２バイト、誤りビット位置情報に１バイトを割付けているが、誤りバイト位置情報および誤りビット位置情報をそれぞれ９ビットおよび２ビットに圧縮できるので、これらの情報を合わせて２バイトとすることも可能である。
【００３４】
図５は、本発明の実施の形態の誤り訂正装置におけるデータ書込みの処理手順を説明するためのフローチャートである。まず、誤り訂正装置は、半導体メモリ２に書込むデータを転送し（Ｓ１１）、データ書込み時におけるＥＣＣ演算を行なう（Ｓ１２）。
【００３５】
次に、半導体メモリ２へ転送されたデータのバイト数が５１２バイトであるか否かが判定される（Ｓ１３）。転送されたデータのバイト数が５１２バイトでなければ（Ｓ１３，Ｎｏ）、ステップＳ１１に戻って以降の処理を繰返す。また、転送されたデータのバイト数が５１２バイトであれば（Ｓ１３，Ｙｅｓ）、計算されたＥＣＣ演算コードを取出し（Ｓ１４）、半導体メモリ２へそのＥＣＣコードを３回転送する（Ｓ１５）。
【００３６】
５１２バイトのデータおよび３つのＥＣＣコードが転送されると、半導体メモリ２は図２に示すデータ・エリア１１および管理エリア１２に対してこれらのデータの書込みを開始するので（Ｓ１６）、誤り訂正装置は半導体メモリ２へのデータ書込み処理を終了する。なお、誤り訂正装置は、半導体メモリ２に対してデータ転送およびデータ書込みを行なう際に、半導体メモリ２にコマンドを発行してこれらの処理を行なう。
【００３７】
図６は、本発明の実施の形態の誤り訂正装置におけるデータ読出しの処理手順を説明するためのフローチャートである。まず、半導体メモリ２から読出すデータが転送され（Ｓ２１）、読出し時のＥＣＣ演算が行なわれる（Ｓ２２）。
【００３８】
次に、半導体メモリ２から転送されたデータのバイト数が５１２バイトであるか否かが判定される（Ｓ２３）。転送されたデータのバイト数が５１２バイトでなければ（Ｓ２３，Ｎｏ）、ステップＳ２１に戻って以降の処理を繰返す。また、転送されたデータのバイト数が５１２バイトであれば（Ｓ２３，Ｙｅｓ）、計算されたＥＣＣ演算コードを取出すと共に（Ｓ２４）、管理エリア１２に書込まれている３つのＥＣＣコードが半導体メモリ２から転送され、多数決によって正しいＥＣＣコードが取得される（Ｓ２５）。
【００３９】
次に、誤り訂正装置は、取出したＥＣＣ演算コードに応じて実データの誤り検出を行なう（Ｓ２６）。誤りがなければ（Ｓ２７，Ｎｏ）、処理を終了する。また、誤りがあれば（Ｓ２７，Ｙｅｓ）、１ビット誤りであるか否かが判定される（Ｓ２８）。
【００４０】
１ビット誤りであれば（Ｓ２８，Ｙｅｓ）、１ビット訂正処理へ進む。また、１ビット誤りでなければ（Ｓ２８，Ｎｏ）、２ビット誤り訂正処理へ進む。なお、１ビット誤りであるか、２ビット誤りであるかは、上述したようにＥＣＣコードとＥＣＣ演算コードとにより得られたシンドロームの値の１６ビットのうち“１”のビットが偶数個であるか、奇数個であるかによって判定される。
【００４１】
図７は、図６に示す２ビット訂正の処理手順を説明するためのフローチャートである。まず、５１２バイト長のデータとＥＣＣコードとから計算されたシンドローム値が取得され（Ｓ３１）、図４に示す多値２ビットシンドロームとの比較が完了したか否かが判定される（Ｓ３２）。なお、この処理手順は、多値２ビットシンドロームをつめてテーブルＲＯＭに格納している場合を想定している。シンドローム値の検索方法として、ニュートン近似法などが使用でき、効率的な検索を行なうことができる。
【００４２】
比較が完了していれば（Ｓ３２，Ｙｅｓ）、ランダムな２ビット誤りと判定される（Ｓ３３）。また、比較が完了していなければ（Ｓ３２，Ｎｏ）、多値２ビットシンドロームと計算されたシンドロームとの比較が行なわれる（Ｓ３４）。多値２ビットシンドロームと計算されたシンドローム値とが一致しない場合には（Ｓ３５，Ｎｏ）、ステップＳ１２に戻って以降の処理を繰返す。
【００４３】
また、多値２ビットシンドロームと計算されたシンドローム値とが一致する場合には（Ｓ３５，Ｙｅｓ）、そのシンドローム値に対応する誤りバイト位置情報と、誤りビット位置情報とを取得し、その２ビットのデータを訂正して（Ｓ３６）、処理を終了する。
【００４４】
以上説明したように、本実施の形態における誤り訂正装置によれば、２ビットの誤りが検出された場合には、計算されたシンドローム値と多値２ビットシンドロームとを比較して、ランダム２ビットの誤りであるか、同じ物理セルにおける２ビット誤りであるかを判定するようにしたので、訂正可能な２ビット誤りであるか否かを容易に判定することが可能となった。
【００４５】
また、同じ物理セルにおける２ビット誤りの場合には、多値２ビットシンドロームを用いて誤りが発生した２ビットの位置を特定することができるので、容易に２ビット訂正を行なうことが可能となった。
【００４６】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００４７】
【発明の効果】
本発明のある局面によれば、２ビット訂正手段が、所定データ長のデータとそれに付加された誤り検出／訂正用コードとからシンドロームを演算し、演算されたシンドロームに基づいて、１物理セルに格納される２つの論理情報に対応する２ビットに誤りが発生する場合のシンドロームを格納したテーブルを検索するので、２ビットの誤り訂正を容易に行なうことが可能になった。
【図面の簡単な説明】
【図１】本発明の実施の形態における半導体記憶装置の概略構成を示すブロック図である。
【図２】本発明の実施の形態における半導体メモリ２の１セクタ内のデータ構成を示す図である。
【図３】１ビットの誤り訂正における１ビットシンドロームの一部を示す図である。
【図４】２ビット誤り訂正における多値２ビットシンドロームの一部を示す図である。
【図５】本発明の実施の形態の誤り訂正装置におけるデータ書込みの処理手順を説明するためのフローチャートである。
【図６】本発明の実施の形態の誤り訂正装置におけるデータ読出しの処理手順を説明するためのフローチャートである。
【図７】図６に示す２ビット訂正の処理手順を説明するためのフローチャートである。
【符号の説明】
１  ＭＣＵ、２  半導体メモリ、１１  データ・エリア、１２  管理エリア、１３〜１５  ＥＣＣコード。
【図１】
2005011386.tif 000003
【図２】
2005011386.tif 000004
【図３】
2005011386.tif 000005
【図４】
2005011386.tif 000006
【図５】
2005011386.tif 000007
【図６】
2005011386.tif 000008
【図７】
2005011386.tif 000009