CA2309820A1 - Content addressable memory (cam) engine - Google Patents
Content addressable memory (cam) engine Download PDFInfo
- Publication number
- CA2309820A1 CA2309820A1 CA002309820A CA2309820A CA2309820A1 CA 2309820 A1 CA2309820 A1 CA 2309820A1 CA 002309820 A CA002309820 A CA 002309820A CA 2309820 A CA2309820 A CA 2309820A CA 2309820 A1 CA2309820 A1 CA 2309820A1
- Authority
- CA
- Canada
- Prior art keywords
- key
- stored
- presented
- record
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims 13
- 238000000638 solvent extraction Methods 0.000 claims 7
- 238000013500 data storage Methods 0.000 claims 3
- 230000006870 function Effects 0.000 abstract 1
- 230000005055 memory storage Effects 0.000 abstract 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Abstract
A content addressable memory ("CAM") engine (100) or controller interfaces between a host signal processor (e.g., a microprocessor) and a plurality of known, commercially-available random access memory ("RAM") devices. The CAM engine (100) configures the RAM as content addressable memory, thereby causing the normally location-addressd RAM to function as CAM. The CAM engine (100) thus allows for the benefits of both RAM and CAM devices, such as speed, density, cost and intuitiveness, without their inherent drawbacks. Further, the CAM engine (100) implements various flexible memory storage configurations for the keys and associations stored in RAM. Also, the CAM engine (100) implements certain algorithms that provide for the hashing of data, for table load and unload capabilities, for proximity matching, for dealing with overflow conditions, and for implementing hierarchical search capabilities.
Claims (14)
1. A memory controller adapted to interface with a plurality of normally location-addressed randomly-accessible memory cells, the memory controller comprising an integrated circuit having:
receiving means for receiving a plurality of command signals indicative of data storage and retrieval operations of the memory controller; and signal processing means responsive to the plurality of command signals, for partitioning the plurality of memory cells into at least one table having a first record capacity;
for storing data in certain ones of the plurality of memory cells of the at least one table, the data stored including a plurality of keys and a plurality of associations, wherein said storing comprises:
computing a hash value for each of the data stored; and ordering the table according to the hash values; and said signal processing means further for retrieving data stored in the certain ones of the plurality of memory cells.
receiving means for receiving a plurality of command signals indicative of data storage and retrieval operations of the memory controller; and signal processing means responsive to the plurality of command signals, for partitioning the plurality of memory cells into at least one table having a first record capacity;
for storing data in certain ones of the plurality of memory cells of the at least one table, the data stored including a plurality of keys and a plurality of associations, wherein said storing comprises:
computing a hash value for each of the data stored; and ordering the table according to the hash values; and said signal processing means further for retrieving data stored in the certain ones of the plurality of memory cells.
2. The memory controller of Claim 1, wherein the signal processing means further comprises means for partitioning the plurality of memory cells into a second table having a second record capacity, wherein the first and second record capacities differ.
3. The memory controller of Claim 2, wherein each key is related to one of the plurality of associations.
4. The memory controller of Claim 3, wherein each one of the plurality of keys has a width comprising a number of data bits and wherein the width of the keys in the first table differs from the width of the keys in the second table.
5. The memory controller of Claim 3, wherein each one of the plurality of associations has a width comprising a number of data bits and wherein the width of the associations in the first table differs from the width of the associations in the second table.
6. The memory controller of Claim 2, wherein the signal processing means further comprises means for arranging at least two of the plurality of tables into a hierarchical relationship comprising a parent table and a child table.
7. A memory controller adapted to interface with a plurality of normally location-addressed randomly-accessible memory cells, the memory controller comprising:
receiving means for receiving a plurality of command signals indicative of data storage and retrieval operations of the memory controller; and signal processing means responsive to the command signal:
for partitioning the plurality of memory cells into at least two tables;
for storing data in certain ones of the plurality of memory cells of the tables, the data stored including a plurality of keys and a plurality of associations, wherein each key has a width and is related to one of the plurality of associations;
for arranging at least two of the plurality of tables into a hierarchical relationship comprising a parent table and a child table; and for retrieving data by searching the parent table for the desired key and if that key is not found in the parent table then searching the child table for the desired key, wherein if the width of the key searched for in the parent table is less than the width of the key searched for in the child table then the key searched for in the child table is masked to the number of data bits comprising the key stored in the child table.
receiving means for receiving a plurality of command signals indicative of data storage and retrieval operations of the memory controller; and signal processing means responsive to the command signal:
for partitioning the plurality of memory cells into at least two tables;
for storing data in certain ones of the plurality of memory cells of the tables, the data stored including a plurality of keys and a plurality of associations, wherein each key has a width and is related to one of the plurality of associations;
for arranging at least two of the plurality of tables into a hierarchical relationship comprising a parent table and a child table; and for retrieving data by searching the parent table for the desired key and if that key is not found in the parent table then searching the child table for the desired key, wherein if the width of the key searched for in the parent table is less than the width of the key searched for in the child table then the key searched for in the child table is masked to the number of data bits comprising the key stored in the child table.
8. The memory controller of Claim 2, wherein the signal processing means further comprises means for creating an overflow table when the signal processing means exceeds the record capacity of one of the tables as the signal processing means is storing data in the table.
9. The memory controller of Claim 1, wherein the signal processing means further comprises means for seeking an exact match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
10. The memory controller of Claim 1, wherein the signal processing means further comprises means for seeking the closest approximate match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
11. The memory controller of Claim 10, wherein the means for seeking the closest approximate match uses a Manhattan distance formula.
12. The memory controller of Claim 10, wherein the means for seeking the closest approximate match uses a Euclidian distance formula.
13. The memory controller of Claim 1, wherein the signal processing means further comprises means for storing a linking pointer in certain ones of the plurality of memory cells of the at least one table, wherein the linking pointer is indicative of the certain ones of the plurality of memory cells of the at least one table where the association is stored.
14. The memory controller of Claim 1, wherein the signal processing means further comprises means for storing the plurality of keys in a first bank comprising certain ones of the plurality of memory cells of the at least one table and for storing the plurality of associations in a second bank comprising certain ones of the plurality of memory cells of the at least one table.
17. A content addressable memory device comprising:
a memory controller comprising an integrated circuit having:
receiving means for receiving a plurality of command signals indicative of data storage and retrieval operations of the memory controller;
and signal processing means responsive to the plurality of command signals:
for partitioning the plurality of memory cells into at least one table having a first record capacity;
for storing data in certain ones of the plurality of memory cells of the at least one table, the data stored including a plurality of keys and a plurality of associations, wherein said storing comprises computing a hash value for each of the data stored and ordering the table according to the hash values; and for retrieving data stored in the certain ones of the plurality of memory cells; and a plurality of normally location-addressed randomly-accessible memory cells.
18. The memory controller of Claim 1, wherein the signal processing means further comprises means for unloading to a storage device a portion of the data stored in certain ones of the plurality of memory cells of the at least one table.
19. The memory controller of Claim 18, wherein the signal processing means further comprises means for loading data unloaded to the storage device into certain ones of the plurality of memory cells of the at least one table.
21. The memory controller of Claim 7, wherein the signal processing means further comprises means for seeking an exact match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
22. The memory controller of Claim 7, wherein the signal processing means further comprises means for seeking the closest approximate match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
23. The memory controller of Claim 17, wherein the signal processing means further comprises means for seeking an exact match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
24. The memory controller of Claim 17, wherein the signal processing means further comprises means for seeking the closest approximate match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
25. A method of storing a plurality of data records in a memory structure, wherein each data record has a key and a related association, the method comprising:
configuring a content addressable memory table in a random access memory device, wherein the content addressable memory table comprises storage for the plurality of keys and associations, and wherein the configuring comprises partitioning the content addressable memory table into a plurality of table records each having a table key;
initializing the content addressable memory table, the initializing comprising:
storing a first initialization value in the table key of the first table record; and storing a second initialization value in the table keys of all subsequent table records;
adding a plurality of data records to the content addressable memory table such that the data records are maintained in order according to hash values of the keys of the data records, the adding comprising:
calculating a hash value by applying a hash algorithm to the key of the data record to be stored; and if the table key at the location in the content addressable memory table which corresponds to the hash value contains the second initialization value, writing the data record into that location;
otherwise:
calculating a re-hash value by applying a hash algorithm to the key of the stored record at the location in the content addressable memory table which corresponds to the hash value;
comparing the re-hash value with the hash value; and if the re-hash value is greater than the hash value, pushing down any stored records between the next sequential table record with the second mitialization value in its table key and the stored record with a table key which would hash to a value greater than the hash value, wherein said pushing down continues until said next sequential table record with the second initialization value in the table key is overwritten; and writing the data record into the table record at the location opened by pushing down the stored records;
otherwise:
reading the next sequential table record;
repeating the calculating a re-hash value, comparing the re-hash value, and pushing down the stored records until the re-hash value is less than or equal to the hash; and writing the data record into the table record at the location opened by pushing down the stored records.
26. The method of claim 25, comprising calculating the re-hash value, comparing the re-hash value with the hash value, and reading the next sequential table record, in parallel.
27. The method of claim 25, further comprising retrieving a data record from the memory structure, the retrieving comprising:
calculating a presented hash value by applying a hash algorithm to a presented key;
reading, in address sequence, the keys stored in the content addressable memory table beginning at the address location which corresponds to the presented hash value;
checking for an exact match between the presented key and the stored key after each stored key is read; and continuing said reading and said checking until either the presented key matches the stored key, all address locations which correspond to the presented hash value have been read, or a table record with the second initialization value in the table key has been read.
28. The method of claim 27, comprising reading, checking for an exact match, determining whether all address locations which correspond to the presented hash value have been read, and determining whether a table record with the second initialization value in the table key has been read, in parallel.
29. The method of claim 25, further comprising retrieving a data record from the memory structure, the retrieving comprising:
reading, in address sequence, each key stored in the content addressable memory table;
comparing a presented key with the key stored in the content addressable memory table after each stored key is read, wherein said comparing includes applying a distance formula to the presented key and the stored key in order to determine the closest approximate match to a presented key; and returning the association corresponding to the stored key which is the closest approximate match to the presented key.
30. The method of claim 27, further comprising deleting a data record from the memory structure, the deleting comprising shuffling up all appropriate table keys until the stored key is overwritten if the presented key matches the stored key.
31. A memory controller comprising an integrated circuit including a means for storing a plurality of data records in a memory structure, wherein each data record has a key and a related association, the means for storing comprising:
means for configuring a content addressable memory table in a random access memory device, wherein the content addressable memory table comprises storage for the plurality of keys and associations, and the configuring comprises partitioning the content addressable memory table into a plurality of table records, each having a table key;
means for initializing the content addressable memory table, wherein the initializing comprises:
storing a first initialization value in the table key of the first table record; and storing a second initialization value in the table keys of all subsequent table records;
means for adding a plurality of data records to the content addressable memory table such that the data records are maintained in order according to hash values of the keys of the data records, wherein the adding comprises:
calculating a hash value by applying a hash algorithm to the key of the data record to be stored; and if the table key at the location in the content addressable memory table which corresponds to the hash value contains the second initialization value, writing the data record into that location;
otherwise:
calculating a re-hash value by applying a hash algorithm to the key of the stored record at the location in the content addressable memory table which corresponds to the hash value;
comparing the re-hash value with the hash value; and if the re-hash value is greater than the hash value, pushing down any stored records between the next sequential table record with the second initialization value in its table key and the stored record with a table key which would hash to a value greater than the hash value, wherein said pushing down continues until said next sequential table record with the second initialization value in the table key is overwritten, and writing the data record into the table record at the location opened by pushing down the stored records, otherwise:
reading the next sequential table record;
repeating the calculating a re-hash value, comparing the re-hash value, and pushing down the stored records until the re-hash value is less than or equal to the hash; and writing the data record into the table record at the location opened by pushing down the stored records.
32. The memory controller of claim 31, further comprising means for retrieving a data record from the memory structure, wherein the means for retrieving comprises:
means for calculating a presented hash value by applying a hash algorithm to a presented key;
means for reading, in address sequence, the keys stored in the content addressable memory table beginning at the address location which corresponds to the presented hash value;
means for checking for an exact match between the presented key and the stored key after each stored key is read; and means for continuing said reading and said checking until either the presented key matches the stored key, all address locations which correspond to the presented hash value have been read, or a table record with the second initialization value in the table key has been read.
33. The memory controller of claim 31, further comprising means for retrieving a data record from the memory structure, wherein the retrieving comprises:
means for reading, in address sequence, each key stored in the content addressable memory table;
means for comparing a presented key with the key stored in the content addressable memory table after each stored key is read, wherein said comparing includes applying a distance formula to the presented key and the stored key in order to determine the closest approximate match to a presented key; and means for returning the association corresponding to the stored key which is the closest approximate match to the presented key.
34. The memory controller of claim 32, further comprising means for deleting a data record from the memory structure, wherein the means for deleting comprises shuffling up all appropriate table keys until the stored key is overwritten if the presented key matches the stored key.
35. A method of storing a plurality of data records in a memory structure, wherein each data record has a key, the method comprising:
configuring a table in a random access memory device, wherein the table comprises storage for the plurality of keys, and wherein the configuring comprising partitioning the table into a plurality of table records each having a table key;
storing an initialization value in the table keys of a plurality of table records;
adding a plurality of data records to the table such that the data records are maintained in order according to hash values of the keys, the adding comprising:
calculating a hash value by applying a hash algorithm to the key of the data record to be stored; and writing the data record into that location if the table key at the location in the content addressable memory table which corresponds to the hash value contains the initialization value.
36. The method of claim 35, further comprising retrieving a data record from the memory structure, the retrieving comprising:
calculating a presented hash value by applying a hash algorithm to a presented key;
reading, in address sequence, the keys stored in the table beginning at the address location which corresponds to the presented hash value;
checking for an exact match between the presented key and the stored key after each stored key is read; and continuing said reading and said checking until either the presented key matches the stored key, all address locations which correspond to the presented hash value have been read, or a table record with the initialization value in the table key has been read.
37. The method of claim 36, comprising reading, checking for an exact match, determining whether all address locations which correspond to the presented hash value have been read, and determining whether a table record with the initialization value in the table key has been read, in parallel.
38. The method of claim 35, further comprising retrieving a data record from the memory structure, the retrieving comprising:
reading, in address sequence, each key stored in the table;
comparing a presented key with the key stored in the table after each stored key is read, wherein said comparing includes applying a distance formula to the presented key and the stored key in order to determine the closest approximate match to a presented key; and returning an association corresponding to the stored key which is the closest approximate match to the presented key.
39. The method of claim 36, further comprising deleting a data record from the memory structure, the deleting comprising shuffling up all appropriate table keys until the stored key is overwritten if the presented key matches the storey key.
17. A content addressable memory device comprising:
a memory controller comprising an integrated circuit having:
receiving means for receiving a plurality of command signals indicative of data storage and retrieval operations of the memory controller;
and signal processing means responsive to the plurality of command signals:
for partitioning the plurality of memory cells into at least one table having a first record capacity;
for storing data in certain ones of the plurality of memory cells of the at least one table, the data stored including a plurality of keys and a plurality of associations, wherein said storing comprises computing a hash value for each of the data stored and ordering the table according to the hash values; and for retrieving data stored in the certain ones of the plurality of memory cells; and a plurality of normally location-addressed randomly-accessible memory cells.
18. The memory controller of Claim 1, wherein the signal processing means further comprises means for unloading to a storage device a portion of the data stored in certain ones of the plurality of memory cells of the at least one table.
19. The memory controller of Claim 18, wherein the signal processing means further comprises means for loading data unloaded to the storage device into certain ones of the plurality of memory cells of the at least one table.
21. The memory controller of Claim 7, wherein the signal processing means further comprises means for seeking an exact match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
22. The memory controller of Claim 7, wherein the signal processing means further comprises means for seeking the closest approximate match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
23. The memory controller of Claim 17, wherein the signal processing means further comprises means for seeking an exact match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
24. The memory controller of Claim 17, wherein the signal processing means further comprises means for seeking the closest approximate match between a key presented to the signal processing means and a key stored in certain ones of the plurality of memory cells.
25. A method of storing a plurality of data records in a memory structure, wherein each data record has a key and a related association, the method comprising:
configuring a content addressable memory table in a random access memory device, wherein the content addressable memory table comprises storage for the plurality of keys and associations, and wherein the configuring comprises partitioning the content addressable memory table into a plurality of table records each having a table key;
initializing the content addressable memory table, the initializing comprising:
storing a first initialization value in the table key of the first table record; and storing a second initialization value in the table keys of all subsequent table records;
adding a plurality of data records to the content addressable memory table such that the data records are maintained in order according to hash values of the keys of the data records, the adding comprising:
calculating a hash value by applying a hash algorithm to the key of the data record to be stored; and if the table key at the location in the content addressable memory table which corresponds to the hash value contains the second initialization value, writing the data record into that location;
otherwise:
calculating a re-hash value by applying a hash algorithm to the key of the stored record at the location in the content addressable memory table which corresponds to the hash value;
comparing the re-hash value with the hash value; and if the re-hash value is greater than the hash value, pushing down any stored records between the next sequential table record with the second mitialization value in its table key and the stored record with a table key which would hash to a value greater than the hash value, wherein said pushing down continues until said next sequential table record with the second initialization value in the table key is overwritten; and writing the data record into the table record at the location opened by pushing down the stored records;
otherwise:
reading the next sequential table record;
repeating the calculating a re-hash value, comparing the re-hash value, and pushing down the stored records until the re-hash value is less than or equal to the hash; and writing the data record into the table record at the location opened by pushing down the stored records.
26. The method of claim 25, comprising calculating the re-hash value, comparing the re-hash value with the hash value, and reading the next sequential table record, in parallel.
27. The method of claim 25, further comprising retrieving a data record from the memory structure, the retrieving comprising:
calculating a presented hash value by applying a hash algorithm to a presented key;
reading, in address sequence, the keys stored in the content addressable memory table beginning at the address location which corresponds to the presented hash value;
checking for an exact match between the presented key and the stored key after each stored key is read; and continuing said reading and said checking until either the presented key matches the stored key, all address locations which correspond to the presented hash value have been read, or a table record with the second initialization value in the table key has been read.
28. The method of claim 27, comprising reading, checking for an exact match, determining whether all address locations which correspond to the presented hash value have been read, and determining whether a table record with the second initialization value in the table key has been read, in parallel.
29. The method of claim 25, further comprising retrieving a data record from the memory structure, the retrieving comprising:
reading, in address sequence, each key stored in the content addressable memory table;
comparing a presented key with the key stored in the content addressable memory table after each stored key is read, wherein said comparing includes applying a distance formula to the presented key and the stored key in order to determine the closest approximate match to a presented key; and returning the association corresponding to the stored key which is the closest approximate match to the presented key.
30. The method of claim 27, further comprising deleting a data record from the memory structure, the deleting comprising shuffling up all appropriate table keys until the stored key is overwritten if the presented key matches the stored key.
31. A memory controller comprising an integrated circuit including a means for storing a plurality of data records in a memory structure, wherein each data record has a key and a related association, the means for storing comprising:
means for configuring a content addressable memory table in a random access memory device, wherein the content addressable memory table comprises storage for the plurality of keys and associations, and the configuring comprises partitioning the content addressable memory table into a plurality of table records, each having a table key;
means for initializing the content addressable memory table, wherein the initializing comprises:
storing a first initialization value in the table key of the first table record; and storing a second initialization value in the table keys of all subsequent table records;
means for adding a plurality of data records to the content addressable memory table such that the data records are maintained in order according to hash values of the keys of the data records, wherein the adding comprises:
calculating a hash value by applying a hash algorithm to the key of the data record to be stored; and if the table key at the location in the content addressable memory table which corresponds to the hash value contains the second initialization value, writing the data record into that location;
otherwise:
calculating a re-hash value by applying a hash algorithm to the key of the stored record at the location in the content addressable memory table which corresponds to the hash value;
comparing the re-hash value with the hash value; and if the re-hash value is greater than the hash value, pushing down any stored records between the next sequential table record with the second initialization value in its table key and the stored record with a table key which would hash to a value greater than the hash value, wherein said pushing down continues until said next sequential table record with the second initialization value in the table key is overwritten, and writing the data record into the table record at the location opened by pushing down the stored records, otherwise:
reading the next sequential table record;
repeating the calculating a re-hash value, comparing the re-hash value, and pushing down the stored records until the re-hash value is less than or equal to the hash; and writing the data record into the table record at the location opened by pushing down the stored records.
32. The memory controller of claim 31, further comprising means for retrieving a data record from the memory structure, wherein the means for retrieving comprises:
means for calculating a presented hash value by applying a hash algorithm to a presented key;
means for reading, in address sequence, the keys stored in the content addressable memory table beginning at the address location which corresponds to the presented hash value;
means for checking for an exact match between the presented key and the stored key after each stored key is read; and means for continuing said reading and said checking until either the presented key matches the stored key, all address locations which correspond to the presented hash value have been read, or a table record with the second initialization value in the table key has been read.
33. The memory controller of claim 31, further comprising means for retrieving a data record from the memory structure, wherein the retrieving comprises:
means for reading, in address sequence, each key stored in the content addressable memory table;
means for comparing a presented key with the key stored in the content addressable memory table after each stored key is read, wherein said comparing includes applying a distance formula to the presented key and the stored key in order to determine the closest approximate match to a presented key; and means for returning the association corresponding to the stored key which is the closest approximate match to the presented key.
34. The memory controller of claim 32, further comprising means for deleting a data record from the memory structure, wherein the means for deleting comprises shuffling up all appropriate table keys until the stored key is overwritten if the presented key matches the stored key.
35. A method of storing a plurality of data records in a memory structure, wherein each data record has a key, the method comprising:
configuring a table in a random access memory device, wherein the table comprises storage for the plurality of keys, and wherein the configuring comprising partitioning the table into a plurality of table records each having a table key;
storing an initialization value in the table keys of a plurality of table records;
adding a plurality of data records to the table such that the data records are maintained in order according to hash values of the keys, the adding comprising:
calculating a hash value by applying a hash algorithm to the key of the data record to be stored; and writing the data record into that location if the table key at the location in the content addressable memory table which corresponds to the hash value contains the initialization value.
36. The method of claim 35, further comprising retrieving a data record from the memory structure, the retrieving comprising:
calculating a presented hash value by applying a hash algorithm to a presented key;
reading, in address sequence, the keys stored in the table beginning at the address location which corresponds to the presented hash value;
checking for an exact match between the presented key and the stored key after each stored key is read; and continuing said reading and said checking until either the presented key matches the stored key, all address locations which correspond to the presented hash value have been read, or a table record with the initialization value in the table key has been read.
37. The method of claim 36, comprising reading, checking for an exact match, determining whether all address locations which correspond to the presented hash value have been read, and determining whether a table record with the initialization value in the table key has been read, in parallel.
38. The method of claim 35, further comprising retrieving a data record from the memory structure, the retrieving comprising:
reading, in address sequence, each key stored in the table;
comparing a presented key with the key stored in the table after each stored key is read, wherein said comparing includes applying a distance formula to the presented key and the stored key in order to determine the closest approximate match to a presented key; and returning an association corresponding to the stored key which is the closest approximate match to the presented key.
39. The method of claim 36, further comprising deleting a data record from the memory structure, the deleting comprising shuffling up all appropriate table keys until the stored key is overwritten if the presented key matches the storey key.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/970,718 | 1997-11-14 | ||
US08/970,718 US6226710B1 (en) | 1997-11-14 | 1997-11-14 | Content addressable memory (CAM) engine |
PCT/US1998/024288 WO1999026139A1 (en) | 1997-11-14 | 1998-11-13 | Content addressable memory (cam) engine |
Publications (2)
Publication Number | Publication Date |
---|---|
CA2309820A1 true CA2309820A1 (en) | 1999-05-27 |
CA2309820C CA2309820C (en) | 2010-01-12 |
Family
ID=25517390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002309820A Expired - Fee Related CA2309820C (en) | 1997-11-14 | 1998-11-13 | Content addressable memory (cam) engine |
Country Status (4)
Country | Link |
---|---|
US (3) | US6226710B1 (en) |
EP (1) | EP1029277A4 (en) |
CA (1) | CA2309820C (en) |
WO (1) | WO1999026139A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015143534A1 (en) * | 2014-03-26 | 2015-10-01 | 2419265 Ontario Limited | Solid-state memory device with plurality of memory cards |
Families Citing this family (165)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6430527B1 (en) * | 1998-05-06 | 2002-08-06 | Avici Systems | Prefix search circuitry and method |
US7333484B2 (en) * | 1998-08-07 | 2008-02-19 | Intel Corporation | Services processor having a packet editing unit |
US7133400B1 (en) * | 1998-08-07 | 2006-11-07 | Intel Corporation | System and method for filtering data |
US8074055B1 (en) | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
US6826748B1 (en) | 1999-01-28 | 2004-11-30 | Ati International Srl | Profiling program execution into registers of a computer |
US7111290B1 (en) | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US6954923B1 (en) | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US8121828B2 (en) | 1999-01-28 | 2012-02-21 | Ati Technologies Ulc | Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions |
US6574702B2 (en) | 1999-02-23 | 2003-06-03 | Netlogic Microsystems, Inc. | Method and apparatus for determining an exact match in a content addressable memory device |
US6460112B1 (en) * | 1999-02-23 | 2002-10-01 | Netlogic Microsystems, Llc | Method and apparatus for determining a longest prefix match in a content addressable memory device |
US6539455B1 (en) | 1999-02-23 | 2003-03-25 | Netlogic Microsystems, Inc. | Method and apparatus for determining an exact match in a ternary content addressable memory device |
DE60026518T2 (en) * | 1999-05-21 | 2006-11-16 | Avici Systems, Billerica | FLIT CACHE IN A PACKAGING ROUTER |
US6779107B1 (en) | 1999-05-28 | 2004-08-17 | Ati International Srl | Computer execution by opportunistic adaptation |
WO2001001298A2 (en) * | 1999-06-28 | 2001-01-04 | University College Dublin | Logic event simulation |
US7996670B1 (en) * | 1999-07-08 | 2011-08-09 | Broadcom Corporation | Classification engine in a cryptography acceleration chip |
US6378042B1 (en) | 1999-08-11 | 2002-04-23 | Fast-Chip, Inc. | Caching associative memory |
US7143231B1 (en) * | 1999-09-23 | 2006-11-28 | Netlogic Microsystems, Inc. | Method and apparatus for performing packet classification for policy-based packet routing |
US6934795B2 (en) * | 1999-09-23 | 2005-08-23 | Netlogic Microsystems, Inc. | Content addressable memory with programmable word width and programmable priority |
US7272027B2 (en) * | 1999-09-23 | 2007-09-18 | Netlogic Microsystems, Inc. | Priority circuit for content addressable memory |
US6944709B2 (en) * | 1999-09-23 | 2005-09-13 | Netlogic Microsystems, Inc. | Content addressable memory with block-programmable mask write mode, word width and priority |
US6438674B1 (en) * | 1999-12-21 | 2002-08-20 | Intel Corporation | Hash Cam having a reduced size memory array and its application |
US6640220B1 (en) * | 2000-03-14 | 2003-10-28 | Aeroflex Utmc Microelectronic Systems, Inc. | Search coprocessor subsystem having multiple search engines and dedicated key-table memory for connection to a computer system |
US7089240B2 (en) * | 2000-04-06 | 2006-08-08 | International Business Machines Corporation | Longest prefix match lookup using hash function |
IL136297A0 (en) * | 2000-05-22 | 2001-05-20 | Hywire Ltd | The implementation of a content addressable memory using a ram-cell structure |
US7966421B2 (en) * | 2000-06-21 | 2011-06-21 | SAtech Group, A.B. Limited Liability Company | Method and apparatus for logically expanding the length of a search key |
US7032031B2 (en) * | 2000-06-23 | 2006-04-18 | Cloudshield Technologies, Inc. | Edge adapter apparatus and method |
US6611832B1 (en) * | 2000-10-30 | 2003-08-26 | International Business Machines Corp. | Data structure for longest-matching prefix searching and updating method for search table data structures |
US6629099B2 (en) * | 2000-12-07 | 2003-09-30 | Integrated Silicon Solution, Inc. | Paralleled content addressable memory search engine |
US6959301B2 (en) * | 2001-01-04 | 2005-10-25 | Reuters Limited | Maintaining and reconstructing the history of database content modified by a series of events |
US7379475B2 (en) * | 2002-01-25 | 2008-05-27 | Nvidia Corporation | Communications processor |
TW501009B (en) * | 2001-05-03 | 2002-09-01 | Via Tech Inc | Data access method for asymmetric dual-slot address table and the associated exchange device |
US7002965B1 (en) * | 2001-05-21 | 2006-02-21 | Cisco Technology, Inc. | Method and apparatus for using ternary and binary content-addressable memory stages to classify packets |
EP1390472A4 (en) * | 2001-05-29 | 2004-11-17 | Sirna Therapeutics Inc | Nucleic acid treatment of diseases or conditions related to levels of ras, her2 and hiv |
US7269608B2 (en) * | 2001-05-30 | 2007-09-11 | Sun Microsystems, Inc. | Apparatus and methods for caching objects using main memory and persistent memory |
US7069386B2 (en) * | 2001-08-10 | 2006-06-27 | Connex Technology, Inc. | Associative memory device |
US7383421B2 (en) * | 2002-12-05 | 2008-06-03 | Brightscale, Inc. | Cellular engine for a data processing system |
WO2003017136A1 (en) * | 2001-08-16 | 2003-02-27 | Etagon Israel Ltd. | Using associative memory to perform database operations |
US6744652B2 (en) | 2001-08-22 | 2004-06-01 | Netlogic Microsystems, Inc. | Concurrent searching of different tables within a content addressable memory |
US7197142B2 (en) * | 2001-08-24 | 2007-03-27 | Alten Alexander I | System and methods for a vernam stream cipher |
US6665202B2 (en) | 2001-09-25 | 2003-12-16 | Integrated Device Technology, Inc. | Content addressable memory (CAM) devices that can identify highest priority matches in non-sectored CAM arrays and methods of operating same |
US6993622B2 (en) | 2001-10-31 | 2006-01-31 | Netlogic Microsystems, Inc. | Bit level programming interface in a content addressable memory |
US7210003B2 (en) | 2001-10-31 | 2007-04-24 | Netlogic Microsystems, Inc. | Comparand generation in a content addressable memory |
US8112578B2 (en) | 2001-11-01 | 2012-02-07 | Micron Technology, Inc. | Low power, hash-content addressable memory architecture |
US7054994B2 (en) * | 2002-07-29 | 2006-05-30 | Hy Wire Ltd. | Multiple-RAM CAM device and method therefor |
US7076602B2 (en) * | 2001-11-05 | 2006-07-11 | Hywire Ltd. | Multi-dimensional associative search engine having an external memory |
US7117300B1 (en) * | 2001-12-27 | 2006-10-03 | James David V | Method and apparatus for restricted search operation in content addressable memory (CAM) devices |
US7301961B1 (en) | 2001-12-27 | 2007-11-27 | Cypress Semiconductor Corportion | Method and apparatus for configuring signal lines according to idle codes |
US7237058B2 (en) | 2002-01-14 | 2007-06-26 | Netlogic Microsystems, Inc. | Input data selection for content addressable memory |
US6876559B1 (en) | 2002-02-01 | 2005-04-05 | Netlogic Microsystems, Inc. | Block-writable content addressable memory device |
US6697276B1 (en) | 2002-02-01 | 2004-02-24 | Netlogic Microsystems, Inc. | Content addressable memory device |
US7382637B1 (en) | 2002-02-01 | 2008-06-03 | Netlogic Microsystems, Inc. | Block-writable content addressable memory device |
US6934796B1 (en) | 2002-02-01 | 2005-08-23 | Netlogic Microsystems, Inc. | Content addressable memory with hashing function |
JP2003256265A (en) * | 2002-02-18 | 2003-09-10 | Internatl Business Mach Corp <Ibm> | Search memory, controller for memory search, and memory search method |
US6871265B1 (en) * | 2002-02-20 | 2005-03-22 | Cisco Technology, Inc. | Method and apparatus for maintaining netflow statistics using an associative memory to identify and maintain netflows |
GB0207372D0 (en) * | 2002-03-28 | 2002-05-08 | Cogniscience Ltd | Digital memory |
US6807611B2 (en) | 2002-04-05 | 2004-10-19 | International Business Machine Corporation | High speed selective mirroring of cached data |
US7474657B2 (en) * | 2002-04-30 | 2009-01-06 | University Of Florida Research Foundation, Inc. | Partitioning methods for dynamic router tables |
US7231383B2 (en) * | 2002-05-01 | 2007-06-12 | Lsi Corporation | Search engine for large-width data |
US7177313B2 (en) * | 2002-05-23 | 2007-02-13 | International Business Machines Corporation | Method and system for converting ranges into overlapping prefixes for a longest prefix match |
US7171439B2 (en) * | 2002-06-14 | 2007-01-30 | Integrated Device Technology, Inc. | Use of hashed content addressable memory (CAM) to accelerate content-aware searches |
US7136960B2 (en) * | 2002-06-14 | 2006-11-14 | Integrated Device Technology, Inc. | Hardware hashing of an input of a content addressable memory (CAM) to emulate a wider CAM |
US7114026B1 (en) | 2002-06-17 | 2006-09-26 | Sandeep Khanna | CAM device having multiple index generators |
US7444318B2 (en) * | 2002-07-03 | 2008-10-28 | University Of Florida Research Foundation, Inc. | Prefix partitioning methods for dynamic router tables |
US8737816B2 (en) * | 2002-08-07 | 2014-05-27 | Hollinbeck Mgmt. Gmbh, Llc | System for selecting video tracks during playback of a media production |
US7467129B1 (en) * | 2002-09-06 | 2008-12-16 | Kawasaki Microelectronics, Inc. | Method and apparatus for latency and power efficient database searches |
US20040078536A1 (en) * | 2002-10-22 | 2004-04-22 | Tai-Ming Chen | Authentication mechanism integrated with random access memory and method of use |
JP2004152406A (en) * | 2002-10-30 | 2004-05-27 | Fujitsu Ltd | Associative memory |
US20040123123A1 (en) * | 2002-12-18 | 2004-06-24 | Buer Mark L. | Methods and apparatus for accessing security association information in a cryptography accelerator |
US7191341B2 (en) | 2002-12-18 | 2007-03-13 | Broadcom Corporation | Methods and apparatus for ordering data in a cryptography accelerator |
US7434043B2 (en) | 2002-12-18 | 2008-10-07 | Broadcom Corporation | Cryptography accelerator data routing unit |
US7568110B2 (en) * | 2002-12-18 | 2009-07-28 | Broadcom Corporation | Cryptography accelerator interface decoupling from cryptography processing cores |
US20040123120A1 (en) * | 2002-12-18 | 2004-06-24 | Broadcom Corporation | Cryptography accelerator input interface data handling |
US7003625B2 (en) * | 2002-12-19 | 2006-02-21 | Mosaid Technologies, Inc. | Searching small entities in a wide CAM |
US20040128465A1 (en) * | 2002-12-30 | 2004-07-01 | Lee Micheil J. | Configurable memory bus width |
US20040128464A1 (en) * | 2002-12-30 | 2004-07-01 | Lee Micheil J. | Memory reclamation |
US7680769B2 (en) * | 2003-01-14 | 2010-03-16 | International Business Machines Corporation | Method of creating a database and search keys and for searching the database |
US7043494B1 (en) | 2003-01-28 | 2006-05-09 | Pmc-Sierra, Inc. | Fast, deterministic exact match look-ups in large tables |
US6987683B2 (en) * | 2003-05-19 | 2006-01-17 | Micron Technology, Inc. | Magnitude comparator based content addressable memory for search and sorting |
US7260675B1 (en) * | 2003-07-15 | 2007-08-21 | Integrated Device Technology, Inc. | CAM-based search engines that support pipelined multi-database search operations using encoded multi-database identifiers |
US7389364B2 (en) | 2003-07-22 | 2008-06-17 | Micron Technology, Inc. | Apparatus and method for direct memory access in a hub-based memory system |
US7373514B2 (en) * | 2003-07-23 | 2008-05-13 | Intel Corporation | High-performance hashing system |
US20060018142A1 (en) * | 2003-08-11 | 2006-01-26 | Varadarajan Srinivasan | Concurrent searching of different tables within a content addressable memory |
US20050050237A1 (en) * | 2003-08-28 | 2005-03-03 | Jeddeloh Joseph M. | Memory module and method having on-board data search capabilities and processor-based system using such memory modules |
DE10394291B4 (en) * | 2003-08-29 | 2012-10-11 | Lantiq Deutschland Gmbh | Data switch and communication system using this data switch |
US6925928B2 (en) * | 2003-09-18 | 2005-08-09 | Anthony Fox | Trash compactor for fast food restaurant waste |
US7174441B2 (en) * | 2003-10-17 | 2007-02-06 | Raza Microelectronics, Inc. | Method and apparatus for providing internal table extensibility with external interface |
US7120743B2 (en) | 2003-10-20 | 2006-10-10 | Micron Technology, Inc. | Arbitration system and method for memory responses in a hub-based memory system |
US7082493B1 (en) * | 2003-10-31 | 2006-07-25 | Integrated Device Technology, Inc. | CAM-based search engines and packet coprocessors having results status signaling for completed contexts |
US7634500B1 (en) | 2003-11-03 | 2009-12-15 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
US20050120195A1 (en) * | 2003-11-13 | 2005-06-02 | Alok Kumar | Allocating memory |
US7516119B1 (en) * | 2003-12-12 | 2009-04-07 | Rmi Corporation | Method and apparatus for action group generation and arbitration in a classification engine |
US7359381B2 (en) * | 2004-01-30 | 2008-04-15 | Hewlett-Packard Development Company, L.P. | Parallel hardware arrangement for correlating an external transport address pair with a local endpoint association |
US20050213359A1 (en) * | 2004-03-26 | 2005-09-29 | Kim Jin K | Hybrid content addressable memory |
US8069269B2 (en) * | 2004-08-04 | 2011-11-29 | Emc Corporation | Methods and apparatus for accessing content in a virtual pool on a content addressable storage system |
US20060069857A1 (en) * | 2004-09-24 | 2006-03-30 | Nec Laboratories America, Inc. | Compression system and method |
US7290084B2 (en) * | 2004-11-02 | 2007-10-30 | Integrated Device Technology, Inc. | Fast collision detection for a hashed content addressable memory (CAM) using a random access memory |
US7698465B2 (en) * | 2004-11-23 | 2010-04-13 | Microsoft Corporation | Generalized Paxos |
US7804504B1 (en) | 2004-12-13 | 2010-09-28 | Massachusetts Institute Of Technology | Managing yield for a parallel processing integrated circuit |
US20060136717A1 (en) | 2004-12-20 | 2006-06-22 | Mark Buer | System and method for authentication via a proximate device |
US8295484B2 (en) | 2004-12-21 | 2012-10-23 | Broadcom Corporation | System and method for securing data from a remote input device |
US20060294126A1 (en) * | 2005-06-23 | 2006-12-28 | Afshin Ganjoo | Method and system for homogeneous hashing |
JP4581890B2 (en) * | 2005-07-26 | 2010-11-17 | ソニー株式会社 | Electronic device, recording control method, program, and recording medium |
US7353332B2 (en) * | 2005-10-11 | 2008-04-01 | Integrated Device Technology, Inc. | Switching circuit implementing variable string matching |
US7451293B2 (en) * | 2005-10-21 | 2008-11-11 | Brightscale Inc. | Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing |
US8095542B1 (en) * | 2006-01-03 | 2012-01-10 | Emc Corporation | Methods and apparatus for allowing access to content |
EP1971958A2 (en) * | 2006-01-10 | 2008-09-24 | Brightscale, Inc. | Method and apparatus for processing algorithm steps of multimedia data in parallel processing systems |
US7720251B2 (en) * | 2006-06-23 | 2010-05-18 | Echo 360, Inc. | Embedded appliance for multimedia capture |
US8826023B1 (en) * | 2006-06-30 | 2014-09-02 | Symantec Operating Corporation | System and method for securing access to hash-based storage systems |
US20080016193A1 (en) * | 2006-07-17 | 2008-01-17 | Geoffrey Benjamin Allen | Coordinated upload of content from distributed multimedia capture devices |
US20080034115A1 (en) * | 2006-08-01 | 2008-02-07 | Yuan-Sun Chu | Apparatus for handling hash collisions of hash searching and method using the same |
US20080244238A1 (en) * | 2006-09-01 | 2008-10-02 | Bogdan Mitu | Stream processing accelerator |
WO2008027567A2 (en) * | 2006-09-01 | 2008-03-06 | Brightscale, Inc. | Integral parallel machine |
US20080059763A1 (en) * | 2006-09-01 | 2008-03-06 | Lazar Bivolarski | System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data |
US20080059467A1 (en) * | 2006-09-05 | 2008-03-06 | Lazar Bivolarski | Near full motion search algorithm |
US7644080B2 (en) * | 2006-09-19 | 2010-01-05 | Netlogic Microsystems, Inc. | Method and apparatus for managing multiple data flows in a content search system |
US7783654B1 (en) * | 2006-09-19 | 2010-08-24 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
US7624105B2 (en) * | 2006-09-19 | 2009-11-24 | Netlogic Microsystems, Inc. | Search engine having multiple co-processors for performing inexact pattern search operations |
US7539031B2 (en) * | 2006-09-19 | 2009-05-26 | Netlogic Microsystems, Inc. | Inexact pattern searching using bitmap contained in a bitcheck command |
US7539032B2 (en) | 2006-09-19 | 2009-05-26 | Netlogic Microsystems, Inc. | Regular expression searching of packet contents using dedicated search circuits |
US7962717B2 (en) * | 2007-03-14 | 2011-06-14 | Xmos Limited | Message routing scheme |
US8055599B1 (en) | 2007-07-13 | 2011-11-08 | Werth Larry J | Pattern recognition using cycles or traces in an associative pattern memory (APM), vertical sensors, amplitude sampling, adjacent hashes and fuzzy hashes |
US8131841B2 (en) * | 2007-07-27 | 2012-03-06 | Hewlett-Packard Development Company, L.P. | Method and apparatus for detecting predefined signatures in packet payload |
US7760135B2 (en) * | 2007-11-27 | 2010-07-20 | Lockheed Martin Corporation | Robust pulse deinterleaving |
US7716204B1 (en) * | 2007-12-21 | 2010-05-11 | Netlogic Microsystems, Inc. | Handle allocation managers and methods for integated circuit search engine devices |
US8521951B2 (en) * | 2008-01-16 | 2013-08-27 | S. Aqua Semiconductor Llc | Content addressable memory augmented memory |
US7814267B1 (en) * | 2008-02-04 | 2010-10-12 | Netlogic Microsystems, Inc. | Processor with compare operations based on any of multiple compare data segments |
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
KR100880531B1 (en) * | 2008-07-11 | 2009-01-28 | 정종선 | File creating method for searching of single data, searching method of single data file and storage medium storing rat file for searching of single data file |
US20100033621A1 (en) * | 2008-08-06 | 2010-02-11 | Mediatek Inc. | Video system and memory sharing method |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
JP2010281695A (en) * | 2009-06-04 | 2010-12-16 | Toshiba Corp | Semiconductor integrated circuit |
US20100332718A1 (en) * | 2009-06-26 | 2010-12-30 | Micron Technology, Inc. | System and method for providing configurable latency and/or density in memory devices |
US8261003B2 (en) * | 2010-08-11 | 2012-09-04 | Lsi Corporation | Apparatus and methods for managing expanded capacity of virtual volumes in a storage system |
US8862603B1 (en) | 2010-11-03 | 2014-10-14 | Netlogic Microsystems, Inc. | Minimizing state lists for non-deterministic finite state automatons |
US9465836B2 (en) * | 2010-12-23 | 2016-10-11 | Sap Se | Enhanced business object retrieval |
CA2840579C (en) | 2011-06-30 | 2020-07-07 | Echo 360, Inc. | Methods and apparatus for an embedded appliance |
GB2493195A (en) * | 2011-07-28 | 2013-01-30 | St Microelectronics Res & Dev | Address translation and routing between dies in a system in package. |
US9159420B1 (en) * | 2011-08-16 | 2015-10-13 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for content addressable memory parallel lookup |
WO2013071183A1 (en) * | 2011-11-11 | 2013-05-16 | Tabula, Inc. | Content addressable memory in integrated circuit |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US9251377B2 (en) | 2012-12-28 | 2016-02-02 | Intel Corporation | Instructions processors, methods, and systems to process secure hash algorithms |
US8924741B2 (en) | 2012-12-29 | 2014-12-30 | Intel Corporation | Instruction and logic to provide SIMD secure hashing round slice functionality |
US20140207834A1 (en) * | 2013-01-22 | 2014-07-24 | Dell Products L.P. | Systems and methods for scalable storage name server infrastructure |
US9715525B2 (en) * | 2013-06-28 | 2017-07-25 | Khalifa University Of Science, Technology And Research | Method and system for searching and storing data |
US10038550B2 (en) | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
WO2015089488A1 (en) | 2013-12-12 | 2015-06-18 | Memory Technologies Llc | Channel optimized storage modules |
US10503510B2 (en) | 2013-12-27 | 2019-12-10 | Intel Corporation | SM3 hash function message expansion processors, methods, systems, and instructions |
US9912481B2 (en) | 2014-03-27 | 2018-03-06 | Intel Corporation | Method and apparatus for efficiently executing hash operations |
US9870401B2 (en) * | 2014-04-17 | 2018-01-16 | Wisoncsin Alumni Research Foundation | Database system with highly denormalized database structure |
WO2015178944A1 (en) | 2014-05-23 | 2015-11-26 | Hewlett-Packard Development Company, L.P. | Using location addressed storage as content addressed storage |
US9317719B2 (en) | 2014-09-04 | 2016-04-19 | Intel Corporation | SM3 hash algorithm acceleration processors, methods, systems, and instructions |
US10241708B2 (en) | 2014-09-25 | 2019-03-26 | Hewlett Packard Enterprise Development Lp | Storage of a data chunk with a colliding fingerprint |
US9658854B2 (en) | 2014-09-26 | 2017-05-23 | Intel Corporation | Instructions and logic to provide SIMD SM3 cryptographic hashing functionality |
US10387804B2 (en) | 2014-09-30 | 2019-08-20 | BoonLogic | Implementations of, and methods of use for a pattern memory engine applying associative pattern memory for pattern recognition |
US9851902B2 (en) | 2014-10-09 | 2017-12-26 | Memobit Technologies Ab | Searching memory for a search key |
US11943142B2 (en) | 2014-11-10 | 2024-03-26 | Marvell Asia Pte, LTD | Hybrid wildcard match table |
US11218410B2 (en) | 2014-11-10 | 2022-01-04 | Marvell Asia Pte, Ltd. | Hybrid wildcard match table |
US10116564B2 (en) * | 2014-11-10 | 2018-10-30 | Cavium, Inc. | Hybrid wildcard match table |
US20170185403A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Hardware content-associative data structure for acceleration of set operations |
US11288257B2 (en) * | 2016-05-30 | 2022-03-29 | Sap Se | Memory optimization using data aging in full text indexes |
US10417202B2 (en) | 2016-12-21 | 2019-09-17 | Hewlett Packard Enterprise Development Lp | Storage system deduplication |
CN113590543A (en) * | 2020-04-30 | 2021-11-02 | 伊姆西Ip控股有限责任公司 | Method, apparatus and computer program product for information processing |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4602368A (en) | 1983-04-15 | 1986-07-22 | Honeywell Information Systems Inc. | Dual validity bit arrays |
DE3477622D1 (en) * | 1984-11-30 | 1989-05-11 | Ibm | Memory using conventional cells to perform a ram or an associative memory function |
DE3535215A1 (en) * | 1985-10-02 | 1987-04-02 | Nixdorf Computer Ag | METHOD AND CIRCUIT FOR READING DATA FROM THE MEMORY OF A DATA PROCESSING SYSTEM |
US4758982A (en) * | 1986-01-08 | 1988-07-19 | Advanced Micro Devices, Inc. | Quasi content addressable memory |
US5053951A (en) | 1986-12-23 | 1991-10-01 | Bull Hn Information Systems Inc. | Segment descriptor unit for performing static and dynamic address translation operations |
US4996663A (en) * | 1988-02-02 | 1991-02-26 | Bell Communications Research, Inc. | Methods and apparatus for decontaminating hash tables |
EP0439507B1 (en) | 1988-10-20 | 1996-04-24 | CHUNG, David Siu Fu | Memory structure and method of utilization |
US5317708A (en) | 1990-06-29 | 1994-05-31 | Digital Equipment Corporation | Apparatus and method for an improved content addressable memory |
US5615360A (en) | 1990-11-13 | 1997-03-25 | International Business Machines Corporation | Method for interfacing applications with a content addressable memory |
US5517642A (en) | 1990-11-13 | 1996-05-14 | International Business Machines, Inc. | Inferencing production control computer system |
US5619446A (en) | 1992-01-10 | 1997-04-08 | Kawasaki Steel Corporation | Hierarchical encoder including timing and data detection devices for a content addressable memory |
US5383146A (en) | 1992-06-08 | 1995-01-17 | Music Semiconductors, Inc. | Memory with CAM and RAM partitions |
WO1994003856A1 (en) | 1992-08-07 | 1994-02-17 | Massachusetts Institute Of Technology | Column-associative cache |
US5568415A (en) | 1993-02-19 | 1996-10-22 | Digital Equipment Corporation | Content addressable memory having a pair of memory cells storing don't care states for address translation |
US5386413A (en) * | 1993-03-19 | 1995-01-31 | Bell Communications Research, Inc. | Fast multilevel hierarchical routing table lookup using content addressable memory |
US5450351A (en) * | 1993-11-19 | 1995-09-12 | International Business Machines Corporation | Content addressable memory implementation with random access memory |
US5602764A (en) | 1993-12-22 | 1997-02-11 | Storage Technology Corporation | Comparing prioritizing memory for string searching in a data compression system |
US5640534A (en) | 1994-10-05 | 1997-06-17 | International Business Machines Corporation | Method and system for concurrent access in a data cache array utilizing multiple match line selection paths |
JP2812262B2 (en) | 1995-08-31 | 1998-10-22 | 日本電気株式会社 | Associative memory |
US5796974A (en) | 1995-11-07 | 1998-08-18 | Advanced Micro Devices, Inc. | Microcode patching apparatus and method |
US5761714A (en) * | 1996-04-26 | 1998-06-02 | International Business Machines Corporation | Single-cycle multi-accessible interleaved cache |
US5752260A (en) | 1996-04-29 | 1998-05-12 | International Business Machines Corporation | High-speed, multiple-port, interleaved cache with arbitration of multiple access addresses |
US5706224A (en) | 1996-10-10 | 1998-01-06 | Quality Semiconductor, Inc. | Content addressable memory and random access memory partition circuit |
US5960431A (en) * | 1996-12-19 | 1999-09-28 | International Business Machines Corporation | Method and apparatus for adding data storage bins to a stored computer database while minimizing movement of data and balancing data distribution |
-
1997
- 1997-11-14 US US08/970,718 patent/US6226710B1/en not_active Expired - Lifetime
-
1998
- 1998-11-13 CA CA002309820A patent/CA2309820C/en not_active Expired - Fee Related
- 1998-11-13 EP EP98958578A patent/EP1029277A4/en not_active Withdrawn
- 1998-11-13 WO PCT/US1998/024288 patent/WO1999026139A1/en not_active Application Discontinuation
-
1999
- 1999-02-02 US US09/243,041 patent/US6353873B1/en not_active Expired - Lifetime
-
2000
- 2000-06-16 US US09/596,165 patent/US6473846B1/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015143534A1 (en) * | 2014-03-26 | 2015-10-01 | 2419265 Ontario Limited | Solid-state memory device with plurality of memory cards |
US9177654B2 (en) | 2014-03-26 | 2015-11-03 | Burst Corporation | Solid-state memory device with plurality of memory cards |
Also Published As
Publication number | Publication date |
---|---|
EP1029277A4 (en) | 2004-07-28 |
CA2309820C (en) | 2010-01-12 |
US6353873B1 (en) | 2002-03-05 |
US6473846B1 (en) | 2002-10-29 |
WO1999026139A1 (en) | 1999-05-27 |
EP1029277A1 (en) | 2000-08-23 |
US6226710B1 (en) | 2001-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2309820A1 (en) | Content addressable memory (cam) engine | |
KR100230767B1 (en) | Method of data storage and search for dynamic memory | |
US20110202709A1 (en) | Optimizing storage of common patterns in flash memory | |
US5581743A (en) | CKD to fixed block mapping for optimum performance and space utilization | |
US10031918B2 (en) | File system and method of file access | |
US7231383B2 (en) | Search engine for large-width data | |
US20100235359A1 (en) | File retrieval method and device and time stream file processor | |
KR960005564A (en) | Information storage and how to access this information storage | |
Ahuja et al. | An associative/parallel processor for partial match retrieval using superimposed codes | |
US10990323B2 (en) | Flash memory controller, memory device and method for accessing flash memory module | |
US20110231404A1 (en) | File storage and retrieval method | |
JPS6024657A (en) | Data storing method | |
JPS6127771B2 (en) | ||
US11914587B2 (en) | Systems and methods for key-based indexing in storage devices | |
Fenk et al. | Improving multidimensional range queries of non rectangular volumes specified by a query box set | |
US4914620A (en) | Capacity extensible data storage for use in electronic apparatus | |
JPH0430632B2 (en) | ||
JP3348279B2 (en) | Price lookup data search circuit, search method therefor, and recording medium storing control program therefor | |
JPS60211540A (en) | Data retrieval circuit | |
JP2540821B2 (en) | Database search system | |
JPS5856145A (en) | Data retrieval system | |
JPS6214919B2 (en) | ||
JPH06295313A (en) | Data retrieving device for retrieving file with index | |
JPH027108B2 (en) | ||
JPH0527193B2 (en) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
MKLA | Lapsed |
Effective date: 20181113 |