IP Library Granted Patent US 12,197,510
Granted Patent B2
US 12,197,510 · App. 15/692,972 · Granted Jan 14, 2025

Traversal of S portion of a graph problem to be solved using automata processor

Inventor: Jeffery M. Tanner (Boise, ID)
Assignee: Micron Technology, Inc.
G06F16/90344G06F9/4498G06F16/248G06F16/9024H04L67/10
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 12,197,510
App. No.
15/692,972
Granted
Jan 14, 2025
Kind
B2
Abstract

An apparatus includes a state machine engine. The state machine engine may also include an automaton, whereby the automaton is configured to analyze data from a query related to solving a graph. The automaton may further be configured to report an event representative of a satisfaction of a node solving a hop of the graph by a portion of the input data stream.

Claims (74)

1. A state machine engine, comprising:

a plurality of configurable elements programmed to correspond to a graph problem to be solved, wherein the graph problem to be solved comprises a determination of a shortest path from a plurality of paths corresponding to whether a target node as a first configurable element of the plurality of configurable elements is reachable from an origin node as a second configurable element of the plurality of configurable elements, wherein the shortest path between the origin node and the target node from the plurality of paths is determined upon determining that the target node is reachable from the origin node by:

(a) the state machine engine receiving a list of nodes as a query string from a processor, wherein the query string is at least a part of an input data stream transmitted to the state machine engine, wherein each node of the list of nodes corresponds to a respective character of a set of characters;

(b) each automaton comprising a portion of the plurality of configurable elements within the state machine engine evaluating whether or not it contains an edge that originates on one of the nodes in the query string;

(c) when an automaton does match this condition, reporting via the automaton a destination node of an edge it represents, wherein the destination node corresponds to a first character of the set of characters, to allow the processor to begin at any arbitrary node as the origin node to determine what nodes can be reached from the origin node;

(d) returning a list of nodes that can be reached from a set of query nodes as the origin node and/or additionally provided nodes from the state machine engine to the processor as destination nodes having a corresponding level associated with a maximum number of hops undertaken to reach the destinations nodes;

(e) utilizing a set of one-hop reachable nodes to deliver to the state machine engine as a new query for analysis;

(f) porting from the state machine engine a set of nodes reachable from the one-hop reachable nodes as representative of two-hop reachable nodes; and

(g) discovering new nodes reachable at increasingly greater distances from the origin node until the processor finds the target node within a result set or the state machine engine returns an empty result set indicating the target node is not reachable from the origin node; and

wherein, each configurable element of the plurality of configurable elements comprising a state transition element (STE) comprising a memory cell programmed with configuration data to selectively set a state of the memory cell to a binary high value or a binary low value, wherein the STE is configured to analyze at least a portion of the input data stream based on the state of the memory cell and to output a result of the analysis as an event representative of a satisfaction of traversal of a portion of the graph problem to be solved based on the at least a portion of the input data stream, wherein the STE is configured to represent a node of a graph edge as the portion of the graph problem to be solved, wherein the STE evaluates the at least a portion of the input data stream to determine whether the node matches the at least a portion of the input data stream, wherein the STE is configured to report the node of the graph edge as the result of the analysis upon an occurrence of the node of the graph edge matching the at least a portion of the input data stream.

2. The state machine engine of claim 1 , wherein the STE is configured to report the event representative of the satisfaction of traversal of the portion of the graph problem to be solved based on a match of the at least a portion of the input data stream with a stored value as the state of the memory cell.

3. The state machine engine of claim 1 , wherein the STE is configured to report only one instance of the event representative of the satisfaction of traversal of the portion of the graph problem to be solved.

4. The state machine engine of claim 1 , comprising a second STE, wherein the second STE comprises a second memory cell programmed with second configuration data to selectively set a state of the second memory cell to a binary high value or a binary low value, wherein the second STE is configured to analyze at least a second portion of the input data stream based on the state of the second memory cell and to output a second result of the analysis as an event representative of a satisfaction of a traversal of a second portion of the graph problem to be solved based on the second portion of the input data stream.

5. The state machine engine of claim 1 , wherein the STE is configured to report the event representative of the satisfaction of traversal of the portion of the graph problem to be solved to a host device coupled to the state machine engine.

6. The state machine engine of claim 1 , wherein the STE is configured to analyze the at least a portion of the input data stream to match a character present in the input data stream with a programmed value as the configuration data of the STE.

7. The state machine engine of claim 1 , wherein at least one configurable element of the plurality of configurable elements is utilized in analysis of the input data stream until an end of data signal is received.

8. The state machine engine of claim 1 , wherein the STE is configured to report the event when an end of data signal in the input data stream is received.

9. A device, comprising:

a processor when in operation transmits an input data stream to be analyzed by a plurality of configurable elements programmed to correspond to a graph problem to be solved, wherein the graph problem to be solved comprises a determination of a shortest path from a plurality of paths corresponding to whether a target node as a first configurable element of the plurality of configurable elements is reachable from an origin node as a second configurable element of the plurality of configurable elements, wherein the shortest path between the origin node and the target node from the plurality of paths is determined upon determining that the target node is reachable from the origin node by:

(a) a state machine engine comprising the plurality of configurable elements receiving a list of nodes as a query string from the processor, wherein the query string is at least a part of the input data stream transmitted to the state machine engine, wherein each node of the list of nodes corresponds to a character;

(b) each automaton comprising a portion of the plurality of configurable elements within the state machine engine evaluating whether or not it contains an edge that originates on one of the nodes in the query string;

(c) when an automaton does match this condition, reporting via the automaton a destination node of an edge it represents, wherein the destination node corresponds to a first character of a set of characters, to allow the processor to begin at any arbitrary node as the origin node to determine what nodes can be reached from the origin node;

(d) returning a list of nodes that can be reached from a set of query nodes as the origin node and/or additionally provided nodes from the state machine engine to the processor as destination nodes having a corresponding level associated with a maximum number of hops undertaken to reach the destinations nodes;

(e) utilizing a set of one-hop reachable nodes to deliver to the state machine engine as a new query for analysis;

(f) reporting from the state machine engine a set of nodes reachable from the one-hop reachable nodes as representative of two-hop reachable nodes; and

(g) discovering new nodes reachable at increasingly greater distances from the origin node until the processor finds the target node within a result set or the state machine engine returns an empty result set indicating the target node is not reachable from the origin node; and

wherein, each configurable element of the plurality of configurable elements comprising a state transition element (STE) comprising a memory element programmed with configuration data to selectively set a data state of the memory element as one of a high state and a low state, wherein the STE is configured to analyze at least a portion of the input data stream based on the data state of the memory element and to output a result of the analysis as an event, wherein the STE is configured to represent a node of a graph edge as the portion of the graph problem to be solved, wherein the STE evaluates the at least a portion of the input data stream to determine whether the node matches the at least a portion of the input data stream, wherein the STE is configured to report the node of the graph edge as the event upon an occurrence of the node matching the at least a portion of the input data stream, wherein the processor when in operation receives a report of the event representative of a satisfaction of traversal of a portion of a graph problem to be solved based on the at least a portion of the input data stream.

10. The device of claim 9 , wherein the processor when in operation identifies the report as corresponding to a respective edge and a respective node of the graph problem to be solved.

11. The device of claim 10 , wherein the processor when in operation transmits a second portion of the input data stream to be analyzed by a second STE based on the graph problem to be solved.

12. The device of claim 10 , comprising a memory coupled to the processor, wherein the processor when in operation categorizes the report and stores the categorized report in the memory.

13. A device, comprising:

a state transition element (STE), wherein the STE comprises a memory element programmed with configuration data corresponding to programming a portion of a graph problem to be solved, wherein the graph problem to be solved comprises a determination of a shortest path from a plurality of paths corresponding to whether a target node as a first configurable element of a plurality of configurable elements is reachable from an origin node as a second configurable element of the plurality of configurable elements, wherein the shortest path between the origin node and the target node from the plurality of paths is determined upon determining that the target node is reachable from the origin node by:

(a) a state machine engine comprising the plurality of configurable elements receiving a list of nodes as a query string from a processor, wherein the query string is at least a part of an input data stream transmitted to the state machine engine, wherein each node of the list of nodes corresponds to a respective character of a set of characters;

(b) each automaton comprising a portion of the plurality of configurable elements within the state machine engine evaluating whether or not it contains an edge that originates on one of the nodes in the query string;

(c) when an automaton does match this condition, reporting via the automaton a destination node of an edge it represents, wherein the destination node corresponds to a first character of the set of characters, to allow the processor to begin at any arbitrary node as an origin node to determine what nodes can be reached from the origin node;

(d) returning a list of nodes that can be reached from a set of query nodes as the origin node and/or additionally provided nodes from the state machine engine to the processor as destination nodes having a corresponding level associated with a maximum number of hops undertaken to reach the destinations nodes;

(e) utilizing a set of one-hop reachable nodes to deliver to the state machine engine as a new query for analysis;

(f) reporting from the state machine engine a set of nodes reachable from the one-hop reachable nodes as representative of two-hop reachable nodes; and

(g) discovering new nodes reachable at increasingly greater distances from the origin node until the processor finds the target node within a result set or the state machine engine returns an empty result set indicating the target node is not reachable from the origin node; and

wherein the configuration data sets a data state of the memory element as one of a high state and a low state, wherein the STE is configured to analyze portions of the input data stream based on the data state of the memory element and to output a result of the analysis as and generate an indication of an event representative of satisfaction of traversal of a portion of the graph problem to be solved based on the portions of the input data stream, wherein the STE is configured to represent a node of a graph edge as the portion of the graph problem to be solved, wherein the STE evaluates the portions of the input data stream to determine whether the node matches the portions of the input data stream, wherein the STE is configured to report the node of the graph edge as the result of the analysis upon an occurrence of the node matching the portions of the input data stream.

14. The device of claim 13 , comprising a second STE, wherein the second STE is configured to analyze second portions of the input data stream and generate an indication of a second event representative of satisfaction of traversal of a second portion of the graph problem to be solved.

15. The device of claim 14 , wherein the STE and the second STE are configured to transmit the indication of the event and the indication of the second event, respectively, in parallel.

16. The device of claim 14 , wherein the STE and the second STE are configured to transmit the indication of the event and the indication of the second event, respectively, in response to receipt of an end of data character at the STE and the second STE.

17. The device of claim 13 , wherein the STE is configured to analyze the portions of the input data stream via comparison of a character present in the portions of the input data stream with a stored value as the data state in the STE.

18. The device of claim 17 , wherein the STE is configured to generate the indication of the event based on the comparison of the character present in the portions of the input data stream with the stored value as the data state in the STE.

19. The device of claim 17 , wherein the STE comprises a second STE, wherein the second STE is configured analyze the portions of the input data stream via comparison of a second character present in the portions of the input data stream with a stored value as a second data state in the second STE.

20. The device of claim 19 , wherein the STE is configured to store a first portion of a node identification value of a node of the graph as the stored value in the STE.

21. The device of claim 20 , wherein the second STE is configured to store a second portion of the node identification value of the node of the graph as the stored value in the second STE.

22. The device of claim 13 , comprising a host processor coupled to the STE, wherein the host processor is configured to receive the indication of the event generated by the STE.

23. The device of claim 22 , wherein the host processor is configured to generate a second data stream and transmit the second data stream to the STE for analysis.

24. The device of claim 23 , wherein the host processor is configured to generate the second data stream based upon the indication of the event generated by the STE.

25. A device, comprising:

a memory configured to store instructions executable by the device, wherein the instructions comprise a compiler configured to a program a plurality of state transition elements (STEs) of a finite state machine lattice to correspond to a graph problem to be solved, wherein the graph problem to be solved comprises a determination of a shortest path from a plurality of paths corresponding to whether a target node as a first configurable element of a plurality of configurable elements is reachable from an origin node as a second configurable element of the plurality of configurable elements by:

(a) a state machine engine comprising the plurality of configurable elements receiving a list of nodes as a query string from a processor, wherein the query string is at least a part of an input data stream transmitted to the state machine engine, wherein each node of the list of nodes corresponds to a respective character of a set of characters;

(b) each automaton comprising a portion of the plurality of configurable elements within the state machine engine evaluating whether or not it contains an edge that originates on one of the nodes in the query string;

(c) when an automaton does match this condition, reporting via the automaton a destination node of an edge it represents, wherein the destination node corresponds to a first character of the set of characters, to allow the processor to begin at any arbitrary node as the origin node to determine what nodes can be reached from the origin node;

(d) returning a list of nodes that can be reached from a set of query nodes as the origin node and/or additionally provided nodes from the state machine engine to the processor as destination nodes having a corresponding level associated with a maximum number of hops undertaken to reach the destinations nodes;

(e) utilizing a set of one-hop reachable nodes to deliver to the state machine engine as a new query for analysis;

(f) reporting from the state machine engine a set of nodes reachable from the one-hop reachable nodes as representative of two-hop reachable nodes; and

(g) discovering new nodes reachable at increasingly greater distances from the origin node until the processor finds the target node within a result set or the state machine engine returns an empty result set indicating the target node is not reachable from the origin node; and

wherein the shortest path between the origin node and the target node from the plurality of paths is determined upon determining that the target node is reachable from the origin node, wherein each STE of the plurality of STEs is programmed with a respective stored value representative of an identification of a node of the graph problem to be solved for comparison against a character in the input data stream, wherein each STE of the plurality of STEs is configured to report the node as a result of an analysis of a portion of the graph problem to be solved upon an occurrence of the identification matching the character in the input data stream.

26. The device of claim 25 , wherein the compiler is configured to program the finite state machine lattice by generating a binary image of high and low bits for storage in memory cells of the finite state machine lattice as the stored value.

27. The device of claim 26 , where in the compiler is configured to reprogram the finite state machine lattice by generating a second binary image of high and low bits for storage in the memory cells of the finite state machine lattice as the stored value subsequent to generation of a match in the state machine lattice based on the comparison.

28. A tangible, non-transitory computer-readable medium configured to store instructions executable by a processor of an electronic device, wherein the instructions comprise instructions to represent a plurality of configurable elements programmed to correspond to a graph problem to be solved, wherein the graph problem to be solved comprises a determination of a shortest path from a plurality of paths corresponding to whether a target node as a first configurable element of the plurality of configurable elements is reachable from an origin node as a second configurable element of the plurality of configurable elements, wherein the shortest path between the origin node and the target node from the plurality of paths is determined upon determining that the target node is reachable from the origin node by:

(a) a state machine engine comprising the plurality of configurable elements receiving a list of nodes as a query string from the processor, wherein the query string is at least a part of an input data stream transmitted to the state machine engine, wherein each node of the list of nodes corresponds to a respective character of a set of characters;

(b) each automaton comprising a portion of the plurality of configurable elements within the state machine engine evaluating whether or not it contains an edge that originates on one of the nodes in the query string;

(c) when an automaton does match this condition, reporting via the automaton a destination node of an edge it represents, wherein the destination node corresponds to a first character of the set of characters, to allow the processor to begin at any arbitrary node as the origin node to determine what nodes can be reached from the origin node;

(d) returning a list of nodes that can be reached from a set of query nodes as the origin node and/or additionally provided nodes from the state machine engine to the processor as destination nodes having a corresponding level associated with a maximum number of hops undertaken to reach the destinations nodes;

(e) utilizing a set of one-hop reachable nodes to deliver to the state machine engine as a new query for analysis;

(f) reporting from the state machine engine a set of nodes reachable from the one-hop reachable nodes as representative of two-hop reachable nodes; and

(g) discovering new nodes reachable at increasingly greater distances from the origin node until the processor finds the target node within a result set or the state machine engine returns an empty result set indicating the target node is not reachable from the origin node; and

wherein, each configurable element of the plurality of configurable elements comprising a state transition element (STE) comprising a memory element programmed with configuration data to selectively set a data state of the memory element as one of a high state and a low state, wherein the STE is configured to analyze at least a portion of the input data stream based on the data state of the memory element and to output a result of the analysis as an event representative of a satisfaction of traversal of a portion of the graph problem to be solved, wherein the STE is configured to represent a node of a graph edge as the portion of the graph problem to be solved, wherein the STE evaluates the at least a portion of the input data stream to determine whether the node matches the at least a portion of the input data stream, wherein the STE is configured to report the node of the graph edge as the result of the analysis upon an occurrence of the node matching the at least a portion of the input data stream.

29. The computer-readable medium of claim 28 , comprising instructions to receive an input and simulate operation of the STE based on the input.

30. The computer-readable medium of claim 29 , comprising instructions to generate an indication of a result of the simulation of the operation of the STE.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050709/0838 →
RELEASE OF SECURITY INTEREST Recorded Jul 20, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 046597/0333 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2017
From: TANNER, JEFFERY M.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 044124/0707 →
SUPPLEMENT NO. 6 TO PATENT SECURITY AGREEMENT Recorded Nov 1, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 044348/0253 →
SUPPLEMENT NO. 6 TO PATENT SECURITY AGREEMENT Recorded Nov 1, 2017
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 044653/0333 →
Continuity (2)
Provisional Application 62410686 · Oct 20, 2016
Related Publication 20180113951A1 · Apr 26, 2018
References Cited (251)
US 3849762A · Fujimoto et al. · 1974 [cited by applicant]
US 3921136A · Bar-Lev · 1975 [cited by applicant]
US 4011547A · Kimmel · 1977 [cited by applicant]
US 4014000A · Uno et al. · 1977 [cited by applicant]
US 4123695A · Hale et al. · 1978 [cited by applicant]
US 4153897A · Yasuda et al. · 1979 [cited by applicant]
US 4204193A · Schroeder · 1980 [cited by applicant]
US 4414685A · Sternberg · 1983 [cited by applicant]
US 4748674A · Freeman · 1988 [cited by applicant]
US 5014327A · Potter et al. · 1991 [cited by applicant]
US 5028821A · Kaplinsky · 1991 [cited by applicant]
US 5216748A · Quenot et al. · 1993 [cited by applicant]
US 5257361A · Doi et al. · 1993 [cited by applicant]
US 5287523A · Allison et al. · 1994 [cited by applicant]
US 5291482A · McHarg et al. · 1994 [cited by applicant]
US 5300830A · Hawes · 1994 [cited by applicant]
US 5331227A · Hawes · 1994 [cited by applicant]
US 5357512A · Khaira et al. · 1994 [cited by applicant]
US 5371878A · Coker · 1994 [cited by applicant]
US 5377129A · Molvig et al. · 1994 [cited by applicant]
US 5459798A · Bailey et al. · 1995 [cited by applicant]
US 5615237A · Chang et al. · 1997 [cited by applicant]
US 5659551A · Huott et al. · 1997 [cited by applicant]
US 5723984A · Sharpe-Geisier · 1998 [cited by applicant]
US 5754878A · Asghar et al. · 1998 [cited by applicant]
US 5790531A · Ellebracht et al. · 1998 [cited by applicant]
US 5881312A · Dulong · 1999 [cited by applicant]
US 5896548A · Ofek · 1999 [cited by applicant]
US 5956741A · Jones · 1999 [cited by applicant]
US 6011407A · New · 2000 [cited by applicant]
US 6016361A · Hongu et al. · 2000 [cited by applicant]
US 6034963A · Minami et al. · 2000 [cited by applicant]
US 6041405A · Green · 2000 [cited by applicant]
US 6052766A · Betker et al. · 2000 [cited by applicant]
US 6058469A · Baxter · 2000 [cited by applicant]
US 6094443A · Dwork · 2000 [cited by examiner]
US 6151644A · Wu · 2000 [cited by applicant]
US 6240003B1 · McElroy · 2001 [cited by applicant]
US 6279128B1 · Arnold et al. · 2001 [cited by applicant]
US 6295367B1 · Crabtree · 2001 [cited by examiner]
US 6317427B1 · Augusta et al. · 2001 [cited by applicant]
US 6362868B1 · Silverbrook · 2002 [cited by applicant]
US 6400996B1 · Hoffberg et al. · 2002 [cited by applicant]
US 6606699B2 · Pechanek et al. · 2003 [cited by applicant]
US 6614703B2 · Pitts et al. · 2003 [cited by applicant]
US 6625740B1 · Datar et al. · 2003 [cited by applicant]
US 6633443B1 · Watanabe et al. · 2003 [cited by applicant]
US 6636483B1 · Pannell · 2003 [cited by applicant]
US 6640262B1 · Uppunda et al. · 2003 [cited by applicant]
US 6697979B1 · Vorbach et al. · 2004 [cited by applicant]
US 6700404B1 · Feng et al. · 2004 [cited by applicant]
US 6880087B1 · Carter · 2005 [cited by applicant]
US 6906938B2 · Kaginele · 2005 [cited by applicant]
US 6944710B2 · Regev et al. · 2005 [cited by applicant]
US 6971058B2 · Evans · 2005 [cited by examiner]
US 6977897B1 · Nelson et al. · 2005 [cited by applicant]
US 7010639B2 · Larson et al. · 2006 [cited by applicant]
US 7089352B2 · Regev et al. · 2006 [cited by applicant]
US 7146643B2 · Dapp et al. · 2006 [cited by applicant]
US 7176717B2 · Sunkavalli et al. · 2007 [cited by applicant]
US 7276934B1 · Young · 2007 [cited by applicant]
US 7305047B1 · Turner · 2007 [cited by applicant]
US 7358761B1 · Sunkavalli et al. · 2008 [cited by applicant]
US 7366352B2 · Kravec et al. · 2008 [cited by applicant]
US 7392229B2 · Harris et al. · 2008 [cited by applicant]
US 7428722B2 · Sunkavalli et al. · 2008 [cited by applicant]
US 7487131B2 · Harris et al. · 2009 [cited by applicant]
US 7487542B2 · Boulanger et al. · 2009 [cited by applicant]
US 7499464B2 · Ayrapetian et al. · 2009 [cited by applicant]
US 7565380B1 · Venkatachary · 2009 [cited by examiner]
US 7725510B2 · Alicherry et al. · 2010 [cited by applicant]
US 7774286B1 · Harris · 2010 [cited by applicant]
US 7804719B1 · Chirania et al. · 2010 [cited by applicant]
US 7890923B2 · Elaasar · 2011 [cited by applicant]
US 7899052B1 · Hao et al. · 2011 [cited by applicant]
US 7917684B2 · Noyes et al. · 2011 [cited by applicant]
US 7970964B2 · Noyes · 2011 [cited by applicant]
US 8015530B1 · Sinclair et al. · 2011 [cited by applicant]
US 8020131B1 · Van Mau et al. · 2011 [cited by applicant]
US 8065249B1 · Harris et al. · 2011 [cited by applicant]
US 8140780B2 · Noyes · 2012 [cited by applicant]
US 8146040B1 · Janneck et al. · 2012 [cited by applicant]
US 8159900B2 · Moore et al. · 2012 [cited by applicant]
US 8209521B2 · Noyes et al. · 2012 [cited by applicant]
US 8239660B2 · Cervini · 2012 [cited by applicant]
US 8281395B2 · Pawlowski · 2012 [cited by applicant]
US 8294490B1 · Kaviani · 2012 [cited by applicant]
US 8402188B2 · Noyes et al. · 2013 [cited by applicant]
US 8536896B1 · Trimberger · 2013 [cited by applicant]
US 8593175B2 · Noyes et al. · 2013 [cited by applicant]
US 8648621B2 · Noyes et al. · 2014 [cited by applicant]
US 8680888B2 · Brown et al. · 2014 [cited by applicant]
US 8725961B2 · Noyes · 2014 [cited by applicant]
US 8782624B2 · Brown et al. · 2014 [cited by applicant]
US 8938590B2 · Noyes et al. · 2015 [cited by applicant]
US 9058465B2 · Noyes et al. · 2015 [cited by applicant]
US 9063532B2 · Brown · 2015 [cited by applicant]
US 9075428B2 · Brown · 2015 [cited by applicant]
US 9118327B2 · Noyes et al. · 2015 [cited by applicant]
US 9235798B2 · Brown et al. · 2016 [cited by applicant]
US 20010033548A1 · Saleh · 2001 [cited by examiner]
US 20020186044A1 · Agrawal et al. · 2002 [cited by applicant]
US 20030107996A1 · Black et al. · 2003 [cited by applicant]
US 20030142698A1 · Parhl · 2003 [cited by applicant]
US 20030163615A1 · Yu · 2003 [cited by applicant]
US 20030226002A1 · Boutaud et al. · 2003 [cited by applicant]
US 20040100980A1 · Jacobs et al. · 2004 [cited by applicant]
US 20040125807A1 · Liu et al. · 2004 [cited by applicant]
US 20040151211A1 · Snider · 2004 [cited by applicant]
US 20040184662A1 · Kravec et al. · 2004 [cited by applicant]
US 20050154916A1 · Boulanger et al. · 2005 [cited by applicant]
US 20050251638A1 · Boutaud et al. · 2005 [cited by applicant]
US 20060158219A1 · Sunkavalli et al. · 2006 [cited by applicant]
US 20060184471A1 · Minamino · 2006 [cited by examiner]
US 20060195496A1 · Vadi et al. · 2006 [cited by applicant]
US 20060206875A1 · Ullmann et al. · 2006 [cited by applicant]
US 20060257043A1 · Chiu · 2006 [cited by applicant]
US 20060274001A1 · Guttag et al. · 2006 [cited by applicant]
US 20060288070A1 · Vadi et al. · 2006 [cited by applicant]
US 20070005869A1 · Balraj et al. · 2007 [cited by applicant]
US 20070075878A1 · Furodet et al. · 2007 [cited by applicant]
US 20070127482A1 · Harris et al. · 2007 [cited by applicant]
US 20070150623A1 · Kravec et al. · 2007 [cited by applicant]
US 20070282833A1 · McMillen · 2007 [cited by applicant]
US 20070283108A1 · Isherwood et al. · 2007 [cited by applicant]
US 20080101371A1 · Law · 2008 [cited by examiner]
US 20080126690A1 · Rajan et al. · 2008 [cited by applicant]
US 20080129334A1 · Sunkavalli et al. · 2008 [cited by applicant]
US 20080133874A1 · Capek et al. · 2008 [cited by applicant]
US 20080140661A1 · Pandya · 2008 [cited by applicant]
US 20080155239A1 · Chowdhury · 2008 [cited by examiner]
US 20080178031A1 · Kim · 2008 [cited by applicant]
US 20080256347A1 · Eickemeyer et al. · 2008 [cited by applicant]
US 20080320053A1 · IIjima et al. · 2008 [cited by applicant]
US 20090198952A1 · Khmelnitsky et al. · 2009 [cited by applicant]
US 20090204734A1 · Strait et al. · 2009 [cited by applicant]
US 20100100691A1 · Noyes et al. · 2010 [cited by applicant]
US 20100100714A1 · Noyes et al. · 2010 [cited by applicant]
US 20100115173A1 · Noyes · 2010 [cited by applicant]
US 20100115347A1 · Noyes · 2010 [cited by applicant]
US 20100118425A1 · Rafaelof · 2010 [cited by applicant]
US 20100138432A1 · Noyes · 2010 [cited by applicant]
US 20100138575A1 · Noyes · 2010 [cited by applicant]
US 20100138634A1 · Noyes · 2010 [cited by applicant]
US 20100138635A1 · Noyes · 2010 [cited by applicant]
US 20100145182A1 · Schmidt et al. · 2010 [cited by applicant]
US 20100174887A1 · Pawlowski · 2010 [cited by applicant]
US 20100174929A1 · Pawlowski · 2010 [cited by applicant]
US 20100175130A1 · Pawlowski · 2010 [cited by applicant]
US 20100185647A1 · Noyes · 2010 [cited by applicant]
US 20100228918A1 · Vorbach · 2010 [cited by examiner]
US 20100229040A1 · Chen · 2010 [cited by examiner]
US 20100325352A1 · Schuette et al. · 2010 [cited by applicant]
US 20100332809A1 · Noyes et al. · 2010 [cited by applicant]
US 20110004578A1 · Momma et al. · 2011 [cited by applicant]
US 20110145182A1 · Dlugosch et al. · 2011 [cited by applicant]
US 20110145271A1 · Noyes et al. · 2011 [cited by applicant]
US 20110145544A1 · Noyes et al. · 2011 [cited by applicant]
US 20110161620A1 · Kaminski et al. · 2011 [cited by applicant]
US 20110208900A1 · Schuette et al. · 2011 [cited by applicant]
US 20110258360A1 · Noyes · 2011 [cited by applicant]
US 20110307233A1 · Tseng · 2011 [cited by examiner]
US 20110307433A1 · Dlugosch · 2011 [cited by applicant]
US 20110307503A1 · Dlugosch · 2011 [cited by applicant]
US 20110320759A1 · Craddock et al. · 2011 [cited by applicant]
US 20120179854A1 · Noyes · 2012 [cited by applicant]
US 20120192163A1 · Glendenning · 2012 [cited by examiner]
US 20120192164A1 · Xu et al. · 2012 [cited by applicant]
US 20120192165A1 · Xu et al. · 2012 [cited by applicant]
US 20120192166A1 · Xu · 2012 [cited by examiner]
US 20130154685A1 · Noyes · 2013 [cited by applicant]
US 20130156043A1 · Brown et al. · 2013 [cited by applicant]
US 20130159239A1 · Brown et al. · 2013 [cited by applicant]
US 20130159670A1 · Noyes · 2013 [cited by applicant]
US 20130159671A1 · Brown et al. · 2013 [cited by applicant]
US 20130275709A1 · Gajapathy · 2013 [cited by applicant]
US 20140025614A1 · Noyes et al. · 2014 [cited by applicant]
US 20140025923A1 · Klein · 2014 [cited by applicant]
US 20140067736A1 · Noyes · 2014 [cited by examiner]
US 20140068167A1 · Brown · 2014 [cited by examiner]
US 20140204956A1 · Brown et al. · 2014 [cited by applicant]
US 20140225889A1 · Kim et al. · 2014 [cited by applicant]
US 20140279776A1 · Brown · 2014 [cited by examiner]
US 20140325494A1 · Brown et al. · 2014 [cited by applicant]
US 20150286748A1 · Lilley · 2015 [cited by examiner]
US 20170277811A1 · Mistry · 2017 [cited by examiner]
US 20180330008A1 · Fan · 2018 [cited by examiner]
US 20180365289A1 · Brown · 2018 [cited by examiner]
EP 0476159A1 · 1992 [cited by applicant]
EP 0943995A2 · 1999 [cited by applicant]
JP 08087462A · 1996 [cited by applicant]
JP 10069459A · 1998 [cited by applicant]
JP 10111862A · 1998 [cited by applicant]
JP 2000231549A · 2000 [cited by applicant]
JP 2000347708A · 2000 [cited by applicant]
KR 1020080097573A · 2008 [cited by applicant]
WO WO0065425A1 · 2000 [cited by applicant]
WO WO0138978A1 · 2001 [cited by applicant]
WO WO03039001A1 · 2003 [cited by applicant]
WO WO2005036750A1 · 2005 [cited by applicant]
WO WO2011114120A1 · 2011 [cited by applicant]
Beesley, K. R.; Arabic Morphology Using Only Finite-State Operations; Xerox Research Centre Europe; pp. 50-57; 1998. [cited by applicant]
Bird, S. et al.; One-Level Phonology: Autosegmental Representations and Rules as Finite Automata; Association for Computational Linguistics; University of Edinburgh; vol. 20; No. 1; pp. 55-90; 1994. [cited by applicant]
Bispo, J. et al.; Regular Expression Matching for Reconfigurable Packet Inspection; IEEE International Conference on Field Programmable Technology; 2006. [cited by applicant]
Bispo, J. et al.; Synthesis of Regular Expressions Targeting FPGAs: Current Status and Open Issues; IST/INESC-ID, Libson, Portugal; pp. 1-12; 2007. [cited by applicant]
Brodie, B. et al.; A scalable Architecture for High-Throughput Regular-Expression Pattern Matching; Exegy Inc.; pp. 1-12; 2006. [cited by applicant]
Clark, C.; Design of Efficient FPGA Circuits for Matching Complex Patterns in Network Intrusion Detection Systems (Master of Science Thesis); Georgia Institute of Technology; pp. 1-56; Dec. 2003. [cited by applicant]
Clark, C.; A Unified Model of Pattern-Matching Circuits for Field-Programmable Gate Arrays [Doctoral Dissertation]; Georgia Institute of Technology; pp. 1-177; 2006. [cited by applicant]
Clark, C. et al.; Scalable Pattern Matching for High Speed Networks; Proceedings of the 12 [cited by applicant]
Clark, C. et al.; A Unified Model of Pattern-Matching Circuit Architectures; Tech Report GIT-CERCS-05-20;Georgia Institute of Technology; pp. 1-17; 2005. [cited by applicant]
Fide, S.; String Processing in Hardware; Scalable Parallel and Distributed Systems Lab; Proceedings of the 12 [cited by applicant]
Fisk, M. et al.; Applying Fast String Matching to Intrusion Detection; Los Alamos National Laboratory; University of California San Diego; pp. 1-21; 2002. [cited by applicant]
Korenek, J.; Traffic Scanner-Hardware Accelerated Intrusion Detection System; http://www.liberouter.org/ ; 2006. [cited by applicant]
Kumar, S. et al.; Curing Regular Expressions matching Algorithms from Insomnia, Amnesia, and Acaluia; Department of Computer Science and Engineering; Washington University in St. Louis; pp. 1-17; Apr. 27, 2007. [cited by applicant]
Lipovski, G.; Dynamic Systolic Associative Memory Chip; IEEE; Department of Electrical and Computer Engineering; University of Texas at Austin; pp. 481-492; 1990. [cited by applicant]
Lin, C. et al.; Optimization of Pattern Matching Circuits for Regular Expression on FPGA; IEEE Transactions on Very Large Scale Integrations Systems; vol. 15, No. 12, pp. 1-6; Dec. 2007. [cited by applicant]
Schultz, K. et al.; Fully Parallel Integrated CAM/RAM Using Preclassification to Enable Large Capacities; IEEE Journal on Solid-State Circuits; vol. 31; No. 5; pp. 689-699; May 1996. [cited by applicant]
Shafai, F. et al.; Fully Parallel 30-MHz, 2.5-Mb CAM; IEEE Journal of Solid-State Circuits, vol. 33; No. 11; pp. 1690-1696; Nov. 1998. [cited by applicant]
Sidhu, R. et al.; Fast Regular Expression Pattern Matching using FPGAs; Department of EE-Systems; University of Southern California; pp. 1-12; 2001. [cited by applicant]
Wada, T.; Multiobject Behavior Recognition Event Driven Selective Attention Method; IEEE; pp. 1-16; 2000. [cited by applicant]
Yu, F.; High Speed Deep Packet Inspection with Hardware Support; Electrical Engineering and Computer Sciences; University of California at Berkeley; pp. 1-217; Nov. 22, 2006. [cited by applicant]
Freescale and Kaspersky ® Accelerated Antivirus Solution Platform for OEM Vendors; Freescale Semiconductors Document; pp. 1-16; 2007. [cited by applicant]
PCT/US2009/067534 International Search Report and Written Opinion Apr. 26, 2010. [cited by applicant]
PCT/US2009/061649 International Search Report Feb. 15, 2010. [cited by applicant]
Taiwan Application No. 098144804 Office Action dated Nov. 4, 2013. [cited by applicant]
PCT/US2012/067992 International Search Report Mar. 28, 2013. [cited by applicant]
PCT/US2012/068011 International Search Report Apr. 15, 2013. [cited by applicant]
PCT/US2012/067999 International Search Report May 14, 2013. [cited by applicant]
PCT/US2012/067995 International Search Report May 17, 2013. [cited by applicant]
PCT/US2012/067988 International Search Report (Partial) Jun. 24, 2014. [cited by applicant]
PCT/US2013/049744 International Search Report and Written Opinion Oct. 22, 2013. [cited by applicant]
PCT/US2013/049748 International Search Report and Written Opinion Oct. 22, 2013. [cited by applicant]
PCT/US2013/049755 International Search Report and Written Opinion Oct. 24, 2013. [cited by applicant]
PCT/US2013/049753 International Search Report and Written Opinion Nov. 7, 2013. [cited by applicant]
PCT/US2013/055434 International Search Report and Written Opinion Nov. 29, 2013. [cited by applicant]
PCT/US2013/055438 International Search Report and Written Opinion Nov. 29, 2013. [cited by applicant]
PCT/US2013/055436 International Search Report and Written Opinion Dec. 9, 2013. [cited by applicant]
PCT/US2014/023589 International Search Report and Written Opinion Jul. 24, 2014. [cited by applicant]
Soewito et al., “Self-Addressable Memory-Based FSM: A scalable Intrusion Detection Engine”, IEEE Network, pp. 14-21; Feb. 2009. [cited by applicant]
Hurson A. R.; A VLSI Design for the Parallel Finite State Automation and Its Performance Evaluation as a Hardware Scanner; International Journal of Computer and Information Sciences, vol. 13, No. 6; 1984. [cited by applicant]
Carpenter et al., “A Massively Parallel Architecture for a Self-Organizing Neural Pattern Recognition Machine”, Academic Press, Inc.; 1987. [cited by applicant]
Cong et al., “Application-Specific Instruction Generation for Configurable Processor Architectures”, Computer Science Department, University of California, ACM; 2004. [cited by applicant]
Glette et al., “An Online EHW Pattern Recognition System Applied to Face Image Recognition”, University of Oslo, Norway; 2007. [cited by applicant]
Kawai et al., “An Adaptive Pattern Recognition Hardware with On-chip Shift Register-based Partial Reconfiguration”, IEEE; 2008. [cited by applicant]
Kutrib et al., “Massively Parallel Pattern Recognition with Link Features”, IFIG Research Report 0003; 2000. [cited by applicant]
Marculescu et al., Power Management of Multi-Core Systems: Challenges, Approaches, and Recent Developments Tutorial At ASPLOS, London, UK [online]; Mar. 4, 2012. [cited by applicant]
Vitanen et al.; Image Pattern Recognition Using Configurable Logic Cell Array; New Advances in Computer Graphics; pp. 355-368; 1989. [cited by applicant]
Yasunaga et al., “Kernel-based Pattern Recognition Hardware: Its Design Methodology Using Evolved Truth Tables”, IEEE, 2000. [cited by applicant]
Roy et al., “Finding Motifs in Biological Sequences using the Micron Automata Processor,” IEEE, 2014. [cited by applicant]
U.S. Appl. No. 60/652,738, filed Feb. 12, 2005, Harris. [cited by applicant]
U.S. Appl. No. 61/788,364, filed Mar. 15, 2013, Brown. [cited by applicant]