説明

メモリの不揮発エリアの管理方法

【課題】メモリの不揮発エリアにデータを書き込む際における未使用領域の検索回数を削減し、検索時間を短縮することができるメモリの不揮発エリアの管理方法を得る。
【解決手段】メモリの不揮発エリアの管理方法であって、データ種別毎に、メモリの不揮発エリアが複数の格納領域に分割され、各データ種別の格納領域について、格納領域に格納されるデータ一件分の領域毎に、当該領域の状態を示す管理情報が設定され、起動時に、管理情報を読み取り、データ一件分の領域の状態を判定し、最新データの書き込み位置を決定するステップと、最新データの書き込み位置をRAMに保存するステップと、を備えたものである。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、例えばフラッシュメモリを不揮発エリアとして用いた場合におけるメモリの不揮発エリアの管理方法に関する。
【背景技術】
【0002】
近年、小型の携帯情報端末等において、メモリデータを保持するための電源を必要としないフラッシュ型EEPROM(Electrically Erasable and Programmable Read Only Memory)(以下、「FROM」と称する)を用いて、データを記録することが一般的になっている。
【0003】
しかしながら、FROMは、読み出しや書き込みを自由に行うことができるRAM(Random Access Memory)とは異なり、データのビット値1からビット値0への書き込みは可能であるが、ビット値0からビット値1への書き込みは不可能である。
【0004】
そのため、ビット値1とビット値0とが不特定に出現するデータをFROMに書き込む場合には、部分的に上書きすることができないので、FROMのデータを一端消去した後でなければ、新たなデータを書き込むことができない。したがって、FROMのデータを一度RAM等に退避させ、FROMを消去した上で、データをFROMに書き込む必要がある。
【0005】
従来の携帯電話機のメモリの不揮発エリア管理方法は、不揮発エリアに複数のブロックを設定する第1ステップと、各ブロックにブロック管理領域、複数のページを有するデータ領域、およびページ管理領域を設定する第2ステップと、使用ブロックのページ管理情報から未使用ページを検索してデータを書き込む第3ステップと、完全使用ブロックのデータを消去する第4ステップとを含んでいる(例えば、特許文献1参照)。
【0006】
具体的には、第1ステップでは、不揮発エリアに、相互に独立に消去することができる複数のブロックを設定する。続いて、第2ステップでは、各ブロックについて、ブロック管理情報が書き込まれたブロック管理領域と、複数のページを有し、ページ単位でデータが書き込まれるデータ領域と、データ領域の各ページについて、ページ管理情報が書き込まれたページ管理領域とを設定する。
【0007】
次に、第3ステップでは、複数のブロックをブロック毎の輪番で順次使用し、所定の検索アルゴリズムに従って、ページ管理情報から未使用ページを検索して、検索されたページにデータを書き込む。続いて、第4ステップでは、未使用ページが検索されなかった場合、すなわち当該ブロックが完全使用ブロックであった場合に、当該ブロックの有効データを次の輪番の未使用ブロックにコピーして、当該ブロックのデータを消去する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2003−203007号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、従来技術には、以下のような課題がある。
特許文献1に示された携帯電話機のメモリの不揮発エリア管理方法では、データを書き込む際、2分検索アルゴリズムに従って、ページ管理情報に基づいて、未使用ページを検索している。そのため、検索回数が多くなるとともに、検索時間が長くなるという問題がある。
【0010】
この発明は、上記のような課題を解決するためになされたものであり、メモリの不揮発エリアにデータを書き込む際における未使用領域の検索回数を削減し、検索時間を短縮することができるメモリの不揮発エリアの管理方法を得ることを目的とする。
【課題を解決するための手段】
【0011】
この発明に係るメモリの不揮発エリアの管理方法は、メモリの不揮発エリアの管理方法であって、データ種別毎に、メモリの不揮発エリアが複数の格納領域に分割され、各データ種別の格納領域について、格納領域に格納されるデータ一件分の領域毎に、当該領域の状態を示す管理情報が設定され、起動時に、管理情報を読み取り、データ一件分の領域の状態を判定し、最新データの書き込み位置を決定するステップと、最新データの書き込み位置をRAMに保存するステップと、を備えたものである。
【発明の効果】
【0012】
この発明に係るメモリの不揮発エリアの管理方法によれば、データ種別毎に複数の格納領域に分割されたメモリの不揮発エリアの各格納領域について、格納されるデータ一件分の領域毎に、当該領域の状態を示すべく設定された管理情報を起動時に読み取り、データ一件分の領域の状態を判定し、最新データの書き込み位置を決定して、決定した最新データの書き込み位置をRAMに保存する。
そのため、メモリの不揮発エリアにデータを書き込む際における未使用領域の検索回数を削減し、検索時間を短縮することができる。
【図面の簡単な説明】
【0013】
【図1】この発明の実施の形態1に係るメモリの不揮発エリアの構成を示す説明図である。
【図2】図1に示した複数のセクタのうちの1つの構成を示す説明図である。
【図3】この発明の実施の形態1に係るメモリの不揮発エリアの管理方法を説明するフローチャートである。
【発明を実施するための形態】
【0014】
以下、この発明に係るメモリの不揮発エリアの管理方法の好適な実施の形態につき図面を用いて説明するが、各図において同一、または相当する部分については、同一符号を付して説明する。なお、以下の実施の形態では、小型の携帯情報端末の不揮発エリアとしてFROMのメモリ空間の所定領域を用い、携帯情報端末の動作状態ログや設定情報等のデータを格納する場合について説明する。
【0015】
実施の形態1.
図1は、この発明の実施の形態1に係るメモリの不揮発エリアの構成を示す説明図である。図1において、不揮発エリアは、それぞれ独立してデータを消去することができる複数(8つ)のセクタに分割されている。ここでは、データ種別に応じて、4種類のデータが、それぞれ2つのセクタを使用して、一情報占有領域1を構成している。
【0016】
FROMの不揮発エリアの仕様上、物理的なデータの消去については、セクタ単位でしか行うことができない。また、1セクタのデータ消去には、多くの時間(例えば、最大2s程度)を要する。ここで、FROMの不揮発エリアは、書き込み回数の上限が決まっている。そこで、図2に示すデータ格納フォーマット2の通り、セクタ内に管理情報と実データとを保存する。
【0017】
図2は、図1に示した複数のセクタのうちの1つの構成を示す説明図である。図2において、1つ目の領域(データ一件分の領域)の先頭の1Byte目には、当該領域の状態を示す管理情報が設定されている。また、1つ目の領域の先頭の2Byte目には、データの書き込みが成功したか否かを示すデータ書き込み失敗フラグが設定されている。
【0018】
具体的には、管理情報として、当該領域に空きが有るか否かを示す領域空き有りフラグ(7bit目)、当該領域が使用されているか否かを示す領域未使用フラグ(4bit目)、および当該領域のデータが消去されているか否かを示すデータ未消去フラグ(0bit目)が設定されている。
【0019】
このようなメモリの不揮発エリアに対して、起動時(電源ON時)に、管理情報を読み取り、データ一件分の領域の状態を判定し、最新データの書き込み位置を決定するとともに、最新データの書き込み位置をRAMに保存する。データの読み出し時は、この書き込み位置のデータを読み出し、データの書き込み時は、この書き込み位置をベースに書き込みデータ数分アドレスを加算する。
【0020】
これにより、データの読み出し時および書き込み時に、毎回所定の検索アルゴリズムを用いずとも、最新データの書き込み位置を用いることで、未使用領域の検索回数を削減し、読み出しおよび書き込み処理の高速化を図り、検索時間を短縮することができる。
【0021】
以下、起動時に最新データの書き込み位置を決定する処理について、図3のフローチャートを用いて説明する。
まず、データ毎に1つ目のセクタの先頭2Byteが読み込まれる(ステップS1)。
続いて、領域空き有りフラグ(7bit目)が1(空き有り)であるか否かが判定される(ステップS2)。
【0022】
ステップS2において、領域空き有りフラグが1である(すなわち、Yes)と判定された場合には、セクタは使用中である(データがいっぱいでない)ので、最新データの格納セクタが決定される。
【0023】
一方、領域空き有りフラグが0である(すなわち、No)と判定された場合には、セクタにこれ以上データを書き込むことができない(データがいっぱいである)ので、読み込みセクタ先頭アドレスが変更され、2つ目のセクタに決定される(ステップS3)。
【0024】
読み込みセクタが決定された後、決定セクタ内のデータ分、所定の検索アルゴリズムが実行される。ここで、データ分は、セクタサイズをデータサイズで除算した値として表される。また、この実施の形態1において、所定の検索アルゴリズムは、2分木探索法が用いられる。
【0025】
次に、領域未使用フラグ(4bit目)が0(領域使用)であるか否かが判定される(ステップS4)。
ステップS4において、領域未使用フラグが0である(すなわち、Yes)と判定された場合には、領域使用中と判断されて、データ未消去フラグ(0bit目)が1(領域のデータ未消去)であるか否かが判定される(ステップS5)。
【0026】
ステップS5において、データ未消去フラグが1である(すなわち、Yes)と判定された場合には、当該領域のデータは書き込み済みで、かつデータが有効(削除済みでない)と判断されて、データ書き込み失敗フラグが0であるか否かが判定される(ステップS6)。
【0027】
ステップS6において、データ書き込み失敗フラグが0である(すなわち、Yes)と判定された場合には、データ書き込み時の失敗は発生しておらず、データが有効であると判断されて、最新データの書き込み位置がこの地点に設定される(ステップS7)。
【0028】
続いて、読み込みセクタのデータ数が最大データ数以内であるか否かが判定される(ステップS8)。
ステップS8において、最大データ数以内である(すなわち、Yes)と判定された場合には、ステップS4に移行して、次のデータについて、最新データの書き込み位置が設定される。
【0029】
一方、ステップS8において、最大データ数をオーバーしている(すなわち、No)と判定された場合には、図3の処理が終了される。
すなわち、決定セクタ内のデータ分について、ステップS4からステップS7までの処理が繰り返されることにより、最新データの書き込み位置が決定される。また、現在検索中の情報について、最新データの書き込み位置が決定された場合、次の情報についても同様のことが繰り返される。
【0030】
また、ステップS4において、領域未使用フラグが1である(すなわち、No)と判定された場合、ステップS5において、データ未消去フラグが0である(すなわち、No)と判定された場合、およびステップS6において、データ書き込み失敗フラグが1である(すなわち、No)と判定された場合には、ステップS8に移行して、次のデータについて最新データの書き込み位置が設定される。
【0031】
なお、読み込みセクタが2つ目のセクタに決定された場合、最新データの書き込み位置がセクタサイズの2/3を超えた時点でガベージコレクションを実行し、管理情報に設定された有効フラグをチェックして、無効データが全て削除される。
【0032】
具体的には、ガベージコレクションでは、最新データの書き込み位置から保存データ数分のデータがRAMに保存され、コピー先セクタが消去された後、コピー先セクタにRAMのデータがコピーされる。コピー後、読み込みセクタは、コピー先セクタに更新される。なお、データの書き込み時には、当該領域に管理情報として使用状態フラグが設定され、データの消去時には、当該領域に管理情報として消去状態フラグが設定される。
【0033】
これにより、未使用領域の検索回数を削減し、検索時間を短縮することができる。具体的には、特許文献1に示された従来の方法では、2分検索アルゴリズムを用いているので、データ数をNとすると検索回数が最大でlogN回となるのに対して、本願の方法では、検索回数が起動時の1回のみとなる。すなわち、検索時間を1ms、データ数Nを1024と仮定した場合、従来の方法では、検索時間が最大で10ms(最小で1ms)となるのに対して、本願の方法では、1msとなり、検索時間が短縮されることが分かる。
【0034】
また、格納されるデータ種別毎に、メモリの不揮発エリアが複数の格納領域に分割されているので、データ種別毎に検索アルゴリズムを実行することができ、検索時間が短縮される。また、格納されるデータ種別毎に、最新データの書き込み位置が保存されるので、検索回数が削減されるとともに、検索時間が短縮される。
【0035】
以上のように、実施の形態1によれば、データ種別毎に複数の格納領域に分割されたメモリの不揮発エリアの各格納領域について、格納されるデータ一件分の領域毎に、当該領域の状態を示すべく設定された管理情報を起動時に読み取り、データ一件分の領域の状態を判定し、最新データの書き込み位置を決定して、決定した最新データの書き込み位置をRAMに保存する。
そのため、メモリの不揮発エリアにデータを書き込む際における未使用領域の検索回数を削減し、検索時間を短縮することができる。すなわち、不揮発エリアにおける未使用領域を高速に検索することができる。
【符号の説明】
【0036】
1 データの一情報占有領域、2 データ格納フォーマット。

【特許請求の範囲】
【請求項1】
メモリの不揮発エリアの管理方法であって、
データ種別毎に、前記メモリの不揮発エリアが複数の格納領域に分割され、
各データ種別の格納領域について、前記格納領域に格納されるデータ一件分の領域毎に、当該領域の状態を示す管理情報が設定され、
起動時に、前記管理情報を読み取り、前記データ一件分の領域の状態を判定し、最新データの書き込み位置を決定するステップと、
前記最新データの書き込み位置をRAMに保存するステップと、
を備えたことを特徴とするメモリの不揮発エリアの管理方法。
【請求項2】
前記管理情報は、当該領域に空きが有るか否か、当該領域が使用されているか否か、および当該領域のデータが消去されているか否かを示す情報である
ことを特徴とする請求項1に記載のメモリの不揮発エリアの管理方法。
【請求項3】
格納されるデータのサイズが所定のサイズを超えた場合に、無効データを削除するガベージコレクションを実行するステップをさらに備えた
ことを特徴とする請求項1または請求項2に記載のメモリの不揮発エリアの管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2013−8129(P2013−8129A)
【公開日】平成25年1月10日(2013.1.10)
【国際特許分類】
【出願番号】特願2011−139282(P2011−139282)
【出願日】平成23年6月23日(2011.6.23)
【出願人】(591036457)三菱電機エンジニアリング株式会社 (419)
【Fターム(参考)】