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