(57)【要約】【課題】ブロック間転送の頻度を低減し、ブロック間転送に基づくアクセス処理の効率低下を抑制する。【解決手段】書き込み先ブロックとして管理されている物理ブロック内の物理ページに、ホストシステムから与えられるデータが書き込まれる。物理ブロック内の無効データが格納されている物理ページのページ数がカウントされ、当該ページ数が一番大きい物理ブロックが特定される。当該物理ブロックに格納されている有効データが、転送先ブロックとして管理されている物理ブロック内の物理ページに転送される。書き込み先ブロックとして管理されている物理ブロックと転送先ブロックとして管理されている物理ブロックは異なる物理ブロックが選択される。【選択図】図８
2012068765.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを１個又は複数個含む論理ページを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位であるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、  
フラッシュメモリ内の消去状態の物理ブロックを検索する空きブロック検索手段と、
前記空きブロック検索手段により検出された消去状態の物理ブロックを、書き込み先ブロックとして管理する書き込み先管理手段と、
前記書き込み先管理手段より前記書き込み先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番でデータが格納されていくように、当該物理ブロック内の格納先の物理ページを指示する書き込み先指示手段と、
ホストシステムから与えられるデータを、前記書き込み先指示手段により指示されている物理ページに書き込む書き込み手段と、
前記空きブロック検索手段により検出された消去状態の物理ブロックを、転送先ブロックとして管理する転送先管理手段と、
物理ブロック内の無効データが格納されている物理ページのページ数をカウントし、当該ページ数が一番大きい物理ブロックを特定する転送元特定手段と、
前記転送先管理手段より前記転送先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番でデータが格納されていくように、当該物理ブロック内の格納先の物理ページを指示する転送先指示手段と、
前記転送元特定手段により特定された物理ブロックに格納されている有効データを、前記転送先指示手段により指示されている物理ページに転送する転送手段とを備え、
前記書き込み先管理手段は、前記書き込み先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記書き込み先ブロックとして新たに管理し、
前記転送先管理手段は、前記転送先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記転送先ブロックとして新たに管理し、
前記書き込み先管理手段により前記書き込み先ブロックとして管理されている物理ブロックと前記転送先管理手段により前記転送先ブロックとして管理されている物理ブロックは異なる物理ブロックであることを特徴とするメモリコントローラ。
【請求項２】
フラッシュメモリ内の消去状態の物理ブロックのブロック数を管理する空きブロック管理手段を更に備え、
前記転送手段による有効データの転送は、前記ブロック数が所定値以下になったときに実行されることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
請求項１又は２に記載のメモリコントローラと、
このメモリコントローラにより制御されるフラッシュメモリを備えるフラッシュメモリシステム。
【請求項４】
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを１個又は複数個含む論理ページを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位であるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリ内の消去状態の物理ブロックを検索する空きブロック検索ステップと、
前記空きブロックステップにより検出された消去状態の物理ブロックを、書き込み先ブロックとして管理する書き込み先管理ステップと、
前記書き込み先管理ステップより前記書き込み先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番で、ホストシステムから与えられるデータを書き込む書き込みステップと、
前記空きブロック検索ステップにより検出された消去状態の物理ブロックを、転送先ブロックとして管理する転送先管理ステップと、
物理ブロック内の無効データが格納されている物理ページのページ数をカウントし、当該ページ数が一番大きい物理ブロックを特定する転送元特定ステップと、
前記転送先管理ステップより前記転送先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番で、前記転送元特定手段により特定された物理ブロックに格納されている有効データを転送する転送ステップとを備え、
前記書き込み先管理ステップでは、前記書き込み先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記書き込み先ブロックとして新たに管理し、
前記転送先管理ステップでは、前記転送先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記転送先ブロックとして新たに管理し、
前記書き込み先管理ステップにより前記書き込み先ブロックとして管理されている物理ブロックと前記転送先管理ステップにより前記転送先ブロックとして管理されている物理ブロックは異なる物理ブロックであることを特徴とするフラッシュメモリの制御方法。
【請求項５】
フラッシュメモリ内の消去状態の物理ブロックのブロック数を管理する空きブロック管理ステップを更に備え、
前記転送ステップによる有効データの転送は、前記ブロック数が所定値以下になったときに実行されることを特徴とする請求項４に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に係り、特に、ホストシステムから与えられる論理アドレスをフラッシュメモリ内の物理アドレスに変換する際に、ページ単位でアドレス変換を行うことによりフラッシュメモリへのアクセスを制御するメモリコントローラ等に関する。このメモリコントローラ等におけるデータの格納先の管理では、ホストシステムから与えられるデータの格納先と、フラッシュメモリ内で複写（転送）されるデータの格納先を異なる物理ブロックに振り分けることにより、物理ブロックを空きブロック化する際の処理効率を改善している。
【背景技術】
【０００２】
近年、小型メモリカードやＳＳＤ（Solid State Drive）などの不揮発性半導体メモリを使用した記憶装置の市場が拡大している。これらの製品には、不揮発性メモリと、それを制御するためのメモリコントローラが搭載されている。このメモリコントローラによる制御により、従来ＨＤＤが使用されていたシステムにおいて、特段のソフトウェアやハードウェア回路を必要とせず、これらの記憶装置を使用することができる。例えば、ホストシステムからＨＤＤへのアクセスでは、セクタ単位（５１２バイト単位）で書き込み先のアドレスが指定され、それぞれのアドレスに対応するデータは、それぞれのアドレスに対応するセクタに書き込まれる。従って、不揮発性半導体メモリを使用した記憶装置もこのようなセクタ単位でのデータ書き込みに対応する必要がある。
【０００３】
このような記憶装置では、不揮発性メモリとして、通常、ＮＡＮＤ型フラッシュメモリ（以下、フラッシュメモリ）が使用されている。ところが、このフラッシュメモリには、消去処理及び書き込み処理における制限や書き換え回数の制限等の種々の制限が存在する。
【０００４】
例えば、フラッシュメモリでは、上書きによる書き換えができないため、データの書き込み先は消去状態の領域でなければならない。つまり、データの書き込み先の領域が消去状態でない場合、データの書き込みを行う前に、その書き込み先の領域を消去状態にしなければならない。このデータ消去の処理単位が、物理ブロックであり、この物理ブロックは複数個の物理ページで構成されている。そして、この物理ページが、データ書き込みの処理単位になっている。例えば、それぞれの物理ブロックは、６４個、１２８個又は２５６個の物理ページで構成されている。また、それぞれの物理ページは、４セクタ（２０４８バイト）、８セクタ（４０９６バイト）又は１６セクタ（８１９２バイト）のユーザ領域を含んでいる。
【０００５】
このように、フラッシュメモリでは、データの上書きができないため、データの書き替えを行うときには、通常、新データは、旧データとは異なる物理ページに書き込まれる。さらに、その旧データが書き込まれている物理ブロック内に空きページが無いときには、別の物理ブロック内の空きページにその新データが書き込まれる。このようなデータの書き替えが行われると、旧データが消去されるまで、ホストシステムから与えられるアドレスが同じデータが複数存在する。従って、同じアドレスのデータが複数存在する場合、最新のデータだけが有効データとして取り扱われ、その他のデータは無効データとして取り扱われる。
【０００６】
この無効データが増加すると、フラッシュメモリの空き容量が低下する。しかし、有効データが格納されている物理ページが残っている場合、その物理ページが属している物理ブロックに対する消去処理を行うことができないため、その物理ブロック内の有効データを他の物理ブロックに転送し、このデータ転送によりその物理ブロック内の全てのデータが無効データになった後に、その物理ブロックに対する消去処理が行われる。NAND型フラッシュメモリの大容量化に伴い、このブロック間転送が、記憶装置のパフォーマンスに与える影響が無視できなくなっている。つまり、NAND型フラッシュメモリのブロックサイズが増大し、書き込み時間が長くなったために、このブロック間転送の時間が長くなり、記憶装置のパフォーマンスに与える影響が大きくなっている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０８―１１５２５２号公報
【特許文献２】特開２００５−２２２５５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ブロック間転送の影響を抑制するために、引例１では、全てのデータに読み書き頻度情報を持たせて、更に、メモリ使用情報、メモリ固有情報などを持たせて、これらの情報に基づいて、ホストシステムから与えられるデータの書き込み先物理アドレスを指定している。このようにした場合、管理すべき情報が増加し、その管理が煩雑になる。
【０００９】
引例２では、ブロック間転送をする際に、それぞれの物理ブロックにおいてブロック間転送を実行する場合の時間的な影響等を算出し、その影響の少ない物理ブロックを選択してブロック間転送を実行している。このようにすれば、ブロック間転送にかかる時間を短縮されるが、時間的な影響等を算出するための負担が増加する。
【００１０】
そこで、本発明は、ブロック間転送の頻度を低減し、ブロック間転送に基づくアクセス処理の効率低下を抑制することができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の側面に従うメモリコントローラは、
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを１個又は複数個含む論理ページを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位であるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリ内の消去状態の物理ブロックを検索する空きブロック検索手段と、
前記空きブロック検索手段により検出された消去状態の物理ブロックを、書き込み先ブロックとして管理する書き込み先管理手段と、
前記書き込み先管理手段より前記書き込み先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番でデータが格納されていくように、当該物理ブロック内の格納先の物理ページを指示する書き込み先指示手段と、
ホストシステムから与えられるデータを、前記書き込み先指示手段により指示されている物理ページに書き込む書き込み手段と、
前記空きブロック検索手段により検出された消去状態の物理ブロックを、転送先ブロックとして管理する転送先管理手段と、
物理ブロック内の無効データが格納されている物理ページのページ数をカウントし、当該ページ数が一番大きい物理ブロックを特定する転送元特定手段と、
前記転送先管理手段より前記転送先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番でデータが格納されていくように、当該物理ブロック内の格納先の物理ページを指示する転送先指示手段と、
前記転送元特定手段により特定された物理ブロックに格納されている有効データを、前記転送先指示手段により指示されている物理ページに転送する転送手段とを備え、
前記書き込み先管理手段は、前記書き込み先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記書き込み先ブロックとして新たに管理し、
前記転送先管理手段は、前記転送先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記転送先ブロックとして新たに管理し、
前記書き込み先管理手段により前記書き込み先ブロックとして管理されている物理ブロックと前記転送先管理手段により前記転送先ブロックとして管理されている物理ブロックは異なる物理ブロックであることを特徴とする。
【００１２】
本発明の第１の側面に従うメモリコントローラは、
フラッシュメモリ内の消去状態の物理ブロックのブロック数を管理する空きブロック管理手段を更に備え、
前記転送手段による有効データの転送は、前記ブロック数が所定値以下になったときに実行されることが好ましい。
【００１３】
本発明の第２の側面に従うフラッシュメモリシステムは、
本発明の第１の側面に従うメモリコントローラと、
このメモリコントローラにより制御されるフラッシュメモリを備える。
【００１４】
本発明の第３の側面に従うフラッシュメモリの制御方法は、
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを１個又は複数個含む論理ページを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位であるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリ内の消去状態の物理ブロックを検索する空きブロック検索ステップと、
前記空きブロックステップにより検出された消去状態の物理ブロックを、書き込み先ブロックとして管理する書き込み先管理ステップと、
前記書き込み先管理ステップより前記書き込み先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番で、ホストシステムから与えられるデータを書き込む書き込みステップと、
前記空きブロック検索ステップにより検出された消去状態の物理ブロックを、転送先ブロックとして管理する転送先管理ステップと、
物理ブロック内の無効データが格納されている物理ページのページ数をカウントし、当該ページ数が一番大きい物理ブロックを特定する転送元特定ステップと、
前記転送先管理ステップより前記転送先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番で、前記転送元特定手段により特定された物理ブロックに格納されている有効データを転送する転送ステップとを備え、
前記書き込み先管理ステップでは、前記書き込み先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記書き込み先ブロックとして新たに管理し、
前記転送先管理ステップでは、前記転送先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記転送先ブロックとして新たに管理し、
前記書き込み先管理ステップにより前記書き込み先ブロックとして管理されている物理ブロックと前記転送先管理ステップにより前記転送先ブロックとして管理されている物理ブロックは異なる物理ブロックであることを特徴とする。
【００１５】
本発明の第３の側面に従うフラッシュメモリの制御方法は、
フラッシュメモリ内の消去状態の物理ブロックのブロック数を管理する空きブロック管理ステップを更に備え、
前記転送ステップによる有効データの転送は、前記ブロック数が所定値以下になったときに実行されることが好ましい。
【発明の効果】
【００１６】
本発明によれば、フラッシュメモリ内の記憶領域の管理において、ホストシステムから与えられるデータの書き込み先になる物理ページの物理アドレスと、ブロック間転送で転送されるデータの転送先となる物理ページの物理アドレスが別々のポインタを用いて管理される。この記憶領域の管理により、ホストシステムから与えられるデータと、ブロック間転送で転送されるデータが、互いに異なる物理ブロックに格納される。ここで、ブロック間転送で転送されるデータは、書き換え頻度の低いデータである確率が高いため、書き換え頻度の低いデータと高いデータが効率的に分離される。そして、書き換え頻度の低いデータと高いデータが分離されることにより、書き換え頻度の低いデータがブロック間転送の対象になる頻度を低く抑えることができる。
【００１７】
また、物理ブロックごとに、無効データを格納した物理ページのページ数が管理され、そのページ数が多い物理ブロックがブロック間転送の転送元として優先的に選択される。このようにブロック間転送の転送元の物理ブロックを選択することにより、転送元の物理ブロックの空きブロック化にかかる処理時間を短縮することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本実施の形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【図２】図２は、ホストシステム側の論理アドレスと、フラッシュメモリ内の物理アドレスとの対応関係を示す図である。
【図３】図３は、アドレス変換テーブルを示す図である。
【図４】図４は、空きブロックテーブルを示す図である。
【図５】図５は、物理ブロックカウンタテーブルを示す図である。
【図６】図６は、無効データページテーブルを示す図である。
【図７】図７は、ホストシステムから与えられるデータをフラッシュメモリに書き込む書き込み処理を説明するためのフローチャートである。
【図８】図８は、物理ブロック間でデータを転送するブロック間転送処理説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
図１に示されているように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。メモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。
【００２０】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００２１】
メモリコントローラ３は、図１に示されているように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ＳＲＡＭ８と、バッファメモリ９と、フラッシュメモリインターフェースブロック１０と、誤り訂正ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。
以下、各機能ブロックについて説明する。
【００２２】
ホストインターフェースブロック７は、ホストシステム４との間で行われるデータ、アドレス情報、ステータス情報、外部コマンド等の送受信を制御する。つまり、フラッシュメモリシステム１は、ホストインターフェースブロック７を介して、ホストシステム４から供給されるデータ等を取り込む。また、フラッシュメモリシステム１は、ホストインターフェースブロック７を介して、データ等をホストシステム４に供給する。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００２３】
ホストインターフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えている。コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタＲ２には、書き込むデータ又は読み出すデータのセクタ数が書き込まれる。ＬＢＡ（Logical Block Address）レジスタＲ３には、書き込み又は読み出しを開始する論理セクタに対応するＬＢＡが書き込まれる。ＬＢＡは、５１２バイトの容量を持った論理セクタに割り当てられたアドレスである。
【００２４】
ＳＲＡＭ（Static Random Access Memory）８は、フラッシュメモリ２の制御に必要な情報を一時的に格納する揮発性メモリである。フラッシュメモリ２にアクセスするために必要な各種のテーブルは、ＳＲＡＭ８に保持され、ＳＲＡＭ８上で更新される。フラッシュメモリ２にアクセスするために必要なテーブルが、ＳＲＡＭ８に保持されていない場合は、そのテーブルはＳＲＡＭ８上で作成される。但し、そのテーブルが、フラッシュメモリ２に格納されている場合は、格納されているテーブルがフラッシュメモリ２から読み出され、ＳＲＡＭ８に保持される。上記各種テーブルには、アドレス変換テーブル、検索テーブル、不良ブロックテーブル等が含まれる。本発明では、アドレス変換テーブルは、論理ページと物理ページの対応関係を管理するためのテーブルである。さらに上記テーブル類に加えて、本発明ではホストシステムからのデータ書き込み用とブロック間のデータ転送先のための２つのポインタ情報を記憶する。不良ブロックテーブルは不良ブロックを管理するためのテーブルである。
【００２５】
バッファメモリ９は、フラッシュメモリ２から読み出したデータ、又はフラッシュメモリ２に書き込むデータを、一時的に保持する揮発性メモリである。
【００２６】
フラッシュメモリインターフェースブロック１０は、フラッシュメモリ２との間で行われるデータ、アドレス情報、ステータス情報、内部コマンド等の送受信を制御する。ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、メモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２７】
誤り訂正ブロック１１は、フラッシュメモリ２にデータを書き込むときに、そのデータをＢＣＨ符号の誤り訂正符号（ＥＣＣ：Error Correcting Code）に符号化し、フラッシュメモリ２から符号化されたデータを読み出したときに、その符号化されたデータを復号化する。つまり、フラッシュメモリ２に書き込まれるデータは、冗長ビットが付加されたＢＣＨ符号に符号化されてフラッシュメモリ２に書き込まれ、その符号化されたデータ（冗長ビットが付加されたデータ）は、読み出されたときに復号化される。この復号化では、符号化の際に付加される冗長ビットのビット数に応じて、所定のビット数までのビットエラーが訂正される。更に、誤り訂正ブロック１１は、このＢＣＨ符号に基づいた訂正機能に加えて、当該訂正機能の訂正能力を超えるビット数のビットエラーが発生したことを検出する検出機能を備えている。
【００２８】
ＲＯＭ１２は、フラッシュメモリ２を制御するために必要なファームウェアを格納するための不揮発性の記憶素子である。尚、フラッシュメモリシステム１を起動させるために必要な最小限のファームウェアだけをＲＯＭ１２に格納し、その他のファームウェアをフラッシュメモリ２に格納するようにしてもよい。
【００２９】
マイクロプロセッサ６は、ＲＯＭ１２又はフラッシュメモリ２から、ファームウェアを読み込み、ファームウェアに従って動作する。メモリコントローラ３に含まれる機能ブロックは、マイクロプロセッサ６により制御される。
【００３０】
フラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリであり、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。尚、フラッシュメモリには、ＳＬＣ(Single Level Cell)タイプのメモリセルで構成されたものと、ＭＬＣ(Multi Level Cell)タイプのメモリセルで構成されたものがある。
【００３１】
ＮＡＮＤ型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック（物理ブロック）単位で行われる。それぞれの物理ブロックは、複数のページ（物理ページ）で構成され、それぞれの物理ページは、ユーザ領域と冗長領域で構成されている。ユーザ領域は、ホストシステム４から与えられるデータを主に格納するための領域であり、冗長領域は、論理アドレス情報、ブロックステータス（フラグ）情報、ＥＣＣ等の付加データを主に格納するための領域である。
【００３２】
論理アドレス情報は、当該情報に係る物理ページと対応する論理ページを特定するための情報である。ブロックステータス（フラグ）は、当該情報に係る物理ブロックが、不良ブロック（正常にデータの書き込み等を行うことができない物理ブロック）であるか否かを示すフラグである。尚、不良ブロックには、初期不良の不良ブロックと後発不良の不良ブロックがある。初期不良の不良ブロックは、出荷前に検出された不良ブロックである。後発不良の不良ブロックは、使用中に生じた不良ブロックである。初期不良の物理ブロックについては、不良ブロックであることを示すブロックステータス（フラグ）が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス（フラグ）を、ユーザ領域に書き込んでいる製造メーカもある。
【００３３】
次に、アドレス変換の手順と書き込みの制御方法について説明する。本発明では、図２に示すようにホストシステム側の論理アドレスと、フラッシュメモリ内の物理アドレスとを関係付けるためのアドレス変換をページ単位で行う。従って、ホストシステムのアクセス単位である論理セクタ（５１２バイト）が複数個含まれる論理ページを定義し、この論理ページ単位で、論理ページと物理ページとの対応関係を管理する。本実施の形態では、８セクタ（４０９６バイト）のユーザー領域を持つ物理ページで構成されたフラッシュメモリを用いる。従って、論理ページは、８個の論理セクタで構成されている。
【００３４】
論理ページ番号（ＬＰＮ）は、論理ページに付けられている通し番号である。物理ブロックアドレス（ＰＢＡ）は、フラッシュメモリ内で物理ブロックに割り当てられているアドレスに対応する。物理ページ番号（ＰＰＮ）は、各物理ブロック内の物理ページに付けられた各物理ブロック内での通し番号である。尚、物理ブロックアドレス（ＰＢＡ）の下位側に物理ページ番号（ＰＰＮ）を連結したものが、フラッシュメモリ内で物理ページに割り当てられている物理ページアドレス（ＰＰＡ）に対応する。
【００３５】
論理ページ番号（ＬＰＮ）から物理ページアドレス（ＰＰＡ）の変換は、図３に示したようなアドレス変換テーブルを用いて行われる。このアドレス変換テーブルは、それぞれの論理ページ番号（ＬＰＮ）に対応する物理ページアドレス（ＰＰＡ）が格納される領域で構成されている。物理ページアドレス（ＰＰＡ）は、物理ブロックアドレス（ＰＢＡ）を示すビットと物理ブロック内の物理ページ番号（ＰＰＮ）を示すビットで構成される。本実施例では、１つの論理ページ番号（ＬＰＮ）あたり２３Ｂｉｔの領域で構成されている。この２３Ｂｉｔの領域のうち、上位１５ｂｉｔは物理ブロックアドレス（ＰＢＡ）に対応し、下位８ビットは物理ページ番号（ＰＰＮ）に対応する。
【００３６】
本実施の形態では、ホストシステムから与えられるデータの書き込み先の物理ページアドレス（ＰＰＡ）を書き込みポインタ（ＷＰ）に基づいて管理し、物理ブロック間でデータを転送するときの転送先の物理ページアドレス（ＰＰＡ）を転送ポインタ（ＴＰ）に基づいて管理する。また、ホストシステムから与えられるデータの書き込み先となる物理ブロックと、物理ブロック間でデータを転送するときの転送先となる物理ブロックは、互いに異なる物理ロックに管理されている。従って、書き込みポインタ（ＷＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページが属する物理ブロックと、転送ポインタ（ＴＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページが属する物理ブロックは、互いに異なる物理ブロックになる。
【００３７】
ホストシステムから書き込みデータとＬＢＡ等の情報与えられた場合、書き込みポインタ（ＷＰ）により、書き込み先の物理ページの物理ページアドレス（ＰＰＡ）を取得する。そして、その物理ページアドレス（ＰＰＡ）の物理ページにホストシステムから与えられるデータが書き込まれる。このデータの書き込みに伴い、アドレス変換テーブルの更新が行われる。このアドレス変換テーブルでは、書き込んだデータの論理ページ番号（ＬＰＮ）に対応する領域に、その領域の物理ページアドレス（ＰＰＡ）が書き込まれる。尚、書き込むデータに対応する論理ページ番号（ＬＰＮ）は、ホストシステムから与えられるＬＢＡ等に基づいて求められる。
【００３８】
ブロック間転送を行う場合、転送ポインタ（ＴＰ）により、転送先の物理ページの物理ページアドレス（ＰＰＡ）を取得する。そして、その物理ページアドレス（ＰＰＡ）の物理ページに転送元のデータが転送される。
【００３９】
消去状態の物理ブロック又は有効なデータが格納されていない物理ブロックである空きブロックは、図４に示したような空きブロックテーブルを用いて管理される。この空きブロックテーブルでは、フラッシュメモリ内の各物理ブロックがテーブル上の１つのビットに割り当てられている。そして、それぞれのビットの論理値（“０”又は“１”）が、そのビットに割り当てられている物理ブロックが空きブロックに該当するか否かを示している。この例では、論理値“０”が空きブロックに該当することを示し、論理値“１”が空きブロックに該当しないことを示す。また、空きブロックテーブル上の各アドレスには、１バイト（８ビット）の領域が割り当てられている。そして、テーブル全体では、アドレス＃０〜アドレス＃２０４７までの２０４８バイトの領域が、この空きブロックテーブル用の領域として使用される。例えば、アドレス＃０の最下位ビットから最上位ビットまでの８ビットに、物理ブロックアドレス（ＰＢＡ）＃０から＃７までの８個の物理ブロックがそれぞれ割り当てられている。アドレス＃１の最下位ビットから最上位ビットまでの８ビットに、物理ブロックアドレス（ＰＢＡ）＃８から＃１５までの８個の物理ブロックがそれぞれ割り当てられている。以下同様に、物理ブロックアドレス（ＰＢＡ）＃１６から＃１６３８３までの物理ブロックが順次割り当てられている。
【００４０】
書き込みポインタ（ＷＰ）は、ホストシステムから与えられるデータの書き込み先として割り当てられた物理ブロック内の物理ページの物理ページアドレス（ＰＰＡ）を先頭ページから末尾ページに向かって順次指定する。転送ポインタ（ＴＰ）は、物理ブロック間でデータを転送するときの転送先として割り当てられた物理ブロック内の物理ページの物理ページアドレス（ＰＰＡ）を先頭ページから末尾ページに向かって順次指定する。
【００４１】
従って、書き込みポインタ（ＷＰ）又は転送ポインタ（ＴＰ）の指定対象として割り当てられた物理ブロックについては、その物理ブロックに対応する空きブロックテーブル上のビットの論理値が、“０”から“１”に変更される。
【００４２】
ブロック間転送の転送元の物理ブロックに格納されている全ての有効データが、転送先の物理ブロックに転送されることにより、この転送元の物理ブロックは空きブロック化する。この転送元の物理ブロックが空きブロック化したときに、この転送元の物理ブロックに対応する空きブロックテーブル上のビットの論理値が、“１”から“０”に変更される。
【００４３】
物理ブロック内の無効データが格納されている物理ページのページ数は、図５に示されているような物理ブロックカウンタテーブルで管理される。この物理ブロックカウンタテーブルでは、物理ブロック毎に、その物理ブロック内の無効データが格納されている物理ページのページ数の値を保持している。ここで、無効データとは、新たなデータによって置き換えられたデータのことを指す。ホストシステムから与えられたデータを、書き込みポインタ（ＷＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページに書き込んだときに、そのデータによって置き換えられたデータは、無効データになる。つまり、データを書き込んだときに、そのデータと同じ論理ページに対応する旧データがあった場合、その旧データが有効データから無効データに変わる。従って、データを書き込んだときに、その旧データが格納されている物理ブロック内の無効データが格納されている物理ページのページ数は１つ増加する。このように物理ブロック内の無効データが格納されている物理ページのページ数が増加した場合、物理ブロックカウンタテーブルに保持されているページ数の値が更新される。
【００４４】
本実施の形態では、１個の物理ブロックが６４ページの物理ページで構成されている。従って、物理ブロックカウンタテーブルに保持されている無効データが格納されている物理ページのページ数の値は、“０”から“６４”まで間で変化する。このページ数の値が“６４”になった物理ブロックは、有効データが格納されていないため、消去処理され、空きブロックとして取り扱われる。
【００４５】
各物理ブロック内の無効データが格納されている物理ページは、図６に示されているような無効データページテーブルで管理されている。この無効データページテーブルでは、フラッシュメモリ内の各物理ページがテーブル上の１つのビットに割り当てられている。そして、それぞれのビットの論理値（“０”又は“１”）が、そのビットに割り当てられている物理ページに格納されているデータが無効データに該当するか否かを示している。この例では、論理値“０”が格納されているデータが無効データに該当しないことを示し、論理値“１”が格納されているデータが無効データに該当することを示す。つまり、物理ページにデータが格納されていないとき又は有効データが格納されているときは、その物理ページに対応するビットの論理値が“０”になり、物理ページに無効データが格納されているときは、その物理ページに対応するビットの論理値が“１”になる。また、無効データページテーブル上の各アドレスには、１バイト（８ビット）の領域が割り当てられている。そして、テーブル全体では、アドレス＃０〜アドレス＃５２４２８７までの５２４２８８バイトの領域が、この無効データページテーブル用の領域として使用される。例えば、アドレス＃０の最下位ビットから最上位ビットまでの８ビットに、物理ブロックアドレス（ＰＢＡ）＃０の物理ブロック内の物理ページ番号（ＰＰＮ）＃０から＃７までの８個の物理ページがそれぞれ割り当てられている。アドレス＃１の最下位ビットから最上位ビットまでの８ビットに、物理ブロックアドレス（ＰＢＡ）＃０の物理ブロック内の物理ページ番号（ＰＰＮ）＃８から＃１５までの８個の物理ページがそれぞれ割り当てられている。このように、物理ブロックアドレス（ＰＢＡ）＃０から＃１６３８３までの物理ブロック内の物理ページが順次割り当てられている。
【００４６】
次に、ホストシステムから与えられるデータをフラッシュメモリに書き込む書き込み処理を、図７を参照して説明する。
ステップ１：
ホストシステムから与えられる１ページ分のデータが、書き込みポインタ（ＷＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページに書き込まれる。
ステップ２：
書き込みポインタ（ＷＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページが、物理ブロック内の末尾の物理ページであるか否かが判断される。書き込みポインタ（ＷＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページが、物理ブロック内の末尾の物理ページであると判断された場合、ステップ３に進む。書き込みポインタ（ＷＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページが、物理ブロック内の末尾の物理ページでないと判断された場合、ステップ６に進む。
ステップ３：
空きブロックテーブルを用いた空きブロック検索が行われる。
ステップ４：
ステップ３の空きブロック検索で検出された物理ブロック内の先頭の物理ページに対応する物理ページアドレス（ＰＰＡ）が書き込みポインタ（ＷＰ）に設定される。
ステップ５：
空きブロックテーブルを更新する。つまり、ステップ３の空きブロック検索で検出された物理ブロックに対応するビットの論理値が、“０”から“１”に変更される。
ステップ６：
書き込みポインタ（ＷＰ）に設定されている物理ページアドレス（ＰＰＡ）の値がインクリメントされる。つまり、書き込みポインタ（ＷＰ）に設定されている物理ページアドレス（ＰＰＡ）の値が、その次の物理ページの物理ページアドレス（ＰＰＡ）に変更される。
【００４７】
このように、ホストシステムから与えられるデータは、ホストシステムから与えられるデータの書き込み先として割り当てられた物理ブロック内の物理ページに、先頭の物理ページから末尾の物理ページに向かって順次書き込まれていく。そして、全ての物理ページにデータが書き込まれたときに、新たな物理ブロック（空きブロック）が、ホストシステムから与えられるデータの書き込み先として新たに割り当てられる。
【００４８】
また、ホストシステムから与えられるデータを、書き込み先の物理ブロック内の物理ページに書き込んだときに、そのデータと同じ論理ページ番号（ＬＰＮ）に対応する旧データが存在する場合、つまり、そのデータが書き込まれることにより無効データになるデータがある場合、物理ブロックカウンタテーブルと無効データページテーブルの更新が行われる。
【００４９】
物理ブロックカウンタテーブルの更新では、この無効データになるデータが格納されている物理ページが属する物理ブロックに対応するページ数の値、つまり、この物理ブロック内の無効データが格納されている物理ページのページ数を示す値がインクリメントされる。このように、ホストシステムから与えられるデータが書き込まれることにより無効データになるデータがある場合、そのデータが格納されている物理ページが属する物理ブロックに対応するページ数の値が１増加する。
【００５０】
無効データページテーブルの更新では、ホストシステムから与えられるデータが書き込まれることにより無効データになるデータがある場合、そのデータが格納されている物理ページに対応するビットの論理値が、“０”から“１”に変更される。
【００５１】
次に、物理ブロック間でデータを転送するブロック間転送処理を、図８を参照して説明する。このブロック間転送処理は、転送元の物理ブロックを空きブロック化するために行われる処理であり、フラッシュメモリ内の空きブロックの個数が、所定の個数以下になったときに行われる
ステップ１：
物理ブロックカウンタテーブルを参照し、無効データが格納されている物理ページのページ数を示す値が最も“６４”
に近い物理ブロックを特定する。更に、その物理ブロック内の有効データが格納されている物理ページのページ数を求める。無効データが格納されている物理ページのページ数を示す値がｎの場合、有効データが格納されている物理ページのページ数は６４−ｎになる。
ステップ２：
無効データページテーブルを参照し、ステップ１で特定された物理ブロック内の有効データが格納されている物理ページを特定する。そして、ステップ１で特定された物理ブロック内の１ページ分の有効データを、転送ポインタ（ＴＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページに転送（複写）する。
ステップ３：
転送ポインタ（ＴＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページが、物理ブロック内の末尾の物理ページであるか否かが判断される。転送ポインタ（ＴＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページが、物理ブロック内の末尾の物理ページであると判断された場合、ステップ４に進む。転送ポインタ（ＴＰ）により指示される物理ページアドレス（ＰＰＡ）の物理ページが、物理ブロック内の末尾の物理ページでないと判断された場合、ステップ７に進む。
ステップ４：
空きブロックテーブルを用いた空きブロック検索が行われる。
ステップ５：
ステップ４の空きブロック検索で検出された物理ブロック内の先頭の物理ページに対応する物理ページアドレス（ＰＰＡ）が転送ポインタ（ＴＰ）に設定される。
ステップ６：
空きブロックテーブルを更新する。つまり、ステップ４の空きブロック検索で検出された物理ブロックに対応するビットの論理値が、“０”から“１”に変更される。
ステップ７：
転送ポインタ（ＴＰ）に設定されている物理ページアドレス（ＰＰＡ）の値がインクリメントされる。つまり、転送ポインタ（ＴＰ）に設定されている物理ページアドレス（ＰＰＡ）の値が、その次の物理ページの物理ページアドレス（ＰＰＡ）に変更される。
ステップ８：
ステップ１で特定された物理ブロック内に有効データが格納されている物理ページが残っている場合は、ステップ２に戻り、有効データが格納されている物理ページが残っていない場合は、ブロック間転送処理を終了する。つまり、有効データが格納されている物理ページのページ数分のデータが転送された後に、ブロック間転送処理を終了する。
【００５２】
このように、ブロック間転送処理より転送されるデータは、その転送先として割り当てられた物理ブロック内の物理ページに、先頭の物理ページから末尾の物理ページに向かって順次書き込まれていく。そして、全ての物理ページにデータが書き込まれたときに、新たな物理ブロック（空きブロック）が、ブロック間転送処理より転送されるデータの転送先として新たに割り当てられる。
【００５３】
また、ブロック間転送処理が終了した後に、転送元の物理ブロックは消去処理され、それに伴って物理ブロックカウンタテーブルと無効データページテーブルの更新が行われる。物理ブロックカウンタテーブルの更新では、転送元の物理ブロック内の無効データが格納されている物理ページのページ数を示す値が“０”に再設定される。無効データページテーブルの更新では、転送元の物理ブロック内の各物理ページに対応するビットの論理値が“０”に再設定される。
【００５４】
ブロック間転送処理より転送されるデータは、書き換え頻度が低いデータである確率が高いため、ブロック間転送処理より転送されるデータの転送先の物理ブロックとホストシステムから与えられるデータの書き込み先の物理ブロックを異なる物理ブロックにすることにより、相対的に書き換え頻度が低いデータと相対的に書き換え頻度が高いデータが効率的に分離される。このように相対的に書き換え頻度が低いデータと相対的に書き換え頻度が高いデータが、互いに異なる物理ブロックに分離して格納されることにより、ブロック間転送処理が実行される回数やそのブロック間転送処理により転送されるデータの総量が低減される。
【００５５】
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々の変更を加え得ることは勿論である。
【００５６】
例えば、複数のフラッシュメモリをアクセスするために複数のチャンネルのバスを備えたフラッシュメモリシステムにおいても本発明は有効である。各チャンネルに接続された複数のフラッシュメモリから、それぞれ選択された複数の物理ブロックを、ひとつの仮想ブロックとして定義する。さらにその仮想ブロックを構成する複数の物理ブロックにそれぞれ含まれる複数の物理ページを、ひとつの仮想ページと定義する。この様な仮想空間に対しても本発明は適用可能である。その場合、ホストシステムのＬＢＡ空間からフラッシュメモリ内の物理アドレスへのアドレス変換は、仮想ページの単位で行われる。つまり、ひとつの論理ページはひとつの仮想ページに割り当てられる。従って、論理ページのサイズは、仮想ページのユーザデータ領域の合計値に一致する。
【産業上の利用可能性】
【００５７】
本発明は、種々のデジタル情報を取り扱うパーソナルコンピュータやデジタルスチルカメラ等の電子機器に装着又内蔵される情報記憶（記録）装置に適用することができる。
【符号の説明】
【００５８】
１…フラッシュメモリシステム、２…フラッシュメモリ、３…メモリコントローラ
【図１】
2012068765.tif 000003
【図２】
2012068765.tif 000004
【図３】
2012068765.tif 000005
【図４】
2012068765.tif 000006
【図５】
2012068765.tif 000007
【図６】
2012068765.tif 000008
【図７】
2012068765.tif 000009
【図８】
2012068765.tif 000010