[go: up one dir, main page]

JP2008512797A - Deterministic finite automaton (DFA) processing - Google Patents

Deterministic finite automaton (DFA) processing Download PDF

Info

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
Application number
JP2007531386A
Other languages
Japanese (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 JP2008512797A publication Critical patent/JP2008512797A/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/164Implementing security features at a particular protocol layer at the network layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol 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グラフを走査する。
【選択図】図1B
A 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

関連出願Related applications

本出願は、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 security system 100 that includes a network service processor 110 according to the principles of the present invention. The security system 100 switches a packet received at one Ethernet (registered trademark) port (Gig E) to another Ethernet (registered trademark) port (Gig E), and executes a plurality of security functions on the received packet. It is a stand-alone system that forwards the packet. For example, the security system 100 can be used to perform security processing on a packet received on the wide area network and then transfer the packet to the local area network.

ネットワークサービスプロセッサ110は、ハードウェアパケット処理、バッファリング、ワークスケジューリング、順序づけ、同期化、およびキャッシュコヒーレンスサポートを提供することにより、全てのパケット処理タスクの速度を高める。ネットワークサービスプロセッサ110は、受信されたパケットにカプセル化されている開放型システム間相互接続ネットワークのL2からL7層までのプロトコルを処理する。   The network service processor 110 speeds up all packet processing tasks by providing hardware packet processing, buffering, work scheduling, ordering, synchronization, and cache coherence support. The network service processor 110 processes the protocols from the L2 to L7 layers of the open intersystem interconnection network encapsulated in the received packet.

ネットワークサービスプロセッサ110は、イーサネット(登録商標)ポート(Gig E)から物理インタフェースPHY104a、104bを介してパケットを受信し、受信されたパケットに対してL7〜L2ネットワークプロトコル処理を実行し、処理されたパケットを物理インタフェース104a、104bから、またはPCIバス106を介して転送する。ネットワークプロトコル処理には、ファイアウォール、アプリケーションファイアウォール、IPセキュリティ(IPSEC)および/またはセキュアソケットレイヤ(SSL)を含む仮想プライベートネットワーク(VPN)、侵入検知システム(IDS)およびアンチウィルス(AV)などのネットワークセキュリティプロトコルの処理が含まれてもよい。   The network service processor 110 receives a packet from the Ethernet (registered trademark) port (Gig E) via the physical interfaces PHY 104a and 104b, executes L7 to L2 network protocol processing on the received packet, and performs processing. The packet is transferred from the physical interfaces 104 a and 104 b or via the PCI bus 106. Network protocol processing includes network security such as firewall, application firewall, IP security (IPSEC) and / or virtual private network (VPN) including secure socket layer (SSL), intrusion detection system (IDS) and antivirus (AV) Protocol processing may be included.

ネットワークサービスプロセッサ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 network service processor 110 controls access to external DRAM 108 that is coupled to network service processor 110. The DRAM 108 stores data packets received from the PHY interfaces 104 a, 104 b or the PCI expansion (PCI-X) interface 106 for processing by the network service processor 110.

ネットワークサービスプロセッサ110内の低遅延メモリコントローラ360(図3B)は、低遅延メモリ(LLM)118を制御する。LLM118は、侵入検知システム(IDS)またはアンチウィルス(AV)アプリケーションに必要とされる正規表現一致を含む、高速検索を可能にするインターネットサービス/セキュリティアプリケーションに使用されることができる。   A low latency memory controller 360 (FIG. 3B) within the network service processor 110 controls the low latency memory (LLM) 118. The LLM 118 can be used in Internet service / security applications that enable fast searches, including regular expression matching required for intrusion detection system (IDS) or antivirus (AV) applications.

正規表現は、文字列一致パターンを表現する一般的な方法である。正規表現の極小要素は、一致されるべき単一文字である。これらは、ユーザが連結、選択、クリーネ・スターなどを表現できるようにするメタ文字演算子と組み合わせることもできる。連結は、単一文字(またはサブ文字列)から複数の文字一致パターンを生成するために使用され、選択(|)は、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 network service processor 110 shown in FIG. 1A. Network service processor 110 uses at least one processor core 120 to provide high application performance as described in connection with FIG. 1A.

パケットは、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 / SPX units 122a, 122b via the SPI-4.2 or RGMII interface. The packet can also be received by the PCI interface 124. The GMX / SPX unit (122a, 122b) performs preprocessing of the received packet by checking various fields in the L2 network protocol header included in the received packet, and then the packet is sent to the packet input unit. 126.

パケット入力ユニット126は、受信されたパケットに含まれるネットワークプロトコルヘッダ(L3およびL4)のさらなる前処理を実行する。前処理には、通信制御プロトコル(TCP)/ユーザデータグラムプロトコル(UDP)(L3ネットワークプロトコル)に関するチェックサムのチェックが含まれる。   The packet input unit 126 performs further preprocessing of the network protocol headers (L3 and L4) included in the received packet. The pre-processing includes a checksum check for the communication control protocol (TCP) / user datagram protocol (UDP) (L3 network protocol).

フリープールのアロケータ(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 level 2 cache memory 130 and DRAM 108. The packet input unit 126 uses one of the pools of pointers to store received packet data in the level 2 cache memory 130 and uses another pool of pointers to the processor core 120 for work queues. Assign an entry.

パケット入力ユニット126は次に、レベル2キャッシュ130またはDRAM108内のバッファにパケットデータを書き込む。この書込みのフォーマットは、上位層のネットワークプロトコルによるその後の処理を容易にするために、プロセッサコア120のうちの少なくとも1つで実行される上位層ソフトウェアに好都合なフォーマットである。   The packet input unit 126 then writes the packet data to the level 2 cache 130 or a buffer in the DRAM 108. This writing format is convenient for higher layer software running on at least one of the processor cores 120 to facilitate subsequent processing by higher layer network protocols.

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 / O interface 136 manages the overall protocol and arbitration and provides coherent I / O partitioning. The I / O interface 136 includes an I / O bridge (IOB) 138 and a fetch and add unit (FAU) 140. A register in the fetch and add unit 140 is used to hold the length of the output queue used to transfer the processed packet through the packet output unit 146. The I / O bridge 138 includes a buffer queue for storing information transferred between the coherent memory bus 144, the I / O bus 142, the packet input unit 126, and the packet output unit 146.

パケット順序/ワークモジュール(POW)148は、プロセッサコア120に対するワークをキューイングして(待ち行列に入れて)スケジューリングする。ワーク待ち行列エントリを待ち行列に追加することによって、ワークがキューイングされる(待ち行列に入れられる)。例えば、ワーク待ち行列エントリは、パケットの到着毎にパケット入力ユニット126によって追加される。プロセッサコア120のワークのスケジューリングには、タイマユニット150が使用される。   The packet order / work module (POW) 148 queues (queues) work for the processor core 120 and schedules it. A work is queued by adding a work queue entry to the queue. For example, a work queue entry is added by the packet input unit 126 for each packet arrival. The timer unit 150 is used for scheduling the work of the processor core 120.

プロセッサコア120は、POWモジュール148にワークを要求する。POWモジュール148は、プロセッサコア120のうちの1つに対してワークを選択(すなわち、スケジューリング)し、そのワークを記述するワーク待ち行列エントリを指すポインタをプロセッサコア120に返す。   The processor core 120 requests a work from the POW module 148. The POW module 148 selects a work for one of the processor cores 120 (ie, scheduling) and returns a pointer to the processor core 120 that points to a work queue entry that describes the work.

プロセッサコア120は、命令キャッシュ152、レベル1(L1)データキャッシュ154、および暗号アクセラレータ156を有する。一実施形態においては、ネットワークサービスプロセッサ110は、16個のスーパースカラーRISC(縮小命令セットコンピュータ)型プロセッサコア120を有する。一実施形態においては、各スーパースケーラRISC型プロセッサコア120はMIPS64バージョン2プロセッサコアの拡張版である。   The processor core 120 includes an instruction cache 152, a level 1 (L1) data cache 154, and a cryptographic accelerator 156. In one embodiment, the network service processor 110 has 16 superscalar RISC (Reduced Instruction Set Computer) type processor cores 120. In one embodiment, each superscaler RISC processor core 120 is an extension of the MIPS64 version 2 processor core.

レベル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) cache memory 130 and DRAM 108 are shared by all of processor core 120 and I / O coprocessor devices. Each processor core 120 is coupled to the level 2 cache memory 130 by a coherent memory bus 144. The coherent memory bus 144 is a communication channel for all memory and I / O transactions between the processor core 120, IOB 138 and L2 cache memory 130 and L2 cache memory controller 131. In one embodiment, the coherent memory bus 144 is adaptable for 16 processor cores 120, supports a fully coherent L1 data cache 154 with write-through, performs advanced buffering, and prioritizes I / O. Can be ranked.

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 level 2 cache memory 130 or external DRAM 108, or “in-flight”. Returns the latest copy of. The L2 cache memory controller 131 also stores two tags for the data cache 154 in each processor core 120. The L2 cache memory controller 131 compares the address of the cache block store request with the data-cache tag and the store instruction is from another processor core or from an I / O component via the I / O interface 136. Sometimes, the processor core 120 data-cache tag (both copies) is invalidated.

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 DRAM 108. The DRAM controller 133 supports DDR-I (double data rate) and DDR-II protocols.

プロセッサコア120によってパケットが処理されると、パケット出力ユニット(PKO)146は、メモリからパケットデータを読み出し、L4ネットワークプロトコル後処理を実行し(例えば、TCP/UDPチェックサムを生成し)、上記パケットをGMX/SPXユニット122a、122bを介して転送し、パケットによって使用されたL2キャッシュ130/DRAM108を解放する。   When the packet is processed by the processor core 120, the packet output unit (PKO) 146 reads the packet data from the memory, performs post-processing of the L4 network protocol (for example, generates a TCP / UDP checksum), and the packet Are transferred via the GMX / SPX units 122a and 122b, and the L2 cache 130 / DRAM 108 used by the packet is released.

低遅延メモリコントローラ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 LLM 118. Low latency memory (LLM) 118 is shared by all processor cores 120. The LLM 118 is a dynamic random access memory (DRAM), a low delay dynamic random access memory (RLDRAM), a synchronous random access memory (SRAM), a fast cycle random access memory (FCRAM), or any other type of low memory known in the art. It may be a delay memory. RLDRAM provides a memory delay of 30 nanoseconds or less (ie, the time it takes for a memory request initiated by processor 120 to be satisfied). Each processor core 120 is directly coupled to the LLM controller 360 by a low latency memory bus 158. The low-latency memory bus 158 is a communication channel for content-aware application processing between the processor core 120 and the LLM controller 360. The LLM controller 360 is coupled between the processor core 120 and the LLM 118 to control access to the LLM 118.

ネットワークサービスプロセッサ110は、プロセッサコア120をオフロード(負荷軽減)する特定用途向けコプロセッサを有し、これにより、ネットワークサービスプロセッサが高スループットを達成できるようにする。圧縮/解凍コプロセッサ132は、受信パケットの圧縮および解凍を専用に実行する。決定性有限オートマトン(DFA)モジュール134は、専用のDFAエンジン370(図3B)を有し、アンチウィルス(AV)、侵入検知システム(IDS)および他のコンテンツ処理アプリケーションに必要なパターンおよび署名一致の処理を速くして、最大4Gbpsまで加速する。   The network service processor 110 has an application specific coprocessor that offloads the processor core 120, thereby enabling the network service processor to achieve high throughput. The compression / decompression coprocessor 132 performs dedicated compression and decompression of received packets. The deterministic finite automaton (DFA) module 134 has a dedicated DFA engine 370 (FIG. 3B) and handles pattern and signature matching required for antivirus (AV), intrusion detection system (IDS) and other content processing applications. To accelerate up to 4 Gbps.

コンテンツアウェア型アプリケーションの処理は、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 LLM 118. The pattern / representation may be in the form of a deterministic finite automaton (DFA). A DFA is a state machine. The input to the DFA state machine is a string of bytes (1 byte = 8 bits) (ie, the alphabet is 1 byte in DFA). Each input byte causes the state machine to transition from one state to the next. States and transition functions can be displayed in a graph 200 as shown in FIG. 2A. However, each graph node (nodes 0-3) is in one state, and different graph arcs interconnecting different nodes represent state transitions for different input bytes. The state includes specific characters associated with the state, such as "A ... Z, a ... z, 0 ... 9,". The current state of the state machine is a node identifier that selects a particular node in the graph. The number of nodes may be in the range from a few nodes to about 128,000 nodes in a small size graph. A large size graph may have up to 1,000,000 nodes, or more.

説明のための例では、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 nodes 1 to 3 to the graph according to the intended expression (ie, target One additional node for each character in the string). With continued reference to this example, an exemplary character input stream includes the string “12abc3”. The input string is searched using the DFA graph and the target string representation “abc” is identified.

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 node 0 until the first character of the target string representation is read. For example, when the first character “a” in the target character string expression in the input stream is detected, an arc represented by “a” is traced from node 0 to node 1. Next, the next character in the input stream is read and if it is detected that it is something other than the next character in the target string representation (ie, “b”), it is written “not b” , An arc from node 1 back to node 0 is followed. However, when the character “b” is detected as the next character in the input stream, an arc from node 1 to node 2 represented by “b” is traced. Next, the next character of the input stream is read, and if this is any character other than the next character in the target string representation (ie, “c”), node 2 to node denoted “not c” An arc returning to 0 is followed. However, when the character “c” in the input stream is detected at the node 2, the arc from the node 2 to the node 3 represented by “c” is traced. Since the target string representation “abc” is a fixed length representation, node 3 is a terminal node, and as a result of the search, that is, the representation “abc” has been found and the position of this representation in the input stream Is reported.

さらに、コンパイラで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) processor 120 according to the principles of the present invention. The processor (processor core) 120 includes an integer arithmetic unit 302, an instruction dispatch unit 304, an instruction fetch unit 306, a memory management unit (MMU) 308, a system interface 310, a low delay interface 350, a load / store unit 314, a write buffer 316, and A security accelerator 156 is included. The processor core 120 also has an EJTAG interface 330 that can execute a debugging operation. The system interface 310 controls access to external memory, ie, memory external to the processor 120, such as external (L2) cache memory 130 or main / main memory 108.

整数演算ユニット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 LLM 118 and data read from the LLM 118 using LLM load / store instructions. Holding registers 330a, 330b improve the efficiency of the instruction pipeline by allowing two outstanding loads before decommissioning the pipeline. Although two holding registers are shown, one or more holding registers may be used. Multiplication unit 326 can perform direct multiplication of 64-bit registers. The instruction fetch unit 306 includes an instruction cache (ICache) 152. The load / store unit 314 has a data cache 154. In one embodiment, instruction cache 152 is 32 kilobytes, data cache 154 is 8 kilobytes, and write buffer 316 is 2 kilobytes. The memory management unit 308 includes a translation lookaside buffer (TLB) 340.

一実施形態においては、プロセッサ120は、トリプルデータ暗号化規格(3DES)、高度暗号化規格(AES)、セキュアハッシュアルゴリズム(SHA−1)、メッセージダイジェストアルゴリズム5番(MD5)のための暗号アクセラレーションを含む暗号アクセラレーションモジュール(セキュリティアクセラレータ)156を有する。暗号アクセラレーションモジュール156は、転送を通して、演算ユニット302内の主レジスタファイル328と通信する。RSAおよびディフィ−ヘルマン(DH)アルゴリズムが、乗算ユニット326において実行される。   In one embodiment, processor 120 provides cryptographic acceleration for Triple Data Encryption Standard (3DES), Advanced Encryption Standard (AES), Secure Hash Algorithm (SHA-1), Message Digest Algorithm No. 5 (MD5). A cryptographic acceleration module (security accelerator) 156 including The cryptographic acceleration module 156 communicates with the main register file 328 in the arithmetic unit 302 through the transfer. RSA and Diffie-Hellman (DH) algorithms are executed in multiplication unit 326.

図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 DFA module 134 of FIG. 3A. The DFA module 134 has a low latency DRAM controller 360, at least one DFA thread engine (DTE) 370 (16 are shown), and instruction input logic 380. Instruction input logic 380 includes a DFA instruction queue 382 and a doorbell 384. The DFA instruction queue 382 queues (queues) DFA instructions stored in the L2 / DRAM (130/108), and the doorbell indicates the number of DFA instructions stored in the DFA instruction queue 382. . The core 120 software can issue a doorbell write for each individual DFA instruction, ie, multiple DFA instructions can be accumulated in a single doorbell write. Each DFA instruction says that DFA module 134 needs to start DTE 370, read input data, scan DFA graph 200 stored in LLM 118, and write the result to L2 / DRAM (130/108). Contains information. The format of the DFA instruction will be described later with reference to FIG. 8A.

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 DTE 370 can be used to perform a pattern search. In general, the DTE 370 uses the input packet data to search for a specific representation in the packet data (present in the L2 / DRAM (130/108)) and DFA graph 200 (FIG. 2) (present in the LLM 118). Scan. For example, the network service processor can track up to 1000 TCP input streams simultaneously with each input stream sent to a separate DTE to search for a particular representation. Prior to the scan, the software in core 120 first (i) preloads the DFA graph in LLM 118 via LLM bus 158 and (ii) DFA in L2 / DRAM (130/108). It is necessary to preload instructions and (iii) send DFA instructions to the DFA module 134 via the IOB 142. The DFA instruction indicates a DFA graph 200 that is scanned using input packet data. Thereafter, DFA module 134 fetches and queues DFA instructions and schedules each DFA instruction to one of the 16 available DTEs 370. All DTEs 370 are identical and equivalent so that any DFA instruction can be scheduled to any available DTE 370. Upon receipt of the instruction, the DTE 370 simultaneously (a) fetches packet data from the L2 / DRAM (130/108) via the IOB 142 and (b) for each byte of packet data, The LLM DRAM load instruction is issued so as to shift to the state, and (c) the intermediate and final results are written back to the original L2 / DRAM (130/108) via the IOB 142.

一般に、DTE370は、ハードウェア、ソフトウェアまたはハードウェア/ソフトウェアの組合せを使用して実現できる状態マシンである。実施形態によっては、DTE370は、組合せ論理を使用してハードウェアで実現される。他の実施形態では、各DTE370は異なるプロセッサ上でそれぞれ実現される。さらに他の実施形態では、DTE370は共通のプロセッサを使用して実現される。例えば、各DTE370は、共有のマルチタスク環境を提供するように適合化された共通のプロセッサ上で実行される個別のタスク(すなわち、命令シーケンス)であってもよい。マルチタスキングは、オペレーティングシステムにおいて複数の独立したジョブ(すなわち、DTE370)間で単一のプロセッサを共有する技術である。さらに、もしくは代替として、DTE370のそれぞれは、マルチスレッディング能力を提供するように適合化された共通プロセッサ上で実行される個別のプロセススレッドであってもよい。マルチスレッディングとマルチタスキングとの差は、スレッドが一般に、マルチタスキング下でタスクを実行するのに比べてその環境を互いに多く共用する点である。例えば、複数スレッドが単一アドレス空間および全体変数セットを共有する一方で、スレッドのプログラムカウンタおよびスタックポインタの値によって各スレッドを区別することもできる。   In general, DTE 370 is a state machine that can be implemented using hardware, software, or a combination of hardware / software. In some embodiments, DTE 370 is implemented in hardware using combinatorial logic. In other embodiments, each DTE 370 is implemented on a different processor. In yet other embodiments, DTE 370 is implemented using a common processor. For example, each DTE 370 may be a separate task (ie, instruction sequence) that executes on a common processor that is adapted to provide a shared multitasking environment. Multitasking is a technology that shares a single processor among multiple independent jobs (ie, DTE 370) in an operating system. Additionally or alternatively, each DTE 370 may be a separate process thread executing on a common processor adapted to provide multithreading capabilities. The difference between multithreading and multitasking is that threads generally share more of their environment with each other than performing tasks under multitasking. For example, multiple threads may share a single address space and global variable set, while each thread can be distinguished by the thread's program counter and stack pointer values.

図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 instruction queue 400 stored in the L2 / DRAM (130/108). Each instruction queue is a linked list of chunks or buffers 402. Each chunk 402 includes at least three DFA instructions 404, and these three instructions constitute an overall chunk size 406. If there is another chunk (eg, 402 '), the next chunk buffer pointer 408 immediately follows the last DFA instruction 404 in the chunk 402.

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 instruction queue 400, the core 120 software writes the DFA instruction 404 into the DFA instruction queue 400, assigns a chunk if necessary, and then into the DFA doorbell 384, into the DFA instruction queue 400. Write the number of DFA instructions 404 added. The DFA module 134 reads the DFA instruction queue 400 (starting from the tail 410) and upon reaching the last instruction in the chunk (eg 404/404 ′ ″), the next chunk (eg 402 ′ / 402 ″). The next chunk buffer pointer 408 pointing to) is scanned. When the chunk 402 is thus jumped, the DFA module 134 releases the previous chunk (eg, 402/402 ') to the FPA 128 (FIG. 1B).

DFAモジュール134は、DFA命令待ち行列400のテールポインタ410を保持し、コア120のソフトウェアはDFA命令待ち行列400のヘッドポインタ412を保持する。テールポインタ410とヘッドポインタ412との距離は、DFA命令待ち行列400のサイズ、および未処理のドアベルカウント数の両方に等しい。DFA命令待ち行列400のサイズは、利用可能なメモリおよびDFA命令待ち行列400についての20ビットである処理中ドアベルカウンタによってのみ制限される。   The DFA module 134 maintains the tail pointer 410 of the DFA instruction queue 400, and the core 120 software maintains the head pointer 412 of the DFA instruction queue 400. The distance between the tail pointer 410 and the head pointer 412 is equal to both the size of the DFA instruction queue 400 and the outstanding doorbell count. The size of the DFA instruction queue 400 is limited only by the available memory and the in-process doorbell counter, which is 20 bits for the DFA instruction queue 400.

図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 buffer pointer format 450. The next chunk buffer pointer is a 64-bit word and includes a 36-bit address (Addr) field 452. Addr field 452 selects a valid L2 / DRAM (130/108) byte location of the next chunk 400 containing the next DFA instruction 402. The Addr field 452 is a byte address, which is naturally aligned on a 128-byte cache block boundary by setting its least significant 7 bits to zero.

図5Aは、LLM118に格納されるDFAグラフ500の構造を示す。DFAグラフ500は、510a〜510nまでのN個のノードを含む。DFAグラフ500内のノード510はそれぞれ、256個の次のノードポインタ512の単なるアレイであり、この次のノードポインタのそれぞれは入力バイト値に固有である。各次のノードポインタ512は、入力バイトの次のノード/状態を直接指定する次のノードID514を含む。   FIG. 5A shows the structure of the DFA graph 500 stored in the LLM 118. The DFA graph 500 includes N nodes 510a to 510n. Each node 510 in the DFA graph 500 is simply an array of 256 next node pointers 512, each of which is unique to the input byte value. Each next node pointer 512 includes a next node ID 514 that directly specifies the next node / state of the input byte.

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 DFA module 134 supports either an 18-bit next node pointer storage format 516 or a 36-bit next node pointer storage format 518. For an 18-bit pointer, each node 510 requires 18 * 256 bits or 512 bytes of LLM 118 storage. Each next node pointer 516 is a 17-bit next node ID and a 1-bit parity bit. The parity is an even number (ie, P is an XOR (exclusive OR) of all bits in the 17-bit next node ID 514). For a 36-bit pointer, each node 510 requires 36 * 256 bits or approximately 1 kilobyte of LLM 118 storage. Thus, duplication increases the capacity requirements for storage. Each next node pointer 518 is a 20 bit next node ID, a 2 bit type value, a 7 bit SECDED ECC code, and an unused 7 bit set to zero. The DTE 370 automatically corrects all single bit errors using the SECDED ECC code in the 36 bit pointer and detects all double bit errors. The type value indicates the type of the next node, for example, 0 = normal, 1 = marked, 2 = terminal.

DTE370は、以下に示す3つの特別なノードポインタ条件をサポートする。
1.PERR − 次のノードポインタがエラーを含む。DTE370は、欠陥のあるLLM118の位置を表示する結果ワードを生成する。DTE370は、グラフ500の走査を停止する。
2.TERM − 次のノードは終端ノードであり、グラフの走査は停止すべきである。DTE370は、終端ノードへ走査したバイト、前のノードIDおよび次のノードIDを表示する結果ワードを生成する。DTE370は、グラフ500の走査を停止する。
3.MARKED − この遷移は、コア120のソフトウェアによる後の分析用にマーク付けされる。DTE370は、上記マークされたノードへ走査したバイト、前のノードIDおよび次のノードIDを表示する結果ワードを生成する。DTE370は、グラフ500の走査を続行する。
DTE 370 supports the following three special node pointer conditions:
1. PERR-the next node pointer contains an error. DTE 370 generates a result word that displays the location of the defective LLM 118. The DTE 370 stops scanning the graph 500.
2. TERM—The next node is a terminal node and the graph traversal should stop. The DTE 370 generates a result word that displays the scanned byte to the end node, the previous node ID, and the next node ID. The DTE 370 stops scanning the graph 500.
3. MARKED-This transition is marked for later analysis by the core 120 software. The DTE 370 generates a result word that displays the scanned byte to the marked node, the previous node ID, and the next node ID. DTE 370 continues scanning graph 500.

18ビットモードの場合、DTE370は、次のノードIDを比較することによって、特殊なTERMおよびMARKED条件を判断する。この場合、マーク付けされたノードに入る全ての遷移がマーク付けされる。36ビットモードの場合、DTE370は、特殊なTERMおよびMARKED条件を次のノードポインタ内のタイプフィールドから直接判断する。36ビットモードでは、個々のノードそのものではなく、個々の遷移にマーク付けすることができる。   For 18-bit mode, DTE 370 determines special TERM and MARKED conditions by comparing the next node ID. In this case, all transitions that enter the marked node are marked. For 36-bit mode, DTE 370 determines special TERM and MARKED conditions directly from the type field in the next node pointer. In 36-bit mode, individual transitions can be marked rather than individual nodes themselves.

図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 end node ID 502 is not backed up by being actually stored in the LLM 118. However, the normal node 504 and the marked node 506 are backed up by storage in the actual LLM 118. The DFA instruction 404 includes the number 503 of terminal nodes that are TSize (FIG. 8A) stored in IWORD3 (FIG. 8A) and the number of marked nodes 507 that are MSize (FIG. 8A) stored in IWORD3. including.

DTE370は、グラフ500を走査する間、例外的な条件が発生すると結果ワードを生成する。MARKED、TERMまたはPERRである次のノードポインタは、このような例外的条件である。例外的な条件としては、さらに、入力データの完了および結果スペースの消耗という2つがある。入力バイトに関するグラフの走査は複数の例外的条件をもたらすこともあるが、単一の入力バイトから生成できる結果ワードは多くても1つである。例えば、最後の入力バイトが入力データの完了条件に遭遇すると、結果ワードを生成する。最後の入力バイトもマーク付けされた次のノードに遭遇することがあるが、第2の結果ワードは生成されない。グラフの走査は、(優先順に)PERR、TERM、入力データの完了および結果スペースの消耗という例外条件が発生した時点で停止し、DTE370はその最も高い優先順位条件を報告する。例えば、図2のグラフを参照すると、次のノードはノード「c」に到達した時点の終端ノードであり、DTE370はグラフの走査を停止する。   The DTE 370 generates a result word when an exceptional condition occurs while scanning the graph 500. The next node pointer that is MARKED, TERM or PERR is such an exceptional condition. There are two more exceptional conditions: input data completion and result space exhaustion. While scanning the graph for input bytes may result in multiple exceptional conditions, at most one result word can be generated from a single input byte. For example, when the last input byte encounters a completion condition for input data, it generates a result word. The next node marked with the last input byte may also be encountered, but no second result word is generated. The graph scan stops (in order of preference) at the occurrence of exceptional conditions such as PERR, TERM, input data completion and result space exhaustion, and DTE 370 reports its highest priority condition. For example, referring to the graph of FIG. 2, the next node is the terminal node when node “c” is reached, and DTE 370 stops scanning the graph.

各DFA命令は、DTE370によって、処理されるデータをいかにL2/DRAMに格納するか(ダイレクトまたはギャザー)を指定できる。いずれの場合も、DFAモジュール134はL2/DRAM(130/108)からバイトを読み出す。   Each DFA instruction can specify by DTE 370 how data to be processed is stored in L2 / DRAM (direct or gathered). In either case, the DFA module 134 reads bytes from the L2 / DRAM (130/108).

図6は、DTE370によって処理されるデータを取得する例示的なダイレクトモード600を示す。DFA命令404は、開始位置およびバイト数を直接指定する。対応するDFA命令404を処理するDTE370は、L2/DRAM(130/108)から連続するバイトを読み出し、これらを処理する。   FIG. 6 shows an exemplary direct mode 600 for acquiring data processed by the DTE 370. The DFA instruction 404 directly specifies the start position and the number of bytes. The DTE 370 that processes the corresponding DFA instruction 404 reads consecutive bytes from the L2 / DRAM (130/108) and processes them.

図7Aは、DTE370によって処理されるデータを取得する例示的なギャザーモード700を示す。DFA命令404は、DFAギャザーポインタ710のリストの開始位置およびサイズを直接指定する。DFAギャザーポインタ710リストの各エントリは、DTE370が処理する開始位置およびバイト数を指定する。DTE370の全体入力バイトストリームは、DFAギャザーポインタ710リストの各エントリによって指定されるバイトの連結である。   FIG. 7A shows an exemplary gather mode 700 for acquiring data processed by the DTE 370. The DFA instruction 404 directly specifies the starting position and size of the list of DFA gather pointers 710. Each entry in the DFA gather pointer 710 list specifies the starting position and the number of bytes that the DTE 370 processes. The entire input byte stream of DTE 370 is a concatenation of bytes specified by each entry in the DFA gather pointer 710 list.

図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 mode 700, the total number of bytes is the sum of the length fields in all DFA gather pointers 710.

図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 instruction 404 provides the information needed by the DFA module 134 to (i) start the DTE 370, (ii) read the input data, and (iii) in the LLM 118 The graph 200 is scanned and (iv) the result is written. The DFA instruction 404 may include multiple instruction words, such as the exemplary DFA instruction format shown in FIG. 8A. Each DFA instruction 404 includes four independent words, 455 ', 455 ", 455" ", 455" "(collectively 455). Each of these words contains 64 bits and is represented by a total of 32 bytes in the level 2 cache memory 130 or DRAM 108. Preferably, each DFA instruction 404 is naturally aligned on a 32-byte boundary. The DFA instruction 404 is processed by the individual DTE 370 for which this instruction is scheduled. The DFA instruction 404 includes a field that identifies both the position of the input byte and the position of the result.

動作中、DFAモジュール134は、DFA命令待ち行列382が有効なDFA命令404を有していれば、レベル2キャッシュメモリ130またはDRAM108からDFA命令404および入力データを読み出し、結果を生成すると、その結果を書き込む(例えばバイト毎に)。また、DFAモジュール134は、終了後にPOW148(図1B)によってスケジューリングされるワーク待ち行列エントリを随時に送出でき、したがって、DFA命令404はワーク待ち行列ポインタのためのフィールドを含むこともできる。   In operation, the DFA module 134 reads the DFA instruction 404 and input data from the level 2 cache memory 130 or the DRAM 108 and generates a result if the DFA instruction queue 382 has a valid DFA instruction 404 and generates a result. Is written (for example, every byte). The DFA module 134 can also send work queue entries that are scheduled by the POW 148 (FIG. 1B) after termination at any time, so the DFA instruction 404 can also include a field for the work queue pointer.

さらに詳細には、第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 first word 455 ′ also provides additional information such as a duplicate field 462 that stores a duplicate value corresponding to the number of duplicates of the identified graph stored in the LLM 118. A type value 464 (18 or 36 bits) indicating the type of addressing used may also be provided. An exemplary 64-bit word also includes one or more reserved fields.

第2のDFA命令ワード455’’は、DFAモジュール134によって処理されるバイト数を特定する長さフィールド470と、処理されるパケットデータのレベル2キャッシュメモリ130またはDRAM108における位置を特定するアドレスフィールド474とを含む。   The second DFA instruction word 455 ″ includes a length field 470 that specifies the number of bytes processed by the DFA module 134 and an address field 474 that specifies the location of the processed packet data in the level 2 cache memory 130 or DRAM 108. Including.

第3のDFA命令ワード455’’’は、任意の結果が書き込まれるアドレス(例えば、レベル2キャッシュメモリ130またはDRAM108内のアドレス)を特定する結果アドレスフィールド482と、許容される最大結果数を示す値を格納する最大結果フィールド480とを含む。さらに、DFAモジュール134は、終了後に随意にワーク待ち行列エントリを送出できるため、DFA命令404は1つまたは複数のワーク待ち行列ポインタに対するワーク待ち行列処理(WQP)フィールド490を含む。   The third DFA instruction word 455 ′ ″ indicates a result address field 482 that identifies the address (eg, an address in the level 2 cache memory 130 or DRAM 108) where any result is written, and the maximum number of results allowed. And a maximum result field 480 for storing values. Further, since the DFA module 134 can optionally send a work queue entry after termination, the DFA instruction 404 includes a work queue processing (WQP) field 490 for one or more work queue pointers.

図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 result format 800 of the DFA instruction 404. The DFA result 800 has two or more 64-bit words in L2 / DRAM (130/108). Each word is naturally aligned in the L2 / DRAM (130/108). The DFA module 134 writes these words to the L2 / DRAM (130/108) during and after the processing of the DFA instruction 404. This structure is variable length and contains a DFA instruction 404 that hits a variable number of marked nodes, but the length of the result may be limited by the upper limit of the maximum result in the DFA instruction field.

先に述べたとおり、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). . DTE 370 generates a result word when an exceptional condition occurs while scanning the graph. At least one exceptional condition is a terminal node. When DTE 370 reaches the end node, this node indicates that the DFA graph has reached the end, and scanning by DTE 370 stops. Another example of an exceptional condition is a marked node. In contrast to the terminal node, the scanning of the graph does not necessarily stop when the DTE 370 reaches the marked node. However, the output word is written with results identifying the particular marked node for later analysis. Thus, the marked nodes can be used to identify when the corresponding node in the graph is scanned.

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が設定されているときは、全体結果が存在する。   WORD 0 of the DFA result 800 may be written more than once by the DFA module 134. Only the last write to WORD0 contains a valid DFA result 800. The DFA module 134 can write WORD0 multiple times, but bit 16 can only be set for the last write. That is, bit 16 is not set by DFA module 134 until DFA module 134 completes DFA instruction 404. By writing zero to WORD0 result bit 16 before passing DFA instruction 404 to DFA module 134, the software polls WORD0 bit 16 to determine when DFA module 134 has completed DFA instruction 404. be able to. When WORD0 of the DFA result is set, the entire result exists.

図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, nodes 4 and 5 (eg, node 4 for “d” and node 5 for “e”), one node for each string For 4 characters. Since each character string has the same first three characters, the nodes 4 and 5 are connected to the node 3 as shown in the figure. Preferably, all occurrences of any string are identified on a single “path” through the input string.

文字列「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 node 3 to node 4 and represent the presence and position of the string “abcd” in the input string (ie, DTE byte = 5, leading = 3, next = 4 and DTE Byte = 17, predecessor = 3, next = 4). The center marked node indicates the transition from node 3 to node 5 and represents the presence of the string “abce” in the input string (ie DTE byte = 13, predecessor = 3, next = 5). . Nodes 4 and 5 are marked using an 18-bit pointer, and the arc from node 3 to nodes 4 and 5 is marked using a 36-bit pointer. Thus, by using DFA marking technology in combination with the DFA thread engine, the presence and position of multiple different strings within the same input string can be found in a single pass through the input string. .

本出願は、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.

本発明の原理によるネットワークサービスプロセッサを含むネットワークサービス処理システムを示すブロック図である。1 is a block diagram illustrating a network service processing system including a network service processor according to the principles of the present invention. 図1Aに示すネットワークサービスプロセッサを示すブロック図である。FIG. 1B is a block diagram illustrating the network service processor shown in FIG. 1A. 例示的なDFAグラフを示す概略図である。FIG. 3 is a schematic diagram illustrating an exemplary DFA graph. 例示的なDFAグラフを示す概略図である。FIG. 3 is a schematic diagram illustrating an exemplary DFA graph. 本発明の原理による縮小命令セットコンピュータ(RISC)プロセッサを示すブロック図である。1 is a block diagram illustrating a reduced instruction set computer (RISC) processor in accordance with the principles of the present invention. FIG. 図3AのDFAモジュールを示すブロック図である。3B is a block diagram illustrating the DFA module of FIG. 3A. FIG. DFA命令待ち行列の構造体を示す図である。FIG. 6 illustrates a structure of a DFA instruction queue. 次のチャンクバッファポインタの命令フォーマットを示す図である。It is a figure which shows the command format of the next chunk buffer pointer. 典型的なDFAグラフの別の実施形態を示す図である。FIG. 6 illustrates another embodiment of a typical DFA graph. 図5AのDFAグラフの異なる可能なノードIDを示す図である。FIG. 5B shows different possible node IDs of the DFA graph of FIG. 5A. DTEによって処理されるデータを構成するための直接モードの一例を示す図であえる。FIG. 6 is a diagram illustrating an example of a direct mode for configuring data processed by a DTE. DTEによって処理されるデータを構成するためのギャザーモードの一例を示す図である。It is a figure which shows an example of the gather mode for comprising the data processed by DTE. DFAギャザーポインタの命令フォーマットを示す図である。It is a figure which shows the command format of a DFA gather pointer. DFA命令フォーマットを示す図である。It is a figure which shows a DFA instruction format. DFA結果フォーマットを示す図である。It is a figure which shows a DFA result format.

符号の説明Explanation of symbols

110 プロセッサ
120 プロセッサコア
400 DFAモジュール
110 processor 120 processor core 400 DFA module

Claims (18)

少なくとも1つのプロセッサコアと、
前記少なくとも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.
請求項1において、前記DFAモジュールが、
前記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.
請求項2において、さらに、命令待ち行列を備え、前記少なくとも1つのプロセッサコアが前記DFAモジュールへのDFA命令をこの命令待ち行列に送出するネットワークプロセッサ。   The network processor according to claim 2, further comprising an instruction queue, wherein the at least one processor core sends a DFA instruction to the DFA module to the instruction queue. 請求項3において、前記DFAモジュールが前記命令待ち行列を指すポインタを保持するネットワークプロセッサ。   4. The network processor according to claim 3, wherein the DFA module maintains a pointer to the instruction queue. 請求項3において、前記DFA命令が、キャッシュコヒーレントメモリに格納されたパケットデータを使用のために指示し、ノンキャッシュメモリに格納された少なくとも1つのDFAグラフを走査のために指示するネットワークプロセッサ。   The network processor according to claim 3, wherein the DFA instruction directs packet data stored in cache coherent memory for use and directs at least one DFA graph stored in non-cache memory for scanning. 請求項3において、前記DFAモジュールが、前記少なくとも1つのDFAスレッドエンジンに、DFA命令をスケジューリングするネットワークプロセッサ。   4. The network processor according to claim 3, wherein the DFA module schedules DFA instructions to the at least one DFA thread engine. 請求項6において、前記少なくとも1つのDFAスレッドエンジンが、
前記キャッシュコヒーレントメモリに格納されているパケットデータをフェッチし、
前記キャッシュコヒーレントメモリから受信されたパケットデータのバイト毎にノンキャッシュメモリロード命令を発行して、前記ノンキャッシュメモリに格納された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.
請求項7において、さらに、結果ワードを備え、この結果ワードに前記中間および最終結果が書き込まれるネットワークプロセッサ。   8. The network processor according to claim 7, further comprising a result word into which the intermediate and final results are written. 請求項8において、前記結果ワードが命令完了フィールドを含み、このフィールドが設定されている場合にDFA命令の完了をこのフィールドが表示するネットワークプロセッサ。   9. The network processor of claim 8, wherein the result word includes an instruction completion field, and this field indicates completion of a DFA instruction if this field is set. 請求項1において、前記DFAモジュールが、
共通の環境設定で前記少なくとも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グラフのノードタイプを特定するノードタイプ識別子を備えたネットワークプロセッサ。   The network processor according to claim 1, further comprising a node type identifier that identifies a node type of the DFA graph. 請求項11において、前記ノードタイプ識別子はマーク付けされたノードであり、前記マーク付けされたノードの走査はグラフの走査を妨害しないネットワークプロセッサ。   12. The network processor of claim 11, wherein the node type identifier is a marked node, and scanning of the marked node does not interfere with graph scanning. 入力パケットデータを用いてDFAグラフを走査する方法であって、
少なくとも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.
請求項13において、少なくとも1つのプロセッサコアがDFAモジュールにDFA命令を送出するDFAグラフ走査方法。   14. The DFA graph scanning method according to claim 13, wherein at least one processor core sends a DFA instruction to the DFA module. 請求項14において、DFAモジュールが、前記少なくとも1つのDFAスレッドエンジンに、DFA命令をスケジューリングするDFAグラフ走査方法。   15. The DFA graph scanning method according to claim 14, wherein a DFA module schedules a DFA instruction to the at least one DFA thread engine. 請求項15において、前記少なくとも1つのDFAスレッドエンジンが、
前記キャッシュコヒーレントメモリに格納されているパケットデータをフェッチし、
前記キャッシュコヒーレントメモリからフェッチされたパケットデータのバイト毎に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.
請求項16において、さらに、前記DFAグラフの各ノードに対する個々のノードタイプを特定するノードタイプ識別子を提供する工程を備え、前記中間および最終結果は前記ノードタイプ識別子から判断されるDFAグラフ走査方法。   17. The DFA graph scanning method of claim 16, further comprising providing a node type identifier that identifies an individual node type for each node of the DFA graph, wherein the intermediate and final results are determined from the node type identifier. ノンキャッシュコヒーレントメモリに少なくとも1つのDFAグラフを格納する手段と、
キャッシュコヒーレントメモリに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.
JP2007531386A 2004-09-10 2005-09-08 Deterministic finite automaton (DFA) processing Withdrawn JP2008512797A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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