(57)【要約】  様々な符号化、圧縮、暗号化、またはその他のデータ変換アルゴリズムから生じる格納データ量の変化に、変換済みデータの個別単位を個別に識別することにより、およびフラッシュメモリ等のメモリシステムの格納ブロックの中でそのような単位を物理的に連続して格納することにより対処する。格納されるデータは、メモリシステム外部のホストシステムからまたはメモリシステムの中のプロセッサで実行するアプリケーションから到来する。
2009512066.tif 000002
【特許請求の範囲】
【請求項１】
データが複数の個別データ格納素子ブロックに格納される、再プログラム可能な不揮発性メモリシステムを操作する方法であって、
論理アドレス範囲のデータを複数の個別アドレス単位に分割するステップと、
前記単位のデータを変換し、これにより変換済み単位の少なくともいくつかは前記変換の前とは異なる量のデータを個別に収容するステップと、
前記単位の変換済みデータを１つ以上の前記格納素子ブロックに格納するステップと、
前記個別単位の変換済みデータの格納位置を、前記変換済み単位の境界に一致する境界を有する少なくとも１つのデータグループによって識別するステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
前記個別単位の変換済みデータの格納位置を識別するステップは、前記格納素子ブロックの境界に一致する境界を有する前記少なくとも１つのデータグループを識別するステップをさらに含む方法。
【請求項３】
請求項１記載の方法において、
前記メモリシステムから前記少なくとも１つの変換済み単位のデータを読み出すステップと、
少なくとも１つの単位の前記データを復元するため、前記少なくとも１つの変換済み単位から読み出された前記データを逆変換するステップと、
前記少なくとも１つの単位の復元済みデータを修正するステップと、
前記少なくとも１つの単位の修正済み・復元済みデータを変換するステップと、
前記変換済み・復元済みデータを１つ以上の前記格納素子ブロックに格納するステップと、
前記個別単位の変換済み・復元済みデータの格納位置を、前記変換済み単位の境界と前記格納素子ブロックの物理境界とに一致する境界を有する少なくとも１つのデータグループによって識別するステップと、によって、
１つ以上の前記格納素子ブロックに格納された少なくとも１つの変換済みデータ単位を修正するステップをさらに含む方法。
【請求項４】
請求項１記載の方法において、
前記データを変換するステップは、前記データを符号化すること、圧縮すること、または暗号化することのうちの少なくとも１つを行うステップを含む方法。
【請求項５】
請求項４記載の方法において、
前記データを変換するステップは、前記少なくともいくつかの変換済みデータ単位が前記変換の前より少ない量のデータを個別に収容するデータ単位を含むことに帰結する方法。
【請求項６】
請求項４記載の方法において、
前記データを変換するステップは、前記少なくともいくつかの変換済みデータ単位が前記変換の前より多い量のデータを個別に収容するデータ単位を含むことに帰結する方法。
【請求項７】
請求項１記載の方法において、
前記論理アドレス範囲のデータを複数の個別アドレス単位に分割するステップは、前記論理アドレス範囲のデータを複数の均等サイズのアドレス単位に分割するステップを含む方法。
【請求項８】
請求項７記載の方法において、
複数の均等サイズのアドレス単位に分割される前記論理アドレス範囲は、ホストファイルオブジェクトの論理アドレス範囲である方法。
【請求項９】
請求項７記載の方法において、
複数の均等サイズのアドレス単位に分割される前記論理アドレス範囲は、複数のホストファイルオブジェクトがアドレスされるところのメモリシステムの論理アドレス空間の論理アドレス範囲である方法。
【請求項１０】
請求項１記載の方法において、
前記変換されるデータは、前記メモリシステム外部のホストから発生する方法。
【請求項１１】
請求項１記載の方法において、
前記変換されるデータは、前記メモリシステムの中で実行するアプリケーションから発生する方法。
【請求項１２】
請求項１記載の方法において、
前記データを変換するステップは、個別の格納素子ブロックの格納容量より少ない量のデータを個別に収容する変換済み単位に前記データを変換するステップを含む方法。
【請求項１３】
請求項１記載の方法において、
前記変換済みデータの格納位置を識別するステップは、異なる格納素子ブロックにある１データグループの切片をつなぎ合わせるステップを含む方法。
【請求項１４】
請求項１記載の方法において、
前記変換済みデータの格納位置を識別するステップは、前記変換済み単位の境界に一致する、前記格納素子ブロック内の前記少なくとも１つのデータグループの境界の除去を回避するステップを含む方法。
【請求項１５】
請求項１４記載の方法において、
さらなるデータ単位を変換なしで少なくとも１つのさらなる前記格納素子ブロックに格納するステップと、
前記さらなるデータの格納位置を、前記格納素子ブロックの少なくとも１つの中にある少なくとも１つのさらなるデータグループによって識別するステップと、
前記さらなるデータ単位の境界に一致する、前記格納素子ブロックの少なくとも１つの中にある少なくとも１つのさらなるデータグループの境界を除去するステップと、
をさらに含む方法。
【請求項１６】
請求項１記載の方法において、
メモリシステムはフラッシュメモリシステムであり、前記個別ブロックは同時に消去可能な最少数のデータ格納素子を収容する方法。
【請求項１７】
請求項１記載の方法において、
メモリシステムはフラッシュメモリシステムであり、前記個別ブロックは、ともにつなぎ合わされる２つ以上の格納素子単位を収容し、かつ同時に消去可能な最少数の格納素子を個別に収容する方法。
【請求項１８】
再プログラム可能な不揮発性メモリシステムを操作する方法であって、前記メモリシステムは作業セルブロックに編制されたメモリセルアレイを含む方法において、
前記メモリシステムによって受信されるデータを、前記個別メモリセルブロックの格納容量以下のデータ量を個別に収容する均等サイズのデータ単位に分割するステップと、
前記個別の受信データ単位を、前記受信データを符号化すること、圧縮すること、または暗号化することのうちの少なくとも１つを行うことによって変換し、これにより前記変換済みデータ単位の少なくともいくつかが変換前とは異なる量のデータを個別に収容するステップと、
前記変化済みデータ単位を１つ以上の前記メモリセルブロックに書き込むステップと、
前記書き込み済み・変換済みデータのグループを、少なくとも前記変換済みデータ単位の境界と前記メモリブロックの物理境界とに一致する境界を持つものと定義するステップと、
前記メモリセルブロックの境界の中にある変換済みデータ単位の境界に一致する定義済みデータグループの境界の除去を回避するステップと、
を含む方法。
【請求項１９】
請求項１８記載の方法において、
既に変換され前記メモリに書き込まれた少なくとも１つの受信済み個別データ単位の中でデータを更新するデータの受信に応じて、前記メモリシステムの中で、
前記少なくとも１つの変換済み個別データ単位を形成する変換済みデータの前記グループを読み出すステップと、
変換済みデータの前記読み出し済みグループを、前記読み出し済みデータを復号化すること、解凍すること、または解読することのうちの少なくとも１つを行うことによって逆変換し、これにより前記少なくとも１つの個別データ単位を復元するステップと、
その後、前記復元済み個別データ単位を前記受信済み更新データにより修正するステップと、
その後、前記修正済み・復元済みデータを、前記修正済みデータ単位を符号化すること、圧縮すること、または暗号化することのうちの少なくとも１つを行うことにより変換するステップと、
前記変換済み・修正済みデータ単位を１つ以上の前記メモリセルブロックに再書き込みするステップと、
少なくとも前記変換済み・修正済みデータ単位の境界と前記メモリブロックの物理境界とに一致する境界を有する再書き込み済みデータのグループを定義するステップと、
をさらに含む方法。
【請求項２０】
請求項１８記載の方法において、
前記データを変換するステップは、前記少なくともいくつかの変換済みデータ単位が前記変換の前より少ない量のデータを個別に収容するデータ単位を含むことに帰結する方法。
【請求項２１】
請求項１８記載の方法において、
前記データを変換するステップは、前記少なくともいくつかの変換済みデータ単位が前記変換の前より多い量のデータを個別に収容するデータ単位を含むことに帰結する方法。
【請求項２２】
請求項１８記載の方法において、
前記変換済みデータのグループを定義するステップは、異なるセルブロックにある１データグループの切片をともにつなぎ合わせるステップを含む方法。
【請求項２３】
請求項１８記載の方法において、
前記メモリシステムによって受信されるさらなるデータ単位を変換なしで少なくとも１つのさらなる前記メモリセルブロックに格納するステップと、
前記さらなるデータ単位の格納位置を、前記メモリセルブロック内のさらなるデータグループによって識別するステップと、
前記メモリセルブロックの中にある前記さらなるデータ単位の境界に一致する前記さらなるデータグループの境界を除去するステップと、
を含む方法。
【請求項２４】
請求項１８記載の方法において、
メモリシステムはフラッシュメモリシステムであり、前記個別ブロックは同時に消去可能な最少数のメモリセルを収容する方法。
【請求項２５】
請求項１８記載の方法において、
メモリシステムはフラッシュメモリシステムであり、前記個別ブロックは、動作可能にともにつなぎ合わされる２つ以上のメモリセル単位を収容し、かつ同時に消去可能な最少数のメモリセルを個別に収容する方法。
【請求項２６】
請求項１８記載の方法において、
前記方法は、メモリコネクタによって取り外し可能な状態でホストデバイスへ接続できるメモリシステムモジュールで遂行され、前記データは前記メモリコネクタを通じて受信される方法。
【請求項２７】
請求項１８記載の方法において、
前記メモリシステムによって受信されるデータは、前記メモリシステムの中でプロセッサによって実行されるアプリケーションプログラムから発生する方法。
【請求項２８】
不揮発性メモリシステムであって、
個別データ格納素子ブロックに分割されたフラッシュメモリと、
前記フラッシュメモリに接続され、かつファームウェアによって動作するマイクロプロセッサを含むコントローラであって、前記コントローラは、個別論理アドレス単位の中で受信するデータを、前記格納素子ブロックに格納される少なくともいくつかの前記単位でデータ量が変化する方法で変換するように動作し、かつ前記変換済みデータの格納位置を、前記変換済みデータ単位の論理境界に一致する物理境界を有する少なくとも１つのデータグループによって識別する、コントローラと、
を備えるメモリシステム。
【請求項２９】
請求項２８記載のメモリシステムにおいて、
前記コントローラは、前記変換済みデータの格納位置を、前記格納素子ブロックの物理境界に一致する論理境界を有する前記少なくとも１つのデータグループによって識別するようにさらに動作するメモリシステム。
【請求項３０】
請求項２９記載のメモリシステムにおいて、
前記コントローラは、前記格納素子ブロックの境界の中にある前記変換済みデータ単位の境界に一致する前記少なくとも１つのデータグループの任意の境界の除去を回避するようにさらに動作するメモリシステム。
【請求項３１】
請求項２８記載のメモリシステムにおいて、
前記コントローラは、前記受信データを、前記データを符号化すること、圧縮すること、または暗号化することのうちの少なくとも１つを行うことによって変換するようにさらに動作するメモリシステム。
【請求項３２】
請求項３１記載のメモリシステムにおいて、
前記コントローラは、前記変換の前に存在したデータ量を減少させる方法で前記受信データを変換するようにさらに動作するメモリシステム。
【請求項３３】
請求項３１記載のメモリシステムにおいて、
前記コントローラは、前記変換の前に存在したデータ量を増加させる方法で前記受信データを変換するようにさらに動作するメモリシステム。
【請求項３４】
請求項２８記載のメモリシステムにおいて、
前記コントローラは、ほぼ等量のデータを収容する個別論理アドレス単位の中で受信するデータを変換するようにさらに動作するメモリシステム。
【請求項３５】
請求項２８記載のメモリシステムにおいて、
前記コントローラによって受信され変換されるデータは、前記メモリシステムの外で発生するメモリシステム。
【請求項３６】
請求項２８記載のメモリシステムにおいて、
前記コントローラによって受信され変換されるデータは、前記コントローラによって実行されるアプリケーションから発生するメモリシステム。
【請求項３７】
請求項２８記載のメモリシステムにおいて、
前記個別ブロックは、同時に消去可能な最少数のデータ格納素子を収容するメモリシステム。
【請求項３８】
請求項２８記載のメモリシステムにおいて、
前記個別ブロックは、ともにつなぎ合わされる２つ以上の格納素子単位を収容し、かつ同時に消去可能な最少数の格納素子を個別に収容するメモリシステム。
【請求項３９】
請求項２８記載のメモリシステムにおいて、
前記格納素子は、導電性フローティングゲートを含むメモリシステム。
【請求項４０】
請求項２８記載のメモリシステムにおいて、
前記コントローラは、前記受信データの前記変換の少なくとも一部分を遂行する専用の回路をさらに含むメモリシステム。
【請求項４１】
請求項２８記載のメモリシステムにおいて、
前記コントローラは、前記格納素子のひとつずつに２ビット以上のデータを格納するようにさらに動作するメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、半導体フラッシュメモリ等の再プログラム可能な不揮発性メモリシステムの動作に関し、より具体的にはサイズが異なり時間の経過にともない変化するデータファイルの論理的単位の初期格納とその後の更新とに関する。本願明細書で参照する特許、特許出願、記事、その他の出版物、文書、事柄はどれも、その全体があらゆる目的のために本願明細書において参照により援用されている。
【背景技術】
【０００２】
本願明細書で説明する手法は、いずれも２００５年２月１６日に出願された米国特許出願第１１／０６０，２４９号（特許文献１）、第１１／０６０，１７４号（特許文献２）、および第１１／０６０，２４８号（特許文献３）、２００５年８月３日に出願された仮米国特許出願第６０／７０５，３８８号（特許文献４）でより詳しく記載され、これ以降「Direct Data File Applications （直接データファイルアプリケーション）」と称する、フラッシュメモリシステムで実装できる。
【０００３】
初期世代の商用フラッシュメモリシステムでは、メモリセルからなる矩形アレイが、標準ディスクドライブセクタのデータ量を、すなわち５１２バイトを、各々格納する多数のセルグループに分割されていた。さらに通常ならば、誤り訂正符号（ＥＣＣ）を格納するため、および、ことによるとユーザデータおよび／またはこれを格納するメモリセルグループに関係する他のオーバーヘッドデータを格納するため、１６バイト等、さらなる量のデータが各グループに加わる。そのようなグループ内のメモリセル数は、ともに消去可能な最低メモリセル数である。すなわち消去単位は事実上、１つのデータセクタを、そしてオーバーヘッドデータが含まれる場合はオーバーヘッドデータを、格納するメモリセル数である。米国特許第５，６０２，９８７号（特許文献５）および第６，４２６，８９３号（特許文献６）には、この種のメモリシステムの例が記載されている。フラッシュメモリの特徴として、メモリセルは、これにデータを再度プログラムする前に消去する必要がある。
【０００４】
フラッシュメモリシステムは多くの場合、パーソナルコンピュータやカメラ等、様々なホストに着脱可能な状態で接続するメモリカードまたはフラッシュドライブの形で提供されるが、そのようなホストシステムの中に埋め込まれることもある。ホストは通常、メモリへデータを書き込むときに、メモリシステムの連続する仮想アドレス空間の中でセクタ、クラスタ、またはその他のデータ単位に一意な論理アドレスを割り当てる。ホストは、ディスクオペレーティングシステム（ＤＯＳ）のように、メモリシステムの論理アドレス空間の中のアドレスにデータを書き込み、かつこれからデータを読み出す。メモリシステムの中のコントローラは、ホストから受け取った論理アドレスをメモリアレイの中のデータが実際に格納される物理アドレスに翻訳し、これらのアドレス翻訳の経緯を把握する。メモリシステムのデータ格納容量は少なくとも、メモリシステムのために設定される論理アドレス空間全体にわたってアドレスされるデータ量に相当する。
【０００５】
後続世代のフラッシュメモリシステムでは、消去単位のサイズが複数のセクタのデータを十分に格納するメモリセルブロックまで拡大した。メモリシステムの接続先にあたるホストシステムがセクタ等の小さな最小単位でデータをプログラムし読み出すとしても、フラッシュメモリの１消去単位には多数のセクタが格納される。ホストが論理セクタのデータの更新や置き換えを行うにつれ、ブロック内のいくつかのデータセクタが用済みになることは多々ある。ブロックに格納されたデータに上書きを行うには事前にブロック全体を消去しなければならないので、新規または更新済みデータは通常、あらかじめ消去され、データのための容量が残っている別のブロックに格納される。この過程で元のブロックには用済みデータが残り、メモリ内の貴重なスペースを取る。しかし、このブロックは、その中に有効データが残っている場合には消去できない。
【０００６】
したがって、メモリ格納容量の有効利用を図るため、有効な不完全ブロックのデータを消去済みブロックにコピーすることによってこれを整理または回収するのが一般的であり、こうすればデータのコピー元にあたるブロックは消去でき、その格納容量の全体を再利用できる。ブロック内のデータセクタをそれぞれの論理アドレスの順にグループ分けするためにデータをコピーすることも望ましく、こうすればデータを読み出し、読み出したデータをホストへ転送する速度が上がる。そのようなデータコピーがあまりにも頻繁に行われると、メモリシステムの動作性能が低下することがある。これは特に、メモリの格納容量が、システムの論理アドレス空間を通じてホストによってアドレスされるデータ量と大差ない場合、つまりよくある場合では、メモリシステムの動作に影響する。この場合、ホストプログラミングコマンドが実行される前にデータを整理または回収する必要がある。そうするとプログラミングの時間が長引く。
【０００７】
所与の半導体領域に格納できるデータのビット数を増やすため、ブロックのサイズはメモリシステムの世代交代を通じて拡大している。２５６以上のデータセクタを格納するブロックが一般的になりつつある。加えて、データのプログラミングと読み出しにあたって並列度を高めるため、異なるアレイまたはサブアレイからなる２つ、４つ、またはそれ以上のブロックがしばしばメタブロックとして論理的にともにリンクされる。そのような大容量操作単位には、メモリシステムの効率的動作という課題がともなう。格納データのグループ分けに変化やサイズのばらつきを招く圧縮や暗号化をはじめとするデータ変換は、メモリシステムを適度な性能水準に維持することをより一層困難にする。
【特許文献１】米国特許出願第１１／０６０，２４９号
【特許文献２】米国特許出願第１１／０６０，１７４号
【特許文献３】米国特許出願第１１／０６０，２４８号
【特許文献４】仮米国特許出願第６０／７０５，３８８号
【特許文献５】米国特許第５，６０２，９８７号
【特許文献６】米国特許第６，４２６，８９３号
【特許文献７】米国特許出願第１０／９１５，０３９号
【特許文献８】米国特許第５，５７０，３１５号
【特許文献９】米国特許第５，７７４，３９７号
【特許文献１０】米国特許第６，０４６，９３５号
【特許文献１１】米国特許第６，３７３，７４６号
【特許文献１２】米国特許第６，４５６，５２８号
【特許文献１３】米国特許第６，５２２，５８０号
【特許文献１４】米国特許第６，７７１，５３６号
【特許文献１５】米国特許第６，７８１，８７７号
【特許文献１６】米国公開特許出願第２００３／０１４７２７８号
【特許文献１７】米国公開特許出願第２００３／０１０９０９３号
【特許文献１８】米国特許第６，７６３，４２４号
【特許文献１９】米国特許出願第１０／７４９，８３１号
【特許文献２０】米国特許出願第１０／７５０，１５５号
【特許文献２１】米国特許出願第１０／９１７，８８８号
【特許文献２２】米国特許出願第１０／９１７，８６７号
【特許文献２３】米国特許出願第１０／９１７，８８９号
【特許文献２４】米国特許出願第１０／９１７，７２５号
【特許文献２５】米国特許出願第１０／７４９，１８９号
【特許文献２６】米国特許出願第１０／８４１，１１８号
【特許文献２７】米国特許出願第１１／０１６，２７１号
【特許文献２８】米国特許出願第１０／８９７，０４９号
【特許文献２９】米国特許出願第１１／０２２，３６９号
【特許文献３０】米国特許出願第１１／１９６，８６９号
【発明の開示】
【０００８】
メモリシステムに格納されるデータは、個別のアドレス単位に、好ましくは等量のデータを有する単位に分割され、単位内のデータは、好ましくは個別に変換データ単位に変換された後、メモリのブロックまたはメタブロックに格納される。データ変換は、例えばメモリシステムがデータを符号化、圧縮、または暗号化することによって起こりうる。変換済みデータ単位は普通、変換前とは異なるサイズ、変換前より小さいか大きいサイズを有し、複数の変換済みデータ単位のサイズは通常ならば等しくない。格納済み・変換済みデータ単位はメモリの中で、変換済みデータ単位の境界と、変換済みデータ単位がまたがるブロックまたはメタブロックの物理境界とに一致するアドレス境界を有するデータグループによって識別される。物理ブロック境界によって２つ以上のデータグループに分かれる変換済みデータ単位の場合、これらのデータグループはつなぎ合わせることができる。サイズの異なるデータグループは、好ましくは使用可能な空間にて順次物理的に隣り合わせて格納される。メモリシステムにおけるさらなる処理で、変換済みデータ単位の境界に一致するデータグループ境界は好ましくは別々に識別され続ける。
【０００９】
これらの手法は、独自のアドレス範囲を各々有する個別ファイルオブジェクトの形をとるデータにより、またはメモリシステムの共通論理アドレス空間を共用する複数のファイルオブジェクトにより実装できる。いずれにせよ、データの論理アドレス範囲は個別データ単位に分割される。変換後、変換済みデータからなる１つ以上の一意に識別されるデータグループは物理格納位置へマッピングされる。一実施形態において、ある１つの変換済みデータ単位からなるデータグループが別の変換済みデータ単位からなるデータグループと併合されることも組み合わされることもなく、それゆえ、別々に認識される個別単位のデータは区別され続ける。これにより、読み出し時に格納されたグループのデータを単位ごとに再変換することが可能となる。メモリシステムによって変換され格納されるデータは、メモリシステムの外にあるホストから、またはメモリシステムの中でプロセッサによって実行されるアプリケーションから到来する。
【００１０】
本発明の他の態様、利点、特徴、および詳細は、添付の図面と併せて解釈すべきものである以下のこれらの代表的な例の説明に含まれる。
【発明を実施するための最良の形態】
【００１１】
フラッシュメモリシステムの概説
現在のフラッシュメモリシステムと、ホストデバイスとの典型的な動作とを、図１〜図８との関係で説明する。そのようなシステムで本発明の様々な態様を実装できる。図１のホストシステム１は、フラッシュメモリ２の中にデータを格納し、このフラッシュメモリからデータを引き出す。フラッシュメモリはホストの中に埋め込むこともできるが、メモリ２はそれよりも一般的なカードの形状で図に示され、このカードは、機械的および電気的コネクタの嵌合部分３および４を通じて着脱可能な状態でホストへ接続される。例えばコンパクトフラッシュ（ＣＦ）、マルチメディアカード（ＭＭＣ）、セキュアデジタル（ＳＤ）、ミニＳＤ、メモリスティック、スマートメディア、トランスフラッシュカード等、様々なフラッシュメモリカードが現在市販されている。これらのカードの各々はそれぞれの規格化された仕様に従い独特の機械的および／または電気的インターフェイスを有するが、各々に内蔵されたフラッシュメモリはよく似ている。これらのカードはいずれも、本願の譲受人であるサンディスク  コーポレイションから入手できる。サンディスクコーポレイションはまた、そのＣｒｕｚｅｒという商標のもとで一連のフラッシュドライブを提供し、このフラッシュドライブは、ホストのユニバーサル・シリアル・バス（ＵＳＢ）差込口に差し込まれることによってホストと接続するＵＳＢプラグを有する小形の手持ち式メモリシステムである。これらのメモリカードとフラッシュドライブの各々は、ホストと連係して内蔵されたフラッシュメモリの動作を制御するコントローラを内蔵する。
【００１２】
そのようなメモリカードとフラッシュドライブとを使用するホストシステムは数多くあり様々である。これらには、パーソナルコンピュータ（ＰＣ）、ラップトップをはじめとする携帯用コンピュータ、携帯電話機、個人用携帯情報端末（ＰＤＡ）、デジタル静止画カメラ、デジタル動画カメラ、携帯用オーディオプレイヤ等が含まれる。ホストは通常ならば１種類以上のメモリカードまたはフラッシュドライブのための一体化された差込口を内蔵するが、メモリカードを差し込むアダプタを必要とするものもある。
【００１３】
図１のホストシステム１は、メモリ２が接続される限りにおいて、回路とソフトウェアとの組み合わせからなる、２つの主要部分を有するものとみなすことができる。それらはアプリケーション部５と、メモリ２と連係するドライバ部６である。例えばパーソナルコンピュータの場合、アプリケーション部５は、ワープロ、グラフィック、コントロール、またはその他の一般的なアプリケーションソフトウェアを実行するプロセッサを含むことがある。カメラ、携帯電話機、または専ら１セットの機能を遂行するその他のホストシステムの場合、アプリケーション部５は、写真を撮影したり格納したりするためにカメラを動作させるソフトウェアや、電話をかけたり受けたりするために携帯電話機を動作させるソフトウェア等を含む。
【００１４】
図１のメモリシステム２はフラッシュメモリ７と回路８とを含み、それら回路はいずれも、データをやり取りするため、そしてメモリ７を制御するため、カードの接続先にあたるホストと連係する。コントローラ８は通常、データのプログラミングと読み出し中にホスト１によって使用されるデータの論理アドレスとメモリ７の物理アドレスとの変換を行う。
【００１５】
図２を参照すると、図１の不揮発性メモリ２として使用できる典型的なフラッシュメモリシステムの回路が記載されている。システムコントローラは普通、システムバス１３沿いに１つ以上の集積回路メモリチップと並列で接続される単一集積回路チップ１１上で実装され、図２にはただひとつのそのようなメモリチップ１５が示されている。図に示された特定のバス１３は、データを搬送する１セットの導体１７と、メモリアドレスのためのセット１９と、制御および状態信号のためのセット２１とを含む。代わりに、これらの３つの機能の間で１セットの導体を時分割共用できる。さらに、２００４年８月９日に出願の「Ring Bus Structure and It's Use in Flash Memory Systems （リングバス構造とフラッシュメモリシステムにおけるその使用）」という米国特許出願第１０／９１５，０３９号（特許文献７）に記載されているリングバス等、これとは別のシステムバス構成も使用可能である。
【００１６】
典型的なコントローラチップ１１は、インターフェイス回路２５を通じてシステムバス１３と連係する独自の内部バス２３を有する。このバスへ通常接続される主要機能には、プロセッサ２７（マイクロプロセッサまたはマイクロコントローラ）と、システムを初期化（「ブート」）するためのコードを収容する読み出し専用メモリ（ＲＯＭ）２９と、主にメモリとホストとの間で転送されるデータをバッファするために使われるランダムアクセスメモリ（ＲＡＭ）３１とがある。コントローラを通じてメモリとホストとの間を行き来するデータのための誤り訂正符号（ＥＣＣ）を計算し検査する回路３３もバス２３へ接続されることがある。コントローラを通過するデータを符号化・復号化する専用の回路３４が含まれることもある。そのような符号化は圧縮とセキュリティ暗号化を含むが、ほとんどのタイプのデータ変換はこの方法で行われる。専用回路３３および３４が使われる場合、この回路は、ファームウェア制御下でプロセッサ２７によって実行される特定のアルゴリズムを代わりに実行する。コントローラバス２３は回路３５を通じてホストシステムと連係し、これは、メモリカードに内蔵される図２のシステムの場合に、コネクタ４の一部をなすカードの外部接点３７を通じて果たされる。クロック３９は、コントローラ１１の他のコンポーネントの各々に接続され、他のコンポーネントの各々によって利用される。
【００１７】
メモリチップ１５と、システムバス１３に接続される他のメモリチップも同様に通常、複数のサブアレイまたはプレーンに編制されたメモリセルアレイを収容し、簡潔を図るため、２つのそのようなプレーン４１および４３が示されているが、これよりも多い、例えば４つまたは８つのそのようなプレーンを代わりに使用することもできる。あるいは、チップ１５のメモリセルアレイはプレーンに分割しなくともよい。しかし、分割するならば、各々のプレーンは互いに独立して動作できる独自の列制御回路４５および４７を有する。回路４５および４７は、システムバス１３のアドレス部１９からそれぞれのメモリセルアレイのアドレスを受け取り、それぞれのビット線４９および５１のうちの特定の１つ以上のビット線をアドレスするため、それらを復号化する。ワード線５３は、アドレスバス１９で受け取るアドレスに応じて行制御回路５５を通じてアドレスされる。ソース電圧制御回路５７および５９もまたそれぞれのプレーンに接続され、ｐウェル電圧制御回路６１および６３もしかりである。メモリチップ１５がただひとつのメモリセルアレイを有し、２つ以上のそのようなチップがシステムに存在する場合、各チップのアレイは、前述したマルチプレーンチップ内のプレーンまたはサブアレイと同様に動作させることができる。
【００１８】
データは、システムバス１３のデータ部分１７に接続されたそれぞれのデータ入出力回路６５および６７を通じてプレーン４１および４３を出入りする。回路６５および６７は、それぞれの列制御回路４５および４７を通じてプレーンへ接続する線６９および７１を通じてそれぞれのプレーンのメモリセルの中にデータをプログラムするため、そしてメモリセルからデータを読み出すためにある。
【００１９】
コントローラ１１は、データをプログラムするため、データを読み出すため、消去するため、および様々なハウスキーピング作業に応対するため、メモリチップ１５の動作を制御するが、各々のメモリチップもまた、そのような機能を遂行するためにコントローラ１１からのコマンドを実行する何らかの制御回路を収容する。インターフェイス回路７３はシステムバス１３の制御・状態部２１へ接続される。コントローラからのコマンドは状態マシン７５へ提供され、この状態マシンは、これらのコマンドを実行するために他の回路の具体的制御を提供する。制御線７７〜８１は、図２に示すこれらの他の回路に状態マシン７５を接続する。状態マシン７５からの状態情報は、バス部２１に沿ってコントローラ１１へ送信するため、線８３に沿ってインターフェイス７３へ伝達される。
【００２０】
現在はメモリセルアレイ４１および４３のＮＡＮＤアーキテクチャが好まれているが、ＮＯＲ等の他のアーキテクチャを代わりに使用することもできる。ＮＡＮＤフラッシュメモリの例とメモリシステムの一部としてのその動作は、米国特許第５，５７０，３１５号（特許文献８）、第５，７７４，３９７号（特許文献９）、第６，０４６，９３５号（特許文献１０）、第６，３７３，７４６号（特許文献１１）、第６，４５６，５２８号（特許文献１２）、第６，５２２，５８０号（特許文献１３）、第６，７７１，５３６号（特許文献１４）、および第６，７８１，８７７号（特許文献１５）、ならびに米国公開特許出願第２００３／０１４７２７８号（特許文献１６）を参照することによって得ることができる。
【００２１】
図２のメモリシステムのメモリセルアレイ４１の一部分にあたる図３の回路図には、ＮＡＮＤアレイの例が示されている。多数のグローバルビット線が提供されるが、説明の簡潔を図るため、図２では４つのそのような線９１〜９４だけが示されている。これらのビット線のうちの１ビット線と基準電位との間には、いくつかの直列に接続されたメモリセルストリング９７〜１０４が接続される。メモリセルストリング９９を代表として使用し、ストリングの両端で選択トランジスタ１１１および１１２には複数の電荷蓄積メモリセル１０７〜１１０が直列で接続される。１ストリングの選択トランジスタが通電すると、ストリングはそのビット線と基準電位との間で接続される。そして、そのストリングの中で一度に１つのメモリセルがプログラムされるか、または読み出される。
【００２２】
図３のワード線１１５〜１１８は、数あるメモリセルストリングの各々で１つのメモリセルの電荷蓄積素子にわたって個別に延在し、ゲート１１９および１２０は、ストリングの末端にて選択トランジスタの状態を制御する。共通のワードおよびコントロールゲート線１１５〜１２０を共用するメモリセルストリングは、ともに消去されるメモリセルのブロック１２３を形成する。このセルからなるブロックは、一度に物理的に消去できる最小数のセルを収容する。ワード線１１５〜１１８の１ワード線沿いの１行のメモリセルが一度にプログラムされる。通常、ＮＡＮＤアレイの行は規定の順序でプログラムされ、この場合、接地等の共通電位へ接続されたストリングの末端に最も近いワード線１１８沿いの行から始まる。次にワード線１１７沿いのメモリセルの行がプログラムされ、ブロック１２３の全体を通じて同様に進む。最後にワード線１１５沿いの行がプログラムされる。
【００２３】
第２のブロック１２５は類似し、そのメモリセルストリングは第１のブロック１２３のストリングと同じグローバルビット線へ接続するが、異なるワードおよびコントロールゲート線のセットを有する。ワードおよびコンントロールゲート線は、行制御回路５５によって適当な動作電圧まで駆動される。図２のプレーン１および２等、２つ以上のプレーンまたはサブアレイがシステムにある場合、それらの間に延在する共通ワード線を１つのメモリアーキテクチャで使用する。代わりに、共通ワード線を共用する３つ以上のプレーンまたはサブアレイがあってもよい。別のメモリアーキテクチャでは、個々のプレーンまたはサブアレイのワード線が別々に駆動される。
【００２４】
前に参照したＮＡＮＤ特許および公開特許出願のいくつかに記載されているように、各電荷蓄積素子または領域にて３つ以上の検出可能な電荷レベルを格納するようにメモリシステムを動作させることができ、これにより２ビット以上のデータを各々に格納する。メモリセルの電荷蓄積素子は一般的には導電性フローティングゲートであるが、米国公開特許出願第２００３／０１０９０９３号（特許文献１７）で記載されている非導電性誘電性電荷捕獲材であってもよい。
【００２５】
図４は、以降のさらなる説明で一例として使用するフラッシュメモリセルアレイ７（図１）の編制を概念的に示している。１つの集積メモリセルチップ、２つのチップ（各チップ上のプレーンのうちの２つ）、または４つの別々のチップの上に、メモリセルの４つのプレーンまたはサブアレイ１３１〜１３４があってよい。具体的な配置は以降の論述にとって重要でない。もちろん、１、２、８、１６またはそれ以上等、これ以外の数のプレーンがシステム内にあってもよい。プレーンは、それぞれのプレーン１３１〜１３４に位置するブロック１３７、１３８、１３９、および１４０等、図４にて矩形で示されたメモリセルブロックに個別に分割される。各プレーンには何十、何百ものブロックがあってよい。前述したように、メモリセルのブロックは消去の単位、すなわち物理的にともに消去できる最小数のメモリセルである。しかし、並列性を高めるためには、これよりも大きいメタブロック単位でブロックを操作する。各プレーンから１つのブロックが論理的にともにリンクされることによってメタブロックが形成される。４つのブロック１３７〜１４０によって１つのメタブロック１４１が形成される様子が示されている。通常ならば、１メタブロック内の全てのセルが一緒に消去される。ブロック１４５〜１４８からなる第２のメタブロック１４３に見られるように、メタブロックを形成するのに用いられるブロックを、それぞれのプレーンの中で同じ相対的位置に制限する必要はない。通常は全てのプレーンにわたってメタブロックを延在させるのが好ましいが、高いシステム性能のためには、異なるプレーンにある１つ、２つ、または３つのブロックのいずれかまたは全部からなるメタブロックを動的に形成する能力を用いてメモリシステムを操作することができる。これにより、１回のプログラミング操作で格納できるデータ量にメタブロックのサイズをより近づけることが可能となる。
【００２６】
個々のブロックはさらに、動作上の目的のため、図５に示すようにメモリセルのページに分割される。例えば、ブロック１３１〜１３４の各々のメモリセルは８つのページＰ０〜Ｐ７に各々分割されている。代わりに、１６、３２、またはそれ以上のメモリセルページが各ブロックの中にあってよい。ページは、ブロックの中でデータをプログラムし読み出す単位であり、一度にプログラムされる、最少量のデータを収容する。図３のＮＡＮＤアーキテクチャでは、ブロックの中でワード線沿いのメモリセルからページが形成されている。しかし、メモリシステムの動作上の並列性を高めるために、２つ以上のブロックの中にあるそのようなページをメタページに論理的にリンクできる。図５には、４つのブロック１３１〜１３４の各々にある１つの物理ページから形成されたメタページ１５１が示されている。メタページ１５１は、例えば４つのブロックの各々にあるページＰ２を含むが、メタページのページは、各ブロックの中で同じ相対的位置になくてもよい。全４つのプレーンにわたって最大量のデータを並行してプログラムし読み出すことが望ましいが、高いシステム性能のため、異なるプレーンの中にある別々のブロックの１つ、２つ、または３つのページのいずれかまたは全てからメタページを形成するべくメモリシステムを操作することもできる。これにより、並行して簡便に扱えるデータ量にプログラミングおよび読み出す操作を適合させることができ、さらにデータがプログラムされない部分がメタページに残る機会は減ることになる。
【００２７】
図５に示す複数のプレーンの物理ページからなるメタページは、それらの複数のプレーンのワード線の行に沿ってメモリセルを収容する。１つのワード線の行にある全てのセルを同時にプログラムするよりは、２つ以上の互い違いのグループでそれらをかわるがわるにプログラムするほうがむしろ一般的であり、各グループは、（単一ブロック内の）１ページのデータ、または（複数のブロックにまたがる）１メタページのデータを格納する。交互のメモリセルを一度にプログラムすることにより、データレジスタおよびセンス増幅器を含むひとまとまりの周辺回路を各ビット線のために用意する必要はなく、むしろそれらは隣接するビット線によって時分割共用される。これにより周辺回路に要する基板空間の量を節約し、メモリセルの行沿いの実装密度を増すことができる。さもなくば、所与のメモリシステムから最大限の並列性を引き出すため、行沿いの全セルを同時にプログラムするのが望ましい。
【００２８】
図３を参照し、行沿いの互い違いのメモリセルへのデータの同時プログラミングを最も簡便に果たすには、ＮＡＮＤストリングの少なくとも一端に沿って２行の選択トランジスタ（図示せず）を、図に示された１行の代わりに設ける。この場合、一方の行の選択トランジスタは、１つの制御信号に応じてブロック内の互い違いのストリングをそれぞれのビット線へ接続し、他方の行の選択トランジスタは、別の制御信号に応じて介在する互い違いのストリングをそれぞれのビット線へ接続する。したがって、メモリセルの各行には２ページ分のデータが書き込まれる。
【００２９】
各論理ページのデータ量は通常、整数にして１セクタ数以上のデータであり、各セクタは慣例上５１２バイトのデータを収容する。図６は、１ページまたはメタページのデータの、２セクタ１５３および１５５からなる論理データページを示している。各セクタは普通、５１２バイトのユーザまたはシステムデータが格納される部分１５７と、部分１５７にあるデータ、またはこれを格納する物理ページまたはブロックに関係するオーバーヘッドデータのために、さらなるバイト数１５９とを収容する。オーバーヘッドデータのバイト数は通常ならば１６バイトであり、セクタ１５３および１５５の各々につき合計５２８バイトになる。オーバーヘッド部分１５９は、プログラミング中にデータ部分１５７から算出されるＥＣＣ、その論理アドレス、ブロックが消去され再プログラムされる回数の経験カウント、１つ以上の制御フラグ、動作電圧レベル、および／またはその他に加え、そのようなオーバーヘッドデータ１５９から算出されるＥＣＣを収容できる。代わりに、オーバーヘッドデータ１５９、またはこれの一部分は、他のブロックの別のページに格納できる。
【００３０】
メモリの並列性が高まるにつれメタブロックのデータ格納容量は増し、その結果、データページおよびメタページのサイズも増す。かくしてデータページは３セクタ以上のデータを収容する場合がある。１データページ内に２セクタ、そして各メタページにつき２データページで、１メタページ内のセクタは４つになる。よって、各メタページは２，０４８バイトのデータを格納する。これは高度な並列性であり、行内のメモリセル数の増加にともないさらに高めることができる。このため、ページおよびメタページ内のデータ量を増やすため、フラッシュメモリの幅が拡大されつつある。
【００３１】
前述した物理的に小さい再プログラム可能な不揮発性メモリカードおよびフラッシュドライブは市販され、データ格納容量は５１２メガバイト（ＭＢ）、１ギガバイト（ＧＢ）、２ＧＢ、４ＧＢ、またはそれ以上になる。図７は、ホストとそのような大容量メモリシステムとの間の最も一般的なインターフェイスを示している。ホストは、ホストによって実行されるアプリケーションソフトウェアまたはファームウェアプログラムによって生成または使用されるデータファイルを処理する。ワープロデータファイルはその一例であり、コンピュータ支援設計（ＣＡＤ）ソフトウェアの描画ファイルもこれにあたり、主にＰＣ、ラップトップコンピュータ等、一般的なコンピュータホストに見られる。ｐｄｆ形式の文書もそのようなファイルである。静止画デジタルビデオカメラは写真ごとにデータファイルを生成し、データファイルはメモリカードに格納される。携帯電話機は、電話帳等、内蔵メモリカード上のファイルからデータを利用する。ＰＤＡは、住所ファイル、カレンダーファイル等、数通りのファイルを格納し使用する。そのような用途において、メモリカードはホストを操作するソフトウェアを収容することもある。
【００３２】
図７には、ホストとメモリシステムとの間の一般的な論理インターフェイスが示されている。連続する論理アドレス空間１６１は、メモリシステムに格納されうる全データのためにアドレスを提供するにあたって十分に大きい。ホストアドレス空間は通常、データクラスタの単位に分割される。所与のホストシステムにおいて、いくつかのデータセクタを収容するように各クラスタを設計でき、４から６４セクタあたりが一般的である。標準的なセクタは５１２バイトのデータを収容する。
【００３３】
図７の例では、３つのデータファイル１、２、および３が作成されたものとして示されている。ホストシステムで実行するアプリケーションプログラムは、整列された１セットのデータとして各ファイルを作成し、一意な名前またはその他の参照符によってこれを識別する。ファイル１にはホストによって、他のファイルにまだ割り振られていない十分に使用可能な論理アドレス空間が、割り当てられる。ファイル１は、一連の使用可能な論理アドレス範囲が割り当てられた状態で示されている。この他に通常ならば、ホストオペレーティングソフトウェアのための特定の範囲等、特定の目的のためにアドレス範囲が割り振られ、これらのアドレス範囲は、たとえホストがデータに論理アドレスを割り当てようとするときにこれらのアドレスがまだ利用されていなくとも、データの格納にあたって回避される。
【００３４】
ホストは同様に、後ほどホストによってファイル２が作成されるときに、論理アドレス空間１６１の中の２つの異なる連続アドレス範囲を、図７に示すように割り当てる。ファイルに連続する論理アドレスを割り当てる必要はなく、既に他のファイルに割り振られているアドレス範囲の間にあるアドレスの断片であってもよい。この例はさらに、ホストによって作成されたもうひとつのファイル３に、ファイル１および２やその他のデータにまだ割り振られていないホストアドレス空間の別の部分が割り振られる様子を示している。
【００３５】
ホストは、ファイルアロケーションテーブル（ＦＡＴ）を保守することによってメモリ論理アドレス空間を絶えず把握し、ホストが様々なホストファイルに割り当てる論理アドレスは、このファイルアロケーションテーブルで保守される。ＦＡＴテーブルは通常、ホストメモリの他に不揮発性メモリに格納され、新しいファイルが格納されるとき、他のファイルが削除されるとき、ファイルが修正されるとき等に、ホストによって頻繁に更新される。ホストは、例えばホストファイルが削除されるときにＦＡＴテーブルを更新することによって既に削除ファイルに割り振られていた論理アドレスを解除して、それらの論理アドレスを別のデータファイルに使用できることを明らかにする。
【００３６】
ホストは、メモリシステムコントローラがファイルを格納するために選択する物理位置を顧慮しない。典型的なホストは、その論理アドレス空間と、これがその各種ファイルに割り振った論理アドレスだけを認識する。他方、メモリシステムは、典型的なホスト／カードインターフェイスを通じて、データが書き込まれた論理アドレス空間部分だけを認識し、特定のホストファイルへ割り振られる論理アドレスは認識せず、ホストファイルの数すら認識しない。メモリシステムコントローラは、データの格納や引き出しのためにホストから提供される論理アドレスを、ホストデータが格納されるフラッシュメモリセルアレイの中の一意な物理アドレスに変換する。ブロック１６３は、メモリシステムコントローラによって保守されるこれらの論理−物理アドレス変換の作業テーブルを表している。
【００３７】
メモリシステムコントローラは、システムの性能を高い水準に維持しながらメモリアレイ１６５のブロックおよびメタブロックの中でデータファイルを格納するようにプログラムされる。この例証では４つのプレーンまたはサブアレイが使われている。データは好ましくは、各プレーンのブロックから形成されたメタブロック全体にわたって、システムが許す最大限の並列度でプログラムされ、読み出される。通常は、メモリコントローラによって使用されるオペレーティングファームウェアおよびデータを格納する予約ブロックとして、少なくとも１つのメタブロック１６７が割り振られる。そして、ホストオペレーティングソフトウェアやホストＦＡＴテーブル等の格納のため、別のメタブロック１６９または複数のメタブロックを割り振ることができる。物理格納空間のほとんどはデータファイルの格納のために残る。しかし、メモリコントローラは、様々なファイルオブジェクトにおいて受信データがホストによってどのように割り振られたかを認識しない。通常、メモリコントローラがホストとのやり取りを通じて認識することの全ては、ホストによって特定の論理アドレスに書き込まれるデータが対応する物理アドレスに格納されるということだけであり、これはコントローラの論理−物理アドレステーブル１６３によって管理される。
【００３８】
典型的なメモリシステムにおいて、アドレス空間１６１の中でデータ量を格納するのとは別に数ブロック分の格納容量が余分に用意される。メモリの寿命の中で他のブロックが欠陥となった場合に代用される冗長ブロックとして、これらの余分のブロックを１つ以上用意することができる。当初メタブロックに割り当てられていた欠陥ブロックのための冗長ブロックを代用する等、個々のメタブロックの中でのブロックの論理的グループ分けは通常、様々な理由から変更される。消去済みブロックのプールでは通常、メタブロック１７１等、１つ以上の追加のブロックが保守される。ホストがメモリシステムにデータを書き込む場合、コントローラはホストによって割り当てられた論理アドレスを、消去済みブロックプールにあるメタブロックの中の物理アドレスに変換する。そして、論理アドレス空間１６１の中でデータ格納のために使われていない他のメタブロックは消去され、以降のデータ書き込み操作中に使用するために消去済みプールブロックとして指定される。
【００３９】
特定のホスト論理アドレスに格納されたデータは、元の格納データが用済みになると、新規データによって頻繁に上書きされる。これに応じてメモリシステムコントローラは新規データを消去済みブロックに書き込み、次いで論理アドレスでデータを格納する新しい物理ブロックを明らかにするため、それらの論理アドレスの論理−物理アドレステーブルを変更する。そして、それらの論理アドレスのところで元のデータを収容するブロックは消去され、新規データの格納のために使用できるようになる。通常、書き込みが始まるときに消去ブロックプールの消去済みブロックに十分な格納容量がない場合、このような消去を現在のデータ書き込み操作が完了する前に行わなければならない。これはシステムのデータプログラミング速度を損なうおそれがある。メモリコントローラは通常、所与の論理アドレスにあるデータが用済みになっていることを、ホストがそれと同じ論理アドレスに新規データを書き込むときに初めて知る。したがって、メモリのブロックの多くは、そのような無効データを暫くの間格納することがある。
【００４０】
集積回路メモリチップの領域を効率よく運用するためにブロックとメタブロックのサイズは拡大している。その結果、個別データ書き込みの大部分で格納されるデータ量はメタブロックの格納容量に満たなく、多くの場合、ブロックの格納容量にすら満たない。メモリシステムコントローラは普通、新規データを消去済みプールのメタブロックへ誘導するので、メタブロックには埋まらない部分が生じる。新規データが別のメタブロックに格納されたデータの更新である場合、別のメタブロックにある、新規データメタページの論理アドレスと連続する論理アドレスを有する、残りの有効データメタページもまた、望ましくは論理アドレスの順序で新しいメタブロックにコピーされる。古いメタブロックは他の有効データメタページを保持することがある。その結果、個別のメタブロックの一部のメタページのデータはいずれ用済み、無効となり、新規データに差し替えられ、同じ論理アドレスが異なるメタブロックに書き込まれることになる。
【００４１】
論理アドレス空間１６１の全体にわたってデータ格納のために十分な物理メモリ空間を維持するため、そのようなデータは定期的に圧縮または整理される（ガーベッジコレクション）。メタブロックの中でデータセクタをできる限り論理アドレスと同じ順序に保つことも望ましい。なぜならば、こうすれば連続する論理アドレスでデータをより効率的に読み出すことができるからである。よって、通常は、このさらなる目的のためにもデータの圧縮とガーベッジコレクションが行われる。米国特許第６，７６３，４２４号（特許文献１８）には、不完全ブロックデータ更新を受け取るときのメモリ管理とメタブロックの使用の態様がいくつか記載されている。
【００４２】
データ圧縮では通常、メタブロックから有効データメタページを全て読み出し、それらを新しいブロックに書き込み、その過程で無効データを含むメタページは無視する。また、有効データを含むメタページは好ましくは、そこに格納されたデータの論理アドレスの順序に一致する物理アドレス順で配置される。無効データを収容するメタページは新しいメタブロックへコピーされないので、新しいメタブロックに占めるメタページ数は古いメタブロックにおけるそれを下回る。そして、古いブロックは消去され、新規データの格納のために使用できるようになる。この整理によって得られる追加のメタページ容量は、他のデータの格納に役立てることができる。
【００４３】
ガーベッジコレクション中に、論理アドレスが連続するか、あるいはほぼ連続する有効データのメタページが２つ以上のメタブロックから回収され、別のメタブロックに、通常ならば消去済みブロックプールのメタブロックに、再度書き込まれる。元の２つ以上のメタブロックから全ての有効データメタページがコピーされたら、先々の使用に向けてそれらを消去できる。
【００４４】
データ整理とガーベッジコレクションには時間がかかり、データの整理またはガーベッジコレクションをホストからのコマンドを実行する前に行う必要がある場合は特に、メモリシステムの性能に影響する可能性がある。メモリシステムコントローラは普通、そのような操作を可能な限りバックグラウンドで行うようにスケジュールするが、これらの操作を遂行する必要から、コントローラは、そのような操作が完了するまではビジー状態信号をホストに提供しなければならない。例えば、ホストがメモリに書き込もうとするデータの全てを格納するにあたって十分な消去済みメタブロックが消去済みブロックプールにない場合には、ホストコマンドの実行を延期することができるから、まずはデータの整理またはガーベッジコレクションで１つ以上の有効データのメタブロックを片づける必要があり、その後にそれらのメタブロックを消去できる。したがって、そのような混乱を最小限に抑えるためにメモリ制御の管理に注意を払わなければならない。そのような手法が、２００３年１２月３０日に出願の「Management of Non-Volatile Memory Systems Having Large Erase Blocks （大きい消去ブロックを有する不揮発性メモリシステムの管理）」という米国特許出願第１０／７４９，８３１号（特許文献１９）、２００３年１２月３０日に出願の「Non-Volatile Memory and Method with Block Management System （ブロック管理システムを伴う不揮発性メモリおよび方法）」という米国特許出願第１０／７５０，１５５号（特許文献２０）、２００４年８月１３日に出願の「Non-Volatile Memory and Method with Memory Planes Alignment （メモリプレーンアラインメントを伴う不揮発性メモリおよび方法）」という米国特許出願第１０／９１７，８８８号（特許文献２１）、２００４年８月１３日に出願の米国特許出願第１０／９１７，８６７号（特許文献２２）、２００４年８月１３日に出願の「Non-Volatile Memory and Method with Phased Program Failure Handling （段階的プログラム障害処理を伴う不揮発性メモリおよび方法）」という米国特許出願第１０／９１７，８８９号（特許文献２３）、および２００４年８月１３日に出願の「Non-Volatile Memory and Method with Control Data Management（制御データ管理を伴う不揮発性メモリおよび方法）」という米国特許出願第１０／９１７，７２５号（特許文献２４）に数多く説明されている。
【００４５】
非常に大きい消去ブロックを伴うメモリアレイの動作を効率的に制御するにあたって１つの課題となるのは、所与の書き込み操作中に格納されるデータセクタの数を、メモリのブロックの容量に一致させ、その境界に整合させることである。１つのアプローチでは、メタブロック全体を埋め尽くす量に満たない一定量のデータを格納するため、ホストからの新規データの格納に使うメタブロックを、最大ブロック数未満で適宜構成する。適応メタブロックの使用が、２００３年１２月３０日に出願の「Adaptive Metablocks(適応メタブロック）」という米国特許出願第１０／７４９，１８９号（特許文献２５）に記載されている。データブロック間の境界とメタブロック間の物理的境界の整合が、２００４年５月７日に出願の米国特許出願第１０／８４１，１１８号（特許文献２６）、および２００４年１２月１６日に出願の「Data Run Programming（データランプログラミング）」という米国特許出願第１１／０１６，２７１号（特許文献２７）に記載されている。
【００４６】
メモリコントローラはまた、ホストによって不揮発性メモリに格納されるＦＡＴテーブルのデータをメモリシステムのより効率的な動作に役立てることができる。例えば、論理アドレスの解除によりホストによってデータが用済みと識別されたことを知るのに役立てる。メモリコントローラは、通常ならばホストがその論理アドレスに新規データを書き込むことから知ることによってこれを事前に知ることにより、そのような無効データを収容するブロックの消去スケジュールを立てることができる。これは、２００４年７月２１日に出願の「Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems（不揮発性メモリシステムでデータを保守する方法および装置）」という米国特許出願第１０／８９７，０４９号（特許文献２８）に記載されている。この他の手法として、ホストがメモリに新規データを書き込むパターンを監視することにより、所与の書き込み操作が単一ファイルか否かを、または複数のファイルである場合にはファイル間の境界がどこにあるかを推定する。２００４年１２月２３日に出願の「FAT Analysis for Optimized Sequential Cluster Management（最適逐次クラスタ管理のためのＦＡＴ解析）」という米国特許出願第１１／０２２，３６９号（特許文献２９）では、この種の手法の使用が記載されている。
【００４７】
メモリシステムを効率よく操作するには、ホストによって個々のファイルのデータに割り当てられる論理アドレスについて、コントローラができるだけ多くのことを知ることが望ましい。かくしてデータファイルは、ファイルの境界が分からなければ多数のメタブロックに散在するところを、コントローラによって１つのメタブロックの中または１グループのメタブロックの中で格納することができる。その結果、データ整理およびガーベッジコレクション操作の回数と複雑さは抑えられる。結果的にメモリシステムの性能は向上する。しかし、前述したようにホスト／メモリインターフェイスが論理アドレス空間１６１（図７）を含む場合、メモリコントローラがホストデータファイル構造について多くを知ることは困難である。
【００４８】
図８を参照すると、既に図７に示されている典型的な論理アドレスホスト／メモリインターフェイスが異なる形で示されている。ホスト生成データファイルにはホストによって論理アドレスが割り振られる。そして、メモリシステムはこれらの論理アドレスを認識し、データが実際に格納されるメモリセルのブロックの物理アドレスにマッピングする。
【００４９】
直接データファイル記憶
大量データ格納のための改良されたホスト−メモリシステム間インターフェイスは、論理アドレス空間の使用を解消する。これは前述した直接データファイルアプリケーションの主題にあたる。ホストは代わりに、一意なファイルＩＤ（またはその他の一意な参照符）と、ファイル内でのデータ単位（バイト等）のオフセットアドレスとによって各ファイルを論理的にアドレスする。このファイルアドレスはメモリシステムコントローラへ直接提供され、メモリシステムコントローラは、各ホストファイルのデータが物理的に格納される位置について独自のテーブルを保管する。この新しいインターフェイスは、図２〜図６との関係で前述したのと同じメモリシステムで実装できる。前述したものとの主な違いは、そのメモリシステムがホストシステムと通信し、ファイルデータを格納する方法にある。
【００５０】
図９にはファイル本位インターフェイスが示され、これは図７の論理アドレスインターフェイスと比較するべきものである。ファイル１、２、および３の各々の識別情報と図９のファイルの中でのデータのオフセットは、メモリコントローラへ直に引き渡される。そしてこの論理アドレス情報はメモリコントローラ機能１７３によってメモリ１６５のメタブロックおよびメタページの物理アドレスに翻訳される。
【００５１】
ファイル本位インターフェイスは図１０にも示され、これは図８の論理アドレスインターフェイスと比較するべきものである。図８の論理アドレス空間とホストによって保守されるＦＡＴテーブルは図１０にない。メモリシステムにとって、ホストによって生成されるデータファイルはファイル番号とファイル内でのデータのオフセットとによって識別される。そしてメモリシステムはメモリセルアレイの物理ブロックにファイルを直接マッピングする。
【００５２】
直接データファイル記憶手法によって新規データファイルがメモリにプログラムされる場合、データはメモリセルの消去済みブロックへ書き込まれ、この書き込みはこのブロック内の第１の物理位置から始まり、このブロックの位置を順番に進む。データは、ファイルにおけるこのデータのオフセットの順序にかかわりなく、ホストからの受信順序でプログラムされる。プログラミングは、ファイルの全データがメモリへ書き込まれるまで続く。ファイル内のデータ量が単一メモリブロックの容量を超過する場合に最初のブロックが一杯になると、プログラミングは第２の消去済みブロックで継続する。第２のメモリブロックは、第１の位置からファイルの全データが格納されるか、あるいは第２のブロックが一杯になるまで、第１のメモリブロックと同様にプログラムされる。ファイルのデータが残っている場合は、第３のブロックまたは追加のブロックにプログラムされる。単一ファイルのデータを格納する複数のブロックまたはメタブロックが物理的または論理的に隣り合う必要はない。説明を平易にするため、別段の断りがない限り、本願明細書で用いられる用語「ブロック」は、ある特定のシステムでメタブロックが使われるか否かに応じて、ブロック消去単位か、あるいは多重ブロック「メタブロック」を指すものとする。
【００５３】
図１１〜図１３はフラッシュメモリの直接データファイル操作の例を提示するものであり、このメモリシステムにおいて符号化、圧縮、暗号化をはじめとするデータ変換は行われない。図１１Ａを参照すると、メモリシステムへのデータファイルの書き込みが例示されている。この例のデータファイル１８１は、垂直の実線の間に延在する形で示されたメモリシステムの１ブロックまたはメタブロック１８３の格納容量より大きい。このためデータファイル１８１の部分１８４は第２のブロック１８５にも書き込まれる。これらのメモリセルブロックは物理的に隣接する形で示されているが、隣接する必要はない。ファイル１８１のデータは、ファイルの全データがメモリへ書き込まれるまで、それらがホストから流れ込んで受信されるにつれて書き込まれる。図１１Ａの例におけるデータ１８１は、ホストによって書き込みコマンドが発行された後にホストから受信する最初のファイルのデータである。
【００５４】
メモリシステムが格納データを管理し追跡するための好適な方法では、不定サイズのデータグループを使用する。つまり、ファイルのデータは複数のデータグループとして格納され、それらのデータグループを所定の順序でつなぎ合わせることにより完全なファイルが形成される。しかし、好ましくは、メモリシステムコントローラがファイルインデックステーブル（ＦＩＴ）を用いてファイル内のデータグループの順序を保守する。ホストからのデータストリームが書き込まれるにつれ、ファイルデータの論理オフセットアドレスまたはデータを格納する物理空間に途切れが生じると、新規データグループが始まる。例えば、ファイルのデータが１つのブロックを埋め尽くし、別のブロックへの書き込みが始まる場合に、そのような物理的途切れが生じる。これは図１１Ａに例示され、ここで第１のブロック１８３が第１のデータグループによって埋め尽くされると、ファイルの残りの部分１８４が第２のデータグループとして第２のブロック１８５に格納される。第１のデータグループは（Ｆ０，Ｄ０）で表すことができ、ここでＦ０はデータファイルの先頭の論理オフセットであり、Ｄ０はメモリの中でファイルが始まるところの物理位置である。第２のデータグループは（Ｆ１，Ｄ１）と表され、ここでＦ１は第２のブロック１８５の先頭に格納されるデータの論理ファイルオフセットであり、Ｄ１はデータが格納される物理位置である。
【００５５】
ホスト−メモリインターフェイスを通じて転送されるデータ量は、データのバイト数、データのセクタ数、または他の何らかの粒度で表すことができる。ホストはほとんどの場合、そのファイルのデータをバイト粒度で定義するが、現在の論理アドレスインターフェイスを通じて大容量メモリシステムと通信する場合には、さらに各々５１２バイトのセクタまたは各々複数のセクタからなるクラスタにバイトをグループ分けする。これは普通、メモリシステムの動作を簡素化するために行われる。本願明細書で説明するファイル本位のホスト−メモリインターフェイスでは他の何らかのデータ単位を使用することもできるが、元のホストファイルバイト粒度が概して好ましい。つまりデータオフセット、長さ等は、セクタ、クラスタ等ではなく、妥当で最小のデータ単位であるバイトで好ましくは表される。これは、本願明細書で説明する手法によるフラッシュメモリ格納容量のより効率的な使用を可能にする。
【００５６】
ホストはまた、一般的な既存論理アドレスインターフェイスにおいて、書き込まれるデータの長さを指定する。本願明細書で説明するファイル本位インターフェイスでもこれを果たすことはできるが、書き込みコマンドの実行にあたって必要ではないので、ホストは書き込まれるデータの長さを規定しないのが好ましい。
【００５７】
図１１Ａに示された方法でメモリへ書き込まれる新規ファイルは、ＦＩＴの中で、データグループの順序に並んだ一連のインデックス項目（Ｆ０，Ｄ０）（Ｆ１，Ｄ１）として表される。つまり、ホストシステムがある特定のファイルにアクセスする場合に、ホストはそのファイルＩＤまたは他の識別情報をメモリシステムへ送信すると、メモリシステムはそのファイルを構成するデータグループを識別するＦＩＴにアクセスする。メモリシステムの動作上の便宜のため、個別データグループの長さを個別の項目に含めることもできる。これを使用する場合、メモリコントローラはデータグループの長さを計算し、格納する。
【００５８】
ホストが図１１Ａのファイルを開いた状態で維持する限り、ホストから受信するファイルのさらなるデータの書き込み位置を規定するため、物理的書き込みポインタＰも好ましくは保守される。ファイルの新規データは、ファイル内での新規データの論理位置にかかわりなく、物理メモリにてファイルの末尾に書き込まれる。メモリシステムは、４つまたは５つのファイル等、一度に複数のファイルが開き続けることを許容し、各ファイルにつき書き込みポインタＰを保守する。異なるファイルの書き込みポインタは異なるメモリブロック内の位置を指し示す。メモリシステムの開放ファイル制限に相当する数の開放ファイルが既に存在するときにホストシステムが新しいファイルを開こうとすると、まずは開いているファイルのどれかひとつを閉じ、その後に新たなファイルを開く。ファイルが閉じられた後は、その閉じたファイルの書き込みポインタＰを保守する必要はもはやない。
【００５９】
図１１Ｂは、既に書き込みが行われるが、まだ開いている図１１Ａのファイルの末尾への、ホストによる、同じく書き込みコマンドを用いた、データの付加を例示する。ホストシステムによってデータ１８７がファイルの末尾へ追加された様子が示され、このデータは第２のブロック１８５の中、そのファイルのデータの末尾に、書き込まれている。付加されたデータはデータグループ（Ｆ１，Ｄ１）の一部となり、既存のデータグループ１８４と付加されたデータ１８９との間に論理アドレスや物理アドレスの途切れはないので、データグループのデータは増加する。ＦＩＴでは引き続き、ファイル全体が一連のインデックス項目（Ｆ０，Ｄ０）、（Ｆ１，Ｄ１）として表される。ポインタＰのアドレスも付加された格納データの末尾のものに変更される。
【００６０】
図１１Ｃには、既に書き込みが行われている図１１Ａのファイルへデータブロック１９１を挿入する例が示されている。ホストはデータ１９１をファイルの中に挿入しているが、メモリシステムは、位置１９３、書き込み済みファイルデータの末尾に、挿入データを付け加える。開放ファイルの中へデータが挿入されるときにファイルのデータを論理的順序で書き換える必要はないが、これは後ほどホストがファイルを閉じた後にバックグランドで果たすこともできる。挿入データは第２のメモリブロック１８５の中にすっかり格納され、１つの新規グループ（Ｆ１，Ｄ３）を形成する。しかし、この挿入を行う結果、図１１Ａの以前のデータグループ（Ｆ０，Ｄ０）は２つのグループに、すなわち挿入前のデータグループ（Ｆ０，Ｄ０）と、挿入後のデータグループ（Ｆ２，Ｄ１）とに分かれる。なぜならば、挿入の始点Ｆ１と挿入の終点Ｆ２に見られるように、データの論理的途切れが生じる場合には新規データグループを形成する必要があるからである。グループ（Ｆ３，Ｄ２）は、物理アドレスＤ２が第２のブロック１８５の先頭であるが故の結果である。グループ（Ｆ１，Ｄ３）および（Ｆ３，Ｄ２）は、たとえ同じメモリブロックに格納されても、そこに格納されるデータのオフセットに途切れがあるため、分離され続ける。元のファイルは挿入に伴い、メモリシステムのＦＩＴの中ではデータグループの順序に並んだインデックス項目（Ｆ０，Ｄ０）、（Ｆ１，Ｄ３）、（Ｆ２，Ｄ１）、（Ｆ３，Ｄ２）で表される。図１１Ａ、１１Ｂ、および１１Ｃの例から、新規または既存ファイルの新規データの書き込みにあたってメモリ内のデータが用済みにならないことに気づく。つまり、書き込みコマンドや挿入コマンドの実行によって他のデータが無効になったり用済みになったりすることはない。
【００６１】
図１１Ｄはもうひとつの例を例示するものであり、当初図１１Ａに示すように書き込まれたデータの一部が更新コマンドを用いて更新される。データファイルの部分１９５が更新される様子が示されている。更新にともないメモリシステムの中でファイル全体を書き換えるのではなく、ファイルの更新部分１９７は書き込み済みのデータへ付け加えられる。そして、書き込み済みデータの部分１９９は用済みになる。通常は用済みデータに取られる空間を解放するために更新されたファイルを整理するのが望ましいが、通常これはホストがファイルを開いているときには行われず、ファイルが閉じた後にバックグランドで行われる。更新後のファイルは、メモリシステムのＦＩＴの中でデータグループの順序に並んだインデックス項目（Ｆ０，Ｄ０）、（Ｆ１，Ｄ３）、（Ｆ２，Ｄ１）、（Ｆ３，Ｄ２）で表される。図１１Ａの１個のデータグループ（Ｆ０，Ｄ０）は図１１Ｄで再び断片に、すなわち更新部分の前のデータグループと、更新部分と、更新部分の後のデータグループとに分かれる。
【００６２】
不定長データグループの使用をさらに例証するため、同じファイルがかかわる一連の書き込み操作を図１２Ａ〜図１２Ｅに順次示す。元のファイルデータＷ１はまず、書き込みコマンドによって、図１２Ａに示すようにメモリシステムの２つのブロックへ書き込まれる。そして、ファイルは２つのデータグループによって定義され、第１のグループは物理メモリブロックの先頭から始まり、第２のグループは物理メモリブロック境界の後ろになる必要がある。よって、図１２Ａのファイルは、次のデータグループの一連のインデックス項目（Ｆ０，Ｄ０）、（Ｆ１，Ｄ１）によって識別される。
【００６３】
図１２Ｂでは、図１２Ａで書き込まれたファイルデータが更新コマンドによって更新される。更新されたファイルデータＵ１は従前のグループ（Ｆ１，Ｄ１）の直後に書き込まれ、更新データの従前バージョンは用済みになる。図１２Ａの従前のグループ（Ｆ０，Ｄ０）は図１２Ｂの変更グループまで短縮され、従前グループ（Ｆ１，Ｄ１）はグループ（Ｆ４，Ｄ２）まで短縮される。更新データはメモリブロックの境界に重なっているので、２つのグループ（Ｆ２，Ｄ３）および（Ｆ３，Ｄ４）に書き込まれる。データの一部は第３のメモリブロックに格納される。ここで、ファイルは、次のデータグループの一連のインデックス項目（Ｆ０，Ｄ０）、（Ｆ２，Ｄ３）、（Ｆ３，Ｄ４）、（Ｆ４，Ｄ２）によって記述される。
【００６４】
図１２Ｃでは、挿入コマンドを用いた新規ファイルデータＩ１の挿入により図１２Ｂのファイルがさらに変更される。挿入データはメモリブロックの境界に重なっているので、新規データＩ１は、図１２Ｃの新規グループ（Ｆ５，Ｄ６）および（Ｆ６，Ｄ７）として、メモリの中、図１２Ｂの従前グループ（Ｆ４，Ｄ２）の直後に、書き込まれる。第４のメモリブロックが使用される。新規データＩ１の挿入のため、図１２Ｂの従前グループ（Ｆ０，Ｄ０）は図１２Ｃの短縮グループ（Ｆ０，Ｄ０）および（Ｆ７，Ｄ５）に分かれる。ここで、ファイルは、次のデータグループの一連のインデックス項目（Ｆ０，Ｄ０）、（Ｆ５，Ｄ６）、（Ｆ６，Ｄ７）、（Ｆ７，Ｄ５）、（Ｆ８，Ｄ３）、（Ｆ９，Ｄ４）、（Ｆ１０，Ｄ２）によって記述される。
【００６５】
図１２Ｄは、書き込みコマンドを用いてファイルの末尾へ新規データＷ２を付け加える、図１２Ｃのデータファイルへのさらなる変更を示している。新規データＷ２は、図１２Ｄの新規グループ（Ｆ１１，Ｄ８）として、図１２Ｃの従前グループ（Ｆ１０，Ｄ２）の直後に書き込まれる。ここで、ファイルは、次のデータグループの一連のインデックス項目（Ｆ０，Ｄ０）、（Ｆ５，Ｄ６）、（Ｆ６，Ｄ７）、（Ｆ７，Ｄ５）、（Ｆ８，Ｄ３）、（Ｆ９，Ｄ４）、（Ｆ１０，Ｄ２）、（Ｆ１１，Ｄ８）によって記述される。
【００６６】
図１２Ｅには開放ファイルへの第２の更新が示され、ここでは更新コマンドを発行するホストによって図１２Ｄのファイルへ更新ファイルデータＵ２が書き込まれる。図１２Ｅでは、更新データＵ２が図１２Ｄの従前グループ（Ｆ１１，Ｄ８）の直後に書き込まれ、そのデータの従前バージョンは用済みになる。図１２Ｄの従前グループ（Ｆ９，Ｄ４）は図１２Ｅで変更グループ（Ｆ９，Ｄ４）まで短縮され、従前グループ（Ｆ１０，Ｄ２）は完全に用済みとなり、従前グループ（Ｆ１１，Ｄ８）は短縮されて新規グループ（Ｆ１４，Ｄ９）を形成する。更新データは、図１２Ｅの新規グループ（Ｆ１２，Ｄ１０）および（Ｆ１３，Ｄ１１）に書き込まれ、ブロック境界に重なる。ここで、ファイルを格納するために第５のブロックが必要となる。ここで、ファイルは、次のデータグループの一連のインデックス項目（Ｆ０，Ｄ０）、（Ｆ５，Ｄ６）、（Ｆ６，Ｄ７）、（Ｆ７，Ｄ５）、（Ｆ８，Ｄ３）、（Ｆ９，Ｄ４）、（Ｆ１２，Ｄ１０）、（Ｆ１３，Ｄ１１）、（Ｆ１４，Ｄ９）によって記述される。
【００６７】
各ファイルのデータのオフセットは好ましくは、これまでの説明に従ってファイルが作成または変更された後に正しい論理的順序の中で連続する状態に保たれる。したがって、例えば挿入コマンド（図１２Ｃ）の実行の一部として、ホストによって提供される挿入データのオフセットは、挿入の直前のオフセットから連続し、ファイルの中に既にあるデータは挿入後に挿入データ量で増加する。更新コマンドではほとんどの場合、既存ファイルの所与のアドレス範囲の中でデータが同量の更新データに差し替えられるので、ファイルの他のデータのオフセットは通常ならば置き換える必要はない。
【００６８】
図１１および図１２に示された前述したデータ配分機能とインデックス機能の全てがメモリシステムのコントローラによって遂行されることに気づく。ホストは、書き込み、挿入、または更新コマンドのいずれかひとつの他に、ファイルＩＤとメモリシステムへ送信されるファイル内のデータのオフセットを伝達するまでである。残りの部分はメモリシステムが果たす。
【００６９】
説明した方法でホストからフラッシュメモリへ直接、ファイルデータを書き込む場合の利点として、格納データの粒度または分解能をホストのそれと同じに保つことができる。例えばホストアプリケーションが１バイト粒度でファイルデータを書き込むならば、フラッシュメモリでもそのデータは１バイト粒度で書き込まれる。この場合、個別データグループの中でのデータ量と位置はバイト数で測定される。つまり、ホストアプリケーションファイルの中で別個にアドレスされるオフセット単位のデータは、フラッシュメモリに格納されるファイルの中でも同じオフセット単位で別個にアドレスされる。同一ファイルのデータグループ間のブロック内境界は、インデックステーブルにおいて、最も近いバイトまたは他のホストオフセット単位まで指定される。同様に、異なるファイルのデータグループ間のブロック内境界はホストオフセット単位で定義される。
【００７０】
更新コマンドを実行する結果として、図１２Ｂおよび図１２Ｅから、ファイルの格納に必要な物理空間がファイル内のデータ量を上回ることに気づく。なぜならば、更新によって差し替えられたデータがメモリに格納され続けるからである。このため、用済みの無効データを取り除くことによってファイルのデータを整理（ガーベッジコレクション）し、物理格納空間を切り詰めることは非常に望ましい。こうすれば、他のデータに使える格納空間が増える。
【００７１】
図１２Ｂおよび図１２Ｅのファイルデータ更新の他にも、図１２Ｃのデータ挿入の結果として、ファイルデータの格納順序が乱れることに気づく。つまり、更新と挿入はメモリに格納されたファイルの更新／挿入時点における末尾に追加されるが、それらは大抵ファイル内のどこかに論理的に配置されている。図１２Ｂ、図１２Ｃ、および図１２Ｅの例がこれにあたる。そこで、ファイル内でのオフセットの順序に合わせてメモリに格納されたファイルのデータを並べ替えるのが望ましい。ページとブロックを順次に読み出すことは、ファイルのデータをそのオフセット順序で与えることになるので、並べ替えにより格納データの読み出し速度は向上する。これはまた、最大限のファイル断片化解消につながる。しかし、メモリシステムの性能にとって、読み出し効率を上げるためのファイルデータの並べ替えは、１つ以上のメモリブロックを解放して他のデータの格納に使用できるようにするファイルデータ整理ほど重要ではない。ファイル内のデータの並べ替えを単独で行うとオーバーヘッドの増大に見合うだけのメリットが得られないから、通常は単独で行わないが、多数のガーベッジコレクションの一部として行えば、オーバーヘッドの増大は皆無かごく僅かですむ。
【００７２】
図１２Ｅのファイルでは、２回のデータ更新Ｕ１およびＵ２によって用済みとなったデータグループ（灰色の部分）がメモリに格納されている。図１２Ｅから見てとれるように、ファイルの格納に使われているメモリ容量は、結果的にファイルのサイズをかなり上回っている。ガーベッジコレクションはしたがって適切である。図１３は、図１２Ｅのデータファイルでガーベッジコレクションを行った結果を例示する。ガーベッジコレクションの前に５ブロック近くの格納容量を占めていたファイルが（図１２Ｅ）、ガーベッジコレクションの後には３メモリセルブロック強で収まっている（図１３）。ガーベッジコレクション操作の一部として、データはこれの元の書き込みブロックから他の消去済みブロックへコピーされ、その後に元のブロックは消去される。ファイル全体でコレクションが行われる場合、そのデータは、ファイル内のデータ論理オフセット順序と同じ物理順序で新しいブロックへコピーされる。例えば更新Ｕ１およびＵ２ならびに挿入Ｉ１はガーベッジコレクション（図１３）の後に、ホストファイルにおける順序と同じ順序で格納される。
【００７３】
また、ガーベッジコレクションの結果として通常は整理されているファイルの中に新しい異なるデータグループが形成される。図１３の場合、次の新規データグループの新しい一連のインデックス項目（Ｆ０，Ｄ０）、（Ｆ１，Ｄ１）、（Ｆ２，Ｄ２）、（Ｆ３，Ｄ３）によってファイルが記述される。データグループの数は図１２Ｅに示すファイルの状態より遥かに少ない。このときデータグループは、ファイルのデータがコピーされた各メモリセルブロックにつき１つずつある。ファイルを形成する新規データグループを反映するため、ファイルインデックステーブル（ＦＩＴ）はガーベッジコレクション操作の一部として更新される。
【００７４】
不定サイズデータ単位の格納
現在のフラッシュメモリ動作において、従来、論理アドレス空間の中の所与のデータブロックを、データブロック内のデータ量と同じデータ格納容量を有するメモリの物理ブロックまたはメタブロックにマッピングする。これによりメモリシステムの動作効率は上がる。しかし、格納に先立ち論理アドレス空間と物理メモリとの間で論理データブロックのサイズを変えるようなデータ変換があると、論理データブロックと物理データブロックのこの望ましい同等サイズは失われる。この場合、従来のマッピング方式は使えない。
【００７５】
この問題を克服するひとつの手法として、サイズが不揃いの変換済みデータのグループに中間論理アドレスを割り当て、さらに中間アドレスのブロックをサイズが等しいフラッシュメモリのブロックへマッピングする。しかし、以降の更新によってそのような中間サイズデータグループのサイズが変化すると、中間アドレスから物理メモリブロックへの割り当てにあたって著しい断片化が生じる。その結果、より頻繁なデータ整理とガーベッジコレクションが必要となり、メモリシステムの性能は大いに低下する。
【００７６】
これまでのセクションで説明した直接データファイル手法を使用すれば、変換されたまたはサイズが不揃いになったデータ単位に対処しながら、なお良好なメモリシステム性能を維持できることが分かっている。不定サイズデータグループの使用は、量が異なり変化するデータ単位の取り扱いにとりわけ適している。
【００７７】
図１４は、前述した直接データファイル手法を用いてデータファイルを書き込む例を説明するが、データはメモリシステムの中に変換され、格納されるデータ量はホストのデータ量とは異なる。データ変換は、メモリへの書き込みに先立つ受信データの圧縮、暗号化等の符号化によって生じる。圧縮アルゴリズムの第一の目的は、ホストからの一定量のデータの格納に要する物理メモリ量を抑えるため、データ量を大幅に減らすことにある。他方、データ暗号化プロセスによって格納されるデータ量が増加することは多々ある。本願明細書で説明する手法は両方の場合に等しく応用できる他、データの一部はサイズが増加し、他の部分のサイズは減少する状況にも応用できる。
【００７８】
図１４を参照すると、ファイル２０１の中のデータは０からＮに及ぶ論理オフセットアドレス２０２を有する。ファイルオフセットアドレスは、データとともにホストから提供される。このアドレス空間は、メモリシステムの中でコンバージョン２０３によって隣接するデータ単位２０４のＨＤ１、ＨＤ２、ＨＤ３、およびＨＤ４に分割される。ブロック２０５に示すように、これらのホストデータ単位はその後、２０７に示すそれぞれの論理データグループＤＧ１、ＤＧ２、ＤＧ３、およびＤＧ４に変換される。この図では、変換済みデータグループＤＧ２は対応するホストデータ単位ＨＤ２より大きく、変換済みデータグループＤＧ３はホスト単位ＨＤ３と同じサイズであり、他の２つのデータグループのデータはそれぞれの未変換ホストデータより少ない。しかし、変換済みデータグループは、実行する変換のタイプに応じて、それぞれの対応するホストデータ単位よりことごとく大きくなるか、あるいはことごとく小さくなるのがより一般的である。ブロック２１１に示すように、データ変換の後には、前述した直接データファイル手法と同様に、フラッシュメモリセルアレイ２０９の中の物理アドレスを論理データグループ２０７に割り当てることにより、論理データグループ２０７をフラッシュメモリセルアレイ２０９に格納する。
【００７９】
ファイル論理アドレス範囲２０４の個別のホストデータ単位ＨＤ１等は、好ましくは、等量またはほぼ等量のデータを収容するように選択される。このデータ量はまた、好ましくは、データ変換２０５で使用するデータと等しい量に設定される。つまり、圧縮・暗号化アルゴリズムの少なくともその多くは、一度に一定量のファイルデータだけを処理し、ホストデータ単位ＨＤ１等のサイズはその量と等しい量に設定できる。通常は変換アルゴリズムのパラメータ設定によってこの量を選択できるから、この量とホストデータ単位ＨＤ１等のサイズを併せて選択することにより、特定のシステム動作の最適化を図ることができる。
【００８０】
図１５に示すように、これらの手法は前述したホストデータファイルインターフェイスに限定されず、ホストシステムとメモリシステムとの間で多数のファイルを単一の論理アドレス空間で仲介する場合にも使用できる。これは従来のディスク記憶システムインターフェイスである。データファイル２１３には、ホストのアドレスコンバージョン機能２１４によって論理アドレス空間２１５の中の一意なアドレスが割り当てられる。周知のように、ホストは、アドレス空間２１５内の使われていないアドレスに新規ファイルの論理アドレスを割り当てるが、特定のファイルにとって、これらのアドレスはことによると隣接せず、多くの場合、隣接しない。このため、メモリシステムは、特定のファイルに割り当てられる論理アドレスに関する情報を直接的には把握しない。
【００８１】
しかし、図１５の単一論理アドレスインターフェイス２１５は、２１６に示すように、隣接するデータセット２１７に分割でき、各セットは好ましくは等量のデータを収容する。こうして各セットはデータファイルオブジェクトのように扱われ、２１８ではその論理アドレス範囲が２１９に示す論理ホストデータ単位ＨＤ１、ＨＤ２、およびＨＤ３に分割される。これは、２００５年８月３日に出願されたセルゲイ・Ａ・ゴロベッツの米国特許出願第１１／１９６，８６９号（特許文献３０）で開示されている手法の実践にあたる。各データセット２１７の中のアドレスは、論理アドレスコンバージョン２１８によってホストデータ単位２１９へマッピングされる。ホストデータ（ＨＤ）単位のサイズは好ましくは同じかほぼ同じであり、好ましくは、変換機能２２３によって一度に変換されるデータ量に一致するよう選択される。これらのホストデータ（ＨＤ）単位は、図１４との関係で前述したプロセスと同じ方法で２２５に示すサイズの異なる対応する論理データグループ（ＤＧ）の１つにコンバートされる。そして、論理データグループは、アドレス翻訳２２７によって決まるメモリ２０９内の物理アドレスに格納される。
【００８２】
データ変換２０５（図１４）または２２３（図１５）の遂行にあたっては通常、メモリコントローラにおいて、論理セット（２０４または２１９）のホストデータ（ＨＤ）単位が一度に１つずつＲＡＭ  ３１（図２）等に一時的に格納される。格納されたＨＤ単位にはその後、符号化等の変換が行われる。同様に、変換された状態で格納されたホストデータ単位を修正するときには、データは読み出され、再変換され、再変換済みデータ単位の一部または全部は一時的にＲＡＭに格納され、修正が行われる。現在のフラッシュメモリシステムは通常、プログラミング機能と読み出し機能の遂行にあたって僅か１ページまたは１メタページ分のデータの格納容量を要求するから、場合によっては容量がさらに大きいＲＡＭが必要となる。
【００８３】
これまで、外部のホストとデータをやり取りするものとして、図１４および図１５のメモリシステムを説明してきたが、「ホスト」は代わりに、メモリシステムの中で実行するソフトウェアアプリケーションプログラムであってもよい。フラッシュメモリアレイの中に格納されるアプリケーションソフトウェアはＲＡＭ  ３１へロードされ、メモリ動作を制御するコントローラプロセッサ２７（図２）によって実行される。あるいは必要に応じ、追加のマイクロプロセッサをこの目的のためにメモリシステムに加えることができる。
【００８４】
ここで初めて図１６を参照し、図１４または図１５の例の変換済み論理データグループ（ＤＧ）を翻訳し、格納する手法をこれより説明する。図１６におけるファイルまたはセット２３１のデータの例は、ホストデータファイルインターフェイス（図１４）の１つのホストファイル２０１のものか、あるいは論理アドレス空間２１５（図１５）の一部または全部のものに相当する。ホストデータ２３１の論理アドレス範囲は均等サイズのホストデータ単位ＨＤ１、ＨＤ２、ＨＤ３等に分割され、それらホストデータ単位の各々はそれぞれの開始論理アドレスＡ１、Ａ２、Ａ３等を持つ。ホストデータ単位ＨＤ１、ＨＤ２、ＨＤ３等は、メモリシステムの中で、例えば圧縮、暗号化、またはその他の符号化によって、異なる長さＬ１、Ｌ２、Ｌ３等をそれぞれ持つ対応するデータグループＤＧ１、ＤＧ２、ＤＧ３等に個別に変換される。
【００８５】
そして、変化済みデータグループＤＧ１、ＤＧ２、ＤＧ３等は、図１１〜図１３との関係で前述した直接データファイル操作のデータグループとして扱われる。データグループは、２つのブロックまたはメタブロックＸおよびＹが描かれた物理メモリ２３３に格納される。データグループは順次お互いに格納され、データグループＤＧ１はメモリブロックＸのアドレス０から始まり、データグループＤＧ２はＤＧ１の末尾のすぐ後ろ、ブロックＸのアドレス１から始まる等である。この例のデータグループＤＧ５はブロックＸおよびＹで分かれるため、それぞれ長さＬ５ａおよびＬ５ｂ、ならびにブロックＸにおける開始メモリアドレス４およびブロックＹにおける開始メモリアドレス０を有する、２つのサブグループＤＧ５ａおよびＤＧ５ｂに分割される。グループＤＧ５の先頭からブロックＸに収まるデータはそこに格納され、グループＤＧ５の残りの量はブロックＹに格納される。
【００８６】
図１６の例におけるホストは、メモリシステムに格納されるデータの論理アドレス空間がホストデータ単位ＨＤ１、ＨＤ２、ＨＤ３等に分割されることを知らない。ホストはまた、メモリシステムでデータ変換が行われることを知らない。ホストがメモリシステムからデータを読み出すときには、図１６との関係で説明した書き込みプロセスの逆が起こる。データファイル（図１４）またはシステム論理アドレス空間（図１５）の中の所定のアドレスのデータをホストが要求すると、格納済みデータグループＤＧ１、ＤＧ２、ＤＧ３等が格納ブロックＸおよびＹから読み出され、それぞれのホストデータ単位ＨＤ１、ＨＤ２、ＨＤ３等に個別に逆変換され、データグループ２３１に組み合わせされてホストへ送信される。
【００８７】
ホストデータ単位（ＨＤ）に対応するデータグループ（ＤＧ）の物理位置は、メモリシステムのオーバーヘッドの一部としてファイルインデックステーブル（ＦＩＴ）で保守される。図１６に示されたデータ格納に対応する、そのようなテーブルの一部分の例を図１７に示す。このテーブルは、データが初めて書き込まれるときに作成され、書き込み済みデータが修正されるときに修正され、ホストが要求するデータを見つけて読み出す間に使用される。テーブルの中には、データ単位２３１の格納済みデータグループ（ＤＧ）ごとに少なくとも１つの行がある。テーブルの列内の各データグループの情報には、データグループに対応するホストデータ単位（ＨＤ）のオフセットアドレスＡを伝える列２３５がある。列２３７には変換済みデータグループ（ＤＧ）の長さＬが入る。物理メモリ２３３でデータグループが始まるところの開始バイト位置または他のアドレスは、ポインタ列２３９で提供される。
【００８８】
この直接データファイル手法の適用には、図１１〜図１３との関係で前述したものと大きく異なる点がひとつある。非変換データ格納の場合、データグループを組み合わせることによってデータグループの数を減らし、その追跡にかかるＦＩＴおよびオーバーヘッドのサイズを抑えることは容易いが、変換済みデータグループは違う。個別のホストデータ（ＨＤ）単位は個別に変換されるから、それぞれ対応する個別の変換済みデータグループ（ＤＧ）を絶えず把握することが望ましい。そうすれば、格納ブロックに格納されたデータグループ間の境界の記録が保たれ、格納ブロックから個別のデータグループへ読み出されるデータの区別が可能となる。そして、ＦＩＴのいずれかの行によって識別される対応するデータグループ（ＤＧ）から対応するホストデータ（ＨＤ）単位への再変換が個別に行われる。
【００８９】
そこで、図１７のＦＩＴには、列２４１と、各データグループが一定状態を保つか否かを指示する単一ビットが含まれる。ビット「１」は一定状態を保つことを意味する。データグループが併合されなければ、格納済みデータグループ間の境界は識別され続ける。ビット「０」は、図１１〜図１３との関係で前述した一般的な直接データファイルと直接データファイルアプリケーションの方法で、データグループを他のデータグループと組み合わせできることを意味する。この場合、メモリシステムは変換済みデータと非変換データの両方を格納できる。列２４１のビットは、変換されたデータグループの場合は「１」であり、非変換データグループの場合は「０」である。
【００９０】
変換済みデータと非変換データの両方を格納するシステムで、ホストから受け取る書き込みコマンドはメモリシステムの中で２つの具体的な書き込みコマンドのいずれか一方にコンバートされる。Ｗｒｉｔｅコマンドは、受信データを、直接データファイル記憶を説明するこれまでのセクションの手法に従い併合できる自由データグループとして、メモリに書き込む。Ｗｒｉｔｅ＿Ｇｒｏｕｐコマンドは、受信データを、このセクションの説明に従い併合できない固定データグループとして、メモリに書き込む。固定データグループの場合は、Ｗｒｉｔｅ＿Ｇｒｏｕｐコマンドのデータ変換機能が送信され、その後にストリームされるデータによってグループが形成され、Ｃｌｏｓｅ＿Ｇｒｏｕｐコマンドによってデータグループの終端が決定する。
【００９１】
図１７のＦＩＴのもうひとつの列２４３は、各データグループが別のデータグループに連結しているか否かを伝える。これは、図１６の例で格納ブロックＸおよびＹで分かれているデータグループＤＧ５のように、データグループが２つのメモリブロックに分かれる場合に起こる。その結果、２つのサブグループが形成される。この列には、連結データサブグループの場合に「１」が入り、連結されていないグループの場合には「０」が入る。この例で、サブグループ２４４および２４６のそれぞれはこの列に「１」を持ち、データグループＡ５の一部にすぎないことが分かる。これは２４４と２４６がサブグループであって、先々、データ整理またはガーベッジコレクションがあったとして、そのデータ整理／ガーベッジコレクションの結果としてデータグループＡ５全体を単一のメモリブロックに格納することになる場合に、２４４と２４６を組み合わせ、単一のデータグループＡ５に戻せることを意味する。これは、個別データグループの組み合わせを禁ずる列２４１のビット「１」による規制の例外にあたる。図１７では、２つのサブグループのうちの最初のサブグループのレコード２４４の一部として、データグループＡ５のオフセットアドレスと長さが一度だけ挿入されている。代わりに、レコード２４４および２４６の両方でこれらのデータを繰り返すこともできる。
【００９２】
図１７のＦＩＴの例で、最後の列２４５はホストファイルの終端にあたるデータグループを標示するためのものである。したがって、図１７のテーブルで最後のデータグループには「１」の標示があり、その他のデータグループは「０」の標示によりホストファイルの最終データグループではないことが分かる。これは、メモリシステムがホストに対しデータファイルオブジェクトインターフェイスを持つ場合、すなわち図１４に示す場合に使用する。しかし、ホストインターフェイスが図１５の連続単一論理アドレス空間の場合、通常これは使用しない。
【００９３】
データグループの長さ、例えばデータグループＤＧ３の長さＬ３が、このデータグループの開始アドレスＡ３と次のデータグループの開始アドレスＡ４との差に等しくないことに気づく。これは言うまでもなく、ホストデータ単位ＨＤ３の変換によってその長さが変化したからである。
【００９４】
図１８および図１９は、当初ホストデータ単位ＨＤ１〜ＨＤ８で表現されていたデータファイルにその後データが付加された場合に生じるそれぞれ図１６および図１７の変化を示している。この場合、ファイルの末尾にホストデータグループＨＤ９が追加される。このホストデータ単位はデータグループＤＧ９に個別に変換される。この例で、変換されたデータグループＤＧ９の最初の部分は、メモリ格納ブロックＹの末尾に残っている空間に格納され、データグループＤＧ９の残りの部分は、新たな格納ブロックＺの先頭に格納される。代わりに、他のファイルの１つ以上のデータグループの格納にも使われる共通ブロックにデータグループＤＧ９を格納することもできる。共通ブロックの使用は直接データファイルアプリケーションで説明されている。
【００９５】
この例で、図１７のＦＩＴは、図１９に示すように、その末尾に２つの項目が加わって更新される。一方の項目は格納ブロックＹの中のサブグループのためのものであり、他方の項目は格納ブロックＺの中のサブグループのためのものである。これらのサブグループ各々の「連結」ビットは「１」に設定され、「ファイル終端」ビットは最後のサブグループに移される。
【００９６】
図２０および図２１は、それぞれ図１６および図１７の格納済みデータグループに対するタイプの異なる変更を示している。この場合、ホストデータ単位ＨＤ４の一部分が更新される。この更新プロセスではまず、メモリ格納ブロックＸから対応する変換済みデータグループＤＧ４をそっくり読み出し、次に図２０の２４７に示すように、このグループのデータを逆変換することにより、元のホストデータ単位（ＨＤ４）２４９を復元する。こうして得た元のホストデータ単位は、２５１に示すようにホストによって更新され、この場合、元のデータの一部が差し替えられる。更新されたホストデータ単位はその後、２５３に示すように、元のホストデータ単位ＨＤ４の変換に使ったのと同じアルゴリズムによって変換される。その結果、長さＬ９を持つ更新済みデータグループ（ＤＧ４）２５５が出来上がり、長さＬ９は通常元のデータグループの長さＬ４と異なる。
【００９７】
図１８の付加されたデータグループＤＧ９の格納の代替として、更新されたデータグループは図２０において、格納ブロックＹに部分的に格納されるのではなく、新たな格納ブロックＺの中にそっくり格納されている。このため、追加されたデータグループを２つのサブグループに分けずにすむ。元のデータグループＤＧ４は用済みと標示され、格納データの整理またはガーベッジコレクションが次回行われるときに除去される。
【００９８】
この変更を反映するため、図１７の元のＦＩＴは更新される。図２１に示すように、データグループＤＧ４に対応する行の情報は変更され、新しい長さＬ９と新しい開始メモリアドレスＺ０を示している。単位の最終データグループは引き続きデータグループＤＧ８なので、ファイル終端ビットはデータグループＤＧ８のセットのままである。
【００９９】
図２０および図２１は、読み出し／修正／書き込みの一形式を説明するものである。これは、ＲＡＭ３１（図１）等のバッファメモリの使用量を変えながら果たすことができる。ひとつのやり方として、修正の対象となるデータグループ（ＤＧ）全体を読み出し、これを再変換し、再変換されたホストデータグループ（ＤＧ）全体をバッファメモリに格納し、格納されたデータを新規の着信データで部分的に上書きすることによって修正し、修正された格納データを変換し、メモリに再度書き込む。これよりも所要バッファメモリが少ないもうひとつのやり方では、再変換されたデータで修正されない部分だけを格納し、格納されたデータを読み出し、それらを新規の着信差し替えデータと組み合わせ、修正されたデータを変換し、メモリに書き込む。
【０１００】
結論
これまで本発明の様々な態様をその代表的な実施形態との関係で説明してきたが、添付の特許請求の範囲の全範囲内でその権利が保護されるべきであることが理解できよう。
【図面の簡単な説明】
【０１０１】
【図１】現在実装されているホストと接続された不揮発性メモリシステムとを概略的に示す。
【図２】図１の不揮発性メモリとして使用されるフラッシュメモリシステム例のブロック図である。
【図３】図２のシステムに使用できるメモリセルアレイの代表的な回路図である。
【図４】図２のシステムの物理メモリの編制例を示す。
【図５】図４の物理メモリの一部分の拡大図を示す。
【図６】図４および図５の物理メモリの一部分のさらなる拡大図を示す。
【図７】ホストと再プログラム可能なメモリシステムとの間の一般的な先行技術の論理アドレスインターフェイスを示す。
【図８】ホストと再プログラム可能なメモリシステムとの間の一般的な先行技術の論理アドレスインターフェイスを図７とは異なる様式で示す。
【図９】直接データファイルアプリケーションに従うホストと再プログラム可能なメモリシステムとの間の直接データファイル記憶インターフェイスを示す。
【図１０】直接データファイルアプリケーションに従うホストと再プログラム可能なメモリシステムとの間の直接データファイル記憶インターフェイスを図９とは異なる形で示す。
【図１１Ａ】データファイルをメモリに直接書き込む例を示す。
【図１１Ｂ】データファイルをメモリに直接書き込む他の例を示す。
【図１１Ｃ】データファイルをメモリに直接書き込む他の例を示す。
【図１１Ｄ】データファイルをメモリに直接書き込む他の例を示す。
【図１２Ａ】メモリに対する単一データファイルの一連の直接的書き込みを示す。
【図１２Ｂ】メモリに対する単一データファイルの一連の直接的書き込みを示す。
【図１２Ｃ】メモリに対する単一データファイルの一連の直接的書き込みを示す。
【図１２Ｄ】メモリに対する単一データファイルの一連の直接的書き込みを示す。
【図１２Ｅ】メモリに対する単一データファイルの一連の直接的書き込みを示す。
【図１３】図１２Ｅに示されたデータファイルでガーベッジコレクションを行った結果を示す。
【図１４】本発明に従うデータ変換を伴う直接データファイルメモリシステムの動作を示す。
【図１５】本発明に従うデータ変換を伴う論理アドレス空間メモリシステムの動作を示す。
【図１６】図１４または１５におけるデータ変換を説明するための例である。
【図１７】図１６の例で格納されるデータのファイルインデックステーブル（ＦＩＴ）である。
【図１８】図１６の例によって格納されるデータへのデータの付加を示す。
【図１９】図１８に従う多少のデータが付加された後の格納データのファイルインデックステーブルである。
【図２０】図１３の例による格納データの更新を示す。
【図２１】図２０に従う更新された後の格納データのファイルインデックステーブルである。
【図１】
2009512066.tif 000003
【図２】
2009512066.tif 000004
【図３】
2009512066.tif 000005
【図４】
2009512066.tif 000006
【図５】
2009512066.tif 000007
【図６】
2009512066.tif 000008
【図７】
2009512066.tif 000009
【図８】
2009512066.tif 000010
【図９】
2009512066.tif 000011
【図１０】
2009512066.tif 000012
【図１１Ａ】
2009512066.tif 000013
【図１１Ｂ】
2009512066.tif 000014
【図１１Ｃ】
2009512066.tif 000015
【図１１Ｄ】
2009512066.tif 000016
【図１２Ａ】
2009512066.tif 000017
【図１２Ｂ】
2009512066.tif 000018
【図１２Ｃ】
2009512066.tif 000019
【図１２Ｄ】
2009512066.tif 000020
【図１２Ｅ】
2009512066.tif 000021
【図１３】
2009512066.tif 000022
【図１４】
2009512066.tif 000023
【図１５】
2009512066.tif 000024
【図１６】
2009512066.tif 000025
【図１７】
2009512066.tif 000026
【図１８】
2009512066.tif 000027
【図１９】
2009512066.tif 000028
【図２０】
2009512066.tif 000029
【図２１】
2009512066.tif 000030
【国際調査報告】
2009512066.tif 000031
2009512066.tif 000032