"大容量記憶媒体と通信するプログラマブル論理デバイスであって、前記デバイスが、連続的データストリームでの前記大容量記憶媒体との間のデータパッシングを操作するように構成される、デバイス。前記データ操作が、少なくとも検索動作を含む、請求項1に記載のデバイス。前記データストリームが、該データストリームに暗号化されたデータを含み、プログラマブル論理デバイスが、前記データをクリプトサーチするように構成される、請求項2に記載のデバイス。プログラマブル論理デバイスが、該プログラマブル論理デバイスのクリプトサーチ動作の一部として、パターン一致が、大容量記憶媒体から取り出されることが望まれるデータを表す検索キーと、暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかの判定を実行するように構成される、請求項3に記載のデバイス。プログラマブル論理デバイスが、1大容量記憶媒体から暗号化され圧縮されたデータのストリームを受け取り、2暗号解読された圧縮されたデータストリームを作成するために受け取ったストリームを暗号解読し、3伸張され暗号解読されたデータストリームを作成するために暗号解読された圧縮されたデータストリームを伸張し、4伸張され暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項2に記載のデバイス。検索動作は、パターン一致が、大容量記憶媒体から取り出すことが望まれるデータを表す検索キーと、伸張され暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定することを含む、請求項5に記載のデバイス。プログラマブル論理デバイスが、FPGAである、請求項2に記載のデバイス。前記データ操作が、少なくとも圧縮動作を含む、請求項1に記載のデバイス。前記データ操作が、少なくとも伸張動作を含む、請求項1に記載のデバイス。前記データ操作が、少なくともデータ削減動作を含む、請求項1に記載のデバイス。前記データ操作が、少なくともデータ分類動作を含む、請求項1に記載のデバイス。プログラマブル論理デバイスが、システムバスを用いて大容量記憶媒体とインターフェースし、コンピュータシステムが、プログラマブル論理デバイスにデータ処理要求を通信するためにシステムバスにアクセスするように構成される、請求項1に記載のデバイス。プログラマブル論理デバイスが、コンピュータネットワークを介して大容量記憶媒体と通信する、請求項1に記載のデバイス。コンピュータネットワークが、インターネットである、請求項13に記載のデバイス。プログラマブル論理デバイスが、システムバスを用いて大容量記憶媒体とインターフェースし、コンピュータシステムが、プログラマブル論理デバイスにデータ処理要求を通信するためにコンピュータネットワークを介してシステムバスにアクセスするように構成され、デバイスが、コンピュータネットワークを介して大容量記憶媒体と通信する、請求項1に記載のデバイス。大容量記憶媒体が、データが保管される複数のディスクおよびディスクからデータを読み取る複数のヘッドを有するディスクシステムを含み、プログラマブル論理デバイスが、1複数の連続データストリームを大容量記憶媒体から受け取り、各データストリームは異なるヘッドから受け取られ、2並列に、受け取った連続データストリームに対する複数の処理動作を実行するように構成される、請求項1に記載のデバイス。連続ストリームで大容量記憶媒体との間で移動するデータを操作する方法であって、大容量記憶媒体との間で移動する連続データストリームを受け取るステップと、再構成可能ハードウェア論理を用いて前記連続ストリーム内のデータを操作するステップとを含む、方法。前記再構成可能ハードウェア論理が、FPGAに実装される、請求項17に記載の方法。前記操作するステップが、暗号解読されたデータストリームを作成するために暗号化されたデータストリームを暗号解読するステップと、暗号解読されたデータストリーム内の検索キーの存在を、暗号解読されたデータストリームから検索するステップとを含む、請求項18に記載の方法。検索キーが、取り出されることが要求されるデータを表し、検索するステップが、暗号解読されたデータストリームを表すデータ信号と検索キーとをフレームレスに比較し、かつ相関させることによって、暗号解読されたデータストリームを検索することを含む、請求項19に記載の方法。前記操作するステップが、暗号解読された圧縮されたデータストリームを作成するために、暗号化され圧縮されたデータストリームを暗号解読することと、伸張され暗号解読されたデータストリームを作成するために、圧縮されたデータストリームを伸張することと、伸張され暗号解読されたデータストリーム内の検索キーの存在を、伸張され暗号解読されたデータストリームから検索することとを含む、請求項18に記載の方法。検索キーが、取り出されることが要求されるデータを表し、検索するステップが、伸張され暗号解読されたデータストリームを表すデータ信号と検索キーとをフレームレスに比較し、かつ相関させることによって、伸張され暗号解読されたデータストリームを検索することを含む、請求項21に記載の方法。前記操作するステップが、検索動作を実行することを含む、請求項18に記載の方法。前記操作するステップが、圧縮動作を実行することを含む、請求項18に記載の方法。前記操作するステップが、伸張動作を実行することを含む、請求項18に記載の方法。前記操作するステップが、データ削減動作を実行することを含む、請求項18に記載の方法。前記操作するステップが、データ分類動作を実行することを含む、請求項18に記載の方法。再構成可能論理デバイスにロードされるテンプレートは、操作するステップを規定し、前記方法は、さらに、それぞれが異なる操作動作を規定する複数のテンプレートを保管することと、FPGAにロードするために、保管されたテンプレートを選択することとを含む、請求項18に記載の方法。大容量記憶媒体と通信するプログラマブル論理デバイスについて、プログラマブル論理デバイスをプログラムするテンプレートを選択する方法であって、前記プログラマブル論理デバイスが、該プログラマブル論理デバイスにロードされたテンプレートに従って、大容量記憶媒体との間で移動するデータを処理するように構成され、テンプレートは、1つまたは複数の処理機能を規定し、各機能は、それによって実行されるデータ処理に関する関連する性能特性を有し、テンプレートによって規定される各機能に関する判定された性能特性に少なくとも部分的に基づいて、プログラマブル論理デバイスにロードするために、複数の保管されたテンプレートから保管されたテンプレートを選択するステップを含む、方法。少なくとも1つの性能特性が、データスループットを含む、請求項29に記載の方法。少なくとも1つの性能特性が、機能によって消費されるプログラマブル論理デバイスリソースの量を含む、請求項29に記載の方法。選択するステップが、機能に関する少なくとも2つの性能特性に少なくとも部分的に基づいて保管されたプレートを選択することを含み、少なくとも2つの性能特性が、データスループットと、各機能によって消費されるプログラマブル論理デバイスリソースの量とを含む、請求項29に記載の方法。機能が、検索動作、データ削減動作、データ分類動作、暗号化動作、暗号解読動作、圧縮動作、および伸張動作からなる群から選択された少なくとも1つを含む、請求項32に記載の方法。機能が、暗号化および暗号解読からなる群から選択された少なくとも1つを含む、請求項33に記載の方法。プログラマブル論理デバイスが、FPGAであり、選択するステップが、各テンプレートによって規定される機能に関する判定されたデータスループット値およびリソース値に基づいて、所定のアルゴリズムに従ってテンプレートを選択することを含む、請求項32に記載の方法。選択するステップが、さらに、選択されたテンプレートの機能が、FPGAで使用可能なリソースの量を超えるFPGAのリソースを要求することができないという制約の下で、データスループットを最大にする保管されたテンプレートを選択することを含む、請求項35に記載の方法。選択するステップが、さらに、選択されたテンプレートの機能が、事前に決定された閾値未満の判定されたデータスループット値を有することができないという制約の下で、リソースを最小にする保管されたテンプレートを選択することを含む、請求項34に記載の方法。選択するステップが、プログラマブル論理デバイスが、大容量記憶媒体に保管されたデータを受け取り、かつ処理する要求を受け取る時に、動的に実行される、請求項29に記載の方法。データ処理システムであって、データ記憶媒体と、データ記憶媒体と通信する処理デバイスと、システムバスを有するコンピュータシステムとを含み、該コンピュータシステムが、システムバスを介して処理デバイスと通信するように構成され、処理デバイスが、処理パイプラインとしてプログラマブル論理デバイスで実装される複数のステージを介して、データがデータ記憶媒体とコンピュータシステムとの間で渡される時に、データを処理するように構成されたプログラマブル論理デバイスを含み、各処理ステージは、異なる処理動作専用である、データ処理システム。処理動作が、検索動作、データ削減動作、データ分類動作、暗号化動作、暗号解読動作、圧縮動作、および伸張動作からなる群から選択された少なくとも2つを含む、請求項39に記載のシステム。少なくとも2つの処理動作のうちの1つが、検索動作である、請求項40に記載のシステム。データ記憶媒体が、暗号化されたフォーマットでデータ記憶媒体に保管されたデータを含み、プログラマブル論理デバイスが、さらに、1データ記憶媒体から暗号化されたデータの連続ストリームを受け取り、2暗号解読されたデータストリームを作成するために受け取った連続ストリームを暗号解読し、3暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項41に記載のシステム。検索動作は、パターン一致が、データ記憶媒体から取り出されることが望まれるデータを表す検索キーと、暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項42に記載のシステム。データ記憶媒体が、暗号化され圧縮されたフォーマットでデータ記憶媒体に保管されたデータを含み、プログラマブル論理デバイスは、さらに、1データ記憶媒体から暗号化され圧縮されたデータのストリームを受け取り、2暗号解読された圧縮されたデータストリームを作成するために受け取ったストリームを暗号解読し、3伸張され暗号解読されたデータストリームを作成するために暗号解読された圧縮されたデータストリームを伸張し、4伸張され暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項41に記載のシステム。検索動作は、パターン一致が、データ憶媒体から取り出すことが望まれるデータを表す検索キーと、伸張され暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項44に記載のシステム。プログラマブル論理デバイスが、FPGAである、請求項41に記載のシステム。少なくとも2つの処理動作のうちの1つが、圧縮動作である、請求項40に記載のシステム。少なくとも2つの処理動作のうちの1つが、伸張動作である請求項40に記載のシステム。少なくとも2つの処理動作のうちの1つが、データ削減動作である、請求項40に記載のシステム。少なくとも2つの処理動作のうちの1つが、データ分類動作である、請求項40に記載のシステム。データ記憶媒体が、データを磁気的に保管するディスクドライブシステムを含み、該ディスクドライブシステムが、回転可能ディスクを含み、該回転可能ディスク上で、データが複数の不連続円弧に磁気的に保管され、各円弧が、実質的に一定の曲率を有し、複数の不連続円弧が、中心原点の周りの全般的に螺旋状のパターンをともに画定し、前記ディスクドライブシステムがさらに、データが回転可能ディスクから読み取られる時に、回転可能ディスクを回転させるデバイスと、回転可能ディスクが回転する時に、回転可能ディスクに保管されたデータを読み取るために位置決めされる読取ヘッドと、回転可能ディスクが回転する時に、読取ヘッドが不連続円弧の全般的に螺旋状のパターンに従うように、回転可能ディスク上で読取ヘッドを位置決めするように構成された位置決めシステムとを含む、請求項39に記載のシステム。複数のデータファイルが、データ記憶媒体に保管され、各データファイルが、セグメントのシーケンスとして保管され、各セグメントが、2のべきのサイズを有する、請求項39に記載のシステム。ハードディスクドライブとプロセッサとの間の接続用のハードディスクドライブアクセラレータであって、前記アクセラレータが、ハードディスクドライブから読み取られるデータが、プロセッサに渡される前に、再構成可能ハードウェア論理を通ってストリーミングするように構成された再構成可能ハードウェア論理を含み、再構成可能ハードウェア論理が、複数の処理ステージを含むパイプラインを介してデータストリームを処理するように構成され、各処理ステージが、処理ステージが受け取るデータに対してデータ処理動作を実行するように構成される、アクセラレータ。パイプラインのステージによって実行される処理動作が、検索動作、データ削減動作、データ分類動作、暗号化動作、暗号解読動作、圧縮動作、および伸張動作からなる群から選択されたいずれかである、請求項53に記載のアクセラレータ。再構成可能ハードウェア論理が、プログラマブル論理デバイスに実装され、ハードディスクドライブが、暗号化されたフォーマットでハードディスクドライブに保管されたデータを含み、プログラマブル論理デバイスが、1ハードディスクドライブから暗号化されたデータの連続ストリームを受け取り、2暗号解読されたデータストリームを作成するために受け取った連続ストリームを暗号解読し、3暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項54に記載のアクセラレータ。検索動作は、パターン一致が、ハードディスクドライブから取り出されることが望まれるデータを表す検索キーと、暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項55に記載のアクセラレータ。再構成可能ハードウェア論理が、プログラマブル論理デバイスに実装され、ハードディスクドライブが、暗号化され圧縮されたフォーマットでハードディスクドライブに保管されたデータを含み、プログラマブル論理デバイスが、1ハードディスクドライブから暗号化され圧縮されたデータのストリームを受け取り、2暗号解読された圧縮されたデータストリームを作成するために受け取ったストリームを暗号解読し、3伸張され暗号解読されたデータストリームを作成するために暗号解読された圧縮されたデータストリームを伸張し、4伸張され暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項54に記載のアクセラレータ。検索動作は、パターン一致が、大容量記憶媒体から取り出すことが望まれるデータを表す検索キーと、伸張され暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項57に記載のアクセラレータ。再構成可能ハードウェア論理が、FPGAに実装される、請求項54に記載のアクセラレータ。少なくとも1つのステージの処理動作が、検索動作である、請求項54に記載のアクセラレータ。少なくとも1つのステージの処理動作が、圧縮動作である、請求項54に記載のアクセラレータ。少なくとも1つのステージの処理動作が、伸張動作である、請求項54に記載のアクセラレータ。少なくとも1つのステージの処理動作が、データ削減動作である、請求項54に記載のアクセラレータ。少なくとも1つのステージの処理動作が、データ分類動作である、請求項54に記載のアクセラレータ。データを圧縮するデバイスであって、該データを圧縮するデバイスが、データ記憶媒体と通信するプログラマブル論理デバイスを含み、該プログラマブル論理デバイスが、1データソースからデータを受け取り、2圧縮されたデータを作成するために、受け取ったデータに対する圧縮動作を実行し、3圧縮されたデータをデータ記憶媒体に保管するように構成される、データを圧縮するデバイス。圧縮動作が、ロスレス圧縮動作である、請求項65に記載のデバイス。ロスレス圧縮動作が、LZ圧縮である、請求項66に記載のデバイス。プログラマブル論理デバイスが、FPGAであり、データソースが、バスを介してFPGAと通信するコンピュータシステムである、請求項65に記載のデバイス。データを伸張するデバイスであって、該データを伸張するデバイスが、データ記憶媒体と通信するプログラマブル論理デバイスを含む、データ記憶媒体が、圧縮されたフォーマットでデータ記憶媒体に保管されたデータを含み、プログラマブル論理デバイスが、1データ記憶媒体から圧縮されたデータの連続ストリームを受け取り、2伸張されたデータを作成するために、圧縮されたデータの受け取られた連続ストリームに対して伸張動作を実行するように構成される、データを伸張するデバイス。伸張動作が、ロスレス伸張動作である、請求項69に記載のデバイス。ロスレス伸張動作が、LZ伸張である、請求項70に記載のデバイス。プログラマブル論理デバイスが、FPGAであり、FPGAが、さらに、伸張されたデータに対する検索動作を実行するように構成される、請求項69に記載のデバイス。データ記憶媒体であって、該データ記憶媒体に、磁気読取ヘッドによる後続の取出のためにデータが磁気的に保管され、前記データ記憶媒体が、回転可能な磁気媒体と、データを保管するために磁気媒体に配置された複数の不連続円弧とを含む、データ記憶媒体。複数の不連続円弧が、中心原点の周りの磁気媒体上の全般的に螺旋状のパターンをともに画定する、請求項73に記載の媒体。各不連続円弧が、実質的に一定の曲率を有する、請求項74に記載の媒体。磁気媒体が、ディジタルデータが磁気的に保管されるディスクである、請求項75に記載の媒体。複数の不連続円弧が、中心原点から最短の半径距離に位置する不連続円弧から始めて、全般的に螺旋状のパターンに沿った各連続する不連続円弧が、全般的に螺旋状のパターンに沿った前の不連続円弧の半径距離より大きい中心原点からの半径距離に位置するように、全般的に螺旋状のパターンをともに画定し、各不連続円弧が、中心原点から2π/Wの角度に及び、Wは、回転可能磁気媒体の単一の回転中に読取ヘッドが出会う不連続円弧の総数を表す、請求項76に記載の媒体。均一の距離が、全般的に螺旋状のパターンに沿った各連続する不連続円弧を径方向に分離する、請求項76に記載の媒体。ディスクが、ハードディスクドライブ内に含まれるハードディスクである、請求項76に記載の媒体。各不連続円弧が、記録されたサーボパターンを含む、請求項76に記載の媒体。複数の不連続環状円弧にデータが保管される、回転可能プレーナ磁気記憶媒体からデータを読み取る方法であって、複数の不連続環状円弧が、中心原点の周りの全般的に螺旋状のパターンをともに画定し、磁気記憶媒体を回転させるステップと、磁気記憶媒体が回転する時に、磁気記憶媒体上の全般的に螺旋状のパターンに従うように読取ヘッドを位置決めするステップとを含む方法。各不連続環状円弧が、サーボパターンを含み、位置決めするステップが、不連続環状円弧のサーボパターンの感知に少なくとも部分的に基づいて、読取ヘッドを位置決めすることを含む、請求項81に記載の方法。データを磁気的に保管するディスクドライブシステムであって、データが複数の不連続円弧に磁気的に保管される回転可能ディスクを含み、各円弧が、実質的に一定の曲率を有し、前記ディスクドライブシステムがさらに、データが読み取られる時に回転可能ディスクを回転させるデバイスと、回転可能ディスクが回転する時に、回転可能ディスクに保管されたデータを読み取るために位置決めされる読取ヘッドと、回転可能ディスクが回転する時に、読取ヘッドが不連続円弧の全般的に螺旋状のパターンに従うように、回転可能ディスク上で読取ヘッドを位置決めするように構成された位置決めシステムとを含む、ディスクドライブシステム。複数の不連続円弧が、中心原点の周りの全般的に螺旋状のパターンをともに画定する、請求項83に記載のシステム。複数の不連続円弧が、中心原点から最短の半径距離に位置する不連続円弧から始めて、全般的に螺旋状のパターンに沿った各連続する不連続円弧が、全般的に螺旋状のパターンに沿った前の不連続円弧の半径距離より大きい中心原点からの半径距離に位置するように、全般的に螺旋状のパターンをともに画定し、各不連続円弧が、中心原点から2π/Wの角度に及び、Wは、回転可能磁気媒体の単一の回転中に読取ヘッドが出会う不連続円弧の総数を表す、請求項84に記載のシステム。記憶媒体にデータファイルを保管する方法であって、データファイルが、その中のバイトの総数を含むファイルサイズを有し、前記方法が、ファイルサイズが端数のない2のべきである場合に、ファイルサイズと等しい、記憶媒体上の記憶空間のブロックを要求するステップと、ファイルサイズが端数のない2のべきではない場合に、記憶媒体上の記憶空間の複数のブロックを要求するステップであって、各ブロックは、2のべきと等しいサイズを有する、要求するステップと、要求は受け入れられる場合に、要求に従って、1つまたは複数のデータファイルセグメントとして記憶媒体にデータファイルを保管するステップとを含む方法。ファイルサイズが、2進数でF=Fk...F2F1として表すことができ、ファイルサイズは端数のない2のべきではない場合に、要求するステップは、F内の1と等しいビットの総数と等しい総数n個のブロックB1、...、Bnを要求することを含み、各ブロックBiが、F内の1と等しい異なるビットFiに対応し、2iのサイズを有する、請求項86に記載の方法。要求は受け入れられない場合に、記憶媒体に対する部分的デフラグメンテーションを実行するステップと、実行するステップに応答して、記憶媒体上で十分な連続ブロックをクリアし、実行するステップによってクリアされた記憶媒体のブロックにデータファイルを保管するステップとをさらに含む、請求項86に記載の方法。実行するステップが、要求が受け入れられない場合に、記憶媒体に対するヒープマネージャ部分デフラグメンテーションアルゴリズムを実行することを含む、請求項88に記載の方法。記憶媒体が、ディスクである、請求項88に記載の方法。記憶媒体が、コンピュータメモリである、請求項88に記載の方法。記憶媒体にデータファイルを保管する方法であって、データファイルが、その中のバイトの総数を含むファイルサイズを有し、前記方法が、データファイルまたはデータファイルのセグメントが、保管される記憶空間のブロックについて最小サイズ2mを維持するステップと、ファイルサイズが、端数のない2のべきであり、かつ2m以上である場合に、ファイルサイズと等しい、記憶媒体上の記憶空間のブロックを要求するステップと、ファイルサイズが2m未満の場合に、2mと等しい、記憶媒体上の記憶空間のブロックを要求するステップと、ファイルサイズが、端数のない2のべきではなく、かつ2mを超える場合に、記憶媒体上の記憶空間の複数のブロックを要求するステップであって、各ブロックが、2のべきと等しく2m以上であるサイズを有する、要求するステップと、要求が受け入れられた場合に、要求に従って記憶媒体にデータファイルを保管するステップとを含む、方法。ファイルサイズが、2進数でF=Fk...F2F1として表すことができ、ファイルサイズが端数のない2のべきではない場合に、要求するステップが、Fm...F1の各ビットFiが0と等しい場合に、F内の1と等しいビットの総数と等しい総数n個のブロックB1、...、Bnを選択することであって、各ブロックBiが、F内で1と等しいビットFiに対応し、2iのサイズを有する、選択することと、Fm-1...F1のいずれかのビットFiが1と等しい場合に、1Fを、Fより大きく、Rm-1...R1の各ビットRiが0と等しい最小値Rに丸め、2R内の1と等しいビットの総数と等しい総数n個のブロックB1、...、Bnを選択することであって、各ブロックBiが、R内で1と等しいビットRiに対応し、2iのサイズを有する、選択することとを含む、請求項92に記載の方法。要求が受け入れられない場合に、記憶媒体に対する部分的デフラグメンテーションを実行することと、実行するステップに応答して、記憶媒体上で十分な連続ブロックをクリアし、実行するステップによってクリアされた記憶媒体のブロックにデータファイルを保管することとをさらに含む、請求項93に記載の方法。実行するステップが、要求が受け入れられない場合に、記憶媒体に対するヒープマネージャ部分デフラグメンテーションアルゴリズムを実行することを含む、請求項94に記載の方法。記憶媒体が、ディスクである、請求項95に記載の方法。記憶媒体が、コンピュータメモリである、請求項95に記載の方法。したがって、従来技術の上記および他の問題を克服する、改良された情報検索取出のシステムおよび方法の必要がある。親出願である米国特許出願第10/153151号に記載されているように、従来技術の上記および他の問題を解決するために、本発明人は、複数の実施形態で、これらの従来技術の制限に対する洗練された単純な解決方法を提供すると同時に、大容量記憶メモリに保管されたデータに関するアクセス時間を劇的に減らす、フィールドプログラマブルゲートアレイFPGAを使用する連想記憶の方法および装置の構成および開発に成功した。本明細書に記載されているように、米国特許出願第10/153151号の発明は、それぞれが独自の利点を有する複数の実施形態を有する。該米国特許出願第10/153155号の親出願である米国出願特許第09/545472号、現在の米国特許第6711558号は、本発明のこの部分に使用可能なさまざまな種類のデバイス間の選択に関して特定することなく、プログラマブルロジックおよびプログラマブル回路全般の使用を、開示しかつ主張する。米国特許出願第10/153151号では、本発明人は、より具体的に、最良の態様として、さまざまな理由から回路の一部としてのFPGAの使用をより具体的に開示した。とりわけ重要な理由が、速度である。さらに、速度が関わる動作の2つの異なる態様がある。第1の態様は、再構成の速度である。FPGAを現場で素早くプログラムして、テンプレートを使用する検索方法を最適化することができ、このテンプレートが、前もって準備され、接続するバスを介してFPGAに単に通信されることが、当技術分野で知られている。異なる方法を使用して検索することが望まれた場合に、FPGAを、最小のクロックサイクル数で、別の準備されたテンプレートを用いて素早く好都合に再プログラムし、第2の検索を即座に開始することができる。したがって、再構成可能ロジックとしてのFPGAを用いると、他のタイプの再プログラム可能論理デバイスに対して、ある検索から別の検索へのシフトが、非常に簡単で素早くなる。速度の第2の態様は、プログラムされた後に、検索が必要とする時間の長さである。FPGAは、ハードウェアデバイスなので、検索は、ハードウェア処理速度で行われ、これは、たとえばマイクロプロセッサで経験されるソフトウェア処理速度より数桁速い。したがって、FPGAは、しばしばそうであるように速度が考慮事項である場合に、他のソフトウェア実装より望ましい。テンプレートの使用を考慮すると、米国特許出願第10/153151号に、少なくとも複数の包括的テンプレートを、事前に準備し、絶対検索、近似検索、またはブール代数論理機能を組み込まれた上位のもしくは高度な検索モードのいずれかでのテキスト検索の実行、あるいはグラフィックス検索モードでの使用に利用可能にすることができることが開示されている。これらを、CPUメモリに保管し、コマンドの際に使用可能にするか、これらの検索の1つを示すソフトウェアキューに応答して自動的にロードすることができる。考慮すべきもう1つの要因が、コストであり、FPGAの最近の価格低下によって、FPGAが、特にPC市場を目標とするハードディスクドライブアクセラレータacceleratorの一部として、本願の好ましい実施形態としての実装により適したものになった。さらなるコスト低下が、この実施形態ならびに下で詳細に説明する他の実施形態に関する、FPGAの望ましさを増やす。一般に、米国特許出願第10/153151号の発明は、すべてをハードウェアで、本質的に回線速度で、検索のテンプレートを含め、比較を行うのにFPGAを使用する、大容量記憶媒体に保管されたデータの連続的読取とのデータキーの近似マッチングを介する、データ取出の技術として説明することができる。FPGAを使用することによって、一般に知られている多数の利点および特徴が使用可能にされる。これには、FPGAをパイプラインオリエンテーションpipelineorientationで、並列オリエンテーションparallelorientationで、または複雑な検索アルゴリズムを可能にするデータ経路を相互接続する複雑なウェブオーバーレイを組み込んだアレイに配置する能力が含まれる。最も広義の、多分最も強力な実施形態で、データキーを、アナログ信号とすることができ、このデータキーは、大容量記憶媒体を横切って進む時に、通常の読取/書込デバイスによって生成されるアナログ信号とマッチングされる。言い換えると、従来技術で必要なものとして教示された、大容量記憶媒体に保管されたディジタルデータのアナログ表現を読み取るステップだけではなく、比較の前にその信号をディジタルフォーマットに変換するステップが、除去される。さらに、データが編成されかつ保管された構造またはフォーマットを使用して、データをフレーミングまたは比較するという要件はない。アナログ信号について、指定される必要があるものは、読取信号の対応する連続して変化する選択された時間期間との比較に使用される、信号の経過時間だけである。従来技術で知られている多数の標準的な相関技術のいずれかを使用することによって、データキーを、データ信号のスライディングウィンドウと近似的にマッチングして、一致を判定することができる。重要なことに、同一の量のデータを、はるかに素早く走査することができ、検索要求と一致するデータを、はるかに素早く判定することもできる。たとえば、本発明人は、200メガバイトのDNA配列のCPUベース近似検索が、データベースにインデクシングするオフライン処理が既に完了していると仮定して、現在のハイエンドシステムで10秒を要する可能性があることを見出した。同一の10秒間で、本発明人は、本発明を使用する近似マッチについて、10ギガバイトのディスクを検索できることを見出した。これは、性能での50:1の改善を表す。さらに、通常のハードディスクドライブにおいて、4つの表面および対応する読取/書込ヘッドがあり、各ヘッドが本発明を備えるならば、これらのすべてを並列に検索することができる。これらの検索は、並列に進行することができるので、総合的な速度向上または改善は、200:1の利点を表す。さらに、追加のハードディスクドライブに、並列にアクセスすることができ、これらをスケーリングして、従来のシステムに対する速度の利点をさらに増やすことができる。適切な相関またはマッチング技術を選択することと、および適切な閾値を設定することによって、検索を、所望の信号と正確に一致するように行うことができ、あるいは、より重要で多分より強力なことに、閾値を下げて、近似一致検索をもたらすことができる。これは、一般に、データベースを走査して、データが探されているものの近似でしかない可能性がある場合でも有効である可能性があるヒットを見つけることができるという点で、より強力な検索モードと考えられる。これによって、改ざんされたデータ、不正確に入力されたデータ、一般にあるカテゴリにのみ対応するデータを見つける検索、ならびに多くの応用例で非常に望ましい他の種類のデータ検索が可能になる。たとえば、DNA配列のライブラリを検索し、残基の所望の配列への近似一致を表すヒットを見つけることが望まれる場合がある。これは、所望の配列に近い配列が見つかり、許せる個数の残基不一致の相違だけでは破棄されないことを保証する。検索を望まれる情報のさらに増える量およびタイプを仮定すると、より複雑な検索技術が必要である。これは、分子生物学の領域で特にそうであり、遺伝子またはそれを符号化するタンパクの生物学的機能を推論する最も強力な方法の1つは、タンパクおよびDNA配列データベースに対する配列類似性検索によるものであるGarfield、TheImportanceofSubsequenceComparisoninMolecularBiology、212~217ページ。その開示は、参照によって本明細書に組み込まれている。配列マッチングに関する現在の解決方法は、ソフトウェアまたは再構成可能でないハードウェアでのみ使用可能である。もう1つの応用例では、インターネット検索エンジンによって提供されるインターネット検索が用いられる。そのような検索で、近似マッチングは、検索を失敗させず、または組み合わされた数の特殊化された検索を必要とせずに、綴りの誤った単語、異なる綴りを有する単語、および他の変形に対処することを可能にする。この技術は、検索エンジンが、所与の検索に関するより多数のヒットを提供することを可能にし、検索でより多数の関連するウェブページが見つかり、カタログ化されることを保証する。しかしながら、上で述べたように、この近似マッチングは、それ自体がそれ自体の問題を作るより多数のヒットを作るより大きい網を投げる。本発明の技術のもう1つの可能な応用例は、サイズが膨大であるかアナログ表現として保管されている可能性があるデータベースのアクセスに関するものである。たとえば、我々の社会では、司法手続きを含む多数の裁判所での記録デバイスの実装およびその使用が見られる。最近の歴史で、大統領執務室で行われたテープ録音が、弾劾公聴会で重要性を増した。理解されるように、大統領の任期中に行われるテープ録音は、膨大なデータベースに蓄積される可能性があり、これは、重要である可能性がある特定の単語が話された瞬間を見つけるために、複数の人がそれを聞くことを必要とする可能性がある。本発明の技術を使用すると、データベースが連続的な形で高速で走査される間に、話された単語のアナログ表現をキーとして使用し、一致を探すことができる。したがって、本発明および親発明は、大量のアナログデータベースならびに大量のディジタルデータベースに関する強力な検索ツールを提供する。テキストベース検索は、上で説明したように本発明および親発明によって対処されているが、イメージ、サウンド、および他の表現を含む記憶媒体は、伝統的に、テキストよりも検索が困難であった。本発明および親発明は、そのような内容またはその断片の存在に関する大きいデータベースの検索を可能にする。たとえば、この場合のキーは、探されるイメージを表す画素の行またはクォドラントである。キーの信号の近似マッチングは、キーへの一致または近い一致の識別を可能にすることができる。もう1つのイメージ応用例では、画素または画素のグループの差を検索し、結果として注記することができ、これは、同一の地理的位置のイメージ間の比較が、装置または部隊の移動を示すものとして重要である衛星イメージングに重要である可能性がある。本発明および親発明は、下でより具体的に注記するように、複数の構成のいずれかで実施することができる。しかし、1つの重要な実施形態は、多分、ハードディスクドライブとシステムバスとの間のインターフェースとして、どのPCにもたやすくインストールされるディスクドライブアクセラレータの形である。このディスクドライブアクセラレータは、標準化されたテンプレートの組を備え、CPUがドライブからデータにアクセスする速度を劇的に高めるプラグアンドプレイソリューションを提供する。これは、PCの大きいインストールベースに販売されるアフターマーケットデバイスまたは改装デバイスになる。また、これは、ドライブケースのエンベロープ内または外部ドライブのエンクロージャ内に、パッケージ化されて新しいディスクドライブの一部として提供されるか、内蔵ドライブ用アダプタとしての追加プラグインPCカードとして提供される。さまざまな種類のデータベースに対するさまざまな種類の検索の追加テンプレートを、望み通りに、CDに符号化することによるなど、アクセラレータの購入と共に、またはダウンロード用にインターネットを介してのいずれかで入手可能にすることができる。本発明は、親出願である米国特許出願第09/545472号および米国特許出願第10/153151号に開示された新規の革新的な技術を拡張し、FPGAなどのプログラマブル論理デバイスPLDが、暗号化、暗号解読、圧縮、および伸張などの動作を含むがこれらに制限されない、さまざまな追加の処理動作のどれでも実行する。したがって、本願の技術は、PLDがデータ操作動作を実行するように拡張される。本明細書で使用する用語操作するまたは操作は、データに対して実行される圧縮動作、伸張動作、暗号化動作、および暗号解読動作のいずれかまたはすべてと組み合わされた、データに対する検索動作、削減動作、または分類動作の実行、あるいは、同様にデータに対して実行される検索動作、削減動作、分類動作、暗号化動作、および暗号解読動作のいずれかまたはすべてと組み合わされた、または単独でのデータに対する圧縮動作または伸張動作の実行を指す。これらの操作動作を、本明細書で開示される発明的技術に起因して非常に高速で実行できるだけではなく、これらの動作は、本明細書で開示されるFPGAなどのPLDで実施される時に、コンピュータシステムのソフトウェアで動作している可能性があるウィルスまたはマルウェアmalwareによる、アクセスまたは読取から暗号解読されたおよび/または伸張されたデータを保護することと、保管されたデータの処理に再構成可能ロジックを使用することとによって、データセキュリティも強化する。本発明のより強力な応用例の中に、クリプトサーチcrypto-searchingと呼ばれることができる、暗号化されたデータ内の高速検索の実行がある。クリプトサーチを用いると、暗号化されたデータのストリームが処理されて、まず、データストリームが暗号解読され、次に、暗号解読されたデータ内で検索動作が実行される。データ所有者にとってのデータセキュリティの価値は、過小評価することができず、ますます重要性が高まっており、誰がいつどのデータにアクセスできるかを制御する能力は、データセキュリティの中心に位置する。その多数の独自の応用例の中で、本発明は、誰がデータにアクセスするかを制御する際の柔軟性と、許可されたユーザにそのデータへのアクセスまたは走査機能を介するそのデータの一部への目標を絞られたアクセスを与える際の速度を、データ所有者に与える。さらに、本明細書に記載の圧縮および/または伸張を使用することによって、高速でデータを検索する能力を保ちながら、大容量記憶媒体内でより少ない空間を占める形でデータを保管できるようになる。これらの操作動作は、複数のステージを用いて実施される時に、パイプライン化された形で実施されることが好ましい。具体的に言うと、暗号化/暗号解読または圧縮/伸張に専用の1つまたは複数のステージと、データ検索またはデータ削減に専用の1つまたは複数のステージとの組合せは、データ記憶および取出の知的で、柔軟で、高速で、安全な構成技術を相乗的に作る。さらに、本明細書では、コンピュータハードディスクなどの磁気媒体にデータを保管し、その結果、ディスク記憶システムのシーク時間によって大きい損害を与えられずに、ハードディスクから大量のデータを読み取れる、新規の独自の技術を開示する。本発明のこの特徴によれば、データは、磁気媒体に位置する複数の不連続の円弧として、好ましくは螺旋状のパターンで磁気媒体に保管される。本明細書に記載のように検索処理および/または追加処理にPLDを使用するシステムが、本明細書に記載されているように区分的螺旋の形で保管されたデータを使用する大容量記憶媒体と組み合わせて使用される時に、この組合せは、相乗的に、さらに高い処理速度をもたらす。さらに、データファイルが、2のべきの合計技術を使用して保管される、メモリにデータファイルを保管する新規の技術を本明細書で開示する。この2のべきの合計技術を使用するデータファイル記憶と、本明細書に記載の再構成可能ロジックプラットフォームのデータ処理機能との組合せも、相乗的に、高められた処理速度をもたらす。本発明の主要な利点および特徴を、上で短く説明したが、本発明のより完全な理解は、図面および次下の好ましい実施形態の説明を参照することによって得ることができる。図1からわかるように、本発明は、独立型のコンピュータまたはコンピュータシステムでたやすく実施される。広義の意味で、本発明は、少なくとも1つの磁気大容量記憶媒体26に結合された少なくとも1つの再構成可能論理デバイス21からなり、その再構成可能論理デバイスは、FPGAである。図1からわかるように、再構成可能論理デバイス21自体に、データシフトレジスタおよび多分マイクロプロセッサを含む複数の機能論理要素が含まれ、あるいは、これらを別々のチップに置くことができ、あるいは、個々の論理要素を、本明細書の他の図の一部に示されているように、パイプラインオリエンテーション指向または並列オリエンテーションで構成することができる。どの場合でも、再構成可能ロジックは、その形態および機能を、製造後に現場で大きく変更すなわち再構成することができる、すべての論理技術を指す。再構成可能論理デバイスの例に、制限なしにプログラマブル論理デバイスPLDが含まれる。PLDは、プログラム可能であるさまざまなチップに関する包括的な用語である。一般に、PLDには3つの物理構造がある。第1は、アルミニウムトレースまたは絶縁体を電気的に溶かすことによって、信号線を分離するか融合する永久ヒューズpermanentfuseタイプである。これは、最初のタイプのPLDであり、プログラマブルアレイロジックまたはPALとして知られている。第2のタイプのPLDは、EEPROMまたはフラッシュメモリを使用し、それに関連するメモリセルの内容に応じてトランジスタを開閉させる。第3のタイプのPLDは、RAMベース動的で揮発性になるであり、その内容は、そのPLDがスタートアップするたびにロードされる。FPGAは、任意の形で相互接続できる論理ユニットのアレイを含む集積回路ICである。これらの論理ユニットを、1ベンダXilinx社は、CLBまたは構成可能論理ブロックと呼ぶ。各論理ユニットの特定の機能および論理ユニット間の相互接続の両方を、ICの製造後に現場でプログラムすることができる。FPGAは、最も一般的なPLDチップの1つである。FPGAは、3つの構造のすべてで入手可能である。再構成可能論理デバイス21について図1でラベルを付けられた箱は、再構成可能論理デバイス20によって実行されるタスクを、再構成可能ハードウェア論理で実施できるだけではなく、データシフトレジスタ24および/または制御マイクロプロセッサ22のタスクも、任意選択として、再構成可能論理デバイス21の再構成可能ハードウェア論理で実施できることを伝えることを意味する。本発明の好ましい実施形態で、再構成可能論理デバイス21は、Xilinx社のFPGA技術を使用して構成され、その構成は、Mentor社の合成ツール、またはSynplicity社の合成ツールとXilinx社の配置配線place-and-routeツールを使用して開発され、これらのツールのすべてが、当業者に知られているように、現在は市販されている。再構成可能論理デバイス21は、システムバスまたは入出力バス34とインターフェースし、一構成では、存在し得るすべてのディスクキャッシュ30ともインターフェースする。再構成可能論理デバイス21は、CPU32またはネットワークインターフェース36から、検索要求または検索照会を受け取りかつ処理する。さらに、このデバイスは、ディスクキャッシュ30および/またはCPU32のいずれかまたは両方にバス34によって、照会の結果を渡すのを助けることができる。大容量記憶媒体26は、以下では目標データと呼称する大量の情報を保管する媒体を提供する。用語大容量記憶媒体は、大量のデータを保管するのに使用され、通常はコンピュータまたはコンピュータネットワークでの使用のために構成される、すべてのデバイスを意味するものと理解されなければならない。例には、ハードディスクドライブ、光学記憶媒体、または単一のディスク表面などのサブユニットが制限なしに含まれ、これらのシステムは、回転式、線形、直列、並列、またはそのそれぞれのさまざまな組合せとすることができる。たとえば、ハードディスクドライブユニットのラックを、並列に接続することができ、この並列出力を、変換器レベルで1つまたは複数の再構成可能論理デバイス21に供給することができる。同様に、磁気テープドライブのバンクを使用することができ、その直列出力それぞれを、1つまたは複数の再構成可能論理デバイス21に並列に供給することができる。媒体に保管されるデータは、アナログ形式またはディジタル形式とすることができる。たとえば、データを、音声録音とすることができる。したがって、本発明は、スケーラブルであり、並列大容量記憶媒体の数を増やすことによって、保管されるデータの量の増加を可能にすると同時に、並列再構成可能論理デバイスの数を増やすか、再構成可能論理デバイスを複製することによって、性能が維持される。従来技術では、図1の上側に示されているように、通常、ディスクコントローラ28および/またはディスクキャッシュ30を、そのシステムバスまたは入出力バス34を介する、CPU32によるアクセスに伝統的な意味で使用することができる。再構成可能論理デバイス21は、システムバス34を介して大容量記憶媒体26からCPU32の作業メモリ33に、保管およびアクセスのためにメモリの大きいブロックを移動することなく、大容量記憶媒体26内の目標データに、1つまたは複数のデータシフトレジスタ24を介してアクセスし、これを使用のためにシステムバス34に提示する。言い換えると、下で詳細に説明するように、CPU32は、検索要求または検索照会を再構成可能論理デバイス21に送ることができ、この再構成可能論理デバイス21は、大容量記憶媒体26内の目標データに非同期にアクセスし、かつこれをソートし、従来技術で知られているようにディスクキャッシュ30内で、またはシステムバス34に直接にのいずれかで、CPU32によって要求されるさらなる処理またはその作業メモリ33の使用なしで、使用のために提示する。したがって、CPU32は、検索およびマッチングのアクティビティが、本発明によって実行されている間に、他のタスクを自由に実行することができる。代替案では、制御マイクロプロセッサが、検索照会およびテンプレートまたはプログラミング命令をFPGA21に供給し、その後、検索を実行し、CPU32によるアクセスおよび使用のためにシステムバス34でデータを提示することができる。上で説明したように、本発明を使用して、目標データに対してさまざまな異なるタイプのマッチング動作またはデータ削減動作を実行することができる。これらの動作それぞれを、下で詳細に説明する。しかし、すべての動作について、目標データが、十分なフォーマッティング情報を付加されて磁気大容量記憶媒体26に書き込まれ、その結果、目標データの論理構造を抽出できるようになっていると仮定する。正確ストリングマッチングおよび近似ストリングマッチングを、図2~図5を参照して説明する。しかし、本発明が、単一のストリングマッチに制限されず、複合照会マッチングたとえば、その間にある論理関係を有する複数のテキストストリングを用いる照会、またはブール代数論理を使用する照会に同等に適することを理解されたい。図2の点Aに示されているように、再構成可能論理デバイス21を用いてアナログ領域で正確一致を実行し、マッチングが、アナログ比較器および相関技術を使用して行われる時に、正確一致は、データキーと、大容量記憶媒体26上のアナログ目標データのマッチングに関して十分に高い閾値をセットすることに対応する。アナログ領域での近似マッチングは、適当なより低い閾値をセットすることに対応する。近似マッチの成功は、再構成可能論理デバイス21でセットされる相関値によって、または走査された目標データの対応するビットと等しいデータキー内のビット数などの、再構成可能論理デバイス21に保管された複数のマッチング性能メトリックスの1つを使用することによって、判定することができる。具体的に言うと、普通の固定ディスクドライブが、複数の回転するディスクを、各ディスクにアクセスする複数の変換器と共に有する場合がある。これらの変換器それぞれは、通常、増幅器などのアナログ信号回路18に供給する出力を有する。これが、点Aで表されている。図2にさらに示されているように、通常、アナログ回路の出力は、1つのそのような出力を処理する単一のディジタルデコーダ23に選択的に供給される。これが、点Bで表されている。このディジタル出力は、通常、誤り訂正回路ECC25を介して送られ、その出力Cで、バス34またはディスクキャッシュ30に渡される。本発明の目的のために、複数のディジタルデコーダおよびECCを設けることによって、目標データの複数の並列経路を設けることが望ましい場合がある。ディジタル領域での正確マッチングは、点Bまたは点Cで実行することができ、これは、それぞれ、誤り訂正前のディジタル信号および誤り訂正後のディジタル信号に対応する。結果を、FPGAの一部として構成しても構成しなくてもよい制御マイクロプロセッサ22に送って、複合検索照会または複雑な検索照会に関連する論理を実行することができる。最も一般的な場合に、複合検索照会40は、図3に示された変換プロセスを受ける。具体的に言うと、CPU32に常駐するソフトウェアシステム図示せずが、検索照会40を生成する。この照会は、やはりCPU32に置かれたコンパイラ42を通って進み、このコンパイラ42は、検索照会を分析する責任を負う。この分析からの3つの主な結果すなわち、1再構成可能論理デバイス21内の比較レジスタに常駐するデータキーの決定、2制御マイクロプロセッサ22で実施しなければならない組合せ論理の決定、および3再構成可能論理デバイス21に対する合成コマンド46の生成に使用される、標準的なハードウェア記述言語HDLフォーマットでのハードウェア記述44の作成あるいは、可能な場合にライブラリからの取出がある。任意の市販のHDLと、関連するコンパイラおよび合成ツールとを使用することができる。結果の論理機能は、正確一致、不正確一致、またはワイルドカード動作と、andおよびorなどの単純な単語レベルの論理動作に対応するものとすることができる。この合成情報が、制御マイクロプロセッサ22に送られ、制御マイクロプロセッサ22は、再構成可能論理デバイス21またはFPGAをセットアップするように働く。複雑な論理動作の場合に、CまたはCなどの高水準言語48が、コンパイラ50と共に使用されて、制御マイクロプロセッサ22に対する適当な合成コマンドが生成される。図3に示された経路は、広範囲の潜在的な検索照会を扱うことができるが、検索プロセスに導入される待ち時間が長すぎる可能性があるという短所を有する。検索照会が図3に表された変換を通って流れるのに必要な時間が、検索を実行するのに必要な時間と同程度の場合に、検索自体ではなく、コンパイル処理が性能ボトルネックになる可能性がある。この問題には、広範囲のありそうな検索照会について、ほとんどの一般的な事例を扱う事前コンパイルされたハードウェアテンプレートの組を維持することによって対処することができる。これらのテンプレートは、CPU32メモリ内で提供され、かつ維持されるか、CDなどのオフライン記憶媒体を介して入手可能にされるか、大容量記憶媒体26自体に保存されることができる。さらに、そのようなテンプレートを、ネットワークまたはインターネットを介するなど、CPU32に通信することができる。そのようなハードウェアテンプレート29の一実施形態を、図4に示す。具体的に言うと、データシフトレジスタ27に、1つまたは複数のディスク19のヘッド図示せずからの目標データストリーミングが含まれる。比較レジスタに、ユーザがマッチングを望むデータキーが保管される。図示の例では、データキーはBagdadである。細粒度比較fine-grainedcomparison論理デバイス31が、データシフトレジスタ27の要素と比較レジスタ35の要素の間の要素ごとの比較を実行する。細粒度比較論理デバイス31は、大文字小文字を区別するまたはこれを区別しないのいずれかになるように構成することができる。単語レベル比較論理37が、単語レベルの一致が発生したか否かを判定する責任を負う。複合検索照会の場合に、単語レベル一致信号が、その評価のために制御マイクロプロセッサ22に送られる。複合検索照会に対する一致が、その後、さらなる処理のためにCPU32に報告される。近似マッチングを実行するハードウェアテンプレートの一実施形態を、図5に示す。具体的に言うと、データシフトレジスタ27’に、1つまたは複数のディスク19’のヘッド図示せずからの目標データストリーミングが含まれる。比較レジスタ35’に、ユーザがマッチングを望むデータキーが保管される。図示の例では、データキーはやはりBagdadである。細粒度比較論理31’が、データシフトレジスタ27’の要素と比較レジスタ21’の要素の間の要素ごとの比較を実行する。やはり、細粒度比較論理デバイス31’は、大文字小文字を区別するまたはこれを区別しないのいずれかになるように構成することができる。テンプレート29’が、データシフトレジスタ27’内の要素の、細粒度比較論理デバイス21’の個々のセルへの代替ルーティングを提供する。具体的に言うと、細粒度比較論理デバイス31’の各セルは、データシフトレジスタ27’内の複数の位置とマッチングすることができ、比較レジスタ21’は、一般に使用される綴りBaghdadならびに代替のBagdadの両方に、共用ハードウェアでマッチングすることができる。単語レベル比較論理37’が、単語レベルで一致が発生したか否かを判定する責任を負う。複合検索照会の場合に、単語レベル一致信号が、その評価のために制御マイクロプロセッサ22に送られる。複合検索照会に対する一致が、その後、さらなる処理のためにCPU32に報告される。ハードウェアテンプレートの実際の構成は、もちろん、検索照会タイプに伴って変化する。ハードウェアテンプレートで少量の柔軟性たとえば、比較レジスタに保管された目標データ、データシフトレジスタ要素および比較レジスタ要素から細粒度比較論理デバイスのセルへの信号のルーティング、および単語レベル比較論理の幅を提供することによって、そのようなテンプレートが、広範囲の単語マッチングをサポートすることができる。その結果、これによって、図3で表される検索照会変換全体を行わなければならない頻度が減り、これによって、検索の速度が向上する。近似一致検索で識別されるデータ項目に、正確検索から生じる正確ヒットが含まれることに留意されたい。わかりやすくするために、単語一致またはマッチを使用する時に、近似検索または正確検索のいずれかを介して見つかった検索結果またはデータ結果が含まれることを理解されたい。句近似一致または近似だけが使用される時に、これが、上で近似検索として説明した2つの検索あるいは、検索照会または具体的にはデータキーに疎に関係する目標データを収集するの十分に大きい網を有する、それに関する限りではすべての他の種類のファジイ検索のいずれかである可能性があることを理解されたい。もちろん、正確一致は、まさにそのとおりのものであり、高い度合の相関を有する検索照会の正確一致以外の結果を含まない。図1には、本発明をネットワーク38に相互接続するネットワークインターフェース36も示されており、このネットワーク38は、LAN、WAN、インターネットなどとすることができ、このネットワークに、他のコンピュータシステム40を接続することができる。この構成を用いると、他のコンピュータシステム40が、本発明21を介して大容量記憶媒体26に保管されたデータにも便利にアクセスすることができる。より具体的な例を、下で示す。さらに、図1には、要素20~24自体が、一緒にパッケージ化され、ディスクドライブアクセラレータを形成することも示されており、このディスクドライブアクセラレータを、それ自体のディスクドライブを有する既存PCを、本発明の利益に適合させる改装デバイスとして別々に提供することができる。その代わりに、ディスクドライブアクセラレータを、ハードドライブに対するオプションとして提供し、外部ドライブと同一のエンクロージャにパッケージ化するか、内蔵ドライブ用のコネクタインターフェースを有する別々のPC基板として提供することもできる。さらに、その代わりに、ディスクドライブアクセラレータを、消費者、会社、または他のエンドユーザが注文するPCの一部として、PC供給業者がオプションとして提供することができる。もう1つの実施形態は、より大きい磁気大容量記憶媒体の一部として、または高められたデータ処理能力を有利に使用できるアプリケーションまたは既存設備用のアップグレードまたは改装キットとして提供することとすることができる。図6~図8からわかるように、本発明を、さまざまなコンピュータ構成およびネットワーク構成で使用することができる。図6からわかるように、本発明を、本明細書に開示された本発明を有する大容量記憶媒体47にアクセスする、システムバス45に接続されたCPU43を含む独立型コンピュータシステム41の一部として提供することができる。図7からわかるように、本発明に結合された大容量記憶媒体51自体を、ネットワーク52に直接に接続することができ、このネットワーク52を介して、複数の独立のコンピュータまたはCPU54が、大容量記憶媒体51にアクセスすることができる。大容量記憶媒体51自体は、RAIDを含むハードディスクドライブのバンク、ディスクファーム、または他の超並列メモリデバイス構成からなるものとして、膨大な量のデータに対するアクセスおよび近似マッチング機能を、大幅に減らされたアクセス時間で提供することができる。図8からわかるように、本発明に結合された大容量記憶媒体56を、NASDnetworkattachedstoragedeviceとしてネットワーク58に接続することができ、このネットワーク58を介して、複数の独立型コンピュータ60が、これにアクセスすることができる。そのような構成では、例示のみのためにディスク57として表された各大容量記憶媒体が、ネットワークに接続されたすべてのプロセッサからアクセス可能であることが企図されている。そのような構成の1つに、一意のIPアドレスまたは他のネットワークアドレスを、各大容量記憶媒体に割り当てることが含まれる。図1および図6~図8に示された構成によって例示される構成は、本発明が互換であり、非常に有用であるさまざまなコンピュータ構成およびネットワーク構成の例を表すにすぎない。他の構成が、当業者に明白であり、本発明は、本明細書に示された例を介して制限されることを意図されておらず、これらの例は、そうではなく、本発明の多用途性を例示することを意図されたものである。図9からわかるように、正確マッチングまたは近似マッチングで使用される本発明の方法を、その代わりに、アナログデータ領域とディジタルデータ領域のどちらが検索されているかに関して説明する。しかし、この方法の開始から始めて、CPUは、ある機能を実行し、その間に、CPUは、大容量記憶媒体に保管された目標データにアクセスすることを選択することができる。通常、CPUは、検索照会アプリケーション62を実行し、この検索照会アプリケーション62は、DNA検索、インターネット検索、アナログ音声検索、指紋検索、イメージ検索、または、その間に目標データとの正確マッチまたは近似マッチが望まれる他のそのような検索を表すものとすることができる。検索照会に、ディスク制御ユニット28および再構成可能論理デバイス20が大容量記憶媒体26からデータキーを正しく得るために有しなければならない、さまざまなパラメータを指定するディレクティブdirectiveが含まれる。パラメータの例に、記憶装置を走査する開始位置、その後に一致がない場合に走査を停止する最終位置、走査に使用されるデータキー、マッチングの近似性質の指定、および一致が発生した時に返さなければならない情報が含まれるが、これらに制限はされない。返されることのできる情報の種類に、一致が見つかった情報の位置、またはマッチした情報を含むセクタ、レコード、レコードの部分、もしくは他のデータ集合が含まれる。データ集合は、マッチの際に返されるデータを、境界データ指定子の間になるように指定し、マッチしたデータが境界フィールド内に含まれるようにすることができるという点で、動的に指定することもできる。図5の例で示したように、テキストのストリング内で単語bagdadを探すことによって、単語Baghdadの、誤綴りに起因する近似一致を見つけ、囲む文によって画定されたデータフィールドを返すことができる。もう1つの照会パラメータは、返される情報を、システム、入出力バス34、またはディスクキャッシュ30のどれに送らなければならないかを示す。図9に戻って、検索照会は、通常、1つまたは複数のオペレーティングシステムユーティリティの実行をもたらす。高水準ユーティリティコマンドの例として、UNIX登録商標オペレーティングシステムについて、これを、glimpse、find、grep、aproposなどの変更されたバージョンとすることができる。これらの機能は、CPUに、検索、近似検索などのコマンド66を再構成可能論理デバイス21に送らせ、これらのコマンドの関連部分は、たとえば大容量記憶媒体から目標データを正しく読み取るのに後に必要になる大容量記憶媒体位置決めアクティビティ69を開始するために、ディスクコントローラ28にも送られる。この時点で、本発明の特定の実施形態で実施されることが望まれる特定の方法に応じて、アナログまたはディジタルのデータキーを決定する必要がある。このデータキーは、テキスト検索について正確または近似のいずれかとすることができるが、検索されるデータに対応する。アナログデータキーについて、これは、大容量記憶媒体などに事前に保管されるか、専用回路を使用して開発されるか、生成される必要があるかのいずれかとすることができる。アナログデータキーを事前に保管しなければならない場合に、事前に保管されたデータキー送信ステップ68は、マイクロプロセッサ22図1参照によって実行され、このマイクロプロセッサ22は、ステップ70に示されているように、データキーを、ディジタルのサンプリングされたフォーマットで再構成可能論理デバイス20に送る。その代わりに、アナログデータキーを事前に保管しない場合に、これを、複数の機構の1つを使用して開発することができ、これらの機構のうちの2つを図9に示す。1つの機構では、マイクロプロセッサ22が、ステップ72でデータキーを磁気大容量記憶媒体に書き込み、次に、ステップ74で、データキーのアナログ信号表現を生成するためにデータキーを読み取る。もう1つの機構では、ステップ71で、CPUから受け取ったデータキーのディジタルバーションを、適切なディジタル-アナログ回路を使用してアナログ信号表現に変換することができ、このアナログ信号表現が、適切にサンプリングされる。データキーは、次に、ステップ70で、そのディジタルサンプルとして保管される。ディジタルデータキーが使用される場合に、マイクロプロセッサ22が、ステップ76で、再構成可能論理デバイスの比較レジスタに、そのディジタルデータキーを保管することだけが必要である。再構成可能論理デバイスごとに含まれることが望まれる特定の構造に応じて、データキーが、これらの構成要素のいずれかまたはすべてに存在することができ、データキーの適切なディジタルフォーマットを、比較および相関のために再構成可能論理デバイス21に最終的に与えることが、単に好ましいことを理解されたい。次に、大容量記憶媒体26が、79でその開始位置に達した後に、その大容量記憶媒体に保管された目標データが、ステップ78で継続的に読み取られて、目標データを表す継続的ストリーム信号が生成される。アナログデータキーが使用された場合には、このアナログデータキーを、ステップ80で、大容量記憶媒体26からの目標データのアナログ読みと相関させることができる。本発明では、多数の従来技術の比較器および相関回路のどれであっても使用できることが企図されているが、目的について、本発明人は、アナログ信号およびデータキーのディジタルサンプリングが、下で説明するように、そのような比較の実行および相関係数の計算の実行に非常に有用である可能性があることを提案する。大容量記憶媒体26から目標データを読み取ることから生成されるこのアナログ信号は、従来技術のデバイスによって、アナログデータまたはディジタルデータのいずれかの読み取りから便利に生成することができ、ディジタルデータキーを、大容量記憶媒体26に保管されたディジタル目標データとのマッチングに使用する必要がないことに留意されたい。その代わりに、相関ステップ82を、ディジタルデータキーを、大容量記憶媒体26から読み取られたディジタル目標データのストリームとマッチングすることによって実行することができる。データキーが、近似情報を含めることを反映することができ、あるいは、再構成可能論理デバイス21を、これを可能にするためにプログラムできることに留意されたい。したがって、大容量記憶媒体から読み取られた目標データとの相関によって、近似マッチング機能が可能になる。図9を参照すると、判断論理84は、次に、目標データの一部が、データキーに近時一致するか否かに関する知的判断を行う。一致が見つかった場合に、目標データをステップ86で処理し、検索照会によって要求されたキーデータを、ディスクキャッシュ30に送るか、システムバス34に直接に送るか、他の形でバッファリングするか、CPU32、ネットワークインターフェース36、または図1および図6~図8に示された他で使用可能にする。doループに似たものを示す論理ステップ88が、大容量記憶媒体26からの目標データの継続的読み取りに戻るために含まれることが好ましい。しかし、これが、継続的処理であり、目標データが、個別化されたチャンク、フレーム、バイト、またはデータの他の所定部分ではなく、ストリームとして大容量記憶媒体26から処理されることを理解されたい。これは除外されてはいないが、本発明は、大容量記憶媒体26からの目標データの読み取りにためらいがなくなるように、連続的に変化する目標データ読み取り信号に対して、本質的にデータキーをスライドさせることができるようになることが好ましい。読み取りを、マルチビットデータ構造の先頭または末尾に同期化するという要件はなく、目標データが大容量記憶媒体26から読み取られる際に、目標データをオンザフライで継続的に比較する時に、他の中間ステップを実行する必要もない。最終的に、データアクセスは、ステップ90で完了し、この処理が完了する。本発明人は、アナログ領域で本発明を予備的にテストし、生成された予備データに、その実施可能性および有効性を実証させた。具体的に言うと、図10は、読取/書込ヘッドが、10ビットディジタルデータキーを保管された磁気媒体を読み取る時に、読取/書込ヘッドからの測定されたアナログ信号出力のグラフ表現である。このグラフに示されているように、アナログ信号に、当技術分野で知られているように、目標データがハードディスクなどの磁気媒体から読み取られる時に、読取/書込ヘッドによって生成される真のアナログ信号を表すピークがある。図10に示されたスケールは、縦軸ではボルト、横軸では10分の1マイクロ秒である。図11からわかるように、目標データが、磁気媒体のテスト部分に保管された擬似ランダムバイナリシーケンスから読み取られる時に、やはり読み取り/書込ヘッドによってアナログ信号が生成される。この読み取り信号は、このレベルで検査される時に、理想的な方形波出力を提供しない。図12は、8ビットデータキーの約2ビットと、ディスクまたは磁気媒体の異なる位置で符号化された擬似ランダムバイナリシーケンスに見られる目標データの対応する2ビットとの間のオーバーラップをより具体的に示すために、水平スケールを広げられたグラフ表現である。図13は、ハードディスクからの目標データの継続的な読み取りとデータキーとの間で比較が行われる時に、継続的に計算される相関係数のグラフ表現である。この相関係数は、高い速度でアナログ信号をサンプリングし、従来技術の信号処理相関技術を使用することによって計算された。そのような例の1つが、その開示が参照によって本明細書に組み込まれている、Hoinville、Indeck、およびMuller著、SpatialNoisePhenomenaofLongitudinalMagneticRecordingMedia、IEEETransactionsonMagnetics、Volume28、no.6、1992年11月に見られる。読み取り、比較、および係数計算の方法および装置の従来の例が、その開示が参照によって本明細書に組み込まれる、米国特許第5740244号など、共同発明人の以前の特許の1つのうちの1つまたは複数にある。前述は、本発明を実施するのに使用できるデバイスおよび方法の例を表すが、本明細書の他所で述べるように、他の類似するデバイスおよび方法を、同様に使用することができ、本発明の目的を実現することができる。図13からわかるように、325のラベルを付けられた点の近くで、1ボルトに達する明確なピークが、約200マイクロ秒で注目され、データキーと目標データとの間の非常に近い一致を示している。図10は、本発明の強力な態様と思われる近似マッチングの可能性も示すものである。図13をよく調べると、相関係数に現れる他のより低いピークがあることが注目される。したがって、0.4ボルトの閾値が、判断点として確立された場合に、1に達する発生するピークだけが、一致またはヒットを示すのではなく、別の5つのピークも、ヒットを示す。この形で、所望の係数値を、望み通りに調整するか事前に決定して、特定の検索パラメータに合わせることができる。たとえば、テキストの長い本体で特定の単語を検索する時に、より低い相関値は、その単語が存在するが綴りが誤っていることを示すことができる。図14に、同一の8ビットデータキーの間であるが、異なる目標データをセットされた状態の相関係数の継続的計算を示す。やはり、単一の一致が、約200マイクロ秒で見つかり、このピークは1ボルトに達する。より低い閾値が確立されたならば、目標データ内で追加のヒットが見つかることにも留意されたい。前に述べたように、本発明は、シーケンスマッチング検索を実行することもできる。図15に関して、テーブル38は、そのような検索を実行するために再構成可能論理デバイス20によって生成されたものである。具体的に言うと、p1p2p3p4は、データキー、p、または検索される所望のシーケンスを表す。図15のデータキーは、4つの文字だけを示すが、これは、例示のためのみであり、シーケンス検索の通常のデータキーサイズが、500~1000個程度またはそれより多いことを理解されたい。記号t1、t2、t3...t9は、大容量記憶媒体26からストリーミングされる目標データ、tを表す。やはり、そのようなデータのうちの9文字だけが示されているが、大容量記憶媒体26の通常のサイズ、したがってそれからの目標データストリーミングの通常のサイズが、通常は、数十億文字の範囲になる可能性があることを理解されたい。記号di,jは、データキー内の位置iおよび目標データ内の位置jでの編集距離editdistanceを表す。そうである必要はないが、データキーが、目標データに対してより短いと仮定する。図15に示されていない追加の行d0,jおよび列di,0の知られている定数値の組がある場合がある。di,jの値は、di,jが、1pi、2tj、3di-1,j-1、4di-1,j、および5di,j-1の関数にすぎないという事実を使用して、再構成可能論理デバイス20によって計算される。これは、図15で、位置d3,6に関して、d2,5、d2,6、およびd3,5、ならびにp3およびt6の値に対する依存性を示すことによって示されている。一実施形態で、di,jの値は、次のように計算される。di,j=max[di,j-1A;di-1,jA;di-1,j-1Bi,j]ここで、Aは定数であり、Bi,jは、piおよびtjのタブラ関数tabularfunctionである。しかし、この関数の形は、非常に任意とすることができる。生物学の文献では、Bを評価関数scoringfunctionと呼ぶ。人気のあるデータベース検索プログラムBLASTでは、スコアが、pi=tjであるか否かの関数にすぎない。アミノ酸配列に関するものなど、他の文脈では、Bの値が、pおよびtの特定の文字に応じる。図16に、図15のテーブル38の値を計算するために、本発明が使用するシストリックアレイアーキテクチャの一実施形態を示す。データキーの文字は、データレジスタ53の列に保管され、大容量記憶媒体26からの目標データストリーミングの文字は、データシフトレジスタ55に保管される。di,jの値は、好ましくはそれ自体がFPGAであるシストリックセル59に保管される。図16のアレイの動作を、これから、図17および図18を使用して説明する。図17からわかるように、システムのクロックサイクルの最初すなわち組合せ部分で、4つの下線付きの値が計算される。たとえば、新しい値d3,6は、前に図15で示したものと同一の5つの値に応じることが示されている。図18からわかるように、クロックサイクルの第2のすなわちラッチ部分で、di,jおよびtjのすべての文字が、右に1位置だけシフトされる。比較器61が、dアレイの各対角線セルに位置し、閾値を超えた時を判定する。シーケンスマッチング動作を、これから、図19~図22を参照して、次の例に関して説明する。キー=axbacs目標データ=pqraxabcstvqA=1i=jの場合にB=2i=jの場合にB=-2これらの変数から、図19のテーブルが、再構成可能論理デバイス20によって生成される。事前に決定された閾値8を仮定すると、再構成可能論理デバイス20は、d6,9で一致を認識する。この例の図16~図18に存在する値を表す合成アレイの部分を、それぞれ図20~図22に示す。一致は、ある行の値が所定の閾値を超える時に、再構成可能論理デバイス20によって識別される。閾値は、データキーと大容量記憶媒体26に保管された目標データとの間で望まれる類似性の所望の度合に基づいてセットされる。たとえば、正確一致検索の場合に、データキーと目標キーが同一でなければならない。一致は、CPU32によって、図19のテーブルを用いるトレースバック動作を介して検査される。具体的に言うと、テーブルのスナップショットが、所定の時間間隔にCPU32に送られて、一致が識別された後のトレースバック動作が支援される。間隔は、CPU32に重荷を与えないようにあまり頻繁でないが、テーブルの再作成に長い時間と大量の処理を必要としない程度に頻繁であることが好ましい。CPU32がトレースバック動作を実行できるようにするために、テーブル内の閾値を超えた項目を囲む区域でdアレイを再作成できなければならない。この要件をサポートするために、シストリックアレイが、dの完全な列の値スナップショットを周期的にCPU32に出力することができる。これによって、CPU32が、スナップショットのインデックスjより大きいdの必要な部分を再作成できるようになる。多くのマッチングアプリケーションが、イメージなど、2次元エンティティを表すデータを操作する。図23に、2次元データに対するマッチングを可能にする、再構成可能論理デバイス20、好ましくはFPGAのシストリックアレイ120を示す。個々のセル122それぞれが、ユーザがマッチングを望むイメージの1画素イメージキーと、検索されるイメージの1画素目標イメージを保持する。十分に大きいサイズのイメージについて、それが1つの再構成可能論理チップ124におさまらない可能性が高い。その場合に、チップへのセルの候補区分が、破線によって示されており、セルの長方形サブアレイが、各チップ124に置かれる。チップ対チップ接続の個数は、正方形のサブアレイすなわち、縦次元と横次元で同一個数のセルを使用することによって、最小にすることができる。他のより複雑な構成を、下で示す。アレイ120への目標イメージのローディングを、図24を使用して説明する。各セルを接続する水平リンク134を介してアレイの最上行130への、全般的に点Aとして示されている、大容量記憶媒体26からストリーミングされる各目標イメージの個々の行。そのような構成を用いると、最上行130が、データシフトレジスタとして動作する。行130全体がロードされた時に、その行が、各列に示された垂直リンク136を介して、次の行132にシフトダウンされる。イメージ全体がアレイにロードされたならば、比較動作が実行され、これは、離接セル間の任意の通信を必要とする可能性がある。これは、図23に示された水平両方向リンク126と垂直両方向リンク128の両方によってサポートされる。図を単純にするために、個々の両方向リンク126および128が、図23および図24で単純に図示されているが、図28に、両方向リンクのはるかに複雑な組を実施する柔軟性を示す。図28からわかるように、データを、大容量記憶媒体180から通信し、複数のセル182の第1行に入力することができ、第1行の各セルは、その下のセルの第2行の対応するセル184への単純なリンク186による直接リンクを有し、セルのアレイ188全体でそうなっている。セルのアレイ188の上にあるのが、コネクタウェブ190であり、このコネクタウェブ190は、中間にあるセルを介する伝送を必要とせずに、アレイ内の任意の2つのセルの間の直接接続性をもたらす。アレイ188の出力は、アレイ188の下端の出口リンク192の合計によって表されている。アレイ内の各セルを、FPGAからなるものとすることができ、そのそれぞれが、好ましくは図1の要素20に対応する再構成可能論理要素を有し、あるいは、そのいずれかが、再構成可能論理デバイス20ならびにデータシフトレジスタ24を有することができ、あるいは、そのいずれかが、再構成可能論理デバイス21の全体を有することができることを理解されたい。アレイ120の個々のセルの一実施形態を、図25に示す。セル140に、画素レジスタ142、LOADTi,jが含まれ、この画素レジスタ142に、アレイに現在ロードされている目標イメージの画素が含まれる。レジスタ144、CMPTi,jには、完全な目標イメージがロードされた後に、画素レジスタ142のコピーが含まれる。この構成は、ロードされた最後の目標イメージを、次にロードされる目標イメージと並列に比較することを可能にし、本質的に、ロード、比較、ロード、比較などのパイプライン化されたシーケンスを確立する。レジスタ146、CMPPi,jには、比較に使用されるイメージキーの画素が含まれ、比較論理148が、レジスタ144とレジスタ146との間のマッチング動作を実行する。比較論理148に、それぞれ全般的に150、152、154、および156として示された、左右上下の隣接セルと通信して、複雑なマッチング機能を可能にする能力を含めることができる。図23のアレイ120の個々のセルのもう1つの実施形態を、図26に示す。図25のセル140が、イメージキーと目標イメージの同時ロードをサポートするように増補されている。具体的に言うと、セル160には、セル140と同一の構成要素が含まれるが、新しいレジスタ162、LOADPi,jが追加され、このレジスタ162は、イメージキーのロードに使用され、レジスタ142と同一の形で動作する。そのような構成を用いると、大容量記憶媒体26の1つのディスク読取ヘッドが、イメージキーの上に位置決めされ、第2のディスク読取ヘッドが、目標イメージの上に位置決めされている場合に、これらの両方が、ディスクから並列に流し、アレイ160に同時にロードされることができる。比較論理ブロック内で実行される動作は、目標イメージとイメージキーとの間に大きい相違があるか否かに関する判断を提供する任意の機能とすることができる。例に、参照によって本明細書に組み込まれる、JohnC.Russ著TheImageProcessingHandbook、3rdedition、CRCPress、1999年に記載の、イメージ全体またはイメージのサブ領域にまたがる相互相関が含まれる。本発明は、データ削減検索を実行することもできる。そのような検索では、本明細書で前に説明したマッチングが用いられるが、ある集約形式でマッチングされたデータを要約することが含まれる。たとえば、金融産業で、株の最低価格、最高価格、および最新価格を識別するために、金融情報を検索したい場合がある。そのような集約データ削減を計算する再構成可能論理デバイスを、図27に100として示す。この図では、データシフトレジスタ102が、株価情報を含む大容量記憶媒体から目標データを読み取る。図示の例では、3つのデータ削減検索、すなわち、最低価格、最高価格、および最新価格の計算が示されている。目標データが、データシフトレジスタ102に供給された時に、判断論理が、所望のデータ削減動作を計算する。具体的に言うと、株価が、最低価格比較器110および最高価格比較器112に供給され、それらに保管される。株価が比較器110に供給されるたびに、比較器110は、最後に保管された株価を現在供給されている株価と比較し、低い方がデータレジスタ104に保管される。同様に、株価が比較器112に供給されるたびに、比較器112は、最後に保管された株価を現在供給されている株価と比較し、高い方がデータレジスタ106に保管される。最新価格を計算するために、株価が、データレジスタ108に供給され、現在時刻が、比較器114に供給される。時刻値が比較器114に供給されるたびに、比較器114は、最後に保管された時刻を現在時刻と比較し、新しい方がデータレジスタ116に保管される。その後、計算が行われている所望の時間間隔の終りに、最新価格が判定される。データ削減検索を、図27に示された非常に単純な金融の例に関して説明したが、本発明が、そのような機能性を必要とするさまざまな複雑さのさまざまな異なる応用例のデータ削減検索を実行できることを理解されたい。再構成可能論理デバイスは、単に、必要な機能を実行するハードウェアおよび/またはソフトウェアを用いて構成される必要がある。ディスク回転速度でデータ削減検索を実行する能力は、過小評価することができない。情報の最も貴重な態様の1つが、その適時性である。人々は、物事がインターネット速度であることを期待するようになりつつある。集約データ削減を素早く計算できる会社は、明らかに、それができない会社に対する競争上の強みを有する。さらに、検索および削減以外のデータ処理動作も、再構成可能論理デバイス21で実施することができる。上で述べたように、これらの動作を、本明細書ではデータ操作動作と称する。PLD20で実行できるデータ操作動作またはそのサブ動作の例に、暗号化動作、暗号解読動作、圧縮動作、および伸張動作が含まれる。好ましいPLD20は、FPGAであり、より好ましくはXilinx社のFPGAである。さらに、これらの追加動作のどれであっても、事実上すべての形で検索動作および/または削減動作と組み合わせて、追加の速度、柔軟性、およびセキュリティを提供するマルチステージデータ処理パイプラインを形成することができる。各動作の複雑さは、事実上無制限であり、再構成可能論理デバイス21のリソースおよび本発明を実践する人の性能要件のみによって制限される。各処理動作を、必要に応じて、単一のステージまたは複数のステージで実施することができる。図29に、図1に示されたシステムの再構成可能論理デバイス21内で実施されたマルチステージ処理パイプライン200を示す。パイプライン200内の少なくとも1つのステージが、PLD上で実施される。パイプライン200の各ステージ202は、それが受け取るデータを、その所期の機能性たとえば、圧縮、伸張、暗号化、暗号解読に従って処理し、その後、処理されたデータを、パイプラインの次のステージ、前のステージ、または制御プロセッサ204のいずれかに渡すように構成されている。たとえば、パイプライン200の第1のステージ202は、大容量記憶媒体26からのデータストリーミングを操作し、その機能性に従ってそのデータを処理する。ステージ1によって処理されたデータは、その後、さらなる処理のためにステージ2に渡され、以下同様にしてステージNに達する。データが、すべての適切なステージ202を通過した後に、その処理の結果を、システムバス34を介して、制御プロセッサ204および/またはコンピュータに転送することができる。図29のこの例示的なパイプライン200を複製し、その結果、別々のパイプライン200が、大容量記憶媒体26のディスクシステムの各ヘッドに関連するようにすることができる。そのような構成によって、複数のデータストリームがディスクから読み出される時に、これら複数のデータストリームに対する並列処理動作の実行に関連する性能が改善される。システム内に他の性能ボトルネックがない場合に、スループットが、使用されるパイプライン200の数に伴って線形に向上すると期待される。各ステージを、必ずしも再構成可能論理デバイス21内のPLD20で実施する必要がないことに留意されたい。たとえば、一部のステージを、PLD20からアクセス可能なプロセッサ上のソフトウェア図示せずまたは専用ハードウェア図示せずで実施することができる。各ステージの正確な構成、およびPLD20上、ソフトウェア、またはASICなどの専用ハードウェアでの各ステージの実施の判断は、各実践する人の計画に適用可能な、関連するコスト制約、性能制約、およびリソース制約に応じる。しかし、完全にFPGAなどのPLD20内でのパイプライン化を使用することによって、処理スループットを大きく高めることができる。したがって、フィードバック経路を有しない平衡のとれたパイプラインすなわち、各ステージが同一の実行時間を有するパイプラインについて、データスループットの向上は、ステージ数に正比例する。上で述べたように、他のボトルネックがないと仮定すると、Nステージがある場合に、N倍のスループット向上を期待することができる。しかし、マルチステージパイプラインが、ステージの間のフィードバックを使用することもでき、これは、実装コストを減らすか効率を高めるために、ある動作たとえば、一部の暗号化動作に望ましい可能性があることに留意されたい。図30に、最初の4つのステージ202に暗号解読エンジン210が含まれる、例示的なマルチステージパイプライン200を示す。この例の暗号解読エンジン210は、大容量記憶媒体26から暗号化され圧縮されたデータストリーミングを受け取るように動作する。第5のステージ202は、伸張エンジンとして働いて、暗号解読エンジン210を出た暗号解読された圧縮データを伸張する。したがって、伸張エンジンの出力は、ステージ6の検索エンジンによって処理される準備のできた、暗号解読され伸張されたデータのストリームである。制御プロセッサ204は、各ステージを制御して、それらを通る正しいフローを保証する。制御プロセッサ204は、各パイプラインステージに関連するパラメータ適切な場合に、ソフトウェアで実施されるステージのパラメータを含むをセットアップすることが好ましい。図31に、PLDが、システムバス34から大容量記憶媒体26に流れるデータ、または大容量記憶媒体26からシステムバス34に流れるデータのいずれかの暗号化エンジンとして使用される例を示す。図32に、パイプライン200が複数の処理エンジンそれぞれが1つまたは複数のステージからなるからなり、この処理エンジンのそれぞれが、エンジンが受け取ったデータに対して列挙されたタスクを実行するように制御プロセッサ204によってアクティブ化されるか、受け取ったデータに関してパススルーとして働くように制御プロセッサ204によって非アクティブ化されるかのいずれかになることができる、もう1つの例示的パイプラインを示す。異なるエンジンのアクティブ化/非アクティブ化は、パイプラインに望まれる機能性に応じる。たとえば、大容量記憶媒体26に保管された暗号化され圧縮されたデータに対する検索動作の実行が望まれる場合に、暗号解読エンジン210、伸張エンジン214、および検索エンジン218のそれぞれをアクティブ化すると同時に、暗号化エンジン212および圧縮エンジン216のそれぞれを非アクティブ化することができ、同様に、暗号化されていないデータを、大容量記憶媒体に圧縮され暗号化されたフォーマットで保管することが望まれる場合に、圧縮エンジン216および暗号化エンジン212をアクティブ化すると同時に、暗号解読エンジン210、伸張エンジン214、および検索エンジン218のそれぞれを非アクティブ化することができる。本明細書の教示を読んだ時に当業者が理解するように、他のアクティブ化/非アクティブ化の組合せを、パイプライン200に望まれる機能性に応じて使用することができる。高度な暗号化/暗号解読アルゴリズムは、計算の複雑な組を必要とする。使用される特定のアルゴリズムに応じて、ディスク速度での暗号化/暗号解読の実行は、暗号化/暗号解読エンジンに到着するストリーミングデータに追い付くために、高度な技術を使用することを必要とする。本発明のPLDベースアーキテクチャは、比較的単純な暗号化/暗号解読アルゴリズムの実装だけではなく、複雑な暗号化/暗号解読アルゴリズムの実装もサポートする。DES、TripleDES、AESなどを含むがこれに制限されない、事実上すべての知られている暗号化/暗号解読技術を、本発明の実践で使用することができる。それらのすべての開示全体が参照によって本明細書に組み込まれる、Chodowiec他著、FastImplementationsofSecret-KeyBlockCiphersUsingMixedInter-andOuter-RoundPipelining、ProceedingsofInternationalSymposiumonFPGAs、94~102ページ2001年2月、FIPS46-2、DataEncryptionStandardrevisedversionissuedasFIPS46-3、NationalInstituteofStandardsandTechnology1999年、ANSIx9.52-1998、TripleDataEncryptionAlgorithmModesofOperation、AmericanNationalStandardsInstitute1998年、FIPS197、AdvancedEncryptionStandard、NationalInstituteofStandardsandTechnology2001年を参照されたい。図33に、本発明を用いて実施できる単一ステージ暗号化の例を示す。データフローの向きは、上から下である。テキストのブロック通常は64ビットまたは128ビットが、入力レジスタ220にロードされる制御プロセッサ204またはCPU32のいずれかによって。組合せ論理CL224が、暗号ラウンドを計算し、そのラウンドの結果が出力レジスタ226に保管される。中間ラウンド中に、出力レジスタ226の内容が、フィードバック経路225を介し、MUX222を介してCL224にフィードバックされて、後続ラウンドが計算される。最終ラウンドの完了時に、出力レジスタ内のデータが、暗号化されたブロックであり、大容量記憶媒体に保管される準備ができている。この構成は、単一ステージ暗号解読エンジンとしても使用することができ、この場合に、暗号を計算するCLが、暗号化論理ではなく暗号解読論理になる。図33に示された暗号化エンジンのスループットは、パイプライン化技術の使用を介して改善することができる。図34に、ラウンド自体の組合せ論理内にパイプライン化がある、パイプライン化された暗号化エンジンの例を示す。各CL224に、複数のラウンド内パイプラインレジスタ228が含まれる。使用されるラウンド内パイプラインレジスタ228の数は、可変とすることができ、CLあたり2個に制限する必要はない。さらに、フィードバック経路225によって表されるループを、それぞれがその間にラウンド間パイプラインレジスタ230を有する、ラウンドCLの複数のコピー224a、224b、...を用いてアンロールすることができる。各CL224のラウンド内パイプラインレジスタ228の数と同様に、アンロールの度合すなわち、ラウンドCL224の数も柔軟である。図33の暗号化エンジンに対して、図34のエンジンが、PLD20上のより多くのリソースを消費するが、より高いデータスループットを提供することに留意されたい。図35に、ラウンドが完全にアンロールされている、暗号化エンジンの例を示す。図33および図34のフィードバック経路225は、もはや不要であり、データは、入力レジスタ220からCL224のパイプラインそれぞれが、複数のラウンド内パイプラインレジスタ228を含み、ラウンド間パイプラインレジスタ230によって分離されているを介して、出力レジスタ226に継続的に流れることができる。図33および図34の暗号化エンジンに対して、この構成は、最高のデータスループットを実現するが、再構成可能論理内で最大の量のリソースを必要とする。多くの情況で、データは、図36に示されているように、データウェアハウスに保存される。データウェアハウスデータが常駐する実際のハードウェアおよび関連データベーステクノロジを所有する人または実体は、しばしば、そこに保管された実際のデータを所有する人または実体と同一でない。たとえば、当事者Aデータウェアハウザが、データウェアハウスを所有し、データウェアハウジングサービスを当事者B当事者Aのデータウェアハウスを使用して、物理的にデータを保管するデータ所有者に提供する場合に、データ所有者は、このデータウェアハウザのウェアハウスに保管されたデータにアクセスできる第三者に関する正当な懸念を有する。すなわち、図36に示されているように、データウェアハウザは、データへの物理的アクセスを制御するが、誰がアクセスゲートウェイを介してデータに物理的にアクセスできるかを制御することを望むのは、データ所有者である。その場合に、データ所有者のデータを、暗号化されたフォーマットでデータウェアハウスに保管することが便利であり、データ所有者は、保管されたデータの暗号解読アルゴリズムおよび/または暗号解読キーの配信に対する制御を保つ。この形で、許可されない第三者が、データ所有者の暗号化されていないフォーマットのデータへのアクセスを得る危険性が減らされる。そのような構成では、データウェアハウザは、データ所有者の保管されたデータの暗号化されてないバージョンへのアクセスを与えられない。データ所有者が、データウェアハウスからインターネットなどのネットワークを介して当事者Cに、保管された暗号化されたデータのすべてまたは一部を通信することを望む場合に、そのデータを、別の形の暗号化たとえば、異なるアルゴリズムおよび/または異なる暗号解読キーを介して、ネットワークを介する配信中に保護することができる。データ所有者は、データの暗号解読に適当なアルゴリズムおよび/またはキーを当事者Cに与えることができる。この形で、データ所有者および許可された第三者が、暗号解読された平文のデータへのアクセスを有する2つだけの当事者になる。しかし、許可された第三者は、まだデータウェアハウスに保管されているデータ所有者のデータを暗号解読することができない。というのは、そのデータが、受信されたデータと異なるモードの暗号化を所有するからである。普通は、データウェアハウジングシナリオで暗号化/暗号解読を実行するのに必要な計算は、データウェアハウザが所有し、かつその直接の制御の下にあるコンピュータ上のソフトウェアで実行される。そのような情況では、図37に示されているように、暗号解読動作の出力である平文が、暗号化/暗号解読動作の実行に使用されるプロセッサのメインメモリに保管される。このソフトウェアまたはそのプロセッサで動作する他のソフトウェアが、ウィルスまたは他のマルウェアによって危険にさらされている場合に、データ所有者は、未知の当事者に対する平文テキストデータの制御を失う可能性がある。したがって、従来の方法を用いると、データウェアハウザおよび未知のマルウェア関連当事者のうちの一方または両方が、プロセッサメインメモリへのアクセスを有し、したがって、データ所有者の平文形式のデータへのアクセスを有する。このセキュリティの短所を改善するために、本発明を使用して、図38に示されているように、データ所有者だけが制御を有する再構成可能論理デバイス21好ましくはPLD20内で暗号化および暗号解読を実施することができる。図38では、キー1を使用する暗号解読エンジン3800およびキー2を使用する暗号化エンジン3802が、PLD20で実施されている。再構成可能論理デバイス21は、データ所有者の制御の下にあり、好ましくはそうである必要がない場合もあるがインターネットなどのネットワークを介してデータウェアハウザのデータストアと通信して、データ所有者の暗号化されたデータのストリーム3806を受信する保管されたデータは、前にキー1を使用して暗号化されたものである。したがって、暗号解読エンジン3800は、キー1を使用して、データストリーム3806を暗号解読するように動作する。暗号解読エンジン3800の出力3804は、暗号解読されたまたは平文フォーマットの、データ所有者のデータである。このデータは、PLDのセキュアメモリまたはセキュアオンボードメモリ内にある。このセキュアメモリは、その上にマルウェアを有する可能性があるソフトウェアに不可視であり、かつアクセス不能なので、ハッカーに対する平文データの制御を失う危険性が、事実上除去される。その後、平文データ3804が、暗号化エンジン3802に供給され、この暗号化エンジン3802は、キー2を使用して、データ3806を暗号化する。暗号化エンジン3802の出力は、新たに暗号化されたデータ3808であり、許可された第三者のデータ要求元に配信されることができる。したがって、インターネットなどのネットワークを介するデータ3808のセキュア配信を維持することができる。許可された第三者の要求元がデータ3808を解釈するために、データ所有者は、その第三者にキー2を与えることができる。図39aおよび図39bに、本発明のこの特徴に関する実施形態を示す。図39aに、コンピュータサーバにインストールすることができる回路基板3900を示す。PCI-Xコネクタ3916が、基板3900をサーバのシステムバス34図示せずにインターフェースするように働く。FPGAなどのPLD20が、基板3900上に実装されている。FPGA内に、3つの機能すなわち、外部環境との接続を提供するファームウェアソケット3908、暗号解読エンジン3904、および暗号化エンジン3902が実装されることが好ましい。FPGAは、FPGAだけに接続されたオンボードメモリ3906とも通信することが好ましい。オンボードメモリ3906に好ましいメモリデバイスは、SRAMまたはDRAMである。メモリ3906のアドレス空間および存在は、FPGAだけに可視である。FPGAは、プライベートPCI-Xバス3910を介してディスクコントローラ3912SCSI、FiberChannel、または類似物を使用するにも接続されることが好ましい。ディスクコネクタ3914が、データウェアハウスとして働くことのできる大容量記憶媒体26図示せずにディスクコントローラ3912をインターフェースすることが好ましい。ディスクコントローラ3912およびディスクコネクタ3914は、当技術分野でよく知られている既製構成要素である。製造業者の例に、Adaptec社およびLSI社が含まれる。大容量記憶媒体26への通常の読取/書込アクセスをサポートするために、FPGAは、PCI-Xコネクタ3916を内部PCI-Xバス3910にリンクする、PCI-X対PCI-Xブリッジとして構成されることが好ましい。これらのブリッジング動作は、ファームウェアソケット3908内で実行され、その機能性は、当技術分野で知られている。PCI-Express、PCI、Infiniband、およびIPを含むがこれに制限されない、PCI-X以外の通信パスウェイを使用することができる。暗号化/暗号解読機能性をサポートするために、大容量記憶媒体26から基板3900へのデータストリーミングは、暗号解読エンジン3904に供給される。暗号解読エンジン3904の平文出力は、メモリ3906図39aに保管するか、FPGA内部のメモリ図39bに保管するか、この2つのある組合せとすることができる。その後、暗号化エンジン3902が、メモリ3906、内部FPGAメモリ、またはこの2つの組合せに保管された平文データを、保管されたデータの暗号解読に使用されたキーと異なるキーを使用して暗号化する。オンボードメモリ3906または内部FPGAメモリのどちらを使用するかの選択は、使用可能なFPGAリソース、暗号解読/暗号化されるデータの量、使用される暗号解読/暗号化のタイプ、および所望のスループット性能特性を含むがこれに制限されない、さまざまな考慮事項に応じる。平文が、オンボードメモリ3906または内部FPGAメモリに存在する時間中に、この平文データは、マザーボードバス34にアクセスするプロセッサからアクセス可能でない。というのは、メモリ3906または内部FPGAメモリとPCI-Xコネクタ3916との間に直接接続がないからである。したがって、メモリ3906および内部FPGAメモリは、そのようなプロセッサのアドレス空間内になく、これは、導出により、メモリ3906および内部FPGAメモリが、そのプロセッサに存在する可能性があるすべてのマルウェアによってアクセス可能でないことを意味する。さらに、図39aおよび図39bの実施形態に、任意選択として、暗号解読エンジン3904と暗号化エンジン3902との間に置かれた、FPGA内の検索エンジン図示せずを含めることもでき、これによって、データ所有者が、許可された第三者のデータ要求元に、その第三者のデータ要求の境界におさまる保管されたデータの目標にされたサブセットを配信することが可能になる。上で述べたように、圧縮および伸張も、本発明の技術に従ってPLDで実行できる貴重な動作である。大容量記憶媒体26への保管の前にデータを圧縮しこれによって記憶空間を節約する、その後、プロセッサによる使用のために大容量記憶媒体から読み取る時にデータを伸張することが一般的である。これらの通常の圧縮動作および伸張動作は、通常はソフトウェアで実行される。一般に使用されている圧縮技術は、よく知られているレンペル-ジブLZ圧縮である。両方の開示全体が参照によって本明細書に組み込まれる、Ziv他著、AUniversalAlgorithmforSequentialDataCompression、IEEETrans.Inform.Theory、IT-233:337-3431977年、およびZiv他著、CompressionofIndividualSequenceviaVariableRateCoding、IEEETrans.Inform.Theory、IT-24:530-5361978年を参照されたい。さらに、本発明のPLDベースアーキテクチャは、LZ圧縮だけではなく、他の圧縮技術の配置もサポートする。すべての開示全体が参照によって本明細書に組み込まれる、Jung他著、EfficientVLSIforLempel-ZivCompressioninWirelessDataCommunicationNetworks、IEEETrans.onVLSISystems、63:475-4831998年9月、Ranganathan他著、High-speedVLSIdesignforLempel-Ziv-baseddatacompression、IEEETrans.CircuitsSyst.、40:96-1061993年2月、Pirsch他著、VLSIArchitecturesforVideoCompression-ASurvey、ProceedingsoftheIEEE、832:220-2461995年2月を参照されたい。本発明と共に配置できるLZ圧縮以外の圧縮技術の例に、ハフマン符号化、辞書技術、および算術圧縮などのさまざまなロスレス圧縮タイプと、さまざまな知られているロッシイ圧縮技術が含まれるが、これらに制限はされない。圧縮データを検索できる速度を改善するために、検索を実行するPLD20に伸張動作をインポートし、これによって、PLDベース検索動作と同一の速度の利益を有する伸張を実現することが貴重である。図40に、圧縮データのストリーム4000が、大容量記憶媒体26から再構成可能論理デバイス21に渡され、この再構成可能論理デバイス21で、圧縮解除伸長エンジン4002および検索エンジン4004がPLD20内で実施される、本発明のこの態様を示す。図41に、本発明のこの態様の好ましい実施形態を示す。図41では、図39aおよび図39bに示された基板3900のFPGA20が、伸張エンジン4002および検索エンジン4004を実施する。図39aおよび図39bに関して説明したように、平文形式の保管されたデータ伸張エンジン4002から出る伸張されたデータの保全性は、このデータが、オンボードメモリ3906、内部FPGAメモリ、またはこの2つの組合せだけに保管されるので、保たれる。図42に、基板3900のFPGA20が、その上で圧縮エンジン4200を実施され、これによって、システムバス34から来るデータを、圧縮された形で大容量記憶媒体26に保管できるようになる、圧縮動作に関する好ましい実装を示す。理解されるように、基板3900のFPGA20に、伸張エンジン4002、検索エンジン4004、および圧縮エンジン4200をロードすることもできる。そのような配置では、基板3900に望まれる機能性に応じて、圧縮エンジン4200を非アクティブ化するこれによって、組み合わされた伸張/検索機能性がもたらされるか、伸張エンジン4002および検索エンジン4004の両方を非アクティブ化するこれによって、圧縮機能性がもたらされることができる。本発明の機能性を有するFPGA20を構成するために、図43の流れ図に従うことが好ましい。第1に、エンジンの動作とそのエンジンのお互いとの相互作用の両方を規定する所望の処理エンジンのコードレベル論理4300を作成する。このコードは、HDLソースコードであることが好ましいが、標準的なプログラミング言語およびプログラミング技術を使用して作成することができる。HDLの例として、VHDLまたはVerilogを使用することができる。その後、ステップ4302で、合成ツールを使用して、HDLソースコード4300を、処理エンジンのゲートレベル記述4304に変換する。好ましい合成ツールは、Synplicity社が提供するよく知られているSynplicityProソフトウェアであり、好ましいゲートレベル記述4304は、EDIFネットリストである。しかし、他の合成ツールおよび他のゲートレベル記述を使用できることに留意されたい。次に、ステップ4306で、配置配線ツールを使用して、EDIFネットリスト4304を、FPGA20にロードされるテンプレート4308に変換する。好ましい配置配線ツールは、当技術分野でよく知られているように、マッピング、タイミング分析、および出力生成の機能性を含むXilinxISEツールセットである。しかし、本発明の実践で、他の配置配線ツールを使用することができる。テンプレート4308は、当技術分野で知られているように、FPGAのJTAGJointTestAccessGroupマルチピンインターフェースを介して、FPGA20にロードできるビット構成ファイルである。上で述べたように、システムに望まれる、異なる処理機能性用のテンプレート4308を、FPGAでの選択的実装のために事前に生成し、かつ保管することができる。たとえば、異なるタイプの圧縮/伸張、異なるタイプの暗号化/暗号解読、異なるタイプの検索動作、異なるタイプのデータ削減動作、または前述の異なる組合せのためのテンプレートを、事前に生成し、かつその機能性が必要な時に、FPGA20への後続のロードのためにコンピュータシステムによって保管することができる。さらに、スループットおよび消費されるチップリソースなどの性能特性を、事前に判定し、かつ各処理動作に関連付けることができる。これらの関連付けられたパラメータを使用することによって、どのテンプレートが特定の所望の機能性に最適であるかを知的に選択するのに、アルゴリズムを使用することができる。たとえば、そのようなアルゴリズムは、図33~図35の暗号化エンジンのどれが、所与の応用例に最も適するかに関する案内を提供することができる。下の表に、本発明の暗号化/暗号解読動作に従って、性能をモデル化するのに使用できるパラメータを提示する。これらのパラメータそれぞれの値は、当技術分野で知られているように、たやすく知られるか、たやすく測定することができる。整数IについてR=ILである場合に、暗号化/暗号解読の反復が、均等にアンロールされている。そうでない場合には、後のパイプラインステージが、パススルー機能を有しなければならない。というのは、最終結果が、末尾ではなくパイプラインの内部で計算されるからである。パイプライン化された暗号エンジンのスループットは、次式によって与えられる。FPGAのチップリソースは、通常、よく知られているように、CLBまたはスライス単位で測定される。FPGA以外の再構成可能論理では、リソースが、他の単位たとえば、チップ面積で測定される場合がある。どの場合でも、必要なリソースは、並列にサポートされるラウンド数に線形である。したがって、エンジンに必要なチップリソースは、次の通りである。Resources=A0LARpパラメータThroughputおよびResourcesの値は、パイプラインの1ステージで実装できる保管される処理動作または機能fiごとに前もって決定されることができる。したがって、各処理動作または機能を、それに対応するThroughputおよびResourcesの値に関係させるテーブルを作成することができる。したがって、PLDに配置される特定のテンプレート1つまたは複数のさまざまな処理動作を規定するを、発行される特定の照会またはコマンドに合わせて調整することができる。本発明を実践する人が望む形で、ThroughputとResourcesのバランスをとるアルゴリズムを作成して、どの候補テンプレートがある応用例に最も適するかを判断することができる。したがって、制御プロセッサ32は、次のように、機能の組に関する総合スループットおよびリソースを計算することができる。機能の組のスループットは、機能のそれぞれに関する最小スループットである。Throughput=MinThroughputF1,ThroughputF2,...,ThroughputFn機能の組を配置するのに必要なリソースは、機能のそれぞれに必要なリソースの合計である。Resources=ResourcesF1ResourcesF2...ResourcesFn各機能に関する複数のオプションを与えられれば、制御プロセッサは、最適化問題または、望まれる場合に近最適化nearoptimization問題を解くことができる。最適化は、必要なリソースが再構成可能ロジックで使用可能なリソース以下という制約の下で、総合スループットを最大にする、機能ごとのオプションの組を配置することとすることができ、あるいは、最適化は、総合スループットが指定された最小閾値未満にならないという制約の下で、必要なリソースを最小にする、機能ごとのオプションの組を配置することとすることができる。そのような最適化問題または近最適化問題を解く技術は、当技術分野でよく知られている。そのような技術の例に、列挙、バウンデッドサーチboundedsearch、遺伝的アルゴリズム、グリーディアルゴリズムgreedyalgorithm、シミュレーテッドアニーリングなどが含まれるが、これらに制限はされない。ディスクドライブシステムなどの大容量記憶媒体からのデータストリーミングを処理するのに、本発明のシステムを使用することは、保管されたデータを高速で処理する強力な技術である。しかし、非常に大きいデータベースは、通常、多数のディスクシリンダにまたがる。したがって、データベースファイルが、不連続なディスクシリンダに置かれたトラックに書き込まれる時に、遅延に出会う場合がある。これらの遅延は、ディスク読取/書込ヘッドを、データシリンダ上の現在位置から、ディスクから読み取られるファイルが連続する新しいデータシリンダに移動する必要に関連する。これらの遅延は、ヘッドが移動しなければならない距離が増えるにつれて増える。したがって、ディスク上の複数のデータシリンダにまたがるデータを読み取るために、ディスクからのデータストリームのフローが、ヘッドがシリンダからシリンダに移動する時に中断される。現在のディスクドライブでは、これらの遅延が、ミリ秒の範囲になる可能性がある。したがって、これらのヘッド移動遅延当技術分野でシーク時間として知られているは、潜在的な性能ボトルネックを表す。標準的な現代のディスクシステムでは、図44aおよび図44bに示されているように、トラック4400が、ディスクまたはディスクプラッタの組の上で、中心原点4406の回りの同心円状であるシリンダ4402としてレイアウトされる。図44aに、コンピュータハードディスクなどの記憶デバイスとして働く回転可能プレーナ磁気媒体4450を示すが、データは、磁気媒体4450で、別個の環状のトラック4400に置かれる。磁気記録では、各トラック4400iiは、a、b、c、...とすることができるが、中心原点4406に対してそれ自体の半径Riに位置する。各トラックは、次の内周トラックおよび次の外周トラックから、トラック間の間隔Tだけ計方向に分離されている。Tの値は、各トラック間の径距離について均等であることが好ましい。しかし、そうである必要はない。ヘッド4404が、トラック4400iからデータを読み取るかトラック4400iに書き込むために、ヘッド4404が、ディスク上で原点4406からRiの点の上にあるように位置決めされなければならない。ディスクが回転する時に、トラックが、ヘッドの下を通過して、読取動作または書込動作が可能になる。ディスクドライブは、通常、直接上書き方法を使用し、したがって、媒体4450上でのヘッド4404の正確な径方向の配置が、持続的なエラーなしの使用に重要である。一般に、各環状トラック4400iは、約150個のほぼ等しい連続する円弧に分割される。図44aに、各トラック4400iが、8つの均一な円弧4460に分割され、各円弧4460が、θ=2π/8の角度に及ぶ例を示す。当技術分野で知られているように、同一の角度θに及ぶ異なるトラック4400の円弧が、ディスクセクタまたはウェッジ4462を構成する。これらの円弧4460に、変更書き換えできる複数のデータセット4464論理ブロックおよび物理セクタが含まれる。さらに、これらの円弧4460に、磁気記録からの信号強度が最大になるように、ヘッド4404をデータ領域の上に置くためのガイドとして使用される、変更不能な固定された磁気的に書き込まれたマーキング4466ABCDサーボバーストなどが含まれる。図44bは、ドライブシステムに存在する複数のディスク4450の断面図を伴うディスクドライブシステム4470のブロック図である。図44bからわかるように、多数のドライブシステム4470が、ディスク4450の両面を使用し、スピンドルモーターなどの回転デバイス4472に同心円状に置かれる、複数のディスク4450またはプラッタを含む場合がある。そのような構成では、各ディスク表面上面4452および下面4454が、異なるヘッド4404によってアクセスされる。別々のヘッド4404によって単一の半径Riでアクセスされる環状トラック4400の集合を、データシリンダ4402と呼ぶ。隣接するデータシリンダの帯を、ゾーンと呼ぶ。別々のシリンダ4402を有することは、シリンダ4402の間で移動する時に、ディスクヘッド4404の移動を必要とする。シリンダ4402の間で移動するために、位置決めシステム4474が、線4476に沿って、通常はTの増分で、ヘッド4404を適切に移動しなければならない。内周シリンダから外周シリンダに移動する時に、書き込まれるトラックの円周が増える。たとえば、図44aを参照すると、最内周トラック4400aの円周は、2πRaであるが、最外周トラック4400dの円周は、2πRdである。RdはRaより大きいので、トラック4400dの円周が、トラック4400aの円周より大きくなる可能性が高い。これらの円周の差があるので、異なるゾーンを画定して、トラックに沿って異なる線ビット密度を可能にすることができ、これによって、大きい半径について、ほぼ一定の線データ密度を使用することによって得られるデータセクタより多い、シリンダ4402の周囲にデータセクタを作ることができる。1つまたは複数のトラック4400にまたがってデータを書き込むために、ヘッド4404を、位置決めシステム4474によって、少なくとも隣接トラック4400の中心間距離だけ別の半径に再位置決めしなければならない。この動きは、機械的整定時間ヘッド4404の再位置決めと、シリンダ4402に対するヘッド4404の再同期化時間遅れずにダウントラックのを必要とする。ヘッドを、Tなど、比較的長い距離だけ移動する時に、この整定時間が大きくなる。一緒に、これらの時間は、平均して、シリンダ4402の回転の半分を要する可能性があり、これは、通常、シリンダからシリンダに移動する時に数ミリ秒になる。上で述べたように、この時間持続期間を、しばしば、シーク時間と呼び、これが主要な性能ボトルネックになる可能性がある。このボトルネックに起因して、データ読取/書込バーストは、一般に、単一のトラックまたはシリンダに制限されている。好ましい実施形態の新規で独自の特徴によれば、不連続円弧としてレイアウトされたトラックに対処するために、ヘッド4404を再位置決めする技術が使用される。好ましい実施形態では、これらの不連続円弧が、ディスク4450上の全般的に螺旋状のトラッキングパターンに配置された不連続環状円弧であり、ヘッド位置決めシステムは、ABCDサーボバーストなど、ヘッドを適切に位置決めするために従来のシステムに既に存在するサーボパターンを使用する。この技術は、トラックを超え、ゾーン全体までに書き込まれたバーストを提供することができ、単一のゾーンにディスク全体を含めることができる。他のサーボパターンが可能であり、本発明のこの特徴の範囲から除外されないが、サーボパターンに関して普通のABCDシステムを使用する例を示す。サーボシステムの目標が、環状トラック4400を実現するために単一の半径にヘッド4404を位置決めすることである普通のヘッド移動と異なって、図45に示されたこの新規で独自の位置決め方法は、ディスク4450の回りでのヘッド4404の角度位置に比例して、別個の円弧4500にヘッド4404を位置決めすることをめざし、これによって、ディスク4450上の不連続円弧の磁気パターンの螺旋トポロジに対処する。図45に関して、各ウェッジ4462が2π/Wの角度に及ぶ、W個のウェッジまたはセクタ4462に均等に分割されたディスク4450の単一の回転を検討されたい。Wは、ディスクの単一の回転でヘッド4404を通過するウェッジ4462の総数である。図45では、ヘッド図示せずを、原点4406の左でx軸に沿った任意の点に位置決めすることができる。各ウェッジ4462に、ウェッジ番号wを割り当てることができ、wは、1からWまでの任意の整数とすることができる。ディスク4450が回転する時に、ヘッド4404の径方向の変位が、ウェッジ番号wに比例する量すなわち線形比w/W×Tだけ増分され、Tは、普通のトラック間またはシリンダ間の距離または他の距離である。図45からわかるように、データは、区分的な形、好ましくは複数の不連続環状円弧4500によって画定される区分的螺旋の形で、ディスク4450の表面に書き込まれる。好ましい実施形態のディスクの回転ごとに、ヘッド4404が、W個の不連続環状円弧4500に出会うように位置決めされ、各環状円弧4500は、2π/Wの角度に及ぶ。図45の例では、Wが4と等しい。各円弧4500が環状であると述べたが、これが意味するのは、各円弧4500iが、実質的に一定の曲率を有することである。Wがすべての半径について一定である好ましい実施形態では、各不連続円弧4500iが、2πRi/Wの円周を所有する。各円弧4500iの半径Riは、円弧4500i-1の半径よりT/Wだけ大きく、円弧4500i1の半径よりT/Wだけ小さいことが好ましい。したがって、下で注記するように、好ましい実施形態のディスク4450の完全な回転ごとに、ヘッド4404は、効果的に、普通の隣接トラック間の距離Tと等しい距離を移動する。図45からわかるように、複数の別個の環状円弧4500は、ディスク4450上で全般的に螺旋形のパターンを画定する。各半径Riが、それ自体のW値を有することができることに留意されたい。その場合に、不連続円弧4500は、異なる円周を有することができ、原点からの複数の角度に及ぶことができる。各不連続円弧4500に、ある円弧4500から次の円弧へのヘッド4404の正しい移動を保証するために、連続円弧について図44aに示したサーボパターンものに似たABCDサーボパターンが含まれる。普通のサーボシステムは、T/Wの小さい量だけ、ヘッド4404をステップさせるのに十分な帯域幅を有する。この処理の一部として、読取/書込ヘッド4404が、当初は、図45のディスクの中心原点4406に関して位置d0に置かれている例を検討されたい。この初期位置を、R1すなわち最内周円弧45001の半径距離とすることができる。ディスクが回転する際に、回転rごとに、ヘッド4404の半径変位Dが、次のように、ウェッジ番号wに比例する量だけ、d0に対して相対的に位置決めされる。ここで、Tは、普通のトラック間またはシリンダ間の距離である。完全な1回転で、ヘッド4404は、径方向に正確に完全に1トラック間の距離Tだけ移動する。rが2に達した時に、ヘッド4404は、径方向に正確に2Tだけ移動している。図46に、好ましい実施形態のこの特徴に従ってディスク4450からデータを読み取るために、ディスクドライブシステム4470がそれによって動作する処理を示す。ステップ4600で、システムは、ヘッドがあるディスクの位置を感知する。このステップは、当技術分野で知られているように、少なくとも部分的に、サーボパターンを感知すること、およびディスクに書き込まれたセクタIDを読み取ることによって達成されることが好ましい。その後、ステップ4602で、この部分が対応するディスクウェッジ4502のウェッジ番号wに応じて、ヘッドが新しいディスクウェッジ4502に出会うたびに、ヘッドをDに再位置決めする。次に、ステップ4604で、円弧4500上のサーボパターンを使用することによって、ヘッド位置を微調整する。ヘッドが正しく位置決めされたならば、ステップ4606で、データをディスクから読み取る。この処理は、その後、ディスクが回転を続ける際に、ステップ4600に戻る。本発明のこの特徴は、ゾーン全体での読取モードまたは書込モードでのヘッドのシームレスで連続的な動作を可能にし、したがって、普通のシーク時間に関連する遅延をこうむらない、ディスク全体の読み取りまたは書き込みを可能にする。したがって、上に記載の検索技術および処理技術と組み合わせて使用される時に、検索/処理システムが、シーク時間遅延によって失速することなく、より効率的に動作することができる。しかし、本発明のこの特徴を、上で説明した検索/処理技術と組み合わせて使用する必要がないことに留意する価値がある。すなわち、磁気データ記憶ディスクとの間のデータ読み取りおよび書き込みに、螺旋パターンを使用するというこの技術は、上で説明した検索特徴および処理特徴と独立に使用することができる。もう1つの性能ボトルネックが、データが保管されたディスクがフラグメント化した時に発生する。一般的なファイルシステムでは、ファイルが、複数の固定サイズのセグメントブロックに分割され、これらのセグメントが、ディスクに保管される。ファイルが非常に長い場合に、セグメントが、ディスクのさまざまな位置に保管される場合がある。上で注記したように、そのようなファイルにアクセスするために、ディスクヘッドをシリンダからシリンダへ移動しなければならず、ファイルアクセスが低速になる。ファイル全体が単一のオブジェクトとして、単一のシリンダに、または直接に隣接するシリンダに保管されるならばよりよい。しかし、経時的なディスクのフラグメンテーションのゆえに、これは常に可能ではないことがある。ディスクのデフラグメンテーションでは、通常、すべてのファイルをディスクの一端に移動し、その結果、新しいファイルを、他方の自由端で連続的に割り振れるようにすることが用いられる。通常、そのようなデフラグメンテーションは、長い時間を要する。従来技術で、この問題を解決するために多数の試みが行われてきた。1つのよく知られている技術が、バイナリバディシステムbinarybuddysystemとして知られている。バイナリバディシステムでは、ディスク空間に関するすべての要求サイズが、次の2のべきに丸められる。したがって、2000バイトのファイルについて、2048211の割振り要求が行われる。この処理は、内部フラグメンテーションにつながる。この問題を最小にする努力において、本明細書では、ファイルが1つまたは複数のセグメントに分割され、各セグメントが2のべきである技術を開示する。したがって、端数のない2のべきのサイズではない各ファイルは、一連の2のべきセグメントの合計として表される。最小セグメントサイズがセットされない実施形態では、ファイルを、メモリのブロックにセグメント化するこの技術に、1ファイルサイズが、端数のない2のべきである場合に、ファイルサイズと等しい記憶媒体上の記憶空間のブロックを要求することと、2ファイルサイズが、端数のない2のべきではない場合に、各ブロックが2のべきと等しいサイズを有する記憶媒体上の記憶空間の複数のブロックを要求することと、3要求が受け入れられた場合に、要求に従う1つまたは複数のデータファイルセグメントとして、ディスク上またはメモリ内などの記憶媒体内にデータファイルを保管することとが含まれる。この技術の好ましいバーションでは、ファイルサイズFを、2進項でFk...F2F1と等しいFとして考えることができる。ファイルサイズが端数のない2のべきではない時に、記憶装置内のブロックを要求することに、Fの1と等しいビットの総数と等しい総数n個のブロックB1、...、Bnを要求することが含まれ、各ブロックBiは、Fの1と等しい異なるビットFiに対応し、2iのサイズを有する。図47aに、2500バイトのファイルサイズFについてこの処理の例を示す。図47aからわかるように、好ましい2のべきの合計技術は、最小セグメントサイズが使用されない場合に、2048バイト212、256バイト29、128バイト28、64バイト27、および4バイト22のセグメントサイズをもたらす。過度に小さいセグメントの生成を避けるために、最小セグメントサイズ2mを使用することが好ましい。たとえば、最小セグメントサイズを、512バイト29したがって、mは2であるとすることができる。この技術を用いると、最小セグメントサイズが使用される時に、ファイルを2のべきの合計サイズに分割することが、少なくとも最小セグメントサイズと等しい最小セグメントをもたらす。したがって、1ファイルサイズが端数のない2のべきであり、2m以上である場合に、記憶空間のブロックは、ブロックがファイルサイズと等しくなるように要求され、2ファイルサイズが2m未満の場合に、記憶空間のブロックは、ブロックが2mと等しくなるように要求され、3ファイルサイズが端数のない2のべきではなく、2mを超える場合に、記憶媒体上の記憶空間の複数のブロックが要求され、各ブロックは、2のべきと等しく、2m以上のサイズを有する。図47bに、ファイルサイズSが2500バイトである、この最小セグメント特徴の好ましい実装を示す。この技術を用いると、セグメントサイズが、2048バイト212、512バイト210になることがわかる。図47bの好ましい実装では、Fm-1からF1のうちの少なくとも1つのビットFiが1と等しいので、Fは、新しい値R2進数でRq...R2R1と表すことができるに丸められる。Rの値は、ビットRm-1からR1のすべてが0と等しい、Fより大きい最小値として選択される。ファイルサイズFが、異なる値であり、ビットFm-1からF1のすべてが0と等しい場合には、ブロックの選択は、図47aと同様に進行する。しかし、ビットFm-1からF1のうちの少なくとも1つが1と等しい場合に、Rを使用する図47bの手順に従うことが好ましい。本明細書の教示を再検討した時に当業者が理解するように、そのような2のべきの合計ファイルシステムを実装するプログラム論理は、最小セグメントサイズの有無を問わず、たやすく開発することができる。2のべきの合計ファイルシステムでは、内部フラグメンテーションが、ファイルを等しいサイズのセグメントに分割し、同一の最小セグメントサイズを有する従来の普通のファイルシステムと等しい。図48に、バディファイルシステム対普通の従来のファイルシステムおよび2のべきの合計ファイルシステムでの内部フラグメンテーションに起因して浪費される空間を示す。最小セグメントサイズが小さい時に、浪費される空間は、バディファイルシステムの場合にかなりあるが、最小セグメントサイズが増える時に、他のファイルシステムと匹敵するようになる。多くのファイルシステムで、小さいファイルの数が支配的なので、バディシステムは、しばしば、適切なオプションではない。図49で、普通のファイルシステムおよび2のべきの合計ファイルシステムによる、ファイル全体に関するセグメントの総数を比較する。最小セグメントサイズが小さい時に、2のべきの合計システムは、普通の機構よりかなり少ないセグメントを作る。図50に、両方のファイルシステムによる、ファイルあたりのセグメントの最大数、平均数、および最小数を示す。やはり、2のべきの合計ファイルシステムは、優位を占め、少数のセグメントを作る。言い換えると、2のべきの合計ファイルシステムは、より連続したファイルにつながる。したがって、2のべきの合計ファイルシステムは、バディシステム多数の内部フラグメンテーションがあると普通のファイルシステム内部フラグメンテーションは少ないが潜在的に低い連続性があるとの間のよいトレードオフである。さらなる改良として、2のべきの合計ファイルシステムと共にデフラグメンテーションアルゴリズムを使用して、割振り要求用のディスク上の連続空間をより大きく保証することが好ましい。連続割振りを満足できない場合に、デフラグメンテーションアルゴリズムは、割振り要求を満足するために空間を解放することを試みる。このデフラグメンテーションアルゴリズムは、ディスク全体をデフラグメントするのではない。そうではなく、ディスクの一部を増分式にデフラグメントして、新しい割振り要求を増分的な形で満足することを可能にする。2のべきの合計ファイルシステムと共に使用するのに好ましいデフラグメンテーションアルゴリズムが、その開示全体が参照によって本明細書に組み込まれる論文、Cholleti、Sharath共著、StorageAllocationinBoundedTime、MSThesis,Dept.ofComputerScienceandEngineering、WashingtonUniversity、St.Louis、MO2002年12月の26~30ページに開示されている。本明細書でヒープマネージャ部分デフラグメンテーションアルゴリズムと称する好ましい部分的デフラグメンテーションアルゴリズムの擬似コードを、下に複写する。1.InitializationforI=0toH-1heapManager[i]=0;/ヒープを空にする/2.AllocateSifサイズSの空きブロックがある最低のアドレスAを有するサイズSのブロックを割り振るUpdateHeapManagerS,A,allocationelseサイズの昇順でSより大きいサイズの空きブロックを探すif見つかった、最低のアドレスを有するブロックを選択するサイズSのブロックができるまでブロックを再帰的に分割する最低のアドレスAを有するサイズSのブロックを選択するUpdateHaapManagerS,A,allocationelseA=FindMinimallyOccupiedBlockS/再配置されるブロックを見つける/RelocateS,A/ブロックAからのサブブロックを再配置する/アドレスAを有するブロックを割り振るUpdateHeapManagerS,A,allocation3.FindMinimallyOccupiedBlockSi=2H/S-1toH/SについてheapManager[i]が最小になるiを見つけるreturnアドレスA=i<<log2S4.RelocateS,AsubBlocks=FindSubBlocksS,A;foreachSB∈subBlocksDeallocateSB,∀SB∈subBlocks5.DeallocateextIdブロックextIdおよびサイズSのアドレスAを見つける;そのブロックを解放する;UpdateHeapManagerS,A,deallocation;6.UpdateHeapManagerS,A,typeintmaxLevel=log2H;intlevel=log2S;iftype=allocationintaddr=A>>level;ifS>MinBlockSizeheapManager[addr]=S/ブロックが完全に占有されている//割振りレベルの上のブロック/addr=A>>level;fori=level1;i<=maxLevel;iaddr=addr>>1;heapManager[addr]=heapManager[addr]S;iftype=deallocationintaddr=A>>level;/現在のブロック/ifS>MinBlockSizeheapManager[addr]=0/割振り解除レベルの上のブロック/addr=A>>level;fori=level1;i<=maxLevel;iaddr=addr>>1;//上のaddrから継続するheapManager[addr]=heapManager[addr]-S;本発明の趣旨から逸脱しない、さまざまな本発明に対する変更および修正が、当業者に明白であろう。好ましい実施形態は、本発明の実施を説明したものであるが、この説明は、単に例示であることを意図されたものである。複数の代替案も上にある。たとえば、アナログ処理によって例示された動作のすべてが、ディジタル領域でそれと同等の対応物を有する。したがって、適切なマッチングタイプおよび相関タイプの処理を、アナログビットパターンの標準的なディジタル表現に対して行うことができる。これは、調整されたディジタル論理、マイクロプロセッサ、およびディジタル信号プロセッサ、または代替の組合せを使用することによって、連続的な形で達成することもできる。したがって、本発明が、請求項の範囲およびその法的同等物のみによって制限されることが、本発明人の意図である。"