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