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