(57)【要約】  コンピューティング装置の別々のメモリにおけるデータの完全性およびデータ格納の効率を改善するためのシステムおよび方法を開示する。特に本発明は、ファイルデータを格納するための持続メモリとして、２種類のメモリすなわちＮＶＲＡＭおよびフラッシュメモリの組合せを導入する。データファイルの最後のデータ部分をＮＶＲＡＭに絶えずキャッシュすることによって、フラッシュメモリ内の個々のビットのためのセクタ消去を回避する。そのような手法は、フラッシュメモリのデータ格納効率および推定寿命を増大する。本発明は、ＰＣ（デスクトップまたはノート型）およびサーバコンピュータをはじめ、ほとんど全てのコンピューティング装置に非常に幅広い用途を有する。それは、Ｗｉｎｄｏｗｓ（登録商標）ＣＥオペレーティングシステムを実装する携帯型電子装置で特に有利な性能を実証する。
2008508596.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング装置でファイルデータを受け取るステップと、
前記ファイルデータを処理して、前記ファイルデータが各々予め定められたブロックサイズを有する１つ以上のブロックと、前記予め定められたブロックサイズより小さいサイズを有する最後のデータ部分とから構成されることを決定するステップと、
前記予め定められたブロックサイズを有するデータブロックを格納するように構成された第１メモリに前記１つまたは２つのデータブロックを書き込むステップと、
前記最後のデータ部分を前記第１メモリに送る前に前記最後のデータ部分を第２メモリにキャッシュするステップと、
を含む、コンピューティング装置のメモリ管理の方法。
【請求項２】
前記ファイルデータ用の非ファイルデータを生成するステップと、
前記非ファイルデータを前記第２メモリに格納するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記非データファイルがファイル割当てテーブル（ＦＡＴ）を含む、請求項２に記載の方法。
【請求項４】
前記最後のデータ部分をキャッシュするステップが、
（Ａ）ファイルデータを格納するように構成されたファイルバッファとして、前記第２メモリの一部を割り当てるステップと、
（Ｂ）前記ファイルバッファ内のデータが前記予め定められたブロックサイズを有することが決定されるまで、前記最後のデータ部分のデータバイトを前記ファイルバッファに書き込むステップと、
（Ｃ）前記ファイルバッファ内の前記データが前記予め定められたブロックサイズを有するという前記決定に応答して、ステップ（Ｂ）を続ける前に、前記データを前記ファイルバッファから前記第１メモリに移動させるステップと、
を含む、請求項１に記載の方法。
【請求項５】
前記第１メモリがフラッシュメモリである、請求項１に記載の方法。
【請求項６】
前記第２メモリが不揮発性ランダムアクセスメモリである、請求項２に記載の方法。
【請求項７】
コンピューティング装置のプロセッサで実行されたときに、
（Ａ）ファイルデータ入力を受け取るステップと、
（Ｂ）前記ファイルデータ入力を処理して、前記ファイルデータ入力を、各々閾値数のデータバイトを含む１つ以上のデータブロックと、前記閾値数未満のデータバイトを含む最後のデータ部分とに分割するステップと、
（Ｃ）前記１つ以上のデータブロックを第１メモリに格納するステップと、
（Ｄ）第２メモリが前記閾値数に等しいファイルデータバイトを含むことが決定されるまで、前記最後のデータ部分を１バイトずつ前記第２メモリに書き込むステップと、
（Ｅ）前記第２メモリが前記閾値数に等しいファイルデータバイトを含むという決定に応答して、ステップ（Ｄ）を続ける前に、前記第２メモリから前記第１メモリに前記ファイルデータバイトを移動するステップと、
を含む命令を備えた、コンピュータ可読媒体。
【請求項８】
前記命令がさらに、
前記ファイルデータ入力用の非ファイルデータを生成するステップと、
前記第２メモリに前記非ファイルデータを格納するステップと、
を含む、請求項７に記載のコンピュータ可読媒体。
【請求項９】
前記非ファイルデータがファイル割当てテーブル（ＦＡＴ）を含む、請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記第１メモリがブロックアクセス型メモリである、請求項７に記載のコンピュータ可読媒体。
【請求項１１】
前記第１メモリがフラッシュメモリである、請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
前記第２メモリが不揮発性ランダムアクセスメモリである、請求項７に記載のコンピュータ可読媒体。
【請求項１３】
前記閾値数のデータバイトが設定可能である、請求項１１に記載のコンピュータ可読媒体。
【請求項１４】
データを受け取りかつ処理するように構成されたプロセッサと、
少なくとも第１メモリおよび第２メモリを含むメモリと、
前記プロセッサによって実行されるデータマネージャと、
を備えたメモリ管理システムであって、
前記データマネージャが、各々予め定められたブロックサイズを有する多数のデータブロックと、前記予め定められたブロックサイズより小さいサイズを有する最後のデータ部分とを前記データ内で画定するようにプログラムされ、
前記データマネージャが前記多数のデータブロックを格納するために前記第１メモリ内の空間を割り当てるようにプログラムされ、かつ
前記データマネージャがさらに、前記最後のデータ部分をキャッシュするために前記第２メモリ内の空間を割り当てるようにプログラムされた、
メモリ管理システム。
【請求項１５】
前記最後のデータ部分が、
（Ａ）ファイルデータを格納するように構成されたファイルバッファとして、前記第２メモリの一部を割り当てるステップと、
（Ｂ）前記ファイルバッファ内のデータが前記予め定められたブロックサイズを有することが決定されるまで、前記最後のデータ部分のデータバイトを前記ファイルバッファに書き込むステップと、
（Ｃ）前記ファイルバッファ内の前記データが前記予め定められたブロックサイズを有するという前記決定に応答して、ステップ（Ｂ）を続ける前に、前記データを前記ファイルバッファから前記第１メモリに移動させるステップと、
を通して、前記第２メモリにキャッシュされる、請求項１４に記載のシステム。
【請求項１６】
前記第１メモリがブロックアクセス型メモリである、請求項１４に記載のシステム。
【請求項１７】
前記第１メモリがフラッシュメモリである、請求項１４に記載のシステム。
【請求項１８】
前記第２メモリが不揮発性ランダムアクセスメモリである、請求項１４に記載のシステム。
【請求項１９】
前記データをユーザに対して表示するための出力インタフェースをさらに備えた、請求項１４に記載のシステム。
【請求項２０】
前記データを受け取るための入力インタフェースをさらに備えた、請求項１４に記載のシステム。
【請求項２１】
通信ネットワークを介して前記データを伝送するためのインタフェースをさらに備えた、請求項１４に記載のシステム。
【請求項２２】
前記データマネージャがさらに、前記データ用のファイル割当てテーブル（ＦＡＴ）を生成し、かつ前記ＦＡＴを前記第２メモリに格納するようにプログラムされた、請求項１４に記載のシステム。
【請求項２３】
データ入力装置と、
データ出力装置と、
通信ネットワークを介して前記データ入力装置、前記データ出力装置、およびデータ源と通信するように構成されたコンピューティング装置と、
を備えたハンドヘルド装置であって、
前記コンピューティング装置が、
データ処理のためのプロセッサと、
少なくとも不揮発性ランダムアクセスメモリおよびブロックアクセス型メモリを含むメモリと、
前記プロセッサによって実行されたときに、
（Ａ）ファイルデータ入力から、各々閾ブロックサイズを有する１つ以上のデータブロックおよび閾ブロックサイズより小さいサイズを有する最後のデータ部分を識別するステップと、
（Ｂ）前記１つ以上のデータブロックを前記ブロックアクセス型メモリに格納するステップと、
（Ｃ）前記不揮発性ランダムアクセスメモリが前記閾ブロックサイズのファイルデータを含むことが決定されるまで、前記最後のデータ部分を１バイトずつ前記不揮発性ランダムアクセスメモリに書き込むステップと、
（Ｄ）前記不揮発性ランダムアクセスメモリが前記閾ブロックサイズのファイルデータを含むことが決定されたことに応答して、ステップ（Ｃ）を続ける前に、前記不揮発性ランダムアクセスメモリから前記ブロックアクセス型メモリに前記ファイルデータを移動するステップと、
を含むデータマネージャと、
を備えて成る、ハンドヘルド装置。
【請求項２４】
前記ブロックアクセス型メモリがフラッシュメモリである、請求項２３に記載のハンドヘルド装置。
【請求項２５】
前記閾ブロックサイズが設定可能である、請求項２３に記載のハンドヘルド装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にメモリ記憶トポロジの分野に関し、さらに詳しくは、コンピューティング装置の別々のメモリ内のデータの完全性およびデータ格納の効率を改善するためのシステムおよび方法に関する。それは特に、Ｗｉｎｄｏｗｓ（登録商標）ＣＥオペレーティングシステムを実装したハンドヘルドコンピューティング装置の良好なメモリ性能をもたらす。
【０００２】
発明の背景
電子メモリは、多種多様な目的を果たすために多種多様な形がある。一般的に、単一の電子コンピューティング装置に数段の異なるメモリが含まれる。メモリの設計におけるそのような階層化の概念は、強力なＣＰＵにより迅速かつ容易にアクセスできるようにデータ格納域を最大にすると同時に、メモリコストを最小にする。
【０００３】
ハンドヘルドコンピューティング装置に特定すると、それらの多くは２種類のメモリ、すなわちランダムアクセスメモリ（ＲＡＭまたはＤＲＡＭ）およびプログラマブル永久メモリを含む。一般的に、ソフトウェアアプリケーションはＲＡＭにロードされ、実行され、作動する。ＲＡＭはまた、ユーザによって入力されるデータを受け取るためだけでなく、アプリケーションの出力または結果をユーザに対し表示するためにも使用される。データを受け取ったり、結果を表示するタスクは一般的に、ＲＡＭで迅速に実行され、データをより永久的なメモリに格納する遅延無く、ユーザが自由にデータを入力することを可能にする。利用可能なＲＡＭの量は一般的に、装置の受取り速度に貢献する。しかし、大部分のＲＡＭ構成の速度は、データまたは結果を喪失するリスクとの均衡を図らなければならない。つまり、ＲＡＭは、そのデータを維持するために常時電気エネルギを供給する必要があるので、時々、揮発性メモリと呼ばれる。そのため、電力の供給が失われると、ＲＡＭ内のデータも失われる。
【０００４】
大半の種類の永久メモリは不揮発性である。つまり、永久メモリは、たとえ電力が失われても、データを保持する。大半の永久メモリはプログラム可能であり、したがってソフトウェアアプリケーションを格納するのに適しており、かつ消去可能であるので、メモリを再プログラムすることができる。一般的に、選択されたデータを後で使用するために、意図的に永久メモリに格納することができる。例えば、ユーザはＲＡＭ内に１０のクイックデータエントリを行ない、後で該データエントリを永久メモリに格納するかもしれない。
【０００５】
使用中に、多くの携帯型電子装置は、環境的影響力、電子的損傷、電源喪失、および／またはＲＡＭの内容を自動的にかつ突然に消去するおそれのあるその他の破局的事象を蒙りやすい。ＲＡＭに格納された入力データがひとたび失われると、それは永久メモリに格納するために回復することができない。したがって、破局的事象から装置がたとえ完全に故障した場合でも、不揮発性メモリがデータを迅速に受け取って格納し、データの長期保存を達成する必要がある。
【０００６】
現在、ブロックアクセス型フラッシュメモリは、携帯型コンピューティング装置に実装される改善された不揮発性メモリとみなされている。１種のＥＥＰＲＯＭとして、フラッシュメモリは、プログラマブルコードおよびデータ用の不揮発性の低電力低コストの高密度格納装置をもたらす。これらの特徴は、フラッシュメモリを組込みシステム用の最適な不揮発性メモリデバイスにする。しかし、フラッシュメモリは、コンピューティング装置に実装されたときに、多数の望ましくない特徴も有する。
【０００７】
１つの問題は消去セクタ（ｅｒａｓｅ  ｓｅｃｔｏｒ）である。ＲＡＭまたはＲＯＭデバイスとは異なり、フラッシュメモリデバイス（例えばＮＡＮＤフラッシュメモリ）の個々のビットは一方向にしかプログラムできず、消去動作無しに再プログラムすることはできない。フラッシュメモリの消去動作は、大きい１セクションのビットつまり消去セクタを「フラッシュ」すること、つまり同時に消去することが要求される。そのような消去セクタは一般的に６４ＫＢであるが、５１２バイトから５１２ＫＢまでの範囲とすることができ、フラッシュメモリの種類およびそれをシステムにどのように結線するかによって決定される。加えて、１バイトは通常約１０マイクロ秒でプログラムすることができるが、消去動作は極めて遅く、一般的に０．５秒程度である。
【０００８】
フラッシュメモリのこのセクタ消去機能は、データの完全性を維持することも難しくする。ＲＡＭまたは従来の格納用のディスクを使用する場合、事実上どんなサイズのデータでも、特別な処理無しに同じ場所に書込みおよび書換えを行なうことができる。フラッシュメモリはデータの個々のビットを書き換えることができないので、全てのデータをフラッシュメモリの未使用領域に最初に書き込み、あるいは書き換えなければならない。次いで、セクタ消去を目的としてメモリ内の空間を解放するには、元のデータを追跡しなければならない。フラッシュデバイスにデータの書込みおよび書換え動作が行なわれるときに、制御ソフトウェアは、障害が発生した場合に備えて、元のデータおよび新しいデータが有効であり続けることを確実にするために、動作の全ての状況でデータを保護しなければならない。障害は、バッテリの残量不足による予想外の電源喪失またはユーザの停止要求のような、幾つかの一般的状態によって発生し得る。
【０００９】
考慮すべきフラッシュメモリの別の側面は、その限られた推定寿命である。どのフラッシュメモリデバイスでも、それが信頼できなくなるか破損する前に、特定の消去セクタで実行できる消去動作の総回数には限度がある。フラッシュメモリデバイスの寿命は、１０，０００回から１，０００，０００回の範囲の書込み消去サイクルであり、最も多い定格は約１００，０００回である。消去セクタがその定格限度に近づくと、特定の動作を実行するのにより長い時間がかかり、失敗し始めることさえある。
【００１０】
上記の問題を克服するために、フラッシュメモリを管理する幾つかの特殊なタイプのソフトウェアが提供されている。一例は、現在の市場でフラッシュメディアマネージャと呼ばれている。フラッシュデバイスの寿命サイクルを最大にするために、メディアマネージャは、フラッシュディスク内の全ての消去セクタが同一頻度で使用されることを確実にすることから成る、磨耗平準化（ｗｅａｒ  ｌｅｖｅｌｉｎｇ）と呼ばれるプロセスを導入する。ガーベジコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）と呼ばれる別のプロセスは、破棄データによって占有された空間を再生するように展開される。このプロセスは、データが最も多く破棄された消去セクタを選択し、その消去セクタからスペアセクタに有効なデータをコピーし、前の有効な消去セクタを消去してそれを新しいスペアセクタにする。しかし、上述した特殊ソフトウェアのいずれかを含めるためには、フラッシュメモリの状態を識別／記録するデータを格納し、格納されたデータの場所および状態を追跡するためにファイル割当てテーブルを維持し、かつガーベジコレクション用のスペア空間を確保するために、フラッシュメモリ内に割り当てられるオーバヘッド空間が必要になる。そのようなオーバヘッドは、データ格納のための実際の空間を低減させるだけでなく、結果的にフラッシュメモリの速度も低下する。
【００１１】
したがって、フラッシュメモリの不備を克服して、高速データ格納を達成する不揮発性メモリの必要性が存在する。新興の不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）はこの要求を満たすようにみえる。ＮＶＲＡＭは、コンピュータが電源を切断されたとき、または停電時に、データを保持する特殊な種類のＲＡＭである。コンピュータの読出し専用メモリ（ＲＯＭ）と同様に、ＮＶＲＡＭはコンピュータ内のバッテリによって電力を供給される。電源投入時に、ＮＶＲＡＭは他のＲＡＭと全く同様に動作する。電源切断時に、ＮＶＲＡＭはそのデータを保持するために充分な電力をバッテリから引き込む。ＮＶＲＡＭは組込みシステムではかなり一般的である。しかし、ＮＶＲＡＭは、バッテリのため、他のＲＡＭよりずっと高価である。また、ＮＶＲＡＭは一般的に、他のＲＡＭより、特にＤＲＡＭより低密度である。したがって、その用途は通常、それ以上によい方法で格納することのできない数百バイトのシステムに不可欠な情報の格納に限定される。
【００１２】
発明の概要
上記に照らして、本発明は、適正な価格で不揮発性の信頼できる高速データ格納デバイスを提供することを目指すものである。特に、本発明は、データ格納および展開の最適な性能を得るように、１つのコンピューティング装置（特に携帯型電子装置）でＮＶＲＡＭおよびフラッシュメモリのような様々な既存のメモリデバイスを組み合わせて利用することを目指す。その目的のために、本発明はさらに、組合せ使用をサポートし、データの完全性を損なうことなく異なるメモリ間のデータ転送を促進する、基礎的メカニズムを提供することを目指す。
【００１３】
本発明によると、上記目的ならびに他の目的、特徴、および利点は、メモリ管理のための方法およびシステムによって達成される。該方法は、コンピューティング装置でファイルデータを受け取るステップと、ファイルデータを処理して、該ファイルデータが各々予め定められたブロックサイズを有する１つ以上のブロックと予め定められたブロックサイズより小さいサイズを有する最後のデータ部分とから構成されることを決定するステップと、前記予め定められたブロックサイズを有するデータブロックを格納するように構成された第１メモリにデータブロックを書き込むステップと、前記最後のデータ部分を前記第１メモリに送る前に最後のデータ部分を第２メモリにキャッシュするステップとを含む。１つの好ましい実施形態では、第２メモリは不揮発性ランダムアクセスメモリであり、最後のデータ部分は、ファイルデータを格納するファイルバッファとして第２メモリの一部を割り当てるステップと、ファイルバッファが予め定められたブロックサイズより多くのデータを含むようになるまで最後のデータ部分のデータバイトをファイルバッファに書き込むステップと、ファイルバッファが予め定められたブロックサイズより多いデータを含むという決定に応答して、最後のデータ部分のデータバイトをファイルバッファに書き込み続ける前に、データをファイルバッファから第１メモリに移動させるステップとを通して、キャッシュされる。
【００１４】
また、本発明では、上記ステップを遂行するために実行可能な命令を含むコンピュータ可読媒体も提供する。
【００１５】
本発明の別の態様では、データを受け取りかつ処理するように構成されたプロセッサと、少なくとも第１メモリおよび第２メモリを含むメモリと、前記プロセッサによって実行されるデータマネージャとを備えたシステムを提供する。データマネージャは、データ内に各々が予め定められたブロックサイズを有する多数のデータブロックと、前記予め定められたブロックサイズより小さいサイズを有する最後のデータ部分とを画定するように構成される。それはさらに、データブロックを格納するために第１メモリ内の空間を割り当て、かつ最後のデータ部分をキャッシュするために第２メモリ内の空間を指定するように構成される。好適な実施形態では、最後のデータ部分は、ファイルデータを格納するように構成されたファイルバッファとして第２メモリの一部を割り当てるステップと、ファイルバッファ内のデータが前記予め定められたブロックサイズを有することが決定されるまで、最後のデータ部分のデータバイトを前記ファイルバッファに書き込むステップと、ファイルバッファ内のデータがそのような予め定められたブロックサイズを有するという決定に応答して、最後のデータ部分のデータバイトをファイルバッファに書き込み続ける前に、データをファイルバッファから第１メモリに移動させるステップとを通して、キャッシュされる。好ましい実施形態では、第１メモリはフラッシュメモリである一方、第２メモリは不揮発性ランダムアクセスメモリである。
【００１６】
本発明の別の実施形態は特に、データ入力装置と、データ出力装置と、通信ネットワークを介してデータ入力装置、データ出力装置、およびデータ源と通信するように構成されたコンピューティング装置とを含むハンドヘルド装置に向けられる。コンピューティング装置は、データ処理のためのプロセッサと、少なくとも不揮発性ランダムアクセスメモリおよびブロックアクセス型メモリを含むメモリと、データマネージャとを備える。データマネージャはプロセッサによって実行され、（Ａ）ファイルデータ入力から、各々閾ブロックサイズを有する１つ以上のデータブロックおよび閾ブロックサイズより小さいサイズを有する最後のデータ部分を識別するステップと、（Ｂ）データブロックをブロックアクセス型メモリに格納するステップと、（Ｃ）不揮発性ランダムアクセスメモリが閾ブロックサイズのファイルデータを含むことが決定されるまで、最後のデータ部分を１バイトずつ不揮発性ランダムアクセスメモリに書き込むステップと、（Ｅ）前記不揮発性ランダムアクセスメモリが閾ブロックサイズのファイルデータを含むことが決定されたことに応答して、ステップ（Ｄ）を続ける前に、前記不揮発性ランダムアクセスメモリからブロックアクセス型メモリにファイルデータを移動するステップとを含む命令を実行する。
【００１７】
本発明の上記のいずれかの態様の他の実施形態では、第１および第２メモリに任意の型のコンピュータメモリを利用することができる。好ましい実施形態では、第１メモリはフラッシュメモリのような不揮発性メモリ、またはハードドライブ、またはＣＤ‐ＲＯＭドライブまたは類似物であり、第２メモリもまた不揮発性メモリであり、好ましくはＮＶＲＡＭである。
【００１８】
発明の詳細な説明
今、本発明の全部ではなく一部の実施形態を示す添付の図面を参照しながら、本発明を以下でさらに詳細に説明する。実際には、これらの発明は多くの異なる形で具現することができ、本明細書に記載する実施形態に限定されると解釈すべきではない。むしろ、これらの実施形態は、この開示が適用法令の要求を満たすように提供するものである。全体を通して、同様の番号は同様の要素を指している。
【００１９】
図１を見ると、本発明の一実施形態に係るハンドヘルド装置１が示されている。そのようなハンドヘルド装置１は、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン（ＳＰ）、ノートブックコンピュータ、タブレットコンピュータ、および配達情報収集装置（Ｄｅｌｉｖｅｒｙ  Ｉｎｆｏｒｍａｔｉｏｎ  Ａｃｑｕｉｓｉｔｉｏｎ  Ｄｅｖｉｃｅ：ＤＩＡＤ）をはじめ、それらに限らず、任意の携帯型コンピューティング装置とすることができる。図１に示すように、このハンドヘルド装置１は主として、図に示されない他の周知の必要な構成要素以外に、入力装置１２と、出力または表示装置１４と、コンピューティング装置２０とから構成される。動作中、ハンドヘルド装置はユーザ１０からユーザ入力（例えばキーボードエントリ、バーコードスキャン）を通して、または通信ネットワーク１６でデータ源１８（例えば電子データ転送）から、データを受け取ることができる。データ源１８はサーバコンピュータの任意のデータベースとすることができる。例えば宅配便の文脈では、それは、インターネット、ＬＡＮ、またはＷＡＮとすることのできる通信ネットワーク１６で、有線または無線接続のいずれかによってコンピューティング装置２０にアクセス可能な、宅配業者の出荷データベースまたは顧客のデータベースとすることができる。次いで出荷データまたは荷物情報をデータベースからダウンロードし、この文脈ではＤＩＡＤとすることのできるハンドヘルド装置１にキャプチャすることができる。
【００２０】
図２は、コンピューティング装置２０の内部の様々な構成要素のブロック図を提供する。それは少なくとも、（１）メモリ管理のためのプログラム命令を含むデータマネージャ２４を実行するプロセッサ２２と、（２）入力装置１２または出力装置（１４）と対話するためのインタフェース２６と、（３）通信ネットワーク１６と通信するためのネットワークインタフェース２８と、（４）メモリ３０とを含む。メモリ３０は少なくとも２種類のメモリ、すなわちＤＲＡＭ３０ＡおよびＲＯＭ３０Ｂを備える。本発明の好ましい構成では、通常のＲＡＭ３０に加えて、不揮発性ＲＡＭ（ＮＶＲＡＭ）３２が使用される。ＲＯＭ３０Ｂに関しては、本発明では一般的にフラッシュメモリ３４が使用される。
【００２１】
図３は、メモリ３０における各々の特定の型のメモリ内のそれぞれのデータ格納の詳細図である。この図に示すように、ＤＲＡＭ３０Ａ、ＮＶＲＡＭ３２、およびフラッシュメモリ３４の間でデータ交換が行なわれる。特に、フラッシュメモリ３４はファイルデータブロック３５を格納する。各データブロックは、予め定められたブロックサイズのデータバイトを含むように画定される。そのような予め定められたブロックサイズは一般的に５１２バイトであるが、フラッシュメモリ３４の消去セクタの特定のサイズに応じて変えることができる。上述の通り、一般的に６４ＫＢである消去セクタは、５１２バイトから５１２ＫＢの範囲とすることができる。ＮＶＲＡＭ３２の１つの用途は、一般的にファイル割当てテーブル（ＦＡＴ）３１である非ファイルデータ３１を格納することである。ＦＡＴ３１は、ＮＶＲＡＭ３４およびフラッシュメモリ３４の両方に格納されたファイルデータの場所および状態を追跡するために、ＮＶＲＡＭ３２に維持される。ＮＶＲＡＭ３２はまた、最後のデータ部分３３と呼ばれるファイルデータバイトをバッファＺ３７に格納するためにも使用される。ＤＲＡＭ３０Ａは別のバッファＹ３６を含む。バッファＹ３６およびＺ３７は両方とも、１データブロックを保持するための充分なメモリ空間を含むように構成される。
【００２２】
図４で、データ入力４０はプロセッサ２２によって受け取られる。バッファＹ３６を含むＤＲＡＭと結合されたプロセッサ２２は、データ入力４０を処理して、データマネージャ２４のプログラム命令に従ってどのメモリにそれを格納すべきかを決定する。図４に示すように、データ入力４０は最終的に３つのデータストリーム、つまり（１）ファイルデータブロック３５と、（２）最後のデータ部分（ファイルデータバイト）３３と、（３）データ入力４０の状態を識別または記録するために生成または更新される非ファイルデータ（ＦＡＴ）３１とを生じる。ファイルデータブロック３５は、フラッシュメモリ３４に直接書き込まれる一方、最後のデータ部分３３およびＦＡＴ３１はＮＶＲＡＭ３２に格納される。最後のデータ部分３３をフラッシュメモリ３４に転送する前にそれをＮＶＲＡＭ３２に書き込むプロセスは、キャッシングと呼ばれ、それについては以下で詳述する。引き続き追加データがＤＲＡＭ３０Ａ内に受け取られると、バッファＺ３７がフルであること、つまりバッファＺ３７にすでに格納されているファイルデータと追加データとの合計が予め定められたブロックサイズに達したことが決定されるまで、別の最後のデータ部分がＮＶＲＡＭ３２に書き込まれる。その時点で、ファイルデータブロック３５はバッファＺからフラッシュメモリ３４に送られる。最後のデータ部分の残部はバッファＺ内に残される。フラッシュメモリ３４の完全なセクタを書き込むことができ、それにより個々のビットのための消去および書換えが回避される。キャッシングプロセスの結果、フラッシュメモリの書込み効率および推定寿命が増大する。
【００２３】
データマネージャ２４によって実行されるキャッシングプロセスの具体的なワークフローを図５に例示する。データマネージャ２４は、ステップ５０で、Ｘバイトを含むファイルデータをＤＲＡＭ３０Ａ内に受け取ることによって始動する。ファイルデータが格納される場合は常に、それはＤＲＡＭ３０ＡのバッファＹ３６に送られ、プロセッサ２２は、ステップ５２でバッファＹ３６がフルであるかどうかを決定する。換言すると、プロセッサ２２は、バッファＹ３６内のデータが予め定められたブロックサイズに達したかどうかを決定する。バッファＹ３６がフルである場合、ファイルデータの１データブロックが、ステップ５４に従ってフラッシュメモリ３４内に直接書き込まれる。一方、ＮＶＲＡＭ３２内の非ファイルデータまたはＦＡＴ３１は、ステップ５６に示すように、それに応じて更新される。
【００２４】
残りのデータがバッファＹ３６を満たすには不充分であることが決定されるまで、ステップ５０から始まる同じプロセスが、ファイルデータの残りのデータバイト（つまり（Ｘ−Ｃ）バイト）に対して繰り返される。その場合、ステップ５８は、残りのファイルデータをＮＶＲＡＭのバッファＺ３７に一度に１バイトずつ書き込むという命令を含む。特に、バッファＺ３７内のデータバイトのカウントは１バイト増加する一方、残りのファイルデータのカウントは１バイト減少する。各バイト後に、ステップ６０は、バッファＺ３７がフルであるかどうかを決定する。バッファＺ３７がフルである場合、プロセッサはステップ６６で、バッファＺ３７からフラッシュメモリ３４に１データブロックを書き込むように命令する。ひとたびデータブロックがバッファＺ３７からフラッシュメモリ３４に移動すると、バッファＺ３７は、含まれるデータバイトが零としてリセットされる。ステップ６８で、ＮＶＲＡＭ３２内の非ファイルデータまたはＦＡＴ３１がそれに応じて更新される。
【００２５】
ステップ６２に移動し、プロセスは、最後のデータ部分が完全に転送されたかどうかを決定するために検査する。否の場合、プロセスはステップ５８に戻り、別のバイトをバッファＺに書き込む。今、最後のデータ部分は１ブロック未満のサイズから始まるので、バッファＺ３７は、ステップ６０でフルと決定されることはありえない。残りのバイトが全部転送され、ステップ６２でＸ＝０と決定されると、プロセスはステップ６４に移動し、そこでＮＶＲＡＭ３２内のＦＡＴ３１を更新し、プロセスは終了する。ステップ６８のブロック転送の直後に、残りのファイルデータの全てのデータバイトがバッファＺ３７内に格納されたことがステップ６２で決定された場合には、ＮＶＲＡＭ３２およびフラッシュメモリ３４内のデータ格納を反映するように、再びステップ６４でＮＶＲＡＭ３２内のＦＡＴ３１が更新され、最後のデータ部分３３のキャッシングのプロセスが完了する。
【００２６】
これらの発明が関連する技術分野の熟練者は、上記の説明および関連図面に提示された教示の助けを借りて、本明細書に記載した本発明の多くの実施形態および他の実施形態を思い付くであろう。したがって、本発明は開示した特定の実施形態に限定されず、変形および他の実施形態が特許請求の範囲に含まれるように意図されていることを理解されたい。本明細書では特定の用語が使用されているが、それらは一般的かつ説明的な意味で使用したものであって、限定を目的とするものではない。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施形態に係るハンドヘルドコンピューティング装置を示す。
【図２】本発明の一実施形態に係るコンピューティング装置の構成要素を示す。
【図３】本発明の一実施形態に係る図２のコンピューティング装置内のメモリの構成要素を示す。
【図４】本発明の一実施形態に係るメモリ管理のためのデータ処理のデータフローを示す。
【図５】本発明の一実施形態に係るデータ処理およびメモリ管理のワークフローチャートである。
【図１】
2008508596.tif 000003
【図２】
2008508596.tif 000004
【図３】
2008508596.tif 000005
【図４】
2008508596.tif 000006
【図５】
2008508596.tif 000007
【手続補正書】
【提出日】平成18年9月4日(2006.9.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティング装置でファイルデータを受け取るステップと、
前記ファイルデータを処理して、前記ファイルデータが各々予め定められたブロックサイズを有する１つ以上のブロックと、前記予め定められたブロックサイズより小さいサイズを有する最後のデータ部分とから構成されることを決定するステップと、
前記予め定められたブロックサイズを有するデータブロックを格納するように構成された第１メモリに前記１つまたは２つのデータブロックを書き込むステップと、
前記最後のデータ部分を前記第１メモリに送る前に前記最後のデータ部分を第２メモリにキャッシュするステップと、
を含む、コンピューティング装置のメモリ管理の方法であって、
前記最後のデータ部分をキャッシュするステップが、
（Ａ）ファイルデータを格納するように構成されたファイルバッファとして、前記第２メモリの一部を割り当てるステップと、
（Ｂ）前記ファイルバッファ内のデータが前記予め定められたブロックサイズを有することが決定されるまで、前記最後のデータ部分のデータバイトを前記ファイルバッファに書き込むステップと、
（Ｃ）前記ファイルバッファ内の前記データが前記予め定められたブロックサイズを有するという前記決定に応答して、ステップ（Ｂ）を続ける前に、前記データを前記ファイルバッファから前記第１メモリに移動させるステップと、
を含む、
方法。
【請求項２】
前記ファイルデータ用の非ファイルデータを生成するステップと、
前記非ファイルデータを前記第２メモリに格納するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記非データファイルがファイル割当てテーブル（ＦＡＴ）を含む、請求項２に記載の方法。
【請求項４】
前記第１メモリがフラッシュメモリである、請求項１に記載の方法。
【請求項５】
前記第２メモリが不揮発性ランダムアクセスメモリである、請求項２に記載の方法。
【請求項６】
コンピューティング装置のプロセッサで実行されたときに、
（Ａ）ファイルデータ入力を受け取るステップと、
（Ｂ）前記ファイルデータ入力を処理して、前記ファイルデータ入力を、各々閾値数のデータバイトを含む１つ以上のデータブロックと、前記閾値数未満のデータバイトを含む最後のデータ部分とに分割するステップと、
（Ｃ）前記１つ以上のデータブロックを第１メモリに格納するステップと、
（Ｄ）第２メモリが前記閾値数に等しいファイルデータバイトを含むことが決定されるまで、前記最後のデータ部分を１バイトずつ前記第２メモリに書き込むステップと、
（Ｅ）前記第２メモリが前記閾値数に等しいファイルデータバイトを含むという決定に応答して、ステップ（Ｄ）を続ける前に、前記第２メモリから前記第１メモリに前記ファイルデータバイトを移動するステップと、
を含む命令を備えた、コンピュータ可読媒体。
【請求項７】
前記命令がさらに、
前記ファイルデータ入力用の非ファイルデータを生成するステップと、
前記第２メモリに前記非ファイルデータを格納するステップと、
を含む、請求項６に記載のコンピュータ可読媒体。
【請求項８】
前記非ファイルデータがファイル割当てテーブル（ＦＡＴ）を含む、請求項７に記載のコンピュータ可読媒体。
【請求項９】
前記第１メモリがブロックアクセス型メモリである、請求項６に記載のコンピュータ可読媒体。
【請求項１０】
前記第１メモリがフラッシュメモリである、請求項９に記載のコンピュータ可読媒体。
【請求項１１】
前記第２メモリが不揮発性ランダムアクセスメモリである、請求項６に記載のコンピュータ可読媒体。
【請求項１２】
前記閾値数のデータバイトが設定可能である、請求項６に記載のコンピュータ可読媒体。
【請求項１３】
データを受け取りかつ処理するように構成されたプロセッサと、
少なくとも第１メモリおよび第２メモリを含むメモリと、
前記プロセッサによって実行されるデータマネージャと、
を備えたメモリ管理システムであって、
前記データマネージャが、各々予め定められたブロックサイズを有する多数のデータブロックと、前記予め定められたブロックサイズより小さいサイズを有する最後のデータ部分とを前記データ内で画定するようにプログラムされ、
前記データマネージャが前記多数のデータブロックを格納するために前記第１メモリ内の空間を割り当てるようにプログラムされ、かつ
前記データマネージャがさらに、前記最後のデータ部分をキャッシュするために前記第２メモリ内の空間を割り当てるようにプログラムされ、
前記最後のデータ部分が、
（Ａ）ファイルデータを格納するように構成されたファイルバッファとして、前記第２メモリの一部を割り当てるステップと、
（Ｂ）前記ファイルバッファ内のデータが前記予め定められたブロックサイズを有することが決定されるまで、前記最後のデータ部分のデータバイトを前記ファイルバッファに書き込むステップと、
（Ｃ）前記ファイルバッファ内の前記データが前記予め定められたブロックサイズを有するという前記決定に応答して、ステップ（Ｂ）を続ける前に、前記データを前記ファイルバッファから前記第１メモリに移動させるステップと、
を通して、前記第２メモリにキャッシュされる、
システム。
【請求項１４】
前記第１メモリがブロックアクセス型メモリである、請求項１３に記載のシステム。
【請求項１５】
前記第１メモリがフラッシュメモリである、請求項１３に記載のシステム。
【請求項１６】
前記第２メモリが不揮発性ランダムアクセスメモリである、請求項１３に記載のシステム。
【請求項１７】
前記データをユーザに対して表示するための出力インタフェースをさらに備えた、請求項１３に記載のシステム。
【請求項１８】
前記データを受け取るための入力インタフェースをさらに備えた、請求項１３に記載のシステム。
【請求項１９】
通信ネットワークを介して前記データを伝送するためのインタフェースをさらに備えた、請求項１３に記載のシステム。
【請求項２０】
前記データマネージャがさらに、前記データ用のファイル割当てテーブル（ＦＡＴ）を生成し、かつ前記ＦＡＴを前記第２メモリに格納するようにプログラムされた、請求項１３に記載のシステム。
【請求項２１】
データ入力装置と、
データ出力装置と、
通信ネットワークを介して前記データ入力装置、前記データ出力装置、およびデータ源と通信するように構成されたコンピューティング装置と、
を備えたハンドヘルド装置であって、
前記コンピューティング装置が、
データ処理のためのプロセッサと、
少なくとも不揮発性ランダムアクセスメモリおよびブロックアクセス型メモリを含むメモリと、
前記プロセッサによって実行されたときに、
（Ａ）ファイルデータ入力から、各々閾ブロックサイズを有する１つ以上のデータブロックおよび閾ブロックサイズより小さいサイズを有する最後のデータ部分を識別するステップと、
（Ｂ）前記１つ以上のデータブロックを前記ブロックアクセス型メモリに格納するステップと、
（Ｃ）前記不揮発性ランダムアクセスメモリが前記閾ブロックサイズのファイルデータを含むことが決定されるまで、前記最後のデータ部分を１バイトずつ前記不揮発性ランダムアクセスメモリに書き込むステップと、
（Ｄ）前記不揮発性ランダムアクセスメモリが前記閾ブロックサイズのファイルデータを含むことが決定されたことに応答して、ステップ（Ｃ）を続ける前に、前記不揮発性ランダムアクセスメモリから前記ブロックアクセス型メモリに前記ファイルデータを移動するステップと、
を含むデータマネージャと、
を備えて成る、ハンドヘルド装置。
【請求項２２】
前記ブロックアクセス型メモリがフラッシュメモリである、請求項２１に記載のハンドヘルド装置。
【請求項２３】
前記閾ブロックサイズが設定可能である、請求項２１に記載のハンドヘルド装置。
【国際調査報告】
2008508596.tif 000008
2008508596.tif 000009