(57)【要約】高速データアクセスを維持しながら、必要とされるＲＡＭの量を減少させる方法および装置である。データ記録は、回路がパワーダウンされた場合でもデータ記録のコンテンツを維持するために不揮発性メモリ中に保存されることが多い。本発明において、不揮発性ＲＡＭのデータ記録の集合中の各記録は、タグ値を出力する関数Ｈ（ｘ）に入力される。計算されたタグ値は、ＲＡＭ中の予め定められたメモリ位置に保存される。計算された各タグは、長さが不揮発性ＲＡＭ中に保存された記録より短い。したがって、各データ記録に対する１つのタグ値を保存するために必要なＲＡＭは、ＲＡＭ中のデータ記録の集合全体を保存するために必要とされるものより少くなる。Ｈ（ｙ）の値は、ｙに対応したデータ記録エントリが所望されたときに計算される。その後、Ｈ（ｙ）の値はタグ値表中の全ての値と比較される。整合が見出された場合、不揮発性ＲＡＭ中のその位置から対応した記録が検索され、ｙと比較される。値が整合しなかった場合、Ｈ（ｙ）に整合する別の位置を求めてタグ値表がサーチされる。その結果、最小量のＲＡＭだけを必要として不揮発性ＲＡＭのコンテンツとの非常に速い比較が可能となる。【特許請求の範囲】
【請求項１】
個々のデータ記録の集合を生成し、
データ記録の集合をメモリ中に記憶し、
集合中の各データ記録に対するタグ値を生成し、
そのタグ値を高速メモリ中の予め定められた位置に記憶し、
データ記録の集合のサーチを必要とする入力エントリを受取り、
入力エントリに対応した入力エントリタグ値を生成し、
その入力エントリタグ値を高速メモリ中に記憶されているタグ値と比較し、
入力エントリタグ値に整合したタグ値に対応したデータ記録をデータ記録の集合から検索し、
検索されたデータ記録を入力エントリと比較するステップを含んでいる必要な高速メモリ量を最小にする高速データアクセス方法。
【請求項２】
タグ値を生成するステップは、データ記録をハッシュ関数に入力し、ハッシュ関数出力をタグ値として割当てるステップを含んでいる請求項１記載の方法。
【請求項３】
入力エントリタグ値を生成するステップは、入力エントリをハッシュ関数に入力し、ハッシュ関数出力を入力エントリタグ値として割当てるステップを含んでいる請求項２記載の方法。
【請求項４】
データ記録の集合は、不揮発性メモリ中に記憶されている請求項１記載の方法。
【請求項５】
不揮発性メモリはフラッシュメモリである請求項４記載の方法。
【請求項６】
高速メモリはＲＡＭである請求項１記載の方法。
【請求項７】
入力エントリタグ値に整合したタグ値に対応した全てのデータ記録に対してデータ記録の検索および比較ステップを繰返すステップをさらに含んでいる請求項１記載の方法。
【請求項８】
データ記録の集合を規定する複数のデータ記録が記憶される第１のメモリと、
デジタルプロセッサと、
第１のメモリ中に記憶されたデータ記録のそれぞれに対応しているデジタルプロセッサにより計算されたタグ値が記憶される第２のメモリとを具備しており、
デジタルプロセッサは、入力エントリを求めてデータ記録の集合をサーチするリクエストに応答して、入力エントリに対応した入力エントリタグ値を計算し、その入力エントリタグ値を第２のメモリ中に記憶されているタグ値のそれぞれと比較し、入力エントリタグ値に整合したタグ値に対応したデータ記録を検索し、入力エントリをその検索されたデータ記録と比較する、必要な高速メモリ量を最小にする高速データアクセス装置。
【請求項９】
第１のメモリは不揮発性メモリである請求項８記載の装置。
【請求項１０】
第２のメモリはＲＡＭである請求項８記載の装置。
【請求項１１】
データ記録は、電子電話帳中のエントリを含んでいる請求項８記載の装置。
【請求項１２】
タグ値はハッシュ関数への入力としてデータ記録を使用してハッシュ関数の出力として計算される請求項８記載の装置。
【請求項１３】
入力エントリタグ値は、タグ値の計算に使用されたものと同じハッシュ関数を使用して計算される請求項１２記載の装置。
【請求項１４】
第１のメモリ中に記憶されている各データ記録に対して第２のメモリでは２バイトが割当てられる請求項８記載の装置。
【請求項１５】
データ記録の集合を規定する複数のデータ記録が記憶される第１のメモリと、
デジタルプロセッサと、
第１のメモリ中に記憶されたデータ記録のそれぞれに対応しているデジタルプロセッサにより計算されたタグ値が記憶される第２のメモリとを具備しており、
デジタルプロセッサは、入力エントリを求めてデータ記録の集合をサーチするリクエストに応答して、入力エントリに対応した入力エントリタグ値を計算し、その入力エントリタグ値を第２のメモリ中に記憶されているタグ値のそれぞれと比較し、入力エントリタグ値に整合したタグ値に対応したデータ記録を検索し、入力エントリをその検索されたデータ記録と比較する、必要とされるＲＡＭが減少される高速データアクセス向けに構成された電話装置。
【請求項１６】
データ記録の集合は、電子電話帳である請求項１５記載の電話装置。
【請求項１７】
第１のメモリは不揮発性メモリである請求項１５記載の電話装置。
【請求項１８】
第２のメモリはＲＡＭである請求項１５記載の電話装置。
【請求項１９】
タグ値は、ハッシュ関数への入力としてデータ記録を使用してハッシュ関数の出力として計算される請求項１５記載の電話装置。
【請求項２０】
入力エントリタグ値は、タグ値の計算に使用されたものと同じハッシュ関数を使用して計算される請求項１９記載の電話装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子回路に関する。とくに、本発明は、低速の不揮発性メモリからのデータの高速ルックアップおよび検索を維持しながら、装置において必要とされるＲＡＭが減少される新しい改善された方法および装置に関する。
【０００２】
【従来の技術】
あるタイプの電子メモリは、最新の電子装置のほとんど全てにおいて使用されている。電子メモリはフロッピーディスク、磁気テープ、ハードディスクおよび集積回路（ＩＣ）の形態をとることができる。各形態のメモリにはそれぞれ利点と欠点がある。フロッピーディスクは可搬の媒体上で多くのデータ更新を可能にするが、その容量は限られており、読出しおよび書込みアクセス時間が著しく長い。磁気テープおよびハードディスクの両者は非常に大きい容量を有しているが、非可搬性であり、大量のサポートハードウェアを必要とし、その読出しおよび書込みアクセスは低速である。フロッピーディスク、ハードディスクおよび磁気テープ中に保存されているデータは最初に、媒体上に保存される前にソフトウェアでファイルフォーマットにフォーマット化される。データが記憶媒体から再生されるとき、リクエストされたデータの位置を突きとめて抽出するようにソフトウェアファイルルーチンが実行されなければならない。これのためにデータアクセスプロセスがさらに遅くなる。それは、このプロセスがすでに低速であるハードウェアアクセスの上位にソフトウェア層を付け加えるためである。
【０００３】
メモリが可搬装置中に集積される必要がある場合、典型的にＩＣメモリが使用される。さまざまなタイプおよび個数のＩＣがメモリの量をスケールすることができる。ＩＣには最小のサポートハードウェアがあればよく、ＩＣは非常に小型であり、高速読出しおよび書込みアクセスを行うことができる。あるＩＣメモリは、ソフトウェア層を必要とせずに直接アクセスを容易にサポートすることができる。
【０００４】
種々の設計要求に対するソリューションを提供するために種々の異なったタイプのＩＣメモリが利用可能である。それぞれのタイプのメモリが多くの設計要求を満足させることができているが、完全な設計ソリューションを提供するメモリタイプは存在しない。任意の特定のアプリケーションに対して選択されるメモリのタイプは、計画された使用および性能の設計トレードオフに依存する。
【０００５】
最も一般的なタイプのＩＣメモリは、読出し専用メモリ（ＲＯＭ）である。その名称が意味するように、このメモリは読出しアクセスのみ可能である。ＲＯＭ装置は、それがプログラムされると、再度書込みを行われることはできない。埋込まれたソフトウェアアプリケーションは、埋込まれたコードおよびデータ記録を記憶するためにＲＯＭを使用する。埋込まれたソフトウェアアプリケーション内のプロセッサは各命令をＲＯＭから検索し、それを実行する。ＲＯＭ内にプログラムされる情報の揮発性に応じて、異なったタイプのＲＯＭが利用可能である。ＲＯＭ中に記憶されるべき情報が変更されないと予測され、予測されるデバイス量が大きい場合、マスクプログラム可能なＲＯＭが使用される。このタイプのＲＯＭはダイのパッケージ前にマスクプログラムされる。プログラムされる情報は非常に安定していなければならず、かつ改訂をなされてはならない。これは、プログラムされた情報の変更にはマスク変更が必要とされるためである。マスクプログラムされたＲＯＭを使用する利点は、多量の完成した製品のために費用および時間が節約されることである。別のタイプのＲＯＭは、マスクプログラムされたＲＯＭを正当化するのに十分な生産量またはコード安定性を一様に保たない製品に対して利用可能である。
【０００６】
プログラム可能な読出し専用メモリ（ＰＲＯＭ）は、装置製造業者が埋め込まれたコードをプログラムすることを可能にする。これによってコードの改訂は可能になるが、しかしＲＯＭは、それがプログラムされると、依然として修正または消去は不可能である。旧式のコード改訂によりプログラムされた装置は、その旧式のコード改訂により使用されるか、あるいは廃棄されるかのいずれかを行うことが必要となる。
【０００７】
消去可能なプログラム可能な読出し専用メモリ（ＥＰＲＯＭ）は、プログラムされた部分を完全に消去する能力を提供する。ＥＰＲＯＭの消去は、予め定められた時間中ダイを紫外線（ＵＶ）光に露出することにより行われる。ダイはパッケージ上の透明なウインドウを通してＵＶ光に露出されることができる。ＥＰＲＯＭは一度消去されると、再度プログラムされることが可能である。ＥＰＲＯＭは典型的に、予測されるコード改訂数が多い技術開発にしか使用されない。ＥＰＲＯＭは、透明ウインドウに適合することのできるパッケージタイプで制限されるためにＰＲＯＭと比較してはるかに高価である。ＥＰＲＯＭは消去され、再度プログラムされることが可能であるが、コードへの修正は完全にチップの単位で行われなければならない。コード内の変更には、それがたとえ１ビットであっても、完全な消去および再プログラミングが必要である。この制限のために、消去のためのＵＶ光への要求と共に、ＥＰＲＯＭを更新するタスクがもとの装置製造会社（ＯＥＭ）に限られてしまう。
【０００８】
選択的なコンテンツ消去および再プログラミングを可能にする装置は、電気的に消去可能なプログラム可能な読出し専用メモリ（ＥＥＰＲＯＭ）である。通常のＥＥＰＲＯＭは、データが適切に更新されることを可能にする。すなわち、特定のデータ位置が消去され、その同じ位置に新しいデータが重書きされることができる。データはＥＥＰＲＯＭから迅速に読出されることができるが、通常のＥＥＰＲＯＭの書込みサイクルは、読出しより数桁長い時間を要する。通常のＥＥＰＲＯＭを使用する別の欠点は、通常のＥＥＰＲＯＭセルの固有の構造のために発生する。通常のＥＥＰＲＯＭセルの構造には、標準的なＰＲＯＭより多くのトランジスタが必要である。構造が増加した結果、メモリ容量が減少し、費用が増加する。これらの欠点のために、通常のＥＥＰＲＯＭの使用はほとんどの消費者エレクトロニクスアプリケーションにおいて禁止的なものである。
【０００９】
ランダムアクセスメモリ（ＲＡＭ）は、代わりとなる別の記憶手段を代表するものである。ＲＡＭは選択的なデータの読出しおよび書込みを可能にする。読出しおよび書込みはバイト単位で行われることができる。以前書き込まれたバイトに新しいデータを書込む前の消去サイクルは不要である。さらに、ＥＥＰＲＯＭとは異なり、ＲＡＭの読出しおよび書込みサイクルの時間はほぼ同じである。ＲＡＭの密度および容量はＲＯＭに匹敵する。ＲＡＭの使用における主な欠点は、記憶されたデータが揮発性の性質を有することである。ＲＡＭ中に記憶された情報は、ＲＡＭがパワーダウンしたときに常に失われる。これは、ＩＣが電力サイクル後でもメモリのコンテンツが残っている不揮発性メモリであるＲＯＭと対照的である。ＲＡＭのコンテンツを保持するために、常にチップ上において電力が維持されなければならない。このため、正常な給電に対して電池バックアップが必要である。電源が断たれているとき、電池バックアップが故障した場合、ＲＡＭのコンテンツは失われるであろう。このために、ＲＡＭは埋込まれたコードに対して使用されず、ダイナミックメモリに対してのみ使用される。ＲＡＭを埋込まれたコードに対して使用した場合、電池パワーの損失および電源不調の影響を受け易くなる。さらに、ＲＡＭを埋込まれたコードに使用した場合、セルラー電話機のような電池動作装置は、その電池寿命がＲＡＭの定常的な電力要求のために短くなるであろう。ＲＡＭをダイナミックメモリに使用したとき、電力サイクル後にコンテンツが失われるかどうかはシステムにおいて問題ではない。これによって電池バックアップが必要でなくなる。しかしながら、ＲＡＭの費用はＲＯＭの費用より高価である。
【００１０】
さらに別の記憶手段は、一般にフラッシュメモリと呼ばれるセクタＥＥＰＲＯＭである。セクタＥＥＰＲＯＭは、バイト単位での読出しおよび書込みを可能にする不揮発性記憶装置である。ＲＡＭとは異なり、セクタＥＥＰＲＯＭでは、消去動作が以前書込まれたバイト上に再書込みする前に行われなければならない。しかしながら、データ消去はバイト単位で行われることはできない。消去はセクタ単位でのみ行われることができ、この場合そのセクタのサイズは選択された特定のメモリ装置によって規定される。消去可能なセクタは常に１バイトより大きく、６４Ｋバイト程度であることができる。しかしながら、消去サイクルの数は無制限ではなく、最大サイクル寿命によって制限されている。セクタＥＥＰＲＯＭに対する典型的な推奨消去サイクル寿命は、１００，０００サイクルである。したがって、予想される装置寿命にわたって１００，０００より多い消去サイクルを必要とする用途に対して、セクタＥＥＰＲＯＭは使用されない。セクタＥＥＰＲＯＭは、１００，０００より少い消去および再書込みサイクルを必要とする用途では他のタイプの再書込み可能なメモリにまさる利点を有する。セクタＥＥＰＲＯＭは、それが不揮発性であるため、埋込まれたコードアプリケーションに対していずれのタイプのＲＡＭよりも好ましい。セクタＥＥＰＲＯＭは、回路内のメモリの部分に再書込みするセクタＥＥＰＲＯＭの能力のためにＥＰＲＯＭより好ましい。セクタＥＥＰＲＯＭはまたチップ消去に対してＵＶ光を必要としない。セクタＥＥＰＲＯＭは、その装置が同等の再書込み制限を有する通常のＥＥＰＲＯＭより費用が廉価で密度が高いため好ましい。セクタＥＥＰＲＯＭは、ユーザ構成可能なデータの不揮発性記憶のために可搬電子装置において使用される。
【００１１】
【発明が解決しようとする課題】
セクタＥＥＰＲＯＭ中に記憶されたデータは、ファイルシステムに従うようにフォーマット化されることが多い。ファイルフォーマット規定はセクタサイズにされた消去サイクルで部分的に決定される。データは、セクタＥＥＰＲＯＭ中のデータが適所に再書込みされることができないので、特定の位置にメモリマップされない。ソフトウェアオーバーヘッドの追加により、結果的にメモリアクセス時間が劇的に増加する。マルチタスクシステムでは、アクセス時間がさらに増加する。マルチタスクシステムにおける不揮発性メモリのアクセスは高い優先度のタスクによって先取りされる可能性がある。先取りによって優先度の低いほうのタスクはその進行の前に優先度の高いほうのタスクの終了を待つことを要求される。ソフトウェアオーバーヘッドがアクセス時間の計算に含まれている場合、セクタＥＥＰＲＯＭからのデータへのアクセス時間は、ＲＡＭ装置中に記憶されているデータへのアクセス時間より１０００乃至１０，０００倍長い。
【００１２】
長いアクセス時間のためにユーザインターフェース問題が生じる。無線電話機のような可搬電子装置において、不揮発性のユーザ構成可能データは、セクタＥＥＰＲＯＭ中に記憶されることが多い。電話帳データへのアクセスが瞬時に行われたように見える場合、ユーザインターフェースの性能が高められている。セクタＥＥＰＲＯＭからデータを検索すると、電話帳中のエントリと比較して、ユーザが電話番号を入力したときのユーザの応答が遅くなる。これは、セクタＥＥＰＲＯＭからデータを検索するために初期化されなければならないファイルシステムを処理しているソフトウェアオーバーヘッドのためである。長いアクセス時間遅延は、データ検索が予め定められたある時間ウインドウ内で行われなければならない実時間システムにおいて深刻な問題を発生させる。
【００１３】
セクタＥＥＰＲＯＭまたはその他任意の不揮発性メモリの長いアクセス時間に対する１つの解決方法は、不揮発性データ記録からＲＡＭに全てのデータを転送することである。データ記録は、装置のパワーアップ時に不揮発性ＲＡＭから転送されることができる。その後、全てのデータがＲＡＭから迅速に検索されることができる。これによって、ユーザインターフェースの性能が著しく向上する。しかしながら、この解決方法はその費用が著しく高額であり、スペース的にも欠点を有する。ユーザインターフェースの性能向上のみのために不揮発性メモリのコンテンツを冗長に記憶するＲＡＭが追加される必要がある。不揮発性メモリ中に記憶されているデータへのアクセス時の高速ユーザインターフェースを維持するために必要なＲＡＭ量を減少させる方法および装置が必要とされている。
【００１４】
【課題を解決するための手段】
本発明は、低速の不揮発性メモリからの高速のデータ検索をサポートするために必要とされるＲＡＭ量を減少させる新しい改善された方法および装置である。不揮発性メモリの代わりにＲＡＭを使用することにより、データサーチ時間が大幅に減少される。ＲＡＭアクセスは、不揮発性メモリがアクセスされるたびに行われなければならないソフトウェアオーバーヘッドにより不揮発性メモリアクセスより数桁高速である。
【００１５】
データ記録の集合は、不揮発性メモリ中に保存されることができる。不揮発性データ記録へのアクセスは、不揮発性メモリアクセスに関連したソフトウェアオーバーヘッドのために低速である。本発明は不揮発性メモリ中に保存されているデータ記録のサーチの性能を大幅に向上させるために使用されることができる。不揮発性メモリ中に保存されているデータ記録がサーチされなければならないとき、不揮発性メモリへの種々のアクセスが典型的に必要とされる。本発明は、ＲＡＭ中の予め定められた位置に一連の計算されたタグ値を保存することによって不揮発性データ記録へのアクセスの数を減少させる。不揮発性メモリ中に保存されたデータ記録のサーチは、対応したタグ値を求めて予め定められたＲＡＭ位置よってサーチし、その後、整合したタグ値が見出された場合に不揮発性データ記録をルックアップすることによって行われる。ＲＡＭ中の整合したタグ値をサーチすることにより、整合したデータ記録をサーチするために必要とされる典型的な不揮発性メモリアクセス数が１に減少する。これは、多くの不揮発性の記録の検索、および不揮発性データ記録の通常のサーチで必要とされる比較と対照的である。
【００１６】
ＲＡＭにおいて予め定められた数のメモリ位置が割当てられ、それは不揮発性メモリ中に保存されているデータ記録の数に対応している。ＲＡＭにおいて割当てられた各メモリ位置は、不揮発性メモリ中に保存されているデータ記録を保持するのに十分な大きさのものでなくてもよい。好ましい実施形態において、ＲＡＭの２バイトが不揮発性メモリ中の各データ記録位置に割当てられる。不揮発性データ記録は随意の長さのものであってよい。タグ関数Ｈ（ｘ）は、各不揮発性記録を対応したタグ値にマッピングするものと定義される。タグ関数Ｈ（ｘ）はタグ値に対するデータ記録の１：１マッピングを行う必要はない。タグ値に対するデータ記録の１：１マッピングは不揮発性メモリアクセスの数を、データ記録サーチ当り１回の不揮発性記録アクセスに最小にする。
【００１７】
予め定められたＲＡＭ位置は、対応した不揮発性データ記録のコンテンツから決定されたタグ値を保持する。特定のデータ記録のサーチが必要とされたとき、タグ値がサーチされた記録に対して計算される。サーチされた記録がｙで示された場合、タグ値Ｈ（ｙ）が計算される。その後、タグ値Ｈ（ｙ）は、予め定められたＲＡＭ位置中に記憶されている全てのタグ値と比較される。このステップは、ＲＡＭの高速のアクセス能力によって非常に迅速に行われる。ＲＡＭ中に整合タグ値が見出された場合、対応した不揮発性メモリ位置は、特定のＲＡＭ位置に対応したその位置として識別される。不揮発性データ記録のコンテンツは検索され、サーチされた記録と比較される。両者が整合した場合、サーチは終了する。検索された不揮発性メモリ記録とサーチされた記録が整合しない場合、サーチされた記録に対して計算されたタグ値への付加的な整合を求めてＲＡＭ中の残りのタグ値がサーチされる。サーチは、同じ整合が見出されるか、あるいはＲＡＭタグ値の最後のものに達するまで続けられる。
【００１８】
本発明は、大部分のサーチがＲＡＭタグ表を使用して行われるため、データ記録のサーチに要する時間量を著しく減少させる。不揮発性メモリ記録は、タグ値整合が見出されたときにのみアクセスされる。大部分のサーチに対して、１回の不揮発性メモリアクセスが行われるだけでよい。時間の節約によりユーザインターフェース性能の向上が可能となり、一方でＲＡＭの減少によりハードウェア費用が減少する。
【００１９】
【発明の実施の形態】
以下の詳細な説明および添付図面から、本発明の特徴、目的および利点がさらに明らかになる。なお、図面において同じ参照符号が一貫して対応的に使用されている。
電子装置中のメモリおよび記憶装置は、予測される需要に応じて割当てられる。無線電話機のような電子装置において、メモリは典型的に不揮発性メモリおよびＲＡＭの形態である。不揮発性メモリはＰＲＯＭと不揮発性セクタＥＥＰＲＯＭの組合せであってもよい。この技術において一般に知られている不揮発性セクタＥＥＰＲＯＭのタイプはフラッシュメモリである。
【００２０】
フラッシュメモリを使用した場合の利点の１つは、その電子的に消去されて再書込みされる能力である。上述されたフラッシュメモリの欠点の１つは、データを適切に更新することができないことである。全セクタは同時に消去されなければならない。フラッシュメモリのスペースの使用効率を最大にするために、フラッシュメモリ中に保存されたデータは特定の位置にメモリマップされるのではなく、むしろ、それはファイルベースの記憶システムを使用して保存される。それとは対照的に、ＲＡＭ中に記憶されたデータは適切に更新されることができ、また、これによってメモリマップに割当てられることが可能である。
【００２１】
図１は、無線電話機１０のような電子装置のメモリ２０の構造のブロック図を示している。メモリ２０中に保存されている全てのデータは、データベース１１０ 内において管理されている。性質的に揮発性または一時的なデータは、ＲＡＭ１２０ 中に保存される。ＲＡＭ１２０ 中のデータは、それが適切に更新されることができるため、メモリマップに割当てられることが可能である。しかしながら、種々の長さまたは位置を有するデータの別の一部は、ファイルシステム１３０ を使用して管理される。ファイルシステム１３０ は、ファイルベースのデータのフォーマット、位置およびサイズを決定するソフトウェアルーチンである。ファイルベースの構造をそれのデータとして使用する装置の１つは不揮発性メモリ１４０ である。不揮発性メモリ１４０ 中に保存されている全てデータは最初に、ファイルシステム１３０ においてフォーマット化されなければならない。不揮発性メモリ１４０ をファイルシステム１３０ の下層にすることによって、不揮発性メモリ１４０ 中に保存されているデータへのアクセスがさらに遅延される。不揮発性メモリ１４０ 中に記憶されているデータへのアクセスの遅延は、データがユーザインターフェースの一部分として不揮発性メモリから検索されなければならない場合、望ましくない遅延を生じさせる可能性が高い。無線電話機において一般に利用可能なデータを使用する一例は、ユーザにより作成された電話帳のサーチである。
【００２２】
無線電話機には典型的に、ユーザにより作成された電話帳エントリを保存する能力がある。ユーザは典型的に、不揮発性メモリ内に保存された電子電話帳中に１００件を超える電話番号および対応した名前を持っている可能性が高い。実際のエントリ数は、設計者が電話帳に割当てることを同意したメモリスペースの量によってのみ制限される。電話番号および名前はそれぞれ、不揮発性メモリ中に保存されるデータ記録を構成している。各電話番号は３２までの文字長であることができる。この長さによってエリアコード、内線拡張（ｉｎｔｅｒｎａｌ　ｐｈｏｎｅ　ｅｘｔｅｎｓｉｏｎ）、アクセスコードおよび個人識別番号が、指定された番号として自動的にダイヤルされることが可能となる。１つの名前に対して任意の文字数が割当てられることができるが、便宜上３２文字長が仮定される。５１２の組合せられた電話番号と名前のエントリが可能であると仮定した場合、１６Ｋの不揮発性メモリが割当てられなければならない。ユーザが電話番号または名前を入力し、対応した保存された情報を求めて電話帳をサーチすることを望んだ場合、不揮発性メモリ内に保存されたデータ記録がサーチされなければならない。
【００２３】
不揮発性メモリ内に保存されたデータ記録はファイルシステム１３０ によってのみ読出されることができる。ファイルシステム１３０ はデータベース１１０ の下の層である。不揮発性メモリの上部のマルチプル層にアクセスすることは、不揮発性メモリ中に記憶されているデータ記録へのアクセスに大幅な遅延を生じさせる。通常のサーチルーチン中、データ記録は不揮発性メモリから検索され、入力データと比較される。両者が整合した場合、その整合に対応したデータ記録が見出される。両者が整合しなかった場合、最初に検索されたデータ記録は廃棄され、次のデータ記録が不揮発性メモリから検索される。不揮発性メモリからのデータ記録の検索および入力データとの比較は、整合が見出されるまで、あるいは不揮発性メモリ中の全ての記録がサーチされるまで続けられる。データ記録を不揮発性メモリから検索する前に横断されなければならないマルチプル層は、遅延に大きく影響する。入力データが不揮発性メモリ中に保存されている非常に多数の内容と比較されなければならない場合、遅延はユーザインターフェースにとって過度に長いものとなる。名前または電話番号を入力し、そのエントリに関する記憶されている情報の検索を望んだユーザは長時間は待てないと予想される。ユーザインターフェースはユーザにとってシームレスで瞬時のものに思われる必要がある。
【００２４】
不揮発性メモリのデータ記録のサーチに関連した速度を増加させる１つの方法は、サーチをＲＡＭにおいて行うことである。ＲＡＭ中に保存されているデータ記録へのアクセス時間は、不揮発性メモリから等価なデータ記録を検索するためのアクセス時間より数桁速い。アクセス時間の差は、ファイルシステムのためであると考えることができる。ＲＡＭは、データ記録がファイルシステムの下でフォーマット化され、アクセスされることを必要としない。不揮発性メモリの代わりにＲＡＭにおいてサーチを行うために、全ての不揮発性メモリのデータ記録はＲＡＭに転送されることができる。したがって、サーチが必要とされたとき、データ記録は全てＲＡＭにおいて利用可能である。この実施形態には、不揮発性メモリにおいて利用できるデータ記録を冗長的に記憶するだけのために大量のＲＡＭを使用するという欠点がある。付加的なＲＡＭの費用および物理的サイズの増大のために、この解決方法は、無線電話機のような可搬電子装置において実施するには理想的なものとはいえない。
【００２５】
図２のＡには別の実施形態が示されており、この実施形態は、不揮発性メモリ中に記憶されたデータ記録のサーチ時間を改善するが、不揮発性メモリのコンテンツ全体をＲＡＭ中に保存することを必要としない。図２のＡにおいて、不揮発性メモリ中に保存されたデータ記録を保持するためにＲＡＭは使用されない。その代りに、ＲＡＭハッシュビン２２０ がＲＡＭ中に規定される。元の不揮発性（ＮＶ）記録２１０ のそれぞれはハッシュ関数に入力される。入力ＮＶ記録２１０ に対するポインタは、出力ハッシュ番号に対応したＲＡＭハッシュビン２２０ 中に記憶される。ハッシュ関数では、ＲＡＭハッシュビン２２０ に対するＮＶ記録２１０ の１：１マッピングを行う必要がない。しかしながら、ハッシュ関数の選択はアクセス速度と引き換えにＲＡＭハッシュビン２２０ の数とトレードオフする。ハッシュ関数マッピングが特有になると、それだけ一層ＲＡＭハッシュビン２２０ に対して必要とされるスペースが大きくなる。特有のハッシュ関数マッピングの利点は、整合を求めてＮＶ記録２１０ をサーチした場合の不揮発性メモリへのアクセス数が減少することである。
【００２６】
図２Ａに示されている実施形態は次のように行われる。電子装置を初期化したとき、ＮＶ記録２１０ はそれぞれハッシュ関数に入力される。初期化は、電子装置に対する任意の事象として定義されることができる。無線電話機における初期化はパワーアップとして定義される。ハッシュ関数の一例を次の式で示す：
【数１】
2004505332.tif 000002
この式において、ｘｉ はハッシュ関数に入力された特定のＮＶデータ記録中のｉ番目のバイトを表す。ｙｉ は、特定のＮＶデータ記録中のｉバイトを処理した後のハッシュ関数の出力を表す。数Ｎは、各ＮＶデータ記録エントリを含むバイトの数を表す。各ＮＶデータ記録は上述の例では３２バイト長である。上記の例においてデータ記録長はＮ＝３２として示される。実際の実施形態では、計算は整数を使用して行われる。入力から出力へのマッピングは、整数計算が使用される場合、１：１ではないことが認識されることができる。
【００２７】
ハッシュ関数出力は規定されたＲＡＭハッシュビン２２０ の範囲内に入る。ハッシュ関数への入力として使用されたＮＶ記録に対するポインタ２２２ は、ＲＡＭハッシュビン２２０ 中に保存される。ポインタが記憶のために使用するメモリスペースはデータ記録より少い。典型的に、４バイトがポインタに割当てられる。５１２のエントリを有する不揮発性データ記録に関して、ポインタを全て収容するために２Ｋのメモリが必要である。これによって、ＲＡＭメモリスペースの可能な節約が得られる。
【００２８】
各ハッシュビンには、２以上のポインタ２２２ を保存する能力がある。これは、ハッシュ関数においては出力に対する入力の１：１マッピングが行われないために必要である。ハッシュ関数に１：１マッピングが欠如しているために、ＲＡＭメモリ割当てに関する問題が生じる。各ハッシュビンがおそらくただ１つのポインタを有することを保証するために、非常に多くのハッシュビンが規定される必要がある。規定されたハッシュビンの数が少い場合、各ハッシュビンが多くのポインタを記憶する必要がある可能性がある。
【００２９】
設計者は、６４Ｋのハッシュビンが規定された場合に各ハッシュビンがその中に１つのポインタだけを有することを保証することができる。データ記録の全てを識別するのに２Ｋのポインタがあればよいため、明らかに、大多数のハッシュビンが空ポインタを含むこととなる。不揮発性データ記録の全てをＲＡＭ中にロードするより大量のＲＡＭスペースが６４Ｋのハッシュビンの割当てに必要であることは明らかである。したがって、この解決方法は実用不可能である。必要とされるＲＡＭを減少させるために、設計によって６４Ｋ未満のハッシュビンが割当てられる。しかしながら、ハッシュビンの数を減少することにより、任意の１つのハュビンが２以上のポイタン値を含む可能性が必然的に高くなる。
【００３０】
ある入力データへのデータ記録整合を見出すために、入力データは最初にハッシュ関数を通過させられる。その後、ハッシュ関数の出力によりサーチルーチンは特定のハッシュビンに導かれる。ハッシュビンに記憶されるポインタが１つもない場合、不揮発性データ記録中で見出される整合は１つもない。通常のサーチでは、１つの整合も存在しないと決定する前に、不揮発性メモリ中のデータ記録の全てが検索されて入力と比較される必要がある。ハッシュビン方法を使用することにより、１つの整合も存在しないと決定する前に、不揮発性メモリへのアクセスは行われる必要がない。
【００３１】
ハッシュビン中に記憶されるポインタが存在している場合、最初のポインタはハッシュビンから検索され、そのポインタが示すＮＶ記録が検索される。その後、入力と検索されたデータ記録との間で全比較が行われる。両者が同じである場合、整合が見出され、残りの関連したデータ記録が検索されることができる。検索されたデータ記録が整合しない場合、ハッシュビン中に次のポインタが存在するならば、それが検索されなければならない。比較が行われ、整合が見出されるか、あるいはハッシュビンポインタにより示される不揮発性データ記録全ての比較がなされるまで、ハッシュビンからのポインタの検索が繰返される。
【００３２】
前の実施形態では、不揮発性メモリに対して多数のアクセスが行われる可能性がある。不揮発性メモリへのアクセスの数は、各ハッシュビン中に記憶されるポインタの数に依存する。必要とされるハッシュビンの数は、ハッシュ関数に関連している。特有のハッシュビンの数を増やすことにより、不揮発性メモリへのアクセス数が減少する。不揮発性メモリへのアクセス数の減少は、必要とされるＲＡＭの増加という犠牲の下に成立する。
【００３３】
本発明は、データ記録をサーチする回数を減少させると共に必要とされるＲＡＭを減少させる構成を使用する。図２のＢには本発明のブロック図が示されている。本発明において、ＮＶ記録２１０ は上述したようにデータ記録の集合を含んでいる。しかしながら、ＲＡＭにおいてハッシュビンを規定する代りに、ＲＡＭにおいてメモリのブロックがタグ値２３０ に割当てられる。はじめの例において説明したように、不揮発性メモリ中に保存された各データ記録は３２文字長である。５１２の利用可能な記録が不揮発性メモリにおいて割当てられる。これはメモリの１６Ｋに対応する。本発明はＲＡＭスペースの２バイトを不揮発性メモリ中の各データ記録に割当てる。５１２のデータ記録に適合するために、ＲＡＭの１Ｋバイトが割当てられる必要がある。各不揮発性メモリ記録に割当てられるＲＡＭのバイト数は一定なので、対応した不揮発性データ記録に対してＲＡＭアドレス位置が割当てられることができる。一例として、最初の不揮発性データ記録はＲＡＭにおいて割当てられる最初の２バイトに対応している。
【００３４】
各不揮発性データ記録に割当てられたＲＡＭの２バイトは、データ記録全体を保持するには不十分である。その代りに、その２バイトは、デヘータ記録に対応したタグ値を保持する。タグ値は、上述された同じハッシュ関数を使用して生成される。不揮発性メモリ中の各データ記録に対応したタグ値が計算され、ＲＡＭ内の予め定められた位置に保存される。したがって、本発明は割当てられるＲＡＭの量を最小にする。ＲＡＭ中の２バイトは不揮発性データ記録のそれぞれに割当てられ、５１２のデータ記録が存在している。したがって、ＲＡＭの１Ｋだけが割当てられればよい。
【００３５】
入力値が不揮発性メモリのデータ記録のコンテンツと比較される必要がある場合、入力値が最初にハッシュ関数を通過させられる。その後、出力ハッシュ値がＲＡＭ中に保存されているタグ値と比較される。整合したタグ値の位置が突きとめられた場合、そのタグ値の位置に対応した不揮発性メモリのコンテンツが検索され、元の入力値と比較される。両者が同じである場合、整合が見出される。そうでなければ、別のタグ値が整合データ記録を生成するか、あるいはタグ値リストの終りに達するまで、ＲＡＭのタグ値に対するサーチが続けられる。このようにして、ほとんどのサーチがＲＡＭにおいて行なわれ、計算された入力タグ値が前に保存されたタグ値の１つと整合した場合にのみ不揮発性メモリがアクセスされる。ハッシュ関数が生成する複製タグ値の数がそれ程多くない場合、不揮発性メモリへのアクセス数が最小にされる。上述のハッシュ関数を使用することにより、不揮発性メモリへのアクセス数は最小となり、９９％のデータサーチに対して１回である。
【００３６】
図３は、本発明のフローチャートを示している。ルーチンは状態３０１ においてスタートする。このルーチンは、装置がパワーアップに切換えられたときは常に初期化される。無線電話機においては、ユーザが電話機をパワーアップした場合は常にこのルーチンが状態３０１ からスタートする。次にこのルーチンは状態３０４ に進み、不揮発性（ＮＶ）メモリのデータ記録の中の全てのエントリが読出される。次に状態３０８ において、ＮＶメモリエントリに対するタグ値が計算される。各ＮＶメモリエントリに対するタグ値は、上述したハッシュ関数のように関数を使用して計算される。各タグ値には２バイトが必要とされる。
【００３７】
その後、ルーチンは状態３１０ に進み、計算されたタグ値が予め定められたＲＡＭ位置に記憶される。各ＲＡＭ位置はＮＶメモリのデータ記録集合におけるエントリに対応する。一例として、ＲＡＭタグ値表における６番目のエントリは、そのエントリが実際にはＮＶメモリのどこに位置しているかにかかわらず、ＮＶメモリデータ記録における６番目のエントリに対応した絶対アドレスである。
【００３８】
タグ値がＲＡＭ中に保存された後、データ記録のサーチは主としてＲＡＭにおいて行なわれることができる。状態３２０ は、エントリ“ｙ”がデータ記録のコンテンツと比較される必要があることを想定する。無線電話機のような電子装置において、エントリ“ｙ”はユーザにより入力される電話番号に対応することが可能である。データ記録コンテンツは、特定の電話番号に関連した名前および情報に対応する。ユーザは電話番号を入力し、その番号に関して以前記憶された情報の全てを検索することを所望することができる。
【００３９】
サーチの第１のステップは状態３２２ において行なわれ、この状態３２２ において入力“ｙ”に対応したタグ値が計算される。状態３２４ において、サーチで使用されたインデックスカウンタが初期化される。次にフローチャートはポイント３３０ に進む。このポイント３３０ はフローチャートの機能的要素ではなく、図３のフローチャートの状態と図４のフローチャートの状態とを結びつけるために示されているに過ぎない。
【００４０】
図４は、図３のフローチャートと図４のフローチャートとを結びつけるポイント３３０ からスタートする。ルーチンはこのポイント３３０ から状態３４０ に進む。状態３４０ において、ルーチンは、インデックスカウンタにより識別される位置に対応している以前保存されたタグ値をＲＡＭから検索する。次にルーチンは状態３４４ に進み、ここにおいて、エントリ“ｙ”に対応したタグ値は検索されたＲＡＭのタグ値と比較される。検索および比較動作は非常に迅速に行なわれる。これは、タグ値の長さが２バイトに過ぎず、全ての値がＲＡＭ中に存在しているためである。ルーチンにより２つのタグ値は整合しないと決定された場合、ルーチンは状態３５４ に進み、この状態３５４ において、入力タグ値と比較される必要のあるタグエントリがＲＡＭ中に存在するかどうかを調べるためのチェックが行なわれる。状態３５４ において、比較されていないＲＡＭ中のタグ値をルーチンが識別した場合、ルーチンは状態３５８ に進み、インデックスカウンタをインクリメントする。インデックスカウンタがインクリメントされた後、ルーチンは状態３４０ に戻り、インデックスカウンタにより識別された次のタグ値を検索する。
【００４１】
その代わりに、状態３５４ において、エントリタグ値と比較されていないＲＡＭ中のタグ値は１つもないことがルーチンにより決定された場合、ルーチンは状態３６２ に進み、ここで、ルーチンは、入力エントリに整合するデータ記録はメモリ中に１つも存在しないと推断する。その後、ルーチンは終了する。入力エントリに対するタグ値に整合するタグ値が１つもない場合、必然的にその入力エントリに整合するデータ記録は１つも不揮発性メモリ中に記憶されていない。本発明では、この状況において不揮発性メモリへのアクセスは行われない。したがって、不揮発性メモリにアクセスすることなく、サーチによって不揮発性データ記録の整合は１つもないと決定されることができる。
【００４２】
その代わり、ルーチンにより状態３４４ において、検索されたタグ値が入力エントリタグ値と整合すると決定された場合、ルーチンは状態３４８ に進む。この状態３４８ において、ルーチンは、ＲＡＭから以前検索された整合したタグ値に対応したデータ記録を不揮発性メモリから検索する。したがって、不揮発性メモリ中に保存されているデータ記録は、そのデータ記録に対するタグ値が入力エントリのタグ値に整合した場合にのみアクセスされる。
【００４３】
実際のデータ記録が不揮発性メモリから検索されると、ルーチンは状態３５０ に進み、全記録の比較を行う。ハッシュ関数ではデータ記録からタグ値に対する１：１マッピングが行われないため、全記録の比較が要求される。入力エントリおよび不揮発性データ記録は同じタグ値を生成しない可能性があるが、実際のデータ記録は整合を実際に確認するために比較されなければならない。
【００４４】
検索された不揮発性メモリデータ記録が入力エントリに整合した場合、成功的なサーチが行われている。これ以上サーチルーチンを続ける理由がないので、ルーチンは終了し、サーチすべき新しい入力エントリを待つ。
【００４５】
状態３５０ において、検索された不揮発性メモリデータ記録が入力エントリに整合しないとルーチンにより決定された場合、ルーチンは上述したように、状態３５４ に進んで、全てのＲＡＭタグ値がサーチされたか否かを決定する。
【００４６】
図３および４のフローチャートには、低速の不揮発性メモリ中に記憶されたデータ記録の高速サーチを援助するために最小量のＲＡＭがどのようにして使用されることができるかが示されている。不揮発性メモリデータ記録のコンテンツ全体をＲＡＭ中にロードするのではなく、１組のタグ値だけがＲＡＭ中にロードされる。入力エントリを求めてデータ記録がサーチされる必要が生じたとき、最初にその入力エントリは、ＲＡＭ中に保存されたタグ値を生成するために以前使用された同じハッシュ関数を使用してタグ値を生成するために使用される。その後、入力エントリタグ値はＲＡＭ中に保存されているタグ値と連続的に比較される。整合したタグ値が見出された場合、対応したデータ記録は不揮発性メモリから検索される。したがって、不揮発性メモリは、整合したデータ記録が検索される可能性が高い場合にのみアクセスされる。その後、不揮発性メモリから検索されたデータ記録は入力エントリと比較される。２つの記録は同じタグ値を生成するため、整合が得られる可能性は高い。しかしながら、検索されたデータ記録と入力エントリとが整合しなかった場合、その入力エントリのタグ値に整合する任意の他のタグ値を求めてＲＡＭタグ値表の残りのものがサーチされる。ハッシュ関数ではタグ値に対する入力の１：１マッピングはほとんど行われないため、典型的に不揮発性メモリはサーチ当り１回だけアクセスされる。このようにして、不揮発性メモリに対するアクセス数が最小にされ、一方本発明を実施するために必要なＲＡＭ量が最小にされる。
【００４７】
上記の好ましい実施形態の説明は、当業者が本発明を形成または使用することを可能にするために示されたものである。当業者はこれらの実施形態に対する種々の修正を容易に認識し、ここに規定されている一般原理は発明力を要することなく別の実施形態に適用されることができる。したがって、本発明はここに示されている実施形態に制限されず、ここに開示されている原理および新しい特徴との広い適用範囲の一致に従うものである。
【図面の簡単な説明】
【図１】
積層にされたメモリ構造のブロック図。
【図２】
ＮＶメモリテーブルのＲＡＭベースのルックアップの実施を示すブロック図。
【図３】
本発明のＲＡＭ構成のフローチャート。
【図４】
本発明のＲＡＭ構成のフローチャート。
【図１】
2004505332.tif 000003
【図２】
2004505332.tif 000004
【図３】
2004505332.tif 000005
【図４】
2004505332.tif 000006
【国際公開パンフレット】
2004505332.tif 000007
2004505332.tif 000008
2004505332.tif 000009
2004505332.tif 000010
2004505332.tif 000011
2004505332.tif 000012
2004505332.tif 000013
2004505332.tif 000014
2004505332.tif 000015
2004505332.tif 000016
2004505332.tif 000017
2004505332.tif 000018
2004505332.tif 000019
2004505332.tif 000020
2004505332.tif 000021
2004505332.tif 000022
2004505332.tif 000023
2004505332.tif 000024
2004505332.tif 000025
2004505332.tif 000026
2004505332.tif 000027
2004505332.tif 000028