Incremental DFA Compilation for RegEx Accelerator Memory

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

General-purpose processors are inefficient in handling high-capacity network and storage workloads, particularly in processing packet streams due to their design limitations.

Innovation Solution

A highly programmable data processing unit with specialized hardware-based accelerators, such as a RegEx accelerator, is used to offload tasks like regular expression evaluation, utilizing incremental compilation techniques to efficiently update and combine deterministic finite automata graphs for improved performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If general-purpose processors are used to process packet streams, then device versatility is maintained, but processing speed and efficiency deteriorate

Engineering Contradiction:
Improvepacket processing speedVSAvoidprocessor design complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system segments processing tasks by separating general-purpose packet handling from specialized regular expression matching. The RegEx accelerator operates as an independent hardware module that offloads specific pattern-matching workloads from the main processor, allowing each component to be optimized for its specific function while maintaining overall system versatility.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The RegEx accelerator acts as an intermediary hardware component between the processor and packet stream data. It receives packet data from the processor, performs specialized regular expression evaluation in hardware, and returns results to the processor, thereby improving overall processing speed without requiring the main processor to be redesigned for high-speed packet handling.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If entire DFA graphs are recompiled when rules are added or modified, then evaluation accuracy is maintained, but compilation time increases

Engineering Contradiction:
Improveregular expression evaluation accuracyVSAvoidcompilation time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The DFA graph is segmented into multiple independent sub-graphs, each corresponding to a specific regular expression rule. When a rule is added or modified, only the corresponding sub-graph needs to be recompiled and updated in the DFA cache, rather than recompiling the entire DFA graph. This segmentation maintains evaluation accuracy while dramatically reducing compilation time for rule updates.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system pre-allocates and pre-structures the DFA graph as a collection of independent sub-graphs during initial compilation, organizing them in a way that facilitates selective updates. This preliminary organization enables efficient incremental compilation by allowing individual sub-graphs to be independently modified without affecting the overall graph structure or requiring full recompilation.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10635419B2Incremental compilation of finite automata for a regular expression accelerator
Publication Date: 2020.04.28 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10635419B2 patent drawing
  • US10635419B2 patent drawing
  • US10635419B2 patent drawing

AI summary

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.