FPGAデバイスを使用するインテリジェントデータ記憶および処理
【課題】変化する要求に素早く応答できるデータの記憶および検索のデバイスおよび装置を提供する。
【解決手段】少なくとも1つの磁気記憶媒体と、再構成可能論理デバイスとを含み、少なくとも1つの磁気記憶媒体に結合されたFPGAを含み、そこから目標データの連続ストリームを読み取るように構成され、テンプレートを用いてまたは検索のタイプおよび検索されるデータに合うように望みに合わせて構成される。再構成可能論理デバイスは、データキーの形の少なくとも1つの検索照会を受け取り、目標データが少なくとも1つの磁気記憶媒体から読み取られる際に、目標データとデータキーの間の一致を判定するように構成されている。このデバイスおよび方法は、正確一致検索、近似一致検索、シーケンス一致検索、イメージ一致検索、およびデータ削減検索を含むがこれらに制限されない、目標データに対するさまざまな検索を実行することができる。
【解決手段】少なくとも1つの磁気記憶媒体と、再構成可能論理デバイスとを含み、少なくとも1つの磁気記憶媒体に結合されたFPGAを含み、そこから目標データの連続ストリームを読み取るように構成され、テンプレートを用いてまたは検索のタイプおよび検索されるデータに合うように望みに合わせて構成される。再構成可能論理デバイスは、データキーの形の少なくとも1つの検索照会を受け取り、目標データが少なくとも1つの磁気記憶媒体から読み取られる際に、目標データとデータキーの間の一致を判定するように構成されている。このデバイスおよび方法は、正確一致検索、近似一致検索、シーケンス一致検索、イメージ一致検索、およびデータ削減検索を含むがこれらに制限されない、目標データに対するさまざまな検索を実行することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、その開示全体が参照によって本明細書に組み込まれる、2003年5月23日出願の米国特許仮出願第60/473077号、名称「Intelligent Data Storage and Processing」の恩恵を主張する。
【0002】
本願は、その両方の開示全体が参照によって本明細書に組み込まれる、2002年5月21日出願の米国特許出願第10/153151号、名称「Associative Database Scanning and Information Retrieval Using FPGA Devices」、および現在、米国特許第6711558号である、2000年4月7日出願の米国特許出願第09/545472号、名称「Associative Database Scanning and Information Retrieval」の一部継続出願でもある。
【背景技術】
【0003】
指摘は、平均データベースサイズおよび関連ソフトウェアサポートシステムが、プロセッサ性能の向上より高い割合で(すなわち、約18ヵ月に2倍を超えて)増加していることである。これは、より詳細な情報を保管すること、より長い期間にわたり情報を保管すること、異なる組織からのデータベースをマージすること、および新生の重要なアプリケーションから生じた大きい新しいデータベースを扱うことの望みを制限なしに含む、複数の要因に起因する。たとえば、大きく急速に成長するデータベースを有する2つの新生のアプリケーションが、遺伝学の革命に関連するものと、インターネット上の情報のカタログ作成およびアクセスに関連するものである。インターネットの場合に、現在の産業界の見積は、150万を超えるページが毎日インターネットに追加されているというものである。物理的レベルで、これは、磁気記憶密度が、過去5年間に毎年2倍程度になってきたディスク記憶性能の著しい向上によって可能にされてきた。
【0004】
検索機能および取出機能は、インデクシングされている時に、情報に対してより簡単に実行される。たとえば、金融情報に関して、この情報を、会社名、株式銘柄、および価格によってインデクシングすることができる。しかし、しばしば、検索される情報は、分類またはインデクシングが困難であるタイプ、または複数のカテゴリに含まれるタイプのいずれかである。その結果、情報検索の精度は、それに関して作成されたインデックスの精度および総合性と同程度にすぎない。しかし、インターネットの場合に、情報はインデクシングされていない。インデクシングのボトルネックは、適度な時間でウェブページにアクセスするのに必要な逆インデックスを開発するのに要する時間である。たとえば、サーチエンジンが使用可能であるが、扱いやすい結果を作る検索を構成することは、検索命令のより少ない非常に詳細なセットによって生成される多数の「ヒット」に起因して、ますます困難になりつつある。このため、複数の「インテリジェント」サーチエンジンが、Googleなど、ウェブ上で提供されてきたが、これらは、当然と思われている望ましくない「ヒット」を除去する論理を使用して、検索結果を減らすことを目的とするものである。
【0005】
次世代インターネット、さらに高速のネットワーク、およびインターネットコンテンツの拡張があるので、このボトルネックは、重大な関心事になりつつある。さらに、タイムリーな基礎で情報にインデクシングすることが、対応してきわめて困難である。インターネットの場合に、現在の産業界の見積は、150万を超えるページが、毎日インターネットに追加されているというものである。その結果、逆インデックスの維持および更新は、膨大な連続的な仕事になり、それが引き起こすボトルネックが、既存の検索システムおよび取出スステムの速度および精度に対する主要な障害になりつつある。しかし、使用可能な情報のますます増加する量を仮定すれば、所望の情報を素早く正確に検索し、取り出す能力が、重大になってきた。
【0006】
大きいデータベースを扱う連想記憶デバイスが、従来技術で知られている。一般に、これらの連想記憶デバイスには、コンピュータ、コンピュータネットワーク、および類似物のための周辺メモリが含まれ、この周辺メモリは、コンピュータ、ネットワークなどに対して非同期に動作し、特殊化された検索に関する高い効率を提供する。さらに、これらのメモリデバイスに、周辺メモリにアクセスする際の主CPUに対する援助として、ある限られた意思決定ロジックを含めることができることも、従来技術で知られている。高速ディスクまたは高速ドラムなどの回転式メモリと共に使用されるように特に適合された、そのような連想記憶デバイスの例を、その開示が参照によって本明細書に組み込まれている米国特許第3906455号に見出されることができる。この特定のデバイスは、回転式メモリと共に使用される方式を提供し、任意の論理操作を実行する前に、メモリをプリソートし、その後にソートするために、メモリセクタに対する2パスが必要であることを教示している。したがって、このデバイスは、磁気テープまたは類似物などの線形メモリまたはシリアルメモリと共に使用することに適さないものとして教示されている。
【0007】
従来技術のデバイスの他の例を、その開示が参照によって本明細書に組み込まれている、米国特許第3729712号、米国特許第4464718号、米国特許第5050075号、米国特許第5140692号、および米国特許第5721898号にも見出されることができる。
【0008】
例として、米国特許第4464718号で、Dixonは、固定された個数のバイトに対する固定された比較を実行している。それらは、データを任意にスキャンし、相関させる能力を有しない。それらは、所与のディスクシリンダ内のトラックに沿ってシリアルに検索するが、ディスクを横切る並列検索に関する備えがない。Dixonの比較は、固定され変わらない個数の標準論理動作タイプによって制限されている。さらに、提示された回路は、これらの単一論理動作だけをサポートする。近似マッチングまたはファジイマッチングのサポートはない。
【0009】
これらの従来技術の連想記憶デバイスは、多くの場合に、大容量記憶装置である周辺メモリとの間の情報の入出力を高速化する試みを呈するが、すべてが、メモリ位置のディジタルアドレスまたはディジタル内容のいずれかを読み取り、解釈することによるディジタル形式で保管されたデータへの古典的アクセスに頼る。言い換えると、そのようなデバイスのほとんどは、そのアドレスによってデータにアクセスするが、当技術分野でよく知られている内容アドレッシングの威力を利用するいくつかのデバイスがある。それにもかかわらず、本発明人が知っている従来技術のすべてで、データを識別しかつ処理のためにデータを選択するために、アドレスまたはアドレッシングされた位置に含まれるデータのディジタル値を、そのディジタルの形態で読み取りかつ解釈しなければならない。これは、アドレスまたは内容によって表されるディジタルデータを読み取り、かつ解釈するのに処理時間を要するだけではなく、アクセス回路が、保管されたデータの構造に従ってメモリを処理することを必然的に必要とする。言い換えると、データがオクテット単位で保管されている場合に、アクセスする回路は、オクテット単位でデータにアクセスし、増分的な形でこれを処理しなければならない。この「スタートアンドストップ」処理は、データにアクセスするのに必要な入出力時間を増やすように働く。当技術分野でよく知られているように、この入出力時間は、通常、任意のコンピュータまたはコンピュータネットワークの処理能力のボトルネックおよび実際の限度を表す。
【0010】
さらに、検索に使用可能な膨大な量の情報を仮定すれば、データ削減動作およびデータ分類動作(たとえば、ある集約形式でデータを要約する能力)が、重要になってきた。しばしば、データ削減機能を素早く実行する能力が、会社にかなりの競争上の利益をもたらすことができる。
【0011】
同様に、ディジタルイメージング技術の改良によって、イメージに対するものなどの2次元マッチングを実行する能力が必要になってきた。たとえば、顔もしくは網膜などの個人の特定のイメージまたは指紋に対してマッチングを実行する能力は、2001年9月11日のテロリスト攻撃に鑑みて、セキュリティに対する労力を向上させるので、法施行に重要になりつつある。イメージマッチングは、自動目標認識の分野で軍にも重要である。
【0012】
最後に、既存の検索デバイスは、現在、変化する適用の要求に応答して素早く簡単に構成されることができない。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】米国特許第3906455号明細書
【特許文献2】米国特許第3729712号明細書
【特許文献3】米国特許第4464718号明細書
【特許文献4】米国特許第5050075号明細書
【特許文献5】米国特許第5140692号明細書
【特許文献6】米国特許第5721898号明細書
【発明の概要】
【発明が解決しようとする課題】
【0014】
したがって、従来技術の上記および他の問題を克服する、改良された情報検索取出のシステムおよび方法の必要がある。
【課題を解決するための手段】
【0015】
親出願である米国特許出願第10/153151号に記載されているように、従来技術の上記および他の問題を解決するために、本発明人は、複数の実施形態で、これらの従来技術の制限に対する洗練された単純な解決方法を提供すると同時に、大容量記憶メモリに保管されたデータに関するアクセス時間を劇的に減らす、フィールドプログラマブルゲートアレイ(FPGA)を使用する連想記憶の方法および装置の構成および開発に成功した。本明細書に記載されているように、米国特許出願第10/153151号の発明は、それぞれが独自の利点を有する複数の実施形態を有する。該米国特許出願第10/153155号の親出願である米国出願特許第09/545472号、現在の米国特許第6711558号は、本発明のこの部分に使用可能なさまざまな種類のデバイス間の選択に関して特定することなく、プログラマブルロジックおよびプログラマブル回路全般の使用を、開示しかつ主張する。米国特許出願第10/153151号では、本発明人は、より具体的に、最良の態様として、さまざまな理由から回路の一部としてのFPGAの使用をより具体的に開示した。とりわけ重要な理由が、速度である。さらに、速度が関わる動作の2つの異なる態様がある。第1の態様は、再構成の速度である。FPGAを現場で素早くプログラムして、テンプレートを使用する検索方法を最適化することができ、このテンプレートが、前もって準備され、接続するバスを介してFPGAに単に通信されることが、当技術分野で知られている。異なる方法を使用して検索することが望まれた場合に、FPGAを、最小のクロックサイクル数で、別の準備されたテンプレートを用いて素早く好都合に再プログラムし、第2の検索を即座に開始することができる。したがって、再構成可能ロジックとしてのFPGAを用いると、他のタイプの再プログラム可能論理デバイスに対して、ある検索から別の検索へのシフトが、非常に簡単で素早くなる。
【0016】
速度の第2の態様は、プログラムされた後に、検索が必要とする時間の長さである。FPGAは、ハードウェアデバイスなので、検索は、ハードウェア処理速度で行われ、これは、たとえばマイクロプロセッサで経験されるソフトウェア処理速度より数桁速い。したがって、FPGAは、しばしばそうであるように速度が考慮事項である場合に、他のソフトウェア実装より望ましい。
【0017】
テンプレートの使用を考慮すると、米国特許出願第10/153151号に、少なくとも複数の「包括的」テンプレートを、事前に準備し、絶対検索、近似検索、またはブール代数論理機能を組み込まれた上位のもしくは高度な検索モードのいずれかでのテキスト検索の実行、あるいはグラフィックス検索モードでの使用に利用可能にすることができることが開示されている。これらを、CPUメモリに保管し、コマンドの際に使用可能にするか、これらの検索の1つを示すソフトウェアキューに応答して自動的にロードすることができる。
【0018】
考慮すべきもう1つの要因が、コストであり、FPGAの最近の価格低下によって、FPGAが、特にPC市場を目標とするハードディスクドライブアクセラレータ(accelerator)の一部として、本願の好ましい実施形態としての実装により適したものになった。さらなるコスト低下が、この実施形態ならびに下で詳細に説明する他の実施形態に関する、FPGAの望ましさを増やす。
【0019】
一般に、米国特許出願第10/153151号の発明は、すべてをハードウェアで、本質的に回線速度で、検索のテンプレートを含め、比較を行うのにFPGAを使用する、大容量記憶媒体に保管されたデータの連続的読取とのデータキーの近似マッチングを介する、データ取出の技術として説明することができる。FPGAを使用することによって、一般に知られている多数の利点および特徴が使用可能にされる。これには、FPGAを「パイプライン」オリエンテーション(pipeline orientation)で、「並列」オリエンテーション(parallel orientation)で、または複雑な検索アルゴリズムを可能にするデータ経路を相互接続する複雑なウェブオーバーレイを組み込んだアレイに配置する能力が含まれる。最も広義の、多分最も強力な実施形態で、データキーを、アナログ信号とすることができ、このデータキーは、大容量記憶媒体を横切って進む時に、通常の読取/書込デバイスによって生成されるアナログ信号とマッチングされる。言い換えると、従来技術で必要なものとして教示された、大容量記憶媒体に保管されたディジタルデータのアナログ表現を読み取るステップだけではなく、比較の前にその信号をディジタルフォーマットに変換するステップが、除去される。さらに、データが編成されかつ保管された構造またはフォーマットを使用して、データを「フレーミング」または比較するという要件はない。アナログ信号について、指定される必要があるものは、「読取」信号の対応する連続して変化する選択された時間期間との比較に使用される、信号の経過時間だけである。従来技術で知られている多数の標準的な相関技術のいずれかを使用することによって、データ「キー」を、データ信号のスライディング「ウィンドウ」と近似的にマッチングして、一致を判定することができる。重要なことに、同一の量のデータを、はるかに素早く走査することができ、検索要求と一致するデータを、はるかに素早く判定することもできる。たとえば、本発明人は、200メガバイトのDNA配列のCPUベース近似検索が、データベースにインデクシングするオフライン処理が既に完了していると仮定して、現在の「ハイエンド」システムで10秒を要する可能性があることを見出した。同一の10秒間で、本発明人は、本発明を使用する近似マッチについて、10ギガバイトのディスクを検索できることを見出した。これは、性能での50:1の改善を表す。さらに、通常のハードディスクドライブにおいて、4つの表面および対応する読取/書込ヘッドがあり、各ヘッドが本発明を備えるならば、これらのすべてを並列に検索することができる。これらの検索は、並列に進行することができるので、総合的な速度向上または改善は、200:1の利点を表す。さらに、追加のハードディスクドライブに、並列にアクセスすることができ、これらをスケーリングして、従来のシステムに対する速度の利点をさらに増やすことができる。
【0020】
適切な相関またはマッチング技術を選択することと、および適切な閾値を設定することによって、検索を、所望の信号と正確に一致するように行うことができ、あるいは、より重要で多分より強力なことに、閾値を下げて、近似一致検索をもたらすことができる。これは、一般に、データベースを走査して、データが探されているものの近似でしかない可能性がある場合でも有効である可能性がある「ヒット」を見つけることができるという点で、より強力な検索モードと考えられる。これによって、改ざんされたデータ、不正確に入力されたデータ、一般にあるカテゴリにのみ対応するデータを見つける検索、ならびに多くの応用例で非常に望ましい他の種類のデータ検索が可能になる。たとえば、DNA配列のライブラリを検索し、残基の所望の配列への近似一致を表すヒットを見つけることが望まれる場合がある。これは、所望の配列に近い配列が見つかり、許せる個数の残基不一致の相違だけでは破棄されないことを保証する。検索を望まれる情報のさらに増える量およびタイプを仮定すると、より複雑な検索技術が必要である。これは、分子生物学の領域で特にそうであり、「遺伝子(またはそれを符号化するタンパク)の生物学的機能を推論する最も強力な方法の1つは、タンパクおよびDNA配列データベースに対する配列類似性検索によるものである」(Garfield、「The Importance of(Sub)sequence Comparison in Molecular Biology」、212〜217ページ。その開示は、参照によって本明細書に組み込まれている)。配列マッチングに関する現在の解決方法は、ソフトウェアまたは再構成可能でないハードウェアでのみ使用可能である。
【0021】
もう1つの応用例では、インターネット検索エンジンによって提供されるインターネット検索が用いられる。そのような検索で、近似マッチングは、検索を失敗させず、または組み合わされた数の特殊化された検索を必要とせずに、綴りの誤った単語、異なる綴りを有する単語、および他の変形に対処することを可能にする。この技術は、検索エンジンが、所与の検索に関するより多数のヒットを提供することを可能にし、検索でより多数の関連するウェブページが見つかり、カタログ化されることを保証する。しかしながら、上で述べたように、この近似マッチングは、それ自体がそれ自体の問題を作るより多数の「ヒット」を作るより大きい網を投げる。
【0022】
本発明の技術のもう1つの可能な応用例は、サイズが膨大であるかアナログ表現として保管されている可能性があるデータベースのアクセスに関するものである。たとえば、我々の社会では、司法手続きを含む多数の裁判所での記録デバイスの実装およびその使用が見られる。最近の歴史で、大統領執務室で行われたテープ録音が、弾劾公聴会で重要性を増した。理解されるように、大統領の任期中に行われるテープ録音は、膨大なデータベースに蓄積される可能性があり、これは、重要である可能性がある特定の単語が話された瞬間を見つけるために、複数の人がそれを聞くことを必要とする可能性がある。本発明の技術を使用すると、データベースが連続的な形で高速で走査される間に、話された単語のアナログ表現をキーとして使用し、一致を探すことができる。したがって、本発明および親発明は、大量のアナログデータベースならびに大量のディジタルデータベースに関する強力な検索ツールを提供する。
【0023】
テキストベース検索は、上で説明したように本発明および親発明によって対処されているが、イメージ、サウンド、および他の表現を含む記憶媒体は、伝統的に、テキストよりも検索が困難であった。本発明および親発明は、そのような内容またはその断片の存在に関する大きいデータベースの検索を可能にする。たとえば、この場合のキーは、探されるイメージを表す画素の行またはクォドラントである。キーの信号の近似マッチングは、キーへの一致または近い一致の識別を可能にすることができる。もう1つのイメージ応用例では、画素または画素のグループの差を検索し、結果として注記することができ、これは、同一の地理的位置のイメージ間の比較が、装置または部隊の移動を示すものとして重要である衛星イメージングに重要である可能性がある。 本発明および親発明は、下でより具体的に注記するように、複数の構成のいずれかで実施することができる。しかし、1つの重要な実施形態は、多分、ハードディスクドライブとシステムバスとの間のインターフェースとして、どのPCにもたやすくインストールされるディスクドライブアクセラレータの形である。このディスクドライブアクセラレータは、標準化されたテンプレートの組を備え、CPUがドライブからデータにアクセスする速度を劇的に高める「プラグアンドプレイ」ソリューションを提供する。これは、PCの大きいインストールベースに販売されるアフターマーケットデバイスまたは改装デバイスになる。また、これは、ドライブケースのエンベロープ内または外部ドライブのエンクロージャ内に、パッケージ化されて新しいディスクドライブの一部として提供されるか、内蔵ドライブ用アダプタとしての追加プラグインPCカードとして提供される。さまざまな種類のデータベースに対するさまざまな種類の検索の追加テンプレートを、望み通りに、CDに符号化することによるなど、アクセラレータの購入と共に、またはダウンロード用にインターネットを介してのいずれかで入手可能にすることができる。
【0024】
本発明は、親出願である米国特許出願第09/545472号および米国特許出願第10/153151号に開示された新規の革新的な技術を拡張し、FPGAなどのプログラマブル論理デバイス(PLD)が、暗号化、暗号解読、圧縮、および伸張などの動作を含むがこれらに制限されない、さまざまな追加の処理動作のどれでも実行する。したがって、本願の技術は、PLDがデータ操作動作を実行するように拡張される。本明細書で使用する用語「操作する」または「操作」は、データに対して実行される圧縮動作、伸張動作、暗号化動作、および暗号解読動作のいずれかまたはすべてと組み合わされた、データに対する検索動作、削減動作、または分類動作の実行、あるいは、同様にデータに対して実行される検索動作、削減動作、分類動作、暗号化動作、および暗号解読動作のいずれかまたはすべてと組み合わされた、または単独でのデータに対する圧縮動作または伸張動作の実行を指す。これらの操作動作を、本明細書で開示される発明的技術に起因して非常に高速で実行できるだけではなく、これらの動作は、本明細書で開示されるFPGAなどのPLDで実施される時に、コンピュータシステムのソフトウェアで動作している可能性があるウィルスまたはマルウェア(malware)による、アクセスまたは読取から暗号解読されたおよび/または伸張されたデータを保護することと、保管されたデータの処理に再構成可能ロジックを使用することとによって、データセキュリティも強化する。本発明のより強力な応用例の中に、クリプトサーチ(crypto−searching)と呼ばれることができる、暗号化されたデータ内の高速検索の実行がある。クリプトサーチを用いると、暗号化されたデータのストリームが処理されて、まず、データストリームが暗号解読され、次に、暗号解読されたデータ内で検索動作が実行される。
【0025】
データ所有者にとってのデータセキュリティの価値は、過小評価することができず、ますます重要性が高まっており、誰がいつどのデータにアクセスできるかを制御する能力は、データセキュリティの中心に位置する。その多数の独自の応用例の中で、本発明は、誰がデータにアクセスするかを制御する際の柔軟性と、許可されたユーザにそのデータへのアクセス(または走査機能を介するそのデータの一部への目標を絞られたアクセス)を与える際の速度を、データ所有者に与える。
【0026】
さらに、本明細書に記載の圧縮および/または伸張を使用することによって、高速でデータを検索する能力を保ちながら、大容量記憶媒体内でより少ない空間を占める形でデータを保管できるようになる。
【0027】
これらの操作動作は、複数のステージを用いて実施される時に、パイプライン化された形で実施されることが好ましい。具体的に言うと、暗号化/暗号解読または圧縮/伸張に専用の1つまたは複数のステージと、データ検索またはデータ削減に専用の1つまたは複数のステージとの組合せは、データ記憶および取出の知的で、柔軟で、高速で、安全な構成技術を相乗的に作る。
【0028】
さらに、本明細書では、コンピュータハードディスクなどの磁気媒体にデータを保管し、その結果、ディスク記憶システムの「シーク」時間によって大きい損害を与えられずに、ハードディスクから大量のデータを読み取れる、新規の独自の技術を開示する。本発明のこの特徴によれば、データは、磁気媒体に位置する複数の不連続の円弧として、好ましくは螺旋状のパターンで磁気媒体に保管される。本明細書に記載のように検索処理および/または追加処理にPLDを使用するシステムが、本明細書に記載されているように区分的螺旋の形で保管されたデータを使用する大容量記憶媒体と組み合わせて使用される時に、この組合せは、相乗的に、さらに高い処理速度をもたらす。
【0029】
さらに、データファイルが、2のべきの合計技術を使用して保管される、メモリにデータファイルを保管する新規の技術を本明細書で開示する。この2のべきの合計技術を使用するデータファイル記憶と、本明細書に記載の再構成可能ロジックプラットフォームのデータ処理機能との組合せも、相乗的に、高められた処理速度をもたらす。
【0030】
本発明の主要な利点および特徴を、上で短く説明したが、本発明のより完全な理解は、図面および次下の好ましい実施形態の説明を参照することによって得ることができる。
【図面の簡単な説明】
【0031】
【図1】一実施形態による情報検索取出システムを示すブロック図である。
【図2】発明システムの接続に関する異なる挿入点を示す、従来の固定ディスクドライブシステムを示す概略図である。
【図3】図1のシステムによって処理される検索照会の変換の一実施形態を示すブロック図である。
【図4】ディジタル領域での正確な一致検索を行うのに使用される、ハードウェア実装の一実施形態を示すブロック図である。
【図5】ディジタル領域での近似一致検索を行うのに使用される、ハードウェア実装の一実施形態を示すブロック図である。
【図6】独立構成での本発明のシステムの実装を示すブロック図である。
【図7】ネットワークを介して共用されるリモート大容量記憶デバイスとしての本発明の実装を示すブロック図である。
【図8】ネットワークに取り付けられた記憶デバイス(NASD、network attached storage device)としての本発明の実装を示すブロック図である。
【図9】磁気記憶媒体からデータを検索しかつ取り出す論理ステップの詳細を示す流れ図である。
【図10】データキーとして使用できるアナログ信号を表すグラフである。
【図11】データキーが存在する磁気記憶媒体からのデータの連続読取を表すアナログ信号を表すグラフである。
【図12】図11の信号にオーバーレイされかつマッチングされた図10の信号を表すグラフである。
【図13】磁気記憶媒体内の目標データが、走査されかつデータキーと比較される時に、継続的に計算される相関関数を表すグラフである。
【図14】データキーが、データキーも含む磁気記憶媒体からの目標データの異なる組の読取からとられた信号と継続的に比較される、相関関数を表すグラフである。
【図15】シーケンスマッチング動作を実行する際に使用される、本発明によって生成されたテーブルの一実施形態を示す図である。
【図16】図15のテーブルの値を計算するために本発明のシステムが使用することのできる、シストリックアレイアーキテクチャの一実施形態を示すブロック図である。
【図17】図1のシステムのクロックサイクルの組合せ部分の間の動作での、図15のシストリックアレイアーキテクチャを示すブロック図である。
【図18】図1のシステムのクロックサイクルのラッチ部分の間の動作での、図15のシストリックアレイアーキテクチャを示すブロック図である。
【図19】特定のシーケンスマッチングの例を表す、図15のテーブルを示す図である。
【図20】図19の例に関する図16のシストリックアレイアーキテクチャのブロック図である。
【図21】図1のシステムのクロックサイクルの組合せ部分の間の、動作中の図20のシストリックアレイアーキテクチャを示すブロック図である。
【図22】図1のシステムのクロックサイクルのラッチ部分の間の、動作中の図20のシストリックアレイアーキテクチャを示すブロック図である。
【図23】イメージマッチング動作を実行する際に本発明のシステムによって使用することのできる、シストリックアレイアーキテクチャの一実施形態を示すブロック図である。
【図24】イメージマッチング動作を実行する際のシストリックアレイアーキテクチャのもう1つの構成を示すブロック図である。
【図25】図23に示されたシストリックアレイの個々のセルの一実施形態を示すブロック図である。
【図26】図23に示されたシストリックアレイの個々のセルのもう1つの実施形態を示すブロック図である。
【図27】データ削減動作を実行するのに本発明のシステムを使用する例を示すブロック図である。
【図28】FPGAのより複雑な構成を示すブロック図である。
【図29】再構成可能論理デバイスで実施されたマルチステージ処理パイプラインの例示的実施形態を示す図である。
【図30】再構成可能論理デバイスで実施されたマルチステージ処理パイプラインの例示的実施形態を示す図である。
【図31】再構成可能論理デバイスで実施された暗号化エンジンを示す図である。
【図32】再構成可能論理デバイスで実施されたマルチステージ処理パイプラインのもう1つの例示的実施形態を示す図である。
【図33】再構成可能論理デバイスで実施できるさまざまな暗号化エンジンの1つを示す図である。
【図34】再構成可能論理デバイスで実施できるさまざまな暗号化エンジンの1つを示す図である。
【図35】再構成可能論理デバイスで実施できるさまざまな暗号化エンジンの1つを示す図である。
【図36】3当事者データウェアハウジングのシナリオを示す図である。
【図37】非セキュアデータウェアハウジング解読のシナリオを示す図である。
【図38】データウェアハウジングシナリオでのセキュアデータ配送のさまざまな実施形態の1つを示す図である。
【図39a】データウェアハウジングシナリオでのセキュアデータ配送のさまざまな実施形態の1つを示す図である。
【図39b】データウェアハウジングシナリオでのセキュアデータ配送のさまざまな実施形態の1つを示す図である。
【図40】再構成可能論理デバイスで圧縮および/または伸張を実施するさまざまな例示的実施形態の1つを示す図である。
【図41】再構成可能論理デバイスで圧縮および/または伸張を実施するさまざまな例示的実施形態の1つを示す図である。
【図42】再構成可能論理デバイスで圧縮および/または伸張を実施するさまざまな例示的実施形態の1つを示す図である。
【図43】再構成可能論理デバイスにロードされるテンプレートの作成の処理フローを示す図である。
【図44a】環状トラックを使用する普通のハードディスクと、それと共に使用されるディスクドライブシステムを示す図である。
【図44b】環状トラックを使用する普通のハードディスクと、それと共に使用されるディスクドライブシステムを示す図である。
【図45】螺旋パターンで配置された別個の環状の円弧を有する新規のプレーナ磁気媒体を示す図である。
【図46】図45の磁気媒体からデータを読み取るためのヘッド位置決めフローを示す図である。
【図47a】2のべきの合計ファイルシステムの実施形態の1つを示す図である。
【図47b】2のべきの合計ファイルシステムの実施形態の1つを示す図である。
【図48】2のべきの合計ファイルシステムのさまざまな動作特性の1つを示す図である。
【図49】2のべきの合計ファイルシステムのさまざまな動作特性の1つを示す図である。
【図50】2のべきの合計ファイルシステムのさまざまな動作特性の1つを示す図である。
【発明を実施するための形態】
【0032】
図1からわかるように、本発明は、独立型のコンピュータまたはコンピュータシステムでたやすく実施される。広義の意味で、本発明は、少なくとも1つの磁気大容量記憶媒体26に結合された少なくとも1つの再構成可能論理デバイス21からなり、その再構成可能論理デバイスは、FPGAである。図1からわかるように、再構成可能論理デバイス21自体に、データシフトレジスタおよび多分マイクロプロセッサを含む複数の機能論理要素が含まれ、あるいは、これらを別々のチップに置くことができ、あるいは、個々の論理要素を、本明細書の他の図の一部に示されているように、パイプラインオリエンテーション(指向)または並列オリエンテーションで構成することができる。どの場合でも、再構成可能ロジックは、その形態および機能を、製造後に現場で大きく変更(すなわち再構成)することができる、すべての論理技術を指す。再構成可能論理デバイスの例に、制限なしにプログラマブル論理デバイス(PLD)が含まれる。PLDは、プログラム可能であるさまざまなチップに関する包括的な用語である。一般に、PLDには3つの物理構造がある。第1は、アルミニウムトレースまたは絶縁体を電気的に溶かすことによって、信号線を分離するか融合する永久ヒューズ(permanent fuse)タイプである。これは、最初のタイプの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)ツールを使用して開発され、これらのツールのすべてが、当業者に知られているように、現在は市販されている。
【0033】
再構成可能論理デバイス21は、システムバスまたは入出力バス34とインターフェースし、一構成では、存在し得るすべてのディスクキャッシュ30ともインターフェースする。再構成可能論理デバイス21は、CPU32またはネットワークインターフェース36から、検索要求または検索照会を受け取りかつ処理する。さらに、このデバイスは、ディスクキャッシュ30および/またはCPU32のいずれかまたは両方に(バス34によって)、照会の結果を渡すのを助けることができる。
【0034】
大容量記憶媒体26は、以下では目標データと呼称する大量の情報を保管する媒体を提供する。用語「大容量記憶媒体」は、大量のデータを保管するのに使用され、通常はコンピュータまたはコンピュータネットワークでの使用のために構成される、すべてのデバイスを意味するものと理解されなければならない。例には、ハードディスクドライブ、光学記憶媒体、または単一のディスク表面などのサブユニットが制限なしに含まれ、これらのシステムは、回転式、線形、直列、並列、またはそのそれぞれのさまざまな組合せとすることができる。たとえば、ハードディスクドライブユニットのラックを、並列に接続することができ、この並列出力を、変換器レベルで1つまたは複数の再構成可能論理デバイス21に供給することができる。同様に、磁気テープドライブのバンクを使用することができ、その直列出力それぞれを、1つまたは複数の再構成可能論理デバイス21に並列に供給することができる。媒体に保管されるデータは、アナログ形式またはディジタル形式とすることができる。たとえば、データを、音声録音とすることができる。したがって、本発明は、スケーラブルであり、並列大容量記憶媒体の数を増やすことによって、保管されるデータの量の増加を可能にすると同時に、並列再構成可能論理デバイスの数を増やすか、再構成可能論理デバイスを複製することによって、性能が維持される。
【0035】
従来技術では、図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でデータを提示することができる。
【0036】
上で説明したように、本発明を使用して、目標データに対してさまざまな異なるタイプのマッチング動作またはデータ削減動作を実行することができる。これらの動作それぞれを、下で詳細に説明する。しかし、すべての動作について、目標データが、十分なフォーマッティング情報を付加されて磁気大容量記憶媒体26に書き込まれ、その結果、目標データの論理構造を抽出できるようになっていると仮定する。正確ストリングマッチングおよび近似ストリングマッチングを、図2〜図5を参照して説明する。しかし、本発明が、単一のストリングマッチに制限されず、複合照会マッチング(たとえば、その間にある論理関係を有する複数のテキストストリングを用いる照会、またはブール代数論理を使用する照会)に同等に適することを理解されたい。図2の点Aに示されているように、再構成可能論理デバイス21を用いてアナログ領域で正確一致を実行し、マッチングが、アナログ比較器および相関技術を使用して行われる時に、正確一致は、データキーと、大容量記憶媒体26上のアナログ目標データのマッチングに関して十分に高い閾値をセットすることに対応する。アナログ領域での近似マッチングは、適当な(より低い)閾値をセットすることに対応する。近似マッチの成功は、再構成可能論理デバイス21でセットされる相関値によって、または走査された目標データの対応するビットと等しいデータキー内のビット数などの、再構成可能論理デバイス21に保管された複数のマッチング性能メトリックスの1つを使用することによって、判定することができる。
【0037】
具体的に言うと、普通の固定ディスクドライブが、複数の回転するディスクを、各ディスクにアクセスする複数の変換器と共に有する場合がある。これらの変換器それぞれは、通常、増幅器などのアナログ信号回路18に供給する出力を有する。これが、点Aで表されている。図2にさらに示されているように、通常、アナログ回路の出力は、1つのそのような出力を処理する単一のディジタルデコーダ23に選択的に供給される。これが、点Bで表されている。このディジタル出力は、通常、誤り訂正回路(ECC)25を介して送られ、その出力Cで、バス34またはディスクキャッシュ30に渡される。本発明の目的のために、複数のディジタルデコーダおよびECCを設けることによって、目標データの複数の並列経路を設けることが望ましい場合がある。ディジタル領域での正確マッチングは、点Bまたは点Cで実行することができ、これは、それぞれ、誤り訂正前のディジタル信号および誤り訂正後のディジタル信号に対応する。
【0038】
結果を、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に対する適当な合成コマンドが生成される。
【0039】
図3に示された経路は、広範囲の潜在的な検索照会を扱うことができるが、検索プロセスに導入される待ち時間が長すぎる可能性があるという短所を有する。検索照会が図3に表された変換を通って流れるのに必要な時間が、検索を実行するのに必要な時間と同程度の場合に、検索自体ではなく、コンパイル処理が性能ボトルネックになる可能性がある。この問題には、広範囲のありそうな検索照会について、ほとんどの一般的な事例を扱う事前コンパイルされたハードウェアテンプレートの組を維持することによって対処することができる。これらのテンプレートは、CPU32メモリ内で提供され、かつ維持されるか、CDなどのオフライン記憶媒体を介して入手可能にされるか、大容量記憶媒体26自体に保存されることができる。さらに、そのようなテンプレートを、ネットワークまたはインターネットを介するなど、CPU32に通信することができる。
【0040】
そのようなハードウェアテンプレート29の一実施形態を、図4に示す。具体的に言うと、データシフトレジスタ27に、1つまたは複数のディスク19のヘッド(図示せず)からの目標データストリーミングが含まれる。比較レジスタに、ユーザがマッチングを望むデータキーが保管される。図示の例では、データキーは「Bagdad」である。細粒度比較(fine−grained comparison)論理デバイス31が、データシフトレジスタ27の要素と比較レジスタ35の要素の間の要素ごとの比較を実行する。細粒度比較論理デバイス31は、大文字小文字を区別するまたはこれを区別しないのいずれかになるように構成することができる。単語レベル比較論理37が、単語レベルの一致が発生したか否かを判定する責任を負う。複合検索照会の場合に、単語レベル一致信号が、その評価のために制御マイクロプロセッサ22に送られる。複合検索照会に対する一致が、その後、さらなる処理のためにCPU32に報告される。
【0041】
近似マッチングを実行するハードウェアテンプレートの一実施形態を、図5に示す。具体的に言うと、データシフトレジスタ27’に、1つまたは複数のディスク19’のヘッド(図示せず)からの目標データストリーミングが含まれる。比較レジスタ35’に、ユーザがマッチングを望むデータキーが保管される。図示の例では、データキーはやはり「Bagdad」である。細粒度比較論理31’が、データシフトレジスタ27’の要素と比較レジスタ21’の要素の間の要素ごとの比較を実行する。やはり、細粒度比較論理デバイス31’は、大文字小文字を区別するまたはこれを区別しないのいずれかになるように構成することができる。テンプレート29’が、データシフトレジスタ27’内の要素の、細粒度比較論理デバイス21’の個々のセルへの代替ルーティングを提供する。具体的に言うと、細粒度比較論理デバイス31’の各セルは、データシフトレジスタ27’内の複数の位置とマッチングすることができ、比較レジスタ21’は、一般に使用される綴り「Baghdad」ならびに代替の「Bagdad」の両方に、共用ハードウェアでマッチングすることができる。単語レベル比較論理37’が、単語レベルで一致が発生したか否かを判定する責任を負う。複合検索照会の場合に、単語レベル一致信号が、その評価のために制御マイクロプロセッサ22に送られる。複合検索照会に対する一致が、その後、さらなる処理のためにCPU32に報告される。
【0042】
ハードウェアテンプレートの実際の構成は、もちろん、検索照会タイプに伴って変化する。ハードウェアテンプレートで少量の柔軟性(たとえば、比較レジスタに保管された目標データ、データシフトレジスタ要素および比較レジスタ要素から細粒度比較論理デバイスのセルへの信号のルーティング、および単語レベル比較論理の幅)を提供することによって、そのようなテンプレートが、広範囲の単語マッチングをサポートすることができる。その結果、これによって、図3で表される検索照会変換全体を行わなければならない頻度が減り、これによって、検索の速度が向上する。
【0043】
「近似」一致検索で識別されるデータ項目に、「正確」検索から生じる「正確」ヒットが含まれることに留意されたい。わかりやすくするために、単語「一致」または「マッチ」を使用する時に、近似検索または正確検索のいずれかを介して見つかった検索結果またはデータ結果が含まれることを理解されたい。句「近似一致」または「近似」だけが使用される時に、これが、上で近似検索として説明した2つの検索あるいは、検索照会または具体的にはデータキーに疎に関係する目標データを収集するの十分に大きい網を有する、それに関する限りではすべての他の種類の「ファジイ」検索のいずれかである可能性があることを理解されたい。もちろん、正確一致は、まさにそのとおりのものであり、高い度合の相関を有する検索照会の正確一致以外の結果を含まない。
【0044】
図1には、本発明をネットワーク38に相互接続するネットワークインターフェース36も示されており、このネットワーク38は、LAN、WAN、インターネットなどとすることができ、このネットワークに、他のコンピュータシステム40を接続することができる。この構成を用いると、他のコンピュータシステム40が、本発明21を介して大容量記憶媒体26に保管されたデータにも便利にアクセスすることができる。より具体的な例を、下で示す。さらに、図1には、要素20〜24自体が、一緒にパッケージ化され、ディスクドライブアクセラレータを形成することも示されており、このディスクドライブアクセラレータを、それ自体のディスクドライブを有する既存PCを、本発明の利益に適合させる改装デバイスとして別々に提供することができる。その代わりに、ディスクドライブアクセラレータを、ハードドライブに対するオプションとして提供し、外部ドライブと同一のエンクロージャにパッケージ化するか、内蔵ドライブ用のコネクタインターフェースを有する別々のPC基板として提供することもできる。さらに、その代わりに、ディスクドライブアクセラレータを、消費者、会社、または他のエンドユーザが注文するPCの一部として、PC供給業者がオプションとして提供することができる。もう1つの実施形態は、より大きい磁気大容量記憶媒体の一部として、または高められたデータ処理能力を有利に使用できるアプリケーションまたは既存設備用のアップグレードまたは改装キットとして提供することとすることができる。
【0045】
図6〜図8からわかるように、本発明を、さまざまなコンピュータ構成およびネットワーク構成で使用することができる。図6からわかるように、本発明を、本明細書に開示された本発明を有する大容量記憶媒体47にアクセスする、システムバス45に接続されたCPU43を含む独立型コンピュータシステム41の一部として提供することができる。
【0046】
図7からわかるように、本発明に結合された大容量記憶媒体51自体を、ネットワーク52に直接に接続することができ、このネットワーク52を介して、複数の独立のコンピュータまたはCPU54が、大容量記憶媒体51にアクセスすることができる。大容量記憶媒体51自体は、RAIDを含むハードディスクドライブのバンク、ディスクファーム、または他の超並列メモリデバイス構成からなるものとして、膨大な量のデータに対するアクセスおよび近似マッチング機能を、大幅に減らされたアクセス時間で提供することができる。
【0047】
図8からわかるように、本発明に結合された大容量記憶媒体56を、NASD(network attached storage device)としてネットワーク58に接続することができ、このネットワーク58を介して、複数の独立型コンピュータ60が、これにアクセスすることができる。そのような構成では、例示のみのためにディスク57として表された各大容量記憶媒体が、ネットワークに接続されたすべてのプロセッサからアクセス可能であることが企図されている。そのような構成の1つに、一意のIPアドレスまたは他のネットワークアドレスを、各大容量記憶媒体に割り当てることが含まれる。
【0048】
図1および図6〜図8に示された構成によって例示される構成は、本発明が互換であり、非常に有用であるさまざまなコンピュータ構成およびネットワーク構成の例を表すにすぎない。他の構成が、当業者に明白であり、本発明は、本明細書に示された例を介して制限されることを意図されておらず、これらの例は、そうではなく、本発明の多用途性を例示することを意図されたものである。
【0049】
図9からわかるように、正確マッチングまたは近似マッチングで使用される本発明の方法を、その代わりに、アナログデータ領域とディジタルデータ領域のどちらが検索されているかに関して説明する。しかし、この方法の開始から始めて、CPUは、ある機能を実行し、その間に、CPUは、大容量記憶媒体に保管された目標データにアクセスすることを選択することができる。通常、CPUは、検索照会アプリケーション62を実行し、この検索照会アプリケーション62は、DNA検索、インターネット検索、アナログ音声検索、指紋検索、イメージ検索、または、その間に目標データとの正確マッチまたは近似マッチが望まれる他のそのような検索を表すものとすることができる。検索照会に、ディスク制御ユニット28および再構成可能論理デバイス20が大容量記憶媒体26からデータキーを正しく得るために有しなければならない、さまざまなパラメータを指定するディレクティブ(directive)が含まれる。パラメータの例に、記憶装置を走査する開始位置、その後に(一致がない場合に)走査を停止する最終位置、走査に使用されるデータキー、マッチングの近似性質の指定、および一致が発生した時に返さなければならない情報が含まれるが、これらに制限はされない。返されることのできる情報の種類に、一致が見つかった情報の位置、またはマッチした情報を含むセクタ、レコード、レコードの部分、もしくは他のデータ集合が含まれる。データ集合は、マッチの際に返されるデータを、境界データ指定子の間になるように指定し、マッチしたデータが境界フィールド内に含まれるようにすることができるという点で、動的に指定することもできる。図5の例で示したように、テキストのストリング内で単語「bagdad」を探すことによって、単語「Baghdad」の、誤綴りに起因する近似一致を見つけ、囲む文によって画定されたデータフィールドを返すことができる。もう1つの照会パラメータは、返される情報を、システム、入出力バス34、またはディスクキャッシュ30のどれに送らなければならないかを示す。
【0050】
図9に戻って、検索照会は、通常、1つまたは複数のオペレーティングシステムユーティリティの実行をもたらす。高水準ユーティリティコマンドの例として、UNIX(登録商標)オペレーティングシステムについて、これを、glimpse、find、grep、aproposなどの変更されたバージョンとすることができる。これらの機能は、CPUに、検索、近似検索などのコマンド66を再構成可能論理デバイス21に送らせ、これらのコマンドの関連部分は、たとえば大容量記憶媒体から目標データを正しく読み取るのに後に必要になる大容量記憶媒体位置決めアクティビティ69を開始するために、ディスクコントローラ28にも送られる。
【0051】
この時点で、本発明の特定の実施形態で実施されることが望まれる特定の方法に応じて、アナログまたはディジタルのデータキーを決定する必要がある。このデータキーは、テキスト検索について正確または近似のいずれかとすることができるが、検索されるデータに対応する。アナログデータキーについて、これは、大容量記憶媒体などに事前に保管されるか、専用回路を使用して開発されるか、生成される必要があるかのいずれかとすることができる。アナログデータキーを事前に保管しなければならない場合に、事前に保管されたデータキー送信ステップ68は、マイクロプロセッサ22(図1参照)によって実行され、このマイクロプロセッサ22は、ステップ70に示されているように、データキーを、ディジタルのサンプリングされたフォーマットで再構成可能論理デバイス20に送る。その代わりに、アナログデータキーを事前に保管しない場合に、これを、複数の機構の1つを使用して開発することができ、これらの機構のうちの2つを図9に示す。1つの機構では、マイクロプロセッサ22が、ステップ72でデータキーを磁気大容量記憶媒体に書き込み、次に、ステップ74で、データキーのアナログ信号表現を生成するためにデータキーを読み取る。もう1つの機構では、ステップ71で、CPUから受け取ったデータキーのディジタルバーションを、適切なディジタル−アナログ回路を使用してアナログ信号表現に変換することができ、このアナログ信号表現が、適切にサンプリングされる。データキーは、次に、ステップ70で、そのディジタルサンプルとして保管される。ディジタルデータキーが使用される場合に、マイクロプロセッサ22が、ステップ76で、再構成可能論理デバイスの比較レジスタに、そのディジタルデータキーを保管することだけが必要である。再構成可能論理デバイスごとに含まれることが望まれる特定の構造に応じて、データキーが、これらの構成要素のいずれかまたはすべてに存在することができ、データキーの適切なディジタルフォーマットを、比較および相関のために再構成可能論理デバイス21に最終的に与えることが、単に好ましいことを理解されたい。
【0052】
次に、大容量記憶媒体26が、79でその開始位置に達した後に、その大容量記憶媒体に保管された目標データが、ステップ78で継続的に読み取られて、目標データを表す継続的ストリーム信号が生成される。アナログデータキーが使用された場合には、このアナログデータキーを、ステップ80で、大容量記憶媒体26からの目標データのアナログ読みと相関させることができる。
【0053】
本発明では、多数の従来技術の比較器および相関回路のどれであっても使用できることが企図されているが、目的について、本発明人は、アナログ信号およびデータキーのディジタルサンプリングが、下で説明するように、そのような比較の実行および相関係数の計算の実行に非常に有用である可能性があることを提案する。大容量記憶媒体26から目標データを読み取ることから生成されるこのアナログ信号は、従来技術のデバイスによって、アナログデータまたはディジタルデータのいずれかの読み取りから便利に生成することができ、ディジタルデータキーを、大容量記憶媒体26に保管されたディジタル目標データとのマッチングに使用する必要がないことに留意されたい。その代わりに、相関ステップ82を、ディジタルデータキーを、大容量記憶媒体26から読み取られたディジタル目標データのストリームとマッチングすることによって実行することができる。データキーが、近似情報を含めることを反映することができ、あるいは、再構成可能論理デバイス21を、これを可能にするためにプログラムできることに留意されたい。したがって、大容量記憶媒体から読み取られた目標データとの相関によって、近似マッチング機能が可能になる。
【0054】
図9を参照すると、判断論理84は、次に、目標データの一部が、データキーに近時一致するか否かに関する知的判断を行う。一致が見つかった場合に、目標データをステップ86で処理し、検索照会によって要求されたキーデータを、ディスクキャッシュ30に送るか、システムバス34に直接に送るか、他の形でバッファリングするか、CPU32、ネットワークインターフェース36、または図1および図6〜図8に示された他で使用可能にする。「do」ループに似たものを示す論理ステップ88が、大容量記憶媒体26からの目標データの継続的読み取りに戻るために含まれることが好ましい。しかし、これが、継続的処理であり、目標データが、個別化されたチャンク、フレーム、バイト、またはデータの他の所定部分ではなく、ストリームとして大容量記憶媒体26から処理されることを理解されたい。これは除外されてはいないが、本発明は、大容量記憶媒体26からの目標データの読み取りにためらいがなくなるように、連続的に変化する目標データ読み取り信号に対して、本質的にデータキーを「スライド」させることができるようになることが好ましい。読み取りを、マルチビットデータ構造の先頭または末尾に同期化するという要件はなく、目標データが大容量記憶媒体26から読み取られる際に、目標データを「オンザフライで」継続的に比較する時に、他の中間ステップを実行する必要もない。最終的に、データアクセスは、ステップ90で完了し、この処理が完了する。
【0055】
本発明人は、アナログ領域で本発明を予備的にテストし、生成された予備データに、その実施可能性および有効性を実証させた。具体的に言うと、図10は、読取/書込ヘッドが、10ビットディジタルデータキーを保管された磁気媒体を読み取る時に、読取/書込ヘッドからの測定されたアナログ信号出力のグラフ表現である。このグラフに示されているように、アナログ信号に、当技術分野で知られているように、目標データがハードディスクなどの磁気媒体から読み取られる時に、読取/書込ヘッドによって生成される真のアナログ信号を表すピークがある。図10に示されたスケールは、縦軸ではボルト、横軸では10分の1マイクロ秒である。図11からわかるように、目標データが、磁気媒体のテスト部分に保管された擬似ランダムバイナリシーケンスから読み取られる時に、やはり読み取り/書込ヘッドによってアナログ信号が生成される。この読み取り信号は、このレベルで検査される時に、理想的な方形波出力を提供しない。
【0056】
図12は、8ビットデータキーの約2ビットと、ディスクまたは磁気媒体の異なる位置で符号化された擬似ランダムバイナリシーケンスに見られる目標データの対応する2ビットとの間のオーバーラップをより具体的に示すために、水平スケールを広げられたグラフ表現である。
【0057】
図13は、ハードディスクからの目標データの継続的な読み取りとデータキーとの間で比較が行われる時に、継続的に計算される相関係数のグラフ表現である。この相関係数は、高い速度でアナログ信号をサンプリングし、従来技術の信号処理相関技術を使用することによって計算された。そのような例の1つが、その開示が参照によって本明細書に組み込まれている、Hoinville、Indeck、およびMuller著、「Spatial Noise Phenomena of Longitudinal Magnetic Recording Media」、IEEE Transactions on Magnetics、Volume 28、no.6、1992年11月に見られる。読み取り、比較、および係数計算の方法および装置の従来の例が、その開示が参照によって本明細書に組み込まれる、米国特許第5740244号など、共同発明人の以前の特許の1つのうちの1つまたは複数にある。前述は、本発明を実施するのに使用できるデバイスおよび方法の例を表すが、本明細書の他所で述べるように、他の類似するデバイスおよび方法を、同様に使用することができ、本発明の目的を実現することができる。
【0058】
図13からわかるように、325のラベルを付けられた点の近くで、1ボルトに達する明確なピークが、約200マイクロ秒で注目され、データキーと目標データとの間の非常に近い一致を示している。図10は、本発明の強力な態様と思われる近似マッチングの可能性も示すものである。図13をよく調べると、相関係数に現れる他のより低いピークがあることが注目される。したがって、0.4ボルトの閾値が、判断点として確立された場合に、1に達する発生するピークだけが、一致または「ヒット」を示すのではなく、別の5つのピークも、「ヒット」を示す。この形で、所望の係数値を、望み通りに調整するか事前に決定して、特定の検索パラメータに合わせることができる。たとえば、テキストの長い本体で特定の単語を検索する時に、より低い相関値は、その単語が存在するが綴りが誤っていることを示すことができる。
【0059】
図14に、同一の8ビットデータキーの間であるが、異なる目標データをセットされた状態の相関係数の継続的計算を示す。やはり、単一の一致が、約200マイクロ秒で見つかり、このピークは1ボルトに達する。より低い閾値が確立されたならば、目標データ内で追加のヒットが見つかることにも留意されたい。
【0060】
前に述べたように、本発明は、シーケンスマッチング検索を実行することもできる。図15に関して、テーブル38は、そのような検索を実行するために再構成可能論理デバイス20によって生成されたものである。具体的に言うと、p1p2p3p4は、データキー、p、または検索される所望のシーケンスを表す。図15のデータキーは、4つの文字だけを示すが、これは、例示のためのみであり、シーケンス検索の通常のデータキーサイズが、500〜1000個程度またはそれより多いことを理解されたい。記号t1、t2、t3…t9は、大容量記憶媒体26からストリーミングされる目標データ、tを表す。やはり、そのようなデータのうちの9文字だけが示されているが、大容量記憶媒体26の通常のサイズ、したがってそれからの目標データストリーミングの通常のサイズが、通常は、数十億文字の範囲になる可能性があることを理解されたい。記号di,jは、データキー内の位置iおよび目標データ内の位置jでの編集距離(edit distance)を表す。そうである必要はないが、データキーが、目標データに対してより短いと仮定する。図15に示されていない追加の行(d0,j)および列(di,0)の知られている(定数)値の組がある場合がある。
【0061】
di,jの値は、di,jが、(1)pi、(2)tj、(3)di−1,j−1、(4)di−1,j、および(5)di,j−1の関数にすぎないという事実を使用して、再構成可能論理デバイス20によって計算される。これは、図15で、位置d3,6に関して、d2,5、d2,6、およびd3,5、ならびにp3およびt6の値に対する依存性を示すことによって示されている。一実施形態で、di,jの値は、次のように計算される。
di,j=max[di,j−1+A;di−1,j+A;di−1,j−1+Bi,j]
ここで、Aは定数であり、Bi,jは、piおよびtjのタブラ関数(tabular function)である。しかし、この関数の形は、非常に任意とすることができる。生物学の文献では、Bを評価関数(scoring function)と呼ぶ。人気のあるデータベース検索プログラムBLASTでは、スコアが、pi=tjであるか否かの関数にすぎない。アミノ酸配列に関するものなど、他の文脈では、Bの値が、pおよびtの特定の文字に応じる。
【0062】
図16に、図15のテーブル38の値を計算するために、本発明が使用するシストリックアレイアーキテクチャの一実施形態を示す。データキーの文字は、データレジスタ53の列に保管され、大容量記憶媒体26からの目標データストリーミングの文字は、データシフトレジスタ55に保管される。di,jの値は、好ましくはそれ自体がFPGAであるシストリックセル59に保管される。
【0063】
図16のアレイの動作を、これから、図17および図18を使用して説明する。図17からわかるように、システムのクロックサイクルの最初(すなわち組合せ)部分で、4つの下線付きの値が計算される。たとえば、新しい値d3,6は、前に図15で示したものと同一の5つの値に応じることが示されている。図18からわかるように、クロックサイクルの第2の(すなわちラッチ)部分で、di,jおよびtjのすべての文字が、右に1位置だけシフトされる。比較器61が、dアレイの各対角線セルに位置し、閾値を超えた時を判定する。
【0064】
シーケンスマッチング動作を、これから、図19〜図22を参照して、次の例に関して説明する。
キー=axbacs
目標データ=pqraxabcstvq
A=1
i=jの場合にB=2
i=jの場合にB=−2
これらの変数から、図19のテーブルが、再構成可能論理デバイス20によって生成される。事前に決定された閾値「8」を仮定すると、再構成可能論理デバイス20は、d6,9で一致を認識する。
【0065】
この例の図16〜図18に存在する値を表す合成アレイの部分を、それぞれ図20〜図22に示す。一致は、ある行の値が所定の閾値を超える時に、再構成可能論理デバイス20によって識別される。閾値は、データキーと大容量記憶媒体26に保管された目標データとの間で望まれる類似性の所望の度合に基づいてセットされる。たとえば、正確一致検索の場合に、データキーと目標キーが同一でなければならない。一致は、CPU32によって、図19のテーブルを用いるトレースバック動作を介して検査される。具体的に言うと、テーブルの「スナップショット」が、所定の時間間隔にCPU32に送られて、一致が識別された後のトレースバック動作が支援される。間隔は、CPU32に重荷を与えないようにあまり頻繁でないが、テーブルの再作成に長い時間と大量の処理を必要としない程度に頻繁であることが好ましい。CPU32がトレースバック動作を実行できるようにするために、テーブル内の閾値を超えた項目を囲む区域でdアレイを再作成できなければならない。この要件をサポートするために、シストリックアレイが、dの完全な列の値(「スナップショット」)を周期的にCPU32に出力することができる。これによって、CPU32が、スナップショットのインデックスjより大きいdの必要な部分を再作成できるようになる。
【0066】
多くのマッチングアプリケーションが、イメージなど、2次元エンティティを表すデータを操作する。図23に、2次元データに対するマッチングを可能にする、再構成可能論理デバイス20、好ましくはFPGAのシストリックアレイ120を示す。個々のセル122それぞれが、ユーザがマッチングを望むイメージの1画素(イメージキー)と、検索されるイメージの1画素(目標イメージ)を保持する。十分に大きいサイズのイメージについて、それが1つの再構成可能論理チップ124におさまらない可能性が高い。その場合に、チップへのセルの候補区分が、破線によって示されており、セルの長方形サブアレイが、各チップ124に置かれる。チップ対チップ接続の個数は、正方形のサブアレイ(すなわち、縦次元と横次元で同一個数のセル)を使用することによって、最小にすることができる。他のより複雑な構成を、下で示す。
【0067】
アレイ120への目標イメージのローディングを、図24を使用して説明する。各セルを接続する水平リンク134を介してアレイの最上行130への、全般的に点Aとして示されている、大容量記憶媒体26からストリーミングされる各目標イメージの個々の行。そのような構成を用いると、最上行130が、データシフトレジスタとして動作する。行130全体がロードされた時に、その行が、各列に示された垂直リンク136を介して、次の行132にシフトダウンされる。イメージ全体がアレイにロードされたならば、比較動作が実行され、これは、離接セル間の任意の通信を必要とする可能性がある。これは、図23に示された水平両方向リンク126と垂直両方向リンク128の両方によってサポートされる。
【0068】
図を単純にするために、個々の両方向リンク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の全体を有することができることを理解されたい。
【0069】
アレイ120の個々のセルの一実施形態を、図25に示す。セル140に、画素レジスタ142、LOADTi,jが含まれ、この画素レジスタ142に、アレイに現在ロードされている目標イメージの画素が含まれる。レジスタ144、CMPTi,jには、完全な目標イメージがロードされた後に、画素レジスタ142のコピーが含まれる。この構成は、ロードされた最後の目標イメージを、次にロードされる目標イメージと並列に比較することを可能にし、本質的に、ロード、比較、ロード、比較などのパイプライン化されたシーケンスを確立する。レジスタ146、CMPPi,jには、比較に使用されるイメージキーの画素が含まれ、比較論理148が、レジスタ144とレジスタ146との間のマッチング動作を実行する。比較論理148に、それぞれ全般的に150、152、154、および156として示された、左右上下の隣接セルと通信して、複雑なマッチング機能を可能にする能力を含めることができる。
【0070】
図23のアレイ120の個々のセルのもう1つの実施形態を、図26に示す。図25のセル140が、イメージキーと目標イメージの同時ロードをサポートするように増補されている。具体的に言うと、セル160には、セル140と同一の構成要素が含まれるが、新しいレジスタ162、LOADPi,jが追加され、このレジスタ162は、イメージキーのロードに使用され、レジスタ142と同一の形で動作する。そのような構成を用いると、大容量記憶媒体26の1つのディスク読取ヘッドが、イメージキーの上に位置決めされ、第2のディスク読取ヘッドが、目標イメージの上に位置決めされている場合に、これらの両方が、ディスクから並列に流し、アレイ160に同時にロードされることができる。
【0071】
比較論理ブロック内で実行される動作は、目標イメージとイメージキーとの間に大きい相違があるか否かに関する判断を提供する任意の機能とすることができる。例に、参照によって本明細書に組み込まれる、John C.Russ著「The Image Processing Handbook」、3rd edition、CRC Press、1999年に記載の、イメージ全体またはイメージのサブ領域にまたがる相互相関が含まれる。
【0072】
本発明は、データ削減検索を実行することもできる。そのような検索では、本明細書で前に説明したマッチングが用いられるが、ある集約形式でマッチングされたデータを要約することが含まれる。たとえば、金融産業で、株の最低価格、最高価格、および最新価格を識別するために、金融情報を検索したい場合がある。そのような集約データ削減を計算する再構成可能論理デバイスを、図27に100として示す。この図では、データシフトレジスタ102が、株価情報を含む大容量記憶媒体から目標データを読み取る。図示の例では、3つのデータ削減検索、すなわち、最低価格、最高価格、および最新価格の計算が示されている。目標データが、データシフトレジスタ102に供給された時に、判断論理が、所望のデータ削減動作を計算する。具体的に言うと、株価が、最低価格比較器110および最高価格比較器112に供給され、それらに保管される。株価が比較器110に供給されるたびに、比較器110は、最後に保管された株価を現在供給されている株価と比較し、低い方がデータレジスタ104に保管される。同様に、株価が比較器112に供給されるたびに、比較器112は、最後に保管された株価を現在供給されている株価と比較し、高い方がデータレジスタ106に保管される。最新価格を計算するために、株価が、データレジスタ108に供給され、現在時刻が、比較器114に供給される。時刻値が比較器114に供給されるたびに、比較器114は、最後に保管された時刻を現在時刻と比較し、新しい方がデータレジスタ116に保管される。その後、計算が行われている所望の時間間隔の終りに、最新価格が判定される。
【0073】
データ削減検索を、図27に示された非常に単純な金融の例に関して説明したが、本発明が、そのような機能性を必要とするさまざまな複雑さのさまざまな異なる応用例のデータ削減検索を実行できることを理解されたい。再構成可能論理デバイスは、単に、必要な機能を実行するハードウェアおよび/またはソフトウェアを用いて構成される必要がある。
【0074】
ディスク回転速度でデータ削減検索を実行する能力は、過小評価することができない。情報の最も貴重な態様の1つが、その適時性である。人々は、物事がインターネット速度であることを期待するようになりつつある。集約データ削減を素早く計算できる会社は、明らかに、それができない会社に対する競争上の強みを有する。
【0075】
さらに、検索および削減以外のデータ処理動作も、再構成可能論理デバイス21で実施することができる。上で述べたように、これらの動作を、本明細書ではデータ操作動作と称する。PLD20で実行できるデータ操作動作またはそのサブ動作の例に、暗号化動作、暗号解読動作、圧縮動作、および伸張動作が含まれる。好ましいPLD20は、FPGAであり、より好ましくはXilinx社のFPGAである。さらに、これらの追加動作のどれであっても、事実上すべての形で検索動作および/または削減動作と組み合わせて、追加の速度、柔軟性、およびセキュリティを提供するマルチステージデータ処理パイプラインを形成することができる。各動作の複雑さは、事実上無制限であり、再構成可能論理デバイス21のリソースおよび本発明を実践する人の性能要件のみによって制限される。各処理動作を、必要に応じて、単一のステージまたは複数のステージで実施することができる。
【0076】
図29に、図1に示されたシステムの再構成可能論理デバイス21内で実施されたマルチステージ処理パイプライン200を示す。パイプライン200内の少なくとも1つのステージが、PLD上で実施される。パイプライン200の各ステージ202は、それが受け取るデータを、その所期の機能性(たとえば、圧縮、伸張、暗号化、暗号解読)に従って処理し、その後、処理されたデータを、パイプラインの次のステージ、前のステージ、または制御プロセッサ204のいずれかに渡すように構成されている。たとえば、パイプライン200の第1のステージ202は、大容量記憶媒体26からのデータストリーミングを操作し、その機能性に従ってそのデータを処理する。ステージ1によって処理されたデータは、その後、さらなる処理のためにステージ2に渡され、以下同様にしてステージNに達する。データが、すべての適切なステージ202を通過した後に、その処理の結果を、システムバス34を介して、制御プロセッサ204および/またはコンピュータに転送することができる。
【0077】
図29のこの例示的なパイプライン200を複製し、その結果、別々のパイプライン200が、大容量記憶媒体26のディスクシステムの各ヘッドに関連するようにすることができる。そのような構成によって、複数のデータストリームがディスクから読み出される時に、これら複数のデータストリームに対する並列処理動作の実行に関連する性能が改善される。システム内に他の性能ボトルネックがない場合に、スループットが、使用されるパイプライン200の数に伴って線形に向上すると期待される。
【0078】
各ステージを、必ずしも再構成可能論理デバイス21内のPLD20で実施する必要がないことに留意されたい。たとえば、一部のステージを、PLD20からアクセス可能なプロセッサ上のソフトウェア(図示せず)または専用ハードウェア(図示せず)で実施することができる。各ステージの正確な構成、およびPLD20上、ソフトウェア、またはASICなどの専用ハードウェアでの各ステージの実施の判断は、各実践する人の計画に適用可能な、関連するコスト制約、性能制約、およびリソース制約に応じる。しかし、完全にFPGAなどのPLD20内でのパイプライン化を使用することによって、処理スループットを大きく高めることができる。したがって、フィードバック経路を有しない平衡のとれたパイプライン(すなわち、各ステージが同一の実行時間を有するパイプライン)について、データスループットの向上は、ステージ数に正比例する。上で述べたように、他のボトルネックがないと仮定すると、Nステージがある場合に、N倍のスループット向上を期待することができる。しかし、マルチステージパイプラインが、ステージの間のフィードバックを使用することもでき、これは、実装コストを減らすか効率を高めるために、ある動作(たとえば、一部の暗号化動作)に望ましい可能性があることに留意されたい。
【0079】
図30に、最初の4つのステージ202に暗号解読エンジン210が含まれる、例示的なマルチステージパイプライン200を示す。この例の暗号解読エンジン210は、大容量記憶媒体26から暗号化され圧縮されたデータストリーミングを受け取るように動作する。第5のステージ202は、伸張エンジンとして働いて、暗号解読エンジン210を出た暗号解読された圧縮データを伸張する。したがって、伸張エンジンの出力は、ステージ6の検索エンジンによって処理される準備のできた、暗号解読され伸張されたデータのストリームである。制御プロセッサ204は、各ステージを制御して、それらを通る正しいフローを保証する。制御プロセッサ204は、各パイプラインステージに関連するパラメータ(適切な場合に、ソフトウェアで実施されるステージのパラメータを含む)をセットアップすることが好ましい。
【0080】
図31に、PLDが、システムバス34から大容量記憶媒体26に流れるデータ、または大容量記憶媒体26からシステムバス34に流れるデータのいずれかの暗号化エンジンとして使用される例を示す。図32に、パイプライン200が複数の処理エンジン(それぞれが1つまたは複数のステージからなる)からなり、この処理エンジンのそれぞれが、エンジンが受け取ったデータに対して列挙されたタスクを実行するように制御プロセッサ204によってアクティブ化されるか、受け取ったデータに関して「パススルー」として働くように制御プロセッサ204によって非アクティブ化されるかのいずれかになることができる、もう1つの例示的パイプラインを示す。異なるエンジンのアクティブ化/非アクティブ化は、パイプラインに望まれる機能性に応じる。たとえば、大容量記憶媒体26に保管された暗号化され圧縮されたデータに対する検索動作の実行が望まれる場合に、暗号解読エンジン210、伸張エンジン214、および検索エンジン218のそれぞれをアクティブ化すると同時に、暗号化エンジン212および圧縮エンジン216のそれぞれを非アクティブ化することができ、同様に、暗号化されていないデータを、大容量記憶媒体に圧縮され暗号化されたフォーマットで保管することが望まれる場合に、圧縮エンジン216および暗号化エンジン212をアクティブ化すると同時に、暗号解読エンジン210、伸張エンジン214、および検索エンジン218のそれぞれを非アクティブ化することができる。本明細書の教示を読んだ時に当業者が理解するように、他のアクティブ化/非アクティブ化の組合せを、パイプライン200に望まれる機能性に応じて使用することができる。
【0081】
高度な暗号化/暗号解読アルゴリズムは、計算の複雑な組を必要とする。使用される特定のアルゴリズムに応じて、ディスク速度での暗号化/暗号解読の実行は、暗号化/暗号解読エンジンに到着するストリーミングデータに追い付くために、高度な技術を使用することを必要とする。本発明のPLDベースアーキテクチャは、比較的単純な暗号化/暗号解読アルゴリズムの実装だけではなく、複雑な暗号化/暗号解読アルゴリズムの実装もサポートする。DES、Triple DES、AESなどを含むがこれに制限されない、事実上すべての知られている暗号化/暗号解読技術を、本発明の実践で使用することができる。それらのすべての開示全体が参照によって本明細書に組み込まれる、Chodowiec他著、「Fast Implementations of Secret−Key Block Ciphers Using Mixed Inter−and Outer−Round Pipelining」、Proceedings of International Symposium on FPGAs、94〜102ページ(2001年2月)、FIPS 46−2、「Data Encryption Standard」revised version issued as FIPS 46−3、National Institute of Standards and Technology(1999年)、ANSI x9.52−1998、「Triple Data Encryption Algorithm Modes of Operation」、American National Standards Institute(1998年)、FIPS 197、「Advanced Encryption Standard」、National Institute of Standards and Technology(2001年)を参照されたい。
【0082】
図33に、本発明を用いて実施できる単一ステージ暗号化の例を示す。データフローの向きは、上から下である。テキストのブロック(通常は64ビットまたは128ビット)が、入力レジスタ220にロードされる(制御プロセッサ204またはCPU32のいずれかによって)。組合せ論理(CL)224が、暗号ラウンドを計算し、そのラウンドの結果が出力レジスタ226に保管される。中間ラウンド中に、出力レジスタ226の内容が、フィードバック経路225を介し、MUX222を介してCL224にフィードバックされて、後続ラウンドが計算される。最終ラウンドの完了時に、出力レジスタ内のデータが、暗号化されたブロックであり、大容量記憶媒体に保管される準備ができている。この構成は、単一ステージ暗号解読エンジンとしても使用することができ、この場合に、暗号を計算するCLが、暗号化論理ではなく暗号解読論理になる。 図33に示された暗号化エンジンのスループットは、パイプライン化技術の使用を介して改善することができる。図34に、ラウンド自体の組合せ論理内にパイプライン化がある、パイプライン化された暗号化エンジンの例を示す。各CL224に、複数のラウンド内パイプラインレジスタ228が含まれる。使用されるラウンド内パイプラインレジスタ228の数は、可変とすることができ、CLあたり2個に制限する必要はない。さらに、フィードバック経路225によって表されるループを、それぞれがその間にラウンド間パイプラインレジスタ230を有する、ラウンドCLの複数のコピー224a、224b、…を用いてアンロールすることができる。各CL224のラウンド内パイプラインレジスタ228の数と同様に、アンロールの度合(すなわち、ラウンドCL224の数)も柔軟である。図33の暗号化エンジンに対して、図34のエンジンが、PLD20上のより多くのリソースを消費するが、より高いデータスループットを提供することに留意されたい。
【0083】
図35に、ラウンドが完全にアンロールされている、暗号化エンジンの例を示す。図33および図34のフィードバック経路225は、もはや不要であり、データは、入力レジスタ220からCL224のパイプライン(それぞれが、複数のラウンド内パイプラインレジスタ228を含み、ラウンド間パイプラインレジスタ230によって分離されている)を介して、出力レジスタ226に継続的に流れることができる。図33および図34の暗号化エンジンに対して、この構成は、最高のデータスループットを実現するが、再構成可能論理内で最大の量のリソースを必要とする。
【0084】
多くの情況で、データは、図36に示されているように、データウェアハウスに保存される。データウェアハウス(データが常駐する実際のハードウェアおよび関連データベーステクノロジ)を所有する人または実体は、しばしば、そこに保管された実際のデータを所有する人または実体と同一でない。たとえば、当事者A(データウェアハウザ)が、データウェアハウスを所有し、データウェアハウジングサービスを当事者B(当事者Aのデータウェアハウスを使用して、物理的にデータを保管するデータ所有者)に提供する場合に、データ所有者は、このデータウェアハウザのウェアハウスに保管されたデータにアクセスできる第三者に関する正当な懸念を有する。すなわち、図36に示されているように、データウェアハウザは、データへの物理的アクセスを制御するが、誰がアクセスゲートウェイを介してデータに物理的にアクセスできるかを制御することを望むのは、データ所有者である。その場合に、データ所有者のデータを、暗号化されたフォーマットでデータウェアハウスに保管することが便利であり、データ所有者は、保管されたデータの暗号解読アルゴリズムおよび/または暗号解読キーの配信に対する制御を保つ。この形で、許可されない第三者が、データ所有者の暗号化されていないフォーマットのデータへのアクセスを得る危険性が減らされる。そのような構成では、データウェアハウザは、データ所有者の保管されたデータの暗号化されてないバージョンへのアクセスを与えられない。
【0085】
データ所有者が、データウェアハウスからインターネットなどのネットワークを介して当事者Cに、保管された暗号化されたデータのすべてまたは一部を通信することを望む場合に、そのデータを、別の形の暗号化(たとえば、異なるアルゴリズムおよび/または異なる暗号解読キー)を介して、ネットワークを介する配信中に保護することができる。データ所有者は、データの暗号解読に適当なアルゴリズムおよび/またはキーを当事者Cに与えることができる。この形で、データ所有者および許可された第三者が、暗号解読された(平文の)データへのアクセスを有する2つだけの当事者になる。しかし、許可された第三者は、まだデータウェアハウスに保管されているデータ所有者のデータを暗号解読することができない。というのは、そのデータが、受信されたデータと異なるモードの暗号化を所有するからである。
【0086】
普通は、データウェアハウジングシナリオで暗号化/暗号解読を実行するのに必要な計算は、データウェアハウザが所有し、かつその直接の制御の下にあるコンピュータ上のソフトウェアで実行される。そのような情況では、図37に示されているように、暗号解読動作の出力である平文が、暗号化/暗号解読動作の実行に使用されるプロセッサのメインメモリに保管される。このソフトウェア(またはそのプロセッサで動作する他のソフトウェア)が、ウィルスまたは他のマルウェアによって危険にさらされている場合に、データ所有者は、未知の当事者に対する平文テキストデータの制御を失う可能性がある。したがって、従来の方法を用いると、データウェアハウザおよび未知のマルウェア関連当事者のうちの一方または両方が、プロセッサメインメモリへのアクセスを有し、したがって、データ所有者の平文形式のデータへのアクセスを有する。
【0087】
このセキュリティの短所を改善するために、本発明を使用して、図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を与えることができる。
【0088】
図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を介してディスクコントローラ3912(SCSI、Fiber Channel、または類似物を使用する)にも接続されることが好ましい。ディスクコネクタ3914が、データウェアハウスとして働くことのできる大容量記憶媒体26(図示せず)にディスクコントローラ3912をインターフェースすることが好ましい。ディスクコントローラ3912およびディスクコネクタ3914は、当技術分野でよく知られている既製構成要素である。製造業者の例に、Adaptec社およびLSI社が含まれる。
【0089】
大容量記憶媒体26への通常の読取/書込アクセスをサポートするために、FPGAは、PCI−Xコネクタ3916を内部PCI−Xバス3910にリンクする、PCI−X対PCI−Xブリッジとして構成されることが好ましい。これらのブリッジング動作は、ファームウェアソケット3908内で実行され、その機能性は、当技術分野で知られている。PCI−Express、PCI、Infiniband、およびIPを含むがこれに制限されない、PCI−X以外の通信パスウェイを使用することができる。
【0090】
暗号化/暗号解読機能性をサポートするために、大容量記憶媒体26から基板3900へのデータストリーミングは、暗号解読エンジン3904に供給される。暗号解読エンジン3904の平文出力は、メモリ3906(図39a)に保管するか、FPGA内部のメモリ(図39b)に保管するか、この2つのある組合せとすることができる。その後、暗号化エンジン3902が、メモリ3906、内部FPGAメモリ、またはこの2つの組合せに保管された平文データを、保管されたデータの暗号解読に使用されたキーと異なるキーを使用して暗号化する。オンボードメモリ3906または内部FPGAメモリのどちらを使用するかの選択は、使用可能なFPGAリソース、暗号解読/暗号化されるデータの量、使用される暗号解読/暗号化のタイプ、および所望のスループット性能特性を含むがこれに制限されない、さまざまな考慮事項に応じる。
【0091】
平文が、オンボードメモリ3906または内部FPGAメモリに存在する時間中に、この平文データは、マザーボードバス34にアクセスするプロセッサからアクセス可能でない。というのは、メモリ3906または内部FPGAメモリとPCI−Xコネクタ3916との間に直接接続がないからである。したがって、メモリ3906および内部FPGAメモリは、そのようなプロセッサのアドレス空間内になく、これは、導出により、メモリ3906および内部FPGAメモリが、そのプロセッサに存在する可能性があるすべてのマルウェアによってアクセス可能でないことを意味する。
【0092】
さらに、図39aおよび図39bの実施形態に、任意選択として、暗号解読エンジン3904と暗号化エンジン3902との間に置かれた、FPGA内の検索エンジン(図示せず)を含めることもでき、これによって、データ所有者が、許可された第三者のデータ要求元に、その第三者のデータ要求の境界におさまる保管されたデータの目標にされたサブセットを配信することが可能になる。
【0093】
上で述べたように、圧縮および伸張も、本発明の技術に従ってPLDで実行できる貴重な動作である。大容量記憶媒体26への保管の前にデータを圧縮し(これによって記憶空間を節約する)、その後、プロセッサによる使用のために大容量記憶媒体から読み取る時にデータを伸張することが一般的である。これらの通常の圧縮動作および伸張動作は、通常はソフトウェアで実行される。一般に使用されている圧縮技術は、よく知られているレンペル−ジブ(LZ)圧縮である。両方の開示全体が参照によって本明細書に組み込まれる、Ziv他著、「A Universal Algorithm for Sequential Data Compression」、IEEE Trans. Inform. Theory、IT−23(3):337−343(1977年)、およびZiv他著、「Compression of Individual Sequence via Variable Rate Coding」、IEEE Trans. Inform. Theory、IT−24:530−536(1978年)を参照されたい。さらに、本発明のPLDベースアーキテクチャは、LZ圧縮だけではなく、他の圧縮技術の配置もサポートする。すべての開示全体が参照によって本明細書に組み込まれる、Jung他著、「Efficient VLSI for Lempel−Ziv Compression in Wireless Data Communication Networks」、IEEE Trans. on VLSI Systems、6(3):475−483(1998年9月)、Ranganathan他著、「High−speed VLSI design for Lempel−Ziv−based data compression」、IEEE Trans. Circuits Syst.、40:96−106(1993年2月)、Pirsch他著、「VLSI Architectures for Video Compression−A Survey」、Proceedings of the IEEE、83(2):220−246(1995年2月)を参照されたい。本発明と共に配置できるLZ圧縮以外の圧縮技術の例に、ハフマン符号化、辞書技術、および算術圧縮などのさまざまなロスレス圧縮タイプと、さまざまな知られているロッシイ圧縮技術が含まれるが、これらに制限はされない。
【0094】
圧縮データを検索できる速度を改善するために、検索を実行する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の両方を非アクティブ化する(これによって、圧縮機能性がもたらされる)ことができる。
【0095】
本発明の機能性を有するFPGA20を構成するために、図43の流れ図に従うことが好ましい。第1に、エンジンの動作とそのエンジンのお互いとの相互作用の両方を規定する所望の処理エンジンのコードレベル論理4300を作成する。このコードは、HDLソースコードであることが好ましいが、標準的なプログラミング言語およびプログラミング技術を使用して作成することができる。HDLの例として、VHDLまたはVerilogを使用することができる。その後、ステップ4302で、合成ツールを使用して、HDLソースコード4300を、処理エンジンのゲートレベル記述4304に変換する。好ましい合成ツールは、Synplicity社が提供するよく知られているSynplicity Proソフトウェアであり、好ましいゲートレベル記述4304は、EDIFネットリストである。しかし、他の合成ツールおよび他のゲートレベル記述を使用できることに留意されたい。次に、ステップ4306で、配置配線ツールを使用して、EDIFネットリスト4304を、FPGA20にロードされるテンプレート4308に変換する。好ましい配置配線ツールは、当技術分野でよく知られているように、マッピング、タイミング分析、および出力生成の機能性を含むXilinx ISEツールセットである。しかし、本発明の実践で、他の配置配線ツールを使用することができる。テンプレート4308は、当技術分野で知られているように、FPGAのJTAG(Joint Test Access Group)マルチピンインターフェースを介して、FPGA20にロードできるビット構成ファイルである。
【0096】
上で述べたように、システムに望まれる、異なる処理機能性用のテンプレート4308を、FPGAでの選択的実装のために事前に生成し、かつ保管することができる。たとえば、異なるタイプの圧縮/伸張、異なるタイプの暗号化/暗号解読、異なるタイプの検索動作、異なるタイプのデータ削減動作、または前述の異なる組合せのためのテンプレートを、事前に生成し、かつその機能性が必要な時に、FPGA20への後続のロードのためにコンピュータシステムによって保管することができる。
【0097】
さらに、スループットおよび消費されるチップリソースなどの性能特性を、事前に判定し、かつ各処理動作に関連付けることができる。これらの関連付けられたパラメータを使用することによって、どのテンプレートが特定の所望の機能性に最適であるかを知的に選択するのに、アルゴリズムを使用することができる。
【0098】
たとえば、そのようなアルゴリズムは、図33〜図35の暗号化エンジンのどれが、所与の応用例に最も適するかに関する案内を提供することができる。下の表に、本発明の暗号化/暗号解読動作に従って、性能をモデル化するのに使用できるパラメータを提示する。
【表1】
【0099】
これらのパラメータそれぞれの値は、当技術分野で知られているように、たやすく知られるか、たやすく測定することができる。整数IについてR=ILである場合に、暗号化/暗号解読の反復が、均等にアンロールされている。そうでない場合には、後のパイプラインステージが、パススルー機能を有しなければならない。というのは、最終結果が、末尾ではなくパイプラインの内部で計算されるからである。
【0100】
パイプライン化された暗号エンジンのスループットは、次式によって与えられる。
【数1】
【0101】
FPGAのチップリソースは、通常、よく知られているように、CLBまたはスライス単位で測定される。FPGA以外の再構成可能論理では、リソースが、他の単位(たとえば、チップ面積)で測定される場合がある。どの場合でも、必要なリソースは、並列にサポートされるラウンド数に線形である。したがって、エンジンに必要なチップリソースは、次の通りである。
Resources=A0+LAR(p)
パラメータThroughputおよびResourcesの値は、パイプラインの1ステージで実装できる保管される処理動作(または機能fi)ごとに前もって決定されることができる。したがって、各処理動作または機能を、それに対応するThroughputおよびResourcesの値に関係させるテーブルを作成することができる。
【0102】
したがって、PLDに配置される特定のテンプレート(1つまたは複数のさまざまな処理動作を規定する)を、発行される特定の照会またはコマンドに合わせて調整することができる。本発明を実践する人が望む形で、ThroughputとResourcesのバランスをとるアルゴリズムを作成して、どの候補テンプレートがある応用例に最も適するかを判断することができる。したがって、制御プロセッサ32は、次のように、機能の組に関する総合スループットおよびリソースを計算することができる。機能の組のスループットは、機能のそれぞれに関する最小スループットである。
Throughput=Min(ThroughputF1,ThroughputF2,…,ThroughputFn)
機能の組を配置するのに必要なリソースは、機能のそれぞれに必要なリソースの合計である。
Resources=ResourcesF1+ResourcesF2+…+ResourcesFn
各機能に関する複数のオプションを与えられれば、制御プロセッサは、最適化問題(または、望まれる場合に「近最適化(near optimization)」問題)を解くことができる。最適化は、必要なリソースが再構成可能ロジックで使用可能なリソース以下という制約の下で、総合スループットを最大にする、機能ごとのオプションの組を配置することとすることができ、あるいは、最適化は、総合スループットが指定された最小閾値未満にならないという制約の下で、必要なリソースを最小にする、機能ごとのオプションの組を配置することとすることができる。そのような最適化問題または近最適化問題を解く技術は、当技術分野でよく知られている。そのような技術の例に、列挙、バウンデッドサーチ(bounded search)、遺伝的アルゴリズム、グリーディアルゴリズム(greedy algorithm)、シミュレーテッドアニーリングなどが含まれるが、これらに制限はされない。
【0103】
ディスクドライブシステムなどの大容量記憶媒体からのデータストリーミングを処理するのに、本発明のシステムを使用することは、保管されたデータを高速で処理する強力な技術である。しかし、非常に大きいデータベースは、通常、多数のディスクシリンダにまたがる。したがって、データベースファイルが、不連続なディスクシリンダに置かれたトラックに書き込まれる時に、遅延に出会う場合がある。これらの遅延は、ディスク読取/書込ヘッドを、データシリンダ上の現在位置から、ディスクから読み取られるファイルが連続する新しいデータシリンダに移動する必要に関連する。これらの遅延は、ヘッドが移動しなければならない距離が増えるにつれて増える。したがって、ディスク上の複数のデータシリンダにまたがるデータを読み取るために、ディスクからのデータストリームのフローが、ヘッドがシリンダからシリンダに移動する時に中断される。現在のディスクドライブでは、これらの遅延が、ミリ秒の範囲になる可能性がある。したがって、これらのヘッド移動遅延(当技術分野で「シーク」時間として知られている)は、潜在的な性能ボトルネックを表す。
【0104】
標準的な現代のディスクシステムでは、図44aおよび図44bに示されているように、トラック4400が、ディスクまたはディスクプラッタの組の上で、中心原点4406の回りの同心円状であるシリンダ4402としてレイアウトされる。図44aに、コンピュータハードディスクなどの記憶デバイスとして働く回転可能プレーナ磁気媒体4450を示すが、データは、磁気媒体4450で、別個の環状のトラック4400に置かれる。磁気記録では、各トラック4400i(iは、a、b、c、…とすることができる)が、中心原点4406に対してそれ自体の半径Riに位置する。各トラックは、次の内周トラックおよび次の外周トラックから、トラック間の間隔Tだけ計方向に分離されている。Tの値は、各トラック間の径距離について均等であることが好ましい。しかし、そうである必要はない。ヘッド4404が、トラック4400iからデータを読み取るかトラック4400iに書き込むために、ヘッド4404が、ディスク上で原点4406からRiの点の上にあるように位置決めされなければならない。ディスクが回転する時に、トラックが、ヘッドの下を通過して、読取動作または書込動作が可能になる。
【0105】
ディスクドライブは、通常、直接上書き方法を使用し、したがって、媒体4450上でのヘッド4404の正確な径方向の配置が、持続的なエラーなしの使用に重要である。一般に、各環状トラック4400iは、約150個のほぼ等しい連続する円弧に分割される。図44aに、各トラック4400iが、8つの均一な円弧4460に分割され、各円弧4460が、θ=2π/8の角度に及ぶ例を示す。当技術分野で知られているように、同一の角度θに及ぶ異なるトラック4400の円弧が、ディスクセクタ(またはウェッジ)4462を構成する。
【0106】
これらの円弧4460に、変更(書き換え)できる複数のデータセット4464(論理ブロックおよび物理セクタ)が含まれる。さらに、これらの円弧4460に、磁気記録からの信号強度が最大になるように、ヘッド4404をデータ領域の上に置くためのガイドとして使用される、変更不能な(固定された)磁気的に書き込まれたマーキング4466(ABCDサーボバーストなど)が含まれる。
【0107】
図44bは、ドライブシステムに存在する複数のディスク4450の断面図を伴うディスクドライブシステム4470のブロック図である。図44bからわかるように、多数のドライブシステム4470が、ディスク4450の両面を使用し、スピンドルモーターなどの回転デバイス4472に同心円状に置かれる、複数のディスク4450(またはプラッタ)を含む場合がある。そのような構成では、各ディスク表面(上面4452および下面4454)が、異なるヘッド4404によってアクセスされる。別々のヘッド4404によって単一の半径Riでアクセスされる環状トラック4400の集合を、「データシリンダ」4402と呼ぶ。隣接するデータシリンダの帯を、ゾーンと呼ぶ。
【0108】
別々のシリンダ4402を有することは、シリンダ4402の間で移動する時に、ディスクヘッド4404の移動を必要とする。シリンダ4402の間で移動するために、位置決めシステム4474が、線4476に沿って、通常はTの増分で、ヘッド4404を適切に移動しなければならない。内周シリンダから外周シリンダに移動する時に、書き込まれるトラックの円周が増える。たとえば、図44aを参照すると、最内周トラック4400aの円周は、2πRaであるが、最外周トラック4400dの円周は、2πRdである。RdはRaより大きいので、トラック4400dの円周が、トラック4400aの円周より大きくなる可能性が高い。これらの円周の差があるので、異なるゾーンを画定して、トラックに沿って異なる線ビット密度を可能にすることができ、これによって、大きい半径について、ほぼ一定の線データ密度を使用することによって得られるデータセクタより多い、シリンダ4402の周囲にデータセクタを作ることができる。
【0109】
1つまたは複数のトラック4400にまたがってデータを書き込むために、ヘッド4404を、位置決めシステム4474によって、少なくとも隣接トラック4400の中心間距離だけ別の半径に再位置決めしなければならない。この動きは、機械的整定時間(ヘッド4404の再位置決め)と、シリンダ4402に対するヘッド4404の再同期化時間(遅れずにダウントラックの)を必要とする。ヘッドを、Tなど、比較的長い距離だけ移動する時に、この整定時間が大きくなる。一緒に、これらの時間は、平均して、シリンダ4402の回転の半分を要する可能性があり、これは、通常、シリンダからシリンダに移動する時に数ミリ秒になる。上で述べたように、この時間持続期間を、しばしば、「シーク」時間と呼び、これが主要な性能ボトルネックになる可能性がある。このボトルネックに起因して、データ読取/書込バーストは、一般に、単一のトラックまたはシリンダに制限されている。
【0110】
好ましい実施形態の新規で独自の特徴によれば、不連続円弧としてレイアウトされたトラックに対処するために、ヘッド4404を再位置決めする技術が使用される。好ましい実施形態では、これらの不連続円弧が、ディスク4450上の全般的に螺旋状のトラッキングパターンに配置された不連続環状円弧であり、ヘッド位置決めシステムは、ABCDサーボバーストなど、ヘッドを適切に位置決めするために従来のシステムに既に存在するサーボパターンを使用する。この技術は、トラックを超え、ゾーン全体までに書き込まれたバーストを提供することができ、単一のゾーンにディスク全体を含めることができる。他のサーボパターンが可能であり、本発明のこの特徴の範囲から除外されないが、サーボパターンに関して普通のABCDシステムを使用する例を示す。
【0111】
サーボシステムの目標が、環状トラック4400を実現するために単一の半径にヘッド4404を位置決めすることである普通のヘッド移動と異なって、図45に示されたこの新規で独自の位置決め方法は、ディスク4450の回りでのヘッド4404の角度位置に比例して、別個の円弧4500にヘッド4404を位置決めすることをめざし、これによって、ディスク4450上の不連続円弧の磁気パターンの螺旋トポロジに対処する。
【0112】
図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は、普通のトラック間(またはシリンダ間)の距離または他の距離である。
【0113】
図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だけ大きく、円弧4500i+1の半径よりT/Wだけ小さいことが好ましい。したがって、下で注記するように、好ましい実施形態のディスク4450の完全な回転ごとに、ヘッド4404は、効果的に、普通の隣接トラック間の距離Tと等しい距離を移動する。図45からわかるように、複数の別個の環状円弧4500は、ディスク4450上で全般的に螺旋形のパターンを画定する。
【0114】
各半径Riが、それ自体のW値を有することができることに留意されたい。その場合に、不連続円弧4500は、異なる円周を有することができ、原点からの複数の角度に及ぶことができる。
【0115】
各不連続円弧4500に、ある円弧4500から次の円弧へのヘッド4404の正しい移動を保証するために、連続円弧について図44aに示したサーボパターンものに似たABCDサーボパターンが含まれる。普通のサーボシステムは、T/Wの小さい量だけ、ヘッド4404をステップさせるのに十分な帯域幅を有する。
【0116】
この処理の一部として、読取/書込ヘッド4404が、当初は、図45のディスクの中心原点4406に関して位置d0に置かれている例を検討されたい。この初期位置を、R1すなわち最内周円弧45001の半径距離とすることができる。ディスクが回転する際に、回転rごとに、ヘッド4404の半径変位Dが、次のように、ウェッジ番号wに比例する量だけ、d0に対して相対的に位置決めされる。
【数2】
ここで、Tは、普通のトラック間(またはシリンダ間)の距離である。完全な1回転で、ヘッド4404は、径方向に正確に完全に1トラック間の距離Tだけ移動する。rが2に達した時に、ヘッド4404は、径方向に正確に2Tだけ移動している。
【0117】
図46に、好ましい実施形態のこの特徴に従ってディスク4450からデータを読み取るために、ディスクドライブシステム4470がそれによって動作する処理を示す。ステップ4600で、システムは、ヘッドがあるディスクの位置を感知する。このステップは、当技術分野で知られているように、少なくとも部分的に、サーボパターンを感知すること、およびディスクに書き込まれたセクタIDを読み取ることによって達成されることが好ましい。その後、ステップ4602で、この部分が対応するディスクウェッジ4502のウェッジ番号wに応じて、ヘッドが新しいディスクウェッジ4502に出会うたびに、ヘッドをDに再位置決めする。次に、ステップ4604で、円弧4500上のサーボパターンを使用することによって、ヘッド位置を微調整する。ヘッドが正しく位置決めされたならば、ステップ4606で、データをディスクから読み取る。この処理は、その後、ディスクが回転を続ける際に、ステップ4600に戻る。
【0118】
本発明のこの特徴は、ゾーン全体での読取モードまたは書込モードでのヘッドのシームレスで連続的な動作を可能にし、したがって、普通のシーク時間に関連する遅延をこうむらない、ディスク全体の読み取りまたは書き込みを可能にする。したがって、上に記載の検索技術および処理技術と組み合わせて使用される時に、検索/処理システムが、シーク時間遅延によって失速することなく、より効率的に動作することができる。しかし、本発明のこの特徴を、上で説明した検索/処理技術と組み合わせて使用する必要がないことに留意する価値がある。すなわち、磁気データ記憶ディスクとの間のデータ読み取りおよび書き込みに、螺旋パターンを使用するというこの技術は、上で説明した検索特徴および処理特徴と独立に使用することができる。
【0119】
もう1つの性能ボトルネックが、データが保管されたディスクがフラグメント化した時に発生する。一般的なファイルシステムでは、ファイルが、複数の固定サイズのセグメント(ブロック)に分割され、これらのセグメントが、ディスクに保管される。ファイルが非常に長い場合に、セグメントが、ディスクのさまざまな位置に保管される場合がある。上で注記したように、そのようなファイルにアクセスするために、ディスクヘッドをシリンダからシリンダへ移動しなければならず、ファイルアクセスが低速になる。ファイル全体が単一のオブジェクトとして、単一のシリンダに、または直接に隣接するシリンダに保管されるならばよりよい。しかし、経時的なディスクのフラグメンテーションのゆえに、これは常に可能ではないことがある。ディスクのデフラグメンテーションでは、通常、すべてのファイルをディスクの一端に移動し、その結果、新しいファイルを、他方の自由端で連続的に割り振れるようにすることが用いられる。通常、そのようなデフラグメンテーションは、長い時間を要する。従来技術で、この問題を解決するために多数の試みが行われてきた。1つのよく知られている技術が、バイナリバディシステム(binary buddy system)として知られている。バイナリバディシステムでは、ディスク空間に関するすべての要求サイズが、次の2のべきに丸められる。したがって、2000バイトのファイルについて、2048(211)の割振り要求が行われる。この処理は、内部フラグメンテーションにつながる。
【0120】
この問題を最小にする努力において、本明細書では、ファイルが1つまたは複数のセグメントに分割され、各セグメントが2のべきである技術を開示する。したがって、端数のない2のべきのサイズではない各ファイルは、一連の2のべきセグメントの合計として表される。
【0121】
最小セグメントサイズがセットされない実施形態では、ファイルを、メモリのブロックにセグメント化するこの技術に、(1)ファイルサイズが、端数のない2のべきである場合に、ファイルサイズと等しい記憶媒体上の記憶空間のブロックを要求することと、(2)ファイルサイズが、端数のない2のべきではない場合に、各ブロックが2のべきと等しいサイズを有する記憶媒体上の記憶空間の複数のブロックを要求することと、(3)要求が受け入れられた場合に、要求に従う1つまたは複数のデータファイルセグメントとして、ディスク上またはメモリ内などの記憶媒体内にデータファイルを保管することとが含まれる。この技術の好ましいバーションでは、ファイルサイズFを、2進項でFk…F2 F1と等しい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)のセグメントサイズをもたらす。
【0122】
過度に小さいセグメントの生成を避けるために、最小セグメントサイズ2mを使用することが好ましい。たとえば、最小セグメントサイズを、512バイト(29)(したがって、mは2である)とすることができる。この技術を用いると、最小セグメントサイズが使用される時に、ファイルを2のべきの合計サイズに分割することが、少なくとも最小セグメントサイズと等しい最小セグメントをもたらす。したがって、(1)ファイルサイズが端数のない2のべきであり、2m以上である場合に、記憶空間のブロックは、ブロックがファイルサイズと等しくなるように要求され、(2)ファイルサイズが2m未満の場合に、記憶空間のブロックは、ブロックが2mと等しくなるように要求され、(3)ファイルサイズが端数のない2のべきではなく、2mを超える場合に、記憶媒体上の記憶空間の複数のブロックが要求され、各ブロックは、2のべきと等しく、2m以上のサイズを有する。
【0123】
図47bに、ファイルサイズSが2500バイトである、この最小セグメント特徴の好ましい実装を示す。この技術を用いると、セグメントサイズが、2048バイト(212)、512バイト(210)になることがわかる。図47bの好ましい実装では、Fm−1からF1のうちの少なくとも1つのビットFiが1と等しいので、Fは、新しい値R(2進数でRq…R2R1と表すことができる)に丸められる。Rの値は、ビットRm−1からR1のすべてが0と等しい、Fより大きい最小値として選択される。ファイルサイズFが、異なる値であり、ビットFm−1からF1のすべてが0と等しい場合には、ブロックの選択は、図47aと同様に進行する。しかし、ビットFm−1からF1のうちの少なくとも1つが1と等しい場合に、Rを使用する図47bの手順に従うことが好ましい。
【0124】
本明細書の教示を再検討した時に当業者が理解するように、そのような2のべきの合計ファイルシステムを実装するプログラム論理は、最小セグメントサイズの有無を問わず、たやすく開発することができる。
【0125】
2のべきの合計ファイルシステムでは、内部フラグメンテーションが、ファイルを等しいサイズのセグメントに分割し、同一の最小セグメントサイズを有する従来の(普通の)ファイルシステムと等しい。図48に、バディファイルシステム対普通の(従来の)ファイルシステムおよび2のべきの合計ファイルシステムでの内部フラグメンテーションに起因して浪費される空間を示す。最小セグメントサイズが小さい時に、浪費される空間は、バディファイルシステムの場合にかなりあるが、最小セグメントサイズが増える時に、他のファイルシステムと匹敵するようになる。多くのファイルシステムで、小さいファイルの数が支配的なので、バディシステムは、しばしば、適切なオプションではない。
【0126】
図49で、普通のファイルシステムおよび2のべきの合計ファイルシステムによる、ファイル全体に関するセグメントの総数を比較する。最小セグメントサイズが小さい時に、2のべきの合計システムは、普通の機構よりかなり少ないセグメントを作る。図50に、両方のファイルシステムによる、ファイルあたりのセグメントの最大数、平均数、および最小数を示す。やはり、2のべきの合計ファイルシステムは、優位を占め、少数のセグメントを作る。言い換えると、2のべきの合計ファイルシステムは、より連続したファイルにつながる。
【0127】
したがって、2のべきの合計ファイルシステムは、バディシステム(多数の内部フラグメンテーションがある)と普通のファイルシステム(内部フラグメンテーションは少ないが潜在的に低い連続性がある)との間のよいトレードオフである。
【0128】
さらなる改良として、2のべきの合計ファイルシステムと共にデフラグメンテーションアルゴリズムを使用して、割振り要求用のディスク上の連続空間をより大きく保証することが好ましい。連続割振りを満足できない場合に、デフラグメンテーションアルゴリズムは、割振り要求を満足するために空間を解放することを試みる。このデフラグメンテーションアルゴリズムは、ディスク全体をデフラグメントするのではない。そうではなく、ディスクの一部を増分式にデフラグメントして、新しい割振り要求を増分的な形で満足することを可能にする。2のべきの合計ファイルシステムと共に使用するのに好ましいデフラグメンテーションアルゴリズムが、その開示全体が参照によって本明細書に組み込まれる論文、Cholleti、Sharath共著、「Storage Allocation in Bounded Time」、MS Thesis,Dept.of Computer Science and Engineering、Washington University、St.Louis、MO(2002年12月)の26〜30ページに開示されている。
【0129】
本明細書で「ヒープマネージャ部分デフラグメンテーションアルゴリズム」と称する好ましい部分的デフラグメンテーションアルゴリズムの擬似コードを、下に複写する。
1.Initialization()
for I=0 to H−1
heapManager[i]=0;/*ヒープを空にする*/
2.Allocate(S)
if サイズSの空きブロックがある
最低のアドレスAを有するサイズSのブロックを割り振る
UpdateHeapManager(S,A,“allocation”)
else サイズの昇順でSより大きいサイズの空きブロックを探す
if 見つかった、最低のアドレスを有するブロックを選択する
サイズSのブロックができるまでブロックを再帰的に分割する
最低のアドレスAを有するサイズSのブロックを選択する
UpdateHaapManager(S,A,“allocation”)
else
A=FindMinimallyOccupiedBlock(S)/*再配置されるブロックを見つける*/
Relocate(S,A)/*ブロックAからのサブブロックを再配置する*/
アドレスAを有するブロックを割り振る
UpdateHeapManager(S,A,“allocation”)
3.FindMinimallyOccupiedBlock(S)
i=2H/S−1 to H/SについてheapManager[i]が最小になるiを見つける
return アドレスA=i<<log2S
4.Relocate(S,A)
subBlocks=FindSubBlocks(S,A);
for each SB∈subBlocks
Deallocate(SB),∀SB∈subBlocks
5.Deallocate(extId)
ブロックextIdおよびサイズSのアドレスAを見つける;
そのブロックを解放する;
UpdateHeapManager(S,A,“deallocation”);
6.UpdateHeapManager(S,A,type)
int maxLevel=log2H;
int level=log2S;
if type=“allocation”
int addr=A>>level;
if S>MinBlockSize
heapManager[addr]=S/*ブロックが完全に占有されている*/
/*割振りレベルの上のブロック*/
addr=A>>level;
for(i=level+1;i<=maxLevel;i++)
addr=addr>>1;
heapManager[addr]=heapManager[addr]+S;
if type=“deallocation”
int addr=A>>level;
/*現在のブロック*/
if S>MinBlockSize
heapManager[addr]=0
/*割振り解除レベルの上のブロック*/
addr=A>>level;
for(i=level+1;i<=maxLevel;i++)
addr=addr>>1;//上のaddrから継続する
heapManager[addr]=heapManager[addr]−S;
【0130】
本発明の趣旨から逸脱しない、さまざまな本発明に対する変更および修正が、当業者に明白であろう。好ましい実施形態は、本発明の実施を説明したものであるが、この説明は、単に例示であることを意図されたものである。複数の代替案も上にある。たとえば、アナログ処理によって例示された動作のすべてが、ディジタル領域でそれと同等の対応物を有する。したがって、適切なマッチングタイプおよび相関タイプの処理を、アナログビットパターンの標準的なディジタル表現に対して行うことができる。これは、調整されたディジタル論理、マイクロプロセッサ、およびディジタル信号プロセッサ、または代替の組合せを使用することによって、連続的な形で達成することもできる。したがって、本発明が、請求項の範囲およびその法的同等物のみによって制限されることが、本発明人の意図である。
【技術分野】
【0001】
本願は、その開示全体が参照によって本明細書に組み込まれる、2003年5月23日出願の米国特許仮出願第60/473077号、名称「Intelligent Data Storage and Processing」の恩恵を主張する。
【0002】
本願は、その両方の開示全体が参照によって本明細書に組み込まれる、2002年5月21日出願の米国特許出願第10/153151号、名称「Associative Database Scanning and Information Retrieval Using FPGA Devices」、および現在、米国特許第6711558号である、2000年4月7日出願の米国特許出願第09/545472号、名称「Associative Database Scanning and Information Retrieval」の一部継続出願でもある。
【背景技術】
【0003】
指摘は、平均データベースサイズおよび関連ソフトウェアサポートシステムが、プロセッサ性能の向上より高い割合で(すなわち、約18ヵ月に2倍を超えて)増加していることである。これは、より詳細な情報を保管すること、より長い期間にわたり情報を保管すること、異なる組織からのデータベースをマージすること、および新生の重要なアプリケーションから生じた大きい新しいデータベースを扱うことの望みを制限なしに含む、複数の要因に起因する。たとえば、大きく急速に成長するデータベースを有する2つの新生のアプリケーションが、遺伝学の革命に関連するものと、インターネット上の情報のカタログ作成およびアクセスに関連するものである。インターネットの場合に、現在の産業界の見積は、150万を超えるページが毎日インターネットに追加されているというものである。物理的レベルで、これは、磁気記憶密度が、過去5年間に毎年2倍程度になってきたディスク記憶性能の著しい向上によって可能にされてきた。
【0004】
検索機能および取出機能は、インデクシングされている時に、情報に対してより簡単に実行される。たとえば、金融情報に関して、この情報を、会社名、株式銘柄、および価格によってインデクシングすることができる。しかし、しばしば、検索される情報は、分類またはインデクシングが困難であるタイプ、または複数のカテゴリに含まれるタイプのいずれかである。その結果、情報検索の精度は、それに関して作成されたインデックスの精度および総合性と同程度にすぎない。しかし、インターネットの場合に、情報はインデクシングされていない。インデクシングのボトルネックは、適度な時間でウェブページにアクセスするのに必要な逆インデックスを開発するのに要する時間である。たとえば、サーチエンジンが使用可能であるが、扱いやすい結果を作る検索を構成することは、検索命令のより少ない非常に詳細なセットによって生成される多数の「ヒット」に起因して、ますます困難になりつつある。このため、複数の「インテリジェント」サーチエンジンが、Googleなど、ウェブ上で提供されてきたが、これらは、当然と思われている望ましくない「ヒット」を除去する論理を使用して、検索結果を減らすことを目的とするものである。
【0005】
次世代インターネット、さらに高速のネットワーク、およびインターネットコンテンツの拡張があるので、このボトルネックは、重大な関心事になりつつある。さらに、タイムリーな基礎で情報にインデクシングすることが、対応してきわめて困難である。インターネットの場合に、現在の産業界の見積は、150万を超えるページが、毎日インターネットに追加されているというものである。その結果、逆インデックスの維持および更新は、膨大な連続的な仕事になり、それが引き起こすボトルネックが、既存の検索システムおよび取出スステムの速度および精度に対する主要な障害になりつつある。しかし、使用可能な情報のますます増加する量を仮定すれば、所望の情報を素早く正確に検索し、取り出す能力が、重大になってきた。
【0006】
大きいデータベースを扱う連想記憶デバイスが、従来技術で知られている。一般に、これらの連想記憶デバイスには、コンピュータ、コンピュータネットワーク、および類似物のための周辺メモリが含まれ、この周辺メモリは、コンピュータ、ネットワークなどに対して非同期に動作し、特殊化された検索に関する高い効率を提供する。さらに、これらのメモリデバイスに、周辺メモリにアクセスする際の主CPUに対する援助として、ある限られた意思決定ロジックを含めることができることも、従来技術で知られている。高速ディスクまたは高速ドラムなどの回転式メモリと共に使用されるように特に適合された、そのような連想記憶デバイスの例を、その開示が参照によって本明細書に組み込まれている米国特許第3906455号に見出されることができる。この特定のデバイスは、回転式メモリと共に使用される方式を提供し、任意の論理操作を実行する前に、メモリをプリソートし、その後にソートするために、メモリセクタに対する2パスが必要であることを教示している。したがって、このデバイスは、磁気テープまたは類似物などの線形メモリまたはシリアルメモリと共に使用することに適さないものとして教示されている。
【0007】
従来技術のデバイスの他の例を、その開示が参照によって本明細書に組み込まれている、米国特許第3729712号、米国特許第4464718号、米国特許第5050075号、米国特許第5140692号、および米国特許第5721898号にも見出されることができる。
【0008】
例として、米国特許第4464718号で、Dixonは、固定された個数のバイトに対する固定された比較を実行している。それらは、データを任意にスキャンし、相関させる能力を有しない。それらは、所与のディスクシリンダ内のトラックに沿ってシリアルに検索するが、ディスクを横切る並列検索に関する備えがない。Dixonの比較は、固定され変わらない個数の標準論理動作タイプによって制限されている。さらに、提示された回路は、これらの単一論理動作だけをサポートする。近似マッチングまたはファジイマッチングのサポートはない。
【0009】
これらの従来技術の連想記憶デバイスは、多くの場合に、大容量記憶装置である周辺メモリとの間の情報の入出力を高速化する試みを呈するが、すべてが、メモリ位置のディジタルアドレスまたはディジタル内容のいずれかを読み取り、解釈することによるディジタル形式で保管されたデータへの古典的アクセスに頼る。言い換えると、そのようなデバイスのほとんどは、そのアドレスによってデータにアクセスするが、当技術分野でよく知られている内容アドレッシングの威力を利用するいくつかのデバイスがある。それにもかかわらず、本発明人が知っている従来技術のすべてで、データを識別しかつ処理のためにデータを選択するために、アドレスまたはアドレッシングされた位置に含まれるデータのディジタル値を、そのディジタルの形態で読み取りかつ解釈しなければならない。これは、アドレスまたは内容によって表されるディジタルデータを読み取り、かつ解釈するのに処理時間を要するだけではなく、アクセス回路が、保管されたデータの構造に従ってメモリを処理することを必然的に必要とする。言い換えると、データがオクテット単位で保管されている場合に、アクセスする回路は、オクテット単位でデータにアクセスし、増分的な形でこれを処理しなければならない。この「スタートアンドストップ」処理は、データにアクセスするのに必要な入出力時間を増やすように働く。当技術分野でよく知られているように、この入出力時間は、通常、任意のコンピュータまたはコンピュータネットワークの処理能力のボトルネックおよび実際の限度を表す。
【0010】
さらに、検索に使用可能な膨大な量の情報を仮定すれば、データ削減動作およびデータ分類動作(たとえば、ある集約形式でデータを要約する能力)が、重要になってきた。しばしば、データ削減機能を素早く実行する能力が、会社にかなりの競争上の利益をもたらすことができる。
【0011】
同様に、ディジタルイメージング技術の改良によって、イメージに対するものなどの2次元マッチングを実行する能力が必要になってきた。たとえば、顔もしくは網膜などの個人の特定のイメージまたは指紋に対してマッチングを実行する能力は、2001年9月11日のテロリスト攻撃に鑑みて、セキュリティに対する労力を向上させるので、法施行に重要になりつつある。イメージマッチングは、自動目標認識の分野で軍にも重要である。
【0012】
最後に、既存の検索デバイスは、現在、変化する適用の要求に応答して素早く簡単に構成されることができない。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】米国特許第3906455号明細書
【特許文献2】米国特許第3729712号明細書
【特許文献3】米国特許第4464718号明細書
【特許文献4】米国特許第5050075号明細書
【特許文献5】米国特許第5140692号明細書
【特許文献6】米国特許第5721898号明細書
【発明の概要】
【発明が解決しようとする課題】
【0014】
したがって、従来技術の上記および他の問題を克服する、改良された情報検索取出のシステムおよび方法の必要がある。
【課題を解決するための手段】
【0015】
親出願である米国特許出願第10/153151号に記載されているように、従来技術の上記および他の問題を解決するために、本発明人は、複数の実施形態で、これらの従来技術の制限に対する洗練された単純な解決方法を提供すると同時に、大容量記憶メモリに保管されたデータに関するアクセス時間を劇的に減らす、フィールドプログラマブルゲートアレイ(FPGA)を使用する連想記憶の方法および装置の構成および開発に成功した。本明細書に記載されているように、米国特許出願第10/153151号の発明は、それぞれが独自の利点を有する複数の実施形態を有する。該米国特許出願第10/153155号の親出願である米国出願特許第09/545472号、現在の米国特許第6711558号は、本発明のこの部分に使用可能なさまざまな種類のデバイス間の選択に関して特定することなく、プログラマブルロジックおよびプログラマブル回路全般の使用を、開示しかつ主張する。米国特許出願第10/153151号では、本発明人は、より具体的に、最良の態様として、さまざまな理由から回路の一部としてのFPGAの使用をより具体的に開示した。とりわけ重要な理由が、速度である。さらに、速度が関わる動作の2つの異なる態様がある。第1の態様は、再構成の速度である。FPGAを現場で素早くプログラムして、テンプレートを使用する検索方法を最適化することができ、このテンプレートが、前もって準備され、接続するバスを介してFPGAに単に通信されることが、当技術分野で知られている。異なる方法を使用して検索することが望まれた場合に、FPGAを、最小のクロックサイクル数で、別の準備されたテンプレートを用いて素早く好都合に再プログラムし、第2の検索を即座に開始することができる。したがって、再構成可能ロジックとしてのFPGAを用いると、他のタイプの再プログラム可能論理デバイスに対して、ある検索から別の検索へのシフトが、非常に簡単で素早くなる。
【0016】
速度の第2の態様は、プログラムされた後に、検索が必要とする時間の長さである。FPGAは、ハードウェアデバイスなので、検索は、ハードウェア処理速度で行われ、これは、たとえばマイクロプロセッサで経験されるソフトウェア処理速度より数桁速い。したがって、FPGAは、しばしばそうであるように速度が考慮事項である場合に、他のソフトウェア実装より望ましい。
【0017】
テンプレートの使用を考慮すると、米国特許出願第10/153151号に、少なくとも複数の「包括的」テンプレートを、事前に準備し、絶対検索、近似検索、またはブール代数論理機能を組み込まれた上位のもしくは高度な検索モードのいずれかでのテキスト検索の実行、あるいはグラフィックス検索モードでの使用に利用可能にすることができることが開示されている。これらを、CPUメモリに保管し、コマンドの際に使用可能にするか、これらの検索の1つを示すソフトウェアキューに応答して自動的にロードすることができる。
【0018】
考慮すべきもう1つの要因が、コストであり、FPGAの最近の価格低下によって、FPGAが、特にPC市場を目標とするハードディスクドライブアクセラレータ(accelerator)の一部として、本願の好ましい実施形態としての実装により適したものになった。さらなるコスト低下が、この実施形態ならびに下で詳細に説明する他の実施形態に関する、FPGAの望ましさを増やす。
【0019】
一般に、米国特許出願第10/153151号の発明は、すべてをハードウェアで、本質的に回線速度で、検索のテンプレートを含め、比較を行うのにFPGAを使用する、大容量記憶媒体に保管されたデータの連続的読取とのデータキーの近似マッチングを介する、データ取出の技術として説明することができる。FPGAを使用することによって、一般に知られている多数の利点および特徴が使用可能にされる。これには、FPGAを「パイプライン」オリエンテーション(pipeline orientation)で、「並列」オリエンテーション(parallel orientation)で、または複雑な検索アルゴリズムを可能にするデータ経路を相互接続する複雑なウェブオーバーレイを組み込んだアレイに配置する能力が含まれる。最も広義の、多分最も強力な実施形態で、データキーを、アナログ信号とすることができ、このデータキーは、大容量記憶媒体を横切って進む時に、通常の読取/書込デバイスによって生成されるアナログ信号とマッチングされる。言い換えると、従来技術で必要なものとして教示された、大容量記憶媒体に保管されたディジタルデータのアナログ表現を読み取るステップだけではなく、比較の前にその信号をディジタルフォーマットに変換するステップが、除去される。さらに、データが編成されかつ保管された構造またはフォーマットを使用して、データを「フレーミング」または比較するという要件はない。アナログ信号について、指定される必要があるものは、「読取」信号の対応する連続して変化する選択された時間期間との比較に使用される、信号の経過時間だけである。従来技術で知られている多数の標準的な相関技術のいずれかを使用することによって、データ「キー」を、データ信号のスライディング「ウィンドウ」と近似的にマッチングして、一致を判定することができる。重要なことに、同一の量のデータを、はるかに素早く走査することができ、検索要求と一致するデータを、はるかに素早く判定することもできる。たとえば、本発明人は、200メガバイトのDNA配列のCPUベース近似検索が、データベースにインデクシングするオフライン処理が既に完了していると仮定して、現在の「ハイエンド」システムで10秒を要する可能性があることを見出した。同一の10秒間で、本発明人は、本発明を使用する近似マッチについて、10ギガバイトのディスクを検索できることを見出した。これは、性能での50:1の改善を表す。さらに、通常のハードディスクドライブにおいて、4つの表面および対応する読取/書込ヘッドがあり、各ヘッドが本発明を備えるならば、これらのすべてを並列に検索することができる。これらの検索は、並列に進行することができるので、総合的な速度向上または改善は、200:1の利点を表す。さらに、追加のハードディスクドライブに、並列にアクセスすることができ、これらをスケーリングして、従来のシステムに対する速度の利点をさらに増やすことができる。
【0020】
適切な相関またはマッチング技術を選択することと、および適切な閾値を設定することによって、検索を、所望の信号と正確に一致するように行うことができ、あるいは、より重要で多分より強力なことに、閾値を下げて、近似一致検索をもたらすことができる。これは、一般に、データベースを走査して、データが探されているものの近似でしかない可能性がある場合でも有効である可能性がある「ヒット」を見つけることができるという点で、より強力な検索モードと考えられる。これによって、改ざんされたデータ、不正確に入力されたデータ、一般にあるカテゴリにのみ対応するデータを見つける検索、ならびに多くの応用例で非常に望ましい他の種類のデータ検索が可能になる。たとえば、DNA配列のライブラリを検索し、残基の所望の配列への近似一致を表すヒットを見つけることが望まれる場合がある。これは、所望の配列に近い配列が見つかり、許せる個数の残基不一致の相違だけでは破棄されないことを保証する。検索を望まれる情報のさらに増える量およびタイプを仮定すると、より複雑な検索技術が必要である。これは、分子生物学の領域で特にそうであり、「遺伝子(またはそれを符号化するタンパク)の生物学的機能を推論する最も強力な方法の1つは、タンパクおよびDNA配列データベースに対する配列類似性検索によるものである」(Garfield、「The Importance of(Sub)sequence Comparison in Molecular Biology」、212〜217ページ。その開示は、参照によって本明細書に組み込まれている)。配列マッチングに関する現在の解決方法は、ソフトウェアまたは再構成可能でないハードウェアでのみ使用可能である。
【0021】
もう1つの応用例では、インターネット検索エンジンによって提供されるインターネット検索が用いられる。そのような検索で、近似マッチングは、検索を失敗させず、または組み合わされた数の特殊化された検索を必要とせずに、綴りの誤った単語、異なる綴りを有する単語、および他の変形に対処することを可能にする。この技術は、検索エンジンが、所与の検索に関するより多数のヒットを提供することを可能にし、検索でより多数の関連するウェブページが見つかり、カタログ化されることを保証する。しかしながら、上で述べたように、この近似マッチングは、それ自体がそれ自体の問題を作るより多数の「ヒット」を作るより大きい網を投げる。
【0022】
本発明の技術のもう1つの可能な応用例は、サイズが膨大であるかアナログ表現として保管されている可能性があるデータベースのアクセスに関するものである。たとえば、我々の社会では、司法手続きを含む多数の裁判所での記録デバイスの実装およびその使用が見られる。最近の歴史で、大統領執務室で行われたテープ録音が、弾劾公聴会で重要性を増した。理解されるように、大統領の任期中に行われるテープ録音は、膨大なデータベースに蓄積される可能性があり、これは、重要である可能性がある特定の単語が話された瞬間を見つけるために、複数の人がそれを聞くことを必要とする可能性がある。本発明の技術を使用すると、データベースが連続的な形で高速で走査される間に、話された単語のアナログ表現をキーとして使用し、一致を探すことができる。したがって、本発明および親発明は、大量のアナログデータベースならびに大量のディジタルデータベースに関する強力な検索ツールを提供する。
【0023】
テキストベース検索は、上で説明したように本発明および親発明によって対処されているが、イメージ、サウンド、および他の表現を含む記憶媒体は、伝統的に、テキストよりも検索が困難であった。本発明および親発明は、そのような内容またはその断片の存在に関する大きいデータベースの検索を可能にする。たとえば、この場合のキーは、探されるイメージを表す画素の行またはクォドラントである。キーの信号の近似マッチングは、キーへの一致または近い一致の識別を可能にすることができる。もう1つのイメージ応用例では、画素または画素のグループの差を検索し、結果として注記することができ、これは、同一の地理的位置のイメージ間の比較が、装置または部隊の移動を示すものとして重要である衛星イメージングに重要である可能性がある。 本発明および親発明は、下でより具体的に注記するように、複数の構成のいずれかで実施することができる。しかし、1つの重要な実施形態は、多分、ハードディスクドライブとシステムバスとの間のインターフェースとして、どのPCにもたやすくインストールされるディスクドライブアクセラレータの形である。このディスクドライブアクセラレータは、標準化されたテンプレートの組を備え、CPUがドライブからデータにアクセスする速度を劇的に高める「プラグアンドプレイ」ソリューションを提供する。これは、PCの大きいインストールベースに販売されるアフターマーケットデバイスまたは改装デバイスになる。また、これは、ドライブケースのエンベロープ内または外部ドライブのエンクロージャ内に、パッケージ化されて新しいディスクドライブの一部として提供されるか、内蔵ドライブ用アダプタとしての追加プラグインPCカードとして提供される。さまざまな種類のデータベースに対するさまざまな種類の検索の追加テンプレートを、望み通りに、CDに符号化することによるなど、アクセラレータの購入と共に、またはダウンロード用にインターネットを介してのいずれかで入手可能にすることができる。
【0024】
本発明は、親出願である米国特許出願第09/545472号および米国特許出願第10/153151号に開示された新規の革新的な技術を拡張し、FPGAなどのプログラマブル論理デバイス(PLD)が、暗号化、暗号解読、圧縮、および伸張などの動作を含むがこれらに制限されない、さまざまな追加の処理動作のどれでも実行する。したがって、本願の技術は、PLDがデータ操作動作を実行するように拡張される。本明細書で使用する用語「操作する」または「操作」は、データに対して実行される圧縮動作、伸張動作、暗号化動作、および暗号解読動作のいずれかまたはすべてと組み合わされた、データに対する検索動作、削減動作、または分類動作の実行、あるいは、同様にデータに対して実行される検索動作、削減動作、分類動作、暗号化動作、および暗号解読動作のいずれかまたはすべてと組み合わされた、または単独でのデータに対する圧縮動作または伸張動作の実行を指す。これらの操作動作を、本明細書で開示される発明的技術に起因して非常に高速で実行できるだけではなく、これらの動作は、本明細書で開示されるFPGAなどのPLDで実施される時に、コンピュータシステムのソフトウェアで動作している可能性があるウィルスまたはマルウェア(malware)による、アクセスまたは読取から暗号解読されたおよび/または伸張されたデータを保護することと、保管されたデータの処理に再構成可能ロジックを使用することとによって、データセキュリティも強化する。本発明のより強力な応用例の中に、クリプトサーチ(crypto−searching)と呼ばれることができる、暗号化されたデータ内の高速検索の実行がある。クリプトサーチを用いると、暗号化されたデータのストリームが処理されて、まず、データストリームが暗号解読され、次に、暗号解読されたデータ内で検索動作が実行される。
【0025】
データ所有者にとってのデータセキュリティの価値は、過小評価することができず、ますます重要性が高まっており、誰がいつどのデータにアクセスできるかを制御する能力は、データセキュリティの中心に位置する。その多数の独自の応用例の中で、本発明は、誰がデータにアクセスするかを制御する際の柔軟性と、許可されたユーザにそのデータへのアクセス(または走査機能を介するそのデータの一部への目標を絞られたアクセス)を与える際の速度を、データ所有者に与える。
【0026】
さらに、本明細書に記載の圧縮および/または伸張を使用することによって、高速でデータを検索する能力を保ちながら、大容量記憶媒体内でより少ない空間を占める形でデータを保管できるようになる。
【0027】
これらの操作動作は、複数のステージを用いて実施される時に、パイプライン化された形で実施されることが好ましい。具体的に言うと、暗号化/暗号解読または圧縮/伸張に専用の1つまたは複数のステージと、データ検索またはデータ削減に専用の1つまたは複数のステージとの組合せは、データ記憶および取出の知的で、柔軟で、高速で、安全な構成技術を相乗的に作る。
【0028】
さらに、本明細書では、コンピュータハードディスクなどの磁気媒体にデータを保管し、その結果、ディスク記憶システムの「シーク」時間によって大きい損害を与えられずに、ハードディスクから大量のデータを読み取れる、新規の独自の技術を開示する。本発明のこの特徴によれば、データは、磁気媒体に位置する複数の不連続の円弧として、好ましくは螺旋状のパターンで磁気媒体に保管される。本明細書に記載のように検索処理および/または追加処理にPLDを使用するシステムが、本明細書に記載されているように区分的螺旋の形で保管されたデータを使用する大容量記憶媒体と組み合わせて使用される時に、この組合せは、相乗的に、さらに高い処理速度をもたらす。
【0029】
さらに、データファイルが、2のべきの合計技術を使用して保管される、メモリにデータファイルを保管する新規の技術を本明細書で開示する。この2のべきの合計技術を使用するデータファイル記憶と、本明細書に記載の再構成可能ロジックプラットフォームのデータ処理機能との組合せも、相乗的に、高められた処理速度をもたらす。
【0030】
本発明の主要な利点および特徴を、上で短く説明したが、本発明のより完全な理解は、図面および次下の好ましい実施形態の説明を参照することによって得ることができる。
【図面の簡単な説明】
【0031】
【図1】一実施形態による情報検索取出システムを示すブロック図である。
【図2】発明システムの接続に関する異なる挿入点を示す、従来の固定ディスクドライブシステムを示す概略図である。
【図3】図1のシステムによって処理される検索照会の変換の一実施形態を示すブロック図である。
【図4】ディジタル領域での正確な一致検索を行うのに使用される、ハードウェア実装の一実施形態を示すブロック図である。
【図5】ディジタル領域での近似一致検索を行うのに使用される、ハードウェア実装の一実施形態を示すブロック図である。
【図6】独立構成での本発明のシステムの実装を示すブロック図である。
【図7】ネットワークを介して共用されるリモート大容量記憶デバイスとしての本発明の実装を示すブロック図である。
【図8】ネットワークに取り付けられた記憶デバイス(NASD、network attached storage device)としての本発明の実装を示すブロック図である。
【図9】磁気記憶媒体からデータを検索しかつ取り出す論理ステップの詳細を示す流れ図である。
【図10】データキーとして使用できるアナログ信号を表すグラフである。
【図11】データキーが存在する磁気記憶媒体からのデータの連続読取を表すアナログ信号を表すグラフである。
【図12】図11の信号にオーバーレイされかつマッチングされた図10の信号を表すグラフである。
【図13】磁気記憶媒体内の目標データが、走査されかつデータキーと比較される時に、継続的に計算される相関関数を表すグラフである。
【図14】データキーが、データキーも含む磁気記憶媒体からの目標データの異なる組の読取からとられた信号と継続的に比較される、相関関数を表すグラフである。
【図15】シーケンスマッチング動作を実行する際に使用される、本発明によって生成されたテーブルの一実施形態を示す図である。
【図16】図15のテーブルの値を計算するために本発明のシステムが使用することのできる、シストリックアレイアーキテクチャの一実施形態を示すブロック図である。
【図17】図1のシステムのクロックサイクルの組合せ部分の間の動作での、図15のシストリックアレイアーキテクチャを示すブロック図である。
【図18】図1のシステムのクロックサイクルのラッチ部分の間の動作での、図15のシストリックアレイアーキテクチャを示すブロック図である。
【図19】特定のシーケンスマッチングの例を表す、図15のテーブルを示す図である。
【図20】図19の例に関する図16のシストリックアレイアーキテクチャのブロック図である。
【図21】図1のシステムのクロックサイクルの組合せ部分の間の、動作中の図20のシストリックアレイアーキテクチャを示すブロック図である。
【図22】図1のシステムのクロックサイクルのラッチ部分の間の、動作中の図20のシストリックアレイアーキテクチャを示すブロック図である。
【図23】イメージマッチング動作を実行する際に本発明のシステムによって使用することのできる、シストリックアレイアーキテクチャの一実施形態を示すブロック図である。
【図24】イメージマッチング動作を実行する際のシストリックアレイアーキテクチャのもう1つの構成を示すブロック図である。
【図25】図23に示されたシストリックアレイの個々のセルの一実施形態を示すブロック図である。
【図26】図23に示されたシストリックアレイの個々のセルのもう1つの実施形態を示すブロック図である。
【図27】データ削減動作を実行するのに本発明のシステムを使用する例を示すブロック図である。
【図28】FPGAのより複雑な構成を示すブロック図である。
【図29】再構成可能論理デバイスで実施されたマルチステージ処理パイプラインの例示的実施形態を示す図である。
【図30】再構成可能論理デバイスで実施されたマルチステージ処理パイプラインの例示的実施形態を示す図である。
【図31】再構成可能論理デバイスで実施された暗号化エンジンを示す図である。
【図32】再構成可能論理デバイスで実施されたマルチステージ処理パイプラインのもう1つの例示的実施形態を示す図である。
【図33】再構成可能論理デバイスで実施できるさまざまな暗号化エンジンの1つを示す図である。
【図34】再構成可能論理デバイスで実施できるさまざまな暗号化エンジンの1つを示す図である。
【図35】再構成可能論理デバイスで実施できるさまざまな暗号化エンジンの1つを示す図である。
【図36】3当事者データウェアハウジングのシナリオを示す図である。
【図37】非セキュアデータウェアハウジング解読のシナリオを示す図である。
【図38】データウェアハウジングシナリオでのセキュアデータ配送のさまざまな実施形態の1つを示す図である。
【図39a】データウェアハウジングシナリオでのセキュアデータ配送のさまざまな実施形態の1つを示す図である。
【図39b】データウェアハウジングシナリオでのセキュアデータ配送のさまざまな実施形態の1つを示す図である。
【図40】再構成可能論理デバイスで圧縮および/または伸張を実施するさまざまな例示的実施形態の1つを示す図である。
【図41】再構成可能論理デバイスで圧縮および/または伸張を実施するさまざまな例示的実施形態の1つを示す図である。
【図42】再構成可能論理デバイスで圧縮および/または伸張を実施するさまざまな例示的実施形態の1つを示す図である。
【図43】再構成可能論理デバイスにロードされるテンプレートの作成の処理フローを示す図である。
【図44a】環状トラックを使用する普通のハードディスクと、それと共に使用されるディスクドライブシステムを示す図である。
【図44b】環状トラックを使用する普通のハードディスクと、それと共に使用されるディスクドライブシステムを示す図である。
【図45】螺旋パターンで配置された別個の環状の円弧を有する新規のプレーナ磁気媒体を示す図である。
【図46】図45の磁気媒体からデータを読み取るためのヘッド位置決めフローを示す図である。
【図47a】2のべきの合計ファイルシステムの実施形態の1つを示す図である。
【図47b】2のべきの合計ファイルシステムの実施形態の1つを示す図である。
【図48】2のべきの合計ファイルシステムのさまざまな動作特性の1つを示す図である。
【図49】2のべきの合計ファイルシステムのさまざまな動作特性の1つを示す図である。
【図50】2のべきの合計ファイルシステムのさまざまな動作特性の1つを示す図である。
【発明を実施するための形態】
【0032】
図1からわかるように、本発明は、独立型のコンピュータまたはコンピュータシステムでたやすく実施される。広義の意味で、本発明は、少なくとも1つの磁気大容量記憶媒体26に結合された少なくとも1つの再構成可能論理デバイス21からなり、その再構成可能論理デバイスは、FPGAである。図1からわかるように、再構成可能論理デバイス21自体に、データシフトレジスタおよび多分マイクロプロセッサを含む複数の機能論理要素が含まれ、あるいは、これらを別々のチップに置くことができ、あるいは、個々の論理要素を、本明細書の他の図の一部に示されているように、パイプラインオリエンテーション(指向)または並列オリエンテーションで構成することができる。どの場合でも、再構成可能ロジックは、その形態および機能を、製造後に現場で大きく変更(すなわち再構成)することができる、すべての論理技術を指す。再構成可能論理デバイスの例に、制限なしにプログラマブル論理デバイス(PLD)が含まれる。PLDは、プログラム可能であるさまざまなチップに関する包括的な用語である。一般に、PLDには3つの物理構造がある。第1は、アルミニウムトレースまたは絶縁体を電気的に溶かすことによって、信号線を分離するか融合する永久ヒューズ(permanent fuse)タイプである。これは、最初のタイプの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)ツールを使用して開発され、これらのツールのすべてが、当業者に知られているように、現在は市販されている。
【0033】
再構成可能論理デバイス21は、システムバスまたは入出力バス34とインターフェースし、一構成では、存在し得るすべてのディスクキャッシュ30ともインターフェースする。再構成可能論理デバイス21は、CPU32またはネットワークインターフェース36から、検索要求または検索照会を受け取りかつ処理する。さらに、このデバイスは、ディスクキャッシュ30および/またはCPU32のいずれかまたは両方に(バス34によって)、照会の結果を渡すのを助けることができる。
【0034】
大容量記憶媒体26は、以下では目標データと呼称する大量の情報を保管する媒体を提供する。用語「大容量記憶媒体」は、大量のデータを保管するのに使用され、通常はコンピュータまたはコンピュータネットワークでの使用のために構成される、すべてのデバイスを意味するものと理解されなければならない。例には、ハードディスクドライブ、光学記憶媒体、または単一のディスク表面などのサブユニットが制限なしに含まれ、これらのシステムは、回転式、線形、直列、並列、またはそのそれぞれのさまざまな組合せとすることができる。たとえば、ハードディスクドライブユニットのラックを、並列に接続することができ、この並列出力を、変換器レベルで1つまたは複数の再構成可能論理デバイス21に供給することができる。同様に、磁気テープドライブのバンクを使用することができ、その直列出力それぞれを、1つまたは複数の再構成可能論理デバイス21に並列に供給することができる。媒体に保管されるデータは、アナログ形式またはディジタル形式とすることができる。たとえば、データを、音声録音とすることができる。したがって、本発明は、スケーラブルであり、並列大容量記憶媒体の数を増やすことによって、保管されるデータの量の増加を可能にすると同時に、並列再構成可能論理デバイスの数を増やすか、再構成可能論理デバイスを複製することによって、性能が維持される。
【0035】
従来技術では、図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でデータを提示することができる。
【0036】
上で説明したように、本発明を使用して、目標データに対してさまざまな異なるタイプのマッチング動作またはデータ削減動作を実行することができる。これらの動作それぞれを、下で詳細に説明する。しかし、すべての動作について、目標データが、十分なフォーマッティング情報を付加されて磁気大容量記憶媒体26に書き込まれ、その結果、目標データの論理構造を抽出できるようになっていると仮定する。正確ストリングマッチングおよび近似ストリングマッチングを、図2〜図5を参照して説明する。しかし、本発明が、単一のストリングマッチに制限されず、複合照会マッチング(たとえば、その間にある論理関係を有する複数のテキストストリングを用いる照会、またはブール代数論理を使用する照会)に同等に適することを理解されたい。図2の点Aに示されているように、再構成可能論理デバイス21を用いてアナログ領域で正確一致を実行し、マッチングが、アナログ比較器および相関技術を使用して行われる時に、正確一致は、データキーと、大容量記憶媒体26上のアナログ目標データのマッチングに関して十分に高い閾値をセットすることに対応する。アナログ領域での近似マッチングは、適当な(より低い)閾値をセットすることに対応する。近似マッチの成功は、再構成可能論理デバイス21でセットされる相関値によって、または走査された目標データの対応するビットと等しいデータキー内のビット数などの、再構成可能論理デバイス21に保管された複数のマッチング性能メトリックスの1つを使用することによって、判定することができる。
【0037】
具体的に言うと、普通の固定ディスクドライブが、複数の回転するディスクを、各ディスクにアクセスする複数の変換器と共に有する場合がある。これらの変換器それぞれは、通常、増幅器などのアナログ信号回路18に供給する出力を有する。これが、点Aで表されている。図2にさらに示されているように、通常、アナログ回路の出力は、1つのそのような出力を処理する単一のディジタルデコーダ23に選択的に供給される。これが、点Bで表されている。このディジタル出力は、通常、誤り訂正回路(ECC)25を介して送られ、その出力Cで、バス34またはディスクキャッシュ30に渡される。本発明の目的のために、複数のディジタルデコーダおよびECCを設けることによって、目標データの複数の並列経路を設けることが望ましい場合がある。ディジタル領域での正確マッチングは、点Bまたは点Cで実行することができ、これは、それぞれ、誤り訂正前のディジタル信号および誤り訂正後のディジタル信号に対応する。
【0038】
結果を、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に対する適当な合成コマンドが生成される。
【0039】
図3に示された経路は、広範囲の潜在的な検索照会を扱うことができるが、検索プロセスに導入される待ち時間が長すぎる可能性があるという短所を有する。検索照会が図3に表された変換を通って流れるのに必要な時間が、検索を実行するのに必要な時間と同程度の場合に、検索自体ではなく、コンパイル処理が性能ボトルネックになる可能性がある。この問題には、広範囲のありそうな検索照会について、ほとんどの一般的な事例を扱う事前コンパイルされたハードウェアテンプレートの組を維持することによって対処することができる。これらのテンプレートは、CPU32メモリ内で提供され、かつ維持されるか、CDなどのオフライン記憶媒体を介して入手可能にされるか、大容量記憶媒体26自体に保存されることができる。さらに、そのようなテンプレートを、ネットワークまたはインターネットを介するなど、CPU32に通信することができる。
【0040】
そのようなハードウェアテンプレート29の一実施形態を、図4に示す。具体的に言うと、データシフトレジスタ27に、1つまたは複数のディスク19のヘッド(図示せず)からの目標データストリーミングが含まれる。比較レジスタに、ユーザがマッチングを望むデータキーが保管される。図示の例では、データキーは「Bagdad」である。細粒度比較(fine−grained comparison)論理デバイス31が、データシフトレジスタ27の要素と比較レジスタ35の要素の間の要素ごとの比較を実行する。細粒度比較論理デバイス31は、大文字小文字を区別するまたはこれを区別しないのいずれかになるように構成することができる。単語レベル比較論理37が、単語レベルの一致が発生したか否かを判定する責任を負う。複合検索照会の場合に、単語レベル一致信号が、その評価のために制御マイクロプロセッサ22に送られる。複合検索照会に対する一致が、その後、さらなる処理のためにCPU32に報告される。
【0041】
近似マッチングを実行するハードウェアテンプレートの一実施形態を、図5に示す。具体的に言うと、データシフトレジスタ27’に、1つまたは複数のディスク19’のヘッド(図示せず)からの目標データストリーミングが含まれる。比較レジスタ35’に、ユーザがマッチングを望むデータキーが保管される。図示の例では、データキーはやはり「Bagdad」である。細粒度比較論理31’が、データシフトレジスタ27’の要素と比較レジスタ21’の要素の間の要素ごとの比較を実行する。やはり、細粒度比較論理デバイス31’は、大文字小文字を区別するまたはこれを区別しないのいずれかになるように構成することができる。テンプレート29’が、データシフトレジスタ27’内の要素の、細粒度比較論理デバイス21’の個々のセルへの代替ルーティングを提供する。具体的に言うと、細粒度比較論理デバイス31’の各セルは、データシフトレジスタ27’内の複数の位置とマッチングすることができ、比較レジスタ21’は、一般に使用される綴り「Baghdad」ならびに代替の「Bagdad」の両方に、共用ハードウェアでマッチングすることができる。単語レベル比較論理37’が、単語レベルで一致が発生したか否かを判定する責任を負う。複合検索照会の場合に、単語レベル一致信号が、その評価のために制御マイクロプロセッサ22に送られる。複合検索照会に対する一致が、その後、さらなる処理のためにCPU32に報告される。
【0042】
ハードウェアテンプレートの実際の構成は、もちろん、検索照会タイプに伴って変化する。ハードウェアテンプレートで少量の柔軟性(たとえば、比較レジスタに保管された目標データ、データシフトレジスタ要素および比較レジスタ要素から細粒度比較論理デバイスのセルへの信号のルーティング、および単語レベル比較論理の幅)を提供することによって、そのようなテンプレートが、広範囲の単語マッチングをサポートすることができる。その結果、これによって、図3で表される検索照会変換全体を行わなければならない頻度が減り、これによって、検索の速度が向上する。
【0043】
「近似」一致検索で識別されるデータ項目に、「正確」検索から生じる「正確」ヒットが含まれることに留意されたい。わかりやすくするために、単語「一致」または「マッチ」を使用する時に、近似検索または正確検索のいずれかを介して見つかった検索結果またはデータ結果が含まれることを理解されたい。句「近似一致」または「近似」だけが使用される時に、これが、上で近似検索として説明した2つの検索あるいは、検索照会または具体的にはデータキーに疎に関係する目標データを収集するの十分に大きい網を有する、それに関する限りではすべての他の種類の「ファジイ」検索のいずれかである可能性があることを理解されたい。もちろん、正確一致は、まさにそのとおりのものであり、高い度合の相関を有する検索照会の正確一致以外の結果を含まない。
【0044】
図1には、本発明をネットワーク38に相互接続するネットワークインターフェース36も示されており、このネットワーク38は、LAN、WAN、インターネットなどとすることができ、このネットワークに、他のコンピュータシステム40を接続することができる。この構成を用いると、他のコンピュータシステム40が、本発明21を介して大容量記憶媒体26に保管されたデータにも便利にアクセスすることができる。より具体的な例を、下で示す。さらに、図1には、要素20〜24自体が、一緒にパッケージ化され、ディスクドライブアクセラレータを形成することも示されており、このディスクドライブアクセラレータを、それ自体のディスクドライブを有する既存PCを、本発明の利益に適合させる改装デバイスとして別々に提供することができる。その代わりに、ディスクドライブアクセラレータを、ハードドライブに対するオプションとして提供し、外部ドライブと同一のエンクロージャにパッケージ化するか、内蔵ドライブ用のコネクタインターフェースを有する別々のPC基板として提供することもできる。さらに、その代わりに、ディスクドライブアクセラレータを、消費者、会社、または他のエンドユーザが注文するPCの一部として、PC供給業者がオプションとして提供することができる。もう1つの実施形態は、より大きい磁気大容量記憶媒体の一部として、または高められたデータ処理能力を有利に使用できるアプリケーションまたは既存設備用のアップグレードまたは改装キットとして提供することとすることができる。
【0045】
図6〜図8からわかるように、本発明を、さまざまなコンピュータ構成およびネットワーク構成で使用することができる。図6からわかるように、本発明を、本明細書に開示された本発明を有する大容量記憶媒体47にアクセスする、システムバス45に接続されたCPU43を含む独立型コンピュータシステム41の一部として提供することができる。
【0046】
図7からわかるように、本発明に結合された大容量記憶媒体51自体を、ネットワーク52に直接に接続することができ、このネットワーク52を介して、複数の独立のコンピュータまたはCPU54が、大容量記憶媒体51にアクセスすることができる。大容量記憶媒体51自体は、RAIDを含むハードディスクドライブのバンク、ディスクファーム、または他の超並列メモリデバイス構成からなるものとして、膨大な量のデータに対するアクセスおよび近似マッチング機能を、大幅に減らされたアクセス時間で提供することができる。
【0047】
図8からわかるように、本発明に結合された大容量記憶媒体56を、NASD(network attached storage device)としてネットワーク58に接続することができ、このネットワーク58を介して、複数の独立型コンピュータ60が、これにアクセスすることができる。そのような構成では、例示のみのためにディスク57として表された各大容量記憶媒体が、ネットワークに接続されたすべてのプロセッサからアクセス可能であることが企図されている。そのような構成の1つに、一意のIPアドレスまたは他のネットワークアドレスを、各大容量記憶媒体に割り当てることが含まれる。
【0048】
図1および図6〜図8に示された構成によって例示される構成は、本発明が互換であり、非常に有用であるさまざまなコンピュータ構成およびネットワーク構成の例を表すにすぎない。他の構成が、当業者に明白であり、本発明は、本明細書に示された例を介して制限されることを意図されておらず、これらの例は、そうではなく、本発明の多用途性を例示することを意図されたものである。
【0049】
図9からわかるように、正確マッチングまたは近似マッチングで使用される本発明の方法を、その代わりに、アナログデータ領域とディジタルデータ領域のどちらが検索されているかに関して説明する。しかし、この方法の開始から始めて、CPUは、ある機能を実行し、その間に、CPUは、大容量記憶媒体に保管された目標データにアクセスすることを選択することができる。通常、CPUは、検索照会アプリケーション62を実行し、この検索照会アプリケーション62は、DNA検索、インターネット検索、アナログ音声検索、指紋検索、イメージ検索、または、その間に目標データとの正確マッチまたは近似マッチが望まれる他のそのような検索を表すものとすることができる。検索照会に、ディスク制御ユニット28および再構成可能論理デバイス20が大容量記憶媒体26からデータキーを正しく得るために有しなければならない、さまざまなパラメータを指定するディレクティブ(directive)が含まれる。パラメータの例に、記憶装置を走査する開始位置、その後に(一致がない場合に)走査を停止する最終位置、走査に使用されるデータキー、マッチングの近似性質の指定、および一致が発生した時に返さなければならない情報が含まれるが、これらに制限はされない。返されることのできる情報の種類に、一致が見つかった情報の位置、またはマッチした情報を含むセクタ、レコード、レコードの部分、もしくは他のデータ集合が含まれる。データ集合は、マッチの際に返されるデータを、境界データ指定子の間になるように指定し、マッチしたデータが境界フィールド内に含まれるようにすることができるという点で、動的に指定することもできる。図5の例で示したように、テキストのストリング内で単語「bagdad」を探すことによって、単語「Baghdad」の、誤綴りに起因する近似一致を見つけ、囲む文によって画定されたデータフィールドを返すことができる。もう1つの照会パラメータは、返される情報を、システム、入出力バス34、またはディスクキャッシュ30のどれに送らなければならないかを示す。
【0050】
図9に戻って、検索照会は、通常、1つまたは複数のオペレーティングシステムユーティリティの実行をもたらす。高水準ユーティリティコマンドの例として、UNIX(登録商標)オペレーティングシステムについて、これを、glimpse、find、grep、aproposなどの変更されたバージョンとすることができる。これらの機能は、CPUに、検索、近似検索などのコマンド66を再構成可能論理デバイス21に送らせ、これらのコマンドの関連部分は、たとえば大容量記憶媒体から目標データを正しく読み取るのに後に必要になる大容量記憶媒体位置決めアクティビティ69を開始するために、ディスクコントローラ28にも送られる。
【0051】
この時点で、本発明の特定の実施形態で実施されることが望まれる特定の方法に応じて、アナログまたはディジタルのデータキーを決定する必要がある。このデータキーは、テキスト検索について正確または近似のいずれかとすることができるが、検索されるデータに対応する。アナログデータキーについて、これは、大容量記憶媒体などに事前に保管されるか、専用回路を使用して開発されるか、生成される必要があるかのいずれかとすることができる。アナログデータキーを事前に保管しなければならない場合に、事前に保管されたデータキー送信ステップ68は、マイクロプロセッサ22(図1参照)によって実行され、このマイクロプロセッサ22は、ステップ70に示されているように、データキーを、ディジタルのサンプリングされたフォーマットで再構成可能論理デバイス20に送る。その代わりに、アナログデータキーを事前に保管しない場合に、これを、複数の機構の1つを使用して開発することができ、これらの機構のうちの2つを図9に示す。1つの機構では、マイクロプロセッサ22が、ステップ72でデータキーを磁気大容量記憶媒体に書き込み、次に、ステップ74で、データキーのアナログ信号表現を生成するためにデータキーを読み取る。もう1つの機構では、ステップ71で、CPUから受け取ったデータキーのディジタルバーションを、適切なディジタル−アナログ回路を使用してアナログ信号表現に変換することができ、このアナログ信号表現が、適切にサンプリングされる。データキーは、次に、ステップ70で、そのディジタルサンプルとして保管される。ディジタルデータキーが使用される場合に、マイクロプロセッサ22が、ステップ76で、再構成可能論理デバイスの比較レジスタに、そのディジタルデータキーを保管することだけが必要である。再構成可能論理デバイスごとに含まれることが望まれる特定の構造に応じて、データキーが、これらの構成要素のいずれかまたはすべてに存在することができ、データキーの適切なディジタルフォーマットを、比較および相関のために再構成可能論理デバイス21に最終的に与えることが、単に好ましいことを理解されたい。
【0052】
次に、大容量記憶媒体26が、79でその開始位置に達した後に、その大容量記憶媒体に保管された目標データが、ステップ78で継続的に読み取られて、目標データを表す継続的ストリーム信号が生成される。アナログデータキーが使用された場合には、このアナログデータキーを、ステップ80で、大容量記憶媒体26からの目標データのアナログ読みと相関させることができる。
【0053】
本発明では、多数の従来技術の比較器および相関回路のどれであっても使用できることが企図されているが、目的について、本発明人は、アナログ信号およびデータキーのディジタルサンプリングが、下で説明するように、そのような比較の実行および相関係数の計算の実行に非常に有用である可能性があることを提案する。大容量記憶媒体26から目標データを読み取ることから生成されるこのアナログ信号は、従来技術のデバイスによって、アナログデータまたはディジタルデータのいずれかの読み取りから便利に生成することができ、ディジタルデータキーを、大容量記憶媒体26に保管されたディジタル目標データとのマッチングに使用する必要がないことに留意されたい。その代わりに、相関ステップ82を、ディジタルデータキーを、大容量記憶媒体26から読み取られたディジタル目標データのストリームとマッチングすることによって実行することができる。データキーが、近似情報を含めることを反映することができ、あるいは、再構成可能論理デバイス21を、これを可能にするためにプログラムできることに留意されたい。したがって、大容量記憶媒体から読み取られた目標データとの相関によって、近似マッチング機能が可能になる。
【0054】
図9を参照すると、判断論理84は、次に、目標データの一部が、データキーに近時一致するか否かに関する知的判断を行う。一致が見つかった場合に、目標データをステップ86で処理し、検索照会によって要求されたキーデータを、ディスクキャッシュ30に送るか、システムバス34に直接に送るか、他の形でバッファリングするか、CPU32、ネットワークインターフェース36、または図1および図6〜図8に示された他で使用可能にする。「do」ループに似たものを示す論理ステップ88が、大容量記憶媒体26からの目標データの継続的読み取りに戻るために含まれることが好ましい。しかし、これが、継続的処理であり、目標データが、個別化されたチャンク、フレーム、バイト、またはデータの他の所定部分ではなく、ストリームとして大容量記憶媒体26から処理されることを理解されたい。これは除外されてはいないが、本発明は、大容量記憶媒体26からの目標データの読み取りにためらいがなくなるように、連続的に変化する目標データ読み取り信号に対して、本質的にデータキーを「スライド」させることができるようになることが好ましい。読み取りを、マルチビットデータ構造の先頭または末尾に同期化するという要件はなく、目標データが大容量記憶媒体26から読み取られる際に、目標データを「オンザフライで」継続的に比較する時に、他の中間ステップを実行する必要もない。最終的に、データアクセスは、ステップ90で完了し、この処理が完了する。
【0055】
本発明人は、アナログ領域で本発明を予備的にテストし、生成された予備データに、その実施可能性および有効性を実証させた。具体的に言うと、図10は、読取/書込ヘッドが、10ビットディジタルデータキーを保管された磁気媒体を読み取る時に、読取/書込ヘッドからの測定されたアナログ信号出力のグラフ表現である。このグラフに示されているように、アナログ信号に、当技術分野で知られているように、目標データがハードディスクなどの磁気媒体から読み取られる時に、読取/書込ヘッドによって生成される真のアナログ信号を表すピークがある。図10に示されたスケールは、縦軸ではボルト、横軸では10分の1マイクロ秒である。図11からわかるように、目標データが、磁気媒体のテスト部分に保管された擬似ランダムバイナリシーケンスから読み取られる時に、やはり読み取り/書込ヘッドによってアナログ信号が生成される。この読み取り信号は、このレベルで検査される時に、理想的な方形波出力を提供しない。
【0056】
図12は、8ビットデータキーの約2ビットと、ディスクまたは磁気媒体の異なる位置で符号化された擬似ランダムバイナリシーケンスに見られる目標データの対応する2ビットとの間のオーバーラップをより具体的に示すために、水平スケールを広げられたグラフ表現である。
【0057】
図13は、ハードディスクからの目標データの継続的な読み取りとデータキーとの間で比較が行われる時に、継続的に計算される相関係数のグラフ表現である。この相関係数は、高い速度でアナログ信号をサンプリングし、従来技術の信号処理相関技術を使用することによって計算された。そのような例の1つが、その開示が参照によって本明細書に組み込まれている、Hoinville、Indeck、およびMuller著、「Spatial Noise Phenomena of Longitudinal Magnetic Recording Media」、IEEE Transactions on Magnetics、Volume 28、no.6、1992年11月に見られる。読み取り、比較、および係数計算の方法および装置の従来の例が、その開示が参照によって本明細書に組み込まれる、米国特許第5740244号など、共同発明人の以前の特許の1つのうちの1つまたは複数にある。前述は、本発明を実施するのに使用できるデバイスおよび方法の例を表すが、本明細書の他所で述べるように、他の類似するデバイスおよび方法を、同様に使用することができ、本発明の目的を実現することができる。
【0058】
図13からわかるように、325のラベルを付けられた点の近くで、1ボルトに達する明確なピークが、約200マイクロ秒で注目され、データキーと目標データとの間の非常に近い一致を示している。図10は、本発明の強力な態様と思われる近似マッチングの可能性も示すものである。図13をよく調べると、相関係数に現れる他のより低いピークがあることが注目される。したがって、0.4ボルトの閾値が、判断点として確立された場合に、1に達する発生するピークだけが、一致または「ヒット」を示すのではなく、別の5つのピークも、「ヒット」を示す。この形で、所望の係数値を、望み通りに調整するか事前に決定して、特定の検索パラメータに合わせることができる。たとえば、テキストの長い本体で特定の単語を検索する時に、より低い相関値は、その単語が存在するが綴りが誤っていることを示すことができる。
【0059】
図14に、同一の8ビットデータキーの間であるが、異なる目標データをセットされた状態の相関係数の継続的計算を示す。やはり、単一の一致が、約200マイクロ秒で見つかり、このピークは1ボルトに達する。より低い閾値が確立されたならば、目標データ内で追加のヒットが見つかることにも留意されたい。
【0060】
前に述べたように、本発明は、シーケンスマッチング検索を実行することもできる。図15に関して、テーブル38は、そのような検索を実行するために再構成可能論理デバイス20によって生成されたものである。具体的に言うと、p1p2p3p4は、データキー、p、または検索される所望のシーケンスを表す。図15のデータキーは、4つの文字だけを示すが、これは、例示のためのみであり、シーケンス検索の通常のデータキーサイズが、500〜1000個程度またはそれより多いことを理解されたい。記号t1、t2、t3…t9は、大容量記憶媒体26からストリーミングされる目標データ、tを表す。やはり、そのようなデータのうちの9文字だけが示されているが、大容量記憶媒体26の通常のサイズ、したがってそれからの目標データストリーミングの通常のサイズが、通常は、数十億文字の範囲になる可能性があることを理解されたい。記号di,jは、データキー内の位置iおよび目標データ内の位置jでの編集距離(edit distance)を表す。そうである必要はないが、データキーが、目標データに対してより短いと仮定する。図15に示されていない追加の行(d0,j)および列(di,0)の知られている(定数)値の組がある場合がある。
【0061】
di,jの値は、di,jが、(1)pi、(2)tj、(3)di−1,j−1、(4)di−1,j、および(5)di,j−1の関数にすぎないという事実を使用して、再構成可能論理デバイス20によって計算される。これは、図15で、位置d3,6に関して、d2,5、d2,6、およびd3,5、ならびにp3およびt6の値に対する依存性を示すことによって示されている。一実施形態で、di,jの値は、次のように計算される。
di,j=max[di,j−1+A;di−1,j+A;di−1,j−1+Bi,j]
ここで、Aは定数であり、Bi,jは、piおよびtjのタブラ関数(tabular function)である。しかし、この関数の形は、非常に任意とすることができる。生物学の文献では、Bを評価関数(scoring function)と呼ぶ。人気のあるデータベース検索プログラムBLASTでは、スコアが、pi=tjであるか否かの関数にすぎない。アミノ酸配列に関するものなど、他の文脈では、Bの値が、pおよびtの特定の文字に応じる。
【0062】
図16に、図15のテーブル38の値を計算するために、本発明が使用するシストリックアレイアーキテクチャの一実施形態を示す。データキーの文字は、データレジスタ53の列に保管され、大容量記憶媒体26からの目標データストリーミングの文字は、データシフトレジスタ55に保管される。di,jの値は、好ましくはそれ自体がFPGAであるシストリックセル59に保管される。
【0063】
図16のアレイの動作を、これから、図17および図18を使用して説明する。図17からわかるように、システムのクロックサイクルの最初(すなわち組合せ)部分で、4つの下線付きの値が計算される。たとえば、新しい値d3,6は、前に図15で示したものと同一の5つの値に応じることが示されている。図18からわかるように、クロックサイクルの第2の(すなわちラッチ)部分で、di,jおよびtjのすべての文字が、右に1位置だけシフトされる。比較器61が、dアレイの各対角線セルに位置し、閾値を超えた時を判定する。
【0064】
シーケンスマッチング動作を、これから、図19〜図22を参照して、次の例に関して説明する。
キー=axbacs
目標データ=pqraxabcstvq
A=1
i=jの場合にB=2
i=jの場合にB=−2
これらの変数から、図19のテーブルが、再構成可能論理デバイス20によって生成される。事前に決定された閾値「8」を仮定すると、再構成可能論理デバイス20は、d6,9で一致を認識する。
【0065】
この例の図16〜図18に存在する値を表す合成アレイの部分を、それぞれ図20〜図22に示す。一致は、ある行の値が所定の閾値を超える時に、再構成可能論理デバイス20によって識別される。閾値は、データキーと大容量記憶媒体26に保管された目標データとの間で望まれる類似性の所望の度合に基づいてセットされる。たとえば、正確一致検索の場合に、データキーと目標キーが同一でなければならない。一致は、CPU32によって、図19のテーブルを用いるトレースバック動作を介して検査される。具体的に言うと、テーブルの「スナップショット」が、所定の時間間隔にCPU32に送られて、一致が識別された後のトレースバック動作が支援される。間隔は、CPU32に重荷を与えないようにあまり頻繁でないが、テーブルの再作成に長い時間と大量の処理を必要としない程度に頻繁であることが好ましい。CPU32がトレースバック動作を実行できるようにするために、テーブル内の閾値を超えた項目を囲む区域でdアレイを再作成できなければならない。この要件をサポートするために、シストリックアレイが、dの完全な列の値(「スナップショット」)を周期的にCPU32に出力することができる。これによって、CPU32が、スナップショットのインデックスjより大きいdの必要な部分を再作成できるようになる。
【0066】
多くのマッチングアプリケーションが、イメージなど、2次元エンティティを表すデータを操作する。図23に、2次元データに対するマッチングを可能にする、再構成可能論理デバイス20、好ましくはFPGAのシストリックアレイ120を示す。個々のセル122それぞれが、ユーザがマッチングを望むイメージの1画素(イメージキー)と、検索されるイメージの1画素(目標イメージ)を保持する。十分に大きいサイズのイメージについて、それが1つの再構成可能論理チップ124におさまらない可能性が高い。その場合に、チップへのセルの候補区分が、破線によって示されており、セルの長方形サブアレイが、各チップ124に置かれる。チップ対チップ接続の個数は、正方形のサブアレイ(すなわち、縦次元と横次元で同一個数のセル)を使用することによって、最小にすることができる。他のより複雑な構成を、下で示す。
【0067】
アレイ120への目標イメージのローディングを、図24を使用して説明する。各セルを接続する水平リンク134を介してアレイの最上行130への、全般的に点Aとして示されている、大容量記憶媒体26からストリーミングされる各目標イメージの個々の行。そのような構成を用いると、最上行130が、データシフトレジスタとして動作する。行130全体がロードされた時に、その行が、各列に示された垂直リンク136を介して、次の行132にシフトダウンされる。イメージ全体がアレイにロードされたならば、比較動作が実行され、これは、離接セル間の任意の通信を必要とする可能性がある。これは、図23に示された水平両方向リンク126と垂直両方向リンク128の両方によってサポートされる。
【0068】
図を単純にするために、個々の両方向リンク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の全体を有することができることを理解されたい。
【0069】
アレイ120の個々のセルの一実施形態を、図25に示す。セル140に、画素レジスタ142、LOADTi,jが含まれ、この画素レジスタ142に、アレイに現在ロードされている目標イメージの画素が含まれる。レジスタ144、CMPTi,jには、完全な目標イメージがロードされた後に、画素レジスタ142のコピーが含まれる。この構成は、ロードされた最後の目標イメージを、次にロードされる目標イメージと並列に比較することを可能にし、本質的に、ロード、比較、ロード、比較などのパイプライン化されたシーケンスを確立する。レジスタ146、CMPPi,jには、比較に使用されるイメージキーの画素が含まれ、比較論理148が、レジスタ144とレジスタ146との間のマッチング動作を実行する。比較論理148に、それぞれ全般的に150、152、154、および156として示された、左右上下の隣接セルと通信して、複雑なマッチング機能を可能にする能力を含めることができる。
【0070】
図23のアレイ120の個々のセルのもう1つの実施形態を、図26に示す。図25のセル140が、イメージキーと目標イメージの同時ロードをサポートするように増補されている。具体的に言うと、セル160には、セル140と同一の構成要素が含まれるが、新しいレジスタ162、LOADPi,jが追加され、このレジスタ162は、イメージキーのロードに使用され、レジスタ142と同一の形で動作する。そのような構成を用いると、大容量記憶媒体26の1つのディスク読取ヘッドが、イメージキーの上に位置決めされ、第2のディスク読取ヘッドが、目標イメージの上に位置決めされている場合に、これらの両方が、ディスクから並列に流し、アレイ160に同時にロードされることができる。
【0071】
比較論理ブロック内で実行される動作は、目標イメージとイメージキーとの間に大きい相違があるか否かに関する判断を提供する任意の機能とすることができる。例に、参照によって本明細書に組み込まれる、John C.Russ著「The Image Processing Handbook」、3rd edition、CRC Press、1999年に記載の、イメージ全体またはイメージのサブ領域にまたがる相互相関が含まれる。
【0072】
本発明は、データ削減検索を実行することもできる。そのような検索では、本明細書で前に説明したマッチングが用いられるが、ある集約形式でマッチングされたデータを要約することが含まれる。たとえば、金融産業で、株の最低価格、最高価格、および最新価格を識別するために、金融情報を検索したい場合がある。そのような集約データ削減を計算する再構成可能論理デバイスを、図27に100として示す。この図では、データシフトレジスタ102が、株価情報を含む大容量記憶媒体から目標データを読み取る。図示の例では、3つのデータ削減検索、すなわち、最低価格、最高価格、および最新価格の計算が示されている。目標データが、データシフトレジスタ102に供給された時に、判断論理が、所望のデータ削減動作を計算する。具体的に言うと、株価が、最低価格比較器110および最高価格比較器112に供給され、それらに保管される。株価が比較器110に供給されるたびに、比較器110は、最後に保管された株価を現在供給されている株価と比較し、低い方がデータレジスタ104に保管される。同様に、株価が比較器112に供給されるたびに、比較器112は、最後に保管された株価を現在供給されている株価と比較し、高い方がデータレジスタ106に保管される。最新価格を計算するために、株価が、データレジスタ108に供給され、現在時刻が、比較器114に供給される。時刻値が比較器114に供給されるたびに、比較器114は、最後に保管された時刻を現在時刻と比較し、新しい方がデータレジスタ116に保管される。その後、計算が行われている所望の時間間隔の終りに、最新価格が判定される。
【0073】
データ削減検索を、図27に示された非常に単純な金融の例に関して説明したが、本発明が、そのような機能性を必要とするさまざまな複雑さのさまざまな異なる応用例のデータ削減検索を実行できることを理解されたい。再構成可能論理デバイスは、単に、必要な機能を実行するハードウェアおよび/またはソフトウェアを用いて構成される必要がある。
【0074】
ディスク回転速度でデータ削減検索を実行する能力は、過小評価することができない。情報の最も貴重な態様の1つが、その適時性である。人々は、物事がインターネット速度であることを期待するようになりつつある。集約データ削減を素早く計算できる会社は、明らかに、それができない会社に対する競争上の強みを有する。
【0075】
さらに、検索および削減以外のデータ処理動作も、再構成可能論理デバイス21で実施することができる。上で述べたように、これらの動作を、本明細書ではデータ操作動作と称する。PLD20で実行できるデータ操作動作またはそのサブ動作の例に、暗号化動作、暗号解読動作、圧縮動作、および伸張動作が含まれる。好ましいPLD20は、FPGAであり、より好ましくはXilinx社のFPGAである。さらに、これらの追加動作のどれであっても、事実上すべての形で検索動作および/または削減動作と組み合わせて、追加の速度、柔軟性、およびセキュリティを提供するマルチステージデータ処理パイプラインを形成することができる。各動作の複雑さは、事実上無制限であり、再構成可能論理デバイス21のリソースおよび本発明を実践する人の性能要件のみによって制限される。各処理動作を、必要に応じて、単一のステージまたは複数のステージで実施することができる。
【0076】
図29に、図1に示されたシステムの再構成可能論理デバイス21内で実施されたマルチステージ処理パイプライン200を示す。パイプライン200内の少なくとも1つのステージが、PLD上で実施される。パイプライン200の各ステージ202は、それが受け取るデータを、その所期の機能性(たとえば、圧縮、伸張、暗号化、暗号解読)に従って処理し、その後、処理されたデータを、パイプラインの次のステージ、前のステージ、または制御プロセッサ204のいずれかに渡すように構成されている。たとえば、パイプライン200の第1のステージ202は、大容量記憶媒体26からのデータストリーミングを操作し、その機能性に従ってそのデータを処理する。ステージ1によって処理されたデータは、その後、さらなる処理のためにステージ2に渡され、以下同様にしてステージNに達する。データが、すべての適切なステージ202を通過した後に、その処理の結果を、システムバス34を介して、制御プロセッサ204および/またはコンピュータに転送することができる。
【0077】
図29のこの例示的なパイプライン200を複製し、その結果、別々のパイプライン200が、大容量記憶媒体26のディスクシステムの各ヘッドに関連するようにすることができる。そのような構成によって、複数のデータストリームがディスクから読み出される時に、これら複数のデータストリームに対する並列処理動作の実行に関連する性能が改善される。システム内に他の性能ボトルネックがない場合に、スループットが、使用されるパイプライン200の数に伴って線形に向上すると期待される。
【0078】
各ステージを、必ずしも再構成可能論理デバイス21内のPLD20で実施する必要がないことに留意されたい。たとえば、一部のステージを、PLD20からアクセス可能なプロセッサ上のソフトウェア(図示せず)または専用ハードウェア(図示せず)で実施することができる。各ステージの正確な構成、およびPLD20上、ソフトウェア、またはASICなどの専用ハードウェアでの各ステージの実施の判断は、各実践する人の計画に適用可能な、関連するコスト制約、性能制約、およびリソース制約に応じる。しかし、完全にFPGAなどのPLD20内でのパイプライン化を使用することによって、処理スループットを大きく高めることができる。したがって、フィードバック経路を有しない平衡のとれたパイプライン(すなわち、各ステージが同一の実行時間を有するパイプライン)について、データスループットの向上は、ステージ数に正比例する。上で述べたように、他のボトルネックがないと仮定すると、Nステージがある場合に、N倍のスループット向上を期待することができる。しかし、マルチステージパイプラインが、ステージの間のフィードバックを使用することもでき、これは、実装コストを減らすか効率を高めるために、ある動作(たとえば、一部の暗号化動作)に望ましい可能性があることに留意されたい。
【0079】
図30に、最初の4つのステージ202に暗号解読エンジン210が含まれる、例示的なマルチステージパイプライン200を示す。この例の暗号解読エンジン210は、大容量記憶媒体26から暗号化され圧縮されたデータストリーミングを受け取るように動作する。第5のステージ202は、伸張エンジンとして働いて、暗号解読エンジン210を出た暗号解読された圧縮データを伸張する。したがって、伸張エンジンの出力は、ステージ6の検索エンジンによって処理される準備のできた、暗号解読され伸張されたデータのストリームである。制御プロセッサ204は、各ステージを制御して、それらを通る正しいフローを保証する。制御プロセッサ204は、各パイプラインステージに関連するパラメータ(適切な場合に、ソフトウェアで実施されるステージのパラメータを含む)をセットアップすることが好ましい。
【0080】
図31に、PLDが、システムバス34から大容量記憶媒体26に流れるデータ、または大容量記憶媒体26からシステムバス34に流れるデータのいずれかの暗号化エンジンとして使用される例を示す。図32に、パイプライン200が複数の処理エンジン(それぞれが1つまたは複数のステージからなる)からなり、この処理エンジンのそれぞれが、エンジンが受け取ったデータに対して列挙されたタスクを実行するように制御プロセッサ204によってアクティブ化されるか、受け取ったデータに関して「パススルー」として働くように制御プロセッサ204によって非アクティブ化されるかのいずれかになることができる、もう1つの例示的パイプラインを示す。異なるエンジンのアクティブ化/非アクティブ化は、パイプラインに望まれる機能性に応じる。たとえば、大容量記憶媒体26に保管された暗号化され圧縮されたデータに対する検索動作の実行が望まれる場合に、暗号解読エンジン210、伸張エンジン214、および検索エンジン218のそれぞれをアクティブ化すると同時に、暗号化エンジン212および圧縮エンジン216のそれぞれを非アクティブ化することができ、同様に、暗号化されていないデータを、大容量記憶媒体に圧縮され暗号化されたフォーマットで保管することが望まれる場合に、圧縮エンジン216および暗号化エンジン212をアクティブ化すると同時に、暗号解読エンジン210、伸張エンジン214、および検索エンジン218のそれぞれを非アクティブ化することができる。本明細書の教示を読んだ時に当業者が理解するように、他のアクティブ化/非アクティブ化の組合せを、パイプライン200に望まれる機能性に応じて使用することができる。
【0081】
高度な暗号化/暗号解読アルゴリズムは、計算の複雑な組を必要とする。使用される特定のアルゴリズムに応じて、ディスク速度での暗号化/暗号解読の実行は、暗号化/暗号解読エンジンに到着するストリーミングデータに追い付くために、高度な技術を使用することを必要とする。本発明のPLDベースアーキテクチャは、比較的単純な暗号化/暗号解読アルゴリズムの実装だけではなく、複雑な暗号化/暗号解読アルゴリズムの実装もサポートする。DES、Triple DES、AESなどを含むがこれに制限されない、事実上すべての知られている暗号化/暗号解読技術を、本発明の実践で使用することができる。それらのすべての開示全体が参照によって本明細書に組み込まれる、Chodowiec他著、「Fast Implementations of Secret−Key Block Ciphers Using Mixed Inter−and Outer−Round Pipelining」、Proceedings of International Symposium on FPGAs、94〜102ページ(2001年2月)、FIPS 46−2、「Data Encryption Standard」revised version issued as FIPS 46−3、National Institute of Standards and Technology(1999年)、ANSI x9.52−1998、「Triple Data Encryption Algorithm Modes of Operation」、American National Standards Institute(1998年)、FIPS 197、「Advanced Encryption Standard」、National Institute of Standards and Technology(2001年)を参照されたい。
【0082】
図33に、本発明を用いて実施できる単一ステージ暗号化の例を示す。データフローの向きは、上から下である。テキストのブロック(通常は64ビットまたは128ビット)が、入力レジスタ220にロードされる(制御プロセッサ204またはCPU32のいずれかによって)。組合せ論理(CL)224が、暗号ラウンドを計算し、そのラウンドの結果が出力レジスタ226に保管される。中間ラウンド中に、出力レジスタ226の内容が、フィードバック経路225を介し、MUX222を介してCL224にフィードバックされて、後続ラウンドが計算される。最終ラウンドの完了時に、出力レジスタ内のデータが、暗号化されたブロックであり、大容量記憶媒体に保管される準備ができている。この構成は、単一ステージ暗号解読エンジンとしても使用することができ、この場合に、暗号を計算するCLが、暗号化論理ではなく暗号解読論理になる。 図33に示された暗号化エンジンのスループットは、パイプライン化技術の使用を介して改善することができる。図34に、ラウンド自体の組合せ論理内にパイプライン化がある、パイプライン化された暗号化エンジンの例を示す。各CL224に、複数のラウンド内パイプラインレジスタ228が含まれる。使用されるラウンド内パイプラインレジスタ228の数は、可変とすることができ、CLあたり2個に制限する必要はない。さらに、フィードバック経路225によって表されるループを、それぞれがその間にラウンド間パイプラインレジスタ230を有する、ラウンドCLの複数のコピー224a、224b、…を用いてアンロールすることができる。各CL224のラウンド内パイプラインレジスタ228の数と同様に、アンロールの度合(すなわち、ラウンドCL224の数)も柔軟である。図33の暗号化エンジンに対して、図34のエンジンが、PLD20上のより多くのリソースを消費するが、より高いデータスループットを提供することに留意されたい。
【0083】
図35に、ラウンドが完全にアンロールされている、暗号化エンジンの例を示す。図33および図34のフィードバック経路225は、もはや不要であり、データは、入力レジスタ220からCL224のパイプライン(それぞれが、複数のラウンド内パイプラインレジスタ228を含み、ラウンド間パイプラインレジスタ230によって分離されている)を介して、出力レジスタ226に継続的に流れることができる。図33および図34の暗号化エンジンに対して、この構成は、最高のデータスループットを実現するが、再構成可能論理内で最大の量のリソースを必要とする。
【0084】
多くの情況で、データは、図36に示されているように、データウェアハウスに保存される。データウェアハウス(データが常駐する実際のハードウェアおよび関連データベーステクノロジ)を所有する人または実体は、しばしば、そこに保管された実際のデータを所有する人または実体と同一でない。たとえば、当事者A(データウェアハウザ)が、データウェアハウスを所有し、データウェアハウジングサービスを当事者B(当事者Aのデータウェアハウスを使用して、物理的にデータを保管するデータ所有者)に提供する場合に、データ所有者は、このデータウェアハウザのウェアハウスに保管されたデータにアクセスできる第三者に関する正当な懸念を有する。すなわち、図36に示されているように、データウェアハウザは、データへの物理的アクセスを制御するが、誰がアクセスゲートウェイを介してデータに物理的にアクセスできるかを制御することを望むのは、データ所有者である。その場合に、データ所有者のデータを、暗号化されたフォーマットでデータウェアハウスに保管することが便利であり、データ所有者は、保管されたデータの暗号解読アルゴリズムおよび/または暗号解読キーの配信に対する制御を保つ。この形で、許可されない第三者が、データ所有者の暗号化されていないフォーマットのデータへのアクセスを得る危険性が減らされる。そのような構成では、データウェアハウザは、データ所有者の保管されたデータの暗号化されてないバージョンへのアクセスを与えられない。
【0085】
データ所有者が、データウェアハウスからインターネットなどのネットワークを介して当事者Cに、保管された暗号化されたデータのすべてまたは一部を通信することを望む場合に、そのデータを、別の形の暗号化(たとえば、異なるアルゴリズムおよび/または異なる暗号解読キー)を介して、ネットワークを介する配信中に保護することができる。データ所有者は、データの暗号解読に適当なアルゴリズムおよび/またはキーを当事者Cに与えることができる。この形で、データ所有者および許可された第三者が、暗号解読された(平文の)データへのアクセスを有する2つだけの当事者になる。しかし、許可された第三者は、まだデータウェアハウスに保管されているデータ所有者のデータを暗号解読することができない。というのは、そのデータが、受信されたデータと異なるモードの暗号化を所有するからである。
【0086】
普通は、データウェアハウジングシナリオで暗号化/暗号解読を実行するのに必要な計算は、データウェアハウザが所有し、かつその直接の制御の下にあるコンピュータ上のソフトウェアで実行される。そのような情況では、図37に示されているように、暗号解読動作の出力である平文が、暗号化/暗号解読動作の実行に使用されるプロセッサのメインメモリに保管される。このソフトウェア(またはそのプロセッサで動作する他のソフトウェア)が、ウィルスまたは他のマルウェアによって危険にさらされている場合に、データ所有者は、未知の当事者に対する平文テキストデータの制御を失う可能性がある。したがって、従来の方法を用いると、データウェアハウザおよび未知のマルウェア関連当事者のうちの一方または両方が、プロセッサメインメモリへのアクセスを有し、したがって、データ所有者の平文形式のデータへのアクセスを有する。
【0087】
このセキュリティの短所を改善するために、本発明を使用して、図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を与えることができる。
【0088】
図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を介してディスクコントローラ3912(SCSI、Fiber Channel、または類似物を使用する)にも接続されることが好ましい。ディスクコネクタ3914が、データウェアハウスとして働くことのできる大容量記憶媒体26(図示せず)にディスクコントローラ3912をインターフェースすることが好ましい。ディスクコントローラ3912およびディスクコネクタ3914は、当技術分野でよく知られている既製構成要素である。製造業者の例に、Adaptec社およびLSI社が含まれる。
【0089】
大容量記憶媒体26への通常の読取/書込アクセスをサポートするために、FPGAは、PCI−Xコネクタ3916を内部PCI−Xバス3910にリンクする、PCI−X対PCI−Xブリッジとして構成されることが好ましい。これらのブリッジング動作は、ファームウェアソケット3908内で実行され、その機能性は、当技術分野で知られている。PCI−Express、PCI、Infiniband、およびIPを含むがこれに制限されない、PCI−X以外の通信パスウェイを使用することができる。
【0090】
暗号化/暗号解読機能性をサポートするために、大容量記憶媒体26から基板3900へのデータストリーミングは、暗号解読エンジン3904に供給される。暗号解読エンジン3904の平文出力は、メモリ3906(図39a)に保管するか、FPGA内部のメモリ(図39b)に保管するか、この2つのある組合せとすることができる。その後、暗号化エンジン3902が、メモリ3906、内部FPGAメモリ、またはこの2つの組合せに保管された平文データを、保管されたデータの暗号解読に使用されたキーと異なるキーを使用して暗号化する。オンボードメモリ3906または内部FPGAメモリのどちらを使用するかの選択は、使用可能なFPGAリソース、暗号解読/暗号化されるデータの量、使用される暗号解読/暗号化のタイプ、および所望のスループット性能特性を含むがこれに制限されない、さまざまな考慮事項に応じる。
【0091】
平文が、オンボードメモリ3906または内部FPGAメモリに存在する時間中に、この平文データは、マザーボードバス34にアクセスするプロセッサからアクセス可能でない。というのは、メモリ3906または内部FPGAメモリとPCI−Xコネクタ3916との間に直接接続がないからである。したがって、メモリ3906および内部FPGAメモリは、そのようなプロセッサのアドレス空間内になく、これは、導出により、メモリ3906および内部FPGAメモリが、そのプロセッサに存在する可能性があるすべてのマルウェアによってアクセス可能でないことを意味する。
【0092】
さらに、図39aおよび図39bの実施形態に、任意選択として、暗号解読エンジン3904と暗号化エンジン3902との間に置かれた、FPGA内の検索エンジン(図示せず)を含めることもでき、これによって、データ所有者が、許可された第三者のデータ要求元に、その第三者のデータ要求の境界におさまる保管されたデータの目標にされたサブセットを配信することが可能になる。
【0093】
上で述べたように、圧縮および伸張も、本発明の技術に従ってPLDで実行できる貴重な動作である。大容量記憶媒体26への保管の前にデータを圧縮し(これによって記憶空間を節約する)、その後、プロセッサによる使用のために大容量記憶媒体から読み取る時にデータを伸張することが一般的である。これらの通常の圧縮動作および伸張動作は、通常はソフトウェアで実行される。一般に使用されている圧縮技術は、よく知られているレンペル−ジブ(LZ)圧縮である。両方の開示全体が参照によって本明細書に組み込まれる、Ziv他著、「A Universal Algorithm for Sequential Data Compression」、IEEE Trans. Inform. Theory、IT−23(3):337−343(1977年)、およびZiv他著、「Compression of Individual Sequence via Variable Rate Coding」、IEEE Trans. Inform. Theory、IT−24:530−536(1978年)を参照されたい。さらに、本発明のPLDベースアーキテクチャは、LZ圧縮だけではなく、他の圧縮技術の配置もサポートする。すべての開示全体が参照によって本明細書に組み込まれる、Jung他著、「Efficient VLSI for Lempel−Ziv Compression in Wireless Data Communication Networks」、IEEE Trans. on VLSI Systems、6(3):475−483(1998年9月)、Ranganathan他著、「High−speed VLSI design for Lempel−Ziv−based data compression」、IEEE Trans. Circuits Syst.、40:96−106(1993年2月)、Pirsch他著、「VLSI Architectures for Video Compression−A Survey」、Proceedings of the IEEE、83(2):220−246(1995年2月)を参照されたい。本発明と共に配置できるLZ圧縮以外の圧縮技術の例に、ハフマン符号化、辞書技術、および算術圧縮などのさまざまなロスレス圧縮タイプと、さまざまな知られているロッシイ圧縮技術が含まれるが、これらに制限はされない。
【0094】
圧縮データを検索できる速度を改善するために、検索を実行する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の両方を非アクティブ化する(これによって、圧縮機能性がもたらされる)ことができる。
【0095】
本発明の機能性を有するFPGA20を構成するために、図43の流れ図に従うことが好ましい。第1に、エンジンの動作とそのエンジンのお互いとの相互作用の両方を規定する所望の処理エンジンのコードレベル論理4300を作成する。このコードは、HDLソースコードであることが好ましいが、標準的なプログラミング言語およびプログラミング技術を使用して作成することができる。HDLの例として、VHDLまたはVerilogを使用することができる。その後、ステップ4302で、合成ツールを使用して、HDLソースコード4300を、処理エンジンのゲートレベル記述4304に変換する。好ましい合成ツールは、Synplicity社が提供するよく知られているSynplicity Proソフトウェアであり、好ましいゲートレベル記述4304は、EDIFネットリストである。しかし、他の合成ツールおよび他のゲートレベル記述を使用できることに留意されたい。次に、ステップ4306で、配置配線ツールを使用して、EDIFネットリスト4304を、FPGA20にロードされるテンプレート4308に変換する。好ましい配置配線ツールは、当技術分野でよく知られているように、マッピング、タイミング分析、および出力生成の機能性を含むXilinx ISEツールセットである。しかし、本発明の実践で、他の配置配線ツールを使用することができる。テンプレート4308は、当技術分野で知られているように、FPGAのJTAG(Joint Test Access Group)マルチピンインターフェースを介して、FPGA20にロードできるビット構成ファイルである。
【0096】
上で述べたように、システムに望まれる、異なる処理機能性用のテンプレート4308を、FPGAでの選択的実装のために事前に生成し、かつ保管することができる。たとえば、異なるタイプの圧縮/伸張、異なるタイプの暗号化/暗号解読、異なるタイプの検索動作、異なるタイプのデータ削減動作、または前述の異なる組合せのためのテンプレートを、事前に生成し、かつその機能性が必要な時に、FPGA20への後続のロードのためにコンピュータシステムによって保管することができる。
【0097】
さらに、スループットおよび消費されるチップリソースなどの性能特性を、事前に判定し、かつ各処理動作に関連付けることができる。これらの関連付けられたパラメータを使用することによって、どのテンプレートが特定の所望の機能性に最適であるかを知的に選択するのに、アルゴリズムを使用することができる。
【0098】
たとえば、そのようなアルゴリズムは、図33〜図35の暗号化エンジンのどれが、所与の応用例に最も適するかに関する案内を提供することができる。下の表に、本発明の暗号化/暗号解読動作に従って、性能をモデル化するのに使用できるパラメータを提示する。
【表1】
【0099】
これらのパラメータそれぞれの値は、当技術分野で知られているように、たやすく知られるか、たやすく測定することができる。整数IについてR=ILである場合に、暗号化/暗号解読の反復が、均等にアンロールされている。そうでない場合には、後のパイプラインステージが、パススルー機能を有しなければならない。というのは、最終結果が、末尾ではなくパイプラインの内部で計算されるからである。
【0100】
パイプライン化された暗号エンジンのスループットは、次式によって与えられる。
【数1】
【0101】
FPGAのチップリソースは、通常、よく知られているように、CLBまたはスライス単位で測定される。FPGA以外の再構成可能論理では、リソースが、他の単位(たとえば、チップ面積)で測定される場合がある。どの場合でも、必要なリソースは、並列にサポートされるラウンド数に線形である。したがって、エンジンに必要なチップリソースは、次の通りである。
Resources=A0+LAR(p)
パラメータThroughputおよびResourcesの値は、パイプラインの1ステージで実装できる保管される処理動作(または機能fi)ごとに前もって決定されることができる。したがって、各処理動作または機能を、それに対応するThroughputおよびResourcesの値に関係させるテーブルを作成することができる。
【0102】
したがって、PLDに配置される特定のテンプレート(1つまたは複数のさまざまな処理動作を規定する)を、発行される特定の照会またはコマンドに合わせて調整することができる。本発明を実践する人が望む形で、ThroughputとResourcesのバランスをとるアルゴリズムを作成して、どの候補テンプレートがある応用例に最も適するかを判断することができる。したがって、制御プロセッサ32は、次のように、機能の組に関する総合スループットおよびリソースを計算することができる。機能の組のスループットは、機能のそれぞれに関する最小スループットである。
Throughput=Min(ThroughputF1,ThroughputF2,…,ThroughputFn)
機能の組を配置するのに必要なリソースは、機能のそれぞれに必要なリソースの合計である。
Resources=ResourcesF1+ResourcesF2+…+ResourcesFn
各機能に関する複数のオプションを与えられれば、制御プロセッサは、最適化問題(または、望まれる場合に「近最適化(near optimization)」問題)を解くことができる。最適化は、必要なリソースが再構成可能ロジックで使用可能なリソース以下という制約の下で、総合スループットを最大にする、機能ごとのオプションの組を配置することとすることができ、あるいは、最適化は、総合スループットが指定された最小閾値未満にならないという制約の下で、必要なリソースを最小にする、機能ごとのオプションの組を配置することとすることができる。そのような最適化問題または近最適化問題を解く技術は、当技術分野でよく知られている。そのような技術の例に、列挙、バウンデッドサーチ(bounded search)、遺伝的アルゴリズム、グリーディアルゴリズム(greedy algorithm)、シミュレーテッドアニーリングなどが含まれるが、これらに制限はされない。
【0103】
ディスクドライブシステムなどの大容量記憶媒体からのデータストリーミングを処理するのに、本発明のシステムを使用することは、保管されたデータを高速で処理する強力な技術である。しかし、非常に大きいデータベースは、通常、多数のディスクシリンダにまたがる。したがって、データベースファイルが、不連続なディスクシリンダに置かれたトラックに書き込まれる時に、遅延に出会う場合がある。これらの遅延は、ディスク読取/書込ヘッドを、データシリンダ上の現在位置から、ディスクから読み取られるファイルが連続する新しいデータシリンダに移動する必要に関連する。これらの遅延は、ヘッドが移動しなければならない距離が増えるにつれて増える。したがって、ディスク上の複数のデータシリンダにまたがるデータを読み取るために、ディスクからのデータストリームのフローが、ヘッドがシリンダからシリンダに移動する時に中断される。現在のディスクドライブでは、これらの遅延が、ミリ秒の範囲になる可能性がある。したがって、これらのヘッド移動遅延(当技術分野で「シーク」時間として知られている)は、潜在的な性能ボトルネックを表す。
【0104】
標準的な現代のディスクシステムでは、図44aおよび図44bに示されているように、トラック4400が、ディスクまたはディスクプラッタの組の上で、中心原点4406の回りの同心円状であるシリンダ4402としてレイアウトされる。図44aに、コンピュータハードディスクなどの記憶デバイスとして働く回転可能プレーナ磁気媒体4450を示すが、データは、磁気媒体4450で、別個の環状のトラック4400に置かれる。磁気記録では、各トラック4400i(iは、a、b、c、…とすることができる)が、中心原点4406に対してそれ自体の半径Riに位置する。各トラックは、次の内周トラックおよび次の外周トラックから、トラック間の間隔Tだけ計方向に分離されている。Tの値は、各トラック間の径距離について均等であることが好ましい。しかし、そうである必要はない。ヘッド4404が、トラック4400iからデータを読み取るかトラック4400iに書き込むために、ヘッド4404が、ディスク上で原点4406からRiの点の上にあるように位置決めされなければならない。ディスクが回転する時に、トラックが、ヘッドの下を通過して、読取動作または書込動作が可能になる。
【0105】
ディスクドライブは、通常、直接上書き方法を使用し、したがって、媒体4450上でのヘッド4404の正確な径方向の配置が、持続的なエラーなしの使用に重要である。一般に、各環状トラック4400iは、約150個のほぼ等しい連続する円弧に分割される。図44aに、各トラック4400iが、8つの均一な円弧4460に分割され、各円弧4460が、θ=2π/8の角度に及ぶ例を示す。当技術分野で知られているように、同一の角度θに及ぶ異なるトラック4400の円弧が、ディスクセクタ(またはウェッジ)4462を構成する。
【0106】
これらの円弧4460に、変更(書き換え)できる複数のデータセット4464(論理ブロックおよび物理セクタ)が含まれる。さらに、これらの円弧4460に、磁気記録からの信号強度が最大になるように、ヘッド4404をデータ領域の上に置くためのガイドとして使用される、変更不能な(固定された)磁気的に書き込まれたマーキング4466(ABCDサーボバーストなど)が含まれる。
【0107】
図44bは、ドライブシステムに存在する複数のディスク4450の断面図を伴うディスクドライブシステム4470のブロック図である。図44bからわかるように、多数のドライブシステム4470が、ディスク4450の両面を使用し、スピンドルモーターなどの回転デバイス4472に同心円状に置かれる、複数のディスク4450(またはプラッタ)を含む場合がある。そのような構成では、各ディスク表面(上面4452および下面4454)が、異なるヘッド4404によってアクセスされる。別々のヘッド4404によって単一の半径Riでアクセスされる環状トラック4400の集合を、「データシリンダ」4402と呼ぶ。隣接するデータシリンダの帯を、ゾーンと呼ぶ。
【0108】
別々のシリンダ4402を有することは、シリンダ4402の間で移動する時に、ディスクヘッド4404の移動を必要とする。シリンダ4402の間で移動するために、位置決めシステム4474が、線4476に沿って、通常はTの増分で、ヘッド4404を適切に移動しなければならない。内周シリンダから外周シリンダに移動する時に、書き込まれるトラックの円周が増える。たとえば、図44aを参照すると、最内周トラック4400aの円周は、2πRaであるが、最外周トラック4400dの円周は、2πRdである。RdはRaより大きいので、トラック4400dの円周が、トラック4400aの円周より大きくなる可能性が高い。これらの円周の差があるので、異なるゾーンを画定して、トラックに沿って異なる線ビット密度を可能にすることができ、これによって、大きい半径について、ほぼ一定の線データ密度を使用することによって得られるデータセクタより多い、シリンダ4402の周囲にデータセクタを作ることができる。
【0109】
1つまたは複数のトラック4400にまたがってデータを書き込むために、ヘッド4404を、位置決めシステム4474によって、少なくとも隣接トラック4400の中心間距離だけ別の半径に再位置決めしなければならない。この動きは、機械的整定時間(ヘッド4404の再位置決め)と、シリンダ4402に対するヘッド4404の再同期化時間(遅れずにダウントラックの)を必要とする。ヘッドを、Tなど、比較的長い距離だけ移動する時に、この整定時間が大きくなる。一緒に、これらの時間は、平均して、シリンダ4402の回転の半分を要する可能性があり、これは、通常、シリンダからシリンダに移動する時に数ミリ秒になる。上で述べたように、この時間持続期間を、しばしば、「シーク」時間と呼び、これが主要な性能ボトルネックになる可能性がある。このボトルネックに起因して、データ読取/書込バーストは、一般に、単一のトラックまたはシリンダに制限されている。
【0110】
好ましい実施形態の新規で独自の特徴によれば、不連続円弧としてレイアウトされたトラックに対処するために、ヘッド4404を再位置決めする技術が使用される。好ましい実施形態では、これらの不連続円弧が、ディスク4450上の全般的に螺旋状のトラッキングパターンに配置された不連続環状円弧であり、ヘッド位置決めシステムは、ABCDサーボバーストなど、ヘッドを適切に位置決めするために従来のシステムに既に存在するサーボパターンを使用する。この技術は、トラックを超え、ゾーン全体までに書き込まれたバーストを提供することができ、単一のゾーンにディスク全体を含めることができる。他のサーボパターンが可能であり、本発明のこの特徴の範囲から除外されないが、サーボパターンに関して普通のABCDシステムを使用する例を示す。
【0111】
サーボシステムの目標が、環状トラック4400を実現するために単一の半径にヘッド4404を位置決めすることである普通のヘッド移動と異なって、図45に示されたこの新規で独自の位置決め方法は、ディスク4450の回りでのヘッド4404の角度位置に比例して、別個の円弧4500にヘッド4404を位置決めすることをめざし、これによって、ディスク4450上の不連続円弧の磁気パターンの螺旋トポロジに対処する。
【0112】
図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は、普通のトラック間(またはシリンダ間)の距離または他の距離である。
【0113】
図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だけ大きく、円弧4500i+1の半径よりT/Wだけ小さいことが好ましい。したがって、下で注記するように、好ましい実施形態のディスク4450の完全な回転ごとに、ヘッド4404は、効果的に、普通の隣接トラック間の距離Tと等しい距離を移動する。図45からわかるように、複数の別個の環状円弧4500は、ディスク4450上で全般的に螺旋形のパターンを画定する。
【0114】
各半径Riが、それ自体のW値を有することができることに留意されたい。その場合に、不連続円弧4500は、異なる円周を有することができ、原点からの複数の角度に及ぶことができる。
【0115】
各不連続円弧4500に、ある円弧4500から次の円弧へのヘッド4404の正しい移動を保証するために、連続円弧について図44aに示したサーボパターンものに似たABCDサーボパターンが含まれる。普通のサーボシステムは、T/Wの小さい量だけ、ヘッド4404をステップさせるのに十分な帯域幅を有する。
【0116】
この処理の一部として、読取/書込ヘッド4404が、当初は、図45のディスクの中心原点4406に関して位置d0に置かれている例を検討されたい。この初期位置を、R1すなわち最内周円弧45001の半径距離とすることができる。ディスクが回転する際に、回転rごとに、ヘッド4404の半径変位Dが、次のように、ウェッジ番号wに比例する量だけ、d0に対して相対的に位置決めされる。
【数2】
ここで、Tは、普通のトラック間(またはシリンダ間)の距離である。完全な1回転で、ヘッド4404は、径方向に正確に完全に1トラック間の距離Tだけ移動する。rが2に達した時に、ヘッド4404は、径方向に正確に2Tだけ移動している。
【0117】
図46に、好ましい実施形態のこの特徴に従ってディスク4450からデータを読み取るために、ディスクドライブシステム4470がそれによって動作する処理を示す。ステップ4600で、システムは、ヘッドがあるディスクの位置を感知する。このステップは、当技術分野で知られているように、少なくとも部分的に、サーボパターンを感知すること、およびディスクに書き込まれたセクタIDを読み取ることによって達成されることが好ましい。その後、ステップ4602で、この部分が対応するディスクウェッジ4502のウェッジ番号wに応じて、ヘッドが新しいディスクウェッジ4502に出会うたびに、ヘッドをDに再位置決めする。次に、ステップ4604で、円弧4500上のサーボパターンを使用することによって、ヘッド位置を微調整する。ヘッドが正しく位置決めされたならば、ステップ4606で、データをディスクから読み取る。この処理は、その後、ディスクが回転を続ける際に、ステップ4600に戻る。
【0118】
本発明のこの特徴は、ゾーン全体での読取モードまたは書込モードでのヘッドのシームレスで連続的な動作を可能にし、したがって、普通のシーク時間に関連する遅延をこうむらない、ディスク全体の読み取りまたは書き込みを可能にする。したがって、上に記載の検索技術および処理技術と組み合わせて使用される時に、検索/処理システムが、シーク時間遅延によって失速することなく、より効率的に動作することができる。しかし、本発明のこの特徴を、上で説明した検索/処理技術と組み合わせて使用する必要がないことに留意する価値がある。すなわち、磁気データ記憶ディスクとの間のデータ読み取りおよび書き込みに、螺旋パターンを使用するというこの技術は、上で説明した検索特徴および処理特徴と独立に使用することができる。
【0119】
もう1つの性能ボトルネックが、データが保管されたディスクがフラグメント化した時に発生する。一般的なファイルシステムでは、ファイルが、複数の固定サイズのセグメント(ブロック)に分割され、これらのセグメントが、ディスクに保管される。ファイルが非常に長い場合に、セグメントが、ディスクのさまざまな位置に保管される場合がある。上で注記したように、そのようなファイルにアクセスするために、ディスクヘッドをシリンダからシリンダへ移動しなければならず、ファイルアクセスが低速になる。ファイル全体が単一のオブジェクトとして、単一のシリンダに、または直接に隣接するシリンダに保管されるならばよりよい。しかし、経時的なディスクのフラグメンテーションのゆえに、これは常に可能ではないことがある。ディスクのデフラグメンテーションでは、通常、すべてのファイルをディスクの一端に移動し、その結果、新しいファイルを、他方の自由端で連続的に割り振れるようにすることが用いられる。通常、そのようなデフラグメンテーションは、長い時間を要する。従来技術で、この問題を解決するために多数の試みが行われてきた。1つのよく知られている技術が、バイナリバディシステム(binary buddy system)として知られている。バイナリバディシステムでは、ディスク空間に関するすべての要求サイズが、次の2のべきに丸められる。したがって、2000バイトのファイルについて、2048(211)の割振り要求が行われる。この処理は、内部フラグメンテーションにつながる。
【0120】
この問題を最小にする努力において、本明細書では、ファイルが1つまたは複数のセグメントに分割され、各セグメントが2のべきである技術を開示する。したがって、端数のない2のべきのサイズではない各ファイルは、一連の2のべきセグメントの合計として表される。
【0121】
最小セグメントサイズがセットされない実施形態では、ファイルを、メモリのブロックにセグメント化するこの技術に、(1)ファイルサイズが、端数のない2のべきである場合に、ファイルサイズと等しい記憶媒体上の記憶空間のブロックを要求することと、(2)ファイルサイズが、端数のない2のべきではない場合に、各ブロックが2のべきと等しいサイズを有する記憶媒体上の記憶空間の複数のブロックを要求することと、(3)要求が受け入れられた場合に、要求に従う1つまたは複数のデータファイルセグメントとして、ディスク上またはメモリ内などの記憶媒体内にデータファイルを保管することとが含まれる。この技術の好ましいバーションでは、ファイルサイズFを、2進項でFk…F2 F1と等しい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)のセグメントサイズをもたらす。
【0122】
過度に小さいセグメントの生成を避けるために、最小セグメントサイズ2mを使用することが好ましい。たとえば、最小セグメントサイズを、512バイト(29)(したがって、mは2である)とすることができる。この技術を用いると、最小セグメントサイズが使用される時に、ファイルを2のべきの合計サイズに分割することが、少なくとも最小セグメントサイズと等しい最小セグメントをもたらす。したがって、(1)ファイルサイズが端数のない2のべきであり、2m以上である場合に、記憶空間のブロックは、ブロックがファイルサイズと等しくなるように要求され、(2)ファイルサイズが2m未満の場合に、記憶空間のブロックは、ブロックが2mと等しくなるように要求され、(3)ファイルサイズが端数のない2のべきではなく、2mを超える場合に、記憶媒体上の記憶空間の複数のブロックが要求され、各ブロックは、2のべきと等しく、2m以上のサイズを有する。
【0123】
図47bに、ファイルサイズSが2500バイトである、この最小セグメント特徴の好ましい実装を示す。この技術を用いると、セグメントサイズが、2048バイト(212)、512バイト(210)になることがわかる。図47bの好ましい実装では、Fm−1からF1のうちの少なくとも1つのビットFiが1と等しいので、Fは、新しい値R(2進数でRq…R2R1と表すことができる)に丸められる。Rの値は、ビットRm−1からR1のすべてが0と等しい、Fより大きい最小値として選択される。ファイルサイズFが、異なる値であり、ビットFm−1からF1のすべてが0と等しい場合には、ブロックの選択は、図47aと同様に進行する。しかし、ビットFm−1からF1のうちの少なくとも1つが1と等しい場合に、Rを使用する図47bの手順に従うことが好ましい。
【0124】
本明細書の教示を再検討した時に当業者が理解するように、そのような2のべきの合計ファイルシステムを実装するプログラム論理は、最小セグメントサイズの有無を問わず、たやすく開発することができる。
【0125】
2のべきの合計ファイルシステムでは、内部フラグメンテーションが、ファイルを等しいサイズのセグメントに分割し、同一の最小セグメントサイズを有する従来の(普通の)ファイルシステムと等しい。図48に、バディファイルシステム対普通の(従来の)ファイルシステムおよび2のべきの合計ファイルシステムでの内部フラグメンテーションに起因して浪費される空間を示す。最小セグメントサイズが小さい時に、浪費される空間は、バディファイルシステムの場合にかなりあるが、最小セグメントサイズが増える時に、他のファイルシステムと匹敵するようになる。多くのファイルシステムで、小さいファイルの数が支配的なので、バディシステムは、しばしば、適切なオプションではない。
【0126】
図49で、普通のファイルシステムおよび2のべきの合計ファイルシステムによる、ファイル全体に関するセグメントの総数を比較する。最小セグメントサイズが小さい時に、2のべきの合計システムは、普通の機構よりかなり少ないセグメントを作る。図50に、両方のファイルシステムによる、ファイルあたりのセグメントの最大数、平均数、および最小数を示す。やはり、2のべきの合計ファイルシステムは、優位を占め、少数のセグメントを作る。言い換えると、2のべきの合計ファイルシステムは、より連続したファイルにつながる。
【0127】
したがって、2のべきの合計ファイルシステムは、バディシステム(多数の内部フラグメンテーションがある)と普通のファイルシステム(内部フラグメンテーションは少ないが潜在的に低い連続性がある)との間のよいトレードオフである。
【0128】
さらなる改良として、2のべきの合計ファイルシステムと共にデフラグメンテーションアルゴリズムを使用して、割振り要求用のディスク上の連続空間をより大きく保証することが好ましい。連続割振りを満足できない場合に、デフラグメンテーションアルゴリズムは、割振り要求を満足するために空間を解放することを試みる。このデフラグメンテーションアルゴリズムは、ディスク全体をデフラグメントするのではない。そうではなく、ディスクの一部を増分式にデフラグメントして、新しい割振り要求を増分的な形で満足することを可能にする。2のべきの合計ファイルシステムと共に使用するのに好ましいデフラグメンテーションアルゴリズムが、その開示全体が参照によって本明細書に組み込まれる論文、Cholleti、Sharath共著、「Storage Allocation in Bounded Time」、MS Thesis,Dept.of Computer Science and Engineering、Washington University、St.Louis、MO(2002年12月)の26〜30ページに開示されている。
【0129】
本明細書で「ヒープマネージャ部分デフラグメンテーションアルゴリズム」と称する好ましい部分的デフラグメンテーションアルゴリズムの擬似コードを、下に複写する。
1.Initialization()
for I=0 to H−1
heapManager[i]=0;/*ヒープを空にする*/
2.Allocate(S)
if サイズSの空きブロックがある
最低のアドレスAを有するサイズSのブロックを割り振る
UpdateHeapManager(S,A,“allocation”)
else サイズの昇順でSより大きいサイズの空きブロックを探す
if 見つかった、最低のアドレスを有するブロックを選択する
サイズSのブロックができるまでブロックを再帰的に分割する
最低のアドレスAを有するサイズSのブロックを選択する
UpdateHaapManager(S,A,“allocation”)
else
A=FindMinimallyOccupiedBlock(S)/*再配置されるブロックを見つける*/
Relocate(S,A)/*ブロックAからのサブブロックを再配置する*/
アドレスAを有するブロックを割り振る
UpdateHeapManager(S,A,“allocation”)
3.FindMinimallyOccupiedBlock(S)
i=2H/S−1 to H/SについてheapManager[i]が最小になるiを見つける
return アドレスA=i<<log2S
4.Relocate(S,A)
subBlocks=FindSubBlocks(S,A);
for each SB∈subBlocks
Deallocate(SB),∀SB∈subBlocks
5.Deallocate(extId)
ブロックextIdおよびサイズSのアドレスAを見つける;
そのブロックを解放する;
UpdateHeapManager(S,A,“deallocation”);
6.UpdateHeapManager(S,A,type)
int maxLevel=log2H;
int level=log2S;
if type=“allocation”
int addr=A>>level;
if S>MinBlockSize
heapManager[addr]=S/*ブロックが完全に占有されている*/
/*割振りレベルの上のブロック*/
addr=A>>level;
for(i=level+1;i<=maxLevel;i++)
addr=addr>>1;
heapManager[addr]=heapManager[addr]+S;
if type=“deallocation”
int addr=A>>level;
/*現在のブロック*/
if S>MinBlockSize
heapManager[addr]=0
/*割振り解除レベルの上のブロック*/
addr=A>>level;
for(i=level+1;i<=maxLevel;i++)
addr=addr>>1;//上のaddrから継続する
heapManager[addr]=heapManager[addr]−S;
【0130】
本発明の趣旨から逸脱しない、さまざまな本発明に対する変更および修正が、当業者に明白であろう。好ましい実施形態は、本発明の実施を説明したものであるが、この説明は、単に例示であることを意図されたものである。複数の代替案も上にある。たとえば、アナログ処理によって例示された動作のすべてが、ディジタル領域でそれと同等の対応物を有する。したがって、適切なマッチングタイプおよび相関タイプの処理を、アナログビットパターンの標準的なディジタル表現に対して行うことができる。これは、調整されたディジタル論理、マイクロプロセッサ、およびディジタル信号プロセッサ、または代替の組合せを使用することによって、連続的な形で達成することもできる。したがって、本発明が、請求項の範囲およびその法的同等物のみによって制限されることが、本発明人の意図である。
【特許請求の範囲】
【請求項1】
大容量記憶媒体と通信するプログラマブル論理デバイスであって、前記デバイスが、連続的データストリームでの前記大容量記憶媒体との間のデータパッシングを操作するように構成される、デバイス。
【請求項2】
前記データ操作が、少なくとも検索動作を含む、請求項1に記載のデバイス。
【請求項3】
前記データストリームが、該データストリームに暗号化されたデータを含み、プログラマブル論理デバイスが、前記データをクリプトサーチするように構成される、請求項2に記載のデバイス。
【請求項4】
プログラマブル論理デバイスが、該プログラマブル論理デバイスのクリプトサーチ動作の一部として、パターン一致が、大容量記憶媒体から取り出されることが望まれるデータを表す検索キーと、暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかの判定を実行するように構成される、請求項3に記載のデバイス。
【請求項5】
プログラマブル論理デバイスが、(1)大容量記憶媒体から暗号化され圧縮されたデータのストリームを受け取り、(2)暗号解読された圧縮されたデータストリームを作成するために受け取ったストリームを暗号解読し、(3)伸張され暗号解読されたデータストリームを作成するために暗号解読された圧縮されたデータストリームを伸張し、(4)伸張され暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項2に記載のデバイス。
【請求項6】
検索動作は、パターン一致が、大容量記憶媒体から取り出すことが望まれるデータを表す検索キーと、伸張され暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定することを含む、請求項5に記載のデバイス。
【請求項7】
プログラマブル論理デバイスが、FPGAである、請求項2に記載のデバイス。
【請求項8】
前記データ操作が、少なくとも圧縮動作を含む、請求項1に記載のデバイス。
【請求項9】
前記データ操作が、少なくとも伸張動作を含む、請求項1に記載のデバイス。
【請求項10】
前記データ操作が、少なくともデータ削減動作を含む、請求項1に記載のデバイス。
【請求項11】
前記データ操作が、少なくともデータ分類動作を含む、請求項1に記載のデバイス。
【請求項12】
プログラマブル論理デバイスが、システムバスを用いて大容量記憶媒体とインターフェースし、コンピュータシステムが、プログラマブル論理デバイスにデータ処理要求を通信するためにシステムバスにアクセスするように構成される、請求項1に記載のデバイス。
【請求項13】
プログラマブル論理デバイスが、コンピュータネットワークを介して大容量記憶媒体と通信する、請求項1に記載のデバイス。
【請求項14】
コンピュータネットワークが、インターネットである、請求項13に記載のデバイス。
【請求項15】
プログラマブル論理デバイスが、システムバスを用いて大容量記憶媒体とインターフェースし、コンピュータシステムが、プログラマブル論理デバイスにデータ処理要求を通信するためにコンピュータネットワークを介してシステムバスにアクセスするように構成され、デバイスが、コンピュータネットワークを介して大容量記憶媒体と通信する、請求項1に記載のデバイス。
【請求項16】
大容量記憶媒体が、データが保管される複数のディスクおよびディスクからデータを読み取る複数のヘッドを有するディスクシステムを含み、プログラマブル論理デバイスが、(1)複数の連続データストリームを大容量記憶媒体から受け取り、各データストリームは異なるヘッドから受け取られ、(2)並列に、受け取った連続データストリームに対する複数の処理動作を実行するように構成される、請求項1に記載のデバイス。
【請求項17】
連続ストリームで大容量記憶媒体との間で移動するデータを操作する方法であって、
大容量記憶媒体との間で移動する連続データストリームを受け取るステップと、
再構成可能ハードウェア論理を用いて前記連続ストリーム内のデータを操作するステップとを含む、方法。
【請求項18】
前記再構成可能ハードウェア論理が、FPGAに実装される、請求項17に記載の方法。
【請求項19】
前記操作するステップが、
暗号解読されたデータストリームを作成するために暗号化されたデータストリームを暗号解読するステップと、
暗号解読されたデータストリーム内の検索キーの存在を、暗号解読されたデータストリームから検索するステップとを含む、請求項18に記載の方法。
【請求項20】
検索キーが、取り出されることが要求されるデータを表し、検索するステップが、暗号解読されたデータストリームを表すデータ信号と検索キーとをフレームレスに比較し、かつ相関させることによって、暗号解読されたデータストリームを検索することを含む、請求項19に記載の方法。
【請求項21】
前記操作するステップが、
暗号解読された圧縮されたデータストリームを作成するために、暗号化され圧縮されたデータストリームを暗号解読することと、
伸張され暗号解読されたデータストリームを作成するために、圧縮されたデータストリームを伸張することと、
伸張され暗号解読されたデータストリーム内の検索キーの存在を、伸張され暗号解読されたデータストリームから検索することとを含む、請求項18に記載の方法。
【請求項22】
検索キーが、取り出されることが要求されるデータを表し、検索するステップが、伸張され暗号解読されたデータストリームを表すデータ信号と検索キーとをフレームレスに比較し、かつ相関させることによって、伸張され暗号解読されたデータストリームを検索することを含む、請求項21に記載の方法。
【請求項23】
前記操作するステップが、検索動作を実行することを含む、請求項18に記載の方法。
【請求項24】
前記操作するステップが、圧縮動作を実行することを含む、請求項18に記載の方法。
【請求項25】
前記操作するステップが、伸張動作を実行することを含む、請求項18に記載の方法。
【請求項26】
前記操作するステップが、データ削減動作を実行することを含む、請求項18に記載の方法。
【請求項27】
前記操作するステップが、データ分類動作を実行することを含む、請求項18に記載の方法。
【請求項28】
再構成可能論理デバイスにロードされるテンプレートは、操作するステップを規定し、前記方法は、さらに、
それぞれが異なる操作動作を規定する複数のテンプレートを保管することと、
FPGAにロードするために、保管されたテンプレートを選択することとを含む、請求項18に記載の方法。
【請求項29】
大容量記憶媒体と通信するプログラマブル論理デバイスについて、プログラマブル論理デバイスをプログラムするテンプレートを選択する方法であって、前記プログラマブル論理デバイスが、該プログラマブル論理デバイスにロードされたテンプレートに従って、大容量記憶媒体との間で移動するデータを処理するように構成され、テンプレートは、1つまたは複数の処理機能を規定し、各機能は、それによって実行されるデータ処理に関する関連する性能特性を有し、
テンプレートによって規定される各機能に関する判定された性能特性に少なくとも部分的に基づいて、プログラマブル論理デバイスにロードするために、複数の保管されたテンプレートから保管されたテンプレートを選択するステップを含む、方法。
【請求項30】
少なくとも1つの性能特性が、データスループットを含む、請求項29に記載の方法。
【請求項31】
少なくとも1つの性能特性が、機能によって消費されるプログラマブル論理デバイスリソースの量を含む、請求項29に記載の方法。
【請求項32】
選択するステップが、機能に関する少なくとも2つの性能特性に少なくとも部分的に基づいて保管されたプレートを選択することを含み、少なくとも2つの性能特性が、データスループットと、各機能によって消費されるプログラマブル論理デバイスリソースの量とを含む、請求項29に記載の方法。
【請求項33】
機能が、検索動作、データ削減動作、データ分類動作、暗号化動作、暗号解読動作、圧縮動作、および伸張動作からなる群から選択された少なくとも1つを含む、請求項32に記載の方法。
【請求項34】
機能が、暗号化および暗号解読からなる群から選択された少なくとも1つを含む、請求項33に記載の方法。
【請求項35】
プログラマブル論理デバイスが、FPGAであり、選択するステップが、各テンプレートによって規定される機能に関する判定されたデータスループット値およびリソース値に基づいて、所定のアルゴリズムに従ってテンプレートを選択することを含む、請求項32に記載の方法。
【請求項36】
選択するステップが、さらに、選択されたテンプレートの機能が、FPGAで使用可能なリソースの量を超えるFPGAのリソースを要求することができないという制約の下で、データスループットを最大にする保管されたテンプレートを選択することを含む、請求項35に記載の方法。
【請求項37】
選択するステップが、さらに、選択されたテンプレートの機能が、事前に決定された閾値未満の判定されたデータスループット値を有することができないという制約の下で、リソースを最小にする保管されたテンプレートを選択することを含む、請求項34に記載の方法。
【請求項38】
選択するステップが、プログラマブル論理デバイスが、大容量記憶媒体に保管されたデータを受け取り、かつ処理する要求を受け取る時に、動的に実行される、請求項29に記載の方法。
【請求項39】
データ処理システムであって、
データ記憶媒体と、
データ記憶媒体と通信する処理デバイスと、
システムバスを有するコンピュータシステムとを含み、該コンピュータシステムが、システムバスを介して処理デバイスと通信するように構成され、
処理デバイスが、処理パイプラインとしてプログラマブル論理デバイスで実装される複数のステージを介して、データがデータ記憶媒体とコンピュータシステムとの間で渡される時に、データを処理するように構成されたプログラマブル論理デバイスを含み、各処理ステージは、異なる処理動作専用である、データ処理システム。
【請求項40】
処理動作が、検索動作、データ削減動作、データ分類動作、暗号化動作、暗号解読動作、圧縮動作、および伸張動作からなる群から選択された少なくとも2つを含む、請求項39に記載のシステム。
【請求項41】
少なくとも2つの処理動作のうちの1つが、検索動作である、請求項40に記載のシステム。
【請求項42】
データ記憶媒体が、暗号化されたフォーマットでデータ記憶媒体に保管されたデータを含み、プログラマブル論理デバイスが、さらに、(1)データ記憶媒体から暗号化されたデータの連続ストリームを受け取り、(2)暗号解読されたデータストリームを作成するために受け取った連続ストリームを暗号解読し、(3)暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項41に記載のシステム。
【請求項43】
検索動作は、パターン一致が、データ記憶媒体から取り出されることが望まれるデータを表す検索キーと、暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項42に記載のシステム。
【請求項44】
データ記憶媒体が、暗号化され圧縮されたフォーマットでデータ記憶媒体に保管されたデータを含み、プログラマブル論理デバイスは、さらに、(1)データ記憶媒体から暗号化され圧縮されたデータのストリームを受け取り、(2)暗号解読された圧縮されたデータストリームを作成するために受け取ったストリームを暗号解読し、(3)伸張され暗号解読されたデータストリームを作成するために暗号解読された圧縮されたデータストリームを伸張し、(4)伸張され暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項41に記載のシステム。
【請求項45】
検索動作は、パターン一致が、データ憶媒体から取り出すことが望まれるデータを表す検索キーと、伸張され暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項44に記載のシステム。
【請求項46】
プログラマブル論理デバイスが、FPGAである、請求項41に記載のシステム。
【請求項47】
少なくとも2つの処理動作のうちの1つが、圧縮動作である、請求項40に記載のシステム。
【請求項48】
少なくとも2つの処理動作のうちの1つが、伸張動作である請求項40に記載のシステム。
【請求項49】
少なくとも2つの処理動作のうちの1つが、データ削減動作である、請求項40に記載のシステム。
【請求項50】
少なくとも2つの処理動作のうちの1つが、データ分類動作である、請求項40に記載のシステム。
【請求項51】
データ記憶媒体が、データを磁気的に保管するディスクドライブシステムを含み、該ディスクドライブシステムが、
回転可能ディスクを含み、該回転可能ディスク上で、データが複数の不連続円弧に磁気的に保管され、各円弧が、実質的に一定の曲率を有し、複数の不連続円弧が、中心原点の周りの全般的に螺旋状のパターンをともに画定し、前記ディスクドライブシステムがさらに、
データが回転可能ディスクから読み取られる時に、回転可能ディスクを回転させるデバイスと、
回転可能ディスクが回転する時に、回転可能ディスクに保管されたデータを読み取るために位置決めされる読取ヘッドと、
回転可能ディスクが回転する時に、読取ヘッドが不連続円弧の全般的に螺旋状のパターンに従うように、回転可能ディスク上で読取ヘッドを位置決めするように構成された位置決めシステムとを含む、請求項39に記載のシステム。
【請求項52】
複数のデータファイルが、データ記憶媒体に保管され、各データファイルが、セグメントのシーケンスとして保管され、各セグメントが、2のべきのサイズを有する、請求項39に記載のシステム。
【請求項53】
ハードディスクドライブとプロセッサとの間の接続用のハードディスクドライブアクセラレータであって、前記アクセラレータが、ハードディスクドライブから読み取られるデータが、プロセッサに渡される前に、再構成可能ハードウェア論理を通ってストリーミングするように構成された再構成可能ハードウェア論理を含み、再構成可能ハードウェア論理が、複数の処理ステージを含むパイプラインを介してデータストリームを処理するように構成され、各処理ステージが、処理ステージが受け取るデータに対してデータ処理動作を実行するように構成される、アクセラレータ。
【請求項54】
パイプラインのステージによって実行される処理動作が、検索動作、データ削減動作、データ分類動作、暗号化動作、暗号解読動作、圧縮動作、および伸張動作からなる群から選択されたいずれかである、請求項53に記載のアクセラレータ。
【請求項55】
再構成可能ハードウェア論理が、プログラマブル論理デバイスに実装され、ハードディスクドライブが、暗号化されたフォーマットでハードディスクドライブに保管されたデータを含み、プログラマブル論理デバイスが、(1)ハードディスクドライブから暗号化されたデータの連続ストリームを受け取り、(2)暗号解読されたデータストリームを作成するために受け取った連続ストリームを暗号解読し、(3)暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項54に記載のアクセラレータ。
【請求項56】
検索動作は、パターン一致が、ハードディスクドライブから取り出されることが望まれるデータを表す検索キーと、暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項55に記載のアクセラレータ。
【請求項57】
再構成可能ハードウェア論理が、プログラマブル論理デバイスに実装され、ハードディスクドライブが、暗号化され圧縮されたフォーマットでハードディスクドライブに保管されたデータを含み、プログラマブル論理デバイスが、(1)ハードディスクドライブから暗号化され圧縮されたデータのストリームを受け取り、(2)暗号解読された圧縮されたデータストリームを作成するために受け取ったストリームを暗号解読し、(3)伸張され暗号解読されたデータストリームを作成するために暗号解読された圧縮されたデータストリームを伸張し、(4)伸張され暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項54に記載のアクセラレータ。
【請求項58】
検索動作は、パターン一致が、大容量記憶媒体から取り出すことが望まれるデータを表す検索キーと、伸張され暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項57に記載のアクセラレータ。
【請求項59】
再構成可能ハードウェア論理が、FPGAに実装される、請求項54に記載のアクセラレータ。
【請求項60】
少なくとも1つのステージの処理動作が、検索動作である、請求項54に記載のアクセラレータ。
【請求項61】
少なくとも1つのステージの処理動作が、圧縮動作である、請求項54に記載のアクセラレータ。
【請求項62】
少なくとも1つのステージの処理動作が、伸張動作である、請求項54に記載のアクセラレータ。
【請求項63】
少なくとも1つのステージの処理動作が、データ削減動作である、請求項54に記載のアクセラレータ。
【請求項64】
少なくとも1つのステージの処理動作が、データ分類動作である、請求項54に記載のアクセラレータ。
【請求項65】
データを圧縮するデバイスであって、該データを圧縮するデバイスが、データ記憶媒体と通信するプログラマブル論理デバイスを含み、該プログラマブル論理デバイスが、(1)データソースからデータを受け取り、(2)圧縮されたデータを作成するために、受け取ったデータに対する圧縮動作を実行し、(3)圧縮されたデータをデータ記憶媒体に保管するように構成される、データを圧縮するデバイス。
【請求項66】
圧縮動作が、ロスレス圧縮動作である、請求項65に記載のデバイス。
【請求項67】
ロスレス圧縮動作が、LZ圧縮である、請求項66に記載のデバイス。
【請求項68】
プログラマブル論理デバイスが、FPGAであり、データソースが、バスを介してFPGAと通信するコンピュータシステムである、請求項65に記載のデバイス。
【請求項69】
データを伸張するデバイスであって、該データを伸張するデバイスが、データ記憶媒体と通信するプログラマブル論理デバイスを含む、データ記憶媒体が、圧縮されたフォーマットでデータ記憶媒体に保管されたデータを含み、プログラマブル論理デバイスが、(1)データ記憶媒体から圧縮されたデータの連続ストリームを受け取り、(2)伸張されたデータを作成するために、圧縮されたデータの受け取られた連続ストリームに対して伸張動作を実行するように構成される、データを伸張するデバイス。
【請求項70】
伸張動作が、ロスレス伸張動作である、請求項69に記載のデバイス。
【請求項71】
ロスレス伸張動作が、LZ伸張である、請求項70に記載のデバイス。
【請求項72】
プログラマブル論理デバイスが、FPGAであり、FPGAが、さらに、伸張されたデータに対する検索動作を実行するように構成される、請求項69に記載のデバイス。
【請求項73】
データ記憶媒体であって、該データ記憶媒体に、磁気読取ヘッドによる後続の取出のためにデータが磁気的に保管され、前記データ記憶媒体が、
回転可能な磁気媒体と、
データを保管するために磁気媒体に配置された複数の不連続円弧とを含む、データ記憶媒体。
【請求項74】
複数の不連続円弧が、中心原点の周りの磁気媒体上の全般的に螺旋状のパターンをともに画定する、請求項73に記載の媒体。
【請求項75】
各不連続円弧が、実質的に一定の曲率を有する、請求項74に記載の媒体。
【請求項76】
磁気媒体が、ディジタルデータが磁気的に保管されるディスクである、請求項75に記載の媒体。
【請求項77】
複数の不連続円弧が、中心原点から最短の半径距離に位置する不連続円弧から始めて、全般的に螺旋状のパターンに沿った各連続する不連続円弧が、全般的に螺旋状のパターンに沿った前の不連続円弧の半径距離より大きい中心原点からの半径距離に位置するように、全般的に螺旋状のパターンをともに画定し、各不連続円弧が、中心原点から2π/Wの角度に及び、Wは、回転可能磁気媒体の単一の回転中に読取ヘッドが出会う不連続円弧の総数を表す、請求項76に記載の媒体。
【請求項78】
均一の距離が、全般的に螺旋状のパターンに沿った各連続する不連続円弧を径方向に分離する、請求項76に記載の媒体。
【請求項79】
ディスクが、ハードディスクドライブ内に含まれるハードディスクである、請求項76に記載の媒体。
【請求項80】
各不連続円弧が、記録されたサーボパターンを含む、請求項76に記載の媒体。
【請求項81】
複数の不連続環状円弧にデータが保管される、回転可能プレーナ磁気記憶媒体からデータを読み取る方法であって、複数の不連続環状円弧が、中心原点の周りの全般的に螺旋状のパターンをともに画定し、
磁気記憶媒体を回転させるステップと、
磁気記憶媒体が回転する時に、磁気記憶媒体上の全般的に螺旋状のパターンに従うように読取ヘッドを位置決めするステップとを含む方法。
【請求項82】
各不連続環状円弧が、サーボパターンを含み、位置決めするステップが、不連続環状円弧のサーボパターンの感知に少なくとも部分的に基づいて、読取ヘッドを位置決めすることを含む、請求項81に記載の方法。
【請求項83】
データを磁気的に保管するディスクドライブシステムであって、
データが複数の不連続円弧に磁気的に保管される回転可能ディスクを含み、各円弧が、実質的に一定の曲率を有し、前記ディスクドライブシステムがさらに、
データが読み取られる時に回転可能ディスクを回転させるデバイスと、
回転可能ディスクが回転する時に、回転可能ディスクに保管されたデータを読み取るために位置決めされる読取ヘッドと、
回転可能ディスクが回転する時に、読取ヘッドが不連続円弧の全般的に螺旋状のパターンに従うように、回転可能ディスク上で読取ヘッドを位置決めするように構成された位置決めシステムとを含む、ディスクドライブシステム。
【請求項84】
複数の不連続円弧が、中心原点の周りの全般的に螺旋状のパターンをともに画定する、請求項83に記載のシステム。
【請求項85】
複数の不連続円弧が、中心原点から最短の半径距離に位置する不連続円弧から始めて、全般的に螺旋状のパターンに沿った各連続する不連続円弧が、全般的に螺旋状のパターンに沿った前の不連続円弧の半径距離より大きい中心原点からの半径距離に位置するように、全般的に螺旋状のパターンをともに画定し、各不連続円弧が、中心原点から2π/Wの角度に及び、Wは、回転可能磁気媒体の単一の回転中に読取ヘッドが出会う不連続円弧の総数を表す、請求項84に記載のシステム。
【請求項86】
記憶媒体にデータファイルを保管する方法であって、データファイルが、その中のバイトの総数を含むファイルサイズを有し、前記方法が、
ファイルサイズが端数のない2のべきである場合に、ファイルサイズと等しい、記憶媒体上の記憶空間のブロックを要求するステップと、
ファイルサイズが端数のない2のべきではない場合に、記憶媒体上の記憶空間の複数のブロックを要求するステップであって、各ブロックは、2のべきと等しいサイズを有する、要求するステップと、
要求は受け入れられる場合に、要求に従って、1つまたは複数のデータファイルセグメントとして記憶媒体にデータファイルを保管するステップとを含む方法。
【請求項87】
ファイルサイズが、2進数でF=Fk…F2F1として表すことができ、ファイルサイズは端数のない2のべきではない場合に、要求するステップは、F内の1と等しいビットの総数と等しい総数n個のブロックB1、…、Bnを要求することを含み、各ブロックBiが、F内の1と等しい異なるビットFiに対応し、2iのサイズを有する、請求項86に記載の方法。
【請求項88】
要求は受け入れられない場合に、記憶媒体に対する部分的デフラグメンテーションを実行するステップと、
実行するステップに応答して、記憶媒体上で十分な連続ブロックをクリアし、実行するステップによってクリアされた記憶媒体のブロックにデータファイルを保管するステップとをさらに含む、請求項86に記載の方法。
【請求項89】
実行するステップが、要求が受け入れられない場合に、記憶媒体に対するヒープマネージャ部分デフラグメンテーションアルゴリズムを実行することを含む、請求項88に記載の方法。
【請求項90】
記憶媒体が、ディスクである、請求項88に記載の方法。
【請求項91】
記憶媒体が、コンピュータメモリである、請求項88に記載の方法。
【請求項92】
記憶媒体にデータファイルを保管する方法であって、データファイルが、その中のバイトの総数を含むファイルサイズを有し、前記方法が、
データファイルまたはデータファイルのセグメントが、保管される記憶空間のブロックについて最小サイズ2mを維持するステップと、
ファイルサイズが、端数のない2のべきであり、かつ2m以上である場合に、ファイルサイズと等しい、記憶媒体上の記憶空間のブロックを要求するステップと、
ファイルサイズが2m未満の場合に、2mと等しい、記憶媒体上の記憶空間のブロックを要求するステップと、
ファイルサイズが、端数のない2のべきではなく、かつ2mを超える場合に、記憶媒体上の記憶空間の複数のブロックを要求するステップであって、各ブロックが、2のべきと等しく2m以上であるサイズを有する、要求するステップと、
要求が受け入れられた場合に、要求に従って記憶媒体にデータファイルを保管するステップとを含む、方法。
【請求項93】
ファイルサイズが、2進数でF=Fk…F2F1として表すことができ、ファイルサイズが端数のない2のべきではない場合に、要求するステップが、
Fm…F1の各ビットFiが0と等しい場合に、F内の1と等しいビットの総数と等しい総数n個のブロックB1、…、Bnを選択することであって、各ブロックBiが、F内で1と等しいビットFiに対応し、2iのサイズを有する、選択することと、
Fm−1…F1のいずれかのビットFiが1と等しい場合に、(1)Fを、Fより大きく、Rm−1…R1の各ビットRiが0と等しい最小値Rに丸め、(2)R内の1と等しいビットの総数と等しい総数n個のブロックB1、…、Bnを選択することであって、各ブロックBiが、R内で1と等しいビットRiに対応し、2iのサイズを有する、選択することとを含む、請求項92に記載の方法。
【請求項94】
要求が受け入れられない場合に、記憶媒体に対する部分的デフラグメンテーションを実行することと、
実行するステップに応答して、記憶媒体上で十分な連続ブロックをクリアし、実行するステップによってクリアされた記憶媒体のブロックにデータファイルを保管することとをさらに含む、請求項93に記載の方法。
【請求項95】
実行するステップが、要求が受け入れられない場合に、記憶媒体に対するヒープマネージャ部分デフラグメンテーションアルゴリズムを実行することを含む、請求項94に記載の方法。
【請求項96】
記憶媒体が、ディスクである、請求項95に記載の方法。
【請求項97】
記憶媒体が、コンピュータメモリである、請求項95に記載の方法。
【請求項1】
大容量記憶媒体と通信するプログラマブル論理デバイスであって、前記デバイスが、連続的データストリームでの前記大容量記憶媒体との間のデータパッシングを操作するように構成される、デバイス。
【請求項2】
前記データ操作が、少なくとも検索動作を含む、請求項1に記載のデバイス。
【請求項3】
前記データストリームが、該データストリームに暗号化されたデータを含み、プログラマブル論理デバイスが、前記データをクリプトサーチするように構成される、請求項2に記載のデバイス。
【請求項4】
プログラマブル論理デバイスが、該プログラマブル論理デバイスのクリプトサーチ動作の一部として、パターン一致が、大容量記憶媒体から取り出されることが望まれるデータを表す検索キーと、暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかの判定を実行するように構成される、請求項3に記載のデバイス。
【請求項5】
プログラマブル論理デバイスが、(1)大容量記憶媒体から暗号化され圧縮されたデータのストリームを受け取り、(2)暗号解読された圧縮されたデータストリームを作成するために受け取ったストリームを暗号解読し、(3)伸張され暗号解読されたデータストリームを作成するために暗号解読された圧縮されたデータストリームを伸張し、(4)伸張され暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項2に記載のデバイス。
【請求項6】
検索動作は、パターン一致が、大容量記憶媒体から取り出すことが望まれるデータを表す検索キーと、伸張され暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定することを含む、請求項5に記載のデバイス。
【請求項7】
プログラマブル論理デバイスが、FPGAである、請求項2に記載のデバイス。
【請求項8】
前記データ操作が、少なくとも圧縮動作を含む、請求項1に記載のデバイス。
【請求項9】
前記データ操作が、少なくとも伸張動作を含む、請求項1に記載のデバイス。
【請求項10】
前記データ操作が、少なくともデータ削減動作を含む、請求項1に記載のデバイス。
【請求項11】
前記データ操作が、少なくともデータ分類動作を含む、請求項1に記載のデバイス。
【請求項12】
プログラマブル論理デバイスが、システムバスを用いて大容量記憶媒体とインターフェースし、コンピュータシステムが、プログラマブル論理デバイスにデータ処理要求を通信するためにシステムバスにアクセスするように構成される、請求項1に記載のデバイス。
【請求項13】
プログラマブル論理デバイスが、コンピュータネットワークを介して大容量記憶媒体と通信する、請求項1に記載のデバイス。
【請求項14】
コンピュータネットワークが、インターネットである、請求項13に記載のデバイス。
【請求項15】
プログラマブル論理デバイスが、システムバスを用いて大容量記憶媒体とインターフェースし、コンピュータシステムが、プログラマブル論理デバイスにデータ処理要求を通信するためにコンピュータネットワークを介してシステムバスにアクセスするように構成され、デバイスが、コンピュータネットワークを介して大容量記憶媒体と通信する、請求項1に記載のデバイス。
【請求項16】
大容量記憶媒体が、データが保管される複数のディスクおよびディスクからデータを読み取る複数のヘッドを有するディスクシステムを含み、プログラマブル論理デバイスが、(1)複数の連続データストリームを大容量記憶媒体から受け取り、各データストリームは異なるヘッドから受け取られ、(2)並列に、受け取った連続データストリームに対する複数の処理動作を実行するように構成される、請求項1に記載のデバイス。
【請求項17】
連続ストリームで大容量記憶媒体との間で移動するデータを操作する方法であって、
大容量記憶媒体との間で移動する連続データストリームを受け取るステップと、
再構成可能ハードウェア論理を用いて前記連続ストリーム内のデータを操作するステップとを含む、方法。
【請求項18】
前記再構成可能ハードウェア論理が、FPGAに実装される、請求項17に記載の方法。
【請求項19】
前記操作するステップが、
暗号解読されたデータストリームを作成するために暗号化されたデータストリームを暗号解読するステップと、
暗号解読されたデータストリーム内の検索キーの存在を、暗号解読されたデータストリームから検索するステップとを含む、請求項18に記載の方法。
【請求項20】
検索キーが、取り出されることが要求されるデータを表し、検索するステップが、暗号解読されたデータストリームを表すデータ信号と検索キーとをフレームレスに比較し、かつ相関させることによって、暗号解読されたデータストリームを検索することを含む、請求項19に記載の方法。
【請求項21】
前記操作するステップが、
暗号解読された圧縮されたデータストリームを作成するために、暗号化され圧縮されたデータストリームを暗号解読することと、
伸張され暗号解読されたデータストリームを作成するために、圧縮されたデータストリームを伸張することと、
伸張され暗号解読されたデータストリーム内の検索キーの存在を、伸張され暗号解読されたデータストリームから検索することとを含む、請求項18に記載の方法。
【請求項22】
検索キーが、取り出されることが要求されるデータを表し、検索するステップが、伸張され暗号解読されたデータストリームを表すデータ信号と検索キーとをフレームレスに比較し、かつ相関させることによって、伸張され暗号解読されたデータストリームを検索することを含む、請求項21に記載の方法。
【請求項23】
前記操作するステップが、検索動作を実行することを含む、請求項18に記載の方法。
【請求項24】
前記操作するステップが、圧縮動作を実行することを含む、請求項18に記載の方法。
【請求項25】
前記操作するステップが、伸張動作を実行することを含む、請求項18に記載の方法。
【請求項26】
前記操作するステップが、データ削減動作を実行することを含む、請求項18に記載の方法。
【請求項27】
前記操作するステップが、データ分類動作を実行することを含む、請求項18に記載の方法。
【請求項28】
再構成可能論理デバイスにロードされるテンプレートは、操作するステップを規定し、前記方法は、さらに、
それぞれが異なる操作動作を規定する複数のテンプレートを保管することと、
FPGAにロードするために、保管されたテンプレートを選択することとを含む、請求項18に記載の方法。
【請求項29】
大容量記憶媒体と通信するプログラマブル論理デバイスについて、プログラマブル論理デバイスをプログラムするテンプレートを選択する方法であって、前記プログラマブル論理デバイスが、該プログラマブル論理デバイスにロードされたテンプレートに従って、大容量記憶媒体との間で移動するデータを処理するように構成され、テンプレートは、1つまたは複数の処理機能を規定し、各機能は、それによって実行されるデータ処理に関する関連する性能特性を有し、
テンプレートによって規定される各機能に関する判定された性能特性に少なくとも部分的に基づいて、プログラマブル論理デバイスにロードするために、複数の保管されたテンプレートから保管されたテンプレートを選択するステップを含む、方法。
【請求項30】
少なくとも1つの性能特性が、データスループットを含む、請求項29に記載の方法。
【請求項31】
少なくとも1つの性能特性が、機能によって消費されるプログラマブル論理デバイスリソースの量を含む、請求項29に記載の方法。
【請求項32】
選択するステップが、機能に関する少なくとも2つの性能特性に少なくとも部分的に基づいて保管されたプレートを選択することを含み、少なくとも2つの性能特性が、データスループットと、各機能によって消費されるプログラマブル論理デバイスリソースの量とを含む、請求項29に記載の方法。
【請求項33】
機能が、検索動作、データ削減動作、データ分類動作、暗号化動作、暗号解読動作、圧縮動作、および伸張動作からなる群から選択された少なくとも1つを含む、請求項32に記載の方法。
【請求項34】
機能が、暗号化および暗号解読からなる群から選択された少なくとも1つを含む、請求項33に記載の方法。
【請求項35】
プログラマブル論理デバイスが、FPGAであり、選択するステップが、各テンプレートによって規定される機能に関する判定されたデータスループット値およびリソース値に基づいて、所定のアルゴリズムに従ってテンプレートを選択することを含む、請求項32に記載の方法。
【請求項36】
選択するステップが、さらに、選択されたテンプレートの機能が、FPGAで使用可能なリソースの量を超えるFPGAのリソースを要求することができないという制約の下で、データスループットを最大にする保管されたテンプレートを選択することを含む、請求項35に記載の方法。
【請求項37】
選択するステップが、さらに、選択されたテンプレートの機能が、事前に決定された閾値未満の判定されたデータスループット値を有することができないという制約の下で、リソースを最小にする保管されたテンプレートを選択することを含む、請求項34に記載の方法。
【請求項38】
選択するステップが、プログラマブル論理デバイスが、大容量記憶媒体に保管されたデータを受け取り、かつ処理する要求を受け取る時に、動的に実行される、請求項29に記載の方法。
【請求項39】
データ処理システムであって、
データ記憶媒体と、
データ記憶媒体と通信する処理デバイスと、
システムバスを有するコンピュータシステムとを含み、該コンピュータシステムが、システムバスを介して処理デバイスと通信するように構成され、
処理デバイスが、処理パイプラインとしてプログラマブル論理デバイスで実装される複数のステージを介して、データがデータ記憶媒体とコンピュータシステムとの間で渡される時に、データを処理するように構成されたプログラマブル論理デバイスを含み、各処理ステージは、異なる処理動作専用である、データ処理システム。
【請求項40】
処理動作が、検索動作、データ削減動作、データ分類動作、暗号化動作、暗号解読動作、圧縮動作、および伸張動作からなる群から選択された少なくとも2つを含む、請求項39に記載のシステム。
【請求項41】
少なくとも2つの処理動作のうちの1つが、検索動作である、請求項40に記載のシステム。
【請求項42】
データ記憶媒体が、暗号化されたフォーマットでデータ記憶媒体に保管されたデータを含み、プログラマブル論理デバイスが、さらに、(1)データ記憶媒体から暗号化されたデータの連続ストリームを受け取り、(2)暗号解読されたデータストリームを作成するために受け取った連続ストリームを暗号解読し、(3)暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項41に記載のシステム。
【請求項43】
検索動作は、パターン一致が、データ記憶媒体から取り出されることが望まれるデータを表す検索キーと、暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項42に記載のシステム。
【請求項44】
データ記憶媒体が、暗号化され圧縮されたフォーマットでデータ記憶媒体に保管されたデータを含み、プログラマブル論理デバイスは、さらに、(1)データ記憶媒体から暗号化され圧縮されたデータのストリームを受け取り、(2)暗号解読された圧縮されたデータストリームを作成するために受け取ったストリームを暗号解読し、(3)伸張され暗号解読されたデータストリームを作成するために暗号解読された圧縮されたデータストリームを伸張し、(4)伸張され暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項41に記載のシステム。
【請求項45】
検索動作は、パターン一致が、データ憶媒体から取り出すことが望まれるデータを表す検索キーと、伸張され暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項44に記載のシステム。
【請求項46】
プログラマブル論理デバイスが、FPGAである、請求項41に記載のシステム。
【請求項47】
少なくとも2つの処理動作のうちの1つが、圧縮動作である、請求項40に記載のシステム。
【請求項48】
少なくとも2つの処理動作のうちの1つが、伸張動作である請求項40に記載のシステム。
【請求項49】
少なくとも2つの処理動作のうちの1つが、データ削減動作である、請求項40に記載のシステム。
【請求項50】
少なくとも2つの処理動作のうちの1つが、データ分類動作である、請求項40に記載のシステム。
【請求項51】
データ記憶媒体が、データを磁気的に保管するディスクドライブシステムを含み、該ディスクドライブシステムが、
回転可能ディスクを含み、該回転可能ディスク上で、データが複数の不連続円弧に磁気的に保管され、各円弧が、実質的に一定の曲率を有し、複数の不連続円弧が、中心原点の周りの全般的に螺旋状のパターンをともに画定し、前記ディスクドライブシステムがさらに、
データが回転可能ディスクから読み取られる時に、回転可能ディスクを回転させるデバイスと、
回転可能ディスクが回転する時に、回転可能ディスクに保管されたデータを読み取るために位置決めされる読取ヘッドと、
回転可能ディスクが回転する時に、読取ヘッドが不連続円弧の全般的に螺旋状のパターンに従うように、回転可能ディスク上で読取ヘッドを位置決めするように構成された位置決めシステムとを含む、請求項39に記載のシステム。
【請求項52】
複数のデータファイルが、データ記憶媒体に保管され、各データファイルが、セグメントのシーケンスとして保管され、各セグメントが、2のべきのサイズを有する、請求項39に記載のシステム。
【請求項53】
ハードディスクドライブとプロセッサとの間の接続用のハードディスクドライブアクセラレータであって、前記アクセラレータが、ハードディスクドライブから読み取られるデータが、プロセッサに渡される前に、再構成可能ハードウェア論理を通ってストリーミングするように構成された再構成可能ハードウェア論理を含み、再構成可能ハードウェア論理が、複数の処理ステージを含むパイプラインを介してデータストリームを処理するように構成され、各処理ステージが、処理ステージが受け取るデータに対してデータ処理動作を実行するように構成される、アクセラレータ。
【請求項54】
パイプラインのステージによって実行される処理動作が、検索動作、データ削減動作、データ分類動作、暗号化動作、暗号解読動作、圧縮動作、および伸張動作からなる群から選択されたいずれかである、請求項53に記載のアクセラレータ。
【請求項55】
再構成可能ハードウェア論理が、プログラマブル論理デバイスに実装され、ハードディスクドライブが、暗号化されたフォーマットでハードディスクドライブに保管されたデータを含み、プログラマブル論理デバイスが、(1)ハードディスクドライブから暗号化されたデータの連続ストリームを受け取り、(2)暗号解読されたデータストリームを作成するために受け取った連続ストリームを暗号解読し、(3)暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項54に記載のアクセラレータ。
【請求項56】
検索動作は、パターン一致が、ハードディスクドライブから取り出されることが望まれるデータを表す検索キーと、暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項55に記載のアクセラレータ。
【請求項57】
再構成可能ハードウェア論理が、プログラマブル論理デバイスに実装され、ハードディスクドライブが、暗号化され圧縮されたフォーマットでハードディスクドライブに保管されたデータを含み、プログラマブル論理デバイスが、(1)ハードディスクドライブから暗号化され圧縮されたデータのストリームを受け取り、(2)暗号解読された圧縮されたデータストリームを作成するために受け取ったストリームを暗号解読し、(3)伸張され暗号解読されたデータストリームを作成するために暗号解読された圧縮されたデータストリームを伸張し、(4)伸張され暗号解読されたデータストリーム内で検索動作を実行するように構成される、請求項54に記載のアクセラレータ。
【請求項58】
検索動作は、パターン一致が、大容量記憶媒体から取り出すことが望まれるデータを表す検索キーと、伸張され暗号解読されたデータストリームを表すデータ信号との間に存在するかどうかを判定するように構成される、請求項57に記載のアクセラレータ。
【請求項59】
再構成可能ハードウェア論理が、FPGAに実装される、請求項54に記載のアクセラレータ。
【請求項60】
少なくとも1つのステージの処理動作が、検索動作である、請求項54に記載のアクセラレータ。
【請求項61】
少なくとも1つのステージの処理動作が、圧縮動作である、請求項54に記載のアクセラレータ。
【請求項62】
少なくとも1つのステージの処理動作が、伸張動作である、請求項54に記載のアクセラレータ。
【請求項63】
少なくとも1つのステージの処理動作が、データ削減動作である、請求項54に記載のアクセラレータ。
【請求項64】
少なくとも1つのステージの処理動作が、データ分類動作である、請求項54に記載のアクセラレータ。
【請求項65】
データを圧縮するデバイスであって、該データを圧縮するデバイスが、データ記憶媒体と通信するプログラマブル論理デバイスを含み、該プログラマブル論理デバイスが、(1)データソースからデータを受け取り、(2)圧縮されたデータを作成するために、受け取ったデータに対する圧縮動作を実行し、(3)圧縮されたデータをデータ記憶媒体に保管するように構成される、データを圧縮するデバイス。
【請求項66】
圧縮動作が、ロスレス圧縮動作である、請求項65に記載のデバイス。
【請求項67】
ロスレス圧縮動作が、LZ圧縮である、請求項66に記載のデバイス。
【請求項68】
プログラマブル論理デバイスが、FPGAであり、データソースが、バスを介してFPGAと通信するコンピュータシステムである、請求項65に記載のデバイス。
【請求項69】
データを伸張するデバイスであって、該データを伸張するデバイスが、データ記憶媒体と通信するプログラマブル論理デバイスを含む、データ記憶媒体が、圧縮されたフォーマットでデータ記憶媒体に保管されたデータを含み、プログラマブル論理デバイスが、(1)データ記憶媒体から圧縮されたデータの連続ストリームを受け取り、(2)伸張されたデータを作成するために、圧縮されたデータの受け取られた連続ストリームに対して伸張動作を実行するように構成される、データを伸張するデバイス。
【請求項70】
伸張動作が、ロスレス伸張動作である、請求項69に記載のデバイス。
【請求項71】
ロスレス伸張動作が、LZ伸張である、請求項70に記載のデバイス。
【請求項72】
プログラマブル論理デバイスが、FPGAであり、FPGAが、さらに、伸張されたデータに対する検索動作を実行するように構成される、請求項69に記載のデバイス。
【請求項73】
データ記憶媒体であって、該データ記憶媒体に、磁気読取ヘッドによる後続の取出のためにデータが磁気的に保管され、前記データ記憶媒体が、
回転可能な磁気媒体と、
データを保管するために磁気媒体に配置された複数の不連続円弧とを含む、データ記憶媒体。
【請求項74】
複数の不連続円弧が、中心原点の周りの磁気媒体上の全般的に螺旋状のパターンをともに画定する、請求項73に記載の媒体。
【請求項75】
各不連続円弧が、実質的に一定の曲率を有する、請求項74に記載の媒体。
【請求項76】
磁気媒体が、ディジタルデータが磁気的に保管されるディスクである、請求項75に記載の媒体。
【請求項77】
複数の不連続円弧が、中心原点から最短の半径距離に位置する不連続円弧から始めて、全般的に螺旋状のパターンに沿った各連続する不連続円弧が、全般的に螺旋状のパターンに沿った前の不連続円弧の半径距離より大きい中心原点からの半径距離に位置するように、全般的に螺旋状のパターンをともに画定し、各不連続円弧が、中心原点から2π/Wの角度に及び、Wは、回転可能磁気媒体の単一の回転中に読取ヘッドが出会う不連続円弧の総数を表す、請求項76に記載の媒体。
【請求項78】
均一の距離が、全般的に螺旋状のパターンに沿った各連続する不連続円弧を径方向に分離する、請求項76に記載の媒体。
【請求項79】
ディスクが、ハードディスクドライブ内に含まれるハードディスクである、請求項76に記載の媒体。
【請求項80】
各不連続円弧が、記録されたサーボパターンを含む、請求項76に記載の媒体。
【請求項81】
複数の不連続環状円弧にデータが保管される、回転可能プレーナ磁気記憶媒体からデータを読み取る方法であって、複数の不連続環状円弧が、中心原点の周りの全般的に螺旋状のパターンをともに画定し、
磁気記憶媒体を回転させるステップと、
磁気記憶媒体が回転する時に、磁気記憶媒体上の全般的に螺旋状のパターンに従うように読取ヘッドを位置決めするステップとを含む方法。
【請求項82】
各不連続環状円弧が、サーボパターンを含み、位置決めするステップが、不連続環状円弧のサーボパターンの感知に少なくとも部分的に基づいて、読取ヘッドを位置決めすることを含む、請求項81に記載の方法。
【請求項83】
データを磁気的に保管するディスクドライブシステムであって、
データが複数の不連続円弧に磁気的に保管される回転可能ディスクを含み、各円弧が、実質的に一定の曲率を有し、前記ディスクドライブシステムがさらに、
データが読み取られる時に回転可能ディスクを回転させるデバイスと、
回転可能ディスクが回転する時に、回転可能ディスクに保管されたデータを読み取るために位置決めされる読取ヘッドと、
回転可能ディスクが回転する時に、読取ヘッドが不連続円弧の全般的に螺旋状のパターンに従うように、回転可能ディスク上で読取ヘッドを位置決めするように構成された位置決めシステムとを含む、ディスクドライブシステム。
【請求項84】
複数の不連続円弧が、中心原点の周りの全般的に螺旋状のパターンをともに画定する、請求項83に記載のシステム。
【請求項85】
複数の不連続円弧が、中心原点から最短の半径距離に位置する不連続円弧から始めて、全般的に螺旋状のパターンに沿った各連続する不連続円弧が、全般的に螺旋状のパターンに沿った前の不連続円弧の半径距離より大きい中心原点からの半径距離に位置するように、全般的に螺旋状のパターンをともに画定し、各不連続円弧が、中心原点から2π/Wの角度に及び、Wは、回転可能磁気媒体の単一の回転中に読取ヘッドが出会う不連続円弧の総数を表す、請求項84に記載のシステム。
【請求項86】
記憶媒体にデータファイルを保管する方法であって、データファイルが、その中のバイトの総数を含むファイルサイズを有し、前記方法が、
ファイルサイズが端数のない2のべきである場合に、ファイルサイズと等しい、記憶媒体上の記憶空間のブロックを要求するステップと、
ファイルサイズが端数のない2のべきではない場合に、記憶媒体上の記憶空間の複数のブロックを要求するステップであって、各ブロックは、2のべきと等しいサイズを有する、要求するステップと、
要求は受け入れられる場合に、要求に従って、1つまたは複数のデータファイルセグメントとして記憶媒体にデータファイルを保管するステップとを含む方法。
【請求項87】
ファイルサイズが、2進数でF=Fk…F2F1として表すことができ、ファイルサイズは端数のない2のべきではない場合に、要求するステップは、F内の1と等しいビットの総数と等しい総数n個のブロックB1、…、Bnを要求することを含み、各ブロックBiが、F内の1と等しい異なるビットFiに対応し、2iのサイズを有する、請求項86に記載の方法。
【請求項88】
要求は受け入れられない場合に、記憶媒体に対する部分的デフラグメンテーションを実行するステップと、
実行するステップに応答して、記憶媒体上で十分な連続ブロックをクリアし、実行するステップによってクリアされた記憶媒体のブロックにデータファイルを保管するステップとをさらに含む、請求項86に記載の方法。
【請求項89】
実行するステップが、要求が受け入れられない場合に、記憶媒体に対するヒープマネージャ部分デフラグメンテーションアルゴリズムを実行することを含む、請求項88に記載の方法。
【請求項90】
記憶媒体が、ディスクである、請求項88に記載の方法。
【請求項91】
記憶媒体が、コンピュータメモリである、請求項88に記載の方法。
【請求項92】
記憶媒体にデータファイルを保管する方法であって、データファイルが、その中のバイトの総数を含むファイルサイズを有し、前記方法が、
データファイルまたはデータファイルのセグメントが、保管される記憶空間のブロックについて最小サイズ2mを維持するステップと、
ファイルサイズが、端数のない2のべきであり、かつ2m以上である場合に、ファイルサイズと等しい、記憶媒体上の記憶空間のブロックを要求するステップと、
ファイルサイズが2m未満の場合に、2mと等しい、記憶媒体上の記憶空間のブロックを要求するステップと、
ファイルサイズが、端数のない2のべきではなく、かつ2mを超える場合に、記憶媒体上の記憶空間の複数のブロックを要求するステップであって、各ブロックが、2のべきと等しく2m以上であるサイズを有する、要求するステップと、
要求が受け入れられた場合に、要求に従って記憶媒体にデータファイルを保管するステップとを含む、方法。
【請求項93】
ファイルサイズが、2進数でF=Fk…F2F1として表すことができ、ファイルサイズが端数のない2のべきではない場合に、要求するステップが、
Fm…F1の各ビットFiが0と等しい場合に、F内の1と等しいビットの総数と等しい総数n個のブロックB1、…、Bnを選択することであって、各ブロックBiが、F内で1と等しいビットFiに対応し、2iのサイズを有する、選択することと、
Fm−1…F1のいずれかのビットFiが1と等しい場合に、(1)Fを、Fより大きく、Rm−1…R1の各ビットRiが0と等しい最小値Rに丸め、(2)R内の1と等しいビットの総数と等しい総数n個のブロックB1、…、Bnを選択することであって、各ブロックBiが、R内で1と等しいビットRiに対応し、2iのサイズを有する、選択することとを含む、請求項92に記載の方法。
【請求項94】
要求が受け入れられない場合に、記憶媒体に対する部分的デフラグメンテーションを実行することと、
実行するステップに応答して、記憶媒体上で十分な連続ブロックをクリアし、実行するステップによってクリアされた記憶媒体のブロックにデータファイルを保管することとをさらに含む、請求項93に記載の方法。
【請求項95】
実行するステップが、要求が受け入れられない場合に、記憶媒体に対するヒープマネージャ部分デフラグメンテーションアルゴリズムを実行することを含む、請求項94に記載の方法。
【請求項96】
記憶媒体が、ディスクである、請求項95に記載の方法。
【請求項97】
記憶媒体が、コンピュータメモリである、請求項95に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39a】
【図39b】
【図40】
【図41】
【図42】
【図43】
【図44a】
【図44b】
【図45】
【図46】
【図47a】
【図47b】
【図48】
【図49】
【図50】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39a】
【図39b】
【図40】
【図41】
【図42】
【図43】
【図44a】
【図44b】
【図45】
【図46】
【図47a】
【図47b】
【図48】
【図49】
【図50】
【公開番号】特開2012−14705(P2012−14705A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−156373(P2011−156373)
【出願日】平成23年7月15日(2011.7.15)
【分割の表示】特願2006−533393(P2006−533393)の分割
【原出願日】平成16年5月21日(2004.5.21)
【出願人】(500204278)ワシントン ユニヴァーシティー (14)
【Fターム(参考)】
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2011−156373(P2011−156373)
【出願日】平成23年7月15日(2011.7.15)
【分割の表示】特願2006−533393(P2006−533393)の分割
【原出願日】平成16年5月21日(2004.5.21)
【出願人】(500204278)ワシントン ユニヴァーシティー (14)
【Fターム(参考)】
[ Back to top ]