(57)【要約】【課題】セクタ書き込み操作時間を効果的に減少させるための不揮発性メモリユニット内の好適なブロックの構成を提供すること。【解決手段】本発明の一実施形態は、ブロックに分けられた不揮発性メモリ（１６）内の格納位置（２３２）内にセクタ情報を格納する不揮発性メモリシステムを備える。複数のブロックは、スーパーブロックを規定し、各ブロックは所定の複数のセクタを有する。不揮発性メモリシステムは、セクタ情報を、特定のスーパーブロック（２０４）の第１のブロック（２１０）と第２のブロック（２１６）にシフトさせ、セクタ情報を特定のスーパーブロックの第１のブロック（２１０）に書き込むコントローラ（１４）を備える。第１のブロックへの書込み中に、第２のブロック（２１６）へのシフト全体が起こり、それにより、ブロックへの書込み動作を行うために必要な時間が減少し、全体的なシステム性能が上がる。【選択図】図３
2010152913.tif 000002
【特許請求の範囲】
【請求項１】
ブロックに分けられた不揮発性メモリ内の格納位置内に、ホストにより提供されたセクタ情報を格納する不揮発性メモリシステムであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有し、
該不揮発性メモリシステムは、
特定のスーパーブロックの第１のブロックの第１のセクタにセクタ情報をシフトさせるコントローラであって、該コントローラはさらに、該特定のスーパーブロックの第２のブロックの第１のセクタにセクタ情報をシフトさせ、該特定のスーパーブロックの該第１のブロックの該第１のセクタにセクタ情報を書き込む、コントローラを備え、
該第１のブロックの該第１のセクタへの書込み中に、該第２のブロックの該第１のセクタへのシフト全体が起き、
該第１のブロックの該第１のセクタおよび該第２のブロックの該第１のセクタに対するセクタ情報のシフトは、該ホストが該セクタ情報を提供した直後に起きる、不揮発性メモリシステム。
【請求項２】
前記コントローラが、前記不揮発性メモリからのＦｒｄｙ／ｂｓｙ＊信号を受け取り、該Ｆｒｄｙ／ｂｓｙ＊信号がアクティブであるときに、前記特定のスーパーブロックの前記第２のブロックへのセクタ情報の書込みを引き起こす、請求項１に記載の不揮発性メモリシステム。
【請求項３】
前記コントローラが、第１のフラッシュデバイスと第２のフラッシュデバイスとに接続され、該第１のフラッシュデバイスおよび該第２のフラッシュデバイスは不揮発性メモリユニットに含まれる、請求項１に記載の不揮発性メモリシステム。
【請求項４】
前記第１のフラッシュデバイスが、前記特定のスーパーブロックの前記第１のブロックを含み、前記第２のフラッシュデバイスが、該特定のスーパーブロックの前記第２のブロックを含む、請求項３に記載の不揮発性メモリシステム。
【請求項５】
前記特定のスーパーブロックの前記第１のブロックおよび前記第２のブロックが、前記第１のフラッシュデバイスおよび前記第２のフラッシュデバイスと同様の位置関係にある、請求項４に記載の不揮発性メモリシステム。
【請求項６】
ブロックに分けられた不揮発性メモリに、ホストにより提供されたセクタ情報を書き込む方法であって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有し、
該方法は、
特定のスーパーブロックの第１のブロックの第１のセクタにセクタ情報をシフトさせることと、
該特定のスーパーブロックの第２のブロックの第１のセクタにセクタ情報をシフトさせることと、
該特定のスーパーブロックの該第１のブロックの該第１のセクタにセクタ情報を書き込むことであって、該第１のブロックの該第１のセクタへの書込み中に、該第２のブロックへとシフトさせるステップ全体が起きる、ことと
を含み、該第１のブロックの該第１のセクタおよび該第２のブロックの該第１のセクタに対するセクタ情報のシフトは、該ホストが該セクタ情報を提供した直後に起きる、方法。
【請求項７】
ブロックに分けられた不揮発性メモリ内の格納位置内に、ホストにより提供されたセクタ情報を格納する不揮発性メモリシステムであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有し、
該不揮発性メモリシステムは、
特定のスーパーブロックにセクタ情報を書き込むコントローラであって、該セクタ情報の書込みが成功したか否かを示す、該不揮発性メモリからの割込み信号に応答するコントローラを備え、
該割込み信号が、ステータス情報のポーリングを回避し、それにより、セクタ情報の書込みを行うことに関連する時間を減少させ、
該コントローラがさらに、特定のスーパーブロックの第１のブロックの第１のセクタにセクタ情報をシフトさせ、該コントローラがさらに、該特定のスーパーブロックの第２のブロックの第１のセクタにセクタ情報をシフトさせ、該特定のスーパーブロックの該第１のブロックの該第１のセクタにセクタ情報を書き込み、該第１のブロックの該第１のセクタへの書込み中に、該第２のブロックの該第１のセクタへのシフト全体が起き、該第１のブロックの該第１のセクタおよび該第２のブロックの該第１のセクタに対するセクタ情報のシフトは、該ホストが該セクタ情報を提供した直後に起きる、不揮発性メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の背景）
（関連出願の相互参照）
本出願は、以前に出願された米国特許出願第０９／２８３，７２８号、および他の以前に出願された米国特許出願第０９／２６４，３４０号の一部継続出願である。米国特許出願第０９／２８３，７２８号は、「ＳＰＡＣＥ  ＭＡＮＡＧＥＭＥＮＴ  ＦＯＲ  ＭＡＮＡＧＩＮＧ  ＨＩＧＨ  ＣＡＰＡＣＩＴＹ  ＮＯＮＶＯＬＡＴＩＬＥ  ＭＥＭＯＲＹ」という名称であり、１９９９年４月１日に出願され、発明者がＰｅｔｒｏ  Ｅｓｔａｋｈｒｉ、Ｂｅｒｈａｎｕ  Ｉｍａｎ、およびＭｉｎ  Ｇｕｏである。米国特許出願第０９／２６４，３４０号は、「ＭＯＶＩＮＧ  ＳＥＣＴＯＲＳ  ＷＩＴＨＩＮ  Ａ  ＢＬＯＣＫ  ＯＦ  ＩＮＦＯＲＭＡＴＩＯＮ  ＩＮ  Ａ  ＦＬＡＳＨ  ＭＥＭＯＲＹ  ＭＡＳＳ  ＳＴＯＲＡＧＥ  ＡＲＣＨＩＴＥＣＴＵＲＥ」という名称であり、１９９９年３月８日に出願され、発明者が、Ｐｅｔｒｏ  Ｅｓｔａｋｈｒｉ、Ｂｅｒｈａｎｕ  Ｉｍａｎ、およびＡｌｉ  Ｇａｎｊｕｅｉであり、１９９９年５月２５日に発行された米国特許第５，９０７，８５６号、および、以前に出願された、米国特許出願第０９／０３０，６９７号の継続出願である。米国特許第５，９０７，８５６号は、「ＭＯＶＩＮＧ  ＳＥＣＴＯＲＳ  ＷＩＴＨＩＮ  Ａ  ＢＬＯＣＫ  ＯＦ  ＩＮＦＯＲＭＡＴＩＯＮ  ＩＮ  Ａ  ＦＬＡＳＨ  ＭＥＭＯＲＹ  ＭＡＳＳ  ＳＴＯＲＡＧＥ  ＡＲＣＨＩＴＥＣＴＵＲＥ」という名称である。米国特許出願第０９／０３０，６９７号は、「ＩＮＣＲＥＡＳＩＮＧ  ＭＥＭＯＲＹ  ＰＥＲＦＯＲＭＡＮＣＥ  ＩＮ  ＦＬＡＳＨ  ＭＥＭＯＲＹ  ＤＥＶＩＣＥＳ  ＢＹ  ＰＥＲＦＯＲＭＩＮＧ  ＳＩＭＵＬＴＡＮＥＯＵＳ  ＷＲＩＴＥ  ＯＰＥＲＡＴＩＯＮ  ＴＯ  ＭＵＬＴＩＰＬＥ  ＤＥＶＩＣＥＳ」という名称であり、１９９８年２月２５日に出願され、発明者が、Ｐｅｔｒｏ  ＥｓｔａｋｈｒｉおよびＢｅｒｈａｎｕ  Ｉｍａｎである。これらの特許の開示内容の全ては、全文が記載されているかのように、本明細書中で参考として援用される。
【０００２】
（発明の分野）
本発明は、概して、フラッシュメモリのような不揮発性メモリデバイスを採用するデジタル格納システムの分野、特に、情報を不揮発性メモリデバイスに書き込むことにかかる時間を低減して、システム性能全体を高めることに関する。
【背景技術】
【０００３】
（従来技術の説明）
近年、固体メモリは、様々な技術領域、例えば、コンピュータ、デジタルカメラ、モデムなどにおける、大容量記憶装置機器の代わりとしての使用において、人気が高まってきた。例えば、デジタルカメラにおいて、フラッシュメモリのような固体メモリは、従来のフィルムの代わりに用いられている。
【０００４】
フラッシュメモリは、概して、半導体デバイス（または、チップ）の形態で提供され、各デバイスは、多数のトランジスタメモリセルで作られ、各セルは、個別にプログラマブルである。このようなメモリセルのプログラミング（もしくは、書き込み）、および消去は、消去−書き込みサイクルが有限の回数に制限され、基本的にデバイスの寿命を定めている。さらに、フラッシュメモリセルの固有の特徴は、プログラムされる前に、消去され、消去が成功したかどうか確認される必要があることである。
【０００５】
従って、フラッシュメモリを用いることによって、一度情報を含んだメモリの領域を、同じ領域を再プログラムするたびに、その前に消去することが必要になる。フラッシュメモリデバイスにおいて、書き込みおよび消去サイクルは、概して、時間がかかるものであり、そのことによって、大容量記憶装置としてフラッシュメモリを利用するシステムの性能が大幅に低下する。
【０００６】
フラッシュメモリデバイスを採用する適用例、例えば、パーソナルコンピュータおよびデジタルカメラにおいて、ホストは、通常は半導体デバイスの形態のコントローラデバイスを介して、情報を、フラッシュメモリデバイスに書き込んだり、フラッシュメモリデバイスから読み出す。このような情報は、セクタに編成され、各セクタは、ユーザデータ情報およびオーバーヘッド情報（まとめて、セクタ情報と呼ばれる）を含む。セクタのユーザデータ部分は、典型的には、長さが５１２バイトであるが、他のサイズのセクタも同様に採用され得る。コントローラは、ホストが命令した書き込み動作中に、ホストからセクタ情報を受信すると、所定のセクタ編成に従って、セクタ情報をフラッシュメモリデバイスに書き込む。ホストが複数のセクタにアクセスし得る間、各セクタは、１度に１つずつフラッシュデバイスに書き込まれる。
【０００７】
データファイル（データファイルは、商業的ソフトウェア、ユーザプログラム、ワードプロセッサソフトウェア文書、拡張シートファイルなどを含む、任意のコンピュータファイルであり得る）の格納および／または取り出しにおいて、コンピュータ（または、ホスト）システムは、データファイルが大容量記憶装置内で存在するとホストが考えるロケーションを示す、論理ブロックアドレスと呼ばれるものを提供する。ホストが提供するアドレスは、コントローラによって受信されると論理ブロックアドレスフォーマットに変換される、シリンダー、ヘッダおよびセクタ（ＣＨＳ）の形態であり得る。同じことが、デジタルカメラの適用例にもあてはまる。その後、コントローラは、論理ブロックアドレス（ＬＢＡ）を、仮想論理ブロックアドレス（ＶＬＢＡ）に変換し、後者を用いて、空間マネージャ参照テーブル（ＬＵＴ）内の仮想物理的ブロックアドレス（ＶＰＢＡ）を参照する。ＶＰＢＡを取り出すと、コントローラは、ＶＰＢＡを用いて、フラッシュメモリ内のデータファイルにアクセスする。データファイルは、不揮発性メモリ内の、所定の数のセクタを有するブロックに格納される。例えば、ブロックは、１６個のセクタを含み、各セクタは、５１２バイトのユーザデータ情報、および様々なバイトの拡張またはオーバーヘッド情報（例えば、フラグ、ＥＣＣなど）を含む。ＶＰＢＡは、不揮発性メモリ内の特定のブロックのロケーションを特定するために、ＰＢＡに変換される。
【０００８】
データファイルが変更されるたびに、最新バージョンのファイルが、新たな物理的ロケーション（または、新たなＰＢＡ）によって識別されるフラッシュメモリ内の利用可能な（または、「使用されていない」）ロケーションに格納される。更新されたファイル用に、フラッシュメモリ内の空き（利用可能な）ロケーションの多くを用いると、さらなる情報の格納用に利用可能な「古い」ロケーションを作るために、消去動作が必要となり得る。消去動作に（書き込み動作と同様に）時間がかかるため、次の消去動作の前により多くのロケーションが用いられれれば用いられるほど、消去動作を行う頻度と、フラッシュメモリ内の空きロケーションを探すための時間との間でトレードオフがある。消去動作の回数を低減するか、または、不揮発性メモリ内の情報のブロックのロケーションの特定に関連する検索にかかる時間を低減することによって、システム性能を向上させるための方法を試み、探す努力が絶え間なく行われている。
【０００９】
不揮発性メモリまたはフラッシュメモリ内の情報は、コントローラの方向の下に格納され、セクタの形態で行われ、複数のセクタがブロックの境界を定める。ブロックは、１６個、３２個、または他の個数のセクタを含み得る。ブロックが所定の数のセクタを含むことが決定されると、この決定されたサイズが各ブロックの境界を規定する。従って、不揮発性メモリに格納された情報が、ブロックに編成され、各ブロックは、コントローラによって一意的にアドレス可能である。さらに、各ブロックは複数のセクタからなり、各セクタは、５１２バイトと、データ以外の情報、例えば、フラグ、アドレスおよびエラー訂正コード（ＥＣＣを格納するためのさらなる格納空間とによって規定される。しかし、セクタは、５１２バイト以外のデータ格納空間を有してもよい。いくつかの従来技術によるシステムにおいて、消去動作中、ブロック全体が消去されるが、他の従来技術によるシステムにおいて、セクタが消去され得る。ブロック内の各セクタは、不揮発性メモリから情報を読み出したり、不揮発性メモリに情報を書き込んだりするために、一意的にアドレス可能である。一意的な値は、起動中に、複発性メモリに関連するアドレスまたはマッピング情報の再構成において用いられる、仮想論理ブロックアドレス（ＶＢＬＡ）として、セクタ情報を含む各ブロック内で維持される。当業者にとって周知であるように、電力が失われる場合、ランダムアクセスメモリ（ＲＡＭ）のような不揮発性メモリにおいて維持される情報は、失われる。不揮発性メモリ内に格納されるブロック情報に関するマッピング情報は、概して、以下でさらに説明するように、揮発性メモリ内の参照テーブル（ＬＵＴ）において維持される。
【００１０】
現在、商業用ソフトウェアおよびユーザプログラム等の大きなファイルがフラッシュメモリ内に格納されるコンピュータ、および大きな画像ファイルがフラッシュデバイス内に格納されるデジタルカメラにおいて、それらのファイルは、１度に１セクタづつフラッシュ内に書き込まれる。各書込み動作に関連する待ち時間のため、大量の情報を格納する場合、これらのシステムのパフォーマンスは制限される。特定のセクタに実施される書込み動作に関連する工程のうちのいくつかは、書込みコマンドを書き込まれるフラッシュ（メモリ）デバイスにシフトすること、セクタ情報を書き込まれるフラッシュデバイスにシフトすること、そして、その後にセクタ情報が続く書込みコマンドを、セクタ情報が格納されるべきブロック内へと書き込む（またはプログラムする）ことを開始することである。一般に、セクタ情報をフラッシュデバイスにシフトするために、５１２バイトのセクタに対して、３０マイクロ秒が必要とされる。実際にセクタ情報をフラッシュデバイスに書き込むためには、２００マイクロ秒が必要とされる。従来技術によるシステムの制限の１つは、１度に１つのセクタが書き込まれることにより、各セクタを書き込むために２３０マイクロ秒よりも長い時間が必要とされることである。各ブロックが、そのブロックに書き込まれなければならない１６のセクタを含む場合、それらのセクタの全てを書き込むために１６×２３０マイクロ秒よりも長い時間が必要とされ、多くのセクタを書き込む場合には、システムパフォーマンスを著しく遅くする。
【００１１】
この問題を克服するために試みられてきた従来技術によるシステムでの１つの方法は、１度に２つのセクタの書込みを許容するために、１度に２つのセクタにアドレスすることである。これらの従来技術は、実際のセクタ情報書込み時間を２分の１に減少させる一方、２セクタ分のセクタ情報をシフトするために必要とされる時間の２倍がなおも必要とされる。上記の例では、１０２４バイトのセクタ情報を実際に書き込むために、（４００マイクロ秒に対して）２００マイクロ秒が必要とされるが、１０２４バイトのセクタ情報をシフトするために、２×３０マイクロ秒、すなわち、６０マイクロ秒が必要とされる。よって、５１２バイトのユーザデータを有する２つのセクタを書き込むために、合計で約２６０マイクロ秒が必要とされる。このような従来技術によるシステムの理解に役立てるために、図１および図１ａを参照して、一例を示す。
【００１２】
フラッシュデバイス６０２およびフラッシュデバイス６０４を備えた従来技術によるデジタル記憶システム６００を図１に示す。各フラッシュデバイスは、ブロック０から始まり、順番にブロックＮ（Ｎは整数）まで続く情報ブロックに組織される。本例では、１つのフラッシュデバイスの各ブロックが１６のセクタを含むため、これらのフラッシュデバイス内で同じ位置にある２つのブロックは、３２セクタの情報を書き込むために用いられる。これらのセクタは番号付けされており、フラッシュデバイス６０２内に偶数のセクタが格納され、フラッシュデバイス６０４内に奇数のセクタが格納されるが、これは任意の設計事項であり、その逆もなされ得る。セクタは、２つのフラッシュデバイスにわたって割当てられる２つのブロック位置内に３２のセクタを含むように番号付けされる。さらに、セクタの番号付けにより、例えば、第１のセクタＳ０が、フラッシュデバイス６０２の第１のブロックの第１のセクタ記憶位置（ブロック０）に現われ、第２のセクタＳ１が、フラッシュデバイス６０４の第１のブロックの第１のセクタ記憶位置（ブロック０）に現われ、第３のセクタＳ２が、フラッシュデバイス６０２の第１のブロックの第２の記憶位置（ブロック０）に現われ、第４のセクタＳ３が、フラッシュデバイス６０４の第１のブロックの第２の記憶位置（ブロック０）に現われるようなフラッシュデバイス間での切換えが起こる。
【００１３】
フラッシュデバイスの各々の２つのブロック間のセクタを偶数および奇数に番号付けする理由は、セクタ情報をフラッシュデバイス６０２に結合させ、かつフラッシュデバイス６０２から結合するためのデータバスＤＢ７：０  ６１６、およびセクタ情報をフラッシュデバイス６０４に結合させ、かつフラッシュデバイス６０４から結合するための別のデータバスＤＢ１５：７  ６２４を用いて、セクタ情報を並列にロードすることを可能にすることである。ＦＣＥ０*信号６２０は、アクティブである場合、コマンド／アドレスおよびセクタデータ、ならびにその中のオーバーヘッド情報をシフトするためにフラッシュデバイスをイネーブルまたは選択する。本例では、信号６２０は、アクティブロー信号である。
【００１４】
図１ａは、後者の動作を説明するために用いられる、従来技術の図１に示す信号のタイミング図である。図１ａでは、データバスＤＢ１５：０は、事実上、バス６１６および６２４の組み合わせであり、ＷＥ*信号は、制御信号６２２に含まれる信号のうちの１つである。ローである場合、ＷＥ*信号は、フラッシュデバイスに情報をシフトさせる。最初に、セクタＳ０およびＳ１に対するコマンドおよびアドレス情報がフラッシュデバイスにシフトされる。次に、セクタユーザデータおよびＥＣＣ情報が、フラッシュデバイスにシフトされる。フラッシュデバイス６０２は、６１６バスを介して、５１２バイトのデータを受信し、フラッシュデバイス６０４は、６２４バスを介して、５１２バイトのデータを受信する。セクタ情報の全てのシフトが完了すると、コントローラは、書込み動作を開始し、これにより、Ｆｒｄｙ／Ｂｓｙ*信号６１８がアクティブ化される（ハイ状態からロー状態になる）。各セクタが５１２バイトのユーザデータを含む場合、コマンド／アドレス情報の連続的シフト、セクタ情報のシフト、および書込みコマンドの開始には約３０マイクロ秒要する。Ｆｒｄｙ／Ｂｓｙ*信号６１８がローになると、約２００マイクロ秒後に、５１２バイトを有するセクタに対するセクタ情報（ユーザデータおよびＥＣＣ）の書込み（またはプログラム）が完了する。実際、この場合、２つのバス６１６および６２４が、それぞれ、フラッシュデバイス６０２とフラッシュデバイス６０４に並列に情報を結合するため、２００マイクロ秒内で、５１２ワード（各ワードは２バイト）がプログラムされる。よって、書込み動作全体が完了するまで約２３０マイクロ秒かかる。セクタＳ０およびＳ１への書き込みが完了すると、同じ処理が、セクタＳ２およびＳ３をプログラムするために起こり、その後に、Ｓ４およびＳ５のプログラムが続く。
【００１５】
図１および図１ａにおいて議論および説明した従来技術の制限のうちのいくつかは、コントローラデバイス上に必要とされる物理的な入力／出力ピンがより多く存在することである。詳細には、２つのデータバス６１６および６２４を有するため、必要なデータバスラインが２倍存在する。実際、この従来技術がより多くのセクタを並列にプログラムするために用いられ、それにより、並列に構成されたさらなるフラッシュデバイスを有する場合、追加されたデータバスに対する要件が増し、最終的に、コントローラピンの数が実用的ではなくなる。単なる一例として、４つのセクタが並列にプログラムされ得る並列する４つのフラッシュデバイスを有するために、さらに１６個のピンがコントローラデバイス上に必要とされる（１６のさらなるデータバス信号に対して、合計３２の信号）。これにより、コントローラデバイスに関する製造コストが明らかに増加し、より大きなデバイスへと繋がり得、さらにコストが上がる。
【００１６】
図１および図１ａの従来技術によるシステムに関する別の欠点は、第１のセクタ情報のシフトが始まる前に、ホストは、セクタの数をバッファにロードする（これ以外の場合にはプログラムされる）必要があり、セクタをプログラムする時間が実質的に増加する。これは、事実上、より大きなバッファサイズへと繋がり、製造コストを増加させる。
【００１７】
よって、このような従来技術は、２つのセクタを１度に処理することにより、セクタ書込み動作を実施するために必要とされる時間を切り詰めるにも関わらず、さらなる時間（すなわち、セクタ情報をシフトするための時間が２倍）が、書込み動作を完了するために必要である。
【００１８】
それゆえ、１つのセクタへの書込みと並列して、別のセクタに書込みを行うことに関連づけられたタスクのいくつかを実施することにより、コントローラデバイスがセクタ情報を不揮発性メモリに書き込むことに関連づけられた時間の量を減少させ、それにより、全体のシステムパフォーマンスを増加させる一方で、コントローラデバイスのピンを同数に維持し、かつシステムの製造に関連するコストの追加を妨げる、方法および装置に対する必要性が生じる。
【発明の概要】
【課題を解決するための手段】
【００１９】
（発明の要旨）
簡単には、本発明の実施形態は、ブロックに構成された不揮発性メモリ内の格納位置にセクタ情報を格納するための不揮発性メモリシステムを含む。ここで、複数のブロックはスーパーブロックを規定し、そして各ブロックは所定の複数のセクタを有する。不揮発性メモリシステムは、セクタ情報を特定のスーパーブロックの第１および第２のブロックにシフトし、そしてその特定のスーパーブロックの第１のブロックにセクタ情報を書き込むためのコントローラを含む。ここで、第２のブロックへのシフトは、完全に第１のブロックへの書き込みの間に生じ、これによりブロックへの書き込み動作を行うために必要な時間を低減し、そしてシステム全体の性能を増加する。
（項目１）  ブロックに分けられた不揮発性メモリ内の格納位置内にセクタ情報を格納する不揮発性メモリシステムであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有する不揮発性メモリシステムであって、
セクタ情報を、特定のスーパーブロックの第１のブロックの第１のセクタにシフトさせるコントローラであって、該コントローラはさらに、セクタ情報を、該特定のスーパーブロックの第２のブロックの第１のセクタにシフトさせ、セクタ情報を、該特定のスーパーブロックの該第１のブロックの該第１のセクタに書き込むコントローラ、
を備え、
該第１のブロックの該第１のセクタへの書込み中に、該第２のブロックの該第１のセクタへのシフト全体が起こり、それにより、ブロックへの書込み動作を行うために必要な時間を減少させ、全体的なシステム性能を上げる、不揮発性メモリシステム。
（項目２）  前記コントローラが、前記不揮発性メモリからのＦｒｄｙ／ｂｓｙ*信号を受け取り、それによって、該Ｆｒｄｙ／ｂｓｙ*信号がアクティブであるときに、前記特定のスーパーブロックの前記第２のブロックへのセクタ情報の書込みを引き起こす、項目１に記載の不揮発性メモリシステム。
（項目３）  前記コントローラが、第１のフラッシュデバイスと第２のフラッシュデバイスとに接続され、該第１および該第２のフラッシュデバイスは不揮発性メモリユニットに含まれる、項目１に記載の不揮発性メモリシステム。
（項目４）  前記第１のフラッシュデバイスが、前記特定のスーパーブロックの前記第１のブロックを備え、前記第２のフラッシュデバイスが、該特定のスーパーブロックの前記第２のブロックを備える、項目３に記載の不揮発性メモリシステム。
（項目５）  前記特定のスーパーブロックの前記第１および第２のブロックが、前記第１および第２のフラッシュデバイスと同様の位置関係にある、項目４に記載の不揮発性メモリシステム。
（項目６）  ブロックに分けられた不揮発性メモリであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有する不揮発性メモリにセクタ情報を書き込む方法であって、
セクタ情報を、特定のスーパーブロックの第１のブロックの第１のセクタにシフトさせるステップと、
セクタ情報を、該特定のスーパーブロックの第２のブロックの第１のセクタにシフトさせるステップと、
該第２のブロックへシフトさせるステップを行っている間に、該特定のスーパーブロックの該第１のブロックの該第１のセクタにセクタ情報を書き込み、それにより、ブロックへの書込み動作を行うために必要な時間を減少させ、全体的なシステム性能を上げる、方法。
（項目７）  ブロックに分けられた不揮発性メモリ内の格納位置内にセクタ情報を格納する不揮発性メモリシステムであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有する不揮発性メモリシステムであって、
特定のスーパーブロックにセクタ情報を書き込むコントローラであって、セクタ情報の書込みが成功したか否かを示す、該不揮発性メモリからの割込み信号に応答するコントローラ、
を備え、
該割込み信号が、ステータス情報のポーリングを回避し、それにより、セクタ情報の書込みを行うことに関連する時間を減少させる、不揮発性メモリシステム。
（項目８）  前記コントローラがさらに、特定のスーパーブロックの第１のブロックの第１のセクタにセクタ情報をシフトさせ、該コントローラがさらに、該特定のスーパーブロックの第２のブロックの第１のセクタにセクタ情報をシフトさせ、該特定のスーパーブロックの該第１のブロックの該第１のセクタにセクタ情報を書き込み、該第１のブロックの該第１のセクタへの書込み中に、該第２のブロックの該第１のセクタへのシフト全体が起こり、それにより、ブロックへの書込み動作を行うために必要な時間を減少させ、全体的なシステム性能を上げる、項目７に記載の不揮発性メモリシステム。
【図面の簡単な説明】
【００２０】
【図１】１６ビットデータバス、ＤＢ７：０およびＤＢ１５：８を使用する、２つのフラッシュデバイスを並列にプログラミングするための従来のディジタル格納システムを示す。
【図１ａ】図１のフラッシュデバイスをプログラミングするために使用される関連信号のタイミング図を示す。
【図２】本発明の実施形態による、メモリユニット１６を含むディジタルシステム１０を示す。
【図３】図２のディジタルシステムのメモリユニット１６内のブロック構成例を示す。
【図４】図２の実施例について、セクタ情報のプログラミングのためのタイミング図を示す。
【図４ａ】図２の実施例について、セクタ情報のプログラミングのためのタイミング図を示す。
【図４ｂ】図２の実施例について、セクタ情報のプログラミングのためのタイミング図を示す。
【図５】本発明の別の実施形態のタイミング図を例示する。
【図５ａ】本発明の別の実施形態のタイミング図を例示する。
【図５ｂ】本発明の別の実施形態のタイミング図を例示する。
【発明を実施するための形態】
【００２１】
本発明の前述および他の目的、特徴および利点は、いくつかの図面を参照してなされる以下の好ましい実施形態の詳細な説明から明らかとなる。
【００２２】
（好適な実施形態の詳細な説明）
図２に示される本発明の実施形態によるディジタル格納システム１０は、コンピュータ（パーソナルコンピュータ（ＰＣ））、ディジタルカメラなどの一部であり得、ホスト１２に結合される。ディジタルシステム１０は、コントロールデバイス１４および不揮発性メモリユニット１６を含む。ホスト１２は、コントローラデバイス１４の指示にしたがってメモリユニット１６から情報を読み書きするように結合される。本発明によるメモリユニット１６は、１つ以上の不揮発性メモリデバイスから構成される（図２において、２つのメモリデバイス３４および３６がメモリユニット１６に含まれるように示されるが、他の数のメモリデバイスが使用され得る）。不揮発性メモリデバイスの各々は集積回路（または当該分野で一般に呼ばれるように、半導体デバイス）である。不揮発性メモリデバイスは、フラッシュ、ＥＥＰＲＯＭ（電気消去可能プログラマブル読み出し専用メモリ）、または他のタイプのソリッドステートメモリであり得る。
【００２３】
ホスト１２は、ホストバス１８を介してコントローラ１４と通信するように示され、そしてコントローラデバイス１４は、メモリ信号２０を介してメモリユニット１６に結合されるように示される。
【００２４】
コントローラデバイス１４は、一般にホストインタフェース回路２２、マイクロプロセッサ回路２４、揮発性格納ユニット２６およびスペースマネージャ／フラッシュインタフェース回路２８を含むように示される集積回路である。別の実施形態において、コントローラデバイス１４は、必ずしも半導体デバイスでなくてもよく、そしてプリント回路板などに結合されるディジタルロジックから形成され得る。ホストインタフェース回路２２は、ホストバス１８を介してホスト１２に結合するためのものである。ホストバス１８は、アドレスバス、双方向データバスおよび制御信号（別々に図示せず）を含む。使用するホストのアーキテクチャに依存して、ホストアドレスおよびデータバスは、アドレスおよびデータ信号を同じバスに多重化することによってアドレスおよびデータ情報の両方を伝送する１つのバスから構成され得る。なお、本明細書中で使用される用語「バス」は、複数の電気伝導体または信号線を含む。ホストバス１８は、当該分野で使用されるＰＣＭＣＩＡインタフェース、ＡＴＡインタフェースまたは他の種類のインタフェースであり得る。
【００２５】
ホストインタフェース回路２２は、ホストバス１８に結合するように示され、そしてさらにマイクロプロセッサバス３０を介してマイクロプロセッサ回路２４に結合されるように示される。マイクロプロセッサ回路２４は、さらにスペースマネージャ／フラッシュインタフェース回路２８にマイクロプロセッサバス３０を介して結合される。マイクロプロセッサバス３０は、マイクロプロセッサ回路２４とスペースマネージャ／フラッシュインタフェース回路２８との間でのアドレスおよびデータ情報の通信を容易にする。マイクロプロセッサ回路２４は、揮発性格納ユニット２６に揮発性格納バス３２を介して情報を読み書きするように結合される。ホストインタフェース回路２２は、さらにバッファユニット５０にマイクロプロセッサバス３０を介して結合されるように示される。より明らかとなるように簡単に言うと、情報はホスト１２とコントローラデバイス１４との間でホストインタフェース回路を介して通信される。セクタ情報は、メモリユニット１６内の格納のためのホスト１２によって提供されるか、またはホスト１２へコントローラデバイス１４から転送され、バッファユニット５０に格納される。バッファユニット５０は、一般に１つ以上のランダムアクセスメモリ（ＲＡＭ）デバイスまたは他の同様のメモリデバイスから形成される。本発明の１実施形態において、バッファデバイス５０のサイズは、４セクタサイズに値する情報を格納し得、各セクタは（ユーザデータの）５１２バイトである。本発明の他の実施形態において、他のサイズのバッファデバイス５０を本発明の範囲および精神から逸脱せずに使用し得る。しかし、バッファのサイズは、部分的に、使用されるフラッシュデバイスの数の関数である。すなわち、所定の図面を参照して以下に提供される実施例において、２つのフラッシュデバイスが使用され、「スーバー」ブロックは２つのブロックを含み、そして各フラッシュデバイスのセクタがこの２つのフラッシュデバイスの間でピンポンのようにアドレッシングされる。そのような構成において、バッファ５０のサイズは、少なくとも２つのセクタのための格納スペースを含む必要がある（各セクタが５１２バイトである場合、バッファサイズは少なくとも１０２４バイトである必要がある）。例えば、４つのフラッシュデバイスが使用される場合（以下に図示せず）、スーパーブロック内の同様の位置にある４つのセクタがピンポンのようにアドレッシングされるので、バッファサイズは少なくとも４つのセクタのための格納スペースが必要である。
【００２６】
本発明の実施形態において、マイクロプロセッサ回路２４はＩｎｔｅｌ８０５１プロセッサであり、あるいはマイクロプロセッサユニット２４はいずれの汎用プロセッサユニットでもあり得る。揮発性格納ユニット２６は、一般にマイクロプロセッサユニット２４によって実行されるファームウェアコードを格納するためのリードアクセスメモリ（ＲＡＭ）である。ホスト１２とコントローラ１４との間の情報はホストバス１８を介して転送され、そしてコントローラ１４とメモリユニット１６との間の情報は、メモリ信号２０を介して結合される。メモリユニット１６は、３４および３６などの２つ以上の不揮発性メモリデバイスから構成される。不揮発性メモリ３４および３６の各々のサイズは、ディジタルシステム１０のアプリケーションに依存して変化し得る。にもかかわらず、このサイズは、一般にバイトで呼ばれる。ここで各バイトは８ビットである。例えば、１つのアプリケーションにおいて、不揮発性メモリユニット１６のサイズは１６０ＭＢ（メガバイト）であり、各フラッシュまたは不揮発性メモリデバイスは３２ＭＢである。別のアプリケーションにおいて、不揮発性メモリユニット１６のサイズは８０ＭＢであり、各フラッシュメモリデバイスは１６ＭＢである。不揮発性メモリデバイス３４および３６は電源を落とした後もその内容を保存するメモリタイプである。不揮発性メモリデバイスの典型的な例は、フローティングゲートセルから構成され、そしてＴｏｓｈｉｂａ、Ｈｉｔａｃｈｉなどの会社によって製造されるフラッシュまたはＥＥＰＲＯＭデバイスである。
【００２７】
図２に示されていないが、空間管理／フラッシュインターフェイス回路２８は、空間管理制御ユニット３８、フラッシュインターフェイス回路４０、および空間管理格納ユニット４２を含む。本発明の一実施形態において、空間管理ユニット３８は、空間管理格納ユニット４２内で管理されているルックアップ表（ＬＵＴ）内に格納されている情報を制御するための状態マシンを含む。あるいは、空間管理制御ユニット３８の機能は、当業者に理解されるように、他の種類のハードウェアおよび／またはソフトウェアによって実行され得る。空間管理格納ユニット４２は、ＲＡＭなどの揮発性メモリからなり、ブロックアドレス指定およびステータスの情報をＬＵＴ内に格納する。
【００２８】
引き続き、図２に示されていないが、メモリ信号２０は、フラッシュアドレスバス、双方向フラッシュデータバス、およびフラッシュ制御信号を含む。これらの信号のいくつかは、本明細書中に含まれる他の図に関して、さらに説明される。
【００２９】
作動中、ホスト１２は、時折およびメモリユニット１６の読取りおよび書込みなどの様々な動作を実行中に、メモリユニット１６にアクセスする。これにより、ホスト１２は、データの読取りまたは書込みためのロケーションを識別するアドレスを提供する。ホストによって提供されたアドレスは、ホストバス１８上に結合されて、メモリユニット１６への情報およびメモリユニット１６からの情報にアクセスするか、またはそれらを読取る際にコントローラ１４によって使用される。一実施形態において、ホストによって提供されたアドレスは、ＣＨＳ（シリンダ、ヘッド、およびセクタ）の形式である。この種類のアドレス指定は、ディスク上の特定のロケーションを識別するためにこのようなアドレス指定スキームを使用したハードディスクを使用するシステムに適合される。しかし、情報を格納するための不揮発性メモリの出現により、ＣＨＳアドレスフォーマットは、不揮発性メモリユニット内のロケーションを識別するための値に変換される必要がある。従って、ＣＨＳアドレスがホストバス１８上に結合される場合、コントローラ１４は、ＣＨＳアドレスフォーマットを論理ブロックアドレス（ＬＢＡ）に変換する。ＬＢＡは次いで、マイクロプロセッサバス３０を介して結合されて、空間管理／フラッシュインターフェイスユニット２８によって使用される。あるいは、ホスト１２がコントローラ１４にＬＢＡ型のアドレスを提供し、この場合、変換は依然として実行されるが、それはＣＨＳからＬＢＡの変換でない。後者の変換は、単にＬＢＡを置換させるだけであり、それは、前者の変換、すなわちＣＨＳからＬＢＡの変換が使用される場合も実行される。本明細書中に前述されるように、ブロックは、所定の数のセクタ（例えば、１６、３２、または他の数のセクタ）を含むように規定される。さらに別の実施形態において、ホスト１２は、ＣＨＳアドレスからＬＢＡアドレスへの変換を実行し、ＣＨＳアドレスを置換し、結果として得られる置換されたアドレスをコントローラ１４に提供する。
【００３０】
ＬＢＡ計算は、ハードウェアまたはファームウェアによって実行され得る。ファームウェアを使用してＬＢＡを計算する場合、マイクロプロセッサ２４は、揮発性格納ユニット２６内に格納されているファームウェアコードの実行によって、このような機能を実行する。ハードウェアを使用してＬＢＡを計算する場合、状態マシンブロック（図２に示さず）がこのような計算を実行する。
【００３１】
上述の方程式によってＬＢＡを計算した後、ＬＢＡの特定の最下位ビットをマスキングすることにより、ＬＢＡはＶＬＢＡ（仮想論理ブロックアドレス）値に変換される。例えば、各ブロックに対して１６セクタが使用される場合、ＶＬＢＡは、１６進法の値０ｘ３ＦＦＦＦ０を用いて、ＬＢＡの論理「ＡＮＤ」によってＬＢＡから計算される。これは基本的に、ＬＢＡの中の最下位４ビットを除いて、ＬＢＡが保存されるという結果になる。各ブロックに対して３２セクタが使用される場合、ＶＬＢＡは、１６進法の値０ｘ３ＦＦＦＥ０を用いて、ＬＢＡの論理「ＡＮＤ」によってＬＢＡから計算され、これにより、ＬＢＡの中の最下位５ビットに効果的にマスキングをすること、および残りのビットを保存することなどが行われる。下記で詳細に説明されるように、「スーパーブロック（ｓｕｐｅｒ  ｂｌｏｃｋ）」の概念が使用される場合、マスキングされるビットの数は、「スーパーブロック」の大きさの関数である。つまり、各スーパーブロックは、各ブロックが多数のセクタによって規定される多数のブロックを有するので、スーパーブロックのセクタの総数は、ＶＬＢＡ値を形成するためにマスキングされるべきビットの数を決定する。ＬＢＡからＶＬＢＡへの変換は、空間管理／フラッシュインターフェイス２８によって実行される。この変換は、ハードウェアまたはソフトウェアのいずれかによって実行され得る。
【００３２】
図２において、ＶＬＢＡは次いで、マイクロプロセッサ２４から空間管理／フラッシュインターフェイス回路２８の空間管理制御ユニット３８までの、マイクロプロセッサバス３０の上に結合され、そこで、空間管理格納ユニット４２のＬＵＴ（ルックアップ表）をアドレス指定するために使用される。実際、ＶＬＢＡは、ＬＵＴの特定のロケーションをアドレス指定するために使用され、そこからＶＰＢＡ（仮想物理ブロックアドレス）が検索される。特定のＬＢＡ値が、様々なＰＢＡ値を示すために使用され得ると留意されるべきである。例えば、ホストが、特定のＬＢＡ値によって識別されるロケーションに書込みたいと願えば、特定のＬＢＡ値は、ＬＵＴ内のＶＰＢＡ値をルックアップ（ｌｏｏｋ  ｕｐ）するために使用される。このＶＰＢＡ値は、例えば、「２０」であり得るが、次にホストが同じＬＢＡによって識別される同じロケーションに書込みたいと願う時に、ＬＵＴから検索されるＶＰＢＡ値は、「２０」ではなく「２００」であり得る。これは、ＬＵＴ内でさらに管理されている特定のフラッグ情報を使用して行われる。簡単に言うと、最初に、書込みのためにホストによって特定のＬＢＡロケーションがアドレス指定される消去操作が行われた後は、情報が書込まれ、特定のＬＢＡに対応するＬＵＴ内のフラッグフィールドが「使用済み」として印を付けられて、これによって、次にホストが消去操作前と同じロケーションに書込みたいと願う時、このような書込みに対して、メモリユニット１６内の異なるロケーションが異なるＰＢＡによって識別される。従って、ＬＢＡおよびＰＢＡの間に１対１の関係はない。フラッグフィールドならびにＬＢＡおよびＰＢＡ  ＬＵＴのアドレス指定のさらなる説明のために、発明者Ｐｅｔｒｏ  Ｅｓｔａｋｈｒｉ、Ｂｅｒｈａｎｕ  Ｉｍａｎ、およびＡｌｉ  Ｒ．  Ｇａｎｊｕｅｉの「Ｍｏｖｉｎｇ  Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  ｉｎ  ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」という名称の１９９９年５月２５日に出願された米国特許第５，９０７，８５６号を参照されたい。本明細書において、その全文を記載するように、その開示を参考として援用する。
【００３３】
ＰＣアプリケーションにおいて、情報ブロックは典型的に、従来のハードディスクドライブにおいて使用されるようなセクタであり、各セクタは典型的に、５１２バイトのデータのための空間、およびオーバーヘッド情報のための別の空間を含むが、他の大きさのセクタも同様に使用され得る。
【００３４】
マイクロプロセッサ２４は、マイクロプロセッサ２４の中または外のいずれかに位置づけられる揮発性のメモリユニット２６（例えば、ＲＯＭ（読取り専用メモリ）またはＲＡＭ（読取りおよび書込みメモリ））からの、プログラムコード形式の命令を実行する。マイクロプロセッサ２４はさらに、空間管理制御ユニット３８に命令して、ホストによって提供されるＣＨＳ値から発生するＬＢＡを使用して、メモリユニット１６内で使用可能な、次に未使用（または自由）なアドレス指定できる格納ブロックのロケーションを見つけだす。ホストによる書込み操作の間、この未使用ブロックのロケーションは、ＬＵＴ内に格納され、ホストによる読取り操作の間、このブロックのロケーションは、ＬＵＴから読取られる。メモリユニット１６内のロケーションを識別するアドレス値は、ＬＵＴ内に格納されているので、空想物理ブロックアドレス（ＶＰＢＡ）と呼ばれる。空間管理制御ユニット３８は、様々なアルゴリズムのいずれか１つを使用して、フラッシュメモリデバイス内に位置づけられる次に使用可能（または、自由）なブロックを見つけ出し得る。空間管理の例は、発明者Ｍａｈｍｕｄ  ＡｓｓａｒおよびＰｅｔｒｏ  Ｅｓｔａｋｈｒｉの「Ｄｉｒｅｃｔ  Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ
Ａｄｄｒｅｓｓｉｎｇ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」という名称の１９９９年１月１３日に発行された米国特許第５，９２４，１１３号内に開示される。本明細書において、その全文を記載するように、特に図１１〜図１３およびそれに関する説明に関して、その開示を参考として援用する。しかし、代わりの実施形態において、他の空間管理の方法および装置も同様に、本発明によって使用され得る。
【００３５】
ＶＬＢＡ値は、最後には、ＶＰＢＡ値をＬＵＴからルックアップするために使用される。ＬＵＴは、列および欄を含み、各列がＶＬＢＡ値によってアドレス指定される。読取り操作中、ＶＬＢＡ値は、ＬＵＴの特定の行をアドレス指定するために使用され、そこからＶＰＢＡが検索される。書込み操作中、ＶＬＢＡは、ＬＵＴの特定の行をアドレス指定するために使用されて、特定のフラッグ情報を含むＶＰＢＡ値を格納する。ＶＰＢＡは最後に、物理ブロックアドレス（ＰＢＡ）に変換されて、メモリユニット１６内の特定のセクタのロケーションを識別する。
【００３６】
ＬＢＡ値は、マイクロプロセッサ２４によってマイクロプロセッサバス３０の上に結合されて、空間管理／フラッシュインターフェイス２８によって使用され、そこで、ＶＬＢＡアドレスに変換される。４ビットのセクタは、各ブロックに対して１６セクタを使用することを示す。なぜならば、２の４乗は、１６であるからである。ＶＬＢＡは、セクタビットをマスキングすることによって得られ（マスキングされたセクタビットは、セクタオフセット値と呼ばれる）、この例では、４ビットを含む。ブロックおよびチップ選択情報は、同じままである。チップ選択ビットは、たとえばデバイス３４または３６のいずれか１つなどの、メモリユニット１６内に含まれる複数の不揮発性メモリデバイスの中の特定の１つを選択するために使用される。ブロック情報は、選択された不揮発性メモリデバイス内の特定のブロックを識別する。ブロックが不揮発性メモリ内に格納されるか、書込まれるか、または移動されると、ＶＬＢＡもまた、不揮発性メモリに書込まれる。つまり、ＶＬＢＡは、ブロックの最後の行に書込まれる。あるいは、ＶＬＢＡは、ブロックの任意の他の行に書込まれ得る。このことは、下記の図を参照して、さらに説明される。
【００３７】
ここで、図３を参照すると、メモリユニット１６は、フラッシュデバイス２００およびフラッシュデバイス２０２を含むように示され、各フラッシュデバイスは、半導体デバイスである。前述のように、メモリユニット１６は、いくつかのフラッシュメモリデバイスを含み得る。図３において、ブロック０〜ブロックＮのブロックによって分けられる情報を含むように各フラッシュデバイス２００および２０２が示されると理解されるべきであり、ブロックの各セットであるブロック０〜ブロックＮは、１つのフラッシュデバイス内に含まれる。
【００３８】
図３において、具体的には、ブロック０  ２１０、ブロック１  ２１２からブロックＮ  ２１４のＮ個のブロック（Ｎは整数である）を含むフラッシュデバイス２００が示される。同様に、具体的には、ブロック０  ２１６、ブロック１  ２１８からブロックＮ  ２２０のＮ個のブロックを含むフラッシュデバイス２０２が示される。フラッシュデバイス２００および２０２は、メモリ信号２０を介してコントローラデバイス１４（図２に示す）と通信する。データバスのＤＢ７：０  ２４２、制御信号（読取り、書込み、および消去のための信号を含む）２４０、フラッシュレディー／ビジー（Ｆｒｄｙｂｓｙ*）バス２２２、フラッシュチップイネーブル０（ＦＣＥ０*）信号２２４、およびフラッシュチップイネーブル１（ＦＣＥ１*）信号２２６含むメモリ信号２０が示される。Ｆｒｄｙｂｓｙバス２２２は、フラッシュデバイス２００がプログラミングされる準備ができた時あるいはビジーである時を示すために、フラッシュレディー／ビジー０（Ｆｒｄｙ／ｂｓｙ０*）信号２２８と、フラッシュデバイス２０２がプログラミングされ得る時、およびビジーでありプログラミングされ得ない時を示すために、フラッシュレディー／ビジー１（Ｆｒｄｙ／ｂｓｙ１*）信号２３０とを含む。ＦＣＥ０*信号２２４は、書込み、読取り、または消去の操作の前にフラッシュデバイス２００を使用可能にするために使用される。同様に、ＦＣＥ１*信号２２６は、書込み、読取り、または消去の操作の前にフラッシュデバイス２０２をイネーブルにするために使用される。メモリ信号２０内に含まれる信号は、コントローラデバイス１４によって展開（ｄｅｖｅｌｏｐ）される。本発明の一実施形態において、ＦＣＥ０*信号およびＦＣＥ１*信号は、アクティブローであり、つまり、これらの状態は、低電圧または約「０」ボルトの状態の場合にアクティブになる。後者の状態の場合、これらの信号は、対応するフラッシュデバイスをアクティブにするか、またはそこへ書込む準備をする。同様に、Ｆｒｄｙ／ｂｓｙ０*信号およびＦｒｄｙ／ｂｓｙ１*信号がローの場合、これは、これらの信号に対応するフラッシュデバイスがビジー（または、プログラミングされているか、読取られているか、または消去されている）であることを示すのに対して、これらの信号が「ハイ」（すなわち、「ロー」電圧レベルよりも実質的に高い電位の電圧レベル）の場合、これらの信号に対応するフラッシュデバイスは、プログラミングの準備ができている。これは、これらの信号が、図３および図４の例の中に示されるよりアクティブハイ、またはその逆の極性であるように構成され得る任意の設計の選択である。
【００３９】
バスＤＢ７：０  ２４２は、フラッシュデバイスの中にプログラミングされるべきデータ、またはフラッシュデバイスから読取られるべきデータを結合するために使用される。バス２４２は、本発明の一実施形態において、８ビットのバスであり、代わりに他のビット数であってもよい。バス２４２は、フラッシュデバイス２００および２０２の両方に接続されている。ＦＣＥ０*信号およびＦＣＥ１*信号の状態は、他の制御信号の状態と共に、どのフラッシュデバイスデータが読取られているか、または書込まれているかを示す。例えば、ＦＣＥ０*が「ロー」であり、ＷＥ*信号（図３に示されていないが、図４に示されるように制御信号２４０内に含まれる信号）がローである場合、フラッシュデバイス２００は、バス２４２の上に結合されている情報を用いてプログラミングされ、バス２４２がフラッシュデバイス２０２に接続されているにも関わらず、後者は、プログラミングされない。なぜならば、後者のフラッシュイネーブル、またはＦＣＥ１*２２６が、「ハイ」でありアクティブでないからである。
【００４０】
ユーザデータおよびＥＣＣ情報（あるいは他の種類のオーバーヘッド情報）を含むセクタ情報を格納するために、１６セクタ格納ロケーション２３２を含む、フラッシュデバイス２００の各ブロック（ブロック０  ２１０〜ブロックＮ  ２１４）、およびフラッシュデバイス２０２の各ブロック（ブロック０  ２１６〜ブロックＮ  ２２０）が示される。別の実施形態において、ブロック（２１０〜２１４および２１６〜２２０）の各々は、１６セクタ以外も含み得ると留意されるべきである。例えば、容量が１２８Ｍｂｉｔｓのメモリユニットを有するシステムにおいて、各ブロックに対して３２セクタが使用され得るが、６４Ｍｂｉｔの容量を使用する場合、１６セクタのブロックが必要とされる。
【００４１】
フラッシュデバイス２００および２０２内の同様のロケーションにある２つのブロックは、「スーパーブロック」を形成する。例えば、図３に示されるように、スーパーブロック０  ２０４は、フラッシュデバイス２００のブロック０  ２１０およびフラッシュデバイス２０２のブロック０  ２１６を含む。フラッシュデバイス２００のブロック１  ２１２およびフラッシュデバイス２０２のブロック１  ２１８を含むスーパーブロック１  ２０６が示され、フラッシュデバイス２００のブロックＮ  ２１４およびフラッシュデバイス２０２のブロックＮ  ２２０を含むスーパーブロックＮ  ２０８が示される。各フラッシュデバイスから１つずつの２つのブロックを含むスーパーブロックが示されるが、スーパーブロックはその代わりに、２つ以上のブロックを含み得、その場合、スーパーブロックは、各フラッシュデバイス内の同様のロケーションに位置づけられるブロックを含む。あるいは、フラッシュデバイス２００のブロック０〜ブロックＮおよびフラッシュデバイス２０２のブロック０〜ブロックＮは、同じ半導体デバイス内に含まれ得る。
【００４２】
作動中、ホスト１２（図２に示す）からのコマンドを受け取ると、フラッシュデバイス２００のブロック０  ２１０の第１のセクタ格納ロケーション２３２（Ｓ０）をプログラミングすることによって、セクタ情報が書込まれる。しかし、典型的に、情報の１つ以上のセクタがメモリユニット１６内に格納されるため、次のセクタ情報は次いで、フラッシュデバイス２０２のブロック０  ２１６の第１のセクタ格納ロケーション２３２（Ｓ１）内に格納される。その次のセクタ情報は、フラッシュデバイス２００のブロック０の第２のセクタ格納ロケーション（Ｓ２）内に格納され、その次のセクタ情報は、フラッシュデバイス２０２のブロック０  ２１６の第２のセクタ格納ロケーション（Ｓ３）内に格納されるといった具合である。従って、３２セクタの情報は、スーパーブロック内に格納され得る。これによって、従来技術と比較して、ブロックのプログラミング可能な大きさは効果的に大きくなる。なぜならば、各フラッシュデバイスのブロックは、別のブロックによって続くといった具合でプログラミングされるからである。本発明の構成は、スーパーブロックへの書込み操作を達成することに関連するタスクの重複を可能にし、これは、まもなく明らかになるように、セクタ情報を書込むことに関連する時間を低減することによりシステム全体の性能を改善することによって行われる。
【００４３】
特定のセクタ格納ロケーションまたはブロックがプログラミングされる（または、書込まれる）場合、特定のセクタ格納ロケーションが存在するフラッシュデバイスに対応するＦＣＥ信号がイネーブルになり、フラッシュデバイスがビジーでことを示すようにＦｒｄｙｂｓｙがプログラミングされて、書込み操作が完了するまでフラッシュデバイス上のこれ以上の操作を回避する。特定のセクタ格納ロケーションに書込むために、特定のフラッシュデバイスが選択され（または、対応するＦＣＥ信号をアクティブにすることによってイネーブルにされ）、書込みコマンドは、特定のセクタ格納ロケーションが位置づけられる特定のフラッシュデバイス内のシフトレジスタ（示さず）内にシフトする。次いで、格納されるべきセクタ情報がフラッシュデバイス内にシフトし、その後、書込みコマンドが開始され、セクタ情報は、特定のフラッシュデバイス内にプログラミングされる。後者のタスクの間、すなわち、セクタ情報がフラッシュデバイス内に実際に書込まれる間、特定のフラッシュデバイスに対応するＦｒｄｙｂｓｙ信号は、特定のフラッシュデバイスがビジーであることを示すようにコントローラによってプログラミングされ、このプロセスは典型的に、５１２バイトの大きさのセクタを完了するために２００μ秒を必要とする。セクタの大きさが５１２であるセクタ情報を、フラッシュデバイス内にシフトすることは典型的に、３０μ秒を消費する。
【００４４】
ここで図４を参照すると、フラッシュデバイス２００および２０２をプログラミングする（または、それらに書込む）ためのイベントのシーケンスを反映するタイミング図表が示される。詳細には、Ｆｒｄｙ／ｂｓｙ０*信号２２８、Ｆｒｄｙ／ｂｓｙ１*信号２３０、ＦＣＥ０*信号２２４、ＦＣＥ１*信号２２６、およびＷＥ*信号の状態に関して、Ｓ０およびＳ１、Ｓ２、Ｓ３、Ｓ４およびＳ５の６セクタのプログラミングが示され、後者は、制御信号２４０（図３に示す）内に含まれる。まもなく明らかになるように、フラッシュデバイスの内の１つのプログラミングは、他のフラッシュデバイス内へのセクタ情報のシフトと同時に実行されて、書込み操作の性能と比較してシフト操作を時間的に見えなく（ｔｒａｎｓｐａｒｅｎｔ−ｉｎ−ｔｉｍｅ）し、従って、１つのデータバスを使用して同時に２セクタを書込む操作の速度を早くする。これによって、２セクタをプログラミングすることに関連するタスクのパイプライン処理を効果的に導入し、従って、セクタ情報の書込み操作時間を低減する。
【００４５】
バス２４２は、さまざまな時に異なる情報と結合され、このような情報は、図４の上部の関連する部分に示される。図４の左側から見ると、３００において示されるように、バス２４２は、セクタＳ０のコマンドおよびアドレスの情報を運び、この情報は、フラッシュデバイス２００内にシフトされる。この場合のコマンドは、通常、ホストによって開始される書込みコマンドである。アドレス情報は、セクタ情報がプログラミングされるべき特定のセクタのアドレス（この場合、セクタＳ０のアドレス）である。コマンド／アドレス情報をシフトする間、その情報の各ビットは、フラッシュデバイス２００内にシリアルにシフトされる。ＷＥ*信号が生じて「ロー」状態に変わると、情報のビットがシフトされる。その間に、ＦＣＥ０*信号２２４は、ローに保たれて、シフトするためのフラッシュデバイス２００を選択する。３０２において、セクタ情報（特に、典型的に５１２バイトのユーザデータ）、エラー訂正コード（ＥＣＣ）情報、および潜在的に他のセクタオーバーヘッド情報は、一度に８ビットずつ、フラッシュデバイス２００内のＳ０にシフトされる。この場合も、ＷＥ*のローに変わるパルスのシリーズは、フラッシュデバイス２００内へのセクタ情報のシフトを達成し、ＦＣＥ０*信号２２４は、フラッシュデバイス２００をイネーブルにするために「ロー」のままである。
【００４６】
３０４において、書込みコマンドが開始され、ＷＥ*信号が生じるとロー状態からハイ状態に変わり、ＦＣＥ０*信号２２４はハイ状態に変わり、Ｆｒｄｙ／ｂｓｙ０*信号２２８はロー状態に変わる。従って、フラッシュデバイス２００内へのセクタ情報の実際のプログラミング（または、書込み）が開始される。このプログラミングは、Ｓ０セクタ情報のものであり、Ｓ０セクタ情報は、図３におけるフラッシュデバイス２００のブロック０の第１のセクタである。発明者の経験により、５１２バイトのセクタユーザデータおよび１２バイトのＥＣＣ情報のプログラミングに必要な時間は約２００μ秒であり、シフト操作および書込みコマンドの開始操作は、約３０μ秒を消費する。セクタ情報がフラッシュデバイス内にシフトされる場合、セクタ情報はまだプログラミングされておらず、むしろ、セクタ情報は、一時的保持レジスタ内に配置され、そこでプログラミングを待つが、セクタ情報がフラッシュデバイスに書き込まれる場合、後者の場合のセルは実際にプログラミングされる。さらに、フラッシュデバイスのプログラミングは、対応するＦｒｄｙ／ｂｓｙ*信号が「ロー」状態の場合に行われる。
【００４７】
書込み開始操作の最後である３０４において、ＦＣＥ０*信号２２４は、コントローラデバイス１４によって「ハイ」状態にされて、フラッシュデバイスに書込まれている現在のセクタ情報の前に任意の新しいセクタ情報がシフトすることを防止する。フラッシュデバイス２００が書込まれている間、ＦＣＥ１*信号２２６は、３０６においてロー状態にされ、ＷＥ*パルスシリーズの生成によって、コマンドおよびアドレスの情報は、フラッシュデバイス２０２内のセクタＳ１にシリアルにシフトされる。次いで、３０８において、セクタ情報、すなわち５１２バイトのユーザデータおよび１２バイトのＥＣＣは、ＷＥ*パルスシリーズの生成によって、フラッシュデバイス２０２内にシフトされる。ＦＣＥ１*信号２２６は、このシフトプロセスのために、ローのままである。Ｓ１のシフト操作および書込みコマンドの開始操作（３１０）もまた、約３０μ秒を消費する。Ｓ１セクタ情報のシフトは、フラッシュデバイス２００のセクタＳ０内にセクタ情報がプログラミングされる間に行われると留意することは重要である。基本的に、これによって、３０μ秒のシフト時間を見えなくする。なぜならば、セクタ情報のシフトが、別のフラッシュデバイス内へのセクタ情報の書込みと平行してかまたは同時に行われるからである。従って、本発明において、３２セクタを有するスーパーブロックへの書込みは、最初の２セクタをプログラミングするために、３０＋３０＋２００μ秒すなわち２６０μ秒を消費し、その後、最初のシフトの後にセクタの１つをシフトする時間は常に見えないので、２３０μ秒のみを消費する。当業者に理解されるように、本発明によって、書込み操作時間は、データバスを２倍にする必要がなく、従ってコントローラデバイスにピンカウントを追加する必要なく、低減される。つまり、本発明において、８ビットのデータバスが使用される。一方で、書込み操作時間に関して従来技術が提供する最善のシナリオは、１６ビットのデータバスを必要とする。さらに、本発明において、スーパーブロックは、２つより多くのブロックまたは３２セクタを含み得、この場合も同様に、データバスに関する必要なピンの数は同じままであり、書き込み操作時間の改善も同じままである。つまり、従来技術において、２セクタの書込み操作時間が２３０μ秒を得るために、３２ビットのデータバスが必要であるが、データバスのピンカウントを８ビットより多くに増加させる必要なく、本発明によって同じ書込み操作時間が達成される。実際、各スーパーブロックに対するブロックの数が増加し、より多くのフラッシュデバイスが並列にプログラミングされるにつれて、本発明による利点は増大する。十分なフラッシュデバイスが並列に配置されると、必要とされる余分なデータバスピンを配置する十分な空間がなくなるので、余分なデータバスラインを使用する従来技術システムの方法および技術は非実用的になる。
【００４８】
いくつかの従来技術の手法において、３０＋３０＋２００＋２００μ秒または４６０μ秒の書込み時間が必要であり、上記において十分に説明されたような、２３０μ秒が達成され得る特定の他の従来技術において、本発明の待ち時間をはるかに越える待ち時間の遅れがあり、その結果、前者による書込み性能を低減する。繰り返して言うと、後者の従来技術の手法は、各ブロックの書込み操作の前に、ブロックのセクタが、バッファ内に格納されることを必要とする。ブロックが３２セクタである場合、４セクタをプログラミングすることを想定して、全４セクタがバッファ内に格納される必要があり、これは、バッファの大きさが、本発明が必要とする大きさより大きいことを必要とし、その結果、従来技術のシステムの製造コストを増加させる。さもなければ、情報の２セクタのみがバッファ内に格納される場合、後者のプログラミングが開始され得る前に、ホストが次の２セクタをバッファ内に提供し、コントローラがそれらをバッファ内に格納するのを待たなければならないことに関連する実質的な遅れがある。これによって、２セクタの書込み操作に関連する時間を２３０μ秒以上に実質的に長くする。これは、部分的に、従来技術の方法および装置が、セクタ（コマンド、アドレス、データ、およびＥＣＣ）のシフト時間を隠すことができないからである。
【００４９】
引き続き、図４を参照すると、３１０において、Ｓ１の書込みコマンドが開始されることによって、ＷＥ*信号がローに変わる。ＷＥ*信号がまたハイに変わることによって、Ｆｒｄｙ／ｂｓｙ１*２３０がローに変えられて、その結果、フラッシュデバイス２０２のセクタＳ１内へのセクタ情報のプログラミングが開始される。この場合も同様に、後者のプロセスは、５１２バイトのセクタに対して２００μ秒を消費する。Ｆｒｄｙ／ｂｓｙ１*は、約２００μ秒の間、ローのままである。従って、セクタＳ０およびＳ１に書込むためのプログラミング時間の総計は、２３０μ秒である。余分な３０μ秒が、第１のセクタ情報のシフトに関連するので、最初の２セクタ（この場合、セクタＳ０およびＳ１）のシフトおよびプログラミングが必要とするのは、２６０μ秒のみである。それ以降、２セクタのシフトおよびプログラミングは、２３０μ秒のみを必要とする。なぜならば、まもなく明らかになるように、セクタの１つをシフトすることが、もう１つのセクタの書込み時間内に隠されているからである。最初の印象では、最初の２セクタの書込み操作時間、すなわち２６０μ秒は、上記で説明されたいくつかの従来技術のシステムのいくつかに関連する書込み操作時間よりも長く見えるが、実際には、本発明の使用により、プログラミングは全体的に低減する。これは、シフトおよび書込みの時間が開始される前にバッファ内に格納するために、コントローラと同時にプログラミングされるべきセクタをホストに送らせるという従来技術システムの要件が原因である。従って、ホストが上記を完了する間、書込みプロセスは保留となり、通常、ホスト書込み操作が遅いことは公知であり、従って、セクタのプログラミング全体に関連する時間は増加する。しかし、本発明において、初めて２セクタが書込まれる場合を除いて、任意の２セクタの書込みを開始する前に、ホストが予め必要な数のセクタを提供するのを待つ必要はない。つまり、最初は、ホストは、バッファ内への格納のために、コントローラに情報の２セクタを提供する必要がある。それ以降、ホストは、他のセクタがプログラミングされている間にセクタ情報を提供し得る。高速ホストを使用するシステムにおいて、本発明と従来技術との間のこの差は、強調される効果を有さないかもしれないと留意されるべきである。しかし、コスト制限が部分的な原因となって通常は、より遅いホストが使用される。このようなシステムにおいて、この差は、よく留意されている。
【００５０】
図４において、３１２、３１４、および３１６において、セクタＳ２について行われるということを除いて、上記で説明された方法とほとんど同じ方法によって、コマンドおよびアドレスの情報がフラッシュデバイス２００内にシリアルにシフトされ、セクタ情報がフラッシュデバイス２００内にシフトされて、書込みコマンドが開始される。図３において、フラッシュデバイス２００のブロック０内の第２のセクタとして、Ｓ２が示される。３１４におけるセクタ情報のシフトは、フラッシュデバイス２０２のセクタＳ１内にセクタ情報を書き込む間に行われる。この場合も同様に、これによって、セクタ情報のシフトに関連する時間が隠されて、従って、このセクタの書込み時間を約３０μ秒だけ低減させる。より大きなセクタ（５１２バイトよりも大きなセクタ）に関して、時間がさらに短縮される。
【００５１】
３１６において書込みコマンドの開始を完了し、ＷＥ*信号がローからハイに変わると、Ｆｒｄｙ／ｂｓｙ０*信号２２８がロー状態に変えられ、その後の約２００μ秒の間にセクタ情報がフラッシュデバイス２００内にプログラミングされるように、Ｓ２セクタ内へのセクタ情報のプログラミングが開始される。次いで、３１８において、セクタＳ３のコマンドおよびアドレスの情報が、フラッシュデバイス２０２内にシリアルにシフトされる。３２０において、セクタ情報は、フラッシュデバイス２０２内にシフトされる。前述のように、これらのシフト操作は、Ｓ２セクタ内へのセクタ情報の書込みと共に起こり、セクタ情報、コマンド、およびアドレスのシフトに関連する時間が、書込み操作の全体に対して、隠されるか、または見えなくされる。従って、プロセスは、プログラミングされるようにホストによって命令されたすべてのセクタが、そのようにプログラミングされるまで続く。プロセスは、セクタＳ４およびＳ５についても、同じ方法で続けられる。
【００５２】
本発明において、ホストが１つのセクタのセクタ情報を提供し、そのセクタ情報がバッファ内に格納されるとすぐに、コントローラ１４がセクタ書込み操作を開始すると理解される。従って、従来技術のシステムが必要とするように、書込み操作が開始される前に、情報の２つ以上のセクタがホストから送られてくるのを待つ必要はない。従って、書込みの前に、ホストが２つ以上のセクタ情報を提供するのを待つことによって生じる遅れは、本発明によって低減される。
【００５３】
図５は、本発明の別の実施形態のタイミング図を示し、ここで、全てのフラッシュデバイスに対して１つのＦｒｄｙ／ｂｓｙ*信号が使用される。さらに、本発明の別の局面において、セクタをプログラミングする際の、１つ以上のエラーの発生を知らせるために割り込み信号が使用される。後者の場合、フラッシュセルのプログラミングに関連する感度が原因となり、通常、読取り照合（ｒｅａｄ−ｖｅｒｉｆｙ）操作は、セクタのプログラミングが成功したことを確定するために、セクタがプログラミングされる度に実行されると理解されるべきである。従来技術のシステムにおいて、割り込み信号が使用されないため、セクタの書込み操作が完了した後、プログラミングされていたセクタを含むフラッシュデバイスは、フラッシュデバイスをプログラミングする際にエラーが生じたかどうかを判定するためにポーリングされる必要がある。これは、書込み操作全体に対する追加の工程であり、割り込み信号の使用によって、基本的に消去される。
【００５４】
図５において、Ｆｒｄｙ／Ｂｓｙ０*信号２２７のタイミングが示される。この信号は、複数のＦｒｄｙ／Ｂｓｙ信号（各フラッシュデバイスに対して１つ）の使用に取って代わり、全てのフラッシュデバイスによって共有される。従って、信号２２７は、第１のセクタ、すなわちＳ０のステア書込みコマンド（ｓｔａｒｅ  ｗｒｉｔｅ  ｃｏｍｍａｎｄ）５０４の後にローに変わり、フラッシュデバイスがプログラミングされている間中、ローのままである。前述の実施形態のように、プログラミングされているセクタの内の１つのセクタ情報をシフトすることは、他のセクタをプログラミングしている間に行われる。しかし、他のＦｒｄｙ／ｂｓｙ*信号が使用されないため、信号２２７は、全てのセクタをプログラミングする間中、ローのままであり、これは、図４に関して説明した時間と同じ時間、すなわち、２セクタをプログラミングするための２３０μ秒、および最初の２セクタをプログラミングするための２６０μ秒だけかかる。
【００５５】
ＩＮＴＱ*信号２２９がフラッシュデバイスによって展開される。信号２２９は、メモリユニット１６（図２に示す）の全てのフラッシュデバイスに接続されているオープンコレクタ信号である。任意のフラッシュメモリデバイスによってエラーが検出される場合、すなわち、プログラミングされたセクタ情報とプログラミングされるはずだったセクタ情報との間に不一致がある場合、信号２２９は、アクティブ状態にされ（この場合、アクティブ状態は論理「ロー」である）、コントローラデバイス１４への入力として機能して、フラッシュデバイスをプログラミング中に生じ得た任意のエラーを後者に知らせる。従来技術のシステムにおいて、前述のように、セクタがプログラミングされた後は毎回、正確を期して、プログラミングされたセクタを含むフラッシュデバイスをチェックする。これは、所定のステータスレジスタの状態をチェックすることにより行われる。
【００５６】
実際、フラッシュデバイスは、読取り照合操作を実行し、ここで、セクタ内でプログラミングされた情報が読み返され、その後、読取りステータス（ｒｅａｄ
ｓｔａｔｕｓ）コマンドがコントローラによって実行される。この読取り情報が、プログラミングされたものと一致しない場合、エラーが検出される。従来技術のシステムにおいて、書込み操作のステータスは、読取りステータス操作中にステータスレジスタをチェックすることによりポーリングされて、各セクタ書込み操作の後、セクタをプログラミングする際に問題があったかどうかを判定する（これらの時間は図５に示す）。しかし、本発明の一実施形態によって、ＩＮＴＱ*信号２２９は、ステータス情報をポーリングする必要性を消去する。なぜならば、読取り照合操作が、読取りセクタとプログラミングされるはずだったセクタとの間の不一致を報告する場合、信号２９９がアクティブになって、コントローラにエラーを知らせるからである。この点において、本発明の一実施形態は、マイクロプロセッサ２４（図２に示す）によって実行されるタスクを減少させる。なぜならば、従来技術のシステムにおいて、プログラミングエラーを見つけるために、マイクロプロセッサがステータスレジスタをチェックするからである。従って、本発明は、マイクロプロセッサを他の機能に貢献可能にすることにより、システムの全体的な性能を効果的に改善する。
【００５７】
本発明は、特定の実施形態に関して説明されたが、当業者に本発明の改変および変更がおそらく明らかであることが予想される。従って、下記の請求の範囲は、本発明の真の精神および範囲内にあるような改変および変更を全て含むと解釈されることを意図する。
【図１】
2010152913.tif 000003
【図１ａ】
2010152913.tif 000004
【図２】
2010152913.tif 000005
【図３】
2010152913.tif 000006
【図４】
2010152913.tif 000007
【図４ａ】
2010152913.tif 000008
【図４ｂ】
2010152913.tif 000009
【図５】
2010152913.tif 000010
【図５ａ】
2010152913.tif 000011
【図５ｂ】
2010152913.tif 000012