(57)【要約】【課題】一般的なセクターデータの書き込みはランダムなデータではなく、データ“０”とデータ“１”の発生頻度の偏った特徴的なデータである。そういった偏ったセクターデータを不揮発性メモリに書き込むと不良が発生する確率が高くなる。書き込みデータにおけるデータ“０”とデータ“１”の発生頻度の偏りを解消し、信頼性の高い不揮発性記憶装置を実現する。【解決手段】不揮発性記憶装置において、カテゴリ分析機能部でセクターデータにおけるデータの“０”とデータ“１”の発生頻度からカテゴリを決定し、スクランブルパターン発生器でデータが書き込まれるアドレス位置の情報と前記カテゴリから決定したスクランブルパターンを発生し、スクランブル回路でセクターデータのスクランブルを行い、前記カテゴリとともに不揮発性メモリに書き込む。【選択図】図１
2010108029.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする不揮発性メモリコントローラ。
【請求項２】
前記不揮発性メモリは、複数の、書き込み単位であるページから構成され、
前記スクランブルパターン発生器は、前記不揮発性メモリに書き込むセクターデータの個々のビットの少なくとも前記ページの物理アドレスを含む物理アドレスに対応したスクランブルパターンを発生する
ことを特徴とする請求項１に記載の不揮発性メモリコントローラ。
【請求項３】
前記不揮発性メモリは、複数のメモリセルが直列接続された構成を持つ
ことを特徴とする請求項２に記載の不揮発性メモリコントローラ。
【請求項４】
前記不揮発性メモリがＮＡＮＤタイプのフラッシュメモリである
ことを特徴とする請求項３に記載の不揮発性メモリコントローラ。
【請求項５】
前記不揮発性メモリが３個以上の閾値の分布をとり得る、多値タイプのメモリセルである
ことを特徴とする請求項４に記載の不揮発性メモリコントローラ。
【請求項６】
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記多値タイプのメモリセルにおける各値の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする請求項５に記載の不揮発性メモリコントローラ。
【請求項７】
前記スクランブルパターン発生器は、前記不揮発性メモリに書き込むセクターデータの個々のビットの物理アドレスとセクターデータのカテゴリに対応したスクランブルパターンを発生する
ことを特徴とする請求項１に記載の不揮発性メモリコントローラ。
【請求項８】
前記カテゴリを、対応するセクターデータとともに前記不揮発性メモリに格納する
ことを特徴とする請求項７に記載の不揮発性メモリコントローラ。
【請求項９】
前記不揮発性メモリコントローラは、カテゴリ分析機能部をさらに備え、
前記カテゴリ分析機能部は、セクターデータの内容を分析することによりセクターデータ単位で対応するカテゴリに分類してカテゴリを決定する
ことを特徴とする請求項１に記載の不揮発性メモリコントローラ。
【請求項１０】
前記不揮発性メモリコントローラは、スクランブルパターンテスターを更に備え、
前記スクランブルパターンテスターは、複数のカテゴリに対応するスクランブルパターンをセクターデータに適用することにより、前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって最も減少するスクランブルパターンに対応するカテゴリを決定する
ことを特徴とする請求項９に記載の不揮発性メモリコントローラ。
【請求項１１】
前記ホスト機器から書き込まれるセクターデータに対応するＥＣＣ符号ビットを生成し、前記不揮発性メモリから読み出されたセクターデータ及びＥＣＣ符号ビットに基づいてシンドロームの演算を行うＥＣＣ回路を、更に備え、
前記スクランブル回路によるスクランブルは、前記ＥＣＣ回路によって生成されたＥＣＣ符号ビットにも適用される
ことを特徴とする請求項１乃至１０のうちのいずれか一に記載の不揮発性メモリコントローラ。
【請求項１２】
前記ホスト機器から書き込まれるセクターデータに対応するＥＣＣ符号ビットを生成し、前記不揮発性メモリから読み出されたセクターデータ及びＥＣＣ符号ビットに基づいてシンドロームの演算を行うＥＣＣ回路を、更に備え、
前記スクランブル回路によってスクランブルが行われた前記不揮発性メモリに書き込まれるセクターデータに対して、前記ＥＣＣ回路によるＥＣＣ符号の生成が行われる
ことを特徴とする請求項１乃至１０のうちのいずれか一に記載の不揮発性メモリコントローラ。
【請求項１３】
不揮発性メモリと不揮発性メモリコントローラからなる不揮発性記憶装置であり、前記不揮発性メモリコントローラは請求項１乃至１２のうちのいずれか一に記載の不揮発性メモリコントローラであることを特徴とした不揮発性記憶装置。
【請求項１４】
請求項１３に記載の不揮発性記憶装置と、
前記不揮発性記憶装置に対してデータの書き込み、読み出しを行うホスト機器とを有することを特徴とする不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性メモリを用いた不揮発性記憶装置、及び、不揮発性メモリを制御する不揮発性メモリコントローラに関する。
【背景技術】
【０００２】
近年、書き換え可能な不揮発性メモリであるＮＡＮＤタイプのフラッシュメモリを搭載した不揮発性記憶装置としてのメモリーカードは、デジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。同時に、半導体デバイスとしてもプロセスの微細化に伴いそのビット単価が低下していることから、廉価な記憶デバイスとしてメモリーカード以外にも、例えばＨＤＤ置き換えのＳＳＤや、ホスト機器に直接搭載するメモリ等にも用途が拡がっている。
【０００３】
しかしながら、プロセスの微細化が及ぼす影響の別の面として、フラッシュメモリの信頼性の低下が挙げられる。つまり、フラッシュメモリの微細化に伴い、情報を記憶するための電子の数が少なくなる。そのことはリテンション、リードディスターブ、プログラムディスターブ等の種々の劣化要因に対するマージンが少なくなり不良になりやすくなることに繋がる。
【０００４】
フラッシュメモリにおける種々の劣化要因に対して信頼性を向上させるための手法について、様々なものが提案されている。特許文献１には、閾値電圧分布の幅・間隔を広くとるためにワード線の電位に負電位を用いることで信頼性を向上させることが示されている。また、特許文献２には、メモリセルに対するプログラムのストレスを低減するために、書き込みデータの反転と非反転を切り替えることで信頼性を向上させることが示されている。また誤り訂正回路（ＥＣＣ）を利用することで信頼性を向上させることも一般的に使用されている技術である。
【特許文献１】特開平１０−１１９８１号公報
【特許文献２】特開平５−２９８８９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ＮＡＮＤタイプフラッシュメモリにおいては、上記特許文献に提示された問題以外に、本質的ではないが実効的に信頼性を低下させる要因がある。以下これについて説明する。ここで、“本質的ではない”というのは“任意のデータに対して適用可能ではないこと”を意味する。“実効的”とは“実際に使用されるデータに対しては適用可能”なことを意味する。
【０００６】
まず、ＮＡＮＤタイプのフラッシュメモリのメモリセルアレイの構成の一例を図１３（１）に示す。図１３（１）は、１２８ＭＢのＮＡＮＤタイプのフラッシュメモリのメモリセルアレイの構成である。ここでのメモリセルアレイは、１０２４個の物理ブロック（Ｂｌｏｃｋ０，Ｂｌｏｃｋ１，・・・，Ｂｌｏｃｋ１０２３）からなる。物理ブロックとは、フラッシュメモリにおけるデータの消去単位である。またここでの物理ブロックは、６４個の物理ページ（ｐａｇｅ０，ｐａｇｅ１，・・・，ｐａｇｅ６３）からなる。物理ページとは、フラッシュメモリにおけるデータの書き込み単位である。
【０００７】
物理ページは、カラムアドレスが０から２１１１までの２Ｋ＋６４個のカラムと、８つのＩＯとからなる「２ＫＢ（キロバイト）＋６４Ｂ（バイト）」の容量を持つ。一般的には、物理ページのうちの２ＫＢの領域にはデータが、６４Ｂの領域には誤り訂正のためのＥＣＣ符号やその他の管理情報が、書き込まれる。従って、図１３（１）に示すＮＡＮＤタイプのフラッシュメモリの容量は正確には１２８ＭＢ＋４ＭＢであるが、一般的に１２８ＭＢと表現される。
【０００８】
図１３（２）は、ＮＡＮＤタイプのフラッシュメモリの、ある物理ブロックの、あるカラムの、あるＩＯを構成するメモリセルを示した図である。一般的にこの図はＮＡＮＤストリングの図と称される。３２個のメモリセル（ＭＣ０，ＭＣ１，ＭＣ２，・・・，ＭＣ３０，ＭＣ３１）が直列に接続されている。直列接続されたメモリセルの端のＭＣ０は、ビット線（Ｂｉｔ  Ｌｉｎｅ）にＳｅｌｅｃｔＧａｔｅ（セレクトゲート）を介して接続され、直列接続されたメモリセルの端のＭＣ３１は、接地レベル（ＧＮＤ）にＳｏｕｒｃｅＧａｔｅ（ソースゲート）を介して接続される。図１３（２）中に示した電圧印加条件（ＶＣＣ，ＧＮＤ）は、メモリセルＭＣ１からデータを読み出すためのバイアス条件である。この条件下においてビット線（ＢｉｔＬｉｎｅ）から接地レベル（ＧＮＤ）に流れる電流量をビット線に接続されたセンスアンプ（図示せず。）で検出することでメモリセルＭＣ１のデータを読み出すことができる。
【０００９】
図１４（１）は、ＮＡＮＤタイプのフラッシュメモリにおけるメモリセルの閾値の分布を示したものであり、閾値が負のメモリセルのデータは“１”で、閾値が正のメモリセルのデータは“０”であることを示す。つまり、図１３（２）における電圧印加条件において、電流が流れればデータは“１”で電流が流れなければデータは“０”である。
【００１０】
ここで、ビット線（ＢｉｔＬｉｎｅ）から接地レベル（ＧＮＤ）に流れる電流量に関して、読み出し対象となっているメモリセルＭＣ１以外のメモリセルに着目する。読み出し対象以外のメモリセルのゲート電圧にはＶＣＣが印加されているので、電流がカットオフされること無く流れるが、それぞれのメモリセルに対するデータの書き込み状態によって各メモリセルの等価的な抵抗値は異なる。
【００１１】
ここで、読み出し対象のメモリセルＭＣ１を除く３１個のメモリセルの合成等価抵抗を考える。合成等価抵抗は、３１個のメモリセルのデータが全て“０”であるときに最大値（Ｒｍａｘ）をとり、３１個のメモリセルのデータが全て“１”であるときに最小値（Ｒｍｉｎ）をとる。センスアンプはもちろん合成等価抵抗が最大値（Ｒｍａｘ）であっても最小値（Ｒｍｉｎ）であっても正しく読み出すことができるようにマージンを持って設計される。合成等価抵抗が取り得る値の分布は、もちろん書き込みを行うデータに依存するが、各メモリセルにおける“１”と“０”の書き込まれる確率が夫々等しく５０％であると仮定すると、その分布は２項分布に従う。即ち、図１４（２）の実線グラフにより示す分布のようになる。
【００１２】
図１４（２）の実線グラフには２の３１乗個の状態の分布が示されており、最大値（Ｒｍａｘ）近辺及び最小値（Ｒｍｉｎ）近辺にはほとんど分布しないことが分かる。ちなみに論理上は３１個のメモリセルに含まれる“１”のデータが２個以下の場合と３１個のメモリセルに含まれる“０”のデータが２個以下の場合を足しても１ｐｐｍにも満たない。以上は各ビットにおけるデータ“０”の生起確率およびデータ“１”の生起確率が等しい場合の分布である。
【００１３】
しかしながら、実使用下において書き込まれるデータにおいては、上述の仮定が成り立たないことが多い。実際にはデータ“０”とデータ“１”の生起確率は等しく無い。また、等しくないだけでなくその生起確率は一定では無く、書き込みを行うデータの種別に大きく依存して変化する。図１４（３）の実線グラフは、実使用下において書き込まれるデータの一例における合成等価抵抗の分布を示す。実際には、最大値（Ｒｍａｘ）近辺及び最小値（Ｒｍｉｎ）近辺に分布が相当多く存在することが分かる。このことは、例えば実使用下では有為なデータ以外のデータは“０”や“１”で略全て埋められることに起因している。そのために実使用下で書き込まれるデータは何らかの特徴をもったデータであることが多く、その結果、例えば図１４（３）の実線グラフに示されるように、想定される分布における端部に集中して分布することとなる。
【００１４】
種々の劣化要因が適用されると、このような分布の状態からその分布が変動する。劣化後の分布の例を図１４（３）の破線グラフに示す。実線から破線に分布が変動することにより、Ｒｍａｘ（変動前の最大値）よりも大きな抵抗値や、Ｒｍｉｎ（変動前の最小値）よりも小さな抵抗値の領域にも、分布が広がるようになることがわかる。
【００１５】
これと対比してデータ“０”とデータ“１”との生起確率が等しい場合の劣化後の分布を、図１４（２）の破線グラフに示す。Ｒｍａｘ（変動前の最大値）よりも大きな抵抗値や、Ｒｍｉｎ（変動前の最小値）よりも小さな抵抗値の領域にはほとんど分布していないことが分かる。
【００１６】
たとえ劣化後であっても合成等価抵抗値が、Ｒｍａｘ（変動前の最大値）よりも小さく、Ｒｍｉｎ（変動前の最小値）よりも大きな値であればデータは正しく読み出され得る。しかし、合成等価抵抗値がＲｍａｘ（変動前の最大値）よりも大きい場合にはデータが正しく読み出されなくなる可能性がある。
【００１７】
前述のように、フラッシュメモリにおける信頼性を向上させるために誤り訂正回路を利用することは一般的な技術である。つまり、図１４（２）の破線グラフに示すように、Ｒｍａｘ（変動前の最大値）よりも大きな抵抗値をとるケースが極めて少ないならば、誤り訂正回路を利用することによりデータを正しく読み出すようにすることは可能である。しかしながら、図１４（３）の破線グラフに示すように、Ｒｍａｘ（変動前の最大値）よりも大きな抵抗値をとるケースが相当に多いならば、誤り訂正回路の利用では対応しきれない可能性がある。
【００１８】
以上が、ＮＡＮＤタイプのフラッシュメモリにおける、本質的ではないが実効的に信頼性を低下させる要因である。最悪条件の値はいずれの場合でも同じであるが、実効的な書き込みデータの前提の下では、特徴的なデータを書き込むことが信頼性を低下させる要因となる。
【００１９】
なお、このような現象はＮＡＮＤタイプのフラッシュメモリに特有のものではない。つまり、実使用下における書き込みデータの偏在により、合成等価抵抗の領域の端部に多くのケース（度数）が分布するということは、いずれのメモリにも発生し得る現象である。
【００２０】
また、上記ではＮＡＮＤストリングの構成を提示して同一ストリング内のデータの分布について説明したが、上述の現象は読み出し動作に特有のものではなく、書き込み動作においても同様に発生する。つまり、同一の書き込み単位であるページ単位で特徴的なデータが書き込まれる場合にも信頼性を低下させる要因となる。
【００２１】
以上、説明してきたように、一般的な書き込みのデータはランダムなデータではなく、データ“０”若しくはデータ“１”のいずれかの発生頻度の偏った特徴的なデータであるので、ある状態（例えば、合成等価抵抗）の値が、取りうる状態として設計時に想定される範囲の端部に近い領域に偏ることが多い。このような状態では、種々の劣化要素を要因として不良が発生する確率が高くなる。本発明は、メモリへの書き込みのデータにおける、データ“０”若しくはデータ“１”の発生頻度の偏りを解消することによって、ある状態の値が、取りうる状態として設計時に想定される範囲の端部へ偏って分布することを減少させることを目的とする。
【課題を解決するための手段】
【００２２】
上記の目的を達成するために、本発明の不揮発性メモリコントローラは、
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする。
【００２３】
上記の目的を達成するために、本発明の不揮発性記憶装置は、
不揮発性メモリと不揮発性メモリコントローラからなる不揮発性記憶装置であり、
前記不揮発性メモリコントローラは、
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする。
【００２４】
上記の目的を達成するために、本発明の不揮発性記憶システムは、
不揮発性記憶装置と、前記不揮発性記憶装置に対してデータの書き込み、読み出しを行うホスト機器とを有し、
前記不揮発性記憶装置は、
不揮発性メモリと不揮発性メモリコントローラからなる不揮発性記憶装置であり、
前記不揮発性メモリコントローラは、
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする。
【発明の効果】
【００２５】
本発明を利用することにより、不揮発性記憶装置にデータを書き込む際に特徴的なデータを特徴的ではないデータに変換して書き込むことにより、初期における（即ち、劣化以前の）特性分布の端部に位置する分布領域を減少できる。そのためメモリセルの特性が劣化要因によって変動した場合でも、初期における分布の範囲をはみ出す特性の割合が少ないので、結果として信頼性の高い不揮発性記憶装置を実現することが可能になる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照して本発明に係る好適な実施の形態を説明する。
【００２７】
［第１の実施の形態］
図１（１）は、本発明の第１の実施の形態に係る不揮発性記憶装置１０１の構成図であり、不揮発性メモリ１０３への書き込みデータの流れと共に示している。不揮発性記憶装置１０１は、コントローラ１０２と不揮発性メモリ１０３とを含む。
【００２８】
不揮発性記憶装置１０１は、外部のホスト５０からアドレス指定を伴うデータの書込みや読み出しが可能な装置である。不揮発性メモリ１０３は、不揮発性記憶装置１０１に書き込まれるデータを不揮発で記憶するメモリである。不揮発性メモリ１０３の内部のメモリセルアレイの構成は、前述の図１３（１）に示すものと同じである。コントローラ１０２は、制御回路１０４、ホストＩ／Ｆ（インターフェース）１０５、バッファメモリ１０６、カテゴリ分析機能部１０７、スクランブルメモリ１０８、ＥＣＣ回路１０９、セレクタ１１０、スクランブルパターン発生器１１１、スクランブル回路であるビット反転器１１２、及び、メモリＩ／Ｆ（インターフェース）１１３を含む。
【００２９】
制御回路１０４は、論物変換テーブル１１４、消去ブロックテーブル１１５、及び不良ブロックテーブル１１６を参照して、コントローラ１０２内の各機能部やリソースを制御する。論物変換テーブル１１４は、論理アドレスと物理アドレスとの対応情報を示すテーブルである。ここで論理アドレスとは、不揮発性記憶装置外部からのアドレスを不揮発性メモリ１０３の消去単位と同じ容量のアドレスに変換したアドレスである。物理アドレスとは、不揮発性メモリの消去単位である物理ブロックのアドレスである。つまり、論物変換テーブル１１４は、不揮発性記憶装置１０１外部からデータを読み出す際に不揮発性記憶装置１０１外部から指定したアドレスに対応するデータが不揮発性メモリ１０３のどの物理ブロックに存在するかを得るために使用するテーブルである。消去ブロックテーブル１１５は、不揮発性メモリ１０３の物理ブロックが消去済みであるか、そうでないかを物理ブロック毎にビット情報として格納するテーブルである。消去ブロックテーブル１１５は、不揮発性記憶装置１０１外部からデータを書き込む際に、データを書き込み可能な物理ブロックの場所を得るために使用するテーブルである。不良ブロックテーブル１１６は、不揮発性メモリ１０３の不良ブロックの物理ブロックアドレスを記憶するテーブルである。
【００３０】
バッファメモリ１０６は、複数のセクター（ここで、１セクターは５１２Ｂ（バイト）である）のデータを記憶できる揮発性のメモリで構成される。各セクターのデータは、セクターバッファに格納する。図１（１）では、４セクター分のデータを格納するために４つのセクターバッファを備える例を示している。スクランブルメモリ１０８は、バッファメモリ１０６の各セクターバッファに対応してカテゴリＩＤを記憶する。ここでは各カテゴリＩＤが１バイトの情報からなるとして、合計４バイトのメモリからなる。
【００３１】
ＥＣＣ回路１０９は、エンコーダ１１７、シンドローム１１８、及び訂正回路１１９を含む。ＥＣＣ回路１０９は、不揮発性メモリ１０３に書き込んだデータに劣化要因による誤りが発生したときに、その誤りを訂正するための誤り訂正回路である。本明細書に示す例では、５１２Ｂ（バイト）のデータに管理情報の６バイトを加えた５１８バイトに、１０バイトのＥＣＣ符号を付加することで、リードソロモン符号を使用して４ビットまでの誤り訂正を可能としている。エンコーダ１１７は、不揮発性メモリ１０３に書き込むデータに付加するＥＣＣ符号ビットを生成する回路ブロックである。
シンドローム１１８は、不揮発性メモリ１０３から読み出したデータと管理情報とＥＣＣ符号とから誤りの有無を検出し、誤りがあれば誤りの発生場所を演算で得るために必要な情報であるシンドローム符号群を生成する回路ブロックである。訂正回路１１９は、不揮発性メモリ１０３から読み出したデータに誤りが有るとシンドローム１１８のシンドローム符号群から判断されたときに、シンドローム符号群を元に誤りの発生場所を算出してバッファメモリ１０６にて訂正する回路ブロックである。
【００３２】
図１（２）は、図１（１）に示す不揮発性記憶装置１０１にデータを書き込む際のデータの転送の状態を示すタイミングチャートである。図１（２）を基にして不揮発性記憶装置１０１へのデータの書き込みについて説明する。最初に時間ｔｗ１０１で、不揮発性記憶装置１０１外部にあるホスト５０は、不揮発性記憶装置１０１に対して書き込みデータであるセクターデータの転送を開始する。ホスト５０から転送されるセクターデータは、ホストＩ／Ｆ１０５を介して、バッファメモリ１０６とカテゴリ分析機能部１０７とに転送される。カテゴリ分析機能部１０７は、ホストから転送されるデータに対してそのカテゴリを分類する。本実施の形態では、ホスト５０から転送される５１２Ｂ（バイト）のセクターデータに関して、含まれる“１”のビットの数をカウントすると共に、そのデータ構造がファイルシステムで使用するディレクトリエントリと判断できるか否かの分析を行い、これらに基づいて４つのカテゴリに分類している。
【００３３】
カテゴリ分析機能部１０７は、ホストからのセクターデータの持つ固有の特性や属性（例えば、周期性、規則性、データ偏在性）を分析しその分析に基づいて該セクターデータを幾つかのカテゴリに分類している。このように、ホストからのセクターデータの持つ固有の特性や属性に基づいてカテゴリに分類し且つ各カテゴリ毎に適切な（後述の）スクランブルパターンを用意することで、スクランブル後のデータにおいて、より平準化が実現される。
【００３４】
ディレクトリエントリはデータとして固有の規則性を有している。ここでの４カテゴリの分類は、ディレクトリエントリの固有の規則性に基づくものであり、一つの分類例である。つまり、カテゴリ分類は上記のものに限定されず、データの他の特性・属性に基づいてカテゴリ分類を行うようにしてもよい。
【００３５】
図２は、カテゴリ分析機能部１０７のカテゴリ分類ルールを示すテーブルである。図１（２）における時間ｔｗ１０２にて、カテゴリ分析機能部１０７は、ホスト５０が時間ｔｗ１０１から転送してきたセクターデータの分析結果を、カテゴリＩＤとしてスクランブルメモリ１０８に記録する。
セクターデータの５１２Ｂに含まれるビットの９０％以上が“１”のとき、即ち、３６８７ビット以上の“１”データが存在する場合、カテゴリＩＤとして０ｘＦＦ（“１”データが多いセクターデータを意味する）をスクランブルメモリ１０８の対応するカテゴリＩＤ領域に記録する。
セクターデータの５１２Ｂに含まれるビットの１０％未満が“１”のとき、即ち“１”データの存在が４０９ビット以下の場合、カテゴリＩＤとして０ｘ００（“０”データが多いセクターデータを意味する）をスクランブルメモリ１０８の対応するカテゴリＩＤ領域に記録する。
セクターデータの５１２Ｂに含まれるビットの１０％以上９０％未満が“１”のとき、即ち、４１０ビット以上３６８７ビット未満が“１”データのときには、“１”のビットのカウントとは別に、更にディレクトリエントリに類似したデータであるかどうかの判定結果を利用する。つまり、ディレクトリエントリに類似したデータであるかどうかの判定結果を基にして、ディレクトリエントリ適合率が８０％以上と判断した場合にはカテゴリＩＤとして０ｘ０Ｆを、そうでない場合にはカテゴリＩＤとして０ｘ５５を、記録する。
【００３６】
時間ｔｗ１０３で、スクランブルメモリ１０８から不揮発性メモリ１０３に対してカテゴリＩＤを書き込むための転送を、メモリＩ／Ｆ１１３を介して行う。
続いて、時間ｔｗ１０４で、バッファメモリ１０６のデータバッファから、セレクタ１１０とビット反転器１１２とメモリＩ／Ｆ１１３とを介して、不揮発性メモリ１０３にデータの転送を行う。図１（２）において、不揮発性メモリ１０３へのデータ転送でハッチングをかけた部分は、その転送においてデータのスクランブルが行われていることを示す。つまり、このときビット反転器１１２では、バッファメモリ１０６からのセクターデータと、スクランブルパターン発生器１１１からの（スクランブルパターン）データとで、排他的論理和演算を行う。スクランブルパターン発生器１１１が発生する（スクランブルパターン）データの例を、図３に示している。
【００３７】
スクランブルパターン発生器１１１は、スクランブルメモリ１０８からのカテゴリＩＤと、メモリＩ／Ｆ１１３から得られる物理ページアドレスと物理カラムアドレスとを基にして、図３に示されるテーブルに従ってスクランブルパターンを生成する。なお、カテゴリＩＤが０ｘ０Ｆ又は０ｘ５５であるとき（即ち、ディレクトリエントリ適合率が８０％以上、又は８０％未満と判断されたとき）、ディレクトリエントリに固有の規則性を考慮したスクランブルパターンが、夫々生成される。スクランブルパターン発生器１１１は、例えば読み出し専用のメモリで構成すればよい。
スクランブルパターンの生成に当たり、カラムアドレスを参照する理由は、同一ページ内におけるデータ“０”と“１”の発生頻度の偏りをなくすためである。スクランブルパターンの生成にあたり、物理ページアドレスを参照する理由は、同一ＮＡＮＤストリング内におけるデータ“０”と“１”の発生頻度の偏りをなくすためである。スクランブルパターンの生成にあたり、カテゴリＩＤを参照する理由は、カテゴリ分析機能部１０７の分析結果に基づいた適切なスクランブルパターンを選択することにより、スクランブル後のデータ“０”と“１”の発生頻度の偏りをなくすためである。また、このとき（ｔｗ１０４）同時にバッファメモリ１０６からＥＣＣ回路１０９のエンコーダ１１７にセクターデータが転送され、エンコーダ１１７では転送されるセクターデータに対応するＥＣＣ符号の演算が行われる。
【００３８】
本実施の形態のスクランブルパターン発生器１１１はスクランブル処理後のデータにおける“１”“０”の生起確率が平準化されるようにスクランブルパターンを生成する。このスクランブルパターンについては、後で詳しく説明する。
【００３９】
最後に時間ｔｗ１０５にて、エンコーダ１１７から、セレクタ１１０とビット反転器１１２とメモリＩ／Ｆ１１３とを介して、不揮発性メモリ１０３にＥＣＣ符号が転送される。このとき、書き込みされるＥＣＣ符号にスクランブルをかけている（図１（２）参照）。これは、ＥＣＣ符号を生成するためのセクターデータとして、データ“０”と“１”の生起確率が偏っている可能性のある、スクランブル前の特徴的なデータを用いたからである。即ち、特徴的なデータを基にして生成したＥＣＣ符号は特徴的である可能性があり、その特徴を解消するためである。
【００４０】
次に、図４（１）は、本発明の第１の実施の形態に係る不揮発性記憶装置１０１の構成図であって、特に、不揮発性メモリ１０３からの読み出しデータの流れを説明した図である。即ち、図４（１）は、図１（１）に示す構成図のデータの流れのみを変えたものである。従って、同一部位には同一符号を付して説明を省略する。
【００４１】
図４（２）は、図４（１）に示す不揮発性記憶装置１０１からデータを読み出す際のデータの転送の状態を示すタイミングチャートである。図４（２）を基にして不揮発性記憶装置１０１からのデータの読み出しについて説明する。最初に時間ｔｒ１０１で、不揮発性メモリ１０３からメモリＩ／Ｆ１１３を介してスクランブルメモリ１０８にカテゴリＩＤが書き込まれる。時間ｔｒ１０２で、不揮発性メモリ１０３からバッファメモリ１０６及びシンドローム１１８に、メモリＩ／Ｆ１１３とビット反転器１１２とを介して、セクターデータが書き込まれる。図４（２）において、不揮発性メモリ１０３からのデータ転送でハッチングをかけた部分は、その転送においてデータのスクランブルが行われていることを示す。つまり、このときビット反転器１１２は、不揮発性メモリ１０３からのセクターデータとスクランブルパターン発生器１１１からの（スクランブルパターン）データとで排他的論理和演算を行うことで、セクターデータに対してスクランブルを行う。スクランブルパターン発生器１１１は、ｔｒ１０１にて、不揮発性メモリ１０３から読み出されてスクランブルメモリ１０８に格納されたカテゴリＩＤと、メモリＩ／Ｆ１１３から得られる物理ページアドレスと物理カラムアドレスを基にして、図３に示されるテーブルに従ってスクランブルパターンを生成する。
【００４２】
続いて、時間ｔｒ１０３からは、不揮発性メモリ１０３からシンドローム１１８に、メモリＩ／Ｆ１１３とビット反転器１１２を介して、ＥＣＣ符号が転送される。シンドローム１１８は、セクターデータとＥＣＣ符号からシンドローム符号を生成し、誤りの有無を判定する。不揮発性メモリ１０３から読み出したデータに誤りが在る場合には、時間ｔｒ１０４から誤りの訂正を行う。訂正回路１１９は、シンドローム１１８の生成したシンドローム符号を基に誤り位置の演算処理を行い、バッファメモリ１０６のデータバッファの該当するビットのデータを反転することで誤りの訂正を行う。
【００４３】
最後に、時間ｔｒ１０５からは、バッファメモリ１０６からホストＩ／Ｆ１０５を経由して不揮発性記憶装置１０１外部のホスト５０へとデータを読み出しのために転送する。
【００４４】
［スクランブルパターンの例］
図１４（２）に示すような２項分布に近い分布を得るためには“１”と“０”の書き込まれる確率をほぼ等しくする必要があるが、そのような分布にするためのスクランブルパターンの生成方法の一例を挙げる。
【００４５】
ここでは、簡単のために１カラム、８Ｉ／Ｏ、３２ページの場合を例にとって説明する。すると、スクランブルパターンとして２５６ビット（＝１カラム×８Ｉ／Ｏ×３２ページ）の情報が必要である。スクランブルパターンの（空）テーブルを図５に示す。図５は縦軸に３２個のページを取って、横軸に８個のＩ／Ｏを取っている。各枠にビットを反転することを示す“１”またはビットを反転しないままであることを示す“０”が入ることになる。
【００４６】
最適なスクランブルパターンを判定するためには、様々なデータパターンに対してスクランブルパターンを適用した後で、まず、各ページのビット“１”とビット“０”の数がほぼ同じになっていることを検証する必要がある。また、各Ｉ／Ｏのビット“１”とビット“０”の数がほぼ同じになっていることを検証する必要がある。
【００４７】
その検証のために、ページ毎及びＩ／Ｏ毎に、“１”の個数の合計を計算した結果を入れる枠を設ける。合計の枠を追加し、更に、図５の（空）テーブルに具体的なスクランブルパターンを入れたものを、図６に示す。なお、値が全て“０”のデータパターンにスクランブルパターンを適用した場合、スクランブルパターンとスクランブルパターン適用後のデータパターンとは等しくなる。よって、図６は値が全て“０”のデータパターンに具体的なスクランブルパターンを適用した後のパターンともいえる。図６では、Ｉ／Ｏの各ビットにページ番号を２進数化したものを入れている。例えば、ページ１０は１０の２進数表記が（ＭＳＢ）００００１０１０（ＬＳＢ）なので、Ｉ／Ｏ７の枠から順番に、Ｉ／Ｏ７に“０”、Ｉ／Ｏ６に“０”、Ｉ／Ｏ５に“０”、Ｉ／Ｏ４に“０”、Ｉ／Ｏ３に“１”、Ｉ／Ｏ２に“０”、Ｉ／Ｏ１に“１”、Ｉ／Ｏ０に“０”を入れている。
【００４８】
各ページの合計枠及び各Ｉ／Ｏの合計枠には、ビット“１”の個数の合計を計算した結果が示されている。ページ１０には、Ｉ／Ｏ１とＩ／Ｏ３にだけビット“１”があるのでページ１０の“１”の個数の合計は２であり、ページ１０に対応する行の合計枠には２が入る。ページには８つのＩ／Ｏがあるので“１”の数が４個の場合、“１”と“０”の個数が同じになる。また、Ｉ／Ｏには３２個のページがあるので“１”の数が１６個の場合、“１”と“０”の数が同じになる。ここで、図６ではページ０の合計が０であり、またＩ／Ｏ７の合計が０であるので適切なパターンとは言えない。
【００４９】
図７に、適切なスクランブルパターンの一例を示す。同図に示すように、各ページの合計はすべて４であり、各Ｉ／Ｏの合計は全て１６であり、“１”と“０”の個数が同じになっている。このようなスクランブルパターンを生成する手順について簡単に説明する。まずページ方向のパターンを検討するために“１”と“０”の数が等しくなるパターンを抽出する（即ち、８個のＩ／Ｏから４個のＩ／Ｏを選択する組み合わせの総数である。７０個となる。）。そのうち必要なのはページの数である３２個なので、７０個のうちの３２個を選択する。このときに３２個の異なるパターンを選択する。同じパターンを複数個使用しない理由は、よりランダム性を高めるためである。また、このときに選択した３２個のパターンの各Ｉ／Ｏの“１”の個数が１６個になるような３２個のパターンを選択する。これはもちろん各Ｉ／Ｏの”１”の個数を１６個にするためである。以上のようなパターンを選択することで“０”と“１”の個数を同じにできる。
【００５０】
前述のように、図７に示すスクランブルパターンは、値が全て“０”のデータパターンに対して適切なスクランブルパターンである。それだけでなく、値が全て“１”のデータパターンに対しても適切なスクランブルパターンである。値が全て“１”のデータパターンにスクランブルパターンを適用した後のパターンは、そのスクランブルパターンの“１”と“０”とを入れ換えたものとなるからであり、更に、ここでのスクランブルパターンでは“１”の個数と“０”の個数とが等しいからである。
【００５１】
更に、図７に示すスクランブルパターンは、チェッカーパターン（“１”と“０”が市松模様のパターン）のデータパターンに対しても適切なスクランブルパターンとなっている。それは、８ビットで“１”と“０”の個数が等しくなる７０通りのパターンから３２個のパターンを選択する際に、チェッカーパターンをデータパターンとしてスクランブルパターンを適用した場合にも“１”の個数が４になるスクランブルパターンを選択しているからである。ちなみに上記の７０通りのうち、チェッカーパターンに適用してもページ毎の“１”の個数が４になるパターンは３６通りある。ここではその３６通りからＩ／Ｏ別に“１”の数が１６個になる３２個のパターンを選択している。その３２個のパターンを各ページに割り当てる組み合わせの数は、３２個を並べる順列の数である。その順列を入れ替えながら、チェッカーパターンをデータパターンとしてスクランブルを行った後での各ページおよび各Ｉ／Ｏの合計が４および１６になるような３２個のパターンの並び方を決定したものが、図７のスクランブルパターンである。チェッカーパターンに図７のスクランブルパターンを適用した後のパターンを、図８に示す。図８において、各ページの“１”の個数及び各Ｉ／Ｏの“１”の個数が４及び１６になっていることが確認できる。
【００５２】
以上のように、本実施の形態に係るスクランブルパターン発生器１１１は、不揮発性メモリ１０３に格納されるデータにて“０”と“１”の生起確率が平準化されるようなスクランブルパターンを発生する。つまり、スクランブルパターン生成器１１１は、不揮発性メモリ１０３の物理カラムアドレスと物理ページアドレスに基づき、更に不揮発性記憶装置１０１外部からの書き込みデータの構成の解析に基づいて、スクランブルパターンを発生する。これにより、本実施の形態に係る不揮発性記憶装置１０１は、不揮発性メモリ１０３に格納されるデータにおける“０”と“１”の生起確率が平準化され、合成等価抵抗などの状態値が、取りうる値として設計時に想定される範囲の端部に偏って分布することを大幅に減らすことができる。
【００５３】
［第２の実施の形態］
図９（１）は、本発明の第２の実施の形態に係る不揮発性記憶装置１０１の構成図であり、不揮発性メモリ１０３への書き込みデータの流れと共に示している。図９（１）に示す第２の実施の形態に係る不揮発性記憶装置１０１は、図１（１）に示す第１の実施の形態に係る不揮発性記憶装置と略同様のものであるので、同一部位には同一符号を付して説明を省略する。
【００５４】
第２の実施の形態に係る不揮発性記憶装置１０１と、第１の実施の形態に係る不揮発性記憶装置との差異は、第１の実施の形態に係る不揮発性記憶装置ではＥＣＣ符号に対してスクランブルが行われ不揮発性メモリに書き込まれるが、第２の実施の形態に係る不揮発性記憶装置１０１ではスクランブルが行われたセクターデータに対してＥＣＣ符号の生成が為されることである。即ち、ＥＣＣ符号に関して、スクランブル回路１１２とＥＣＣ回路１０９との順序が異なる。
【００５５】
図９（２）は、図９（１）に示す不揮発性記憶装置１０１にデータを書き込む際のデータの転送の状態を示すタイミングチャートである。図９（２）を基にして、不揮発性記憶装置１０１へのデータの書き込みについて説明する。最初に、時間ｔｗ２０１で、不揮発性記憶装置１０１外部にあるホスト５０が、不揮発性記憶装置１０１に対して書き込みデータであるセクターデータの転送を開始する。ホスト５０から転送されるセクターデータは、ホストＩ／Ｆ１０５を介して、バッファメモリ１０６とカテゴリ分析機能部１０７に転送される。カテゴリ分析機能部１０７は、ホスト５０から転送される５１２Ｂ（バイト）のセクターデータに対して、どのカテゴリに含まれるデータかを分析する。
【００５６】
時間ｔｗ２０２で、カテゴリ分析機能部１０７は、ホスト５０が時間ｔｗ２０１から転送してきたセクターデータの分析結果をカテゴリＩＤとしてスクランブルメモリ１０８に記録する。
【００５７】
時間ｔｗ２０３で、スクランブルメモリ１０８から不揮発性メモリ１０３に対して、メモリＩ／Ｆ１１３を介して、カテゴリＩＤを書き込むための転送が行われる。この際に、不揮発性メモリ１０３に書き込まれるカテゴリＩＤの信頼性を高めるために、ＥＣＣ回路１０９を利用してＥＣＣ符号が付加される。
【００５８】
続いて、時間ｔｗ２０４で、バッファメモリ１０６のデータバッファから不揮発性メモリ１０３に、セレクタ１１０とビット反転器１１２とメモリＩ／Ｆ１１３を介して、データの転送が行われる。図９（２）において、不揮発性メモリ１０３へのデータ転送でハッチングをかけた部分は、その転送においてデータのスクランブルが行われていることを示す。つまり、このときビット反転器１１２は、バッファメモリ１０６からのセクターデータとスクランブルパターン発生器１１１からの（スクランブルパターン）データとで排他的論理和演算を行う。また、このとき（ｔｗ２０４）同時にバッファメモリ１０６からＥＣＣ回路１０９のエンコーダ１１７にスクランブル処理後のセクターデータが転送され、エンコーダ１１７は、転送されたスクランブル処理後のセクターデータに対応するＥＣＣ符号の演算を行う。
【００５９】
最後に、時間ｔｗ２０５からは、エンコーダ１１７から不揮発性メモリ１０３に、セレクタ１１０とメモリＩ／Ｆ１１３を介して、ＥＣＣ符号の転送が行われる。このとき第１の実施の形態とは異なり、書き込みされるＥＣＣ符号にスクランブル処理が為されない。これは、ＥＣＣ符号を生成するためのセクターデータとして、スクランブル処理後のデータ（即ち、“０”と“１”の生起確率が平準化されたデータ）を使用しているので、生成したＥＣＣ符号も平準化されている可能性が高いからである。
【００６０】
次に、図１０（１）は、不揮発性メモリ１０３からの読み出しデータの流れと共に示す、本発明の第２の実施の形態に係る不揮発性記憶装置１０１の構成図である。図１０（１）は、図９（１）に示す構成図のデータの流れのみを変えたものである。従って、同一部位には同一符号を付して説明を省略する。
【００６１】
図１０（２）は、図１０（１）に示す不揮発性記憶装置１０１からデータを読み出す際のデータの転送の状態を示すタイミングチャートである。図１０（２）を基にして、不揮発性記憶装置１０１からのデータの読み出しについて説明する。最初に、時間ｔｒ２０１で、不揮発性メモリ１０３からスクランブルメモリ１０８にメモリＩ／Ｆ１１３を介してカテゴリＩＤが書き込まれる。この際に、書き込みの際に付加したＥＣＣ符号を基に誤りを検出し、誤りが発生しているとシンドローム１１８で判断されれば、訂正回路１１９は、スクランブルメモリ１０８内のデータを訂正する。
【００６２】
時間ｔｒ２０２で、不揮発性メモリ１０３からバッファメモリ１０６及びシンドローム１１８に、メモリＩ／Ｆ１１３を介して、セクターデータが書き込まれる。
【００６３】
続いて、時間ｔｒ２０３からは、不揮発性メモリ１０３からシンドローム１１８に、メモリＩ／Ｆ１１３を介して、ＥＣＣ符号が転送される。シンドローム１１８は、セクターデータとＥＣＣ符号とから、シンドローム符号を生成し、誤りの有無を判定する。
【００６４】
ここで不揮発性メモリ１０３から読み出したデータに誤りが在る場合には、時間ｔｒ２０４から、誤りの訂正を行う。訂正回路１１９は、シンドローム１１８の生成したシンドローム符号を基に誤り位置の演算処理を行い、バッファメモリ１０６のデータバッファの該当するビットのデータを反転することで誤りの訂正を行う。
【００６５】
最後に、時間ｔｒ２０５からは、バッファメモリ１０６から不揮発性記憶装置１０１外部のホスト５０へ、ビット反転器１１２とホストＩ／Ｆ１０５を介して、データが読み出し転送される。図１０（２）において、バッファメモリ１０６からのデータ転送でハッチングをかけた部分は、その転送においてデータのスクランブルが行われていることを示す。つまり、このときビット反転器１１２は、バッファメモリ１０６からのセクターデータとスクランブルパターン発生器１１１からの（スクランブルパターン）データとで排他的論理和演算を行う。スクランブルパターン発生器１１１は、ｔｒ２０１で不揮発性メモリ１０３から読み出されてスクランブルメモリ１０８に格納されたカテゴリＩＤと、メモリＩ／Ｆ１１３から得られる物理ページアドレス及び物理カラムアドレスとを基にして、スクランブルパターンを生成する。
【００６６】
［第３の実施の形態］
図１１（１）は、本発明の第３の実施の形態に係る不揮発性記憶装置１０１の構成図であり、不揮発性メモリ１０３への書き込みデータの流れと共に示している。図１１（１）に示す第３の実施の形態に係る不揮発性記憶装置１０１は、図１（１）に示す第１の実施の形態に係る不揮発性記憶装置と略同様のものであるので、同一部位には同一符号を付して説明を省略する。
【００６７】
図１１（１）に示す第３の実施の形態に係る不揮発性記憶装置１０１と、図１（１）に示す第１の実施の形態に係る不揮発性記憶装置との差異は、カテゴリ分析機能部１０７がスクランブルパターンテスター３２０に置き換わっている部分である。スクランブルパターンテスター３２０は、適用可能な複数のスクランブルパターンを実際にセクターデータに適用してその上でどのスクランブルパターンが最適であるかをテストしてスクランブルパターンを選択する。
【００６８】
図１１（２）は、スクランブルパターンテスター３２０の内部の構成図である。スクランブルパターンテスター３２０は、スクランブルパターン発生器群３２１、データカウンタ群３２２、及び比較器３２３を含む。
【００６９】
スクランブルパターン発生器群３２１は、複数のスクランブルパターン発生器から構成される。個々のスクランブルパターン発生器は、第１の実施の形態に係る不揮発性記憶装置に含まれるスクランブルパターン発生器１１１で構成され、入力としてのカテゴリＩＤが個々に固定されている。図１１（２）では、カテゴリＩＤ＝０ｘ００，０ｘ０Ｆ，０ｘ５５，０ｘＦＦの４通りに固定されたものを示しているが、４通りに限定されるものではない。
【００７０】
ホストＩ／Ｆ１０５から物理カラムアドレスとセクターデータが、制御回路１０４からテストを行うセクターデータを書き込む予定の物理ページアドレスが、スクランブルパターン発生器群３２１の全てのスクランブルパターン発生器に与えられる。個々のスクランブルパターン発生器からスクランブル後のデータが出力されて、データカウンタ群３２２内の対応する個々のデータカウンタに入力される。データカウンタ群３２２の個々のデータカウンタでは、夫々データ“１”の個数をカウントする。
【００７１】
比較器３２３は、データカウンタ群３２２の夫々のデータカウンタのカウント結果を比較して、データ“１”の個数が全てのビットの半分の個数に一番近いものを判定する。全てのビットの半分の個数に一番近いということは、スクランブル後のセクターデータにおいてデータ“０”とデータ“１”との生起確率が最も良好にバランスしているスクランブルパターンであることを示す。判定して導出された結果をカテゴリＩＤとして、スクランブルメモリ１０８のカテゴリＩＤ領域に記録する。
【００７２】
つまり、第１の実施の形態ではセクターデータのデータパターンを分析することで、最適とされるスクランブルパターンが選択されている。一方、第３の実施の形態においては、適用可能な複数スクランブルパターンが実際にセクターデータに適用され、その上でどのスクランブルパターンが最適であるかがテストされて、スクランブルパターンが選択されている。
【００７３】
以上のように、スクランブルパターンテスター３２０で判定される最適のスクランブルパターンによって、不揮発性記憶装置１０１外部からの書き込みデータをスクランブルして各データの生起確率を平準化することにより、実効的に劣化要因に対する耐性を高めることができる。
【００７４】
［多値メモリセルへの適用］
なお、図１２（１）は、多値メモリセルにおける閾値の分布を示したものである。多値のメモリセルでは、それぞれのメモリセルのデータは、１ｓｔ．（第１）と２ｎｄ．（第２）の２つの物理ページに対して分けて書き込まれる。つまり、メモリセルに対する閾値の分布を平準化（全ての閾値レベルの分布の割合を均等にする）には、１ｓｔ．（第１）と２ｎｄ．（第２）の２つの物理ページがどのように対応しているかが把握されていなければならない。
【００７５】
図１２（２）は、どの物理ページが組になって１ｓｔ．と２ｎｄ．の２つの物理ページを構成するかの一例を示すテーブルである。図１２（２）に示す表によれば、物理ページ０が１ｓｔ．物理ページであり、物理ページ１が２ｎｄ．物理ページであり、物理ページ０と物理ページ１とに分けてデータが書き込まれるメモリセルがあることがわかる。多値メモリセルを利用する場合には、第１〜第３の実施の形態に係る不揮発性記憶装置において、多値メモリセルにおける物理ページの組が把握された上で、各閾値の分布が平準化されるようにスクランブルパターンが決定されればよい。このようにすることにより、多値メモリセルにおいても実効的に劣化要因に対する耐性を高めることができる。
【産業上の利用可能性】
【００７６】
本発明は、データ信頼性を実効的に向上することが可能なユーザ利便性の高い不揮発性記憶装置に有用である。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施の形態に係る不揮発性記憶装置の構成図であり、不揮発性メモリへの書き込みデータの流れと共に示している（図１（１））。更に、図１（１）に示す不揮発性記憶装置にデータを書き込む際のデータの転送の状態を示すタイミングチャートである（図１（２））。
【図２】カテゴリ分析機能部のカテゴリ分類ルールを示すテーブルである
【図３】スクランブルパターン発生器が発生するスクランブルパターンデータの例である。
【図４】不揮発性メモリからの読み出しデータの流れと共に示す、本発明の第１の実施の形態に係る不揮発性記憶装置の構成図である（図４（１））。更に、図４（１）に示す不揮発性記憶装置からデータを読み出す際のデータの転送の状態を示すタイミングチャートである（図４（２））。
【図５】スクランブルパターンの空のテーブルである。
【図６】図５の空のテーブルに具体的なスクランブルパターンを入れたものである。
【図７】適切なスクランブルパターンの一例である。
【図８】チェッカーパターンに図７のスクランブルパターンを適用した後のパターンである。
【図９】本発明の第２の実施の形態に係る不揮発性記憶装置の構成図であり、不揮発性メモリへの書き込みデータの流れと共に示している（図９（１））。更に、図９（１）に示す不揮発性記憶装置にデータを書き込む際のデータの転送の状態を示すタイミングチャートである（図９（２））。
【図１０】不揮発性メモリからの読み出しデータの流れと共に示す、本発明の第２の実施の形態に係る不揮発性記憶装置の構成図である（図１０（１））。更に、図１０（１）に示す不揮発性記憶装置からデータを読み出す際のデータの転送の状態を示すタイミングチャートである（図１０（２））。
【図１１】本発明の第３の実施の形態に係る不揮発性記憶装置の構成図であり、不揮発性メモリへの書き込みデータの流れと共に示している（図１１（１））。更に、スクランブルパターンテスターの内部の構成図である（図１１（２））。
【図１２】ＮＡＮＤタイプのフラッシュメモリにおける多値メモリセルの閾値の分布を示すグラフである（図１２（１））。更に、どの物理ページが組になって１ｓｔ．と２ｎｄ．の２つの物理ページを構成するかの一例を示すテーブルである（図１２（２））。
【図１３】１２８ＭＢのＮＡＮＤタイプのフラッシュメモリのメモリセルアレイの構成図である（図１３（１）。更に、ＮＡＮＤタイプのフラッシュメモリの、ある物理ブロックの、あるカラムの、あるＩＯを構成するメモリセルを示した図（ＮＡＮＤストリングの図）である（図１３（２））。
【図１４】ＮＡＮＤタイプのフラッシュメモリにおけるメモリセルの閾値の分布を示すグラフである（図１４（１））。ＮＡＮＤストリングにおける合成等価抵抗値の一般的な分布の例のグラフ（図１４（２））である。ＮＡＮＤストリングにおける合成等価抵抗値の特徴的な分布の例のグラフ（図１４（３））である。
【符号の説明】
【００７８】
５０・・・ホスト、１０１・・・不揮発性記憶装置、１０２・・・コントローラ、１０３・・・不揮発性メモリ、１０４・・・制御回路、１０５・・・ホストＩ／Ｆ（インターフェース）、１０６・・・バッファメモリ、１０７・・・カテゴリ分析機能部、１０８・・・スクランブルメモリ、１０９・・・ＥＣＣ回路、１１０・・・セレクタ、１１１・・・スクランブルパターン発生器、１１２・・・ビット反転器、１１３・・・メモリＩ／Ｆ（インターフェース）、１１４・・・論物変換テーブル、１１５・・・消去ブロックテーブル、１１６・・・不良ブロックテーブル、１１７・・・エンコーダ、１１８・・・シンドローム、１１９・・・訂正回路、３２０・・・スクランブルパターンテスター、３２１・・・スクランブルパターン発生器群、３２２・・・データカウンタ群、３２３・・・比較器。
【図１】
2010108029.tif 000003
【図２】
2010108029.tif 000004
【図３】
2010108029.tif 000005
【図４】
2010108029.tif 000006
【図５】
2010108029.tif 000007
【図６】
2010108029.tif 000008
【図７】
2010108029.tif 000009
【図８】
2010108029.tif 000010
【図９】
2010108029.tif 000011
【図１０】
2010108029.tif 000012
【図１１】
2010108029.tif 000013
【図１２】
2010108029.tif 000014
【図１３】
2010108029.tif 000015
【図１４】
2010108029.tif 000016