IP Library Granted Patent US 10,635,419
Granted Patent B2
US 10,635,419 · App. 16/035,444 · Granted Apr 28, 2020

Incremental compilation of finite automata for a regular expression accelerator

Inventors: Yi-Hua Edward Yang (San Jose, CA); Satyanarayana Lakshmipathi Billa (Sunnyvale, CA); Rajan Goyal (Saratoga, CA); Abhishek Kumar Dikshit (Fremont, CA)
Assignee: Fungible, Inc.
G06F8/4435G06F9/4498G06F16/9024
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,635,419
App. No.
16/035,444
Granted
Apr 28, 2020
Kind
B2
Abstract

A compiler/loader unit for a RegEx accelerator is described that receives a first set of regular expression rules for implementing the RegEx accelerator, generates, based on the first set of regular expression rules, an initial deterministic finite automata (DFA) graph, and generates, an initial memory map for allocating the initial DFA graph to a memory of the RegEx accelerator. The compiler/loader unit receives receive, a second set of one or more new or modified regular expression rules for implementing the RegEx accelerator and in response performs incremental compilation of the second set of regular expressions. The compiler/loader unit generates, based on the second set of one or more regular expression rules, a supplemental DFA graph and reconciles the initial DFA graph with the supplemental DFA graph to generate an updated memory map for allocating the initial DFA graph and the supplemental DFA graph to the memory of the RegEx accelerator.

Claims (56)

1. A method comprising:

receiving, at a compiler/loader unit executing at a computing device, a first set of one or more regular expression rules for implementing a RegEx accelerator;

generating, by the compiler/loader unit, based on the first set of regular expression rules, an initial deterministic finite automata (DFA) graph;

generating, by the compiler/loader unit, an initial memory map for allocating the initial DFA graph to a memory of the RegEx accelerator;

receiving, at the compiler/loader unit, a second set of one or more regular expression rules for implementing the RegEx accelerator, the second set of one or more regular expression rules being different than the first set of one or more regular expression rules;

generating, by the compiler/loader unit, based on the second set of one or more regular expression rules, a supplemental DFA graph; and

reconciling, by the compiler/loader unit, the initial DFA graph with the supplemental DFA graph to generate an updated memory map for allocating the initial DFA graph and the supplemental DFA graph to the memory of the RegEx accelerator.

2. The method of claim 1 , further comprising:

outputting, by the compiler/loader unit, for use by the RegEx accelerator, the initial memory map.

3. The method of claim 2 , further comprising:

outputting, by the compiler/loader unit, for use by the RegEx accelerator, and to replace the initial memory map, the updated memory map.

4. The method of claim 3 , wherein the updated memory map is generated using an alternate operation if an amount of overlap between the supplemental DFA graph and the initial DFA graph is below a threshold amount, wherein the amount of overlap is determined by the compiler/loader unit based on a quantity of redundant groups of finite automata between the initial DFA graph and the supplemental DFA graph.

5. The method of claim 4 , wherein the alternate operation comprises generating the updated memory map directly from the initial memory map by adding any unique groups of finite automata from the supplemental DFA graph to the initial memory map to enable direct generation of the updated memory map, wherein the compiler/loader unit maintains in the initial DFA graph additional information about the initial memory map including which of the unique groups of finite automata from the supplemental DFA graph that have been added to the initial memory map.

6. The method of claim 1 , wherein the updated memory map allocates the initial DFA graph and the supplemental DFA graph to one or more of: an external memory of the RegEx accelerator or a buffer memory of the RegEx accelerator.

7. The method of claim 1 , wherein reconciling the initial DFA graph with the supplemental DFA graph to generate the updated memory map for allocating the initial DFA graph and the supplemental DFA graph to the memory of the RegEx accelerator comprises:

decomposing the initial DFA graph into one or more first groups of finite automata;

decomposing the supplemental DFA graph into one or more second groups of finite automata; and

generating the updated memory map by removing any redundant groups of finite automata that are present in both the one or more first groups of finite automata and the one or more second groups of finite automata.

8. The method of claim 7 , wherein generating the updated memory map comprises:

eliminating, by the compiler/loader unit, any redundant groups of finite automata that are present in both the one or more first groups of finite automata and the one or more second groups of finite automata.

9. The method of claim 7 , wherein each of the groups in the one or more first groups of finite automata is equally sized.

10. The method of claim 9 , wherein each of the groups in the one or more second groups of finite automata is equally sized to have a same quantity of finite automata as each of the groups in the one or more first groups of finite automata.

11. The method of claim 7 , wherein the initial DFA graph is decomposed into the one or more first groups of finite automata concurrently with decomposing the supplemental DFA graph into the one or more second groups of finite automata.

12. The method of claim 7 , wherein generating the updated memory map by removing any redundant groups of finite automata that are present in both the one or more first groups of finite automata and the one or more second groups of finite automata comprises maintaining a non-deterministic finite automata (NFA) graph that represents a combination of the initial DFA graph and the supplemental DFA graph.

13. The method of claim 7 , wherein reconciling the initial DFA graph with the supplemental DFA graph to generate the updated memory map for allocating the initial DFA graph and the supplemental DFA graph to the memory of the RegEx accelerator comprises at least one of:

adding a definition of a new finite automata to the memory map;

modifying a definition of a previous finite automata; or

deleting the previous finite automata.

14. A computing device comprising:

at least one processor configured to execute a compiler/loader unit that is configured to:

receive a first set of one or more regular expression rules for implementing a RegEx accelerator;

generate, based on the first set of regular expression rules, an initial deterministic finite automata (DFA) graph;

generate, an initial memory map for allocating the initial DFA graph to a memory of the RegEx accelerator;

receive, a second set of one or more regular expression rules for implementing the RegEx accelerator, the second set of one or more regular expression rules being different than the first set of one or more regular expression rules;

generate, based on the second set of one or more regular expression rules, a supplemental DFA graph; and

reconcile the initial DFA graph with the supplemental DFA graph to generate an updated memory map for allocating the initial DFA graph and the supplemental DFA graph to the memory of the RegEx accelerator.

15. The computing device of claim 14 , wherein the updated memory map allocates the initial DFA graph and the supplemental DFA graph to one or more of: an external memory of the RegEx accelerator or a buffer memory of the RegEx accelerator.

16. The computing device of claim 14 , wherein the compiler/loader unit is configured to reconcile the initial DFA graph with the supplemental DFA graph to generate the updated memory map for allocating the initial DFA graph and the supplemental DFA graph to the memory of the RegEx accelerator by at least:

decomposing the initial DFA graph into one or more first groups of finite automata while concurrently decomposing the supplemental DFA graph into one or more second groups of finite automata; and

generating the updated memory map by removing any redundant groups of finite automata that are present in both the one or more first groups of finite automata and the one or more second groups of finite automata.

17. The computing device of claim 14 , wherein the compiler/loader unit is configured to generate the updated memory map by at least:

eliminating any redundant groups of finite automata that are present in both the one or more first groups of finite automata and the one or more second groups of finite automata.

18. The computing device of claim 17 , wherein each of the groups in the one or more first groups of finite automata is equally sized.

19. A computer-readable storage medium comprising instructions that, when executed, cause at least one processor to execute a compiler/loader unit configure to:

receive a first set of one or more regular expression rules for implementing a RegEx accelerator;

generate, based on the first set of regular expression rules, an initial deterministic finite automata (DFA) graph;

generate, an initial memory map for allocating the initial DFA graph to a memory of the RegEx accelerator;

receive, a second set of one or more regular expression rules for implementing the RegEx accelerator, the second set of one or more regular expression rules being different than the first set of one or more regular expression rules;

generate, based on the second set of one or more regular expression rules, a supplemental DFA graph; and

reconcile the initial DFA graph with the supplemental DFA graph to generate an updated memory map for allocating the initial DFA graph and the supplemental DFA graph to the memory of the RegEx accelerator.

20. The computer-readable storage medium of claim 19 , wherein the updated memory map allocates the initial DFA graph and the supplemental DFA graph to one or more of: an external memory of the RegEx accelerator or a buffer memory of the RegEx accelerator.

21. The computer-readable storage medium of claim 19 , wherein the compiler/loader unit is configured to reconcile the initial DFA graph with the supplemental DFA graph to generate the updated memory map for allocating the initial DFA graph and the supplemental DFA graph to the memory of the RegEx accelerator by at least:

decomposing the initial DFA graph into one or more first groups of finite automata while concurrently decomposing the supplemental DFA graph into one or more second groups of finite automata; and

generating the updated memory map by removing any redundant groups of finite automata that are present in both the one or more first groups of finite automata and the one or more second groups of finite automata.

22. The computer-readable storage medium of claim 19 , wherein the compiler/loader unit is configured to generate the updated memory map by at least:

eliminating any redundant groups of finite automata that are present in both the one or more first groups of finite automata and the one or more second groups of finite automata.

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 Aug 8, 2018
From: YANG, YI-HUA EDWARD; DIKSHIT, ABHISHEK KUMAR
To: FUNGIBLE, INC.
Reel/Frame 046587/0960 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2018
From: BILLA, SATYANARAYANA LAKSHMIPATHI; GOYAL, RAJAN
To: FUNGIBLE, INC.
Reel/Frame 046348/0354 →
Continuity (1)
Related Publication 20200019391A1 · Jan 16, 2020