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

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

Info

Publication number
JP2003228513A
JP2003228513A JP2002339085A JP2002339085A JP2003228513A JP 2003228513 A JP2003228513 A JP 2003228513A JP 2002339085 A JP2002339085 A JP 2002339085A JP 2002339085 A JP2002339085 A JP 2002339085A JP 2003228513 A JP2003228513 A JP 2003228513A
Authority
JP
Japan
Prior art keywords
page
segment
memory
procedure
pages
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.)
Granted
Application number
JP2002339085A
Other languages
English (en)
Other versions
JP4280055B2 (ja
Inventor
Kazunobu Kashiwabuchi
和信 柏渕
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.)
Axess Corp
Original Assignee
Axess Corp
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 Axess Corp filed Critical Axess Corp
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

Landscapes

  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

(57)【要約】 【課題】 メモリを効率的に制御するとともに、消去ブ
ロックの消去回数の平均化が可能なメモリ制御方法およ
び装置を提供する。 【解決手段】 フラッシュメモリを、それぞれ所定サイ
ズを持つ複数のページと、前記ページを複数含み且つ前
記フラッシュメモリの消去ブロックの整数倍のサイズを
持つ複数のセグメントとによる階層的な構成とし、前記
セグメント単位で消去回数を管理する。セグメントの消
去回数に基づいて、少なくとも1つの有効ページを含む
セグメントを消去セグメントとして選択し、上記消去セ
グメントに含まれる前記少なくとも1つの有効ページの
各々に対して、(1)当該ページの内容を転送する転送
先を決定し、(2)当該ページの内容を前記転送先に転
送する、という処理を順次行い、前記消去セグメント内
の全ての有効ページの転送が終了した後、前記転送元セ
グメント内のデータを消去する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、メモリをファイル
およびデータ記憶用途として用いる為のメモリ制御方法
および装置に関する。
【0002】
【従来の技術】情報機器の普及を背景として、フラッシ
ュメモリの利用が拡大している。フラッシュメモリは、
電気的に消去および再書き込みができる不揮発性メモリ
である。フラッシュメモリは、複数の消去ブロックから
構成され、消去ブロックを単位として消去する構成であ
り、また各消去ブロックには数万回程度といわれる消去
回数の寿命がある。
【0003】また、フラッシュメモリの利用拡大と共
に、フラッシュメモリをハードディスクのような外部記
憶装置用途として用いるためのファイルシステムの実現
が要求されている。
【0004】
【発明が解決しようとする課題】このようなファイルシ
ステムにおいて、メモリアクセスに関する高速化・高信
頼化などの要求があるのはもちろんのこと、フラッシュ
メモリが消去ブロックを消去単位としていること、デー
タが書き込まれた位置に直接上書きをすることができな
いことなどから、フラッシュメモリを外部記憶装置とし
て用いる為の効率的な制御が要求される。また、フラッ
シュメモリは様々な情報機器に搭載されることから、フ
ァイルシステムを特定のCPUやOS(Operating Syst
em)に依存しないように構成する必要が生じる。
【0005】本発明は、このような事情に鑑みてなされ
た。すなわち本発明の第1の目的は、メモリの各消去ブ
ロックの消去回数を高い精度で平均化できる制御方法お
よび装置を提供することである。また、本発明の第2の
目的は、ファイルシステムなどに対して、メモリに対す
る書き込み、読み出しなどのアクセスを効率的に行うこ
とのできる制御方法を提供することである。また、本発
明の第3の目的は、メモリの物理フォーマット処理の中
断などに対する回復処理を提供し、システムの信頼性を
向上させることである。また、本発明の第4の目的は、
特定のハードウェアに依存しない構成を持つメモリ管理
システムを提供することである。
【0006】
【課題を解決するための手段】上記目的を達成するた
め、メモリを、それぞれ所定サイズを持つ複数のページ
と、前記ページを複数含み且つ前記メモリの消去ブロッ
クの整数倍のサイズを持つ複数のセグメントとによる階
層的な構成として管理する。そして、前記セグメント単
位で消去回数を管理するとともに、上位プログラムから
のアクセス要求を受け前記ページ単位で前記メモリ内の
記憶領域を指定するメモリ制御方法とする。セグメント
の消去回数に基づいて、少なくとも1つの有効ページを
含むセグメントを消去セグメントとして選択し、上記消
去セグメントに含まれる前記少なくとも1つの有効ペー
ジの各々に対して、(1)当該ページの内容を転送する
転送先を決定し、(2)当該ページの内容を前記転送先
に転送する、という処理を順次行い、前記消去セグメン
ト内の全ての有効ページの転送が終了した後、前記転送
元セグメント内のデータを消去する(請求項1)。この
ような、セグメントの転送・消去を行うことによって、
消去回数の少ないセグメントを使用可能な状態にするこ
とができ、各セグメントの消去回数を平均化できる。こ
の処理は、いわゆるガベージコレクションに対応する。
転送元セグメント内の有効ページ毎に移動先が決定され
る(すなわち、移動先のセグメントが1個に固定されな
い)ので、ページ転送の中断による問題を回避すること
ができる。
【0007】上記目的を達成するため、請求項2に記載
のメモリの消去制御装置は、複数のページに分割された
セグメント毎の消去回数を記憶する記憶手段と、各セグ
メント毎の消去回数に基づいて、各セグメントの消去回
数の差が少なくなるように、消去回数の少ない領域を優
先的に消去するように前記メモリの消去を制御する消去
制御手段とを有する(請求項2)。消去回数の少ない領
域が優先的に消去され、各セグメントの消去回数を平均
化することができる。
【0008】上記目的を達成するため、請求項3に記載
の発明は、メモリを、それぞれ所定サイズを持つ複数の
ページと、前記ページを複数含み且つ前記メモリの消去
ブロックの整数倍のサイズを持つ複数のセグメントとに
よる階層的な構成とし、前記セグメント単位で消去回数
を管理するとともに、上位プログラムからのアクセス要
求を受け前記ページ単位で前記メモリ内の記憶領域を指
定するメモリ制御方法である。さらに、このメモリ制御
方法に、全ページが未使用でないセグメントのうちそれ
ぞれのセグメントの消去回数に基づいて転送元セグメン
トを決定する転送元決定手順と、未使用ページがあるセ
グメントのうち各セグメントの消去回数に基づいて転送
先セグメントを決定する転送先決定手順と、前記転送元
セグメント内の書込みデータが有効のページ毎に、前記
転送先決定手順により転送先セグメントの決定をそれぞ
れ行い、前記決定された転送先セグメント内の未使用の
ページに前記転送元セグメント内の書込みデータが有効
のページのデータを転送する転送手順と、前記転送元セ
グメント内の書込みデータが有効な全てのページについ
て前記転送手順によって転送が終了したならば、前記転
送元セグメント内のデータを消去する消去手順と、から
成るセグメント転送手順を含める。ガベージコレクショ
ンにおいて、転送元セグメント内の有効ページ毎に移動
先が決定される(すなわち、移動先のセグメントが1個
に固定されない)ので、ページ転送の中断による問題を
回避することができる。
【0009】ここで、前記転送元決定手順は、全ページ
が未使用でないセグメントの消去回数に加えて、全ペー
ジが未使用でないセグメントにおける書き込みデータが
無効のページ数、および前記全ページが未使用でないセ
グメントにおける書込みデータが有効のページ数を加味
して転送元セグメントを決定する構成であることが好ま
しい(請求項4)。
【0010】この場合、前記転送元決定手順は、全ペー
ジが未使用でないセグメントのうち消去回数が少ない順
に第1所定数のセグメントを選択する手順と、選択され
た前記第1所定数のセグメントのうち、書込みデータが
無効のページ数が多い順に第2所定数のセグメントを選
択する手順と、選択された前記第2所定数のセグメント
のうち、書込みデータが有効のページ数が少ない順に第
3所定数のセグメントを選択する手順と、選択された前
記第3所定数のセグメントのうちの1つを前記転送元セ
グメントとして決定する手順とから構成することができ
る(請求項5)。
【0011】また、前記転送元決定手順は、直前に実行
された前記転送元決定手順によって決定された転送元セ
グメントを対象外とする手順をさらに含むことが好まし
い(請求項6)。同じセグメントが連続して消去される
のを回避することができる。
【0012】前記転送先決定手順は、前記未使用ページ
があるセグメントのうちそれぞれのセグメントの消去回
数に加えて、前記未使用ページがあるセグメントにおけ
る未使用ページ数を加味して前記転送先セグメントを決
定する構成であることが好ましい(請求項7)。
【0013】この場合、前記転送先決定手順は、前記空
きページが存在するセグメントのうち消去回数が少ない
順に第4所定数のセグメントを選択する手順と、選択さ
れた前記第4所定数のセグメントのうち、未使用のペー
ジ数が多い順に第5所定数のセグメントを選択する手順
と、選択された前記第5所定数の前記セグメントのうち
1つを前記転送先セグメントとして選択する手順とから
構成することができる(請求項8)。
【0014】前記転送先決定手順は、直前に実行された
前記転送先決定手順によって決定された転送先セグメン
ト内に未使用のページが存在する場合には、前記直前に
決定された転送先セグメントを転送先セグメントとして
決定する手順をさらに含むことが好ましい(請求項
9)。転送先セグメントの決定を高速化することができ
る。
【0015】本メモリ制御方法が、前記メモリ内の全ペ
ージのうち未使用のページのページ数が第1しきい値以
下となること、または、前記全ページのうち書込みデー
タが無効のページのページ数が第2しきい値以上となる
ことの少なくとも一方の条件が満たされる場合に、前記
セグメント転送手順の実行を開始させる手順を含むこと
が好ましい(請求項10)。メモリの空き状況に応じて
セグメント転送処理を自動的に開始させることができ
る。
【0016】上記目的を達成するため、メモリを、それ
ぞれ所定サイズを持つ複数のページと、前記ページを複
数含み且つ前記メモリの消去ブロックの整数倍のサイズ
を持つ複数のセグメントとによる階層的な構成とし、前
記セグメント単位で消去回数を管理する。そして、上位
プログラムからのアクセス要求を受け前記ページ単位で
前記メモリ内の記憶領域を指定するメモリ制御方法とす
る。本メモリ制御方法に、前記上位プログラムからのア
クセス要求がある毎に、RAM上に転送元セグメント番
号が記憶されているか否かを判定し、前記RAM上に転
送元セグメント番号が記憶されていない場合には、前記
消去回数に基づいて転送元セグメントを決定して前記R
AM上に記憶する手順、前記RAM上に転送元セグメン
ト番号が記憶されているか否かを判定し、前記RAM上
に前記転送元セグメント番号が記憶されている場合に
は、前記転送元セグメント内の書込みデータが有効のペ
ージのうち1以上のページについて各ページ毎に、デー
タの転送先として前記消去回数に基づいて転送先セグメ
ントをそれぞれ決定し、前記決定された転送先セグメン
ト内の未使用のページに前記1以上の転送元のページの
データを転送する手順、前記転送元セグメントの書込み
データが有効のページの全てについて前記転送が終了し
ているか判定し、前記転送が終了している場合には、前
記転送元セグメントが転送の対象であることを解除する
為に該転送元セグメントが消去中であることを前記RA
M上に記憶するとともに前記転送元セグメントの消去を
開始する手順、前記RAMを参照して前記転送元セグメ
ントの消去が終了しているか否かを判定し終了している
場合には、前記RAM上における前記転送元セグメント
が消去中であることを解除する手順、の少なくともいず
れか1つの手順を実行させるセグメント転送手順を含め
る(請求項11)。セグメント転送・消去(ガベージコ
レクション)を、上記の手順によって実現することで、
ガベージコレクションをバックグラウンド処理として行
うことができる。また、ガベージコレクションのページ
移動を分散して行うことができる。
【0017】この場合において、前記メモリ内の全ペー
ジのうち未使用のページのページ数が第1しきい値以下
となること、または、前記全ページのうち書込みデータ
が無効のページのページ数が第2しきい値以上となるこ
との少なくとも一方の条件が満たされる場合のみ、前記
セグメント転送手順の実行を開始させる構成であること
が好ましい(請求項12)。
【0018】上記目的を達成するため、請求項13に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つ複数のセ
グメントとによる階層的な構成として管理する。さら
に、前記セグメントをデータ領域とセグメント管理情報
の格納領域に分け、前記ページをデータ領域とページ管
理情報の格納領域とに分けた構成であるとみなし、論理
ページ番号を指定単位として記憶装置へのアクセスを行
う上位プログラムから前記論理ページ番号を受け取り、
前記ページ単位で前記メモリ内の記憶領域を指定するメ
モリ制御方法とする。さらに、本メモリ制御方法に、前
記セグメントの消去回数を前記セグメント管理情報に書
き込んで管理するセグメント管理手順と、前記ページ管
理情報にアクセス対象の論理ページ番号が含まれるか否
かを検索する検索手順と、上位プログラムから書込み要
求のあった書込みデータを書き込むべきページとして、
未使用ページがあるセグメントのうちそれぞれのセグメ
ントの消去回数に基づいてセグメントを1つ選択し該選
択されたセグメント内の未使用のページを割り当るペー
ジ割当て手順と、前記上位プログラムから書込み要求が
あった際に前記検索手順による検索を行った結果、指定
された前記論理ページ番号が検索されなかった場合に
は、前記ページ割当て手順により書込み対象のページを
割り当て、前記割り当てられたページのページ管理情報
格納領域に前記書込み対象の論理ページ番号を格納する
とともに、該割り当てられたページのデータ領域に前記
書込みデータを書き込む新規ページ書込手順と、前記上
位プログラムから書込み要求があった際に前記検索手順
による検索を行った結果、指定された前記論理ページ番
号が検索された場合には、前記ページ割当て手順により
書込み対象のページを割り当て、前記割り当てられたペ
ージのページ管理情報格納領域に前記検索されたページ
のページ管理情報格納領域の内容を転送するとともに、
該割り当てられたページのデータ領域に前記書込みデー
タを書き込み、さらに、前記検索されたページのページ
管理情報に該検索されたページのデータが無効であるこ
とを示す情報を書き込む既存ページ書込手順と、を含め
る。新規ページ書込手順、或いは既存ページ書き込み手
順において用いる書き込み対象のセグメントを、セグメ
ント消去回数にもとづいて、例えば消去回数の少ないセ
グメントに決定することができる。
【0019】前記ページ割当て手順は、前記未使用ペー
ジがあるセグメントのうちそれぞれのセグメントの消去
回数に加えて、前記未使用ページがあるセグメントにお
ける未使用ページ数を加味してセグメントを1つ選択す
る構成とすることができる(請求項14)。
【0020】前記ページ割当て手順は、前記空きページ
が存在すセグメントのうち消去回数が少ない順に第4所
定数のセグメントを選択する手順と、選択された前記第
4所定数のセグメントのうち、未使用のページ数が多い
順に第5所定数のセグメントを選択する手順と、選択さ
れた前記第5所定数の前記セグメントのうち1つを選択
する手順と、を含む構成であることが好ましい(請求項
15)。
【0021】ここで、前記メモリ制御方法に、前記ペー
ジ割り当て手順によって割り当てたページの前記メモリ
内の記憶領域における先頭アドレスを記憶する手順をさ
らに含める構成とした場合、前記検索手順は、前回の前
記ページ割り当て手順によって割り当てられることによ
り記憶された前記先頭アドレスを用いて、前記アクセス
対象の論理ページ番号が前記メモリ内にあるか否かを検
索する構成とすることができる(請求項16)。
【0022】また、前記ページ割当て手順は、直前に実
行された前記ページ割当て手順によって割り当てられた
セグメント内に未使用のページが存在する場合には、そ
のページを前記割り当て対象のページとする手順をさら
に含むことが好ましい(請求項17)。
【0023】また、前記新規ページ書込手順は、前記書
込みデータについて0が多いか1が多いかを調べ、0が
多い場合でかつ前記メモリが消去後のデータが1になる
タイプである場合、または、1が多い場合でかつ前記メ
モリが消去後のデータが0になるタイプである場合、前
記書込みデータを反転して前記割り当てられたページに
書き込むとともに、データ反転を行ったかどうかの情報
を前記割り当てられたページのページ管理情報に書き込
む手順を含むことが好ましい(請求項18)。書き込み
データをメモリの仕様に合わせて適応化させることで、
書き込みを高速化することができる。
【0024】また、前記新規ページ書込手順は、前記書
込みデータが全て前記メモリの消去直後のデータと一致
する場合、前記ページ割当て手順により書込み対象のペ
ージを割り当て、前記割り当てられたページのページ管
理情報の格納領域に前記書込み対象の論理ページ番号を
格納するが、該割り当てられたページのデータ領域には
前記書込みデータを書き込まないこととする手順をさら
に含むことが好ましい(請求項19)。消去後の状態と
して既に設定されているデータを書き込まないことで、
書き込みを高速化することができる。
【0025】前記既存ページ書込手順は、指定された前
記論理ページ番号が検索された場合に、検索されたペー
ジのデータ領域のデータを読み込み、読み込まれた前記
検索されたページのデータが前記書込みデータと同じで
ある場合には書き込みを行わずに、前記既存ページ書込
み手順を終了させる手順をさらに含むことが好ましい
(請求項20)。既に書き込まれているデータを書き込
まないことで、書き込みを高速化できる。
【0026】また、前記既存ページ書込手順は、指定さ
れた前記論理ページ番号が検索された場合に、検索され
たページのデータ領域のデータを読み込み、前記書込み
データが、読み込まれた前記検索されたページのデータ
に対して上書き可能なタイプのデータである場合、前記
ページ割当て手順によるページの割り当てを行わず、前
記書込みデータを前記検索されたページに上書きする手
順をさらに含むことが好ましい(請求項21)。ページ
の割り当てを行わないことで、書き込みを高速化するこ
とができる。
【0027】上記目的を達成するため、請求項22に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つ複数のセ
グメントとによる階層的な構成として管理する。さら
に、前記セグメントをデータ領域とセグメント管理情報
の格納領域に分け、前記ページをデータ領域とページ管
理情報の格納領域とに分けた構成であるとみなし、論理
ページ番号を指定単位として記憶装置へのアクセスを行
う上位プログラムから前記論理ページ番号を受け取り、
前記ページ単位で前記メモリ内の記憶領域を指定するメ
モリ制御方法とする。さらにこのメモリ制御方法に、前
記上位プログラムから論理ページ番号を指定しての書込
み要求があった場合に、書込み対象のページとして前記
メモリ内の未使用のページを割り当て、前記割り当てら
れたページのデータ領域に書込みデータを書き込むとと
もに、前記割り当てられたページのページ管理情報の格
納領域には、前記書込み要求の対象の論理ページ番号を
格納する書込み手順と、全ての論理ページ番号につい
て、それぞれの論理ページ番号に対応するページが前記
メモリ内に存在するか否かの情報を対応付けた対応関係
をRAM上に作成するページ割当マップ作成手順と、前記
上位プログラムから前記論理ページ番号を指定してのア
クセス要求があった場合に、前記ページ割当マップ作成
手順によって作成された対応関係を用いて、前記アクセ
ス要求の論理ページが前記メモリ内に存在するか否かを
判定するページ検索手順と、を含める。ページ割当マッ
プ作成手順によって作成した対応関係を用いることで、
ページ検索手順において、論理ページが前記メモリ内に
存在するか否かを高速に判定することができる。メモリ
内の全ページを検索して、論理ページがあるかないかを
判定する必要は無い。
【0028】上記目的を達成するため、請求項23に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つ複数のセ
グメントとによる階層的な構成として管理する。さら
に、前記セグメントをデータ領域とセグメント管理情報
の格納領域に分け、前記ページをデータ領域とページ管
理情報の格納領域とに分けた構成であるとみなし、論理
ページ番号を指定単位として記憶装置へのアクセスを行
う上位プログラムから前記論理ページ番号を受け取り、
前記ページ単位で前記メモリ内の記憶領域を指定するメ
モリ制御方法とする。さらに、このメモリ制御方法に、
前記上位プログラムから論理ページ番号を指定しての書
込み要求があった場合に、書込み対象のページとして前
記メモリ内の未使用のページを割り当て、前記割り当て
られたページのデータ領域に書込みデータを書き込むと
ともに、前記割り当てられたページのページ管理情報の
格納領域には、前記書込み要求の対象の論理ページ番号
を格納する書込み手順と、前記上位プログラムから論理
ページ番号を指定しての読出し要求があった場合に、最
後に読み出されたページの前記メモリの記憶領域におけ
る先頭アドレスがRAMに格納されているか否かを判定
し、前記判定結果として前記先頭アドレスがRAM上に格
納されていない場合には、前記メモリ内のページのペー
ジ管理情報を検索して前記読出し要求の論理ページ番号
があるか否かを判定するとともに、前記読出し要求のペ
ージが検索できた場合に該検索されたページの前記メモ
リの記憶領域における先頭アドレスをRAMに記憶し、前
記判定結果として前記先頭アドレスがRAMに格納されて
いる場合には、前記RAM上の先頭アドレスに基づいて前
記読出し要求の論理ページ番号があるか否かの検索を行
うページ検索手順とを含める。最後のページ検索手順で
みつかったページの先頭アドレスがRAM上に記憶される
ので、この先頭アドレスに基づいてページ検索を行うこ
とで、検索を高速化することができる。
【0029】上記目的を達成するため、請求項24に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つ複数のセ
グメントとによる階層的な構成として管理する。さら
に、前記セグメントをデータ領域とセグメント管理情報
の格納領域に分け、前記ページをデータ領域とページ管
理情報の格納領域とに分けた構成であるとみなし、論理
ページ番号を指定単位として記憶装置へのアクセスを行
う上位プログラムから前記論理ページ番号を受け取り、
前記ページ単位で前記メモリ内の記憶領域を指定するメ
モリ制御方法とする。さらにこのメモリ制御方法に、前
記上位プログラムから論理ページ番号を指定しての書込
み要求があった場合に、書込み対象のページとして前記
メモリ内の未使用のページを割り当て、前記割り当てら
れたページのデータ領域に書込みデータを書き込むとと
もに、前記割り当てられたページのページ管理情報の格
納領域には、前記書込み要求の対象の論理ページ番号を
格納する書込み手順と、前記上位プログラムから論理ペ
ージ番号を指定してページ削除要求があった場合に、指
定された前記論理ページ番号に対応するページのページ
管理情報に削除されたことを示す情報を書き込むページ
削除手順と、を含める。上位プログラムからのページ削
除要求に対して、ページ管理情報に削除の情報を書き込
んで対処する。上位プログラムがファイル削除時に、そ
のファイルが使用していた領域の削除をしておけば、上
位プログラムが別なファイルへの書き込みの際に削除し
た領域への書き込みを行うときに、当該ページの上書き
が発生しないため、書き込みを高速化することができ
る。
【0030】上記目的を達成するため、請求項25に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つ複数のセ
グメントとによる階層的な構成として管理する。さら
に、前記セグメントをデータ領域とセグメント管理情報
の格納領域に分け、前記ページをデータ領域とページ管
理情報の格納領域とに分けた構成であるとみなし、論理
ページ番号を指定単位として記憶装置へのアクセスを行
う上位プログラムから前記論理ページ番号を受け取り、
前記ページ単位で前記メモリ内の記憶領域を指定するメ
モリ制御方法とする。さらに、このメモリ制御方法に、
上位プログラムからのアクセス要求で指定された論理ペ
ージ番号が前記メモリ内の各ページのページ管理情報に
含まれるか否かを検索する検索手順と、前記上位プログ
ラムから論理ページ番号を指定してページ書込み要求が
あった際に前記検索手順による検索を行い、指定された
前記論理ページ番号が検索されなかった場合に、前記メ
モリ内の未使用のページを選択し、前記選択されたペー
ジのページ管理情報のページ状態を予約とし及び前記ペ
ージ管理情報に前記指定された論理ページ番号を書き込
む第1手順と、前記選択されたページのデータ領域に書
込みデータを書き込む第2手順と、前記選択されたペー
ジのページ管理情報のページ状態を有効とする第3手順
とから成る新規ページ書込手順と、前記上位プログラム
から論理ページ番号を指定してページ書込み要求があっ
た際に前記検索手順による検索を行い、指定された前記
論理ページ番号が検索された場合に、前記メモリ内の未
使用のページを選択し前記選択されたページのページ管
理情報のページ状態を予約とし及び前記ページ管理情報
に前記指定された論理ページ番号を書き込む第4手順
と、前記選択されたページのデータ領域に書込みデータ
を書き込む第5手順と、前記検索されたページのページ
管理情報の更新中フラグを有効にする第6手順と、前記
選択されたページのページ管理情報のページ状態を有効
にする第7手順と、前記検索されたページのページ管理
情報のページ状態を削除にする第8手順とから成る既存
ページ書込手順と、全ページ中でページ状態が有効であ
り且つ更新中フラグが有効である条件を満たす削除中ペ
ージを検索する第9手順と、前記削除中ページと同一の
論理ページ番号を持ち且つ更新中フラグが無効である条
件を満たす上書きページを検索する第10手順と、前記
第10手順により前記上書きページがあった場合、前記
削除中ページのページ管理情報のページ状態を削除にす
る第11手順とから成る書込回復手順と、を含める。電
源断などによる書き込み手順の中断に対して、書き込み
処理の回復を行うことができる。
【0031】上記目的を達成するために、請求項26に
記載のメモリ制御方法は、メモリを、それぞれ所定サイ
ズを持つ複数のページと、前記ページを複数含み且つ前
記メモリの消去ブロックの整数倍のサイズを持つ複数の
セグメントとによる階層的な構成として管理する。さら
に、前記セグメントをデータ領域とセグメント管理情報
の格納領域に分け、前記ページをデータ領域とページ管
理情報の格納領域とに分けた構成であるとみなし、論理
ページ番号を指定単位として記憶装置へのアクセスを行
う上位プログラムから前記論理ページ番号を受け取り、
前記ページ単位で前記メモリ内の記憶領域を指定するメ
モリ制御方法とする。さらに、このメモリ制御方法に、
前記上位プログラムから論理ページ番号を指定してペー
ジ削除要求があった場合に、指定された前記論理ページ
番号に対応するページのページ管理情報のページ状態を
削除にするページ削除手順と、前記セグメントの消去回
数を前記セグメント管理情報に書き込んで管理するセグ
メント管理手順と、上位プログラムより指定セグメント
サイズおよび指定ページサイズを伴う物理フォーマット
要求を受け取った場合に、前記メモリ内の前記指定セグ
メントサイズで規定される全てのセグメントについて、
各セグメント内の全消去ブロックを消去する手順と、各
セグメントのセグメント管理情報に初期状態に対応する
情報を書き込む手順とを含む物理フォーマット手順と、
前記指定セグメントサイズで規定される全セグメントに
ついて、有効なデータが存在しないセグメント又はセグ
メント管理情報の内容が不正であるセグメントを検索す
る手順と、前記検索により見つかったセグメント内のデ
ータが全て消去されているかを判定する手順と、前記判
定により消去されていないデータがあるセグメントにつ
いて、データを消去するとともにセグメント管理情報に
初期状態に対応する情報を書き込む手順と、から成る物
理フォーマット回復手順と、を含める。電源断などによ
る物理フォーマット手順の中断に対して、物理フォーマ
ット処理の回復を行うことができる。
【0032】上記目的を達成するため、請求項27に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つ複数のセ
グメントとによる階層的な構成として管理する。さら
に、前記セグメント単位で消去回数を管理するととも
に、上位プログラムからのアクセス要求を受け前記ペー
ジ単位で前記メモリ内の記憶領域を指定するメモリ制御
方法とする。さらに、このメモリ制御方法に、前記メモ
リに書込みまたは消去命令を出してから完了するまでの
時間を測定することによって前記メモリの書込みまたは
消去に必要な待ち時間を、システムの処理速度に応じた
単位で測定する測定手順と、前記測定手順によって測定
された待ち時間に基づいて、前記メモリに対して書込み
または消去命令を出した後のタイムアウトの判定を行う
手順と、を含める。システム処理速度に基づく適正なタ
イムアウト処理を行うことができる。
【0033】上記目的を達成するため、請求項28に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つ複数のセ
グメントとによる階層的な構成として管理する。さら
に、前記セグメント単位で消去回数を管理するととも
に、上位プログラムからのアクセス要求を受け前記ペー
ジ単位で前記メモリ内の記憶領域を指定するメモリ制御
方法とする。さらにこのメモリ制御方法に、上位プログ
ラムより指定セグメントサイズおよび指定ページサイズ
を伴う物理フォーマット要求を受け取った場合に、前記
メモリ内の前記指定セグメントサイズで規定される全て
のセグメントについて、各セグメント内の全消去ブロッ
クを消去する手順と、各セグメントのセグメント管理情
報に初期状態に対応する情報を書き込む手順と、から成
る物理フォーマット手順と、前記メモリ内の少なくとも
1つのページについて、ページ管理情報にページサイズ
を含む、ページが有効であることを示す情報を書き込む
手順と、前記メモリ内の有効なページを検索して前記検
索されたページのページ管理情報からページサイズを取
得する手順と、を含める。ページサイズをメモリから取
得でき、ページサイズをRAMなどに保持する必要がな
くなる。ページサイズを上位プログラムなどの固定値と
する必要がなくなり、システムの柔軟性が増す。
【0034】上記目的を達成するため、請求項29に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つ複数のセ
グメントとによる階層的な構成として管理する。さら
に、前記セグメント単位で消去回数を管理するととも
に、上位プログラムからのアクセス要求を受け前記ペー
ジ単位で前記メモリ内の記憶領域を指定するメモリ制御
方法とする。さらにこのメモリ制御方法に、上位プログ
ラムより指定セグメントサイズおよび指定ページサイズ
を伴う物理フォーマット要求を受け取った場合に、前記
メモリ内の前記指定セグメントサイズで規定される全て
のセグメントについて、各セグメント内の全消去ブロッ
クを消去する手順と、各セグメントのセグメント管理情
報に初期状態に対応する情報を書き込む手順とから成る
物理フォーマット手順と、前記メモリ内の少なくとも1
つのセグメントのセグメント管理情報に、物理フォーマ
ットの種類およびセグメントサイズを含む、セグメント
が有効である情報を書き込む手順と、前記メモリ内の有
効なセグメントを検索して前記検索されたセグメントの
セグメント管理情報から前記セグメントサイズおよび前
記物理フォーマットの種類を取得する手順と、を含め
る。物理フォーマットの種類をメモリから取得でき、物
理フォーマットの種類をRAMなどに保持する必要がな
くなる。物理フォーマットの種類を上位プログラムなど
の固定値とする必要がなくなり、システムの柔軟性が増
す。
【0035】上記目的を達成するため、請求項30に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つ複数のセ
グメントとによる階層的な構成として管理する。さら
に、前記セグメント単位で消去回数を管理するととも
に、上位プログラムからのアクセス要求を受け前記ペー
ジ単位で前記メモリ内の記憶領域を指定するメモリ制御
方法とする。さらにこのメモリ制御方法に、RAM上に
所定容量のRAM領域を確保し、前記確保されたRAM
領域を前記セグメントと前記ページによる階層的な構成
とみなし、前記上位プログラムからの論理ページ番号を
指定してのアクセス要求を受けて、前記確保されたRA
M領域に対して前記ページ単位でアクセスを行うエミュ
レート手順を含める。RAMで前記メモリをエミュレー
トし、ソフトウェア開発を容易にする。前記メモリやタ
ーゲットのハードウェアがなくてもソフトウェア開発が
可能になる。
【0036】上記目的を達成するため、請求項31に記
載の発明では、上述したメモリ制御方法において、前記
メモリの記憶領域は、前記セグメントとセグメント内の
オフセットに対応する仮想アドレスで指定される。仮想
アドレスでメモリにアクセスする構成とすることで、タ
ーゲットのハードウェアに依存しないようにし、本メモ
リ制御方法を実現したソフトウェアモジュールの移植性
を高めることができる。
【0037】上記目的を達成するため、請求項32に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、前記ページを複数含み且つ前記
メモリの消去ブロックの整数倍のサイズを持つセグメン
トとによる階層的な構成とするとともに、前記セグメン
トをデータ領域とセグメント管理情報の格納領域に分
け、前記ページをデータ領域とページ管理情報の格納領
域とに分けた構成であるとみなすことにより、論理ペー
ジ番号を指定単位として記憶装置へのアクセスを行う上
位プログラムから前記論理ページ番号を指定したアクセ
ス要求を受け取り、受け取った前記論理ページ番号をセ
グメント番号とオフセットに対応する仮想アドレスに変
換するアドレス変換手順を含む。仮想アドレスでメモリ
にアクセスする構成とすることで、ターゲットのハード
ウェアに依存しないようにし、本メモリ制御方法を実現
したソフトウェアモジュールの移植性を高めることがで
きる。
【0038】上記目的を達成するため、請求項33に記
載のメモリ制御方法は、メモリを、それぞれ所定サイズ
を持つ複数のページと、ページを複数含み且つ前記メモ
リの消去ブロックの整数倍のサイズを持つ複数のセグメ
ントとによる階層的な構成とするとともに、ページ内を
データ領域とページ管理情報の格納領域とに分け、それ
ぞれのページのページ管理情報として論理ページ番号を
持たせることにより、ページ位置の管理を行うメモリ制
御方法であって、以下の(1)〜(3)の処理を順次行
うことにより、アクセス対象の論理ページ番号に対応す
る前記メモリ内の物理ページ番号を取得する。 (1)上位プログラムから論理ページを指定してのアク
セスの要求を受けた際に、論理ページ番号と前記メモリ
内の物理ページ番号とを対応付けたRAM上の変換テー
ブルを検索し、アクセスの対象の物理ページ番号を取得
する。 (2)変換テーブル内にアクセス対象の論理ページ番号
が存在しない場合、前記メモリ内のページ管理情報を検
索し、アクセス対象の物理ページ番号を取得する。 (3)前記(2)にて、アクセス対象の論理ページが検
索された場合、当該検索の結果としての論理ページ番号
と前記メモリ内の物理ページ番号の対応関係を変換テー
ブルに登録する。このような構成により、変換テーブル
を用いたページ位置のキャシングが達成され、物理ペー
ジの検索を高速に行うことができる。変換テーブルのサ
イズは小さくても良いため、物理ページの検索は少ない
メモリ使用量で達成することができる。
【0039】
【発明の実施の形態】図1は、本発明の実施形態として
の物理記憶デバイスドライバモジュール5(以下、PD
M5と記す)の位置付けを表している。図1に示すよう
に、アプリケーションプログラム1からのファイルアク
セスは、論理ファイルシステムモジュールであるLFM
3によって論理ページ(セクタ)単位のアクセスとされ
る。つまり、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型のフラッシュメモリでは64k
B, 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)としては、例えば文字列“PA
GE”を使用することができる。ページの状態管理の領
域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に
保存しておく。そして、セグメントの消去の完了後、P
DM5は、RAMに保存しておいた消去回数を1増やして
セグメントに設定する。
【0060】Wear levelingの詳細について以下に説明
する。Wear levelingは、PDM5において次のような
処理のために用いられる。 ・新しいページを割り当てるセグメントの選択処理(書
き込み処理、GC) ・ガベージコレクション対象セグメントの選択処理
【0061】まず、新しいページを割り当てる場合のWe
ar 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 levelin
g(新規割り当て)処理において、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に示す。PDM
5が、LFM3からメディアの使用開始の要求を受ける
と、PDM5は初期化処理を行い、「通常実行中」状態
(符号301)になる。なお、本システムの場合、メデ
ィアとは、フラッシュメモリを指す。「通常実行中」状
態(符号302)では、LFM3からの要求があるごと
に、GCすべきか判定し、GC対象セグメントを検索す
る。そして、GC対象セグメントが確定すると、LFM
3からの要求があるごとにページの移動を行う(「IG
C実行中」状態(符号303))。ページ移動が完了す
ると、LFM3からの要求があるごとに消去の完了をチ
ェックする(「セグメント消去中」状態(符号30
4))。初期状態以外の全状態において、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. この時、検索結果の物理ページがPNT
C中の他のエントリの領域に含まれるなら、そのエント
リを更新する。 ステップ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になるタイプのフラッシュメモリの場合、PDM
5は、そのページのデータ反転を行う。 ステップS1402'. 1が多い場合かつ、消去後のデータが
全て0になるタイプのフラッシュメモリの場合、PDM
5は、そのページのデータ反転を行う。 ステップ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)、FA
Tの数、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(または、インクリメンタルG
C)状態、書き込み不可状態への移行を行うことによって
実現することができる。
【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 -> 新= 0
x04)かを調べる。 ステップS2453'. S2452'がyesの場合、ページの新規割
り当てや置換を行わず、同じページに上書きする。 以上の、書き込みデータの適応化によるメリットとして
次のようなものが挙げられる。 ・書き込み済みのデータを書き込まないことで、書き込
みを高速化する。 ・既存のページにデータを書き込む際、データが上書き
可能なら上書きすることで、書き込みを高速化する。
【0105】25.最終ページ割り当て位置記憶 PDM5は、上記のWear Levelingなどの新規ページ割
り当て処理で割り当てたページの先頭の仮想アドレス
(物理ページ番号に相当)をRAMに記憶しておく。そし
て、次回の新規ページ割り当て処理で、例えば、記憶し
ておいたページ位置の次の位置から検索を行うことで
(ステッフ゜S700参照)、ページ割り当ての高速化を行う。
【0106】26.最終検索ページ位置記憶 PDM5は、RAM内に、ページ検索処理で最後に見つか
ったページの先頭アドレスを格納する領域(lastFoundM
emAddr)を確保する。この領域が「無効なアドレス」の
場合、その内容が無効であることを示す。ページの検索
時、以下の手順で示す処理を行う。 手順 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)は、PDM
5に対して論理ページ番号を指定する(符号51)。P
DM5は、上述のページ検索処理などにより指定された
論理ページ番号の仮想アドレスを決定し、MTDM7に
対して仮想アドレスを指定する(符号53)。MTDM7
は、仮想アドレスを物理アドレスに変換してフラッシュ
メモリをアドレス指定する(符号55)。このように、
PDM5自体が、フラッシュメモリのアドレスを仮想的
に処理しているため、仮想アドレスと物理アドレスの変
換部分(MTDM7)を除けば、ハードウェアが変わってもP
DM5および上位モジュールを全く変更する必要がな
い。
【0111】30.メモリ待ち時間の自動判定 フラッシュメモリには、「トグルビット」と呼ばれる処
理完了を示すフラグがあるものがある。MTDM7(または
PDM5)の機能として、ある単位時間(数十〜数百ms)
に、そのトグルビットのチェックを何回できるかを測定
する機能を設ける。これにより、そのシステムの実行速
度の目安がわかる。トグルビットのチェックとは、フラ
ッシュメモリに消去または書き込み要求を出した後、フ
ラッシュメモリの同じアドレスを連続して読み出した場
合に、特定のビットの値が同じかどうかを調べることで
ある。
【0112】フラッシュメモリの消去や書き込みは、時
として失敗することがあり、その場合、上のトグルビッ
トを何度チェックしても同じ値にならない。その場合、
待ちを止めるタイムアウトを適正に決める必要が生じ
る。OSの時間管理機能によってタイムアウトを判定す
ると、オーバヘッドが大きくなる場合がある。逆に、
「何回でタイムアウト」という決め打ち方式では、高速
なシステムでは誤ってタイムアウトすることがある。そ
れを解決するため、上で測定した、トグルビットのチェ
ック速度とメモリのタイムアウト時間(メモリの仕様に
よって決まる)より、「何回チェックしたら、タイムア
ウトであるか」という値を計算し、書き込み・消去待ち
の上限時間に使用する。起動時に、そのシステムがメモ
リ状態をチェックする速度を測定しておいて、実行時の
メモリ書き込み・消去時の待ち時間の計算に用いるのが
好ましい。
【0113】31.上位モジュールのフラッシュメモリ
ドライバへの特化 LFM3のような論理ファイルシステムモジュールが、
使用しているメディアがディスクエミュレーションのフ
ラッシュメモリドライバ(PDM5)と認識した場合、フ
ァイル削除時に、そのファイルが使用していたセクタ
(論理ページ)を削除するように、ドライバ(PDM
5)に要求する構成とする。なお、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 (35)

    【特許請求の範囲】
  1. 【請求項1】 メモリを、それぞれ所定サイズを持つ複
    数のページと、前記ページを複数含み且つ前記メモリの
    消去ブロックの整数倍のサイズを持つ複数のセグメント
    とによる階層的な構成とし、前記セグメント単位で消去
    回数を管理するとともに、上位プログラムからのアクセ
    ス要求を受け前記ページ単位で前記メモリ内の記憶領域
    を指定するメモリ制御方法であって、 セグメントの消去回数に基づいて、少なくとも1つの有
    効ページを含むセグメントを消去セグメントとして選択
    し、 上記消去セグメントに含まれる前記少なくとも1つの有
    効ページの各々に対して、 (1)当該ページの内容を転送する転送先を決定し、 (2)当該ページの内容を前記転送先に転送する、 という処理を順次行い、 前記消去セグメント内の全ての有効ページの転送が終了
    した後、前記転送元セグメント内のデータを消去するこ
    と、 を特徴とするメモリ制御方法。
  2. 【請求項2】 複数のページに分割されたセグメント毎
    の消去回数を記憶する記憶手段と、 各セグメント毎の消去回数に基づいて、各セグメントの
    消去回数の差が少なくなるように、消去回数の少ない領
    域を優先的に消去するように前記メモリの消去を制御す
    る消去制御手段と、を有することを特徴とするメモリの
    消去制御装置。
  3. 【請求項3】 メモリを、それぞれ所定サイズを持つ複
    数のページと、前記ページを複数含み且つ前記メモリの
    消去ブロックの整数倍のサイズを持つ複数のセグメント
    とによる階層的な構成とし、前記セグメント単位で消去
    回数を管理するとともに、上位プログラムからのアクセ
    ス要求を受け前記ページ単位で前記メモリ内の記憶領域
    を指定するメモリ制御方法であって、 全ページが未使用でないセグメントのうちそれぞれのセ
    グメントの消去回数に基づいて転送元セグメントを決定
    する転送元決定手順と、 未使用ページがあるセグメントのうち各セグメントの消
    去回数に基づいて転送先セグメントを決定する転送先決
    定手順と、 前記転送元セグメント内の書込みデータが有効のページ
    毎に、前記転送先決定手順により転送先セグメントの決
    定をそれぞれ行い、前記決定された転送先セグメント内
    の未使用のページに前記転送元セグメント内の書込みデ
    ータが有効のページのデータを転送する転送手順と、 前記転送元セグメント内の書込みデータが有効な全ての
    ページについて前記転送手順によって転送が終了したな
    らば、前記転送元セグメント内のデータを消去する消去
    手順と、から成るセグメント転送手順を含むこと、 を特徴とするメモリ制御方法。
  4. 【請求項4】 前記転送元決定手順は、前記全ページが
    未使用でないセグメントの消去回数に加えて、前記全ペ
    ージが未使用でないセグメントにおける書き込みデータ
    が無効のページ数、および前記全ページが未使用でない
    セグメントにおける書込みデータが有効のページ数を加
    味して前記転送元セグメントを決定すること、を特徴と
    する請求項3に記載のメモリ制御方法。
  5. 【請求項5】 前記転送元決定手順は、 前記全ページが未使用でないセグメントのうち消去回数
    が少ない順に第1所定数のセグメントを選択する手順
    と、 選択された前記第1所定数のセグメントのうち、書込み
    データが無効のページ数が多い順に第2所定数のセグメ
    ントを選択する手順と、 選択された前記第2所定数のセグメントのうち、書込み
    データが有効のページ数が少ない順に第3所定数のセグ
    メントを選択する手順と、 選択された前記第3所定数のセグメントのうちの1つを
    前記転送元セグメントとして決定する手順と、を含むこ
    とを特徴とする請求項4に記載のメモリ制御方法。
  6. 【請求項6】 前記転送元決定手順は、直前に実行され
    た前記転送元決定手順によって決定された転送元セグメ
    ントを対象外とする手順をさらに含むこと、を特徴とす
    る請求項5に記載のメモリ制御方法。
  7. 【請求項7】 前記転送先決定手順は、前記未使用ペー
    ジがあるセグメントのうちそれぞれのセグメントの消去
    回数に加えて、前記未使用ページがあるセグメントにお
    ける未使用ページ数を加味して前記転送先セグメントを
    決定すること、を特徴とする請求項3から請求項6のい
    ずれかに記載のメモリ制御方法。
  8. 【請求項8】 前記転送先決定手順は、 前記空きページが存在するセグメントのうち消去回数が
    少ない順に第4所定数のセグメントを選択する手順と、 選択された前記第4所定数のセグメントのうち、未使用
    のページ数が多い順に第5所定数のセグメントを選択す
    る手順と、 選択された前記第5所定数の前記セグメントのうち1つ
    を前記転送先セグメントとして選択する手順と、を含む
    ことを特徴とする請求項7に記載のメモリ制御方法。
  9. 【請求項9】 前記転送先決定手順は、直前に実行され
    た前記転送先決定手順によって決定された転送先セグメ
    ント内に未使用のページが存在する場合には、前記直前
    に決定された転送先セグメントを転送先セグメントとし
    て決定する手順をさらに含むこと、を特徴とする請求項
    8に記載のメモリ制御方法。
  10. 【請求項10】 前記メモリ内の全ページのうち未使用
    のページのページ数が第1しきい値以下となること、ま
    たは、前記全ページのうち書込みデータが無効のページ
    のページ数が第2しきい値以上となることの少なくとも
    一方の条件が満たされる場合に、前記セグメント転送手
    順の実行を開始させる手順を含むこと、を特徴とする請
    求項3から請求項9のいずれかに記載のメモリ制御方
    法。
  11. 【請求項11】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とし、前記セグメント単位で消
    去回数を管理するとともに、上位プログラムからのアク
    セス要求を受け前記ページ単位で前記メモリ内の記憶領
    域を指定するメモリ制御方法であって、 前記上位プログラムからのアクセス要求がある毎に、 RAM上に転送元セグメント番号が記憶されているか否
    かを判定し、前記RAM上に転送元セグメント番号が記
    憶されていない場合には、前記消去回数に基づいて転送
    元セグメントを決定して前記RAM上に記憶する手順、 前記RAM上に転送元セグメント番号が記憶されている
    か否かを判定し、前記RAM上に前記転送元セグメント
    番号が記憶されている場合には、前記転送元セグメント
    内の書込みデータが有効のページのうち1以上のページ
    について各ページ毎に、データの転送先として前記消去
    回数に基づいて転送先セグメントをそれぞれ決定し、前
    記決定された転送先セグメント内の未使用のページに前
    記1以上の転送元のページのデータを転送する手順、 前記転送元セグメントの書込みデータが有効のページの
    全てについて前記転送が終了しているか判定し、前記転
    送が終了している場合には、前記転送元セグメントが転
    送の対象であることを解除する為に該転送元セグメント
    が消去中であることを前記RAM上に記憶するとともに
    前記転送元セグメントの消去を開始する手順、 前記RAMを参照して前記転送元セグメントの消去が終
    了しているか否かを判定し終了している場合には、前記
    RAM上における前記転送元セグメントが消去中である
    ことを解除する手順、の少なくともいずれか1つの手順
    を実行させるセグメント転送手順を含むこと、 を特徴とするメモリ制御方法。
  12. 【請求項12】 前記メモリ内の全ページのうち未使用
    のページのページ数が第1しきい値以下となること、ま
    たは、前記全ページのうち書込みデータが無効のページ
    のページ数が第2しきい値以上となることの少なくとも
    一方の条件が満たされる場合のみ、前記セグメント転送
    手順の実行を開始させること、を特徴とする請求項11
    に記載のメモリ制御方法。
  13. 【請求項13】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とするとともに、前記セグメン
    トをデータ領域とセグメント管理情報の格納領域に分
    け、前記ページをデータ領域とページ管理情報の格納領
    域とに分けた構成であるとみなし、論理ページ番号を指
    定単位として記憶装置へのアクセスを行う上位プログラ
    ムから前記論理ページ番号を受け取り、前記ページ単位
    で前記メモリ内の記憶領域を指定するメモリ制御方法で
    あって、 前記セグメントの消去回数を前記セグメント管理情報に
    書き込んで管理するセグメント管理手順と、 前記ページ管理情報にアクセス対象の論理ページ番号が
    含まれるか否かを検索する検索手順と、 上位プログラムから書込み要求のあった書込みデータを
    書き込むべきページとして、未使用ページがあるセグメ
    ントのうちそれぞれのセグメントの消去回数に基づいて
    セグメントを1つ選択し該選択されたセグメント内の未
    使用のページを割り当るページ割当て手順と、 前記上位プログラムから書込み要求があった際に前記検
    索手順による検索を行った結果、指定された前記論理ペ
    ージ番号が検索されなかった場合には、前記ページ割当
    て手順により書込み対象のページを割り当て、前記割り
    当てられたページのページ管理情報格納領域に前記書込
    み対象の論理ページ番号を格納するとともに、該割り当
    てられたページのデータ領域に前記書込みデータを書き
    込む新規ページ書込手順と、 前記上位プログラムから書込み要求があった際に前記検
    索手順による検索を行った結果、指定された前記論理ペ
    ージ番号が検索された場合には、前記ページ割当て手順
    により書込み対象のページを割り当て、前記割り当てら
    れたページのページ管理情報格納領域に前記検索された
    ページのページ管理情報格納領域の内容を転送するとと
    もに、該割り当てられたページのデータ領域に前記書込
    みデータを書き込み、さらに、前記検索されたページの
    ページ管理情報に該検索されたページのデータが無効で
    あることを示す情報を書き込む既存ページ書込手順と、 を含むことを特徴とするメモリ書き込み制御方法。
  14. 【請求項14】 前記ページ割当て手順は、前記未使用
    ページがあるセグメントのうちそれぞれのセグメントの
    消去回数に加えて、前記未使用ページがあるセグメント
    における未使用ページ数を加味してセグメントを1つ選
    択すること、を特徴とする請求項13に記載のメモリ書
    き込み制御方法。
  15. 【請求項15】 前記ページ割当て手順は、 前記空きページが存在すセグメントのうち消去回数が少
    ない順に第4所定数のセグメントを選択する手順と、 選択された前記第4所定数のセグメントのうち、未使用
    のページ数が多い順に第5所定数のセグメントを選択す
    る手順と、 選択された前記第5所定数の前記セグメントのうち1つ
    を選択する手順と、を含むことを特徴とする請求項14
    に記載のメモリ書き込み制御方法。
  16. 【請求項16】 前記ページ割り当て手順によって割り
    当てたページの前記メモリ内の記憶領域における先頭ア
    ドレスを記憶する手順をさらに含み、 前記検索手順は、前回の前記ページ割り当て手順によっ
    て割り当てられることにより記憶された前記先頭アドレ
    スを用いて、前記アクセス対象の論理ページ番号が前記
    メモリ内にあるか否かを検索すること、を特徴とする請
    求項13から請求項15のいずれかに記載のメモリ書き
    込み制御方法。
  17. 【請求項17】 前記ページ割当て手順は、直前に実行
    された前記ページ割当て手順によって割り当てられたセ
    グメント内に未使用のページが存在する場合には、その
    ページを前記割り当て対象のページとする手順をさらに
    含むこと、を特徴とする請求項16に記載のメモリ書き
    込み制御方法。
  18. 【請求項18】 前記新規ページ書込手順は、 前記書込みデータについて0が多いか1が多いかを調
    べ、0が多い場合でかつ前記メモリが消去後のデータが
    1になるタイプである場合、または、1が多い場合でか
    つ前記メモリが消去後のデータが0になるタイプである
    場合、前記書込みデータを反転して前記割り当てられた
    ページに書き込むとともに、データ反転を行ったかどう
    かの情報を前記割り当てられたページのページ管理情報
    に書き込む手順を含むこと、を特徴とする請求項13か
    ら請求項17のいずれかに記載のメモリ書き込み制御方
    法。
  19. 【請求項19】 前記新規ページ書込手順は、 前記書込みデータが全て前記メモリの消去直後のデータ
    と一致する場合、前記ページ割当て手順により書込み対
    象のページを割り当て、前記割り当てられたページのペ
    ージ管理情報の格納領域に前記書込み対象の論理ページ
    番号を格納するが、該割り当てられたページのデータ領
    域には前記書込みデータを書き込まないこととする手順
    をさらに含むこと、を特徴とする請求項13から請求項
    18のいずれかに記載のメモリ書き込み制御方法。
  20. 【請求項20】 前記既存ページ書込手順は、 指定された前記論理ページ番号が検索された場合に、検
    索されたページのデータ領域のデータを読み込み、読み
    込まれた前記検索されたページのデータが前記書込みデ
    ータと同じである場合には、前記既存ページ書込み手順
    を終了させる手順をさらに含むこと、を特徴とする請求
    項13から請求項19のいずれかに記載のメモリ書き込
    み制御方法。
  21. 【請求項21】 前記既存ページ書込手順は、 指定された前記論理ページ番号が検索された場合に、検
    索されたページのデータ領域のデータを読み込み、前記
    書込みデータが、読み込まれた前記検索されたページの
    データに対して上書き可能なタイプのデータである場
    合、前記ページ割当て手順によるページの割り当てを行
    わず、前記書込みデータを前記検索されたページに上書
    きする手順をさらに含むこと、を特徴とする請求項13
    から請求項20のいずれかに記載のメモリ書き込み制御
    方法。
  22. 【請求項22】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とするとともに、前記セグメン
    トをデータ領域とセグメント管理情報の格納領域に分
    け、前記ページをデータ領域とページ管理情報の格納領
    域とに分けた構成であるとみなし、論理ページ番号を指
    定単位として記憶装置へのアクセスを行う上位プログラ
    ムから前記論理ページ番号を受け取り、前記ページ単位
    で前記メモリ内の記憶領域を指定するメモリ制御方法で
    あって、 前記上位プログラムから論理ページ番号を指定しての書
    込み要求があった場合に、書込み対象のページとして前
    記メモリ内の未使用のページを割り当て、前記割り当て
    られたページのデータ領域に書込みデータを書き込むと
    ともに、前記割り当てられたページのページ管理情報の
    格納領域には、前記書込み要求の対象の論理ページ番号
    を格納する書込み手順と、 全ての論理ページ番号について、それぞれの論理ページ
    番号に対応するページが前記メモリ内に存在するか否か
    の情報を対応付けた対応関係をRAM上に作成するページ
    割当マップ作成手順と、 前記上位プログラムから前記論理ページ番号を指定して
    のアクセス要求があった場合に、前記ページ割当マップ
    作成手順によって作成された対応関係を用いて、前記ア
    クセス要求の論理ページが前記メモリ内に存在するか否
    かを判定するページ検索手順と、 を含むことを特徴とするメモリ制御方法。
  23. 【請求項23】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とするとともに、前記セグメン
    トをデータ領域とセグメント管理情報の格納領域に分
    け、前記ページをデータ領域とページ管理情報の格納領
    域とに分けた構成であるとみなし、論理ページ番号を指
    定単位として記憶装置へのアクセスを行う上位プログラ
    ムから前記論理ページ番号を受け取り、前記ページ単位
    で前記メモリ内の記憶領域を指定するメモリ制御方法で
    あって、 前記上位プログラムから論理ページ番号を指定しての書
    込み要求があった場合に、書込み対象のページとして前
    記メモリ内の未使用のページを割り当て、前記割り当て
    られたページのデータ領域に書込みデータを書き込むと
    ともに、前記割り当てられたページのページ管理情報の
    格納領域には、前記書込み要求の対象の論理ページ番号
    を格納する書込み手順と、 前記上位プログラムから論理ページ番号を指定しての読
    出し要求があった場合に、最後に読み出されたページの
    前記メモリの記憶領域における先頭アドレスがRAMに格
    納されているか否かを判定し、前記判定結果として前記
    先頭アドレスがRAM上に格納されていない場合には、前
    記メモリ内のページのページ管理情報を検索して前記読
    出し要求の論理ページ番号があるか否かを判定するとと
    もに、前記読出し要求のページが検索できた場合に該検
    索されたページの前記メモリの記憶領域における先頭ア
    ドレスをRAMに記憶し、前記判定結果として前記先頭ア
    ドレスがRAMに格納されている場合には、前記RAM上の先
    頭アドレスに基づいて前記読出し要求の論理ページ番号
    があるか否かの検索を行うページ検索手順と、 を含むことを特徴とするメモリ制御方法。
  24. 【請求項24】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とするとともに、前記セグメン
    トをデータ領域とセグメント管理情報の格納領域に分
    け、前記ページをデータ領域とページ管理情報の格納領
    域とに分けた構成であるとみなし、論理ページ番号を指
    定単位として記憶装置へのアクセスを行う上位プログラ
    ムから前記論理ページ番号を受け取り、前記ページ単位
    で前記メモリ内の記憶領域を指定するメモリ制御方法で
    あって、 前記上位プログラムから論理ページ番号を指定しての書
    込み要求があった場合に、書込み対象のページとして前
    記メモリ内の未使用のページを割り当て、前記割り当て
    られたページのデータ領域に書込みデータを書き込むと
    ともに、前記割り当てられたページのページ管理情報の
    格納領域には、前記書込み要求の対象の論理ページ番号
    を格納する書込み手順と、 前記上位プログラムから論理ページ番号を指定してペー
    ジ削除要求があった場合に、指定された前記論理ページ
    番号に対応するページのページ管理情報に削除されたこ
    とを示す情報を書き込むページ削除手順と、 を含むことを特徴とするメモリ制御方法。
  25. 【請求項25】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とするとともに、前記セグメン
    トをデータ領域とセグメント管理情報の格納領域に分
    け、前記ページをデータ領域とページ管理情報の格納領
    域とに分けた構成であるとみなし、論理ページ番号を指
    定単位として記憶装置へのアクセスを行う上位プログラ
    ムから前記論理ページ番号を受け取り、前記ページ単位
    で前記メモリ内の記憶領域を指定するメモリ制御方法で
    あって、 上位プログラムからのアクセス要求で指定された論理ペ
    ージ番号が前記メモリ内の各ページのページ管理情報に
    含まれるか否かを検索する検索手順と、 前記上位プログラムから論理ページ番号を指定してペー
    ジ書込み要求があった際に前記検索手順による検索を行
    い、指定された前記論理ページ番号が検索されなかった
    場合に、前記メモリ内の未使用のページを選択し、前記
    選択されたページのページ管理情報のページ状態を予約
    とし及び前記ページ管理情報に前記指定された論理ペー
    ジ番号を書き込む第1手順と、前記選択されたページの
    データ領域に書込みデータを書き込む第2手順と、前記
    選択されたページのページ管理情報のページ状態を有効
    とする第3手順とから成る新規ページ書込手順と、 前記上位プログラムから論理ページ番号を指定してペー
    ジ書込み要求があった際に前記検索手順による検索を行
    い、指定された前記論理ページ番号が検索された場合
    に、前記メモリ内の未使用のページを選択し前記選択さ
    れたページのページ管理情報のページ状態を予約とし及
    び前記ページ管理情報に前記指定された論理ページ番号
    を書き込む第4手順と、前記選択されたページのデータ
    領域に書込みデータを書き込む第5手順と、前記検索さ
    れたページのページ管理情報の更新中フラグを有効にす
    る第6手順と、前記選択されたページのページ管理情報
    のページ状態を有効にする第7手順と、前記検索された
    ページのページ管理情報のページ状態を削除にする第8
    手順とから成る既存ページ書込手順と、 全ページ中でページ状態が有効であり且つ更新中フラグ
    が有効である条件を満たす削除中ページを検索する第9
    手順と、前記削除中ページと同一の論理ページ番号を持
    ち且つ更新中フラグが無効である条件を満たす上書きペ
    ージを検索する第10手順と、前記第10手順により前
    記上書きページがあった場合、前記削除中ページのペー
    ジ管理情報のページ状態を削除にする第11手順とから
    成る書込回復手順と、 を含むことを特徴とするメモリ制御方法。
  26. 【請求項26】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とするとともに、前記セグメン
    トをデータ領域とセグメント管理情報の格納領域に分
    け、前記ページをデータ領域とページ管理情報の格納領
    域とに分けた構成であるとみなし、論理ページ番号を指
    定単位として記憶装置へのアクセスを行う上位プログラ
    ムから前記論理ページ番号を受け取り、前記ページ単位
    で前記メモリ内の記憶領域を指定するメモリ制御方法で
    あって、 前記上位プログラムから論理ページ番号を指定してペー
    ジ削除要求があった場合に、指定された前記論理ページ
    番号に対応するページのページ管理情報のページ状態を
    削除にするページ削除手順と、 前記セグメントの消去回数を前記セグメント管理情報に
    書き込んで管理するセグメント管理手順と、 上位プログラムより指定セグメントサイズおよび指定ペ
    ージサイズを伴う物理フォーマット要求を受け取った場
    合に、前記メモリ内の前記指定セグメントサイズで規定
    される全てのセグメントについて、各セグメント内の全
    消去ブロックを消去する手順と、各セグメントのセグメ
    ント管理情報に初期状態に対応する情報を書き込む手順
    とを含む物理フォーマット手順と、 前記指定セグメントサイズで規定される全セグメントに
    ついて、有効なデータが存在しないセグメント又はセグ
    メント管理情報の内容が不正であるセグメントを検索す
    る手順と、前記検索により見つかったセグメント内のデ
    ータが全て消去されているかを判定する手順と、前記判
    定により消去されていないデータがあるセグメントにつ
    いて、データを消去するとともにセグメント管理情報に
    初期状態に対応する情報を書き込む手順と、から成る物
    理フォーマット回復手順と、 を含むことを特徴とするメモリ制御方法。
  27. 【請求項27】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とし、前記セグメント単位で消
    去回数を管理するとともに、上位プログラムからのアク
    セス要求を受け前記ページ単位で前記メモリ内の記憶領
    域を指定するメモリ制御方法であって、 前記メモリに書込みまたは消去命令を出してから完了す
    るまでの時間を測定することによって前記メモリの書込
    みまたは消去に必要な待ち時間を、システムの処理速度
    に応じた単位で測定する測定手順と、 前記測定手順によって測定された待ち時間に基づいて、
    前記メモリに対して書込みまたは消去命令を出した後の
    タイムアウトの判定を行う手順と、 を含むことを特徴とするメモリ制御方法。
  28. 【請求項28】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とし、前記セグメント単位で消
    去回数を管理するとともに、上位プログラムからのアク
    セス要求を受け前記ページ単位で前記メモリ内の記憶領
    域を指定するメモリ制御方法であって、 上位プログラムより指定セグメントサイズおよび指定ペ
    ージサイズを伴う物理フォーマット要求を受け取った場
    合に、前記メモリ内の前記指定セグメントサイズで規定
    される全てのセグメントについて、各セグメント内の全
    消去ブロックを消去する手順と、各セグメントのセグメ
    ント管理情報に初期状態に対応する情報を書き込む手順
    と、から成る物理フォーマット手順と、 前記メモリ内の少なくとも1つのページについて、ペー
    ジ管理情報にページサイズを含む、ページが有効である
    ことを示す情報を書き込む手順と、 前記メモリ内の有効なページを検索して前記検索された
    ページのページ管理情報からページサイズを取得する手
    順と、 を含むことを特徴とするメモリ制御方法。
  29. 【請求項29】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とし、前記セグメント単位で消
    去回数を管理するとともに、上位プログラムからのアク
    セス要求を受け前記ページ単位で前記メモリ内の記憶領
    域を指定するメモリ制御方法であって、 上位プログラムより指定セグメントサイズおよび指定ペ
    ージサイズを伴う物理フォーマット要求を受け取った場
    合に、前記メモリ内の前記指定セグメントサイズで規定
    される全てのセグメントについて、各セグメント内の全
    消去ブロックを消去する手順と、各セグメントのセグメ
    ント管理情報に初期状態に対応する情報を書き込む手順
    とから成る物理フォーマット手順と、 前記メモリ内の少なくとも1つのセグメントのセグメン
    ト管理情報に、物理フォーマットの種類およびセグメン
    トサイズを含む、セグメントが有効である情報を書き込
    む手順と、 前記メモリ内の有効なセグメントを検索して前記検索さ
    れたセグメントのセグメント管理情報から前記セグメン
    トサイズおよび前記物理フォーマットの種類を取得する
    手順と、 を含むことを特徴とするメモリ制御方法。
  30. 【請求項30】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とし、前記セグメント単位で消
    去回数を管理するとともに、上位プログラムからのアク
    セス要求を受け前記ページ単位で前記メモリ内の記憶領
    域を指定するメモリ制御方法であって、 RAM上に所定容量のRAM領域を確保し、前記確保さ
    れたRAM領域を前記セグメントと前記ページによる階
    層的な構成とみなし、前記上位プログラムからの論理ペ
    ージ番号を指定してのアクセス要求を受けて、前記確保
    されたRAM領域に対して前記ページ単位でアクセスを
    行うエミュレート手順を含むこと、を特徴とするメモリ
    制御方法。
  31. 【請求項31】 前記請求項1、または、請求項3から
    請求項30のいずれかに記載のメモリ制御方法におい
    て、前記メモリの記憶領域は、前記セグメントとセグメ
    ント内のオフセットに対応する仮想アドレスで指定され
    ること、を特徴とするメモリ制御方法。
  32. 【請求項32】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つセグメントとに
    よる階層的な構成とするとともに、前記セグメントをデ
    ータ領域とセグメント管理情報の格納領域に分け、前記
    ページをデータ領域とページ管理情報の格納領域とに分
    けた構成であるとみなすことにより、論理ページ番号を
    指定単位として記憶装置へのアクセスを行う上位プログ
    ラムから前記論理ページ番号を指定したアクセス要求を
    受け取り、受け取った前記論理ページ番号をセグメント
    番号とオフセットに対応する仮想アドレスに変換するア
    ドレス変換手順を含むこと、を特徴とするメモリ制御方
    法。
  33. 【請求項33】 メモリを、それぞれ所定サイズを持つ
    複数のページと、前記ページを複数含み且つ前記メモリ
    の消去ブロックの整数倍のサイズを持つ複数のセグメン
    トとによる階層的な構成とするとともに、前記ページ内
    をデータ領域とページ管理情報の格納領域とに分け、そ
    れぞれのページのページ管理情報として論理ページ番号
    を持たせることにより、ページ位置の管理を行うメモリ
    制御方法であって、(1)前記上位プログラムから論理
    ページを指定してのアクセスの要求を受けた際に、論理
    ページ番号と前記メモリ内の物理ページ番号とを対応付
    けたRAM上の変換テーブルを検索し、前記アクセスの
    対象の物理ページ番号を取得する、(2)前記変換テー
    ブル内に前記アクセス対象の論理ページ番号が存在しな
    い場合、前記メモリ内のページ管理情報を検索し、前記
    アクセス対象の物理ページ番号を取得する、(3)前記
    (2)にて、前記アクセス対象の論理ページが検索され
    た場合、当該検索の結果としての論理ページ番号と前記
    メモリ内の物理ページ番号の対応関係を前記変換テーブ
    ルに登録する、という処理を順次行うことにより、前記
    アクセス対象の論理ページ番号に対応する前記メモリ内
    の物理ページ番号を取得すること、を特徴とするメモリ
    制御方法。
  34. 【請求項34】 前記請求項1、または、請求項3から
    請求項33のいずれかに記載のメモリ制御方法をコンピ
    ュータで実行するためのソフトウェア。
  35. 【請求項35】 前記請求項1、または、請求項3から
    請求項33のいずれかに記載のメモリ制御方法によりメ
    モリの読み書きを制御するメモリ制御装置。
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 true JP2003228513A (ja) 2003-08-15
JP4280055B2 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 (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005276212A (ja) * 2004-03-22 2005-10-06 Microsoft Corp 比較的限られた記憶スペースを備えたコンピューティング装置およびそのオペレーティングシステム/ファイルシステム
WO2006011366A1 (ja) * 2004-07-26 2006-02-02 Canon Kabushiki Kaisha ジョブ処理方法、データ処理システム、データ処理装置、コンピュータプログラム及び記憶媒体
JP2006338370A (ja) * 2005-06-02 2006-12-14 Toshiba Corp メモリシステム
JP2007066129A (ja) * 2005-09-01 2007-03-15 Hitachi Ltd ストレージシステムとストレージ装置及びその制御方法
JP2007519996A (ja) * 2003-12-30 2007-07-19 サンディスク コーポレイション 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法
JP2009503745A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション ブロック管理を伴う不揮発性メモリ
CN100484186C (zh) * 2004-07-26 2009-04-29 佳能株式会社 作业处理方法
JP2009524867A (ja) * 2006-01-24 2009-07-02 ノキア コーポレイション メモリインターフェイスを利用してメモリモジュールのパーティショニングを制御する方法
WO2009110302A1 (en) * 2008-03-01 2009-09-11 Kabushiki Kaisha Toshiba Memory system
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP2010528380A (ja) * 2007-05-30 2010-08-19 メモライト メモリテック (シェンチェン) カンパニー リミテッド フラッシュメモリのリード・ライト処理方法
JP2010231416A (ja) * 2009-03-26 2010-10-14 Denso Corp フラッシュメモリのデータ処理方法及び記憶装置
JP2011159069A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 半導体記憶装置及びその制御方法
JP2013515979A (ja) * 2010-04-12 2013-05-09 株式会社日立製作所 ストレージ装置
US8812767B2 (en) 2011-03-08 2014-08-19 Fujitsu Semiconductor Limited Method of controlling memory, memory control circuit, storage device and electronic device
US8856488B2 (en) 2010-02-11 2014-10-07 Memory Technologies Llc Method for utilizing a memory interface to control partitioning of a memory module
JP2014527231A (ja) * 2011-08-10 2014-10-09 アリババ・グループ・ホールディング・リミテッド 仮想ハードディスクイメージを圧縮する方法
CN110928807A (zh) * 2018-09-20 2020-03-27 爱思开海力士有限公司 用于检查存储器系统中的有效数据的设备和方法
JP2020095388A (ja) * 2018-12-11 2020-06-18 キヤノン株式会社 情報処理装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113495850B (zh) 2020-04-08 2024-02-09 慧荣科技股份有限公司 管理垃圾回收程序的方法、装置及计算机可读取存储介质
TWI740446B (zh) * 2020-04-08 2021-09-21 慧榮科技股份有限公司 管理垃圾回收程序的電腦程式產品及方法及裝置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06223591A (ja) * 1992-10-30 1994-08-12 Intel Corp フラッシュeepromアレイのクリーン・アップ方法
JPH0772989A (ja) * 1992-10-30 1995-03-17 Intel Corp 浮動セクタデータを記憶する固体メモリディスクをクリーンアップする方法
JPH07334991A (ja) * 1994-06-07 1995-12-22 Sony Corp 半導体不揮発性記憶装置
JPH0997206A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JPH0997218A (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 フラッシュメモリ書換え制御方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06223591A (ja) * 1992-10-30 1994-08-12 Intel Corp フラッシュeepromアレイのクリーン・アップ方法
JPH0772989A (ja) * 1992-10-30 1995-03-17 Intel Corp 浮動セクタデータを記憶する固体メモリディスクをクリーンアップする方法
JPH07334991A (ja) * 1994-06-07 1995-12-22 Sony Corp 半導体不揮発性記憶装置
JPH0997206A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JPH0997218A (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 (38)

* 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
JP2005276212A (ja) * 2004-03-22 2005-10-06 Microsoft Corp 比較的限られた記憶スペースを備えたコンピューティング装置およびそのオペレーティングシステム/ファイルシステム
US9270860B2 (en) 2004-07-26 2016-02-23 Canon Kabushiki Kaisha Data processing method, image forming apparatus and computer-readable storage medium for storing data in a plurality of boxes assigned as storage areas
WO2006011366A1 (ja) * 2004-07-26 2006-02-02 Canon Kabushiki Kaisha ジョブ処理方法、データ処理システム、データ処理装置、コンピュータプログラム及び記憶媒体
CN100484186C (zh) * 2004-07-26 2009-04-29 佳能株式会社 作业处理方法
JP2006338370A (ja) * 2005-06-02 2006-12-14 Toshiba Corp メモリシステム
JP2009503745A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション ブロック管理を伴う不揮発性メモリ
JP2007066129A (ja) * 2005-09-01 2007-03-15 Hitachi Ltd ストレージシステムとストレージ装置及びその制御方法
US9251063B2 (en) 2005-09-01 2016-02-02 Hitachi, Ltd. Storage system including a plurality of flash memory devices
US9495105B2 (en) 2005-09-01 2016-11-15 Hitachi, Ltd. System managing a plurality of flash memory devices
US8631199B2 (en) 2005-09-01 2014-01-14 Hitachi, Ltd. Storage system, storage device, and control method thereof
US8332582B2 (en) 2005-09-01 2012-12-11 Hitachi, Ltd. Storage system, storage device, and control method thereof
JP2015057726A (ja) * 2006-01-24 2015-03-26 メモリー テクノロジーズ リミティド ライアビリティ カンパニー メモリインターフェイスを利用してメモリモジュールのパーティショニングを制御する方法
JP2009524867A (ja) * 2006-01-24 2009-07-02 ノキア コーポレイション メモリインターフェイスを利用してメモリモジュールのパーティショニングを制御する方法
TWI467371B (zh) * 2006-01-24 2015-01-01 Memory Technologies Llc 記憶體模組及其利用方法、電腦程式與電腦可讀式媒體
JP2014078278A (ja) * 2006-01-24 2014-05-01 Memory Technologies Llc メモリインターフェイスを利用してメモリモジュールのパーティショニングを制御する方法
US8352701B2 (en) 2006-01-24 2013-01-08 Nokia Corporation Method for utilizing a memory interface to control partitioning of a memory module
JP2010528380A (ja) * 2007-05-30 2010-08-19 メモライト メモリテック (シェンチェン) カンパニー リミテッド フラッシュメモリのリード・ライト処理方法
US8447914B2 (en) 2008-03-01 2013-05-21 Kabushiki Kaisha Toshiba Memory system managing the number of times of erasing
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
WO2009110302A1 (en) * 2008-03-01 2009-09-11 Kabushiki Kaisha Toshiba Memory system
JP2009211225A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP2010231416A (ja) * 2009-03-26 2010-10-14 Denso Corp フラッシュメモリのデータ処理方法及び記憶装置
US8140741B2 (en) 2010-01-29 2012-03-20 Kabushiki Kaisha Toshiba Semiconductor storage device and control method thereof
JP2011159069A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 半導体記憶装置及びその制御方法
US8275935B2 (en) 2010-01-29 2012-09-25 Kabushiki Kaisha Toshiba Semiconductor storage device and control method thereof
US8856488B2 (en) 2010-02-11 2014-10-07 Memory Technologies Llc Method for utilizing a memory interface to control partitioning of a memory module
JP2013515979A (ja) * 2010-04-12 2013-05-09 株式会社日立製作所 ストレージ装置
US8812767B2 (en) 2011-03-08 2014-08-19 Fujitsu Semiconductor Limited Method of controlling memory, memory control circuit, storage device and electronic device
JP2014527231A (ja) * 2011-08-10 2014-10-09 アリババ・グループ・ホールディング・リミテッド 仮想ハードディスクイメージを圧縮する方法
US9501225B2 (en) 2011-08-10 2016-11-22 Alibaba Group Holding Limited Shrinking virtual hard disk image
JP2017091583A (ja) * 2011-08-10 2017-05-25 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 仮想ハードディスクイメージを圧縮する方法
US10331349B2 (en) 2011-08-10 2019-06-25 Alibaba Group Holding Limited Shrinking virtual hard disk image
CN110928807A (zh) * 2018-09-20 2020-03-27 爱思开海力士有限公司 用于检查存储器系统中的有效数据的设备和方法
CN110928807B (zh) * 2018-09-20 2023-04-07 爱思开海力士有限公司 用于检查存储器系统中的有效数据的设备和方法
JP2020095388A (ja) * 2018-12-11 2020-06-18 キヤノン株式会社 情報処理装置
JP7305340B2 (ja) 2018-12-11 2023-07-10 キヤノン株式会社 情報処理装置

Also Published As

Publication number Publication date
JP4280055B2 (ja) 2009-06-17

Similar Documents

Publication Publication Date Title
US11636032B2 (en) Memory system, data storage device, user device and data management method thereof
JP4280055B2 (ja) メモリ制御方法および装置
US10126959B2 (en) Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US7694087B2 (en) Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device
US8312250B2 (en) Dynamic storage of cache data for solid state disks
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
KR100877448B1 (ko) 비휘발성 기억 시스템
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
KR101638061B1 (ko) 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
TWI420305B (zh) 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法
WO2006098212A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
KR20090046567A (ko) 반도체 디스크 및 그것의 동작 방법
KR100317691B1 (ko) 로그 구조화 목표 저장장치를 사전에 구성하여 볼륨을 효율적으로 복사하는 방법 및 장치
KR20110119408A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20140059273A1 (en) Host apparatus and memory device
JP6734768B2 (ja) 二重書込みを遂行するストレージ装置を含むシステム、装置、及びその方法
EP4372540A1 (en) Techniques for zoned namespace (zns) storage using multiple zones
CN112306898A (zh) 存储设备、其操作方法及包括其的电子设备
JP4242245B2 (ja) フラッシュrom制御装置
JP2005115562A (ja) フラッシュrom制御装置
JP2006099797A (ja) メモリ制御方法および装置

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