JP2010108029A - 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム - Google Patents
不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム Download PDFInfo
- Publication number
- JP2010108029A JP2010108029A JP2008276471A JP2008276471A JP2010108029A JP 2010108029 A JP2010108029 A JP 2010108029A JP 2008276471 A JP2008276471 A JP 2008276471A JP 2008276471 A JP2008276471 A JP 2008276471A JP 2010108029 A JP2010108029 A JP 2010108029A
- Authority
- JP
- Japan
- Prior art keywords
- data
- nonvolatile memory
- sector data
- scramble
- scramble pattern
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】一般的なセクターデータの書き込みはランダムなデータではなく、データ“0”とデータ“1”の発生頻度の偏った特徴的なデータである。そういった偏ったセクターデータを不揮発性メモリに書き込むと不良が発生する確率が高くなる。書き込みデータにおけるデータ“0”とデータ“1”の発生頻度の偏りを解消し、信頼性の高い不揮発性記憶装置を実現する。
【解決手段】不揮発性記憶装置において、カテゴリ分析機能部でセクターデータにおけるデータの“0”とデータ“1”の発生頻度からカテゴリを決定し、スクランブルパターン発生器でデータが書き込まれるアドレス位置の情報と前記カテゴリから決定したスクランブルパターンを発生し、スクランブル回路でセクターデータのスクランブルを行い、前記カテゴリとともに不揮発性メモリに書き込む。
【選択図】図1
【解決手段】不揮発性記憶装置において、カテゴリ分析機能部でセクターデータにおけるデータの“0”とデータ“1”の発生頻度からカテゴリを決定し、スクランブルパターン発生器でデータが書き込まれるアドレス位置の情報と前記カテゴリから決定したスクランブルパターンを発生し、スクランブル回路でセクターデータのスクランブルを行い、前記カテゴリとともに不揮発性メモリに書き込む。
【選択図】図1
Description
本発明は、フラッシュメモリ等の不揮発性メモリを用いた不揮発性記憶装置、及び、不揮発性メモリを制御する不揮発性メモリコントローラに関する。
近年、書き換え可能な不揮発性メモリであるNANDタイプのフラッシュメモリを搭載した不揮発性記憶装置としてのメモリーカードは、デジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。同時に、半導体デバイスとしてもプロセスの微細化に伴いそのビット単価が低下していることから、廉価な記憶デバイスとしてメモリーカード以外にも、例えばHDD置き換えのSSDや、ホスト機器に直接搭載するメモリ等にも用途が拡がっている。
しかしながら、プロセスの微細化が及ぼす影響の別の面として、フラッシュメモリの信頼性の低下が挙げられる。つまり、フラッシュメモリの微細化に伴い、情報を記憶するための電子の数が少なくなる。そのことはリテンション、リードディスターブ、プログラムディスターブ等の種々の劣化要因に対するマージンが少なくなり不良になりやすくなることに繋がる。
フラッシュメモリにおける種々の劣化要因に対して信頼性を向上させるための手法について、様々なものが提案されている。特許文献1には、閾値電圧分布の幅・間隔を広くとるためにワード線の電位に負電位を用いることで信頼性を向上させることが示されている。また、特許文献2には、メモリセルに対するプログラムのストレスを低減するために、書き込みデータの反転と非反転を切り替えることで信頼性を向上させることが示されている。また誤り訂正回路(ECC)を利用することで信頼性を向上させることも一般的に使用されている技術である。
特開平10−11981号公報
特開平5−298894号公報
ところで、NANDタイプフラッシュメモリにおいては、上記特許文献に提示された問題以外に、本質的ではないが実効的に信頼性を低下させる要因がある。以下これについて説明する。ここで、“本質的ではない”というのは“任意のデータに対して適用可能ではないこと”を意味する。“実効的”とは“実際に使用されるデータに対しては適用可能”なことを意味する。
まず、NANDタイプのフラッシュメモリのメモリセルアレイの構成の一例を図13(1)に示す。図13(1)は、128MBのNANDタイプのフラッシュメモリのメモリセルアレイの構成である。ここでのメモリセルアレイは、1024個の物理ブロック(Block0,Block1,・・・,Block1023)からなる。物理ブロックとは、フラッシュメモリにおけるデータの消去単位である。またここでの物理ブロックは、64個の物理ページ(page0,page1,・・・,page63)からなる。物理ページとは、フラッシュメモリにおけるデータの書き込み単位である。
物理ページは、カラムアドレスが0から2111までの2K+64個のカラムと、8つのIOとからなる「2KB(キロバイト)+64B(バイト)」の容量を持つ。一般的には、物理ページのうちの2KBの領域にはデータが、64Bの領域には誤り訂正のためのECC符号やその他の管理情報が、書き込まれる。従って、図13(1)に示すNANDタイプのフラッシュメモリの容量は正確には128MB+4MBであるが、一般的に128MBと表現される。
図13(2)は、NANDタイプのフラッシュメモリの、ある物理ブロックの、あるカラムの、あるIOを構成するメモリセルを示した図である。一般的にこの図はNANDストリングの図と称される。32個のメモリセル(MC0,MC1,MC2,・・・,MC30,MC31)が直列に接続されている。直列接続されたメモリセルの端のMC0は、ビット線(Bit Line)にSelectGate(セレクトゲート)を介して接続され、直列接続されたメモリセルの端のMC31は、接地レベル(GND)にSourceGate(ソースゲート)を介して接続される。図13(2)中に示した電圧印加条件(VCC,GND)は、メモリセルMC1からデータを読み出すためのバイアス条件である。この条件下においてビット線(BitLine)から接地レベル(GND)に流れる電流量をビット線に接続されたセンスアンプ(図示せず。)で検出することでメモリセルMC1のデータを読み出すことができる。
図14(1)は、NANDタイプのフラッシュメモリにおけるメモリセルの閾値の分布を示したものであり、閾値が負のメモリセルのデータは“1”で、閾値が正のメモリセルのデータは“0”であることを示す。つまり、図13(2)における電圧印加条件において、電流が流れればデータは“1”で電流が流れなければデータは“0”である。
ここで、ビット線(BitLine)から接地レベル(GND)に流れる電流量に関して、読み出し対象となっているメモリセルMC1以外のメモリセルに着目する。読み出し対象以外のメモリセルのゲート電圧にはVCCが印加されているので、電流がカットオフされること無く流れるが、それぞれのメモリセルに対するデータの書き込み状態によって各メモリセルの等価的な抵抗値は異なる。
ここで、読み出し対象のメモリセルMC1を除く31個のメモリセルの合成等価抵抗を考える。合成等価抵抗は、31個のメモリセルのデータが全て“0”であるときに最大値(Rmax)をとり、31個のメモリセルのデータが全て“1”であるときに最小値(Rmin)をとる。センスアンプはもちろん合成等価抵抗が最大値(Rmax)であっても最小値(Rmin)であっても正しく読み出すことができるようにマージンを持って設計される。合成等価抵抗が取り得る値の分布は、もちろん書き込みを行うデータに依存するが、各メモリセルにおける“1”と“0”の書き込まれる確率が夫々等しく50%であると仮定すると、その分布は2項分布に従う。即ち、図14(2)の実線グラフにより示す分布のようになる。
図14(2)の実線グラフには2の31乗個の状態の分布が示されており、最大値(Rmax)近辺及び最小値(Rmin)近辺にはほとんど分布しないことが分かる。ちなみに論理上は31個のメモリセルに含まれる“1”のデータが2個以下の場合と31個のメモリセルに含まれる“0”のデータが2個以下の場合を足しても1ppmにも満たない。以上は各ビットにおけるデータ“0”の生起確率およびデータ“1”の生起確率が等しい場合の分布である。
しかしながら、実使用下において書き込まれるデータにおいては、上述の仮定が成り立たないことが多い。実際にはデータ“0”とデータ“1”の生起確率は等しく無い。また、等しくないだけでなくその生起確率は一定では無く、書き込みを行うデータの種別に大きく依存して変化する。図14(3)の実線グラフは、実使用下において書き込まれるデータの一例における合成等価抵抗の分布を示す。実際には、最大値(Rmax)近辺及び最小値(Rmin)近辺に分布が相当多く存在することが分かる。このことは、例えば実使用下では有為なデータ以外のデータは“0”や“1”で略全て埋められることに起因している。そのために実使用下で書き込まれるデータは何らかの特徴をもったデータであることが多く、その結果、例えば図14(3)の実線グラフに示されるように、想定される分布における端部に集中して分布することとなる。
種々の劣化要因が適用されると、このような分布の状態からその分布が変動する。劣化後の分布の例を図14(3)の破線グラフに示す。実線から破線に分布が変動することにより、Rmax(変動前の最大値)よりも大きな抵抗値や、Rmin(変動前の最小値)よりも小さな抵抗値の領域にも、分布が広がるようになることがわかる。
これと対比してデータ“0”とデータ“1”との生起確率が等しい場合の劣化後の分布を、図14(2)の破線グラフに示す。Rmax(変動前の最大値)よりも大きな抵抗値や、Rmin(変動前の最小値)よりも小さな抵抗値の領域にはほとんど分布していないことが分かる。
たとえ劣化後であっても合成等価抵抗値が、Rmax(変動前の最大値)よりも小さく、Rmin(変動前の最小値)よりも大きな値であればデータは正しく読み出され得る。しかし、合成等価抵抗値がRmax(変動前の最大値)よりも大きい場合にはデータが正しく読み出されなくなる可能性がある。
前述のように、フラッシュメモリにおける信頼性を向上させるために誤り訂正回路を利用することは一般的な技術である。つまり、図14(2)の破線グラフに示すように、Rmax(変動前の最大値)よりも大きな抵抗値をとるケースが極めて少ないならば、誤り訂正回路を利用することによりデータを正しく読み出すようにすることは可能である。しかしながら、図14(3)の破線グラフに示すように、Rmax(変動前の最大値)よりも大きな抵抗値をとるケースが相当に多いならば、誤り訂正回路の利用では対応しきれない可能性がある。
以上が、NANDタイプのフラッシュメモリにおける、本質的ではないが実効的に信頼性を低下させる要因である。最悪条件の値はいずれの場合でも同じであるが、実効的な書き込みデータの前提の下では、特徴的なデータを書き込むことが信頼性を低下させる要因となる。
なお、このような現象はNANDタイプのフラッシュメモリに特有のものではない。つまり、実使用下における書き込みデータの偏在により、合成等価抵抗の領域の端部に多くのケース(度数)が分布するということは、いずれのメモリにも発生し得る現象である。
また、上記ではNANDストリングの構成を提示して同一ストリング内のデータの分布について説明したが、上述の現象は読み出し動作に特有のものではなく、書き込み動作においても同様に発生する。つまり、同一の書き込み単位であるページ単位で特徴的なデータが書き込まれる場合にも信頼性を低下させる要因となる。
以上、説明してきたように、一般的な書き込みのデータはランダムなデータではなく、データ“0”若しくはデータ“1”のいずれかの発生頻度の偏った特徴的なデータであるので、ある状態(例えば、合成等価抵抗)の値が、取りうる状態として設計時に想定される範囲の端部に近い領域に偏ることが多い。このような状態では、種々の劣化要素を要因として不良が発生する確率が高くなる。本発明は、メモリへの書き込みのデータにおける、データ“0”若しくはデータ“1”の発生頻度の偏りを解消することによって、ある状態の値が、取りうる状態として設計時に想定される範囲の端部へ偏って分布することを減少させることを目的とする。
上記の目的を達成するために、本発明の不揮発性メモリコントローラは、
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする。
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする。
上記の目的を達成するために、本発明の不揮発性記憶装置は、
不揮発性メモリと不揮発性メモリコントローラからなる不揮発性記憶装置であり、
前記不揮発性メモリコントローラは、
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする。
不揮発性メモリと不揮発性メモリコントローラからなる不揮発性記憶装置であり、
前記不揮発性メモリコントローラは、
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする。
上記の目的を達成するために、本発明の不揮発性記憶システムは、
不揮発性記憶装置と、前記不揮発性記憶装置に対してデータの書き込み、読み出しを行うホスト機器とを有し、
前記不揮発性記憶装置は、
不揮発性メモリと不揮発性メモリコントローラからなる不揮発性記憶装置であり、
前記不揮発性メモリコントローラは、
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする。
不揮発性記憶装置と、前記不揮発性記憶装置に対してデータの書き込み、読み出しを行うホスト機器とを有し、
前記不揮発性記憶装置は、
不揮発性メモリと不揮発性メモリコントローラからなる不揮発性記憶装置であり、
前記不揮発性メモリコントローラは、
ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする。
本発明を利用することにより、不揮発性記憶装置にデータを書き込む際に特徴的なデータを特徴的ではないデータに変換して書き込むことにより、初期における(即ち、劣化以前の)特性分布の端部に位置する分布領域を減少できる。そのためメモリセルの特性が劣化要因によって変動した場合でも、初期における分布の範囲をはみ出す特性の割合が少ないので、結果として信頼性の高い不揮発性記憶装置を実現することが可能になる。
以下、図面を参照して本発明に係る好適な実施の形態を説明する。
[第1の実施の形態]
図1(1)は、本発明の第1の実施の形態に係る不揮発性記憶装置101の構成図であり、不揮発性メモリ103への書き込みデータの流れと共に示している。不揮発性記憶装置101は、コントローラ102と不揮発性メモリ103とを含む。
図1(1)は、本発明の第1の実施の形態に係る不揮発性記憶装置101の構成図であり、不揮発性メモリ103への書き込みデータの流れと共に示している。不揮発性記憶装置101は、コントローラ102と不揮発性メモリ103とを含む。
不揮発性記憶装置101は、外部のホスト50からアドレス指定を伴うデータの書込みや読み出しが可能な装置である。不揮発性メモリ103は、不揮発性記憶装置101に書き込まれるデータを不揮発で記憶するメモリである。不揮発性メモリ103の内部のメモリセルアレイの構成は、前述の図13(1)に示すものと同じである。コントローラ102は、制御回路104、ホストI/F(インターフェース)105、バッファメモリ106、カテゴリ分析機能部107、スクランブルメモリ108、ECC回路109、セレクタ110、スクランブルパターン発生器111、スクランブル回路であるビット反転器112、及び、メモリI/F(インターフェース)113を含む。
制御回路104は、論物変換テーブル114、消去ブロックテーブル115、及び不良ブロックテーブル116を参照して、コントローラ102内の各機能部やリソースを制御する。論物変換テーブル114は、論理アドレスと物理アドレスとの対応情報を示すテーブルである。ここで論理アドレスとは、不揮発性記憶装置外部からのアドレスを不揮発性メモリ103の消去単位と同じ容量のアドレスに変換したアドレスである。物理アドレスとは、不揮発性メモリの消去単位である物理ブロックのアドレスである。つまり、論物変換テーブル114は、不揮発性記憶装置101外部からデータを読み出す際に不揮発性記憶装置101外部から指定したアドレスに対応するデータが不揮発性メモリ103のどの物理ブロックに存在するかを得るために使用するテーブルである。消去ブロックテーブル115は、不揮発性メモリ103の物理ブロックが消去済みであるか、そうでないかを物理ブロック毎にビット情報として格納するテーブルである。消去ブロックテーブル115は、不揮発性記憶装置101外部からデータを書き込む際に、データを書き込み可能な物理ブロックの場所を得るために使用するテーブルである。不良ブロックテーブル116は、不揮発性メモリ103の不良ブロックの物理ブロックアドレスを記憶するテーブルである。
バッファメモリ106は、複数のセクター(ここで、1セクターは512B(バイト)である)のデータを記憶できる揮発性のメモリで構成される。各セクターのデータは、セクターバッファに格納する。図1(1)では、4セクター分のデータを格納するために4つのセクターバッファを備える例を示している。スクランブルメモリ108は、バッファメモリ106の各セクターバッファに対応してカテゴリIDを記憶する。ここでは各カテゴリIDが1バイトの情報からなるとして、合計4バイトのメモリからなる。
ECC回路109は、エンコーダ117、シンドローム118、及び訂正回路119を含む。ECC回路109は、不揮発性メモリ103に書き込んだデータに劣化要因による誤りが発生したときに、その誤りを訂正するための誤り訂正回路である。本明細書に示す例では、512B(バイト)のデータに管理情報の6バイトを加えた518バイトに、10バイトのECC符号を付加することで、リードソロモン符号を使用して4ビットまでの誤り訂正を可能としている。エンコーダ117は、不揮発性メモリ103に書き込むデータに付加するECC符号ビットを生成する回路ブロックである。
シンドローム118は、不揮発性メモリ103から読み出したデータと管理情報とECC符号とから誤りの有無を検出し、誤りがあれば誤りの発生場所を演算で得るために必要な情報であるシンドローム符号群を生成する回路ブロックである。訂正回路119は、不揮発性メモリ103から読み出したデータに誤りが有るとシンドローム118のシンドローム符号群から判断されたときに、シンドローム符号群を元に誤りの発生場所を算出してバッファメモリ106にて訂正する回路ブロックである。
シンドローム118は、不揮発性メモリ103から読み出したデータと管理情報とECC符号とから誤りの有無を検出し、誤りがあれば誤りの発生場所を演算で得るために必要な情報であるシンドローム符号群を生成する回路ブロックである。訂正回路119は、不揮発性メモリ103から読み出したデータに誤りが有るとシンドローム118のシンドローム符号群から判断されたときに、シンドローム符号群を元に誤りの発生場所を算出してバッファメモリ106にて訂正する回路ブロックである。
図1(2)は、図1(1)に示す不揮発性記憶装置101にデータを書き込む際のデータの転送の状態を示すタイミングチャートである。図1(2)を基にして不揮発性記憶装置101へのデータの書き込みについて説明する。最初に時間tw101で、不揮発性記憶装置101外部にあるホスト50は、不揮発性記憶装置101に対して書き込みデータであるセクターデータの転送を開始する。ホスト50から転送されるセクターデータは、ホストI/F105を介して、バッファメモリ106とカテゴリ分析機能部107とに転送される。カテゴリ分析機能部107は、ホストから転送されるデータに対してそのカテゴリを分類する。本実施の形態では、ホスト50から転送される512B(バイト)のセクターデータに関して、含まれる“1”のビットの数をカウントすると共に、そのデータ構造がファイルシステムで使用するディレクトリエントリと判断できるか否かの分析を行い、これらに基づいて4つのカテゴリに分類している。
カテゴリ分析機能部107は、ホストからのセクターデータの持つ固有の特性や属性(例えば、周期性、規則性、データ偏在性)を分析しその分析に基づいて該セクターデータを幾つかのカテゴリに分類している。このように、ホストからのセクターデータの持つ固有の特性や属性に基づいてカテゴリに分類し且つ各カテゴリ毎に適切な(後述の)スクランブルパターンを用意することで、スクランブル後のデータにおいて、より平準化が実現される。
ディレクトリエントリはデータとして固有の規則性を有している。ここでの4カテゴリの分類は、ディレクトリエントリの固有の規則性に基づくものであり、一つの分類例である。つまり、カテゴリ分類は上記のものに限定されず、データの他の特性・属性に基づいてカテゴリ分類を行うようにしてもよい。
図2は、カテゴリ分析機能部107のカテゴリ分類ルールを示すテーブルである。図1(2)における時間tw102にて、カテゴリ分析機能部107は、ホスト50が時間tw101から転送してきたセクターデータの分析結果を、カテゴリIDとしてスクランブルメモリ108に記録する。
セクターデータの512Bに含まれるビットの90%以上が“1”のとき、即ち、3687ビット以上の“1”データが存在する場合、カテゴリIDとして0xFF(“1”データが多いセクターデータを意味する)をスクランブルメモリ108の対応するカテゴリID領域に記録する。
セクターデータの512Bに含まれるビットの10%未満が“1”のとき、即ち“1”データの存在が409ビット以下の場合、カテゴリIDとして0x00(“0”データが多いセクターデータを意味する)をスクランブルメモリ108の対応するカテゴリID領域に記録する。
セクターデータの512Bに含まれるビットの10%以上90%未満が“1”のとき、即ち、410ビット以上3687ビット未満が“1”データのときには、“1”のビットのカウントとは別に、更にディレクトリエントリに類似したデータであるかどうかの判定結果を利用する。つまり、ディレクトリエントリに類似したデータであるかどうかの判定結果を基にして、ディレクトリエントリ適合率が80%以上と判断した場合にはカテゴリIDとして0x0Fを、そうでない場合にはカテゴリIDとして0x55を、記録する。
セクターデータの512Bに含まれるビットの90%以上が“1”のとき、即ち、3687ビット以上の“1”データが存在する場合、カテゴリIDとして0xFF(“1”データが多いセクターデータを意味する)をスクランブルメモリ108の対応するカテゴリID領域に記録する。
セクターデータの512Bに含まれるビットの10%未満が“1”のとき、即ち“1”データの存在が409ビット以下の場合、カテゴリIDとして0x00(“0”データが多いセクターデータを意味する)をスクランブルメモリ108の対応するカテゴリID領域に記録する。
セクターデータの512Bに含まれるビットの10%以上90%未満が“1”のとき、即ち、410ビット以上3687ビット未満が“1”データのときには、“1”のビットのカウントとは別に、更にディレクトリエントリに類似したデータであるかどうかの判定結果を利用する。つまり、ディレクトリエントリに類似したデータであるかどうかの判定結果を基にして、ディレクトリエントリ適合率が80%以上と判断した場合にはカテゴリIDとして0x0Fを、そうでない場合にはカテゴリIDとして0x55を、記録する。
時間tw103で、スクランブルメモリ108から不揮発性メモリ103に対してカテゴリIDを書き込むための転送を、メモリI/F113を介して行う。
続いて、時間tw104で、バッファメモリ106のデータバッファから、セレクタ110とビット反転器112とメモリI/F113とを介して、不揮発性メモリ103にデータの転送を行う。図1(2)において、不揮発性メモリ103へのデータ転送でハッチングをかけた部分は、その転送においてデータのスクランブルが行われていることを示す。つまり、このときビット反転器112では、バッファメモリ106からのセクターデータと、スクランブルパターン発生器111からの(スクランブルパターン)データとで、排他的論理和演算を行う。スクランブルパターン発生器111が発生する(スクランブルパターン)データの例を、図3に示している。
続いて、時間tw104で、バッファメモリ106のデータバッファから、セレクタ110とビット反転器112とメモリI/F113とを介して、不揮発性メモリ103にデータの転送を行う。図1(2)において、不揮発性メモリ103へのデータ転送でハッチングをかけた部分は、その転送においてデータのスクランブルが行われていることを示す。つまり、このときビット反転器112では、バッファメモリ106からのセクターデータと、スクランブルパターン発生器111からの(スクランブルパターン)データとで、排他的論理和演算を行う。スクランブルパターン発生器111が発生する(スクランブルパターン)データの例を、図3に示している。
スクランブルパターン発生器111は、スクランブルメモリ108からのカテゴリIDと、メモリI/F113から得られる物理ページアドレスと物理カラムアドレスとを基にして、図3に示されるテーブルに従ってスクランブルパターンを生成する。なお、カテゴリIDが0x0F又は0x55であるとき(即ち、ディレクトリエントリ適合率が80%以上、又は80%未満と判断されたとき)、ディレクトリエントリに固有の規則性を考慮したスクランブルパターンが、夫々生成される。スクランブルパターン発生器111は、例えば読み出し専用のメモリで構成すればよい。
スクランブルパターンの生成に当たり、カラムアドレスを参照する理由は、同一ページ内におけるデータ“0”と“1”の発生頻度の偏りをなくすためである。スクランブルパターンの生成にあたり、物理ページアドレスを参照する理由は、同一NANDストリング内におけるデータ“0”と“1”の発生頻度の偏りをなくすためである。スクランブルパターンの生成にあたり、カテゴリIDを参照する理由は、カテゴリ分析機能部107の分析結果に基づいた適切なスクランブルパターンを選択することにより、スクランブル後のデータ“0”と“1”の発生頻度の偏りをなくすためである。また、このとき(tw104)同時にバッファメモリ106からECC回路109のエンコーダ117にセクターデータが転送され、エンコーダ117では転送されるセクターデータに対応するECC符号の演算が行われる。
スクランブルパターンの生成に当たり、カラムアドレスを参照する理由は、同一ページ内におけるデータ“0”と“1”の発生頻度の偏りをなくすためである。スクランブルパターンの生成にあたり、物理ページアドレスを参照する理由は、同一NANDストリング内におけるデータ“0”と“1”の発生頻度の偏りをなくすためである。スクランブルパターンの生成にあたり、カテゴリIDを参照する理由は、カテゴリ分析機能部107の分析結果に基づいた適切なスクランブルパターンを選択することにより、スクランブル後のデータ“0”と“1”の発生頻度の偏りをなくすためである。また、このとき(tw104)同時にバッファメモリ106からECC回路109のエンコーダ117にセクターデータが転送され、エンコーダ117では転送されるセクターデータに対応するECC符号の演算が行われる。
本実施の形態のスクランブルパターン発生器111はスクランブル処理後のデータにおける“1”“0”の生起確率が平準化されるようにスクランブルパターンを生成する。このスクランブルパターンについては、後で詳しく説明する。
最後に時間tw105にて、エンコーダ117から、セレクタ110とビット反転器112とメモリI/F113とを介して、不揮発性メモリ103にECC符号が転送される。このとき、書き込みされるECC符号にスクランブルをかけている(図1(2)参照)。これは、ECC符号を生成するためのセクターデータとして、データ“0”と“1”の生起確率が偏っている可能性のある、スクランブル前の特徴的なデータを用いたからである。即ち、特徴的なデータを基にして生成したECC符号は特徴的である可能性があり、その特徴を解消するためである。
次に、図4(1)は、本発明の第1の実施の形態に係る不揮発性記憶装置101の構成図であって、特に、不揮発性メモリ103からの読み出しデータの流れを説明した図である。即ち、図4(1)は、図1(1)に示す構成図のデータの流れのみを変えたものである。従って、同一部位には同一符号を付して説明を省略する。
図4(2)は、図4(1)に示す不揮発性記憶装置101からデータを読み出す際のデータの転送の状態を示すタイミングチャートである。図4(2)を基にして不揮発性記憶装置101からのデータの読み出しについて説明する。最初に時間tr101で、不揮発性メモリ103からメモリI/F113を介してスクランブルメモリ108にカテゴリIDが書き込まれる。時間tr102で、不揮発性メモリ103からバッファメモリ106及びシンドローム118に、メモリI/F113とビット反転器112とを介して、セクターデータが書き込まれる。図4(2)において、不揮発性メモリ103からのデータ転送でハッチングをかけた部分は、その転送においてデータのスクランブルが行われていることを示す。つまり、このときビット反転器112は、不揮発性メモリ103からのセクターデータとスクランブルパターン発生器111からの(スクランブルパターン)データとで排他的論理和演算を行うことで、セクターデータに対してスクランブルを行う。スクランブルパターン発生器111は、tr101にて、不揮発性メモリ103から読み出されてスクランブルメモリ108に格納されたカテゴリIDと、メモリI/F113から得られる物理ページアドレスと物理カラムアドレスを基にして、図3に示されるテーブルに従ってスクランブルパターンを生成する。
続いて、時間tr103からは、不揮発性メモリ103からシンドローム118に、メモリI/F113とビット反転器112を介して、ECC符号が転送される。シンドローム118は、セクターデータとECC符号からシンドローム符号を生成し、誤りの有無を判定する。不揮発性メモリ103から読み出したデータに誤りが在る場合には、時間tr104から誤りの訂正を行う。訂正回路119は、シンドローム118の生成したシンドローム符号を基に誤り位置の演算処理を行い、バッファメモリ106のデータバッファの該当するビットのデータを反転することで誤りの訂正を行う。
最後に、時間tr105からは、バッファメモリ106からホストI/F105を経由して不揮発性記憶装置101外部のホスト50へとデータを読み出しのために転送する。
[スクランブルパターンの例]
図14(2)に示すような2項分布に近い分布を得るためには“1”と“0”の書き込まれる確率をほぼ等しくする必要があるが、そのような分布にするためのスクランブルパターンの生成方法の一例を挙げる。
図14(2)に示すような2項分布に近い分布を得るためには“1”と“0”の書き込まれる確率をほぼ等しくする必要があるが、そのような分布にするためのスクランブルパターンの生成方法の一例を挙げる。
ここでは、簡単のために1カラム、8I/O、32ページの場合を例にとって説明する。すると、スクランブルパターンとして256ビット(=1カラム×8I/O×32ページ)の情報が必要である。スクランブルパターンの(空)テーブルを図5に示す。図5は縦軸に32個のページを取って、横軸に8個のI/Oを取っている。各枠にビットを反転することを示す“1”またはビットを反転しないままであることを示す“0”が入ることになる。
最適なスクランブルパターンを判定するためには、様々なデータパターンに対してスクランブルパターンを適用した後で、まず、各ページのビット“1”とビット“0”の数がほぼ同じになっていることを検証する必要がある。また、各I/Oのビット“1”とビット“0”の数がほぼ同じになっていることを検証する必要がある。
その検証のために、ページ毎及びI/O毎に、“1”の個数の合計を計算した結果を入れる枠を設ける。合計の枠を追加し、更に、図5の(空)テーブルに具体的なスクランブルパターンを入れたものを、図6に示す。なお、値が全て“0”のデータパターンにスクランブルパターンを適用した場合、スクランブルパターンとスクランブルパターン適用後のデータパターンとは等しくなる。よって、図6は値が全て“0”のデータパターンに具体的なスクランブルパターンを適用した後のパターンともいえる。図6では、I/Oの各ビットにページ番号を2進数化したものを入れている。例えば、ページ10は10の2進数表記が(MSB)00001010(LSB)なので、I/O7の枠から順番に、I/O7に“0”、I/O6に“0”、I/O5に“0”、I/O4に“0”、I/O3に“1”、I/O2に“0”、I/O1に“1”、I/O0に“0”を入れている。
各ページの合計枠及び各I/Oの合計枠には、ビット“1”の個数の合計を計算した結果が示されている。ページ10には、I/O1とI/O3にだけビット“1”があるのでページ10の“1”の個数の合計は2であり、ページ10に対応する行の合計枠には2が入る。ページには8つのI/Oがあるので“1”の数が4個の場合、“1”と“0”の個数が同じになる。また、I/Oには32個のページがあるので“1”の数が16個の場合、“1”と“0”の数が同じになる。ここで、図6ではページ0の合計が0であり、またI/O7の合計が0であるので適切なパターンとは言えない。
図7に、適切なスクランブルパターンの一例を示す。同図に示すように、各ページの合計はすべて4であり、各I/Oの合計は全て16であり、“1”と“0”の個数が同じになっている。このようなスクランブルパターンを生成する手順について簡単に説明する。まずページ方向のパターンを検討するために“1”と“0”の数が等しくなるパターンを抽出する(即ち、8個のI/Oから4個のI/Oを選択する組み合わせの総数である。70個となる。)。そのうち必要なのはページの数である32個なので、70個のうちの32個を選択する。このときに32個の異なるパターンを選択する。同じパターンを複数個使用しない理由は、よりランダム性を高めるためである。また、このときに選択した32個のパターンの各I/Oの“1”の個数が16個になるような32個のパターンを選択する。これはもちろん各I/Oの”1”の個数を16個にするためである。以上のようなパターンを選択することで“0”と“1”の個数を同じにできる。
前述のように、図7に示すスクランブルパターンは、値が全て“0”のデータパターンに対して適切なスクランブルパターンである。それだけでなく、値が全て“1”のデータパターンに対しても適切なスクランブルパターンである。値が全て“1”のデータパターンにスクランブルパターンを適用した後のパターンは、そのスクランブルパターンの“1”と“0”とを入れ換えたものとなるからであり、更に、ここでのスクランブルパターンでは“1”の個数と“0”の個数とが等しいからである。
更に、図7に示すスクランブルパターンは、チェッカーパターン(“1”と“0”が市松模様のパターン)のデータパターンに対しても適切なスクランブルパターンとなっている。それは、8ビットで“1”と“0”の個数が等しくなる70通りのパターンから32個のパターンを選択する際に、チェッカーパターンをデータパターンとしてスクランブルパターンを適用した場合にも“1”の個数が4になるスクランブルパターンを選択しているからである。ちなみに上記の70通りのうち、チェッカーパターンに適用してもページ毎の“1”の個数が4になるパターンは36通りある。ここではその36通りからI/O別に“1”の数が16個になる32個のパターンを選択している。その32個のパターンを各ページに割り当てる組み合わせの数は、32個を並べる順列の数である。その順列を入れ替えながら、チェッカーパターンをデータパターンとしてスクランブルを行った後での各ページおよび各I/Oの合計が4および16になるような32個のパターンの並び方を決定したものが、図7のスクランブルパターンである。チェッカーパターンに図7のスクランブルパターンを適用した後のパターンを、図8に示す。図8において、各ページの“1”の個数及び各I/Oの“1”の個数が4及び16になっていることが確認できる。
以上のように、本実施の形態に係るスクランブルパターン発生器111は、不揮発性メモリ103に格納されるデータにて“0”と“1”の生起確率が平準化されるようなスクランブルパターンを発生する。つまり、スクランブルパターン生成器111は、不揮発性メモリ103の物理カラムアドレスと物理ページアドレスに基づき、更に不揮発性記憶装置101外部からの書き込みデータの構成の解析に基づいて、スクランブルパターンを発生する。これにより、本実施の形態に係る不揮発性記憶装置101は、不揮発性メモリ103に格納されるデータにおける“0”と“1”の生起確率が平準化され、合成等価抵抗などの状態値が、取りうる値として設計時に想定される範囲の端部に偏って分布することを大幅に減らすことができる。
[第2の実施の形態]
図9(1)は、本発明の第2の実施の形態に係る不揮発性記憶装置101の構成図であり、不揮発性メモリ103への書き込みデータの流れと共に示している。図9(1)に示す第2の実施の形態に係る不揮発性記憶装置101は、図1(1)に示す第1の実施の形態に係る不揮発性記憶装置と略同様のものであるので、同一部位には同一符号を付して説明を省略する。
図9(1)は、本発明の第2の実施の形態に係る不揮発性記憶装置101の構成図であり、不揮発性メモリ103への書き込みデータの流れと共に示している。図9(1)に示す第2の実施の形態に係る不揮発性記憶装置101は、図1(1)に示す第1の実施の形態に係る不揮発性記憶装置と略同様のものであるので、同一部位には同一符号を付して説明を省略する。
第2の実施の形態に係る不揮発性記憶装置101と、第1の実施の形態に係る不揮発性記憶装置との差異は、第1の実施の形態に係る不揮発性記憶装置ではECC符号に対してスクランブルが行われ不揮発性メモリに書き込まれるが、第2の実施の形態に係る不揮発性記憶装置101ではスクランブルが行われたセクターデータに対してECC符号の生成が為されることである。即ち、ECC符号に関して、スクランブル回路112とECC回路109との順序が異なる。
図9(2)は、図9(1)に示す不揮発性記憶装置101にデータを書き込む際のデータの転送の状態を示すタイミングチャートである。図9(2)を基にして、不揮発性記憶装置101へのデータの書き込みについて説明する。最初に、時間tw201で、不揮発性記憶装置101外部にあるホスト50が、不揮発性記憶装置101に対して書き込みデータであるセクターデータの転送を開始する。ホスト50から転送されるセクターデータは、ホストI/F105を介して、バッファメモリ106とカテゴリ分析機能部107に転送される。カテゴリ分析機能部107は、ホスト50から転送される512B(バイト)のセクターデータに対して、どのカテゴリに含まれるデータかを分析する。
時間tw202で、カテゴリ分析機能部107は、ホスト50が時間tw201から転送してきたセクターデータの分析結果をカテゴリIDとしてスクランブルメモリ108に記録する。
時間tw203で、スクランブルメモリ108から不揮発性メモリ103に対して、メモリI/F113を介して、カテゴリIDを書き込むための転送が行われる。この際に、不揮発性メモリ103に書き込まれるカテゴリIDの信頼性を高めるために、ECC回路109を利用してECC符号が付加される。
続いて、時間tw204で、バッファメモリ106のデータバッファから不揮発性メモリ103に、セレクタ110とビット反転器112とメモリI/F113を介して、データの転送が行われる。図9(2)において、不揮発性メモリ103へのデータ転送でハッチングをかけた部分は、その転送においてデータのスクランブルが行われていることを示す。つまり、このときビット反転器112は、バッファメモリ106からのセクターデータとスクランブルパターン発生器111からの(スクランブルパターン)データとで排他的論理和演算を行う。また、このとき(tw204)同時にバッファメモリ106からECC回路109のエンコーダ117にスクランブル処理後のセクターデータが転送され、エンコーダ117は、転送されたスクランブル処理後のセクターデータに対応するECC符号の演算を行う。
最後に、時間tw205からは、エンコーダ117から不揮発性メモリ103に、セレクタ110とメモリI/F113を介して、ECC符号の転送が行われる。このとき第1の実施の形態とは異なり、書き込みされるECC符号にスクランブル処理が為されない。これは、ECC符号を生成するためのセクターデータとして、スクランブル処理後のデータ(即ち、“0”と“1”の生起確率が平準化されたデータ)を使用しているので、生成したECC符号も平準化されている可能性が高いからである。
次に、図10(1)は、不揮発性メモリ103からの読み出しデータの流れと共に示す、本発明の第2の実施の形態に係る不揮発性記憶装置101の構成図である。図10(1)は、図9(1)に示す構成図のデータの流れのみを変えたものである。従って、同一部位には同一符号を付して説明を省略する。
図10(2)は、図10(1)に示す不揮発性記憶装置101からデータを読み出す際のデータの転送の状態を示すタイミングチャートである。図10(2)を基にして、不揮発性記憶装置101からのデータの読み出しについて説明する。最初に、時間tr201で、不揮発性メモリ103からスクランブルメモリ108にメモリI/F113を介してカテゴリIDが書き込まれる。この際に、書き込みの際に付加したECC符号を基に誤りを検出し、誤りが発生しているとシンドローム118で判断されれば、訂正回路119は、スクランブルメモリ108内のデータを訂正する。
時間tr202で、不揮発性メモリ103からバッファメモリ106及びシンドローム118に、メモリI/F113を介して、セクターデータが書き込まれる。
続いて、時間tr203からは、不揮発性メモリ103からシンドローム118に、メモリI/F113を介して、ECC符号が転送される。シンドローム118は、セクターデータとECC符号とから、シンドローム符号を生成し、誤りの有無を判定する。
ここで不揮発性メモリ103から読み出したデータに誤りが在る場合には、時間tr204から、誤りの訂正を行う。訂正回路119は、シンドローム118の生成したシンドローム符号を基に誤り位置の演算処理を行い、バッファメモリ106のデータバッファの該当するビットのデータを反転することで誤りの訂正を行う。
最後に、時間tr205からは、バッファメモリ106から不揮発性記憶装置101外部のホスト50へ、ビット反転器112とホストI/F105を介して、データが読み出し転送される。図10(2)において、バッファメモリ106からのデータ転送でハッチングをかけた部分は、その転送においてデータのスクランブルが行われていることを示す。つまり、このときビット反転器112は、バッファメモリ106からのセクターデータとスクランブルパターン発生器111からの(スクランブルパターン)データとで排他的論理和演算を行う。スクランブルパターン発生器111は、tr201で不揮発性メモリ103から読み出されてスクランブルメモリ108に格納されたカテゴリIDと、メモリI/F113から得られる物理ページアドレス及び物理カラムアドレスとを基にして、スクランブルパターンを生成する。
[第3の実施の形態]
図11(1)は、本発明の第3の実施の形態に係る不揮発性記憶装置101の構成図であり、不揮発性メモリ103への書き込みデータの流れと共に示している。図11(1)に示す第3の実施の形態に係る不揮発性記憶装置101は、図1(1)に示す第1の実施の形態に係る不揮発性記憶装置と略同様のものであるので、同一部位には同一符号を付して説明を省略する。
図11(1)は、本発明の第3の実施の形態に係る不揮発性記憶装置101の構成図であり、不揮発性メモリ103への書き込みデータの流れと共に示している。図11(1)に示す第3の実施の形態に係る不揮発性記憶装置101は、図1(1)に示す第1の実施の形態に係る不揮発性記憶装置と略同様のものであるので、同一部位には同一符号を付して説明を省略する。
図11(1)に示す第3の実施の形態に係る不揮発性記憶装置101と、図1(1)に示す第1の実施の形態に係る不揮発性記憶装置との差異は、カテゴリ分析機能部107がスクランブルパターンテスター320に置き換わっている部分である。スクランブルパターンテスター320は、適用可能な複数のスクランブルパターンを実際にセクターデータに適用してその上でどのスクランブルパターンが最適であるかをテストしてスクランブルパターンを選択する。
図11(2)は、スクランブルパターンテスター320の内部の構成図である。スクランブルパターンテスター320は、スクランブルパターン発生器群321、データカウンタ群322、及び比較器323を含む。
スクランブルパターン発生器群321は、複数のスクランブルパターン発生器から構成される。個々のスクランブルパターン発生器は、第1の実施の形態に係る不揮発性記憶装置に含まれるスクランブルパターン発生器111で構成され、入力としてのカテゴリIDが個々に固定されている。図11(2)では、カテゴリID=0x00,0x0F,0x55,0xFFの4通りに固定されたものを示しているが、4通りに限定されるものではない。
ホストI/F105から物理カラムアドレスとセクターデータが、制御回路104からテストを行うセクターデータを書き込む予定の物理ページアドレスが、スクランブルパターン発生器群321の全てのスクランブルパターン発生器に与えられる。個々のスクランブルパターン発生器からスクランブル後のデータが出力されて、データカウンタ群322内の対応する個々のデータカウンタに入力される。データカウンタ群322の個々のデータカウンタでは、夫々データ“1”の個数をカウントする。
比較器323は、データカウンタ群322の夫々のデータカウンタのカウント結果を比較して、データ“1”の個数が全てのビットの半分の個数に一番近いものを判定する。全てのビットの半分の個数に一番近いということは、スクランブル後のセクターデータにおいてデータ“0”とデータ“1”との生起確率が最も良好にバランスしているスクランブルパターンであることを示す。判定して導出された結果をカテゴリIDとして、スクランブルメモリ108のカテゴリID領域に記録する。
つまり、第1の実施の形態ではセクターデータのデータパターンを分析することで、最適とされるスクランブルパターンが選択されている。一方、第3の実施の形態においては、適用可能な複数スクランブルパターンが実際にセクターデータに適用され、その上でどのスクランブルパターンが最適であるかがテストされて、スクランブルパターンが選択されている。
以上のように、スクランブルパターンテスター320で判定される最適のスクランブルパターンによって、不揮発性記憶装置101外部からの書き込みデータをスクランブルして各データの生起確率を平準化することにより、実効的に劣化要因に対する耐性を高めることができる。
[多値メモリセルへの適用]
なお、図12(1)は、多値メモリセルにおける閾値の分布を示したものである。多値のメモリセルでは、それぞれのメモリセルのデータは、1st.(第1)と2nd.(第2)の2つの物理ページに対して分けて書き込まれる。つまり、メモリセルに対する閾値の分布を平準化(全ての閾値レベルの分布の割合を均等にする)には、1st.(第1)と2nd.(第2)の2つの物理ページがどのように対応しているかが把握されていなければならない。
なお、図12(1)は、多値メモリセルにおける閾値の分布を示したものである。多値のメモリセルでは、それぞれのメモリセルのデータは、1st.(第1)と2nd.(第2)の2つの物理ページに対して分けて書き込まれる。つまり、メモリセルに対する閾値の分布を平準化(全ての閾値レベルの分布の割合を均等にする)には、1st.(第1)と2nd.(第2)の2つの物理ページがどのように対応しているかが把握されていなければならない。
図12(2)は、どの物理ページが組になって1st.と2nd.の2つの物理ページを構成するかの一例を示すテーブルである。図12(2)に示す表によれば、物理ページ0が1st.物理ページであり、物理ページ1が2nd.物理ページであり、物理ページ0と物理ページ1とに分けてデータが書き込まれるメモリセルがあることがわかる。多値メモリセルを利用する場合には、第1〜第3の実施の形態に係る不揮発性記憶装置において、多値メモリセルにおける物理ページの組が把握された上で、各閾値の分布が平準化されるようにスクランブルパターンが決定されればよい。このようにすることにより、多値メモリセルにおいても実効的に劣化要因に対する耐性を高めることができる。
本発明は、データ信頼性を実効的に向上することが可能なユーザ利便性の高い不揮発性記憶装置に有用である。
50・・・ホスト、101・・・不揮発性記憶装置、102・・・コントローラ、103・・・不揮発性メモリ、104・・・制御回路、105・・・ホストI/F(インターフェース)、106・・・バッファメモリ、107・・・カテゴリ分析機能部、108・・・スクランブルメモリ、109・・・ECC回路、110・・・セレクタ、111・・・スクランブルパターン発生器、112・・・ビット反転器、113・・・メモリI/F(インターフェース)、114・・・論物変換テーブル、115・・・消去ブロックテーブル、116・・・不良ブロックテーブル、117・・・エンコーダ、118・・・シンドローム、119・・・訂正回路、320・・・スクランブルパターンテスター、321・・・スクランブルパターン発生器群、322・・・データカウンタ群、323・・・比較器。
Claims (14)
- ホスト機器から受信した指示に従い、不揮発性メモリに対してセクターデータ単位でデータの書き込み及び読み出しを行う不揮発性メモリコントローラであって、
前記不揮発性メモリに書き込まれるセクターデータの個々のビットの物理アドレスに対応したスクランブルパターンを発生するスクランブルパターン発生器と、
前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリに書き込まれるセクターデータのスクランブル、及び、前記スクランブルパターン発生器で発生した前記スクランブルパターンで前記不揮発性メモリから読み出されたセクターデータのスクランブルを行う前記スクランブル回路とを備え、
前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする不揮発性メモリコントローラ。 - 前記不揮発性メモリは、複数の、書き込み単位であるページから構成され、
前記スクランブルパターン発生器は、前記不揮発性メモリに書き込むセクターデータの個々のビットの少なくとも前記ページの物理アドレスを含む物理アドレスに対応したスクランブルパターンを発生する
ことを特徴とする請求項1に記載の不揮発性メモリコントローラ。 - 前記不揮発性メモリは、複数のメモリセルが直列接続された構成を持つ
ことを特徴とする請求項2に記載の不揮発性メモリコントローラ。 - 前記不揮発性メモリがNANDタイプのフラッシュメモリである
ことを特徴とする請求項3に記載の不揮発性メモリコントローラ。 - 前記不揮発性メモリが3個以上の閾値の分布をとり得る、多値タイプのメモリセルである
ことを特徴とする請求項4に記載の不揮発性メモリコントローラ。 - 前記スクランブルパターンは、前記ホスト機器からのセクターデータを前記不揮発性メモリに書き込む際に前記多値タイプのメモリセルにおける各値の発生頻度の差がスクランブルを行うことによって減少するパターンである
ことを特徴とする請求項5に記載の不揮発性メモリコントローラ。 - 前記スクランブルパターン発生器は、前記不揮発性メモリに書き込むセクターデータの個々のビットの物理アドレスとセクターデータのカテゴリに対応したスクランブルパターンを発生する
ことを特徴とする請求項1に記載の不揮発性メモリコントローラ。 - 前記カテゴリを、対応するセクターデータとともに前記不揮発性メモリに格納する
ことを特徴とする請求項7に記載の不揮発性メモリコントローラ。 - 前記不揮発性メモリコントローラは、カテゴリ分析機能部をさらに備え、
前記カテゴリ分析機能部は、セクターデータの内容を分析することによりセクターデータ単位で対応するカテゴリに分類してカテゴリを決定する
ことを特徴とする請求項1に記載の不揮発性メモリコントローラ。 - 前記不揮発性メモリコントローラは、スクランブルパターンテスターを更に備え、
前記スクランブルパターンテスターは、複数のカテゴリに対応するスクランブルパターンをセクターデータに適用することにより、前記セクターデータ単位でのセクターデータに含まれる各ビットの状態の発生頻度の差がスクランブルを行うことによって最も減少するスクランブルパターンに対応するカテゴリを決定する
ことを特徴とする請求項9に記載の不揮発性メモリコントローラ。 - 前記ホスト機器から書き込まれるセクターデータに対応するECC符号ビットを生成し、前記不揮発性メモリから読み出されたセクターデータ及びECC符号ビットに基づいてシンドロームの演算を行うECC回路を、更に備え、
前記スクランブル回路によるスクランブルは、前記ECC回路によって生成されたECC符号ビットにも適用される
ことを特徴とする請求項1乃至10のうちのいずれか一に記載の不揮発性メモリコントローラ。 - 前記ホスト機器から書き込まれるセクターデータに対応するECC符号ビットを生成し、前記不揮発性メモリから読み出されたセクターデータ及びECC符号ビットに基づいてシンドロームの演算を行うECC回路を、更に備え、
前記スクランブル回路によってスクランブルが行われた前記不揮発性メモリに書き込まれるセクターデータに対して、前記ECC回路によるECC符号の生成が行われる
ことを特徴とする請求項1乃至10のうちのいずれか一に記載の不揮発性メモリコントローラ。 - 不揮発性メモリと不揮発性メモリコントローラからなる不揮発性記憶装置であり、前記不揮発性メモリコントローラは請求項1乃至12のうちのいずれか一に記載の不揮発性メモリコントローラであることを特徴とした不揮発性記憶装置。
- 請求項13に記載の不揮発性記憶装置と、
前記不揮発性記憶装置に対してデータの書き込み、読み出しを行うホスト機器とを有することを特徴とする不揮発性記憶システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008276471A JP2010108029A (ja) | 2008-10-28 | 2008-10-28 | 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008276471A JP2010108029A (ja) | 2008-10-28 | 2008-10-28 | 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010108029A true JP2010108029A (ja) | 2010-05-13 |
Family
ID=42297454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008276471A Pending JP2010108029A (ja) | 2008-10-28 | 2008-10-28 | 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010108029A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010231778A (ja) * | 2009-03-04 | 2010-10-14 | Apple Inc | 不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング |
JP2011028741A (ja) * | 2009-06-30 | 2011-02-10 | Panasonic Corp | 記憶装置およびメモリコントローラ |
JP2014093654A (ja) * | 2012-11-02 | 2014-05-19 | Sony Corp | 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法 |
US8732554B2 (en) | 2011-02-21 | 2014-05-20 | Kabushiki Kaisha Toshiba | Data storage device and method for checking and correcting errors |
US9865338B2 (en) | 2015-09-02 | 2018-01-09 | Toshiba Memory Corporation | Memory system and method of controlling nonvolatile memory by converting write data written to a page |
-
2008
- 2008-10-28 JP JP2008276471A patent/JP2010108029A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010231778A (ja) * | 2009-03-04 | 2010-10-14 | Apple Inc | 不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング |
US8918655B2 (en) | 2009-03-04 | 2014-12-23 | Apple Inc. | Data whitening for writing and reading data to and from a non-volatile memory |
JP2011028741A (ja) * | 2009-06-30 | 2011-02-10 | Panasonic Corp | 記憶装置およびメモリコントローラ |
US8732554B2 (en) | 2011-02-21 | 2014-05-20 | Kabushiki Kaisha Toshiba | Data storage device and method for checking and correcting errors |
JP2014093654A (ja) * | 2012-11-02 | 2014-05-19 | Sony Corp | 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法 |
US9865338B2 (en) | 2015-09-02 | 2018-01-09 | Toshiba Memory Corporation | Memory system and method of controlling nonvolatile memory by converting write data written to a page |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI527037B (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
KR101371830B1 (ko) | 메모리 에러 정정 | |
US8345487B2 (en) | Method of setting read voltage minimizing read data errors | |
US8122303B2 (en) | Data structure for flash memory and data reading/writing method thereof | |
TWI474330B (zh) | 用來進行記憶體存取管理之方法以及記憶裝置及其控制器 | |
US20190252035A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US9130597B2 (en) | Non-volatile memory error correction | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US9678827B2 (en) | Access counts for performing data inspection operations in data storage device | |
US8276028B2 (en) | Using error information from nearby locations to recover uncorrectable data in non-volatile memory | |
US8365039B2 (en) | Adjustable read reference for non-volatile memory | |
US8225175B2 (en) | Two-plane error correction method for a memory device and the memory device thereof | |
JP2012137994A (ja) | メモリシステムおよびその制御方法 | |
US9594615B2 (en) | Estimating flash quality using selective error emphasis | |
CN106297883B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
JP2010079486A (ja) | 半導体記録装置 | |
JP2010108029A (ja) | 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム | |
CN105489242B (zh) | 数据储存器件及其操作方法 | |
US8775902B2 (en) | Memory controller and storage device | |
CN110389716B (zh) | 数据存储装置及应用其的预防数据错误方法 | |
JP5335779B2 (ja) | 半導体記録装置 | |
US20120159280A1 (en) | Method for controlling nonvolatile memory apparatus | |
JP6411282B2 (ja) | 半導体メモリ及びデータ書込方法 | |
US20160071597A1 (en) | Storage device, memory controller and memory control method | |
JP2008305507A (ja) | フラッシュメモリの状態検出方法 |