(57)【特許請求の範囲】
【請求項１】
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
前記各フラッシュメモリから物理ブロックアドレスの同異に依存せずに１個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記フラッシュメモリがｎ個の場合に、
ｎ個の前記フラッシュメモリから物理ブロックアドレスの同異に依存せずに１個ずつ選択したｎ個の物理ブロックで１つの前記仮想ブロックを構成し、
前記所定セクタ数の領域の容量を、ｎ個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくすることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
各バンクから該バンク内での順番の同異に依存せずに１個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とするメモリコントローラ。
【請求項４】
前記バンクがｎ個の場合に、
ｎ個の前記バンクから該バンク内での順番の同異に依存せずに１個ずつ選択した物理ブロックで１つの前記仮想ブロックを構成し、
前記所定セクタ数の領域の容量を、ｎ個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくすることを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
前記仮想ブロックに含まれる複数の物理ブロック内の冗長領域に、該仮想ブロックに対応する前記仮想ブロックアドレスを書き込む仮想ブロックアドレス書込み手段を備えることを特徴とする請求項１乃至４の何れか１項に記載のメモリコントローラ。
【請求項６】
前記フラッシュメモリに含まれる物理ブロック内の冗長領域に書き込まれている前記仮想ブロックアドレスに基づいて、同一の前記仮想ブロックに属する物理ブロックを判別する仮想ブロック判別手段を備えることを特徴とする請求項５に記載のメモリコントローラ。
【請求項７】
フラッシュメモリと請求項１乃至６の何れか１項に記載のメモリコントローラとを備えることを特徴とするフラッシュメモリシステム。
【請求項８】
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
各フラッシュメモリから物理ブロックアドレスの同異に依存せずに１個ずつ選択した複数個の物理ブロックを仮想ブロックとし、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、
ことを特徴とするフラッシュメモリの制御方法。
【請求項９】
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
各バンクから該バンク内での順番の同異に依存せずに１個ずつ選択した複数個の物理ブロックを仮想ブロックとし、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、
ことを特徴とするフラッシュメモリの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関し、特に、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【０００２】
【従来技術】
近年、メモリカードやシリコンディスクなどに用いられる半導体メモリとして、フラッシュメモリ、特にＮＡＮＤ型フラッシュメモリが用いられることが多い。
ＮＡＮＤ型フラッシュメモリは、メモリセルを消去状態（論理値＝１）から書込状態（論理値＝０）に変化させる場合は、これをメモリセル単位で行うことが可能である一方、メモリセルを書込状態（０）から消去状態（１）に変化させる場合は、これをメモリセル単位で行うことができず、複数のメモリセルからなる所定の消去単位でしかこれを行うことができない。かかる一括消去動作は、一般的に「ブロック消去」と呼ばれる。
【０００３】
このように、ＮＡＮＤ型フラッシュメモリにおいては、書込状態（０）から消去状態（１）への変化をメモリセル単位で行うことができないため、フラッシュメモリにデータを書き込む場合には、データを書き込むべき領域に含まれる全てのメモリセルを事前にブロック消去しておく必要がある。ブロック消去された領域は、データが格納されていない空き領域となり、フラッシュメモリに新たなデータを書き込む場合には、このような空き領域が検索され、発見された空き領域に対して当該データが書き込まれることになる。ここで、各ブロックは、それぞれ、データの読み出し及び書き込みにおけるアクセス単位である複数の「ページ」によって構成されている。
【０００４】
このようなフラッシュメモリへのデータの書き込みは、次のようにして行う。
まず、ホストコンピュータからデータ書き込み要求が発行され、書き込み先のアドレス及び書き込むべきデータが送信されると、かかるデータが、コントローラ内に設けられたメモリに一時的に格納される。次いで、コントローラは、一時的にメモリに格納されているデータをフラッシュメモリへ転送し、これを書き込み先のアドレスが示すページに書き込むよう、フラッシュメモリに対して指示する。これに応答して、フラッシュメモリは、コントローラから転送されたデータを指定されたページに格納し、これにより、データ書き込み処理が完了する。
【０００５】
従来より、同一ブロック内における各ページは、ホストコンピュータから見て、連続するアドレスを有するものとして取り扱われている。
【０００６】
一方、ホストコンピュータからのデータ書き込み要求は、連続する複数アドレスに対してなされることが多く、この場合、コントローラは、あるブロック内の連続する複数ページに、次々とデータを書き込む必要がある。この場合、コントローラはまず、最初のページに書き込むべきデータをフラッシュメモリに転送し、かかるデータを当該ページに書き込むよう、フラッシュメモリに対して指示する。これに応答して、フラッシュメモリが、転送されたデータを指定されたページに格納すると、次いで、コントローラは、次のページに書き込むべきデータをフラッシュメモリに転送し、当該ページに書き込むよう、フラッシュメモリに対して指示する。このような処理を、要求された複数アドレスについて次々と実行することにより、連続する複数ページへの一連のデータの書き込み処理が完了する。
【０００７】
ここで、ひとつのページに対する書き込み処理に要する時間は、主に、書き込むべきデータをコントローラからフラッシュメモリに転送するために必要な時間（データ転送時間）、コントローラからフラッシュメモリに書き込み命令を発行する時間（命令発行時間）、実際にフラッシュメモリにデータが書き込まれる時間（フラッシュプログラム時間）等からなり、このうち、フラッシュプログラム時間は、特に長い時間（例えば、約２００μｓｅｃ）を要する。
【０００８】
従来は、このように比較的長い時間を要する１回のデータ書き込み処理を、ページ単位で次々と行っているため、ホストコンピュータより、連続する複数アドレスに対してデータ書き込み要求がなされた場合、一連のデータの書き込み処理が完了するには、データを書き込むべきページ数に実質的に比例した時間が必要であった。
【０００９】
このため、ホストコンピュータより連続する複数アドレスに対してデータ書き込み要求がなされた場合に、一連のデータの書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法が望まれていた。
【００１０】
【発明の解決しようとする課題】
したがって、本発明の目的は、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ及びこのようなメモリコントローラを備えるフラッシュメモリシステムを提供することである。
また、本発明の他の目的は、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるフラッシュメモリの制御方法を提供することである。
【００１１】
【課題を解決するための手段】
本発明の目的を達成するため、本発明の第１の観点に係るメモリコントローラは、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
前記各フラッシュメモリから物理ブロックアドレスの同異に依存せずに１個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とする。
【００１２】
例えば、前記フラッシュメモリがｎ個の場合に、ｎ個の前記フラッシュメモリから物理ブロックアドレスの同異に依存せずに１個ずつ選択したｎ個の物理ブロックで１つの前記仮想ブロックを構成し、前記所定セクタ数の領域の容量を、ｎ個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくする。
【００１３】
また、本発明の第２の観点に係るメモリコントローラは、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
各バンクから該バンク内での順番の同異に依存せずに１個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とする。
【００１４】
例えば、前記バンクがｎ個の場合に、ｎ個の前記バンクから該バンク内での順番の同異に依存せずに１個ずつ選択した物理ブロックで１つの前記仮想ブロックを構成し、前記所定セクタ数の領域の容量を、ｎ個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくしてもよい。
【００１５】
例えば、前記仮想ブロックに含まれる複数の物理ブロック内の冗長領域に、該仮想ブロックに対応する前記仮想ブロックアドレスを書き込む仮想ブロックアドレス書込み手段を備えてもよい。この場合、前記フラッシュメモリに含まれる物理ブロック内の冗長領域に書き込まれている前記仮想ブロックアドレスに基づいて、同一の前記仮想ブロックに属する物理ブロックを判別する仮想ブロック判別手段を備えてもよい。
【００１６】
また、本発明の第３の観点に係るフラッシュメモリシステムは、
フラッシュメモリと上述の構成を有するメモリコントローラとを備えることを特徴とする。
【００１７】
また、本発明の第４の観点に係るフラッシュメモリの制御方法は、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
前記各フラッシュメモリから物理ブロックアドレスの同異に依存せずに１個ずつ選択した複数個の物理ブロックを仮想ブロックとし、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、
ことを特徴とする。
【００１８】
また、本発明の第５の観点に係るフラッシュメモリの制御方法は、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
各バンクから該バンク内での順番の同異に依存せずに１個ずつ選択した複数個の物理ブロックを仮想ブロックとし、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、
ことを特徴とする。
【００１９】
【発明の実施の形態】
以下、添付図面を参照しながら、本発明の好ましい実施態様について詳細に説明する。
【００２０】
図１は、本発明の好ましい実施態様にかかるフラッシュメモリシステム１を概略的に示すブロック図である。
【００２１】
図１に示されるように、フラッシュメモリシステム１はカード形状であり、４個のフラッシュメモリチップ２−０〜２−３と、コントローラ３と、コネクタ４とが、一つのカード内に集積されて構成される。
【００２２】
フラッシュメモリシステム１は、ホストコンピュータ５に着脱可能に装着されて使用され、ホストコンピュータ５に対する一種の外部記憶装置として用いられる。
【００２３】
ホストコンピュータ５としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【００２４】
各フラッシュメモリチップ２−０〜２−３は、特に限定されるものではないが、それぞれ１２８Ｍバイト（１Ｇビット）の記憶容量を有する半導体チップである。
【００２５】
フラッシュメモリシステム１においては、５１２バイトを１ページとし、これを最小アクセス単位としている。したがって、これら各フラッシュメモリチップ２−０〜２−３は、それぞれ２５６Ｋページのアドレス空間を含み、フラッシュメモリチップ２−０〜２−３の合計で、１Ｍページのアドレス空間を備えることになる。
【００２６】
また、フラッシュメモリシステム１においては、これら４つのフラッシュメモリチップ２−０〜２−３は、５１２Ｍバイト（４Ｇビット）の記憶容量を有し、１Ｍページのアドレス空間を備える一つの大きなメモリとして取り扱われる。このため、これら１Ｍページからなるアドレス空間から特定のページにアクセスするためには、少なくとも２０ビットのアドレス情報が必要となる。したがって、ホストコンピュータ５は、フラッシュメモリシステム１に対し、少なくとも２０ビットのアドレス情報を供給することによって、特定のページに対するアクセスを行う。
【００２７】
以下、ホストコンピュータ５よりフラッシュメモリシステム１に供給される２０ビットのアドレス情報を「ホストアドレス」と呼ぶ。
【００２８】
コントローラ３は、マイクロプロセッサ６と、ホストインターフェースブロック７と、ＳＲＡＭワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、フラッシュシーケンサブロック１２とから構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積されている。
【００２９】
マイクロプロセッサ６は、コントローラ３を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【００３０】
ホストインターフェースブロック７は、バス１３を介してコネクタ４に接続されており、マイクロプロセッサ６による制御のもと、ホストコンピュータ５とのデータやアドレス情報、ステータス情報、外部コマンド情報の授受を行う。
【００３１】
すなわち、フラッシュメモリシステム１がホストコンピュータ５に装着されると、フラッシュメモリシステム１とホストコンピュータ５とは、バス１３、コネクタ４及びバス１４を介して相互に接続され、かかる状態において、ホストコンピュータ５よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてコントローラ３の内部に取り込まれ、また、コントローラ３よりホストコンピュータ５に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストコンピュータ５に供給される。
【００３２】
さらに、ホストインターフェースブロック７は、ホストコンピュータ５より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ（図示せず）及びエラーが発生した場合にセットされるエラーレジスタ等（図示せず）を有している。
【００３３】
ＳＲＡＭワークエリア８は、マイクロプロセッサ６によるフラッシュメモリチップ２−０〜２−３の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭセルによって構成される。
【００３４】
バッファ９は、フラッシュメモリチップ２−０〜２−３から読み出されたデータ及びフラッシュメモリチップ２−０〜２−３に書き込むべきデータを一時的に蓄積するバッファである。
【００３５】
すなわち、フラッシュメモリチップ２−０〜２−３から読み出されたデータは、ホストコンピュータ５が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリチップ２−０〜２−３に書き込むべきデータは、フラッシュメモリチップ２−０〜２−３が書き込み可能な状態となるまでバッファ９に保持される。
【００３６】
フラッシュメモリインターフェースブロック１０は、バス１５を介して、フラッシュメモリチップ２−０〜２−３とのデータやアドレス情報、ステータス情報、内部コマンド情報の授受を行うとともに、各フラッシュメモリチップ２−０〜２−３に対して対応するチップ選択信号＃０〜＃３を供給するための機能ブロックである。
【００３７】
チップ選択信号＃０〜＃３は、ホストコンピュータ５からデータの読み出しまたは書き込みが要求された場合、ホストコンピュータ５より供給されるホストアドレスの下位２ビットに基づいて、そのいずれかが活性化される信号である。
【００３８】
具体的には、ホストアドレスの下位２ビットが「００」であればチップ選択信号＃０が活性化され、「０１」であればチップ選択信号＃１が活性化され、「１０」であればチップ選択信号＃２が活性化され、「１１」であればチップ選択信号＃３が活性化される。
【００３９】
対応するチップ選択信号が活性化されたフラッシュメモリチップ２−０〜２−３は選択状態となり、データの読み出しまたは書き込みが可能となる。
【００４０】
尚、「内部コマンド」とは、コントローラ３がフラッシュメモリチップ２−０〜２−３を制御するためのコマンドであり、ホストコンピュータ５がフラッシュメモリシステム１を制御するための「外部コマンド」と区別される。
【００４１】
ＥＣＣブロック１１は、フラッシュメモリチップ２−０〜２−３に書き込むデータに付加すべきエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出しデータに含まれる誤りを訂正するための機能ブロックである。
【００４２】
フラッシュシーケンサブロック１２は、フラッシュメモリチップ２−０〜２−３とバッファ９とのデータの転送を制御するための機能ブロックである。
【００４３】
フラッシュシーケンサブロック１２は、複数のレジスタ（図示せず）を備え、マイクロプロセッサ６による制御のもと、フラッシュメモリチップ２−０〜２−３からのデータの読み出しまたはフラッシュメモリチップ２−０〜２−３へのデータの書き込みに必要な値がこれらレジスタに設定されると、データの読み出しまたは書き込みに必要な一連の動作を自動的に実行する。
【００４４】
次に、各フラッシュメモリチップ２−０〜２−３を構成する各フラッシュメモリセルの具体的な構造について説明する。
【００４５】
図２は、フラッシュメモリチップ２−０〜２−３を構成する各フラッシュメモリセル１６の構造を概略的に示す断面図である。
【００４６】
図２に示されるように、フラッシュメモリセル１６は、ｐ型半導体基板１７に形成されたＮ型のソース拡散領域１８及びドレイン拡散領域１９と、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７を覆って形成されたトンネル酸化膜２０と、トンネル酸化膜２０上に形成されたフローティングゲート電極２１と、フローティングゲート電極２１上に形成された絶縁膜２２と、絶縁膜２２上に形成されたコントロールゲート電極２３とから構成される。
【００４７】
このような構成を有するフラッシュメモリセル１６は、フラッシュメモリチップ２−０〜２−３内において、複数個直列に接続されて、ＮＡＮＤ型フラッシュメモリを構成する。
【００４８】
フラッシュメモリセル１６は、フローティングゲート電極２１に電子が注入されているか否かによって、「消去状態」と「書込状態」のいずれかの状態が示される。
【００４９】
フラッシュメモリセル１６が消去状態であることは、当該フラッシュメモリセル１６にデータ「１」が保持されていることを意味し、フラッシュメモリセル１６が書込状態であることは、当該フラッシュメモリセル１６にデータ「０」が保持されていることを意味する。すなわち、フラッシュメモリセル１６は、１ビットのデータを保持することが可能である。
【００５０】
図２に示されるように、消去状態とは、フローティングゲート電極２１に電子が注入されていない状態を指す。
【００５１】
消去状態におけるフラッシュメモリセル１６は、デプレッション型のトランジスタとなり、コントロールゲート電極２３に読み出し電圧が印加されているか否かに関わらず、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７の表面にはチャネル２４が形成される。
【００５２】
したがって、ソース拡散領域１８とドレイン拡散領域１９とは、コントロールゲート電極２３に読み出し電圧が印加されているか否かに関わらず、チャネル２４によって常に電気的に接続状態となる。
【００５３】
図３は、書込状態であるフラッシュメモリセル１６を概略的に示す断面図である。
【００５４】
図３に示されるように、書込状態とは、フローティングゲート電極２１に電子が蓄積されている状態を指す。
【００５５】
フローティングゲート電極２１はトンネル酸化膜２０及び絶縁膜２２に挟まれているため、一旦、フローティングゲート電極２１に注入された電子は、きわめて長時間フローティングゲート電極２１内にとどまる。
【００５６】
書込状態におけるフラッシュメモリセル１６は、エンハンスメント型のトランジスタとなり、コントロールゲート電極２３に読み出し電圧が印加されていないときには、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７の表面にはチャネルが形成されず、コントロールゲート電極２３に読み出し電圧が印加されているときには、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７の表面にチャネル（図示せず）が形成される。
【００５７】
したがって、コントロールゲート電極２３に読み出し電圧が印加されていない状態では、ソース拡散領域１８とドレイン拡散領域１９とは電気的に絶縁され、コントロールゲート電極２３に読み出し電圧が印加された状態では、ソース拡散領域１８とドレイン拡散領域１９とが電気的に接続される。
【００５８】
ここで、選択されたフラッシュメモリセル１６が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。
【００５９】
すなわち、複数個直列に接続されたフラッシュメモリセル１６のうち、選択されたフラッシュメモリセル１６以外の全てのフラッシュメモリセル１６のコントロールゲート電極２３に読み出し電圧を印加し、この状態において、これらフラッシュメモリセル１６の直列体に電流が流れるか否かを検出する。
【００６０】
その結果、かかる直列体に電流が流れれば、選択されたフラッシュメモリセル１６が消去状態であると判断することができ、かかる直列体に電流が流れなければ、選択されたフラッシュメモリセル１６が書込状態であると判断することができる。
【００６１】
このようにして、直列体に含まれる任意のフラッシュメモリセル１６に保持されたデータが「０」であるのか「１」であるのかを読み出すことができる。
但し、ＮＡＮＤ型フラッシュメモリにおいては、ひとつの直列体に含まれる２以上のフラッシュメモリセル１６に保持されたデータを同時に読み出すことはできない。
【００６２】
また、消去状態であるフラッシュメモリセル１６を書込状態に変化させる場合、コントロールゲート電極２３に正の高電圧が印加され、これによって、トンネル酸化膜２０を介してフローティングゲート電極２１へ電子が注入される。フローティングゲート電極２１への電子の注入は、ＦＮトンネル電流による注入が可能である。
【００６３】
一方、書込状態であるフラッシュメモリセル１６を消去状態に変化させる場合、コントロールゲート電極２３に負の高電圧が印加され、これによって、トンネル酸化膜２０を介してフローティングゲート電極２１に蓄積された電子が排出される。
【００６４】
次に、各フラッシュメモリチップ２−０〜２−３の持つアドレス空間の具体的な構成について説明する。
【００６５】
図４は、フラッシュメモリチップ２−０のアドレス空間の構造を概略的に示す図である。
【００６６】
図４に示されるように、フラッシュメモリチップ２−０のアドレス空間は、物理ブロック＃０〜＃８１９１からなる８１９２個の物理ブロックによって構成される。
【００６７】
また、図４には示されていないが、フラッシュメモリチップ２−１〜２−３も、フラッシュメモリチップ２−０と同様に物理ブロック＃０〜＃８１９１からなる８１９２個の物理ブロックによって構成されている。
【００６８】
これら各ブロックは、いずれも１６Ｋバイトの記憶容量を有する。ここで、上記各物理ブロックは、データの消去単位である。
【００６９】
すなわち、フラッシュメモリチップ２−０〜２−３では、各フラッシュメモリセル１６ごとに、その状態を書込状態から消去状態に変化させることはできず、フラッシュメモリセル１６を書込状態から消去状態に変化させる場合は、当該フラッシュメモリセル１６が属するブロックに含まれる全てのフラッシュメモリセル１６が一括して消去状態とされる。
【００７０】
逆に、フラッシュメモリチップ２−０〜２−３では、各フラッシュメモリセル１６ごとに、その状態を消去状態から書込状態に変化させることは可能である。
【００７１】
さらに、図４に示されるように、フラッシュメモリチップ２−０を構成する各物理ブロック＃０〜＃８１９１は、それぞれ物理ページ＃０〜＃３１からなる３２個の物理ページによって構成されている。
【００７２】
また、フラッシュメモリチップ２−１〜２−３を構成する各物理ブロック＃０〜＃８１９１も、フラッシュメモリチップ２−０を構成する各物理ブロック＃０〜＃８１９１と同様に、それぞれ３２個の物理ページによって構成されている。
【００７３】
これら各ページはデータの読み出し及び書き込みにおけるアクセス単位であり、図４に示されるように、ビットｂ０〜ｂ７からなる８ビットを１バイトとして、それぞれ５１２バイトのユーザ領域２５と１６バイトの冗長領域２６によって構成される。
【００７４】
ユーザ領域２５は、ホストコンピュータ５より供給されるユーザデータが格納される領域である。
【００７５】
図５は、冗長領域２６のデータ構造を概略的に示す図である。
【００７６】
図５に示されるように、冗長領域２６は、エラーコレクションコード格納領域２８、仮想ブロックアドレス格納領域２９及びその他の付加情報によって構成される。
【００７７】
エラーコレクションコード格納領域２８は、対応するユーザ領域２５に格納されたユーザデータの誤りを訂正するための付加情報（エラーコレクションコード）を格納するための領域であり、ユーザ領域２５に格納されたデータに含まれるデータの誤りが所定数以下であれば、エラーコレクションコード格納領域２８に格納されたエラーコレクションコードを用いてこれを訂正し、正しいデータとすることができる。
【００７８】
仮想ブロックアドレス格納領域２９は、当該物理ブロックが属する仮想ブロックのアドレス（仮想ブロックアドレス）を格納するための領域である。
【００７９】
仮想ブロック及び仮想ブロックアドレスの詳細については後述する。
【００８０】
冗長領域２６のその他の領域には、当該ブロックについての異常を表示するブロックステータス等が格納されているが、これらについての説明は省略する。
【００８１】
このように、各ページは、５１２バイトのユーザ領域２５と１６バイトの冗長領域２６からなるので、各ページは、８×（５１２バイト＋１６バイト）＝４２２４個のフラッシュメモリセルによって構成されることになる。このように、各フラッシュメモリチップ２−０〜２−３は８１９２個の物理ブロックによって構成されるが、このうち、８０００個の物理ブロックは実際にデータを格納することができるブロック（以下、「実使用ブロック」という）として取り扱われ、残りの１９２個のブロックは「冗長ブロック」として取り扱われる。
【００８２】
冗長ブロックは、データ書き込みに備えて待機している空きブロックである。
【００８３】
フラッシュメモリチップ２−０〜２−３のアドレス空間は、実使用ブロックのみによって構成される。ある物理ブロックに不良が発生し、使用不能となった場合には、不良が発生したブロックの数だけ冗長ブロックとして割り当てられる物理ブロックの数が減らされる。
【００８４】
さらに、実使用ブロックは、各フラッシュメモリチップ２−０〜２−３から一つずつ選ばれた４つの物理ブロックが仮想的に結合された「仮想ブロック」を構成する。
【００８５】
これにより、仮想ブロック＃０〜＃７９９９からなる８０００個の仮想ブロックが構成される。
【００８６】
図６は、仮想ブロックのマッピングの一例を示す図である。
【００８７】
図６に示される例では、フラッシュメモリチップ２−０に含まれる物理ブロック＃１５０、フラッシュメモリチップ２−１に含まれる物理ブロック＃６８１１、フラッシュメモリチップ２−２に含まれる物理ブロック＃８１９１、フラッシュメモリチップ２−３に含まれる物理ブロック＃３０４８が仮想的に結合され、一つの仮想ブロックを構成している。
【００８８】
このように、本実施態様においては、ひとつの仮想ブロックを構成する４つの物理ブロックは互いに異なるフラッシュメモリチップに含まれていることが必要である。このようにして、８０００個の仮想ブロックが構成される。
【００８９】
図７は、図６に示された仮想ブロックの仮想ページ構造を示す図である。
【００９０】
図７に示されるように、仮想ブロックは、仮想ページ＃０〜ページ＃１２７からなる１２８個の仮想ページによって構成される一つのブロックとして取り扱われる。
【００９１】
ここで、図７に示す仮想ブロックのうち、物理ブロック＃１５０からなる部分に含まれる３２個のページは、仮想ページ番号として４ｉ（ｉは、物理ページ番号）が与えられ、物理ブロック＃６８１１からなる部分に含まれる３２個のページは、仮想ページ番号として４ｉ＋１が与えられ、物理ブロック＃８１９１からなる部分に含まれる３２個のページは、仮想ページ番号として４ｉ＋２が与えられ、物理ブロック＃３０４８からなる部分に含まれる３２個のページは、仮想ページ番号として４ｉ＋３が与えられる。
【００９２】
詳細は後述するが、これら仮想ページ番号は、ホストアドレスの下位７ビットと対応している。
【００９３】
次に、仮想ブロックとこれを構成する４つの物理ブロックとの関係について説明する。
【００９４】
図８は、８０００個の仮想ブロックと、これら各仮想ブロックを構成する４つの物理ブロックとの関係を示すアドレス変換テーブル２７のデータ構造を示す概略図である。
【００９５】
図８に示されるように、アドレス変換テーブル２７は、仮想ブロック表示領域＃０〜＃７９９９からなる８０００個の仮想ブロック表示領域がこの順に並んで構成され、これら各仮想ブロック表示領域＃０〜＃７９９９は、それぞれセル＃ｊ−０〜セル＃ｊ−３（ｊは、仮想ブロックアドレス）からなる４個のセル及び１個のフラグによって構成される。
【００９６】
例えば、仮想ブロック表示領域＃０はセル＃０−０〜セル＃０−３とフラグとによって構成され、仮想ブロック表示領域＃１はセル＃１−０〜セル＃１−３とフラグとによって構成される。したがって、アドレス変換テーブル２７は、３２０００個のセルと８０００個のフラグによって構成されることになる。
【００９７】
ここで、セル＃ｊ−０を構成するスロット＃０はフラッシュメモリチップ２−０に対応し、セル＃ｊ−１を構成するスロット＃１はフラッシュメモリチップ２−１に対応し、セル＃ｊ−２を構成するスロット＃２はフラッシュメモリチップ２−２に対応し、セル＃ｊ−３を構成するスロット＃３はフラッシュメモリチップ２−３に対応している。
【００９８】
各仮想ブロック表示領域に含まれるセル＃ｊ−０〜＃ｊ−３には、それぞれ当該仮想ブロックを構成する物理ブロックのアドレス（物理ブロックアドレス）が格納される。
【００９９】
ここで、「物理ブロックアドレス」とは、各物理ブロックに割り当てられたブロック番号を２進数で表したアドレスであり、１３ビットで構成される。
【０１００】
例えば、図６及び図７に示された仮想ブロックが、仮想ブロック＃０であるとすれば、当該仮想ブロックは、物理ブロック＃１５０、物理ブロック＃６８１１、物理ブロック＃８１９１及び物理ブロック＃３０４８より構成されることから、これら物理ブロックの物理ブロックアドレスはそれぞれ「０００００１００１０１１０Ｂ」、「１１０１０１００１１０１１Ｂ」、「１１１１１１１１１１１１１Ｂ」、及び「０１０１１１１１０１０００Ｂ」となり、セル＃０−０〜＃０−３には、これら物理ブロックアドレスがそれぞれ格納されることになる。
【０１０１】
また、各仮想ブロック表示領域に含まれるフラグは、対応するセル＃ｊ−０〜＃ｊ−３に格納されている内容が有効であるか無効であるかを示している。
【０１０２】
具体的には、フラグが「１」を示していれば対応するセルに格納されている内容は有効であり、フラグが「０」を示していれば対応するセルに格納されている内容は無効である。したがって、フラグが「０」を示している仮想ブロック表示領域においては、これに含まれるセル＃ｊ−０〜＃ｊ−３に格納されている内容は無視される。このようなデータ構造を有するアドレス変換テーブル２７は、ＳＲＡＭワークエリア８上に展開される。
【０１０３】
上述のように、各アドレス変換テーブルは、３２０００個のセルと８０００個のフラグによって構成されており、各セルには１３ビット（２バイト）の情報を格納する必要があり、各フラグには１ビットの情報を格納する必要があるから、アドレス変換テーブル２７は、ＳＲＡＭワークエリア８の記憶容量のうち、約６４ｋバイトを占有することとなる。
【０１０４】
アドレス変換テーブル２７の生成は、次のように行われる。
【０１０５】
フラッシュメモリチップ２−０〜２−３を構成する各物理ブロックのうち、データが格納されている物理ブロックの各先頭ページ（物理ページ＃０）に含まれる冗長領域２６には、上述のとおり、ＥＣＣブロック１１によって生成されたエラーコレクションコードの他、当該物理ブロックがどの仮想ブロックに属するかを示す仮想ブロックアドレスが含まれており、各物理ブロックの各先頭ページに格納されている仮想ブロックアドレスがマイクロプロセッサ６による制御のもと、フラッシュメモリインターフェースブロック１０を介して読み出される。
【０１０６】
ここで、消去済みの空きブロックにおいては、冗長領域２６の仮想ブロックアドレス格納領域２９に格納されている仮想ブロックアドレスは「オール１（１１１１１１１１１１１１１Ｂ）」となっているはずである。
【０１０７】
すなわち、仮想ブロックは、上述のとおり、＃０（０００００００００００００Ｂ）〜＃７９９９（１１１１１００１１１１１１Ｂ）までしかなく、したがって、これがオール１（１１１１１１１１１１１１１Ｂ）である場合には、当該物理ブロックが消去済みの空きブロックであると判断することができる。
【０１０８】
一方、冗長領域２６の仮想ブロックアドレス格納領域２９に格納された仮想ブロックアドレスが「０００００００００００００Ｂ」〜「１１１１１００１１１１１１Ｂ」である場合には、当該仮想ブロックアドレスは有効な仮想ブロックアドレスである。
【０１０９】
したがって、マイクロプロセッサ６は、各物理ブロックの先頭ページ（物理ページ＃０）の冗長領域２６に含まれる仮想ブロックアドレスを参照し、これがオール１ではなく有効な仮想ブロックアドレスを示していれば、アドレス変換テーブル２７を構成するセルのうち、チップ番号及び読み出された仮想ブロックアドレスによって特定されるセルに、当該物理ブロックの物理ブロックアドレスを格納する。
【０１１０】
例えば、フラッシュメモリチップ２−０に属する物理ブロック＃１２より読み出された仮想ブロックアドレスが「１２３」であれば、セル＃１２３−０に、物理ブロックアドレスとして「１２」が書き込まれ、対応するフラグが「１」にされる。
【０１１１】
このような処理が、データが格納されている全ての物理ブロックについて行われる。
【０１１２】
これにより、アドレス変換テーブル２７の生成が完了する。
【０１１３】
次に、ＳＲＡＭワークエリア８に格納される消去済みブロックキュー３０のデータ構造について説明する。
【０１１４】
図９は、ＳＲＡＭワークエリア８に格納される消去済みブロックキュー３０のデータ構造を示す概略図である。
【０１１５】
図９に示されるように、消去済みブロックキュー３０は、キューセット＃０〜＃５からなる６つのキューセットによって構成され、これらは、それぞれキュー＃ｋ−０〜キュー＃ｋ−３（ｋは、キューセット番号）からなる４個のキューによって構成される。
【０１１６】
例えば、キューセット＃０はキュー＃０−０〜キュー＃０−３によって構成され、キューセット＃１はキュー＃１−０〜キュー＃１−３によって構成される。したがって、消去済みブロックキュー３０は、２４個のキューによって構成される。
【０１１７】
ここで、キュー＃ｋ−０はフラッシュメモリチップ２−０に対応し、キュー＃ｋ−１はフラッシュメモリチップ２−１に対応し、キュー＃ｋ−２はフラッシュメモリチップ２−２に対応し、キュー＃ｋ−３はフラッシュメモリチップ２−３に対応している。
【０１１８】
各キューセット＃０〜＃５を構成するキュー＃ｋ−０〜＃ｋ−３には、ユーザ領域２５を構成する全てのフラッシュメモリセル１６が消去状態となっている物理ブロックの物理ブロックアドレスが格納される。したがって、例えば、フラッシュメモリチップ２−０に属する消去済みの物理ブロック＃１５３を消去済みブロックキュー３０に登録する場合、当該物理ブロックアドレスである「０００００１００１１００１Ｂ」がキュー＃０−０〜＃５−０のいずれかに格納される。
【０１１９】
同様にして、例えば、フラッシュメモリチップ２−２に属する消去済みのブロック＃６５５２を消去済みブロックキュー３０に登録する場合、当該物理ブロックアドレスである「１１００１１００１１０００Ｂ」がキュー＃０−２〜＃５−２のいずれかに格納される。
【０１２０】
このようにして、各フラッシュメモリチップ２−０〜２−３ごとに最大６つの消去済みブロックの物理ブロックアドレスが消去済みブロックキュー３０に登録され、これによって最大６つのキューセット＃０〜＃５が生成される。
【０１２１】
消去済みブロックキュー３０の生成は、マイクロプロセッサ６による制御のもと、上述したアドレス変換テーブル２７の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から、これらキューに登録すべき物理ブロックが選ばれる。
【０１２２】
次に、本実施態様にかかるフラッシュメモリシステム１の動作について、データの読み出し動作、データの書き込み動作の順に説明する。
【０１２３】
まず、本実施態様にかかるフラッシュメモリシステム１によるデータの読み出し動作について、具体例に用いて説明する。
【０１２４】
ここでは、ホストコンピュータ５より、バス１４、コネクタ４及びバス１３を介して、外部コマンドの一種である外部読み出しコマンドとともにホストアドレス、例えば「０００００１１１１１１１１１１０００００Ｂ」がフラッシュメモリシステム１に供給された場合を例に説明する。
【０１２５】
まず、ホストアドレス及び外部読み出しコマンドがコントローラ３に供給されると、これらホストアドレス及び外部読み出しコマンドは、ホストインターフェースブロック７が有するタスクファイルレジスタ（図示せず）に一時的に格納される。
【０１２６】
次に、タスクファイルレジスタに格納されたホストアドレスが正しいアドレスであるか否か、すなわち、かかるホストアドレスが、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック７によって判定される。
【０１２７】
かかる判定の結果、タスクファイルレジスタ（図示せず）に格納されたホストアドレスが有効なアドレスであると判断されれば、アドレス変換テーブル２７を用いて内部アドレスに変換される。
【０１２８】
一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック７が有するエラーレジスタ（図示せず）がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【０１２９】
次に、アドレス変換テーブル２７を用いた内部アドレスへの変換について、図１０を参照しながら説明する。
【０１３０】
図１０においては、便宜上、ホストアドレスの上位１３ビットを「Ａ」とし、上位１４ビット目〜上位１８ビット目からなる５ビットを「Ｂ」とし、下位２ビットを「Ｃ」と表記している。
【０１３１】
まず、マイクロプロセッサ６による制御のもと、２０ビットのホストアドレスから上位１３ビット（Ａ）が取り出され、これによってアドレス変換テーブル２７内の仮想ブロック表示領域が特定される。
【０１３２】
本例では、ホストアドレスの上位１３ビット（Ａ）が「０００００１１１１１１１１Ｂ」であるから、選択される仮想ブロック表示領域は、仮想ブロック表示領域＃２５５となる。
【０１３３】
次に、マイクロプロセッサ６による制御のもと、ＳＲＡＭワークエリア８に格納されているアドレス変換テーブル２７から仮想ブロック表示領域＃２５５が選択され、仮想ブロック表示領域＃２５５を構成する４個のセルのうち、ホストアドレスの下位２ビット（Ｃ）と同じ枝番号を有するセルの内容が読み出される。
【０１３４】
本例では、ホストアドレスの下位２ビット（Ｃ）が「００Ｂ（０）」であるから、その内容が読み出されるセルは、セル＃２５５−０となる。本例では、かかるセル＃２５５−０の内容が「００００１００００１１１１Ｂ」であるものとする。
【０１３５】
次に、マイクロプロセッサ６による制御のもと、ホストアドレスの下位２ビット（Ｃ）、読み出されたセルの内容、及びホストアドレスの上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）がこの順に結合される。結合されたアドレスは、内部アドレスとなる。
【０１３６】
この場合、ホストアドレスの下位２ビット（Ｃ）は「００Ｂ」であり、読み出されたセルの内容は「００００１００００１１１１Ｂ」であり、ホストアドレスの上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）は「１１０００Ｂ」であることから、得られる内部アドレスは、「００００００１００００１１１１１１０００Ｂ」となる。
【０１３７】
以上より、ホストアドレスから内部アドレスへの変換が完了する。
【０１３８】
一方、ホストインターフェースブロック７が有するタスクファイルレジスタ（図示せず）に外部読み出しコマンドが格納されていることに応答して、マイクロプロセッサ６による制御のもと、フラッシュシーケンサブロック１２が有する各種レジスタ（いずれも図示せず）に対する設定がなされる。かかる設定は、次のように行われる。
【０１３９】
まず、マイクロプロセッサ６による制御のもと、内部コマンドの一種である内部読み出しコマンドがフラッシュシーケンサブロック１２内の所定のレジスタに設定される。
【０１４０】
さらに、マイクロプロセッサ６による制御のもと、２０ビット長の内部アドレスがフラッシュシーケンサブロック１２内の所定のレジスタに設定される。
【０１４１】
このようにしてフラッシュシーケンサブロック１２に含まれる各種レジスタに対する設定が完了すると、フラッシュシーケンサブロック１２による一連の読み出し動作が実行される。
【０１４２】
フラッシュシーケンサブロック１２による一連の読み出し動作は、次の通りである。
【０１４３】
まず、フラッシュシーケンサブロック１２は、所定のレジスタ（図示せず）に格納された内部アドレスの上位２ビットに基づき、フラッシュメモリチップ２−０〜２−３のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０１４４】
この場合、内部アドレスの上位２ビットは「００Ｂ（０）」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ２−０であり、チップ選択信号＃０が活性化される。これにより、フラッシュメモリチップ２−０は、データの読み出しが可能な状態となる。一方、チップ選択信号＃１〜＃３は、非活性状態が保たれる。
【０１４５】
次に、フラッシュシーケンサブロック１２は、所定のレジスタに格納された内部アドレスの下位１８ビット「００００１００００１１１１１１０００Ｂ」を、所定のレジスタに格納された内部読み出しコマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０１４６】
バス１５に供給された１８ビットの内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ２−０〜２−３に対し共通に供給されるが、上述のとおり、チップ選択信号＃０が活性状態となっており、チップ選択信号＃１〜＃３は非活性状態となっているので、バス１５に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ２−０に対してのみ有効となる。
【０１４７】
これにより、フラッシュメモリチップ２−０は、供給された１８ビットの内部アドレス「００００１００００１１１１１１０００Ｂ」に格納されたデータの読み出しを実行する。
【０１４８】
ここで、供給された１８ビットの内部アドレス「００００１００００１１１１１１０００Ｂ」のうち、上位１３ビットは物理ブロックを特定し、下位５ビットは当該ブロック内の物理ページを特定するために用いられる。
【０１４９】
この場合、上位１３ビットは「００００１００００１１１１Ｂ」であり、下位５ビットは「１１０００Ｂ」であるから、特定される物理ブロックは物理ブロック＃２７１となり、特定される物理ページは物理ページ＃２４となる。すなわち、フラッシュメモリチップ２−０は、物理ブロック＃２７１の物理ページ＃２４に格納されたデータの読み出しを実行する。
【０１５０】
かかる読み出し動作においては、ユーザ領域２５に格納されたユーザデータのみならず、冗長領域２６に格納された付加情報も読み出される。
【０１５１】
尚、図７において説明したように、本実施態様においては、４つの物理ブロックが仮想的に結合されて一つの仮想ブロックが構成されているので、フラッシュメモリチップ２−０に属するブロック＃２７１の物理ページ＃２４は、仮想ページ＃９６に対応する。
【０１５２】
このようにしてフラッシュメモリチップ２−０から読み出されたユーザデータ及び付加情報は、バス１５を介してフラッシュメモリインターフェースブロック１０に供給される。
【０１５３】
フラッシュメモリインターフェースブロック１０がユーザデータ及び付加情報を受け取ると、フラッシュシーケンサブロック１２による制御のもと、付加情報に含まれるエラーコレクションコードが抽出され、ユーザデータ及び抽出されたエラーコレクションコードがＥＣＣブロック１１に供給される。
【０１５４】
ユーザデータ及びエラーコレクションコードがＥＣＣブロック１１に供給されると、ＥＣＣブロック１１は、エラーコレクションコードに基づき、ユーザデータに誤りがあるか否かを判断し、誤りがないと判断すれば、供給されたユーザデータをそのままバッファ９に格納し、誤りがあると判断されれば、これをエラーコレクションコードに基づいてこれを訂正し、訂正後のユーザデータをバッファ９に格納する。
【０１５５】
このようにしてバッファ９に誤りのないユーザデータが格納されると、フラッシュシーケンサブロック１２による一連の読み出し動作が完了する。
【０１５６】
そして、バッファ９に格納されたユーザデータは、マイクロプロセッサ６による制御のもと、ホストインターフェースブロック７より、バス１３、コネクタ４及びバス１４を介してホストコンピュータ５に供給される。
【０１５７】
以上により、一連の読み出し動作が完了する。
【０１５８】
次に、本実施態様にかかるフラッシュメモリシステム１によるデータの書き込み動作について説明する。
【０１５９】
フラッシュメモリシステム１によるデータの書き込み動作については、新規データの書き込み動作、すなわち現在データが割り当てられていないホストアドレスに対して新しくデータを割り当てる動作と、データの上書き動作、すなわち、既にデータが割り当てられているホストアドレスに対してこれと異なるデータを割り当てる動作とに分けて説明する。
【０１６０】
まず、フラッシュメモリシステム１による新規データの書き込み動作について、具体例を用いて説明する。
【０１６１】
ここでは、ホストコンピュータ５より、バス１４、コネクタ４及びバス１３を介して、外部コマンドの一種である外部書き込みコマンドと、現在データが割り当てられていない連続した複数のホストアドレス、例えば「０００１０１０１０１０１０１０００１００Ｂ」〜「０００１０１０１０１０１０１０００１１１Ｂ」と、当該各アドレスに書き込むべきデータとがフラッシュメモリシステム１に供給された場合を例に説明する。
【０１６２】
ここでは、これら連続するホストアドレスを、ホストアドレス＃０〜＃３と呼ぶ。
【０１６３】
まず、ホストアドレス＃０〜＃３及び外部書き込みコマンドがコントローラ３に供給されると、これらホストアドレス＃０〜＃３及び外部書き込みコマンドは、ホストインターフェースブロック７が有するタスクファイルレジスタ（図示せず）に一時的に格納される。
【０１６４】
さらに、ホストアドレス＃０〜＃３にそれぞれ対応する書き込みデータがコントローラ３に供給されると、マイクロプロセッサ６による制御のもと、これらデータがＥＣＣブロック１１に送出される。
【０１６５】
これらデータの供給を受けたＥＣＣブロック１１は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【０１６６】
次に、タスクファイルレジスタに格納されたホストアドレス＃０〜＃３が正しいアドレスであるか否か、すなわち、かかるホストアドレス＃０〜＃３が、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック７によって判定される。
【０１６７】
かかる判定の結果、タスクファイルレジスタに格納されたホストアドレス＃０〜＃３が有効なアドレスであると判断されれば、アドレス変換テーブル２７を用いて内部アドレスに変換される。
【０１６８】
一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック７が有するエラーレジスタ（図示せず）がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【０１６９】
当該ホストアドレス＃０〜＃３が有効なアドレスであると判断されると、アドレス変換テーブル２７を用いて内部アドレスに変換される。
【０１７０】
図１１は、アドレス変換テーブル２７を用いた内部アドレスへの変換方法を説明するための図である。
【０１７１】
図１１に示されるように、本例では、ホストアドレス＃０〜＃３の上位１３ビット（Ａ）が「０００１０１０１０１０１０Ｂ」であるから、選択される仮想ブロック表示領域は、仮想ブロック表示領域＃６８２となる。
【０１７２】
次に、マイクロプロセッサ６による制御のもと、ＳＲＡＭワークエリア８に格納されているアドレス変換テーブル２７から、仮想ブロック表示領域＃６８２の内容が読み出される。
【０１７３】
ここでは、新規データの書き込み動作、すなわち現在データが割り当てられていないホストアドレスに対して新しくデータを割り当てる動作であるので、当該仮想ブロック表示領域＃６８２のフラグは「０」であるはずである。
【０１７４】
対応するフラグが「０」であることに応答して、マイクロプロセッサ６による制御のもと、消去済みブロックキュー３０を構成するキューセット＃０〜＃５のいずれか、例えば、キューセット＃０が選択され、かかるキューセット＃０を構成する各キュー＃０−０〜＃０−３に格納された内容が読み出される。
【０１７５】
上述のとおり、各キューに格納されているのは、消去済みブロックの物理ブロックアドレスである。
【０１７６】
本例では、これらキュー＃０−０〜＃０−３の内容がそれぞれ「０００００００００１１１１Ｂ」、「１１１００００１１００１１Ｂ」、「０１０１１１１１１００００Ｂ」、「１０００１００００００００Ｂ」であるものとする。
【０１７７】
キュー＃０−０〜＃０−３に格納された内容が読み出されると、これがアドレス変換テーブル２７の仮想ブロック表示領域＃６８２に格納され、フラグが「１」にセットされるとともに、マイクロプロセッサ６による制御のもと、これを用いて内部アドレスが生成される。
【０１７８】
図１１に示されるように、内部アドレスの生成方法は、データの読み出し動作の場合と同様であり、マイクロプロセッサ６による制御のもと、ホストアドレス＃０〜＃３それぞれの下位２ビット（Ｃ）、読み出されたキューの内容、及びホストアドレス＃０〜＃３の上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）がこの順に結合される。
【０１７９】
この場合、ホストアドレス＃０〜＃３の下位２ビット（Ｃ）はそれぞれ「００Ｂ」〜「１１Ｂ」であり、読み出されたセルの内容はそれぞれ「０００００００００１１１１Ｂ」、「１１１００００１１００１１Ｂ」、「０１０１１１１１１００００Ｂ」、「１０００１００００００００Ｂ」であり、ホストアドレス＃０〜＃３の上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）はいずれも「１０００１Ｂ」であることから、得られる４つの内部アドレス＃０〜＃３の値は、図１１に示される値となる。
【０１８０】
これにより、ホストアドレス＃０〜＃３から内部アドレス＃０〜＃３への変換が完了する。
【０１８１】
一方、ホストインターフェースブロック７が有するタスクファイルレジスタ（図示せず）に外部書き込みコマンドが格納されていることに応答して、マイクロプロセッサ６による制御のもと、フラッシュシーケンサブロック１２が有する各種レジスタ（図示せず）に対する設定がなされる。
【０１８２】
かかる設定は、次のように行われる。
【０１８３】
まず、マイクロプロセッサ６による制御のもと、内部コマンドの一種であるデータ転送コマンド及び内部書き込みコマンドがフラッシュシーケンサブロック１２内の所定のレジスタに設定される。
【０１８４】
さらに、マイクロプロセッサ６による制御のもと、上記生成された４つの内部アドレス＃０〜＃３がフラッシュシーケンサブロック１２内の所定のレジスタに設定される。
【０１８５】
このようにしてフラッシュシーケンサブロック１２に含まれる各種レジスタに対する設定が完了すると、フラッシュシーケンサブロック１２による一連の書き込み動作が実行される。
【０１８６】
図１２は、フラッシュシーケンサブロック１２による一連の書き込み動作タイミング概略的に示すタイミング図である。
【０１８７】
まず、フラッシュシーケンサブロック１２は、所定のレジスタ（図示せず）に格納された内部アドレスのうち、上位２ビットが「００Ｂ（０）」である内部アドレス＃０を選択し、当該内部アドレス＃０の上位２ビットに基づいて、フラッシュメモリチップ２−０〜２−３のうち、アクセスすべき物理ページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０１８８】
この場合、内部アドレス＃０の上位２ビットは「００Ｂ（０）」であるから、アクセスすべき物理ページが属するフラッシュメモリチップは、フラッシュメモリチップ２−０であり、チップ選択信号＃０が活性化される。
【０１８９】
これにより、フラッシュメモリチップ２−０は、データの書き込みが可能な状態となる。一方、チップ選択信号＃１〜＃３は、非活性状態が保たれる。
【０１９０】
次に、フラッシュシーケンサブロック１２は、内部アドレス＃０の下位１８ビット「０００００００００１１１１１０００１Ｂ」を、所定のレジスタに格納されたデータ転送コマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０１９１】
バス１５に供給された内部アドレス＃０の下位１８ビット及びデータ転送コマンドは、フラッシュメモリチップ２−０〜２−３に対し共通に供給されるが、上述のとおり、チップ選択信号＃０は活性状態となっており、チップ選択信号＃１〜＃３は非活性状態となっているので、バス１５に供給された内部アドレス＃０の下位１８ビット及びデータ転送コマンドは、フラッシュメモリチップ２−０に対してのみ有効となる（転送先指定）。
【０１９２】
これにより、フラッシュメモリチップ２−０は、供給された内部アドレス＃０の下位１８ビット「０００００００００１１１１１０００１Ｂ」に対応するページに書き込まれるべきデータの受け付けが許可された状態となる。
【０１９３】
次に、バッファ９に格納されている書き込みデータのうち、ホストアドレス＃０に対応するデータ及び対応するエラーコレクションコード等の冗長領域２６に格納すべき付加情報が、フラッシュシーケンサブロック１２により、フラッシュメモリインターフェースブロック１０を介して、バス１５に供給される。
【０１９４】
バス１５に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ２−０〜２−３に対し共通に供給されるが、上述のとおり、チップ選択信号＃０が活性状態となっているため、フラッシュメモリチップ２−０に対してのみ有効となる（データ転送）。
【０１９５】
このようにして、書き込みデータの受け付けが許可された状態にあるフラッシュメモリチップ２−０に対して書き込みデータ及びエラーコレクションコード等の付加情報が転送されると、かかる書き込みデータ及びエラーコレクションコードは、フラッシュメモリチップ２−０内に備えられた内部レジスタ（図示せず）に一時的に格納される。
【０１９６】
次に、フラッシュシーケンサブロック１２は、所定のレジスタに格納された内部書き込みコマンドを、フラッシュメモリチップ２−０に対して発行する（書き込み命令）。
【０１９７】
これに応答して、フラッシュメモリチップ２−０は、内部レジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに対応する物理ページに書き込む（フラッシュプログラミング）。
【０１９８】
すなわち、内部レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、内部アドレス＃０の下位１８ビット「０００００００００１１１１１０００１Ｂ」により特定される物理ページ、つまり、フラッシュメモリチップ２−０の物理ブロック＃１５の物理ページ＃１７に書き込まれる。
【０１９９】
フラッシュメモリチップ２−０の物理ブロック＃１５の物理ページ＃１７は、仮想ページ＃６８に対応する。
【０２００】
フラッシュメモリチップ２−０がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック１２は、所定のレジスタに格納された内部アドレスのうち、上位２ビットが「０１Ｂ（０）」である内部アドレス＃１を選択し、当該内部アドレス＃１の上位２ビットに基づいて、チップ選択信号＃１を活性化させる。
【０２０１】
これにより、フラッシュメモリチップ２−１は、データの書き込みが可能な状態となる。
【０２０２】
次に、フラッシュシーケンサブロック１２は、内部アドレス＃１の下位１８ビット「１１１００００１１００１１１０００１Ｂ」を、所定のレジスタ（図示せず）に格納されたデータ転送コマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０２０３】
この場合、上述のとおり、チップ選択信号＃１が活性状態となっているので、バス１５に供給された内部アドレス＃１の下位１８ビット及びデータ転送コマンドは、フラッシュメモリチップ２−１に対してのみ有効となる（転送先指定）。
【０２０４】
その後、上述のとおり、フラッシュメモリチップ２−１に対してデータ転送、及び書き込み命令の発行が行われ、ホストアドレス＃１に対応するデータ及び対応するエラーコレクションコード等の付加情報が、内部アドレス＃１により特定される物理ページに書き込まれる。
【０２０５】
この場合、内部アドレス＃１の下位１８ビットは「１１１００００１１００１１１０００１Ｂ」であるから、ホストアドレス＃１に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ２−１の物理ブロック＃７２１９の物理ページ＃１７に書き込まれる。
【０２０６】
フラッシュメモリチップ２−１の物理ブロック＃７２１９の物理ページ＃１７は、仮想ページ＃６９に対応する。
【０２０７】
このようなデータ書き込み動作が、内部アドレス＃２及び＃３に対しても実行され、これにより、ホストアドレス＃２及び＃３に対応するデータ及び対応するエラーコレクションコード等の付加情報も、それぞれ内部アドレス＃２及び＃３により特定される物理ページへ書き込まれる。
【０２０８】
この場合、内部アドレス＃２の下位１８ビットは「０１０１１１１１１００００１０００１Ｂ」であるから、ホストアドレス＃２に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ２−２の物理ブロック＃３０５６の物理ページ＃１７に書き込まれる。
【０２０９】
同様に、内部アドレス＃３の下位１８ビットは「１０００１００００００００１０００１Ｂ」であるから、ホストアドレス＃３に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ２−３の物理ブロック＃４３５２の物理ページ＃１７に書き込まれる。
【０２１０】
ここで、フラッシュメモリチップ２−２の物理ブロック＃３０５６の物理ページ＃１７は、仮想ページ＃７０に対応し、フラッシュメモリチップ２−３の物理ブロック＃４３５２の物理ページ＃１７は、仮想ページ＃７１に対応する。
【０２１１】
このようにして、フラッシュシーケンサブロック１２による一連の書き込み動作が完了する。
【０２１２】
かかる一連の書き込み動作においては、連続するホストアドレス＃０〜＃３に対応するデータが、それぞれ異なるフラッシュメモリチップ２−０〜２−３に属する異なる物理ブロック内に書き込まれた点が重要である。
【０２１３】
これら４つの物理ブロックは、上述のとおり一つの仮想ブロック＃６８２を構成し、連続するホストアドレス＃０〜＃３に対応するデータは、当該仮想ブロック＃６８２内の連続する仮想ページ＃６８〜＃７１に書き込まれたことになる。
【０２１４】
また、マイクロプロセッサ６は、上述のデータ書き込みによって、消去済みブロックキュー３０のキューセット＃０に格納された物理ブロックアドレスが、消去済みブロックの物理ブロックアドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理ブロックアドレスを新たにキュー＃０−０〜＃０−３に格納する。
【０２１５】
以上により、一連のデータ書き込み動作が完了する。
【０２１６】
次に、本実施態様にかかるフラッシュメモリシステム１によるデータの上書き動作について、具体例を用いて説明する。
【０２１７】
以下に詳述するが、フラッシュメモリシステム１によるデータの上書き動作においては、上書き対象の物理ページが含まれる物理ブロック内のデータを、他の物理ブロックに移動させる必要がある。その必要性は、次のとおりである。
【０２１８】
すなわち、フラッシュメモリチップ２−０〜２−３を構成するフラッシュメモリセル１６は、これをメモリセル単位にて消去状態から書込状態へ変化させることはできる一方、これを書込状態から消去状態へ変化させることは、メモリセル単位で行うことができず、物理ブロック単位でしか行うことができない。このため、ある物理ページにデータを書き込む際には、その物理ページのユーザ領域２５及び冗長領域２６を構成する全てのフラッシュメモリセル１６が消去状態となっている必要があり、既に何らかのデータが書き込まれている物理ページ、すなわち、その物理ページのユーザ領域２５を構成するフラッシュメモリセル１６が一つでも書込状態となっている物理ページに、これと異なるデータを直接上書きすることはできない。
【０２１９】
したがって、既にデータの書き込まれた物理ページに対し、これと異なる新しいデータを書き込むためには、一旦、この物理ページが属する物理ブロックを構成するフラッシュメモリセル１６を全て消去状態とし、その後に新しいデータを書き込むという処理が必要となる。したがって、ある物理ページに格納された古いデータに新しいデータを上書きしようとする場合、この物理ページが属する物理ブロックに含まれる他の物理ページに格納されたデータが消失するのを防ぐためには、当該他の物理ページに格納されたデータを、他の物理ブロックに移動させるという処理が必要となるのである。
【０２２０】
本明細書においては、このような上書き処理に伴うデータの移動を「ブロック間転送」と呼び、転送元の物理ブロックの物理ブロックアドレスを「転送元ブロックアドレス」、転送先の物理ブロックの物理ブロックアドレスを「転送先ブロックアドレス」と呼ぶ。
【０２２１】
さて、以下の説明においては、ホストコンピュータ５より、バス１４、コネクタ４及びバス１３を介して、外部書き込みコマンドと、既にデータが割り当てられている連続した複数のホストアドレス＃０〜＃３、例えば「１１００００００１００１００１１１０００Ｂ」〜「１１００００００１００１００１１１０１１Ｂ」と、当該各アドレスに書き込むべきデータとがフラッシュメモリシステム１に供給された場合を例に説明する。
【０２２２】
まず、ホストアドレス＃０〜＃３及び外部書き込みコマンドがコントローラ３に供給されると、これらホストアドレス＃０〜＃３及び外部書き込みコマンドは、ホストインターフェースブロック７が有するタスクファイルレジスタ（図示せず）に一時的に格納される。
【０２２３】
さらに、ホストアドレス＃０〜＃３にそれぞれ対応する書き込みデータがコントローラ３に供給されると、マイクロプロセッサ６による制御のもと、これらデータがＥＣＣブロック１１に送出される。
【０２２４】
これらデータの供給を受けたＥＣＣブロック１１は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【０２２５】
当該ホストアドレスが有効なアドレスであると判断されると、アドレス変換テーブル２７を用いて転送元ブロックアドレス及び転送先ブロックアドレスが生成される。
【０２２６】
図１３は、転送元ブロックアドレス及び転送先ブロックアドレスの生成方法を説明するための図である。
【０２２７】
図１３に示されるように、本例では、ホストアドレス＃０〜＃３の上位１３ビット（Ａ）が「１１００００００１００１０Ｂ」であるから、アドレス変換テーブル２７内において選択される仮想ブロック表示領域は仮想ブロック表示領域＃６１６２となる。
【０２２８】
したがって、マイクロプロセッサ６による制御のもと、ＳＲＡＭワークエリア８に格納されているアドレス変換テーブル２７から仮想ブロック＃６１６２が選択され、仮想ブロック＃６１６２の内容が読み出される。
【０２２９】
ここでは、旧データの上書き動作、すなわちすでにデータが割り当てられているホストアドレスに対してさらにデータを割り当てる動作であるので、当該仮想ブロック表示領域＃６１６２内のフラグは「１」を示しているはずである。このことは、当該仮想ブロック表示領域＃６１６２を構成する４個のセル＃６１６２−０〜＃６１６２−３の内容が有効であることを意味する。
【０２３０】
ここでは、セル＃６１６２−０〜＃６１６２−３から読み出された内容が「１１００００００００００１Ｂ」、「０１１００００００００１０Ｂ」、「０００１１０００００１００Ｂ」、「０１１１１００００１０００Ｂ」であるものとする。
【０２３１】
セル＃６１６２−０〜＃６１６２−３に格納された内容が読み出されると、マイクロプロセッサ６による制御のもと、これらを用いて転送元ブロックアドレスが生成される。
【０２３２】
転送元ブロックアドレスは、マイクロプロセッサ６による制御のもと、ホストアドレス＃０〜＃３それぞれの下位２ビット（Ｃ）及び読み出されたセルの内容がこの順に結合されて生成される。
【０２３３】
この場合、ホストアドレス＃０〜＃３の下位２ビット（Ｃ）はそれぞれ「００Ｂ」〜「１１Ｂ」であり、読み出されたセルの内容は「１１００００００００００１Ｂ」、「０１１００００００００１０Ｂ」、「０００１１０００００１００Ｂ」、「０１１１１００００１０００Ｂ」であることから、得られる４つの転送元ブロックアドレス＃０〜＃３の値は、図１３に示される値となる。
【０２３４】
これにより、転送元ブロックアドレス＃０〜＃３の生成が完了する。
【０２３５】
次に、マイクロプロセッサ６による制御のもと、消去済みブロックキュー３０を構成するキューセット＃０〜＃５のいずれか、例えば、キューセット＃１が選択され、かかるキューセット＃１を構成する各キュー＃１−０〜＃１−３に格納された内容が読み出される。
【０２３６】
上述のとおり、各キューに格納されているのは、消去済みブロックの物理ブロックアドレスである。
【０２３７】
本例では、これらキュー＃１−０〜＃１−３の内容がそれぞれ「００１０００００１００００Ｂ」、「１００００００１０００００Ｂ」、「０１１１１０１００００００Ｂ」、「００１０１１０００００００Ｂ」であるものとする。
【０２３８】
キュー＃１−０〜＃１−３に格納された内容が読み出されると、マイクロプロセッサ６による制御のもと、これらがアドレス変換テーブル２７の仮想ブロック表示領域＃６１６２を構成するセル＃６１６２−０〜＃６１６２−３に上書きされるとともに、これらを用いて転送先ブロックアドレスが生成される。
【０２３９】
転送先ブロックアドレスは、マイクロプロセッサ６による制御のもと、ホストアドレス＃０〜＃３それぞれの下位２ビット（Ｃ）及び読み出されたキューの内容がこの順に結合されて生成される。
【０２４０】
この場合、ホストアドレス＃０〜＃３の下位２ビット（Ｃ）はそれぞれ「００Ｂ」〜「１１Ｂ」であり、読み出されたセルの内容は「００１０００００１００００Ｂ」、「１００００００１０００００Ｂ」、「０１１１１０１００００００Ｂ」、「００１０１１０００００００Ｂ」であることから、得られる４つの転送先ブロックアドレス＃０〜＃３の値は、図１３に示される値となる。
【０２４１】
これにより、転送先ブロックアドレス＃０〜＃３の生成が完了する。
【０２４２】
一方、ホストインターフェースブロック７が有するタスクファイルレジスタ（図示せず）に外部書き込みコマンドが格納されていることに応答して、マイクロプロセッサ６による制御のもと、フラッシュシーケンサブロック１２が有する各種レジスタ（図示せず）に対する設定がなされる。
【０２４３】
かかる設定は、次のように行われる。
【０２４４】
まず、マイクロプロセッサ６による制御のもと、データ転送コマンド、内部書き込みコマンド及び内部読み出しコマンドがフラッシュシーケンサブロック１２内の所定のレジスタに設定される。さらに、マイクロプロセッサ６による制御のもと、上記生成された転送元ブロックアドレス＃０〜＃３及び転送先ブロックアドレス＃０〜＃３がフラッシュシーケンサブロック１２内の所定のレジスタに設定される。
【０２４５】
このようにしてフラッシュシーケンサブロック１２に含まれる各種レジスタ（図示せず）に対する設定が完了すると、フラッシュシーケンサブロック１２による一連の書き込み動作が実行される。
【０２４６】
フラッシュシーケンサブロック１２による一連の書き込み動作は、次の通りである。
【０２４７】
まず、フラッシュシーケンサブロック１２は、所定のレジスタに格納された転送元ブロックアドレス＃０に「０００００Ｂ（０）」を付加して２０ビットの転送元内部アドレスを生成する。この場合、転送元内部アドレスは、「００１１００００００００００１０００００Ｂ」となる。
【０２４８】
次に、フラッシュシーケンサブロック１２は、生成された転送元内部アドレスの上位２ビットに基づき、フラッシュメモリチップ２−０〜２−３のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック１０に指示する。この場合、生成された転送元内部アドレスの上位２ビットは「００Ｂ（０）」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ２−０であり、チップ選択信号＃０が活性化される。
【０２４９】
これにより、フラッシュメモリチップ２−０は、データの読み出しが可能な状態となる。一方、チップ選択信号＃１〜＃３は、非活性状態が保たれる。
【０２５０】
次に、フラッシュシーケンサブロック１２は、転送元内部アドレスの下位１８ビット「１１００００００００００１０００００Ｂ」を、所定のレジスタに格納された内部読み出しコマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０２５１】
これにより、フラッシュメモリチップ２−０は、供給された転送元内部アドレスの下位１８ビット「１１００００００００００１０００００Ｂ」に格納されたデータの読み出しを実行する。
【０２５２】
すなわち、フラッシュメモリチップ２−０は、物理ブロック＃６１４５の物理ページ＃０に格納されたデータの読み出しを実行する。
【０２５３】
尚、図７において説明したように、本実施態様においては、４つの物理ブロックが仮想的に結合されて一つの仮想ブロックが構成されているので、フラッシュメモリチップ２−０に属する物理ブロック＃６１４５の物理ページ＃０は、仮想ブロック上においては仮想ページ＃０に対応する。
【０２５４】
このようにしてフラッシュメモリチップ２−０から読み出されたデータは、バス１５を介してフラッシュメモリインターフェースブロック１０に供給される。
【０２５５】
フラッシュメモリインターフェースブロック１０がユーザデータを受け取ると、これがバッファ９に一時的に格納されるとともに、ＥＣＣブロック１１に送出され、新たにエラーコレクションコードの生成が行われる。
【０２５６】
ＥＣＣブロック１１にて新たに生成されたエラーコレクションコードは、ＥＣＣブロック１１内に一時的に保持される。
【０２５７】
このような読み出し動作が、転送元ブロックアドレス＃１〜＃３に「０００００Ｂ（０）」が付加されることによって、フラッシュメモリチップ２−１〜２−３に対しても実行され、その結果、フラッシュメモリチップ２−１に属する物理ブロック＃３０７４の物理ページ＃０に格納されたデータ、フラッシュメモリチップ２−２に属する物理ブロック＃７７２の物理ページ＃０に格納されたデータ、及びフラッシュメモリチップ２−３に属する物理ブロック＃３８４８の物理ページ＃０に格納されたデータも読み出されることになる。
【０２５８】
尚、仮想ブロック上においては、物理ブロック＃３０７４の物理ページ＃０は仮想ページ＃１に対応し、物理ブロック＃７７２の物理ページ＃０は仮想ページ＃２に対応し、物理ブロック＃３８４８の物理ページ＃０は仮想ページ＃３に対応する。
【０２５９】
すなわち、以上によって、仮想ブロック＃６１６２の仮想ページ＃０〜＃３に格納されているデータが読み出されたことになる。
【０２６０】
次に、バッファ９に一時的に格納されたデータの書き込み動作が行われる。
【０２６１】
まず、フラッシュシーケンサブロック１２は、所定のレジスタに格納された転送先ブロックアドレス＃０に「０００００Ｂ（０）」を付加して２０ビットの転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「００００１０００００１０００００００００Ｂ」となる。
【０２６２】
次に、フラッシュシーケンサブロック１２は、生成された転送先内部アドレスの上位２ビットに基づき、フラッシュメモリチップ２−０〜２−３のうち、アクセスすべき物理ページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０２６３】
この場合、転送先内部アドレスの上位２ビットは「００Ｂ（０）」であるから、アクセスすべき物理ページが属するフラッシュメモリチップは、フラッシュメモリチップ２−０であり、チップ選択信号＃０が活性化される。
【０２６４】
これにより、フラッシュメモリチップ２−０は、データの書き込みが可能な状態となる。
【０２６５】
次に、フラッシュシーケンサブロック１２は、転送先内部アドレスの下位１８ビットを、所定のレジスタに格納されたデータ転送コマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０２６６】
バス１５に供給された書き込みアドレス及びデータ転送コマンドは、フラッシュメモリチップ２−０〜２−３に対し共通に供給されるが、上述のとおり、チップ選択信号＃０が活性状態となっており、チップ選択信号＃１〜＃３は非活性状態となっているので、バス１５に供給された転送先内部アドレス及びデータ転送コマンドは、フラッシュメモリチップ２−０に対してのみ有効となる（転送先指定）。
【０２６７】
次に、バッファ９に格納されているデータのうち、フラッシュメモリチップ２−０から読み出したデータ及び対応するエラーコレクションコード等の冗長領域２６に格納すべき付加情報が、フラッシュシーケンサブロック１２により、フラッシュメモリインターフェースブロック１０を介して、バス１５に供給される。
【０２６８】
バス１５に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ２−０〜２−３に対し共通に供給されるが、上述のとおり、チップ選択信号＃０が活性状態となっているため、フラッシュメモリチップ２−０に対してのみ有効となる（データ転送）。
【０２６９】
フラッシュメモリチップ２−０に転送されたデータ及びエラーコレクションコード等の付加情報は、フラッシュメモリチップ２−０内に備えられた内部レジスタ（図示せず）に一時的に格納される。
【０２７０】
次に、フラッシュシーケンサブロック１２は、所定のレジスタに格納された内部書き込みコマンドを、フラッシュメモリチップ２−０に対して発行する（書き込み命令）。これに応答して、フラッシュメモリチップ２−０は、内部レジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに書き込む（フラッシュプログラミング）。
【０２７１】
すなわち、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位１８ビット「００１０００００１０００００００００Ｂ」により特定される物理ページ、つまり、フラッシュメモリチップ２−０の物理ブロック＃１０４０の物理ページ＃０に書き込まれる。フラッシュメモリチップ２−０の物理ブロック＃１０４０の物理ページ＃０は、仮想ページ＃０に対応する。
【０２７２】
フラッシュメモリチップ２−０がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック１２は、所定のレジスタに格納された転送先ブロックアドレス＃１に「０００００Ｂ（０）」を付加して２０ビットの新たな転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「０１１００００００１００００００００００Ｂ」となる。
【０２７３】
次いで、フラッシュシーケンサブロック１２は、新たな転送先内部アドレスの上位２ビットに基づいて、チップ選択信号＃１を活性化させる。これにより、フラッシュメモリチップ２−１は、データの書き込みが可能な状態となる。
【０２７４】
次に、フラッシュシーケンサブロック１２は、新たな転送先内部アドレスの下位１８ビット「１００００００１００００００００００Ｂ」を、所定のレジスタに格納されたデータ転送コマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０２７５】
この場合、上述のとおり、チップ選択信号＃１が活性状態となっているので、バス１５に供給された内部アドレス＃１の下位１８ビット及びデータ転送コマンドは、フラッシュメモリチップ２−１に対してのみ有効となる（転送先指定）。
【０２７６】
次に、バッファ９に格納されているデータのうち、フラッシュメモリチップ２−１から読み出したデータ及び対応するエラーコレクションコード等の冗長領域２６に格納すべき付加情報が、上述と同様にしてフラッシュメモリチップ２−１に対して転送され、その後、書き込み命令の発行が行われる。これにより、フラッシュメモリチップ２−１はフラッシュプログラミングを行い、内部レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位１８ビット「１００００００１００００００００００Ｂ」により特定される物理ページ、つまり、フラッシュメモリチップ２−１の物理ブロック＃４１２８の物理ページ＃０に書き込まれる。
【０２７７】
フラッシュメモリチップ２−１の物理ブロック＃４１２８の物理ページ＃０は、仮想ページ＃１に対応する。
【０２７８】
このような、書き込み処理が、転送先ブロックアドレス＃２及び＃３に「０００００Ｂ（０）」が付加されることによって、フラッシュメモリチップ２−２及び２−３に対しても実行され、これにより、フラッシュメモリチップ２−２から読み出したデータ及び対応するエラーコレクションコード等の冗長領域２６に格納すべき付加情報が、フラッシュメモリチップ２−２の物理ブロック＃３９０４の物理ページ＃０に書き込まれ、フラッシュメモリチップ２−３から読み出したデータ及び対応するエラーコレクションコード等の冗長領域２６に格納すべき付加情報が、フラッシュメモリチップ２−３の物理ブロック＃１４０８の物理ページ＃０に書き込まれる。
【０２７９】
フラッシュメモリチップ２−２の物理ブロック＃３９０４の物理ページ＃０は、仮想ページ＃２に対応し、フラッシュメモリチップ２−３の物理ブロック＃１４０８の物理ページ＃０は、仮想ページ＃３に対応する。
【０２８０】
これにより、転送元の仮想ブロックの仮想ページ＃０〜＃３に格納されているデータが、転送先の仮想ブロックの仮想ページ＃０〜＃３に書き込まれたことになる。
【０２８１】
すなわち、転送元の仮想ブロックの仮想ページ＃０〜＃３から転送先の仮想ブロックの仮想ページ＃０〜＃３へのデータの転送が行われたことになる。
【０２８２】
このようなデータの転送動作は、転送元ブロックアドレス及び転送先ブロックアドレスに付加する５ビットの値をインクリメントすることによって、次々と行われる。
【０２８３】
すなわち、転送元ブロックアドレス及び転送先ブロックアドレスに付加される５ビットの値が「００００１（１）」であれば、転送元の仮想ブロックの仮想ページ＃４〜＃７から転送先の仮想ブロックの仮想ページ＃４〜＃７へのデータの転送が行われ、「０００１０（２）」であれば、転送元の仮想ブロックの仮想ページ＃８〜＃１１から転送先の仮想ブロックの仮想ページ＃８〜＃１１へのデータの転送が行われることになる。
【０２８４】
このような転送動作は、付加される５ビットの値が、ホストアドレスの上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）である「０１１１０Ｂ（１４）」に一致するまで連続的に行われる。
【０２８５】
すなわち、付加される５ビットがインクリメントされた結果、これが「０１１１０Ｂ（１４）」となり、ホストアドレスの上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）に一致すると、一旦、上述した転送動作が中断される。
【０２８６】
本例では、転送元の仮想ブロックの仮想ページ＃０〜＃５５から転送先の仮想ブロックの仮想ページ＃０〜＃５５へのデータの転送が完了した時点で、付加される５ビットの値が、ホストアドレスの上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）に一致することになる。
【０２８７】
付加される５ビットがホストアドレスの上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）に一致すると、フラッシュシーケンサブロック１２は、かかる５ビット「０１１１０Ｂ（１４）」を用いたデータの読み出しを行わず、これを転送先ブロックアドレス＃０〜＃３にそれぞれ付加して、新たな転送先内部アドレスを生成する。
【０２８８】
例えば、転送先ブロックアドレス＃０に「０１１１０Ｂ」が付加されて生成された転送先内部アドレスは、「００００１０００００１０００００１１１０Ｂ」である。
【０２８９】
次に、フラッシュシーケンサブロック１２は、生成された転送先内部アドレスの上位２ビットに基づいてチップ選択信号＃０を活性化しつつ、転送先内部アドレスの下位１８ビットを、データ転送コマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する（転送先指定）。
【０２９０】
次に、ホストアドレス＃０に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック１２により、フラッシュメモリインターフェースブロック１０を介して、バス１５に供給される。
【０２９１】
このとき、チップ選択信号＃０が活性状態となっているため、フラッシュメモリチップ２−０に転送されたデータ及びエラーコレクションコードは、フラッシュメモリチップ２−０内に備えられた内部レジスタに一時的に格納される（データ転送）。
【０２９２】
次に、フラッシュシーケンサブロック１２は、所定のレジスタに格納された内部書き込みコマンドを、フラッシュメモリチップ２−０に対して発行する（書き込み命令）。
【０２９３】
このようにして、フラッシュメモリチップ２−０がホストアドレス＃０に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報をフラッシュプログラミングを実行している間、フラッシュシーケンサブロック１２は、ホストアドレス＃１に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報をフラッシュメモリチップ２−１に書き込むべく、転送先指定処理、データ転送処理等を実行する。
【０２９４】
このように、あるフラッシュメモリチップがフラッシュプログラミングを実行している途中で、これと異なるフラッシュメモリチップに対して転送先指定処理、データ転送処理等を実行する点はすでに説明したとおりであり、これによって、ホストアドレス＃０に対応する書き込みデータは、フラッシュメモリチップ２−０内の物理ブロック＃１０４０の物理ページ＃１４に書き込まれ、ホストアドレス＃１に対応する書き込みデータは、フラッシュメモリチップ２−１内の物理ブロック＃４１２８の物理ページ＃１４に書き込まれ、ホストアドレス＃２に対応する書き込みデータは、フラッシュメモリチップ２−２内の物理ブロック＃３９０４の物理ページ＃１４に書き込まれ、ホストアドレス＃３に対応する書き込みデータは、フラッシュメモリチップ２−３内の物理ブロック＃１４０８の物理ページ＃１４に書き込まれる。
【０２９５】
これにより、ホストアドレス＃０〜＃３に対応する書き込みデータが、転送先の仮想ブロックの仮想ページ＃５６〜＃５９にそれぞれ書き込まれたことになる。
【０２９６】
かかるデータの書き込みが完了すると、再び、転送元ブロックアドレス及び転送先ブロックアドレスに付加される５ビットがインクリメントされ、新しい転送元内部アドレス及び転送先内部アドレスを用いたデータの転送が再開される。
【０２９７】
かかる転送動作は、付加される５ビットが「１１１１１（３１）」である場合のデータ転送が完了するまで連続的に行われる。
【０２９８】
すなわち、転送元の仮想ブロックの仮想ページ＃６０〜＃１２７から転送先の仮想ブロックの仮想ページ＃６０〜＃１２７へのデータの転送が完了するまで行われ、これにより、フラッシュシーケンサブロック１２による一連のデータ転送動作が完了する。
【０２９９】
また、マイクロプロセッサ６は、上述のデータ書き込みによって、消去済みブロックキュー３０のキューセット＃１に格納された物理ブロックアドレスが、消去済みブロックの物理ブロックアドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理ブロックアドレスを新たにキュー＃１−０〜＃１−３に格納する。
【０３００】
尚、転送元の各物理ブロックは、いずれもブロック消去され、これによって新たな消去済みブロックとなる。
【０３０１】
以上により、一連のデータ書き込み動作が完了する。
【０３０２】
このように、本実施態様によるフラッシュメモリシステム１では、「仮想ブロック」という概念を用い、互いに異なるフラッシュメモリチップに属する複数の物理ブロックを仮想的に一つのブロックとして取り扱っているので、ホストコンピュータ５から、連続する複数アドレスに対してデータ書き込み要求がなされた場合に、ある書き込みデータについてフラッシュプログラミングが実行されている途中で、次の書き込みデータに対し、転送先指定やデータ転送等の処理を実行することができ、これにより一連のデータ書き込みに要する時間を大幅に短縮させることが可能となる。
【０３０３】
すなわち、一連のデータ書き込み動作のうち、フラッシュプログラミングには比較的長い時間、典型的には約２００μｓｅｃ程度が必要とされるところ、本実施態様によるフラッシュメモリシステム１によれば、かかるフラッシュプログラミングと並行して他の処理を実行可能であることから、一連のデータ書き込みに要する時間は大幅に短縮される。
【０３０４】
次に、本発明の好ましい他の実施態様にかかるフラッシュメモリシステムについて詳細に説明する。
【０３０５】
図１４は、本発明の好ましい他の実施態様にかかるフラッシュメモリシステム３１を概略的に示すブロック図である。
【０３０６】
図１４に示されるように、本実施態様にかかるフラッシュメモリシステム３１は、  上記実施態様にかかるフラッシュメモリシステム１とほぼ同様の構成を備えており、搭載されているフラッシュメモリチップの種類においてのみ異なる。
【０３０７】
フラッシュメモリチップ３２−０〜３２−３のアドレス空間は、上記実施態様にかかるフラッシュメモリシステム１に用いたフラッシュメモリチップ２−０〜２−３のアドレス空間と同じであり、図４に示したとおりである。
【０３０８】
ここで、フラッシュメモリチップ３２−０〜３２−３は、いずれも「バンクタイプ」と呼ばれるチップであり、各物理ブロックは、それぞれ独立したレジスタを有するいずれかのバンクに分類される。
【０３０９】
それぞれ異なるバンクに属する複数の物理ブロックについては、互いに同時に書き込み処理を行うことができる他、互いに同時にブロック消去を行うことができる。
【０３１０】
図１５は、フラッシュメモリチップ３２−０の構造を概略的に示す図である。
【０３１１】
図１５に示されるように、フラッシュメモリチップ３２−０を構成する物理ブロック＃０〜＃８１９１は、バンク＃０〜＃３からなる４つのバンクに分類されている。
【０３１２】
詳細には、物理ブロック＃４ｍ（ｍは０〜２０４７の整数）はバンク＃０に属し、物理ブロック＃４ｍ＋１はバンク＃１に属し、物理ブロック＃４ｍ＋２はバンク＃２に属し、物理ブロック＃４ｍ＋３はバンク＃３に属している。また、フラッシュメモリチップ３２−０は、レジスタ＃０〜＃３からなる４つのレジスタを備えており、これらレジスタ＃０〜＃３はバンク＃０〜＃３にそれぞれ対応している。
【０３１３】
これら各レジスタ＃０〜＃３は、それぞれ１ページ分のデータを一時的に保持することができる。
【０３１４】
すなわち、バンク＃０に属する物理ブロックからデータが読み出される場合、読み出されたデータは一旦レジスタ＃０に保持された後、バス１５を介してコントローラ３に転送され、バンク＃０に属する物理ブロックへデータが書き込まれる場合、バス１５を介してコントローラ３から転送されたデータは、一旦レジスタ＃０に保持された後、所定の物理ブロックに書き込まれることになる。
【０３１５】
上記動作は、バンク＃１〜＃３に属する物理ブロックに対するデータの読み出し及び書き込みにおいても同様に、それぞれレジスタ＃１〜＃３が用いられる。
【０３１６】
また、各物理ブロックから対応するレジスタへのデータの転送動作（データの読み出し）や、各レジスタから対応する物理ブロックへのデータの転送動作（データの書き込み）は、各バンクにおいて独立して実行可能である。
【０３１７】
したがって、フラッシュメモリチップ３２−０は、上述したフラッシュメモリチップ２−０とは異なり、４ページ分のデータの書き込みを並列に行うことができる。
【０３１８】
尚、図１５には示されていないが、フラッシュメモリチップ３２−１〜３２−３についても、フラッシュメモリチップ３２−０と同様、各ブロックがバンク＃０〜＃３からなる４つのバンクに分類されるとともに、各バンクに対応するレジスタ＃０〜＃３を備えている。
【０３１９】
このように、各フラッシュメモリチップ３２−０〜３２−３は、各バンク＃０〜＃３ごとに２０４８個の物理ブロックによって構成されるが、このうち、２０００個の物理ブロックは実使用ブロックとして取り扱われ、残りの４８個の物理ブロックは冗長ブロックとして取り扱われる。
【０３２０】
さらに、実使用ブロックは、各フラッシュメモリチップ３２−０〜３２−３内において、各バンク＃０〜＃３から一つずつ選ばれた４つの物理ブロックが仮想的に結合された「仮想ブロック」を構成する。
【０３２１】
すなわち、各フラッシュメモリチップ３２−０〜３２−３において２０００個の仮想ブロックが構成される。
【０３２２】
図１６は、フラッシュメモリチップ３２−０における仮想ブロックの一例を示す図である。
【０３２３】
図１６に示される例では、バンク＃０に含まれる物理ブロック＃４、バンク＃１に含まれる物理ブロック＃６８０１、バンク＃２に含まれる物理ブロック＃３２４２、バンク＃３に含まれる物理ブロック＃８１９１が仮想的に結合され、一つの仮想ブロックを構成している。
【０３２４】
このように、本実施態様においては、ひとつの仮想ブロックを構成する４つの物理ブロックはいずれも同じフラッシュメモリチップに属し、且つ、これら４つの物理ブロックは互いに異なるバンクに属することが必要である。
【０３２５】
このようにして、各フラッシュメモリチップ３２−０〜３２−３において２０００個の仮想ブロックが構成され、フラッシュメモリチップ３２−０は仮想ブロック＃０〜＃１９９９を構成し、フラッシュメモリチップ３２−１は仮想ブロック＃２０００〜＃３９９９を構成し、フラッシュメモリチップ３２−２は仮想ブロック＃４０００〜＃５９９９を構成し、フラッシュメモリチップ３２−３は仮想ブロック＃６０００〜＃７９９９を構成する。
【０３２６】
図１７は、図１６に示された仮想ブロックのページ構造を示す図である。
【０３２７】
図１７に示されるように、本実施態様においても、仮想ブロックは、ページ＃０〜ページ＃１２７からなる１２８個の仮想ページによって構成される一つのブロックとして取り扱われる。
【０３２８】
ここで、図１７に示した仮想ブロックのうち、ブロック＃４からなる部分に含まれる３２個のページは、仮想ページ番号として４ｉ（ｉは、物理ページ番号）が与えられ、物理ブロック＃６８０１からなる部分に含まれる３２個のページは、仮想ページ番号として４ｉ＋１が与えられ、物理ブロック＃３２４２からなる部分に含まれる３２個のページは、仮想ページ番号として４ｉ＋２が与えられ、物理ブロック＃８１９１からなる部分に含まれる３２個のページは、仮想ページ番号として４ｉ＋３が与えられる。
【０３２９】
図１８は、８０００個の仮想ブロックと、これら各仮想ブロックを構成する４つの物理ブロックとの関係を示すアドレス変換テーブル３３のデータ構造を示す概略図である。
【０３３０】
図１８に示されるように、アドレス変換テーブルの３３の構造は、上記実施態様にかかるアドレス変換テーブル２７の構造と同様であるが、本実施態様にかかるフラッシュメモリシステム３１おいては、アドレス変換テーブル３３内のセル＃ｊ−０〜＃ｊ−３には、それぞれ当該仮想ブロックを構成する物理ブロックのアドレス（物理ブロックアドレス）の一部、詳細には、物理ブロックアドレスの上位１１ビットが格納される。
【０３３１】
したがって、例えば、図１６及び図１７に示された仮想ブロックが、仮想ブロック＃０であるとすれば、当該仮想ブロックは、物理ブロック＃４、物理ブロック＃６８０１、物理ブロック＃３２４２及び物理ブロック＃８１９１より構成されることから、これらブロックの物理ブロックアドレスはそれぞれ「００００００００００００１００Ｂ」、「１１０１０１００１０００１Ｂ」、「０１１００１０１０１０１０Ｂ」、及び「１１１１１１１１１１１１１Ｂ」となり、セル＃０−０〜＃０−３には、「００００００００００１Ｂ（１）」、「１１０１０１００１００Ｂ（１７００）」、「０１１００１０１０１０Ｂ（８１０）」、及び「１１１１１１１１１１１Ｂ（２０４７）」がそれぞれ格納されることになる。
【０３３２】
また、各仮想ブロック表示領域に含まれるフラグは、対応するセル＃ｊ−０〜＃ｊ−３に格納されている内容が有効であるか無効であるかを示している。具体的には、フラグが「１」を示していれば対応するセルに格納されている内容は有効であり、フラグが「０」を示していれば対応するセルに格納されている内容は無効である。
【０３３３】
したがって、フラグが「０」を示している仮想ブロック表示領域においては、これに含まれるセル＃ｊ−０〜＃ｊ−３に格納されている内容は無視される。ここで、セル＃ｊ−０を構成するスロット＃０はバンク＃０に対応し、セル＃ｊ−１を構成するスロット＃１はバンク＃１に対応し、セル＃ｊ−２を構成するスロット＃２はバンク＃２に対応し、セル＃ｊ−３を構成するスロット＃３はバンク＃３に対応している。
【０３３４】
このようなデータ構造を有するアドレス変換テーブル３３は、ＳＲＡＭワークエリア８上に展開される。
【０３３５】
図１９は、ＳＲＡＭワークエリア８に格納される消去済みブロックキュー３４のデータ構造を示す概略図である。
【０３３６】
図１９に示されるように、消去済みブロックキュー３４は、キューセット＃０〜＃３からなる４つのキューによって構成され、これらは、それぞれキュー＃ｋ−０〜キュー＃ｋ−３（ｋは、キューセット番号）からなる４個のキューによって構成される。
【０３３７】
ここで、キュー＃ｋ−０はバンク＃０に対応し、キュー＃ｋ−１はバンク＃１に対応し、キュー＃ｋ−２はバンク＃２に対応し、キュー＃ｋ−３はバンク＃３に対応している。さらに、キューセット＃０〜＃３は、それぞれフラッシュメモリチップ３２−０〜３２−３に対応している。
【０３３８】
各キューセット＃０〜＃３を構成するキュー＃ｋ−０〜＃ｋ−３には、ユーザ領域２５を構成する全てのフラッシュメモリセル１６が消去状態となっている物理ブロックの物理ブロックアドレスの一部、詳細には、物理ブロックアドレスの上位１１ビットが格納される。
【０３３９】
したがって、例えば、フラッシュメモリチップ３２−０に属する消去済みの物理ブロック＃１５２を消去済みブロックキュー３０に登録する場合、当該ブロックはバンク＃０に属していることから、当該物理ブロックアドレスの上位１１ビットである「０００００１００１１０Ｂ」がキュー＃０−０に格納される。
【０３４０】
消去済みブロックキュー３０の生成は、マイクロプロセッサ６による制御のもと、上述したアドレス変換テーブル３３の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から選ばれる。
【０３４１】
以上説明した構成を有するフラッシュメモリシステム３１の動作は、基本的に、上記実施態様にかかるフラッシュメモリシステム１の動作と同様であるが、アドレス変換テーブル３３を用いたホストアドレスから内部アドレスへの変換手順が異なる。
【０３４２】
図２０は、データ読み出し動作における、アドレス変換テーブル３３を用いた内部アドレスへの変換手順を説明するための図である。
【０３４３】
ここでは、ホストコンピュータ５からホストアドレス「１００００１１１１１１１１１１０００００Ｂ」に対してデータの読み出しが要求された場合を例に説明する。
【０３４４】
図２０においては、便宜上、ホストアドレスから上位１３ビットを「Ａ」とし、上位１４ビット目〜上位１８ビット目からなる５ビットを「Ｂ」とし、下位２ビットを「Ｃ」と表記している。
【０３４５】
データ読み出し動作においては、まず、マイクロプロセッサ６による制御のもと、２０ビットのホストアドレスから上位１３ビット（Ａ）が取り出され、これが「２０００」で除される。
【０３４６】
そして、かかる除算によって得られた商（０〜３）によってフラッシュメモリチップが特定され、剰余（０〜１９９９）によって仮想ブロックが特定される。本例では、ホストアドレスの上位１３ビット（Ａ）が「１００００１１１１１１１１Ｂ」であるから、商は「１０Ｂ（２）」であり、剰余は「００１０１０１１１１１Ｂ（３５１）」となる。
【０３４７】
これにより、選択されるフラッシュメモリチップはフラッシュメモリチップ３２−２となり、選択される仮想ブロックは、フラッシュメモリチップ３２−２内の仮想ブロック＃２３５１（３５１＋２０００）となる。
【０３４８】
したがって、マイクロプロセッサ６による制御のもと、ＳＲＡＭワークエリア８に格納されたアドレス変換テーブル３３から仮想ブロック表示領域＃２３５１が選択され、仮想ブロック表示領域＃２３５１を構成する４個のセルのうち、ホストアドレスの下位２ビット（Ｃ）と同じ枝番号を有するセルの内容が読み出される。
【０３４９】
この場合、ホストアドレスの下位２ビット（Ｃ）が「００Ｂ（０）」であるから、その内容が読み出されるセルは、セル＃２３５１−０となる。本例では、かかるセル＃２３５１−０の内容が「００１００００１１１１Ｂ」であるものとする。
【０３５０】
次に、マイクロプロセッサ６による制御のもと、選択されたチップ番号、読み出されたセルの内容、ホストアドレスの下位２ビット（Ｃ）、及びホストアドレスの上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）がこの順に結合される。結合されたアドレスは、内部アドレスとなる。
【０３５１】
この場合、選択されたチップ番号は「１０Ｂ」であり、読み出されたセルの内容は「００１００００１１１１Ｂ」であり、ホストアドレスの下位２ビット（Ｃ）は「００Ｂ」であり、ホストアドレスの上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）は「１１０００Ｂ」であることから、得られる内部アドレスは、「１０００１００００１１１１００１１０００Ｂ」となる。
【０３５２】
以上より、ホストアドレスから内部アドレスへの変換が完了する。
【０３５３】
ホストアドレスが内部アドレスに変換された後のデータ読み出し動作は、上述した上記実施態様にかかるフラッシュメモリシステム１と同様である。
【０３５４】
本例では、フラッシュメモリチップ３２−２の物理ブロック＃１０８４の物理ページ＃２４に格納されたデータが読み出されることとなる。尚、物理ブロック＃１０８４の物理ページ＃２４は、仮想ブロック＃２３５１の仮想ページ＃９６に対応する。
【０３５５】
図２１は、データ書き込み動作における、アドレス変換テーブル３３を用いた内部アドレスへの変換手順を説明するための図である。
【０３５６】
ここでは、ホストコンピュータ５から連続したホストアドレス＃０〜＃３である、「０００１０１０１０１０１０１０００１００Ｂ」〜「０００１０１０１０１０１０１０００１１１Ｂ」に対してデータの書き込みが要求された場合を例に説明する。
【０３５７】
図２１に示されるように、本例では、ホストアドレス＃０〜＃３の上位１３ビット（Ａ）が「０００１０１０１０１０１０Ｂ」であるから、これを２０００で除した場合の商は「００Ｂ（０）」であり、剰余は「０１０１０１０１０１０Ｂ（６８２）」となる。
【０３５８】
これにより、選択されるフラッシュメモリチップはフラッシュメモリチップ３２−０となり、選択される仮想ブロックは、フラッシュメモリチップ３２−０内の仮想ブロック＃６８２となる。
【０３５９】
次に、マイクロプロセッサ６による制御のもと、消去済みブロックキュー３４を構成するキューセット＃０〜＃３のうち、フラッシュメモリチップ３２−０に対応するキューセット＃０を構成する各キュー＃０−０〜＃０−３に格納された内容が読み出される。
【０３６０】
上述のとおり、各キューに格納されているのは、消去済みブロックの物理ブロックアドレスの上位１１ビットである。
【０３６１】
本例では、これらキュー０−０〜＃０−３の内容がそれぞれ「１１１００００１１１１Ｂ」、「１００００１１００１１Ｂ」、「１００１１１１００００Ｂ」、「０１０００００００００Ｂ」であるものとする。
【０３６２】
キュー＃０−０〜＃０−３に格納された内容が読み出されると、これがＳＲＡＭワークエリア８に格納されているアドレス変換テーブル３３の仮想ブロック表示領域＃６８２に格納され、フラグが「１」にセットされるとともに、マイクロプロセッサ６による制御のもと、これを用いて内部アドレスが生成される。
【０３６３】
図２１に示されるように、内部アドレスの生成方法は、データの読み出し動作の場合と同様であり、マイクロプロセッサ６による制御のもと、選択されたチップ番号、読み出されたキューの内容、ホストアドレス＃０〜＃３それぞれの下位２ビット（Ｃ）、及びホストアドレス＃０〜＃３の上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）がこの順に結合される。
【０３６４】
この場合、選択されたチップ番号は「００Ｂ」であり、読み出されたセルの内容は「１１１００００１１１１Ｂ」、「１００００１１００１１Ｂ」、「１００１１１１００００Ｂ」、「０１０００００００００Ｂ」であり、ホストアドレス＃０〜＃３の下位２ビット（Ｃ）はそれぞれ「００Ｂ」〜「１１Ｂ」であり、ホストアドレス＃０〜＃３の上位１４ビット目〜上位１８ビット目からなる５ビット（Ｂ）はいずれも「１０００１Ｂ」であることから、得られる４つの内部アドレス＃０〜＃３の値は、図２１に示される値となる。
【０３６５】
これにより、ホストアドレス＃０〜＃３から内部アドレス＃０〜＃３への変換が完了する。
【０３６６】
図２２は、フラッシュシーケンサブロック１２による一連の書き込み動作タイミング概略的に示すタイミング図である。
【０３６７】
まず、フラッシュシーケンサブロック１２は、所定のレジスタに格納された内部アドレスの上位２ビットである「００Ｂ（０）」に基づいて、フラッシュメモリチップ３２−０に対応するチップ選択信号＃０を活性化する。
【０３６８】
次に、フラッシュシーケンサブロック１２は、所定のレジスタに格納された内部アドレスの中から内部アドレス＃０を選択し、内部アドレス＃０の下位１８ビット「１１１００００１１１１００１０００１Ｂ」を、所定のレジスタに格納されたデータ転送コマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０３６９】
上述のとおり、チップ選択信号＃０が活性状態となっているため、バス１５に供給された内部アドレス＃０の下位１８ビット及びデータ転送コマンドは、フラッシュメモリチップ３２−０に対してのみ有効となる。
【０３７０】
このとき、内部アドレスの上位１４ビット及び上位１５ビットからなる２ビット（Ｃ）である「００Ｂ（０）」に基づき、フラッシュメモリチップ３２−０に設けられたレジスタ＃０が活性化される（転送先指定）。
【０３７１】
これにより、フラッシュメモリチップ３２−０は、供給された内部アドレス＃０の下位１８ビット「１１１００００１１１１００１０００１Ｂ」に対応するページに書き込まれるべきデータのレジスタ＃０への受け入れが許可された状態となる。
【０３７２】
次に、バッファ９に格納されている書き込みデータのうち、ホストアドレス＃０に対応するデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック１２により、フラッシュメモリインターフェースブロック１０を介して、バス１５に供給される。
【０３７３】
上述のとおり、フラッシュメモリチップ３２−０に設けられたレジスタ＃０が活性化されているため、これらデータ及びエラーコレクションコードは、フラッシュメモリチップ３２−０内のレジスタ＃０に格納される（データ転送）。
【０３７４】
このような転送先指定処理及びデータ転送処理が、ホストアドレス＃１〜＃３に対応するデータについても行われ、これにより、フラッシュメモリチップ３２−０内に備えられたレジスタ＃０〜＃３へのホストアドレス＃０〜＃３に対応するデータ及びエラーコレクションコード等の付加情報の一時的な格納が完了する。
【０３７５】
次に、フラッシュシーケンサブロック１２は、所定のレジスタ（図示せず）に格納された内部書き込みコマンドを、フラッシュメモリチップ３２−０に対して発行する（書き込み命令）。
【０３７６】
これに応答して、フラッシュメモリチップ３２−０は、レジスタ＃０〜＃３に格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに一斉に書き込む（フラッシュプログラミング）。
【０３７７】
このようにして、フラッシュシーケンサブロック１２による一連の書き込み動作が完了する。
【０３７８】
上記一連の書き込み動作により、ホストアドレス＃０に対応するデータは、フラッシュメモリチップ３２−０の物理ブロック＃７２２８の物理ページ＃１７に書き込まれ、ホストアドレス＃１に対応するデータは、フラッシュメモリチップ３２−０の物理ブロック＃４３０１の物理ページ＃１７に書き込まれ、ホストアドレス＃２に対応するデータは、フラッシュメモリチップ３２−０の物理ブロック＃５０５８の物理ページ＃１７に書き込まれ、ホストアドレス＃３に対応するデータは、フラッシュメモリチップ３２−０の物理ブロック＃２０５１の物理ページ＃１７に書き込まれることとなる。
【０３７９】
尚、物理ブロック＃７２２８、＃４３０１、＃５０５８及び＃２０５１の物理ページ＃１７は、それぞれ仮想ブロック＃６８２の仮想ページ＃６８〜＃７１に対応する。
【０３８０】
以上説明したように、本実施態様にかかるフラッシュメモリシステム３１においては、上記実施態様にかかるフラッシュメモリシステム１とは異なり、仮想ブロックを構成する４つの物理ブロックが同じフラッシュメモリチップに含まれている。
【０３８１】
しかしながら、仮想ブロックを構成する４つの物理ブロックは、互いに異なるバンクに属しているため、上記実施態様にかかるフラッシュメモリシステム１と同様、ホストコンピュータ５から、連続する複数アドレスに対してデータ書き込み要求がなされた場合に、各ホストアドレスに対応するデータを、レジスタ＃０〜＃３へ連続的に転送し、その後、レジスタ＃０〜＃３に保持されたデータを所定のページへ一斉に書き込むことができる。
【０３８２】
すなわち、本実施態様においては、複数ページに亘るデータを一斉にフラッシュプログラミングすることができる。
【０３８３】
また、本実施態様にかかるフラッシュメモリシステム３１おいては、バンクタイプのフラッシュメモリチップを用いているので、用いるフラッシュメモリチップの数が１個であっても、上記並列書き込みを行うことが可能となる。
【０３８４】
次に、本発明の好ましいさらに他の実施態様にかかるフラッシュメモリシステムについて詳細に説明する。
【０３８５】
本実施態様にかかるフラッシュメモリシステム３５の物理的な構成は、上記実施態様にかかるフラッシュメモリシステム３１と同一であり、図１４に示したとおりである。
【０３８６】
したがって、搭載されているフラッシュメモリチップ３２−０〜３２−３は、上述のとおり、バンクタイプと呼ばれる方式のチップである。
【０３８７】
本実施態様においては、フラッシュメモリチップ３２−０を構成するバンク＃０〜＃３から一つずつ選ばれた４つの物理ブロックと、フラッシュメモリチップ３２−１を構成するバンク＃０〜＃３から一つずつ選ばれた４つの物理ブロックとが仮想的に結合された「仮想ブロック」を構成し、同様に、フラッシュメモリチップ３２−２を構成するバンク＃０〜＃３から一つずつ選ばれた４つの物理ブロックと、フラッシュメモリチップ３２−３を構成するバンク＃０〜＃３から一つずつ選ばれた４つの物理ブロックとが仮想的に結合された「仮想ブロック」を構成する。
【０３８８】
すなわち、各仮想ブロックは、８個の物理ブロックが仮想的に結合して構成され、仮想ブロック＃０〜＃３９９９からなる４０００個の仮想ブロックが構成される。
【０３８９】
ここでは、便宜上、フラッシュメモリチップ３２−０及び３２−１によって構成される仮想ブロック群を「ゾーン＃０」と呼び、フラッシュメモリチップ３２−２及び３２−３によって構成される仮想ブロック群を「ゾーン＃１」と呼ぶ。
【０３９０】
図２３は、本実施態様における仮想ブロックの一例を示す図である。
【０３９１】
図２３に示される例では、フラッシュメモリチップ３２−０のバンク＃０に含まれる物理ブロック＃３１２８、フラッシュメモリチップ３２−０のバンク＃１に含まれる物理ブロック＃６７２５、フラッシュメモリチップ３２−０のバンク＃２に含まれる物理ブロック＃４１６２、フラッシュメモリチップ３２−０のバンク＃３に含まれる物理ブロック＃３、フラッシュメモリチップ３２−１のバンク＃０に含まれる物理ブロック＃７８００、フラッシュメモリチップ３２−１のバンク＃１に含まれる物理ブロック＃７８０１、フラッシュメモリチップ３２−１のバンク＃２に含まれる物理ブロック＃２、フラッシュメモリチップ３２−１のバンク＃３に含まれる物理ブロック＃３９９９が仮想的に結合され、一つの仮想ブロックを構成している。
【０３９２】
このように、本実施態様においては、ひとつの仮想ブロックを構成する８つの物理ブロックのうち４つの物理ブロックは、あるフラッシュメモリチップ内の互いに異なるバンクに属することが必要であり、残りの４つの物理ブロックは、別のフラッシュメモリチップ内の互いに異なるバンクに属することが必要である。
【０３９３】
このようにして、４０００個の仮想ブロックが構成される。
【０３９４】
このうち、フラッシュメモリチップ３２−０及び３２−１は仮想ブロック＃０〜＃１９９９を構成し、フラッシュメモリチップ３２−２及び３２−３は仮想ブロック＃２０００〜＃３９９９を構成する。
【０３９５】
図２４は、図２３に示された仮想ブロックのページ構造を示す図である。
【０３９６】
図２４に示されるように、本実施態様においては、仮想ブロックは、仮想ページ＃０〜ページ＃２５５からなる２５６個のページによって構成される一つのブロックとして取り扱われる。
【０３９７】
ここで、図２３に示した仮想ブロックのうち、フラッシュメモリチップ３２−０の物理ブロック＃３１２８からなる部分に含まれる３２個のページは、仮想ページ番号として８ｉ（ｉは、物理ページ番号）が与えられ、フラッシュメモリチップ３２−０の物理ブロック＃６７２５からなる部分に含まれる３２個のページは、仮想ページ番号として８ｉ＋１が与えられ、フラッシュメモリチップ３２−０の物理ブロック＃４１６２のブロック＃１６２からなる部分に含まれる３２個のページは、仮想ページ番号として８ｉ＋２（ｉ＝０〜３１）が与えられ、フラッシュメモリチップ３２−０の物理ブロック＃３からなる部分に含まれる３２個のページは、仮想ページ番号として８ｉ＋３（ｉ＝０〜３１）が与えられ、フラッシュメモリチップ３２−１の物理ブロック＃７８００からなる部分に含まれる３２個のページは、仮想ページ番号として８ｉ＋４（ｉ＝０〜３１）が与えられ、フラッシュメモリチップ３２−１の物理ブロック＃７８０１からなる部分に含まれる３２個のページは、仮想ページ番号として８ｉ＋５（ｉ＝０〜３１）が与えられ、フラッシュメモリチップ３２−１の物理ブロック＃２からなる部分に含まれる３２個のページは、仮想ページ番号として８ｉ＋６（ｉ＝０〜３１）が与えられ、フラッシュメモリチップ３２−１の物理ブロック＃３９９９からなる部分に含まれる３２個のページは、仮想ページ番号として８ｉ＋７（ｉ＝０〜３１）が与えられる。
【０３９８】
図２５は、４０００個の仮想ブロックと、これら各仮想ブロックを構成する８つの物理ブロックとの関係を示すアドレス変換テーブル３６のデータ構造を示す概略図である。
【０３９９】
図２５に示されるように、アドレス変換テーブル３６は、仮想ブロック表示領域＃０〜＃３９９９からなる４０００個の仮想ブロックがこの順に並んで構成され、これら各仮想ブロック＃０〜＃３９９９は、それぞれセル＃ｊ−０〜セル＃ｊ−７（ｊは、仮想ブロック番号）からなる８個のセル及び１個のフラグによって構成される。
【０４００】
ここで、セル＃ｊ−０を構成するスロット＃０はフラッシュメモリチップ３２−０または３２−２のバンク＃０に対応し、セル＃ｊ−１を構成するスロット＃１はフラッシュメモリチップ３２−０または３２−２のバンク＃１に対応し、セル＃ｊ−２を構成するスロット＃２はフラッシュメモリチップ３２−０または３２−２のバンク＃２に対応し、セル＃ｊ−３を構成するスロット＃３はフラッシュメモリチップ３２−０または３２−２のバンク＃３に対応し、セル＃ｊ−４を構成するスロット＃４はフラッシュメモリチップ３２−１または３２−３のバンク＃０に対応し、セル＃ｊ−５を構成するスロット＃５はフラッシュメモリチップ３２−１または３２−３のバンク＃１に対応し、セル＃ｊ−６を構成するスロット＃６はフラッシュメモリチップ３２−１または３２−３のバンク＃２に対応し、セル＃ｊ−７を構成するスロット＃７はフラッシュメモリチップ３２−１または３２−３のバンク＃３に対応している。
【０４０１】
各仮想ブロックに含まれるセル＃ｊ−０〜＃ｊ−７には、それぞれ当該仮想ブロックを構成する物理ブロックのアドレス（物理ブロックアドレス）の上位１１ビットが格納される。
【０４０２】
したがって、例えば、図２３及び図２４に示された仮想ブロックが、仮想ブロック＃０であるとすれば、当該仮想ブロックは、フラッシュメモリチップ３２−０の物理ブロック＃３１２８、＃６７２５、＃４１６２及びブロック＃３、並びに、フラッシュメモリチップ３２−１の物理ブロック＃７８００、＃７８０１、＃２及び＃３９９９より構成されることから、セル＃０−０〜＃０−７には、「０１１００００１１１０Ｂ（７８２）」、「１１０１００１０００１Ｂ（１６８１）」、「１０００００１００００Ｂ（１０４０）」、「０００００００００００Ｂ（０）」、「１１１１００１１１１０Ｂ（１９５０）」、「１１１１００１１１１０Ｂ（１９５０）」、「０００００００００００Ｂ（０）」及び「０１１１１１００１１１Ｂ（９９９）」がそれぞれ格納されることになる。
【０４０３】
また、各仮想ブロック表示領域に含まれるフラグは、対応するセル＃ｊ−０〜＃ｊ−７に格納されている内容が有効であるか無効であるかを示している。
【０４０４】
具体的には、フラグが「１」を示していれば対応するセルに格納されている内容は有効であり、フラグが「０」を示していれば対応するセルに格納されている内容は無効である。
【０４０５】
したがって、フラグが「０」を示している仮想ブロック表示領域においては、これに含まれるセル＃ｊ−０〜＃ｊ−７に格納されている内容は無視される。
【０４０６】
図２６は、ＳＲＡＭワークエリア８に格納される消去済みブロックキュー３７のデータ構造を示す概略図である。
【０４０７】
図２６に示されるように、消去済みブロックキュー３７は、キューセット＃０〜＃３からなる４つのキューによって構成され、これらは、それぞれキュー＃ｋ−０〜キュー＃ｋ−７（ｋは、キューセット番号）からなる８個のキューによって構成される。
【０４０８】
ここで、キュー＃ｋ−０〜＃ｋ−３はフラッシュメモリチップ３２−０または３２−２のバンク＃０〜＃３にそれぞれ対応し、キュー＃ｋ−４〜＃ｋ−７はフラッシュメモリチップ３２−１または３２−３のバンク＃０〜＃３にそれぞれ対応している。
【０４０９】
さらに、キューセット＃０及び＃１はいずれもゾーン＃０に対応し、キューセット＃２及び＃３はいずれもゾーン＃１に対応している。
【０４１０】
各キューセット＃０〜＃３を構成するキュー＃ｋ−０〜＃ｋ−７には、ユーザ領域２５を構成する全てのフラッシュメモリセル１６が消去状態となっている物理ブロックの物理ブロックアドレスの上位１１ビットが格納される。
【０４１１】
消去済みブロックキュー３０の生成は、マイクロプロセッサ６による制御のもと、上述したアドレス変換テーブル３６の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から選ばれる。
【０４１２】
図２７は、データ読み出し動作における、アドレス変換テーブル３６を用いた内部アドレスへの変換手順を説明するための図である。
【０４１３】
ここでは、ホストコンピュータ５からホストアドレス「０００００１１１１１１１１１１０００００Ｂ」に対してデータの読み出しが要求された場合を例に説明する。
【０４１４】
図２７においては、便宜上、ホストアドレスから上位１２ビットを「Ａ」とし、上位１３ビット目〜上位１７ビット目からなる５ビットを「Ｂ」とし、上位１８ビット目を「Ｃ」とし、下位２ビットを「Ｄ」と表記している。
【０４１５】
データ読み出し動作においては、まず、マイクロプロセッサ６による制御のもと、２０ビットのホストアドレスから上位１２ビット（Ａ）が取り出され、これが「２０００」で除される。
【０４１６】
そして、かかる除算によって得られた商（０〜１）によってゾーンが特定され、剰余（０〜１９９９）によって仮想ブロックが特定される。
【０４１７】
本例では、ホストアドレスの上位１２ビット（Ａ）が「０００００１１１１１１１Ｂ」であるから、商は「０Ｂ」であり、剰余は「００００１１１１１１１Ｂ（１２７）」となる。
【０４１８】
これにより、選択されるゾーンはゾーン＃０となり、選択される仮想ブロック表示領域は、仮想ブロック表示領域＃１２７となる。
【０４１９】
したがって、マイクロプロセッサ６による制御のもと、ＳＲＡＭワークエリア８に格納されているアドレス変換テーブル３６から仮想ブロック表示領域＃１２７が選択され、仮想ブロック表示領域＃１２７を構成する８個のセルのうち、ホストアドレスの下位３ビットと同じ枝番号を有するセルの内容が読み出される。この場合、ホストアドレスの下位３ビットが「０００Ｂ（０）」であるから、その内容が読み出されるセルは、セル＃１２７−０となる。
【０４２０】
本例では、かかるセル＃１２７−０の内容が「０００００００１１１１Ｂ」であるものとする。
【０４２１】
次に、マイクロプロセッサ６による制御のもと、選択されたゾーン番号、ホストアドレスの上位１８ビット目（Ｃ）、読み出されたセルの内容、ホストアドレスの下位２ビット（Ｄ）、及びホストアドレスの上位１３ビット目〜上位１７ビット目からなる５ビット（Ｂ）がこの順に結合される。結合されたアドレスは、内部アドレスとなる。
【０４２２】
この場合、選択されたゾーン番号は「０Ｂ」であり、ホストアドレスの上位１８ビット目（Ｃ）は「０Ｂ」であり、読み出されたセルの内容は「０００００００１１１１Ｂ」であり、ホストアドレスの下位２ビット（Ｄ）は「００Ｂ」であり、ホストアドレスの上位１３ビット目〜上位１７ビット目からなる５ビット（Ｂ）は「１１１００Ｂ」であることから、得られる内部アドレスは、「０００００００００１１１１００１１１００Ｂ」となる。
【０４２３】
以上より、ホストアドレスから内部アドレスへの変換が完了する。
【０４２４】
ホストアドレスが内部アドレスに変換された後のデータ読み出し動作は、上述した上記実施態様にかかるフラッシュメモリシステム１、３１と同様である。
【０４２５】
本例では、フラッシュメモリチップ３２−０の物理ブロック＃６０の物理ページ＃２８に格納されたデータが読み出されることとなる。
【０４２６】
尚、物理ブロック＃６０の物理ページ＃２８は、仮想ブロック＃１２７の仮想ページ＃２２４に対応する。
【０４２７】
図２８は、データ書き込み動作における、アドレス変換テーブル３６を用いた内部アドレスへの変換手順を説明するための図である。
【０４２８】
ここでは、ホストコンピュータ５から連続したホストアドレス＃０〜＃７である、「１００１０１０１０１０１０１０００１００Ｂ」〜「１００１０１０１０１０１０１００１０１１Ｂ」に対してデータの書き込みが要求された場合を例に説明する。
【０４２９】
図２８に示されるように、本例では、ホストアドレス＃０〜＃７の上位１２ビット（Ａ）が「１００１０１０１０１０１Ｂ」であるから、これを２０００で除した場合の商は「１Ｂ（１）」であり、剰余は「００１１００００１０１Ｂ（３８９）」となる。
【０４３０】
これにより、選択されるゾーンはゾーン＃１となり、選択される仮想ブロックは、仮想ブロック＃２３８９（３８９＋２０００）となる。
【０４３１】
次に、マイクロプロセッサ６による制御のもと、消去済みブロックキュー３７を構成するキューセット＃０〜＃３のうち、ゾーン＃１に対応するキューセット＃２または＃３を構成する各キュー＃２−０〜＃２−７またはキュー＃３−０〜＃３−７に格納された内容が読み出される。
【０４３２】
上述のとおり、キュー＃２−０〜＃２−３及びキュー３−０〜３−３に格納されているのは、フラッシュメモリチップ３２−２に含まれる消去済みブロックの物理ブロックアドレスの上位１１ビットであり、キュー＃２−４〜＃２−７及びキュー３−４〜３−７に格納されているのは、フラッシュメモリチップ３２−３に含まれる消去済みブロックの物理ブロックアドレスの上位１１ビットである。
【０４３３】
本例では、キューセット＃２が選択されたものとし、これらキュー＃２−０〜＃２−７の内容がそれぞれ「０００００００１１１１Ｂ」、「１１０００１１００１１Ｂ」、「００１１１１１００００Ｂ」、「０１１００００００００Ｂ」、「１１０１１１１１１１１Ｂ」、「１０１１０１０１０１０Ｂ」、「１０１０１０１０１０１Ｂ」、「０００１１００１１００Ｂ」であるものとする。
【０４３４】
キュー＃２−０〜＃２−７に格納された内容が読み出されると、これがＳＲＡＭワークエリア８に格納されているアドレス変換テーブル３６の仮想ブロック表示領域＃２３８９に格納され、フラグが「１」にセットされるとともに、マイクロプロセッサ６による制御のもと、これを用いて内部アドレスが生成される。
【０４３５】
図２８に示されるように、内部アドレスの生成方法は、データの読み出し動作の場合と同様であり、マイクロプロセッサ６による制御のもと、選択されたゾーン番号、ホストアドレス＃０〜＃７それぞれの上位１８ビット目（Ｃ）、読み出されたキューの内容、ホストアドレス＃０〜＃７それぞれの下位２ビット（Ｄ）、及びホストアドレス＃０〜＃７の上位１３ビット目〜上位１７ビット目からなる５ビット（Ｂ）がこの順に結合される。
【０４３６】
これにより得られる８つの内部アドレス＃０〜＃７の値は、図２８に示される値となる。
【０４３７】
これにより、ホストアドレス＃０〜＃７から内部アドレス＃０〜＃７への変換が完了する。
【０４３８】
図２９は、フラッシュシーケンサブロック１２による一連の書き込み動作タイミング概略的に示すタイミング図である。
【０４３９】
まず、フラッシュシーケンサブロック１２は、所定のレジスタ（図示せず）に格納された内部アドレスの中から内部アドレス＃０を選択し、その上位２ビット「１１Ｂ（３）」に基づいて、フラッシュメモリチップ３２−３に対応するチップ選択信号＃３を活性化する。
【０４４０】
次に、フラッシュシーケンサブロック１２は、内部アドレス＃０の下位１８ビット「０００００００１１１１０００１０００Ｂ」を、所定のレジスタ（図示せず）に格納されたデータ転送コマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０４４１】
上述のとおり、チップ選択信号＃３が活性状態となっているため、バス１５に供給された内部アドレス＃０の下位１８ビット及びデータ転送コマンドは、フラッシュメモリチップ３２−３に対してのみ有効となる。
【０４４２】
このとき、内部アドレスの上位１４ビット目及び上位１５ビット目からなる２ビット（Ｄ）である「００Ｂ（０）」に基づき、フラッシュメモリチップ３２−３に設けられたレジスタ＃０が活性化される（転送先指定）。
【０４４３】
これにより、フラッシュメモリチップ３２−３は、供給された内部アドレス＃０の下位１８ビット「０００００００１１１１０００１０００Ｂ」に対応する物理ページに書き込まれるべきデータのレジスタ＃０への受け入れが許可された状態となる。
【０４４４】
次に、バッファ９に格納されている書き込みデータのうち、ホストアドレス＃０に対応するデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック１２により、フラッシュメモリインターフェースブロック１０を介して、バス１５に供給される。
【０４４５】
上述のとおり、フラッシュメモリチップ３２−３に設けられたレジスタ＃０が活性化されているため、これらデータ及びエラーコレクションコード等の付加情報は、フラッシュメモリチップ３２−３内のレジスタ＃０に格納される（データ転送）。
【０４４６】
このような、転送先指定処理及びデータ転送処理が、ホストアドレス＃１〜＃３に対応するデータについても行われ、これにより、フラッシュメモリチップ３２−３内に備えられたレジスタ＃０〜＃３への、ホストアドレス＃０〜＃３に対応するデータ及びエラーコレクションコード等の付加情報の一時的な格納が完了する。
【０４４７】
次に、フラッシュシーケンサブロック１２は、所定のレジスタに格納された内部書き込みコマンドを、フラッシュメモリチップ３２−３に対して発行する（書き込み命令）。
【０４４８】
これに応答して、フラッシュメモリチップ３２−３は、レジスタ＃０〜＃３に格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに一斉に書き込む（フラッシュプログラミング）。
【０４４９】
フラッシュメモリチップ３２−３がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック１２は、所定のレジスタに格納された内部アドレスの中から内部アドレス＃４を選択し、その上位２ビット「１０Ｂ（２）」に基づいて、フラッシュメモリチップ３２−２に対応するチップ選択信号＃２を活性化する。
【０４５０】
次に、フラッシュシーケンサブロック１２は、内部アドレス＃４の下位１８ビットを、所定のレジスタに格納されたデータ転送コマンドとともにバス１５に供給するよう、フラッシュメモリインターフェースブロック１０に指示する。
【０４５１】
上述のとおり、チップ選択信号＃２が活性状態となっているため、バス１５に供給された内部アドレス＃４の下位１８ビット及びデータ転送コマンドは、フラッシュメモリチップ３２−２に対してのみ有効となる。
【０４５２】
このとき、内部アドレスの上位１３ビット及び上位１４ビットからなる２ビット（Ｄ）である「００Ｂ（０）」に基づき、フラッシュメモリチップ３２−２に設けられたレジスタ＃０が活性化される（転送先指定）。
【０４５３】
これにより、フラッシュメモリチップ３２−２は、供給された内部アドレス＃４の下位１８ビットに対応するページに書き込まれるべきデータのレジスタ＃０への受け入れが許可された状態となる。
【０４５４】
次に、バッファ９に格納されている書き込みデータのうち、ホストアドレス＃４に対応するデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック１２により、フラッシュメモリインターフェースブロック１０を介して、バス１５に供給される。
【０４５５】
上述のとおり、フラッシュメモリチップ３２−２に設けられたレジスタ＃０が活性化されているため、これらデータ及びエラーコレクションコードは、フラッシュメモリチップ３２−２内のレジスタ＃０に格納される（データ転送）。
【０４５６】
このような、転送先指定処理及びデータ転送処理が、ホストアドレス＃５〜＃７に対応するデータについても行われ、これにより、フラッシュメモリチップ３２−２内に備えられたレジスタ＃０〜＃３への、ホストアドレス＃４〜＃７に対応するデータ及びエラーコレクションコード等の付加情報の一時的な格納が完了する。
【０４５７】
次に、フラッシュシーケンサブロック１２は、所定のレジスタ（図示せず）に格納された内部書き込みコマンドを、フラッシュメモリチップ３２−２に対して発行する（書き込み命令）。
【０４５８】
これに応答して、フラッシュメモリチップ３２−２は、レジスタ＃０〜＃３に格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに一斉に書き込む（フラッシュプログラミング）。
【０４５９】
このようにして、フラッシュシーケンサブロック１２による一連の書き込み動作が完了する。
【０４６０】
尚、上記一連の書き込み動作により、ホストアドレス＃０に対応するデータは、フラッシュメモリチップ３２−３の物理ブロック＃６０の物理ページ＃８に書き込まれ、ホストアドレス＃１に対応するデータは、フラッシュメモリチップ３２−３の物理ブロック＃６３４９の物理ページ＃８に書き込まれ、ホストアドレス＃２に対応するデータは、フラッシュメモリチップ３２−３の物理ブロック＃１９８６の物理ページ＃８に書き込まれ、ホストアドレス＃３に対応するデータは、フラッシュメモリチップ３２−３の物理ブロック＃３０７５の物理ページ＃８に書き込まれ、ホストアドレス＃４に対応するデータは、フラッシュメモリチップ３２−２の物理ブロック＃７１６４の物理ページ＃９に書き込まれ、ホストアドレス＃５に対応するデータは、フラッシュメモリチップ３２−２の物理ブロック＃５８０１の物理ページ＃９に書き込まれ、ホストアドレス＃６に対応するデータは、フラッシュメモリチップ３２−２の物理ブロック＃５４６２の物理ページ＃９に書き込まれ、ホストアドレス＃７に対応するデータは、フラッシュメモリチップ３２−２の物理ブロック＃８１９の物理ページ＃９に書き込まれることとなる。
【０４６１】
尚、フラッシュメモリチップ３２−３の物理ブロック＃６０、＃６３４９、＃１９８６及び＃３０７５の物理ページ＃８、並びに、フラッシュメモリチップ３２−２の物理ブロック＃７１６４、＃５８０１、＃５４６２及び＃８１９の物理ページ＃９は、それぞれ仮想ブロック＃２３８９の仮想ページ＃６８〜＃７５に対応する。
【０４６２】
以上説明したように、本実施態様にかかるフラッシュメモリシステム３５おいては、複数のフラッシュメモリチップを用いて仮想ブロックを構成するという上記実施態様にかかるフラッシュメモリシステム１の特徴と、バンクタイプのフラッシュメモリチップ３２を用いることにより仮想ブロックを構成するという上記実施態様にかかるフラッシュメモリシステム３１の特徴を兼ね備えている。
【０４６３】
これにより、搭載されるフラッシュメモリチップ３２の個数や各フラッシュメモリチップ３２が備えるバンク数を超える数の物理ブロックからなる仮想ブロックを構成することが可能となる。
【０４６４】
このことは、データ書き込み時において並列処理が可能なページ数が多くなることを意味するので、データ書き込み処理をより高速に行うことが可能となる。
【０４６５】
本発明は、以上の実施態様に限定されることなく、特許請求の範囲に記載された発明の範囲内で種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることはいうまでもない。
【０４６６】
例えば、上記実施態様にかかるフラッシュメモリシステム１においては、それぞれ異なるフラッシュメモリチップに属する４個の物理ブロックを仮想的に結合させることによって、１つの仮想ブロックを構成しているが、仮想ブロックを構成する物理ブロックの数は４個に限定されず、他の数、例えば２個や８個であってもよい。
【０４６７】
この場合、１つの仮想ブロックを構成する物理ブロックの数を、搭載されたフラッシュメモリチップの数と一致させることは必須ではなく、仮想ブロックを構成する物理ブロックの数を搭載されるフラッシュメモリチップの数よりも少なく設定しても構わない。
【０４６８】
例えば、フラッシュメモリチップの数が８個である場合に、仮想ブロックを構成する物理ブロックの数を４個としてもよい。
【０４６９】
また、上記実施態様にかかるフラッシュメモリシステム３１においては、それぞれ異なるバンクに属する４個の物理ブロックを仮想的に結合させることによって、１つの仮想ブロックを構成しているが、１つの仮想ブロックを構成する物理ブロックの数は４個に限定されず、他の数、例えば２個や８個であってもよい。
【０４７０】
この場合、仮想ブロックを構成する物理ブロックの数を各フラッシュメモリチップが備えるバンク数と一致させることは必須ではなく、仮想ブロックを構成する物理ブロックの数を各フラッシュメモリチップを備えるバンク数よりも少なく設定しても構わない。
【０４７１】
例えば、各フラッシュメモリチップが備えるバンクが８である場合に、仮想ブロックを構成する物理ブロックの数を４個としてもよい。
【０４７２】
さらに、上記実施態様にかかるフラッシュメモリシステム３５においては、それぞれ４つのバンクを備える２つのフラッシュメモリチップ３２内のブロックを仮想的に結合させることによって、８個の物理ブロックからなる仮想ブロックを構成しているが、１つの仮想ブロックを構成する物理ブロックの数は８個に限定されず、他の数、例えば１６個であってもよい。
【０４７３】
また、上記実施態様にかかるフラッシュメモリシステム１においては、データの上書き処理を行う際に、転送元の仮想ブロックを構成する４つのブロックからそれぞれ１ページ分のデータを読み出してこれら４ページ分のデータを一時的に保持し、これら４ページ分のデータを転送先の仮想ブロックを構成する４つのブロックへそれぞれ書き込んでいるが、一時的に保持すべきデータは、４ページ分のデータに限定されず、１ページ分のデータであってもよいし、２ページ分のデータであってもよい。
【０４７４】
このように一時的に保持すべきデータの数が、仮想ブロックを構成するセルの数を下回る場合には、バッファ９に必要とされる記憶容量を低減することができる一方、転送効率が低下するため、一連の処理に要する時間は長くなる。
【０４７５】
さらに、上記実施態様にかかるフラッシュメモリシステム１、３１、３５においては、データが格納されている全ての物理ブロックに関わるアドレス変換情報をＳＲＡＭワークエリア８上のアドレス変換テーブル２７、３３、３６に展開しているが、本発明において、これら全ての物理ブロックに関わるアドレス変換情報をアドレス変換テーブルに展開することは必須ではなく、これらの一部のみを展開してもよい。
【０４７６】
この場合、ＳＲＡＭワークエリア８に必要とされる記憶容量を削減することができる。
【０４７７】
但し、このように一部の物理ブロックに関わるアドレス変換情報のみをアドレス変換テーブルに展開する場合、アドレス変換テーブルにアドレス変換情報が含まれていない物理ブロックへのアクセスが要求される度に、アドレス変換テーブルを更新する必要がある。
【０４７８】
また、上記実施態様においては、フラッシュメモリシステム１、３１、３５はカード形状であり、４個のフラッシュメモリチップ２−０〜２−３または３２−０〜３２−３とコントローラ３とが、一つのカード内に集積されて構成されているが、本発明にかかるフラッシュメモリシステムがカード形状に限定されることはなく、他の形状、例えばスティック状であってもよい。
【０４７９】
さらに、上記実施態様においては、フラッシュメモリシステム１、３１、３５は、４個のフラッシュメモリチップ２−０〜２−３または３２−０〜３２−３とコントローラ３とが、一つのカード内に集積されて構成されているが、フラッシュメモリチップ２−０〜２−３または３２−０〜３２−３とコントローラ３とが、同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。
【０４８０】
この場合、フラッシュメモリチップ２−０〜２−３または３２−０〜３２−３がパッケージングされた筐体及びコントローラ３がパッケージングされた筐体には、それぞれ他方との電気的及び機械的接続を実現するためのコネクタが必要とされ、かかるコネクタによって、フラッシュメモリチップ２−０〜２−３または３２−０〜３２−３がパッケージングされた筐体が、コントローラ３がパッケージングされた筐体に着脱可能に装着される。
【０４８１】
さらに、フラッシュメモリチップ２−０〜２−３または３２−０〜３２−３についても、これらが同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。
【０４８２】
また、上記実施態様にかかるフラッシュメモリシステム１、３１、３５においては、各フラッシュメモリチップ２−０〜２−３または３２−０〜３２−３は、それぞれ１２８Ｍバイト（１Ｇビット）の記憶容量を有する半導体チップであるが、各フラッシュメモリチップ２−０〜２−３の記憶容量は１２８Ｍバイト（１Ｇビット）に限定されず、これとは異なる容量、例えば３２Ｍバイト（２５６Ｍビット）であってもよい。
【０４８３】
さらに、上記実施態様にかかるフラッシュメモリシステム１、３１、３５においては、５１２バイトを１ページとし、これを最小アクセス単位としているが、最小アクセス単位としては５１２バイトに限定されず、これとは異なる容量であってもよい。
【０４８４】
また、上記実施態様にかかるフラッシュメモリシステム１、３１、３５においては、フラッシュメモリチップ２−０〜２−３または３２−０〜３２−３を構成する各フラッシュメモリセル１６が、１ビットのデータを保持しているが、フローティングゲート電極２１に注入すべき電子の量を複数段階に制御することによって、２ビット以上のデータを保持可能に構成してもよい。
【０４８５】
さらに、上記実施態様にかかるフラッシュメモリシステム１、３１、３５においては、各ブロックを３２個のページによって構成しているが、各ブロックを構成するページ数は３２個には限定されず、他の数、例えば、１６個や６４個であってもよい。
【０４８６】
また、上記実施態様にかかるフラッシュメモリシステム１においては、消去済みブロックキュー３０が６つのキューセット＃０〜＃５によって構成されているが、消去済みブロックキュー３０を構成する６つのキューセットの数としては６組に限定されず、他の数、例えば、１組や８組であってもよい。
【０４８７】
同様に、上記実施態様にかかるフラッシュメモリシステム３１においては、各フラッシュメモリチップ３２−０〜３２−３に対してそれぞれ１組のキューセットを割り当てることによって、消去済みブロックキュー３４が構成されているが、各フラッシュメモリチップ３２−０〜３２−３に対して割り当てられるキューセットの数としては１組に限定されず、他の数、例えば、２組や４組であってもよい。
【０４８８】
さらに同様に、上記実施態様にかかるフラッシュメモリシステム３５においては、各ゾーン＃０及び＃１に対してそれぞれ２組のキューセットを割り当てることによって、消去済みブロックキュー３７が構成されているが、各ゾーン＃０及び＃１に対して割り当てられるキューセットの数としては２組に限定されず、他の数、例えば、１組や４組であってもよい。
【０４８９】
さらに、上記実施態様にかかるフラッシュメモリシステム１、３１、３５においては、フラッシュメモリチップ２、３２としてＮＡＮＤ型のフラッシュメモリチップを用いているが、本発明により制御可能なフラッシュメモリがＮＡＮＤ型に限定されるものではなく、他の種類、例えば、ＡＮＤ型のフラッシュメモリを制御することも可能である。
【０４９０】
さらに、本発明において、手段とは、必ずしも物理的手段を意味するものではなく、各手段の機能がソフトウエアによって実現される場合も包含する。
さらに、一つの手段の機能が二以上の物理的手段により実現されても、二以上の手段の機能が一つの物理的手段により実現されてもよい。
【０４９１】
尚、本発明は、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）が発表した統一規格に基づくＰＣカードとして実現することが可能である。
【０４９２】
さらに、近年、半導体素子の高集積化技術の発展に伴い、より小型化された小型メモリカード、例えば、ＣＦＡ（ＣｏｍｐａｃｔＦｌａｓｈ  Ａｓｓｏｃｉａｔｉｏｎ）が提唱する「ＣｏｍｐａｃｔＦｌａｓｈ」や、ＭｕｌｔｉＭｅｄｉａＣａｒｄ  Ａｓｓｏｃｉａｔｉｏｎの提唱する「ＭＭＣ（ＭｕｌｔｉＭｅｄｉａＣａｒｄ）」、ソニー株式会社が提唱する「メモリースティック」、松下電器産業株式会社等が提唱する「ＳＤメモリーカード」などに本発明を適用することが可能である。
【０４９３】
以上説明したように、本発明によれば、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することができる。
【０４９４】
【図面の簡単な説明】
【図１】図１は、本発明の好ましい実施態様にかかるフラッシュメモリシステム１を概略的に示すブロック図である。
【図２】図２は、フラッシュメモリチップ２−０〜２−３を構成する各フラッシュメモリセル１６の構造を概略的に示す断面図である。
【図３】図３は、書込状態であるフラッシュメモリセル１６を概略的に示す断面図である。
【図４】図４は、フラッシュメモリチップ２−０のアドレス空間の構造を概略的に示す図である。
【図５】図５は、冗長領域２６のデータ構造を概略的に示す図である。
【図６】図６は、本発明の好ましい実施態様における仮想ブロックのマッピングの一例を示す図である。
【図７】図７は、図６に示された仮想ブロックの仮想ページ構造を示す図である。
【図８】図８は、８０００個の仮想ブロックと、これら各仮想ブロックを構成する４つの物理ブロックとの関係を示すアドレス変換テーブル２７のデータ構造を示す概略図である。
【図９】図９は、ＳＲＡＭワークエリア８に格納される消去済みブロックキュー３０のデータ構造を示す概略図である。
【図１０】図１０は、データ読み出し動作時における、アドレス変換テーブル２７を用いた内部アドレスへの変換方法を説明するための図である。
【図１１】図１１は、データ書き込み動作時における、アドレス変換テーブル２７を用いた内部アドレスへの変換方法を説明するための図である。
【図１２】図１２は、フラッシュシーケンサブロック１２による一連の書き込み動作タイミング概略的に示すタイミング図である。
【図１３】図１３は、転送元ブロックアドレス及び転送先ブロックアドレスの生成方法を説明するための図である。
【図１４】図１４は、本発明の好ましい他の実施態様にかかるフラッシュメモリシステム３１を概略的に示すブロック図である。
【図１５】図１５は、フラッシュメモリチップ３２−０の構造を概略的に示す図である。
【図１６】図１６は、フラッシュメモリチップ３２−０における仮想ブロックの一例を示す図である。
【図１７】図１７は、図１６に示された仮想ブロックのページ構造を示す図である。
【図１８】図１８は、８０００個の仮想ブロックと、これら各仮想ブロックを構成する４つの物理ブロックとの関係を示すアドレス変換テーブル３３のデータ構造を示す概略図である。
【図１９】図１９は、ＳＲＡＭワークエリア８に格納される消去済みブロックキュー３４のデータ構造を示す概略図である。
【図２０】図２０は、データ読み出し動作における、アドレス変換テーブル３３を用いた内部アドレスへの変換手順を説明するための図である。
【図２１】図２１は、データ書き込み動作における、アドレス変換テーブル３３を用いた内部アドレスへの変換手順を説明するための図である。
【図２２】図２２は、フラッシュシーケンサブロック１２による一連の書き込み動作タイミング概略的に示すタイミング図である。
【図２３】図２３は、本発明の好ましいさらに他の実施態様における仮想ブロックの一例を示す図である。
【図２４】図２４は、図２３に示された仮想ブロックのページ構造を示す図である。
【図２５】図２５は、４０００個の仮想ブロックと、これら各仮想ブロックを構成する８つの物理ブロックとの関係を示すアドレス変換テーブル３６のデータ構造を示す概略図である。
【図２６】図２６は、ＳＲＡＭワークエリア８に格納される消去済みブロックキュー３７のデータ構造を示す概略図である。
【図２７】図２７は、データ読み出し動作における、アドレス変換テーブル３６を用いた内部アドレスへの変換手順を説明するための図である。
【図２８】図２８は、データ書き込み動作における、アドレス変換テーブル３６を用いた内部アドレスへの変換手順を説明するための図である。
【図２９】図２９は、フラッシュシーケンサブロック１２による一連の書き込み動作タイミング概略的に示すタイミング図である。
【図１】
0003905037.tif 000002
【図２】
0003905037.tif 000003
【図３】
0003905037.tif 000004
【図４】
0003905037.tif 000005
【図５】
0003905037.tif 000006
【図６】
0003905037.tif 000007
【図７】
0003905037.tif 000008
【図８】
0003905037.tif 000009
【図９】
0003905037.tif 000010
【図１０】
0003905037.tif 000011
【図１１】
0003905037.tif 000012
【図１２】
0003905037.tif 000013
【図１３】
0003905037.tif 000014
【図１４】
0003905037.tif 000015
【図１５】
0003905037.tif 000016
【図１６】
0003905037.tif 000017
【図１７】
0003905037.tif 000018
【図１８】
0003905037.tif 000019
【図１９】
0003905037.tif 000020
【図２０】
0003905037.tif 000021
【図２１】
0003905037.tif 000022
【図２２】
0003905037.tif 000023
【図２３】
0003905037.tif 000024
【図２４】
0003905037.tif 000025
【図２５】
0003905037.tif 000026
【図２６】
0003905037.tif 000027
【図２７】
0003905037.tif 000028
【図２８】
0003905037.tif 000029
【図２９】
0003905037.tif 000030