IP Library › Granted Patent US 7,085,918
Granted Patent B2
US 7,085,918 · App. 10/755,048 · Granted Aug 1, 2006

Methods and apparatuses for evaluation of regular expressions of arbitrary size

Assignee: Cisco Systems, Inc.
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 7,085,918
App. No.
10/755,048
Granted
Aug 1, 2006
Kind
B2
Abstract

Embodiments of the invention provide a programmable FSA building block, having a number of programmable registers and associated logic implemented therein, that provide the capability of contextually evaluating complex REs of arbitrary size against multiple data streams. Embodiments of the invention provide fully programmable hardware in which all of the states of an RE are instantiated and all of the states are fully connected. For one embodiment, the building blocks have a fixed number of states to facilitate implementation on a chip. For such an embodiment, an RE having an excessive number of states is implemented on two or more FSA building blocks and the FSA building blocks are then stitched together to effect evaluation of the RE. For one embodiment, two or more REs having a number of states less than the fixed number of states of a building block may be implemented with a single building block.

Claims (32)

1. A finite state automata building block comprising:

a plurality of node elements that store a current state of a finite state automata evaluation;

a plurality of programmable interconnections that fully connect the plurality of node elements;

a symbol evaluation unit having a corresponding symbol for each of the node elements, the symbol evaluation unit evaluating an input to provide a symbol match determination;

a state transition evaluation logic that transitions the node elements from one set of states to another set of states upon receiving a determination of a symbol match and enabled interconnection;

a node element initialization mechanism to initialize the node elements to a specified value;

an evaluation termination mechanisms to determine if the node elements have reached a specified evaluation termination state; and

a stitching mechanism that activates a set of programmed state transitions of one or more target finite state automata building blocks upon detection of a specific state of the node elements.

2. The finite state automata building block of claim 1 wherein the stitching mechanism includes one or more registers to specify the specific state.

3. The finite state automata building block of claim 2 wherein the stitching mechanism includes one or more registers to identify the one or more target finite state automata building blocks.

4. The finite state automata building block of claim 1 wherein activating a set of programmed state transitions comprises:

combining the set of programmed state transitions with a current state of a finite state automata evaluation of the target.

5. The finite state automata building block of claim 1 wherein the finite state automata building block is connected to one or more target finite state automata building blocks via a set of interconnections.

6. A finite state automata building block comprising:

a plurality of node elements that store a current state of a finite state automata evaluation;

a plurality of programmable interconnections that fully connect the plurality of node elements;

a symbol evaluation unit having a corresponding symbol for each of the node elements, the symbol evaluation unit evaluating an input to provide a symbol match determination;

a state transition evaluation logic that transitions the node elements from one set of states to another set of states upon receiving a determination of a symbol match and enabled interconnection;

a node element initialization mechanism to initialize the node elements to a specified value; and

two or more evaluation termination mechanisms each of which determines if a corresponding set of the node elements has reached a corresponding specified evaluation termination state.

7. The finite state automata building block of claim 6 wherein each of the two or more evaluation termination mechanisms includes a register containing the corresponding specified evaluation termination state.

8. The finite state automata building block of claim 6 wherein each of the two or more evaluation termination mechanisms includes a register to indicate that the corresponding specified evaluation termination state has been reached.

9. A finite state automata building block comprising:

a plurality of node elements that store a current state of a finite state automata evaluation;

a plurality of programmable interconnections that fully connect the plurality of node elements;

a symbol evaluation unit having a corresponding symbol for each of the node elements, the symbol evaluation unit evaluating an input to provide a symbol match determination;

a state transition evaluation logic that transitions the node elements from one set of states to another set of states upon receiving a determination of a symbol match, enabled interconnection, and a counter that counts the occurrence of a specified set of states having reached a specified counter value;

a node element initialization mechanism to initialize the node elements to a specified value; and

an evaluation termination mechanisms to determine if the node elements have reached a specified evaluation termination state.

10. The finite state automata building block of claim 9 wherein the occurrence of the specified set of states is a part of a regular expression definition.

11. The finite state automata building block of claim 10 wherein the specified set of states is contained in a state specification register.

12. The finite state automata building block of claim 10 wherein the specified counter value is contained in a counter value register.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2006
From: CISCO SYSTEMS, INC.
To: CISCO TECHNOLOGY, INC.
Reel/Frame 017128/0114 →
MERGER Recorded Jan 18, 2006
From: VIHANA, INC.
To: CISCO SYSTEMS, INC.
Reel/Frame 017466/0986 →
MERGER Recorded Oct 3, 2005
From: VIHANA, INC.
To: CISCO SYSTEMS, INC.
Reel/Frame 016849/0250 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2004
From: SHARANGPANI, HARSHVARDHAN; KHARE, MANOJ; FIELDEN, KENT; PATIL, RAJESH; ARORA, JUDGE KENNDY
To: VIHANA, INC.
Reel/Frame 015823/0286 →
Continuity (2)
Provisional Application 6043884700 · Jan 9, 2003
Related Publication 20050012521A1 · Jan 20, 2005