自己回復形不揮発性メモリ
不揮発性メモリアレイは2つ以上の装置を備えている。各装置が含んでいるデータはそれぞれ異なるスクランブル方式を使用してスクランブルをかけられている。同じデータが供給され、両方の装置に格納される場合には、異なるデータパターンが各装置に生じる。その結果、パターンのうちの1つがデータパターン誘導エラーを引き起こした場合に、オリジナルデータは、同じデータパターンを共有しない別のコピーから再生成させることが可能である。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリと不揮発性メモリを形成する方法に関する。本発明は、特に、フローティングゲートメモリセルが個々に1ビット以上のデータを保持する不揮発性メモリアレイに関する。
【背景技術】
【0002】
関連出願への相互参照
本願は、2007年9月25日に出願された米国特許出願第11/861,146号(特許文献1)からの優先権と利益を主張し、その全体があらゆる目的のために本願明細書において参照により援用されている。
【0003】
不揮発性メモリシステムは様々なアプリケーションで使用されている。いくつかの不揮発性メモリシステムは、パソコンのようなより大きなシステムに組み込まれて用いられる。他の不揮発性メモリシステムは、ホストシステムにリムーバブルに接続され、異なるホストシステム間で交換することも可能である。そのようなリムーバブルメモリシステムの例として、メモリカードおよびUSBフラッシュドライブなどが挙げられる。不揮発性のメモリカードを含む電子回路カードは、多くのよく知られた標準に従って商業上製品化されている。メモリカードは、パソコン、携帯電話、携帯情報端末(PDA)、デジタルスチルカメラ、デジタルムービーカメラ、ポータブルオーディオプレイヤおよび他のホスト電子デバイスで大容量データの記憶装置として使用されている。そのようなカードは、通常、メモリセルアレイおよびカードが接続されるホストとの間のインターフェイス動作を制御し支援するコントローラと共に再プログラム可能な不揮発性の半導体メモリセルアレイを含んでいる。同じタイプのカードのいくつかのものは、そのタイプのカードを挿入可能なように設計されたホストカードスロットの間で交換が可能である。しかし、多くの電子カード標準が開発されたため、様々な程度で互いに互換性のない異なるタイプのカードを作成することとなってしまった。ある1つの標準に従って作られたカードは別の標準のカードで動作するように設計されたホストでは通常使用可能ではない。メモリカード標準は、PCカード、コンパクトフラッシュカード(CFcard(登録商標))、スマートメディアカード、マルチメディアカード(MMC(登録商標))、セキュアデジタル(SD)カード、ミニSDカード、加入者IDモジュール(SIM)、メモリスティック(登録商標)、メモリスティックデュオカードおよびマイクロSD/トランスフラッシュ(登録商標)メモリモジュール標準を含んでいる。「Cruzer」という商標でサンディスク コーポレイションから市販のいくつかのUSBフラッシュドライブ製品が出されており入手可能である。これらUSBフラッシュドライブは特徴的に前述したメモリカードより大容量で異なった製法を用いている。ラップトップコンピュータなどで、伝統的にハードディスクドライブ(HDD)が使用されていたアプリケーションでは、ソリッドステートドライブ(SSD)は不揮発性メモリシステムを使用している。
【0004】
異なるタイプのメモリアレイアーキテクチャが不揮発性メモリシステムの中で使用されている。電荷を格納するためにフローティングゲートを使用するフラッシュメモリアレイはメモリアレイの1つの共通タイプである。アーキテクチャの1つのタイプであるNANDアレイでは、16もしくは32のような2つ以上のメモリセルの一連のストリングは、個々のビット線とセルの行を形成する基準電位との間の1つ以上の選択用トランジスタと共に接続される。ワード線は多くのこれらの行内のセルにわたって延びている。個々のメモリセルは、シングルレベルセル(SLC)設計として知られているものの中にデータの1ビットを保持することが可能である。いくつかの例において、メモリセルは、マルチレベルセル(MLC)設計として知られているものの中に2ビット以上のデータを保持することが可能である。
信頼性は一般的にメモリ製品にとって重要な特徴であり、ある産業用途では特に重要である。従って、高い信頼性を備えた不揮発性メモリシステムの必要性がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願第11/861,146号
【発明の概要】
【0006】
独立形ディスク冗長化アレイ(RAID)技術およびデータスクランブリングの組み合わせは、不揮発性メモリアレイに高い信頼性を提供することができる。特に、異なる装置の中で異なるデータスクランブリングが使用される場合には冗長性を提供する。たとえオリジナル(スクランブリングされていない)データが各装置に対して同じであっても、装置はそれぞれ異なるデータパターンを含んでいる。従って、装置中の特定のデータパターンによって引き起こされる任意のエラーは、異なったスクランブリングを使用した複数の装置では繰り返されない。そのようなスクランブリングを使用するRAIDシステムは装置障害と同様に、データパターンによって引き起こされたエラーからの保護を組み込んでいる。
【0007】
本発明の実施例による不揮発性メモリアレイに安全にデータを格納する方法は、第1の変換されたデータを得るために第1の変換によりデータ部分を変換するステップと、メモリアレイの第1の部分に第1の変換されたデータを格納するステップと、第2の変換されたデータを得るために第2の変換によりデータ部分を変換するステップと、データ部分の冗長記憶を提供するために、第1の変換されたデータがメモリアレイの第1の部分に格納されている一方、メモリアレイの第2の部分に第2の変換されたデータを格納するステップと、を含む。
【0008】
本発明の実施例による不揮発性メモリシステムは、メモリアレイの第1の部分と、メモリアレイの第1の部分に格納する前に第1の変換によりデータにスクランブルをかけるために、メモリアレイの第1の部分に接続された第1のデータスクランブラユニットと、メモリアレイの第2の部分と、メモリアレイの第2の部分に格納する前に第2の変換によりデータにスクランブルをかけるために、メモリアレイの第2の部分に接続された第2のデータスクランブラユニットであって、この第2のデータスクランブラユニットは第1のデータスクランブラユニットに並列に接続される第2のデータスクランブラユニットと、を備える。
【図面の簡単な説明】
【0009】
【図1】データすべてが第1の装置と第2の装置に格納された、ミラーリングを使用したメモリシステム構成図である。
【図2】データA2が格納されたとき、そのパターンのために、読み出し時にECCによって訂正することができない図1のメモリシステム構成図である。データA2の両方のコピーは装置1および装置2の中で訂正することができない。
【図3】4つの装置にわたってデータを分散させるためにストライピングを使用して格納されているデータ構成図である。
【図4】より大きなストライプを備えた別のストライピング構成図である。
【図5A】データのミラーリングおよびストライピングを使用した、メモリシステム構成図である。
【図5B】読み出し時にデータパターン誘導エラーのためにECCによって訂正できない、データA2およびA7の場合の図5Aのメモリシステム構成図である。
【図6A】ミラーリングとストライピングを使用した、別のメモリシステム構成図である。
【図6B】読み出し時にデータパターン誘導エラーのためにECCによって訂正できないデータA2の場合の図6Aのメモリシステム構成図である。
【図7A】メモリシステムに格納される前にすべてのデータを変換するためのデータスクランブラユニットを備えている、ミラーリングおよびストライピングを使用したメモリシステム構成図である。
【図7B】読み出し時にデータパターン誘導エラーのためにECCによって訂正できない変換されたデータA2’とA3’の場合の図7Aのメモリシステム構成図である。
【図8A】各装置中のデータが異なる変換に従うように装置1用の第1のデータスクランブラユニットおよび装置2用の第2のデータスクランブラユニットを備えている別のメモリシステム構成図である。
【図8B】変換データA1*がまだ訂正可能であるが、読み出し時にデータパターン誘導エラーのためにECCによって訂正できない変換データA1’のメモリシステム構成図である。
【図9A】データがデータスクランブラを共有する装置間にわたってストライピングされる場合の別のメモリシステム構成図である。
【図9B】変換データA2*およびA7’がECCによって訂正可能なままであるが、読み出し時にデータパターン誘導エラーのためにECCによって訂正できない変換データA2’およびA7*の場合の図9Aのメモリシステム構成図である。
【図10A】いくつかの装置が専用のデータスクランブラを備えている場合と、別のいくつかの装置がデータスクランブラを共有している、別のメモリシステム構成図である。
【図10B】データA2*を使用して訂正できない変換データA2’の置換およびデータA3*を使用した訂正できない変換データA3”の置換の動作説明図である。
【図10C】A2*を使用して訂正できない変換データA2’の置換およびA3*を使用して訂正できない変換データA3”の置換の動作説明図である。
【図11A】キーが繰り返し使用される前の連続した32ページを変換するために連続して使用される1セットの32個のキーテーブル図である。
【図11B】8ページ後に各装置内で繰り返し使用されるキーと、4つの装置にわたってストライピングデータを変換するために使用される32個のキーテーブル図である。
【図12A】データの各ページ毎に異なったキーのセットを使用してデータを変換する単一のデータスクランブラユニットを使用して格納されたデータ構成図である。
【図12B】各データスクランブラでキーが装置内で頻繁に繰り返し使用されるのを防ぐためにキーを連続して使用する、各装置毎に個別のデータスクランブラユニットを備えた別のデータ構成図である。
【図13】パリティデータを格納する専用装置を使用し、各装置毎に専用のデータスクランブラユニットを備えたメモリシステム構成図である。
【図14】専用のデータスクランブラユニットを備えている各装置と共に、パリティデータが4つの装置にわたって分散されるメモリシステム構成図である。
【発明を実施するための形態】
【0010】
様々な方法が不揮発性メモリシステムにおいて高い信頼性でデータ保存を達成するために使用されている。冗長化によって信頼性を改善するある方法は独立形ディスク冗長化アレイ(RAID)を使用する。ミラーリング、ストライピングおよびパリティデータを使用した異なるタイプのRAIDシステム、あるいはこれらの技術の組み合わせがある。RAIDという用語は一般にハードディスクドライブ(HDD)に関係しているが、RAID技術は、フラッシュメモリのような不揮発性メモリアレイを含む他のタイプのメモリと共に使用されてもよい。
【0011】
図1は、装置1および装置2の2つの装置を示す。これらはミラーリング構成(RAID1とも呼ばれる)で接続されている。ミラーリングとは装置1に格納されるのと同じデータ、A0、A1、A2、A3が、装置2にデータの各ユニットの冗長コピーがあるように装置2に格納されることを意味する。他の例では、2つ以上の装置が、同じ2つ以上のデータのコピーを提供するこの方法で接続されてもよい。一般に、2つ以上の装置の中で同じデータの個別のコピーを保持することは、任意の個々の装置の障害からの保護を提供する。従って、図1に示す装置1に障害が発生した場合、装置1に格納されたデータはすべて、装置2からのデータで回復することができる。
【0012】
個別の装置中のデータの冗長コピーは装置障害に対しての保護をしているが、それはデータロスのあらゆる形式に対して保護をするものではない。ある不揮発性メモリアレイでは、特別なパターンのデータ保存は、特別にデータ破損の機会を増加させるかもしれない。このことは、影響する下層チャネルだけでなく影響する隣接チャネル、つまり影響する隣接したセルのしきい値電圧により、セルのフローティングゲートを備えた隣接したセル間の相互干渉のために生じる。これは、1ビット以上で格納されたセルのしきい値電圧の微少変化により不正確に読み出されてしまうかもしれないMLCメモリシステムで特に問題となる。この問題はメモリアレイ中の寸法がより小さくなり、セル間の相互干渉がより強くなるとともに、厳しくより頻度が高くなる傾向がある。例えば、低いしきい値電圧に最初にプログラムされたMLCセル(そのフローティングゲートにほとんど電荷がないもしくはまったく電荷がない)は、隣接するセルが高いしきい値電圧にプログラムされたことにより(そのフローティングゲートに大きな電荷がある)、後でそのしきい値電圧を上げるかもしれない。これはプログラム妨害のひとつの形と考えられるかもしれない。どの特定のデータパターンがプログラム妨害を引き起こすか、そして引き起こされる妨害の程度(後で誤って読まれてしまうビット数)は、メモリアーキテクチャに依存する。従って、たとえメモリアレイがその設計限界内で動作していても、特別なメモリアレイに格納されたデータを誤って読み出す特別のパターンのデータがあるかもしれない。そのようなデータパターンを回避することが一般的に望ましい。
【0013】
多くのメモリシステムが、誤ったビットを含んでいるデータを検知し訂正することを可能にするためにいくつかの誤り訂正符号(ECC)形式を含んでいる。これを行うために、データはある冗長情報を格納する。データ読み出し時に冗長部はデータがエラーがないかチェックすることを可能にし、あるエラー制限数まで訂正することが可能である。しかし、多くのエラーを訂正するために、冗長部が高い程度(多くの余分なビット)で必要となりメモリスペースの効率的な使用とならない。典型的には、使用される冗長部の程度は、予測されるエラー率に基づき(例えば、多くの予測される不完全なセルに基づいている)、特別のデータパターンによって引き起こされるような高いエラー数を訂正するのには十分ではない。特にデータパターン誘導エラーが、同様の条件に晒される複数のセルのデータの同じ部分に一緒に発生するかもしれない。また、ECCは一般的に、データのそのような部分中の限られたビットの訂正に制限されている。従って、ECCはあるメモリシステム中のデータパターン誘導エラーに対応するには単独では十分ではないかもしれない。
【0014】
図2は、装置1および装置2が同じデータの同一のコピーを格納する例を示す。この場合、データA2の部分はA2が格納された後で読み出される場合、読み出されたデータは、セル間の相互干渉のために多くのエラーを持ったデータのようなデータパターンを持っている。これは、A2内のセル間の相互干渉、およびA2の外側のセルとの相互干渉を含んでいるかもしれない。特に、列の中のセルは同じブロックの隣接した列の中のセルによって影響される傾向がある。この場合、データA2におけるエラーの数は、使用されているECC方式により訂正できる能力を越えている。また、データは、ECCによって訂正できないと考えられる。データ部分A2は、512バイト(+オーバーヘッド)のセクタ、ページ(書き込み単位)あるいはブロック(消去の最小単位)のようなデータの任意のユニットであってもよい。データA2は、装置1および装置2の両方に同一に格納される。従って、同じパターンが各装置に生じる。従って、両方の装置中のデータA2のコピーは影響を受け、また、どちらのコピーも回復可能ではない。従って、この場合、ミラーリング単独ではデータがすべて回復されることを可能にするために十分なレベルの信頼性を提供できない。
【0015】
図3は、異なる装置間のデータストライピング(RAID0)の第1の例を示す。データは、図に示されるように、3つのファイル、ファイルA、ファイルBおよびファイルCとして受け取られる。その後、これらのファイルは図に示されるように装置1〜4にわたって分散される。特に、ファイルAは、装置1中のA0および装置2中のA1として格納される。ファイルBはB0〜B6として格納され、装置1〜4にわたって分散される。また、ファイルCはC0〜C9として格納され、装置1〜4にわたって分散される。この例におけるデータのストライプは各装置中のデータの1ユニットからなる。例えば、A0、A1、B0およびB1は一緒にストライプを構成する。この例では、各ストライプは2Kバイトのデータを含んでいる。図4は、同じデータが同じ装置にわたってより大きなストライプサイズを使用して、各ストライプが4Kバイトのデータを含んでいる別の例を示す。ストライピングは冗長性を提供しないが、データが分割され、分割されていなければエラーを引き起こすかもしれないデータパターンが回避されるかもしれないので、これにより信頼性が改善される場合がある。複数の装置にわたって高度に並列でプログラムすることを容易にするので、ストライピングデータはパフォーマンスを改善するかもしれない。
【0016】
図5Aは、ミラーリングおよびストライピングの組み合わせを使用したメモリシステムの例を示す。データは装置1と装置2の間でストライピングされ、また、装置1および2中のデータは装置3および4の中でミラーリングされる。このハイブリッド構成は、RAID0およびRAID1の特徴を適用するRAID0+1とも呼ばれる。図5B中で示されるように、あるパターンが格納されたデータに生じる場合、この構成はまだ問題を抱えている。特に、装置1中のデータA2の格納域がデータパターンにより訂正できないエラーの数を引き起こす場合、装置3に格納されたデータA2のコピーも訂正できないエラーの数を含んでいる。同様に、装置2および装置4の中でデータA7の2つのコピーは両方とも訂正できない。従って、A2もA7もどちらも回復可能なコピーではない。
【0017】
図6Aは、RAID0およびRAID1の別の組み合わせを示す。これはRAID10とも呼ばれる。装置1中のこの構成データは装置2の中にミラーリングされる。装置1および2に格納されるのと同じデータは装置3および装置4にわたってストライピングされる。しかし、図6Bに示されるように、データA2の1つのコピーはそのデータパターンのために訂正できず、他の装置中のデータA2のコピーも訂正できない。
【0018】
読み出し時に訂正できなくなるかもしれないデータパターンへの1つのアプローチは装置に格納する前にデータにスクランブルをかけることである。変換に対するスクランブルの対象となるデータが変換後に変換前のデータに対して異なるパターンを持つようにする。特にそのようなスクランブリングは、データ中の繰り返されたパターンに対してある乱数化を導入してもよい。変換の単純な例はビットをすべて逆にすることであり、つまり、すべての0をすべて1に変更し、すべての0をすべて1に変更することである。他の変換として、格納されるデータおよび一連のビット上で、排他的論理和(XOR)操作を行うことが含まれる。ECCと異なり、スクランブリングは冗長化ビットを加えない。従って、スクランブルをかけられたデータは、オリジナルのデータと同じビット数しか含んでいない。いくつかの場合では、変換により格納されるビット数が減少し、データを圧縮してもよい。いくつかの変換では、データセキュリティアルゴリズムを使用し、データパターンを分割してもよい。
【0019】
図7Aは、装置1〜4に格納されるデータすべてが装置に格納される前にスクランブルをかけられるように、データスクランブラユニットもしくはデータスクランブラ(DS)が装置1〜4に接続される例を示す。スクランブリングは、A0がA0’などとなるように、「’」を用いて図7Aに表示されている。図7Aは、図6AでのRAID10構成を示す。装置1と装置2の間でデータがミラーリングされ、かつ装置3と装置4にわたって同じデータがストライピングされている。スクランブリングデータが障害を起こさないパターンを持った変換データをもたらす一方で、ある場合には変換されたデータが読み出し時にエラーを引き起こすパターンを持つかもしない。ある場合にはエラーを引き起こさないスクランブリングされていないデータがエラーを引き起こすパターンに変換される。図7Bは、読み出し時にエラーを引き起こすパターンを持った変換データA2’とA3’のスクランブル結果を示す。これらのパターンがエラーを引き起こし、パターンがデータの各コピーで複製されるためにデータの回復可能なコピーは利用可能ではない。従って、ミラーリングおよびストライピングに加えて、単一のデータスクランブリングユニットを使用してスクランブリングすることは、この場合には信頼性を保証するには十分ではない。
【0020】
図8Aは、本発明の実施例によるデータ保存システムを示す。メモリシステムは、第1の変換により第1のデータスクランブラDS’によって変換されるデータユニットのシーケンス、A0、A1、A2、A3・・・を受け取る。DS’によって変換されたデータ(A0’、A1’、A2’、A3’)は装置1に格納される。さらに、データA0、A1、A2、A3・・・は第2のデータスクランブラDS*によって(A0*、A1*、A2*、A3*へと・・・)変換されかつ格納される。このように、データA0は装置1の格納域ではA0’に変換され、装置2の格納域ではA0*に変換される。データA0’はデータA0*とは異なるパターンを持っている。このように、データA0’を格納する装置1のセルのしきい値電圧はデータA0*を格納する装置2中の対応するセルと同じではないかもしれない。同様に、データの他の部分についても、同じデータパターンが生成されないように、異なる変換をされ異なるコピーが格納される。前に述べたように、時にはスクランブルをかけられたデータは訂正できなくなる格納されたデータのパターンを生成するかもしれない。図8Bは、格納時にそのデータパターンにより訂正することができないように変換されてしまったデータA1’を示す。しかし、変換データA1*は格納時に異なるデータパターンを持っているので、A1*は訂正できないわけではない。このように、たとえデータA1’が訂正可能ではなくとも、オリジナル(変換されていない)データA1のコピーはデータA1*から得ることができる。同様に、データの他のユニットが変換、格納時にそのデータパターンにより訂正できなかったとしても、データが別の装置中で格納される前に別の変換をされるので、未だオリジナルデータを回復させることができる。このように、図8Bの構成は、装置障害(つまり装置1あるいは装置2のいずれかが故障する場合)およびデータパターン誘導エラーからの保護を提供する。この方法は、データが2つの独立した装置に格納されるという点でミラーリングと同様ではあるが、2つの装置はスクランブリングの結果として異なるデータパターンを保持する。従って、装置2中のデータは、装置1中のデータをミラーリングせず、これは本当のミラーリングではない。
【0021】
図9Aは、2つの異なるスクランブラユニットDS’、DS*を備えてデータの2つの異なる変換を行うRAID0+1を使用した別の例を示す。データスクランブラDS’は装置1および装置2を取り扱い、データスクランブラDS*は装置3および装置4を取り扱う。このように、装置1および装置2に格納されるデータはすべて第1の変換で処理され、同じデータが装置3および装置4中に格納される前に第2の変換で処理される。データは装置1と装置2の間でストライピングされ、また、装置3と装置4の間でもストライピングされる。他の例において、2つ以上の装置のバンクはデータスクランブラを共有してもよいし、この方法のようにデータをストライピングしてもよい。図9Bは、変換されたデータA2’およびデータA7*の中に生じるデータパターン誘導エラーを示す。オリジナルデータA2は、A2*を読み出しそれを変換することにより(A2*を作成した変換を逆にして)回復してもよい。格納時にA2*がA2’とは異なったデータパターンを持つので、両方のパターンがエラーを引き起こすことはあまりない。同様に、たとえA7*が回復可能でなくとも、オリジナルデータA7はA7’から再生成することができる。この例の中で使用されるストライピングは、プログラミング時に、性能を改善する、より大きな程度の並列化を可能としてもよい。異なるデータスクランブラユニットは、各装置(つまり装置1、2、3および4用の個別のデータスクランブラ)のために提供されてもよいが、そのような装置が一般にデータの任意の特別の部分の1つ以上のコピーを含んでいないので、ストライピングデータを格納する一群の装置のために1つのデータスクランブラを提供することで一般的には十分である。
【0022】
図10Aは、RAID10構成を有する別のメモリシステムを示す。メモリシステムに受け取られたデータは、それが装置1に格納される前にデータスクランブラDS’によって第1の変換をされる。さらに、受信データは、装置2に格納される前に、データスクランブラDS*によって第2の変換をされる。さらに、受信データは、装置3および装置4に格納される前にデータスクランブラDS”によって第3の変換をされる。変換データは、装置3および装置4にわたってストライピングされる。このように、この例において、データ読み出し時に、エラーを引き起こす変換後のデータであっても、データを回復することができる2つの異なったロケーション(場所)がある。例えば、図10Bは、データパターン誘導エラーのために訂正できないデータA2’とデータA3”を示す。しかし、データのこれらのユニットの各々について、オリジナルのデータを回復することができる2つの他のバージョン(変形)(A2*、A2”、A3’およびA3*)がある。
【0023】
図10Cは、図10Bの読み出し時にECCによって訂正できないデータA2’およびA3”の部分がどのように別の装置から生成されたデータによって置き換えられるかを示す。例えば、装置1中のA2’がECCによって訂正できないと分かったとき、オリジナルデータA2は装置2に格納されたデータA2*から回復される。オリジナルデータA2はさらに、未だ、別に提供される変換データA2**から回復されてもよい。この変換を第1の変換とは異なったものにするため、データスクランブラDS’によって行われた変換を変更することにより行われてもよい。この置換の後、オリジナルデータA2を回復することができる3つの装置がある。同様に、装置4の中でデータA3”はECCによって訂正できないが、オリジナルであるデータA3は装置2の中でデータA3*から回復される。その後、オリジナルのデータA3はデータA3**を提供するために変換され、訂正できないデータA3”を置換する。A3からA3**へのデータ変換はデータスクランブラDS”によって行われ、それは先に格納されたデータの変換とは異なった変換を行うために変更される。この例において、データA2**およびA3**は同様の変換の結果である。しかし、他の場合では、置換を行う場合、異なる変換は異なる装置の中で使用されてもよい。
【0024】
いくつかのメモリシステムでは、データ変換はキーに従って行われる。例えば、変換されたデータは、オリジナルデータとキーに対するXOR操作の出力結果であってもよい。オリジナルデータを回復するために、逆の操作が実行される。キーは、周期的に(例えば、各セクタ、各ページ、各ブロックあるいは他のあるパターン毎に)変更されてもよい。一般に、キー使用法を反復のパターンとするために限られた数のキーが使用される。しかし、データストライピングが使用されるそのようなシステムの場合、キーパターンの繰り返しが期待されるより速く繰り返されるため、キーの総数の一部だけを、任意の1つの装置の中で使用してもよい。図11Aは、ページからページへとキーが変わっていく4つの装置(装置1〜装置4)があるメモリシステム内のデータにスクランブルをかけるための32個のキー(キー0〜キー31)が使用されている装置1を示す。32個のキーで、キー使用のパターンは32ページ毎に繰り返される。しかし、図11Bに示されるようなストライピングを使用した、この方式がメモリシステムに適用される場合、キーはより速く繰り返される。この場合にはちょうど8ページ毎である。パターンが非常に速く繰り返されることは一般的に不適当である。なぜならば、キーがより速く繰り返される場合、相互干渉しているメモリセルのリスクが増加するからである。
【0025】
図12Aは、データが装置1〜4にわたってストライプされる前に単一のデータスクランブラDSが限定された数のキーを使用してデータにスクランブルをかける別の例を示す。見て分かるように、各装置の中で使用されるキーは、キーの特別なサブセットに制限されている。また、その結果、キーは装置内でより速く繰り返される。
図12Bは、すべてのキーが各装置の中で使用されるようにキーのフルセットを使用して、異なるデータスクランブラが各データスクランブラと共に各装置に使用される場合の別の構成を示す。これは、同じキーの再使用の間隔を広げることによって、データ破損を引き起こすメモリセル状態の配置の可能性を幾分か低下させる。従って、冗長性が提供されない場合であっても、各装置に異なるスクランブリングを使用することは優位性があるとしてもよい。図12Bは、各データスクランブラによりキーが使用される同じパターンを示す。他の例において、異なるデータスクランブラが異なる順番でキーを使用してもよい。例えば、データスクランブラはそれぞれ、異なるキーで始めてもよい(例えば、データスクランブラDS1はキー0で始めてもよく、データスクランブラDS2はキー8で始めてもよく、データスクランブラDS3はキー16で始めてもよく、DS4はキー24で始めてもよい)。スクランブラはそれぞれ、後続キーを派生させるための最初のキーもしくはシードを持っていてもよい。異なる装置中のデータに異なる変換を保証するための1つの方法は異なるシードを使用してそれぞれのデータスクランブラを初期化することである。他の例において、同じデータにスクランブルをかける場合、異なるキーが各データスクランブラによって使用されるように、データスクランブラを制御してもよい。
【0026】
図13は、専用装置の中でパリティデータを保持する例を示す(RAID4)。この場合、パリティデータはもっぱら装置4に格納される。装置4中のパリティデータは装置1〜3に格納されたデータから生成したものである。パリティデータはデータがスクランブルをかけられる前に、あるいは後に生成してもよい。パリティ情報は、パリティデータを含む他の装置中のデータから1つの装置中のデータを再生成させることにより、障害に対する冗長レベルの保護を加える。一般に、パリティデータの使用は冗長性を増加させるだけでなく、データの書き込み時および読み出し時に常に、パリティ操作を行う時間のために性能低下を招く。各装置は装置内でデータスクランブリングキーが頻繁に繰り返し使用されないように専用データスクランブラを持っている。
【0027】
図14は、パリティデータがすべての装置にわたって分散される例を示す(RAID5)。この例において、各ストライプは、ストライプ中の他のデータから生成したパリティデータを含んでいる。例えば、Parity0はA0、A1およびB0から生成する。Parity1はB1、B2およびB3から生成する。この例は、さらに各装置の専用データスクランブラを示している。
【0028】
ある例では、個々の装置に専用データスクランブラユニットが付けられたものを示す。これは、専用回路(例えば、メモリダイ上の周辺回路)を持たせることによりハードウェアによって達成してもよい。他の例において、同じハードウェアが異なる回路のために使用されるように、データスクランブリングはコントローラの中でファームウェアによって実現されてもよい。ただし、ファームウェアは、異なる変換がデスティネーション装置に従って行われることを保証する。他のハードウェアでは、さらに一度に1つ以上の装置に異なるスクランブリングを供給してもよい。このように、異なるスクランブリング方式は必ず各装置の異なるハードウェアを必要とせずに実現されてもよい。
【0029】
前述した様々な方式を、高い信頼性を提供する他の方式と結合させたり、あるいは置き換えたりしてもよい。例えば、このような様々な方式は一般的に、データ部分における少数のエラーによる障害からの保護を提供するECC方式と結合される。一般的に、前述した方式は、メモリシステム(例えば、リムーバブルメモリカードやUSBフラッシュドライブ)内で実行され、ホストからは見えないものであってもよい。ある場合には、保護の程度または特定の保護方式がホストを介してユーザによって、あるいは別の方法によって、選択されてもよい。ある場合には、ホストシステムが、メモリシステム中の任意の保護方式に加えて、それ自身の保護方式を持っていてもよい。
【0030】
本願明細書において参考により引用されたすべての特許、特許出願、論文、書籍、仕様、他の刊行物、文書および事物は、その全体が本願明細書において参照によりあらゆる目的のために援用されている。援用されている刊行物、文書および事物のいずれかと本願明細書の文との間で用語の定義あるいは使用法に関して不一致あるいは矛盾がある場合には、本願明細書における用語の定義あるいは使用法が優越するものとする。
本発明を種々の例示的な実施形態に関連して説明してきたが、本発明が添付の特許請求の範囲の全範囲内において保護を受ける権利があることが理解できよう。
【技術分野】
【0001】
本発明は、不揮発性メモリと不揮発性メモリを形成する方法に関する。本発明は、特に、フローティングゲートメモリセルが個々に1ビット以上のデータを保持する不揮発性メモリアレイに関する。
【背景技術】
【0002】
関連出願への相互参照
本願は、2007年9月25日に出願された米国特許出願第11/861,146号(特許文献1)からの優先権と利益を主張し、その全体があらゆる目的のために本願明細書において参照により援用されている。
【0003】
不揮発性メモリシステムは様々なアプリケーションで使用されている。いくつかの不揮発性メモリシステムは、パソコンのようなより大きなシステムに組み込まれて用いられる。他の不揮発性メモリシステムは、ホストシステムにリムーバブルに接続され、異なるホストシステム間で交換することも可能である。そのようなリムーバブルメモリシステムの例として、メモリカードおよびUSBフラッシュドライブなどが挙げられる。不揮発性のメモリカードを含む電子回路カードは、多くのよく知られた標準に従って商業上製品化されている。メモリカードは、パソコン、携帯電話、携帯情報端末(PDA)、デジタルスチルカメラ、デジタルムービーカメラ、ポータブルオーディオプレイヤおよび他のホスト電子デバイスで大容量データの記憶装置として使用されている。そのようなカードは、通常、メモリセルアレイおよびカードが接続されるホストとの間のインターフェイス動作を制御し支援するコントローラと共に再プログラム可能な不揮発性の半導体メモリセルアレイを含んでいる。同じタイプのカードのいくつかのものは、そのタイプのカードを挿入可能なように設計されたホストカードスロットの間で交換が可能である。しかし、多くの電子カード標準が開発されたため、様々な程度で互いに互換性のない異なるタイプのカードを作成することとなってしまった。ある1つの標準に従って作られたカードは別の標準のカードで動作するように設計されたホストでは通常使用可能ではない。メモリカード標準は、PCカード、コンパクトフラッシュカード(CFcard(登録商標))、スマートメディアカード、マルチメディアカード(MMC(登録商標))、セキュアデジタル(SD)カード、ミニSDカード、加入者IDモジュール(SIM)、メモリスティック(登録商標)、メモリスティックデュオカードおよびマイクロSD/トランスフラッシュ(登録商標)メモリモジュール標準を含んでいる。「Cruzer」という商標でサンディスク コーポレイションから市販のいくつかのUSBフラッシュドライブ製品が出されており入手可能である。これらUSBフラッシュドライブは特徴的に前述したメモリカードより大容量で異なった製法を用いている。ラップトップコンピュータなどで、伝統的にハードディスクドライブ(HDD)が使用されていたアプリケーションでは、ソリッドステートドライブ(SSD)は不揮発性メモリシステムを使用している。
【0004】
異なるタイプのメモリアレイアーキテクチャが不揮発性メモリシステムの中で使用されている。電荷を格納するためにフローティングゲートを使用するフラッシュメモリアレイはメモリアレイの1つの共通タイプである。アーキテクチャの1つのタイプであるNANDアレイでは、16もしくは32のような2つ以上のメモリセルの一連のストリングは、個々のビット線とセルの行を形成する基準電位との間の1つ以上の選択用トランジスタと共に接続される。ワード線は多くのこれらの行内のセルにわたって延びている。個々のメモリセルは、シングルレベルセル(SLC)設計として知られているものの中にデータの1ビットを保持することが可能である。いくつかの例において、メモリセルは、マルチレベルセル(MLC)設計として知られているものの中に2ビット以上のデータを保持することが可能である。
信頼性は一般的にメモリ製品にとって重要な特徴であり、ある産業用途では特に重要である。従って、高い信頼性を備えた不揮発性メモリシステムの必要性がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願第11/861,146号
【発明の概要】
【0006】
独立形ディスク冗長化アレイ(RAID)技術およびデータスクランブリングの組み合わせは、不揮発性メモリアレイに高い信頼性を提供することができる。特に、異なる装置の中で異なるデータスクランブリングが使用される場合には冗長性を提供する。たとえオリジナル(スクランブリングされていない)データが各装置に対して同じであっても、装置はそれぞれ異なるデータパターンを含んでいる。従って、装置中の特定のデータパターンによって引き起こされる任意のエラーは、異なったスクランブリングを使用した複数の装置では繰り返されない。そのようなスクランブリングを使用するRAIDシステムは装置障害と同様に、データパターンによって引き起こされたエラーからの保護を組み込んでいる。
【0007】
本発明の実施例による不揮発性メモリアレイに安全にデータを格納する方法は、第1の変換されたデータを得るために第1の変換によりデータ部分を変換するステップと、メモリアレイの第1の部分に第1の変換されたデータを格納するステップと、第2の変換されたデータを得るために第2の変換によりデータ部分を変換するステップと、データ部分の冗長記憶を提供するために、第1の変換されたデータがメモリアレイの第1の部分に格納されている一方、メモリアレイの第2の部分に第2の変換されたデータを格納するステップと、を含む。
【0008】
本発明の実施例による不揮発性メモリシステムは、メモリアレイの第1の部分と、メモリアレイの第1の部分に格納する前に第1の変換によりデータにスクランブルをかけるために、メモリアレイの第1の部分に接続された第1のデータスクランブラユニットと、メモリアレイの第2の部分と、メモリアレイの第2の部分に格納する前に第2の変換によりデータにスクランブルをかけるために、メモリアレイの第2の部分に接続された第2のデータスクランブラユニットであって、この第2のデータスクランブラユニットは第1のデータスクランブラユニットに並列に接続される第2のデータスクランブラユニットと、を備える。
【図面の簡単な説明】
【0009】
【図1】データすべてが第1の装置と第2の装置に格納された、ミラーリングを使用したメモリシステム構成図である。
【図2】データA2が格納されたとき、そのパターンのために、読み出し時にECCによって訂正することができない図1のメモリシステム構成図である。データA2の両方のコピーは装置1および装置2の中で訂正することができない。
【図3】4つの装置にわたってデータを分散させるためにストライピングを使用して格納されているデータ構成図である。
【図4】より大きなストライプを備えた別のストライピング構成図である。
【図5A】データのミラーリングおよびストライピングを使用した、メモリシステム構成図である。
【図5B】読み出し時にデータパターン誘導エラーのためにECCによって訂正できない、データA2およびA7の場合の図5Aのメモリシステム構成図である。
【図6A】ミラーリングとストライピングを使用した、別のメモリシステム構成図である。
【図6B】読み出し時にデータパターン誘導エラーのためにECCによって訂正できないデータA2の場合の図6Aのメモリシステム構成図である。
【図7A】メモリシステムに格納される前にすべてのデータを変換するためのデータスクランブラユニットを備えている、ミラーリングおよびストライピングを使用したメモリシステム構成図である。
【図7B】読み出し時にデータパターン誘導エラーのためにECCによって訂正できない変換されたデータA2’とA3’の場合の図7Aのメモリシステム構成図である。
【図8A】各装置中のデータが異なる変換に従うように装置1用の第1のデータスクランブラユニットおよび装置2用の第2のデータスクランブラユニットを備えている別のメモリシステム構成図である。
【図8B】変換データA1*がまだ訂正可能であるが、読み出し時にデータパターン誘導エラーのためにECCによって訂正できない変換データA1’のメモリシステム構成図である。
【図9A】データがデータスクランブラを共有する装置間にわたってストライピングされる場合の別のメモリシステム構成図である。
【図9B】変換データA2*およびA7’がECCによって訂正可能なままであるが、読み出し時にデータパターン誘導エラーのためにECCによって訂正できない変換データA2’およびA7*の場合の図9Aのメモリシステム構成図である。
【図10A】いくつかの装置が専用のデータスクランブラを備えている場合と、別のいくつかの装置がデータスクランブラを共有している、別のメモリシステム構成図である。
【図10B】データA2*を使用して訂正できない変換データA2’の置換およびデータA3*を使用した訂正できない変換データA3”の置換の動作説明図である。
【図10C】A2*を使用して訂正できない変換データA2’の置換およびA3*を使用して訂正できない変換データA3”の置換の動作説明図である。
【図11A】キーが繰り返し使用される前の連続した32ページを変換するために連続して使用される1セットの32個のキーテーブル図である。
【図11B】8ページ後に各装置内で繰り返し使用されるキーと、4つの装置にわたってストライピングデータを変換するために使用される32個のキーテーブル図である。
【図12A】データの各ページ毎に異なったキーのセットを使用してデータを変換する単一のデータスクランブラユニットを使用して格納されたデータ構成図である。
【図12B】各データスクランブラでキーが装置内で頻繁に繰り返し使用されるのを防ぐためにキーを連続して使用する、各装置毎に個別のデータスクランブラユニットを備えた別のデータ構成図である。
【図13】パリティデータを格納する専用装置を使用し、各装置毎に専用のデータスクランブラユニットを備えたメモリシステム構成図である。
【図14】専用のデータスクランブラユニットを備えている各装置と共に、パリティデータが4つの装置にわたって分散されるメモリシステム構成図である。
【発明を実施するための形態】
【0010】
様々な方法が不揮発性メモリシステムにおいて高い信頼性でデータ保存を達成するために使用されている。冗長化によって信頼性を改善するある方法は独立形ディスク冗長化アレイ(RAID)を使用する。ミラーリング、ストライピングおよびパリティデータを使用した異なるタイプのRAIDシステム、あるいはこれらの技術の組み合わせがある。RAIDという用語は一般にハードディスクドライブ(HDD)に関係しているが、RAID技術は、フラッシュメモリのような不揮発性メモリアレイを含む他のタイプのメモリと共に使用されてもよい。
【0011】
図1は、装置1および装置2の2つの装置を示す。これらはミラーリング構成(RAID1とも呼ばれる)で接続されている。ミラーリングとは装置1に格納されるのと同じデータ、A0、A1、A2、A3が、装置2にデータの各ユニットの冗長コピーがあるように装置2に格納されることを意味する。他の例では、2つ以上の装置が、同じ2つ以上のデータのコピーを提供するこの方法で接続されてもよい。一般に、2つ以上の装置の中で同じデータの個別のコピーを保持することは、任意の個々の装置の障害からの保護を提供する。従って、図1に示す装置1に障害が発生した場合、装置1に格納されたデータはすべて、装置2からのデータで回復することができる。
【0012】
個別の装置中のデータの冗長コピーは装置障害に対しての保護をしているが、それはデータロスのあらゆる形式に対して保護をするものではない。ある不揮発性メモリアレイでは、特別なパターンのデータ保存は、特別にデータ破損の機会を増加させるかもしれない。このことは、影響する下層チャネルだけでなく影響する隣接チャネル、つまり影響する隣接したセルのしきい値電圧により、セルのフローティングゲートを備えた隣接したセル間の相互干渉のために生じる。これは、1ビット以上で格納されたセルのしきい値電圧の微少変化により不正確に読み出されてしまうかもしれないMLCメモリシステムで特に問題となる。この問題はメモリアレイ中の寸法がより小さくなり、セル間の相互干渉がより強くなるとともに、厳しくより頻度が高くなる傾向がある。例えば、低いしきい値電圧に最初にプログラムされたMLCセル(そのフローティングゲートにほとんど電荷がないもしくはまったく電荷がない)は、隣接するセルが高いしきい値電圧にプログラムされたことにより(そのフローティングゲートに大きな電荷がある)、後でそのしきい値電圧を上げるかもしれない。これはプログラム妨害のひとつの形と考えられるかもしれない。どの特定のデータパターンがプログラム妨害を引き起こすか、そして引き起こされる妨害の程度(後で誤って読まれてしまうビット数)は、メモリアーキテクチャに依存する。従って、たとえメモリアレイがその設計限界内で動作していても、特別なメモリアレイに格納されたデータを誤って読み出す特別のパターンのデータがあるかもしれない。そのようなデータパターンを回避することが一般的に望ましい。
【0013】
多くのメモリシステムが、誤ったビットを含んでいるデータを検知し訂正することを可能にするためにいくつかの誤り訂正符号(ECC)形式を含んでいる。これを行うために、データはある冗長情報を格納する。データ読み出し時に冗長部はデータがエラーがないかチェックすることを可能にし、あるエラー制限数まで訂正することが可能である。しかし、多くのエラーを訂正するために、冗長部が高い程度(多くの余分なビット)で必要となりメモリスペースの効率的な使用とならない。典型的には、使用される冗長部の程度は、予測されるエラー率に基づき(例えば、多くの予測される不完全なセルに基づいている)、特別のデータパターンによって引き起こされるような高いエラー数を訂正するのには十分ではない。特にデータパターン誘導エラーが、同様の条件に晒される複数のセルのデータの同じ部分に一緒に発生するかもしれない。また、ECCは一般的に、データのそのような部分中の限られたビットの訂正に制限されている。従って、ECCはあるメモリシステム中のデータパターン誘導エラーに対応するには単独では十分ではないかもしれない。
【0014】
図2は、装置1および装置2が同じデータの同一のコピーを格納する例を示す。この場合、データA2の部分はA2が格納された後で読み出される場合、読み出されたデータは、セル間の相互干渉のために多くのエラーを持ったデータのようなデータパターンを持っている。これは、A2内のセル間の相互干渉、およびA2の外側のセルとの相互干渉を含んでいるかもしれない。特に、列の中のセルは同じブロックの隣接した列の中のセルによって影響される傾向がある。この場合、データA2におけるエラーの数は、使用されているECC方式により訂正できる能力を越えている。また、データは、ECCによって訂正できないと考えられる。データ部分A2は、512バイト(+オーバーヘッド)のセクタ、ページ(書き込み単位)あるいはブロック(消去の最小単位)のようなデータの任意のユニットであってもよい。データA2は、装置1および装置2の両方に同一に格納される。従って、同じパターンが各装置に生じる。従って、両方の装置中のデータA2のコピーは影響を受け、また、どちらのコピーも回復可能ではない。従って、この場合、ミラーリング単独ではデータがすべて回復されることを可能にするために十分なレベルの信頼性を提供できない。
【0015】
図3は、異なる装置間のデータストライピング(RAID0)の第1の例を示す。データは、図に示されるように、3つのファイル、ファイルA、ファイルBおよびファイルCとして受け取られる。その後、これらのファイルは図に示されるように装置1〜4にわたって分散される。特に、ファイルAは、装置1中のA0および装置2中のA1として格納される。ファイルBはB0〜B6として格納され、装置1〜4にわたって分散される。また、ファイルCはC0〜C9として格納され、装置1〜4にわたって分散される。この例におけるデータのストライプは各装置中のデータの1ユニットからなる。例えば、A0、A1、B0およびB1は一緒にストライプを構成する。この例では、各ストライプは2Kバイトのデータを含んでいる。図4は、同じデータが同じ装置にわたってより大きなストライプサイズを使用して、各ストライプが4Kバイトのデータを含んでいる別の例を示す。ストライピングは冗長性を提供しないが、データが分割され、分割されていなければエラーを引き起こすかもしれないデータパターンが回避されるかもしれないので、これにより信頼性が改善される場合がある。複数の装置にわたって高度に並列でプログラムすることを容易にするので、ストライピングデータはパフォーマンスを改善するかもしれない。
【0016】
図5Aは、ミラーリングおよびストライピングの組み合わせを使用したメモリシステムの例を示す。データは装置1と装置2の間でストライピングされ、また、装置1および2中のデータは装置3および4の中でミラーリングされる。このハイブリッド構成は、RAID0およびRAID1の特徴を適用するRAID0+1とも呼ばれる。図5B中で示されるように、あるパターンが格納されたデータに生じる場合、この構成はまだ問題を抱えている。特に、装置1中のデータA2の格納域がデータパターンにより訂正できないエラーの数を引き起こす場合、装置3に格納されたデータA2のコピーも訂正できないエラーの数を含んでいる。同様に、装置2および装置4の中でデータA7の2つのコピーは両方とも訂正できない。従って、A2もA7もどちらも回復可能なコピーではない。
【0017】
図6Aは、RAID0およびRAID1の別の組み合わせを示す。これはRAID10とも呼ばれる。装置1中のこの構成データは装置2の中にミラーリングされる。装置1および2に格納されるのと同じデータは装置3および装置4にわたってストライピングされる。しかし、図6Bに示されるように、データA2の1つのコピーはそのデータパターンのために訂正できず、他の装置中のデータA2のコピーも訂正できない。
【0018】
読み出し時に訂正できなくなるかもしれないデータパターンへの1つのアプローチは装置に格納する前にデータにスクランブルをかけることである。変換に対するスクランブルの対象となるデータが変換後に変換前のデータに対して異なるパターンを持つようにする。特にそのようなスクランブリングは、データ中の繰り返されたパターンに対してある乱数化を導入してもよい。変換の単純な例はビットをすべて逆にすることであり、つまり、すべての0をすべて1に変更し、すべての0をすべて1に変更することである。他の変換として、格納されるデータおよび一連のビット上で、排他的論理和(XOR)操作を行うことが含まれる。ECCと異なり、スクランブリングは冗長化ビットを加えない。従って、スクランブルをかけられたデータは、オリジナルのデータと同じビット数しか含んでいない。いくつかの場合では、変換により格納されるビット数が減少し、データを圧縮してもよい。いくつかの変換では、データセキュリティアルゴリズムを使用し、データパターンを分割してもよい。
【0019】
図7Aは、装置1〜4に格納されるデータすべてが装置に格納される前にスクランブルをかけられるように、データスクランブラユニットもしくはデータスクランブラ(DS)が装置1〜4に接続される例を示す。スクランブリングは、A0がA0’などとなるように、「’」を用いて図7Aに表示されている。図7Aは、図6AでのRAID10構成を示す。装置1と装置2の間でデータがミラーリングされ、かつ装置3と装置4にわたって同じデータがストライピングされている。スクランブリングデータが障害を起こさないパターンを持った変換データをもたらす一方で、ある場合には変換されたデータが読み出し時にエラーを引き起こすパターンを持つかもしない。ある場合にはエラーを引き起こさないスクランブリングされていないデータがエラーを引き起こすパターンに変換される。図7Bは、読み出し時にエラーを引き起こすパターンを持った変換データA2’とA3’のスクランブル結果を示す。これらのパターンがエラーを引き起こし、パターンがデータの各コピーで複製されるためにデータの回復可能なコピーは利用可能ではない。従って、ミラーリングおよびストライピングに加えて、単一のデータスクランブリングユニットを使用してスクランブリングすることは、この場合には信頼性を保証するには十分ではない。
【0020】
図8Aは、本発明の実施例によるデータ保存システムを示す。メモリシステムは、第1の変換により第1のデータスクランブラDS’によって変換されるデータユニットのシーケンス、A0、A1、A2、A3・・・を受け取る。DS’によって変換されたデータ(A0’、A1’、A2’、A3’)は装置1に格納される。さらに、データA0、A1、A2、A3・・・は第2のデータスクランブラDS*によって(A0*、A1*、A2*、A3*へと・・・)変換されかつ格納される。このように、データA0は装置1の格納域ではA0’に変換され、装置2の格納域ではA0*に変換される。データA0’はデータA0*とは異なるパターンを持っている。このように、データA0’を格納する装置1のセルのしきい値電圧はデータA0*を格納する装置2中の対応するセルと同じではないかもしれない。同様に、データの他の部分についても、同じデータパターンが生成されないように、異なる変換をされ異なるコピーが格納される。前に述べたように、時にはスクランブルをかけられたデータは訂正できなくなる格納されたデータのパターンを生成するかもしれない。図8Bは、格納時にそのデータパターンにより訂正することができないように変換されてしまったデータA1’を示す。しかし、変換データA1*は格納時に異なるデータパターンを持っているので、A1*は訂正できないわけではない。このように、たとえデータA1’が訂正可能ではなくとも、オリジナル(変換されていない)データA1のコピーはデータA1*から得ることができる。同様に、データの他のユニットが変換、格納時にそのデータパターンにより訂正できなかったとしても、データが別の装置中で格納される前に別の変換をされるので、未だオリジナルデータを回復させることができる。このように、図8Bの構成は、装置障害(つまり装置1あるいは装置2のいずれかが故障する場合)およびデータパターン誘導エラーからの保護を提供する。この方法は、データが2つの独立した装置に格納されるという点でミラーリングと同様ではあるが、2つの装置はスクランブリングの結果として異なるデータパターンを保持する。従って、装置2中のデータは、装置1中のデータをミラーリングせず、これは本当のミラーリングではない。
【0021】
図9Aは、2つの異なるスクランブラユニットDS’、DS*を備えてデータの2つの異なる変換を行うRAID0+1を使用した別の例を示す。データスクランブラDS’は装置1および装置2を取り扱い、データスクランブラDS*は装置3および装置4を取り扱う。このように、装置1および装置2に格納されるデータはすべて第1の変換で処理され、同じデータが装置3および装置4中に格納される前に第2の変換で処理される。データは装置1と装置2の間でストライピングされ、また、装置3と装置4の間でもストライピングされる。他の例において、2つ以上の装置のバンクはデータスクランブラを共有してもよいし、この方法のようにデータをストライピングしてもよい。図9Bは、変換されたデータA2’およびデータA7*の中に生じるデータパターン誘導エラーを示す。オリジナルデータA2は、A2*を読み出しそれを変換することにより(A2*を作成した変換を逆にして)回復してもよい。格納時にA2*がA2’とは異なったデータパターンを持つので、両方のパターンがエラーを引き起こすことはあまりない。同様に、たとえA7*が回復可能でなくとも、オリジナルデータA7はA7’から再生成することができる。この例の中で使用されるストライピングは、プログラミング時に、性能を改善する、より大きな程度の並列化を可能としてもよい。異なるデータスクランブラユニットは、各装置(つまり装置1、2、3および4用の個別のデータスクランブラ)のために提供されてもよいが、そのような装置が一般にデータの任意の特別の部分の1つ以上のコピーを含んでいないので、ストライピングデータを格納する一群の装置のために1つのデータスクランブラを提供することで一般的には十分である。
【0022】
図10Aは、RAID10構成を有する別のメモリシステムを示す。メモリシステムに受け取られたデータは、それが装置1に格納される前にデータスクランブラDS’によって第1の変換をされる。さらに、受信データは、装置2に格納される前に、データスクランブラDS*によって第2の変換をされる。さらに、受信データは、装置3および装置4に格納される前にデータスクランブラDS”によって第3の変換をされる。変換データは、装置3および装置4にわたってストライピングされる。このように、この例において、データ読み出し時に、エラーを引き起こす変換後のデータであっても、データを回復することができる2つの異なったロケーション(場所)がある。例えば、図10Bは、データパターン誘導エラーのために訂正できないデータA2’とデータA3”を示す。しかし、データのこれらのユニットの各々について、オリジナルのデータを回復することができる2つの他のバージョン(変形)(A2*、A2”、A3’およびA3*)がある。
【0023】
図10Cは、図10Bの読み出し時にECCによって訂正できないデータA2’およびA3”の部分がどのように別の装置から生成されたデータによって置き換えられるかを示す。例えば、装置1中のA2’がECCによって訂正できないと分かったとき、オリジナルデータA2は装置2に格納されたデータA2*から回復される。オリジナルデータA2はさらに、未だ、別に提供される変換データA2**から回復されてもよい。この変換を第1の変換とは異なったものにするため、データスクランブラDS’によって行われた変換を変更することにより行われてもよい。この置換の後、オリジナルデータA2を回復することができる3つの装置がある。同様に、装置4の中でデータA3”はECCによって訂正できないが、オリジナルであるデータA3は装置2の中でデータA3*から回復される。その後、オリジナルのデータA3はデータA3**を提供するために変換され、訂正できないデータA3”を置換する。A3からA3**へのデータ変換はデータスクランブラDS”によって行われ、それは先に格納されたデータの変換とは異なった変換を行うために変更される。この例において、データA2**およびA3**は同様の変換の結果である。しかし、他の場合では、置換を行う場合、異なる変換は異なる装置の中で使用されてもよい。
【0024】
いくつかのメモリシステムでは、データ変換はキーに従って行われる。例えば、変換されたデータは、オリジナルデータとキーに対するXOR操作の出力結果であってもよい。オリジナルデータを回復するために、逆の操作が実行される。キーは、周期的に(例えば、各セクタ、各ページ、各ブロックあるいは他のあるパターン毎に)変更されてもよい。一般に、キー使用法を反復のパターンとするために限られた数のキーが使用される。しかし、データストライピングが使用されるそのようなシステムの場合、キーパターンの繰り返しが期待されるより速く繰り返されるため、キーの総数の一部だけを、任意の1つの装置の中で使用してもよい。図11Aは、ページからページへとキーが変わっていく4つの装置(装置1〜装置4)があるメモリシステム内のデータにスクランブルをかけるための32個のキー(キー0〜キー31)が使用されている装置1を示す。32個のキーで、キー使用のパターンは32ページ毎に繰り返される。しかし、図11Bに示されるようなストライピングを使用した、この方式がメモリシステムに適用される場合、キーはより速く繰り返される。この場合にはちょうど8ページ毎である。パターンが非常に速く繰り返されることは一般的に不適当である。なぜならば、キーがより速く繰り返される場合、相互干渉しているメモリセルのリスクが増加するからである。
【0025】
図12Aは、データが装置1〜4にわたってストライプされる前に単一のデータスクランブラDSが限定された数のキーを使用してデータにスクランブルをかける別の例を示す。見て分かるように、各装置の中で使用されるキーは、キーの特別なサブセットに制限されている。また、その結果、キーは装置内でより速く繰り返される。
図12Bは、すべてのキーが各装置の中で使用されるようにキーのフルセットを使用して、異なるデータスクランブラが各データスクランブラと共に各装置に使用される場合の別の構成を示す。これは、同じキーの再使用の間隔を広げることによって、データ破損を引き起こすメモリセル状態の配置の可能性を幾分か低下させる。従って、冗長性が提供されない場合であっても、各装置に異なるスクランブリングを使用することは優位性があるとしてもよい。図12Bは、各データスクランブラによりキーが使用される同じパターンを示す。他の例において、異なるデータスクランブラが異なる順番でキーを使用してもよい。例えば、データスクランブラはそれぞれ、異なるキーで始めてもよい(例えば、データスクランブラDS1はキー0で始めてもよく、データスクランブラDS2はキー8で始めてもよく、データスクランブラDS3はキー16で始めてもよく、DS4はキー24で始めてもよい)。スクランブラはそれぞれ、後続キーを派生させるための最初のキーもしくはシードを持っていてもよい。異なる装置中のデータに異なる変換を保証するための1つの方法は異なるシードを使用してそれぞれのデータスクランブラを初期化することである。他の例において、同じデータにスクランブルをかける場合、異なるキーが各データスクランブラによって使用されるように、データスクランブラを制御してもよい。
【0026】
図13は、専用装置の中でパリティデータを保持する例を示す(RAID4)。この場合、パリティデータはもっぱら装置4に格納される。装置4中のパリティデータは装置1〜3に格納されたデータから生成したものである。パリティデータはデータがスクランブルをかけられる前に、あるいは後に生成してもよい。パリティ情報は、パリティデータを含む他の装置中のデータから1つの装置中のデータを再生成させることにより、障害に対する冗長レベルの保護を加える。一般に、パリティデータの使用は冗長性を増加させるだけでなく、データの書き込み時および読み出し時に常に、パリティ操作を行う時間のために性能低下を招く。各装置は装置内でデータスクランブリングキーが頻繁に繰り返し使用されないように専用データスクランブラを持っている。
【0027】
図14は、パリティデータがすべての装置にわたって分散される例を示す(RAID5)。この例において、各ストライプは、ストライプ中の他のデータから生成したパリティデータを含んでいる。例えば、Parity0はA0、A1およびB0から生成する。Parity1はB1、B2およびB3から生成する。この例は、さらに各装置の専用データスクランブラを示している。
【0028】
ある例では、個々の装置に専用データスクランブラユニットが付けられたものを示す。これは、専用回路(例えば、メモリダイ上の周辺回路)を持たせることによりハードウェアによって達成してもよい。他の例において、同じハードウェアが異なる回路のために使用されるように、データスクランブリングはコントローラの中でファームウェアによって実現されてもよい。ただし、ファームウェアは、異なる変換がデスティネーション装置に従って行われることを保証する。他のハードウェアでは、さらに一度に1つ以上の装置に異なるスクランブリングを供給してもよい。このように、異なるスクランブリング方式は必ず各装置の異なるハードウェアを必要とせずに実現されてもよい。
【0029】
前述した様々な方式を、高い信頼性を提供する他の方式と結合させたり、あるいは置き換えたりしてもよい。例えば、このような様々な方式は一般的に、データ部分における少数のエラーによる障害からの保護を提供するECC方式と結合される。一般的に、前述した方式は、メモリシステム(例えば、リムーバブルメモリカードやUSBフラッシュドライブ)内で実行され、ホストからは見えないものであってもよい。ある場合には、保護の程度または特定の保護方式がホストを介してユーザによって、あるいは別の方法によって、選択されてもよい。ある場合には、ホストシステムが、メモリシステム中の任意の保護方式に加えて、それ自身の保護方式を持っていてもよい。
【0030】
本願明細書において参考により引用されたすべての特許、特許出願、論文、書籍、仕様、他の刊行物、文書および事物は、その全体が本願明細書において参照によりあらゆる目的のために援用されている。援用されている刊行物、文書および事物のいずれかと本願明細書の文との間で用語の定義あるいは使用法に関して不一致あるいは矛盾がある場合には、本願明細書における用語の定義あるいは使用法が優越するものとする。
本発明を種々の例示的な実施形態に関連して説明してきたが、本発明が添付の特許請求の範囲の全範囲内において保護を受ける権利があることが理解できよう。
【特許請求の範囲】
【請求項1】
不揮発性メモリアレイに安全にデータを格納する方法であって、
第1の変換されたデータを得るために第1の変換によりデータ部分を変換するステップと、
前記メモリアレイの第1の部分に前記第1の変換されたデータを格納するステップと、
第2の変換されたデータを得るために第2の変換により前記データ部分を変換するステップと、
前記データ部分の冗長記憶を提供するために前記第1の変換されたデータが前記メモリアレイの前記第1の部分に格納されている一方、前記メモリアレイの第2の部分に前記第2の変換されたデータを格納するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記第1の変換が第1のシードに基づいてデータにスクランブルをかけ、かつ前記第2の変換が第2のシードに基づいてデータにスクランブルをかける方法。
【請求項3】
請求項1記載の方法において、
前記第1の変換により前記データ部分を変換するステップは、前記第2の変換により前記データ部分を変換するステップと並行して行われる方法。
【請求項4】
請求項1記載の方法において、
引き続いて、前記メモリアレイの前記第1の部分から前記第1の変換されたデータの読み出しを試みて、前記第1の変換されたデータがECCによって回復できないと判断したときは、前記メモリアレイの前記第2の部分から前記第2の変換データを読み出すステップをさらに含む方法。
【請求項5】
請求項4記載の方法において、
前記第2の変換されたデータを使用して前記データ部分を回復させ、引き続いて第3の変換されたデータを得るために第3の変換により前記データ部分を変換し、前記メモリアレイの第3の部分に前記第3の変換されたデータを格納し、格納されている前記第1の変換されたデータを消去するステップをさらに含む方法。
【請求項6】
請求項1記載の方法において、
前記メモリアレイの前記第1の部分が第1のブロックであり、前記メモリアレイの前記第2の部分が第2のブロックである方法。
【請求項7】
請求項1記載の方法において、
前記メモリアレイの前記第1の部分が第1のプレーンであり、前記メモリアレイの前記第2の部分が第2のプレーンである方法。
【請求項8】
請求項1記載の方法において、
前記メモリアレイの前記第1の部分が第1のダイであり、前記メモリアレイの前記第2の部分が第2のダイである方法。
【請求項9】
不揮発性メモリシステムであって、
メモリアレイの第1の部分と、
前記メモリアレイの前記第1の部分に格納する前に第1の変換によりデータにスクランブルをかけるために前記メモリアレイの前記第1の部分に接続された第1のデータスクランブラユニットと、
前記メモリアレイの第2の部分と、
前記メモリアレイの前記第2の部分に格納する前に第2の変換によりデータにスクランブルをかけるために前記メモリアレイの前記第2の部分に接続された第2のデータスクランブラユニットであって、前記第2のデータスクランブラユニットは、前記第1のデータスクランブラユニットに並行して接続される前記第2のデータスクランブラユニットと、
を備える不揮発性メモリシステム。
【請求項10】
請求項9記載の不揮発性メモリシステムにおいて、
第1の数値を使用して排他的論理和(XOR)操作を実行するための第1のXOR回路を備えた前記第1のスクランブラユニットと、
第2の数値を使用してXOR操作を実行するための第2のXOR回路を備えた前記第2のスクランブラユニットと、
を備える不揮発性メモリシステム。
【請求項11】
請求項9記載の不揮発性メモリシステムにおいて、
前記第1のメモリアレイ部分が第1のブロックであり、前記第2のメモリアレイ部分が第2のブロックである不揮発性メモリシステム。
【請求項12】
請求項9記載の不揮発性メモリシステムにおいて、
前記第1のメモリアレイ部分が第1のプレーンであり、前記第2のメモリアレイ部分が第2のプレーンである不揮発性メモリシステム。
【請求項13】
請求項9記載の不揮発性メモリシステムにおいて、
前記第1のメモリアレイ部分が第1のダイであり、前記第2のメモリアレイ部分が第2のダイである不揮発性メモリシステム。
【請求項14】
請求項9記載の不揮発性メモリシステムにおいて、
前記メモリシステムは、リムーバブルメモリカード内のメモリシステムである不揮発性メモリシステム。
【請求項15】
請求項9記載の不揮発性メモリシステムにおいて、
前記第1のスクランブラユニットと前記第2のスクランブラユニットは、並行して同じ前記データにスクランブルをかける不揮発性メモリシステム。
【請求項1】
不揮発性メモリアレイに安全にデータを格納する方法であって、
第1の変換されたデータを得るために第1の変換によりデータ部分を変換するステップと、
前記メモリアレイの第1の部分に前記第1の変換されたデータを格納するステップと、
第2の変換されたデータを得るために第2の変換により前記データ部分を変換するステップと、
前記データ部分の冗長記憶を提供するために前記第1の変換されたデータが前記メモリアレイの前記第1の部分に格納されている一方、前記メモリアレイの第2の部分に前記第2の変換されたデータを格納するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記第1の変換が第1のシードに基づいてデータにスクランブルをかけ、かつ前記第2の変換が第2のシードに基づいてデータにスクランブルをかける方法。
【請求項3】
請求項1記載の方法において、
前記第1の変換により前記データ部分を変換するステップは、前記第2の変換により前記データ部分を変換するステップと並行して行われる方法。
【請求項4】
請求項1記載の方法において、
引き続いて、前記メモリアレイの前記第1の部分から前記第1の変換されたデータの読み出しを試みて、前記第1の変換されたデータがECCによって回復できないと判断したときは、前記メモリアレイの前記第2の部分から前記第2の変換データを読み出すステップをさらに含む方法。
【請求項5】
請求項4記載の方法において、
前記第2の変換されたデータを使用して前記データ部分を回復させ、引き続いて第3の変換されたデータを得るために第3の変換により前記データ部分を変換し、前記メモリアレイの第3の部分に前記第3の変換されたデータを格納し、格納されている前記第1の変換されたデータを消去するステップをさらに含む方法。
【請求項6】
請求項1記載の方法において、
前記メモリアレイの前記第1の部分が第1のブロックであり、前記メモリアレイの前記第2の部分が第2のブロックである方法。
【請求項7】
請求項1記載の方法において、
前記メモリアレイの前記第1の部分が第1のプレーンであり、前記メモリアレイの前記第2の部分が第2のプレーンである方法。
【請求項8】
請求項1記載の方法において、
前記メモリアレイの前記第1の部分が第1のダイであり、前記メモリアレイの前記第2の部分が第2のダイである方法。
【請求項9】
不揮発性メモリシステムであって、
メモリアレイの第1の部分と、
前記メモリアレイの前記第1の部分に格納する前に第1の変換によりデータにスクランブルをかけるために前記メモリアレイの前記第1の部分に接続された第1のデータスクランブラユニットと、
前記メモリアレイの第2の部分と、
前記メモリアレイの前記第2の部分に格納する前に第2の変換によりデータにスクランブルをかけるために前記メモリアレイの前記第2の部分に接続された第2のデータスクランブラユニットであって、前記第2のデータスクランブラユニットは、前記第1のデータスクランブラユニットに並行して接続される前記第2のデータスクランブラユニットと、
を備える不揮発性メモリシステム。
【請求項10】
請求項9記載の不揮発性メモリシステムにおいて、
第1の数値を使用して排他的論理和(XOR)操作を実行するための第1のXOR回路を備えた前記第1のスクランブラユニットと、
第2の数値を使用してXOR操作を実行するための第2のXOR回路を備えた前記第2のスクランブラユニットと、
を備える不揮発性メモリシステム。
【請求項11】
請求項9記載の不揮発性メモリシステムにおいて、
前記第1のメモリアレイ部分が第1のブロックであり、前記第2のメモリアレイ部分が第2のブロックである不揮発性メモリシステム。
【請求項12】
請求項9記載の不揮発性メモリシステムにおいて、
前記第1のメモリアレイ部分が第1のプレーンであり、前記第2のメモリアレイ部分が第2のプレーンである不揮発性メモリシステム。
【請求項13】
請求項9記載の不揮発性メモリシステムにおいて、
前記第1のメモリアレイ部分が第1のダイであり、前記第2のメモリアレイ部分が第2のダイである不揮発性メモリシステム。
【請求項14】
請求項9記載の不揮発性メモリシステムにおいて、
前記メモリシステムは、リムーバブルメモリカード内のメモリシステムである不揮発性メモリシステム。
【請求項15】
請求項9記載の不揮発性メモリシステムにおいて、
前記第1のスクランブラユニットと前記第2のスクランブラユニットは、並行して同じ前記データにスクランブルをかける不揮発性メモリシステム。
【図1】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6A】
【図6B】
【図7A】
【図7B】
【図8A】
【図8B】
【図9A】
【図9B】
【図10A】
【図10B】
【図10C】
【図11A】
【図11B】
【図12A】
【図12B】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6A】
【図6B】
【図7A】
【図7B】
【図8A】
【図8B】
【図9A】
【図9B】
【図10A】
【図10B】
【図10C】
【図11A】
【図11B】
【図12A】
【図12B】
【図13】
【図14】
【公表番号】特表2010−541049(P2010−541049A)
【公表日】平成22年12月24日(2010.12.24)
【国際特許分類】
【出願番号】特願2010−526051(P2010−526051)
【出願日】平成20年9月22日(2008.9.22)
【国際出願番号】PCT/US2008/077267
【国際公開番号】WO2009/042554
【国際公開日】平成21年4月2日(2009.4.2)
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
【公表日】平成22年12月24日(2010.12.24)
【国際特許分類】
【出願日】平成20年9月22日(2008.9.22)
【国際出願番号】PCT/US2008/077267
【国際公開番号】WO2009/042554
【国際公開日】平成21年4月2日(2009.4.2)
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
[ Back to top ]