A search engine includes a storage module to store a plurality of data patterns, a plurality of busses to receive a plurality of representations of a search word, a selector corresponding to at least one of the plurality of data patterns to select one of the plurality of representations of the search word for comparing to the at least one of the plurality of data patterns, and a logic circuit operatively coupled to the storage module, to the plurality of busses, and to the selector to compare the selected one of the plurality of representations of the search word to the at least one of the plurality of data patterns.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A search engine, comprising: a storage module to store a plurality of data patterns; a plurality of busses to receive a plurality of representations of a search word including a first representation of the search word and a second representation of the search word, wherein the second representation of the search word is generated based on the first representation of the search word; a selector corresponding to at least one of the plurality of data patterns to select one of the plurality of representations of the search word for comparing to the at least one of the plurality of data patterns; and a logic circuit operatively coupled to the storage module, to the plurality of busses, and to the selector to compare the selected one of the plurality of representations of the search word to the at least one of the plurality of data patterns.
2. The search engine of claim 1 , wherein the selector includes a one bit control input.
3. The search engine of claim 1 , further comprising a plurality of selectors, each of the plurality of selectors corresponding to a respective one of the plurality of data patterns; wherein each of the plurality of selectors selects between the plurality of representations of the search word.
4. The search engine of claim 1 , wherein the logic circuit compares at least some of the plurality of representations of the search word to at least some of the plurality of data patterns in parallel.
5. The search engine of claim 1 , wherein the logic circuit includes a plurality of comparators, each of the plurality of comparators to independently compare one of the plurality of representations of the search word to a respective one of the plurality of data patterns.
6. The search engine of claim 5 , wherein each of the plurality of comparators includes a set of sub-unit comparators to compare individual sub-units of one of the first representation of the search word or the second representation of the search word to corresponding sub-units of a respective one of the plurality of data patterns; wherein the storage module further comprises: a plurality of selectors to select between the first representation of the search word and the second representation of the search word, each of the plurality of selectors operatively coupled to a respective one of the plurality of comparators and associated with a respective one of the plurality of data patterns; and a ternary data storage coupled to enable inputs of the sub-unit comparators for at least one the plurality of data patterns.
7. The search engine of claim 1 , further comprising a priority encoder coupled to the logic circuit to generate a match result indicative of whether at least one of the plurality data patterns matches a selected one of the first representation of the search word or the second representation of the search word.
8. The search engine of claim 1 , further comprising a converter coupled to a first one of the plurality of busses and a second one of the plurality of busses to receive a first one of the plurality of representations of the search word via the first one of the plurality of busses, to generate a second one of the plurality of representations of the search word, and to propagate the second one of the plurality of representations of the search word via the second one of the plurality of busses.
9. The search engine of claim 1 , wherein the storage module includes a content addressable memory (CAM) unit.
10. The search engine of claim 1 , wherein the plurality of representations of the search word includes an unchanged representation of the search word and an alternative representation of the search word; wherein the logic circuit compares the unchanged representation of the search word and the alternative representation of the search word to respective ones of the plurality of data patterns.
11. The search engine of claim 10 , wherein the logic circuit compares the unchanged representation of the search word and the alternative representation of the search word in parallel.
12. A method for determining whether a search word matches one or more of a plurality of data patterns stored in a content addressable memory, the method comprising: receiving a first representation of the search word; generating at least a second representation of the search word distinct from the first representation of the search word based on the first representation of the search word; and comparing the first representation and the second representation to the plurality of the data patterns.
13. The method of claim 12 , wherein the plurality of the data patterns includes a first subset of data patterns and a second subset of data patterns; and wherein comparing the first representation and the second representation to the plurality of the data patterns includes comparing in parallel the first representation to the first subset of data patterns and the second representation to the second subset of data patterns.
14. The method of claim 13 , further comprising: storing the first subset of data patterns in a first set of rows of a content addressable memory unit; storing the second subset of data patterns in a second set of rows of the content addressable memory unit; and wherein comparing in parallel the first representation to the first subset of data patterns and the second representation to the second subset of data patterns includes: communicating the first representation to the first set of rows via a first bus; and communicating the second representation to the first set of rows via a second bus.
15. The method of claim 12 , wherein receiving a first representation of the search word includes receiving an unchanged representation of the search word; wherein generating at least a second representation of the search word includes generating a changed representation relative to the first representation of the search word; and wherein comparing the first representation and the second representation to the plurality of the data patterns includes comparing each of the changed representation and the unchanged to the plurality of data patterns.
16. The method of claim 12 , wherein comparing the first representation and the second representation to the plurality of the patterns includes, for each of the plurality of patterns, selecting between the first representation and the second representation.
17. The method of claim 16 , wherein comparing the first representation and the second representation to the plurality of the patterns further includes, for each of the plurality of patterns: receiving at least one ternary selector for the pattern; and enabling the comparing of the selected one of the first representation and the second representation to the one of the plurality of pattern based on the received at least one ternary selector.
18. The method of claim 16 , wherein comparing the first representation and the second representation to the plurality of the patterns further includes comparing the first representation to at least one of the plurality of the patterns and comparing the second representation to at least another one of the plurality of the patterns.
19. The method of claim 12 , wherein generating the second representation of the search word includes converting each American Standard Code for Information Interchange (ASCII) character included the first representation of the search word to a lower case ASCII character.
20. The method of claim 12 , wherein generating the second representation of the search word includes converting each American Standard Code for Information Interchange (ASCII) character included the first representation of the search word to an upper case ASCII character.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
April 22, 2008
June 14, 2011
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.