(57)【要約】【課題】読み出しおよび書き込み操作を行う際にかかる時間を短縮するために、非揮発性メモリをセクタフォーマットで組織化されたデジタル情報の記憶用に採用し、それによりシステムの全体的な性能を上げ、同時にこのデジタルシステムの製造経費を削減する、デジタルシステムを提供する【解決手段】コントローラはセクタ単位に構成された情報を転送し、各セクタはホストと不揮発性メモリバンクとの間にユーザデータ部分およびオーバーヘッド部分を含み、２つの不揮発性メモリデバイス内の同じセクタに関連する２バイトのセクタの記憶および読み出しを同時に行う。各不揮発性メモリデバイスは、メモリロケーションの行によって規定され、ここで、少なくとも２つの半導体デバイスの対応する行が、その内部に２セクタの情報を、不揮発性メモリデバイスのメモリ行の１つに維持された２つのセクタに関連するオーバーヘッド情報と共に維持する。【選択図】  図６
2010092506.tif 000002
【特許請求の範囲】
【請求項１】
本願明細書に記載の不揮発性メモリシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
（発明の背景）
（関連出願との相互参照）
本発明は、１９９７年１０月７日に出願された「Ｍｏｖｉｎｇ  Ｓｅｑｕｅｎｔｉａｌ  Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎ  ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題する本発明者らの先行出願である米国特許第０８／９４６，３３１号の一部継続出願であり、これは１９９７年３月３１日に出願された「Ｍｏｖｉｎｇ  Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎ  ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題する米国特許第０８／８３１，２６６号の一部継続出願である。
【０００２】
（発明の分野）
本発明は、ハードディスク記憶または従来のフィルムに置き換えて用いる、非揮発性メモリを大容量記憶として採用する、パーソナルコンピュータおよびデジタルカメラのようなデジタルシステムの分野に関する。より詳細には、本発明は、そのようなデジタルシステムの性能を、デジタル情報が非揮発性メモリから読み出され、そこへ書き込まれる速度を上げることにより高めるアーキテクチャに関する。
【０００３】
（従来技術の説明）
フラッシュまたはＥＥＰＲＯＭメモリのような、より高い容量のソリッドステート記憶デバイス（揮発性メモリ）の登場に伴い、多くのデジタルシステムは従来の大容量記憶デバイスをフラッシュおよび／またはＥＥＰＲＯＭメモリデバイスに置き換えてきた。例えパーソナルコンピュータ（ＰＣ）は、従来のハードディスクの代わりに大容量記憶を目的としてソリッドステート記憶装置を用いる。デジタルカメラは、従来のフィルムと置き換えて、カードにおいてソリッドステート記憶デバイスを採用する。
【０００４】
図１は、コントローラ１２を含む従来技術のメモリシステム１０を示し、このコントローラは通常半導体（または集積回路）デバイスであり、ＰＣまたはデジタルカメラであり得るホスト１４に結合する。コントローラ１２はさらに、非揮発性メモリバンク１６に結合する。ホスト１４は、複数のセクタに組織化された情報をメモリバンク１６へ書き込み、そして読み出す。このメモリバンク１６は、第１非揮発性メモリチップ１８および第２非揮発性メモリチップ２０を含む。チップ１８は、８ビットラインを含む第１バス２８を介してコントローラ１２のポート２６に接続されたポート２４を有するＩ／Ｏレジスタ２２、およびＩ／Ｏレジスタ２２と結合した記憶エリア３０を含む。チップ２０は、８ビットラインを含む第２バス３８を介してコントローラ１２のポート３６に接続されたポート３４を有するＩ／Ｏレジスタ３２、およびＩ／Ｏレジスタ３２と結合した記憶エリア４０を含む。第１バス２８および第２バス３８は、コントローラとメモリチップ１８および２０との間で、データ、アドレスおよび命令信号を送信するために使用される。情報の１６ビットの内、最下位の８ビット（ＬＳＢ）は第１バス２８を介してチップ１８へ供給され、最上位の８ビット（ＭＳＢ）は第２バス３８を介してチップ２０へ供給される。
【０００５】
メモリバンク１６は、それぞれが複数のメモリ行ロケーションを含んでいる複数のブロックロケーション４２を含む。メモリバンクの各ブロックロケーションは、第１非揮発性メモリチップに位置する第１サブブロック４４、および第２非揮発性メモリチップに位置する対応する第２サブブロック４６から構成される。各メモリ行ロケーションは、第１の行ロケーション４８および対応する第２の行ロケーション５０を含む。示されている実施形態では、第１行のロケーション４８および第２の行ロケーション５０のそれぞれは、２５６バイトのデータ情報用の記憶に加え、オーバーヘッド情報用に追加の８バイトの記憶空間を含む。セクタは、５１２バイトのユーザデータおよび１６バイトの非ユーザデータ（後者は一般にオーバーヘッド情報と呼ばれる）を含むが、２５６バイトのユーザデータおよび８バイトのセクタのオーバーヘッド情報は、チップ１８の第１の行部分４８において維持され得、残りの２５６バイトのユーザデータおよび残りの８バイトの同じセクタのオーバーヘッド情報は、チップ２０の第２の行部分５０において維持され得る。従って、セクタの半分はチップ１８のメモリ行ロケーション４８に記憶され、セクタの他の半分はチップ２０のメモリ行ロケーション５０に記憶される。加えて、記憶されたセクタのオーバーヘッド情報のそれぞれの半分は、チップ１８により維持され、他の半分はチップ２０により維持される。
【０００６】
一般に、フラッシュメモリチップ１８および２０へデータを読み出し、そして書き込むことは、時間を消費する。フラッシュメモリチップへデータを書き込むことは、特に時間消費である。なぜなら、データはＩ／Ｏレジスタ２２および３２にラッチされなければならず、これらは第１および第２バスを介して一度に１バイトずつロードされてから、Ｉ／Ｏレジスタ２２および３２からフラッシュメモリチップ１８および２０のメモリセルへそれぞれ送信されるためである。データをＩ／Ｏレジスタからメモリへ、データのバイト毎に送信するために必要とされる時間は、Ｉ／Ｏレジスタのサイズおよびフラッシュメモリチップのサイズに比例する。
【０００７】
書き込み操作中、コントローラ１２は単一セクタの情報を、以下のようにメモリバンク１６へ書き込む。（１）書き込み命令信号をチップ１８および２０のそれぞれに、バス２８および３８を介して同時に送信し、（２）対応するチップのサブブロック４４および４６を特定するアドレスデータを、チップ１８および２０へバス２８および３８を介して同時に送信し、（３）１バイトのユーザデータをチップ１８および２０のそれぞれへ、対応するサブブロック４４および４６内に記憶するために、バス２８および３８を介して同時に送信する。このような従来技術システムに伴う問題点は、ホスト１４により発せられる書き込み命令中に、２バイトの情報が一度に書き込み、そして読み出されることに対して、１つのセクタの情報しかメモリバンク１６により一度に収容されないことである。
【０００８】
別の従来技術デジタルシステム６０を図２に示す。このシステムは、ホスト６４に結合したコントローラ６２、およびセクタで組織化された情報を非揮発性メモリチップ６８へ記憶し、そして読み出すための非揮発性メモリチップ６８を含み、このメモリチップ６８はメモリバンク６６内に含まれる。ホストからの命令によりコントローラは１つのチップに１つのセクタ全体を記憶するが、より多くのチップ（図示せず）がメモリバンク内に含まれ得る。ブロック０のようなブロックは、１６個のセクタＳ０、Ｓ１、．．．、Ｓ１５を含む。またチップ６８は、５１２バイトに加え１６バイト、総計５２８バイトの記憶空間を含むＩ／Ｏレジスタ７０をも含む。コントローラは、ホスト６４とメモリ６６との間で、一度に１バイトの情報を送信する。５１２バイトのユーザデータに加え１６バイトのオーバーヘッド情報を含む１つのセクタは、書き込み操作中にＩ／Ｏレジスタ内に一時的に記憶されてから、メモリデバイス内におけるブロックの１つに、そこで記憶されるために送信される。読み出し操作中、１つのセクタの情報はメモリデバイスのブロックの１つから読み出されてから、コントローラへの送信のためにＩ／Ｏレジスタ内に記憶される。図２の従来技術のアーキテクチャに伴う重要な問題点は、総計５２８バイトがＩ／Ｏレジ
スタ３６に記憶され得ることに対し、１バイトのセクタ情報しかコントローラとメモリバンクとの間で一度に送信され得ず、それによりシステムの全体的な性能が妨げられることである。
【０００９】
図１および２の従来技術の両システムは、１セクタの情報を識別するホスト供給論理ブロックアドレス（ＬＢＡ）を、メモリバンク内におけるセクタのロケーションを識別する物理ブロックアドレス（ＰＢＡ）に変換する、ＬＢＡ−ＰＢＡマッピング情報を維持する。このマッピング情報は、コントローラの外に維持され得るが、通常コントローラ内において揮発メモリ（例えばＲＡＭ）に含まれる。
【００１０】
図３は、行および列により規定されるＬＢＡ−ＰＢＡマップ３００の例を図示した表図を示す。各行３０２は、１６で除算されたホストから受信したＬＢＡの値に相当する値により独特に識別され、アドレスされている。図３の行の数は、１６進法を用いて示される。よって、例えば行１０Ｈ（１６進法において）は、１０進法における１６に相当するアドレス値である。マップ３００の各行３０２は、ＰＢＡ値を維持するメモリロケーションフィールド３０４、「オールド」フラグフィールド３０６、「使用中」フラグフィールド３０８、および「欠陥」フラグフィールド３１０を含む。フラグフィールド（図１および２）は、メモリバンク内において維持される１つのブロックの情報のステータスに関する情報を供給する。仮想ＰＢＡフィールド３０４は、メモリバンク内におけるブロックのロケーションについての情報を記憶する。
【００１１】
図４は、メモリバンク内に維持される１つのセクタのデータを記憶するための例示的なフォーマットを図示した表図である。仮想ＰＢＡフィールド３０４（図３）は、各ブロックが複数のセクタ４０２を有するブロック４００の情報のロケーションについての情報を供給する。各セクタ４０２はユーザデータフィールド４０４、ＥＣＣフィールド４０６、「オールド」フラグフィールド４０８、「使用中」フラグフィールド４１０、および「欠陥」フラグフィールド４１２で構成される。
【００１２】
本明細書中で述べられる種類の従来技術のシステムに付随するさらなる問題点は、表３００（図３）が多大な「ｒｅａｌ  ｅｓｔａｔｅ」を占め、これが一般にＲＡＭ技術（これは、それ自体に経費がかかり、そして通常コントローラ内において保持される）で構成されることから、その製造に伴いかなりの経費がかかる。さらに、表３００の各行が１つのブロックの情報に付随するように、ブロックの情報の数が大きければ大きいほど、表のサイズも大きくなるため（これはまたコントローラを製造する際に追加の経費となるが）、このデジタルシステムはこのような表を採用する。
【００１３】
ここで必要とされるものは、読み出しおよび書き込み操作を行う際にかかる時間を短縮するために、非揮発性メモリをセクタフォーマットで組織化されたデジタル情報の記憶用に採用し、それによりシステムの全体的な性能を上げ、同時にこのデジタルシステムの製造経費を削減する、デジタルシステムである。
【発明の概要】
【課題を解決するための手段】
【００１４】
（発明の要旨）
本発明の目的は、非揮発性メモリバンクへ情報を読み出し、書き込むことに伴う時間を短縮することにより、１つ以上の非揮発性メモリデバイス（フラッシュおよび／またはＥＥＰＲＯＭチップ）を含む非揮発性メモリバンクを操作するホストに結合したコントローラを有するデジタルシステムの性能を高めることである。
【００１５】
本発明の別の目的は、本明細書中で述べるように、ホストから発される単一の書き込み命令中に、少なくとも２つのセクタの情報を、少なくとも２つの非揮発性メモリ半導体デバイスへ書き込むことにより、複数のセクタの情報を記憶する際にかかる時間を短縮する
ことである。
【００１６】
本発明の別の目的は、本明細書中で述べるように、ホストから発される単一の読み出し命令中に、少なくとも２つのセクタの情報を、少なくとも２つの非揮発性メモリ半導体デバイスへ読み出すことにより、複数のセクタの情報を記憶する際にかかる時間を短縮する
ことである。
【００１７】
本発明のさらなる目的は、２つの非揮発性メモリ半導体デバイスの１つにおける２つのセクタの情報に付随したオーバーヘッド情報を記憶することである。
【００１８】
本発明のまた別の目的は、２つの非揮発性メモリデバイス内において記憶された、２バイトの１つのセクタの情報に同時にアクセスし、それにより本発明を少なくとも２桁で採用するシステムの性能の速度を高めることである。
【００１９】
本発明のまた別の目的は、第１セクタの情報の１バイトおよび第２セクタの情報の１バイトに、２つの非揮発性メモリデバイス内において同時にアクセスし、それにより本発明を採用するシステムの性能の速度を高めることである。
【００２０】
本発明のさらなる目的は、複数のホスト供給セクタアドレスから非揮発性メモリデバイス内におけるブロックのアドレス間の変換を維持する非揮発性メモリ表（またはマップ）のサイズを縮小し、それによりデバイスシステムの製造経費を削減することである。
【００２１】
簡潔に言うと、本発明は、ホストに連結したコントローラ半導体デバイス、および複数の非揮発性メモリデバイスを含む非揮発性メモリバンクを有するデバイスシステムを含む。コントローラは、セクタで組織化された情報（各セクタはユーザデータ部分およびオーバーヘッド部分を含む）をホストと非揮発性メモリバンクとの間で送信し、同じセクタに関する２バイトの情報を、２つの非揮発性メモリデバイス内において同時に記憶し、読み出す。各非揮発性メモリデバイスは、メモリロケーションの行により規定され、ここで少なくとも２つの半導体デバイスの対応する行は、２つのセクタの情報を維持し、そこに非揮発性メモリデバイスのメモリ行の内、１つに維持される２つのセクタに関するオーバーヘッド情報を伴う。３２あるセクタの情報のそれぞれは、２つのメモリデバイス（ここで偶数および奇数バイトの１つのセクタは、２つの非揮発性メモリデバイスから同時に読み出され、書き込まれる）間で展開する１つのブロックの情報を備えて仮想物理ブロックアドレスにより識別されたブロックを規定する。別の実施形態において、コントローラは単一の非揮発性メモリデバイス内においてセクタ全体の情報を記憶し、２つの非揮発性メモリデバイスにおいて少なくとも２つのセクタの対応するバイトを処理することにより、１つのセクタの情報を同時に読み出し、または書き込む。
【００２２】
本発明のこれらの、また他の目的および利点は、いくつかの図面において示す以下の好ましい実施形態の詳細な説明を読み終えた後、当業者には疑いなく明らかとなる。
【００２３】
（図面）
図１は、単一のセクタの情報が、書き込み操作中に一度に２バイトずつ、２つのメモリユニットを含むメモリバンクへ書き込まれ、各メモリユニットは単一の行ロケーションにおける２５６バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図であり、  図２は、単一のセクタの情報が、書き込み操作中に一度に１バイトずつ、少なくとも１つのメモリユニットを含むメモリバンクへ書き込まれ、メモリユニットは単一の行ロケーションにおける５１２バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図であり、  図３は、セクタの情報を識別するホスト供給論理ブロックアドレス（ＬＢＡ）から、メモリバンク内においてセクタのロケーションを識別する物理ブロックアドレス（ＰＢＡ）へ変換する例示的なマップを示す表図であり、
図４は、メモリバンクにおいて維持されたセクタのデータを記憶するための例示的なフォーマットを示す表図であり、
図５は、２セクタの情報が、単一の書き込み操作中に一度に２バイトずつ、少なくとも２つのメモリユニットを含むメモリバンクへ書き込まれ、各ユニットは単一の行ロケーションにおける５１２バイトのユーザデータを記憶する容量を有する、本発明によるメモリシステムの一般化ブロック図であり、
図６は、図５のメモリシステムの詳細なブロック図であり、
図７は、１つの偶数セクタおよび１つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第１のメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第２のメモリユニットに位置する第２の行ロケーションに記憶される、２つの非揮発性メモリユニットを含むメモリバンクにおいて、１つのブロックの情報（１ブロックは３２セクタ含む）を記憶するメモリ記憶フォーマットを一般化して示す表図であり、
図８Ａは、本発明に従って使用するための例示的なＬＢＡ−ＰＢＡマップの組織を示す表図であり、
図８Ｂは、本発明によるセクタの情報と付随したブロックの情報とを識別するアドレス情報のフォーマットを示すブロック図であり、
図９は、単一の書き込み操作中に、２セクタの情報が図７に示すメモリ記憶フォーマットを有するメモリバンクへ同時に読み出される、図６のメモリシステムにより行われる書き込み操作のための制御、アドレス、およびデータ信号のタイミングを示すタイミング図
であり、
図１０は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図７に示すようなメモリ記憶フォーマットを有するメモリバンクを示す表図であり、
図１１は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図７に示すような他のメモリ記憶フォーマットを有するメモリバンクを示す表図であり、
図１２は、本発明による単一の書き込み操作中に、２セクタの情報を２つのメモリユニットに同時に書き込むプロセスを示すフローチャートであり、
図１２ａは、図１２の欠陥管理ルーチン（ｄｅｆｅｃｔ  ｍａｎａｇｅｍｅｎｔ  ｒｏｕｔｉｎｅ）を行うにあたって行われる工程のフローチャートである。
【００２４】
図１３は、１つの偶数セクタおよび１つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第１の２つのメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第２の２つのメモリユニットに位置する第２の行ロケーションに記憶される、２つの非揮発性メモリユニットを含むメモリバンクにおいて、１つのブロックの情報（１ブロックは３２セクタ含む）を記憶
するメモリ記憶フォーマットを一般化して示す表図であり、
図１４は、本発明の原理に従って、メモリバンクのブロックを消去するプロセスのための制御、アドレスおよびデータ信号のタイミングを示すタイミング図であり、
図１５は、本発明に従って、第１メモリユニット内に記憶された第１サブブロック、および第２メモリユニット内に記憶された第２サブブロックを含むブロックを消去するプロセスを示すフローチャートである。
【図面の簡単な説明】
【００２５】
【図１】図１は、単一のセクタの情報が、書き込み操作中に一度に２バイトずつ、２つのメモリユニットを含むメモリバンクへ書き込まれ、各メモリユニットは単一の行ロケーションにおける２５６バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図である。
【図２】図２は、単一のセクタの情報が、書き込み操作中に一度に１バイトずつ、少なくとも１つのメモリユニットを含むメモリバンクへ書き込まれ、メモリユニットは単一の行ロケーションにおける５１２バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図である。
【図３】図３は、セクタの情報を識別するホスト供給論理ブロックアドレス（ＬＢＡ）から、メモリバンク内においてセクタのロケーションを識別する物理ブロックアドレス（ＰＢＡ）へ変換する例示的なマップを示す表図である。
【図４】図４は、メモリバンクにおいて維持されたセクタのデータを記憶するための例示的なフォーマットを示す表図である。
【図５】図５は、２セクタの情報が、単一の書き込み操作中に一度に２バイトずつ、少なくとも２つのメモリユニットを含むメモリバンクへ書き込まれ、各ユニットは単一の行ロケーションにおける５１２バイトのユーザデータを記憶する容量を有する、本発明によるメモリシステムの一般化ブロック図である。
【図６】図６は、図５のメモリシステムの詳細なブロック図である。
【図７】図７は、１つの偶数セクタおよび１つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第１のメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第２のメモリユニットに位置する第２の行ロケーションに記憶される、２つの非揮発性メモリユニットを含むメモリバンクにおいて、１つのブロックの情報（１ブロックは３２セクタ含む）を記憶するメモリ記憶フォーマットを一般化して示す表図である。
【図８Ａ】図８Ａは、本発明に従って使用するための例示的なＬＢＡ−ＰＢＡマップの組織を示す表図である。
【図８Ｂ】図８Ｂは、本発明によるセクタの情報と付随したブロックの情報とを識別するアドレス情報のフォーマットを示すブロック図である。
【図９】図９は、単一の書き込み操作中に、２セクタの情報が図７に示すメモリ記憶フォーマットを有するメモリバンクへ同時に読み出される、図６のメモリシステムにより行われる書き込み操作のための制御、アドレス、およびデータ信号のタイミングを示すタイミング図である。
【図１０】図１０は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図７に示すようなメモリ記憶フォーマットを有するメモリバンクを示す表図である。
【図１１】図１１は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図７に示すような他のメモリ記憶フォーマットを有するメモリバンクを示す表図である。
【図１２】図１２は、本発明による単一の書き込み操作中に、２セクタの情報を２つのメモリユニットに同時に書き込むプロセスを示すフローチャートである。
【図１２ａ】図１２ａは、図１２の欠陥管理ルーチン（ｄｅｆｅｃｔ  ｍａｎａｇｅｍｅｎｔ  ｒｏｕｔｉｎｅ）を行うにあたって行われる工程のフローチャートである。
【図１３】図１３は、１つの偶数セクタおよび１つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第１の２つのメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第２の２つのメモリユニットに位置する第２の行ロケーションに記憶される、２つの非揮発性メモリユニットを含むメモリバンクにおいて、１つのブロックの情報（１ブロックは３２セクタ含む）を記憶するメモリ記憶フォーマットを一般化して示す表図である。
【図１４】図１４は、本発明の原理に従って、メモリバンクのブロックを消去するプロセスのための制御、アドレスおよびデータ信号のタイミングを示すタイミング図である。
【図１５】図１５は、本発明に従って、第１メモリユニット内に記憶された第１サブブロック、および第２メモリユニット内に記憶された第２サブブロックを含むブロックを消去するプロセスを示すフローチャートである。
【発明を実施するための形態】
【００２６】
（実施形態の詳細な説明）
図５は、本発明の原理に従うメモリシステムである５００において、一般化したブロック図を示す。このシステムは、ホストシステム５０４に結合したメモリカード５０２を含む。１つの実施形態では、ホスト５０４はデジタルカメラであり、メモリカード５０２はデジタルフィルムカードであり、また別の実施形態では、ホスト５０４はパーソナルコンピュータシステムであり、メモリカード５０２はＰＣＭＣＩＡカードである。メモリカード５０２は、ブロックに組織された複数のセクタの情報を記憶するための複数の非揮発性メモリユニット５０８を含む非揮発性メモリバンク５０６と、メモリバス５１２を介してメモリバンクに結合され、ホストバス５１４を介してホスト５０４に結合されたメモリコントローラ５１０とを含む。メモリコントローラ５１０は、ホスト５０４とメモリバンク５０６との間でセクタ組織化情報の送信を制御する。各セクタの情報は、ユーザデータ部分およびオーバーヘッド部分を含む。メモリコントローラは、以下でさらに説明するように、本発明に従ってメモリバンクのメモリユニットへの書き込み操作、およびそこからの読み出し操作を行う。
【００２７】
本発明において、非揮発性メモリバンク５０６は、任意の数の非揮発性メモリユニット５０８を含み得るが、好ましい実施形態においては、非揮発性メモリバンクは偶数のメモリユニットを有する。また、この好ましい実施形態では、各非揮発性メモリユニットはフラッシュメモリ集積回路デバイスである。
【００２８】
図６は、図５のメモリシステムである６００において、詳細なブロック図を示す。コントローラ５１０は、コントローラとホストとの間でアドレス、データ、および制御信号を送信するために、ホストバス５１４を介してホスト５０４に結合したホストインターフェース６１０と、ホストインターフェースのポート６１８に結合したポート６１６を有するデータバッファ６１４と、ホストインターフェースのポート６２４に結合したポート６２２を有するマイクロプロセッサ６２０と、マイクロプロセッサのポート６３０に結合したポート６２８を有するコード記憶ユニット６２６と、マイクロプロセッサのポート６３０およびコード記憶ユニットのポート６２８に結合したポート６３４を有するブートＲＯＭユニット６３２と、マイクロプロセッサのポート６４０に結合したポート６３８を有する空間マネジャー６３６と、マイクロプロセッサのポート６４６に結合したポート６４４、空間マネジャーのポート６５０に結合したポート６４８、およびデータバッファのポート６４７に結合したポート６４５を含むフラッシュ状態マシン６４２と、フラッシュ状態マシンのポート６５６に結合したポート６５４を有するメモリ入力／出力ユニット６５２と、フラッシュ状態マシンのポート６６４に結合したポート６６２を有するエラー訂正コード論理ユニット（ＥＣＣ論理ユニット）６６０、およびデータバッファ６１４のポート６６８に結合したポート６６６とを含むように示される。
【００２９】
示されている実施形態では、メモリバンク５０６は、２つの非揮発性メモリユニット（追加のメモリは含まれ得るが、簡略化のため２つのみを示す）と、ＦＬＡＳＨ０と指定された第１のフラッシュメモリチップ６７０と、ＦＬＡＳＨ１と指定された第２のフラッシュメモリチップ６７２とを含む。第１のフラッシュメモリチップ６７０は、第１入力／出力レジスタ（第１のＩ／Ｏレジスタ）６７１および記憶エリア６６９を含む。第２のフラッシュメモリチップ６７２は、第２入力／出力レジスタ（第２のＩ／Ｏレジスタ）６７３および記憶エリア６７４を含む。
【００３０】
メモリバス５１２は、コントローラ５１０とメモリバンク５０６との間で、アドレス、データ、および制御信号を送信するために用いられる。メモリバス５１２は、フラッシュメモリチップ６７０、６７２とメモリＩ／Ｏユニット６５２との間でアドレス、データ、および命令信号を送信するメモリＩ／Ｏユニット６５２のポート６７６に結合したフラッ
シュバス６７５を含む。フラッシュバス６７５は１６のビットラインを含み、その内８ビットラインは第１フラッシュメモリチップのＩ／Ｏレジスタ６７１のポート６８２に結合した第１バス６８０を形成し、別の８ビットラインは第２フラッシュメモリチップのＩ／Ｏレジスタ６７３のポート６８６に結合した第２バス６８４を形成する。
【００３１】
メモリバス５１２はまた、フラッシュ状態マシン６４２の制御信号（ＣＴＲＬ信号）出力６９２を、第１フラッシュメモリチップの入力６９４および第２フラッシュメモリチップの出力６９６に接続する制御バス６９０と、フラッシュ状態マシン６４２のチップイネーブル（ＣＥ）出力７００を、第１フラッシュメモリチップのイネーブル出力７０２および第２フラッシュメモリチップの出力７０４に接続するチップイネーブルライン６９８と、第１フラッシュメモリチップの出力７０８および第２フラッシュメモリチップの出力７１０を、フラッシュ状態マシン６４２の出力７１２に接続する準備／ビジー信号（ＦＲＤＹ−ＢＳＹ＊信号）ライン７０６とを含む。
【００３２】
マイクロプロセッサ６２０は、場合により（例えばメモリシステムの初期化中）、ＲＯＭ６３２に記憶されたプログラム指示（またはコード）を実行し、またメモリシステムの操作中のような他の場合には、マイクロプロセッサはコード記憶ユニット６２６に記憶されたコードを実行する。この記憶コードユニットは、揮発性（すなわち読み出しおよび書き込みメモリ（ＲＡＭ）タイプ）、または非揮発性（すなわちＥＥＰＲＯＭタイプ）のメモリ記憶装置であり得る。コード記憶ユニット６２６からのプログラムコードに先だって、プログラムコードはメモリバンク５０６において記憶され得、そして後にそのコードの実行のために、コード記憶ユニットにダウンロードされ得る。初期化中、マイクロプロセッサ６２０はＲＯＭ６３２からの指示を実行し得る。
【００３３】
ユーザデータおよびオーバーヘッド情報を含むセクタ組織化情報は、ホスト５０４からホストバス５１４を介してホストインターフェース６１０において受信され、データバッファ６１４に、そのバッファ内での一時的な記憶のために供給される。データバッファ内に記憶されたセクタの情報は、フラッシュ状態マシン６４２の制御のもとで得られ、以下でさらに説明する方法でメモリバンク５０６に供給される。当該分野において、各セクタが５１２バイトのユーザデータに加えオーバーヘッド情報を含むことは一般的である。セクタは、他の数のバイトの情報を含み得るが、好ましい実施形態においては、セクタは５１２バイトのユーザデータよび１６バイトのオーバーヘッド情報を有する。
【００３４】
ＥＣＣ論理ブロック６６０は、セクタ組織化情報内のエラーの符号化および訂正を行うための回路機構を含む。ＥＣＣ論理ブロック６６０は、エラー検出操作および／またはエラー訂正操作を、フラッシュメモリチップ６７０、６７２に記憶された各セクタのユーザデータ部分上、あるいはホスト５０４から受信されたデータ上で行う。
【００３５】
必要であれば、空間マネジャー６３６は、それぞれが複数のセクタの情報を含んでいるブロックの情報を記憶するための、メモリバンク内における次の未使用（または空き）の非揮発性メモリロケーションを見出す。好ましい実施形態においては、１つのブロックは３２セクタ含むが、代わりにブロックは他の数（例えば１６のような数）のセクタを含むように規定され得る。メモリバンク５０６内に位置する記憶ブロックの物理アドレス（仮想物理ブロックアドレス（仮想ＰＢＡ）と呼ばれる）、およびメモリバンク５０６内に位置するセクタの情報の物理ブロックアドレス（実物理ブロックアドレス（実ＰＢＡ）と呼ばれる）は、空間マネジャーがホストから受信した論理ブロックアドレス（ＬＢＡ）の変換を行うことにより決定される。ホスト５０４から受信した実ＬＢＡ（ホスト供給ＬＢＡ）は、セクタの情報を識別する。空間マネジャー６３６は、以下でさらに説明するように、改変版のホスト供給ＬＢＡから仮想ＰＢＡへ変換するためのＬＢＡ−ＰＢＡマップを記憶する空間マネジャーメモリユニット（これは好ましくは揮発性メモリユニット）を含む。示されている実施形態では、空間マネジャーは、空間マネジャーコントローラ（ＳＰＭコントローラ）７２４の制御のもとで、ＬＢＡ−ＰＢＡマップを記憶する空間マネジャーＲＡＭユニット（ＳＰＭ  ＲＡＭユニット）７２０を含み、このＳＰＭコントローラ７２４はＳＰＭ  ＲＡＭユニットに結合している。
【００３６】
図７は、本発明のある実施形態による、メモリバンク５０６内に記憶されたユーザデータ、エラー訂正情報、およびフラグ情報の組織を一般化して図示した表図を示す。メモリバンク５０６は、ＢＬＣＫ０、ＢＬＣＫ１、ＢＬＣＫ（Ｍ−１）と指定された複数あるＭ個のブロック７２７を含み、それぞれが仮想物理ブロックアドレス（ＰＢＡ）を有する。ブロック７２７のそれぞれは、ＲＯＷ０、ＲＯＷ１、．．．ＲＯＷ１５と指定された複数あるＮ個のメモリ行ロケーション７２８を有する（ここで好ましい実施形態においてはＮ＝１６である）。メモリバンク５０６の各ブロック７２７は、第１のフラッシュメモリチップ６７０の第１のサブブロック７３０、および第２のフラッシュメモリチップ６７２の対応する第２のサブブロック７３１から構成される。対応するサブブロック７３０、７３１は、合わせて１つのブロックを形成し、同じ仮想ＰＢＡにより識別される。各メモリ行ロケーション７２８は、第１の行部分７３２および対応する第２の行部分７３３を含む。示されている実施形態において、各第１および第２行部分、７３２および７３３は、５１２バイトのデータ情報のための記憶空間に加え、他の情報のための追加の記憶空間を含む。示されている実施形態では、第１フラッシュメモリチップの第１の行部分７３２内の情報の記憶は、第２フラッシュメモリチップの第２の行部分７３３内のものとは同じでない方法で達成される。
【００３７】
第１の行部分７３２のそれぞれは、偶数データバイトＤ０、Ｄ２、Ｄ４、．．．Ｄ５１０の偶数セクタ（Ｓ０、Ｓ２、Ｓ４、．．．）の情報を記憶する第１の偶数セクタフィールド７３４と、第１スペアフィールド７３６と、偶数データバイトＤ０、Ｄ２、Ｄ４、．．．Ｄ５１０の奇数セクタ（Ｓ１、Ｓ３、Ｓ５、．．．）の情報を記憶する第１の奇数セクタフィールド７３８と、第２スペアフィールド７４０とを含む。第２行部分７３３のそれぞれは、奇数データバイトＤ１、Ｄ３、Ｄ５、．．．Ｄ５１１の偶数のセクタのデータ（これは第１の偶数セクタフィールド７３４内に記憶されたその対応する偶数データバイトを有する）を記憶する第２の偶数セクタフィールド７４２と、集団的にフィールド７３４および７４２に記憶された偶数セクタの情報に対応するエラー訂正情報を記憶する第１のエラー訂正フィールド７４４と、奇数データバイトの奇数セクタの情報（これは第１の奇数セクタフィールド７３８内に記憶されたその対応する偶数データバイトを有する）を記憶する第２の奇数セクタフィールド７４６と、集中的にフィールド７３８、７４６に記憶された奇数セクタの情報に対応するＥＣＣ情報を記憶する第２エラー訂正フィールド７４８と、ブロックアドレスフィールド７５０と、フラグフィールド７５２を含む。フィールド７３４および７４２は、偶数セクタロケーションを形成するが、フィールド７３８および７４６は奇数セクタロケーションを形成する。本発明において、フィールド７３４および７４２は、代わりに奇数セクタロケーションを形成し得る一方で、フィールド７３８および７４６は代わりに偶数セクタロケーションを形成し得ること、ならびにフィールド７３４および７３８は代わりに奇数データバイトを記憶するために用いられ得る一方で、フィールド７４２および７４６は代わりに偶数データバイトを記憶するために用いられ得ることが理解される。加えて、第１の行部分７３２は、代わりにメモリ行ロケーション７２８内に記憶されたセクタに関するオーバーヘッド情報を記憶するために用いられ得る。
【００３８】
フラグフィールド７５２は、以下でさらに説明するように、アクセス操作中にコントローラ５１０（図６）により用いられるフラグ情報を記憶するために用いられる。ブロックアドレスフィールド７５０は、以下でさらに説明するように、ブロックに割り当てらた改変版のホスト供給ＬＢＡ値を記憶するために用いられる。単一のブロックアドレスエントリのみが、ブロックアドレスフィールドにおいてブロック毎に要求される。好ましい実施形態において、改変ホスト供給ＬＢＡ値は、各ブロック７２７の行ロケーション７２８の第Ｎ行、つまりＲＯＷ１５のブロックアドレスフィールド７５９に入力される。
【００３９】
作動中、コントローラ５１０（図６）は、第１および第２フラッシュメモリチップに集中的に記憶された偶数セクタの情報に、第１および第２フラッシュメモリチップの対応する行部分である第１および第２の偶数セクタフィールド、７３４および７４２に、それぞれ第１分割バス６８０および第２分割バス６８４（図６）を介して同時にアクセスすることにより、アクセスする。第１分割バス６８０および第２分割バス６８４（図６）は、偶数および奇数バイトのセクタの情報をそれぞれ受信するように結合されたラインを含む。コントローラ５１０（図６）は、第１および第２フラッシュメモリチップに集中的に記憶された奇数セクタの情報に、第１および第２フラッシュメモリチップの対応する行部分である第１および第２の奇数セクタフィールド、７３８および７４６に、それぞれ第１分割バス６８０および第２分割バス６８４（図６）を介して同時にアクセスすることにより、アクセスする。分割バス６８０、６８４（図６）はまた、フラッシュメモリチップとフラッシュ状態マシン６４２とメモリコントローラ５１０のＥＣＣ論理ユニット６６０との間におけるＥＣＣ情報の送信、およびフラッシュ状態マシン６４２からフラッシュメモリチップへのアドレス情報の送信を供給する。
【００４０】
コントローラ５１０（図６）は、空間マネジャー６３６を用いてメモリバンク５０６のブロック７２７のステータスを監視する。１つの実施形態では、コントローラ５１０（図６）は、フラグフィールド７５２の使用中フラグロケーション７５４および欠陥フラグロケーション７５６にそれぞれ記憶された使用中／空きブロックフラグおよび欠陥ブロックフラグを含むブロックレベルフラグを用いて、メモリバンクの各ブロックロケーション７２７のステータスを監視する。ブロックレベルフラグは、メモリバンクの全体のブロック７２７のステータスに関わる情報を供給する。従って、単一のブロックレベルフラグエントリのみが、フラグロケーション７５４および７５６においてブロック毎に要求される。使用中／新ブロックフラグは、対応するブロック７２７が情報を記憶するために現行で「使用中」であるか否か、あるいは情報を記憶するために利用可能（または空き）か否かを示す。欠陥ブロックフラグは、対応するブロック７２７が欠陥であるか否かを示す。
【００４１】
別の実施形態においては、コントローラ５１０（図６）は、メモリバンクの各メモリ行ロケーション７２８のステータスを、使用中フラグロケーション７５４に記憶された使用中／空き行フラグと、欠陥フラグロケーション７５６に記憶された欠陥行フラグと、フラグフィールド７５２のオールドロケーション７５８に記憶されたオールド行フラグと、偶数セクタ移動フラグロケーション７６０に記憶された偶数セクタ移動フラグと、奇数セクタ移動フラグロケーション７６２に記憶された奇数セクタ移動フラグとを用いて監視する。この実施形態において、使用中／新フラグは、対応するメモリ行ロケーション７２８が情報を記憶するために現行で「使用中」であるか、あるいは情報を記憶するために利用可能（または空き）か否かを示す。欠陥フラグは、対応するブロック７２７が欠陥であるか否かを示す。非揮発性メモリロケーション７３２、７３３のペアのいずれかが欠陥であるならば、セットされている欠陥フラグロケーション７５６における値により示されるように、全メモリブロック７２７は欠陥であると宣言される。好ましい実施形態では、ロケーション７５８、７５４、および７５６は単一の３ビットフラグロケーション７６４に含まれる。
【００４２】
奇数および偶数セクタ移動フラグロケーション７６０、７６２は、非揮発性メモリセクタロケーションに記憶された対応する偶数および奇数セクタが、非揮発性メモリバンク５０６（図６）内における別のロケーションへ移動したか否かを示す値を記憶する。例えば、行ロケーション７２８の偶数セクタフィールド７３４、７４２の特定のペアにおいて集中的に記憶された偶数セクタの情報が、非揮発性メモリバンク５０６内の偶数セクタフィールドの別のペアに移動した場合、対応する偶数セクタ移動フラグロケーション７６０において値がセットされる。同様に、同じ行ロケーションの奇数セクタフィールド７３８、７４６において集中的に記憶された奇数セクタの情報が、非揮発性メモリバンク５０６内の奇数セクタフィールドの別のペアに移動した場合には、対応する奇数セクタ移動フラグロケーション６７２において値がセットされる。非揮発性メモリバンク５０６内におけるセクタの情報が移動しているロケーションは、ＭＶＰＢＡアドレスロケーション内のＳＰＭ  ＲＡＭ７２０に記憶されたＬＢＡ−ＰＢＡマップにおいて示される。このことは本出願の発明者らにより出願された特許出願である、「Ｍｏｖｉｎｇ  Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎ  ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題する米国特許第０８／８３１，２６６号（１９９７年３月３１日出願）において教示しており、この出願の開示は本明細書中において参考として援用する。好ましい実施形態では、ロケーション７６０および７６２は、単一の２ビット移動フラグロケーション７６６である。
【００４３】
図８Ａは、改変版のホスト供給ＬＢＡ−ＰＢＡを変換する、例示的なＬＢＡ−ＰＢＡマップの組織である８００（これはＳＰＭ  ＲＡＭ７２０（図６）に記憶される）を一般化して図示した表図である。改変ホスト供給ＬＢＡは、ホスト供給ＬＢＡを１つのブロックに伴うセクタの数で除算することにより得られる（これは後により詳細に説明される）。示されているＬＢＡ−ＰＢＡマップは、改変ホスト供給ＬＢＡにより、または仮想ＰＢＡによりアドレス可能である複数のマップ行ロケーション８０２と、メモリバンク内におけるブロック７２７（図７）を識別する仮想ＰＢＡ値を記憶する仮想ＰＢＡフィールド８０４と、フラグ情報を記憶するフラグフィールド８０６とを含む。上述のように、実ＰＢＡはメモリバンク内のセクタの情報のロケーションを特定し、仮想ＰＢＡはメモリバンク内のブロック７２７（図７）のロケーションを特定する。仮想ＰＢＡ値は、空間マネジャー６３６（図７）により示されているマップから取り出され、メモリバンク５０６内においてブロックをアドレスする際に使用するため、フラッシュ状態マシン６４２のポート６４８へ転送される。
【００４４】
図８Ｂは、ホスト供給ＬＢＡフォーマット８１０および実ＰＢＡフォーマット８２０を図示するブロック図を示す。ＬＢＡフォーマット８１０は、「オフセットビット」８１２を含み、これはホスト供給ＬＢＡ値の最下位ビットを備える。上述のように、好ましい実施形態では、各ブロック７２７（図７）は各セクタが５１２バイトのユーザデータおよび１６バイトのオーバーヘッド情報を含む、３２セクタの情報を記憶するメモリ空間を含む。なぜなら、好ましい実施形態において各ブロック７２７（図７）は３２セクタ含み、５つのオフセットビット８１２が、各ブロック内の３２セクタのそれぞれを識別するために要求される。この実施形態では、ホスト供給ＬＢＡから実および仮想ＰＢＡ値への変換は、まずホスト供給ＬＢＡの５つの最下位「オフセット」ビット８１２をマスクし、その結果を右へ５ビットずつシフトさせ、そしてそのシフト値を改変ホスト供給ＬＢＡ値、または「ＬＢＡ−マップ−値」として用い、ＬＢＡ−ＰＢＡマップ８００（図８）におけるマップ行ロケーション８０２をアドレスする。これは実際、ホスト供給ＬＢＡを３２で除算している。実ＰＢＡ値８２０（これはメモリバンクのブロック内におけるセクタのロケーションを特定する）は、ＬＢＡ値のオフセットビット８１２とＬＢＡ−ＰＢＡマップの対応するフィールド８０４（図８）に記憶された仮想ＰＢＡ８２２値とを連結することにより形成される。すなわち、仮想ＰＢＡ値８２２はメモリバンク内におけるブロックを識別するために用いられ、５つの残ったオフセットビット８１２は識別されたブロック内におけるセクタをアドレスするために用いられる。
【００４５】
メモリシステム６００（図６）の初期化により、各マップ行ロケーション８０２の仮想ＰＢＡフィールド８０４に記憶された仮想ＰＢＡ値は、全て「１」の状態にセットされる。ブロック７２７（図７）がコントローラによりアクセスされる（例えば書き込み操作中）毎に、対応するマップ行ロケーションの対応する仮想ＰＢＡフィールド８０４に記憶された仮想ＰＢＡ値が、空間マネジャーコントローラ７２４（図６）により改変され、新しい仮想ＰＢＡ値を特定する。メモリバンク５０６内におけるブロックが消去された場合、改変版のホスト供給ＬＢＡよりむしろ、オールド仮想ＰＢＡ値（消去されたブロックに対応する仮想ＰＢＡ値）が、ＳＰＭ  ＲＡＭ７２０（図６）をアドレスするために用いられ、ＳＰＭ  ＲＡＭ７２０のフラグフィールド内において記憶された使用中フラグはクリアになる。ＳＰＭ  ＲＡＭ７２０のフラグフィールド内のこの同じ「使用中」フラグは、対応する仮想ＰＢＡがアップデートされ、セクタ情報が維持されるメモリバンク内の新しいブロックを指摘する（工程１２１４）ときにセットされる。
【００４６】
図９は、メモリシステム６００（図６）により行われる、書き込み操作用の制御、アドレス、およびデータ信号のタイミングを図示するタイミング図を示し、ここでは単一の書き込み操作中に、２セクタの情報が非揮発性メモリバンク５０６（図６）に同時に書き込まれる。この図は、命令、アドレス、およびデータ情報を多重化した時間を、コントローラのフラッシュ状態マシン６４２（図６）から、バス６８０（図６）を介して第１フラッシュメモリチップのポート６８２へ送信する、第１のフラッシュ信号を表す波形９０２と、命令、アドレス、およびデータ情報を多重化した時間を、コントローラのフラッシュ状態マシン６４２（図６）から、バス６８４（図６）を介して第２フラッシュメモリチップのポート６８６へ送信する、第２のフラッシュ信号を表す波形９０４と、タイムライン９０５と、複数の制御信号波形とを含む。
【００４７】
制御信号波形は、フラッシュ状態マシン６４２（図６）から第１および第２フラッシュメモリチップへ、制御バス６９０（図６）を介して送信される命令ラインイネーブル信号（ＣＬＥ信号）を表す波形９０６と、フラッシュ状態マシンからフラッシュメモリチップへ、制御バスを介して送信されるアドレスラインイネーブル信号（ＡＬＥ信号）を表す波形９０８と、フラッシュ状態マシンからフラッシュメモリチップへ、制御バスを介して送信されるワイヤイネーブル信号（ＷＥ信号）を表す波形９１０と、フラッシュ状態マシンからメモリチップへ、制御バスを介して送信される読み出しイネーブル信号（ＲＥ信号）を表す波形９１２と、フラッシュ状態マシンのチップイネーブル信号出力７００（図６）から、チップイネーブルライン６９８を介して、第１および第２フラッシュメモリチップへ送信されるフラッシュチップイネーブル信号（ＦＣＥ＊信号）を表す波形９１４と、第１および第２フラッシュメモリチップの出力、７０８および７１０（図６）から、フラッシュ状態マシンへフラッシュ準備／ビジー信号ライン７０６を介して送信されるフラッシュ準備／ビジー信号（ＦＲＤＹ＿ＢＳＹ＊信号）を表す波形９１６とを含む。
【００４８】
書き込み操作は、ＦＣＥ＊信号（波形９１４）がＨＩＧＨ状態からＬＯＷ状態へ遷移する時間ｔ０において始まり、それにより第１および第２フラッシュメモリチップが命令、アドレス、データ、および制御信号を受信し始めることを可能にする。時間ｔ０に先だって、フラッシュメモリチップからフラッシュ状態マシンの入力７１２（図６）へ送信されるＦＲＤＹ＿ＢＳＹ＊信号（波形９１６）は、すでに起動しており、第１および第２フラッシュメモリチップがアクセス命令を受信する準備ができていることを示す。引き続く時間ｔ１において、ＣＬＥ信号（波形９０６）が起動し、ＬＯＷ状態からＨＩＧＨ状態へ遷移し、それにより第１および第２フラッシュメモリチップが命令信号を読み出すことを可能にする。時間ｔ２において、第１および第２フラッシュ信号（波形９０２および９０４）は、連続的データシフト−イン命令信号８０Ｈを、ディスプレイアップ１および第２フラッシュメモリチップへ、第１分割バス６８０および第２第１分割バス６８４をそれぞれ介して同時に送信する。時間ｔ３において、連続的データシフト−イン命令信号８０Ｈが起動し、ＷＥ信号（波形９１０）がＨＩＧＨ状態からＬＯＷ状態へ遷移し、それにより第１および第２フラッシュメモリチップが連続的データ命令信号８０Ｈを読み出すことを可能にする。時間ｔ４において、ＣＬＥ信号（波形９０６）が停止し、ＬＯＷ状態に戻り、それによりフラッシュメモリチップが命令信号を読み出すことを不可能にする。
【００４９】
また、時間ｔ４において、ＡＬＥ信号（波形９０８）が起動し、ＬＯＷ状態からＨＩＧＨ状態に遷移し、それにより第１および第２フラッシュメモリチップがアドレス情報のパケットを読み出すことを可能にする。時間ｔ５、ｔ６、およびｔ７において、第１および第２フラッシュ信号（波形９０２および９０４）のそれぞれが、第１、第２、および第３アドレスパケットＡＤＤ０、ＡＤＤ１、およびＡＤＤ２を、第１および第２フラッシュメモリチップへそれぞれ送信する。時間ｔ８において、ＡＬＥ信号（波形９０８）が停止し、ＨＩＧＨ状態からＬＯＷ状態へ遷移し、それにより第１および第２フラッシュメモリチップがアドレス情報を読み出すことを不可能にする。時間ｔ５とｔ６との間、ｔ６とｔ７との間、およびｔ７とｔ８との間の時間間隔において、ＷＥ信号（波形９１０）は、ＨＩＧＨ状態からＬＯＷ状態へ遷移し、それにより第１および第２フラッシュメモリチップが第１、第２、および第３アドレスパケットＡＤＤ０、ＡＤＤ１、およびＡＤＤ２をそれぞれ読み出すことを可能にする。３つのアドレスパケットＡＤＤ０、ＡＤＤ１、およびＡＤＤ２は、第１サブブロック７３０（図７）内における行部分７３２、７３３を特定する。
【００５０】
時間ｔ９において、第１および第２フラッシュ信号（波形９０２および９０４）が、インターリーブされた偶数および奇数データバイトを同時に送信し、ここで偶数および奇数バイトは１つのセクタ情報を形成する。偶数バイトは、第１フラッシュメモリチップへバス６８０（図６）を介して送信され、奇数セクタバイトは、第２フラッシュメモリチップへバス６８４（図６）を介して送信される。奇数セクタの偶数データバイトＤ０、Ｄ２Ｄ４、．．．Ｄ５１０は、第１フラッシュチップにより受信され、第１フラッシュメモリチップの対応するロケーション７３２の第１の偶数セクタフィールド７３４（図７）に記憶される。このことは、書き込みイネーブル信号ＷＥ＊（波形９１０）が起動する度に１バイト記憶することにより行われる。偶数セクタの奇数データバイトＤ１、Ｄ３、Ｄ５、
．．．Ｄ５１１は、第２フラッシュチップにより受信され、第２フラッシュメモリチップの対応するロケーション７３３の第２の偶数セクタフィールド７４２（図７）に記憶され、このことから各バイトはＷＥ＊（波形９１０）が起動するときに記憶される。時間ｔ１０において、第１および第２フラッシュ信号（波形９０２および９０４）は、偶数セクタのインターリーブされた偶数および奇数データの送信を完了する。
【００５１】
時間ｔ１０のすぐ後に、時間ｔ１０と時間ｔ１１との間において、第１フラッシュ信号（波形９０２）は、４つのパケットのフィラー情報（ＦＦＨ、１６進法Ｆ、等量２進法値「１１１１」、１０進法値「１５」）を、第１フラッシュメモリ値へ第１分割バス６８０（図６）を介して送信し、それに対して第２フラッシュ信号（波形９０４）は、エラー訂正コード（ＥＣＣ）を第２フラッシュメモリチップへ、第２分割バス６８４（図６）を介して送信する。この時間周期中に送信されたフィラー情報ＦＦＨは、第１フラッシュメモリチップにより受信され、第１スペアフィールド７３６（図７）に記憶される。この時間周期中に送信されたエラー訂正コードは、第２フラッシュメモリチップにより受信され、第２フラッシュメモリチップの非揮発性メモリセクション７３３の第１エラー訂正フィールド７４４（図７）に記憶される。ＥＣＣ論理ユニット６６０（図６）により発されるこのエラー訂正コードは、前述の時間ｔ１０とｔ１１との間の時間間隔の間に送信される偶数セクタに関係する。
【００５２】
時間ｔ１１において、第１および第２フラッシュ信号（波形９０２および９０４）は、奇数セクタのインターリーブされた偶数および奇数データバイト（書き込みイネーブル信号ＷＥ＊（波形９１０）と同期である）を、ディスプレイアップ１および第２フラッシュメモリチップへ第１分割バス６８０および第２第１分割バス６８４（図６）へ、それぞれ同時に送信し始める。偶数データバイトＤ０、Ｄ２、Ｄ４、．．．Ｄ５１０は、第１フラッシュチップにより受信され、第１フラッシュメモリチップの対応するロケーション７３２の第１の奇数セクタフィールド７３８（図７）に記憶される。奇数セクタの奇数データバイトＤ１、Ｄ３、Ｄ５、．．．Ｄ５１１は、第２フラッシュチップにより受信され、第２フラッシュメモリチップの対応するロケーション７３３の第２の奇数セクタフィールド７４６（図７）に記憶される。時間ｔ１２において、第１および第２フラッシュ信号（波形９０２および９０４）は、偶数セクタのインターリーブされた偶数および奇数データの送信を完了する。
【００５３】
時間ｔ１２のすぐ後に、時間ｔ１２と時間ｔ１３との間において、第１フラッシュ信号（波形９０２）は、第１フラッシュメモリチップへ情報を全く送信せず、それにより、第１フラッシュメモリチップの記憶ロケーションバイトに対応している値を、ＦＦＨ（１６進法）または２進法の全て１状態において維持する。一方、時間ｔ１２と時間ｔ１３との間において、第２フラッシュ信号（波形９０４）が同時に、エラー訂正コード（ＥＣＣ）を第２フラッシュメモリチップへ、第２分割バス６８４（図６）を介して送信する。この時間周期中に送信されたフィラー情報ＦＦＨは、第１フラッシュメモリチップにより受信され、第２スペアフィールド７４０（図７）に記憶される。この時間周期中に送信されたエラー訂正コードは、第２フラッシュメモリチップにより受信され、第２フラッシュメモリチップの非揮発性メモリセクション７３３の第１エラー訂正フィールド７４８（図７）に記憶される。ＥＣＣ論理ユニット６６０（図６）により発されるこのエラー訂正コードは、前述の時間ｔ１１とｔ１２との間の時間間隔の間に送信される奇数セクタに関係する。
【００５４】
時間ｔ１７において、第１および第２フラッシュ信号（波形９０２および９０４）はそれぞれ読み出し命令信号７０Ｈを第１および第２第１および第２フラッシュメモリチップへ、第１分割バス６８０および第２分割バス６８４をそれぞれ介して送信する。読み出し命令信号７０Ｈが起動すると、ＷＥ信号（波形９１０）はＨＩＧＨ状態からＬＯＷ状態へ遷移し、それにより第１および第２フラッシュメモリチップが読み出し命令信号７０Ｈを読み出すことを可能にする。
【００５５】
時間ｔ１８において、ＣＬＥ信号（波形９０６）が停止し、ＬＯＷ状態に戻り、それによりフラッシュメモリチップが命令信号を読み出すことを不可能にする。
【００５６】
時間ｔ１８において、第１および第２フラッシュ信号（波形９０２および９０４）はそれぞれステータス命令信号ＳＴＡＴＵＳを第１および第２第１および第２フラッシュメモリチップへ、第１分割バス６８０および第２分割バス６８４をそれぞれ介して送信する。読み出し命令信号７０Ｈがアクティブの間、ＷＥ信号（波形９１０）はＨＩＧＨ状態からＬＯＷ状態へ遷移し、それにより第１および第２フラッシュメモリチップが読み出し命令信号７０Ｈを読み出すことを可能にする。
【００５７】
図１０は、図７に示されるような、メモリバンク５０６（図６）内の１つのブロックの情報を記憶するメモリ記憶フォーマットを一般化して図示した表図を示し、ここで単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる。示されるように、ＲＯＷ１と指定されたメモリ行ロケーション７２８は、図７を参照して上述されたフォーマットに従って、そのロケーションに記憶された偶数セクタＳ２および奇数セクタＳ３を有する。ＲＯＷ２と指定されたメモリ行ロケーション７２８は、第１および第２フラッシュメモリチップ、６７０および６７２の行部分において対応するペアの第１および第２偶数セクタフィールド７３４および７４２に記憶された単一の偶数セクタＳ４を有する。この場合、記憶されるための奇数セクタは全く要求されないため、フィールド７３６、７３８、７４６、７４８、７５０、および７５２は消去されるように示される。
【００５８】
図１１は、図７に示されるような、メモリバンク５０６（図６）内の１つのブロックの情報を記憶する、他のメモリ記憶フォーマットを一般化して図示した表図を示し、ここで単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる。上述のように、フィールド７６４は、第１のビット場所におけるオールド行フラグ、第２ビット場所における使用中／空き行フラグ、および第３ビット場所における欠陥行フラグを記憶するために用いられる、３ビットフィールドである。また上記で説明したように、フィールド７６６は、第１ビット場所における偶数セクタ移動フラグ、および第２ビット画素における奇数セクタ移動フラグを記憶するために用いられる、２ビットフィールドである。
【００５９】
ＲＯＷ１と指定されたメモリ行ロケーション（そこに記憶されたセクタＳ２およびＳ４を有する）は、フィールド７６６に記憶された値「００」を有し、これは両セクタがメモリバンク内の他のところへ移動したことを示す。ＲＯＷ２と指定されたメモリ行ロケーション（第１および第２偶数セクタフィールド７３４および７４２に記憶された単一の偶数セクタＳ４を有する）は、フィールド７６６に記憶された値「０１」を有し、これはＳ４内の情報をアップデートされ終え、そこでメモリバンク内の他のところで常駐することを示す。論理状態の値「０」は一般に、移動したセクタがホストによりアップデートされ終えたことを示す。従って、残りのセクタがホストにアップデートされなかったオールドブロックから移動した場合、これらのセクタがその移動中にオールドデータにより重ね書きされないことが決定され得る。
【００６０】
ＲＯＷ１と指定されたメモリロケーション７２８は、図７を参照して上述したようなフォーマットに従ってそこへ記憶された偶数セクタＳ２および奇数セクタＳ３を有する。ＲＯＷ２と指定されたメモリロケーション７２８は、第１および第２フラッシュメモリチップ６７０および６７２の行部分において対応するペアの第１および第２偶数セクタフィールド７３４および７４２に記憶された単一の偶数セクタＳ４を有する。この場合、奇数セクタは記憶するために全く要求されないため、フィールドフィールド７３６、７３８、７４６、７４８、７５０、および７５２は消去されるように示される。
【００６１】
図１２は、本発明による単一書き込み操作中に、２セクタの情報を２つのメモリユニットへ同時に書き込むプロセスを図示するフローチャートである。工程１２０２において、メモリコントローラ５１０（図６）は、ホスト５０４からホストアドレス情報（これは１つ以上のセクタロケーションのアドレスを特定する）を、論理ブロックアドレス（ホスト供給ＬＢＡ）の形で、あるいはシリンダヘッドセクタ（ＣＨＳ）情報の形で受信する。ホストアドレス情報がＣＨＳ実施形態である場合、コントローラはＣＨＳ情報をＬＢＡ情報へ変換する。上述のように、セクタはブロック内で組織化されているため、複数のホスト供給ＬＢＡは、１つ以上のブロックの複数のセクタに対応する。この情報は、以下でさらに説明するように、マイクロプロセッサ６２０（図６）により用いられる。
【００６２】
マイクロプロセッサ６２０（図６）は、コード記憶ユニット６２６（図６）に記憶されている指示を実行し、ここで説明しているプロセスを遂行する。工程１２０４において、セクタカウント値は、ホストによりアドレスされている現行ブロックのセクタの数に等しくセットされ、ここで例えばセクタロケーションは、メモリバンクのフィールド７３４および７４２（図７）またはフィールド７３８および７４６（図７）から構成され得る。マイクロプロセッサは、ホスト供給ＬＢＡ値により特定された各セクタロケーションが、その前にホスト供給ＬＢＡ値よりアクセスされたか否かを、１２０６において決定する。この決定は、ＳＰＭ  ＲＡＭ７２０（図６）に記憶されたＬＢＡ−ＰＢＡマップ８００の対応する仮想ＰＢＡフィールド８０４（図８Ａ）の内容を読み出すことにより下される。図８Ａを参照して説明したように、ホスト供給ＬＢＡに対応する仮想ＰＢＡ値が全て「１」の状態にセットされるならば、対応するＬＢＡはその前にホストによりアクセスされていない。メモリバンク５０６内のメモリ空間は、一度につき１つのブロック消去される。ブロックの任意のセクタが、そのブロックの最後の消去以降にアクセスされたならば、そのブロックは、「全て１」ではない他の値であるＬＢＡ−ＰＢＡマップにおいて、対応するマップ行ロケーションのフィールド８０４（図８Ａ）内の仮想ＰＢＡ値の利点によりすでにアクセスされたと表示される。
【００６３】
ホスト供給ＬＢＡにより特定された（現行ブロックの）１つ以上のセクタロケーションが以前にホストによりアクセスされたことが決定された場合、書き込みプロセスは工程１２１０へ進み、ここでマイクロプロセッサ６２０（図６）が現行セクタロケーションに対応する移動フラグ７６０、７６２（図７）の内、対応する１つをセットし、そして書き込みプロセスは工程１２０８へ進む。初めの方で述べたように、非揮発性メモリ内において「移動」フラグを維持することは、選択自由であり、本発明の範囲および思想から逸脱することなく、全く消去され得る。移動フラグの欠如において、マイクロプロセッサはセクタのステータスを維持し、これはそれらが他のブロックへ移動したか否かによる。このことは各ブロックについて２つの値のトラックを保持することによりなされる。１つの値はセクタが移動したブロック内におけるスタートセクタロケーションであり、２つめの値は、移動したブロック内におけるセクタの数である。これらの２つの値を伴い、１つのブロックのセクタが他の１つの（あるいは複数の）ブロックへ移動したか否か、ならびにどのセクタが移動したかにより、ステータス情報は再構築される。
【００６４】
ホスト供給（ｈｏｓｔ−ｐｒｏｖｉｄｅｄ）ＬＢＡによって特定された現在のセクタロケーションのいずれもが、以前にアクセスされていないと工程１２０６で判定された場合、書き込みプロセスは工程１２０８に直接進む。
【００６５】
工程１２０８では、制御器のスペースマネジャー６３６（図６）が、非揮発性メモリバンク内に記憶する、ブロック７２７（図７）のような空き（または未使用の）ブロックを検索し、各空きブロックが特定の仮想ＰＢＡ値によって識別される。１２１２ではマイクロプロセッサは、空きブロックが発見されるかどうかを判定し、検出されなければ、制御器５１０（図６）によって、エラーがホストに報告される、情報記憶を非揮発性メモリバンクにさらに収容できないことを指示する。このことが致命的なシステムエラーを引き起こし得るので、本発明の発明者は、この状況の発生を防ぐのに細心の注意を払った。
【００６６】
工程１２０８で非揮発性メモリ内に空きブロックが検出されるとすぐに、図示した（ｄｅｐｉｃｔｅｄ）プロセスは、工程１２１４に進む。工程１２１４では、マイクロプロセッサ６２０が、スペースマネジャー６３６（図６）を促し、工程１２０８で発見された空きブロックに仮想ＰＢＡ値８２２（図８Ｂ）を割り当てる。この仮想ＰＢＡ値は、現在のブロックに対応するホスト供給ＬＢＡのマスクビット８１４（図８Ｂ）によって識別されたマップ行ロケーション８０２（図８Ａ）内のＬＢＡ−ＰＢＡマップ８００（図８Ａ）に記憶される。現在のホスト供給ＬＢＡのマスクビット８１４（図８Ｂ）は、５オフセットビット分だけホスト供給ＬＢＡを右にずらすことによって（または３２分割することによって）、獲得される。例えば、ホスト識別ＬＢＡが１６Ｈ（１６進法）である場合、仮想ＰＢＡを記憶する行は、行０である。また、工程１２１４では、マイクロプロセッサが、発見された空きブロックに対応する仮想ＰＢＡに「オフセット」ビット８１２（図８Ｂ）をアペンドし、実ＰＢＡ値８２０（図８Ｂ）を獲得する。１２１６では、マイクロプロセッサは、実ＰＢＡ値が偶数値であるか奇数値であるかを判定しする。もしくは、１２１６で実ＰＢＡ値の代わりにホスト供給ＬＢＡがチェックされ、この値が偶数であるか奇数であるかが判定されてもよい。
【００６７】
１２１６で実ＰＢＡ値が偶数であると判定された場合、プロセスは１２１８に進み、マイクロプロセッサは、セクタカウントが１より大きいかどうか、即ち、一つ以上のセクタをホストから制御器の内部バッファに転送する制御器が要求した時点で、書き込みされる情報セクタが一つ以上存在するかどうかを判定し、工程は１２３２に進んで、マイクロプロセッサは、２つの情報セクタが（ホストインターフェース回路６１０を介して）ホストからデータバッファ６１４（図６）に転送されたかどうかを判定する。即ち、フラッシュ状態マシン６４２によって検出されたように、非揮発性メモリに書き込まれる必要のある情報セクタが一つ以上存在する場合、二つの情報セクタが同時に、ホストからデータバッファ６１４に転送される。データバッファ６１４は、同じ情報（ｔｈｅ  ｓａｍｅ）がメモリバンク５０６内に記憶されるまで、一時的にセクタ情報を記憶するのに用いられる。好適な実施形態では、各セクタが５１２バイトのユーザーデータおよび１６バイトのオーバーヘッド情報を含む。
【００６８】
二つの情報セクタが、まだデータバッファ６１４に転送されていない場合、マイクロプロセッサは、１２３２の「ＮＯ」分岐ループによって示すように、そのような転送が完了するまで待機する。
【００６９】
工程１２３４では、マイクロプロセッサが、書き込みコマンド、それに続くアドレスおよびデータ情報を発行して、データバッファに一時的に記憶された２つのセクタの、メモリバンク５０６（図６）に対する書き込みを起動する。工程１２３４における書き込み動作は、図７および図９を参照して上述した方法および装置によって実行される。
【００７０】
２つの情報セクタの書き込みが完了した後、１２３５で書き込み動作が検証される。工程１２３４で情報が正しくプログラムされていなかった場合、プロセスは１２３７に進み、後に詳述するように欠陥マネジメントルーチンが実行される。欠陥マネジメントルーチンの実行の後、工程１２３６でセクタカウントが２ごとに減少される。１２３５で書き込み動作が成功であると検証された場合、工程１２３６が実行され、欠陥マネジメントは必要ない。次に１２３８で、マイクロプロセッサは、セクタカウントが０に等しいかどうかを判定し、もし等しい場合、書き込みされるセクタはまったく残っていないと想定されて、プロセスは１２２８に進む。しかし、より多くのセクタが書き込まれなければならない場合、プロセスは工程１２４０に進み、ホスト供給ＬＢＡが２ごとに、次に書き込まれるべきセクタの点（ｐｏｉｎｔ）まで増加される。
【００７１】
工程１２４０では、マイクロプロセッサは、ブロックの最後のセクタに到達したかどうかを判定する。現在のＬＢＡの「オフセット」値をブロック内のセクタの数と比較することによって、ブロックの境界が判定され、それらの値が等しい場合、ブロック境界に到達している。例えば、好適な実施形態では、ブロックは３２のセクタを含んでいるので、現在のＬＢＡの「オフセット」値は、「３２」（１０進法）と比較される。もしくは、ブロックが３２のセクタ以外、例えば１６のセクタなどを有すると定義された場合、後者が「オフセット」に対して比較される。非揮発性メモリにおけるブロック境界に到達した場合、書き込みプロセスは、現在のＬＢＡ値に対応する仮想ＰＢＡ値が、すべて「１」である条件に対してチェックされる工程１２０６から繰り返され、以下同様に進められる。工程１２４２でブロック境界に到達しなかった場合、書き込みプロセスは工程１２１８から繰り返される。
【００７２】
工程１２１８で、セクタカウントが１より大きくないと判定された場合、マイクロプロセッサは１２２０に進み、データバッファ６１４（図６）がホストから少なくとも一つの情報セクタを受け取ったかどうかを判定する。受け取っていない場合、マイクロプロセッサは、ホストからデータバッファ６１４に一つの情報セクタが転送されるまで待機する。一つの情報セクタを受け取ると、図１０および図１１を参照して上述した方法および装置によって、工程１２２２で次のセクタの書き込みが起動される。情報セクタの書き込みが完了すれば、１２２３で書き込み動作が検証される。工程１２２２で情報がセクタに正しくプログラムされていなかった場合、プロセスは工程１２２５に進み、後に詳述するように欠陥マネジメントルーチンが実行される。欠陥マネジメントルーチンが実行された後、工程１２２４では、セクタカウントが１ごとに減少される。書き込み動作が正しく実行されたと、１２２３では判定された場合、プロセスは工程１２２４に進み、欠陥マネジメントルーチンは実行されない。１２２６では、マイクロプロセッサは、セクタカウントが零に等しいかどうかを判定し、等しくない場合、ホスト供給ＬＢＡは１ごとに増加され、書き込みプロセスは工程１２４２に進んで、マイクロプロセッサは上記に説明したように、ブロック境界をチェックする。
【００７３】
工程１２２６で、工程１２３８と同様に、書き込まれるセクタがまったく残っていない、即ちセクタカウントが零であると判定される場合、図示したプロセスは１２２８に進み、マイクロプロセッサは、移動フラグが立てられたかどうかを判定する。上述したように、移動フラグは、ホストによってＬＢＡが再アクセスされたと１２０６で判定される場合、工程１２１０で立てられる。
【００７４】
移動フラグが立てられていないと１２２８で判定される場合、書き込みプロセスは終了する。しかしながら、移動フラグが立てられたことが１２２８で判定されれば、ブロックは更新される。即ち、アクセスされていない現在のブロックのこれらのセクタは、工程１２０８で発見された空きブロックに、工程１２１４で割り当てられた仮想ＰＢＡ値によって識別されたメモリバンク５０６のブロックの対応するセクタロケーションに移動される。このことは、おそらく例示によって最もよく理解される。
【００７５】
考察の目的で、ＬＢＡ１、２、３、４、５、および６によって識別されたセクタが既に書き込まれて、ホストは現在ＬＢＡ３、４、および５によって識別されたセクタにデータを書き込むよう制御器に命令している、と想定されたい。さらに、ＬＢＡ１〜６が書き込まれた最初の書き込みプロセスの間、それらは仮想ＰＢＡ値「３」によって識別されたメモリバンク５０６（図６）のブロックロケーションに記憶されており、ＬＢＡロケーション３、４、および５は現在（第２の書き込みプロセスの間）仮想ＰＢＡ値「８」によって識別されたメモリバンクのブロックロケーションに書き込まれているところである、と想定されたい。  ホスト供給ＬＢＡ３、４、および５により識別されたロケーションの書き込みの間、工程１２０６で、マイクロプロセッサは、これらのブロックロケーションが再アクセスされていることを判定し、１２１０で移動フラグが立てられる。さらに、工程１２３０では、ホスト供給ＬＢＡ３、４、および５により識別されたセクタが仮想ＰＢＡ「８」によって識別されたブロックの対応するセクタに書き込まれた後、書き込み動作中に再アクセスされなかった、仮想ＰＢＡ「３」によって識別されたブロックのセクタは、仮想ＰＢＡ「３」によって識別されたブロックから仮想ＰＢＡ「８」によって識別されたブロックの対応するセクタロケーションに移動され、その後、仮想ＰＢＡ「３」によって識別されたブロックは消去される。この例では、セクタ０および７〜３１（ブロックに３２のセクタが存在すると想定して）など、仮想ＰＢＡ「３」によって識別されたブロックの残りのセクタが、それらが存在するブロックの最後の消去以来アクセスされておらず、従って有効なセクタ情報をまったく含んでいない、と想定している。さもなくば、それらのセクタが以前にアクセスされている場合に、それらのセクタも仮想ＰＢＡロケーション８に移動されている。
【００７６】
工程１２３０は、多くの方法で実施し得る。本発明の発明者等は、工程１２３０の移動動作を実行するために、代わりに使用し得る様々な方法および装置を開示している。特許出願では、本明細書に参照として援用する開示、１９９７年１０月７日に申請され、「Ｍｏｖｉｎｇ  Ｓｅｑｕｅｎｔｉａｌ  Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎ  ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題された第０８／９４６，３３１号、および１９９７年３月３１日に申請され「Ｍｏｖｉｎｇ    Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎ  ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題された第０８／８３１，２６６号がある。
【００７７】
図１２ａは、工程１２３７および工程１２２５（図１２）で欠陥マネジメントルーチンが実行された場合に、マイクロプロセッサにより実施される工程を示す。ブロックマネジメントルーチンは、書き込み動作がうまく検証されなかったときに実施され、プログラムされたブロックは、何らかの形で欠陥を有し、非揮発性メモリの別の領域、即ち別のブロックがプログラミングのために発見される必要がある。
【００７８】
工程１６００では、うまくプログラムされなかったブロックに、「欠陥」フラグ７５６（図７）が立てられることにより、「欠陥有り」と標識される。工程１６０２では、制御器内のスペースマネジャーが、空きブロックを発見するよう命令を受ける。工程１６０４では、工程１２３４および１２２２（図１２）にてプログラムされた情報、即ち「欠陥有り」と標識されたブロックが、工程１６０２で発見された空きブロック内の対応するセクタロケーションにプログラムされる。
【００７９】
工程１６０６では、が以前にうまく書き込まれた任意のセクタ情報の存在に関して「欠陥有り」と識別されたブロックをチェックする。そのようなセクタが存在する場合、工程１６０８では、これらの以前にプログラムされたセクタは、図１２の動作における追加ブロック情報として、空きブロックに移動される。
【００８０】
図１３は、本発明の別なる実施形態による、３２のセクタを含む、メモリバンク５０６内の情報ブロックを記憶するためのメモリ記憶形式を一般的に示した表である。この実施形態では、偶数セクタが、２つのメモリユニットの第１に記憶する第１行ロケーションに記憶され、奇数セクタが、２つのメモリユニットの第２に記憶する第２行ロケーションに記憶される。図示した実施形態では、メモリバンク５０６は、ＢＬＣＫ０、ＢＬＣＫ１、ＢＬＣＫ（Ｍ−１）と指定された、それぞれが物理ブロックアドレス（ＰＢＡ）を有する、複数のＭブロック１３０２を含む。ブロック１３０２のそれぞれは、複数のＮメモリ行ロケーション１３０４を含み、好適な実施形態ではＮ＝１６である。メモリバンク５０６の各ブロック１３０２は、第１のフラッシュメモリチップ６７０の第１のサブブロック１３０６、および第２のフラッシュメモリチップ６７２の対応する第２のサブブロック１３０８を含み、対応するサブブロックは同じ仮想ＰＢＡによって識別される。各メモリ行１３０４は、第１の行部分１３１０および対応する第２の行部分１３１２を含む。図示した実施形態では、各第１および第２の行部分１３１０、１３１２が、５１２バイトのデータ情報のための記憶に加え、エラー修正情報（ＥＣＣ情報）およびフラグ情報のための記憶スペースを含む。
【００８１】
第１の行部分１３１０のそれぞれは、偶数の情報セクタ（Ｓ０、Ｓ２、Ｓ４…）を記憶するための偶数セクタフィールド１３１４、およびフィールド１３１４に記憶される偶数セクタに対応するエラー修正情報を記憶するための偶数セクタエラー修正フィールド１３１６を含む。第２の行部分１３１２のそれぞれは、奇数情報セクタ（Ｓ１、Ｓ３、Ｓ５…）を記憶するための奇数セクタフィールド１３１８、フィールド１３１８に記憶される奇数セクタに対応するエラー修正情報を記憶するための奇数セクタエラー修正フィールド１３２０を含む。ブロックアドレスフィールド１３２２、およびフラグフィールド１３２４を含む。本発明では、奇数セクタを記憶するために、代わりとしてフィールド１３１４を用い得、偶数セクタを記憶するために、代わりとしてフィールド１３１８を使用し得ることが理解される。また、ブロックアドレスおよびフラグを記憶するために、替わりとして第１の行部分１３１０を使用し得る。
【００８２】
フラグフィールド１３２４は、以下さらに説明するアクセス動作中において、制御器５１０（図６）によって使用されるフラグ情報を記憶するために使用される。ブロックアドレスフィールド１３２２は、ＢＬＣＫ０に対する「０」のように、ブロック１３０２に永久に割り当てられるブロックアドレスを記憶するために使用される。ブロックごとのブロックアドレスフィールドでは、単一ブロックアドレスエントリのみが要求される。好適な実施形態では、ブロックアドレスエントリは、最終行１３０４のブロックアドレスフィールド１３２２、即ち行１５に入れられる。
【００８３】
この代わりの実施形態では、第１および第２のスプリットバス６８０、６８４（図６）が、偶数および奇数セクタの受信データバイトにそれぞれ結合された配線を含む。制御器５１０（図６）は、第１および第２のスプリットバス６８０、６８４（図６）それぞれを同時に介して、偶数セクタおよび奇数セクタのバイトの同時書き込みによって、２つのセクタを同時に書き込む。また、スプリットバス６８０、６８４（図６）は、フラッシュメモリチップと、フラッシュ状態マシン６４２と、メモリ制御器５１０のＥＣＣ論理ユニット６６０との間のＥＣＣ情報の転送、およびフラッシュ状態マシン６４２からフラッシュメモリチップへのアドレス情報の転送を提供する。
【００８４】
図１４は、図６のメモリシステムの消去動作のための制御信号、アドレス信号、およびデータ信号のタイミングを示すタイミング図である。この図は、第１のスプリットバス６８０（図６）を介して、フラッシュ状態マシン６４２（図６）から第１のフラッシュメモリチップへの、時間多重化されたコマンド、アドレス、およびデータ情報を転送する第１のフラッシュ信号を示す波形９０２と、第２のスプリットバス６８４（図６）を介して、フラッシュ状態マシンから第２のフラッシュメモリチップへ時間多重化されたコマンド、アドレス、およびデータ信号を転送する第２のフラッシュ信号を示す波形９０４と、同時線（ｔｉｍｅ  ｌｉｎｅ）１４５０と、複数の制御信号波形とを含む。制御信号波形は、すべて上述したが、制御配線イネーブル（ＣＬＥ）信号を示す波形９０６と、アドレス配線イネーブル（ＡＬＥ）信号を示す波形９０８と、書き込みイネーブル（ＷＥ）信号を示す波形９１０と、読み出しイネーブル（ＲＥ）信号を示す波形９１２と、フラッシュチップイネーブル（ＦＣＥ＊）を示す波形９１４と、フラッシュレディ／ビジー（ｒｅａｄｙ／ｂｕｓｙ）信号，（ＦＲＤＹ＿ＢＳＹ＊信号）を示す波形９１６とを含む。
【００８５】
消去動作は、ＦＣＥ＊信号（波形９１４）が、ＨＩＧＨ状態からＬＯＷ状態に遷移する時刻Ｅ０において開始し、これにより、第１および第２のフラッシュメモリチップが、コマンド、アドレス、およびデータ信号の受信を開始することを可能にする。続く時刻Ｅ１では、ＣＬＥ信号（波形９０６）が起動され、ＬＯＷ状態からＨＩＧＨ状態に遷移して、これにより、第１および第２のフラッシュメモリチップが制御信号を読み出すことを可能にする。時刻Ｅ２では、第１および第２のフラッシュ信号（波形９０２および９０４）それぞれが制御信号を発信する。第１のフラッシュ信号（波形９０２）は、第１のスプリットバス６８０（図６）を介して、第１のフラッシュメモリチップに「消去セット」コマンド６０Ｈを発信し、第２のフラッシュ信号（波形９０４）は、第２のスプリットバス６８４（図６）を介して、第２のフラッシュメモリチップに読み出し状態コマンド信号７０Ｈを発信する。時刻Ｅ３では、コマンド信号６０Ｈおよび７０Ｈはアクティブであるが、ＷＥ信号（波形９１０）はＨＩＧＨ状態からＬＯＷ状態に遷移し、第１および第２のフラッシュメモリチップがコマンド信号６０Ｈおよび７０Ｈを読み出すことを可能にする。時刻Ｅ４では、ＣＬＥ信号（波形９０６）が非アクティブ化されて、再びＬＯＷ状態に遷移し、これにより、フラッシュメモリチップがコマンド信号を読み出すことを不可能にする。
【００８６】
また、時刻Ｅ４では、ＡＬＥ信号（波形９０８）が起動され、ＬＯＷ状態からＨＩＧＨ状態に遷移して、これにより、第１および第２のフラッシュメモリチップがアドレス情報のパケットを読み出すことを可能にする。時刻Ｅ５およびＥ６では、第１のフラッシュ信号（波形９０２）が、第１および第２のアドレスパケットＡＤＤ０およびＡＤＤ１をそれそぞれ、第１のフラッシュメモリチップに発信し、第１および第２のアドレスパケットＡＤＤ０およびＡＤＤ１は、メモリバンクの第１のフラッシュメモリチップ６７０のサブブロック７３０（図７）を指定する。時刻Ｅ７では、ＡＬＥ信号（波形９０８）が非アクティブ化される。時刻Ｅ３と時刻Ｅ４との間、および時刻Ｅ４とＥ５との間の期間において、ＷＥ信号（波形９１０）は、ＬＯＷ状態に遷移して、フラッシュメモリチップがアドレスパケットを読み出すことを可能にする。
【００８７】
時刻Ｅ８において、ＣＬＥ信号（波形９０６）が、再び起動され、第１及び第２のメモリチップがコマンド信号を読み出すことを可能にする。時刻Ｅ９では、第１のフラッシュ信号（波形９０２）が、第１のフラッシュメモリチップに対する「消去確認コマンド」であるＤＯＨを発信する。このコマンドは、ＣＬＥ信号によってサンプリングされ、実際にフラッシュチップ内で消去動作を起動し、その後、第１のフラッシュメモリチップ６７０のアドレスされたサブブロック７３０（図７）の各メモリ行部分のデータフィールド７３４および７３８の内容が消去される。即ち「すべて１」の状態に設定される。時刻Ｅ１０では、ＦＲＤＹ−ＢＳＹ＊信号（波形９１２）がＨＩＧＨ状態からＬＯＷ状態に遷移し、少なくとも一つのフラッシュメモリチップがビジーであることをフラッシュ状態マシン６４２（図６）に指示する。
【００８８】
時刻Ｅ１１において、ＣＬＥ信号（波形９０６）が起動され、第１および第２のフラッシュメモリチップがコマンド信号を読み出すことを可能にする。時刻Ｅ１２において、第１および第２のフラッシュ信号（波形９０２および９０４）は、それぞれコマンド信号を発信する。第１のフラッシュ信号（波形９０２）は、第１のスプリットバス６８０（図６）を介して、第１のフラッシュメモリチップに読み出しコマンド信号７０Ｈを発信し、第２のフラッシュ信号（波形９０４）は、第２のスプリットバス６８４（図６）を介して、第２のフラッシュメモリチップに消去コマンド信号６０Ｈを発信する。時刻１３では、コマンド信号７０Ｈおよび６０Ｈはアクティブであるが、ＷＥ信号（波形９１０）は、ＬＯＷ状態に遷移し、第１および第２のフラッシュメモリチップがコマンド信号６０Ｈおよび７０Ｈを読み出すことを可能にする。時刻Ｅ１４では、ＣＬＥ信号（波形９０６）が非アクティブ化され、フラッシュメモリチップがコマンド信号を読み出すことを不可能にし、ＡＬＥ信号（波形９０８）がアクティブ化されて、これにより、第１および第２のフラッシュメモリチップがアドレス情報のパケットを読み出すことを可能にする。時刻Ｅ１５およびＥ１６では、第２のフラッシュ信号（波形９０４）が、第１および第２のアドレスパケットＡＤＤ０およびＡＤＤ１をそれぞれ第２のフラッシュメモリチップに発信し、第１および第２のアドレスパケットＡＤＤ０およびＡＤＤ１は、メモリバンクの第２のフラッシュメモリチップ６７２のサブブロック７３１（図７）を指定する。時刻Ｅ１７では、ＡＬＥ信号（波形９０８）が非アクティブ化される。時刻Ｅ１３とＥ１４、およびＥ１４とＥ１５との間の期間において、ＷＥ信号（波形９１０）は、フラッシュメモリチップがアドレスパケットを読み出すことを可能にする。時刻Ｅ１８では、ＣＬＥ信号（波形９０６）が、再びアクティブ化され、第１および第２のメモリチップがコマンド信号を読み出すことを可能にする。時刻１９では、第１のフラッシュ信号（波形９０２）が、第１のフラッシュメモリに対してＤＯＨを発信し、指定されたブロックの各メモリ行部分７３２のデータフィールド７３４および７３８の内容を消去して、これにより、「すべて１」の状態に設定する。
【００８９】
要約すると、メモリ制御器は、時刻Ｅ０とＥ１１との間の期間ＴＥＢ１において、第１のフラッシュメモリチップ６７０のアドレスされたサブブロック７３０（図７）を消去する。また、時刻Ｅ１１と時刻Ｅ２０との間の期間ＴＥＢ２において、第２のフラッシュメモリチップ６７２の対応するアドレスされたサブブロック７３１（図７）を消去する。時刻Ｅ２１では、ＦＲＤＹ−ＢＳＹ＊信号（波形９１６）が、ＬＯＷ状態からＨＩＧＨ状態に遷移し、両方のフラッシュメモリチップに対する消去動作が終了したことをフラッシュ状態マシン６４２（図６）に指示する。
【００９０】
時刻Ｅ２１の直後に、第１および第２のフラッシュ信号（波形９０２および９０４）の各々は、読み出し状態コマンド信号７０Ｈを第１および第２のフラッシュメモリチップにそれぞれ発信する。読み出しコマンド信号７０Ｈはアクティブであるが、ＷＥ信号（波形９１０）はＬＯＷ状態に遷移し、これにより、第１および第２のフラッシュメモリチップが読み出しコマンド信号７０Ｈを読み出す。時刻Ｅ２２では、第１および第２のフラッシュ信号（波形９０２および９０４）の両方が、制御器に状態データを転送する。
【００９１】
こうして、上述のようにフラッシュメモリチップの、２つの対応するアドレスされたサブブロック上で、消去動作が実行された後、両方のフラッシュメモリチップの状態が同時に読み出される。
【００９２】
メモリチップのサブブロック７３０、７３１のいずれかがエラーを有する場合、チップ内のブロック７２７全体（図７）が、第２のフラッシュメモリチップ６７２の欠陥フラグ７５６の内容を設定することにより、欠陥有りと標識される。
【００９３】
図１５は、本発明によって、第１のメモリユニット内に記憶される第１のサブブロックおよび第２のメモリユニット内に記憶される第２のサブブロックを含むブロックを消去するプロセスを示すフローチャートである。マイクロプロセッサ６２０（図６）は、符号（ｃｏｄｅ）ＲＡＭ６２６（図６）に記憶されている命令を実行し、図示したプロセスを実
施する。
【００９４】
工程１５０２では、マイクロプロセッサ６２０（図６）が、消去されるブロックアドレスをロードする。工程１５０４では、マイクロプロセッサは１４００（図１４）のタイミング図に応じて、上述の消去動作を起動する。１５０６では、マイクロプロセッサは、ＬＯＷ状態からＨＩＧＨ状態に遷移するフラッシュレディ／ビジー（ＦＲＤＹ＿ＢＳＹ＊）信号（図１４の波形９１６）を読み出すことによって消去動作が終了したかどうかを判定し、両方のフラッシュメモリチップにおいて消去動作が終了したことを、フラッシュ状態マシン６４２（図６）に指示する。１５０８では、マイクロプロセッサはがフラッシュチップ６７０、６７２（図６）の状態を読み出す。１５０８では、マイクロプロセッサは、工程１５０４で実施された消去動作が、フラッシュチップ６７０、６７２（図６）の両方において成功であったかどうかを判定し、成功であった場合、プロセスは終了する。工程１５０４で実施された消去動作が、両方のフラッシュチップにおいて成功でなかったと判定された場合、マイクロプロセッサはフラッシュチップ６７０、６７２の両方を欠陥であると標識する。
【００９５】
本発明を特定の実施形態により説明してきたが、当業者には変更および修正が自明になると予想される。従って以下の請求の範囲が、本発明の精神と範囲に納まるそのような変更および修正のすべてを包含することを意図している。
【図１】
2010092506.tif 000003
【図２】
2010092506.tif 000004
【図３】
2010092506.tif 000005
【図４】
2010092506.tif 000006
【図５】
2010092506.tif 000007
【図６】
2010092506.tif 000008
【図７】
2010092506.tif 000009
【図８Ａ】
2010092506.tif 000010
【図８Ｂ】
2010092506.tif 000011
【図９】
2010092506.tif 000012
【図１０】
2010092506.tif 000013
【図１１】
2010092506.tif 000014
【図１２】
2010092506.tif 000015
【図１２ａ】
2010092506.tif 000016
【図１３】
2010092506.tif 000017
【図１４】
2010092506.tif 000018
【図１５】
2010092506.tif 000019