IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ カシオ計算機株式会社の特許一覧

特許7322568メモリシステム、制御方法及びプログラム
<>
  • 特許-メモリシステム、制御方法及びプログラム 図1
  • 特許-メモリシステム、制御方法及びプログラム 図2
  • 特許-メモリシステム、制御方法及びプログラム 図3
  • 特許-メモリシステム、制御方法及びプログラム 図4
  • 特許-メモリシステム、制御方法及びプログラム 図5
  • 特許-メモリシステム、制御方法及びプログラム 図6
  • 特許-メモリシステム、制御方法及びプログラム 図7
  • 特許-メモリシステム、制御方法及びプログラム 図8
  • 特許-メモリシステム、制御方法及びプログラム 図9
  • 特許-メモリシステム、制御方法及びプログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-31
(45)【発行日】2023-08-08
(54)【発明の名称】メモリシステム、制御方法及びプログラム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20230801BHJP
   G06F 12/02 20060101ALI20230801BHJP
【FI】
G06F12/00 560B
G06F12/00 597U
G06F12/02 530E
【請求項の数】 10
(21)【出願番号】P 2019136891
(22)【出願日】2019-07-25
(65)【公開番号】P2021022045
(43)【公開日】2021-02-18
【審査請求日】2022-07-11
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】100096699
【弁理士】
【氏名又は名称】鹿嶋 英實
(74)【代理人】
【識別番号】100171882
【弁理士】
【氏名又は名称】北庄 麗絵子
(72)【発明者】
【氏名】山田 俊介
【審査官】北村 学
(56)【参考文献】
【文献】特開2002-149479(JP,A)
【文献】特開2005-250619(JP,A)
【文献】特開2016-212779(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 3/06 - 3/08
G06F 12/00 - 12/06
(57)【特許請求の範囲】
【請求項1】
フラッシュメモリである主記憶手段の各セクタに関する管理情報に基づいて、データを前記主記憶手段の各セクタに書き込んで保存する制御を行うメモリ管理手段と、
前記データを一時保存する所定のメモリ容量のバッファメモリが確保される作業用メモリと、
前記バッファメモリに一時保存された前記データを、前記各セクタに書き込んで保存する前記主記憶手段と、
を備え、
前記管理情報は、前記メモリ管理手段による前記主記憶手段への前記データの書き込みに伴って実行される、前記セクタの保存データのイレース処理に必要とするイレース時間を前記セクタごとに有し、
前記メモリ管理手段は、前記イレース時間に基づいて、前記作業用メモリに確保される前記バッファメモリのメモリ容量を設定する、
ことを特徴とするメモリシステム。
【請求項2】
前記メモリ管理手段は、前記イレース処理において、前記データの書き込み対象となっている前記セクタの前記イレース時間を計測して前記管理情報の前記イレース時間を更新することを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記メモリ管理手段は、前記データの書き込み対象となっている前記セクタについて、複数回計測された前記イレース時間の平均値により前記管理情報の前記イレース時間を更新することを特徴とする請求項2に記載のメモリシステム。
【請求項4】
前記管理情報は、前記主記憶手段に設定された管理情報領域に保存され、
前記メモリ管理手段は、前記主記憶手段への前記データの書き込みに先立って、前記主記憶手段の前記管理情報領域から前記管理情報を読み出して、前記作業用メモリに管理テーブルを作成し、前記管理テーブルに基づいて、前記データの書き込み、及び、前記保存データのイレース処理を実行することを特徴とする請求項1乃至3のいずれかに記載のメモリシステム。
【請求項5】
前記主記憶手段は、NOR型のフラッシュメモリであることを特徴とする請求項1乃至4のいずれかに記載のメモリシステム。
【請求項6】
前記データは、検出手段から継続的に出力されるセンサデータであることを特徴とする請求項1乃至5のいずれかに記載のメモリシステム。
【請求項7】
主記憶手段、作業用メモリ及びメモリ管理手段を有するメモリシステムにおける制御方法であって、
前記メモリ管理手段は、データをフラッシュメモリである前記主記憶手段の各セクタに書き込んで保存する際に、
前記主記憶手段への前記データの書き込みに伴って実行される、前記セクタの保存データのイレース処理に必要とするイレース時間を前記セクタごとに有する管理情報に基づいて、前記データを一時保存する前記作業用メモリに確保されるバッファメモリのメモリ容量を設定し、
前記主記憶手段は、前記バッファメモリに一時保存された前記データを、前記各セクタに書き込んで保存する、
ことを特徴とするメモリシステムの制御方法。
【請求項8】
前記メモリ管理手段は、前記イレース処理において、前記データの書き込み対象となっている前記セクタの前記イレース時間を計測して前記管理情報の前記イレース時間を更新することを特徴とする請求項7に記載のメモリシステムの制御方法。
【請求項9】
データをフラッシュメモリである主記憶手段の各セクタに書き込んで保存する制御を行うメモリシステムのプログラムであって、
前記メモリシステムを、
前記主記憶手段への前記データの書き込みに伴って実行される、前記セクタの保存データのイレース処理に必要とするイレース時間を前記セクタごとに有する管理情報に基づいて、前記データを一時保存する作業用メモリに確保されるバッファメモリのメモリ容量を設定するバッファメモリ確保手段、
前記バッファメモリに一時保存された前記データを、前記各セクタに書き込んで保存するデータ書き込み手段、
として機能させることを特徴とするメモリシステムのプログラム。
【請求項10】
前記メモリシステムを、
前記イレース処理において、前記データの書き込み対象となっている前記セクタの前記イレース時間を計測して前記管理情報の前記イレース時間を更新する管理情報更新手段、としてさらに機能させることを特徴とする請求項9に記載のメモリシステムのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリであるフラッシュメモリを、センサデータ等を蓄積するための主記憶手段として備えたメモリシステム、その制御方法及びプログラムに関する。
【背景技術】
【0002】
近年、携帯型の電子機器や通信機器等において、主記憶手段としてフラッシュメモリが多く用いられている。フラッシュメモリにおいては、データの書き換えや書き込みを行う際に、データの書き込み対象となっているメモリ内のセクタにすでにデータが記憶されている場合には、まず、そのデータを消去するイレース処理をセクタ単位で実行する必要がある。
【0003】
そのため、フラッシュメモリを用いたメモリ管理においては、データの書き込み対象となっているメモリ内のセクタに対してイレース処理が必要な場合、書き込み用のデータを一時保存するバッファメモリが必要となる。
【0004】
特に、NOR型のフラッシュメモリにおいては、メモリアレイの構造上、NAND型のフラッシュメモリに比較して、イレース処理に必要とする時間(イレース時間)が長く、また、イレース処理を繰り返すことにより、メモリ素子が劣化してイレース時間が、利用初期の状態より長くなることも知られている。
【0005】
特許文献1には、フラッシュメモリにおけるイレース回数を含む劣化度情報を検出して、この劣化度に基づいて書き換え動作の際にイレース処理の対象となるメモリ内のブロックに対するウェアレベリング(メモリ素子の使用寿命を延ばすための書き換え動作の平滑化処理)を行う技術が記載されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2012-174331号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に記載されているようなイレース回数を含む劣化度情報に基づいてウェアレベリングを行う場合、ブロック内の各セクタにおけるデータの保存状態や書き換え回数等(又は、メモリ素子の劣化状態)のばらつきを考慮して大きなマージンを設ける必要があり、それに伴って、バッファメモリとして確保するメモリ容量を大きくする必要があるという問題を有していた。
【0008】
そこで、本発明は、フラッシュメモリを、センサデータ等を蓄積するための主記憶手段として備えたメモリシステムにおける、書き込み用のデータを一時保存するバッファメモリのメモリ容量の増大を抑えることができるメモリシステム、その制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の一実施形態に係るメモリシステムは、
フラッシュメモリである主記憶手段の各セクタに関する管理情報に基づいて、データを前記主記憶手段の各セクタに書き込んで保存する制御を行うメモリ管理手段と、
前記データを一時保存する所定のメモリ容量のバッファメモリが確保される作業用メモリと、
前記バッファメモリに一時保存された前記データを、前記各セクタに書き込んで保存する前記主記憶手段と、
を備え、
前記管理情報は、前記メモリ管理手段による前記主記憶手段への前記データの書き込みに伴って実行される、前記セクタの保存データのイレース処理に必要とするイレース時間を前記セクタごとに有し、
前記メモリ管理手段は、前記イレース時間に基づいて、前記作業用メモリに確保される前記バッファメモリのメモリ容量を設定する、
ことを特徴とする。
【発明の効果】
【0010】
本発明によれば、フラッシュメモリを、センサデータ等を蓄積するための主記憶手段として備えたメモリシステムにおける、書き込み用のデータを一時保存するバッファメモリのメモリ容量の増大を抑えることができる。
【図面の簡単な説明】
【0011】
図1】本発明に係るメモリシステムを備えた電子機器の一例を示す概略ブロック図である。
図2】実施形態に係るメモリシステムの制御方法(メインフロー)の一例を示すフローチャートである。
図3】一実施形態に係るメモリシステムの制御方法に適用される初期設定処理の一例を示すフローチャートである。
図4】一実施形態に適用される初期設定処理において作成されるセクタ管理テーブルの一例を示す図である。
図5】フラッシュメモリにおけるイレース回数とイレース時間との関係を示す特性図である。
図6】一実施形態に適用されるファイルオープン処理の一例を示すフローチャートある。
図7】一施形態に適用されるファイルライト処理の一例を示すフローチャート(その1)である。
図8】一施形態に適用されるファイルライト処理の一例を示すフローチャート(その2)である。
図9】一実施形態に適用されるファイルライト処理において実行されるイレース時間の取得処理の一例を示すフローチャートである。
図10】一実施形態に適用されるファイルクローズ処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明に係るメモリシステム、その制御方法及びプログラムについて、実施形態を示して詳しく説明する。ここでは、本発明に係るメモリシステムを、例えばスマートウォッチやスマートフォン、データロガーのような携帯型や装着型(いわゆる、ウェアラブル)の小型の電子機器であって、ユーザの身体の動きに関連する情報を収集して解析する電子機器に適用する場合について説明する。
<電子機器>
図1は、本発明に係るメモリシステムを備えた電子機器の一実施形態を示す概略ブロック図である。
本実施形態に係るメモリシステムを備えた電子機器100は、例えば図1に示すように、CPU110と、RAM120と、NOR型のフラッシュメモリ130と、センサ部140と、表示部150と、入力操作部160と、電源部170と、を有している。
【0013】
CPU110は、図示しないROM等のコンピュータ読み取り可能な記録媒体に記録されているプログラムを実行することにより、RAM120においてセンサ部140から継続的に出力されるデータ(センサデータ)をバッファリングするために確保されるバッファメモリのメモリ容量を動的に設定する動作や、RAM120にバッファリングされたデータをNOR型のフラッシュメモリ130に書き込む動作等を制御するメモリ制御手段である。また、CPU110は、プログラムを実行することによりセンサ部140におけるセンシング動作や、表示部150における各種の情報の表示動作、入力操作部160における入力操作に応じた処理動作等を制御する。ここで、CPU110において実行されるプログラムは、NOR型のフラッシュメモリ130に保存されているものであってもよい。
【0014】
また、本実施形態においては、CPU110として、少なくとも、周期的にセンシング動作を行うセンサ部140から出力されるデータをNOR型のフラッシュメモリ130に順次書き込んで蓄積する動作や、蓄積されたデータに基づく所望の解析処理、電子機器100の動作状態や解析結果等を表示部150に表示する動作等を実行できる程度の、比較的処理能力の低い(ローパフォーマンス)ものが適用される。ここで、処理能力が低いCPUは、一般に低い動作周波数で処理動作を実行すればよいため消費電力を低く(ローパワー)抑えることができる。
【0015】
RAM120は、CPU110においてプログラムを実行する際に使用するデータや生成されるデータ等を一時保存する作業用メモリである。特に、本実施形態においては、センサ部140から出力されるデータをフラッシュメモリ130に書き込む際に、フラッシュメモリ130の各セクタに設定されるイレース時間に基づいて、RAM120上にバッファメモリとして確保するメモリ容量が動的に設定される。また、本実施形態においては、RAM120は、バッファメモリとして確保できるメモリ容量が、フラッシュメモリ130におけるデータの読み書きを行う際の単位であるセクタのデータサイズよりも小さくなる場合がある、というメモリシステム又はマイクロコンピュータの構造上の制約を有しているものとする。ここで、このようなメモリ容量の制約を有するRAMとして、例えば、バッファリングの際に十分なメモリ容量を確保することができない場合がある小容量のRAMを適用した場合、一般にRAMを含む機器を小型化することができる。
【0016】
なお、図1においては、CPU110とRAM120とを別個の構成(CPU110に対して外付けされた独立した記憶手段)として示したが、本発明はこれに限定されるものではなく、プロセッサ(演算処理部)と内蔵RAMとを備えたワンチップマイコン(マイクロコンピュータ)の形態を有するものであってもよい。
【0017】
NOR型のフラッシュメモリ130は、主記憶手段であって、センサ部140から出力されるデータを所定の記憶領域に順次保存する。また、フラッシュメモリ130は、データの読み書きを行う際の単位である、各セクタについての管理情報を管理情報領域に保存している。この管理情報は、各セクタにおけるデータの保存状態やイレース処理に関連する情報を有し、後述するメモリシステムの制御方法の実行時に読み出されて、データをフラッシュメモリ130に書き込む際に使用されて適宜更新される。
【0018】
センサ部140は、ユーザの身体の動きに関連する物理的なデータや生体的なデータ、位置データ等のセンサデータを継続的に取得して出力する手段であって、例えば加速度センサやジャイロセンサ(角速度センサ)、地磁気センサ、気圧センサ、脈拍センサ、心拍センサ、GPS受信部等の検出手段を備えている。また、表示部150は、電子機器100の動作状態や解析結果等に関する情報を表示する手段であって、例えば液晶ディスプレイや有機ELディスプレイ等の表示手段が適用される。
【0019】
入力操作部160は、例えば電子機器100の筐体に設けられたボタンスイッチやタッチセンサ、表示部150の前面に設けられたタッチパネル等の入力手段であり、ユーザの入力操作に応じて各種の操作信号をCPU110に出力する。これにより、センサ部140における動作の設定や制御、表示部150に表示する項目や情報の選択や設定、電子機器100の電源のオン、オフ操作等が行われる。
【0020】
電源部170は、上述した電子機器100の各部に駆動電力を供給してそれぞれの機能を実現する。ここで、電源部170は、電子機器100の装着性や携帯性を損なわないように、例えば市販のボタン型電池等の一次電池や、リチウムイオン電池等の二次電池、その他、各種の環境発電技術による電源等を、単独で、あるいは、適宜組み合わせて適用することができる。
【0021】
<メモリシステムの制御方法>
次に、本実施形態に係る電子機器に適用されるメモリシステムの制御方法について図面を参照して説明する。ここで、本実施形態に係るメモリシステムの制御方法は、CPU110において所定のプログラムを実行することにより実現される。
【0022】
図2は、本実施形態に係るメモリシステムの制御方法(メインフロー)の一例を示すフローチャートであり、図3は、本実施形態に係るメモリシステムの制御方法に適用される初期設定処理の一例を示すフローチャートである。また、図4は、本実施形態に適用される初期設定処理において作成されるセクタ管理テーブルの一例を示す図であり、図5は、フラッシュメモリにおけるイレース回数とイレース時間との関係を示す特性図である。また、図6は、本実施形態に適用されるファイルオープン処理の一例を示すフローチャートであり、図7図8は、本実施形態に適用されるファイルライト処理の一例を示すフローチャートである。図9は、本実施形態に適用されるファイルライト処理において実行されるイレース時間の取得処理の一例を示すフローチャートであり、図10は、本実施形態に適用されるファイルクローズ処理の一例を示すフローチャートである。
【0023】
本実施形態に係る電子機器に適用されるメモリシステムの制御方法は、例えば図2に示すように、メインフローとして、概略、初期設定処理(ステップS102)と、ファイルオープン処理(ステップS104)と、ファイルライト処理(ステップS106)と、ファイルクローズ処理(ステップS108)と、が順次実行される。
【0024】
(初期設定処理)
本実施形態に適用されるメモリシステムの制御方法においては、まず、電子機器100のユーザにより装置電源がオンされ、CPU110において所定のプログラムが実行されると、まず、初期設定処理(ステップS102)が実行される。
【0025】
初期設定処理(ステップS102)においては、CPU110は、フラッシュメモリ130に設定された管理情報領域内に、フラッシュメモリ130におけるデータの読み書きを行う際の単位である、各セクタについての「イレース時間」の項目を設定する。具体的には、例えば図3のフローチャートに示すように、CPU110は、フラッシュメモリ130の管理情報領域から上記の項目を含む管理情報を読み出し(ステップS122)、RAM120上に図4に示すようなセクタ管理テーブルTable1を作成する(ステップS124)。その後、CPU110は、初期設定処理を終了して、図2に示したメインフローに戻る。
【0026】
なお、本実施形態においては、フラッシュメモリ130内に管理情報領域を設定したが、フラッシュメモリ130とは別の書き換え可能な不揮発性記憶媒体を用意し、当該不揮発性記憶媒体内に管理情報領域を設定しても良い。
【0027】
ここで、図4に示したセクタ管理テーブルTable1の「イレース時間」の項目には、各セクタにおける初期値として、例えば電子機器100のデータシートやカタログ等で規定されている工場出荷時のイレース時間(例えば450[ms])が初期値として設定されている。フラッシュメモリ130の各セクタ(例えば64[Kbyte])におけるイレース時間は、例えば図5に示すように、イレース回数の増加に伴って長くなる劣化特性を有するため、データサイズが例えば2[byte]に設定されている。
【0028】
なお、図5に示したイレース回数とイレース時間との関係を示す特性図においては、フラッシュメモリへのイレース回数が概ね数千回を超過すると、メモリ素子の劣化が急速に進行してイレース時間が著しく長くなる。そのため、一般に実製品においては、フラッシュメモリのイレース時間が略安定している範囲(すなわち、イレース回数が、工場出荷の時点である1回目から概ね1000回乃至数千回を超過しない範囲;以下、便宜的に「使用保証範囲」と記す)内での使用を保証している。
【0029】
また、図4に示したセクタ管理テーブルTable1の「セクタ使用状況」の項目には、各セクタにデータが書き込まれて使用されているか(「使用中:0x01」)、又は、書き込まれているが使用されていないか(「未使用:0xFF」)、又は、今後使用されない、或いは、使用頻度が非常に低いため不要になっているか(「不要データあり:0x00」)、のいずれかの状態が設定されている。ここで、不要データは、データ自体はフラッシュメモリ130のセクタに存在しているが、消去のためのフラグが設定されたデータであって、次回のデータ書き込み時に当該不要データを含むセクタが、セクタ単位でイレース処理の対象となる。このセクタ使用状況は、データサイズが例えば1[byte]に設定されている。
【0030】
(ファイルオープン処理)
次いで、ファイルオープン処理(ステップS104)においては、例えば図6のフローチャートに示すように、CPU110は、まず、フラッシュメモリ130へのデータの書き込み動作における1秒あたりに書き込むデータサイズD(例えば3~10[Kbyte]」)を指定する(ステップS142)。ここで、フラッシュメモリ130に対して1秒あたりに書き込むデータサイズDは、例えば、電子機器100において実行されるアプリケーションやセンサ部140において取得されるセンサデータのサイズやセンシング周波数等に基づいて予め設定されている。なお、電子機器100に複数のアプリケーションが搭載されていて、任意のアプリケーションを選択可能な場合には、選択されたアプリケーションに応じたデータサイズDが設定される。
【0031】
次いで、CPU110は、上述した初期設定処理において作成されたセクタ管理テーブルTable1に基づいて、フラッシュメモリ130にデータの書き込みが可能な空きセクタがあるか否かを判定する(ステップS144)。フラッシュメモリ130の全てのセクタにデータが書き込まれて空きセクタがない(Full)と判定した場合(ステップS144のNo)には、CPU110は、例えばユーザにフラッシュメモリ130へのデータの書き込みが不可能であることを報知する等の、所定のエラー処理(ステップS146)を実行する。このエラー処理においては、CPU110は、例えば表示部150に「書き込み不可/処理終了」等のエラー表示を行う。その後、CPU110は、図2に示したフラッシュメモリ130へのデータの書き込み処理(メインフロー)を終了する。
【0032】
一方、フラッシュメモリ130に空きセクタがあると判定した場合(ステップS144のYes)には、図2に示したメインフローに戻る。
なお、本実施形態においては、ステップS144において、空きセクタがない場合には、エラー処理(ステップS146)を実行してフラッシュメモリ130へのデータの書き込み処理(メインフロー)を終了する場合について説明したが、本発明はこれに限定されるものではない。例えばCPU110は、上述したセクタ管理テーブルTable1に、データ書き込み日時やデータの読み出し回数等の項目を設け、各セクタのうち、古いデータが書き込まれているセクタから、或いは、使用頻度が低いデータが書き込まれているセクタから順に、イレース処理を実行して空きセクタを確保するものであってもよい。
【0033】
(ファイルライト処理)
次いで、CPU110により、センサ部140から出力されるデータをフラッシュメモリ130に書き込む指示がされると、ファイルライト処理(ステップS106)が実行される。具体的には、例えば図7図8のフローチャートに示すように、CPU110は、まず、フラッシュメモリ130へのデータの書き込みに伴って実行されるイレース処理の所要時間(イレース時間)を計測するためのフラグ(計測フラグ)Flagが設定(SET)されているか否かを判定する(ステップS162)。計測フラグFlagが設定(SET)されている場合(ステップS162のYes)には、CPU110は、後述する図8のフローチャートに示すイレース処理の完了判定動作(ステップS192~)を実行する。
【0034】
一方、計測フラグFlagが設定(SET)されていない場合(ステップS162のNo)には、CPU110は、フラッシュメモリ130に書き込むデータサイズ(ステップS142で指定したデータサイズ)D[byte]が、現在データが書き込まれているセクタの残サイズ(空き容量)Wi[byte]よりも大きいか否かを判定する(ステップS164)。書き込むデータサイズDがセクタの残サイズWi以下の場合(ステップS164のNo)には、CPU110は、後述する図8のフローチャートに示すフラッシュメモリ130にデータを書き込む動作(ステップS200~)を実行する。
【0035】
一方、書き込むデータサイズDがセクタの残サイズWiよりも大きい場合(ステップS164のYes)には、CPU110は、書き込むデータのうち、セクタの残サイズWi分だけデータをバッファメモリBuf1にコピーした後、バッファメモリBuf1のデータをフラッシュメモリ130の該当するセクタに書き込む(ステップS166)。
【0036】
次いで、CPU110は、セクタ管理テーブルTable1に基づいて、フラッシュメモリ130にデータの書き込みが可能な空きセクタがあるか否かを判定する(ステップS168)。フラッシュメモリ130に空きセクタがないと判定した場合(ステップS168のNo)には、CPU110は、上述したステップS146と同様の所定のエラー処理(ステップS182)を実行した後、図2に示したメインフローを終了する。
【0037】
一方、フラッシュメモリ130に空きセクタがあると判定した場合(ステップS168のYes)には、イレース時間取得処理を実行する(ステップS170)。具体的には、例えば図9のフローチャートに示すように、CPU110は、まず、フラッシュメモリ130の空きセクタのうち、イレース時間が最も短い(最小の)セクタSECiを検索する(ステップS222)。
【0038】
次いで、CPU110は、セクタ管理テーブルTable1に基づいて、検索されたセクタSECiに不要データがあるか否かを判定する(ステップS224)。セクタSECiに不要データがない場合(ステップS224のNo)には、CPU110は、イレース時間取得処理を終了して、後述する図8のフローチャートに示すフラッシュメモリ130にデータを書き込む動作(ステップS200~)を実行する。すなわち、セクタSECiに不要データがない場合には、イレース処理を実行する必要がないので、ステップS166において書き込みが完了していない残量分のデータを、空きセクタSECiに書き込むことができる。この場合には、後述するイレース時間を計測、取得する処理を行う必要はない。
【0039】
一方、セクタSECiに不要データがある場合(ステップS224のYes)には、CPU110は、セクタ管理テーブルTable1に現時点で設定されているセクタSECiのイレース時間(すなわち、空きセクタの中で最小のイレース時間)を、ステップS166において書き込みが完了していない残量分のデータの書き込み動作において実行されるイレース処理のイレース時間T[s]に設定する(ステップS226)。その後、CPU110は、イレース時間取得処理を終了して、図7に示したファイルライト処理に戻る。
【0040】
次いで、CPU110は、上述したイレース時間取得処理(ステップS170)において設定されたイレース時間T[s]に基づいて、RAM120上にバッファメモリBuf1のメモリ容量Sを確保する(ステップS172)。具体的には、ファイルオープン処理(ステップS142)において指定されたデータサイズD[byte]に、イレース時間取得処理(ステップS170)において設定されたイレース時間T[s]を乗算して算出される下記のメモリ容量S[byte]でバッファメモリBuf1を確保する。
S=D×T
【0041】
ここで、上記のメモリ容量Sには、バッファリングするデータに対するマージンα[byte]が含まれている。また、本フローチャートには図示されていないが、確保されたメモリ容量Sが予め設定されている最大値を超過している場合には、CPU110は、所定のエラー処理(例えばステップS182)を実行した後、図2に示したメインフローを終了する。なお、バッファメモリBuf1のメモリ容量Sの最大値は、例えば、電子機器100において実行されるアプリケーションや、センサ部140において取得されるセンサデータのサイズやセンシング周波数等に基づいて、予め設定されている。また、電子機器100に複数のアプリケーションが搭載されていて、任意のアプリケーションを選択可能な場合には、選択されたアプリケーションに応じたメモリ容量Sの最大値が設定される。
【0042】
次いで、CPU110は、書き込むデータのうちステップS166において書き込みが完了していない残量分(D-Wi)のデータを、新たに確保されたバッファメモリBuf1にコピーした後(ステップS174)、セクタSECiに対してイレース処理を開始する(ステップS176)。このとき、CPU110は、イレース時間の計測を開始する(ステップS178)とともに、計測フラグFlagを設定(SET)する(ステップS180)。その後、CPU110は、図7に示したファイルライト処理の先頭ステップS162に戻る。
【0043】
ステップS162において、計測フラグFlagが設定(SET)されている場合(ステップS162のYes)には、CPU110は、例えば図8のフローチャートに示すように、セクタSECiに対するイレース処理が完了したか否かを判定する(ステップS192)。セクタSECiに対するイレース処理が完了していない状態で(すなわち、継続中に)、新たなデータの書き込みが指示された場合(ステップS192のNo)には、CPU110は、当該データをバッファメモリBuf1にコピーする(ステップS206)。このとき、コピーされたデータによりバッファメモリBuf1のメモリ容量が超過(オーバー)した場合(ステップS208のYes)には、CPU110は、所定のエラー処理(例えばステップS182)を実行した後、図2に示したメインフローを終了する。一方、コピーされたデータがバッファメモリBuf1のメモリ容量以下の場合(ステップS208のNo)には、CPU110は、後述するファイルライト処理の終了判断処理(ステップS204)を実行する。
【0044】
一方、ステップS192において、セクタSECiに対するイレース処理が完了した状態で、新たなデータの書き込みが指示された場合(ステップS192のYes)には、CPU110は、イレース時間の計測を終了して、イレース処理の開始から完了までの所要時間を取得する(ステップS194)。そして、CPU110は、取得したイレース時間を、セクタ管理テーブルTable1のセクタSECiの「イレース時間」の項目に書き込むことにより更新する(ステップS196)とともに、イレース時間の計測フラグFlagをリセット(RESET)する(ステップS198)。
【0045】
次いで、CPU110は、データをバッファメモリBuf1にコピーした後、フラッシュメモリ130の該当するセクタに、バッファメモリBuf1にコピーされたデータ、及び、今回書き込みが指示されたデータを書き込む(ステップS200)。そして、CPU110は、RAM120上に確保されているバッファメモリBuf1を解放する(ステップS202)。
【0046】
次いで、CPU110は、図7図8に示したファイルライト処理について終了判断を行い、終了トリガーが発生している場合(ステップS204のYes)には、ファイルライト処理を終了して、図2に示したメインフローに戻る。一方、終了トリガーが発生していない場合(ステップS204のNo)には、CPU110は、図7に示したファイルライト処理の先頭ステップS162に戻る。ここで、ファイルライト処理の終了を判断するためのトリガー(条件)としては、例えば、センサ部140のセンシング動作が中止又は終了されて、フラッシュメモリ130に継続して書き込むデータがない状態や、電子機器100の電源がオフ操作された状態等が検出された場合が適用される。
【0047】
(ファイルクローズ処理)
次いで、ファイルクローズ処理(ステップS108)においては、例えば図10のフローチャートに示すように、CPU110は、まず、バッファメモリBuf1にデータが残っているか否かを判定する(ステップS242)。バッファメモリBuf1にデータが残っている場合(ステップS242のYes)には、CPU110は、図7図8に示したファイルライト処理を実行して、当該データをフラッシュメモリ130に書き込み(ステップS244)、ファイルクローズ処理を終了して、図2に示したメインフローに戻る。一方、バッファメモリBuf1にデータが残っていない場合(ステップS242のNo)には、CPU110は、ファイルクローズ処理を終了して、図2に示したメインフローに戻る。
【0048】
次いで、CPU110は、上記の一連の処理により、フラッシュメモリ130の各セクタについて更新されたイレース時間を含む管理情報を、フラッシュメモリ130に設定された管理情報領域に書き込むことにより更新する(ステップS110)。以上により、図2に示したフラッシュメモリ130へのデータの書き込み処理(メインフロー)が終了する。
【0049】
このように、本実施形態においては、NOR型フラッシュメモリにおけるデータの読み書きを行う際に実行されるイレース処理の単位であるセクタごとに、イレース時間を計測し管理することにより、計測されたイレース時間に基づいて、NOR型フラッシュメモリへのデータの書き込み時にRAMに確保するバッファメモリのメモリ容量(メモリサイズ)が動的に設定される。また、データの書き込み時には、フラッシュメモリの空きセクタのうち、イレース時間が最も短いセクタに対してイレース処理を含むデータの書き込み動作が実行される。
【0050】
一般に、メモリシステムに用いられるRAMは、データ書き込み時に確保されるバッファメモリのメモリ容量が書き込まれるデータサイズに対して大きなサイズを有するように設定されている。ここで、図5に示したように、各セクタにおけるイレース処理の回数の増加や、メモリ素子の劣化のバラツキに起因してイレース時間が長くなることがあるため、予めバッファメモリとして確保するメモリ容量を必要以上に大きく設定する必要がある。そのため、RAMのメモリ資源の大半がデータ書き込み用のバッファメモリとして占有されることになり、機器における他の処理動作に十分なメモリ容量を割り当てることができない場合があった。
【0051】
これに対して、本実施形態においては、NOR型フラッシュメモリへのデータ書き込み時に各セクタにおけるイレース時間を計測することにより、図5に示した特性図において、メモリ素子の劣化が少なく、イレース時間が短くかつ略安定している状態(例えばイレース回数が概ね1000回乃至数千回程度までの範囲内;使用保証範囲内)では、バッファメモリとして確保されるメモリ容量を、計測されたイレース時間に応じて最適化されるように極力小さく設定(最小化)することができる。一方、イレース回数が増加してイレース時間が長くなった状態(使用保証範囲外)や、使用保証範囲内であってもメモリ素子の劣化のバラツキに起因してイレース時間が長くなった状態においては、バッファメモリとして確保されるメモリ容量を大きくなるように設定する必要があるが、計測されたイレース時間に応じて最適化(最小化)されるように設定することができる。すなわち、バッファメモリのメモリ容量の増大を抑えることができる。
【0052】
特に、上記の使用保証範囲内では、メモリ資源が限られたRAMにおいて、フラッシュメモリへのデータ書き込み動作以外の他の処理動作(例えば、収集したデータに基づく解析等)にも十分なメモリ容量を割り当てることができるので、RAMのメモリ資源を有効かつ効率的に利用することができる。加えて、本実施形態においては、RAMに確保されるバッファメモリのメモリ容量を、計測されたイレース時間に応じて最適化(最小化、すなわち、メモリ容量の増大を抑制)することができるので、メモリシステムとして小容量のRAMを備える(又は、内蔵する)処理能力が比較的低いCPUを用いた場合であっても、CPUの処理負担を軽減して処理動作の迅速化や省電力化を図ることができるとともに、機器サイズの大型化を抑制することができる。これにより、本発明は、NOR型フラッシュメモリを主記憶手段として備え、センサデータを継続的に保存するような、携帯型や装着型の小型の電子機器に有効に適用することができる。
【0053】
<変形例>
次に、上述した実施形態に示したメモリシステムの制御方法における変形性について説明する。
【0054】
上述した実施形態においては、メモリシステムの制御方法のファイルライト処理において、イレース処理の対象となるセクタについて計測されたイレース時間Tをそのまま用いて、RAM120上にバッファメモリとして確保するメモリ容量S(=D×T)を設定するとともに、セクタ管理テーブルTable1の対象となるセクタの「イレース時間」の項目を更新する場合について説明した。
【0055】
本変形例においては、イレース時間の計測時に生じる誤差を抑制するために、複数回計測されたイレース時間の平均値を計算したり、フィルタを用いて平均化したりする処理(平均化処理)を実行することにより、イレース時間の計測精度を向上させる手法を有している。
【0056】
図5に示したように、フラッシュメモリへのイレース回数が使用保証範囲内では、イレース時間は概ね450[ms]で略安定した状態で推移する。この状態において、計測されたイレース時間に比較的大きな変化が生じた場合、その原因は、図5に示すようなメモリ素子の劣化に伴うイレース時間の変移に起因するよりも、イレース時間の計測処理における誤差やバラツキに起因する可能性の方が大きい。特に、イレース時間の計測中に、センサ部140から出力されるデータをRAM120にバッファリングする動作のように、複数の処理動作が並行して実行される場合、CPU110の処理能力が低いと、処理動作に遅延が生じてイレース時間の計測処理に誤差やバラツキを生じることになる。そのため、このような計測誤差の影響を抑制するための手法として、上述したような平均化処理を実行することが有効となる。
【0057】
具体的には、本変形例においては、フラッシュメモリ130のセクタSECiに対する1回目のイレース処理の計測値については、そのままイレース時間Tとして用いて、バッファメモリのメモリ容量S(=D×T)を設定するとともに、セクタ管理テーブルTable1のセクタSECiの「イレース時間」の項目を更新する。次いで、2回目以降のイレース処理の計測値については、例えば1回目から今回までの計測値の平均値を計算し、その平均値をイレース時間Tavとして用いて、バッファメモリのメモリ容量S(=D×Tav)を設定するとともに、セクタ管理テーブルTable1のセクタSECiの「イレース時間」の項目を更新する。なお、上記のような複数回の計測値を使用した平均化処理を実現するために、セクタ管理テーブルの各セクタの「イレース時間」の項目に、過去の複数回分の計測値がイレース回数の情報とともに保持される。また、平均化処理の他の手法として、フィルタ回路(例えばローパスフィルタ)を用いて移動平均を算出する手法を用いることもでき、算出された移動平均値をイレース時間Tmavとして用いて、バッファメモリのメモリ容量S(=D×Tmav)が設定されるとともに、セクタ管理テーブルTable1のセクタSECiの「イレース時間」の項目が更新される。この場合においても、セクタ管理テーブルの各セクタの「イレース時間」の項目に、過去の複数回分の計測値が保持される。
【0058】
これにより、本変形例によれば、バッファメモリとして確保されるメモリ容量を、計測誤差の影響が抑制された正確なイレース時間に応じて最適化(最小化)されるように設定することができるので、RAMのメモリ資源をより有効かつ効率的に利用することができる。
【0059】
以上、本発明のいくつかの実施形態について説明したが、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲を含むものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【0060】
(付記)
[1]
フラッシュメモリである主記憶手段の各セクタに関する管理情報に基づいて、データを前記主記憶手段の各セクタに書き込んで保存する制御を行うメモリ管理手段と、
前記データを一時保存する所定のメモリ容量のバッファメモリが確保される作業用メモリと、
前記バッファメモリに一時保存された前記データを、前記各セクタに書き込んで保存する前記主記憶手段と、
を備え、
前記管理情報は、前記メモリ管理手段による前記主記憶手段への前記データの書き込みに伴って実行される、前記セクタの保存データのイレース処理に必要とするイレース時間を前記セクタごとに有し、
前記メモリ管理手段は、前記イレース時間に基づいて、前記作業用メモリに確保される前記バッファメモリのメモリ容量を設定する、
ことを特徴とするメモリシステム。
【0061】
[2]
前記メモリ管理手段は、前記イレース処理において、前記データの書き込み対象となっている前記セクタの前記イレース時間を計測して前記管理情報の前記イレース時間を更新することを特徴とする[1]に記載のメモリシステム。
【0062】
[3]
前記メモリ管理手段は、前記データの書き込み対象となっている前記セクタについて、複数回計測された前記イレース時間の平均値により前記管理情報の前記イレース時間を更新することを特徴とする[2]に記載のメモリシステム。
【0063】
[4]
前記管理情報は、前記主記憶手段に設定された管理情報領域に保存され、
前記メモリ管理手段は、前記主記憶手段への前記データの書き込みに先立って、前記主記憶手段の前記管理情報領域から前記管理情報を読み出して、前記作業用メモリに管理テーブルを作成し、前記管理テーブルに基づいて、前記データの書き込み、及び、前記保存データのイレース処理を実行することを特徴とする[1]乃至[3]のいずれかに記載のメモリシステム。
【0064】
[5]
前記主記憶手段は、NOR型のフラッシュメモリであることを特徴とする[1]乃至[4]のいずれかに記載のメモリシステム。
【0065】
[6]
前記データは、検出手段から継続的に出力されるセンサデータであることを特徴とする[1]乃至[5]のいずれかに記載のメモリシステム。
【0066】
[7]
データをフラッシュメモリである主記憶手段の各セクタに書き込んで保存する際に、
前記主記憶手段への前記データの書き込みに伴って実行される、前記セクタの保存データのイレース処理に必要とするイレース時間を前記セクタごとに有する管理情報に基づいて、前記データを一時保存する作業用メモリに確保されるバッファメモリのメモリ容量を設定し、
前記バッファメモリに一時保存された前記データを、前記各セクタに書き込んで保存する、
ことを特徴とするメモリシステムの制御方法。
【0067】
[8]
前記イレース処理において、前記データの書き込み対象となっている前記セクタの前記イレース時間を計測して前記管理情報の前記イレース時間を更新することを特徴とする[7]に記載のメモリシステムの制御方法。
【0068】
[9]
データをフラッシュメモリである主記憶手段の各セクタに書き込んで保存する制御を行うメモリシステムのプログラムであって、
前記メモリシステムを、
前記主記憶手段への前記データの書き込みに伴って実行される、前記セクタの保存データのイレース処理に必要とするイレース時間を前記セクタごとに有する管理情報に基づいて、前記データを一時保存する作業用メモリに確保されるバッファメモリのメモリ容量を設定するバッファメモリ確保手段、
前記バッファメモリに一時保存された前記データを、前記各セクタに書き込んで保存するデータ書き込み手段、
として機能させることを特徴とするメモリシステムのプログラム。
【0069】
[10]
前記メモリシステムを、
前記イレース処理において、前記データの書き込み対象となっている前記セクタの前記イレース時間を計測して前記管理情報の前記イレース時間を更新する管理情報更新手段、
としてさらに機能させることを特徴とする[9]に記載のメモリシステムのプログラム。
【符号の説明】
【0070】
100 電子機器
110 CPU(メモリ管理手段)
120 RAM(作業用メモリ)
130 フラッシュメモリ(主記憶手段)
140 センサ部(検出手段)
150 表示部
160 入力操作部
170 電源部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10