JP2008512797A - Deterministic finite automaton (DFA) processing - Google Patents
Deterministic finite automaton (DFA) processing Download PDFInfo
- Publication number
- JP2008512797A JP2008512797A JP2007531386A JP2007531386A JP2008512797A JP 2008512797 A JP2008512797 A JP 2008512797A JP 2007531386 A JP2007531386 A JP 2007531386A JP 2007531386 A JP2007531386 A JP 2007531386A JP 2008512797 A JP2008512797 A JP 2008512797A
- Authority
- JP
- Japan
- Prior art keywords
- dfa
- instruction
- graph
- memory
- cache
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
- G06F15/7846—On-chip cache and off-chip main memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/164—Implementing security features at a particular protocol layer at the network layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
到着するパケットデータで決定性有限オートマトン(DFA)グラフをリアルタイムで走査するプロセッサ110を提供する。プロセッサは、少なくとも1つのプロセッサコア120と、この少なくとも1つのプロセッサコア120と非同期に動作するDFAモジュール134とを有し、キャッシュコヒーレントメモリ130,108に格納されたパケットデータでノンキャッシュメモリ118に格納された少なくとも1つのDFAグラフを走査する。
【選択図】図1BA processor 110 is provided that scans a deterministic finite automaton (DFA) graph in real time with incoming packet data. The processor has at least one processor core 120 and a DFA module 134 that operates asynchronously with the at least one processor core 120 and stores the packet data stored in the cache coherent memories 130 and 108 in the non-cache memory 118. Scan at least one DFA graph generated.
[Selection] Figure 1B
Description
本出願は、2004年9月10日に出願された米国仮特許出願第60/609,211号、および2005年4月8日に出願された米国仮特許出願第60/669,672号の利益を主張するものであり、上記各出願の全内容は参照により本明細書に引用したものとする。 This application claims the benefit of US Provisional Patent Application No. 60 / 609,211 filed on September 10, 2004 and US Provisional Patent Application No. 60 / 669,672 filed on April 8, 2005. The entire contents of each of the above applications are incorporated herein by reference.
開放型システム間相互接続(OSI)参照モデルは、伝送媒体を介する通信に使用される7つのネットワークプロトコル層(L1−L7)を規定している。上位層(L4−L7)はエンド・ツー・エンド通信を表し、下位層(L1−L3)は局所的な通信を表す。 The Open Systems Interconnection (OSI) reference model defines seven network protocol layers (L1-L7) that are used for communication over transmission media. The upper layer (L4-L7) represents end-to-end communication, and the lower layer (L1-L3) represents local communication.
ネットワーキングアプリケーションアウェア型(アプリケーションが自動的にネットワークを制御する)システムは、L3からL7までの範囲のネットワークプロトコル層、例えば、ハイパーテキスト転送プロトコル(HTTP)およびシンプルメール転送プロトコル(SMTP)などのL7ネットワークプロトコル層、および伝送制御プロトコル(TCP)などのL4ネットワークプロトコル層を処理し、フィルタリングし、かつ切り換える必要がある。ネットワークプロトコル層の処理に加えて、ネットワーキングアプリケーションアウェア型システムは、ファイアウォール、仮想プライベートネットワーク(VPN)、セキュアソケットレイヤ(SSL)、侵入検知システム(IDS)、インターネットプロトコルセキュリティ(IPSec)、アンチウィルス(AV)およびアンチスパム機能を含む、L4からL7までのネットワークプロトコル層を介するアクセスベースおよびコンテンツベースのセキュリティによって、これらのプロトコルの安全性を同時にワイヤスピードで保護する必要もある。 Networking application-aware systems (applications automatically control the network) network protocol layers ranging from L3 to L7, for example L7 networks such as Hypertext Transfer Protocol (HTTP) and Simple Mail Transfer Protocol (SMTP) There is a need to process, filter and switch protocol layers and L4 network protocol layers such as Transmission Control Protocol (TCP). In addition to network protocol layer processing, networking application-aware systems include firewall, virtual private network (VPN), secure socket layer (SSL), intrusion detection system (IDS), Internet protocol security (IPSec), antivirus (AV ) And access-based and content-based security through the L4 to L7 network protocol layers, including anti-spam features, also requires that these protocols be secured at wire speed at the same time.
ネットワークプロセッサが、高スループットのL2およびL3ネットワークプロトコル処理に利用される。このL2およびL3ネットワークプロトコル処理は、パケットをワイヤスピードで転送するパケット処理の実行である。一般に、より高度の処理を必要とするL4からL7までのネットワークプロトコルの処理には、汎用プロセッサが使用される。例えば、L4ネットワークプロトコルである伝送制御プロトコル(TCP)は、パケット内の全ペイロードにわたるチェックサムの計算、TCPセグメントバッファの管理および複数のタイマの接続毎の常時保持を含む複数の計算集約型タスクを必要とする。汎用プロセッサは、計算集約型タスクを実行できるが、データを処理してワイヤスピードで転送できるだけの十分な性能は備えていない。 Network processors are utilized for high throughput L2 and L3 network protocol processing. The L2 and L3 network protocol processing is execution of packet processing for transferring a packet at wire speed. In general, a general-purpose processor is used for processing network protocols from L4 to L7 that require higher-level processing. For example, the Transmission Control Protocol (TCP), an L4 network protocol, includes multiple computationally intensive tasks, including checksum calculation across all payloads in a packet, TCP segment buffer management, and multiple timers that are always retained for each connection. I need. A general purpose processor can perform computationally intensive tasks, but does not have enough performance to process and transfer data at wire speed.
さらに、パケットのコンテンツを調べるコンテンツアウェア型アプリケーション(コンテンツを自動的に認識するアプリケーション)は、データストリーム内の固定文字列および可変回数で反復される文字クラスの双方を含む表現を探索する必要がある。ソフトウェアでこのタスクを実行するために、複数の探索アルゴリズムが使用される。このようなアルゴリズムの1つが、決定性有限オートマトン(DFA)である。ただし、DFA探索アルゴリズムを使用する場合、反復パターンによるグラフサイズの指数関数的拡大およびデータストリーム内の偽一致などの制限が生じる。 Furthermore, a content-aware application that examines the contents of a packet (an application that automatically recognizes content) needs to search for an expression that includes both a fixed character string and a character class that is repeated a variable number of times in the data stream. . Multiple search algorithms are used to perform this task in software. One such algorithm is deterministic finite automaton (DFA). However, when using the DFA search algorithm, limitations such as exponential expansion of the graph size due to repetitive patterns and false matches in the data stream arise.
これらの制限があるため、コンテンツ処理アプリケーションは、パターン探索によって生じる結果に対してかなりの量の後処理を必要とする。後処理は、接続種別などの他の接続状態情報およびパケットに包含されるプロトコルヘッダ内の特定の値によって、一致パターンを識別する必要がある。またこれは、特定の他のタイプの計算集約型識別を必要とし、例えば、パターン一致が有効であるのは、それがデータストリーム内の特定の位置範囲内にあるか、あるいは、別のパターンが後に続いてかつ先行するパターンから特定の範囲内にあるか、または、先行するパターンから特定のオフセット位置もしくはそのオフセット位置の後にある場合のみである。例えば、正規表現一致は、種々の演算子と単一文字を組み合わせて、複合な表現の構成を可能にする。 Because of these limitations, content processing applications require a significant amount of post-processing on the results produced by pattern searching. In the post-processing, it is necessary to identify the matching pattern based on other connection state information such as the connection type and a specific value in the protocol header included in the packet. This also requires certain other types of computationally intensive identification, for example, pattern matching is valid if it is within a certain position range in the data stream, or if another pattern is Only if it follows and is within a certain range from the preceding pattern, or only after or after a certain offset position from the preceding pattern. For example, regular expression matching combines various operators and single characters to allow the construction of complex expressions.
本発明は、プロセッサがコンテンツ処理アプリケーションを処理できる速度を向上させることを目的とする。本プロセッサは、少なくとも1つのプロセッサコアと、この少なくとも1つのプロセッサコアと非同期に動作する決定性有限オートマトン(DFA)モジュールであって、第1メモリに格納された少なくとも1つのDFAグラフを、第2メモリに格納されたパケットデータを用いて走査するDFAモジュールとを有する。 The present invention aims to improve the speed at which a processor can process a content processing application. The processor includes at least one processor core and a deterministic finite automaton (DFA) module that operates asynchronously with the at least one processor core. The processor stores at least one DFA graph stored in the first memory. And a DFA module that scans using the packet data stored in.
DFAモジュールは、第1メモリコントローラと、少なくとも1つのDFAスレッドエンジンと、命令入力論理とを有することができる。プロセッサコアは、命令入力論理の命令待ち行列を介してDFAモジュールにDFA命令を送出できる。DFA命令は、第2メモリに格納されたパケットデータを使用のために指示でき、第1メモリに格納されたDFAグラフを走査のために指示できる。DFAモジュールは、DFAスレッドエンジンにDFA命令をスケジューリングすることができる。DFAスレッドエンジンは、第2メモリに格納されているパケットデータをフェッチし、フェッチされたパケットデータに応じたメモリアクセス命令を発行できる。 The DFA module can have a first memory controller, at least one DFA thread engine, and instruction input logic. The processor core can send DFA instructions to the DFA module via an instruction queue of instruction input logic. The DFA instruction can indicate the packet data stored in the second memory for use, and can indicate the DFA graph stored in the first memory for scanning. The DFA module can schedule DFA instructions to the DFA thread engine. The DFA thread engine can fetch the packet data stored in the second memory and issue a memory access instruction according to the fetched packet data.
例えば、第1メモリはノンキャッシュメモリであってもよく、第2メモリはキャッシュコヒーレントメモリであってもよい。DFAスレッドエンジンは、キャッシュコヒーレントメモリに格納されているパケットデータを一度に1バイトずつ逐次フェッチする。次に、DFAスレッドエンジンは、キャッシュコヒーレントメモリから受け取るパケットデータのバイト毎にノンキャッシュメモリロード命令を発行して、ノンキャッシュメモリに格納されているDFAグラフの次の状態を走査する。DFAスレッドエンジンはまた、キャッシュコヒーレントメモリに中間および最終結果を書き込む。 For example, the first memory may be a non-cache memory and the second memory may be a cache coherent memory. The DFA thread engine sequentially fetches packet data stored in the cache coherent memory one byte at a time. Next, the DFA thread engine issues a non-cache memory load instruction for each byte of packet data received from the cache coherent memory, and scans the next state of the DFA graph stored in the non-cache memory. The DFA thread engine also writes intermediate and final results to cache coherent memory.
本発明の上述および他の目的、特徴および利点は、添付図面に示す本発明の好ましい実施形態に関する以下のより詳細な説明から明らかとなるであろう。添付図面では、同一参照符号は異なる図面においても同一部分を指す。図面は、必ずしも縮尺通りではなく、本発明の原理を示すことに重点を置いている。 The foregoing and other objects, features and advantages of the invention will become apparent from the following more detailed description of the preferred embodiment of the invention as illustrated in the accompanying drawings. In the accompanying drawings, the same reference numerals denote the same parts in different drawings. The drawings are not necessarily to scale, emphasis instead being placed on illustrating the principles of the invention.
以下、本発明の好ましい実施形態について説明する。 Hereinafter, preferred embodiments of the present invention will be described.
図1Aは、本発明の原理によるネットワークサービスプロセッサ110を含むセキュリティアシステム100を示すブロック図である。セキュリティシステム100は、1つのイーサネット(登録商標)ポート(Gig E)で受信したパケットを別のイーサネット(登録商標)ポート(Gig E)に切り換えて、受信したパケットに複数のセキュリティ機能を実行した後にそのパケットを転送する、スタンドアロン型システムである。例えば、セキュリティシステム100を用いて、広域ネットワーク上で受信するパケットに対してセキュリティ処理を実行した後に、そのパケットをローカルエリアネットワークに転送することができる。
FIG. 1A is a block diagram illustrating a
ネットワークサービスプロセッサ110は、ハードウェアパケット処理、バッファリング、ワークスケジューリング、順序づけ、同期化、およびキャッシュコヒーレンスサポートを提供することにより、全てのパケット処理タスクの速度を高める。ネットワークサービスプロセッサ110は、受信されたパケットにカプセル化されている開放型システム間相互接続ネットワークのL2からL7層までのプロトコルを処理する。
The
ネットワークサービスプロセッサ110は、イーサネット(登録商標)ポート(Gig E)から物理インタフェースPHY104a、104bを介してパケットを受信し、受信されたパケットに対してL7〜L2ネットワークプロトコル処理を実行し、処理されたパケットを物理インタフェース104a、104bから、またはPCIバス106を介して転送する。ネットワークプロトコル処理には、ファイアウォール、アプリケーションファイアウォール、IPセキュリティ(IPSEC)および/またはセキュアソケットレイヤ(SSL)を含む仮想プライベートネットワーク(VPN)、侵入検知システム(IDS)およびアンチウィルス(AV)などのネットワークセキュリティプロトコルの処理が含まれてもよい。
The
ネットワークサービスプロセッサ110内のダイナミックランダムアクセスメモリ(DRAM)コントローラ133(図1B)は、ネットワークサービスプロセッサ110に結合される外部DRAM108へのアクセスを制御する。DRAM108は、PHYインタフェース104a、104bまたはPCI拡張(PCI−X)インタフェース106から受信されるデータパケットを、ネットワークサービスプロセッサ110によって処理するために格納する。
A dynamic random access memory (DRAM) controller 133 (FIG. 1B) within
ネットワークサービスプロセッサ110内の低遅延メモリコントローラ360(図3B)は、低遅延メモリ(LLM)118を制御する。LLM118は、侵入検知システム(IDS)またはアンチウィルス(AV)アプリケーションに必要とされる正規表現一致を含む、高速検索を可能にするインターネットサービス/セキュリティアプリケーションに使用されることができる。
A low latency memory controller 360 (FIG. 3B) within the
正規表現は、文字列一致パターンを表現する一般的な方法である。正規表現の極小要素は、一致されるべき単一文字である。これらは、ユーザが連結、選択、クリーネ・スターなどを表現できるようにするメタ文字演算子と組み合わせることもできる。連結は、単一文字(またはサブ文字列)から複数の文字一致パターンを生成するために使用され、選択(|)は、2つ以上のサブ文字列のいずれにも一致できるパターンを生成するために使用される。クリーネ・スター(*)を使用することによって、パターンが文字列内でそのパターンのゼロ(0)またはそれ以上の出現に一致することが可能になる。それぞれの演算子と単一文字との組合せにより、複雑な表現の構築が可能になる。例えば、表現(th(is|at)*)は、th、this、that、thisis、thisat、thatis、thatat、などに一致する。 A regular expression is a general method for expressing a character string matching pattern. The minimal element of a regular expression is a single character to be matched. They can also be combined with metacharacter operators that allow the user to express concatenation, selection, Kleene Star, etc. Concatenation is used to generate multiple character matching patterns from a single character (or substring) and selection (|) to generate a pattern that can match any of two or more substrings used. Using a Kleene Star (*) allows a pattern to match zero (0) or more occurrences of that pattern in the string. The combination of each operator and a single character makes it possible to construct complex expressions. For example, the expression (th (is | at) *) matches th, this, that, thisis, thisat, thatis, thatat, etc.
図1Bは、図1Aに示すネットワークサービスプロセッサ110のブロック図である。ネットワークサービスプロセッサ110は、図1Aに関連して説明したとおり、少なくとも1つのプロセッサコア120を使用して高いアプリケーション性能を提供する。
FIG. 1B is a block diagram of the
パケットは、SPI−4.2またはRGMIIインタフェースを介して、GMX/SPXユニット122a、122bの任意の1つによって処理されるために受信される。パケットは、PCIインタフェース124によって受信されることもできる。GMX/SPXユニット(122a、122b)は、受信されたパケットに含まれるL2ネットワークプロトコルヘッダ内の様々なフィールドをチェックすることによって受信されたパケットの前処理を実行し、次にパケットをパケット入力ユニット126に転送する。
The packet is received for processing by any one of the GMX /
パケット入力ユニット126は、受信されたパケットに含まれるネットワークプロトコルヘッダ(L3およびL4)のさらなる前処理を実行する。前処理には、通信制御プロトコル(TCP)/ユーザデータグラムプロトコル(UDP)(L3ネットワークプロトコル)に関するチェックサムのチェックが含まれる。
The
フリープールのアロケータ(FPA)128が、レベル2キャッシュメモリ130およびDRAM108における空きメモリのポインタプールを保持する。パケット入力ユニット126は、ポインタのプールの1つを使用して、受信されたパケットデータをレベル2キャッシュメモリ130に格納し、ポインタの別のプールを使用してプロセッサコア120に対してワーク待ち行列エントリを割り当てる。
A free pool allocator (FPA) 128 maintains a pointer pool of free memory in the
パケット入力ユニット126は次に、レベル2キャッシュ130またはDRAM108内のバッファにパケットデータを書き込む。この書込みのフォーマットは、上位層のネットワークプロトコルによるその後の処理を容易にするために、プロセッサコア120のうちの少なくとも1つで実行される上位層ソフトウェアに好都合なフォーマットである。
The
I/Oインタフェース136は、全体のプロトコルおよびアービトレーション(調停)を管理し、コヒーレントなI/O区分(partitioning)を提供する。I/Oインタフェース136は、I/Oブリッジ(IOB)138およびフェッチ・アンド・アッドユニット(FAU)140を有する。フェッチ・アンド・アッドユニット140内のレジスタを用いて、パケット出力ユニット146を介して処理されたパケットを転送するのに使用される出力待ち行列の長さを保持する。I/Oブリッジ138は、コヒーレントメモリバス144、I/Oバス142、パケット入力ユニット126、およびパケット出力ユニット146間で転送される情報を格納するためのバッファ待ち行列を含む。
The I /
パケット順序/ワークモジュール(POW)148は、プロセッサコア120に対するワークをキューイングして(待ち行列に入れて)スケジューリングする。ワーク待ち行列エントリを待ち行列に追加することによって、ワークがキューイングされる(待ち行列に入れられる)。例えば、ワーク待ち行列エントリは、パケットの到着毎にパケット入力ユニット126によって追加される。プロセッサコア120のワークのスケジューリングには、タイマユニット150が使用される。
The packet order / work module (POW) 148 queues (queues) work for the
プロセッサコア120は、POWモジュール148にワークを要求する。POWモジュール148は、プロセッサコア120のうちの1つに対してワークを選択(すなわち、スケジューリング)し、そのワークを記述するワーク待ち行列エントリを指すポインタをプロセッサコア120に返す。
The
プロセッサコア120は、命令キャッシュ152、レベル1(L1)データキャッシュ154、および暗号アクセラレータ156を有する。一実施形態においては、ネットワークサービスプロセッサ110は、16個のスーパースカラーRISC(縮小命令セットコンピュータ)型プロセッサコア120を有する。一実施形態においては、各スーパースケーラRISC型プロセッサコア120はMIPS64バージョン2プロセッサコアの拡張版である。
The
レベル2(L2)キャッシュメモリ130およびDRAM108は、プロセッサコア120およびI/Oコプロセッサデバイスの全てによって共有される。各プロセッサコア120は、コヒーレントメモリバス144によってレベル2キャッシュメモリ130に結合される。コヒーレントメモリバス144は、プロセッサコア120、IOB138ならびにL2キャッシュメモリ130およびL2キャッシュメモリコントローラ131間の全てのメモリおよびI/Oトランザクションのための通信チャネルである。一実施形態においては、コヒーレントメモリバス144は16個のプロセッサコア120に対して適応でき、ライトスルーによって完全にコヒーレントなL1データキャッシュ154をサポートし、高度なバッファ機能を果たして、I/Oを優先順位付けすることができる。
Level 2 (L2)
L2キャッシュメモリコントローラ131は、メモリ参照コヒーレンスを保持する。L2キャッシュメモリコントローラ131は、ブロックがレベル2キャッシュメモリ130もしくは外部DRAM108に格納されていても、または「処理中(in-flight)」であっても、あらゆるFILL(フィル)要求に対して、ブロックの最新コピーを返す。L2キャッシュメモリコントローラ131はまた、各プロセッサコア120内にデータキャッシュ154に対するタグを2部格納する。L2キャッシュメモリコントローラ131は、キャッシュブロック格納の要求のアドレスをデータ−キャッシュタグと比較し、格納命令が別のプロセッサコアからであるか、またはI/Oインタフェース136を介するI/Oコンポーネントからであるときは、常にプロセッサコア120のデータ−キャッシュタグを(2部とも)無効にする。
The L2 cache memory controller 131 holds memory reference coherence. The L2 cache memory controller 131 will block for any FILL request, whether the block is stored in the
DRAMコントローラ133は、最大16メガバイトのDRAMをサポートする。DRAMコントローラ133は、DRAM108との64ビットまたは128ビットインタフェースをサポートする。DRAMコントローラ133は、DDR−I(ダブルデータレート)およびDDR−IIプロトコルをサポートする。
The DRAM controller 133 supports up to 16 megabytes of DRAM. The DRAM controller 133 supports a 64-bit or 128-bit interface with the
プロセッサコア120によってパケットが処理されると、パケット出力ユニット(PKO)146は、メモリからパケットデータを読み出し、L4ネットワークプロトコル後処理を実行し(例えば、TCP/UDPチェックサムを生成し)、上記パケットをGMX/SPXユニット122a、122bを介して転送し、パケットによって使用されたL2キャッシュ130/DRAM108を解放する。
When the packet is processed by the
低遅延メモリコントローラ360(図3B)は、LLM118との間の処理中(in-flight)のトランザクション(ロード/格納)を管理する。低遅延メモリ(LLM)118は全てのプロセッサコア120によって共有される。LLM118は、ダイナミックランダムアクセスメモリ(DRAM)、低遅延ダイナミックランダムアクセスメモリ(RLDRAM)、同期ランダムアクセスメモリ(SRAM)、高速サイクルランダムアクセスメモリ(FCRAM)または技術的に公知の他の任意の種類の低遅延メモリであってもよい。RLDRAMは、30ナノ秒またはそれ以下のメモリ遅延(すなわち、プロセッサ120によって開始されたメモリ要求が満たされるまでに要する時間)を提供する。各プロセッサコア120は、低遅延メモリバス158によってLLMコントローラ360に直接結合される。低遅延メモリバス158は、プロセッサコア120とLLMコントローラ360との間のコンテンツアウェア型アプリケーション処理のための通信チャネルである。LLMコントローラ360は、LLM118へのアクセスを制御するためにプロセッサコア120とLLM118との間に結合される。
The low latency memory controller 360 (FIG. 3B) manages in-flight transactions (load / store) with the
ネットワークサービスプロセッサ110は、プロセッサコア120をオフロード(負荷軽減)する特定用途向けコプロセッサを有し、これにより、ネットワークサービスプロセッサが高スループットを達成できるようにする。圧縮/解凍コプロセッサ132は、受信パケットの圧縮および解凍を専用に実行する。決定性有限オートマトン(DFA)モジュール134は、専用のDFAエンジン370(図3B)を有し、アンチウィルス(AV)、侵入検知システム(IDS)および他のコンテンツ処理アプリケーションに必要なパターンおよび署名一致の処理を速くして、最大4Gbpsまで加速する。
The
コンテンツアウェア型アプリケーションの処理は、LLM118に格納されるパターン/表現(データ)を利用する。パターン/表現は、決定性有限オートマトン(DFA)の形式であってもよい。DFAは、状態マシンである。DFA状態マシンへの入力は、バイト(1バイト=8ビット)の文字列である(すなわち、DFAではアルファベットが1バイトである)。各入力バイトが、状態マシンを1つの状態から次の状態に遷移させる。状態および遷移関数は、図2Aに示すように、グラフ200で表示することができる。ただし、各グラフノード(ノード0〜3)は1つの状態であり、異なるノードを相互接続する異なるグラフ弧は異なる入力バイトに対する状態遷移を表す。状態は、「A…Z,a…z,0…9,」などの、状態に関連する特定の文字を含む。状態マシンの現在の状態は、グラフの特定のノードを選択するノード識別子である。ノード数は、小型サイズのグラフで数ノードから約128,000ノードまでの範囲内であってもよい。大型サイズのグラフは1,000,000ノードまでを有してもよく、それ以上であってもよい。
The processing of the content-aware application uses a pattern / expression (data) stored in the
説明のための例では、DFAグラフ200は、ターゲットの文字列表現「abc」を探索するように設計されている。したがって、DFAグラフは、文字「abc」の文字列に正確に一致する入力データを探索するために使用される。この表現は固定長表現であり、これより、ノード数、したがってグラフの深さは既知である(すなわち、一定である)。 In the illustrative example, the DFA graph 200 is designed to search for a target string representation “abc”. Thus, the DFA graph is used to search for input data that exactly matches the string of characters “abc”. This representation is a fixed length representation, from which the number of nodes and hence the depth of the graph is known (ie constant).
DFAグラフを生成するために、上記表現が解析され、コンパイラはルートノード(すなわち、ノード「0」)を生成し、意図する表現に即してグラフにノード1から3を追加する(すなわち、ターゲット文字列の各文字につき1つの追加ノード)。本例を引き続き参照すると、例示的な文字の入力ストリームが文字列「12abc3」を含む。DFAグラフを使用して入力文字列が探索され、ターゲット文字列表現「abc」が識別される。
To generate a DFA graph, the above expression is parsed and the compiler generates a root node (ie, node “0”) and adds
DFAグラフの初期状態は、ノード「0」である。各文字またはバイトは逐次読み取られ、DFAは、ターゲット文字列表現の最初の文字が読み取られるまでノード0に留まる。例えば、入力ストリームにおけるターゲット文字列表現の最初の文字「a」が検出されると、ノード0からノード1に「a」で表記された弧が辿られる。次に、入力ストリームの次の文字が読み取られ、これがターゲット文字列表現の次の文字(すなわち、「b」)以外のいずれかであることが検出されれば、「not b」で表記された、ノード1からノード0に戻る弧が辿られる。しかし、入力ストリーム内の次の文字として文字「b」が検出されると、「b」で表記されたノード1からノード2への弧が辿られる。次いで、入力ストリームの次の文字が読み取られ、これがターゲット文字列表現の次の文字(すなわち、「c」)以外のいずれかの文字であれば、「not c」で表記されたノード2からノード0に戻る弧が辿られる。しかし、ノード2において、入力ストリーム内の文字「c」が検出されると、「c」で表記されたノード2からノード3への弧が辿られる。ターゲット文字列表現「abc」は固定長表現であることから、ノード3は終端ノードであり、探索の結果、すなわち、表現「abc」が発見されたことと、入力ストリーム内のこの表現の位置とが報告される。
The initial state of the DFA graph is node “0”. Each character or byte is read sequentially, and the DFA remains at
さらに、コンパイラで1つまたは複数の意図する表現を解析し、意図する表現が要求する通りにグラフの適切なノードを生成することによって、さらに複雑なDFAグラフを同様に生成することができる。したがって、単一のグラフを使用して、固定長、可変長および固定/可変長の組合せである複数の表現を探索することができる。 In addition, more complex DFA graphs can be similarly generated by analyzing one or more intended expressions in the compiler and generating the appropriate nodes of the graph as required by the intended expression. Thus, a single graph can be used to search for multiple representations that are fixed length, variable length and fixed / variable length combinations.
図3Aは、本発明の原理による縮小命令セットコンピュータ型(RISC)プロセッサ120を示すブロック図である。プロセッサ(プロセッサコア)120は整数演算ユニット302、命令ディスパッチユニット304、命令フェッチユニット306、メモリ管理ユニット(MMU)308、システムインタフェース310、低遅延インタフェース350、ロード/格納ユニット314、書込みバッファ316、およびセキュリティアクセラレータ156を有する。プロセッサコア120はデバッグ動作を実行できるEJTAGインタフェース330も有する。システムインタフェース310は、外部メモリ、すなわち、外部(L2)キャッシュメモリ130または主/メインメモリ108などの、プロセッサ120の外側にあるメモリへのアクセスを制御する。
FIG. 3A is a block diagram illustrating a reduced instruction set computer type (RISC)
整数演算ユニット302は、乗算ユニット326、少なくとも1つのレジスタファイル(主レジスタファイル)328、および2つの保持レジスタ330a、330bを有する。保持レジスタ330a、330bは、LLMのロード/格納命令を使用して、LLM118に書き込まれるデータと、LLM118から読み出されたデータとを格納するために使用される。保持レジスタ330a、330bは、命令パイプラインの効率を、このパイプラインを機能停止する前に2つの未処理ロードを許容することによって向上させる。2つの保持レジスタを示したが、1つ、または複数の保持レジスタを使用してもよい。乗算ユニット326は64ビットのレジスタの直接乗算を実行できる。命令フェッチユニット306は、命令キャッシュ(ICache)152を有する。ロード/格納ユニット314はデータキャッシュ154を有する。一実施形態においては、命令キャッシュ152は32キロバイトであり、データキャッシュ154は8キロバイトであり、書込みバッファ316は2キロバイトである。メモリ管理ユニット308は、変換ルックアサイドバッファ(TLB)340を有する。
The integer arithmetic unit 302 includes a multiplication unit 326, at least one register file (main register file) 328, and two holding registers 330a and 330b. The holding registers 330a and 330b are used to store data written to the
一実施形態においては、プロセッサ120は、トリプルデータ暗号化規格(3DES)、高度暗号化規格(AES)、セキュアハッシュアルゴリズム(SHA−1)、メッセージダイジェストアルゴリズム5番(MD5)のための暗号アクセラレーションを含む暗号アクセラレーションモジュール(セキュリティアクセラレータ)156を有する。暗号アクセラレーションモジュール156は、転送を通して、演算ユニット302内の主レジスタファイル328と通信する。RSAおよびディフィ−ヘルマン(DH)アルゴリズムが、乗算ユニット326において実行される。
In one embodiment,
図3Bは、図3AのDFAモジュール134を示すブロック図である。DFAモジュール134は低遅延DRAMコントローラ360、少なくとも1つのDFAスレッドエンジン(DTE)370(16個が示されている)、および命令入力論理380を有する。命令入力論理380は、DFA命令待ち行列382およびドアベル384を有する。DFA命令待ち行列382はL2/DRAM(130/108)に格納されたDFA命令をキューイングして(待ち行列に入れ)、ドアベルはDFA命令待ち行列382に格納されているDFA命令の数を示す。コア120のソフトウェアは、個々のDFA命令ごとにドアベルの書込みを発行することができ、すなわち、複数のDFA命令を単一のドアベル書込みに累積させることができる。各DFA命令は、DFAモジュール134がDTE370を開始し、入力データを読み出し、LLM118内に格納されているDFAグラフ200を走査し、かつ結果をL2/DRAM(130/108)に書き込む必要があるという情報を含む。DFA命令のフォーマットについては、図8Aに関連して後述する。
FIG. 3B is a block diagram illustrating the
DTE370は、パターン探索の実行に使用されることができる。一般に、DTE370は、パケットデータ(L2/DRAM(130/108)内に存在)内の特定の表現を探索するために、入力パケットデータを用いてDFAグラフ200(図2)(LLM118内に存在)を走査する。例えば、ネットワークサービスプロセッサは、別個のDTEに送られた各入力ストリームを用いて同時に最大1000のTCP入力ストリームを追跡して、特定の表現を探索することができる。走査に先行して、コア120内のソフトウェアは、最初に、(i)LLM118内のDFAグラフをLLMバス158を介して事前にロードし、(ii)L2/DRAM(130/108)内のDFA命令を事前にロードし、かつ(iii)IOB142を介してDFA命令をDFAモジュール134に送出する必要がある。DFA命令は、入力パケットデータを用いて走査するDFAグラフ200を示す。この後、DFAモジュール134はDFA命令をフェッチして待ち行列に入れ、各DFA命令を利用可能な16個のDTE370のうちの1つにスケジューリングする。任意のDFA命令が任意の利用可能なDTE370にスケジューリングされることができるように、DTE370は全て同一であり、等価である。命令を受信すると、DTE370は、同時に、(a)IOB142を介してL2/DRAM(130/108)からパケットデータをフェッチし、(b)パケットデータのバイト毎に、このバイトについてDFAグラフの次の状態へ移るようにLLM DRAMロード命令を発行し、(c)IOB142を介して元のL2/DRAM(130/108)に中間および最終結果を戻して書き込む。
The
一般に、DTE370は、ハードウェア、ソフトウェアまたはハードウェア/ソフトウェアの組合せを使用して実現できる状態マシンである。実施形態によっては、DTE370は、組合せ論理を使用してハードウェアで実現される。他の実施形態では、各DTE370は異なるプロセッサ上でそれぞれ実現される。さらに他の実施形態では、DTE370は共通のプロセッサを使用して実現される。例えば、各DTE370は、共有のマルチタスク環境を提供するように適合化された共通のプロセッサ上で実行される個別のタスク(すなわち、命令シーケンス)であってもよい。マルチタスキングは、オペレーティングシステムにおいて複数の独立したジョブ(すなわち、DTE370)間で単一のプロセッサを共有する技術である。さらに、もしくは代替として、DTE370のそれぞれは、マルチスレッディング能力を提供するように適合化された共通プロセッサ上で実行される個別のプロセススレッドであってもよい。マルチスレッディングとマルチタスキングとの差は、スレッドが一般に、マルチタスキング下でタスクを実行するのに比べてその環境を互いに多く共用する点である。例えば、複数スレッドが単一アドレス空間および全体変数セットを共有する一方で、スレッドのプログラムカウンタおよびスタックポインタの値によって各スレッドを区別することもできる。
In general,
図4Aは、L2/DRAM(130/108)に格納されるDFA命令待ち行列400の構造を示す。各命令待ち行列は、チャンクまたはバッファ402のリンクされたリストである。各チャンク402は少なくとも3つのDFA命令404を含み、これら3つの命令が全体チャンクサイズ406を構成する。別のチャンク(例えば、402’)が存在すれば、チャンク402内の最後のDFA命令404の直後に、次のチャンクバッファポインタ408が続く。
FIG. 4A shows the structure of the
DFA命令待ち行列400にパケットを挿入するには、コア120のソフトウェアはDFA命令404をDFA命令待ち行列400に書き込み、必要であればチャンクを割り当て、次いでDFAドアベル384に、DFA命令待ち行列400に追加されたDFA命令404の数を書き込む。DFAモジュール134は、DFA命令待ち行列400を読み出し(テール410から開始)、チャンクの最後の命令(例えば、404/404’’’)に到達すると、次のチャンク(例えば、402’/402’’)を指す次のチャンクバッファポインタ408を走査する。このようにしてチャンク402をジャンプすると、DFAモジュール134は、前のチャンク(例えば、402/402’)をFPA128(図1B)に解放する。
To insert a packet into the
DFAモジュール134は、DFA命令待ち行列400のテールポインタ410を保持し、コア120のソフトウェアはDFA命令待ち行列400のヘッドポインタ412を保持する。テールポインタ410とヘッドポインタ412との距離は、DFA命令待ち行列400のサイズ、および未処理のドアベルカウント数の両方に等しい。DFA命令待ち行列400のサイズは、利用可能なメモリおよびDFA命令待ち行列400についての20ビットである処理中ドアベルカウンタによってのみ制限される。
The
図4Bは、次のチャンクバッファポインタのフォーマット450を示す。次のチャンクバッファポインタは64ビットワードであり、36ビットのアドレス(Addr)フィールド452を含む。Addrフィールド452は、次のDFA命令402を含む次のチャンク400の有効なL2/DRAM(130/108)バイト位置を選択する。Addrフィールド452はバイトアドレスであるが、これは、その最小位の7ビットをゼロに設定することによって、128バイトのキャッシュブロックの境界上に当然に揃えられる。
FIG. 4B shows the next chunk
図5Aは、LLM118に格納されるDFAグラフ500の構造を示す。DFAグラフ500は、510a〜510nまでのN個のノードを含む。DFAグラフ500内のノード510はそれぞれ、256個の次のノードポインタ512の単なるアレイであり、この次のノードポインタのそれぞれは入力バイト値に固有である。各次のノードポインタ512は、入力バイトの次のノード/状態を直接指定する次のノードID514を含む。
FIG. 5A shows the structure of the
DFAモジュール134は、18ビットの次のノードポインタ格納フォーマット516または36ビットの次のノードポインタ格納フォーマット518のいずれかをサポートする。18ビットのポインタの場合、各ノード510は、18*256ビットすなわち512バイトのLLM118格納を必要とする。各次のノードポインタ516は17ビットの次のノードIDおよび1ビットのパリティビットである。パリティは、偶数である(すなわち、Pは17ビットの次のノードID514における全ビットのXOR(排他的OR))。36ビットポインタの場合、各ノード510は、36*256ビットすなわち約1キロバイトのLLM118格納を必要とする。したがって、複製は、格納に必要な容量要件を増大させる。各次のノードポインタ518は、20ビットの次のノードID、2ビットのタイプ値、7ビットのSECDED ECCコード、およびゼロに設定される未使用の7ビットである。DTE370は、36ビットポインタ内のSECDED ECCコードを使用して全てのシングルビットエラーを自動的に修正し、全てのダブルビットエラーを検出する。タイプ値は次のノードのタイプ、例えば、0=ノーマル、1=マーク付け、2=終端、を表示する。
The
DTE370は、以下に示す3つの特別なノードポインタ条件をサポートする。
1.PERR − 次のノードポインタがエラーを含む。DTE370は、欠陥のあるLLM118の位置を表示する結果ワードを生成する。DTE370は、グラフ500の走査を停止する。
2.TERM − 次のノードは終端ノードであり、グラフの走査は停止すべきである。DTE370は、終端ノードへ走査したバイト、前のノードIDおよび次のノードIDを表示する結果ワードを生成する。DTE370は、グラフ500の走査を停止する。
3.MARKED − この遷移は、コア120のソフトウェアによる後の分析用にマーク付けされる。DTE370は、上記マークされたノードへ走査したバイト、前のノードIDおよび次のノードIDを表示する結果ワードを生成する。DTE370は、グラフ500の走査を続行する。
1. PERR-the next node pointer contains an error.
2. TERM—The next node is a terminal node and the graph traversal should stop. The
3. MARKED-This transition is marked for later analysis by the
18ビットモードの場合、DTE370は、次のノードIDを比較することによって、特殊なTERMおよびMARKED条件を判断する。この場合、マーク付けされたノードに入る全ての遷移がマーク付けされる。36ビットモードの場合、DTE370は、特殊なTERMおよびMARKED条件を次のノードポインタ内のタイプフィールドから直接判断する。36ビットモードでは、個々のノードそのものではなく、個々の遷移にマーク付けすることができる。
For 18-bit mode,
図5Bは、可能な17ビットノードIDの全て、およびこれらが18ビットモードにおいていかに分類されるかを明らかにしている。終端ノードID502は、LLM118内に実際に格納されることによるバックアップはされない。しかし、ノーマルノード504およびマーク付けされたノード506は、実際のLLM118への格納によってバックアップされる。DFA命令404は、IWORD3(図8A)に格納されるTSize(図8A)である終端ノードの数503と、同様にIWORD3に格納されるMSize(図8A)であるマークされたノードの数507とを含む。
FIG. 5B reveals all of the possible 17-bit node IDs and how they are classified in 18-bit mode. The
DTE370は、グラフ500を走査する間、例外的な条件が発生すると結果ワードを生成する。MARKED、TERMまたはPERRである次のノードポインタは、このような例外的条件である。例外的な条件としては、さらに、入力データの完了および結果スペースの消耗という2つがある。入力バイトに関するグラフの走査は複数の例外的条件をもたらすこともあるが、単一の入力バイトから生成できる結果ワードは多くても1つである。例えば、最後の入力バイトが入力データの完了条件に遭遇すると、結果ワードを生成する。最後の入力バイトもマーク付けされた次のノードに遭遇することがあるが、第2の結果ワードは生成されない。グラフの走査は、(優先順に)PERR、TERM、入力データの完了および結果スペースの消耗という例外条件が発生した時点で停止し、DTE370はその最も高い優先順位条件を報告する。例えば、図2のグラフを参照すると、次のノードはノード「c」に到達した時点の終端ノードであり、DTE370はグラフの走査を停止する。
The
各DFA命令は、DTE370によって、処理されるデータをいかにL2/DRAMに格納するか(ダイレクトまたはギャザー)を指定できる。いずれの場合も、DFAモジュール134はL2/DRAM(130/108)からバイトを読み出す。
Each DFA instruction can specify by
図6は、DTE370によって処理されるデータを取得する例示的なダイレクトモード600を示す。DFA命令404は、開始位置およびバイト数を直接指定する。対応するDFA命令404を処理するDTE370は、L2/DRAM(130/108)から連続するバイトを読み出し、これらを処理する。
FIG. 6 shows an exemplary
図7Aは、DTE370によって処理されるデータを取得する例示的なギャザーモード700を示す。DFA命令404は、DFAギャザーポインタ710のリストの開始位置およびサイズを直接指定する。DFAギャザーポインタ710リストの各エントリは、DTE370が処理する開始位置およびバイト数を指定する。DTE370の全体入力バイトストリームは、DFAギャザーポインタ710リストの各エントリによって指定されるバイトの連結である。
FIG. 7A shows an exemplary gather
図7Bは、64ビットDFAギャザーポインタ710のフォーマットを示す。DFAギャザーポインタ710は、長さ712(バイト数)およびアドレスフィールド714(L2/DRAMアドレス)を含む。DFAギャザーポインタ710は64ビットの境界上に当然に揃えられるが、これらポインタが指すL2/DRAM内のバイトは任意の位置であってもよく、当然に揃えられなくてもよい。ギャザーモード700では、合計バイト数は全てのDFAギャザーポインタ710における長さフィールドの総和である。
FIG. 7B shows the format of a 64-bit DFA gather pointer 710. The DFA gather pointer 710 includes a length 712 (number of bytes) and an address field 714 (L2 / DRAM address). The DFA gather pointer 710 is naturally aligned on a 64-bit boundary, but the bytes in the L2 / DRAM pointed to by these pointers may or may not be aligned. In the gather
図4Aを再度参照して、各DFA命令404は、DFAモジュール134によって必要とされる情報を提供して、(i)DTE370を開始し、(ii)入力データを読み出し、(iii)LLM118内のグラフ200を走査し、(iv)結果を書き込む。DFA命令404は、図8Aに示す例示的なDFA命令フォーマットのような複数の命令ワードを含んでもよい。各DFA命令404は、4つの独立したワード、455’、455’’、455’’’、455’’’’(総称して455)を含む。これらのワードはそれぞれ64ビットを含み、レベル2キャッシュメモリ130またはDRAM108内の合計32バイトで表現される。好ましくは、各DFA命令404は32バイトの境界上に当然に揃えられる。DFA命令404は、この命令がスケジューリングされている個々のDTE370によって処理される。DFA命令404は、入力バイトの位置および結果の位置の両方を特定するフィールドを含む。
Referring back to FIG. 4A, each
動作中、DFAモジュール134は、DFA命令待ち行列382が有効なDFA命令404を有していれば、レベル2キャッシュメモリ130またはDRAM108からDFA命令404および入力データを読み出し、結果を生成すると、その結果を書き込む(例えばバイト毎に)。また、DFAモジュール134は、終了後にPOW148(図1B)によってスケジューリングされるワーク待ち行列エントリを随時に送出でき、したがって、DFA命令404はワーク待ち行列ポインタのためのフィールドを含むこともできる。
In operation, the
さらに詳細には、第1のDFA命令ワード455’は、その第1ノードによって使用される特定のDFAグラフを指定する開始ノードID460を含む。第1ワード455’はまた、LLM118内に格納される特定されたグラフの複製数に対応する複製値を格納する複製フィールド462などの追加情報も提供する。また、使用されるアドレス指定のタイプを示すタイプ値464(18または36ビット)が提供されてもよい。例示的な64ビットワードは、1つまたは複数の予約フィールドも含む。
More specifically, the first DFA instruction word 455 'includes a start node ID 460 that specifies the particular DFA graph used by that first node. The
第2のDFA命令ワード455’’は、DFAモジュール134によって処理されるバイト数を特定する長さフィールド470と、処理されるパケットデータのレベル2キャッシュメモリ130またはDRAM108における位置を特定するアドレスフィールド474とを含む。
The second
第3のDFA命令ワード455’’’は、任意の結果が書き込まれるアドレス(例えば、レベル2キャッシュメモリ130またはDRAM108内のアドレス)を特定する結果アドレスフィールド482と、許容される最大結果数を示す値を格納する最大結果フィールド480とを含む。さらに、DFAモジュール134は、終了後に随意にワーク待ち行列エントリを送出できるため、DFA命令404は1つまたは複数のワーク待ち行列ポインタに対するワーク待ち行列処理(WQP)フィールド490を含む。
The third
図8Bは、DFA命令404の結果フォーマット800を示す。DFA結果800は、L2/DRAM(130/108)内に2つ以上の64ビットのワードを有する。各ワードは、L2/DRAM(130/108)内に当然に揃えられる。DFAモジュール134は、DFA命令404の処理中および処理後に、これらのワードをL2/DRAM(130/108)に書き込む。この構造体は可変長であって、可変数のマーク付けされたノードにヒットするDFA命令404を収容するが、結果の長さはDFA命令フィールドの最大結果の上限によって制限される場合がある。
FIG. 8B shows the
先に述べたとおり、36ビットのポインタ518(図5A)を備えたタイプフィールドを使用することによって、ノードタイプをDFAグラフのノードのうちの任意の1つまたはそれ以上に関連づけることが可能である。DTE370は、グラフを走査する間に、例外的条件が発生すると結果ワードを生成する。少なくとも1つの例外的条件は、終端ノードである。DTE370が終端ノードに達すると、このノードはDFAグラフが終わりに到達したことを表し、DTE370による走査は停止する。例外的条件の別の例は、マーク付けされたノードである。終端ノードとは対照的に、DTE370がマーク付けされたノードに達しても、グラフの走査は必ずしも停止しない。しかし、出力ワードに、後の分析のために特定の上記マーク付けされたノードを特定する結果が書き込まれる。したがって、マーク付けされたノードを使用して、グラフ内の対応するノードが走査される時点を特定できる。
As mentioned earlier, a node type can be associated with any one or more of the nodes of the DFA graph by using a type field with a 36-bit pointer 518 (FIG. 5A). .
DFA結果800のWORD0は、DFAモジュール134によって2回以上書き込まれてもよい。WORD0への最後の書込みのみが、有効なDFA結果800を含む。DFAモジュール134は、WORD0を複数回書き込むことができるが、ビット16を設定できるのは最後の書込みのみである。すなわち、ビット16は、DFAモジュール134がDFA命令404を完了するまでDFAモジュール134によって設定されない。DFAモジュール134にDFA命令404を渡する前にWORD0の結果ビット16にゼロを書き込むことによって、ソフトウェアは、WORD0のビット16をポーリングして、DFAモジュール134がDFA命令404を完了した時点を判断することができる。DFA結果のWORD0が設定されているときは、全体結果が存在する。
図2Bに示す別の例では、2つの異なる文字列「abcd」および「abce」の1つまたは複数の出現を発見するために、図2Aのグラフが拡張されたものである。したがって、図2Aのグラフに2つの追加ノード、すなわち、ノード4および5が追加されており(例えば、「d」に対するノード4および「e」に対するノード5)、1つのノードが各字列の第4文字に対するものである。いずれの文字列も最初の3文字が同一であるため、ノード4および5は、図のようにノード3に接続されている。好ましくは、いずれの文字列の場合もその出現は全て、入力文字列を通る単一の「パス」上で識別される。
In another example shown in FIG. 2B, the graph of FIG. 2A is expanded to find one or more occurrences of two different strings “abcd” and “abce”. Thus, two additional nodes have been added to the graph of FIG. 2A, ie,
文字列「xwabcd454abceabcdsfk」などの例示的な入力文字列は、DFAを通過し、結果として3つの「マーク付けされた」遷移が生成される。マーク付けされた遷移は、入力文字列内に配置される文字列セグメントの終わりで発生する(例えば、「d」または「e」が存在している各位置で1つ)。したがって、3つのマーク付けされた遷移は、3つの文字列が発見されたことを表す。最初と最後のマークはノード3からノード4への遷移を示し、入力文字列内の文字列「abcd」の存在および位置を表す(すなわち、DTEバイト=5、先行=3、次=4およびDTEバイト=17、先行=3、次=4)。中央のマーク付けされたノードは、ノード3からノード5への遷移を示し、入力文字列内の文字列「abce」の存在を表す(すなわち、DTEバイト=13、先行=3、次=5)。ノード4および5は18ビットポインタを使用してマーク付けされ、ノード3からノード4および5までの弧は36ビットポインタを使用してマーク付けされる。したがって、DFAマーキング技術をDFAスレッドエンジンと組み合せて使用することによって、同一入力文字列内の複数の異なる文字列の存在および位置を、上記入力文字列を通る1回のパスで発見することができる。
An exemplary input string, such as the string “xwabcd454abceabcdfsfk”, passes through the DFA, resulting in three “marked” transitions. The marked transition occurs at the end of the string segment placed in the input string (eg, one at each position where “d” or “e” is present). Thus, the three marked transitions represent that three strings have been found. The first and last marks indicate the transition from
本出願は、2004年9月10日に出願された米国仮特許出願第60/609,211号、2004年12月28日に出願された米国特許出願第11/024,002号、2005年4月8日に出願された「Deterministic Finite Automata (DFA) Instruction」と題する米国仮特許出願第60/669,603号および2005年4月8日に出願された「Selective Replication of Data Structures」と題する米国仮特許出願第60/669,655号に関連するものである。上述の出願の全内容は参照により本明細書に引用したものとする。 This application is based on US Provisional Patent Application No. 60 / 609,211 filed on September 10, 2004, US Patent Application No. 11 / 024,002 filed on December 28, 2004, April 8, 2005. U.S. Provisional Patent Application No. 60 / 669,603 entitled `` Deterministic Finite Automata (DFA) Instruction '' and U.S. Provisional Patent Application No. 60 / entitled `` Selective Replication of Data Structures '' filed April 8, 2005 Related to 669,655. The entire contents of the above-mentioned applications are hereby incorporated by reference.
以上、本発明をその好ましい実施形態に関連して詳細に示しかつ説明してきたが、当業者には、添付の特許請求の範囲に包含される本発明の範囲を逸脱することなく形態および細部に様々な変更を行ない得ることが理解されるであろう。 Although the invention has been shown and described in detail in connection with preferred embodiments thereof, those skilled in the art will recognize in form and detail without departing from the scope of the invention as encompassed by the appended claims. It will be understood that various changes may be made.
110 プロセッサ
120 プロセッサコア
400 DFAモジュール
110
Claims (18)
前記少なくとも1つのプロセッサコアと非同期に動作する決定性有限オートマトン(DFA)モジュールであって、前記少なくとも1つのプロセッサコアからの命令に応答して、ノンキャッシュメモリに格納された少なくとも1つのDFAグラフの複数のノードを、キャッシュコヒーレントメモリに格納されたパケットデータを用いて走査するDFAモジュールとを備えたネットワークプロセッサ。 At least one processor core;
A deterministic finite automaton (DFA) module operating asynchronously with the at least one processor core, wherein a plurality of at least one DFA graph stored in non-cache memory in response to an instruction from the at least one processor core And a DFA module that scans the nodes using packet data stored in cache coherent memory.
前記DFAグラフを格納するメモリにアクセスするように適合されたノンキャッシュメモリコントローラと、
前記ノンキャッシュメモリのコントローラと通信する少なくとも1つのDFAスレッドエンジンと、
前記少なくとも1つのプロセッサコアからの命令を、前記少なくとも1つのDFAスレッドエンジンにスケジューリングするように適合された命令入力論理とを有するネットワークプロセッサ。 The DFA module according to claim 1, wherein
A non-cache memory controller adapted to access a memory storing the DFA graph;
At least one DFA thread engine in communication with the non-cache memory controller;
A network processor having instruction input logic adapted to schedule instructions from the at least one processor core to the at least one DFA thread engine.
前記キャッシュコヒーレントメモリに格納されているパケットデータをフェッチし、
前記キャッシュコヒーレントメモリから受信されたパケットデータのバイト毎にノンキャッシュメモリロード命令を発行して、前記ノンキャッシュメモリに格納されたDFAグラフの次の状態を走査し、
前記キャッシュコヒーレントメモリに中間および最終結果を書き込むネットワークプロセッサ。 7. The at least one DFA thread engine according to claim 6,
Fetching packet data stored in the cache coherent memory;
Issuing a non-cache memory load instruction for each byte of packet data received from the cache coherent memory, and scanning the next state of the DFA graph stored in the non-cache memory;
A network processor that writes intermediate and final results to the cache coherent memory.
共通の環境設定で前記少なくとも1つのプロセッサコアと関連づけられている複数のDFAスレッドエンジンを有し、各DFAスレッドエンジンは、前記ノンキャッシュメモリに格納されている少なくとも1つのDFAグラフを走査するように適合されているネットワークプロセッサ。 The DFA module according to claim 1, wherein
A plurality of DFA thread engines associated with the at least one processor core in a common environment setting, wherein each DFA thread engine scans at least one DFA graph stored in the non-cache memory; Network processor that is adapted.
少なくとも1つのDFAグラフをノンキャッシュコヒーレントメモリに格納する工程と、
DFA命令をキャッシュコヒーレントメモリに格納する工程であって、このDFA命令は、前記キャッシュコヒーレントメモリに格納されたパケットデータを使用のために指示し、前記ノンキャッシュメモリに格納された少なくとも1つのDFAグラフを走査のために指示する工程と、
前記DFAグラフを前記格納されたパケットデータを用いて走査し、前記キャッシュコヒーレントメモリに中間および最終結果を書き込む工程とを備えたDFAグラフ走査方法。 A method of scanning a DFA graph using input packet data,
Storing at least one DFA graph in a non-cache coherent memory;
Storing a DFA instruction in a cache coherent memory, wherein the DFA instruction directs the packet data stored in the cache coherent memory for use, and at least one DFA graph stored in the non-cache memory. Directing for scanning; and
Scanning the DFA graph with the stored packet data and writing intermediate and final results to the cache coherent memory.
前記キャッシュコヒーレントメモリに格納されているパケットデータをフェッチし、
前記キャッシュコヒーレントメモリからフェッチされたパケットデータのバイト毎に1つのノンキャッシュメモリロード命令を発行し、
前記フェッチされたパケットデータのバイトに応じて、前記ノンキャッシュメモリに格納されたDFAグラフの次の状態を走査し、
前記キャッシュコヒーレントメモリに中間および最終結果を書き込むDFAグラフ走査方法。 16. The at least one DFA thread engine according to claim 15, wherein
Fetching packet data stored in the cache coherent memory;
Issuing one non-cache memory load instruction for each byte of packet data fetched from the cache coherent memory;
According to the fetched packet data byte, the next state of the DFA graph stored in the non-cache memory is scanned,
A DFA graph scanning method for writing intermediate and final results to the cache coherent memory.
キャッシュコヒーレントメモリにDFA命令を格納する手段であって、前記DFA命令が、前記キャッシュコヒーレントメモリに格納されたパケットデータを使用のために指示し、前記ノンキャッシュメモリに格納された少なくとも1つのDFAグラフを走査のために指示する手段と、
前記DFAグラフを前記格納されたパケットデータを用いて走査し、前記キャッシュコヒーレントメモリに中間および最終結果を書き込む手段を備えたネットワークプロセッサ。 Means for storing at least one DFA graph in non-cache coherent memory;
Means for storing a DFA instruction in a cache coherent memory, wherein the DFA instruction directs the packet data stored in the cache coherent memory for use and is stored in the non-cache memory; Means for directing for scanning;
A network processor comprising means for scanning the DFA graph using the stored packet data and writing intermediate and final results to the cache coherent memory.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US60921104P | 2004-09-10 | 2004-09-10 | |
| US66967205P | 2005-04-08 | 2005-04-08 | |
| PCT/US2005/032236 WO2006031659A2 (en) | 2004-09-10 | 2005-09-08 | Deterministic finite automata (dfa) processing |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2008512797A true JP2008512797A (en) | 2008-04-24 |
Family
ID=36060573
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2007531386A Withdrawn JP2008512797A (en) | 2004-09-10 | 2005-09-08 | Deterministic finite automaton (DFA) processing |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US8392590B2 (en) |
| EP (1) | EP1790148B1 (en) |
| JP (1) | JP2008512797A (en) |
| WO (1) | WO2006031659A2 (en) |
Families Citing this family (80)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8301788B2 (en) * | 2004-09-10 | 2012-10-30 | Cavium, Inc. | Deterministic finite automata (DFA) instruction |
| US8392590B2 (en) | 2004-09-10 | 2013-03-05 | Cavium, Inc. | Deterministic finite automata (DFA) processing |
| 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 |
| US20070226362A1 (en) * | 2006-03-21 | 2007-09-27 | At&T Corp. | Monitoring regular expressions on out-of-order streams |
| US20070239897A1 (en) * | 2006-03-29 | 2007-10-11 | Rothman Michael A | Compressing or decompressing packet communications from diverse sources |
| US7949130B2 (en) | 2006-12-28 | 2011-05-24 | Intel Corporation | Architecture and instruction set for implementing advanced encryption standard (AES) |
| US7904961B2 (en) * | 2007-04-20 | 2011-03-08 | Juniper Networks, Inc. | Network attack detection using partial deterministic finite automaton pattern matching |
| US9021582B2 (en) | 2007-04-24 | 2015-04-28 | Juniper Networks, Inc. | Parallelized pattern matching using non-deterministic finite automata |
| US7685547B1 (en) * | 2007-07-02 | 2010-03-23 | Cadence Design Systems, Inc. | Method, system, and computer program product for generating automated assumption for compositional verification |
| WO2009015570A1 (en) | 2007-07-27 | 2009-02-05 | Hangzhou H3C Technologies Co., Ltd. | A message processing apparatus and the method thereof |
| US8819217B2 (en) * | 2007-11-01 | 2014-08-26 | Cavium, Inc. | Intelligent graph walking |
| US8086609B2 (en) * | 2007-11-01 | 2011-12-27 | Cavium, Inc. | Graph caching |
| US7949683B2 (en) * | 2007-11-27 | 2011-05-24 | Cavium Networks, Inc. | Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph |
| US8180803B2 (en) * | 2007-11-27 | 2012-05-15 | Cavium, Inc. | Deterministic finite automata (DFA) graph compression |
| US8176300B2 (en) * | 2008-08-25 | 2012-05-08 | Cavium, Inc. | Method and apparatus for content based searching |
| 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 |
| WO2010149986A2 (en) * | 2009-06-23 | 2010-12-29 | Secerno Limited | A method, a computer program and apparatus for analysing symbols in a computer |
| US20110016154A1 (en) * | 2009-07-17 | 2011-01-20 | Rajan Goyal | Profile-based and dictionary based graph caching |
| US9083740B1 (en) | 2009-09-28 | 2015-07-14 | Juniper Networks, Inc. | Network traffic pattern matching using adaptive deterministic finite automata |
| US9171338B2 (en) | 2009-09-30 | 2015-10-27 | Evan V Chrapko | Determining connectivity within a community |
| US20110099164A1 (en) | 2009-10-23 | 2011-04-28 | Haim Zvi Melman | Apparatus and method for search and retrieval of documents and advertising targeting |
| US20170358027A1 (en) | 2010-01-14 | 2017-12-14 | Www.Trustscience.Com Inc. | Scoring trustworthiness, competence, and/or compatibility of any entity for activities including recruiting or hiring decisions, composing a team, insurance underwriting, credit decisions, or shortening or improving sales cycles |
| US9264329B2 (en) | 2010-03-05 | 2016-02-16 | Evan V Chrapko | Calculating trust scores based on social graph statistics |
| US8630290B1 (en) * | 2010-04-15 | 2014-01-14 | ARRIS Enterprise, Inc. | Using a DFA unit for classification list processing |
| US9922134B2 (en) * | 2010-04-30 | 2018-03-20 | Www.Trustscience.Com Inc. | Assessing and scoring people, businesses, places, things, and brands |
| CN102064977B (en) * | 2010-11-10 | 2012-07-04 | 中国人民解放军国防科学技术大学 | Graphics processing unit (GPU) based method for detecting message content of high-speed network |
| US9398033B2 (en) | 2011-02-25 | 2016-07-19 | Cavium, Inc. | Regular expression processing automaton |
| US9858051B2 (en) * | 2011-06-24 | 2018-01-02 | Cavium, Inc. | Regex compiler |
| US8990259B2 (en) | 2011-06-24 | 2015-03-24 | Cavium, Inc. | Anchored patterns |
| CN103858386B (en) | 2011-08-02 | 2017-08-25 | 凯为公司 | Method and apparatus for performing packet classification by optimized decision tree |
| US9203805B2 (en) * | 2011-11-23 | 2015-12-01 | Cavium, Inc. | Reverse NFA generation and processing |
| WO2013097026A1 (en) | 2011-12-28 | 2013-07-04 | Chrapko Evan V | Systems and methods for visualizing social graphs |
| US10599697B2 (en) | 2013-03-15 | 2020-03-24 | Uda, Llc | Automatic topic discovery in streams of unstructured data |
| US9112767B2 (en) * | 2013-03-15 | 2015-08-18 | Cavium, Inc. | Method and an accumulator scoreboard for out-of-order rule response handling |
| US9471656B2 (en) | 2013-03-15 | 2016-10-18 | Uda, Llc | Massively-parallel system architecture and method for real-time extraction of high-value information from data streams |
| US10698935B2 (en) | 2013-03-15 | 2020-06-30 | Uda, Llc | Optimization for real-time, parallel execution of models for extracting high-value information from data streams |
| US10204026B2 (en) | 2013-03-15 | 2019-02-12 | Uda, Llc | Realtime data stream cluster summarization and labeling system |
| US10430111B2 (en) | 2013-03-15 | 2019-10-01 | Uda, Llc | Optimization for real-time, parallel execution of models for extracting high-value information from data streams |
| US9130819B2 (en) * | 2013-03-15 | 2015-09-08 | Cavium, Inc. | Method and apparatus for scheduling rule matching in a processor |
| GB2510655B (en) * | 2013-07-31 | 2015-02-25 | Imagination Tech Ltd | Prioritizing instructions based on type |
| US9426165B2 (en) | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for compilation of finite automata |
| US9426166B2 (en) | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for processing finite automata |
| US9507563B2 (en) * | 2013-08-30 | 2016-11-29 | Cavium, Inc. | System and method to traverse a non-deterministic finite automata (NFA) graph generated for regular expression patterns with advanced features |
| 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 |
| US9904630B2 (en) * | 2014-01-31 | 2018-02-27 | Cavium, Inc. | Finite automata processing based on a top of stack (TOS) memory |
| US9602532B2 (en) | 2014-01-31 | 2017-03-21 | Cavium, Inc. | Method and apparatus for optimizing finite automata processing |
| US9438561B2 (en) | 2014-04-14 | 2016-09-06 | Cavium, Inc. | Processing of finite automata based on a node cache |
| US10110558B2 (en) | 2014-04-14 | 2018-10-23 | Cavium, Inc. | Processing of finite automata based on memory hierarchy |
| US10002326B2 (en) | 2014-04-14 | 2018-06-19 | Cavium, Inc. | Compilation of finite automata based on memory hierarchy |
| JP5917678B1 (en) | 2014-12-26 | 2016-05-18 | 株式会社Pfu | Information processing apparatus, method, and program |
| US9578043B2 (en) | 2015-03-20 | 2017-02-21 | Ashif Mawji | Calculating a trust score |
| US10623420B2 (en) * | 2016-01-19 | 2020-04-14 | Nec Corporation | Method and device for data inspection |
| US20170235792A1 (en) | 2016-02-17 | 2017-08-17 | Www.Trustscience.Com Inc. | Searching for entities based on trust score and geography |
| US9438619B1 (en) | 2016-02-29 | 2016-09-06 | Leo M. Chan | Crowdsourcing of trustworthiness indicators |
| US9679254B1 (en) | 2016-02-29 | 2017-06-13 | Www.Trustscience.Com Inc. | Extrapolating trends in trust scores |
| US9721296B1 (en) | 2016-03-24 | 2017-08-01 | Www.Trustscience.Com Inc. | Learning an entity's trust model and risk tolerance to calculate a risk score |
| US10180969B2 (en) | 2017-03-22 | 2019-01-15 | Www.Trustscience.Com Inc. | Entity resolution and identity management in big, noisy, and/or unstructured data |
| EP3788512A4 (en) * | 2017-12-30 | 2022-03-09 | Target Brands, Inc. | HIERARCHICAL, PARALLEL MODELS FOR REAL-TIME EXTRACTING HIGH VALUE INFORMATION FROM DATA STREAMS AND THE ASSOCIATED CREATION SYSTEM AND METHOD |
| WO2020014272A1 (en) * | 2018-07-13 | 2020-01-16 | Fungible, Inc. | Arc caching for deterministic finite automata of regular expression accelerator |
| US10656949B2 (en) | 2018-07-13 | 2020-05-19 | Fungible, Inc. | Instruction-based non-deterministic finite state automata accelerator |
| US10635419B2 (en) | 2018-07-13 | 2020-04-28 | Fungible, Inc. | Incremental compilation of finite automata for a regular expression accelerator |
| US10645187B2 (en) | 2018-07-13 | 2020-05-05 | Fungible, Inc. | ARC caching for determininstic finite automata of regular expression accelerator |
| US10983721B2 (en) | 2018-07-13 | 2021-04-20 | Fungible, Inc. | Deterministic finite automata node construction and memory mapping for regular expression accelerator |
| US11263190B2 (en) | 2019-09-26 | 2022-03-01 | Fungible, Inc. | Data ingestion and storage by data processing unit having stream-processing hardware accelerators |
| US11636154B2 (en) | 2019-09-26 | 2023-04-25 | Fungible, Inc. | Data flow graph-driven analytics platform using data processing units having hardware accelerators |
| US11636115B2 (en) | 2019-09-26 | 2023-04-25 | Fungible, Inc. | Query processing using data processing units having DFA/NFA hardware accelerators |
| WO2021092004A1 (en) | 2019-11-05 | 2021-05-14 | Meso Scale Technologies, Llc. | Methods and kits for quantitating radiation exposure |
| US20230021837A1 (en) | 2019-11-26 | 2023-01-26 | Meso Scale Technologies, Llc. | Methods and kits for detecting autoimmune diseases |
| US11934964B2 (en) | 2020-03-20 | 2024-03-19 | Microsoft Technology Licensing, Llc | Finite automata global counter in a data flow graph-driven analytics platform having analytics hardware accelerators |
| US11630729B2 (en) | 2020-04-27 | 2023-04-18 | Fungible, Inc. | Reliability coding with reduced network traffic |
| WO2021222827A1 (en) | 2020-05-01 | 2021-11-04 | Meso Scale Technologies, Llc. | Methods and kits for virus detection |
| EP4341692A1 (en) | 2021-05-21 | 2024-03-27 | Meso Scale Technologies, LLC | Viral strain serology assays |
| WO2023245184A1 (en) | 2022-06-17 | 2023-12-21 | Meso Scale Technologies, Llc. | Viral strain serology assays |
| EP4591062A1 (en) | 2022-09-23 | 2025-07-30 | Meso Scale Technologies, LLC | Orthopoxvirus serology assays |
| WO2025049305A1 (en) | 2023-08-25 | 2025-03-06 | Meso Scale Technologies, Llc. | Viral strain serology assays |
| WO2025188949A1 (en) | 2024-03-08 | 2025-09-12 | Meso Scale Technologies, Llc. | Methods of quantifying analytes |
Family Cites Families (63)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5327544A (en) * | 1991-08-29 | 1994-07-05 | At&T Bell Laboratories | Method and apparatus for designing gateways for computer networks |
| US5230061A (en) * | 1992-01-02 | 1993-07-20 | The University Of Akron | Clause counter map inference engine |
| US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
| US6192282B1 (en) * | 1996-10-01 | 2001-02-20 | Intelihome, Inc. | Method and apparatus for improved building automation |
| US20040171152A1 (en) * | 1996-10-10 | 2004-09-02 | Invitrogen Corporation | Animal cell culture media comprising non-animal or plant-derived nutrients |
| US6760833B1 (en) * | 1997-08-01 | 2004-07-06 | Micron Technology, Inc. | Split embedded DRAM processor |
| US7975305B2 (en) * | 1997-11-06 | 2011-07-05 | Finjan, Inc. | Method and system for adaptive rule-based content scanners for desktop computers |
| US6076087A (en) * | 1997-11-26 | 2000-06-13 | At&T Corp | Query evaluation on distributed semi-structured data |
| US6560680B2 (en) * | 1998-01-21 | 2003-05-06 | Micron Technology, Inc. | System controller with Integrated low latency memory using non-cacheable memory physically distinct from main memory |
| US6047283A (en) * | 1998-02-26 | 2000-04-04 | Sap Aktiengesellschaft | Fast string searching and indexing using a search tree having a plurality of linked nodes |
| US6578110B1 (en) * | 1999-01-21 | 2003-06-10 | Sony Computer Entertainment, Inc. | High-speed processor system and cache memories with processing capabilities |
| US7188168B1 (en) * | 1999-04-30 | 2007-03-06 | Pmc-Sierra, Inc. | Method and apparatus for grammatical packet classifier |
| US7185081B1 (en) * | 1999-04-30 | 2007-02-27 | Pmc-Sierra, Inc. | Method and apparatus for programmable lexical packet classifier |
| US6493698B1 (en) * | 1999-07-26 | 2002-12-10 | Intel Corporation | String search scheme in a distributed architecture |
| US6775757B1 (en) * | 1999-12-14 | 2004-08-10 | Genesis Microchip Inc. | Multi-component processor |
| US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
| US6925641B1 (en) * | 2000-02-04 | 2005-08-02 | Xronix Communications, Inc. | Real time DSP load management system |
| 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 |
| DE60222575T2 (en) * | 2001-09-12 | 2008-06-26 | Safenet Inc. | A method for generating a DFA machine, wherein transitions are grouped into classes for the purpose of saving memory |
| US6856981B2 (en) * | 2001-09-12 | 2005-02-15 | Safenet, Inc. | High speed data stream pattern recognition |
| US20030110208A1 (en) * | 2001-09-12 | 2003-06-12 | Raqia Networks, Inc. | Processing data across packet boundaries |
| US7225188B1 (en) * | 2002-02-13 | 2007-05-29 | Cisco Technology, Inc. | System and method for performing regular expression matching with high parallelism |
| JP4047053B2 (en) * | 2002-04-16 | 2008-02-13 | 富士通株式会社 | Retrieval apparatus and method using sequence pattern including repetition |
| 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 |
| US6952694B2 (en) * | 2002-06-13 | 2005-10-04 | Intel Corporation | Full regular expression search of network traffic |
| WO2004013777A1 (en) | 2002-08-05 | 2004-02-12 | Fish Robert | System and method of parallel pattern matching |
| 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 |
| US7119577B2 (en) * | 2002-08-28 | 2006-10-10 | Cisco Systems, Inc. | Method and apparatus for efficient implementation and evaluation of state machines and programmable finite state automata |
| US7146643B2 (en) * | 2002-10-29 | 2006-12-05 | Lockheed Martin Corporation | Intrusion detection accelerator |
| KR100558765B1 (en) * | 2002-11-14 | 2006-03-10 | 한국과학기술원 | How to Perform WLML Query Using Adaptive Path Index |
| US7085918B2 (en) * | 2003-01-09 | 2006-08-01 | Cisco Systems, Inc. | Methods and apparatuses for evaluation of regular expressions of arbitrary size |
| US7464254B2 (en) * | 2003-01-09 | 2008-12-09 | Cisco Technology, Inc. | Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data |
| US7308446B1 (en) * | 2003-01-10 | 2007-12-11 | Cisco Technology, Inc. | Methods and apparatus for regular expression matching |
| US7689530B1 (en) * | 2003-01-10 | 2010-03-30 | Cisco Technology, Inc. | DFA sequential matching of regular expression with divergent states |
| WO2004072797A2 (en) * | 2003-02-07 | 2004-08-26 | Safenet, Inc. | System and method for determining the start of a match of a regular expression |
| EP1604277A2 (en) * | 2003-02-28 | 2005-12-14 | Lockheed Martin Corporation | Hardware accelerator personality compiler |
| US7305372B2 (en) * | 2003-03-04 | 2007-12-04 | Kurzweil Technologies, Inc. | Enhanced artificial intelligence language |
| JP2004271764A (en) * | 2003-03-06 | 2004-09-30 | Nagoya Industrial Science Research Inst | Finite state transducer generator, program, recording medium, generation method, and gradual syntax analysis system |
| US7706378B2 (en) * | 2003-03-13 | 2010-04-27 | Sri International | Method and apparatus for processing network packets |
| US7093231B2 (en) * | 2003-05-06 | 2006-08-15 | David H. Alderson | Grammer for regular expressions |
| US7496892B2 (en) * | 2003-05-06 | 2009-02-24 | Andrew Nuss | Polymorphic regular expressions |
| US20050108518A1 (en) * | 2003-06-10 | 2005-05-19 | Pandya Ashish A. | Runtime adaptable security processor |
| GB0315191D0 (en) * | 2003-06-28 | 2003-08-06 | Ibm | Methods, apparatus and computer programs for visualization and management of data organisation within a data processing system |
| US20050138276A1 (en) * | 2003-12-17 | 2005-06-23 | Intel Corporation | Methods and apparatus for high bandwidth random access using dynamic random access memory |
| US7586851B2 (en) * | 2004-04-26 | 2009-09-08 | Cisco Technology, Inc. | Programmable packet parsing processor |
| US20050273450A1 (en) * | 2004-05-21 | 2005-12-08 | Mcmillen Robert J | Regular expression acceleration engine and processing model |
| EP1607823A3 (en) | 2004-06-14 | 2006-01-25 | Lionic Corporation | Method and system for virus detection based on finite automata |
| US8301788B2 (en) * | 2004-09-10 | 2012-10-30 | Cavium, Inc. | Deterministic finite automata (DFA) instruction |
| US8392590B2 (en) | 2004-09-10 | 2013-03-05 | Cavium, Inc. | Deterministic finite automata (DFA) processing |
| 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 |
| EP1794979B1 (en) * | 2004-09-10 | 2017-04-12 | Cavium, Inc. | Selective replication of data structure |
| WO2006029508A1 (en) * | 2004-09-13 | 2006-03-23 | Solace Systems Inc. | Highly scalable subscription matching for a content routing network |
| US7356663B2 (en) * | 2004-11-08 | 2008-04-08 | Intruguard Devices, Inc. | Layered memory architecture for deterministic finite automaton based string matching useful in network intrusion detection and prevention systems and apparatuses |
| US7765183B2 (en) * | 2005-04-23 | 2010-07-27 | Cisco Technology, Inc | Hierarchical tree of deterministic finite automata |
| US20070133593A1 (en) * | 2005-11-21 | 2007-06-14 | Udaya Shankara | Searching Strings Representing a Regular Expression |
| US7685193B2 (en) * | 2006-04-28 | 2010-03-23 | Kognitio Limited | Database system with multiple processing nodes |
| US7725510B2 (en) * | 2006-08-01 | 2010-05-25 | Alcatel-Lucent Usa Inc. | Method and system for multi-character multi-pattern pattern matching |
| US7904961B2 (en) * | 2007-04-20 | 2011-03-08 | Juniper Networks, Inc. | Network attack detection using partial deterministic finite automaton pattern matching |
| US7668802B2 (en) * | 2007-07-30 | 2010-02-23 | Alcatel Lucent | Method and appliance for XML policy matching |
| US8819217B2 (en) * | 2007-11-01 | 2014-08-26 | Cavium, Inc. | Intelligent graph walking |
| US8180803B2 (en) | 2007-11-27 | 2012-05-15 | Cavium, Inc. | Deterministic finite automata (DFA) graph compression |
| US7949683B2 (en) | 2007-11-27 | 2011-05-24 | Cavium Networks, Inc. | Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph |
| US8473523B2 (en) * | 2008-10-31 | 2013-06-25 | Cavium, Inc. | Deterministic finite automata graph traversal with nodal bit mapping |
-
2005
- 2005-09-07 US US11/221,408 patent/US8392590B2/en active Active
- 2005-09-08 WO PCT/US2005/032236 patent/WO2006031659A2/en active Application Filing
- 2005-09-08 JP JP2007531386A patent/JP2008512797A/en not_active Withdrawn
- 2005-09-08 EP EP05812863A patent/EP1790148B1/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| WO2006031659A2 (en) | 2006-03-23 |
| EP1790148B1 (en) | 2013-03-27 |
| US20060069872A1 (en) | 2006-03-30 |
| WO2006031659A3 (en) | 2006-07-06 |
| EP1790148A2 (en) | 2007-05-30 |
| US8392590B2 (en) | 2013-03-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2008512797A (en) | Deterministic finite automaton (DFA) processing | |
| US8301788B2 (en) | Deterministic finite automata (DFA) instruction | |
| US7558925B2 (en) | Selective replication of data structures | |
| US7594081B2 (en) | Direct access to low-latency memory | |
| US9787693B2 (en) | Graph caching | |
| US8180803B2 (en) | Deterministic finite automata (DFA) graph compression | |
| US7949683B2 (en) | Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph | |
| US9569366B2 (en) | System and method to provide non-coherent access to a coherent memory system | |
| KR101615915B1 (en) | GENERATING A NFA (Non-Deterministic finite automata) GRAPH FOR REGULAR EXPRESSION PATTERNS WITH ADVANCED FEATURES | |
| US8818921B2 (en) | Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process | |
| US8473523B2 (en) | Deterministic finite automata graph traversal with nodal bit mapping | |
| CN101053234B (en) | Method and apparatus for exceeding DFA image with entered grouping data | |
| JP6676027B2 (en) | Multi-core interconnection in network processors | |
| Jung et al. | Gpu-ether: Gpu-native packet i/o for gpu applications on commodity ethernet |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20081202 |