IP Library Granted Patent US 7,805,393
Granted Patent B1
US 7,805,393 · App. 11/830,397 · Granted Sep 28, 2010

Assigning encoded state values to a search tree according to failure chains

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,805,393
App. No.
11/830,397
Granted
Sep 28, 2010
Kind
B1
Abstract

A method for assigning state codes to states of a state diagram embodying a plurality of signatures to be searched for in an input string of characters re-organizes the states of a search tree embodying the signatures to construct a failure tree in which the states are organized in levels according to a number of failure transitions between each state and the root node of the search tree.

Claims (66)

1. A method for representing a plurality of states of a goto-failure tree embodying a number of signatures to be searched for in an input string, the goto-failure tree including a plurality of branches of sequential states originating at a root node and connected by a number of goto transitions, wherein each non-root state is further connected to a corresponding fail state by a failure transition, the method comprising:

identifying each sequence of states in the goto-failure tree that are connected by a chain of failure transitions; and

encoding the states in response to the identifying to generate a plurality of unique state codes.

2. The method of claim 1 , wherein the state codes do not embody any of the goto transitions.

3. The method of claim 1 , wherein the state codes are generated independently of the goto transitions.

4. The method of claim 1 , further comprising:

selecting a maximum chain length (MCL) value; and

limiting the number of states in each failure chain to the selected MCL value.

5. The method of claim 1 , wherein the encoding comprises:

determining a minimum number of bits required to encode all the states of the goto-failure tree; and

assigning the state codes according to the failure chains, wherein the state codes have varying prefix lengths.

6. The method of claim 5 , wherein for each failure chain, the state codes of states at higher levels of the failure chain have longer prefixes than the state codes of states at lower levels of the failure chain.

7. The method of claim 6 , wherein for each failure chain, the state codes assigned to all the non-root states in the failure chain share a common prefix.

8. The method of claim 5 , wherein for each failure chain, the state code for each state in the failure chain comprises a prefix that is common to the state codes for all higher level states in the failure chain and that is different from the state codes for states in other failure chains.

9. The method of claim 1 , wherein the failure chains are embodied by a failure tree that includes all the states of the goto-failure tree re-organized in a plurality of depth levels according to the number of failure transitions between each state and the root node.

10. The method of claim 9 , wherein the determining comprises:

selecting one of the failure chains;

for each level of the selected failure chain, determining a number N of bits required to represent all children states; and

summing the N values for all the levels.

11. The method of claim 9 , wherein each state code includes a plurality of segments, each segment associated with a corresponding level of the failure tree.

12. The method of claim 11 , wherein the assigning comprises:

selecting a level of the failure tree;

assigning a unique prefix to each state in the selected level; and

for each state in the selected level, storing the assigned unique prefix in the segment corresponding to the selected level.

13. The method of claim 12 , wherein the assigning further comprises:

selecting one of the failure chains; and

for each state in the selected failure chain:

copying the prefix of a parent state in segments of the state code corresponding to lower levels of the failure tree; and

copying ternary don't care bits in segments of the state code corresponding to higher levels of the failure tree.

14. The method of claim 12 , wherein the prefixes comprise Huffman codes.

15. The method of claim 1 , further comprising:

constructing a failure tree that includes all the states of the goto-failure tree re-organized in a plurality of depth levels according to the number of failure transitions between each state and the root node.

16. The method of claim 15 , wherein for any one of the failure chains, the state code for each state comprises a first prefix portion that is common to all higher-level states in the failure chain and comprises a second prefix portion that is unique to the second prefix portions of subsequent states in the failure chain.

17. An optimization engine for representing a plurality of states of a goto-failure tree embodying a number of signatures to be searched for in an input string, the goto-failure tree including a plurality of branches of sequential states originating at a root node and connected by a number of goto transitions, wherein each non-root state is further connected to a corresponding fail state by a failure transition, the engine comprising:

means for identifying each sequence of states in the goto-failure tree that are connected by a chain of failure transitions; and

means for encoding the states in response to the identifying to generate a plurality of unique state codes.

18. The engine of claim 17 , wherein the state codes do not embody any of the goto transitions.

19. The engine of claim 17 , wherein the state codes are generated independently of the goto transitions.

20. The engine of claim 17 , further comprising:

means for selecting a maximum chain length (MCL) value; and

means for limiting the number of states in each failure chain to the selected MCL value.

21. The engine of claim 17 , wherein the means for encoding comprises:

means for determining a minimum number of bits required to encode all the states of the goto-failure tree; and

means for assigning the state codes according to the failure chains, wherein the state codes have varying prefix lengths.

22. The engine of claim 21 , wherein for each failure chain, the state codes of states at higher levels of the failure chain have longer prefixes than the state codes of states at lower levels of the failure chain.

23. The engine of claim 22 , wherein for each failure chain, the state codes assigned to all the non-root states in the failure chain share a common prefix.

24. The engine of claim 23 , wherein for each failure chain, the state code for each state in the failure chain comprises a prefix that is common to the state codes for all higher level states in the failure chain and that is different from the state codes for states in other failure chains.

25. The engine of claim 17 , wherein the failure chains are embodied by a failure tree that includes all the states of the goto-failure tree re-organized in a plurality of depth levels according to the number of failure transitions between each state and the root node.

26. The engine of claim 25 , wherein the means for determining comprises:

means for selecting one of the failure chains;

for each level of the selected failure chain, means for determining a number N of bits required to represent all children states; and

means for summing the N values for all the levels.

27. The engine of claim 25 , wherein each state code includes a plurality of segments, each segment associated with a corresponding level of the failure tree.

28. The engine of claim 27 , wherein the means for assigning comprises:

means for selecting a level of the failure tree;

means for assigning a unique prefix to each state in the selected level; and

for each state in the selected level, means for storing the assigned unique prefix in the segment corresponding to the selected level.

29. The engine of claim 28 , wherein the means for assigning further comprises:

means for selecting one of the failure chains; and

for each state in the selected failure chain:

means for copying the prefix of a parent state in segments of the state code corresponding to lower levels of the failure tree; and

means for copying ternary don't care bits in segments of the state code corresponding to higher levels of the failure tree.

30. The engine of claim 28 , wherein the prefixes comprise Huffman codes.

31. The engine of claim 17 , further comprising:

means for constructing a failure tree that includes all the states of the goto-failure tree re-organized in a plurality of depth levels according to the number of failure transitions between each state and the root node.

32. The engine of claim 31 , wherein for any one of the failure chains, the state code for each state comprises a first prefix portion that is common to all higher-level states in the failure chain and comprises a second prefix portion that is unique to the second prefix portions of subsequent states in the failure chain.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE OF THE MERGER PREVIOUSLY RECORDED ON REEL 047642 FRAME 0417. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT, Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048521/0395 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047642/0417 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
CHANGE OF NAME Recorded Apr 16, 2015
From: NETLOGIC MICROSYSTEMS, INC.
To: NETLOGIC I LLC
Reel/Frame 035443/0824 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2015
From: NETLOGIC I LLC
To: BROADCOM CORPORATION
Reel/Frame 035443/0763 →
RELEASE OF SECURITY INTEREST Recorded Aug 30, 2011
From: SILICON VALLEY BANK
To: NETLOGIC MICROSYSTEMS, INC.; NETLOGIC MICROSYSTEMS INTERNATIONAL LIMITED; NETLOGIC MICROSYSTEMS CAYMANS LIMITED
Reel/Frame 026830/0141 →
SECURITY AGREEMENT Recorded Jul 17, 2009
From: NETLOGIC MICROSYSTEMS, INC.; NETLOGIC MICROSYSTEMS INTERNATIONAL LIMITED; NETLOGIC MICROSYSTEMS CAYMANS LIMITED
To: SILICON VALLEY BANK
Reel/Frame 022973/0710 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2007
From: GUPTA, PANKAJ; VENKATACHARY, SRINIVASAN
To: NETLOGIC MICROSYSTEMS, INC.
Reel/Frame 019621/0607 →