(57)【要約】【課題】ブロック間転送処理やデータの書込み処理の効率の低下を抑えつつ、データの書込み処理の途中にブロック間転送処理を割込ませることができるメモリコントローラを提供する【解決手段】ブロック間転送処理の要求を検知したときに、フラッシュメモリに書込むデータ、又はフラッシュメモリから読出すデータを保持する複数のバッファから前記フラッシュメモリへの書込み処理を停止し、更に、前記バッファが全てフルの状態であることを検知したときに、前記フラッシュメモリに書込むデータを前記バッファに取込む処理を停止すると共に、前記バッファから前記フラッシュメモリへの書込み処理を開始し、更に、前記バッファが全てエンプティの状態であることを検知したときに、前記バッファを使用してブロック間転送処理を実行すると共に、前記ブロック間転送処理で使用されない前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始する。【選択図】図６
2004326574.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリに書込むデータ、又はフラッシュメモリから読出すデータを保持する複数のバッファと、
前記バッファのフル又はエンプティの状態を検知する第１の検知機能と、
ブロック間転送処理の要求を検知する第２の検知機能とを備え、
前記第２の検知機能によりブロック間転送処理の要求を検知したときに、
前記バッファから前記フラッシュメモリへの書込み処理を停止し、
更に、前記第１の検知機能により、前記バッファが全てフルの状態であることを検知したときに、
前記フラッシュメモリに書込むデータを前記バッファに取込む処理を停止すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始し、
更に、前記第１の検知機能により、前記バッファが全てエンプティの状態であることを検知したときに、
前記バッファを使用してブロック間転送処理を実行すると共に、
前記ブロック間転送処理で使用されない前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始するように構成されていることを特徴とするメモリコントローラ。
【請求項２】
前記ブロック間転送処理の終了を検知する第３の検知機能とを備え、
前記第３の検知機能によりブロック間転送処理の終了を検知したときに、
前記ブロック間転送処理で使用されていた前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始するように構成されていることを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
フラッシュメモリに書込むデータ、又はフラッシュメモリから読出すデータを保持する複数のバッファと、
前記バッファのフル又はエンプティの状態を検知する第１の検知機能と、
ブロック間転送処理の要求を検知する第２の検知機能とを備え、
前記第２の検知機能によりブロック間転送処理の要求を検知したときに、
前記バッファから前記フラッシュメモリへの書込み処理を停止し、
更に、前記第１の検知機能により、前記バッファが全てフルの状態であることを検知したときに、
前記フラッシュメモリに書込むデータを前記バッファに取込む処理を停止すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始し、
更に、前記第１の検知機能により、前記バッファが全てエンプティの状態であることを検知したときに、
前記バッファを使用してブロック間転送処理を実行すると共に、
前記ブロック間転送処理で使用されない前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始するように構成されていることを特徴とするメモリコントローラを備えるフラッシュメモリシステム。
【請求項４】
前記ブロック間転送処理の終了を検知する第３の検知機能とを備え、
前記第３の検知機能によりブロック間転送処理の終了を検知したときに、
前記ブロック間転送処理で使用されていた前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始するように構成されていることを特徴とする請求項３記載のメモリコントローラを備えるフラッシュメモリシステム。
【請求項５】
ブロック間転送処理の要求を検知したときに、
フラッシュメモリに書込むデータ、又はフラッシュメモリから読出すデータを保持する複数のバッファから前記フラッシュメモリへの書込み処理を停止し、
更に、前記バッファが全てフルの状態であることを検知したときに、
前記フラッシュメモリに書込むデータを前記バッファに取込む処理を停止すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始し、
更に、前記バッファが全てエンプティの状態であることを検知したときに、
前記バッファを使用してブロック間転送処理を実行すると共に、
前記ブロック間転送処理で使用されない前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始することを特徴とするフラッシュメモリの制御方法。
【請求項６】
前記ブロック間転送処理の終了を検知したときに、
前記ブロック間転送処理で使用されていた前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始することを特徴とする請求項５記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【産業上の利用分野】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法に関する。
【従来の技術】
近年、メモリカードやシリコンディスクなどのフラッシュメモリシステムに用いられる半導体メモリとして、フラッシュメモリが用いられることが多い。このフラッシュメモリは不揮発性メモリの一種であり、電源が投入されているか否かに関わらず、データが保持されるていることが要求される。
ところで、上記のような装置に特に用いられることが多いＮＡＮＤ型フラッシュメモリは、メモリセルを消去状態（論理値＝１）から書込状態（論理値＝０）に変化させる場合には、メモリセル単位で行うことができるが、メモリセルを書込状態（０）から消去状態（１）に変化させる場合には、メモリセル単位で行うことができず、複数のメモリセルからなる所定の消去単位（ブロック）でしかこれを行うことができない。かかる一括消去動作は、一般的に「ブロック消去」と呼ばれている。
上記のような特性により、ＮＡＮＤ型フラッシュメモリ用いた装置では、デ―タを書き込む際に、ブロック消去された領域領域を検索し、検出された空き領域に対して新たなデータを書込んでいる。又、消去単位であるブロックは複数のページ（例えば、３２枚のページ）で構成されているため、１枚のページのデータだけを書き変える場合であっても、そのページが含まれるブロックの他のページの全データを、ブロック消去されている領域に再度書込まなければならない。従って、ＮＡＮＤ型フラッシュメモリ用いた装置では、データが書込まれているブロックのデータを、別のブロックに再度書込みするブロック間転送処理が頻繁に発生する。
【発明が解決しようとする課題】
上記ブロック間転送処理と、フラッシュメモリシステムが装着されるホストコンピュータからの指示によるデータの書込み処理は、別々に処理した方が処理の効率は良いが、途中で不意に電源が切断される場合等を考慮すれば、ホストコンピュータからの指示によるデータの書込み処理の途中にブロック間転送処理を割込ませなければならない場合がある。
そこで、本発明は、ブロック間転送処理やデータの書込み処理の効率の低下を抑えつつ、データの書込み処理の途中にブロック間転送処理を割込ませることができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
本発明にかかる目的は、フラッシュメモリに書込むデータ、又はフラッシュメモリから読出すデータを保持する複数のバッファと、
前記バッファのフル又はエンプティの状態を検知する第１の検知機能と、
ブロック間転送処理の要求を検知する第２の検知機能とを備え、
前記第２の検知機能によりブロック間転送処理の要求を検知したときに、
前記バッファから前記フラッシュメモリへの書込み処理を停止し、
更に、前記第１の検知機能により、前記バッファが全てフルの状態であることを検知したときに、
前記フラッシュメモリに書込むデータを前記バッファに取込む処理を停止すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始し、
更に、前記第１の検知機能により、前記バッファが全てエンプティの状態であることを検知したときに、
前記バッファを使用してブロック間転送処理を実行すると共に、
前記ブロック間転送処理で使用されない前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始するように構成されていることを特徴とするメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステムによって達成される。
更に、前記ブロック間転送処理の終了を検知する第３の検知機能とを備え、
前記第３の検知機能によりブロック間転送処理の終了を検知したときに、
前記ブロック間転送処理で使用されていた前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始するように構成されていることを特徴とすることにより、より良い効果（処理効率の低下抑制）を得ることができる。
本発明にかかる目的は、ブロック間転送処理の要求を検知したときに、
フラッシュメモリに書込むデータ、又はフラッシュメモリから読出すデータを保持する複数のバッファから前記フラッシュメモリへの書込み処理を停止し、
更に、前記バッファが全てフルの状態であることを検知したときに、
前記フラッシュメモリに書込むデータを前記バッファに取込む処理を停止すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始し、
更に、前記バッファが全てエンプティの状態であることを検知したときに、
前記バッファを使用してブロック間転送処理を実行すると共に、
前記ブロック間転送処理で使用されない前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始することを特徴とするフラッシュメモリの制御方法によって達成される。
更に、前記ブロック間転送処理の終了を検知したときに、
前記ブロック間転送処理で使用されていた前記バッファに、フラッシュメモリに書込むデータを取込む処理を開始すると共に、
前記バッファから前記フラッシュメモリへの書込み処理を開始することを特徴とすることにより、より良い効果（処理効率の低下抑制）を得ることができる。
【発明の実施の形態】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
［フラッシュメモリシステム１の説明］
図１は、本発明にかかるフラッシュメモリシステム１を概略的に示すブロック図であり、このフラッシュメモリシステム１は一般的にはＰＣカードやコンパクトフラッシュ（サンディスク社の登録標）等に収められている。又、同図に示したようにフラッシュメモリシステム１は、フラッシュメモリ２と、コントローラ３で構成されている。
尚、上記ＰＣカードはＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）の規格に準拠しており、上記コンパクトフラッシュはＣＦＡ（ＣｏｍｐａｃｔＦｌａｓｈ  Ａｓｓｏｃｉａｔｉｏｎ）の規格に準拠している。又、本発明はＳＳＦＤＣ  Ｆｏｒｕｍの「ＳｍａｒｔＭｅｄｉａ（（株）東芝の登録商標）
」、ＭｕｌｔｉＭｅｄｉａ  Ｃａｒｄ  Ａｓｓｏｃｉａｔｉｏｎの提唱する「ＭＭＣ（ＭｕｌｔｉＭｅｄｉａ  Ｃａｒｄ）」、ソニー株式会社が提唱する「メモリースティック（ソニー（株）の商標）」などに本発明を適用することも可能である。
又、フラッシュメモリシステム１が収められたＰＣカードやコンパクトフラッシュは、通常ホストコンピュータ４に着脱可能に装着されて使用され、ホストコンピュータ４に対に対して一種の外部記憶装置として用いられる。ホストコンピュータ４としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
図１に示したフラッシュメモリ２は、ページ単位で読出し又は書込みを、ブロック単位で消去を実行するデバイスであり、例えば、１ブロックは３２ページで構成され、１ページは５１２バイトのユーザ領域と１６バイトの冗長領域で構成され、ホストコンピュータ４側から見た場合１ページは５１２バイトで構成されている。
［コントローラ３の説明］
図１のコントローラ３は、ホストインターフェース制御ブロック５と、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、フラッシュシーケンサブロック１２とから構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積されている。以下に各ブロックの機能を説明する。
マイクロプロセッサ６は、コントローラ３を構成する各機能ブロック全体の動作を制御する機能ブロックである。
ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を制御する機能ブロックである。ここで、ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を設定する動作設定レジスタ（図示せず）を備えており、この動作設定レジスタに基づきホストインターフェースブロック７は動作する。
ホストインターフェースブロック７は、マイクロプロセッサ６による制御のもと、ホストコンピュータ４とデータ、アドレス情報、ステータス情報及び外部コマンド情報の授受を行なう機能ブロックである。
すなわち、フラッシュメモリシステム１がホストコンピュータ４に装着されると、フラッシュメモリシステム１とホストコンピュータ４とは、外部バス１３を介して相互に接続され、かかる状態において、ホストコンピュータ４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインタ―フェースブロック７を入口としてコントローラ３の内部に取り込まれ、フラッシュメモリシステム１からホストコンピュータ４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストコンピュータ４に供給される。
さらに、ホストインターフェースブロック７は、ホストコンピュータ４より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ（図示せず）及びエラーが発生した場合にセットされるエラーレジスタ（図示せず）等を有している。
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭセルによって構成される機能ブロックである。
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積する機能ブロックである。すなわち、フラッシュメモリ２から読み出された
データは、ホストコンピュータ４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
ここで、バッファ９はＦＩＦＯ（ファーストインファーストアウト）構造バッファを２個備えており（以下、一方のＦＩＦＯ構造バッファをＦＩＦＯ−Ａ、他方をＦＩＦＯ−Ｂと言う。）、これらのＦＩＦＯ構造バッファを交互に使用することにより、フラッシュメモリ２へのデータ書込み、又はフラッシュメモリ２からのデータ読出しに要する時間を短縮している。
例えば、フラッシュメモリ２へのデータ書込む場合、ホストコンピュータ４から送られてくるデータはホストインターフェースブロック７を介して、ＦＩＦＯ−ＡとＦＩＦＯ−Ｂに順次取込まれる。
ここでは、先にエンプティ（以下、ＦＩＦＯ構造バッファが空の状態をエンプティと言う。）になった方のＦＩＦＯ構造バッファに優先的にデータが取り込まれる。一方、ＦＩＦＯ−ＡとＦＩＦＯ−Ｂに取込まれたデータは、フラッシュメモリインターフェースブロック１０を介して、順次フラッシュメモリ２に送られる。ここでは、先にフル（以下、ＦＩＦＯ構造バッファに容量一杯までデータが取込まれている状態をフルと言う。）なった方のＦＩＦＯ構造バッファのデータが優先的にフラッシュメモリ２に送られる。
又、ＦＩＦＯ構造バッファがフルになるまでデータを取込んだときに、その状態を示すフラグレジスタ（図示せず）にフルフラグがセットされる。又、ＦＩＦＯ構造バッファに取込まれているデータを全て送出し、ＦＩＦＯ構造バッファがエンプティになったときに、フラグレジスタ（図示せず）にエンプティフラグがセットされる。
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報及び内部コマンド情報の授受を行う機能ブロックである。ここで、「内部コマンド」とは、コントローラ３からフラッシュメモリ２に与えられるコマンドであり、ホストコンピュータ４からフラッシュメモリシステム１に与えられるコマンドである「外部コマンド」と区別される。
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデ―タに付加すべきエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する機能ブロックである。
フラッシュシーケンサブロック１２は、内部コマンドに基づくフラッシュメモリ２の動作を制御する機能ブロックである。フラッシュシーケンサブロック１２は、複数のレジスタ（図示せず）を備え、この複数のレジスタに内部コマンドを実行する際に必要な情報が、マイクロプロセッサ６による制御のもとに設定される。この複数のレジスタに内部コマンドを実行する際に必要な情報が設定されると、フラッシュシーケンサブロック１２は、その情報に基づいて内部コマンドを実行する。
［メモリセルの説明］
次に、図２及び３参照して図１に示したフラッシュメモリ２を構成するメモリセル１６の具体的な構造について説明する。
図２は、フラッシュメモリ２を構成するメモリセル１６の構造を概略的に示す断面図である。同図に示したように、メモリセル１６は、Ｐ型半導体基板１７に形成されたＮ型のソース拡散領域１８及びドレイン拡散領域１９と、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７を覆って形成されたトンネル酸化膜２０と、トンネル酸化膜２０上に形成されたフローティングゲ―ト電極２１と、フローティングゲート電極２１上に形成された絶縁膜２２と、絶縁膜２２上に形成されたコントロールゲ―ト電極２３とから構成される。このような構成を有するメモリセル１６が、メモリセルアレイ７内で複数個直列に接続されている。
メモリセル１６は、フローティングゲート電極２１に電子が注入されているか否かによって、「消去状態（電子が蓄積されていない状態）」と「書込状態（電子が蓄積されている状態）」のいずれかの状態が示される。ここで、１つのメモリセル１６は１ビットのデータに対応し、メモリセル１６の「消去状態」が論理値の「１」のデータに対応し、メモリセル１６の「書込状態」が論理値の「０」のデータに対応する。
「消去状態」においては、フローティングゲート電極２１に電子が蓄積されていないため、コントロールゲート電極２３に読み出し電圧が印加されていないときには、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７の表面にチャネルが形成されず、ソース拡散領域１８とドレイン拡散領域１９は電気的に絶縁される。一方、コントロールゲート電極２３に読み出し電圧が印加されると、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７の表面にチャネル（図示せず）が形成され、ソース拡散領域１８とドレイン拡散領域１９は、このチャネルによって電気的に接続される。
すなわち、「消去状態」においてはコントロールゲート電極２３に読み出し電圧が印加されていない状態では、ソース拡散領域１８とドレイン拡散領域１９とは電気的に絶縁され、コントロールゲート電極２３に読み出し電圧が印加された状態では、ソース拡散領域１８とドレイン拡散領域１９とは電気的に接続される。
図３は、「書込状態」であるメモリセル１６を概略的に示す断面図である。同図に示したように、「書込状態」とは、フローティングゲート電極２１に電子が蓄積されている状態を指す。フローティングゲート電極２１はトンネル酸化膜２０及び絶縁膜２２に挟まれているため、一旦、フローティングゲート電極２１に注入された電子は、きわめて長時間フローティングゲート電極２１内にとどまる。この「書込状態」においては、フローティングゲート電極２１に電子が蓄積されているので、コントロールゲート電極２３に読み出し電圧が印加されているか否かに関わらず、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７の表面にはチャネル２４が形成される。したがって、「書込状態」においてはソース拡散領域１８とドレイン拡散領域１９とは、コントロ―ルゲート電極２３に読み出し電圧が印加されているか否かに関わらず、チャネル２４によって常に電気的に接続状態となる。
又、上記メモリセル１６が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。メモリセル１６はメモリセルアレイ７内で複数個直列に接続されている。この直列体の中で選択するメモリセル１６に低レベル電圧を印加し、それ以外のメモリセル１６のコントロールゲート電極２３に高レベル電圧が印加する。この状態でメモリセル１６の直列体が導通状態であるか否かの検出が行われる。その結果、この直列体が導通状態でれば、選択されたメモリセル１６は書込状態であると判断され、絶縁状態であれば、選択されたフラッシュメモリセル１６は消去状態であると判断される。このようにして、直列体に含まれる任意のメモリセル１６に保持されたデータが「０」であるのか「１」であるのかを読み出すことができる。
又、消去状態であるメモリセル１６を書込状態に変化させる場合は、コントロールゲート電極２３が高電位側となる高電圧が印加し、トンネル酸化膜２０を介してフローティングゲート電極２１へ電子を注入する。この際、ＦＮ（ファウラ―ノルトハイム）トンネル電流が流れフロ―ティングゲート電極２１に電子が注入される。一方、書込状態であるフラッシュメモリセル１６を消去状態に変化させる場合は、コントロールゲート電極２３が低電位側となる高電圧が印加し、トンネル酸化膜２０を介してフローティングゲート電極２１に蓄積された電子を排出する。
［フラッシュメモリのメモリ構造の説明］
次に、フラッシュメモリ２のメモリ構造を説明する。図４は、フラッシュメモリ２のメモリ構造を概略的に示す図である。図４に示したように、フラッシュメモリ２はデータの読み出し及び書き込みにおけるアクセス単位である「ページ」と、データの消去単位である「ブロック」で構成されている。
上記「ページ」は５１２バイトのユーザ領域２５と１６バイトの冗長領域２６によって構成される。ユーザ領域２５は、ホストコンピュータ４より供給されるユーザデ―タが格納される領域であり、冗長領域２６は、ＥＣＣブロック１１によって生成されたエラーコレクションコード等の付加情報が格納される領域である。エラ―コレクションコードは、対応するユーザ領域２５に格納されたデータに含まれる誤りを訂正するための付加情報であり、ユーザ領域２５に格納されたデータに含まれる誤りが所定数以下であれば、これを訂正し、正しいデータとするために用いられる。
上記冗長領域２６には、エラーコレクションコードの他に、「消去フラグ」と「対応論理ブロックアドレス」が格納されている。「消去フラグ」は、そのブロックが消去済みブロックであるか否かを示すフラグであり、「対応論理ブロックアドレス」は、そのブロックにデータが格納されている場合に、そのブロックがどの論理ブロックアドレスに対応するかを示している。尚、「消去フラグ」を設けずに、「対応論理ブロックアドレス」が格納されているか否かで、そのブロックが消去済みブロックであるか否かを判断（「対応論理ブロックアドレス」が格納されていない場合は消去済みブロックであると判断する。）する場合もある。又、上記「ブロック」は３２枚の「ページ」で構成されている。ここでフラッシュメモリはデータの上書きができないため、１枚の「ページ」のデータだけを書き変える場合であっても、その「ページ」が含まれる「ブロック」の３２枚の「ページ」の全データを、全ての「ページ」のデータが消去されている「ブロック」に再度書込まなければならない。
ここで、特定の「ページ」をアクセスする場合、ホストアドレスのうち、下位５ビット（「ブロック」が３２枚の「ページ」で構成されている場合）をページアドレス、残りの上位ビットをブロックアドレスとすれば、ブロックアドレスは「ブロック」を特定するために用いられ、ページアドレスは特定された「ブロック」に含まれる「ページ」（ページ０〜ページ３１）を特定するために用いられる。
［論理ブロックアドレスと物理ブロックアドレスの説明］
上述のとおり、フラッシュメモリはデータの上書きができないため、既にデータの書き込まれた「ページ」に対し、これと異なる新しいデータを書き込むためには、一旦、既に書き込まれているデータを消去した後に新しいデータを書き込むという処理が必要となる。この際、消去はブロック単位で処理されるため、新しいデータを書き込む「ページ」のデータを消去しようとすると、その「ページ」が含まれる「ブロック」の全ての「ページ」のデータが消去されてしまう。したがって、ある「ページ」に既に書き込まれているデータを書替える場合、書替える「ページ」が含まれる「ブロック」の他の全ページのデータについても、書替える「ページ」のデータを書込む他の消去済ブロックに移動させるという処理が必要となる。
上記のようにデータを書替える場合、書替えの後のデータは書替え前の「ブロック」と異なる「ブロック」に書込まれるため、ホストアドレスに基づくブロックアドレス（以下、ホストアドレスに基づくブロックアドレスを論理ブロックアドレスと言う。）と、この論理ブロックアドレスに対応するフラッシュメモリ２内でのブロックアドレス（以下、フラッシュメモリ２内でのブロックアドレスを物理ブロックアドレスと言う。）との対応関係は、データを書替える毎に動的に変化する。このため、論理ブロックアドレスと物理ブロックアドレスの対応関係が書込まれたアドレス変換テーブルが必要となる。
上記「アドレス変換テーブル」は、「論理ブロックアドレス」と「物理ブロックアドレス」の対応関係を示したテーブルであり、図１に示したワークエリア８に格納されている。そして、この「アドレス変換テーブル」は、上述のような理由により、フラッシュメモリ２に書込まれているデータが書替えられる毎に、その書替えに関わった部分の対応関係が更新される。
［書き込みキューの説明］
図５は、図１に示したワークエリア８に格納されている書き込みキュー２８のデータ構造を示す概略図である。
図５に示したように、書き込みキュー２８は、キュー０〜キュー７からなる８つのキューによって構成されており、各キューには物理ブロックアドレスが格納されている。ここで、各キューには、それぞれ消去済みブロックの物理ブロックアドレスが格納される。したがって、書き込みキュー２８は、最大８つの消去済みブロックの物理ブロックアドレスを保持することができる。この書き込みキュー２８は、図４に示した冗長領域２６に格納されている「消去フラグ」又は「対応論理ブロックアドレス」を参照して消去済みブロック検出し、検出したブロックの物理ブロックアドレスをキュー０〜キュー７に格納する。
［初期設定動作］
図１に示したフラッシュメモリシステム１の初期設定動作について説明する。この初期設定動作は、フラッシュメモリシステム１がホストコンピュータ４に装着された時や、ホストコンピュータ４によりリセットが指示された際に実行される。
この初期設定動作では、マイクロプロセッサ６による制御のもと、アドレス変換テーブルや図５に示した書き込みキュー２８の作成が開始され、その作成が完了すると初期設定動作は終了する。
尚、フラッシュメモリシステム１の初期設定動作が行われている間は、コントローラ３はビジー状態となり、ホストコンピュータ４からのデータの読み出しや書き込みの指示は拒否される。かかるビジー状態は、フラッシュメモリシステム１の初期設定動作が終了すると解除される。
［本発明に係る処理の説明］
以下、本発明に係る処理のフローチャートを示す図６を参照しながら、その処理について説明する。
下記の処理では、ホストコンピュータ４からのデータの書込み指示に従って、複数のページにデータの書込む処理の途中に、ブロック間転送の処理を割り込ませる場合の処理の流れについて説明する。ここで、ブロック間転送とは、特定のブロックのページに書込まれているデータを、他の消去済みブロックの対応するページに複写する処理である。この処理では、特定のブロックのページに書込まれているデータを、一旦ＦＩＦＯ構造バッファ（ＦＩＦＯ−Ａ又はＦＩＦＯ−Ｂ）に読出し、読み出したデータを、他の消去済みブロックの対応するページに書込んでいる。
尚、図６に示すフローチャートの開始時点では、ホストインターフェース制御ブロック５が備える動作設定レジスタには、ＦＩＦＯ−ＡとＦＩＦＯ−Ｂに順次（先にエンプティになったＦＩＦＯ構造バッファが優先される。以下、この順番をＦＯ順と言う。）データを取込む動作モード（以下、ＦＩＦＯ−ＡとＦＩＦＯ−ＢにＦＯ順でデータを取込む動作モードを２バッファモードと言う。）が設定されている。一方、マイクロプロセッサ６による制御のもと、フラッシュシーケンサブロック１２が有するレジスタ（図示せず）に対して後述する書込み用シーケンサが順次設定され、この設定に基づきＦＩＦＯ−ＡとＦＩＦＯ−Ｂに取込まれているデータが順次（先にフルになったＦＩＦＯ構造バッファが優先される。以下、この順番をＦＩ順と言う。）フラッシュメモリ２に書込まれている。
ステップ１：
現在実行している処理（フラッシュメモリ２に対するデータ書込み処理）の終了後に、フラッシュシーケンサブロック１２が有するレジスタ（図示せず）に対して、新たな設定を行なわない。従って、現在実行している処理の終了後に新たな内部コマンドは実行されない。
ステップ２：
現在実行している処理の終了後に、ＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂがフルになるのを待ち、つまりフルフラグが設定されるのを待ち、フルフラグが設定された後にステップ３に進む。ここで、ホストインターフェースブロック７は２バッファモードで動作しているので、ホストコンピュータ４から送られてくるデータは、ＦＯ順でＦＩＦＯ−ＡとＦＩＦＯ−Ｂに取込まれる。従って、現在実行している処理の終了後に、ＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂがフルになり、バッファ９のフラグレジスタ（図示せず）にフルフラグがセットされる。
ステップ３：
ホストインターフェース制御ブロック５が備える動作設定レジスタに、ＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂにデータを取込む処理を停止する動作モード（以下、ＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂにデータを取込む処理を停止する動作モードを停止モードと言う。）が設定される。
ステップ４：
マイクロプロセッサ６による制御のもと、フラッシュシーケンサブロック１２が有するレジスタ（図示せず）に対して以下のような書込み用シーケンサが設定される。
１）内部コマンドとして内部書込みコマンドがフラッシュシーケンサブロック１２内の所定のレジスタ（図示せず）に設定される。
２）書込み先のページに対応する物理アドレスと、書込むページ数がフラッシュシ―ケンサブロック１２内の所定のレジスタ（図示せず）に設定される。ここで、書込み先のページに対応する物理アドレスは、図５に示した書き込みキュー２８から読み出した消去済みブロックの物理ブロックアドレスに、論理アドレスのページアドレス部分を付加して生成する。又、フラッシュメモリ２に書込むデータは、ＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂに既に取込まれているデータなので、ページ数は２が設定される。
次に、フラッシュシーケンサブロック１２が、上記書込み用シーケンサの設定に基づいて内部コマンドを実行する。この内部コマンドを実行すると、フラッシュメモリインターフェースブロック１０から、内部バス１４を介してフラッシュメモリ２に内部コマンドを実行するための情報が供給される。その結果、ＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂに取込まれていたデータがＦＩ順でフラッシュメモリ２に書込まれる。尚、書込み先の物理アドレスは、書込むページ数に応じて、自動的にインクリメント（ページ分の加算処理）されるので、先に書込まれるデータの書込み先物理アドレスをＡ０とすれば、後から書込まれるデータの書込み先物理アドレスはＡ０＋１になる。ページ数が３以上の場合も同様に処理される。
ステップ５：
ＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂがエンプティになるのを待ち、つまりエンプティフラグが設定されるのを待ち、エンプティフラグが設定された後にステップ６に進む。ここで、ホストインターフェースブロック７は停止モードになっているので、ＦＩＦＯ−ＡとＦＩＦＯ−Ｂに新たなデータは取込まれない。従って、現在実行している処理の終了後に、ＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂはエンプティになり、バッファ９のフラグレジスタ（図示せず）にエンプティフラグがセットされる。尚、ステップ４で、処理が完了したときにＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂがエンプティになるように書込み用シーケンサを設定して、処理の終了後にステップ６に進んでもよい。ここで、データ書込み処理が終了するとフラッシュシーケンサブロック１２が有するレジスタ（図示せず）に、処理が終了したことを示すフラグが設定される。従って、このフラグによりデータ書込み処理が終了したことを検知することができる。
ステップ６：
フラッシュシーケンサブロック１２が有するレジスタ（図示せず）に対して、新たな書込み用シーケンサの設定を行なわない。従って、ステップ４の書込み処理終了後は、新たな内部書込みコマンドは実行されない。
ステップ７：
マイクロプロセッサ６による制御のもと、フラッシュシーケンサブロック１２が有するレジスタ（図示せず）に対して以下のような転送用シーケンサが設定される。
１）内部コマンドとして内部転送コマンドがフラッシュシーケンサブロック１２内の所定のレジスタ（図示せず）に設定される。
２）転送元及び転送先の物理アドレスと、転送するページ数がフラッシュシ―ケンサブロック１２内の所定のレジスタ（図示せず）に設定される。ここで、転送先の物理アドレスは、図５に示した書き込みキュー２８から読み出した消去済みブロックの物理ブロックアドレスに、転送元の物理アドレスのページアドレス部分を付加して生成する。又、ブロック間転送に使用するＦＩＦＯ構造バッファとしてＦＩＦＯ−Ｂを選択する。ここで、ブロック間転送に使用するＦＩＦＯ構造バッファは特に限定されない。
次に、フラッシュシーケンサブロック１２が、上記書込み用シーケンサの設定に基づいて内部コマンドを実行する。この内部コマンドを実行すると、フラッシュメモリインターフェースブロック１０から、内部バス１４を介してフラッシュメモリ２に内部コマンドを実行するための情報が供給される。その結果、転送元のページに書込まれているデータがＦＩＦＯ−Ｂに取込まれ、続いてＦＩＦＯ−Ｂに取込まれたデータが転送先のページに書込まれる。
尚、転送元及び転送先の物理アドレスは、転送するページ数に応じて、自動的にインクリメント（ページ分の加算処理）されるので、最初に転送される転送元の物理アドレスをＡ１、転送先の物理アドレスをＡ２とすれば、２番目に転送される転送元の物理アドレスはＡ１＋１、転送先の物理アドレスはＡ２＋１になる。ページ数が３以上の場合も同様に処理される。
ステップ８：
ステップ７のブロック間転送処理を開始した後に、ホストインターフェース制御ブロック５が備える動作設定レジスタに、ＦＩＦＯ−Ａだけにデータを取込む動作モード（以下、ＦＩＦＯ−Ａだけにデータを取込む動作モードを１バッファモードと言う。）が設定される。その結果、ホストインターフェースブロック７の動作モードは停止モードから１バッファモードに切替わり、ホストコンピュータ４から送られてくるデータは、ＦＩＦＯ−Ａに取込まれるようになる。尚、この１バッファモードへの切替えはステップ７のブロック間転送処理を開始する前に行なってもよい。
ステップ９：
ステップ７の転送処理が終了するのを待ち、転送処理の終了後に、ステップ１０に進む。ここで、転送処理が終了するとフラッシュシーケンサブロック１２が有するレジスタ（図示せず）に、処理が終了したことを示すフラグが設定される。従って、このフラグにより転送処理が終了したことを検知することができる。
ステップ１０：
ホストインターフェース制御ブロック５が備える動作設定レジスタに、２バッファモードが設定される。その結果、ホストインターフェースブロック７の動作モードは１バッファモードから２バッファモードに切替わり、ホストコンピュータ４から送られてくるデータは、ＦＩＦＯ−ＡとＦＩＦＯ−ＢにＦＯ順で取込まれるようになる。
ステップ１１：
マイクロプロセッサ６による制御のもと、フラッシュシーケンサブロック１２が有するレジスタ（図示せず）に対して以下のような書込み用シーケンサが設定される。
１）内部コマンドとして内部書込みコマンドがフラッシュシーケンサブロック１２内の所定のレジスタ（図示せず）に設定される。
２）書込み先のページに対応する物理アドレスと、書込むページ数がフラッシュシ―ケンサブロック１２内の所定のレジスタ（図示せず）に設定される。ここで、書込み先のページに対応する物理アドレスは、図５に示した書き込みキュー２８から読み出した消去済みブロックの物理ブロックアドレスに、論理アドレスのページアドレス部分を付加して生成する。
次に、フラッシュシーケンサブロック１２が、上記書込み用シーケンサの設定に基づいて内部コマンドを実行する。この内部コマンドを実行すると、フラッシュメモリインターフェースブロック１０から、内部バス１４を介してフラッシュメモリ２に内部コマンドを実行するための情報が供給される。その結果、ＦＩＦＯ−Ａ及びＦＩＦＯ−Ｂに取込まれたデータが、書込むページ数に応じてＦＩ順でフラッシュメモリ２に書込まれる。尚、書込み先の物理アドレスは、上述のように書込むページ数に応じて、自動的にインクリメント（ページ分の加算処理）される。
尚、以上の説明では、バッファ９がＦＩＦＯ構造バッファを２個備えている場合について述べたが、３以上のバッファを備えている場合でも同様に実施するすることができる。例えば、ｎ個のＦＩＦＯ構造バッファを備えている場合は、ステップ７のときにホストインターフェースブロック７は、ｎ−１個のＦＩＦＯ構造バッファにデータを取込む動作モードになり、つまり、ブロック間転送処理に使用しないＦＩＦＯ構造バッファにだけデータを取込む動作モードになり、ブロック間転送処理を行なわないとき（上記で２バッファモードのとき）は、ｎ個のＦＩＦＯ構造バッファにデータを取込む動作モードになる。又、ｎ個のＦＩＦＯ構造バッファを備えている場合であっても、ＦＯ順でＦＩＦＯ構造バッファにデータが取込まれ、ＦＩ順でＦＩＦＯ構造バッファのデータが送出される。
【発明の効果】
以上説明したように、本発明によれば、ブロック間転送処理やデータの書込み処理の効率の低下を抑えつつ、データの書込み処理の途中にブロック間転送処理を割込ませることができる。
【図面の簡単な説明】
【図１】図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【図２】図２は、フラッシュメモリ２を構成するメモリセル１６の構造を概略的に示す断面図である。
【図３】図３は、書込状態であるメモリセル１６を概略的に示す断面図である。
【図４】図４は、フラッシュメモリ２のアドレス空間の構造を概略的に示す図である。
【図５】図５は、ワークエリア８に格納される書き込みキュー２８のデータ構造を示す概略図である。
【図６】図６は、本発明に係るフラッシュメモリシステム１の動作を示すフロ―チャートである。
【符号の説明】
１  フラッシュメモリシステム
２  フラッシュメモリ
３  コントローラ
４  ホストコンピュータ
５  ホストインターフェース制御ブロック
６  マイクロプロセッサ
７  ホストインターフェースブロック
８  ワークエリア
９  バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  フラッシュシーケンサブロック
１３  外部バス
１４  内部バス
１６  メモリセル
１７  Ｐ型半導体基板
１８  ソース拡散領域
１９  ドレイン拡散領域
２０  トンネル酸化膜
２１  フローティングゲート電極
２２  絶縁膜
２３  コントロールゲート電極
２４  チャネル
２５  ユーザ領域
２６  冗長領域
２８  書き込みキュー
【図１】
2004326574.tif 000003
【図２】
2004326574.tif 000004
【図３】
2004326574.tif 000005
【図４】
2004326574.tif 000006
【図５】
2004326574.tif 000007
【図６】
2004326574.tif 000008