(57)【要約】【課題】ガベージコレクションの実行において、ファイル処理への影響を極力低減することが可能なメモリ制御装置を提供する。【解決手段】セクタ利用状況検出部１２１は、フラッシュメモリを構成する各セクタの利用状況をチェックして、空きセクタ数を検出する。ファイル情報管理部１２２は、フラッシュメモリに格納されている１又は複数のファイルの処理状態を検出し、検出した処理状態を、各ファイル毎に生成したファイル情報に格納して管理する。ガベージコレクション判定部１２３は、セクタ利用状況検出部１２１が検出した空きセクタ数と、ファイル情報管理部１２２が検出した各ファイルの処理状態と、に基づいて、フラッシュメモリに対するガベージコレクションの実行の要否を判定する。【選択図】図３
2011209963.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリに対するガベージコレクションの実行を制御するメモリ制御装置であって、
前記フラッシュメモリを構成する各セクタの利用状況をチェックして、空きセクタ数を検出するセクタ利用状況検出手段と、
前記フラッシュメモリに格納されている１又は複数のファイルの処理状態を検出し、検出した処理状態を、各ファイル毎に生成したファイル情報に格納して管理するファイル情報管理手段と、
前記セクタ利用状況検出手段が検出した前記空きセクタ数と、前記ファイル情報管理手段が検出した前記各ファイルの処理状態と、に基づいて、前記フラッシュメモリに対するガベージコレクションの実行の要否を判定するガベージコレクション判定手段と、を備える、
ことを特徴とするメモリ制御装置。
【請求項２】
前記ファイル情報管理手段は、前記フラッシュメモリに格納されている１又は複数のファイルのそれぞれについて、現在オープン中であるか否かを検出し、
前記ガベージコレクション判定手段は、前記セクタ利用状況検出手段が検出した前記空きセクタ数が、予め定めた下限値と該下限値より大きい許容値との間にあり、現在オープン中のファイルが存在しない場合には、前記ガベージコレクションの実行が必要であると判定する、
ことを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記ファイル情報管理手段が管理するファイル情報には、各ファイル毎に付与された優先度が含まれ、
前記ガベージコレクション判定手段は、前記セクタ利用状況検出手段が検出した前記空きセクタ数の値が、予め定めた下限値と該下限値より大きい許容値との間にあり、現在オープン中のファイルが存在する場合には、当該ファイルに付与された前記優先度に基づいて、前記ガベージコレクションの実行の要否を判定する、
ことを特徴とする請求項１に記載のメモリ制御装置。
【請求項４】
前記下限値は、前記フラッシュメモリを構成するブロックのセクタ総数である、
ことを特徴とする請求項２又は３に記載のメモリ制御装置。
【請求項５】
フラッシュメモリに対するガベージコレクションの実行を制御するメモリ制御方法であって、
前記フラッシュメモリを構成する各セクタの利用状況をチェックして、空きセクタ数を検出するセクタ利用状況検出ステップと、
前記フラッシュメモリに格納されている１又は複数のファイルの処理状態を検出し、検出した処理状態を、各ファイル毎に生成したファイル情報に格納して管理するファイル情報管理ステップと、
前記セクタ利用状況検出ステップで検出された前記空きセクタ数と、前記ファイル情報管理ステップで検出された前記各ファイルの処理状態と、に基づいて、前記フラッシュメモリに対するガベージコレクションの実行の要否を判定するガベージコレクション判定ステップと、を有する、
ことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを制御する技術に関し、特に、ガベージコレクションの実行タイミングを制御する技術に関する。
【背景技術】
【０００２】
近年、不揮発性の記録媒体であるフラッシュメモリは、パーソナルコンピュータ等の情報処理装置、携帯電話やデジタルカメラ等、様々な電子機器で使用されている。フラッシュメモリでは、上書き動作が行えないため、更新データは、空いている（未使用）の別のセクタに書き込まれると共に、元（更新前）のデータが格納されていたセクタの状態（フラグ）は、“削除”に更新される。また、フラッシュメモリでは、データの消去は、ブロック単位で行なわれる。したがって、“削除”セクタの多いブロック内のライト（使用中）セクタを他のブロックに移動させ、未使用ブロックとする処理（ガベージコレクション）を定期的に実行する必要がある。
【０００３】
これに関し、特許文献１では、フラッシュメモリをファイルシステムに適応させることが可能な管理方式において、各消去単位毎の消去回数のばらつきを減少させることを目的とした技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−９７２１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の開示技術では、ガベージコレクションは、ファイルシステムを利用するアプリケーションとは独立に動作するため、データの書き込みあるいは読み出し中に、ガベージコレクションが発生することによって、ファイル処理の速度に支障を来す可能性があるという問題があった。
【０００６】
本発明では、ファイル処理の状況等を加味して、フラッシュメモリにおけるガベージコレクションの実行を制御することで、ファイル処理への影響を極力低減することが可能なメモリ制御装置及びメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係るメモリ制御装置は、
フラッシュメモリに対するガベージコレクションの実行を制御するメモリ制御装置であって、
前記フラッシュメモリを構成する各セクタの利用状況をチェックして、空きセクタ数を検出するセクタ利用状況検出手段と、
前記フラッシュメモリに格納されている１又は複数のファイルの処理状態を検出し、検出した処理状態を、各ファイル毎に生成したファイル情報に格納して管理するファイル情報管理手段と、
前記セクタ利用状況検出手段が検出した前記空きセクタ数と、前記ファイル情報管理手段が検出した前記各ファイルの処理状態と、に基づいて、前記フラッシュメモリに対するガベージコレクションの実行の要否を判定するガベージコレクション判定手段と、を備える、ことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ファイル処理への影響を極力低減しつつ、フラッシュメモリの空き容量を確保することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態１に係るメモリ制御装置を備える電子機器の構成を示すブロック図である。
【図２】図１のフラッシュメモリのメモリ構造を概略的に示す図である。
【図３】図１のＣＰＵ（メモリ制御装置）の機能構成を示すブロック図である。
【図４】実施形態１のファイル情報の構成を示す図である。
【図５】実施形態１のガベージコレクション実行処理の手順を示すフローチャートである。
【図６】実施形態２のファイル情報の構成を示す図である。
【図７】実施形態２のガベージコレクション実行処理の手順を示すフローチャートである。
【図８】他の実施形態において使用されるコピー元情報の構成を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態に係るメモリ制御装置について図面を参照して詳細に説明する。
【００１１】
（実施形態１）
図１は、実施形態１に係るメモリ制御装置を備える電子機器１の構成を示すブロック図である。この電子機器１は、例えば、パーソナルコンピュータ等の情報処理装置である。電子機器１は、ＣＰＵ（Central Processing Unit）１１（メモリ制御装置）と、ＲＯＭ（Read Only Memory）１２と、ＲＡＭ（Random Access Memory）１３と、フラッシュメモリ１４と、入力部１５と、表示部１６と、を備える。
【００１２】
ＣＰＵ１１は、バス１７を介して、ＲＯＭ１２、ＲＡＭ１３、フラッシュメモリ１４、入力部１５及び表示部１６を制御し、それに付随して、これらとの間でデータの授受を行う。
【００１３】
ＲＯＭ１２には、ＣＰＵ１１が実行する各種の動作プログラム等が格納されている。ＲＡＭ１３は、動作プログラムやデータ等が一時的に保存される作業用メモリ等として使用される。
【００１４】
入力部１５は、キーボードやマウス等の入力デバイスから構成され、ユーザからの操作入力（例えば、ファイル操作に係る入力）を受け付け、受け付けた信号（操作信号）をＣＰＵ１１に送出する。表示部１６は、ＣＲＴや液晶モニタ等の表示デバイスにより構成され、ＣＰＵ１１から供給される文字や画像等のデータを表示する。
【００１５】
フラッシュメモリ１４は、不揮発性メモリであり、レジスタと、メモリセルアレイと、から構成される。フラッシュメモリ１４は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００１６】
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００１７】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。この２つのゲートは、それぞれ、制御（コントロール）ゲート、浮遊（フローティング）ゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００１８】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となるように電圧を印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となるよう電圧を印加する。
【００１９】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００２０】
このようなフラッシュメモリ１４のメモリ構造を図２に示す。フラッシュメモリ１４のメモリ領域は、“ページ”と“ブロック”に分割されて管理されている。
【００２１】
ページは、フラッシュメモリ１４にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。ブロックは、フラッシュメモリ１４にて行われるデータ消去動作における処理単位である。
【００２２】
図２に示したフラッシュメモリでは、１つのページは、１セクタ（５１２バイト）のデータ領域と、１６バイトの冗長領域とを含んでいる。尚、１つのページが４セクタのデータ領域と６４バイトの冗長領域で構成されているフラッシュメモリもある。データ領域は、ファイル処理等の際に、ＣＰＵ１１から供給されたデータを格納する。なお、図２は、フラッシュメモリ１４のメモリ構造を概略的に示すものであり、図示はしないが、各ブロックは、所定サイズのヘッダ領域を備えている。
【００２３】
冗長領域は、エラーコレクションコード、対応論理ブロックアドレス、ページの利用状況を示す情報（利用フラグ）等の付加データを記録するための領域である。
【００２４】
エラーコレクションコードは、データ領域に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
【００２５】
対応論理ブロックアドレスは、１つのブロック内の少なくとも１つのデータ領域に有効なデータが格納されているとき、そのブロックが対応付けられている論理ブロックのアドレスを示す。
【００２６】
論理ブロックアドレスは、ＣＰＵ１１から与えられるアドレスに基づいて決定されるブロックのアドレスである。一方、フラッシュメモリ１４内における実際のブロックのアドレスは、物理ブロックアドレスと称される。
【００２７】
１つのブロック内の何れのデータ領域にも有効なデータが格納されていない場合には、そのブロックに含まれている冗長領域に、対応論理ブロックアドレスは格納されていないことになる。
【００２８】
したがって、冗長領域に対応論理ブロックアドレスが格納されているか否かを判定することにより、その冗長領域が含まれているブロックのデータが消去されているか否かを判定することができる。冗長領域に対応論理ブロックアドレスが格納されていないとき、そのブロックは、データが消去された状態となっている。
【００２９】
利用フラグは、各セクタの利用状況を示す。例えば、「未使用」、「移動中」、「使用中」、「削除」等を示す。例えば、ブロックが消去された直後は全てのセクタにおいて、利用フラグは「未使用」を示す。
【００３０】
ブロックは、フラッシュメモリ１４の消去の単位である。フラッシュメモリ１４にデータを新規に書き込む場合には、データのサイズに対応する複数の消去された（即ち、「未使用」の）セクタを確保し、データの書き込みを行う。また、データの上書きの際には、「未使用」のセクタに当該データを書き込み、そして、元のデータが格納されているセクタの冗長領域を更新する。これにより、元のデータが格納されているセクタの利用フラグは、「削除」に更新される。
【００３１】
フラッシュメモリ１４に対して、上記の方法によりデータの書き込みを続けていると、実際に利用しているセクタ（利用フラグが「使用中」のセクタ）が、たとえ増えなくとも、利用フラグが「削除」を示すセクタが増えることになる。そこで、ＣＰＵ１１は、利用フラグが「削除」を示すセクタを「未使用」に戻し、空き容量を増加させる処理（ガベージコレクション）を適宜実行する必要がある。
【００３２】
ＣＰＵ１１は、機能的には、図３に示すように、アプリケーション実行部１１０と、ファイルシステム制御部１２０と、を備える。アプリケーション実行部１１０は、ＲＯＭ１２に格納されている所定のアプリケーションプログラム（例えば、文書作成ソフトウェア等）を実行する。アプリケーション実行部１１０は、当該アプリケーションプログラムの実行の際、例えば、ファイルのオープン、データの読み出し・書き込み、ファイルの削除等の実行をファイルシステム制御部１２０に要求する。
【００３３】
ファイルシステム制御部１２０は、フラッシュメモリ１４に記録されているファイルの制御を行う。具体的には、ファイルシステム制御部１２０は、フラッシュメモリ１４へのファイルの作成、読み出し・書き込み、ファイルの削除等を行う。また、ファイルシステム制御部１２０は、所定の条件の下、ガベージコレクションを実行する。
【００３４】
ファイルシステム制御部１２０は、より詳細には、図３に示すように、セクタ利用状況検出部１２１と、ファイル情報管理部１２２と、ガベージコレクション判定部１２３と、メモリ制御部１２４と、を備える。
【００３５】
セクタ利用状況検出部１２１は、所定時間毎に、フラッシュメモリ１４における各セクタの利用状況をチェックして、空き（即ち、「未使用」の）セクタ数を検出し、これをＲＡＭ１３上に展開した変数に格納する。
【００３６】
ファイル情報管理部１２２は、作成したファイルについての情報（ファイル情報）を管理する。具体的には、ファイル情報管理部１２２は、図４に示すように、ファイル名と、処理状態と、から構成されるファイル情報がエントリされたファイル情報テーブル（ＲＡＭ１３上に展開される）を管理する。ファイル情報管理部１２２は、新たなファイルが作成されると、当該ファイルのファイル情報をファイル情報テーブルにエントリする。ここで、「処理状態」とは、当該ファイルの現在の状況（例えば、“オープン”、“クローズ”等）を示す情報であり、ファイル情報管理部１２２は、当該ファイルの処理状態が変化する（例えば、“オープン”→“クローズ”）度に、この「処理状態」を更新する。ファイル情報管理部１２２は、あるファイルがフラッシュメモリ１４から削除されると、対応するファイル情報をファイル情報テーブルから削除する。
【００３７】
ガベージコレクション判定部１２３は、所定時間毎に、ガベージコレクション実行の要否、即ち、ガベージコレクションを実行する必要があるか否かについて判定する。その際、ガベージコレクション判定部１２３は、セクタ利用状況検出部１２１が検出した空きセクタ数と、ファイル情報管理部１２２が管理するファイル情報テーブルを参照して、ガベージコレクション実行の要否を判定する。
【００３８】
本実施形態では、空きセクタ数が、予め定めた下限値（例えば、ブロック内のセクタ数（本実施形態では、３２））以下の場合、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要であると判定する。また、空きセクタ数が下限値より大きく、予め定めた許容値（例えば、ブロック内のセクタ数×２（本実施形態では、６４））以下の場合は、オープンしているファイルが存在しない場合に限り、ガベージコレクションの実行が必要であると判定する。ガベージコレクションの実行が必要であると判定すると、ガベージコレクション判定部１２３は、ガベージコレクションの実行をメモリ制御部１２４に要求する
【００３９】
ガベージコレクション判定部１２３は、以上の条件が何れも成立しない場合、ガベージコレクションの実行が必要でないと判定する。
【００４０】
メモリ制御部１２４は、アプリケーションプログラム実行部１１０からの要求に従ってフラッシュメモリ１４にアクセスし、ファイルの作成、ファイルのオープン、データの読み出し・書き込み、ファイルの削除等を実行する。また、メモリ制御部１２４は、ガベージコレクション判定部１２３からの要求に従って、ガベージコレクションを実行する。
【００４１】
図５は、ＣＰＵ１１が実行するガベージコレクション実行処理の手順を示すフローチャートである。このガベージコレクション実行処理は、ユーザにより電子機器１の電源がＯＮされ、ＣＰＵ１１が起動することで開始され、電子機器１の電源がＯＦＦされるまで、周期的に以下の処理を繰り返し行う。
【００４２】
先ず、ガベージコレクション判定部１２３は、セクタ利用状況検出部１２１が検出した空きセクタ数が、上述した許容値を超えている否かを判定する（ステップＳ１０１）。その結果、空きセクタ数が許容値を超えている場合（ステップＳ１０１；ＹＥＳ）、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要でないと判定する。その結果、当該処理ループでガベージコレクションは実行されず、所定時間のウエイト（ステップＳ１０５）後、ガベージコレクション判定部１２３は、上述したステップＳ１０１の処理を再度実行する。
【００４３】
一方、空きセクタ数が許容値を超えていない、即ち、空きセクタ数が許容値以下の場合（ステップＳ１０１；ＮＯ）、ガベージコレクション判定部１２３は、空きセクタ数が、上述した下限値を超えている否かを判定する（ステップＳ１０２）。その結果、空きセクタ数が下限値を超えていない、即ち、空きセクタ数が下限値以下の場合（ステップＳ１０２；ＮＯ）、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要であると判定し、ガベージコレクションの実行をメモリ制御部１２４に要求する。
【００４４】
メモリ制御部１２４は、ガベージコレクションの実行要求をガベージコレクション判定部１２３から受けると、ガベージコレクションを実行する（ステップＳ１０４）。具体的には、メモリ制御部１２４は、利用フラグが「削除」を示すセクタを最も多く含むブロックをフラッシュメモリ１４全体から検索し、該当するブロックを消去対象ブロックとして決定する。そして、消去対象ブロック中の利用フラグが「使用中」を示す全セクタについて、その内容（データ領域及び冗長領域の内容）を他のブロックの空きセクタにコピーする。
【００４５】
次に、メモリ制御部１２４は、消去対象ブロックに格納されている全データを消去し、消去対象ブロックの全てのセクタの利用フラグを「未使用」に設定する。以上によりガベージコレクションが終了する。なお、消去対象ブロックが複数存在する場合には、当該ガベージコレクションで、全ての消去対象ブロックについて、上記の処理を行う。このように、複数の消去対象ブロックを消去できるようにすると、１回のガベージコレクションの実行で、より多くの空き容量を確保することが可能になる。
【００４６】
ガベージコレクションが終了すると、所定時間のウエイト（ステップＳ１０５）後、ガベージコレクション判定部１２３は、上述したステップＳ１０１の処理を再度実行する。
【００４７】
ステップＳ１０２の判定の結果、空きセクタ数が下限値を超えている場合（ステップＳ１０２；ＹＥＳ）、ガベージコレクション判定部１２３は、ファイル情報テーブルを参照して、現在オープン中のファイルが存在するか否かを判定する（ステップＳ１０３）。その結果、オープン中のファイルが存在する場合（ステップＳ１０３；ＹＥＳ）、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要でないと判定し、所定時間のウエイト（ステップＳ１０５）後、上述したステップＳ１０１の処理を再度実行する。
【００４８】
一方、オープン中のファイルが存在しない場合（ステップＳ１０３；ＮＯ）、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要である判定し、その結果、メモリ制御部１２４により上述したガベージコレクションが実行される（ステップＳ１０４）。そして、ガベージコレクションが終了すると、所定時間のウエイト（ステップＳ１０５）後、ガベージコレクション判定部１２３は、上述したステップＳ１０１の処理を再度実行する。
【００４９】
以上説明したように、本実施形態に係るメモリ制御装置（ＣＰＵ１１）は、単に定期的にガベージコレクションを実行するのではなく、空きセクタの数やファイル処理の状況に基づく所定の条件が成立する場合に、ガベージコレクションを実行する。即ち、空き容量が十分確保できている場合（許容値を超えている場合）には、ガベージコレクションを実行せず、また、空き容量が十分とはいえないまでも下限値（限界値）を超えている場合は、ファイルがオープン中でない場合に限り、ガベージコレクションを実行する。これにより、ファイル処理への影響を極力低減しつつ、フラッシュメモリの空き容量を確保することが可能となる。
【００５０】
（実施形態２）
次に、本発明の実施形態２に係るメモリ制御装置について説明する。実施形態１のメモリ制御装置（ＣＰＵ１１）では、空き容量が下限値から許容値の間で、何れかのファイルがオープンしている場合、ガベージコレクションを実行しなかった。しかし、本実施形態のメモリ制御装置は、このような場合、さらに、予めファイル毎に付与した優先度も加味して、ガベージコレクションの実行の要否を判定する。なお、本実施形態のメモリ制御装置の構成は、実施形態１のメモリ制御装置（ＣＰＵ１１）の構成（図３参照）と同様であり、本実施形態のメモリ制御装置を備える電子機器の構成も実施形態１の電子機器１の構成（図１参照）と同様である。
【００５１】
本実施形態のファイル情報管理部１２２は、図６に示すように、ファイル名と、処理状態と、優先度と、から構成されるファイル情報がエントリされたファイル情報テーブル（ＲＡＭ１３上に展開される）を管理する。ここで、「処理状態」の意味については、上述した通りである。「優先度」は、例えば、数値で示され、空き容量が下限値から許容値の間で当該ファイルがオープンしている場合、ガベージコレクションの実行の要否を判定する指標となる。「優先度」は、新規ファイルが作成される度に、ユーザが入力部１５を介して入力操作することで、当該新規作成ファイルに付与されるようにしてもよいし、あるいは、新規作成されるファイルの種別に応じて、ファイルシステム制御部１２０が自動的に当該新規作成ファイルに付与してもよい。
【００５２】
図７は、本実施形態のＣＰＵ１１が実行するガベージコレクション実行処理の手順を示すフローチャートである。このガベージコレクション実行処理は、実施形態１と同様、ユーザにより電子機器１の電源がＯＮされ、ＣＰＵ１１が起動することで開始され、電子機器１の電源がＯＦＦされるまで、周期的に以下の処理を繰り返し行う。
【００５３】
先ず、ガベージコレクション判定部１２３は、セクタ利用状況検出部１２１が検出した空きセクタ数が、予め定めた許容値（例えば、ブロック内のセクタ数×２（本実施形態では、６４））を超えている否かを判定する（ステップＳ２０１）。その結果、空きセクタ数が許容値を超えている場合（ステップＳ２０１；ＹＥＳ）、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要でないと判定し、所定時間のウエイト（ステップＳ２０６）後、ステップＳ２０１の処理を再度実行する。
【００５４】
一方、空きセクタ数が許容値を超えていない場合（ステップＳ２０１；ＮＯ）、ガベージコレクション判定部１２３は、空きセクタ数が、予め定めた下限値（例えば、ブロック内のセクタ数（本実施形態では、３２））を超えている否かを判定する（ステップＳ２０２）。その結果、空きセクタ数が下限値を超えていない場合（ステップＳ２０２；ＮＯ）、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要であると判定し、その結果、メモリ制御部１２４によりガベージガベージコレクションが実行される（ステップＳ２０４）。
【００５５】
一方、空きセクタ数が下限値を超えている場合（ステップＳ２０２；ＹＥＳ）、ガベージコレクション判定部１２３は、ファイル情報テーブルを参照して、現在オープン中のファイルが存在するか否かを判定する（ステップＳ２０３）。その結果、オープン中のファイルが存在しない場合（ステップＳ２０３；ＮＯ）、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要であると判定し、その結果、メモリ制御部１２４によりガベージガベージコレクションが実行される（ステップＳ２０４）。
【００５６】
一方、オープン中のファイルが存在する場合（ステップＳ２０３；ＹＥＳ）、ガベージコレクション判定部１２３は、ファイル情報テーブルを参照して、当該オープン中のファイルの優先度を取得し、これが、予め定めた基準値より小さいか否かを判定する（ステップＳ２０５）。その結果、当該ファイルの優先度が基準値より小さい場合（ステップＳ２０５；ＹＥＳ）、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要であると判定し、その結果、メモリ制御部１２４によりガベージガベージコレクションが実行される（ステップＳ２０４）。
【００５７】
一方、当該ファイルの優先度が基準値より小さくない、即ち、基準値以上の場合（ステップＳ２０５；ＮＯ）、ガベージコレクション判定部１２３は、ガベージコレクションの実行が必要でないと判定し、所定時間のウエイト（ステップＳ２０６）後、ステップＳ２０１の処理を再度実行する。
【００５８】
また、上記ステップＳ２０４の処理が終了すると、所定時間のウエイト（ステップＳ２０６）後、ガベージコレクション判定部１２３は、上述したステップＳ２０１の処理を再度実行する。
【００５９】
以上のように、本実施形態に係るメモリ制御装置（ＣＰＵ１１）は、オープン中のファイルの優先度も加味して、ガベージコレクションの実行の要否を判定する。したがって、実施形態１のメモリ制御装置と同様の効果を奏する上、ユーザにとってより都合のよいタイミングでガベージコレクションを実行させることが可能になる。
【００６０】
なお、本発明は、上記の各実施形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
【００６１】
例えば、ガベージコレクションの実行の要否を判定する条件は、上記実施形態に限定されず、ユーザは、ファイル処理への影響を極力低減できるようにするための任意の条件を設定することができる。例えば、ファイルシステム制御部１２０において、ファイル情報管理部１２２により管理されるファイル情報に、図４又は図６で示す構成に加え、当該ファイルのデータが格納されているセクタの情報が含まれていてもよい。この場合、実施形態２のガベージコレクション実行処理（図７参照）において、ガベージコレクション判定部１２３は、例えば、優先度の低いファイルがオープン中であっても（ステップＳ２０５；ＹＥＳ）、消去対象ブロックに当該ファイルのデータが格納されている場合には、ガベージコレクションの実行が必要でないと判定してもよい。
【００６２】
また、消去対象ブロックが複数存在する場合、１回のガベージコレクションで、全ての消去対象ブロックを消去するのではなく、１つずつ消去する仕様にしてもよい。このようにすると、ファイル処理の速度低下をより抑えることができる。
【００６３】
また、不意の電源断等により、ガベージコレクションが中断された場合の対策機能を上記実施形態のメモリ制御装置に追加してもよい。この機能では、フラッシュメモリ１４の各ブロックのヘッダ領域における所定領域を、図８に示すコピー元情報を格納するための領域として使用する。コピー元情報は、ガベージコレクションの実行時において、コピー元のセクタ（消去対象ブロックにおけるセクタ）の情報を格納するために使用される。図８に示すように、コピー元情報の格納領域は、ブロック内のセクタ数分（本実施形態では、３２）確保され、当該領域の先頭から順に、セクタ０に対応するコピー元情報の格納領域、セクタ１に対応するコピー元情報の格納領域、・・・、セクタ３１に対応するコピー元情報の格納領域となる。
【００６４】
コピー元情報は、コピー元ブロック番号と、コピー元セクタ番号と、コピー状態と、から構成され、それぞれ、例えば、４バイトの領域が確保されている。「コピー元ブロック番号」には、コピー元のブロック番号、即ち、ガベージコレクション時における消去対象ブロックのブロック番号が格納される。「コピー元セクタ番号」には、コピー元のセクタ番号が格納される。「コピー状態」には、ガベージコレクション時において、当該セクタ（コピー先のセクタ）へのコピーが完了したか否かの情報が格納される。
【００６５】
メモリ制御部１２４は、ガベージコレクションの実行時において、コピー先のセクタを決定すると、当該コピー先のセクタに対応するコピー元情報の「コピー元ブロック番号」、「コピー元セクタ番号」及び「コピー状態」に、それぞれ、当該消去対象ブロックのブロック番号、コピー元のセクタ番号及びコピーが完了していないことを示す情報（以下、“未完”という）を格納する。そして、メモリ制御部１２４は、コピー元のセクタの内容をコピー先のセクタに書き込むと、当該コピー先のセクタに対応するコピー元情報の「コピー状態」に、コピーが完了したことを示す情報（以下、“完”という）を格納する。
【００６６】
例えば、何らかの理由により、電子機器１の電源がＯＦＦにされ、ガベージコレクションの実行が中断したとする。この場合、再起動すると、空きセクタ数が少ないため、メモリ制御部１２４によって、ガベージコレクションが再度実行されることになる。この例におけるメモリ制御部１２４は、ガベージコレクションを開始する際、先ず、コピー元情報の「コピー状態」に“未完”が格納されているブロックを検索する。その結果、該当するブロックがあれば、そのブロックの当該コピー元情報に対応するセクタへのコピー中に、ガベージコレクションが中断したことが判る。
【００６７】
したがって、この場合、メモリ制御部１２４は、当該コピー元情報に対応するセクタの利用フラグを「削除」に更新すると共に、新たな空きセクタを探し、その空きセクタに当該コピー元のセクタの内容をコピーする。
【００６８】
以上のように、各ブロック毎にコピー元情報を格納するための領域を確保し、これをガベージコレクションの実行時に使用することで、例えば、不意の電源断により、ガベージコレクションが中断された場合であっても、再起動後に、ガベージコレクションを支障なく再開することができる。
【産業上の利用可能性】
【００６９】
本発明は、パーソナルコンピュータ等の情報処理装置、携帯電話やデジタルカメラ等、フラッシュメモリを利用する様々な電子機器に好適に採用され得る。
【符号の説明】
【００７０】
１  電子機器
１１  ＣＰＵ（メモリ制御装置）
１１０  アプリケーション実行部
１２０  ファイルシステム制御部
１２１  セクタ利用状況検出部
１２２  ファイル情報管理部
１２３  ガベージコレクション判定部
１２４  メモリ制御部
１２  ＲＯＭ
１３  ＲＡＭ
１４  フラッシュメモリ
１５  入力部
１６  表示部
１７  バス
【図１】
2011209963.tif 000003
【図２】
2011209963.tif 000004
【図３】
2011209963.tif 000005
【図４】
2011209963.tif 000006
【図５】
2011209963.tif 000007
【図６】
2011209963.tif 000008
【図７】
2011209963.tif 000009
【図８】
2011209963.tif 000010