(57)【特許請求の範囲】
【請求項１】
連続ストリームで大容量記憶媒体との間で移動するデータを操作するデバイスであって、
大容量記憶媒体との間で移動するデータをプロセッサの制御の下で処理する、プロセッサと大容量記憶媒体との間に配置する再構成可能論理デバイスを有し、再構成可能論理デバイスが、大容量記憶媒体から暗号化されたデータストリームを受け取るように構成され、再構成可能論理デバイスが多機能パイプラインを含み、パイプラインが、異なる処理機能を有する複数のパイプライン化されたデータ処理エンジンを含み、パイプライン化されたデータ処理エンジンが、暗号解読エンジンと下流の検索エンジンとを含み、暗号解読エンジンが、受け取ったデータストリームに暗号解読動作を行うことによって、暗号解読されたデータストリームを作成するように構成され、検索エンジンが、暗号解読されたデータストリーム内のデータキーの存在について、暗号解読されたデータストリームに検索動作を行うように構成され、再構成可能論理デバイスが制御プロセッサをさらに含み、制御プロセッサが、パイプラインの各処理エンジンを制御可能にアクティブ化または非アクティブ化することにより、パイプラインの機能を規定するように構成され、パイプラインの機能が、アクティブ化された各データ処理エンジンの機能性を組み合わせたものであり、制御プロセッサが、さらに、暗号解読エンジンと下流の検索エンジンがそれぞれの暗号解読動作と検索動作を同時に実行するように、暗号解読エンジンと下流の検索エンジンとを制御可能にアクティブ化するように構成される、デバイス。
【請求項２】
再構成可能論理デバイスが、さらにデータキーを保管するように構成され、検索エンジンが、（１）ストリーミングする暗号解読されたデータを受け取り、（２）（ｉ）ストリーミングする暗号解読されたデータをデータキーに対して処理して、ストリーミングする暗号解読されたデータとデータキーとの類似性を示す信号を発生し、（ｉｉ）発生された信号を閾値と比較することにより、ストリーミングする暗号解読されたデータがデータキーに一致すると考えられるかどうかを判定することにより、マッチング動作を行うようにさらに構成され、検索エンジンが近似マッチング動作または正確マッチング動作を行うかどうかを制御するように、さらに、近似マッチング動作について、近似マッチング動作により返される近似マッチの程度を制御するように閾値が調整可能である、請求項１に記載のデバイス。
【請求項３】
データキーが、ディジタルデータキーを含み、検索エンジンが、ストリーミングする暗号解読されたデータの一部をデータキーに対して１フレームずつ処理するように構成された、請求項１に記載のデバイス。
【請求項４】
多機能パイプラインが、パイプライン化されたデータ処理エンジンの１つとして伸張エンジンをさらに含み、伸張エンジンが暗号解読エンジンと検索エンジンとの間に配置され、制御プロセッサが、伸張エンジンを制御可能にアクティブ化するように構成され、暗号化されたデータが暗号化された圧縮データを含み、伸張エンジンが、暗号解読された圧縮データを伸張することにより、暗号解読された伸張データを検索エンジンで利用可能にするように構成された、請求項１に記載のデバイス。
【請求項５】
多機能パイプラインが、パイプライン化されたデータ処理エンジンの１つとして別のデータ処理エンジンをさらに含み、制御プロセッサが、別の処理エンジンを制御可能に非アクティブ化して、別の処理エンジンをパイプライン内のパススルーステージにするように構成される、請求項１に記載のデバイス。
【請求項６】
暗号解読エンジンが、複数の暗号解読ラウンドを介して受信したデータストリームを暗号解読するようにさらに構成され、暗号解読エンジンが、複数の組合せ論理構成要素を含み、各組合せ論理構成要素が異なる暗号解読ラウンドに対応し、暗号解読ラウンドが完全にパイプライン化されるように、組合せ論理構成要素が、暗号解読エンジン内で互いにパイプライン化される、請求項１に記載のデバイス。
【請求項７】
プロセッサと大容量記憶媒体とをさらに含む、請求項１から６のいずれか一項に記載のデバイス。
【請求項８】
連続ストリームで大容量記憶媒体との間で移動するデータを操作する方法であって、
大容量記憶媒体との間で移動する暗号化されたデータストリームを、再構成可能論理デバイスで受け取るステップであって、再構成可能論理デバイスがプロセッサと大容量記憶媒体との間に配置されて、大容量記憶媒体との間で移動するデータをプロセッサの制御の下で処理し、再構成可能論理デバイスが多機能パイプラインを含み、パイプラインが、異なる処理機能を有する複数のパイプライン化されたデータ処理エンジンを含み、パイプライン化されたデータ処理エンジンが、暗号解読エンジンと下流の検索エンジンとを含み、再構成可能論理デバイスが制御プロセッサをさらに含み、制御プロセッサが、パイプラインの各処理エンジンを制御可能にアクティブ化または非アクティブ化することにより、パイプラインについて機能を規定するように構成され、パイプラインの機能が、アクティブ化された各データ処理エンジンの機能性を組み合わせたものである、ステップと、
制御プロセッサが暗号解読エンジンと下流の検索エンジンとを制御可能にアクティブ化するステップと、
暗号解読エンジンを用いて、受け取ったデータストリームに暗号解読動作を行うことによって、暗号解読されたデータストリームを作成するステップと、
検索エンジンを用いて、暗号解読されたデータストリーム内のデータキーの存在について、暗号解読されたデータストリームに検索動作を行うステップを含み、暗号解読エンジンと検索エンジンがそれぞれの暗号解読動作と検索動作を同時に実行する、方法。
【請求項９】
検索動作を行うステップが、（１）データキーを保管するステップと、（２）ストリーミングする暗号解読されたデータを受け取るステップと、（３）（ｉ）ストリーミングする暗号解読されたデータをデータキーに対して処理して、ストリーミングする暗号解読されたデータとデータキーとの類似性を示す信号を発生し、（ｉｉ）発生された信号を閾値と比較することにより、ストリーミングする暗号解読されたデータがデータキーに一致すると考えられるかどうかを判定することにより、マッチング動作を行うステップとを含み、検索エンジンが近似マッチング動作または正確マッチング動作を行うかどうかを制御するように、さらに、近似マッチング動作について、近似マッチング動作により返される近似マッチの程度を制御するように閾値が調整可能である、請求項８に記載の方法。
【請求項１０】
データキーが、ディジタルデータキーを含み、検索動作を行うステップが、ストリーミングする暗号解読されたデータの一部をデータキーに対して１フレームずつ処理するステップをさらに含む、請求項８に記載の方法。
【請求項１１】
多機能パイプラインが、パイプライン化されたデータ処理エンジンの１つとして伸張エンジンをさらに含み、伸張エンジンが暗号解読エンジンと検索エンジンとの間に配置され、暗号化されたデータが暗号化された圧縮データを含み、前記方法は、
制御プロセッサが伸張エンジンを制御可能にアクティブ化するステップと、
伸張エンジンを用いて暗号解読された圧縮データを伸張することにより、暗号解読された伸張データを検索エンジンで利用可能にするステップをさらに含む、請求項８に記載の方法。
【請求項１２】
多機能パイプラインが、パイプライン化されたデータ処理エンジンの１つとして別のデータ処理エンジンをさらに含み、前記方法は、
制御プロセッサが別の処理エンジンを制御可能に非アクティブ化して、別の処理エンジンをパイプライン内のパススルーステージにするステップをさらに含む、請求項８に記載の方法。
【請求項１３】
暗号解読動作を行う該ステップが、暗号解読エンジンが複数の組合せ論理構成要素を使用して複数の暗号解読ラウンドを介して受信したデータストリームを暗号解読することを含み、各組合せ論理構成要素が異なる暗号解読ラウンドに対応し、暗号解読ラウンドが完全にパイプライン化されるように、組合せ論理構成要素が、暗号解読エンジン内で互いにパイプライン化される、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、その開示全体が参照によって本明細書に組み込まれる、２００３年５月２３日出願の米国特許仮出願第６０／４７３０７７号、名称「Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄａｔａ  Ｓｔｏｒａｇｅ  ａｎｄ  Ｐｒｏｃｅｓｓｉｎｇ」の恩恵を主張する。
【０００２】
本願は、その両方の開示全体が参照によって本明細書に組み込まれる、２００２年５月２１日出願の米国特許出願第１０／１５３１５１号、名称「Ａｓｓｏｃｉａｔｉｖｅ  Ｄａｔａｂａｓｅ  Ｓｃａｎｎｉｎｇ  ａｎｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ  Ｕｓｉｎｇ  ＦＰＧＡ  Ｄｅｖｉｃｅｓ」、および現在、米国特許第６７１１５５８号である、２０００年４月７日出願の米国特許出願第０９／５４５４７２号、名称「Ａｓｓｏｃｉａｔｉｖｅ  Ｄａｔａｂａｓｅ  Ｓｃａｎｎｉｎｇ  ａｎｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ」の一部継続出願でもある。
【背景技術】
【０００３】
指摘は、平均データベースサイズおよび関連ソフトウェアサポートシステムが、プロセッサ性能の向上より高い割合で（すなわち、約１８ヵ月に２倍を超えて）増加していることである。これは、より詳細な情報を保管すること、より長い期間にわたり情報を保管すること、異なる組織からのデータベースをマージすること、および新生の重要なアプリケーションから生じた大きい新しいデータベースを扱うことの望みを制限なしに含む、複数の要因に起因する。たとえば、大きく急速に成長するデータベースを有する２つの新生のアプリケーションが、遺伝学の革命に関連するものと、インターネット上の情報のカタログ作成およびアクセスに関連するものである。インターネットの場合に、現在の産業界の見積は、１５０万を超えるページが毎日インターネットに追加されているというものである。物理的レベルで、これは、磁気記憶密度が、過去５年間に毎年２倍程度になってきたディスク記憶性能の著しい向上によって可能にされてきた。
【０００４】
検索機能および取出機能は、インデクシングされている時に、情報に対してより簡単に実行される。たとえば、金融情報に関して、この情報を、会社名、株式銘柄、および価格によってインデクシングすることができる。しかし、しばしば、検索される情報は、分類またはインデクシングが困難であるタイプ、または複数のカテゴリに含まれるタイプのいずれかである。その結果、情報検索の精度は、それに関して作成されたインデックスの精度および総合性と同程度にすぎない。しかし、インターネットの場合に、情報はインデクシングされていない。インデクシングのボトルネックは、適度な時間でウェブページにアクセスするのに必要な逆インデックスを開発するのに要する時間である。たとえば、サーチエンジンが使用可能であるが、扱いやすい結果を作る検索を構成することは、検索命令のより少ない非常に詳細なセットによって生成される多数の「ヒット」に起因して、ますます困難になりつつある。このため、複数の「インテリジェント」サーチエンジンが、Ｇｏｏｇｌｅなど、ウェブ上で提供されてきたが、これらは、当然と思われている望ましくない「ヒット」を除去する論理を使用して、検索結果を減らすことを目的とするものである。
【０００５】
次世代インターネット、さらに高速のネットワーク、およびインターネットコンテンツの拡張があるので、このボトルネックは、重大な関心事になりつつある。さらに、タイムリーな基礎で情報にインデクシングすることが、対応してきわめて困難である。インターネットの場合に、現在の産業界の見積は、１５０万を超えるページが、毎日インターネットに追加されているというものである。その結果、逆インデックスの維持および更新は、膨大な連続的な仕事になり、それが引き起こすボトルネックが、既存の検索システムおよび取出スステムの速度および精度に対する主要な障害になりつつある。しかし、使用可能な情報のますます増加する量を仮定すれば、所望の情報を素早く正確に検索し、取り出す能力が、重大になってきた。
【０００６】
大きいデータベースを扱う連想記憶デバイスが、従来技術で知られている。一般に、これらの連想記憶デバイスには、コンピュータ、コンピュータネットワーク、および類似物のための周辺メモリが含まれ、この周辺メモリは、コンピュータ、ネットワークなどに対して非同期に動作し、特殊化された検索に関する高い効率を提供する。さらに、これらのメモリデバイスに、周辺メモリにアクセスする際の主ＣＰＵに対する援助として、ある限られた意思決定ロジックを含めることができることも、従来技術で知られている。高速ディスクまたは高速ドラムなどの回転式メモリと共に使用されるように特に適合された、そのような連想記憶デバイスの例を、その開示が参照によって本明細書に組み込まれている米国特許第３９０６４５５号に見出されることができる。この特定のデバイスは、回転式メモリと共に使用される方式を提供し、任意の論理操作を実行する前に、メモリをプリソートし、その後にソートするために、メモリセクタに対する２パスが必要であることを教示している。したがって、このデバイスは、磁気テープまたは類似物などの線形メモリまたはシリアルメモリと共に使用することに適さないものとして教示されている。
【０００７】
従来技術のデバイスの他の例を、その開示が参照によって本明細書に組み込まれている、米国特許第３７２９７１２号、米国特許第４４６４７１８号、米国特許第５０５００７５号、米国特許第５１４０６９２号、および米国特許第５７２１８９８号にも見出されることができる。
【０００８】
例として、米国特許第４４６４７１８号で、Ｄｉｘｏｎは、固定された個数のバイトに対する固定された比較を実行している。それらは、データを任意にスキャンし、相関させる能力を有しない。それらは、所与のディスクシリンダ内のトラックに沿ってシリアルに検索するが、ディスクを横切る並列検索に関する備えがない。Ｄｉｘｏｎの比較は、固定され変わらない個数の標準論理動作タイプによって制限されている。さらに、提示された回路は、これらの単一論理動作だけをサポートする。近似マッチングまたはファジイマッチングのサポートはない。
【０００９】
これらの従来技術の連想記憶デバイスは、多くの場合に、大容量記憶装置である周辺メモリとの間の情報の入出力を高速化する試みを呈するが、すべてが、メモリ位置のディジタルアドレスまたはディジタル内容のいずれかを読み取り、解釈することによるディジタル形式で保管されたデータへの古典的アクセスに頼る。言い換えると、そのようなデバイスのほとんどは、そのアドレスによってデータにアクセスするが、当技術分野でよく知られている内容アドレッシングの威力を利用するいくつかのデバイスがある。それにもかかわらず、本発明人が知っている従来技術のすべてで、データを識別しかつ処理のためにデータを選択するために、アドレスまたはアドレッシングされた位置に含まれるデータのディジタル値を、そのディジタルの形態で読み取りかつ解釈しなければならない。これは、アドレスまたは内容によって表されるディジタルデータを読み取り、かつ解釈するのに処理時間を要するだけではなく、アクセス回路が、保管されたデータの構造に従ってメモリを処理することを必然的に必要とする。言い換えると、データがオクテット単位で保管されている場合に、アクセスする回路は、オクテット単位でデータにアクセスし、増分的な形でこれを処理しなければならない。この「スタートアンドストップ」処理は、データにアクセスするのに必要な入出力時間を増やすように働く。当技術分野でよく知られているように、この入出力時間は、通常、任意のコンピュータまたはコンピュータネットワークの処理能力のボトルネックおよび実際の限度を表す。
【００１０】
さらに、検索に使用可能な膨大な量の情報を仮定すれば、データ削減動作およびデータ分類動作（たとえば、ある集約形式でデータを要約する能力）が、重要になってきた。しばしば、データ削減機能を素早く実行する能力が、会社にかなりの競争上の利益をもたらすことができる。
【００１１】
同様に、ディジタルイメージング技術の改良によって、イメージに対するものなどの２次元マッチングを実行する能力が必要になってきた。たとえば、顔もしくは網膜などの個人の特定のイメージまたは指紋に対してマッチングを実行する能力は、２００１年９月１１日のテロリスト攻撃に鑑みて、セキュリティに対する労力を向上させるので、法施行に重要になりつつある。イメージマッチングは、自動目標認識の分野で軍にも重要である。
【００１２】
最後に、既存の検索デバイスは、現在、変化する適用の要求に応答して素早く簡単に構成されることができない。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】米国特許第３９０６４５５号明細書
【特許文献２】米国特許第３７２９７１２号明細書
【特許文献３】米国特許第４４６４７１８号明細書
【特許文献４】米国特許第５０５００７５号明細書
【特許文献５】米国特許第５１４０６９２号明細書
【特許文献６】米国特許第５７２１８９８号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１４】
したがって、従来技術の上記および他の問題を克服する、改良された情報検索取出のシステムおよび方法の必要がある。
【課題を解決するための手段】
【００１５】
親出願である米国特許出願第１０／１５３１５１号に記載されているように、従来技術の上記および他の問題を解決するために、本発明人は、複数の実施形態で、これらの従来技術の制限に対する洗練された単純な解決方法を提供すると同時に、大容量記憶メモリに保管されたデータに関するアクセス時間を劇的に減らす、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を使用する連想記憶の方法および装置の構成および開発に成功した。本明細書に記載されているように、米国特許出願第１０／１５３１５１号の発明は、それぞれが独自の利点を有する複数の実施形態を有する。該米国特許出願第１０／１５３１５５号の親出願である米国出願特許第０９／５４５４７２号、現在の米国特許第６７１１５５８号は、本発明のこの部分に使用可能なさまざまな種類のデバイス間の選択に関して特定することなく、プログラマブルロジックおよびプログラマブル回路全般の使用を、開示しかつ主張する。米国特許出願第１０／１５３１５１号では、本発明人は、より具体的に、最良の態様として、さまざまな理由から回路の一部としてのＦＰＧＡの使用をより具体的に開示した。とりわけ重要な理由が、速度である。さらに、速度が関わる動作の２つの異なる態様がある。第１の態様は、再構成の速度である。ＦＰＧＡを現場で素早くプログラムして、テンプレートを使用する検索方法を最適化することができ、このテンプレートが、前もって準備され、接続するバスを介してＦＰＧＡに単に通信されることが、当技術分野で知られている。異なる方法を使用して検索することが望まれた場合に、ＦＰＧＡを、最小のクロックサイクル数で、別の準備されたテンプレートを用いて素早く好都合に再プログラムし、第２の検索を即座に開始することができる。したがって、再構成可能ロジックとしてのＦＰＧＡを用いると、他のタイプの再プログラム可能論理デバイスに対して、ある検索から別の検索へのシフトが、非常に簡単で素早くなる。
【００１６】
速度の第２の態様は、プログラムされた後に、検索が必要とする時間の長さである。ＦＰＧＡは、ハードウェアデバイスなので、検索は、ハードウェア処理速度で行われ、これは、たとえばマイクロプロセッサで経験されるソフトウェア処理速度より数桁速い。したがって、ＦＰＧＡは、しばしばそうであるように速度が考慮事項である場合に、他のソフトウェア実装より望ましい。
【００１７】
テンプレートの使用を考慮すると、米国特許出願第１０／１５３１５１号に、少なくとも複数の「包括的」テンプレートを、事前に準備し、絶対検索、近似検索、またはブール代数論理機能を組み込まれた上位のもしくは高度な検索モードのいずれかでのテキスト検索の実行、あるいはグラフィックス検索モードでの使用に利用可能にすることができることが開示されている。これらを、ＣＰＵメモリに保管し、コマンドの際に使用可能にするか、これらの検索の１つを示すソフトウェアキューに応答して自動的にロードすることができる。
【００１８】
考慮すべきもう１つの要因が、コストであり、ＦＰＧＡの最近の価格低下によって、ＦＰＧＡが、特にＰＣ市場を目標とするハードディスクドライブアクセラレータ（ａｃｃｅｌｅｒａｔｏｒ）の一部として、本願の好ましい実施形態としての実装により適したものになった。さらなるコスト低下が、この実施形態ならびに下で詳細に説明する他の実施形態に関する、ＦＰＧＡの望ましさを増やす。
【００１９】
一般に、米国特許出願第１０／１５３１５１号の発明は、すべてをハードウェアで、本質的に回線速度で、検索のテンプレートを含め、比較を行うのにＦＰＧＡを使用する、大容量記憶媒体に保管されたデータの連続的読取とのデータキーの近似マッチングを介する、データ取出の技術として説明することができる。ＦＰＧＡを使用することによって、一般に知られている多数の利点および特徴が使用可能にされる。これには、ＦＰＧＡを「パイプライン」オリエンテーション（ｐｉｐｅｌｉｎｅ  ｏｒｉｅｎｔａｔｉｏｎ）で、「並列」オリエンテーション（ｐａｒａｌｌｅｌ  ｏｒｉｅｎｔａｔｉｏｎ）で、または複雑な検索アルゴリズムを可能にするデータ経路を相互接続する複雑なウェブオーバーレイを組み込んだアレイに配置する能力が含まれる。最も広義の、多分最も強力な実施形態で、データキーを、アナログ信号とすることができ、このデータキーは、大容量記憶媒体を横切って進む時に、通常の読取／書込デバイスによって生成されるアナログ信号とマッチングされる。言い換えると、従来技術で必要なものとして教示された、大容量記憶媒体に保管されたディジタルデータのアナログ表現を読み取るステップだけではなく、比較の前にその信号をディジタルフォーマットに変換するステップが、除去される。さらに、データが編成されかつ保管された構造またはフォーマットを使用して、データを「フレーミング」または比較するという要件はない。アナログ信号について、指定される必要があるものは、「読取」信号の対応する連続して変化する選択された時間期間との比較に使用される、信号の経過時間だけである。従来技術で知られている多数の標準的な相関技術のいずれかを使用することによって、データ「キー」を、データ信号のスライディング「ウィンドウ」と近似的にマッチングして、一致を判定することができる。重要なことに、同一の量のデータを、はるかに素早く走査することができ、検索要求と一致するデータを、はるかに素早く判定することもできる。たとえば、本発明人は、２００メガバイトのＤＮＡ配列のＣＰＵベース近似検索が、データベースにインデクシングするオフライン処理が既に完了していると仮定して、現在の「ハイエンド」システムで１０秒を要する可能性があることを見出した。同一の１０秒間で、本発明人は、本発明を使用する近似マッチについて、１０ギガバイトのディスクを検索できることを見出した。これは、性能での５０：１の改善を表す。さらに、通常のハードディスクドライブにおいて、４つの表面および対応する読取／書込ヘッドがあり、各ヘッドが本発明を備えるならば、これらのすべてを並列に検索することができる。これらの検索は、並列に進行することができるので、総合的な速度向上または改善は、２００：１の利点を表す。さらに、追加のハードディスクドライブに、並列にアクセスすることができ、これらをスケーリングして、従来のシステムに対する速度の利点をさらに増やすことができる。
【００２０】
適切な相関またはマッチング技術を選択することと、および適切な閾値を設定することによって、検索を、所望の信号と正確に一致するように行うことができ、あるいは、より重要で多分より強力なことに、閾値を下げて、近似一致検索をもたらすことができる。これは、一般に、データベースを走査して、データが探されているものの近似でしかない可能性がある場合でも有効である可能性がある「ヒット」を見つけることができるという点で、より強力な検索モードと考えられる。これによって、改ざんされたデータ、不正確に入力されたデータ、一般にあるカテゴリにのみ対応するデータを見つける検索、ならびに多くの応用例で非常に望ましい他の種類のデータ検索が可能になる。たとえば、ＤＮＡ配列のライブラリを検索し、残基の所望の配列への近似一致を表すヒットを見つけることが望まれる場合がある。これは、所望の配列に近い配列が見つかり、許せる個数の残基不一致の相違だけでは破棄されないことを保証する。検索を望まれる情報のさらに増える量およびタイプを仮定すると、より複雑な検索技術が必要である。これは、分子生物学の領域で特にそうであり、「遺伝子（またはそれを符号化するタンパク）の生物学的機能を推論する最も強力な方法の１つは、タンパクおよびＤＮＡ配列データベースに対する配列類似性検索によるものである」（Ｇａｒｆｉｅｌｄ、「Ｔｈｅ  Ｉｍｐｏｒｔａｎｃｅ  ｏｆ（Ｓｕｂ）ｓｅｑｕｅｎｃｅ  Ｃｏｍｐａｒｉｓｏｎ  ｉｎ  Ｍｏｌｅｃｕｌａｒ  Ｂｉｏｌｏｇｙ」、２１２〜２１７ページ。その開示は、参照によって本明細書に組み込まれている）。配列マッチングに関する現在の解決方法は、ソフトウェアまたは再構成可能でないハードウェアでのみ使用可能である。
【００２１】
もう１つの応用例では、インターネット検索エンジンによって提供されるインターネット検索が用いられる。そのような検索で、近似マッチングは、検索を失敗させず、または組み合わされた数の特殊化された検索を必要とせずに、綴りの誤った単語、異なる綴りを有する単語、および他の変形に対処することを可能にする。この技術は、検索エンジンが、所与の検索に関するより多数のヒットを提供することを可能にし、検索でより多数の関連するウェブページが見つかり、カタログ化されることを保証する。しかしながら、上で述べたように、この近似マッチングは、それ自体がそれ自体の問題を作るより多数の「ヒット」を作るより大きい網を投げる。
【００２２】
本発明の技術のもう１つの可能な応用例は、サイズが膨大であるかアナログ表現として保管されている可能性があるデータベースのアクセスに関するものである。たとえば、我々の社会では、司法手続きを含む多数の裁判所での記録デバイスの実装およびその使用が見られる。最近の歴史で、大統領執務室で行われたテープ録音が、弾劾公聴会で重要性を増した。理解されるように、大統領の任期中に行われるテープ録音は、膨大なデータベースに蓄積される可能性があり、これは、重要である可能性がある特定の単語が話された瞬間を見つけるために、複数の人がそれを聞くことを必要とする可能性がある。本発明の技術を使用すると、データベースが連続的な形で高速で走査される間に、話された単語のアナログ表現をキーとして使用し、一致を探すことができる。したがって、本発明および親発明は、大量のアナログデータベースならびに大量のディジタルデータベースに関する強力な検索ツールを提供する。
【００２３】
テキストベース検索は、上で説明したように本発明および親発明によって対処されているが、イメージ、サウンド、および他の表現を含む記憶媒体は、伝統的に、テキストよりも検索が困難であった。本発明および親発明は、そのような内容またはその断片の存在に関する大きいデータベースの検索を可能にする。たとえば、この場合のキーは、探されるイメージを表す画素の行またはクォドラントである。キーの信号の近似マッチングは、キーへの一致または近い一致の識別を可能にすることができる。もう１つのイメージ応用例では、画素または画素のグループの差を検索し、結果として注記することができ、これは、同一の地理的位置のイメージ間の比較が、装置または部隊の移動を示すものとして重要である衛星イメージングに重要である可能性がある。  本発明および親発明は、下でより具体的に注記するように、複数の構成のいずれかで実施することができる。しかし、１つの重要な実施形態は、多分、ハードディスクドライブとシステムバスとの間のインターフェースとして、どのＰＣにもたやすくインストールされるディスクドライブアクセラレータの形である。このディスクドライブアクセラレータは、標準化されたテンプレートの組を備え、ＣＰＵがドライブからデータにアクセスする速度を劇的に高める「プラグアンドプレイ」ソリューションを提供する。これは、ＰＣの大きいインストールベースに販売されるアフターマーケットデバイスまたは改装デバイスになる。また、これは、ドライブケースのエンベロープ内または外部ドライブのエンクロージャ内に、パッケージ化されて新しいディスクドライブの一部として提供されるか、内蔵ドライブ用アダプタとしての追加プラグインＰＣカードとして提供される。さまざまな種類のデータベースに対するさまざまな種類の検索の追加テンプレートを、望み通りに、ＣＤに符号化することによるなど、アクセラレータの購入と共に、またはダウンロード用にインターネットを介してのいずれかで入手可能にすることができる。
【００２４】
本発明は、親出願である米国特許出願第０９／５４５４７２号および米国特許出願第１０／１５３１５１号に開示された新規の革新的な技術を拡張し、ＦＰＧＡなどのプログラマブル論理デバイス（ＰＬＤ）が、暗号化、暗号解読、圧縮、および伸張などの動作を含むがこれらに制限されない、さまざまな追加の処理動作のどれでも実行する。したがって、本願の技術は、ＰＬＤがデータ操作動作を実行するように拡張される。本明細書で使用する用語「操作する」または「操作」は、データに対して実行される圧縮動作、伸張動作、暗号化動作、および暗号解読動作のいずれかまたはすべてと組み合わされた、データに対する検索動作、削減動作、または分類動作の実行、あるいは、同様にデータに対して実行される検索動作、削減動作、分類動作、暗号化動作、および暗号解読動作のいずれかまたはすべてと組み合わされた、または単独でのデータに対する圧縮動作または伸張動作の実行を指す。これらの操作動作を、本明細書で開示される発明的技術に起因して非常に高速で実行できるだけではなく、これらの動作は、本明細書で開示されるＦＰＧＡなどのＰＬＤで実施される時に、コンピュータシステムのソフトウェアで動作している可能性があるウィルスまたはマルウェア（ｍａｌｗａｒｅ）による、アクセスまたは読取から暗号解読されたおよび／または伸張されたデータを保護することと、保管されたデータの処理に再構成可能ロジックを使用することとによって、データセキュリティも強化する。本発明のより強力な応用例の中に、クリプトサーチ（ｃｒｙｐｔｏ−ｓｅａｒｃｈｉｎｇ）と呼ばれることができる、暗号化されたデータ内の高速検索の実行がある。クリプトサーチを用いると、暗号化されたデータのストリームが処理されて、まず、データストリームが暗号解読され、次に、暗号解読されたデータ内で検索動作が実行される。
【００２５】
データ所有者にとってのデータセキュリティの価値は、過小評価することができず、ますます重要性が高まっており、誰がいつどのデータにアクセスできるかを制御する能力は、データセキュリティの中心に位置する。その多数の独自の応用例の中で、本発明は、誰がデータにアクセスするかを制御する際の柔軟性と、許可されたユーザにそのデータへのアクセス（または走査機能を介するそのデータの一部への目標を絞られたアクセス）を与える際の速度を、データ所有者に与える。
【００２６】
さらに、本明細書に記載の圧縮および／または伸張を使用することによって、高速でデータを検索する能力を保ちながら、大容量記憶媒体内でより少ない空間を占める形でデータを保管できるようになる。
【００２７】
これらの操作動作は、複数のステージを用いて実施される時に、パイプライン化された形で実施されることが好ましい。具体的に言うと、暗号化／暗号解読または圧縮／伸張に専用の１つまたは複数のステージと、データ検索またはデータ削減に専用の１つまたは複数のステージとの組合せは、データ記憶および取出の知的で、柔軟で、高速で、安全な構成技術を相乗的に作る。
【００２８】
さらに、本明細書では、コンピュータハードディスクなどの磁気媒体にデータを保管し、その結果、ディスク記憶システムの「シーク」時間によって大きい損害を与えられずに、ハードディスクから大量のデータを読み取れる、新規の独自の技術を開示する。本発明のこの特徴によれば、データは、磁気媒体に位置する複数の不連続の円弧として、好ましくは螺旋状のパターンで磁気媒体に保管される。本明細書に記載のように検索処理および／または追加処理にＰＬＤを使用するシステムが、本明細書に記載されているように区分的螺旋の形で保管されたデータを使用する大容量記憶媒体と組み合わせて使用される時に、この組合せは、相乗的に、さらに高い処理速度をもたらす。
【００２９】
さらに、データファイルが、２のべきの合計技術を使用して保管される、メモリにデータファイルを保管する新規の技術を本明細書で開示する。この２のべきの合計技術を使用するデータファイル記憶と、本明細書に記載の再構成可能ロジックプラットフォームのデータ処理機能との組合せも、相乗的に、高められた処理速度をもたらす。
【００３０】
本発明の主要な利点および特徴を、上で短く説明したが、本発明のより完全な理解は、図面および次下の好ましい実施形態の説明を参照することによって得ることができる。
【図面の簡単な説明】
【００３１】
【図１】一実施形態による情報検索取出システムを示すブロック図である。
【図２】発明システムの接続に関する異なる挿入点を示す、従来の固定ディスクドライブシステムを示す概略図である。
【図３】図１のシステムによって処理される検索照会の変換の一実施形態を示すブロック図である。
【図４】ディジタル領域での正確な一致検索を行うのに使用される、ハードウェア実装の一実施形態を示すブロック図である。
【図５】ディジタル領域での近似一致検索を行うのに使用される、ハードウェア実装の一実施形態を示すブロック図である。
【図６】独立構成での本発明のシステムの実装を示すブロック図である。
【図７】ネットワークを介して共用されるリモート大容量記憶デバイスとしての本発明の実装を示すブロック図である。
【図８】ネットワークに取り付けられた記憶デバイス（ＮＡＳＤ、ｎｅｔｗｏｒｋ  ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）としての本発明の実装を示すブロック図である。
【図９】磁気記憶媒体からデータを検索しかつ取り出す論理ステップの詳細を示す流れ図である。
【図１０】データキーとして使用できるアナログ信号を表すグラフである。
【図１１】データキーが存在する磁気記憶媒体からのデータの連続読取を表すアナログ信号を表すグラフである。
【図１２】図１１の信号にオーバーレイされかつマッチングされた図１０の信号を表すグラフである。
【図１３】磁気記憶媒体内の目標データが、走査されかつデータキーと比較される時に、継続的に計算される相関関数を表すグラフである。
【図１４】データキーが、データキーも含む磁気記憶媒体からの目標データの異なる組の読取からとられた信号と継続的に比較される、相関関数を表すグラフである。
【図１５】シーケンスマッチング動作を実行する際に使用される、本発明によって生成されたテーブルの一実施形態を示す図である。
【図１６】図１５のテーブルの値を計算するために本発明のシステムが使用することのできる、シストリックアレイアーキテクチャの一実施形態を示すブロック図である。
【図１７】図１のシステムのクロックサイクルの組合せ部分の間の動作での、図１５のシストリックアレイアーキテクチャを示すブロック図である。
【図１８】図１のシステムのクロックサイクルのラッチ部分の間の動作での、図１５のシストリックアレイアーキテクチャを示すブロック図である。
【図１９】特定のシーケンスマッチングの例を表す、図１５のテーブルを示す図である。
【図２０】図１９の例に関する図１６のシストリックアレイアーキテクチャのブロック図である。
【図２１】図１のシステムのクロックサイクルの組合せ部分の間の、動作中の図２０のシストリックアレイアーキテクチャを示すブロック図である。
【図２２】図１のシステムのクロックサイクルのラッチ部分の間の、動作中の図２０のシストリックアレイアーキテクチャを示すブロック図である。
【図２３】イメージマッチング動作を実行する際に本発明のシステムによって使用することのできる、シストリックアレイアーキテクチャの一実施形態を示すブロック図である。
【図２４】イメージマッチング動作を実行する際のシストリックアレイアーキテクチャのもう１つの構成を示すブロック図である。
【図２５】図２３に示されたシストリックアレイの個々のセルの一実施形態を示すブロック図である。
【図２６】図２３に示されたシストリックアレイの個々のセルのもう１つの実施形態を示すブロック図である。
【図２７】データ削減動作を実行するのに本発明のシステムを使用する例を示すブロック図である。
【図２８】ＦＰＧＡのより複雑な構成を示すブロック図である。
【図２９】再構成可能論理デバイスで実施されたマルチステージ処理パイプラインの例示的実施形態を示す図である。
【図３０】再構成可能論理デバイスで実施されたマルチステージ処理パイプラインの例示的実施形態を示す図である。
【図３１】再構成可能論理デバイスで実施された暗号化エンジンを示す図である。
【図３２】再構成可能論理デバイスで実施されたマルチステージ処理パイプラインのもう１つの例示的実施形態を示す図である。
【図３３】再構成可能論理デバイスで実施できるさまざまな暗号化エンジンの１つを示す図である。
【図３４】再構成可能論理デバイスで実施できるさまざまな暗号化エンジンの１つを示す図である。
【図３５】再構成可能論理デバイスで実施できるさまざまな暗号化エンジンの１つを示す図である。
【図３６】３当事者データウェアハウジングのシナリオを示す図である。
【図３７】非セキュアデータウェアハウジング解読のシナリオを示す図である。
【図３８】データウェアハウジングシナリオでのセキュアデータ配送のさまざまな実施形態の１つを示す図である。
【図３９ａ】データウェアハウジングシナリオでのセキュアデータ配送のさまざまな実施形態の１つを示す図である。
【図３９ｂ】データウェアハウジングシナリオでのセキュアデータ配送のさまざまな実施形態の１つを示す図である。
【図４０】再構成可能論理デバイスで圧縮および／または伸張を実施するさまざまな例示的実施形態の１つを示す図である。
【図４１】再構成可能論理デバイスで圧縮および／または伸張を実施するさまざまな例示的実施形態の１つを示す図である。
【図４２】再構成可能論理デバイスで圧縮および／または伸張を実施するさまざまな例示的実施形態の１つを示す図である。
【図４３】再構成可能論理デバイスにロードされるテンプレートの作成の処理フローを示す図である。
【図４４ａ】環状トラックを使用する普通のハードディスクと、それと共に使用されるディスクドライブシステムを示す図である。
【図４４ｂ】環状トラックを使用する普通のハードディスクと、それと共に使用されるディスクドライブシステムを示す図である。
【図４５】螺旋パターンで配置された別個の環状の円弧を有する新規のプレーナ磁気媒体を示す図である。
【図４６】図４５の磁気媒体からデータを読み取るためのヘッド位置決めフローを示す図である。
【図４７ａ】２のべきの合計ファイルシステムの実施形態の１つを示す図である。
【図４７ｂ】２のべきの合計ファイルシステムの実施形態の１つを示す図である。
【図４８】２のべきの合計ファイルシステムのさまざまな動作特性の１つを示す図である。
【図４９】２のべきの合計ファイルシステムのさまざまな動作特性の１つを示す図である。
【図５０】２のべきの合計ファイルシステムのさまざまな動作特性の１つを示す図である。
【発明を実施するための形態】
【００３２】
図１からわかるように、本発明は、独立型のコンピュータまたはコンピュータシステムでたやすく実施される。広義の意味で、本発明は、少なくとも１つの磁気大容量記憶媒体２６に結合された少なくとも１つの再構成可能論理デバイス２１からなり、その再構成可能論理デバイスは、ＦＰＧＡである。図１からわかるように、再構成可能論理デバイス２１自体に、データシフトレジスタおよび多分マイクロプロセッサを含む複数の機能論理要素が含まれ、あるいは、これらを別々のチップに置くことができ、あるいは、個々の論理要素を、本明細書の他の図の一部に示されているように、パイプラインオリエンテーション（指向）または並列オリエンテーションで構成することができる。どの場合でも、再構成可能ロジックは、その形態および機能を、製造後に現場で大きく変更（すなわち再構成）することができる、すべての論理技術を指す。再構成可能論理デバイスの例に、制限なしにプログラマブル論理デバイス（ＰＬＤ）が含まれる。ＰＬＤは、プログラム可能であるさまざまなチップに関する包括的な用語である。一般に、ＰＬＤには３つの物理構造がある。第１は、アルミニウムトレースまたは絶縁体を電気的に溶かすことによって、信号線を分離するか融合する永久ヒューズ（ｐｅｒｍａｎｅｎｔ  ｆｕｓｅ）タイプである。これは、最初のタイプのＰＬＤであり、「プログラマブルアレイロジック」またはＰＡＬとして知られている。第２のタイプのＰＬＤは、ＥＥＰＲＯＭまたはフラッシュメモリを使用し、それに関連するメモリセルの内容に応じてトランジスタを開閉させる。第３のタイプのＰＬＤは、ＲＡＭベース（動的で揮発性になる）であり、その内容は、そのＰＬＤがスタートアップするたびにロードされる。ＦＰＧＡは、任意の形で相互接続できる論理ユニットのアレイを含む集積回路（ＩＣ）である。これらの論理ユニットを、１ベンダ（Ｘｉｌｉｎｘ社）は、ＣＬＢまたは構成可能論理ブロックと呼ぶ。各論理ユニットの特定の機能および論理ユニット間の相互接続の両方を、ＩＣの製造後に現場でプログラムすることができる。ＦＰＧＡは、最も一般的なＰＬＤチップの１つである。ＦＰＧＡは、３つの構造のすべてで入手可能である。再構成可能論理デバイス２１について図１でラベルを付けられた箱は、再構成可能論理デバイス２０によって実行されるタスクを、再構成可能ハードウェア論理で実施できるだけではなく、データシフトレジスタ２４および／または制御マイクロプロセッサ２２のタスクも、任意選択として、再構成可能論理デバイス２１の再構成可能ハードウェア論理で実施できることを伝えることを意味する。本発明の好ましい実施形態で、再構成可能論理デバイス２１は、Ｘｉｌｉｎｘ社のＦＰＧＡ技術を使用して構成され、その構成は、Ｍｅｎｔｏｒ社の合成ツール、またはＳｙｎｐｌｉｃｉｔｙ社の合成ツールとＸｉｌｉｎｘ社の配置配線（ｐｌａｃｅ−ａｎｄ−ｒｏｕｔｅ）ツールを使用して開発され、これらのツールのすべてが、当業者に知られているように、現在は市販されている。
【００３３】
再構成可能論理デバイス２１は、システムバスまたは入出力バス３４とインターフェースし、一構成では、存在し得るすべてのディスクキャッシュ３０ともインターフェースする。再構成可能論理デバイス２１は、ＣＰＵ３２またはネットワークインターフェース３６から、検索要求または検索照会を受け取りかつ処理する。さらに、このデバイスは、ディスクキャッシュ３０および／またはＣＰＵ３２のいずれかまたは両方に（バス３４によって）、照会の結果を渡すのを助けることができる。
【００３４】
大容量記憶媒体２６は、以下では目標データと呼称する大量の情報を保管する媒体を提供する。用語「大容量記憶媒体」は、大量のデータを保管するのに使用され、通常はコンピュータまたはコンピュータネットワークでの使用のために構成される、すべてのデバイスを意味するものと理解されなければならない。例には、ハードディスクドライブ、光学記憶媒体、または単一のディスク表面などのサブユニットが制限なしに含まれ、これらのシステムは、回転式、線形、直列、並列、またはそのそれぞれのさまざまな組合せとすることができる。たとえば、ハードディスクドライブユニットのラックを、並列に接続することができ、この並列出力を、変換器レベルで１つまたは複数の再構成可能論理デバイス２１に供給することができる。同様に、磁気テープドライブのバンクを使用することができ、その直列出力それぞれを、１つまたは複数の再構成可能論理デバイス２１に並列に供給することができる。媒体に保管されるデータは、アナログ形式またはディジタル形式とすることができる。たとえば、データを、音声録音とすることができる。したがって、本発明は、スケーラブルであり、並列大容量記憶媒体の数を増やすことによって、保管されるデータの量の増加を可能にすると同時に、並列再構成可能論理デバイスの数を増やすか、再構成可能論理デバイスを複製することによって、性能が維持される。
【００３５】
従来技術では、図１の上側に示されているように、通常、ディスクコントローラ２８および／またはディスクキャッシュ３０を、そのシステムバスまたは入出力バス３４を介する、ＣＰＵ３２によるアクセスに伝統的な意味で使用することができる。再構成可能論理デバイス２１は、システムバス３４を介して大容量記憶媒体２６からＣＰＵ３２の作業メモリ３３に、保管およびアクセスのためにメモリの大きいブロックを移動することなく、大容量記憶媒体２６内の目標データに、１つまたは複数のデータシフトレジスタ２４を介してアクセスし、これを使用のためにシステムバス３４に提示する。言い換えると、下で詳細に説明するように、ＣＰＵ３２は、検索要求または検索照会を再構成可能論理デバイス２１に送ることができ、この再構成可能論理デバイス２１は、大容量記憶媒体２６内の目標データに非同期にアクセスし、かつこれをソートし、従来技術で知られているようにディスクキャッシュ３０内で、またはシステムバス３４に直接にのいずれかで、ＣＰＵ３２によって要求されるさらなる処理またはその作業メモリ３３の使用なしで、使用のために提示する。したがって、ＣＰＵ３２は、検索およびマッチングのアクティビティが、本発明によって実行されている間に、他のタスクを自由に実行することができる。代替案では、制御マイクロプロセッサが、検索照会およびテンプレートまたはプログラミング命令をＦＰＧＡ２１に供給し、その後、検索を実行し、ＣＰＵ３２によるアクセスおよび使用のためにシステムバス３４でデータを提示することができる。
【００３６】
上で説明したように、本発明を使用して、目標データに対してさまざまな異なるタイプのマッチング動作またはデータ削減動作を実行することができる。これらの動作それぞれを、下で詳細に説明する。しかし、すべての動作について、目標データが、十分なフォーマッティング情報を付加されて磁気大容量記憶媒体２６に書き込まれ、その結果、目標データの論理構造を抽出できるようになっていると仮定する。正確ストリングマッチングおよび近似ストリングマッチングを、図２〜図５を参照して説明する。しかし、本発明が、単一のストリングマッチに制限されず、複合照会マッチング（たとえば、その間にある論理関係を有する複数のテキストストリングを用いる照会、またはブール代数論理を使用する照会）に同等に適することを理解されたい。図２の点Ａに示されているように、再構成可能論理デバイス２１を用いてアナログ領域で正確一致を実行し、マッチングが、アナログ比較器および相関技術を使用して行われる時に、正確一致は、データキーと、大容量記憶媒体２６上のアナログ目標データのマッチングに関して十分に高い閾値をセットすることに対応する。アナログ領域での近似マッチングは、適当な（より低い）閾値をセットすることに対応する。近似マッチの成功は、再構成可能論理デバイス２１でセットされる相関値によって、または走査された目標データの対応するビットと等しいデータキー内のビット数などの、再構成可能論理デバイス２１に保管された複数のマッチング性能メトリックスの１つを使用することによって、判定することができる。
【００３７】
具体的に言うと、普通の固定ディスクドライブが、複数の回転するディスクを、各ディスクにアクセスする複数の変換器と共に有する場合がある。これらの変換器それぞれは、通常、増幅器などのアナログ信号回路１８に供給する出力を有する。これが、点Ａで表されている。図２にさらに示されているように、通常、アナログ回路の出力は、１つのそのような出力を処理する単一のディジタルデコーダ２３に選択的に供給される。これが、点Ｂで表されている。このディジタル出力は、通常、誤り訂正回路（ＥＣＣ）２５を介して送られ、その出力Ｃで、バス３４またはディスクキャッシュ３０に渡される。本発明の目的のために、複数のディジタルデコーダおよびＥＣＣを設けることによって、目標データの複数の並列経路を設けることが望ましい場合がある。ディジタル領域での正確マッチングは、点Ｂまたは点Ｃで実行することができ、これは、それぞれ、誤り訂正前のディジタル信号および誤り訂正後のディジタル信号に対応する。
【００３８】
結果を、ＦＰＧＡの一部として構成しても構成しなくてもよい制御マイクロプロセッサ２２に送って、複合検索照会または複雑な検索照会に関連する論理を実行することができる。最も一般的な場合に、複合検索照会４０は、図３に示された変換プロセスを受ける。具体的に言うと、ＣＰＵ３２に常駐するソフトウェアシステム（図示せず）が、検索照会４０を生成する。この照会は、やはりＣＰＵ３２に置かれたコンパイラ４２を通って進み、このコンパイラ４２は、検索照会を分析する責任を負う。この分析からの３つの主な結果すなわち、（１）再構成可能論理デバイス２１内の比較レジスタに常駐するデータキーの決定、（２）制御マイクロプロセッサ２２で実施しなければならない組合せ論理の決定、および（３）再構成可能論理デバイス２１に対する合成コマンド４６の生成に使用される、標準的なハードウェア記述言語（ＨＤＬ）フォーマットでのハードウェア記述４４の作成（あるいは、可能な場合にライブラリからの取出）がある。任意の市販のＨＤＬと、関連するコンパイラおよび合成ツールとを使用することができる。結果の論理機能は、正確一致、不正確一致、またはワイルドカード動作と、「ａｎｄ」および「ｏｒ」などの単純な単語レベルの論理動作に対応するものとすることができる。この合成情報が、制御マイクロプロセッサ２２に送られ、制御マイクロプロセッサ２２は、再構成可能論理デバイス２１またはＦＰＧＡをセットアップするように働く。複雑な論理動作の場合に、ＣまたはＣ＋＋などの高水準言語４８が、コンパイラ５０と共に使用されて、制御マイクロプロセッサ２２に対する適当な合成コマンドが生成される。
【００３９】
図３に示された経路は、広範囲の潜在的な検索照会を扱うことができるが、検索プロセスに導入される待ち時間が長すぎる可能性があるという短所を有する。検索照会が図３に表された変換を通って流れるのに必要な時間が、検索を実行するのに必要な時間と同程度の場合に、検索自体ではなく、コンパイル処理が性能ボトルネックになる可能性がある。この問題には、広範囲のありそうな検索照会について、ほとんどの一般的な事例を扱う事前コンパイルされたハードウェアテンプレートの組を維持することによって対処することができる。これらのテンプレートは、ＣＰＵ３２メモリ内で提供され、かつ維持されるか、ＣＤなどのオフライン記憶媒体を介して入手可能にされるか、大容量記憶媒体２６自体に保存されることができる。さらに、そのようなテンプレートを、ネットワークまたはインターネットを介するなど、ＣＰＵ３２に通信することができる。
【００４０】
そのようなハードウェアテンプレート２９の一実施形態を、図４に示す。具体的に言うと、データシフトレジスタ２７に、１つまたは複数のディスク１９のヘッド（図示せず）からの目標データストリーミングが含まれる。比較レジスタに、ユーザがマッチングを望むデータキーが保管される。図示の例では、データキーは「Ｂａｇｄａｄ」である。細粒度比較（ｆｉｎｅ−ｇｒａｉｎｅｄ  ｃｏｍｐａｒｉｓｏｎ）論理デバイス３１が、データシフトレジスタ２７の要素と比較レジスタ３５の要素の間の要素ごとの比較を実行する。細粒度比較論理デバイス３１は、大文字小文字を区別するまたはこれを区別しないのいずれかになるように構成することができる。単語レベル比較論理３７が、単語レベルの一致が発生したか否かを判定する責任を負う。複合検索照会の場合に、単語レベル一致信号が、その評価のために制御マイクロプロセッサ２２に送られる。複合検索照会に対する一致が、その後、さらなる処理のためにＣＰＵ３２に報告される。
【００４１】
近似マッチングを実行するハードウェアテンプレートの一実施形態を、図５に示す。具体的に言うと、データシフトレジスタ２７’に、１つまたは複数のディスク１９’のヘッド（図示せず）からの目標データストリーミングが含まれる。比較レジスタ３５’に、ユーザがマッチングを望むデータキーが保管される。図示の例では、データキーはやはり「Ｂａｇｄａｄ」である。細粒度比較論理３１’が、データシフトレジスタ２７’の要素と比較レジスタ２１’の要素の間の要素ごとの比較を実行する。やはり、細粒度比較論理デバイス３１’は、大文字小文字を区別するまたはこれを区別しないのいずれかになるように構成することができる。テンプレート２９’が、データシフトレジスタ２７’内の要素の、細粒度比較論理デバイス２１’の個々のセルへの代替ルーティングを提供する。具体的に言うと、細粒度比較論理デバイス３１’の各セルは、データシフトレジスタ２７’内の複数の位置とマッチングすることができ、比較レジスタ２１’は、一般に使用される綴り「Ｂａｇｈｄａｄ」ならびに代替の「Ｂａｇｄａｄ」の両方に、共用ハードウェアでマッチングすることができる。単語レベル比較論理３７’が、単語レベルで一致が発生したか否かを判定する責任を負う。複合検索照会の場合に、単語レベル一致信号が、その評価のために制御マイクロプロセッサ２２に送られる。複合検索照会に対する一致が、その後、さらなる処理のためにＣＰＵ３２に報告される。
【００４２】
ハードウェアテンプレートの実際の構成は、もちろん、検索照会タイプに伴って変化する。ハードウェアテンプレートで少量の柔軟性（たとえば、比較レジスタに保管された目標データ、データシフトレジスタ要素および比較レジスタ要素から細粒度比較論理デバイスのセルへの信号のルーティング、および単語レベル比較論理の幅）を提供することによって、そのようなテンプレートが、広範囲の単語マッチングをサポートすることができる。その結果、これによって、図３で表される検索照会変換全体を行わなければならない頻度が減り、これによって、検索の速度が向上する。
【００４３】
「近似」一致検索で識別されるデータ項目に、「正確」検索から生じる「正確」ヒットが含まれることに留意されたい。わかりやすくするために、単語「一致」または「マッチ」を使用する時に、近似検索または正確検索のいずれかを介して見つかった検索結果またはデータ結果が含まれることを理解されたい。句「近似一致」または「近似」だけが使用される時に、これが、上で近似検索として説明した２つの検索あるいは、検索照会または具体的にはデータキーに疎に関係する目標データを収集するの十分に大きい網を有する、それに関する限りではすべての他の種類の「ファジイ」検索のいずれかである可能性があることを理解されたい。もちろん、正確一致は、まさにそのとおりのものであり、高い度合の相関を有する検索照会の正確一致以外の結果を含まない。
【００４４】
図１には、本発明をネットワーク３８に相互接続するネットワークインターフェース３６も示されており、このネットワーク３８は、ＬＡＮ、ＷＡＮ、インターネットなどとすることができ、このネットワークに、他のコンピュータシステム４０を接続することができる。この構成を用いると、他のコンピュータシステム４０が、本発明２１を介して大容量記憶媒体２６に保管されたデータにも便利にアクセスすることができる。より具体的な例を、下で示す。さらに、図１には、要素２０〜２４自体が、一緒にパッケージ化され、ディスクドライブアクセラレータを形成することも示されており、このディスクドライブアクセラレータを、それ自体のディスクドライブを有する既存ＰＣを、本発明の利益に適合させる改装デバイスとして別々に提供することができる。その代わりに、ディスクドライブアクセラレータを、ハードドライブに対するオプションとして提供し、外部ドライブと同一のエンクロージャにパッケージ化するか、内蔵ドライブ用のコネクタインターフェースを有する別々のＰＣ基板として提供することもできる。さらに、その代わりに、ディスクドライブアクセラレータを、消費者、会社、または他のエンドユーザが注文するＰＣの一部として、ＰＣ供給業者がオプションとして提供することができる。もう１つの実施形態は、より大きい磁気大容量記憶媒体の一部として、または高められたデータ処理能力を有利に使用できるアプリケーションまたは既存設備用のアップグレードまたは改装キットとして提供することとすることができる。
【００４５】
図６〜図８からわかるように、本発明を、さまざまなコンピュータ構成およびネットワーク構成で使用することができる。図６からわかるように、本発明を、本明細書に開示された本発明を有する大容量記憶媒体４７にアクセスする、システムバス４５に接続されたＣＰＵ４３を含む独立型コンピュータシステム４１の一部として提供することができる。
【００４６】
図７からわかるように、本発明に結合された大容量記憶媒体５１自体を、ネットワーク５２に直接に接続することができ、このネットワーク５２を介して、複数の独立のコンピュータまたはＣＰＵ５４が、大容量記憶媒体５１にアクセスすることができる。大容量記憶媒体５１自体は、ＲＡＩＤを含むハードディスクドライブのバンク、ディスクファーム、または他の超並列メモリデバイス構成からなるものとして、膨大な量のデータに対するアクセスおよび近似マッチング機能を、大幅に減らされたアクセス時間で提供することができる。
【００４７】
図８からわかるように、本発明に結合された大容量記憶媒体５６を、ＮＡＳＤ（ｎｅｔｗｏｒｋ  ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）としてネットワーク５８に接続することができ、このネットワーク５８を介して、複数の独立型コンピュータ６０が、これにアクセスすることができる。そのような構成では、例示のみのためにディスク５７として表された各大容量記憶媒体が、ネットワークに接続されたすべてのプロセッサからアクセス可能であることが企図されている。そのような構成の１つに、一意のＩＰアドレスまたは他のネットワークアドレスを、各大容量記憶媒体に割り当てることが含まれる。
【００４８】
図１および図６〜図８に示された構成によって例示される構成は、本発明が互換であり、非常に有用であるさまざまなコンピュータ構成およびネットワーク構成の例を表すにすぎない。他の構成が、当業者に明白であり、本発明は、本明細書に示された例を介して制限されることを意図されておらず、これらの例は、そうではなく、本発明の多用途性を例示することを意図されたものである。
【００４９】
図９からわかるように、正確マッチングまたは近似マッチングで使用される本発明の方法を、その代わりに、アナログデータ領域とディジタルデータ領域のどちらが検索されているかに関して説明する。しかし、この方法の開始から始めて、ＣＰＵは、ある機能を実行し、その間に、ＣＰＵは、大容量記憶媒体に保管された目標データにアクセスすることを選択することができる。通常、ＣＰＵは、検索照会アプリケーション６２を実行し、この検索照会アプリケーション６２は、ＤＮＡ検索、インターネット検索、アナログ音声検索、指紋検索、イメージ検索、または、その間に目標データとの正確マッチまたは近似マッチが望まれる他のそのような検索を表すものとすることができる。検索照会に、ディスク制御ユニット２８および再構成可能論理デバイス２０が大容量記憶媒体２６からデータキーを正しく得るために有しなければならない、さまざまなパラメータを指定するディレクティブ（ｄｉｒｅｃｔｉｖｅ）が含まれる。パラメータの例に、記憶装置を走査する開始位置、その後に（一致がない場合に）走査を停止する最終位置、走査に使用されるデータキー、マッチングの近似性質の指定、および一致が発生した時に返さなければならない情報が含まれるが、これらに制限はされない。返されることのできる情報の種類に、一致が見つかった情報の位置、またはマッチした情報を含むセクタ、レコード、レコードの部分、もしくは他のデータ集合が含まれる。データ集合は、マッチの際に返されるデータを、境界データ指定子の間になるように指定し、マッチしたデータが境界フィールド内に含まれるようにすることができるという点で、動的に指定することもできる。図５の例で示したように、テキストのストリング内で単語「ｂａｇｄａｄ」を探すことによって、単語「Ｂａｇｈｄａｄ」の、誤綴りに起因する近似一致を見つけ、囲む文によって画定されたデータフィールドを返すことができる。もう１つの照会パラメータは、返される情報を、システム、入出力バス３４、またはディスクキャッシュ３０のどれに送らなければならないかを示す。
【００５０】
図９に戻って、検索照会は、通常、１つまたは複数のオペレーティングシステムユーティリティの実行をもたらす。高水準ユーティリティコマンドの例として、ＵＮＩＸ（登録商標）オペレーティングシステムについて、これを、ｇｌｉｍｐｓｅ、ｆｉｎｄ、ｇｒｅｐ、ａｐｒｏｐｏｓなどの変更されたバージョンとすることができる。これらの機能は、ＣＰＵに、検索、近似検索などのコマンド６６を再構成可能論理デバイス２１に送らせ、これらのコマンドの関連部分は、たとえば大容量記憶媒体から目標データを正しく読み取るのに後に必要になる大容量記憶媒体位置決めアクティビティ６９を開始するために、ディスクコントローラ２８にも送られる。
【００５１】
この時点で、本発明の特定の実施形態で実施されることが望まれる特定の方法に応じて、アナログまたはディジタルのデータキーを決定する必要がある。このデータキーは、テキスト検索について正確または近似のいずれかとすることができるが、検索されるデータに対応する。アナログデータキーについて、これは、大容量記憶媒体などに事前に保管されるか、専用回路を使用して開発されるか、生成される必要があるかのいずれかとすることができる。アナログデータキーを事前に保管しなければならない場合に、事前に保管されたデータキー送信ステップ６８は、マイクロプロセッサ２２（図１参照）によって実行され、このマイクロプロセッサ２２は、ステップ７０に示されているように、データキーを、ディジタルのサンプリングされたフォーマットで再構成可能論理デバイス２０に送る。その代わりに、アナログデータキーを事前に保管しない場合に、これを、複数の機構の１つを使用して開発することができ、これらの機構のうちの２つを図９に示す。１つの機構では、マイクロプロセッサ２２が、ステップ７２でデータキーを磁気大容量記憶媒体に書き込み、次に、ステップ７４で、データキーのアナログ信号表現を生成するためにデータキーを読み取る。もう１つの機構では、ステップ７１で、ＣＰＵから受け取ったデータキーのディジタルバーションを、適切なディジタル−アナログ回路を使用してアナログ信号表現に変換することができ、このアナログ信号表現が、適切にサンプリングされる。データキーは、次に、ステップ７０で、そのディジタルサンプルとして保管される。ディジタルデータキーが使用される場合に、マイクロプロセッサ２２が、ステップ７６で、再構成可能論理デバイスの比較レジスタに、そのディジタルデータキーを保管することだけが必要である。再構成可能論理デバイスごとに含まれることが望まれる特定の構造に応じて、データキーが、これらの構成要素のいずれかまたはすべてに存在することができ、データキーの適切なディジタルフォーマットを、比較および相関のために再構成可能論理デバイス２１に最終的に与えることが、単に好ましいことを理解されたい。
【００５２】
次に、大容量記憶媒体２６が、７９でその開始位置に達した後に、その大容量記憶媒体に保管された目標データが、ステップ７８で継続的に読み取られて、目標データを表す継続的ストリーム信号が生成される。アナログデータキーが使用された場合には、このアナログデータキーを、ステップ８０で、大容量記憶媒体２６からの目標データのアナログ読みと相関させることができる。
【００５３】
本発明では、多数の従来技術の比較器および相関回路のどれであっても使用できることが企図されているが、目的について、本発明人は、アナログ信号およびデータキーのディジタルサンプリングが、下で説明するように、そのような比較の実行および相関係数の計算の実行に非常に有用である可能性があることを提案する。大容量記憶媒体２６から目標データを読み取ることから生成されるこのアナログ信号は、従来技術のデバイスによって、アナログデータまたはディジタルデータのいずれかの読み取りから便利に生成することができ、ディジタルデータキーを、大容量記憶媒体２６に保管されたディジタル目標データとのマッチングに使用する必要がないことに留意されたい。その代わりに、相関ステップ８２を、ディジタルデータキーを、大容量記憶媒体２６から読み取られたディジタル目標データのストリームとマッチングすることによって実行することができる。データキーが、近似情報を含めることを反映することができ、あるいは、再構成可能論理デバイス２１を、これを可能にするためにプログラムできることに留意されたい。したがって、大容量記憶媒体から読み取られた目標データとの相関によって、近似マッチング機能が可能になる。
【００５４】
図９を参照すると、判断論理８４は、次に、目標データの一部が、データキーに近時一致するか否かに関する知的判断を行う。一致が見つかった場合に、目標データをステップ８６で処理し、検索照会によって要求されたキーデータを、ディスクキャッシュ３０に送るか、システムバス３４に直接に送るか、他の形でバッファリングするか、ＣＰＵ３２、ネットワークインターフェース３６、または図１および図６〜図８に示された他で使用可能にする。「ｄｏ」ループに似たものを示す論理ステップ８８が、大容量記憶媒体２６からの目標データの継続的読み取りに戻るために含まれることが好ましい。しかし、これが、継続的処理であり、目標データが、個別化されたチャンク、フレーム、バイト、またはデータの他の所定部分ではなく、ストリームとして大容量記憶媒体２６から処理されることを理解されたい。これは除外されてはいないが、本発明は、大容量記憶媒体２６からの目標データの読み取りにためらいがなくなるように、連続的に変化する目標データ読み取り信号に対して、本質的にデータキーを「スライド」させることができるようになることが好ましい。読み取りを、マルチビットデータ構造の先頭または末尾に同期化するという要件はなく、目標データが大容量記憶媒体２６から読み取られる際に、目標データを「オンザフライで」継続的に比較する時に、他の中間ステップを実行する必要もない。最終的に、データアクセスは、ステップ９０で完了し、この処理が完了する。
【００５５】
本発明人は、アナログ領域で本発明を予備的にテストし、生成された予備データに、その実施可能性および有効性を実証させた。具体的に言うと、図１０は、読取／書込ヘッドが、１０ビットディジタルデータキーを保管された磁気媒体を読み取る時に、読取／書込ヘッドからの測定されたアナログ信号出力のグラフ表現である。このグラフに示されているように、アナログ信号に、当技術分野で知られているように、目標データがハードディスクなどの磁気媒体から読み取られる時に、読取／書込ヘッドによって生成される真のアナログ信号を表すピークがある。図１０に示されたスケールは、縦軸ではボルト、横軸では１０分の１マイクロ秒である。図１１からわかるように、目標データが、磁気媒体のテスト部分に保管された擬似ランダムバイナリシーケンスから読み取られる時に、やはり読み取り／書込ヘッドによってアナログ信号が生成される。この読み取り信号は、このレベルで検査される時に、理想的な方形波出力を提供しない。
【００５６】
図１２は、８ビットデータキーの約２ビットと、ディスクまたは磁気媒体の異なる位置で符号化された擬似ランダムバイナリシーケンスに見られる目標データの対応する２ビットとの間のオーバーラップをより具体的に示すために、水平スケールを広げられたグラフ表現である。
【００５７】
図１３は、ハードディスクからの目標データの継続的な読み取りとデータキーとの間で比較が行われる時に、継続的に計算される相関係数のグラフ表現である。この相関係数は、高い速度でアナログ信号をサンプリングし、従来技術の信号処理相関技術を使用することによって計算された。そのような例の１つが、その開示が参照によって本明細書に組み込まれている、Ｈｏｉｎｖｉｌｌｅ、Ｉｎｄｅｃｋ、およびＭｕｌｌｅｒ著、「Ｓｐａｔｉａｌ  Ｎｏｉｓｅ  Ｐｈｅｎｏｍｅｎａ  ｏｆ  Ｌｏｎｇｉｔｕｄｉｎａｌ  Ｍａｇｎｅｔｉｃ  Ｒｅｃｏｒｄｉｎｇ  Ｍｅｄｉａ」、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｍａｇｎｅｔｉｃｓ、Ｖｏｌｕｍｅ  ２８、ｎｏ．６、１９９２年１１月に見られる。読み取り、比較、および係数計算の方法および装置の従来の例が、その開示が参照によって本明細書に組み込まれる、米国特許第５７４０２４４号など、共同発明人の以前の特許の１つのうちの１つまたは複数にある。前述は、本発明を実施するのに使用できるデバイスおよび方法の例を表すが、本明細書の他所で述べるように、他の類似するデバイスおよび方法を、同様に使用することができ、本発明の目的を実現することができる。
【００５８】
図１３からわかるように、３２５のラベルを付けられた点の近くで、１ボルトに達する明確なピークが、約２００マイクロ秒で注目され、データキーと目標データとの間の非常に近い一致を示している。図１０は、本発明の強力な態様と思われる近似マッチングの可能性も示すものである。図１３をよく調べると、相関係数に現れる他のより低いピークがあることが注目される。したがって、０．４ボルトの閾値が、判断点として確立された場合に、１に達する発生するピークだけが、一致または「ヒット」を示すのではなく、別の５つのピークも、「ヒット」を示す。この形で、所望の係数値を、望み通りに調整するか事前に決定して、特定の検索パラメータに合わせることができる。たとえば、テキストの長い本体で特定の単語を検索する時に、より低い相関値は、その単語が存在するが綴りが誤っていることを示すことができる。
【００５９】
図１４に、同一の８ビットデータキーの間であるが、異なる目標データをセットされた状態の相関係数の継続的計算を示す。やはり、単一の一致が、約２００マイクロ秒で見つかり、このピークは１ボルトに達する。より低い閾値が確立されたならば、目標データ内で追加のヒットが見つかることにも留意されたい。
【００６０】
前に述べたように、本発明は、シーケンスマッチング検索を実行することもできる。図１５に関して、テーブル３８は、そのような検索を実行するために再構成可能論理デバイス２０によって生成されたものである。具体的に言うと、ｐ１ｐ２ｐ３ｐ４は、データキー、ｐ、または検索される所望のシーケンスを表す。図１５のデータキーは、４つの文字だけを示すが、これは、例示のためのみであり、シーケンス検索の通常のデータキーサイズが、５００〜１０００個程度またはそれより多いことを理解されたい。記号ｔ１、ｔ２、ｔ３…ｔ９は、大容量記憶媒体２６からストリーミングされる目標データ、ｔを表す。やはり、そのようなデータのうちの９文字だけが示されているが、大容量記憶媒体２６の通常のサイズ、したがってそれからの目標データストリーミングの通常のサイズが、通常は、数十億文字の範囲になる可能性があることを理解されたい。記号ｄｉ，ｊは、データキー内の位置ｉおよび目標データ内の位置ｊでの編集距離（ｅｄｉｔ  ｄｉｓｔａｎｃｅ）を表す。そうである必要はないが、データキーが、目標データに対してより短いと仮定する。図１５に示されていない追加の行（ｄ０，ｊ）および列（ｄｉ，０）の知られている（定数）値の組がある場合がある。
【００６１】
ｄｉ，ｊの値は、ｄｉ，ｊが、（１）ｐｉ、（２）ｔｊ、（３）ｄｉ−１，ｊ−１、（４）ｄｉ−１，ｊ、および（５）ｄｉ，ｊ−１の関数にすぎないという事実を使用して、再構成可能論理デバイス２０によって計算される。これは、図１５で、位置ｄ３，６に関して、ｄ２，５、ｄ２，６、およびｄ３，５、ならびにｐ３およびｔ６の値に対する依存性を示すことによって示されている。一実施形態で、ｄｉ，ｊの値は、次のように計算される。
ｄｉ，ｊ＝ｍａｘ［ｄｉ，ｊ−１＋Ａ；ｄｉ−１，ｊ＋Ａ；ｄｉ−１，ｊ−１＋Ｂｉ，ｊ］
ここで、Ａは定数であり、Ｂｉ，ｊは、ｐｉおよびｔｊのタブラ関数（ｔａｂｕｌａｒ  ｆｕｎｃｔｉｏｎ）である。しかし、この関数の形は、非常に任意とすることができる。生物学の文献では、Ｂを評価関数（ｓｃｏｒｉｎｇ  ｆｕｎｃｔｉｏｎ）と呼ぶ。人気のあるデータベース検索プログラムＢＬＡＳＴでは、スコアが、ｐｉ＝ｔｊであるか否かの関数にすぎない。アミノ酸配列に関するものなど、他の文脈では、Ｂの値が、ｐおよびｔの特定の文字に応じる。
【００６２】
図１６に、図１５のテーブル３８の値を計算するために、本発明が使用するシストリックアレイアーキテクチャの一実施形態を示す。データキーの文字は、データレジスタ５３の列に保管され、大容量記憶媒体２６からの目標データストリーミングの文字は、データシフトレジスタ５５に保管される。ｄｉ，ｊの値は、好ましくはそれ自体がＦＰＧＡであるシストリックセル５９に保管される。
【００６３】
図１６のアレイの動作を、これから、図１７および図１８を使用して説明する。図１７からわかるように、システムのクロックサイクルの最初（すなわち組合せ）部分で、４つの下線付きの値が計算される。たとえば、新しい値ｄ３，６は、前に図１５で示したものと同一の５つの値に応じることが示されている。図１８からわかるように、クロックサイクルの第２の（すなわちラッチ）部分で、ｄｉ，ｊおよびｔｊのすべての文字が、右に１位置だけシフトされる。比較器６１が、ｄアレイの各対角線セルに位置し、閾値を超えた時を判定する。
【００６４】
シーケンスマッチング動作を、これから、図１９〜図２２を参照して、次の例に関して説明する。
キー＝ａｘｂａｃｓ
目標データ＝ｐｑｒａｘａｂｃｓｔｖｑ
Ａ＝１
ｉ＝ｊの場合にＢ＝２
ｉ＝ｊの場合にＢ＝−２
これらの変数から、図１９のテーブルが、再構成可能論理デバイス２０によって生成される。事前に決定された閾値「８」を仮定すると、再構成可能論理デバイス２０は、ｄ６，９で一致を認識する。
【００６５】
この例の図１６〜図１８に存在する値を表す合成アレイの部分を、それぞれ図２０〜図２２に示す。一致は、ある行の値が所定の閾値を超える時に、再構成可能論理デバイス２０によって識別される。閾値は、データキーと大容量記憶媒体２６に保管された目標データとの間で望まれる類似性の所望の度合に基づいてセットされる。たとえば、正確一致検索の場合に、データキーと目標キーが同一でなければならない。一致は、ＣＰＵ３２によって、図１９のテーブルを用いるトレースバック動作を介して検査される。具体的に言うと、テーブルの「スナップショット」が、所定の時間間隔にＣＰＵ３２に送られて、一致が識別された後のトレースバック動作が支援される。間隔は、ＣＰＵ３２に重荷を与えないようにあまり頻繁でないが、テーブルの再作成に長い時間と大量の処理を必要としない程度に頻繁であることが好ましい。ＣＰＵ３２がトレースバック動作を実行できるようにするために、テーブル内の閾値を超えた項目を囲む区域でｄアレイを再作成できなければならない。この要件をサポートするために、シストリックアレイが、ｄの完全な列の値（「スナップショット」）を周期的にＣＰＵ３２に出力することができる。これによって、ＣＰＵ３２が、スナップショットのインデックスｊより大きいｄの必要な部分を再作成できるようになる。
【００６６】
多くのマッチングアプリケーションが、イメージなど、２次元エンティティを表すデータを操作する。図２３に、２次元データに対するマッチングを可能にする、再構成可能論理デバイス２０、好ましくはＦＰＧＡのシストリックアレイ１２０を示す。個々のセル１２２それぞれが、ユーザがマッチングを望むイメージの１画素（イメージキー）と、検索されるイメージの１画素（目標イメージ）を保持する。十分に大きいサイズのイメージについて、それが１つの再構成可能論理チップ１２４におさまらない可能性が高い。その場合に、チップへのセルの候補区分が、破線によって示されており、セルの長方形サブアレイが、各チップ１２４に置かれる。チップ対チップ接続の個数は、正方形のサブアレイ（すなわち、縦次元と横次元で同一個数のセル）を使用することによって、最小にすることができる。他のより複雑な構成を、下で示す。
【００６７】
アレイ１２０への目標イメージのローディングを、図２４を使用して説明する。各セルを接続する水平リンク１３４を介してアレイの最上行１３０への、全般的に点Ａとして示されている、大容量記憶媒体２６からストリーミングされる各目標イメージの個々の行。そのような構成を用いると、最上行１３０が、データシフトレジスタとして動作する。行１３０全体がロードされた時に、その行が、各列に示された垂直リンク１３６を介して、次の行１３２にシフトダウンされる。イメージ全体がアレイにロードされたならば、比較動作が実行され、これは、離接セル間の任意の通信を必要とする可能性がある。これは、図２３に示された水平両方向リンク１２６と垂直両方向リンク１２８の両方によってサポートされる。
【００６８】
図を単純にするために、個々の両方向リンク１２６および１２８が、図２３および図２４で単純に図示されているが、図２８に、両方向リンクのはるかに複雑な組を実施する柔軟性を示す。図２８からわかるように、データを、大容量記憶媒体１８０から通信し、複数のセル１８２の第１行に入力することができ、第１行の各セルは、その下のセルの第２行の対応するセル１８４への単純なリンク１８６による直接リンクを有し、セルのアレイ１８８全体でそうなっている。セルのアレイ１８８の上にあるのが、コネクタウェブ１９０であり、このコネクタウェブ１９０は、中間にあるセルを介する伝送を必要とせずに、アレイ内の任意の２つのセルの間の直接接続性をもたらす。アレイ１８８の出力は、アレイ１８８の下端の出口リンク１９２の合計によって表されている。アレイ内の各セルを、ＦＰＧＡからなるものとすることができ、そのそれぞれが、好ましくは図１の要素２０に対応する再構成可能論理要素を有し、あるいは、そのいずれかが、再構成可能論理デバイス２０ならびにデータシフトレジスタ２４を有することができ、あるいは、そのいずれかが、再構成可能論理デバイス２１の全体を有することができることを理解されたい。
【００６９】
アレイ１２０の個々のセルの一実施形態を、図２５に示す。セル１４０に、画素レジスタ１４２、ＬＯＡＤＴｉ，ｊが含まれ、この画素レジスタ１４２に、アレイに現在ロードされている目標イメージの画素が含まれる。レジスタ１４４、ＣＭＰＴｉ，ｊには、完全な目標イメージがロードされた後に、画素レジスタ１４２のコピーが含まれる。この構成は、ロードされた最後の目標イメージを、次にロードされる目標イメージと並列に比較することを可能にし、本質的に、ロード、比較、ロード、比較などのパイプライン化されたシーケンスを確立する。レジスタ１４６、ＣＭＰＰｉ，ｊには、比較に使用されるイメージキーの画素が含まれ、比較論理１４８が、レジスタ１４４とレジスタ１４６との間のマッチング動作を実行する。比較論理１４８に、それぞれ全般的に１５０、１５２、１５４、および１５６として示された、左右上下の隣接セルと通信して、複雑なマッチング機能を可能にする能力を含めることができる。
【００７０】
図２３のアレイ１２０の個々のセルのもう１つの実施形態を、図２６に示す。図２５のセル１４０が、イメージキーと目標イメージの同時ロードをサポートするように増補されている。具体的に言うと、セル１６０には、セル１４０と同一の構成要素が含まれるが、新しいレジスタ１６２、ＬＯＡＤＰｉ，ｊが追加され、このレジスタ１６２は、イメージキーのロードに使用され、レジスタ１４２と同一の形で動作する。そのような構成を用いると、大容量記憶媒体２６の１つのディスク読取ヘッドが、イメージキーの上に位置決めされ、第２のディスク読取ヘッドが、目標イメージの上に位置決めされている場合に、これらの両方が、ディスクから並列に流し、アレイ１６０に同時にロードされることができる。
【００７１】
比較論理ブロック内で実行される動作は、目標イメージとイメージキーとの間に大きい相違があるか否かに関する判断を提供する任意の機能とすることができる。例に、参照によって本明細書に組み込まれる、Ｊｏｈｎ  Ｃ．Ｒｕｓｓ著「Ｔｈｅ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｈａｎｄｂｏｏｋ」、３ｒｄ  ｅｄｉｔｉｏｎ、ＣＲＣ  Ｐｒｅｓｓ、１９９９年に記載の、イメージ全体またはイメージのサブ領域にまたがる相互相関が含まれる。
【００７２】
本発明は、データ削減検索を実行することもできる。そのような検索では、本明細書で前に説明したマッチングが用いられるが、ある集約形式でマッチングされたデータを要約することが含まれる。たとえば、金融産業で、株の最低価格、最高価格、および最新価格を識別するために、金融情報を検索したい場合がある。そのような集約データ削減を計算する再構成可能論理デバイスを、図２７に１００として示す。この図では、データシフトレジスタ１０２が、株価情報を含む大容量記憶媒体から目標データを読み取る。図示の例では、３つのデータ削減検索、すなわち、最低価格、最高価格、および最新価格の計算が示されている。目標データが、データシフトレジスタ１０２に供給された時に、判断論理が、所望のデータ削減動作を計算する。具体的に言うと、株価が、最低価格比較器１１０および最高価格比較器１１２に供給され、それらに保管される。株価が比較器１１０に供給されるたびに、比較器１１０は、最後に保管された株価を現在供給されている株価と比較し、低い方がデータレジスタ１０４に保管される。同様に、株価が比較器１１２に供給されるたびに、比較器１１２は、最後に保管された株価を現在供給されている株価と比較し、高い方がデータレジスタ１０６に保管される。最新価格を計算するために、株価が、データレジスタ１０８に供給され、現在時刻が、比較器１１４に供給される。時刻値が比較器１１４に供給されるたびに、比較器１１４は、最後に保管された時刻を現在時刻と比較し、新しい方がデータレジスタ１１６に保管される。その後、計算が行われている所望の時間間隔の終りに、最新価格が判定される。
【００７３】
データ削減検索を、図２７に示された非常に単純な金融の例に関して説明したが、本発明が、そのような機能性を必要とするさまざまな複雑さのさまざまな異なる応用例のデータ削減検索を実行できることを理解されたい。再構成可能論理デバイスは、単に、必要な機能を実行するハードウェアおよび／またはソフトウェアを用いて構成される必要がある。
【００７４】
ディスク回転速度でデータ削減検索を実行する能力は、過小評価することができない。情報の最も貴重な態様の１つが、その適時性である。人々は、物事がインターネット速度であることを期待するようになりつつある。集約データ削減を素早く計算できる会社は、明らかに、それができない会社に対する競争上の強みを有する。
【００７５】
さらに、検索および削減以外のデータ処理動作も、再構成可能論理デバイス２１で実施することができる。上で述べたように、これらの動作を、本明細書ではデータ操作動作と称する。ＰＬＤ２０で実行できるデータ操作動作またはそのサブ動作の例に、暗号化動作、暗号解読動作、圧縮動作、および伸張動作が含まれる。好ましいＰＬＤ２０は、ＦＰＧＡであり、より好ましくはＸｉｌｉｎｘ社のＦＰＧＡである。さらに、これらの追加動作のどれであっても、事実上すべての形で検索動作および／または削減動作と組み合わせて、追加の速度、柔軟性、およびセキュリティを提供するマルチステージデータ処理パイプラインを形成することができる。各動作の複雑さは、事実上無制限であり、再構成可能論理デバイス２１のリソースおよび本発明を実践する人の性能要件のみによって制限される。各処理動作を、必要に応じて、単一のステージまたは複数のステージで実施することができる。
【００７６】
図２９に、図１に示されたシステムの再構成可能論理デバイス２１内で実施されたマルチステージ処理パイプライン２００を示す。パイプライン２００内の少なくとも１つのステージが、ＰＬＤ上で実施される。パイプライン２００の各ステージ２０２は、それが受け取るデータを、その所期の機能性（たとえば、圧縮、伸張、暗号化、暗号解読）に従って処理し、その後、処理されたデータを、パイプラインの次のステージ、前のステージ、または制御プロセッサ２０４のいずれかに渡すように構成されている。たとえば、パイプライン２００の第１のステージ２０２は、大容量記憶媒体２６からのデータストリーミングを操作し、その機能性に従ってそのデータを処理する。ステージ１によって処理されたデータは、その後、さらなる処理のためにステージ２に渡され、以下同様にしてステージＮに達する。データが、すべての適切なステージ２０２を通過した後に、その処理の結果を、システムバス３４を介して、制御プロセッサ２０４および／またはコンピュータに転送することができる。
【００７７】
図２９のこの例示的なパイプライン２００を複製し、その結果、別々のパイプライン２００が、大容量記憶媒体２６のディスクシステムの各ヘッドに関連するようにすることができる。そのような構成によって、複数のデータストリームがディスクから読み出される時に、これら複数のデータストリームに対する並列処理動作の実行に関連する性能が改善される。システム内に他の性能ボトルネックがない場合に、スループットが、使用されるパイプライン２００の数に伴って線形に向上すると期待される。
【００７８】
各ステージを、必ずしも再構成可能論理デバイス２１内のＰＬＤ２０で実施する必要がないことに留意されたい。たとえば、一部のステージを、ＰＬＤ２０からアクセス可能なプロセッサ上のソフトウェア（図示せず）または専用ハードウェア（図示せず）で実施することができる。各ステージの正確な構成、およびＰＬＤ２０上、ソフトウェア、またはＡＳＩＣなどの専用ハードウェアでの各ステージの実施の判断は、各実践する人の計画に適用可能な、関連するコスト制約、性能制約、およびリソース制約に応じる。しかし、完全にＦＰＧＡなどのＰＬＤ２０内でのパイプライン化を使用することによって、処理スループットを大きく高めることができる。したがって、フィードバック経路を有しない平衡のとれたパイプライン（すなわち、各ステージが同一の実行時間を有するパイプライン）について、データスループットの向上は、ステージ数に正比例する。上で述べたように、他のボトルネックがないと仮定すると、Ｎステージがある場合に、Ｎ倍のスループット向上を期待することができる。しかし、マルチステージパイプラインが、ステージの間のフィードバックを使用することもでき、これは、実装コストを減らすか効率を高めるために、ある動作（たとえば、一部の暗号化動作）に望ましい可能性があることに留意されたい。
【００７９】
図３０に、最初の４つのステージ２０２に暗号解読エンジン２１０が含まれる、例示的なマルチステージパイプライン２００を示す。この例の暗号解読エンジン２１０は、大容量記憶媒体２６から暗号化され圧縮されたデータストリーミングを受け取るように動作する。第５のステージ２０２は、伸張エンジンとして働いて、暗号解読エンジン２１０を出た暗号解読された圧縮データを伸張する。したがって、伸張エンジンの出力は、ステージ６の検索エンジンによって処理される準備のできた、暗号解読され伸張されたデータのストリームである。制御プロセッサ２０４は、各ステージを制御して、それらを通る正しいフローを保証する。制御プロセッサ２０４は、各パイプラインステージに関連するパラメータ（適切な場合に、ソフトウェアで実施されるステージのパラメータを含む）をセットアップすることが好ましい。
【００８０】
図３１に、ＰＬＤが、システムバス３４から大容量記憶媒体２６に流れるデータ、または大容量記憶媒体２６からシステムバス３４に流れるデータのいずれかの暗号化エンジンとして使用される例を示す。図３２に、パイプライン２００が複数の処理エンジン（それぞれが１つまたは複数のステージからなる）からなり、この処理エンジンのそれぞれが、エンジンが受け取ったデータに対して列挙されたタスクを実行するように制御プロセッサ２０４によってアクティブ化されるか、受け取ったデータに関して「パススルー」として働くように制御プロセッサ２０４によって非アクティブ化されるかのいずれかになることができる、もう１つの例示的パイプラインを示す。異なるエンジンのアクティブ化／非アクティブ化は、パイプラインに望まれる機能性に応じる。たとえば、大容量記憶媒体２６に保管された暗号化され圧縮されたデータに対する検索動作の実行が望まれる場合に、暗号解読エンジン２１０、伸張エンジン２１４、および検索エンジン２１８のそれぞれをアクティブ化すると同時に、暗号化エンジン２１２および圧縮エンジン２１６のそれぞれを非アクティブ化することができ、同様に、暗号化されていないデータを、大容量記憶媒体に圧縮され暗号化されたフォーマットで保管することが望まれる場合に、圧縮エンジン２１６および暗号化エンジン２１２をアクティブ化すると同時に、暗号解読エンジン２１０、伸張エンジン２１４、および検索エンジン２１８のそれぞれを非アクティブ化することができる。本明細書の教示を読んだ時に当業者が理解するように、他のアクティブ化／非アクティブ化の組合せを、パイプライン２００に望まれる機能性に応じて使用することができる。
【００８１】
高度な暗号化／暗号解読アルゴリズムは、計算の複雑な組を必要とする。使用される特定のアルゴリズムに応じて、ディスク速度での暗号化／暗号解読の実行は、暗号化／暗号解読エンジンに到着するストリーミングデータに追い付くために、高度な技術を使用することを必要とする。本発明のＰＬＤベースアーキテクチャは、比較的単純な暗号化／暗号解読アルゴリズムの実装だけではなく、複雑な暗号化／暗号解読アルゴリズムの実装もサポートする。ＤＥＳ、Ｔｒｉｐｌｅ  ＤＥＳ、ＡＥＳなどを含むがこれに制限されない、事実上すべての知られている暗号化／暗号解読技術を、本発明の実践で使用することができる。それらのすべての開示全体が参照によって本明細書に組み込まれる、Ｃｈｏｄｏｗｉｅｃ他著、「Ｆａｓｔ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ  ｏｆ  Ｓｅｃｒｅｔ−Ｋｅｙ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒｓ  Ｕｓｉｎｇ  Ｍｉｘｅｄ  Ｉｎｔｅｒ−ａｎｄ  Ｏｕｔｅｒ−Ｒｏｕｎｄ  Ｐｉｐｅｌｉｎｉｎｇ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  ＦＰＧＡｓ、９４〜１０２ページ（２００１年２月）、ＦＩＰＳ  ４６−２、「Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ」ｒｅｖｉｓｅｄ  ｖｅｒｓｉｏｎ  ｉｓｓｕｅｄ  ａｓ  ＦＩＰＳ  ４６−３、Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ（１９９９年）、ＡＮＳＩ  ｘ９．５２−１９９８、「Ｔｒｉｐｌｅ  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ  Ｍｏｄｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄｓ  Ｉｎｓｔｉｔｕｔｅ（１９９８年）、ＦＩＰＳ  １９７、「Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ」、Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ（２００１年）を参照されたい。
【００８２】
図３３に、本発明を用いて実施できる単一ステージ暗号化の例を示す。データフローの向きは、上から下である。テキストのブロック（通常は６４ビットまたは１２８ビット）が、入力レジスタ２２０にロードされる（制御プロセッサ２０４またはＣＰＵ３２のいずれかによって）。組合せ論理（ＣＬ）２２４が、暗号ラウンドを計算し、そのラウンドの結果が出力レジスタ２２６に保管される。中間ラウンド中に、出力レジスタ２２６の内容が、フィードバック経路２２５を介し、ＭＵＸ２２２を介してＣＬ２２４にフィードバックされて、後続ラウンドが計算される。最終ラウンドの完了時に、出力レジスタ内のデータが、暗号化されたブロックであり、大容量記憶媒体に保管される準備ができている。この構成は、単一ステージ暗号解読エンジンとしても使用することができ、この場合に、暗号を計算するＣＬが、暗号化論理ではなく暗号解読論理になる。  図３３に示された暗号化エンジンのスループットは、パイプライン化技術の使用を介して改善することができる。図３４に、ラウンド自体の組合せ論理内にパイプライン化がある、パイプライン化された暗号化エンジンの例を示す。各ＣＬ２２４に、複数のラウンド内パイプラインレジスタ２２８が含まれる。使用されるラウンド内パイプラインレジスタ２２８の数は、可変とすることができ、ＣＬあたり２個に制限する必要はない。さらに、フィードバック経路２２５によって表されるループを、それぞれがその間にラウンド間パイプラインレジスタ２３０を有する、ラウンドＣＬの複数のコピー２２４ａ、２２４ｂ、…を用いてアンロールすることができる。各ＣＬ２２４のラウンド内パイプラインレジスタ２２８の数と同様に、アンロールの度合（すなわち、ラウンドＣＬ２２４の数）も柔軟である。図３３の暗号化エンジンに対して、図３４のエンジンが、ＰＬＤ２０上のより多くのリソースを消費するが、より高いデータスループットを提供することに留意されたい。
【００８３】
図３５に、ラウンドが完全にアンロールされている、暗号化エンジンの例を示す。図３３および図３４のフィードバック経路２２５は、もはや不要であり、データは、入力レジスタ２２０からＣＬ２２４のパイプライン（それぞれが、複数のラウンド内パイプラインレジスタ２２８を含み、ラウンド間パイプラインレジスタ２３０によって分離されている）を介して、出力レジスタ２２６に継続的に流れることができる。図３３および図３４の暗号化エンジンに対して、この構成は、最高のデータスループットを実現するが、再構成可能論理内で最大の量のリソースを必要とする。
【００８４】
多くの情況で、データは、図３６に示されているように、データウェアハウスに保存される。データウェアハウス（データが常駐する実際のハードウェアおよび関連データベーステクノロジ）を所有する人または実体は、しばしば、そこに保管された実際のデータを所有する人または実体と同一でない。たとえば、当事者Ａ（データウェアハウザ）が、データウェアハウスを所有し、データウェアハウジングサービスを当事者Ｂ（当事者Ａのデータウェアハウスを使用して、物理的にデータを保管するデータ所有者）に提供する場合に、データ所有者は、このデータウェアハウザのウェアハウスに保管されたデータにアクセスできる第三者に関する正当な懸念を有する。すなわち、図３６に示されているように、データウェアハウザは、データへの物理的アクセスを制御するが、誰がアクセスゲートウェイを介してデータに物理的にアクセスできるかを制御することを望むのは、データ所有者である。その場合に、データ所有者のデータを、暗号化されたフォーマットでデータウェアハウスに保管することが便利であり、データ所有者は、保管されたデータの暗号解読アルゴリズムおよび／または暗号解読キーの配信に対する制御を保つ。この形で、許可されない第三者が、データ所有者の暗号化されていないフォーマットのデータへのアクセスを得る危険性が減らされる。そのような構成では、データウェアハウザは、データ所有者の保管されたデータの暗号化されてないバージョンへのアクセスを与えられない。
【００８５】
データ所有者が、データウェアハウスからインターネットなどのネットワークを介して当事者Ｃに、保管された暗号化されたデータのすべてまたは一部を通信することを望む場合に、そのデータを、別の形の暗号化（たとえば、異なるアルゴリズムおよび／または異なる暗号解読キー）を介して、ネットワークを介する配信中に保護することができる。データ所有者は、データの暗号解読に適当なアルゴリズムおよび／またはキーを当事者Ｃに与えることができる。この形で、データ所有者および許可された第三者が、暗号解読された（平文の）データへのアクセスを有する２つだけの当事者になる。しかし、許可された第三者は、まだデータウェアハウスに保管されているデータ所有者のデータを暗号解読することができない。というのは、そのデータが、受信されたデータと異なるモードの暗号化を所有するからである。
【００８６】
普通は、データウェアハウジングシナリオで暗号化／暗号解読を実行するのに必要な計算は、データウェアハウザが所有し、かつその直接の制御の下にあるコンピュータ上のソフトウェアで実行される。そのような情況では、図３７に示されているように、暗号解読動作の出力である平文が、暗号化／暗号解読動作の実行に使用されるプロセッサのメインメモリに保管される。このソフトウェア（またはそのプロセッサで動作する他のソフトウェア）が、ウィルスまたは他のマルウェアによって危険にさらされている場合に、データ所有者は、未知の当事者に対する平文テキストデータの制御を失う可能性がある。したがって、従来の方法を用いると、データウェアハウザおよび未知のマルウェア関連当事者のうちの一方または両方が、プロセッサメインメモリへのアクセスを有し、したがって、データ所有者の平文形式のデータへのアクセスを有する。
【００８７】
このセキュリティの短所を改善するために、本発明を使用して、図３８に示されているように、データ所有者だけが制御を有する再構成可能論理デバイス２１（好ましくはＰＬＤ２０内）で暗号化および暗号解読を実施することができる。図３８では、キー１を使用する暗号解読エンジン３８００およびキー２を使用する暗号化エンジン３８０２が、ＰＬＤ２０で実施されている。再構成可能論理デバイス２１は、データ所有者の制御の下にあり、好ましくは（そうである必要がない場合もあるが）インターネットなどのネットワークを介してデータウェアハウザのデータストアと通信して、データ所有者の暗号化されたデータのストリーム３８０６を受信する（保管されたデータは、前にキー１を使用して暗号化されたものである）。したがって、暗号解読エンジン３８００は、キー１を使用して、データストリーム３８０６を暗号解読するように動作する。暗号解読エンジン３８００の出力３８０４は、暗号解読された（または平文）フォーマットの、データ所有者のデータである。このデータは、ＰＬＤのセキュアメモリまたはセキュアオンボードメモリ内にある。このセキュアメモリは、その上にマルウェアを有する可能性があるソフトウェアに不可視であり、かつアクセス不能なので、「ハッカー」に対する平文データの制御を失う危険性が、事実上除去される。その後、平文データ３８０４が、暗号化エンジン３８０２に供給され、この暗号化エンジン３８０２は、キー２を使用して、データ３８０６を暗号化する。暗号化エンジン３８０２の出力は、新たに暗号化されたデータ３８０８であり、許可された第三者のデータ要求元に配信されることができる。したがって、インターネットなどのネットワークを介するデータ３８０８のセキュア配信を維持することができる。許可された第三者の要求元がデータ３８０８を解釈するために、データ所有者は、その第三者にキー２を与えることができる。
【００８８】
図３９ａおよび図３９ｂに、本発明のこの特徴に関する実施形態を示す。図３９ａに、コンピュータサーバにインストールすることができる回路基板３９００を示す。ＰＣＩ−Ｘコネクタ３９１６が、基板３９００をサーバのシステムバス３４（図示せず）にインターフェースするように働く。ＦＰＧＡなどのＰＬＤ２０が、基板３９００上に実装されている。ＦＰＧＡ内に、３つの機能すなわち、外部環境との接続を提供するファームウェアソケット３９０８、暗号解読エンジン３９０４、および暗号化エンジン３９０２が実装されることが好ましい。ＦＰＧＡは、ＦＰＧＡだけに接続されたオンボードメモリ３９０６とも通信することが好ましい。オンボードメモリ３９０６に好ましいメモリデバイスは、ＳＲＡＭまたはＤＲＡＭである。メモリ３９０６のアドレス空間および存在は、ＦＰＧＡだけに可視である。ＦＰＧＡは、プライベートＰＣＩ−Ｘバス３９１０を介してディスクコントローラ３９１２（ＳＣＳＩ、Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ、または類似物を使用する）にも接続されることが好ましい。ディスクコネクタ３９１４が、データウェアハウスとして働くことのできる大容量記憶媒体２６（図示せず）にディスクコントローラ３９１２をインターフェースすることが好ましい。ディスクコントローラ３９１２およびディスクコネクタ３９１４は、当技術分野でよく知られている既製構成要素である。製造業者の例に、Ａｄａｐｔｅｃ社およびＬＳＩ社が含まれる。
【００８９】
大容量記憶媒体２６への通常の読取／書込アクセスをサポートするために、ＦＰＧＡは、ＰＣＩ−Ｘコネクタ３９１６を内部ＰＣＩ−Ｘバス３９１０にリンクする、ＰＣＩ−Ｘ対ＰＣＩ−Ｘブリッジとして構成されることが好ましい。これらのブリッジング動作は、ファームウェアソケット３９０８内で実行され、その機能性は、当技術分野で知られている。ＰＣＩ−Ｅｘｐｒｅｓｓ、ＰＣＩ、Ｉｎｆｉｎｉｂａｎｄ、およびＩＰを含むがこれに制限されない、ＰＣＩ−Ｘ以外の通信パスウェイを使用することができる。
【００９０】
暗号化／暗号解読機能性をサポートするために、大容量記憶媒体２６から基板３９００へのデータストリーミングは、暗号解読エンジン３９０４に供給される。暗号解読エンジン３９０４の平文出力は、メモリ３９０６（図３９ａ）に保管するか、ＦＰＧＡ内部のメモリ（図３９ｂ）に保管するか、この２つのある組合せとすることができる。その後、暗号化エンジン３９０２が、メモリ３９０６、内部ＦＰＧＡメモリ、またはこの２つの組合せに保管された平文データを、保管されたデータの暗号解読に使用されたキーと異なるキーを使用して暗号化する。オンボードメモリ３９０６または内部ＦＰＧＡメモリのどちらを使用するかの選択は、使用可能なＦＰＧＡリソース、暗号解読／暗号化されるデータの量、使用される暗号解読／暗号化のタイプ、および所望のスループット性能特性を含むがこれに制限されない、さまざまな考慮事項に応じる。
【００９１】
平文が、オンボードメモリ３９０６または内部ＦＰＧＡメモリに存在する時間中に、この平文データは、マザーボードバス３４にアクセスするプロセッサからアクセス可能でない。というのは、メモリ３９０６または内部ＦＰＧＡメモリとＰＣＩ−Ｘコネクタ３９１６との間に直接接続がないからである。したがって、メモリ３９０６および内部ＦＰＧＡメモリは、そのようなプロセッサのアドレス空間内になく、これは、導出により、メモリ３９０６および内部ＦＰＧＡメモリが、そのプロセッサに存在する可能性があるすべてのマルウェアによってアクセス可能でないことを意味する。
【００９２】
さらに、図３９ａおよび図３９ｂの実施形態に、任意選択として、暗号解読エンジン３９０４と暗号化エンジン３９０２との間に置かれた、ＦＰＧＡ内の検索エンジン（図示せず）を含めることもでき、これによって、データ所有者が、許可された第三者のデータ要求元に、その第三者のデータ要求の境界におさまる保管されたデータの目標にされたサブセットを配信することが可能になる。
【００９３】
上で述べたように、圧縮および伸張も、本発明の技術に従ってＰＬＤで実行できる貴重な動作である。大容量記憶媒体２６への保管の前にデータを圧縮し（これによって記憶空間を節約する）、その後、プロセッサによる使用のために大容量記憶媒体から読み取る時にデータを伸張することが一般的である。これらの通常の圧縮動作および伸張動作は、通常はソフトウェアで実行される。一般に使用されている圧縮技術は、よく知られているレンペル−ジブ（ＬＺ）圧縮である。両方の開示全体が参照によって本明細書に組み込まれる、Ｚｉｖ他著、「Ａ  Ｕｎｉｖｅｒｓａｌ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｓｅｑｕｅｎｔｉａｌ  Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ」、ＩＥＥＥ  Ｔｒａｎｓ．  Ｉｎｆｏｒｍ．  Ｔｈｅｏｒｙ、ＩＴ−２３（３）：３３７−３４３（１９７７年）、およびＺｉｖ他著、「Ｃｏｍｐｒｅｓｓｉｏｎ  ｏｆ  Ｉｎｄｉｖｉｄｕａｌ  Ｓｅｑｕｅｎｃｅ  ｖｉａ  Ｖａｒｉａｂｌｅ  Ｒａｔｅ  Ｃｏｄｉｎｇ」、ＩＥＥＥ  Ｔｒａｎｓ．  Ｉｎｆｏｒｍ．  Ｔｈｅｏｒｙ、ＩＴ−２４：５３０−５３６（１９７８年）を参照されたい。さらに、本発明のＰＬＤベースアーキテクチャは、ＬＺ圧縮だけではなく、他の圧縮技術の配置もサポートする。すべての開示全体が参照によって本明細書に組み込まれる、Ｊｕｎｇ他著、「Ｅｆｆｉｃｉｅｎｔ  ＶＬＳＩ  ｆｏｒ  Ｌｅｍｐｅｌ−Ｚｉｖ  Ｃｏｍｐｒｅｓｓｉｏｎ  ｉｎ  Ｗｉｒｅｌｅｓｓ  Ｄａｔａ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｎｅｔｗｏｒｋｓ」、ＩＥＥＥ  Ｔｒａｎｓ．  ｏｎ  ＶＬＳＩ  Ｓｙｓｔｅｍｓ、６（３）：４７５−４８３（１９９８年９月）、Ｒａｎｇａｎａｔｈａｎ他著、「Ｈｉｇｈ−ｓｐｅｅｄ  ＶＬＳＩ  ｄｅｓｉｇｎ  ｆｏｒ  Ｌｅｍｐｅｌ−Ｚｉｖ−ｂａｓｅｄ  ｄａｔａ  ｃｏｍｐｒｅｓｓｉｏｎ」、ＩＥＥＥ  Ｔｒａｎｓ．  Ｃｉｒｃｕｉｔｓ  Ｓｙｓｔ．、４０：９６−１０６（１９９３年２月）、Ｐｉｒｓｃｈ他著、「ＶＬＳＩ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  ｆｏｒ  Ｖｉｄｅｏ  Ｃｏｍｐｒｅｓｓｉｏｎ−Ａ  Ｓｕｒｖｅｙ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＩＥＥＥ、８３（２）：２２０−２４６（１９９５年２月）を参照されたい。本発明と共に配置できるＬＺ圧縮以外の圧縮技術の例に、ハフマン符号化、辞書技術、および算術圧縮などのさまざまなロスレス圧縮タイプと、さまざまな知られているロッシイ圧縮技術が含まれるが、これらに制限はされない。
【００９４】
圧縮データを検索できる速度を改善するために、検索を実行するＰＬＤ２０に伸張動作をインポートし、これによって、ＰＬＤベース検索動作と同一の速度の利益を有する伸張を実現することが貴重である。図４０に、圧縮データのストリーム４０００が、大容量記憶媒体２６から再構成可能論理デバイス２１に渡され、この再構成可能論理デバイス２１で、圧縮解除（伸長）エンジン４００２および検索エンジン４００４がＰＬＤ２０内で実施される、本発明のこの態様を示す。図４１に、本発明のこの態様の好ましい実施形態を示す。図４１では、図３９ａおよび図３９ｂに示された基板３９００のＦＰＧＡ２０が、伸張エンジン４００２および検索エンジン４００４を実施する。図３９ａおよび図３９ｂに関して説明したように、平文形式の保管されたデータ（伸張エンジン４００２から出る伸張されたデータ）の保全性は、このデータが、オンボードメモリ３９０６、内部ＦＰＧＡメモリ、またはこの２つの組合せだけに保管されるので、保たれる。図４２に、基板３９００のＦＰＧＡ２０が、その上で圧縮エンジン４２００を実施され、これによって、システムバス３４から来るデータを、圧縮された形で大容量記憶媒体２６に保管できるようになる、圧縮動作に関する好ましい実装を示す。理解されるように、基板３９００のＦＰＧＡ２０に、伸張エンジン４００２、検索エンジン４００４、および圧縮エンジン４２００をロードすることもできる。そのような配置では、基板３９００に望まれる機能性に応じて、圧縮エンジン４２００を非アクティブ化する（これによって、組み合わされた伸張／検索機能性がもたらされる）か、伸張エンジン４００２および検索エンジン４００４の両方を非アクティブ化する（これによって、圧縮機能性がもたらされる）ことができる。
【００９５】
本発明の機能性を有するＦＰＧＡ２０を構成するために、図４３の流れ図に従うことが好ましい。第１に、エンジンの動作とそのエンジンのお互いとの相互作用の両方を規定する所望の処理エンジンのコードレベル論理４３００を作成する。このコードは、ＨＤＬソースコードであることが好ましいが、標準的なプログラミング言語およびプログラミング技術を使用して作成することができる。ＨＤＬの例として、ＶＨＤＬまたはＶｅｒｉｌｏｇを使用することができる。その後、ステップ４３０２で、合成ツールを使用して、ＨＤＬソースコード４３００を、処理エンジンのゲートレベル記述４３０４に変換する。好ましい合成ツールは、Ｓｙｎｐｌｉｃｉｔｙ社が提供するよく知られているＳｙｎｐｌｉｃｉｔｙ  Ｐｒｏソフトウェアであり、好ましいゲートレベル記述４３０４は、ＥＤＩＦネットリストである。しかし、他の合成ツールおよび他のゲートレベル記述を使用できることに留意されたい。次に、ステップ４３０６で、配置配線ツールを使用して、ＥＤＩＦネットリスト４３０４を、ＦＰＧＡ２０にロードされるテンプレート４３０８に変換する。好ましい配置配線ツールは、当技術分野でよく知られているように、マッピング、タイミング分析、および出力生成の機能性を含むＸｉｌｉｎｘ  ＩＳＥツールセットである。しかし、本発明の実践で、他の配置配線ツールを使用することができる。テンプレート４３０８は、当技術分野で知られているように、ＦＰＧＡのＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｃｅｓｓ  Ｇｒｏｕｐ）マルチピンインターフェースを介して、ＦＰＧＡ２０にロードできるビット構成ファイルである。
【００９６】
上で述べたように、システムに望まれる、異なる処理機能性用のテンプレート４３０８を、ＦＰＧＡでの選択的実装のために事前に生成し、かつ保管することができる。たとえば、異なるタイプの圧縮／伸張、異なるタイプの暗号化／暗号解読、異なるタイプの検索動作、異なるタイプのデータ削減動作、または前述の異なる組合せのためのテンプレートを、事前に生成し、かつその機能性が必要な時に、ＦＰＧＡ２０への後続のロードのためにコンピュータシステムによって保管することができる。
【００９７】
さらに、スループットおよび消費されるチップリソースなどの性能特性を、事前に判定し、かつ各処理動作に関連付けることができる。これらの関連付けられたパラメータを使用することによって、どのテンプレートが特定の所望の機能性に最適であるかを知的に選択するのに、アルゴリズムを使用することができる。
【００９８】
たとえば、そのようなアルゴリズムは、図３３〜図３５の暗号化エンジンのどれが、所与の応用例に最も適するかに関する案内を提供することができる。下の表に、本発明の暗号化／暗号解読動作に従って、性能をモデル化するのに使用できるパラメータを提示する。
【表１】
0005439651.tif 000002
【００９９】
これらのパラメータそれぞれの値は、当技術分野で知られているように、たやすく知られるか、たやすく測定することができる。整数ＩについてＲ＝ＩＬである場合に、暗号化／暗号解読の反復が、均等にアンロールされている。そうでない場合には、後のパイプラインステージが、パススルー機能を有しなければならない。というのは、最終結果が、末尾ではなくパイプラインの内部で計算されるからである。
【０１００】
パイプライン化された暗号エンジンのスループットは、次式によって与えられる。
【数１】
0005439651.tif 000003
【０１０１】
ＦＰＧＡのチップリソースは、通常、よく知られているように、ＣＬＢまたはスライス単位で測定される。ＦＰＧＡ以外の再構成可能論理では、リソースが、他の単位（たとえば、チップ面積）で測定される場合がある。どの場合でも、必要なリソースは、並列にサポートされるラウンド数に線形である。したがって、エンジンに必要なチップリソースは、次の通りである。
Ｒｅｓｏｕｒｃｅｓ＝Ａ０＋ＬＡＲ（ｐ）
パラメータＴｈｒｏｕｇｈｐｕｔおよびＲｅｓｏｕｒｃｅｓの値は、パイプラインの１ステージで実装できる保管される処理動作（または機能ｆｉ）ごとに前もって決定されることができる。したがって、各処理動作または機能を、それに対応するＴｈｒｏｕｇｈｐｕｔおよびＲｅｓｏｕｒｃｅｓの値に関係させるテーブルを作成することができる。
【０１０２】
したがって、ＰＬＤに配置される特定のテンプレート（１つまたは複数のさまざまな処理動作を規定する）を、発行される特定の照会またはコマンドに合わせて調整することができる。本発明を実践する人が望む形で、ＴｈｒｏｕｇｈｐｕｔとＲｅｓｏｕｒｃｅｓのバランスをとるアルゴリズムを作成して、どの候補テンプレートがある応用例に最も適するかを判断することができる。したがって、制御プロセッサ３２は、次のように、機能の組に関する総合スループットおよびリソースを計算することができる。機能の組のスループットは、機能のそれぞれに関する最小スループットである。
Ｔｈｒｏｕｇｈｐｕｔ＝Ｍｉｎ（ＴｈｒｏｕｇｈｐｕｔＦ１，ＴｈｒｏｕｇｈｐｕｔＦ２，…，ＴｈｒｏｕｇｈｐｕｔＦｎ）
機能の組を配置するのに必要なリソースは、機能のそれぞれに必要なリソースの合計である。
Ｒｅｓｏｕｒｃｅｓ＝ＲｅｓｏｕｒｃｅｓＦ１＋ＲｅｓｏｕｒｃｅｓＦ２＋…＋ＲｅｓｏｕｒｃｅｓＦｎ
各機能に関する複数のオプションを与えられれば、制御プロセッサは、最適化問題（または、望まれる場合に「近最適化（ｎｅａｒ  ｏｐｔｉｍｉｚａｔｉｏｎ）」問題）を解くことができる。最適化は、必要なリソースが再構成可能ロジックで使用可能なリソース以下という制約の下で、総合スループットを最大にする、機能ごとのオプションの組を配置することとすることができ、あるいは、最適化は、総合スループットが指定された最小閾値未満にならないという制約の下で、必要なリソースを最小にする、機能ごとのオプションの組を配置することとすることができる。そのような最適化問題または近最適化問題を解く技術は、当技術分野でよく知られている。そのような技術の例に、列挙、バウンデッドサーチ（ｂｏｕｎｄｅｄ  ｓｅａｒｃｈ）、遺伝的アルゴリズム、グリーディアルゴリズム（ｇｒｅｅｄｙ  ａｌｇｏｒｉｔｈｍ）、シミュレーテッドアニーリングなどが含まれるが、これらに制限はされない。
【０１０３】
ディスクドライブシステムなどの大容量記憶媒体からのデータストリーミングを処理するのに、本発明のシステムを使用することは、保管されたデータを高速で処理する強力な技術である。しかし、非常に大きいデータベースは、通常、多数のディスクシリンダにまたがる。したがって、データベースファイルが、不連続なディスクシリンダに置かれたトラックに書き込まれる時に、遅延に出会う場合がある。これらの遅延は、ディスク読取／書込ヘッドを、データシリンダ上の現在位置から、ディスクから読み取られるファイルが連続する新しいデータシリンダに移動する必要に関連する。これらの遅延は、ヘッドが移動しなければならない距離が増えるにつれて増える。したがって、ディスク上の複数のデータシリンダにまたがるデータを読み取るために、ディスクからのデータストリームのフローが、ヘッドがシリンダからシリンダに移動する時に中断される。現在のディスクドライブでは、これらの遅延が、ミリ秒の範囲になる可能性がある。したがって、これらのヘッド移動遅延（当技術分野で「シーク」時間として知られている）は、潜在的な性能ボトルネックを表す。
【０１０４】
標準的な現代のディスクシステムでは、図４４ａおよび図４４ｂに示されているように、トラック４４００が、ディスクまたはディスクプラッタの組の上で、中心原点４４０６の回りの同心円状であるシリンダ４４０２としてレイアウトされる。図４４ａに、コンピュータハードディスクなどの記憶デバイスとして働く回転可能プレーナ磁気媒体４４５０を示すが、データは、磁気媒体４４５０で、別個の環状のトラック４４００に置かれる。磁気記録では、各トラック４４００ｉ（ｉは、ａ、ｂ、ｃ、…とすることができる）が、中心原点４４０６に対してそれ自体の半径Ｒｉに位置する。各トラックは、次の内周トラックおよび次の外周トラックから、トラック間の間隔Ｔだけ計方向に分離されている。Ｔの値は、各トラック間の径距離について均等であることが好ましい。しかし、そうである必要はない。ヘッド４４０４が、トラック４４００ｉからデータを読み取るかトラック４４００ｉに書き込むために、ヘッド４４０４が、ディスク上で原点４４０６からＲｉの点の上にあるように位置決めされなければならない。ディスクが回転する時に、トラックが、ヘッドの下を通過して、読取動作または書込動作が可能になる。
【０１０５】
ディスクドライブは、通常、直接上書き方法を使用し、したがって、媒体４４５０上でのヘッド４４０４の正確な径方向の配置が、持続的なエラーなしの使用に重要である。一般に、各環状トラック４４００ｉは、約１５０個のほぼ等しい連続する円弧に分割される。図４４ａに、各トラック４４００ｉが、８つの均一な円弧４４６０に分割され、各円弧４４６０が、θ＝２π／８の角度に及ぶ例を示す。当技術分野で知られているように、同一の角度θに及ぶ異なるトラック４４００の円弧が、ディスクセクタ（またはウェッジ）４４６２を構成する。
【０１０６】
これらの円弧４４６０に、変更（書き換え）できる複数のデータセット４４６４（論理ブロックおよび物理セクタ）が含まれる。さらに、これらの円弧４４６０に、磁気記録からの信号強度が最大になるように、ヘッド４４０４をデータ領域の上に置くためのガイドとして使用される、変更不能な（固定された）磁気的に書き込まれたマーキング４４６６（ＡＢＣＤサーボバーストなど）が含まれる。
【０１０７】
図４４ｂは、ドライブシステムに存在する複数のディスク４４５０の断面図を伴うディスクドライブシステム４４７０のブロック図である。図４４ｂからわかるように、多数のドライブシステム４４７０が、ディスク４４５０の両面を使用し、スピンドルモーターなどの回転デバイス４４７２に同心円状に置かれる、複数のディスク４４５０（またはプラッタ）を含む場合がある。そのような構成では、各ディスク表面（上面４４５２および下面４４５４）が、異なるヘッド４４０４によってアクセスされる。別々のヘッド４４０４によって単一の半径Ｒｉでアクセスされる環状トラック４４００の集合を、「データシリンダ」４４０２と呼ぶ。隣接するデータシリンダの帯を、ゾーンと呼ぶ。
【０１０８】
別々のシリンダ４４０２を有することは、シリンダ４４０２の間で移動する時に、ディスクヘッド４４０４の移動を必要とする。シリンダ４４０２の間で移動するために、位置決めシステム４４７４が、線４４７６に沿って、通常はＴの増分で、ヘッド４４０４を適切に移動しなければならない。内周シリンダから外周シリンダに移動する時に、書き込まれるトラックの円周が増える。たとえば、図４４ａを参照すると、最内周トラック４４００ａの円周は、２πＲａであるが、最外周トラック４４００ｄの円周は、２πＲｄである。ＲｄはＲａより大きいので、トラック４４００ｄの円周が、トラック４４００ａの円周より大きくなる可能性が高い。これらの円周の差があるので、異なるゾーンを画定して、トラックに沿って異なる線ビット密度を可能にすることができ、これによって、大きい半径について、ほぼ一定の線データ密度を使用することによって得られるデータセクタより多い、シリンダ４４０２の周囲にデータセクタを作ることができる。
【０１０９】
１つまたは複数のトラック４４００にまたがってデータを書き込むために、ヘッド４４０４を、位置決めシステム４４７４によって、少なくとも隣接トラック４４００の中心間距離だけ別の半径に再位置決めしなければならない。この動きは、機械的整定時間（ヘッド４４０４の再位置決め）と、シリンダ４４０２に対するヘッド４４０４の再同期化時間（遅れずにダウントラックの）を必要とする。ヘッドを、Ｔなど、比較的長い距離だけ移動する時に、この整定時間が大きくなる。一緒に、これらの時間は、平均して、シリンダ４４０２の回転の半分を要する可能性があり、これは、通常、シリンダからシリンダに移動する時に数ミリ秒になる。上で述べたように、この時間持続期間を、しばしば、「シーク」時間と呼び、これが主要な性能ボトルネックになる可能性がある。このボトルネックに起因して、データ読取／書込バーストは、一般に、単一のトラックまたはシリンダに制限されている。
【０１１０】
好ましい実施形態の新規で独自の特徴によれば、不連続円弧としてレイアウトされたトラックに対処するために、ヘッド４４０４を再位置決めする技術が使用される。好ましい実施形態では、これらの不連続円弧が、ディスク４４５０上の全般的に螺旋状のトラッキングパターンに配置された不連続環状円弧であり、ヘッド位置決めシステムは、ＡＢＣＤサーボバーストなど、ヘッドを適切に位置決めするために従来のシステムに既に存在するサーボパターンを使用する。この技術は、トラックを超え、ゾーン全体までに書き込まれたバーストを提供することができ、単一のゾーンにディスク全体を含めることができる。他のサーボパターンが可能であり、本発明のこの特徴の範囲から除外されないが、サーボパターンに関して普通のＡＢＣＤシステムを使用する例を示す。
【０１１１】
サーボシステムの目標が、環状トラック４４００を実現するために単一の半径にヘッド４４０４を位置決めすることである普通のヘッド移動と異なって、図４５に示されたこの新規で独自の位置決め方法は、ディスク４４５０の回りでのヘッド４４０４の角度位置に比例して、別個の円弧４５００にヘッド４４０４を位置決めすることをめざし、これによって、ディスク４４５０上の不連続円弧の磁気パターンの螺旋トポロジに対処する。
【０１１２】
図４５に関して、各ウェッジ４４６２が２π／Ｗの角度に及ぶ、Ｗ個のウェッジ（またはセクタ）４４６２に均等に分割されたディスク４４５０の単一の回転を検討されたい。Ｗは、ディスクの単一の回転でヘッド４４０４を通過するウェッジ４４６２の総数である。図４５では、ヘッド（図示せず）を、原点４４０６の左でｘ軸に沿った任意の点に位置決めすることができる。各ウェッジ４４６２に、ウェッジ番号ｗを割り当てることができ、ｗは、１からＷまでの任意の整数とすることができる。ディスク４４５０が回転する時に、ヘッド４４０４の径方向の変位が、ウェッジ番号ｗに比例する量すなわち線形比（ｗ／Ｗ）×Ｔだけ増分され、Ｔは、普通のトラック間（またはシリンダ間）の距離または他の距離である。
【０１１３】
図４５からわかるように、データは、区分的な形、好ましくは複数の不連続環状円弧４５００によって画定される区分的螺旋の形で、ディスク４４５０の表面に書き込まれる。好ましい実施形態のディスクの回転ごとに、ヘッド４４０４が、Ｗ個の不連続環状円弧４５００に出会うように位置決めされ、各環状円弧４５００は、２π／Ｗの角度に及ぶ。図４５の例では、Ｗが４と等しい。各円弧４５００が環状であると述べたが、これが意味するのは、各円弧４５００ｉが、実質的に一定の曲率を有することである。Ｗがすべての半径について一定である好ましい実施形態では、各不連続円弧４５００ｉが、２πＲｉ／Ｗの円周を所有する。各円弧４５００ｉの半径Ｒｉは、円弧４５００ｉ−１の半径よりＴ／Ｗだけ大きく、円弧４５００ｉ＋１の半径よりＴ／Ｗだけ小さいことが好ましい。したがって、下で注記するように、好ましい実施形態のディスク４４５０の完全な回転ごとに、ヘッド４４０４は、効果的に、普通の隣接トラック間の距離Ｔと等しい距離を移動する。図４５からわかるように、複数の別個の環状円弧４５００は、ディスク４４５０上で全般的に螺旋形のパターンを画定する。
【０１１４】
各半径Ｒｉが、それ自体のＷ値を有することができることに留意されたい。その場合に、不連続円弧４５００は、異なる円周を有することができ、原点からの複数の角度に及ぶことができる。
【０１１５】
各不連続円弧４５００に、ある円弧４５００から次の円弧へのヘッド４４０４の正しい移動を保証するために、連続円弧について図４４ａに示したサーボパターンものに似たＡＢＣＤサーボパターンが含まれる。普通のサーボシステムは、Ｔ／Ｗの小さい量だけ、ヘッド４４０４をステップさせるのに十分な帯域幅を有する。
【０１１６】
この処理の一部として、読取／書込ヘッド４４０４が、当初は、図４５のディスクの中心原点４４０６に関して位置ｄ０に置かれている例を検討されたい。この初期位置を、Ｒ１すなわち最内周円弧４５００１の半径距離とすることができる。ディスクが回転する際に、回転ｒごとに、ヘッド４４０４の半径変位Ｄが、次のように、ウェッジ番号ｗに比例する量だけ、ｄ０に対して相対的に位置決めされる。
【数２】
0005439651.tif 000004
ここで、Ｔは、普通のトラック間（またはシリンダ間）の距離である。完全な１回転で、ヘッド４４０４は、径方向に正確に完全に１トラック間の距離Ｔだけ移動する。ｒが２に達した時に、ヘッド４４０４は、径方向に正確に２Ｔだけ移動している。
【０１１７】
図４６に、好ましい実施形態のこの特徴に従ってディスク４４５０からデータを読み取るために、ディスクドライブシステム４４７０がそれによって動作する処理を示す。ステップ４６００で、システムは、ヘッドがあるディスクの位置を感知する。このステップは、当技術分野で知られているように、少なくとも部分的に、サーボパターンを感知すること、およびディスクに書き込まれたセクタＩＤを読み取ることによって達成されることが好ましい。その後、ステップ４６０２で、この部分が対応するディスクウェッジ４５０２のウェッジ番号ｗに応じて、ヘッドが新しいディスクウェッジ４５０２に出会うたびに、ヘッドをＤに再位置決めする。次に、ステップ４６０４で、円弧４５００上のサーボパターンを使用することによって、ヘッド位置を微調整する。ヘッドが正しく位置決めされたならば、ステップ４６０６で、データをディスクから読み取る。この処理は、その後、ディスクが回転を続ける際に、ステップ４６００に戻る。
【０１１８】
本発明のこの特徴は、ゾーン全体での読取モードまたは書込モードでのヘッドのシームレスで連続的な動作を可能にし、したがって、普通のシーク時間に関連する遅延をこうむらない、ディスク全体の読み取りまたは書き込みを可能にする。したがって、上に記載の検索技術および処理技術と組み合わせて使用される時に、検索／処理システムが、シーク時間遅延によって失速することなく、より効率的に動作することができる。しかし、本発明のこの特徴を、上で説明した検索／処理技術と組み合わせて使用する必要がないことに留意する価値がある。すなわち、磁気データ記憶ディスクとの間のデータ読み取りおよび書き込みに、螺旋パターンを使用するというこの技術は、上で説明した検索特徴および処理特徴と独立に使用することができる。
【０１１９】
もう１つの性能ボトルネックが、データが保管されたディスクがフラグメント化した時に発生する。一般的なファイルシステムでは、ファイルが、複数の固定サイズのセグメント（ブロック）に分割され、これらのセグメントが、ディスクに保管される。ファイルが非常に長い場合に、セグメントが、ディスクのさまざまな位置に保管される場合がある。上で注記したように、そのようなファイルにアクセスするために、ディスクヘッドをシリンダからシリンダへ移動しなければならず、ファイルアクセスが低速になる。ファイル全体が単一のオブジェクトとして、単一のシリンダに、または直接に隣接するシリンダに保管されるならばよりよい。しかし、経時的なディスクのフラグメンテーションのゆえに、これは常に可能ではないことがある。ディスクのデフラグメンテーションでは、通常、すべてのファイルをディスクの一端に移動し、その結果、新しいファイルを、他方の自由端で連続的に割り振れるようにすることが用いられる。通常、そのようなデフラグメンテーションは、長い時間を要する。従来技術で、この問題を解決するために多数の試みが行われてきた。１つのよく知られている技術が、バイナリバディシステム（ｂｉｎａｒｙ  ｂｕｄｄｙ  ｓｙｓｔｅｍ）として知られている。バイナリバディシステムでは、ディスク空間に関するすべての要求サイズが、次の２のべきに丸められる。したがって、２０００バイトのファイルについて、２０４８（２１１）の割振り要求が行われる。この処理は、内部フラグメンテーションにつながる。
【０１２０】
この問題を最小にする努力において、本明細書では、ファイルが１つまたは複数のセグメントに分割され、各セグメントが２のべきである技術を開示する。したがって、端数のない２のべきのサイズではない各ファイルは、一連の２のべきセグメントの合計として表される。
【０１２１】
最小セグメントサイズがセットされない実施形態では、ファイルを、メモリのブロックにセグメント化するこの技術に、（１）ファイルサイズが、端数のない２のべきである場合に、ファイルサイズと等しい記憶媒体上の記憶空間のブロックを要求することと、（２）ファイルサイズが、端数のない２のべきではない場合に、各ブロックが２のべきと等しいサイズを有する記憶媒体上の記憶空間の複数のブロックを要求することと、（３）要求が受け入れられた場合に、要求に従う１つまたは複数のデータファイルセグメントとして、ディスク上またはメモリ内などの記憶媒体内にデータファイルを保管することとが含まれる。この技術の好ましいバーションでは、ファイルサイズＦを、２進項でＦｋ…Ｆ２  Ｆ１と等しいＦとして考えることができる。ファイルサイズが端数のない２のべきではない時に、記憶装置内のブロックを要求することに、Ｆの１と等しいビットの総数と等しい総数ｎ個のブロックＢ１、…、Ｂｎを要求することが含まれ、各ブロックＢｉは、Ｆの１と等しい異なるビットＦｉに対応し、２ｉのサイズを有する。図４７ａに、２５００バイトのファイルサイズＦについてこの処理の例を示す。図４７ａからわかるように、好ましい２のべきの合計技術は、最小セグメントサイズが使用されない場合に、２０４８バイト（２１２）、２５６バイト（２９）、１２８バイト（２８）、６４バイト（２７）、および４バイト（２２）のセグメントサイズをもたらす。
【０１２２】
過度に小さいセグメントの生成を避けるために、最小セグメントサイズ２ｍを使用することが好ましい。たとえば、最小セグメントサイズを、５１２バイト（２９）（したがって、ｍは２である）とすることができる。この技術を用いると、最小セグメントサイズが使用される時に、ファイルを２のべきの合計サイズに分割することが、少なくとも最小セグメントサイズと等しい最小セグメントをもたらす。したがって、（１）ファイルサイズが端数のない２のべきであり、２ｍ以上である場合に、記憶空間のブロックは、ブロックがファイルサイズと等しくなるように要求され、（２）ファイルサイズが２ｍ未満の場合に、記憶空間のブロックは、ブロックが２ｍと等しくなるように要求され、（３）ファイルサイズが端数のない２のべきではなく、２ｍを超える場合に、記憶媒体上の記憶空間の複数のブロックが要求され、各ブロックは、２のべきと等しく、２ｍ以上のサイズを有する。
【０１２３】
図４７ｂに、ファイルサイズＳが２５００バイトである、この最小セグメント特徴の好ましい実装を示す。この技術を用いると、セグメントサイズが、２０４８バイト（２１２）、５１２バイト（２１０）になることがわかる。図４７ｂの好ましい実装では、Ｆｍ−１からＦ１のうちの少なくとも１つのビットＦｉが１と等しいので、Ｆは、新しい値Ｒ（２進数でＲｑ…Ｒ２Ｒ１と表すことができる）に丸められる。Ｒの値は、ビットＲｍ−１からＲ１のすべてが０と等しい、Ｆより大きい最小値として選択される。ファイルサイズＦが、異なる値であり、ビットＦｍ−１からＦ１のすべてが０と等しい場合には、ブロックの選択は、図４７ａと同様に進行する。しかし、ビットＦｍ−１からＦ１のうちの少なくとも１つが１と等しい場合に、Ｒを使用する図４７ｂの手順に従うことが好ましい。
【０１２４】
本明細書の教示を再検討した時に当業者が理解するように、そのような２のべきの合計ファイルシステムを実装するプログラム論理は、最小セグメントサイズの有無を問わず、たやすく開発することができる。
【０１２５】
２のべきの合計ファイルシステムでは、内部フラグメンテーションが、ファイルを等しいサイズのセグメントに分割し、同一の最小セグメントサイズを有する従来の（普通の）ファイルシステムと等しい。図４８に、バディファイルシステム対普通の（従来の）ファイルシステムおよび２のべきの合計ファイルシステムでの内部フラグメンテーションに起因して浪費される空間を示す。最小セグメントサイズが小さい時に、浪費される空間は、バディファイルシステムの場合にかなりあるが、最小セグメントサイズが増える時に、他のファイルシステムと匹敵するようになる。多くのファイルシステムで、小さいファイルの数が支配的なので、バディシステムは、しばしば、適切なオプションではない。
【０１２６】
図４９で、普通のファイルシステムおよび２のべきの合計ファイルシステムによる、ファイル全体に関するセグメントの総数を比較する。最小セグメントサイズが小さい時に、２のべきの合計システムは、普通の機構よりかなり少ないセグメントを作る。図５０に、両方のファイルシステムによる、ファイルあたりのセグメントの最大数、平均数、および最小数を示す。やはり、２のべきの合計ファイルシステムは、優位を占め、少数のセグメントを作る。言い換えると、２のべきの合計ファイルシステムは、より連続したファイルにつながる。
【０１２７】
したがって、２のべきの合計ファイルシステムは、バディシステム（多数の内部フラグメンテーションがある）と普通のファイルシステム（内部フラグメンテーションは少ないが潜在的に低い連続性がある）との間のよいトレードオフである。
【０１２８】
さらなる改良として、２のべきの合計ファイルシステムと共にデフラグメンテーションアルゴリズムを使用して、割振り要求用のディスク上の連続空間をより大きく保証することが好ましい。連続割振りを満足できない場合に、デフラグメンテーションアルゴリズムは、割振り要求を満足するために空間を解放することを試みる。このデフラグメンテーションアルゴリズムは、ディスク全体をデフラグメントするのではない。そうではなく、ディスクの一部を増分式にデフラグメントして、新しい割振り要求を増分的な形で満足することを可能にする。２のべきの合計ファイルシステムと共に使用するのに好ましいデフラグメンテーションアルゴリズムが、その開示全体が参照によって本明細書に組み込まれる論文、Ｃｈｏｌｌｅｔｉ、Ｓｈａｒａｔｈ共著、「Ｓｔｏｒａｇｅ  Ａｌｌｏｃａｔｉｏｎ  ｉｎ  Ｂｏｕｎｄｅｄ  Ｔｉｍｅ」、ＭＳ  Ｔｈｅｓｉｓ，Ｄｅｐｔ．ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ａｎｄ  Ｅｎｇｉｎｅｅｒｉｎｇ、Ｗａｓｈｉｎｇｔｏｎ  Ｕｎｉｖｅｒｓｉｔｙ、Ｓｔ．Ｌｏｕｉｓ、ＭＯ（２００２年１２月）の２６〜３０ページに開示されている。
【０１２９】
本明細書で「ヒープマネージャ部分デフラグメンテーションアルゴリズム」と称する好ましい部分的デフラグメンテーションアルゴリズムの擬似コードを、下に複写する。
１．Ｉｎｉｔｉａｌｉｚａｔｉｏｎ（）
ｆｏｒ  Ｉ＝０  ｔｏ  Ｈ−１
ｈｅａｐＭａｎａｇｅｒ［ｉ］＝０；／＊ヒープを空にする＊／
２．Ａｌｌｏｃａｔｅ（Ｓ）
ｉｆ  サイズＳの空きブロックがある
最低のアドレスＡを有するサイズＳのブロックを割り振る
ＵｐｄａｔｅＨｅａｐＭａｎａｇｅｒ（Ｓ，Ａ，“ａｌｌｏｃａｔｉｏｎ”）
ｅｌｓｅ  サイズの昇順でＳより大きいサイズの空きブロックを探す
ｉｆ  見つかった、最低のアドレスを有するブロックを選択する
サイズＳのブロックができるまでブロックを再帰的に分割する
最低のアドレスＡを有するサイズＳのブロックを選択する
ＵｐｄａｔｅＨａａｐＭａｎａｇｅｒ（Ｓ，Ａ，“ａｌｌｏｃａｔｉｏｎ”）
ｅｌｓｅ
Ａ＝ＦｉｎｄＭｉｎｉｍａｌｌｙＯｃｃｕｐｉｅｄＢｌｏｃｋ（Ｓ）／＊再配置されるブロックを見つける＊／
Ｒｅｌｏｃａｔｅ（Ｓ，Ａ）／＊ブロックＡからのサブブロックを再配置する＊／
アドレスＡを有するブロックを割り振る
ＵｐｄａｔｅＨｅａｐＭａｎａｇｅｒ（Ｓ，Ａ，“ａｌｌｏｃａｔｉｏｎ”）
３．ＦｉｎｄＭｉｎｉｍａｌｌｙＯｃｃｕｐｉｅｄＢｌｏｃｋ（Ｓ）
ｉ＝２Ｈ／Ｓ−１  ｔｏ  Ｈ／ＳについてｈｅａｐＭａｎａｇｅｒ［ｉ］が最小になるｉを見つける
ｒｅｔｕｒｎ  アドレスＡ＝ｉ＜＜ｌｏｇ２Ｓ
４．Ｒｅｌｏｃａｔｅ（Ｓ，Ａ）
ｓｕｂＢｌｏｃｋｓ＝ＦｉｎｄＳｕｂＢｌｏｃｋｓ（Ｓ，Ａ）；
ｆｏｒ  ｅａｃｈ  ＳＢ∈ｓｕｂＢｌｏｃｋｓ
Ｄｅａｌｌｏｃａｔｅ（ＳＢ），∀ＳＢ∈ｓｕｂＢｌｏｃｋｓ
５．Ｄｅａｌｌｏｃａｔｅ（ｅｘｔＩｄ）
ブロックｅｘｔＩｄおよびサイズＳのアドレスＡを見つける；
そのブロックを解放する；
ＵｐｄａｔｅＨｅａｐＭａｎａｇｅｒ（Ｓ，Ａ，“ｄｅａｌｌｏｃａｔｉｏｎ”）；
６．ＵｐｄａｔｅＨｅａｐＭａｎａｇｅｒ（Ｓ，Ａ，ｔｙｐｅ）
ｉｎｔ  ｍａｘＬｅｖｅｌ＝ｌｏｇ２Ｈ；
ｉｎｔ  ｌｅｖｅｌ＝ｌｏｇ２Ｓ；
ｉｆ  ｔｙｐｅ＝“ａｌｌｏｃａｔｉｏｎ”
ｉｎｔ  ａｄｄｒ＝Ａ＞＞ｌｅｖｅｌ；
ｉｆ  Ｓ＞ＭｉｎＢｌｏｃｋＳｉｚｅ
ｈｅａｐＭａｎａｇｅｒ［ａｄｄｒ］＝Ｓ／＊ブロックが完全に占有されている＊／
／＊割振りレベルの上のブロック＊／
ａｄｄｒ＝Ａ＞＞ｌｅｖｅｌ；
ｆｏｒ（ｉ＝ｌｅｖｅｌ＋１；ｉ＜＝ｍａｘＬｅｖｅｌ；ｉ＋＋）
ａｄｄｒ＝ａｄｄｒ＞＞１；
ｈｅａｐＭａｎａｇｅｒ［ａｄｄｒ］＝ｈｅａｐＭａｎａｇｅｒ［ａｄｄｒ］＋Ｓ；
ｉｆ  ｔｙｐｅ＝“ｄｅａｌｌｏｃａｔｉｏｎ”
ｉｎｔ  ａｄｄｒ＝Ａ＞＞ｌｅｖｅｌ；
／＊現在のブロック＊／
ｉｆ  Ｓ＞ＭｉｎＢｌｏｃｋＳｉｚｅ
ｈｅａｐＭａｎａｇｅｒ［ａｄｄｒ］＝０
／＊割振り解除レベルの上のブロック＊／
ａｄｄｒ＝Ａ＞＞ｌｅｖｅｌ；
ｆｏｒ（ｉ＝ｌｅｖｅｌ＋１；ｉ＜＝ｍａｘＬｅｖｅｌ；ｉ＋＋）
ａｄｄｒ＝ａｄｄｒ＞＞１；／／上のａｄｄｒから継続する
ｈｅａｐＭａｎａｇｅｒ［ａｄｄｒ］＝ｈｅａｐＭａｎａｇｅｒ［ａｄｄｒ］−Ｓ；
【０１３０】
本発明の趣旨から逸脱しない、さまざまな本発明に対する変更および修正が、当業者に明白であろう。好ましい実施形態は、本発明の実施を説明したものであるが、この説明は、単に例示であることを意図されたものである。複数の代替案も上にある。たとえば、アナログ処理によって例示された動作のすべてが、ディジタル領域でそれと同等の対応物を有する。したがって、適切なマッチングタイプおよび相関タイプの処理を、アナログビットパターンの標準的なディジタル表現に対して行うことができる。これは、調整されたディジタル論理、マイクロプロセッサ、およびディジタル信号プロセッサ、または代替の組合せを使用することによって、連続的な形で達成することもできる。したがって、本発明が、請求項の範囲およびその法的同等物のみによって制限されることが、本発明人の意図である。
【図１】
0005439651.tif 000005
【図２】
0005439651.tif 000006
【図３】
0005439651.tif 000007
【図４】
0005439651.tif 000008
【図５】
0005439651.tif 000009
【図６】
0005439651.tif 000010
【図７】
0005439651.tif 000011
【図８】
0005439651.tif 000012
【図９】
0005439651.tif 000013
【図１０】
0005439651.tif 000014
【図１１】
0005439651.tif 000015
【図１２】
0005439651.tif 000016
【図１３】
0005439651.tif 000017
【図１４】
0005439651.tif 000018
【図１５】
0005439651.tif 000019
【図１６】
0005439651.tif 000020
【図１７】
0005439651.tif 000021
【図１８】
0005439651.tif 000022
【図１９】
0005439651.tif 000023
【図２０】
0005439651.tif 000024
【図２１】
0005439651.tif 000025
【図２２】
0005439651.tif 000026
【図２３】
0005439651.tif 000027
【図２４】
0005439651.tif 000028
【図２５】
0005439651.tif 000029
【図２６】
0005439651.tif 000030
【図２７】
0005439651.tif 000031
【図２８】
0005439651.tif 000032
【図２９】
0005439651.tif 000033
【図３０】
0005439651.tif 000034
【図３１】
0005439651.tif 000035
【図３２】
0005439651.tif 000036
【図３３】
0005439651.tif 000037
【図３４】
0005439651.tif 000038
【図３５】
0005439651.tif 000039
【図３６】
0005439651.tif 000040
【図３７】
0005439651.tif 000041
【図３８】
0005439651.tif 000042
【図３９ａ】
0005439651.tif 000043
【図３９ｂ】
0005439651.tif 000044
【図４０】
0005439651.tif 000045
【図４１】
0005439651.tif 000046
【図４２】
0005439651.tif 000047
【図４３】
0005439651.tif 000048
【図４４ａ】
0005439651.tif 000049
【図４４ｂ】
0005439651.tif 000050
【図４５】
0005439651.tif 000051
【図４６】
0005439651.tif 000052
【図４７ａ】
0005439651.tif 000053
【図４７ｂ】
0005439651.tif 000054
【図４８】
0005439651.tif 000055
【図４９】
0005439651.tif 000056
【図５０】
0005439651.tif 000057