JP2012037971A - メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 - Google Patents
メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 Download PDFInfo
- Publication number
- JP2012037971A JP2012037971A JP2010175562A JP2010175562A JP2012037971A JP 2012037971 A JP2012037971 A JP 2012037971A JP 2010175562 A JP2010175562 A JP 2010175562A JP 2010175562 A JP2010175562 A JP 2010175562A JP 2012037971 A JP2012037971 A JP 2012037971A
- Authority
- JP
- Japan
- Prior art keywords
- page
- physical
- data
- block
- logical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 230000015654 memory Effects 0.000 title claims abstract description 195
- 238000000034 method Methods 0.000 title claims description 35
- 238000012546 transfer Methods 0.000 claims description 59
- 238000012545 processing Methods 0.000 claims description 21
- 238000006243 chemical reaction Methods 0.000 description 16
- 230000002950 deficient Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000012937 correction Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】物理ページ(PP)を複数個含む物理ブロック(PB)からなる不揮発性メモリにおける論理ページ(LP)とPPの対応関係を、それぞれのPPに簡易な情報を書き込むことにより管理する。
【解決手段】PB内の先頭のPBから末尾のPPに向かう書き込み順序で、データが書き込まれると共に、当該データが書き込まれたPPに、先頭のPPから当該PPまでのそれぞれのPPに対応するLPを示す情報を含むページ管理情報が書き込まれる。それぞれのLPに対応する最新のデータが書き込まれているPPを特定するときに、PBに書き込まれているページ管理情報のうち、書き込み順序が後のPPに書き込まれているページ管理情報が優先的に参照される。ページ管理情報に含まれる情報は所定の配列順序で配列されており、同じLPを示す情報が複数個あるときは、配列順序が後の情報が優先される。
【選択図】図7
【解決手段】PB内の先頭のPBから末尾のPPに向かう書き込み順序で、データが書き込まれると共に、当該データが書き込まれたPPに、先頭のPPから当該PPまでのそれぞれのPPに対応するLPを示す情報を含むページ管理情報が書き込まれる。それぞれのLPに対応する最新のデータが書き込まれているPPを特定するときに、PBに書き込まれているページ管理情報のうち、書き込み順序が後のPPに書き込まれているページ管理情報が優先的に参照される。ページ管理情報に含まれる情報は所定の配列順序で配列されており、同じLPを示す情報が複数個あるときは、配列順序が後の情報が優先される。
【選択図】図7
Description
本発明は、ホストシステムの書き換え単位よりも大きな消去ブロックサイズを持つ不揮発性メモリを用いて、記憶装置を構成するための、メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法に関する。
近年、小型メモリカードやSSD(Solid State Disk/Drive)などの不揮発性半導体メモリを使用した記憶装置の市場が拡大している。これらの製品には、不揮発性メモリと、それを制御するためのメモリコントローラが搭載されている。このメモリコントローラによる制御により、従来HDDが使用されていたシステムに、特段のソフトウェアやハードウェア回路を必要とせず、これらの記憶装置を使用することができる。例えば、HDDではセクタ単位(512バイト単位)でアドレスが管理されており、ホストシステムから1セクタ単位で書き込み先のアドレスが指定されたときは、そのアドレスに対応するデータは、そのアドレスのセクタに書き込まれる。従って、これらの記憶装置もこのようなアドレス指定及びデータ書き込みに対応する必要がある。
これらの製品では、不揮発性メモリとして、通常、NAND型フラッシュメモリ(以下、フラッシュメモリ)が使用されている。ところが、このフラッシュメモリには、消去処理及び書き込み処理における制限や書き換え寿命等の種々の制限が存在する。
例えば、フラッシュメモリは上書きができないため、データの書き込み先は消去状態の領域でなければならない。つまり、データの書き込み先の領域が消去状態でない場合、データの書き込みを行う前に、その書き込み先の領域を消去状態にしなければならない。このデータ消去の処理単位が、物理ブロックであり、この物理ブロックは複数個の物理ページで構成されている。そして、この物理ページが、データ書き込みの処理単位になっている。例えば、それぞれの物理ブロックは、64個、128個又は256個の物理ページで構成されている。また、それぞれの物理ページは、4セクタ(2048バイト)、8セクタ(4096バイト)又は16セクタ(8192バイト)のユーザ領域を含んでいる。
このように、フラッシュメモリでは、データの上書きができないため、データの書き替えを行うときには、通常、新データは、旧データとは異なる物理ページに書き込まれる。さらに、その旧データが書き込まれている物理ブロック内に空き物理ページが無いときには、別の物理ブロック内の空き物理ページにその新データが書き込まれる。このようなデータの書き替えが行われると、旧データが消去されるまで、ホストシステムから与えられるアドレスが同じデータが複数存在する。従って、同じアドレスのデータが複数存在する場合、最新のデータだけが有効データとして取り扱われ、その他のデータは無効データとして取り扱われる。
この無効データが増加すると、フラッシュメモリの空き容量が低下するため、物理ブロック間で有効データを転送し、このデータ転送により物理ブロック内の全てのデータが無効データになった後に、その物理ブロックに対する消去処理が行われる。このような処理を行うためには、それぞれの物理ページに書き込まれているデータが有効データであるか、又は無効データであるかを判断する必要がある。
例えば、引用文献1では、物理ブロック内の書き込み済みデータを書き替えるときに、書き替えデータを書き込んだ物理ページの冗長領域に、論理ページを特定するための情報とタイムスタンプを書き込み、これらの情報を参照することで、それぞれの論理ページに対応する最新のデータが書き込まれている物理ページを特定している。この際、同じ論理ページに対応するデータが複数の物理ページに書き込まれているときには、タイムスタンプに基づいて最新データを特定している。論理ページを特定するための情報をデータと共に書き込む方法は、引用文献2にも開示されている。引用文献3では、それぞれの論理アドレスに対応する最新のアドレスである新物理アドレスとこの新物理アドレスより1つ前のアドレスである旧物理アドレスをそれぞれ特定するポインタ構造のテーブルを用いて、それぞれの論理アドレスに対応する新データ又は旧データが書き込まれている領域の物理アドレスを特定している。
引用文献1又は2では、それぞれの物理ページに、その物理ページに書き込まれたデータに関する情報(管理情報)が書き込まれるため、それぞれの論理ページに対応する最新データを特定するためには、それぞれ物理ページから管理情報を読み出す必要がある。引用文献3では、ポインタ構造のテーブルをデータの書き換えが行われる毎に更新しなければならない。更に、このテーブルを保持する手段が別途必要になる。
又、物理ブロック内の全てのデータが無効なデータになった場合に、その物理ブロックに対する消去処理が行われるが、引用文献1乃至3に記載された方法は、無効データだけを特定するような場合には適していない。例えば、引用文献3に記載された方法は、2つ以上前の旧データのような無効データを特定するような場合には適していない。
本発明は、上記のようなことを勘案してなされたものであり、物理ブロック内のデータが書き込まれている物理ページのうちで、最後にデータが書き込まれた物理ページに書き込まれている管理情報に基づいて、それぞれの論理ページに対応する最新データが書き込まれている物理ページの特定と、無効データが書き込まれている物理ページの特定を行うことのできるメモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法を提供することを目的とする。
本発明の第1の側面に従うメモリコントローラは、
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御するメモリコントローラであって、
ホストシステムから与えられるデータを保持するデータ保持手段と、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理する対応関係管理手段と、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、論理ページ毎のデータを書き込んでいくデータ書き込み手段と、
前記データ書き込み手段によりデータが書き込まれる物理ページに、当該物理ページが含まれる物理ブロック内の先頭の物理ページから当該物理ページまでのそれぞれの物理ページに対応する論理ページを示す情報を先頭の物理ページから当該物理ページに向かう配列順序で並べた情報であるページ管理情報を書き込むページ管理情報書き込み手段と、
前記ページ管理情報に基づいてそれぞれの論理ページに対応する最新のデータが書き込まれている物理ページを特定するページ特定手段とを備え、
前記データ書き込み手段は、前記データ保持手段に保持されているデータを、当該データに対応する論理ブロックが割り当てられている物理ブロックに前記書き込み順序で書き込んでいき、
前記ページ特定手段は、前記ページ管理情報を参照するときに、物理ブロックに書き込まれている前記ページ管理情報のうち、前記書き込み順序が後の物理ページに書き込まれている前記ページ管理情報を優先し、更に、前記ページ管理情報に同じ論理ページを示す複数個の情報が含まれているときには、前記配列順序が後の情報を優先する。
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御するメモリコントローラであって、
ホストシステムから与えられるデータを保持するデータ保持手段と、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理する対応関係管理手段と、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、論理ページ毎のデータを書き込んでいくデータ書き込み手段と、
前記データ書き込み手段によりデータが書き込まれる物理ページに、当該物理ページが含まれる物理ブロック内の先頭の物理ページから当該物理ページまでのそれぞれの物理ページに対応する論理ページを示す情報を先頭の物理ページから当該物理ページに向かう配列順序で並べた情報であるページ管理情報を書き込むページ管理情報書き込み手段と、
前記ページ管理情報に基づいてそれぞれの論理ページに対応する最新のデータが書き込まれている物理ページを特定するページ特定手段とを備え、
前記データ書き込み手段は、前記データ保持手段に保持されているデータを、当該データに対応する論理ブロックが割り当てられている物理ブロックに前記書き込み順序で書き込んでいき、
前記ページ特定手段は、前記ページ管理情報を参照するときに、物理ブロックに書き込まれている前記ページ管理情報のうち、前記書き込み順序が後の物理ページに書き込まれている前記ページ管理情報を優先し、更に、前記ページ管理情報に同じ論理ページを示す複数個の情報が含まれているときには、前記配列順序が後の情報を優先する。
本発明の第1の側面に従うメモリコントローラは、
物理ブロック内の物理ページに書き込まれているデータを、当該物理ブロックと同じ論理ブロックが割り当てられている当該物理ブロックと異なる物理ブロック内の物理ページに転送するデータ転送手段を更に備え、
前記データ転送手段により転送されるデータは、前記ページ特定手段により特定された物理ページ、に書き込まれているデータであり、
前記ページ管理情報書き込み手段は、前記データ転送手段によりデータが転送されたときに、転送先の物理ページに前記ページ管理情報を書き込むように構成されていてもよい。
物理ブロック内の物理ページに書き込まれているデータを、当該物理ブロックと同じ論理ブロックが割り当てられている当該物理ブロックと異なる物理ブロック内の物理ページに転送するデータ転送手段を更に備え、
前記データ転送手段により転送されるデータは、前記ページ特定手段により特定された物理ページ、に書き込まれているデータであり、
前記ページ管理情報書き込み手段は、前記データ転送手段によりデータが転送されたときに、転送先の物理ページに前記ページ管理情報を書き込むように構成されていてもよい。
本発明の第1の側面に従うメモリコントローラは、
ページ管理情報書き込み手段は、前記データ転送手段よりデータが転送されたときに、転送先の物理ブロックの先頭物理ページに、転送元の最終書き込み済み物理ページに書き込まれている前記ページ管理情報を、当該転送先の物理ブロックにおける前記ページ管理情報と合わせて書き込むように構成されていてもよい。
ページ管理情報書き込み手段は、前記データ転送手段よりデータが転送されたときに、転送先の物理ブロックの先頭物理ページに、転送元の最終書き込み済み物理ページに書き込まれている前記ページ管理情報を、当該転送先の物理ブロックにおける前記ページ管理情報と合わせて書き込むように構成されていてもよい。
本発明の第1の側面に従うメモリコントローラは、
物理ブロック内の最終書き込み済み物理ページに書き込まれている前記ページ管理情報に基づいて、当該物理ブロックに対応する論理ブロック内の論理ページに対応するデータの書き換え回数を特定する書き換え回数特定手段を更に備え、
前記書き換え回数特定手段は、前記データ保持手段に保持されているデータの書き換え回数を特定し、
前記データ書き込み手段は、前記データ保持手段に保持されているデータを物理ブロック内の物理ページに書き込む前に、前記書き換え回数特定手段により特定された当該データの書き換え回数が所定の回数以上か否かを判断し、当該データの書き換え回数が所定の回数以上の場合は、当該データの書き込みを行わず、前記データ保持手段に保持し続けるように構成されていてもよい。
物理ブロック内の最終書き込み済み物理ページに書き込まれている前記ページ管理情報に基づいて、当該物理ブロックに対応する論理ブロック内の論理ページに対応するデータの書き換え回数を特定する書き換え回数特定手段を更に備え、
前記書き換え回数特定手段は、前記データ保持手段に保持されているデータの書き換え回数を特定し、
前記データ書き込み手段は、前記データ保持手段に保持されているデータを物理ブロック内の物理ページに書き込む前に、前記書き換え回数特定手段により特定された当該データの書き換え回数が所定の回数以上か否かを判断し、当該データの書き換え回数が所定の回数以上の場合は、当該データの書き込みを行わず、前記データ保持手段に保持し続けるように構成されていてもよい。
本発明の第2の側面に従うフラッシュメモリシステムは、
本発明の第1の側面に従うメモリコントローラと、
このメモリコントローラにより制御される1個又は複数個の不揮発性メモリを備える。
本発明の第1の側面に従うメモリコントローラと、
このメモリコントローラにより制御される1個又は複数個の不揮発性メモリを備える。
本発明の第3の側面に従う不揮発性メモリの制御方法は、
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御する不揮発性メモリの制御方法であって、
ホストシステムから与えられるデータをデータ保持手段に保持するデータ保持ステップと、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理するブロック管理ステップと、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、論理ページ毎のデータを書き込んでいくデータ書き込みステップと、
前記データ書き込みステップによりデータが書き込まれる物理ページに、当該物理ページが含まれる物理ブロック内の先頭の物理ページから当該物理ページまでのそれぞれの物理ページに対応する論理ページを示す情報を先頭の物理ページから当該物理ページに向かう配列順序で並べた情報であるページ管理情報を書き込むページ管理情報書き込みステップと、
前記ページ管理情報に基づいてそれぞれの論理ページに対応する最新のデータが書き込まれている物理ページを特定するページ特定ステップとを備え、
前記データ書き込みステップでは、前記データ保持手段に保持されているデータを、当該データに対応する論理ブロックが割り当てられている物理ブロックに前記書き込み順序で書き込んでいき、
前記ページ特定ステップでは、物理ブロックに書き込まれている前記ページ管理情報のうち、前記書き込み順序が後の物理ページに書き込まれている前記ページ管理情報を優先的に参照し、更に、前記ページ管理情報に同じ論理ページを示す複数個の情報が含まれているときに、前記配列順序が後の情報を優先することを特徴とする。
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御する不揮発性メモリの制御方法であって、
ホストシステムから与えられるデータをデータ保持手段に保持するデータ保持ステップと、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理するブロック管理ステップと、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、論理ページ毎のデータを書き込んでいくデータ書き込みステップと、
前記データ書き込みステップによりデータが書き込まれる物理ページに、当該物理ページが含まれる物理ブロック内の先頭の物理ページから当該物理ページまでのそれぞれの物理ページに対応する論理ページを示す情報を先頭の物理ページから当該物理ページに向かう配列順序で並べた情報であるページ管理情報を書き込むページ管理情報書き込みステップと、
前記ページ管理情報に基づいてそれぞれの論理ページに対応する最新のデータが書き込まれている物理ページを特定するページ特定ステップとを備え、
前記データ書き込みステップでは、前記データ保持手段に保持されているデータを、当該データに対応する論理ブロックが割り当てられている物理ブロックに前記書き込み順序で書き込んでいき、
前記ページ特定ステップでは、物理ブロックに書き込まれている前記ページ管理情報のうち、前記書き込み順序が後の物理ページに書き込まれている前記ページ管理情報を優先的に参照し、更に、前記ページ管理情報に同じ論理ページを示す複数個の情報が含まれているときに、前記配列順序が後の情報を優先することを特徴とする。
本発明の第3の側面に従う不揮発性メモリの制御方法は、
物理ブロック内の物理ページに書き込まれているデータを、当該物理ブロックと同じ論理ブロックが割り当てられている当該物理ブロックと異なる物理ブロック内の物理ページに転送するデータ転送ステップを更に備え、
前記データ転送ステップにより転送されるデータは、前記ページ特定ステップにより特定された物理ページに書き込まれているデータであり、
ページ管理情報書き込みステップでは、前記データ転送ステップによりデータが転送されたときに、転送先の物理ページに前記ページ管理情報が書き込まれるように制御してもよい。
物理ブロック内の物理ページに書き込まれているデータを、当該物理ブロックと同じ論理ブロックが割り当てられている当該物理ブロックと異なる物理ブロック内の物理ページに転送するデータ転送ステップを更に備え、
前記データ転送ステップにより転送されるデータは、前記ページ特定ステップにより特定された物理ページに書き込まれているデータであり、
ページ管理情報書き込みステップでは、前記データ転送ステップによりデータが転送されたときに、転送先の物理ページに前記ページ管理情報が書き込まれるように制御してもよい。
本発明の第3の側面に従う不揮発性メモリの制御方法は、
ページ管理情報書き込みステップでは、前記データ転送ステップによりデータが転送されたときに、転送先の物理ブロックの先頭物理ページに、転送元の最終書き込み済み物理ページに書き込まれている前記ページ管理情報を、当該転送先の物理ブロックにおける前記ページ管理情報と合わせて書き込むように制御してもよい。
ページ管理情報書き込みステップでは、前記データ転送ステップによりデータが転送されたときに、転送先の物理ブロックの先頭物理ページに、転送元の最終書き込み済み物理ページに書き込まれている前記ページ管理情報を、当該転送先の物理ブロックにおける前記ページ管理情報と合わせて書き込むように制御してもよい。
本発明の第3の側面に従う不揮発性メモリの制御方法は、
物理ブロック内の最終書き込み済み物理ページに書き込まれている前記ページ管理情報に基づいて、当該物理ブロックに対応する論理ブロック内の論理ページに対応するデータの書き換え回数を特定する書き換え回数特定ステップを更に備え、
前記書き換え回数特定ステップでは、前記データ保持手段に保持されているデータの書き換え回数を特定し、
前記データ書き込みステップでは、前記データ保持手段に保持されているデータを物理ブロック内の物理ページに書き込む前に、前記書き換え回数特定ステップにより特定された当該データの書き換え回数が所定の回数以上か否かを判断し、当該データの書き換え回数が所定の回数以上の場合は、当該データの書き込みを行わず、前記データ保持手段に保持し続けるように制御してもよい。
物理ブロック内の最終書き込み済み物理ページに書き込まれている前記ページ管理情報に基づいて、当該物理ブロックに対応する論理ブロック内の論理ページに対応するデータの書き換え回数を特定する書き換え回数特定ステップを更に備え、
前記書き換え回数特定ステップでは、前記データ保持手段に保持されているデータの書き換え回数を特定し、
前記データ書き込みステップでは、前記データ保持手段に保持されているデータを物理ブロック内の物理ページに書き込む前に、前記書き換え回数特定ステップにより特定された当該データの書き換え回数が所定の回数以上か否かを判断し、当該データの書き換え回数が所定の回数以上の場合は、当該データの書き込みを行わず、前記データ保持手段に保持し続けるように制御してもよい。
本発明の第1の側面に従うメモリコントローラ、本発明の第2の側面に従うフラッシュメモリシステム又は本発明の第3の側面に従う不揮発性メモリの制御方法において、物理ブロックを仮想ブロックと置き換え、物理ページを仮想ページと置き換えてもよい。その場合、それぞれが異なる不揮発性メモリに含まれる複数個の物理ブロックが仮想ブロックとして管理され、当該仮想ブロックを構成する複数個の物理ブロックにそれぞれ含まれる複数個の物理ページが仮想ページとして管理される。
本発明によれば、物理ブロック内の物理ページの冗長領域に、その物理ブロック内のそれぞれの物理ページに対応する論理ページを示す情報を物理ページに付けられた通し番号の順序で並べた情報であるページ管理情報を書き込むようにしたので、このページ管理情報に基づいて、有効なデータが格納されている物理ページと無効なデータが格納されている物理ページを特定することができる。更に、このページ管理情報に基づいて、それぞれの論理ページに対応するデータの書き換え頻度を把握することができる。
図1に示されているように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3とで構成されている。メモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。
フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
メモリコントローラ3は、図1に示されているように、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAM8と、バッファメモリ9と、フラッシュメモリインターフェースブロック10と、誤り訂正ブロック11と、ROM(Read Only Memory)12とから構成される。
以下、各機能ブロックについて説明する。
以下、各機能ブロックについて説明する。
ホストインターフェースブロック7は、ホストシステム4との間で行われるデータ、アドレス情報、ステータス情報、外部コマンド等の送受信を制御する。つまり、フラッシュメモリシステム1は、ホストインターフェースブロック7を介して、ホストシステム4から供給されるデータ等を取り込む。また、フラッシュメモリシステム1は、ホストインターフェースブロック7を介して、データ等をホストシステム4に供給する。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。
ホストインターフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えている。コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタR2には、書き込むデータ又は読み出すデータのセクタ数が書き込まれる。LBAレジスタR3には、書き込み又は読み出しを開始する論理セクタに対応するLBA(Logical Block Address)が書き込まれる。LBAは、512バイトの容量を持った論理セクタに割り当てられたアドレスである。
このLBAとフラッシュメモリ2内の記憶領域の対応関係は、論理ページ単位で管理されている。
この論理ページは、複数個の論理セクタで構成されている。更に、複数個の論理ページで論理ブロックが構成される。論理ブロックには、0から始まる通し番号が付けられている。以下、この通し番号を論理ブロック番号という。また、論理ページには、それぞれの論理ブロック内においてから始まる通し番号が付けられている。以下、この通し番号を論理ページ番号という。
SRAM(Static Random Access Memory)8は、フラッシュメモリ2の制御に必要な情報を一時的に格納する揮発性メモリである。フラッシュメモリ2にアクセスするために必要な各種のテーブルは、SRAM8に保持され、SRAM8上で更新される。フラッシュメモリ2にアクセスするために必要なテーブルが、SRAM8に保持されていない場合は、そのテーブルはSRAM8上で作成される。但し、そのテーブルが、フラッシュメモリ2に格納されている場合は、格納されているテーブルがフラッシュメモリ2から読み出され、SRAM8に保持される。上記各種テーブルには、アドレス変換テーブル、検索テーブル、不良ブロックテーブル等が含まれる。アドレス変換テーブルは、論理ブロックと物理ブロックの対応関係を管理するためのテーブルである。検索テーブルは、空きブロックを検索するためのテーブルである。不良ブロックテーブルは不良ブロックを管理するためのテーブルである。
バッファメモリ9は、フラッシュメモリ2から読み出したデータ、又はフラッシュメモリ2に書き込むデータを、一時的に保持する揮発性メモリである。
フラッシュメモリインターフェースブロック10は、フラッシュメモリ2との間で行われるデータ、アドレス情報、ステータス情報、内部コマンド等の送受信を制御する。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。
誤り訂正ブロック11は、フラッシュメモリ2にデータを書き込むときに、そのデータをBCH符号の誤り訂正符号(ECC:Error Correcting Code)に符号化し、フラッシュメモリ2から符号化されたデータを読み出したときに、その符号化されたデータを復号化する。つまり、フラッシュメモリ2に書き込まれるデータは、冗長ビットが付加されたBCH符号に符号化されてフラッシュメモリ2に書き込まれ、その符号化されたデータ(冗長ビットが付加されたデータ)は、読み出されたときに復号化される。この復号化では、符号化の際に付加される冗長ビットのビット数に応じて、所定のビット数までのビットエラーが訂正される。更に、誤り訂正ブロック11は、このBCH符号に基づいた訂正機能に加えて、当該訂正機能の訂正能力を超えるビット数のビットエラーが発生したことを検出する検出機能を備えている。
ROM12は、フラッシュメモリ2を制御するために必要なファームウェアを格納するための不揮発性の記憶素子である。尚、フラッシュメモリシステム1を起動させるために必要な最小限のファームウェアだけをROM12に格納し、その他のファームウェアをフラッシュメモリ2に格納するようにしてもよい。
マイクロプロセッサ6は、ROM12又はフラッシュメモリ2から、ファームウェアを読み込み、ファームウェアに従って動作する。メモリコントローラ3に含まれる機能ブロックは、マイクロプロセッサ6により制御される。
フラッシュメモリ2は、NAND型フラッシュメモリであり、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。尚、フラッシュメモリには、SLC(Single Level Cell)タイプのメモリセルで構成されたものと、MLC(Multi Level Cell)タイプのメモリセルで構成されたものがある。
NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック(物理ブロック)単位で行われる。それぞれの物理ブロックは、複数のページ(物理ページ)で構成され、それぞれの物理ページは、ユーザ領域と冗長領域で構成されている。図2にONFI(Open NAND Flash Interface http://onfi.org/specifications/)で規定されるフラッシュメモリの規格を示す。この例では物理ページは、8192バイト(16セクタ)のユーザ領域21と、448バイトの冗長領域22とで構成されている。ユーザ領域21は、ホストシステム4から与えられるデータを主に格納するための領域であり、冗長領域22は、論理アドレス情報、ブロックステータス(フラグ)情報、ページ管理情報等の付加データを主に格納するための領域である。
論理アドレス情報は、当該情報に係る物理ブロックと対応する論理ブロックを特定するための情報である。ブロックステータス(フラグ)は、当該情報に係る物理ブロックが、不良ブロック(正常にデータの書き込み等を行うことができない物理ブロック)であるか否かを示すフラグである。尚、不良ブロックには、初期不良の不良ブロックと後発不良の不良ブロックがある。初期不良の不良ブロックは、出荷前に検出された不良ブロックである。後発不良の不良ブロックは、使用中に生じた不良ブロックである。初期不良の物理ブロックについては、不良ブロックであることを示すブロックステータス(フラグ)が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス(フラグ)を、ユーザ領域に書き込んでいる製造メーカもある。後発性不良ブロックの判断基準は、フラッシュメモリシステムの設計時に定められ、メモリコントローラ内に実装される。ページ管理情報は、物理ブロック内のそれぞれの物理ページに格納されているデータに対応する論理ページを示す情報である。
次に、アドレス変換の手順と書き込みの制御方法について説明する。
ホストシステム4は、アクセス対象の論理セクタを指定するために、アクセス対象の論理セクタに対応するLBAをメモリコントローラ3に送信する。メモリコントローラ3は、このLBAに基づいて、アクセス対象の論理セクタが属する論理ブロック及び論理ページを特定する。1個の論理ページがm個の論理セクタで構成され、1個の論理ブロックがn個の論理ページで構成されている場合、LBAを1個の論理ブロックに含まれる論理セクタの個数(m×n)で割った商がアクセス対象の論理セクタが属する論理ブロックの論理ブロック番号に対応する。更に、この除算における剰余を1個の論理ページに含まれる論理セクタの個数(m)で割った商が論理ページ番号に対応する。通常、論理ブロックのサイズは、フラッシュメモリ2の消去単位である物理ブロックのサイズ、あるいは、物理ブロックを複数個集めたサイズに一致させることが多いが、メモリコントローラ3によっては、物理ブロックを構成する複数の物理ページの内、一部の物理ページを冗長的な目的で使用するため、その分を差し引いたサイズとなることもある。
さらに、論理ブロック番号から、フラッシュメモリ2の物理ブロックアドレスにアドレス変換する方法を説明する。一般的には、起動時にフラッシュメモリ2の冗長領域に格納されている論理アドレス情報を読み出し、コントローラ3内のSRAM8に、論理ブロック番号順に、各々の物理ブロック番号を書き込むことでアドレス変換テーブルを作成する。ブロックレベルのアドレス変換については、フラッシュメモリ2の冗長領域22を使用せずに外部に設けた不揮発性メモリや、フラッシュメモリ2のユーザ領域21に変換テーブルを格納する方法などでも可能である。
ホストシステム4から受信したLBAから求めた論理ブロック番号に対応する物理ブロック番号を、アドレス変換テーブルによって特定する。フラッシュメモリ2の物理ブロック内の物理ページにデータを書き込むときには、アドレスが小さい物理ページから順番に書き込まなければならない。従って、物理ブロック内の物理ページにデータを書き込むときには、その物理ブロック内の空きページのうちでアドレスが一番小さい物理ページのアドレスを特定しなければならない。以下、この物理ページを書き込み開始ページと呼ぶ。また、物理ページのアドレスである物理ページアドレスは、物理ブロック番号に対応する部分と物理ブロック内の物理ページに付けた通し番号である物理ページ番号に対応する部分とで構成されている。つまり、物理ブロック番号の下位側に物理ページ番号を連結すれば物理ページアドレスになる。物理ブロック番号のビット数は、物理ブロックの個数に応じて決まり、物理ページ番号のビット数は、1個の物理ブロックに含まれる物理ページの個数に応じて決まる。
この書き込み開始ページは、各物理ページの冗長領域22を参照していくことにより特定することができる。また、書き込み開始ページの物理ページ番号をテーブルで管理してもよい。このテーブルを、アドレス変換テーブルと共に管理してもよい。このテーブルも、アドレス変換テーブルと同様に外部の不揮発性メモリ等に格納してもよい。
ここでは、図3を使用して、64GBの容量を持つフラッシュメモリシステム1を例に、メモリコントローラが、ホストシステム4から受信したLBAから物理ブロック番号と書き込み開始ページの物理ページ番号を取得する仕組みを説明する。本例では最大のLBAが#134217727であるが、このLBAの最大値はフラッシュメモリシステム1としての容量に対応し、フラッシュメモリシステム1に搭載されているフラッシュメモリ2の容量とは異なる。尚、フラッシュメモリシステム1の容量は、搭載されているフラッシュメモリ2の容量の範囲内で適宜設定することができる。フラッシュメモリシステム1の容量と搭載されているフラッシュメモリ2の容量の差分は、将来の不良ブロックの発生やホストシステムからの書き込み要求に対するバッファ機能として使用される容量等を考慮して決められる。ホストシステムには、フラッシュメモリシステムのLBAの全空間が、LBA#0からLBA#134217727までのアドレス空間として認識されている。また、1個の論理ブロックのサイズは1024セクタになっている(1個の論理ブロックに含まれる論理セクタの個数は1024個になっている)。ここでは、ホストシステム4からLBA#1024を受信した場合を説明する。LBAの値である1024を、1個の論理ブロックのサイズである1024で割ることにより、LBA#1024の論理セクタが含まれる論理ブロックの論理ブロック番号を求めることができる。LBAの値である1024を、1個の論理ブロックのサイズである1024で割った商は1なので、LBA#1024の論理セクタは、論理ブロック番号#1の論理ブロックに含まれることが分かる。さらに、SRAM8上に生成されたアドレス変換テーブルによって、論理ブロック番号#1に対応する物理ブロック番号と、論理ブロック番号#1の論理ブロックに対応する物理ブロック内の書き込み開始ページの物理ページ番号が特定される。このアドレス変換テーブルは、論理ブロック番号の順番で、それぞれ論理ブロックに対応する物理ブロックの物理ブロック番号とこの物理ブロック内の書き込み開始ページの物理ページ番号が配列されている。従って、このアドレス変換テーブルの論理ブロック番号#1に対応する領域から、物理ブロック番号#1961と書き込み開始ページの物理ページ番号#63を取得する。この物理ブロック番号と書き込み開始ページの物理ページ番号から、論理ブロック番号#1が物理ブロック番号#1961に対応し、物理ブロック番号#1961の物理ブロック内の書き込み開始ページが物理ページ番号#63の物理ページに対応することが分かる。
次に、本実施形態に係るメモリコントローラ3で行われる処理について説明する。
メモリコントローラ3は物理ブロック番号と書き込み開始ページの物理ページ番号を求めた後、さらに書き込むデータに対応する論理ページ番号を算出する。論理ページ番号とは、論理ブロック内の論理ページに付けられた通し番号であり、LBAを論理ブロックのサイズ(セクタ数)で割り、その剰余を論理ページのサイズ(セクタ数)で除算した商に一致する。
メモリコントローラ3は、物理ページのユーザ領域にデータを書き込む際に、その物理ページの冗長領域22にページ管理情報を書き込む。このページ管理情報は、物理ブロック内の各物理ページに格納されたデータに対応する論理ページ番号が、物理ページ番号の順番で連結された情報である。つまり、物理ページ番号#0の物理ページに書き込まれるページ管理情報は、物理ページ番号#0の物理ページに格納されるデータに対応する論理ページ番号になる。物理ページ番号#1の物理ページに書き込まれるページ管理情報は、物理ページ番号#0の物理ページに格納されたデータに対応する論理ページ番号と、物理ページ番号#1の物理ページに格納されるデータに対応する論理ページ番号が、この順番で連結された情報になる。物理ページ番号#2の物理ページに書き込まれるページ管理情報は、物理ページ番号#0の物理ページに格納されたデータに対応する論理ページ番号と、物理ページ番号#1の物理ページに格納されたデータに対応する論理ページ番号と、物理ページ番号#2の物理ページに格納されるデータに対応する論理ページ番号が、この順番で連結された情報になる。以下同様に、以降の物理ページに書き込まれるページ管理情報は、物理ページ番号#0の物理ページからそのページ管理情報が書き込まれる物理ページの1つ前の物理ページまでの各物理ページに格納されたデータに対応する論理ページ番号と、そのページ管理情報が書き込まれる物理ページに格納されるデータに対応する論理ページ番号が連結された情報になる。つまり、それぞれの物理ページに書き込まれるページ管理情報は、その物理ページの1つ前の物理ページに格納されているページ管理情報に、その物理ページに格納されるデータに対応する論理ページ番号を連結した情報になる。なお、本実施の形態のフラッシュメモリ2は、前述のONFI規格に規定されているフラッシュメモリを想定しているので、物理ブロックあたりの物理ページの数は、図3に示したように64ページとしている。また、物理ページのサイズは16セクタとしている。従って、物理ブロックのサイズは、64ページ×16セクタ=1024セクタとしている。この物理ブロックに、1024個の論理セクタが含まれる論理ブロックが割り当てられる。この論理ブロック内では、16個の論理セクタが1個の論理ページとして取り扱われる。つまり、この論理ブロックは、64個の論理ページで構成され、それぞれの論理ページは、16個の論理セクタで構成されている。そして、1個の物理ページには、1個の論理ページに対応するデータが格納される。
物理ページ番号#0−#63の64個の物理ページと論理ページ番号#0−#63の64個の論理ページとの対応関係は、ページ管理情報に基づいて管理される。論理ページ番号#0−#63は、それぞれ6ビットで表現することができるので、ページ管理情報のサイズは、最大で、6ビット×64ページ=384ビット、つまり、48バイトになる。
次に、ユーザ領域に書き込まれるデータと冗長領域に書き込まれるページ管理情報との関係を、図面を参照して説明する。尚、図面では、物理ページ番号#nの物理ページを“物理ページ#n”と表記し、論理ページ番号#nの論理ページを“論理ページ#n”と表記している。全くデータが書き込まれていない状態では、フラッシュメモリ2の物理ブロックは図4に示すとおり、全ての領域が消去状態になっている。図5は、物理ページ番号#0の物理ページに論理ページ番号#4に対応するデータを書き込んだ状態を示している。
さらに、図6は、以下の順番で、データ書き込みが行われた状態を示している。物理ページ番号#1の物理ページに論理ページ番号#9に対応するデータを書き込み、物理ページ番号#2の物理ページに論理ページ番号#20に対応するデータを書き込み、物理ページ番号#3の物理ページに論理ページ番号#25に対応するデータを書き込み、物理ページ番号#4の物理ページに論理ページ番号#4に対応するデータを書き込む。
ここで、物理ページ番号#0の物理ページ及び物理ページ番号#4の物理ページには、論理ページ番号#4に対応するデータが格納されている。つまり、物理ページ番号#4の物理ページに格納されているデータは、物理ページ番号#0の物理ページに格納されているデータの書き換えデータになっている。本実施形態は、このように、ひとつの物理ブロック内の物理ページに、同一の論理ページに対応する書き換えデータを累積的に書き込む方式において、もっとも有効になる。
図7は、この物理ブロックに対して、更に、データ書き込みが行われ、物理ページ番号#63の物理ページまでデータが書き込まれた状態を示している。累積的に書き込む方式では、データ消去が行われない限り、書き換えデータが書き込まれる毎に、そのデータと同じ論理ページに対応する無効データが増加する。つまり、同一の論理ページに対応するデータが複数個の物理ページに格納されている場合には、そのうちの1個の物理ページに格納されているデータだけが有効なデータなので、書き換えデータが物理ページに書き込まれる毎に、無効化したデータが格納されている物理ページが1個増加する。無効化したデータが格納されている物理ページが増加した場合、それらのデータを消去する必要がある。しかしながら、このデータ消去は、物理ブロック単位で行わなければならない。従って、無効化したデータを消去するときには、それらのデータが格納されている物理ブロック内の有効なデータを別の物理ブロックに退避させなければならない。つまり、データ消去の対象の物理ブロックに格納されている全ての有効なデータを別の物理ブロックに転送するブロック間転送が完了した後にデータ消去が実行される。
ここでは、図7の状態の物理ブロックがデータ消去の対象になったときのブロック間転送について説明する。なお、ブロック間転送は、ホストシステム4からの書き込みコマンド処理実行中に実施しても良いし、あるいは、ホストシステム4からのコマンドを処理していないアイドル期間中に実施しても良いし、あるいは、起動時やリセットなどの処理中に実施しても良い。
メモリコントローラ3は、ブロック間転送に先立って、転送元の物理ブロック(データ消去の対象の物理ブロック)内のデータが書き込まれている物理ページのうちで物理ページ番号が一番大きい物理ページからページ管理情報を読み出す。以下、物理ブロック内のデータが書き込まれている物理ページのうちで物理ページ番号が一番大きい物理ページを、最終書き込み済み物理ページと呼ぶ。つまり、最終書き込み済み物理ページの次の物理ページ(物理ページ番号が1つ大きい物理ページ)が、書き込み開始ページに対応する。図7に示された物理ブロックのように物理ページ番号#63の物理ページまでデータが書き込まれている場合、メモリコントローラ3は、物理ページ番号#63の物理ページからページ管理情報を読み出す。読み出されたページ管理情報に基づいて、物理ブロック内のそれぞれの物理ページに格納されているデータが、有効なデータであるか、又は無効化したデータであるかを判別することができる。さらに、このページ管理情報に基づいて、この物理ブロックに書き込まれているデータの書き換えの経緯がわかる。図8に示す様に、例えば、論理ページ番号#4のデータは、この物理ブロック内で3回書き換えられている。現実のホストシステム4のアクセスでは、この様なことが発生する。特に、ファイルデータの格納領域を管理するためのデータ、例えば、リンク形式で格納領域を管理するテーブルに関するデータや、ファイル単位のタグ情報であるディレクトリに関するデータは、もっとも頻繁に書き換えられる。あるいは、ファイルデータであっても、頻繁に書き換え頻度が発生する様なアプリケーションが存在する。
メモリコントローラ3は、ページ管理情報に基づいて有効なデータであると判断されたデータを転送元の物理ブロックから読み出し、読み出したデータを転送先の物理ブロックに書き込む。例えば、転送元の物理ブロック内の物理ページ番号#63の物理ページに格納されている論理ページ番号#5に対応するデータを読み出し、このデータを転送先の物理ブロック内の物理ページ番号#0の物理ページに書き込む。この際、転送先の物理ブロック内の物理ページ番号#0の物理ページの冗長領域には、ページ管理情報として論理ページ番号#5が書き込まれる。転送元の物理ブロック内の物理ページ番号#62の物理ページに格納されている論理ページ番号#4に対応するデータを読み出し、このデータを転送先の物理ブロック内の物理ページ番号#1の物理ページに書き込む。この際、転送先の物理ブロック内の物理ページ番号#1の物理ページの冗長領域には、ページ管理情報として論理ページ番号#5に論理ページ番号#4を連結したものが書き込まれる。転送元の物理ブロック内の物理ページ番号#61の物理ページに格納されている論理ページ番号#25に対応するデータを読み出し、このデータを転送先の物理ブロック内の物理ページ番号#2の物理ページに書き込む。この際、転送先の物理ブロック内の物理ページ番号#2の物理ページの冗長領域には、ページ管理情報として論理ページ番号#5、論理ページ番号#4及び論理ページ番号#25をこの順番で連結したものが書き込まれる。尚、物理ページ番号#0の物理ページの冗長領域に書き込まれるページ管理情報に含まれる論理ページ番号は1個だけなので、このページ管理情報に転送元の物理ブロックの最終的なページ管理情報を連結して書き込むようにしてもよい。このブロック間転送を実施した後の転送先の物理ブロックの状態を図9に示す。なお、最終書き込み済み物理ページに格納されているデータは必ず有効なデータであるので、このデータは必ずブロック間転送の対象データになる。したがって、この物理ページの冗長領域からページ管理情報を読み出すとともに、この物理ページのユーザ領域からユーザデータを読み出しておき、ブロック間転送をこの物理ページから先頭物理ページに向かう方向に実行すると、1回の読みだしセットアップ時間が減るので、ブロック間転送の効率がさらに改善される。
ここで、フラッシュメモリを用いたフラッシュメモリシステムにおける課題について考察する。
現在、もっとも使用されているフラッシュメモリの書き換え許容回数は5000回、あるいはそれ以下にまで低下している。さらに、ひとつの物理ブロックの記憶容量が1024セクタ、あるいはそれ以上になっている。従って、フラッシュメモリシステムにおいて、製品寿命設計は必須の要件となっている。
このような書き換え回数に制限のあるフラッシュメモリ2を効率的に使用するためには、書き換え頻度の多いデータは、フラッシュメモリ2内ではなくバッファメモリ9内で更新することが望ましい。そこで、書き換え頻度の多いデータがバッファメモリ9内で更新されるようにする方法について説明する。
ホストシステム4からのデータ書き込みの際に、図1に記載したフラッシュメモリシステム1は、ホストシステム4から書き込みコマンドとそれに伴うアドレス情報、およびユーザデータを受信する。メモリコントローラ3は、受信したユーザデータをバッファ9内に格納する。さらに、受信したアドレス情報から、前述の方法に従って、論理ブロック番号と論理ページ番号を算出する。更に、アドレス変換テーブルによって、この論理ブロック番号に対応する物理ブロック番号とこの物理ブロック番号の物理ブロックにおける最終書き込み済み物理ページの物理ページ番号を特定する。尚、最終書き込み済み物理ページの物理ページ番号は、アドレス変換テーブルに保持されている書き込み開始ページの物理ページ番号に基づいて特定される。このようにして、バッファ9に格納されたユーザデータに対応する論理ブロックが割り当てられている物理ブロック及びこの物理ブロック内の最終書き込み済み物理ページが特定される。
次に、メモリコントローラ3は、この物理ブロックの最終書き込み済み物理ページのページ管理情報を読み出す。そして、このページ管理情報に基づいて、ホストシステム4から受信したユーザデータに対応する論理ページの書き換え回数を特定する。この論理ページ毎の書き換え回数は、ページ管理情報に含まれるこの論理ページの論理ページ番号の個数に対応する。このように、ページ管理情報に基づいて、その物理ブロック内に書き込まれている各論理ページの書き換えの履歴を得ることができる。現在割り当てられている物理ブロックの先頭の物理ページに、同じ論理ブロックが割り当てられていた1世代前の物理ブロックのページ管理情報をコピーしていれば、最終書き込み済み物理ページに加えて、先頭の物理ページを読み出すことで、2世代にわたる当該論理ブロック内の各論理ページの書き換え履歴を得ることもできる。
ここで、書き換え回数に閾値を定めておき、ホストシステム4から受信したユーザデータに対応する論理ページの書き換え回数が、その閾値よりも大きいときはフラッシュメモリ2に書き込まず、バッファメモリ9に保持する。例えば、ある物理ブロック内の論理ページ毎の書き換え頻度が図10に示す様な状態であったとする。その状態で書き込みコマンドとともに受信したLBAから変換した物理ブロック番号が本物理ブロックに一致し、さらにその論理ページ番号が、#53や#37、あるいは、#52と一致した場合、バッファ9にデータを維持し、フラッシュメモリ2にはデータを書き込まない様な制御が可能である。このようにすることより、書き換え頻度の高いユーザデータがバッファメモリ9内で書き換えられる確率が高くなる。その結果、パフォーマンスが改善されるだけでなく、フラッシュメモリへの無駄な書き換えが抑制される。
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々の変更を加え得ることは勿論である。
例えば、ページ管理情報に対して、誤り訂正符号を付加して、より信頼性を高めても良い。また、上記の実施の形態では8192バイトのページサイズ、448バイトの冗長領域サイズ、64ページのブロックサイズのフラッシュメモリを使用したが、それ以外の構造のフラッシュメモリでも本発明の適用は可能である。あるいは、ブロック間転送時に論理ページ番号の順番に並び替えて転送先の物理ブロックに書き込むことで読み出し時のシーケンシャル性能が改善することができる。あるいは、上記の実施の形態では物理ページにページ管理情報を書き込む際に直前の物理ページに格納されているページ管理情報を読み出し、読み出されたページ管理情報に当該物理ページに対応する論理ページを付加したものを当該物理ページに書き込む方法を説明したが、書き込み頻度の高い論理ブロックについては、メモリコントローラ内の揮発性メモリに、最新のページ管理情報を格納することでパフォーマンスを改善することも可能である。
さらに、複数のフラッシュメモリをアクセスするために複数のチャンネルのバスを備えたフラッシュメモリシステムにおいても本発明は有効である。各チャンネルに接続された複数のフラッシュメモリから、それぞれ選択された複数の物理ブロックを、ひとつの仮想ブロックとして定義する。さらにその仮想ブロックを構成する複数の物理ブロックにそれぞれ含まれる複数の物理ページを、ひとつの仮想ページと定義する。この様な仮想空間に対しても本発明は適用可能である。その場合、ホストシステムのLBA空間からフラッシュメモリ内の物理アドレスへのアドレス変換は、仮想ブロックの単位で行われる。つまり、ひとつの論理ブロックはひとつの仮想ブロックに割り当てられ、ひとつの論理ページはひとつの仮想ページに割り当てられる。従って、論理ページのサイズは、仮想ページのユーザデータ領域の合計値に一致する。この場合、仮想ページ内の冗長領域のサイズはひとつの仮想ページに含まれる物理ページのページ数分だけ増加するので、その増加した領域に2重、3重にページ管理情報を書き込んでもよい。また、その増加した領域に、エラー検出・訂正符合などを書き込むことで、信頼性を向上させることもできる。
本発明は、種々のデジタル情報を取り扱うパーソナルコンピュータやデジタルスチルカメラ等の電子機器に装着又内蔵される情報記憶(記録)装置に適用することができる。
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ、9…バッファメモリ
Claims (11)
- ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御するメモリコントローラであって、
ホストシステムから与えられるデータを保持するデータ保持手段と、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理する対応関係管理手段と、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、論理ページ毎のデータを書き込んでいくデータ書き込み手段と、
前記データ書き込み手段によりデータが書き込まれる物理ページに、当該物理ページが含まれる物理ブロック内の先頭の物理ページから当該物理ページまでのそれぞれの物理ページに対応する論理ページを示す情報を先頭の物理ページから当該物理ページに向かう配列順序で並べた情報であるページ管理情報を書き込むページ管理情報書き込み手段と、
前記ページ管理情報に基づいてそれぞれの論理ページに対応する最新のデータが書き込まれている物理ページを特定するページ特定手段とを備え、
前記データ書き込み手段は、前記データ保持手段に保持されているデータを、当該データに対応する論理ブロックが割り当てられている物理ブロックに前記書き込み順序で書き込んでいき、
前記ページ特定手段は、前記ページ管理情報を参照するときに、物理ブロックに書き込まれている前記ページ管理情報のうち、前記書き込み順序が後の物理ページに書き込まれている前記ページ管理情報を優先し、更に、前記ページ管理情報に同じ論理ページを示す複数個の情報が含まれているときには、前記配列順序が後の情報を優先することを特徴とするメモリコントローラ。 - ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御するメモリコントローラであって、
ホストシステムから与えられるデータを保持するデータ保持手段と、
それぞれが異なる不揮発性メモリに含まれる複数個の物理ブロックを仮想ブロックとして管理する仮想ブロック管理手段と、
前記仮想ブロックを構成する複数個の物理ブロックにそれぞれ含まれる複数個の物理ページを仮想ページとして管理する仮想ページ管理手段と、
前記仮想ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた前記仮想ブロックの対応関係を管理する対応関係管理手段と、
前記仮想ブロック内の先頭の前記仮想ページから末尾の前記仮想ページに向かう書き込み順序で、前記仮想ブロック内のそれぞれの前記仮想ページに、論理ページ毎のデータを書き込んでいくデータ書き込み手段と、
前記データ書き込み手段によりデータが書き込まれる前記仮想ページに、当該仮想ページが含まれる前記仮想ブロック内の先頭の前記仮想ページから当該仮想ページまでのそれぞれの仮想ページに対応する論理ページを示す情報を先頭の前記仮想ページから当該仮想ページに向かう配列順序で並べた情報であるページ管理情報を書き込むページ管理情報書き込み手段と、
前記ページ管理情報に基づいてそれぞれの論理ページに対応する最新のデータが書き込まれている前記仮想ページを特定するページ特定手段とを備え、
前記データ書き込み手段は、前記データ保持手段に保持されているデータを、当該データに対応する論理ブロックが割り当てられている前記仮想ブロックに前記書き込み順序で書き込んでいき、
前記ページ特定手段は、前記ページ管理情報を参照するときに、前記仮想ブロックに書き込まれている前記ページ管理情報のうち、前記書き込み順序が後の前記仮想ページに書き込まれている前記ページ管理情報を優先し、更に、前記ページ管理情報に同じ論理ページを示す複数個の情報が含まれているときには、前記配列順序が後の情報を優先することを特徴とするメモリコントローラ。 - 物理ブロック内の物理ページに書き込まれているデータを、当該物理ブロックと同じ論理ブロックが割り当てられている当該物理ブロックと異なる物理ブロック内の物理ページに転送するデータ転送手段を更に備え、
前記データ転送手段により転送されるデータは、前記ページ特定手段により特定された物理ページ、に書き込まれているデータであり、
前記ページ管理情報書き込み手段は、前記データ転送手段によりデータが転送されたときに、転送先の物理ページに前記ページ管理情報を書き込むことを特徴とする請求項1に記載のメモリコントローラ。 - ページ管理情報書き込み手段は、前記データ転送手段よりデータが転送されたときに、転送先の物理ブロックの先頭物理ページに、転送元の最終書き込み済み物理ページに書き込まれている前記ページ管理情報を、当該転送先の物理ブロックにおける前記ページ管理情報と合わせて書き込むことを特徴とする請求項3に記載のメモリコントローラ。
- 物理ブロック内の最終書き込み済み物理ページに書き込まれている前記ページ管理情報に基づいて、当該物理ブロックに対応する論理ブロック内の論理ページに対応するデータの書き換え回数を特定する書き換え回数特定手段を更に備え、
前記書き換え回数特定手段は、前記データ保持手段に保持されているデータの書き換え回数を特定し、
前記データ書き込み手段は、前記データ保持手段に保持されているデータを物理ブロック内の物理ページに書き込む前に、前記書き換え回数特定手段により特定された当該データの書き換え回数が所定の回数以上か否かを判断し、当該データの書き換え回数が所定の回数以上の場合は、当該データの書き込みを行わず、前記データ保持手段に保持し続けることを特徴とする請求項1に記載のメモリコントローラ。 - 請求項1乃至5のいずれか1項に記載のメモリコントローラと、
このメモリコントローラにより制御される1個又は複数個の不揮発性メモリを備えるフラッシュメモリシステム。 - ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御する不揮発性メモリの制御方法であって、
ホストシステムから与えられるデータをデータ保持手段に保持するデータ保持ステップと、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理するブロック管理ステップと、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、論理ページ毎のデータを書き込んでいくデータ書き込みステップと、
前記データ書き込みステップによりデータが書き込まれる物理ページに、当該物理ページが含まれる物理ブロック内の先頭の物理ページから当該物理ページまでのそれぞれの物理ページに対応する論理ページを示す情報を先頭の物理ページから当該物理ページに向かう配列順序で並べた情報であるページ管理情報を書き込むページ管理情報書き込みステップと、
前記ページ管理情報に基づいてそれぞれの論理ページに対応する最新のデータが書き込まれている物理ページを特定するページ特定ステップとを備え、
前記データ書き込みステップでは、前記データ保持手段に保持されているデータを、当該データに対応する論理ブロックが割り当てられている物理ブロックに前記書き込み順序で書き込んでいき、
前記ページ特定ステップでは、物理ブロックに書き込まれている前記ページ管理情報のうち、前記書き込み順序が後の物理ページに書き込まれている前記ページ管理情報を優先的に参照し、更に、前記ページ管理情報に同じ論理ページを示す複数個の情報が含まれているときに、前記配列順序が後の情報を優先することを特徴とする不揮発性メモリの制御方法。 - ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御する不揮発性メモリの制御方法であって、
ホストシステムから与えられるデータをデータ保持手段に保持するデータ保持ステップと、
それぞれが異なる不揮発性メモリに含まれる複数個の物理ブロックを仮想ブロックとして管理する仮想ブロック管理ステップと、
ひとつの仮想ブロックを構成する各物理ブロックの中の少なくとも2個以上の物理ページからなる仮想ページとして管理するステップと、
仮想ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた仮想ブロックの対応関係を管理するブロック管理ステップと、
前記仮想ブロックを構成する複数個の物理ブロックにそれぞれ含まれる複数個の物理ページを仮想ページとして管理する仮想ページ管理ステップと、
前記仮想ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた前記仮想ブロックの対応関係を管理する対応関係管理ステップと、
前記仮想ブロック内の先頭の前記仮想ページから末尾の前記仮想ページに向かう書き込み順序で、前記仮想ブロック内のそれぞれの前記仮想ページに、論理ページ毎のデータを書き込んでいくデータ書き込みステップと、
前記データ書き込みステップによりデータが書き込まれる前記仮想ページに、当該仮想ページが含まれる前記仮想ブロック内の先頭の前記仮想ページから当該仮想ページまでのそれぞれの仮想ページに対応する論理ページを示す情報を先頭の前記仮想ページから当該仮想ページに向かう配列順序で並べた情報であるページ管理情報を書き込むページ管理情報書き込みステップと、
前記ページ管理情報に基づいてそれぞれの論理ページに対応する最新のデータが書き込まれている前記仮想ページを特定するページ特定ステップとを備え、
前記データ書き込みステップでは、前記データ保持手段に保持されているデータを、当該データに対応する論理ブロックが割り当てられている前記仮想ブロックに前記書き込み順序で書き込んでいき、
前記ページ特定ステップでは、前記ページ管理情報を参照するときに、前記仮想ブロックに書き込まれている前記ページ管理情報のうち、前記書き込み順序が後の前記仮想ページに書き込まれている前記ページ管理情報を優先し、更に、前記ページ管理情報に同じ論理ページを示す複数個の情報が含まれているときには、前記配列順序が後の情報を優先することを特徴とする不揮発性メモリの制御方法。 - 物理ブロック内の物理ページに書き込まれているデータを、当該物理ブロックと同じ論理ブロックが割り当てられている当該物理ブロックと異なる物理ブロック内の物理ページに転送するデータ転送ステップを更に備え、
前記データ転送ステップにより転送されるデータは、前記ページ特定ステップにより特定された物理ページに書き込まれているデータであり、
ページ管理情報書き込みステップでは、前記データ転送ステップによりデータが転送されたときに、転送先の物理ページに前記ページ管理情報が書き込まれることを特徴とする請求項7に記載の不揮発性メモリの制御方法。 - ページ管理情報書き込みステップでは、前記データ転送ステップによりデータが転送されたときに、転送先の物理ブロックの先頭物理ページに、転送元の最終書き込み済み物理ページに書き込まれている前記ページ管理情報を、当該転送先の物理ブロックにおける前記ページ管理情報と合わせて書き込むことを特徴とする請求項9に記載の不揮発性メモリの制御方法。
- 物理ブロック内の最終書き込み済み物理ページに書き込まれている前記ページ管理情報に基づいて、当該物理ブロックに対応する論理ブロック内の論理ページに対応するデータの書き換え回数を特定する書き換え回数特定ステップを更に備え、
前記書き換え回数特定ステップでは、前記データ保持手段に保持されているデータの書き換え回数を特定し、
前記データ書き込みステップでは、前記データ保持手段に保持されているデータを物理ブロック内の物理ページに書き込む前に、前記書き換え回数特定ステップにより特定された当該データの書き換え回数が所定の回数以上か否かを判断し、当該データの書き換え回数が所定の回数以上の場合は、当該データの書き込みを行わず、前記データ保持手段に保持し続けることを特徴とする請求項7に記載の不揮発性メモリの制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010175562A JP2012037971A (ja) | 2010-08-04 | 2010-08-04 | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010175562A JP2012037971A (ja) | 2010-08-04 | 2010-08-04 | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012037971A true JP2012037971A (ja) | 2012-02-23 |
Family
ID=45849943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010175562A Withdrawn JP2012037971A (ja) | 2010-08-04 | 2010-08-04 | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012037971A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013232144A (ja) * | 2012-05-01 | 2013-11-14 | Sony Corp | 制御装置、記憶装置、記憶制御方法 |
US11531623B2 (en) | 2012-08-17 | 2022-12-20 | Intel Corporation | Memory sharing via a unified memory architecture |
-
2010
- 2010-08-04 JP JP2010175562A patent/JP2012037971A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013232144A (ja) * | 2012-05-01 | 2013-11-14 | Sony Corp | 制御装置、記憶装置、記憶制御方法 |
US11531623B2 (en) | 2012-08-17 | 2022-12-20 | Intel Corporation | Memory sharing via a unified memory architecture |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11520697B2 (en) | Method for managing a memory apparatus | |
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4524309B2 (ja) | フラッシュメモリ用のメモリコントローラ | |
US8037232B2 (en) | Data protection method for power failure and controller using the same | |
US8453021B2 (en) | Wear leveling in solid-state device | |
US8725985B2 (en) | Logical-to-physical address translation for a removable data storage device | |
US8621139B2 (en) | Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same | |
US8055873B2 (en) | Data writing method for flash memory, and controller and system using the same | |
TW201232258A (en) | Memory system and operation method thereof | |
US11314586B2 (en) | Data storage device and non-volatile memory control method | |
US9268688B2 (en) | Data management method, memory controller and memory storage apparatus | |
US20100306447A1 (en) | Data updating and recovering methods for a non-volatile memory array | |
JPWO2005083573A1 (ja) | 半導体メモリ装置 | |
JP4666081B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2013222435A (ja) | 半導体記憶装置及びその制御方法 | |
US8819387B2 (en) | Memory storage device, memory controller, and method for identifying valid data | |
US8316208B2 (en) | Memory controller, flash memory system with memory controller, and method of controlling flash memory | |
US11467758B2 (en) | Data writing method using different programming modes based on the number of available physical erasing units, memory control circuit unit and memory storage device | |
JP2009037317A (ja) | メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム | |
US9778862B2 (en) | Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus | |
JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2012068764A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP2004326523A (ja) | 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20131105 |