CA2309820A1 - Content addressable memory (cam) engine - Google Patents

Content addressable memory (cam) engine Download PDF

Info

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
Application number
CA002309820A
Other languages
French (fr)
Other versions
CA2309820C (en
Inventor
Timothy A. Melchior
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Frontgrade Colorado Springs LLC
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CA2309820A1 publication Critical patent/CA2309820A1/en
Application granted granted Critical
Publication of CA2309820C publication Critical patent/CA2309820C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital 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/04Digital 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital 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
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query 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.
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.
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.
CA002309820A 1997-11-14 1998-11-13 Content addressable memory (cam) engine Expired - Fee Related CA2309820C (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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