フラッシュメモリシステムにおけるハウスキーピング操作のスケジューリング
【課題】ハウスキーピング操作は繰り返される消去および再プログラミングを通して累積する個々のブロックの損耗を均す。
【解決手段】メモリセルが同時に消去可能なセルのブロックをなすようにグループ分けされているフラッシュEEPROM(登録商標)システムのような再プログラム可能な不揮発性メモリシステムはホストコマンドの実行中にメモリシステムのハウスキーピング操作をフォアグラウンドで行うように操作され、そのハウスキーピング操作はホストコマンドの実行とは関連しない。1つ以上のそのようなハウスキーピング操作とホストコマンドの実行との両方が、その特定のコマンドを実行するために確立された時間割り当て内で行われる。1つのそのようなコマンドは、受信されたデータのメモリへの書き込みである。
【解決手段】メモリセルが同時に消去可能なセルのブロックをなすようにグループ分けされているフラッシュEEPROM(登録商標)システムのような再プログラム可能な不揮発性メモリシステムはホストコマンドの実行中にメモリシステムのハウスキーピング操作をフォアグラウンドで行うように操作され、そのハウスキーピング操作はホストコマンドの実行とは関連しない。1つ以上のそのようなハウスキーピング操作とホストコマンドの実行との両方が、その特定のコマンドを実行するために確立された時間割り当て内で行われる。1つのそのようなコマンドは、受信されたデータのメモリへの書き込みである。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的には不揮発性フラッシュメモリシステムの操作に関し、特にそのようなメモリシステムにおける損耗均等化(wear leveling) のようなハウスキーピング操作を実行する手法に関する。本願明細書において参照された全ての特許、特許出願、論文および他の刊行物は、あらゆる目的のためにその全体が本願明細書において参照により援用されている。
【背景技術】
【0002】
多くの商業的に成功した不揮発性メモリ製品が、特に小形形状の取り外し可能なファクタカードまたは埋め込みモジュールの形で、今日使用され、それらは、1つ以上の集積回路チップ上に形成されたフラッシュEEPROM(電気的に消去可能でプログラム可能な読み出し専用メモリ)のアレイを使用する。普通は(必ずしもそうではないが)別の集積回路チップ上に存するメモリコントローラが、システムが接続されるホストとインターフェイスするようにメモリシステムに含まれてカード内のメモリアレイの動作を制御する。そのようなコントローラは、通常、マイクロプロセッサと、何らかの不揮発性読み出し専用メモリ(ROM)と、揮発性ランダムアクセスメモリ(RAM)と、データがデータのプログラミングおよび読み出しの間にコントローラを通過するときにデータから誤り訂正符号(ECC)を計算するもののような1つ以上の特別の回路とを含む。他のメモリカードおよび埋め込みモジュールはそのようなコントローラを含まないが、それらが接続されるホストが、コントローラ機能を提供するソフトウェアを含む。カードの形のメモリシステムは、ホストの外側のレセプタクルと結合するコネクタを含む。一方、ホスト内に埋め込まれたメモリシステムは、取り外されるように意図されてはいない。
【0003】
コントローラを含む商業的に入手可能なメモリカードの幾つかは、次の商標、すなわちコンパクトフラッシュ(CF)、マルチメディア(MMC)、セキュアデジタル(SD)、ミニSD、マイクロSD、およびトランスフラッシュのもとで販売されている。コントローラを含まないメモリシステムの例はスマートメディアカードである。これらのカードの全ては、本願の譲受人であるサンディスク コーポレイションから入手可能である。これらのカードの各々は、それが取り外し可能に接続されるホスト装置との特別な機械的および電気的インターフェイスを有する。小形のハンドヘルド式フラッシュメモリ装置の他のクラスは、標準的ユニバーサルシリアルバス(USB)コネクタを通してホストとインターフェイスするフラッシュドライブを含む。サンディスク コーポレイションは、そのような装置をクルーザー(Cruzer)という登録商標の下で提供している。カードのためのホストは、パーソナルコンピュータ、ノートブックコンピュータ、個人用携帯情報端末(PDA)、種々のデータ通信装置、デジタルカメラ、携帯電話機、携帯用オーディオプレーヤ、自動車音響システム、および類似のタイプの装置を含む。フラッシュドライブは、パーソナルコンピュータおよびノートブックコンピュータのような、USBレセプタクルを有するどのようなホストとも協働する。
【0004】
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)で説明されている。
【0005】
NANDアレイは、1つ以上の選択トランジスタと共に個々のビット線と基準電位との間に接続されてセルの列を形成する、16個または32個などの、2つより多いメモリセルの直列ストリングを利用する。ワード線は、多数のこれらの列の中でセルを横断して延びる。列内の個々のセルは、ストリングを流れる電流がアドレス指定されたセルに蓄積されている電荷のレベルに依存することとなるようにストリング中の残りのセルをオンに転換しにくくすることによって、プログラミング中に読み出されベリファイされる。メモリシステムの一部としてのNAND構造のアレイおよびその動作の例が、米国特許第5,570,315号(特許文献8)、第5,774,397号(特許文献9)、第6,046,935号(特許文献10)、第6,373,746号(特許文献11)、第6,456,528号(特許文献12)、第6,522,580号(特許文献13)、第6,771,536号(特許文献14)、および第6,781,877号(特許文献15)に見出される。
【0006】
前に引用された特許において論じられている、現行のフラッシュEEPROMアレイの電荷記憶素子は、最も一般的には、通常伝導性にドープされたポリシリコン材料から形成される、導電性フローティングゲートである。フラッシュEEPROMシステムにおいて有益な代わりのタイプのメモリセルは、電荷を不揮発性に蓄積するために伝導性フローティングゲートの代わりに非伝導性誘電体材料を利用する。酸化ケイ素、窒化ケイ素および酸化ケイ素から成る3層誘電体(ONO)が、伝導性コントロールゲートと、メモリセルチャネルの上の半伝導性基板の表面との間に挟まれる。セルは、電子をセルチャネルから窒化物に注入することによってプログラムされ、そこでそれらは限られた領域に捕獲され蓄積され、窒化物にホットホールを注入することによって消去される。誘電体記憶素子を使用するいくつかの具体的なセル構造とアレイとが、ハラリらの米国公開特許出願第2003/0109093号(特許文献16)で説明されている。
【0007】
ほとんど全ての集積回路の用途の場合と同じく、或る集積回路機能を実現するために必要とされるシリコン基板面積を小さくする圧力がフラッシュEEPROMメモリセルアレイに関しても存在する。所与のサイズのメモリカードおよび他のタイプのパッケージの記憶容量を増やすために、或いは容量を増やしかつサイズを小さくするために、シリコン基板の所与の領域に格納され得るデジタルデータの量を増やすことがしばしば望まれる。データの記憶密度を増やす1つの方法は、メモリセルあたりおよび/または記憶ユニットまたは記憶素子あたり1ビットより多いデータを格納することである。これは、記憶素子電荷レベル電圧範囲のウィンドウを2つより多い状態に分割することによって達成される。そのような状態を4つ用いれば各セルは2ビットのデータを記憶することができ、8個の状態は記憶素子あたりに3ビットを記憶させるなどである。フローティングゲートを用いる多状態フラッシュEEPROM構造およびその動作が、米国特許第5,043,940号(特許文献17)および第5,172,338号(特許文献18)で説明され、誘電体フローティングゲートを用いる構造については前述した米国公開特許出願第2003/0109093号(特許文献16)で説明されている。多状態メモリセルアレイの選択された部分は、いろいろな理由から、米国特許第5,930,167号(特許文献19)および第6,456,528号(特許文献12)に記載されているように、2状態(バイナリ)でも操作され得る。
【0008】
代表的なフラッシュEEPROMアレイのメモリセルは、一緒に消去されるセルの別々のブロックに分けられる。すなわち、ブロックは消去単位、すなわち同時に消去可能な最小数のセル、である。各ブロックは通常1ページ以上のデータを記憶し、ページはプログラミングおよび読み出しの最小単位であるが、別々のサブアレイまたはプレーンにおいて1ページより多くが並列にプログラムされ或いは読み出されてもよい。各ページは通常1セクタ以上のデータを記憶し、セクタのサイズはホストシステムにより定められる。一例としてのセクタは、磁気ディスクドライブに関して確立された標準規格に従う512バイトのユーザデータと、これに加えられる、そのユーザデータにかつ/またはそれが格納されているブロックに関する数バイトのオーバーヘッド情報とを含む。そのようなメモリは通常各ブロック内に16ページ、32ページ、或いはそれより多くのページを有するように設定され、各ページは1つまたはほんの少数のホストセクタのデータを記憶する。
【0009】
ユーザデータをメモリアレイにプログラムし、またメモリアレイからユーザデータを読み出す間の並列度を高めるために、アレイは、通常、一般にプレーンと称されるサブアレイに分割され、それらは、幾つかのプレーンの各々にまたは全プレーンに同時にデータのセクタをプログラムし或いはそれらから同時にデータのセクタを読み出し得るように並列動作を可能にするために、それら自身のデータレジスタおよび他の回路を含む。単一の集積回路上のアレイは物理的に複数のプレーンに分割され得、或いは各プレーンは別々の1つ以上の集積回路チップから形成され得る。このようなメモリの実施例が、米国特許第5,798,968号(特許文献20)および第5,890,192号(特許文献21)に記載されている。
【0010】
メモリをさらに効率よく管理するために、ブロック同士を結合させて仮想ブロックまたはメタブロックを形成することができる。すなわち、各メタブロックは、各プレーンからの1つのブロックを含むように定められる。メタブロックの使用が、米国特許第6,763,424号(特許文献22)で説明されている。メタブロックの物理アドレスは、データをプログラムしかつ読み出すための宛先として論理ブロックアドレスからの変換により確立される。同様に、メタブロックの全てのブロックは一緒に消去される。このような大きなブロックおよび/またはメタブロックを持って操作されるメモリシステムのコントローラは、ホストから受け取られた論理ブロックアドレス(LBA)とメモリセルアレイ内の物理ブロック番号(PBN)との間の変換を含む幾つかの機能を実行する。ブロック内の個々のページは、通常、ブロックアドレス内のオフセットにより識別される。アドレス変換は、しばしば、論理ブロック番号(LBN)と論的ページとの中間用語 (intermediate terms) の使用を必要とする。
【0011】
消去済みブロックプールにおいて維持される特別のブロックを用いて大きなブロックまたはメタブロックシステムを操作することは普通のことである。ブロックの容量より少ない1ページ以上のデータが更新されるとき、更新されたページをプールからの消去済みブロックに書き込み、その後に、変更されないページのデータを元ブロックから消去プールブロックにコピーするのが一般的である。この手法の変形例が、前述した米国特許第6,763,424号(特許文献22)に記載されている。時間が経つと、ホストデータファイルが書き換えられ更新される結果として、多くのブロックの割合に少数のページが有効なデータを包含し、残りのページは最早現行のデータではないデータを包含するように多くのブロックがなり得る。アレイのデータ記憶容量を効率よく使えるようにするために、有効なデータの論理的に関連するページが多数のブロックの中のフラグメントから時折集められて、より少数のブロックの中に整理統合される。このプロセスは一般に“ガーベッジコレクション”と称される。
【0012】
単一のブロックまたはメタブロック内のデータも、そのブロック内のかなりの量のデータが陳腐化したときに、圧縮され得る。これは、そのブロックの残りの有効なデータを空白の消去済みブロックの中にコピーし、その後に元ブロックを消去することを含む。そのコピーブロックは、元ブロックからの有効なデータの他に、以前は陳腐化したデータにより占められていた消去済み記憶容量を包含する。有効なデータは、通常、コピーブロックの中に論理的順序に配置され、これによりデータの読み出しをより容易にする。
【0013】
メモリシステムの操作のための制御データは一般的には1つ以上の予備ブロックまたはメタブロックに格納される。そのような制御データは、プログラミング電圧および消去電圧のような操作パラメータと、ファイルディレクトリ情報およびブロック割り当て情報を含む。所与の時にコントローラがメモリシステムを操作するのに必要なだけの情報がRAMにも格納され、更新時にフラッシュメモリに書き戻される。制御データの頻繁な更新は、予備ブロックの頻繁な圧縮および/またはガーベッジコレクションという結果をもたらす。複数の予備ブロックがある場合には、2つ以上の予備ブロックのガーベッジコレクションが同時にトリガーされることがあり得る。そのような時間を消費する操作を避けるために、予備ブロックの自発的なガーベッジコレクションが、必要になる前に、それらがホストに収容されうるときに時々開始され得る。そのような先制データ再配置手法が、2004年8月13日に出願された米国特許出願第10/917,725号(特許文献23)に記載されている。ガーベッジコレクションは、ユーザデータ更新ブロックに対して、それが完全に満杯になり、それによりホストから提供されたデータをメモリに書き込めるようになる直前に行われなければならないガーベッジコレクションをトリガーするのを待つのではなくて、それがほぼ満杯になったときに行われてもよい。
【0014】
或るメモリシステムでは、物理的メモリセルは2つ以上のゾーンにもグループ分けされる。ゾーンは、物理的メモリまたはメモリシステムの、指定された範囲の論理ブロックアドレスが中にマッピングされる任意の区画されたサブセットであり得る。例えば、64メガバイトのデータを記憶できるメモリシステムは、ゾーンあたりに16メガバイトのデータを記憶する4つのゾーンに区画され得る。論理ブロックアドレスの範囲も4つのグループに分割され、1つのグループが4つのゾーンの各々の物理ブロックに割り当てられる。論理ブロックアドレスは、代表的な実施例では、その各々のデータが、それらの論理ブロックアドレスがマッピングされている単一の物理的ゾーンの外側には決して書き込まれないように、制限される。それ自身のアドレス指定回路、プログラミング回路および読み出し回路を各々有するプレーン(サブアレイ)に分割されているメモリセルアレイでは、各ゾーンは、好ましくは、複数のプレーンからのブロックを、一般的には各プレーンからの同数のブロックを、含む。ゾーンは、主として、論理から物理への変換のようなアドレス管理を簡略化するために使用され、その結果としてより小さな変換テーブルをもたらし、これらのテーブルを保持するために必要なRAMメモリを少なくし、メモリの現在アクティブな領域をアドレス指定するためのアクセス時間を高速化するけれども、その制限の多い性質の故に最適には及ばない損耗均等化をもたらすことがあり得る。
【0015】
個々のフラッシュEEPROMセルは1ビット以上のデータを表す量の電荷を電荷記憶素子またはユニットに蓄積する。記憶素子の電荷レベルはそのメモリセルのしきい値電圧(一般にVT として参照される)を制御し、それはセルの記憶状態を読み出す基礎として用いられる。しきい値電圧ウィンドウは、一般に、メモリセルの2つ以上の記憶状態の各々について1つずつ、数個の範囲に分割される。これらの範囲は、個々のセルの記憶状態を判定することを可能にする公称感知レベルを含むガードバンドにより分離される。これらの記憶レベルは、隣接するまたは関連する他のメモリセル、ページまたはブロックで実行される電荷を乱すプログラミング、読み出しまたは消去操作の結果として移動する。従って、通常、誤り訂正符号(ECC)がコントローラによって計算されて、プログラムされるホストデータと共に格納され、読み出し中にデータをベリファイし、必要ならば或るレベルのデータ訂正を行うために使用される。また、移動する電荷レベルを、乱す操作がそれらを定められた範囲の外へ完全に移動させ、従って間違ったデータを読み出させるようになる前に、時折その状態範囲の中央に復帰させることができる。この、データリフレッシュまたはスクラブと称されるプロセスは、米国特許第5,532,962号(特許文献24)および第5,909,449号(特許文献25)と、2003年10月3日に出願された米国特許出願第10/678,345号(特許文献26)とに記載されている。
【0016】
フラッシュメモリセルの応答性は、通常、時間が経つと、セルが消去され再プログラムされた回数の関数として変化する。これは、各々の消去および/または再プログラミング操作の間に少量の電荷が記憶素子誘電体層に捕獲され、それは時間が経つに連れて累積する結果であると考えられている。これは、一般に、メモリセルの信頼性が低下するという結果をもたらし、メモリセルが古くなるに連れて消去およびプログラミングのためにより高い電圧を必要とし得る。メモリ状態がそこでプログラムされ得るところの実効しきい値電圧ウィンドウも、電荷保持の結果として減少し得る。これは、例えば、米国特許第5,268,870号(特許文献27)に記載されている。結果は、メモリセルの限られた有効寿命である。すなわち、メモリセルブロックは、システム外にマッピングされる前に、前もって決められた数の消去および再プログラミングサイクルのみを受けるに過ぎない。フラッシュメモリブロックが望ましく受けるサイクルの数は、メモリセルの具体的な構造、記憶状態のために使用されるしきい値ウィンドウの総量、各セルの記憶状態の数が増えるに連れて普通は増大するしきい値ウィンドウの大きさによる。これらの要素と、他の要素とにより、ライフタイムサイクルの数は少なくて10,000、多くて100,000または数十万であり得る。
【0017】
前述した米国特許第5,268,870号(特許文献27)に記載されているように、個々のブロックのメモリセルが受けたサイクルの数を追跡することが望ましいと考えられるならば、各ブロックのために、またはブロックのグループの各々のためにカウントを維持することができ、それはブロックが消去されるごとに増分される。このカウントは、そこに記載されているように、各ブロックに格納され得、或いは米国特許第6,426,893号(特許文献28)に記載されているように別のブロックに他のオーバーヘッド情報と共に格納され得る。ブロックが最大ライフタイムサイクルカウントに達したときにブロックをシステム外にマッピングするために用いるほかに、カウントは、メモリセルブロックが古くなってゆくに連れて消去およびプログラミングパラメータを制御するために早くから使用され得る。サイクル数の正確なカウントを維持するのではなくて、米国特許第6,345,001号(特許文献29)はランダムなまたは擬似ランダムなイベントが発生したときにサイクル数の圧縮されたカウントを更新する手法を説明している。
【0018】
サイクルカウントは、システムのメモリセルブロックの使用を、それらがその寿命の終わりに達する前に、均すためにも使用され得る。幾つかの異なる損耗均等化手法が、米国特許第6,230,233号(特許文献30)、米国公開特許出願第2004/0083335号(特許文献31)、並びに2002年10月28日に出願された次の米国特許出願、すなわち第10/281,739号(現在、国際公開特許出願第2004/040578号として公開されている)(特許文献32)、第10/281,823号(現在、米国公開特許出願第2004/0177212号として公開されている)(特許文献33)、第10/281,670号(現在、国際公開特許出願第2004/040585号として公開されている)(特許文献34)、および第10/281,824号(現在、国際公開特許出願第2004/040459号として公開されている)(特許文献35)、に記載されている。損耗均等化の主な利点は、他のブロックがほとんど使用されていないのに或るブロックがその最大サイクルカウントに達し、これによりシステム外にマッピングされなければならなくなるのを防止することである。サイクルの数をシステムの全てのブロックに適度に均一に分散させることによって、メモリの総容量が良好な性能特性と共に長期間にわたって維持され得る。2004年11月15日に出願された米国特許出願第10/990,189号(特許文献36)に記載されているように、損耗均等化は、メモリブロックサイクルカウントを維持せずに実行されてもよい。
【0019】
損耗均等化の他のアプローチでは、論理−物理ブロックアドレス変換を、一度に1または数ブロック、増分することによってブロックの物理的ゾーン間の境界をメモリセルアレイ内で徐々に移動させる。これは、米国公開特許出願第2004/0083335号(特許文献31)で説明されている。
【0020】
メモリセルの少数のブロックがメモリシステムの他のものより遥かに多数の消去および再プログラミングサイクルを受けることの主な原因は、割合に少数の論理ブロックアドスのデータセクタをホストが頻繁に書き換えることである。これは、ファイル割り当てテーブル(FAT)などの、メモリに格納されているハウスキーピングデータの或るセクタをホストが頻繁に更新するメモリシステムの多くの用途において発生する。ホストの特定の使用も、少数の論理ブロックを他よりも遥かに頻繁にユーザデータで書き換えさせる原因になり得る。指定された論理ブロックアドレスにデータを書き込むホストからのコマンドを受け取ったことに応答して、そのデータは消去済みブロックのプールの小数のブロックのうちの1つに書き込まれる。すなわち、同じ論理ブロックアドレスの元データが存在する同じ物理ブロックにデータを再び書き込む代わりに、論理ブロックアドレスは消去済みブロックプールのブロックに再マッピングされる。元の現在無効なデータを含むブロックは、直ぐに消去されるか、または後のガーベッジコレクション操作の一部として消去され、その後に消去済みブロックプールに入れられる。小数の論理ブロックアドレス内のデータだけが他のブロックより遥かに多く更新されるとき、結果は、システムの割合に少数の物理ブロックがより高い率で循環されるということである。もちろん、前述した理由から、そのように著しく不均一な論理ブロックアクセスに遭遇するときには物理ブロックの損耗 (wear) を均す能力をメモリシステム内に設けることが望ましい。
【先行技術文献】
【特許文献】
【0021】
【特許文献1】米国特許第5,070,032号
【特許文献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,373,746号
【特許文献12】米国特許第6,456,528号
【特許文献13】米国特許第6,522,580号
【特許文献14】米国特許第6,771,536号
【特許文献15】米国特許第6,781,877号
【特許文献16】米国公開特許出願第2003/0109093号
【特許文献17】米国特許第5,043,940号
【特許文献18】米国特許第5,172,338号
【特許文献19】米国特許第5,930,167号
【特許文献20】米国特許第5,798,968号
【特許文献21】米国特許第5,890,192号
【特許文献22】米国特許第6,763,424号
【特許文献23】米国特許出願第10/917,725号
【特許文献24】米国特許第5,532,962号
【特許文献25】米国特許第5,909,449号
【特許文献26】米国特許出願第10/678,345号
【特許文献27】米国特許第5,268,870号
【特許文献28】米国特許第6,426,893号
【特許文献29】米国特許第6,345,001号
【特許文献30】米国特許第6,230,233号
【特許文献31】米国公開特許出願第2004/0083335号
【特許文献32】国際公開特許出願第2004/040578号
【特許文献33】米国公開特許出願第2004/0177212号
【特許文献34】国際公開特許出願第2004/040585号
【特許文献35】国際公開特許出願第2004/040459号
【特許文献36】米国特許出願第10/990,189号
【発明の概要】
【0022】
メモリシステムと操作可能に接続されているホストシステムから受信されたコマンドの実行中に、そのコマンドの実行のために設定された時間割り当て内で、ハウスキーピング操作が実行される。メモリシステムがコマンドを実行し得るために必要なハウスキーピング操作に加えて、受信されたコマンドの実行とは直接関連していなくて、この実行のために必要ではないハウスキーピング操作も実行され得る。そのような関連のないハウスキーピング操作は、コマンドが実行されるたびに行われなくてもよいが、或るコマンド実行の間だけに実行されるように限定され得る。例えば、終えるのに時間がかかり過ぎる関連のないハウスキーピング操作は、コマンド関連のハウスキーピング操作がそのコマンドを実行するために不要であるために必要な時間が利用し得るようになるコマンドの受信を待ってもよい。ホストコマンドの実行の一部としてハウスキーピング機能を実行することにより、ホストがハウスキーピング操作を完了させることを許すか否かに関して、それらがホストにより設定された既知の時間割り当て内で完了する限りは、不確実性はない。
【0023】
関連のないハウスキーピング操作は、損耗均等化、スクラッビング、データ圧縮、および先制ガーベッジコレクションを含むガーベッジコレクションを含む。ガーベッジコレクションまたはコマンド実行に必要な他のハウスキーピング操作に加えて、メモリシステムは、コマンドの実行に必要ではないハウスキーピング操作を実行することができる。例えば、損耗均等化は、書き込みコマンドを実行するためには不要であるけれども、割り当て内でそうする時間があるときには、そのようなコマンドの実行中に都合よく行われる。時間割り当ては、データ書き込みのようなコマンドを実行するためのホストタイムアウトなどにより、またはメモリシステムが投入されそうな用途において書き込みまたは読み出しの間に一定で最低の所要データ転送速度が存在することにより、確立される。複数のハウスキーピング操作を実行するのに充分な時間がない1つの特定の例では、ガーベッジコレクションが不要な書き込みコマンドの実行中に損耗均等化が実行される。
【0024】
本発明の付加的な態様、利点および特徴は、添付図面と関連して検討されるべきであるその代表的な例についての以下の説明に含まれている。
【図面の簡単な説明】
【0025】
【図1A】協働する不揮発性メモリとホストシステムとのブロック図である。
【図1B】協働する不揮発性メモリとホストシステムとのブロック図である。
【図2】図1Aのメモリアレイの第1の構成例を示す。
【図3】図1Aのメモリアレイに格納されたオーバーヘッドデータを有するホストデータセクタの例を示す。
【図4】図1Aのメモリアレイの第2の構成例を示す。
【図5】図1Aのメモリアレイの第3の構成例を示す。
【図6】図1Aのメモリアレイの第3の構成例の拡張を示す。
【図7】1つの特定の構成の図1Aのアレイのメモリセルのグループの回路図である。
【図8】図1Aのメモリアレイの構成および使用の例を示す。
【図9】第1の実施形態に従って書き込みコマンドを実行するメモリシステムの動作例を提供するタイミング図である。
【図10】図9のタイミングでのメモリシステム動作の態様を示す。
【図11】図9のタイミングでのメモリシステム動作の別の態様を示す。
【図12】図9〜11により示されている書き込み動作の1つの特定の実行を示す動作フローチャートである。
【図13A】図12により示されている損耗均等化動作のためのタイミングを示す曲線である。
【図13B】図12により示されている損耗均等化動作のための別のタイミングを示す曲線である。
【図13C】図12により示されている損耗均等化動作のための別のタイミングを示す曲線である。
【図14】図12のフローチャートの改変形として示されている第2の実施形態に従って書き込みコマンドに応答したメモリシステムの動作を示すフローチャートである。
【図15】図14のフローチャートにおいて示されている動作の実行例のタイミング図である。
【図16】図15のタイミングでのメモリシステム動作の一態様を示す。
【図17】図15のタイミング図に代わるメモリシステムの動作を示すタイミング図である。
【図18】第3の実施形態に従って書き込みコマンドの実行中のメモリシステムの動作を示すフローチャートである。
【図19】図18のフローチャートに従ってメモリシステムの動作例を示すタイミング図である。
【図20】メモリシステム動作の別の実施形態を示すタイミング図である。
【図21】メモリシステム動作の別の実施形態を示すタイミング図である。
【図22】読み出しコマンド実行中における本発明のいろいろな態様の利用を示すタイミング図である。
【発明を実施するための形態】
【0026】
メモリ構造およびその動作
最初に図1Aを参照すると、フラッシュメモリはメモリセルアレイとコントローラとを含む。示されている例では、2つの集積回路装置(チップ)11および13はメモリセルのアレイ15と種々の論理回路17とを含む。論理回路17は、データ回路、コマンド回路およびステータス回路を通して別のチップ上のコントローラ19とインターフェイスし、アドレス指定、データ転送、検知およびその他のサポートをアレイ13に提供する。メモリアレイチップの数は、提供される記憶容量により、1から多数におよび得る。或いは、コントローラと一部またはアレイ全体とが単一の集積回路チップに統合されてよいが、それは現在では経済的な選択肢ではない。コントローラ機能を提供するためにホストに依存するフラッシュメモリ装置は、メモリ集積回路装置11および13以外のものをほとんど含まない。
【0027】
典型的なコントローラ19は、マイクロプロセッサ21と、主としてファームウェアを記憶する読み出し専用メモリ(ROM)23と、主としてメモリチップ11および13に書き込まれまたはこれらから読み出されたユーザデータを一時的に記憶するバッファメモリ(RAM)25とを含む。回路27はメモリアレイチップ( 単数または複数)とインターフェイスし、回路29は接続部31を通してホストとインターフェイスする。この例ではデータの完全性は、コードの計算に専用される回路33でECCを計算することにより判定される。ユーザデータがホストからフラッシュメモリアレイに格納されるべく転送されるとき、この回路はそのデータからECCを計算し、コードはメモリに格納される。そのユーザデータは、後にメモリから読み出される時、再び回路33を通され、これは同じアルゴリズムによってECCを計算し、そのコードを、計算されてこのデータと共に格納されたものと比較する。それらが同等であれば、データの完全性が確認される。それらが違っていれば、利用される特定のECCアルゴリズムにより、間違っているビットは、アルゴリズムによりサポートされる数まで、識別されて訂正され得る。
【0028】
図1Aのメモリの接続部31はホストシステムの接続部31’と結合し、その例が図1Bにおいて示されている。ホストと図1Aのメモリとの間でのデータ転送はインターフェイス回路35を通して行われる。代表的なホストは、マイクロプロセッサ37、ファームウェアコードを記憶するROM39、およびRAM41も含む。他の回路およびサブシステム43は、具体的なホストシステムに依存して、しばしば、大容量磁気データ記憶ディスクドライブ、キーボードのためのインターフェイス回路、モニタなどを含む。そのようなホストの幾つかの例は、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、個人用携帯情報端末(PDA)、MP3および他のオーディオプレーヤ、デジタルカメラ、ビデオカメラ、電子ゲーム機、無線および有線電話装置、留守番電話、ボイスレコーダ、ネットワークルータおよびその他を含む。
【0029】
図1Aのメモリは、図1Bのホストと取り外し可能に接続され得る形でコントローラおよびその全てのメモリアレイ回路装置を含む小形の閉鎖形メモリカードまたはフラッシュドライブとして実現され得る。すなわち、結合する接続部31および31’は、カードを切り離して他のホストに移すこと、或いは他のカードをホストに接続することによってカードを取り替えることを可能にする。或いは、メモリアレイ装置11および13は、コントローラおよび接続部31を含む他のカードと電気的にかつ機械的に接続可能な別個のカードに封入されてもよい。別の選択肢として、図1Aのメモリは図1Bのホスト内に埋め込まれてもよく、その中では接続部31および31’は永久的に作られる。この場合、メモリは普通他のコンポーネントと共にホストのエンクロージャ内に含まれる。
【0030】
本願明細書の発明手法は種々の具体的な構成を有するシステムで実施され得、その例が図2〜6において示されている。図2は、メモリセルがグループ分けされてブロックを成しているメモリアレイの一部分を示し、各ブロック内のセルは、単一の消去操作の一部として普通は同時に一緒に消去され得る。ブロックは消去の最小単位である。
【0031】
図2の個々のメモリセルブロックのサイズは様々でありうるが、1つの商業的に実施されている形は1つのブロックに単一セクタのデータを含む。そのようなデータセクタの内容が図3に示されている。ユーザデータ51は通常512バイトである。ユーザデータ51のほかにオーバーヘッドデータがあり、このオーバーヘッドデータが、ユーザデータから計算されたECC53と、セクタデータおよび/またはそのセクタがプログラムされているブロックに関連するパラメータ55と、パラメータ55および包含され得る他のオーバーヘッドデータから計算されたECC57とを含む。或いは、ユーザデータ51およびパラメータ55の全部から単一のECCが計算されてもよい。
【0032】
パラメータ55は、そのブロックが経験したプログラミング/消去サイクルの数に関連する量を含むことができ、この量は、各サイクル後にまたは或る数のサイクルの後に更新される。この経験量が損耗均等化アルゴリズムに用いられるとき、全てのブロックの使用(損耗)を均すために論理ブロックアドレスは定期的に異なる物理ブロックアドレスに再マッピングされる。経験量の他の使用方法は、プログラミング、読み出しおよび/または消去の電圧および他のパラメータを、いろいろなブロックが経験したサイクルの数の関数として変更することである。
【0033】
パラメータ55は、メモリセルの記憶状態の各々に割り当てられたビット値の(それらの“ローテーション”と称される)表示を含むこともできる。これも、損耗均等化に有益な効果を有する。ステータスまたは状態を示す1つ以上のフラグもパラメータ55に含まれ得る。ブロックをプログラミングおよび/または消去するために使用されるべき電圧レベルの表示もパラメータ55の中に格納され得、これらの電圧は、ブロックが経験したサイクルの数と他の要素とが変化すると更新される。パラメータ55の他の例は、ブロック内の欠陥のあるセルの識別と、この物理ブロックにマッピングされているブロックの論理アドレスと、主ブロックに欠陥がある場合の代替のブロックのアドレスとを含む。あらゆるメモリシステムにおいて使用されるパラメータ55の具体的な組み合わせは、設計に応じて変化する。また、オーバーヘッドデータの一部または全部は、ユーザデータを含むかまたはそのオーバーヘッドデータが関連するブロックに格納されるのではなくて、そのような機能に専用されるブロックに格納されてもよい。
【0034】
図4のマルチセクタブロックは、図2の単一データセクタブロックとは異なる。依然として消去の最小単位であるブロック59の例は4つのページ0〜3を含み、その各々はプログラミングの最小単位である。データの1つ以上のホストセクタが、普通は、少なくともそのセクタのデータから計算されたECCを含むオーバーヘッドデータと共に各ページに格納され、図3のデータセクタの形をとることができる。
【0035】
ブロック全体のデータ書き換えは、普通、新しいデータを消去ブロックプールの消去済みブロックにプログラムすることを含み、その後に元ブロックは消去されて消去プールに置かれる。ブロックの全ページよりは少ないデータが更新されるとき、更新されたデータは、通常、消去済みブロックプールからの消去済みブロックのページに格納され、残りの変更されないページは元ブロックからその新しいブロックにコピーされる。その後、元ブロックは消去される。或いは、新しいデータは、データが更新されるブロックと関連付けられた更新ブロックに書き込まれてよく、更新ブロックはこのブロックへのさらなる更新を受け入れるようになるべく長く開いたままにされる。更新ブロックが閉じられなければならないとき、更新ブロックと元ブロックとの中の有効なデータがガーベッジコレクション操作で単一のコピーブロックにコピーされる。これらの大ブロック管理手法は、しばしば、元ブロックからデータを移動させ或いはそれを消去することなく、更新されたデータを他のブロックのページに書き込む動作を含む。これは、データの複数のページが同じ論理アドレスを有するという結果をもたらす。データの最新のページは、セクタ内のフィールドまたはページのオーバーヘッドデータとして記録されるプログラミングの時点のような何らかの便利な手法によって識別される。
【0036】
別のマルチセクタブロック構成が図5に示されている。ここでは、メモリセルアレイ全体が2つ以上のプレーンに物理的に分割され、4個のプレーン0〜3が図に示されている。各プレーンは、他のプレーンから大幅に独立して動作できるようにそれ自身のデータレジスタ、センス増幅器、アドレス指定デコーダなどを有する、メモリセルのサブアレイである。全てのプレーンが単一の集積回路装置上または複数の装置上に設けられ得る。図5のシステム例の各ブロックは16ページP0〜P15を含み、各ページは1, 2またはもっと多くのホストデータセクタと多少のオーバーヘッドデータとの容量を有する。プレーンは単一の制御回路チップ上に、または複数のチップ上に、形成され得る。複数のチップ上の場合、例えば、プレーンのうちの2つは1つのチップ上に形成され、他の2つは別のチップ上に形成され得る。或いは、1つのチップ上のメモリセルがメモリプレーンのうちの1つを提供し、4つのそのようなチップが一緒に使用される。
【0037】
別のメモリセル構成が図6に示されている。各プレーンはセルの多数のブロックを含む。動作の並列度を高めるために、別々のプレーン内のブロック同士が論理的に結合されてメタブロックを形成する。1つのそのようなメタブロックは、プレーン0のブロック3と、プレーン1のブロック1と、プレーン2のブロック1と、プレーン3のブロック2とから形成されるものとして図6に示されている。各メタブロックは論理的にアドレス指定可能であり、メモリコントローラは、個々のメタブロックを形成するブロックを割り当てて追跡する。ホストシステムは、好ましくは、個々のメタブロックの容量に等しいデータをユニットとしてメモリシステムとインターフェイスする。例えば、図6のそのような論理データブロック61は、コントローラによりメタブロックを構成するブロックの物理ブロック番号(PBN)にマッピングされる論理ブロックアドレスにより識別される。メタブロックの全てのブロックは一緒に消去され、各ブロックからのページは好ましくは同時にプログラムされ読み出される。
【0038】
図2〜6に関して前に説明したモリを実現するために使用され得る多様なメモリアレイ構造、構成および具体的なセル構造が存在する。NAND形のメモリアレイの1つのブロックが図7に示されている。直列接続されたメモリセルの多数の列方向ストリングが電圧VSSの共通ソース65とビット線BL0〜BLNのうちの1つとの間に接続され、これらのビット線は、アドレスデコーダ、ドライバ、読み出しセンス増幅器などを含む回路67と接続されている。具体的には、1つのそのようなストリングは、ストリングの両端の選択トランジスタ77および79の間に直列に接続された電荷蓄積トランジスタ70,71...72および74を含む。この例では、各ストリングは16個の蓄積トランジスタを含むが、他の数も可能である。ワード線WL0〜WL15は、各ストリングの1つの蓄積トランジスタを横断して延びて、ワード線のアドレスデコーダおよび電圧源ドライバを含む回路81に接続されている。線83および84上の電圧は、ブロックの全ストリングの、それらの選択トランジスタを通しての電圧源65および/またはビット線BL0〜BLNへの接続を一緒に制御する。データおよびアドレスはメモリコントローラから来る。
【0039】
ブロックの電荷蓄積トランジスタ(メモリセル)の各行は1つ以上のページを含み、各ページのデータは一緒にプログラムされ読み出される。適切な電圧が、ワード線(WL)に、そのワード線に沿うメモリセルのデータをプログラムしまたは読み出すために、印加される。適切な電圧が、関心の対象であるセルと接続されているそれらのビット線(BL)にも印加される。図7の回路は行に沿う全てのセルが一緒にプログラムされ読み出されることを示しているが、行に沿う1つ置きのセルをユニットとしてプログラムし読み出すのが一般的である。この場合、一度に1つ置きのセルと操作可能に接続するように2セットの選択トランジスタが使用され(図示せず)、1つ置きのセルが1ページを形成する。残りのワード線に印加される電圧は、その各々の蓄積トランジスタを伝導性にするために選択される。1つの行のメモリセルをプログラムし或いは読み出す過程で、ビット線に印加された電圧がそれらに接続されているストリングの全てのセルに影響を及ぼし得るので、選択されていない行に前に蓄積された電荷レベルが乱され得る。
【0040】
前述したタイプのメモリシステムの1つの具体的な構造とその動作とが図8により一般的に示されている。説明を容易にするために大幅に簡略化されているメモリセルアレイ213は、構造に依存して、ブロックまたはメタブロック(PBN)P1〜Pmを含む。ホストからメモリシステムにより受け取られたデータの論理アドレスは、個々の論理ブロックアドレス(LBA)を有する論理グループまたはブロックL1〜Lnを成すようにグループ分けされる。すなわち、メモリシステムの連続する論理アドレス空間全体がアドレスの複数のグループに分割される。論理グループL1〜Lnの各々によりアドレス指定されるデータの量は、物理ブロックまたはメタブロックの各々の記憶容量と同じである。メモリシステムコントローラは、グループL1〜Lnの各々の論理アドレスを物理ブロックP1〜Pmの異なる1つにマッピングする機能215を含む。
【0041】
メモリシステムアドレス空間に存在する論理グループより多いメモリの物理ブロックが含まれる。図8の例では、4つのそのような余分の物理ブロックが含まれている。本発明の用途を具体的に例示するために提供されるこの簡略化された説明の目的のために、余分のブロックのうちの2つはデータ書き込み中にデータ更新ブロックとして使われ、他の2つの余分のブロックは消去済みブロックプールを構成する。他の余分のブロックが種々の目的のために通常含まれ、1つはブロックに欠陥が生じた場合の余分として含まれる。メモリを操作するためにメモリシステムコントローラにより使用される制御データを格納するために1つ以上の他のブロックが普通使用される。普通は、特定の目的のために特定のブロックが指定されることはない。むしろ、マッピング215は、個々の論理グループのデータがマッピングされる物理ブロックを定期的に変更し、それがブロックP1〜Pmのうちの任意のものである。物理ブロックのうちの、更新ブロックおよび消去済みプールブロックとして役立つものも、メモリシステムの動作中に物理ブロックP1〜Pmの隅から隅まで移動する。物理ブロックのうちの、更新ブロックおよび消去済みプールブロックとして現在指定されているもののアイデンティティはコントローラにより維持される。
【0042】
図8により表されているメモリシステムへの新しいデータの書き込みを以下に説明する。論理グループL4のデータが物理ブロックP(m−2)にマッピングされると仮定する。また、ブロックP2が更新ブロックとして指定され、完全に消去されて自由に使える状態であると仮定する。この場合、ホストがグループL4内の1つの論理アドレスまたは複数の連続する論理アドレスにデータを書き込むよう命令したとき、そのデータは更新ブロックP2に書き込まれる。新データと同じ論理アドレスを有するブロックP(m−2)に格納されているデータは、その後、陳腐化されて、更新ブロックL4に格納されている新データにより取って代わられる。
【0043】
後に、これらのデータはP(m−2)ブロックおよびP2ブロックから単一の物理ブロックに整理統合される(ガーベッジコレクションされる)。これは、ブロックP(m−2)からの残っている有効なデータと更新ブロックP2からの新データとを消去済みブロックプール中のブロックP5のような別のブロックに書き込むことにより成し遂げられる。ブロックP(m−2)およびP2は、その後、後に更新ブロックまたは消去プールブロックとして役立つように消去される。或いは、元ブロックP(m−2)内の残っている有効なデータは新データと共にブロックP2に書き込まれてもよく(それが可能ならば)、その後にブロックP(m−2)は消去される。
【0044】
所与のデータ記憶容量に必要なメモリアレイのサイズを最小にするために、余分のブロックの数は最少に保たれる。普通は限られた数(この例では2個)の更新ブロックがメモリシステムコントローラにより同時に存在することを許される。さらに、更新ブロックからのデータを元の物理ブロックからの残っている有効なデータと整理統合するガーベッジコレクションは、更新ブロックが関連付けられている物理ブロックにホストにより後に別の新データが書き込まれ得るので、普通はなるべく長く延期される。同じ更新ブロックが、その後、追加データを受け取る。ガーベッジコレクションは、時間を必要とし、またその結果として他の操作が遅らされるならば、メモリシステムの性能に悪影響を及ぼし得るので、それは実行され得る度に実行されるのではない。2つのブロックからのデータを別のブロックにコピーするには、特に個々のブロックのデータ記憶容量が非常に大きいときに(それが趨勢である)、かなりの時間がかかる。従って、ホストがデータを書き込むように命令したときに、それを受け入れるのに使える自由なまたは空の更新ブロックがないという事態がしばしば発生する。そのとき、その書き込みコマンドに応じて、その後にホストから新データを受け取れるように、1つの現存する更新ブロックがガーベッジコレクションされる。そのガーベッジコレクションがどれだけ長く延期され得るかの限度に達している。
【0045】
第1の損耗均等化の実施形態
図9は、2つの更新ブロックのいずれもが自由でなく、消去されていなくて、どちらの更新ブロックとも関連付けられていないブロックのデータが更新されるときのメモリシステムの動作を示す。このとき、ホストから新データを受け取るために利用できる空白の消去済み更新ブロックを作るために更新ブロックのうちの一方がガーベッジコレクションされなければならない。図9の例では、データの2つのセクタまたは他のユニット1および2が書き込まれる。ホスト書き込みコマンドはデータ転送の長さを含み、この場合には2ユニットであり、その後にデータが続く。図9のタイミング図の2番目の線で示されているように、これら2つのデータユニットは、それらの間のメモリシステムビジー信号(図9の3番目の線)が維持されていないので、コマンドが受信された直後に(図9の1番目の線)直接連続して転送される。アサートされたとき、メモリシステムビジー信号はホストにメモリシステムとの通信を休止させる。
【0046】
時点t4およびt5の間のメモリシステムによるビジー信号のアサートは、図に示されているように、書き込みコマンドを実行するために必要なときにメモリシステムがガーベッジコレクションを実行し、その後に、受信されたデータを書き込むことを可能にする。ホストは、このビジー信号がアクティブであるときには他のコマンド或いはそれ以上のデータをメモリシステムに送らない。図9の最後の線で示されているように、これは、新しい更新ブロックを作るために必要なときにガーベッジコレクションをする時間を作る。コントローラは、データユニット1および2の転送にかかる時間がガーベッジコレクションを開始するために使用されるが、これはそれを完了させるのに充分な時間ではない。それ故に、メモリシステムは、ガーベッジコレクションと更新ブロックへのデータ書き込みとが完了するまでホストを寄せ付けない。データ書き込みの完了後、時点t5でビジー信号が終わると、ホストはメモリシステムとさらに通信できるようになる。
【0047】
しかし、ほとんどのホストはデータユニットが転送された後にメモリシステムが書き込みコマンドを実行するために限られた一定の時間を許すに過ぎないので、メモリシステムがアサートできるビジー信号の長さは限られている。それより長くビジー信号がアクティブ状態にとどまっていれば、或るホストはそのデータを伴うコマンドを繰り返すかもしれず、また他の或るホストはそのプロセスを完全に中止するかもしれない。メモリシステムは、このメモリがそれと協働するように設計されているところのホストのこのタイムアウト期間を超えないように操作される。1つの一般的なホストタイムアウト期間は250ミリ秒である。いずれにせよ、ホストと、これに接続されているメモリシステムとの間でのコマンドおよびデータの転送はメモリシステムによるビジー信号のアサートにより遅延させられ得るので、その使用は、メモリシステムの全体としての良好な性能にとって遅延が重要であるような場合に限定されるのが望ましい。
【0048】
ホストのタイムアウト期間に加えて、メモリシステムの動作は、多くの用途において、維持されなければならない最低データ流量により制限される。これは、メモリシステムによりアサートされる個々のビジー信号の持続時間がホストのタイムアウトにより許される最大値より短いことを必要とし得る。
【0049】
同様に、損耗均等化操作は、好ましくは、他の操作および全体としてのメモリシステムの性能に過度に強い影響を及ぼすことを避けるようにスケジュールされる。前述した特許および特許出願で説明されているように、損耗均等化は、損耗(消去サイクルの数)を均すために論理グループのアドレスの物理的メモリブロックへのマッピングを変更することを含む。例えばしばしば書き換えられる範囲の論理アドレスが、平均より高い率でサイクルされている1つの物理ブロックから、より低いサイクル履歴を有する他の物理ブロックにリダイレクトされる。多くの損耗均等化アルゴリズムがあり、そのうちの或るものは論理グループの再書き込みまたは個々の物理ブロック使用のサイクルカウントを監視し、他の或るものはそのようなカウントを使用しないで損耗を別の方法でメモリブロックに分散させる。
【0050】
通常、損耗均等化操作は1つのブロックから他のブロックへのデータの転送(交換)を含み、これがこの操作の最も時間を消費する部分である。損耗均等化交換は、メモリブロックの使用の増大する不均衡を修正するためにメモリシステムコントローラによって時々開始される。損耗均等化の目的は、1つまたは少数のブロックがメモリの有効寿命を超える回数にわたってサイクルされることを避けることによってメモリの寿命を延ばすことである。少数の、時には唯一の、メモリブロックが使えなくなると、メモリシステムが動作不能になり得る。
【0051】
損耗均等化は普通バックグラウンドで行われる。すなわち、ブロックの再マッピングおよびデータ転送はホストがアイドルであるときに行われる。これは、メモリシステムの性能に悪影響を与えないという利点を有するけれども、メモリシステムが損耗均等化を行っている間にホストがコマンドを送ることが防止されず、かつ損耗均等化交換中にメモリシステムから電源を切り離すことさえあり得るという欠点を有する。従って、本願明細書に記載されている例では、損耗均等化はデータ書き込みの一部として時々フォアグラウンドで行われる。
【0052】
再び図9を参照すると、ガーベッジコレクションの代わりに、書き込みコマンドを実行するためにガーベッジコレクションが不要であるときに損耗均等化が行われ得る。ガーベッジコレクションおよび損耗均等化の両方がブロックのデータを転送する動作を含むので、これら2つの操作は同様の量の時間を必要とする。もちろん、前に論じられたように、ガーベッジコレクションは現在の書き込みコマンドを実行できるように更新ブロックを得るために必要なときに行われる。しかし、新データのために利用可能な更新ブロックがあってガーベッジコレクションが不要であるならば、代わりに損耗均等化を行うために時間を使うことができる。1つの特定の手法では、損耗均等化アルゴリズムは損耗均等化交換が望ましいことをその都度指摘し、交換はガーベッジコレクションが不要な次の書込み操作中に行われる。
【0053】
図10は、図9のタイミングでの図8のメモリシステムにおけるガーベッジコレクションおよびデータ書き込みの例を示す。2つの更新ブロック1および2が存在するが、現在のデータユニットを書き込むためにそのいずれもが利用できないとき、それらの一方が閉じられて、消去済みブロックプールからの別の1つのブロックがこのデータを受け入れるために開かれる。その理由は、この例では2つの更新ブロックだけが許されることにある。更新ブロック1が共通論理グループ内のデータ更新だけを受け取ることによってブロックAにリンクされるならば、更新ブロック1は他の何らかの論理グループのデータを格納するためには使用され得ない。更新ブロック2も同じ制約を持ち得る。従って、更新ブロック1は図10に示されているガーベッジコレクション操作により閉じられ、ブロックAおよびその更新ブロック1の各々の中の有効なデータは消去済みブロックBにコピーされる。その後、ブロックAおよび更新ブロック1は消去され、これにより2つのさらなる消去プールブロックが提供される。それらの一方はその後、更新ブロック3として示されている新しい第2の更新ブロックとして開かれ得、その後、その中にメモリコントローラのバッファからのデータが格納される。
【0054】
しかし、図8のメモリシステムにおける書き込みコマンドの実行は、ガーベッジコレクションが行われることを常に必要とするわけではない。例えば、それは、開いている更新ブロックにデータを書き込めるときには、不要である。そのような場合、図9に示されているようにガーベッジコレクションの代わりに損耗均等化操作が行われ得、このときも、損耗均等化操作中に使える更新ブロックが存在する。図11は、この場合をさらに示している。損耗均等化は、この例では、データをソースブロックAから更新ブロック1にコピーする動作を含む。その後、コントローラバッファからのデータが更新ブロック2に書き込まれる。その後、ソースブロックAは消去されて、消去プールブロックとして利用可能になる。図11の例は、ソースブロックAに格納されている論理グループに更新ブロック1が割り当てられているということを仮定している。使用されているシステム更新ブロックは普通非常に少ないので、これは普通でない場合である。より一般的には、ソースブロックAが損耗均等化交換を受けられるようになる前に新しい更新ブロックが開かれなければならない。新しい更新ブロックを開く動作は、通常、別の1つの更新ブロックを閉じる動作を含み、これも普通はガーベッジコレクションを含む。
【0055】
図9のタイミング図に従う動作の具体的な例が図12の動作フローチャートにより示され、ここで、書き込み動作を可能にするためにガーベッジコレクションが行われなくてもよいならば、代わりに損耗均等化が行われる。ステップ225でホストから書き込みコマンドを受け取ったことに応答して、書き込まれるべきデータがステップ227でホストから受け取られてメモリシステムコントローラのバッファメモリに格納される。ステップ229で、現在の書込み操作に用いるために更新ブロックを解放するためにガーベッジコレクションが必要か否かが判定され、必要ならば、ガーベッジコレクションが行われる。ステップ227および229の順序は逆にされてもよく、或いは、図9に示されているように、時間の一部にわたって同時に実行されてもよい。ステップ229は、ガーベッジコレクションが行われる場合にガーベッジコレクションのカウンタを増分することも含む。このカウンタは前もってリセットされ、このカウントは後にガーベッジコレクションが行われたか否かを判定するために参照される。
【0056】
次のステップ231で、損耗均等化交換が継続しているか否かが問われる。すなわち、損耗均等化を開始するのに必要な条件が存在するか否かが判定される。前に援用されている特許および特許出願で説明されているように、多数の異なる損耗均等化アルゴリズムがあって、いろいろなイベントがその動作をトリガーする。本願明細書で説明されている損耗均等化の実施形態では、損耗均等化はメモリブロックまたはメタブロックのN消去サイクルごとに開始される。数Nは、例えば約50であり得る。これは出発点であるが、以下で説明するように、損耗均等化がかなりの期間にわたって延期されなければならないときには判定は多少もっと複雑になる。そのような延期は、例えば、多数の連続する書き込み操作がガーベッジコレクションを各々必要とするときに、発生する。そのときには、損耗均等化のために使えるメモリシステムビジー期間はない。これは、例えば、別々の論理グループ内の単一ユニットのデータの連続する数個の書き込みがあるときに、発生する。
【0057】
損耗均等化が継続していれば、次のステップ233はガーベッジコレクションのカウンタのカウントを調べる。そのカウントがゼロでなければ、これは、ステップ229でガーベッジコレクションが行われたことを、従って、損耗均等化を行う充分な時間がないことも示す。それゆえ損耗均等化は省かれる。しかし、カウントがゼロならば、これはガーベッジコレクションが行われていなくて、従って損耗均等化を行う充分な時間があるかもしれないことを示す。しかし、最初に、ステップ235により、損耗均等化に使うための自由な或いは空の更新ブロックがあるか否かが判定される。否であれば、更新ブロックを得るのに必要なガーベッジコレクションと損耗均等化との両方を行うのに充分な時間はないであろうから、損耗均等化は省かれる。しかし、利用可能な更新ブロックがあれば、前に特定された損耗均等化の特許および特許出願のうちの1つに記載されているアルゴリズムまたは以下のアルゴリズムに従ってステップ237で損耗均等化が行われる。一般に、損耗均等化操作は、損耗均等化のために利用可能な更新ブロックを開くことと、全てのデータをソースブロックからその開かれた更新ブロックにコピーすることと、その後にその更新ブロックを閉じると共にデータの論理グループをソースブロックから更新ブロック(宛先ブロック)に再マッピングするようにアドレス変換テーブルを更新することとを含む。
【0058】
その後、ステップ239で、メモリシステムコントローラのバッファに受け取られたデータがフラッシュメモリのブロックまたはメタブロックに書き込まれる。その後、ガーベッジコレクションのカウンタは、図12のフローチャートのプロセスによる次のデータ書き込みの間に使われるようにステップ241でゼロに戻される。
【0059】
損耗均等化交換を開始する方法の例が次に説明される。これは図12のステップ231の一部である。基本的に、損耗均等化は、システムのブロックがN回消去されるごとに開始される。これを監視するために、ブロックの消去の数のカウントがシステムレベルで維持される。しかし、この手法では、ブロックについての消去サイクルの数のカウントを個別に維持する必要はない。
【0060】
図12のフローチャートに表されているように、継続している損耗均等化交換は、所与のデータ書き込みサイクルの間、そうする充分な時間がないときには実行されなくてもよい。図9および12の例では、継続している損耗均等化交換は、書き込みコマンドを実行するためにガーベッジコレクションが行われなくてはならない場合には省かれる。メモリシステムが一連の、その都度単一のセクタの、データ書き込みを受け、それらのセクタが連続していない論理アドレスを有する場合、ガーベッジコレクションが各書き込み中に行われる。この状態および他の状態では、継続している損耗均等化操作は延期される。このタイプの遅延が生じるかどうかは、メモリシステムがどのように使用されるかによる。しかし、それがしばしは生じるならば、損耗均等化は余り有効ではなくなる。最も有益であるために、損耗均等化は幾つかのシステムブロック消去の一定の間隔を置いて生じるのが好ましい。
【0061】
従って、損耗均等化が著しい時間にわたって延期されたときには損耗均等化交換の間隔を名目上のNブロック消去間隔から変えるのが望ましい。省略された損耗均等化操作の数が維持され、それらは後にNブロック消去より短い間隔で各々継続され得る。図13A,13Bおよび13Cの曲線は、損耗均等化がN消去サイクルを超えて著しく延期された後に“追いつく”3つの異なる方法を示す。これらの曲線の水平軸は、総ブロックシステム消去カウントを示し、Nカウントごとに縦のマークが付いている。縦軸は、最後の損耗均等化操作以後のシステム消去サイクルの数(WLカウント)を示す。図13A,13Bおよび13Cは、各々、これらの例において損耗均等化交換が行われ得る期間を示すために“交換が行われ得る”を表示している。名目上、WLカウントの数がN(曲線を横切る破線)まで増大すると、損耗均等化が行われてWLカウントはゼロに戻る。これは、例えば、図13Aの271のところに示されている。
【0062】
WLカウントがNに達した図13Aの消去カウント273では、スケジュールされている損耗均等化は行われない。損耗均等化は、事情が損耗均等化が行われることを許す消去カウント275まで、それ以上の多数の消去サイクル(Nのおよそ半分の)について行われない。そのときに、また、追いつくためにNより小さい間隔(およそNの半分)の後に消去カウント277で、損耗均等化が行われる。しかし、その後、損耗均等化が行われ得ない非常に長い期間がある。この長い期間の故に、省略された損耗均等化交換の全て(この場合には4)は、可能になり次第、許されるならば、消去カウント279以後の各書き込みコマンドの間継続して、行われる。この手法は、単純であるという利点を有するけれども、メモリシステムが過去に多数の損耗均等化交換の省略を経験しているならば、メモリシステムの性能に悪影響を及ぼし得る。
【0063】
図13Bは、損耗均等化が非常に長い間行われない場合を処理する改変された方法を示す。この例では、その長期間後の第1の損耗均等化交換は281で行われ、また連続する操作がNの半分の消去カウントで行われる。この例でも省略された損耗均等化交換が補充され得るけれども、図13Aの場合のように損耗均等化がまた行われ得るようになったらなるべく速くそれらを行う代わりに、図13Bの手法はその補充損耗均等化交換同士を或る程度少なくともNの半分だけ離す。この手法は、損耗均等化交換のより均一な分散を提供する。
【0064】
好ましい手法が図13Cに示されている。省略された損耗均等化交換の全てを補充するのではなくて、それらの間の間隔は或る程度小さくされるが、それらのうちの他のものは全く補充されない。図13Aおよび13Bの例と同じく、最後の損耗均等化を実行し得ることに関しての遅れを取り返すために、283における損耗均等化は最後のものからNの半分の消去カウントで行われる。しかし、それから後に損耗均等化交換のない同じ長い期間がある場合、この期間後の285における第2の損耗均等化交換は287における第1のものからNの半分の消去サイクルの後に行われるが、その後の交換は標準のN消去サイクル間隔で行われる。省略された損耗均等化交換のうちの幾つかは単に補充されない。この手法による損耗均等化交換を開始するための具体的な基準は、WLカウントがNより大きくなった後に損耗均等化交換が行われるとき、第2の交換がNの半分の消去カウントの後に行われるということである。しかし、その後の損耗均等化交換は、どんなに多くの交換が省略されていたとしても、標準のN消去カウント間隔で行われる。
【0065】
図13A,13Bおよび13Cは、損耗均等化を行えない長い期間を処理する3つの異なる方法を提供するが、そうする方法はこれらだけではない。
【0066】
第2の損耗均等化の実施形態
図14〜16は、損耗均等化操作を行うための、更新ブロックが前から存在することを必要としない代わりの手法を示す。前述したように、図9の方法は、自由な或いは空の更新ブロックが存在しなければ、ステップ235により継続している損耗均等化操作の実行を省略する。一方、図14の手法では、対応するステップ235’による、利用し得る更新ブロックがないという判定は、継続している損耗均等化操作を省略させない。むしろ、継続している損耗均等化操作は、現在の書き込みコマンドの実行中に、後に自動的に完了するように、開始される。現在の書き込みコマンド中に損耗均等化操作を始めるために要する時間は非常に短いので、ガーベッジコレクションまたは他の時間を消費するハウスキーピング機能もそのビジー期間中に行われ得る。また、開始された損耗均等化操作が後の書き込みコマンドの実行中に完了することを確実にするためにそれ以上何もしなくてもよい。なぜならば、それは標準のガーベッジコレクション操作により完了させられるからである。
【0067】
利用可能な更新ブロックがあれば(図14のステップ235’のところの“はい”)、図9の損耗均等化239に対応して、損耗均等化237’が現在の書き込みコマンドの実行中に行われる。しかし、限られた数のメモリシステム更新ブロックのうちのいずれも利用可能でなければ、図14のステップ301〜304を損耗均等化操作を後に完了するようにセットアップする。同時に開いていることのできる更新ブロックの数を制限するメモリシステムにおいて損耗均等化交換に用いる更新ブロックを開くために、現存する更新ブロックが最初に閉じられなければならない。これはステップ301で行われ、ここでシステム更新ブロックが閉じられるが、例えばシステム更新ブロックのうちの、その時点で最も長く使用されていないもの(LRU)を閉じるのが好ましい。次のステップ302で、消去済みブロックがこの損耗均等化操作のために更新ブロックとして開かれる。次のステップ303で、データの第1のページまたはメタページ(メモリ構造による)が、ソースブロックから今開かれたばかりの更新ブロックにコピーされる。現在の書き込みコマンドの実行中にはこの1つのページまたはメタページだけがコピーされればよいのであるが、時間が利用可能であればそれ以上がコピーされてもよい。全てのデータをソースブロックから新しい更新ブロックにコピーするために必要な時間の量は、特に非常に大きなブロックの場合には、現在の書き込みコマンドの実行中に利用し得るよりも長いことがある。従って、好ましくはソースブロックから最少量のデータ(好ましくはソースブロック内のデータのわずか4分の1)をコピーすることによって、現在の書き込みコマンドの実行から或る程度の時間の後に完了するように損耗均等化交換をセットアップするために充分なことが行われる。
【0068】
オプションの最適化として、次のステップ304は、1つのページまたはメタページのデータを有する新しい更新ブロックを、強制的に、システム更新ブロックのうちのその時点で最も長く使用されていないもの(LRU)として特定させ得る。この更新ブロックは、今開かれたばかりなので、確かにその時点で最も長く使用されていないものではない。しかし、それをLRU更新ブロックとして指定することによって、それは次に他の更新ブロックが開かれなければならないときに閉じられる。その閉じるプロセスは、最も便利にはソースブロックから残りのページをこのブロックにコピーすることによって実行される、行われるべきガーベッジコレクションを含む。このブロックはその後に閉じられ、必要な新しい更新ブロックが開かれる。損耗均等化交換はメモリシステムの標準的操作の間に完了している。損耗均等化交換の完了のために、それが一旦セットアップされたならば、特別の操作は不要である。
【0069】
図15は、このプロセスをタイミング図により示す。データの例としてのユニット1および2に関しての現在の書き込みコマンドの実行は間隔307中に行われる。更新ブロックを書き込みコマンドの実行に利用し得るようにするために必要なガーベッジコレクションは最初の間隔309の間に行われ、これに間隔311が続き、その間に、図14のステップ301〜304に関して前述したように損耗均等化操作がセットアップされる。その後に、ホストからコントローラバッファメモリに受け取られたデータのユニット1および2は間隔313の間にフラッシュメモリに書き込まれる。
【0070】
その後の間隔315の間に、開いた更新ブロックを設けるためにガーベッジコレクションを必要とする次の書き込みコマンドの実行が行われ、ガーベッジコレクション317は損耗均等化交換を完了させる。その後、この例においてデータユニット3および4は間隔319の間にフラッシュメモリに書き込まれる。
【0071】
図14および15のプロセスは、さらに別の方法で図16により示される。データの1つのページまたはメタページが、損耗均等化のために指定されたソースブロックから、新しく開かれた更新ブロック3にコピーされる(データコピー1)。何時でも同時に2つの更新ブロックだけが開かれていることを許すメモリシステムを仮定すると、更新ブロック3を開けるように更新ブロック2は閉じられた。これは、図15の時間間隔307の間に、図14のステップ301〜304により実行される。その後、図15の時間間隔315の間に、ソースブロックからの残りのデータが更新ブロック3にコピーされる(データコピー2)。従って、後の書き込みコマンドを実行するために必要にされたガーベッジコレクション317は、前にセットアップされていた損耗均等化交換を完成させている。
【0072】
1ページ以上のデータを新しい更新ブロックにコピーすることは、それを、ガーベッジコレクションプロセスを改変することを必要とせずに、後のガーベッジコレクションのためにセットアップする。損耗均等化交換は、いくぶん自動的に完了する。或いは、最初は新しい更新ブロックにデータをコピーする必要はないが、それにコピーされるべきデータのソースブロックを識別するフラグを付することができる。後にそのフラグに応じてデータ交換を行わせることができる。
【0073】
同じデータ書き込みおよび損耗均等化操作を成し遂げる代わりの方法が図17のタイミング図により示されている。メモリビジー信号は、単一の書き込みコマンドの実行中にデータユニット1,2および3の各々の転送の後にアサートされる。この例について、前述したように、書き込みコマンドを実行するための更新ブロックを得るためにガーベッジコレクションが必要であり、その後に損耗均等化を行うために他の1つのガーベッジコレクションが必要であるということが仮定される。これは、図14のブロック235’からの“いいえ”経路をとるけれども、そこに示されているのとは別様に事態を処理する。データ書き込みに必要なガーベッジコレクション321(図17)は、第1のビジー信号の間に行われる。その後、第2のビジー信号の間にガーベッジコレクション323は損耗均等化交換のための更新ブロックを作る。その後に損耗均等化交換325の全体が第3のビジー信号の間に行われ、データユニット1,2および3はフラッシュメモリに後に(図示せず)書き込まれる。
【0074】
図17の例では図14〜16の例と同じ機能が行われるが、それらを成し遂げるために余分のビジー信号期間を必要とする。これにより図14〜16の例では、書き込みコマンドを実行することと損耗均等化交換の大部分を実行することとの両方のためにガーベッジコレクション操作319を利用することによりメモリ性能がより良好である。
【0075】
図14〜16の例では、損耗均等化交換は、1つが継続しているたびに開始され得る。従って、損耗均等化は、Nメモリシステム消去サイクルごとに、前述した第1の実施形態でそうであったように省略されることを必要とせずに定期的に行われ得る。従って、図13A,13Bおよび13Cの手続きのような手続きは不要である。
【0076】
第3の損耗均等化の実施形態
図18の動作フローチャートは、図12の動作フローチャートに類似しているが、複数の連続するビジー期間中に単数または複数のハウスキーピングタスクを実行する。ステップ243で書き込みコマンドを受け取った後、次のステップ245で時間割り当てが計算される。すなわち、この書込み操作でハウスキーピング操作を実行するために利用可能な時間の量が最初に判定される。これは、主として、(1)ホストタイムアウトを超えずに各データユニットが転送された後にアサートされ得るメモリシステムビジー信号の最大持続時間に(2)現在の書き込みコマンドにより転送されるデータのユニットの数で表されたデータ転送の長さを乗ずることを含む。なぜならば、以下に説明する図19および20に最もよく示されているように、コントローラがハウスキーピングを行うために利用し得る時間がデータの各ユニットが転送されるときと同時に、またその後に現れるからである。
【0077】
次のステップ247により、データの複数のユニットのうちの第1のユニットがコントローラバッファメモリに受け取られ、書き込みコマンドを実行できるために必要ならば、ガーベッジコレクションがステップ249で開始される。その後、カウンタなどを減らすことにより、ステップ245で判定された時間割り当てが、このガーベッジコレクションを行うのに要する量の時間だけ(図示せず)減らされ得る。
【0078】
ステップ251で、データの第2のユニットが受け取られ、現在のデータ書込み操作中に損耗均等化も実行され得るか否かが判定される。ステップ253により、継続している損耗均等化交換があるか否かが、すなわち使用される特定の損耗均等化アルゴリズムに従って損耗均等化を開始する条件が存在するか否かが判定される。あるならば、次のステップ255で、損耗均等化に使用される自由な或いは空の更新ブロックの存在が判定される。1つ存在するならば、損耗均等化が実行され(ステップ257)、次に現在の書き込みコマンドのそれ以上のデータユニットを受け取り(ステップ259)、現在の書き込みコマンドのデータユニットをフラッシュメモリに書き込む(ステップ261)。もちろん、ステップ253によって継続中の損耗均等化がないと判定されたならば、処理はそこからステップ259にじかに移行する。
【0079】
ステップ255に戻って、損耗均等化中に直ぐに利用できる更新ブロックがなかったならば、次のステップ263は、そのような更新ブロックを得るためにガーベッジコレクションを行う時間があるか否かを確かめる。この例では、ガーベッジコレクションおよび損耗均等化交換の各々はホストからのデータユニットの受け取り後のメモリシステムからのビジー信号の間に行われるので、この照会はデータの第3のユニットがあるか否かである。あるならば、それが受け取られ(ステップ265)、必要なガーベッジコレクション(ステップ267)が行われる。ステップ257の損耗均等化はその後に行われる。しかし、この付加的なガーベッジコレクションのための時間がなければ、プロセスはステップ261に直接進む。
【0080】
図18のプロセスの変形例として、時間割り当てステップ245の直後に、ガーベッジコレクションおよび損耗均等化交換のうちから、そのための時間があるものを選択することができる。そのための時間がある操作はその後に次々にスケジュールされ得る。これを行うために必要な全ての情報は、書き込みコマンドを受け取った直後に利用可能である。特定の操作が1つのメモリシステムビジー期間内に完了し得なければ、それは他の一つのビジー期間にまで及ぶようにスケジュールされ得る。このようにして、これらのおよび他のハウスキーピング操作のための最大量の時間が非常に効率的に利用され得る。
【0081】
1つの具体的な操作方法が図19のタイミング図により示され、ここでデータの2つのユニット1および2を書き込む単一の操作の間にガーベッジコレクションと損耗均等化との両方が行われる。メモリシステムは、第1のデータユニットの転送後に必要なガーベッジコレクションを行うために充分な時間にわたってそのビジー信号を維持する。ガーベッジコレクションが完了すると、直ちにビジー信号は除去され、ホストは第2のデータユニットを送る。メモリシステムは、その後、第2のデータユニットの転送後、損耗均等化を行うのに充分な時間にわたって再びビジー信号をアサートする。その後、両方のデータユニットがコントローラバッファメモリからフラッシュメモリのブロックに書き込まれ、その後に、メモリシステムが新しいコマンドを受け取れることをホストに示すためにビジー信号が非アクティブにされる。図19において、メモリシステムバッファへのホストのユニット1および2の転送の間に付加的なビジー期間が挿入されている。前述した図17の場合にもそうである。
【0082】
2つの異なるハウスキーピング操作、すなわちガーベッジコレクションおよび損耗均等化が連続するメモリシステムビジー期間中に行われるが、図19のメモリシステムビジー期間の各々の間に1つのそのような操作が実行される。その代わりに、特に、ブロック同士の間でデータを転送するためにほとんどの時間が使われるガーベッジコレクションと損耗均等化との場合には、ガーベッジコレクションまたは損耗均等化交換をその2つの連続する期間に分けることができる。その場合、データをコピーする操作の一部は第1のメモリシステムビジー期間の間に行われ、その後に第2のビジー期間の間に完了する。
【0083】
データ書込み操作は、しばしば、図9および19に示されている2つよりも多いデータユニットの転送を含む。これは、メモリシステム内でガーベッジコレクション、損耗均等化または他のハウスキーピング機能を実行する付加的な機会を提供する。図20はこの例を示し、ここで1つのホスト書き込みコマンドは4つのデータユニット1,2,3および4のためのものである。メモリシステムは、必要であるかまたは望ましければ、連続する期間217,219および221にわたって1つ以上のガーベッジコレクション、損耗均等化または他のハウスキーピング操作を行うことができる。これを行い、またデータを書き込むために、メモリシステムは各データ転送後にビジー信号期間を挿入する。これは、個々のビジー期間を短縮し或いは充分に利用できるようにハウスキーピング機能の実行を複数のメモリシステムビジー期間に広げることができるという利点を有する。
【0084】
図20の例では、ハウスキーピング期間217,219および221の各々が終了するとビジー信号が非アクティブにされ、これに起因してホストは次のデータユニットを送る。或いは、ビジー信号のアサート解除は期間217,219および221の終了と同期しなくてもよい。ビジー信号の持続時間は、期間217,219および221を含む時間を単一の期間として利用できるように他の何らかの仕方で制御され得る。この場合にビジー信号のアサートを制御する1つの仕方は、所望の操作が完了するまで各々の場合にそれをなるべく長くすることであり、その後、ビジー信号は必要な短い時間だけアサートされる。ビジー信号を制御する他の仕方は、ビジー信号の各々に大体同じ持続時間を持たせることである。この共通の持続時間は、書き込みコマンドの受け取り時に、単数または複数の操作を完了するのに必要な時間を現在の書き込みコマンドにより転送されるデータユニットの数で割って決定される。
【0085】
損耗均等化アルゴリズムの例
図12のステップ237および図18のステップ257で実行され得る具体的な損耗均等化アルゴリズムについて以下に説明する。1つのソースブロックと1つの宛先ブロックとが選択される。ソースブロックを選択するために論理グループ(図8の211)を通ってポインタが増分される。1つのブロックが損耗均等化を受けた後、ポインタは順番に次の論理グループに移り、そのグループがマッピングされる物理ブロックがソースブロックとして選択される。或いは、ポインタは直接に物理ブロックを通って増分されてもよい。
【0086】
指されたブロックは、一定の付加的な基準が満たされるならば、ソースブロックとして選択される。ブロックは、ホストデータを包含しなければならず、それが( 図8に関して説明したものに加えて)メモリシステム制御データを包含する予備ブロックであるならば選択されない。その理由は、予備ブロックの使用法の性質の故に、それらに対して損耗均等化を行うことを必要とせずにそれらがメモリを通って循環させられることにある。ブロックは、開いている更新ブロックがそれに関連付けられている場合にも、ソースブロックとしては選択されない。更新ブロックの存在は、そのブロックにマッピングされた論理グループのためのデータがそのブロックとその更新ブロックとの両方に包含されているということを意味する。また、もちろん、欠陥があるためにマッピングアウトされているブロックもソースブロックとして選択されない。
【0087】
指されたブロックが、これらのまたは他の何らかの理由からソースブロックとして適していなければ、ポインタは順番に次の論理グループまたは物理ブロックへ増分され、この次のブロックも前述した基準と対照されて試験される。この第2のブロックが試験に合格しなければ、他のものが指されて試験される。適切なブロックが見つからないときに考慮されるブロックの数に好ましくは最大数が課される。その後、現在の損耗均等化交換は中止され、調査は次の損耗均等化交換中に再び始められる。
【0088】
宛先ブロックは消去済みプールブロックから選択され、普通は、ホストからのデータの格納のために使われるように置かれている次のブロックである。しかし、ホストデータを格納する代わりに、ソースブロックからのデータがこの宛先ブロックにコピーされる。マッピングテーブル(215)は、その後、これらのデータが属する論理グループが新しいブロックにマッピングされるように、更新される。その後、ソースブロックは消去されて消去プール内に置かれる。
【0089】
他の実施形態
図21のタイミング図は、単一のハウスキーピング操作が2つ以上の書き込みコマンドの実行中に行われる例を示す。ハウスキーピング操作の一部分331は1つの書き込みコマンドの実行中に行われ、他の一部分333は次の書き込みコマンドの実行中に行われる。ハウスキーピング操作は3つ以上の書き込みコマンド実行に分散されてもよく、また連続する書き込み実行中に行われなくてもよいが、時間上でさらに分散され得る。この能力を持つことの利点は、特定のハウスキーピング操作を実行するのに必要な時間を特定の書き込みサイクルのメモリビジー信号持続時間から切り離せることである。実際に、連続する書き込みコマンド実行中にメモリシステムビジー信号に均一な持続時間を持たせることができ、個々のハウスキーピング操作を数個のそのようなビジー信号期間にわたって実行することができる。
【0090】
拡張されたビジー期間(単数または複数)から利益を得る他の1つのハウスキーピング機能は、前述したメモリセルに蓄積された電荷レベルのリフレッシュ(スクラブ)である。受信されたコマンドの実行に関わらない1つ以上のブロックまたはメタブロック内のメモリセルがリフレッシュされる。他の一つは先制ガーベッジコレクションであり、これも前述した。そのようなガーベッジコレクションも、受信されたコマンドの実行に関わらないブロックまたはメタブロック内のデータに関して行われる。受信されたコマンドの実行に同様に不要で必要とされない他のオーバーヘッド操作も、メモリシステムによりアサートされたビジー期間中に実行され得る。これは、大量のデータをコピーすることを必要とするハウスキーピング操作のために特に有益である。なぜならば、そのようなコピー動作はかなりの時間を消費するからである。ホストコマンドの実行中に行われる損耗均等化、スクラッビング、先制ガーベッジコレクション或いは他の類似操作のいずれも、そのコマンドの実行の必須の部分ではない。それらは、受信されたコマンドに直接関連しておらず、またこのコマンドによりトリガーされない。そのような他の操作を行う時間の量についての制限を除けば、ホストコマンドの実行中に行うことのできることについての制限はほとんどない。
【0091】
さらに、そのような関係のない操作を書き込みコマンドの実行中に実行することに加えて、メモリシステムがビジー信号のアサートまたは他の方法でさらなるホストコマンドの受信を遅らせるように動作できる他のホストコマンドの実行中にそれらを実行することもできる。1つのそのような他のコマンドは読み出しコマンドである。図22は、間隔341中にデータユニットがフラッシュメモリからコントローラメモリに読み込まれることを示している。メモリビジー信号は、この期間中アクティブである。しかし、その直後にビジー信号を落とすのではなくて、それが間隔343中にハウスキーピング操作(または1つの一部分)が行われるための時間を提供するために延長される。ビジー信号が落ちると、データユニット1および2がホストに転送される。図に示されているように、ハウスキーピング操作もこの期間の終わりまで延長され得る。書き込みコマンドの実行中にハウスキーピングを行うために前に論じられた手法の多くは、読み出しコマンドの実行中にそうすることにも応用され得る。
【0092】
結論
本発明の種々の態様をその代表的な実施形態に関して説明してきたが、本発明が添付されている特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
【技術分野】
【0001】
本発明は、一般的には不揮発性フラッシュメモリシステムの操作に関し、特にそのようなメモリシステムにおける損耗均等化(wear leveling) のようなハウスキーピング操作を実行する手法に関する。本願明細書において参照された全ての特許、特許出願、論文および他の刊行物は、あらゆる目的のためにその全体が本願明細書において参照により援用されている。
【背景技術】
【0002】
多くの商業的に成功した不揮発性メモリ製品が、特に小形形状の取り外し可能なファクタカードまたは埋め込みモジュールの形で、今日使用され、それらは、1つ以上の集積回路チップ上に形成されたフラッシュEEPROM(電気的に消去可能でプログラム可能な読み出し専用メモリ)のアレイを使用する。普通は(必ずしもそうではないが)別の集積回路チップ上に存するメモリコントローラが、システムが接続されるホストとインターフェイスするようにメモリシステムに含まれてカード内のメモリアレイの動作を制御する。そのようなコントローラは、通常、マイクロプロセッサと、何らかの不揮発性読み出し専用メモリ(ROM)と、揮発性ランダムアクセスメモリ(RAM)と、データがデータのプログラミングおよび読み出しの間にコントローラを通過するときにデータから誤り訂正符号(ECC)を計算するもののような1つ以上の特別の回路とを含む。他のメモリカードおよび埋め込みモジュールはそのようなコントローラを含まないが、それらが接続されるホストが、コントローラ機能を提供するソフトウェアを含む。カードの形のメモリシステムは、ホストの外側のレセプタクルと結合するコネクタを含む。一方、ホスト内に埋め込まれたメモリシステムは、取り外されるように意図されてはいない。
【0003】
コントローラを含む商業的に入手可能なメモリカードの幾つかは、次の商標、すなわちコンパクトフラッシュ(CF)、マルチメディア(MMC)、セキュアデジタル(SD)、ミニSD、マイクロSD、およびトランスフラッシュのもとで販売されている。コントローラを含まないメモリシステムの例はスマートメディアカードである。これらのカードの全ては、本願の譲受人であるサンディスク コーポレイションから入手可能である。これらのカードの各々は、それが取り外し可能に接続されるホスト装置との特別な機械的および電気的インターフェイスを有する。小形のハンドヘルド式フラッシュメモリ装置の他のクラスは、標準的ユニバーサルシリアルバス(USB)コネクタを通してホストとインターフェイスするフラッシュドライブを含む。サンディスク コーポレイションは、そのような装置をクルーザー(Cruzer)という登録商標の下で提供している。カードのためのホストは、パーソナルコンピュータ、ノートブックコンピュータ、個人用携帯情報端末(PDA)、種々のデータ通信装置、デジタルカメラ、携帯電話機、携帯用オーディオプレーヤ、自動車音響システム、および類似のタイプの装置を含む。フラッシュドライブは、パーソナルコンピュータおよびノートブックコンピュータのような、USBレセプタクルを有するどのようなホストとも協働する。
【0004】
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)で説明されている。
【0005】
NANDアレイは、1つ以上の選択トランジスタと共に個々のビット線と基準電位との間に接続されてセルの列を形成する、16個または32個などの、2つより多いメモリセルの直列ストリングを利用する。ワード線は、多数のこれらの列の中でセルを横断して延びる。列内の個々のセルは、ストリングを流れる電流がアドレス指定されたセルに蓄積されている電荷のレベルに依存することとなるようにストリング中の残りのセルをオンに転換しにくくすることによって、プログラミング中に読み出されベリファイされる。メモリシステムの一部としてのNAND構造のアレイおよびその動作の例が、米国特許第5,570,315号(特許文献8)、第5,774,397号(特許文献9)、第6,046,935号(特許文献10)、第6,373,746号(特許文献11)、第6,456,528号(特許文献12)、第6,522,580号(特許文献13)、第6,771,536号(特許文献14)、および第6,781,877号(特許文献15)に見出される。
【0006】
前に引用された特許において論じられている、現行のフラッシュEEPROMアレイの電荷記憶素子は、最も一般的には、通常伝導性にドープされたポリシリコン材料から形成される、導電性フローティングゲートである。フラッシュEEPROMシステムにおいて有益な代わりのタイプのメモリセルは、電荷を不揮発性に蓄積するために伝導性フローティングゲートの代わりに非伝導性誘電体材料を利用する。酸化ケイ素、窒化ケイ素および酸化ケイ素から成る3層誘電体(ONO)が、伝導性コントロールゲートと、メモリセルチャネルの上の半伝導性基板の表面との間に挟まれる。セルは、電子をセルチャネルから窒化物に注入することによってプログラムされ、そこでそれらは限られた領域に捕獲され蓄積され、窒化物にホットホールを注入することによって消去される。誘電体記憶素子を使用するいくつかの具体的なセル構造とアレイとが、ハラリらの米国公開特許出願第2003/0109093号(特許文献16)で説明されている。
【0007】
ほとんど全ての集積回路の用途の場合と同じく、或る集積回路機能を実現するために必要とされるシリコン基板面積を小さくする圧力がフラッシュEEPROMメモリセルアレイに関しても存在する。所与のサイズのメモリカードおよび他のタイプのパッケージの記憶容量を増やすために、或いは容量を増やしかつサイズを小さくするために、シリコン基板の所与の領域に格納され得るデジタルデータの量を増やすことがしばしば望まれる。データの記憶密度を増やす1つの方法は、メモリセルあたりおよび/または記憶ユニットまたは記憶素子あたり1ビットより多いデータを格納することである。これは、記憶素子電荷レベル電圧範囲のウィンドウを2つより多い状態に分割することによって達成される。そのような状態を4つ用いれば各セルは2ビットのデータを記憶することができ、8個の状態は記憶素子あたりに3ビットを記憶させるなどである。フローティングゲートを用いる多状態フラッシュEEPROM構造およびその動作が、米国特許第5,043,940号(特許文献17)および第5,172,338号(特許文献18)で説明され、誘電体フローティングゲートを用いる構造については前述した米国公開特許出願第2003/0109093号(特許文献16)で説明されている。多状態メモリセルアレイの選択された部分は、いろいろな理由から、米国特許第5,930,167号(特許文献19)および第6,456,528号(特許文献12)に記載されているように、2状態(バイナリ)でも操作され得る。
【0008】
代表的なフラッシュEEPROMアレイのメモリセルは、一緒に消去されるセルの別々のブロックに分けられる。すなわち、ブロックは消去単位、すなわち同時に消去可能な最小数のセル、である。各ブロックは通常1ページ以上のデータを記憶し、ページはプログラミングおよび読み出しの最小単位であるが、別々のサブアレイまたはプレーンにおいて1ページより多くが並列にプログラムされ或いは読み出されてもよい。各ページは通常1セクタ以上のデータを記憶し、セクタのサイズはホストシステムにより定められる。一例としてのセクタは、磁気ディスクドライブに関して確立された標準規格に従う512バイトのユーザデータと、これに加えられる、そのユーザデータにかつ/またはそれが格納されているブロックに関する数バイトのオーバーヘッド情報とを含む。そのようなメモリは通常各ブロック内に16ページ、32ページ、或いはそれより多くのページを有するように設定され、各ページは1つまたはほんの少数のホストセクタのデータを記憶する。
【0009】
ユーザデータをメモリアレイにプログラムし、またメモリアレイからユーザデータを読み出す間の並列度を高めるために、アレイは、通常、一般にプレーンと称されるサブアレイに分割され、それらは、幾つかのプレーンの各々にまたは全プレーンに同時にデータのセクタをプログラムし或いはそれらから同時にデータのセクタを読み出し得るように並列動作を可能にするために、それら自身のデータレジスタおよび他の回路を含む。単一の集積回路上のアレイは物理的に複数のプレーンに分割され得、或いは各プレーンは別々の1つ以上の集積回路チップから形成され得る。このようなメモリの実施例が、米国特許第5,798,968号(特許文献20)および第5,890,192号(特許文献21)に記載されている。
【0010】
メモリをさらに効率よく管理するために、ブロック同士を結合させて仮想ブロックまたはメタブロックを形成することができる。すなわち、各メタブロックは、各プレーンからの1つのブロックを含むように定められる。メタブロックの使用が、米国特許第6,763,424号(特許文献22)で説明されている。メタブロックの物理アドレスは、データをプログラムしかつ読み出すための宛先として論理ブロックアドレスからの変換により確立される。同様に、メタブロックの全てのブロックは一緒に消去される。このような大きなブロックおよび/またはメタブロックを持って操作されるメモリシステムのコントローラは、ホストから受け取られた論理ブロックアドレス(LBA)とメモリセルアレイ内の物理ブロック番号(PBN)との間の変換を含む幾つかの機能を実行する。ブロック内の個々のページは、通常、ブロックアドレス内のオフセットにより識別される。アドレス変換は、しばしば、論理ブロック番号(LBN)と論的ページとの中間用語 (intermediate terms) の使用を必要とする。
【0011】
消去済みブロックプールにおいて維持される特別のブロックを用いて大きなブロックまたはメタブロックシステムを操作することは普通のことである。ブロックの容量より少ない1ページ以上のデータが更新されるとき、更新されたページをプールからの消去済みブロックに書き込み、その後に、変更されないページのデータを元ブロックから消去プールブロックにコピーするのが一般的である。この手法の変形例が、前述した米国特許第6,763,424号(特許文献22)に記載されている。時間が経つと、ホストデータファイルが書き換えられ更新される結果として、多くのブロックの割合に少数のページが有効なデータを包含し、残りのページは最早現行のデータではないデータを包含するように多くのブロックがなり得る。アレイのデータ記憶容量を効率よく使えるようにするために、有効なデータの論理的に関連するページが多数のブロックの中のフラグメントから時折集められて、より少数のブロックの中に整理統合される。このプロセスは一般に“ガーベッジコレクション”と称される。
【0012】
単一のブロックまたはメタブロック内のデータも、そのブロック内のかなりの量のデータが陳腐化したときに、圧縮され得る。これは、そのブロックの残りの有効なデータを空白の消去済みブロックの中にコピーし、その後に元ブロックを消去することを含む。そのコピーブロックは、元ブロックからの有効なデータの他に、以前は陳腐化したデータにより占められていた消去済み記憶容量を包含する。有効なデータは、通常、コピーブロックの中に論理的順序に配置され、これによりデータの読み出しをより容易にする。
【0013】
メモリシステムの操作のための制御データは一般的には1つ以上の予備ブロックまたはメタブロックに格納される。そのような制御データは、プログラミング電圧および消去電圧のような操作パラメータと、ファイルディレクトリ情報およびブロック割り当て情報を含む。所与の時にコントローラがメモリシステムを操作するのに必要なだけの情報がRAMにも格納され、更新時にフラッシュメモリに書き戻される。制御データの頻繁な更新は、予備ブロックの頻繁な圧縮および/またはガーベッジコレクションという結果をもたらす。複数の予備ブロックがある場合には、2つ以上の予備ブロックのガーベッジコレクションが同時にトリガーされることがあり得る。そのような時間を消費する操作を避けるために、予備ブロックの自発的なガーベッジコレクションが、必要になる前に、それらがホストに収容されうるときに時々開始され得る。そのような先制データ再配置手法が、2004年8月13日に出願された米国特許出願第10/917,725号(特許文献23)に記載されている。ガーベッジコレクションは、ユーザデータ更新ブロックに対して、それが完全に満杯になり、それによりホストから提供されたデータをメモリに書き込めるようになる直前に行われなければならないガーベッジコレクションをトリガーするのを待つのではなくて、それがほぼ満杯になったときに行われてもよい。
【0014】
或るメモリシステムでは、物理的メモリセルは2つ以上のゾーンにもグループ分けされる。ゾーンは、物理的メモリまたはメモリシステムの、指定された範囲の論理ブロックアドレスが中にマッピングされる任意の区画されたサブセットであり得る。例えば、64メガバイトのデータを記憶できるメモリシステムは、ゾーンあたりに16メガバイトのデータを記憶する4つのゾーンに区画され得る。論理ブロックアドレスの範囲も4つのグループに分割され、1つのグループが4つのゾーンの各々の物理ブロックに割り当てられる。論理ブロックアドレスは、代表的な実施例では、その各々のデータが、それらの論理ブロックアドレスがマッピングされている単一の物理的ゾーンの外側には決して書き込まれないように、制限される。それ自身のアドレス指定回路、プログラミング回路および読み出し回路を各々有するプレーン(サブアレイ)に分割されているメモリセルアレイでは、各ゾーンは、好ましくは、複数のプレーンからのブロックを、一般的には各プレーンからの同数のブロックを、含む。ゾーンは、主として、論理から物理への変換のようなアドレス管理を簡略化するために使用され、その結果としてより小さな変換テーブルをもたらし、これらのテーブルを保持するために必要なRAMメモリを少なくし、メモリの現在アクティブな領域をアドレス指定するためのアクセス時間を高速化するけれども、その制限の多い性質の故に最適には及ばない損耗均等化をもたらすことがあり得る。
【0015】
個々のフラッシュEEPROMセルは1ビット以上のデータを表す量の電荷を電荷記憶素子またはユニットに蓄積する。記憶素子の電荷レベルはそのメモリセルのしきい値電圧(一般にVT として参照される)を制御し、それはセルの記憶状態を読み出す基礎として用いられる。しきい値電圧ウィンドウは、一般に、メモリセルの2つ以上の記憶状態の各々について1つずつ、数個の範囲に分割される。これらの範囲は、個々のセルの記憶状態を判定することを可能にする公称感知レベルを含むガードバンドにより分離される。これらの記憶レベルは、隣接するまたは関連する他のメモリセル、ページまたはブロックで実行される電荷を乱すプログラミング、読み出しまたは消去操作の結果として移動する。従って、通常、誤り訂正符号(ECC)がコントローラによって計算されて、プログラムされるホストデータと共に格納され、読み出し中にデータをベリファイし、必要ならば或るレベルのデータ訂正を行うために使用される。また、移動する電荷レベルを、乱す操作がそれらを定められた範囲の外へ完全に移動させ、従って間違ったデータを読み出させるようになる前に、時折その状態範囲の中央に復帰させることができる。この、データリフレッシュまたはスクラブと称されるプロセスは、米国特許第5,532,962号(特許文献24)および第5,909,449号(特許文献25)と、2003年10月3日に出願された米国特許出願第10/678,345号(特許文献26)とに記載されている。
【0016】
フラッシュメモリセルの応答性は、通常、時間が経つと、セルが消去され再プログラムされた回数の関数として変化する。これは、各々の消去および/または再プログラミング操作の間に少量の電荷が記憶素子誘電体層に捕獲され、それは時間が経つに連れて累積する結果であると考えられている。これは、一般に、メモリセルの信頼性が低下するという結果をもたらし、メモリセルが古くなるに連れて消去およびプログラミングのためにより高い電圧を必要とし得る。メモリ状態がそこでプログラムされ得るところの実効しきい値電圧ウィンドウも、電荷保持の結果として減少し得る。これは、例えば、米国特許第5,268,870号(特許文献27)に記載されている。結果は、メモリセルの限られた有効寿命である。すなわち、メモリセルブロックは、システム外にマッピングされる前に、前もって決められた数の消去および再プログラミングサイクルのみを受けるに過ぎない。フラッシュメモリブロックが望ましく受けるサイクルの数は、メモリセルの具体的な構造、記憶状態のために使用されるしきい値ウィンドウの総量、各セルの記憶状態の数が増えるに連れて普通は増大するしきい値ウィンドウの大きさによる。これらの要素と、他の要素とにより、ライフタイムサイクルの数は少なくて10,000、多くて100,000または数十万であり得る。
【0017】
前述した米国特許第5,268,870号(特許文献27)に記載されているように、個々のブロックのメモリセルが受けたサイクルの数を追跡することが望ましいと考えられるならば、各ブロックのために、またはブロックのグループの各々のためにカウントを維持することができ、それはブロックが消去されるごとに増分される。このカウントは、そこに記載されているように、各ブロックに格納され得、或いは米国特許第6,426,893号(特許文献28)に記載されているように別のブロックに他のオーバーヘッド情報と共に格納され得る。ブロックが最大ライフタイムサイクルカウントに達したときにブロックをシステム外にマッピングするために用いるほかに、カウントは、メモリセルブロックが古くなってゆくに連れて消去およびプログラミングパラメータを制御するために早くから使用され得る。サイクル数の正確なカウントを維持するのではなくて、米国特許第6,345,001号(特許文献29)はランダムなまたは擬似ランダムなイベントが発生したときにサイクル数の圧縮されたカウントを更新する手法を説明している。
【0018】
サイクルカウントは、システムのメモリセルブロックの使用を、それらがその寿命の終わりに達する前に、均すためにも使用され得る。幾つかの異なる損耗均等化手法が、米国特許第6,230,233号(特許文献30)、米国公開特許出願第2004/0083335号(特許文献31)、並びに2002年10月28日に出願された次の米国特許出願、すなわち第10/281,739号(現在、国際公開特許出願第2004/040578号として公開されている)(特許文献32)、第10/281,823号(現在、米国公開特許出願第2004/0177212号として公開されている)(特許文献33)、第10/281,670号(現在、国際公開特許出願第2004/040585号として公開されている)(特許文献34)、および第10/281,824号(現在、国際公開特許出願第2004/040459号として公開されている)(特許文献35)、に記載されている。損耗均等化の主な利点は、他のブロックがほとんど使用されていないのに或るブロックがその最大サイクルカウントに達し、これによりシステム外にマッピングされなければならなくなるのを防止することである。サイクルの数をシステムの全てのブロックに適度に均一に分散させることによって、メモリの総容量が良好な性能特性と共に長期間にわたって維持され得る。2004年11月15日に出願された米国特許出願第10/990,189号(特許文献36)に記載されているように、損耗均等化は、メモリブロックサイクルカウントを維持せずに実行されてもよい。
【0019】
損耗均等化の他のアプローチでは、論理−物理ブロックアドレス変換を、一度に1または数ブロック、増分することによってブロックの物理的ゾーン間の境界をメモリセルアレイ内で徐々に移動させる。これは、米国公開特許出願第2004/0083335号(特許文献31)で説明されている。
【0020】
メモリセルの少数のブロックがメモリシステムの他のものより遥かに多数の消去および再プログラミングサイクルを受けることの主な原因は、割合に少数の論理ブロックアドスのデータセクタをホストが頻繁に書き換えることである。これは、ファイル割り当てテーブル(FAT)などの、メモリに格納されているハウスキーピングデータの或るセクタをホストが頻繁に更新するメモリシステムの多くの用途において発生する。ホストの特定の使用も、少数の論理ブロックを他よりも遥かに頻繁にユーザデータで書き換えさせる原因になり得る。指定された論理ブロックアドレスにデータを書き込むホストからのコマンドを受け取ったことに応答して、そのデータは消去済みブロックのプールの小数のブロックのうちの1つに書き込まれる。すなわち、同じ論理ブロックアドレスの元データが存在する同じ物理ブロックにデータを再び書き込む代わりに、論理ブロックアドレスは消去済みブロックプールのブロックに再マッピングされる。元の現在無効なデータを含むブロックは、直ぐに消去されるか、または後のガーベッジコレクション操作の一部として消去され、その後に消去済みブロックプールに入れられる。小数の論理ブロックアドレス内のデータだけが他のブロックより遥かに多く更新されるとき、結果は、システムの割合に少数の物理ブロックがより高い率で循環されるということである。もちろん、前述した理由から、そのように著しく不均一な論理ブロックアクセスに遭遇するときには物理ブロックの損耗 (wear) を均す能力をメモリシステム内に設けることが望ましい。
【先行技術文献】
【特許文献】
【0021】
【特許文献1】米国特許第5,070,032号
【特許文献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,373,746号
【特許文献12】米国特許第6,456,528号
【特許文献13】米国特許第6,522,580号
【特許文献14】米国特許第6,771,536号
【特許文献15】米国特許第6,781,877号
【特許文献16】米国公開特許出願第2003/0109093号
【特許文献17】米国特許第5,043,940号
【特許文献18】米国特許第5,172,338号
【特許文献19】米国特許第5,930,167号
【特許文献20】米国特許第5,798,968号
【特許文献21】米国特許第5,890,192号
【特許文献22】米国特許第6,763,424号
【特許文献23】米国特許出願第10/917,725号
【特許文献24】米国特許第5,532,962号
【特許文献25】米国特許第5,909,449号
【特許文献26】米国特許出願第10/678,345号
【特許文献27】米国特許第5,268,870号
【特許文献28】米国特許第6,426,893号
【特許文献29】米国特許第6,345,001号
【特許文献30】米国特許第6,230,233号
【特許文献31】米国公開特許出願第2004/0083335号
【特許文献32】国際公開特許出願第2004/040578号
【特許文献33】米国公開特許出願第2004/0177212号
【特許文献34】国際公開特許出願第2004/040585号
【特許文献35】国際公開特許出願第2004/040459号
【特許文献36】米国特許出願第10/990,189号
【発明の概要】
【0022】
メモリシステムと操作可能に接続されているホストシステムから受信されたコマンドの実行中に、そのコマンドの実行のために設定された時間割り当て内で、ハウスキーピング操作が実行される。メモリシステムがコマンドを実行し得るために必要なハウスキーピング操作に加えて、受信されたコマンドの実行とは直接関連していなくて、この実行のために必要ではないハウスキーピング操作も実行され得る。そのような関連のないハウスキーピング操作は、コマンドが実行されるたびに行われなくてもよいが、或るコマンド実行の間だけに実行されるように限定され得る。例えば、終えるのに時間がかかり過ぎる関連のないハウスキーピング操作は、コマンド関連のハウスキーピング操作がそのコマンドを実行するために不要であるために必要な時間が利用し得るようになるコマンドの受信を待ってもよい。ホストコマンドの実行の一部としてハウスキーピング機能を実行することにより、ホストがハウスキーピング操作を完了させることを許すか否かに関して、それらがホストにより設定された既知の時間割り当て内で完了する限りは、不確実性はない。
【0023】
関連のないハウスキーピング操作は、損耗均等化、スクラッビング、データ圧縮、および先制ガーベッジコレクションを含むガーベッジコレクションを含む。ガーベッジコレクションまたはコマンド実行に必要な他のハウスキーピング操作に加えて、メモリシステムは、コマンドの実行に必要ではないハウスキーピング操作を実行することができる。例えば、損耗均等化は、書き込みコマンドを実行するためには不要であるけれども、割り当て内でそうする時間があるときには、そのようなコマンドの実行中に都合よく行われる。時間割り当ては、データ書き込みのようなコマンドを実行するためのホストタイムアウトなどにより、またはメモリシステムが投入されそうな用途において書き込みまたは読み出しの間に一定で最低の所要データ転送速度が存在することにより、確立される。複数のハウスキーピング操作を実行するのに充分な時間がない1つの特定の例では、ガーベッジコレクションが不要な書き込みコマンドの実行中に損耗均等化が実行される。
【0024】
本発明の付加的な態様、利点および特徴は、添付図面と関連して検討されるべきであるその代表的な例についての以下の説明に含まれている。
【図面の簡単な説明】
【0025】
【図1A】協働する不揮発性メモリとホストシステムとのブロック図である。
【図1B】協働する不揮発性メモリとホストシステムとのブロック図である。
【図2】図1Aのメモリアレイの第1の構成例を示す。
【図3】図1Aのメモリアレイに格納されたオーバーヘッドデータを有するホストデータセクタの例を示す。
【図4】図1Aのメモリアレイの第2の構成例を示す。
【図5】図1Aのメモリアレイの第3の構成例を示す。
【図6】図1Aのメモリアレイの第3の構成例の拡張を示す。
【図7】1つの特定の構成の図1Aのアレイのメモリセルのグループの回路図である。
【図8】図1Aのメモリアレイの構成および使用の例を示す。
【図9】第1の実施形態に従って書き込みコマンドを実行するメモリシステムの動作例を提供するタイミング図である。
【図10】図9のタイミングでのメモリシステム動作の態様を示す。
【図11】図9のタイミングでのメモリシステム動作の別の態様を示す。
【図12】図9〜11により示されている書き込み動作の1つの特定の実行を示す動作フローチャートである。
【図13A】図12により示されている損耗均等化動作のためのタイミングを示す曲線である。
【図13B】図12により示されている損耗均等化動作のための別のタイミングを示す曲線である。
【図13C】図12により示されている損耗均等化動作のための別のタイミングを示す曲線である。
【図14】図12のフローチャートの改変形として示されている第2の実施形態に従って書き込みコマンドに応答したメモリシステムの動作を示すフローチャートである。
【図15】図14のフローチャートにおいて示されている動作の実行例のタイミング図である。
【図16】図15のタイミングでのメモリシステム動作の一態様を示す。
【図17】図15のタイミング図に代わるメモリシステムの動作を示すタイミング図である。
【図18】第3の実施形態に従って書き込みコマンドの実行中のメモリシステムの動作を示すフローチャートである。
【図19】図18のフローチャートに従ってメモリシステムの動作例を示すタイミング図である。
【図20】メモリシステム動作の別の実施形態を示すタイミング図である。
【図21】メモリシステム動作の別の実施形態を示すタイミング図である。
【図22】読み出しコマンド実行中における本発明のいろいろな態様の利用を示すタイミング図である。
【発明を実施するための形態】
【0026】
メモリ構造およびその動作
最初に図1Aを参照すると、フラッシュメモリはメモリセルアレイとコントローラとを含む。示されている例では、2つの集積回路装置(チップ)11および13はメモリセルのアレイ15と種々の論理回路17とを含む。論理回路17は、データ回路、コマンド回路およびステータス回路を通して別のチップ上のコントローラ19とインターフェイスし、アドレス指定、データ転送、検知およびその他のサポートをアレイ13に提供する。メモリアレイチップの数は、提供される記憶容量により、1から多数におよび得る。或いは、コントローラと一部またはアレイ全体とが単一の集積回路チップに統合されてよいが、それは現在では経済的な選択肢ではない。コントローラ機能を提供するためにホストに依存するフラッシュメモリ装置は、メモリ集積回路装置11および13以外のものをほとんど含まない。
【0027】
典型的なコントローラ19は、マイクロプロセッサ21と、主としてファームウェアを記憶する読み出し専用メモリ(ROM)23と、主としてメモリチップ11および13に書き込まれまたはこれらから読み出されたユーザデータを一時的に記憶するバッファメモリ(RAM)25とを含む。回路27はメモリアレイチップ( 単数または複数)とインターフェイスし、回路29は接続部31を通してホストとインターフェイスする。この例ではデータの完全性は、コードの計算に専用される回路33でECCを計算することにより判定される。ユーザデータがホストからフラッシュメモリアレイに格納されるべく転送されるとき、この回路はそのデータからECCを計算し、コードはメモリに格納される。そのユーザデータは、後にメモリから読み出される時、再び回路33を通され、これは同じアルゴリズムによってECCを計算し、そのコードを、計算されてこのデータと共に格納されたものと比較する。それらが同等であれば、データの完全性が確認される。それらが違っていれば、利用される特定のECCアルゴリズムにより、間違っているビットは、アルゴリズムによりサポートされる数まで、識別されて訂正され得る。
【0028】
図1Aのメモリの接続部31はホストシステムの接続部31’と結合し、その例が図1Bにおいて示されている。ホストと図1Aのメモリとの間でのデータ転送はインターフェイス回路35を通して行われる。代表的なホストは、マイクロプロセッサ37、ファームウェアコードを記憶するROM39、およびRAM41も含む。他の回路およびサブシステム43は、具体的なホストシステムに依存して、しばしば、大容量磁気データ記憶ディスクドライブ、キーボードのためのインターフェイス回路、モニタなどを含む。そのようなホストの幾つかの例は、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、個人用携帯情報端末(PDA)、MP3および他のオーディオプレーヤ、デジタルカメラ、ビデオカメラ、電子ゲーム機、無線および有線電話装置、留守番電話、ボイスレコーダ、ネットワークルータおよびその他を含む。
【0029】
図1Aのメモリは、図1Bのホストと取り外し可能に接続され得る形でコントローラおよびその全てのメモリアレイ回路装置を含む小形の閉鎖形メモリカードまたはフラッシュドライブとして実現され得る。すなわち、結合する接続部31および31’は、カードを切り離して他のホストに移すこと、或いは他のカードをホストに接続することによってカードを取り替えることを可能にする。或いは、メモリアレイ装置11および13は、コントローラおよび接続部31を含む他のカードと電気的にかつ機械的に接続可能な別個のカードに封入されてもよい。別の選択肢として、図1Aのメモリは図1Bのホスト内に埋め込まれてもよく、その中では接続部31および31’は永久的に作られる。この場合、メモリは普通他のコンポーネントと共にホストのエンクロージャ内に含まれる。
【0030】
本願明細書の発明手法は種々の具体的な構成を有するシステムで実施され得、その例が図2〜6において示されている。図2は、メモリセルがグループ分けされてブロックを成しているメモリアレイの一部分を示し、各ブロック内のセルは、単一の消去操作の一部として普通は同時に一緒に消去され得る。ブロックは消去の最小単位である。
【0031】
図2の個々のメモリセルブロックのサイズは様々でありうるが、1つの商業的に実施されている形は1つのブロックに単一セクタのデータを含む。そのようなデータセクタの内容が図3に示されている。ユーザデータ51は通常512バイトである。ユーザデータ51のほかにオーバーヘッドデータがあり、このオーバーヘッドデータが、ユーザデータから計算されたECC53と、セクタデータおよび/またはそのセクタがプログラムされているブロックに関連するパラメータ55と、パラメータ55および包含され得る他のオーバーヘッドデータから計算されたECC57とを含む。或いは、ユーザデータ51およびパラメータ55の全部から単一のECCが計算されてもよい。
【0032】
パラメータ55は、そのブロックが経験したプログラミング/消去サイクルの数に関連する量を含むことができ、この量は、各サイクル後にまたは或る数のサイクルの後に更新される。この経験量が損耗均等化アルゴリズムに用いられるとき、全てのブロックの使用(損耗)を均すために論理ブロックアドレスは定期的に異なる物理ブロックアドレスに再マッピングされる。経験量の他の使用方法は、プログラミング、読み出しおよび/または消去の電圧および他のパラメータを、いろいろなブロックが経験したサイクルの数の関数として変更することである。
【0033】
パラメータ55は、メモリセルの記憶状態の各々に割り当てられたビット値の(それらの“ローテーション”と称される)表示を含むこともできる。これも、損耗均等化に有益な効果を有する。ステータスまたは状態を示す1つ以上のフラグもパラメータ55に含まれ得る。ブロックをプログラミングおよび/または消去するために使用されるべき電圧レベルの表示もパラメータ55の中に格納され得、これらの電圧は、ブロックが経験したサイクルの数と他の要素とが変化すると更新される。パラメータ55の他の例は、ブロック内の欠陥のあるセルの識別と、この物理ブロックにマッピングされているブロックの論理アドレスと、主ブロックに欠陥がある場合の代替のブロックのアドレスとを含む。あらゆるメモリシステムにおいて使用されるパラメータ55の具体的な組み合わせは、設計に応じて変化する。また、オーバーヘッドデータの一部または全部は、ユーザデータを含むかまたはそのオーバーヘッドデータが関連するブロックに格納されるのではなくて、そのような機能に専用されるブロックに格納されてもよい。
【0034】
図4のマルチセクタブロックは、図2の単一データセクタブロックとは異なる。依然として消去の最小単位であるブロック59の例は4つのページ0〜3を含み、その各々はプログラミングの最小単位である。データの1つ以上のホストセクタが、普通は、少なくともそのセクタのデータから計算されたECCを含むオーバーヘッドデータと共に各ページに格納され、図3のデータセクタの形をとることができる。
【0035】
ブロック全体のデータ書き換えは、普通、新しいデータを消去ブロックプールの消去済みブロックにプログラムすることを含み、その後に元ブロックは消去されて消去プールに置かれる。ブロックの全ページよりは少ないデータが更新されるとき、更新されたデータは、通常、消去済みブロックプールからの消去済みブロックのページに格納され、残りの変更されないページは元ブロックからその新しいブロックにコピーされる。その後、元ブロックは消去される。或いは、新しいデータは、データが更新されるブロックと関連付けられた更新ブロックに書き込まれてよく、更新ブロックはこのブロックへのさらなる更新を受け入れるようになるべく長く開いたままにされる。更新ブロックが閉じられなければならないとき、更新ブロックと元ブロックとの中の有効なデータがガーベッジコレクション操作で単一のコピーブロックにコピーされる。これらの大ブロック管理手法は、しばしば、元ブロックからデータを移動させ或いはそれを消去することなく、更新されたデータを他のブロックのページに書き込む動作を含む。これは、データの複数のページが同じ論理アドレスを有するという結果をもたらす。データの最新のページは、セクタ内のフィールドまたはページのオーバーヘッドデータとして記録されるプログラミングの時点のような何らかの便利な手法によって識別される。
【0036】
別のマルチセクタブロック構成が図5に示されている。ここでは、メモリセルアレイ全体が2つ以上のプレーンに物理的に分割され、4個のプレーン0〜3が図に示されている。各プレーンは、他のプレーンから大幅に独立して動作できるようにそれ自身のデータレジスタ、センス増幅器、アドレス指定デコーダなどを有する、メモリセルのサブアレイである。全てのプレーンが単一の集積回路装置上または複数の装置上に設けられ得る。図5のシステム例の各ブロックは16ページP0〜P15を含み、各ページは1, 2またはもっと多くのホストデータセクタと多少のオーバーヘッドデータとの容量を有する。プレーンは単一の制御回路チップ上に、または複数のチップ上に、形成され得る。複数のチップ上の場合、例えば、プレーンのうちの2つは1つのチップ上に形成され、他の2つは別のチップ上に形成され得る。或いは、1つのチップ上のメモリセルがメモリプレーンのうちの1つを提供し、4つのそのようなチップが一緒に使用される。
【0037】
別のメモリセル構成が図6に示されている。各プレーンはセルの多数のブロックを含む。動作の並列度を高めるために、別々のプレーン内のブロック同士が論理的に結合されてメタブロックを形成する。1つのそのようなメタブロックは、プレーン0のブロック3と、プレーン1のブロック1と、プレーン2のブロック1と、プレーン3のブロック2とから形成されるものとして図6に示されている。各メタブロックは論理的にアドレス指定可能であり、メモリコントローラは、個々のメタブロックを形成するブロックを割り当てて追跡する。ホストシステムは、好ましくは、個々のメタブロックの容量に等しいデータをユニットとしてメモリシステムとインターフェイスする。例えば、図6のそのような論理データブロック61は、コントローラによりメタブロックを構成するブロックの物理ブロック番号(PBN)にマッピングされる論理ブロックアドレスにより識別される。メタブロックの全てのブロックは一緒に消去され、各ブロックからのページは好ましくは同時にプログラムされ読み出される。
【0038】
図2〜6に関して前に説明したモリを実現するために使用され得る多様なメモリアレイ構造、構成および具体的なセル構造が存在する。NAND形のメモリアレイの1つのブロックが図7に示されている。直列接続されたメモリセルの多数の列方向ストリングが電圧VSSの共通ソース65とビット線BL0〜BLNのうちの1つとの間に接続され、これらのビット線は、アドレスデコーダ、ドライバ、読み出しセンス増幅器などを含む回路67と接続されている。具体的には、1つのそのようなストリングは、ストリングの両端の選択トランジスタ77および79の間に直列に接続された電荷蓄積トランジスタ70,71...72および74を含む。この例では、各ストリングは16個の蓄積トランジスタを含むが、他の数も可能である。ワード線WL0〜WL15は、各ストリングの1つの蓄積トランジスタを横断して延びて、ワード線のアドレスデコーダおよび電圧源ドライバを含む回路81に接続されている。線83および84上の電圧は、ブロックの全ストリングの、それらの選択トランジスタを通しての電圧源65および/またはビット線BL0〜BLNへの接続を一緒に制御する。データおよびアドレスはメモリコントローラから来る。
【0039】
ブロックの電荷蓄積トランジスタ(メモリセル)の各行は1つ以上のページを含み、各ページのデータは一緒にプログラムされ読み出される。適切な電圧が、ワード線(WL)に、そのワード線に沿うメモリセルのデータをプログラムしまたは読み出すために、印加される。適切な電圧が、関心の対象であるセルと接続されているそれらのビット線(BL)にも印加される。図7の回路は行に沿う全てのセルが一緒にプログラムされ読み出されることを示しているが、行に沿う1つ置きのセルをユニットとしてプログラムし読み出すのが一般的である。この場合、一度に1つ置きのセルと操作可能に接続するように2セットの選択トランジスタが使用され(図示せず)、1つ置きのセルが1ページを形成する。残りのワード線に印加される電圧は、その各々の蓄積トランジスタを伝導性にするために選択される。1つの行のメモリセルをプログラムし或いは読み出す過程で、ビット線に印加された電圧がそれらに接続されているストリングの全てのセルに影響を及ぼし得るので、選択されていない行に前に蓄積された電荷レベルが乱され得る。
【0040】
前述したタイプのメモリシステムの1つの具体的な構造とその動作とが図8により一般的に示されている。説明を容易にするために大幅に簡略化されているメモリセルアレイ213は、構造に依存して、ブロックまたはメタブロック(PBN)P1〜Pmを含む。ホストからメモリシステムにより受け取られたデータの論理アドレスは、個々の論理ブロックアドレス(LBA)を有する論理グループまたはブロックL1〜Lnを成すようにグループ分けされる。すなわち、メモリシステムの連続する論理アドレス空間全体がアドレスの複数のグループに分割される。論理グループL1〜Lnの各々によりアドレス指定されるデータの量は、物理ブロックまたはメタブロックの各々の記憶容量と同じである。メモリシステムコントローラは、グループL1〜Lnの各々の論理アドレスを物理ブロックP1〜Pmの異なる1つにマッピングする機能215を含む。
【0041】
メモリシステムアドレス空間に存在する論理グループより多いメモリの物理ブロックが含まれる。図8の例では、4つのそのような余分の物理ブロックが含まれている。本発明の用途を具体的に例示するために提供されるこの簡略化された説明の目的のために、余分のブロックのうちの2つはデータ書き込み中にデータ更新ブロックとして使われ、他の2つの余分のブロックは消去済みブロックプールを構成する。他の余分のブロックが種々の目的のために通常含まれ、1つはブロックに欠陥が生じた場合の余分として含まれる。メモリを操作するためにメモリシステムコントローラにより使用される制御データを格納するために1つ以上の他のブロックが普通使用される。普通は、特定の目的のために特定のブロックが指定されることはない。むしろ、マッピング215は、個々の論理グループのデータがマッピングされる物理ブロックを定期的に変更し、それがブロックP1〜Pmのうちの任意のものである。物理ブロックのうちの、更新ブロックおよび消去済みプールブロックとして役立つものも、メモリシステムの動作中に物理ブロックP1〜Pmの隅から隅まで移動する。物理ブロックのうちの、更新ブロックおよび消去済みプールブロックとして現在指定されているもののアイデンティティはコントローラにより維持される。
【0042】
図8により表されているメモリシステムへの新しいデータの書き込みを以下に説明する。論理グループL4のデータが物理ブロックP(m−2)にマッピングされると仮定する。また、ブロックP2が更新ブロックとして指定され、完全に消去されて自由に使える状態であると仮定する。この場合、ホストがグループL4内の1つの論理アドレスまたは複数の連続する論理アドレスにデータを書き込むよう命令したとき、そのデータは更新ブロックP2に書き込まれる。新データと同じ論理アドレスを有するブロックP(m−2)に格納されているデータは、その後、陳腐化されて、更新ブロックL4に格納されている新データにより取って代わられる。
【0043】
後に、これらのデータはP(m−2)ブロックおよびP2ブロックから単一の物理ブロックに整理統合される(ガーベッジコレクションされる)。これは、ブロックP(m−2)からの残っている有効なデータと更新ブロックP2からの新データとを消去済みブロックプール中のブロックP5のような別のブロックに書き込むことにより成し遂げられる。ブロックP(m−2)およびP2は、その後、後に更新ブロックまたは消去プールブロックとして役立つように消去される。或いは、元ブロックP(m−2)内の残っている有効なデータは新データと共にブロックP2に書き込まれてもよく(それが可能ならば)、その後にブロックP(m−2)は消去される。
【0044】
所与のデータ記憶容量に必要なメモリアレイのサイズを最小にするために、余分のブロックの数は最少に保たれる。普通は限られた数(この例では2個)の更新ブロックがメモリシステムコントローラにより同時に存在することを許される。さらに、更新ブロックからのデータを元の物理ブロックからの残っている有効なデータと整理統合するガーベッジコレクションは、更新ブロックが関連付けられている物理ブロックにホストにより後に別の新データが書き込まれ得るので、普通はなるべく長く延期される。同じ更新ブロックが、その後、追加データを受け取る。ガーベッジコレクションは、時間を必要とし、またその結果として他の操作が遅らされるならば、メモリシステムの性能に悪影響を及ぼし得るので、それは実行され得る度に実行されるのではない。2つのブロックからのデータを別のブロックにコピーするには、特に個々のブロックのデータ記憶容量が非常に大きいときに(それが趨勢である)、かなりの時間がかかる。従って、ホストがデータを書き込むように命令したときに、それを受け入れるのに使える自由なまたは空の更新ブロックがないという事態がしばしば発生する。そのとき、その書き込みコマンドに応じて、その後にホストから新データを受け取れるように、1つの現存する更新ブロックがガーベッジコレクションされる。そのガーベッジコレクションがどれだけ長く延期され得るかの限度に達している。
【0045】
第1の損耗均等化の実施形態
図9は、2つの更新ブロックのいずれもが自由でなく、消去されていなくて、どちらの更新ブロックとも関連付けられていないブロックのデータが更新されるときのメモリシステムの動作を示す。このとき、ホストから新データを受け取るために利用できる空白の消去済み更新ブロックを作るために更新ブロックのうちの一方がガーベッジコレクションされなければならない。図9の例では、データの2つのセクタまたは他のユニット1および2が書き込まれる。ホスト書き込みコマンドはデータ転送の長さを含み、この場合には2ユニットであり、その後にデータが続く。図9のタイミング図の2番目の線で示されているように、これら2つのデータユニットは、それらの間のメモリシステムビジー信号(図9の3番目の線)が維持されていないので、コマンドが受信された直後に(図9の1番目の線)直接連続して転送される。アサートされたとき、メモリシステムビジー信号はホストにメモリシステムとの通信を休止させる。
【0046】
時点t4およびt5の間のメモリシステムによるビジー信号のアサートは、図に示されているように、書き込みコマンドを実行するために必要なときにメモリシステムがガーベッジコレクションを実行し、その後に、受信されたデータを書き込むことを可能にする。ホストは、このビジー信号がアクティブであるときには他のコマンド或いはそれ以上のデータをメモリシステムに送らない。図9の最後の線で示されているように、これは、新しい更新ブロックを作るために必要なときにガーベッジコレクションをする時間を作る。コントローラは、データユニット1および2の転送にかかる時間がガーベッジコレクションを開始するために使用されるが、これはそれを完了させるのに充分な時間ではない。それ故に、メモリシステムは、ガーベッジコレクションと更新ブロックへのデータ書き込みとが完了するまでホストを寄せ付けない。データ書き込みの完了後、時点t5でビジー信号が終わると、ホストはメモリシステムとさらに通信できるようになる。
【0047】
しかし、ほとんどのホストはデータユニットが転送された後にメモリシステムが書き込みコマンドを実行するために限られた一定の時間を許すに過ぎないので、メモリシステムがアサートできるビジー信号の長さは限られている。それより長くビジー信号がアクティブ状態にとどまっていれば、或るホストはそのデータを伴うコマンドを繰り返すかもしれず、また他の或るホストはそのプロセスを完全に中止するかもしれない。メモリシステムは、このメモリがそれと協働するように設計されているところのホストのこのタイムアウト期間を超えないように操作される。1つの一般的なホストタイムアウト期間は250ミリ秒である。いずれにせよ、ホストと、これに接続されているメモリシステムとの間でのコマンドおよびデータの転送はメモリシステムによるビジー信号のアサートにより遅延させられ得るので、その使用は、メモリシステムの全体としての良好な性能にとって遅延が重要であるような場合に限定されるのが望ましい。
【0048】
ホストのタイムアウト期間に加えて、メモリシステムの動作は、多くの用途において、維持されなければならない最低データ流量により制限される。これは、メモリシステムによりアサートされる個々のビジー信号の持続時間がホストのタイムアウトにより許される最大値より短いことを必要とし得る。
【0049】
同様に、損耗均等化操作は、好ましくは、他の操作および全体としてのメモリシステムの性能に過度に強い影響を及ぼすことを避けるようにスケジュールされる。前述した特許および特許出願で説明されているように、損耗均等化は、損耗(消去サイクルの数)を均すために論理グループのアドレスの物理的メモリブロックへのマッピングを変更することを含む。例えばしばしば書き換えられる範囲の論理アドレスが、平均より高い率でサイクルされている1つの物理ブロックから、より低いサイクル履歴を有する他の物理ブロックにリダイレクトされる。多くの損耗均等化アルゴリズムがあり、そのうちの或るものは論理グループの再書き込みまたは個々の物理ブロック使用のサイクルカウントを監視し、他の或るものはそのようなカウントを使用しないで損耗を別の方法でメモリブロックに分散させる。
【0050】
通常、損耗均等化操作は1つのブロックから他のブロックへのデータの転送(交換)を含み、これがこの操作の最も時間を消費する部分である。損耗均等化交換は、メモリブロックの使用の増大する不均衡を修正するためにメモリシステムコントローラによって時々開始される。損耗均等化の目的は、1つまたは少数のブロックがメモリの有効寿命を超える回数にわたってサイクルされることを避けることによってメモリの寿命を延ばすことである。少数の、時には唯一の、メモリブロックが使えなくなると、メモリシステムが動作不能になり得る。
【0051】
損耗均等化は普通バックグラウンドで行われる。すなわち、ブロックの再マッピングおよびデータ転送はホストがアイドルであるときに行われる。これは、メモリシステムの性能に悪影響を与えないという利点を有するけれども、メモリシステムが損耗均等化を行っている間にホストがコマンドを送ることが防止されず、かつ損耗均等化交換中にメモリシステムから電源を切り離すことさえあり得るという欠点を有する。従って、本願明細書に記載されている例では、損耗均等化はデータ書き込みの一部として時々フォアグラウンドで行われる。
【0052】
再び図9を参照すると、ガーベッジコレクションの代わりに、書き込みコマンドを実行するためにガーベッジコレクションが不要であるときに損耗均等化が行われ得る。ガーベッジコレクションおよび損耗均等化の両方がブロックのデータを転送する動作を含むので、これら2つの操作は同様の量の時間を必要とする。もちろん、前に論じられたように、ガーベッジコレクションは現在の書き込みコマンドを実行できるように更新ブロックを得るために必要なときに行われる。しかし、新データのために利用可能な更新ブロックがあってガーベッジコレクションが不要であるならば、代わりに損耗均等化を行うために時間を使うことができる。1つの特定の手法では、損耗均等化アルゴリズムは損耗均等化交換が望ましいことをその都度指摘し、交換はガーベッジコレクションが不要な次の書込み操作中に行われる。
【0053】
図10は、図9のタイミングでの図8のメモリシステムにおけるガーベッジコレクションおよびデータ書き込みの例を示す。2つの更新ブロック1および2が存在するが、現在のデータユニットを書き込むためにそのいずれもが利用できないとき、それらの一方が閉じられて、消去済みブロックプールからの別の1つのブロックがこのデータを受け入れるために開かれる。その理由は、この例では2つの更新ブロックだけが許されることにある。更新ブロック1が共通論理グループ内のデータ更新だけを受け取ることによってブロックAにリンクされるならば、更新ブロック1は他の何らかの論理グループのデータを格納するためには使用され得ない。更新ブロック2も同じ制約を持ち得る。従って、更新ブロック1は図10に示されているガーベッジコレクション操作により閉じられ、ブロックAおよびその更新ブロック1の各々の中の有効なデータは消去済みブロックBにコピーされる。その後、ブロックAおよび更新ブロック1は消去され、これにより2つのさらなる消去プールブロックが提供される。それらの一方はその後、更新ブロック3として示されている新しい第2の更新ブロックとして開かれ得、その後、その中にメモリコントローラのバッファからのデータが格納される。
【0054】
しかし、図8のメモリシステムにおける書き込みコマンドの実行は、ガーベッジコレクションが行われることを常に必要とするわけではない。例えば、それは、開いている更新ブロックにデータを書き込めるときには、不要である。そのような場合、図9に示されているようにガーベッジコレクションの代わりに損耗均等化操作が行われ得、このときも、損耗均等化操作中に使える更新ブロックが存在する。図11は、この場合をさらに示している。損耗均等化は、この例では、データをソースブロックAから更新ブロック1にコピーする動作を含む。その後、コントローラバッファからのデータが更新ブロック2に書き込まれる。その後、ソースブロックAは消去されて、消去プールブロックとして利用可能になる。図11の例は、ソースブロックAに格納されている論理グループに更新ブロック1が割り当てられているということを仮定している。使用されているシステム更新ブロックは普通非常に少ないので、これは普通でない場合である。より一般的には、ソースブロックAが損耗均等化交換を受けられるようになる前に新しい更新ブロックが開かれなければならない。新しい更新ブロックを開く動作は、通常、別の1つの更新ブロックを閉じる動作を含み、これも普通はガーベッジコレクションを含む。
【0055】
図9のタイミング図に従う動作の具体的な例が図12の動作フローチャートにより示され、ここで、書き込み動作を可能にするためにガーベッジコレクションが行われなくてもよいならば、代わりに損耗均等化が行われる。ステップ225でホストから書き込みコマンドを受け取ったことに応答して、書き込まれるべきデータがステップ227でホストから受け取られてメモリシステムコントローラのバッファメモリに格納される。ステップ229で、現在の書込み操作に用いるために更新ブロックを解放するためにガーベッジコレクションが必要か否かが判定され、必要ならば、ガーベッジコレクションが行われる。ステップ227および229の順序は逆にされてもよく、或いは、図9に示されているように、時間の一部にわたって同時に実行されてもよい。ステップ229は、ガーベッジコレクションが行われる場合にガーベッジコレクションのカウンタを増分することも含む。このカウンタは前もってリセットされ、このカウントは後にガーベッジコレクションが行われたか否かを判定するために参照される。
【0056】
次のステップ231で、損耗均等化交換が継続しているか否かが問われる。すなわち、損耗均等化を開始するのに必要な条件が存在するか否かが判定される。前に援用されている特許および特許出願で説明されているように、多数の異なる損耗均等化アルゴリズムがあって、いろいろなイベントがその動作をトリガーする。本願明細書で説明されている損耗均等化の実施形態では、損耗均等化はメモリブロックまたはメタブロックのN消去サイクルごとに開始される。数Nは、例えば約50であり得る。これは出発点であるが、以下で説明するように、損耗均等化がかなりの期間にわたって延期されなければならないときには判定は多少もっと複雑になる。そのような延期は、例えば、多数の連続する書き込み操作がガーベッジコレクションを各々必要とするときに、発生する。そのときには、損耗均等化のために使えるメモリシステムビジー期間はない。これは、例えば、別々の論理グループ内の単一ユニットのデータの連続する数個の書き込みがあるときに、発生する。
【0057】
損耗均等化が継続していれば、次のステップ233はガーベッジコレクションのカウンタのカウントを調べる。そのカウントがゼロでなければ、これは、ステップ229でガーベッジコレクションが行われたことを、従って、損耗均等化を行う充分な時間がないことも示す。それゆえ損耗均等化は省かれる。しかし、カウントがゼロならば、これはガーベッジコレクションが行われていなくて、従って損耗均等化を行う充分な時間があるかもしれないことを示す。しかし、最初に、ステップ235により、損耗均等化に使うための自由な或いは空の更新ブロックがあるか否かが判定される。否であれば、更新ブロックを得るのに必要なガーベッジコレクションと損耗均等化との両方を行うのに充分な時間はないであろうから、損耗均等化は省かれる。しかし、利用可能な更新ブロックがあれば、前に特定された損耗均等化の特許および特許出願のうちの1つに記載されているアルゴリズムまたは以下のアルゴリズムに従ってステップ237で損耗均等化が行われる。一般に、損耗均等化操作は、損耗均等化のために利用可能な更新ブロックを開くことと、全てのデータをソースブロックからその開かれた更新ブロックにコピーすることと、その後にその更新ブロックを閉じると共にデータの論理グループをソースブロックから更新ブロック(宛先ブロック)に再マッピングするようにアドレス変換テーブルを更新することとを含む。
【0058】
その後、ステップ239で、メモリシステムコントローラのバッファに受け取られたデータがフラッシュメモリのブロックまたはメタブロックに書き込まれる。その後、ガーベッジコレクションのカウンタは、図12のフローチャートのプロセスによる次のデータ書き込みの間に使われるようにステップ241でゼロに戻される。
【0059】
損耗均等化交換を開始する方法の例が次に説明される。これは図12のステップ231の一部である。基本的に、損耗均等化は、システムのブロックがN回消去されるごとに開始される。これを監視するために、ブロックの消去の数のカウントがシステムレベルで維持される。しかし、この手法では、ブロックについての消去サイクルの数のカウントを個別に維持する必要はない。
【0060】
図12のフローチャートに表されているように、継続している損耗均等化交換は、所与のデータ書き込みサイクルの間、そうする充分な時間がないときには実行されなくてもよい。図9および12の例では、継続している損耗均等化交換は、書き込みコマンドを実行するためにガーベッジコレクションが行われなくてはならない場合には省かれる。メモリシステムが一連の、その都度単一のセクタの、データ書き込みを受け、それらのセクタが連続していない論理アドレスを有する場合、ガーベッジコレクションが各書き込み中に行われる。この状態および他の状態では、継続している損耗均等化操作は延期される。このタイプの遅延が生じるかどうかは、メモリシステムがどのように使用されるかによる。しかし、それがしばしは生じるならば、損耗均等化は余り有効ではなくなる。最も有益であるために、損耗均等化は幾つかのシステムブロック消去の一定の間隔を置いて生じるのが好ましい。
【0061】
従って、損耗均等化が著しい時間にわたって延期されたときには損耗均等化交換の間隔を名目上のNブロック消去間隔から変えるのが望ましい。省略された損耗均等化操作の数が維持され、それらは後にNブロック消去より短い間隔で各々継続され得る。図13A,13Bおよび13Cの曲線は、損耗均等化がN消去サイクルを超えて著しく延期された後に“追いつく”3つの異なる方法を示す。これらの曲線の水平軸は、総ブロックシステム消去カウントを示し、Nカウントごとに縦のマークが付いている。縦軸は、最後の損耗均等化操作以後のシステム消去サイクルの数(WLカウント)を示す。図13A,13Bおよび13Cは、各々、これらの例において損耗均等化交換が行われ得る期間を示すために“交換が行われ得る”を表示している。名目上、WLカウントの数がN(曲線を横切る破線)まで増大すると、損耗均等化が行われてWLカウントはゼロに戻る。これは、例えば、図13Aの271のところに示されている。
【0062】
WLカウントがNに達した図13Aの消去カウント273では、スケジュールされている損耗均等化は行われない。損耗均等化は、事情が損耗均等化が行われることを許す消去カウント275まで、それ以上の多数の消去サイクル(Nのおよそ半分の)について行われない。そのときに、また、追いつくためにNより小さい間隔(およそNの半分)の後に消去カウント277で、損耗均等化が行われる。しかし、その後、損耗均等化が行われ得ない非常に長い期間がある。この長い期間の故に、省略された損耗均等化交換の全て(この場合には4)は、可能になり次第、許されるならば、消去カウント279以後の各書き込みコマンドの間継続して、行われる。この手法は、単純であるという利点を有するけれども、メモリシステムが過去に多数の損耗均等化交換の省略を経験しているならば、メモリシステムの性能に悪影響を及ぼし得る。
【0063】
図13Bは、損耗均等化が非常に長い間行われない場合を処理する改変された方法を示す。この例では、その長期間後の第1の損耗均等化交換は281で行われ、また連続する操作がNの半分の消去カウントで行われる。この例でも省略された損耗均等化交換が補充され得るけれども、図13Aの場合のように損耗均等化がまた行われ得るようになったらなるべく速くそれらを行う代わりに、図13Bの手法はその補充損耗均等化交換同士を或る程度少なくともNの半分だけ離す。この手法は、損耗均等化交換のより均一な分散を提供する。
【0064】
好ましい手法が図13Cに示されている。省略された損耗均等化交換の全てを補充するのではなくて、それらの間の間隔は或る程度小さくされるが、それらのうちの他のものは全く補充されない。図13Aおよび13Bの例と同じく、最後の損耗均等化を実行し得ることに関しての遅れを取り返すために、283における損耗均等化は最後のものからNの半分の消去カウントで行われる。しかし、それから後に損耗均等化交換のない同じ長い期間がある場合、この期間後の285における第2の損耗均等化交換は287における第1のものからNの半分の消去サイクルの後に行われるが、その後の交換は標準のN消去サイクル間隔で行われる。省略された損耗均等化交換のうちの幾つかは単に補充されない。この手法による損耗均等化交換を開始するための具体的な基準は、WLカウントがNより大きくなった後に損耗均等化交換が行われるとき、第2の交換がNの半分の消去カウントの後に行われるということである。しかし、その後の損耗均等化交換は、どんなに多くの交換が省略されていたとしても、標準のN消去カウント間隔で行われる。
【0065】
図13A,13Bおよび13Cは、損耗均等化を行えない長い期間を処理する3つの異なる方法を提供するが、そうする方法はこれらだけではない。
【0066】
第2の損耗均等化の実施形態
図14〜16は、損耗均等化操作を行うための、更新ブロックが前から存在することを必要としない代わりの手法を示す。前述したように、図9の方法は、自由な或いは空の更新ブロックが存在しなければ、ステップ235により継続している損耗均等化操作の実行を省略する。一方、図14の手法では、対応するステップ235’による、利用し得る更新ブロックがないという判定は、継続している損耗均等化操作を省略させない。むしろ、継続している損耗均等化操作は、現在の書き込みコマンドの実行中に、後に自動的に完了するように、開始される。現在の書き込みコマンド中に損耗均等化操作を始めるために要する時間は非常に短いので、ガーベッジコレクションまたは他の時間を消費するハウスキーピング機能もそのビジー期間中に行われ得る。また、開始された損耗均等化操作が後の書き込みコマンドの実行中に完了することを確実にするためにそれ以上何もしなくてもよい。なぜならば、それは標準のガーベッジコレクション操作により完了させられるからである。
【0067】
利用可能な更新ブロックがあれば(図14のステップ235’のところの“はい”)、図9の損耗均等化239に対応して、損耗均等化237’が現在の書き込みコマンドの実行中に行われる。しかし、限られた数のメモリシステム更新ブロックのうちのいずれも利用可能でなければ、図14のステップ301〜304を損耗均等化操作を後に完了するようにセットアップする。同時に開いていることのできる更新ブロックの数を制限するメモリシステムにおいて損耗均等化交換に用いる更新ブロックを開くために、現存する更新ブロックが最初に閉じられなければならない。これはステップ301で行われ、ここでシステム更新ブロックが閉じられるが、例えばシステム更新ブロックのうちの、その時点で最も長く使用されていないもの(LRU)を閉じるのが好ましい。次のステップ302で、消去済みブロックがこの損耗均等化操作のために更新ブロックとして開かれる。次のステップ303で、データの第1のページまたはメタページ(メモリ構造による)が、ソースブロックから今開かれたばかりの更新ブロックにコピーされる。現在の書き込みコマンドの実行中にはこの1つのページまたはメタページだけがコピーされればよいのであるが、時間が利用可能であればそれ以上がコピーされてもよい。全てのデータをソースブロックから新しい更新ブロックにコピーするために必要な時間の量は、特に非常に大きなブロックの場合には、現在の書き込みコマンドの実行中に利用し得るよりも長いことがある。従って、好ましくはソースブロックから最少量のデータ(好ましくはソースブロック内のデータのわずか4分の1)をコピーすることによって、現在の書き込みコマンドの実行から或る程度の時間の後に完了するように損耗均等化交換をセットアップするために充分なことが行われる。
【0068】
オプションの最適化として、次のステップ304は、1つのページまたはメタページのデータを有する新しい更新ブロックを、強制的に、システム更新ブロックのうちのその時点で最も長く使用されていないもの(LRU)として特定させ得る。この更新ブロックは、今開かれたばかりなので、確かにその時点で最も長く使用されていないものではない。しかし、それをLRU更新ブロックとして指定することによって、それは次に他の更新ブロックが開かれなければならないときに閉じられる。その閉じるプロセスは、最も便利にはソースブロックから残りのページをこのブロックにコピーすることによって実行される、行われるべきガーベッジコレクションを含む。このブロックはその後に閉じられ、必要な新しい更新ブロックが開かれる。損耗均等化交換はメモリシステムの標準的操作の間に完了している。損耗均等化交換の完了のために、それが一旦セットアップされたならば、特別の操作は不要である。
【0069】
図15は、このプロセスをタイミング図により示す。データの例としてのユニット1および2に関しての現在の書き込みコマンドの実行は間隔307中に行われる。更新ブロックを書き込みコマンドの実行に利用し得るようにするために必要なガーベッジコレクションは最初の間隔309の間に行われ、これに間隔311が続き、その間に、図14のステップ301〜304に関して前述したように損耗均等化操作がセットアップされる。その後に、ホストからコントローラバッファメモリに受け取られたデータのユニット1および2は間隔313の間にフラッシュメモリに書き込まれる。
【0070】
その後の間隔315の間に、開いた更新ブロックを設けるためにガーベッジコレクションを必要とする次の書き込みコマンドの実行が行われ、ガーベッジコレクション317は損耗均等化交換を完了させる。その後、この例においてデータユニット3および4は間隔319の間にフラッシュメモリに書き込まれる。
【0071】
図14および15のプロセスは、さらに別の方法で図16により示される。データの1つのページまたはメタページが、損耗均等化のために指定されたソースブロックから、新しく開かれた更新ブロック3にコピーされる(データコピー1)。何時でも同時に2つの更新ブロックだけが開かれていることを許すメモリシステムを仮定すると、更新ブロック3を開けるように更新ブロック2は閉じられた。これは、図15の時間間隔307の間に、図14のステップ301〜304により実行される。その後、図15の時間間隔315の間に、ソースブロックからの残りのデータが更新ブロック3にコピーされる(データコピー2)。従って、後の書き込みコマンドを実行するために必要にされたガーベッジコレクション317は、前にセットアップされていた損耗均等化交換を完成させている。
【0072】
1ページ以上のデータを新しい更新ブロックにコピーすることは、それを、ガーベッジコレクションプロセスを改変することを必要とせずに、後のガーベッジコレクションのためにセットアップする。損耗均等化交換は、いくぶん自動的に完了する。或いは、最初は新しい更新ブロックにデータをコピーする必要はないが、それにコピーされるべきデータのソースブロックを識別するフラグを付することができる。後にそのフラグに応じてデータ交換を行わせることができる。
【0073】
同じデータ書き込みおよび損耗均等化操作を成し遂げる代わりの方法が図17のタイミング図により示されている。メモリビジー信号は、単一の書き込みコマンドの実行中にデータユニット1,2および3の各々の転送の後にアサートされる。この例について、前述したように、書き込みコマンドを実行するための更新ブロックを得るためにガーベッジコレクションが必要であり、その後に損耗均等化を行うために他の1つのガーベッジコレクションが必要であるということが仮定される。これは、図14のブロック235’からの“いいえ”経路をとるけれども、そこに示されているのとは別様に事態を処理する。データ書き込みに必要なガーベッジコレクション321(図17)は、第1のビジー信号の間に行われる。その後、第2のビジー信号の間にガーベッジコレクション323は損耗均等化交換のための更新ブロックを作る。その後に損耗均等化交換325の全体が第3のビジー信号の間に行われ、データユニット1,2および3はフラッシュメモリに後に(図示せず)書き込まれる。
【0074】
図17の例では図14〜16の例と同じ機能が行われるが、それらを成し遂げるために余分のビジー信号期間を必要とする。これにより図14〜16の例では、書き込みコマンドを実行することと損耗均等化交換の大部分を実行することとの両方のためにガーベッジコレクション操作319を利用することによりメモリ性能がより良好である。
【0075】
図14〜16の例では、損耗均等化交換は、1つが継続しているたびに開始され得る。従って、損耗均等化は、Nメモリシステム消去サイクルごとに、前述した第1の実施形態でそうであったように省略されることを必要とせずに定期的に行われ得る。従って、図13A,13Bおよび13Cの手続きのような手続きは不要である。
【0076】
第3の損耗均等化の実施形態
図18の動作フローチャートは、図12の動作フローチャートに類似しているが、複数の連続するビジー期間中に単数または複数のハウスキーピングタスクを実行する。ステップ243で書き込みコマンドを受け取った後、次のステップ245で時間割り当てが計算される。すなわち、この書込み操作でハウスキーピング操作を実行するために利用可能な時間の量が最初に判定される。これは、主として、(1)ホストタイムアウトを超えずに各データユニットが転送された後にアサートされ得るメモリシステムビジー信号の最大持続時間に(2)現在の書き込みコマンドにより転送されるデータのユニットの数で表されたデータ転送の長さを乗ずることを含む。なぜならば、以下に説明する図19および20に最もよく示されているように、コントローラがハウスキーピングを行うために利用し得る時間がデータの各ユニットが転送されるときと同時に、またその後に現れるからである。
【0077】
次のステップ247により、データの複数のユニットのうちの第1のユニットがコントローラバッファメモリに受け取られ、書き込みコマンドを実行できるために必要ならば、ガーベッジコレクションがステップ249で開始される。その後、カウンタなどを減らすことにより、ステップ245で判定された時間割り当てが、このガーベッジコレクションを行うのに要する量の時間だけ(図示せず)減らされ得る。
【0078】
ステップ251で、データの第2のユニットが受け取られ、現在のデータ書込み操作中に損耗均等化も実行され得るか否かが判定される。ステップ253により、継続している損耗均等化交換があるか否かが、すなわち使用される特定の損耗均等化アルゴリズムに従って損耗均等化を開始する条件が存在するか否かが判定される。あるならば、次のステップ255で、損耗均等化に使用される自由な或いは空の更新ブロックの存在が判定される。1つ存在するならば、損耗均等化が実行され(ステップ257)、次に現在の書き込みコマンドのそれ以上のデータユニットを受け取り(ステップ259)、現在の書き込みコマンドのデータユニットをフラッシュメモリに書き込む(ステップ261)。もちろん、ステップ253によって継続中の損耗均等化がないと判定されたならば、処理はそこからステップ259にじかに移行する。
【0079】
ステップ255に戻って、損耗均等化中に直ぐに利用できる更新ブロックがなかったならば、次のステップ263は、そのような更新ブロックを得るためにガーベッジコレクションを行う時間があるか否かを確かめる。この例では、ガーベッジコレクションおよび損耗均等化交換の各々はホストからのデータユニットの受け取り後のメモリシステムからのビジー信号の間に行われるので、この照会はデータの第3のユニットがあるか否かである。あるならば、それが受け取られ(ステップ265)、必要なガーベッジコレクション(ステップ267)が行われる。ステップ257の損耗均等化はその後に行われる。しかし、この付加的なガーベッジコレクションのための時間がなければ、プロセスはステップ261に直接進む。
【0080】
図18のプロセスの変形例として、時間割り当てステップ245の直後に、ガーベッジコレクションおよび損耗均等化交換のうちから、そのための時間があるものを選択することができる。そのための時間がある操作はその後に次々にスケジュールされ得る。これを行うために必要な全ての情報は、書き込みコマンドを受け取った直後に利用可能である。特定の操作が1つのメモリシステムビジー期間内に完了し得なければ、それは他の一つのビジー期間にまで及ぶようにスケジュールされ得る。このようにして、これらのおよび他のハウスキーピング操作のための最大量の時間が非常に効率的に利用され得る。
【0081】
1つの具体的な操作方法が図19のタイミング図により示され、ここでデータの2つのユニット1および2を書き込む単一の操作の間にガーベッジコレクションと損耗均等化との両方が行われる。メモリシステムは、第1のデータユニットの転送後に必要なガーベッジコレクションを行うために充分な時間にわたってそのビジー信号を維持する。ガーベッジコレクションが完了すると、直ちにビジー信号は除去され、ホストは第2のデータユニットを送る。メモリシステムは、その後、第2のデータユニットの転送後、損耗均等化を行うのに充分な時間にわたって再びビジー信号をアサートする。その後、両方のデータユニットがコントローラバッファメモリからフラッシュメモリのブロックに書き込まれ、その後に、メモリシステムが新しいコマンドを受け取れることをホストに示すためにビジー信号が非アクティブにされる。図19において、メモリシステムバッファへのホストのユニット1および2の転送の間に付加的なビジー期間が挿入されている。前述した図17の場合にもそうである。
【0082】
2つの異なるハウスキーピング操作、すなわちガーベッジコレクションおよび損耗均等化が連続するメモリシステムビジー期間中に行われるが、図19のメモリシステムビジー期間の各々の間に1つのそのような操作が実行される。その代わりに、特に、ブロック同士の間でデータを転送するためにほとんどの時間が使われるガーベッジコレクションと損耗均等化との場合には、ガーベッジコレクションまたは損耗均等化交換をその2つの連続する期間に分けることができる。その場合、データをコピーする操作の一部は第1のメモリシステムビジー期間の間に行われ、その後に第2のビジー期間の間に完了する。
【0083】
データ書込み操作は、しばしば、図9および19に示されている2つよりも多いデータユニットの転送を含む。これは、メモリシステム内でガーベッジコレクション、損耗均等化または他のハウスキーピング機能を実行する付加的な機会を提供する。図20はこの例を示し、ここで1つのホスト書き込みコマンドは4つのデータユニット1,2,3および4のためのものである。メモリシステムは、必要であるかまたは望ましければ、連続する期間217,219および221にわたって1つ以上のガーベッジコレクション、損耗均等化または他のハウスキーピング操作を行うことができる。これを行い、またデータを書き込むために、メモリシステムは各データ転送後にビジー信号期間を挿入する。これは、個々のビジー期間を短縮し或いは充分に利用できるようにハウスキーピング機能の実行を複数のメモリシステムビジー期間に広げることができるという利点を有する。
【0084】
図20の例では、ハウスキーピング期間217,219および221の各々が終了するとビジー信号が非アクティブにされ、これに起因してホストは次のデータユニットを送る。或いは、ビジー信号のアサート解除は期間217,219および221の終了と同期しなくてもよい。ビジー信号の持続時間は、期間217,219および221を含む時間を単一の期間として利用できるように他の何らかの仕方で制御され得る。この場合にビジー信号のアサートを制御する1つの仕方は、所望の操作が完了するまで各々の場合にそれをなるべく長くすることであり、その後、ビジー信号は必要な短い時間だけアサートされる。ビジー信号を制御する他の仕方は、ビジー信号の各々に大体同じ持続時間を持たせることである。この共通の持続時間は、書き込みコマンドの受け取り時に、単数または複数の操作を完了するのに必要な時間を現在の書き込みコマンドにより転送されるデータユニットの数で割って決定される。
【0085】
損耗均等化アルゴリズムの例
図12のステップ237および図18のステップ257で実行され得る具体的な損耗均等化アルゴリズムについて以下に説明する。1つのソースブロックと1つの宛先ブロックとが選択される。ソースブロックを選択するために論理グループ(図8の211)を通ってポインタが増分される。1つのブロックが損耗均等化を受けた後、ポインタは順番に次の論理グループに移り、そのグループがマッピングされる物理ブロックがソースブロックとして選択される。或いは、ポインタは直接に物理ブロックを通って増分されてもよい。
【0086】
指されたブロックは、一定の付加的な基準が満たされるならば、ソースブロックとして選択される。ブロックは、ホストデータを包含しなければならず、それが( 図8に関して説明したものに加えて)メモリシステム制御データを包含する予備ブロックであるならば選択されない。その理由は、予備ブロックの使用法の性質の故に、それらに対して損耗均等化を行うことを必要とせずにそれらがメモリを通って循環させられることにある。ブロックは、開いている更新ブロックがそれに関連付けられている場合にも、ソースブロックとしては選択されない。更新ブロックの存在は、そのブロックにマッピングされた論理グループのためのデータがそのブロックとその更新ブロックとの両方に包含されているということを意味する。また、もちろん、欠陥があるためにマッピングアウトされているブロックもソースブロックとして選択されない。
【0087】
指されたブロックが、これらのまたは他の何らかの理由からソースブロックとして適していなければ、ポインタは順番に次の論理グループまたは物理ブロックへ増分され、この次のブロックも前述した基準と対照されて試験される。この第2のブロックが試験に合格しなければ、他のものが指されて試験される。適切なブロックが見つからないときに考慮されるブロックの数に好ましくは最大数が課される。その後、現在の損耗均等化交換は中止され、調査は次の損耗均等化交換中に再び始められる。
【0088】
宛先ブロックは消去済みプールブロックから選択され、普通は、ホストからのデータの格納のために使われるように置かれている次のブロックである。しかし、ホストデータを格納する代わりに、ソースブロックからのデータがこの宛先ブロックにコピーされる。マッピングテーブル(215)は、その後、これらのデータが属する論理グループが新しいブロックにマッピングされるように、更新される。その後、ソースブロックは消去されて消去プール内に置かれる。
【0089】
他の実施形態
図21のタイミング図は、単一のハウスキーピング操作が2つ以上の書き込みコマンドの実行中に行われる例を示す。ハウスキーピング操作の一部分331は1つの書き込みコマンドの実行中に行われ、他の一部分333は次の書き込みコマンドの実行中に行われる。ハウスキーピング操作は3つ以上の書き込みコマンド実行に分散されてもよく、また連続する書き込み実行中に行われなくてもよいが、時間上でさらに分散され得る。この能力を持つことの利点は、特定のハウスキーピング操作を実行するのに必要な時間を特定の書き込みサイクルのメモリビジー信号持続時間から切り離せることである。実際に、連続する書き込みコマンド実行中にメモリシステムビジー信号に均一な持続時間を持たせることができ、個々のハウスキーピング操作を数個のそのようなビジー信号期間にわたって実行することができる。
【0090】
拡張されたビジー期間(単数または複数)から利益を得る他の1つのハウスキーピング機能は、前述したメモリセルに蓄積された電荷レベルのリフレッシュ(スクラブ)である。受信されたコマンドの実行に関わらない1つ以上のブロックまたはメタブロック内のメモリセルがリフレッシュされる。他の一つは先制ガーベッジコレクションであり、これも前述した。そのようなガーベッジコレクションも、受信されたコマンドの実行に関わらないブロックまたはメタブロック内のデータに関して行われる。受信されたコマンドの実行に同様に不要で必要とされない他のオーバーヘッド操作も、メモリシステムによりアサートされたビジー期間中に実行され得る。これは、大量のデータをコピーすることを必要とするハウスキーピング操作のために特に有益である。なぜならば、そのようなコピー動作はかなりの時間を消費するからである。ホストコマンドの実行中に行われる損耗均等化、スクラッビング、先制ガーベッジコレクション或いは他の類似操作のいずれも、そのコマンドの実行の必須の部分ではない。それらは、受信されたコマンドに直接関連しておらず、またこのコマンドによりトリガーされない。そのような他の操作を行う時間の量についての制限を除けば、ホストコマンドの実行中に行うことのできることについての制限はほとんどない。
【0091】
さらに、そのような関係のない操作を書き込みコマンドの実行中に実行することに加えて、メモリシステムがビジー信号のアサートまたは他の方法でさらなるホストコマンドの受信を遅らせるように動作できる他のホストコマンドの実行中にそれらを実行することもできる。1つのそのような他のコマンドは読み出しコマンドである。図22は、間隔341中にデータユニットがフラッシュメモリからコントローラメモリに読み込まれることを示している。メモリビジー信号は、この期間中アクティブである。しかし、その直後にビジー信号を落とすのではなくて、それが間隔343中にハウスキーピング操作(または1つの一部分)が行われるための時間を提供するために延長される。ビジー信号が落ちると、データユニット1および2がホストに転送される。図に示されているように、ハウスキーピング操作もこの期間の終わりまで延長され得る。書き込みコマンドの実行中にハウスキーピングを行うために前に論じられた手法の多くは、読み出しコマンドの実行中にそうすることにも応用され得る。
【0092】
結論
本発明の種々の態様をその代表的な実施形態に関して説明してきたが、本発明が添付されている特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
【特許請求の範囲】
【請求項1】
消去可能で再プログラム可能な不揮発性メモリシステムを操作する方法であって、その実行のための時間割り当てを有する前記メモリシステムの外側からのコマンドを受信したことに応答して、
前記コマンドを実行するために必要な機能を実行するステップと、
前記時間割り当て内にとどまりながら前記必要な機能を実行するために利用されるものを超えて継続する時間にわたって前記メモリシステムの外側にビジー信号をアサートするステップと、
前記受信されたコマンドを実行するために不必要な前記メモリシステム内での1つのハウスキーピング操作の少なくとも一部分を前記継続するビジー信号時間中に実行するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記受信されたコマンドは、前記メモリシステムに書き込まれるべきデータの1つ以上のユニットが続く書き込みコマンドを含む方法。
【請求項3】
請求項2記載の方法において、
前記メモリシステムに書き込まれるべきデータの複数のユニットが受信され、前記ビジー信号は前記データユニットの受信の間の少なくとも2つの間隔においてアサートされ、その時間の間に前記少なくとも1つのハウスキーピング操作を完了させることによって1つのハウスキーピング操作の前記少なくとも一部分が実行される方法。
【請求項4】
請求項3記載の方法において、
前記少なくとも1つのハウスキーピング操作は、前記少なくとも2つの間隔のうちの2つ以上の間に実行される方法。
【請求項5】
請求項4記載の方法において、
前記コマンドを実行するために必要な前記機能は、ガーベッジコレクション操作と、受信されたデータを前記メモリシステムに書き込むこととを含む方法。
【請求項6】
請求項1記載の方法において、
前記1つのハウスキーピング操作は前記メモリシステム内で1つの量のデータを1つの場所から他の場所に転送することを含み、そのようなハウスキーピング操作の少なくとも一部分を実行することは前記量のデータの一部分だけを前記継続するビジー信号時間中に転送することを含む方法。
【請求項7】
請求項6記載の方法において、
前記量のデータの残りの部分は、後に、特に前記1つのハウスキーピング操作を実行するように向けられていないガーベッジコレクション操作の実行中に転送される方法。
【請求項8】
請求項1記載の方法において、
前記少なくとも1つのハウスキーピング操作は、前記メモリの、前記コマンドの実行に関わっていない部分において実行されるガーベッジコレクション操作を含む方法。
【請求項9】
同時に消去可能な数個のメモリセルの複数の物理ブロックに組織された消去可能で再プログラム可能な不揮発性メモリセルのシステムを操作する方法であって、ある特定の物理ブロックにマッピングされた論理アドレス内の入ってくるデータは前記特定のブロックに論理的にリンクされた更新された物理ブロックに代わりにプログラムされ、前記複数のブロックのうちの限られた数のものは更新ブロックとして指定され、少なくとも2つのブロックからのデータを1つのブロックに整理統合するガーベッジコレクションによって新しい更新ブロックが作られ、書き込みコマンドと書き込まれるべきデータとを受信したことに応答して、
前記書き込みコマンドの実行に不必要なハウスキーピング操作が継続し、それが前記複数のブロックのうちの1つからのデータの複数のユニットを更新ブロックにコピーする必要性を含むか否かを判定するステップと、
肯定ならば、前記書き込みコマンドの実行中にデータの前記複数のユニットのうちの、前記ユニットの四分の一以上ではない1つ以上のユニットを前記1つのブロックから前記更新ブロックのうちの1つにコピーするステップと、
前記1つの更新ブロックを、次にそのデータが整理統合されるものとして識別するステップと、
前記書き込みコマンドの実行後に、前記1つの更新ブロックに対してガーベッジコレクションを実行し、これにより前記1つのブロックの中のデータの前記複数のユニットのうちの残りのものが前記1つ以上のコピーされたユニットとともに共通のブロックに置かれるステップと、
を含む方法。
【請求項1】
消去可能で再プログラム可能な不揮発性メモリシステムを操作する方法であって、その実行のための時間割り当てを有する前記メモリシステムの外側からのコマンドを受信したことに応答して、
前記コマンドを実行するために必要な機能を実行するステップと、
前記時間割り当て内にとどまりながら前記必要な機能を実行するために利用されるものを超えて継続する時間にわたって前記メモリシステムの外側にビジー信号をアサートするステップと、
前記受信されたコマンドを実行するために不必要な前記メモリシステム内での1つのハウスキーピング操作の少なくとも一部分を前記継続するビジー信号時間中に実行するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記受信されたコマンドは、前記メモリシステムに書き込まれるべきデータの1つ以上のユニットが続く書き込みコマンドを含む方法。
【請求項3】
請求項2記載の方法において、
前記メモリシステムに書き込まれるべきデータの複数のユニットが受信され、前記ビジー信号は前記データユニットの受信の間の少なくとも2つの間隔においてアサートされ、その時間の間に前記少なくとも1つのハウスキーピング操作を完了させることによって1つのハウスキーピング操作の前記少なくとも一部分が実行される方法。
【請求項4】
請求項3記載の方法において、
前記少なくとも1つのハウスキーピング操作は、前記少なくとも2つの間隔のうちの2つ以上の間に実行される方法。
【請求項5】
請求項4記載の方法において、
前記コマンドを実行するために必要な前記機能は、ガーベッジコレクション操作と、受信されたデータを前記メモリシステムに書き込むこととを含む方法。
【請求項6】
請求項1記載の方法において、
前記1つのハウスキーピング操作は前記メモリシステム内で1つの量のデータを1つの場所から他の場所に転送することを含み、そのようなハウスキーピング操作の少なくとも一部分を実行することは前記量のデータの一部分だけを前記継続するビジー信号時間中に転送することを含む方法。
【請求項7】
請求項6記載の方法において、
前記量のデータの残りの部分は、後に、特に前記1つのハウスキーピング操作を実行するように向けられていないガーベッジコレクション操作の実行中に転送される方法。
【請求項8】
請求項1記載の方法において、
前記少なくとも1つのハウスキーピング操作は、前記メモリの、前記コマンドの実行に関わっていない部分において実行されるガーベッジコレクション操作を含む方法。
【請求項9】
同時に消去可能な数個のメモリセルの複数の物理ブロックに組織された消去可能で再プログラム可能な不揮発性メモリセルのシステムを操作する方法であって、ある特定の物理ブロックにマッピングされた論理アドレス内の入ってくるデータは前記特定のブロックに論理的にリンクされた更新された物理ブロックに代わりにプログラムされ、前記複数のブロックのうちの限られた数のものは更新ブロックとして指定され、少なくとも2つのブロックからのデータを1つのブロックに整理統合するガーベッジコレクションによって新しい更新ブロックが作られ、書き込みコマンドと書き込まれるべきデータとを受信したことに応答して、
前記書き込みコマンドの実行に不必要なハウスキーピング操作が継続し、それが前記複数のブロックのうちの1つからのデータの複数のユニットを更新ブロックにコピーする必要性を含むか否かを判定するステップと、
肯定ならば、前記書き込みコマンドの実行中にデータの前記複数のユニットのうちの、前記ユニットの四分の一以上ではない1つ以上のユニットを前記1つのブロックから前記更新ブロックのうちの1つにコピーするステップと、
前記1つの更新ブロックを、次にそのデータが整理統合されるものとして識別するステップと、
前記書き込みコマンドの実行後に、前記1つの更新ブロックに対してガーベッジコレクションを実行し、これにより前記1つのブロックの中のデータの前記複数のユニットのうちの残りのものが前記1つ以上のコピーされたユニットとともに共通のブロックに置かれるステップと、
を含む方法。
【図1A】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13A】
【図13B】
【図13C】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13A】
【図13B】
【図13C】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2009−282989(P2009−282989A)
【公開日】平成21年12月3日(2009.12.3)
【国際特許分類】
【出願番号】特願2009−142857(P2009−142857)
【出願日】平成21年6月16日(2009.6.16)
【分割の表示】特願2007−552175(P2007−552175)の分割
【原出願日】平成18年1月11日(2006.1.11)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.コンパクトフラッシュ
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
【公開日】平成21年12月3日(2009.12.3)
【国際特許分類】
【出願日】平成21年6月16日(2009.6.16)
【分割の表示】特願2007−552175(P2007−552175)の分割
【原出願日】平成18年1月11日(2006.1.11)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.コンパクトフラッシュ
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
[ Back to top ]