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