JP4280055B2 - メモリ制御方法および装置 - Google Patents

メモリ制御方法および装置 Download PDF

Info

Publication number
JP4280055B2
JP4280055B2 JP2002339085A JP2002339085A JP4280055B2 JP 4280055 B2 JP4280055 B2 JP 4280055B2 JP 2002339085 A JP2002339085 A JP 2002339085A JP 2002339085 A JP2002339085 A JP 2002339085A JP 4280055 B2 JP4280055 B2 JP 4280055B2
Authority
JP
Japan
Prior art keywords
page
segment
pages
memory
procedure
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
Application number
JP2002339085A
Other languages
English (en)
Other versions
JP2003228513A (ja
Inventor
和信 柏渕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Access Co Ltd
Original Assignee
Access Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Access Co Ltd filed Critical Access Co Ltd
Priority to JP2002339085A priority Critical patent/JP4280055B2/ja
Publication of JP2003228513A publication Critical patent/JP2003228513A/ja
Application granted granted Critical
Publication of JP4280055B2 publication Critical patent/JP4280055B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、メモリをファイルおよびデータ記憶用途として用いる為のメモリ制御方法および装置に関する。
【0002】
【従来の技術】
情報機器の普及を背景として、フラッシュメモリの利用が拡大している。フラッシュメモリは、電気的に消去および再書き込みができる不揮発性メモリである。フラッシュメモリは、複数の消去ブロックから構成され、消去ブロックを単位として消去する構成であり、また各消去ブロックには数万回程度といわれる消去回数の寿命がある。
【0003】
また、フラッシュメモリの利用拡大と共に、フラッシュメモリをハードディスクのような外部記憶装置用途として用いるためのファイルシステムの実現が要求されている。
【0004】
【発明が解決しようとする課題】
このようなファイルシステムにおいて、メモリアクセスに関する高速化・高信頼化などの要求があるのはもちろんのこと、フラッシュメモリが消去ブロックを消去単位としていること、データが書き込まれた位置に直接上書きをすることができないことなどから、フラッシュメモリを外部記憶装置として用いる為の効率的な制御が要求される。また、フラッシュメモリは様々な情報機器に搭載されることから、ファイルシステムを特定のCPUやOS(Operating System)に依存しないように構成する必要が生じる。
【0005】
本発明は、このような事情に鑑みてなされた。すなわち本発明の目的は、メモリの各消去ブロックの消去回数を高い精度で平均化できる制御方法および装置を提供することである。
【0006】
【課題を解決するための手段】
上記目的を達成するため、メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とし、前記セグメント単位で消去回数を管理するとともに、上位プログラムからのアクセス要求を受け前記ページ単位で前記メモリ内の記憶領域を指定するメモリ制御方法であって、セグメントの消去回数に基づいて、少なくとも1つの有効ページを含むセグメントを消去セグメントとして選択し、上記消去セグメントに含まれる前記少なくとも1つの有効ページの各々に対して、(1)未使用ページがあるセグメントにおける未使用ページ数とそのセグメントの消去回数とに基づいて当該ページの内容を転送する転送先を決定し、(2)当該ページの内容を前記転送先に転送する、という処理を順次行い、前記消去セグメント内の全ての有効ページの転送が終了した後、前記転送元セグメント内のデータを消去するこのような、セグメントの転送・消去を行うことによって、消去回数の少ないセグメントを使用可能な状態にすることができ、各セグメントの消去回数を平均化できる。この処理は、いわゆるガベージコレクションに対応する。転送元セグメント内の有効ページ毎に移動先が決定される(すなわち、移動先のセグメントが1個に固定されない)ので、ページ転送の中断による問題を回避することができる。また、メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とし、前記セグメント単位で消去回数を管理するとともに、上位プログラムからのアクセス要求を受け前記ページ単位で前記メモリ内の記憶領域を指定するメモリ制御方法であって、セグメントの消去回数に基づいて、少なくとも1つの有効ページを含むセグメントを消去セグメントとして選択し、上記消去セグメントに含まれる前記少なくとも1つの有効ページの各々に対して、(1)当該ページの内容を転送する転送先を決定し、(2)当該ページの内容を前記転送先に転送する、という処理を順次行い、前記消去セグメント内の全ての有効ページの転送が終了した後、前記転送元セグメント内のデータを消去すること、を含み、前記少なくとも1つの有効ページを含むセグメントを消去セグメントとして選択することは、前記少なくとも1つの有効ページを含むセグメントの消去回数に加えて、前記少なくとも1つの有効ページを含むセグメントにおける書き込みデータが無効のページ数、および前記少なくとも1つの有効ページを含むセグメントにおける書込みデータが有効のページ数を加味して前記転送元セグメントを決定し、さらに、前記少なくとも1つの有効ページを含むセグメントを消去セグメントとして選択することは、前記少なくとも1つの有効ページを含むセグメントのうち消去回数が少ない順に第1所定数のセグメントを選択する手順と、選択された前記第1所定数のセグメントのうち、書込みデータが無効のページ数が多い順に第2所定数のセグメントを選択する手順と、選択された前記第2所定数のセグメントのうち、書込みデータが有効のページ数が少ない順に第3所定数のセグメントを選択する手順と、選択された前記第3所定数のセグメントのうちの1つを前記転送元セグメントとして決定する手順と、を含む。
【0007】
上記目的を達成するため、本発明のメモリの消去制御装置は、複数のページに分割されたセグメント毎の消去回数を記憶する記憶手段と、各セグメント毎の消去回数に基づいて、各セグメントの消去回数の差が少なくなるように、消去回数の少ない領域を優先的に消去するように前記メモリの消去を制御する消去制御手段と、各セグメントが消去される回数が少なくなるように、消去回数の少ない領域を優先的に転送先として決定する転送制御手段と、を有する。消去回数の少ない領域が優先的に消去され、各セグメントの消去回数を平均化することができる。
【0008】
上記目的を達成するため、本発明のメモリ制御方法は、メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とし、前記セグメント単位で消去回数を管理するとともに、上位プログラムからのアクセス要求を受け前記ページ単位で前記メモリ内の記憶領域を指定するメモリ制御方法であって、全ページが未使用でないセグメントのうちそれぞれのセグメントの消去回数に基づいて転送元セグメントを決定する転送元決定手順と、未使用ページがあるセグメントのうち各セグメントの消去回数に基づいて転送先セグメントを決定する転送先決定手順と、前記転送元セグメント内の書込みデータが有効のページ毎に、前記転送先決定手順により転送先セグメントの決定をそれぞれ行い、前記決定された転送先セグメント内の未使用のページに前記転送元セグメント内の書込みデータが有効のページのデータを転送する転送手順と、前記転送元セグメント内の書込みデータが有効な全てのページについて前記転送手順によって転送が終了したならば、前記転送元セグメント内のデータを消去する消去手順と、から成るセグメント転送手順を含み、前記転送先決定手順は、前記未使用ページがあるセグメントのうちそれぞれのセグメントの消去回数に加えて、前記未使用ページがあるセグメントにおける未使用ページ数を加味して前記転送先セグメントを決定する。ガベージコレクションにおいて、転送元セグメント内の有効ページ毎に移動先が決定される(すなわち、移動先のセグメントが1個に固定されない)ので、ページ転送の中断による問題を回避することができる。
【0009】
ここで、前記転送元決定手順は、全ページが未使用でないセグメントの消去回数に加えて、全ページが未使用でないセグメントにおける書き込みデータが無効のページ数、および前記全ページが未使用でないセグメントにおける書込みデータが有効のページ数を加味して転送元セグメントを決定する構成であることが好ましい
【0010】
この場合、前記転送元決定手順は、全ページが未使用でないセグメントのうち消去回数が少ない順に第1所定数のセグメントを選択する手順と、選択された前記第1所定数のセグメントのうち、書込みデータが無効のページ数が多い順に第2所定数のセグメントを選択する手順と、選択された前記第2所定数のセグメントのうち、書込みデータが有効のページ数が少ない順に第3所定数のセグメントを選択する手順と、選択された前記第3所定数のセグメントのうちの1つを前記転送元セグメントとして決定する手順とから構成することができる
【0011】
また、前記転送元決定手順は、直前に実行された前記転送元決定手順によって決定された転送元セグメントを対象外とする手順をさらに含むことが好ましい同じセグメントが連続して消去されるのを回避することができる。
【0012】
前記転送先決定手順は、前記未使用ページがあるセグメントのうちそれぞれのセグメントの消去回数に加えて、前記未使用ページがあるセグメントにおける未使用ページ数を加味して前記転送先セグメントを決定する構成であることが好ましい
【0013】
この場合、前記転送先決定手順は、前記空きページが存在するセグメントのうち消去回数が少ない順に第4所定数のセグメントを選択する手順と、選択された前記第4所定数のセグメントのうち、未使用のページ数が多い順に第5所定数のセグメントを選択する手順と、選択された前記第5所定数の前記セグメントのうち1つを前記転送先セグメントとして選択する手順とから構成することができる
【0014】
前記転送先決定手順は、直前に実行された前記転送先決定手順によって決定された転送先セグメント内に未使用のページが存在する場合には、前記直前に決定された転送先セグメントを転送先セグメントとして決定する手順をさらに含むことが好ましい転送先セグメントの決定を高速化することができる。
【0015】
本メモリ制御方法が、前記メモリ内の全ページのうち未使用のページのページ数が第1しきい値以下となること、または、前記全ページのうち書込みデータが無効のページのページ数が第2しきい値以上となることの少なくとも一方の条件が満たされる場合に、前記セグメント転送手順の実行を開始させる手順を含むことが好ましいメモリの空き状況に応じてセグメント転送処理を自動的に開始させることができる。
【0016】
上記目的を達成するため、メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とし、前記セグメント単位で消去回数を管理する。そして、上位プログラムからのアクセス要求を受け前記ページ単位で前記メモリ内の記憶領域を指定するメモリ制御方法とする。本メモリ制御方法に、前記上位プログラムからのアクセス要求がある毎に、RAM上に転送元セグメント番号が記憶されているか否かを判定し、前記RAM上に転送元セグメント番号が記憶されていない場合には、前記消去回数に基づいて転送元セグメントを決定して前記RAM上に記憶する手順、前記RAM上に転送元セグメント番号が記憶されているか否かを判定し、前記RAM上に前記転送元セグメント番号が記憶されている場合には、前記転送元セグメント内の書込みデータが有効のページのうち1以上のページについて各ページ毎に、データの転送先として前記消去回数に基づいて転送先セグメントをそれぞれ決定し、前記決定された転送先セグメント内の未使用のページに前記1以上の転送元のページのデータを転送する手順、前記転送元セグメントの書込みデータが有効のページの全てについて前記転送が終了しているか判定し、前記転送が終了している場合には、前記転送元セグメントが転送の対象であることを解除する為に該転送元セグメントが消去中であることを前記RAM上に記憶するとともに前記転送元セグメントの消去を開始する手順、前記RAMを参照して前記転送元セグメントの消去が終了しているか否かを判定し終了している場合には、前記RAM上における前記転送元セグメントが消去中であることを解除する手順、の少なくともいずれか1つの手順を実行させるセグメント転送手順を含めるセグメント転送・消去(ガベージコレクション)を、上記の手順によって実現することで、ガベージコレクションをバックグラウンド処理として行うことができる。また、ガベージコレクションのページ移動を分散して行うことができる。
【0017】
この場合において、前記メモリ内の全ページのうち未使用のページのページ数が第1しきい値以下となること、または、前記全ページのうち書込みデータが無効のページのページ数が第2しきい値以上となることの少なくとも一方の条件が満たされる場合のみ、前記セグメント転送手順の実行を開始させる構成であることが好ましい
【0018】
上記目的を達成するため、本発明のメモリ制御方法は、メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成として管理する。さらに、前記セグメントをデータ領域とセグメント管理情報の格納領域に分け、前記ページをデータ領域とページ管理情報の格納領域とに分けた構成であるとみなし、論理ページ番号を指定単位として記憶装置へのアクセスを行う上位プログラムから前記論理ページ番号を受け取り、前記ページ単位で前記メモリ内の記憶領域を指定するメモリ制御方法とする。さらに、本メモリ制御方法に、前記セグメントの消去回数を前記セグメント管理情報に書き込んで管理するセグメント管理手順と、前記ページ管理情報にアクセス対象の論理ページ番号が含まれるか否かを検索する検索手順と、上位プログラムから書込み要求のあった書込みデータを書き込むべきページとして、未使用ページがあるセグメントのうちそれぞれのセグメントの消去回数に基づいてセグメントを1つ選択し該選択されたセグメント内の未使用のページを割り当るページ割当て手順と、前記上位プログラムから書込み要求があった際に前記検索手順による検索を行った結果、指定された前記論理ページ番号が検索されなかった場合には、前記ページ割当て手順により書込み対象のページを割り当て、前記割り当てられたページのページ管理情報格納領域に前記書込み対象の論理ページ番号を格納するとともに、該割り当てられたページのデータ領域に前記書込みデータを書き込む新規ページ書込手順と、前記上位プログラムから書込み要求があった際に前記検索手順による検索を行った結果、指定された前記論理ページ番号が検索された場合には、前記ページ割当て手順により書込み対象のページを割り当て、前記割り当てられたページのページ管理情報格納領域に前記検索されたページのページ管理情報格納領域の内容を転送するとともに、該割り当てられたページのデータ領域に前記書込みデータを書き込み、さらに、前記検索されたページのページ管理情報に該検索されたページのデータが無効であることを示す情報を書き込む既存ページ書込手順と、を含み、前記ページ割当て手順は、前記未使用ページがあるセグメントのうちそれぞれのセグメントの消去回数に加えて、前記未使用ページがあるセグメントにおける未使用ページ数を加味してセグメントを1つ選択する。新規ページ書込手順、或いは既存ページ書き込み手順において用いる書き込み対象のセグメントを、セグメント消去回数にもとづいて、例えば消去回数の少ないセグメントに決定することができる。
【0020】
前記ページ割当て手順は、前記空きページが存在すセグメントのうち消去回数が少ない順に第4所定数のセグメントを選択する手順と、選択された前記第4所定数のセグメントのうち、未使用のページ数が多い順に第5所定数のセグメントを選択する手順と、選択された前記第5所定数の前記セグメントのうち1つを選択する手順と、を含む構成であることが好ましい
【0021】
ここで、前記メモリ制御方法に、前記ページ割り当て手順によって割り当てたページの前記メモリ内の記憶領域における先頭アドレスを記憶する手順をさらに含める構成とした場合、前記検索手順は、前回の前記ページ割り当て手順によって割り当てられることにより記憶された前記先頭アドレスを用いて、前記アクセス対象の論理ページ番号が前記メモリ内にあるか否かを検索する構成とすることができる
【0022】
また、前記ページ割当て手順は、直前に実行された前記ページ割当て手順によって割り当てられたセグメント内に未使用のページが存在する場合には、そのページを前記割り当て対象のページとする手順をさらに含むことが好ましい。
【0023】
また、前記新規ページ書込手順は、前記書込みデータについて0が多いか1が多いかを調べ、0が多い場合でかつ前記メモリが消去後のデータが1になるタイプである場合、または、1が多い場合でかつ前記メモリが消去後のデータが0になるタイプである場合、前記書込みデータを反転して前記割り当てられたページに書き込むとともに、データ反転を行ったかどうかの情報を前記割り当てられたページのページ管理情報に書き込む手順を含むことが好ましい書き込みデータをメモリの仕様に合わせて適応化させることで、書き込みを高速化することができる。
【0024】
また、前記新規ページ書込手順は、前記書込みデータが全て前記メモリの消去直後のデータと一致する場合、前記ページ割当て手順により書込み対象のページを割り当て、前記割り当てられたページのページ管理情報の格納領域に前記書込み対象の論理ページ番号を格納するが、該割り当てられたページのデータ領域には前記書込みデータを書き込まないこととする手順をさらに含むことが好ましい消去後の状態として既に設定されているデータを書き込まないことで、書き込みを高速化することができる。
【0025】
前記既存ページ書込手順は、指定された前記論理ページ番号が検索された場合に、検索されたページのデータ領域のデータを読み込み、読み込まれた前記検索されたページのデータが前記書込みデータと同じである場合には書き込みを行わずに、前記既存ページ書込み手順を終了させる手順をさらに含むことが好ましい既に書き込まれているデータを書き込まないことで、書き込みを高速化できる。
【0026】
また、前記既存ページ書込手順は、指定された前記論理ページ番号が検索された場合に、検索されたページのデータ領域のデータを読み込み、前記書込みデータが、読み込まれた前記検索されたページのデータに対して上書き可能なタイプのデータである場合、前記ページ割当て手順によるページの割り当てを行わず、前記書込みデータを前記検索されたページに上書きする手順をさらに含むことが好ましいページの割り当てを行わないことで、書き込みを高速化することができる。
【0039】
【発明の実施の形態】
図1は、本発明の実施形態としての物理記憶デバイスドライバモジュール5(以下、PDM5と記す)の位置付けを表している。図1に示すように、アプリケーションプログラム1からのファイルアクセスは、論理ファイルシステムモジュールであるLFM3によって論理ページ(セクタ)単位のアクセスとされる。つまり、LFM3は、ディスク装置の論理セクタをアクセスするように、PDM5に対してアクセスを行う。LFM3は、ファイルアクセスを、論理ページ番号をアドレス指定単位とするアクセスにする機能を持つ他、主な機能としてFAT(File Allocation Table)の管理、パーティションの管理などを行う、一般的な論理ファイルシステムモジュールであるものとする。
【0040】
PDM5は、LFM3からアクセス要求として指定された論理ページ番号をもとに、PDM5内で管理するフラッシュメモリA、またはB内のセグメント番号とオフセット(物理ページ番号)に対応する仮想アドレスを指定して、下位モジュールのメモリテクノロジドライバモジュール7(以下、MTDM7と記す)に対してアクセス要求を行う。MTDM7は、PDM5からの仮想アドレスを、システム内の実メモリアドレスに変換してフラッシュメモリA、またはBにアクセスする機能を提供する。
【0041】
以下では、PDM5が提供するメモリ制御機能を下記の項目順に詳細に説明する。
1.フラッシュメモリの構造化
2.フラッシュメモリ内の物理ページの検索
3.フラッシュメモリへの論理ページ書き込み
4.フラッシュメモリの論理ページ削除
5.フラッシュメモリからの論理ページ読み出し
6.ガベージコレクション(GC)
7.ウエアレベリング(Wear Leveling)
8.インクリメンタルガベージコレクション(IGC)
9.ページ位置のキャッシング
10.メディアへの書き込み・消去の一時停止
11.不良ページへの対処
12.不良セグメントへの対処
13.書き込みデータのフラッシュメモリとアプリケーションへの適応化
14.書き込みデータのページごとのフラッシュメモリへの適応化
15.メディアの物理フォーマット処理
16.メディアの論理フォーマット処理
17.メディアのロック・ロック解除
18.書き込み中の中断からの回復
19.物理フォーマット・消去中の中断からの回復
20.物理メモリフルでのデッドロックの回避
21.ページ割当てマップ(PAM)
22.自動ガベージコレクション(自動GC)
23.GC開始条件
24.書き込みデータの適応化
25.最終割り当てページ位置記憶
26.最終検索ページ位置記憶
27.ページデータサイズの自動判定
28.物理フォーマットの自動判定
29.PDM5における仮想アドレス空間
30.メモリ待ち時間の自動判定
31.フラッシュメモリドライバへの特化
32.RAMによるフラッシュメモリのエミュレーション
【0042】
また、本明細書において用いる用語を次のように定義する。
「消去ブロック」: フラッシュメモリが1度に消去するメモリ領域(例えば、NOR型のフラッシュメモリでは64kB, NAND型のフラッシュメモリでは8kB程度である)
「ガベージコレクション(GC)」: フラッシュメモリ中のデータを書き換える場合、同じ領域に繰り返して書き込むことが不可能なので、別な領域に書き換えデータを書き込む。それを繰り返すと、メモリが古いデータ(無効なデータ)で一杯になるため、消去ブロック中の有効なデータだけを別なユニットにコピーし、その消去ブロックを消去する必要がある。そのコピー・消去処理をガベージコレクションという。
「ウエアレベリング(Wear leveling)」: フラッシュメモリは、消去ブロックごとに消去回数の上限が決っているため、同じユニットを繰り返して使うと、そのユニットの寿命が短くなる。それを防ぐために、各ユニットを平均して使うための処理。
「NOR型フラッシュメモリ」: 1バイト単位でランダムアクセス可能なフラッシュメモリ
「NAND,AND型フラッシュメモリ」: ページ(通常 512+16バイト)単位でアドレスを指定し、1バイトずつシリアルにアクセスするフラッシュメモリ
「ページ」: PDM5が扱う最小のデータブロック (通常512バイト)
「物理ページ」: フラッシュメモリ中の物理的順序で規定されるページ。
「論理ページ」: 論理的な番号(論理ページ番号)で指定されるページ。ディスクの論理セクタに対応する。
「セグメント」: PDM5が、ガベージコレクション・消去を行う単位。物理ページ、消去ブロックの集合。
【0043】
なお、以下では、ステップ番号を用いて各処理単位の手順を説明しているが、各処理単位では原則としてステップ番号の若い順に手順が実行されるものとする。同一のステップ番号に「'」「"」などの記号を付加して用いたステップ番号は、条件によって処理内容が変わる場合などを示している。なお、本発明の範囲を逸脱しない範囲で、各処理単位における手順の順序を変える、手順の一部を省くなどの変形を行うことができることはいうまでもない。
【0044】
1.フラッシュメモリの構造化
PDM5は、フラッシュメモリを図2のように構造化して管理する。図2を参照して、PDM5におけるフラッシュメモリの構造化について説明する。
フラッシュメモリチップのメモリ領域50を、等しいサイズを持つ複数の「セグメント」(符号20)に分割する。ここで、セグメントは次のような性質を持つ。
・各セグメントは、固有の番号「物理セグメント番号」を持つ。
・システム内にメモリチップが複数存在する場合、物理セグメント番号は、システム内で一意に割り当てられる。
・セグメントは、等しいサイズを持つ複数の「ページ」より構成される。
・セグメントは、フラッシュメモリでデータを消去する単位である「消去ブロック」(符号40)を、1つ以上含む。
・セグメントは、消去ブロックの整数倍の大きさを持つ。
【0045】
また、各セグメントは、セグメント内に、自セグメントの管理情報(セグメントの状態、消去回数)(符号21)を持つ。セグメントの管理情報の格納位置は、全セグメントで同じであるものとする。
【0046】
PDM5において、セグメントの状態は次の5種類で管理される。セグメントの状態の定義を以下に示す。
「未使用」: セグメントが未使用である。(メモリの消去直後の状態)
「有効」: セグメントが有効である。(セグメントはフォーマット済みである。ページを読み書き可能である。)
「削除済み」: セグメントは無効である。(セグメント内に有効なデータはない)「不良」: セグメントは不良である。(セグメントのメモリの大半が不良であるので使用できない)
「予約」: セグメントは予約されている。
【0047】
図3は、セグメント管理情報21の一例を示している。図3に示す例において、セグメント管理情報21には、マジックコード(領域22)、セグメントの状態管理(領域23)、および消去回数の管理(領域24)のための領域が含まれている。マジックコード(領域22)としては、例えば文字列“SEG”を使用することができる。セグメントの状態管理の領域23では、bビット、dビット、vビット、rビットの各ビットによって、それぞれ、セグメントの「不良」、「削除済み」、「有効」、「予約」の各状態を管理する。また、セグメントの消去回数の管理領域24には、セグメントの消去回数を書き込む。
【0048】
上位モジュール(LFM3など)は、ページサイズを単位として、フラッシュメモリにアクセスし、フラッシュメモリ内のページを「論理ページ番号」で指定する。なお、論理ページ番号は、連続する一意の整数である。ページ(符号30)は、次のような性質を持つ。
・各ページは、セグメント内で固有な「物理ページオフセット」を持つ。
・物理ページオフセットは、実際には、0から始まるセグメント内のページの通し番号である。
・ページは、物理セグメント番号と物理ページオフセットの組(「物理ページ番号」)で一意に指定される。
・各ページは、ページ内に自ページの管理情報31(論理ページ番号、ページの状態、拡張情報)と、データを記録する領域36(「ページデータ」)を持つ(図4参照)。
【0049】
ページの状態は次の5種類で管理される。ページの状態の定義を以下に示す。
「未使用」: ページが未使用である。(メモリの消去直後の状態)
「有効」: ページが有効である。(ページ内のデータが有効である)
「削除済み」: ページは削除された。(ページ内のデータは更新された)
「不良」: ページは不良である。(ページのメモリが不良であるので使用できない)
「予約」: ページは予約されている。(ページに書き込み中である)
各ページは、拡張情報として、「更新中フラグ」「反転フラグ」を持つ。
【0050】
図4は、ページの詳細な構成の一例を示している。図4に示す例において、ページ管理情報31には、マジックコード(領域32)、ページの状態管理(領域33)、論理ページ番号(領域34)、および拡張情報(領域35)のための領域が含まれている。マジックコード(領域32)としては、例えば文字列“PAGE”を使用することができる。ページの状態管理の領域33では、bビット、dビット、vビット、rビットの各ビットによって、それぞれ、ページの「不良」、「削除済み」、「有効」、「予約」の各状態を管理する。領域34には、論理ページ番号を格納する。また、拡張情報の領域35の、uビット、iビットの各ビットは、それぞれ、「更新中フラグ」、「反転フラグ」として用いられる。
【0051】
上記のように、PDM5は、ページ・セグメント自体に自分の管理情報を持たせるため、管理情報を「テーブル」として集中させてフラッシュメモリ内に格納する他の方式に比べ、以下のメリットがある。
・テーブル破損によるメモリの管理構造の破壊の危険性が少ない。
・ページ書き換えの際に、書き換える箇所が1箇所で済むため、書き換え速度が高速になる。
【0052】
2.物理ページの検索
上位モジュールから受け取った論理ページ番号をもとにフラッシュメモリ内のページ(「物理ページ」)にアクセスするために、論理ページ番号から物理ページ番号に変換する必要がある。論理ページ番号から物理ページ番号に変換することは、以下の手順(以下、ページ検索処理と記す)によって達成される。
(手順)
ステップS201. システム中の全セグメントより、状態が「有効」のセグメントを探す。
ステップS202. そのセグメント内で、状態が「有効」のページを探す。
ステップS203. そのページの管理情報より論理ページ番号を読み出し、アクセス対象の論理ページ番号と一致するか調べる。
ステップS204. アクセス対象の論理ページ番号と、ページの管理情報の論理ページ番号が一致するページを見つけるまで、S201-S203を繰り返す。
なお、物理ページの検索には時間がかかるため、ページ情報のキャッシング(後述の「9.ページ位置のキャッシング」参照)を行うことで速度を向上させることができる。
【0053】
3.フラッシュメモリへの論理ページ書き込み
上位モジュールから論理ページ番号を指定しての書き込み要求があると、PDM5は、以下の手順でフラッシュメモリへの書き込み処理を行う。
(手順)
ステップS301. 論理ページ番号により、アクセス対象の物理ページを検索する(上記のページ検索処理による)。
ステップS302. メモリより未使用ページを探し、そのページにアクセス対象の論理ページ番号を割り当て、状態を「予約」にする。
ステップS303. 新しく割り当てたページにデータを書き込む。
ステップS304. (S301でアクセス対象の物理ページが存在していた場合)元の物理ページの「更新中フラグ」を有効にする。
ステップS305. 新しく割り当てたページの状態を「有効」にする。
ステップS306. (S301でアクセス対象の物理ページが存在していた場合) 元の物理ページを削除する(後述の「4.フラッシュメモリの論理ページ削除」参照)。以下の説明では、アクセス対象の物理ページが存在しない場合のページ書き込み処理を「新規ページ書き込み」、アクセス対象の物理ページが存在する場合のページ書き込み処理(S304,S306が伴う)を「ページ上書き」と表現する。
【0054】
フラッシュメモリへの書き込み処理を上記のような手順によって行うことで、以下のようなメリットが得られる。
・書き込み中(S301-S305)に中断しても、元のページまたは、新しいページが完全な状態で残る。
・書き込み中(S303-S305の間)に中断された場合、新しいページは「予約」状態で残るため、再起動後、GC可能である(GCの対象とすることができる)。
・元の物理ページの削除前に中断された場合、古いページの「更新中フラグ」が有効なので、書き込みの中断があったことを知ることができる。同じ論理ページ番号で、「更新中フラグ」が無効なページがある場合、古いページを削除することができる。なお、中断とは、書き込み処理中のシステムの電源断などによる処理の中断をいう。
【0055】
4. フラッシュメモリの論理ページ削除
上位モジュールから論理ページ番号を指定しての削除要求があると、PDM5は、以下の手順でフラッシュメモリのページ削除処理を行う。
(手順)
ステップS401. 論理ページ番号により、アクセス対象の物理ページを検索する(上記のページ検索処理による)。
ステップS402. 物理ページを削除する(S411)。
ここで、フラッシュメモリの物理ページ削除は、下記の手順で行う。
ステップS411. 物理ページの状態を「削除済み」にする。
【0056】
5. フラッシュメモリからの論理ページ読み出し
上位モジュールから論理ページ番号を指定しての読み出し要求があると、PDM5は、以下の手順でフラッシュメモリからの読み出し処理を行う。
(手順)
ステップS501. 論理ページ番号により、アクセス対象の物理ページを検索する(上記のページ検索処理による)。
ステップS502. (S501でアクセス対象の物理ページが存在していた場合) その物理ページのデータを読み出す。
ステップS502'. (S501でアクセス対象の物理ページが存在していない場合) ダミーのデータを読み出す。
【0057】
6. ガベージコレクション(GC)
フラッシュメモリの空き容量が少なくなった場合、以下の手順で、ガベージコレクションを行う。
(手順)
ステップS601. Wear leveling(後述の「7.ウェアレベリング(Wear Leveling)」参照)の基準により、ガベージコレクション対象のセグメントを探す。
ステップS602. 対象のセグメント内の「有効」のページを探す。これを、「元のページ」とする。
ステップS603. 別なセグメント内に新しいページを割り当て、状態を「予約」とする。これを、「新しいページ」とする。
ステップS604. 新しいページに、元のページのデータと管理情報(ページの状態を除く)をコピーする。
ステップS605. 新しいページの状態を「有効」にする。
ステップS606. 元のページを削除する(S411)。
ステップS607. 対象のセグメント内の全ページが削除済みになるまでS602-S605を繰り返す。
ステップS608. 対象のセグメントの状態を「削除済み」にする。
ステップS609. 対象のセグメントの消去回数をRAMに保存する。
ステップS610. 対象のセグメントを消去する。
ステップS611. 対象のセグメントに管理情報を書き込む。その際、状態を「有効」にし、消去回数を1加算する。
【0058】
ガベージコレクションを上記の手順で実現することで、以下のようなメリットがある。
・ガベージコレクションでページをコピーする際、ページに含まれる論理ページ番号は変更せずにそのままコピーできるため、他の方式に比べて処理が簡素化され、高速である。
・ガベージコレクションでコピーするのは、ページだけであるので、複数の領域をコピーし、更新する他の方式に比べて高速である。
・ガベージコレクション中(S601-S608)に中断しても、元のページまたは、新しいページが完全な状態で残る。
・ガベージコレクション中断後、「予約」のページを検索することで、不完全なページの存在を知ることができる。
・消去中(S609-S611)に中断しても、他のセグメントはそのままの状態で残る。
・消去中断後、セグメントの状態が「削除済み」のセグメントを検索することで、不完全なセグメントの存在を知ることができる。
・GCを開始する条件の詳細については、後述の「23.GC開始条件」にて詳細に説明する。
【0059】
7.ウェアレベリング(Wear leveling)
Wear levelingは、フラッシュメモリチップの寿命を延ばすため、各消去ブロックの消去回数を平均化する目的で行われる処理である。すわわち、PDM5は、新しいページを割り当てる場合およびGC対象のセグメントを検索する際、次の要素を考慮してセグメントを選択するようにする。
・最も消去回数の少ないセグメント
・最も「削除済み」ページの多いセグメント
なお、PDM5は、セグメントを消去する前に、セグメントに記憶されているセグメントの消去回数を、RAMに保存しておく。そして、セグメントの消去の完了後、PDM5は、RAMに保存しておいた消去回数を1増やしてセグメントに設定する。
【0060】
Wear levelingの詳細について以下に説明する。
Wear levelingは、PDM5において次のような処理のために用いられる。
・新しいページを割り当てるセグメントの選択処理(書き込み処理、GC)
・ガベージコレクション対象セグメントの選択処理
【0061】
まず、新しいページを割り当てる場合のWear levelingについて説明する。新しいページを割り当てる場合のWear levelingを、より適正なものにするために考慮される要素は以下のa〜eである。なお、以下の全ての要素を考慮する必要は必ずしも無い。
a. セグメントの消去回数
理由:
1. Wear levelingは、各セグメントの消去回数を平均化するものであるから、セグメントの消去回数を考慮する必要があるのは明白である。
2. ページ割り当ては将来的に、セグメントの消去を引き起こすから、消去回数の少ないセグメントを選ぶことが、セグメントの消去回数の平均化につながるためである。
b. セグメントの空き率 (空きページ数)
理由: 次のページ割り当ても同じセグメントから行えるようにすることで、処理速度を向上させるためである。
c. セグメントの有効(使用中)ページ数
理由: 有効ページ数が少ないセグメントほど連続してページを割り当てられるため、ページ割り当てを高速化できるためである。
d. セグメントの削除済みページ数
理由: 削除済みページ数の多いセグメントは、GC処理が高速になるので、セグメントを使い切ることで、このセグメントに対する将来のGCを高速化できるためである。
e. 前回割り当てたページのセグメント
理由: セグメントを必ず使い切ることでメモリ使用効率を向上させ、ページ割り当てを高速化できるためである。
【0062】
Wear leveling(新規割り当て)処理の手順を以下に示す。
(手順)
ステップS700. 前回本処理によって割り当てたセグメントに空きページが存在していたら、そのセグメントを使用する (この時、前回割り当てたページの次から空きページを検索する)。これは、セグメントを使い切るため、高速化のためである。
ステップS701. 空きページが存在し、セグメントの消去回数の少ないセグメントをM個見つける。ここでは、一例として最も少ない消去回数をminEcとした場合、消去回数が minEc x 1.1以下であるという条件で、セグメントをさがすものとする。実際に見つかったセグメントの個数をCとする。なお、消去回数の少ないセグメントを選ぶのは、ページ割り当てが将来的なセグメント消去につながるからである。
ステップS702. C>1の場合、 S701で見つかったセグメント中で空きページ数の多い上位M/2個を見つける。実際に見つかったセグメントの個数をCとする。ここで、空きページ数の多いものを選ぶのは、次の割り当ても同じセグメントから行えるようにすることで、処理速度を向上させるためである。なお、空きページ数の多い上位M/2個を見つけるのは一例に過ぎず、Mよりも小さければ特に限定されるものではない。
ステップS703. C>1の場合、任意の1個を対象にする。C個のセグメントのうちセグメント番号の最も若いものを対象にしても良い。
なお、以上のWear leveling(新規割り当て)処理において、C(n;1,2)が1となった場合には、そのセグメントを対象として本処理を終了することができる。
【0063】
次に、GC対象セグメントを選択する場合のWear levelingについて説明する。なお、GCするかどうかは、事前に決定しているものとする。GC対象セグメントを選択する場合のWear levelingを、より適正なものにするために考慮される要素は以下のa〜eである。なお、以下の全ての要素を考慮する必要は必ずしも無い。
a. セグメントの消去回数
理由: Wear levelingは、各セグメントの消去回数を平均化するものであるから、セグメントの消去回数を考慮する必要があるのは明白である。
b. セグメントの空き率 (空きページ数)
理由: 空きページの多いセグメントは、まだ書き込み可能であるので、なるべく消去しないほうが、メモリの消去回数が減り、メモリの寿命を延ばすことが可能であるからである。
c. セグメントの有効(使用中)ページ数
理由: 有効ページ数の少ないセグメントは、移動すべきページ数が少ないので、GC処理が高速になるからである。
d. セグメントの削除済みページ数
理由: 全ページが削除済みのセグメントは、そのままでは使用不能であるので、消去すべきであるし、ページの移動が不要なので、GC処理が高速になるからである。
e. 近い過去に消去したセグメント
理由: 同じセグメントの連続消去を避けることで、消去回数を平均化させるためである。
【0064】
Wear leveling(GC対象決定)処理の手順を以下に示す。
(手順)
ステップS750. 前回GC(または消去)したセグメントは対象外にする。これは、同じセグメントの連続消去を避けるためである。
ステップS751. 空き(全ページが未使用)でなく、セグメントの消去回数の少ないセグメントN個を見つける。ここでは一例として、最も少ない消去回数をminEcとした場合、消去回数が minEc x 1.1以下であるという条件で、セグメントをさがすものとする。実際に見つかったセグメントの個数をCとする。
ステップS752. C>1の場合、S751でみつかったセグメントの中で、全ページが削除済みのセグメントを見つける。ここで、みつかったセグメントの個数をCとする。全ページが削除済みのセグメントは、消去すべきであるし、GC処理が高速になるからである。
ステップS753. C≠0である場合、S752で見つかったセグメントのうちどれか一つをGC対象として決定する。
ステップS753' (強制モード). [C>1 かつ C==0の場合] S751で見つかったセグメント(C)の中で、削除済みページ数が多い順にセグメントN/2個を見つける。ここで実際にみつかったセグメントの個数をCとする。なお、削除済みページ数の多い順にセグメント上位N/2個を見つけるのは一例に過ぎず、Nよりも小さければ特に限定されるものではない。
ステップS753''.(通常モード). [C > 1 かつ C==0の場合] S751で見つかったセグメント(C)の中で、削除済みページ数が所定値Lより大きくかつ削除済みページ数が多い上位N/2個を見つける。ここで実際にみつかったセグメントの個数をCとする。
ステップS754. C > 1の場合、S753またはS753"で見つかったセグメント(C)の中で、有効ページ数の少ない順にセグメントN/4個を見つける。ここで実際に見つかったセグメントの個数をCとする。なお、有効ページ数の少ないセグメントを選択するのは、有効ページ数の少ないセグメントでは、GC処理が高速になるからである。ここで、有効ページ数の少ない順にセグメントN/4個を見つけるのは一例に過ぎず、N/2個よりも小さければ特に限定されるものではない。
ステップS755. C > 1の場合、S754で見つかったセグメント(C)のうち任意の1個をGC対象に決定する。
上記説明で用いた「強制モード」と「通常モード」について説明する。GC対象決定処理では、GCの実行の契機(GCモードと呼ぶ)によって、若干異なる処理がなされる。GCモードは、通常モードと強制モードの二つがある。
GCの実行時期は、通常、後述の「23.GC開始条件」に従って自動的に決定される。これを通常モードと呼ぶ。
また、上位プログラムが、希望した時にGCを実行することも可能である。これを強制モードと呼ぶ。
【0065】
なお、上記のWear leveling(GC対象決定)処理において、C(n;2〜5)が1となった場合には、そのセグメントをGC対象にして本処理を終了することができる。上記のWear leveling(GC対象決定)処理に関連する処理として、以下のような処理を行うのが適切である。
・GC実行前、削除済みページのみのセグメントが存在すれば1個消去する。
・ページ書き込み後、残りの未使用ページ数が所定値P以下の場合、GC処理を行う。
【0066】
8.インクリメンタルガベージコレクション(IGC)
上位モジュールよりPDM5に処理(読み出し、書き込みなど)が要求された時点で、以下の手順のうち、1つまたは複数を実行し、ガベージコレクションをバックグラウンドでインクリメンタルに行う。
(手順)
ステップS801. 消去中のセグメントが存在する場合、上位モジュールより要求された処理以外は行わない。(要求された処理を実行するために、フラッシュメモリには消去の一時停止機能が必要である。消去の一時停止機能がない場合、消去が完了するまで、要求処理の実行を遅延する。)
ステップS802. ガベージコレクション対象のセグメントがない場合、ガベージコレクション対象のセグメントをさがし(Wear leveling(GC対象決定)処理による)、そのセグメントが「ガベージコレクション対象」であることをRAMに格納する。
ステップS803. ガベージコレクション対象のセグメントがある場合、対象のセグメント内のいくつか(1-2個程度)のページを、ガベージコレクションの手順S602-S606に従って、新しいセグメントに移動する。
ステップS804. ガベージコレクション対象のセグメントの全部のページが削除済みになった場合、そのセグメントがガベージコレクション対象であることを解除し、対象のセグメントが「消去中」であることをRAMに格納し、ガベージコレクションの手順S608-S610に従って、セグメントの消去を開始する。
ステップS805. セグメントの消去が終了した場合、ガベージコレクションの手順S611に従って、セグメントを使用可能にし、そのセグメントが消去中であることを解除する。
【0067】
IGCの状態遷移図を図5に示す。PDM5が、LFM3からメディアの使用開始の要求を受けると、PDM5は初期化処理を行い、「通常実行中」状態(符号301)になる。なお、本システムの場合、メディアとは、フラッシュメモリを指す。「通常実行中」状態(符号302)では、LFM3からの要求があるごとに、GCすべきか判定し、GC対象セグメントを検索する。そして、GC対象セグメントが確定すると、LFM3からの要求があるごとにページの移動を行う(「IGC実行中」状態(符号303))。ページ移動が完了すると、LFM3からの要求があるごとに消去の完了をチェックする(「セグメント消去中」状態(符号304))。初期状態以外の全状態において、LFM3からメディアの使用終了要求を受けると、PDM3は所定の後処理を行い、「解放状態」(符号305)となる。なお、「セグメント消去中」状態304で、消去の完了を待ってもよい。
【0068】
上記のインクリメンタルガベージコレクションにより、OSのタスク機能を使用せずに、ガベージコレクションを擬似的なバックグラウンド処理として行うことができる。また、消去の一時停止機能を持つメモリを使用した場合、ガベージコレクション実行時の長時間(数秒)の待ちが発生しない。なお、IGCが有効とされている場合でも、メモリの空き容量が少なくなった場合には、自動GC(「22.自動ガベージコレクション」参照)を行う構成とすることが適切である。
【0069】
9.ページ位置のキャッシング
物理ページの検索を高速化するため、以下の要領でページ位置のキャッシングを行う。まず、RAMに「ページ番号変換キャッシュ」(以下、PNTCと記す)を置く。PNTCは、複数の「ページ番号変換キャッシュエントリ」(以下、PNTCEと記す)より構成される。PNTCEは、次の情報を持つ: 論理ページ番号、物理ページ番号、連続するページ数(任意)、フラグ。PNTCE内の情報の意味を以下に示す。
・論理ページ番号は、エントリの対象とするページの論理ページ番号を示す。
・物理ページ番号は、エントリの対象とするページの物理ページ番号を示す。
・連続ページ数は、エントリの対象とするページから物理ページ番号が連続する、使用中の物理ページの数を示す。
・フラグはキャッシュ制御のために使用される。
なお、PNTCの全エントリは、システム起動時に無効な状態に初期化される。
【0070】
ページ位置のキャッシング処理の手順を以下に示す。
(手順)
ステップS901. 物理ページの検索(上記のページ検索処理による)の際、初めに、PNTC中に、アクセス対象の論理ページ番号を含むPNTCEがあるか、PNTCEのフラグ、論理ページ番号、物理ページ番号、連続するページ数(任意)をもとに調べる。
ステップS902. PNTCEが存在する場合、対象の物理ページ番号を、PNTCEの物理ページ番号と論理ページ番号から求める。
ステップS902'. PNTCEが存在しない場合、上記のページ検索処理の手順で対象の物理ページ番号を検索し、検索結果の論理ページ番号、物理ページ番号を、PNTCに登録する。
ステップS902'-1. この時、検索結果の物理ページがPNTC中の他のエントリの領域に含まれるなら、そのエントリを更新する。
ステップS903. フラッシュメモリへの書き込み処理やガベージコレクションによって、PNTC中のエントリの状態が変わった場合には、PNTCを更新する。
なお、連続するページ数は任意であり、これを持たない構成も可能である。その場合、ステップS902'-1は不要である。
【0071】
以上のようにページ位置のキャッシング処理を行うことのメリットとして、次のようなものが挙げられる。
・PNTCは、RAMに置かれ、エントリ数が少なくても良いため、物理ページの検索を高速に、かつ、少ないメモリ使用量で行うことができる。
・PNTCは、全論理ページと物理ページの対応付けを行うものではなく、補助的な情報であるため、使用中の電源断によって内容が失われても、システムがダメージを受けることはない。
【0072】
10.メディアへの書き込み・消去の一時停止
アプリケーション(AP)に対するレスポンスを向上させるため、PDM5は、書き込み・消去中のメディアに対するアクセスを行う場合、その時実行している書き込み・消去の一時停止を行う。書き込み・消去の一時停止処理の手順を以下に示す。
(手順)
ステップS1001. アプリケーション(AP)がPDM5に対して、メディア(物理ページ)へのアクセス(読み出し、書き込み)を要求する。
ステップS1002. PDM5は、対象のページの含まれる物理メモリの状態をMTDM7から取得する。
ステップS1003. メモリが消去中の場合で、メモリが消去の一時中止機能を持ち、アプリケーションが要求するアクセスが、消去中断中に実行可能な場合、PDM5は、メモリに対して、消去の一時中止を要求する。
ステップS1004. PDM5は、メモリに対して、アプリケーションが要求するアクセスを実行し、終了を待つ。
ステップS1005. PDM5は、メモリに対して、書き込みの再開を要求する。
ステップS1003'. メモリが書き込み中の場合で、メモリが書き込みの一時中止機能を持ち、アプリケーションが要求するアクセスが、書き込み中断中に実行可能な場合、PDM5は、メモリに対して、書き込みの一時中止を要求する。
ステップS1004'. PDM5は、メモリに対して、アプリケーションが要求するアクセスを実行、終了を待つ。
ステップS1005'. PDM5は、メモリに対して、書き込みの再開を要求する。
ステップS1003''. メモリが消去・書き込み中の場合で、メモリが消去・書き込みの一時中止機能を持たないか、アプリケーションが要求するアクセスが、消去・書き込み中断中に実行不可能な場合、PDM5は、消去・書き込みの終了を待つ。
ステップS1004''. PDM5は、メモリに対して、アプリケーションが要求するアクセスを実行し、終了を待つ。
【0073】
11.不良ページへの対処
物理ページに書き込んだ情報が正しく読み出せない場合または消去後のデータが初期値にならない場合、そのページを「不良ページ」とする。不良ページの検出は、ページにデータを書き込んだ後、書き込んだデータを読み出し、比較して行う。書き込み時に不良ページを検出した場合、そのページの状態を「不良」にし、新たな物理ページを割り当てて書き込みを行う。以後、PDM5において、不良ページは、使用されることはない。
【0074】
ページの状態の格納部分が不良の場合、次のように対処することで、そのページが不良ページであることを示す。なお、以下の説明において、「bビット」は、それが0の時、そのページが不良であることを示すビットを指す。
・bビットが1にならない(消去後0)場合、そのまま不良ページであることが示される。
・bビットが0にならない(0を書いても1のまま)場合、次のようにして不良ページを示す。
a. マジックコードを異常な値にする。
b. 物理フォーマットの種類を、セグメントまたはセグメント内の他のページと異なる値にする。
c. エラー検出データ(領域が存在する場合)を異常な値にする。
上記説明で用いた「マジックコード」と「エラー検出データ」について説明する。
マジックコードは、領域の種別を示す、数バイト程度のデータであり、領域内の特定の位置に特定の値で格納される(図3、および上記「1.フラッシュメモリの構造化」における図3関連の説明を参照のこと)。領域のマジックコードの存在する位置のデータが、本来のマジックコードの値と等しいかを判定することで、その領域が想定した領域であることを確認することができる。(この際、短いマジックコードでは、本来の領域でないにもかかわらずその領域とみなす誤判定が生じ、長いマジックコードでは、比較のための演算量が増える。)
エラー検出データは、ある領域に格納されたデータブロックに対して特定の演算を行って算出されるデータであり、そのデータブロックの正当性を判定するために用いる。例えば、パリティ、チェックサム、CRC、ECCが挙げられる。(エラー検出データの算出処理を簡単なものにすると、誤ったデータにも関わらず正当なデータとみなす誤判定が生じるため信頼性が低下し、複雑な処理にすると、判定精度や信頼性は向上するが処理速度が低下する。)
【0075】
12. 不良セグメントへの対処
セグメント内のほとんどのページが不良になったセグメント、消去に失敗したセグメントを「不良セグメント」とする。PDM5において、不良セグメントは、消去・使用されることはない。セグメント情報格納領域が不良の場合、セグメント情報は、次の領域(セグメント内のオフセットが、セグメント情報のサイズから始まる領域)に格納される。ただし、次の領域も不良の場合、次のように対処することで、そのセグメントが不良セグメントであることを示す。(「bビット」は、それが0の時、そのセグメントが不良であることを示すビットを指す)
【0076】
・bビットが1にならない(消去後0)場合、そのまま不良セグメントであることが示される。
・bビットが0にならない(0を書いても1のまま)場合、次のようにして不良セグメントを示す。
a. マジックコードを異常な値にする。
b. 消去回数を特別な値(例:全て1)にする。
c. 物理フォーマットの種類を、他のセグメントまたはセグメント内のページと異なる値にする。
d. エラー検出データ(領域が存在する場合)を異常な値にする。
【0077】
13. 書き込みデータのフラッシュメモリとアプリケーションへの適応化
PDM5は、アプリケーションがフラッシュメモリに書き込むデータの性質が、特定の場合(例: 0が多い、1が多い)、データの0を1に、あるいは1を0に反転させてフラッシュメモリに書き込む。具体的には、以下の手順によって行われる。
(手順)
ステップS1301. アプリケーションは、自分の書き込むデータに、0が多いか、1が多いか判断する。
ステップS1302. 0が多い場合かつ、消去後のデータが全て1になるタイプのフラッシュメモリの場合、アプリケーションは、PDM5の初期化時に、データ反転を行うように指示する。
ステップS1302'. 1が多い場合かつ、消去後のデータが全て0になるタイプのフラッシュメモリの場合、アプリケーションは、PDM5の初期化時に、データ反転を行うように指示する。
ステップS1303. PDM5は、データをフラッシュメモリに書き込む際、データ反転を行うように指示されている場合には、書き込むデータの各ビットを反転させる。
ステップS1304. PDM5は、データをフラッシュメモリから読み出す際、データ反転を行うように指示されている場合には、読み出したデータの各ビットを反転させる。
【0078】
14.書き込みデータのページごとのフラッシュメモリへの適応化
アプリケーションがフラッシュメモリに書き込むページのデータの性質が、特定の場合(例: 0が多い、1が多い)、ページデータの0を1に、あるいは1を0に反転させてフラッシュメモリに書き込む。本機能を実現するための手順を、「新規ページ書き込み」、「ページの読み出し」、「ページの上書き」に分けて説明する。
【0079】
「新規ページ書き込み」の場合、以下の手順を実行する。
ステップS1401. PDM5は、ページの最初の書き込みの際、そのページのデータの特徴(0が多いか、1が多いか)を調べる。
ステップS1402. 0が多い場合かつ、消去後のデータが全て1になるタイプのフラッシュメモリの場合、PDM5は、そのページのデータ反転を行う。
ステップS1402'. 1が多い場合かつ、消去後のデータが全て0になるタイプのフラッシュメモリの場合、PDM5は、そのページのデータ反転を行う。
ステップS1403. PDM5は、ページデータをフラッシュメモリに書き込む。その際、データ反転を行ったかどうかの情報をページ情報の「反転フラグ」に記録する。
【0080】
「ページの読み出し」の場合、以下の手順を実行する。
ステップS1431. PDM5は、ページを読み出す際、ページ情報の「反転フラグ」に、データ反転を行ったことが示されている場合には、読み出したページのページデータの各ビットを反転させる。
【0081】
「ページの上書き」の場合、以下の手順を実行する。
ステップS1451. PDM5は、ページの上書きの際、元のページの反転フラグを調べる。
ステップS1452. 反転フラグに従って、上書きするページのデータが元のページに上書き可能か調べる。元のページの反転フラグが有効の場合、上書きするデータをそれに合わせて反転させて判定する。
ステップS1453. データが上書き可能なら上書きする。
ステップS1453'. データが上書き不可能なら、上記「ページの新規書き込み」の処理を行う。
ここで、上書き可能であるか否かの判定はフラッシュメモリのタイプに依存し、例えば、上書きにより元のページのビットが、1から0の方向にしか変化しない場合上書き可能であるとする。この場合、元のページのデータ=0x67で、書き込むデータ=0x04であれば上書き可能と判定される。
【0082】
15.メディアの物理フォーマット処理
PDM5は、次の手順でメディアを物理フォーマットし、そのメディアをアクセスできるようにする。
(手順)
ステップS1500. アプリケーションは、メディアのセグメントサイズ、ページサイズ、フォーマットの種類を決定し、PDM5に物理フォーマットを要求する。
ステップS1501. メディア内の全セグメントに対し、次のS1502-S1504を実行する。
ステップS1502. セグメントに含まれる全消去ブロックを消去する。
ステップS1503. そのセグメントのセグメント情報を書き込む。
ステップS1504. そのセグメントのセグメント情報が正しく書き込めたことを確認する。
ステップS1505. セグメント情報の書き込みに失敗した場合、不良セグメントの処理(「12.不良セグメントへの対処」参照)を行う。
【0083】
16.メディアの論理フォーマット処理
LFM3は、メディアを論理フォーマットし、そのメディアをアクセスできるようにする。論理フォーマットの手順はLFM3に依存するが、ここでは、FATファイルシステムの論理フォーマット処理と、DOSパーティションの作成処理について説明する。
【0084】
FATファイルシステムの論理フォーマット処理について説明する。
LFM3は、以下の手順で、メディアを論理フォーマットする。
(手順)
ステップS1600. メディアの全容量、セクタサイズ、クラスタサイズ、FAT仕様(FAT12/FAT16/FAT32, VFAT)、FATの数、DOSパーティション作成の有無、他を決定する。
ステップS1601. メディアが物理フォーマットされていることを確認する。
ステップS1602. メディアの全セクタが読めるか確認する。
ステップS1603. メディアにDOSパーティションを作成する。
ステップS1604. メディアにブートセクタ(BPB)を作成する。
ステップS1605. メディアにバックアップブートセクタを作成する。(FAT32のみ)
ステップS1606. メディアにファイルシステム情報を記録する。(FAT32のみ)
ステップS1607. メディアにFATを作成する。
ステップS1608. メディアにルートディレクトリを作成する。
ステップS1609. メディアにラベルを記録する。
ステップS1610. メディアにブートプログラムを記録する(任意)。
【0085】
DOSパーティションの作成処理について説明する。LFM3は、次の手順でDOSパーティションの作成を行う。
(手順)
ステップS1650. パーティション情報(パーティション番号、パーティションタイプ、パーティション開始セクタ番号、パーティションサイズ、他)を決定する。
ステップS1651. メディアが物理フォーマットされていることを確認する。
ステップS1652. 最初の論理セクタにパーティションテーブルが存在するかを確認する。
ステップS1653. パーティションテーブルが存在する場合、指定のパーティション情報が、メディア情報および既存のパーティションと矛盾しないか確認する。
ステップS1653'. パーティションテーブルが存在しない場合、最初の論理セクタにパーティションテーブルを作成する。
ステップS1654. パーティション情報をパーティションテーブルに書き込む。
【0086】
17.メディアのロック・ロック解除
PDM5は、内部に各メディアのロック情報を保持し、下記の処理を行うことができる。
・アプリケーションからメディアのロックを要求された場合、PDM5はロック情報を設定する。
・メディアが既にロック済みの場合、エラーを返す。
・ロックの種類は、例えば、GC、書き込み、消去の3種類とする。
【0087】
18.ページ書き込み中の中断からの回復
ページの書き込みが中断された場合、次回のシステム起動時に、次の手順で回復処理を行う。
(手順)
ステップS1801. 全ページ中で、状態が「有効」で「更新中フラグ」の有効なページ(削除中ページ)について以下を行う。
ステップS1802. 削除中ページと同じ論理ページ番号を持ち、「更新中フラグ」の無効なページ(上書きしたページ)を探す。
ステップS1803. 上書きしたページが存在しない場合、何も行わない。
ステップS1803'. 上書きしたページが存在する場合、削除中ページを削除する。
【0088】
19.物理フォーマット・消去中の中断からの回復
セグメントの物理フォーマット・消去が中断された場合、次回のシステム起動時に、次の手順で回復処理を行う。
(手順)
ステップS1901. 全セグメント中で、状態が「削除済み」か、セグメントヘッダが不正なセグメントを探す。
ステップS1902. そのセグメントが消去されているか調べる。
ステップS1903. 消去されていない場合、そのセグメントを消去し、物理フォーマットする。
【0089】
20. 物理メモリフルでのデッドロックの回避
物理メモリ(フラッシュメモリ)がフルになることで、以後「何もできない」状態になるのを回避する必要がある。また、LFM3から使用する場合、「FATファイルシステムの示す容量」を全部使用できる必要がある。少なくとも、「ファイル削除」は常に可能でなければならない。デッドロックの回避は、PDM5が、以下に示す条件で、通常状態、自動GC(または、インクリメンタルGC)状態、書き込み不可状態への移行を行うことによって実現することができる。
【0090】
A.自動GCなし状態 (通常状態):空きページ数が予約ページ数以上、かつ、削除済みページの割合が所定値r1未満 (例えばr1= 0.2 〜 0.5程度)
この状態で、書き込み、読み出し、ページ削除、GC可能とする。
【0091】
B.自動GC状態:空きページ数が予約ページ数以上、かつ、削除済みページの割合が所定値r1以上
この状態で、書き込み、読み出し、ページ削除、GC可能とする。ただし、書き込みの前にGCが行われるものとする。
【0092】
C.書き込み不可状態 : 空きページ数が予約ページ数未満
この状態で、書き込み不可 (上位には「メディアフル」エラーを返す)、読み出し、ページ削除、GCが可能とする。
【0093】
21.ページ割り当てマップ(PAM)
論理ページ番号(lpn)からのページ検索の際、対象のlpnに対応するページの検索には時間がかかる。特に、上記のページ検索処理によれば、ページが存在しない場合には、すべてのページヘッダ(ページ管理情報)を検索することになるので、時間がかかる場合がある。PAMは、ページ検索の際、ページが存在するかどうかの判定を高速化するためのビットマップである。
以下に、PAMの仕様を示す。
・PDM5における1ページは、PAMの1エントリ(1ビット)に相当する。
・ページが存在するページのエントリの値が1に、存在しないページのエントリの値は0に(あるいはその逆に)設定される。
・PAMはRAMに格納される。
【0094】
図6にPAMの模式図を示す。図6に示すように、論理ページ番号0がエントリ401に、論理ページ番号7がエントリ407というように、論理ページを各エントリに対応させる。図6のPAMを参照することで、論理ページ番号0は存在し、論理ページ7は存在しないことを知り、不必要な検索を省いてページ検索を高速化することができる。
【0095】
PAMに関するPDM5の動作は以下のようなものである。
・「PAMの初期化」:PDM5は、起動時に物理メモリ中の全ページを検索し、PAMの各エントリを各ページの状態に初期化する。
・「PAMエントリの検索」:lpnに対応するPAMのエントリの値を調べる。
・「PAMエントリのセット」:lpnに対応するPAMのエントリの値を1にする。
・「PAMエントリのリセット」:lpnに対応するPAMのエントリの値を0にする。
【0096】
以下に、PAMを使用する場合の、ページ書き込み、ページ読み出し、ページ削除、セグメントのフォーマット処理ついての手順を示す。
[ページ書き込み]
PDM5は、次に示す手順でページ書き込み処理を行う。
(手順)
ステップS2101. 対象のlpnでPAMを検索し、そのページが存在するかを調べる。
ステップS2102. 存在する場合、ページの上書き処理を行う。
ステップS2102'. 存在しない場合、新規ページ書き込み処理を行い、そのlpnに対応するPAMエントリをセットする。
[ページ読み出し]
PDM5は、次に示す手順でページ読み出し処理を行う。
(手順)
ステップS2121. 対象のlpnでPAMを検索し、そのページが存在するかを調べる。
ステップS2122. 存在する場合、ページの読み出し処理を行う。
ステップS2122'. 存在しない場合、ダミーデータの読み出し処理を行う。
[ページ削除]
PDM5は、次に示す手順でページ削除処理を行う。
(手順)
ステップS2141. 対象のlpnでPAMを検索し、そのページが存在するかを調べる。
ステップS2142. 存在する場合、ページの削除処理を行う。そのlpnに対応するPAMエントリをリセットする。
ステップS2142'. 存在しない場合、エラーとする。
[セグメントのフォーマット]
PDM5は、次に示す手順でセグメントのフォーマットを行う。
(手順)
ステップS2161. そのセグメント中の全有効ページに対して、次のS2162を行う。
ステップS2162. 有効ページのlpnに対応するPAMエントリをリセットする。
【0097】
PDM5において、PAMを用いることのメリットは次のように説明することができる。すなわち、PDM5は各ページに記録された論理ページ番号でページを管理し、ページ割り当てテーブル(論理ページ番号−物理ページ番号変換テーブル)を持たない。そのため、ある論理ページ番号のページを検索するには、最悪の場合、全ての有効ページを検索し、期待する論理ページ番号と一致するかを判定しなければならないので、検索速度が低下する可能性がある。特に、対象のページが存在しない場合には、必ずすべての有効なページを検索しなければ分からないので、処理速度が低速になる。上の問題を解決するのが、PAMとPNTCである。
【0098】
PAMは、全論理ページ番号に対してそのページが存在するかどうかを示すマップである。したがって、PAMを使うことで、ある論理ページ番号のページを検索する際、そのページが存在しないことが即座に分かるので、処理速度が向上する。PNTCは、論理ページ番号とそのページに物理位置の変換情報のキャッシュである。PNTCにより、よく使用されるページの検索速度が向上する。なお、PDM5は、前回検索したページの物理位置(ページ先頭の仮想アドレス)をRAMに記憶し、次回その位置から検索を開始することで、連続して書き込まれたページの検索速度を向上させる。
【0099】
22.自動GC
PDM5は、物理メモリ領域内の空きページ数が少なくなった場合に、上位プログラムからのGC要求がなくてもGCを実行する(自動GC)。PDM5は、自動GCを行うかどうかは、以下の場合に行う。
・ページ書き込み処理の完了後
・ページ削除処理の完了後
【0100】
23.GC開始条件
PDM5は、自動GC、強制GC(呼び出しプログラム(APなど)が明示的にGCの実行を要求した場合)、インクリメンタルGCを開始するかどうかを以下の開始条件にて決定する。開始条件について、それぞれ以下に説明する。
【0101】
「自動GCの開始条件」
PDM5の実行中に、以下のaまたはbが成立した場合 (a, bの順に判定)
a. メモリ中の空きページ数 ≦ しきい値1
(しきい値1の例: 1セグメント中のページ数 * 3/2)
b. メモリ中の削除済みページ数 ≧ しきい値2
(しきい値2の例: メモリ中の全ページ数 * 1/5)
【0102】
「強制GCの開始条件」
呼び出しプログラム(APなど)が明示的にGCの実行を要求した場合に、以下のaまたはbが成立した場合 (a, bの順に判定)
a. メモリ中の空きページ数 ≦ しきい値3
(しきい値3の例: メモリ中の全ページ数 * 1/2)
b. メモリ中の削除済みページ数 ≧ しきい値2
(しきい値2の例: メモリ中の全ページ数 * 1/5)
【0103】
「インクリメンタルGCの開始条件」
呼び出しプログラム(APなど)が、PDM5に対して処理要求を行うごとに、以下のa, b, cのいずれかが成立した場合 (a, b, cの順に判定)
a. 上記「自動GCの開始条件」の条件
b. 処理要求の回数が一定値の倍数に達し、かつ、上記「強制GCの開始条件」の条件
c. 処理要求の回数が一定値の倍数に達し、かつ、以下のc.1またはc.2が成立した場合 (c.1, c.2の順に判定)
c.1 メモリ中の空きページ数 ≦ しきい値4
(しきい値4の例: メモリ中の全ページ数 * 1/2)
c.2 メモリ中の削除済みページ数 ≧ しきい値2
(しきい値2の例: メモリ中の全ページ数 * 1/5)
なお、PDM5は、ページの削除後、そのセグメントのすべてのページが「削除済み」になった場合、そのセグメントのフォーマットを行う。
【0104】
24.書き込みデータの適応化
上述の「13.書き込みデータのフラッシュメモリとアプリケーションへの適応化」、「14.書き込みデータのページごとのフラッシュメモリへの適応化」にて示した適応化に代えて(または同時に)、PDM5は、次のような書き込みデータの適応化を行うことができる。
「新規ページの書き込み時」の手順
ステップS2401. 書き込むデータが、すべてフラッシュメモリの消去後の値(例: 0xff)であるかを調べる。
ステップS2402. S2401がyesの場合、ページデータの書き込みを行わない。
「既存ページの書き込み時」の手順
ステップS2451. 書き込み対象のページデータを読み込む。
ステップS2452. 書き込むデータが、すべて書き込み対象のページデータと同じであるかを調べる。
ステップS2453. S2452がyesの場合、ページデータの書き込みを行わない。
ステップS2452'. 書き込むデータが、すべて書き込み対象のページデータに上書き可能(例: 元= 0x67 -> 新= 0x04)かを調べる。
ステップS2453'. S2452'がyesの場合、ページの新規割り当てや置換を行わず、同じページに上書きする。
以上の、書き込みデータの適応化によるメリットとして次のようなものが挙げられる。
・書き込み済みのデータを書き込まないことで、書き込みを高速化する。
・既存のページにデータを書き込む際、データが上書き可能なら上書きすることで、書き込みを高速化する。
【0105】
25.最終ページ割り当て位置記憶
PDM5は、上記のWear Levelingなどの新規ページ割り当て処理で割り当てたページの先頭の仮想アドレス(物理ページ番号に相当)をRAMに記憶しておく。そして、次回の新規ページ割り当て処理で、例えば、記憶しておいたページ位置の次の位置から検索を行うことで(ステップS700参照)、ページ割り当ての高速化を行う。
【0106】
26.最終検索ページ位置記憶
PDM5は、RAM内に、ページ検索処理で最後に見つかったページの先頭アドレスを格納する領域(lastFoundMemAddr)を確保する。この領域が「無効なアドレス」の場合、その内容が無効であることを示す。
ページの検索時、以下の手順で示す処理を行う。
手順
S2601. lastFoundMemAddrの内容が有効な場合、ページの検索をlastFoundMemAddrから開始する。
S2061'. lastFoundMemAddrの内容が無効な場合、通常の方法でページの検索を行う。
以上の処理により、複数のページが連続して書き込まれている場合、2番目以降のページ検索が非常に高速になる。
【0107】
27.ページデータサイズの自動判定
PDM5は、以下の手順によって、物理メモリ内のページデータサイズの自動判定を行う。
(手順)
ステップS2701. 物理メモリのフォーマット時に、内容の任意な1ページ(Signature page)を書き込んでおく。Signature pageは、ページ情報は有効であるが、ページデータは任意である。
ステップS2702. 次回以降起動時に、物理メモリ内より、任意の有効な1ページを検索し、そのページ情報より、ページデータサイズを取得する。仮に、ユーザ(アプリケーションプログラム)がメモリに何も書き込んでいない場合でも、Signature pageだけは存在するため、そのページ情報からページデータサイズを取得することができる。
以上のページデータサイズの自動判定処理によって、フラッシュメモリの物理フォーマット(ページデータサイズなど)が分からない場合に、自動的に判定することができる。ページデータサイズをPDM5やアプリケーションプログラム内で固定値にする必要がなくなり、システムの柔軟性が高まる。
【0108】
28.物理フォーマットの自動判定
PDM5は、以下の手順で、物理メモリのセグメント情報(物理フォーマット(Compact/Normal), セグメントサイズなど)を自動的に判定する。
(手順)
ステップS2801. 物理メモリのフォーマット後の起動時に、物理メモリ内より、任意の有効な1セグメントを検索し、そのセグメント情報より、物理フォーマットなどの情報を取得する。
以上の物理フォーマットの自動判定処理によって、上位モジュールが、フラッシュメモリの物理フォーマットを記憶する必要がなくなる。セグメントサイズをPDM5やアプリケーションプログラム内で固定値にする必要がなくなり、システムの柔軟性が高まる。なお、このことによって、PDM5をメモリカード用に使う場合、メモリカードを挿すだけで物理フォーマットが分かることになる。
【0109】
29.PDM5における仮想アドレス空間
ここで、PDM5が用いる仮想アドレスについて説明する。実際のターゲットハードウェアに実装されたフラッシュメモリは、実際のアドレス(物理アドレス)でアクセスする必要がある。物理アドレス空間の仕様は多種多様であるため、PDM5で直接、物理アドレス空間にアクセスを行うと、PDM5本体がハードウェアに依存することになるため、使用するターゲットごとに何らかの変更・修正が必要になる。PDM5は、それを解決するため、PDM5本体では、フラッシュメモリを、0から始まる、連続したアドレスに存在するものとしてアクセスする。これが、PDM5における仮想アドレス空間である。仮想アドレス空間から物理アドレス空間への変換は、メモリドライバ(MTDM7)にて行っている。よって、PDM5を様々なターゲットで使用する場合、MTDM7をそのターゲットとメモリに合わせて作成・修正するだけでよい。なお、上述のように、PDM5は内部的に、物理ページ番号を使用しているが、これは仮想アドレス空間でのページのアドレスに対応している。
【0110】
図7は、論理ページとアドレス空間の関係を示している。上位モジュール(LFM3)は、PDM5に対して論理ページ番号を指定する(符号51)。PDM5は、上述のページ検索処理などにより指定された論理ページ番号の仮想アドレスを決定し、MTDM7に対して仮想アドレスを指定する(符号53)。MTDM7は、仮想アドレスを物理アドレスに変換してフラッシュメモリをアドレス指定する(符号55)。このように、PDM5自体が、フラッシュメモリのアドレスを仮想的に処理しているため、仮想アドレスと物理アドレスの変換部分(MTDM7)を除けば、ハードウェアが変わってもPDM5および上位モジュールを全く変更する必要がない。
【0111】
30.メモリ待ち時間の自動判定
フラッシュメモリには、「トグルビット」と呼ばれる処理完了を示すフラグがあるものがある。MTDM7(またはPDM5)の機能として、ある単位時間(数十〜数百ms)に、そのトグルビットのチェックを何回できるかを測定する機能を設ける。これにより、そのシステムの実行速度の目安がわかる。トグルビットのチェックとは、フラッシュメモリに消去または書き込み要求を出した後、フラッシュメモリの同じアドレスを連続して読み出した場合に、特定のビットの値が同じかどうかを調べることである。
【0112】
フラッシュメモリの消去や書き込みは、時として失敗することがあり、その場合、上のトグルビットを何度チェックしても同じ値にならない。その場合、待ちを止めるタイムアウトを適正に決める必要が生じる。OSの時間管理機能によってタイムアウトを判定すると、オーバヘッドが大きくなる場合がある。逆に、「何回でタイムアウト」という決め打ち方式では、高速なシステムでは誤ってタイムアウトすることがある。それを解決するため、上で測定した、トグルビットのチェック速度とメモリのタイムアウト時間(メモリの仕様によって決まる)より、「何回チェックしたら、タイムアウトであるか」という値を計算し、書き込み・消去待ちの上限時間に使用する。起動時に、そのシステムがメモリ状態をチェックする速度を測定しておいて、実行時のメモリ書き込み・消去時の待ち時間の計算に用いるのが好ましい。
【0113】
31.上位モジュールのフラッシュメモリドライバへの特化
LFM3のような論理ファイルシステムモジュールが、使用しているメディアがディスクエミュレーションのフラッシュメモリドライバ(PDM5)と認識した場合、ファイル削除時に、そのファイルが使用していたセクタ(論理ページ)を削除するように、ドライバ(PDM5)に要求する構成とする。なお、PDM5は、上述のように、論理ページの削除要求に対して、対応する物理ページのページの状態を削除済みにすることで対処する。このような構成とすることによって、使用しなくなったページが、GC対象となるので、PDM5におけるメモリの空き領域の把握が正確になる。新規ファイル書き込み時に、ページの上書きが起こらないので、書き込み速度が向上する。逆に、このような構成でない場合、上位の論理ファイルシステムモジュールがファイルを削除したとしても、PDM5はそのことを認識することができず、次に上位の論理ファイルシステムモジュールがその領域(論理ページ)を使用する時に、PDM5の書き込み処理においてページが上書きされることが初めてわかる。この場合、上記本実施形態の構成と比較して、上書き処理の速度の点で不利である。
【0114】
32.RAMによるフラッシュメモリのエミュレーション
PDM5は、次に示すようなソフトウェア開発用途としての、RAMによるフラッシュメモリエミュレーションの機能を持つ。この機能は、PDM5を様々なターゲットシステムに合わせたものとして、ソフトウェア開発を行う際に利用することができる。RAMエミュレーションの手順の例を下記に示す。
(手順)
ステップS3201. 少なくとも想定するフラッシュメモリの容量分、RAMを確保する。
ステップS3202. データ書き込み時、ビットごとに、書き換え可能性の判定を行う。(0から1への変化は不可とする)
ステップS3203. データ読み出し時には、指定されたアドレスから、指定された分だけ読み出す。
ステップS3203. データ消去時には、想定するフラッシュメモリの消去ブロック単位で、データを想定するメモリの初期値(例: 0xff)にする。
【0115】
以上説明した、本発明の実施形態としてのPDM5の各機能は、本発明を実現する上でその全てが必ずしも必要ではない。省略や、他の機能での置換を行うことによって、様々な変形を行うことが可能である。PDM5およびこれを用いたファイルシステムは、フラッシュメモリのみでなく、書き換えの方向性を持つ他の種類のメモリ素子など、様々なメモリ素子を外部記憶装置として利用する場合にも適用することができる。
【0116】
本発明の範囲には、以上で説明したメモリ制御方法を実現する、装置やソフトウェアも含まれる。
【0117】
【発明の効果】
以上のように本発明によれば、フラッシュメモリを外部記憶装置として効率的に用いることができるとともに、フラッシュメモリの各消去ブロックの消去回数を高い精度で平均化することもできる。
【図面の簡単な説明】
【図1】本発明の実施形態としての物理記憶デバイスシステムモジュールの位置付けを表す図である。
【図2】本発明の実施形態としての物理記憶デバイスシステムモジュールにおけるフラッシュメモリの構造化を示す図である。
【図3】セグメント管理情報の詳細な構成の一例を示す図である。
【図4】ページの詳細な構成の一例を示す図である。
【図5】本発明の実施形態におけるインクリメンタルガベージコレクションの状態遷移図である。
【図6】本発明の実施形態におけるページ割当てマップの模式図である。
【図7】本発明の実施形態における論理ページとアドレス空間の対応を示す図である。
【符号の説明】
1 アプリケーションプログラム(AP)
3 論理ファイルシステムモジュール(LFM)
5 物理記憶デバイスシステムモジュール(PDM)
7 MTDM
20 セグメント
21 セグメント管理情報
22,32 マジックコード
30 ページ
31 ページ管理情報
40 消去ブロック
50 フラシュメモリのメモリ領域

Claims (27)

  1. メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とし、前記セグメント単位で消去回数を管理するとともに、上位プログラムからのアクセス要求を受け前記ページ単位で前記メモリ内の記憶領域を指定する、コンピュータによるメモリ制御方法であって、
    前記コンピュータが、
    前記セグメントの消去回数に基づいて、少なくとも1つの有効ページを含むセグメントを消去セグメントとして選択し、
    前記消去セグメントに含まれる前記少なくとも1つの有効ページの各々に対して、
    (1)未使用ページがあるセグメントにおける未使用ページ数とそのセグメントの消去回数とに基づいて当該ページの内容を転送する転送先を決定し、
    (2)当該ページの内容を前記転送先に転送する、という処理を順次行い、
    前記消去セグメント内の全ての有効ページの転送が終了した後、前記転送元セグメント内のデータを消去すること、を特徴とするコンピュータによるメモリ制御方法。
  2. メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とし、前記セグメント単位で消去回数を管理するとともに、上位プログラムからのアクセス要求を受け前記ページ単位で前記メモリ内の記憶領域を指定する、コンピュータによるメモリ制御方法であって、
    前記コンピュータが、
    前記セグメントの消去回数に基づいて、少なくとも1つの有効ページを含むセグメントを消去セグメントとして選択し、
    前記消去セグメントに含まれる前記少なくとも1つの有効ページの各々に対して、
    (1)当該ページの内容を転送する転送先を決定し、
    (2)当該ページの内容を前記転送先に転送する、という処理を順次行い、
    前記消去セグメント内の全ての有効ページの転送が終了した後、前記転送元セグメント内のデータを消去
    前記少なくとも1つの有効ページを含むセグメントを消去セグメントとして選択する手順において、前記少なくとも1つの有効ページを含むセグメントの消去回数に加えて、前記少なくとも1つの有効ページを含むセグメントにおける書き込みデータが無効のページ数、および前記少なくとも1つの有効ページを含むセグメントにおける書込みデータが有効のページ数を加味して前記転送元セグメントを決定し、
    さらに、前記少なくとも1つの有効ページを含むセグメントを消去セグメントとして選択する手順に
    前記少なくとも1つの有効ページを含むセグメントのうち消去回数が少ない順に第1所定数のセグメントを選択する手順と、
    選択された前記第1所定数のセグメントのうち、書込みデータが無効のページ数が多い順に第2所定数のセグメントを選択する手順と、
    選択された前記第2所定数のセグメントのうち、書込みデータが有効のページ数が少ない順に第3所定数のセグメントを選択する手順と、
    選択された前記第3所定数のセグメントのうちの1つを前記転送元セグメントとして決定する手順と、
    が含まれることを特徴とするコンピュータによるメモリ制御方法。
  3. メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とし、前記セグメント単位で消去回数を管理するとともに、上位プログラムからのアクセス要求を受け前記ページ単位で前記メモリ内の記憶領域を指定する、コンピュータによるメモリ制御方法であって、
    全ページが未使用でないセグメントのうちそれぞれのセグメントの消去回数に基づいて転送元セグメントを決定する転送元決定手順と、
    未使用ページがあるセグメントのうち各セグメントの消去回数に基づいて転送先セグメントを決定する転送先決定手順と、
    前記転送元セグメント内の書込みデータが有効のページ毎に、前記転送先決定手順により転送先セグメントの決定をそれぞれ行い、前記決定された転送先セグメント内の未使用のページに前記転送元セグメント内の書込みデータが有効のページのデータを転送する転送手順と、
    前記転送元セグメント内の書込みデータが有効な全てのページについて前記転送手順によって転送が終了したならば、前記転送元セグメント内のデータを消去する消去手順と、
    から成るセグメント転送手順を含み、
    前記転送先決定手順は、前記未使用ページがあるセグメントのうちそれぞれのセグメントの消去回数に加えて、前記未使用ページがあるセグメントにおける未使用ページ数を加味して前記転送先セグメントを決定すること、を特徴とするコンピュータによるメモリ制御方法。
  4. 前記転送元決定手順は、前記全ページが未使用でないセグメントの消去回数に加えて、前記全ページが未使用でないセグメントにおける書き込みデータが無効のページ数、および前記全ページが未使用でないセグメントにおける書込みデータが有効のページ数を加味して前記転送元セグメントを決定すること、を特徴とする請求項に記載のコンピュータによるメモリ制御方法。
  5. 前記転送元決定手順は、
    前記全ページが未使用でないセグメントのうち消去回数が少ない順に第1所定数のセグメントを選択する手順と、
    選択された前記第1所定数のセグメントのうち、書込みデータが無効のページ数が多い順に第2所定数のセグメントを選択する手順と、
    選択された前記第2所定数のセグメントのうち、書込みデータが有効のページ数が少ない順に第3所定数のセグメントを選択する手順と、
    選択された前記第3所定数のセグメントのうちの1つを前記転送元セグメントとして決定する手順と、
    を含むことを特徴とする請求項に記載のコンピュータによるメモリ制御方法。
  6. 前記転送元決定手順は、直前に実行された前記転送元決定手順によって決定された転送元セグメントを対象外とする手順をさらに含むこと、を特徴とする請求項に記載のコンピュータによるメモリ制御方法。
  7. メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とし、前記セグメント単位で消去回数を管理するとともに、上位プログラムからのアクセス要求を受け前記ページ単位で前記メモリ内の記憶領域を指定する、コンピュータによるメモリ制御方法であって、
    全ページが未使用でないセグメントのうちそれぞれのセグメントの消去回数に基づいて転送元セグメントを決定する転送元決定手順と、
    未使用ページがあるセグメントのうち各セグメントの消去回数に基づいて転送先セグメントを決定する転送先決定手順と、
    前記転送元セグメント内の書込みデータが有効のページ毎に、前記転送先決定手順により転送先セグメントの決定をそれぞれ行い、前記決定された転送先セグメント内の未使用のページに前記転送元セグメント内の書込みデータが有効のページのデータを転送する転送手順と、
    前記転送元セグメント内の書込みデータが有効な全てのページについて前記転送手順によって転送が終了したならば、前記転送元セグメント内のデータを消去する消去手順と、
    から成るセグメント転送手順を含み、
    前記転送元決定手順は、前記全ページが未使用でないセグメントの消去回数に加えて、前記全ページが未使用でないセグメントにおける書き込みデータが無効のページ数、および前記全ページが未使用でないセグメントにおける書込みデータが有効のページ数を加味して前記転送元セグメントを決定し、
    さらに、前記転送元決定手順は、
    前記全ページが未使用でないセグメントのうち消去回数が少ない順に第1所定数のセグメントを選択する手順と、
    選択された前記第1所定数のセグメントのうち、書込みデータが無効のページ数が多い順に第2所定数のセグメントを選択する手順と、
    選択された前記第2所定数のセグメントのうち、書込みデータが有効のページ数が少ない順に第3所定数のセグメントを選択する手順と、
    選択された前記第3所定数のセグメントのうちの1つを前記転送元セグメントとして決定する手順と、
    を含むことを特徴とするコンピュータによるメモリ制御方法。
  8. 前記転送元決定手順は、直前に実行された前記転送元決定手順によって決定された転送元セグメントを対象外とする手順をさらに含むこと、を特徴とする請求項に記載のコンピュータによるメモリ制御方法。
  9. 前記転送先決定手順は、前記未使用ページがあるセグメントのうちそれぞれのセグメントの消去回数に加えて、前記未使用ページがあるセグメントにおける未使用ページ数を加味して前記転送先セグメントを決定すること、を特徴とする請求項または請求項のいずれかに記載のコンピュータによるメモリ制御方法。
  10. 前記転送先決定手順は、
    前記未使用ページが存在するセグメントのうち消去回数が少ない順に第4所定数のセグメントを選択する手順と、
    選択された前記第4所定数のセグメントのうち、未使用のページ数が多い順に第5所定数のセグメントを選択する手順と、
    選択された前記第5所定数の前記セグメントのうち1つを前記転送先セグメントとして選択する手順と、
    を含むことを特徴とする請求項から請求項のいずれかまたは請求項に記載のコンピュータによるメモリ制御方法。
  11. 前記転送先決定手順は、直前に実行された前記転送先決定手順によって決定された転送先セグメント内に未使用のページが存在する場合には、前記直前に決定された転送先セグメントを転送先セグメントとして決定する手順をさらに含むこと、を特徴とする請求項10に記載のコンピュータによるメモリ制御方法。
  12. 前記メモリ内の全ページのうち未使用のページのページ数が第1しきい値以下となること、または、前記全ページのうち書込みデータが無効のページのページ数が第2しきい値以上となることの少なくとも一方の条件が満たされる場合に、前記セグメント転送手順の実行を開始させる手順を含むこと、を特徴とする請求項から請求項11のいずれかに記載のコンピュータによるメモリ制御方法。
  13. メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とし、前記セグメント単位で消去回数を管理するとともに、上位プログラムからのアクセス要求を受け前記ページ単位で前記メモリ内の記憶領域を指定する、コンピュータによるメモリ制御方法であって、
    前記上位プログラムからのアクセス要求がある毎に、
    RAM上に転送元セグメント番号が記憶されているか否かを判定し、前記RAM上に転送元セグメント番号が記憶されていない場合には、前記消去回数に基づいて転送元セグメントを決定して前記RAM上に記憶する手順、
    前記RAM上に転送元セグメント番号が記憶されているか否かを判定し、前記RAM上に前記転送元セグメント番号が記憶されている場合には、前記転送元セグメント内の書込みデータが有効のページのうち1以上のページについて各ページ毎に、データの転送先として前記消去回数に基づいて転送先セグメントをそれぞれ決定し、前記決定された転送先セグメント内の未使用のページに前記1以上の転送元のページのデータを転送する手順、
    前記コンピュータに実行させるセグメント転送手順を含むこと、を特徴とするコンピュータによるメモリ制御方法。
  14. 前記転送元セグメントの書込みデータが有効のページの全てについて前記転送が終了しているか判定し、前記転送が終了している場合には、前記転送元セグメントが転送の対象であることを解除する為に該転送元セグメントが消去中であることを前記RAM上に記憶するとともに前記転送元セグメントの消去を開始する手順をさらに含むこと、を特徴とする請求項13に記載のコンピュータによるメモリ制御方法。
  15. 前記RAMを参照して前記転送元セグメントの消去が終了しているか否かを判定し終了している場合には、前記RAM上における前記転送元セグメントが消去中であることを解除する手順をさらに含むこと、を特徴とする請求項14に記載のコンピュータによるメモリ制御方法。
  16. 前記メモリ内の全ページのうち未使用のページのページ数が第1しきい値以下となること、または、前記全ページのうち書込みデータが無効のページのページ数が第2しきい値以上となることの少なくとも一方の条件が満たされる場合のみ、前記セグメント転送手順の実行を開始させること、を特徴とする請求項13から請求項15のいずれかに記載のコンピュータによるメモリ制御方法。
  17. メモリを、それぞれ所定サイズを持つ複数のページと、前記ページを複数含み且つ前記メモリの消去ブロックの整数倍のサイズを持つ複数のセグメントとによる階層的な構成とするとともに、前記セグメントをデータ領域とセグメント管理情報の格納領域に分け、前記ページをデータ領域とページ管理情報の格納領域とに分けた構成であるとみなし、論理ページ番号を指定単位として記憶装置へのアクセスを行う上位プログラムから前記論理ページ番号を受け取り、前記ページ単位で前記メモリ内の記憶領域を指定する、コンピュータによるメモリ書き込み制御方法であって、
    前記セグメントの消去回数を前記セグメント管理情報に書き込んで管理するセグメント管理手順と、
    前記ページ管理情報にアクセス対象の論理ページ番号が含まれるか否かを検索する検索手順と、
    上位プログラムから書込み要求のあった書込みデータを書き込むべきページとして、未使用ページがあるセグメントのうちそれぞれのセグメントの消去回数に基づいてセグメントを1つ選択し該選択されたセグメント内の未使用のページを割り当るページ割当て手順と、
    前記上位プログラムから書込み要求があった際に前記検索手順による検索を行った結果、指定された前記論理ページ番号が検索されなかった場合には、前記ページ割当て手順により書込み対象のページを割り当て、前記割り当てられたページのページ管理情報格納領域に前記書込み対象の論理ページ番号を格納するとともに、該割り当てられたページのデータ領域に前記書込みデータを書き込む新規ページ書込手順と、
    前記上位プログラムから書込み要求があった際に前記検索手順による検索を行った結果、指定された前記論理ページ番号が検索された場合には、前記ページ割当て手順により書込み対象のページを割り当て、前記割り当てられたページのページ管理情報格納領域に前記検索されたページのページ管理情報格納領域の内容を転送するとともに、該割り当てられたページのデータ領域に前記書込みデータを書き込み、さらに、前記検索されたページのページ管理情報に該検索されたページのデータが無効であることを示す情報を書き込む既存ページ書込手順と、
    前記ページ割り当て手順によって割り当てたページの前記メモリ内の記憶領域における先頭アドレスを記憶する手順と、
    を含み、
    前記ページ割当て手順は、前記未使用ページがあるセグメントのうちそれぞれのセグメントの消去回数に加えて、前記未使用ページがあるセグメントにおける未使用ページ数を加味してセグメントを1つ選択し、
    前記検索手順は、前回の前記ページ割り当て手順によって割り当てられることにより記憶された前記先頭アドレスを用いて、前記アクセス対象の論理ページ番号が前記メモリ内にあるか否かを検索することを特徴とするコンピュータによるメモリ書き込み制御方法。
  18. 前記ページ割当て手順は、
    前記未使用ページが存在すセグメントのうち消去回数が少ない順に第4所定数のセグメントを選択する手順と、
    選択された前記第4所定数のセグメントのうち、未使用のページ数が多い順に第5所定数のセグメントを選択する手順と、
    選択された前記第5所定数の前記セグメントのうち1つを選択する手順と、
    を含むことを特徴とする請求項17に記載のコンピュータによるメモリ書き込み制御方法。
  19. 前記ページ割当て手順は、直前に実行された前記ページ割当て手順によって割り当てられたセグメント内に未使用のページが存在する場合には、そのページを前記割り当て対象のページとする手順をさらに含むこと、を特徴とする請求項17または請求項18のいずれかに記載のコンピュータによるメモリ書き込み制御方法。
  20. 前記新規ページ書込手順は、前記書込みデータについて0が多いか1が多いかを調べ、0が多い場合でかつ前記メモリが消去後のデータが1になるタイプである場合、または、1が多い場合でかつ前記メモリが消去後のデータが0になるタイプである場合、前記書込みデータを反転して前記割り当てられたページに書き込むとともに、データ反転を行ったかどうかの情報を前記割り当てられたページのページ管理情報に書き込む手順を含むこと、を特徴とする請求項19に記載のコンピュータによるメモリ書き込み制御方法。
  21. 前記新規ページ書込手順は、前記書込みデータが全て前記メモリの消去直後のデータと一致する場合、前記ページ割当て手順により書込み対象のページを割り当て、前記割り当てられたページのページ管理情報の格納領域に前記書込み対象の論理ページ番号を格納するが、該割り当てられたページのデータ領域には前記書込みデータを書き込まないこととする手順をさらに含むこと、を特徴とする請求項17から請求項20のいずれかに記載のコンピュータによるメモリ書き込み制御方法。
  22. 前記既存ページ書込手順は、指定された前記論理ページ番号が検索された場合に、検索されたページのデータ領域のデータを読み込み、読み込まれた前記検索されたページのデータが前記書込みデータと同じである場合には、前記既存ページ書込み手順を終了させる手順をさらに含むこと、を特徴とする請求項17から請求項21のいずれかに記載のコンピュータによるメモリ書き込み制御方法。
  23. 前記既存ページ書込手順は、指定された前記論理ページ番号が検索された場合に、検索されたページのデータ領域のデータを読み込み、前記書込みデータが、読み込まれた前記検索されたページのデータに対して上書き可能なタイプのデータである場合、前記ページ割当て手順によるページの割り当てを行わず、前記書込みデータを前記検索されたページに上書きする手順をさらに含むこと、を特徴とする請求項17から請求項22のいずれかに記載のコンピュータによるメモリ書き込み制御方法。
  24. 請求項1から請求項16のいずれかに記載のコンピュータによるメモリ制御方法において、
    前記メモリの記憶領域を表すページのアドレスは、前記上位プログラムにより指定された前記論理ページ番号に対応する仮想アドレスであって、前記セグメントの番号、該セグメント内でシリアルに割り当てられたページ番号に対応する仮想アドレスで指定されること、を特徴とするコンピュータによるメモリ制御方法。
  25. 請求項17から請求項23のいずれかに記載のコンピュータによるメモリ書き込み制御方法において、
    前記メモリの記憶領域を表すページのアドレスは、前記上位プログラムにより指定された前記論理ページ番号に対応する仮想アドレスであって、前記セグメントの番号、該セグメント内でシリアルに割り当てられたページ番号に対応する仮想アドレスで指定されること、を特徴とするコンピュータによるメモリ書き込み制御方法。
  26. 請求項1から請求項25のいずれかに記載のメモリ制御方法又はメモリ書き込み制御方法をコンピュータに実行させるためのソフトウェア。
  27. 請求項1から請求項25のいずれかに記載のメモリ制御方法又はメモリ書き込み制御方法によりメモリの読み書きを制御するメモリ制御装置。
JP2002339085A 2001-11-28 2002-11-22 メモリ制御方法および装置 Expired - Fee Related JP4280055B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002339085A JP4280055B2 (ja) 2001-11-28 2002-11-22 メモリ制御方法および装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001-362256 2001-11-28
JP2001362256 2001-11-28
JP2002339085A JP4280055B2 (ja) 2001-11-28 2002-11-22 メモリ制御方法および装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005322993A Division JP2006099797A (ja) 2001-11-28 2005-11-08 メモリ制御方法および装置

Publications (2)

Publication Number Publication Date
JP2003228513A JP2003228513A (ja) 2003-08-15
JP4280055B2 true JP4280055B2 (ja) 2009-06-17

Family

ID=27759389

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002339085A Expired - Fee Related JP4280055B2 (ja) 2001-11-28 2002-11-22 メモリ制御方法および装置

Country Status (1)

Country Link
JP (1) JP4280055B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI740446B (zh) * 2020-04-08 2021-09-21 慧榮科技股份有限公司 管理垃圾回收程序的電腦程式產品及方法及裝置
US11397676B2 (en) 2020-04-08 2022-07-26 Silicon Motion, Inc. Computer program product and method and apparatus for managing garbage collection process

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007519996A (ja) * 2003-12-30 2007-07-19 サンディスク コーポレイション 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法
US8069192B2 (en) * 2004-03-22 2011-11-29 Microsoft Corporation Computing device with relatively limited storage space and operating / file system thereof
CN100484186C (zh) * 2004-07-26 2009-04-29 佳能株式会社 作业处理方法
JP4366341B2 (ja) * 2004-07-26 2009-11-18 キヤノン株式会社 データ処理方法、データ処理システム及びコンピュータプログラム、並びに記憶媒体
JP2006338370A (ja) * 2005-06-02 2006-12-14 Toshiba Corp メモリシステム
JP4547028B2 (ja) * 2005-08-03 2010-09-22 サンディスク コーポレイション ブロック管理を伴う不揮発性メモリ
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US20070174549A1 (en) * 2006-01-24 2007-07-26 Yevgen Gyl Method for utilizing a memory interface to control partitioning of a memory module
CN100468576C (zh) * 2007-05-30 2009-03-11 忆正存储技术(深圳)有限公司 闪存数据读写处理方法
JP5010505B2 (ja) 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP5332800B2 (ja) * 2009-03-26 2013-11-06 株式会社デンソー 記憶装置
JP4802284B2 (ja) 2010-01-29 2011-10-26 株式会社東芝 半導体記憶装置及びその制御方法
US8856488B2 (en) 2010-02-11 2014-10-07 Memory Technologies Llc Method for utilizing a memory interface to control partitioning of a memory module
WO2011128928A1 (en) * 2010-04-12 2011-10-20 Hitachi, Ltd. Storage device
JP5614337B2 (ja) 2011-03-08 2014-10-29 富士通セミコンダクター株式会社 メモリの制御方法、メモリの制御回路、記憶装置、及び電子機器
CN102929884B (zh) * 2011-08-10 2016-05-04 阿里巴巴集团控股有限公司 一种收缩虚拟磁盘镜像文件的方法及装置
KR20200033625A (ko) * 2018-09-20 2020-03-30 에스케이하이닉스 주식회사 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
JP7305340B2 (ja) * 2018-12-11 2023-07-10 キヤノン株式会社 情報処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341339A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
US5740395A (en) * 1992-10-30 1998-04-14 Intel Corporation Method and apparatus for cleaning up a solid state memory disk storing floating sector data
JPH07334991A (ja) * 1994-06-07 1995-12-22 Sony Corp 半導体不揮発性記憶装置
JPH0997218A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JPH0997206A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JPH1027100A (ja) * 1996-07-11 1998-01-27 Mitsubishi Electric Corp プログラムデータ書換装置
JPH10320984A (ja) * 1997-05-15 1998-12-04 Sharp Corp 記憶装置
JP2001297589A (ja) * 2000-04-12 2001-10-26 Matsushita Electric Ind Co Ltd フラッシュメモリ書換え制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI740446B (zh) * 2020-04-08 2021-09-21 慧榮科技股份有限公司 管理垃圾回收程序的電腦程式產品及方法及裝置
US11397676B2 (en) 2020-04-08 2022-07-26 Silicon Motion, Inc. Computer program product and method and apparatus for managing garbage collection process

Also Published As

Publication number Publication date
JP2003228513A (ja) 2003-08-15

Similar Documents

Publication Publication Date Title
JP4280055B2 (ja) メモリ制御方法および装置
US11636032B2 (en) Memory system, data storage device, user device and data management method thereof
KR100324028B1 (ko) 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법
US7694087B2 (en) Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device
KR100877448B1 (ko) 비휘발성 기억 시스템
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
JP4238514B2 (ja) データ記憶装置
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
KR101086857B1 (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US8122193B2 (en) Storage device and user device including the same
JP4991320B2 (ja) ホスト装置およびメモリシステム
US8219776B2 (en) Logical-to-physical address translation for solid state disks
KR102252419B1 (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
JP5976980B1 (ja) 階層化ストレージシステム、階層化ストレージ装置を利用するコンピュータ、及びファイルへのアクセスのカウントを補正する方法
US20100235605A1 (en) Enhancement of storage life expectancy by bad block management
KR100317691B1 (ko) 로그 구조화 목표 저장장치를 사전에 구성하여 볼륨을 효율적으로 복사하는 방법 및 장치
US20140059273A1 (en) Host apparatus and memory device
WO2011062861A1 (en) Aligning data storage device partition to boundary of physical data sector
WO2006098212A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
JP2010026933A (ja) メモリシステム、ホスト装置
JP2009244962A (ja) メモリシステム
JP4924645B2 (ja) ストレージ制御装置、ストレージシステム及びコピー方法。
WO2005008499A1 (ja) 情報記録媒体におけるデータ領域管理方法、及びデータ領域管理方法を用いた情報処理装置
CN112306898A (zh) 存储设备、其操作方法及包括其的电子设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050909

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051108

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051118

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060524

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090128

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090313

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120319

Year of fee payment: 3

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: 20120319

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120319

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120319

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees