(57)【要約】【課題】  低コストのフラッシュメモリの使用によるコスト低減を可能にし、更には、処理の高速化や、フラッシュメモリの寿命延長を図ることもできる電子機器を提供すること。【解決手段】  アプリケーション処理で使う運用データ３は、データサイズがフラッシュメモリ５上の記憶ブロックサイズ以下となるｎ個のデータブロックに分割して、各設定値データ２１，２３，２５の先頭に、マップ番号及びフラッシュ更新カウンタ値Ｆｉを割り付けた構成にし、電源投入時には、フラッシュメモリ５の運用データ３をＲＡＭ６にコピーして、以後の運用データ３へのアクセスはＲＡＭ６上の各設定値データ２１，２３，２５に対して行い、ＲＡＭ６上の更新されたデータブロックを適時フラッシュメモリ５に書き込むこむことで、フラッシュメモリ５へのアクセス頻度を低減する。【選択図】図１
2008165446.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションによる処理に必要な運用データを読み書き可能な記憶手段であるフラッシュメモリ及びＲＡＭと、これらの各記憶手段への前記運用データの読み書きを管理するメモリドライバと、前記メモリドライバを介して前記記憶手段の運用データにアクセスしてアプリケーションを実行する制御部とを備える電子機器であって、
前記制御部は、前記運用データを、データサイズが前記フラッシュメモリ上でのデータの読み書きの最小単位となる記憶ブロックサイズ以下となるｎ個のデータブロックに分割し、分割した各データブロックの先頭に、マップ番号及びフラッシュ更新カウンタ値の２つのフラグ値を割り付け、
機器の電源投入時に、前記フラッシュメモリから各データブロックの最新データを前記ＲＡＭにコピーし、以後のアプリケーション処理時の運用データの読み書きは前記ＲＡＭ上の各データブロックに対して実行し、以後の電源オフ時又は電池の消尽時、又は待機状態時に、前記ＲＡＭ上の更新されたデータブロックを前記フラッシュメモリに書き込むことを特徴とする電子機器。
【請求項２】
前記フラッシュメモリとしてｎ個の記憶ブロックに、ｍ個の記憶ブロックを追加した、合計（ｎ＋ｍ）個の記憶ブロックを有するものを使用し、
前記制御部は、前記ＲＡＭ上の更新されたデータブロックを前記フラッシュメモリに書き込むデータ更新の際には、未使用の記憶ブロックを優先して、書き込みブロックに選定することを特徴とする請求項１に記載の電子機器。
【請求項３】
前記制御部は、前記ＲＡＭ上の更新されたデータブロックを前記フラッシュメモリに書き込むデータ更新の際に、前記フラッシュメモリ上に未使用の記憶ブロックが存在していない時には、
前記ｎ個のデータブロックをマップ番号順に並べた時に更新すべきデータブロックの次の順位に位置するデータブロックのマップ番号を書き換え候補番号に設定して、該書き換え候補番号をマップ番号として持つ記憶ブロックがフラッシュメモリ上に複数存在するか否かを判定する候補ブロック判定処理を実施し、
該候補ブロック判定処理で該当する複数個の記憶ブロックが存在しないと判定された時には、書き換え候補番号にマップ番号が一致する複数個の記憶ブロックが存在すると判定されるまで、書き換え候補番号を次の順位のマップ番号に更新して同様の判定処理を繰り返し、
前記候補ブロック判定処理で、書き換え候補番号に一致するマップ番号の記憶ブロックが複数存在すると判定された時には、該当する複数個の記憶ブロックの内、更新日時が最も古い記憶ブロックを書き込みブロックに決定して、該記憶ブロックにＲＡＭ上で該当データブロックを書き込むことを特徴とする請求項２に記載の電子機器。
【請求項４】
前記フラッシュメモリへのデータ更新で、データを更新した記憶ブロックのフラッシュ更新カウンタ値が初期値に更新される場合は、更新した記憶ブロックと同一のマップ番号を持つ他の記憶ブロックはデータを消去することを特徴とする請求項１乃至３のいずれかに記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションによる処理に必要な運用データを読み書き可能なフラッシュメモリと、このフラッシュメモリへの前記運用データの読み書きを管理するメモリドライバと、前記メモリドライバを介して前記運用データにアクセスしてアプリケーションを実行する制御部とを備える電子機器に関する。
【背景技術】
【０００２】
これまで、アプリケーションによる処理に必要な運用データを保存するフラッシュメモリに対して、効率よくデータの書き込みを行うことができる電子機器として、前記フラッシュメモリは、セクタ単位毎にデータをアクセスする複数のデータユニットと、該データユニットに記憶されているデータのエントリ情報を記憶するデータ管理ユニットとを備えた構成とし、さらに、メモリドライバを介して前記フラッシュメモリにアクセスする制御部は、前記フラッシュメモリ上のデータユニットのいずれかにデータを書き込む場合に、前記データ管理ユニットに記憶されているエントリ情報を参照して得られる各データユニットの空きサイズに基づいて、該データを書き込むデータユニットを選択してデータの書き込みを行うようにしたものが提案されている（例えば、特許文献１参照）。
【０００３】
また、フラッシュメモリを使用する電子機器では、データのリード・ライト回数が特定のセクタ等に偏ってデバイス寿命の低下を招くことが無いように、データのリード・ライト回数を全セクタに均等化するウエアレベリングが必要になる。
そこで、上記特許文献１では、前記フラッシュメモリ内には予めスペアユニットを設定しておき、前記制御部は、前記データ管理ユニットと前記データユニットとのそれぞれの消去回数のうち最大消去回数と最小消去回数を求め、最大消去回数と最小消去回数との差が所定のしきい値を超えている場合に、最小消去回数のデータユニットまたはデータ管理ユニットの有効セクタ等を前記スペアユニットにコピーし、コピー元のデータユニット内またはデータ管理ユニット内を消去して、新たなスペアユニットとするウエアレベリングを実行することを提案している。
【０００４】
【特許文献１】特開２００５−２７５７２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、上記特許文献１に示されたフラッシュメモリの運用法は、同一アドレスにビット‘０’を上書き可能な機能を備えた高機能なフラッシュメモリでないと実現できない。換言すれば、同一アドレスにビット‘０’を上書きできない低コストのフラッシュメモリを搭載する電子機器では、特許文献１のような運用ができず、高機能なフラッシュメモリに変更しなければならないために、コストアップを招くという問題が生じた。
【０００６】
また、ウエアレベリングの実行のために、制御部は、フラッシュメモリ上の全てのデータユニット及びデータ管理ユニットにおけるデータ消去回数を記録し、更に、最大消去回数と最小消去回数との差が所定のしきい値を超えるか否かを評価する演算処理が頻繁に必要となり、ウエアレベリングのために制御部への負担が大きくなって、処理の遅延が生じる虞もあった。
【０００７】
また、一般的に、ＲＡＭ（ランダム・アクセス・メモリ）と比較してフラッシュメモリは動作速度が遅いため、アプリケーションの実行時に、その都度、フラッシュメモリ上の運用データにアクセスする運用法では、処理の高速化が難しいという問題が生じると同時に、フラッシュメモリへのアクセス頻度の増加によりフラッシュメモリの寿命が低下するという問題も生じた。
【０００８】
そこで、本発明の目的は上記課題を解消することに係り、同一アドレスにビット‘０’を上書きできない低コストのフラッシュメモリを搭載する電子機器であっても、フラッシュメモリに対して効率よくデータの書き込みを行うことができ、低コストのフラッシュメモリの使用によるコスト低減を図ることができ、更には、制御部に負担をかけずにフラッシュメモリへのウエアレベリングを実行でき、かつ、アプリケーション実行に伴うフラッシュメモリへのアクセス頻度を下げて、処理の高速化や、フラッシュメモリの寿命延長を図ることもできる電子機器を提供することである。
【課題を解決するための手段】
【０００９】
（１）本発明の上記課題の解決は、アプリケーションによる処理に必要な運用データを読み書き可能な記憶手段であるフラッシュメモリ及びＲＡＭと、これらの各記憶手段への前記運用データの読み書きを管理するメモリドライバと、前記メモリドライバを介して前記記憶手段の運用データにアクセスしてアプリケーションを実行する制御部とを備える電子機器であって、
前記制御部は、前記運用データを、データサイズが前記フラッシュメモリ上でのデータの読み書きの最小単位となる記憶ブロックサイズ以下となるｎ個のデータブロックに分割し、分割した各データブロックの先頭に、マップ番号及びフラッシュ更新カウンタ値の２つのフラグ値を割り付け、
機器の電源投入時に、前記フラッシュメモリから各データブロックの最新データを前記ＲＡＭにコピーし、以後のアプリケーション処理時の運用データの読み書きは前記ＲＡＭ上の各データブロックに対して実行し、以後の電源オフ時又は電池の消尽時、又は待機状態時に、前記ＲＡＭ上の更新されたデータブロックを前記フラッシュメモリに書き込むことを特徴とする電子機器により達成される。
【００１０】
上記構成によれば、フラッシュメモリへのデータの書き込みは、フラッシュメモリを構成している記憶ブロック単位で単純にデータの消去・書き込みを行うだけで良いため、同一アドレスにビット‘０’を上書きできない低コストのフラッシュメモリを搭載する電子機器であっても、フラッシュメモリに対して効率よくデータの書き込みを行うことができ、低コストのフラッシュメモリの使用によるコスト低減を図ることができる。
【００１１】
また、通常、アプリケーション実行時における運用データへのアクセスは、機器の電源投入時にフラッシュメモリからＲＡＭにコピーされた運用データに対して行うため、アプリケーション実行に伴うフラッシュメモリへのアクセス頻度を下げて、処理の高速化や、フラッシュメモリの寿命延長を図ることもできる。
【００１２】
（２）なお、好ましくは、上記（１）に記載の電子機器において、前記フラッシュメモリとしてｎ個の記憶ブロックに、ｍ個の記憶ブロックを追加した、合計（ｎ＋ｍ）個の記憶ブロックを有するものを使用し、
前記制御部は、前記ＲＡＭ上の更新されたデータブロックを前記フラッシュメモリに書き込むデータ更新の際には、未使用の記憶ブロックを優先して、書き込みブロックに選定する構成とすると良い。
【００１３】
このような構成にすると、フラッシュメモリの各記憶ブロックへのデータのリード・ライト回数が、スペア用の記憶ブロックの存在比率に相応して緩和され、スペア用の記憶ブロックへのデータの読み書き分が、フラッシュメモリの各記憶ブロックへのデータのリード・ライト回数を均等化するウエアレベリングとしての効力を発揮するため、フラッシュメモリの寿命延長を図ることができる。
【００１４】
（３）また、好ましくは、上記（２）に記載の電子機器において、前記制御部は、前記ＲＡＭ上の更新されたデータブロックを前記フラッシュメモリに書き込むデータ更新の際に、前記フラッシュメモリ上に未使用の記憶ブロックが存在していない時には、
前記ｎ個のデータブロックをマップ番号順に並べた時に更新すべきデータブロックの次の順位に位置するデータブロックのマップ番号を書き換え候補番号に設定して、該書き換え候補番号をマップ番号として持つ記憶ブロックがフラッシュメモリ上に複数存在するか否かを判定する候補ブロック判定処理を実施し、
もしも、その候補ブロック判定処理で該当する複数個の記憶ブロックが存在しないと判定された時には、書き換え候補番号にマップ番号が一致する複数個の記憶ブロックが存在すると判定されるまで、書き換え候補番号を次の順位のマップ番号に更新して同様の判定処理を繰り返し、
前記候補ブロック判定処理で、書き換え候補番号に一致するマップ番号の記憶ブロックが複数存在すると判定された時には、該当する複数個の記憶ブロックの内、更新日時が最も古い記憶ブロックを書き込みブロックに決定して、その記憶ブロックにＲＡＭ上で該当データブロックを書き込む構成とすると良い。
【００１５】
このような構成にすると、データ更新されるフラッシュメモリ上の記憶ブロックは、更新すべきデータブロックのマップ番号と異なるマップ番号を持ち、且つ、前回の更新時がより古いものが優先されることになり、フラッシュメモリの各記憶ブロックへのデータのリード・ライト回数を均等化するウエアレベリングを効率良く実施することが可能になり、フラッシュメモリの寿命延長を図ることができる。
【００１６】
また、データ更新するフラッシュメモリ上の記憶ブロックの決定処理は、更新すべきデータブロックのマップ番号をインクリメントして生成される書き換え候補番号に一致するマップ番号の記憶ブロックが複数存在するか否かを調べ、存在している場合にその複数個の記憶ブロックの中からデータ更新日時が一番古い記憶ブロックを選択するもので、記憶ブロックの決定のための制御処理としては、マップ番号の照合と、フラッシュ更新カウンタ値の比較だけで良く、簡単に実現できる。従って、制御部に負担をかけずにフラッシュメモリへのウエアレベリングを実行でき、処理の高速化や、フラッシュメモリの寿命延長を図ることができる。
【００１７】
（４）また、好ましくは、上記（１）乃至（３）のいずれか一つに記載の電子機器において、前記フラッシュメモリへのデータ更新で、データを更新した記憶ブロックのフラッシュ更新カウンタ値が初期値に更新される場合は、更新した記憶ブロックと同一のマップ番号を持つ他の記憶ブロックはデータを消去する構成とすると良い。
このような構成にすると、例えば、フラッシュメモリ上の記憶ブロックに書き込まれるフラッシュ更新カウンタ値が、０００１ｈ〜ＦＦＦＦｈまでの変数で、前回のカウンタ値がＦＦＦＦｈであった場合に、次の更新時のカウンタ値は初期値である０００１ｈに戻すが、カウンタ値０００１ｈを書き込んだ時には、同じマップ番号で、それ以外のカウンタ値が書き込まれている全ての記憶ブロックは、データを消去して、スペア用の記憶ブロック扱いにする。これにより、フラッシュ更新カウンタ値の大小と、更新時の新旧との相関が崩れることを防止でき、フラッシュメモリへのデータの読み書きの信頼性を向上させることができる。
【発明の効果】
【００１８】
本発明に係る電子機器では、フラッシュメモリへのデータの書き込みは、フラッシュメモリを構成している記憶ブロック単位で単純にデータの消去・書き込みを行うだけで良いため、同一アドレスにビット‘０’を上書きできない低コストのフラッシュメモリを搭載する電子機器であっても、フラッシュメモリに対して効率よくデータの書き込みを行うことができ、低コストのフラッシュメモリの使用によるコスト低減を図ることができる。
【００１９】
また、通常、アプリケーション実行時における運用データへのアクセスは、機器の電源投入時にフラッシュメモリからＲＡＭにコピーされた運用データに対して行うため、アプリケーション実行に伴うフラッシュメモリへのアクセス頻度を下げて、処理の高速化や、フラッシュメモリの寿命延長を図ることもできる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明に係る電子機器の好適な実施の形態について、図面を参照して詳細に説明する。
図１は本発明に係る電子機器の一実施の形態の概略構成を示すブロック図、図２は図１に示した電子機器に搭載されるフラッシュメモリの構成説明図、図３は図２に示したフラッシュメモリの各記憶ブロックへのデータ書き込み方法を示すフローチャート、図４は図３に示したデータ書き込み方法でフラッシュメモリ上の各記憶ブロックのデータが更新される態様の説明図である。
【００２１】
この一実施の形態の電子機器１は、メールの送受信機能やメモ機能などを有した多機能型の携帯電話機であって、図１に示すように、通話やその他のアプリケーションによる処理に必要な運用データ３（図２参照）を読み書き可能な記憶手段であるフラッシュメモリ５及びＲＡＭ（ランダム・アクセス・メモリ）６と、アプリケーションプログラムやその他の固定データを記憶したＲＯＭ（リード・オンリー・メモリ）７と、記憶手段５，６への運用データ３の読み書きやＲＯＭ７からのデータの読み出しを管理するメモリドライバ９と、メモリドライバ９を介して各記憶手段５，６の運用データ３にアクセスしてアプリケーションを実行する制御部１１と、この制御部１１と各記憶手段５〜７との間のデータ通路、あるいは制御部１１と後述の無線部１９との間のデータ通路となるデータバス１２と、アプリケーションの処理状況等を表示する液晶ディスプレイによる表示部１３と、運用データ３の入力やアプリケーションへの処理命令を入力するための各種の入力キーを備えたキー操作部１５と、音声の入出力を行うマイク／スピーカ１７と、アプリケーションの処理に応じてデータを無線通信により送受信する無線部１９と、を備えた構成とされている。
【００２２】
本実施の形態の場合、運用データ３は、図４（ａ）に示すように、電話による通話処理時の音量やネゴシエーションなどに対する設定値を規定の順序で書き込んだデータ列である設定値データ２１と、電話による通話処理に必要な電話帳データを書き込んだ電話帳データ２３と、メール機能を使ったＳＭＳ（ショートメッセージサービス）用の設定データを書き込んだデータ列であるＳＭＳデータ２５とから構成されている。
この運用データ３において、設定値データ２１のデータサイズは３ｋバイト、電話帳データ２３のデータサイズは７ｋバイト、ＳＭＳデータ２５のデータサイズは６ｋバイトであり、運用データ３を連続するデータ列で表示するなら、１６ｋバイトサイズのデータマップで表示される。
【００２３】
本実施の形態では、フラッシュメモリ５には、データの読み書きの最小単位となるブロックサイズが８ｋバイトの記憶ブロックを複数備えた構成のものが使用されている。
本実施の形態では、運用データ３は、データサイズがフラッシュメモリ５のブロックサイズ以下となる設定値データ２１，電話帳データ２３，ＳＭＳデータ２５の３個のデータブロック（データマップ）に分割して、データブロック単位で取り扱う。また、分割した各データブロックの先頭には、マップ番号Ｍｉ及びフラッシュ更新カウンタ値Ｆｉの２つのフラグ値を割り付けてデータブロック相互を識別可能に構成する。
【００２４】
フラッシュメモリ５は、図２に示すように、運用データ３の分割数３に相応する３個の記憶ブロック３１，３２，３３に、スペア用の２個の記憶ブロック３４，３５を追加した、合計５個の記憶ブロック３１，３２，３３，３４，３５を有するものを使用している。
各記憶ブロック３１，３２，３３，３４，３５は、前述したようにデータサイズが８ｋバイトの記憶ブロックで、図２は、運用データ３を構成する３個のデータブロック２１，２３，２５が、３個の記憶ブロックに書き込まれた状態を示している。
【００２５】
各ブロックデータ２１，２３，２５に付与するマップ番号Ｍｉ及びフラッシュ更新カウンタ値Ｆｉの２つのフラグ値は、それぞれ８バイトで表示されるデータで、フラッシュメモリ５の８ｋバイトの記憶ブロックに書き込む際には、８ｋバイトの記憶ブロックの先頭の１６バイトに書き込まれる。従って、運用データ３の分割された各データ２１，２３，２５は、フラッシュメモリ５の８ｋバイトの記憶ブロックに書き込まれる時には、記憶ブロック先頭から１６バイトオフセットした位置から書き込まれる。
【００２６】
マップ番号Ｍｉは、分割されたデータ種を示すもので、本実施の形態の場合は、運用データ３を３つのデータに分割したことから、設定値データ２１のマップ番号Ｍｉは１（＝０００１ｈ）に、電話帳データ２３のマップ番号Ｍｉは２（＝０００２ｈ）に、ＳＭＳデータ２５のマップ番号Ｍｉは３（＝０００３ｈ）に設定される。
フラッシュ更新カウンタ値Ｆｉは、８バイトを使った計数値で、０００１ｈから始まり、データが更新されるたびにカウンタ値を１インクリメントした値になり、ＦＦＦＦｈまで到達すると、次は、初期値である０００１ｈに戻される。
【００２７】
本実施の形態の電子機器１では、機器の電源投入時には、フラッシュメモリ５から各データブロック２１，２３，２５の最新データをＲＡＭ６に読み込み、以後のアプリケーション処理時の運用データ３の読み書きはＲＡＭ６上に展開されている各データブロック２１，２３，２５に対して実行する。
【００２８】
データブロック２１，２３，２５を読み込むＲＡＭ６には、各データブロック毎に、アプリケーションからのアクセスによるデータ更新の有無を識別可能にするＲＡＭ更新カウンタが準備される。ＲＡＭ更新カウンタは、フラッシュメモリ５の各記憶ブロックに付けるフラッシュ更新カウンタ値Ｆｉと同様に例えば８バイトを使った計数値で示し、電源投入でフラッシュメモリ５からＲＡＭ６にコピーされた各設定値データ２１，２３，２５の初期状態では、いずれもＲＡＭ更新カウンタ値は、００００ｈから始まる。そして、各データブロック毎に、１バイトの書き込みが発生する都度、カウンタ値を１インクリメントした値になり、ＦＦＦＦｈまで到達すると、次は、初期値である００００ｈに戻される。
【００２９】
一方、電子機器１において、電源投入された後は、例えば電源オフ時、又は電池の消尽時、又は電話モードの待機状態時に、ＲＡＭ６上の更新されたデータブロックをフラッシュメモリ５に書き込む。
ＲＡＭ６上の更新されたデータブロックは、ＲＡＭ更新カウンタ値が００００ｈ以外の値となっていることで判別され、ひとつのデータブロックを書き込むときで、ＲＡＭ更新カウンタ値が００００ｈ以外のものが複数存在していた場合には、ＲＡＭ更新カウンタ値が最大のものがフラッシュメモリ５に書き込まれる。フラッシュメモリ５への書き込みが終了したデータブロックは、ＲＡＭ更新カウンタ値が００００ｈに戻される。
【００３０】
本実施の形態の電子機器１では、ＲＡＭ６上の更新されたデータブロックをフラッシュメモリ５に書き込む処理は、図３に示す手順で実行される。
即ち、電源オフ時、又は電池の消尽時、又は電話モードの待機状態時などのデータ更新するタイミングが訪れると、制御部１１がメモリドライバ９に更新するデータブロックのマップ番号を通知する（ステップＳ１０１）。これにより、一連の、データ更新処理が開始される。
【００３１】
更新するデータブロックのマップ番号が通知されたメモリドライバ９は、まず、フラッシュメモリ５上のデータが記録されている全ての記憶ブロックのマップ番号Ｍｉとフラッシュ更新カウンタ値Ｆｉを取得する（ステップＳ１１１）。次に、取得した記憶ブロックの情報から、マップ番号Ｍｉ及びフラッシュ更新カウンタ値Ｆｉが記録されていないスペア用の記憶ブロック（未使用状態の記憶ブロック）が残存しているか否かを判定する（ステップＳ１１２）。
【００３２】
例えば、フラッシュメモリ５上で記憶ブロック使用状況が図４（ａ）の状態にあって、ステップＳ１１２の判定処理で未使用状態の記憶ブロックが有ると判定された時には、ステップＳ１１３に移行して、その未使用記憶ブロックの一つを、更新データを書き込む記憶ブロックに決定する。
上記ステップＳ１１１〜Ｓ１１３までの流れは、ＲＡＭ６上の更新されたデータブロックをフラッシュメモリ５に書き込むデータ更新の際には、フラッシュメモリ５上の未使用の記憶ブロックを優先して、書き込みブロックに選定することを意味している。
ステップＳ１１３により書き込みブロックが決定されたら、ステップＳ１２１に移行する。
【００３３】
一方、フラッシュメモリ５上でブロック使用状況が図４（ｂ）の状態にあって、ステップＳ１１２の判定処理で未使用状態の記憶ブロックが無いと判定された時には、ステップＳ１１４に進む。
このステップＳ１１４では、運用データ３を分割した３個のデータブロック２１，２３，２５をマップ番号順に並べた時に更新すべきデータブロックの次の順位に位置するデータブロックのマップ番号を書き換え候補番号に設定する。
【００３４】
このステップＳ１１４のおける処理を具体例で説明する。
図４（ｂ）に示すフラッシュメモリ５の使用状況で、ステップＳ１０１で通知された更新データのマップ番号が１であったとする。
本実施の形態の場合、マップ番号は、１，２，３の３種類で、ステップＳ１０１で通知された更新データはマップ番号１が付与されている設定値データ２１であり、更新すべきデータブロック２１の次の順位に位置するデータブロック２２のマップ番号は２である。
そこで、ステップＳ１１４では、書き換え候補番号として‘２’が設定される。
換言すると、運用データ３を分割した複数個のデータブロックに、連続番号でマップ番号が付与される場合は、ステップＳ１０１で通知されたマップ番号値に＋１した番号が、ステップＳ１１４で設定する書き換え候補番号となる。
【００３５】
ステップＳ１１４において書き換え候補番号が設定されたら、ステップＳ１１５に移行して、その書き換え候補番号をマップ番号として持つ記憶ブロックがフラッシュメモリ５上に複数存在するか否かを判定する候補ブロック判定処理を実施する。
具体例で説明すると、次のようになる。
図４（ｂ）に示すフラッシュメモリ５の使用状況で、ステップＳ１０１で通知された更新データのマップ番号が‘１’で、ステップＳ１１４では書き換え候補番号として‘２’が設定された場合で説明する。
図４（ｂ）に示したフラッシュメモリ５の使用状況で、書き換え候補番号の‘２’をマップ番号として持つ記憶ブロックは、フラッシュメモリ５上の記憶ブロック３２，３４，３５の３つである。従って、この場合は、ステップＳ１１５では、‘該当する複数の記憶ブロックが有る’と判定することになる。
【００３６】
もう一つ、別の例を挙げて、説明する。
図４（ｂ）に示すフラッシュメモリ５の使用状況で、ステップＳ１０１で通知された更新データのマップ番号が‘２’で、ステップＳ１１４では書き換え候補番号として‘３’が設定された場合で説明する。
図４（ｂ）に示したフラッシュメモリ５の使用状況で、書き換え候補番号の‘３’をマップ番号として持つ記憶ブロックは、フラッシュメモリ５上の記憶ブロック３３の１つだけである。従って、この場合は、ステップＳ１１５では、‘該当する複数の記憶ブロックが無い’と判定することになる。
ステップＳ１１５で‘該当する複数の記憶ブロックが無い’と判定したときには、次のステップＳ１１６に進んで、それまでの書き換え候補番号に＋１して、書き換え候補番号を次の順位のマップ番号１に更新して、ステップＳ１１５に戻る。
書き換え候補番号は、１，２，３の３つのマップ番号値の並び順を順に移行するため、それまでの書き換え候補番号が３の場合、更新すると、１に戻る。
【００３７】
ステップＳ１１６で書き換え候補番号が‘１’に更新されて、ステップＳ１１５に戻ると、図４（ｂ）に示したフラッシュメモリ５の使用状況で、書き換え候補番号の‘１’をマップ番号として持つ記憶ブロックは、フラッシュメモリ５上の記憶ブロック３１の１つだけである。従って、この場合も、ステップＳ１１５では、‘該当する複数の記憶ブロックが無い’と判定し、ステップＳ１１６に移行する。ステップＳ１１６では、書き換え候補番号が‘２’に更新されて、ステップＳ１１５に戻ると、図４（ｂ）に示したフラッシュメモリ５の使用状況で、書き換え候補番号の‘２’をマップ番号として持つ記憶ブロックは、フラッシュメモリ５上の記憶ブロック３２，３４，３５の３つである。従って、この場合は、ステップＳ１１５では‘該当する複数の記憶ブロックが有る’と判定して、次のステップＳ１１７に進む。
【００３８】
即ち、本実施の形態の処理では、ステップＳ１１５の候補ブロック判定処理で該当する複数個の記憶ブロックが存在しないと判定された時には、書き換え候補番号にマップ番号が一致する複数個の記憶ブロックが存在すると判定されるまで、書き換え候補番号を次の順位のマップ番号に更新するステップＳ１１６と、候補ブロック判定処理を実施するステップＳ１１５とが繰り返されることになる。
【００３９】
ステップＳ１１７では、該当する同一マップ番号の複数個の記憶ブロックの内、更新日時が最も古い記憶ブロックを書き込みブロックに決定する。
具体的には、書き換え候補番号が２で、ステップＳ１１５において記憶ブロック３２，３４，３５の３つが該当記憶ブロックであると判定されて、ステップＳ１１７に進んだ場合、これらの３つの記憶ブロックの内、フラッシュ更新カウンタ値Ｆｉの一番小さい記憶ブロック３２を、更新データを書き込むブロックに決定して、次のステップＳ１１８に進む。
【００４０】
ステップＳ１１８ではステップＳ１１７で決定された記憶ブロックに対してデータの消去を行い、次のステップＳ１２１では、図４（ｃ）の記憶ブロック３２あるいは図４（ｄ）の記憶ブロック３２に示すように、該当するフラッシュメモリ５の記憶ブロックに対して、ステップＳ１０１で通知されたＲＡＭ６上のデータブロックをコピーする。
次いで、フラッシュメモリ５上に存在する同一マップ番号の記憶ブロックの中で最新の記憶ブロックとなるように、フラッシュ更新カウンタ値Ｆｉを更新し（ステップＳ１２３）、マップ番号Ｍｉを書き込み（ステップＳ１２４）、必要が有れば、後処理を実施して（ステップＳ１２５）、一連の処理が終了する。
【００４１】
ステップＳ１２５で実施する後処理とは、フラッシュメモリ５へのデータ更新で、データを更新した記憶ブロックのフラッシュ更新カウンタ値Ｆｉが初期値に更新される場合は、更新した記憶ブロックと同一のマップ番号を持つ他の記憶ブロックのデータを消去する処理である。
【００４２】
以上に説明した一実施の形態の電子機器１では、フラッシュメモリ５へのデータの書き込みは、フラッシュメモリ５を構成している記憶ブロック単位で単純にデータの消去・書き込みを行うだけで良いため、同一アドレスにビット‘０’を上書きできない低コストのフラッシュメモリを搭載する電子機器１であっても、フラッシュメモリ５に対して効率よくデータの書き込みを行うことができ、低コストのフラッシュメモリ５の使用によるコスト低減を図ることができる。
【００４３】
また、通常、アプリケーション実行時における運用データ３へのアクセスは、機器の電源投入時にフラッシュメモリ５からＲＡＭ６にコピーされた運用データ３に対して行うため、アプリケーション実行に伴うフラッシュメモリ５へのアクセス頻度を下げて、処理の高速化や、フラッシュメモリ５の寿命延長を図ることもできる。
【００４４】
また、本実施の形態の電子機器１では、フラッシュメモリ５として、運用データ３を構成する３つのデータ記憶ブロック２１，２３，２５に相応する３個の記憶ブロック３１，３２，３３に、スペア用の２個の記憶ブロック３４，３５を追加した、合計５個の記憶ブロックを有するものを使用しており、ＲＡＭ６上の更新されたデータブロックをフラッシュメモリ５に書き込むデータ更新の際には、図３のステップＳ１１１〜Ｓ１１３にも示したように、未使用の記憶ブロックを優先して、書き込みブロックに選定する。
そのため、フラッシュメモリ５の各記憶ブロック３１〜３５へのデータのリード・ライト回数が、スペア用の記憶ブロックの存在比率に相応して緩和され、スペア用の記憶ブロックへのデータの読み書き分が、フラッシュメモリ５の各記憶ブロックへのデータのリード・ライト回数を均等化するウエアレベリングとしての効力を発揮するため、フラッシュメモリ５の寿命延長を図ることができる。
【００４５】
また、本実施の形態の電子機器１では、ＲＡＭ６上の更新されたデータブロックをフラッシュメモリ５に書き込むデータ更新の際に、フラッシュメモリ５上に未使用の記憶ブロックが存在していない時には、図３のステップＳ１１４〜Ｓ１１６にも示したように、３個のデータブロック２１，２３，２５をマップ番号順に並べた時に更新すべきデータブロックの次の順位に位置するデータブロックのマップ番号を書き換え候補番号に設定して、該書き換え候補番号をマップ番号として持つ記憶ブロックがフラッシュメモリ５上に複数存在するか否かを判定する候補ブロック判定処理を実施し、もしも、その候補ブロック判定処理で該当する複数個の記憶ブロックが存在しないと判定された時には、書き換え候補番号にマップ番号が一致する複数個の記憶ブロックが存在すると判定されるまで、書き換え候補番号を次の順位のマップ番号に更新して同様の判定処理を繰り返す。
そして、図３のステップＳ１１７〜Ｓ１２１に示すように、候補ブロック判定処理で、書き換え候補番号に一致するマップ番号の記憶ブロックが複数存在すると判定された時には、該当する複数個の記憶ブロックの内、更新日時が最も古い記憶ブロックを書き込みブロックに決定して、その記憶ブロックにＲＡＭ６上で該当データブロックを書き込む。
【００４６】
そのため、データ更新されるフラッシュメモリ５上の記憶ブロックは、更新すべきデータブロックのマップ番号と異なるマップ番号を持ち、且つ、前回の更新時がより古いものが優先されることになり、フラッシュメモリ５の各記憶ブロックへのデータのリード・ライト回数を均等化するウエアレベリングを効率良く実施することが可能になり、フラッシュメモリ５の寿命延長を図ることができる。
【００４７】
また、データ更新するフラッシュメモリ５上の記憶ブロックの決定処理は、更新すべきデータブロックのマップ番号をインクリメントして生成される書き換え候補番号に一致するマップ番号の記憶ブロックが複数存在するか否かを調べ、存在している場合にその複数個の記憶ブロックの中からデータ更新日時が一番古い記憶ブロックを選択するもので、記憶ブロックの決定のための制御処理（演算処理）としては、マップ番号の照合と、フラッシュ更新カウンタ値の比較だけで良く、簡単に実現できる。従って、制御部１１に負担をかけずにフラッシュメモリ５へのウエアレベリングを実行でき、処理の高速化や、フラッシュメモリ５の寿命延長を図ることができる。
【００４８】
また、本実施の形態の電子機器１では、図３にステップＳ１２５に示すように、一連の処理の最後に後処理が設定されていて、フラッシュメモリ５へのデータ更新で、データを更新した記憶ブロックのフラッシュ更新カウンタ値が初期値に更新される場合は、更新した記憶ブロックと同一のマップ番号を持つ他の記憶ブロックのデータを消去する。
例えば、フラッシュメモリ５上の記憶ブロックに書き込まれるフラッシュ更新カウンタ値が、０００１ｈ〜ＦＦＦＦｈまでの変数で、前回のカウンタ値がＦＦＦＦｈであった場合に、次の更新時のカウンタ値は初期値である０００１ｈに戻すが、カウンタ値０００１ｈを書き込んだ時には、同じマップ番号で、それ以外のカウンタ値が書き込まれている全ての記憶ブロックは、データを消去して、スペア用の記憶ブロック扱いにする。これにより、フラッシュ更新カウンタ値の大小と、更新時の新旧との相関が崩れることを防止でき、フラッシュメモリ５へのデータの読み書きの信頼性を向上させることができる。
【００４９】
なお、本発明に係る電子機器は、上記実施の形態に示した携帯電話機に限らない。本発明は、例えば、モバイルパソコン、ノート型パソコン、デジタルカメラなどを始めとして、アプリケーションによる処理に必要な運用データを読み書き可能な記憶手段としてフラッシュメモリを具備した構成をなす各種の電子機器に応用可能である。
【００５０】
また、アプリケーションによる処理に必要な運用データの分割数は、上記実施の形態に限定するものではなく、運用データのデータサイズや、フラッシュメモリのブロックサイズなどから適宜に設計変更することができる。
【００５１】
また、フラッシュメモリに装備するブロックサイズや記憶ブロック数、スペア用の記憶ブロックの数量等も、運用データの分割数や分割された各データブロックのデータサイズに応じて、適宜に設計変更することが可能である。
【図面の簡単な説明】
【００５２】
【図１】本発明に係る電子機器の一実施の形態の概略構成を示すブロック図である。
【図２】図１に示した電子機器に搭載されるフラッシュメモリの構成説明図である。
【図３】図２に示したフラッシュメモリの各記憶ブロックへのデータ書き込み方法を示すフローチャートである。
【図４】図３に示したデータ書き込み方法でフラッシュメモリ上の各記憶ブロックのデータが更新される態様の説明図である。
【符号の説明】
【００５３】
１  電子機器
３  運用データ
５  フラッシュメモリ（記憶手段）
６  ＲＡＭ（ランダム・アクセス・メモリ）（記憶手段）
７  ＲＯＭ（リード・オンリー・メモリ）
９  メモリドライバ
１１  制御部
１２  データバス
１３  表示部
１５  キー操作部
１７  マイク／スピーカ
１９  無線部
２１，２３，２５  データブロック
３１〜３５  記憶ブロック
Ｍｉ  マップ番号（フラグ値）
Ｆｉ  フラッシュ更新カウンタ値（フラグ値）
【図１】
2008165446.tif 000003
【図２】
2008165446.tif 000004
【図３】
2008165446.tif 000005
【図４】
2008165446.tif 000006