IP Library Granted Patent US 8,392,590
Granted Patent B2
US 8,392,590 · App. 11/221,408 · Granted Mar 5, 2013

Deterministic finite automata (DFA) processing

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,392,590
App. No.
11/221,408
Granted
Mar 5, 2013
Kind
B2
Abstract

A processor for traversing deterministic finite automata (DFA) graphs with incoming packet data in real-time. The processor includes at least one processor core and a DFA module operating asynchronous to the at least one processor core for traversing at least one DFA graph stored in a non-cache memory with packet data stored in a cache-coherent memory.

Claims (31)

1. A network processor, comprising:

at least one processor core;

a deterministic finite automata (DFA) module operating asynchronously to the at least one processor core, the DFA module traversing a plurality of nodes of at least one DFA graph stored in a non-cache memory that is: i) external to the network processor and ii) sized to accommodate the at least one DFA graph having a number of nodes for searching for multiple patterns in one traversal of the at least one DFA graph, the DFA module including a plurality of DFA thread engines associated in a shared configuration with the at least one processor core;

and responsive to instructions for traversing the plurality of nodes of the at least one DFA from the at least one processor core, with packet data stored in a cache-coherent memory, each of the plurality of DFA thread engines is configured to:

traverse at least one DFA graph independent of others of the plurality of DFA thread engines traversing DFA graphs including the at least one DFA graph,

fetch the packet data stored in the cache-coherent memory,

in response to each byte of packet data fetched from the cache-coherent memory, issue an instruction to access and load a next node of the at least one DFA graph from the non-cache memory to traverse the next node of the at least one DFA graph, and

write intermediate and final results of traversing the at least one DFA graph to the cache-coherent memory.

2. The network processor of claim 1 , wherein the DFA module includes:

a non-cache memory controller adapted to access the memory storing the at least one DFA graph;

at least one of the plurality of DFA thread engines in communication with the non-cache memory controller; and

instruction input logic adapted to schedule instructions from the at least one processor core to the at least one of the plurality of DFA thread engine engines.

3. The network processor of claim 2 , further comprising an instruction queue into which the at least one processor core submits DFA instructions directed to the DFA module.

4. The network processor of claim 3 , wherein the DFA module maintains a pointer to the instruction queue.

5. The network processor of claim 3 , wherein the DFA instructions indicate the packet data stored in the cache-coherent memory to use and the at least one DFA graph stored in the non-cache memory to traverse.

6. The network processor of claim 3 , wherein the DFA module schedules the DFA instruction to the at least one of the plurality of DFA thread engine engines.

7. The network processor of claim 1 , further comprising a result word into which the intermediate and final results are written.

8. The network processor of claim 7 , wherein the result word includes an instruction-completed field indicative of a completed DFA instruction when set.

9. The network processor of claim 1 , further comprising a node-type identifier for identifying types of nodes of the at least one DFA graph.

10. The network processor of claim 9 , wherein the node-type identifier is a marked node, traversal of the marked node unhindering traversal of the graph for identifying a particular node for analysis.

11. A method of traversing DFA graphs with incoming packet data, comprising:

storing at least one DFA graph, having a number of nodes for searching for multiple patterns in one traversal of the at least one DFA graph, in a non-cache coherent memory that is: i) external to a processor and ii) sized to accommodate the at least one DFA graph;

storing in a cache-coherent memory, a DFA instruction for traversing nodes of the at least one DFA, the DFA instruction indicating packet data stored in the cache-coherent memory to use and the at least one DFA graph stored in the non-cache memory to traverse;

traversing the at least one DFA graph by: i) fetching the packet data stored in the cache-coherent memory, and ii) in response to each byte of packet data fetched from the cache-coherent memory, issuing an instruction to access and load a next node of the at least one DFA graph from the non-cache memory to traverse the next node of the at least one DFA graph; and

writing intermediate and final results of the traversing to the cache-coherent memory, the at least one DFA graph being traversed by a DFA thread engine that is independent of other DFA thread engines traversing DFA graphs, including the at least one DFA graph.

12. The method of claim 11 , further comprising providing a node-type identifier for identifying a respective node type for each of the nodes of the DFA graph, wherein the intermediate and final results are determined from the node-type identifiers.

13. A network processor, comprising:

means for storing at least one DFA graph in a non-cache coherent memory that is: i) external to the network processor and ii) sized to accommodate the at least one DFA graph having a number of nodes for searching for multiple patterns in one traversal of the at least one DFA graph;

means for storing in a cache-coherent memory, a DFA instruction for traversing the plurality of nodes of the at least one DFA, the DFA instruction indicating packet data stored in the cache-coherent memory to use and the at least one DFA graph stored in the non-cache memory to traverse;

means for traversing the at least one DFA graph by: i) fetching the packet data stored in the cache-coherent memory, and ii) in response to each byte of packet data fetched from the cache-coherent memory, issuing an instruction to access and load a next node of the at least one DFA graph from the non-cache memory to traverse the next node of the at least one DFA graph, the means for traversing being independent of other means for traversing DFA graphs including the at least one DFA graph, the means for traversing searches a data packet different for data packets being searched by the other means for traversing;

means for writing intermediate and final results of the traversing to the cache-coherent memory.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CERTIFICATE OF CONVERSION AND CERTIFICATE OF FORMATION Recorded Oct 2, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047185/0422 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
SECURITY AGREEMENT Recorded Aug 17, 2016
From: CAVIUM, INC.; CAVIUM NETWORKS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039715/0449 →