(57)【要約】【課題】フラッシュメモリの１ページの容量が増加しても、処理時間とバッファの容量を増加させることなく、バッファを介した記憶データの移動処理を行うこと。【解決手段】同じ物理ゾーンに属する物理ブロック間で記憶データを移動させるときに、物理ゾーンに構成する第１の物理ブロックを含む第１のフラッシュメモリ内のデータレジスタからデータを読み出し、読み出されたデータをデータ蓄積手段に蓄積し、蓄積したデータを、第１の物理ブロックと同一の物理ゾーンに属する第２物理ブロックを含む第２のフラッシュメモリ内のデータレジスタに転送する。この処理で、第１のフラッシュメモリ内のデータレジスタからのデータの読み出しと、第２のフラッシュメモリ内のデータレジスタへのデータの転送を、交互に又は並行して行うことにより、データ蓄積手段に１ページ分のデータを蓄積せずに、第１の物理ブロックから第１の物理ブロックと異なるフラッシュメモリ内の物理ブロックである第２の物理ブロックにデータを移動させる。【選択図】図８
2008112335.tif 000002
【特許請求の範囲】
【請求項１】
複数個のフラッシュメモリ内の物理ブロックで構成された物理ゾーンに対するアクセスを制御するメモリコントローラであって、
前記物理ゾーンに属する第１の物理ブロックを含む第１のフラッシュメモリ内のデータレジスタからデータを読み出す読出し手段と、
前記読出し手段によって読み出されたデータを蓄積する蓄積手段と、
前記蓄積手段に蓄積されたデータを、前記第１の物理ブロックと同一の前記物理ゾーンに属する第２物理ブロックを含む第２のフラッシュメモリ内のデータレジスタに転送する転送手段と、
前記第１の物理ブロックと前記第２の物理ブロックが異なるフラッシュメモリに含まれるように前記第２の物理ブロックを選択する選択手段とを備え
前記読出し手段による読み出しと前記転送手段による転送を、交互に又は並行して行うことにより、前記蓄積手段に１ページ分のデータを蓄積せずに前記第１の物理ブロックから前記第２の物理ブロックにデータを移動させることを特徴とするメモリコントローラ。
【請求項２】
前記選択手段が、前記物理ゾーンに属する空きブロックをフラッシュメモリ毎に検索することのできる空きブロック検索手段を備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
請求項１から２のいずれか１項に記載のメモリコントローラと複数個のフラッシュメモリを備えることを特徴とするフラッシュメモリシステム。
【請求項４】
複数個のフラッシュメモリ内の物理ブロックで構成された物理ゾーンに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記物理ゾーンに属する第１の物理ブロックを含む第１のフラッシュメモリ内のデータレジスタからデータを読み出す読出しステップと、
前記読出しステップで読み出されたデータを蓄積する蓄積ステップと、
前記蓄積ステップで蓄積されたデータを、前記第１の物理ブロックと同一の前記物理ゾーンに属する第２物理ブロックを含む第２のフラッシュメモリ内のデータレジスタに転送する転送ステップとを有し、
前記読出しステップによる読み出しと前記転送ステップによる転送を、交互に又は並行して行うことにより、前記蓄積ステップで１ページ分のデータを蓄積せずに前記第１の物理ブロックから該第１の物理ブロックと異なるフラッシュメモリ内の前記第２の物理ブロックにデータを移動させることを特徴とするフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリカードやシリコンディスク等といったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。フラッシュメモリに記憶されたデータは、電力が供給されていないときでも保持されていることが要求される。
【０００３】
ＮＡＮＤ型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリの一種である。ＮＡＮＤ型フラッシュメモリは、データレジスタとメモリセルアレイとで構成され、データレジスタとメモリセルアレイとの間では、ページ単位でデータの書き込み又は読み出しが行われる。メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成され、一方のゲートはコントロールゲート、他方のゲートはフローティングゲートとそれぞれ呼ばれている。このフローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。また、メモリセルを消去状態に対応する論理値「１」から書込状態に対応する論理値「０」に変更させる場合は、メモリセル単位で変更させることができるが、書き込み状態から消去状態に変更させる場合は、ブロック（例えば、６４ページのデータ領域）単位でしか変更させることができない。以下、ＮＡＮＤ型フラッシュメモリにおける消去処理の単位であるブロックを物理ブロックと言う。
【０００４】
したがって、物理ブロック内の複数のページに記憶されているデータの一部を書き換える場合には、データが書き込まれていない空きブロック（総てのメモリセルが消去状態にある消去済ブロック）を１つ選択し、この空きブロックに書き換え後のデータを書き込むと共に、書き換え前のデータと同一ブロックに記憶されている書き換え対象でないデータをこの空きブロックにコピーしなければならない。このデータ移動処理は、フラッシュメモリからデータを読み出してメモリコントローラ内のバッファに蓄積し、コントローラ内のバッファに蓄積したデータをフラッシュメモリに書き込む処理（以下、データ転送処理という）または、フラッシュメモリ内でのデータのコピーであるコピーバック処理（メモリセルアレイからデータレジスタに読み出したデータを別のメモリセルアレイに書き込む処理）によって行われる。
【０００５】
また、ＮＡＮＤ型フラッシュメモリは、オーバプログラム又はディスターブ現象により、記憶されているデータに誤りが生じる場合がある。このため、特許文献１では、ユーザ領域に記憶されているデータに対応する誤り訂正符号を同一ページの冗長領域に記憶させておき、データの読み出しの際に、該データに対応する誤り訂正符号に基づき、読み出したデータに含まれる誤りを検出、訂正すると共に、誤りが訂正されたデータを空きブロックに書き込んでいる。つまり、この訂正処理では、読み出したデータをメモリコントローラ内のバッファに蓄積し、誤りを訂正した後、空きブロックに転送している。
【０００６】
[データ転送処理の説明]
図９は、データ転送処理の概要を示す図である。データ転送処理は、メモリコントローラ内のバッファを介したデータ移動処理であり、以下のステップを繰り返すことで行われる。
（Ｓ９１）メモリコントローラから与えられた情報に基づいて、転送元のページのメモリセルが選択され、選択されたメモリセルからデータレジスタにデータが複写される。
（Ｓ９２）データレジスタから１ページ分のデータが順次読み出され、コントローラ内のバッファに蓄積される。
（Ｓ９３）コントローラ内のバッファに蓄積された１ページ分のデータが、データレジスタに転送される。
（Ｓ９４）Ｓ９３の転送の際にメモリコントローラから与えられた情報に基づいて、転送先のページのメモリセルが選択され、選択されたメモリセルにデータレジスタのデータが複写される。このようにして、１ページ単位でデータ転送を行っている。
【０００７】
一方、１ページが複数セクタ（１セクタは５１２バイト）の領域で構成されている場合、１ページ単位ではないデータ転送の方法も知られている。この方法では、例えば１ページ分のデータをメモリセルからデータレジスタに複写し、このデータレジスタに保持されているデータを１セクタ単位で読み出しメモリコントローラ内のバッファに蓄積する。バッファに蓄積された１セクタのデータをデータレジスタに転送し、データレジスタからメモリセルに複写する。この処理を、１ページに含まれるセクタ数分繰り返すことにより、１ページ分のデータ転送処理が終了する。この場合、バッファに蓄積されるデータは１セクタ単位であるため、バッファの容量が少なく済むという利点を有している。しかしながら、このデータ転送の方法では、読み出しと書き込みのときに同一のデータレジスタがアクセスされ、データレジスタにデータを転送するときには、データレジスタに保持されていたデータはクリアされるため、読み出しのときに毎回メモリセルからデータレジスタへの複写を行わなければならない。従って、このデータ転送の方法では、フラッシュメモリ内のメモリセルとデータレジスタとの複写処理の回数が増加し、データ転送処理の処理時間が長くなってしまう。
【０００８】
【特許文献１】特開２００４−２７２４７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
フラッシュメモリに記憶されているデータの移動は、データ転送処理とコピーバック処理のいずれの処理方法でも行うことができるが、コピーバック処理では、移動の際にデータに含まれる誤りを訂正することができない。従って、移動の際にデータに含まれる誤りを訂正するときには、コピーバック処理より処理時間の長いデータ転送処理を行わなければならない。
【００１０】
又、フラッシュメモリの容量が増加するに従い、１ページの容量が増加している。例えば小ブロック構成では、１ページが５１２（ユーザ領域）＋１６（冗長領域）バイトであったのが、大ブロック構成では、１ページが２０４８（ユーザ領域）＋６４（冗長領域）バイトと４倍に増加した。さらに、１ページが４０９６（ユーザ領域）＋１２８バイト（冗長領域）であるフラッシュメモリの出荷が予告されている。従って、１ページ分のデータをメモリコントローラ内のバッファに蓄積するデータ転送処理を行うためには、バッファの容量を増加させなければならない。一方、１セクタ単位の転送を繰返すデータ転送処理では処理時間が長くなってしまう。
【００１１】
したがって、本発明は、データ転送処理の処理時間とバッファの容量を増加させることなく、データ転送処理を行うことが可能なメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明によるメモリコントローラは、複数個のフラッシュメモリ内の物理ブロックで構成された物理ゾーンに対するアクセスを制御するメモリコントローラであって、前記物理ゾーンに属する第１の物理ブロックを含む第１のフラッシュメモリ内のデータレジスタからデータを読み出す読出し手段と、前記読出し手段によって読み出されたデータを蓄積する蓄積手段と、前記蓄積手段に蓄積されたデータを、前記第１の物理ブロックと同一の前記物理ゾーンに属する第２物理ブロックを含む第２のフラッシュメモリ内のデータレジスタに転送する転送手段と、前記第１の物理ブロックと前記第２の物理ブロックが異なるフラッシュメモリに含まれるように前記第２の物理ブロックを選択する選択手段とを備え、前記読出し手段による読み出しと前記転送手段による転送を、交互に又は並行して行うことにより、前記蓄積手段に１ページ分のデータを蓄積せずに前記第１の物理ブロックから前記第２の物理ブロックにデータを移動させることを特徴とする。
【００１３】
又、前記選択手段は、前記物理ゾーンに属する空きブロックをフラッシュメモリ毎に検索することのできる空きブロック検索手段を備えていることが好ましい。
【００１４】
上記目的を達成するために、本発明によるフラッシュメモリシステムは、前記メモリコントローラのいずれか１つと複数チップのフラッシュメモリを備えている。
【００１５】
上記目的を達成するために、本発明によるフラッシュメモリの制御方法は、複数個のフラッシュメモリ内の物理ブロックで構成された物理ゾーンに対するアクセスを制御するフラッシュメモリの制御方法であって、前記物理ゾーンに属する第１の物理ブロックを含む第１のフラッシュメモリ内のデータレジスタからデータを読み出す読出しステップと、前記読出しステップで読み出されたデータを蓄積する蓄積ステップと、前記蓄積ステップで蓄積されたデータを、前記第１の物理ブロックと同一の前記物理ゾーンに属する第２物理ブロックを含む第２のフラッシュメモリ内のデータレジスタに転送する転送ステップとを有し、前記読出しステップによる読み出しと前記転送ステップによる転送を、交互に又は並行して行うことにより、前記蓄積ステップで１ページ分のデータを蓄積せずに前記第１の物理ブロックから該第１の物理ブロックと異なるフラッシュメモリ内の前記第２の物理ブロックにデータを移動させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、複数個（複数チップ）のフラッシュメモリ内の物理ブロックでゾーンを構成し、このゾーンに含まれる物理ブロック間で記憶データを移動させるときに、移動元の物理ブロックと移動先の物理ブロックが異なるフラッシュメモリ（異なるチップのフラッシュメモリ）になるようにしたので、メモリコントローラ内に１ページ分の記憶データを蓄積できるようなバッファを設けずに、かつデータレジスタとメモリセルとの間での複写の回数を増加させずに、メモリコントローラ内のバッファを介した記憶データの移動を行うことができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面に基づき、本発明の実施形態について詳細に説明する。
【００１８】
[フラッシュメモリシステム１の説明]
図１は、フラッシュメモリシステム１を概略的に示すブロック図である。図１に示したようにフラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。
【００１９】
なお、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００２０】
[フラッシュメモリ２の説明]
図２は、ＮＡＮＤ型フラッシュメモリのブロック（以下、フラッシュメモリ内のブロックを物理ブロックと言う。）とページの関係を示す説明図である。物理ブロックとページの構成は、フラッシュメモリの仕様によって異なるが、一般的なフラッシュメモリとしては、小ブロック構成のフラッシュメモリと、大ブロック構成のフラッシュメモリとがある。小ブロック構成では、図２（ａ）に示したように、１ブロックが３２ページ（Ｐ０〜Ｐ３１）で構成され、各ページが５１２バイトのユーザ領域と１６バイトの冗長領域で構成されている。また、大ブロック構成では、図２（ｂ）に示したように、１ブロックが６４ページ（Ｐ０〜Ｐ６３）で構成され、各ページが２０４８バイトのユーザ領域と６４バイトの冗長領域で構成されている。尚、本実施形態のでは、フラッシュメモリ２が大ブロック構成であるものとして説明する。
【００２１】
大ブロック構成の場合、各ページのユーザ領域には４セクタ（１セクタは、５１２バイト）分のデータが記憶されるため、１セクタ分の領域をサブページとすれば、各ページは４個のサブページで構成され、各物理ブロックは２５６個のサブページで構成されている。一方、小ブロック構成の場合、各ページのユーザ領域には１セクタ分のデータが記憶されるため、サブページはページと同じになり、各物理ブロックは３２個のサブページで構成されている。
【００２２】
ここで、ユーザ領域は、主に、ホストシステム４から供給されるデータが記憶される領域であり、冗長領域は、誤り訂正符号、論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。誤り訂正符号は、ユーザ領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、後述するＥＣＣブロック１１によって生成される。
【００２３】
論理アドレス情報は、物理ブロックにデータが記憶されている場合に書き込まれ、その物理ブロックに記憶されているデータの論理アドレスに関する情報を示している。なお、物理ブロックにデータが記憶されていない場合は、論理アドレス情報が書き込まれないので、論理アドレス情報が書き込まれているか否かで、そのブロックが空きブロック（消去済ブロック）であるか否かを判断することができる。つまり、論理アドレス情報が書き込まれていない場合は、空きブロック（消去済ブロック）であると判断される。
【００２４】
ブロックステータスは、その物理ブロックが不良ブロック（正常にデータの書き込み等を行うことができない物理ブロック）であるか否かを示すフラグであり、その物理ブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
【００２５】
[コントローラ３の説明]
コントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣブロック１１と、ＲＯＭ（Read Only Memory）１２と、から構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００２６】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、コントローラ３の全体の動作を制御する。
【００２７】
ホストインターフェースブロック７は、ホストシステム４との間で、データ、アドレス情報、ステータス情報、外部コマンド（ホストシステム４からフラッシュメモリシステム３に与えられるコマンド）等の授受を行う。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００２８】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００２９】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００３０】
フラッシュメモリインターフェースブロック１０は、バッファ９からフラッシュメモリ２への書き込み処理やフラッシュメモリ２からバッファ９への読み出し処理を制御するブロックである。書き込み処理や読み出し処理を実行するときの一連の制御動作は、ＲＯＭ１２に記憶されている一連の制御動作を指示する情報に基づいて実行される。
【００３１】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加される誤り訂正符号（ＥＣＣ：Error Correcting Code）を生成するとともに、フラッシュメモリ２から読み出したデータに付加された誤り訂正符号（ＥＣＣ）に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００３２】
ＲＯＭ１２は、マイクロプロセッサ６によって実行される処理の手順を定義するプログラム等を格納する不揮発性の記憶素子である。具体的には、ＲＯＭ１２は、例えば、以下で説明するアドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
【００３３】
[ゾーンの構成の説明]
フラッシュメモリの記憶容量の大容量化が進んでいることにより、大容量化したフラッシュメモリの記憶領域を円滑に管理するため、この記憶領域を複数のゾーンに分割して管理する手法が用いられている。
【００３４】
図３は、ホストシステム側のアドレス空間とフラッシュメモリのアドレス空間を概略的に示す図である。本図を用いて、まず、従来のゾーンの構成について具体的に説明する。ホストシステム側のアドレス空間は、図３（ａ）に示したようにセクタ（５１２バイト）単位で分割した領域に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。このセクタを複数個まとめたものを論理ブロックと呼び、論理ブロックを複数個まとめたものを論理ゾーンと呼んでいる。また、図３（ｂ）に示したように論理ブロックに付けられた通番を論理ブロック番号（ＬＢＮ）と呼び、論理ゾーンに付けられた通番を論理ゾーン番号（ＬＺＮ）と呼んでいる。また、各論理ゾーンに含まれた論理ブロックの各論理ゾーン内での通番を論理ゾーン内ブロック番号（ＬＺＩＢＮ）と呼んでいる。一方、図３（ｃ）に示したように、物理ブロックには、それぞれ固有の物理ブロックアドレス（ＰＢＡ）が割り当てられている。さらに、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに物理ゾーン番号（ＰＺＮ）を割り当てている。各物理ゾーンに含まれる物理ブロックの各物理ゾーン内での通番を物理ゾーン内ブロック番号（ＰＺＩＢＮ）と呼んでいる。
【００３５】
また、各論理ゾーンにはそれぞれ１個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。したがって、１個の論理ブロックに含まれるセクタ数は、１個の物理ブロックに含まれるセクタ領域の個数に応じて設定される。
【００３６】
図３に示した例では、１個の物理ブロックが２５６個のサブページで構成されたフラッシュメモリを想定しているため、２５６セクタが１個の論理ブロックに対応している。したがって、ＬＢＮ＃０〜＃９９９の１０００個の論理ブロックで構成されたＬＺＮ＃０の論理ゾーンは、ＬＢＡ＃０〜＃２５５９９９の２５６０００セクタの領域に対応している。以下同様に、ＬＺＮ＃１の論理ゾーンは、ＬＢＡ＃２５６０００〜＃５１１９９９の２５６０００セクタの領域に対応し、ＬＺＮ＃２の論理ゾーンは、ＬＢＡ＃５１２０００〜＃７６７９９９の２５６０００セクタの領域に対応し、ＬＺＮ＃３の論理ゾーンは、ＬＢＡ＃７６８０００〜＃１０２３９９９の２５６０００セクタの領域に対応している。
【００３７】
また、ＬＢＮ＃０〜＃９９９の１０００個の論理ブロックで構成されたＬＺＮ＃０の論理ゾーンは、ＰＢＡ＃０〜＃１０２３の１０２４個の物理ブロックで構成されたＰＺＮ＃０の物理ゾーンに割り当てられている。以下同様に、ＬＺＮ＃１の論理ゾーンは、ＰＺＮ＃１の物理ゾーンに割り当てられ、ＬＺＮ＃２の論理ゾーンは、ＰＺＮ＃２の物理ゾーンに割り当てられ、ＬＺＮ＃３の論理ゾーンは、ＰＺＮ＃３の物理ゾーンに割り当てられている。ここで、物理ゾーンに含まれる物理ブロックの個数を、論理ゾーンに含まれる論理ブロックの個数より多くしているのは、同一の論理ブロックに対応する新データと旧データが別々の物理ブロックに並存する場合や、データを正常に書き込むことができない不良ブロックが発生した場合等を考慮したものである。
【００３８】
従来は、上述のように同一のフラッシュメモリ（同一のチップ）内の物理ブロックで上記物理ゾーンを構成していたが、本発明に係るフラッシュメモリシステム１では、複数個のフラッシュメモリ２（複数チップ）内の物理ブロックで上記物理ゾーンを構成している。この物理ゾーンの構成を、図４に示した例を参照して説明する。図４は、２チップのフラッシュメモリ２内の物理ブロックで物理ゾーンを構成した例である。図４では、チップ０内の５１２個の物理ブロックとチップ１内の５１２個の物理ブロックで各物理ゾーンを構成している。ここで、チップ０内の物理ブロックアドレス（ＰＢＡ）の先頭から５１２個の物理ブロックと、チップ１の内の物理ブロックアドレス（ＰＢＡ）の先頭から５１２個の物理ブロックを、ＬＺＮ＃０の物理ゾーンに割り当てている。それ以降の物理ゾーン（ＬＺＮ＃１〜＃Ｎの物理ゾーン）についても、各チップ内の物理ブロックアドレスの順番で、各チップ内の物理ブロックを５１２個ずつ各物理ゾーンに順次割り当てている。
【００３９】
本発明に係るフラッシュメモリシステム１では、上述のような物理ゾーンに対して後述するアドレス変換テーブルと空きブロック検索用テーブルを作成している。図５は、物理ゾーン毎に作成されるアドレス変換テーブル２１と空きブロック検索用テーブル２２、２３の関係を示している。図５に示したようにアドレス変換テーブル２１は、各物理ゾーンに対して１テーブル作成され、空きブロック検索用テーブル２２、２３は、物理ゾーンを構成する物理ブロックが属するチップ毎に作成される。つまり、各物理ゾーンがチップ０内の物理ブロックとチップ１内の物理ブロックで構成されている場合、各物理ゾーンに対してチップ０用の空きブロック検索用テーブル２２と、チップ１用の空きブロック検索用テーブル２３が作成される。
【００４０】
[論理アドレスと物理アドレスの説明]
データの書き換えを行うときは、書き換え後のデータは書き換え前のデータが記憶されている物理ブロックと異なる物理ブロックに書き込まれる。また、誤り訂正したデータの再書き込みを行うときは、誤りを訂正した後のデータは誤りを訂正する前のデータが記憶されている物理ブロックと異なる物理ブロックに書き込まれる。このような処理が行われる毎に、ホストシステム４側から供給される論理アドレスとフラッシュメモリ２内の物理アドレスとの対応関係は動的に変化する。このため、論理アドレスと物理アドレスの対応関係を示したアドレス変換テーブルが必要となる。尚、このアドレス変換テーブルは、フラッシュメモリ２の冗長領域に書き込まれている論理アドレス情報に基づいて作成され、作成後は、論理アドレスと物理アドレスとの対応関係が変化する毎に、その変化した部分について対応関係が更新される。
【００４１】
[アドレス変換テーブルの説明]
次に、上記アドレス変換テーブルについて、図面を参照して説明する。尚、本実施形態では、ＬＺＮ＃０の論理ゾーンとＰＺＮ＃０の物理ゾーン、ＬＺＮ＃１の論理ゾーンとＰＺＮ＃１の物理ゾーン、以下同様にＬＺＮ＃Ｎの論理ゾーンとＰＺＮ＃Ｎの物理ゾーンがそれぞれ対応するように論理ゾーンと物理ゾーンとの対応関係が予め設定されている。
図６は、対応関係にある１組の論理ゾーンと物理ゾーンのアドレス変換テーブルの一例を示したものであり、論理ゾーンに含まれるＬＺＩＢＮ＃０〜＃９９９の各論理ブロックに対応するデータが格納されている物理ブロックを、チップ番号とチップ別のＰＺＩＢＮ（＃０〜＃５１１）で示している。尚、ＰＺＩＢＮは各物理ゾーンに含まれる物理ブロックの各物理ゾーン内での通番であるが、チップ別のＰＺＩＢＮは、各物理ゾーン内でのチップ別の通番を意味している。従って、図４に示した物理ゾーンの構成では、各物理ゾーンに含まれるチップ０内の５１２個の物理ブロックにチップ別のＰＺＩＢＮとして＃０〜＃５１１が割り当てられ、各物理ゾーンに含まれるチップ１内の５１２個の物理ブロックにチップ別のＰＺＩＢＮとして＃０〜＃５１１が割り当てられる。
【００４２】
本実施形態では、論理ゾーンと物理ゾーンとの対応関係が予め設定されているので、論理ゾーンのＬＺＮが分かれば対応関係にある物理ゾーンのＰＺＮを求めることができる。又、このＰＺＮの値に基づいて、ＰＺＩＢＮをＰＢＡに変換することができる。ＰＺＩＢＮをＰＢＡに変換するときには、ＰＺＩＢＮにＰＺＮに応じたオフセットが加算される。例えば、図４に示した物理ゾーンの構成でＰＺＩＢＮをＰＢＡに変換する場合、物理ゾーンのＰＺＮが＃１であれば５１２が、物理ゾーンのＰＺＮが＃２であれば１０２４が、オフセットとして加算される。
【００４３】
図４に示した物理ゾーンの構成では、各物理ゾーンを構成するチップ０内の物理ブロックのチップ別のＰＺＩＢＮの範囲と、チップ１内の物理ブロックのチップ別のＰＺＩＢＮの範囲が同一になるが、アドレス変換テーブルにチップの番号が記述されているため、各論理ブロックに対応するデータの格納先は一意的に特定される。また、対応するデータが格納されていない論理ブロックについては、アドレス変換テーブルのその論理ブロックに対応した部分に、チップの番号やＰＺＩＢＮではなく、対応するデータが格納されていないことを示すフラグ（以下、対応するデータが格納されていないことを示すフラグを未格納フラグと言う）が設定される。
【００４４】
尚、チップ０のフラッシュメモリ内の物理ブロックにＰＺＩＢＮ＃０〜＃５１１を割り当て、チップ１のフラッシュメモリ内の物理ブロックにＰＺＩＢＮ＃５１２〜＃１０２３を割り当てるようにすれば、アドレス変換テーブルにチップ番号を記述する必要がなくなる。又、チップ１のフラッシュメモリ内の物理ブロックにＰＺＩＢＮ＃５１２〜＃１０２３を割り当てた場合に、このＰＺＩＢＮ＃５１２〜＃１０２３をチップ１内のＰＢＡに変換するときは、ＰＺＩＢＮから５１２を減算した後にオフセットを加算すればよい。
【００４５】
このアドレス変換テーブルを作成する場合、例えば、１０００ブロック分のチップ番号とチップ別のＰＺＩＢＮを記述できる領域をワークエリア８上に確保し、そのチップ番号とチップ別のＰＺＩＢＮを記述する領域のいずれか、または双方に初期設定として未格納フラグを設定する。その後、アドレス変換テーブルを作成する物理ゾーンに割り当てられているチップ０内の物理ブロック（冗長領域）を順次読出していき、冗長領域に論理アドレス情報としてＬＺＩＢＮが記述されていた場合には、アドレス変換テーブルのそのＬＺＩＢＮに対応した部分に、そのＬＺＩＢＮが記述されていた物理ブロックのチップ別のＰＺＩＢＮを記述する。この際、チップ別のＰＺＩＢＮと共にチップの番号も記述する。また、チップ１についても同様の処理を行い、アドレス変換テーブルを作成する物理ゾーンに割り当てられているチップ０内の５１２ブロックとチップ１内の５１２ブロックについて、この処理が完了するとアドレス変換テーブルが完成する。なお、このアドレス変換テーブルの作成処理でチップ別のＰＺＩＢＮとチップの番号が記述されなかった部分については、初期設定で記述された未格納フラグがそのまま残る。尚、アドレス変換テーブルにチップ番号を記述しない場合、例えば、チップ０のフラッシュメモリ内の物理ブロックにＰＺＩＢＮ＃０〜＃５１１を割り当て、チップ１のフラッシュメモリ内の物理ブロックにＰＺＩＢＮ＃５１２〜＃１０２３を割り当てる場合は、チップ１内の物理ブロックのＰＺＩＢＮをアドレス変換テーブルに記述する際に、各物理ゾーンに含まれる物理ブロックのチップ別の通番（＃０〜＃５１１）に５１２を加算すればよい。
【００４６】
[空きブロック検索用テーブルの説明]
次に、空きブロック検索用テーブルについて、図面を参照して説明する。図７は、この空きブロック検索用テーブルの例を示した図である。空きブロック検索用テーブルは、チップ０用のテーブルとチップ１用のテーブルがある。なお、物理ゾーンを構成するチップ０内の５１２ブロックに対する空きブロック検索用テーブルと、チップ１内の５１２ブロックにする空きブロック検索用テーブルの構成は同じなので、チップ０内の５１２ブロックに対する空きブロック検索用テーブルについて説明する。
【００４７】
この空きブロック検索用テーブルを作成するときは、物理ゾーンを構成するチップ０内の５１２ブロックに対応する５１２ビットの領域、空きブロック数を記述する領域および検索終了位置を記述する領域をワークエリア８に確保する。５１２ブロックに対応する５１２ビットの領域については、上の行から順番にＰＺＩＢＮ＃０〜＃７、ＰＺＩＢＮ＃８〜＃１５という順番で物理ブロックが割り当てられている。又、各行に含まれるビットついては下位側（右側）から上位側（左側）にＰＺＩＢＮの順番（ＰＺＩＢＮが若い方が下位側になる順番）で物理ブロックが割り当てられている。従って、一番上の行の最下位ビットがＰＺＩＢＮ＃０に対応し、一番下の行の最上位ビットがＰＺＩＢＮ＃５１１に対応している。
【００４８】
次に、チップ０内の物理ブロック（冗長領域）を順次読出していき、冗長領域に論理アドレス情報としてＬＺＩＢＮが記述されていた場合、又はブロックステータスとして不良ブロックを示すフラグが設定されていた場合は、その物理ブロックに対応するビットに「０」を設定する。一方、ブロックステータスとして不良ブロックを示すフラグが設定されておらず、かつ冗長領域に論理アドレス情報が記述されていない場合は、その物理ブロックに対応するビットに「１」を設定する。
尚、空きブロック数を記述する領域には、空きブロック検索用テーブルの作成を開始するときに「０」を設定しておき、物理ブロックに対応するビットに「１」設定したときは、その値をインクリメントする。又、検索終了位置を記述する領域には、予め設定されている値、又は、乱数発生器等で取得した値を設定する。
【００４９】
この空きブロック検索用テーブルは、アドレス変換テーブルを作成する際に一緒に作成することが好ましい。また、作成後に、空きブロックにデータを書き込んだ場合は、その物理ブロックに対応するビットを「１」から「０」に書き換え、空きブロック数をデクリメントし、データが書き込まれている物理ブロックに対して消去処理を行った場合は、その物理ブロックに対応するビットを「０」から「１」に書き換え、空きブロック数をインクリメントする。
【００５０】
[空きブロック検索処理の説明]
次に空きブロック検索用テーブルを用いた空きブロック検索処理を説明する。チップ０用のテーブルとチップ１用のテーブルがあるため、まず、どちらのテーブルから検索するかを決定する必要がある。空きブロックを検索する必要があるときは、アドレス変換テーブルを検索して、ＬＺＩＢＮに対応するチップ別のＰＺＩＢＮがない場合と、ＬＺＩＢＮに対応するチップ別のＰＺＩＢＮがある場合（データを書き換える場合、または訂正処理を行う場合）とがある。前者の場合は、チップ０とチップ１との間で空きブロック数が偏らないようにするため、空きブロック数の多いチップ側の空きブロック検索用テーブルを使用する。後者の場合、理由は後述の[データ転送処理とコピーバックの選択]で説明するが、データ転送処理を行う時とコピーバック処理を行う時とでは、使用する空きブロック検索用テーブルの選択方法が異なる。まず、データ転送処理を行う時は、書き換え対象データ又は訂正処理の対象データが書き込まれている物理ブロックが含まれるチップと異なるチップ側の空きブロック検索用テーブルを使用する。つまり、アドレス変換テーブルより、書き換え対象データ又は訂正処理の対象データが書き込まれている物理ブロックのチップ番号を求め、そのチップ番号が０であった場合は、チップ１用のテーブルを使用し、そのチップ番号が１であった場合は、チップ０用のテーブルを使用する。次に、コピーバック処理を行う時は、コピーバック処理の対象データが書き込まれている物理ブロックが含まれるチップ側の空きブロック検索用テーブルを使用する。つまり、アドレス変換テーブルより、コピーバック処理の対象データが書き込まれている物理ブロックのチップ番号を求め、そのチップ番号が０であった場合、チップ０用のテーブルを使用し、そのチップ番号が１であった場合は、チップ１用のテーブルを使用する。
【００５１】
空きブロックの検索方法は、物理ゾーンを構成するチップ０内の５１２ブロックに対する場合と、チップ１内の５１２ブロックにする場合とで同様なので、物理ゾーンを構成するチップ０内の５１２ブロックに対する空きブロックの検索方法について説明する。
【００５２】
この空きブロック検索用テーブルを用いた空きブロックの検索では、上の行から下の行に、各行に含まれるビットを下位側から上位側に、論理値が「１」のビットを検索していく。尚、一番下の行の最上位ビットまで検索が進んだときは、一番上の行の最下位ビットに戻る。又、検索を開始するビットは、検索終了位置を記述する領域に設定されている値に基づいて決定される。検索終了位置を記述する領域に設定されている値がｎの場合、チップ別のＰＺＩＢＮ＃ｎに対応するビットの次のビットから検索が開始される。例えば、検索終了位置を記述する領域に設定されている値が１２８の場合は、チップ別のＰＺＩＢＮ＃１２９に対応するビットから検索が開始され、検索終了位置を記述する領域に設定されている値が５１１の場合は、チップ別のＰＺＩＢＮ＃０に対応するビットから検索が開始される。
【００５３】
この検索は、論理値が「１」のビットを検出したときに終了し、検出したビットに対応するチップ別のＰＺＩＢＮの値が、検索終了位置を記述する領域に設定される。従って、次回の検索では、今回の検索で検出された論理値が「１」のビットの次のビットから検索が開始される。
【００５４】
例えば、図７に示した空きブロック検索用テーブルのチップ別のＰＺＩＢＮ＃０に対応するビットから検索を開始したときは、チップ別のＰＺＩＢＮ＃２７に対応するビット（上から４番目の行の下位側から４ビット目のビット）が「１」なので、ここで検索が終了し、検索終了位置を記述する領域に「２７」を設定する。次回の検索は、チップ別のＰＺＩＢＮ＃２８に対応するビット（上から４番目の行の下位側から５ビット目のビット）から開始される。
【００５５】
[データ転送処理の説明]
図８を参照して、本発明によるデータ転送処理の概要を説明する。尚、データ転送処理は、フラッシュメモリからデータを読み出しコントローラ内のバッファに蓄積した後、コントローラ内のバッファに蓄積したデータをフラッシュメモリに書き込むデータ移動処理を意味する。一方、フラッシュメモリ内でのデータのデータ移動処理（フラッシュメモリ内でメモリセルアレイからデータレジスタにデータを読み出した後、データレジスタに読み出したデータをメモリセルアレイに書き込む処理）をコピーバック処理と言う。
【００５６】
本発明によるデータ転送処理は、以下のステップを繰り返すことで行われる。
（Ｓ８１）メモリコントローラ３から与えられた情報に基づいて、チップ０内の物理ブロックの読み出すページのメモリセルが選択され、選択されたメモリセルからデータレジスタにデータが複写される。
（Ｓ８２）チップ０内のデータレジスタから１サブページ分（１セクタ分）のデータが読み出され、メモリコントローラ３内のバッファ９に蓄積される。尚、読み出したデータに対応する誤り訂正符号も読み出され、ＥＣＣブロック１１によって読み出したデータに含まれる誤りの検出、訂正が行われる。
（Ｓ８３）メモリコントローラ内のバッファ９に蓄積された１サブページ分（１セクタ分）のデータが、チップ１内のデータレジスタに転送される。又、転送したデータに対応する誤り訂正符号が、ＥＣＣブロック１１によって生成され、生成された誤り訂正符号もチップ１内のデータレジスタに転送される。
ここで、１ページ分のデータを転送する場合は、１ページ分のデータがメモリコントローラ内のバッファ９を介して、チップ０内のデータレジスタからチップ１内のデータレジスタに転送されるまで、Ｓ８２〜Ｓ８３の処理が繰り返される。本実施形態では、１ページが４サブページ（４セクタ）に対応するので、１ページ分のデータを転送する場合、Ｓ８２〜Ｓ８３の処理が４回繰り返される。
（Ｓ８４）最初のサブページ（セクタ）に対応するデータをチップ１内のデータレジスタに転送するときに、メモリコントローラ３から与えられた情報に基づいて、書き込み先のページのメモリセルが選択され、選択されたメモリセルにデータレジスタのデータが複写される。
【００５７】
このように、本発明によるデータ転送処理は、２つのチップ間でデータの転送を行っているため、メモリコントローラ３内のバッファ９に1ページ分のデータを蓄積させずに、サブページ単位（セクタ単位）でチップ０内のデータレジスタからチップ１内のデータレジスタに、データを転送することができる。つまり、チップ０内のデータレジスタから１サブページ分（１セクタ分）のデータを読み出す処理と、チップ１内のデータレジスタに１サブページ分（１セクタ分）のデータを転送する処理を交互に繰り返すことにより、メモリコントローラ３内のバッファ９に1ページ分のデータを蓄積させず、チップ０内のデータレジスタからチップ１内のデータレジスタに、データを転送することができる。従って、１ページの容量に応じて、メモリコントローラ内のバッファ９の容量を変更する必要がなく、バッファ９の容量が少なくとも１サブページ分（１セクタ分）あれば、データ転送処理を行うことができる。又、バッファ９の容量が２サブページ分（２セクタ分）あれば、一方のチップ内のデータレジスタからデータを読み出し、バッファ９に蓄積する処理と、バッファ９に蓄積されたデータを他方のチップ内のデータレジスタに転送する処理を並行して行うことができる。尚、バッファ９に蓄積する処理とデータレジスタに転送する処理を並行して行うときは、チップ０に接続している内部バス１４とチップ１に接続している内部バス１４は、独立していることが好ましいが、共用の内部バス１４を時分割で使用するようにしてもよい。
【００５８】
なお、本説明では、チップ０のフラッシュメモリからチップ１のフラッシュメモリへのデータ転送処理について説明したが、チップ１のフラッシュメモリからチップ０のフラッシュメモリへのデータ転送処理についても同様に行うことができる。
【００５９】
[データ転送処理とコピーバックの選択]
データ転送処理では、フラッシュメモリから読み出したデータをコントローラ内のバッファに蓄積した後に、そのデータをフラッシュメモリに書き込むため、読み出したデータに誤りが含まれていた場合、その誤りを訂正することができる。一方、コピーバック処理では、フラッシュメモリ内でメモリセルアレイからデータレジスタにデータを読み出した後、そのデータをメモリセルアレイに書き込むため、短時間でデータを移動させることができるが、フラッシュメモリ内で処理が実行されるため、移動前と移動後のページは同一のチップに属していなければならない。
【００６０】
フラッシュメモリに対するアクセス処理では、上記のようなデータ転送処理とコピーバック処理の特徴を考慮して、状況に応じてデータ転送処理とコピーバック処理を使い分けることが好ましい。つまり、記憶データを移動させるときに記憶データに含まれる誤りを訂正したいときはデータ転送処理により記憶データの移動を行い、記憶データを移動させるときに記憶データに含まれる誤りを訂正する必要がないときはコピーバック処理により記憶データの移動を行う。
【００６１】
なお、本発明に係るフラッシュメモリシステムのゾーンの構成は、特に限定されるものではなく、例えば、ゾーンを構成するブロックの数やチップの数は用途に合わせて適宜設定することができる。
【００６２】
また、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様及び変更態様で実施することができる。従って本発明の範囲は特許請求の範囲及びその均等範囲によってのみ規定されるものである。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施形態におけるフラッシュメモリシステムを概略的に示すブロック図である。
【図２】ブロックとページの関係を示す説明図である。
【図３】フラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図４】２チップのフラッシュメモリでゾーンを構成した例を示す図である。
【図５】ゾーン毎の作成されるアドレス変換テーブルと空きブロック検索用テーブルの関係を示す図である。
【図６】アドレス変換テーブルの例を示した図である。
【図７】空きブロック検索用テーブルの例を示した図である。
【図８】本発明によるデータ転送処理の概要を示す図である。
【図９】従来技術によるデータ転送処理の概要を示す図である。
【符号の説明】
【００６４】
１    フラッシュメモリシステム
２    フラッシュメモリ
３    コントローラ
４    ホストシステム
６    マイクロプロセッサ
７    ホストインターフェースブロック
８    ワークエリア
９    バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
２１  アドレス変換テーブル
２２、２３  空きブロック検索用テーブル 
【図１】
2008112335.tif 000003
【図２】
2008112335.tif 000004
【図３】
2008112335.tif 000005
【図４】
2008112335.tif 000006
【図５】
2008112335.tif 000007
【図６】
2008112335.tif 000008
【図７】
2008112335.tif 000009
【図８】
2008112335.tif 000010
【図９】
2008112335.tif 000011