(57)【特許請求の範囲】
【請求項１】
複数のブロックを有し、１つ１つのブロックが複数のストレージグループを有するＮＡＮＤメモリチップであって、それぞれのブロック内のストレージ量は最少消去可能単位である、ＮＡＮＤメモリチップのプログラミングを制御するためのコントローラを動作させる方法において、
一時ストレージの複数のブロックの１つの少なくとも２つのデータグループは、前記ＮＡＮＤメモリチップの前記複数のブロックの異なるブロックに記憶させることになり、前記一時ストレージの前記複数のブロックの異なるブロックの中の、少なくとも２つのデータグループは、前記ＮＡＮＤメモリチップの前記複数のブロックの同じブロックに記憶させることになっている、複数のデータグループを前記一時ストレージの複数のブロックに記憶させる段階と、
索引表内で、前記一時ストレージ中の前記ブロック内のそれぞれのデータグループを、それが記憶されることになる前記ＮＡＮＤメモリチップの前記ブロックのストレージグループに対して索引付ける段階と、
前記一時ストレージ内に記憶され、前記ＮＡＮＤメモリチップの複数のブロックの前記同じブロックに記憶させることになる全ての前記複数のデータグループを識別する段階と、
前記一時ストレージから、全ての識別された前記データグループを、前記同じブロックに記憶されたデータと共に、前記ＮＡＮＤメモリチップの前記同じブロックとは異なる前記ＮＡＮＤメモリチップの消去されたブロックに書き込む段階と、
前記一時ストレージから、消去されたブロックに書き込まれた前記データグループを削除する段階と、
前記索引表から、前記一時ストレージから削除された前記データグループについての索引を削除する段階と、から成る方法。
【請求項２】
それぞれの前記複数のストレージグループは、ページである、請求項１に記載の方法。
【請求項３】
前記索引付ける段階は、
前記一時ストレージへ書き込まれる前記データグループの論理アドレス対物理アドレスの表を作成する段階を含んでいる、請求項１に記載の方法。
【請求項４】
前記書き込む段階は、前記一時ストレージからの前記データグループを全て書き込む、請求項１に記載の方法。
【請求項５】
前記データグループを削除する段階は、前記一時ストレージから前記データグループを全て削除する、請求項４に記載の方法。
【請求項６】
前記索引表から削除する段階は、前記索引を全て削除する、請求項５に記載の方法。
【請求項７】
前記データグループを削除する段階は、書き込まれた前記データグループのみを削除する段階と、ガベージコレクションステップを遂行して前記一時ストレージの残りの前記データグループをひとまとめにする段階を更に含んでいる、請求項１に記載の方法。
【請求項８】
前記索引表から削除する段階は、書き込まれた前記データグループについての前記索引のみを削除する段階と、ガベージコレクションステップを遂行して前記索引表の残りの前記索引をひとまとめにする段階を更に含んでいる、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤメモリコントローラを動作させる方法に関し、加えてＮＡＮＤメモリコントローラとＮＡＮＤ集積回路チップを備えるメモリデバイスを動作させるための方法にも関する。本発明の方法は、ＮＡＮＤメモリの、ブロックベースのフラッシュファイルシステムについてのランダム書き込みを遂行する性能を高める。
【背景技術】
【０００２】
ＮＡＮＤメモリ集積回路チップは当技術では周知である。ＮＡＮＤメモリチップでは、メモリは、複数のストレージブロックを有し、それぞれのブロックが複数のページを保有していることを特徴とする。ブロックは、最小消去可能単位である。故に、ＮＡＮＤストレージの或るブロックの或るページが既に書き込まれているか又はプログラムされていた場合、当該ページは、それが関連付けられているブロック全体が消去されるまでは、プログラムし直されることも書き直されることもできない。従って、ブロックベースのフラッシュファイルシステム（ＦＦＳ）では、事前に書き込まれているブロックの一部分（例えばページなど）を差し替え又は上書きするときは、ブロックの上書きデータ部分と不変データ部分とが新しい消去済みのブロックへ併合されなくてはならない。故に、図１に示されている様に、原ブロックのページ２とページ３が上書きされようとする場合、それらのページの新しいデータはまず一時ブロックに保存され、次いで原ブロックの他のページと一体に併合ブロックへ編入される。従って、ページ０とページ１は原ブロックから、ページ２とページ３は一時ブロックから、そして残りページのページ４から原ブロックの最後までは原ブロックから、それぞれ併合ブロックへコピーされる。すると原ブロックと一時ブロックが今後の使用に備えて消去される。
【０００３】
ＮＡＮＤのブロックが１２８又は２５６のページを有している場合、併合動作は非常に長くなる恐れがあり、１つ１つのページを動かすのに何ミリ秒もかかるかもしれない。加えて、ブロックのサイズとプログラミング時間が増加することで、併合時間が増加することになる。
【０００４】
更に、ＮＡＮＤメモリ集積チップでは、ブロックの数は非常に多いが、一時ブロックとして割り付けられているブロックは僅かしかない。図２を参照すると、１０００のブロックを有するＮＡＮＤチップの概略的なレベル図が示されているが、それら１０００のブロックのうち９９２のブロックはデータブロックと指定されてデータの記憶に割り付けられており、８のブロックが一時ブロックに割り付けられている。典型的な書き込み動作は次の様になろう。データのページがデータブロック０の既に事前書き込みデータがある場所へ書き込まれようとしていると仮定する。そうすると、上述の併合動作が遂行される代わりに、（単数又は複数の）新しいデータページは、まず一時ブロックへ、例えばブロック９９２へ書き込まれ、ブロック９９２がデータブロック０の関連先として割り当てられたことになる。
【０００５】
新しいデータのページがＮＡＮＤチップによって受信され、それがデータブロック０−９９１のどこであれ消去済みのページ宛てであれば、新しいデータのページは当該場所へ書き込まれる。しかしながら、新しいデータのページがデータブロック０宛てで、別のデータページの上から書き込むことになるなら、その場合は一時ブロック９９２に記憶される。最後に、新しいデータのページが、データブロック０以外のデータブロック、例えばデータブロック４内のページ宛てであって、別のデータページを上書きすることになる場合は、新しいデータのページは一時ブロック９９３に記憶され、そして一時ブロック９９３はデータブロック４と関連付けられる。併合動作は、長い時間を要するので、可能な限り差し控えられる。これは、新しいデータのページを一時ブロックに記憶することによって行われている。しかしながら、先行技術では、できる限り多くのブロックをデータ用に使用したいがために、割り付けられている一時ブロックは数が非常に少なく（例えばデータブロック１０００毎に８ブロック）、ＮＡＮＤメモリチップはたちまち一時ブロックを使い果たしてしまう。例えば、上の例では、新データのページについて、９番目の「書き込み」動作が受信され、９つ目の異なるデータブロックを上書きすることになる場合、一時ブロックを確保するために、まず併合動作が遂行されなくてはならない。ＮＡＮＤチップのストレージ容量が増加しブロック数が増加するにつれ、ＮＡＮＤチップが一時ブロックを確保するために早急に併合動作を求められる可能性は増大する。
【０００６】
ＮＡＮＤチップに係り新しいデータの（単数又は複数の）ページが書き込めるようになる前の併合動作の殆どない真のランダム書き込み動作になおいっそう迫真するという課題に対する１つの先行技術による解決策は、データブロックと同じほど多くの一時ブロックを持つというものであった。一時ブロック対データブロックが１：１の比であれば、併合動作の要求は劇的に減少する。しかしながら、この解決策では、ユーザーデータを記憶させるのに利用できるブロックがはるかに少なくなってしまう。それ故、新しい解決策が待望されている。
【発明の概要】
【０００７】
この制限は、ＮＡＮＤメモリチップのプログラミングを制御するためのコントローラを動作させる方法を示した本発明によって克服される。ＮＡＮＤメモリチップは、複数のブロックを有し、１つ１つのブロックは或る特定のストレージ量を有しているものであって、それぞれのブロック内のストレージ量は最小消去可能単位である。本方法は、データブロックよりも数の少ないデータグループであって、１つ１つがＮＡＮＤメモリチップのブロックに記憶されることになっているデータグループの、第１の複数のデータグループを一時ストレージに記憶させる段階を備えている。それぞれのデータグループは、それが記憶されることになるブロックに対し索引付けされる。最後に、同じブロックと関連付けられているデータグループが同じプログラミング動作で同じブロックへプログラムされる。
【図面の簡単な説明】
【０００８】
【図１】先行技術の併合動作のブロック図である。
【図２】先行技術の書き込み動作中にデータを一時的に記憶させるために使用される一時ブロックのデータブロックに対する割り当てのブロック図である。
【図３】ＮＡＮＤメモリチップを制御するための本発明の方法で動作し、ホストデバイスからのコマンドを受信するコントローラのブロック図である。
【図４】本発明の方法で使用されているデータブロック及び一時ブロックを備えたＮＡＮＤメモリチップのためのアドレス空間を示す図である。
【図５】本発明と共に使用される索引表の一例である。
【発明を実施するための形態】
【０００９】
図３を参照すると、本発明の方法で動作するＮＡＮＤメモリコントローラ１０のブロックレベル図が示されている。コントローラ１０は、アドレスバス１４、データバス１６、及びコントロールバス１８の様な周知のバスを通して、ＮＡＮＤメモリ集積回路チップ１２とインターフェースし、その動作を制御している。ＮＡＮＤメモリ１０について典型的には、アドレスバス１４とデータバス１６は同一物であり、即ちアドレスとデータは同じバスを介して伝送されている。本発明はメモリコントローラ１０を動作させるための方法ではあるが、本発明は、メモリモジュールとして一体にパッケージ化されているか或いはなおのこと一体に集積化されているコントローラ１０とＮＡＮＤメモリチップ１２を備えるメモリデバイスを動作させるのに使用することもできる。コントローラ１０は、更に、揮発性メモリ３０とインターフェースし、それに接続されている。その場合、アドレスバス１４、データバス１６、及びコントロールバス１８も揮発性メモリ３０へ接続されている。
【００１０】
コントローラ１０は、ＰＡＴＡ（パラレルＡＴＡ）コマンドプロトコル又はＳＡＴＡ（シリアルＡＴＡ）コマンドプロトコルの様な周知のプロトコルを通してホストデバイス２０とインターフェースしている。
【００１１】
以上に説明されている様に、本発明は、ブロックベースの不揮発性メモリシステムにおけるランダム書き込み性能を改善するという課題を、併合動作の遂行頻度を減らすことによって解決している。
【００１２】
先に論じられている様に、ＮＡＮＤメモリチップ１２の性質のせいで、データを或るブロックの事前に書き込まれている（単数又は複数の）ページへ書き込むためには、最初にブロック全体を消去しなくてはならない。本発明の方法では、新しいデータのページがデータブロックの事前に書き込まれているページへ書き込まれようとする場合、データブロック全体を消去するのではなしに、新しいデータのページは最初に一時ブロック内の次に利用できるページへ書き込まれる。先行技術同様、一時ブロックはＮＡＮＤメモリチップ１２内に在る。
【００１３】
しかしながら、それぞれの一時ブロックにデータブロックが関連付けられていた先行技術とは違い、本発明の方法を用いれば、当該データブロックと関連付けられているページのみを同じ一時ブロックへ書き込むことができ、同じ一時ブロック内のそれぞれのページは、異なるデータブロックに記憶されることになっているデータを記憶することになる。こうして、それぞれの一時ブロックを利用して、新しいデータのページをデータブロックへ書き込まなくてはならなくなる前に異なるデータブロック向けの多くのデータページを記憶させることができる。従って、一時ブロックに保存される複数ページに対して１の比を用いて併合動作の頻度を小さくすることができる。
【００１４】
例えば、図４に示されている様に、一時ブロック９９２のページ０はデータブロック０に記憶されることになっているデータを記憶することができる。同じ一時ブロック９９２内で、ページ１がデータブロック２に記憶されることになっている新しいデータを記憶することもできる。最後に、一時ブロック９９２内で、ページ２がデータブロック４に記憶されることになっているデータを記憶することもできる。こうして、先行技術とは違い、同じ一時ブロック内のページが異なるデータブロック宛てのデータを記憶することができる。また、データブロック（例えばデータブロック０）には一時ブロック９９２内のデータページ（例えばページ０）が既に記憶されることになっているが、そのデータブロック０に記憶されることになる新しいデータのページ（例えばページ１）を、一時ブロック９９３の様な異なる一時ブロックが記憶することもできる。換言すると、同じデータブロックに記憶されることになっているページを異なる一時ブロックに記憶させることができるということである。本発明の方法では、新しいデータページがデータブロックに記憶されようとしていて、当該場所が消去されていないと判定されると、新しいデータページは一時ブロックの集合体内の次に利用できるページに記憶される。こうして、一時ブロックは、データブロックへ書き込まれようとする新しいデータのページのログを維持する。
【００１５】
一時ブロック内のデータページとデータブロック内の記憶されるべき最終目的地の間の相関を追跡するために、索引表が作成される。索引付けは、物理アドレスによる又は論理アドレスによるなど多数の異なるやり方で行うことができる。一例が図５に示されている。図５は、物理アドレス索引表を示している。索引表のそれぞれの行は、一時ブロックに記憶されているデータのページを表現しており、ページが一時的に記憶されている物理アドレスとデータページの最終目的地のページアドレスに関する情報を保有している。これらのアドレスは、以下に説明されているブロックアドレス又はページアドレスの形態をとることができる。
【００１６】
「論理ページ番号」は、最終的にこの新しいデータのページで更新されることになる、データブロック内のページのことである。
【００１７】
「論理ブロックＮｏ．」は、新しいデータのページが最終的に書き込まれることになる、データブロック内のブロック番号のことである。
【００１８】
「物理ブロックアドレス」は、新しいデータのページが保留されている一時ブロックの物理アドレスのことである。
【００１９】
「物理ページアドレス」とは、新しいデータをデータブロックへ更新するのに先立って、新しいデータを保留している一時ブロック内の物理ページアドレスのことである。
【００２０】
本発明の方法では、新しいデータページが、ホストデバイス２０からＮＡＮＤメモリコントローラ１０によって受信される。コントローラ１０は、新しいデータのページが書き込まれようとするデータブロック内の場所をチェックして、当該場所が消去済みのメモリセルを保有しているか或いは事前に書き込まれているデータを保有しているかを判定する。その場所が消去済みのメモリセルを保有していた場合、新しいデータのページは当該場所へ書き込まれる。また一方、その場所が事前に書き込まれているデータを保有していた場合、新しいデータのページは、一時ブロック内の次に利用できる消去済みページへ書き込まれる。コントローラ１０は、次いで、新しいデータページがどこに書き込まれようとしているかについて、新しいデータページの論理アドレス及び新しいデータページが一時的に書き込まれることになる関連の物理アドレスを含め、索引表を更新する。ＮＡＮＤメモリデバイスの動作で慣行的な他の表及び当業者に周知されている他の表、例え論理ブロック対物理ブロックのマッピングや一時ブロック番号対物理ブロックのマッピングなど、も同様に維持され更新されなくてはならない。
【００２１】
それぞれの一時ブロックには固有データブロックが関連付けられていないため、先在データのある場所宛ての新しいデータの累積ページ数ははるかに大きくなることであろう。その結果、併合動作の頻度は小さくなる。２５６のページを有する一時ブロックなら、１つの一時ブロックが、２５６の異なるデータブロック宛ての２５６のページを記憶することもできるし、データブロック当たり複数ページを記憶することもできる。８つの一次ブロックがあれば、それら８つの一時ブロックがバッファ又は記憶区域として働くことのできる異なるデータブロックは２０４８という多さになろう。更に、これらの一時ブロックが１２８のデータブロックのために働いている場合、それぞれのデータブロックは、併合動作を遂行させなくてはならなくなる前に、平均１６ページを一時ブロック内に累積させることができる。対照的に、先行技術では、一時ブロック１つがバッファとして働けるのはたった１つのデータブロックに対してであり、一時ブロック８つではバッファとして働けるのはたった８つの異なるデータブロックに対してである。当然ながらトレードオフは索引表作成の必要性である。索引表は、揮発性メモリ３０に記憶させてもよいし、なおのことＮＡＮＤメモリ１２そのものに記憶させてもよい。索引表を揮発性メモリに記憶させることの利点は検索の速さである。不都合は揮発性であること、即ち、不意に電源が切れた場合にデータが失われてしまうことである。
【００２２】
新しいデータのページを一時ブロックからデータブロックへ併合するという動作は、日和見的に、ＮＡＮＤチップ１２のリソースの要求が静まっているときに行われてもよいし、又は確定的に、指定された間隔で又は指定された事象時に行われてもよい。日和見的併合の場合は、併合動作はホストコマンドへの何らの遅延も引き起こすことなく遂行されることになろう。併合動作中、コントローラ１０は、一時ブロックから、同じデータブロックに記憶されることになる新しいデータのページを全て集め、それら新しいデータページを同じブロックからの差し替えられないデータページと併合し、それらを消去済みのデータブロックへ書き込む。次いで原データブロックは消去され、新しいデータのページ及び関連付けられているデータ、例えばブロック番号、物理アドレス、及び論理アドレスなどが、次いで一時ブロック及び索引表から削除される。
【００２３】
併合動作は、２通りのやり方のうちの１つで起こる。１つの方式では、一時ブロック内のページは全てデータブロックへ書き込まれる。これに続けて、一時ブロック及び索引表の全てが消去される。この方式では、一時ブロック内に記憶されているページ数が多いために、併合動作は長時間かかることになろう。
【００２４】
２つ目の方式では、併合動作は、一度に１つのデータブロック又は数個のデータブロックだけを更新する。この動作方式では、同じデータブロック宛てのページであって、複数の異なる一時ブロック内に記憶されている場合もあるその様なページが、一時ブロックから選択されて、（単数又は複数の）同じデータブロックへ書き込まれる。とはいえ、この手法では、一時ブロックからのデータのページどれもが併合動作によってデータブロックへ書き込まれるとは限らないため、書き込まれたページしか一時ブロックから消去されないはずである。しかしながら、それぞれの一時ブロックはデータの「塊」でもあり、これは当該ブロック内のデータ全てがひと塊に消去されなくてはならないことを意味しているため、いわゆる「ガベージコレクション」動作が行われる必要がある。「ガベージコレクション」動作は当技術では周知されており、この動作では、同じ一時ブロック内の未併合のデータページが一時ブロックの完全消去済みブロックへ転送されて、一時ブロックを消去できるようになる。加えて、索引付け表では同様に、併合動作中に書き込まれたデータのページを参照するエントリがパージされるはずである。従って、たった１つ又は数個のデータブロックについてのページしか併合しない２番目の技法は、長ったらしい連続した併合動作こそ必要ないが、追加的な後続の「ガベージコレクション」プロセスがまさしく要求され、追加のオーバーヘッドが発生する。
【００２５】
新しいデータページがデータブロックへ併合される前に、コントローラ１０へ読み出し要求がなされれば、コントローラ１０は、ホストデバイス２０によって読み出し要求の一部として供給された論理アドレスを使用して、新しいデータのページの場所を索引表から読み出す。論理アドレスが索引表の中に含まれていなければ、それは、データがデータブロックの中にあり、差し替えられていないということを示しており、コントローラ１０は論理アドレスを使用し、データブロックを探してデータのページを読み出す。
【００２６】
上記から分かる様に、一時ブロックは新しいデータのページ１つ１つを保存しており、どれか１つの特定のデータブロックと関連付けられているのではないため、本発明の方法を用いれば、一時ブロックは、１つ又はそれ以上の併合動作を遂行させなくてはならなくなる前に、より多くの新しいデータのページを保留することができる。加えて、併合動作があった場合、同じ併合動作で同じ一時ブロックから記憶させることのできるページは先行技術に比べ多くなる。
【符号の説明】
【００２７】
１０  ＮＡＮＤメモリコントローラ
１２  ＮＡＮＤメモリ集積回路チップ
１４  アドレスバス
１６  データバス
１８  コントロールバス
２０  ホストデバイス
３０  揮発性メモリ
【図１】
0005631486.tif 000002
【図２】
0005631486.tif 000003
【図３】
0005631486.tif 000004
【図４】
0005631486.tif 000005
【図５】
0005631486.tif 000006