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