(57)【特許請求の範囲】
【請求項１】
指定された論理アドレスを物理アドレスに変換してアクセスを行うフラッシュメモリシステムであって、
相互に独立してアクセスとフォーマットが可能な複数のドライブ部に分割可能なメモリ部と、
前記メモリ部の分割された複数のドライブ部へのアクセスを上記論理アドレスにより判定して制御する制御手段とを有し、
前記メモリ部には、第１種のデータと当該第１種のデータに比べて更新の頻度が少ない第２種のデータとが別々のドライブ部に格納され、
前記第１種のデータが格納されているドライブ部は、前記第２種のデータが格納されているドライブ部に比べて低容量とする
ことを特徴とするフラッシュメモリシステム。
【請求項２】
指定された論理アドレスを物理アドレスに変換してアクセスを行うフラッシュメモリシステムを有する電子機器であって、
前記フラッシュメモリシステムは、
相互に独立してアクセスとフォーマットが可能な複数のドライブ部に分割可能なメモリ部と、
前記メモリ部の分割された複数のドライブ部へのアクセスを上記論理アドレスにより判定して制御する制御手段とを有し、
前記メモリ部には、第１種のデータと当該第１種のデータに比べて更新の頻度が少ない第２種のデータとが別々のドライブ部に格納され、
前記第１種のデータが格納されているドライブ部は、前記第２種のデータが格納されているドライブ部に比べて低容量とする
ことを特徴とする電子機器。
【請求項３】
無線通信機能を有する携帯端末装置であって、
当該端末装置の動作を統括して制御を行う制御部と、
前記制御部からの要求を受け付け、指定された論理アドレスを物理アドレスに変換してアクセスを行うフラッシュメモリシステムとを有し、
前記フラッシュメモリシステムは、
相互に独立してアクセスとフォーマットが可能な複数のドライブ部に分割可能なメモリ部と、
前記メモリ部の分割された複数のドライブ部へのアクセスを上記論理アドレスにより判定して制御する制御手段と、を有し、
前記メモリ部には、第１種のデータと当該第１種のデータに比べて更新の頻度が少ない第２種のデータとが別々のドライブ部に格納され、
前記第１種のデータが格納されているドライブ部は、前記第２種のデータが格納されているドライブ部に比べて低容量とする
ことを特徴とする携帯端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリシステム、電子機器、およびそれを備えた携帯端末装置に関するものである。
【背景技術】
【０００２】
従来からセクタ管理情報とブロック管理情報とに基づいてブロック単位でのデータの書き込み及びセクタ単位でのデータの一括消去を含むアクセス制御を行い、セクタ消去回数に基づいてデータの書き込み対象のセクタを選択するフラッシュメモリ制御方法が知られている。
これは、セクタ消去回数の最も少ないセクタを選択してデータ書き込みを行うものである（たとえば、特許文献１参照）。
【０００３】
しかしながら、特許文献１に示す制御方法にあっては、書き込みをするとき、必ずしもセクタ消去回数が少ないセクタが空き容量の多いセクタとは限らないため、このセクタに空きが少ないにもかかわらず書き込みを実行し、容量が足りない場合、他の領域を見ることなしにこのセクタをガーベッジコレクションしなければならない。
このため、このガーベッジコレクションを実行することにより処理速度が遅くなるという問題がある。特に、特許文献１に示す制御方法は、書き込み時にガーベッジコレクションを実行する可能性が高いため、データ書き込みの処理時間が長くなるという問題がある。
【０００４】
このような問題を解消するためのデータ管理システムとして、フラッシュメモリシステム（ＦＭＳ）が提案されている（たとえば特許文献２参照）。
【０００５】
ＦＭＳにおいては、一つのブロック（ユニット）サイズを単位として、データユニット（複数個）、データ管理ユニット、そしてスペアユニットを割り当て、アプリケーション側がデバイスを意識しないで、データを保存したり読み出したりすることを可能とするシステムである。
【特許文献１】特開２０００−３３０８５０号公報
【特許文献２】特開２００５−２７５７２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、ＦＭＳは全データ管理容量が６４ｋバイト程度のコンパクトなものに対応するシステムとして構築されていた。
【０００７】
しかし、全容量が、１Ｍバイトを超えると当然でデータ量も多くなり、管理すべきデータエントリ（各セクタデータの保存情報）数も多くなる。
したがって、フラッシュメモリ上のどこに、すなわち、どの物理アドレスに所望のデータが存在するかを検索するのに時間がかかってしまうという不利益がある。
また、何らかの残しておきたいデータが存在していたとしても、フォーマットする場合は全てのデータが一斉に消去され初期化されてしまう。
【０００８】
本発明の目的は、効率よくデータの書き込みを行うことができることはもとより、データエントリ数が多くなっても、アクセス時間の増大を抑止できるフラッシュメモリシステムおよびそれを備えた電子機器を提供する。
【課題を解決するための手段】
【０００９】
本発明の第１の観点は、指定された論理アドレスを物理アドレスに変換してアクセスを行うフラッシュメモリシステムであって、複数のドライブ部に分割可能なメモリ部と、前記メモリ部の分割された複数のドライブ部へのアクセス制御する制御手段とを有し、前記メモリ部には、第１種のデータと当該第１種のデータに比べて更新が頻繁に行われない第２種のデータとが別々のドライブに格納されている。
【００１５】
本発明の第２の観点は、指定された論理アドレスを物理アドレスに変換してアクセスを行うフラッシュメモリシステムを有する電子機器であって、前記フラッシュメモリシステムは、複数のドライブ部に分割可能なメモリ部と、前記メモリ部の分割された複数のドライブ部へのアクセス制御する制御手段とを有し、前記メモリ部には、第１種のデータと当該第１種のデータに比べて更新が頻繁に行われない第２種のデータとが別々のドライブに格納されている。
【００１６】
本発明の第３の観点は、無線通信機能を有する携帯端末装置であって、当該端末装置の動作を統括して制御を行う制御部と、前記制御部からの要求を受け付け、指定された論理アドレスを物理アドレスに変換してアクセスを行うフラッシュメモリシステムとを有し、前記フラッシュメモリシステムは、複数のドライブ部に分割可能なメモリ部と、前記メモリ部の分割された複数のドライブ部へのアクセス制御する制御手段と、を有し、前記メモリ部には、第１種のデータと当該第１種のデータに比べて更新が頻繁に行われない第２種のデータとが別々のドライブに格納されている。
【発明の効果】
【００１７】
本発明によれば、効率よくデータの書き込みを行うことができることはもとより、データエントリ数が多くなっても、アクセス時間の増大を抑止できる利点がある。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の一実施形態による電子機器を図面に関連付けて説明する。
【００１９】
本実施形態においては、電子機器の一例として、携帯電話等の携帯端末装置を例にして説明する。
【００２０】
本実施形態においては、基本となるフラッシュメモリシステム（ＦＭＳ）において、アプリケーション側はフラッシュメモリ上のセクタ配置を意識しないで単純に０からの連続番地を指定するだけで、フラッシュメモリに対して書き込み、読み出しできる。このような番地を論理アドレスと呼び、アプリケーション側から論理アドレスを指定されると、本フラッシュメモリドライバ（システム）は物理的な番地に変換し、書き込み読み出しを実行する。
連続アドレスを有するようなメモリ管理を行う種々のシステムが本フラッシュメモリの対象となる。
【００２１】
そして、本実施形態においては、フラッシュメモリシステム（ＦＭＳ）を２ドライブ化して分離することで、各ドライブに機能別の異なったデータを格納することが可能となる。さらに、各ドライブの容量に大小の区別を付け、容量の小さいドライブに対してはデータの高速アクセスを実現させている。
以下に、携帯端末装置の構成、それの採用されるＦＭＳ（フラッシュメモリシステム）の構成、および本実施形態の特徴的なＦＭＳの構成を、図面に関連付けて順を追って説明する。
【００２２】
図１は本実施形態に係るフラッシュメモリドライバを含む携帯端末装置の構成例を示すブロック図である。
【００２３】
本携帯端末装置１０は、図１に示すように、無線部１１、制御部１２、メモリ部１３、キー操作部１４、表示部１５、音声処理部１６、フラッシュメモリドライバ１７、およびフラッシュメモリ１８を有する。
【００２４】
無線部１１は、図示しない基地局との間で通信回線を確立して無線通信を行う。
制御部１２は、携帯端末装置１０の動作を統括して制御を行う。
【００２５】
メモリ部１３は、ユーザ特有の情報やデータを一時的に記憶するＲＡＭ、携帯端末装置１０を動作させるためのプログラム等が予め記憶されたＲＯＭを含んで構成されている。
【００２６】
キー操作部１４は、ユーザのキー操作を検出し、制御部１２にキー情報を送る。キー操作部１４は、ダイヤルキーやファンクションキー等から構成される。
表示部１５は、液晶表示デバイス等のディスプレイに表示するデータ等を制御部１２から受け、画面に表示する。
【００２７】
音声処理部１６は、通話音声を集音するマイクロフォン（マイク）と通話音声を発音させるスピーカを含んで構成されている。
【００２８】
フラッシュメモリドライバ１７は、アプリケーションの制御も含めた制御部１２からの要求を受け付け、フラッシュメモリ１８に対してアクセスする。
【００２９】
ここで、図２を関連付けして、図１に示すフラッシュメモリ１８における記憶領域の構成を説明する。
図２は、本実施形態に係るフラッシュメモリ１８の記憶領域の構成例を示す図である。
【００３０】
本実施形態のフラッシュメモリ１８内は、図２に示すように、ブロック消去単位毎にユニットＵＴに分かれている。ここでは、例として８ユニットＵＴの構成とし、各ユニットＵＴは６４ｋバイトの容量とする。
８ユニットのうち、１ユニットがデータ管理ユニットＤＣＵＴ、６ユニット分がデータユニットＤＵＴと、残りの１ユニットがスペアユニットＳＰＵＴとして形成されている。
データユニットＤＵＴはデータＤＴを格納するユニットであり、各データユニットＤＣＵには５１２バイトに区切られたセクタＳＣＴを有する。このセクタがデータとしての書き込み単位となる。
【００３１】
データ管理ユニットＤＣＵＴは、データユニットＤＵＴを管理するユニットであり、１６バイト単位として各セクタデータの保存情報であるエントリ(ＥＴＲＹ)情報を有する。また、各ユニットの先頭１セクタ分にユニットヘッダＵＨを設けてある。
このユニットヘッダＵＨには、ユニット識別マーク、ブロックイレーズカウンタを設ける。
ユニット識別マークは、そのユニットがデータ管理ユニットＤＣＵＴかスペアユニットＳＰＵＴか、あるいはデータユニットＤＵＴかを識別するために使用する。所定のブロックがその時点での用途により、このマークはその都度書き換えられる。フォーマット時には、データ管理ユニットＤＣＵＴは先頭ブロック、スペアユニットは末尾ブロックに割り当てられる。
ブロックイレーズカウンタは、そのブロックが消去された回数を記録しておくものであり、フォーマット時は００ｈにする。
各ユニットヘッダＵＨには、００ｈからＦＦｈの値が格納され、制御によりＦＦｈの次には００ｈに戻る。
【００３２】
スペアユニットＳＰＵＴは、ガーベッジコレクションやウエアレベリングの実行の際に使用するユニットである。ガーベッジコレクションとウエアレベリングについては後述する。
【００３３】
データ管理ユニットＤＣＵＴのエントリ情報には、５１２バイトセクタの先頭アドレス、ユニット番号（データ格納のブロック番号）、セクタ番号、有効／無効の判別部、無効エントリのダーティ（dirty）／クリーン（clean）判別部を有する。
有効／無効の判別部は、ユーザの操作に基づいて、データ削除されたときに００ｈに書き込みを行う。
データは無効であるが、この時点では無効エントリのdirty／cleanの判別部がまだdirtyである。すなわち、フラッシュメモリシステム上、管理された無効セクタを示す。
dirty／cleanの判別部は、ガーベッジコレクションされたときに００ｈに書き込みを行う。すなわち、データは無効であり、かつ、cleanである。
データ管理上、完全に削除された状態になる。
エントリの更新は、新エントリを空き領域に書き込み、旧エントリを無効にすることにより行う。
【００３４】
エントリ情報を含むデータ管理ユニットＤＣＵＴをガーベッジコレクションするときは、dirtyのエントリはスペアユニットＳＰＵＴにコピーするが、cleanのエントリのユニットは既にガーベッジコレクション済みであるためcleanのエントリはコピーしない。
【００３５】
ここで、ガーベッジコレクションおよびウエアレベリングについて説明する。
【００３６】
ガーベッジコレクションとは、データを削除／編集等することによりデータユニットＤＵＴに無効セクタが生じ、それを除いて有効セクタのみをスペアユニットＳＰＵＴにコピーして、コピー元のユニットはブロックイレーズして、このイレーズしたユニットが次のスペアユニットＳＰＵＴとすることである。
コピーすると同時に、新エントリ情報を書き込んで旧エントリ情報を無効化することにより、データ管理ユニットＤＣＵＴのエントリ情報も更新する。
ガーベッジコレクションの対象ユニットは、最も無効セクタの多いユニットである。
また、ガーベッジコレクションの起動条件は、書き込み時（書き込み前）にどのユニットも空きがないと判断したとき、あるいは、書き込み終了時／待機時に無効セクタ数が所定の閾値を超えたときである。
データ管理ユニットＤＣＵＴもガーベッジコレクションの対象になり、起動条件は、無効エン卜リのdirty／clean判別部のclean部が閾値以上になったと判定したときである。
動作は、エントリ上の有効／無効セクタをスペアユニットＳＰＵＴヘコピーし、ｃｌｅａｎ部はコピーしない。そして、不要となった元のエントリのブロックを消去し、次のスペアユニットＳＰＵＴとする。
【００３７】
次に、ウエアレベリングについて説明する。
ウエアレベリングは、消去回数が制限されるフラッシュメモリ１８において、全てのブロックを平均的に使用するように管理することで、特定のブロックのみを繰り返し消去して先に寿命が尽きてしまうようなことがないように、メモリ全体を有効に活用するものである。
ウエアレベリングの起動については、各ブロックイレーズカウンタをチェックし、ウエアレベリング起動の閾値以上になっていたら、そのカウンタ値が最小であるブロックを選定する。
そして、このブロックの全データをスペアユニットＳＰＵＴにコピーすると同時に、新エントリ情報を書き込み、旧エントリ情報を無効化して、最後に、コピー元をブロック消去し、次のスペアユニットＳＰＵＴとする。各ブロックイレーズカウンタの値（最小と最大）が、ウエアレベリング起動の閾値以上に差が開くまでウエアレベリングを実行しない。
【００３８】
書き込み終了時／待機時に起動する、ガーベッジコレクションまたはウエアレベリングには、優先順位を設け、第一はデータ管理ユニットＤＣＵＴのガーベッジコレクション、第二はデータユニットＤＵＴのガーベッジコレクション、第三はウエアレベリングとする。一回の起動では、優先順位に従っていずれか一つを実行する。
【００３９】
次に、図３に関連付けて、図１に示すフラッシュメモリドライバ１７の構成を説明する。
図３は、本実施形態に係るフラッシュメモリドライバの構成例を示すブロック図である。
【００４０】
本フラッシュメモリドライバ１７は、アプリケーションインタフェース（Ｉ／Ｆ）部１７１、キャッシュ制御部１７２、シーケンス制御部１７３、ユニットヘッダアクセス部１７４、エントリアクセス部１７５、セクタデータアクセス部１７６、エントリ検索部１７７、およびデバイスＩ／Ｆ部１７８を有する。
【００４１】
アプリケーションＩ／Ｆ部１７１は、アプリケーション側からの書き込み／読み出し要求等を受け付け、要求を振り分けて、キャッシュ制御部１７２、またはシーケンス制御部１７３に送る。
【００４２】
キャッシュ制御部１７２は、たとえばセクタサイズと同サイズのキャッシュメモリを有し、後述する制御動作を行う。
【００４３】
シーケンス制御部１７３は、フラッシュメモリ１８に対して実行したい操作、すなわち、アプリケーション側からの要求操作を順に手順を踏んでアクセス部を実行制御する。
【００４４】
ユニットヘッダアクセス部１７４は、ユニットヘッダをアクセスするためのもので、ユニット識別マーク、ブロックイレーズカウンタを書き込み／読み出しする。実際のアクセスは、デバイスＩ／Ｆ部１７８を通して行われる。
【００４５】
エントリアクセス部１７５は、ユニット番号、セクタ番号、有効／無効の判別部等を書き込み／読み出しする。実際のアクセスは、デバイスＩ／Ｆ部１７８を通して行われる。
【００４６】
セクタデータアクセス部１７６は、バイトセクタのデータを書き込み／読み出しする。実際のアクセスは、デバイスＩ／Ｆ部１７８を通して行われる。
【００４７】
エントリ検索部１７７は、データ管理ユニットを検索して無効セクタ数が最大のユニットを取得したり、dirty／clean判別部におけるcleanの数を取得する。
【００４８】
デバイスＩ／Ｆ部１７８は、直接フラッシュメモリ１８に対して書き込み／読み出し等を実行する。
【００４９】
次に、キャッシュ制御部１７２の動作を説明する。
アプリケーション側からサイズ指定でデータ書き込み要求があった場合、キャッシュ制御部１７２は、指定アドレスを含むセクタをフラッシュメモリ１８からキャッシュメモリヘリード(読み出し)する。このとき、キャッシュ制御部１７２は、指定アドレスを基にユニット番号、セクタ番号を求めてデータをリードする。
そして、このデータをキャッシュメモリに指定サイズ分、上書きし、キャッシュ保持中フラグをＯＮにする。キャッシュメモリのサイズ超過分のデータがあれば、後で別のセクタにライトする。
続いて、キャッシュメモリのデータをフラッシュメモリ１８へライト（書き込み）し、ライト後、キャッシュ保持中フラグをＯＦＦにする。
【００５０】
さらに、書き込み要求を受ける場合、同一セクタであれば、データをキャッシュに上書きする。
別セクタアドレスであれば、現在のキャッシュ内容をフラッシュメモリ１８へライトし、キャッシュ保持中フラグＯＦＦにする。
そして、指定アドレスを含むセクタをフラッシュメモリ１８からキャッシュへリードする。データをキャッシュに上書きし、キャッシュ保持中フラグＯＮにする。
【００５１】
このように、比較的サイズの小さなデータおよび１バイトデータを高い頻度で書き換える場合、データ管理ユニットＤＣＵＴやデータユニットＤＵＴに無効エントリ／セクタが多く発生するという負担が大きいものになってしまうが、キャッシュ制御部１７２を設けることによりこのことは解決される。
【００５２】
そして、アプリケーション側は最終データの書き込み要求を行った後、キャッシュデータのフラッシュ要求を行う必要がある。これによりキャッシュメモリに最後に残ったデータをフラッシュメモリ１８に書き込むことができる。
キャッシュ制御部１７２がフラッシュ要求を受け取ったら、キャッシュ保持中フラグＯＮのときだけフラッシュメモリ１８にライトする。
【００５３】
また、リード要求があれば、基本的にはフラッシュメモリ１８から直接データリードする。但し、キャッシュメモリにあるデータがまだフラッシュメモリ１８にライトされていない時に、リード要求があればキャッシュメモリ内のデータを読み出す。
【００５４】
次に、フォーマット処理について説明する。
【００５５】
フォーマット処理は、フラッシュメモリ１８を読み書きできる状態に初期化することであり、すなわち各ユニットにユニットヘッダＵＨを付加する処理のことである。
アプリケーションからの要求をアプリケーションＩ／Ｆ部１７１が受信し、シーケンス制御部１７３へ渡す。
これを受けてシーケンス制御部１７３は、デバイスＩ／Ｆ部１７８を介して各ユニットをイレーズする。
次いで、シーケンス制御部１７３は、ユニットヘッダを生成する。このフォーマット処理後は、ユニットヘッダを除いて全てＦＦｈとなる。
【００５６】
次に、書き込み処理について説明する。
【００５７】
書き込み処理は、１セクタ分のデータの書き込みを行う処理であり、複数セクタの書き込みの場合はこの処理を繰り返し行うことになる。
まず、書き込み要求を受けると、エントリ検索部１７７がデータ管理ユニットＤＣＵＴのエントリ情報を検索し、ライトするための空き領域のあるユニット番号を決定する。このとき、エントリ検索部１７７は空きの最も多いユニットを選択する。具体的には、データ管理ユニットＤＣＵＴのエントリ情報を先頭から末尾まで検索し、エントリアドレスが書かれていないＦＦＦＦｈが末尾となる。
dirty／clean判別部がcleanでないもの、すなわちエントリとして意味をなすものを抽出することで有効、無効セクタのユニット毎の総数を取得する。有効／無効セクタ数が最小のユニットが空きの最も多いユニットとなる。
続いて、そのユニットの空きセクタ番号を取得し、フラッシュメモリ１８上の物理アドレスを決定する。
そして、データ管理ユニットＤＣＵＴに対してエントリアクセス部１７５を介してエントリ情報を書き込み、セクタデータアクセス部１７６を介して１セクタデータを書き込む。
もし、旧エントリが存在すれば、エントリアクセス部１７５によりこの旧エントリを無効化する。あるエントリの最初の書き込みでは、それが新規になるので対応する旧エントリは存在しない。
【００５８】
次に、読み出し処理について説明する。
【００５９】
読み出し処理は、キャッシュメモリ内に読み出し対象のセクタデータがあれば、それを読み出すだけでよい。キャッシュメモリ内に対象のセクタデータがないとき、エントリ検索部１７７によりエントリデータを読み出す。
そして、アプリケーション側からの指定アドレスデータが格納されているユニット番号、セクタ番号を取得し、物理アドレスを決定する。
このアドレスのデータをデバイスＩ／Ｆ部１７８を介して読み出す。
【００６０】
以上が本実施形態に係るフラッシュメモリシステム（ＦＭＳ）の基本的な機能である。
【００６１】
本実施形態においては、以上のＦＭＳを２ドライブ部（ＦＭＳ１／ＦＭＳ２）構成に分けるものとする。
それにより、データ管理ユニットやスペアユニットも各ドライブ部に設ける。
ポイントとして、アプリケーション側からはドライブ部を意識せずに使用できるようにする。ＦＭＳドライバインタフェースにおいて、ＦＭＳ１／ＦＭＳ２の区別をアドレスにより判定し、各々のＦＭＳに対応するパラメータ設定（ＦＭＳベースアドレスやトータルブロック数の設定）を行う。
【００６２】
扱うデータとしてたとえば、電話帳データや楽曲データがある。電話帳データは、ユーザが頻繁に書き換え更新するデータである。メールや履歴データも頻繁に更新される。一方、楽曲データは、一度書き込まれると電話帳ほどは更新されないデータである。
このような場合、電話帳関係をＦＭＳ１に格納し、楽曲関係をＦＭＳ２に格納する。
楽曲関係は電話帳関係と比較してデータ量が多く、ＦＭＳで必要とするユニット数も多い。データ量が多いと検索に時間がかかりアクセスに不利となる。
そこで、電話帳データアクセスに影響を与えないように、これらデータを別々のドライブに格納することで、特に、電話帳などアクセスの速い状態を保持できる。
また、楽曲だけを消さずに残し、電話帳関係だけ消すときにもこの場合、ＦＭＳ１だけをフォーマットすることで容易に実現可能となる。
【００６３】
先にＦＭＳ１／ＦＭＳ２の区別をアドレスにより判足すると記述したが、アドレス判定について、たとえばアクセスするアドレスが
００００００ｈ〜ＯＦＦＦＦＦｈのとき、ＦＭＳ１、
１０００００ｈ〜ＦＦＦＦＦＦｈのとき、ＦＭＳ２、
として扱う。
【００６４】
ＦＭＳ１／ＦＭＳ２として２ドライブ部化する具体例を以下に示す。
特許文献２では、６つのデータユニットと、１つのデータ管理ユニット及び１つのスペアユニットから構成され、各ユニットは８ｋバイトの容量を有しているものとして説明している。
【００６５】
すなわち、
（６＋１＋１）×８ｋバイト＝６４ｋバイト
が全ＦＭＳ容量であった。
【００６６】
一方、容量拡張して全ＦＭＳ容量がＩＭバイトを超える場合、相対的に各ユニットの容量も大きくなり（たとえば、ユニット当り６４ｋバイト）、管理すべきデータ量も増大する。
【００６７】
たとえば、総ユニット数を２２として上の式に当てはめれば、
（２０＋１＋１）×６４ｋバイト＝約１．３８Ｍバイト
となる。
【００６８】
この状態で使用するならばデータ管理ユニットを検索するのに時間がかかり、システム全体として遅くなってしまう。
そこで、ユニット数２２を２ドライブ部に分割し、たとえば、５ユニットと１７ユニットとする。上の式に当てはめれば、
各ドライブは、
ＦＭＳ１：
（３＋１＋１）×６４ｋバイト＝約３２０ｋバイト、
ＦＭＳ２：
（１５＋１＋１）×６４ｋバイト＝約１．０６Ｍバイト
となる。
ＦＭＳ１は、コンパクトなドライブを保持でき、高速動作が可能となる。
【００６９】
本実施形態においては、ＦＭＳ１、ＦＭＳ２の区別をアドレスにより判定することである。そして、判定後、各ドライブに応じたパラメータ類の設定を行う。
【００７０】
図４は、本実施形態のアドレス判定処理に伴う動作を説明するためのフローチャートである。
【００７１】
まず、要求により書き込み、あるいは読み出し処理が発生すると（ＳＴ１）、その対象アドレスをチェックし、ＦＭＳ１で扱うアドレスかＦＭＳ２で扱うアドレスかの判定を行う（ＳＴ２）。
【００７２】
ＦＭＳ１で扱うアドレスであった場合、ＦＭＳ１ベースアドレスの設定として、デバイスの物理アドレス上での開始アドレスを設定する（ＳＴ３）。
【００７３】
次に、ＦＭＳ１のトータルブロック数の設定を行う（ＳＴ４）。
ここでいうブロックはユニットと同義であり、データユニット、データ管理ユニット、そして、スペアユニットを合わせた全てのユニットを設定する。
【００７４】
次に、ＦＭＳ１のデータ管理ユニット番号を設定する（ＳＴ５）。
データ管理ユニットは物理的に固定のユニットが存在するわけではなく、書き込みを繰り返すことによりガーベッジコレクションが発生し、その後は物理的にアドレスの異なる別のユニットにデータ管理ユニットが割り当てられる。
ここでは、現時点でのデータ管理ユニット番号を設定する。
【００７５】
次に、ＦＭＳ１のガーベッジコレクション・ウエアレベリング起動閾値の設定を行う（ＳＴ６）。無効データの数がある一定数を超えたらガーベッジコレクションを実行するが、その値を閾値として設定する。
データユニット用とデータ管理ユニット用として各々、閾値が存在する。
また、前述のウエアレベリングを実行するための閾値もここで設定する。
【００７６】
以上の設定を全て完了した後に、フラッシュメモリに対して書き込みあるいは読み出しを実行する（ＳＴ７）。
【００７７】
ステップＳＴ２において、ＦＭＳ２を扱うアドレスであると判定すると、ＦＭＳ２として、ＦＭＳ１と同様の設定を行う。
【００７８】
すなわち、ＦＭＳ２で扱うアドレスであった場合、ＦＭＳ２ベースアドレスの設定として、デバイスの物理アドレス上での開始アドレスを設定する（ＳＴ８）。
【００７９】
次に、ＦＭＳ２のトータルブロック数の設定を行う（ＳＴ９）。
ここでいうブロックはユニットと同義であり、データユニット、データ管理ユニット、そして、スペアユニットを合わせた全てのユニットを設定する。
【００８０】
次に、ＦＭＳ２のデータ管理ユニット番号を設定する（ＳＴ１０）。
ＦＭＳ１の場合と同様、データ管理ユニットは物理的に固定のユニットが存在するわけではなく、書き込みを繰り返すことによりガーベッジコレクションが発生し、その後は物理的にアドレスの異なる別のユニットにデータ管理ユニットが割り当てられる。
ここでは、現時点でのデータ管理ユニット番号を設定する。
【００８１】
次に、ＦＭＳ２のガーベッジコレクション・ウエアレベリング起動閾値の設定を行う（ＳＴ１１）。ＦＭＳ１の場合と同様、無効データの数がある一定数を超えたらガーベッジコレクションを実行するが、その値を閾値として設定する。
データユニット用とデータ管理ユニット用として各々、閾値が存在する。
また、前述のウエアレベリングを実行するための閾値もここで設定する。
【００８２】
以上の設定を全て完了した後に、フラッシュメモリに対して書き込みあるいは読み出しを実行する（ＳＴ１２）。
【００８３】
なお、読み出し時は、ステップＳＴ６、ＳＴ１１におけるガーベッジコレクション、ウエアレベリング起動閾値の設定を省略しても良い。
読み出し時は、ガーベッジコレクションやウエアレベリングが発生しないためである。
【００８４】
以上説明したように、本実施形態によれば、一般的にフォーマットすると、全てのデータが消失するため、機能別に残したいデータがある場合は対処が困難であった。たとえば楽曲だけを消さずに残し、電話帳関係だけ消すときにも、一方のＦＭＳ１だけフォーマットすることで容易に実現可能となる。
ＦＭＳにおいてデータエントリ数が多くなるとアクセス時間がかかり、高速化することが課題となっていたが２ドライブ化することにより、データアクセスを高速化できる利点がある。
【００８５】
また、従来の制御方法のように書き込み時において各ユニットのイレーズ回数で判断せずに、ユニットの空きサイズで書き込み対象のユニットを決定するようにしたため、このユニットに対しては必ず書き込みが可能であり、書き込む直前にガーベッジコレクションが実行されることがないようにすることができる。
【００８６】
また、１バイト毎の連続書き込み要求に対しては、キャッシュメモリを設けることによりセクタの更新を操り返すことはなく、ガーベッジコレクションの増加を防ぐことが可能となる。キャッシュメモリを設けることにより、高速化することができるとともに、効率の悪いフラッシュメモリ１８への書き込みを避けることができる。
すなわち、キャッシュメモリに存在するセクタデータがアプリケーションからの書き込み要求のデータアドレスを含んでいる場合は、キャッシュメモリに上書きするだけで、その都度フラッシュメモリ１８に書き込みを行わずに済む。
１バイトデータの書き込みの度に５１２バイトセクタデータをフラッシュメモリ１８に書き込むと無効セクタが増大することになるが、それが避けられる利点は大きい。また、ガーベッジコレクションの対象ユニットを使用頻度が最低のユニットとするのではなく、無効セクタ数が最大のユニットとすることにより、最も効率のよいガーベッジコレクションを実現することができる。
さらに、待機時にガーベッジコレクションまたはウエアレベリングを実行することにより、ユーザが意識しないときにフラッシュメモリ１８内のガーベッジ量を少なくし、また、偏ったブロックイレーズを避けることが可能となる。
また、ファイル位置を管理するためのテーブルであるＦＡＴ(ファイル・アロケーション・テーブル)を使わないことによりシンプルなシステムを提供でき、ＦＡＴを使用しないのでＦＡＴ破壊等で復旧が困難となる事態が避けることができるとともに、ファイルの概念を持たないため、システム構成を簡略化することが可能となる。
【００８７】
また、アプリケーション側は、フラッシュメモリ１８上のセクタ配置を意識しないで単純に０からの連続アドレスを指定するだけで、フラッシュメモリ１８に対する書き込み／読み出しを行うことができる。このように、アプリケーション側から論理アドレスを指定されると、フラッシュメモリドライバ１７は目標の物理アドレスに変換し、書き込み／読み出しを実行することができる。これは、連続アドレスを有するメモリ管理を実施するあらゆる電子機器に適用することができ、例えば移動通信を使用した携帯電話機や移動通信機能を有した携帯情報端末（ＰＤＡ）などに適用可能である。
【００８８】
また、図１における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりフラッシュメモリ１８制御処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００８９】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【図面の簡単な説明】
【００９０】
【図１】本実施形態に係るフラッシュメモリドライバを含む携帯端末装置の構成例を示すブロック図である。
【図２】本実施形態に係るフラッシュメモリの記憶領域の構成例を示す図である。
【図３】本実施形態に係るフラッシュメモリドライバの構成例を示すブロック図である。
【図４】本実施形態の動作を説明するためのフローチャートである。
【符号の説明】
【００９１】
１０・・・携帯端末装置、１１・・・無線部、１２・・・制御部、１３・・・メモリ部、１４・・・キー操作部、１５・・・表示部、１６・・・音声処理部、１７・・・フラッシュメモリドライバ、１８・・・フラッシュメモリ、１７１・・・アプリケーションＩ／Ｆ部、１７２・・・キャッシュ制御部、１７３・・・シーケンス制御部、１７４・・・ユニットヘッダアクセス部、１７５・・・エントリアクセス部、１７６・・・セクタデータアクセス部、１７７・・・エントリ検索部、１７８・・・デバイスＩ／Ｆ部
【図１】
0005376551.tif 000002
【図２】
0005376551.tif 000003
【図３】
0005376551.tif 000004
【図４】
0005376551.tif 000005