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