JP3808842B2 - 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 - Google Patents
書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 Download PDFInfo
- Publication number
- JP3808842B2 JP3808842B2 JP2003121578A JP2003121578A JP3808842B2 JP 3808842 B2 JP3808842 B2 JP 3808842B2 JP 2003121578 A JP2003121578 A JP 2003121578A JP 2003121578 A JP2003121578 A JP 2003121578A JP 3808842 B2 JP3808842 B2 JP 3808842B2
- Authority
- JP
- Japan
- Prior art keywords
- physical block
- block
- write
- nonvolatile memory
- physical
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Description
【発明の属する技術分野】
本発明は、物理ブロック単位で書き込みが行われる書き換え可能な不揮発性メモリを記憶媒体として用いた記憶装置に係り、特に当該不揮発性メモリの各ブロック毎の書き込み回数を平均化するのに好適な、書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法に関する。
【0002】
【従来の技術】
書き換え可能な不揮発性メモリとしてフラッシュメモリが良く知られている。このフラッシュメモリ、例えばブロック単位でデータの書き込みが可能なフラッシュメモリは近年、大容量化、低価格化が進んでいる。このため、この種のフラッシュメモリは、当該フラッシュメモリを記憶媒体として備えた記憶装置、例えば外部記憶装置としての利用が拡大しつつある。フラッシュメモリはバッテリバックアップが不要であることから、記憶装置には大変有用である。
【0003】
しかし、フラッシュメモリは、書き込みの寿命が限られる欠点を内在する(例えば、特許文献1参照)。ここでいう「寿命」とはブロック毎の消去の回数である。フラッシュメモリにブロック単位でデータを書き込むときには、まず書き込みの対象となるブロックのデータを消去する必要がある。ところが、この消去によりメモリチップの劣化が起こる。このため、フラッシュメモリの同一ブロックに、ある回数の書き込み行われると、当該ブロックに正常に書き込みができなくなる。ここで、「書き込み回数」は「消去+書き込み」の回数をいい、「消去」の回数を含む。
【0004】
フラッシュメモリを使用して構成される記憶装置では、当該フラッシュメモリの領域の一部分だけに書き込みが集中することがある。この場合、書き込みが集中するフラッシュメモリの領域の一部分の寿命が尽きるだけではなく、それにより、当該フラッシュメモリに未だ書き込みの回数の少ない領域が残っているにも拘わらずにフラッシュメモリ全体の寿命を終息させる可能性がある。
【0005】
このため、フラッシュメモリの寿命を最大限延ばすためには、フラッシュメモリへの書き込みを当該メモリの領域全体に亘って平均化する必要がある。その平均化のための方法として、従来は、ブロック単位の書き込みの回数を記憶しておき、書き込み回数の多いブロックと少ないブロックとを交換(スワップ)する方法が知られている(例えば、特許文献2参照)。
【0006】
【特許文献1】
特開平5−150913号公報(段落0003)
【0007】
【特許文献2】
特開平10−91535号公報(段落0016乃至段落0024、図3)
【0008】
【発明が解決しようとする課題】
上記した従来技術では、書き込み回数の多いブロックと少ないブロックとの交換(スワップ)が、書き込み回数の差によって行われる。しかし、この方法では、交換のための無駄な書き込みが多数発生して性能の低下を招くと共に、寿命に悪影響を及ぼすという問題がある。また、この場合書き込み回数の少ないブロックに書き換えが集中し、結果としてフラッシュメモリ内の各ブロックを満遍なく使用することができず、未だ書き込み可能なブロックが残っているにも拘わらずにフラッシュメモリ全体の寿命を終息させてしまうという問題がある。
【0009】
本発明は上記事情を考慮してなされたものでその目的は、書き換え可能な不揮発性メモリ内の各物理ブロックに対する書き込み回数を効率的に満遍なく平均化できる、書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法を提供することにある。
【0010】
【課題を解決するための手段】
本発明の1つの観点によれば、書き換え可能な不揮発性メモリを備えた記憶装置が提供される。この記憶装置は、物理ブロック単位でのデータの書き込みが可能な第1の不揮発性メモリと、この第1の不揮発性メモリ内の各物理ブロックに対する書き込みの回数を示す書き込み回数情報であって、当該物理ブロックが他の物理ブロックと交換されて、当該両ブロック間で論理ブロックアドレスと物理ブロックアドレスとの対応関係が入れ換えられるブロック交換が発生したことを示す交換済フラグ情報が付加可能な書き込み回数情報を記憶する第1の書き込み回数テーブル、及び論理ブロックアドレスを当該論理ブロックアドレスに割り当てられている上記第1の不揮発性メモリ内の物理ブロックを示す物理ブロックアドレスに変換するための変換情報を記憶する第1のアドレス変換テーブルとが保存される、バイト単位でのデータの書き込みが可能な第2の不揮発性メモリと、上記第1の書き込み回数テーブル及び上記第1のアドレス変換テーブルが第2の書き込み回数テーブル及び第2のアドレス変換テーブルとしてコピーされる揮発性メモリと、上記第1の不揮発性メモリ内の物理ブロックへのデータ書き込みに応じて、上記第2の書き込み回数テーブル内の対応する書き込み回数情報を更新する書き込み回数更新手段と、上記第1の不揮発性メモリ内の物理ブロックへのデータ書き込みに応じて更新された上記書き込み回数情報の示す書き込み回数が所定のチェック回数に達した場合、上記第2の書き込み回数テーブルを参照して、上記交換済フラグ情報が付加されていない物理ブロックのうち、最も書き込み回数が少ない物理ブロックを探し、当該最も書き込み回数が少ない物理ブロックと上記チェック回数に達した物理ブロックとを交換するブロック交換手段であって、交換された物理ブロックのうち、上記最も書き込み回数が少ない物理ブロックに対応する、上記第2の書き込み回数テーブル内の書き込み回数情報に上記交換済フラグ情報を付加するブロック交換手段と、上記第1の書き込み回数テーブル及び上記第1のアドレス変換テーブルを最新の状態を表すように予め定められたタイミングで更新するテーブル更新手段とを備えることを特徴とする。
【0011】
このように、上記構成の記憶装置においては、チェック回数に達した物理ブロックを他の物理ブロックと交換した際に、当該他の物理ブロックに対応する、書き込み回数テーブル(第2の書き込み回数テーブル)内の書き込み回数情報に交換済フラグ情報が付加される。また、上記構成の記憶装置においては、チェック回数に達した物理ブロックと交換する物理ブロックとして、書き込み回数テーブルで書き込み回数が管理されている物理ブロックのうちの単に最も書き込み回数が少ない物理ブロックではなくて、交換済フラグ情報が付加されていない物理ブロックのうちで、最も書き込み回数が少ない物理ブロックが用いられる。これにより、交換されたばかりの物理ブロックと交換される(つまり、1つの物理ブロックが多重に交換される)不具合が発生するのを防止でき、第1の不揮発性メモリ内の各物理ブロックに対する書き込み回数を効率的に満遍なく平均化できる。
【0012】
ここで、ブロック交換の発生時に、書き込み回数テーブルを参照して、交換済フラグ情報が付加された書き込み回数情報に対応する物理ブロックの数をカウントし、当該物理ブロック数が上記第1の不揮発性メモリの全ブロック数の半分となった特定状態を検出する手段と、この特定状態が検出される毎に、第2の書き込み回数テーブル内の全ての交換済フラグ情報をクリアする手段と、上記チェック回数を、第1の不揮発性メモリの寿命を表す書き込み回数Mを定数Dで除したM/Dを単位に(M/D)×1から(M/D)×Dまで、M/Dずつ段階的に増加する手段であって、上記特定状態が検出される毎に上記チェック回数をM/Dだけ増加する手段とを追加するとよい。
【0013】
このような構成の記憶装置においては、各物理ブロックの書き込み回数を段階的にチェックしながら交換していくことによって、各物理ブロックの平均化がこまめに行われるため、全ブロックをより一層効率的に満遍なく平均化することができる。
【0014】
また、上記第1の不揮発性メモリに対する物理ブロック単位のデータ書き込みの履歴を表す書き込み履歴情報を上記第2の不揮発性メモリに記録する書き込み履歴記録手段と、上記テーブル更新手段による上記第1の書き込み回数テーブル及び上記第1のアドレス変換テーブルの更新完了に応じて、上記第2の不揮発性メモリに記録されている書き込み履歴情報を消去する手段とを追加し、上記第2の不揮発性メモリに記録されている書き込み履歴情報に従って、上記予め定められたタイミングで上記第1の書き込み回数テーブル及び第1のアドレス変換テーブルが更新される構成とするとよい。
【0015】
このような構成の記憶装置においては、第2の不揮発性メモリに対する書き込みの回数を少なくできるため、当該第2の不揮発性メモリ自体の寿命が第1の不揮発性メモリより先に尽きてしまうのを防止できる。
【0016】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。図1は本発明の一実施形態に係るフラッシュメモリを備えた記憶装置の構成を示すブロック図である。図1の記憶装置は、CPU11と、2種のフラッシュメモリ12及び13と、ワークメモリ14と、ECC回路15と、インタフェース(I/F)16と、外部バス17と、内部バス18とを備えている。
【0017】
CPU11は記憶装置全体を制御する主コントローラとして機能する。フラッシュメモリ12は記憶装置の記憶媒体として用いられる、NAND型フラッシュメモリに代表される、ブロック単位で読み書きするタイプの書き換え可能な不揮発性メモリ(第1の不揮発性メモリ)である。このタイプのフラッシュメモリ(不揮発性メモリ)は、当該メモリ内の、メモリセルアレイとデータレジスタ(一般にセクタサイズ=512バイト程度の大きさがあり、データバスに直結している)との間を数μ〜数十μ秒でデータ転送できる。このため、上記タイプのフラッシュメモリ12は、ファイル単位でアクセスする外部記憶装置の媒体として最適である。
【0018】
フラッシュメモリ12の領域(物理領域)は、T個のブロック(物理ブロック)から構成される。このフラッシュメモリ12のT個のブロックの物理アドレス、即ち物理ブロックアドレス(PBA)が、先頭のブロックから順番に0,1,…,T−1であるものとする。通常、1つのブロックは複数のセクタ(HDDのセクタに対応)から構成される。1ブロックのサイズは、一般に数十Kバイト程度である。
【0019】
フラッシュメモリ12の論理アドレス空間は、図2に示すように、ユーザ領域121と交替領域122とに分けて管理される。ここでは、図1の記憶装置を利用するホスト装置から認識可能なフラッシュメモリ12の論理アドレス空間上、論理ブロックアドレス0〜LX−1までがユーザ領域121として定義され、LX〜T−1までが交替領域122として定義される。LXは、交替領域122の先頭の論理ブロックアドレスを示すポインタ(交替領域ポインタ)である。交替領域122内の論理ブロックに対応する物理ブロックは、ユーザ領域121内の論理ブロックに対応する物理ブロックが不良ブロックの場合に、当該不良ブロックと交替するのに用いられる。ユーザ領域121及び交替領域122内の論理ブロックの論理アドレス、即ち論理ブロックアドレス(LBA)は、フラッシュメモリ1の物理領域内の任意の物理ブロックに割り当てられる。交替領域122は、物理的に固定された領域ではない。
【0020】
フラッシュメモリ13は、NOR型フラッシュメモリに代表される、バイト単位で読み書きするタイプの書き換え可能な不揮発性メモリ(第2の不揮発性メモリ)である。フラッシュメモリ13は、主として、書き込み回数テーブル131と、アドレス変換テーブル132と、書き込み履歴133とを保存するのに用いられる。フラッシュメモリ13の消去の単位は、フラッシュメモリ12と同様にブロックである。
【0021】
書き込み回数テーブル131は、フラッシュメモリ13の物理ブロック毎に、当該物理ブロックに対する書き込みの回数を示す書き込み回数情報を記録するのに用いられる。この書き込み回数テーブル131のデータ構造例を図3に示す。ここでは、書き込み回数テーブル131の各エントリには、物理アドレス(物理ブロックアドレス)が0,1,2,…のように、先頭アドレス0から順に割り当てられている。つまり書き込み回数テーブル131のエントリi(i=0,1,2,…)は、物理アドレス(物理ブロックアドレス)iに予め対応付けられている。書き込み回数テーブル131の各エントリiには、4バイト(32ビット)が割り当てられる。この32ビットのエントリi中のビット29〜0の30ビットは、当該エントリiに対応する物理ブロックアドレスiの物理ブロックにおける書き込み回数を表す。また、32ビットのエントリi中のビット31(MSB)は、当該エントリiに対応する物理ブロックアドレスiの物理ブロックを論理的に他の物理ブロックと交換したことを示す交換済フラグとして用いられる。ブロック交換については後述する。また、32ビットのエントリi中のビット30は、当該エントリiに対応する物理ブロックアドレスiのブロックが不良ブロックであることを示す不良ブロックフラグとして用いられる。図3の例では、物理ブロックアドレス0の物理ブロックは交換済であり、物理ブロックアドレス1の物理ブロックは交替処理されていることが示されている。
【0022】
アドレス変換テーブル132は、論理アドレス(論理ブロックアドレス)を当該論理アドレスに割り当てられている物理ブロックのアドレス、即ち物理アドレス(物理ブロックアドレス)に変換するための変換情報を記録したマッピングテーブルである。アドレス変換テーブル132のデータ構造例を図4に示す。ここでは、アドレス変換テーブル132の各エントリには、論理アドレス(論理ブロックアドレス)が0,1,2,…のように、先頭アドレス0から順に割り当てられている。つまりアドレス変換テーブル132のエントリi(i=0,1,2,…)は、論理アドレス(論理ブロックアドレス)iに予め対応付けられている。アドレス変換テーブル132のエントリiには、論理アドレスiに割り当てられている物理ブロックのアドレス、つまり物理アドレス(物理ブロックアドレス)が格納される。
【0023】
書き込み履歴133は、フラッシュメモリ13へのブロック単位の書き込み、ブロック単位の交換(ブロック交換)、及びブロック単位の交替(ブロック交替)の履歴を、対応する物理アドレス(物理ブロックアドレス)により表す。この書き込み履歴133のデータ構造例を図5に示す。図5から明らかなように、本実施形態において書き込み履歴133を構成し、物理アドレスを記録する各レコードには、4バイト、即ち32ビット(ビット31〜0の32ビット)が割り当てられる。この32ビット中のビット27〜0の28ビットは物理アドレス(物理ブロックアドレス)を表し、ビット31〜28の4ビットは制御コードを表す。各レコード中の制御コードは、“1”で当該レコード(中の物理アドレス)で示される物理ブロックへの書き込みを、“2”で当該レコードで示される物理ブロックと次のレコードで示される物理ブロックとが交換されたことを、“3”で当該レコードで示される物理ブロックが交替処理されたことを、それぞれ示す。なお、この制御コードの数値は16進数値である。
【0024】
物理ブロックの交換とは、2つの物理ブロックをPB1及びPB2とし、その物理ブロックPB1及びPB2が割り当てられている論理ブロックアドレスを、それぞれLBA1及びLBA2とすると、論理ブロックアドレスLBA1及びLBA2が割り当てられる物理ブロックを論理的に交換して(入れ換えて)、それぞれPB2及びPB1とすることをいう。つまり、物理ブロックの交換とは、2つの物理ブロック間で論理ブロックアドレスと物理ブロックアドレスとの対応関係が入れ換えられることをいう。一方、物理ブロックの交替処理とは、ある論理ブロックアドレスに割り当てられている物理ブロックが不良の場合に、当該論理ブロックアドレスに割り当てられる物理ブロックを、不良ブロックから、交替領域122に交替用として予め確保されている物理ブロックに交替することをいう。
【0025】
図5の例では、レコード0及び1により、物理ブロックアドレス12345及び234で指定されるブロックへのデータ書き込みが正常に行われたことが示されている。また、レコード2及び3により、物理ブロックアドレス9876及び5432でそれぞれ示される物理ブロックが論理的に交換されたことが示されている。また、レコード4により、上記交換された物理ブロックアドレス5432のブロックでエラーが発生したために、そのエラーブロックが交替領域122内のブロックと交替されたことが示され、レコード5により、物理ブロックアドレス1111で指定される交替先のブロックにデータが正常に書き込まれたことが示されている。
【0026】
ワークメモリ14は例えばRAMであり、CPU11のワーク領域、及びブロック交換時にユーザデータを一時的に保持しておくための領域として用いられる。ワークメモリ14はまた、例えば図1の記憶装置の電源投入時(立ち上げ時)に、フラッシュメモリ13に保存されている書き込み回数テーブル131及びアドレス変換テーブル132のそれぞれコピーである、書き込み回数テーブル141及びアドレス変換テーブル142を保持する領域としても用いられる。CPU11は、このワークメモリ14に格納されている書き込み回数テーブル141及びアドレス変換テーブル142を参照・更新する。フラッシュメモリ13に保存されている書き込み回数テーブル131及びアドレス変換テーブル132を参照・更新しない理由は2つある。第1は、フラッシュメモリ13はRAM構成のワークメモリ14と異なってアクセス速度が遅く、テーブル参照・更新に時間がかかりすぎるためである。第2は、テーブル131及び132を直接更新するのでは、フラッシュメモリ13自体の寿命がフラッシュメモリ12より先に尽きてしまうからである。
【0027】
ECC回路15は、フラッシュメモリ12に書き込まれるデータに例えばセクタ単位で付加されるエラー訂正符号(Error-Correcting Code)を生成する。ECC回路15はまた、フラッシュメモリ12から読み出されるデータのエラー検出・エラー訂正を、当該データにセクタ単位で付加されているエラー訂正符号をもとにセクタ単位で行う。
【0028】
I/F16は、図1の記憶装置の外部インターフェースのコントローラである。I/F16は、外部インターフェースが例えばSCSI(Small Computer System Interface)の場合には、SCSIコントローラである。この場合、外部バス17はSCSIバスである。内部バス18は、CPU11と、フラッシュメモリ12及び13と、ワークメモリ14と、ECC回路15と、I/F16とを相互接続する。
【0029】
次に、図1の記憶装置の動作について、(1)データ書き込み、(2)ブロック交換、(3)ブロック交替、(4)電源投入時処理、(5)テーブル更新を例に順に説明する。
【0030】
(1)データ書き込み
まず、図1の記憶装置中のフラッシュメモリ12へのデータ書き込みについて、図6のフローチャートを参照して説明する。今、図1の記憶装置を利用するホスト装置から外部バス17を介して、例えば論理ブロックアドレスLBA1で指定されるブロックへのデータの書き込みが要求されたものとする。この場合、CPU11は、ワークメモリ14に格納されているアドレス変換テーブル142中の、論理ブロックアドレスLBA1に対応するエントリを参照することにより、論理ブロックアドレスLBA1を当該エントリに設定されている物理ブロックアドレスに変換する(ステップS1)。この物理ブロックアドレスをPBA1と表現する。
【0031】
次に、CPU11はワークメモリ14にアクセスして、物理ブロックアドレスPBA1に対応する書き込み回数テーブル141内のエントリを参照し、そのエントリに設定されている書き込み回数(つまりPBA1で指定される物理ブロックへの書き込みの回数)が(M/D)・n(nの初期値は1)に一致するか否かを調べることで、ブロック交換が必要か否かを判定する(ステップS2)。ここで、Mはフラッシュメモリ12の書き込みの寿命であり、具体的には許容される書き込みの回数を示す。本実施形態では、このM回をD等分し、M/D回(チェック回数)を単位に、即ち、M/D回(n=1)、(M/D)×2回(n=2)、(M/D)×3回(n=3)、…(M/D)×D回(n=D)のそれぞれにおいて、書き込み回数の平均化を行う。例えば寿命を10万回(M=10万)、Dを10とすると、10万/10=10,000回毎に書き込み回数の平均化が行われることになる。Dの値は、大きいほど、より満遍なく平均化が行える。しかし、Dの値を大きくしすぎると、ブロック交換による書き換え回数が増えるため寿命に悪影響を及ぼす。そこで、
M/D≫D
とするのが望ましい。上記例ではM/D=10000,D=10であることから、10000≫10である。
【0032】
もし、物理ブロックアドレスPBA1で指定される物理ブロックへの書き込み回数が(M/D)・n(ここでは、n=1とする)に一致するならば、CPU11は後述するブロック交換処理(ステップS3)を実行する。これに対し、上記書き込み回数が(M/D)・nに一致しないなら、CPU11は、PBA1で指定されるフラッシュメモリ12内の物理ブロックに、ホストから要求されたデータを書き込む(ステップS4)。この際、書き込みデータには、ECC回路15により例えばセクタ単位で生成されるエラー訂正符号が付加される。このエラー訂正符号が付加された書き込みデータは、データ書き込み終了後に読み出され、ECC回路15による周知のエラー検出・訂正処理に用いられる。もし、ECC回路15によるエラー検出・訂正処理の結果、エラー(ECCエラー)となり、つまりステップS4での書き込みに失敗し、PBA1で指定された物理ブロックが不良であると判定された場合(ステップS5)、CPU11は後述するブロック交替処理(ステップS6)を実行する。
【0033】
一方、ステップS4での書き込みに成功した場合(ステップS5)、CPU11はワークメモリ14にアクセスして、PBA1に対応する書き込み回数テーブル141内のエントリを参照し、そのエントリに設定されている書き込み回数を1インクリメントする(ステップS7)。本実施形態では、PBA1で指定された物理ブロックが不良であると判定された場合、その不良ブロックはブロック交替処理の対象となることから、その不良ブロックの書き込み回数を1インクリメントする処理を省略している。しかし、不良ブロックと判定された場合にも、当該ブロックの書き込み回数を1インクリメントしてもよい。また、このインクリメント処理が、データ書き込み直後に行われる構成としてもよい。
【0034】
次にCPU11は、制御コード=1とPBA1とを含むレコードi(iの初期値は0)を生成して、フラッシュメモリ13に保存されている書き込み履歴133に追加する(ステップS8)。そしてCPU11は、iを1インクリメントして(ステップS9)、データ書き込み処理を終了する。このiはワークメモリ14の所定領域に格納されており、次に生成すべきレコードの位置を示すレコードポインタである。
【0035】
(2)ブロック交換
次に、図1の記憶装置におけるブロック交換処理(ステップS3)について、図7及び図8のフローチャートを参照して説明する。物理ブロックアドレスPBA1で指定される物理ブロックへのデータの書き込みの回数が(M/D)・n回となっている場合(ステップS2)、CPU11はブロック交換処理(ステップS3)を次のように実行する。
【0036】
まずCPU11は、PBA1で指定される物理ブロックとの間で交換の対象となる物理ブロックを次のように探す。即ちCPU11は、ワークメモリ14に格納されている書き込み回数テーブル141を参照し、交換済フラグが立っていないエントリのうち、最も少ない書き込み回数が設定されているエントリを探すことで、そのエントリに対応する物理ブロックアドレスの物理ブロックを探す(ステップS11)。つまり、CPU11はステップS11において、交換済フラグが立っていない物理ブロックのうち、最も書き込み回数が少ない物理ブロックを探す。この物理ブロックの物理ブロックアドレスがPBA2であるものとする。CPU11はまた、上記ステップS11において、ワークメモリ14に格納されているアドレス変換テーブル142を逆引きすることにより、物理ブロックアドレスPBA2が設定されているエントリに対応する論理ブロックアドレスLBA2を求める。
【0037】
次にCPU11は、アドレス変換テーブル142を参照し、論理ブロックアドレスLBA1,LBA2に対応するエントリに設定されている物理ブロックアドレスを入れ換えて、それぞれPBA2,PBA1に変更する(ステップS12)。これにより、論理ブロックアドレスLBA1,LBA2に割り当てられる物理ブロックが交換される。つまり、論理ブロックアドレスLBA1には、書き込み回数が(M/D)・n回に達した物理ブロックアドレスPBA1の物理ブロックに代えて、交換済フラグが立っていないブロックのうち、最も書き込み回数が少ない、物理ブロックアドレスPBA2の物理ブロックが割り当てられる。一方、論理ブロックアドレスLBA2には、物理ブロックアドレスPBA2の物理ブロックに代えて、書き込み回数が(M/D)・n回に達した物理ブロックアドレスPBA1の物理ブロックが割り当てられる。
【0038】
次にCPU11は、上記のブロック交換を書き込み履歴133に反映させるために、次の処理を行う。ここで、書き込み履歴133には、レコード0〜i−1が記録されているものとする。まずCPU11は、制御コード=2とPBA1とを含むレコードiを生成し、当該レコードiをフラッシュメモリ13に保存されている書き込み履歴133に追加する(ステップS13)。次にCPU11は、制御コード=2とPBA2とを含むレコードi+1を生成し、当該レコードi+1をフラッシュメモリ13に保存されている書き込み履歴133に追加する(ステップS14)。そしてCPU11は、レコードiを指すレコードポインタiを2だけ(2レコード分)インクリメントする(ステップS15)。
【0039】
次にCPU11は、物理ブロックアドレスPBA2の物理ブロックの内容、つまり(PBA2)を、ワークメモリ14の所定領域に退避(コピー)する(ステップS16)。次にCPU11は、PBA1で指定される物理ブロックに本来書き込むべきデータを、PBA2で指定されるフラッシュメモリ12内の物理ブロックに書き込む(ステップS17)。もし、このステップS17での書き込みに失敗し、PBA2で指定された物理ブロックが不良であると判定された場合(ステップS18)、CPU11はブロック交替処理(ステップS19)を実行する。
【0040】
一方、ステップS17での書き込みに成功した場合(ステップS18)、CPU11はワークメモリ14にアクセスして、PBA2に対応する書き込み回数テーブル141内のエントリを参照し、そのエントリに設定されている書き込み回数を1インクリメントする(ステップS20)。またCPU11は、このPBA2に対応する書き込み回数テーブル141内のエントリに交換済フラグを立てる(ステップS21)。このように交換済フラグは、ブロック交換の対象となった2つの物理ブロックのうち、書き込み回数の少ない方のブロックに対応する書き込み回数テーブル141内のエントリに立てられる。
【0041】
次にCPU11は、書き込み回数テーブル141の全エントリを参照して、交換済フラグが立っているブロック(に対応するエントリ)の数をカウントする(ステップS22)。そしてCPU11は、交換済フラグが立っているブロックの数がフラッシュメモリ12の全ブロック数の半分であるか否かを判定する(ステップS23)。もし、交換済フラグが立っているブロックの数が全ブロック数の半分であるならば、CPU11はフラッシュメモリ12内の全てのブロックが交換されたものと判断する。この場合、CPU11は、書き込み回数テーブル141内の全ての交換済フラグを一旦クリアする(ステップS24)。そしてCPU11は、チェック回数の単位を表すnを1インクリメントする(ステップS25)。これにより、インクリメント前のnが1であったなら、このインクリメントの結果、今までM/D回だったチェック回数が(M/D)×2回となる。このnの値は、フラッシュメモリ13の所定位置に格納されている。
【0042】
CPU11は、nを1インクリメントするとステップS26に進む。またCPU11は、交換済フラグが立っているブロックの数が全ブロック数の半分に達していなければ(ステップS23)、そのままステップS26に進む。ステップS26において、CPU11は、ワークメモリ14に退避されている、ステップS17でのデータ書き込み直前に物理ブロックアドレスPBA2に格納されていたデータ、つまり旧(PBA2)のデータを、PBA1で指定されるフラッシュメモリ12内の物理ブロックに書き込む(ステップS26)。もし、このステップS26での書き込みに失敗し、PBA1で指定された物理ブロックが不良であると判定された場合(ステップS27)、CPU11はブロック交替処理(ステップ28)を実行する。一方、ステップS26での書き込みに成功した場合(ステップS27)、CPU11はワークメモリ14にアクセスして、PBA1に対応する書き込み回数テーブル141内のエントリを参照し、そのエントリに設定されている書き込み回数を1インクリメントする(ステップS28)。これにより、ステップS3のブロック交換処理は終了する。
【0043】
次に、ブロック交換の具体例と交換済フラグを設ける理由とについて、図9乃至図12を参照して説明する。まず、図9に示すように、論理ブロックアドレス0〜9に割り当てられている10個の物理ブロックが存在し、且つ値の小さな論理ブロックアドレスに割り当てられる物理ブロックほど書き込み回数が多いものとする。つまり、値の小さな論理ブロックアドレスほど書き込みが頻繁に発生する傾向があるものとする。この場合、10個の物理ブロックの書き込み回数を平均化するには、論理ブロックアドレス0と9にそれぞれ割り当てられる物理ブロック、論理ブロックアドレス1と8にそれぞれ割り当てられる物理ブロック、論理ブロックアドレス2と7にそれぞれ割り当てられる物理ブロック、…というように、交換の対象となる物理ブロックを、書き込み回数が一番多いブロックと一番少ないブロック、2番目に多いブロックと2番目に少ないブロック、…のように組み合わせるのがよい。
【0044】
図10は、論理ブロックアドレス0に割り当てられている物理ブロックPaの書き込み回数がM/D回となったため、当該物理ブロックPaを、論理ブロックアドレス9に割り当てられている物理ブロックPbと交換した状態を示す。このブロック交換により、論理ブロックアドレス0に割り当てられる物理ブロックは、一番書き込みが多かった物理ブロックPaから一番書き込み回数の少ない物理ブロックPbとなる。
【0045】
その後、次に書き込みが多かった物理ブロックPcの書き込み回数がM/D回に達したとする。もし交換済フラグを設けずに、物理ブロックPcをその時点で書き込み回数が一番少ない物理ブロックと交換するならば、図11に示すように、先ほど交換したばかりの物理ブロックPbと交換することになる。この場合、論理ブロックアドレス1に割り当てられる物理ブロックは書き込み回数が一番少ない物理ブロックPbとなるものの、書き込みが頻繁に発生する論理ブロックアドレス0に割り当てられる物理ブロックは書き込み回数がM/D回となった物理ブロックPcとなってしまう。これでは最初に行った交換が無駄になってしまう。
【0046】
そこで本実施形態では、このような無駄を防ぐために交換済フラグを設け、書き込み回数がM/D回となったために一度交換されたブロックが再度交換されることを禁止している。この様子を図12に示す。図12の例では、物理ブロックPcは、交換済フラグが立っていない物理ブロックのうち、最も書き込み回数の少ない物理ブロックPdと交換される。なお、交換フラグが立っている物理ブロックの書き込み回数がM/D回になった場合には、そのブロックは、別の交換フラグの立っていないブロックと交換可能である。
【0047】
本実施形態では、前述したように、ブロック交換に伴うステップS21の処理の結果、交換済フラグの立っているブロックの数が全ブロック数の半分になった時点、つまりフラッシュメモリ12内の全てのブロックが交換された時点で、書き込み回数テーブル141内の全ての交換済フラグがクリアされる(ステップS22〜S24)。そして、ブロック交換の判定に用いられるチェック回数(書き込み回数)の単位を表すnが1インクリメントされる。これにより、チェック回数が1単位分、つまりM/D回だけ加算され、例えば今までチェック回数がM/D回であったならば、チェック回数は(M/D)×2回となる。以降、書き込み・ブロック交換が繰り返される。そして、交換済フラグの立ったブロックの数が全ブロック数の半分になる都度、全ての交換済フラグをクリアしながら、チェック回数が(M/D)×3、(M/D)×4…のように、M/Dずつ増加される。このように本実施形態においては、ブロック全体の書き込み回数を段階的にチェックしながら交換していくことによって、一部のブロックだけが寿命になることを防ぎ、全ブロックをより効率的に満遍なく平均化することができる。
【0048】
(3)ブロック交替
次に、図1の記憶装置における、ブロック交替処理(例えば、ステップS6)について、図13のフローチャートを参照して説明する。今、物理ブロックアドレスPBA1で指定される物理ブロックへのデータの書き込みに失敗し、当該物理ブロックが不良であると判定されたものとする(ステップS5)。この場合、CPU11はブロック交替処理(ステップS6)を次のように実行する。
【0049】
まずCPU11は、書き込み回数テーブル141を参照し、PBA1に対応する書き込み回数テーブル141内エントリに不良ブロックフラグを立てる(ステップS31)。次にCPU11は、制御コード=3とPBA1とを含むレコードiを生成し、当該レコードiをフラッシュメモリ13に保存されている書き込み履歴133に追加する(ステップS32)。
【0050】
次にCPU11は、現時点における交替領域122の先頭の論理ブロックアドレス(交替領域ポインタ)であるLXに対応する、アドレス変換テーブル142内のエントリを参照することにより、当該LXを当該エントリに設定されている物理ブロックアドレスに変換する(ステップS33)。この物理ブロックアドレス、つまり論理ブロックアドレスLXに割り当てられている物理ブロックの物理ブロックアドレスをPXと表現する。次にCPU11は、書き込み回数テーブル141中の、物理ブロックアドレスPXに対応するエントリを参照する(ステップS34)。そしてCPU11は、PXに対応する書き込み回数テーブル141中のエントリに不良ブロックフラグが立っているか否かを判定する(ステップS35)。
【0051】
もし、PXに対応する書き込み回数テーブル141中のエントリに不良ブロックフラグが立っているならば、CPU11はPXで指定される物理ブロックは不良ブロックであると判断する。この場合、先のステップS5で不良ブロックであると判定された(PBA1で指定される)物理ブロックを、PXで指定される物理ブロックに交替することはできない。そこでCPU11は、LXを1インクリメントし(ステップS36)、そのインクリメント後の論理ブロックアドレスLXに割り当てられている物理ブロックについて、不良ブロックであるか否かを判定するための処理(ステップS33〜S35)を再び実行する。このLXの値は、ワークメモリ14及びフラッシュメモリ13の所定位置に格納されている。但し、参照・更新されるのはワークメモリ14内のLXであり、フラッシュメモリ13内のLXは通常は参照・更新されない。フラッシュメモリ13内のLXの参照・更新については後述する。
【0052】
一方、PXに対応する書き込み回数テーブル141中のエントリに不良ブロックフラグが立っていないならば、CPU11はPXで指定される物理ブロックは正常なブロックであると判断する。この場合、CPU11はアドレス変換テーブル142を参照し、論理ブロックアドレスLBA1に対応するエントリに設定されている物理ブロックアドレスをPXに変更する(ステップS37)。これにより、論理ブロックアドレスLBA1に割り当てられる物理ブロックが、物理ブロックアドレスがPBA1の不良ブロックから、交替領域122に確保されていた、物理ブロックアドレスがPXの物理ブロックに交替される。そこでCPU11は、交替領域122の先頭の論理ブロックアドレスを示す交替領域ポインタLXを1インクリメントする(ステップS38)。
【0053】
次にCPU11は、PBA1で指定される物理ブロックにステップS4で書き込んだのと同一のデータを、PXで指定されるフラッシュメモリ12内の物理ブロックに書き込む(ステップS39)。もし、ステップS39での書き込みに失敗し、PXで指定された物理ブロックが不良であると判定された場合(ステップS40)、CPU11は上記ステップS6と同様のブロック交替処理(ステップS41)を実行する。一方、ステップS39での書き込みに成功した場合(ステップS40)、CPU11はPXに対応する書き込み回数テーブル141内のエントリを参照し、そのエントリに設定されている書き込み回数を1インクリメントする(ステップS42)。これにより、ステップS6のブロック交替処理は終了する。
【0054】
ここでは、フラッシュメモリ12内の物理ブロックへのデータの書き込みに失敗して、当該ブロックが不良ブロックと判定された場合に実行されるブロック交替処理について説明した。しかし、フラッシュメモリ12内の物理ブロックへのデータ書き込み以外のアクセス時、つまり当該ブロックからのデータの読み出し時に、当該ブロックが不良ブロックであると判定された場合にも、上述のブロック交替処理は行われる。但し、エラー訂正不可能な不良ブロックについては、当該不良ブロックのデータが確定できない。この場合、エラー訂正不可能な不良ブロックを交替処理の対象外とするか、交替ブロックにダミーデータを書き込めばよい。
【0055】
(4)電源投入時処理
次に、図1の記憶装置の電源が投入(ON)された際の処理について図14のフローチャートを参照して説明する。まずCPU11は、電源投入時の初期化処理の中で、フラッシュメモリ13に保存されている書き込み回数テーブル131及びアドレス変換テーブル132をワークメモリ14の所定領域にそれぞれ書き込み回数テーブル141及びアドレス変換テーブル142としてコピーする(ステップS51,S52)。
【0056】
次にCPU11は、フラッシュメモリ13に確保されている書き込み履歴用領域にアクセスすることにより、当該領域内に書き込み履歴133が保存されている(残されている)か否かを判定する(ステップS53)。
【0057】
もし、書き込み履歴133が保存されている場合、当該書き込み履歴133は、現在フラッシュメモリ13に保存されている書き込み回数テーブル131及びアドレス変換テーブル132が最も最近に更新された後の書き込み履歴を示す。この場合、CPU11は、書き込み履歴133を時系列順に参照することにより、書き込み回数テーブル131及びアドレス変換テーブル132を更新する(ステップS54)。つまり、CPU11は書き込み履歴133の内容を書き込み回数テーブル141及びアドレス変換テーブル142に反映させる。
【0058】
次にCPU11は、その時点においてワークメモリ14に格納されている書き込み回数テーブル141及びアドレス変換テーブル142、即ち書き込み履歴133の内容が反映されていない、更新前の書き込み回数テーブル131及びアドレス変換テーブル132のコピーを、それぞれ更新後の最新の書き込み回数テーブル131及びアドレス変換テーブル132で置き換えて、新たなを書き込み回数テーブル141及びアドレス変換テーブル142とする(ステップS55)。そしてCPU11は、書き込み履歴133をフラッシュメモリ13から消去して、電源投入時の処理を終了する(ステップS56)。この場合、レコードポインタiは初期値0に設定される。
【0059】
一方、書き込み履歴133が保存されていない場合、現在フラッシュメモリ13に保存されている書き込み回数テーブル131及びアドレス変換テーブル132の内容は、フラッシュメモリ12の最新の状態を表している。この場合、書き込み回数テーブル131及びアドレス変換テーブル132のコピーである、ワークメモリ14上の書き込み回数テーブル141及びアドレス変換テーブル142の内容もフラッシュメモリ12の最新の状態を表している。そこでCPU11は、そのまま電源投入時の処理を終了する。
【0060】
本実施形態では、上記したように、書き込み回数テーブル131及びアドレス変換テーブル132を更新する前に、その更新前の書き込み回数テーブル131及びアドレス変換テーブル132をワークメモリ14にコピーしている。その理由は、フラッシュメモリ13上で当該書き込み回数テーブル131及びアドレス変換テーブル132を更新した際に、更新に失敗しても、元の状態に戻せるようにするためである。なお、書き込み回数テーブル131及びアドレス変換テーブル132のコピーである、ワークメモリ14上の書き込み回数テーブル141及びアドレス変換テーブル142を対象に、書き込み履歴133に従う更新処理を行うようにしてもよい。この場合、更新後の書き込み回数テーブル141及びアドレス変換テーブル142で、フラッシュメモリ13上の書き込み回数テーブル131及びアドレス変換テーブル132を書き換えて、新たな書き込み回数テーブル131及びアドレス変換テーブル132とすればよい。但し、テーブル全体の更新となるため、フラッシュメモリ13の寿命が先に尽きる虞がある。
【0061】
(5)テーブル更新
次に、図1の記憶装置におけるテーブル更新処理(ステップS54)について、図15のフローチャートを参照して説明する。まずCPU11は、ワークメモリ14上の所定領域に初期値0のレコードポインタiを設定する(ステップS61)。次にCPU11は、フラッシュメモリ13に保存されている書き込み履歴133中のレコードのうち、レコードポインタiの指定するレコードiを参照する(ステップS62)。そしてCPU11は、レコードi中の制御コードが1,2,3のいずれであるかを判別する(ステップS63)。
【0062】
もし、レコードi中の制御コードが1の場合、CPU11はフラッシュメモリ13に保存されている書き込み回数テーブル131にアクセスし、当該レコードi中の物理ブロックアドレスPBAiに対応する書き込み回数テーブル131内のエントリに設定されている書き込み回数を1インクリメントする(ステップS64)。これにより、レコードiで示されるPBAiの物理ブロックへの書き込みが、書き込み回数テーブル131の対応エントリに反映される。
【0063】
次にCPU11はワークメモリ14上のレコードポインタiを1インクリメントする(ステップS65)。CPU11は、このインクリメント後のレコードポインタiの指定するレコードiが書き込み履歴133中に存在するか否かを判定する(ステップS66)。もし、レコードiが書き込み履歴133中に存在するならば、CPU11はステップS62の処理に戻る。
【0064】
一方、レコードi中の制御コードが2の場合(ステップS63)、CPU11は書き込み履歴133中の次のレコード(i+1)を参照する(ステップS67)。次にCPU11は、レコード(i+1)中の物理ブロックアドレスPBA(i+1)で、フラッシュメモリ13に保存されているアドレス変換テーブル132を逆引きすることにより、当該PBA(i+1)に対応する論理ブロックアドレスLBA(i+1)を求める(ステップS68)。即ちCPU11は、物理ブロックアドレスPBA(i+1)が設定されているアドレス変換テーブル132内エントリに対応する論理ブロックアドレスLBA(i+1)を求める。
【0065】
次にCPU11は、論理ブロックアドレスLBAi,LBA(i+1)に対応するアドレス変換テーブル132内の両エントリに設定されている物理ブロックアドレスを、それぞれPBA(i+1),PBAiに変更する(ステップS69)。これにより、論理ブロックアドレスLBAi,LBA(i+1)に割り当てられる物理ブロックが交換されたことが、アドレス変換テーブル132の対応エントリに反映される。
【0066】
またCPU11は、PBA(i+1)に対応する書き込み回数テーブル131内エントリに交換済フラグを立てると共に、当該エントリに設定されている書き込み回数を1インクリメントする(ステップS70)。これにより、PBA(i+1)の物理ブロックが、書き込み回数が(M/D)・n回となったブロックと交換され、そのPBA(i+1)の物理ブロックにデータが書き込まれたことが、書き込み回数テーブル131の対応エントリに反映される。またCPU11は、PBAiに対応する書き込み回数テーブル131内エントリに設定されている書き込み回数を1インクリメントする(ステップS71)。これにより、書き込み回数が(M/D)・n回となったために、PBA(i+1)の物理ブロックと交換された(本来、データを書き込むべき)PBAiの物理ブロックに、当該PBA(i+1)の物理ブロックの元の内容が書き込まれたことが、書き込み回数テーブル131の対応エントリに反映される。
【0067】
次にCPU11はワークメモリ14上のレコードポインタiを2インクリメントする(ステップS72)。CPU11は、このインクリメント後のレコードポインタiの指定するレコードiが書き込み履歴133中に存在するならば(ステップS66)、ステップS62の処理に戻る。
【0068】
一方、レコードi中の制御コードが3の場合(ステップS63)、CPU11は当該レコードi中の物理ブロックアドレスPBAiに対応する書き込み回数テーブル131内エントリに不良ブロックフラグを立てる(ステップS73)。これにより、PBAiの物理ブロックが不良ブロックとしてブロック交替処理の対象となったことが、書き込み回数テーブル131の対応エントリに反映される。
【0069】
次にCPU11は、PBAiでアドレス変換テーブル132を逆引きすることにより、当該PBAiに対応する論理ブロックアドレスLBAiを求める(ステップS74)。続いてCPU11は書き込み履歴133中の次のレコード(i+1)を参照する(ステップS75)。もし、レコード(i+1)中の制御コードが1であるならば、CPU11は、論理ブロックアドレスLBAiに対応するアドレス変換テーブル132内のエントリに設定されている物理ブロックアドレスをレコード(i+1)中の物理ブロックアドレスPBA(i+1)に変更する(ステップS76)。またCPU11は、PBA(i+1)に対応する書き込み回数テーブル131内エントリに設定されている書き込み回数を1インクリメントする(ステップS77)。これにより、LBAiに割り当てられる物理ブロックがPBA(i+1)の物理ブロックに交替され、そのPBA(i+1)の物理ブロックにデータが書き込まれたことが、アドレス変換テーブル132及び書き込み回数テーブル131の対応エントリに反映される。
【0070】
次にCPU11はワークメモリ14上のレコードポインタiを2インクリメントする(ステップS72)。CPU11は、このインクリメント後のレコードポインタiの指定するレコードiが書き込み履歴133中に存在するならば(ステップS66)、ステップS62の処理に戻る。なお、図15のフローチャートでは省略されているが、レコードi中の制御コードが3で、次のレコード(i+1)中の制御コードが2または3の場合には、上記ステップS63で制御コードが2または3であると判定された場合と同様の動作が行われる。但し、制御コードが2または3の上記次のレコード(i+1)をレコードiと置き換える必要がある。
【0071】
CPU11は、上述の処理を書き込み履歴133中の全レコードについて繰り返し実行すると(ステップS66)、当該書き込み履歴133の内容が全て書き込み回数テーブル131及びアドレス変換テーブル132に反映されたとして、テーブル更新処理を終了する。
【0072】
ところで、図1の記憶装置を含むシステムが、無停止で連続的に運転するシステムである場合、当該記憶装置の電源が投入される回数は極めて少ない。この場合、時間の経過と共に書き込み履歴133のレコード数が増加する。しかし、フラッシュメモリ13内に書き込み履歴133用に確保できる領域には限りがある。そこで本実施形態では、書き込み履歴133のレコード数が予め定められた値に達したときにも、電源投入時と同様の処理(図14のフローチャートと同様の処理)を行って、書き込み履歴133の内容を書き込み回数テーブル131及びアドレス変換テーブル132に反映して、当該書き込み履歴133を消去する。
【0073】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【0074】
【発明の効果】
以上詳述したように本発明によれば、物理ブロック単位でのデータの書き込みが可能な不揮発性メモリを記憶装置の記憶媒体と使用した場合に、当該不揮発性メモリの一部分の領域に偏った書き込みを回避して、当該不揮発性メモリへの書き込みを全ブロックに満遍なく平均化でき、これにより当該不揮発性メモリの寿命の最大限化を実現できる。
【図面の簡単な説明】
【図1】 本発明の一実施形態に係るフラッシュメモリを備えた記憶装置の構成を示すブロック図。
【図2】 図1中のフラッシュメモリ12の論理アドレス空間に割り当てられるユーザ領域121と交替領域122とを示す図。
【図3】 図1中の書き込み回数テーブル131のデータ構造例を示す図。
【図4】 図1中のアドレス変換テーブル132のデータ構造例を示す図。
【図5】 図1中の書き込み履歴133のデータ構造例を示す図。
【図6】 同実施形態におけるフラッシュメモリ12へのデータ書き込みを説明するためのフローチャート。
【図7】 同実施形態におけるブロック交換処理を説明するためのフローチャートの一部を示す図。
【図8】 同実施形態におけるブロック交換処理を説明するためのフローチャートの残りを示す図。
【図9】 ブロック交換の具体例を説明するための図。
【図10】 ブロック交換の具体例を説明するための図。
【図11】 ブロック交換の具体例と交換済フラグを設ける理由とを説明するための図。
【図12】 ブロック交換の具体例と交換済フラグを設ける理由とを説明するための図。
【図13】 同実施形態におけるブロック交替処理を説明するためのフローチャート。
【図14】 同実施形態における電源投入時処理を説明するためのフローチャート。
【図15】 同実施形態におけるテーブル更新処理を説明するためのフローチャート。
【符号の説明】
11…CPU、12…フラッシュメモリ(第1の不揮発性メモリ)、13…フラッシュメモリ(第2の不揮発性メモリ)、14…ワークメモリ、15…ECC回路、131…書き込み回数テーブル(第1の書き込み回数テーブル)、132…アドレス変換テーブル(第1のアドレス変換テーブル)、133…書き込み履歴、141…書き込み回数テーブル(第2の書き込み回数テーブル)、142…アドレス変換テーブル(第2のアドレス変換テーブル)。
Claims (3)
- 物理ブロック単位でのデータの書き込みが可能な第1の不揮発性メモリと、
前記第1の不揮発性メモリ内の各物理ブロックに対する書き込みの回数を示す書き込み回数情報であって、当該物理ブロックが他の物理ブロックと交換されて、当該両ブロック間で論理ブロックアドレスと物理ブロックアドレスとの対応関係が入れ換えられるブロック交換が発生したことを示す交換済フラグ情報が付加可能な書き込み回数情報を記憶する第1の書き込み回数テーブル、及び論理ブロックアドレスを当該論理ブロックアドレスに割り当てられている前記第1の不揮発性メモリ内の物理ブロックを示す物理ブロックアドレスに変換するための変換情報を記憶する第1のアドレス変換テーブルが保存される、バイト単位でのデータの書き込みが可能な第2の不揮発性メモリと、
前記第1の書き込み回数テーブル及び前記第1のアドレス変換テーブルが第2の書き込み回数テーブル及び第2のアドレス変換テーブルとしてコピーされる揮発性メモリと、
前記第1の不揮発性メモリ内の物理ブロックへのデータ書き込みに応じて、前記第2の書き込み回数テーブル内の対応する書き込み回数情報を更新する書き込み回数更新手段と、
前記第1の不揮発性メモリ内の物理ブロックへのデータ書き込みに応じて更新された前記書き込み回数情報の示す書き込み回数が所定のチェック回数に達した場合、前記第2の書き込み回数テーブルを参照して、前記交換済フラグ情報が付加されていない物理ブロックのうち、最も書き込み回数が少ない物理ブロックを探し、当該最も書き込み回数が少ない物理ブロックと前記チェック回数に達した物理ブロックとを交換するブロック交換手段であって、前記交換された物理ブロックのうち、前記最も書き込み回数が少ない物理ブロックに対応する、前記第2の書き込み回数テーブル内の書き込み回数情報に前記交換済フラグ情報を付加するブロック交換手段と、
前記第1の不揮発性メモリに対する物理ブロック単位のデータ書き込みの履歴を表す書き込み履歴情報であって、物理ブロックアドレスと、当該物理ブロックアドレスで指定される物理ブロックへの書き込みが行われたことを示す第1の制御コード、及び当該物理ブロックが他の物理ブロックと交換されたことを示す第2の制御コードを含む複数の制御コードの1つとを含む書き込み履歴情報を前記第2の不揮発性メモリに記録する書き込み履歴記録手段と、
前記第2の不揮発性メモリに記録されている前記書き込み履歴情報に従って、前記第1の書き込み回数テーブル及び前記第1のアドレス変換テーブルを最新の状態を表すように予め定められたタイミングで更新するテーブル更新手段と、
前記テーブル更新手段による前記第1の書き込み回数テーブル及び前記第1のアドレス変換テーブルの更新完了に応じて、前記第2の不揮発性メモリに記録されている前記書き込み履歴情報を消去する手段と
を具備することを特徴とする書き換え可能な不揮発性メモリを備えた記憶装置。 - 物理ブロック単位でのデータの書き込みが可能な第1の不揮発性メモリと、
前記第1の不揮発性メモリ内の各物理ブロックに対する書き込みの回数を示す書き込み回数情報であって、当該物理ブロックが他の物理ブロックと交換されて、当該両ブロック間で論理ブロックアドレスと物理ブロックアドレスとの対応関係が入れ換えられるブロック交換が発生したことを示す交換済フラグ情報が付加可能な書き込み回数情報を記憶する第1の書き込み回数テーブル、及び論理ブロックアドレスを当該論理ブロックアドレスに割り当てられている前記第1の不揮発性メモリ内の物理ブロックを示す物理ブロックアドレスに変換するための変換情報を記憶する第1のアドレス変換テーブルが保存される、バイト単位でのデータの書き込みが可能な第2の不揮発性メモリと、
前記第1の書き込み回数テーブル及び前記第1のアドレス変換テーブルが第2の書き込み回数テーブル及び第2のアドレス変換テーブルとしてコピーされる揮発性メモリと、
前記第1の不揮発性メモリ内の物理ブロックへのデータ書き込みに応じて、前記第2の 書き込み回数テーブル内の対応する書き込み回数情報を更新する書き込み回数更新手段と、
前記第1の不揮発性メモリ内の物理ブロックへのデータ書き込みに応じて更新された前記書き込み回数情報の示す書き込み回数が所定のチェック回数に達した場合、前記第2の書き込み回数テーブルを参照して、前記交換済フラグ情報が付加されていない物理ブロックのうち、最も書き込み回数が少ない物理ブロックを探し、当該最も書き込み回数が少ない物理ブロックと前記チェック回数に達した物理ブロックとを交換するブロック交換手段であって、前記交換された物理ブロックのうち、前記最も書き込み回数が少ない物理ブロックに対応する、前記第2の書き込み回数テーブル内の書き込み回数情報に前記交換済フラグ情報を付加するブロック交換手段と、
前記第1の不揮発性メモリの領域を、論理的に、ユーザ領域と当該ユーザ領域内の不良ブロックと交替して用いられる物理ブロックを提供する交替領域とに分けて管理する手段と、
前記第1の不揮発性メモリ内の物理ブロックへのアクセス時に当該物理ブロックが不良ブロックであることを検出する手段と、
前記不良ブロックの検出に応じて当該不良ブロックを前記交替領域内の有効な物理ブロックに交替するブロック交替手段と、
前記第1の不揮発性メモリに対する物理ブロック単位のデータ書き込みの履歴を表す書き込み履歴情報であって、物理ブロックアドレスと、当該物理ブロックアドレスで指定される物理ブロックへの書き込みが行われたことを示す第1の制御コード、当該物理ブロックが他の物理ブロックと交換されたことを示す第2の制御コード、当該物理ブロックが前記交替領域内の有効な物理ブロックと交替されたことを示す第3の制御コードを含む複数の制御コードの1つとを含む書き込み履歴情報を前記第2の不揮発性メモリに記録する書き込み履歴記録手段と、
前記第2の不揮発性メモリに記録されている前記書き込み履歴情報に従って、前記第1の書き込み回数テーブル及び前記第1のアドレス変換テーブルを最新の状態を表すように予め定められたタイミングで更新するテーブル更新手段と、
前記テーブル更新手段による前記第1の書き込み回数テーブル及び前記第1のアドレス変換テーブルの更新完了に応じて、前記第2の不揮発性メモリに記録されている前記書き込み履歴情報を消去する手段と
を具備することを特徴とする書き換え可能な不揮発性メモリを備えた記憶装置。 - 物理ブロック単位でのデータの書き込みが可能な第1の不揮発性メモリと、前記第1の不揮発性メモリ内の各物理ブロックに対する書き込みの回数を示す書き込み回数情報であって、当該物理ブロックが他の物理ブロックと交換されて、当該両ブロック間で論理ブロックアドレスと物理ブロックアドレスとの対応関係が入れ換えられるブロック交換が発生したことを示す交換済フラグ情報が付加可能な書き込み回数情報を記憶する第1の書き込み回数テーブル、及び論理ブロックアドレスを当該論理ブロックアドレスに割り当てられている前記第1の不揮発性メモリ内の物理ブロックを示す物理ブロックアドレスに変換するための変換情報を記憶する第1のアドレス変換テーブルが保存される、バイト単位でのデータの書き込みが可能な第2の不揮発性メモリとを備えた記憶装置において、前記第1の不揮発性メモリを記憶装置用不揮発性メモリとして制御する記憶装置用不揮発性メモリの制御方法であって、
前記第1の書き込み回数テーブル及び前記第1のアドレス変換テーブルを、それぞれ第2の書き込み回数テーブル及び第2のアドレス変換テーブルとして、予め定められたタイミングで揮発性メモリにコピーするステップと、
前記第1の不揮発性メモリ内の物理ブロックへのデータ書き込みに際し、当該データ書き込みの対象となる前記第1の不揮発性メモリ内の物理ブロックに対応する、前記第2の書き込み回数テーブル内の書き込み回数が所定のチェック回数に達しているかを判定するステップと、
前記所定のチェック回数に達していない場合、前記データ書き込みの対象となる前記第 1の不揮発性メモリ内の物理ブロックにデータを書き込むステップと、
前記所定のチェック回数に達した場合、前記第2の書き込み回数テーブルを参照して、前記交換済フラグ情報が付加されていない前記第1の不揮発性メモリ内の物理ブロックのうち、最も書き込み回数が少ない物理ブロックを探し、当該最も書き込み回数が少ない物理ブロックと前記チェック回数に達した物理ブロックとを交換するステップと、
前記交換された物理ブロックのうち、前記最も書き込み回数が少ない物理ブロックに対応する、前記第2の書き込み回数テーブル内の書き込み回数情報に前記交換済フラグ情報を付加するステップと、
前記交換された物理ブロックのうち、前記最も書き込み回数が少ない物理ブロックにデータを書き込むステップと、
前記第1の不揮発性メモリ内の物理ブロックへのデータ書き込みに応じて、前記第2の書き込み回数テーブル内の対応する書き込み回数情報を更新するステップと、
前記データ書き込みの対象となる物理ブロックへのデータ書き込み時には、前記第1の不揮発性メモリ内の物理ブロックに対するデータ書き込みの履歴を表す書き込み履歴情報であって、物理ブロックアドレスと、当該物理ブロックアドレスで指定される物理ブロックへの書き込みが行われたことを示す第1の制御コードとを含む書き込み履歴情報を前記第2の不揮発性メモリに記録し、
前記交換された物理ブロックのうち、前記最も書き込み回数が少ない物理ブロックへのデータ書き込み時には、物理ブロックアドレスと、当該物理ブロックアドレスで指定される物理ブロックが他の物理ブロックと交換されたことを示す第2の制御コードを含む書き込み履歴情報を前記第2の不揮発性メモリに記録するステップと、
前記第2の不揮発性メモリに記録されている前記書き込み履歴情報に従って、前記第1の書き込み回数テーブル及び前記第1のアドレス変換テーブルを最新の状態を表すように予め定められたタイミングで更新するステップと、
前記第1の書き込み回数テーブル及び前記第1のアドレス変換テーブルの更新完了に応じて、前記第2の不揮発性メモリに記録されている前記書き込み履歴情報を消去するステップと
を具備することを特徴とする記憶装置用不揮発性メモリの制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003121578A JP3808842B2 (ja) | 2003-04-25 | 2003-04-25 | 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003121578A JP3808842B2 (ja) | 2003-04-25 | 2003-04-25 | 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004326523A JP2004326523A (ja) | 2004-11-18 |
JP3808842B2 true JP3808842B2 (ja) | 2006-08-16 |
Family
ID=33500103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003121578A Expired - Fee Related JP3808842B2 (ja) | 2003-04-25 | 2003-04-25 | 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3808842B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327068B2 (en) | 2005-03-03 | 2012-12-04 | Panasonic Corporation | Memory module, memory controller, nonvolatile storage, nonvolatile storage system, and memory read/write method |
KR100789406B1 (ko) | 2006-11-03 | 2007-12-28 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 |
JP4899946B2 (ja) * | 2007-03-06 | 2012-03-21 | 横河電機株式会社 | ディスク装置およびこれを用いた測定装置 |
JP5096847B2 (ja) * | 2007-09-10 | 2012-12-12 | 株式会社リコー | アクセス制御装置、アクセス制御方法、アクセス制御プログラム、記録媒体、記憶装置および画像処理装置 |
US8060719B2 (en) * | 2008-05-28 | 2011-11-15 | Micron Technology, Inc. | Hybrid memory management |
JP5528011B2 (ja) * | 2008-10-30 | 2014-06-25 | 京セラ株式会社 | 電子機器及び電子機器の制御方法 |
KR20100091544A (ko) * | 2009-02-10 | 2010-08-19 | 삼성전자주식회사 | 메모리 시스템 및 그 마모도 관리 방법 |
JP5949816B2 (ja) | 2014-03-19 | 2016-07-13 | 日本電気株式会社 | キャッシュ制御装置及びその制御方法、ストレージ装置、並びにコンピュータ・プログラム |
-
2003
- 2003-04-25 JP JP2003121578A patent/JP3808842B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004326523A (ja) | 2004-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6223308B1 (en) | Identification and verification of a sector within a block of mass STO rage flash memory | |
KR100644602B1 (ko) | 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조 | |
US8793430B2 (en) | Electronic system having memory with a physical block having a sector storing data and indicating a move status of another sector of the physical block | |
US5907856A (en) | Moving sectors within a block of information in a flash memory mass storage architecture | |
USRE45222E1 (en) | Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table | |
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 | |
JP4079506B2 (ja) | 不揮発性半導体メモリシステムの制御方法 | |
US8037232B2 (en) | Data protection method for power failure and controller using the same | |
JP3078946B2 (ja) | 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置 | |
US5742934A (en) | Flash solid state disk card with selective use of an address conversion table depending on logical and physical sector numbers | |
JP5612514B2 (ja) | 不揮発性メモリコントローラ及び不揮発性記憶装置 | |
US20020085433A1 (en) | Data management system and data management method | |
KR100370893B1 (ko) | 일괄 소거형 비휘발성 메모리 장치 | |
JP5073402B2 (ja) | メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム | |
US20100306447A1 (en) | Data updating and recovering methods for a non-volatile memory array | |
JP3808842B2 (ja) | 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 | |
JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
EP2264602A1 (en) | Memory device for managing the recovery of a non volatile memory | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP3670151B2 (ja) | フラッシュメモリのアクセス方法、フラッシュメモリへアクセスするドライバを備えるシステム、および、フラッシュメモリ | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP2000122909A (ja) | 不揮発性メモリを使用した外部記憶装置 | |
JP2009026062A (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060117 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060320 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060516 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060518 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090526 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100526 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100526 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110526 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110526 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120526 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120526 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130526 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130526 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140526 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |