(57)【要約】【課題】  本実施形態は、信頼性の向上可能なメモリシステムを提供する。【解決手段】本実施形態のメモリシステムは、複数の不揮発性メモリセルと、第１方法でｎ個（ｎは２以上の自然数）の第１ユニットに分割し、前記第１方法と異なる第２方法で第２ユニットに分割するデータ分割部と、第１パリティを生成し第２パリティを生成するパリティ生成部と、前記１ページのデータを第１方法でｎ個の第１ユニットに分割して誤りデータを訂正するとき前記第１パリティに基づいて誤りデータを訂正し、前記１ページのデータを第２方法でｍ個の第２ユニットに分割して誤りデータを訂正するとき、前記第２パリティに基づいて誤りデータを訂正する誤り訂正部とを備える。【選択図】図３
2014002615.tif 000002
【特許請求の範囲】
【請求項１】
複数の不揮発性メモリセルと、
前記複数の不揮発性メモリセルから一括して読み出す又は書き込む１ページのデータを第１方法でｎ個（ｎは２以上の自然数）の第１ユニットに分割し、前記第１方法と異なる第２方法で前記１ページのデータをｍ個（ｍは２以上の自然数）の第２ユニットに分割するデータ分割部と、
各第１ユニットのデータに含まれる誤りデータを訂正するための第１パリティを生成し、各第２ユニットのデータに含まれる誤りデータを訂正するための第２パリティを生成するパリティ生成部と、
前記１ページのデータを第１方法でｎ個の第１ユニットに分割して誤りデータを訂正するとき前記第１パリティに基づいて誤りデータを訂正し、前記１ページのデータを第２方法でｍ個の第２ユニットに分割して誤りデータを訂正するとき、前記第２パリティに基づいて誤りデータを訂正する誤り訂正部と
を備えることを特徴とするメモリシステム。
【請求項２】
前記第１方法は、カラムアドレスの昇降順に第１ユニットを形成し前記１ページのデータをｎ個の第１ユニットに分割する方法であり、前記第２方法は、前記第１ユニットそれぞれのカラムアドレスの範囲をずらして第２ユニット形成し前記１ページのデータをｎ個と同数のｍ個の第２ユニットに分割する方法であることを特徴とする請求項１記載のメモリシステム。
【請求項３】
前記誤り訂正部は、前記１ページのデータを前記第１パリティに基づいて誤りデータを訂正した場合であって、誤りデータを訂正できず訂正エラーとなるとき、前記１ページのデータを前記第２パリティに基づいて誤りデータを訂正することを特徴とする請求項１又は請求項２記載のメモリシステム。
【請求項４】
前記第１パリティ及び前記第２パリティが複数の不揮発性メモリセルのいずれかに保持されることを特徴とする請求項１乃至請求項３いずれか１項に記載のメモリシステム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、例えばＮＡＮＤ型フラッシュメモリを含むメモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリに代表される不揮発性半導体メモリを備えた不揮発性半導体記憶システムでは、読み出し時に生じるデータ誤りを訂正するために、誤り訂正符号（ＥＣＣ：Error Correcting Code）が利用される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１８０９１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、信頼性の向上可能なメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
実施形態に係るメモリシステムによれば、  複数の不揮発性メモリセルと、前記複数の不揮発性メモリセルから一括して読み出す又は書き込む１ページのデータを第１方法でｎ個（ｎは２以上の自然数）の第１ユニットに分割し、前記第１方法と異なる第２方法で前記１ページのデータをｍ個（ｍは２以上の自然数）の第２ユニットに分割するデータ分割部と、各第１ユニットのデータに含まれる誤りデータを訂正するための第１パリティを生成し、各第２ユニットのデータに含まれる誤りデータを訂正するための第２パリティを生成するパリティ生成部と、前記１ページのデータを第１方法でｎ個の第１ユニットに分割して誤りデータを訂正するとき前記第１パリティに基づいて誤りデータを訂正し、前記１ページのデータを第２方法でｍ個の第２ユニットに分割して誤りデータを訂正するとき、前記第２パリティに基づいて誤りデータを訂正する誤り訂正部とを備える。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係るメモリシステムの全体構成例である。
【図２】第１実施形態に係るＥＣＣ解析部を示すブロック図である。
【図３】第１実施形態に係るユーザデータとパリティを示す模式図である。
【図４】第１実施形態に係るロードシーケンスを示すフローチャート図。
【図５】図５（ａ）は、第１実施形態に係る誤り訂正方法であって、第１パリティを用いて誤り訂正する方法を示す模式図であり、図５（ｂ）は、第１実施形態に係る誤り訂正方法であって、第２パリティを用いて誤り訂正する方法を示す模式図である。
【図６】比較例に係る誤り訂正方法を示す模式図である。
【発明を実施するための形態】
【０００７】
以下、本実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。ただし、図面は模式的なものであることに留意すべきである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
【０００８】
[第１の実施形態]  
第１の実施形態に係るメモリシステムについて、図１のブロック図を用いて第１の実施形態に係るメモリシステムの全体構成例について説明する。説明の便宜上、本実施形態のメモリシステムは、ＮＡＮＤ型フラッシュメモリとそれを制御するコントローラを有するメモリシステムであるものとして説明をするが、これに限定されることなく、例えばＮＡＮＤ型フラッシュメモリとコントローラに外部のホスト機器を含めてメモリシステムとしてもよい。なお、コントローラの機能を外部のホスト機器が行ってもよい。また、ＮＡＮＤ型フラッシュメモリ以外のメモリセルを持つデバイスでも良い。
【０００９】
本実施形態のメモリシステムは、ＮＡＮＤ型フラッシュメモリ、コントローラ、外部のホスト機器のいずれかを組み合わせた系で同様の効果を有する形態も含む。
【００１０】
１．＜全体構成例＞  
第１の実施形態に係るメモリシステムの全体構成例について説明する。このメモリシステムは、具体的な一構成例としてＮＡＮＤ型フラッシュメモリと、ＥＣＣ回路と、これらを制御するコントローラと、を備える。すなわち、以下説明ではＮＡＮＤ型フラッシュメモリとＥＣＣとコントローラとを備えた構成を、メモリシステムとする。
【００１１】
図示するように、本実施形態に係るメモリシステム１は、大まかにはＮＡＮＤ型フラッシュメモリ２、コントローラ部３、及び入出力部４を備えている。これらＮＡＮＤ型フラッシュメモリ２、コントローラ部３、及び入出力部４は、例えば同一の半導体基板上に形成され、１つのチップに集積されている。以下、各ブロックの詳細について説明する。
【００１２】
１．１＜ＮＡＮＤ型フラッシュメモリ２＞  
ＮＡＮＤ型フラッシュメモリ２は、メモリシステム１の主記憶部として機能する。図１に示すようにＮＡＮＤ型フラッシュメモリ２は、メモリセルアレイ（図中、NAND Array）１０、ロウデコーダ（図中、Row Dec）１１、センスアンプ（図中、Sense Amp）１２、ページバッファ（図中、NAND Page Buffer）１３、電圧発生回路（図中、Voltage Supply）１４、シーケンサ（図中、NAND Sequencer）１５、及びオシレータ（図中、OSC）１６、１７を備えている。
【００１３】
１．１．１＜メモリセルアレイ１０＞  
メモリセルアレイ１０は外部からのデータを保持し、保持するこのデータを外部に出力する機能を有する。メモリセルアレイ１０は、複数のメモリストリングＭＳを有する。
【００１４】
各々のメモリセルＭＣは、例えば、電荷蓄積層に注入された電子の多寡によるトランジスタの閾値電圧の変化に応じて、１ビットのデータ（“０”データ又は“１”データのいずれか）を保持することが可能である。なお、閾値電圧の制御を細分化し、各々のメモリセルＭＣに２ビット以上のデータを保持する構成としても良い。例えば、電荷蓄積層に電荷が蓄積されると、メモリセルＭＣは“０”データを保持し、この電荷が抜け、消去状態とされると、メモリセルＭＣは“１”データを保持するものとする。
【００１５】
また各ブロックＢＬＫにおいて、一部のメモリストリングＭＳは、エラー訂正用の情報（パリティ等）を保持するために用いられ、残りのメモリストリングＭＳがユーザデータを保持するために用いられるのが一般的である。
【００１６】
１．１＜入出力部４＞  
次に、入出力部４について説明する。入出力部４は、ＥＣＣ部７０、インターフェース部９０（後述するＰＡＤ）、及びアクセスコントローラ９９を備えている。
【００１７】
本実施形態に係るメモリシステム１では、ＮＡＮＤ型フラッシュメモリ２が主記憶部として機能する。従って、シーケンサ１５はアドレス／コマンド発生回路８５からロードコマンドを受け、ＮＡＮＤ型フラッシュメモリ２からデータを外部に読み出す際には、まずＮＡＮＤ型フラッシュメモリ２のメモリセルアレイ１０から読み出されたデータが、ページバッファ１３を介して入出力部４のインターフェース部９０に転送され、その結果、図示せぬホスト機器に出力される。
【００１８】
他方、シーケンサ１５は、アドレス／コマンド発生回路８５からプログラムコマンドを受け、データをＮＡＮＤ型フラッシュメモリ２にデータを記憶させる際には、まずホスト機器から与えられたデータが、インターフェース部９０を介してページバッファ１３へ転送されて、メモリセルアレイ１０に書き込まれる。
【００１９】
以下、ＥＣＣ部７０の構成について説明する。
【００２０】
１．１．１＜ＥＣＣ部７０＞  
ＥＣＣ部７０は、データについてのエラー検出及びエラー訂正、並びにパリティの生成（以下、これらをまとめてＥＣＣ処理と呼ぶことがある）を行う。すなわち、ロード動作時には、ＮＡＮＤ型フラッシュメモリ２から読み出されたデータについてエラーの検出及び訂正を行う。他方、プログラム動作時には、プログラムすべきデータについてパリティの生成を行い、生成したパリティをメモリストリングＭＳに格納する。ＥＣＣ部７０は、ＥＣＣ解析部７１、ＥＣＣ制御部７２、及びＥＣＣデコーダ７３を備えている。
【００２１】
１．１．１．１＜ＥＣＣ解析部７１＞  
ＥＣＣ解析部７１は、ページバッファ１３に保持されるデータを用いてＥＣＣ処理を行う。 ＥＣＣ解析部７１は、ロード時にはメモリストリングＭＳが保持するパリティを用いてエラー検出を行う。エラーが発見された際には、これを訂正する。他方、プログラム時にはパリティを生成し、これをメモリストリングＭＳに格納する。
【００２２】
ＥＣＣ解析部７１は、図２のブロック図に示すように、データ分割部７１ａと、パリティ生成部７１ｂ、誤り検出部７１ｃを含む。
【００２３】
データ分割部７１ａは、ロード時にはメモリストリングＭＳが保持する１ページのユーザデータを複数のユニットに分割する機能を有する。ここで、ユニットとはエラー検出を行い、訂正する単位のデータを示す。ユニットごとに対応するパリティを用いて、ユニットごとに誤り訂正を行うことができる。パリティの個数とユニットの個数は同数である。
【００２４】
ロード時には、データ分割部７１ａは２種類の方法でユーザデータを複数のユニットに分割する。複数のユニットに分割する方法について、図３の模式図を用いて説明する。なお、図３のユーザデータは１ページのユーザデータを模式したものであり、カラムアドレス順にデータを並べたものである。ユーザデータを４個のユニットに分割する例を用いて説明する。
【００２５】
（１）第１方法（複数のユニットに分割する方法）
図３に示すように、データ分割部７１ａは、カラムアドレス順に４個のユニットに分割する。例えばユーザデータが２０４８バイトである場合、カラムアドレス０〜カラムアドレス５１１までのデータをユニットＵＤ１とし、カラムアドレス５１２〜１０２３までのデータをユニットＵＤ２とし、カラムアドレス１０２４〜カラムアドレス１５３５までのデータをユニットＵＤ３とし、カラムアドレス１５３６〜２０４７までのデータをユニットＵＤ４とする。説明の便宜上、ユニットＵＤ１〜ＵＤ４を第１ユニットと呼ぶ。
【００２６】
（２）第２方法（複数のユニットに分割する方法）
図３に示すように、データ分割部７１ａは、第１方法で生成されたユニットＵＤ１〜ＵＤ４それぞれのカラムアドレスの範囲をずらして４個のユニットに分割する。例えばユーザデータが２０４８バイトである場合、ユニットＵＤ１〜ＵＤ４のカラムアドレスの範囲を２５６バイトずらして、カラムアドレス２５６〜カラムアドレス７６７までのデータをユニットＵＤａとし、カラムアドレス７６８〜１２７９までのデータをユニットＵＤｂとし、カラムアドレス１２８０〜カラムアドレス１７９１までのデータをユニットＵＤｃとし、カラムアドレス０〜２５５、１７９２〜２０４７までのデータをユニットＵＤｄとする。説明の便宜上、ユニットＵＤａ〜ＵＤｄを第２ユニットと呼ぶ。
【００２７】
なお、説明の便宜上、図３では第１方法、第２方法もユーザデータを４個のユニットに分割する例を用いて説明したが、この場合に限定されることなく、８個、１６個、３２個等、ユニットに分割する個数はいくらでもよい。また、第１方法のユニットの個数と、第２方法のユニットの個数は等しい場合に限られず、第１方法のユニットの個数をｎ個（ｎは２以上の自然数）とし、第２方法のユニットの個数をｍ個（ｍも２以上の自然数であるが、ｎとは異なる）としてもよい。
【００２８】
プログラム時にもページバッファ１３から入力された１ページのユーザデータを複数のユニットに分割する。これは、パリティ生成部７１ａはユニットごとにパリティを生成するためである。詳細は後述する。
【００２９】
次に、パリティ生成部７１ｂについて説明する。パリティ生成部７１ｂは、データ分割部７１ａにより分割されたユニットごとにパリティを生成する機能を有する。パリティは、誤り訂正を行う能力により定まり、ユニット内の訂正可能なビット数（例えば、１ビット）により定まる。
【００３０】
具体的に図３の模式図を用いて説明する。
【００３１】
図３に示すように、データ分割部７１ａが第１方法で４個のユニットにユーザデータを分割したとき、パリティ生成部７１ｂは４個のユニットＵＤ１〜ＵＤ４それぞれに対応するパリティＰ１〜Ｐ４を生成する。パリティＰ１はユニットＵＤ１に対応し、パリティＰ２はユニットＵＤ２に対応し、パリティＰ３はユニットＵＤ３に対応し、パリティＰ４はユニットＵＤ４に対応する。図示の便宜上、パリティＰ１〜Ｐ４を第１パリティと呼ぶ。
【００３２】
データ分割部７１ａが第２方法で４個のユニットにユーザデータを分割したとき、パリティ生成部７１ｂは４個のユニットＵＤａ〜ＵＤｄそれぞれに対応するパリティＰａ〜Ｐｄを生成する。パリティＰａはユニットＵＤａに対応し、パリティＰｂはユニットＵＤｂに対応し、パリティＰｃはユニットＵＤｃに対応し、パリティＰｄはユニットＵＤｄに対応する。図示の便宜上、パリティＰａ〜Ｐｄを第２パリティと呼ぶ。
【００３３】
第１方法でｎ個のユニットにユーザデータを分割するとき、パリティ生成部７１ｂはｎ個のパリティ（第１パリティ）を生成し、第２方法でｍ個のユニットにユーザデータを分割するとき、パリティ生成部７１ｂはｍ個のパリティ（第２パリティ）を生成する。
【００３４】
第１パリティ及び第２パリティは、プログラム時に、いずれかのＮＡＮＤストリングＭＳに保持される。
【００３５】
誤り検出部７１ｃは、ｎ個のユニットと第１パリティの対応関係及び、ｍ個のユニットと第２パリティの対応関係に基づいて、第１パリティまたは第２パリティを選択して用いることで、ユニットごとに誤り検出を行う。
【００３６】
１．１．１．２＜ＥＣＣ制御部７２＞  
ＥＣＣ制御部７２は、ＥＣＣ解析部７１を制御する。例えば、ＥＣＣ制御部７２は、ユーザデータを複数のユニットに分割する方法を制御し、ＥＣＣ解析部７１のデータ分割部７１ａに制御信号を供給する。ＥＣＣ制御部７２は、データ分割部７１ａのユーザデータ分割方法に応じて、第１パリティまたは第２パリティを生成するようパリティ生成部７１ｂを制御する。ＥＣＣ制御部７２は、データ分割部７１ａのユーザデータ分割方法に応じて第１パリティまたは第２パリティを選択して、第１パリティ又は第２パリティを用いて誤り検出をするよう誤り検出部７１ｃを制御する。
【００３７】
１．１．１．３＜ＥＣＣデコーダ７３＞  
ＥＣＣデコーダ７３は、ロード動作時には、ＥＣＣ解析部７１においてエラーが有ると判断された場合（誤りが検出された場合）、その位置を特定すると共に、対応するデータをページバッファ１３から読み出し、データを訂正する。またプログラム動作時には、ＥＣＣ解析部７１で生成されたパリティをページバッファ１３に転送させる。
【００３８】
２．＜ロードシーケンス＞
本実施形態のメモリシステムのロードシーケンスについて、図４のフローチャート図及び、図５の模式図を用いてＥＣＣ部７０の動作を説明する。なお、説明の便宜上、第１パリティも第２パリティも４個である場合を例に用いて説明する。また、説明の便宜上、ある１ページのデータをセンスアンプ１２にロードして、ページバッファ１３からＥＣＣ部７０がこの１ページのデータを受け取った後のシーケンスについてのみフローチャートに示す。ＥＣＣ部７０がページバッファ１３から受け取ったデータは、図３のように、ユーザデータと、第１パリティと、第２パリティを含む１ページのデータである。
【００３９】
まず、ステップＳ１で、データ分割部７１ａは、１ページのデータを第１方法で４個のユニットＵＤ１〜ＵＤ４に分割する。そして、ステップＳ２で、ＥＣＣ制御部７２は、誤り検出部７１ｃを制御して、ユニットＵＤ１〜ＵＤ４それぞれについて、対応する第１パリティＰ１〜Ｐ４を用いて誤り検出を行う（図５（ａ）参照）。誤り検出部７１ｃは、パリティＰ１〜Ｐ４を用いてユニットＵＤ１〜ＵＤ４について誤り検出を行い、誤り訂正が可能であるか否かを判断する（ステップＳ３）。具体的には、ユニットＵＤ１〜ＵＤ４それぞれの誤りビット数が、第１パリティが訂正可能な許容範囲内のビット数である場合には、誤り検出部７１ｃは、訂正可能と判断し（ステップＳ３、Ｙｅｓ）、ステップＳ８に続く。他方、ユニットＵＤ１〜ＵＤ４それぞれの誤りビット数が、第１パリティが訂正可能な許容範囲のビット数を超えている場合には、誤り検出部７１ｃは、訂正不能と判断する（ステップＳ３、Ｎｏ）
ステップＳ３で、訂正不能となったとき、ＥＣＣ制御部７２は、データ分割部７１ａを制御して、１ページのデータを第２方法で４個のユニットＵＤａ〜ＵＤｄに分割する（ステップＳ４）。
【００４０】
ステップＳ５で、ＥＣＣ制御部７２は、誤り検出部７１ｃを制御して、ユニットＵＤａ〜ＵＤｄそれぞれについて、対応する第１パリティＰａ〜Ｐｄを用いて誤り検出を行う（図５（ｂ）参照）。誤り検出部７１ｃは、パリティＰａ〜Ｐａを用いてユニットＵＤａ〜ＵＤｄについて誤り検出を行い、誤り訂正が可能であるか否かを判断する（ステップＳ５）。具体的には、ユニットＵＤａ〜ＵＤｄそれぞれの誤りビット数が、第２パリティが訂正可能な許容範囲内のビット数である場合には、誤り検出部７１ｃは、訂正可能と判断し（ステップＳ６、Ｙｅｓ）ステップＳ８に続く。他方、ユニットＵＤａ〜ＵＤｄそれぞれの誤りビット数が、第２パリティが訂正可能な許容範囲のビット数を超えている場合には、誤り検出部７１ｃは、訂正不能と判断し（ステップＳ６、Ｎｏ）、ＥＣＣエラー（ステップＳ７）となり終了する。
【００４１】
ステップＳ８で、第１パリティまたは第２パリティを用いて誤り訂正ができる場合に、ＥＣＣデコーダ７３が誤りを訂正し、終了する。
【００４２】
３．＜第１実施形態の効果＞
本実施形態に係るメモリシステムであると、以下（１）の効果を得ることが出来る。
【００４３】
（１）メモリシステムの信頼性を向上できる。
【００４４】
比較例を用いて、本実施形態の効果について説明する。比較例として、図６のようにユーザデータに対して１つのパリティのみを保持するメモリシステムを検討する。
【００４５】
比較例のメモリシステムでは、１つのパリティのみを用いてユーザデータを誤り訂正する。この場合、ユニット内の誤りビットが、パリティが訂正可能な許容範囲を超える場合にはＥＣＣエラーとなる。
【００４６】
ＮＡＮＤ型フラッシュメモリをはじめ、不揮発性メモリセルの不良は一部分に局部的に集中するということは少なく、ばらつきをもって発生することが多い。
【００４７】
このため、例えば比較例におけるユニット内の誤りビットが、パリティが訂正可能な許容範囲を超える場合であっても、ユニットの定義を例えば第２方法のように変更することにより、変更後の第２ユニット内の誤りビットが、パリティが訂正可能な許容範囲を超えない場合がある。
【００４８】
したがって、本実施形態では、比較例と比較してメモリシステムの信頼性を向上できる。
【００４９】
更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【符号の説明】
【００５０】
１…メモリシステム、２…ＮＡＮＤ型フラッシュメモリ、３…コントローラ部、４…入出部、１０…メモリセルアレイ、１１…ロウデコーダ、１２…センスアンプ、１２−１…センスユニット、１３…ページバッファ、１４…電圧発生回路、１５…シーケンサ、１６、１７…オシレータ
【図１】
2014002615.tif 000003
【図２】
2014002615.tif 000004
【図３】
2014002615.tif 000005
【図４】
2014002615.tif 000006
【図５】
2014002615.tif 000007
【図６】
2014002615.tif 000008