(57)【特許請求の範囲】
【請求項１】
データ動作を実行するマルチレベルセルメモリ装置であって、
ＭＬＣメモリセルと、
エンコーディング関数およびデコーディング関数のうちの１つである第１コーディング関数を実行する第１コーディング装置と、
エンコーディング関数およびデコーディング関数のうちの１つである第２コーディング関数を実行する第２コーディング装置と、
前記第１コーディング関数および前記第２コーディング関数がエンコーディング関数である場合、前記第２コーディング装置によって出力されたデータを格納するように前記ＭＬＣメモリに指示し、前記第１コーディング関数および前記第２コーディング関数がデコーディング関数である場合、前記ＭＬＣメモリから探索されたデータに基づいてデマッピングビット列を生成する動作を実行するように設定された信号モジュールと、
読取信号に回答して前記ＭＬＣメモリセルから出力された出力パルスからデマッピングされたビット列を生成する信号デマッピング部と、
前記デマッピングされたビット列を第１デコーディング関数（前記第１デコーディング関数は第２エンコーディング方法に対応）によってデコーディングして、内部デコーディングされたビット列を生成する内部デコーダと、
を備え、
前記内部デコーダは、
前記デマッピングされたビット列に穿孔されたビットを付加して、非穿孔されたビット列を生成する非穿孔部と、
前記非穿孔されたビット列をビタビデコーディングでデコーディングして、前記内部デコーディングされたビット列を生成する親コードデコーダと、
を備え、
前記ＭＬＣメモリセルは、ｍビットＭＬＣメモリセルであり（前記ｍはプラスの整数）、
前記信号デマッピング部は、前記ＭＬＣメモリセルから受信した出力パルスおよび前記ＭＬＣメモリセルと関連した２ｍ個の散布の閾値電圧を比較して、前記出力パルスに対応した前記デマッピングされたビット列を生成する、ことを特徴とするマルチレベルセルメモリ装置。
【請求項２】
前記第１コーディング関数は第１エンコーディング方法であり、前記第２コーディング関数は第２エンコーディング方法であり、
前記第１コーディング装置は、データを前記第１エンコーディング方法に基づいてエンコーディングして、外部エンコーディングされたビット列を生成する外部エンコーダであり、
前記第２コーディング装置は、前記外部エンコーディングされたビット列を前記第２エンコーディング方法に基づいてエンコーディングして、内部エンコーディングされたビット列を生成する内部エンコーダであり、
前記信号モジュールは、前記内部エンコーディングされたビット列を前記ＭＬＣメモリセルに前記格納されたデータで格納するように命令する信号マッピング部であることを特徴とする請求項１に記載のマルチレベルセルメモリ装置。
【請求項３】
前記ＭＬＣメモリセルはｍビットＭＬＣメモリセルであり（前記ｍは、プラスの整数）、信号マッピングモジュールは２ｍＰＡＭによって生成される２ｍ個の電圧散布のうちの１つであるプログラムパルスを介して前記ＭＬＣメモリセルに命令することを特徴とする請求項２に記載のマルチレベルセルメモリ装置。
【請求項４】
前記第１エンコーディング方法は、線形ブロックエンコーディングを含むことを特徴とする請求項２に記載のマルチレベルセルメモリ装置。
【請求項５】
前記第２エンコーディング方法は、畳み込み符号エンコーディングを含むことを特徴とする請求項２に記載のマルチレベルセルメモリ装置。
【請求項６】
前記内部エンコーダは、
前記外部エンコーディングされたビット列を畳み込み符号エンコーディングでエンコーディングして、畳み込み符号を生成する親コードエンコーダと、
前記畳み込み符号の少なくとも１ビットを穿孔して、前記内部エンコーディングされたビット列を生成する穿孔部と、
を備えることを特徴とする請求項２に記載のマルチレベルセルメモリ装置。
【請求項７】
前記内部エンコーダによって生成された前記内部エンコーディングされたビット列は、系統的コードであることを特徴とする請求項２に記載のマルチレベルセルメモリ装置。
【請求項８】
前記内部エンコーダによって生成された前記内部エンコーディングされたビット列は、非系統的コードを含むことを特徴とする請求項２に記載のマルチレベルセルメモリ装置。
【請求項９】
信号マッピング部は、グレイコーディングによってプログラムパルスを生成することを特徴とする請求項１に記載のマルチレベルセルメモリ装置。
【請求項１０】
前記信号デマッピング部は、前記出力パルスに基づいて硬判定された前記デマッピングされたビット列を生成することを特徴とする請求項１に記載のマルチレベルセルメモリ装置。
【請求項１１】
前記信号デマッピング部は、前記出力パルスに基づいて軟判定された前記デマッピングされたビット列を生成することを特徴とする請求項１に記載のマルチレベルセルメモリ装置。
【請求項１２】
前記第１デコーディング関数は、畳み込み符号デコーディングを含むことを特徴とする請求項１に記載のマルチレベルセルメモリ装置。
【請求項１３】
前記内部デコーディングされたビット列を第２デコーディング関数（前記第２デコーディング関数は第１エンコーディング関数に対応）にデコーディングして、外部デコーディングされたビット列を生成する外部デコーダ、
をさらに備えることを特徴とする請求項１に記載のマルチレベルセルメモリ装置。
【請求項１４】
前記ＭＬＣメモリセルは、ＭＬＣフラッシュメモリのメモリセルであることを特徴とする請求項１０に記載のマルチレベルセルメモリ装置。
【請求項１５】
前記第１コーディング関数は第１デコーディング方法であり、前記第２コーディング関数は第２デコーディング方法であり、
前記信号モジュールは、前記ＭＬＣメモリセルから探索されたデータに基づいて前記デマッピングされたビット列を生成する信号デマッピング部であり、
前記第１コーディング装置は、前記デマッピングされたビット列を前記第２デコーディング方法に基づいてデコーディングして、内部デコーディングされたビット列を生成する内部デコーダであり、
前記第２コーディング装置は、前記内部デコーディングされたビット列を第１デコーディング方法に基づいてデコーディングして、外部デコーディングされたビット列を生成する外部デコーダであることを特徴とする請求項１に記載のマルチレベルセルメモリ装置。
【請求項１６】
前記内部デコーダは、前記デマッピングされたビット列から検出されたエラーを訂正し
て、前記内部デコーディングされたビット列を生成し、
前記外部デコーダは、前記内部デコーディングされたビット列から検出されたエラーを訂正して、前記外部デコーディングされたビット列を生成することを特徴とする請求項１５に記載のマルチレベルセルメモリ装置。
【請求項１７】
前記外部デコーダは、前記内部デコーディングされたビット列でエラーとして検出されたが訂正されなかったエラーを報告することを特徴とする請求項１６に記載のマルチレベルセルメモリ装置。
【請求項１８】
前記信号デマッピング部は、前記ＭＬＣメモリセルから受信した出力パルスに基づいて軟判定された前記デマッピングされたビット列を生成することを特徴とする請求項１５に記載のマルチレベルセルメモリ装置。
【請求項１９】
前記ＭＬＣメモリセルは、ＭＢＣフラッシュメモリのメモリセルを含むことを特徴とする請求項１５に記載のマルチレベルセルメモリ装置。
【請求項２０】
マルチレベルセルメモリ装置でデータ動作を実行する方法であって、
エンコーディング関数およびデコーディング関数のうちの１つである第１コーディング関数を実行する動作と、
エンコーディング関数およびデコーディング関数のうちの１つの第２コーディング関数を実行する動作と、
前記第１コーディング関数および前記第２コーディング関数がエンコーディング関数である場合、第２コーディング装置によって出力されたデータを格納するように前記ＭＬＣメモリに指示したり、前記第１コーディング関数および前記第２コーディング関数がデコーディング関数である場合、前記ＭＬＣメモリから探索されたデータに基づいてデマッピングビット列を生成したりする動作を実行する動作と、
を含み、
前記方法はさらに、
読取信号に回答して前記ＭＬＣメモリセルから出力された出力パルスからデマッピングされたビット列を生成する動作と、
前記デマッピングされたビット列を第１デコーディング関数（前記第１デコーディング関数は第２エンコーディング方法に対応）によってデコーディングして、内部デコーディングされたビット列を生成する動作とを
を含み、
前記内部デコーディングされたビット列を生成する動作は、
前記デマッピングされたビット列に穿孔されたビットを付加して、非穿孔されたビット列を生成する動作と、
前記非穿孔されたビット列をビタビデコーディングでデコーディングして、前記内部デコーディングされたビット列を生成する動作と
を含み、
前記ＭＬＣメモリセルは、ｍビットＭＬＣメモリセルであり（前記ｍはプラスの整数）、
前記デマッピングされたビット列を生成する動作は、前記ＭＬＣメモリセルから受信した出力パルスおよび前記ＭＬＣメモリセルと関連した２ｍ個の散布の閾値電圧を比較して、前記出力パルスに対応した前記デマッピングされたビット列を生成することを含む、ことを特徴とするマルチレベルセルメモリ装置におけるデータ動作実行方法。
【請求項２１】
前記第１コーディング関数は第１エンコーディング方法であり、前記第２コーディング関数は第２エンコーディング方法であることを特徴とする請求項２０に記載のマルチレベルセルメモリ装置でのデータ動作実行方法。
【請求項２２】
データを前記第１エンコーディング方法に基づいてエンコーディングして、外部エンコーディングされたビット列を生成する動作と、
前記外部エンコーディングされたビット列を前記第２エンコーディング方法に基づいてエンコーディングして、内部エンコーディングされたビット列を生成する動作と、
前記内部エンコーディングされたビット列を前記ＭＬＣメモリセルに前記格納されたデータとして格納するように命令する動作と、
をさらに含むことを特徴とする請求項２１に記載のマルチレベルセルメモリ装置でのデータ動作実行方法。
【請求項２３】
前記第１コーディング関数は第１デコーディング方法であり、前記第２コーディング関数は第２デコーディング方法であることを特徴とする請求項２０に記載のマルチレベルセルメモリ装置でのデータ動作実行方法。
【請求項２４】
前記ＭＬＣメモリセルから探索されたデータに基づいて前記デマッピングされたビット列を生成する動作と、
前記デマッピングされたビット列を前記第２デコーディング方法に基づいてデコーディングして、内部デコーディングされたビット列を生成する動作と、
前記内部デコーディングされたビット列を第１デコーディング方法に基づいてデコーディングして、外部デコーディングされたビット列を生成する動作と、
をさらに含むことを特徴とする請求項２３に記載のマルチレベルセルメモリ装置でのデータ動作実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、マルチレベルセル（ＭＬＣ：Ｍｕｌｔｉ−ｌｅｖｅｌ  Ｃｅｌｌ）メモリ装置および方法に関し、より詳細には、データ動作を実行するマルチレベルメモリ装置およびその方法に関する。
【背景技術】
【０００２】
シングルレベルセル（ＳＬＣ：ｓｉｎｇｌｅ−ｌｅｖｅｌ  ｃｅｌｌ）メモリは、１つのメモリセルに１ビットのデータを格納するメモリである。シングルレベルセルメモリは、シングルビットセル（ＳＢＣ：ｓｉｎｇｌｅ−ｂｉｔ  ｃｅｌｌ）メモリとも呼ばれる。
【０００３】
図１は、従来技術に係るシングルレベルセルメモリのセル閾値電圧を示す図である。図１に示すように、シングルレベルセルメモリでは、１ビットのデータは互いに異なる電圧または散布（ｄｉｓｔｒｉｂｕｔｉｏｎ）で格納され、読み取られる。図１を参照すれば、図１の垂直点線で示された閾値電圧（ｔｈｒｅｓｈｏｌｄ  ｖｏｌｔａｇｅ）によって２つの散布が区分される。例えば、メモリセルから読み取られた電圧が０．５〜１．５ボルトである場合には、メモリセルに格納されたデータは第１ロジックレベル（例えば、高いロジックレベルまたはロジック「１」）となり、メモリセルから読み取られた電圧が２．５〜３．５ボルトである場合には、メモリセルに格納されたデータは第２ロジックレベル（例えば、低いロジックレベルまたはロジック「０」）と解釈される。メモリセルに格納されたデータは、読取動作時にセル電流／電圧の差によって区分される。
【０００４】
現在のＭＬＣメモリは、ＳＬＣメモリよりもさらに高く集積される。マルチレベルセルメモリは、マルチビットセル（ＭＢＣ：ｍｕｌｔｉ−ｂｉｔ  ｃｅｌｌ）メモリとも呼ばれる。しかしながら、１つのメモリセルに格納するビットの数が増加するほど信頼性が低下し、読取失敗率（ｒｅａｄ  ｆａｉｌｕｒｅ  ｒａｔｅ）が増加するようになる。１つのメモリセルにｍ個のビットを格納しようとすれば、２ｍ個の散布（例えば、各関連したビットに対する分離した電圧領域）を形成しなければならない。しかしながら、各散布に関連する電圧ウィンドウ（ｖｏｌｔａｇｅ  ｗｉｎｄｏｗ）は制限されているため、ｍの増加によって隣接したビット間の閾値電圧の差は減少するようになり、これによって読取失敗率が増加する。このような理由により、従来技術によれば、マルチレベルセルメモリを用いた格納密度の向上が容易ではなかった。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、マルチレベルセルメモリに新しいエラー訂正方法を適用することで、マルチレベルセルメモリにおいて、１つのメモリセルに格納するビットの数を安定的に増加させることに関する。
【０００６】
また、本発明の実施形態は、マルチレベルセルメモリにエラー訂正方法を適用しながらも、エラー訂正方法によるオーバーヘッドの大きさを調節できるようにすることに関する。
【０００７】
また、本発明の実施形態は、マルチレベルセルメモリにおいて、１つのメモリセルに４ビット以上を格納することができる高い低密度のマルチレベルセルメモリを提供することに関する。
【０００８】
さらに、本発明の実施形態は、マルチレベルセルメモリにおいて、ランダムエラーおよびバーストエラーすべてに強いエラー訂正方法を提供することに関する。
【課題を解決するための手段】
【０００９】
本発明の一実施形態は、データ動作を実行するマルチレベルセルメモリ装置に関し、前記マルチレベルセルメモリ装置は、ＭＬＣメモリセル、エンコーディング関数（ｅｎｃｏｄｉｎｇ  ｆｕｎｃｔｉｏｎ）、およびデコーディング関数（ｄｅｃｏｄｉｎｇ  ｆｕｎｃｔｉｏｎ）のうちの１つである第１コーディング関数（ｃｏｄｉｎｇ  ｆｕｎｃｔｉｏｎ）を実行する第１コーディング装置と、エンコーディング関数およびデコーディング関数のうちの１つである第２コーディング関数を実行する第２コーディング装置と、前記第１コーディング関数および前記第２コーディング関数がエンコーディング関数である場合、前記第２コーディング装置によって出力されたデータを格納するように前記ＭＬＣメモリに指示し、前記第１コーディング関数および前記第２コーディング関数がデコーディング関数である場合、前記ＭＬＣメモリから探索されたデータに基づいてデマッピングビット列（ｄｅｍａｐｐｅｄ  ｂｉｔ  ｓｔｒｅａｍ）を生成する動作を実行するように設定された信号モジュール（ｓｉｇｎａｌ  ｍｏｄｕｌｅ）と、を備える。
【００１０】
本発明のさらに他の一実施形態は、マルチレベルセルメモリ装置でデータ動作を実行する方法に関し、前記データ動作実行方法は、エンコーディング関数およびデコーディング関数のうちの１つである第１コーディング関数を実行する動作と、エンコーディング関数およびデコーディング関数のうちの１つの第２コーディング関数を実行する動作と、前記第１コーディング関数および前記第２コーディング関数がエンコーディング関数である場合、前記第２コーディング装置によって出力されたデータを格納するように前記ＭＬＣメモリに指示し、前記第１コーディング関数および前記第２コーディング関数がデコーディング関数である場合、前記ＭＬＣメモリから探索されたデータに基づいてデマッピングビット列を生成する動作と、を実行する動作を含む。
【図面の簡単な説明】
【００１１】
本発明の理解のために添付の図面が提供される。この図面は本発明の実施形態を説明し、詳細な説明と共に本発明を説明する。
【００１２】
【図１】シングルレベルセルメモリのセル閾値電圧を示す図である。
【図２】本発明の一実施形態に係るマルチレベルセルメモリ装置２００を示すブロック図である。
【図３】本発明のさらに他の一実施形態に係る内部エンコーダを示すブロック図である。
【図４】本発明のさらに他の一実施形態に係る畳み込み符号エンコーディングを実行する親コードエンコーダ（ｍｏｔｈｅｒ  ｃｏｄｅ  ｅｎｃｏｄｅｒ）を示す図である。
【図５】本発明のさらに他の一実施形態に係る穿孔部の動作を説明するための図である。
【図６】本発明のさらに他の一実施形態に係るＭＬＣメモリセルアレイを示す図である。
【図７】本発明のさらに他の一実施形態に係る信号マッピング部および信号デマッピング部の動作を説明するための図である。
【図８】本発明のさらに他の一実施形態に係る信号マッピング部および信号デマッピング部の動作を説明するための図である。
【図９】本発明のさらに他の一実施形態によって軟判定を実行する信号デマッピング部の動作を説明するための図である。
【図１０】本発明のさらに他の一実施形態に係る内部デコーダを示すブロック図である。
【図１１】本発明のさらに他の一実施形態に係る非穿孔部および親コードデコーダの動作を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態に関する詳細な説明が開示される。しかしながら、開示された具体的な構造および動作の詳細は、単に本発明の実施形態を説明するための目的としてのみ理解されなければならない。本発明の実施形態は他の多くの代案的な形態でも実現することができ、ここに開示された実施形態に限定されるものとして解釈されてはならない。
【００１４】
したがって、本発明の実施形態に対して多様な変形および代案的な形態が可能であり、本発明の実施形態の具体的な実施形態が図面に例示的な形態で示されており、ここで詳細に説明される。しかしながら、本発明の実施形態をここに開示された具体的な形態で制限しようという意図はなく、むしろ本発明の実施形態は、本発明の思想の範囲に含まれるすべての変形例、均等例、および代案を含むものである。図中、同じ参照符号は同じ部材を示す。
【００１５】
ここで、多様な構成要素を示すために「第１」、「第２」などの用語が用いられているが、このような構成要素がこのような用語に制限されることはない。このような用語は、１つの構成要素を他の構成要素と区分するために用いられたものに過ぎない。例えば、本発明の技術思想の範囲内において、第１構成要素が第２構成要素として命名されることもあるし、第２構成要素が第１構成要素として命名されることもある。ここで用いられる「および／または」という用語は、関連してリストされる項目の１つまたはそれ以上のあらゆる、またはいかなる組み合わせも含む。
【００１６】
構成要素が異なる構成要素に「連結した（ｃｏｎｎｅｃｔｅｄ）」または「繋がった（ｃｏｕｐｌｅｄ）」と表現されたとき、この構成要素は他の構成要素に直接連結したり繋がったりする場合もあるし、他の構成要素を介して連結したり繋がったりする場合もある。逆に、構成要素が異なる構成要素に「直接連結した（ｄｉｒｅｃｔｌｙ  ｃｏｎｎｅｃｔｅｄ）」または「直接繋がった（ｄｉｒｅｃｔｌｙ  ｃｏｕｐｌｅｄ）」と表現された場合、構成要素の間には他の構成要素は介入しない。構成要素間の関係を表現するために用いられる他の用語（例えば、「間（ｂｅｔｗｅｅｎ）」と「間に直接（ｄｉｒｅｃｔｌｙ  ｂｅｔｗｅｅｎ）」、「隣接した（ａｄｊａｃｅｎｔ）」と「直接隣接した（ｄｉｒｅｃｔｌｙ  ａｄｊａｃｅｎｔ）」など）もこのような形式として解釈されなければならない。
【００１７】
ここで用いられた用語は、具体的な実施形態を説明するための目的として用いられており、本発明の実施形態を制限するためのものではない。ここで用いられたような単数形態（例えば、「ａ」、「ａｎ」、および「ｔｈｅ」）は、異なって記述されていない限り複数の形態も含む。「含む」という用語は記述された特徴、数字、段階、動作、構成要素、および／または構成を指定するが、１つ以上の他の特徴、数字、段階、動作、構成要素、構成、および／またはこれらのグループの追加または存在を除外しない。
【００１８】
異なって定義されていなければ、ここに用いられたすべての用語（技術的、科学的用語を含む）は、本発明が属する技術分野において通常の知識を有する者によって通常的に理解されるものと同じ意味を有する。通常的に用いられる辞書に定義されたものと同じ用語は、関連技術の文脈においてそれらの意味と一致する意味を有するものとして解釈されなければならず、ここにそのように表現した場合を除いては、異常化されたり過度に形式的な意味で解釈されたりしてはならない。
【００１９】
図２は、本発明の一実施形態に係るマルチレベルセルメモリ装置２００を示すブロック図である。
【００２０】
本実施形態に係るマルチレベルセルメモリ装置２００は、外部エンコーダ（ｏｕｔｅｒ  ｅｎｃｏｄｅｒ）２１０と、内部エンコーダ（ｉｎｎｅｒ  ｅｎｃｏｄｅｒ）２２０と、信号マッピング部（ｓｉｇｎａｌ  ｍａｐｐｉｎｇ  ｍｏｄｕｌｅ）２３０と、ＭＬＣメモリセルアレイ（ＭＬＣ  ｍｅｍｏｒｙ  ｃｅｌｌ  ａｒｒａｙ）２４０と、信号デマッピング部（ｓｉｇｎａｌ  ｄｅｍａｐｐｉｎｇ  ｍｏｄｕｌｅ）２７０と、内部デコーダ（ｉｎｎｅｒ  ｄｅｃｏｄｅｒ）２８０と、外部デコーダ（ｏｕｔｅｒ  ｄｅｃｏｄｅｒ）２９０とを備える。
【００２１】
図２に示すように、本実施形態は、ＭＬＣメモリ装置に受信されたソースデータを格納し、読み取るために外部エンコーディング（ｏｕｔｅｒ  ｃｏｄｉｎｇ）および内部エンコーディング（ｉｎｎｅｒ  ｃｏｄｉｎｇ）の２段階を連結接続した連接エンコーディング（ｃｏｎｃａｔｅｎａｔｅｄ  ｃｏｄｉｎｇ）を用いる。外部エンコーディングにはブロックエンコーディング（ｂｌｏｃｋ  ｃｏｄｉｎｇ）を用い、内部エンコーディングには畳み込み符号化（ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｃｏｄｉｎｇ）用いる。ブロックエンコーディングは、データを複数のブロック単位でエンコーディング（ｅｎｃｏｄｉｎｇ）およびデコーディング（ｄｅｃｏｄｉｎｇ）する方法である。畳み込み符号化は、以前データと現在データを用いてエンコーディングする方法である。畳み込み符号化は、エンコーディングに以前データを用いるため、以前データを格納する格納装置を必要とする。ブロックエンコーディングはバーストエラー（ｂｕｒｓｔ  ｅｒｒｏｒ）の検出および訂正に強く、畳み込み符号化はランダムエラー（ｒａｎｄｏｍ  ｅｒｒｏｒ）の検出および訂正に強い。したがって、本実施形態において、ＭＬＣメモリ装置２００にデータを記録するとき、外部エンコーディングとしてブロックエンコーディングを用い、内部エンコーディングとして畳み込み符号化を用いることで、本実施形態はバーストエラーおよびランダムエラーすべてに強い高性能のエラー訂正性能を有するようになる。
【００２２】
図２の実施形態において、外部エンコーダ２１０は、マルチレベルセルメモリ装置に格納するソースデータを受信し、このソースデータを第１エンコーディング方法でエンコーディングして、外部エンコーディングされたビット列（ｏｕｔｅｒ  ｅｎｃｏｄｅｄ  ｂｉｔ  ｓｔｒｅａｍ）２１５を生成する。第１エンコーディング方法としては、線形ブロックエンコーディング（ｌｉｎｅａｒ  ｂｌｏｃｋ  ｅｎｃｏｄｉｎｇ）を用いることができる。線形ブロックエンコーディングには、Ｈａｍｍｉｎｇコーディング、ＢＣＨコーディング、Ｒｅｅｄ−Ｓｏｌｏｍｏｎ（ＲＳ）コーディング、Ｇｏｌａｙコーディングなどの方法がある。線形ブロックエンコーディングは、まず、ソースデータをｋビット単位でブロック化する（例えば、ｋはプラスの整数）。例えば、受信されたソースデータをｋビット単位で分割する。外部エンコーダ２１０は、このようにブロック化されたｋビットのビット列２０５にｒ１ビットのオーバーヘッドを付加して、ｋ＋ｒ１ビットの外部エンコーディングされたビット列２１５を生成する。したがって、外部エンコーダ２１０の符号化率はｋ／（ｋ＋ｒ１）となる。このように追加されたｒ１はパリティビット（ｐａｒｉｔｙ  ｂｉｔ）であり、ｋビットのビット列２０５に付加することができる。この場合、ＭＬＣメモリ装置２００からデータを読み取るとき、内部デコーダ２８０は、ｒ１ビットを参照してｋビットのデータに対するエラー検出および訂正を実行する。
【００２３】
図２の実施形態において、内部エンコーダ（ｉｎｎｅｒ  ｅｎｃｏｄｅｒ）２２０は、外部エンコーディングされたビット列２１５を第２エンコーディング方法でエンコーディングして、内部エンコーディングされたビット列（ｉｎｎｅｒ  ｅｎｃｏｄｅｄ  ｂｉｔ  ｓｔｒｅａｍ）２２５を生成する。第２エンコーディング方法としては、畳み込み符号エンコーディングを用いることができる。畳み込み符号エンコーディングは、現在のデータと以前のデータとの間の相互関連性（ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｒｅｌａｔｉｏｎ）を用いてエラーを検出および訂正するエンコーディングである。内部エンコーダ２２０は、ｋ＋ｒ１ビットの外部エンコーディングされたビット列２１５をエンコーディングして、ｋ＋ｒ１＋ｒ２ビットの内部エンコーディングされたビット列２２５を生成する。したがって、内部エンコーダ２２０によって追加されるオーバーヘッドはｒ２ビットであり、内部エンコーダ２２０の符号化率は（ｋ＋ｒ１）／（ｋ＋ｒ１＋ｒ２）となる。ｋ＋ｒ１＋ｒ２をｎとすれば、外部エンコーダ２１０および内部エンコーダ２２０全体を介した符号化率はｋ／ｎとなる。畳み込み符号エンコーディングは、ランダムエラー（ｒａｎｄｏｍ  ｅｒｒｏｒ）の検出および訂正に強い。
【００２４】
図２の実施形態において、内部エンコーダ２２０によって生成された内部エンコーディングされたビット列２２５は、信号マッピング部２３０によってＭＬＣメモリセル２５０に格納されるようになる。したがって、内部エンコーディングされたビット列２２５は、ＭＬＣメモリセル２５０に格納される最終デジタルデータとなる。内部エンコーディングされたビット列２２５はｎビットで構成されるが、そのうちの一部であるｋビットがｋビットのビット列２０５の値をそのまま維持している場合、内部エンコーディングされたビット列２２５は系統的コード（ｓｙｓｔｅｍａｔｉｃ  ｃｏｄｅ）と呼ばれる。もし、ｎビットの内部エンコーディングされたビット列２２５のうちのいずれの一部もｋビットのビット列２０５の値をそのまま維持していない場合、内部エンコーディングされたビット列２２５は非系統的コード（ｎｏｎｓｙｓｔｅｍａｔｉｃ  ｃｏｄｅ）と呼ばれる。本実施形態は、内部エンコーディングされたビット列２２５を系統的コードまたは非系統的コードで生成することができる。本実施形態において、内部エンコーディングされたビット列２２５を系統的コードで生成する場合、ＭＬＣメモリセル２５０に格納されるデータも本来のｋビットのビット列２０５の値をそのまま維持したまま格納されるようになるという長所がある。
【００２５】
図２の実施形態において、信号マッピング部（ｓｉｇｎａｌ  ｍａｐｐｉｎｇ  ｍｏｄｕｌｅ）２３０は、内部エンコーディングされたビット列（ｂｉｔ  ｓｔｒｅａｍ）２２５によるプログラムパルス（ｐｒｏｇｒａｍ  ｐｕｌｓｅ）２３５をＭＬＣメモリセル２５０に印加（ａｐｐｌｙ）して、ＭＬＣメモリセル２５０にデータを記録する。ＭＬＣメモリセル２５０がｍビットのＭＬＣメモリセルであれば、プログラムパルス２３５は、２ｍＰＡＭ（Ｐｕｌｓｅ  Ａｍｐｌｉｔｕｄｅ  Ｍｏｄｕｌａｔｉｏｎ）によって生成が可能な２ｍ個のレベルのうちの１つとなる。
【００２６】
図２の実施形態において、ＭＬＣメモリセルアレイ２４０は、複数のＭＬＣメモリセル２５０および感知増幅器（ＳＡ；ｓｅｎｓｅ  ａｍｐｌｉｆｉｅｒ）２６０を含む。感知増幅器２６０は、ＭＬＣメモリセル２５０に格納されたデータに関する信号を受信し、これを感知増幅する。ＭＬＣメモリセル２５０は、ＭＬＣフラッシュメモリのメモリセルとすることができる。
【００２７】
図２の実施形態において、信号デマッピング部（ｓｉｇｎａｌ  ｄｅｍａｐｐｉｎｇ  ｍｏｄｕｌｅ）２７０は、読取信号（ｒｅａｄ  ｓｉｇｎａｌ）の印加に回答してＭＬＣメモリセル２５０から出力された出力パルス（ｏｕｔｐｕｔ  ｐｕｌｓｅ）２４５からデマッピングされたビット列（ｄｅｍａｐｐｅｄ  ｂｉｔ  ｓｔｒｅａｍ）２７５を生成する。ＭＬＣメモリセル２５０がＮビットのＭＬＣメモリセルである場合、信号デマッピング部２７０は、２Ｎ個の散布の閾値電圧と出力パルス２４５とを比較して、出力パルス２４５に対応したデマッピングされたビット列２７５を生成する。
【００２８】
図２の実施形態において、信号デマッピング部２７０は、出力パルス２４５から硬判定（ｈａｒｄ  ｄｅｃｉｓｉｏｎ）または軟判定（ｓｏｆｔ  ｄｅｃｉｓｉｏｎ）して、デマッピングされたビット列２７５を生成することができる。硬判定は、信号デマッピング部２７０が出力パルス２４５からデマッピングされたビット列２７５のビットのロジックレベルを決定する方法（例えば、ロジックレベルがロジック「１」のような第１ロジックレベルであるか、ロジック「０」のような第２ロジックレベルであるか）である。硬判定と類似するように、軟判定も、信号デマッピング部２７０によって出力パルス２４５からデマッピングされたビット列２７５の各ビットのロジックレベルを決定する（例えば、ロジックレベルがロジック「１」のような第１ロジックレベルであるか、ロジック「０」のような第２ロジックレベルであるか）。しかしながら、軟判定は、ロジックレベルの決定が「どれほど確かであるか」を示す指示子（ｉｎｄｉｃａｔｏｒ）を含む。例えば、軟判定は、「確かな０」、「０であるが確かではない」などのような形態で決定することができる。
【００２９】
図２の実施形態において、信号デマッピング部２７０が軟判定をする場合、内部デコーダ２８０などで信号デマッピング部２７０から受信した情報に基づいて各ビットのロジックレベル（ｌｏｇｉｃ  ｌｅｖｅｌ）を決定するようになる。信号デマッピング部２７０が軟判定をする場合、信号デマッピング部２７０によって生成されたデマッピングされたビット列２７５は、通常、内部エンコーディングされたビット列２２５のｎ（＝ｋ＋ｒ１＋ｒ２）ビットよりもさらに多くのビット数を有するようになる。追加のビットは、各ビットの決定された値の正確度に関する情報または決定されたロジックレベル（例えば、軟判定結果）を含む。信号デマッピング部２７０が硬判定をする場合、信号デマッピング部２７０によって生成されたデマッピングされたビット列２７５は、内部エンコーディングされたビット列２２５に対応してｎ（＝ｋ＋ｒ１＋ｒ２）ビットを有するようになる（例えば、確実さのレベルを示す追加の軟判定なし）。
【００３０】
図２の実施形態において、内部デコーダ２８０は、デマッピングされたビット列２７５を第２デコーディング方法でデコーディングして、内部デコーディングされたビット列（ｉｎｎｅｒ  ｄｅｃｏｄｅｄ  ｂｉｔ  ｓｔｒｅａｍ）２８５を生成する。第２デコーディング方法としては、畳み込み符号デコーディングを用いることができる。内部デコーダ２８０は、ｋ＋ｒ１＋ｒ２ビットのデマッピングされたビット列２７５をデコーディングして、ｋ＋ｒ１ビットの内部デコーディングされたビット列２８５を生成する。内部デコーダは、第２デコーディング方法に基づいてデマッピングされたビット列２７５に含まれたエラーを検出し、検出されたエラーを訂正する。第２デコーディング方法として畳み込み符号デコーディングを用いる場合、ランダムエラーの検出および訂正に有利である。
【００３１】
図２の実施形態において、外部デコーダ２９０は、内部デコーディングされたビット列２８５を第１デコーディング方法でデコーディングして、外部デコーディングされたビット列（ｏｕｔｅｒ  ｄｅｃｏｄｅｄ  ｂｉｔ  ｓｔｒｅａｍ）２９５を生成する。外部デコーダ２９０は、第１デコーディング方法に基づいて内部デコーディングされたビット列２８５に含まれたエラーを検出し、検出されたエラーを訂正する。第１デコーディング方法は、第１エンコーディング方法に対応するデコーディング方法が用いられる。第１エンコーディング方法としてＨａｍｍｉｎｇコーディング、ＢＣＨコーディング、Ｒｅｅｄ−Ｓｏｌｏｍｏｎ（ＲＳ）コーディング、Ｇｏｌａｙコーディングなどの線形ブロックエンコーディングが用いられた場合、第１デコーディング方法もこれに対応した線形ブロックデコーディングが用いられる。例えば、第１エンコーディング方法としてＲＳコーディングによるエンコーディングを用いた場合、第１デコーディング方法もＲＳコーディングによるデコーディングを用いる。線形ブロックコーディングを用いる場合、外部デコーダ２９０は、バーストエラーの検出および訂正に有利である。
【００３２】
図２の実施形態において、内部デコーダ２８０は、デマッピングされたビット列２７５から検出されたエラーを訂正して、内部デコーディングされたビット列２８５を生成する。外部デコーダ２９０は、内部デコーディングされたビット列２８５から検出されたエラーを訂正して、外部デコーディングされたビット列２９５を生成する。例えば、エラー検出および訂正は、上述した２つの分離した動作を含んで実行することができる。したがって、ＭＬＣメモリ装置２００の読取時に読み取られたデータは、従来のＭＬＣメモリ装置から読み取られたデータよりもさらに正確であり（例えば、追加のエラーが検出／訂正されるため）、したがって高密度のＭＬＣメモリ装置２００を実現できるようになる。
【００３３】
図２の実施形態において、デコーディング方法によってエラーの検出およびエラーの訂正能力に差がある場合がある。例えば、エラーの検出は４ビットまで可能であるが、エラーの訂正は３ビットまでのみが可能な場合である。この場合、エラーが４ビット発生した場合、外部デコーダ２９０は、エラーの発生は検出することはできるが、エラーの訂正は不可能である。この場合、外部デコーダ２９０は、外部デコーディングされたビット列２９５を受信するオブジェクト（例えば、運営体制、メモリ管理プログラムなど）にエラーとして検出されたが訂正されなかったエラーに対して報告することができる。これにより、このオブジェクトは、この報告に基づいて追加的な動作を実行することによって、メモリ使用をより効率的に実行できるようになる。
【００３４】
図３は、本発明のさらに他の実施形態に係る内部エンコーダ２２０を示すブロック図である。
【００３５】
図３に示す実施形態において、内部エンコーダ２２０は、親コードエンコーダ２２２および穿孔部（ｐｕｎｃｔｕｒｉｎｇ  ｍｏｄｕｌｅ）２２４を含む。親コードエンコーダ２２２は、外部エンコーディングされたビット列２１５を畳み込み符号エンコーディングでエンコーディングして、畳み込み符号２２３を生成する。畳み込み符号エンコーディングは、現在のデータと以前のデータとの間の相互関連性を用いてエラーを検出および訂正するエンコーディングである。
【００３６】
図４は、本発明のさらに他の実施形態によって畳み込み符号エンコーディングを実行する親コードエンコーダを示す図である。本実施形態において、図４の親コードエンコーダは、図３の親コードエンコーダ２２２に対応することができる。
【００３７】
図４の実施形態において、各ブロックＴｂ４２１、４２２、４２３、４２４、２４５、４２６は、フリップフロップ（例えば、Ｄ−ｆｌｉｐｆｌｏｐ）を示すことができる。入力データ４３０は、１クロックごとに１ビットずつＤフリップフロップ４２１にシフト（ｓｈｉｆｔ）され、同じように、Ｄフリップフロップ４２１、４２２、４２３、４２４、２４５のデータもそれぞれ右側のＤフリップフロップ４２２、４２３、４２４、２４５、４２６にシフトされる。
【００３８】
図４の実施形態において、入力データ４３０は、外部エンコーディングされたビット列２１５とすることができる。演算ユニット４１１は、入力データ４３０、Ｄフリップフロップ４２２の出力、Ｄフリップフロップ４２３の出力、Ｄフリップフロップ４２５の出力、Ｄフリップフロップ４２６の出力をエクスクルーシブＯＲ（ＸＯＲ：ｅｘｃｌｕｓｉｖｅ  ＯＲ）して出力データＡ４４０を生成する演算ユニット（ｏｐｅｒａｔｉｏｎ  ｕｎｉｔ）である。演算ユニット４１２は、入力データ４３０、Ｄフリップフロップ４２１の出力、Ｄフリップフロップ４２２の出力、Ｄフリップフロップ４２３の出力、Ｄフリップフロップ４２６の出力をエクスクルーシブＯＲして出力データＢ４５０を生成する。例えば、図４の実施形態に示す親コードエンコーダは、１ビットの入力に対して２ビットの畳み込み符号エンコーディングされたコードを生成することができる。
【００３９】
実施形態において、図４の実施形態の親コードエンコーダ（例えば、畳み込み符号化エンコーダ）は、Ｋ＝７の拘束長（ｃｏｎｓｔｒａｉｎｔ  ｌｅｎｇｔｈ）を有する。拘束長は、親コードエンコーダの出力に関与する入力の総個数であるが、言い換えれば、親コードエンコーダの出力に影響を及ぼすデータが格納されたメモリの長さ（例えば、全長）である。拘束長Ｋは、レジスタの個数をｍとするとき、Ｋ＝ｍ＋１となる。例えば、拘束長が７であれば、６ビットのレジスタと１ビットの入力データで畳み込み符号化を実行する。図４に示す実施形態において、Ｄフリップフロップの数が６個であり、この６個のＤフリップフロップおよび１ビットの入力データが出力データに影響を及ぼすため、図４の畳み込み符号化エンコーダはｍ＝６となり、Ｋ＝６＋１＝７の拘束長を有することができる。
【００４０】
図５は、本発明のさらに他の実施形態に係る穿孔部の動作を示す図である。
【００４１】
図５に示す実施形態において、図４の親コードエンコーダを用いて、７ビットの入力データ５１０が１４ビットの畳み込み符号５２０で生成される。例えば、図４の親コードエンコーダは、１／２の符号化率を有する畳み込み符号化エンコーダである。図３の親コードエンコーダ２２２として図４の畳み込み符号化エンコーダが用いられれば、外部エンコーディングされたビット列２１５は入力データ４３０および入力データ５１０であり、畳み込み符号２２３は畳み込み符号５２０となる。
【００４２】
図５に示す実施形態において、穿孔部２２４は、畳み込み符号２２３の一部ビットを穿孔して、内部エンコーディングされたビット列２２５を生成する。穿孔とは、入力されたデータのうちの一部ビットを減らしたり除去したりすることを言う。例えば、穿孔部２２４は、予め定められた規則に応じて畳み込み符号２２３の一部ビットを減らしたり除去したりして、内部エンコーディングされたビット列２２５を生成する。図５に示すビット列が図３によって生成された場合、外部エンコーディングされたビット列５１０は、親コードエンコーダ２２２によって１／２の符号化率で畳み込み符号５２０としてエンコーディングされる。外部エンコーディングされたビット列５１０が７ビットであれば、畳み込み符号５２０は１４ビットで構成される。畳み込み符号５２０のうちで予め定められた規則に応じてＡ４、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ５の６つのビットを減らしたり除去したりして、８ビットの内部エンコーディングされたビット列５３０を生成する。したがって、図５に係る内部エンコーダは、７／８の符号化率を有するようになる。
【００４３】
図５の実施形態の穿孔部（ｐｕｎｃｔｕｒｉｎｇ  ｍｏｄｕｌｅ）２２４の動作は、６つのビットを減らしたり除去したりしたが、本発明の他の実施形態では、他の個数のビットを減らしたり除去したりできるものとして理解される。このように、本発明の実施形態は、穿孔部２２４を含んで内部エンコーディングの符号化率を調節することができる。例えば、本発明の実施形態によれば、穿孔を用いてマルチレベルセルメモリにエラー訂正方法を適用しながらも、このようなエラー訂正方法によるオーバーヘッドの大きさを調節することができる。したがって、本発明の実施形態によれば、１セルあたりに格納するビットの数とは関係なく、所望する符号化率を得ることができる。
【００４４】
本発明のさらに他の実施形態によれば、図２を参照しながら、内部エンコーダ２２０は、穿孔部２２４を除外することができる（例えば、内部親コードエンコーダ２２２は含むが、穿孔部２２４は含まれない場合がある）。この場合、親コードエンコーダ２２２は、外部エンコーディングされたビット列２１５を畳み込み符号エンコーディングでエンコーディングして畳み込み符号２２３を生成するだけで、穿孔は実行しない。
【００４５】
図６は、本発明のさらに他の実施形態に係るメモリセルアレイを示す図である。実施形態において、図６のメモリセルアレイは、フラッシュメモリのＭＬＣメモリセルアレイとすることができる。図６において、Ｂ／Ｌ０〜Ｂ／Ｌ５１１はビットラインを示し、Ｗ／Ｌ０〜Ｗ／Ｌ１０２３はワードラインを示す。Ｓ／Ｌはソースラインを示し、ＭＣはメモリセルを示す。図６に示すメモリセルアレイのメモリセルは、１つのメモリセルに２ビット以上のデータを格納することができるマルチレベルセル（ＭＬＣ）メモリセルである。
【００４６】
図７および図８は、本発明のさらに他の実施形態に係る信号マッピング部２３０および信号デマッピング部２７０の動作を説明するための図である。具体的に、図７は、１つのメモリセルが２ビットのデータを格納するための信号マッピングを説明するための図であり、図８は、１つのメモリセルに４ビットのデータを格納するための信号マッピングを説明するための図である。
【００４７】
図７の実施形態において、信号デマッピング部２７０は、ＭＬＣメモリセル２５０から得られた電圧が第１範囲（例えば、０．５〜１．０ボルト）であれば、第１ロジックシーケンス（例えば、ロジック「１１」）と判断する。ＭＬＣメモリセル２５０から得られた電圧が第２範囲（例えば、１．５〜２．０ボルト）であれば、信号デマッピング部２７０は、第２ロジックシーケンス（例えば、ロジック「１０」）と判断する。ＭＬＣメモリセル２５０から得られた電圧が第３範囲（例えば、２．５〜３．０ボルト）であれば、信号デマッピング部２７０は、第３ロジックシーケンス（ｌｏｇｉｃ  ｓｅｑｕｅｎｃｅ）（例えば、ロジック「０１」）と判断する。ＭＬＣメモリセル２５０から得られた電圧が第４範囲（例えば、３．５〜４．０ボルト）であれば、信号デマッピング部２７０は、第４ロジックシーケンス（ロジック「００」）と判断する。ＭＬＣメモリセル２５０に格納されたデータは、読取（ｒｅａｄ）動作時にセル電流またはセル電圧の差によって区分される。
【００４８】
図７の実施形態において、信号マッピング部２３０は、内部エンコーディングされたビット列２２５のビットが第１ロジックシーケンス（例えば、ロジック「１１」）であれば、ＭＬＣメモリセル２５０が格納する電圧レベルが第１範囲（例えば、０．５〜１．０ボルト）となるようにプログラムパルスをＭＬＣメモリセル２５０に印加する。このとき、プログラムパルスは、ＰＡＭ（ｐｕｌｓｅ  ａｍｐｌｉｔｕｄｅ  ｍｏｄｕｌａｔｉｏｎ）によって生成する。信号マッピング部２３０は、内部エンコーディングされたビット列２２５のビットが第２ロジックシーケンス（例えば、ロジック「１０」）であれば、ＭＬＣメモリセル２５０が格納する電圧レベルが第２範囲（例えば、１．５−２．０ボルト）となるようにプログラムパルスをＭＬＣメモリセル２５０に印加する。信号マッピング部２３０は、内部エンコーディングされたビット列２２５のビットが第３ロジックシーケンス（例えば、ロジック「０１」）であれば、ＭＬＣメモリセル２５０が格納する電圧レベルが第３範囲（例えば、２．５〜３．０ボルト）となるようにプログラムパルスをＭＬＣメモリセル２５０に印加する。信号マッピング部２３０は、内部エンコーディングされたビット列２２５のビットが第４ロジックシーケンス（例えば、ロジック「００」）であれば、ＭＬＣメモリセル２５０が格納する電圧レベルが第４範囲（例えば、３．５〜４．０ボルト）となるようにプログラムパルスをＭＬＣメモリセル２５０に印加する。
【００４９】
図７の実施形態において、ＭＬＣメモリセル２５０がＭＬＣフラッシュメモリセルである場合、第３ロジックシーケンス（例えば、ロジック「０１」）をＭＬＣメモリセル２５０に記録する場合について説明する。信号マッピング部２３０は、記録するＭＬＣメモリセル２５０を消去させた状態でワードライン電圧を少しずつ増加させながらＭＬＣメモリセル２５０の電圧を陽の方向に少しずつ増加させ、メモリセルの閾値電圧が第３範囲（例えば、２．５〜３．０ボルト）に到達したか否かを検証（ｖｅｒｉｆｙ）する。したがって、第３ロジックシーケンス（例えば、ロジック「０１」）をＭＬＣメモリセル２５０に記録するために、ＭＬＣメモリセル２５０は、第１ロジックシーケンス（例えば、ロジック「１１」）および第２ロジックシーケンス（例えば、ロジック「１０」）の状態を順に経てロジック「０１」の状態となる。
【００５０】
さらに他の実施形態において、図８は、信号マッピング部２３０がグレイコーディングによってＭＬＣメモリセル２５０にデータを記録する動作を説明するための図である。グレイコーディングは、隣接する符号間のハミング距離（Ｈａｍｍｉｎｇ  ｄｉｓｔａｎｃｅ）を１とする符号化（ｃｏｄｉｎｇ）方法である。図８に示すように、隣接した２つの符号、例えば符号「１１００」と符号「１１０１」には１ビットだけの差がある。信号デマッピング部２７０において、ＭＬＣメモリセル２５０から得られた電圧レベルで符号を得るとき、電圧レベルが符号「１１００」と符号「１１０１」の中間値である場合、信号デマッピング部２７０は、これを符号「１１００」と符号「１１０１」のうちの１つの値として決定するが、最悪の場合には１ビットのみが異なるようになる。もし隣接した符号のビット差が２ビット以上になれば、２ビット以上が異なるようになる。したがって、もしグレイコーディングが用いられれば、信号デマッピング部２７０で誤った符号として決定されたとしても、そのエラーは最小化されたり減少したりする。
【００５１】
図８の実施形態において、信号マッピング部２３０は、１つのメモリセルに４ビットのデータを格納する。ＭＬＣメモリセル２５０がｍビットメモリセルである場合、信号マッピング部２３０は、内部エンコーディングされたビット列２２５によって２ｍＰＡＭ（Ｐｕｌｓｅ  Ａｍｐｌｉｔｕｄｅ  Ｍｏｄｕｌａｔｉｏｎ）に基づいて生成が可能な２ｍ個のレベルのうちの１つを決定し、このように決定されたレベルのプログラムパルスをＭＬＣメモリセル２５０に印加する。
【００５２】
図７および図８の実施形態に示すように、１つのメモリセルに対する電圧ウィンドウは相対的に制限されている。図７および図８の場合、ＭＬＣメモリセルの電圧ウィンドウが−２．５ボルト（マイナス２．５ボルト）から４ボルトまでである。このように制限された電圧ウィンドウ内において、図７は１つのＭＬＣメモリセルに２つのビットを格納しなければならないため４つの散布を形成し、図８は１つのＭＬＣメモリセルに４つのビットを格納しなければならないため１６個の散布を形成する。このように、１つのメモリセルにｍ個のビットを格納するために２ｍ個の散布を形成するが、電圧ウィンドウ（ｖｏｌｔａｇｅ  ｗｉｎｄｏｗ）は制限されているため、ｍの増加によって隣接したビット間の閾値電圧の差は減少するようになる。したがって、ＭＬＣメモリセルへの記録および読取時のエラー発生の可能性が高くなるが、本発明の一実施形態は、内部エンコーディングと外部エンコーディングの２段階を連結接続した連接エンコーディングを用いてこのようなエラーを検出および訂正することで、１つのメモリセルに４ビット以上を格納する高密度ＭＬＣセルメモリ装置を可能にする。
【００５３】
図９は、本発明のさらに他の実施形態によって軟判定を実行する図２の信号デマッピング部２７０の動作を説明するための図である。
【００５４】
図９の実施形態において、信号マッピング部２３０がグレイコーディングを用いた場合、信号デマッピング部２７０もグレイコーディングを用いる。信号デマッピング部２７０が軟判定を実行する場合、信号デマッピング部２７０によって生成されるデマッピングされたビット列２７５は、グレイコーディングによって生成されたビット列および数式１によって追加で生成されたビット列を含んで生成することができる。
【００５５】
【数１】
0005399916.tif 000002
【００５６】
図９の実施形態において、数式１を参照すれば、α（１）（χ）は、ＭＬＣメモリセル２５０から出力された出力パルスが図９に示す散布に含まれる場合、図９に示す値を有する関数である。例えば、ＭＬＣメモリセル２５０から出力された出力パルスが１．７５ボルト以上の値を有すれば、α（１）（χ）の値は１．７５となる。もし、ＭＬＣメモリセル２５０から出力された出力パルスが０．５ボルトの値を有すれば、α（１）（χ）の値は０．５となる。χは出力パルスの電圧値である。α（２）（χ）は、ＭＬＣメモリセル２５０から出力された出力パルスが図９に示す散布に含まれる場合、図９に示す値を有する関数である。例えば、ＭＬＣメモリセル２５０から出力された出力パルスが２．０ボルト以下の値を有すれば、α（２）（χ）の値は２．０となる。他の実施形態において、ＭＬＣメモリセル２５０から出力された出力パルスが３．０ボルトの値を有すれば、α（２）（χ）の値は３．０となる。
【００５７】
実施形態において、数式１による値は、信号デマッピング部２７０によって決定されたビット値の正確度に関する付加情報となる。このように、信号デマッピング部２７０が出力パルス２４５から軟判定されたデマッピングされたビット列２７５を生成すれば、内部デコーダ２８０は、このような付加情報および自身によって得られた他の情報を用いて、軟判定されたデマッピングされたビット列２７５のうちからグレイコーディングによって生成されたビット列を明確に決定する。
【００５８】
図１０は、本発明のさらに他の実施形態に係る図２の内部デコーダ２８０を示すブロック図である。
【００５９】
図１０の実施形態において、内部デコーダ２８０は、非穿孔部（ｄｅｐｕｎｃｔｕｒｉｎｇ  ｍｏｄｕｌｅ）２８２および親コードデコーダ（ｍｏｔｈｅｒ  ｃｏｄｅ  ｄｅｃｏｄｅｒ）２８４を含む。非穿孔部２８２は、デマッピングされたビット列２７５に穿孔されたビットを付加して、非穿孔されたビット列（ｄｅｐｕｎｃｔｕｒｅｄ  ｂｉｔ  ｓｔｒｅａｍ）２８３を生成する。非穿孔部２８２の非穿孔（ｄｅｐｕｎｃｔｕｒｉｎｇ）は、穿孔部２２４の穿孔に対応する。非穿孔とは、穿孔によって除去されたビットを付加して本来のビット列を復旧することをいう。例えば、穿孔部２２４が予め定められた規則に応じて畳み込み符号２２３の一部ビットを除去して内部エンコーディングされたビット列２２５を生成した場合、非穿孔部２８２は、この規則に対応してデマッピングされたビット列２７５に穿孔されたビットを付加して、非穿孔されたビット列２８３を生成する。
【００６０】
図１０の実施形態において、親コードデコーダ２８４は、非穿孔されたビット列２８３をビタビデコーディング（Ｖｉｔｅｒｂｉ  ｄｅｃｏｄｉｎｇ）でデコーディングして、内部デコーディングされたビット列２８５を生成する。本実施形態において、ビタビデコーディングは、親コードエンコーダ２２２の畳み込み符号エンコーディングに対応する。
【００６１】
図１１は、本発明の一実施形態に係る図１０の非穿孔部２８２および親コードデコーダ２８４の動作を説明するための図である。
【００６２】
図１１の実施形態を参照すれば、信号デマッピング部２７０から出力されたデマッピングされたビット列１１１０は７ビットを有する。デマッピングされたビット列１１１０は、非穿孔部２８２によって非穿孔されたビット列１１２０として生成される。図１１の実施形態に示すように、非穿孔されたビット列１１２０は、穿孔されたビット列（例えば、図５を参照）が復旧され、１４ビットを有する。例えば、図５で穿孔されたＡ４、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ５の６つのビットが付加された。親コードデコーダ２８４は、非穿孔されたビット列１１２０をデコーディングして、７ビットの内部デコーディングされたビット列１１３０を生成する。
【００６３】
本発明のさらに他の実施形態によれば、内部デコーダ２８０は、非穿孔部２８２なく親コードデコーダ２８４のみで構成することができる。この場合、内部デコーダ２８０は、デマッピングされたビット列２７５をデコーディング（例えば、ビタビデコーディング）して内部デコーディングされたビット列２８５を生成するだけで、非穿孔は実行しない。
【００６４】
なお、本発明に係る実施形態は、コンピュータにより実現される多様な動作を実行するためのプログラム命令を含むコンピュータ読取可能な記録媒体を含む。当該記録媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含むこともでき、記録媒体およびプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、フロプティカルディスクのような磁気−光媒体、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。また、記録媒体は、プログラム命令、データ構造などを保存する信号を送信する搬送波を含む光または金属線、導波管などの送信媒体でもある。プログラム命令の例としては、コンパイラによって生成されるような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行され得る高級言語コードを含む。
【００６５】
例えば、外部エンコーダ２１０、内部エンコーダ２２０、信号マッピング部２３０、信号デマッピング部２７０、内部デコーダ２８０、および外部デコーダ２９０のうちの一部をコンピュータプログラムによって実現することができる。したがって、このような機能を含むコンピュータプログラムも、本発明のさらに他の実施形態に含まれる。
【００６６】
本発明のさらに他の実施形態において、メモリセルのビット密度（ｂｉｔ  ｄｅｓｉｔｙ）は、向上した安全性を有して増加することができる。例えば、従来のメモリ装置は、与えられたセルに含まれるビットの数の増加によって増大する信頼性の問題およびエラーのために、１つのメモリに４ビット以上を格納することができなかった。しかしながら、本発明の実施形態に係るメモリセルは、４ビットメモリセルのような低密度の実現に制限されない。他の実施形態において、本発明の実施形態によって提供されるメモリ密度の増加による利益は、実施形態の実現と関連したオーバーヘッド（例えば、追加的な回路）よりもさらに大きい。
【００６７】
他の実施形態において、マルチレベルメモリに適用された従来のエラー訂正方法は、低エラー率（ｒａｗ  ｅｒｒｏｒ  ｒａｔｅ）が高い場合、例えばビットエラー率（ＢＥＲ：ｂｉｔ  ｅｒｒｏｒ  ｒａｔｅ）が０．０１よりも大きい場合には適用が不可能であった。しかしながら、本発明の実施形態に係るエラー訂正方法は、低エラー率が高い場合（例えば、ＢＥＲが０．０１よりも大きい場合）にも有効である。また、従来技術において、ＭＬＣメモリセルの１つのメモリセルにあるビットの数を増加させれば、隣接したビット間の閾値電圧の差は減少するようになり、これによって読取失敗率は増加するが、本発明の実施形態によればこのような問題は解決される。
【００６８】
また、本発明のさらに他の実施形態において、穿孔を用いてマルチレベルセルメモリにエラー訂正方法を適用しながらも、このエラー訂正方法によるオーバーヘッドの大きさを調節することができる。したがって、１セルあたりに格納されるビットの数とは関係なく、所望する符号化率を得ることができる。例えば、１つのメモリセルに格納されるビット数を収容するために符号化率が調整されたり微細調整（ｆｉｎｅ−ｔｕｎｅｄ）されたりする（例えば、適当なエラー訂正対性能率（ｐｅｒｆｏｒｍａｎｃｅ  ｒａｔｉｏ）を達成することができる）。
【００６９】
本発明のさらに他の実施形態において、マルチレベルセルメモリで読み取られた信号に含まれたエラーが訂正されることにより、フラッシュメモリの性能特徴（例えば、信頼性、量産性（ｐｒｏｄｕｃｔｉｖｉｔｙ）など）が高まる。
【００７０】
本発明のさらに他の実施形態において、マルチレベルセルメモリにおいて、ランダムエラーおよびバーストエラーすべてに強いエラー訂正方法を実現することができる。
【００７１】
以上、本発明の実施形態について説明した。このような実施形態は、多様な方法に変形が可能であることが明白である。例えば、実施形態に係る方法は、ハードウェアおよび／またはソフトウェアで実現することができる。ハードウェア／ソフトウェア実現は、プロセッサ、製造部品の組み合わせを含むことができる。製造部品は、格納媒体、実行コンピュータプログラム（例えば、コンピュータ読取可能な媒体に格納されたコンピュータプログラム製品）を含むことができる。実行可能なコンピュータプログラムは、上述した動作や機能を実行する命令語を含むことができる。実行可能なコンピュータプログラムは、外部から供給される信号で実現することもできる。
【００７２】
また、上述した第１ロジックレベルおよび第２ロジックレベルは、本発明の実施形態において、それぞれさらに高いロジックレベルおよびさらに低いロジックレベルに対応するものとして理解することができる。代案的に、本発明のさらに他の実施形態において、第１ロジックレベル／状態および第２ロジックレベル／状態は、さらに低いロジックレベルおよびさらに高いロジックレベルにそれぞれ対応することができる。同じように、本発明のさらに他の実施形態において、第１ロジックシーケンスおよび第２ロジックシーケンスは、第１ロジックレベルおよび第２ロジックレベル（例えば、１０００、１０１０など）のあらゆる組み合わせに対応することができ、上述した実施形態に制限されない。
【００７３】
上述したように、本発明の好ましい実施形態を参照して説明したが、該当の技術分野において熟練した当業者にとっては、特許請求の範囲に記載された本発明の思想および領域から逸脱しない範囲内で、本発明を多様に修正および変更させることができることを理解することができるであろう。すなわち、本発明の技術的範囲は、特許請求の範囲に基づいて定められ、発明を実施するための最良の形態により制限されるものではない。
【符号の説明】
【００７４】
２００      マルチレベルセルメモリ装置
２１０      外部エンコーダ（ｏｕｔｅｒ  ｅｎｃｏｄｅｒ）
２２０      内部エンコーダ（ｉｎｎｅｒ  ｅｎｃｏｄｅｒ）
２３０      信号マッピング部（ｓｉｇｎａｌ  ｍａｐｐｉｎｇ  ｍｏｄｕｌｅ）
２４０      ＭＬＣメモリセルアレイ（ＭＬＣ  ｍｅｍｏｒｙ  ｃｅｌｌ  ａｒｒａｙ）
２７０      信号デマッピング部（ｓｉｇｎａｌ  ｄｅｍａｐｐｉｎｇ  ｍｏｄｕｌｅ）
２８０      内部デコーダ（ｉｎｎｅｒ  ｄｅｃｏｄｅｒ）
２９０      外部デコーダ（ｏｕｔｅｒ  ｄｅｃｏｄｅｒ）
【図１】
0005399916.tif 000003
【図２】
0005399916.tif 000004
【図３】
0005399916.tif 000005
【図４】
0005399916.tif 000006
【図５】
0005399916.tif 000007
【図６】
0005399916.tif 000008
【図７】
0005399916.tif 000009
【図８】
0005399916.tif 000010
【図９】
0005399916.tif 000011
【図１０】
0005399916.tif 000012
【図１１】
0005399916.tif 000013