Associative cam apparatus and method for variable length string matching
First Claim
1. Apparatus for finding, within a stored first sequence of data elements, a longest string of stored data elements that matches a string of a second sequence of given data elements, comprising:
- storage for storing said first sequence of data elements,comparison circuitry for comparing a single data element of said second sequence with multiple data elements of said first sequence, and for issuing match signals when matches are found, andcontrol circuitry for causing said comparison circuitry to operate iteratively, each iteration comprising a simultaneous comparison of a data element of said second sequence with the stored multiple data elements, said control circuitry being responsive to said match signals for determining the longest string of said stored data elements that matches a string of said second sequence immediately when the match circuitry, occurs, based on when an interation does not result in issurance of a match signal by said comparison circuitry,wherein each of a plurality of cells includes at least the storage and the comparison circuitry, the cells are associated by signals between adjacent cells, the cells are provided in parallel each iteration with the data element of the second sequence for comparison and wherein said storage comprises locations each for holding one of said data elements of said first sequence,said comparison circuitry comprises a series of comparators each in a different respective one of said cells for comparing one of said data elements of said first sequence with a given data element of said second sequence and for issuing a match signal when a match is found, anddelay circuitry for storing said match signal issued by a said comparator temporarily each in a different respective one of said cells for use in a next iteration on the next data element in said second sequence.
3 Assignments
0 Petitions
Accused Products
Abstract
A variable length string matcher finds the longest string in a stored sequence of data elements (e.g., in a history buffer) that matches a string in a given sequence of data elements. The matcher includes circuitry that operates iteratively to compare data elements of the strings and determine the longest matching string based on when an iteration does not result in issuance of a match signal. In another aspect, the history buffer is an associative content addressable memory (CAM), and the string matcher uses absolute addressing of the CAM to determine the longest matching string.
85 Citations
16 Claims
-
1. Apparatus for finding, within a stored first sequence of data elements, a longest string of stored data elements that matches a string of a second sequence of given data elements, comprising:
-
storage for storing said first sequence of data elements, comparison circuitry for comparing a single data element of said second sequence with multiple data elements of said first sequence, and for issuing match signals when matches are found, and control circuitry for causing said comparison circuitry to operate iteratively, each iteration comprising a simultaneous comparison of a data element of said second sequence with the stored multiple data elements, said control circuitry being responsive to said match signals for determining the longest string of said stored data elements that matches a string of said second sequence immediately when the match circuitry, occurs, based on when an interation does not result in issurance of a match signal by said comparison circuitry, wherein each of a plurality of cells includes at least the storage and the comparison circuitry, the cells are associated by signals between adjacent cells, the cells are provided in parallel each iteration with the data element of the second sequence for comparison and wherein said storage comprises locations each for holding one of said data elements of said first sequence, said comparison circuitry comprises a series of comparators each in a different respective one of said cells for comparing one of said data elements of said first sequence with a given data element of said second sequence and for issuing a match signal when a match is found, and delay circuitry for storing said match signal issued by a said comparator temporarily each in a different respective one of said cells for use in a next iteration on the next data element in said second sequence. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method for finding, within a stored first sequence of data elements, a longest string of stored data elements that matches a string of a second sequence of data elements, comprising:
-
storing said first sequence of data elements, comparing, simultaneously, a single data element of said second sequence with multiple data elements of said first sequence, issuing match signals when matches are found, performing said comparing step in iterations, each iteration comprising comparing a data element of said second sequence with multiple data elements in the stored first sequence, and determining, immediately when the match occurs, the longest string of said stored data elements that matches a string of said second sequence based on when an iteration does not result in issuance of a match signal, wherein the storing, comparing, and performing said comparing are performed in individual cells, and a signal is utilized to associate adjacent cells, the cells are provided in parallel each iteration with the data element of the second sequence for comparison and wherein storing includes storing at locations, each for holding one of said data elements of said first sequence, comparing includes utilizing a series of comparators each in a different respective one of said cells for comparing one of said data elements of said first sequence with a given data element of said second sequence and for issuing a match signal when a match is found, and performing said comparing includes storing said match signal issued temporarily in the step of comparing, wherein each match signal is in a different one of said cells for use in a next iteration on the next data element in said second sequence.
-
Specification