JP5265378B2 - 高性能正規表現パターンマッチングのための方法および装置 - Google Patents

高性能正規表現パターンマッチングのための方法および装置 Download PDF

Info

Publication number
JP5265378B2
JP5265378B2 JP2008543412A JP2008543412A JP5265378B2 JP 5265378 B2 JP5265378 B2 JP 5265378B2 JP 2008543412 A JP2008543412 A JP 2008543412A JP 2008543412 A JP2008543412 A JP 2008543412A JP 5265378 B2 JP5265378 B2 JP 5265378B2
Authority
JP
Japan
Prior art keywords
transition
input
indexed
word
input symbol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008543412A
Other languages
English (en)
Other versions
JP2009517782A (ja
Inventor
サイトロン,ロン・ケイ
テイラー,デイビツド・エドワード
ブロデイ,ベンジヤミン・カリー
Original Assignee
エクセジー・インコーポレイテツド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エクセジー・インコーポレイテツド filed Critical エクセジー・インコーポレイテツド
Publication of JP2009517782A publication Critical patent/JP2009517782A/ja
Application granted granted Critical
Publication of JP5265378B2 publication Critical patent/JP5265378B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、一般に、データシンボルストリームに属するいずれかの文字列がパターンとマッチするかどうかを決定するための、データシンボルからなるストリームの処理の分野に関する。
ネットワークおよびストレージサブシステム設計における進歩が、コンピュータシステム間およびコンピュータシステム内でデータストリームが処理されなければならない速度を押し上げ続けている。一方で、すべてのレベルのコンポーネントが、時間的制約のある動作をトリガし得るパターンに関してストリームを調べるので、そのようなデータストリームの内容は、ますます増加する精査に委ねられる。パターンは、文字列定数(例えば「dog」および「cat」)ばかりでなく、いくつかを挙げれば、クレジットカード番号、通貨価値、または電話番号などを表す、明細事項も含むことができる。広く使用されているパターン指定言語は、正規表現言語である。正規表現と、決定性有限オートマトン(DFA)によるそれらの実施は、よく発達した分野である。HopcroftおよびUllman、「Introduction to Automata Theory,Languages,and Computation」、Addison Wesley、1979年を参照されたく、その開示の全体は、参照により本明細書に組み込まれる。以下で説明されるように、DFAは、状態機械(state machine)の動作を定義する論理表現である。しかし、高性能パターンマッチングとの関連において、正規表現の使用を改善する必要性が当技術分野に存在すると、発明者らは本明細書において確信する。
パケットヘッダフィルタリングなど、いくつかのアプリケーションでは、与えられたパターンの位置は、固定されることができ、位置の固定は、パターンがデータストリーム内の1組の定められた位置で開始または終了する場合にのみ、マッチが発生する状況を示す。より一般的に、多くのアプリケーションでは、パターンは、データストリーム(例えば、非構造化データストリーム、パケットペイロードなど)内の任意の場所で開始または終了することができる。いくつかのアプリケーションは、データストリームのあらゆるバイトにおいて、数千のパターンの同時組み付けを必要とする。そのようなアプリケーションの例は、
(約10000個のパターンからなるルールベースを使用して一般に動作する)ネットワーク侵入検出/防止システム(Roesch,M.、「Snort−lightweight intrusion detection for networks」、LISA ’99:13th Systems Administration Conference、229−238ページ、1999年を参照されたく、その開示の全体は、参照により本明細書に組み込まれる)、
不適切または不法な内容を探し出すために発信電子メールをスキャンする電子メール監視システム、
ユーザ指定パターンを課して着信電子メールをフィルタリングするスパムフィルタ、
有害であることが知られているプログラムのシグニチャについてフィルタリングを行うウイルススキャナ、および
海賊版コンテンツを探し出すためにメディアファイルまたはソケットストリームをスキャンする著作権実施プログラム
を含むがこれらに限定されない。上記のようなアプリケーションでは、データストリーム内で探されるパターンの集合は、日々変化し得る。
今日の従来型ハイエンドワークステーションは、高速ネットワークおよびストレージサブシステムから発信されるデータストリームの速度を与えられるパターンマッチングアプリケーションと同じ速度を維持することができない。この性能ギャップに対処するため、発明者らは本明細書において、パイプラインアーキテクチャでのDFAの定式化および実現(例えば、ハードウェアロジック、ネットワーク化プロセッサ、またはその他のパイプライン化処理システム)におけるアーキテクチャ革新に解決策を求める。
正規表現rは、正規言語L(r)を表し、その場合、言語は、(有限)文字列からなる(おそらくは無限)集合である。各文字列は、アルファベットΣから取り出されたシンボルで構成される。正規表現の構文は、以下の基本表現を用いて、帰納的に定義される:
シンボルα∈Σは、{α}を表し、
シンボルλは、空(ゼロ幅)文字列を含む単集合を表し、
シンボルφは、空集合を表す。
上記の各々は、正規言語である。より複雑な正規表現は、当技術分野でよく知られているように、合併演算子、連接演算子、およびクリーネ閉包演算子を使用して、構成されることができる。シンボル範囲指示子および節反復係数が、統語上の便宜のため、一般に提供される。よく知られた正規表現表記および拡張のいずれもが、本発明を実施する際の使用に適しているが、perlが普及しているため、本明細書の説明および本発明の好ましい実施形態は、正規表現用にperl表記および拡張を支持する。
上で述べられたように、正規表現は、ファイル検索システムおよびネットワーク侵入検出システムを含むが、これらに限定されない、きわめて多くの検索アプリケーションにおいて、実際的な用途を見出す。ほとんどのテキストエディタおよび検索ユーティリティは、何らかの形式の正規表現構文を使用して、検索ターゲットを指定する。perl構文を使用する例示的な一例として、図1に示されるパターンは、米国の通貨価値を表す文字列とマッチするように意図されている。
バックスラッシュ「\」は、文字通りに解釈されるべき任意の特別なシンボルの前に置かれる、
文字範囲の下限値および上限値は、ダッシュ「―」を使用して指定され、
「+」符号は、直前の表現が1回以上繰り返され得ることを表し、
中括弧内の単一の数は、直前の表現が指定された回数だけ正確に繰り返され得ることを表し、
中括弧内の対をなす数は、直前の表現についての繰り返しの範囲を表す。
したがって、上記の表現とマッチする文字列は、シンボル「$」で始まり、それに10進数字からなる何らかの正の数が続き、その文字列には、任意選択で、10進小数点「.」と、さらに正確に2つの10進数字が続く。実際には、そのようなマッチについてのパターンは、マッチが(空白など)何らかの区切り符号によって囲われることも指定することができ、その結果、文字列「$347.12」は、4つのマッチ(すなわち、「$3」、「$34」、「$347」、「$347.12」)ではなく、1つのマッチをもたらす。
正規表現を使用して対象とするパターンを指定するアプリケーションは、一般に以下のように動作する。正規表現rと、ターゲット文字列t(一般にファイルなど何らかの入力ストリームの内容)を所与として、L(r)内でtの部分文字列をすべて見出す。部分文字列は、t内のその位置によって一般に報告される。したがって、別途指摘がない限り、パターンrがターゲット内のあらゆる位置で適用され、すべてのマッチが報告されることが、一般に意図される。
正規表現を使用して指定されるパターンを認識するための最も簡単で最も実用的なメカニズムは、DFAであり、DFAは、形式的に5つ組
(Q,Σ,q,δ,A)
として記述され、ここで、
Qは、状態の有限集合であり、
Σは、入力シンボルのアルファベットであり、
∈Qは、DFAの初期状態であり、
δは、遷移関数:
Figure 0005265378
であり、
A⊆Qは、アクセプト状態の集合である。
DFAは、以下のように動作する。DFAは、状態qで始まる。DFAが状態qにある場合、次の入力シンボルaは、δ(q,a)によって決定される遷移を引き起こす。DFAが状態q∈Aへの遷移をおこす場合、その時点までに処理された文字列はアクセプトされ、DFAによって認識される言語内にある。例示的な一例として、図1の正規表現は、マッチの開始位置を任意(非位置固定)にするステップを含む一連のよく知られたステップを使用して、図2に示される正準DFAに翻訳されることができる(上で引用されたHopcroftおよびUllmanの参考文献を参照されたい)。便宜上、図2のDFAは、集合{0,1,2,3,4,5,6,7,8,9}を表すために、用語「[0−9]」を使用し、集合{0,1,2,3,4,5,6,7,8,9,$,.}内にないΣのすべてのシンボルを表すために、シンボル「〜」を使用する。
DFAの構成は、非決定性有限オートマトン(NFA)が構成される中間ステップを一般に伴う。DFAが各入力シンボルおよび状態についてたかだか1つの遷移を許容する有限状態機械であるのに対して、NFAは各入力シンボルおよび状態について2つ以上の遷移を許容する有限状態機械である点で、NFAはDFAとは異なる。また、あらゆる正規言語は、その言語を認識するのに必要とされる状態の数を最小化することによって取得される、正準(canonical)DFAを有する。本明細書において別途指摘がない限り、すべてのオートマトンは正準(決定性)形式にあることが仮定されるべきである。
しかし、パターンマッチングの目的にとって、図2に示されるDFAは以下の点で不十分であると、発明者らは本明細書において確信する。
正規表現のアルファベット内にないシンボルは、DFAがブロックされる原因となる。パターンマッチングの場合、DFAがマッチの探索を継続し得るように、そのようなシンボルは、DFAによって無視されるべきである。この不完全性は、以下のようにDFAを完成することによって、克服されることができる。
ターゲット文字列内で発生し得るどのようなシンボルも含むように、アルファベットが広げられる。本明細書では、Σは、256個のシンボルを含むASCIIキャラクタセットであることが仮定される。
新しい状態Uを有するように、DFAが拡大される。Q←Q∪{U}。
それまでδが定義されていなかった、すべてのq∈Q、a∈Σに対して、δ(q,a)=Uと定義することによって、遷移関数δが完成される。
マッチは、ターゲット文字列の先頭文字からマッチが始まる場合にのみ見出される。パターンマッチングアプリケーションは、ターゲット内の任意の位置における示されたパターンの発生をすべて見出すことに関心がある。この不完全性は、DFAがあらゆる位置でリスタートすることを可能にすることによって、克服されることができる。形式的には、あらゆるq∈Qからqへのλ遷移が挿入される。
上述の拡大の結果は、DFAを取得するための知られた技法を介して、正準DFAに変換され得るNFAである。図3は、正準DFAの例示的な一例を提供している。
DFAは、その遷移δをテーブルとして実現することによって、一般に解釈的に実施され、各行は、DFAの状態に対応し、各列は、入力シンボルに対応する。図3のDFAについての遷移テーブルが、図4に示されている。DFAのためのアルファベットΣが、(多くのアプリケーションでしばしばそうであるように)ASCIIキャラクタセットである場合、図4の遷移テーブルは、256個の列を有する。図4の遷移テーブル内の各エントリは、次状態識別子を含む。したがって、図4の遷移テーブルは、以下のように機能する。DFAの現在状態がBであり、次の入力シンボルが2である場合、「D」が現在状態Bと入力シンボル2によってインデックス付けされた次状態識別子であるので、遷移テーブルは、状態Dへの遷移を呼び出す。本明細書の説明では、シンボル符号化との混同を避けるため、状態は文字によってラベル付けされる。しかし、実際には、状態は遷移テーブル内で整数インデックスによって一般に表されることに留意されたい。
パイプライン化アーキテクチャでDFAを実施するためのパターンマッチング技法は、本明細書で開示される新規なパターンマッチングアーキテクチャによって大きく改善され得ると、発明者らは本明細書において確信する。
本発明の一態様によれば、すべての状態依存(反復、フィードバック依存)動作をパイプラインの最終ステージに委ねるパイプライン化戦略が開示される。好ましくは、遷移テーブル検索は、DFAによって処理される入力シンボルに対応するすべての遷移テーブルエントリを取り出すように動作する。遷移テーブルメモリからの遷移エントリの取り出しは、DFAの現在状態に基づいていない。代わりに、遷移テーブルメモリからの取り出しは、処理される入力シンボルに対応するデータに基づいて、1組の保存された遷移エントリを取り出すように動作する。
入力データストリームの入力シンボルを同値類(equivalence classs)識別子(ECI)にマッピングするためにアルファベット符号化が使用される好ましい一実施形態では、これらの遷移テーブルエントリは、ECIに対応するデータによって、1つまたは複数の入力シンボルに間接的にインデックス付けされる。この改良は、単一サイクル状態遷移決定の実行を可能にし、より複雑な圧縮および符号化技法の使用を可能にし、アーキテクチャのスループットおよびスケーラビリティを向上させる。
本発明の別の態様によれば、遷移テーブルの遷移は、好ましくは、遷移を引き起こした入力シンボルの受け取り時に、入力シンボル文字列のパターンとのマッチが発生したかどうかを表すマッチフラグを含む。同様に、遷移テーブルの遷移は、好ましくは、遷移を引き起こした入力シンボルの受け取り時に、マッチングプロセスがリスタートしたかどうかを表すマッチリスタートフラグを含む。アクセプト状態は取り除かれ、遷移のマッチフラグ内にまとめられ得るので、各遷移におけるマッチフラグの存在は、DFA内の状態の数が、従来のDFAに比べて減少されることを可能にする。マッチリスタートフラグの存在は、DFAが、非位置固定パターンとマッチする入力ストリームの部分文字列を識別することを可能にする。併せて、遷移におけるこれらのフラグの存在は、本発明の別の態様に貢献し、その態様では、好ましいDFAは、サイクル当たりに処理されるバイトの数をスケールアップする能力を有するように構成される。状態遷移は、(クロックサイクル当たり単一の入力シンボルのみを処理するように制限されるのではなく)m個の入力シンボルからなる系列によってトリガされることができ、mは1以上である。本明細書で開示されるように、遷移がマッチフラグおよびマッチリスタートフラグを含む含み方のため、DFAは、DFAによってグループとして処理されるm個の入力シンボルからなる系列に属する先行または中間入力シンボルの結果として、マッチが入力ストリーム内のどこでいつ発生したかを依然として検出することができる。
本発明のまた別の態様によれば、高スループットDFAを実現するのに必要とされる資源を著しく低減するために、増加スケーリング技法、圧縮技法、および文字符号化技法が使用される。例えば、DFA遷移テーブルによって消費されるメモリの量を低減(すなわち圧縮)するために、ランレングス符号化が使用されることができる。さらに、その後、DFAについての次状態を決定するために、ランレングス符号化された遷移に基づいて、状態選択ロジックが動作する。遷移テーブルメモリの検討対象部分から、処理される入力シンボルのECIに対応する遷移を含まないワードを除去するために、マスキングが状態選択ロジックで使用されることができる。
また、本発明のまた別の態様によれば、ECIを遷移テーブルメモリ内の遷移にマッピングするために、インダイレクションレイヤが使用されることができる。このインダイレクションレイヤは、遷移テーブルメモリ内の遷移エントリについてのランレングス符号化プロセスを最適化するのに、また遷移テーブルメモリに対して必要なアクセスの回数を最小化し得るように、ランレングス符号化された遷移エントリを遷移テーブルメモリのワードに効果的にパッキングするプロセスを最適化するのに有効な、様々な最適化技法の使用を可能にする。インダイレクションを使用して、インダイレクションテーブルメモリ内のインダイレクションエントリは、遷移テーブルメモリ内の遷移エントリへのECIのマッピングを、遷移テーブルメモリ内の遷移エントリに対して実行されたいずれの最適化プロセスも考慮に入れて構成するように、データ投入されることができる。
さらに、本発明の別の態様によれば、遷移テーブル内でDFA状態を順序よく配置し、それによって、ランレングス符号化された遷移の効率を高めてDFAのメモリ要件を改善するための最適化アルゴリズムが、本明細書で開示される。
さらにまた、複数のメモリワードにまたがる共通の対応する入力シンボル(またはECIなどのその派生物)を共有する遷移テーブルエントリの数が最小化されるように、遷移テーブルエントリをメモリワード内に効率的にパッキングするための最適化アルゴリズムが、本明細書で開示される。メモリの効率的なパッキングは、1つまたは複数の入力シンボルを処理するときに必要とされるメモリアクセスの回数を低減することができるので、このメモリパッキングプロセスは、DFAのスループットを改善するように動作する。
本発明の別の態様によれば、検索中に適用されるパターンは、パイプラインアーキテクチャ自体のロジックを変更することなく、動的に変更されることができる。正規表現コンパイラは、新しい正規表現に対してパターンマッチングパイプラインを再プログラムするために、遷移テーブルメモリ、インダイレクションテーブル、ECIマッピングテーブル、および関連レジスタにデータ投入しさえすればよい。
本明細書で提示されるDFA設計に対する改良に基づくことで、本発明の好ましい実施形態によって達成されるスループットおよび密度は、その他の知られたパターンマッチングソリューションを大きく上回ると、発明者らは本明細書において確信する。
本発明の上記およびその他の特徴が、これ以降で説明され、それらは、以下の明細書および図面を検討することで、当業者には明らかとなろう。
図5は、本発明の好ましい実施形態の概要を示している。好ましい実施形態のアーキテクチャは、正規表現回路502内に示されており、正規表現回路502は、複数の連続的な入力シンボルを含む入力データストリームに基づいて動作するパターンマッチング回路として機能する。好ましくは、正規表現回路502は、ハードウェアロジックで実装される(例えば、FPGAなどの再構成可能なハードウェアロジック、またはASICなどの再構成不可能なハードウェアロジック)。本発明の実施者によって望まれるのであれば、正規表現回路502iの1つまたは複数が同じデバイス上に実装され得ることに留意されたく、図24には、そのことも反映されている。また、正規表現回路は、マルチプロセッサシステムなど、その他のパイプライン化アーキテクチャで実施されることもでき、その場合、各プロセッサは、正規表現回路のパイプラインステージとして機能する。そのような例においては、パイプラインに属する異なるプロセッサは、互いにネットワーク接続されることができる。
正規表現回路のデータテーブルおよび関連レジスタは、好ましくは、正規表現コンパイラ500の出力によってデータ投入される。正規表現コンパイラ500は、本明細書で説明されるような正規表現回路502によって実現されるDFAを生成するために、指定された(好ましくはユーザ指定された)正規表現を処理するように動作する。好ましくは、正規表現コンパイラ500は、パーソナルコンピュータ、ワークステーション、またはサーバのCPUなどの汎用プロセッサによって実行されるソフトウェアで実施される。
正規表現コンパイラ500は、ネットワークデータ通信、直接インタフェース、およびシステムバスを含むが、これらに限定されない、任意の適切なデータ通信技法によって、正規表現回路502と通信する。
正規表現回路502は、好ましくは、複数のパイプラインステージを介して、1つまたは複数の指定された正規表現によって定義されるDFAを実現する。第1のパイプラインステージは、好ましくは、m個の入力シンボルからなる入力からECI出力を生成するアルファベット符号化ステージ504であり、mは、1以上の整数とすることができる。第2のパイプラインステージは、好ましくは、インダイレクションテーブルメモリステージ506である。インダイレクションテーブルメモリ状態506は、様々な方法でアドレシングされることができる。好ましくは、インダイレクションテーブルメモリステージ506は、アルファベット符号化ステージ504のECI出力によって直接的にアドレシングされる。第3のパイプラインステージは、インダイレクションテーブルメモリステージ506の出力からインダイレクションテーブルエントリを受け取り、受け取られたインダイレクションエントリを、遷移テーブルメモリステージ510内の1つまたは複数のアドレスに変換するように動作する、遷移テーブルロジックステージ508である。遷移テーブルロジックステージ508は、好ましくは、(マスキング動作に関連して以下で説明されるように)受け取られたインダイレクションテーブルエントリを、状態選択ロジックステージが遷移テーブルメモリステージ510からの出力を処理するときに、状態選択ロジックステージ512によって使用されるデータにも変換する。
遷移テーブルメモリステージ510は、DFAの次状態を決定し、またマッチが見出されたかどうかを決定するために、DFAによって使用される遷移を保存する。状態選択ロジックステージ512は、遷移テーブルメモリステージ510から出力された遷移エントリの1つまたは複数を受け取り、またDFAの現在状態と受け取られた遷移とに基づいてDFAの次状態を決定するように動作する。任意選択で、以下で説明される状態選択ロジックステージ512内のマスキング動作514および516は、独立したマスキングパイプラインステージ、または2つの独立したマスキングパイプラインステージ(先頭マスキングパイプラインステージおよび終端マスキングパイプラインステージ)に分割されることができる。これらのステージの各々についてのさらなる詳細が、本明細書で提示される。
高スループットDFA
従来のDFAは、一度に1つの入力シンボル(バイト)を処理し、次状態を決定するために各バイトに基づいてテーブル検索を実行する。しかし、現代の通信インタフェースおよび相互接続は、サイクル当たり複数のバイトをしばしば転送し、そのことが、より高いスループットの達成に関して、従来のDFAを「ボトルネック」にする。スループットとは、データストリームが処理され得る速度、すなわち、設計およびその実施によって受け入れられ得る1秒当たりのバイト数のことである。
従来のDFAの拡張は、m個のシンボルからなる文字列に基づいた単一の遷移の実行を可能にするDFAである。ClarkおよびSchimmel、「Scalable pattern matching for high speed networks」、IEEE Symposium on Field−Programmable Custom Computing Machines、2004年4月を参照されたく、その開示の全体は、参照により本明細書に組み込まれる。すなわち、DFAは、m個の入力シンボルをグループとして、入力ストリームを処理する。形式的には、この適応は、アルファベットΣに基づいたDFAをもたらし、対応する遷移テーブルは、|Q||Σ|のサイズをもつ。この明らかに劇的な資源要件の増大は、本明細書で説明される圧縮技法によって緩和される。便宜上、δは、長さmの系列に基づいて動作する遷移関数を表すとし、δ=δである。
例示的な一例として、一度に2バイト(m=2)を処理することによって、図3に示されたDFAの実効スループットを2倍にすることについて検討する。図4のテーブルに基づいて、現在状態がEである場合、入力系列「2$」は、状態Bへの遷移をもたらし、すなわち、δ(E,2$)=δ(δ(E,2),$)=Bである。そのような2文字系列をすべて考慮することによって、以下で説明されるように、完全な遷移テーブルが、このスループットがより高いDFAについて計算されることができる。
一般に、与えられたDFAについてδを構成するアルゴリズムは単純である。状態の集合は、変化せず、遷移関数(テーブル)は、各状態からの進行を長さmのあらゆる可能な系列についてシミュレーションすることによって計算される。そのアルゴリズムは、サイズがθ(|Q||Σ|)のテーブルを計算するのに、θ(|Q||Σ|m)の時間を要する。より高速なアルゴリズムは、以下の形式の動的プログラミングによって取得されることができる。
Figure 0005265378
について検討する。その場合、
Figure 0005265378
となる。上述の説に基づいたアルゴリズムが、図6に示されている。
スループットがより高いDFAを取得するため、図6のアルゴリズムは、繰り返して呼び出されることができ、各回のたび、サイクル当たり処理されるシンボルの有効数は2倍になる。これは、δをO(|Q||Σ|log m)まで計算する複雑さを低減する。さらに、冗長な列を識別することによって、各テーブルの有効アルファベットは、以下の「アルファベット符号化」セクションで説明されるような符号化を用いて、実際には著しく減少されることができる。
高スループットDFA:アクセプト
スループットがより高いDFAは、サイクル当たり複数の遷移を実行するので、遷移中に元のDFAのアクセプト状態を通過することがあり得る。したがって、一連の遷移(trace)中にアクセプト状態が通過されたかどうかを含むように、遷移関数を拡大する。
δ:Q×Σ→Q×{0,1}
値域の第2の成分は、遷移を引き起こしたシンボルの系列が、元のDFAにアクセプト状態を通過させる非空のプレフィックスを含むかどうかを示す。
「アクセプト」(マッチ)情報は、スループットがより高いDFAの辺に関連付けられるので、この形式の遷移関数は、アクセプト状態Aの集合の必要性を回避する。これは、以下の「ストライドと符号化の相乗的組み合わせ」セクションで定義される修正DFAによって形式化される。
好ましいDFAは、どの中間シンボルが実際にアクセプト(マッチ)を発生させたかを追跡していないので、m>1の場合、アクセプトは不明確である。速度を優先するため、高スループットDFAは、不明確なアクセプトを許容して、アクセプト点の正確な決定をソフトウェア後処理に委ねるように構成されることができる。
高スループットDFA:リスタート
先に説明されたように、正規表現のためのパターンマッチングDFAは、好ましくは、ターゲット文字列のいたる所でマッチが発生することを可能にする遷移を用いて拡大される。マッチはターゲット内のどこを開始位置としても発生し得るので、アクセプトは、ターゲット内におけるマッチの開始位置を報告すべきである。開始点がいつ設定されるかは、図3のオートマトンでは明らかでない。例えば、状態Aへのすべての遷移は、開始点を設定するが、「$」に基づいた状態Bへの遷移もそうである。EからAへの遷移を考えると、「〜」または「.」はリスタートであるが、数字(digit)はアクセプトである。
マッチの位置独立を達成するために導入されるλ遷移は、通常の構成を介してDFAに変換され得るNFAをもたらす。以下の「ストライドと符号化の相乗的組み合わせ」セクションは、オートマトンのマッチングプロセスをリスタートするためにのみ役立つ遷移を識別するために、その構成をどのように修正すべきかを説明する。
形式的には、遷移関数は、もう一度、今度はいつリスタートが発生するかを示すために拡大される。
δ:Q×Σ→Q×{0,1}×{0,1}
第1のフラグは、リスタート遷移(「マッチリスタート」フラグ)を表し、第2のフラグは、アクセプト遷移(「マッチ」フラグ)を表す。したがって、DFA図は、これ以降、緑色の辺を用いてリスタート遷移を、赤色の辺を用いてアクセプト辺を示す。例えば、図7は、一度に1つのシンボルを処理し、図1によって表される言語を認識するオートマトンについての図の例示的な一例を示している。任意選択で、状態Aへの遷移に関する辺は、黒色として符号化され、しかるべくフラグ設定されることができ、状態Bへの遷移に関する辺だけが、緑色として符号化され、しかるべくフラグ設定される。色付けされた辺を有するDFAの動作は、以下のようになる。オートマトンは、マッチの開始および終了を記録するための文脈変数(context variable)bおよびeを含み、最初、b=e=0であり、ターゲットの第1のシンボルのインデックスは1である。これらの変数は、マッチング文字列の位置が、図24に示されるような文脈バッファ(context buffer)内で見出されることを可能にする。その後、以下のように遷移が実行される。
黒色:eがmだけ、すなわち、遷移を引き起こした入力文字列の長さである、オートマトンのストライド(stride)だけ進められる。図6では、m=1である。マッチは進行中であり、ここまで関与しているターゲット文字列の部分は、両端を含んで、位置bで開始し、位置eで終了する。
赤色のみ:eがmだけ増やされ、マッチが宣言される。マッチを引き起こしたターゲット部分文字列は、位置bで開始し、位置eで終了する。
緑色のみ:bがmだけ増やされ、eはbと同じに設定される。オートマトンは、マッチプロセスをリスタートする。
赤色および緑色:緑色動作の前に、赤色動作が実行される。
図9は、図7のDFAに関連する遷移テーブルを示しており、遷移テーブルの各遷移エントリは、次状態識別子に加えて、マッチフラグおよびマッチリスタートフラグを含む。アクセプトについての情報は、辺(δ関数)に関連付けられるので、色付けされた辺を有するDFAは、正準DFAよりも少ない状態を有することができる。
マッチフラグおよびマッチリスタートフラグの使用は、DFAを拡大して、サイクル当たり複数の入力シンボルを処理する場合に特に有用である。図10(b)は、図1の正規表現のための遷移テーブルを示しており、mは2に等しい。図10(a)は、この例についてのシンボル符号化を示している。したがって、サイクル当たり複数の入力シンボルを処理する場合であっても、フラグは状態よりもむしろマッチステータス情報を保つので、DFAは、m個の入力シンボルからなるグループの先行または中間シンボル上でマッチおよびリスタートがいつ発生したかを検出することができる。
アルファベット符号化
上で説明されたように、遷移テーブル(δ)のサイズは、各サイクルで消費される入力系列の長さに伴って指数関数的に増大する。本セクションでは、シンボルアルファベットを符号化するための技法が提示され、その目標は、遷移テーブルのサイズを低減し、ひいてはサイクル当たりに処理されるシンボルの数を最大化することである。
しばしば、与えられた正規表現で使用されるシンボルの集合は、検索ターゲットのアルファベットΣと比べて小さい。ターゲット内に存在するが、パターン内には示されないシンボルは、正規表現に関してDFAにおいて必然的に同じ扱いを与えられる。より一般的には、シンボルのある集合上でのDFAの挙動は、その集合内のすべてのシンボルについて同一となる場合があり得る。例示的な一例として、図1の正規表現は、ASCIIキャラクタセットのわずかな部分のみを使用する。数字についての遷移は、図3に示されたDFAでは同じであり、シンボル「〜」は、集合{0,1,2,3,4,5,6,7,8,9,$,.}内にないASCIIセットのすべてのシンボルを表す。
正規表現は、「[0−9]」のように、文字クラスを明示的に表現することができるが、より汎用的な手法は、等価の状態−遷移挙動(state−transition behavior)についてDFAを分析することによって達成される。形式的には、
(∃a∈Σ)(∃b∈Σ)(∀q∈Q)δ(q,a)=δ(q,b)
である場合、aとbは「遷移同値(transition equivalent)」であると言われることができる。
遷移テーブル
Figure 0005265378
を所与として、Σを同値類に区分するためのO(|Sigma||Q|)のアルゴリズムが、図8に示されている。図1の例を使用すると、アルゴリズムは、図1で暗示されたシンボルの同値類を生成して、図9(b)に示される4つの列を形成する。区分は、整数からなる集合Kと、ΣからKへのマッピングkによって表される。アルファベットシンボルの同値性は状態同値によって決定されるので、最良の結果は、状態同値がすでに決定された正準DFAに、δが対応する場合に得られる。
関連する正規表現を検査する代わりに、DFAを使用して同値類を計算することは、以下の理由から好ましい。
正規表現は、同値類を暗示し得る範囲またはその他の表記法(gesture)を使用せずに指定されることができる。例示的な一例として、aとbは、正規表現「(ac)|(bc)」に関して、DFAにおいて同値とされ得るが、それらの同値性は、正規表現では明白ではない。
同値類は、正規表現の局所的検査によってはしばしば決定することができない。例示的な一例として、正規表現「[0−9]a|5c」は、句「[0−9]」を含むが、その範囲の1つの要素(5)は、その他の句のために、その他のシンボルと同じ遷移を共有しない。この場合の適切な区分は、{{0,1,2,3,4,6,7,8,9},{5}}である。
形式的には、図8の関数は、区分、すなわち集合を生成し、その各要素は、DFAにおいて同じに扱われるΣ内のシンボルからなる集合である。関数は、その区分のより便利な形式をkにより生成し、それは、各シンボルをその同値類を表す整数にマッピングする(整数は「同値類識別子」(ECI)として機能する)。その後、シンボル符号化に基づいたDFAは、以下の2つのステージで動作する。第1に、次の入力シンボルが、図8のアルゴリズムによって決定されるその同値類を表すECIに、kによってマッピングされる。第2に、DFAは、その現在状態とECIを使用して、DFAの次状態を決定することができる。
これまでに提示されたアイデアに基づいて、図7は、一度に単一のシンボルを処理するDFAの例示的な一例を示しており、赤色の辺は「アクセプト」を表し、緑色の辺は「リスタート」を表す。図8のアルゴリズムを使用する分析は、図9(a)に示されるシンボル符号化と、図9(b)に示される遷移テーブルをもたらす。図9(b)に示されるように、遷移テーブルの各エントリは、DFA状態に対応するデータと、m個の入力シンボルからなるグループについてのECIに対応するデータによってインデックス付けされる。図10(a)および図10(b)は、2つの入力シンボルが一度に処理される、図1の正規表現についての、同等のECIテーブルおよび遷移テーブルを示している。
遷移テーブル内の各遷移は、次状態識別子と、マッチリスタートフラグと、マッチフラグとを含む3つ組である。例えば、状態DとECI 0とによってインデックス付けされた遷移は、(B,1,0)であり、Bが次状態識別子、1がマッチリスタートフラグ、0がマッチフラグである。したがって、ECI 0によって引き起こされる状態Dから状態Bへの遷移は、ECI 0はマッチを発生させないが、マッチングプロセスをリスタートさせるというように、解釈されることができる。
ストライドと符号化の相乗的組み合わせ
上で説明されたスループット向上とアルファベット符号化のアイデアは、今から組み合わされて、(テーブルを構成する際の)時間および(実行時にテーブルを実現する際の)空間を節約するために、サイクル当たり複数のバイトを消費し、その入力を符号化するアルゴリズムをもたらす。
そのような新しい高スループットDFAは、形式的に6つ組(Q,Σ,q,K,k,δ)として今は記述されることができ、ここで、
Qは、状態の有限集合であり、
Σは、ターゲットの入力シンボルのアルファベットであり、
∈Qは、初期状態であり、
Kは、サイズがQ(|Σ|)である(しかし実際にはより小さいことが予想される)整数からなる集合であり、
kは、一度にm個の入力シンボルをそれらの符号化にマッピングする、関数
Figure 0005265378
であり、
δは、現在状態およびm個のシンボルからなる次の部分文字列を、次状態、リスタートの可能性、およびアクセプトの可能性にマッピングする、関数
Figure 0005265378
である。
一連の変換は、正規表現rで開始し、DFAを取得するために以下のステップを実行する。
1.1つまたは複数の正規表現rについて通常の方法(上で引用されたHopcroftおよびUllmanの参考文献を参照されたい)でDFA dが構成される。例えば、上で説明されたように、図1の正規表現は、図3に示されたDFAをもたらす。
2.ターゲット内の任意の位置での開始に基づいて、オートマトンが受け入れることが可能な遷移pの集合が計算される。これは、各状態についてqへのλ遷移をシミュレーションすることによって達成される。具体的には、ρは以下のように計算される。
Figure 0005265378
3.dおよびpから、基本DFAが、図11のアルゴリズムによって構成される。
4.状態最小化が、標準アルゴリズム(上で引用されたHopcroftおよびUllmanの参考文献を参照されたい)によって、高スループットDFAに対して実行されるが、ただし、状態は、従来のDFAでのように最終状態かそれとも非最終状態かによって分割される代わりに、入来する辺の色(黒、緑、赤)によって最初に分割される。
5.DFAを所与として、アルファベット符号化を伴う、スループットがより高いDFA2kが、図6に示されたアルゴリズムによって構成される。
ランレングス符号化による遷移テーブル圧縮
好ましい高スループットDFAのための遷移テーブルは、|K|×|Q|個のエントリを含むことができる。状態最小化は、|Q|を最小化することを試み、より高いスループットとアルファベット符号化の組み合わせに関する先の説明は、|K|を最小化することを試みる。それにも関わらず、ストレージ資源は一般に制限され、したがって、できるだけ多くのテーブルを収容するための技法が、検討されるべきである。以下では、テーブル自体をどのように圧縮するかを説明することによって、この問題を検討する。
上述の説明に基づいて、遷移テーブルセルは、3つ組(次状態、スタートフラグ、アクセプトフラグ)を含む。ランレングス符号化は、十分な冗長性を見せるシンボル系列についてストレージ要件を低減することができる単純な技法である。そのアイデアは、文字列aを、ランレングスnおよびシンボルaとして符号化するというものであり、表記n(a)が使用されることができる。したがって、文字列aaaabbbcbbaaaは、4(a)3(b)1(c)2(b)3(a)としてランレングス符号化される。各シンボルおよび各ランレングスが1バイトの記憶域を必要とする場合、ランレングス符号化は、この例では、ストレージ要件を3バイトだけ低減する(13バイトから10バイト)。
図9(b)の例を調べると、遷移テーブルの列にはランレングス符号化のための好条件が豊富に存在する。符号化ECIシンボル0および3の場合、テーブルは、直前の状態といずれも同じ3つ組を指定しており、そのため、ECI 0および3によってインデックス付けされるテーブル内の遷移に対するランレングス符号化プレフィックスは、ともに「5」である。一般に、遷移テーブルにおいて期待されることは、共通の「次状態」挙動である。したがって、遷移テーブルの各列内にただ1つしかないエントリの数は、DFAにおける状態の数よりも一般に少ない。図12は、図9の遷移テーブルのランレングス符号化バージョンを含んでいる。
列圧縮は記憶域を節約するが、所望のエントリを取得するために遷移テーブルにアクセスする際のコストを増大させるように思える。圧縮に先立ち、行は、現在状態によってインデックス付けされ、列は、ECIによってインデックス付けされる。図12に示されるように、列がランレングス符号化されると、各列の圧縮された内容は、図13に示されるように、隣接して保存される。この例では、状態自体も、整数として符号化されている(Aは0、Bは1によって表されるなど)。DFAの次状態および動作を決定するために、今は2つのステップが存在する。
1.入力から符号化された次のECIに基づいて、図13に示される記憶域レイアウト内で、エントリの関連範囲が見出される。この検索は、ECIから記憶域レイアウトにおけるオフセットへのマッピングを使用して実行されることができる。エントリの範囲は、図12からの圧縮された列である。図13では、下線が引かれたエントリが、図12からのECI 1に対応する。
2.現在状態に基づいて、次状態および動作フラグが、エントリの関連範囲内で見出されなければならない。状態選択と呼ばれるこのロジックは、どのエントリが現在状態のインデックスに対応するかを見出すために、エントリを必然的に伸張する必要がある。
圧縮列全体が利用可能である場合、図14に示される回路は、適切な組エントリを決定するために圧縮形式および現在状態を解釈することによって、状態選択がどのように実現され得るかの一例を示している。ランレングス符号化列内の各エントリについて、そのランレングスプレフィックスと先行するエントリのランレングスプレフィックスの合計が計算される。その後、現在状態インデックスが、各合計と比較され、その合計が現在状態インデックスよりも大きい最初(図14の例では最も左)のエントリが、プライオリティ符号器によって選択される。その後、プライオリティ符号器は、DFAのための次状態を決定することができる。
図14は、図12のECI 1に対して進行中の状態選択の例示的な一例を示している。各「<」ノードは、現在状態インデックス(この例では3、すなわち状態D)を、圧縮列内のランレングスプレフィックスの合計と比較する。状態インデックス0(状態A)が現在状態として供給された場合、3つの比較器すべてが、「1」を出力し、プライオリティ符号器は、最も左のものを取って、内容として(A,1,0)を選択する。図14では、現在状態は3であり、それは、第2の合計(3+1)および第3の合計(3+1+1)より小さいので、右2つの比較器が、「1」を出力する。プライオリティ符号器は、最も左のものを取り、その結果、ECI 1および状態3の検索として、(C,0,0)が選択される。
メモリにおける可変長列のサポート
図13に示された記憶域レイアウトは、物理メモリにマッピングされなければならず、物理メモリにおいて、テーブル全体は、1回のメモリアクセスでフェッチされるには大き過ぎる。フィールドプログラマブルゲートアレイ(FPGA)および同様のデバイスは、サイズおよびワード長に関して構成可能なメモリバンクをしばしばサポートする。さらに、与えられたエントリのサイズは、各フィールド(ランレングス、次状態識別子、マッチリスタートフラグ、マッチフラグ)のために割り当てられたビットの数に依存する。以下の分析は、サイクル当たりx個の遷移テーブルエントリが取り出され得るという全般的な仮定に基づいている。シングルポートメモリでは、これは、xがワード当たりの遷移エントリ数に一致することを意味する。マルチポートメモリでは、これは、xがポート数にワード当たりの遷移エントリ数を乗じた値に一致することを意味する。一例として、サイクル当たり5回のアクセスをサポートし、ワード当たり3つのエントリを保有する物理メモリは、好ましい実施形態では、x=5×3=15と設定することによって適合される。しかし、サイクル当たり1回のみのアクセスをサポートし、ワード当たり3つのエントリを保有する物理メモリは、好ましい実施形態では、x=3と設定することによって適合される。
いくつかのアーキテクチャは、xの選択可能性に関して、その他のアーキテクチャよりも大きな柔軟性を提供する。例えば、FPGAブロックRAMのビットは、時には、ワードの数および各ワードの長さに関して構成可能である。以下の考察は、xの最良の選択に対して一般に適用される。
メモリアクセスは、xをできるだけ高く押し上げる(driving)ことによって、一般に低減される。
図14の論理回路は、一度に処理されなければならないエントリの数に伴って成長する。回路の全体的サイズに及ぼすその成長の影響は、ターゲットプラットフォームおよび実装に依存する。図14の論理回路を実現するためには、相当なFPGA資源が必要とされる。
メモリにおける可変長列のサポート:遷移テーブルメモリ
xが選択されると、圧縮列は、できるだけコンパクトに物理メモリ内に配置される。図15(b)は、遷移テーブルの列が、x=3のメモリ内にパッキングされた一例を示している。メモリ内の各ワードは、メモリアドレスによってインデックス付けされる。例えば、メモリアドレス0によってインデックス付けされたワードは、以下の遷移、すなわち、5(B,1,0)、3(A,1,0)、および1(C,0,0)を含む。各列の変化する長さのため、与えられた列は、行内のいずれのエントリからでも開始することがある。
遷移テーブルにインダイレクションレイヤを導入することによって、ランレングス符号化と、遷移テーブルメモリ(TTM)内へのエントリのコンパクト配置とによって提供される、メモリ効率性を利用することが可能である。図15(a)は、各ECIについて1つのエントリを含む、そのようなインダイレクションテーブルの一例を示している。ECIは連続的に割り当てられ得るので、インダイレクションテーブルは、与えられた入力文字列についてのECI値を使用して、直接的にアドレシングされることができる。各インダイレクションテーブルエントリは、以下のものから構成されることができる。
ポインタ:ランレングス符号化された遷移テーブル列の第1のエントリを含む、遷移テーブルメモリ内のメモリワードのアドレス。
遷移インデックス:ランレングス符号化された遷移テーブル列に対する第1のメモリワードにおける、その列の第1のエントリのインデックス。
遷移カウント:(または略して「カウント」)ランレングス符号化された遷移テーブル列内のエントリの数。
入力シンボルのECIを使用してインダイレクションテーブルエントリが取り出されると、TTMから第1のメモリワードを読み取るために、取り出されたエントリ内のポインタが使用される。xがTTM内のメモリワード当たりのエントリの数であることを思い出されたい。アドレス遷移インデックスから開始して、TTMからw個の連続するワードを読み取ることによって、列全体がアクセスされ、ここで、wは、
Figure 0005265378
によって与えられる。遷移インデックス値および遷移カウント値は、最初のメモリワードのどのエントリから最後のメモリワードのどのエントリまでが列に関与するかを決定する。図15の例では、各TTMワードは、3つのエントリを保存することが可能であり、エントリは、ランレングス符号化された遷移組である。図15の場合、網掛け部分から分かるように、ECI 1の列をフェッチするには、遷移テーブルメモリを2回読み取ることが必要であることが分かる。ECI 1の遷移インデックスおよび遷移カウントの具体的な値は、列が、フェッチされた最初のワードの第2のエントリから始まり、フェッチされた最後のワードの第1のエントリまで続くことを示している。各列がインデックス0から始まるように配置することによって、TTMエントリが浪費される場合、アクセスの回数は、
Figure 0005265378
まで減少させることができる。0≦遷移インデックス<xであるので、TTMにおけるコンパクト記憶は、アクセス回数をたかだか1だけ増大させるに過ぎない。
以下で説明され、また図25に示されるように、インダイレクションテーブルおよびTTMへのアクセスは、互いにパイプライン化されることができ、また本発明の設計のその他のコンポーネントともパイプライン化されることができる。マルチポートメモリが利用可能である場合、両テーブルは、性能を悪化させることなく、同じ物理メモリ内に保存されることができる。しかし、インダイレクションレイヤは、TTMにおけるランレングス符号化列の内容の配置に応じて、状態遷移当たり様々な回数の遷移テーブルメモリアクセスをもたらす。特定のECIについて、メモリから列を取り出すためのメモリアクセスの回数は、直接アドレシング手法で必要とされる回数を超えることはできない。平均で、状態遷移当たりのメモリアクセスの回数は、かなり小さい。ランレングス符号化およびインダイレクションによって達成されるメモリ効率性は、インダイレクションテーブルおよび追加のランレングスフィールドを保存することによって背負い込むオーバヘッドを補償して余りあると、発明者らは一般に確信する。
さらに、各エントリは同じサイズであり、エントリ数は入力シンボル同値類の最大数に等しいので、インダイレクションテーブルのためのメモリの割り当ては、相対的に単純である。
メモリにおける可変長列のサポート:状態選択
好ましくはTTMの効果的な記憶域レイアウトを考慮し、その他の最適化も提供する、状態選択論理回路の実施が、今から説明される。TTMは圧縮列のコンパクトな記憶を提供するが、状態選択ロジックは、より複雑になる。図14に示されるロジックは、圧縮列が、無関係なエントリなしに同時にロジックに提示され得ることを仮定する。そのロジックは、TTMを使用して状態選択を実行するためには、以下の理由で、準最適である。
圧縮列がTTMの複数のワードにまたがることがある。
圧縮列の先頭がTTMワードの中間から始まることがある。したがって、先頭前のエントリは状態選択のために抑制されなければならない。
圧縮列の末尾がTTMワードの末尾前に生じることがある。したがって、末尾後のエントリは状態選択のために抑制されなければならない。
図14に示されるロジックは、各エントリの前のすべてのランレングスの合計を累算するために、加算器を使用する。ランレングスは各エントリ内で固定であるので、プレフィックス合計を事前計算し、ランレングスそのものの代わりに、それらを各組の「係数」として保存することによって、加算器は除去されることができる。合計を事前計算することによって、図15に示されるテーブルは、図16に示されるテーブルに変換される。
圧縮列の先頭および末尾を決定するために使用されるロジックの量も、削減されることができる。各列の先頭は、第1のエントリを含むTTMワードと、第1のエントリのそのワード内でのインデックスとを提供する、ポインタフィールドおよび遷移インデックスフィールドを使用して、インダイレクションテーブルにおいて指定される。その後、圧縮列によって占められるワード数wが、式(1)によって与えられる。完全に占められた各ワードは、圧縮列のx個のエントリを含む。最後のワードでは、圧縮列によって占められる最大インデックスは、
(カウント+インデックス−1) mod x (2)
によって与えられる。
式2を計算するために、状態選択回路内にロジックが配備されることができる。しかし、xは、設計時パラメータである。ハードウェア定義言語(HDL)コードの適切なパラメータ化によって、式2は、インダイレクションテーブルおよびTTMテーブルが生成されるときに、計算されることができる。
したがって、計算ロジックの量は、各エントリについて以下の変数をインダイレクションテーブルに保存することによって、削減されることができる。
ポインタ:遷移テーブル列の第1のエントリを含むTTMワードのアドレス。
先頭遷移インデックス:遷移テーブル列がまたがる第1のTTMワードにおける、(遷移テーブル列の)第1のエントリのインデックス。
末尾遷移インデックス:遷移テーブル列がまたがる最後のTTMワードにおける、(遷移テーブル列の)最後のエントリのインデックス。
[付加的な]ワードカウント:w−1、ここで、wは式1によって計算される。
この例を続けると、図17は、図16に示される遷移テーブルに関する、インダイレクションテーブルおよびTTMエントリを示している。基本的に、遷移カウント値は、ワードカウント値と、末尾遷移インデックス値とに変換される。この変換は、TTMの内容に影響を与えないが、これらのテーブルを処理するために必要とされるロジックを削減する。
図18に示される状態選択ブロックロジックは、1つのTTMワードにまたがる、2つのエントリを含む遷移テーブル列に基づいて動作する。各ワードは、4つのエントリを保存する。図18に示されるワードカウントの出力は、現在の遷移テーブル行について検査されたメモリワードの数を反映する。現在のメモリワードが、その行がまたがる第1のワードである場合、先頭遷移インデックスマスクROMから1組のマスクビットを取り出すために、先頭遷移インデックスが使用される。これらのビットは、遷移テーブル列の部分ではない、メモリワード内の先行エントリをマスクオフするために使用される。マスキングは、ランレングス合計を強制的にゼロにすることによって達成される。現在のメモリワードが、その列がまたがる第1のワードでない場合、このステージでは、どのエントリもマスクされない。
次のステージは、遷移テーブル列の部分ではない、最後のメモリワード内のエントリを「マスク」する。遷移テーブル列の部分ではないエントリについてのランレングス合計は、強制的に最大ランレングスレジスタの値にされる。この値は、遷移テーブル列内のエントリの最大数(すなわち、符号化されていない遷移テーブルの列数であり、各符号化遷移テーブル列内の最終エントリのランレングス合計の値でもある)を記録する。現在のメモリワードが、遷移テーブル列がまたがる最後のメモリワードである(ワードカウンタの値がワードカウントに等しい)場合、末尾遷移インデックスが、末尾遷移インデックスマスクROMに対するアドレスとして使用される。最後のメモリワードでない場合、このステージ中、どのエントリもマスクされない。後続エントリのランレングス合計を強制的に最大ランレングス合計値にすることは、次状態を選択するマルチプレクサのための選択ビットを生成するプライオリティ符号器を簡略化する。このマスキングプロセスは、小なり(less−than)比較から以下の特性を有する出力ベクトルを生成し、その特性とは、最も左の「1」ビットのインデックスが次状態エントリのインデックスであり、このビットより右のビットはすべて「1」に設定される、というものである。先に言及されたように、スループットを向上させるために、マスキングステージはパイプライン化されることができる。一代替実施形態では、小なり比較、プライオリティ符号器、および次状態選択ロジックのみが、最終パイプラインステージで発生する必要がある。
最適化
高スループットの正規表現パターンマッチングエンジンを達成することは、本明細書で開示される、高スループットDFA、文字符号化、および遷移テーブル圧縮技法を開発する主要な動機である。以下では、何らかのメモリ効率性を犠牲にしてシステムのスループットを最適化する技法が検討され、したがって、以下の技法の各々は、TTMによって制約される。具体的には、TTMは、以下の制約を課す。
ワード当たりのエントリの数。
テーブル内のメモリワードの数。
テーブル内のエントリの総数。
本セクションで説明される最適化問題は、ビンパッキング問題(bin packing problem)またはナップザック問題(knapsack problem)の類に含まれる。Cormen他、「Introduction to Algorithms」、Cambridge、MA、The MIT Press、1990年を参照されたく、その開示の全体は、参照により本明細書に組み込まれる。ワード当たりのエントリの数は、パッキング問題のビン(またはナップザック)サイズを定義する。符号化遷移テーブルの構造は、エントリの総数またはワード(ビンまたはナップザック)の総数が遷移テーブルメモリによって課される限界を超えない限り、テーブルを表すのに必要とされるエントリおよび/またはワードの総数を増やすことによってメモリアクセスの回数を最小化するために、変更されることができる。
最適化:スループットの最適化
検索のために必要とされるメモリアクセスの回数は、TTM内における圧縮列の配置と、それらの列がアクセスされるパターンとによって決定される。パターンは、エンジン内における1組の正規表現と、エンジンによって処理される具体的な入力データとに依存する。DFAの場合、m個の入力シンボルは、1列の検索を引き起こすECIに変換される。メモリアクセスの回数は、符号化遷移テーブル内の列の長さと、列アクセスパターンとに依存する。列アクセスパターンは、エンジン内における正規表現(または1組の正規表現)と、入力データとに依存する。与えられた検索についてのメモリアクセスの総数は、
Figure 0005265378
のように表現されることができ、ここで、wは、遷移テーブルメモリにおいて行iがまたがるワードの数、fは、行iがアクセスされる相対頻度、Nは、入力データによって生成される同値類識別子の数である。
入力データについての事前知識は存在しないが、符号化遷移テーブルの構造を変更する能力が存在する。直接アドレス遷移テーブル内の行を並べ替えることによって、符号化遷移テーブル内の列の長さに影響を与えることができる。最適化問題は、メモリアクセスWの総数を最小化する列配列を選択することである。遷移テーブル列アクセスパターンは一様分布f=N/|K|に従うと仮定する。この場合、
Figure 0005265378
となる。
これらの条件において、最適化問題は、量
Figure 0005265378
を最小化することである。countは、遷移カウントi、またはランレングス符号化遷移テーブルの行i内のエントリの数であり、xは、TTMにおけるワード当たりのエントリの数である。
最適化問題を簡略化するため、x=1と仮定することができ、その結果、今最小化される必要がある量は、
Figure 0005265378
となる。これは、任意のxを有する関数を最小化するのと同様の結果を一般にもたらす。
図19は、本明細書で提示された実行例に対する状態並べ替えの利点を示している。
状態並べ替えには多くの手法が存在する。1つの手法は、行内のエントリのソートされた順序に従って、直接アドレス遷移テーブルの行を整列することによって、符号化遷移テーブルの単一の列の長さを最小化することである。これは、その1つの列に対するランレングス符号化の効率を最大化する。しかし、並べ替えは、その他の列に対するランレングス符号化の効率を低下させることもある。
好ましい手法は、欲張りな手法であり、好ましくは、大多数の列についてランの長さを最大化し、それによって、各符号化列の長さを最小化することが望まれる。
2つの状態を所与として、相違しており、そのためランを継続しないECIの数を示す、相違行列(difference matrix)を生成することによって開始することができる。このアルゴリズムが、図20に示されている。
次に、相違行列内のエントリに基づいて、何らかの開始点から、状態を整列する。好ましくは、次のラベルを取得するのに大多数のランレングスを保つ状態を選択する。選択される開始状態は、好ましくは、相違行列において最大の列合計を有する状態である。その状態を最初に選んだ主意は、その他のすべてから最も異なるのがその状態だからである。その状態を(中間ではなく)末尾まで移動することによって、最長のランを保つことができる。このアルゴリズムの概要が、図21に示されている。図20および図21のアルゴリズムは、一緒になって、「遷移テーブル状態並べ替え」アルゴリズムとして機能する。
最適化:メモリパッキング
インダイレクションレイヤは、符号化遷移テーブルの列がTTM内の任意の位置で開始および終了することを可能にすることを思い出されたい。符号化テーブル列の物理メモリへの愚直なパッキングは、各テーブル列について余計なメモリアクセスを招くことによって、上述の最適化を妨害することがあり得る。図15において、入力シンボル「.」(ECI 1)に関連付けられたランレングス符号化遷移テーブル列は、3つのエントリを含むが、TTMにおいて2つのメモリワードにまたがることに留意されたい。列を単一のメモリワードに保存することは可能であるが、この列へのアクセスは、図15においてレイアウトされているように、2回のメモリアクセスを必要とする。符号化遷移テーブル行がたかだかw個のワードにまたがるに過ぎないことを保証することによって、インダイレクションレイヤによって提供される柔軟性を利用することができ、ここで、
Figure 0005265378
である。図20は、符号化遷移テーブルをTTMにパッキングするためにこの制約を使用した一例を示している。ECI 1に関連付けられた列の取り出しは、ただ1回のメモリアクセスを必要とすることが分かる。この例では、メモリ効率性における損失はないが、常にそうであるとは限らない。例えば、メモリワードが3つのエントリを保有し、どの符号化遷移テーブル列も2つのエントリを含む場合を考えられたい。
このメモリパッキング問題は、wが制約関数または目的関数である、古典的な分数ナップザック問題(fractional knapsack problem)の変形である。Black,P.E.、「Dictionary of Algorithms and Data Structures」、NIST、2004年を参照されたく、その開示の全体は、参照により本明細書に組み込まれる。ここでの好ましい実施形態における相違は、符号化遷移テーブル列の連続記憶域を必要とすることである。これは、古典的問題において対象(符号化遷移テーブル列)を複数のナップザック(メモリワード)に区分するときに、追加の制約を課す。
この問題に対する1つの解決策は、部分集合和に基づいている。これは、一般的な場合におけるNP完全問題であるが(GareyおよびJohnson、「Computers and Intractability:A Guide to the Theory of NP−Completeness」、W.H.Freeman and Co.、1979年を参照されたく、その開示の全体は、参照により本明細書に組み込まれる)、それが多項式時間で実行されるある条件が存在し、すなわち、それは、和を生成するためにそこから要素が選択される要素の数よりも和がはるかに小さいという条件である。好ましい実施形態の和は、常にメモリワードの幅であり、そのため、好ましいアルゴリズムも、多項式時間で実行される。
基本的なアイデアは、最長のランレングス符号化列を見出し、それを最初に選択することである。その後、可能な限り最良のパッキングを達成することを保証しながら、それをメモリワード内にパッキングする。その後、直前の列で残されたエントリの数を取り、残りのランレングス符号化列を用いてそれに部分集合和を適用することができる。これは、追加のメモリアクセスを引き起こすことなく、できるだけ満杯になるようメモリをパッキングする。このプロセスは、残りの符号化列がなくなるまで繰り返される。本明細書で「最適メモリワードパッキング」アルゴリズムと呼ばれる、このアルゴリズムの概要が、図21に示されており、図において、Rは、ランレングス符号化列の集合であり、wは、メモリワードの幅である。
実装アーキテクチャ
このセクションでは、好ましい高スループットDFAおよびパイプライン化遷移テーブル技法に基づいた、高性能正規表現検索システムの実施が説明される。この実施の主眼は、高速ディスクのアレイへの高帯域幅相互接続を有する複数のスーパースカラマイクロプロセッサおよび再構成可能なハードウェア装置を含む、ハイブリッド処理プラットフォームである。図24は、システムレベルアーキテクチャの一例を示しており、ユーザインタフェースと、正規表現コンパイラと、ファイルI/Oコントローラと、正規表現ファームウェアモジュールと、結果プロセッサとを含む。
アーキテクチャの目的は、正規表現エンジンのアレイを再構成可能なハードウェア装置(例えばFPGA)に埋め込むことによって、スループットを最大化することである。制御ロジックおよび文脈バッファをサポートするエンジンのアレイは、論理的に単一のファームウェアモジュールと見なされることができる。正規表現回路/エンジンがFPGA上に実現される一実施形態では、これらのエンジンは、ハードウェア定義言語(HDL)表現に統合され、知られた技法を使用してFPGAにロードされることができる。
各正規表現エンジンの主要なタスクは、高速ディスクからの入力ファイルストリーム内の正規表現を認識することである。正規表現の集合は、好ましくは、ユーザインタフェースを介してユーザによって指定され、高スループットDFAにコンパイルされ、ソフトウェアコンポーネントの集まりによって1組のテーブルおよびレジスタ値に変換される。1組のテーブルおよびレジスタ値は、検索を開始する前に、ファームウェアモジュールに書き込まれる。正規表現エンジンは、パターンを認識した場合、文脈(パターンを含むファイルの部分)と、ファイル内のパターンの開始および終了インデックスと、アクセプト状態ラベルとを含むメッセージを、結果プロセッサに送る。動作環境および統合レベルに応じて、ユーザインタフェースは、簡単なコマンドラインインタフェース、グラフィカルユーザインタフェース(GUI)、または特定言語向けAPIとすることができる。以下のサブセクションは、残りのコンポーネントについての詳細な説明を提供する。
実装アーキテクチャ:正規表現コンパイラ
図5に詳しく示されるように、正規表現コンパイラは、ユーザによって指定された正規表現の集合をユーザインタフェースから受け取る。その後、当技術分野の標準アルゴリズムが、指定された正規表現を解析して、正規表現からNFAを生成し、NFAを位置独立なDFAに変換し、位置独立なDFAを最小DFAに縮小する。正規表現コンパイラによって実行される次のステップは、従来の最小DFAを、本発明の好ましい高スループットDFAに変換することである。このステップは、(遷移テーブルについての適切なマッチフラグおよびマッチリスタートフラグの決定と、入力シンボルのECIへの符号化とを含む)サイクル当たりm個の入力シンボルからなるストライドに対応するためのDFAのスケーリングと、遷移テーブルのランレングス符号化とに関して上で説明されたプロセスを含む。次に、図20および図21のアルゴリズムが、遷移テーブルメモリへのランレングス符号化遷移の保存を最適化するために実行されることができ、図23のアルゴリズムが、遷移テーブルメモリのワードへのランレングス符号化遷移エントリのパッキングを最適化するために実行されることができる。その後、インダイレクションテーブル内のエントリが決定されることができ、コンパイラは、入力シンボル対ECIテーブル、インダイレクションメモリテーブル、および遷移テーブルのための回路メモリにデータ投入するように動作する正規表現回路502に、コマンドを発行する準備が整う。
実装アーキテクチャ:結果プロセッサ
結果プロセッサを介して検索結果を報告するために、様々な技法のいずれもが使用され得ることが予想される。好ましい結果プロセッサは、正規表現回路(エンジン)によって生成された結果を使用して、各マッチに対する正しい表現および入力文字列セグメントを決定するように構成されることができる。図24に示されるもののような好ましい一実施形態では、正規表現回路(エンジン)によって生成される結果は、一意のエンジン識別子(ID)と、開始状態と、アクセプト状態と、アクセプト遷移をトリガするm個の入力シンボルに対するECIとを含む。結果は、パターンにマッチした文字列を含む入力ストリームの一部分である、マッチについての文脈も含む。結果プロセッサは、マッチング文字列および関連する正規表現(パターン)をユーザインタフェースに報告する。
実装アーキテクチャ:ファイルI/Oコントローラ
ファイルI/Oコントローラは、入力ストリームを制御する、システムのコンポーネントである。図24の例示的なシステムでは、ファイルI/Oコントローラは、データストアから正規表現回路に流れる、ファイルのストリームを制御する。当技術分野で知られているように、入力ストリームも、ネットワークインタフェース(またはその他のデータインタフェース)によって供給され得ることに留意されたい。
実装アーキテクチャ:正規表現ファームウェア
正規表現ファームウェアモジュールは、図24に示されるシステムアーキテクチャにおける主要なデータパスコンポーネントである。正規表現ファームウェアモジュールは、好ましくは、正規表現エンジン(またはパターンマッチング回路)のアレイと、少量の制御ロジックとを含む。アレイ内のエンジンの数は、システム内の再構成可能ハードウェア装置の能力に依存する。制御ロジックは、入力ファイルストリームを各正規表現エンジンにブロードキャストし、したがって、エンジンは、同じ入力データに基づいて並列に動作する。制御ロジックはまた、入力のコピーを文脈バッファに送る。文脈バッファのサイズは、エンジンがパターンを認識したときに、結果プロセッサに送られる文脈の量に依存する。このパラメータは、ファームウェア/ソフトウェアインタフェースに過剰負荷をかけない間は、返され得る文脈の量を最大化するように調整されることができる。
先に言及されたように、正規表現エンジンのスループットは、正規表現エンジンが決定性有限オートマトンについての状態遷移を計算することができる速度によって基本的に制限される。現在状態および入力シンボルに基づいた次状態の決定は、本来的には直列動作である。好ましい実施プラットフォーム上で利用可能な再構成可能ロジック資源を利用するために、並列性を最大化することが望まれる。パイプライン化は、直列計算において並列動作の数を増加させるための一般的な技法であるが、処理パイプラインにフィードバックループがないことが必要とされる。パイプラインの与えられたステージにおける動作の出力は、パイプライン内の後続ステージの結果に依存することができない。図25に示されるように、正規表現エンジンは、一連のパイプライン化された計算ブロックである。ブロック間にフィードバックループがなく、各ブロックは、先行ブロックの結果にのみ基づいて動作することに留意されたい。これは、本発明の好ましい実施形態の著しい特徴である。アルファベット符号化は、1組の入力シンボルにのみ基づいて動作する状態独立な動作である。インダイレクションテーブル検索は、エントリを見つけるために、結果の入力シンボルECIを使用する。遷移テーブル検索は、インダイレクションテーブルエントリ内に含まれるポインタおよびインデックスにのみ依存する。現在状態に依存する唯一の動作は、状態選択ブロック内の最後の計算である。この唯一のフィードバックループをパイプラインの最終ステージに効果的に「押し込む」ことによって、好ましい実施形態は、並列性を、ひいては正規表現エンジンのスループットを最大化する。以下のサブセクションは、正規表現エンジン内の各ブロックの設計について説明する。
正規表現ファームウェア:アルファベット符号化
アルファベット符号化ブロックは、m個の入力シンボルからなる組に同値類識別子(ECI)を割り当てる。各入力シンボルがi個のビットを使用して指定され、ECIがp個のビットを使用して指定される場合、アルファベット符号化ブロックは、入力を基本的にmiビットからpビットに短縮する。この動作を実行するための単純な方法は、直接アドレステーブルを使用して対組み合わせを実行することである。図26に示されるように、テーブルの第1の組は、1つのiビット入力シンボルをjビットのECIに変換する。このステップは、単一の入力シンボルを同値類にマッピングする。テーブルの次のステージは、単一の入力シンボルに対応するjビットECIを2つ単に連結し、ECIテーブルを直接アドレスすることによって、2つの入力シンボルに対してkビットECIを生成する。第2のステージにおいてECIテーブルを実施するために使用されるメモリのアドレス可能性によって、jの上限が定められることに留意されたい。具体的には、2jは、メモリによってサポートされるアドレスビットの数より小さいか、または等しくなければならない。同様に、次のステージは、2つのシンボルに対応するkビットECIを2つ連結し、ECIテーブルを直接アドレスすることによって、4つの入力シンボルに対してpビットECIを生成する。同様に、ECIテーブルによってサポートされるアドレス空間が、kに対して上限を定める。理論的には、この技法は、任意の数の入力シンボルにECIを割り当てるために使用されることができるが、実際には、最終の同値類によってカバーされるシンボルの数が増加するにつれて、メモリ効率は著しく悪化する。
図25のパイプラインの後続ステージを実施するために必要とされるロジックは、すでに上で説明された。
正規表現ファームウェア:バッファ
各正規表現エンジンは、好ましくは、小規模な入力バッファおよび出力バッファを含む。入力バッファは、単一のエンジンが、TTM内の複数のワードにまたがる遷移テーブル列を取り出さなければならない場合に、アレイ内のすべてのエンジンを機能停止にさせることを防止する。いずれかのエンジンの入力バッファが満杯である場合、アレイ全体は機能停止しなければならないが、入力バッファは、ファイル入力速度の瞬間的変動を分離するのに役立つ。出力バッファは、正規表現エンジンがマッチを見出した後、そのマッチが結果プロセッサに送られる以前に、正規表現エンジンが処理を継続することを可能にする。文脈バッファは、好ましくは、ラウンドロビン方式で正規表現エンジンの出力バッファにサービスを行う。いずれかのエンジンの出力バッファが満杯である場合、別の結果を出力バッファに送る以前に、エンジンは機能停止しなければならない。エンジンの入力バッファが満杯である場合、好ましくは、アレイが機能停止しなければならない。
本発明がその好ましい実施形態に関連して上で説明されたが、本発明の範囲内に依然として収まる様々な修正が、本発明に施されることができる。本発明に対するそのような修正は、本明細書の教示を検討することで認識可能であろう。例えば、遷移テーブルは、行が状態に対応し、列がECIに対応するものとして本明細書では説明されたが、本明細書で説明されたどのテーブルの行と列も反対にされ得ることは容易に理解されよう。そのため、本発明の完全な範囲は、添付の特許請求の範囲とその法的均等物によってのみ確定されるものとする。
例示的な正規表現を示す図である。 図1の正規表現についてのDFAを示す図である。 図1の正規表現についての改良DFAを示す図である。 図3のDFAについての従来の遷移テーブルを示す図である。 本発明の好ましい一実施形態の概略ブロック図である。 DFAのストライドを2倍にするための好ましいアルゴリズムを示す図である。 状態の数が削減され、マッチおよびマッチリスタート用のフラグを遷移内に有する、本発明の好ましい実施形態によるDFAを示す図である。 入力シンボルを同値類識別子(ECI)に符号化するための好ましいアルゴリズムを示す図である。 図7のDFAのための好ましい一遷移テーブルを示す図である。 DFAのストライドがサイクル当たり2つの入力シンボルに等しい、図1の正規表現のための遷移テーブルを示す図である。 dおよびpから基本DFAを構成するための好ましいアルゴリズムを示す図である。 例示的なランレングス符号化遷移テーブルを示す図である。 図12のランレングス符号化遷移テーブルの隣接保存バージョンを示す図である。 与えられたECIに対応する取り出された1組のランレングス符号化遷移に基づいて次状態を決定するための例示的な状態選択論理回路を示す図である。 図12および図13のランレングス符号化遷移テーブルが保存される(a)インダイレクションテーブルおよび(b)メモリを示す図である。 図15のランレングス符号化遷移テーブルが事前計算ランレングスプレフィックス合計を含む(a)インダイレクションテーブルおよび(b)メモリを示す図である。 図14のランレングス符号化遷移テーブルが事前計算ランレングスプレフィックス合計を含む(a)インダイレクションテーブルおよび(b)TTMの代替定式化を示す図である。 例示的な状態選択論理回路を示す図である。 (a)状態並べ替えによって最適化された例示的な遷移テーブルおよび(b)状態並べ替え遷移テーブルのランレングス符号化バージョンを示す図である。 TTMのためのランレングス符号化を最適化するのに使用される相違行列を計算するための好ましいアルゴリズムを示す図である。 TTMにおけるランレングス符号化の最適化のための好ましいアルゴリズムを示す図である。 TTMにパッキングされた符号化遷移テーブルの一例を示す図である。 メモリワードの最適パッキングのための好ましいアルゴリズムを示す図である。 好ましい正規表現システムアーキテクチャを示す図である。 一連のパイプライン化された計算ブロックとしての好ましい実施形態の正規表現エンジンを示す図である。 直接アドレステーブルおよび対組み合わせを使用してECIを入力シンボルに割り当てるための好ましいプロセスを示す図である。

Claims (38)

  1. 決定性有限オートマトン(DFA)により入力文字列をパターンにマッチさせるための装置であって、DFAが、現在状態を含む複数の状態を備え、入力文字列が、複数の入力シンボルを含み、装置が、
    DFAを実施するパターンマッチング回路を備え、パターンマッチング回路が、m個の入力シンボルからなるグループとして入力文字列の入力シンボルを受け取り、連続して処理するように構成され、ここで、mは1以上の整数であり、パターンマッチング回路が、(1)複数の保存された遷移を含む遷移テーブルメモリであって、各保存された遷移が、少なくとも1つの入力シンボルに対応するデータによってインデックス付けされ、各遷移が、次状態識別子を含む、遷移テーブルメモリと、(2)受け取られた入力シンボルグループの少なくとも1つの入力シンボルに対応するデータによってインデックス付けされる各遷移を、現在状態を考慮することなく、遷移テーブルメモリから取り出すように構成される遷移取り出しロジックと、(3)各取り出された遷移を受け取り、取り出された遷移のどれが現在状態に対応するかを決定し、決定された遷移の次状態識別子に基づいてDFAについての次状態を決定し、入力文字列とパターンの間にマッチが存在するかどうかを決定するように構成される状態選択ロジックと、を備える、装置。
  2. 入力文字列の各入力シンボルが、アルファベットの要素である複数の入力シンボルの1つであり、パターンマッチング回路が、各受け取られた入力シンボルグループを同値類識別子(ECI)に変換するように構成されるアルファベット符号化ロジックをさらに備え、遷移テーブル内で各遷移がそれによってインデックス付けされる入力シンボルグループに対応するデータが、その入力シンボルグループに対するECIに対応するデータを含む、請求項1に記載の装置。
  3. パターンマッチング回路と通信する正規表現コンパイラであって、パターンマッチング回路によって実施されるDFAを決定するためにユーザから正規表現を受け取り、処理し、処理された正規表現に基づいて遷移テーブルにデータ投入し、処理された正規表現に基づいてECIを定義するように構成される正規表現コンパイラをさらに備え、正規表現は入力文字列がそれに対してマッチさせられるパターンを識別する、請求項2に記載の装置。
  4. 遷移テーブルが、メモリ内で実施され、メモリが、メモリアドレスによってインデックス付けされる複数のワードを含み、各ワードが、ランレングス符号化された複数の遷移を含む、請求項3に記載の装置。
  5. パターンマッチング回路が、インダイレクションテーブルと、インダイレクションテーブルロジックとをさらに備え、インダイレクションテーブルが、複数のエントリを含み、各エントリが、ECIによってインデックス付けされ、各エントリが、そのECIによってインデックスされる少なくとも1つの遷移を含むメモリ内でワードが保存されるメモリアドレスを指すポインタを含み、インダイレクションテーブルロジックが、受け取られた入力シンボルグループによってインデックス付けされるインダイレクションテーブルからポインタを取り出し、取り出されたポインタを遷移取り出しロジックに提供するように構成され、各遷移がそれによってインデックス付けされるその入力シンボルグループに対するECIに対応するデータが、取り出されたポインタによって識別されるメモリアドレスを含む、請求項4に記載の装置。
  6. 各インダイレクションテーブルエントリが、遷移インデックスと、遷移カウントとをさらに含み、遷移インデックスが、入力シンボルグループに対するECIによってインデックス付けされる第1の遷移が、そのエントリのポインタによって識別されるワード内のどこに配置されているかを識別し、遷移カウントが、いくつの遷移が、入力シンボルグループに対するECIによってインデックス付けされるかを識別し、インダイレクションテーブルロジックが、受け取られた入力シンボルグループによってインデックス付けされるインダイレクションテーブルエントリから、遷移インデックスおよび遷移カウントを取り出し、取り出された遷移インデックスおよび遷移カウントを、遷移取り出しロジックに提供するように構成される、請求項5に記載の装置。
  7. 遷移取り出しロジックが、取り出されたポインタおよび取り出された遷移カウントによって識別される各ワードを遷移テーブルから取り出すように構成され、状態選択ロジックが、遷移に対応する各取り出されたワードの、入力シンボルグループに対するECIによってインデックス付けされないどの部分もマスクアウトするようにさらに構成される、請求項6に記載の装置。
  8. 各インダイレクションテーブルエントリが、先頭遷移インデックスと、末尾遷移インデックスと、ワードカウントとをさらに含み、先頭遷移インデックスが、入力シンボルグループに対するECIによってインデックス付けされる第1の遷移が、そのエントリのポインタによって識別されるワード内のどこに配置されているかを識別し、ワードカウントが、受け取られた入力シンボルグループに対するECIによってインデックス付けされるすべての遷移がその中に連続的に保存されるワードの数を識別し、末尾遷移インデックスが、入力シンボルグループに対するECIによってインデックス付けされる最後の遷移が、そのエントリのワードカウントによって識別される最後のワード内のどこに配置されているかを識別し、インダイレクションテーブルロジックが、受け取られた入力シンボルグループによってインデックス付けされるインダイレクションテーブルエントリから、先頭遷移インデックス、末尾遷移インデックス、およびワードカウントを取り出し、取り出された先頭遷移インデックス、末尾遷移インデックス、およびワードカウントを、遷移取り出しロジックに提供するように構成される、請求項5に記載の装置。
  9. 遷移取り出しロジックが、取り出されたポインタおよび取り出されたワードカウントによって識別される各ワードを、遷移テーブルから取り出すように構成され、状態選択ロジックが、遷移に対応する各取り出されたワードの、入力シンボルグループに対するECIによってインデックス付けされないどの部分もマスクアウトするようにさらに構成される、請求項8に記載の装置。
  10. 各遷移が、事前計算ランレングスプレフィックス合計をさらに含む、請求項5に記載の装置。
  11. mが、1よりも大きい、請求項5に記載の装置。
  12. 規表現コンパイラが更に、処理された正規表現に基づいてインダイレクションテーブルにデータ投入するように構成される、請求項5に記載の装置。
  13. パターンマッチング回路が、FPGA上で実施される、請求項に記載の装置。
  14. パターンマッチング回路が、ASIC上で実施される、請求項に記載の装置。
  15. 各遷移が、マッチフラグをさらに含み、状態選択ロジックが、決定された遷移のマッチフラグに基づいて、入力文字列とパターンの間にマッチが存在するかどうかを決定するようにさらに構成される、請求項3に記載の装置。
  16. DFAが、位置独立のDFAを含む、請求項15に記載の装置。
  17. 各遷移が、マッチリスタートフラグをさらに含み、状態選択ロジックが、決定された遷移のマッチリスタートフラグに基づいて、パターンマッチングプロセスがDFAにおいてリスタートされたかどうかを決定するようにさらに構成される、請求項16に記載の装置。
  18. mが、1よりも大きい、請求項17に記載の装置。
  19. パターンマッチング回路と通信する正規表現コンパイラであって、パターンマッチング回路によって実施されるDFAを決定するためにユーザから正規表現を受け取り、処理し、処理された正規表現に基づいて遷移テーブルにデータ投入するように構成される正規表現コンパイラをさらに備え、正規表現は入力文字列がそれに対してマッチさせられるパターンを識別する、請求項1に記載の装置。
  20. パターンマッチング回路が、FPGA上で実施される、請求項19に記載の装置。
  21. パターンマッチング回路が、ASIC上で実施される、請求項19に記載の装置。
  22. パターンマッチング回路が、FPGA上で実施される、請求項1に記載の装置。
  23. パターンマッチング回路が、ASIC上で実施される、請求項1に記載の装置。
  24. パターンマッチング回路が、マルチプロセッサシステム上で実施される、請求項1に記載の装置。
  25. 遷移取り出しロジックと状態選択ロジックが、並列に動作するパイプラインステージとして構成される、請求項1から24のいずれか一項に記載の装置。
  26. 状態機械を使用して入力文字列をパターンにマッチさせる方法であって、入力文字列が、複数の入力シンボルを含み、各入力シンボルが、複数のビットを含み、方法が、
    状態機械についての複数の状態を定義するステップであって、状態機械が、現在状態を有し、入力文字列の入力シンボルが受け取られ、処理されるのにつれて、複数の状態を経ながら進行し、それによって、入力文字列の複数の入力シンボルがパターンとマッチするかどうかを検出するように構成される、ステップと、
    状態機械の状態間の複数の遷移を定義するステップであって、各遷移が、状態機械の現在状態に対応するデータと、少なくとも1つの入力シンボルに対応するデータとによってインデックス付けされ、各遷移が、状態機械の次状態についての識別子と、複数の入力シンボルとパターンの間にマッチが存在するかどうかを示すマッチフラグとを含む、ステップと、
    入力文字列の少なくとも1つの入力シンボルを受け取るステップと、
    少なくとも1つの受け取られた入力シンボルに基づいて及び現在状態を考慮することなく、少なくとも1つの定義された遷移を取り出すステップと、
    少なくとも1つの取り出された遷移のどれが現在状態によってインデックス付けされているかを決定するステップと、
    状態機械の現在状態を、決定された取り出された遷移の次状態識別子によって識別される状態として更新するステップと、
    取り出された遷移のマッチフラグに基づいて、複数の入力シンボルとパターンの間にマッチが存在するかどうかを決定するステップと、
    入力文字列の追加の入力シンボルが受け取られた場合に、取り出し、遷移決定、更新、およびマッチ決定のステップを繰り返すステップと、を備える、方法。
  27. 各遷移が、受け取られた少なくとも1つの入力シンボルがパターンに対するマッチングプロセスのリスタートをもたらすかどうかを示すマッチリスタートフラグをさらに含み、方法が、
    取り出された遷移のマッチリスタートフラグに基づいて、マッチリスタートが存在するかどうかを決定するステップをさらに備え、
    繰り返すステップが、入力文字列の追加の入力シンボルが受け取られた場合に、取り出し、遷移決定、更新、マッチ決定、および部分的マッチ開始決定のステップを繰り返すステップを備える、請求項26に記載の方法。
  28. 受け取るステップが、各クロックサイクルについて複数のm個の入力シンボルを受け取るステップを備え、取り出すステップが、m個の受け取られた入力シンボルに基づいて、少なくとも1つの定義された遷移を取り出すステップを備える、請求項27に記載の方法。
  29. 状態機械によって処理され得る入力シンボルのアルファベットに対して、各入力シンボルが同値類識別子にマッピングされるように、複数の同値類識別子を定義するステップであって、各遷移がそれによってインデックス付けされる少なくとも1つの入力シンボルに対応するデータが、その少なくとも1つの入力シンボルに対する同値類識別子を含む、ステップと、
    受け取られた少なくとも1つの入力シンボルをその同値類識別子にマッピングするステップと、をさらに備え、
    取り出すステップが、少なくとも1つの受け取られた入力シンボルに対する同値類識別子に基づいて、少なくとも1つの定義された遷移を取り出すステップを備え、
    繰り返すステップが、入力文字列の追加の入力シンボルが受け取られた場合に、マッピング、取り出し、遷移決定、更新、マッチ決定、および部分的マッチ開始決定のステップを繰り返すステップを備える、請求項28に記載の方法。
  30. 状態機械によって処理され得る入力シンボルのアルファベットに対して、各入力シンボルが同値類識別子にマッピングされるように、複数の同値類識別子を定義するステップであって、各遷移がそれによってインデックス付けされる少なくとも1つの入力シンボルに対応するデータが、その少なくとも1つの入力シンボルに対する同値類識別子に対応するデータを含む、ステップと、
    受け取られた少なくとも1つの入力シンボルをその同値類識別子にマッピングするステップと、をさらに備え、
    取り出すステップが、少なくとも1つの受け取られた入力シンボルに対する同値類識別子に基づいて、少なくとも1つの定義された遷移を取り出すステップを備え、
    繰り返すステップが、入力文字列の追加の入力シンボルが受け取られた場合に、マッピング、取り出し、遷移決定、更新、マッチ決定、および部分的マッチ開始決定のステップを繰り返すステップを備える、請求項26に記載の方法。
  31. ランレングス符号化によってメモリ内で遷移を圧縮するステップをさらに備える、請求項30に記載の方法。
  32. 圧縮するステップが、事前計算プレフィックス合計を有するランレングス符号化によってメモリ内で遷移を圧縮するステップをさらに備える、請求項31に記載の方法。
  33. メモリが、複数のワードを含み、各ワードが、メモリアドレスによってインデックス付けされ、各ワードが、複数のx個の圧縮された遷移を含み、方法が、
    少なくとも1つの受け取られた入力シンボルに対する同値類識別子に基づいて、圧縮された遷移にアクセスするためのインダイレクションテーブルを定義するステップであって、インダイレクションテーブルが、複数のエントリを含み、各エントリが、同値類識別子によってインデックス付けされ、各エントリが、少なくとも1つの受け取られた入力シンボルに対する同値類識別子によってインデックス付けされる少なくとも1つの圧縮された遷移を含むワードが保存されるメモリアドレスを指すポインタを含む、ステップをさらに備え、
    各遷移がそれによってインデックス付けされる同値類識別子に対応するデータが、その同値類識別子に対するインダイレクションテーブルポインタを含み、方法が、
    同値類識別子によってインデックス付けされるポインタを決定するために、少なくとも1つの受け取られた入力シンボルに対する同値類識別子に基づいてインダイレクションテーブルにアクセスするステップをさらに備え
    取り出すステップが、少なくとも1つの受け取られた入力シンボルの同値類識別子に対する決定されたポインタ基づいて、少なくとも1つの定義された遷移を取り出すステップを備え、
    繰り返すステップが、入力文字列の追加の入力シンボルが受け取られた場合に、マッピング、アクセス、取り出し、遷移決定、更新、マッチ決定、および部分的マッチ開始決定のステップを繰り返すステップを備える、請求項30に記載の方法。
  34. 各インダイレクションテーブルエントリが、遷移インデックスと、遷移カウントとをさらに含み、遷移インデックスが、少なくとも1つの受け取られたシンボルの同値類識別子に対する第1の圧縮された遷移が、ポインタによって識別されるワード内のどこに配置されているかを識別し、遷移カウントが、少なくとも1つの受け取られたシンボルの同値類識別子に対していくつの圧縮された遷移が、メモリ内に連続的に保存されているかを識別し、アクセスするステップが、同値類識別子によってインデックス付けされるポインタ、遷移インデックス、および遷移カウントを決定するために、少なくとも1つの受け取られた入力シンボルに対する同値類識別子に基づいて、インダイレクションテーブルにアクセスするステップを備え、取り出すステップが、少なくとも1つの受け取られた入力シンボルの同値類識別子に対する決定されたポインタ、遷移インデックス、および遷移カウントに基づいて、各定義された遷移を取り出すステップをさらに備える、請求項33に記載の方法。
  35. 各インダイレクションテーブルエントリが、先頭遷移インデックスと、末尾遷移インデックスと、ワードカウントとをさらに含み、先頭遷移インデックスが、少なくとも1つの受け取られたシンボルの同値類識別子に対する第1の圧縮された遷移が、ポインタによって識別されるワード内のどこに配置されているかを識別し、ワードカウントが、少なくとも1つの受け取られたシンボルの同値類識別子に対する少なくとも1つの圧縮された遷移がメモリ内で連続的に保存されるワードの数を示し、末尾遷移インデックスが、最後の圧縮された遷移が、ワードカウントによって識別される最後のワード内のどこに配置されているかを識別し、アクセスするステップが、同値類識別子によってインデックス付けされるポインタ、先頭遷移インデックス、末尾遷移インデックス、およびワードカウントを決定するために、少なくとも1つの受け取られた入力シンボルに対する同値類識別子に基づいて、インダイレクションテーブルにアクセスするステップを備える、請求項33に記載の方法。
  36. 取り出すステップが、決定されたポインタおよび決定されたワードカウントによって識別される各ワードを、メモリから取り出すステップをさらに備え、遷移決定ステップが、決定された先頭遷移インデックス、決定された末尾遷移インデックス、および決定されたワードカウントによって識別される範囲内にない各取り出されたワード内に配置されるどの圧縮された遷移もマスクアウトするステップを備える、請求項35に記載の方法。
  37. 状態定義ステップが、正規表現の集合から状態機械についての複数の状態を定義するステップを備える、請求項36に記載の方法。
  38. 取り出すステップと少なくとも1つの取り出された遷移のどれが現在状態によってインデックス付けされているかを決定するステップが、パイプライン化された方法で並列に実行される、請求項26から37のいずれか一項に記載の方法。
JP2008543412A 2005-12-02 2006-11-29 高性能正規表現パターンマッチングのための方法および装置 Active JP5265378B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/293,619 2005-12-02
US11/293,619 US7702629B2 (en) 2005-12-02 2005-12-02 Method and device for high performance regular expression pattern matching
PCT/US2006/045653 WO2007064685A2 (en) 2005-12-02 2006-11-29 Method and device for high performance regular expression pattern matching

Publications (2)

Publication Number Publication Date
JP2009517782A JP2009517782A (ja) 2009-04-30
JP5265378B2 true JP5265378B2 (ja) 2013-08-14

Family

ID=38092747

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008543412A Active JP5265378B2 (ja) 2005-12-02 2006-11-29 高性能正規表現パターンマッチングのための方法および装置

Country Status (6)

Country Link
US (2) US7702629B2 (ja)
EP (1) EP1960913B1 (ja)
JP (1) JP5265378B2 (ja)
AU (1) AU2006320643B2 (ja)
CA (2) CA2629618C (ja)
WO (1) WO2007064685A2 (ja)

Families Citing this family (198)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139743B2 (en) 2000-04-07 2006-11-21 Washington University Associative database scanning and information retrieval using FPGA devices
US6711558B1 (en) 2000-04-07 2004-03-23 Washington University Associative database scanning and information retrieval
US20090006659A1 (en) * 2001-10-19 2009-01-01 Collins Jack M Advanced mezzanine card for digital network data inspection
US7716330B2 (en) * 2001-10-19 2010-05-11 Global Velocity, Inc. System and method for controlling transmission of data packets over an information network
US7711844B2 (en) 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US20070277036A1 (en) 2003-05-23 2007-11-29 Washington University, A Corporation Of The State Of Missouri Intelligent data storage and processing using fpga devices
US8560475B2 (en) 2004-09-10 2013-10-15 Cavium, Inc. Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process
WO2006096324A2 (en) 2005-03-03 2006-09-14 Washington University Method and apparatus for performing biosequence similarity searching
US7634584B2 (en) 2005-04-27 2009-12-15 Solarflare Communications, Inc. Packet validation in virtual network interface architecture
US7430560B1 (en) * 2005-07-22 2008-09-30 X-Engines, Inc. Multi-level compressed lock-up tables formed by logical operations to compress selected index bits
JP4591279B2 (ja) * 2005-08-19 2010-12-01 ソニー株式会社 情報処理装置および情報処理方法、記録媒体、並びに、プログラム
US7499941B2 (en) * 2005-09-05 2009-03-03 Cisco Technology, Inc. Pipeline regular expression matching
US7805392B1 (en) 2005-11-29 2010-09-28 Tilera Corporation Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table
US7702629B2 (en) * 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
US7921070B2 (en) * 2005-12-27 2011-04-05 Alcatel-Lucent Usa Inc. Method and apparatus for identifying message field names
US7954114B2 (en) 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
US7958164B2 (en) 2006-02-16 2011-06-07 Microsoft Corporation Visual design of annotated regular expression
US7860881B2 (en) * 2006-03-09 2010-12-28 Microsoft Corporation Data parsing with annotated patterns
US20070226362A1 (en) * 2006-03-21 2007-09-27 At&T Corp. Monitoring regular expressions on out-of-order streams
US8379841B2 (en) 2006-03-23 2013-02-19 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US7693831B2 (en) * 2006-03-23 2010-04-06 Microsoft Corporation Data processing through use of a context
US20070250331A1 (en) * 2006-04-05 2007-10-25 International Business Machines Corporation Method for composition of stream processing plans
US7877401B1 (en) * 2006-05-24 2011-01-25 Tilera Corporation Pattern matching
JP4944518B2 (ja) * 2006-05-26 2012-06-06 富士通セミコンダクター株式会社 タスク遷移図表示方法及び表示装置
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7725510B2 (en) * 2006-08-01 2010-05-25 Alcatel-Lucent Usa Inc. Method and system for multi-character multi-pattern pattern matching
US20080034427A1 (en) * 2006-08-02 2008-02-07 Nec Laboratories America, Inc. Fast and scalable process for regular expression search
US8392174B2 (en) * 2006-08-07 2013-03-05 International Characters, Inc. Method and apparatus for lexical analysis using parallel bit streams
US20080040373A1 (en) * 2006-08-10 2008-02-14 Business Objects, S.A. Apparatus and method for implementing match transforms in an enterprise information management system
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US7827218B1 (en) * 2006-11-18 2010-11-02 X-Engines, Inc. Deterministic lookup using hashed key in a multi-stride compressed trie structure
US20080133443A1 (en) * 2006-11-30 2008-06-05 Bohannon Philip L Methods and Apparatus for User-Guided Inference of Regular Expressions for Information Extraction
US7831606B2 (en) * 2006-12-08 2010-11-09 Pandya Ashish A Signature search architecture for programmable intelligent search memory
US9141557B2 (en) 2006-12-08 2015-09-22 Ashish A. Pandya Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine
US7996348B2 (en) * 2006-12-08 2011-08-09 Pandya Ashish A 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters
US20110029549A1 (en) * 2006-12-08 2011-02-03 Pandya Ashish A Signature search architecture for programmable intelligent search memory
US7860849B1 (en) 2007-01-18 2010-12-28 Netlogic Microsystems, Inc. Optimizing search trees by increasing success size parameter
US7630982B2 (en) 2007-02-24 2009-12-08 Trend Micro Incorporated Fast identification of complex strings in a data stream
EP2133807A4 (en) * 2007-03-02 2010-12-15 Res Org Information & Systems HOMOLOGOUS SEARCH SYSTEM
US8081181B2 (en) * 2007-06-20 2011-12-20 Microsoft Corporation Prefix sum pass to linearize A-buffer storage
US8347384B1 (en) * 2007-07-31 2013-01-01 Hewlett-Packard Development Company, L.P. Methods and systems for using incremental operation for processing regular expressions in intrusion-prevention systems
WO2009029842A1 (en) 2007-08-31 2009-03-05 Exegy Incorporated Method and apparatus for hardware-accelerated encryption/decryption
US8819217B2 (en) * 2007-11-01 2014-08-26 Cavium, Inc. Intelligent graph walking
US8086582B1 (en) * 2007-12-18 2011-12-27 Mcafee, Inc. System, method and computer program product for scanning and indexing data for different purposes
US10229453B2 (en) 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
CN101499065B (zh) * 2008-02-01 2011-11-02 华为技术有限公司 基于fa的表项压缩方法及装置、表项匹配方法及装置
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
JP5206220B2 (ja) * 2008-08-21 2013-06-12 ヤマハ株式会社 中継装置およびプログラム
US8589436B2 (en) * 2008-08-29 2013-11-19 Oracle International Corporation Techniques for performing regular expression-based pattern matching in data streams
JP5121650B2 (ja) * 2008-09-26 2013-01-16 株式会社東芝 情報処理装置、情報処理方法及びプログラム
US8473523B2 (en) 2008-10-31 2013-06-25 Cavium, Inc. Deterministic finite automata graph traversal with nodal bit mapping
US8442931B2 (en) * 2008-12-01 2013-05-14 The Boeing Company Graph-based data search
CA2744746C (en) 2008-12-15 2019-12-24 Exegy Incorporated Method and apparatus for high-speed processing of financial market depth data
US20100192225A1 (en) * 2009-01-28 2010-07-29 Juniper Networks, Inc. Efficient application identification with network devices
US8145859B2 (en) * 2009-03-02 2012-03-27 Oracle International Corporation Method and system for spilling from a queue to a persistent store
WO2010107114A1 (ja) * 2009-03-19 2010-09-23 日本電気株式会社 パターンマッチング装置
US8321450B2 (en) * 2009-07-21 2012-11-27 Oracle International Corporation Standardized database connectivity support for an event processing server in an embedded context
US8387076B2 (en) * 2009-07-21 2013-02-26 Oracle International Corporation Standardized database connectivity support for an event processing server
US8527458B2 (en) * 2009-08-03 2013-09-03 Oracle International Corporation Logging framework for a data stream processing server
GB2461648B (en) * 2009-08-03 2014-05-07 Ibm Programmable two table indexed finite state machine
US8386466B2 (en) * 2009-08-03 2013-02-26 Oracle International Corporation Log visualization tool for a data stream processing server
US9747358B2 (en) * 2009-09-22 2017-08-29 Sap Se Pattern analysis for a multi-dimensional analytical system
US9083740B1 (en) * 2009-09-28 2015-07-14 Juniper Networks, Inc. Network traffic pattern matching using adaptive deterministic finite automata
US8566344B2 (en) * 2009-10-17 2013-10-22 Polytechnic Institute Of New York University Determining whether an input string matches at least one regular expression using lookahead finite automata based regular expression detection
CN102096848B (zh) * 2009-12-09 2015-11-25 Sap欧洲公司 用于在对流事件的查询模式匹配期间进行快速响应的调度
US8959106B2 (en) 2009-12-28 2015-02-17 Oracle International Corporation Class loading using java data cartridges
US9430494B2 (en) 2009-12-28 2016-08-30 Oracle International Corporation Spatial data cartridge for event processing systems
US9305057B2 (en) * 2009-12-28 2016-04-05 Oracle International Corporation Extensible indexing framework using data cartridges
US20110219016A1 (en) * 2010-03-04 2011-09-08 Src, Inc. Stream Mining via State Machine and High Dimensionality Database
US9305116B2 (en) 2010-04-20 2016-04-05 International Business Machines Corporation Dual DFA decomposition for large scale regular expression matching
TWI407370B (zh) * 2010-04-30 2013-09-01 Univ Nat Taiwan 正規表示法電路系統以及其共用方法
US9507880B2 (en) 2010-06-30 2016-11-29 Oracle International Corporation Regular expression optimizer
US8713049B2 (en) 2010-09-17 2014-04-29 Oracle International Corporation Support for a parameterized query/view in complex event processing
US8892580B2 (en) 2010-11-03 2014-11-18 Microsoft Corporation Transformation of regular expressions
US9189280B2 (en) 2010-11-18 2015-11-17 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
CN102143148B (zh) * 2010-11-29 2014-04-02 华为技术有限公司 用于通用协议解析的参数获取和通用协议解析方法及装置
US9674318B2 (en) 2010-12-09 2017-06-06 Solarflare Communications, Inc. TCP processing for devices
JP6045505B2 (ja) 2010-12-09 2016-12-14 アイピー レザボア, エルエルシー.IP Reservoir, LLC. 金融市場における注文を管理する方法および装置
US10873613B2 (en) 2010-12-09 2020-12-22 Xilinx, Inc. TCP processing for devices
US8996644B2 (en) 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
US9258390B2 (en) 2011-07-29 2016-02-09 Solarflare Communications, Inc. Reducing network latency
US9003053B2 (en) 2011-09-22 2015-04-07 Solarflare Communications, Inc. Message acceleration
US9600429B2 (en) 2010-12-09 2017-03-21 Solarflare Communications, Inc. Encapsulated accelerator
CN102111402B (zh) * 2010-12-17 2015-06-10 曙光信息产业(北京)有限公司 一种对正则式dfa分组的方法
US8599959B2 (en) * 2010-12-30 2013-12-03 Lsi Corporation Methods and apparatus for trellis-based modulation encoding
US9398033B2 (en) 2011-02-25 2016-07-19 Cavium, Inc. Regular expression processing automaton
US9246928B2 (en) * 2011-05-02 2016-01-26 International Business Machines Corporation Compiling pattern contexts to scan lanes under instruction execution constraints
US9473527B1 (en) * 2011-05-05 2016-10-18 Trend Micro Inc. Automatically generated and shared white list
US8990416B2 (en) 2011-05-06 2015-03-24 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US9329975B2 (en) 2011-07-07 2016-05-03 Oracle International Corporation Continuous query language (CQL) debugger in complex event processing (CEP)
WO2013020002A1 (en) 2011-08-02 2013-02-07 Cavium, Inc. Incremental update of rules for packet classification
US9009448B2 (en) 2011-08-17 2015-04-14 Intel Corporation Multithreaded DFA architecture for finding rules match by concurrently performing at varying input stream positions and sorting result tokens
US8763018B2 (en) 2011-08-22 2014-06-24 Solarflare Communications, Inc. Modifying application behaviour
US8954599B2 (en) 2011-10-28 2015-02-10 Hewlett-Packard Development Company, L.P. Data stream operations
US8990070B2 (en) 2011-11-18 2015-03-24 International Business Machines Corporation Computer-based construction of arbitrarily complex formal grammar expressions
US9002772B2 (en) 2011-11-18 2015-04-07 International Business Machines Corporation Scalable rule-based processing system with trigger rules and rule evaluator
US9203805B2 (en) * 2011-11-23 2015-12-01 Cavium, Inc. Reverse NFA generation and processing
US9047243B2 (en) 2011-12-14 2015-06-02 Ip Reservoir, Llc Method and apparatus for low latency data distribution
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US9391840B2 (en) 2012-05-02 2016-07-12 Solarflare Communications, Inc. Avoiding delayed data
WO2014000819A1 (en) * 2012-06-29 2014-01-03 Telefonaktiebolaget Lm Ericsson (Publ) A method of and network server for detecting data patterns in an input data stream
US9391841B2 (en) 2012-07-03 2016-07-12 Solarflare Communications, Inc. Fast linkup arbitration
WO2014041783A1 (ja) * 2012-09-11 2014-03-20 日本電気株式会社 文字列検出回路及び文字列検出方法
IN2015DN01932A (ja) 2012-09-28 2015-08-07 Ericsson Telefon Ab L M
US9953059B2 (en) 2012-09-28 2018-04-24 Oracle International Corporation Generation of archiver queries for continuous queries over archived relations
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US10505747B2 (en) 2012-10-16 2019-12-10 Solarflare Communications, Inc. Feed processing
US9268881B2 (en) 2012-10-19 2016-02-23 Intel Corporation Child state pre-fetch in NFAs
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
WO2014066416A2 (en) 2012-10-23 2014-05-01 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US10133802B2 (en) 2012-10-23 2018-11-20 Ip Reservoir, Llc Method and apparatus for accelerated record layout detection
KR101378115B1 (ko) 2012-11-01 2014-03-27 한국전자통신연구원 Pcre 기반 패턴 매칭 기법을 이용한 네트워크 침입 탐지 장치 및 방법
KR101563059B1 (ko) * 2012-11-19 2015-10-23 삼성에스디에스 주식회사 안티 멀웨어 시스템 및 안티 멀웨어 시스템에서의 데이터 처리 방법
US9117170B2 (en) 2012-11-19 2015-08-25 Intel Corporation Complex NFA state matching method that matches input symbols against character classes (CCLs), and compares sequence CCLs in parallel
US9665664B2 (en) 2012-11-26 2017-05-30 Intel Corporation DFA-NFA hybrid
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US9304768B2 (en) 2012-12-18 2016-04-05 Intel Corporation Cache prefetch for deterministic finite automaton instructions
US9251440B2 (en) * 2012-12-18 2016-02-02 Intel Corporation Multiple step non-deterministic finite automaton matching
CN103078808B (zh) * 2012-12-29 2015-09-30 大连环宇移动科技有限公司 适用于多流正则表达式匹配的数据流交换复用系统及方法
US9098587B2 (en) 2013-01-15 2015-08-04 Oracle International Corporation Variable duration non-event pattern matching
US10298444B2 (en) 2013-01-15 2019-05-21 Oracle International Corporation Variable duration windows on continuous data streams
US9268570B2 (en) 2013-01-23 2016-02-23 Intel Corporation DFA compression and execution
US20140215090A1 (en) * 2013-01-31 2014-07-31 Lsi Corporation Dfa sub-scans
US9390135B2 (en) 2013-02-19 2016-07-12 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
US9047249B2 (en) 2013-02-19 2015-06-02 Oracle International Corporation Handling faults in a continuous event processing (CEP) system
US9426124B2 (en) 2013-04-08 2016-08-23 Solarflare Communications, Inc. Locked down network interface
US10742604B2 (en) 2013-04-08 2020-08-11 Xilinx, Inc. Locked down network interface
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
EP2809033B1 (en) 2013-05-30 2018-03-21 Solarflare Communications Inc Packet capture in a network
CN105264525A (zh) * 2013-06-04 2016-01-20 马维尔国际贸易有限公司 内部搜索引擎架构
CN104252469B (zh) 2013-06-27 2017-10-20 国际商业机器公司 用于模式匹配的方法、设备和电路
US9426165B2 (en) 2013-08-30 2016-08-23 Cavium, Inc. Method and apparatus for compilation of finite automata
US9563399B2 (en) 2013-08-30 2017-02-07 Cavium, Inc. Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features
US9426166B2 (en) 2013-08-30 2016-08-23 Cavium, Inc. Method and apparatus for processing finite automata
US10394751B2 (en) 2013-11-06 2019-08-27 Solarflare Communications, Inc. Programmed input/output mode
US9934279B2 (en) 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
US9419943B2 (en) 2013-12-30 2016-08-16 Cavium, Inc. Method and apparatus for processing of finite automata
US9275336B2 (en) 2013-12-31 2016-03-01 Cavium, Inc. Method and system for skipping over group(s) of rules based on skip group rule
US9544402B2 (en) 2013-12-31 2017-01-10 Cavium, Inc. Multi-rule approach to encoding a group of rules
US9667446B2 (en) 2014-01-08 2017-05-30 Cavium, Inc. Condition code approach for comparing rule and packet data that are provided in portions
US9729353B2 (en) * 2014-01-09 2017-08-08 Netronome Systems, Inc. Command-driven NFA hardware engine that encodes multiple automatons
US9602532B2 (en) 2014-01-31 2017-03-21 Cavium, Inc. Method and apparatus for optimizing finite automata processing
US9904630B2 (en) 2014-01-31 2018-02-27 Cavium, Inc. Finite automata processing based on a top of stack (TOS) memory
US10110558B2 (en) 2014-04-14 2018-10-23 Cavium, Inc. Processing of finite automata based on memory hierarchy
US9438561B2 (en) 2014-04-14 2016-09-06 Cavium, Inc. Processing of finite automata based on a node cache
US10002326B2 (en) 2014-04-14 2018-06-19 Cavium, Inc. Compilation of finite automata based on memory hierarchy
GB2541577A (en) 2014-04-23 2017-02-22 Ip Reservoir Llc Method and apparatus for accelerated data translation
US9244978B2 (en) 2014-06-11 2016-01-26 Oracle International Corporation Custom partitioning of a data stream
US10726005B2 (en) * 2014-06-25 2020-07-28 Sap Se Virtual split dictionary for search optimization
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
US9886486B2 (en) 2014-09-24 2018-02-06 Oracle International Corporation Enriching events with dynamically typed big data for event processing
US10120907B2 (en) 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations
US10148547B2 (en) * 2014-10-24 2018-12-04 Tektronix, Inc. Hardware trigger generation from a declarative protocol description
US20190113542A1 (en) * 2014-12-17 2019-04-18 Tektronix, Inc. Hardware trigger generation from a declarative protocol description
US9916347B2 (en) * 2014-12-29 2018-03-13 International Business Machines Corporation Rapid searching and matching of data to a dynamic set of signatures facilitating parallel processing and hardware acceleration
US10681007B2 (en) * 2015-06-05 2020-06-09 Konvax Corporation String search and matching for gate functionality
US10303685B2 (en) * 2015-06-08 2019-05-28 International Business Machines Corporation Data table performance optimization
US9898447B2 (en) 2015-06-22 2018-02-20 International Business Machines Corporation Domain specific representation of document text for accelerated natural language processing
WO2017018901A1 (en) 2015-07-24 2017-02-02 Oracle International Corporation Visually exploring and analyzing event streams
US9875045B2 (en) * 2015-07-27 2018-01-23 International Business Machines Corporation Regular expression matching with back-references using backtracking
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
US10204177B2 (en) 2015-11-30 2019-02-12 International Business Machines Corporation Matching an ordered set of strings containing wild cards
US10735438B2 (en) * 2016-01-06 2020-08-04 New York University System, method and computer-accessible medium for network intrusion detection
WO2017135838A1 (en) 2016-02-01 2017-08-10 Oracle International Corporation Level of detail control for geostreaming
WO2017135837A1 (en) 2016-02-01 2017-08-10 Oracle International Corporation Pattern based automated test data generation
CN106445891A (zh) * 2016-08-09 2017-02-22 中国科学院计算技术研究所 一种串匹配算法的加速方法及装置
CN106776456B (zh) * 2017-01-18 2019-06-18 中国人民解放军国防科学技术大学 基于fpga+npu的高速正则表达式匹配混合系统及方法
US9996328B1 (en) * 2017-06-22 2018-06-12 Archeo Futurus, Inc. Compiling and optimizing a computer code by minimizing a number of states in a finite machine corresponding to the computer code
US10481881B2 (en) * 2017-06-22 2019-11-19 Archeo Futurus, Inc. Mapping a computer code to wires and gates
US10521207B2 (en) * 2018-05-30 2019-12-31 International Business Machines Corporation Compiler optimization for indirect array access operations
US11561983B2 (en) 2019-03-07 2023-01-24 Throughputer, Inc. Online trained object property estimator
US11620557B2 (en) 2019-03-07 2023-04-04 Throughputer, Inc. Online trained object property estimator
US11604867B2 (en) 2019-04-01 2023-03-14 Throughputer, Inc. Graphic pattern-based authentication with adjustable challenge level
US10880211B2 (en) 2019-05-06 2020-12-29 Seth Gregory Friedman Transaction encoding and verification by way of data-link layer fields
CA3135226A1 (en) 2019-05-14 2020-11-19 David Edward Taylor Methods and systems for low latency generation and distribution of trading signals from financial market data
CN110321463B (zh) * 2019-05-31 2022-01-21 中国科学院计算技术研究所 一种字符串匹配方法、系统、存储介质及装置
EP3980910A4 (en) 2019-06-05 2023-07-26 Throughputer, Inc. PASSWORD GENERATION AND AUTHENTICATION BASED ON A GRAPHIC PATTERN
CN110324204B (zh) * 2019-07-01 2020-09-11 中国人民解放军陆军工程大学 一种在fpga中实现的高速正则表达式匹配引擎及方法
CN110865970B (zh) * 2019-10-08 2021-06-29 西安交通大学 一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法
CN110874426B (zh) * 2019-10-28 2022-08-09 西安交通大学 一种基于模式分类的异构位分割状态机多模匹配方法
CN111177491B (zh) * 2019-12-31 2023-08-25 奇安信科技集团股份有限公司 正则表达式的匹配方法、装置、电子设备及存储介质
CN111159497B (zh) * 2019-12-31 2023-09-22 奇安信科技集团股份有限公司 正则表达式的生成方法及基于正则表达式的数据提取方法
US11509608B2 (en) * 2020-04-13 2022-11-22 Salesforce, Inc. Methods and systems for configuring an email engine
EP4144048A4 (en) 2020-06-08 2024-06-26 Liquid Markets Gmbh HARDWARE-BASED TRANSACTION EXCHANGE
US11676068B1 (en) 2020-06-30 2023-06-13 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process leveraging input sparsity on a pixel by pixel basis
US11687831B1 (en) 2020-06-30 2023-06-27 Cadence Design Systems, Inc. Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference
US11823018B1 (en) * 2020-06-30 2023-11-21 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using weight sharing within a systolic array having reduced memory bandwidth
US11651283B1 (en) 2020-06-30 2023-05-16 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using dynamic rearrangement of sparse data and corresponding weights
US11615320B1 (en) 2020-06-30 2023-03-28 Cadence Design Systems, Inc. Method, product, and apparatus for variable precision weight management for neural networks
CN112769813B (zh) * 2020-12-31 2022-10-21 深圳市东晟数据有限公司 一种多前缀掩码五元组的匹配方法
US20220261900A1 (en) 2021-02-16 2022-08-18 Exegy Incorporated Methods and Systems for Joining Market Making at Low Latency
CN113051876B (zh) * 2021-04-02 2024-04-23 杭州网易智企科技有限公司 恶意网址识别方法及装置、存储介质、电子设备
US11662989B2 (en) * 2021-06-16 2023-05-30 International Business Machines Corporation Pointer alignment computation in program code according to code pattern analyses

Family Cites Families (238)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US860278A (en) * 1907-04-29 1907-07-16 Adin S Botkin Tobacco-rack.
US1667534A (en) * 1924-05-07 1928-04-24 Sanymetal Products Company Partition structure
US1637145A (en) * 1925-11-11 1927-07-26 Hart & Hutchinson Company Toilet inclosure
US2001574A (en) * 1929-11-08 1935-05-14 Dahlstrom Metallic Door Compan Metal partition
DE880658C (de) * 1950-09-06 1953-05-07 Alois Vogt Dr Verfahren zur Herstellung von Zeichen, wie Skalenstrichen, Faden-kreuzungen u. dgl., mit durch optisch homogene Randbegrenzungen bestimmter Raumform auf Unterlagen aller Art und durch dieses Verfahren hergestelltes Erzeugnis
US3245181A (en) * 1961-08-07 1966-04-12 Lloyd G Stephenson Anchor plate for posts
US3194362A (en) * 1962-02-05 1965-07-13 Mills Company Partition structures
US3151745A (en) * 1963-03-05 1964-10-06 Reilly Frederick William Adjustable pallet rack construction
US3468430A (en) * 1967-06-06 1969-09-23 Welinlok Ltd Structural elements to form racks
US3601808A (en) * 1968-07-18 1971-08-24 Bell Telephone Labor Inc Advanced keyword associative access memory system
US3611314A (en) 1969-09-09 1971-10-05 Texas Instruments Inc Dynamic associative data processing system
US3824375A (en) * 1970-08-28 1974-07-16 Financial Security Syst Inc Memory system
US3729712A (en) * 1971-02-26 1973-04-24 Eastman Kodak Co Information storage and retrieval system
US3733759A (en) * 1971-07-26 1973-05-22 American Store Equip Fitting room
US4136811A (en) * 1972-08-21 1979-01-30 Kajima Corporation H-shaped steel column base member and welding thereof
US3848235A (en) 1973-10-24 1974-11-12 Ibm Scan and read control apparatus for a disk storage drive in a computer system
US3906455A (en) * 1974-03-15 1975-09-16 Boeing Computer Services Inc Associative memory device
CA1056504A (en) * 1975-04-02 1979-06-12 Visvaldis A. Vitols Keyword detection in continuous speech using continuous asynchronous correlation
US4088229A (en) * 1975-10-24 1978-05-09 Seiz Corporation Storage rack columns having clean-outs
US4197685A (en) * 1978-07-24 1980-04-15 Gf Business Equipment, Inc. Partition strut assembly
US4298898A (en) 1979-04-19 1981-11-03 Compagnie Internationale Pour L'informatique Cii Honeywell Bull Method of and apparatus for reading data from reference zones of a memory
US4281480A (en) * 1979-06-21 1981-08-04 U.S. Gypsum Company Doorframe construction
US4314356A (en) * 1979-10-24 1982-02-02 Bunker Ramo Corporation High-speed term searcher
US4281481A (en) * 1980-01-18 1981-08-04 United States Gypsum Company Fire resistant aluminum door frame assembly
FR2481026B1 (ja) * 1980-04-21 1984-06-15 France Etat
US4464718A (en) * 1982-07-30 1984-08-07 International Business Machines Corporation Associative file processing method and apparatus
US4550436A (en) 1983-07-26 1985-10-29 At&T Bell Laboratories Parallel text matching methods and apparatus
US4941178A (en) * 1986-04-01 1990-07-10 Gte Laboratories Incorporated Speech recognition using preclassification and spectral normalization
US5392575A (en) * 1986-11-03 1995-02-28 Hoffman; Paul Deck construction
US4823306A (en) * 1987-08-14 1989-04-18 International Business Machines Corporation Text search system
US5023910A (en) * 1988-04-08 1991-06-11 At&T Bell Laboratories Vector quantization in a harmonic speech coding arrangement
US5179626A (en) * 1988-04-08 1993-01-12 At&T Bell Laboratories Harmonic speech coding arrangement where a set of parameters for a continuous magnitude spectrum is determined by a speech analyzer and the parameters are used by a synthesizer to determine a spectrum which is used to determine senusoids for synthesis
US5050075A (en) * 1988-10-04 1991-09-17 Bell Communications Research, Inc. High performance VLSI data filter
US5249292A (en) 1989-03-31 1993-09-28 Chiappa J Noel Data packet switch using a primary processing unit to designate one of a plurality of data stream control circuits to selectively handle the header processing of incoming packets in one data packet stream
JPH0314075A (ja) * 1989-06-13 1991-01-22 Ricoh Co Ltd 文書検索装置
US5036638A (en) * 1989-06-23 1991-08-06 Air Enterprises, Inc. Service building and the structural components thereof
AU620994B2 (en) * 1989-07-12 1992-02-27 Digital Equipment Corporation Compressed prefix matching database searching
US5163131A (en) 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US4987708A (en) * 1989-09-21 1991-01-29 Herman Miller, Inc. Seismic anchor
EP0565738A1 (en) * 1990-01-05 1993-10-20 Symbol Technologies, Inc. System for encoding and decoding data in machine readable graphic form
US5347634A (en) 1990-03-15 1994-09-13 Hewlett-Packard Company System and method for directly executing user DMA instruction from user controlled process by employing processor privileged work buffer pointers
US5319776A (en) * 1990-04-19 1994-06-07 Hilgraeve Corporation In transit detection of computer virus with safeguard
US5497488A (en) * 1990-06-12 1996-03-05 Hitachi, Ltd. System for parallel string search with a function-directed parallel collation of a first partition of each string followed by matching of second partitions
US5140644A (en) * 1990-07-23 1992-08-18 Hitachi, Ltd. Character string retrieving system and method
GB9016341D0 (en) * 1990-07-25 1990-09-12 British Telecomm Speed estimation
US5255136A (en) 1990-08-17 1993-10-19 Quantum Corporation High capacity submicro-winchester fixed disk drive
US5101424A (en) * 1990-09-28 1992-03-31 Northern Telecom Limited Method for generating a monitor program for monitoring text streams and executing actions when pre-defined patterns, are matched using an English to AWK language translator
GB9023096D0 (en) * 1990-10-24 1990-12-05 Int Computers Ltd Database search processor
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
US5421028A (en) 1991-03-15 1995-05-30 Hewlett-Packard Company Processing commands and data in a common pipeline path in a high-speed computer graphics system
EP0510634B1 (en) * 1991-04-25 1999-07-07 Nippon Steel Corporation Data base retrieval system
US5477451A (en) * 1991-07-25 1995-12-19 International Business Machines Corp. Method and system for natural language translation
US5488725A (en) * 1991-10-08 1996-01-30 West Publishing Company System of document representation retrieval by successive iterated probability sampling
US5265065A (en) 1991-10-08 1993-11-23 West Publishing Company Method and apparatus for information retrieval from a database by replacing domain specific stemmed phases in a natural language to create a search query
US5826075A (en) 1991-10-16 1998-10-20 International Business Machines Corporation Automated programmable fireware store for a personal computer system
WO1993018505A1 (en) * 1992-03-02 1993-09-16 The Walt Disney Company Voice transformation system
US5388259A (en) * 1992-05-15 1995-02-07 Bell Communications Research, Inc. System for accessing a database with an iterated fuzzy query notified by retrieval response
US5524268A (en) * 1992-06-26 1996-06-04 Cirrus Logic, Inc. Flexible processor-driven control of SCSI buses utilizing tags appended to data bytes to determine SCSI-protocol phases
GB9220404D0 (en) * 1992-08-20 1992-11-11 Nat Security Agency Method of identifying,retrieving and sorting documents
US5721898A (en) * 1992-09-02 1998-02-24 International Business Machines Corporation Method and system for data search in a data processing system
US6044407A (en) * 1992-11-13 2000-03-28 British Telecommunications Public Limited Company Interface for translating an information message from one protocol to another
US5481735A (en) * 1992-12-28 1996-01-02 Apple Computer, Inc. Method for modifying packets that meet a particular criteria as the packets pass between two layers in a network
US5440723A (en) 1993-01-19 1995-08-08 International Business Machines Corporation Automatic immune system for computers and computer networks
US5432822A (en) * 1993-03-12 1995-07-11 Hughes Aircraft Company Error correcting decoder and decoding method employing reliability based erasure decision-making in cellular communication system
US5544352A (en) * 1993-06-14 1996-08-06 Libertech, Inc. Method and apparatus for indexing, searching and displaying data
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5371794A (en) 1993-11-02 1994-12-06 Sun Microsystems, Inc. Method and apparatus for privacy and authentication in wireless networks
US5813000A (en) 1994-02-15 1998-09-22 Sun Micro Systems B tree structure and method
US5465353A (en) 1994-04-01 1995-11-07 Ricoh Company, Ltd. Image matching and retrieval by multi-access redundant hashing
US5461712A (en) 1994-04-18 1995-10-24 International Business Machines Corporation Quadrant-based two-dimensional memory manager
US5623652A (en) 1994-07-25 1997-04-22 Apple Computer, Inc. Method and apparatus for searching for information in a network and for controlling the display of searchable information on display devices in the network
JP2964879B2 (ja) * 1994-08-22 1999-10-18 日本電気株式会社 ポストフィルタ
SE505156C2 (sv) * 1995-01-30 1997-07-07 Ericsson Telefon Ab L M Förfarande för bullerundertryckning genom spektral subtraktion
US5819290A (en) 1995-04-10 1998-10-06 Sony Corporation Data recording and management system and method for detecting data file division based on quantitative number of blocks
CA2150174C (en) * 1995-05-25 1999-08-03 Heiner Ophardt Modular partition system
US5943421A (en) * 1995-09-11 1999-08-24 Norand Corporation Processor having compression and encryption circuitry
JPH0981574A (ja) * 1995-09-14 1997-03-28 Fujitsu Ltd 検索集合表示画面を利用したデータベース検索法およびシステム
US5701464A (en) 1995-09-15 1997-12-23 Intel Corporation Parameterized bloom filters
US5774839A (en) * 1995-09-29 1998-06-30 Rockwell International Corporation Delayed decision switched prediction multi-stage LSF vector quantization
US5630302A (en) * 1996-02-02 1997-05-20 Morgan Marshall Industries, Inc. Fitting room
US5864738A (en) * 1996-03-13 1999-01-26 Cray Research, Inc. Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller
US5781921A (en) * 1996-05-06 1998-07-14 Ohmeda Inc. Method and apparatus to effect firmware upgrades using a removable memory device under software control
GB2314433A (en) * 1996-06-22 1997-12-24 Xerox Corp Finding and modifying strings of a regular language in a text
US6147976A (en) 1996-06-24 2000-11-14 Cabletron Systems, Inc. Fast network layer packet filter
US5995963A (en) * 1996-06-27 1999-11-30 Fujitsu Limited Apparatus and method of multi-string matching based on sparse state transition list
US5991881A (en) 1996-11-08 1999-11-23 Harris Corporation Network surveillance system
JP3231673B2 (ja) * 1996-11-21 2001-11-26 シャープ株式会社 文字,文字列検索方法及び該方法に用いる記録媒体
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
US5899035A (en) * 1997-05-15 1999-05-04 Steelcase, Inc. Knock-down portable partition system
US5911778A (en) 1996-12-31 1999-06-15 Sun Microsystems, Inc. Processing system security
US6028939A (en) 1997-01-03 2000-02-22 Redcreek Communications, Inc. Data security system and method
US6070172A (en) * 1997-03-06 2000-05-30 Oracle Corporation On-line free space defragmentation of a contiguous-file file system
CA2199315C (en) * 1997-03-06 2004-12-14 John Hellwig Work surface support arrangement for office panelling systems
US5930753A (en) * 1997-03-20 1999-07-27 At&T Corp Combining frequency warping and spectral shaping in HMM based speech recognition
JPH10326287A (ja) 1997-05-23 1998-12-08 Mitsubishi Corp デジタルコンテンツ管理システム及びデジタルコンテンツ管理装置
US6236727B1 (en) 1997-06-24 2001-05-22 International Business Machines Corporation Apparatus, method and computer program product for protecting copyright data within a computer system
JP3372455B2 (ja) 1997-07-03 2003-02-04 富士通株式会社 パケット中継制御方法,パケット中継装置およびプログラム記憶媒体
US6067569A (en) 1997-07-10 2000-05-23 Microsoft Corporation Fast-forwarding and filtering of network packets in a computer system
US6317795B1 (en) 1997-07-22 2001-11-13 International Business Machines Corporation Dynamic modification of multimedia content
JPH11110320A (ja) * 1997-10-03 1999-04-23 Matsushita Electric Ind Co Ltd メッセージ交換装置
GB2330682A (en) 1997-10-22 1999-04-28 Calluna Tech Ltd Password access to an encrypted drive
US5946867A (en) * 1997-10-29 1999-09-07 Ericsson, Inc. Modular earthquake support for raised floor
US6138176A (en) 1997-11-14 2000-10-24 3Ware Disk array controller with automated processor which routes I/O data according to addresses and commands received from disk drive controllers
US6412000B1 (en) 1997-11-25 2002-06-25 Packeteer, Inc. Method for automatically classifying traffic in a packet communications network
US6058391A (en) 1997-12-17 2000-05-02 Mci Communications Corporation Enhanced user view/update capability for managing data from relational tables
US6339819B1 (en) * 1997-12-17 2002-01-15 Src Computers, Inc. Multiprocessor with each processor element accessing operands in loaded input buffer and forwarding results to FIFO output buffer
US5927666A (en) * 1998-01-26 1999-07-27 Barkan; Lior Wall bracket
US5987610A (en) 1998-02-12 1999-11-16 Ameritech Corporation Computer virus screening methods and systems
KR100441171B1 (ko) * 1998-02-20 2004-10-14 삼성전자주식회사 플래쉬롬과램을이용한펌웨어구현방법
US6279113B1 (en) 1998-03-16 2001-08-21 Internet Tools, Inc. Dynamic signature inspection-based network intrusion detection
US6389532B1 (en) 1998-04-20 2002-05-14 Sun Microsystems, Inc. Method and apparatus for using digital signatures to filter packets in a network
US6397259B1 (en) 1998-05-29 2002-05-28 Palm, Inc. Method, system and apparatus for packet minimized communications
US6289461B1 (en) 1998-06-09 2001-09-11 Placeware, Inc. Bi-directional process-to-process byte stream protocol
US6169969B1 (en) 1998-08-07 2001-01-02 The United States Of America As Represented By The Director Of The National Security Agency Device and method for full-text large-dictionary string matching using n-gram hashing
US6535868B1 (en) 1998-08-27 2003-03-18 Debra A. Galeazzi Method and apparatus for managing metadata in a database management system
GB9819183D0 (en) 1998-09-04 1998-10-28 Int Computers Ltd Multiple string search method
US6226676B1 (en) 1998-10-07 2001-05-01 Nortel Networks Corporation Connection establishment and termination in a mixed protocol network
JP4763866B2 (ja) 1998-10-15 2011-08-31 インターシア ソフトウェア エルエルシー 2重再暗号化によりデジタルデータを保護する方法及び装置
US7181548B2 (en) * 1998-10-30 2007-02-20 Lsi Logic Corporation Command queueing engine
CA2351175C (en) 1998-11-24 2016-05-03 Niksun, Inc. Apparatus and method for collecting and analyzing communications data
US6564263B1 (en) 1998-12-04 2003-05-13 International Business Machines Corporation Multimedia content description framework
US6625150B1 (en) 1998-12-17 2003-09-23 Watchguard Technologies, Inc. Policy engine architecture
US6499107B1 (en) 1998-12-29 2002-12-24 Cisco Technology, Inc. Method and system for adaptive network security using intelligent packet analysis
US6329996B1 (en) 1999-01-08 2001-12-11 Silicon Graphics, Inc. Method and apparatus for synchronizing graphics pipelines
US6578147B1 (en) 1999-01-15 2003-06-10 Cisco Technology, Inc. Parallel intrusion detection sensors with load balancing for high speed networks
JP3526414B2 (ja) 1999-03-31 2004-05-17 株式会社東芝 情報記録再生方法および情報記録再生装置
US6765918B1 (en) 1999-06-16 2004-07-20 Teledata Networks, Ltd. Client/server based architecture for a telecommunications network
US6463474B1 (en) 1999-07-02 2002-10-08 Cisco Technology, Inc. Local authentication of a client at a network device
US7002986B1 (en) * 1999-07-08 2006-02-21 Nortel Networks Limited Mapping arbitrary signals into SONET
GB2352548B (en) 1999-07-26 2001-06-06 Sun Microsystems Inc Method and apparatus for executing standard functions in a computer system
JP2003510705A (ja) 1999-09-20 2003-03-18 シーゲイト テクノロジー エルエルシー フィールドプログラム可能ゲートアレイハードディスク装置
US6804667B1 (en) 1999-11-30 2004-10-12 Ncr Corporation Filter for checking for duplicate entries in database
FI109319B (fi) 1999-12-03 2002-06-28 Nokia Corp Päätelaitteelle välitettävän elektronisen informaation suodattaminen
JP2001189755A (ja) 1999-12-28 2001-07-10 Toshiba Corp パケット通信装置、パケット通信方法および記憶媒体
US7356498B2 (en) 1999-12-30 2008-04-08 Chicago Board Options Exchange, Incorporated Automated trading exchange system having integrated quote risk monitoring and integrated quote modification services
JP3448254B2 (ja) 2000-02-02 2003-09-22 インターナショナル・ビジネス・マシーンズ・コーポレーション アクセス・チェーン追跡システム、ネットワーク・システム、方法、及び記録媒体
US6748457B2 (en) 2000-02-03 2004-06-08 Realtime Data, Llc Data storewidth accelerator
US6877044B2 (en) * 2000-02-10 2005-04-05 Vicom Systems, Inc. Distributed storage management platform architecture
WO2001061913A2 (en) 2000-02-18 2001-08-23 Verimatrix, Inc. Network-based content distribution system
US7139743B2 (en) 2000-04-07 2006-11-21 Washington University Associative database scanning and information retrieval using FPGA devices
US6711558B1 (en) * 2000-04-07 2004-03-23 Washington University Associative database scanning and information retrieval
US8095508B2 (en) 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
WO2001080558A2 (en) 2000-04-14 2001-10-25 Solidstreaming, Inc. A system and method for multimedia streaming
US6981054B1 (en) 2000-06-06 2005-12-27 Advanced Micro Devices, Inc. Flow control arrangement in a network switch based on priority traffic
US20040064737A1 (en) 2000-06-19 2004-04-01 Milliken Walter Clark Hash-based systems and methods for detecting and preventing transmission of polymorphic network worms and viruses
US7328349B2 (en) 2001-12-14 2008-02-05 Bbn Technologies Corp. Hash-based systems and methods for detecting, preventing, and tracing network worms and viruses
US8204082B2 (en) 2000-06-23 2012-06-19 Cloudshield Technologies, Inc. Transparent provisioning of services over a network
US6381242B1 (en) 2000-08-29 2002-04-30 Netrake Corporation Content processor
US20020069370A1 (en) 2000-08-31 2002-06-06 Infoseer, Inc. System and method for tracking and preventing illegal distribution of proprietary material over computer networks
WO2002061525A2 (en) 2000-11-02 2002-08-08 Pirus Networks Tcp/udp acceleration
US7760737B2 (en) 2000-11-30 2010-07-20 Audiocodes, Inc. Method for reordering and reassembling data packets in a network
US20020166063A1 (en) 2001-03-01 2002-11-07 Cyber Operations, Llc System and method for anti-network terrorism
US7681032B2 (en) 2001-03-12 2010-03-16 Portauthority Technologies Inc. System and method for monitoring unauthorized transport of digital content
EP1490767B1 (en) 2001-04-05 2014-06-11 Audible Magic Corporation Copyright detection and protection system and method
US7325249B2 (en) 2001-04-30 2008-01-29 Aol Llc Identifying unwanted electronic messages
US6785677B1 (en) * 2001-05-02 2004-08-31 Unisys Corporation Method for execution of query to search strings of characters that match pattern with a target string utilizing bit vector
US6944168B2 (en) 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
MXPA03010846A (es) * 2001-05-07 2004-11-22 L & P Property Management Co Sistema de habitacion modular y metodo.
US7152151B2 (en) 2002-07-18 2006-12-19 Ge Fanuc Embedded Systems, Inc. Signal processing resource for selective series processing of data in transit on communications paths in multi-processor arrangements
WO2002101516A2 (en) 2001-06-13 2002-12-19 Intruvert Networks, Inc. Method and apparatus for distributed network security
US6928549B2 (en) 2001-07-09 2005-08-09 International Business Machines Corporation Dynamic intrusion detection for computer systems
US7845004B2 (en) 2001-07-27 2010-11-30 International Business Machines Corporation Correlating network information and intrusion information to find the entry point of an attack upon a protected computer
US6980976B2 (en) 2001-08-13 2005-12-27 Oracle International Corp. Combined database index of unstructured and structured columns
US6931408B2 (en) 2001-08-17 2005-08-16 E.C. Outlook, Inc. Method of storing, maintaining and distributing computer intelligible electronic data
US7046848B1 (en) 2001-08-22 2006-05-16 Olcott Peter L Method and system for recognizing machine generated character glyphs and icons in graphic images
US7133405B2 (en) 2001-08-30 2006-11-07 International Business Machines Corporation IP datagram over multiple queue pairs
US6978223B2 (en) 2001-09-06 2005-12-20 Bbnt Solutions Llc Systems and methods for network performance measurement using packet signature collection
AU2002220130A1 (en) 2001-09-12 2003-03-24 Raqia Networks, Inc. High speed data stream pattern recognition
US7558967B2 (en) 2001-09-13 2009-07-07 Actel Corporation Encryption for a stream file in an FPGA integrated circuit
CA2403699C (en) 2001-09-17 2014-12-02 Recognia Inc. Technical analysis formation recognition using pivot points
US20030065943A1 (en) 2001-09-28 2003-04-03 Christoph Geis Method and apparatus for recognizing and reacting to denial of service attacks on a computerized network
US7181765B2 (en) 2001-10-12 2007-02-20 Motorola, Inc. Method and apparatus for providing node security in a router of a packet network
US7716330B2 (en) 2001-10-19 2010-05-11 Global Velocity, Inc. System and method for controlling transmission of data packets over an information network
US6772345B1 (en) 2002-02-08 2004-08-03 Networks Associates Technology, Inc. Protocol-level malware scanner
US7225188B1 (en) * 2002-02-13 2007-05-29 Cisco Technology, Inc. System and method for performing regular expression matching with high parallelism
US20040111632A1 (en) 2002-05-06 2004-06-10 Avner Halperin System and method of virus containment in computer networks
US7093023B2 (en) * 2002-05-21 2006-08-15 Washington University Methods, systems, and devices using reprogrammable hardware for high-speed processing of streaming data to find a redefinable pattern and respond thereto
EP1514190A4 (en) 2002-05-22 2006-09-20 Procera Networks SWITCH FOR A LOCAL NETWORK
US7620712B1 (en) 2002-05-30 2009-11-17 Nortel Networks Limited Availability measurement in networks
US7167980B2 (en) 2002-05-30 2007-01-23 Intel Corporation Data comparison process
US7478431B1 (en) 2002-08-02 2009-01-13 Symantec Corporation Heuristic detection of computer viruses
WO2004014065A2 (en) * 2002-08-05 2004-02-12 John Campbell System of finite state machines
US7711844B2 (en) 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US8201252B2 (en) 2002-09-03 2012-06-12 Alcatel Lucent Methods and devices for providing distributed, adaptive IP filtering against distributed denial of service attacks
US7953820B2 (en) 2002-09-11 2011-05-31 Hughes Network Systems, Llc Method and system for providing enhanced performance of web browsing
WO2004042562A2 (en) 2002-10-31 2004-05-21 Lockheed Martin Corporation Pipeline accelerator and related system and method
EP1573514A2 (en) 2002-10-31 2005-09-14 Lockheed Martin Corporation Pipeline accelerator and related computer and method
JP4154213B2 (ja) 2002-11-01 2008-09-24 富士通株式会社 パケット処理装置
JP2004186717A (ja) 2002-11-29 2004-07-02 Toshiba Corp 通信制御方法、サーバ機器、及びクライアント機器
US6901461B2 (en) * 2002-12-31 2005-05-31 Intel Corporation Hardware assisted ATA command queuing
WO2004072797A2 (en) * 2003-02-07 2004-08-26 Safenet, Inc. System and method for determining the start of a match of a regular expression
TW591532B (en) 2003-03-07 2004-06-11 Mediatek Inc Firmware structuring method and related apparatus for unifying handling of execution responses of subroutines
US7660352B2 (en) 2003-04-04 2010-02-09 Sony Corporation Apparatus and method of parallel processing an MPEG-4 data stream
US20070277036A1 (en) 2003-05-23 2007-11-29 Washington University, A Corporation Of The State Of Missouri Intelligent data storage and processing using fpga devices
US7685254B2 (en) * 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7788726B2 (en) 2003-07-02 2010-08-31 Check Point Software Technologies, Inc. System and methodology providing information lockbox
US7257842B2 (en) 2003-07-21 2007-08-14 Mcafee, Inc. Pre-approval of computer files during a malware detection
US7444515B2 (en) * 2003-08-14 2008-10-28 Washington University Method and apparatus for detecting predefined signatures in packet payload using Bloom filters
US7222114B1 (en) 2003-08-20 2007-05-22 Xilinx, Inc. Method and apparatus for rule-based operations
US7287037B2 (en) 2003-08-28 2007-10-23 International Business Machines Corporation Method and apparatus for generating service oriented state data mapping between extensible meta-data model and state data including logical abstraction
US7408932B2 (en) 2003-10-20 2008-08-05 Intel Corporation Method and apparatus for two-stage packet classification using most specific filter matching and transport level sharing
US7454418B1 (en) 2003-11-07 2008-11-18 Qiang Wang Fast signature scan
US7386564B2 (en) 2004-01-15 2008-06-10 International Business Machines Corporation Generating statistics on text pattern matching predicates for access planning
JP4120888B2 (ja) * 2004-01-30 2008-07-16 日本電気株式会社 データ検索装置及び方法
US7019674B2 (en) 2004-02-05 2006-03-28 Nec Laboratories America, Inc. Content-based information retrieval architecture
US7602785B2 (en) * 2004-02-09 2009-10-13 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters
US7433355B2 (en) 2004-02-09 2008-10-07 Alcatel Lucent Filter based longest prefix match algorithm
US8311974B2 (en) 2004-02-20 2012-11-13 Oracle International Corporation Modularized extraction, transformation, and loading for a database
JP4347087B2 (ja) * 2004-02-26 2009-10-21 日本電信電話株式会社 パターンマッチング装置および方法ならびにプログラム
US7411957B2 (en) 2004-03-26 2008-08-12 Cisco Technology, Inc. Hardware filtering support for denial-of-service attacks
US7457834B2 (en) 2004-07-30 2008-11-25 Searete, Llc Aggregation and retrieval of network sensor data
US7966658B2 (en) 2004-04-08 2011-06-21 The Regents Of The University Of California Detecting public network attacks using signatures and fast content analysis
US7305383B1 (en) * 2004-06-10 2007-12-04 Cisco Technology, Inc. Processing system using bitmap array to compress deterministic finite automation state table allowing direct indexing
US7693856B2 (en) 2004-06-25 2010-04-06 Apple Inc. Methods and systems for managing data
US7660865B2 (en) 2004-08-12 2010-02-09 Microsoft Corporation Spam filtering with probabilistic secure hashes
US20060053295A1 (en) * 2004-08-24 2006-03-09 Bharath Madhusudan Methods and systems for content detection in a reconfigurable hardware
US20060047636A1 (en) 2004-08-26 2006-03-02 Mohania Mukesh K Method and system for context-oriented association of unstructured content with the result of a structured database query
JP2008512786A (ja) 2004-09-10 2008-04-24 カビウム・ネットワークス データ構造の選択的複製方法および装置
US7461064B2 (en) 2004-09-24 2008-12-02 International Buiness Machines Corporation Method for searching documents for ranges of numeric values
US8321465B2 (en) 2004-11-14 2012-11-27 Bloomberg Finance L.P. Systems and methods for data coding, transmission, storage and decoding
US20060129745A1 (en) 2004-12-11 2006-06-15 Gunther Thiel Process and appliance for data processing and computer program product
WO2006096324A2 (en) 2005-03-03 2006-09-14 Washington University Method and apparatus for performing biosequence similarity searching
US7765183B2 (en) * 2005-04-23 2010-07-27 Cisco Technology, Inc Hierarchical tree of deterministic finite automata
US20070011183A1 (en) 2005-07-05 2007-01-11 Justin Langseth Analysis and transformation tools for structured and unstructured data
US7467155B2 (en) 2005-07-12 2008-12-16 Sand Technology Systems International, Inc. Method and apparatus for representation of unstructured data
US7801910B2 (en) 2005-11-09 2010-09-21 Ramp Holdings, Inc. Method and apparatus for timed tagging of media content
US7805392B1 (en) * 2005-11-29 2010-09-28 Tilera Corporation Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table
US7702629B2 (en) * 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
US7954114B2 (en) 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
US8091132B2 (en) 2006-03-03 2012-01-03 New Jersey Institute Of Technology Behavior-based traffic differentiation (BTD) for defending against distributed denial of service (DDoS) attacks
US8379841B2 (en) 2006-03-23 2013-02-19 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US7636703B2 (en) 2006-05-02 2009-12-22 Exegy Incorporated Method and apparatus for approximate pattern matching
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7783862B2 (en) * 2006-08-07 2010-08-24 International Characters, Inc. Method and apparatus for an inductive doubling architecture
WO2008022036A2 (en) * 2006-08-10 2008-02-21 Washington University Method and apparatus for protein sequence alignment using fpga devices
US7701945B2 (en) 2006-08-10 2010-04-20 Sourcefire, Inc. Device, system and method for analysis of segments in a transmission control protocol (TCP) session
US7660793B2 (en) * 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8326819B2 (en) * 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors

Also Published As

Publication number Publication date
CA2820500C (en) 2016-01-19
AU2006320643B2 (en) 2012-09-13
US7945528B2 (en) 2011-05-17
WO2007064685A2 (en) 2007-06-07
CA2820500A1 (en) 2007-06-07
JP2009517782A (ja) 2009-04-30
CA2629618C (en) 2013-08-27
EP1960913A2 (en) 2008-08-27
EP1960913B1 (en) 2017-01-11
US7702629B2 (en) 2010-04-20
US20100198850A1 (en) 2010-08-05
EP1960913A4 (en) 2014-07-30
CA2629618A1 (en) 2007-06-07
AU2006320643A1 (en) 2007-06-07
WO2007064685A3 (en) 2008-10-02
US20070130140A1 (en) 2007-06-07

Similar Documents

Publication Publication Date Title
JP5265378B2 (ja) 高性能正規表現パターンマッチングのための方法および装置
US11568674B2 (en) Fast signature scan
Kumar et al. Advanced algorithms for fast and scalable deep packet inspection
US8843508B2 (en) System and method for regular expression matching with multi-strings and intervals
KR100477391B1 (ko) 네트워크 프로세서용 완전 정합(fm) 검색 알고리즘 구현
US7539031B2 (en) Inexact pattern searching using bitmap contained in a bitcheck command
US7539032B2 (en) Regular expression searching of packet contents using dedicated search circuits
US7529746B2 (en) Search circuit having individually selectable search engines
US20050273450A1 (en) Regular expression acceleration engine and processing model
US20080071757A1 (en) Search engine having multiple co-processors for performing inexact pattern search operations
US20080071779A1 (en) Method and apparatus for managing multiple data flows in a content search system
US20190052553A1 (en) Architectures and methods for deep packet inspection using alphabet and bitmap-based compression
US20160335296A1 (en) Memory System for Optimized Search Access
Kempa et al. Dynamic suffix array with polylogarithmic queries and updates
WO2010047683A1 (en) Fast signature scan
Xu et al. OD-REM: On-Demand Regular Expression Matching on FPGAs for Efficient Deep Packet Inspection
Fernandez Hardware Implementation of a String Matching Algorithm Based on the FM-Index
WO2008036501A2 (en) Regular expression searching of packet contents using dedicated search circuits

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120417

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120601

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121016

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130308

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130501

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5265378

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250