記憶装置のためのストレージアドレス再マッピングのための方法およびシステム
ストレージアドレス再マッピングのための方法およびシステムが開示される。この方法は、クラスタのブロック内の論理アドレスを割当てることと、論理アドレスをストレージアドレス空間内に再マッピングすることとを含み、論理アドレス空間に分散させられているデータの短いランはストレージアドレス空間内のブロックの中に連続的な仕方でマッピングされる。新しいブロックの利用可能な数が所望のしきい値より低下した時には、データを受け取るために利用し得る新しいブロックを作るために、有効なデータおよび陳腐化したデータの両方を有するブロックから有効なデータがフラッシングされる。システムは、ホストファイルシステム、ホストファイルシステムとは別にホスト上に存在するかあるいは埋め込みソリッドステートディスクなどのフラッシュメモリ装置上に存在するプロセッサ実行可能な命令、または、データを論理アドレス空間からストレージアドレス空間内の完全なブロックに連続的な仕方でマッピングするように構成されているフラッシュメモリ装置のバックエンドメモリマネージャを含む。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、一般的には、オペレーティングシステムと記憶装置の間のデータ通信に関する。より具体的には、本願は、再プログラム可能な不揮発性半導体フラッシュメモリなどのメモリシステムと、このメモリが接続されているかあるいは接続可能であるホスト装置との操作に関する。
【背景技術】
【0002】
在来のフラッシュデータメモリシステムにデータを書き込む時、ホストは、通例、メモリシステムの連続的な仮想アドレス空間の中で一意の論理アドレスをデータのセクタ、クラスタまたは他の単位に割当てる。ホストは、メモリシステムの論理アドレス空間内のアドレスにデータを書き込み、また、それからデータを読み出す。メモリシステムは、そのとき、一般的に、論理アドレス空間と、論理アドレス空間における範囲に対応する固定された論理グループをなしてデータが格納されるメモリの物理的ブロックまたはメタブロックとの間でデータをマッピングする。一般に、各々の固定された論理グループは、メモリシステムの別々の物理的ブロックに格納される。メモリシステムは、論理アドレス空間が物理メモリにどのようにマッピングされているかを追跡するけれども、ホストはこれを知らない。ホストは、そのデータファイルの、論理アドレス空間内のアドレスを追跡するけれども、メモリシステムは、このマッピングについての知識なしで動作する。
【0003】
このように動作するメモリシステムの1つの欠点は断片化である。例えば、NTFSファイルシステムに従って動作するパーソナルコンピュータ(PC)においてソリッドステートディスク(SSD)ドライブに書き込まれているデータは、しばしば、このドライブの論理アドレス空間内の広く分散した位置における短い連続するアドレスランのパターンにより特徴付けられる。ホストにより使用されるファイルシステムが連続する複数のファイルのための新しいデータのために順次アドレスを割当てたとしても、削除されたファイルの気まぐれなパターンは、利用可能な空きメモリ空間の断片化を、それがブロック化単位で新しいファイルデータに割当てられ得ないように、引き起こす。
【0004】
フラッシュメモリ管理システムは、連続する論理アドレスの1つのブロックを物理アドレスの1つのメタブロックにマッピングすることによって動作しがちである。ホストからのアドレスの短い1つのランが独立して更新される時、そのランを含むアドレスの論理ブロック全体は、単一のメタブロックへのその長期マッピングを維持しなければならない。これは、論理対物理メモリ管理システム内のガーベッジコレクション操作を必要とし、そのとき、論理ブロック内のホストにより更新されない全てのデータは、それを更新されるデータと合併させるために再配置される。これはかなりのオーバーヘッドであって、書き込み速度とメモリの寿命とを厳しく制限することがある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願第10/915,039号
【特許文献2】米国特許第5,570,315号
【特許文献3】米国特許第5,774,397号
【特許文献4】米国特許第6,046,935号
【特許文献5】米国特許第6,373,746号
【特許文献6】米国特許第6,456,528号
【特許文献7】米国特許第6,522,580号
【特許文献8】米国特許第6,771,536号
【特許文献9】米国特許第6,781,877号
【特許文献10】米国公開特許出願第2003/0147278号
【特許文献11】米国公開特許出願第2003/0109093号
【発明の概要】
【0006】
既知のディスクドライブで使用される磁気メモリと比べてフラッシュメモリが現在持っている書き込みサイクルの限られた数を仮定すれば、短い論理アドレスランおよび断片化の問題を埋め合わせるために、フラッシュメモリを利用するシステムの性能を改善することが望ましい。これを処理するために、記憶装置におけるストレージアドレス再マッピングのための方法およびシステムが開示される。
【0007】
第1の態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が記述される。この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを大容量記憶システムにおいてホストシステムから受け取ることを含む。このホストLBAアドレスを受け取るために連続するストレージLBAアドレスの1つのブロックが割当てられ、その連続するストレージLBAアドレスのブロックは陳腐化したデータだけを含む。この方法は、受け取られたデータのためのホストLBAアドレスの各々をその連続するストレージLBAアドレスのブロックに再マッピングすることも含み、各ストレージLBAアドレスは、ホストLBAアドレスに関わらず、受け取られたデータが受け取られた順に、受け取られたデータに連続的な仕方で順次に割当てられる。
【0008】
第2の態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が記述される。この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータをホストシステム上のファイルシステムから受け取ることを含む。受け取られたホストLBAアドレスは、連続するストレージLBAアドレスの1つのブロックに受け取られた順に再マッピングされ、そしてその連続するストレージLBAアドレスのブロックが完全にプログラムされた後に初めて、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックが割当てられ、残りの受け取られたホストLBAアドレスはその付加的なブロックに連続的に再マッピングされる。未記入容量だけをアドレス指定する連続的なストレージLBAアドレスの新しいブロックも作成される。
【0009】
本発明の他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が開示され、この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを大容量記憶システムにおいてこのホストシステムから受け取ることと、受け取られたホストLBAアドレスを受け取られた順に連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングすることとを含む。この方法は、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当てることと、連続するストレージLBAアドレスのブロックが完全にプログラムされた時に初めて残りの受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングすることとをも含む。さらに、この方法は、ホストLBAアドレスと関連付けられたデータが連続するストレージLBAアドレスに再マッピングされる時に、ホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブルを生成することを含む。
【0010】
他の1つの態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が開示され、この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを大容量記憶システム上のアプリケーションにおいてホストシステムから受け取ることと、この受け取られたホストLBAアドレスを、連続するストレージLBAアドレスの1つのブロックに、受け取られた順に連続的に再マッピングすることとを含む。この方法は、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当てることと、連続するストレージLBAアドレスのブロックが完全にプログラムされた時にだけ付加的な受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングすることとをさらに含む。有効なデータおよび陳腐化したデータを現在アドレス指定している連続するストレージLBAアドレスの以前に完全にプログラムされたブロックを、以前に受け取られたホストLBAアドレスと関連付けられた新しいデータを受け取る前に識別することと、連続するストレージLBAアドレスの識別された以前に完全にプログラムされたブロックから未記入容量だけをアドレス指定する連続するストレージLBAアドレスの新しいブロックを作成することとも含まれる。
【0011】
本発明の1つの態様において、大容量記憶メモリシステムが開示され、このシステムは、一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、ホスト論理ブロックアドレス(LBA)アドレスでアドレス指定されたホストシステムからのデータを受け取るようになされているインターフェイスと、このインターフェイスと通信するコントローラとを備える。コントローラは、ホストシステムからデータを受け取るために連続するストレージLBAアドレスの1つのブロックを割当てるように構成されると共に、その受け取られたデータのためのホストLBAアドレスの各々を連続するストレージLBAアドレスのブロックに再マッピングするように構成され、また、受け取られたデータと関連付けられたホストLBAアドレスに関わらず、受け取られたデータが受け取られた順に、各々の連続するストレージLBAアドレスを受け取られたデータに順次に割当てるように構成される。
【0012】
本発明の他の1つの態様に従って、大容量記憶メモリシステムは、一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、ホストシステムからホスト論理ブロックアドレス(LBA)フォーマットでアドレス指定されたデータを受け取るようになされているインターフェイスと、このインターフェイスと通信するコントローラとを備える。コントローラは、ホストシステムから大容量記憶システムにおいてホストLBAアドレスと関連付けられたデータを受け取ることと、受け取られたホストLBAアドレスを連続するストレージLBAアドレスの1つのブロックに受け取られた順に連続的に再マッピングすることと、連続するストレージLBAアドレスの、割当て時に未記入の容量だけを含む1つの付加的なブロックを割当てることと、その連続するストレージLBAアドレスのブロックが完全にプログラムされている場合にだけ残りの受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングすることとを実行するためのプロセッサ実行可能な命令を含む。プロセッサ実行可能な命令は、有効なデータを含まない連続するストレージLBAアドレスの新しいブロックを作成するための命令も含む。
【0013】
本発明の他の1つの態様において開示されるように、ホストLBAアドレスと関連付けられたデータをストレージLBAアドレスに再マッピングするための不揮発性大容量記憶システムは、一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、ホストシステムからホストLBAフォーマットでアドレス指定されたデータを受け取るようになされているインターフェイスと、このインターフェイスと通信するコントローラとを備える。コントローラは、受け取られたホストLBAアドレスを、受け取られた順に、連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングし、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当て、連続するストレージLBAアドレスのブロックが完全にプログラムされている時にだけ付加的な受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングするように構成される。コントローラは、ホストLBAアドレスと関連付けられたデータが連続するストレージLBAアドレスに再マッピングされる時にホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブルを生成し、ストレージLBAアドレスの複数のブロックの各々のステータスを識別するブロック情報テーブルを生成するようにさらに構成される。
【0014】
他の1つの態様において、不揮発性大容量記憶システムは、ホストLBAアドレスと関連付けられたデータをホストシステムから大容量記憶システムにおいて受け取るための手段と、ホストLBAアドレスを受け取るために、割当て時に未記入の容量だけと関連付けられた連続するストレージLBAアドレスの1つのブロックを割当てるための手段と、受け取られたデータのためのホストLBAアドレスの各々を連続するストレージLBAアドレスのブロックに再マッピングするための手段とを備え、各ストレージLBAアドレスは、ホストLBAアドレスに関わらず、受け取られたデータが受け取られた順に、受け取られたデータに連続的な仕方で順次に割当てられる。
【0015】
本発明のさらに他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、ホストLBAアドレスと関連付けられたデータをホストシステム上のホスト再マッピングモジュールで受け取ることを含む。ホスト再マッピングモジュールは、ホストLBAアドレスを受け取るために、割当て時に未記入の容量だけと関連付けられた連続するストレージLBAアドレスの1つのブロックを割当て、また、受け取られたデータのためのホストLBAアドレスの各々を、連続するストレージLBAアドレスのブロックに、各ストレージLBAアドレスがホストLBAアドレスに関わらず受け取られたデータが受け取られた順に受け取られたデータに連続的な仕方で順次に割当てられるように、再マッピングする。連続するストレージLBAアドレスのブロックに再マッピングされた受け取られたデータと、割当てられたストレージLBAアドレスとはホストシステムから大容量記憶システムに送られる。
【0016】
他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータをホストシステムに存在するホスト再マッピングモジュールで受け取ることと、受け取られたホストLBAアドレスを、受け取られた順に、連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングすることとを含む。割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックが割当てられる。残りの受け取られたホストLBAアドレスは、連続するストレージLBAアドレスのブロックが完全にプログラムされた時にだけ、付加的なブロックに連続的に再マッピングされる。この方法は、陳腐化したデータだけをアドレス指定する連続するストレージLBAアドレスの新しいブロックを作成することと、連続するストレージLBAアドレスのブロックに再マッピングされた受け取られたデータと割当てられたストレージLBAアドレスとをホストシステムから大容量記憶システムに送ることとをさらに含む。
【0017】
本発明の1つの態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、ホストLBAアドレスと関連付けられたデータをホストシステム上のホスト再マッピングモジュールにおいて受け取ることと、受け取られたホストLBAアドレスを受け取られた順にホストシステムにおいて連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングすることと、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当てることと、連続するストレージLBAアドレスのブロックが完全にプログラムされた時にだけ、付加的な受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングすることとを含む。この方法は、ホストLBAアドレスと関連付けられているデータが連続するストレージLBAアドレスに再マッピングされる時にホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブルをホストシステムにおいて生成することをさらに含む。
【0018】
本発明の他の1つの態様において、データを再プログラム可能な不揮発性大容量記憶システムに転送するためのホストシステムが開示される。このホストシステムは、大容量記憶装置との通信を可能にするように構成されたインターフェイスと、ホスト再マッピングモジュールからの命令に従ってインターフェイスを介して大容量記憶システムにデータを格納するように構成されたホストプロセッサとを含む。ホスト再マッピングモジュールは、ホストプロセッサに、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータをホストシステム上のホスト再マッピングモジュールにおいて受け取らせ、ホストLBAアドレスを受け取るために、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つのブロックを割当てさせ、各ストレージLBAアドレスが、ホストLBAアドレスに関わらず受け取られたデータが受け取られた順に、受け取られたデータに連続的な仕方で順次に割当てられるように、受け取られたデータのためのホストLBAアドレスの各々を連続するストレージLBAアドレスのブロックに再マッピングさせ、連続するストレージLBAアドレスのブロックに再マッピングされた受け取られたデータと、割当てられたストレージLBAアドレスとをホストシステムから大容量記憶システムに送らせるためのプロセッサ実行可能な命令を含む。
【0019】
本発明の他の1つの態様に従って、データを再プログラム可能な不揮発性大容量記憶システムに転送するためのホストシステムが開示される。このホストシステムは、大容量記憶装置との通信を可能にするように構成されたインターフェイスと、ホスト再マッピングモジュールからの命令に従ってデータをインターフェイスを介して大容量記憶システムに格納するように構成されたホストプロセッサとを備える。ホスト再マッピングモジュールは、ホストプロセッサに、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータをホスト再マッピングモジュールにおいて受け取らせ、受け取られたホストLBAアドレスを、受け取られた順に、ホストシステムにおいて連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングさせ、割当て時に未記入の容量だけと関連付けられた連続するストレージLBAアドレスの1つの付加的なブロックを割当てさせ、連続するストレージLBAアドレスのブロックが完全にプログラムされた時にだけ付加的な受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングさせるためのプロセッサ実行可能な命令を含む。ホスト再マッピングモジュールのプロセッサ実行可能な命令は、ホストプロセッサに、ホストLBAアドレスと関連付けられたデータが連続するストレージLBAアドレスに再マッピングされる時にホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブルをホストシステムにおいて生成させるようにも構成される。
【0020】
本発明の他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、大容量記憶システムに格納されるべきデータをホストファイルシステムにおいて受け取ることと、受け取られたデータに関連付けるべき連続するホストLBAアドレスの、少なくとも1つの利用可能なホストLBAアドレスを有する、第1のブロックを割当てることと、第1のブロック内の各々の利用可能なホストLBAアドレスを受け取られたデータに関連付けることとを含み、各々の利用可能なホストLBAアドレスは、受け取られたデータに、受け取られたデータが受け取られた順に、順次に割当てられる。この方法は、連続するホストLBAアドレスの第2のブロックを割当てることをさらに含み、その連続するホストLBAアドレスの第2のブロックは少なくとも1つの利用可能なホストLBAアドレスを有し、第2のブロックは、第1のブロック内の少なくとも1つの利用可能なホストLBAアドレスの各々の関連付けの後に初めて割当てられる。
【0021】
他の1つの態様において、データを再プログラム可能な不揮発性大容量記憶システムに転送するためのホストシステムが開示される。このホストシステムは、大容量記憶装置との通信を可能にするように構成されたインターフェイスと、データをホストメモリからの命令に従ってインターフェイスを介して大容量記憶システムに格納するように構成されたホストプロセッサとを備える。ホストメモリは、プロセッサに、ホストファイルシステムにおいて受け取られたデータと関連付けるべき連続するホストLBAアドレスの第1のブロックを割当てさせ、第1のブロック内の各々の利用可能なホストLBAアドレスを、各々の利用可能なホストLBAアドレスが、受け取られたデータに、受け取られたデータが受け取られた順に、順次に割当てられるように、受け取られたデータに関連付けさせ、受け取られたデータと関連付けるための連続するホストLBAアドレスの第2のブロックを、第1のブロック内の少なくとも1つの利用可能なホストLBAアドレスの各々を関連付けた後に初めて、割当てさせる、ホストファイルシステムを実行するためのプロセッサ実行可能な命令を有する。
【0022】
他の1つの態様において、データをホストシステムから再プログラム可能な不揮発性大容量記憶システムに転送するためのコンピュータ実行可能な命令を有するコンピュータ可読媒体が開示される。コンピュータ実行可能な命令は、大容量記憶システムに格納されるべきデータをホストファイルシステムにおいて受け取ることと、受け取られたデータと関連付けるべき連続するホストLBAアドレスの第1のブロックを割当てることと、第1のブロック内の各々の利用可能なホストLBAアドレスを、各々の利用可能なホストLBAアドレスが、受け取られたデータに、受け取られたデータが受け取られた順に、順次に割当てられるように、受け取られたデータに関連付けることとをプロセッサに実行させるように構成される。コンピュータ実行可能な命令は、受け取られたデータと関連付けるための連続するホストLBAアドレスの第2のブロックを、第1のブロック内の利用可能なホストLBAアドレスの各々の関連付けの後に初めて、割当てることをプロセッサに実行させるようにも構成される。
【0023】
本発明のさらに他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、ホストLBAアドレスと関連付けられたデータを大容量記憶システムにおいてホストシステムから受け取ることを含む。この方法は、受け取られたデータを、ホストLBAアドレスの順に関わらず、受け取られた順に、連続する物理アドレスを有する1つの書き込みブロックの連続する物理アドレスに格納することと、書き込みブロックが完全にプログラムされた時に受け取られたデータを格納する次の書き込みブロックとして、未記入の容量だけを含む連続する物理アドレスの1つのブロックを含む1つの白色ブロックを割当てることと、受け取られたデータのためのホストLBAアドレスを各書き込みブロック内の物理アドレスにマッピングする1つのストレージアドレステーブルを更新することとを含み、ストレージアドレステーブルは物理アドレスの少なくとも1つのブロックにおいて維持される。この方法は1つの新しい白色ブロックを作成することをさらに含み、1つの新しい白色ブロックを作成することは複数のピンク色ブロックから1つのピンク色ブロックを選択することを含み、複数のピンク色ブロックの各々は、有効なデータおよび陳腐化したデータの両方を有する完全にプログラムされた物理アドレスの1つの連続的なブロックであり、選択されたピンク色ブロックはしきい値量未満の有効なデータを有する。選択されたピンク色ブロックからの全ての有効なデータは、その選択されたピンク色ブロックからの全ての有効なデータが再配置されるとその選択されたピンク色ブロックが1つの新しい白色ブロックになるように、1つの再配置ブロックに再配置される。
【0024】
本発明の1つの態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が開示される。この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを大容量記憶システムにおいてホストシステムから受け取ることと、受け取られたデータを、ホストLBAアドレスの順に関わらず、受け取られた順に、連続する物理アドレスを有する1つの書き込みブロックの連続する物理アドレスに格納することとを含む。受け取られたデータのためのホストLBAアドレスの1つのランは1つのストレージアドレステーブル(SAT)の単一のページの上に物理アドレスの少なくとも2つのランにマッピングされ、SATは、大容量記憶システム内の連続する物理アドレスの少なくとも1つのブロックから構成される。
【0025】
他の1つの態様において、再プログラム可能な不揮発性大容量記憶システムにおいて未記入容量だけを有する連続する物理アドレスのブロックを生成する方法が開示され、大容量記憶システムは、連続する物理アドレスの複数のブロックを有する。この方法は、複数のブロックのうちの、有効なデータおよび陳腐化したデータの両方を有する連続する物理アドレスの1つの完全にプログラムされたブロックを含む各ピンク色ブロックに含まれる有効なデータの量を判定することと、有効なデータの判定された量に基づいてピンク色ブロックのうちの1つを選択することとを含む。この方法は、ピンク色ブロックのうちの選択された1つから有効なデータを1つの再配置ブロック内の連続する物理アドレスにコピーすることをさらに含み、再配置ブロックは、ピンク色ブロックのうちの選択された1つから有効なデータを連続的に再配置するべきところの連続する物理アドレスの1つのブロックを含み、有効なデータは、ピンク色ブロックのうちの選択された1つから有効なデータと関連付けられたホストLBAアドレスに関わらず出現の順にコピーされる。
【0026】
大容量記憶メモリシステムが本発明の他の1つの態様において開示される。この大容量記憶システムは、一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、ホストLBAアドレスでアドレス指定されたホストシステムからのデータを受け取るようになされているインターフェイスと、このインターフェイスと通信するコントローラとを備える。コントローラは、ホストシステムからデータを受け取るために連続する物理アドレスの第1のブロックを割当て、受け取られたデータのためのホストLBAアドレスの各々をその連続する物理アドレスのブロックにマッピングするように構成され、受け取られたデータは、受け取られたデータと関連付けられたホストLBAアドレスに関わらず、受け取られたデータが受け取られた順に、連続する物理アドレスに順次に書き込まれる。コントローラは、付加的な受け取られるデータを連続的な仕方で受け取るために連続する物理アドレスの第2のブロックを割当てるようにさらに構成され、その連続する物理アドレスの第2のブロックは、割当て時に未記入の容量だけを有し、コントローラは、連続する物理アドレスの第1のブロックを完全に割当てた時に初めてデータを第2のブロックに割当てる。また、コントローラは、ホストLBAアドレス位置と物理アドレス位置とを相関させる相関データを生成し、相関データを大容量記憶メモリシステムにおいて1つのストレージアドレステーブルに格納するようにさらに構成され、相関データは、ホストLBAアドレスの各ランを、ホストLBAアドレスのランと関連付けられたデータに対応する物理アドレスの1つ以上のランにマッピングする。
【0027】
本発明の他の1つの態様に従って、1つの連続する論理アドレス範囲の中の1つの論理アドレスによってデータが識別される記憶装置の中でデータを移動させる方法が開示される。この方法は、連続する論理アドレス範囲を等しいサイズの論理アドレスの連続するブロックに分割することと、装置に格納された有効なデータに割当てられている少なくとも1つの論理アドレスを含む論理アドレスの1つのブロックを識別することとを含む。この方法は、有効なデータを論理アドレスのブロック内に含まれない少なくとも1つの論理アドレスに再マッピングすることと、有効なデータに割当てられた少なくとも1つの論理アドレスと関連付けられた有効なデータを読み出すことと、識別されたブロックが有効なデータに割当てられたアドレスを含まないように、有効なデータを少なくとも1つの論理アドレスに書き込むこととを含む。
【0028】
本発明の他の特徴および利点は、以下の図面、詳細な説明および特許請求の範囲を検討すれば明らかとなる。
【図面の簡単な説明】
【0029】
【図1】不揮発性メモリを有するメモリシステムと接続されたホストを示す。
【図2】図1の不揮発性メモリとして用いられる例示のフラッシュメモリシステムの例示のブロック図である。
【図3】図2のシステムにおいて使用され得るメモリセルアレイの代表的な回路図である。
【図4】図2のシステムの物理メモリ組織の例を示す。
【図5】図4の物理メモリの一部分の拡大図を示す。
【図6】LBAアドレス空間における割当て済みクラスタおよび空きクラスタの代表的パターンを示す。
【図7】1つの開示される実施例に従うブロックによるクラスタの割当てのパターンを示す。
【図8】装置のメモリマネージャがストレージアドレス指定再マッピング機能を組み入れている、ホストとメモリドライブとの間のストレージアドレス再マッピングの実施例を示す。
【図9】図8に示されているストレージアドレス再マッピングの代わりの実施例を示す。
【図10】機能がホストに置かれているストレージアドレス再マッピングの実施例を示す。
【図11】図10のストレージアドレス再マッピングの代わりの実施例を示す。
【図12】クラスタのブロックの割当ての状態図である。
【図13】フラッシュメモリはバイナリパーティションおよびMLCパーティションを含む場合の図12の状態図の代わりの実施例である。
【図14】図9および10の実施例において利用され得るLBAアドレス空間および関連するDLBAアドレス空間の例である。
【図15】ホストから受け取られたデータのためのLBA対DLBAマッピングの例を示す。
【図16】DLBAアドレス空間におけるフラッシング操作と、物理アドレス空間内の対応する更新ブロックとを示す。
【図17】図16のフラッシング操作に続く第2のフラッシング操作を示す。
【図18】ホストからのデータを包含するブロックのためのブロックフラッシングプロセスの流れ図である。
【図19】ホスト論理アドレスが第2の論理アドレス空間に再マッピングされる構成におけるストレージアドレステーブル(SAT)階層を示す。
【図20】論理対論理マッピングを追跡するのに使われるストレージアドレステーブル(SAT)書き込みブロックを示す。
【図21】図20のSATテーブルのSATページで使用されるLBAエントリである。
【図22】図20のSATテーブルのSATページで使用されるDLBAエントリである。
【図23】図20のSATテーブルのSATページで使用されるSAT索引エントリである。
【図24】図9および10のストレージアドレス再マッピング機能において使用されるストレージアドレステーブル変換手続きを示す。
【図25】LBAアドレス空間およびDLBAアドレス空間における4つの時間インスタンスでのデータ書き込み操作の例の図である。
【図26】SATブロック遷移の状態図を示す。
【図27】SATブロックフラッシング順序を決定するためのプロセスの流れ図である。
【図28】ブロック情報テーブル(BIT)書き込みブロックを示す。
【図29】ホストから受け取られたデータのためのLBA対物理アドレスのマッピングの例を示す。
【図30】図29に示されているデータ分布に基づく物理アドレス空間におけるフラッシング操作を示す。
【図31】図30のフラッシング操作に続く第2のフラッシング操作を示す。
【図32】ホスト論理アドレスのランがデータランの物理アドレスにマッピングされる構成におけるストレージアドレステーブル(SAT)階層を示す。
【図33】論理対物理マッピングを追跡するのに使用されるストレージアドレステーブル(SAT)書き込みブロックを示す。
【図34】図33のSATテーブルのSATページに使用されるLBAエントリである。
【図35】図33のSATテーブルのSATページに使用されるデータエントリである。
【図36】図33のSATテーブルのSATページに使用されるSAT索引エントリである。
【図37】論理アドレスの完全なブロックがデータランにマッピングされる、図32〜36のSATの代わりの実施形態を示す。
【図38】図11の構成を利用するシステムにおけるストレージアドレス再マッピングの実施例を示す。
【発明を実施するための形態】
【0030】
本発明の種々の態様を実施するために用いるのに適するフラッシュメモリシステムが図1〜6に示されている。図1のホストシステム1は、フラッシュメモリ2にデータを格納し、それからデータを取り出す。フラッシュメモリは、例えばパーソナルコンピュータに据え付けられたソリッドステートディスク(SSD)ドライブの形で、ホスト内に埋め込まれ得る。代わりに、メモリ2は、図1に示されているように機械電気コネクタの接合部品3および4を通してホストに取り外し可能に接続されるカードの形であり得る。内部のあるいは埋め込みのSSDドライブとして使用されるように構成されたフラッシュメモリは図1の略図に類似するように見えるかもしれないが、主な違いはホスト内でのメモリシステム2の位置である。SSDドライブは、回転磁気ディスクドライブに替わるドロップイン取替え品である個別的モジュールの形であり得る。
【0031】
市販されているSSDドライブの1例は、サンディスク コーポレーションにより製造されている32ギガバイトSSDである。市販されている取り外し可能なフラッシュメモリカードの例は、コンパクトフラッシュ(CF)、マルチメディアカード(MMC)、セキュアデジタル(SD)、ミニSD(miniSD)、メモリスティック、スマートメディア、およびトランスフラッシュカードを含む。これらのカードの各々は、その標準化された仕様に従う独特の機械的および/または電気的インターフェイスを有するけれども、各々に含まれているフラッシュメモリシステムは類似している。これらのカードは全て、本願の譲受人であるサンディスク コーポレーションから入手可能である。サンディス
コーポレーションクは、Cruzerという商標のもとで1系列のフラッシュドライブも提供しり、それらは、ホストのUSBレセプタクルに差し込むことによってホストと接続するためのユニバーサル・シリアル・バス(USB)プラグを有する小型パッケージ内のハンドヘルドメモリシステムである。これらのメモリカードおよびフラッシュドライブの各々は、ホストとインターフェイスしてそれらの中のフラッシュメモリの動作を制御するコントローラを含む。
【0032】
SSD、メモリカードおよびフラッシュドライブを使用することのできるホストシステムは、たくさんあって多様である。それらは、デスクトップあるいはラップトップおよび他の携帯可能なコンピュータなどのパーソナルコンピュータ(PC)、セルラー電話機、個人用携帯情報端末(PDA)、デジタルスチルカメラ、デジタルムービーカメラ、および携帯可能なオーディオプレーヤを含む。携帯可能なメモリカードアプリケーションのために、ホストは1つ以上のタイプのメモリカードまたはフラッシュドライブのための内蔵レセプタクルを含むことができ、あるいはホストはメモリカードを差し込むアダプタを必要とし得る。メモリシステムは、普通はそれ自身のメモリコントローラおよびドライバを包含するけれども、その代わりにメモリが接続されているホストによって実行されるソフトウェアにより制御されるメモリだけのシステムもいくつかある。コントローラを包含するあるメモリシステム、特にホストに埋め込まれているものでは、メモリ、コントローラおよびドライバはしばしば単一の集積回路チップ上に形成される。
【0033】
図1のホストシステム1は、メモリ2に関する限り、回路およびソフトウェアの組み合わせから構成される2つの主要な部分を有すると見なされ得る。それらは、アプリケーション部分5と、メモリ2とインターフェイスするドライバ部分6とである。PCにおいて、例えば、アプリケーション部分5は、ワードプロセッサ、グラフィックス、制御または他のポピュラーなアプリケーションソフトウェアを実行するプロセッサ9と、ホスト1上のデータを管理するためのファイルシステム10とを含むことができる。カメラ、セルラー電話機、あるいはその他の、主として単一の機能セットの実行のために専用されるホストシステムでは、アプリケーション部分5は、写真を撮り、また記憶するようにカメラを操作し、電話を掛け、また受け取るようにセルラー電話機を操作するなどするソフトウェアを含む。
【0034】
図1のメモリシステム2は、フラッシュメモリ7と、データを前後に通過させるためにカードが接続されているホストとインターフェイスし、かつメモリ7を制御する回路8とを含む。コントローラ8は、通例、データプログラムおよび読み出しの間に、ホスト1により使用されるデータの論理アドレスとメモリ7の物理アドレスとの間で変換を行う。
【0035】
図2を参照すると、図1の不揮発性メモリ2として使用され得る代表的なフラッシュメモリシステムの回路が記載されている。システムコントローラは、普通、システムバス13を介して1つ以上の集積回路メモリチップと並列に接続された単一の集積回路チップ11上に実装され、単一のそのようなメモリチップ15が図2に示されている。図に示されている特定のバス13は、データを伝える導体の独立のセット17と、メモリアドレスのためのセット19と、制御信号およびステータス信号のためのセット21とを含む。あるいは、導体の単一のセットが、これら3つの機能の間で時分割され得る。さらに、「Ring Bus Structure and It's Use in Flash Memory Systems 」という2004年8月9日に出願された米国特許出願第10/915,039号(特許文献1)に記載されているリングバスなどの、システムバスの他の構成が採用され得る。
【0036】
代表的なコントローラチップ11は、インターフェイス回路25を通してシステムバス13とインターフェイスするそれ自身の内部バス23を有する。バスに通常結び付けられている主な機能は、プロセッサ27(マイクロプロセッサあるいはマイクロコントローラなど)、システムを初期化(「ブート」)するためのコードを包含する読み出し専用メモリ(ROM)29、主としてメモリおよびホストの間で転送されるデータをバッファリングするために使用される読み出し専用メモリ(RAM)31、およびメモリとホストとの間でコントローラを通過するデータのために誤り訂正符号(ECC)を計算しチェックする回路33である。コントローラバス23は回路35を通してホストシステムとインターフェイスし、それは、メモリカードに内蔵される図2のシステムの場合には、コネクタ4の一部であるカードの外部接点37を通して行われる。クロック39は、コントローラ11の他のコンポーネントの各々に接続されて、それらにより利用される。
【0037】
メモリチップ15も、システムバス13と接続されている他のものも、多数のサブアレイあるいはプレーンをなすように組織されたメモリセルアレイを含むことができ、2つのそのようなプレーン41および43が簡潔さを図るために図に示されているけれども、その代わりにもっと多くの、例えば4個または8個のそのようなプレーンも使用され得る。あるいは、チップ15のメモリセルアレイは、プレーンをなすように分割されなくてもよい。しかし、そのように分割される場合には、各プレーンは、互いに独立して動作し得るそれ自身の列制御回路45を有する。回路45および47は、システムバス13のアドレス部分19からそれぞれのメモリセルアレイのアドレスを受け取り、それらを、それぞれのビット線49および51のうちの特定の1つ以上をアドレス指定するために復号する。ワード線53は、アドレスバス19で受け取られたアドレスに応じて行制御回路55を通してアドレス指定される。Pウェル電圧制御回路61および63と同じく、ソース電圧制御回路57および59もそれぞれのプレーンと接続されている。メモリチップ15がメモリセルの単一のアレイを有し、2つ以上のそのようなチップがシステムに存在するならば、各チップのアレイは、前述した多数のプレーンチップ内のプレーンまたはサブアレイと同様に操作され得る。
【0038】
データは、システムバス13のデータ部分17と接続されているそれぞれのデータ入出力回路65および67を通してプレーン41および43内へ、またそれらの外へ転送される。回路65および67は、それぞれの列制御回路45および47を通してプレーンに接続された線69および71を通して、それぞれのプレーンのメモリセルにデータをプログラムすると共にメモリセルからデータを読み出すための手段を提供する。
【0039】
コントローラ11は、データをプログラムし、データを読み出し、消去し、また種々のハウスキーピング事項を処理するためにメモリチップ15の動作を制御するけれども、各メモリチップも、そのような機能を実行するためにコントローラ11からのコマンドを実行する多少の制御回路を含む。インターフェイス回路73は、システムバス13の制御およびステータス部分21に接続されている。コントローラからのコマンドは、これらのコマンドを実行するために他の回路の具体的な制御を提供する状態マシン75に提供される。制御線77〜81は、図2に示されているように、状態マシン75をこれらの他の回路と接続する。状態マシン75からのステータス情報は、バス部分21を介してコントローラ11に伝送されるべく線83を介してインターフェイス73に伝えられる。
【0040】
メモリセルアレイ41および43のNANDアーキテクチャが現在好ましいけれども、代わりにNORなどの他のアーキテクチャも使用され得る。NANDフラッシュメモリと、メモリシステムの一部としてのそれらの動作との例が、米国特許第5,570,315号(特許文献2)、第5,774,397号(特許文献3)、第6,046,935号(特許文献4)、第6,373,746号(特許文献5)、第6,456,528号(特許文献6)、第6,522,580号(特許文献7)、第6,771,536号(特許文献8)および第6,781,877号(特許文献9)、ならびに米国公開特許出願第2003/0147278号(特許文献10)を参照することにより得られ得る。NANDアレイの例が、図3の回路図により示され、それは図2のメモリシステムのメモリセルアレイ41の一部分である。多数のグローバルビット線が設けられるが、説明を簡略化するために図2には4つのそのような線91〜94だけが示されている。直列接続された数個のメモリセルストリング97〜104が、これらのビット線のうちの1つと基準電位との間に接続されている。代表としてメモリセルストリング99を用いると、複数の電荷蓄積メモリセル107〜110が、ストリングの両端で選択トランジスタ111および112と直列に接続されている。1つのストリングの選択トランジスタが導通させられると、そのストリングはそのビット線と基準電位との間に接続される。その後、一度にそのストリングの中の1つのメモリセルがプログラムされるかあるいは読み出される。
【0041】
図3のワード線115〜118は、それぞれ、メモリセルの数個のストリングの各々の中の1つのメモリセルの電荷蓄積素子を横断して伸び、ゲート119および120は、ストリングの各端部の選択トランジスタの状態を制御する。共通のワード線および制御ゲート線115〜120を共有するメモリセルストリングは、一緒に消去されるメモリセルの1つのブロック123を形成させられる。セルのこのブロックは、物理的に一度に消去可能な最小数のセルを包含する。1行のメモリセル、すなわちワード線115〜118のうちの1つに沿うメモリセルは一度にプログラムされる。通例、NANDアレイの行は所定の順序で、この場合には接地または他の共通電位に接続されているストリングの端部に最も近いワード線118に沿う行から、プログラムされる。ワード線117に沿うメモリセルの行が次にプログラムされ、そしてブロック123の全体にわたって、そのようにプログラムされてゆく。ワード線115に沿う行は最後にプログラムされる。
【0042】
第2のブロック125は同様であり、そのメモリセルのストリングは第1のブロック123のストリングと同じグローバルビット線に接続されているが、ワード線および制御ゲート線の異なるセットを有する。ワード線および制御ゲート線は、行制御回路55によってそれらの適切な動作電圧へ到達させられる。例えば図2のプレーン1および2など、2つ以上のプレーンまたはサブアレイがシステムに存在するならば、1つのメモリアーキテクチャは、それらの間に伸びる共通ワード線を使用する。代わりに、共通のワード線を共有する3つ以上のプレーンまたはサブアレイが存在し得る。他のメモリアーキテクチャでは、それぞれのプレーンまたはサブアレイのワード線は別々に駆動される。
【0043】
前に援用されているNAND特許および公開された特許出願のうちのいくつかに記載されているように、メモリシステムは、各々の電荷蓄積素子または領域に2つよりも多くの検出可能なレベルの電荷を蓄積し、これにより1ビットより多くのデータを各々に記憶させるように操作され得る。メモリセルの電荷蓄積素子は、最も一般的には導電性フローティングゲートであるけれども、代わりに、米国公開特許出願第2003/0109093号(特許文献11)に記載されているように、非導電性の誘電体電荷トラッピング材料であり得る。
【0044】
図4は、以下のさらなる記述において1例として用いられるフラッシュメモリセルアレイ7(図1)の組織を概念的に示す。メモリセルの4つのプレーンまたはサブアレイ131〜134は、単一の統合メモリセルチップ上に、2チップ上に(各チップ上にプレーンのうちの2つ)、あるいは4つの別々のチップ上に存在し得る。明細な配列は、以下の議論にとっては重要ではない。もちろん、1つのシステム内に他の数のプレーン、例えば1,2,8,16またはそれ以上が存在し得る。このプレーンは、それぞれのプレーン131〜134に置かれているブロック137,138,139および140などの、長方形により図4に示されているメモリセルのブロックにそれぞれ分割される。各プレーンに数十あるいは数百のブロックが存在し得る。
【0045】
前述したように、メモリセルのブロックは消去の単位、すなわち物理的に一緒に消去可能な最小数のメモリセルである。しかし、並列性を高めるために、ブロックは、より大きなメタブロック単位で操作される。1つのメタブロックを形成するために各プレーンから1つのブロックが論理的に連結される。1つのメタブロック141を形成する4つのブロック137〜140が示されている。1つのメタブロックの中の全てのセルが通例一緒に消去される。ブロック145〜148から構成される第2のメタブロック143において示されているように、1つのメタブロックを形成するために使用されるブロックは、それらのそれぞれのプレーンの中の同じ相対的位置に限定される必要はない。全てのプレーンを横断するようにメタブロックを延在させるのが普通は好ましいけれども、高いシステム性能を得るために、メモリシステムは、別々のプレーンに存在する1個、2個または3個のブロックのうちのいずれかまたは全てからメタブロックを動的に形成する能力で操作され得る。これは、メタブロックのサイズを、1つのプログラミング操作で格納されるように利用され得るデータの量により厳密に適合させることを可能にする。
【0046】
次に、個々のブロックは、操作上の目的のために、図5に示されているようにメモリセルのページに分割される。例えば、ブロック137〜140の各々のメモリセルは、各々8ページP0〜P7に分割される。その代わりとして、各ブロック内のメモリセルの16ページ、32ページまたはそれ以上が存在し得る。ページは、1ブロック内でのデータプログラミングおよび読み出しの単位であって、一度にプログラムされるかあるいは読み出される最少量のデータを包含する。図3のNANDアーキテクチャでは、1つのページは、1ブロック内の1つのワード線に沿うメモリセルから形成される。しかし、メモリシステムの操作の並列性を高めるために、2つ以上のブロックの中のそのようなページが論理的に連結されてメタページとなることができる。1つのメタページ151が図5に示され、4個のブロック137〜140の各々から1つの物理的ページで形成されている。例えばメタページ151は4つのブロックの各々のページP2を含むけれども、メタページのページはブロックの各々の中で必ずしも同じ相対的位置を持っていなくてもよい。メタページは、プログラミングの最大単位である。
【0047】
ホスト1とメモリシステム2との間の、図6に示されている普通の論理インターフェイスは、メモリシステム2に格納され得る全データにアドレスを提供するのに充分な大きさの1つの連続的な論理アドレス空間160を利用する。前述したホスト1およびメモリシステム2を参照すると、フラッシュメモリ7に格納されるように定められているデータは、通例、論理ブロックアドレス(LBA)フォーマットで受け取られる。ホストアドレス空間は、通例、データのクラスタのインクリメントに分割される。各クラスタは所与のホストシステムにおいてデータの数個のセクタを含むように設計され、およそ4〜64セクタが代表的である。1つの標準的なセクタは512バイトのデータを包含する。図6を参照すると、NTFSファイルシステムのための論理アドレス空間160における割当て済みクラスタ162および空きクラスタ164の代表的なパターンが示されている。
【0048】
図6に示されている論理アドレス空間160の断片化を処理するための組織的構造が図7に示されている。本願明細書において記載されているストレージアドレス再マッピングのためのシステムおよび方法は、以下の議論において一般的に「ブロック」と称されるクラスタのブロック166を考慮してLBAアドレスを割当てる。書き込み操作は、常にデータを個々のブロック166に書き込み、そのブロック166を、次の利用可能なブロックに進む前に、データで完全に満たすことによって処理される。以下の記述において、有効なデータで完全に満たされているブロック166は赤色ブロック168と称され、有効なデータがなくて、従って未記入容量だけを含むブロックは白色ブロック170と称される。メモリシステムが「使用後に消去する」タイプの手続きを採用しているならば、白色ブロック170内の未記入容量は消去済み状態であり得る。その代わりに、メモリシステムが「使用前に消去する」タイプの手続きを採用しているならば、白色ブロック170内の未記入容量は割当て時に消去されなければならない陳腐化したデータからなることができる。完全にプログラムされていて、有効なデータのクラスタ162および無効な(陳腐化したとも称される)データのクラスタ164の両方を有するブロックはピンク色ブロック172と称される。
【0049】
論理アドレス空間160を論理アドレスのブロックを考慮して分割し管理するために、ホストとメモリシステムとはフラッシュメモリにおける物理的ブロックのブロックサイズに関する情報を交換しなければならないことがある。論理ブロックのサイズは好ましくは物理的ブロックと同じサイズであって、この情報は、メモリシステムがホストと接続される時に伝達され得る。この通信は、パワーアップ時にあるいはメモリシステムのホストへの接続時にハンドシェイキング動作として行われるように設定され得る。一実施形態では、ホストは、ブロックサイズおよびアライメント情報を要求する「ドライブ識別(Identify Drive)」クエリをメモリシステムに送ることができ、ブロックサイズは、そのメモリシステムのための個々の物理的ブロックのサイズであり、アライメント情報は、既に各物理的ブロックの一部を占めつつあるかもしれないシステムデータために物理的ブロックの先頭からどれほどのオフセット(あるならば)を考慮に入れなければならないかである。
【0050】
ドライブ識別コマンドは、レガシーLBAインターフェイスコマンドセットの予備コードとして実現され得る。コマンドは、標準的な通信インターフェイスにおいて予備のコマンドコードあるいは割当てられていないコマンドコードを介してホストからメモリシステムに送られ得る。適切なインターフェイスの例は、ソリッドステートディスクのためのATAインターフェイス、あるいは、例えばCFまたはSDメモリカードに使われているものなどのATA関連インターフェイスを含む。メモリシステムがブロック情報およびオフセット情報の両方を提供できなければ、ホストはデフォルトのブロックサイズおよびオフセットを想定することができる。メモリシステムがドライブ識別コマンドに対してオフセット情報なしで、ブロックサイズ情報だけで応答するならば、ホストはデフォルトのオフセットを想定することができる。デフォルトのブロックサイズは、いくつかの標準的なブロックサイズのうちのどれであってもよくて、好ましくは、おそらく実際の物理的ブロックサイズであるサイズより大きく設定される。各々の物理的ブロックがホストからのデータを物理的ブロック内の第1のアドレスから開始して受け取れるということが仮定されるように、デフォルトオフセットはゼロオフセットにセットされ得る。ホストが所定の、SSDなどの内部ドライブに結合されているならば、記憶装置の能力は既に知られていて前もってプログラムされているかもしれないので、ブロックサイズおよびオフセットを決定するこのステップを行う必要はないかもしれない。しかし、たとえ内部ドライブであっても交換され得るので、ホストは、常に記憶装置の能力を確認するように構成され得る。取り外し可能なメモリシステムについて、ホストは、ドライブ識別コマンドまたは類似のメカニズムを通してブロックサイズおよびオフセットを問い合わせることができる。
【0051】
本願明細書に記載されているクラスの空きブロック166を割当て、空きブロックに書き込むためのシステムおよび方法は、いろいろな組み合わせでホストシステムおよびメモリシステムに分配された機能またはハードウェアを含み得る。図8〜11は、ホスト内のファイルとソリッドステート記憶装置とを含むシステムの階層の中の4つの異なるレベルにおいて、クラスタのブロック割当てを成し遂げるストレージアドレスマッピングまたは再マッピングアルゴリズムが実行され得る仕方の例を示す。
【0052】
図8および9のアレンジメントは、ストレージアドレスマッピングまたは再マッピング機能が記憶装置176,178にすっかり含まれる実施形態のものである。これらの始めの2つのアレンジメントでは、記憶装置176,178はレガシーホスト174と協同することができ、ホスト174の改変は不要である。逆に、図10および11に示されているアレンジメントは、ストレージアドレスマッピングまたは再マッピング機能がホスト180,182にすっかり含まれる実施形態のものである。これらの後者の2つの実施形態では、ホスト180,182は、改変を必要としないレガシー記憶装置184と協同することができる。
【0053】
図8の例では、ストレージアドレスマッピングアルゴリズムを記憶装置176のメモリマネージメント177に統合することができ、ホスト174からのLBAアドレスは、物理メモリの第1のブロックが、次のブロックへ進む前にデータで完全に満たされることとなるように、フラッシュメモリ内の物理的ブロックに直接マッピングされる。その代わりに、図9では、ストレージアドレス再マッピングメカニズムが記憶装置178において、しかし装置178のためのメモリマネージャ179とは別に、実現され得る。図9の実施例では、ホスト174からの各論理アドレスは、データを完全なブロック166を考慮して書き込むという手法を利用して、本願明細書でストレージ論理ブロックアドレス(ストレージLBA)と称されると共に本願明細書で装置論理ブロックアドレス(DLBA)とも称される第2の論理アドレスに再マッピングされ、その後にメモリマネージャ179が、DLBAアレンジメントのもとで組織されたデータを物理メモリのブロックに移す。DLBAアドレス空間は、1つの物理的メタブロックのものに等しい均一なサイズのDLBAブロックを単位として組織される。図10の実施例は、ストレージアドレス再マッピングの機能を記憶装置184からホスト180上の1つのアプリケーションに移す。この実施例では、LBAアドレスをDLBAアドレスにマッピングする機能は図9のものに類似し、主な違いは、変換が記憶装置184ではなくてホスト180上で行われることである。ホスト180は、ホストで生成されたDLBAアドレス情報と、DLBAアドレスに関連付けられたデータとの両方を記憶装置184に送る。最後に、ホストオペレーティングシステム182自体に埋め込まれたデータ割当てアレンジメントが図11に示されている。この最後の実施例では、例えばウィンドウズXPまたはビスタのオペレーティングシステムの中のNTFSファイルシステムなどの、ホスト182のファイルシステム185は、中間の論理アドレスから論理アドレスへの変換を必要とせずにクラスタの完全な論理ブロックを考慮してストレージアドレスを生成するように構成され得る。従って、図11の実施例は、LBAアドレスが、最初は、付加的なブロックを満たし始める前に完全なブロックを満たすために生成されるように、改変されたアルゴリズムをホストファイルシステムに含む。
【0054】
図8〜11のアレンジメントのいずれにおいても、データを書き込むための唯一の場所として1つの白色ブロック170が割当てられ、それは、その書き込みポインタの現在の位置において、データで、それがホストにより提供される順に、順次に満たされる。ストレージアドレスの1つのブロックが有効なデータに完全に割当てられた時、それは赤色ブロック168になる。ファイルがホストにより削除されるかあるいはファイルの部分がホストにより更新される時、赤色ブロック168内のいくつかのアドレスは最早有効なデータに割当てられていなくなることがあり、従ってそのブロックはピンク色ブロック172になる。本願明細書においてより詳しく論じられるように、ホストからデータを受け取るために割当てられる白色ブロック170は書き込みブロックと称され、フラッシング操作中にデータを受け入れるために割当てられる白色ブロックは再配置ブロックと称される。いろいろな目的のために複数の書き込みポインタが定められ得る。例えば、いろいろなアプリケーションにおいて論理アドレス空間は、アドレス範囲またはファイルサイズに基づいて複数の連続する範囲に細分され得る。論理アドレス空間の各々の独立している範囲は、ストレージアドレス空間においてそれ自身の書き込みブロックおよび関連する書き込みポインタを有するように構成され得る。論理アドレス空間アドレスランの分割は、ランシーケンスまたはファイルサイズに加えて、データのタイプに基づいて実行され得る。例えば、頻繁に更新されるNTFS MFTテーブルデータを、稀に更新されるデータから分離したいという希望があり得る。
【0055】
ストレージアドレス再マッピングアルゴリズムは、有効なデータをピンク色ブロック172から再配置ポインタとして知られている特別の書き込みポインタへ再配置すること(本願明細書ではフラッシングとも称される)による白色ブロック170の作成を管理する。ストレージアドレス空間が前述したように範囲またはファイルサイズにより細分されるならば、ストレージアドレスの各範囲は、それ自身の再配置ブロックおよび関連する再配置ポインタを持ち得る。フラッシング操作は、普通は、ピンク色ブロックを赤色ブロックおよび白色ブロックに変換するために、バックグラウンド操作として実行される。ピンク色ブロックは、その特性に応じてフラッシング操作のために選択される。再び図7を参照すると、1つの実施例では、有効なデータを有するアドレスが少ないほど、そのピンク色ブロックがフラッシングされる時に再配置を必要とするデータが少ないという結果となるので、最少量の有効なデータ(すなわち、図7において最少の陰影付きクラスタ)を有するピンク色ブロックが選択される。従って、図7の例では、ピンク色ブロックBのほうが有効なデータを有するアドレスをより少なく持っているので、ピンク色ブロックAに優先してピンク色ブロックBが選択される。他の実施例では、フラッシング操作のために選択されるピンク色ブロックは、あるしきい値より少ない量の有効なデータと関連付けられているピンク色ブロックのグループのうちの任意の1つであり得る。そのしきい値は、おそらく、ピンク色ブロックの集合全体に含まれる有効なデータの平均量より少ない。その有効なデータのしきい値量またはそれ以下のピンク色ブロックの部分集合が、ホストまたはメモリシステムがピンク色ブロックをそれから選択し得るところのリストにおいて維持され得る。例えば、しきい値要件を現在満たしている確定された数(例えば、16個)または割合(例えば、30%)のピンク色ブロックの動的リストが維持され得て、そのリスト中の選択されたピンク色ブロックが絶対最少量の有効なデータを有するか否かに関わらず、そのリストからどのピンク色ブロックでもフラッシングのために選択され得る。メモリシステムまたはホストがそれから選択するところのリストを形成するピンク色ブロックの数または割合は、固定された値またはユーザ選択可能な値であり得る。リストは、格付けされた順序で、利用可能なピンク色ブロックから絶対最少量の有効なデータを有するピンク色ブロックを代表するピンク色ブロックのグループを含むことができ、あるいは単にしきい値要件内に属するピンク色ブロックを含むことができる。
【0056】
その代わりに、あるいは組み合わされて、特定のピンク色ブロック172に付加的な陳腐化したデータを蓄積する計算された確率に基づくピンク色ブロックの選択も行われ得る。さらなる陳腐化したデータがピンク色ブロック172に蓄積される確率は、メモリにおいて最も長く存在し続けたデータは最も削除されそうもないという仮定に基づくことができる。従って、再配置ブロックであったピンク色ブロック172は、新しいホストデータを有する書き込みブロックであったピンク色ブロック172より古くから存在し続けているデータを包含する。フラッシングのためのピンク色ブロック172の選択プロセスは、近ごろ再配置ブロックであったピンク色ブロック172を先に標的にする。なぜならば、それらは、さらなるデータを削除される可能性が少なく、従ってより少量の付加的な陳腐化したデータが予期され得るからである。より新しいデータのほうが削除されてより多くの陳腐化したデータを作る可能性が大きいという仮定に基づいて、以前書き込みブロックであったピンク色ブロック172は後でフラッシングのために選択される。
【0057】
ストレージアドレス再マッピングアルゴリズムの中でのデータの流れとブロック状態変化のパターンとが図12に示されている。前述したように、ストレージアドレス再マッピング手法は、クラスタのブロックを考慮してアドレス空間を割当て、クラスタのブロック166を、他のクラスタのブロックを割当てる前に、満たし尽くす。これは、ホストからのデータが書き込まれる現在の書き込みブロックとなる1つの白色ブロックを先ず割当てることにより成し遂げられ、ホストからのデータは、それが受け取られた時間に応じて順次に書き込みブロックに書き込まれる(ステップ188において)。現在の書き込みブロック内の最後のページが有効なデータで満たされた時には、その現在の書き込みブロックは赤色ブロックとなり(ステップ190において)、新しい書き込みブロックが白色ブロックリストから割当てられる。現在の書き込みブロック内のいくつかのページが、その現在の書き込みブロックが完全にプログラムされる前に既に陳腐化していたならば、現在の書き込みブロックはピンク色ブロックに直接遷移し得るということに留意するべきである。この遷移は、明瞭性を得るために、示されていないけれども、それは、書き込みブロックからピンク色ブロックへの矢によって表され得る。
【0058】
図12のデータフローの特定の例を再び参照すると、赤色ブロック内の1つ以上のページがLBAランの削除によって陳腐化した時、その赤色ブロックはピンク色ブロックとなる(ステップ192において)。ストレージアドレス再マッピングアルゴリズムがより多くの白色ブロックの必要性を検出した時、アルゴリズムは、ピンク色ブロックが白色ブロックになるようにピンク色ブロックから有効なデータを移すフラッシング操作を開始する(ステップ194において)。ピンク色ブロックをフラッシングするために、ピンク色ブロックの有効なデータは、再配置ブロックとして指定されていた白色ブロックに順次に再配置される(ステップ194および196において)。その再配置ブロックが満たされると、それは赤色ブロックになる(ステップ198において)。書き込みブロックに関して前に記されたように、再配置ブロックは、その中のいくつかのページが既に陳腐化していたならば、ピンク色ブロックに直接遷移することもできる。この遷移は、明瞭性を得るために、示されていないけれども、図12において再配置ブロックからピンク色ブロックへの矢によって表され得る。
【0059】
図13は、代わりのデータフロー例を示し、この場合にはストレージアドレス再マッピング機能はバイナリパーティション200およびマルチレベルセル(MLC)パーティション201を有するフラッシュメモリに付けられている。MLCパーティション200におけるブロック状態変化は図12の場合と同じであるが、バイナリパーティション200におけるブロック状態変化(ステップ202〜205における)はMLCパーティション201のものとは異なる。バイナリパーティション200において、ホストから受け取られるデータは、満たされて赤色ブロックになる(202において)まで順次書き込まれる書き込みブロックにおいて受け取られる。赤色ブロックのためのページが陳腐化したならば、そのブロックはピンク色ブロックとなる(203において)。ピンク色ブロックは、新しい白色ブロックを作るために(204において)本願明細書で論じられているようにフラッシングされることができ、それらはその後、バイナリパーティションにおいて新しい書き込みブロックとして割当てられる(205において)。しかし、バイナリパーティション200に存するピンク色ブロックからの有効なデータは、赤色ブロックからの有効なデータと同様にMLCパーティション201に送られ得る。
【0060】
フラッシュメモリ7が分割されて、図13に示されているように、ホストからデータを受け取るキャッシュとして機能するバイナリパーティション200とこのバイナリパーティションからデータを受け取る主記憶領域として機能するMLCパーティション201とを有する2階層システムとなっているメモリシステム2において、図8〜11の「ホスト」はバイナリパーティションであり得る。従って、本願明細書で論じられるストレージアドレス再マッピング手法は完全にメモリシステム2の階層の中での操作に関連することができ、システムにおいて前の階層(この例ではバイナリパーティション200)はホストと見なされ、現在の階層(ここではMLCパーティション201)は記憶装置と見なされる。この関係は3以上の階層の構成を有するメモリシステムに拡張され得ることが考えられ、そこでは先行する階層はホストに類似し、現在の階層は記憶装置として扱われる。バイナリパーティションおよびMLCパーティションを利用する他の実施形態では、ホスト1は、先ずバイナリパーティション200を通過することを必要とせずにMLCパーティション201に直接書き込むことができる。
【0061】
論理から論理への変換、LBAからDLBAへの変換が記憶装置(図9)上のアプリケーションまたはホスト(図10)上のアプリケーションによって実行される、図9および10に示されているストレージアドレス再マッピングの実施例を参照して、図12の状態図に従うアドレス操作の詳細な例が図14〜17と関連して次に論じられる。システムが図12により表されるストレージアドレス再マッピングアルゴリズムに従って動作していたと仮定して、所与の時点でのLBAアドレス空間208におけるホスト空きクラスタマップとDLBAアドレス空間210における空きクラスタマップとの仮想セクションが図14に示されているように表され得る。LBAアドレス空間208において、空きクラスタ164は本質的にランダムな位置に分散している。DLBAアドレス空間210において、2つの白色ブロック170が利用可能であり、異なる数の陳腐化した(空き)クラスタ164を有する3つのピンク色ブロック172がある。
【0062】
ホストは、記憶装置に書き込むデータを次に得た時、LBAアドレス空間208を、それが利用可能である時には常に割当てる。図15は、ストレージアドレス再マッピングアルゴリズムが、利用可能な白色ブロック170のうちの、書き込みブロック212になるべき1つをどのように割当てるか、また、各LBAアドレスが書き込みブロック212において利用可能なDLBA空間内の連続するクラスタにどのようにマッピングされるかを示す。DLBA空間内の書き込みブロック212は、LBAアドレス位置に関わらず、LBAアドレスが書かれる順に書き込まれる。この例では、説明を容易にするために、ホストが空きLBAクラスタを使用した時間順序はアドレス順序と同じであると仮定されるけれども、ストレージアドレス再マッピングアルゴリズムは、書き込みブロック212内のDLBAアドレスを、LBAアドレス番号順に関わらず、LBAアドレスが使用された時間順に割当てる。データは1つ以上のDLBAランをなして書き込みブロックに書き込まれる。DLBAランは、同じLBAラン内の連続するLBAアドレスにマッピングされた連続するDLBAアドレスの集合である。DLBAランは、DLBAアドレス空間210内のブロック境界で終結させられなければならない。書き込みブロック212が満杯になった時には、1つの白色ブロック170が次の書き込みブロック212として割当てられる。
【0063】
DLBAブロックはフラッシュメモリの物理アドレス空間内のブロック214と整列し、従ってDLBAブロックサイズと物理アドレスブロックサイズとは同じである。DLBA書き込みブロック212におけるアドレスの配列も、物理アドレス空間における対応する更新ブロックの配列と同じである。この対応の故に、一般にガーベッジコレクションと称される別のデータ統合は物理的更新ブロックにおいては全く不要である。普通のガーベッジコレクション操作では、論理アドレスのブロックは、特定の範囲のLBAアドレスを論理ブロックにおいて維持するために一般的に常にリアセンブルされ、それは物理的ブロックにおいても反映される。より具体的には、普通のガーベッジコレクション操作を利用するメモリシステムが特定の物理的ブロック内の1つのセクタに対応する更新された情報のセクタを受け取る時、メモリシステムは、その更新された1つまたは複数のセクタを受け取るために物理メモリ内の1つの更新ブロックを割当て、オリジナルの物理的ブロックからの残りの有効なデータの全てを更新ブロックの残りの部分の中に統合する。このように、標準的なガーベッジコレクションは、特定のLBAアドレス範囲のためのデータのブロックを、その特定のアドレス範囲に対応するデータが常に1つの共通の物理的ブロックの中に統合されるように永続させる。以下でより詳しく論じられるフラッシング操作は、同じアドレス範囲におけるデータの統合を必要としない。その代わりに、本願明細書において開示されるフラッシング操作は、種々の物理的ブロックからのデータの集合であり得るデータの新しいブロックを作るためにアドレスマッピング(図8および11の実施例)または再マッピング(図9および10の実施例)を実行し、そこではデータの特定のLBAアドレス範囲は意図的には統合されない。
【0064】
前述したように、ストレージアドレス再マッピングアルゴリズムは、順次書き込みアルゴリズムが作動するために白色ブロックの充分な供給が利用可能であることを保証するように働く。ストレージアドレス再マッピングアルゴリズムは、データをピンク色ブロックから再配置ブロック216として知られる特別の書き込みブロックへフラッシングすることによる白色ブロックの作成を管理する(図16)。フラッシングのために現在選択されているピンク色ブロックはフラッシングブロックと称される。
【0065】
ここで図15〜16を参照すると、ブロックフラッシングプロセスの図が示されている。ストレージアドレス再マッピングアルゴリズムは、1つの白色ブロックを再配置ブロック216として指定し、これに、付加的な白色ブロックを作成するために、選択されたピンク色ブロックからデータがフラッシングされる。フラッシングブロック(図15のピンク色ブロックA)内の、赤色データとも称される有効なデータは、フラッシングブロックを白色ブロック170に転換するために、再配置ブロック216内の連続するアドレスに再配置される。物理アドレス空間218の中の対応する更新ブロック214も、フラッシングされるデータを受け入れるように割当てられる。フラッシング操作はDLBAアドレス空間210における統合を既に成し遂げているので、ホストから受け取られる新しいデータのために使用される更新ブロック214と同じく、フラッシングされるデータを受け入れるための更新ブロック214は、有効なデータを統合するためのガーベッジコレクション操作を全く必要としない。
【0066】
図17に示されているように残りのピンク色ブロックから次のフラッシングブロック(図16のピンク色ブロックB)が識別される。最少量の赤色データを有するピンク色ブロックが再びフラッシングブロックとして指定され、ピンク色ブロックの赤色データ(有効なデータ)が、開いている再配置ブロック内の連続する位置に転送される。更新ブロック214内の物理アドレスの並列割当ても行われる。再び、再配置ブロック216にマッピングされた物理的更新ブロック214においてデータ統合は不要である。ピンク色ブロックに対するフラッシング操作は、書き込みブロックとして指定された白色ブロックの消費を補うのに充分な速度で白色ブロックを作るためにバックグラウンド操作として実行される。図14〜17の例は、ホストからの新しいデータのために、またピンク色ブロックからの再配置されるデータのために、書き込みブロックおよび再配置ブロックが物理アドレス空間内のそれぞれの別々の更新ブロックと共にどのように別々に維持され得るかを示す。現在の書き込みブロックが完全にプログラムされた時にだけ、ホストから受け取られる新しいデータを関連付けるために新しい書き込みブロックを割当てるプロセスと同様に、新しい再配置ブロックは、好ましくは、前の再配置ブロックが完全にプログラムされた後に初めて割当てられる。新しい再配置ブロックは、割当て時に、好ましくは未記入容量を含むだけである、すなわち何時でも消去できる陳腐化したデータと関連付けられているだけであるか、あるいは既に消去されていて有効なデータをまったく含んでいないかである。
【0067】
前述した実施形態では、ホストからの新しいデータは、単にホストからの他の新しいデータを受け取る書き込みブロックと関連付けられ、フラッシング操作時にピンク色ブロックからフラッシングされる有効なデータは、単に1つ以上のピンク色ブロックからの有効なデータを包含する再配置ブロックの中へ移される。他の実施例では、新しいデータと再配置されるデータとは、別々の書き込みブロックおよび再配置ブロックを必要とせずに単一の書き込みブロックに転送され得る。前述したように、他の実施形態でフラッシングのためのピンク色ブロックの選択が行われ得て、それらの実施形態では、現在のピンク色ブロックについての平均量などのしきい値より下の量の赤色データと関連付けられたピンク色ブロックのリストからどのピンク色ブロックでも選択され、あるいはピンク色ブロックは利用可能なピンク色ブロックのうちの特定のランキング(ピンク色ブロックと関連付けられた有効なデータの量に基づく)を有するピンク色ブロックからのいずれであってもよい。
【0068】
フラッシング操作は、それからの「熱い」データが陳腐化されているところのブロックからの割合に「冷たい」データを、同様の割合に冷たいデータを包含する再配置ブロックに再配置する。これは、割合に熱いブロックおよび割合に冷たいブロックの別々の集団を作るという効果を有する。フラッシングされるべきブロックは、常に、最少量のデータを包含する熱いブロックとして選択される。熱いブロックの集団の作成は、再配置されなければならないデータの量を減少させることによって、メモリのストレス要因を低減する。
【0069】
一実施形態では、フラッシングブロックとして選択されるピンク色ブロックは、最も過疎のピンク色ブロックすなわち最少量の有効なデータを包含するピンク色ブロックであることができて、ホストにより実行される特定の書き込みおよび削除操作に応答して選択されない。このような仕方でのピンク色ブロックのフラッシングブロックとしての選択は、有効なデータの最小限の再配置を伴うブロックフラッシング操作の実行を可能にする。なぜならば、そのように選択されるどのピンク色ブロックも、ホストによるファイルの削除の故に最多数の未割当てデータアドレスを蓄積しているからである。
【0070】
ピンク色ブロック選択プロセスの一例は、最低数の有効なページまたはクラスタを有するピンク色ブロックの5%の中の任意のピンク色ブロックを選択することであり得る。バックグラウンドプロセスで、最低のページまたはクラスタ総数値を有する16個のピンク色ブロックのリストが構築される。ピンク色ブロック識別プロセスは、「P」個のスケジュールされたブロックフラッシング操作により費やされる時間のうちに1サイクルを完成させることができる。フラッシングブロック識別プロセスにおける1つのサイクルが図18に示されている。白色、ピンク色および他のタイプのDLBAアドレスブロックのためのブロックアドレスのリストを含むブロック情報テーブル(BIT)が、以下でより詳しく記載されているようにストレージアドレス再マッピング機能によって維持されて、前のプロセスサイクル中に識別されたブロックの集合の後でQ個のピンク色ブロックの次の集合を識別するために読まれる(ステップ220において)。ピンク色ブロックの第1の集合は、装置初期化後の第1のプロセスサイクルにおいて識別されるべきである。フラッシングブロックの利用可能性を保証するために、Qの値はPのものより大きくあるべきである。1つの実施例では、Qの値は8であり、Pは4であり得る。集合中のピンク色ブロックの各々のために有効ページ総数値はゼロにセットされる(ステップ222において)。LBAとDLBAとの関係を追跡するために維持されるストレージアドレステーブル(SAT)ページエントリは、集合中の任意のピンク色ブロックに置かれている有効データページを識別するために一度に一つずつスキャンされる(ステップ224において)。ストレージアドレステーブルは以下でより詳しく記載される。有効ページ総数値は適宜にインクリメントされる。全てのSATページがスキャンされた後、集合中のピンク色ブロックの各々についての有効ページ総数値は低有効ページ総数値のためのリスト中のピンク色ブロックについてのものと対比して評価され、リスト中のブロックは、必要ならば、集合からのブロックにより取って代わられる(ステップ226において)。ブロックフラッシング操作の完了後、次のブロックフラッシング操作のために1つのブロックが選択されるべきである。これは、リスト中の最低有効ページ総数値を有するブロックであるべきである。
【0071】
図16〜17に関して記載されているようなブロックフラッシング操作を始める前に、再配置されなければならない有効なDLBAランの位置を決定するために、選択されたブロックはマッピングされなければならない。これは、ブロックから読み出されるデータの選択されたページのヘッダの中のLBAアドレスと、これらのLBAアドレスのためのSATエントリとを使用するサーチアルゴリズムにより成し遂げられる。サーチアルゴリズムは、それが徐々に構築する既知の有効なDLBAランおよび陳腐化したDLBAランのマップを使用する。有効なDLBAランは、SATエントリがブロックにおけるその存在を明示する時、ブロックマップに加えられる。陳腐化したDLBAランは、マッピングされるブロック内のデータページヘッダにおけるLBAの1つの範囲のためのSATエントリが他の1つのブロックにおける有効なDLBAの存在を明示する時、ブロックマップに加えられる。サーチプロセスは、ブロック内の全DLBAアドレスが有効であるか陳腐化しているものとして明瞭にマッピングされるまで続行される。
【0072】
ブロックフラッシング操作では、前述したブロックマッピングプロセスで識別された有効なDLBAランの中の全てのページが、選択されたブロックから再配置ブロック内の再配置ポインタに再配置される。再配置されたDLBAのためのエントリがSATリストに記録される。有効なDLBAランおよび陳腐化したDLBAランについての探索は、図9に示されているアレンジメントの場合にはメモリシステム2のコントローラ8によって実行され、ブロックDLBAマップは、コントローラと関連付けられているRAMに格納され得る。図10のアレンジメントに関して、ホストシステム1のCPUが、探索を実行して、結果としてのブロックDLBA情報をホストシステムCPUと関連付けられたRAMに格納することができる。
【0073】
ストレージアドレス再マッピングアルゴリズムは、白色ブロックの数が所定しきい値より下に落ちた時に、データの書き込みのために割当てられ得る使用可能な白色ブロック容量が書き込みブロックへのホストデータの書き込みにより白色ブロック容量が消費されるのと同じ速度で作られることを保証するのに充分な速度でピンク色ブロックに対するフラッシング操作が実行されなければならないという原理に基づいて働く。ホストからのデータを書き込むことにより消費される書き込みブロックの中のページの数は、ブロックフラッシング操作により回復される陳腐化したページの数と釣り合わされなければならない。ブロックフラッシング操作の完了後、次のブロックフラッシング操作のために選択されたピンク色ブロックの中の陳腐化したデータのページの数が、前述したように、BITおよびSATから特定のエントリを読み出すことにより、明らかにされる。次のブロックフラッシング操作は、書き込みブロックへのこの数のデータの有効なページの書き込みの直後に始まるように予定される。
【0074】
ストレージアドレステーブル
前述したストレージアドレス再マッピングを実行するために、ストレージアドレステーブル(SAT)が、ストレージアドレス空間内のデータの位置を追跡するために使用される。SAT内の情報は、完全なフラッシュメタブロックに対する連続する更新の一部としても書き込まれる。従って、一つの実施例では、SAT情報は、ホストから受け取られるデータのために使用される書き込みブロックとは別でかつフラッシング操作のために使用される再配置ブロックとは別の書き込みブロックに書き込まれる。他の実施例では、SAT情報は、異なるグループのブロック(例えば、非SAT情報により占められるMLCフラッシュパーティションよりはむしろバイナリフラッシュパーティションの中のブロック)に格納され得る。その代わりに、SATおよび非SATデータは、同じタイプのフラッシュブロックに格納され得るが、ブロックにより分離される。さらに他の実施形態では、SATおよび非SATデータは、同じブロック内で混ぜ合わされ得る。
【0075】
SATは、図8〜10の実施形態には関連するけれども、ホストファイルシステムがデータをアドレスの論理ブロックに順次に書き込むようになっていて第1の論理アドレスから第2の論理アドレスへの変換が不要である図11とは関連しない。また、次の議論は、図9〜10のホストおよび記憶装置の構成に関連するホストLBA空間からDLBAと称される(ストレージLBAとも称される)第2のLBA空間への再マッピングに焦点を当てるけれども、この同じSAT手法が、ホストLBAと関連付けられたデータが中間の論理から論理への変換なしで物理的ブロックに直接マッピングされる図8の実施形態に応用可能である。SAT情報は、論じられた実施形態に関わらず、好ましくは記憶装置内のフラッシュメモリに格納される。ホストLBAからDLBAへの再マッピングがホスト180上で行われる図10の実施形態について、SAT情報は記憶装置184内のフラッシュメモリに格納されるべく送られる。ストレージアドレス再マッピングアルゴリズムが記憶装置内のメモリマネージャで実行される図8の実施形態について、DLBAという用語は、図9〜10の実施形態で使用される第2の論理アドレス空間を指すよりはむしろフラッシュメモリ7内の物理アドレスを指し、DLBAアドレスのブロックは物理メモリにおけるメタブロックを表す。
【0076】
ストレージアドレステーブル(SAT)は、ホストファイルシステムにより割当てられるLBAアドレスをDLBAアドレスに関連付ける相関情報を含む。より具体的には、SATは、ホストファイルシステムによって有効なデータに割当てられたLBAアドレス空間内のアドレスの1つ1つのランとストレージアドレス再マッピングアルゴリズムによって作られたDLBAアドレス空間210内のアドレスの1つ以上のランとの間のマッピングを記録するために使用される。前述したように、システムアドレス空間の単位はLBAであり、LBAランはホストファイルシステムによって有効なデータに現在割当てられているLBAアドレスの1つの連続的な集合である。LBAランは、しばしば、未割当てLBAアドレスと境を接するけれども、SATデータ構造により必要とされるならばLBAランは複数のより小さなLBAランとして処理され得る。装置アドレス空間の単位はDLBAであり、DLBAランは、同じLBAラン内の連続するLBAアドレスにマッピングされたDLBAアドレスの1つの連続的な集合である。DLBAランは、DLBAアドレス空間内のブロック境界で終結させられる。各LBAランは、SATによって1つ以上のDLBAランにマッピングされる。LBAランの長さは、それがマッピングされているDLBAランの累積長さに等しい。
【0077】
LBAランのためのSATエントリは、それがマッピングされている第1のDLBAランのためのエントリへのリンクを含む。それがまたマッピングされ得る後続のDLBAランは、このランに接して続く連続するエントリである。DLBAランは、それがマッピングされているLBAランの中のそのオフセットアドレスへの、LBAランの絶対LBAアドレスへのではない、逆方向リンクを含む。1個のLBAアドレスは、1つのLBAランの中での1つのLBAオフセットとして定義され得る。SATは、LBAランにマッピングされている各DLBAランの先頭に対応するLBAオフセットを記録する。従って、1個のLBAアドレスに対応する1個のDLBAアドレスは、1つのDLBAランの中での1つのDLBAオフセットとして識別され得る。SATにおけるLBAランは有効なデータのランだけのためのものであり得るけれども、SATは、他の実施例では、有効なデータおよび陳腐化したデータの両方のためのLBAランを記憶するようにも構成され得る。
【0078】
SATは、SATブロックとして知られるLBAアドレスのブロックの中で実現される。SATは、1つの確定された最大数のSATブロックを含み、1つの確定された最大数の有効なSATページを包含する。従って、SATは、1つの指定された最大数のSATブロックのために、それが索引付けすることのできる1つの最大数のDLBAランを有する。1つの最大数のSATブロックが確定されるけれども、SATのエントリの数は、ホストにより割当てられたLBAの断片化に順応するので、SATは、最大数まで自動的にスケーラブルである可変サイズテーブルである。従って、ホストが高度に断片化されたLBAを割当てるならば、SATは、ホストが断片化の程度のより低いLBAのグループをデータに割当てる場合よりも多くのエントリを含む。従って、ホストLBAの断片化の程度が低くなれば、SATのサイズは小さくなる。SATは固定された数の論理アドレスをかたくなに追跡し更新するよりはむしろホストLBAアドレスの1つのランを1つのエントリにおいて1つ以上のDLBAランにマッピングするので、断片化の程度が低ければマッピングするべき別々のランは少なくなり、別々のランが少なければSATのエントリは少なくなる。
【0079】
SATのラン対ランマッピングアレンジメントの故に、ホストLBAアドレスの1つのランは2つ以上のDLBAランにマッピングされ、その場合、ホストLBAランは有効なデータに割当てられた連続する論理アドレスの1つの集合であり、DLBA(あるいはストレージLBA)ランは同じメタブロックの中の、同じホストLBAランにマッピングされているDLBAアドレスの1つの連続的な集合である。SAT索引付けおよびマッピング構造の階層が図19に示されている。LBAラン230および対応するDLBAラン232が示されている。LBA対DLBAマッピング情報はSATページ234に包含される。LBA対SATページ索引付け情報がSAT索引ページ236に包含され、マスターページ索引238は、図10の実施例ではホストプロセッサと関連付けられたRAMに、図8〜9の実施例ではコントローラ8と関連付けられたRAMにキャッシュされる。
【0080】
SATは、普通は複数のSATブロックを含むけれども、SAT情報はSAT書き込みブロックとして現在指定されている単一のブロックに書き込まれるだけであり得る。他の全てのSATブロックはすっかり書き込まれ、有効なページおよび陳腐化したページの組み合わせを包含し得る。SATページはホストLBAアドレス空間の1つの可変範囲の中の全てのLBAランのためのエントリを、それらがマッピングされている装置アドレス空間内のランのためのエントリと共に包含する。多数のSATページが存在し得る。SAT索引ページは、ホストLBAアドレス空間の1つのより大きな範囲の中の各々の有効なSATページの位置への1つの索引を含む。少数のSAT索引ページが存在し、それは通例1である。SAT内の情報は、単一のSAT書き込みブロック内の次の利用可能な位置に更新されたページを再書き込みし、そのページの前のバージョンを陳腐化したものとして扱うことによって改変される。従って、多数の無効なページがSAT内に存在し得る。SATブロックは、ホストデータについて前に記載されたものと類似する、ページを書き込みかつブロックをフラッシングするためのアルゴリズムによって管理される。
【0081】
SATブロック
各SATブロックは、SAT情報の記憶に専用されるDLBAアドレスの1つのブロックである。SATブロックはテーブルページに分割され、それらに1つのSATページ234またはSAT索引ページ236が書き込まれ得る。SATブロックは、有効なSATページ234、有効なSAT索引ページ236および陳腐化したページの任意の組み合わせを包含し得る。図20を参照すると、サンプルSAT書き込みブロック240が示されている。データは、インクリメンタルなSAT書き込みポインタ242により定められる連続する位置でSAT書き込みブロック240に書き込まれる。データは、SAT書き込みブロック240として指定されている単一のSATブロックに書き込まれ得るにすぎない。前に記載されたホストデータ書き込みブロック(例えば、図15〜17の212)についてと同様に、SAT書き込みブロック240がすっかり書き込まれた時、1つの白色ブロックが新しいSAT書き込みブロック240として割当てられる。SATページ位置は、そのSATブロックの中でのそのシーケンス番号によりアドレス指定される。
【0082】
SATページ
SATページ234は、SATにおけるマッピング情報の最小の更新可能な単位である。更新されたSATページ234は、SAT書き込みポインタ242により定められる位置に書き込まれる。SATページ234はインクリメントするLBAアドレスを有するLBAランの集合についてのマッピング情報を包含するけれども、引き続くLBAランのアドレス同士は連続していなくてもよい。1つのSATページ234内のLBAアドレスの範囲は他のどのSATページ234内のLBAアドレスの範囲とも重なり合わない。SATページ234はSATブロックの完全な集合の全体にわたって無制限に分散させられ得る。LBAアドレスの任意の範囲のためのSATページ234が任意のSATブロックの中にあり得る。SATページ234は、索引バッファフィールド244、LBAフィールド246、DLBAフィールド248および制御ポインタ250を含み得る。パラメータバックアップエントリは、また、揮発性RAMに格納されているいくつかのパラメータの値を包含する。
【0083】
SATページ234の中のLBAフィールド246は、LBAアドレスの1つの範囲の中で、データ記憶のために割当てられた連続するLBAアドレスのランのためのエントリを包含する。1つのSATページ234がまたがるLBAアドレスの範囲は、他のどのSATページ234がまたがるLBAエントリの範囲とも重なり合わない。LBAフィールドは可変長のフィールドであって、可変数のLBAエントリを包含する。LBAフィールド246の中に、SATページ234により索引付けされるLBAアドレスの範囲の中のどのLBAランのためにも1つのLBAエントリ252が存在する。1つのLBAランは1つ以上のDLBAランにマッピングされる。図21に示されているように、LBAエントリ252は次の情報、すなわち、ラン中の第1のLBA254、セクタ数で表したLBAランの長さ256、および、LBAランがマッピングされている第1のDLBAランの、同じSATページ234のDLBAフィールドの中でのDLBAエントリ番号258を含む。
【0084】
SATページ234の中のDLBAフィールド248は、同じSATページ234内のLBAフィールドの中のLBAランにマッピングされたDLBAアドレスの全てのランのためのエントリを包含する。DLBAフィールド248は、可変長のフィールドであって、可変数のDLBAエントリ260を包含する。DLBAフィールド248の中で、同じSATページ234のLBAフィールド246の中の1つのLBAランにマッピングされているどのDLBAランについても1つのDLBAエントリ260が存在する。各DLBAエントリ260は、図22に示されているように、次の情報、すなわち、ラン内の第1のDLBAアドレス262と、第1のDLBAアドレスがマッピングされているLBAランにおけるLBAオフセット264とを含む。どのSATページ234にもその一部分として書かれるけれども最も最近に書かれたSATページ234においてのみ有効なままであるSATページ/索引バッファフィールドは、SAT索引エントリ266を包含する。
【0085】
SAT索引エントリ266は、関連するSAT索引ページ236において有効なエントリを現在持っていないSAT内のどのSATページ234のためにも存在する。SAT索引エントリは、SATページ234が書かれるたびに作成または更新され、関連するSAT索引ページ236が更新される時に削除される。それは、SATページ234により索引付けされた第1のLBA268、SATページ234により索引付けされた最後のLBA270、SATページ234を包含するSATブロック番号272、およびSATブロック内のSATページ234のページ番号274を包含する。SAT索引フィールド276は、固定された数のSAT索引エントリ278のための容量を有する。この数は、SATページ234およびSAT索引ページ236が書かれ得る相対的頻度を決定する。1つの実施例では、この固定された数は32であり得る。
SATページフィールドポインタ250は、LBAフィールドの先頭からDLBAフィールドの先頭までのオフセットを確定する。それはLBAエントリの数としてのオフセット値を包含する。SATページ234内のパラメータバックアップエントリは、揮発性RAMに記憶されているパラメータの値を包含する。これらのパラメータ値は、パワーサイクル後にRAM(図8〜9の実施例ではコントローラ8と関連付けられ、図10の実施例ではホストCPUと関連付けられる)内の情報の初期化の間に使用される。それらは、最も最近に書かれたSATページ234においてのみ有効である。
【0086】
SAT索引ページ
SAT索引ページ236の集合は、SAT内のどの有効なSATページ234の位置への1つの索引も提供する。個々のSAT索引ページ236は、LBAアドレスの1つの範囲に関連する有効なSATページの位置を定めるエントリ278を包含する。1つのSAT索引ページ236がまたがるLBAアドレスの範囲は、他のどのSAT索引ページ236がまたがるLBAアドレスの範囲とも重なり合わない。エントリは、それらが関連するSATページのLBAアドレス範囲値に従って順序付けされる。SAT索引ページ236は、固定された数のエントリを包含する。SAT索引ページ236は、SATブロックの集合全体にわたって無制限に分散させられ得る。LBAアドレスの任意の範囲のためのSAT索引ページ236は、任意のSATブロックの中にあり得る。SAT索引ページ236は、SAT索引フィールドおよびページ索引フィールドを含む。
【0087】
SAT索引フィールド276は、SAT索引ページ236がまたがるLBAアドレス範囲の中の全ての有効なSATページのためのSAT索引エントリを包含する。SAT索引エントリ278は、単一のSATページ234に関連し、次の情報、すなわち、SATページ234により索引付けされた第1のLBA、SATページ234を包含するSATブロック番号、およびSATブロック内のSATページ234のページ番号を包含する。ページ索引フィールドは、SAT内の全ての有効なSAT索引ページ236のためのページ索引エントリを包含する。1つのページ索引エントリが、SAT内のどの有効なSAT索引ページ236のためにも存在し、次の情報、すなわち、SAT索引ページにより索引付けされた第1のLBA、SAT索引ページを包含するSATブロック番号、およびSATブロックの中のSAT索引ページのページ番号を包含する。ページ索引エントリは、最も最近に書かれたSAT索引ページ236においてのみ有効である。
【0088】
一時的SATデータ構造
図19に示されているアドレスマッピングの長期間記憶のためのSAT階層の一部分ではないけれども、SATを更新するための階層的手続きの中で付加的なデータ構造が使用され得る。1つのそのような構造は、LBAエントリと、SATページ234にまだ書かれていないLBAランに対する更新操作またはブロックフラッシング操作から生じた新しいアドレスマッピングのための新しいエントリのための対応するDLBAマッピングとを含むSATリストである。SATリストはRAM内の揮発性構造であり得る。SATリスト内のエントリは、SATページ更新中にそれらがSATページ234に書かれる時にクリアされる。
【0089】
テーブルページ
テーブルページは、SATブロック内のDLBAアドレス空間の固定されたサイズの単位であり、これは1つのSATページ234または1つのSAT索引ページ236を記憶するために使用される。テーブルページの最小サイズは1ページであり、最大サイズは1メタページであり、ここでページおよびメタページは、物理メモリにおけるページおよびメタページに対応するDLBAアドレス空間の単位である。
SATにおけるエントリサイズ
SATページ234およびSAT索引ページ236の中のエントリのサイズが表1に示されている。
【表1】
【0090】
アドレス変換
SATは、ホストファイルシステムのLBAアドレスに対応するDLBAアドレスの位置を迅速に突き止めるために有益である。一実施形態では、有効なデータにマッピングされているLBAアドレスだけがSATに含まれる。SATページ234は、一SATページ234から別のSATページへとLBA範囲同士が重なり合わないようにLBA順に配列されるので、所望のデータに向かって迅速に進むために単純なサーチアルゴリズムが使用され得る。このアドレス変換手続きの一例が図24に示されている。ターゲットLBA280が先ず(ストレージアドレス再マッピングの実施例がそれぞれ図9のように構成されているかまたは図10のように構成されているかにより)コントローラまたはプロセッサによって受け取られる。他の実施形態では、SATが有効なデータおよび陳腐化したデータにマッピングされたLBAアドレスを含んで、データが有効であるかそれとも陳腐化しているかを追跡するということが考慮され得る。
【0091】
図24は、アドレス変換手続きを示すほかに、最後に書かれたSAT索引ページからのページ索引フィールドと最後に書かれたSATページからの索引バッファフィールドとがどのように構成され得るかも示す。図24の実施例では、これら2つのフィールドは、記憶装置またはホストのRAMなどの揮発性メモリで一時的に維持される。最後に書かれたSAT索引ページのページ索引フィールドは、どのSAT索引ページへのポインタをも含む。索引バッファフィールドは、索引ページにまだ書き込まれていない近ごろ書かれたSATページのための索引エントリの集合を包含し得る。
【0092】
対応するDLBAアドレスとのターゲットLBAアドレスについてのマッピング情報は、そのターゲットアドレスを含む1つの範囲のLBAアドレスについての全マッピング情報を包含する特定のSATページ234において保持される。アドレス変換手続きの第1の段階は、このターゲットSATページを識別して読むことである。図24を参照すると、ターゲットLBAのためのSAT索引エントリが存在するか否かを判定するために、最後に書かれたSATページの索引バッファフィールドのキャッシュされているバージョンに対して二分探索が実行される(ステップ282において)。ターゲットSATページが近ごろ再書き込みされているけれどもターゲットSATページの新しい位置を記録したSAT索引エントリを組み込んだSAT索引ページがまだ書かれていなければ、1つのエントリが存在する。ターゲットLBAのための索引エントリが発見されたならば、それはターゲットSATページの位置を定義し、このページが読み出される(ステップ284において)。
【0093】
ステップ282でターゲットLBAのためのSAT索引エントリが発見されなければ、ターゲットLBAのためのSAT索引エントリの位置を突き止めるために、最後に書かれたSAT索引ページのページ索引フィールドのキャッシュされたバージョンに対して二分探索が実行される(ステップ286において)。ステップ286で発見されたターゲットLBAのためのSAT索引エントリは、ターゲットLBAを包含するLBAアドレス範囲のためのSAT索引ページの位置を定める。このページが読み出される(ステップ288において)。ターゲットLBAのためのSAT索引エントリの位置を突き止めるために二分探索が実行される(ステップ290において)。ターゲットLBAのためのSAT索引エントリは、ターゲットSATページの位置を定める。このページが読み出される(ステップ292において)。
【0094】
ターゲットSATページがステップ284またはステップ292で読まれた時、LBAからDLBAへの変換が次のように実行され得る。ターゲットLBAを組み込んだターゲットLBAランのためのLBAエントリの位置を突き止めるために、LBAフィールドに対して二分探索が実行される。ターゲットLBAランの中でのターゲットLBAのオフセットが記録される(ステップ294において)。フィールドポインタ内の情報は、二分探索のためのLBAフィールドの長さを、また、LBAフィールドの先頭に対してのDLBAフィールドの先頭をも定める(ステップ296において)。ステップ294で発見されたLBAエントリは、LBAランにマッピングされている第1のDLBAエントリのDLBAフィールドの中での位置を定める(ステップ298において)。ステップ294で判定されたオフセットは、ステップ298で位置が突き止められたより多くのDLBAエントリのうちの1つと共に、ターゲットDLBAアドレスを判定するために使用される(ステップ300において)。
【0095】
他の1つの実施形態では、有効なデータと関連付けられているLBAアドレスの各ランのためにSATにおいて別々のLBAエントリを生成する代わりに、LBAアドレスブロックが、各LBAアドレスブロックがSAT上の単一のエントリであるように、SATにおいてマッピングされ得る。この実施形態では、単なる個々のLBAランよりはむしろLBAアドレス空間内の完全なLBAアドレスブロックがSATにおいて記録され得る。この実施例におけるLBAエントリは、LBAアドレスブロックがマッピングされているDLBAアドレス空間内のDLBAランの数と、同じSATページ内の第1のDLBAランへのポインタとを記録する単一のエントリである。記憶装置に格納されているデータの断片化の程度によって、最低で1つのDLBAランあるいは最高でLBAアドレスブロック内のクラスタの数までに、1つのLBAアドレスブロックがマッピングされ得る。
【0096】
LBAアドレスブロックのための対応するDLBAエントリは、各DLBAランのDLBAブロックおよびアドレスオフセットの両方およびその対応するLBAオフセットを記録する。有効なデータと関連付けられたLBAランだけが記録される、各LBAランのために別々のLBAエントリを記録する前に論じられたSATのバージョンとは違って、LBAアドレスブロック内の全てのLBAランが記録される。従って、有効なデータに現在割当てられていないLBAアドレスブロック内のLBAランも、有効なデータに割当てられているLBAランと同じく記録される。SATページのDLBAエントリ部分において、LBAアドレスの割当てられていない集合の先頭を示すLBAオフセットは、DLBAアドレス空間内のデフォルト値とペアにされる。このデフォルト値は未割当てアドレスを表す。同じSAT構造および機能の全体が、図19〜20に関して論じられた基本的なSAT階層と同様に、LBAアドレスブロックマッピングの実施例に当てはまるけれども、SATページは、個々のLBAラン対DLBAラン情報よりはむしろLBAアドレスブロック対DLBAランのマッピング情報を表す。また、この実施例ではSAT索引ページは、LBAアドレスブロック対SATページのマッピング情報を記憶する。
【0097】
SAT例
例として、図19〜23の個々のLBAラン対DLBAランのマッピングを用いる、図9または10の論理対論理ストレージアドレス再マッピング手法を用いるデータ書き込みプロセスが図25に示されている。図25において、LBAアドレス空間302とDLBAアドレス空間304とが時間A〜Dについて示されている。時間Aにおいて、データがホストによって3つの別々のLBAランに、L1、L2およびL3の順に、書かれる。各データランは、LBA空間302内で他から分離されている。3つのLBAランは、次に、時間Aにおいて示されているようにDLBAアドレス空間内のブロックに、それらが受け取られた時間順に、再マッピングされる。この例は、DLBAアドレス空間304内のクラスタの第1のブロックが現在の書き込みブロックであったということを仮定している。従って、LBAアドレスランL1はDLBAアドレスランD1と、書き込みブロックとして指定された他の1つの白色ブロックの中のD2とに分割される。同様に、D2の後に続いて、L2のLBAアドレス空間ランはDLBAアドレス空間ランD3に変換される。最後のDLBAアドレス空間ランL3は、次に、クラスタのブロックをDLBAアドレス空間ランD4で完成させて新しい書き込みブロックをDLBAアドレス空間ランD5で開始させるために使用される。以下の表Aを参照すると、これまでに記載されたLBA対DLBA変換は、時間Aにおいて、各LBAランにポインタと、LBAアドレス空間におけるクラスタ長さと、DLBAポインタとが与えられているSATを生じさせる。
【0098】
SATのDLBAエントリ側に、1つのLBAランに対応する各DLBAが記載されている。この例では、単一のL1のLBAランがDLBAアドレス空間内の2つの別々のブロックに分割されているので、2つのDLBAランがある。各DLBAランの後に、第1LBAクラスタおよびDLBAマーカーからのオフセットが提供されるように、LBAオフセット数が提供されている。マーカーDLBA2は、LBAランL1の中に5クラスタであるアドレスを有して続いているので、そのオフセットは5である。LBA2マーカーおよびLBA3マーカーは続いてSATのLBAエントリ側にLBA順に記載されている。従って、DLBAアドレス空間内のデータランはL1,L2およびL3に対応し、L1,L2およびL3はこれらの別々のランが書かれた順序を表すけれども、表のLBAエントリ側はLBA時間順ではなくてLBAアドレス順に編成されている。
【表A】
【0099】
再び図25の、時間Bのところを参照すると、付加的なLBAアドレスランL4がL2に付加されている。ランL2およびL4は実際には単一のLBAランを形成するけれども、この例では明瞭性を得るために別々に識別される。L4のためのデータは、部分的に満たされた第3の書き込みブロックにおいてD5内の最後のエントリの後にDLBAアドレスランD6として書かれる。表Bに示されているように、時間B後のSATは、表のLBAエントリ側の末尾に単にLBA4マーカーを付け加え、DLBAエントリ側のDLBA7を指す。
【表B】
【0100】
図5の時間Cのところの活動を参照すると、ホストは、そのデータがLBAアドレスランL1およびL2に書かれていたところの1つまたは複数のファイルを削除している。DLBAアドレス空間304において、L1はD1およびD2に対応し、L2はD3に対応する。これらのランは今では陳腐化したデータに関連しているので、この例では前は赤色ブロックであった2つのアドレスブロックは今では有効な(赤色)データと陳腐化した(白色)データとの混合の故にピンク色ブロックである。以下の表Cに示されているように、SATはそれに応じて更新される。有効なLBAランだけが残るように全ての陳腐化したLBAランが除去される。LBAアドレス空間ランL3およびL4だけが残るので、LBAエントリはマーカーLBA2およびLBA4および対応するDLBAポインタを含むだけである。SATのDLBAエントリ側も、有効なデータのために必要とされるDLBAポインタを含むだけである。
【表C】
【0101】
図25に示されている時間の最後のスナップショット、時間Dにおいて、オリジナルのLBAアドレス空間ランL3は、ホストによってLBAアドレス空間L5のところの情報で部分的に更新されている。対応するDLBAアドレス空間変換はD4およびD5の陳腐化した部分に対する変換であって付加的な白色空間が示され、次に、L5の新しいLBAランがDLBAアドレス空間内の現在の書き込みブロックの末尾に、ブロックが完成するまで、順次に付加され、そしてLBAアドレス空間ランの残りがDLBAアドレスに変換され得るように新しい書き込みブロックが識別される。これは、1つの書き込みブロックを完成させるDLBAランD7と、新しい書き込みブロックを開始させるD8とを生じさせる。以下の表Dを参照すると、表は再び更新されていて、LBA空間302のLBA2ポインタは依然としてDLBA空間304のDLBAポインタのうちの第1のものを指しているが、DLBAエントリ側は、L3と対応するDLBAアドレスの残りと対応するDLBAランを開始させる付加的な3つのDLBAポインタを含む。LBA空間302においてL4に対して変更は行われていなかったので、LBA4と対応する、L4のためのエントリは、同じままである。図25の例はクラスタの連続的なブロックを示すように思われるということに留意するべきである。クラスタの連続的なブロックが利用可能であるということはあり得るけれども、DLBAアドレス空間のブロック同士が間にある1つ以上のブロックによって分離されるということが予期される。連続的なDLBAアドレス空間ブロックは、単に説明の便宜のために提供されている。
【表D】
陳腐化したSAT情報を削除して新しい白色ブロックを再使用のために作成するために、データのためのDLBAアドレスブロックについて前に記載されたものと類似するSATフラッシング方式が実行される。
【0102】
ストレージアドレス再マッピングアルゴリズムは、白色ブロックの数が所定しきい値より少なくなった時、書き込みブロックへのホストデータの書き込みにより白色容量が消費されるのと同じ速度で、データ書き込みのために割当てられ得る使用可能な白色容量が作られることを保証するのに充分な速度でピンク色ブロックに対してフラッシング(再配置とも称される)操作が行われなければならないという原理に基づいて作用する。データ書き込みのために割当てられ得る使用可能な白色クラスタ容量は、白色ブロック内の容量に、フラッシング操作中にデータが書き込まれ得る最配置ブロックの中の白色クラスタ容量を加えたものである。
【0103】
フラッシング操作のために選択されたピンク色ブロックの白色クラスタ容量が各ピンク色ブロックのx%を占めるとすれば、1つのピンク色ブロックに対するフラッシング操作により作られる新しい使用可能な容量は、そのピンク色ブロックから作られる1つの完全な白色ブロックから、そのフラッシングされるブロックからのデータの再配置によって再配置ブロックにおいて消費される一ブロックの(100−x)%を差し引いたものである。従って、1つのピンク色ブロックに対するフラッシング操作は、1つの白色ブロックのx%の新しい使用可能な容量を作る。従って、書かれるホストデータにより満たされる各書き込みブロックについて、フラッシュ操作は100/x個のピンク色ブロックに対して実行されなければならず、再配置されなければならないデータは(100−x)/x個のブロックである。従って、プログラムされるセクタの、ホストにより書かれるセクタに対する比は,1+(100−x)/xとしておおよそ定義される。
【0104】
平均的なピンク色ブロックにおける白色クラスタ容量の割合は、使用されている総装置容量の割合と赤色ブロックであるデータを包含するブロックの割合とにより決定される。例えば、装置が80%満たされていて、データを包含するブロックの30%が赤色ブロックであるならば、ピンク色ブロックは26.2%の白色クラスタ容量を含む。装置におけるLBAアドレスにおけるデータ削除の一様でない分布が、いくつかのピンク色ブロックが白色容量の平均%の2倍を有するという結果を生じさせることがありそうである。従って、この例では、フラッシング操作のために選択されるピンク色ブロックは52.4%白色容量を有することになり、すなわち、x=52.4となり、ホストにより書かれるデータのセクタあたりのプログラムされるセクタの比は1.90となる。
【0105】
どのピンク色ブロックをフラッシングするかを決定する時には、それがホストデータピンク色ブロックであってもSATピンク色ブロックであっても、ストレージアドレス再マッピングアルゴリズムは、NTFSにより書かれる$bitmapファイルを監視することによって未割当てアドレスの指定を検出することができる。フラッシング操作は、2つの方法で予定され得る。好ましくは、フラッシング操作は、バックグラウンド操作として働き、従って、ホストデータ書き込み速度が影響を受けないようにSSDまたは他の携帯可能なフラッシュメモリ装置がアイドルである間だけ機能する。その代わりに、フラッシング操作は、ホストがデータを書いている時にアクティブであるフォアグラウンド操作で利用され得る。フラッシング操作がフォアグラウンド操作として構成されるならば、これらの操作は、ホストの活動が生じた時にあるいは「flush cache(フラッシュキャッシュ)」コマンドがSSDまたは携帯可能なフラッシュメモリ装置の潜在的パワーダウンを意味する時に、自動的にサスペンドさせられ得る。フォアグラウンドおよびバックグラウンドフラッシング操作選択は動的決定であり得て、フォアグラウンド操作は、記憶装置のアイドル状態中に達成され得るよりも高いフラッシング速度が要求される時に実行される。例えば、ホストまたは記憶装置は、記憶装置が満杯になるまで一定のホストデータ書き込み速度を維持するようにフラッシング速度が制御されるように、フォアグラウンドおよびバックグラウンドのフラッシング操作の間でトグルすることができる。フォアグラウンドフラッシング操作は、ホストデータ書き込み操作と交互配置され得る。例えば、ホストインターフェイスで維持されている活動の故に不十分なアイドル時間が利用可能であるならば、ブロックフラッシング操作を実行するためのデータページの再配置はホストコマンドに応じて時々爆発的に装置活動と交互配置され得る。
【0106】
SAT更新手続き
SATデータ構造の中の要素は、表2に示されている階層的手続きを用いて更新される。
【表2】
【0107】
表2に記されているように、DLBAラン更新を除けば、特定の構造のためのSAT更新は、SAT階層においてより低い階の構造における活動によってトリガされる。SATリストは、完全なDLBAランと関連付けられたデータが書き込みブロックに書かれるたびに更新される。許される最大の数のエントリがSATリストに存在する時に1つ以上のSATページが更新される。SATページが更新される時、SATリストからの1つ以上のエントリがSATページに付加され、SATリストから除去される。SATリストが満杯である時に更新されるSATページはページの数個の異なるグループに分けられることができて、単一の操作で単一のグループが更新されなければならないに過ぎない。これは、SAT更新操作がホストからのデータ書き込み操作を遅延させ得る時間を最短にするのを助けることができる。この場合、SATリストから更新されたSATページのグループにコピーされたエントリだけがSATリストから除去される。更新されたSATページのグループのサイズは、ホストシステム1のメモリシステム2にアクセスする能力を妨げないポイントにセットされ得る。1つの実施例ではグループサイズは4SATページであり得る。
【0108】
SAT索引バッファフィールドは、最も最近に書かれたSATページにおいて有効である。それは、SATページが書かれるたびに付加的なプログラミングなしで更新される。最後に、許される最大の数のエントリがSAT索引バッファに存在する時、SAT索引ページが更新される。SAT索引ページ更新中に、SAT索引バッファから1つ以上のエントリがSAT索引ページに付加されて、SAT索引バッファから除去される。SATページの更新に関して前に記されたように、更新されなければならないSAT索引ページをページの数個の異なるグループに分けることができ、単一の操作で単一のグループが更新されなければならないに過ぎない。これは、SAT更新操作がホストからのデータ書き込み操作を遅延させ得る時間を最短にする。SAT索引バッファから更新されたSAT索引ページのグループにコピーされたエントリだけがSAT索引バッファから除去される。更新されるSAT索引ページのグループのサイズは、1つの実施例では4ページであり得る。
【0109】
SATページまたはSAT索引ページがまたがるLBA範囲の中で必要とされるエントリの数は可変であり、時間と共に変化し得る。従って、SAT内のページがオーバーフローしたり、あるいはページの内容が非常に少なくなったりすることは稀なことではない。これらの事態はSATにおいてページを分割し、また合併するための方式によって処理され得る。
【0110】
SATページまたはSAT索引ページの更新中にエントリが付加されるべきであるけれども、その変更を受け入れるために充分な未使用スペースがページにおいて利用できない時には、そのページは2つに分割される。1つの新しいSATページまたはSAT索引ページが導入され、以前に満杯になっていたページと新しい空のページとのために、それらを半ば満たすいくつかのエントリを各々に与えるLBA範囲が決定される。次に両方のページが、可能ならば、単一のプログラミング操作で、書かれる。ページがSATページである場合、両方のページのためのSAT索引エントリは、最後に書かれたSATページの索引バッファフィールドに含まれる。ページがSAT索引ページである場合、ページ索引エントリは、最後に書かれたSAT索引ページのページ索引フィールドに含まれる。
【0111】
隣接するLBA範囲を有する2つ以上のSATページ、または2つのSAT索引ページの内容が少ない時、それらのページは合併されて単一のページになることができる。合併は、その結果として生じる単一のページが80%より大きくは満たされない時に、開始される。新しい単一のページのためのLBA範囲は、別々の合併されるページがまたがる範囲によって定められる。合併されるページ同士がSATページである場合、新しいページと合併されるページ同士とのためのSAT索引エントリは、最後に書かれるSATページの索引バッファフィールドにおいて更新される。ページ同士がSAT索引ページである場合、ページ索引エントリは、最後に書かれるSAT索引ページのページ索引フィールドにおいて更新される。
【0112】
パワーサイクル後、すなわちパワーが除去され回復された後に、RAM内のSATリストを、それがパワーサイクルの前にそうであったところの状態と正確に同じ状態に復元することが必要である。これは、最後のSATページ更新以来書かれている付加的なデータを、データヘッダ内のLBAアドレス情報から識別するために全ての書き込みブロックおよび再配置ブロックをスキャンすることによって成し遂げられ得る。最後のSATページ更新の時のこれらのブロックの位置と、それらの中での書き込みポインタおよび再配置ポインタの位置も、最後に書かれたSATページの1つのフィールドに記録される。従って、スキャンニングは、これらのポインタの位置から開始されるだけでよい。
【0113】
SATブロックをフラッシングすること
SATブロックをフラッシングするプロセスは、ホストから受け取られたデータについて前に記載されたプロセスと類似するけれども、SATブロックだけに作用する。ストレージアドレス再マッピング書き込みおよびフラッシングアルゴリズムによりもたらされるSATに対する更新は、SATブロックを図26に示されているブロック状態の間で遷移させる。先ず、白色ブロックリストからの白色ブロックがSAT書き込みブロックとして割当てられる(310において)。SAT書き込みブロックの最後のページが割当てられた時、ブロックは赤色SATブロックになる(312において)。その中のいくつかのページが既に陳腐化していればSAT書き込みブロックがピンク色SATブロックへの遷移を行なうということもあり得る。しかし、明瞭性を目的として、その遷移は図26には示されていない。SATページまたはSAT索引ページが更新される時に赤色SATブロックの中の1つ以上のページは陳腐化され、その赤色SATブロックはピンク色SATブロックになる(314において)。選択されたピンク色SATブロックに対するフラッシング操作が完了した時、そのピンク色SATブロックは白色ブロックになる(316において)。
【0114】
どのSATブロックがフラッシング手続きを受けることになるかを選択するプロセスが次に記述される。少数の有効なページまたはクラスタを包含するSATブロックが、フラッシングされるべき次のSATブロックとして選択される。ブロックは、最低数の有効なページを有するSATブロックのうちの5%の中の1つであるべきである。ブロックの選択は、最低の有効ページ総数値を有する16個のSATブロックのリストを構築するバックグラウンドプロセスにより成し遂げられ得る。このプロセスは、好ましくは、M個の予定されたSATブロックフラッシング操作により費やされる時間のうちに1サイクルを完了するべきである。
【0115】
どのSATブロックを次にフラッシングするかを決定するためのバックグラウンドプロセスの1サイクルのうちに行われる活動の一例が図27に示されている。先ず、前のプロセスサイクル中に特定されたブロックの集合の後で、次の、N個のSATブロックの集合を特定するためにブロック情報テーブル(BIT)がスキャンされる(ステップ318において)。SATブロックの最初の集合は、装置初期化後の第1のプロセスサイクルの間に特定されるべきである。Nの値は、そのアプリケーションのために適宜選択されることができて、好ましくは、SATフラッシングブロックの利用可能性を保証するためにMのために選択される値より大きい。一例として、Mは4でNは8であり得る。集合中の各々のSATブロックのために有効ページ総数値はゼロにセットされる(ステップ320において)。次に、集合中の任意のSATブロックに置かれている有効なSAT索引ページを識別するために、キャッシュされているページ索引フィールドにおいてページ索引エントリがスキャンされる(ステップ322において)。それに応じて有効ページ総数値がインクリメントされる。集合中の任意のSATブロックに置かれている有効なSATページを識別するために、各SAT索引ページにおいてSAT索引エントリが順番にスキャンされる(ステップ324において)。それに応じて有効ページ総数値がインクリメントされる(ステップ326において)。有効ページ総数値を判定するためにページ索引およびSAT索引ページがスキャンされた後、集合中のSATブロックの各々についての有効ページ総数値は、低い有効ページ総数値のためのリストの中のSATブロックについてのものと対比されて評価され、リスト中のブロックは、必要ならば、集合からのブロックと取り替えられる(ステップ328において)。SATブロックフラッシング操作が予定されるべき時、リスト中の最低有効ページ総数値を有するブロックが選択される。
【0116】
SATブロックフラッシング操作では、全ての有効なSAT索引ページおよびSATページが、選択されたブロックからSAT書き込みポインタ242に再配置される。ページ索引フィールドは、最後に書かれたSAT索引ページにおいてのみ更新される。SATブロックの数がほぼ一定に保たれるために、SATページおよびSAT索引ページに対する更新操作によって消費されるSAT内のページの数は、SATブロックフラッシング操作によって回復される陳腐化したSATページおよびSAT索引ページの数と釣り合わされなければならない。次のSATフラッシング操作のために選択されるSATブロック内の陳腐化した情報のページの数は、前に図27に関連して論じられたように決定される。次のSATブロックフラッシング操作は、前のSATフラッシング操作以来、情報の同数の有効なページがSATに書き込まれた時に行われるように予定され得る。
【0117】
ブロック情報テーブル(BIT)
ブロック情報テーブル(BIT)は、白色ブロック、ピンク色ブロック、およびSATブロックのためにブロックアドレスの別々のリストを記録するために使用される。BIT書き込みブロックは、他の全てのBITブロックが置かれている場所に関する情報を包含する。1つの実施例では、書き込みブロック、再配置ブロックまたはSATブロックとして割当てられるべきブロックの選択を可能にするために白色ブロックのリストをストレージアドレス再マッピングアルゴリズムおよび関連するシステムが維持することが望ましい。ブロックフラッシング操作の対象となるべきピンク色ブロックおよびSATブロックの選択を可能にするために、ピンク色ブロックのリストを維持することも望ましい。これらのリストは、その構造がSATのものを厳密に反映するBITにおいて維持される。
【0118】
BITデータ構造
BITは、BITブロックとして知られているDLBAアドレスのブロックの中で実現される。ブロックリスト情報はBITページの中に格納され、「DLBAブロック対BITページ」索引付け情報はBIT索引ページの中に格納される。BITページおよびBIT索引ページは、同じBITブロックの中で任意の順序で混合され得る。BITは複数のBITブロックからなり得るけれども、BIT情報は、BIT書き込みブロックとして現在指定されている単一のブロックにだけ書き込まれ得るに過ぎない。他の全てのBITブロックは、先にすっかり書き込まれていて、有効なページおよび陳腐化したページの組み合わせを包含し得る。陳腐化したBIT情報のページを削除して再利用のための白色ブロックを作るために、前述したSATブロックのためのものと同一のBITブロックフラッシング方式が実行される。
【0119】
BITブロック
図28に示されているBITブロックは、BIT情報の格納に専用されるDLBAアドレスのブロックである。それは、BITページ342およびBIT索引ページ344を包含し得る。BITブロックは、有効なBITページ、有効なBIT索引ページ、および陳腐化したページの任意の組み合わせを包含し得る。BIT情報は、BIT書き込みブロック340として指定されている単一のBITブロックに書き込まれ得るにすぎない。BIT情報は、BIT書き込みブロック340において、インクリメンタルなBIT書き込みポインタ346によって定められる連続する位置に書き込まれる。BIT書き込みブロック340がすっかり書かれた時、1つの白色ブロックが新しいBIT書き込みブロックとして割当てられる。BITを構成するブロックは、それぞれそのBITブロック位置により識別されるが、それは、それらの、装置におけるブロックの集団の中でのブロックアドレスである。BITブロックはテーブルページに分割され、それらの中にBITページ342またはBIT索引ページ344が書き込まれ得る。BITページ位置は、そのBITブロックの中でのそのシーケンス番号によってアドレス指定される。BIT情報を、非BIT情報からフラッシュメモリの異なるブロックに隔離することができ、非BIT情報とは異なるタイプのブロック(例えば、バイナリ対MLC)に隔離することができ、あるいは1つのブロックの中で非BIT情報と混合することができる。
【0120】
BITページ342は、BITにおけるブロックリスト情報の最小更新可能単位である。更新されたBITページは、BIT書き込みポインタ346により定められる位置に書き込まれる。BITページ342は、1つの定められた範囲の中のDLBAブロックアドレスを有する白色ブロック、ピンク色ブロックおよびSATブロックのリストを包含するけれども、どのリスト内の引き続くブロックのブロックアドレスも連続している必要はない。BITページ内のDLBAブロックアドレスの範囲は、他のどのBITページ内のDLBAブロックアドレスの範囲とも重なり合わない。BITページは、BITブロックの集合全体にわたって無制限に分散させられ得る。DLBAアドレスの任意の範囲のためのBITページが任意のBITブロックに存在し得る。BITページは、白色ブロックリスト(WBL)フィールド348、ピンク色ブロックリスト(PBL)フィールド350、SATブロックリスト(SBL)フィールド352および索引バッファフィールド354に加えて、2つの制御ポインタ356を含む。パラメータバックアップエントリも、揮発性RAMに格納されているいくつかのパラメータの値を包含する。
【0121】
BITページ342の中のWBLフィールド348は、BITページ342に関連するDLBAブロックアドレスの範囲の中で、白色ブロックリスト内のブロックのためのエントリを包含する。BITページ342がまたがるDLBAブロックアドレスの範囲は、他のどのBITページ342がまたがるDLBAブロックアドレスの範囲とも重なり合わない。WBLフィールド348は、可変長のフィールドであって、可変数のWBLエントリを包含する。WBLフィールドの中で、BITページ342により索引付けられるDLBAブロックアドレスの範囲の中のどの白色ブロックについても1つのWBLエントリが存在する。WBLエントリは、そのブロックのDLBAアドレスを包含する。
【0122】
BITページ342の中のPBLフィールド350は、BITページ342に関連するDLBAブロックアドレスの範囲の中で、ピンク色ブロックリスト内のブロックのためのエントリを包含する。BITページ342がまたがるDLBAブロックアドレスの範囲は、他のどのBITページ342がまたがるDLBAブロックアドレスの範囲とも重なり合わない。PBLフィールド350は、可変長のフィールドであって、可変数のPBLエントリを包含する。PBLフィールド350の中で、BITページ342により索引付けられるDLBAブロックアドレスの範囲の中のどのピンク色ブロックについても1つのPBLエントリが存在する。PBLエントリは、そのブロックのDLBAアドレスを包含する。
【0123】
BITページの中のSBL352フィールドは、BITページ342に関連するDLBAブロックアドレスの範囲の中で、SATブロックリスト内のブロックのためのエントリを包含する。BITページ342がまたがるDLBAブロックアドレスの範囲は、他のどのBITページ342がまたがるDLBAブロックアドレスの範囲とも重なり合わない。SBLフィールド352は、可変長のフィールドであって、可変数のSBLエントリを包含する。SBLフィールド352の中で、BITページ352により索引付けられるDLBAブロックアドレスの範囲の中のどのSATブロックについても1つのSBLエントリが存在する。SBLエントリは、そのブロックのDLBAアドレスを包含する。
【0124】
索引バッファフィールド354は、どのBITページ342についてもその一部分として書かれるが、最も最近に書かれたBITページにおいてのみ有効なままである。BITページ342の索引バッファフィールド354はBIT索引エントリを包含する。関連するBIT索引ページ344において有効なエントリを現在有しないBIT内のどのBITページ342についても1つのBIT索引エントリが存在する。BIT索引エントリは、BITページ342が書かれるたびに作成または更新され、関連するBIT索引ページ344が更新される時に削除される。BIT索引エントリは、BITページ342により索引付けられる範囲の第1のDLBAブロックアドレスと、BITページ342により索引付けられる範囲の最後のDLBAブロックアドレスと、BITページ342を包含するBITブロック位置と、BITブロック内のBITページのBITページ位置とを包含し得る。索引バッファフィールド354は、暫定的に32と定められる、固定された数のBIT索引エントリのための容量を有する。この数は、BITページ342およびBIT索引ページ344が書かれ得る相対頻度を決定する。
【0125】
BITページ342の制御ポインタ356は、WBLフィールド348の先頭からの、PBLフィールド350の先頭およびSBLフィールド352の先頭のオフセットを定める。BITページ342は、リストエントリの数としてのオフセット値を包含する。
【0126】
BIT索引ページ
BIT索引ページ344の集合は、BIT内のどの有効なBITページ342の位置にも1つの索引を提供する。個々のBIT索引ページ344は、DLBAブロックアドレスの1つの範囲に関連する有効なBITページの位置を定めるエントリを包含する。BIT索引ページがまたがるDLBAブロックアドレスの範囲は、他のどのBIT索引ページ344がまたがるDLBAブロックアドレスの範囲とも重なり合わない。エントリは、それらが関連するBITページ342のDLBAブロックアドレス範囲値に従って順序付けされる。BIT索引ページ344は、固定された数のエントリを包含する。
【0127】
BIT索引ページは、BITブロックの集合全体にわたって無制限に分散させられ得る。DLBAブロックアドレスの任意の範囲のためのBIT索引ページ344が任意のBITブロックに存在し得る。BIT索引ページ344は、BIT索引フィールド358およびページ索引フィールド360を含む。BIT索引フィールド358は、BIT索引ページ344がまたがるDLBAブロックアドレス範囲の中の全ての有効なBITページのためのBIT索引エントリを包含する。BIT索引エントリは、単一のBITページ342に関連し、BITページにより索引付けられる第1のDLBAブロックと、BITページを包含するBITブロック位置と、BITブロック内のBITページのBITページ位置とを包含し得る。
【0128】
BIT索引ページ344のページ索引フィールド360は、BIT内の全ての有効なBIT索引ページのためのページ索引エントリを包含する。1つのBITページ索引エントリが、BIT内のどの有効なBIT索引ページ344のためにも存在し、BIT索引ページにより索引付けられる第1のDLBAブロックと、BIT索引ページを包含するBITブロック位置と、BITブロック内のBIT索引ページのBITページ位置とを包含し得る。
【0129】
BITを維持すること
BITページ342は、WBL348、PBL350およびSBL352にエントリを付加するかまたは削除するために更新される。数個のエントリに対する更新をRAM内のリストに蓄積することができ、そして、リストが1つのパワーサイクル後にRAMに書き戻され得るとすれば、BITにおいて単一の操作で実行することができる。BIT索引バッファフィールドは、最も最近に書かれたBITページにおいて有効である。それは、BITページが書かれるたびに付加的なプログラミングなしで更新される。BIT索引ページが更新される時、BIT索引バッファからの1つ以上のエントリがBIT索引ページに付加され、BIT索引バッファから削除される。許容される最大の数のエントリがBIT索引バッファに存在する時に1つ以上のBIT索引ページ344が更新される。
【0130】
BITページ342またはBIT索引ページ344がまたがるDLBAブロック範囲の中で必要とされるエントリの数は可変であって、時間と共に変化し得る。従って、BIT内のページがオーバーフローしたり、あるいはページの内容が非常に少なくなったりすることは稀なことではない。これらの事態はBITにおいてページを分割し、また合併するための方式によって処理され得る。
【0131】
BITページ342またはBIT索引ページ344の更新中にエントリが付加されるべきであるけれども、その変更を受け入れるために充分な未使用スペースがページにおいて利用できない時には、そのページは2つに分割される。1つの新しいBITページ342またはBIT索引ページ344が導入され、以前に満杯になっていたページと新しい空のページとのために、それらを半ば満たすいくつかのエントリを各々に与えるDLBAブロック範囲が決定される。次に両方のページが、可能ならば、単一のプログラミング操作で、書かれる。ページがBITページ342である場合、両方のページのためのBIT索引エントリが、最後に書かれるBITページの索引バッファフィールドに含まれる。ページがBIT索引ページ344である場合、ページ索引エントリが、最後に書かれるBIT索引ページのページ索引フィールドに含まれる。
【0132】
逆に、隣接するDLBAブロック範囲を有する2つ以上のBITページ342、または2つのBIT索引ページ344の内容が少ない時には、それらのページは合併されて単一のページになることができる。合併は、その結果として生じる単一のページが80%より大きくは満たされない時に開始される。新しい単一のページのためのDLBAブロック範囲は、別々の合併されるページがまたがる範囲によって定められる。合併されるページがBITページである場合、新しいページと合併されるページ同士とのためのBIT索引エントリは、最後に書かれるBITページの索引バッファフィールドにおいて更新される。ページがBIT索引ページである場合、ページ索引エントリは、最後に書かれるBIT索引ページのページ索引フィールドにおいて更新される。
【0133】
BITブロックをフラッシングすること
BITブロックをフラッシングするプロセスは、SATブロックについて前に記載されたものを厳密にたどるので、ここでは反復しない。
【0134】
制御ブロック
他の実施形態では、BITおよびSAT情報は、同じブロックの異なるページに格納され得る。制御ブロックと称されるこのブロックは、1ページのSATまたはBIT情報が制御ブロックにおいて1ページを占めるように構造化され得る。制御ブロックは整数個のページを有するページ単位からなることができ、各ページ単位は、制御ブロックの中でのそのシーケンス番号によってアドレス指定される。ページ単位は、物理メモリにおいて1ページの最小サイズと1メタページの最大サイズとを有することができる。制御ブロックは、有効なSATページ、SAT索引ページ、BITページ、BIT索引ページ、および陳腐化したページの任意の組み合わせを包含し得る。従って、別々のSATブロックおよびBITブロックを有するよりはむしろ、SATおよびBIT情報の両方が同じ1つまたは複数のブロックに格納され得る。前述した別々のSAT書き込みブロックおよびBIT書き込みブロックと同様に、制御情報(SATまたはBIT情報)は単一の制御書き込みブロックに書き込まれ得るに過ぎず、制御書き込みポインタは制御データを受け入れるための次の順次位置を特定し、1つの制御書き込みブロックがすっかり書かれた時には1つの書き込みブロックが新しい制御書き込みブロックとして割当てられる。さらに、制御ブロックは、各々、メモリシステム2においてバイナリブロックの集団の中でそのブロックアドレスにより識別され得る。制御ブロックは、前述した分離されているSATブロックおよびBITブロックに関して前に記載されたのと同様な仕方で新しい未記入容量を生成するためにフラッシングされることができるが、違いは、1つの制御ブロックのための1つの再配置ブロックが有効なSAT情報またはBIT情報に関連するページを受け入れ得るということである。フラッシングされるべき適切なピンク色制御ブロックの選択およびタイミングは、SATフラッシングプロセスについて前に記載されたのと同じ仕方で実行され得る。
【0135】
LBA割当てステータスを監視すること
ストレージアドレス再マッピングアルゴリズムは、ホストにより有効なデータに現在割当てられているホストLBAアドレスだけのためにアドレスマッピング情報を記録する。従って、このマッピング情報を正確に維持するために、クラスタがホストによってデータ記憶から割当て解除される時を決定することが必要である。
【0136】
一実施形態では、ホストファイルシステムからのコマンドは、割当て解除されたクラスタに関する情報をストレージアドレス再マッピングアルゴリズムに提供することができる。例えば、マイクロソフト コーポレイションのビスタオペレーティングシステムで使用されるべく「Dataset(データセット)」コマンドが提案されている。「ATA8−ACS2のための被削除データ提案の通知 (Notification of Deleted Data Proposal for ATA8-ACS2)」のための提案がマイクロソフトによりT13に提示されている。この新しいコマンドは、被削除データの通知を提供するように意図されている。単一のコマンドが、2GBまでの陳腐化したデータに相当する、連続するLBAアドレスに存するデータの削除を装置に通知することができる。
【0137】
NTFSメタデータを解釈すること
トリムコマンドなどのホストファイルシステムコマンドを利用することができなければ、LBA割当てステータスを、NTFSにより書かれる$bitmapシステムファイルにおける情報変更を追跡することによって監視することができ、ボリューム上の全てのクラスタの割当てステータスのビットマップを包含する。パーソナルコンピュータ(PC)において$bitmap変更を追跡する動作の一例が次に論じられる。
【0138】
パーティションブートセクタ
パーティションブートセクタは、パーティション上のセクタ0である。バイトオフセット0x30におけるフィールドは、表3の例のように、マスターファイルテーブル(MFT)の先頭のための論理クラスタ番号を包含する。
【表3】
【0139】
MFTにおける$bitmapレコード
$bitmapと称されるシステムファイルは、ボリューム上の全クラスタの割当てステータスのビットマップを包含する。$bitmapファイルのためのレコードは、MFTにおいてレコード番号6である。MFTレコードは1,024バイトの長さを有する。従って、$bitmapレコードは、MFTの先頭に関して十進12セクタのオフセットを有する。前の例では、MFTはクラスタ0xC4FD2、あるいは十進法で806866から始まるが、それは十進法でセクタ6454928である。従って、$bitmapファイルレコードは十進法でセクタ6454940から始まる。
【0140】
(記載されている例では)$bitmapレコードの中には次の情報が存在する。バイトオフセット0x141から0x142までのところのフィールドは、表4の例のように、$bitmapファイルのための第1のデータ属性の、クラスタ数で表される長さを包含する。
【表4】
【0141】
バイトオフセット0x143から0x145までのところのフィールドは、表5の例のように、$bitmapファイルについての第1のデータ属性の先頭のクラスタ番号を包含する。
【表5】
【0142】
バイトオフセット0x147から0x148までのところのフィールドは、表6の例のように、$bitmapファイルについての第2のデータ属性の、クラスタ数で表された長さを包含する。
【表6】
【0143】
バイトオフセット0x149から0x14Bまでのところのフィールドは、表7の例のように、$bitmapファイルについての第1のデータ属性の先頭と第2のデータ属性の先頭との間のクラスタの数を包含する。
【表7】
【0144】
$bitmapファイルのためのデータ属性
$bitmapフィルのためのデータ属性の中のセクタは、ボリューム内の全てのクラスタの割当てステータスのビットマップを、論理クラスタ番号の順に、包含する。「1」は、フィルシステムによって1つのクラスタがデータ記憶に割当てられていることを意味し、「0」は、1つのクラスタが空いていることを意味した。ビットマップ内の各バイトは、8クラスタ、あるいは十進64セクタの論理範囲に関連する。ビットマップ内の各セクタは、0x1000(十進4096)クラスタ、あるいは0x8000(十進32768)セクタの論理範囲に関連する。ビットマップ内の各クラスタは0x8000(十進32768)クラスタ、あるいは0x40000(十進262144)セクタの論理範囲に関連する。
【0145】
クラスタ割当てステータスを維持すること
ホストからの書き込み操作が$bitmapファイルのためのデータ属性の中のセクタに向けられるたびに、そのセクタの前のバージョンが記憶装置から読み出されなければならず、そのデータが、ホストによって今書かれたばかりのデータと比較されなければならない。「1」状態から「0」状態にトグルしている全てのビットが識別されなければならず、ホストによって割当て解除されているクラスタの対応する論理アドレスが決定されなければならない。提案されているトリムコマンドなどのコマンドが、あるいはNTFSメタデータの追跡が、ホストによるクラスタ割当て解除があったことを示すたびに、ストレージアドレステーブル(SAT)は、指定されたクラスタのためのアドレスの割当て解除を記録するために更新されなければならない。
【0146】
論理対物理マッピング
前の議論は、ホストLBAアドレス空間からDLBAアドレス空間(ストレージLBA空間とも称される)への、論理対論理マッピングが望ましいストレージアドレス再マッピングの実行に主として焦点を当てている。前に記されたように、マッピングアルゴリズムが図9〜10のようにそれぞれ記憶装置またはホストの上の別のアプリケーションに組み込まれるよりはむしろ記憶装置のメモリマネージャに組み込まれている図8の実施形態は、ホストLBAからメモリシステム2内の物理アドレスにマッピングする。図8の実施形態では、前に論じられたDLBAは、中間の論理アドレスであるよりはむしろ置き換えられた物理的メモリアドレスである。図8のアレンジメントにおけるストレージ再マッピングアルゴリズムは、メモリシステム2またはホスト1(それぞれ、図9および10)上の別のアプリケーションであるよりはむしろメモリシステム2内のメモリコントローラ8の一部である。
【0147】
図8の論理対物理マッピングアレンジメントと図9〜10の論理対論理マッピングアレンジメントとの違いは、図29〜32と関連して記され得る。図29は、論理対物理ストレージアドレス再マッピングアルゴリズムが物理メモリ内の利用可能な白色ブロックのうちの、書き込みブロック412になるべき1つをどのように割当てるかを示すとともに、LBAアドレス空間408内の各LBAアドレスが、書き込みブロック412において利用可能な物理アドレス空間410内の順次位置にどのようにマッピングされるかを示す。物理アドレス空間410内の書き込みブロック412は、LBAアドレス位置に関わらず、LBAアドレスが受け取られる順に書かれる。この例では、図15の並列論理対論理マッピングの例の場合と同様に、説明を容易にするために、ホストが空きLBAクラスタを使用した時間順はアドレス順と同じであるということが仮定されるけれども、ストレージアドレス再マッピングアルゴリズムは、書き込みブロック412内の物理アドレスを、LBAアドレス番号順に関わらず、LBAアドレスが使用される時間順に、割当てる。データは、書き込みブロックにおいて1つ以上のデータランに書き込まれる。データランは、同じLBAラン内の連続するLBAアドレスにマッピングされた連続する物理アドレスの集合である。データランは、物理アドレス空間410内のブロック境界で終わる。1つの書き込みブロック412が満杯になる時、1つの新しい白色ブロックが次の書き込みブロック412として割当てられる。従って、中間の論理アドレスを割当てるよりはむしろ、論理対物理アレンジメントは、入ってくるデータを、それが物理メモリに直接書かれる時に再順序付けする。
【0148】
図9〜10の論理対論理マッピングアレンジメントと同様に、図8の論理対物理アレンジメントのためのストレージアドレス再マッピングアルゴリズムは、シーケンシャルな書き込みアルゴリズムが動作するために充分な白色ブロックの供給が利用可能であることを保証するように作用する。ストレージアドレス再マッピングアルゴリズムは、ピンク色ブロックから再配置ブロック416にデータをフラッシングすることによる白色ブロックの作成を管理する(図30)。フラッシングのために現在選択されているピンク色ブロックはフラッシングブロックと称される。
【0149】
図29〜30に示されているように、ブロックフラッシングプロセスの図が示されている。ストレージアドレス再マッピングアルゴリズムは1つの白色ブロックを再配置ブロック416として指定し、これに、付加的な白色ブロックを作るために、選択されたピンク色ブロックからデータがフラッシングされる。データは、フラッシングブロックを白色ブロック418に変換するために、フラッシングブロック(図29のピンク色ブロックA)内の赤色データとも称される有効なデータを包含する位置から、再配置ブロック416内の連続するアドレスに再配置される。図31に示されているように、次の1つのフラッシングブロック(図30のピンク色ブロックB)が、残りのピンク色ブロックから特定される。最少の有効データ(最少数の赤色データ)を有するピンク色ブロック、あるいは平均量より少ない有効データまたはある所定しきい値量未満を現在有するピンク色ブロックのリストから選択された1つのピンク色ブロックが再びフラッシングブロックとして指定され、そのピンク色ブロックの赤色データ(有効データ)は、開いている再配置ブロック416内の連続する物理的位置に、有効データがピンク色ブロック内に存在する順に、転送される。ピンク色ブロックに対するフラッシング操作は、書き込みブロックとして指定された白色ブロック418の消費を補うために充分な速度で白色ブロック418を作るためにバックグラウンド操作として実行される。図29〜31の例は、ホストからの新しいデータのため、またピンク色ブロックから再配置されるデータのために、書き込みブロックおよび再配置ブロックがどのようにして別々に維持され得るかを示す。他の実施例では、別々の書き込みブロックおよび再配置ブロックを必要とせずに、新しいデータと再配置されるデータとは単一の書き込みブロックに転送され得る。
【0150】
論理対物理再マッピングのためのSAT
SATは、図8の論理対物理アレンジメントのためにも使用される。SATは、ここでは、論理対論理ストレージアドレス再マッピングアレンジメントと同じ基本構造を有し、DLBA(ストレージLBAとも称される)アドレス情報はデータランの物理アドレスにより取って代わられる。論理対物理アレンジメントのためのSAT索引付けおよびマッピング構造の階層が図32に示されている。LBA432および対応するデータラン430が示されている。LBA対物理マッピング情報はSATページ434に包含されている。LBA対SATページ索引付け情報はSAT索引ページ436に包含され、マスターページ索引438は、コントローラ8と関連付けられたRAMにキャッシュされる。SATは、複数のSATブロックを含むことができ、あるいはSAT書き込みブロックと現在称されている単一のブロックに書き込まれるだけであることができる。他の全てのSATブロックはすっかり書き込まれ、有効なページと陳腐化したページとの組み合わせを包含し得る。陳腐化したSAT情報のページを削除して再使用のための白色ブロックを作るために、ホストデータのブロックのためのものと同様の、SATブロックフラッシング方式が実行される。
【0151】
前に記載された論理対論理SATマッピングと同様に、図の論理対物理アレンジメントにおけるSATは、SATのエントリの数がホストにより割当てられたLBAの断片化に順応するので、最大数まで自動的にスケーラブルである可変サイズのテーブルである。従って、ホストが高度に断片化されたLBAを割当てれば、SATは、より少なく断片化されたLBAのグループをデータに割当てる場合よりも多くのエントリを含む。従って、ホストLBAの断片化の程度がより低くなれば、SATのサイズは小さくなる。断片化の程度が低くなればマッピングするべき別々のランは少なくなり、別々のランが少なくなればSATのエントリが少なくなる。なぜならば、SATは、一定数論理アドレスを厳格に追跡し更新するよりはむしろ、1つのエントリにおいてホストLBAアドレスの1つのランを1つ以上のデータラン(物理アドレスラン)にマッピングするからである。ホストLBAアドレスの1つのランを2つ以上のデータランにマッピングすることができ、ここでホストLBAランは有効なデータに割当てられた連続する論理アドレスの1つの集合であり、データ(または物理アドレス)ランは同じメタブロックの中にあって同じホストLBAランにマッピングされた物理アドレスの1つの連続的な集合である。
【0152】
SATブロック
各SATブロックは、SAT情報の格納に専用される物理アドレスの1つのブロックである。SATブロックはテーブルページに分割され、その中にSATページ434またはSAT索引ページ436が書き込まれ得る。SATブロックは、有効なSATページ434、有効なSAT索引ページ436および陳腐化したページの任意の組み合わせを包含し得る。図33を参照すると、SAT書き込みブロック440が示されている。データは、SAT書き込みブロック440において、インクリメンタルなSAT書き込みポインタ442により定められる順次位置に書き込まれる。データは、SAT書き込みブロック440として指定されている単一のSATブロックに書き込まれ得るにすぎない。データは、インクリメンタルなSAT書き込みポインタ442により定められる順次位置としてSAT書き込みブロック440に書き込まれる。前に記載されたホストデータ書き込みブロックの場合と同様に(例えば、図15〜17のアイテム212)、SAT書き込みブロック440がすっかり書き込まれると、1つの白色ブロックが新しいSAT書き込みブロック440として割当てられる。SATページ位置は、そのSATブロックの中でのそのシーケンシャルな番号によってアドレス指定される。SATブロックを非SAT情報のブロックと混ぜ合わせることができ、あるいは、SATブロックをバイナリフラッシュブロックなどの1つの特別のタイプのブロックにおいてさらに分離することができる一方で、非SAT情報はMLCフラッシュブロックに格納される。他の実施形態では、SAT情報を同じブロック内で非SAT情報と混ぜることができる。
【0153】
SATページ
SATページ434は、SATにおけるマッピング情報の最小の更新可能な単位である。更新されたSATページ434は、SAT書き込みポインタ442により定められる位置に書き込まれる。SATページ434は、インクリメントするLBAアドレスを有するLBAランの1つの集合のためのマッピング情報を包含するけれども、引き続くLBAラン同士のアドレスは連続していなくてもよい。1つのSATページ434におけるLBAアドレスの範囲は、他のどのSATページ434におけるLBAアドレスの範囲とも重なり合わない。SATページ434は、SATブロックの完全な集合の全体にわたって無制限に分散させられ得る。LBAアドレスの任意の範囲のためのSATページ434が任意のSATブロックに存在し得る。SATページ434は、索引バッファフィールド444、LBAフィールド446、データランフィールド448および制御ポインタ450を含むことができる。パラメータバックアップエントリも、揮発性RAMに格納されているいくつかのパラメータの値を包含する。
【0154】
SATページ434の中のLBAフィールド446は、LBAアドレスの1つの範囲の中の、データ格納のために割当てられている連続するLBAアドレスのランのためのエントリを包含する。1つのSATページ434がまたがるLBAアドレスの範囲は、他のどのSATページ434がまたがるLBAエントリの範囲とも重なり合わない。LBAフィールドは、可変長のフィールドであって、可変数のLBAエントリを包含する。LBAフィールド446の中で、SATページ434により索引付けされたLBAアドレスの範囲中のどのLBAランのためにも1つのLBAエントリ452が存在する。1つのLBAランは1つ以上のデータランにマッピングされる。
【0155】
図34〜36に示されているように、論理対物理アレンジメントにおけるSATのためのエントリは、いくつかの態様において論理対論理アドレス再マッピングアレンジメントから異なっている。図34を参照すると、LBAエントリ452は、次の情報、すなわち、それがマッピングされるデータエントリの数454と、LBAランがマッピングされる第1のデータランの、同じSATページ434内のデータフィールド448の中での、データエントリ番号458とを包含する。
【0156】
SATページ434の中のデータフィールド448は、同じSATページ434内のLBAフィールド446の中のLBAランにマッピングされているデータアドレスの全てのランのためのエントリを含む。データフィールド448は、可変長のフィールドであって、可変数のデータエントリ460を包含する。データフィールド448の中で、同じSATページ434内のLBAフィールド246の中のLBAランにマッピングされているどのデータランのためにも1つのデータエントリ460が存在する。各データエントリ460は、図35に示されているように、次の情報、すなわち、ラン内の第1のデータアドレス462と、その第1のデータアドレスがマッピングされているLBAランにおけるLBAオフセット464とを包含する。どのSATページ434の一部としても書き込まれるけれども、最も最近に書き込まれたSATページ434においてのみ有効なままであるSATページ/索引バッファフィールドは、SAT索引エントリ466を包含する。
【0157】
関連するSAT索引ページ436において有効なエントリを現在有しないSAT内のどのSATページ434についても1つのSAT索引エントリ466が存在する。図36を参照すると、SAT索引エントリは、SATページ434が書き込まれるたびに作成または更新され、関連するSAT索引ページ436が更新される時に削除される。それは、SATページ434により索引付けされる第1のLBA468と、SATページ434により索引付けされる最終LBA470と、SATページ434を包含するSATブロック番号472と、SATブロックの中のSATページ434のページ番号474とを包含する。SAT索引フィールド476は、固定された数のSAT索引エントリ466のための容量を有する。この数は、SATページ434とSAT索引ページ436とが書き込まれ得る相対頻度を決定する。一つの実施例では、この固定された数は32であり得る。
【0158】
SATページフィールドポインタ450は、LBAフィールドの先頭からデータフィールドの先頭までのオフセットを定める。それは、LBAエントリの数としてのオフセット値を包含する。SATページ434内のパラメータバックアップエントリは、揮発性RAMに格納されているパラメータの値を包含する。これらのパラメータ値は、パワーサイクル後、図8〜9の実施例ではコントローラ8と関連付けられたRAM内の情報の初期化中に使用される。それらは、最も最近に書き込まれたSATページ434においてのみ有効である。
【0159】
他の1つの実施形態では、有効なデータと関連付けられたLBAアドレスの各ランのためにSATにおいて1つの別のLBAエントリを生成する代わりに、各LBAアドレスブロックがSAT上の単一のエントリであるようにLBAアドレスブロックがSATにおいてマッピングされ得る。図37に示されているように、LBAアドレス空間内の1つの完全なLBAアドレスブロック480がSATにおいて記録され得る。この実施例におけるLBAエントリ482は、LBAアドレスブロック480がマッピングされている物理アドレス空間内のデータランの数484と、同じSATページ内の第1のデータランへのポインタ486とを記録した単一のエントリである。LBAアドレスブロックは、記憶装置に格納されているデータの断片化の程度により、最低で1データランあるいは最高でLBAアドレスブロック内のクラスタの数まで、マッピングされ得る。
【0160】
図37の例では、LBAアドレスブロック480は8個のLBAランを含み、ここで4個のランは有効なデータ(LBAオフセットL1,L3,L4およびL6から始まる陰影付き部分)に割当てられ、4個のランは未割当てアドレスラン(LBAオフセット0,L2,L5およびL7から始まる白色部分)である。LBAアドレスブロック480のための対応するデータエントリ488は、物理的ブロックおよびアドレスオフセット(P1〜P3)により示されるデータランの物理アドレス490を対応するLBAオフセット492に関連付ける。有効なデータと関連付けられたLBAランだけが記録される、各LBAランについて別々の1つのLBAエントリを記録する前に論じられたSATのバージョンとは違って、LBAアドレスブロック内のどのLBAランも記録される。従って、有効なデータに現在割当てられていないLBAアドレスブロック480内のLBAランが、有効なデータに割当てられているLBAランと同様に記録される。図37に示されているSATページのデータエントリ部分488において、LBAアドレスの未割当て集合の先頭を標示するLBAオフセットは、物理アドレス空間における「FFFFFFFF」値とペアにされる。これは、未割当てアドレスのためのリザーブ値を示すデフォルト十六進数を表す。前に記載された同じ全体としてのSAT構造および機能が、図32に関して論じられた基本的なSAT階層と同じく、LBAアドレスブロックマッピングの実施例に当てはまるけれども、SATページは、個々のLBAラン対データラン情報よりはむしろLBAアドレスブロック対データランマッピング情報を表す。また、SAT索引ページは、この実施例ではLBAアドレスブロック対SATページマッピング情報を記憶する。
【0161】
SAT索引ページ
図34〜36を再び参照すると、SAT索引ページ436の集合は、SAT内のどの有効なSATページ434の位置に対しても1つの索引を提供する。個々のSAT索引ページ436は、LBAアドレスの1つの範囲に関連する有効なSATページの位置を定めるエントリ466を包含する。SAT索引ページ436がまたがるLBAアドレスの範囲は、他のどのSAT索引ページ436がまたがるLBAアドレスの範囲とも重なり合わない。エントリは、それらが関連するSATページのLBAアドレス範囲値に従って順序付けされる。SAT索引ページ436は、固定された数のエントリを包含する。SAT索引ページ436は、SATブロックの完全な集合の全体にわたって無制限に分散させられ得る。LBAアドレスの任意の範囲のためのSAT索引ページ436が任意のSATブロックに存在し得る。SAT索引ページ436は、1つのSAT索引フィールドおよび1つのページ索引フィールドを含む。
【0162】
SAT索引フィールド476は、SAT索引ページ436がまたがるLBAアドレス範囲の中の全ての有効なSATページのためのSAT索引エントリを包含する。SAT索引エントリ466は、単一のSATページ434に関連し、次の情報、すなわち、SATページ434により索引付けされる第1のLBA、SATページ434を包含するSATブロック番号、およびSATブロック内のSATページ434のページ番号を包含する。ページ索引フィールドは、SAT内の全ての有効なSAT索引ページ436のためのページ索引エントリを包含する。ページ索引エントリは、SAT内のどの有効なSAT索引ページ436のためにも1つ存在して、次の情報、すなわち、SAT索引ページにより索引付けされる第1のLBA、SAT索引ページを包含するSATブロック番号、およびSATブロックの中のSAT索引ページのページ番号を包含する。
【0163】
一時的SATデータ構造
論理対論理ストレージアドレス再マッピングについて記載される一時的SATデータ構造は、テーブルページおよびアドレス変換と同様に、物理アドレスが前の検討における論理アドレス(DLBA)への言及に取って代わることを除いて、図8の論理対物理アレンジメントについてと同じである。例えば、図24のSAT変換手続きと、図25および表A〜DのSAT作成および更新の例とは、第2の論理アドレス空間(DLBA)が物理アドレスまたはアドレスランと置き換えられる時に、図8の論理対物理アレンジメントにも当てはまる。同様に、図8の論理対物理アレンジメントは同じBIT構造を利用するけれども、そこではBITは論理(DLBA)アドレスよりはむしろ物理アドレスを参照する。
【0164】
ホスト論理ブロックアドレスの改変された割当て
図11の構成はまさにホストファイルシステムの中で図8〜10の特徴の一部を統合しているけれども、図11のストレージアドレスマッピングアレンジメントは第1の論理アドレス空間から第2の論理アドレス空間に変換しない。その代わりに、ホストLBAアドレスを割当てる最初のホストファイルシステム方法は、断片化を低減するために改変される。
【0165】
図11のアドレスマッピングは、図8〜10の構成により作られるものに類似する物理メモリにおけるデータマッピングを作る。クラスタの見地からホストLBA空間を知っているに過ぎない典型的なホストファイルシステムとは違って、この実施形態のホストファイルシステム10はメモリシステム2における物理的ブロックのサイズに対応するブロックサイズを知っている。ホストLBAアドレスは、物理メモリブロックに対応する選択されたブロックの中からデータ格納のために割当てられる。選択されたブロックの中に存在する全ての空きクラスタアドレスが順次に割当てられる。マッピングアルゴリズムは、物理メモリにおいて更新ブロックに必要とされるデータ統合の量が最少に保たれることを可能にする。データ格納のための空きクラスタの割当ては、LBAアドレス空間内でブロックで管理される。ホストファイルシステムは、ブロックを、それらに包含されている空きクラスタの数に従って格付けする。最高数の空きクラスタを有するブロックが次の割当てブロックとして選択される。
【0166】
図38を参照すると、図11のホストファイルシステム構成で実行され得るアドレスマッピングの例が示されている。図11の構成により実行されるアドレスマッピングは、ホスト上のホストファイルシステムで行われ、好ましくはホスト1のCPU9によって実行される。図9および10の構成の例の場合と同じく、データ格納のための空きクラスタの割当ては、メモリシステムのフラッシュメモリの物理メモリブロックとサイズに関して一致するブロックで管理される。図9〜10の例とは違って、図11の構成で実施されるアドレスマッピングは、ホストLBAアドレス空間内の空きクラスタの割当てを管理し、ホストLBAアドレス空間をストレージLBAアドレス空間に再マッピングしない。代わりに、以下に記載されるように、ホストファイルシステムによって実行されるアドレスマッピングアルゴリズムは、ホストLBAアドレスの次のブロックの中のアドレスを割当てる前にホストLBAアドレスの一ブロックの中の利用可能なアドレスを完全に割当てるようにホストLBAアドレス空間内の利用可能なアドレスを利用するために最適化される。
【0167】
図38の例では、ホストLBAアドレス空間494内のブロックは、それらに包含される空きクラスタの数に従って格付けされる。図1を参照して、ホストファイルシステム10がNTFSファイルシステムであるとすれば、ブロックの格付けは、ホストファイルシステム10がメモリシステム2に格納し更新するNTFS$bitmapファイル内の割当てマップに基づくことができる。NTFS$bitmapファイルから割当てマップを取り出すと、ホストファイルシステム10は、最高数の空き(陳腐化した)クラスタを有するブロックを次の割当てブロックとして選択する。図38の例では、ブロック1は、最高数の陳腐化した(従って、空いている)クラスタを包含しているので、割当てブロックとして選択される。陳腐化したクラスタのホストLBAアドレスはブロック1の中からデータに順次に割当てられ、ここで図38内の矢の各々はホスト1から新しいデータへの利用可能なアドレスの割当てを示す。ブロック1内の全ての空きクラスタが割当てられた時に初めて、ブロック2が次の割当てブロックとして選択される。その後、ブロック2内の空きクラスタのためのアドレスが新しいデータに順次に割当てられる。
【0168】
ホストLBAアドレス空間494内のアドレスを割当てる順序は、1つのブロック内で最低の利用可能なアドレス値から最高の利用可能なアドレス値への順序であることができ、あるいは1つのブロック内の利用可能なアドレス値の「ラップアラウンド」順であることができる。例えば、図38のブロック1についてのアドレス値が1から16までであると仮定すると、そのブロックの中の利用可能なアドレスはアドレス値(左から右へ)3〜5,7〜8,11〜13および15〜16である。最低から最高までのアドレスの割当ては、アドレス3から開始して各々の利用可能なアドレスを順に割当てることを含む。ラップアラウンド選択肢は、アドレス値3以外の何処かのポイントからアドレスの割当てを開始すること、その最初に選択されたアドレス値から増大する値のアドレスを割当て、その後、現在のホストLBAブロック内の全てのアドレスが割当てられるまでホストLBAブロック内の利用可能なアドレスを最低の利用可能なアドレスから割当て続けることを含む。従って、この例においてブロック1内のアドレス12が最初に割当てられたならば、アドレス13,15〜16,3〜5,7〜8,および11が、残りが割当てられる順序である。
【0169】
メモリシステム2において(これは、標準的なLBAインターフェイスを使用するいくつかの公知メモリシステムのうちのいずれであってもよい)、割当てられたクラスタアドレスに書き込まれるデータは、ブロック1に対応する物理的更新ブロック496に格納される。メモリシステム2は、ブロック2に対応する別の物理的更新ブロック498も割当てる。選択された割当てブロックに対応するオリジナルのブロックにおいてなお有効であるデータ500は、更新ブロックに書き込まれている新しいホストデータ502と統合される。フラッシュメモリの物理的ブロック内のページは通例順次にプログラムされるので、この統合は、新しいホストデータが更新ブロックに書き込まれた後に起こり得るか、あるいは、より一般的には、書き込まれつつある新しいホストデータと交互配置された後に起こり得る。ホストLBAブロックのためのデータの、単一のフラッシュブロック内への統合のプロセスは、メモリシステム2のコントローラ8により管理され得る。ホストファイルシステムは最高数の空きクラスタを有するブロックを割当てブロックとして選択するので、統合されるデータの量は最少であるように制御される。しかし、図8〜10の実施形態に関して論じられたフラッシングプロセス(この場合、1ブロックからフラッシングされる有効なデータが、他のブロックからの異なるアドレス範囲と関連付けられたデータを有することのある再配置ブロックに順次に書き込まれる)とは違って、図11の割当てプロセスは、1つのブロックのための残っている有効なデータを同じアドレス範囲のための更新済みデータと合併することによってアドレスのブロックが維持されるガーベッジコレクションという結果をもたらす。
【0170】
アドレスマッピング割当てアルゴリズムが図11および38に示されているようなホストファイルシステム185で実行される時、1ブロックの物理メモリにおいて統合されるデータの量は、図8〜10の実施形態に関して記載されたストレージアドレス再マッピングによって1つの同等のブロックから再配置されるデータの量と同じであり得る。図11の実施形態ではファイルシステムによって割当てられたホストLBAアドレスの再マッピングは行われないので、この実施例ではSATは不要である。また、ホストファイルシステムについては通常の慣行であるが、ファイルデータの格納のために割当てられるアドレスは、例えばNTFSファイルシステムのための$MFTファイルあるいはFATファイルシステムのためのファイルアロケーションテーブル(FAT)構造などの、その目的のためのデータ構造に記録される。
【0171】
本願明細書で論じられたアドレスマッピングおよび再マッピングシステムおよびその方法の利点は、メモリマネージャのレベルのガーベッジコレクションの減少または除去とフラッシュメモリへの減少したストレスとをおそらく含む。中間のDLBAアドレスを使用せずに、連続するLBAアドレスのブロックを図8に示されているように単一の物理的ブロックにマッピングするメモリ管理アルゴリズムが使用される時には、物理的ブロックのサイズより小さいLBAアドレスのランにデータが書き込まれる時にガーベッジコレクション操作が必要とされる。そのようなガーベッジコレクションの間に、LBAブロック内のアドレスを有する全てのデータが同じ物理的ブロックの中に統合される。例えば、書き込まれるファイルの平均サイズが40KBで物理的ブロックのサイズが4MBである時には、ファイルシステム割当てアルゴリズムと空きクラスタスペースの断片化とが、各ファイルが孤立しているフラグメントとして別々のブロックに書き込まれるという結果をもたらすとすれば、プログラムされるセクタの、ホストにより書き込まれるデータのセクタあたりの比は100になる。
【0172】
在来の論理対物理ブロックマッピングでは、ホストデータのフラグメントが孤立して論理アドレスのブロックに書き込まれるたびにデータのボディがガーベッジコレクション操作の間に再配置されなければならない。ストレージアドレス再マッピングアルゴリズムでは、1つのブロック(論理または物理)が満杯になるまでデータが常に連続するアドレスに書き込まれるので、ガーベッジコレクションは不要である。本願明細書で開示されたストレージアドレス再マッピングにおけるフラッシング操作は、書き込みプロセスによってはトリガされなくて、データが陳腐化されたことに応答してトリガされるだけである。従って、本願明細書に記載されたストレージアドレス再マッピング機能を有するシステムではデータ再配置オーバーヘッドはより低いはずである。他の実施形態では、メモリシステムは、LBAアドレスの一定の範囲を、ホストLBAアドレスの各範囲の中で前述したストレージアドレス再マッピング手法が適用され得るように、別に維持するように構成され得る。従って、LBAアドレスの各々の割当てられた範囲はそれ自身の書き込みブロックおよび再配置ブロックを有し、ホストLBAアドレスの1つの特定の割当てられた範囲のための前の書き込みブロックまたは再配置ブロックが完全に書かれた時にホストLBAアドレスのその特定の割当てられた範囲に1つの新しい白色ブロックが書き込みブロックまたは再配置ブロックとして割当てられる。
【0173】
ランダムな書き込みアプリケーションにおけるメモリシステムの性能を高めることのできるストレージアドレス再マッピングのためのシステムおよび方法が記載されたが、それらは装置のLBAアドレス空間の関連し合っていない領域にデータの短いバーストを書き込む必要があることにより特徴付けられ、それはパーソナルコンピュータにおいてソリッドステートディスクアプリケーションで経験され得る。開示されたストレージアドレス再マッピングの一定の実施形態では、ホストデータは、ホストにより割当てられた第1の論理アドレスから第2の論理アドレス空間内の連続する論理アドレスのブロックにマッピングされる。アドレスの完全にプログラムされたブロックと関連付けられたデータが陳腐化される時にフラッシング手続きが開示され、最少量の有効なデータを有するかあるいはしきい値量未満の有効なデータを有するピンク色ブロックのグループから1つのピンク色ブロックを選択して、それらのブロック内の有効なデータを、それらのブロックをより多くのデータの書き込みに使用するべくそれらのブロックを解放するために再配置する。再配置されるデータは、ホストにより割当てられた論理アドレスとは無関係に、フラッシングを必要とするブロックの中でそれが存在する順に、再配置ブロックに連続的に書き込まれる。このように、ホストにより割当てられた論理アドレスラン同士をわざわざ統合しないことによってオーバーヘッドが低減され得る。ホストにより割当てられた論理アドレスと第2の論理アドレスとの間のマッピングと、フラッシングによるマッピングのその後の変化とを追跡するためにストレージアドレステーブルが使用される。ホストにより割当てられる論理アドレスが物理アドレスに直接マッピングされる実施形態では、ストレージアドレステーブルはその関係を追跡し、そして例えば特定のブロックが有効なデータおよび陳腐化したデータの両方を有するピンク色ブロックであるかそれとも未記入容量だけを有する白色ブロックであるかを追跡するためにブロック情報テーブルが維持される。
【0174】
SATは、ホストファイルシステムによって有効なデータに割当てられた論理アドレス空間の中のアドレスのどのランをも、装置アドレス空間(図8のアレンジメントでは物理アドレス空間、図9〜10のアレンジメントでは論理ストレージアドレス空間)の中のアドレスの1つ以上のランにマッピングする。ホストにより使用される連続的なアドレス空間の可変長さ単位(LBAラン)が連続的な装置アドレス空間の1つ以上の可変長さ単位にマッピングされる。ラン対ランのアドレスマッピング方式は、固定サイズ単位に基づくマッピング方式と比較して利益を提供し得る。SATにおいて必要とされるマッピングエントリの数は、ホストにより書き込まれるデータのランにおけるクラスタの平均数に反比例する。これはSATデータ構造の数を最小にし、ホストがファイルデータを書き込み、また削除する時にこれらのデータ構造を更新するための平均時間を最小にする。
【0175】
従って、前述した詳細な記述は限定的ではなく例証的であると解されるように意図され、また、この発明の精神および範囲を定めるべく意図されているのが、全ての同等物を含む添付の特許請求の範囲であることを理解されるように意図されている。
【技術分野】
【0001】
本願は、一般的には、オペレーティングシステムと記憶装置の間のデータ通信に関する。より具体的には、本願は、再プログラム可能な不揮発性半導体フラッシュメモリなどのメモリシステムと、このメモリが接続されているかあるいは接続可能であるホスト装置との操作に関する。
【背景技術】
【0002】
在来のフラッシュデータメモリシステムにデータを書き込む時、ホストは、通例、メモリシステムの連続的な仮想アドレス空間の中で一意の論理アドレスをデータのセクタ、クラスタまたは他の単位に割当てる。ホストは、メモリシステムの論理アドレス空間内のアドレスにデータを書き込み、また、それからデータを読み出す。メモリシステムは、そのとき、一般的に、論理アドレス空間と、論理アドレス空間における範囲に対応する固定された論理グループをなしてデータが格納されるメモリの物理的ブロックまたはメタブロックとの間でデータをマッピングする。一般に、各々の固定された論理グループは、メモリシステムの別々の物理的ブロックに格納される。メモリシステムは、論理アドレス空間が物理メモリにどのようにマッピングされているかを追跡するけれども、ホストはこれを知らない。ホストは、そのデータファイルの、論理アドレス空間内のアドレスを追跡するけれども、メモリシステムは、このマッピングについての知識なしで動作する。
【0003】
このように動作するメモリシステムの1つの欠点は断片化である。例えば、NTFSファイルシステムに従って動作するパーソナルコンピュータ(PC)においてソリッドステートディスク(SSD)ドライブに書き込まれているデータは、しばしば、このドライブの論理アドレス空間内の広く分散した位置における短い連続するアドレスランのパターンにより特徴付けられる。ホストにより使用されるファイルシステムが連続する複数のファイルのための新しいデータのために順次アドレスを割当てたとしても、削除されたファイルの気まぐれなパターンは、利用可能な空きメモリ空間の断片化を、それがブロック化単位で新しいファイルデータに割当てられ得ないように、引き起こす。
【0004】
フラッシュメモリ管理システムは、連続する論理アドレスの1つのブロックを物理アドレスの1つのメタブロックにマッピングすることによって動作しがちである。ホストからのアドレスの短い1つのランが独立して更新される時、そのランを含むアドレスの論理ブロック全体は、単一のメタブロックへのその長期マッピングを維持しなければならない。これは、論理対物理メモリ管理システム内のガーベッジコレクション操作を必要とし、そのとき、論理ブロック内のホストにより更新されない全てのデータは、それを更新されるデータと合併させるために再配置される。これはかなりのオーバーヘッドであって、書き込み速度とメモリの寿命とを厳しく制限することがある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願第10/915,039号
【特許文献2】米国特許第5,570,315号
【特許文献3】米国特許第5,774,397号
【特許文献4】米国特許第6,046,935号
【特許文献5】米国特許第6,373,746号
【特許文献6】米国特許第6,456,528号
【特許文献7】米国特許第6,522,580号
【特許文献8】米国特許第6,771,536号
【特許文献9】米国特許第6,781,877号
【特許文献10】米国公開特許出願第2003/0147278号
【特許文献11】米国公開特許出願第2003/0109093号
【発明の概要】
【0006】
既知のディスクドライブで使用される磁気メモリと比べてフラッシュメモリが現在持っている書き込みサイクルの限られた数を仮定すれば、短い論理アドレスランおよび断片化の問題を埋め合わせるために、フラッシュメモリを利用するシステムの性能を改善することが望ましい。これを処理するために、記憶装置におけるストレージアドレス再マッピングのための方法およびシステムが開示される。
【0007】
第1の態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が記述される。この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを大容量記憶システムにおいてホストシステムから受け取ることを含む。このホストLBAアドレスを受け取るために連続するストレージLBAアドレスの1つのブロックが割当てられ、その連続するストレージLBAアドレスのブロックは陳腐化したデータだけを含む。この方法は、受け取られたデータのためのホストLBAアドレスの各々をその連続するストレージLBAアドレスのブロックに再マッピングすることも含み、各ストレージLBAアドレスは、ホストLBAアドレスに関わらず、受け取られたデータが受け取られた順に、受け取られたデータに連続的な仕方で順次に割当てられる。
【0008】
第2の態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が記述される。この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータをホストシステム上のファイルシステムから受け取ることを含む。受け取られたホストLBAアドレスは、連続するストレージLBAアドレスの1つのブロックに受け取られた順に再マッピングされ、そしてその連続するストレージLBAアドレスのブロックが完全にプログラムされた後に初めて、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックが割当てられ、残りの受け取られたホストLBAアドレスはその付加的なブロックに連続的に再マッピングされる。未記入容量だけをアドレス指定する連続的なストレージLBAアドレスの新しいブロックも作成される。
【0009】
本発明の他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が開示され、この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを大容量記憶システムにおいてこのホストシステムから受け取ることと、受け取られたホストLBAアドレスを受け取られた順に連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングすることとを含む。この方法は、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当てることと、連続するストレージLBAアドレスのブロックが完全にプログラムされた時に初めて残りの受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングすることとをも含む。さらに、この方法は、ホストLBAアドレスと関連付けられたデータが連続するストレージLBAアドレスに再マッピングされる時に、ホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブルを生成することを含む。
【0010】
他の1つの態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が開示され、この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを大容量記憶システム上のアプリケーションにおいてホストシステムから受け取ることと、この受け取られたホストLBAアドレスを、連続するストレージLBAアドレスの1つのブロックに、受け取られた順に連続的に再マッピングすることとを含む。この方法は、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当てることと、連続するストレージLBAアドレスのブロックが完全にプログラムされた時にだけ付加的な受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングすることとをさらに含む。有効なデータおよび陳腐化したデータを現在アドレス指定している連続するストレージLBAアドレスの以前に完全にプログラムされたブロックを、以前に受け取られたホストLBAアドレスと関連付けられた新しいデータを受け取る前に識別することと、連続するストレージLBAアドレスの識別された以前に完全にプログラムされたブロックから未記入容量だけをアドレス指定する連続するストレージLBAアドレスの新しいブロックを作成することとも含まれる。
【0011】
本発明の1つの態様において、大容量記憶メモリシステムが開示され、このシステムは、一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、ホスト論理ブロックアドレス(LBA)アドレスでアドレス指定されたホストシステムからのデータを受け取るようになされているインターフェイスと、このインターフェイスと通信するコントローラとを備える。コントローラは、ホストシステムからデータを受け取るために連続するストレージLBAアドレスの1つのブロックを割当てるように構成されると共に、その受け取られたデータのためのホストLBAアドレスの各々を連続するストレージLBAアドレスのブロックに再マッピングするように構成され、また、受け取られたデータと関連付けられたホストLBAアドレスに関わらず、受け取られたデータが受け取られた順に、各々の連続するストレージLBAアドレスを受け取られたデータに順次に割当てるように構成される。
【0012】
本発明の他の1つの態様に従って、大容量記憶メモリシステムは、一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、ホストシステムからホスト論理ブロックアドレス(LBA)フォーマットでアドレス指定されたデータを受け取るようになされているインターフェイスと、このインターフェイスと通信するコントローラとを備える。コントローラは、ホストシステムから大容量記憶システムにおいてホストLBAアドレスと関連付けられたデータを受け取ることと、受け取られたホストLBAアドレスを連続するストレージLBAアドレスの1つのブロックに受け取られた順に連続的に再マッピングすることと、連続するストレージLBAアドレスの、割当て時に未記入の容量だけを含む1つの付加的なブロックを割当てることと、その連続するストレージLBAアドレスのブロックが完全にプログラムされている場合にだけ残りの受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングすることとを実行するためのプロセッサ実行可能な命令を含む。プロセッサ実行可能な命令は、有効なデータを含まない連続するストレージLBAアドレスの新しいブロックを作成するための命令も含む。
【0013】
本発明の他の1つの態様において開示されるように、ホストLBAアドレスと関連付けられたデータをストレージLBAアドレスに再マッピングするための不揮発性大容量記憶システムは、一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、ホストシステムからホストLBAフォーマットでアドレス指定されたデータを受け取るようになされているインターフェイスと、このインターフェイスと通信するコントローラとを備える。コントローラは、受け取られたホストLBAアドレスを、受け取られた順に、連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングし、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当て、連続するストレージLBAアドレスのブロックが完全にプログラムされている時にだけ付加的な受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングするように構成される。コントローラは、ホストLBAアドレスと関連付けられたデータが連続するストレージLBAアドレスに再マッピングされる時にホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブルを生成し、ストレージLBAアドレスの複数のブロックの各々のステータスを識別するブロック情報テーブルを生成するようにさらに構成される。
【0014】
他の1つの態様において、不揮発性大容量記憶システムは、ホストLBAアドレスと関連付けられたデータをホストシステムから大容量記憶システムにおいて受け取るための手段と、ホストLBAアドレスを受け取るために、割当て時に未記入の容量だけと関連付けられた連続するストレージLBAアドレスの1つのブロックを割当てるための手段と、受け取られたデータのためのホストLBAアドレスの各々を連続するストレージLBAアドレスのブロックに再マッピングするための手段とを備え、各ストレージLBAアドレスは、ホストLBAアドレスに関わらず、受け取られたデータが受け取られた順に、受け取られたデータに連続的な仕方で順次に割当てられる。
【0015】
本発明のさらに他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、ホストLBAアドレスと関連付けられたデータをホストシステム上のホスト再マッピングモジュールで受け取ることを含む。ホスト再マッピングモジュールは、ホストLBAアドレスを受け取るために、割当て時に未記入の容量だけと関連付けられた連続するストレージLBAアドレスの1つのブロックを割当て、また、受け取られたデータのためのホストLBAアドレスの各々を、連続するストレージLBAアドレスのブロックに、各ストレージLBAアドレスがホストLBAアドレスに関わらず受け取られたデータが受け取られた順に受け取られたデータに連続的な仕方で順次に割当てられるように、再マッピングする。連続するストレージLBAアドレスのブロックに再マッピングされた受け取られたデータと、割当てられたストレージLBAアドレスとはホストシステムから大容量記憶システムに送られる。
【0016】
他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータをホストシステムに存在するホスト再マッピングモジュールで受け取ることと、受け取られたホストLBAアドレスを、受け取られた順に、連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングすることとを含む。割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックが割当てられる。残りの受け取られたホストLBAアドレスは、連続するストレージLBAアドレスのブロックが完全にプログラムされた時にだけ、付加的なブロックに連続的に再マッピングされる。この方法は、陳腐化したデータだけをアドレス指定する連続するストレージLBAアドレスの新しいブロックを作成することと、連続するストレージLBAアドレスのブロックに再マッピングされた受け取られたデータと割当てられたストレージLBAアドレスとをホストシステムから大容量記憶システムに送ることとをさらに含む。
【0017】
本発明の1つの態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、ホストLBAアドレスと関連付けられたデータをホストシステム上のホスト再マッピングモジュールにおいて受け取ることと、受け取られたホストLBAアドレスを受け取られた順にホストシステムにおいて連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングすることと、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当てることと、連続するストレージLBAアドレスのブロックが完全にプログラムされた時にだけ、付加的な受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングすることとを含む。この方法は、ホストLBAアドレスと関連付けられているデータが連続するストレージLBAアドレスに再マッピングされる時にホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブルをホストシステムにおいて生成することをさらに含む。
【0018】
本発明の他の1つの態様において、データを再プログラム可能な不揮発性大容量記憶システムに転送するためのホストシステムが開示される。このホストシステムは、大容量記憶装置との通信を可能にするように構成されたインターフェイスと、ホスト再マッピングモジュールからの命令に従ってインターフェイスを介して大容量記憶システムにデータを格納するように構成されたホストプロセッサとを含む。ホスト再マッピングモジュールは、ホストプロセッサに、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータをホストシステム上のホスト再マッピングモジュールにおいて受け取らせ、ホストLBAアドレスを受け取るために、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つのブロックを割当てさせ、各ストレージLBAアドレスが、ホストLBAアドレスに関わらず受け取られたデータが受け取られた順に、受け取られたデータに連続的な仕方で順次に割当てられるように、受け取られたデータのためのホストLBAアドレスの各々を連続するストレージLBAアドレスのブロックに再マッピングさせ、連続するストレージLBAアドレスのブロックに再マッピングされた受け取られたデータと、割当てられたストレージLBAアドレスとをホストシステムから大容量記憶システムに送らせるためのプロセッサ実行可能な命令を含む。
【0019】
本発明の他の1つの態様に従って、データを再プログラム可能な不揮発性大容量記憶システムに転送するためのホストシステムが開示される。このホストシステムは、大容量記憶装置との通信を可能にするように構成されたインターフェイスと、ホスト再マッピングモジュールからの命令に従ってデータをインターフェイスを介して大容量記憶システムに格納するように構成されたホストプロセッサとを備える。ホスト再マッピングモジュールは、ホストプロセッサに、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータをホスト再マッピングモジュールにおいて受け取らせ、受け取られたホストLBAアドレスを、受け取られた順に、ホストシステムにおいて連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングさせ、割当て時に未記入の容量だけと関連付けられた連続するストレージLBAアドレスの1つの付加的なブロックを割当てさせ、連続するストレージLBAアドレスのブロックが完全にプログラムされた時にだけ付加的な受け取られたホストLBAアドレスを付加的なブロックに連続的に再マッピングさせるためのプロセッサ実行可能な命令を含む。ホスト再マッピングモジュールのプロセッサ実行可能な命令は、ホストプロセッサに、ホストLBAアドレスと関連付けられたデータが連続するストレージLBAアドレスに再マッピングされる時にホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブルをホストシステムにおいて生成させるようにも構成される。
【0020】
本発明の他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、大容量記憶システムに格納されるべきデータをホストファイルシステムにおいて受け取ることと、受け取られたデータに関連付けるべき連続するホストLBAアドレスの、少なくとも1つの利用可能なホストLBAアドレスを有する、第1のブロックを割当てることと、第1のブロック内の各々の利用可能なホストLBAアドレスを受け取られたデータに関連付けることとを含み、各々の利用可能なホストLBAアドレスは、受け取られたデータに、受け取られたデータが受け取られた順に、順次に割当てられる。この方法は、連続するホストLBAアドレスの第2のブロックを割当てることをさらに含み、その連続するホストLBAアドレスの第2のブロックは少なくとも1つの利用可能なホストLBAアドレスを有し、第2のブロックは、第1のブロック内の少なくとも1つの利用可能なホストLBAアドレスの各々の関連付けの後に初めて割当てられる。
【0021】
他の1つの態様において、データを再プログラム可能な不揮発性大容量記憶システムに転送するためのホストシステムが開示される。このホストシステムは、大容量記憶装置との通信を可能にするように構成されたインターフェイスと、データをホストメモリからの命令に従ってインターフェイスを介して大容量記憶システムに格納するように構成されたホストプロセッサとを備える。ホストメモリは、プロセッサに、ホストファイルシステムにおいて受け取られたデータと関連付けるべき連続するホストLBAアドレスの第1のブロックを割当てさせ、第1のブロック内の各々の利用可能なホストLBAアドレスを、各々の利用可能なホストLBAアドレスが、受け取られたデータに、受け取られたデータが受け取られた順に、順次に割当てられるように、受け取られたデータに関連付けさせ、受け取られたデータと関連付けるための連続するホストLBAアドレスの第2のブロックを、第1のブロック内の少なくとも1つの利用可能なホストLBAアドレスの各々を関連付けた後に初めて、割当てさせる、ホストファイルシステムを実行するためのプロセッサ実行可能な命令を有する。
【0022】
他の1つの態様において、データをホストシステムから再プログラム可能な不揮発性大容量記憶システムに転送するためのコンピュータ実行可能な命令を有するコンピュータ可読媒体が開示される。コンピュータ実行可能な命令は、大容量記憶システムに格納されるべきデータをホストファイルシステムにおいて受け取ることと、受け取られたデータと関連付けるべき連続するホストLBAアドレスの第1のブロックを割当てることと、第1のブロック内の各々の利用可能なホストLBAアドレスを、各々の利用可能なホストLBAアドレスが、受け取られたデータに、受け取られたデータが受け取られた順に、順次に割当てられるように、受け取られたデータに関連付けることとをプロセッサに実行させるように構成される。コンピュータ実行可能な命令は、受け取られたデータと関連付けるための連続するホストLBAアドレスの第2のブロックを、第1のブロック内の利用可能なホストLBAアドレスの各々の関連付けの後に初めて、割当てることをプロセッサに実行させるようにも構成される。
【0023】
本発明のさらに他の1つの態様において、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法は、ホストLBAアドレスと関連付けられたデータを大容量記憶システムにおいてホストシステムから受け取ることを含む。この方法は、受け取られたデータを、ホストLBAアドレスの順に関わらず、受け取られた順に、連続する物理アドレスを有する1つの書き込みブロックの連続する物理アドレスに格納することと、書き込みブロックが完全にプログラムされた時に受け取られたデータを格納する次の書き込みブロックとして、未記入の容量だけを含む連続する物理アドレスの1つのブロックを含む1つの白色ブロックを割当てることと、受け取られたデータのためのホストLBAアドレスを各書き込みブロック内の物理アドレスにマッピングする1つのストレージアドレステーブルを更新することとを含み、ストレージアドレステーブルは物理アドレスの少なくとも1つのブロックにおいて維持される。この方法は1つの新しい白色ブロックを作成することをさらに含み、1つの新しい白色ブロックを作成することは複数のピンク色ブロックから1つのピンク色ブロックを選択することを含み、複数のピンク色ブロックの各々は、有効なデータおよび陳腐化したデータの両方を有する完全にプログラムされた物理アドレスの1つの連続的なブロックであり、選択されたピンク色ブロックはしきい値量未満の有効なデータを有する。選択されたピンク色ブロックからの全ての有効なデータは、その選択されたピンク色ブロックからの全ての有効なデータが再配置されるとその選択されたピンク色ブロックが1つの新しい白色ブロックになるように、1つの再配置ブロックに再配置される。
【0024】
本発明の1つの態様に従って、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が開示される。この方法は、ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを大容量記憶システムにおいてホストシステムから受け取ることと、受け取られたデータを、ホストLBAアドレスの順に関わらず、受け取られた順に、連続する物理アドレスを有する1つの書き込みブロックの連続する物理アドレスに格納することとを含む。受け取られたデータのためのホストLBAアドレスの1つのランは1つのストレージアドレステーブル(SAT)の単一のページの上に物理アドレスの少なくとも2つのランにマッピングされ、SATは、大容量記憶システム内の連続する物理アドレスの少なくとも1つのブロックから構成される。
【0025】
他の1つの態様において、再プログラム可能な不揮発性大容量記憶システムにおいて未記入容量だけを有する連続する物理アドレスのブロックを生成する方法が開示され、大容量記憶システムは、連続する物理アドレスの複数のブロックを有する。この方法は、複数のブロックのうちの、有効なデータおよび陳腐化したデータの両方を有する連続する物理アドレスの1つの完全にプログラムされたブロックを含む各ピンク色ブロックに含まれる有効なデータの量を判定することと、有効なデータの判定された量に基づいてピンク色ブロックのうちの1つを選択することとを含む。この方法は、ピンク色ブロックのうちの選択された1つから有効なデータを1つの再配置ブロック内の連続する物理アドレスにコピーすることをさらに含み、再配置ブロックは、ピンク色ブロックのうちの選択された1つから有効なデータを連続的に再配置するべきところの連続する物理アドレスの1つのブロックを含み、有効なデータは、ピンク色ブロックのうちの選択された1つから有効なデータと関連付けられたホストLBAアドレスに関わらず出現の順にコピーされる。
【0026】
大容量記憶メモリシステムが本発明の他の1つの態様において開示される。この大容量記憶システムは、一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、ホストLBAアドレスでアドレス指定されたホストシステムからのデータを受け取るようになされているインターフェイスと、このインターフェイスと通信するコントローラとを備える。コントローラは、ホストシステムからデータを受け取るために連続する物理アドレスの第1のブロックを割当て、受け取られたデータのためのホストLBAアドレスの各々をその連続する物理アドレスのブロックにマッピングするように構成され、受け取られたデータは、受け取られたデータと関連付けられたホストLBAアドレスに関わらず、受け取られたデータが受け取られた順に、連続する物理アドレスに順次に書き込まれる。コントローラは、付加的な受け取られるデータを連続的な仕方で受け取るために連続する物理アドレスの第2のブロックを割当てるようにさらに構成され、その連続する物理アドレスの第2のブロックは、割当て時に未記入の容量だけを有し、コントローラは、連続する物理アドレスの第1のブロックを完全に割当てた時に初めてデータを第2のブロックに割当てる。また、コントローラは、ホストLBAアドレス位置と物理アドレス位置とを相関させる相関データを生成し、相関データを大容量記憶メモリシステムにおいて1つのストレージアドレステーブルに格納するようにさらに構成され、相関データは、ホストLBAアドレスの各ランを、ホストLBAアドレスのランと関連付けられたデータに対応する物理アドレスの1つ以上のランにマッピングする。
【0027】
本発明の他の1つの態様に従って、1つの連続する論理アドレス範囲の中の1つの論理アドレスによってデータが識別される記憶装置の中でデータを移動させる方法が開示される。この方法は、連続する論理アドレス範囲を等しいサイズの論理アドレスの連続するブロックに分割することと、装置に格納された有効なデータに割当てられている少なくとも1つの論理アドレスを含む論理アドレスの1つのブロックを識別することとを含む。この方法は、有効なデータを論理アドレスのブロック内に含まれない少なくとも1つの論理アドレスに再マッピングすることと、有効なデータに割当てられた少なくとも1つの論理アドレスと関連付けられた有効なデータを読み出すことと、識別されたブロックが有効なデータに割当てられたアドレスを含まないように、有効なデータを少なくとも1つの論理アドレスに書き込むこととを含む。
【0028】
本発明の他の特徴および利点は、以下の図面、詳細な説明および特許請求の範囲を検討すれば明らかとなる。
【図面の簡単な説明】
【0029】
【図1】不揮発性メモリを有するメモリシステムと接続されたホストを示す。
【図2】図1の不揮発性メモリとして用いられる例示のフラッシュメモリシステムの例示のブロック図である。
【図3】図2のシステムにおいて使用され得るメモリセルアレイの代表的な回路図である。
【図4】図2のシステムの物理メモリ組織の例を示す。
【図5】図4の物理メモリの一部分の拡大図を示す。
【図6】LBAアドレス空間における割当て済みクラスタおよび空きクラスタの代表的パターンを示す。
【図7】1つの開示される実施例に従うブロックによるクラスタの割当てのパターンを示す。
【図8】装置のメモリマネージャがストレージアドレス指定再マッピング機能を組み入れている、ホストとメモリドライブとの間のストレージアドレス再マッピングの実施例を示す。
【図9】図8に示されているストレージアドレス再マッピングの代わりの実施例を示す。
【図10】機能がホストに置かれているストレージアドレス再マッピングの実施例を示す。
【図11】図10のストレージアドレス再マッピングの代わりの実施例を示す。
【図12】クラスタのブロックの割当ての状態図である。
【図13】フラッシュメモリはバイナリパーティションおよびMLCパーティションを含む場合の図12の状態図の代わりの実施例である。
【図14】図9および10の実施例において利用され得るLBAアドレス空間および関連するDLBAアドレス空間の例である。
【図15】ホストから受け取られたデータのためのLBA対DLBAマッピングの例を示す。
【図16】DLBAアドレス空間におけるフラッシング操作と、物理アドレス空間内の対応する更新ブロックとを示す。
【図17】図16のフラッシング操作に続く第2のフラッシング操作を示す。
【図18】ホストからのデータを包含するブロックのためのブロックフラッシングプロセスの流れ図である。
【図19】ホスト論理アドレスが第2の論理アドレス空間に再マッピングされる構成におけるストレージアドレステーブル(SAT)階層を示す。
【図20】論理対論理マッピングを追跡するのに使われるストレージアドレステーブル(SAT)書き込みブロックを示す。
【図21】図20のSATテーブルのSATページで使用されるLBAエントリである。
【図22】図20のSATテーブルのSATページで使用されるDLBAエントリである。
【図23】図20のSATテーブルのSATページで使用されるSAT索引エントリである。
【図24】図9および10のストレージアドレス再マッピング機能において使用されるストレージアドレステーブル変換手続きを示す。
【図25】LBAアドレス空間およびDLBAアドレス空間における4つの時間インスタンスでのデータ書き込み操作の例の図である。
【図26】SATブロック遷移の状態図を示す。
【図27】SATブロックフラッシング順序を決定するためのプロセスの流れ図である。
【図28】ブロック情報テーブル(BIT)書き込みブロックを示す。
【図29】ホストから受け取られたデータのためのLBA対物理アドレスのマッピングの例を示す。
【図30】図29に示されているデータ分布に基づく物理アドレス空間におけるフラッシング操作を示す。
【図31】図30のフラッシング操作に続く第2のフラッシング操作を示す。
【図32】ホスト論理アドレスのランがデータランの物理アドレスにマッピングされる構成におけるストレージアドレステーブル(SAT)階層を示す。
【図33】論理対物理マッピングを追跡するのに使用されるストレージアドレステーブル(SAT)書き込みブロックを示す。
【図34】図33のSATテーブルのSATページに使用されるLBAエントリである。
【図35】図33のSATテーブルのSATページに使用されるデータエントリである。
【図36】図33のSATテーブルのSATページに使用されるSAT索引エントリである。
【図37】論理アドレスの完全なブロックがデータランにマッピングされる、図32〜36のSATの代わりの実施形態を示す。
【図38】図11の構成を利用するシステムにおけるストレージアドレス再マッピングの実施例を示す。
【発明を実施するための形態】
【0030】
本発明の種々の態様を実施するために用いるのに適するフラッシュメモリシステムが図1〜6に示されている。図1のホストシステム1は、フラッシュメモリ2にデータを格納し、それからデータを取り出す。フラッシュメモリは、例えばパーソナルコンピュータに据え付けられたソリッドステートディスク(SSD)ドライブの形で、ホスト内に埋め込まれ得る。代わりに、メモリ2は、図1に示されているように機械電気コネクタの接合部品3および4を通してホストに取り外し可能に接続されるカードの形であり得る。内部のあるいは埋め込みのSSDドライブとして使用されるように構成されたフラッシュメモリは図1の略図に類似するように見えるかもしれないが、主な違いはホスト内でのメモリシステム2の位置である。SSDドライブは、回転磁気ディスクドライブに替わるドロップイン取替え品である個別的モジュールの形であり得る。
【0031】
市販されているSSDドライブの1例は、サンディスク コーポレーションにより製造されている32ギガバイトSSDである。市販されている取り外し可能なフラッシュメモリカードの例は、コンパクトフラッシュ(CF)、マルチメディアカード(MMC)、セキュアデジタル(SD)、ミニSD(miniSD)、メモリスティック、スマートメディア、およびトランスフラッシュカードを含む。これらのカードの各々は、その標準化された仕様に従う独特の機械的および/または電気的インターフェイスを有するけれども、各々に含まれているフラッシュメモリシステムは類似している。これらのカードは全て、本願の譲受人であるサンディスク コーポレーションから入手可能である。サンディス
コーポレーションクは、Cruzerという商標のもとで1系列のフラッシュドライブも提供しり、それらは、ホストのUSBレセプタクルに差し込むことによってホストと接続するためのユニバーサル・シリアル・バス(USB)プラグを有する小型パッケージ内のハンドヘルドメモリシステムである。これらのメモリカードおよびフラッシュドライブの各々は、ホストとインターフェイスしてそれらの中のフラッシュメモリの動作を制御するコントローラを含む。
【0032】
SSD、メモリカードおよびフラッシュドライブを使用することのできるホストシステムは、たくさんあって多様である。それらは、デスクトップあるいはラップトップおよび他の携帯可能なコンピュータなどのパーソナルコンピュータ(PC)、セルラー電話機、個人用携帯情報端末(PDA)、デジタルスチルカメラ、デジタルムービーカメラ、および携帯可能なオーディオプレーヤを含む。携帯可能なメモリカードアプリケーションのために、ホストは1つ以上のタイプのメモリカードまたはフラッシュドライブのための内蔵レセプタクルを含むことができ、あるいはホストはメモリカードを差し込むアダプタを必要とし得る。メモリシステムは、普通はそれ自身のメモリコントローラおよびドライバを包含するけれども、その代わりにメモリが接続されているホストによって実行されるソフトウェアにより制御されるメモリだけのシステムもいくつかある。コントローラを包含するあるメモリシステム、特にホストに埋め込まれているものでは、メモリ、コントローラおよびドライバはしばしば単一の集積回路チップ上に形成される。
【0033】
図1のホストシステム1は、メモリ2に関する限り、回路およびソフトウェアの組み合わせから構成される2つの主要な部分を有すると見なされ得る。それらは、アプリケーション部分5と、メモリ2とインターフェイスするドライバ部分6とである。PCにおいて、例えば、アプリケーション部分5は、ワードプロセッサ、グラフィックス、制御または他のポピュラーなアプリケーションソフトウェアを実行するプロセッサ9と、ホスト1上のデータを管理するためのファイルシステム10とを含むことができる。カメラ、セルラー電話機、あるいはその他の、主として単一の機能セットの実行のために専用されるホストシステムでは、アプリケーション部分5は、写真を撮り、また記憶するようにカメラを操作し、電話を掛け、また受け取るようにセルラー電話機を操作するなどするソフトウェアを含む。
【0034】
図1のメモリシステム2は、フラッシュメモリ7と、データを前後に通過させるためにカードが接続されているホストとインターフェイスし、かつメモリ7を制御する回路8とを含む。コントローラ8は、通例、データプログラムおよび読み出しの間に、ホスト1により使用されるデータの論理アドレスとメモリ7の物理アドレスとの間で変換を行う。
【0035】
図2を参照すると、図1の不揮発性メモリ2として使用され得る代表的なフラッシュメモリシステムの回路が記載されている。システムコントローラは、普通、システムバス13を介して1つ以上の集積回路メモリチップと並列に接続された単一の集積回路チップ11上に実装され、単一のそのようなメモリチップ15が図2に示されている。図に示されている特定のバス13は、データを伝える導体の独立のセット17と、メモリアドレスのためのセット19と、制御信号およびステータス信号のためのセット21とを含む。あるいは、導体の単一のセットが、これら3つの機能の間で時分割され得る。さらに、「Ring Bus Structure and It's Use in Flash Memory Systems 」という2004年8月9日に出願された米国特許出願第10/915,039号(特許文献1)に記載されているリングバスなどの、システムバスの他の構成が採用され得る。
【0036】
代表的なコントローラチップ11は、インターフェイス回路25を通してシステムバス13とインターフェイスするそれ自身の内部バス23を有する。バスに通常結び付けられている主な機能は、プロセッサ27(マイクロプロセッサあるいはマイクロコントローラなど)、システムを初期化(「ブート」)するためのコードを包含する読み出し専用メモリ(ROM)29、主としてメモリおよびホストの間で転送されるデータをバッファリングするために使用される読み出し専用メモリ(RAM)31、およびメモリとホストとの間でコントローラを通過するデータのために誤り訂正符号(ECC)を計算しチェックする回路33である。コントローラバス23は回路35を通してホストシステムとインターフェイスし、それは、メモリカードに内蔵される図2のシステムの場合には、コネクタ4の一部であるカードの外部接点37を通して行われる。クロック39は、コントローラ11の他のコンポーネントの各々に接続されて、それらにより利用される。
【0037】
メモリチップ15も、システムバス13と接続されている他のものも、多数のサブアレイあるいはプレーンをなすように組織されたメモリセルアレイを含むことができ、2つのそのようなプレーン41および43が簡潔さを図るために図に示されているけれども、その代わりにもっと多くの、例えば4個または8個のそのようなプレーンも使用され得る。あるいは、チップ15のメモリセルアレイは、プレーンをなすように分割されなくてもよい。しかし、そのように分割される場合には、各プレーンは、互いに独立して動作し得るそれ自身の列制御回路45を有する。回路45および47は、システムバス13のアドレス部分19からそれぞれのメモリセルアレイのアドレスを受け取り、それらを、それぞれのビット線49および51のうちの特定の1つ以上をアドレス指定するために復号する。ワード線53は、アドレスバス19で受け取られたアドレスに応じて行制御回路55を通してアドレス指定される。Pウェル電圧制御回路61および63と同じく、ソース電圧制御回路57および59もそれぞれのプレーンと接続されている。メモリチップ15がメモリセルの単一のアレイを有し、2つ以上のそのようなチップがシステムに存在するならば、各チップのアレイは、前述した多数のプレーンチップ内のプレーンまたはサブアレイと同様に操作され得る。
【0038】
データは、システムバス13のデータ部分17と接続されているそれぞれのデータ入出力回路65および67を通してプレーン41および43内へ、またそれらの外へ転送される。回路65および67は、それぞれの列制御回路45および47を通してプレーンに接続された線69および71を通して、それぞれのプレーンのメモリセルにデータをプログラムすると共にメモリセルからデータを読み出すための手段を提供する。
【0039】
コントローラ11は、データをプログラムし、データを読み出し、消去し、また種々のハウスキーピング事項を処理するためにメモリチップ15の動作を制御するけれども、各メモリチップも、そのような機能を実行するためにコントローラ11からのコマンドを実行する多少の制御回路を含む。インターフェイス回路73は、システムバス13の制御およびステータス部分21に接続されている。コントローラからのコマンドは、これらのコマンドを実行するために他の回路の具体的な制御を提供する状態マシン75に提供される。制御線77〜81は、図2に示されているように、状態マシン75をこれらの他の回路と接続する。状態マシン75からのステータス情報は、バス部分21を介してコントローラ11に伝送されるべく線83を介してインターフェイス73に伝えられる。
【0040】
メモリセルアレイ41および43のNANDアーキテクチャが現在好ましいけれども、代わりにNORなどの他のアーキテクチャも使用され得る。NANDフラッシュメモリと、メモリシステムの一部としてのそれらの動作との例が、米国特許第5,570,315号(特許文献2)、第5,774,397号(特許文献3)、第6,046,935号(特許文献4)、第6,373,746号(特許文献5)、第6,456,528号(特許文献6)、第6,522,580号(特許文献7)、第6,771,536号(特許文献8)および第6,781,877号(特許文献9)、ならびに米国公開特許出願第2003/0147278号(特許文献10)を参照することにより得られ得る。NANDアレイの例が、図3の回路図により示され、それは図2のメモリシステムのメモリセルアレイ41の一部分である。多数のグローバルビット線が設けられるが、説明を簡略化するために図2には4つのそのような線91〜94だけが示されている。直列接続された数個のメモリセルストリング97〜104が、これらのビット線のうちの1つと基準電位との間に接続されている。代表としてメモリセルストリング99を用いると、複数の電荷蓄積メモリセル107〜110が、ストリングの両端で選択トランジスタ111および112と直列に接続されている。1つのストリングの選択トランジスタが導通させられると、そのストリングはそのビット線と基準電位との間に接続される。その後、一度にそのストリングの中の1つのメモリセルがプログラムされるかあるいは読み出される。
【0041】
図3のワード線115〜118は、それぞれ、メモリセルの数個のストリングの各々の中の1つのメモリセルの電荷蓄積素子を横断して伸び、ゲート119および120は、ストリングの各端部の選択トランジスタの状態を制御する。共通のワード線および制御ゲート線115〜120を共有するメモリセルストリングは、一緒に消去されるメモリセルの1つのブロック123を形成させられる。セルのこのブロックは、物理的に一度に消去可能な最小数のセルを包含する。1行のメモリセル、すなわちワード線115〜118のうちの1つに沿うメモリセルは一度にプログラムされる。通例、NANDアレイの行は所定の順序で、この場合には接地または他の共通電位に接続されているストリングの端部に最も近いワード線118に沿う行から、プログラムされる。ワード線117に沿うメモリセルの行が次にプログラムされ、そしてブロック123の全体にわたって、そのようにプログラムされてゆく。ワード線115に沿う行は最後にプログラムされる。
【0042】
第2のブロック125は同様であり、そのメモリセルのストリングは第1のブロック123のストリングと同じグローバルビット線に接続されているが、ワード線および制御ゲート線の異なるセットを有する。ワード線および制御ゲート線は、行制御回路55によってそれらの適切な動作電圧へ到達させられる。例えば図2のプレーン1および2など、2つ以上のプレーンまたはサブアレイがシステムに存在するならば、1つのメモリアーキテクチャは、それらの間に伸びる共通ワード線を使用する。代わりに、共通のワード線を共有する3つ以上のプレーンまたはサブアレイが存在し得る。他のメモリアーキテクチャでは、それぞれのプレーンまたはサブアレイのワード線は別々に駆動される。
【0043】
前に援用されているNAND特許および公開された特許出願のうちのいくつかに記載されているように、メモリシステムは、各々の電荷蓄積素子または領域に2つよりも多くの検出可能なレベルの電荷を蓄積し、これにより1ビットより多くのデータを各々に記憶させるように操作され得る。メモリセルの電荷蓄積素子は、最も一般的には導電性フローティングゲートであるけれども、代わりに、米国公開特許出願第2003/0109093号(特許文献11)に記載されているように、非導電性の誘電体電荷トラッピング材料であり得る。
【0044】
図4は、以下のさらなる記述において1例として用いられるフラッシュメモリセルアレイ7(図1)の組織を概念的に示す。メモリセルの4つのプレーンまたはサブアレイ131〜134は、単一の統合メモリセルチップ上に、2チップ上に(各チップ上にプレーンのうちの2つ)、あるいは4つの別々のチップ上に存在し得る。明細な配列は、以下の議論にとっては重要ではない。もちろん、1つのシステム内に他の数のプレーン、例えば1,2,8,16またはそれ以上が存在し得る。このプレーンは、それぞれのプレーン131〜134に置かれているブロック137,138,139および140などの、長方形により図4に示されているメモリセルのブロックにそれぞれ分割される。各プレーンに数十あるいは数百のブロックが存在し得る。
【0045】
前述したように、メモリセルのブロックは消去の単位、すなわち物理的に一緒に消去可能な最小数のメモリセルである。しかし、並列性を高めるために、ブロックは、より大きなメタブロック単位で操作される。1つのメタブロックを形成するために各プレーンから1つのブロックが論理的に連結される。1つのメタブロック141を形成する4つのブロック137〜140が示されている。1つのメタブロックの中の全てのセルが通例一緒に消去される。ブロック145〜148から構成される第2のメタブロック143において示されているように、1つのメタブロックを形成するために使用されるブロックは、それらのそれぞれのプレーンの中の同じ相対的位置に限定される必要はない。全てのプレーンを横断するようにメタブロックを延在させるのが普通は好ましいけれども、高いシステム性能を得るために、メモリシステムは、別々のプレーンに存在する1個、2個または3個のブロックのうちのいずれかまたは全てからメタブロックを動的に形成する能力で操作され得る。これは、メタブロックのサイズを、1つのプログラミング操作で格納されるように利用され得るデータの量により厳密に適合させることを可能にする。
【0046】
次に、個々のブロックは、操作上の目的のために、図5に示されているようにメモリセルのページに分割される。例えば、ブロック137〜140の各々のメモリセルは、各々8ページP0〜P7に分割される。その代わりとして、各ブロック内のメモリセルの16ページ、32ページまたはそれ以上が存在し得る。ページは、1ブロック内でのデータプログラミングおよび読み出しの単位であって、一度にプログラムされるかあるいは読み出される最少量のデータを包含する。図3のNANDアーキテクチャでは、1つのページは、1ブロック内の1つのワード線に沿うメモリセルから形成される。しかし、メモリシステムの操作の並列性を高めるために、2つ以上のブロックの中のそのようなページが論理的に連結されてメタページとなることができる。1つのメタページ151が図5に示され、4個のブロック137〜140の各々から1つの物理的ページで形成されている。例えばメタページ151は4つのブロックの各々のページP2を含むけれども、メタページのページはブロックの各々の中で必ずしも同じ相対的位置を持っていなくてもよい。メタページは、プログラミングの最大単位である。
【0047】
ホスト1とメモリシステム2との間の、図6に示されている普通の論理インターフェイスは、メモリシステム2に格納され得る全データにアドレスを提供するのに充分な大きさの1つの連続的な論理アドレス空間160を利用する。前述したホスト1およびメモリシステム2を参照すると、フラッシュメモリ7に格納されるように定められているデータは、通例、論理ブロックアドレス(LBA)フォーマットで受け取られる。ホストアドレス空間は、通例、データのクラスタのインクリメントに分割される。各クラスタは所与のホストシステムにおいてデータの数個のセクタを含むように設計され、およそ4〜64セクタが代表的である。1つの標準的なセクタは512バイトのデータを包含する。図6を参照すると、NTFSファイルシステムのための論理アドレス空間160における割当て済みクラスタ162および空きクラスタ164の代表的なパターンが示されている。
【0048】
図6に示されている論理アドレス空間160の断片化を処理するための組織的構造が図7に示されている。本願明細書において記載されているストレージアドレス再マッピングのためのシステムおよび方法は、以下の議論において一般的に「ブロック」と称されるクラスタのブロック166を考慮してLBAアドレスを割当てる。書き込み操作は、常にデータを個々のブロック166に書き込み、そのブロック166を、次の利用可能なブロックに進む前に、データで完全に満たすことによって処理される。以下の記述において、有効なデータで完全に満たされているブロック166は赤色ブロック168と称され、有効なデータがなくて、従って未記入容量だけを含むブロックは白色ブロック170と称される。メモリシステムが「使用後に消去する」タイプの手続きを採用しているならば、白色ブロック170内の未記入容量は消去済み状態であり得る。その代わりに、メモリシステムが「使用前に消去する」タイプの手続きを採用しているならば、白色ブロック170内の未記入容量は割当て時に消去されなければならない陳腐化したデータからなることができる。完全にプログラムされていて、有効なデータのクラスタ162および無効な(陳腐化したとも称される)データのクラスタ164の両方を有するブロックはピンク色ブロック172と称される。
【0049】
論理アドレス空間160を論理アドレスのブロックを考慮して分割し管理するために、ホストとメモリシステムとはフラッシュメモリにおける物理的ブロックのブロックサイズに関する情報を交換しなければならないことがある。論理ブロックのサイズは好ましくは物理的ブロックと同じサイズであって、この情報は、メモリシステムがホストと接続される時に伝達され得る。この通信は、パワーアップ時にあるいはメモリシステムのホストへの接続時にハンドシェイキング動作として行われるように設定され得る。一実施形態では、ホストは、ブロックサイズおよびアライメント情報を要求する「ドライブ識別(Identify Drive)」クエリをメモリシステムに送ることができ、ブロックサイズは、そのメモリシステムのための個々の物理的ブロックのサイズであり、アライメント情報は、既に各物理的ブロックの一部を占めつつあるかもしれないシステムデータために物理的ブロックの先頭からどれほどのオフセット(あるならば)を考慮に入れなければならないかである。
【0050】
ドライブ識別コマンドは、レガシーLBAインターフェイスコマンドセットの予備コードとして実現され得る。コマンドは、標準的な通信インターフェイスにおいて予備のコマンドコードあるいは割当てられていないコマンドコードを介してホストからメモリシステムに送られ得る。適切なインターフェイスの例は、ソリッドステートディスクのためのATAインターフェイス、あるいは、例えばCFまたはSDメモリカードに使われているものなどのATA関連インターフェイスを含む。メモリシステムがブロック情報およびオフセット情報の両方を提供できなければ、ホストはデフォルトのブロックサイズおよびオフセットを想定することができる。メモリシステムがドライブ識別コマンドに対してオフセット情報なしで、ブロックサイズ情報だけで応答するならば、ホストはデフォルトのオフセットを想定することができる。デフォルトのブロックサイズは、いくつかの標準的なブロックサイズのうちのどれであってもよくて、好ましくは、おそらく実際の物理的ブロックサイズであるサイズより大きく設定される。各々の物理的ブロックがホストからのデータを物理的ブロック内の第1のアドレスから開始して受け取れるということが仮定されるように、デフォルトオフセットはゼロオフセットにセットされ得る。ホストが所定の、SSDなどの内部ドライブに結合されているならば、記憶装置の能力は既に知られていて前もってプログラムされているかもしれないので、ブロックサイズおよびオフセットを決定するこのステップを行う必要はないかもしれない。しかし、たとえ内部ドライブであっても交換され得るので、ホストは、常に記憶装置の能力を確認するように構成され得る。取り外し可能なメモリシステムについて、ホストは、ドライブ識別コマンドまたは類似のメカニズムを通してブロックサイズおよびオフセットを問い合わせることができる。
【0051】
本願明細書に記載されているクラスの空きブロック166を割当て、空きブロックに書き込むためのシステムおよび方法は、いろいろな組み合わせでホストシステムおよびメモリシステムに分配された機能またはハードウェアを含み得る。図8〜11は、ホスト内のファイルとソリッドステート記憶装置とを含むシステムの階層の中の4つの異なるレベルにおいて、クラスタのブロック割当てを成し遂げるストレージアドレスマッピングまたは再マッピングアルゴリズムが実行され得る仕方の例を示す。
【0052】
図8および9のアレンジメントは、ストレージアドレスマッピングまたは再マッピング機能が記憶装置176,178にすっかり含まれる実施形態のものである。これらの始めの2つのアレンジメントでは、記憶装置176,178はレガシーホスト174と協同することができ、ホスト174の改変は不要である。逆に、図10および11に示されているアレンジメントは、ストレージアドレスマッピングまたは再マッピング機能がホスト180,182にすっかり含まれる実施形態のものである。これらの後者の2つの実施形態では、ホスト180,182は、改変を必要としないレガシー記憶装置184と協同することができる。
【0053】
図8の例では、ストレージアドレスマッピングアルゴリズムを記憶装置176のメモリマネージメント177に統合することができ、ホスト174からのLBAアドレスは、物理メモリの第1のブロックが、次のブロックへ進む前にデータで完全に満たされることとなるように、フラッシュメモリ内の物理的ブロックに直接マッピングされる。その代わりに、図9では、ストレージアドレス再マッピングメカニズムが記憶装置178において、しかし装置178のためのメモリマネージャ179とは別に、実現され得る。図9の実施例では、ホスト174からの各論理アドレスは、データを完全なブロック166を考慮して書き込むという手法を利用して、本願明細書でストレージ論理ブロックアドレス(ストレージLBA)と称されると共に本願明細書で装置論理ブロックアドレス(DLBA)とも称される第2の論理アドレスに再マッピングされ、その後にメモリマネージャ179が、DLBAアレンジメントのもとで組織されたデータを物理メモリのブロックに移す。DLBAアドレス空間は、1つの物理的メタブロックのものに等しい均一なサイズのDLBAブロックを単位として組織される。図10の実施例は、ストレージアドレス再マッピングの機能を記憶装置184からホスト180上の1つのアプリケーションに移す。この実施例では、LBAアドレスをDLBAアドレスにマッピングする機能は図9のものに類似し、主な違いは、変換が記憶装置184ではなくてホスト180上で行われることである。ホスト180は、ホストで生成されたDLBAアドレス情報と、DLBAアドレスに関連付けられたデータとの両方を記憶装置184に送る。最後に、ホストオペレーティングシステム182自体に埋め込まれたデータ割当てアレンジメントが図11に示されている。この最後の実施例では、例えばウィンドウズXPまたはビスタのオペレーティングシステムの中のNTFSファイルシステムなどの、ホスト182のファイルシステム185は、中間の論理アドレスから論理アドレスへの変換を必要とせずにクラスタの完全な論理ブロックを考慮してストレージアドレスを生成するように構成され得る。従って、図11の実施例は、LBAアドレスが、最初は、付加的なブロックを満たし始める前に完全なブロックを満たすために生成されるように、改変されたアルゴリズムをホストファイルシステムに含む。
【0054】
図8〜11のアレンジメントのいずれにおいても、データを書き込むための唯一の場所として1つの白色ブロック170が割当てられ、それは、その書き込みポインタの現在の位置において、データで、それがホストにより提供される順に、順次に満たされる。ストレージアドレスの1つのブロックが有効なデータに完全に割当てられた時、それは赤色ブロック168になる。ファイルがホストにより削除されるかあるいはファイルの部分がホストにより更新される時、赤色ブロック168内のいくつかのアドレスは最早有効なデータに割当てられていなくなることがあり、従ってそのブロックはピンク色ブロック172になる。本願明細書においてより詳しく論じられるように、ホストからデータを受け取るために割当てられる白色ブロック170は書き込みブロックと称され、フラッシング操作中にデータを受け入れるために割当てられる白色ブロックは再配置ブロックと称される。いろいろな目的のために複数の書き込みポインタが定められ得る。例えば、いろいろなアプリケーションにおいて論理アドレス空間は、アドレス範囲またはファイルサイズに基づいて複数の連続する範囲に細分され得る。論理アドレス空間の各々の独立している範囲は、ストレージアドレス空間においてそれ自身の書き込みブロックおよび関連する書き込みポインタを有するように構成され得る。論理アドレス空間アドレスランの分割は、ランシーケンスまたはファイルサイズに加えて、データのタイプに基づいて実行され得る。例えば、頻繁に更新されるNTFS MFTテーブルデータを、稀に更新されるデータから分離したいという希望があり得る。
【0055】
ストレージアドレス再マッピングアルゴリズムは、有効なデータをピンク色ブロック172から再配置ポインタとして知られている特別の書き込みポインタへ再配置すること(本願明細書ではフラッシングとも称される)による白色ブロック170の作成を管理する。ストレージアドレス空間が前述したように範囲またはファイルサイズにより細分されるならば、ストレージアドレスの各範囲は、それ自身の再配置ブロックおよび関連する再配置ポインタを持ち得る。フラッシング操作は、普通は、ピンク色ブロックを赤色ブロックおよび白色ブロックに変換するために、バックグラウンド操作として実行される。ピンク色ブロックは、その特性に応じてフラッシング操作のために選択される。再び図7を参照すると、1つの実施例では、有効なデータを有するアドレスが少ないほど、そのピンク色ブロックがフラッシングされる時に再配置を必要とするデータが少ないという結果となるので、最少量の有効なデータ(すなわち、図7において最少の陰影付きクラスタ)を有するピンク色ブロックが選択される。従って、図7の例では、ピンク色ブロックBのほうが有効なデータを有するアドレスをより少なく持っているので、ピンク色ブロックAに優先してピンク色ブロックBが選択される。他の実施例では、フラッシング操作のために選択されるピンク色ブロックは、あるしきい値より少ない量の有効なデータと関連付けられているピンク色ブロックのグループのうちの任意の1つであり得る。そのしきい値は、おそらく、ピンク色ブロックの集合全体に含まれる有効なデータの平均量より少ない。その有効なデータのしきい値量またはそれ以下のピンク色ブロックの部分集合が、ホストまたはメモリシステムがピンク色ブロックをそれから選択し得るところのリストにおいて維持され得る。例えば、しきい値要件を現在満たしている確定された数(例えば、16個)または割合(例えば、30%)のピンク色ブロックの動的リストが維持され得て、そのリスト中の選択されたピンク色ブロックが絶対最少量の有効なデータを有するか否かに関わらず、そのリストからどのピンク色ブロックでもフラッシングのために選択され得る。メモリシステムまたはホストがそれから選択するところのリストを形成するピンク色ブロックの数または割合は、固定された値またはユーザ選択可能な値であり得る。リストは、格付けされた順序で、利用可能なピンク色ブロックから絶対最少量の有効なデータを有するピンク色ブロックを代表するピンク色ブロックのグループを含むことができ、あるいは単にしきい値要件内に属するピンク色ブロックを含むことができる。
【0056】
その代わりに、あるいは組み合わされて、特定のピンク色ブロック172に付加的な陳腐化したデータを蓄積する計算された確率に基づくピンク色ブロックの選択も行われ得る。さらなる陳腐化したデータがピンク色ブロック172に蓄積される確率は、メモリにおいて最も長く存在し続けたデータは最も削除されそうもないという仮定に基づくことができる。従って、再配置ブロックであったピンク色ブロック172は、新しいホストデータを有する書き込みブロックであったピンク色ブロック172より古くから存在し続けているデータを包含する。フラッシングのためのピンク色ブロック172の選択プロセスは、近ごろ再配置ブロックであったピンク色ブロック172を先に標的にする。なぜならば、それらは、さらなるデータを削除される可能性が少なく、従ってより少量の付加的な陳腐化したデータが予期され得るからである。より新しいデータのほうが削除されてより多くの陳腐化したデータを作る可能性が大きいという仮定に基づいて、以前書き込みブロックであったピンク色ブロック172は後でフラッシングのために選択される。
【0057】
ストレージアドレス再マッピングアルゴリズムの中でのデータの流れとブロック状態変化のパターンとが図12に示されている。前述したように、ストレージアドレス再マッピング手法は、クラスタのブロックを考慮してアドレス空間を割当て、クラスタのブロック166を、他のクラスタのブロックを割当てる前に、満たし尽くす。これは、ホストからのデータが書き込まれる現在の書き込みブロックとなる1つの白色ブロックを先ず割当てることにより成し遂げられ、ホストからのデータは、それが受け取られた時間に応じて順次に書き込みブロックに書き込まれる(ステップ188において)。現在の書き込みブロック内の最後のページが有効なデータで満たされた時には、その現在の書き込みブロックは赤色ブロックとなり(ステップ190において)、新しい書き込みブロックが白色ブロックリストから割当てられる。現在の書き込みブロック内のいくつかのページが、その現在の書き込みブロックが完全にプログラムされる前に既に陳腐化していたならば、現在の書き込みブロックはピンク色ブロックに直接遷移し得るということに留意するべきである。この遷移は、明瞭性を得るために、示されていないけれども、それは、書き込みブロックからピンク色ブロックへの矢によって表され得る。
【0058】
図12のデータフローの特定の例を再び参照すると、赤色ブロック内の1つ以上のページがLBAランの削除によって陳腐化した時、その赤色ブロックはピンク色ブロックとなる(ステップ192において)。ストレージアドレス再マッピングアルゴリズムがより多くの白色ブロックの必要性を検出した時、アルゴリズムは、ピンク色ブロックが白色ブロックになるようにピンク色ブロックから有効なデータを移すフラッシング操作を開始する(ステップ194において)。ピンク色ブロックをフラッシングするために、ピンク色ブロックの有効なデータは、再配置ブロックとして指定されていた白色ブロックに順次に再配置される(ステップ194および196において)。その再配置ブロックが満たされると、それは赤色ブロックになる(ステップ198において)。書き込みブロックに関して前に記されたように、再配置ブロックは、その中のいくつかのページが既に陳腐化していたならば、ピンク色ブロックに直接遷移することもできる。この遷移は、明瞭性を得るために、示されていないけれども、図12において再配置ブロックからピンク色ブロックへの矢によって表され得る。
【0059】
図13は、代わりのデータフロー例を示し、この場合にはストレージアドレス再マッピング機能はバイナリパーティション200およびマルチレベルセル(MLC)パーティション201を有するフラッシュメモリに付けられている。MLCパーティション200におけるブロック状態変化は図12の場合と同じであるが、バイナリパーティション200におけるブロック状態変化(ステップ202〜205における)はMLCパーティション201のものとは異なる。バイナリパーティション200において、ホストから受け取られるデータは、満たされて赤色ブロックになる(202において)まで順次書き込まれる書き込みブロックにおいて受け取られる。赤色ブロックのためのページが陳腐化したならば、そのブロックはピンク色ブロックとなる(203において)。ピンク色ブロックは、新しい白色ブロックを作るために(204において)本願明細書で論じられているようにフラッシングされることができ、それらはその後、バイナリパーティションにおいて新しい書き込みブロックとして割当てられる(205において)。しかし、バイナリパーティション200に存するピンク色ブロックからの有効なデータは、赤色ブロックからの有効なデータと同様にMLCパーティション201に送られ得る。
【0060】
フラッシュメモリ7が分割されて、図13に示されているように、ホストからデータを受け取るキャッシュとして機能するバイナリパーティション200とこのバイナリパーティションからデータを受け取る主記憶領域として機能するMLCパーティション201とを有する2階層システムとなっているメモリシステム2において、図8〜11の「ホスト」はバイナリパーティションであり得る。従って、本願明細書で論じられるストレージアドレス再マッピング手法は完全にメモリシステム2の階層の中での操作に関連することができ、システムにおいて前の階層(この例ではバイナリパーティション200)はホストと見なされ、現在の階層(ここではMLCパーティション201)は記憶装置と見なされる。この関係は3以上の階層の構成を有するメモリシステムに拡張され得ることが考えられ、そこでは先行する階層はホストに類似し、現在の階層は記憶装置として扱われる。バイナリパーティションおよびMLCパーティションを利用する他の実施形態では、ホスト1は、先ずバイナリパーティション200を通過することを必要とせずにMLCパーティション201に直接書き込むことができる。
【0061】
論理から論理への変換、LBAからDLBAへの変換が記憶装置(図9)上のアプリケーションまたはホスト(図10)上のアプリケーションによって実行される、図9および10に示されているストレージアドレス再マッピングの実施例を参照して、図12の状態図に従うアドレス操作の詳細な例が図14〜17と関連して次に論じられる。システムが図12により表されるストレージアドレス再マッピングアルゴリズムに従って動作していたと仮定して、所与の時点でのLBAアドレス空間208におけるホスト空きクラスタマップとDLBAアドレス空間210における空きクラスタマップとの仮想セクションが図14に示されているように表され得る。LBAアドレス空間208において、空きクラスタ164は本質的にランダムな位置に分散している。DLBAアドレス空間210において、2つの白色ブロック170が利用可能であり、異なる数の陳腐化した(空き)クラスタ164を有する3つのピンク色ブロック172がある。
【0062】
ホストは、記憶装置に書き込むデータを次に得た時、LBAアドレス空間208を、それが利用可能である時には常に割当てる。図15は、ストレージアドレス再マッピングアルゴリズムが、利用可能な白色ブロック170のうちの、書き込みブロック212になるべき1つをどのように割当てるか、また、各LBAアドレスが書き込みブロック212において利用可能なDLBA空間内の連続するクラスタにどのようにマッピングされるかを示す。DLBA空間内の書き込みブロック212は、LBAアドレス位置に関わらず、LBAアドレスが書かれる順に書き込まれる。この例では、説明を容易にするために、ホストが空きLBAクラスタを使用した時間順序はアドレス順序と同じであると仮定されるけれども、ストレージアドレス再マッピングアルゴリズムは、書き込みブロック212内のDLBAアドレスを、LBAアドレス番号順に関わらず、LBAアドレスが使用された時間順に割当てる。データは1つ以上のDLBAランをなして書き込みブロックに書き込まれる。DLBAランは、同じLBAラン内の連続するLBAアドレスにマッピングされた連続するDLBAアドレスの集合である。DLBAランは、DLBAアドレス空間210内のブロック境界で終結させられなければならない。書き込みブロック212が満杯になった時には、1つの白色ブロック170が次の書き込みブロック212として割当てられる。
【0063】
DLBAブロックはフラッシュメモリの物理アドレス空間内のブロック214と整列し、従ってDLBAブロックサイズと物理アドレスブロックサイズとは同じである。DLBA書き込みブロック212におけるアドレスの配列も、物理アドレス空間における対応する更新ブロックの配列と同じである。この対応の故に、一般にガーベッジコレクションと称される別のデータ統合は物理的更新ブロックにおいては全く不要である。普通のガーベッジコレクション操作では、論理アドレスのブロックは、特定の範囲のLBAアドレスを論理ブロックにおいて維持するために一般的に常にリアセンブルされ、それは物理的ブロックにおいても反映される。より具体的には、普通のガーベッジコレクション操作を利用するメモリシステムが特定の物理的ブロック内の1つのセクタに対応する更新された情報のセクタを受け取る時、メモリシステムは、その更新された1つまたは複数のセクタを受け取るために物理メモリ内の1つの更新ブロックを割当て、オリジナルの物理的ブロックからの残りの有効なデータの全てを更新ブロックの残りの部分の中に統合する。このように、標準的なガーベッジコレクションは、特定のLBAアドレス範囲のためのデータのブロックを、その特定のアドレス範囲に対応するデータが常に1つの共通の物理的ブロックの中に統合されるように永続させる。以下でより詳しく論じられるフラッシング操作は、同じアドレス範囲におけるデータの統合を必要としない。その代わりに、本願明細書において開示されるフラッシング操作は、種々の物理的ブロックからのデータの集合であり得るデータの新しいブロックを作るためにアドレスマッピング(図8および11の実施例)または再マッピング(図9および10の実施例)を実行し、そこではデータの特定のLBAアドレス範囲は意図的には統合されない。
【0064】
前述したように、ストレージアドレス再マッピングアルゴリズムは、順次書き込みアルゴリズムが作動するために白色ブロックの充分な供給が利用可能であることを保証するように働く。ストレージアドレス再マッピングアルゴリズムは、データをピンク色ブロックから再配置ブロック216として知られる特別の書き込みブロックへフラッシングすることによる白色ブロックの作成を管理する(図16)。フラッシングのために現在選択されているピンク色ブロックはフラッシングブロックと称される。
【0065】
ここで図15〜16を参照すると、ブロックフラッシングプロセスの図が示されている。ストレージアドレス再マッピングアルゴリズムは、1つの白色ブロックを再配置ブロック216として指定し、これに、付加的な白色ブロックを作成するために、選択されたピンク色ブロックからデータがフラッシングされる。フラッシングブロック(図15のピンク色ブロックA)内の、赤色データとも称される有効なデータは、フラッシングブロックを白色ブロック170に転換するために、再配置ブロック216内の連続するアドレスに再配置される。物理アドレス空間218の中の対応する更新ブロック214も、フラッシングされるデータを受け入れるように割当てられる。フラッシング操作はDLBAアドレス空間210における統合を既に成し遂げているので、ホストから受け取られる新しいデータのために使用される更新ブロック214と同じく、フラッシングされるデータを受け入れるための更新ブロック214は、有効なデータを統合するためのガーベッジコレクション操作を全く必要としない。
【0066】
図17に示されているように残りのピンク色ブロックから次のフラッシングブロック(図16のピンク色ブロックB)が識別される。最少量の赤色データを有するピンク色ブロックが再びフラッシングブロックとして指定され、ピンク色ブロックの赤色データ(有効なデータ)が、開いている再配置ブロック内の連続する位置に転送される。更新ブロック214内の物理アドレスの並列割当ても行われる。再び、再配置ブロック216にマッピングされた物理的更新ブロック214においてデータ統合は不要である。ピンク色ブロックに対するフラッシング操作は、書き込みブロックとして指定された白色ブロックの消費を補うのに充分な速度で白色ブロックを作るためにバックグラウンド操作として実行される。図14〜17の例は、ホストからの新しいデータのために、またピンク色ブロックからの再配置されるデータのために、書き込みブロックおよび再配置ブロックが物理アドレス空間内のそれぞれの別々の更新ブロックと共にどのように別々に維持され得るかを示す。現在の書き込みブロックが完全にプログラムされた時にだけ、ホストから受け取られる新しいデータを関連付けるために新しい書き込みブロックを割当てるプロセスと同様に、新しい再配置ブロックは、好ましくは、前の再配置ブロックが完全にプログラムされた後に初めて割当てられる。新しい再配置ブロックは、割当て時に、好ましくは未記入容量を含むだけである、すなわち何時でも消去できる陳腐化したデータと関連付けられているだけであるか、あるいは既に消去されていて有効なデータをまったく含んでいないかである。
【0067】
前述した実施形態では、ホストからの新しいデータは、単にホストからの他の新しいデータを受け取る書き込みブロックと関連付けられ、フラッシング操作時にピンク色ブロックからフラッシングされる有効なデータは、単に1つ以上のピンク色ブロックからの有効なデータを包含する再配置ブロックの中へ移される。他の実施例では、新しいデータと再配置されるデータとは、別々の書き込みブロックおよび再配置ブロックを必要とせずに単一の書き込みブロックに転送され得る。前述したように、他の実施形態でフラッシングのためのピンク色ブロックの選択が行われ得て、それらの実施形態では、現在のピンク色ブロックについての平均量などのしきい値より下の量の赤色データと関連付けられたピンク色ブロックのリストからどのピンク色ブロックでも選択され、あるいはピンク色ブロックは利用可能なピンク色ブロックのうちの特定のランキング(ピンク色ブロックと関連付けられた有効なデータの量に基づく)を有するピンク色ブロックからのいずれであってもよい。
【0068】
フラッシング操作は、それからの「熱い」データが陳腐化されているところのブロックからの割合に「冷たい」データを、同様の割合に冷たいデータを包含する再配置ブロックに再配置する。これは、割合に熱いブロックおよび割合に冷たいブロックの別々の集団を作るという効果を有する。フラッシングされるべきブロックは、常に、最少量のデータを包含する熱いブロックとして選択される。熱いブロックの集団の作成は、再配置されなければならないデータの量を減少させることによって、メモリのストレス要因を低減する。
【0069】
一実施形態では、フラッシングブロックとして選択されるピンク色ブロックは、最も過疎のピンク色ブロックすなわち最少量の有効なデータを包含するピンク色ブロックであることができて、ホストにより実行される特定の書き込みおよび削除操作に応答して選択されない。このような仕方でのピンク色ブロックのフラッシングブロックとしての選択は、有効なデータの最小限の再配置を伴うブロックフラッシング操作の実行を可能にする。なぜならば、そのように選択されるどのピンク色ブロックも、ホストによるファイルの削除の故に最多数の未割当てデータアドレスを蓄積しているからである。
【0070】
ピンク色ブロック選択プロセスの一例は、最低数の有効なページまたはクラスタを有するピンク色ブロックの5%の中の任意のピンク色ブロックを選択することであり得る。バックグラウンドプロセスで、最低のページまたはクラスタ総数値を有する16個のピンク色ブロックのリストが構築される。ピンク色ブロック識別プロセスは、「P」個のスケジュールされたブロックフラッシング操作により費やされる時間のうちに1サイクルを完成させることができる。フラッシングブロック識別プロセスにおける1つのサイクルが図18に示されている。白色、ピンク色および他のタイプのDLBAアドレスブロックのためのブロックアドレスのリストを含むブロック情報テーブル(BIT)が、以下でより詳しく記載されているようにストレージアドレス再マッピング機能によって維持されて、前のプロセスサイクル中に識別されたブロックの集合の後でQ個のピンク色ブロックの次の集合を識別するために読まれる(ステップ220において)。ピンク色ブロックの第1の集合は、装置初期化後の第1のプロセスサイクルにおいて識別されるべきである。フラッシングブロックの利用可能性を保証するために、Qの値はPのものより大きくあるべきである。1つの実施例では、Qの値は8であり、Pは4であり得る。集合中のピンク色ブロックの各々のために有効ページ総数値はゼロにセットされる(ステップ222において)。LBAとDLBAとの関係を追跡するために維持されるストレージアドレステーブル(SAT)ページエントリは、集合中の任意のピンク色ブロックに置かれている有効データページを識別するために一度に一つずつスキャンされる(ステップ224において)。ストレージアドレステーブルは以下でより詳しく記載される。有効ページ総数値は適宜にインクリメントされる。全てのSATページがスキャンされた後、集合中のピンク色ブロックの各々についての有効ページ総数値は低有効ページ総数値のためのリスト中のピンク色ブロックについてのものと対比して評価され、リスト中のブロックは、必要ならば、集合からのブロックにより取って代わられる(ステップ226において)。ブロックフラッシング操作の完了後、次のブロックフラッシング操作のために1つのブロックが選択されるべきである。これは、リスト中の最低有効ページ総数値を有するブロックであるべきである。
【0071】
図16〜17に関して記載されているようなブロックフラッシング操作を始める前に、再配置されなければならない有効なDLBAランの位置を決定するために、選択されたブロックはマッピングされなければならない。これは、ブロックから読み出されるデータの選択されたページのヘッダの中のLBAアドレスと、これらのLBAアドレスのためのSATエントリとを使用するサーチアルゴリズムにより成し遂げられる。サーチアルゴリズムは、それが徐々に構築する既知の有効なDLBAランおよび陳腐化したDLBAランのマップを使用する。有効なDLBAランは、SATエントリがブロックにおけるその存在を明示する時、ブロックマップに加えられる。陳腐化したDLBAランは、マッピングされるブロック内のデータページヘッダにおけるLBAの1つの範囲のためのSATエントリが他の1つのブロックにおける有効なDLBAの存在を明示する時、ブロックマップに加えられる。サーチプロセスは、ブロック内の全DLBAアドレスが有効であるか陳腐化しているものとして明瞭にマッピングされるまで続行される。
【0072】
ブロックフラッシング操作では、前述したブロックマッピングプロセスで識別された有効なDLBAランの中の全てのページが、選択されたブロックから再配置ブロック内の再配置ポインタに再配置される。再配置されたDLBAのためのエントリがSATリストに記録される。有効なDLBAランおよび陳腐化したDLBAランについての探索は、図9に示されているアレンジメントの場合にはメモリシステム2のコントローラ8によって実行され、ブロックDLBAマップは、コントローラと関連付けられているRAMに格納され得る。図10のアレンジメントに関して、ホストシステム1のCPUが、探索を実行して、結果としてのブロックDLBA情報をホストシステムCPUと関連付けられたRAMに格納することができる。
【0073】
ストレージアドレス再マッピングアルゴリズムは、白色ブロックの数が所定しきい値より下に落ちた時に、データの書き込みのために割当てられ得る使用可能な白色ブロック容量が書き込みブロックへのホストデータの書き込みにより白色ブロック容量が消費されるのと同じ速度で作られることを保証するのに充分な速度でピンク色ブロックに対するフラッシング操作が実行されなければならないという原理に基づいて働く。ホストからのデータを書き込むことにより消費される書き込みブロックの中のページの数は、ブロックフラッシング操作により回復される陳腐化したページの数と釣り合わされなければならない。ブロックフラッシング操作の完了後、次のブロックフラッシング操作のために選択されたピンク色ブロックの中の陳腐化したデータのページの数が、前述したように、BITおよびSATから特定のエントリを読み出すことにより、明らかにされる。次のブロックフラッシング操作は、書き込みブロックへのこの数のデータの有効なページの書き込みの直後に始まるように予定される。
【0074】
ストレージアドレステーブル
前述したストレージアドレス再マッピングを実行するために、ストレージアドレステーブル(SAT)が、ストレージアドレス空間内のデータの位置を追跡するために使用される。SAT内の情報は、完全なフラッシュメタブロックに対する連続する更新の一部としても書き込まれる。従って、一つの実施例では、SAT情報は、ホストから受け取られるデータのために使用される書き込みブロックとは別でかつフラッシング操作のために使用される再配置ブロックとは別の書き込みブロックに書き込まれる。他の実施例では、SAT情報は、異なるグループのブロック(例えば、非SAT情報により占められるMLCフラッシュパーティションよりはむしろバイナリフラッシュパーティションの中のブロック)に格納され得る。その代わりに、SATおよび非SATデータは、同じタイプのフラッシュブロックに格納され得るが、ブロックにより分離される。さらに他の実施形態では、SATおよび非SATデータは、同じブロック内で混ぜ合わされ得る。
【0075】
SATは、図8〜10の実施形態には関連するけれども、ホストファイルシステムがデータをアドレスの論理ブロックに順次に書き込むようになっていて第1の論理アドレスから第2の論理アドレスへの変換が不要である図11とは関連しない。また、次の議論は、図9〜10のホストおよび記憶装置の構成に関連するホストLBA空間からDLBAと称される(ストレージLBAとも称される)第2のLBA空間への再マッピングに焦点を当てるけれども、この同じSAT手法が、ホストLBAと関連付けられたデータが中間の論理から論理への変換なしで物理的ブロックに直接マッピングされる図8の実施形態に応用可能である。SAT情報は、論じられた実施形態に関わらず、好ましくは記憶装置内のフラッシュメモリに格納される。ホストLBAからDLBAへの再マッピングがホスト180上で行われる図10の実施形態について、SAT情報は記憶装置184内のフラッシュメモリに格納されるべく送られる。ストレージアドレス再マッピングアルゴリズムが記憶装置内のメモリマネージャで実行される図8の実施形態について、DLBAという用語は、図9〜10の実施形態で使用される第2の論理アドレス空間を指すよりはむしろフラッシュメモリ7内の物理アドレスを指し、DLBAアドレスのブロックは物理メモリにおけるメタブロックを表す。
【0076】
ストレージアドレステーブル(SAT)は、ホストファイルシステムにより割当てられるLBAアドレスをDLBAアドレスに関連付ける相関情報を含む。より具体的には、SATは、ホストファイルシステムによって有効なデータに割当てられたLBAアドレス空間内のアドレスの1つ1つのランとストレージアドレス再マッピングアルゴリズムによって作られたDLBAアドレス空間210内のアドレスの1つ以上のランとの間のマッピングを記録するために使用される。前述したように、システムアドレス空間の単位はLBAであり、LBAランはホストファイルシステムによって有効なデータに現在割当てられているLBAアドレスの1つの連続的な集合である。LBAランは、しばしば、未割当てLBAアドレスと境を接するけれども、SATデータ構造により必要とされるならばLBAランは複数のより小さなLBAランとして処理され得る。装置アドレス空間の単位はDLBAであり、DLBAランは、同じLBAラン内の連続するLBAアドレスにマッピングされたDLBAアドレスの1つの連続的な集合である。DLBAランは、DLBAアドレス空間内のブロック境界で終結させられる。各LBAランは、SATによって1つ以上のDLBAランにマッピングされる。LBAランの長さは、それがマッピングされているDLBAランの累積長さに等しい。
【0077】
LBAランのためのSATエントリは、それがマッピングされている第1のDLBAランのためのエントリへのリンクを含む。それがまたマッピングされ得る後続のDLBAランは、このランに接して続く連続するエントリである。DLBAランは、それがマッピングされているLBAランの中のそのオフセットアドレスへの、LBAランの絶対LBAアドレスへのではない、逆方向リンクを含む。1個のLBAアドレスは、1つのLBAランの中での1つのLBAオフセットとして定義され得る。SATは、LBAランにマッピングされている各DLBAランの先頭に対応するLBAオフセットを記録する。従って、1個のLBAアドレスに対応する1個のDLBAアドレスは、1つのDLBAランの中での1つのDLBAオフセットとして識別され得る。SATにおけるLBAランは有効なデータのランだけのためのものであり得るけれども、SATは、他の実施例では、有効なデータおよび陳腐化したデータの両方のためのLBAランを記憶するようにも構成され得る。
【0078】
SATは、SATブロックとして知られるLBAアドレスのブロックの中で実現される。SATは、1つの確定された最大数のSATブロックを含み、1つの確定された最大数の有効なSATページを包含する。従って、SATは、1つの指定された最大数のSATブロックのために、それが索引付けすることのできる1つの最大数のDLBAランを有する。1つの最大数のSATブロックが確定されるけれども、SATのエントリの数は、ホストにより割当てられたLBAの断片化に順応するので、SATは、最大数まで自動的にスケーラブルである可変サイズテーブルである。従って、ホストが高度に断片化されたLBAを割当てるならば、SATは、ホストが断片化の程度のより低いLBAのグループをデータに割当てる場合よりも多くのエントリを含む。従って、ホストLBAの断片化の程度が低くなれば、SATのサイズは小さくなる。SATは固定された数の論理アドレスをかたくなに追跡し更新するよりはむしろホストLBAアドレスの1つのランを1つのエントリにおいて1つ以上のDLBAランにマッピングするので、断片化の程度が低ければマッピングするべき別々のランは少なくなり、別々のランが少なければSATのエントリは少なくなる。
【0079】
SATのラン対ランマッピングアレンジメントの故に、ホストLBAアドレスの1つのランは2つ以上のDLBAランにマッピングされ、その場合、ホストLBAランは有効なデータに割当てられた連続する論理アドレスの1つの集合であり、DLBA(あるいはストレージLBA)ランは同じメタブロックの中の、同じホストLBAランにマッピングされているDLBAアドレスの1つの連続的な集合である。SAT索引付けおよびマッピング構造の階層が図19に示されている。LBAラン230および対応するDLBAラン232が示されている。LBA対DLBAマッピング情報はSATページ234に包含される。LBA対SATページ索引付け情報がSAT索引ページ236に包含され、マスターページ索引238は、図10の実施例ではホストプロセッサと関連付けられたRAMに、図8〜9の実施例ではコントローラ8と関連付けられたRAMにキャッシュされる。
【0080】
SATは、普通は複数のSATブロックを含むけれども、SAT情報はSAT書き込みブロックとして現在指定されている単一のブロックに書き込まれるだけであり得る。他の全てのSATブロックはすっかり書き込まれ、有効なページおよび陳腐化したページの組み合わせを包含し得る。SATページはホストLBAアドレス空間の1つの可変範囲の中の全てのLBAランのためのエントリを、それらがマッピングされている装置アドレス空間内のランのためのエントリと共に包含する。多数のSATページが存在し得る。SAT索引ページは、ホストLBAアドレス空間の1つのより大きな範囲の中の各々の有効なSATページの位置への1つの索引を含む。少数のSAT索引ページが存在し、それは通例1である。SAT内の情報は、単一のSAT書き込みブロック内の次の利用可能な位置に更新されたページを再書き込みし、そのページの前のバージョンを陳腐化したものとして扱うことによって改変される。従って、多数の無効なページがSAT内に存在し得る。SATブロックは、ホストデータについて前に記載されたものと類似する、ページを書き込みかつブロックをフラッシングするためのアルゴリズムによって管理される。
【0081】
SATブロック
各SATブロックは、SAT情報の記憶に専用されるDLBAアドレスの1つのブロックである。SATブロックはテーブルページに分割され、それらに1つのSATページ234またはSAT索引ページ236が書き込まれ得る。SATブロックは、有効なSATページ234、有効なSAT索引ページ236および陳腐化したページの任意の組み合わせを包含し得る。図20を参照すると、サンプルSAT書き込みブロック240が示されている。データは、インクリメンタルなSAT書き込みポインタ242により定められる連続する位置でSAT書き込みブロック240に書き込まれる。データは、SAT書き込みブロック240として指定されている単一のSATブロックに書き込まれ得るにすぎない。前に記載されたホストデータ書き込みブロック(例えば、図15〜17の212)についてと同様に、SAT書き込みブロック240がすっかり書き込まれた時、1つの白色ブロックが新しいSAT書き込みブロック240として割当てられる。SATページ位置は、そのSATブロックの中でのそのシーケンス番号によりアドレス指定される。
【0082】
SATページ
SATページ234は、SATにおけるマッピング情報の最小の更新可能な単位である。更新されたSATページ234は、SAT書き込みポインタ242により定められる位置に書き込まれる。SATページ234はインクリメントするLBAアドレスを有するLBAランの集合についてのマッピング情報を包含するけれども、引き続くLBAランのアドレス同士は連続していなくてもよい。1つのSATページ234内のLBAアドレスの範囲は他のどのSATページ234内のLBAアドレスの範囲とも重なり合わない。SATページ234はSATブロックの完全な集合の全体にわたって無制限に分散させられ得る。LBAアドレスの任意の範囲のためのSATページ234が任意のSATブロックの中にあり得る。SATページ234は、索引バッファフィールド244、LBAフィールド246、DLBAフィールド248および制御ポインタ250を含み得る。パラメータバックアップエントリは、また、揮発性RAMに格納されているいくつかのパラメータの値を包含する。
【0083】
SATページ234の中のLBAフィールド246は、LBAアドレスの1つの範囲の中で、データ記憶のために割当てられた連続するLBAアドレスのランのためのエントリを包含する。1つのSATページ234がまたがるLBAアドレスの範囲は、他のどのSATページ234がまたがるLBAエントリの範囲とも重なり合わない。LBAフィールドは可変長のフィールドであって、可変数のLBAエントリを包含する。LBAフィールド246の中に、SATページ234により索引付けされるLBAアドレスの範囲の中のどのLBAランのためにも1つのLBAエントリ252が存在する。1つのLBAランは1つ以上のDLBAランにマッピングされる。図21に示されているように、LBAエントリ252は次の情報、すなわち、ラン中の第1のLBA254、セクタ数で表したLBAランの長さ256、および、LBAランがマッピングされている第1のDLBAランの、同じSATページ234のDLBAフィールドの中でのDLBAエントリ番号258を含む。
【0084】
SATページ234の中のDLBAフィールド248は、同じSATページ234内のLBAフィールドの中のLBAランにマッピングされたDLBAアドレスの全てのランのためのエントリを包含する。DLBAフィールド248は、可変長のフィールドであって、可変数のDLBAエントリ260を包含する。DLBAフィールド248の中で、同じSATページ234のLBAフィールド246の中の1つのLBAランにマッピングされているどのDLBAランについても1つのDLBAエントリ260が存在する。各DLBAエントリ260は、図22に示されているように、次の情報、すなわち、ラン内の第1のDLBAアドレス262と、第1のDLBAアドレスがマッピングされているLBAランにおけるLBAオフセット264とを含む。どのSATページ234にもその一部分として書かれるけれども最も最近に書かれたSATページ234においてのみ有効なままであるSATページ/索引バッファフィールドは、SAT索引エントリ266を包含する。
【0085】
SAT索引エントリ266は、関連するSAT索引ページ236において有効なエントリを現在持っていないSAT内のどのSATページ234のためにも存在する。SAT索引エントリは、SATページ234が書かれるたびに作成または更新され、関連するSAT索引ページ236が更新される時に削除される。それは、SATページ234により索引付けされた第1のLBA268、SATページ234により索引付けされた最後のLBA270、SATページ234を包含するSATブロック番号272、およびSATブロック内のSATページ234のページ番号274を包含する。SAT索引フィールド276は、固定された数のSAT索引エントリ278のための容量を有する。この数は、SATページ234およびSAT索引ページ236が書かれ得る相対的頻度を決定する。1つの実施例では、この固定された数は32であり得る。
SATページフィールドポインタ250は、LBAフィールドの先頭からDLBAフィールドの先頭までのオフセットを確定する。それはLBAエントリの数としてのオフセット値を包含する。SATページ234内のパラメータバックアップエントリは、揮発性RAMに記憶されているパラメータの値を包含する。これらのパラメータ値は、パワーサイクル後にRAM(図8〜9の実施例ではコントローラ8と関連付けられ、図10の実施例ではホストCPUと関連付けられる)内の情報の初期化の間に使用される。それらは、最も最近に書かれたSATページ234においてのみ有効である。
【0086】
SAT索引ページ
SAT索引ページ236の集合は、SAT内のどの有効なSATページ234の位置への1つの索引も提供する。個々のSAT索引ページ236は、LBAアドレスの1つの範囲に関連する有効なSATページの位置を定めるエントリ278を包含する。1つのSAT索引ページ236がまたがるLBAアドレスの範囲は、他のどのSAT索引ページ236がまたがるLBAアドレスの範囲とも重なり合わない。エントリは、それらが関連するSATページのLBAアドレス範囲値に従って順序付けされる。SAT索引ページ236は、固定された数のエントリを包含する。SAT索引ページ236は、SATブロックの集合全体にわたって無制限に分散させられ得る。LBAアドレスの任意の範囲のためのSAT索引ページ236は、任意のSATブロックの中にあり得る。SAT索引ページ236は、SAT索引フィールドおよびページ索引フィールドを含む。
【0087】
SAT索引フィールド276は、SAT索引ページ236がまたがるLBAアドレス範囲の中の全ての有効なSATページのためのSAT索引エントリを包含する。SAT索引エントリ278は、単一のSATページ234に関連し、次の情報、すなわち、SATページ234により索引付けされた第1のLBA、SATページ234を包含するSATブロック番号、およびSATブロック内のSATページ234のページ番号を包含する。ページ索引フィールドは、SAT内の全ての有効なSAT索引ページ236のためのページ索引エントリを包含する。1つのページ索引エントリが、SAT内のどの有効なSAT索引ページ236のためにも存在し、次の情報、すなわち、SAT索引ページにより索引付けされた第1のLBA、SAT索引ページを包含するSATブロック番号、およびSATブロックの中のSAT索引ページのページ番号を包含する。ページ索引エントリは、最も最近に書かれたSAT索引ページ236においてのみ有効である。
【0088】
一時的SATデータ構造
図19に示されているアドレスマッピングの長期間記憶のためのSAT階層の一部分ではないけれども、SATを更新するための階層的手続きの中で付加的なデータ構造が使用され得る。1つのそのような構造は、LBAエントリと、SATページ234にまだ書かれていないLBAランに対する更新操作またはブロックフラッシング操作から生じた新しいアドレスマッピングのための新しいエントリのための対応するDLBAマッピングとを含むSATリストである。SATリストはRAM内の揮発性構造であり得る。SATリスト内のエントリは、SATページ更新中にそれらがSATページ234に書かれる時にクリアされる。
【0089】
テーブルページ
テーブルページは、SATブロック内のDLBAアドレス空間の固定されたサイズの単位であり、これは1つのSATページ234または1つのSAT索引ページ236を記憶するために使用される。テーブルページの最小サイズは1ページであり、最大サイズは1メタページであり、ここでページおよびメタページは、物理メモリにおけるページおよびメタページに対応するDLBAアドレス空間の単位である。
SATにおけるエントリサイズ
SATページ234およびSAT索引ページ236の中のエントリのサイズが表1に示されている。
【表1】
【0090】
アドレス変換
SATは、ホストファイルシステムのLBAアドレスに対応するDLBAアドレスの位置を迅速に突き止めるために有益である。一実施形態では、有効なデータにマッピングされているLBAアドレスだけがSATに含まれる。SATページ234は、一SATページ234から別のSATページへとLBA範囲同士が重なり合わないようにLBA順に配列されるので、所望のデータに向かって迅速に進むために単純なサーチアルゴリズムが使用され得る。このアドレス変換手続きの一例が図24に示されている。ターゲットLBA280が先ず(ストレージアドレス再マッピングの実施例がそれぞれ図9のように構成されているかまたは図10のように構成されているかにより)コントローラまたはプロセッサによって受け取られる。他の実施形態では、SATが有効なデータおよび陳腐化したデータにマッピングされたLBAアドレスを含んで、データが有効であるかそれとも陳腐化しているかを追跡するということが考慮され得る。
【0091】
図24は、アドレス変換手続きを示すほかに、最後に書かれたSAT索引ページからのページ索引フィールドと最後に書かれたSATページからの索引バッファフィールドとがどのように構成され得るかも示す。図24の実施例では、これら2つのフィールドは、記憶装置またはホストのRAMなどの揮発性メモリで一時的に維持される。最後に書かれたSAT索引ページのページ索引フィールドは、どのSAT索引ページへのポインタをも含む。索引バッファフィールドは、索引ページにまだ書き込まれていない近ごろ書かれたSATページのための索引エントリの集合を包含し得る。
【0092】
対応するDLBAアドレスとのターゲットLBAアドレスについてのマッピング情報は、そのターゲットアドレスを含む1つの範囲のLBAアドレスについての全マッピング情報を包含する特定のSATページ234において保持される。アドレス変換手続きの第1の段階は、このターゲットSATページを識別して読むことである。図24を参照すると、ターゲットLBAのためのSAT索引エントリが存在するか否かを判定するために、最後に書かれたSATページの索引バッファフィールドのキャッシュされているバージョンに対して二分探索が実行される(ステップ282において)。ターゲットSATページが近ごろ再書き込みされているけれどもターゲットSATページの新しい位置を記録したSAT索引エントリを組み込んだSAT索引ページがまだ書かれていなければ、1つのエントリが存在する。ターゲットLBAのための索引エントリが発見されたならば、それはターゲットSATページの位置を定義し、このページが読み出される(ステップ284において)。
【0093】
ステップ282でターゲットLBAのためのSAT索引エントリが発見されなければ、ターゲットLBAのためのSAT索引エントリの位置を突き止めるために、最後に書かれたSAT索引ページのページ索引フィールドのキャッシュされたバージョンに対して二分探索が実行される(ステップ286において)。ステップ286で発見されたターゲットLBAのためのSAT索引エントリは、ターゲットLBAを包含するLBAアドレス範囲のためのSAT索引ページの位置を定める。このページが読み出される(ステップ288において)。ターゲットLBAのためのSAT索引エントリの位置を突き止めるために二分探索が実行される(ステップ290において)。ターゲットLBAのためのSAT索引エントリは、ターゲットSATページの位置を定める。このページが読み出される(ステップ292において)。
【0094】
ターゲットSATページがステップ284またはステップ292で読まれた時、LBAからDLBAへの変換が次のように実行され得る。ターゲットLBAを組み込んだターゲットLBAランのためのLBAエントリの位置を突き止めるために、LBAフィールドに対して二分探索が実行される。ターゲットLBAランの中でのターゲットLBAのオフセットが記録される(ステップ294において)。フィールドポインタ内の情報は、二分探索のためのLBAフィールドの長さを、また、LBAフィールドの先頭に対してのDLBAフィールドの先頭をも定める(ステップ296において)。ステップ294で発見されたLBAエントリは、LBAランにマッピングされている第1のDLBAエントリのDLBAフィールドの中での位置を定める(ステップ298において)。ステップ294で判定されたオフセットは、ステップ298で位置が突き止められたより多くのDLBAエントリのうちの1つと共に、ターゲットDLBAアドレスを判定するために使用される(ステップ300において)。
【0095】
他の1つの実施形態では、有効なデータと関連付けられているLBAアドレスの各ランのためにSATにおいて別々のLBAエントリを生成する代わりに、LBAアドレスブロックが、各LBAアドレスブロックがSAT上の単一のエントリであるように、SATにおいてマッピングされ得る。この実施形態では、単なる個々のLBAランよりはむしろLBAアドレス空間内の完全なLBAアドレスブロックがSATにおいて記録され得る。この実施例におけるLBAエントリは、LBAアドレスブロックがマッピングされているDLBAアドレス空間内のDLBAランの数と、同じSATページ内の第1のDLBAランへのポインタとを記録する単一のエントリである。記憶装置に格納されているデータの断片化の程度によって、最低で1つのDLBAランあるいは最高でLBAアドレスブロック内のクラスタの数までに、1つのLBAアドレスブロックがマッピングされ得る。
【0096】
LBAアドレスブロックのための対応するDLBAエントリは、各DLBAランのDLBAブロックおよびアドレスオフセットの両方およびその対応するLBAオフセットを記録する。有効なデータと関連付けられたLBAランだけが記録される、各LBAランのために別々のLBAエントリを記録する前に論じられたSATのバージョンとは違って、LBAアドレスブロック内の全てのLBAランが記録される。従って、有効なデータに現在割当てられていないLBAアドレスブロック内のLBAランも、有効なデータに割当てられているLBAランと同じく記録される。SATページのDLBAエントリ部分において、LBAアドレスの割当てられていない集合の先頭を示すLBAオフセットは、DLBAアドレス空間内のデフォルト値とペアにされる。このデフォルト値は未割当てアドレスを表す。同じSAT構造および機能の全体が、図19〜20に関して論じられた基本的なSAT階層と同様に、LBAアドレスブロックマッピングの実施例に当てはまるけれども、SATページは、個々のLBAラン対DLBAラン情報よりはむしろLBAアドレスブロック対DLBAランのマッピング情報を表す。また、この実施例ではSAT索引ページは、LBAアドレスブロック対SATページのマッピング情報を記憶する。
【0097】
SAT例
例として、図19〜23の個々のLBAラン対DLBAランのマッピングを用いる、図9または10の論理対論理ストレージアドレス再マッピング手法を用いるデータ書き込みプロセスが図25に示されている。図25において、LBAアドレス空間302とDLBAアドレス空間304とが時間A〜Dについて示されている。時間Aにおいて、データがホストによって3つの別々のLBAランに、L1、L2およびL3の順に、書かれる。各データランは、LBA空間302内で他から分離されている。3つのLBAランは、次に、時間Aにおいて示されているようにDLBAアドレス空間内のブロックに、それらが受け取られた時間順に、再マッピングされる。この例は、DLBAアドレス空間304内のクラスタの第1のブロックが現在の書き込みブロックであったということを仮定している。従って、LBAアドレスランL1はDLBAアドレスランD1と、書き込みブロックとして指定された他の1つの白色ブロックの中のD2とに分割される。同様に、D2の後に続いて、L2のLBAアドレス空間ランはDLBAアドレス空間ランD3に変換される。最後のDLBAアドレス空間ランL3は、次に、クラスタのブロックをDLBAアドレス空間ランD4で完成させて新しい書き込みブロックをDLBAアドレス空間ランD5で開始させるために使用される。以下の表Aを参照すると、これまでに記載されたLBA対DLBA変換は、時間Aにおいて、各LBAランにポインタと、LBAアドレス空間におけるクラスタ長さと、DLBAポインタとが与えられているSATを生じさせる。
【0098】
SATのDLBAエントリ側に、1つのLBAランに対応する各DLBAが記載されている。この例では、単一のL1のLBAランがDLBAアドレス空間内の2つの別々のブロックに分割されているので、2つのDLBAランがある。各DLBAランの後に、第1LBAクラスタおよびDLBAマーカーからのオフセットが提供されるように、LBAオフセット数が提供されている。マーカーDLBA2は、LBAランL1の中に5クラスタであるアドレスを有して続いているので、そのオフセットは5である。LBA2マーカーおよびLBA3マーカーは続いてSATのLBAエントリ側にLBA順に記載されている。従って、DLBAアドレス空間内のデータランはL1,L2およびL3に対応し、L1,L2およびL3はこれらの別々のランが書かれた順序を表すけれども、表のLBAエントリ側はLBA時間順ではなくてLBAアドレス順に編成されている。
【表A】
【0099】
再び図25の、時間Bのところを参照すると、付加的なLBAアドレスランL4がL2に付加されている。ランL2およびL4は実際には単一のLBAランを形成するけれども、この例では明瞭性を得るために別々に識別される。L4のためのデータは、部分的に満たされた第3の書き込みブロックにおいてD5内の最後のエントリの後にDLBAアドレスランD6として書かれる。表Bに示されているように、時間B後のSATは、表のLBAエントリ側の末尾に単にLBA4マーカーを付け加え、DLBAエントリ側のDLBA7を指す。
【表B】
【0100】
図5の時間Cのところの活動を参照すると、ホストは、そのデータがLBAアドレスランL1およびL2に書かれていたところの1つまたは複数のファイルを削除している。DLBAアドレス空間304において、L1はD1およびD2に対応し、L2はD3に対応する。これらのランは今では陳腐化したデータに関連しているので、この例では前は赤色ブロックであった2つのアドレスブロックは今では有効な(赤色)データと陳腐化した(白色)データとの混合の故にピンク色ブロックである。以下の表Cに示されているように、SATはそれに応じて更新される。有効なLBAランだけが残るように全ての陳腐化したLBAランが除去される。LBAアドレス空間ランL3およびL4だけが残るので、LBAエントリはマーカーLBA2およびLBA4および対応するDLBAポインタを含むだけである。SATのDLBAエントリ側も、有効なデータのために必要とされるDLBAポインタを含むだけである。
【表C】
【0101】
図25に示されている時間の最後のスナップショット、時間Dにおいて、オリジナルのLBAアドレス空間ランL3は、ホストによってLBAアドレス空間L5のところの情報で部分的に更新されている。対応するDLBAアドレス空間変換はD4およびD5の陳腐化した部分に対する変換であって付加的な白色空間が示され、次に、L5の新しいLBAランがDLBAアドレス空間内の現在の書き込みブロックの末尾に、ブロックが完成するまで、順次に付加され、そしてLBAアドレス空間ランの残りがDLBAアドレスに変換され得るように新しい書き込みブロックが識別される。これは、1つの書き込みブロックを完成させるDLBAランD7と、新しい書き込みブロックを開始させるD8とを生じさせる。以下の表Dを参照すると、表は再び更新されていて、LBA空間302のLBA2ポインタは依然としてDLBA空間304のDLBAポインタのうちの第1のものを指しているが、DLBAエントリ側は、L3と対応するDLBAアドレスの残りと対応するDLBAランを開始させる付加的な3つのDLBAポインタを含む。LBA空間302においてL4に対して変更は行われていなかったので、LBA4と対応する、L4のためのエントリは、同じままである。図25の例はクラスタの連続的なブロックを示すように思われるということに留意するべきである。クラスタの連続的なブロックが利用可能であるということはあり得るけれども、DLBAアドレス空間のブロック同士が間にある1つ以上のブロックによって分離されるということが予期される。連続的なDLBAアドレス空間ブロックは、単に説明の便宜のために提供されている。
【表D】
陳腐化したSAT情報を削除して新しい白色ブロックを再使用のために作成するために、データのためのDLBAアドレスブロックについて前に記載されたものと類似するSATフラッシング方式が実行される。
【0102】
ストレージアドレス再マッピングアルゴリズムは、白色ブロックの数が所定しきい値より少なくなった時、書き込みブロックへのホストデータの書き込みにより白色容量が消費されるのと同じ速度で、データ書き込みのために割当てられ得る使用可能な白色容量が作られることを保証するのに充分な速度でピンク色ブロックに対してフラッシング(再配置とも称される)操作が行われなければならないという原理に基づいて作用する。データ書き込みのために割当てられ得る使用可能な白色クラスタ容量は、白色ブロック内の容量に、フラッシング操作中にデータが書き込まれ得る最配置ブロックの中の白色クラスタ容量を加えたものである。
【0103】
フラッシング操作のために選択されたピンク色ブロックの白色クラスタ容量が各ピンク色ブロックのx%を占めるとすれば、1つのピンク色ブロックに対するフラッシング操作により作られる新しい使用可能な容量は、そのピンク色ブロックから作られる1つの完全な白色ブロックから、そのフラッシングされるブロックからのデータの再配置によって再配置ブロックにおいて消費される一ブロックの(100−x)%を差し引いたものである。従って、1つのピンク色ブロックに対するフラッシング操作は、1つの白色ブロックのx%の新しい使用可能な容量を作る。従って、書かれるホストデータにより満たされる各書き込みブロックについて、フラッシュ操作は100/x個のピンク色ブロックに対して実行されなければならず、再配置されなければならないデータは(100−x)/x個のブロックである。従って、プログラムされるセクタの、ホストにより書かれるセクタに対する比は,1+(100−x)/xとしておおよそ定義される。
【0104】
平均的なピンク色ブロックにおける白色クラスタ容量の割合は、使用されている総装置容量の割合と赤色ブロックであるデータを包含するブロックの割合とにより決定される。例えば、装置が80%満たされていて、データを包含するブロックの30%が赤色ブロックであるならば、ピンク色ブロックは26.2%の白色クラスタ容量を含む。装置におけるLBAアドレスにおけるデータ削除の一様でない分布が、いくつかのピンク色ブロックが白色容量の平均%の2倍を有するという結果を生じさせることがありそうである。従って、この例では、フラッシング操作のために選択されるピンク色ブロックは52.4%白色容量を有することになり、すなわち、x=52.4となり、ホストにより書かれるデータのセクタあたりのプログラムされるセクタの比は1.90となる。
【0105】
どのピンク色ブロックをフラッシングするかを決定する時には、それがホストデータピンク色ブロックであってもSATピンク色ブロックであっても、ストレージアドレス再マッピングアルゴリズムは、NTFSにより書かれる$bitmapファイルを監視することによって未割当てアドレスの指定を検出することができる。フラッシング操作は、2つの方法で予定され得る。好ましくは、フラッシング操作は、バックグラウンド操作として働き、従って、ホストデータ書き込み速度が影響を受けないようにSSDまたは他の携帯可能なフラッシュメモリ装置がアイドルである間だけ機能する。その代わりに、フラッシング操作は、ホストがデータを書いている時にアクティブであるフォアグラウンド操作で利用され得る。フラッシング操作がフォアグラウンド操作として構成されるならば、これらの操作は、ホストの活動が生じた時にあるいは「flush cache(フラッシュキャッシュ)」コマンドがSSDまたは携帯可能なフラッシュメモリ装置の潜在的パワーダウンを意味する時に、自動的にサスペンドさせられ得る。フォアグラウンドおよびバックグラウンドフラッシング操作選択は動的決定であり得て、フォアグラウンド操作は、記憶装置のアイドル状態中に達成され得るよりも高いフラッシング速度が要求される時に実行される。例えば、ホストまたは記憶装置は、記憶装置が満杯になるまで一定のホストデータ書き込み速度を維持するようにフラッシング速度が制御されるように、フォアグラウンドおよびバックグラウンドのフラッシング操作の間でトグルすることができる。フォアグラウンドフラッシング操作は、ホストデータ書き込み操作と交互配置され得る。例えば、ホストインターフェイスで維持されている活動の故に不十分なアイドル時間が利用可能であるならば、ブロックフラッシング操作を実行するためのデータページの再配置はホストコマンドに応じて時々爆発的に装置活動と交互配置され得る。
【0106】
SAT更新手続き
SATデータ構造の中の要素は、表2に示されている階層的手続きを用いて更新される。
【表2】
【0107】
表2に記されているように、DLBAラン更新を除けば、特定の構造のためのSAT更新は、SAT階層においてより低い階の構造における活動によってトリガされる。SATリストは、完全なDLBAランと関連付けられたデータが書き込みブロックに書かれるたびに更新される。許される最大の数のエントリがSATリストに存在する時に1つ以上のSATページが更新される。SATページが更新される時、SATリストからの1つ以上のエントリがSATページに付加され、SATリストから除去される。SATリストが満杯である時に更新されるSATページはページの数個の異なるグループに分けられることができて、単一の操作で単一のグループが更新されなければならないに過ぎない。これは、SAT更新操作がホストからのデータ書き込み操作を遅延させ得る時間を最短にするのを助けることができる。この場合、SATリストから更新されたSATページのグループにコピーされたエントリだけがSATリストから除去される。更新されたSATページのグループのサイズは、ホストシステム1のメモリシステム2にアクセスする能力を妨げないポイントにセットされ得る。1つの実施例ではグループサイズは4SATページであり得る。
【0108】
SAT索引バッファフィールドは、最も最近に書かれたSATページにおいて有効である。それは、SATページが書かれるたびに付加的なプログラミングなしで更新される。最後に、許される最大の数のエントリがSAT索引バッファに存在する時、SAT索引ページが更新される。SAT索引ページ更新中に、SAT索引バッファから1つ以上のエントリがSAT索引ページに付加されて、SAT索引バッファから除去される。SATページの更新に関して前に記されたように、更新されなければならないSAT索引ページをページの数個の異なるグループに分けることができ、単一の操作で単一のグループが更新されなければならないに過ぎない。これは、SAT更新操作がホストからのデータ書き込み操作を遅延させ得る時間を最短にする。SAT索引バッファから更新されたSAT索引ページのグループにコピーされたエントリだけがSAT索引バッファから除去される。更新されるSAT索引ページのグループのサイズは、1つの実施例では4ページであり得る。
【0109】
SATページまたはSAT索引ページがまたがるLBA範囲の中で必要とされるエントリの数は可変であり、時間と共に変化し得る。従って、SAT内のページがオーバーフローしたり、あるいはページの内容が非常に少なくなったりすることは稀なことではない。これらの事態はSATにおいてページを分割し、また合併するための方式によって処理され得る。
【0110】
SATページまたはSAT索引ページの更新中にエントリが付加されるべきであるけれども、その変更を受け入れるために充分な未使用スペースがページにおいて利用できない時には、そのページは2つに分割される。1つの新しいSATページまたはSAT索引ページが導入され、以前に満杯になっていたページと新しい空のページとのために、それらを半ば満たすいくつかのエントリを各々に与えるLBA範囲が決定される。次に両方のページが、可能ならば、単一のプログラミング操作で、書かれる。ページがSATページである場合、両方のページのためのSAT索引エントリは、最後に書かれたSATページの索引バッファフィールドに含まれる。ページがSAT索引ページである場合、ページ索引エントリは、最後に書かれたSAT索引ページのページ索引フィールドに含まれる。
【0111】
隣接するLBA範囲を有する2つ以上のSATページ、または2つのSAT索引ページの内容が少ない時、それらのページは合併されて単一のページになることができる。合併は、その結果として生じる単一のページが80%より大きくは満たされない時に、開始される。新しい単一のページのためのLBA範囲は、別々の合併されるページがまたがる範囲によって定められる。合併されるページ同士がSATページである場合、新しいページと合併されるページ同士とのためのSAT索引エントリは、最後に書かれるSATページの索引バッファフィールドにおいて更新される。ページ同士がSAT索引ページである場合、ページ索引エントリは、最後に書かれるSAT索引ページのページ索引フィールドにおいて更新される。
【0112】
パワーサイクル後、すなわちパワーが除去され回復された後に、RAM内のSATリストを、それがパワーサイクルの前にそうであったところの状態と正確に同じ状態に復元することが必要である。これは、最後のSATページ更新以来書かれている付加的なデータを、データヘッダ内のLBAアドレス情報から識別するために全ての書き込みブロックおよび再配置ブロックをスキャンすることによって成し遂げられ得る。最後のSATページ更新の時のこれらのブロックの位置と、それらの中での書き込みポインタおよび再配置ポインタの位置も、最後に書かれたSATページの1つのフィールドに記録される。従って、スキャンニングは、これらのポインタの位置から開始されるだけでよい。
【0113】
SATブロックをフラッシングすること
SATブロックをフラッシングするプロセスは、ホストから受け取られたデータについて前に記載されたプロセスと類似するけれども、SATブロックだけに作用する。ストレージアドレス再マッピング書き込みおよびフラッシングアルゴリズムによりもたらされるSATに対する更新は、SATブロックを図26に示されているブロック状態の間で遷移させる。先ず、白色ブロックリストからの白色ブロックがSAT書き込みブロックとして割当てられる(310において)。SAT書き込みブロックの最後のページが割当てられた時、ブロックは赤色SATブロックになる(312において)。その中のいくつかのページが既に陳腐化していればSAT書き込みブロックがピンク色SATブロックへの遷移を行なうということもあり得る。しかし、明瞭性を目的として、その遷移は図26には示されていない。SATページまたはSAT索引ページが更新される時に赤色SATブロックの中の1つ以上のページは陳腐化され、その赤色SATブロックはピンク色SATブロックになる(314において)。選択されたピンク色SATブロックに対するフラッシング操作が完了した時、そのピンク色SATブロックは白色ブロックになる(316において)。
【0114】
どのSATブロックがフラッシング手続きを受けることになるかを選択するプロセスが次に記述される。少数の有効なページまたはクラスタを包含するSATブロックが、フラッシングされるべき次のSATブロックとして選択される。ブロックは、最低数の有効なページを有するSATブロックのうちの5%の中の1つであるべきである。ブロックの選択は、最低の有効ページ総数値を有する16個のSATブロックのリストを構築するバックグラウンドプロセスにより成し遂げられ得る。このプロセスは、好ましくは、M個の予定されたSATブロックフラッシング操作により費やされる時間のうちに1サイクルを完了するべきである。
【0115】
どのSATブロックを次にフラッシングするかを決定するためのバックグラウンドプロセスの1サイクルのうちに行われる活動の一例が図27に示されている。先ず、前のプロセスサイクル中に特定されたブロックの集合の後で、次の、N個のSATブロックの集合を特定するためにブロック情報テーブル(BIT)がスキャンされる(ステップ318において)。SATブロックの最初の集合は、装置初期化後の第1のプロセスサイクルの間に特定されるべきである。Nの値は、そのアプリケーションのために適宜選択されることができて、好ましくは、SATフラッシングブロックの利用可能性を保証するためにMのために選択される値より大きい。一例として、Mは4でNは8であり得る。集合中の各々のSATブロックのために有効ページ総数値はゼロにセットされる(ステップ320において)。次に、集合中の任意のSATブロックに置かれている有効なSAT索引ページを識別するために、キャッシュされているページ索引フィールドにおいてページ索引エントリがスキャンされる(ステップ322において)。それに応じて有効ページ総数値がインクリメントされる。集合中の任意のSATブロックに置かれている有効なSATページを識別するために、各SAT索引ページにおいてSAT索引エントリが順番にスキャンされる(ステップ324において)。それに応じて有効ページ総数値がインクリメントされる(ステップ326において)。有効ページ総数値を判定するためにページ索引およびSAT索引ページがスキャンされた後、集合中のSATブロックの各々についての有効ページ総数値は、低い有効ページ総数値のためのリストの中のSATブロックについてのものと対比されて評価され、リスト中のブロックは、必要ならば、集合からのブロックと取り替えられる(ステップ328において)。SATブロックフラッシング操作が予定されるべき時、リスト中の最低有効ページ総数値を有するブロックが選択される。
【0116】
SATブロックフラッシング操作では、全ての有効なSAT索引ページおよびSATページが、選択されたブロックからSAT書き込みポインタ242に再配置される。ページ索引フィールドは、最後に書かれたSAT索引ページにおいてのみ更新される。SATブロックの数がほぼ一定に保たれるために、SATページおよびSAT索引ページに対する更新操作によって消費されるSAT内のページの数は、SATブロックフラッシング操作によって回復される陳腐化したSATページおよびSAT索引ページの数と釣り合わされなければならない。次のSATフラッシング操作のために選択されるSATブロック内の陳腐化した情報のページの数は、前に図27に関連して論じられたように決定される。次のSATブロックフラッシング操作は、前のSATフラッシング操作以来、情報の同数の有効なページがSATに書き込まれた時に行われるように予定され得る。
【0117】
ブロック情報テーブル(BIT)
ブロック情報テーブル(BIT)は、白色ブロック、ピンク色ブロック、およびSATブロックのためにブロックアドレスの別々のリストを記録するために使用される。BIT書き込みブロックは、他の全てのBITブロックが置かれている場所に関する情報を包含する。1つの実施例では、書き込みブロック、再配置ブロックまたはSATブロックとして割当てられるべきブロックの選択を可能にするために白色ブロックのリストをストレージアドレス再マッピングアルゴリズムおよび関連するシステムが維持することが望ましい。ブロックフラッシング操作の対象となるべきピンク色ブロックおよびSATブロックの選択を可能にするために、ピンク色ブロックのリストを維持することも望ましい。これらのリストは、その構造がSATのものを厳密に反映するBITにおいて維持される。
【0118】
BITデータ構造
BITは、BITブロックとして知られているDLBAアドレスのブロックの中で実現される。ブロックリスト情報はBITページの中に格納され、「DLBAブロック対BITページ」索引付け情報はBIT索引ページの中に格納される。BITページおよびBIT索引ページは、同じBITブロックの中で任意の順序で混合され得る。BITは複数のBITブロックからなり得るけれども、BIT情報は、BIT書き込みブロックとして現在指定されている単一のブロックにだけ書き込まれ得るに過ぎない。他の全てのBITブロックは、先にすっかり書き込まれていて、有効なページおよび陳腐化したページの組み合わせを包含し得る。陳腐化したBIT情報のページを削除して再利用のための白色ブロックを作るために、前述したSATブロックのためのものと同一のBITブロックフラッシング方式が実行される。
【0119】
BITブロック
図28に示されているBITブロックは、BIT情報の格納に専用されるDLBAアドレスのブロックである。それは、BITページ342およびBIT索引ページ344を包含し得る。BITブロックは、有効なBITページ、有効なBIT索引ページ、および陳腐化したページの任意の組み合わせを包含し得る。BIT情報は、BIT書き込みブロック340として指定されている単一のBITブロックに書き込まれ得るにすぎない。BIT情報は、BIT書き込みブロック340において、インクリメンタルなBIT書き込みポインタ346によって定められる連続する位置に書き込まれる。BIT書き込みブロック340がすっかり書かれた時、1つの白色ブロックが新しいBIT書き込みブロックとして割当てられる。BITを構成するブロックは、それぞれそのBITブロック位置により識別されるが、それは、それらの、装置におけるブロックの集団の中でのブロックアドレスである。BITブロックはテーブルページに分割され、それらの中にBITページ342またはBIT索引ページ344が書き込まれ得る。BITページ位置は、そのBITブロックの中でのそのシーケンス番号によってアドレス指定される。BIT情報を、非BIT情報からフラッシュメモリの異なるブロックに隔離することができ、非BIT情報とは異なるタイプのブロック(例えば、バイナリ対MLC)に隔離することができ、あるいは1つのブロックの中で非BIT情報と混合することができる。
【0120】
BITページ342は、BITにおけるブロックリスト情報の最小更新可能単位である。更新されたBITページは、BIT書き込みポインタ346により定められる位置に書き込まれる。BITページ342は、1つの定められた範囲の中のDLBAブロックアドレスを有する白色ブロック、ピンク色ブロックおよびSATブロックのリストを包含するけれども、どのリスト内の引き続くブロックのブロックアドレスも連続している必要はない。BITページ内のDLBAブロックアドレスの範囲は、他のどのBITページ内のDLBAブロックアドレスの範囲とも重なり合わない。BITページは、BITブロックの集合全体にわたって無制限に分散させられ得る。DLBAアドレスの任意の範囲のためのBITページが任意のBITブロックに存在し得る。BITページは、白色ブロックリスト(WBL)フィールド348、ピンク色ブロックリスト(PBL)フィールド350、SATブロックリスト(SBL)フィールド352および索引バッファフィールド354に加えて、2つの制御ポインタ356を含む。パラメータバックアップエントリも、揮発性RAMに格納されているいくつかのパラメータの値を包含する。
【0121】
BITページ342の中のWBLフィールド348は、BITページ342に関連するDLBAブロックアドレスの範囲の中で、白色ブロックリスト内のブロックのためのエントリを包含する。BITページ342がまたがるDLBAブロックアドレスの範囲は、他のどのBITページ342がまたがるDLBAブロックアドレスの範囲とも重なり合わない。WBLフィールド348は、可変長のフィールドであって、可変数のWBLエントリを包含する。WBLフィールドの中で、BITページ342により索引付けられるDLBAブロックアドレスの範囲の中のどの白色ブロックについても1つのWBLエントリが存在する。WBLエントリは、そのブロックのDLBAアドレスを包含する。
【0122】
BITページ342の中のPBLフィールド350は、BITページ342に関連するDLBAブロックアドレスの範囲の中で、ピンク色ブロックリスト内のブロックのためのエントリを包含する。BITページ342がまたがるDLBAブロックアドレスの範囲は、他のどのBITページ342がまたがるDLBAブロックアドレスの範囲とも重なり合わない。PBLフィールド350は、可変長のフィールドであって、可変数のPBLエントリを包含する。PBLフィールド350の中で、BITページ342により索引付けられるDLBAブロックアドレスの範囲の中のどのピンク色ブロックについても1つのPBLエントリが存在する。PBLエントリは、そのブロックのDLBAアドレスを包含する。
【0123】
BITページの中のSBL352フィールドは、BITページ342に関連するDLBAブロックアドレスの範囲の中で、SATブロックリスト内のブロックのためのエントリを包含する。BITページ342がまたがるDLBAブロックアドレスの範囲は、他のどのBITページ342がまたがるDLBAブロックアドレスの範囲とも重なり合わない。SBLフィールド352は、可変長のフィールドであって、可変数のSBLエントリを包含する。SBLフィールド352の中で、BITページ352により索引付けられるDLBAブロックアドレスの範囲の中のどのSATブロックについても1つのSBLエントリが存在する。SBLエントリは、そのブロックのDLBAアドレスを包含する。
【0124】
索引バッファフィールド354は、どのBITページ342についてもその一部分として書かれるが、最も最近に書かれたBITページにおいてのみ有効なままである。BITページ342の索引バッファフィールド354はBIT索引エントリを包含する。関連するBIT索引ページ344において有効なエントリを現在有しないBIT内のどのBITページ342についても1つのBIT索引エントリが存在する。BIT索引エントリは、BITページ342が書かれるたびに作成または更新され、関連するBIT索引ページ344が更新される時に削除される。BIT索引エントリは、BITページ342により索引付けられる範囲の第1のDLBAブロックアドレスと、BITページ342により索引付けられる範囲の最後のDLBAブロックアドレスと、BITページ342を包含するBITブロック位置と、BITブロック内のBITページのBITページ位置とを包含し得る。索引バッファフィールド354は、暫定的に32と定められる、固定された数のBIT索引エントリのための容量を有する。この数は、BITページ342およびBIT索引ページ344が書かれ得る相対頻度を決定する。
【0125】
BITページ342の制御ポインタ356は、WBLフィールド348の先頭からの、PBLフィールド350の先頭およびSBLフィールド352の先頭のオフセットを定める。BITページ342は、リストエントリの数としてのオフセット値を包含する。
【0126】
BIT索引ページ
BIT索引ページ344の集合は、BIT内のどの有効なBITページ342の位置にも1つの索引を提供する。個々のBIT索引ページ344は、DLBAブロックアドレスの1つの範囲に関連する有効なBITページの位置を定めるエントリを包含する。BIT索引ページがまたがるDLBAブロックアドレスの範囲は、他のどのBIT索引ページ344がまたがるDLBAブロックアドレスの範囲とも重なり合わない。エントリは、それらが関連するBITページ342のDLBAブロックアドレス範囲値に従って順序付けされる。BIT索引ページ344は、固定された数のエントリを包含する。
【0127】
BIT索引ページは、BITブロックの集合全体にわたって無制限に分散させられ得る。DLBAブロックアドレスの任意の範囲のためのBIT索引ページ344が任意のBITブロックに存在し得る。BIT索引ページ344は、BIT索引フィールド358およびページ索引フィールド360を含む。BIT索引フィールド358は、BIT索引ページ344がまたがるDLBAブロックアドレス範囲の中の全ての有効なBITページのためのBIT索引エントリを包含する。BIT索引エントリは、単一のBITページ342に関連し、BITページにより索引付けられる第1のDLBAブロックと、BITページを包含するBITブロック位置と、BITブロック内のBITページのBITページ位置とを包含し得る。
【0128】
BIT索引ページ344のページ索引フィールド360は、BIT内の全ての有効なBIT索引ページのためのページ索引エントリを包含する。1つのBITページ索引エントリが、BIT内のどの有効なBIT索引ページ344のためにも存在し、BIT索引ページにより索引付けられる第1のDLBAブロックと、BIT索引ページを包含するBITブロック位置と、BITブロック内のBIT索引ページのBITページ位置とを包含し得る。
【0129】
BITを維持すること
BITページ342は、WBL348、PBL350およびSBL352にエントリを付加するかまたは削除するために更新される。数個のエントリに対する更新をRAM内のリストに蓄積することができ、そして、リストが1つのパワーサイクル後にRAMに書き戻され得るとすれば、BITにおいて単一の操作で実行することができる。BIT索引バッファフィールドは、最も最近に書かれたBITページにおいて有効である。それは、BITページが書かれるたびに付加的なプログラミングなしで更新される。BIT索引ページが更新される時、BIT索引バッファからの1つ以上のエントリがBIT索引ページに付加され、BIT索引バッファから削除される。許容される最大の数のエントリがBIT索引バッファに存在する時に1つ以上のBIT索引ページ344が更新される。
【0130】
BITページ342またはBIT索引ページ344がまたがるDLBAブロック範囲の中で必要とされるエントリの数は可変であって、時間と共に変化し得る。従って、BIT内のページがオーバーフローしたり、あるいはページの内容が非常に少なくなったりすることは稀なことではない。これらの事態はBITにおいてページを分割し、また合併するための方式によって処理され得る。
【0131】
BITページ342またはBIT索引ページ344の更新中にエントリが付加されるべきであるけれども、その変更を受け入れるために充分な未使用スペースがページにおいて利用できない時には、そのページは2つに分割される。1つの新しいBITページ342またはBIT索引ページ344が導入され、以前に満杯になっていたページと新しい空のページとのために、それらを半ば満たすいくつかのエントリを各々に与えるDLBAブロック範囲が決定される。次に両方のページが、可能ならば、単一のプログラミング操作で、書かれる。ページがBITページ342である場合、両方のページのためのBIT索引エントリが、最後に書かれるBITページの索引バッファフィールドに含まれる。ページがBIT索引ページ344である場合、ページ索引エントリが、最後に書かれるBIT索引ページのページ索引フィールドに含まれる。
【0132】
逆に、隣接するDLBAブロック範囲を有する2つ以上のBITページ342、または2つのBIT索引ページ344の内容が少ない時には、それらのページは合併されて単一のページになることができる。合併は、その結果として生じる単一のページが80%より大きくは満たされない時に開始される。新しい単一のページのためのDLBAブロック範囲は、別々の合併されるページがまたがる範囲によって定められる。合併されるページがBITページである場合、新しいページと合併されるページ同士とのためのBIT索引エントリは、最後に書かれるBITページの索引バッファフィールドにおいて更新される。ページがBIT索引ページである場合、ページ索引エントリは、最後に書かれるBIT索引ページのページ索引フィールドにおいて更新される。
【0133】
BITブロックをフラッシングすること
BITブロックをフラッシングするプロセスは、SATブロックについて前に記載されたものを厳密にたどるので、ここでは反復しない。
【0134】
制御ブロック
他の実施形態では、BITおよびSAT情報は、同じブロックの異なるページに格納され得る。制御ブロックと称されるこのブロックは、1ページのSATまたはBIT情報が制御ブロックにおいて1ページを占めるように構造化され得る。制御ブロックは整数個のページを有するページ単位からなることができ、各ページ単位は、制御ブロックの中でのそのシーケンス番号によってアドレス指定される。ページ単位は、物理メモリにおいて1ページの最小サイズと1メタページの最大サイズとを有することができる。制御ブロックは、有効なSATページ、SAT索引ページ、BITページ、BIT索引ページ、および陳腐化したページの任意の組み合わせを包含し得る。従って、別々のSATブロックおよびBITブロックを有するよりはむしろ、SATおよびBIT情報の両方が同じ1つまたは複数のブロックに格納され得る。前述した別々のSAT書き込みブロックおよびBIT書き込みブロックと同様に、制御情報(SATまたはBIT情報)は単一の制御書き込みブロックに書き込まれ得るに過ぎず、制御書き込みポインタは制御データを受け入れるための次の順次位置を特定し、1つの制御書き込みブロックがすっかり書かれた時には1つの書き込みブロックが新しい制御書き込みブロックとして割当てられる。さらに、制御ブロックは、各々、メモリシステム2においてバイナリブロックの集団の中でそのブロックアドレスにより識別され得る。制御ブロックは、前述した分離されているSATブロックおよびBITブロックに関して前に記載されたのと同様な仕方で新しい未記入容量を生成するためにフラッシングされることができるが、違いは、1つの制御ブロックのための1つの再配置ブロックが有効なSAT情報またはBIT情報に関連するページを受け入れ得るということである。フラッシングされるべき適切なピンク色制御ブロックの選択およびタイミングは、SATフラッシングプロセスについて前に記載されたのと同じ仕方で実行され得る。
【0135】
LBA割当てステータスを監視すること
ストレージアドレス再マッピングアルゴリズムは、ホストにより有効なデータに現在割当てられているホストLBAアドレスだけのためにアドレスマッピング情報を記録する。従って、このマッピング情報を正確に維持するために、クラスタがホストによってデータ記憶から割当て解除される時を決定することが必要である。
【0136】
一実施形態では、ホストファイルシステムからのコマンドは、割当て解除されたクラスタに関する情報をストレージアドレス再マッピングアルゴリズムに提供することができる。例えば、マイクロソフト コーポレイションのビスタオペレーティングシステムで使用されるべく「Dataset(データセット)」コマンドが提案されている。「ATA8−ACS2のための被削除データ提案の通知 (Notification of Deleted Data Proposal for ATA8-ACS2)」のための提案がマイクロソフトによりT13に提示されている。この新しいコマンドは、被削除データの通知を提供するように意図されている。単一のコマンドが、2GBまでの陳腐化したデータに相当する、連続するLBAアドレスに存するデータの削除を装置に通知することができる。
【0137】
NTFSメタデータを解釈すること
トリムコマンドなどのホストファイルシステムコマンドを利用することができなければ、LBA割当てステータスを、NTFSにより書かれる$bitmapシステムファイルにおける情報変更を追跡することによって監視することができ、ボリューム上の全てのクラスタの割当てステータスのビットマップを包含する。パーソナルコンピュータ(PC)において$bitmap変更を追跡する動作の一例が次に論じられる。
【0138】
パーティションブートセクタ
パーティションブートセクタは、パーティション上のセクタ0である。バイトオフセット0x30におけるフィールドは、表3の例のように、マスターファイルテーブル(MFT)の先頭のための論理クラスタ番号を包含する。
【表3】
【0139】
MFTにおける$bitmapレコード
$bitmapと称されるシステムファイルは、ボリューム上の全クラスタの割当てステータスのビットマップを包含する。$bitmapファイルのためのレコードは、MFTにおいてレコード番号6である。MFTレコードは1,024バイトの長さを有する。従って、$bitmapレコードは、MFTの先頭に関して十進12セクタのオフセットを有する。前の例では、MFTはクラスタ0xC4FD2、あるいは十進法で806866から始まるが、それは十進法でセクタ6454928である。従って、$bitmapファイルレコードは十進法でセクタ6454940から始まる。
【0140】
(記載されている例では)$bitmapレコードの中には次の情報が存在する。バイトオフセット0x141から0x142までのところのフィールドは、表4の例のように、$bitmapファイルのための第1のデータ属性の、クラスタ数で表される長さを包含する。
【表4】
【0141】
バイトオフセット0x143から0x145までのところのフィールドは、表5の例のように、$bitmapファイルについての第1のデータ属性の先頭のクラスタ番号を包含する。
【表5】
【0142】
バイトオフセット0x147から0x148までのところのフィールドは、表6の例のように、$bitmapファイルについての第2のデータ属性の、クラスタ数で表された長さを包含する。
【表6】
【0143】
バイトオフセット0x149から0x14Bまでのところのフィールドは、表7の例のように、$bitmapファイルについての第1のデータ属性の先頭と第2のデータ属性の先頭との間のクラスタの数を包含する。
【表7】
【0144】
$bitmapファイルのためのデータ属性
$bitmapフィルのためのデータ属性の中のセクタは、ボリューム内の全てのクラスタの割当てステータスのビットマップを、論理クラスタ番号の順に、包含する。「1」は、フィルシステムによって1つのクラスタがデータ記憶に割当てられていることを意味し、「0」は、1つのクラスタが空いていることを意味した。ビットマップ内の各バイトは、8クラスタ、あるいは十進64セクタの論理範囲に関連する。ビットマップ内の各セクタは、0x1000(十進4096)クラスタ、あるいは0x8000(十進32768)セクタの論理範囲に関連する。ビットマップ内の各クラスタは0x8000(十進32768)クラスタ、あるいは0x40000(十進262144)セクタの論理範囲に関連する。
【0145】
クラスタ割当てステータスを維持すること
ホストからの書き込み操作が$bitmapファイルのためのデータ属性の中のセクタに向けられるたびに、そのセクタの前のバージョンが記憶装置から読み出されなければならず、そのデータが、ホストによって今書かれたばかりのデータと比較されなければならない。「1」状態から「0」状態にトグルしている全てのビットが識別されなければならず、ホストによって割当て解除されているクラスタの対応する論理アドレスが決定されなければならない。提案されているトリムコマンドなどのコマンドが、あるいはNTFSメタデータの追跡が、ホストによるクラスタ割当て解除があったことを示すたびに、ストレージアドレステーブル(SAT)は、指定されたクラスタのためのアドレスの割当て解除を記録するために更新されなければならない。
【0146】
論理対物理マッピング
前の議論は、ホストLBAアドレス空間からDLBAアドレス空間(ストレージLBA空間とも称される)への、論理対論理マッピングが望ましいストレージアドレス再マッピングの実行に主として焦点を当てている。前に記されたように、マッピングアルゴリズムが図9〜10のようにそれぞれ記憶装置またはホストの上の別のアプリケーションに組み込まれるよりはむしろ記憶装置のメモリマネージャに組み込まれている図8の実施形態は、ホストLBAからメモリシステム2内の物理アドレスにマッピングする。図8の実施形態では、前に論じられたDLBAは、中間の論理アドレスであるよりはむしろ置き換えられた物理的メモリアドレスである。図8のアレンジメントにおけるストレージ再マッピングアルゴリズムは、メモリシステム2またはホスト1(それぞれ、図9および10)上の別のアプリケーションであるよりはむしろメモリシステム2内のメモリコントローラ8の一部である。
【0147】
図8の論理対物理マッピングアレンジメントと図9〜10の論理対論理マッピングアレンジメントとの違いは、図29〜32と関連して記され得る。図29は、論理対物理ストレージアドレス再マッピングアルゴリズムが物理メモリ内の利用可能な白色ブロックのうちの、書き込みブロック412になるべき1つをどのように割当てるかを示すとともに、LBAアドレス空間408内の各LBAアドレスが、書き込みブロック412において利用可能な物理アドレス空間410内の順次位置にどのようにマッピングされるかを示す。物理アドレス空間410内の書き込みブロック412は、LBAアドレス位置に関わらず、LBAアドレスが受け取られる順に書かれる。この例では、図15の並列論理対論理マッピングの例の場合と同様に、説明を容易にするために、ホストが空きLBAクラスタを使用した時間順はアドレス順と同じであるということが仮定されるけれども、ストレージアドレス再マッピングアルゴリズムは、書き込みブロック412内の物理アドレスを、LBAアドレス番号順に関わらず、LBAアドレスが使用される時間順に、割当てる。データは、書き込みブロックにおいて1つ以上のデータランに書き込まれる。データランは、同じLBAラン内の連続するLBAアドレスにマッピングされた連続する物理アドレスの集合である。データランは、物理アドレス空間410内のブロック境界で終わる。1つの書き込みブロック412が満杯になる時、1つの新しい白色ブロックが次の書き込みブロック412として割当てられる。従って、中間の論理アドレスを割当てるよりはむしろ、論理対物理アレンジメントは、入ってくるデータを、それが物理メモリに直接書かれる時に再順序付けする。
【0148】
図9〜10の論理対論理マッピングアレンジメントと同様に、図8の論理対物理アレンジメントのためのストレージアドレス再マッピングアルゴリズムは、シーケンシャルな書き込みアルゴリズムが動作するために充分な白色ブロックの供給が利用可能であることを保証するように作用する。ストレージアドレス再マッピングアルゴリズムは、ピンク色ブロックから再配置ブロック416にデータをフラッシングすることによる白色ブロックの作成を管理する(図30)。フラッシングのために現在選択されているピンク色ブロックはフラッシングブロックと称される。
【0149】
図29〜30に示されているように、ブロックフラッシングプロセスの図が示されている。ストレージアドレス再マッピングアルゴリズムは1つの白色ブロックを再配置ブロック416として指定し、これに、付加的な白色ブロックを作るために、選択されたピンク色ブロックからデータがフラッシングされる。データは、フラッシングブロックを白色ブロック418に変換するために、フラッシングブロック(図29のピンク色ブロックA)内の赤色データとも称される有効なデータを包含する位置から、再配置ブロック416内の連続するアドレスに再配置される。図31に示されているように、次の1つのフラッシングブロック(図30のピンク色ブロックB)が、残りのピンク色ブロックから特定される。最少の有効データ(最少数の赤色データ)を有するピンク色ブロック、あるいは平均量より少ない有効データまたはある所定しきい値量未満を現在有するピンク色ブロックのリストから選択された1つのピンク色ブロックが再びフラッシングブロックとして指定され、そのピンク色ブロックの赤色データ(有効データ)は、開いている再配置ブロック416内の連続する物理的位置に、有効データがピンク色ブロック内に存在する順に、転送される。ピンク色ブロックに対するフラッシング操作は、書き込みブロックとして指定された白色ブロック418の消費を補うために充分な速度で白色ブロック418を作るためにバックグラウンド操作として実行される。図29〜31の例は、ホストからの新しいデータのため、またピンク色ブロックから再配置されるデータのために、書き込みブロックおよび再配置ブロックがどのようにして別々に維持され得るかを示す。他の実施例では、別々の書き込みブロックおよび再配置ブロックを必要とせずに、新しいデータと再配置されるデータとは単一の書き込みブロックに転送され得る。
【0150】
論理対物理再マッピングのためのSAT
SATは、図8の論理対物理アレンジメントのためにも使用される。SATは、ここでは、論理対論理ストレージアドレス再マッピングアレンジメントと同じ基本構造を有し、DLBA(ストレージLBAとも称される)アドレス情報はデータランの物理アドレスにより取って代わられる。論理対物理アレンジメントのためのSAT索引付けおよびマッピング構造の階層が図32に示されている。LBA432および対応するデータラン430が示されている。LBA対物理マッピング情報はSATページ434に包含されている。LBA対SATページ索引付け情報はSAT索引ページ436に包含され、マスターページ索引438は、コントローラ8と関連付けられたRAMにキャッシュされる。SATは、複数のSATブロックを含むことができ、あるいはSAT書き込みブロックと現在称されている単一のブロックに書き込まれるだけであることができる。他の全てのSATブロックはすっかり書き込まれ、有効なページと陳腐化したページとの組み合わせを包含し得る。陳腐化したSAT情報のページを削除して再使用のための白色ブロックを作るために、ホストデータのブロックのためのものと同様の、SATブロックフラッシング方式が実行される。
【0151】
前に記載された論理対論理SATマッピングと同様に、図の論理対物理アレンジメントにおけるSATは、SATのエントリの数がホストにより割当てられたLBAの断片化に順応するので、最大数まで自動的にスケーラブルである可変サイズのテーブルである。従って、ホストが高度に断片化されたLBAを割当てれば、SATは、より少なく断片化されたLBAのグループをデータに割当てる場合よりも多くのエントリを含む。従って、ホストLBAの断片化の程度がより低くなれば、SATのサイズは小さくなる。断片化の程度が低くなればマッピングするべき別々のランは少なくなり、別々のランが少なくなればSATのエントリが少なくなる。なぜならば、SATは、一定数論理アドレスを厳格に追跡し更新するよりはむしろ、1つのエントリにおいてホストLBAアドレスの1つのランを1つ以上のデータラン(物理アドレスラン)にマッピングするからである。ホストLBAアドレスの1つのランを2つ以上のデータランにマッピングすることができ、ここでホストLBAランは有効なデータに割当てられた連続する論理アドレスの1つの集合であり、データ(または物理アドレス)ランは同じメタブロックの中にあって同じホストLBAランにマッピングされた物理アドレスの1つの連続的な集合である。
【0152】
SATブロック
各SATブロックは、SAT情報の格納に専用される物理アドレスの1つのブロックである。SATブロックはテーブルページに分割され、その中にSATページ434またはSAT索引ページ436が書き込まれ得る。SATブロックは、有効なSATページ434、有効なSAT索引ページ436および陳腐化したページの任意の組み合わせを包含し得る。図33を参照すると、SAT書き込みブロック440が示されている。データは、SAT書き込みブロック440において、インクリメンタルなSAT書き込みポインタ442により定められる順次位置に書き込まれる。データは、SAT書き込みブロック440として指定されている単一のSATブロックに書き込まれ得るにすぎない。データは、インクリメンタルなSAT書き込みポインタ442により定められる順次位置としてSAT書き込みブロック440に書き込まれる。前に記載されたホストデータ書き込みブロックの場合と同様に(例えば、図15〜17のアイテム212)、SAT書き込みブロック440がすっかり書き込まれると、1つの白色ブロックが新しいSAT書き込みブロック440として割当てられる。SATページ位置は、そのSATブロックの中でのそのシーケンシャルな番号によってアドレス指定される。SATブロックを非SAT情報のブロックと混ぜ合わせることができ、あるいは、SATブロックをバイナリフラッシュブロックなどの1つの特別のタイプのブロックにおいてさらに分離することができる一方で、非SAT情報はMLCフラッシュブロックに格納される。他の実施形態では、SAT情報を同じブロック内で非SAT情報と混ぜることができる。
【0153】
SATページ
SATページ434は、SATにおけるマッピング情報の最小の更新可能な単位である。更新されたSATページ434は、SAT書き込みポインタ442により定められる位置に書き込まれる。SATページ434は、インクリメントするLBAアドレスを有するLBAランの1つの集合のためのマッピング情報を包含するけれども、引き続くLBAラン同士のアドレスは連続していなくてもよい。1つのSATページ434におけるLBAアドレスの範囲は、他のどのSATページ434におけるLBAアドレスの範囲とも重なり合わない。SATページ434は、SATブロックの完全な集合の全体にわたって無制限に分散させられ得る。LBAアドレスの任意の範囲のためのSATページ434が任意のSATブロックに存在し得る。SATページ434は、索引バッファフィールド444、LBAフィールド446、データランフィールド448および制御ポインタ450を含むことができる。パラメータバックアップエントリも、揮発性RAMに格納されているいくつかのパラメータの値を包含する。
【0154】
SATページ434の中のLBAフィールド446は、LBAアドレスの1つの範囲の中の、データ格納のために割当てられている連続するLBAアドレスのランのためのエントリを包含する。1つのSATページ434がまたがるLBAアドレスの範囲は、他のどのSATページ434がまたがるLBAエントリの範囲とも重なり合わない。LBAフィールドは、可変長のフィールドであって、可変数のLBAエントリを包含する。LBAフィールド446の中で、SATページ434により索引付けされたLBAアドレスの範囲中のどのLBAランのためにも1つのLBAエントリ452が存在する。1つのLBAランは1つ以上のデータランにマッピングされる。
【0155】
図34〜36に示されているように、論理対物理アレンジメントにおけるSATのためのエントリは、いくつかの態様において論理対論理アドレス再マッピングアレンジメントから異なっている。図34を参照すると、LBAエントリ452は、次の情報、すなわち、それがマッピングされるデータエントリの数454と、LBAランがマッピングされる第1のデータランの、同じSATページ434内のデータフィールド448の中での、データエントリ番号458とを包含する。
【0156】
SATページ434の中のデータフィールド448は、同じSATページ434内のLBAフィールド446の中のLBAランにマッピングされているデータアドレスの全てのランのためのエントリを含む。データフィールド448は、可変長のフィールドであって、可変数のデータエントリ460を包含する。データフィールド448の中で、同じSATページ434内のLBAフィールド246の中のLBAランにマッピングされているどのデータランのためにも1つのデータエントリ460が存在する。各データエントリ460は、図35に示されているように、次の情報、すなわち、ラン内の第1のデータアドレス462と、その第1のデータアドレスがマッピングされているLBAランにおけるLBAオフセット464とを包含する。どのSATページ434の一部としても書き込まれるけれども、最も最近に書き込まれたSATページ434においてのみ有効なままであるSATページ/索引バッファフィールドは、SAT索引エントリ466を包含する。
【0157】
関連するSAT索引ページ436において有効なエントリを現在有しないSAT内のどのSATページ434についても1つのSAT索引エントリ466が存在する。図36を参照すると、SAT索引エントリは、SATページ434が書き込まれるたびに作成または更新され、関連するSAT索引ページ436が更新される時に削除される。それは、SATページ434により索引付けされる第1のLBA468と、SATページ434により索引付けされる最終LBA470と、SATページ434を包含するSATブロック番号472と、SATブロックの中のSATページ434のページ番号474とを包含する。SAT索引フィールド476は、固定された数のSAT索引エントリ466のための容量を有する。この数は、SATページ434とSAT索引ページ436とが書き込まれ得る相対頻度を決定する。一つの実施例では、この固定された数は32であり得る。
【0158】
SATページフィールドポインタ450は、LBAフィールドの先頭からデータフィールドの先頭までのオフセットを定める。それは、LBAエントリの数としてのオフセット値を包含する。SATページ434内のパラメータバックアップエントリは、揮発性RAMに格納されているパラメータの値を包含する。これらのパラメータ値は、パワーサイクル後、図8〜9の実施例ではコントローラ8と関連付けられたRAM内の情報の初期化中に使用される。それらは、最も最近に書き込まれたSATページ434においてのみ有効である。
【0159】
他の1つの実施形態では、有効なデータと関連付けられたLBAアドレスの各ランのためにSATにおいて1つの別のLBAエントリを生成する代わりに、各LBAアドレスブロックがSAT上の単一のエントリであるようにLBAアドレスブロックがSATにおいてマッピングされ得る。図37に示されているように、LBAアドレス空間内の1つの完全なLBAアドレスブロック480がSATにおいて記録され得る。この実施例におけるLBAエントリ482は、LBAアドレスブロック480がマッピングされている物理アドレス空間内のデータランの数484と、同じSATページ内の第1のデータランへのポインタ486とを記録した単一のエントリである。LBAアドレスブロックは、記憶装置に格納されているデータの断片化の程度により、最低で1データランあるいは最高でLBAアドレスブロック内のクラスタの数まで、マッピングされ得る。
【0160】
図37の例では、LBAアドレスブロック480は8個のLBAランを含み、ここで4個のランは有効なデータ(LBAオフセットL1,L3,L4およびL6から始まる陰影付き部分)に割当てられ、4個のランは未割当てアドレスラン(LBAオフセット0,L2,L5およびL7から始まる白色部分)である。LBAアドレスブロック480のための対応するデータエントリ488は、物理的ブロックおよびアドレスオフセット(P1〜P3)により示されるデータランの物理アドレス490を対応するLBAオフセット492に関連付ける。有効なデータと関連付けられたLBAランだけが記録される、各LBAランについて別々の1つのLBAエントリを記録する前に論じられたSATのバージョンとは違って、LBAアドレスブロック内のどのLBAランも記録される。従って、有効なデータに現在割当てられていないLBAアドレスブロック480内のLBAランが、有効なデータに割当てられているLBAランと同様に記録される。図37に示されているSATページのデータエントリ部分488において、LBAアドレスの未割当て集合の先頭を標示するLBAオフセットは、物理アドレス空間における「FFFFFFFF」値とペアにされる。これは、未割当てアドレスのためのリザーブ値を示すデフォルト十六進数を表す。前に記載された同じ全体としてのSAT構造および機能が、図32に関して論じられた基本的なSAT階層と同じく、LBAアドレスブロックマッピングの実施例に当てはまるけれども、SATページは、個々のLBAラン対データラン情報よりはむしろLBAアドレスブロック対データランマッピング情報を表す。また、SAT索引ページは、この実施例ではLBAアドレスブロック対SATページマッピング情報を記憶する。
【0161】
SAT索引ページ
図34〜36を再び参照すると、SAT索引ページ436の集合は、SAT内のどの有効なSATページ434の位置に対しても1つの索引を提供する。個々のSAT索引ページ436は、LBAアドレスの1つの範囲に関連する有効なSATページの位置を定めるエントリ466を包含する。SAT索引ページ436がまたがるLBAアドレスの範囲は、他のどのSAT索引ページ436がまたがるLBAアドレスの範囲とも重なり合わない。エントリは、それらが関連するSATページのLBAアドレス範囲値に従って順序付けされる。SAT索引ページ436は、固定された数のエントリを包含する。SAT索引ページ436は、SATブロックの完全な集合の全体にわたって無制限に分散させられ得る。LBAアドレスの任意の範囲のためのSAT索引ページ436が任意のSATブロックに存在し得る。SAT索引ページ436は、1つのSAT索引フィールドおよび1つのページ索引フィールドを含む。
【0162】
SAT索引フィールド476は、SAT索引ページ436がまたがるLBAアドレス範囲の中の全ての有効なSATページのためのSAT索引エントリを包含する。SAT索引エントリ466は、単一のSATページ434に関連し、次の情報、すなわち、SATページ434により索引付けされる第1のLBA、SATページ434を包含するSATブロック番号、およびSATブロック内のSATページ434のページ番号を包含する。ページ索引フィールドは、SAT内の全ての有効なSAT索引ページ436のためのページ索引エントリを包含する。ページ索引エントリは、SAT内のどの有効なSAT索引ページ436のためにも1つ存在して、次の情報、すなわち、SAT索引ページにより索引付けされる第1のLBA、SAT索引ページを包含するSATブロック番号、およびSATブロックの中のSAT索引ページのページ番号を包含する。
【0163】
一時的SATデータ構造
論理対論理ストレージアドレス再マッピングについて記載される一時的SATデータ構造は、テーブルページおよびアドレス変換と同様に、物理アドレスが前の検討における論理アドレス(DLBA)への言及に取って代わることを除いて、図8の論理対物理アレンジメントについてと同じである。例えば、図24のSAT変換手続きと、図25および表A〜DのSAT作成および更新の例とは、第2の論理アドレス空間(DLBA)が物理アドレスまたはアドレスランと置き換えられる時に、図8の論理対物理アレンジメントにも当てはまる。同様に、図8の論理対物理アレンジメントは同じBIT構造を利用するけれども、そこではBITは論理(DLBA)アドレスよりはむしろ物理アドレスを参照する。
【0164】
ホスト論理ブロックアドレスの改変された割当て
図11の構成はまさにホストファイルシステムの中で図8〜10の特徴の一部を統合しているけれども、図11のストレージアドレスマッピングアレンジメントは第1の論理アドレス空間から第2の論理アドレス空間に変換しない。その代わりに、ホストLBAアドレスを割当てる最初のホストファイルシステム方法は、断片化を低減するために改変される。
【0165】
図11のアドレスマッピングは、図8〜10の構成により作られるものに類似する物理メモリにおけるデータマッピングを作る。クラスタの見地からホストLBA空間を知っているに過ぎない典型的なホストファイルシステムとは違って、この実施形態のホストファイルシステム10はメモリシステム2における物理的ブロックのサイズに対応するブロックサイズを知っている。ホストLBAアドレスは、物理メモリブロックに対応する選択されたブロックの中からデータ格納のために割当てられる。選択されたブロックの中に存在する全ての空きクラスタアドレスが順次に割当てられる。マッピングアルゴリズムは、物理メモリにおいて更新ブロックに必要とされるデータ統合の量が最少に保たれることを可能にする。データ格納のための空きクラスタの割当ては、LBAアドレス空間内でブロックで管理される。ホストファイルシステムは、ブロックを、それらに包含されている空きクラスタの数に従って格付けする。最高数の空きクラスタを有するブロックが次の割当てブロックとして選択される。
【0166】
図38を参照すると、図11のホストファイルシステム構成で実行され得るアドレスマッピングの例が示されている。図11の構成により実行されるアドレスマッピングは、ホスト上のホストファイルシステムで行われ、好ましくはホスト1のCPU9によって実行される。図9および10の構成の例の場合と同じく、データ格納のための空きクラスタの割当ては、メモリシステムのフラッシュメモリの物理メモリブロックとサイズに関して一致するブロックで管理される。図9〜10の例とは違って、図11の構成で実施されるアドレスマッピングは、ホストLBAアドレス空間内の空きクラスタの割当てを管理し、ホストLBAアドレス空間をストレージLBAアドレス空間に再マッピングしない。代わりに、以下に記載されるように、ホストファイルシステムによって実行されるアドレスマッピングアルゴリズムは、ホストLBAアドレスの次のブロックの中のアドレスを割当てる前にホストLBAアドレスの一ブロックの中の利用可能なアドレスを完全に割当てるようにホストLBAアドレス空間内の利用可能なアドレスを利用するために最適化される。
【0167】
図38の例では、ホストLBAアドレス空間494内のブロックは、それらに包含される空きクラスタの数に従って格付けされる。図1を参照して、ホストファイルシステム10がNTFSファイルシステムであるとすれば、ブロックの格付けは、ホストファイルシステム10がメモリシステム2に格納し更新するNTFS$bitmapファイル内の割当てマップに基づくことができる。NTFS$bitmapファイルから割当てマップを取り出すと、ホストファイルシステム10は、最高数の空き(陳腐化した)クラスタを有するブロックを次の割当てブロックとして選択する。図38の例では、ブロック1は、最高数の陳腐化した(従って、空いている)クラスタを包含しているので、割当てブロックとして選択される。陳腐化したクラスタのホストLBAアドレスはブロック1の中からデータに順次に割当てられ、ここで図38内の矢の各々はホスト1から新しいデータへの利用可能なアドレスの割当てを示す。ブロック1内の全ての空きクラスタが割当てられた時に初めて、ブロック2が次の割当てブロックとして選択される。その後、ブロック2内の空きクラスタのためのアドレスが新しいデータに順次に割当てられる。
【0168】
ホストLBAアドレス空間494内のアドレスを割当てる順序は、1つのブロック内で最低の利用可能なアドレス値から最高の利用可能なアドレス値への順序であることができ、あるいは1つのブロック内の利用可能なアドレス値の「ラップアラウンド」順であることができる。例えば、図38のブロック1についてのアドレス値が1から16までであると仮定すると、そのブロックの中の利用可能なアドレスはアドレス値(左から右へ)3〜5,7〜8,11〜13および15〜16である。最低から最高までのアドレスの割当ては、アドレス3から開始して各々の利用可能なアドレスを順に割当てることを含む。ラップアラウンド選択肢は、アドレス値3以外の何処かのポイントからアドレスの割当てを開始すること、その最初に選択されたアドレス値から増大する値のアドレスを割当て、その後、現在のホストLBAブロック内の全てのアドレスが割当てられるまでホストLBAブロック内の利用可能なアドレスを最低の利用可能なアドレスから割当て続けることを含む。従って、この例においてブロック1内のアドレス12が最初に割当てられたならば、アドレス13,15〜16,3〜5,7〜8,および11が、残りが割当てられる順序である。
【0169】
メモリシステム2において(これは、標準的なLBAインターフェイスを使用するいくつかの公知メモリシステムのうちのいずれであってもよい)、割当てられたクラスタアドレスに書き込まれるデータは、ブロック1に対応する物理的更新ブロック496に格納される。メモリシステム2は、ブロック2に対応する別の物理的更新ブロック498も割当てる。選択された割当てブロックに対応するオリジナルのブロックにおいてなお有効であるデータ500は、更新ブロックに書き込まれている新しいホストデータ502と統合される。フラッシュメモリの物理的ブロック内のページは通例順次にプログラムされるので、この統合は、新しいホストデータが更新ブロックに書き込まれた後に起こり得るか、あるいは、より一般的には、書き込まれつつある新しいホストデータと交互配置された後に起こり得る。ホストLBAブロックのためのデータの、単一のフラッシュブロック内への統合のプロセスは、メモリシステム2のコントローラ8により管理され得る。ホストファイルシステムは最高数の空きクラスタを有するブロックを割当てブロックとして選択するので、統合されるデータの量は最少であるように制御される。しかし、図8〜10の実施形態に関して論じられたフラッシングプロセス(この場合、1ブロックからフラッシングされる有効なデータが、他のブロックからの異なるアドレス範囲と関連付けられたデータを有することのある再配置ブロックに順次に書き込まれる)とは違って、図11の割当てプロセスは、1つのブロックのための残っている有効なデータを同じアドレス範囲のための更新済みデータと合併することによってアドレスのブロックが維持されるガーベッジコレクションという結果をもたらす。
【0170】
アドレスマッピング割当てアルゴリズムが図11および38に示されているようなホストファイルシステム185で実行される時、1ブロックの物理メモリにおいて統合されるデータの量は、図8〜10の実施形態に関して記載されたストレージアドレス再マッピングによって1つの同等のブロックから再配置されるデータの量と同じであり得る。図11の実施形態ではファイルシステムによって割当てられたホストLBAアドレスの再マッピングは行われないので、この実施例ではSATは不要である。また、ホストファイルシステムについては通常の慣行であるが、ファイルデータの格納のために割当てられるアドレスは、例えばNTFSファイルシステムのための$MFTファイルあるいはFATファイルシステムのためのファイルアロケーションテーブル(FAT)構造などの、その目的のためのデータ構造に記録される。
【0171】
本願明細書で論じられたアドレスマッピングおよび再マッピングシステムおよびその方法の利点は、メモリマネージャのレベルのガーベッジコレクションの減少または除去とフラッシュメモリへの減少したストレスとをおそらく含む。中間のDLBAアドレスを使用せずに、連続するLBAアドレスのブロックを図8に示されているように単一の物理的ブロックにマッピングするメモリ管理アルゴリズムが使用される時には、物理的ブロックのサイズより小さいLBAアドレスのランにデータが書き込まれる時にガーベッジコレクション操作が必要とされる。そのようなガーベッジコレクションの間に、LBAブロック内のアドレスを有する全てのデータが同じ物理的ブロックの中に統合される。例えば、書き込まれるファイルの平均サイズが40KBで物理的ブロックのサイズが4MBである時には、ファイルシステム割当てアルゴリズムと空きクラスタスペースの断片化とが、各ファイルが孤立しているフラグメントとして別々のブロックに書き込まれるという結果をもたらすとすれば、プログラムされるセクタの、ホストにより書き込まれるデータのセクタあたりの比は100になる。
【0172】
在来の論理対物理ブロックマッピングでは、ホストデータのフラグメントが孤立して論理アドレスのブロックに書き込まれるたびにデータのボディがガーベッジコレクション操作の間に再配置されなければならない。ストレージアドレス再マッピングアルゴリズムでは、1つのブロック(論理または物理)が満杯になるまでデータが常に連続するアドレスに書き込まれるので、ガーベッジコレクションは不要である。本願明細書で開示されたストレージアドレス再マッピングにおけるフラッシング操作は、書き込みプロセスによってはトリガされなくて、データが陳腐化されたことに応答してトリガされるだけである。従って、本願明細書に記載されたストレージアドレス再マッピング機能を有するシステムではデータ再配置オーバーヘッドはより低いはずである。他の実施形態では、メモリシステムは、LBAアドレスの一定の範囲を、ホストLBAアドレスの各範囲の中で前述したストレージアドレス再マッピング手法が適用され得るように、別に維持するように構成され得る。従って、LBAアドレスの各々の割当てられた範囲はそれ自身の書き込みブロックおよび再配置ブロックを有し、ホストLBAアドレスの1つの特定の割当てられた範囲のための前の書き込みブロックまたは再配置ブロックが完全に書かれた時にホストLBAアドレスのその特定の割当てられた範囲に1つの新しい白色ブロックが書き込みブロックまたは再配置ブロックとして割当てられる。
【0173】
ランダムな書き込みアプリケーションにおけるメモリシステムの性能を高めることのできるストレージアドレス再マッピングのためのシステムおよび方法が記載されたが、それらは装置のLBAアドレス空間の関連し合っていない領域にデータの短いバーストを書き込む必要があることにより特徴付けられ、それはパーソナルコンピュータにおいてソリッドステートディスクアプリケーションで経験され得る。開示されたストレージアドレス再マッピングの一定の実施形態では、ホストデータは、ホストにより割当てられた第1の論理アドレスから第2の論理アドレス空間内の連続する論理アドレスのブロックにマッピングされる。アドレスの完全にプログラムされたブロックと関連付けられたデータが陳腐化される時にフラッシング手続きが開示され、最少量の有効なデータを有するかあるいはしきい値量未満の有効なデータを有するピンク色ブロックのグループから1つのピンク色ブロックを選択して、それらのブロック内の有効なデータを、それらのブロックをより多くのデータの書き込みに使用するべくそれらのブロックを解放するために再配置する。再配置されるデータは、ホストにより割当てられた論理アドレスとは無関係に、フラッシングを必要とするブロックの中でそれが存在する順に、再配置ブロックに連続的に書き込まれる。このように、ホストにより割当てられた論理アドレスラン同士をわざわざ統合しないことによってオーバーヘッドが低減され得る。ホストにより割当てられた論理アドレスと第2の論理アドレスとの間のマッピングと、フラッシングによるマッピングのその後の変化とを追跡するためにストレージアドレステーブルが使用される。ホストにより割当てられる論理アドレスが物理アドレスに直接マッピングされる実施形態では、ストレージアドレステーブルはその関係を追跡し、そして例えば特定のブロックが有効なデータおよび陳腐化したデータの両方を有するピンク色ブロックであるかそれとも未記入容量だけを有する白色ブロックであるかを追跡するためにブロック情報テーブルが維持される。
【0174】
SATは、ホストファイルシステムによって有効なデータに割当てられた論理アドレス空間の中のアドレスのどのランをも、装置アドレス空間(図8のアレンジメントでは物理アドレス空間、図9〜10のアレンジメントでは論理ストレージアドレス空間)の中のアドレスの1つ以上のランにマッピングする。ホストにより使用される連続的なアドレス空間の可変長さ単位(LBAラン)が連続的な装置アドレス空間の1つ以上の可変長さ単位にマッピングされる。ラン対ランのアドレスマッピング方式は、固定サイズ単位に基づくマッピング方式と比較して利益を提供し得る。SATにおいて必要とされるマッピングエントリの数は、ホストにより書き込まれるデータのランにおけるクラスタの平均数に反比例する。これはSATデータ構造の数を最小にし、ホストがファイルデータを書き込み、また削除する時にこれらのデータ構造を更新するための平均時間を最小にする。
【0175】
従って、前述した詳細な記述は限定的ではなく例証的であると解されるように意図され、また、この発明の精神および範囲を定めるべく意図されているのが、全ての同等物を含む添付の特許請求の範囲であることを理解されるように意図されている。
【特許請求の範囲】
【請求項1】
ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法であって、
ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを前記大容量記憶システムにおいて前記ホストシステムから受け取るステップと、
前記ホストLBAアドレスと関連付けられたデータをアドレス指定するために、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つのブロックを割当てるステップと、
受け取られたデータのための前記ホストLBAアドレスの各々を前記連続するストレージLBAアドレスのブロックに再マッピングするステップであって、各ストレージLBAアドレスが、前記受け取られたデータが受け取られた順に、前記ホストLBAアドレスに関わらず、連続的な仕方で順次に割当てられる、再マッピングするステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
付加的な受け取られたデータを連続的な仕方で再マッピングするために連続するストレージLBAアドレスの1つの第2のブロックを割当てるステップをさらに含み、前記連続するストレージLBAアドレスの第2のブロックは割当て時に未記入の容量だけと関連付けられ、前記第2のブロックの割当ては、前記連続するストレージLBAアドレスのブロックを完全に割当てた時に初めて行われる方法。
【請求項3】
請求項1記載の方法において、
連続するストレージLBAアドレスの1つのブロックを割当てるステップは、ホストLBAアドレスの複数の範囲のうちの各々のために連続するストレージLBAアドレスの1つのブロックを割当てるステップを含み、連続するストレージLBAアドレスの各ブロックは割当て時に未記入の容量だけと関連付けられる方法。
【請求項4】
請求項3記載の方法において、
前記再マッピングするステップは、前記ホストLBAアドレスの複数の範囲のうちのそれぞれの1つの中の前記受け取られたデータのための前記ホストLBAアドレスの各々をストレージLBAアドレスのそれぞれの割当てられた1つのブロックに再マッピングするステップを含み、連続するストレージLBAアドレスの1つの割当てられたブロックの中の各ストレージLBAアドレスは、前記複数の範囲のうちのそれぞれの1つに属する受け取られたデータに、前記複数の範囲のうちのそれぞれの1つの中の前記ホストLBAアドレスに関わらず、前記データが受け取られた順に連続的な仕方で順次に割当てられる方法。
【請求項5】
請求項1記載の方法において、
前記連続するストレージLBAアドレスのブロックと関連付けられているデータを前記連続するストレージLBAアドレスのブロックと現在関連付けられているアドレスの1つの物理的ブロックの中の連続する物理アドレス位置に書き込むステップをさらに含む方法。
【請求項6】
請求項1記載の方法において、
前記大容量記憶システムは、前記ホストLBAアドレスと関連付けられたデータを受け取り、前記ホストLBAアドレスを再マッピングし、ガーベッジコレクション操作を開始することなく前記ストレージLBAアドレスと関連付けられているデータを書き込む方法。
【請求項7】
請求項1記載の方法において、
前記再マッピングするステップは、ホストLBAアドレス位置とストレージLBAアドレス位置とを相関させる相関データを生成するステップと、連続するストレージLBAアドレスの1つの第2のブロックにおいてそれぞれの連続するストレージLBAアドレスを前記相関データに割当てるステップとをさらに含む方法。
【請求項8】
請求項7記載の方法において、
前記連続するストレージLBAアドレスのブロックはもっぱら前記ホストシステムからのデータと関連付けられ、前記連続するストレージLBAアドレスの第2のブロックはもっぱら前記相関データと関連付けられる方法。
【請求項9】
請求項1記載の方法において、
前記連続するストレージLBAアドレスのブロックと関連付けられている、ホスト割当て解除済みデータを表す陳腐化したデータを識別するステップと、
前記連続するストレージLBAアドレスのブロックからの有効なデータを連続的に再マッピングするところの連続するストレージLBAアドレスの1つの再配置ブロックを選択するステップと、
前記連続するストレージLBAアドレスのブロックと関連付けられている有効なデータを前記再配置ブロック内の連続するストレージLBAアドレスに再割当てするステップと、
をさらに含む方法。
【請求項10】
請求項9記載の方法において、
連続するストレージLBAアドレスの1つの付加的なブロックと関連付けられた陳腐化したデータを識別するステップと、
前記連続するストレージLBAアドレスの付加的なブロックからの有効なデータのためのストレージLBAアドレスを前記再配置ブロック内の連続するストレージLBAアドレスに再割当てするステップであって、前記再配置ブロックが満杯である時には、未記入容量だけを有する1つの新しい再配置ブロックが選択され、前記付加的なブロックからの残りの有効なデータは前記新しい再配置ブロック内の連続するストレージLBAアドレスに再割当てされる、再割当てするステップと、
をさらに含む方法。
【請求項11】
請求項9記載の方法において、
連続するストレージLBAアドレスの前記再配置ブロックは、もっぱら再マッピングされる有効なホストデータと関連付けられる方法。
【請求項12】
請求項8記載の方法において、
前記連続するストレージLBAアドレスの第2のブロックと関連付けられている陳腐化した相関データを識別するステップと、
前記連続するストレージLBAアドレスの第2のブロックからの有効な相関データを連続的に再マッピングするところの連続するストレージLBAアドレスの1つの再配置ブロックを選択するステップと、
前記連続するストレージLBAアドレスの第2のブロックからの有効な相関データを前記再配置ブロック内の連続するストレージLBAアドレスに再割当てするステップと、
をさらに含む方法。
【請求項13】
請求項12記載の方法において、
もっぱら相関データと関連付けられた連続するストレージLBAアドレスの1つの付加的なブロックと関連付けられた陳腐化した相関データを識別するステップと、
有効な相関データのためのストレージLBAアドレスを前記連続するストレージLBAアドレスの付加的なブロックから前記再配置ブロック内の連続するストレージLBAアドレスに再割当てするステップであって、前記再配置ブロックが満杯である時には、未記入容量だけを有する1つの新しい再配置ブロックが選択されて、前記付加的なブロックと関連付けられている残りの有効な相関データは前記新しい再配置ブロック内の連続するストレージLBAアドレスに再割当てされる、再割当てするステップと、
をさらに含む方法。
【請求項14】
請求項1記載の方法において、
白色ステータスまたはピンク色ステータスを有する連続するストレージLBAアドレスの複数のブロックのステータスを追跡するステップをさらに含み、白色ステータスは未記入容量だけと関連付けられている任意のブロックを特定し、ピンク色ステータスは有効なデータおよび陳腐化したデータの両方と関連付けられている任意のブロックを特定する方法。
【請求項15】
請求項1記載の方法において、
以前に受け取られたホストLBAアドレスと関連付けられている新しいデータを受け取る前に有効なデータおよび陳腐化したデータを現在アドレス指定している連続するストレージLBAアドレスの以前に完全にプログラムされたブロックを識別するステップと、
その識別された、有効なデータおよび陳腐化したデータを現在アドレス指定している連続するストレージLBAアドレスの以前に完全にプログラムされたブロックから、未記入容量だけをアドレス指定する連続するストレージLBAアドレスの新しいブロックを作るステップと、
をさらに含む方法。
【請求項16】
請求項15記載の方法において、
前記連続するストレージLBAアドレスの新しいブロックを作るステップは、
識別された連続するストレージLBAアドレスの以前に満たされたブロックを、各々の以前に満たされたブロックにおいてアドレス指定される陳腐化したデータの量によって格付けするステップと、 前記格付けされた以前に満たされたブロックから有効なデータをその中に連続的に再マッピングするための連続するストレージLBAアドレスの1つの再配置ブロックを選択するステップと、
有効なデータのためのストレージLBAアドレスを、前記格付けされた以前に満たされたブロックのうちの選択された1つから前記再配置ブロック内の連続するストレージLBAアドレスに再マッピングするステップと、
前記再配置ブロックが完全に書き込まれたならば、未記入容量だけをアドレス指定する1つの新しい再配置ブロックを選択するステップと、
を含む方法。
【請求項17】
請求項15記載の方法において、
前記連続するストレージLBAアドレスの以前に完全にプログラムされたブロックを識別するステップは、前記大容量記憶装置においてクラスタ割当てマップをスキャンするステップを含む方法。
【請求項18】
請求項17記載の方法において、
前記ホストシステムはNTFSファイルシステムを含み、前記クラスタ割当てマップは$bitmapファイルを含む方法。
【請求項19】
請求項15記載の方法において、
前記連続するストレージLBAアドレスの以前に完全にプログラムされたブロックを識別するステップは、ホストシステムコマンドを前記大容量記憶システムにおいて受け取るステップを含み、前記ホストシステムコマンドは陳腐化したデータアドレスを識別する方法。
【請求項20】
一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、
ホスト論理ブロックアドレス(LBA)フォーマットでアドレス指定されるデータをホストシステムから受け取るようになっているインターフェイスと、
前記インターフェイスと通信するコントローラと、を備える不揮発性大容量記憶システムであって、前記コントローラは、
受け取られたホストLBAアドレスを、受け取られた順に、連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングし、
前記連続するストレージLBAアドレスのブロックが満杯である時には、割当て時に未記入容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当てて、付加的な受け取られたホストLBAアドレスを前記付加的なブロックに連続的に再マッピングし、
前記ホストLBAアドレスと関連付けられたデータが連続するストレージLBAアドレスに再マッピングされる時には、ホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブル(SAT)を生成するように構成される不揮発性大容量記憶システム。
【請求項21】
請求項20記載のシステムにおいて、
前記SATを生成するために、前記コントローラは、ホストLBAアドレスのストレージLBAアドレスへの連続的な仕方でのマッピングに関連する情報を、前記SATに関するデータだけのために指定された連続的なストレージLBAアドレスの1つのブロックに関連付けるように構成されるシステム。
【請求項22】
請求項20記載のシステムにおいて、
前記コントローラは、有効なデータを包含しない連続するストレージLBAアドレスの新しいブロックを作るようにさらに構成されるシステム。
【請求項23】
請求項22記載のシステムにおいて、
前記コントローラは、連続するストレージLBAアドレスの新しいブロックを作るために、
再マッピングされたホストLBAアドレスと以前に完全に関連付けられて、陳腐化したデータの1つ以上のページを現在アドレス指定しているストレージLBAアドレスのブロックを識別し、
有効なデータのためのアドレスを、1つの第1の識別されたブロックから、前記有効なデータが前記第1の識別されたブロックの中で存在する順に、1つの再配置ブロックの中に連続的な順序で、前記第1の識別されたブロックが有効なデータをアドレス指定しなくなるまで、再配置するようにさらに構成されるシステム。
【請求項1】
ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法であって、
ホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを前記大容量記憶システムにおいて前記ホストシステムから受け取るステップと、
前記ホストLBAアドレスと関連付けられたデータをアドレス指定するために、割当て時に未記入の容量だけをアドレス指定する連続するストレージLBAアドレスの1つのブロックを割当てるステップと、
受け取られたデータのための前記ホストLBAアドレスの各々を前記連続するストレージLBAアドレスのブロックに再マッピングするステップであって、各ストレージLBAアドレスが、前記受け取られたデータが受け取られた順に、前記ホストLBAアドレスに関わらず、連続的な仕方で順次に割当てられる、再マッピングするステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
付加的な受け取られたデータを連続的な仕方で再マッピングするために連続するストレージLBAアドレスの1つの第2のブロックを割当てるステップをさらに含み、前記連続するストレージLBAアドレスの第2のブロックは割当て時に未記入の容量だけと関連付けられ、前記第2のブロックの割当ては、前記連続するストレージLBAアドレスのブロックを完全に割当てた時に初めて行われる方法。
【請求項3】
請求項1記載の方法において、
連続するストレージLBAアドレスの1つのブロックを割当てるステップは、ホストLBAアドレスの複数の範囲のうちの各々のために連続するストレージLBAアドレスの1つのブロックを割当てるステップを含み、連続するストレージLBAアドレスの各ブロックは割当て時に未記入の容量だけと関連付けられる方法。
【請求項4】
請求項3記載の方法において、
前記再マッピングするステップは、前記ホストLBAアドレスの複数の範囲のうちのそれぞれの1つの中の前記受け取られたデータのための前記ホストLBAアドレスの各々をストレージLBAアドレスのそれぞれの割当てられた1つのブロックに再マッピングするステップを含み、連続するストレージLBAアドレスの1つの割当てられたブロックの中の各ストレージLBAアドレスは、前記複数の範囲のうちのそれぞれの1つに属する受け取られたデータに、前記複数の範囲のうちのそれぞれの1つの中の前記ホストLBAアドレスに関わらず、前記データが受け取られた順に連続的な仕方で順次に割当てられる方法。
【請求項5】
請求項1記載の方法において、
前記連続するストレージLBAアドレスのブロックと関連付けられているデータを前記連続するストレージLBAアドレスのブロックと現在関連付けられているアドレスの1つの物理的ブロックの中の連続する物理アドレス位置に書き込むステップをさらに含む方法。
【請求項6】
請求項1記載の方法において、
前記大容量記憶システムは、前記ホストLBAアドレスと関連付けられたデータを受け取り、前記ホストLBAアドレスを再マッピングし、ガーベッジコレクション操作を開始することなく前記ストレージLBAアドレスと関連付けられているデータを書き込む方法。
【請求項7】
請求項1記載の方法において、
前記再マッピングするステップは、ホストLBAアドレス位置とストレージLBAアドレス位置とを相関させる相関データを生成するステップと、連続するストレージLBAアドレスの1つの第2のブロックにおいてそれぞれの連続するストレージLBAアドレスを前記相関データに割当てるステップとをさらに含む方法。
【請求項8】
請求項7記載の方法において、
前記連続するストレージLBAアドレスのブロックはもっぱら前記ホストシステムからのデータと関連付けられ、前記連続するストレージLBAアドレスの第2のブロックはもっぱら前記相関データと関連付けられる方法。
【請求項9】
請求項1記載の方法において、
前記連続するストレージLBAアドレスのブロックと関連付けられている、ホスト割当て解除済みデータを表す陳腐化したデータを識別するステップと、
前記連続するストレージLBAアドレスのブロックからの有効なデータを連続的に再マッピングするところの連続するストレージLBAアドレスの1つの再配置ブロックを選択するステップと、
前記連続するストレージLBAアドレスのブロックと関連付けられている有効なデータを前記再配置ブロック内の連続するストレージLBAアドレスに再割当てするステップと、
をさらに含む方法。
【請求項10】
請求項9記載の方法において、
連続するストレージLBAアドレスの1つの付加的なブロックと関連付けられた陳腐化したデータを識別するステップと、
前記連続するストレージLBAアドレスの付加的なブロックからの有効なデータのためのストレージLBAアドレスを前記再配置ブロック内の連続するストレージLBAアドレスに再割当てするステップであって、前記再配置ブロックが満杯である時には、未記入容量だけを有する1つの新しい再配置ブロックが選択され、前記付加的なブロックからの残りの有効なデータは前記新しい再配置ブロック内の連続するストレージLBAアドレスに再割当てされる、再割当てするステップと、
をさらに含む方法。
【請求項11】
請求項9記載の方法において、
連続するストレージLBAアドレスの前記再配置ブロックは、もっぱら再マッピングされる有効なホストデータと関連付けられる方法。
【請求項12】
請求項8記載の方法において、
前記連続するストレージLBAアドレスの第2のブロックと関連付けられている陳腐化した相関データを識別するステップと、
前記連続するストレージLBAアドレスの第2のブロックからの有効な相関データを連続的に再マッピングするところの連続するストレージLBAアドレスの1つの再配置ブロックを選択するステップと、
前記連続するストレージLBAアドレスの第2のブロックからの有効な相関データを前記再配置ブロック内の連続するストレージLBAアドレスに再割当てするステップと、
をさらに含む方法。
【請求項13】
請求項12記載の方法において、
もっぱら相関データと関連付けられた連続するストレージLBAアドレスの1つの付加的なブロックと関連付けられた陳腐化した相関データを識別するステップと、
有効な相関データのためのストレージLBAアドレスを前記連続するストレージLBAアドレスの付加的なブロックから前記再配置ブロック内の連続するストレージLBAアドレスに再割当てするステップであって、前記再配置ブロックが満杯である時には、未記入容量だけを有する1つの新しい再配置ブロックが選択されて、前記付加的なブロックと関連付けられている残りの有効な相関データは前記新しい再配置ブロック内の連続するストレージLBAアドレスに再割当てされる、再割当てするステップと、
をさらに含む方法。
【請求項14】
請求項1記載の方法において、
白色ステータスまたはピンク色ステータスを有する連続するストレージLBAアドレスの複数のブロックのステータスを追跡するステップをさらに含み、白色ステータスは未記入容量だけと関連付けられている任意のブロックを特定し、ピンク色ステータスは有効なデータおよび陳腐化したデータの両方と関連付けられている任意のブロックを特定する方法。
【請求項15】
請求項1記載の方法において、
以前に受け取られたホストLBAアドレスと関連付けられている新しいデータを受け取る前に有効なデータおよび陳腐化したデータを現在アドレス指定している連続するストレージLBAアドレスの以前に完全にプログラムされたブロックを識別するステップと、
その識別された、有効なデータおよび陳腐化したデータを現在アドレス指定している連続するストレージLBAアドレスの以前に完全にプログラムされたブロックから、未記入容量だけをアドレス指定する連続するストレージLBAアドレスの新しいブロックを作るステップと、
をさらに含む方法。
【請求項16】
請求項15記載の方法において、
前記連続するストレージLBAアドレスの新しいブロックを作るステップは、
識別された連続するストレージLBAアドレスの以前に満たされたブロックを、各々の以前に満たされたブロックにおいてアドレス指定される陳腐化したデータの量によって格付けするステップと、 前記格付けされた以前に満たされたブロックから有効なデータをその中に連続的に再マッピングするための連続するストレージLBAアドレスの1つの再配置ブロックを選択するステップと、
有効なデータのためのストレージLBAアドレスを、前記格付けされた以前に満たされたブロックのうちの選択された1つから前記再配置ブロック内の連続するストレージLBAアドレスに再マッピングするステップと、
前記再配置ブロックが完全に書き込まれたならば、未記入容量だけをアドレス指定する1つの新しい再配置ブロックを選択するステップと、
を含む方法。
【請求項17】
請求項15記載の方法において、
前記連続するストレージLBAアドレスの以前に完全にプログラムされたブロックを識別するステップは、前記大容量記憶装置においてクラスタ割当てマップをスキャンするステップを含む方法。
【請求項18】
請求項17記載の方法において、
前記ホストシステムはNTFSファイルシステムを含み、前記クラスタ割当てマップは$bitmapファイルを含む方法。
【請求項19】
請求項15記載の方法において、
前記連続するストレージLBAアドレスの以前に完全にプログラムされたブロックを識別するステップは、ホストシステムコマンドを前記大容量記憶システムにおいて受け取るステップを含み、前記ホストシステムコマンドは陳腐化したデータアドレスを識別する方法。
【請求項20】
一緒に消去可能なメモリセルの複数のブロックに配列された再プログラム可能な不揮発性メモリセルと、
ホスト論理ブロックアドレス(LBA)フォーマットでアドレス指定されるデータをホストシステムから受け取るようになっているインターフェイスと、
前記インターフェイスと通信するコントローラと、を備える不揮発性大容量記憶システムであって、前記コントローラは、
受け取られたホストLBAアドレスを、受け取られた順に、連続するストレージLBAアドレスの1つのブロックに連続的に再マッピングし、
前記連続するストレージLBAアドレスのブロックが満杯である時には、割当て時に未記入容量だけをアドレス指定する連続するストレージLBAアドレスの1つの付加的なブロックを割当てて、付加的な受け取られたホストLBAアドレスを前記付加的なブロックに連続的に再マッピングし、
前記ホストLBAアドレスと関連付けられたデータが連続するストレージLBAアドレスに再マッピングされる時には、ホストLBAアドレスをストレージLBAアドレスにマッピングするストレージアドレステーブル(SAT)を生成するように構成される不揮発性大容量記憶システム。
【請求項21】
請求項20記載のシステムにおいて、
前記SATを生成するために、前記コントローラは、ホストLBAアドレスのストレージLBAアドレスへの連続的な仕方でのマッピングに関連する情報を、前記SATに関するデータだけのために指定された連続的なストレージLBAアドレスの1つのブロックに関連付けるように構成されるシステム。
【請求項22】
請求項20記載のシステムにおいて、
前記コントローラは、有効なデータを包含しない連続するストレージLBAアドレスの新しいブロックを作るようにさらに構成されるシステム。
【請求項23】
請求項22記載のシステムにおいて、
前記コントローラは、連続するストレージLBAアドレスの新しいブロックを作るために、
再マッピングされたホストLBAアドレスと以前に完全に関連付けられて、陳腐化したデータの1つ以上のページを現在アドレス指定しているストレージLBAアドレスのブロックを識別し、
有効なデータのためのアドレスを、1つの第1の識別されたブロックから、前記有効なデータが前記第1の識別されたブロックの中で存在する順に、1つの再配置ブロックの中に連続的な順序で、前記第1の識別されたブロックが有効なデータをアドレス指定しなくなるまで、再配置するようにさらに構成されるシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【公表番号】特表2010−532023(P2010−532023A)
【公表日】平成22年9月30日(2010.9.30)
【国際特許分類】
【出願番号】特願2010−511275(P2010−511275)
【出願日】平成20年6月3日(2008.6.3)
【国際出願番号】PCT/US2008/065631
【国際公開番号】WO2008/154216
【国際公開日】平成20年12月18日(2008.12.18)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.コンパクトフラッシュ
2.ウィンドウズ
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
【公表日】平成22年9月30日(2010.9.30)
【国際特許分類】
【出願日】平成20年6月3日(2008.6.3)
【国際出願番号】PCT/US2008/065631
【国際公開番号】WO2008/154216
【国際公開日】平成20年12月18日(2008.12.18)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.コンパクトフラッシュ
2.ウィンドウズ
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
[ Back to top ]