複数のデバイスへ同時書き込み操作を行うことにより高まるフラッシュメモリデバイスにおけるメモリ性能
【課題】読み出しおよび書き込み操作を行う際にかかる時間を短縮するために、非揮発性メモリをセクタフォーマットで組織化されたデジタル情報の記憶用に採用し、それによりシステムの全体的な性能を上げ、同時にこのデジタルシステムの製造経費を削減する、デジタルシステムを提供する
【解決手段】コントローラはセクタ単位に構成された情報を転送し、各セクタはホストと不揮発性メモリバンクとの間にユーザデータ部分およびオーバーヘッド部分を含み、2つの不揮発性メモリデバイス内の同じセクタに関連する2バイトのセクタの記憶および読み出しを同時に行う。各不揮発性メモリデバイスは、メモリロケーションの行によって規定され、ここで、少なくとも2つの半導体デバイスの対応する行が、その内部に2セクタの情報を、不揮発性メモリデバイスのメモリ行の1つに維持された2つのセクタに関連するオーバーヘッド情報と共に維持する。
【解決手段】コントローラはセクタ単位に構成された情報を転送し、各セクタはホストと不揮発性メモリバンクとの間にユーザデータ部分およびオーバーヘッド部分を含み、2つの不揮発性メモリデバイス内の同じセクタに関連する2バイトのセクタの記憶および読み出しを同時に行う。各不揮発性メモリデバイスは、メモリロケーションの行によって規定され、ここで、少なくとも2つの半導体デバイスの対応する行が、その内部に2セクタの情報を、不揮発性メモリデバイスのメモリ行の1つに維持された2つのセクタに関連するオーバーヘッド情報と共に維持する。
【発明の詳細な説明】
【背景技術】
【0001】
(発明の背景)
(関連出願との相互参照)
本発明は、1997年10月7日に出願された「Moving Sequential Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題する本発明者らの先行出願である米国特許第08/946,331号の一部継続出願であり、これは1997年3月31日に出願された「Moving Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題する米国特許第08/831,266号の一部継続出願である。
【0002】
(発明の分野)
本発明は、ハードディスク記憶または従来のフィルムに置き換えて用いる、非揮発性メモリを大容量記憶として採用する、パーソナルコンピュータおよびデジタルカメラのようなデジタルシステムの分野に関する。より詳細には、本発明は、そのようなデジタルシステムの性能を、デジタル情報が非揮発性メモリから読み出され、そこへ書き込まれる速度を上げることにより高めるアーキテクチャに関する。
【0003】
(従来技術の説明)
フラッシュまたはEEPROMメモリのような、より高い容量のソリッドステート記憶デバイス(揮発性メモリ)の登場に伴い、多くのデジタルシステムは従来の大容量記憶デバイスをフラッシュおよび/またはEEPROMメモリデバイスに置き換えてきた。例えパーソナルコンピュータ(PC)は、従来のハードディスクの代わりに大容量記憶を目的としてソリッドステート記憶装置を用いる。デジタルカメラは、従来のフィルムと置き換えて、カードにおいてソリッドステート記憶デバイスを採用する。
【0004】
図1は、コントローラ12を含む従来技術のメモリシステム10を示し、このコントローラは通常半導体(または集積回路)デバイスであり、PCまたはデジタルカメラであり得るホスト14に結合する。コントローラ12はさらに、非揮発性メモリバンク16に結合する。ホスト14は、複数のセクタに組織化された情報をメモリバンク16へ書き込み、そして読み出す。このメモリバンク16は、第1非揮発性メモリチップ18および第2非揮発性メモリチップ20を含む。チップ18は、8ビットラインを含む第1バス28を介してコントローラ12のポート26に接続されたポート24を有するI/Oレジスタ22、およびI/Oレジスタ22と結合した記憶エリア30を含む。チップ20は、8ビットラインを含む第2バス38を介してコントローラ12のポート36に接続されたポート34を有するI/Oレジスタ32、およびI/Oレジスタ32と結合した記憶エリア40を含む。第1バス28および第2バス38は、コントローラとメモリチップ18および20との間で、データ、アドレスおよび命令信号を送信するために使用される。情報の16ビットの内、最下位の8ビット(LSB)は第1バス28を介してチップ18へ供給され、最上位の8ビット(MSB)は第2バス38を介してチップ20へ供給される。
【0005】
メモリバンク16は、それぞれが複数のメモリ行ロケーションを含んでいる複数のブロックロケーション42を含む。メモリバンクの各ブロックロケーションは、第1非揮発性メモリチップに位置する第1サブブロック44、および第2非揮発性メモリチップに位置する対応する第2サブブロック46から構成される。各メモリ行ロケーションは、第1の行ロケーション48および対応する第2の行ロケーション50を含む。示されている実施形態では、第1行のロケーション48および第2の行ロケーション50のそれぞれは、256バイトのデータ情報用の記憶に加え、オーバーヘッド情報用に追加の8バイトの記憶空間を含む。セクタは、512バイトのユーザデータおよび16バイトの非ユーザデータ(後者は一般にオーバーヘッド情報と呼ばれる)を含むが、256バイトのユーザデータおよび8バイトのセクタのオーバーヘッド情報は、チップ18の第1の行部分48において維持され得、残りの256バイトのユーザデータおよび残りの8バイトの同じセクタのオーバーヘッド情報は、チップ20の第2の行部分50において維持され得る。従って、セクタの半分はチップ18のメモリ行ロケーション48に記憶され、セクタの他の半分はチップ20のメモリ行ロケーション50に記憶される。加えて、記憶されたセクタのオーバーヘッド情報のそれぞれの半分は、チップ18により維持され、他の半分はチップ20により維持される。
【0006】
一般に、フラッシュメモリチップ18および20へデータを読み出し、そして書き込むことは、時間を消費する。フラッシュメモリチップへデータを書き込むことは、特に時間消費である。なぜなら、データはI/Oレジスタ22および32にラッチされなければならず、これらは第1および第2バスを介して一度に1バイトずつロードされてから、I/Oレジスタ22および32からフラッシュメモリチップ18および20のメモリセルへそれぞれ送信されるためである。データをI/Oレジスタからメモリへ、データのバイト毎に送信するために必要とされる時間は、I/Oレジスタのサイズおよびフラッシュメモリチップのサイズに比例する。
【0007】
書き込み操作中、コントローラ12は単一セクタの情報を、以下のようにメモリバンク16へ書き込む。(1)書き込み命令信号をチップ18および20のそれぞれに、バス28および38を介して同時に送信し、(2)対応するチップのサブブロック44および46を特定するアドレスデータを、チップ18および20へバス28および38を介して同時に送信し、(3)1バイトのユーザデータをチップ18および20のそれぞれへ、対応するサブブロック44および46内に記憶するために、バス28および38を介して同時に送信する。このような従来技術システムに伴う問題点は、ホスト14により発せられる書き込み命令中に、2バイトの情報が一度に書き込み、そして読み出されることに対して、1つのセクタの情報しかメモリバンク16により一度に収容されないことである。
【0008】
別の従来技術デジタルシステム60を図2に示す。このシステムは、ホスト64に結合したコントローラ62、およびセクタで組織化された情報を非揮発性メモリチップ68へ記憶し、そして読み出すための非揮発性メモリチップ68を含み、このメモリチップ68はメモリバンク66内に含まれる。ホストからの命令によりコントローラは1つのチップに1つのセクタ全体を記憶するが、より多くのチップ(図示せず)がメモリバンク内に含まれ得る。ブロック0のようなブロックは、16個のセクタS0、S1、...、S15を含む。またチップ68は、512バイトに加え16バイト、総計528バイトの記憶空間を含むI/Oレジスタ70をも含む。コントローラは、ホスト64とメモリ66との間で、一度に1バイトの情報を送信する。512バイトのユーザデータに加え16バイトのオーバーヘッド情報を含む1つのセクタは、書き込み操作中にI/Oレジスタ内に一時的に記憶されてから、メモリデバイス内におけるブロックの1つに、そこで記憶されるために送信される。読み出し操作中、1つのセクタの情報はメモリデバイスのブロックの1つから読み出されてから、コントローラへの送信のためにI/Oレジスタ内に記憶される。図2の従来技術のアーキテクチャに伴う重要な問題点は、総計528バイトがI/Oレジ
スタ36に記憶され得ることに対し、1バイトのセクタ情報しかコントローラとメモリバンクとの間で一度に送信され得ず、それによりシステムの全体的な性能が妨げられることである。
【0009】
図1および2の従来技術の両システムは、1セクタの情報を識別するホスト供給論理ブロックアドレス(LBA)を、メモリバンク内におけるセクタのロケーションを識別する物理ブロックアドレス(PBA)に変換する、LBA−PBAマッピング情報を維持する。このマッピング情報は、コントローラの外に維持され得るが、通常コントローラ内において揮発メモリ(例えばRAM)に含まれる。
【0010】
図3は、行および列により規定されるLBA−PBAマップ300の例を図示した表図を示す。各行302は、16で除算されたホストから受信したLBAの値に相当する値により独特に識別され、アドレスされている。図3の行の数は、16進法を用いて示される。よって、例えば行10H(16進法において)は、10進法における16に相当するアドレス値である。マップ300の各行302は、PBA値を維持するメモリロケーションフィールド304、「オールド」フラグフィールド306、「使用中」フラグフィールド308、および「欠陥」フラグフィールド310を含む。フラグフィールド(図1および2)は、メモリバンク内において維持される1つのブロックの情報のステータスに関する情報を供給する。仮想PBAフィールド304は、メモリバンク内におけるブロックのロケーションについての情報を記憶する。
【0011】
図4は、メモリバンク内に維持される1つのセクタのデータを記憶するための例示的なフォーマットを図示した表図である。仮想PBAフィールド304(図3)は、各ブロックが複数のセクタ402を有するブロック400の情報のロケーションについての情報を供給する。各セクタ402はユーザデータフィールド404、ECCフィールド406、「オールド」フラグフィールド408、「使用中」フラグフィールド410、および「欠陥」フラグフィールド412で構成される。
【0012】
本明細書中で述べられる種類の従来技術のシステムに付随するさらなる問題点は、表300(図3)が多大な「real estate」を占め、これが一般にRAM技術(これは、それ自体に経費がかかり、そして通常コントローラ内において保持される)で構成されることから、その製造に伴いかなりの経費がかかる。さらに、表300の各行が1つのブロックの情報に付随するように、ブロックの情報の数が大きければ大きいほど、表のサイズも大きくなるため(これはまたコントローラを製造する際に追加の経費となるが)、このデジタルシステムはこのような表を採用する。
【0013】
ここで必要とされるものは、読み出しおよび書き込み操作を行う際にかかる時間を短縮するために、非揮発性メモリをセクタフォーマットで組織化されたデジタル情報の記憶用に採用し、それによりシステムの全体的な性能を上げ、同時にこのデジタルシステムの製造経費を削減する、デジタルシステムである。
【発明の概要】
【課題を解決するための手段】
【0014】
(発明の要旨)
本発明の目的は、非揮発性メモリバンクへ情報を読み出し、書き込むことに伴う時間を短縮することにより、1つ以上の非揮発性メモリデバイス(フラッシュおよび/またはEEPROMチップ)を含む非揮発性メモリバンクを操作するホストに結合したコントローラを有するデジタルシステムの性能を高めることである。
【0015】
本発明の別の目的は、本明細書中で述べるように、ホストから発される単一の書き込み命令中に、少なくとも2つのセクタの情報を、少なくとも2つの非揮発性メモリ半導体デバイスへ書き込むことにより、複数のセクタの情報を記憶する際にかかる時間を短縮する
ことである。
【0016】
本発明の別の目的は、本明細書中で述べるように、ホストから発される単一の読み出し命令中に、少なくとも2つのセクタの情報を、少なくとも2つの非揮発性メモリ半導体デバイスへ読み出すことにより、複数のセクタの情報を記憶する際にかかる時間を短縮する
ことである。
【0017】
本発明のさらなる目的は、2つの非揮発性メモリ半導体デバイスの1つにおける2つのセクタの情報に付随したオーバーヘッド情報を記憶することである。
【0018】
本発明のまた別の目的は、2つの非揮発性メモリデバイス内において記憶された、2バイトの1つのセクタの情報に同時にアクセスし、それにより本発明を少なくとも2桁で採用するシステムの性能の速度を高めることである。
【0019】
本発明のまた別の目的は、第1セクタの情報の1バイトおよび第2セクタの情報の1バイトに、2つの非揮発性メモリデバイス内において同時にアクセスし、それにより本発明を採用するシステムの性能の速度を高めることである。
【0020】
本発明のさらなる目的は、複数のホスト供給セクタアドレスから非揮発性メモリデバイス内におけるブロックのアドレス間の変換を維持する非揮発性メモリ表(またはマップ)のサイズを縮小し、それによりデバイスシステムの製造経費を削減することである。
【0021】
簡潔に言うと、本発明は、ホストに連結したコントローラ半導体デバイス、および複数の非揮発性メモリデバイスを含む非揮発性メモリバンクを有するデバイスシステムを含む。コントローラは、セクタで組織化された情報(各セクタはユーザデータ部分およびオーバーヘッド部分を含む)をホストと非揮発性メモリバンクとの間で送信し、同じセクタに関する2バイトの情報を、2つの非揮発性メモリデバイス内において同時に記憶し、読み出す。各非揮発性メモリデバイスは、メモリロケーションの行により規定され、ここで少なくとも2つの半導体デバイスの対応する行は、2つのセクタの情報を維持し、そこに非揮発性メモリデバイスのメモリ行の内、1つに維持される2つのセクタに関するオーバーヘッド情報を伴う。32あるセクタの情報のそれぞれは、2つのメモリデバイス(ここで偶数および奇数バイトの1つのセクタは、2つの非揮発性メモリデバイスから同時に読み出され、書き込まれる)間で展開する1つのブロックの情報を備えて仮想物理ブロックアドレスにより識別されたブロックを規定する。別の実施形態において、コントローラは単一の非揮発性メモリデバイス内においてセクタ全体の情報を記憶し、2つの非揮発性メモリデバイスにおいて少なくとも2つのセクタの対応するバイトを処理することにより、1つのセクタの情報を同時に読み出し、または書き込む。
【0022】
本発明のこれらの、また他の目的および利点は、いくつかの図面において示す以下の好ましい実施形態の詳細な説明を読み終えた後、当業者には疑いなく明らかとなる。
【0023】
(図面)
図1は、単一のセクタの情報が、書き込み操作中に一度に2バイトずつ、2つのメモリユニットを含むメモリバンクへ書き込まれ、各メモリユニットは単一の行ロケーションにおける256バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図であり、 図2は、単一のセクタの情報が、書き込み操作中に一度に1バイトずつ、少なくとも1つのメモリユニットを含むメモリバンクへ書き込まれ、メモリユニットは単一の行ロケーションにおける512バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図であり、 図3は、セクタの情報を識別するホスト供給論理ブロックアドレス(LBA)から、メモリバンク内においてセクタのロケーションを識別する物理ブロックアドレス(PBA)へ変換する例示的なマップを示す表図であり、
図4は、メモリバンクにおいて維持されたセクタのデータを記憶するための例示的なフォーマットを示す表図であり、
図5は、2セクタの情報が、単一の書き込み操作中に一度に2バイトずつ、少なくとも2つのメモリユニットを含むメモリバンクへ書き込まれ、各ユニットは単一の行ロケーションにおける512バイトのユーザデータを記憶する容量を有する、本発明によるメモリシステムの一般化ブロック図であり、
図6は、図5のメモリシステムの詳細なブロック図であり、
図7は、1つの偶数セクタおよび1つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第1のメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第2のメモリユニットに位置する第2の行ロケーションに記憶される、2つの非揮発性メモリユニットを含むメモリバンクにおいて、1つのブロックの情報(1ブロックは32セクタ含む)を記憶するメモリ記憶フォーマットを一般化して示す表図であり、
図8Aは、本発明に従って使用するための例示的なLBA−PBAマップの組織を示す表図であり、
図8Bは、本発明によるセクタの情報と付随したブロックの情報とを識別するアドレス情報のフォーマットを示すブロック図であり、
図9は、単一の書き込み操作中に、2セクタの情報が図7に示すメモリ記憶フォーマットを有するメモリバンクへ同時に読み出される、図6のメモリシステムにより行われる書き込み操作のための制御、アドレス、およびデータ信号のタイミングを示すタイミング図
であり、
図10は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図7に示すようなメモリ記憶フォーマットを有するメモリバンクを示す表図であり、
図11は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図7に示すような他のメモリ記憶フォーマットを有するメモリバンクを示す表図であり、
図12は、本発明による単一の書き込み操作中に、2セクタの情報を2つのメモリユニットに同時に書き込むプロセスを示すフローチャートであり、
図12aは、図12の欠陥管理ルーチン(defect management routine)を行うにあたって行われる工程のフローチャートである。
【0024】
図13は、1つの偶数セクタおよび1つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第1の2つのメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第2の2つのメモリユニットに位置する第2の行ロケーションに記憶される、2つの非揮発性メモリユニットを含むメモリバンクにおいて、1つのブロックの情報(1ブロックは32セクタ含む)を記憶
するメモリ記憶フォーマットを一般化して示す表図であり、
図14は、本発明の原理に従って、メモリバンクのブロックを消去するプロセスのための制御、アドレスおよびデータ信号のタイミングを示すタイミング図であり、
図15は、本発明に従って、第1メモリユニット内に記憶された第1サブブロック、および第2メモリユニット内に記憶された第2サブブロックを含むブロックを消去するプロセスを示すフローチャートである。
【図面の簡単な説明】
【0025】
【図1】図1は、単一のセクタの情報が、書き込み操作中に一度に2バイトずつ、2つのメモリユニットを含むメモリバンクへ書き込まれ、各メモリユニットは単一の行ロケーションにおける256バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図である。
【図2】図2は、単一のセクタの情報が、書き込み操作中に一度に1バイトずつ、少なくとも1つのメモリユニットを含むメモリバンクへ書き込まれ、メモリユニットは単一の行ロケーションにおける512バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図である。
【図3】図3は、セクタの情報を識別するホスト供給論理ブロックアドレス(LBA)から、メモリバンク内においてセクタのロケーションを識別する物理ブロックアドレス(PBA)へ変換する例示的なマップを示す表図である。
【図4】図4は、メモリバンクにおいて維持されたセクタのデータを記憶するための例示的なフォーマットを示す表図である。
【図5】図5は、2セクタの情報が、単一の書き込み操作中に一度に2バイトずつ、少なくとも2つのメモリユニットを含むメモリバンクへ書き込まれ、各ユニットは単一の行ロケーションにおける512バイトのユーザデータを記憶する容量を有する、本発明によるメモリシステムの一般化ブロック図である。
【図6】図6は、図5のメモリシステムの詳細なブロック図である。
【図7】図7は、1つの偶数セクタおよび1つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第1のメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第2のメモリユニットに位置する第2の行ロケーションに記憶される、2つの非揮発性メモリユニットを含むメモリバンクにおいて、1つのブロックの情報(1ブロックは32セクタ含む)を記憶するメモリ記憶フォーマットを一般化して示す表図である。
【図8A】図8Aは、本発明に従って使用するための例示的なLBA−PBAマップの組織を示す表図である。
【図8B】図8Bは、本発明によるセクタの情報と付随したブロックの情報とを識別するアドレス情報のフォーマットを示すブロック図である。
【図9】図9は、単一の書き込み操作中に、2セクタの情報が図7に示すメモリ記憶フォーマットを有するメモリバンクへ同時に読み出される、図6のメモリシステムにより行われる書き込み操作のための制御、アドレス、およびデータ信号のタイミングを示すタイミング図である。
【図10】図10は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図7に示すようなメモリ記憶フォーマットを有するメモリバンクを示す表図である。
【図11】図11は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図7に示すような他のメモリ記憶フォーマットを有するメモリバンクを示す表図である。
【図12】図12は、本発明による単一の書き込み操作中に、2セクタの情報を2つのメモリユニットに同時に書き込むプロセスを示すフローチャートである。
【図12a】図12aは、図12の欠陥管理ルーチン(defect management routine)を行うにあたって行われる工程のフローチャートである。
【図13】図13は、1つの偶数セクタおよび1つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第1の2つのメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第2の2つのメモリユニットに位置する第2の行ロケーションに記憶される、2つの非揮発性メモリユニットを含むメモリバンクにおいて、1つのブロックの情報(1ブロックは32セクタ含む)を記憶するメモリ記憶フォーマットを一般化して示す表図である。
【図14】図14は、本発明の原理に従って、メモリバンクのブロックを消去するプロセスのための制御、アドレスおよびデータ信号のタイミングを示すタイミング図である。
【図15】図15は、本発明に従って、第1メモリユニット内に記憶された第1サブブロック、および第2メモリユニット内に記憶された第2サブブロックを含むブロックを消去するプロセスを示すフローチャートである。
【発明を実施するための形態】
【0026】
(実施形態の詳細な説明)
図5は、本発明の原理に従うメモリシステムである500において、一般化したブロック図を示す。このシステムは、ホストシステム504に結合したメモリカード502を含む。1つの実施形態では、ホスト504はデジタルカメラであり、メモリカード502はデジタルフィルムカードであり、また別の実施形態では、ホスト504はパーソナルコンピュータシステムであり、メモリカード502はPCMCIAカードである。メモリカード502は、ブロックに組織された複数のセクタの情報を記憶するための複数の非揮発性メモリユニット508を含む非揮発性メモリバンク506と、メモリバス512を介してメモリバンクに結合され、ホストバス514を介してホスト504に結合されたメモリコントローラ510とを含む。メモリコントローラ510は、ホスト504とメモリバンク506との間でセクタ組織化情報の送信を制御する。各セクタの情報は、ユーザデータ部分およびオーバーヘッド部分を含む。メモリコントローラは、以下でさらに説明するように、本発明に従ってメモリバンクのメモリユニットへの書き込み操作、およびそこからの読み出し操作を行う。
【0027】
本発明において、非揮発性メモリバンク506は、任意の数の非揮発性メモリユニット508を含み得るが、好ましい実施形態においては、非揮発性メモリバンクは偶数のメモリユニットを有する。また、この好ましい実施形態では、各非揮発性メモリユニットはフラッシュメモリ集積回路デバイスである。
【0028】
図6は、図5のメモリシステムである600において、詳細なブロック図を示す。コントローラ510は、コントローラとホストとの間でアドレス、データ、および制御信号を送信するために、ホストバス514を介してホスト504に結合したホストインターフェース610と、ホストインターフェースのポート618に結合したポート616を有するデータバッファ614と、ホストインターフェースのポート624に結合したポート622を有するマイクロプロセッサ620と、マイクロプロセッサのポート630に結合したポート628を有するコード記憶ユニット626と、マイクロプロセッサのポート630およびコード記憶ユニットのポート628に結合したポート634を有するブートROMユニット632と、マイクロプロセッサのポート640に結合したポート638を有する空間マネジャー636と、マイクロプロセッサのポート646に結合したポート644、空間マネジャーのポート650に結合したポート648、およびデータバッファのポート647に結合したポート645を含むフラッシュ状態マシン642と、フラッシュ状態マシンのポート656に結合したポート654を有するメモリ入力/出力ユニット652と、フラッシュ状態マシンのポート664に結合したポート662を有するエラー訂正コード論理ユニット(ECC論理ユニット)660、およびデータバッファ614のポート668に結合したポート666とを含むように示される。
【0029】
示されている実施形態では、メモリバンク506は、2つの非揮発性メモリユニット(追加のメモリは含まれ得るが、簡略化のため2つのみを示す)と、FLASH0と指定された第1のフラッシュメモリチップ670と、FLASH1と指定された第2のフラッシュメモリチップ672とを含む。第1のフラッシュメモリチップ670は、第1入力/出力レジスタ(第1のI/Oレジスタ)671および記憶エリア669を含む。第2のフラッシュメモリチップ672は、第2入力/出力レジスタ(第2のI/Oレジスタ)673および記憶エリア674を含む。
【0030】
メモリバス512は、コントローラ510とメモリバンク506との間で、アドレス、データ、および制御信号を送信するために用いられる。メモリバス512は、フラッシュメモリチップ670、672とメモリI/Oユニット652との間でアドレス、データ、および命令信号を送信するメモリI/Oユニット652のポート676に結合したフラッ
シュバス675を含む。フラッシュバス675は16のビットラインを含み、その内8ビットラインは第1フラッシュメモリチップのI/Oレジスタ671のポート682に結合した第1バス680を形成し、別の8ビットラインは第2フラッシュメモリチップのI/Oレジスタ673のポート686に結合した第2バス684を形成する。
【0031】
メモリバス512はまた、フラッシュ状態マシン642の制御信号(CTRL信号)出力692を、第1フラッシュメモリチップの入力694および第2フラッシュメモリチップの出力696に接続する制御バス690と、フラッシュ状態マシン642のチップイネーブル(CE)出力700を、第1フラッシュメモリチップのイネーブル出力702および第2フラッシュメモリチップの出力704に接続するチップイネーブルライン698と、第1フラッシュメモリチップの出力708および第2フラッシュメモリチップの出力710を、フラッシュ状態マシン642の出力712に接続する準備/ビジー信号(FRDY−BSY*信号)ライン706とを含む。
【0032】
マイクロプロセッサ620は、場合により(例えばメモリシステムの初期化中)、ROM632に記憶されたプログラム指示(またはコード)を実行し、またメモリシステムの操作中のような他の場合には、マイクロプロセッサはコード記憶ユニット626に記憶されたコードを実行する。この記憶コードユニットは、揮発性(すなわち読み出しおよび書き込みメモリ(RAM)タイプ)、または非揮発性(すなわちEEPROMタイプ)のメモリ記憶装置であり得る。コード記憶ユニット626からのプログラムコードに先だって、プログラムコードはメモリバンク506において記憶され得、そして後にそのコードの実行のために、コード記憶ユニットにダウンロードされ得る。初期化中、マイクロプロセッサ620はROM632からの指示を実行し得る。
【0033】
ユーザデータおよびオーバーヘッド情報を含むセクタ組織化情報は、ホスト504からホストバス514を介してホストインターフェース610において受信され、データバッファ614に、そのバッファ内での一時的な記憶のために供給される。データバッファ内に記憶されたセクタの情報は、フラッシュ状態マシン642の制御のもとで得られ、以下でさらに説明する方法でメモリバンク506に供給される。当該分野において、各セクタが512バイトのユーザデータに加えオーバーヘッド情報を含むことは一般的である。セクタは、他の数のバイトの情報を含み得るが、好ましい実施形態においては、セクタは512バイトのユーザデータよび16バイトのオーバーヘッド情報を有する。
【0034】
ECC論理ブロック660は、セクタ組織化情報内のエラーの符号化および訂正を行うための回路機構を含む。ECC論理ブロック660は、エラー検出操作および/またはエラー訂正操作を、フラッシュメモリチップ670、672に記憶された各セクタのユーザデータ部分上、あるいはホスト504から受信されたデータ上で行う。
【0035】
必要であれば、空間マネジャー636は、それぞれが複数のセクタの情報を含んでいるブロックの情報を記憶するための、メモリバンク内における次の未使用(または空き)の非揮発性メモリロケーションを見出す。好ましい実施形態においては、1つのブロックは32セクタ含むが、代わりにブロックは他の数(例えば16のような数)のセクタを含むように規定され得る。メモリバンク506内に位置する記憶ブロックの物理アドレス(仮想物理ブロックアドレス(仮想PBA)と呼ばれる)、およびメモリバンク506内に位置するセクタの情報の物理ブロックアドレス(実物理ブロックアドレス(実PBA)と呼ばれる)は、空間マネジャーがホストから受信した論理ブロックアドレス(LBA)の変換を行うことにより決定される。ホスト504から受信した実LBA(ホスト供給LBA)は、セクタの情報を識別する。空間マネジャー636は、以下でさらに説明するように、改変版のホスト供給LBAから仮想PBAへ変換するためのLBA−PBAマップを記憶する空間マネジャーメモリユニット(これは好ましくは揮発性メモリユニット)を含む。示されている実施形態では、空間マネジャーは、空間マネジャーコントローラ(SPMコントローラ)724の制御のもとで、LBA−PBAマップを記憶する空間マネジャーRAMユニット(SPM RAMユニット)720を含み、このSPMコントローラ724はSPM RAMユニットに結合している。
【0036】
図7は、本発明のある実施形態による、メモリバンク506内に記憶されたユーザデータ、エラー訂正情報、およびフラグ情報の組織を一般化して図示した表図を示す。メモリバンク506は、BLCK0、BLCK1、BLCK(M−1)と指定された複数あるM個のブロック727を含み、それぞれが仮想物理ブロックアドレス(PBA)を有する。ブロック727のそれぞれは、ROW0、ROW1、...ROW15と指定された複数あるN個のメモリ行ロケーション728を有する(ここで好ましい実施形態においてはN=16である)。メモリバンク506の各ブロック727は、第1のフラッシュメモリチップ670の第1のサブブロック730、および第2のフラッシュメモリチップ672の対応する第2のサブブロック731から構成される。対応するサブブロック730、731は、合わせて1つのブロックを形成し、同じ仮想PBAにより識別される。各メモリ行ロケーション728は、第1の行部分732および対応する第2の行部分733を含む。示されている実施形態において、各第1および第2行部分、732および733は、512バイトのデータ情報のための記憶空間に加え、他の情報のための追加の記憶空間を含む。示されている実施形態では、第1フラッシュメモリチップの第1の行部分732内の情報の記憶は、第2フラッシュメモリチップの第2の行部分733内のものとは同じでない方法で達成される。
【0037】
第1の行部分732のそれぞれは、偶数データバイトD0、D2、D4、...D510の偶数セクタ(S0、S2、S4、...)の情報を記憶する第1の偶数セクタフィールド734と、第1スペアフィールド736と、偶数データバイトD0、D2、D4、...D510の奇数セクタ(S1、S3、S5、...)の情報を記憶する第1の奇数セクタフィールド738と、第2スペアフィールド740とを含む。第2行部分733のそれぞれは、奇数データバイトD1、D3、D5、...D511の偶数のセクタのデータ(これは第1の偶数セクタフィールド734内に記憶されたその対応する偶数データバイトを有する)を記憶する第2の偶数セクタフィールド742と、集団的にフィールド734および742に記憶された偶数セクタの情報に対応するエラー訂正情報を記憶する第1のエラー訂正フィールド744と、奇数データバイトの奇数セクタの情報(これは第1の奇数セクタフィールド738内に記憶されたその対応する偶数データバイトを有する)を記憶する第2の奇数セクタフィールド746と、集中的にフィールド738、746に記憶された奇数セクタの情報に対応するECC情報を記憶する第2エラー訂正フィールド748と、ブロックアドレスフィールド750と、フラグフィールド752を含む。フィールド734および742は、偶数セクタロケーションを形成するが、フィールド738および746は奇数セクタロケーションを形成する。本発明において、フィールド734および742は、代わりに奇数セクタロケーションを形成し得る一方で、フィールド738および746は代わりに偶数セクタロケーションを形成し得ること、ならびにフィールド734および738は代わりに奇数データバイトを記憶するために用いられ得る一方で、フィールド742および746は代わりに偶数データバイトを記憶するために用いられ得ることが理解される。加えて、第1の行部分732は、代わりにメモリ行ロケーション728内に記憶されたセクタに関するオーバーヘッド情報を記憶するために用いられ得る。
【0038】
フラグフィールド752は、以下でさらに説明するように、アクセス操作中にコントローラ510(図6)により用いられるフラグ情報を記憶するために用いられる。ブロックアドレスフィールド750は、以下でさらに説明するように、ブロックに割り当てらた改変版のホスト供給LBA値を記憶するために用いられる。単一のブロックアドレスエントリのみが、ブロックアドレスフィールドにおいてブロック毎に要求される。好ましい実施形態において、改変ホスト供給LBA値は、各ブロック727の行ロケーション728の第N行、つまりROW15のブロックアドレスフィールド759に入力される。
【0039】
作動中、コントローラ510(図6)は、第1および第2フラッシュメモリチップに集中的に記憶された偶数セクタの情報に、第1および第2フラッシュメモリチップの対応する行部分である第1および第2の偶数セクタフィールド、734および742に、それぞれ第1分割バス680および第2分割バス684(図6)を介して同時にアクセスすることにより、アクセスする。第1分割バス680および第2分割バス684(図6)は、偶数および奇数バイトのセクタの情報をそれぞれ受信するように結合されたラインを含む。コントローラ510(図6)は、第1および第2フラッシュメモリチップに集中的に記憶された奇数セクタの情報に、第1および第2フラッシュメモリチップの対応する行部分である第1および第2の奇数セクタフィールド、738および746に、それぞれ第1分割バス680および第2分割バス684(図6)を介して同時にアクセスすることにより、アクセスする。分割バス680、684(図6)はまた、フラッシュメモリチップとフラッシュ状態マシン642とメモリコントローラ510のECC論理ユニット660との間におけるECC情報の送信、およびフラッシュ状態マシン642からフラッシュメモリチップへのアドレス情報の送信を供給する。
【0040】
コントローラ510(図6)は、空間マネジャー636を用いてメモリバンク506のブロック727のステータスを監視する。1つの実施形態では、コントローラ510(図6)は、フラグフィールド752の使用中フラグロケーション754および欠陥フラグロケーション756にそれぞれ記憶された使用中/空きブロックフラグおよび欠陥ブロックフラグを含むブロックレベルフラグを用いて、メモリバンクの各ブロックロケーション727のステータスを監視する。ブロックレベルフラグは、メモリバンクの全体のブロック727のステータスに関わる情報を供給する。従って、単一のブロックレベルフラグエントリのみが、フラグロケーション754および756においてブロック毎に要求される。使用中/新ブロックフラグは、対応するブロック727が情報を記憶するために現行で「使用中」であるか否か、あるいは情報を記憶するために利用可能(または空き)か否かを示す。欠陥ブロックフラグは、対応するブロック727が欠陥であるか否かを示す。
【0041】
別の実施形態においては、コントローラ510(図6)は、メモリバンクの各メモリ行ロケーション728のステータスを、使用中フラグロケーション754に記憶された使用中/空き行フラグと、欠陥フラグロケーション756に記憶された欠陥行フラグと、フラグフィールド752のオールドロケーション758に記憶されたオールド行フラグと、偶数セクタ移動フラグロケーション760に記憶された偶数セクタ移動フラグと、奇数セクタ移動フラグロケーション762に記憶された奇数セクタ移動フラグとを用いて監視する。この実施形態において、使用中/新フラグは、対応するメモリ行ロケーション728が情報を記憶するために現行で「使用中」であるか、あるいは情報を記憶するために利用可能(または空き)か否かを示す。欠陥フラグは、対応するブロック727が欠陥であるか否かを示す。非揮発性メモリロケーション732、733のペアのいずれかが欠陥であるならば、セットされている欠陥フラグロケーション756における値により示されるように、全メモリブロック727は欠陥であると宣言される。好ましい実施形態では、ロケーション758、754、および756は単一の3ビットフラグロケーション764に含まれる。
【0042】
奇数および偶数セクタ移動フラグロケーション760、762は、非揮発性メモリセクタロケーションに記憶された対応する偶数および奇数セクタが、非揮発性メモリバンク506(図6)内における別のロケーションへ移動したか否かを示す値を記憶する。例えば、行ロケーション728の偶数セクタフィールド734、742の特定のペアにおいて集中的に記憶された偶数セクタの情報が、非揮発性メモリバンク506内の偶数セクタフィールドの別のペアに移動した場合、対応する偶数セクタ移動フラグロケーション760において値がセットされる。同様に、同じ行ロケーションの奇数セクタフィールド738、746において集中的に記憶された奇数セクタの情報が、非揮発性メモリバンク506内の奇数セクタフィールドの別のペアに移動した場合には、対応する奇数セクタ移動フラグロケーション672において値がセットされる。非揮発性メモリバンク506内におけるセクタの情報が移動しているロケーションは、MVPBAアドレスロケーション内のSPM RAM720に記憶されたLBA−PBAマップにおいて示される。このことは本出願の発明者らにより出願された特許出願である、「Moving Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題する米国特許第08/831,266号(1997年3月31日出願)において教示しており、この出願の開示は本明細書中において参考として援用する。好ましい実施形態では、ロケーション760および762は、単一の2ビット移動フラグロケーション766である。
【0043】
図8Aは、改変版のホスト供給LBA−PBAを変換する、例示的なLBA−PBAマップの組織である800(これはSPM RAM720(図6)に記憶される)を一般化して図示した表図である。改変ホスト供給LBAは、ホスト供給LBAを1つのブロックに伴うセクタの数で除算することにより得られる(これは後により詳細に説明される)。示されているLBA−PBAマップは、改変ホスト供給LBAにより、または仮想PBAによりアドレス可能である複数のマップ行ロケーション802と、メモリバンク内におけるブロック727(図7)を識別する仮想PBA値を記憶する仮想PBAフィールド804と、フラグ情報を記憶するフラグフィールド806とを含む。上述のように、実PBAはメモリバンク内のセクタの情報のロケーションを特定し、仮想PBAはメモリバンク内のブロック727(図7)のロケーションを特定する。仮想PBA値は、空間マネジャー636(図7)により示されているマップから取り出され、メモリバンク506内においてブロックをアドレスする際に使用するため、フラッシュ状態マシン642のポート648へ転送される。
【0044】
図8Bは、ホスト供給LBAフォーマット810および実PBAフォーマット820を図示するブロック図を示す。LBAフォーマット810は、「オフセットビット」812を含み、これはホスト供給LBA値の最下位ビットを備える。上述のように、好ましい実施形態では、各ブロック727(図7)は各セクタが512バイトのユーザデータおよび16バイトのオーバーヘッド情報を含む、32セクタの情報を記憶するメモリ空間を含む。なぜなら、好ましい実施形態において各ブロック727(図7)は32セクタ含み、5つのオフセットビット812が、各ブロック内の32セクタのそれぞれを識別するために要求される。この実施形態では、ホスト供給LBAから実および仮想PBA値への変換は、まずホスト供給LBAの5つの最下位「オフセット」ビット812をマスクし、その結果を右へ5ビットずつシフトさせ、そしてそのシフト値を改変ホスト供給LBA値、または「LBA−マップ−値」として用い、LBA−PBAマップ800(図8)におけるマップ行ロケーション802をアドレスする。これは実際、ホスト供給LBAを32で除算している。実PBA値820(これはメモリバンクのブロック内におけるセクタのロケーションを特定する)は、LBA値のオフセットビット812とLBA−PBAマップの対応するフィールド804(図8)に記憶された仮想PBA822値とを連結することにより形成される。すなわち、仮想PBA値822はメモリバンク内におけるブロックを識別するために用いられ、5つの残ったオフセットビット812は識別されたブロック内におけるセクタをアドレスするために用いられる。
【0045】
メモリシステム600(図6)の初期化により、各マップ行ロケーション802の仮想PBAフィールド804に記憶された仮想PBA値は、全て「1」の状態にセットされる。ブロック727(図7)がコントローラによりアクセスされる(例えば書き込み操作中)毎に、対応するマップ行ロケーションの対応する仮想PBAフィールド804に記憶された仮想PBA値が、空間マネジャーコントローラ724(図6)により改変され、新しい仮想PBA値を特定する。メモリバンク506内におけるブロックが消去された場合、改変版のホスト供給LBAよりむしろ、オールド仮想PBA値(消去されたブロックに対応する仮想PBA値)が、SPM RAM720(図6)をアドレスするために用いられ、SPM RAM720のフラグフィールド内において記憶された使用中フラグはクリアになる。SPM RAM720のフラグフィールド内のこの同じ「使用中」フラグは、対応する仮想PBAがアップデートされ、セクタ情報が維持されるメモリバンク内の新しいブロックを指摘する(工程1214)ときにセットされる。
【0046】
図9は、メモリシステム600(図6)により行われる、書き込み操作用の制御、アドレス、およびデータ信号のタイミングを図示するタイミング図を示し、ここでは単一の書き込み操作中に、2セクタの情報が非揮発性メモリバンク506(図6)に同時に書き込まれる。この図は、命令、アドレス、およびデータ情報を多重化した時間を、コントローラのフラッシュ状態マシン642(図6)から、バス680(図6)を介して第1フラッシュメモリチップのポート682へ送信する、第1のフラッシュ信号を表す波形902と、命令、アドレス、およびデータ情報を多重化した時間を、コントローラのフラッシュ状態マシン642(図6)から、バス684(図6)を介して第2フラッシュメモリチップのポート686へ送信する、第2のフラッシュ信号を表す波形904と、タイムライン905と、複数の制御信号波形とを含む。
【0047】
制御信号波形は、フラッシュ状態マシン642(図6)から第1および第2フラッシュメモリチップへ、制御バス690(図6)を介して送信される命令ラインイネーブル信号(CLE信号)を表す波形906と、フラッシュ状態マシンからフラッシュメモリチップへ、制御バスを介して送信されるアドレスラインイネーブル信号(ALE信号)を表す波形908と、フラッシュ状態マシンからフラッシュメモリチップへ、制御バスを介して送信されるワイヤイネーブル信号(WE信号)を表す波形910と、フラッシュ状態マシンからメモリチップへ、制御バスを介して送信される読み出しイネーブル信号(RE信号)を表す波形912と、フラッシュ状態マシンのチップイネーブル信号出力700(図6)から、チップイネーブルライン698を介して、第1および第2フラッシュメモリチップへ送信されるフラッシュチップイネーブル信号(FCE*信号)を表す波形914と、第1および第2フラッシュメモリチップの出力、708および710(図6)から、フラッシュ状態マシンへフラッシュ準備/ビジー信号ライン706を介して送信されるフラッシュ準備/ビジー信号(FRDY_BSY*信号)を表す波形916とを含む。
【0048】
書き込み操作は、FCE*信号(波形914)がHIGH状態からLOW状態へ遷移する時間t0において始まり、それにより第1および第2フラッシュメモリチップが命令、アドレス、データ、および制御信号を受信し始めることを可能にする。時間t0に先だって、フラッシュメモリチップからフラッシュ状態マシンの入力712(図6)へ送信されるFRDY_BSY*信号(波形916)は、すでに起動しており、第1および第2フラッシュメモリチップがアクセス命令を受信する準備ができていることを示す。引き続く時間t1において、CLE信号(波形906)が起動し、LOW状態からHIGH状態へ遷移し、それにより第1および第2フラッシュメモリチップが命令信号を読み出すことを可能にする。時間t2において、第1および第2フラッシュ信号(波形902および904)は、連続的データシフト−イン命令信号80Hを、ディスプレイアップ1および第2フラッシュメモリチップへ、第1分割バス680および第2第1分割バス684をそれぞれ介して同時に送信する。時間t3において、連続的データシフト−イン命令信号80Hが起動し、WE信号(波形910)がHIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップが連続的データ命令信号80Hを読み出すことを可能にする。時間t4において、CLE信号(波形906)が停止し、LOW状態に戻り、それによりフラッシュメモリチップが命令信号を読み出すことを不可能にする。
【0049】
また、時間t4において、ALE信号(波形908)が起動し、LOW状態からHIGH状態に遷移し、それにより第1および第2フラッシュメモリチップがアドレス情報のパケットを読み出すことを可能にする。時間t5、t6、およびt7において、第1および第2フラッシュ信号(波形902および904)のそれぞれが、第1、第2、および第3アドレスパケットADD0、ADD1、およびADD2を、第1および第2フラッシュメモリチップへそれぞれ送信する。時間t8において、ALE信号(波形908)が停止し、HIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップがアドレス情報を読み出すことを不可能にする。時間t5とt6との間、t6とt7との間、およびt7とt8との間の時間間隔において、WE信号(波形910)は、HIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップが第1、第2、および第3アドレスパケットADD0、ADD1、およびADD2をそれぞれ読み出すことを可能にする。3つのアドレスパケットADD0、ADD1、およびADD2は、第1サブブロック730(図7)内における行部分732、733を特定する。
【0050】
時間t9において、第1および第2フラッシュ信号(波形902および904)が、インターリーブされた偶数および奇数データバイトを同時に送信し、ここで偶数および奇数バイトは1つのセクタ情報を形成する。偶数バイトは、第1フラッシュメモリチップへバス680(図6)を介して送信され、奇数セクタバイトは、第2フラッシュメモリチップへバス684(図6)を介して送信される。奇数セクタの偶数データバイトD0、D2D4、...D510は、第1フラッシュチップにより受信され、第1フラッシュメモリチップの対応するロケーション732の第1の偶数セクタフィールド734(図7)に記憶される。このことは、書き込みイネーブル信号WE*(波形910)が起動する度に1バイト記憶することにより行われる。偶数セクタの奇数データバイトD1、D3、D5、
...D511は、第2フラッシュチップにより受信され、第2フラッシュメモリチップの対応するロケーション733の第2の偶数セクタフィールド742(図7)に記憶され、このことから各バイトはWE*(波形910)が起動するときに記憶される。時間t10において、第1および第2フラッシュ信号(波形902および904)は、偶数セクタのインターリーブされた偶数および奇数データの送信を完了する。
【0051】
時間t10のすぐ後に、時間t10と時間t11との間において、第1フラッシュ信号(波形902)は、4つのパケットのフィラー情報(FFH、16進法F、等量2進法値「1111」、10進法値「15」)を、第1フラッシュメモリ値へ第1分割バス680(図6)を介して送信し、それに対して第2フラッシュ信号(波形904)は、エラー訂正コード(ECC)を第2フラッシュメモリチップへ、第2分割バス684(図6)を介して送信する。この時間周期中に送信されたフィラー情報FFHは、第1フラッシュメモリチップにより受信され、第1スペアフィールド736(図7)に記憶される。この時間周期中に送信されたエラー訂正コードは、第2フラッシュメモリチップにより受信され、第2フラッシュメモリチップの非揮発性メモリセクション733の第1エラー訂正フィールド744(図7)に記憶される。ECC論理ユニット660(図6)により発されるこのエラー訂正コードは、前述の時間t10とt11との間の時間間隔の間に送信される偶数セクタに関係する。
【0052】
時間t11において、第1および第2フラッシュ信号(波形902および904)は、奇数セクタのインターリーブされた偶数および奇数データバイト(書き込みイネーブル信号WE*(波形910)と同期である)を、ディスプレイアップ1および第2フラッシュメモリチップへ第1分割バス680および第2第1分割バス684(図6)へ、それぞれ同時に送信し始める。偶数データバイトD0、D2、D4、...D510は、第1フラッシュチップにより受信され、第1フラッシュメモリチップの対応するロケーション732の第1の奇数セクタフィールド738(図7)に記憶される。奇数セクタの奇数データバイトD1、D3、D5、...D511は、第2フラッシュチップにより受信され、第2フラッシュメモリチップの対応するロケーション733の第2の奇数セクタフィールド746(図7)に記憶される。時間t12において、第1および第2フラッシュ信号(波形902および904)は、偶数セクタのインターリーブされた偶数および奇数データの送信を完了する。
【0053】
時間t12のすぐ後に、時間t12と時間t13との間において、第1フラッシュ信号(波形902)は、第1フラッシュメモリチップへ情報を全く送信せず、それにより、第1フラッシュメモリチップの記憶ロケーションバイトに対応している値を、FFH(16進法)または2進法の全て1状態において維持する。一方、時間t12と時間t13との間において、第2フラッシュ信号(波形904)が同時に、エラー訂正コード(ECC)を第2フラッシュメモリチップへ、第2分割バス684(図6)を介して送信する。この時間周期中に送信されたフィラー情報FFHは、第1フラッシュメモリチップにより受信され、第2スペアフィールド740(図7)に記憶される。この時間周期中に送信されたエラー訂正コードは、第2フラッシュメモリチップにより受信され、第2フラッシュメモリチップの非揮発性メモリセクション733の第1エラー訂正フィールド748(図7)に記憶される。ECC論理ユニット660(図6)により発されるこのエラー訂正コードは、前述の時間t11とt12との間の時間間隔の間に送信される奇数セクタに関係する。
【0054】
時間t17において、第1および第2フラッシュ信号(波形902および904)はそれぞれ読み出し命令信号70Hを第1および第2第1および第2フラッシュメモリチップへ、第1分割バス680および第2分割バス684をそれぞれ介して送信する。読み出し命令信号70Hが起動すると、WE信号(波形910)はHIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップが読み出し命令信号70Hを読み出すことを可能にする。
【0055】
時間t18において、CLE信号(波形906)が停止し、LOW状態に戻り、それによりフラッシュメモリチップが命令信号を読み出すことを不可能にする。
【0056】
時間t18において、第1および第2フラッシュ信号(波形902および904)はそれぞれステータス命令信号STATUSを第1および第2第1および第2フラッシュメモリチップへ、第1分割バス680および第2分割バス684をそれぞれ介して送信する。読み出し命令信号70Hがアクティブの間、WE信号(波形910)はHIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップが読み出し命令信号70Hを読み出すことを可能にする。
【0057】
図10は、図7に示されるような、メモリバンク506(図6)内の1つのブロックの情報を記憶するメモリ記憶フォーマットを一般化して図示した表図を示し、ここで単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる。示されるように、ROW1と指定されたメモリ行ロケーション728は、図7を参照して上述されたフォーマットに従って、そのロケーションに記憶された偶数セクタS2および奇数セクタS3を有する。ROW2と指定されたメモリ行ロケーション728は、第1および第2フラッシュメモリチップ、670および672の行部分において対応するペアの第1および第2偶数セクタフィールド734および742に記憶された単一の偶数セクタS4を有する。この場合、記憶されるための奇数セクタは全く要求されないため、フィールド736、738、746、748、750、および752は消去されるように示される。
【0058】
図11は、図7に示されるような、メモリバンク506(図6)内の1つのブロックの情報を記憶する、他のメモリ記憶フォーマットを一般化して図示した表図を示し、ここで単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる。上述のように、フィールド764は、第1のビット場所におけるオールド行フラグ、第2ビット場所における使用中/空き行フラグ、および第3ビット場所における欠陥行フラグを記憶するために用いられる、3ビットフィールドである。また上記で説明したように、フィールド766は、第1ビット場所における偶数セクタ移動フラグ、および第2ビット画素における奇数セクタ移動フラグを記憶するために用いられる、2ビットフィールドである。
【0059】
ROW1と指定されたメモリ行ロケーション(そこに記憶されたセクタS2およびS4を有する)は、フィールド766に記憶された値「00」を有し、これは両セクタがメモリバンク内の他のところへ移動したことを示す。ROW2と指定されたメモリ行ロケーション(第1および第2偶数セクタフィールド734および742に記憶された単一の偶数セクタS4を有する)は、フィールド766に記憶された値「01」を有し、これはS4内の情報をアップデートされ終え、そこでメモリバンク内の他のところで常駐することを示す。論理状態の値「0」は一般に、移動したセクタがホストによりアップデートされ終えたことを示す。従って、残りのセクタがホストにアップデートされなかったオールドブロックから移動した場合、これらのセクタがその移動中にオールドデータにより重ね書きされないことが決定され得る。
【0060】
ROW1と指定されたメモリロケーション728は、図7を参照して上述したようなフォーマットに従ってそこへ記憶された偶数セクタS2および奇数セクタS3を有する。ROW2と指定されたメモリロケーション728は、第1および第2フラッシュメモリチップ670および672の行部分において対応するペアの第1および第2偶数セクタフィールド734および742に記憶された単一の偶数セクタS4を有する。この場合、奇数セクタは記憶するために全く要求されないため、フィールドフィールド736、738、746、748、750、および752は消去されるように示される。
【0061】
図12は、本発明による単一書き込み操作中に、2セクタの情報を2つのメモリユニットへ同時に書き込むプロセスを図示するフローチャートである。工程1202において、メモリコントローラ510(図6)は、ホスト504からホストアドレス情報(これは1つ以上のセクタロケーションのアドレスを特定する)を、論理ブロックアドレス(ホスト供給LBA)の形で、あるいはシリンダヘッドセクタ(CHS)情報の形で受信する。ホストアドレス情報がCHS実施形態である場合、コントローラはCHS情報をLBA情報へ変換する。上述のように、セクタはブロック内で組織化されているため、複数のホスト供給LBAは、1つ以上のブロックの複数のセクタに対応する。この情報は、以下でさらに説明するように、マイクロプロセッサ620(図6)により用いられる。
【0062】
マイクロプロセッサ620(図6)は、コード記憶ユニット626(図6)に記憶されている指示を実行し、ここで説明しているプロセスを遂行する。工程1204において、セクタカウント値は、ホストによりアドレスされている現行ブロックのセクタの数に等しくセットされ、ここで例えばセクタロケーションは、メモリバンクのフィールド734および742(図7)またはフィールド738および746(図7)から構成され得る。マイクロプロセッサは、ホスト供給LBA値により特定された各セクタロケーションが、その前にホスト供給LBA値よりアクセスされたか否かを、1206において決定する。この決定は、SPM RAM720(図6)に記憶されたLBA−PBAマップ800の対応する仮想PBAフィールド804(図8A)の内容を読み出すことにより下される。図8Aを参照して説明したように、ホスト供給LBAに対応する仮想PBA値が全て「1」の状態にセットされるならば、対応するLBAはその前にホストによりアクセスされていない。メモリバンク506内のメモリ空間は、一度につき1つのブロック消去される。ブロックの任意のセクタが、そのブロックの最後の消去以降にアクセスされたならば、そのブロックは、「全て1」ではない他の値であるLBA−PBAマップにおいて、対応するマップ行ロケーションのフィールド804(図8A)内の仮想PBA値の利点によりすでにアクセスされたと表示される。
【0063】
ホスト供給LBAにより特定された(現行ブロックの)1つ以上のセクタロケーションが以前にホストによりアクセスされたことが決定された場合、書き込みプロセスは工程1210へ進み、ここでマイクロプロセッサ620(図6)が現行セクタロケーションに対応する移動フラグ760、762(図7)の内、対応する1つをセットし、そして書き込みプロセスは工程1208へ進む。初めの方で述べたように、非揮発性メモリ内において「移動」フラグを維持することは、選択自由であり、本発明の範囲および思想から逸脱することなく、全く消去され得る。移動フラグの欠如において、マイクロプロセッサはセクタのステータスを維持し、これはそれらが他のブロックへ移動したか否かによる。このことは各ブロックについて2つの値のトラックを保持することによりなされる。1つの値はセクタが移動したブロック内におけるスタートセクタロケーションであり、2つめの値は、移動したブロック内におけるセクタの数である。これらの2つの値を伴い、1つのブロックのセクタが他の1つの(あるいは複数の)ブロックへ移動したか否か、ならびにどのセクタが移動したかにより、ステータス情報は再構築される。
【0064】
ホスト供給(host−provided)LBAによって特定された現在のセクタロケーションのいずれもが、以前にアクセスされていないと工程1206で判定された場合、書き込みプロセスは工程1208に直接進む。
【0065】
工程1208では、制御器のスペースマネジャー636(図6)が、非揮発性メモリバンク内に記憶する、ブロック727(図7)のような空き(または未使用の)ブロックを検索し、各空きブロックが特定の仮想PBA値によって識別される。1212ではマイクロプロセッサは、空きブロックが発見されるかどうかを判定し、検出されなければ、制御器510(図6)によって、エラーがホストに報告される、情報記憶を非揮発性メモリバンクにさらに収容できないことを指示する。このことが致命的なシステムエラーを引き起こし得るので、本発明の発明者は、この状況の発生を防ぐのに細心の注意を払った。
【0066】
工程1208で非揮発性メモリ内に空きブロックが検出されるとすぐに、図示した(depicted)プロセスは、工程1214に進む。工程1214では、マイクロプロセッサ620が、スペースマネジャー636(図6)を促し、工程1208で発見された空きブロックに仮想PBA値822(図8B)を割り当てる。この仮想PBA値は、現在のブロックに対応するホスト供給LBAのマスクビット814(図8B)によって識別されたマップ行ロケーション802(図8A)内のLBA−PBAマップ800(図8A)に記憶される。現在のホスト供給LBAのマスクビット814(図8B)は、5オフセットビット分だけホスト供給LBAを右にずらすことによって(または32分割することによって)、獲得される。例えば、ホスト識別LBAが16H(16進法)である場合、仮想PBAを記憶する行は、行0である。また、工程1214では、マイクロプロセッサが、発見された空きブロックに対応する仮想PBAに「オフセット」ビット812(図8B)をアペンドし、実PBA値820(図8B)を獲得する。1216では、マイクロプロセッサは、実PBA値が偶数値であるか奇数値であるかを判定しする。もしくは、1216で実PBA値の代わりにホスト供給LBAがチェックされ、この値が偶数であるか奇数であるかが判定されてもよい。
【0067】
1216で実PBA値が偶数であると判定された場合、プロセスは1218に進み、マイクロプロセッサは、セクタカウントが1より大きいかどうか、即ち、一つ以上のセクタをホストから制御器の内部バッファに転送する制御器が要求した時点で、書き込みされる情報セクタが一つ以上存在するかどうかを判定し、工程は1232に進んで、マイクロプロセッサは、2つの情報セクタが(ホストインターフェース回路610を介して)ホストからデータバッファ614(図6)に転送されたかどうかを判定する。即ち、フラッシュ状態マシン642によって検出されたように、非揮発性メモリに書き込まれる必要のある情報セクタが一つ以上存在する場合、二つの情報セクタが同時に、ホストからデータバッファ614に転送される。データバッファ614は、同じ情報(the same)がメモリバンク506内に記憶されるまで、一時的にセクタ情報を記憶するのに用いられる。好適な実施形態では、各セクタが512バイトのユーザーデータおよび16バイトのオーバーヘッド情報を含む。
【0068】
二つの情報セクタが、まだデータバッファ614に転送されていない場合、マイクロプロセッサは、1232の「NO」分岐ループによって示すように、そのような転送が完了するまで待機する。
【0069】
工程1234では、マイクロプロセッサが、書き込みコマンド、それに続くアドレスおよびデータ情報を発行して、データバッファに一時的に記憶された2つのセクタの、メモリバンク506(図6)に対する書き込みを起動する。工程1234における書き込み動作は、図7および図9を参照して上述した方法および装置によって実行される。
【0070】
2つの情報セクタの書き込みが完了した後、1235で書き込み動作が検証される。工程1234で情報が正しくプログラムされていなかった場合、プロセスは1237に進み、後に詳述するように欠陥マネジメントルーチンが実行される。欠陥マネジメントルーチンの実行の後、工程1236でセクタカウントが2ごとに減少される。1235で書き込み動作が成功であると検証された場合、工程1236が実行され、欠陥マネジメントは必要ない。次に1238で、マイクロプロセッサは、セクタカウントが0に等しいかどうかを判定し、もし等しい場合、書き込みされるセクタはまったく残っていないと想定されて、プロセスは1228に進む。しかし、より多くのセクタが書き込まれなければならない場合、プロセスは工程1240に進み、ホスト供給LBAが2ごとに、次に書き込まれるべきセクタの点(point)まで増加される。
【0071】
工程1240では、マイクロプロセッサは、ブロックの最後のセクタに到達したかどうかを判定する。現在のLBAの「オフセット」値をブロック内のセクタの数と比較することによって、ブロックの境界が判定され、それらの値が等しい場合、ブロック境界に到達している。例えば、好適な実施形態では、ブロックは32のセクタを含んでいるので、現在のLBAの「オフセット」値は、「32」(10進法)と比較される。もしくは、ブロックが32のセクタ以外、例えば16のセクタなどを有すると定義された場合、後者が「オフセット」に対して比較される。非揮発性メモリにおけるブロック境界に到達した場合、書き込みプロセスは、現在のLBA値に対応する仮想PBA値が、すべて「1」である条件に対してチェックされる工程1206から繰り返され、以下同様に進められる。工程1242でブロック境界に到達しなかった場合、書き込みプロセスは工程1218から繰り返される。
【0072】
工程1218で、セクタカウントが1より大きくないと判定された場合、マイクロプロセッサは1220に進み、データバッファ614(図6)がホストから少なくとも一つの情報セクタを受け取ったかどうかを判定する。受け取っていない場合、マイクロプロセッサは、ホストからデータバッファ614に一つの情報セクタが転送されるまで待機する。一つの情報セクタを受け取ると、図10および図11を参照して上述した方法および装置によって、工程1222で次のセクタの書き込みが起動される。情報セクタの書き込みが完了すれば、1223で書き込み動作が検証される。工程1222で情報がセクタに正しくプログラムされていなかった場合、プロセスは工程1225に進み、後に詳述するように欠陥マネジメントルーチンが実行される。欠陥マネジメントルーチンが実行された後、工程1224では、セクタカウントが1ごとに減少される。書き込み動作が正しく実行されたと、1223では判定された場合、プロセスは工程1224に進み、欠陥マネジメントルーチンは実行されない。1226では、マイクロプロセッサは、セクタカウントが零に等しいかどうかを判定し、等しくない場合、ホスト供給LBAは1ごとに増加され、書き込みプロセスは工程1242に進んで、マイクロプロセッサは上記に説明したように、ブロック境界をチェックする。
【0073】
工程1226で、工程1238と同様に、書き込まれるセクタがまったく残っていない、即ちセクタカウントが零であると判定される場合、図示したプロセスは1228に進み、マイクロプロセッサは、移動フラグが立てられたかどうかを判定する。上述したように、移動フラグは、ホストによってLBAが再アクセスされたと1206で判定される場合、工程1210で立てられる。
【0074】
移動フラグが立てられていないと1228で判定される場合、書き込みプロセスは終了する。しかしながら、移動フラグが立てられたことが1228で判定されれば、ブロックは更新される。即ち、アクセスされていない現在のブロックのこれらのセクタは、工程1208で発見された空きブロックに、工程1214で割り当てられた仮想PBA値によって識別されたメモリバンク506のブロックの対応するセクタロケーションに移動される。このことは、おそらく例示によって最もよく理解される。
【0075】
考察の目的で、LBA1、2、3、4、5、および6によって識別されたセクタが既に書き込まれて、ホストは現在LBA3、4、および5によって識別されたセクタにデータを書き込むよう制御器に命令している、と想定されたい。さらに、LBA1〜6が書き込まれた最初の書き込みプロセスの間、それらは仮想PBA値「3」によって識別されたメモリバンク506(図6)のブロックロケーションに記憶されており、LBAロケーション3、4、および5は現在(第2の書き込みプロセスの間)仮想PBA値「8」によって識別されたメモリバンクのブロックロケーションに書き込まれているところである、と想定されたい。 ホスト供給LBA3、4、および5により識別されたロケーションの書き込みの間、工程1206で、マイクロプロセッサは、これらのブロックロケーションが再アクセスされていることを判定し、1210で移動フラグが立てられる。さらに、工程1230では、ホスト供給LBA3、4、および5により識別されたセクタが仮想PBA「8」によって識別されたブロックの対応するセクタに書き込まれた後、書き込み動作中に再アクセスされなかった、仮想PBA「3」によって識別されたブロックのセクタは、仮想PBA「3」によって識別されたブロックから仮想PBA「8」によって識別されたブロックの対応するセクタロケーションに移動され、その後、仮想PBA「3」によって識別されたブロックは消去される。この例では、セクタ0および7〜31(ブロックに32のセクタが存在すると想定して)など、仮想PBA「3」によって識別されたブロックの残りのセクタが、それらが存在するブロックの最後の消去以来アクセスされておらず、従って有効なセクタ情報をまったく含んでいない、と想定している。さもなくば、それらのセクタが以前にアクセスされている場合に、それらのセクタも仮想PBAロケーション8に移動されている。
【0076】
工程1230は、多くの方法で実施し得る。本発明の発明者等は、工程1230の移動動作を実行するために、代わりに使用し得る様々な方法および装置を開示している。特許出願では、本明細書に参照として援用する開示、1997年10月7日に申請され、「Moving Sequential Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題された第08/946,331号、および1997年3月31日に申請され「Moving Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題された第08/831,266号がある。
【0077】
図12aは、工程1237および工程1225(図12)で欠陥マネジメントルーチンが実行された場合に、マイクロプロセッサにより実施される工程を示す。ブロックマネジメントルーチンは、書き込み動作がうまく検証されなかったときに実施され、プログラムされたブロックは、何らかの形で欠陥を有し、非揮発性メモリの別の領域、即ち別のブロックがプログラミングのために発見される必要がある。
【0078】
工程1600では、うまくプログラムされなかったブロックに、「欠陥」フラグ756(図7)が立てられることにより、「欠陥有り」と標識される。工程1602では、制御器内のスペースマネジャーが、空きブロックを発見するよう命令を受ける。工程1604では、工程1234および1222(図12)にてプログラムされた情報、即ち「欠陥有り」と標識されたブロックが、工程1602で発見された空きブロック内の対応するセクタロケーションにプログラムされる。
【0079】
工程1606では、が以前にうまく書き込まれた任意のセクタ情報の存在に関して「欠陥有り」と識別されたブロックをチェックする。そのようなセクタが存在する場合、工程1608では、これらの以前にプログラムされたセクタは、図12の動作における追加ブロック情報として、空きブロックに移動される。
【0080】
図13は、本発明の別なる実施形態による、32のセクタを含む、メモリバンク506内の情報ブロックを記憶するためのメモリ記憶形式を一般的に示した表である。この実施形態では、偶数セクタが、2つのメモリユニットの第1に記憶する第1行ロケーションに記憶され、奇数セクタが、2つのメモリユニットの第2に記憶する第2行ロケーションに記憶される。図示した実施形態では、メモリバンク506は、BLCK0、BLCK1、BLCK(M−1)と指定された、それぞれが物理ブロックアドレス(PBA)を有する、複数のMブロック1302を含む。ブロック1302のそれぞれは、複数のNメモリ行ロケーション1304を含み、好適な実施形態ではN=16である。メモリバンク506の各ブロック1302は、第1のフラッシュメモリチップ670の第1のサブブロック1306、および第2のフラッシュメモリチップ672の対応する第2のサブブロック1308を含み、対応するサブブロックは同じ仮想PBAによって識別される。各メモリ行1304は、第1の行部分1310および対応する第2の行部分1312を含む。図示した実施形態では、各第1および第2の行部分1310、1312が、512バイトのデータ情報のための記憶に加え、エラー修正情報(ECC情報)およびフラグ情報のための記憶スペースを含む。
【0081】
第1の行部分1310のそれぞれは、偶数の情報セクタ(S0、S2、S4…)を記憶するための偶数セクタフィールド1314、およびフィールド1314に記憶される偶数セクタに対応するエラー修正情報を記憶するための偶数セクタエラー修正フィールド1316を含む。第2の行部分1312のそれぞれは、奇数情報セクタ(S1、S3、S5…)を記憶するための奇数セクタフィールド1318、フィールド1318に記憶される奇数セクタに対応するエラー修正情報を記憶するための奇数セクタエラー修正フィールド1320を含む。ブロックアドレスフィールド1322、およびフラグフィールド1324を含む。本発明では、奇数セクタを記憶するために、代わりとしてフィールド1314を用い得、偶数セクタを記憶するために、代わりとしてフィールド1318を使用し得ることが理解される。また、ブロックアドレスおよびフラグを記憶するために、替わりとして第1の行部分1310を使用し得る。
【0082】
フラグフィールド1324は、以下さらに説明するアクセス動作中において、制御器510(図6)によって使用されるフラグ情報を記憶するために使用される。ブロックアドレスフィールド1322は、BLCK0に対する「0」のように、ブロック1302に永久に割り当てられるブロックアドレスを記憶するために使用される。ブロックごとのブロックアドレスフィールドでは、単一ブロックアドレスエントリのみが要求される。好適な実施形態では、ブロックアドレスエントリは、最終行1304のブロックアドレスフィールド1322、即ち行15に入れられる。
【0083】
この代わりの実施形態では、第1および第2のスプリットバス680、684(図6)が、偶数および奇数セクタの受信データバイトにそれぞれ結合された配線を含む。制御器510(図6)は、第1および第2のスプリットバス680、684(図6)それぞれを同時に介して、偶数セクタおよび奇数セクタのバイトの同時書き込みによって、2つのセクタを同時に書き込む。また、スプリットバス680、684(図6)は、フラッシュメモリチップと、フラッシュ状態マシン642と、メモリ制御器510のECC論理ユニット660との間のECC情報の転送、およびフラッシュ状態マシン642からフラッシュメモリチップへのアドレス情報の転送を提供する。
【0084】
図14は、図6のメモリシステムの消去動作のための制御信号、アドレス信号、およびデータ信号のタイミングを示すタイミング図である。この図は、第1のスプリットバス680(図6)を介して、フラッシュ状態マシン642(図6)から第1のフラッシュメモリチップへの、時間多重化されたコマンド、アドレス、およびデータ情報を転送する第1のフラッシュ信号を示す波形902と、第2のスプリットバス684(図6)を介して、フラッシュ状態マシンから第2のフラッシュメモリチップへ時間多重化されたコマンド、アドレス、およびデータ信号を転送する第2のフラッシュ信号を示す波形904と、同時線(time line)1450と、複数の制御信号波形とを含む。制御信号波形は、すべて上述したが、制御配線イネーブル(CLE)信号を示す波形906と、アドレス配線イネーブル(ALE)信号を示す波形908と、書き込みイネーブル(WE)信号を示す波形910と、読み出しイネーブル(RE)信号を示す波形912と、フラッシュチップイネーブル(FCE*)を示す波形914と、フラッシュレディ/ビジー(ready/busy)信号,(FRDY_BSY*信号)を示す波形916とを含む。
【0085】
消去動作は、FCE*信号(波形914)が、HIGH状態からLOW状態に遷移する時刻E0において開始し、これにより、第1および第2のフラッシュメモリチップが、コマンド、アドレス、およびデータ信号の受信を開始することを可能にする。続く時刻E1では、CLE信号(波形906)が起動され、LOW状態からHIGH状態に遷移して、これにより、第1および第2のフラッシュメモリチップが制御信号を読み出すことを可能にする。時刻E2では、第1および第2のフラッシュ信号(波形902および904)それぞれが制御信号を発信する。第1のフラッシュ信号(波形902)は、第1のスプリットバス680(図6)を介して、第1のフラッシュメモリチップに「消去セット」コマンド60Hを発信し、第2のフラッシュ信号(波形904)は、第2のスプリットバス684(図6)を介して、第2のフラッシュメモリチップに読み出し状態コマンド信号70Hを発信する。時刻E3では、コマンド信号60Hおよび70Hはアクティブであるが、WE信号(波形910)はHIGH状態からLOW状態に遷移し、第1および第2のフラッシュメモリチップがコマンド信号60Hおよび70Hを読み出すことを可能にする。時刻E4では、CLE信号(波形906)が非アクティブ化されて、再びLOW状態に遷移し、これにより、フラッシュメモリチップがコマンド信号を読み出すことを不可能にする。
【0086】
また、時刻E4では、ALE信号(波形908)が起動され、LOW状態からHIGH状態に遷移して、これにより、第1および第2のフラッシュメモリチップがアドレス情報のパケットを読み出すことを可能にする。時刻E5およびE6では、第1のフラッシュ信号(波形902)が、第1および第2のアドレスパケットADD0およびADD1をそれそぞれ、第1のフラッシュメモリチップに発信し、第1および第2のアドレスパケットADD0およびADD1は、メモリバンクの第1のフラッシュメモリチップ670のサブブロック730(図7)を指定する。時刻E7では、ALE信号(波形908)が非アクティブ化される。時刻E3と時刻E4との間、および時刻E4とE5との間の期間において、WE信号(波形910)は、LOW状態に遷移して、フラッシュメモリチップがアドレスパケットを読み出すことを可能にする。
【0087】
時刻E8において、CLE信号(波形906)が、再び起動され、第1及び第2のメモリチップがコマンド信号を読み出すことを可能にする。時刻E9では、第1のフラッシュ信号(波形902)が、第1のフラッシュメモリチップに対する「消去確認コマンド」であるDOHを発信する。このコマンドは、CLE信号によってサンプリングされ、実際にフラッシュチップ内で消去動作を起動し、その後、第1のフラッシュメモリチップ670のアドレスされたサブブロック730(図7)の各メモリ行部分のデータフィールド734および738の内容が消去される。即ち「すべて1」の状態に設定される。時刻E10では、FRDY−BSY*信号(波形912)がHIGH状態からLOW状態に遷移し、少なくとも一つのフラッシュメモリチップがビジーであることをフラッシュ状態マシン642(図6)に指示する。
【0088】
時刻E11において、CLE信号(波形906)が起動され、第1および第2のフラッシュメモリチップがコマンド信号を読み出すことを可能にする。時刻E12において、第1および第2のフラッシュ信号(波形902および904)は、それぞれコマンド信号を発信する。第1のフラッシュ信号(波形902)は、第1のスプリットバス680(図6)を介して、第1のフラッシュメモリチップに読み出しコマンド信号70Hを発信し、第2のフラッシュ信号(波形904)は、第2のスプリットバス684(図6)を介して、第2のフラッシュメモリチップに消去コマンド信号60Hを発信する。時刻13では、コマンド信号70Hおよび60Hはアクティブであるが、WE信号(波形910)は、LOW状態に遷移し、第1および第2のフラッシュメモリチップがコマンド信号60Hおよび70Hを読み出すことを可能にする。時刻E14では、CLE信号(波形906)が非アクティブ化され、フラッシュメモリチップがコマンド信号を読み出すことを不可能にし、ALE信号(波形908)がアクティブ化されて、これにより、第1および第2のフラッシュメモリチップがアドレス情報のパケットを読み出すことを可能にする。時刻E15およびE16では、第2のフラッシュ信号(波形904)が、第1および第2のアドレスパケットADD0およびADD1をそれぞれ第2のフラッシュメモリチップに発信し、第1および第2のアドレスパケットADD0およびADD1は、メモリバンクの第2のフラッシュメモリチップ672のサブブロック731(図7)を指定する。時刻E17では、ALE信号(波形908)が非アクティブ化される。時刻E13とE14、およびE14とE15との間の期間において、WE信号(波形910)は、フラッシュメモリチップがアドレスパケットを読み出すことを可能にする。時刻E18では、CLE信号(波形906)が、再びアクティブ化され、第1および第2のメモリチップがコマンド信号を読み出すことを可能にする。時刻19では、第1のフラッシュ信号(波形902)が、第1のフラッシュメモリに対してDOHを発信し、指定されたブロックの各メモリ行部分732のデータフィールド734および738の内容を消去して、これにより、「すべて1」の状態に設定する。
【0089】
要約すると、メモリ制御器は、時刻E0とE11との間の期間TEB1において、第1のフラッシュメモリチップ670のアドレスされたサブブロック730(図7)を消去する。また、時刻E11と時刻E20との間の期間TEB2において、第2のフラッシュメモリチップ672の対応するアドレスされたサブブロック731(図7)を消去する。時刻E21では、FRDY−BSY*信号(波形916)が、LOW状態からHIGH状態に遷移し、両方のフラッシュメモリチップに対する消去動作が終了したことをフラッシュ状態マシン642(図6)に指示する。
【0090】
時刻E21の直後に、第1および第2のフラッシュ信号(波形902および904)の各々は、読み出し状態コマンド信号70Hを第1および第2のフラッシュメモリチップにそれぞれ発信する。読み出しコマンド信号70Hはアクティブであるが、WE信号(波形910)はLOW状態に遷移し、これにより、第1および第2のフラッシュメモリチップが読み出しコマンド信号70Hを読み出す。時刻E22では、第1および第2のフラッシュ信号(波形902および904)の両方が、制御器に状態データを転送する。
【0091】
こうして、上述のようにフラッシュメモリチップの、2つの対応するアドレスされたサブブロック上で、消去動作が実行された後、両方のフラッシュメモリチップの状態が同時に読み出される。
【0092】
メモリチップのサブブロック730、731のいずれかがエラーを有する場合、チップ内のブロック727全体(図7)が、第2のフラッシュメモリチップ672の欠陥フラグ756の内容を設定することにより、欠陥有りと標識される。
【0093】
図15は、本発明によって、第1のメモリユニット内に記憶される第1のサブブロックおよび第2のメモリユニット内に記憶される第2のサブブロックを含むブロックを消去するプロセスを示すフローチャートである。マイクロプロセッサ620(図6)は、符号(code)RAM626(図6)に記憶されている命令を実行し、図示したプロセスを実
施する。
【0094】
工程1502では、マイクロプロセッサ620(図6)が、消去されるブロックアドレスをロードする。工程1504では、マイクロプロセッサは1400(図14)のタイミング図に応じて、上述の消去動作を起動する。1506では、マイクロプロセッサは、LOW状態からHIGH状態に遷移するフラッシュレディ/ビジー(FRDY_BSY*)信号(図14の波形916)を読み出すことによって消去動作が終了したかどうかを判定し、両方のフラッシュメモリチップにおいて消去動作が終了したことを、フラッシュ状態マシン642(図6)に指示する。1508では、マイクロプロセッサはがフラッシュチップ670、672(図6)の状態を読み出す。1508では、マイクロプロセッサは、工程1504で実施された消去動作が、フラッシュチップ670、672(図6)の両方において成功であったかどうかを判定し、成功であった場合、プロセスは終了する。工程1504で実施された消去動作が、両方のフラッシュチップにおいて成功でなかったと判定された場合、マイクロプロセッサはフラッシュチップ670、672の両方を欠陥であると標識する。
【0095】
本発明を特定の実施形態により説明してきたが、当業者には変更および修正が自明になると予想される。従って以下の請求の範囲が、本発明の精神と範囲に納まるそのような変更および修正のすべてを包含することを意図している。
【背景技術】
【0001】
(発明の背景)
(関連出願との相互参照)
本発明は、1997年10月7日に出願された「Moving Sequential Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題する本発明者らの先行出願である米国特許第08/946,331号の一部継続出願であり、これは1997年3月31日に出願された「Moving Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題する米国特許第08/831,266号の一部継続出願である。
【0002】
(発明の分野)
本発明は、ハードディスク記憶または従来のフィルムに置き換えて用いる、非揮発性メモリを大容量記憶として採用する、パーソナルコンピュータおよびデジタルカメラのようなデジタルシステムの分野に関する。より詳細には、本発明は、そのようなデジタルシステムの性能を、デジタル情報が非揮発性メモリから読み出され、そこへ書き込まれる速度を上げることにより高めるアーキテクチャに関する。
【0003】
(従来技術の説明)
フラッシュまたはEEPROMメモリのような、より高い容量のソリッドステート記憶デバイス(揮発性メモリ)の登場に伴い、多くのデジタルシステムは従来の大容量記憶デバイスをフラッシュおよび/またはEEPROMメモリデバイスに置き換えてきた。例えパーソナルコンピュータ(PC)は、従来のハードディスクの代わりに大容量記憶を目的としてソリッドステート記憶装置を用いる。デジタルカメラは、従来のフィルムと置き換えて、カードにおいてソリッドステート記憶デバイスを採用する。
【0004】
図1は、コントローラ12を含む従来技術のメモリシステム10を示し、このコントローラは通常半導体(または集積回路)デバイスであり、PCまたはデジタルカメラであり得るホスト14に結合する。コントローラ12はさらに、非揮発性メモリバンク16に結合する。ホスト14は、複数のセクタに組織化された情報をメモリバンク16へ書き込み、そして読み出す。このメモリバンク16は、第1非揮発性メモリチップ18および第2非揮発性メモリチップ20を含む。チップ18は、8ビットラインを含む第1バス28を介してコントローラ12のポート26に接続されたポート24を有するI/Oレジスタ22、およびI/Oレジスタ22と結合した記憶エリア30を含む。チップ20は、8ビットラインを含む第2バス38を介してコントローラ12のポート36に接続されたポート34を有するI/Oレジスタ32、およびI/Oレジスタ32と結合した記憶エリア40を含む。第1バス28および第2バス38は、コントローラとメモリチップ18および20との間で、データ、アドレスおよび命令信号を送信するために使用される。情報の16ビットの内、最下位の8ビット(LSB)は第1バス28を介してチップ18へ供給され、最上位の8ビット(MSB)は第2バス38を介してチップ20へ供給される。
【0005】
メモリバンク16は、それぞれが複数のメモリ行ロケーションを含んでいる複数のブロックロケーション42を含む。メモリバンクの各ブロックロケーションは、第1非揮発性メモリチップに位置する第1サブブロック44、および第2非揮発性メモリチップに位置する対応する第2サブブロック46から構成される。各メモリ行ロケーションは、第1の行ロケーション48および対応する第2の行ロケーション50を含む。示されている実施形態では、第1行のロケーション48および第2の行ロケーション50のそれぞれは、256バイトのデータ情報用の記憶に加え、オーバーヘッド情報用に追加の8バイトの記憶空間を含む。セクタは、512バイトのユーザデータおよび16バイトの非ユーザデータ(後者は一般にオーバーヘッド情報と呼ばれる)を含むが、256バイトのユーザデータおよび8バイトのセクタのオーバーヘッド情報は、チップ18の第1の行部分48において維持され得、残りの256バイトのユーザデータおよび残りの8バイトの同じセクタのオーバーヘッド情報は、チップ20の第2の行部分50において維持され得る。従って、セクタの半分はチップ18のメモリ行ロケーション48に記憶され、セクタの他の半分はチップ20のメモリ行ロケーション50に記憶される。加えて、記憶されたセクタのオーバーヘッド情報のそれぞれの半分は、チップ18により維持され、他の半分はチップ20により維持される。
【0006】
一般に、フラッシュメモリチップ18および20へデータを読み出し、そして書き込むことは、時間を消費する。フラッシュメモリチップへデータを書き込むことは、特に時間消費である。なぜなら、データはI/Oレジスタ22および32にラッチされなければならず、これらは第1および第2バスを介して一度に1バイトずつロードされてから、I/Oレジスタ22および32からフラッシュメモリチップ18および20のメモリセルへそれぞれ送信されるためである。データをI/Oレジスタからメモリへ、データのバイト毎に送信するために必要とされる時間は、I/Oレジスタのサイズおよびフラッシュメモリチップのサイズに比例する。
【0007】
書き込み操作中、コントローラ12は単一セクタの情報を、以下のようにメモリバンク16へ書き込む。(1)書き込み命令信号をチップ18および20のそれぞれに、バス28および38を介して同時に送信し、(2)対応するチップのサブブロック44および46を特定するアドレスデータを、チップ18および20へバス28および38を介して同時に送信し、(3)1バイトのユーザデータをチップ18および20のそれぞれへ、対応するサブブロック44および46内に記憶するために、バス28および38を介して同時に送信する。このような従来技術システムに伴う問題点は、ホスト14により発せられる書き込み命令中に、2バイトの情報が一度に書き込み、そして読み出されることに対して、1つのセクタの情報しかメモリバンク16により一度に収容されないことである。
【0008】
別の従来技術デジタルシステム60を図2に示す。このシステムは、ホスト64に結合したコントローラ62、およびセクタで組織化された情報を非揮発性メモリチップ68へ記憶し、そして読み出すための非揮発性メモリチップ68を含み、このメモリチップ68はメモリバンク66内に含まれる。ホストからの命令によりコントローラは1つのチップに1つのセクタ全体を記憶するが、より多くのチップ(図示せず)がメモリバンク内に含まれ得る。ブロック0のようなブロックは、16個のセクタS0、S1、...、S15を含む。またチップ68は、512バイトに加え16バイト、総計528バイトの記憶空間を含むI/Oレジスタ70をも含む。コントローラは、ホスト64とメモリ66との間で、一度に1バイトの情報を送信する。512バイトのユーザデータに加え16バイトのオーバーヘッド情報を含む1つのセクタは、書き込み操作中にI/Oレジスタ内に一時的に記憶されてから、メモリデバイス内におけるブロックの1つに、そこで記憶されるために送信される。読み出し操作中、1つのセクタの情報はメモリデバイスのブロックの1つから読み出されてから、コントローラへの送信のためにI/Oレジスタ内に記憶される。図2の従来技術のアーキテクチャに伴う重要な問題点は、総計528バイトがI/Oレジ
スタ36に記憶され得ることに対し、1バイトのセクタ情報しかコントローラとメモリバンクとの間で一度に送信され得ず、それによりシステムの全体的な性能が妨げられることである。
【0009】
図1および2の従来技術の両システムは、1セクタの情報を識別するホスト供給論理ブロックアドレス(LBA)を、メモリバンク内におけるセクタのロケーションを識別する物理ブロックアドレス(PBA)に変換する、LBA−PBAマッピング情報を維持する。このマッピング情報は、コントローラの外に維持され得るが、通常コントローラ内において揮発メモリ(例えばRAM)に含まれる。
【0010】
図3は、行および列により規定されるLBA−PBAマップ300の例を図示した表図を示す。各行302は、16で除算されたホストから受信したLBAの値に相当する値により独特に識別され、アドレスされている。図3の行の数は、16進法を用いて示される。よって、例えば行10H(16進法において)は、10進法における16に相当するアドレス値である。マップ300の各行302は、PBA値を維持するメモリロケーションフィールド304、「オールド」フラグフィールド306、「使用中」フラグフィールド308、および「欠陥」フラグフィールド310を含む。フラグフィールド(図1および2)は、メモリバンク内において維持される1つのブロックの情報のステータスに関する情報を供給する。仮想PBAフィールド304は、メモリバンク内におけるブロックのロケーションについての情報を記憶する。
【0011】
図4は、メモリバンク内に維持される1つのセクタのデータを記憶するための例示的なフォーマットを図示した表図である。仮想PBAフィールド304(図3)は、各ブロックが複数のセクタ402を有するブロック400の情報のロケーションについての情報を供給する。各セクタ402はユーザデータフィールド404、ECCフィールド406、「オールド」フラグフィールド408、「使用中」フラグフィールド410、および「欠陥」フラグフィールド412で構成される。
【0012】
本明細書中で述べられる種類の従来技術のシステムに付随するさらなる問題点は、表300(図3)が多大な「real estate」を占め、これが一般にRAM技術(これは、それ自体に経費がかかり、そして通常コントローラ内において保持される)で構成されることから、その製造に伴いかなりの経費がかかる。さらに、表300の各行が1つのブロックの情報に付随するように、ブロックの情報の数が大きければ大きいほど、表のサイズも大きくなるため(これはまたコントローラを製造する際に追加の経費となるが)、このデジタルシステムはこのような表を採用する。
【0013】
ここで必要とされるものは、読み出しおよび書き込み操作を行う際にかかる時間を短縮するために、非揮発性メモリをセクタフォーマットで組織化されたデジタル情報の記憶用に採用し、それによりシステムの全体的な性能を上げ、同時にこのデジタルシステムの製造経費を削減する、デジタルシステムである。
【発明の概要】
【課題を解決するための手段】
【0014】
(発明の要旨)
本発明の目的は、非揮発性メモリバンクへ情報を読み出し、書き込むことに伴う時間を短縮することにより、1つ以上の非揮発性メモリデバイス(フラッシュおよび/またはEEPROMチップ)を含む非揮発性メモリバンクを操作するホストに結合したコントローラを有するデジタルシステムの性能を高めることである。
【0015】
本発明の別の目的は、本明細書中で述べるように、ホストから発される単一の書き込み命令中に、少なくとも2つのセクタの情報を、少なくとも2つの非揮発性メモリ半導体デバイスへ書き込むことにより、複数のセクタの情報を記憶する際にかかる時間を短縮する
ことである。
【0016】
本発明の別の目的は、本明細書中で述べるように、ホストから発される単一の読み出し命令中に、少なくとも2つのセクタの情報を、少なくとも2つの非揮発性メモリ半導体デバイスへ読み出すことにより、複数のセクタの情報を記憶する際にかかる時間を短縮する
ことである。
【0017】
本発明のさらなる目的は、2つの非揮発性メモリ半導体デバイスの1つにおける2つのセクタの情報に付随したオーバーヘッド情報を記憶することである。
【0018】
本発明のまた別の目的は、2つの非揮発性メモリデバイス内において記憶された、2バイトの1つのセクタの情報に同時にアクセスし、それにより本発明を少なくとも2桁で採用するシステムの性能の速度を高めることである。
【0019】
本発明のまた別の目的は、第1セクタの情報の1バイトおよび第2セクタの情報の1バイトに、2つの非揮発性メモリデバイス内において同時にアクセスし、それにより本発明を採用するシステムの性能の速度を高めることである。
【0020】
本発明のさらなる目的は、複数のホスト供給セクタアドレスから非揮発性メモリデバイス内におけるブロックのアドレス間の変換を維持する非揮発性メモリ表(またはマップ)のサイズを縮小し、それによりデバイスシステムの製造経費を削減することである。
【0021】
簡潔に言うと、本発明は、ホストに連結したコントローラ半導体デバイス、および複数の非揮発性メモリデバイスを含む非揮発性メモリバンクを有するデバイスシステムを含む。コントローラは、セクタで組織化された情報(各セクタはユーザデータ部分およびオーバーヘッド部分を含む)をホストと非揮発性メモリバンクとの間で送信し、同じセクタに関する2バイトの情報を、2つの非揮発性メモリデバイス内において同時に記憶し、読み出す。各非揮発性メモリデバイスは、メモリロケーションの行により規定され、ここで少なくとも2つの半導体デバイスの対応する行は、2つのセクタの情報を維持し、そこに非揮発性メモリデバイスのメモリ行の内、1つに維持される2つのセクタに関するオーバーヘッド情報を伴う。32あるセクタの情報のそれぞれは、2つのメモリデバイス(ここで偶数および奇数バイトの1つのセクタは、2つの非揮発性メモリデバイスから同時に読み出され、書き込まれる)間で展開する1つのブロックの情報を備えて仮想物理ブロックアドレスにより識別されたブロックを規定する。別の実施形態において、コントローラは単一の非揮発性メモリデバイス内においてセクタ全体の情報を記憶し、2つの非揮発性メモリデバイスにおいて少なくとも2つのセクタの対応するバイトを処理することにより、1つのセクタの情報を同時に読み出し、または書き込む。
【0022】
本発明のこれらの、また他の目的および利点は、いくつかの図面において示す以下の好ましい実施形態の詳細な説明を読み終えた後、当業者には疑いなく明らかとなる。
【0023】
(図面)
図1は、単一のセクタの情報が、書き込み操作中に一度に2バイトずつ、2つのメモリユニットを含むメモリバンクへ書き込まれ、各メモリユニットは単一の行ロケーションにおける256バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図であり、 図2は、単一のセクタの情報が、書き込み操作中に一度に1バイトずつ、少なくとも1つのメモリユニットを含むメモリバンクへ書き込まれ、メモリユニットは単一の行ロケーションにおける512バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図であり、 図3は、セクタの情報を識別するホスト供給論理ブロックアドレス(LBA)から、メモリバンク内においてセクタのロケーションを識別する物理ブロックアドレス(PBA)へ変換する例示的なマップを示す表図であり、
図4は、メモリバンクにおいて維持されたセクタのデータを記憶するための例示的なフォーマットを示す表図であり、
図5は、2セクタの情報が、単一の書き込み操作中に一度に2バイトずつ、少なくとも2つのメモリユニットを含むメモリバンクへ書き込まれ、各ユニットは単一の行ロケーションにおける512バイトのユーザデータを記憶する容量を有する、本発明によるメモリシステムの一般化ブロック図であり、
図6は、図5のメモリシステムの詳細なブロック図であり、
図7は、1つの偶数セクタおよび1つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第1のメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第2のメモリユニットに位置する第2の行ロケーションに記憶される、2つの非揮発性メモリユニットを含むメモリバンクにおいて、1つのブロックの情報(1ブロックは32セクタ含む)を記憶するメモリ記憶フォーマットを一般化して示す表図であり、
図8Aは、本発明に従って使用するための例示的なLBA−PBAマップの組織を示す表図であり、
図8Bは、本発明によるセクタの情報と付随したブロックの情報とを識別するアドレス情報のフォーマットを示すブロック図であり、
図9は、単一の書き込み操作中に、2セクタの情報が図7に示すメモリ記憶フォーマットを有するメモリバンクへ同時に読み出される、図6のメモリシステムにより行われる書き込み操作のための制御、アドレス、およびデータ信号のタイミングを示すタイミング図
であり、
図10は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図7に示すようなメモリ記憶フォーマットを有するメモリバンクを示す表図であり、
図11は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図7に示すような他のメモリ記憶フォーマットを有するメモリバンクを示す表図であり、
図12は、本発明による単一の書き込み操作中に、2セクタの情報を2つのメモリユニットに同時に書き込むプロセスを示すフローチャートであり、
図12aは、図12の欠陥管理ルーチン(defect management routine)を行うにあたって行われる工程のフローチャートである。
【0024】
図13は、1つの偶数セクタおよび1つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第1の2つのメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第2の2つのメモリユニットに位置する第2の行ロケーションに記憶される、2つの非揮発性メモリユニットを含むメモリバンクにおいて、1つのブロックの情報(1ブロックは32セクタ含む)を記憶
するメモリ記憶フォーマットを一般化して示す表図であり、
図14は、本発明の原理に従って、メモリバンクのブロックを消去するプロセスのための制御、アドレスおよびデータ信号のタイミングを示すタイミング図であり、
図15は、本発明に従って、第1メモリユニット内に記憶された第1サブブロック、および第2メモリユニット内に記憶された第2サブブロックを含むブロックを消去するプロセスを示すフローチャートである。
【図面の簡単な説明】
【0025】
【図1】図1は、単一のセクタの情報が、書き込み操作中に一度に2バイトずつ、2つのメモリユニットを含むメモリバンクへ書き込まれ、各メモリユニットは単一の行ロケーションにおける256バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図である。
【図2】図2は、単一のセクタの情報が、書き込み操作中に一度に1バイトずつ、少なくとも1つのメモリユニットを含むメモリバンクへ書き込まれ、メモリユニットは単一の行ロケーションにおける512バイトのユーザデータを記憶する容量を有する、従来技術のメモリシステムのブロック図である。
【図3】図3は、セクタの情報を識別するホスト供給論理ブロックアドレス(LBA)から、メモリバンク内においてセクタのロケーションを識別する物理ブロックアドレス(PBA)へ変換する例示的なマップを示す表図である。
【図4】図4は、メモリバンクにおいて維持されたセクタのデータを記憶するための例示的なフォーマットを示す表図である。
【図5】図5は、2セクタの情報が、単一の書き込み操作中に一度に2バイトずつ、少なくとも2つのメモリユニットを含むメモリバンクへ書き込まれ、各ユニットは単一の行ロケーションにおける512バイトのユーザデータを記憶する容量を有する、本発明によるメモリシステムの一般化ブロック図である。
【図6】図6は、図5のメモリシステムの詳細なブロック図である。
【図7】図7は、1つの偶数セクタおよび1つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第1のメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第2のメモリユニットに位置する第2の行ロケーションに記憶される、2つの非揮発性メモリユニットを含むメモリバンクにおいて、1つのブロックの情報(1ブロックは32セクタ含む)を記憶するメモリ記憶フォーマットを一般化して示す表図である。
【図8A】図8Aは、本発明に従って使用するための例示的なLBA−PBAマップの組織を示す表図である。
【図8B】図8Bは、本発明によるセクタの情報と付随したブロックの情報とを識別するアドレス情報のフォーマットを示すブロック図である。
【図9】図9は、単一の書き込み操作中に、2セクタの情報が図7に示すメモリ記憶フォーマットを有するメモリバンクへ同時に読み出される、図6のメモリシステムにより行われる書き込み操作のための制御、アドレス、およびデータ信号のタイミングを示すタイミング図である。
【図10】図10は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図7に示すようなメモリ記憶フォーマットを有するメモリバンクを示す表図である。
【図11】図11は、単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる、図7に示すような他のメモリ記憶フォーマットを有するメモリバンクを示す表図である。
【図12】図12は、本発明による単一の書き込み操作中に、2セクタの情報を2つのメモリユニットに同時に書き込むプロセスを示すフローチャートである。
【図12a】図12aは、図12の欠陥管理ルーチン(defect management routine)を行うにあたって行われる工程のフローチャートである。
【図13】図13は、1つの偶数セクタおよび1つの奇数セクタが、単一のメモリ行ロケーションにおいて記憶され、そして両セクタの偶数のデータバイトは第1の2つのメモリユニットに位置する行部分に記憶され、両セクタの奇数のデータバイトは第2の2つのメモリユニットに位置する第2の行ロケーションに記憶される、2つの非揮発性メモリユニットを含むメモリバンクにおいて、1つのブロックの情報(1ブロックは32セクタ含む)を記憶するメモリ記憶フォーマットを一般化して示す表図である。
【図14】図14は、本発明の原理に従って、メモリバンクのブロックを消去するプロセスのための制御、アドレスおよびデータ信号のタイミングを示すタイミング図である。
【図15】図15は、本発明に従って、第1メモリユニット内に記憶された第1サブブロック、および第2メモリユニット内に記憶された第2サブブロックを含むブロックを消去するプロセスを示すフローチャートである。
【発明を実施するための形態】
【0026】
(実施形態の詳細な説明)
図5は、本発明の原理に従うメモリシステムである500において、一般化したブロック図を示す。このシステムは、ホストシステム504に結合したメモリカード502を含む。1つの実施形態では、ホスト504はデジタルカメラであり、メモリカード502はデジタルフィルムカードであり、また別の実施形態では、ホスト504はパーソナルコンピュータシステムであり、メモリカード502はPCMCIAカードである。メモリカード502は、ブロックに組織された複数のセクタの情報を記憶するための複数の非揮発性メモリユニット508を含む非揮発性メモリバンク506と、メモリバス512を介してメモリバンクに結合され、ホストバス514を介してホスト504に結合されたメモリコントローラ510とを含む。メモリコントローラ510は、ホスト504とメモリバンク506との間でセクタ組織化情報の送信を制御する。各セクタの情報は、ユーザデータ部分およびオーバーヘッド部分を含む。メモリコントローラは、以下でさらに説明するように、本発明に従ってメモリバンクのメモリユニットへの書き込み操作、およびそこからの読み出し操作を行う。
【0027】
本発明において、非揮発性メモリバンク506は、任意の数の非揮発性メモリユニット508を含み得るが、好ましい実施形態においては、非揮発性メモリバンクは偶数のメモリユニットを有する。また、この好ましい実施形態では、各非揮発性メモリユニットはフラッシュメモリ集積回路デバイスである。
【0028】
図6は、図5のメモリシステムである600において、詳細なブロック図を示す。コントローラ510は、コントローラとホストとの間でアドレス、データ、および制御信号を送信するために、ホストバス514を介してホスト504に結合したホストインターフェース610と、ホストインターフェースのポート618に結合したポート616を有するデータバッファ614と、ホストインターフェースのポート624に結合したポート622を有するマイクロプロセッサ620と、マイクロプロセッサのポート630に結合したポート628を有するコード記憶ユニット626と、マイクロプロセッサのポート630およびコード記憶ユニットのポート628に結合したポート634を有するブートROMユニット632と、マイクロプロセッサのポート640に結合したポート638を有する空間マネジャー636と、マイクロプロセッサのポート646に結合したポート644、空間マネジャーのポート650に結合したポート648、およびデータバッファのポート647に結合したポート645を含むフラッシュ状態マシン642と、フラッシュ状態マシンのポート656に結合したポート654を有するメモリ入力/出力ユニット652と、フラッシュ状態マシンのポート664に結合したポート662を有するエラー訂正コード論理ユニット(ECC論理ユニット)660、およびデータバッファ614のポート668に結合したポート666とを含むように示される。
【0029】
示されている実施形態では、メモリバンク506は、2つの非揮発性メモリユニット(追加のメモリは含まれ得るが、簡略化のため2つのみを示す)と、FLASH0と指定された第1のフラッシュメモリチップ670と、FLASH1と指定された第2のフラッシュメモリチップ672とを含む。第1のフラッシュメモリチップ670は、第1入力/出力レジスタ(第1のI/Oレジスタ)671および記憶エリア669を含む。第2のフラッシュメモリチップ672は、第2入力/出力レジスタ(第2のI/Oレジスタ)673および記憶エリア674を含む。
【0030】
メモリバス512は、コントローラ510とメモリバンク506との間で、アドレス、データ、および制御信号を送信するために用いられる。メモリバス512は、フラッシュメモリチップ670、672とメモリI/Oユニット652との間でアドレス、データ、および命令信号を送信するメモリI/Oユニット652のポート676に結合したフラッ
シュバス675を含む。フラッシュバス675は16のビットラインを含み、その内8ビットラインは第1フラッシュメモリチップのI/Oレジスタ671のポート682に結合した第1バス680を形成し、別の8ビットラインは第2フラッシュメモリチップのI/Oレジスタ673のポート686に結合した第2バス684を形成する。
【0031】
メモリバス512はまた、フラッシュ状態マシン642の制御信号(CTRL信号)出力692を、第1フラッシュメモリチップの入力694および第2フラッシュメモリチップの出力696に接続する制御バス690と、フラッシュ状態マシン642のチップイネーブル(CE)出力700を、第1フラッシュメモリチップのイネーブル出力702および第2フラッシュメモリチップの出力704に接続するチップイネーブルライン698と、第1フラッシュメモリチップの出力708および第2フラッシュメモリチップの出力710を、フラッシュ状態マシン642の出力712に接続する準備/ビジー信号(FRDY−BSY*信号)ライン706とを含む。
【0032】
マイクロプロセッサ620は、場合により(例えばメモリシステムの初期化中)、ROM632に記憶されたプログラム指示(またはコード)を実行し、またメモリシステムの操作中のような他の場合には、マイクロプロセッサはコード記憶ユニット626に記憶されたコードを実行する。この記憶コードユニットは、揮発性(すなわち読み出しおよび書き込みメモリ(RAM)タイプ)、または非揮発性(すなわちEEPROMタイプ)のメモリ記憶装置であり得る。コード記憶ユニット626からのプログラムコードに先だって、プログラムコードはメモリバンク506において記憶され得、そして後にそのコードの実行のために、コード記憶ユニットにダウンロードされ得る。初期化中、マイクロプロセッサ620はROM632からの指示を実行し得る。
【0033】
ユーザデータおよびオーバーヘッド情報を含むセクタ組織化情報は、ホスト504からホストバス514を介してホストインターフェース610において受信され、データバッファ614に、そのバッファ内での一時的な記憶のために供給される。データバッファ内に記憶されたセクタの情報は、フラッシュ状態マシン642の制御のもとで得られ、以下でさらに説明する方法でメモリバンク506に供給される。当該分野において、各セクタが512バイトのユーザデータに加えオーバーヘッド情報を含むことは一般的である。セクタは、他の数のバイトの情報を含み得るが、好ましい実施形態においては、セクタは512バイトのユーザデータよび16バイトのオーバーヘッド情報を有する。
【0034】
ECC論理ブロック660は、セクタ組織化情報内のエラーの符号化および訂正を行うための回路機構を含む。ECC論理ブロック660は、エラー検出操作および/またはエラー訂正操作を、フラッシュメモリチップ670、672に記憶された各セクタのユーザデータ部分上、あるいはホスト504から受信されたデータ上で行う。
【0035】
必要であれば、空間マネジャー636は、それぞれが複数のセクタの情報を含んでいるブロックの情報を記憶するための、メモリバンク内における次の未使用(または空き)の非揮発性メモリロケーションを見出す。好ましい実施形態においては、1つのブロックは32セクタ含むが、代わりにブロックは他の数(例えば16のような数)のセクタを含むように規定され得る。メモリバンク506内に位置する記憶ブロックの物理アドレス(仮想物理ブロックアドレス(仮想PBA)と呼ばれる)、およびメモリバンク506内に位置するセクタの情報の物理ブロックアドレス(実物理ブロックアドレス(実PBA)と呼ばれる)は、空間マネジャーがホストから受信した論理ブロックアドレス(LBA)の変換を行うことにより決定される。ホスト504から受信した実LBA(ホスト供給LBA)は、セクタの情報を識別する。空間マネジャー636は、以下でさらに説明するように、改変版のホスト供給LBAから仮想PBAへ変換するためのLBA−PBAマップを記憶する空間マネジャーメモリユニット(これは好ましくは揮発性メモリユニット)を含む。示されている実施形態では、空間マネジャーは、空間マネジャーコントローラ(SPMコントローラ)724の制御のもとで、LBA−PBAマップを記憶する空間マネジャーRAMユニット(SPM RAMユニット)720を含み、このSPMコントローラ724はSPM RAMユニットに結合している。
【0036】
図7は、本発明のある実施形態による、メモリバンク506内に記憶されたユーザデータ、エラー訂正情報、およびフラグ情報の組織を一般化して図示した表図を示す。メモリバンク506は、BLCK0、BLCK1、BLCK(M−1)と指定された複数あるM個のブロック727を含み、それぞれが仮想物理ブロックアドレス(PBA)を有する。ブロック727のそれぞれは、ROW0、ROW1、...ROW15と指定された複数あるN個のメモリ行ロケーション728を有する(ここで好ましい実施形態においてはN=16である)。メモリバンク506の各ブロック727は、第1のフラッシュメモリチップ670の第1のサブブロック730、および第2のフラッシュメモリチップ672の対応する第2のサブブロック731から構成される。対応するサブブロック730、731は、合わせて1つのブロックを形成し、同じ仮想PBAにより識別される。各メモリ行ロケーション728は、第1の行部分732および対応する第2の行部分733を含む。示されている実施形態において、各第1および第2行部分、732および733は、512バイトのデータ情報のための記憶空間に加え、他の情報のための追加の記憶空間を含む。示されている実施形態では、第1フラッシュメモリチップの第1の行部分732内の情報の記憶は、第2フラッシュメモリチップの第2の行部分733内のものとは同じでない方法で達成される。
【0037】
第1の行部分732のそれぞれは、偶数データバイトD0、D2、D4、...D510の偶数セクタ(S0、S2、S4、...)の情報を記憶する第1の偶数セクタフィールド734と、第1スペアフィールド736と、偶数データバイトD0、D2、D4、...D510の奇数セクタ(S1、S3、S5、...)の情報を記憶する第1の奇数セクタフィールド738と、第2スペアフィールド740とを含む。第2行部分733のそれぞれは、奇数データバイトD1、D3、D5、...D511の偶数のセクタのデータ(これは第1の偶数セクタフィールド734内に記憶されたその対応する偶数データバイトを有する)を記憶する第2の偶数セクタフィールド742と、集団的にフィールド734および742に記憶された偶数セクタの情報に対応するエラー訂正情報を記憶する第1のエラー訂正フィールド744と、奇数データバイトの奇数セクタの情報(これは第1の奇数セクタフィールド738内に記憶されたその対応する偶数データバイトを有する)を記憶する第2の奇数セクタフィールド746と、集中的にフィールド738、746に記憶された奇数セクタの情報に対応するECC情報を記憶する第2エラー訂正フィールド748と、ブロックアドレスフィールド750と、フラグフィールド752を含む。フィールド734および742は、偶数セクタロケーションを形成するが、フィールド738および746は奇数セクタロケーションを形成する。本発明において、フィールド734および742は、代わりに奇数セクタロケーションを形成し得る一方で、フィールド738および746は代わりに偶数セクタロケーションを形成し得ること、ならびにフィールド734および738は代わりに奇数データバイトを記憶するために用いられ得る一方で、フィールド742および746は代わりに偶数データバイトを記憶するために用いられ得ることが理解される。加えて、第1の行部分732は、代わりにメモリ行ロケーション728内に記憶されたセクタに関するオーバーヘッド情報を記憶するために用いられ得る。
【0038】
フラグフィールド752は、以下でさらに説明するように、アクセス操作中にコントローラ510(図6)により用いられるフラグ情報を記憶するために用いられる。ブロックアドレスフィールド750は、以下でさらに説明するように、ブロックに割り当てらた改変版のホスト供給LBA値を記憶するために用いられる。単一のブロックアドレスエントリのみが、ブロックアドレスフィールドにおいてブロック毎に要求される。好ましい実施形態において、改変ホスト供給LBA値は、各ブロック727の行ロケーション728の第N行、つまりROW15のブロックアドレスフィールド759に入力される。
【0039】
作動中、コントローラ510(図6)は、第1および第2フラッシュメモリチップに集中的に記憶された偶数セクタの情報に、第1および第2フラッシュメモリチップの対応する行部分である第1および第2の偶数セクタフィールド、734および742に、それぞれ第1分割バス680および第2分割バス684(図6)を介して同時にアクセスすることにより、アクセスする。第1分割バス680および第2分割バス684(図6)は、偶数および奇数バイトのセクタの情報をそれぞれ受信するように結合されたラインを含む。コントローラ510(図6)は、第1および第2フラッシュメモリチップに集中的に記憶された奇数セクタの情報に、第1および第2フラッシュメモリチップの対応する行部分である第1および第2の奇数セクタフィールド、738および746に、それぞれ第1分割バス680および第2分割バス684(図6)を介して同時にアクセスすることにより、アクセスする。分割バス680、684(図6)はまた、フラッシュメモリチップとフラッシュ状態マシン642とメモリコントローラ510のECC論理ユニット660との間におけるECC情報の送信、およびフラッシュ状態マシン642からフラッシュメモリチップへのアドレス情報の送信を供給する。
【0040】
コントローラ510(図6)は、空間マネジャー636を用いてメモリバンク506のブロック727のステータスを監視する。1つの実施形態では、コントローラ510(図6)は、フラグフィールド752の使用中フラグロケーション754および欠陥フラグロケーション756にそれぞれ記憶された使用中/空きブロックフラグおよび欠陥ブロックフラグを含むブロックレベルフラグを用いて、メモリバンクの各ブロックロケーション727のステータスを監視する。ブロックレベルフラグは、メモリバンクの全体のブロック727のステータスに関わる情報を供給する。従って、単一のブロックレベルフラグエントリのみが、フラグロケーション754および756においてブロック毎に要求される。使用中/新ブロックフラグは、対応するブロック727が情報を記憶するために現行で「使用中」であるか否か、あるいは情報を記憶するために利用可能(または空き)か否かを示す。欠陥ブロックフラグは、対応するブロック727が欠陥であるか否かを示す。
【0041】
別の実施形態においては、コントローラ510(図6)は、メモリバンクの各メモリ行ロケーション728のステータスを、使用中フラグロケーション754に記憶された使用中/空き行フラグと、欠陥フラグロケーション756に記憶された欠陥行フラグと、フラグフィールド752のオールドロケーション758に記憶されたオールド行フラグと、偶数セクタ移動フラグロケーション760に記憶された偶数セクタ移動フラグと、奇数セクタ移動フラグロケーション762に記憶された奇数セクタ移動フラグとを用いて監視する。この実施形態において、使用中/新フラグは、対応するメモリ行ロケーション728が情報を記憶するために現行で「使用中」であるか、あるいは情報を記憶するために利用可能(または空き)か否かを示す。欠陥フラグは、対応するブロック727が欠陥であるか否かを示す。非揮発性メモリロケーション732、733のペアのいずれかが欠陥であるならば、セットされている欠陥フラグロケーション756における値により示されるように、全メモリブロック727は欠陥であると宣言される。好ましい実施形態では、ロケーション758、754、および756は単一の3ビットフラグロケーション764に含まれる。
【0042】
奇数および偶数セクタ移動フラグロケーション760、762は、非揮発性メモリセクタロケーションに記憶された対応する偶数および奇数セクタが、非揮発性メモリバンク506(図6)内における別のロケーションへ移動したか否かを示す値を記憶する。例えば、行ロケーション728の偶数セクタフィールド734、742の特定のペアにおいて集中的に記憶された偶数セクタの情報が、非揮発性メモリバンク506内の偶数セクタフィールドの別のペアに移動した場合、対応する偶数セクタ移動フラグロケーション760において値がセットされる。同様に、同じ行ロケーションの奇数セクタフィールド738、746において集中的に記憶された奇数セクタの情報が、非揮発性メモリバンク506内の奇数セクタフィールドの別のペアに移動した場合には、対応する奇数セクタ移動フラグロケーション672において値がセットされる。非揮発性メモリバンク506内におけるセクタの情報が移動しているロケーションは、MVPBAアドレスロケーション内のSPM RAM720に記憶されたLBA−PBAマップにおいて示される。このことは本出願の発明者らにより出願された特許出願である、「Moving Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題する米国特許第08/831,266号(1997年3月31日出願)において教示しており、この出願の開示は本明細書中において参考として援用する。好ましい実施形態では、ロケーション760および762は、単一の2ビット移動フラグロケーション766である。
【0043】
図8Aは、改変版のホスト供給LBA−PBAを変換する、例示的なLBA−PBAマップの組織である800(これはSPM RAM720(図6)に記憶される)を一般化して図示した表図である。改変ホスト供給LBAは、ホスト供給LBAを1つのブロックに伴うセクタの数で除算することにより得られる(これは後により詳細に説明される)。示されているLBA−PBAマップは、改変ホスト供給LBAにより、または仮想PBAによりアドレス可能である複数のマップ行ロケーション802と、メモリバンク内におけるブロック727(図7)を識別する仮想PBA値を記憶する仮想PBAフィールド804と、フラグ情報を記憶するフラグフィールド806とを含む。上述のように、実PBAはメモリバンク内のセクタの情報のロケーションを特定し、仮想PBAはメモリバンク内のブロック727(図7)のロケーションを特定する。仮想PBA値は、空間マネジャー636(図7)により示されているマップから取り出され、メモリバンク506内においてブロックをアドレスする際に使用するため、フラッシュ状態マシン642のポート648へ転送される。
【0044】
図8Bは、ホスト供給LBAフォーマット810および実PBAフォーマット820を図示するブロック図を示す。LBAフォーマット810は、「オフセットビット」812を含み、これはホスト供給LBA値の最下位ビットを備える。上述のように、好ましい実施形態では、各ブロック727(図7)は各セクタが512バイトのユーザデータおよび16バイトのオーバーヘッド情報を含む、32セクタの情報を記憶するメモリ空間を含む。なぜなら、好ましい実施形態において各ブロック727(図7)は32セクタ含み、5つのオフセットビット812が、各ブロック内の32セクタのそれぞれを識別するために要求される。この実施形態では、ホスト供給LBAから実および仮想PBA値への変換は、まずホスト供給LBAの5つの最下位「オフセット」ビット812をマスクし、その結果を右へ5ビットずつシフトさせ、そしてそのシフト値を改変ホスト供給LBA値、または「LBA−マップ−値」として用い、LBA−PBAマップ800(図8)におけるマップ行ロケーション802をアドレスする。これは実際、ホスト供給LBAを32で除算している。実PBA値820(これはメモリバンクのブロック内におけるセクタのロケーションを特定する)は、LBA値のオフセットビット812とLBA−PBAマップの対応するフィールド804(図8)に記憶された仮想PBA822値とを連結することにより形成される。すなわち、仮想PBA値822はメモリバンク内におけるブロックを識別するために用いられ、5つの残ったオフセットビット812は識別されたブロック内におけるセクタをアドレスするために用いられる。
【0045】
メモリシステム600(図6)の初期化により、各マップ行ロケーション802の仮想PBAフィールド804に記憶された仮想PBA値は、全て「1」の状態にセットされる。ブロック727(図7)がコントローラによりアクセスされる(例えば書き込み操作中)毎に、対応するマップ行ロケーションの対応する仮想PBAフィールド804に記憶された仮想PBA値が、空間マネジャーコントローラ724(図6)により改変され、新しい仮想PBA値を特定する。メモリバンク506内におけるブロックが消去された場合、改変版のホスト供給LBAよりむしろ、オールド仮想PBA値(消去されたブロックに対応する仮想PBA値)が、SPM RAM720(図6)をアドレスするために用いられ、SPM RAM720のフラグフィールド内において記憶された使用中フラグはクリアになる。SPM RAM720のフラグフィールド内のこの同じ「使用中」フラグは、対応する仮想PBAがアップデートされ、セクタ情報が維持されるメモリバンク内の新しいブロックを指摘する(工程1214)ときにセットされる。
【0046】
図9は、メモリシステム600(図6)により行われる、書き込み操作用の制御、アドレス、およびデータ信号のタイミングを図示するタイミング図を示し、ここでは単一の書き込み操作中に、2セクタの情報が非揮発性メモリバンク506(図6)に同時に書き込まれる。この図は、命令、アドレス、およびデータ情報を多重化した時間を、コントローラのフラッシュ状態マシン642(図6)から、バス680(図6)を介して第1フラッシュメモリチップのポート682へ送信する、第1のフラッシュ信号を表す波形902と、命令、アドレス、およびデータ情報を多重化した時間を、コントローラのフラッシュ状態マシン642(図6)から、バス684(図6)を介して第2フラッシュメモリチップのポート686へ送信する、第2のフラッシュ信号を表す波形904と、タイムライン905と、複数の制御信号波形とを含む。
【0047】
制御信号波形は、フラッシュ状態マシン642(図6)から第1および第2フラッシュメモリチップへ、制御バス690(図6)を介して送信される命令ラインイネーブル信号(CLE信号)を表す波形906と、フラッシュ状態マシンからフラッシュメモリチップへ、制御バスを介して送信されるアドレスラインイネーブル信号(ALE信号)を表す波形908と、フラッシュ状態マシンからフラッシュメモリチップへ、制御バスを介して送信されるワイヤイネーブル信号(WE信号)を表す波形910と、フラッシュ状態マシンからメモリチップへ、制御バスを介して送信される読み出しイネーブル信号(RE信号)を表す波形912と、フラッシュ状態マシンのチップイネーブル信号出力700(図6)から、チップイネーブルライン698を介して、第1および第2フラッシュメモリチップへ送信されるフラッシュチップイネーブル信号(FCE*信号)を表す波形914と、第1および第2フラッシュメモリチップの出力、708および710(図6)から、フラッシュ状態マシンへフラッシュ準備/ビジー信号ライン706を介して送信されるフラッシュ準備/ビジー信号(FRDY_BSY*信号)を表す波形916とを含む。
【0048】
書き込み操作は、FCE*信号(波形914)がHIGH状態からLOW状態へ遷移する時間t0において始まり、それにより第1および第2フラッシュメモリチップが命令、アドレス、データ、および制御信号を受信し始めることを可能にする。時間t0に先だって、フラッシュメモリチップからフラッシュ状態マシンの入力712(図6)へ送信されるFRDY_BSY*信号(波形916)は、すでに起動しており、第1および第2フラッシュメモリチップがアクセス命令を受信する準備ができていることを示す。引き続く時間t1において、CLE信号(波形906)が起動し、LOW状態からHIGH状態へ遷移し、それにより第1および第2フラッシュメモリチップが命令信号を読み出すことを可能にする。時間t2において、第1および第2フラッシュ信号(波形902および904)は、連続的データシフト−イン命令信号80Hを、ディスプレイアップ1および第2フラッシュメモリチップへ、第1分割バス680および第2第1分割バス684をそれぞれ介して同時に送信する。時間t3において、連続的データシフト−イン命令信号80Hが起動し、WE信号(波形910)がHIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップが連続的データ命令信号80Hを読み出すことを可能にする。時間t4において、CLE信号(波形906)が停止し、LOW状態に戻り、それによりフラッシュメモリチップが命令信号を読み出すことを不可能にする。
【0049】
また、時間t4において、ALE信号(波形908)が起動し、LOW状態からHIGH状態に遷移し、それにより第1および第2フラッシュメモリチップがアドレス情報のパケットを読み出すことを可能にする。時間t5、t6、およびt7において、第1および第2フラッシュ信号(波形902および904)のそれぞれが、第1、第2、および第3アドレスパケットADD0、ADD1、およびADD2を、第1および第2フラッシュメモリチップへそれぞれ送信する。時間t8において、ALE信号(波形908)が停止し、HIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップがアドレス情報を読み出すことを不可能にする。時間t5とt6との間、t6とt7との間、およびt7とt8との間の時間間隔において、WE信号(波形910)は、HIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップが第1、第2、および第3アドレスパケットADD0、ADD1、およびADD2をそれぞれ読み出すことを可能にする。3つのアドレスパケットADD0、ADD1、およびADD2は、第1サブブロック730(図7)内における行部分732、733を特定する。
【0050】
時間t9において、第1および第2フラッシュ信号(波形902および904)が、インターリーブされた偶数および奇数データバイトを同時に送信し、ここで偶数および奇数バイトは1つのセクタ情報を形成する。偶数バイトは、第1フラッシュメモリチップへバス680(図6)を介して送信され、奇数セクタバイトは、第2フラッシュメモリチップへバス684(図6)を介して送信される。奇数セクタの偶数データバイトD0、D2D4、...D510は、第1フラッシュチップにより受信され、第1フラッシュメモリチップの対応するロケーション732の第1の偶数セクタフィールド734(図7)に記憶される。このことは、書き込みイネーブル信号WE*(波形910)が起動する度に1バイト記憶することにより行われる。偶数セクタの奇数データバイトD1、D3、D5、
...D511は、第2フラッシュチップにより受信され、第2フラッシュメモリチップの対応するロケーション733の第2の偶数セクタフィールド742(図7)に記憶され、このことから各バイトはWE*(波形910)が起動するときに記憶される。時間t10において、第1および第2フラッシュ信号(波形902および904)は、偶数セクタのインターリーブされた偶数および奇数データの送信を完了する。
【0051】
時間t10のすぐ後に、時間t10と時間t11との間において、第1フラッシュ信号(波形902)は、4つのパケットのフィラー情報(FFH、16進法F、等量2進法値「1111」、10進法値「15」)を、第1フラッシュメモリ値へ第1分割バス680(図6)を介して送信し、それに対して第2フラッシュ信号(波形904)は、エラー訂正コード(ECC)を第2フラッシュメモリチップへ、第2分割バス684(図6)を介して送信する。この時間周期中に送信されたフィラー情報FFHは、第1フラッシュメモリチップにより受信され、第1スペアフィールド736(図7)に記憶される。この時間周期中に送信されたエラー訂正コードは、第2フラッシュメモリチップにより受信され、第2フラッシュメモリチップの非揮発性メモリセクション733の第1エラー訂正フィールド744(図7)に記憶される。ECC論理ユニット660(図6)により発されるこのエラー訂正コードは、前述の時間t10とt11との間の時間間隔の間に送信される偶数セクタに関係する。
【0052】
時間t11において、第1および第2フラッシュ信号(波形902および904)は、奇数セクタのインターリーブされた偶数および奇数データバイト(書き込みイネーブル信号WE*(波形910)と同期である)を、ディスプレイアップ1および第2フラッシュメモリチップへ第1分割バス680および第2第1分割バス684(図6)へ、それぞれ同時に送信し始める。偶数データバイトD0、D2、D4、...D510は、第1フラッシュチップにより受信され、第1フラッシュメモリチップの対応するロケーション732の第1の奇数セクタフィールド738(図7)に記憶される。奇数セクタの奇数データバイトD1、D3、D5、...D511は、第2フラッシュチップにより受信され、第2フラッシュメモリチップの対応するロケーション733の第2の奇数セクタフィールド746(図7)に記憶される。時間t12において、第1および第2フラッシュ信号(波形902および904)は、偶数セクタのインターリーブされた偶数および奇数データの送信を完了する。
【0053】
時間t12のすぐ後に、時間t12と時間t13との間において、第1フラッシュ信号(波形902)は、第1フラッシュメモリチップへ情報を全く送信せず、それにより、第1フラッシュメモリチップの記憶ロケーションバイトに対応している値を、FFH(16進法)または2進法の全て1状態において維持する。一方、時間t12と時間t13との間において、第2フラッシュ信号(波形904)が同時に、エラー訂正コード(ECC)を第2フラッシュメモリチップへ、第2分割バス684(図6)を介して送信する。この時間周期中に送信されたフィラー情報FFHは、第1フラッシュメモリチップにより受信され、第2スペアフィールド740(図7)に記憶される。この時間周期中に送信されたエラー訂正コードは、第2フラッシュメモリチップにより受信され、第2フラッシュメモリチップの非揮発性メモリセクション733の第1エラー訂正フィールド748(図7)に記憶される。ECC論理ユニット660(図6)により発されるこのエラー訂正コードは、前述の時間t11とt12との間の時間間隔の間に送信される奇数セクタに関係する。
【0054】
時間t17において、第1および第2フラッシュ信号(波形902および904)はそれぞれ読み出し命令信号70Hを第1および第2第1および第2フラッシュメモリチップへ、第1分割バス680および第2分割バス684をそれぞれ介して送信する。読み出し命令信号70Hが起動すると、WE信号(波形910)はHIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップが読み出し命令信号70Hを読み出すことを可能にする。
【0055】
時間t18において、CLE信号(波形906)が停止し、LOW状態に戻り、それによりフラッシュメモリチップが命令信号を読み出すことを不可能にする。
【0056】
時間t18において、第1および第2フラッシュ信号(波形902および904)はそれぞれステータス命令信号STATUSを第1および第2第1および第2フラッシュメモリチップへ、第1分割バス680および第2分割バス684をそれぞれ介して送信する。読み出し命令信号70Hがアクティブの間、WE信号(波形910)はHIGH状態からLOW状態へ遷移し、それにより第1および第2フラッシュメモリチップが読み出し命令信号70Hを読み出すことを可能にする。
【0057】
図10は、図7に示されるような、メモリバンク506(図6)内の1つのブロックの情報を記憶するメモリ記憶フォーマットを一般化して図示した表図を示し、ここで単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる。示されるように、ROW1と指定されたメモリ行ロケーション728は、図7を参照して上述されたフォーマットに従って、そのロケーションに記憶された偶数セクタS2および奇数セクタS3を有する。ROW2と指定されたメモリ行ロケーション728は、第1および第2フラッシュメモリチップ、670および672の行部分において対応するペアの第1および第2偶数セクタフィールド734および742に記憶された単一の偶数セクタS4を有する。この場合、記憶されるための奇数セクタは全く要求されないため、フィールド736、738、746、748、750、および752は消去されるように示される。
【0058】
図11は、図7に示されるような、メモリバンク506(図6)内の1つのブロックの情報を記憶する、他のメモリ記憶フォーマットを一般化して図示した表図を示し、ここで単一のセクタがメモリバンクの特定のメモリ行ロケーションに書き込まれる。上述のように、フィールド764は、第1のビット場所におけるオールド行フラグ、第2ビット場所における使用中/空き行フラグ、および第3ビット場所における欠陥行フラグを記憶するために用いられる、3ビットフィールドである。また上記で説明したように、フィールド766は、第1ビット場所における偶数セクタ移動フラグ、および第2ビット画素における奇数セクタ移動フラグを記憶するために用いられる、2ビットフィールドである。
【0059】
ROW1と指定されたメモリ行ロケーション(そこに記憶されたセクタS2およびS4を有する)は、フィールド766に記憶された値「00」を有し、これは両セクタがメモリバンク内の他のところへ移動したことを示す。ROW2と指定されたメモリ行ロケーション(第1および第2偶数セクタフィールド734および742に記憶された単一の偶数セクタS4を有する)は、フィールド766に記憶された値「01」を有し、これはS4内の情報をアップデートされ終え、そこでメモリバンク内の他のところで常駐することを示す。論理状態の値「0」は一般に、移動したセクタがホストによりアップデートされ終えたことを示す。従って、残りのセクタがホストにアップデートされなかったオールドブロックから移動した場合、これらのセクタがその移動中にオールドデータにより重ね書きされないことが決定され得る。
【0060】
ROW1と指定されたメモリロケーション728は、図7を参照して上述したようなフォーマットに従ってそこへ記憶された偶数セクタS2および奇数セクタS3を有する。ROW2と指定されたメモリロケーション728は、第1および第2フラッシュメモリチップ670および672の行部分において対応するペアの第1および第2偶数セクタフィールド734および742に記憶された単一の偶数セクタS4を有する。この場合、奇数セクタは記憶するために全く要求されないため、フィールドフィールド736、738、746、748、750、および752は消去されるように示される。
【0061】
図12は、本発明による単一書き込み操作中に、2セクタの情報を2つのメモリユニットへ同時に書き込むプロセスを図示するフローチャートである。工程1202において、メモリコントローラ510(図6)は、ホスト504からホストアドレス情報(これは1つ以上のセクタロケーションのアドレスを特定する)を、論理ブロックアドレス(ホスト供給LBA)の形で、あるいはシリンダヘッドセクタ(CHS)情報の形で受信する。ホストアドレス情報がCHS実施形態である場合、コントローラはCHS情報をLBA情報へ変換する。上述のように、セクタはブロック内で組織化されているため、複数のホスト供給LBAは、1つ以上のブロックの複数のセクタに対応する。この情報は、以下でさらに説明するように、マイクロプロセッサ620(図6)により用いられる。
【0062】
マイクロプロセッサ620(図6)は、コード記憶ユニット626(図6)に記憶されている指示を実行し、ここで説明しているプロセスを遂行する。工程1204において、セクタカウント値は、ホストによりアドレスされている現行ブロックのセクタの数に等しくセットされ、ここで例えばセクタロケーションは、メモリバンクのフィールド734および742(図7)またはフィールド738および746(図7)から構成され得る。マイクロプロセッサは、ホスト供給LBA値により特定された各セクタロケーションが、その前にホスト供給LBA値よりアクセスされたか否かを、1206において決定する。この決定は、SPM RAM720(図6)に記憶されたLBA−PBAマップ800の対応する仮想PBAフィールド804(図8A)の内容を読み出すことにより下される。図8Aを参照して説明したように、ホスト供給LBAに対応する仮想PBA値が全て「1」の状態にセットされるならば、対応するLBAはその前にホストによりアクセスされていない。メモリバンク506内のメモリ空間は、一度につき1つのブロック消去される。ブロックの任意のセクタが、そのブロックの最後の消去以降にアクセスされたならば、そのブロックは、「全て1」ではない他の値であるLBA−PBAマップにおいて、対応するマップ行ロケーションのフィールド804(図8A)内の仮想PBA値の利点によりすでにアクセスされたと表示される。
【0063】
ホスト供給LBAにより特定された(現行ブロックの)1つ以上のセクタロケーションが以前にホストによりアクセスされたことが決定された場合、書き込みプロセスは工程1210へ進み、ここでマイクロプロセッサ620(図6)が現行セクタロケーションに対応する移動フラグ760、762(図7)の内、対応する1つをセットし、そして書き込みプロセスは工程1208へ進む。初めの方で述べたように、非揮発性メモリ内において「移動」フラグを維持することは、選択自由であり、本発明の範囲および思想から逸脱することなく、全く消去され得る。移動フラグの欠如において、マイクロプロセッサはセクタのステータスを維持し、これはそれらが他のブロックへ移動したか否かによる。このことは各ブロックについて2つの値のトラックを保持することによりなされる。1つの値はセクタが移動したブロック内におけるスタートセクタロケーションであり、2つめの値は、移動したブロック内におけるセクタの数である。これらの2つの値を伴い、1つのブロックのセクタが他の1つの(あるいは複数の)ブロックへ移動したか否か、ならびにどのセクタが移動したかにより、ステータス情報は再構築される。
【0064】
ホスト供給(host−provided)LBAによって特定された現在のセクタロケーションのいずれもが、以前にアクセスされていないと工程1206で判定された場合、書き込みプロセスは工程1208に直接進む。
【0065】
工程1208では、制御器のスペースマネジャー636(図6)が、非揮発性メモリバンク内に記憶する、ブロック727(図7)のような空き(または未使用の)ブロックを検索し、各空きブロックが特定の仮想PBA値によって識別される。1212ではマイクロプロセッサは、空きブロックが発見されるかどうかを判定し、検出されなければ、制御器510(図6)によって、エラーがホストに報告される、情報記憶を非揮発性メモリバンクにさらに収容できないことを指示する。このことが致命的なシステムエラーを引き起こし得るので、本発明の発明者は、この状況の発生を防ぐのに細心の注意を払った。
【0066】
工程1208で非揮発性メモリ内に空きブロックが検出されるとすぐに、図示した(depicted)プロセスは、工程1214に進む。工程1214では、マイクロプロセッサ620が、スペースマネジャー636(図6)を促し、工程1208で発見された空きブロックに仮想PBA値822(図8B)を割り当てる。この仮想PBA値は、現在のブロックに対応するホスト供給LBAのマスクビット814(図8B)によって識別されたマップ行ロケーション802(図8A)内のLBA−PBAマップ800(図8A)に記憶される。現在のホスト供給LBAのマスクビット814(図8B)は、5オフセットビット分だけホスト供給LBAを右にずらすことによって(または32分割することによって)、獲得される。例えば、ホスト識別LBAが16H(16進法)である場合、仮想PBAを記憶する行は、行0である。また、工程1214では、マイクロプロセッサが、発見された空きブロックに対応する仮想PBAに「オフセット」ビット812(図8B)をアペンドし、実PBA値820(図8B)を獲得する。1216では、マイクロプロセッサは、実PBA値が偶数値であるか奇数値であるかを判定しする。もしくは、1216で実PBA値の代わりにホスト供給LBAがチェックされ、この値が偶数であるか奇数であるかが判定されてもよい。
【0067】
1216で実PBA値が偶数であると判定された場合、プロセスは1218に進み、マイクロプロセッサは、セクタカウントが1より大きいかどうか、即ち、一つ以上のセクタをホストから制御器の内部バッファに転送する制御器が要求した時点で、書き込みされる情報セクタが一つ以上存在するかどうかを判定し、工程は1232に進んで、マイクロプロセッサは、2つの情報セクタが(ホストインターフェース回路610を介して)ホストからデータバッファ614(図6)に転送されたかどうかを判定する。即ち、フラッシュ状態マシン642によって検出されたように、非揮発性メモリに書き込まれる必要のある情報セクタが一つ以上存在する場合、二つの情報セクタが同時に、ホストからデータバッファ614に転送される。データバッファ614は、同じ情報(the same)がメモリバンク506内に記憶されるまで、一時的にセクタ情報を記憶するのに用いられる。好適な実施形態では、各セクタが512バイトのユーザーデータおよび16バイトのオーバーヘッド情報を含む。
【0068】
二つの情報セクタが、まだデータバッファ614に転送されていない場合、マイクロプロセッサは、1232の「NO」分岐ループによって示すように、そのような転送が完了するまで待機する。
【0069】
工程1234では、マイクロプロセッサが、書き込みコマンド、それに続くアドレスおよびデータ情報を発行して、データバッファに一時的に記憶された2つのセクタの、メモリバンク506(図6)に対する書き込みを起動する。工程1234における書き込み動作は、図7および図9を参照して上述した方法および装置によって実行される。
【0070】
2つの情報セクタの書き込みが完了した後、1235で書き込み動作が検証される。工程1234で情報が正しくプログラムされていなかった場合、プロセスは1237に進み、後に詳述するように欠陥マネジメントルーチンが実行される。欠陥マネジメントルーチンの実行の後、工程1236でセクタカウントが2ごとに減少される。1235で書き込み動作が成功であると検証された場合、工程1236が実行され、欠陥マネジメントは必要ない。次に1238で、マイクロプロセッサは、セクタカウントが0に等しいかどうかを判定し、もし等しい場合、書き込みされるセクタはまったく残っていないと想定されて、プロセスは1228に進む。しかし、より多くのセクタが書き込まれなければならない場合、プロセスは工程1240に進み、ホスト供給LBAが2ごとに、次に書き込まれるべきセクタの点(point)まで増加される。
【0071】
工程1240では、マイクロプロセッサは、ブロックの最後のセクタに到達したかどうかを判定する。現在のLBAの「オフセット」値をブロック内のセクタの数と比較することによって、ブロックの境界が判定され、それらの値が等しい場合、ブロック境界に到達している。例えば、好適な実施形態では、ブロックは32のセクタを含んでいるので、現在のLBAの「オフセット」値は、「32」(10進法)と比較される。もしくは、ブロックが32のセクタ以外、例えば16のセクタなどを有すると定義された場合、後者が「オフセット」に対して比較される。非揮発性メモリにおけるブロック境界に到達した場合、書き込みプロセスは、現在のLBA値に対応する仮想PBA値が、すべて「1」である条件に対してチェックされる工程1206から繰り返され、以下同様に進められる。工程1242でブロック境界に到達しなかった場合、書き込みプロセスは工程1218から繰り返される。
【0072】
工程1218で、セクタカウントが1より大きくないと判定された場合、マイクロプロセッサは1220に進み、データバッファ614(図6)がホストから少なくとも一つの情報セクタを受け取ったかどうかを判定する。受け取っていない場合、マイクロプロセッサは、ホストからデータバッファ614に一つの情報セクタが転送されるまで待機する。一つの情報セクタを受け取ると、図10および図11を参照して上述した方法および装置によって、工程1222で次のセクタの書き込みが起動される。情報セクタの書き込みが完了すれば、1223で書き込み動作が検証される。工程1222で情報がセクタに正しくプログラムされていなかった場合、プロセスは工程1225に進み、後に詳述するように欠陥マネジメントルーチンが実行される。欠陥マネジメントルーチンが実行された後、工程1224では、セクタカウントが1ごとに減少される。書き込み動作が正しく実行されたと、1223では判定された場合、プロセスは工程1224に進み、欠陥マネジメントルーチンは実行されない。1226では、マイクロプロセッサは、セクタカウントが零に等しいかどうかを判定し、等しくない場合、ホスト供給LBAは1ごとに増加され、書き込みプロセスは工程1242に進んで、マイクロプロセッサは上記に説明したように、ブロック境界をチェックする。
【0073】
工程1226で、工程1238と同様に、書き込まれるセクタがまったく残っていない、即ちセクタカウントが零であると判定される場合、図示したプロセスは1228に進み、マイクロプロセッサは、移動フラグが立てられたかどうかを判定する。上述したように、移動フラグは、ホストによってLBAが再アクセスされたと1206で判定される場合、工程1210で立てられる。
【0074】
移動フラグが立てられていないと1228で判定される場合、書き込みプロセスは終了する。しかしながら、移動フラグが立てられたことが1228で判定されれば、ブロックは更新される。即ち、アクセスされていない現在のブロックのこれらのセクタは、工程1208で発見された空きブロックに、工程1214で割り当てられた仮想PBA値によって識別されたメモリバンク506のブロックの対応するセクタロケーションに移動される。このことは、おそらく例示によって最もよく理解される。
【0075】
考察の目的で、LBA1、2、3、4、5、および6によって識別されたセクタが既に書き込まれて、ホストは現在LBA3、4、および5によって識別されたセクタにデータを書き込むよう制御器に命令している、と想定されたい。さらに、LBA1〜6が書き込まれた最初の書き込みプロセスの間、それらは仮想PBA値「3」によって識別されたメモリバンク506(図6)のブロックロケーションに記憶されており、LBAロケーション3、4、および5は現在(第2の書き込みプロセスの間)仮想PBA値「8」によって識別されたメモリバンクのブロックロケーションに書き込まれているところである、と想定されたい。 ホスト供給LBA3、4、および5により識別されたロケーションの書き込みの間、工程1206で、マイクロプロセッサは、これらのブロックロケーションが再アクセスされていることを判定し、1210で移動フラグが立てられる。さらに、工程1230では、ホスト供給LBA3、4、および5により識別されたセクタが仮想PBA「8」によって識別されたブロックの対応するセクタに書き込まれた後、書き込み動作中に再アクセスされなかった、仮想PBA「3」によって識別されたブロックのセクタは、仮想PBA「3」によって識別されたブロックから仮想PBA「8」によって識別されたブロックの対応するセクタロケーションに移動され、その後、仮想PBA「3」によって識別されたブロックは消去される。この例では、セクタ0および7〜31(ブロックに32のセクタが存在すると想定して)など、仮想PBA「3」によって識別されたブロックの残りのセクタが、それらが存在するブロックの最後の消去以来アクセスされておらず、従って有効なセクタ情報をまったく含んでいない、と想定している。さもなくば、それらのセクタが以前にアクセスされている場合に、それらのセクタも仮想PBAロケーション8に移動されている。
【0076】
工程1230は、多くの方法で実施し得る。本発明の発明者等は、工程1230の移動動作を実行するために、代わりに使用し得る様々な方法および装置を開示している。特許出願では、本明細書に参照として援用する開示、1997年10月7日に申請され、「Moving Sequential Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題された第08/946,331号、および1997年3月31日に申請され「Moving Sectors Within a Block of Information In a Flash Memory Mass Storage Architecture」と題された第08/831,266号がある。
【0077】
図12aは、工程1237および工程1225(図12)で欠陥マネジメントルーチンが実行された場合に、マイクロプロセッサにより実施される工程を示す。ブロックマネジメントルーチンは、書き込み動作がうまく検証されなかったときに実施され、プログラムされたブロックは、何らかの形で欠陥を有し、非揮発性メモリの別の領域、即ち別のブロックがプログラミングのために発見される必要がある。
【0078】
工程1600では、うまくプログラムされなかったブロックに、「欠陥」フラグ756(図7)が立てられることにより、「欠陥有り」と標識される。工程1602では、制御器内のスペースマネジャーが、空きブロックを発見するよう命令を受ける。工程1604では、工程1234および1222(図12)にてプログラムされた情報、即ち「欠陥有り」と標識されたブロックが、工程1602で発見された空きブロック内の対応するセクタロケーションにプログラムされる。
【0079】
工程1606では、が以前にうまく書き込まれた任意のセクタ情報の存在に関して「欠陥有り」と識別されたブロックをチェックする。そのようなセクタが存在する場合、工程1608では、これらの以前にプログラムされたセクタは、図12の動作における追加ブロック情報として、空きブロックに移動される。
【0080】
図13は、本発明の別なる実施形態による、32のセクタを含む、メモリバンク506内の情報ブロックを記憶するためのメモリ記憶形式を一般的に示した表である。この実施形態では、偶数セクタが、2つのメモリユニットの第1に記憶する第1行ロケーションに記憶され、奇数セクタが、2つのメモリユニットの第2に記憶する第2行ロケーションに記憶される。図示した実施形態では、メモリバンク506は、BLCK0、BLCK1、BLCK(M−1)と指定された、それぞれが物理ブロックアドレス(PBA)を有する、複数のMブロック1302を含む。ブロック1302のそれぞれは、複数のNメモリ行ロケーション1304を含み、好適な実施形態ではN=16である。メモリバンク506の各ブロック1302は、第1のフラッシュメモリチップ670の第1のサブブロック1306、および第2のフラッシュメモリチップ672の対応する第2のサブブロック1308を含み、対応するサブブロックは同じ仮想PBAによって識別される。各メモリ行1304は、第1の行部分1310および対応する第2の行部分1312を含む。図示した実施形態では、各第1および第2の行部分1310、1312が、512バイトのデータ情報のための記憶に加え、エラー修正情報(ECC情報)およびフラグ情報のための記憶スペースを含む。
【0081】
第1の行部分1310のそれぞれは、偶数の情報セクタ(S0、S2、S4…)を記憶するための偶数セクタフィールド1314、およびフィールド1314に記憶される偶数セクタに対応するエラー修正情報を記憶するための偶数セクタエラー修正フィールド1316を含む。第2の行部分1312のそれぞれは、奇数情報セクタ(S1、S3、S5…)を記憶するための奇数セクタフィールド1318、フィールド1318に記憶される奇数セクタに対応するエラー修正情報を記憶するための奇数セクタエラー修正フィールド1320を含む。ブロックアドレスフィールド1322、およびフラグフィールド1324を含む。本発明では、奇数セクタを記憶するために、代わりとしてフィールド1314を用い得、偶数セクタを記憶するために、代わりとしてフィールド1318を使用し得ることが理解される。また、ブロックアドレスおよびフラグを記憶するために、替わりとして第1の行部分1310を使用し得る。
【0082】
フラグフィールド1324は、以下さらに説明するアクセス動作中において、制御器510(図6)によって使用されるフラグ情報を記憶するために使用される。ブロックアドレスフィールド1322は、BLCK0に対する「0」のように、ブロック1302に永久に割り当てられるブロックアドレスを記憶するために使用される。ブロックごとのブロックアドレスフィールドでは、単一ブロックアドレスエントリのみが要求される。好適な実施形態では、ブロックアドレスエントリは、最終行1304のブロックアドレスフィールド1322、即ち行15に入れられる。
【0083】
この代わりの実施形態では、第1および第2のスプリットバス680、684(図6)が、偶数および奇数セクタの受信データバイトにそれぞれ結合された配線を含む。制御器510(図6)は、第1および第2のスプリットバス680、684(図6)それぞれを同時に介して、偶数セクタおよび奇数セクタのバイトの同時書き込みによって、2つのセクタを同時に書き込む。また、スプリットバス680、684(図6)は、フラッシュメモリチップと、フラッシュ状態マシン642と、メモリ制御器510のECC論理ユニット660との間のECC情報の転送、およびフラッシュ状態マシン642からフラッシュメモリチップへのアドレス情報の転送を提供する。
【0084】
図14は、図6のメモリシステムの消去動作のための制御信号、アドレス信号、およびデータ信号のタイミングを示すタイミング図である。この図は、第1のスプリットバス680(図6)を介して、フラッシュ状態マシン642(図6)から第1のフラッシュメモリチップへの、時間多重化されたコマンド、アドレス、およびデータ情報を転送する第1のフラッシュ信号を示す波形902と、第2のスプリットバス684(図6)を介して、フラッシュ状態マシンから第2のフラッシュメモリチップへ時間多重化されたコマンド、アドレス、およびデータ信号を転送する第2のフラッシュ信号を示す波形904と、同時線(time line)1450と、複数の制御信号波形とを含む。制御信号波形は、すべて上述したが、制御配線イネーブル(CLE)信号を示す波形906と、アドレス配線イネーブル(ALE)信号を示す波形908と、書き込みイネーブル(WE)信号を示す波形910と、読み出しイネーブル(RE)信号を示す波形912と、フラッシュチップイネーブル(FCE*)を示す波形914と、フラッシュレディ/ビジー(ready/busy)信号,(FRDY_BSY*信号)を示す波形916とを含む。
【0085】
消去動作は、FCE*信号(波形914)が、HIGH状態からLOW状態に遷移する時刻E0において開始し、これにより、第1および第2のフラッシュメモリチップが、コマンド、アドレス、およびデータ信号の受信を開始することを可能にする。続く時刻E1では、CLE信号(波形906)が起動され、LOW状態からHIGH状態に遷移して、これにより、第1および第2のフラッシュメモリチップが制御信号を読み出すことを可能にする。時刻E2では、第1および第2のフラッシュ信号(波形902および904)それぞれが制御信号を発信する。第1のフラッシュ信号(波形902)は、第1のスプリットバス680(図6)を介して、第1のフラッシュメモリチップに「消去セット」コマンド60Hを発信し、第2のフラッシュ信号(波形904)は、第2のスプリットバス684(図6)を介して、第2のフラッシュメモリチップに読み出し状態コマンド信号70Hを発信する。時刻E3では、コマンド信号60Hおよび70Hはアクティブであるが、WE信号(波形910)はHIGH状態からLOW状態に遷移し、第1および第2のフラッシュメモリチップがコマンド信号60Hおよび70Hを読み出すことを可能にする。時刻E4では、CLE信号(波形906)が非アクティブ化されて、再びLOW状態に遷移し、これにより、フラッシュメモリチップがコマンド信号を読み出すことを不可能にする。
【0086】
また、時刻E4では、ALE信号(波形908)が起動され、LOW状態からHIGH状態に遷移して、これにより、第1および第2のフラッシュメモリチップがアドレス情報のパケットを読み出すことを可能にする。時刻E5およびE6では、第1のフラッシュ信号(波形902)が、第1および第2のアドレスパケットADD0およびADD1をそれそぞれ、第1のフラッシュメモリチップに発信し、第1および第2のアドレスパケットADD0およびADD1は、メモリバンクの第1のフラッシュメモリチップ670のサブブロック730(図7)を指定する。時刻E7では、ALE信号(波形908)が非アクティブ化される。時刻E3と時刻E4との間、および時刻E4とE5との間の期間において、WE信号(波形910)は、LOW状態に遷移して、フラッシュメモリチップがアドレスパケットを読み出すことを可能にする。
【0087】
時刻E8において、CLE信号(波形906)が、再び起動され、第1及び第2のメモリチップがコマンド信号を読み出すことを可能にする。時刻E9では、第1のフラッシュ信号(波形902)が、第1のフラッシュメモリチップに対する「消去確認コマンド」であるDOHを発信する。このコマンドは、CLE信号によってサンプリングされ、実際にフラッシュチップ内で消去動作を起動し、その後、第1のフラッシュメモリチップ670のアドレスされたサブブロック730(図7)の各メモリ行部分のデータフィールド734および738の内容が消去される。即ち「すべて1」の状態に設定される。時刻E10では、FRDY−BSY*信号(波形912)がHIGH状態からLOW状態に遷移し、少なくとも一つのフラッシュメモリチップがビジーであることをフラッシュ状態マシン642(図6)に指示する。
【0088】
時刻E11において、CLE信号(波形906)が起動され、第1および第2のフラッシュメモリチップがコマンド信号を読み出すことを可能にする。時刻E12において、第1および第2のフラッシュ信号(波形902および904)は、それぞれコマンド信号を発信する。第1のフラッシュ信号(波形902)は、第1のスプリットバス680(図6)を介して、第1のフラッシュメモリチップに読み出しコマンド信号70Hを発信し、第2のフラッシュ信号(波形904)は、第2のスプリットバス684(図6)を介して、第2のフラッシュメモリチップに消去コマンド信号60Hを発信する。時刻13では、コマンド信号70Hおよび60Hはアクティブであるが、WE信号(波形910)は、LOW状態に遷移し、第1および第2のフラッシュメモリチップがコマンド信号60Hおよび70Hを読み出すことを可能にする。時刻E14では、CLE信号(波形906)が非アクティブ化され、フラッシュメモリチップがコマンド信号を読み出すことを不可能にし、ALE信号(波形908)がアクティブ化されて、これにより、第1および第2のフラッシュメモリチップがアドレス情報のパケットを読み出すことを可能にする。時刻E15およびE16では、第2のフラッシュ信号(波形904)が、第1および第2のアドレスパケットADD0およびADD1をそれぞれ第2のフラッシュメモリチップに発信し、第1および第2のアドレスパケットADD0およびADD1は、メモリバンクの第2のフラッシュメモリチップ672のサブブロック731(図7)を指定する。時刻E17では、ALE信号(波形908)が非アクティブ化される。時刻E13とE14、およびE14とE15との間の期間において、WE信号(波形910)は、フラッシュメモリチップがアドレスパケットを読み出すことを可能にする。時刻E18では、CLE信号(波形906)が、再びアクティブ化され、第1および第2のメモリチップがコマンド信号を読み出すことを可能にする。時刻19では、第1のフラッシュ信号(波形902)が、第1のフラッシュメモリに対してDOHを発信し、指定されたブロックの各メモリ行部分732のデータフィールド734および738の内容を消去して、これにより、「すべて1」の状態に設定する。
【0089】
要約すると、メモリ制御器は、時刻E0とE11との間の期間TEB1において、第1のフラッシュメモリチップ670のアドレスされたサブブロック730(図7)を消去する。また、時刻E11と時刻E20との間の期間TEB2において、第2のフラッシュメモリチップ672の対応するアドレスされたサブブロック731(図7)を消去する。時刻E21では、FRDY−BSY*信号(波形916)が、LOW状態からHIGH状態に遷移し、両方のフラッシュメモリチップに対する消去動作が終了したことをフラッシュ状態マシン642(図6)に指示する。
【0090】
時刻E21の直後に、第1および第2のフラッシュ信号(波形902および904)の各々は、読み出し状態コマンド信号70Hを第1および第2のフラッシュメモリチップにそれぞれ発信する。読み出しコマンド信号70Hはアクティブであるが、WE信号(波形910)はLOW状態に遷移し、これにより、第1および第2のフラッシュメモリチップが読み出しコマンド信号70Hを読み出す。時刻E22では、第1および第2のフラッシュ信号(波形902および904)の両方が、制御器に状態データを転送する。
【0091】
こうして、上述のようにフラッシュメモリチップの、2つの対応するアドレスされたサブブロック上で、消去動作が実行された後、両方のフラッシュメモリチップの状態が同時に読み出される。
【0092】
メモリチップのサブブロック730、731のいずれかがエラーを有する場合、チップ内のブロック727全体(図7)が、第2のフラッシュメモリチップ672の欠陥フラグ756の内容を設定することにより、欠陥有りと標識される。
【0093】
図15は、本発明によって、第1のメモリユニット内に記憶される第1のサブブロックおよび第2のメモリユニット内に記憶される第2のサブブロックを含むブロックを消去するプロセスを示すフローチャートである。マイクロプロセッサ620(図6)は、符号(code)RAM626(図6)に記憶されている命令を実行し、図示したプロセスを実
施する。
【0094】
工程1502では、マイクロプロセッサ620(図6)が、消去されるブロックアドレスをロードする。工程1504では、マイクロプロセッサは1400(図14)のタイミング図に応じて、上述の消去動作を起動する。1506では、マイクロプロセッサは、LOW状態からHIGH状態に遷移するフラッシュレディ/ビジー(FRDY_BSY*)信号(図14の波形916)を読み出すことによって消去動作が終了したかどうかを判定し、両方のフラッシュメモリチップにおいて消去動作が終了したことを、フラッシュ状態マシン642(図6)に指示する。1508では、マイクロプロセッサはがフラッシュチップ670、672(図6)の状態を読み出す。1508では、マイクロプロセッサは、工程1504で実施された消去動作が、フラッシュチップ670、672(図6)の両方において成功であったかどうかを判定し、成功であった場合、プロセスは終了する。工程1504で実施された消去動作が、両方のフラッシュチップにおいて成功でなかったと判定された場合、マイクロプロセッサはフラッシュチップ670、672の両方を欠陥であると標識する。
【0095】
本発明を特定の実施形態により説明してきたが、当業者には変更および修正が自明になると予想される。従って以下の請求の範囲が、本発明の精神と範囲に納まるそのような変更および修正のすべてを包含することを意図している。
【特許請求の範囲】
【請求項1】
本願明細書に記載の不揮発性メモリシステム。
【請求項1】
本願明細書に記載の不揮発性メモリシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図12a】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図12a】
【図13】
【図14】
【図15】
【公開番号】特開2010−92506(P2010−92506A)
【公開日】平成22年4月22日(2010.4.22)
【国際特許分類】
【出願番号】特願2010−13538(P2010−13538)
【出願日】平成22年1月25日(2010.1.25)
【分割の表示】特願2006−26386(P2006−26386)の分割
【原出願日】平成11年2月25日(1999.2.25)
【出願人】(300005057)レクサー・メディア・インコーポレイテッド (13)
【氏名又は名称原語表記】Lexar Media,Inc
【Fターム(参考)】
【公開日】平成22年4月22日(2010.4.22)
【国際特許分類】
【出願日】平成22年1月25日(2010.1.25)
【分割の表示】特願2006−26386(P2006−26386)の分割
【原出願日】平成11年2月25日(1999.2.25)
【出願人】(300005057)レクサー・メディア・インコーポレイテッド (13)
【氏名又は名称原語表記】Lexar Media,Inc
【Fターム(参考)】
[ Back to top ]