JP2011141914A - Nand型フラッシュメモリの入出力制御方法及び装置 - Google Patents

Nand型フラッシュメモリの入出力制御方法及び装置 Download PDF

Info

Publication number
JP2011141914A
JP2011141914A JP2010000731A JP2010000731A JP2011141914A JP 2011141914 A JP2011141914 A JP 2011141914A JP 2010000731 A JP2010000731 A JP 2010000731A JP 2010000731 A JP2010000731 A JP 2010000731A JP 2011141914 A JP2011141914 A JP 2011141914A
Authority
JP
Japan
Prior art keywords
flash memory
data
conversion
section
output control
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
Application number
JP2010000731A
Other languages
English (en)
Inventor
Atsushi Esumi
淳 江角
Yoshi Ri
凱 李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SIGLEAD Inc
Original Assignee
SIGLEAD Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SIGLEAD Inc filed Critical SIGLEAD Inc
Priority to JP2010000731A priority Critical patent/JP2011141914A/ja
Publication of JP2011141914A publication Critical patent/JP2011141914A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 簡易な回路構成または手順によりNAND型フラッシュメモリの誤り訂正の精度を向上させる。
【解決手段】0と1とからなるデジタルデータストリングの一定のセクションの中で、0と1のそれぞれの数のうち、エラーが出やすい方の数があるパーセント値以下になるように変換する変換ステップ(S105)と、変換されたデータをNAND型フラッシュメモリに保存する保存ステップ(S106)と、該NAND型フラッシュメモリから保存されたデータを読み出す読み出しステップと、読み出されたデータを元のデジタルデータストリングに戻すための逆変換操作を行う逆変換ステップとを含んでなるNAND型フラッシュメモリの入出力制御方法とそれを利用した入出力制御装置を提供する。
【選択図】 図2

Description

本発明は、NAND型フラッシュメモリから読み出したデータの誤りを減少させるデータの入出力方法と装置に関する。
近年、不揮発性メモリを搭載した不揮発性記憶装置は、デジタルカメラや携帯電話のメモリカード、ハードディスクの代替となるソリッドステートディスク(SSD)として市場を拡大している。ここで最も広く用いられているのは、NAND型のフラッシュメモリである。
このNAND型フラッシュメモリは、集積率に劣るNOR型のフラッシュメモリに比べて書き込み時のエラービットの発生が多い。NAND型フラッシュメモリのエラーは、書き込み時に過剰な電子がフローティングゲート内に注入されることにより、読み出し時にセルからの出力電圧に異常が発生することや、多数回の書き換えに伴うトンネル酸化膜の劣化による電子の漏れに起因する。そのために記録すべきデータに誤り訂正符号(error correcting code)(以下、ECCという)の冗長データを付加してフラッシュメモリに書込むと共に、読出し時には誤り訂正符号の冗長データを基にしてデータの訂正を行うことで、エラーが発生したときのデータの補償を行っている。
基本的なNAND型フラッシュメモリ(2値フラッシュメモリ)の場合、通常、メモリセルの電圧の高い状態を1(電子がフローティングゲートにない状態)、メモリセルの電圧の低い状態を0(電子がフローティンゲートに注入されている状態)に対応させているが、0と1の逆の設定もあり得る。
また、多値技術を用いたフラッシュメモリ(マルチレベルセルのフラッシュメモリ)の場合、メモリセルの電圧を3以上の複数の状態に設定する。たとえば、4値を記憶すること ができるフラッシュメモリでは、メモリセルの電圧を4つの状態を取り得るようにして、順に、“11”(電圧が最も高い状態)、“10”、“01”、“00”(電圧が最も低い状態)に対応させる。これにより、1つのメモリセルに2ビットのデータを記憶することができる。現在では、1つのメモリセルに4ビット以上のデータを記憶するものも存在する。メモリセルの物理的な状態と論理的なデータとの対応は、2値フラッシュメモリと同様、任意に定めることができる。
このようなフラッシュメモリにおいて、エラーはある一定の非対称性あるいは方向性を持って発生することが多い。例えば、電子の漏れに起因するエラーが頻繁に発生するフラッシュメモリを考えると、2値フラッシュメモリの場合には、0を書き込んだとき(電子をフローティングゲートに注入したとき)にそれを誤って1と読みだすエラーが、逆の場合よりも多くなる。つまり、1を書き込み読み出す方が0を書き込み読み出す場合よりエラーが少ない。また、マルチレベルセルのフラッシュメモリの場合には、回路の設計に応じて、読み出しと書き込みの単位であるページ毎にエラーの出現の傾向が異なることが多い。さらに、シングルレベルセルとマルチレベルセルに共通であるが、エラー発生のメカニズムによっては、同じページであっても、両方のエラーが発生する場合もある。
特開2003−316661号公報
NAND型フラッシュメモリにおける典型的なページとそれに加えた反転制御ビットの様子を示すダイアグラムである。 本発明の第1実施形態にかかる方法の手順を示すフローチャートである。 本発明の第1実施形態にかかる装置の構成を示すブロックダイアグラムである。 本発明の第3実施形態にかかる装置の構成を示すブロックダイアグラムである。 第1のシミュレーション結果を示すグラフである。 第2のシミュレーション結果を示すグラフである。 第3のシミュレーション結果を示すグラフである。
本発明は、このようなNAND型フラッシュメモリにおいてある非対称性を持って発生するデータのエラーを訂正する技術を提供することを目的とする。
本発明は、0と1とからなるデジタルデータストリングの一定のセクションの中で、0と1のそれぞれの数のうち、エラーが出やすい方の数があるパーセント値以下になるように変換する変換ステップと、変換されたデータをNAND型フラッシュメモリに保存する保存ステップと、該NAND型フラッシュメモリから読み出す読み出しステップと、読み出されたデータを元のデジタルデータストリングに戻すための逆変換操作を行う逆変換ステップとを含んでなるNAND型フラッシュメモリの入出力制御方法を提供する。
ここで、前記パーセント値としては、70パーセントあるいは80パーセントを考えることができる。例えば、70パーセントは、特定の条件下においてエラーレートが一桁変わるものであることがシミュレーションの結果判明している。80パーセントであれば、その効果は若干弱まるが、画像データなど0または1の数が極端に偏ることがあり得るデータについては実用上のメリットは十分ある。また、60パーセントあるいは50パーセントといった基準も考えることができる。例えば、下記の例に示すように、エラーが出やすい方の値を半分以下にコントロールすることは可能である。また、前記の一定のセクションは、NAND型フラッシュメモリのページ自体、あるいは1ページを整数個の区間に区切ったものの一つに対応するものである。
また、前記変換ステップは、1セクション内の元のデータとそれを変換したデータとを対応づける変換テーブルを利用して実行することができ、前記逆変換ステップはこの返還テーブルを逆向きに適用して実行することができる。
また、前記のNAND型フラッシュメモリの入出力制御方法においては、前記変換ステップを行う必要があるか否かを判断するために,エラーが出やすい方の数が当該セクションの中に過半を占めているかを判断する判断ステップを前記変換ステップの前に行い、前記変換ステップが、エラーが出やすい方の数が当該セクションの過半を占めている場合に、当該セクションの全てのビットを反転するものであり、過半を占めていない場合には、反転を行わないものであって、反転の有無を示す変換制御ビットをデジタルデータストリングに付加することができる。ここで、前記判断ステップは、カウンタによって0の数と1の数とを数え上げることによって実行することができる。
本発明は、また、0と1とからなるデジタルデータストリングの一定のセクションの中で、0の数が50+Xパーセントから50−Yパーセントの範囲(ここで、XおよびYは0より大きく50未満の定数)になるように変換する変換ステップと、変換されたデータをNAND型フラッシュメモリに保存する保存ステップと、該NAND型フラッシュメモリから出力されたデータを元のデジタルデータストリングに戻すための逆変換操作を行う逆変換ステップとを含んでなるNAND型フラッシュメモリの入出力制御方法を提供する。ここで、XおよびYの値は10パーセントから30パーセント程度が現実的である。XおよびYの値が0に近づくと拘束条件として厳しくなり、1セクション内のビット数が大きい場合には実現可能であるが、1セクション内のビット数の数が小さい場合には、実現できない場合も生じる。また、30パーセントを超えると、変換の効果が少なくなってしまうことが多い。しかしながら、採用する具体的な変換手法と目的とによってXおよびYの値の取り得る範囲は一般的に広く、その中で適当な値を具体的な状況に応じて選択できるものである。
本発明によれば、前記変換ステップをDCフリー符号を作成することにより実施することができる。
そして、本発明は、0と1とからなるデジタルデータストリングの一定のセクションの中で、0と1のそれぞれの数のうち、エラーが出やすい方の数があるパーセント値以下になるように変換する変換部と、NAND型フラッシュメモリに保存するために、変換されたデータを誤り訂正符号にするECCエンコーダと、NAND型フラッシュメモリから出力された誤り訂正符号をデコードするECCデコーダと、デコードされたデータを元のデジタルデータストリングに戻すための逆変換操作を行う逆変換部とを備えたNAND型フラッシュメモリの入出力制御装置を提供する。
前記のNAND型フラッシュメモリの入出力制御装置においては、前記変換部による変換が必要であるか否かを判断するために,エラーが出やすい方の数が当該セクションの中に過半を占めているかを判断するカウンタをさらに備え、前記変換部が、エラーが出やすい方の数が当該セクションの過半を占めている場合に、当該セクションの全てのビットを反転するものであり、過半を占めていない場合には、反転を行わないものであって、反転の有無を示す変換制御ビットをデジタルデータストリングに付加することができる。ここで、前記カウンタは、0の数と1の数とを数え上げる。
本発明は、また、0と1とからなるデジタルデータストリングの一定のセクションの中で、0の数が50+Xパーセントから50−Yパーセントの範囲(ここで、XおよびYは0より大きく50未満の定数)になるように変換する変換部と、NAND型フラッシュメモリに保存するために、変換されたデータを誤り訂正符号にするECCエンコーダと、該NAND型フラッシュメモリから出力された誤り訂正符号をデコードするECCデコーダと、デコードされたデータを元のデジタルデータストリングに戻すための逆変換操作を行う逆変換部とを備えるNAND型フラッシュメモリの入出力制御装置を提供する。
本発明によれば、前記変換部においてDCフリー符号を作成するようにすることができる。
本発明によれば、簡単な回路構成または手順によりNAND型フラッシュメモリのための誤り訂正機能を強化することができる。
本発明の1実施形態をシングルレベルセルのNAND型フラッシュメモリの場合を例に説明する。上述のようにシングルレベルセルのNAND型フラッシュメモリの場合には、0と1の定義にもよるが、上に説明した定義によれば、1を書き込んで読み出す場合の方が0を書き込んで読み出す場合よりエラーが少ないことが多い。したがって、ある一連のデータにおいて0が多い場合には、そのデータ全体の論理否定を求めて、1が多いデータに変換して、それをフラッシュメモリに保存すれば、エラーの確率は少なくなる。論理否定をとったか否かを記録するには1ビットのフラグがあれば足りる。
NAND型フラッシュメモリの書き込みと読み出しの単位はページと呼ばれる。この1ページは、典型的には、32,768ビット(4kByte)である。また、消去操作の1単位であるブロックは、このページが、例えば、64個(256kByte)集まって構成される。1GBのメモリチップであれば、256,000個のページと、4000個のブロックがあることになる。そこで、1ページに含まれるべき32,768ビットのデータをチェックして、0と1のどちらが多いかを判断する。0が多い場合には、データを反転して(論理否定をとって)、反転を示すフラグを1にする。このフラグビットを先頭に含めて1ページ分の32,769ビットのデータとする。1が多ければ、反転制御ビットを0にして、この反転制御ビットを先頭にして、32,768ビットの反転などの操作を行っていないそのままのデータを1ページとする。このようなページの構成を図1(A)に模式的に示す。なお、ページサイズにはいろいろあり、2kByteや8kByteのものもある。また、ここでいうページあるいはブロックのサイズは、判定制御ビットやECC化による冗長データを除いたデータ部分のサイズであり、NAND型フラッシュメモリには、ECC化のための領域があらかじめ用意されている。つまり、ページサイズは4KBちょうどではなく4kB+αになる。
なお、上記の第1実施形態において、1ページ内の0と1の数のどちらが多いかを見出すためには、いくつかの方法がある。上述のように、カウンタを使って、入力されて来るデジタルデータストリング中の0と1の数を数え上げることができるほか、例えば、RDS(running digital sum)を計算することにより、0と1のどちらが多いかを判断することも可能である。RDSは、0と1からなるデジタルデータストリングについて、各ビットの値が0であれば+1を、1であれば−1を積算し、この積算をビットの並びに順次繰り返していって得られる値である。これを計算すれば、最終的な値が正であれば0が多く、負であれば1が多いと判断することができる。したがって、各セクション内でRDSを計算し、これが正であるか負であるかにより、反転するべきか否かを判断することができる。
また、上記第1実施形態では、デジタルデータを反転させることとしたが、0が多い場合に、反転ではなく、1が多くなるような適当な変換を行ってもよい。そのような変換方法としては、パターンマッチングまたはテーブルを利用したものがある。
ここで、パターンマッチングの手法の一例を示しておく。ここでは簡単のため、1セクションが4ビットの場合に、1を多くする手法ついて例を示す。言うまでもないが、1セクション内のビット数は任意である。まず、表1に利用できる元のデータと変換後のデータの一例を示す。
Figure 2011141914
4ビットのデータ(元のデータ)を5ビットのデータ(変換後のデータ)に変換することにより、セクション内で1の数が0の数よりも多いことを保証できる。これは、テーブルを利用して、一定のパターンを別のパターンに変換するものである。
この表1はよく見てみると、結果として得られる変換は、前述のカウンタを利用して反転した上で、変換制御ビットを付加する方法と何ら変わらない。結局のところ、4ビットのデータ中で0の数が2個以上の場合は反転して先頭に制御ビットとして1を付加し、1個以下の場合は反転せずに先頭に制御ビットとして0を付加しているのと同じである。パターンマッチング(テーブルを利用した変換)の場合と、カウンタを用いる場合とでは手順としては異なるものの、得られた変換データとしては、同じ結果が得られる。
また、別の例として、次の表2に示すような元のデータと変換後のデータのテーブルを利用したパターンマッチングによる変換を考えることができる。
Figure 2011141914
表1の場合と同様に、4ビットのデータ(元のデータ)を5ビットのデータ(変換後のデータ)に変換することにより、セクション内で1の数が0の数よりも多いことを保証できる。表1の例と違うのは、ここでは元のデータの反転もしていなければ、制御ビットという概念もない。単に、制約条件(ここでは1の方が多いこと)を満たす5ビットの系列を小さい値順に並べただけのテーブルである。表1のような単純なテーブルを変換と逆変換に利用することによっても、本発明の目的を達成することができる。
このように反転または変換そして出力データの再反転と逆変換の方法には、種々の手順があり、本願発明は、いずれか一つに拘束されるものではない。
ここで0と1といっているのは、入れ替え可能であり、1のエラーが多くなるようなNAND型のフラッシュメモリ素子があった場合には、1が多い場合に、反転を行ったり、0の方が多くなるような変換を行うことができる。
データを読み出す場合には、読み出されたデータの反転制御ビットをまず認識して、フラグが1であれば、それに続く32,768ビットのデータを反転して、もとのデータを得ることができる。フラグが0であれば、それに続く32,768ビットのデータをそのまま出力値とする。
また、1ページを適当な数に区切って、そのセクション毎に0または1のカウントを行い、0が多ければ反転操作を行うこととしてもよい。例えば、図1(B)に示すように、32,768ビットの1ページを8個に区切って、4096ビットを一単位として、4096個のバイナリデータのうちで0と1の数を数えて、もし0が多ければ、このデータを反転して、1が多ければそのまま、1ビットの反転フラグをつけた形で、フラッシュメモリへの保存を行うことができる。最も極端な例は、このセクションを反転フラグ用の1ビットと保存データ用の1ビットの2ビットの構成にすることであるが、保存できるデータがフラッシュメモリの容量の半分になってしまうので、冗長度が高くなりすぎ、現実的ではない。したがって、実際の応用に際しては、図1(A)に示したような反転制御ビットを1ページ分のデータに付加する場合から、セクションが反転制御ビットと1データビットの例の間のどこかに最適解を求めることとなる。すなわち、1ページを、2個、4個、8個、16個、32個、64個などに区切ることが考えられる。
以上が本願発明の1実施形態の原理であるが、現実的には、このように反転制御ビットを付加したデータをそのままフラッシュメモリに保存するのではなく、通常の誤り訂正符号(ECC)の符号化を行うのが好ましい。その上で、そのほかのNAND型フラッシュメモリに一般的な、ウェアレベリングや、不良ブロック管理、フラッシュメモリの動作特性に合わせた書き込みと読み取りの操作を行って、フラッシュメモリにデータを保存することになる。反転制御ビットを付加した後にECCの符号化を行うのは、反転制御ビットがエラーになると1ページ又はその中のセクションの1つの中の全てのデータがエラーとなってしまうので、反転制御ビットにも誤り訂正を掛けたいからである。
図2にこのような本発明の1実施形態による方法のフローを示す。デジタルデータを受けた後(S101)、一定のセクション内の0または1をカウントする(S102)。そして、0または1のエラーが出やすい方の数が多いかどうかを判断する(S103)。このとき、エラーが出やすい方とは、フラッシュメモリの状態に対する値の定義にもよるが、典型的には、シングルレベルセルの場合には、0が多い方がエラーが発生しやすい。エラーが出やすい方の数値が多ければ、データを反転した上で、反転の事実を示すフラグに対応する値の反転制御ビットをデータに付加し(S105)、そうでなければ、データを反転せずに、反転していない状態を示すフラグに対応する値の反転制御ビットを付加する(S104)。その後、フラッシュメモリにデータを保存する(S106)が、その際には、上述のように、ECCへの符号化、ウェアレベリング、不良ブロック管理などの操作が行われる。次の区画がなければ、終了し、まだデータが残っていれば、次の区画について、一連の操作を行う(S107、S108)。ここで、ECC符号化としては、一般的な、BCH符号(例えば、非特許文献1を参照。)を用いることができる。
阪田省二郎ほか訳「誤り訂正符号入門」、森北出版株式会社2005年10月11日発行、 Jorn Justesen and Tom Hoholdt, "A Course In Error-Correcting Codes," European Mathematical Society 2004(非特許文献1の原著)
これを実行するための機能的ブロックダイアグラムを図3に示す。まず、NAND型フラッシュメモリに保存されるべきデータが入力されると、カウンタ101によりそのデータ内の0と1の数を数える。その上で、バッファとして機能するRAM102にデータを保存する。その後第1反転操作部103により、もしカウンタ101が数えた0の数が1の数を上回れば、保存すべきデータを反転(論理否定)した上で、例えば1の値の反転制御ビットを付加して、ECC(誤り訂正符号)への符号化のためのECCエンコーダ104にデータを送り込む。このとき、RAM102と第1反転操作部103の順序は入れ替えることができる。ここで、0と1のどちらかが多いかを判断するためには、図3に示すようなカウンタ101を用いて数え上げる手法のほか、上述のようにRDSを利用した手法も利用可能である。この場合には、カウンタ101は、RDS計算部となる。そして、フラッシュメモリコントローラ(ウェアレベリングや不良管理ブロック管理の機能を含む)を介してデータがフラッシュメモリ105に保存される。このフラッシュメモリコントローラは図示しないが、フラッシュメモリ105自体に含まれていると考えることもできる。
フラッシュメモリ105からデータを読み出す際には、ECCデコーダ106により、誤り訂正処理を行い、さらに、第2反転操作部(107)により、反転制御ビットの値に応じて、読み出されたデータを反転しあるいは反転せずに、バッファとなるRAM(108)に出力する。
以上、シングルレベルセルの場合をとって、本発明の第1実施形態を説明したが、これは単に例示に過ぎず、例えば、カウンタ101とRAM102のデータのフローにおける順序を反転させるなど、種々の変更がシステムの構成やフラッシュメモリの特性に応じて可能である。また、上記のように、カウンタ101は、RDSを利用したRDS計算部であってもよい。さらに、カウンタ101あるいはRDS計算部を省略することも可能である。そして、反転操作の代わりにテーブルを利用する、パターンマッチングを利用するなどの種々の手法により元のデータを変換することも可能である。このとき、第1反転操作部103と第2反転操作部107は、それぞれ第1変換部と第2変換部と呼ばれるべきものとなる。本発明は特定の変換手法に限定されるものではないことに留意されたい。
次に、本発明の第2実施形態として、同じページ内において、0を誤りやすいエラーと1を誤りやすいエラーの両方が生じる場合に対応する方法を説明する。すなわち、同じページであっても、0の誤りが多く発生する場合、1の誤りが多く発生する場合、両方のエラーが同程度に発生する場合がある。このような場合には、0や1の数に偏りを持たせるのではなく、0と1の数を同程度にするという変換を行うことが好ましい。このような変換は、例えばDCフリー符号を用いて実現することができる。DCフリーとは、データストリングに含まれる0と1の比率が等しいか近似していることを意味する。DCフリー符号の一例として、RDSを用いた符号化方法について説明する。
DCフリー符号への簡単な変換例を次に示す。すなわち、まず、第1の実施形態と同様に、1ページをK個のセクションに区切る(セクションの数Kは2以上の整数)。そのページの先頭で、前述のRDS(running digital sum)の初期値を0とする。RDSは、0と1からなるデジタルデータストリングについて各ビットの値が0であれば+1を、1であれば−1を積算し、この積算をビットの並びに順次繰り返していって得られる値である。まず、この積算を第1のセクションの最初のビットから最後のビットまで行って、RDSを計算し、その結果をRDS1とする。そして、次の第2のセクションについて、同様にして、初期値をゼロにして、最初のビットから最後のビットまでに渡るRDSを計算してその結果をRDS2とする。そして、RDS1とRDS2を比較して、両方とも0以上またはマイナスの値のいずれかで共通している場合には、第2のセクションの全ビットの値を反転し、変換制御ビットの値を1にして、第2のセクションの先頭に付加する。RDS1とRDS2の値の一方がマイナスで、他方が0以上であれば、第2のセクションのビット値を反転せずにそのまま置き、第2のセクションの先頭に、0の値の変換制御ビットを付加しておく。その後、RDS1とRDS2との和を計算しておく。次に、第3のセクションについても同様に、RDS3を計算する。そして、RDS1とRDS2の和(以下にこの和を順次積算していくのでこれを「RDSの積算値」と定義する)とRDS3の値を比較して、両方とも0以上またはマイナスの値のいずれかで共通している場合には、第3のセクションの全ビットの値を反転し、変換制御ビットの値を1にして、第3のセクションの先頭に付加する。RDSの積算値とRDS3の値のどちらかがマイナスで、どちらかが0以上であれば、第3のセクションのビット値を反転せずにそのまま置き、第3のセクションの先頭に、0の値の変換制御ビットを付加する。これを、順次、ページの最後まで繰り返す。言い換えれば、第k−1のセクションまでのRDS積算値と第kのセクションのRDS値(RDSk)を比較して、両方とも0以上またはマイナスであれば、第kセクションの全てのビット値を反転し、1の値の変換制御ビットを付加し、一方が0以上で、他方がマイナスであれば、反転を行わずに、0の値の変換制御ビットを付加することを繰り返す(kは2以上K以下の整数)。その結果、DCフリー符号が得られる。
このようなDCフリーの符号を得るための変換方法には幾通りものやり方があり、上記の手順は一例にしか過ぎないことに留意されたい。その他の方法としては、特願2009−196037号に示したトレリス線図を利用した方法を利用することも可能である。
この実施形態によると、0が多いデータストリングがあるとき、0が誤りやすいエラーが発生すると当然エラーの可能性が大きくなる。また、1が多いデータストリングがあるとき、1が誤りやすいエラーが発生すると当然エラーの可能性が大きくなる。このようなときには、データストリング中の0と1の数を同程度になるように変換しておけば、エラー発生の可能性を減らすことができる。
なお、第1の実施形態と第2の実施形態は、例えば、個々のページについて選択的に利用することができるものである。すなわち、あるページについては、0の値に誤りが多く発生する傾向があり、次のページについては、0も1も同程度に誤りやすいということがあり得る。そこで、予め各ページのエラーの出やすさの傾向を測定しておいて、その結果に基づいて、ページ毎あるいはその他の適当な単位で、第1実施形態の処理と第2実施形態の処理を切り替えて、ページ毎あるいはその他の適当な単位で、最適な処理を行うことができる。
次に、マルチレベルセルのNAND型フラッシュメモリの場合を、本発明の第3実施形態に基づいて説明する。マルチレベルセルの場合には、0か1のいずれかでエラーが多く発生するという固定された傾向があるのではなく、多くの場合、ブロック内にあるページ毎にエラー特性が異なる。このエラー特性は、通常、フラッシュメモリチップの設計に依存して決まるので、ページ毎のエラー特性データをベンダーから得るか、あるいは、自らテストして見出すことができる。そして、そのようなデータに基づいて、ページ番号毎に、反転制御を切り替えることができる。具体的には、次の4つのモードの間で切り替えることが好ましい。すなわち、(1)反転操作をしない、(2)0が多くなるように反転操作をする、(3)1が多くなるように反転操作をする、(4)0と1の数が同程度になるように反転操作をする、の4モードである。フラッシュメモリチップのエラー特性に応じて、4つのモードうち1つあるいは複数を省略することもできる。この場合でも、反転制御ビットは、反転したかどうかを示すだけなので、1ビットで足りる。このようなモードのページ毎の設定は、予め、特定のフラッシュメモリ素子に対応して、決定し、記憶しておくことができる。
また、図4に、本発明の第4実施形態として、マルチチャンネルのNAND型フラッシュメモリの制御の場合の、図3に対応する構成例を示す。NAND型フラッシュメモリは、書き込みと読み取りの速度がDRAMなどに比べると遅いという問題点がある。特に書き込みは遅い。そのため、書き込みと読み取りの高速化のために複数のチャンネルを使って読み込みと書き込みを行うことが行われている。チャンネルの数は、8,10,16が、現在典型的である。このようなマルチチャンネルのNAND型フラッシュメモリの制御の場合には、通常、カウンタ201は十分高速であるので1つで対応できるが、その下流にあるRAM202,反転操作部203、ECCエンコーダ204は、チャンネルの数だけ設けることが設計上の単純さから言っても好ましい。出力は、NANDフラッシュメモリ205の読み取り動作が速ければ、マルチチャネル化する必要はないが、より高速の動作のためには、入力と同様にマルチチャンネル化することが好ましい。
(シミュレーション例)
以下に、一定の条件下で、本発明がどのような効果を発揮するかをシミュレーションした結果を説明する。前提となるエラー発生の非対称性は、0を1に誤るエラーの発生確率を95%、1を0に誤るエラーの発生確率5%と仮定した。図5に示す結果は、生のデータ(フラッシュメモリに記憶されるべきデータ)中に0が50%、1が50%ある場合の本発明の第1実施形態による誤り防止の効果を示す。図中、WCCとあるのは、Weight Control Codeの略で、本発明の第1実施形態を意味し、それを使用した場合(実線)と使用しなかった場合(破線)の結果を、生データのビットエラー率(フラッシュメモリから出力されたデータにあるエラーの率であり、ECCによる誤り訂正は含めていない)の関数として示してある。左軸は、ECCにより誤り訂正不能なページエラーの発生の割合を示しており、このようなエラーが発生するブロックは使用不可能になってしまう。図6に示す結果は、同様に、データ中に0が56%、1が44%含まれている場合のシミュレーション結果を示す。図7には、同様に、0が70%、1が30%含まれている場合のシミュレーション結果を示す。このようなデータ内の0と1の出現の非対称性または偏りは、画像データなどにはよく見られる。本発明は、デジタルデータの0と1の出現率の非対称性が大きい場合に非常に大きな効果があり、簡単な回路構成で、ECCの誤り訂正機能を補完する効果がある。
101 カウンタ
102 RAM
103 第1反転操作部(変換部)
104 ECCエンコーダ
105 フラッシュメモリ
106 ECCデコーダ
107 第2反転操作部(逆変換部)
108 RAM

Claims (10)

  1. 0と1とからなるデジタルデータストリングの一定のセクションの中で、0と1のそれぞれの数のうち、エラーが出やすい方の数があるパーセント値以下になるように変換する変換ステップと、
    変換されたデータをNAND型フラッシュメモリに保存する保存ステップと、
    該NAND型フラッシュメモリから保存されたデータを読み出す読み出しステップと、
    読み出されたデータを元のデジタルデータストリングに戻すための逆変換操作を行う逆変換ステップと
    を含んでなるNAND型フラッシュメモリの入出力制御方法。
  2. 前記パーセント値が70パーセントである、請求項1に記載の入出力制御方法。
  3. 前記変換ステップを1セクション内の元のデータとそれを変換したデータとを対応づける変換テーブルを利用して実行し、前記逆変換ステップをこの変換テーブルを逆向きに適用して実行する、請求項1に記載の入出力制御方法。
  4. 前記変換ステップを行う必要があるか否かを判断するために,エラーが出やすい方の数が当該セクションの中に過半を占めているかを判断する判断ステップを前記変換ステップの前に行い、前記変換ステップが、エラーが出やすい方の数が当該セクションの過半を占めている場合に、当該セクションの全てのビットを反転するものであり、過半を占めていない場合には、反転を行わないものであって、反転の有無を示す変換制御ビットをデジタルデータストリングに付加するものである、請求項1に記載の入出力制御方法。
  5. 0と1とからなるデジタルデータストリングの一定のセクションの中で、0の数が50+Xパーセントから50−Yパーセントの範囲(ここで、XおよびYは0より大きく50未満の定数)になるように変換する変換ステップと、
    変換されたデータをNAND型フラッシュメモリに保存する保存ステップと、
    該NAND型フラッシュメモリから保存されたデータを読み出す読み出しステップと、
    読み出されたデータを元のデジタルデータストリングに戻すための逆変換操作を行う逆変換ステップと
    を含んでなるNAND型フラッシュメモリの入出力制御方法。
  6. 前記変換ステップをDCフリー符号を作成することにより実施する、請求項1に記載の入出力制御方法。
  7. 0と1とからなるデジタルデータストリングの一定のセクションの中で、0と1のそれぞれの数のうち、エラーが出やすい方の数があるパーセント値以下になるように変換する変換部と、
    NAND型フラッシュメモリに保存するために、変換されたデータを誤り訂正符号にするECCエンコーダと、
    NAND型フラッシュメモリから出力された誤り訂正符号をデコードするECCデコーダと、
    デコードされたデータを元のデジタルデータストリングに戻すための逆変換操作を行う逆変換部と
    を備えたNAND型フラッシュメモリの入出力制御装置。
  8. 前記変換部による変換が必要であるか否かを判断するために,エラーが出やすい方の数が当該セクションの中に過半を占めているかを判断するカウンタをさらに備え、前記変換部が、エラーが出やすい方の数が当該セクションの過半を占めている場合に、当該セクションの全てのビットを反転するものであり、過半を占めていない場合には、反転を行わないものであって、反転の有無を示す変換制御ビットをデジタルデータストリングに付加するものである、請求項7に記載の入出力制御装置。
  9. 0と1とからなるデジタルデータストリングの一定のセクションの中で、0の数が50+Xパーセントから50−Yパーセントの範囲(ここで、XおよびYは0より大きく50未満の定数)になるように変換する変換部と、
    NAND型フラッシュメモリに保存するために、変換されたデータを誤り訂正符号にするECCエンコーダと、
    該NAND型フラッシュメモリから出力された誤り訂正符号をデコードするECCデコーダと、
    デコードされたデータを元のデジタルデータストリングに戻すための逆変換操作を行う逆変換部と
    を備えるNAND型フラッシュメモリの入出力制御装置。
  10. 前記変換部においてDCフリー符号を作成するものである請求項9に記載の入出力制御装置。
JP2010000731A 2010-01-05 2010-01-05 Nand型フラッシュメモリの入出力制御方法及び装置 Pending JP2011141914A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010000731A JP2011141914A (ja) 2010-01-05 2010-01-05 Nand型フラッシュメモリの入出力制御方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010000731A JP2011141914A (ja) 2010-01-05 2010-01-05 Nand型フラッシュメモリの入出力制御方法及び装置

Publications (1)

Publication Number Publication Date
JP2011141914A true JP2011141914A (ja) 2011-07-21

Family

ID=44457648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010000731A Pending JP2011141914A (ja) 2010-01-05 2010-01-05 Nand型フラッシュメモリの入出力制御方法及び装置

Country Status (1)

Country Link
JP (1) JP2011141914A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014010670A (ja) * 2012-06-29 2014-01-20 Fujitsu Ltd データ変換方法、データ変換装置およびデータ変換プログラム
WO2016013285A1 (ja) * 2014-07-24 2016-01-28 ソニー株式会社 メモリコントローラおよびメモリコントローラの制御方法
JP2016504658A (ja) * 2012-11-21 2016-02-12 マイクロン テクノロジー, インク. メモリのための整形符号
JP2019169216A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 メモリシステム
JP2022505728A (ja) * 2018-10-26 2022-01-14 長江存儲科技有限責任公司 メモリのデータ処理方法および関連するデータプロセッサ

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS626540A (ja) * 1985-07-02 1987-01-13 Canon Inc デ−タ処理装置
JPH05298894A (ja) * 1992-04-16 1993-11-12 Sharp Corp 不揮発性メモリのデータ書込読出制御装置
JP2000207291A (ja) * 1999-01-13 2000-07-28 Hitachi Ltd メモリ装置の診断方法
JP2002244932A (ja) * 2001-02-15 2002-08-30 Ricoh Co Ltd 制御装置
JP2003248631A (ja) * 2002-02-26 2003-09-05 Nec Microsystems Ltd メモリ制御回路及びメモリ制御方法
JP2004152366A (ja) * 2002-10-29 2004-05-27 Sony Corp データ記憶方法及びデータ記憶回路
JP2007502489A (ja) * 2003-08-13 2007-02-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 不揮発性メモリを電荷トラッピングするための改善された消去および読み取り手法
JP2007310964A (ja) * 2006-05-18 2007-11-29 Toshiba Corp Nand型フラッシュメモリ装置及びメモリデバイス
JP2008535131A (ja) * 2005-03-24 2008-08-28 フリースケール セミコンダクター インコーポレイテッド データとして用いることと誤り訂正符号(ecc)として用いることとの間で切り替えられることが可能である部分を有するメモリ

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS626540A (ja) * 1985-07-02 1987-01-13 Canon Inc デ−タ処理装置
JPH05298894A (ja) * 1992-04-16 1993-11-12 Sharp Corp 不揮発性メモリのデータ書込読出制御装置
JP2000207291A (ja) * 1999-01-13 2000-07-28 Hitachi Ltd メモリ装置の診断方法
JP2002244932A (ja) * 2001-02-15 2002-08-30 Ricoh Co Ltd 制御装置
JP2003248631A (ja) * 2002-02-26 2003-09-05 Nec Microsystems Ltd メモリ制御回路及びメモリ制御方法
JP2004152366A (ja) * 2002-10-29 2004-05-27 Sony Corp データ記憶方法及びデータ記憶回路
JP2007502489A (ja) * 2003-08-13 2007-02-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 不揮発性メモリを電荷トラッピングするための改善された消去および読み取り手法
JP2008535131A (ja) * 2005-03-24 2008-08-28 フリースケール セミコンダクター インコーポレイテッド データとして用いることと誤り訂正符号(ecc)として用いることとの間で切り替えられることが可能である部分を有するメモリ
JP2007310964A (ja) * 2006-05-18 2007-11-29 Toshiba Corp Nand型フラッシュメモリ装置及びメモリデバイス

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014010670A (ja) * 2012-06-29 2014-01-20 Fujitsu Ltd データ変換方法、データ変換装置およびデータ変換プログラム
JP2016504658A (ja) * 2012-11-21 2016-02-12 マイクロン テクノロジー, インク. メモリのための整形符号
KR101752987B1 (ko) 2012-11-21 2017-07-03 마이크론 테크놀로지, 인크. 메모리를 위한 성형 코드들
WO2016013285A1 (ja) * 2014-07-24 2016-01-28 ソニー株式会社 メモリコントローラおよびメモリコントローラの制御方法
JPWO2016013285A1 (ja) * 2014-07-24 2017-05-25 ソニー株式会社 メモリコントローラおよびメモリコントローラの制御方法
US10635528B2 (en) 2014-07-24 2020-04-28 Sony Corporation Memory controller and method of controlling memory controller
JP2019169216A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 メモリシステム
JP2022505728A (ja) * 2018-10-26 2022-01-14 長江存儲科技有限責任公司 メモリのデータ処理方法および関連するデータプロセッサ

Similar Documents

Publication Publication Date Title
JP5944941B2 (ja) クロス・ページ・セクタ、マルチ・ページ符号化およびパー・ページ符号化を使用して多重レベル・セル・フラッシュ・メモリ・デバイスにデータを記憶するための方法および装置
KR101519626B1 (ko) 반도체 메모리 장치 및 그것의 데이터 처리 방법
US9543983B2 (en) Decoding method, memory storage device and memory control circuit unit
JP6960877B2 (ja) メモリシステム
US20150234705A1 (en) Semiconductor memory device
US9092350B1 (en) Detection and handling of unbalanced errors in interleaved codewords
US9032278B2 (en) Method for performing data shaping, and associated memory device and controller thereof
US10084479B2 (en) Low BER hard-decision LDPC decoder
US20160350179A1 (en) Decoding method, memory storage device and memory control circuit unit
US8463985B2 (en) Constrained coding to reduce floating gate coupling in non-volatile memories
JP2010237822A (ja) メモリコントローラおよび半導体記憶装置
JP6847796B2 (ja) メモリシステム
JP2010287305A (ja) 多値レベルメモリデバイスにおける増大した記憶容量のための誤り訂正符号
TW201322646A (zh) 具有減少的記憶體與功率需求之錯誤校正解碼
TWI474329B (zh) 提昇錯誤更正能力之方法以及記憶裝置及控制器
JP2011141914A (ja) Nand型フラッシュメモリの入出力制御方法及び装置
US20180276069A1 (en) Memory controller, memory system, and control method
TW201337932A (zh) 讀取快閃記憶體中所儲存之資料的方法、記憶體控制器與系統
US8169829B2 (en) Memory controller, memory system, recording and reproducing method for memory system, and recording apparatus
JP5283989B2 (ja) メモリシステム及びメモリアクセス方法
KR20160075001A (ko) 플래시 메모리 시스템 동작 방법
JP2017107620A (ja) 半導体装置及び不揮発メモリ
KR20140125987A (ko) 인코더, 디코더 및 이를 포함하는 반도체 장치
CN108170554B (zh) 一种nand的数据编码方法和装置
JP2009163774A (ja) メモリコントローラ及び半導体装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130607

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130806

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131004