ホストの使用特性に基づいたフラッシュメモリのアドレスマッピングの適応的モード切り換え
フラッシュEEPROMなどの不揮発性メモリ記憶システムでは、性能を向上させて摩耗を低減するために、ホストのプログラミングパターンおよびコントローラのデータ整理統合パターンに応じて、コントローラは、データセクタがメモリのブロックおよびメタブロックにマップされる方法を切り換える。データは、さまざまな並列処理度でメモリにプログラムされる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性フラッシュメモリの動作に関し、より具体的には、大容量メモリセルブロックの管理に関する。
【背景技術】
【0002】
今日、商業的に成功している不揮発性メモリ製品、特に小形形状のファクタカード形式のメモリ製品が数多く使用され、それらには、1つまたはそれ以上の集積回路チップ上に形成されたフラッシュEEPROM(電気的に消去可能でプログラム可能な読み出し専用メモリ)セルのアレイが用いられている。必ずしもそうであるとは限らないが、通常は別個の集積回路チップ上に位置するメモリコントローラが、カードの接続されているホストと連動し、カード内部のメモリアレイの動作を制御する。このようなコントローラは一般に、マイクロプロセッサと、ある種の不揮発性読み出し専用メモリ(ROM)と、揮発性ランダムアクセスメモリ(RAM)と、データのプログラミングおよび読み出し中にデータがコントローラを通過する際にデータから誤り訂正符号(ECC)を計算する回路のような1つまたはそれ以上の特殊回路とを含む。幾種類かの市販カードには、コンパクトフラッシュ(登録商標)(CF)カード、マルチメディアカード(MMC)、セキュアデジタル(SD)カード、スマートメディアカード、個人タグ(P−Tag)、およびメモリスティックカードがある。この種類のメモリシステムは、メモリカードの実装以外に、さまざまな種類のホストシステム内に代替的に組み込むことができる。
【0003】
NORおよびNANDの2種類の汎用メモリセルアレイ構造には、商業上の応用が見出されている。典型的なNORアレイでは、メモリセルは、列方向に延在する隣接するビットラインのソース拡散部とドレイン拡散部との間で接続され、コントロールゲートは、セルの行に沿って延在するワードラインに接続されている。メモリセルは、ソースとドレインとの間に位置するセルのチャネル領域の少なくとも一部分の上に配置された少なくとも1つの記憶素子を含む。従って、記憶素子上のプログラムされた電荷レベルによってセルの動作特性が制御され、次いでそれをアドレス指定されたメモリセルに適切な電圧を印加することによって読み出すことができる。このようなセルの例、メモリシステム内でのそれらの使用法、およびそれらを製造する方法は、米国特許第5,070,032号(特許文献1)、第5,095,344号(特許文献2)、第5,313,421号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)、第5,661,053号(特許文献6)、および第6,222,762号(特許文献7)に記載されている。
【0004】
NANDアレイは、1つまたはそれ以上の選択トランジスタと共に個々のビットラインと基準電位との間に接続された、例えば16または32などの2つより多いメモリセルの直列ストリングを用いてセルの列を形成する。ワードラインは、多数のこれらの列内のセルを横断して延びる。1つの列内の個々のセルでは、1つのストリングに流れる電流がアドレス指定されたセル内に蓄積された電荷レベルに依存するように、そのストリング内の残りのセルに強制的に通電することにより、プログラミング時に読み出しおよび検証が行われる。NAND構造のアレイの例およびメモリシステムの一部としてのそれらの動作に関する記載は、米国特許第5,570,315号(特許文献8)、第5,774,397号(特許文献9)、第6,046,935号(特許文献10)および第6,522,580号(特許文献11)に見出されている。
【0005】
前に参照した特許に論じられているように、ごく一般的には導電性のフローティングゲートである現在のフラッシュEEPROMアレイの電荷蓄積素子は一般に、導電性のドープされたポリシリコン材料から形成される。フラッシュEEPROMシステムに有益な別の種類のメモリセルは、導電性フローティングゲートの代わりに非導電性の誘電体を用いて、不揮発的な方法で電荷を蓄積する。酸化シリコン、窒化シリコン、および酸化シリコン(ONO)で形成された三層誘電体が、導電性コントロールゲートとメモリセルチャネル上方の半導体基板表面との間に挟まれている。セルには、セルチャネルから窒化物内へ電子を注入することによってプログラミングが行われ、窒化物内で電子は限定された領域内に閉じ込められて蓄積され、窒化物内に熱いホールを注入することによって消去が行われる。誘電体記憶素子を用いるいくつかの特定のセル構造およびアレイについては、2002年10月25日に出願された米国特許出願第10/280,352号(特許文献12)に記載されている。
【0006】
ほとんどすべての集積回路の用途と同じく、ある集積回路機能を実装するのに要するシリコン基板面積の縮小に対する強い要望が、フラッシュEEPROMメモリセルアレイについても存在する。所与のサイズのメモリカードおよび他の種類のパッケージの記憶容量を増大させるために、或いは容量を増大させると同時にサイズを縮小するために、シリコン基板の所与の領域に記憶することができるデジタルデータの量を増大させることが絶えず望まれている。データの記憶密度を高める1つの方法は、1メモリセルおよび/または1記憶素子当たりに1ビットより多いデータを記憶することである。これは、記憶素子の電荷レベル電圧範囲のウィンドウを2つより多い状態に分割することによって達成される。4つのこのような状態を使用することによって各セルが2ビットのデータを記憶することが可能となり、8つの状態では1記憶素子につき3ビットのデータを記憶するなどとなる。フローティングゲートを用いた多状態フラッシュEEPROM構造およびそれらの動作については、米国特許第5,043,940号(特許文献13)および第5,172,338号(特許文献14)に記載され、誘電体フローティングゲートを用いた構造については、前述した米国特許出願第10/280,352号(特許文献12)に記載されている。多状態メモリセルアレイの選択された部分は、米国特許第5,930,167号(特許文献15)および第6,456,528号(特許文献16)に記載されている方法で、種々の理由に対して2つの状態(2値)で動作することもできる。
【0007】
一般的なフラッシュEEPROMアレイのメモリセルは、一括して消去されるセル群からなる別個のブロックに分割されている。すなわち、ブロックは、消去単位、同時に消去可能な最小のセル数である。1ページより多いデータを一回の動作でプログラムするかもしくは読み出すことができるが、各ブロックは通常、プログラミングおよび読み出しの最小単位である1ページまたはそれ以上のデータを記憶する。各ページは通常、ホストシステムによってサイズが定義されている1つまたはそれ以上のセクタのデータを記憶する。例示的なセクタは、磁気ディスクドライブに関して制定された基準に従った512バイトのユーザデータを含み、それに加えて、ユーザデータおよび/またはそれらが記憶されているブロックに関する数バイトのオーバーヘッド情報を含む。メモリシステムは通常、各ブロックにおいて16、32、またはそれ以上のページで構成され、各ページは、1つまたはごく少数のホストのデータセクタを記憶する。
【0008】
ユーザデータをメモリアレイにプログラムし、かつそれからユーザデータを読み出す間の並列処理度を高めるために、アレイは通常、一般にプレーンと呼ばれるサブアレイに分割され、プレーンが、並列動作を可能にするためにそれら自体のデータレジスタおよび他の回路を含み、これによりデータの各セクタへのプログラミングまたはプレーンの各々からの読み出しを同時に行うことができる。単一の集積回路上のアレイを物理的にプレーンに分割してもよく、或いは各プレーンを1つまたはそれ以上の別個の集積回路チップから形成してもよい。このようなメモリシステムの例は、米国特許第5,798,968号(特許文献17)および第5,890,192号(特許文献18)に記載されている。
【0009】
メモリをさらに効率的に管理するために、ブロックをメタブロックとして一緒に結合することができる。すなわち、各々の論理的にアドレス指定可能なメタブロックは、各プレーンから1つの物理ブロックを含むように定義される。メタブロックの使用については、国際公開特許出願第WO02/058074号(特許文献19)に記載されている。メタブロックは、データのプログラミング先および読み出し先としての共通の論理アドレスによって識別される。同様に、メタブロックのすべてのブロックは、一括して消去される。このような大きなブロックおよび/またはメタブロックで動作するメモリシステム内のコントローラは、ホストから受け取った論理ブロックアドレス(LBA)と、メモリセルアレイ内の物理ブロック番号(PBN)およびページアドレスとの間の変換を含むいくつかの機能を実行する。この変換は、論理ブロック番号(LBN)と論理ページとの中間項の使用を含むことが多い。
【0010】
メモリシステムのコントローラは、その構造および制御ファームウェアによって、ホストによりそれに課される種々の条件下でデータのプログラミングおよび読み出しを行わせることができるのが好ましい。一例を挙げれば、音声、ビデオまたは他のストリーミングデータを高速で受信することができ、データは、メモリシステムが起動されると、リアルタイムで記憶される。別の例を挙げれば、ホストは、アレイに記憶されたファイルアロケーションテーブル(FAT)の書き込み時または更新時に行われるように、メモリシステムに1セクタのデータのプログラミングまたは読み出しを一度で行わせる。
【0011】
メタブロックに記憶されたデータは頻繁に更新され、更新の可能性は、メタブロックのデータ容量が増大するにつれて高くなる。1つのメタブロックの更新されたセクタは通常、別のメタブロックに書き込まれる。変更のないセクタも通常、データを整理統合するために、同一のプログラミング動作の一部として、当初のメタブロックから新たなメタブロックへコピーされる。あるいは、更新されたデータと一括した単一のメタブロック内への後の再整理統合まで、変更のないデータを当初のメタブロック内に残しておいてもよい。
【特許文献1】米国特許第5,070,032号
【特許文献2】米国特許第5,095,344号
【特許文献3】米国特許第5,313,421号
【特許文献4】米国特許第5,315,541号
【特許文献5】米国特許第5,343,063号
【特許文献6】米国特許第5,661,053号
【特許文献7】米国特許第6,222,762号
【特許文献8】米国特許第5,570,315号
【特許文献9】米国特許第5,774,397号
【特許文献10】米国特許第6,046,935号
【特許文献11】米国特許第6,522,580号
【特許文献12】米国特許出願第10/280,352号
【特許文献13】米国特許第5,043,940号
【特許文献14】米国特許第5,172,338号
【特許文献15】米国特許米国特許第5,930,167号
【特許文献16】米国特許第6,456,528号
【特許文献17】米国特許第5,798,968号
【特許文献18】米国特許第5,890,192号
【特許文献19】国際公開特許出願第WO02/058074号
【発明の開示】
【0012】
本発明によれば、データがプログラムされるメモリユニットのサイズは、ホストによってプログラムされているデータの特性および量に適応される。単一のプレーン内の1つまたはそれ以上のブロック内で連続してプログラムされている場合のように、特定の状況において行われるデータ整理統合の事例の増加という不利な点がメタブロックにデータを書き込むことによって提供される高度な並列処理の利点を上回る場合は、データの各セクタは、メタブロック内で論理的に一緒に結合されるよりも少ない数のブロックに書き込まれる。
【0013】
メタブロックの容量を基準としてプログラムされているデータセクタの数が、実行するだけの価値を有する高度な並列処理の利点をもたらす場合は、データの各セクタは、メタブロックの全ブロックに並列に書き込まれる。しかし、特定のデータプログラミング動作がメタブロックの記憶容量に比して少数のデータセクタしか含まず、その結果としてのデータ整理統合動作の増加により、より高度な並列処理が役立つ度合いよりも性能が損なわれる可能性の方が高い場合、メタブロックの使用によって提供される並列処理の利点は実現されない。
【0014】
本発明の特定の態様によれば、メモリコントローラは、ホストの書き込みコマンド内および/または一連の書き込みコマンド内に含まれたセクタ数に応じて、メタブロック内への高度な並列処理によるか、或いはメタブロックを構成しないより少数のブロックへの低度な並列処理により、データのいくつかのセクタを適応的にプログラムする。データは、物理ブロック内にマップされた論理ブロックに対するホストのデータプログラミングパターンに応じて、Mが4、8または別の整数であるM物理ブロックからなる1メタブロック全体にプログラムしてもよく、M/2、M/4、M/8、またはこれらに類似するもののようなより少ない数のブロックからなる1つのユニットにプログラムしてもよい。特定の種類のホストプログラミング動作では、ホストがFATテーブルなどの演算ファイルを更新するような通常の動作において行われることが多い単一のデータセクタのプログラミングは、メタブロックまたはサブメタブロックではなく、単一のブロックに向けられる。メタブロックは、一回で1セクタをプログラムするためには使用されない。メタブロックは、並列プログラミングによってメタブロックのいくつかのブロックにわたって分散されることになり、それにより1つまたは少数のデータセクタが一回でメタブロックの各ブロックに書き込まれる結果となる、論理的に連続するアドレスを有するほんの少数のセクタのプログラミング動作に使用される可能性もない。単一のブロックは、このような場合に使用されるのが好ましい。これにより、メタブロックのいくつかのブロック全部からのデータを新たなブロックに整理統合し、その後メタブロックのこのような数セクタが更新されるたびに当初のブロックを消去する必要性が回避される。このような単一ブロックに関するデータの整理統合では、単一ブロックの消去のみに終わり、その結果、メモリの耐用寿命を短縮する可能性のあるメモリのプログラミング/消去のサイクル数(磨耗)が減少する。
【0015】
本発明の別の特定の態様によれば、1つの並列処理度で記憶されたデータへのアクセスは、その方がより最適な性能特性を提供する可能性がある場合、別の並列処理度によるアクセスに変換される。例えば、メタブロックへの並列プログラミングは、メタブロックへのデータ書き込みが変更され、それによって性能が向上すると考えられる場合、単一のプレーン内の各ブロックへの順次プログラミングに変換することができる。このような変換には、メタブロックのブロックからのデータを単一のプレーン内の他のブロックへコピーするステップが含まれる。逆に、単一のプレーン内のブロックへの順次プログラミングは、当初のブロックからメタブロックへデータをコピーするステップを含め、性能を向上させるためのメタブロック内での並列プログラミングに変換することができる。
【0016】
例示的な実施例では、モードビットはフラッシュメモリアレイに記憶することができ、かつ個々のセクタのユーザデータに対応付け、セクタがメタブロック内で他と共に並列にプログラムされてきたか、或いはそうではなく単一のブロック内で他と共に論理的順序でプログラムされたかを示すことができる。モードビットは、1つのセクタのユーザデータと共に記憶してもよく、代替的に、多くのユーザデータセクタに対するオーバーヘッドデータを含む別のセクタの一部として記憶してもよい。ホストによってあるセクタのユーザデータを読み出すか、或いは再プログラムするように命令されたときにこのビットを読み出すことにより、コントローラは、適切なモードでセクタにアクセスする。初期動作時、コントローラは並列モードで機能するが、一連の1つまたは少数のセクタ書き込み動作を指示するホストのプログラミングコマンドに応答し、順次モードに変更する。次いで、コントローラは、影響を受けたデータセクタと関連するモードビットを変更し、ユーザデータを順次プログラムする。セクタのしきい値数を超過してデータのいくつかのセクタを一括してプログラムすることを指示する1つまたはそれ以上のプログラミングコマンドをホストから受信した場合、コントローラの動作を切り換えて、並列プログラミングモードに復帰させることができる。
【0017】
さらに、特定の実施例では、各メタブロックは、メモリアレイのいくつかまたはすべてのプレーンの各々からの1つのブロックで形成される。次いで、ユーザデータが、2つの主モードのうちの1つでプログラミングおよび読み出しを実行する。第1の主モードでは、いくつかの連続してアドレス指定されたデータセクタが、このメタブロックの複数のブロックにわたって並列にプログラムされる。この結果、データセクタは、個々のブロック内にランダムな順序で記憶される。それらは、メタブロックが内部に形成されたプレーン間でインタリーブされる。第2の主モードでは、データセクタは、メタブロックの個々のブロック内で順次書き込まれる。コントローラは、並列プログラミングと順次プログラミングとの間でのデータセクタの変更に応じて、プレーン横断的(第1のモード)もしくは単一プレーン内で順次に(第2のモード)物理アドレスの順序を指定しなおすこともできる。これは、ブロック間でデータを移動させるステップを含むことができる。メモリシステムは一般に、メモリシステムの性能を向上させるために、これらの2つのモードのうちの異なるモードにおいて、異なるブロックで動作する。
【0018】
本発明の追加の態様、利点および特徴は、添付図面と併せてなされる以下の本発明の例示的な実施例の説明に含まれる。本願明細書に参照されるすべての特許、特許出願、論文および他の出版物は、あらゆる目的に対してその全体が本願明細書において参照により援用されている。
【発明を実施するための最良の形態】
【0019】
図1に、本発明の種々の態様を組み込むことができるフラッシュメモリを含む、コンピュータシステムなどの電子システムを全体として示す。この電子システムのいくつかの例には、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、MP3、および他のオーディオプレーヤ、デジタルカメラ、ビデオカメラ、電子ゲーム機、無線/有線電話通信装置、応答装置、ボイスレコーダ、ネットワークルータなどが含まれる。
【0020】
図1のこの電子システムは、ランダムアクセスの主システムメモリ25、およびキーボード、モニタ、モデムなどのような少なくとも1つまたはそれ以上の入出力装置27と共にシステムバス23に接続されたプロセッサもしくはマイクロプロセッサ21を含む。一般的なコンピュータシステムバス23に接続された別の主要なコンピュータシステムの構成要素は、ある量の長期の不揮発性メモリである。DRAM(ダイナミックRAM)またはSRAM(スタティックRAM)などの揮発性メモリとは対照的に、不揮発性メモリは、その記憶状態を、デバイスから電力が除去された後においてもなおかつ保持する。一般に、このようなメモリは、メガバイト、ギガバイト、またはテラバイトのデータ記憶容量を有する磁気技術もしくは光技術を用いたディスクドライブである。このデータは、現行処理に用いるためにシステムの揮発性メモリ25に取り込まれ、かつ容易に捕捉、変更、または修正することができる。
【0021】
図1の場合、大容量記憶装置のメモリは、不揮発性のフラッシュメモリシステム29である。メモリ29は、取り外し可能なメモリカードの形状であってもよく、コンピュータシステム内にハード的に組み込んでも(埋め込んでも)よい。メモリシステム29は、コンピュータシステムバス23に接続されたコントローラ31、および1つまたは複数の集積回路チップで形成されたメモリセルアレイ33を含む。データおよび命令は、コントローラ31から、主としてライン35を介してメモリセルアレイ33に伝達される。同様に、データおよび状態信号は、メモリセルアレイ33からコントローラ31にライン37を介して伝達される。データライン35および37は、実装に応じて直列または並列とすることができる。コントローラ31とアレイ33との間の他の制御回路および状態回路は、図1には示されていない。いくつかのシステムでは、コントローラ31はコンピュータシステム内に埋め込まれ、メモリセルアレイ33は、取り外し可能なカードに実装される。
【0022】
アレイ33は、各電荷蓄積素子または各電荷蓄積領域が1ビットのデータを記憶するように動作させることができる。代替的に、アレイ33は、多状態セルまたはマルチレベルセルと呼ばれるメモリセルの各電荷蓄積素子または各電荷蓄積領域に記憶された1つよりも多いビット数のデータで動作させることができる。
【0023】
図2に、ホストインターフェイスおよびメモリ制御機能を実行する単一のコントローラ集積回路チップ121、および複数の集積回路チップ127で構成されたフラッシュメモリセルアレイを含む例示的なメモリカード構造を示す。システムコントローラおよびメモリセルアレイチップは、コントローラ121とメモリチップ127との間でコマンド、アドレス、およびデータを転送することを可能にするバス124によって接続されている。これは一般的であるが、メモリシステムのなかには専用のコントローラを持たずにホストシステムによる直接制御に依存するものもあることに留意されたい。
【0024】
1セクタにプログラムされたホストデータの各セクタの量に、記憶されたデータの妥当性を判定するために用いられる誤り検出および誤り訂正符号(ECC)が追加されることは、一般的な方法である。次いで、いくつかのこのようなシステムは、データが破損されていないことを保証する1つの方法としてECCを用いることによって読み出されているデータの妥当性をチェックする。ユーザデータのセクタは、ECCおよびヘッダ形式の他のオーバーヘッドデータと共に記憶することもできる。
【0025】
メモリアレイにアクセスして順次にアドレス指定されたデータのプログラミングまたは読み出しを実行するステップの1つの特性は、「並列処理度」である。すなわち、メモリシステムの性能、すなわちアレイを往復してデータを転送する速度を向上させるために、実行可能な限り多くのデータを並列にプログラムし、かつ読み出すことが通常好ましい。用語「並列処理度」は、本願明細書では、並列にプログラミングまたは読み出しを実行することができるメモリのページ数を指す。1単位モードでは、単一のページのみが一度にアクセスされる。4単位モードでは、複数の連続してアドレス指定されたホストセクタには、一度に最大4ページアクセスされる。いくつかのホストデータアクセスパターンの下で性能および耐久性を向上させるためには、より高い並列処理度を可能にするためのマッピングを構成する必要がある一方で、他のホストデータアクセスパターンの下では、より低い並列処理度に対するマッピングを構成する必要がある。ホストがメモリシステムの異なる部分のデータに異なるパターンでアクセスする可能性があり、メモリシステムの異なる部分に対して異なるようにマッピングを構成することが必要となる。記憶装置の特定のアドレス範囲に記憶されたデータのホストデータアクセスパターンが経時変化する可能性もあり、特定のアドレス範囲のマッピング構成を経時変更することが必要となる。あり得る種々のホストの使用パターンを受けてメモリ利用を最適化するメモリ管理に対する全体的な必要性がある。
【0026】
図3に、図1および図2のメモリセルアレイの一例を示す。この例では、アレイは、2つの集積回路デバイス、フラッシュ0およびフラッシュ1を含む。もちろん、メモリシステムの所望の記憶容量に応じて1つまたは3つより多いデバイスを用いることができる。各デバイス内のアレイ部分は、4つのプレーン、0〜3に分割されているが、他の実施形態では、2つ、3つまたは4つより多いプレーンを用いることもできる。複数のQページ(1ページは、プログラミングおよび読み出しの最小単位である)がメモリセルの各ブロック(消去の最小単位)内に含まれ、複数のNブロックが各プレーン内に含まれる。1ページは、1つまたは複数のホストデータセクタを記憶する容量を有し、これにより各ブロックにおいて複数のQページとなる可能性があるMデータセクタを各ブロックが記憶する。各プレーンは、プレーン内のメモリブロックおよびページにアクセスするそれ自体の回路を有する。通常、1ページのみが、各プレーン内で同時に書き込みまたは読み出しを実行する。特定の実施形態では、各セクタが、512バイトのユーザデータを含む。各セクタは、フラグ、ユーザデータECC、種々のパラメータ、および他のオーバーヘッドデータ用の追加のビットまたはバイトをも含むことができる。
【0027】
プレーンの数によって可能な並列処理度が決定され、その度合いでメモリシステムを動作させることができる。並列処理度は、同時にプログラミングまたは読み出しを実行することができるページ数を表す。より高い並列処理度では、より多くのデータを同時に操作することができる。並列処理度は、1、2またはそれ以上とすることができる。高度の並列処理では、複数のプレーン内の複数のページが同時にアクセスされるように、論理アドレス−物理アドレス変換は、コントローラによって行われる。連続した論理アドレスを有するいくつかのデータのセクタは、同時にアクセスされる。このセクタ数は、各ページに記憶されたセクタ数に並列にアクセスを受けているページの数を乗じたものに等しい。並列処理度が1である場合に対しては、本願明細書において、これを1単位モードと呼ぶ。この最も低い並列処理度では、1プレーンの1ページのみが一度にアクセスされる。この場合、単一のページ内に記憶することができる連続した論理アドレスを有するいくつかのホストデータセクタは、一度にアクセスすることができる。
【0028】
コントローラは、ホストからの書き込みコマンドに指定された一連の論理アドレスを有するデータセクタの数によって、データをメモリにプログラムする際の並列処理度を決定することができる。いくつかのホストコマンドは、単一のコマンド中に、プログラム対象の多数の連続したデータセクタを指定する。コントローラは、より量の多い並列処理でメモリにデータを書き込むことによって、この種類のコマンドに応答し、その一例を図4に示す。他のホストコマンドは、1つのみまたはごく少数の連続した論理アドレスを有するデータセクタを書き込むように指定し、このコマンドは、最低限の並列処理度で実行され、その一例を図5に示す。
【0029】
説明された特定のメモリの実施例では、最高度の並列処理度に対して、各プレーンに1つずつ、多数のデータセクタを多数の物理ページに同時にプログラムすることができる。これにより、より高度なデータ書き込み性能が可能となる。詳細に述べると、4プレーンに対して、最大4ページを同時に書き込むことができ、これによりデータを一度に1セクタしか書き込むことができないメモリより最大で約4倍の速度でメモリが動作する。その量のデータをプログラムするのに要する別々のプログラミング動作数は有意に減少する。さらに別の例を挙げれば、8プレーンを有するメモリに対して、最高並列処理度でのこのメモリのプログラミングは、データを一度に1ページしかプログラムすることができないメモリより最大で約8倍速い。
【0030】
マルチプレーンメモリ構成では、各プレーンからの1ブロックを論理的にまとめてメタブロックを形成することができる。ページを示す線を含む図3の8ブロックの組み合わせは、メタブロックの一例である。メタブロックは、ある範囲の連続したホストアドレス内のデータセクタを含むブロックの論理的グループ化である。サブメタブロックは、セットまたは単位として管理されるメタブロック内のブロックのサブセットである。データ管理の目的でいったんメタブロックがサブメタブロックに区分化されると、各サブメタブロックは、その中のデータがメタブロックの他の部分から独立してそれらだけで整理統合されるという点で、実質的に並列処理が少ないメタブロックと同様に管理される。例えば、図3では、このデバイスの各々のデバイス上の4ブロックが、メタブロックを両方のデバイスにわたって拡張せずにメタブロックまたはサブメタブロックを形成することができる。
【0031】
以下の説明では、以下の専門用語を用いる。(1)当初のブロックは、いくつかの当初のデータセットを含むメタブロックまたはサブメタブロックとする。(2)更新ブロックは、当初のブロックからのいくつかのデータ、または当初のブロックからコピーされたいくつかのデータ、もしくはその両方の更新版を含むメタブロックまたはサブメタブロックとする。(3)論理ブロックまたは論理サブメタブロックは、ブロックの物理位置に関係なく、またはデータが単一の位置に含まれているか、或いは当初のブロックおよび更新ブロックに含まれているかに関係なく、物理メタブロックまたは物理サブメタブロックにマップされたホスト論理セクタのセットとする。
【0032】
論理メタブロックは、任意の所与の時刻にメタブロックを形成するブロックの物理セットと、任意の所与の時刻にデータが中に存在する物理ブロックを無視して、ある範囲のデータを含むようにホストによって管理される論理構成体との間に位置する中間単位である。さらに、メタブロックは、いくつかのメモリ回路チップにわたってマップすることができ、これにより1つの回路チップ上のメモリセルアレイがNプレーンを含む場合、2つのチップにわたる場合には、メタブロックは最大2Nのブロックを含み、より多くのチップにわたってマップされる場合、より多くのブロックを含む。
【0033】
所与の論理ブロックアドレス(LBA)を有するデータは、物理ブロック番号(PBN)で識別されたプレーン内の特定の物理メモリブロック内へ、コントローラによってマップされる。メタブロックを構成しているブロックのPBNは、同一である必要はない。図6に、数ブロックで形成されたメタブロックの一例を示し、この数ブロックは、それらのプレーンの各々の中で異なる物理位置を有する。さらに、メタブロックまたはメタブロックの各部分を構成しているブロックがメモリシステムの動作中に変更される際に、各プレーンは固定されたままである必要はなく、各プレーン内で互いに関係なく再配置することができる。
【0034】
あるセクタが新たなデータで更新される際に、所与のセクタと関連するブロックは、プレーン内の新たなブロックにコピーされる。このブロックは、プレーン内のどこにでも配置することができる。図7に、ある他の任意の物理ブロックへ移動中のサブメタブロックに関する1つの例を示す。
【0035】
最高度の並列処理のために構成されたメタブロックは、連続する論理アドレスを有する多数のデータセクタにアクセスするホストコマンドに最適である。1ホスト読み出しコマンドまたは1ホスト書き込みコマンド当たりのセクタ数が並列にアクセスすることができるセクタ数を越える場合、高レベルの性能が達成される。漸進的に数が増大するセクタコマンド上で一度に動作するインクリメンタルゲインがホストコマンドについて達成される。というのは、これによって個々のコマンドを発行するステップに関連する1セクタ当たりの処理のオーバーヘッド量が減少するからである。
【0036】
部分的に更新されたメタブロック内のデータを整理統合することが必要となるため、メタブロックでメモリを動作させる欠点は、ホストが1プレーンについて1セクタのみ書き込み、次いでアレイ内の他の箇所で書き込む場合に明らかとなる。この整理統合は、更新されたデータがプログラムされた新たなメタブロックへの当初のメタブロックからの変化していない全データセクタのコピー、およびその後の当初のメタブロック内の全ブロックの消去を必要とする。8プレーン、1ブロック当たり64ページ、および各ページに記憶された1データセクタを有するメモリアレイの場合、504セクタのコピーおよび8ブロックの消去が必要となる。逆に、新たなデータセクタが1の並列処理度で動作する1つのサブメタブロックに書き込まれた場合、整理統合には56セクタのコピーおよび単一のブロック消去が必要となり、少数のデータセクタを更新することによって生じるオーバーヘッドが大幅に減少する。
【0037】
データの整理統合および移動に関連する消去はメモリを摩耗させるので、短い、不連続の書き込みは、メモリ磨耗を加速することになる。各メモリブロックは、適切に動作しなくなる前にそれが耐えることのできる有限数の消去/プログラミングサイクルを有する。サイクルの最大数は、いくつかある要因の中でも特に、メモリアレイの構造およびメモリの記憶状態を保持しなければならない精度に依存する。この数値は、10,0000サイクルの低さとすることもでき、100,000サイクルまたはそれ以上のように極めて大きくすることもできるが、メモリシステム内の全ブロックの動作可能性を保持することが重要である。磨耗を最小化するには、ブロック消去を最小限度に抑えるのが好ましい。
【0038】
以下は、メタブロック、サブメタブロック、またはいずれか一方の一部分が再配置されるか/もしくはデータが整理統合される種々のシナリオである。
(1)ホストがブロック内の1つまたはそれ以上のデータセクタを書き換える場合。このようなとき、このシステムは、消去されたブロックを更新用ブロックとして割り当て、書き換えられたデータは、更新用ブロックに書き込まれる。当初のブロック内の変化していないデータの一部または全部も更新用ブロックにコピーされ、その後同一の論理アドレスでのデータ要求の受信に応じて新たなブロックをアドレス指定するために、このシステム内に保持された論理アドレス−物理アドレス変換が更新される。ホストによるデータコピーまたはデータ書き換えによる更新用ブロックへのプログラミングが当初のブロックに記憶された全データに取って代わると、その後当初のブロックが消去される。
(2)特に当初のブロックが存在するプレーンにおいて、更新用ブロックとして割り当るために消去されたブロックが必要であるが、事前消去されたブロックが使用できない場合、2つまたはそれ以上の他のブロック内のデータが1つまたはそれ以上の他のブロックに整理統合される。次いで、それらの全データが移動された1つまたはそれ以上のブロックが消去され、現行プログラミング動作の更新用ブロックとして用いるのに使用可能となる。
(3)一実施形態では、更新用ブロックとするために必要な1つまたは複数のプレーン内のメタブロックの部分のみを整理統合することができる。残りのプレーン内のメタブロックの各ブロックは、残りのプレーン内の更新用ブロックが必要となった際に、要求に応じて後に整理統合することができる。
(4)さらに別の代替的な実施形態では、いくつかのプレーンでは整理統合が完了しているが、他はそうではないメタブロックは、ホストによって書き込みが行われ、かつ整理統合されたプレーン内の消去されたブロックを要求する。なんらかの所与のメタブロックのデータを完全に整理統合する(ガーベッジコレクションを行う)必要はなく、代わりに、要求に応じたブロックの整理統合および割り当てを可能にするために、各プレーン内のブロックが独立して管理される。この方法で、所与のメタブロックの他の部分から独立して、サブメタブロックをシステムの動作時に新たな物理アドレスに移動させることができる。
【0039】
データを記憶する際は、高速動作を可能にする方法でデータセクタを物理ブロック内にマップすることにより、コントローラは、メモリ内への書き込みをさらに構成することができる。図4に、アクセスにおいて最大並列度、この例では4X並列インタリービングを可能にする方法でのプレーン0〜プレーン3にわたるメモリのインタリービングを示す。並列インタリービングとは、順次にアドレス指定されたホストセクタがプレーン間にインタリーブされるように、すなわち複数の順次にアドレス指定されたデータセクタが異なるプレーンのページ内で並列に同時にプログラムされるように、メモリがフォーマットされていることを指す。データは、別のメタブロックを形成する次の一連のブロックにデータが書き込まれる前に、1つのメタブロックを構成している各プレーンの1ブロックに同時にプログラムされる。1データセクタのみが各ブロックの個々のページに記憶された図4の例を想定すると、コントローラは、第1のセクタ、セクタ0をプレーン0内の1つのブロックに、第2のセクタ、セクタ1をプレーン1内の1つのブロックに、第3のセクタ、セクタ2をプレーン2内の1つのブロックに、第4のセクタ、セクタ3をプレーン3内の1つのブロックに書き込む。このメモリ構成は、並列マッピングと呼ぶことができる。この場合、これは、「4単位」インタリービングまたは「x4」インタリービングもしくは「4X」インタリービングとなる。このフォーマットへのデータの書き込みを構成すれば、これにより、4つの異なるプレーンの4つのセクタが一度にプログラムされるので、連続してアドレス指定されたホストからの入力データ、通常はビットストリームを、高速の方法で書き込むことができる。
【0040】
特定の実施例では、入力データは、レジスタとすることができる、各プレーンと関連するバッファによって逐次受信され、データは、コントローラがメモリをインタリーブした方法に従って、1つまたは複数のレジスタから不揮発性メモリセルに並列に書き込まれる。メモリセルの特定のインタリービングは、メモリをそれに応じてフォーマットすることによって得ることができる。データは、それが書き込まれたものと同一のインタリービングフォーマットに従ってメモリから取り出すことができる。
【0041】
他の度合いの並列インタリービングを含み、多くの異なるメモリをマップする方法がある。その度合いの並列インタリービングよりも多いプレーンがあるかもしれない。例えば、4つのプレーンがあったとしても、特定のプログラミング動作に対する並列インタリービングでは、2つのプレーンに同時にアクセスすることができるだけかもしれない。これは、「2単位」インタリービングまたは「x2」インタリービングもしくは「2X」インタリービングと呼ぶことができる。メモリは、「3単位」インタリービングまたは「x3」インタリービングもしくは「3X」インタリービングで動作することもできる。
【0042】
図5に、メモリの1単位インタリービングを示す。並列処理度は1である。アクセスが一度に1つのプレーン内の単一のページ毎となるので、これは、非並列処理と呼ばれることもある。図5では、セクタは、1ブロックの全ページが一杯になるまで、そのブロックに順次書き込まれ、その後、書き込みは、別のブロックへ進む。これは、「1単位」インタリービングまたは「x1」インタリービングと呼ぶことができる。
【0043】
タイミングの例は、図4と図5のインタリービング間の性能の差を示す。図5に従って4つの連続セクタに書き込むと、単一のプレーンの1データレジスタは順次4回充填され、書き込みは順次4回実行される。レジスタロードに25マイクロ秒かかり、書き込みに1ミリ秒かかれば、総使用時間は、4*25マイクロ秒+4*1000マイクロ秒=4100マイクロ秒となる。しかし、図4の並列書き込みでは、4セクタ書き込みには依然として4回の順次データレジスタロードが含まれるが、書き込み動作は1回のみとなる。総使用時間は、4*25マイクロ秒+1000マイクロ秒=1100マイクロ秒となる。この4X並列マッピングは、1Xマッピングを3.7倍上回る性能向上をもたらす。異なるメモリは異なるタイミング特性を有するので、これらの特定の数値は、比較例を提供するためにのみ使用されている。
【0044】
データセクタに記憶された方法をコントローラに認識させるために、1つまたは複数のインタリービングインジケータビットがコントローラもしくはメモリに記憶されていてもよい。この1つまたは複数のインタリービングインジケータビットを用いて、コントローラは、更新データを記憶する順番もしくはデータを読み出す順番を決定することができる。例えば、メモリ上の各セクタは、セクタが記憶された方法を示すために含まれた1つまたはそれ以上のインジケータビットを有することができる。4プレーンメモリに対して、可能なメモリインタリーブ構成が7通りある。これらのインタリービングインジケータビットは、ユーザデータビットおよびECCなどの他のオーバーヘッドビットに追加されるビットである。インジケータビットは、代替的に、ヘッダではなくテーブルに別個に記憶してもよい。
【0045】
単一のメモリアレイは通常、異なるインタリービングでアクセスされるブロックを有する。例えば、同一のメモリが、1単位(図5)で記憶されたデータおよび4単位(図4)で記憶された他のデータを有することができる。セクタインタリービングインジケータビットは、セクタを1つまたはそれ以上のブロックに記憶するのに用いられるインタリービングの方法を示す。例えば、1単位インタリービングを用いて第1のデータファイルをメモリに記憶することができ、第1のサブメタブロックに記憶されたセクタに対するインジケータビットがこれを示す。2単位インタリービングを用いることによって、サブメタブロックに第2のデータファイルを記憶することができ、そのように記憶されたセクタに対するインジケータビットがこれを示す。同じ方法で3単位インタリービングを用いることによって、サブメタブロックに第3のデータファイルを記憶することができる。単一のメモリアレイでは、種々のメモリセルブロックを、これらの方法のうちのいくつかで構成することができる。
【0046】
コントローラは、ホストのプログラミングコマンドの性質から、データを導く方法を決定する。例えば、ホストがFATファイルシステム(MS−DOSファイルフォーマット)を更新している場合、各データ書き込みコマンドは通常、単一のセクタを指定することになる。すなわち、各ホスト書き込みコマンドに応答して、1つのセクタのみがフラッシュメモリにプログラムされる。この場合、データは、メタブロックにではなく、メモリの単一のブロックに、1単位動作によって順次記憶することができる。大容量のファイルがプログラムされる別の種類のデータプログラミング動作では、ホスト書き込みコマンドは、少なくとも1つのメタブロックのかなりの部分または全部を占有する可能性のある極めて多数のデータセクタを論理アドレス順に書き込むように指定する。コントローラは、ホストの活動に応答し、並列処理度をデータ書き込みの性質に合わせる。
【0047】
論理アドレスを物理アドレスへマップする方法を決定するにあたって個々のデータ書き込みコマンドに応答することに加え、コントローラは、ホスト書き込みコマンドのパターンを監視することができる。この監視は、特定の1ブロックまたは複数ブロックがホストによってアクセスされた回数のカウント値を保持するステップを含むことができる。この情報は、それらのブロックに、或いは別個の物理ブロックに記憶されたデータセクタにオーバーヘッドデータとして記憶することができる。記憶された1つまたは複数の数値の分析には、しきい値の数値と比較するステップ、もしくは2つまたはそれ以上のアクセス利用パターンの頻度差をしきい値の数値と比較するステップを含むことができる。この情報は、例えば、データが頻繁に書き換えられるメタブロックを特定するのに有益であり、この場合、コントローラは、同一の論理アドレスを有するその後の書き込みをむしろ単一のブロックにマップするように決定することができる。これにより、データ更新の結果として整理統合しなければならないデータの量が減少する。
【0048】
コントローラによって監視および記憶することができる別のプログラミング特性は、ホストが命令した書き込みにより1つまたはそれ以上のページもしくはブロックに書き込みが実行された回数対コントローラによって開始されたデータ整理統合(ガーベッジコレクション)の回数の値である。さらに別のプログラミング特性は、ブロックまたはメタブロックが繰り返し部分的にアクセスされると、このようなブロックにデータを書き込む場合の並列度を下げるのが望ましいことを信号で伝えることができるので、1つのブロックまたはメタブロックの全ページがデータ書き込みのためにアクセスされた回数よりも少ない回数の値である。さらに、個々のホストプログラミングコマンドによって書き込みが実行されたセクタ数の統計値を保持し、物理アドレスへの論理アドレスのマッピングを決定する際に使用することができる。例えば、一度に書き込むようにホスト書き込みコマンドによって指定されるデータセクタが主として1セクタであるのか、或いは4セクタまたはそれ以上であるのかは、極めて有益となりうる。
【0049】
図4および図5の説明図は、この概念を説明する目的で2つのうちの1つのインタリービング手法で動作される集積回路デバイスのほぼ全体を示しているが、これは通常、メモリを使用する効率的な方法ではない。各デバイスは通常、そのブロックの一部分は並列アクセス(図4による)用のメタブロックを形成するのに用いられ、そのブロックの他の部分は一度に1ブロック(図5による)アクセスされている状態で動作される。
【0050】
複数のプレーンにわたってセクタアドレスがインタリーブされる方法にはいくつかの利点および不利な点がある。より高度な並列インタリービングの利点は、順次にアドレス指定されたセクタを並列にメモリに書き込むことができる点である。より低度な並列マッピングまたは順次マッピングの利点は、部分的なブロック更新に応答してコピーを要するデータが少ない点、および特に少数のデータセクタが書き換えられる際にガーベッジコレクションを行う必要のあるブロック数が少ない点である。メタブロックに記憶されたデータの一部が書き換えられる際に、当初のブロックに存在する書き換えられなかったデータが新たなブロックにコピーされ、それが新たなデータと共に記憶される。並列マッピングを用いてデータが記憶された場合、データが異なる複数のプレーンにわたって拡がるために、メタブロック全体を書き換えることが必要となる。しかし、データが順次マッピングを用いてサブメタブロックに記憶されていた場合、サブメタブロック内のデータのみが、ガーベッジコレクションを行う必要がある。書き換え対象のデータは、書き換えられていないあらゆるデータと共に新たなブロックに書き込まれ、新たなブロックが、そのメタブロックの他のブロックと連結される。これにより、行う必要のあるコピー、書き込み、書き換え、およびガーベッジコレクションの量が最小化される。
【0051】
一般に、フラッシュメモリセルは、それらの信頼性が許容できないレベルまで潜在的に低下する以前での有限数の消去/書き込みサイクル(例えば、10,000サイクルと100,000サイクルの間のいずれか)を有する。従って、書き換えおよび書き込みの量を最小化することにより、これがメモリの寿命を増大させる。ガーベッジコレクションには時間がかかるため、ガーベッジコレクションの量を減らすことも性能を向上させる。
【0052】
以下の実施例は、フラッシュメモリを用いた本発明の特定の実施形態である。しかし、フラッシュメモリは、単に一例として用いられ、本発明は、他のメモリ技術にも用いることができる。特定の実施形態において、本発明は、多数のセクタ「ブロック」を含むフラッシュメモリ素子を含む記憶装置を扱う。ブロックは、1消去動作によって消去されるメモリの単位として定義される。言い換えれば、ブロックは、消去の単位である。本発明は、具体的に、それらのブロックのマッピングおよびアクセスに用いられる機構に取り組む。
【0053】
ホストデバイスがフラッシュメモリカードにアクセスする際に、いくつかの特有の使用パターンがある。FATファイルシステムは、(1)FAT領域およびディレクトリ領域における単一セクタと、(2)記憶装置のユーザデータ領域におけるマルチセクタとの2つの相異なるパターンに至る。ボリューム内に断片化があれば、特定の用途に対しては、使用は、その後、順次的ではなく「ランダム」となる。
【0054】
ホストは、種々のホスト使用パターンによってフラッシュメモリにアクセスすることができる。1つの使用パターンは単一セクタモードであり、このモードでは、セクタは一度に1つずつアクセスされる。他の使用パターンはマルチセクタモードであり、この場合、記憶システムは、各フラッシュデバイス内の多数のプレーンにわたり、1プレーンにつき1セクタずつ同時にアクセスする。
【0055】
本発明は、不揮発性メモリのホスト使用パターン間の並列処理度および不揮発性メモリが構成またはフォーマットされている方法に適合する。並列処理度は、1単位(順次とも呼ばれる)、2単位、3単位、4単位などとすることができる。1単位方式、すなわち順次アクセス方式では、次のブロックへ進む前に、1つのブロック内の各セクタがアドレス指定され、そのアクセスは、一度に1セクタに限定される。並列アクセス方式(1単位アクセスより大きい)では、いくつかの順次的動作、すなわち1単位動作ではなく、1動作において各プレーンからのセクタがアドレス指定される。並列動作によって、処理能力を高めることによるより高い性能が可能となる。これらの2つの方式は、性能および磨耗に関して利点と不利な点とを有する。
【0056】
本発明は、ホストアクセスを監視し、データをメモリに記憶する方法を切り換えて、いずれかのアクセスモードのメモリ磨耗特性および性能特性をうまくとらえて利用する。
【0057】
マッピング情報を保持する種々の方式があり、開始LBAのテーブルは、1つの例である。メモリ内に保持されたテーブルは、開始LBAを各物理メモリブロックに対して配置するために用いられる。
【0058】
セクタマッピングおよびブロック管理を伴うブロックマッピングの適応的並列処理は、新たなデータで上書きされているセクタを含むブロック上でコピー動作または消去動作、もしくは両方を行うだけで、フラッシュメモリに対して最適な書き込み/消去摩耗性能を提供する。
【0059】
データセクタが単一セクタ並列処理用にマッピングされている領域へのアクセスは、所与の論理ブロック内の順次的アドレス順序づけを保持するために、順次にアドレス指定されたセクタに一回で1つ書き込むように限定される。並列アクセス(1単位アクセスより大きい)では、1プレーンにつき1セクタに同時に書き込むことができ、並列に書き込まれるプレーンの数に等しい係数により、性能が向上する。例えば、4プレーンを有するデバイスは、単一セクタ書き込みより約4倍速くデータを書き込むことができる。8プレーンを有するデバイスは、単一セクタ書き込みより約8倍速くデータを書き込むことができる。16プレーンを有するデバイスは、単一セクタ書き込みより約16倍速くデータを書き込むことができる。
【0060】
図8に、順次マッピングを用いた場合のデータの修正を示す。4つの連続したセクタを上書きするには、新データを新たなブロックに書き込んで旧データを新たなブロックにコピーし、旧ブロックを消去する必要がある。1回の消去のみ実行する必要があることになる。コピー処理では消去済みセクタはコピーされない。
【0061】
図9に、並列マッピングを用いた場合のデータの修正を示す。4つの連続したセクタを上書きするには、4つの新たなブロックを見つけ出し、旧データと新データを新たなブロックにコピーし、4つの旧ブロックを消去する必要がある。4回の消去を行う必要がある。ランダムまたは単一のセクタアクセスの下で行われるかもしれない場合、ホスト書き込み数に対して多くのデータ整理統合動作が必要となれば、チップの寿命が消去数の増加によって影響を受けることになる。
【0062】
各セクタは一般に、ユーザデータ、ECCデータ、およびオーバーヘッドデータを含む。オーバーヘッド情報には、データ管理に必要なセクタID、物理アドレス情報、および他のシステム関連情報が含まれる。本発明の一実施形態では、オーバーヘッド情報は、データマッピングの適合的態様を管理するのに必要な付加情報を含む。いくらかのビット数を、並列処理度、サブメタブロックのサイズ、セクタインタリーブ、またはデータマッピングに関する他の指示を示すために保持することができる。
【0063】
一例を挙げれば、最大メタブロックサイズが4ブロックである場合、2ビットのマッピングフィールドを用いて並列処理度を示すことができ、00bで1単位を示すことができ、01bで2単位を示すことができるなどとなる。このシナリオでは、第1のプレーン内の第1のブロックは、それがフォーマットされている並列処理度を示すマッピングフィールドを有することになり、それに基づいて、ある別の数のブロックが同一のサブメタブロックに含まれることになる。例えば、第1の値が並列処理度2を示す01bであった場合、メタブロック内の次のブロックのみが同一のサブメタブロックに入ることを示す。
【0064】
メタブロックの各ブロック内の1つのセクタ、または所与のブロック内の連続したセクタから論理アドレス情報を読み出すことによってデータマッピングを決定し、かつそれに基づいてレイアウトを決定することが可能となるので、このマッピングフィールド情報は、便宜上保持されることになる。例えば、所与のブロック内の最初の2つの物理セクタが離れた2つの論理アドレスであった場合、インターリーブファクタは2となり、従って並列処理度は2となる。データマッピング情報は、セクタのオーバーヘッド情報にではなく、別個のテーブルに記憶してもよく、またデータマッピングが所与のメタブロックまたはサブメタブロックに対して修正されるたびに更新することができる。テーブルは、メモリ素子上の予約領域内の一実施形態の不揮発性メモリに保持される。
【0065】
さらに、一実施形態では、最適なデータマッピングを決定するための後の分析のために、ホスト使用および/またはカード使用率を追跡記録する統計データが保持される。1つの統計データは、所与のホストコマンドに書き込まれたセクタ数である。この統計データが1つのメタブロックまたはサブメタブロック内の各セクタと共に記憶されれば、この統計データをグループとして分析することができ、最適な並列処理度に関しての決定を行うことができる。特定の実施形態では、この統計データは、セクタに書き込みが行われたときに、セクタのオーバーヘッドに記憶される。別の実施形態では、統計データは、一時的に揮発性メモリに記憶することができ、次いで揮発性メモリ内の別個のテーブルに転送することができる。
【0066】
統計データは、書き込まれた各セクタまたはブロックに関して、例えばテーブル内に蓄積することもでき、これによって各々の発生回数または相対的発生回数が蓄積され、あるしきい値に基づいて並列処理度が変更される。蓄積の目的で、統計データは、許可された最も近い並列処理にビンされる。例えば、1度の並列処理と4度の並列処理のみが許可された場合、3つのセクタ上で動作している書き込みコマンドは、4つセクタ上で動作しているホストコマンドと共にカウントに蓄積されることになり、4つよりも多いセクタ上でのすべての書き込みコマンドは、4つのセクタ上での動作のカウントにビンされる。最高の並列処理度を表すビンは、コマンドのセクタカウントを最大並列処理度で除算した値だけ増分される。
【0067】
一例を挙げれば、4が最大並列処理度である場合、16セクタのホスト書き込みは、4単位カウントを4だけ増分することになる。1つの領域が大部分は単一セクタホストコマンドで書き込まれた場合、最適並列処理度は1であることを示す統計データが蓄積される。同様に、1つの領域が大部分は4セクタホストコマンドで書き込まれた場合、最適並列処理度は4であることを示す統計データが蓄積される。
【0068】
別の統計データは、セクタがホスト書き込みにより書き込まれたか、あるいはデータの整理統合により書き込まれたかである。このような統計データは、例えば別個のテーブルまたは個々のセクタのオーバーヘッド内に、また2つの機構間の相対数の特定のしきい値、もしくは比率に基づいて蓄積することができ、これにより各々の発生回数または相対的発生回数が蓄積され、並列処理度が特定のしきい値に基づいて変更される。例えば、セクタが大部分はデータの整理統合により書き込まれていると判断された場合、データの整理統合活動に含まれるブロック数を最小化するためにこの領域が1単位並列処理用にフォーマットし直されれば、性能または耐久性全体を向上させることができる。
【0069】
第2の統計データを用いてしきい値に到達することによって、次いで最適並列処理度を決定するための第1の統計データの評価が引き起こされるように、2つの前述した統計データのセットを結合することができる。このような蓄積された統計データを保持するテーブルは、不揮発性メモリに保持されることになり、一実施形態では、メモリ素子上の予約領域に保持される。蓄積された統計データはセクタ毎に保持することはできず、むしろメタブロック毎、またはひとまとまりのメタブロックのようなより大きい領域に保持されることに留意されたい。
【0070】
このシステムは、空間を節約して使い続けるために、蓄積された統計データを関心のある領域のみで保持するように最適化することができる。例えば、所与の領域に対する蓄積された統計データの保持は、領域が最適にフォーマットされたセクタとは数の異なるセクタ上で動作しているコマンドが検出されたときに開始することができる。このような書き込みは、非最適書き込みコマンドと呼ばれる。
【0071】
例えば、ある領域が1単位並列処理用にフォーマットされ、領域において4セクタ書き込みが行われている場合、これにより蓄積された統計データをその領域用に格納することができる。ひとたび非最適書き込みコマンドがしきい値を超えると、このシステムは、並列処理度をその領域がフォーマットされているものに切り換える。蓄積された統計データは、1つのホストセクタカウントの発生があれば増分され、もう一つの発生があれば減分されるカウンタとして実装することができる。例えば、1単位および4単位の並列処理のみが許可される場合、単一セクタ書き込みの発生毎に単一カウンタを増分し、4セクタ書き込みの発生毎に減分することができる。特定のしきい値に達したときに、領域のデータ構成が切り換えられる。
【0072】
ブロックアクセスモード情報を記憶する別の方法は、ブロック用モードビットをシステムエリアに記憶されたマッピングセクタに記憶することである。アクセス統計データもシステムエリアに記憶することができる。
【0073】
図10に、ホストによる以下の一連の書き込み動作後のブロックの各セクタ内のカウントフィールドの一例を示す。
(1) セクタ0をはじめとして16セクタのホスト書き込み
(2) セクタ16をはじめとして8セクタのホスト書き込み
(3) セクタ24のホスト書き込み(1セクタのみ)
(4) セクタ25のホスト書き込み
(5) セクタ26のホスト書き込み
(6) セクタ27のホスト書き込み
(7) セクタ28のホスト書き込み
(8) セクタ29のホスト書き込み
(9) セクタ30のホスト書き込み、および
(10)セクタ31のホスト書き込み
【0074】
これも示すのは、1単位(1405)および4単位(1408)の並列処理度のみが可能であると仮定して収集した統計データである。単一セクタ書き込みによって行うことができる8つの書き込み(1405)がある。この統計データは、セクタ24〜セクタ31への書き込みから収集された。4単位書き込みによって行うことができる6つの書き込み(1408)がある。より具体的には、4つの4セクタ書き込みに分割することができる1つの16セクタ書き込み、および2つの4セクタ書き込みに分割することができる1つの8セクタ書き込みがあった。
【0075】
収集された統計データに基づいて、1単位マッピングまたは4単位マッピング用にフォーマットし直すことができる。例えば、いつ1つのマッピングから別のマッピングへ切り換えるかに関する基準は、(x4のような)あるカウントが別のカウント(x1)を越える時に基づくことができる。他の基準を用いてもよい。
【0076】
x1およびx4に関する統計データ収集の一例も示す。しかし、他の実施形態では、統計データは、x5、x8、およびx16などの他の可能な並列処理度に対する追跡記録を行うことができる。
【0077】
図11に異なる種類のセクタマッピング構想の例を示す。各ブロックに対して用いられるアクセス方法に関する知識、また一実施形態では、各ブロックにおけるユーザデータの位置は、各ブロックのIDが入手されたときに読まれて、変換テーブルが初期化される。アクセスモードビットはヘッダから読み出され、ブロックのアクセス方式を示すために変換テーブルに書き込まれる。ブロックは、プレーンからプレーンへと連続している必要はない。
【0078】
図11に、並列ブロックセクタナンバリングスキーム、1単位ブロックセクタナンバリングスキーム、すなわち順次ブロックセクタナンバリングスキーム、および一部が1単位アクセスで他の部分が1単位より大きい並列セクタナンバリングスキームの例を示す。一部が1単位アクセスで他の部分が1単位より大きい並列セクタナンバリングスキームは、混合モードスキームと呼ぶことができる。これらは、並列アクセス方式、順次(1単位)アクセス方式、および混合モードアクセス方式で、それぞれ用いられる。
【0079】
図12に、4X対1Xのマッピング変換の一例を示す。これは、4Xマッピングから1Xマッピングへの変換である。通常動作時、フラッシュメモリは一般に、最初は並列モード(1単位アクセスより大きい)であることを意味する最高性能で動作するようにセットアップされる。一般に、更新ブロックの割り当ての機会をトリガとして使用し、メタブロックを1つのフォーマットから別のフォーマットに変換すべきかどうかが決定される。1ブロックにおける単一セクタ書き込みの数がしきい値(ユーザが定義しても、システムの設計者が定義してもよい)を越えると、アクセス方式は、1単位方式に変換される。これには、全セクタが新たなブロックのそれらの適切な位置に書き込まれ、それらのアクセスビットがしかるべく設定されることが必要となる。
【0080】
図13に、順次マッピングから並列マッピングへの変換の一例を示す。先の場合とは逆に、1つのブロック内のセクタが単一セクタアクセスからマルチセクタアクセスへ移行する場合、アクセス方式が並列アクセスに合わせて変換され、セクタがしかるべく新たなブロックへ再書き込みされ、各セクタ内のアクセスモードビットが調整される。第1の並列処理度のマッピングから第2の並列処理度のマッピングへの変更は、同様の方法で実行される。例えば、マッピングは、2Xから4Xへ、または4Xから8Xへ変換することができ、逆の場合も同様となる。図13における第1の並列処理度は、1Xマッピングである。これは、1Xマッピングから4Xマッピングへの変換である。
【0081】
すでにデータが書き込まれているセクタへホストからデータの書き込みが行われているときには、このシステムは通常、1つのフォーマットから別のフォーマットへの変更を新たなブロックの割り当てと結び付けることに留意されたい。新たなメタブロックまたはサブメタブロックは、ホストが所与の領域にデータを再書き込みする際に割り当てられる。このようなときに、当初の領域に存在するデータの一部を新たに割り当てられた領域にコピーすることができる。ときには、それは、後のデータの整理統合時にコピーされる。いずれにしてもこのシステムは、全体として、新たな領域を論理ブロックに対して割り当てるイベントをうまく利用してフォーマットを遷移させる。このようなときに、その領域に関する使用ログをリセットすることができる。
【0082】
コントローラは、必要に応じて、各アクセスモード間で切り換えを行う能力を有する。コントローラは、ホストの使用率に基づいて、いずれのモードを使用すべきかを決定することができる。ある数の単一セクタアクセスが発生した場合、これによって並列アクセスモードから順次アクセスモードへの変換をトリガすることができる。
【0083】
さらに、混合モードブロックアクセスも可能である。同一のメモリ集積回路内に、一部のデータは順次アクセス向けに記憶することができ、他のデータは並列アクセス向けに記憶することができる。さらに、同一のフラッシュカードシステム内で、1つのメモリ集積回路が順次アクセス用に記憶されたデータを有することができ、それと同時に、別のメモリ集積回路上に記憶された他のデータが並列アクセス向けに記憶される。
【0084】
結論
本発明の種々の態様を例示的な実施形態に関して説明してきたが、本発明は添付の特許請求の範囲の全範囲内でその権利が保護されるべきことが理解できよう。
【図面の簡単な説明】
【0085】
【図1】不揮発性メモリシステムおよびホストシステムと一体となったその使用法を全体として示す。
【図2】図1のメモリシステムの例示的な構造を示す。
【図3】図1および図2のメモリシステムのメモリセルアレイの特定の構成を示す。
【図4】図7のメモリセルアレイの第1の例示的なブロックの連なりを示す。
【図5】図7のメモリセルアレイの第2の例示的なブロックの連なりを示す。
【図6】論理ブロックアドレスを図7のメモリセルアレイの物理ブロックへマッピングする方法の一例を示す。
【図7】論理ブロックアドレスを図7のメモリセルアレイの物理ブロックへマッピングする方法の別の例を示す。
【図8】図7のメモリセルアレイ内のデータの修正の第1の例を示す。
【図9】図7のメモリセルアレイ内のデータの修正の第2の例を示す。
【図10】ホストによる書き込み動作を追跡記録するための各データセクタ内のカウントフィールドの一例を示す。
【図11】データセクタを構成するさまざまな方法の例を示す。
【図12】第1の順序から第2の順序へのメモリセルアレイブロックの変換の一例を示す。
【図13】第2の順序から第1の順序へのメモリセルアレイブロックの変換の一例を示す。
【技術分野】
【0001】
本発明は、不揮発性フラッシュメモリの動作に関し、より具体的には、大容量メモリセルブロックの管理に関する。
【背景技術】
【0002】
今日、商業的に成功している不揮発性メモリ製品、特に小形形状のファクタカード形式のメモリ製品が数多く使用され、それらには、1つまたはそれ以上の集積回路チップ上に形成されたフラッシュEEPROM(電気的に消去可能でプログラム可能な読み出し専用メモリ)セルのアレイが用いられている。必ずしもそうであるとは限らないが、通常は別個の集積回路チップ上に位置するメモリコントローラが、カードの接続されているホストと連動し、カード内部のメモリアレイの動作を制御する。このようなコントローラは一般に、マイクロプロセッサと、ある種の不揮発性読み出し専用メモリ(ROM)と、揮発性ランダムアクセスメモリ(RAM)と、データのプログラミングおよび読み出し中にデータがコントローラを通過する際にデータから誤り訂正符号(ECC)を計算する回路のような1つまたはそれ以上の特殊回路とを含む。幾種類かの市販カードには、コンパクトフラッシュ(登録商標)(CF)カード、マルチメディアカード(MMC)、セキュアデジタル(SD)カード、スマートメディアカード、個人タグ(P−Tag)、およびメモリスティックカードがある。この種類のメモリシステムは、メモリカードの実装以外に、さまざまな種類のホストシステム内に代替的に組み込むことができる。
【0003】
NORおよびNANDの2種類の汎用メモリセルアレイ構造には、商業上の応用が見出されている。典型的なNORアレイでは、メモリセルは、列方向に延在する隣接するビットラインのソース拡散部とドレイン拡散部との間で接続され、コントロールゲートは、セルの行に沿って延在するワードラインに接続されている。メモリセルは、ソースとドレインとの間に位置するセルのチャネル領域の少なくとも一部分の上に配置された少なくとも1つの記憶素子を含む。従って、記憶素子上のプログラムされた電荷レベルによってセルの動作特性が制御され、次いでそれをアドレス指定されたメモリセルに適切な電圧を印加することによって読み出すことができる。このようなセルの例、メモリシステム内でのそれらの使用法、およびそれらを製造する方法は、米国特許第5,070,032号(特許文献1)、第5,095,344号(特許文献2)、第5,313,421号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)、第5,661,053号(特許文献6)、および第6,222,762号(特許文献7)に記載されている。
【0004】
NANDアレイは、1つまたはそれ以上の選択トランジスタと共に個々のビットラインと基準電位との間に接続された、例えば16または32などの2つより多いメモリセルの直列ストリングを用いてセルの列を形成する。ワードラインは、多数のこれらの列内のセルを横断して延びる。1つの列内の個々のセルでは、1つのストリングに流れる電流がアドレス指定されたセル内に蓄積された電荷レベルに依存するように、そのストリング内の残りのセルに強制的に通電することにより、プログラミング時に読み出しおよび検証が行われる。NAND構造のアレイの例およびメモリシステムの一部としてのそれらの動作に関する記載は、米国特許第5,570,315号(特許文献8)、第5,774,397号(特許文献9)、第6,046,935号(特許文献10)および第6,522,580号(特許文献11)に見出されている。
【0005】
前に参照した特許に論じられているように、ごく一般的には導電性のフローティングゲートである現在のフラッシュEEPROMアレイの電荷蓄積素子は一般に、導電性のドープされたポリシリコン材料から形成される。フラッシュEEPROMシステムに有益な別の種類のメモリセルは、導電性フローティングゲートの代わりに非導電性の誘電体を用いて、不揮発的な方法で電荷を蓄積する。酸化シリコン、窒化シリコン、および酸化シリコン(ONO)で形成された三層誘電体が、導電性コントロールゲートとメモリセルチャネル上方の半導体基板表面との間に挟まれている。セルには、セルチャネルから窒化物内へ電子を注入することによってプログラミングが行われ、窒化物内で電子は限定された領域内に閉じ込められて蓄積され、窒化物内に熱いホールを注入することによって消去が行われる。誘電体記憶素子を用いるいくつかの特定のセル構造およびアレイについては、2002年10月25日に出願された米国特許出願第10/280,352号(特許文献12)に記載されている。
【0006】
ほとんどすべての集積回路の用途と同じく、ある集積回路機能を実装するのに要するシリコン基板面積の縮小に対する強い要望が、フラッシュEEPROMメモリセルアレイについても存在する。所与のサイズのメモリカードおよび他の種類のパッケージの記憶容量を増大させるために、或いは容量を増大させると同時にサイズを縮小するために、シリコン基板の所与の領域に記憶することができるデジタルデータの量を増大させることが絶えず望まれている。データの記憶密度を高める1つの方法は、1メモリセルおよび/または1記憶素子当たりに1ビットより多いデータを記憶することである。これは、記憶素子の電荷レベル電圧範囲のウィンドウを2つより多い状態に分割することによって達成される。4つのこのような状態を使用することによって各セルが2ビットのデータを記憶することが可能となり、8つの状態では1記憶素子につき3ビットのデータを記憶するなどとなる。フローティングゲートを用いた多状態フラッシュEEPROM構造およびそれらの動作については、米国特許第5,043,940号(特許文献13)および第5,172,338号(特許文献14)に記載され、誘電体フローティングゲートを用いた構造については、前述した米国特許出願第10/280,352号(特許文献12)に記載されている。多状態メモリセルアレイの選択された部分は、米国特許第5,930,167号(特許文献15)および第6,456,528号(特許文献16)に記載されている方法で、種々の理由に対して2つの状態(2値)で動作することもできる。
【0007】
一般的なフラッシュEEPROMアレイのメモリセルは、一括して消去されるセル群からなる別個のブロックに分割されている。すなわち、ブロックは、消去単位、同時に消去可能な最小のセル数である。1ページより多いデータを一回の動作でプログラムするかもしくは読み出すことができるが、各ブロックは通常、プログラミングおよび読み出しの最小単位である1ページまたはそれ以上のデータを記憶する。各ページは通常、ホストシステムによってサイズが定義されている1つまたはそれ以上のセクタのデータを記憶する。例示的なセクタは、磁気ディスクドライブに関して制定された基準に従った512バイトのユーザデータを含み、それに加えて、ユーザデータおよび/またはそれらが記憶されているブロックに関する数バイトのオーバーヘッド情報を含む。メモリシステムは通常、各ブロックにおいて16、32、またはそれ以上のページで構成され、各ページは、1つまたはごく少数のホストのデータセクタを記憶する。
【0008】
ユーザデータをメモリアレイにプログラムし、かつそれからユーザデータを読み出す間の並列処理度を高めるために、アレイは通常、一般にプレーンと呼ばれるサブアレイに分割され、プレーンが、並列動作を可能にするためにそれら自体のデータレジスタおよび他の回路を含み、これによりデータの各セクタへのプログラミングまたはプレーンの各々からの読み出しを同時に行うことができる。単一の集積回路上のアレイを物理的にプレーンに分割してもよく、或いは各プレーンを1つまたはそれ以上の別個の集積回路チップから形成してもよい。このようなメモリシステムの例は、米国特許第5,798,968号(特許文献17)および第5,890,192号(特許文献18)に記載されている。
【0009】
メモリをさらに効率的に管理するために、ブロックをメタブロックとして一緒に結合することができる。すなわち、各々の論理的にアドレス指定可能なメタブロックは、各プレーンから1つの物理ブロックを含むように定義される。メタブロックの使用については、国際公開特許出願第WO02/058074号(特許文献19)に記載されている。メタブロックは、データのプログラミング先および読み出し先としての共通の論理アドレスによって識別される。同様に、メタブロックのすべてのブロックは、一括して消去される。このような大きなブロックおよび/またはメタブロックで動作するメモリシステム内のコントローラは、ホストから受け取った論理ブロックアドレス(LBA)と、メモリセルアレイ内の物理ブロック番号(PBN)およびページアドレスとの間の変換を含むいくつかの機能を実行する。この変換は、論理ブロック番号(LBN)と論理ページとの中間項の使用を含むことが多い。
【0010】
メモリシステムのコントローラは、その構造および制御ファームウェアによって、ホストによりそれに課される種々の条件下でデータのプログラミングおよび読み出しを行わせることができるのが好ましい。一例を挙げれば、音声、ビデオまたは他のストリーミングデータを高速で受信することができ、データは、メモリシステムが起動されると、リアルタイムで記憶される。別の例を挙げれば、ホストは、アレイに記憶されたファイルアロケーションテーブル(FAT)の書き込み時または更新時に行われるように、メモリシステムに1セクタのデータのプログラミングまたは読み出しを一度で行わせる。
【0011】
メタブロックに記憶されたデータは頻繁に更新され、更新の可能性は、メタブロックのデータ容量が増大するにつれて高くなる。1つのメタブロックの更新されたセクタは通常、別のメタブロックに書き込まれる。変更のないセクタも通常、データを整理統合するために、同一のプログラミング動作の一部として、当初のメタブロックから新たなメタブロックへコピーされる。あるいは、更新されたデータと一括した単一のメタブロック内への後の再整理統合まで、変更のないデータを当初のメタブロック内に残しておいてもよい。
【特許文献1】米国特許第5,070,032号
【特許文献2】米国特許第5,095,344号
【特許文献3】米国特許第5,313,421号
【特許文献4】米国特許第5,315,541号
【特許文献5】米国特許第5,343,063号
【特許文献6】米国特許第5,661,053号
【特許文献7】米国特許第6,222,762号
【特許文献8】米国特許第5,570,315号
【特許文献9】米国特許第5,774,397号
【特許文献10】米国特許第6,046,935号
【特許文献11】米国特許第6,522,580号
【特許文献12】米国特許出願第10/280,352号
【特許文献13】米国特許第5,043,940号
【特許文献14】米国特許第5,172,338号
【特許文献15】米国特許米国特許第5,930,167号
【特許文献16】米国特許第6,456,528号
【特許文献17】米国特許第5,798,968号
【特許文献18】米国特許第5,890,192号
【特許文献19】国際公開特許出願第WO02/058074号
【発明の開示】
【0012】
本発明によれば、データがプログラムされるメモリユニットのサイズは、ホストによってプログラムされているデータの特性および量に適応される。単一のプレーン内の1つまたはそれ以上のブロック内で連続してプログラムされている場合のように、特定の状況において行われるデータ整理統合の事例の増加という不利な点がメタブロックにデータを書き込むことによって提供される高度な並列処理の利点を上回る場合は、データの各セクタは、メタブロック内で論理的に一緒に結合されるよりも少ない数のブロックに書き込まれる。
【0013】
メタブロックの容量を基準としてプログラムされているデータセクタの数が、実行するだけの価値を有する高度な並列処理の利点をもたらす場合は、データの各セクタは、メタブロックの全ブロックに並列に書き込まれる。しかし、特定のデータプログラミング動作がメタブロックの記憶容量に比して少数のデータセクタしか含まず、その結果としてのデータ整理統合動作の増加により、より高度な並列処理が役立つ度合いよりも性能が損なわれる可能性の方が高い場合、メタブロックの使用によって提供される並列処理の利点は実現されない。
【0014】
本発明の特定の態様によれば、メモリコントローラは、ホストの書き込みコマンド内および/または一連の書き込みコマンド内に含まれたセクタ数に応じて、メタブロック内への高度な並列処理によるか、或いはメタブロックを構成しないより少数のブロックへの低度な並列処理により、データのいくつかのセクタを適応的にプログラムする。データは、物理ブロック内にマップされた論理ブロックに対するホストのデータプログラミングパターンに応じて、Mが4、8または別の整数であるM物理ブロックからなる1メタブロック全体にプログラムしてもよく、M/2、M/4、M/8、またはこれらに類似するもののようなより少ない数のブロックからなる1つのユニットにプログラムしてもよい。特定の種類のホストプログラミング動作では、ホストがFATテーブルなどの演算ファイルを更新するような通常の動作において行われることが多い単一のデータセクタのプログラミングは、メタブロックまたはサブメタブロックではなく、単一のブロックに向けられる。メタブロックは、一回で1セクタをプログラムするためには使用されない。メタブロックは、並列プログラミングによってメタブロックのいくつかのブロックにわたって分散されることになり、それにより1つまたは少数のデータセクタが一回でメタブロックの各ブロックに書き込まれる結果となる、論理的に連続するアドレスを有するほんの少数のセクタのプログラミング動作に使用される可能性もない。単一のブロックは、このような場合に使用されるのが好ましい。これにより、メタブロックのいくつかのブロック全部からのデータを新たなブロックに整理統合し、その後メタブロックのこのような数セクタが更新されるたびに当初のブロックを消去する必要性が回避される。このような単一ブロックに関するデータの整理統合では、単一ブロックの消去のみに終わり、その結果、メモリの耐用寿命を短縮する可能性のあるメモリのプログラミング/消去のサイクル数(磨耗)が減少する。
【0015】
本発明の別の特定の態様によれば、1つの並列処理度で記憶されたデータへのアクセスは、その方がより最適な性能特性を提供する可能性がある場合、別の並列処理度によるアクセスに変換される。例えば、メタブロックへの並列プログラミングは、メタブロックへのデータ書き込みが変更され、それによって性能が向上すると考えられる場合、単一のプレーン内の各ブロックへの順次プログラミングに変換することができる。このような変換には、メタブロックのブロックからのデータを単一のプレーン内の他のブロックへコピーするステップが含まれる。逆に、単一のプレーン内のブロックへの順次プログラミングは、当初のブロックからメタブロックへデータをコピーするステップを含め、性能を向上させるためのメタブロック内での並列プログラミングに変換することができる。
【0016】
例示的な実施例では、モードビットはフラッシュメモリアレイに記憶することができ、かつ個々のセクタのユーザデータに対応付け、セクタがメタブロック内で他と共に並列にプログラムされてきたか、或いはそうではなく単一のブロック内で他と共に論理的順序でプログラムされたかを示すことができる。モードビットは、1つのセクタのユーザデータと共に記憶してもよく、代替的に、多くのユーザデータセクタに対するオーバーヘッドデータを含む別のセクタの一部として記憶してもよい。ホストによってあるセクタのユーザデータを読み出すか、或いは再プログラムするように命令されたときにこのビットを読み出すことにより、コントローラは、適切なモードでセクタにアクセスする。初期動作時、コントローラは並列モードで機能するが、一連の1つまたは少数のセクタ書き込み動作を指示するホストのプログラミングコマンドに応答し、順次モードに変更する。次いで、コントローラは、影響を受けたデータセクタと関連するモードビットを変更し、ユーザデータを順次プログラムする。セクタのしきい値数を超過してデータのいくつかのセクタを一括してプログラムすることを指示する1つまたはそれ以上のプログラミングコマンドをホストから受信した場合、コントローラの動作を切り換えて、並列プログラミングモードに復帰させることができる。
【0017】
さらに、特定の実施例では、各メタブロックは、メモリアレイのいくつかまたはすべてのプレーンの各々からの1つのブロックで形成される。次いで、ユーザデータが、2つの主モードのうちの1つでプログラミングおよび読み出しを実行する。第1の主モードでは、いくつかの連続してアドレス指定されたデータセクタが、このメタブロックの複数のブロックにわたって並列にプログラムされる。この結果、データセクタは、個々のブロック内にランダムな順序で記憶される。それらは、メタブロックが内部に形成されたプレーン間でインタリーブされる。第2の主モードでは、データセクタは、メタブロックの個々のブロック内で順次書き込まれる。コントローラは、並列プログラミングと順次プログラミングとの間でのデータセクタの変更に応じて、プレーン横断的(第1のモード)もしくは単一プレーン内で順次に(第2のモード)物理アドレスの順序を指定しなおすこともできる。これは、ブロック間でデータを移動させるステップを含むことができる。メモリシステムは一般に、メモリシステムの性能を向上させるために、これらの2つのモードのうちの異なるモードにおいて、異なるブロックで動作する。
【0018】
本発明の追加の態様、利点および特徴は、添付図面と併せてなされる以下の本発明の例示的な実施例の説明に含まれる。本願明細書に参照されるすべての特許、特許出願、論文および他の出版物は、あらゆる目的に対してその全体が本願明細書において参照により援用されている。
【発明を実施するための最良の形態】
【0019】
図1に、本発明の種々の態様を組み込むことができるフラッシュメモリを含む、コンピュータシステムなどの電子システムを全体として示す。この電子システムのいくつかの例には、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、MP3、および他のオーディオプレーヤ、デジタルカメラ、ビデオカメラ、電子ゲーム機、無線/有線電話通信装置、応答装置、ボイスレコーダ、ネットワークルータなどが含まれる。
【0020】
図1のこの電子システムは、ランダムアクセスの主システムメモリ25、およびキーボード、モニタ、モデムなどのような少なくとも1つまたはそれ以上の入出力装置27と共にシステムバス23に接続されたプロセッサもしくはマイクロプロセッサ21を含む。一般的なコンピュータシステムバス23に接続された別の主要なコンピュータシステムの構成要素は、ある量の長期の不揮発性メモリである。DRAM(ダイナミックRAM)またはSRAM(スタティックRAM)などの揮発性メモリとは対照的に、不揮発性メモリは、その記憶状態を、デバイスから電力が除去された後においてもなおかつ保持する。一般に、このようなメモリは、メガバイト、ギガバイト、またはテラバイトのデータ記憶容量を有する磁気技術もしくは光技術を用いたディスクドライブである。このデータは、現行処理に用いるためにシステムの揮発性メモリ25に取り込まれ、かつ容易に捕捉、変更、または修正することができる。
【0021】
図1の場合、大容量記憶装置のメモリは、不揮発性のフラッシュメモリシステム29である。メモリ29は、取り外し可能なメモリカードの形状であってもよく、コンピュータシステム内にハード的に組み込んでも(埋め込んでも)よい。メモリシステム29は、コンピュータシステムバス23に接続されたコントローラ31、および1つまたは複数の集積回路チップで形成されたメモリセルアレイ33を含む。データおよび命令は、コントローラ31から、主としてライン35を介してメモリセルアレイ33に伝達される。同様に、データおよび状態信号は、メモリセルアレイ33からコントローラ31にライン37を介して伝達される。データライン35および37は、実装に応じて直列または並列とすることができる。コントローラ31とアレイ33との間の他の制御回路および状態回路は、図1には示されていない。いくつかのシステムでは、コントローラ31はコンピュータシステム内に埋め込まれ、メモリセルアレイ33は、取り外し可能なカードに実装される。
【0022】
アレイ33は、各電荷蓄積素子または各電荷蓄積領域が1ビットのデータを記憶するように動作させることができる。代替的に、アレイ33は、多状態セルまたはマルチレベルセルと呼ばれるメモリセルの各電荷蓄積素子または各電荷蓄積領域に記憶された1つよりも多いビット数のデータで動作させることができる。
【0023】
図2に、ホストインターフェイスおよびメモリ制御機能を実行する単一のコントローラ集積回路チップ121、および複数の集積回路チップ127で構成されたフラッシュメモリセルアレイを含む例示的なメモリカード構造を示す。システムコントローラおよびメモリセルアレイチップは、コントローラ121とメモリチップ127との間でコマンド、アドレス、およびデータを転送することを可能にするバス124によって接続されている。これは一般的であるが、メモリシステムのなかには専用のコントローラを持たずにホストシステムによる直接制御に依存するものもあることに留意されたい。
【0024】
1セクタにプログラムされたホストデータの各セクタの量に、記憶されたデータの妥当性を判定するために用いられる誤り検出および誤り訂正符号(ECC)が追加されることは、一般的な方法である。次いで、いくつかのこのようなシステムは、データが破損されていないことを保証する1つの方法としてECCを用いることによって読み出されているデータの妥当性をチェックする。ユーザデータのセクタは、ECCおよびヘッダ形式の他のオーバーヘッドデータと共に記憶することもできる。
【0025】
メモリアレイにアクセスして順次にアドレス指定されたデータのプログラミングまたは読み出しを実行するステップの1つの特性は、「並列処理度」である。すなわち、メモリシステムの性能、すなわちアレイを往復してデータを転送する速度を向上させるために、実行可能な限り多くのデータを並列にプログラムし、かつ読み出すことが通常好ましい。用語「並列処理度」は、本願明細書では、並列にプログラミングまたは読み出しを実行することができるメモリのページ数を指す。1単位モードでは、単一のページのみが一度にアクセスされる。4単位モードでは、複数の連続してアドレス指定されたホストセクタには、一度に最大4ページアクセスされる。いくつかのホストデータアクセスパターンの下で性能および耐久性を向上させるためには、より高い並列処理度を可能にするためのマッピングを構成する必要がある一方で、他のホストデータアクセスパターンの下では、より低い並列処理度に対するマッピングを構成する必要がある。ホストがメモリシステムの異なる部分のデータに異なるパターンでアクセスする可能性があり、メモリシステムの異なる部分に対して異なるようにマッピングを構成することが必要となる。記憶装置の特定のアドレス範囲に記憶されたデータのホストデータアクセスパターンが経時変化する可能性もあり、特定のアドレス範囲のマッピング構成を経時変更することが必要となる。あり得る種々のホストの使用パターンを受けてメモリ利用を最適化するメモリ管理に対する全体的な必要性がある。
【0026】
図3に、図1および図2のメモリセルアレイの一例を示す。この例では、アレイは、2つの集積回路デバイス、フラッシュ0およびフラッシュ1を含む。もちろん、メモリシステムの所望の記憶容量に応じて1つまたは3つより多いデバイスを用いることができる。各デバイス内のアレイ部分は、4つのプレーン、0〜3に分割されているが、他の実施形態では、2つ、3つまたは4つより多いプレーンを用いることもできる。複数のQページ(1ページは、プログラミングおよび読み出しの最小単位である)がメモリセルの各ブロック(消去の最小単位)内に含まれ、複数のNブロックが各プレーン内に含まれる。1ページは、1つまたは複数のホストデータセクタを記憶する容量を有し、これにより各ブロックにおいて複数のQページとなる可能性があるMデータセクタを各ブロックが記憶する。各プレーンは、プレーン内のメモリブロックおよびページにアクセスするそれ自体の回路を有する。通常、1ページのみが、各プレーン内で同時に書き込みまたは読み出しを実行する。特定の実施形態では、各セクタが、512バイトのユーザデータを含む。各セクタは、フラグ、ユーザデータECC、種々のパラメータ、および他のオーバーヘッドデータ用の追加のビットまたはバイトをも含むことができる。
【0027】
プレーンの数によって可能な並列処理度が決定され、その度合いでメモリシステムを動作させることができる。並列処理度は、同時にプログラミングまたは読み出しを実行することができるページ数を表す。より高い並列処理度では、より多くのデータを同時に操作することができる。並列処理度は、1、2またはそれ以上とすることができる。高度の並列処理では、複数のプレーン内の複数のページが同時にアクセスされるように、論理アドレス−物理アドレス変換は、コントローラによって行われる。連続した論理アドレスを有するいくつかのデータのセクタは、同時にアクセスされる。このセクタ数は、各ページに記憶されたセクタ数に並列にアクセスを受けているページの数を乗じたものに等しい。並列処理度が1である場合に対しては、本願明細書において、これを1単位モードと呼ぶ。この最も低い並列処理度では、1プレーンの1ページのみが一度にアクセスされる。この場合、単一のページ内に記憶することができる連続した論理アドレスを有するいくつかのホストデータセクタは、一度にアクセスすることができる。
【0028】
コントローラは、ホストからの書き込みコマンドに指定された一連の論理アドレスを有するデータセクタの数によって、データをメモリにプログラムする際の並列処理度を決定することができる。いくつかのホストコマンドは、単一のコマンド中に、プログラム対象の多数の連続したデータセクタを指定する。コントローラは、より量の多い並列処理でメモリにデータを書き込むことによって、この種類のコマンドに応答し、その一例を図4に示す。他のホストコマンドは、1つのみまたはごく少数の連続した論理アドレスを有するデータセクタを書き込むように指定し、このコマンドは、最低限の並列処理度で実行され、その一例を図5に示す。
【0029】
説明された特定のメモリの実施例では、最高度の並列処理度に対して、各プレーンに1つずつ、多数のデータセクタを多数の物理ページに同時にプログラムすることができる。これにより、より高度なデータ書き込み性能が可能となる。詳細に述べると、4プレーンに対して、最大4ページを同時に書き込むことができ、これによりデータを一度に1セクタしか書き込むことができないメモリより最大で約4倍の速度でメモリが動作する。その量のデータをプログラムするのに要する別々のプログラミング動作数は有意に減少する。さらに別の例を挙げれば、8プレーンを有するメモリに対して、最高並列処理度でのこのメモリのプログラミングは、データを一度に1ページしかプログラムすることができないメモリより最大で約8倍速い。
【0030】
マルチプレーンメモリ構成では、各プレーンからの1ブロックを論理的にまとめてメタブロックを形成することができる。ページを示す線を含む図3の8ブロックの組み合わせは、メタブロックの一例である。メタブロックは、ある範囲の連続したホストアドレス内のデータセクタを含むブロックの論理的グループ化である。サブメタブロックは、セットまたは単位として管理されるメタブロック内のブロックのサブセットである。データ管理の目的でいったんメタブロックがサブメタブロックに区分化されると、各サブメタブロックは、その中のデータがメタブロックの他の部分から独立してそれらだけで整理統合されるという点で、実質的に並列処理が少ないメタブロックと同様に管理される。例えば、図3では、このデバイスの各々のデバイス上の4ブロックが、メタブロックを両方のデバイスにわたって拡張せずにメタブロックまたはサブメタブロックを形成することができる。
【0031】
以下の説明では、以下の専門用語を用いる。(1)当初のブロックは、いくつかの当初のデータセットを含むメタブロックまたはサブメタブロックとする。(2)更新ブロックは、当初のブロックからのいくつかのデータ、または当初のブロックからコピーされたいくつかのデータ、もしくはその両方の更新版を含むメタブロックまたはサブメタブロックとする。(3)論理ブロックまたは論理サブメタブロックは、ブロックの物理位置に関係なく、またはデータが単一の位置に含まれているか、或いは当初のブロックおよび更新ブロックに含まれているかに関係なく、物理メタブロックまたは物理サブメタブロックにマップされたホスト論理セクタのセットとする。
【0032】
論理メタブロックは、任意の所与の時刻にメタブロックを形成するブロックの物理セットと、任意の所与の時刻にデータが中に存在する物理ブロックを無視して、ある範囲のデータを含むようにホストによって管理される論理構成体との間に位置する中間単位である。さらに、メタブロックは、いくつかのメモリ回路チップにわたってマップすることができ、これにより1つの回路チップ上のメモリセルアレイがNプレーンを含む場合、2つのチップにわたる場合には、メタブロックは最大2Nのブロックを含み、より多くのチップにわたってマップされる場合、より多くのブロックを含む。
【0033】
所与の論理ブロックアドレス(LBA)を有するデータは、物理ブロック番号(PBN)で識別されたプレーン内の特定の物理メモリブロック内へ、コントローラによってマップされる。メタブロックを構成しているブロックのPBNは、同一である必要はない。図6に、数ブロックで形成されたメタブロックの一例を示し、この数ブロックは、それらのプレーンの各々の中で異なる物理位置を有する。さらに、メタブロックまたはメタブロックの各部分を構成しているブロックがメモリシステムの動作中に変更される際に、各プレーンは固定されたままである必要はなく、各プレーン内で互いに関係なく再配置することができる。
【0034】
あるセクタが新たなデータで更新される際に、所与のセクタと関連するブロックは、プレーン内の新たなブロックにコピーされる。このブロックは、プレーン内のどこにでも配置することができる。図7に、ある他の任意の物理ブロックへ移動中のサブメタブロックに関する1つの例を示す。
【0035】
最高度の並列処理のために構成されたメタブロックは、連続する論理アドレスを有する多数のデータセクタにアクセスするホストコマンドに最適である。1ホスト読み出しコマンドまたは1ホスト書き込みコマンド当たりのセクタ数が並列にアクセスすることができるセクタ数を越える場合、高レベルの性能が達成される。漸進的に数が増大するセクタコマンド上で一度に動作するインクリメンタルゲインがホストコマンドについて達成される。というのは、これによって個々のコマンドを発行するステップに関連する1セクタ当たりの処理のオーバーヘッド量が減少するからである。
【0036】
部分的に更新されたメタブロック内のデータを整理統合することが必要となるため、メタブロックでメモリを動作させる欠点は、ホストが1プレーンについて1セクタのみ書き込み、次いでアレイ内の他の箇所で書き込む場合に明らかとなる。この整理統合は、更新されたデータがプログラムされた新たなメタブロックへの当初のメタブロックからの変化していない全データセクタのコピー、およびその後の当初のメタブロック内の全ブロックの消去を必要とする。8プレーン、1ブロック当たり64ページ、および各ページに記憶された1データセクタを有するメモリアレイの場合、504セクタのコピーおよび8ブロックの消去が必要となる。逆に、新たなデータセクタが1の並列処理度で動作する1つのサブメタブロックに書き込まれた場合、整理統合には56セクタのコピーおよび単一のブロック消去が必要となり、少数のデータセクタを更新することによって生じるオーバーヘッドが大幅に減少する。
【0037】
データの整理統合および移動に関連する消去はメモリを摩耗させるので、短い、不連続の書き込みは、メモリ磨耗を加速することになる。各メモリブロックは、適切に動作しなくなる前にそれが耐えることのできる有限数の消去/プログラミングサイクルを有する。サイクルの最大数は、いくつかある要因の中でも特に、メモリアレイの構造およびメモリの記憶状態を保持しなければならない精度に依存する。この数値は、10,0000サイクルの低さとすることもでき、100,000サイクルまたはそれ以上のように極めて大きくすることもできるが、メモリシステム内の全ブロックの動作可能性を保持することが重要である。磨耗を最小化するには、ブロック消去を最小限度に抑えるのが好ましい。
【0038】
以下は、メタブロック、サブメタブロック、またはいずれか一方の一部分が再配置されるか/もしくはデータが整理統合される種々のシナリオである。
(1)ホストがブロック内の1つまたはそれ以上のデータセクタを書き換える場合。このようなとき、このシステムは、消去されたブロックを更新用ブロックとして割り当て、書き換えられたデータは、更新用ブロックに書き込まれる。当初のブロック内の変化していないデータの一部または全部も更新用ブロックにコピーされ、その後同一の論理アドレスでのデータ要求の受信に応じて新たなブロックをアドレス指定するために、このシステム内に保持された論理アドレス−物理アドレス変換が更新される。ホストによるデータコピーまたはデータ書き換えによる更新用ブロックへのプログラミングが当初のブロックに記憶された全データに取って代わると、その後当初のブロックが消去される。
(2)特に当初のブロックが存在するプレーンにおいて、更新用ブロックとして割り当るために消去されたブロックが必要であるが、事前消去されたブロックが使用できない場合、2つまたはそれ以上の他のブロック内のデータが1つまたはそれ以上の他のブロックに整理統合される。次いで、それらの全データが移動された1つまたはそれ以上のブロックが消去され、現行プログラミング動作の更新用ブロックとして用いるのに使用可能となる。
(3)一実施形態では、更新用ブロックとするために必要な1つまたは複数のプレーン内のメタブロックの部分のみを整理統合することができる。残りのプレーン内のメタブロックの各ブロックは、残りのプレーン内の更新用ブロックが必要となった際に、要求に応じて後に整理統合することができる。
(4)さらに別の代替的な実施形態では、いくつかのプレーンでは整理統合が完了しているが、他はそうではないメタブロックは、ホストによって書き込みが行われ、かつ整理統合されたプレーン内の消去されたブロックを要求する。なんらかの所与のメタブロックのデータを完全に整理統合する(ガーベッジコレクションを行う)必要はなく、代わりに、要求に応じたブロックの整理統合および割り当てを可能にするために、各プレーン内のブロックが独立して管理される。この方法で、所与のメタブロックの他の部分から独立して、サブメタブロックをシステムの動作時に新たな物理アドレスに移動させることができる。
【0039】
データを記憶する際は、高速動作を可能にする方法でデータセクタを物理ブロック内にマップすることにより、コントローラは、メモリ内への書き込みをさらに構成することができる。図4に、アクセスにおいて最大並列度、この例では4X並列インタリービングを可能にする方法でのプレーン0〜プレーン3にわたるメモリのインタリービングを示す。並列インタリービングとは、順次にアドレス指定されたホストセクタがプレーン間にインタリーブされるように、すなわち複数の順次にアドレス指定されたデータセクタが異なるプレーンのページ内で並列に同時にプログラムされるように、メモリがフォーマットされていることを指す。データは、別のメタブロックを形成する次の一連のブロックにデータが書き込まれる前に、1つのメタブロックを構成している各プレーンの1ブロックに同時にプログラムされる。1データセクタのみが各ブロックの個々のページに記憶された図4の例を想定すると、コントローラは、第1のセクタ、セクタ0をプレーン0内の1つのブロックに、第2のセクタ、セクタ1をプレーン1内の1つのブロックに、第3のセクタ、セクタ2をプレーン2内の1つのブロックに、第4のセクタ、セクタ3をプレーン3内の1つのブロックに書き込む。このメモリ構成は、並列マッピングと呼ぶことができる。この場合、これは、「4単位」インタリービングまたは「x4」インタリービングもしくは「4X」インタリービングとなる。このフォーマットへのデータの書き込みを構成すれば、これにより、4つの異なるプレーンの4つのセクタが一度にプログラムされるので、連続してアドレス指定されたホストからの入力データ、通常はビットストリームを、高速の方法で書き込むことができる。
【0040】
特定の実施例では、入力データは、レジスタとすることができる、各プレーンと関連するバッファによって逐次受信され、データは、コントローラがメモリをインタリーブした方法に従って、1つまたは複数のレジスタから不揮発性メモリセルに並列に書き込まれる。メモリセルの特定のインタリービングは、メモリをそれに応じてフォーマットすることによって得ることができる。データは、それが書き込まれたものと同一のインタリービングフォーマットに従ってメモリから取り出すことができる。
【0041】
他の度合いの並列インタリービングを含み、多くの異なるメモリをマップする方法がある。その度合いの並列インタリービングよりも多いプレーンがあるかもしれない。例えば、4つのプレーンがあったとしても、特定のプログラミング動作に対する並列インタリービングでは、2つのプレーンに同時にアクセスすることができるだけかもしれない。これは、「2単位」インタリービングまたは「x2」インタリービングもしくは「2X」インタリービングと呼ぶことができる。メモリは、「3単位」インタリービングまたは「x3」インタリービングもしくは「3X」インタリービングで動作することもできる。
【0042】
図5に、メモリの1単位インタリービングを示す。並列処理度は1である。アクセスが一度に1つのプレーン内の単一のページ毎となるので、これは、非並列処理と呼ばれることもある。図5では、セクタは、1ブロックの全ページが一杯になるまで、そのブロックに順次書き込まれ、その後、書き込みは、別のブロックへ進む。これは、「1単位」インタリービングまたは「x1」インタリービングと呼ぶことができる。
【0043】
タイミングの例は、図4と図5のインタリービング間の性能の差を示す。図5に従って4つの連続セクタに書き込むと、単一のプレーンの1データレジスタは順次4回充填され、書き込みは順次4回実行される。レジスタロードに25マイクロ秒かかり、書き込みに1ミリ秒かかれば、総使用時間は、4*25マイクロ秒+4*1000マイクロ秒=4100マイクロ秒となる。しかし、図4の並列書き込みでは、4セクタ書き込みには依然として4回の順次データレジスタロードが含まれるが、書き込み動作は1回のみとなる。総使用時間は、4*25マイクロ秒+1000マイクロ秒=1100マイクロ秒となる。この4X並列マッピングは、1Xマッピングを3.7倍上回る性能向上をもたらす。異なるメモリは異なるタイミング特性を有するので、これらの特定の数値は、比較例を提供するためにのみ使用されている。
【0044】
データセクタに記憶された方法をコントローラに認識させるために、1つまたは複数のインタリービングインジケータビットがコントローラもしくはメモリに記憶されていてもよい。この1つまたは複数のインタリービングインジケータビットを用いて、コントローラは、更新データを記憶する順番もしくはデータを読み出す順番を決定することができる。例えば、メモリ上の各セクタは、セクタが記憶された方法を示すために含まれた1つまたはそれ以上のインジケータビットを有することができる。4プレーンメモリに対して、可能なメモリインタリーブ構成が7通りある。これらのインタリービングインジケータビットは、ユーザデータビットおよびECCなどの他のオーバーヘッドビットに追加されるビットである。インジケータビットは、代替的に、ヘッダではなくテーブルに別個に記憶してもよい。
【0045】
単一のメモリアレイは通常、異なるインタリービングでアクセスされるブロックを有する。例えば、同一のメモリが、1単位(図5)で記憶されたデータおよび4単位(図4)で記憶された他のデータを有することができる。セクタインタリービングインジケータビットは、セクタを1つまたはそれ以上のブロックに記憶するのに用いられるインタリービングの方法を示す。例えば、1単位インタリービングを用いて第1のデータファイルをメモリに記憶することができ、第1のサブメタブロックに記憶されたセクタに対するインジケータビットがこれを示す。2単位インタリービングを用いることによって、サブメタブロックに第2のデータファイルを記憶することができ、そのように記憶されたセクタに対するインジケータビットがこれを示す。同じ方法で3単位インタリービングを用いることによって、サブメタブロックに第3のデータファイルを記憶することができる。単一のメモリアレイでは、種々のメモリセルブロックを、これらの方法のうちのいくつかで構成することができる。
【0046】
コントローラは、ホストのプログラミングコマンドの性質から、データを導く方法を決定する。例えば、ホストがFATファイルシステム(MS−DOSファイルフォーマット)を更新している場合、各データ書き込みコマンドは通常、単一のセクタを指定することになる。すなわち、各ホスト書き込みコマンドに応答して、1つのセクタのみがフラッシュメモリにプログラムされる。この場合、データは、メタブロックにではなく、メモリの単一のブロックに、1単位動作によって順次記憶することができる。大容量のファイルがプログラムされる別の種類のデータプログラミング動作では、ホスト書き込みコマンドは、少なくとも1つのメタブロックのかなりの部分または全部を占有する可能性のある極めて多数のデータセクタを論理アドレス順に書き込むように指定する。コントローラは、ホストの活動に応答し、並列処理度をデータ書き込みの性質に合わせる。
【0047】
論理アドレスを物理アドレスへマップする方法を決定するにあたって個々のデータ書き込みコマンドに応答することに加え、コントローラは、ホスト書き込みコマンドのパターンを監視することができる。この監視は、特定の1ブロックまたは複数ブロックがホストによってアクセスされた回数のカウント値を保持するステップを含むことができる。この情報は、それらのブロックに、或いは別個の物理ブロックに記憶されたデータセクタにオーバーヘッドデータとして記憶することができる。記憶された1つまたは複数の数値の分析には、しきい値の数値と比較するステップ、もしくは2つまたはそれ以上のアクセス利用パターンの頻度差をしきい値の数値と比較するステップを含むことができる。この情報は、例えば、データが頻繁に書き換えられるメタブロックを特定するのに有益であり、この場合、コントローラは、同一の論理アドレスを有するその後の書き込みをむしろ単一のブロックにマップするように決定することができる。これにより、データ更新の結果として整理統合しなければならないデータの量が減少する。
【0048】
コントローラによって監視および記憶することができる別のプログラミング特性は、ホストが命令した書き込みにより1つまたはそれ以上のページもしくはブロックに書き込みが実行された回数対コントローラによって開始されたデータ整理統合(ガーベッジコレクション)の回数の値である。さらに別のプログラミング特性は、ブロックまたはメタブロックが繰り返し部分的にアクセスされると、このようなブロックにデータを書き込む場合の並列度を下げるのが望ましいことを信号で伝えることができるので、1つのブロックまたはメタブロックの全ページがデータ書き込みのためにアクセスされた回数よりも少ない回数の値である。さらに、個々のホストプログラミングコマンドによって書き込みが実行されたセクタ数の統計値を保持し、物理アドレスへの論理アドレスのマッピングを決定する際に使用することができる。例えば、一度に書き込むようにホスト書き込みコマンドによって指定されるデータセクタが主として1セクタであるのか、或いは4セクタまたはそれ以上であるのかは、極めて有益となりうる。
【0049】
図4および図5の説明図は、この概念を説明する目的で2つのうちの1つのインタリービング手法で動作される集積回路デバイスのほぼ全体を示しているが、これは通常、メモリを使用する効率的な方法ではない。各デバイスは通常、そのブロックの一部分は並列アクセス(図4による)用のメタブロックを形成するのに用いられ、そのブロックの他の部分は一度に1ブロック(図5による)アクセスされている状態で動作される。
【0050】
複数のプレーンにわたってセクタアドレスがインタリーブされる方法にはいくつかの利点および不利な点がある。より高度な並列インタリービングの利点は、順次にアドレス指定されたセクタを並列にメモリに書き込むことができる点である。より低度な並列マッピングまたは順次マッピングの利点は、部分的なブロック更新に応答してコピーを要するデータが少ない点、および特に少数のデータセクタが書き換えられる際にガーベッジコレクションを行う必要のあるブロック数が少ない点である。メタブロックに記憶されたデータの一部が書き換えられる際に、当初のブロックに存在する書き換えられなかったデータが新たなブロックにコピーされ、それが新たなデータと共に記憶される。並列マッピングを用いてデータが記憶された場合、データが異なる複数のプレーンにわたって拡がるために、メタブロック全体を書き換えることが必要となる。しかし、データが順次マッピングを用いてサブメタブロックに記憶されていた場合、サブメタブロック内のデータのみが、ガーベッジコレクションを行う必要がある。書き換え対象のデータは、書き換えられていないあらゆるデータと共に新たなブロックに書き込まれ、新たなブロックが、そのメタブロックの他のブロックと連結される。これにより、行う必要のあるコピー、書き込み、書き換え、およびガーベッジコレクションの量が最小化される。
【0051】
一般に、フラッシュメモリセルは、それらの信頼性が許容できないレベルまで潜在的に低下する以前での有限数の消去/書き込みサイクル(例えば、10,000サイクルと100,000サイクルの間のいずれか)を有する。従って、書き換えおよび書き込みの量を最小化することにより、これがメモリの寿命を増大させる。ガーベッジコレクションには時間がかかるため、ガーベッジコレクションの量を減らすことも性能を向上させる。
【0052】
以下の実施例は、フラッシュメモリを用いた本発明の特定の実施形態である。しかし、フラッシュメモリは、単に一例として用いられ、本発明は、他のメモリ技術にも用いることができる。特定の実施形態において、本発明は、多数のセクタ「ブロック」を含むフラッシュメモリ素子を含む記憶装置を扱う。ブロックは、1消去動作によって消去されるメモリの単位として定義される。言い換えれば、ブロックは、消去の単位である。本発明は、具体的に、それらのブロックのマッピングおよびアクセスに用いられる機構に取り組む。
【0053】
ホストデバイスがフラッシュメモリカードにアクセスする際に、いくつかの特有の使用パターンがある。FATファイルシステムは、(1)FAT領域およびディレクトリ領域における単一セクタと、(2)記憶装置のユーザデータ領域におけるマルチセクタとの2つの相異なるパターンに至る。ボリューム内に断片化があれば、特定の用途に対しては、使用は、その後、順次的ではなく「ランダム」となる。
【0054】
ホストは、種々のホスト使用パターンによってフラッシュメモリにアクセスすることができる。1つの使用パターンは単一セクタモードであり、このモードでは、セクタは一度に1つずつアクセスされる。他の使用パターンはマルチセクタモードであり、この場合、記憶システムは、各フラッシュデバイス内の多数のプレーンにわたり、1プレーンにつき1セクタずつ同時にアクセスする。
【0055】
本発明は、不揮発性メモリのホスト使用パターン間の並列処理度および不揮発性メモリが構成またはフォーマットされている方法に適合する。並列処理度は、1単位(順次とも呼ばれる)、2単位、3単位、4単位などとすることができる。1単位方式、すなわち順次アクセス方式では、次のブロックへ進む前に、1つのブロック内の各セクタがアドレス指定され、そのアクセスは、一度に1セクタに限定される。並列アクセス方式(1単位アクセスより大きい)では、いくつかの順次的動作、すなわち1単位動作ではなく、1動作において各プレーンからのセクタがアドレス指定される。並列動作によって、処理能力を高めることによるより高い性能が可能となる。これらの2つの方式は、性能および磨耗に関して利点と不利な点とを有する。
【0056】
本発明は、ホストアクセスを監視し、データをメモリに記憶する方法を切り換えて、いずれかのアクセスモードのメモリ磨耗特性および性能特性をうまくとらえて利用する。
【0057】
マッピング情報を保持する種々の方式があり、開始LBAのテーブルは、1つの例である。メモリ内に保持されたテーブルは、開始LBAを各物理メモリブロックに対して配置するために用いられる。
【0058】
セクタマッピングおよびブロック管理を伴うブロックマッピングの適応的並列処理は、新たなデータで上書きされているセクタを含むブロック上でコピー動作または消去動作、もしくは両方を行うだけで、フラッシュメモリに対して最適な書き込み/消去摩耗性能を提供する。
【0059】
データセクタが単一セクタ並列処理用にマッピングされている領域へのアクセスは、所与の論理ブロック内の順次的アドレス順序づけを保持するために、順次にアドレス指定されたセクタに一回で1つ書き込むように限定される。並列アクセス(1単位アクセスより大きい)では、1プレーンにつき1セクタに同時に書き込むことができ、並列に書き込まれるプレーンの数に等しい係数により、性能が向上する。例えば、4プレーンを有するデバイスは、単一セクタ書き込みより約4倍速くデータを書き込むことができる。8プレーンを有するデバイスは、単一セクタ書き込みより約8倍速くデータを書き込むことができる。16プレーンを有するデバイスは、単一セクタ書き込みより約16倍速くデータを書き込むことができる。
【0060】
図8に、順次マッピングを用いた場合のデータの修正を示す。4つの連続したセクタを上書きするには、新データを新たなブロックに書き込んで旧データを新たなブロックにコピーし、旧ブロックを消去する必要がある。1回の消去のみ実行する必要があることになる。コピー処理では消去済みセクタはコピーされない。
【0061】
図9に、並列マッピングを用いた場合のデータの修正を示す。4つの連続したセクタを上書きするには、4つの新たなブロックを見つけ出し、旧データと新データを新たなブロックにコピーし、4つの旧ブロックを消去する必要がある。4回の消去を行う必要がある。ランダムまたは単一のセクタアクセスの下で行われるかもしれない場合、ホスト書き込み数に対して多くのデータ整理統合動作が必要となれば、チップの寿命が消去数の増加によって影響を受けることになる。
【0062】
各セクタは一般に、ユーザデータ、ECCデータ、およびオーバーヘッドデータを含む。オーバーヘッド情報には、データ管理に必要なセクタID、物理アドレス情報、および他のシステム関連情報が含まれる。本発明の一実施形態では、オーバーヘッド情報は、データマッピングの適合的態様を管理するのに必要な付加情報を含む。いくらかのビット数を、並列処理度、サブメタブロックのサイズ、セクタインタリーブ、またはデータマッピングに関する他の指示を示すために保持することができる。
【0063】
一例を挙げれば、最大メタブロックサイズが4ブロックである場合、2ビットのマッピングフィールドを用いて並列処理度を示すことができ、00bで1単位を示すことができ、01bで2単位を示すことができるなどとなる。このシナリオでは、第1のプレーン内の第1のブロックは、それがフォーマットされている並列処理度を示すマッピングフィールドを有することになり、それに基づいて、ある別の数のブロックが同一のサブメタブロックに含まれることになる。例えば、第1の値が並列処理度2を示す01bであった場合、メタブロック内の次のブロックのみが同一のサブメタブロックに入ることを示す。
【0064】
メタブロックの各ブロック内の1つのセクタ、または所与のブロック内の連続したセクタから論理アドレス情報を読み出すことによってデータマッピングを決定し、かつそれに基づいてレイアウトを決定することが可能となるので、このマッピングフィールド情報は、便宜上保持されることになる。例えば、所与のブロック内の最初の2つの物理セクタが離れた2つの論理アドレスであった場合、インターリーブファクタは2となり、従って並列処理度は2となる。データマッピング情報は、セクタのオーバーヘッド情報にではなく、別個のテーブルに記憶してもよく、またデータマッピングが所与のメタブロックまたはサブメタブロックに対して修正されるたびに更新することができる。テーブルは、メモリ素子上の予約領域内の一実施形態の不揮発性メモリに保持される。
【0065】
さらに、一実施形態では、最適なデータマッピングを決定するための後の分析のために、ホスト使用および/またはカード使用率を追跡記録する統計データが保持される。1つの統計データは、所与のホストコマンドに書き込まれたセクタ数である。この統計データが1つのメタブロックまたはサブメタブロック内の各セクタと共に記憶されれば、この統計データをグループとして分析することができ、最適な並列処理度に関しての決定を行うことができる。特定の実施形態では、この統計データは、セクタに書き込みが行われたときに、セクタのオーバーヘッドに記憶される。別の実施形態では、統計データは、一時的に揮発性メモリに記憶することができ、次いで揮発性メモリ内の別個のテーブルに転送することができる。
【0066】
統計データは、書き込まれた各セクタまたはブロックに関して、例えばテーブル内に蓄積することもでき、これによって各々の発生回数または相対的発生回数が蓄積され、あるしきい値に基づいて並列処理度が変更される。蓄積の目的で、統計データは、許可された最も近い並列処理にビンされる。例えば、1度の並列処理と4度の並列処理のみが許可された場合、3つのセクタ上で動作している書き込みコマンドは、4つセクタ上で動作しているホストコマンドと共にカウントに蓄積されることになり、4つよりも多いセクタ上でのすべての書き込みコマンドは、4つのセクタ上での動作のカウントにビンされる。最高の並列処理度を表すビンは、コマンドのセクタカウントを最大並列処理度で除算した値だけ増分される。
【0067】
一例を挙げれば、4が最大並列処理度である場合、16セクタのホスト書き込みは、4単位カウントを4だけ増分することになる。1つの領域が大部分は単一セクタホストコマンドで書き込まれた場合、最適並列処理度は1であることを示す統計データが蓄積される。同様に、1つの領域が大部分は4セクタホストコマンドで書き込まれた場合、最適並列処理度は4であることを示す統計データが蓄積される。
【0068】
別の統計データは、セクタがホスト書き込みにより書き込まれたか、あるいはデータの整理統合により書き込まれたかである。このような統計データは、例えば別個のテーブルまたは個々のセクタのオーバーヘッド内に、また2つの機構間の相対数の特定のしきい値、もしくは比率に基づいて蓄積することができ、これにより各々の発生回数または相対的発生回数が蓄積され、並列処理度が特定のしきい値に基づいて変更される。例えば、セクタが大部分はデータの整理統合により書き込まれていると判断された場合、データの整理統合活動に含まれるブロック数を最小化するためにこの領域が1単位並列処理用にフォーマットし直されれば、性能または耐久性全体を向上させることができる。
【0069】
第2の統計データを用いてしきい値に到達することによって、次いで最適並列処理度を決定するための第1の統計データの評価が引き起こされるように、2つの前述した統計データのセットを結合することができる。このような蓄積された統計データを保持するテーブルは、不揮発性メモリに保持されることになり、一実施形態では、メモリ素子上の予約領域に保持される。蓄積された統計データはセクタ毎に保持することはできず、むしろメタブロック毎、またはひとまとまりのメタブロックのようなより大きい領域に保持されることに留意されたい。
【0070】
このシステムは、空間を節約して使い続けるために、蓄積された統計データを関心のある領域のみで保持するように最適化することができる。例えば、所与の領域に対する蓄積された統計データの保持は、領域が最適にフォーマットされたセクタとは数の異なるセクタ上で動作しているコマンドが検出されたときに開始することができる。このような書き込みは、非最適書き込みコマンドと呼ばれる。
【0071】
例えば、ある領域が1単位並列処理用にフォーマットされ、領域において4セクタ書き込みが行われている場合、これにより蓄積された統計データをその領域用に格納することができる。ひとたび非最適書き込みコマンドがしきい値を超えると、このシステムは、並列処理度をその領域がフォーマットされているものに切り換える。蓄積された統計データは、1つのホストセクタカウントの発生があれば増分され、もう一つの発生があれば減分されるカウンタとして実装することができる。例えば、1単位および4単位の並列処理のみが許可される場合、単一セクタ書き込みの発生毎に単一カウンタを増分し、4セクタ書き込みの発生毎に減分することができる。特定のしきい値に達したときに、領域のデータ構成が切り換えられる。
【0072】
ブロックアクセスモード情報を記憶する別の方法は、ブロック用モードビットをシステムエリアに記憶されたマッピングセクタに記憶することである。アクセス統計データもシステムエリアに記憶することができる。
【0073】
図10に、ホストによる以下の一連の書き込み動作後のブロックの各セクタ内のカウントフィールドの一例を示す。
(1) セクタ0をはじめとして16セクタのホスト書き込み
(2) セクタ16をはじめとして8セクタのホスト書き込み
(3) セクタ24のホスト書き込み(1セクタのみ)
(4) セクタ25のホスト書き込み
(5) セクタ26のホスト書き込み
(6) セクタ27のホスト書き込み
(7) セクタ28のホスト書き込み
(8) セクタ29のホスト書き込み
(9) セクタ30のホスト書き込み、および
(10)セクタ31のホスト書き込み
【0074】
これも示すのは、1単位(1405)および4単位(1408)の並列処理度のみが可能であると仮定して収集した統計データである。単一セクタ書き込みによって行うことができる8つの書き込み(1405)がある。この統計データは、セクタ24〜セクタ31への書き込みから収集された。4単位書き込みによって行うことができる6つの書き込み(1408)がある。より具体的には、4つの4セクタ書き込みに分割することができる1つの16セクタ書き込み、および2つの4セクタ書き込みに分割することができる1つの8セクタ書き込みがあった。
【0075】
収集された統計データに基づいて、1単位マッピングまたは4単位マッピング用にフォーマットし直すことができる。例えば、いつ1つのマッピングから別のマッピングへ切り換えるかに関する基準は、(x4のような)あるカウントが別のカウント(x1)を越える時に基づくことができる。他の基準を用いてもよい。
【0076】
x1およびx4に関する統計データ収集の一例も示す。しかし、他の実施形態では、統計データは、x5、x8、およびx16などの他の可能な並列処理度に対する追跡記録を行うことができる。
【0077】
図11に異なる種類のセクタマッピング構想の例を示す。各ブロックに対して用いられるアクセス方法に関する知識、また一実施形態では、各ブロックにおけるユーザデータの位置は、各ブロックのIDが入手されたときに読まれて、変換テーブルが初期化される。アクセスモードビットはヘッダから読み出され、ブロックのアクセス方式を示すために変換テーブルに書き込まれる。ブロックは、プレーンからプレーンへと連続している必要はない。
【0078】
図11に、並列ブロックセクタナンバリングスキーム、1単位ブロックセクタナンバリングスキーム、すなわち順次ブロックセクタナンバリングスキーム、および一部が1単位アクセスで他の部分が1単位より大きい並列セクタナンバリングスキームの例を示す。一部が1単位アクセスで他の部分が1単位より大きい並列セクタナンバリングスキームは、混合モードスキームと呼ぶことができる。これらは、並列アクセス方式、順次(1単位)アクセス方式、および混合モードアクセス方式で、それぞれ用いられる。
【0079】
図12に、4X対1Xのマッピング変換の一例を示す。これは、4Xマッピングから1Xマッピングへの変換である。通常動作時、フラッシュメモリは一般に、最初は並列モード(1単位アクセスより大きい)であることを意味する最高性能で動作するようにセットアップされる。一般に、更新ブロックの割り当ての機会をトリガとして使用し、メタブロックを1つのフォーマットから別のフォーマットに変換すべきかどうかが決定される。1ブロックにおける単一セクタ書き込みの数がしきい値(ユーザが定義しても、システムの設計者が定義してもよい)を越えると、アクセス方式は、1単位方式に変換される。これには、全セクタが新たなブロックのそれらの適切な位置に書き込まれ、それらのアクセスビットがしかるべく設定されることが必要となる。
【0080】
図13に、順次マッピングから並列マッピングへの変換の一例を示す。先の場合とは逆に、1つのブロック内のセクタが単一セクタアクセスからマルチセクタアクセスへ移行する場合、アクセス方式が並列アクセスに合わせて変換され、セクタがしかるべく新たなブロックへ再書き込みされ、各セクタ内のアクセスモードビットが調整される。第1の並列処理度のマッピングから第2の並列処理度のマッピングへの変更は、同様の方法で実行される。例えば、マッピングは、2Xから4Xへ、または4Xから8Xへ変換することができ、逆の場合も同様となる。図13における第1の並列処理度は、1Xマッピングである。これは、1Xマッピングから4Xマッピングへの変換である。
【0081】
すでにデータが書き込まれているセクタへホストからデータの書き込みが行われているときには、このシステムは通常、1つのフォーマットから別のフォーマットへの変更を新たなブロックの割り当てと結び付けることに留意されたい。新たなメタブロックまたはサブメタブロックは、ホストが所与の領域にデータを再書き込みする際に割り当てられる。このようなときに、当初の領域に存在するデータの一部を新たに割り当てられた領域にコピーすることができる。ときには、それは、後のデータの整理統合時にコピーされる。いずれにしてもこのシステムは、全体として、新たな領域を論理ブロックに対して割り当てるイベントをうまく利用してフォーマットを遷移させる。このようなときに、その領域に関する使用ログをリセットすることができる。
【0082】
コントローラは、必要に応じて、各アクセスモード間で切り換えを行う能力を有する。コントローラは、ホストの使用率に基づいて、いずれのモードを使用すべきかを決定することができる。ある数の単一セクタアクセスが発生した場合、これによって並列アクセスモードから順次アクセスモードへの変換をトリガすることができる。
【0083】
さらに、混合モードブロックアクセスも可能である。同一のメモリ集積回路内に、一部のデータは順次アクセス向けに記憶することができ、他のデータは並列アクセス向けに記憶することができる。さらに、同一のフラッシュカードシステム内で、1つのメモリ集積回路が順次アクセス用に記憶されたデータを有することができ、それと同時に、別のメモリ集積回路上に記憶された他のデータが並列アクセス向けに記憶される。
【0084】
結論
本発明の種々の態様を例示的な実施形態に関して説明してきたが、本発明は添付の特許請求の範囲の全範囲内でその権利が保護されるべきことが理解できよう。
【図面の簡単な説明】
【0085】
【図1】不揮発性メモリシステムおよびホストシステムと一体となったその使用法を全体として示す。
【図2】図1のメモリシステムの例示的な構造を示す。
【図3】図1および図2のメモリシステムのメモリセルアレイの特定の構成を示す。
【図4】図7のメモリセルアレイの第1の例示的なブロックの連なりを示す。
【図5】図7のメモリセルアレイの第2の例示的なブロックの連なりを示す。
【図6】論理ブロックアドレスを図7のメモリセルアレイの物理ブロックへマッピングする方法の一例を示す。
【図7】論理ブロックアドレスを図7のメモリセルアレイの物理ブロックへマッピングする方法の別の例を示す。
【図8】図7のメモリセルアレイ内のデータの修正の第1の例を示す。
【図9】図7のメモリセルアレイ内のデータの修正の第2の例を示す。
【図10】ホストによる書き込み動作を追跡記録するための各データセクタ内のカウントフィールドの一例を示す。
【図11】データセクタを構成するさまざまな方法の例を示す。
【図12】第1の順序から第2の順序へのメモリセルアレイブロックの変換の一例を示す。
【図13】第2の順序から第1の順序へのメモリセルアレイブロックの変換の一例を示す。
【特許請求の範囲】
【請求項1】
不揮発性メモリシステムにおいて、
少なくとも2つのサブアレイに分割された不揮発性メモリセルのアレイであって、前記少なくとも2つのサブアレイの各々においてデータが同時にアクセス可能な不揮発性メモリセルのアレイと、
少なくとも第1および第2の異なるインタリーブ配列で前記少なくとも2つのサブアレイ内に記憶されたデータと、
を備える不揮発性メモリシステム。
【請求項2】
前記少なくとも2つのサブアレイの各々において同時にアクセス可能な前記データは、データのセクタを含み、前記少なくとも2つのサブアレイ内に記憶されたデータのセクタは、
前記第1のインタリーブ配列に従って前記サブアレイを跨いでインタリーブされた第1の連続した論理アドレスのセットによって識別される少なくとも第1のデータセクタのセットと、
前記第2のインタリーブ配列に従って前記少なくとも2つのサブアレイのうちの単一のサブアレイ内にインタリーブされた第2の連続した論理アドレスのセットによって識別される少なくとも第2のデータセクタのセットと、
を備える請求項1記載のメモリシステム。
【請求項3】
記憶されたデータのセクタのインタリービングの度合いを示す表示も記憶される請求項2記載のメモリシステム。
【請求項4】
前記インタリービングの度合いを示す表示は、それらが関係する前記記憶されたデータのセクタ内にオーバーヘッドとして記憶される請求項3記載のメモリシステム。
【請求項5】
前記インタリービングの度合いを示す表示は、それらが関係する前記記憶されたデータのセクタとは別のセクタに記憶される請求項3記載のメモリシステム。
【請求項6】
ブロックを個々に複数のメモリセルサブアレイに論理的にリンクする不揮発性メモリシステムを動作させる方法。
【請求項7】
複数単位のデータをプログラムするために、またデータを並列に読み出すために同時にアクセス可能な複数のメモリセルサブアレイを有する不揮発性メモリにおいて、個々のサブアレイが同時に消去可能なある最小数のメモリセルのブロックに分割され、前記メモリを動作させる方法は、
前記複数のサブアレイの各々における1ブロックの総データ記憶容量よりも小さく、かつ連続した論理アドレスを有する所定数の単位のデータを前記メモリ内へプログラムするコマンドを受信するステップと、
プログラム対象の前記所定数の単位のデータを受信するステップと、
前記サブアレイの各々における1ブロックの前記総データ記憶容量を基準としてプログラムされている前記所定数の単位のデータに合わせて前記複数のメモリセルサブアレイのうちの1つまたはそれ以上のサブアレイの複数ブロックにわたって順番に配列された連続した論理アドレスを有する前記受信された単位のデータをプログラムするステップと、
を含む方法。
【請求項8】
不揮発性メモリシステムを動作させる方法において、
少なくとも第1の並列処理度および第2の並列処理度の各々でデータを書き込みおよび読み出しを実行して前記メモリを動作させるステップと、
前記メモリシステムによって受信されたデータ書き込み要求を観察するステップと、
前記受信された書き込み要求の個々の要求に添付されたデータを、前記受信された書き込み要求の少なくとも1つの特性に応じて、前記少なくとも第1および第2の並列処理度のうちの1つで書き込むステップと、
を含む方法。
【請求項9】
前記少なくとも1つの特性は、前記メモリ内に書き込まれるべき書き込み要求と共に受信されたある量のデータを含む請求項8記載の方法。
【請求項10】
消去の単位としてブロック内に配列された不揮発性メモリセルのアレイ、その内部に配置されたデータのプログラミングおよび読み出しの単位としてのページ、および独立してアクセス可能な複数のブロックからなるプレーンを有するフラッシュメモリシステムにおける動作方法は、
複数の前記プレーンからのブロックを個々に含むメタブロックを論理的に形成するステップと、
さまざまな量のデータを有する書き込みコマンドを連続して受信するステップと、
前記ホスト書き込みコマンドのさまざまな特性に応じて、前記プレーンのうちの1つのプレーンの個々のブロック内のページに並列または順次に、あるいは前記メタブロックのうちの1つのメタブロックの2つまたはそれ以上のブロック内のページに並列に、前記受信されたデータをさまざまに書き込むステップと、
を含む方法。
【請求項11】
データが並列に書き込まれている前記ブロックを識別する表示を、前記受信されたデータと同時に書き込むステップをさらに含む請求項10記載の方法。
【請求項12】
共に消去可能でかつ複数のデータの単位を個々に記憶するセルのブロックに構成されたメモリセルのアレイを有する不揮発性メモリシステムにおいて、書き込み対象の1つまたはそれ以上の単位のデータの論理アドレスを個々に指定し、かつ連続して受信されている前記指定された1つまたはそれ以上の単位のデータが添付されている一連の書き込みコマンドに応答する方法は、
個々の書き込みコマンドの前記論理アドレスを、前記添付の1つまたはそれ以上の単位のデータを並列に書き込むことができる1つまたはそれ以上の前記ブロックのメモリセル内の物理アドレスに変換するステップであって、ある数の前記1つまたはそれ以上のブロックが、前記1つまたはそれ以上の単位のデータを受信するために、前記受信された一連の書き込みコマンドのうちの少なくとも1つによって指定されたデータの単位数の関数として選択されるステップと、
前記選択された1つまたはそれ以上の単位のデータを前記1つまたはそれ以上のブロックに並列に書き込むステップと、
を含む方法。
【請求項13】
不揮発性メモリのメモリセルのアレイを動作させる方法において、
第1および第2の異なるインタリーブ配列でデータを記憶するステップと、
前記第2のインタリーブ配列で記憶することによってより最適な性能特性がもたらされると考えられる前記第1のインタリーブ配列で記憶された前記データのうちの少なくとも一部を更新するコマンドの受信に応答して、前記第1のインタリーブ配列で記憶されたデータを読み出すステップと、
前記読み出されたデータおよび前記更新されたデータを、前記第2のインタリーブ配列で前記メモリアレイに書き込むステップと、
を含む方法。
【請求項1】
不揮発性メモリシステムにおいて、
少なくとも2つのサブアレイに分割された不揮発性メモリセルのアレイであって、前記少なくとも2つのサブアレイの各々においてデータが同時にアクセス可能な不揮発性メモリセルのアレイと、
少なくとも第1および第2の異なるインタリーブ配列で前記少なくとも2つのサブアレイ内に記憶されたデータと、
を備える不揮発性メモリシステム。
【請求項2】
前記少なくとも2つのサブアレイの各々において同時にアクセス可能な前記データは、データのセクタを含み、前記少なくとも2つのサブアレイ内に記憶されたデータのセクタは、
前記第1のインタリーブ配列に従って前記サブアレイを跨いでインタリーブされた第1の連続した論理アドレスのセットによって識別される少なくとも第1のデータセクタのセットと、
前記第2のインタリーブ配列に従って前記少なくとも2つのサブアレイのうちの単一のサブアレイ内にインタリーブされた第2の連続した論理アドレスのセットによって識別される少なくとも第2のデータセクタのセットと、
を備える請求項1記載のメモリシステム。
【請求項3】
記憶されたデータのセクタのインタリービングの度合いを示す表示も記憶される請求項2記載のメモリシステム。
【請求項4】
前記インタリービングの度合いを示す表示は、それらが関係する前記記憶されたデータのセクタ内にオーバーヘッドとして記憶される請求項3記載のメモリシステム。
【請求項5】
前記インタリービングの度合いを示す表示は、それらが関係する前記記憶されたデータのセクタとは別のセクタに記憶される請求項3記載のメモリシステム。
【請求項6】
ブロックを個々に複数のメモリセルサブアレイに論理的にリンクする不揮発性メモリシステムを動作させる方法。
【請求項7】
複数単位のデータをプログラムするために、またデータを並列に読み出すために同時にアクセス可能な複数のメモリセルサブアレイを有する不揮発性メモリにおいて、個々のサブアレイが同時に消去可能なある最小数のメモリセルのブロックに分割され、前記メモリを動作させる方法は、
前記複数のサブアレイの各々における1ブロックの総データ記憶容量よりも小さく、かつ連続した論理アドレスを有する所定数の単位のデータを前記メモリ内へプログラムするコマンドを受信するステップと、
プログラム対象の前記所定数の単位のデータを受信するステップと、
前記サブアレイの各々における1ブロックの前記総データ記憶容量を基準としてプログラムされている前記所定数の単位のデータに合わせて前記複数のメモリセルサブアレイのうちの1つまたはそれ以上のサブアレイの複数ブロックにわたって順番に配列された連続した論理アドレスを有する前記受信された単位のデータをプログラムするステップと、
を含む方法。
【請求項8】
不揮発性メモリシステムを動作させる方法において、
少なくとも第1の並列処理度および第2の並列処理度の各々でデータを書き込みおよび読み出しを実行して前記メモリを動作させるステップと、
前記メモリシステムによって受信されたデータ書き込み要求を観察するステップと、
前記受信された書き込み要求の個々の要求に添付されたデータを、前記受信された書き込み要求の少なくとも1つの特性に応じて、前記少なくとも第1および第2の並列処理度のうちの1つで書き込むステップと、
を含む方法。
【請求項9】
前記少なくとも1つの特性は、前記メモリ内に書き込まれるべき書き込み要求と共に受信されたある量のデータを含む請求項8記載の方法。
【請求項10】
消去の単位としてブロック内に配列された不揮発性メモリセルのアレイ、その内部に配置されたデータのプログラミングおよび読み出しの単位としてのページ、および独立してアクセス可能な複数のブロックからなるプレーンを有するフラッシュメモリシステムにおける動作方法は、
複数の前記プレーンからのブロックを個々に含むメタブロックを論理的に形成するステップと、
さまざまな量のデータを有する書き込みコマンドを連続して受信するステップと、
前記ホスト書き込みコマンドのさまざまな特性に応じて、前記プレーンのうちの1つのプレーンの個々のブロック内のページに並列または順次に、あるいは前記メタブロックのうちの1つのメタブロックの2つまたはそれ以上のブロック内のページに並列に、前記受信されたデータをさまざまに書き込むステップと、
を含む方法。
【請求項11】
データが並列に書き込まれている前記ブロックを識別する表示を、前記受信されたデータと同時に書き込むステップをさらに含む請求項10記載の方法。
【請求項12】
共に消去可能でかつ複数のデータの単位を個々に記憶するセルのブロックに構成されたメモリセルのアレイを有する不揮発性メモリシステムにおいて、書き込み対象の1つまたはそれ以上の単位のデータの論理アドレスを個々に指定し、かつ連続して受信されている前記指定された1つまたはそれ以上の単位のデータが添付されている一連の書き込みコマンドに応答する方法は、
個々の書き込みコマンドの前記論理アドレスを、前記添付の1つまたはそれ以上の単位のデータを並列に書き込むことができる1つまたはそれ以上の前記ブロックのメモリセル内の物理アドレスに変換するステップであって、ある数の前記1つまたはそれ以上のブロックが、前記1つまたはそれ以上の単位のデータを受信するために、前記受信された一連の書き込みコマンドのうちの少なくとも1つによって指定されたデータの単位数の関数として選択されるステップと、
前記選択された1つまたはそれ以上の単位のデータを前記1つまたはそれ以上のブロックに並列に書き込むステップと、
を含む方法。
【請求項13】
不揮発性メモリのメモリセルのアレイを動作させる方法において、
第1および第2の異なるインタリーブ配列でデータを記憶するステップと、
前記第2のインタリーブ配列で記憶することによってより最適な性能特性がもたらされると考えられる前記第1のインタリーブ配列で記憶された前記データのうちの少なくとも一部を更新するコマンドの受信に応答して、前記第1のインタリーブ配列で記憶されたデータを読み出すステップと、
前記読み出されたデータおよび前記更新されたデータを、前記第2のインタリーブ配列で前記メモリアレイに書き込むステップと、
を含む方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公表番号】特表2007−517320(P2007−517320A)
【公表日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願番号】特願2006−547247(P2006−547247)
【出願日】平成16年12月16日(2004.12.16)
【国際出願番号】PCT/US2004/042862
【国際公開番号】WO2005/066794
【国際公開日】平成17年7月21日(2005.7.21)
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
【公表日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願日】平成16年12月16日(2004.12.16)
【国際出願番号】PCT/US2004/042862
【国際公開番号】WO2005/066794
【国際公開日】平成17年7月21日(2005.7.21)
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
[ Back to top ]