IP Library Granted Patent US 10,645,187
Granted Patent B2
US 10,645,187 · App. 16/035,416 · Granted May 5, 2020

ARC caching for determininstic finite automata of regular expression accelerator

Inventors: Rajan Goyal (Saratoga, CA); Yi-Hua Edward Yang (San Jose, CA); Satyanarayana Lakshmipathi Billa (Sunnyvale, CA); Eric Scot Swartzendruber (Austin, TX)
Assignee: Fungible, Inc.
H04L67/2842H04L43/045H04L67/1097
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 10,645,187
App. No.
16/035,416
Granted
May 5, 2020
Kind
B2
Abstract

A DFA engine is described that determines whether a current symbol of a payload matches a label of any effective arcs or negative arcs associated with a current node of a DFA graph that are stored in a cache. Responsive to determining that the current symbol does not match a label of any effective or negative arcs associated with the current node of the DFA graph, the DFA engine determines whether the current symbol matches a label of any arc associated with the current node of the DFA graph that is stored in a memory. Responsive to determining that the current symbol matches a label of a particular arc associated with the current node of the DFA graph that is stored in the memory, the DFA engine stores the particular arc in the cache as a new effective arc and uses the particular arc to evaluate the current symbol.

Claims (76)

1. A processing device comprising:

a memory configured to store at least a portion of a deterministic finite automata (DFA) graph;

a cache configured to store at least one of: one or more effective arcs or one or more negative arcs; and

a DFA engine implemented in circuitry comprising a processing unit configured to evaluate a payload by at least:

determining whether a current symbol of the payload matches a label of any of the one or more effective arcs or the one or more negative arcs associated with a current node of the DFA graph that are stored in the cache;

responsive to determining that the current symbol does not match a label of any one of the one or more effective arcs or any one of the one or more negative arcs associated with the current node of the DFA graph, determining whether the current symbol matches a label of any arc associated with the current node of the DFA graph that is stored in the memory; and

responsive to determining that the current symbol matches a label of a particular arc associated with the current node of the DFA graph that is stored in the memory, storing the particular arc in the cache as a new effective arc of the one or more effective arcs; and

using the particular arc to evaluate the payload.

2. The processing device of claim 1 , wherein the processing unit is further configured to evaluate the payload by at least:

responsive to determining that the current symbol matches the label of a particular effective arc from any of the one or more effective arcs associated with the current node of the DFA graph that are stored in the cache, use the particular effective arc to evaluate the current symbol of the payload.

3. The processing device of claim 1 , wherein the processing unit is further configured to evaluate the payload by at least:

responsive to determining that the current symbol does not match the label of any arc associated with the current node of the DFA graph that is stored in the memory, storing a new negative arc in the cache with the one or more negative arcs, wherein the new negative arc indicates that the current symbol does not match the label of any arc associated with the current node of the DFA graph; and

evaluating the current symbol using a reference node associated with the DFA graph.

4. The processing device of claim 1 , wherein the processing unit is further configured to:

responsive to determining that the current symbol matches the label of a particular arc from any of the one or more negative arcs, evaluate the current symbol using a reference node associated with the DFA graph.

5. The processing device of claim 1 , wherein the processing unit is further configured to:

responsive to determining that a different current symbol of the payload matches the label of the new effective arc stored in the cache, using the new effective arc to evaluate the different current symbol.

6. The processing device of claim 1 , wherein the processing unit is further configured to evaluate the payload by at least:

responsive to determining that the current symbol does not match the label of any arc associated with the current node of the DFA graph that is stored in the memory, determining whether the current symbol matches a label of any arc associated with the reference node of the DFA graph; and

responsive to determining that the current symbol matches a label of a particular arc associated with the reference node of the DFA graph, storing the particular arc in the cache as a new effective arc of the one or more effective arcs associated with the current node of the DFA graph; and

using the particular arc to evaluate the payload.

7. The processing device of claim 6 , wherein the processing unit is further configured to evaluate the payload by at least:

responsive to determining that the current symbol does not match the label of any arc associated with the reference node of the DFA graph, forcing an implicit match of current symbol with an imaginary arc pointing back to the reference node of the DFA graph; and

storing the imaginary arc in the cache as a new effective arc of the one or more effective arcs associated with the current node of the DFA graph; and

using the imaginary arc to evaluate the payload.

8. A method, performed by a processing unit of a deterministic finite automata (DFA) engine of a processing device, for evaluating payloads, the method comprising:

determining whether a current symbol of a payload matches a label of any of one or more effective arcs or one or more negative arcs associated with a current node of a DFA graph that are stored in a cache of the processing device;

responsive to determining that the current symbol does not match a label of any one of the one or more effective arcs or any one of the one or more negative arcs associated with the current node of the DFA graph, determining whether the current symbol matches a label of any arc associated with the current node of the DFA graph that is stored in a memory of the processing device; and

responsive to determining that the current symbol matches a label of a particular arc associated with the current node of the DFA graph that is stored in the memory, storing the particular arc in the cache as a new effective arc of the one or more effective arcs; and

using the particular arc to evaluate the payload.

9. The method of claim 8 , wherein evaluating the payload further comprises:

responsive to determining that the current symbol matches the label of a particular effective arc from any one of the one or more effective arcs associated with the current node of the DFA graph that are stored in the cache, using the particular effective arc to evaluate the current symbol of the payload.

10. The method of claim 8 , wherein evaluating the payload further comprises:

responsive to determining that the current symbol does not match the label of any arc associated with the current node of the DFA graph that is stored in the memory, storing a new negative arc in the cache with the one or more negative arcs, wherein the new negative arc indicates that the current symbol does not match the label of any arc associated with the current node of the DFA graph; and

evaluating the current symbol using a reference node associated with the DFA graph.

11. The method of claim 8 , further comprising:

responsive to determining that the current symbol matches the label of a particular arc from any of the one or more negative arcs, evaluating the current symbol using a reference node associated with the DFA graph.

12. The method of claim 8 , further comprising:

responsive to determining that a different current symbol of the payload matches the label of the new effective arc stored in the cache, using the new effective arc to evaluate the different current symbol.

13. A processing device comprising:

a memory configured to store:

at least a portion of a deterministic finite automata (DFA) graph, the DFA graph comprising a plurality of nodes, each of the nodes having zero or more arcs with each of the zero or more arcs including a respective label and pointing to a respective subsequent node of the plurality of nodes, at least one of the plurality of nodes comprising a match node;

one or more arcs of a reference node representation for the at least the portion of the DFA graph; and

zero or more arcs of a respective delta node representation for each node of the at least the portion of the DFA graph other than the reference node, the zero or more arcs of each respective delta node representation defining arcs that are not defined by the reference node representation; and

a DFA engine implemented in circuitry comprising a processing unit configured to evaluate a payload by at least:

accessing the one or more arcs of reference node representation and the zero or more arcs of the respective delta node representation that is associated with a current node to determine whether a symbol of the payload matches at least one of:

a label of any of the one or more arcs of the reference node representation; and

a label of any of the zero or more arcs of the respective delta node representation that is associated with the current node; and

responsive to determining that the symbol of the payload matches a label of a particular arc of the one or more arcs of the reference node representation or the zero or more arcs of the respective delta node representation that is associated with the current node, using the particular arc to evaluate the payload.

14. The processing device of claim 13 , wherein the processing unit is further configured to evaluate the payload by at least:

responsive to determining that the symbol of the payload does not match the label of any of the one or more arcs of the reference node representation or the zero or more arcs of the respective delta node representation that is associated with the current node, processing the symbol using an imaginary arc for the symbol, the imaginary arc pointing back to the reference node.

15. The processing device of claim 13 , wherein the processing unit is further configured to evaluate the payload by accessing the memory in response to identifying the one or more arcs of the reference node representation that are stored in a cache of the memory.

16. The processing device of claim 15 , wherein the processing unit is further configured to evaluate the payload by at least:

responsive to determining that the symbol of the payload matches a label of a particular arc of the one or more arcs of the reference node representation but does not match any of the zero or more arcs of the respective delta node representation that is associated with the current node, processing the symbol using the particular arc of the reference node.

17. The processing device of claim 15 , wherein the processing unit is further configured to evaluate the payload by at least:

responsive to determining that the symbol of the payload matches a label of a particular arc of the zero or more arcs of the respective delta node representation, processing the symbol using the particular arc of the respective delta node.

18. The processing device of claim 15 , wherein the processing unit is further configured to evaluate the payload by refraining from accessing the memory in response to determining that the one or more arcs of the reference node representation are not stored in a cache of the memory.

19. The processing device of claim 18 , wherein the processing unit is further configured to evaluate the payload by at least:

responsive to determining that the symbol of the payload matches a label of a particular arc of the zero or more arcs of the respective delta node representation that is associated with the current node, processing the symbol using the particular arc of the respective delta node.

20. The processing device of claim 18 , wherein the processing unit is further configured to evaluate the payload by at least:

responsive to determining that the symbol of the payload does not match any of the zero or more arcs of the respective delta node representation, processing the symbol using the reference node.

21. The processing device of claim 13 , wherein:

the memory comprises multiple input ports and multiple output ports for enabling simultaneous access to the one or more arcs of the reference node representation and the zero or more arcs of the respective delta node representation that is associated with the current node;

the memory is configured to:

output, via a first output port from the multiple output ports, a first result determined based on a first input to a first input port from the multiple input ports; and

output, via a second output port from the multiple output ports, a second result determined based on a second input to a second input port from the multiple input ports; and

the processing unit is configured to:

determine, based on the first result, whether the symbol of the payload matches the label of any of the one or more arcs of the reference node representation; and

determine, based on the second result, whether the symbol of the payload matches a label of any of the zero or more arcs of the respective delta node representation that is associated with the current node.

22. The processing device of claim 13 , wherein:

the memory comprises at least one first memory for enabling access to the one or more arcs of the reference node representation and at least one second memory for enabling access to the zero or more arcs of the respective delta node representation that is associated with the current node, wherein the at least one first memory and the at least one second are configured to enable the processing unit to simultaneous access the one or more arcs of the reference node representation stored in the at least one first memory and the zero or more arcs of the respective delta node representation that is associated with the current node stored in the at least one second memory.

23. The processing device of claim 13 , wherein:

the memory further comprises a cache configured to store at least one of: one or more effective arcs or one or more negative arcs; and

the processing unit is further configured to evaluate the payload by at least:

prior to speculatively accessing the one or more arcs of reference node representation and the zero or more arcs of the respective delta node representation that is associated with the current node, determining whether the symbol of the payload matches a label of any of the one or more effective arcs or the one or more negative arcs stored in the cache that are associated with the current node;

responsive to determining that the symbol does not match a label of any of the one or more effective arcs or the one or more negative arcs stored in the cache that are associated with the current node, storing the particular arc in the cache as a new effective arc of the one or more effective arcs in response to determining that the symbol of the payload matches the label of the particular arc of the one or more arcs of the reference node representation or the zero or more arcs of the respective delta node representation that is associated with the current node.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2023
From: FUNGIBLE, INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064434/0430 →
RELEASE OF SECURITY INTEREST Recorded Jan 9, 2023
From: HERCULES CAPITAL, INC., AS AGENT
To: FUNGIBLE, INC.
Reel/Frame 062335/0803 →
RELEASE OF SECURITY INTEREST Recorded Jan 5, 2023
From: SILICON VALLEY BANK
To: FUNGIBLE, INC.
Reel/Frame 062308/0191 →
SECURITY INTEREST Recorded Dec 16, 2021
From: FUNGIBLE, INC.
To: SILICON VALLEY BANK
Reel/Frame 058523/0960 →
SECURITY INTEREST Recorded Dec 16, 2021
From: FUNGIBLE, INC.
To: HERCULES CAPITAL, INC., AS AGENT
Reel/Frame 058533/0429 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2019
From: GOYAL, RAJAN; BILLA, SATYANARAYANA LAKSHMIPATHI; SWARTZENDRUBER, ERIC SCOT
To: FUNGIBLE, INC.
Reel/Frame 048362/0400 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 7, 2018
From: YANG, YI-HUA EDWARD
To: FUNGIBLE, INC.
Reel/Frame 046573/0622 →
Continuity (1)
Related Publication 20200021664A1 · Jan 16, 2020
Cited By (7)
US 12,212,495 US 12,231,353 US 12,261,926 US 12,278,763 US 12,294,470 US 12,341,687 US 12,717,845