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