Patentable/Patents/US-8914574
US-8914574

Content addressable memory and method of searching data thereof

PublishedDecember 16, 2014
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

The present invention discloses a content addressable memory and a method of searching data thereof. The method includes generating a hash index data item from a received input data item; searching the cache for presence of a row tag of the RAM data row corresponding to the data item of hash index; in response to presence, searching the RAM for a RAM data item corresponding to the input data item according to the corresponding row tag of the RAM data row; in response to absence, searching the RAM for a RAM data item corresponding to the input data item by using the data item of hash index; and in response to finding a RAM data item corresponding to the input data item in the RAM, outputting data corresponding to the RAM data item. The method can accelerate data search in the CAM.

Patent Claims
13 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A method of searching data in a content addressable memory-that includes a cache and a random access memory (RAM) that stores a plurality of RAM data items by using an array of RAM data rows having a row tag, the method comprising: generating a first data item of hash index from a first input data item; searching the cache for correspondence between a first row tag of a first RAM data row and the first data item of hash index; in response to a cache hit for the first data item of hash index, searching the first RAM data row for a first RAM data item corresponding to the first input data item; generating a second data item of hash index from a second input data item; searching the cache for correspondence between a second row tag and the second data item of hash index; in response to a cache miss for the second data item of hash index, searching the RAM for a second RAM data item corresponding to the second input data item by using the second data item of hash index; and in response to finding correspondence between the second RAM data item and the second input data item in the RAM, outputting data corresponding to the second RAM data item.

2

2. The method according to claim 1 , further comprising: in response to not finding a third RAM data item corresponding to a third input data item in the RAM: deleting a correspondence relation between a third data item of hash index and a corresponding row tag of the RAM data row from the cache; and outputting a result indicating absence of a row tag of the RAM data row corresponding to the third data item of hash index in the cache.

3

3. The method according to claim 1 , wherein searching the cache for correspondence between the second row tag and the second data item of hash index comprises: using the second data item of hash index to locate a particular RAM data row in the RAM having a hash index of RAM data items in the particular RAM data row that is identical with the second data item of hash index; and in response to the data item of hash index of RAM data items in the particular RAM data row being identical with the second data item of hash index, adding a corresponding relation between the second data item of hash index and the row tag of the particular RAM data row in the RAM to the cache.

4

4. The method according to claim 1 wherein, searching the cache for correspondence between a second row tag and the second data item of hash index further comprises: in response to RAM data items of a certain RAM data row in the RAM not comprising the input data item, while a hash index of the RAM data items in the certain RAM data row being identical with the second data item of hash index, searching a next RAM data row pointer at the end of the certain RAM data row, wherein the next RAM data row pointer points to a row tag of the next RAM data row in the RAM, and a hash index of the RAM data items in the next RAM data row is identical with the second data item of hash index; and in response to the RAM data items in the next RAM data row comprising the second input data item, adding the correspondence relation between the second data item of hash index and the row tag of the next data row in the RAM to the cache.

5

5. The method according to claim 1 wherein, searching the cache for correspondence between a second row tag and the second data item of hash index further comprises: in response to RAM data items of a certain RAM data row in the RAM not comprising the second input data item, while a hash index of the RAM data items of the certain RAM data row being identical with the second data item of hash index, searching a next RAM data row pointer at the end of the certain RAM data row, wherein the next RAM data row pointer points to a row tag of the next RAM data row in the RAM, and a hash index of RAM data items in the next RAM data row is identical to the second data item of hash index; and in response to the RAM data items in the next RAM data row comprising the second input data item, exchanging in the RAM, the RAM data items of the next RAM data row comprising the second input data item with RAM data items of the second RAM data row, and adding a correspondence relation between the second data item of hash index and the row tag of the second RAM data row in the RAM to the cache.

6

6. The method of claim 1 , further comprising, for the first data item of hash index using an existing correspondence relation stored in the cache as an index into the RAM at which to begin searching the RAM.

7

7. The method of claim 1 , further comprising adding a particular correspondence relationship to the cache by: determining that the cache is full; removing, in response to determining that the cache is full, a least recently used correspondence relationship from the cache; and adding the particular correspondence relationship to the cache.

8

8. A content addressable memory, comprising: a random access memory (RAM) configured to store a plurality of RAM data items by using an array of RAM data rows, each RAM data row in the array including a row tag; a cache configured to store a previously searched correspondence relation between a data item of hash index and a row tag of a corresponding RAM data row; a hash index generator configured to generate a data item of hash index from a received input data item; a controller configured to: control searching of the cache for a correspondence between a row tag and the data item of hash index; in response to finding the correspondence between a row tag of the RAM data row in the cache and the data item of hash index, search the RAM for a RAM data item corresponding to the received input data item according to the corresponding row tag of the RAM data row; in response to not finding the correspondence between a row tag and the data item of hash index in the cache, search the RAM for a RAM data item corresponding to the received input data item by using the data item of hash index; and in response to finding the RAM data item corresponding to the received input data item in the RAM, output data corresponding to the RAM data item.

9

9. The content addressable memory according to claim 8 , wherein the controller is further configured to: in response to not finding a RAM data item corresponding to the received input data item in the RAM, delete an existing correspondence relation between the data item of hash index and the corresponding row tag of the RAM data row from the cache, and output a result indicating absence of a row tag of the RAM data row corresponding to the data item of hash index in the cache.

10

10. The content addressable memory according to claim 8 , wherein the controller is further configured to: use the data item of hash index to locate a first RAM data row in the RAM, the hash index of the RAM data items in the first RAM data row being identical with the data item of hash index; and in response to the RAM data items in the first RAM data row comprising the received input data item, add a corresponding relation between the data item of hash index and the row tag of the first RAM data row in the RAM to the cache.

11

11. The content addressable memory according to claim 8 , wherein the controller is further configured to: in response to RAM data items in a certain RAM data row in the RAM not comprising the received input data item, while the hash index of the RAM data items in the certain RAM data row being identical with the data item of hash index, search a next RAM data row pointer at the end of the certain RAM data row, wherein the next RAM data row pointer points to the row tag of the next RAM data row in the RAM, and the hash index of the RAM data items in the next RAM data row is identical with the data item of hash index; and in response to the RAM data items in the next RAM data row comprising the received input data item, add a correspondence relation between the data item of hash index and the row tag of the next RAM data row in the RAM to the cache.

12

12. The content addressable memory according to claim 8 , wherein the controller is further configured to: in response to RAM data items in a certain RAM data row in the RAM not comprising the received input data item, while the hash index of the RAM data items in the certain RAM data row being identical with the data item of hash index, search a next RAM data row pointer at the end of the certain RAM data row, wherein the next RAM data row pointer points to the row tag of the next RAM data row in the RAM, and the hash index of the RAM data items in the next RAM data row is identical with the data item of hash index; and in response to the RAM data items in the next RAM data row comprising the received input data item, exchange in the RAM, the RAM data items in the certain RAM data row comprising the received input data item with the RAM data items in the next RAM data row and add a correspondence relation between the data item of hash index and the row tag of the certain RAM data row in the RAM to the cache.

13

13. The content addressable memory according to claim 12 , wherein the controller is further configured to: in response to the next RAM data row pointer at the end of the certain RAM data row being null, output a result indicating that no RAM data item corresponding to the received input data item is found in the RAM.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

February 14, 2012

Publication Date

December 16, 2014

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Content addressable memory and method of searching data thereof” (US-8914574). https://patentable.app/patents/US-8914574

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.