US6490279B1 - Fast data base research and learning apparatus - Google Patents

Fast data base research and learning apparatus Download PDF

Info

Publication number
US6490279B1
US6490279B1 US09/121,586 US12158698A US6490279B1 US 6490279 B1 US6490279 B1 US 6490279B1 US 12158698 A US12158698 A US 12158698A US 6490279 B1 US6490279 B1 US 6490279B1
Authority
US
United States
Prior art keywords
address
memory
bucket
lookup
bus
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.)
Expired - Fee Related
Application number
US09/121,586
Inventor
Honglu Chen
Ying Wang
Tak-Lap Tsui
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.)
Advanced Communication Device Inc
Original Assignee
Advanced Communication Device Inc
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 Advanced Communication Device Inc filed Critical Advanced Communication Device Inc
Priority to US09/121,586 priority Critical patent/US6490279B1/en
Assigned to ADVANCED COMMUNICATION DEVICES, INC. reassignment ADVANCED COMMUNICATION DEVICES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHEN, HONGLU, TSUI, TAK-LAP, WANG, YING
Application granted granted Critical
Publication of US6490279B1 publication Critical patent/US6490279B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems

Definitions

  • This invention relates generally to the system architecture and data management techniques to configure and design a database searching and learning apparatus. More particularly, this invention relates to an improved database searching and learning system to speed up the database searching and learning processes for implementation in single chip Ethernet frame switching system.
  • the database searching and learning processes can be completed within one or two clock cycles. Improved searching and learning process speed also enables a pipelined architecture for constructing systems to carry out database searching and learning processes.
  • Ethernet packet switch fabrics are now required to process gigabit per second, conventional technology is faced with a difficult challenge.
  • the challenge is to perform an address resolution task at a rate of gigabits per second in order to be in synch with such a high data-rate in switching and transmission operation.
  • Limited by the techniques available for address resolution conventional methods are either too slow or too expensive. Practical application of Ethernet packet switch of higher data-rate is therefore hindered by this difficulty.
  • the basic structure of the database entry items and the techniques employed for conducting an address resolution is explained first.
  • Database search logic is a technique applied to map the key of the searched item with the keys of all the items contained in a database. When a match is identified, the associated data in the database is retrieved as output.
  • the database search logic is commonly referred to as lookup engine or address resolution logic.
  • the database is generally referred to as an address table.
  • FIG. 1 shows the structure of a database entry item, which typically comprises three parts. The first part is the key for identifying the item, e.g., an address. The second part is a status data for providing a state of this database entry item. The state of the item may be the data related to information such as validity, age and other control information. The third part is the data item itself.
  • the data item is the data associated with the address.
  • the data may be used as the value of a port number. Details for application of this data item in an Ethernet switching system will be further discussed below.
  • FIG. 2 shows the format of an Ethernet packet processed by an Ethernet switching system.
  • the destination address (DA) is applied to identify the node to which the packet should be forwarded.
  • the source address (SA) is included to indicate the address of the node from which the packed is sent out.
  • the lookup engine i.e., an address resolution logic, for a switching fabric uses the DA as a key to find the destination port and the associated information related to the destination address if applicable.
  • the source address (SA) is used by the automatic learning logic to establish the address table.
  • a typical Ethernet packet switch system is illustrated in FIG. 3.
  • a data packet received from the media is converted into digital format by the physical layer device (PHY).
  • a media access control (MAC) logic is responsible to retrieve the destination address (DA) data embedded in the packet and to pass the DA data as a key.
  • the DA is used by the address resolution logic (ARL) as a key to search of the associated data item in the database.
  • the database is an address table for this application.
  • the ARL searches the address table to find the matched DA to retrieve a data item for providing an address of the destination port
  • the destination port address is returned to the MAC.
  • a request is then sent by the source MAC to the switch fabric to send the packet to the destination MAC. After receiving the packet, the destination MAC will forward the packet to the PHY for further transmission.
  • the rate for data transmission can be as high as 10 9 bits per second.
  • the rate for data transmission can be as high as 10 9 bits per second.
  • the frequency of lookup request for address resolution can reach as high as the calculated value of:
  • FIG. 4 is a functional block diagram of a conventional address resolution logic system.
  • a database search is performed to locate a database entry item matched the destination address contained in the received packet.
  • Conventional database search techniques such as link list search and content addressable memory (CAM) search are further discussed below.
  • FIG. 5 shows the linking configurations of the data entries in each bucket for a link list based address table.
  • FIG. 6 is a flow chart showing the processing steps of an ARL system in conducting a database search on a link-list based address table. After a lookup request is received, the key is first hashed into a bucket number. The search begins by pointing to the first entry of the bucket and then comparing the key with that of the first entry of the bucket. A check is made to find out if the key matches with the data in the first entry.
  • a binary search algorithm can take up to log 2 N cycles where N is the length of the link list. For an unsorted link list, the search can take up N cycles. Similar to the lookup logic, the learning logic of the ARL system will also search if there is a match in the entry matched up with the key. As that shown in FIG.
  • the learning logic will also check if the data is changed when a matched key is identified.
  • the data item in the database will be updated when there is a change in the data. If the key is not found in a bucket, the key and the data are added to the bucket in the learning process by the learning logic.
  • the learning process may take up log 2 N cycles, and for an unsorted link list, it may take up N-cycles. Due to these time-cycle requirement, the link-list based methodology as discussed above is obviously too slow when a system is implemented with high transmission data rate.
  • FIG. 8 is an organizational configuration of a content addressable memory based address table.
  • the CAM based ARL system includes a comparand register for receiving and temporarily storing the key.
  • the ARL system further includes n-comparators. The data stored in the comparand register is compared to the address entry in each of these n-comparators. A matched address is identified and retrieved from the memory as the output data of the search process.
  • the lookup process of a CAM-based address table is shown in FIG. 9 and the learning process is shown in FIG. 10 . With the CAM address table configuration and processing method, the lookup process takes up only one cycle.
  • each data entry of the address table must be provided with an individual comparator.
  • the address table is more expensive due to the comparator requirement, also, the amount of address data that can be stored in such address table is more limited due to the space taken up by these comparators.
  • the learning process of the CAM-based address table has to find an empty space to store a new entry, Therefore, in addition to the operations performed by the comparators, the learning logic may take extra cycles to find the appropriate location to store a new data entry. Therefore, with the CAM-based address table, there is still no guaranty that the lookup and the learning processes can be completed in a single cycle due to the uncertainty of completion of a learning process for continuously updating the database.
  • the difficulties encountered by conventional link-list or content based memory database can be overcome.
  • Another object of the present invention is to provide an improved system configuration and address table structure organized into a plurality of memory banks.
  • the system configuration and address table organization is enabled to take advantage of the very wide data buses, which can be easily implemented inside a silicon chip.
  • the improved database searching and learning system can therefore be conveniently implemented on a semiconductor chip.
  • Another object of the present invention is to provide an improved system configuration and address table structure organized into a plurality of memory banks.
  • the database lookup and learning processes can be completed in a time-duration no more than two clock cycles.
  • the improved system configuration and database organization can be suitable for cascading into pipeline configuration for high-speed lookup and learning processes.
  • the present invention includes an address table apparatus that includes an address bus for receiving input data packets and for hashing a designated bucket number and extracting a key from each of the data packets.
  • the address table apparatus further includes a plurality of memory banks connected to the address bus wherein each memory bank includes a plurality of memory buckets for storing a destination address (DA) and a port number in each of the buckets.
  • the address table apparatus further includes a comparand bus connected to the address bus for receiving the key therefrom.
  • the address table apparatus further includes a plurality of comparators each corresponding to one of the memory banks for receiving the destination address (DA) and the port number from the designated bucket from a corresponding memory bank.
  • the comparators further connected to the comparand bus for receiving and comparing the key to the address from the designated bucket in each of the memory banks.
  • the address table apparatus further includes a result bus connected to the comparators for displaying an output port number from one of the comparators if the key extracted from one the data packets matching the destination address (DA) from one of the designated buckets.
  • FIG. 1 is a data block structure showing the format of a database entry
  • FIG. 2 is a data block structure showing the format of an Ethernet packet
  • FIG. 3 is a functional block diagram for illustrating the system structure of an Ethernet packet switch system
  • FIG. 4 is a functional block diagram showing the processing flow of an address resolution logic and associated address table for an Ethernet packet switch system
  • FIG. 5 is a block diagram showing the structure of a link-list based address table
  • FIG. 6 is a flow chart showing the functional steps performed by a lookup logic on a link list based address table
  • FIG. 7 is a flow chart showing the functional steps performed by a learning logic for a link list based address table
  • FIG. 8 is a functional block diagram showing the system structure of a content addressable memory based address table
  • FIG. 9 is a flow chart showing the functional steps performed by a lookup logic for CAM based address table
  • FIG. 10 is a flow chart showing the functional steps performed by a learning logic for CAM based address table
  • FIG. 11 is a functional block diagram showing the system configuration of a searching and learning system of this invention.
  • FIG. 12 is a flow chart showing the functional steps performed by a lookup logic based on an address table and a system configuration of FIG. 11 according to this invention.
  • FIG. 13 is a flow chart showing the functional steps performed by a learning logic based on an address table and system configuration of FIG. 11 according to this invention.
  • FIG. 14 is a block diagram showing an address lookup system based on a system configuration of FIG. 11 according to this invention.
  • FIG. 15 is a block diagram showing a cascaded address resolution logic employed to perform pipelined operations implemented with the searching and learning system of FIG. 11 according to the present invention.
  • FIG. 11 Please refer to FIG. 11 for a system configuration of a database searching and learning system 100 of the present invention.
  • the address table of this system is divided into N memory blocks 110 .
  • Each memory block is employed to store M data item entries 115 where M and N are positive integers.
  • the key is hashed into a bucket number K where K is an integer and
  • the K th entry of all memory block 110 become active and is made available for comparison.
  • the key is displayed in the comparand bus 120 to be compared with the key stored in all active entries. At most one of the entries from K th entry in one of the N memory blocks can match up with the key.
  • the data stored in the K th entry from one the memory blocks where a matched key is identified is produced from N comparators 125 .
  • the output from the N comparators 125 is transmitted via a result bus 130 to the MAC. In the case when none of the K th entry in all of the N memory blocks is matched up with the key, a default “unknown key” is provided as an output value.
  • this invention discloses an address table apparatus 100 that includes an address bus 105 for receiving input data packets and for hashing a designated bucket number and extracting a key from each of the data packets.
  • the address table apparatus further includes a plurality of memory banks 110 connected to the address bus wherein each memory bank includes a plurality of memory buckets 115 for storing a destination address (DA) and a port number in each of the buckets.
  • the address table apparatus 100 further includes a comparand bus 120 connected to the address bus 105 for receiving the key therefrom.
  • the address table apparatus 100 further includes a plurality of comparators 125 each corresponding to one of the memory banks 110 for receiving the destination address (DA) and the port number from the designated bucket from a corresponding memory bank 110 .
  • the comparators 125 further connected to the comparand bus 120 for receiving and comparing the key to the address from the designated bucket in each of the memory banks.
  • the address table apparatus 100 further includes a result bus 130 connected to the comparators 125 for displaying an output port number from one of the comparators 125 if the key extracted from one the data packets matching the destination address (DA) from one of the designated buckets 115 .
  • the flowchart of FIG. 12 illustrates the processing steps of this database search system.
  • the searching and learning system 100 hashes a key into a bucket number (step 205 ).
  • the searching and learning system 100 compares the key with all entries of the bucket retrieved from each memory bank 110 (step 210 ).
  • a check is made to determine if the key matched with the data entry retrieved from the K th entry of each memory bank 110 (step 215 ). If the key does match the data entry, then the searching and learning system 100 also retrieve the associated data (step 220 ).
  • the retrieved data is then returned as the output data (step 225 ).
  • FIG. 13 is a flow chart for illustrating the processing steps performed by the database searching and learning system 100 of this invention to carry out the learning process.
  • the searching and learning system 100 hashes the key into a bucket number (step 305 ), e.g., bucket number K where K is an integer between 1 and M (see equation 1).
  • a search is performed to find out an empty entry in one of N memory banks (step 310 ).
  • a check is performed to determine if there is an empty-entry is available (step 315 ). When it is determined that an empty entry is available in the K th entry of J th memory bank, the key and the associated data are stored in that empty slot A “learning success” message is returned as an output to the result bus (step 325 ).
  • a “bucket overflow” message is returned (step 330 ) before the process of the learning logic is ended (step 335 ).
  • the learning logic takes one cycle to compare and to find out if the key exists and if the data has been changed, and if there is an empty entry slot to store a new key into the address table. If a new key is required to be stored into the address table, the learning logic takes another cycle to write the key and the associated data into the address table. Therefore, the searching and learning system 100 is provided to complete the learning process in one cycle if no new information is to be written to the database. The searching and learning system 100 is provided to complete the learning process within two cycles when there is new data or changed data to be written into the database.
  • the structure as shown in FIG. 11 is particularly suitable for silicon chip implementation because the data bus can be made very wide, e.g., 1024 bit wide or even wider.
  • the searching and learning processes can be expeditiously performed in parallel by employing a comparator in each memory bank.
  • This architecture enables the completion of a searching operation in one cycle. For the purpose of writing back a data into the address table would take up another cycle.
  • the overhead of managing the address table including learning of the new address, age control of each address entry item can be completed within one or two time cycles. Assuming each data entry for the database is 64 bits and the data bus of 1024 bit wide operating at a 66Mhz frequency, up to 66 million lookup requests and 33 millions learning requests can be supported by the searching and learning system 100 as that shown in FIG. 11 .
  • the system can be upgraded to support higher data rate either by employing a clock of higher frequency or employing a wider data bus.
  • FIG. 14 is another preferred embodiment of address lookup system 400 by applying the searching and learning system configuration similar to that disclosed in FIG. 11 .
  • the address lookup system includes a command queue 405 to receive and temporarily store the command and data associated with each command. The command and the associate data stored in the command queue 405 are then passed to and processed by a command parser 410 to generate either a lookup request or a learning request A lookup request is transferred to a lookup logic 415 and a learning request is transferred to a learning logic 420 .
  • the data associated with the command is a key to be matched.
  • the data includes the key and the associated data such as the port numbers or other types of parameters.
  • the lookup logic or the learning logic performs the processing steps as described above by employing a searching and learning system as that shown in FIG. 11 .
  • the lookup logic 415 or the learning logic 420 either retrieve a data item from or writing a data into the address table respectively during an access to the address table.
  • the results of the lookup logic or the learning logic are then temporarily stored in the result queue 430 .
  • the results are then passed on to a result bus for transfer to an output device to be further processed.
  • FIG. 15 is a diagram showing the address resolution logic modules, 510 and 520 , which are cascaded.
  • the result form a previous module 510 may become a command for a next pipelined module 520 for pipelined processes.
  • the pipelined processes can be implemented in a switch system, which supports the layer- 3 routing switch operations.
  • the first module in the pipelined system an attempt to match a layer- 2 address is first performed. If the layer- 2 address match is not successful, the process is passed on to a next-pipelined module to perform the layer- 3 process. More efficient use of resources and higher switching speed is achieved by employing a routing and switching system with a pipelined architecture.
  • the present invention provides an improved system configuration and address table structure organized into a plurality of memory banks. Therefore, the database lookup and learning processes can be carried out by employing a plurality of comparators in parallel to compare the key with data items stored in specific bucket-slot from a plurality of memory banks. This two-dimensional memory slot array is therefore better organized for carrying out an instant access and key-identification.
  • the difficulties encountered by conventional link-list or content based memory database are thus resolved.
  • the system configuration and the address table organization thus enable a system designer to take advantage of the very wide data buses.
  • the wide data bus can be easily implemented on a silicon chip.
  • the improved database searching and learning system can therefore be conveniently implemented on a semiconductor chip.
  • the database lookup and learning processes can be completed in a time-duration no more than two clock cycles.
  • the improved system configuration and database organization can be suitable for cascading into pipeline configuration for high-speed lookup and learning processes.

Abstract

This invention discloses an improved address table apparatus that includes an address bus for receiving input data packets and for hashing a designated bucket number and extracting a key from each of the data packets. The address table apparatus further includes a plurality of memory banks connected to the address bus wherein each memory bank includes a plurality of memory buckets for storing a designation address (DA) and a port number in each of the buckets. The address table apparatus further includes a comparand bus connected to the address bus for receiving the key therefrom. The address table apparatus further includes a plurality of comparators each corresponding to one of the memory banks for receiving the designation address (DA) and the port number from the designated bucket from a corresponding memory bank. The comparators further connected to the comparand bus for receiving and comparing the key to the address from the designated bucket in each of the memory banks. The address table apparatus further includes a result bus connected to the comparators for displaying an output port number from one of the comparators if the key extracted from one the data packets matching the designation address (DA) from one of the designated buckets.

Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates generally to the system architecture and data management techniques to configure and design a database searching and learning apparatus. More particularly, this invention relates to an improved database searching and learning system to speed up the database searching and learning processes for implementation in single chip Ethernet frame switching system. The database searching and learning processes can be completed within one or two clock cycles. Improved searching and learning process speed also enables a pipelined architecture for constructing systems to carry out database searching and learning processes.
2. Description of the Prior Art
As the Ethernet packet switch fabrics are now required to process gigabit per second, conventional technology is faced with a difficult challenge. The challenge is to perform an address resolution task at a rate of gigabits per second in order to be in synch with such a high data-rate in switching and transmission operation. Limited by the techniques available for address resolution, conventional methods are either too slow or too expensive. Practical application of Ethernet packet switch of higher data-rate is therefore hindered by this difficulty. In order to have better understanding of the technical background, the basic structure of the database entry items and the techniques employed for conducting an address resolution is explained first.
Database search logic is a technique applied to map the key of the searched item with the keys of all the items contained in a database. When a match is identified, the associated data in the database is retrieved as output. For a database employed for storing addresses for packet or cell switch, the database search logic is commonly referred to as lookup engine or address resolution logic. The database is generally referred to as an address table. FIG. 1 shows the structure of a database entry item, which typically comprises three parts. The first part is the key for identifying the item, e.g., an address. The second part is a status data for providing a state of this database entry item. The state of the item may be the data related to information such as validity, age and other control information. The third part is the data item itself. For an address table, the data item is the data associated with the address. For an Ethernet packet switching system, the data may be used as the value of a port number. Details for application of this data item in an Ethernet switching system will be further discussed below.
FIG. 2 shows the format of an Ethernet packet processed by an Ethernet switching system. The destination address (DA), is applied to identify the node to which the packet should be forwarded. The source address (SA) is included to indicate the address of the node from which the packed is sent out The lookup engine, i.e., an address resolution logic, for a switching fabric uses the DA as a key to find the destination port and the associated information related to the destination address if applicable. The source address (SA) is used by the automatic learning logic to establish the address table.
A typical Ethernet packet switch system is illustrated in FIG. 3. A data packet received from the media is converted into digital format by the physical layer device (PHY). A media access control (MAC) logic is responsible to retrieve the destination address (DA) data embedded in the packet and to pass the DA data as a key. The DA is used by the address resolution logic (ARL) as a key to search of the associated data item in the database. The database is an address table for this application. The ARL searches the address table to find the matched DA to retrieve a data item for providing an address of the destination port The destination port address is returned to the MAC. A request is then sent by the source MAC to the switch fabric to send the packet to the destination MAC. After receiving the packet, the destination MAC will forward the packet to the PHY for further transmission. For a gigabit Ethernet system, the rate for data transmission can be as high as 10 9 bits per second. For an Ethernet packet switching system with one ARL shared by 16 MAC ports, there can be as high as 23.8-million address resolution requests per second. Under a worst-scenario assumption, the frequency of lookup request for address resolution can reach as high as the calculated value of:
16* 109 bits/ [(512+64+96) bits]=23.8 *106
Where 512 bits is the minimum packet length with a 64-bit preamble and 96 inter-packet gap. As will be further discussed below, in order to satisfy such a high-speed processing requirement, very expensive ARL system has to be implemented when conventional techniques are applied.
FIG. 4 is a functional block diagram of a conventional address resolution logic system. There are two basic modules, i.e., a lookup logic module and a learning logic module, for an ARL system. Upon receiving a lookup request, a database search is performed to locate a database entry item matched the destination address contained in the received packet Conventional database search techniques such as link list search and content addressable memory (CAM) search are further discussed below.
The structure of a traditional address table is a link-list type table. The keys are hashed into different “buckets”. In each bucket, entries of the data items are chained together through a link list The link lists can be sorted or unsorted lists. FIG. 5 shows the linking configurations of the data entries in each bucket for a link list based address table. FIG. 6 is a flow chart showing the processing steps of an ARL system in conducting a database search on a link-list based address table. After a lookup request is received, the key is first hashed into a bucket number. The search begins by pointing to the first entry of the bucket and then comparing the key with that of the first entry of the bucket. A check is made to find out if the key matches with the data in the first entry. If the key matches, then the data is retrieved, if not, another check is made to determine if this is the last entry in a specific bucket If not, then the process is pointed to a next entry in the bucket and another attempt is performed to match the key with the data. If this data entry is the last entry is the last entry in the bucket, then a “result unknown” is returned. In performing this search, for a sorted link list, a binary search algorithm can take up to log2N cycles where N is the length of the link list. For an unsorted link list, the search can take up N cycles. Similar to the lookup logic, the learning logic of the ARL system will also search if there is a match in the entry matched up with the key. As that shown in FIG. 7, the learning logic will also check if the data is changed when a matched key is identified. The data item in the database will be updated when there is a change in the data. If the key is not found in a bucket, the key and the data are added to the bucket in the learning process by the learning logic. Again, to update or insert a new database item, for a sorted link list, the learning process may take up log2N cycles, and for an unsorted link list, it may take up N-cycles. Due to these time-cycle requirement, the link-list based methodology as discussed above is obviously too slow when a system is implemented with high transmission data rate.
Another conventional method for establishing and searching a database is by employing a content address memory (CAM) technique. FIG. 8 is an organizational configuration of a content addressable memory based address table. The CAM based ARL system includes a comparand register for receiving and temporarily storing the key. The ARL system further includes n-comparators. The data stored in the comparand register is compared to the address entry in each of these n-comparators. A matched address is identified and retrieved from the memory as the output data of the search process. The lookup process of a CAM-based address table is shown in FIG. 9 and the learning process is shown in FIG. 10. With the CAM address table configuration and processing method, the lookup process takes up only one cycle. However, each data entry of the address table must be provided with an individual comparator. Not only the address table is more expensive due to the comparator requirement, also, the amount of address data that can be stored in such address table is more limited due to the space taken up by these comparators. In contrast to the lookup process, the learning process of the CAM-based address table has to find an empty space to store a new entry, Therefore, in addition to the operations performed by the comparators, the learning logic may take extra cycles to find the appropriate location to store a new data entry. Therefore, with the CAM-based address table, there is still no guaranty that the lookup and the learning processes can be completed in a single cycle due to the uncertainty of completion of a learning process for continuously updating the database.
Therefore, a need still exists in the art of local area network communication to provide a new and improved system configuration and database management techniques for carrying out the lookup and learning logic operations for completing the frame switching tasks to match up with the higher data transmission rate. It is desirable that a system can be provided with assurance that the lookup and learning processes can be completed within one or two dock cycles. It is further desirable that such system can be implemented at a lower cost then the currently available CAM based addressable technology. A high-speed ARL operation can be provided that without incurring very expensive hardware configuration as that implemented in current CAM based systems.
SUMMARY OF THE PRESENT INVENTION
It is therefore an object of the present invention to provide an improved system configuration for performing completing the database searching and learning processes within one or two dock cycles such that the aforementioned difficulties and limitations in the prior art can be overcome.
Specifically, it is an object of the present invention to provide an improved system configuration and address table structure organized into a plurality of memory banks. Therefore, the database lookup and learning processes can be carried out by employing a plurality of comparators in parallel to compare the key with data items stored in specific bucket-slot from a plurality of memory banks. This two-dimensional memory slot array is therefore better organized for carrying out an instant access and key-identification. The difficulties encountered by conventional link-list or content based memory database can be overcome.
Another object of the present invention is to provide an improved system configuration and address table structure organized into a plurality of memory banks. The system configuration and address table organization is enabled to take advantage of the very wide data buses, which can be easily implemented inside a silicon chip. The improved database searching and learning system can therefore be conveniently implemented on a semiconductor chip.
Another object of the present invention is to provide an improved system configuration and address table structure organized into a plurality of memory banks. The database lookup and learning processes can be completed in a time-duration no more than two clock cycles. The improved system configuration and database organization can be suitable for cascading into pipeline configuration for high-speed lookup and learning processes.
Briefly, in a preferred embodiment, the present invention includes an address table apparatus that includes an address bus for receiving input data packets and for hashing a designated bucket number and extracting a key from each of the data packets. The address table apparatus further includes a plurality of memory banks connected to the address bus wherein each memory bank includes a plurality of memory buckets for storing a destination address (DA) and a port number in each of the buckets. The address table apparatus further includes a comparand bus connected to the address bus for receiving the key therefrom. The address table apparatus further includes a plurality of comparators each corresponding to one of the memory banks for receiving the destination address (DA) and the port number from the designated bucket from a corresponding memory bank. The comparators further connected to the comparand bus for receiving and comparing the key to the address from the designated bucket in each of the memory banks. The address table apparatus further includes a result bus connected to the comparators for displaying an output port number from one of the comparators if the key extracted from one the data packets matching the destination address (DA) from one of the designated buckets.
These and other objects and advantages of the present invention will no doubt become obvious to those of ordinary skill in the art after having read the following detailed description of the preferred embodiment which is illustrated in the various drawing figures.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a data block structure showing the format of a database entry;
FIG. 2 is a data block structure showing the format of an Ethernet packet;
FIG. 3 is a functional block diagram for illustrating the system structure of an Ethernet packet switch system;
FIG. 4 is a functional block diagram showing the processing flow of an address resolution logic and associated address table for an Ethernet packet switch system;
FIG. 5 is a block diagram showing the structure of a link-list based address table;
FIG. 6 is a flow chart showing the functional steps performed by a lookup logic on a link list based address table;
FIG. 7 is a flow chart showing the functional steps performed by a learning logic for a link list based address table;
FIG. 8 is a functional block diagram showing the system structure of a content addressable memory based address table;
FIG. 9 is a flow chart showing the functional steps performed by a lookup logic for CAM based address table;
FIG. 10 is a flow chart showing the functional steps performed by a learning logic for CAM based address table;
FIG. 11 is a functional block diagram showing the system configuration of a searching and learning system of this invention;
FIG. 12 is a flow chart showing the functional steps performed by a lookup logic based on an address table and a system configuration of FIG. 11 according to this invention;
FIG. 13 is a flow chart showing the functional steps performed by a learning logic based on an address table and system configuration of FIG. 11 according to this invention;
FIG. 14 is a block diagram showing an address lookup system based on a system configuration of FIG. 11 according to this invention;
FIG. 15 is a block diagram showing a cascaded address resolution logic employed to perform pipelined operations implemented with the searching and learning system of FIG. 11 according to the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
Please refer to FIG. 11 for a system configuration of a database searching and learning system 100 of the present invention. The address table of this system is divided into N memory blocks 110. Each memory block is employed to store M data item entries 115 where M and N are positive integers. For a lookup operation, the key is hashed into a bucket number K where K is an integer and
1<K<M  (1)
The Kth entry of all memory block 110 become active and is made available for comparison. The key is displayed in the comparand bus 120 to be compared with the key stored in all active entries. At most one of the entries from Kth entry in one of the N memory blocks can match up with the key. The data stored in the Kth entry from one the memory blocks where a matched key is identified is produced from N comparators 125. The output from the N comparators 125 is transmitted via a result bus 130 to the MAC. In the case when none of the Kth entry in all of the N memory blocks is matched up with the key, a default “unknown key” is provided as an output value.
According to FIG. 11 and the above description, this invention discloses an address table apparatus 100 that includes an address bus 105 for receiving input data packets and for hashing a designated bucket number and extracting a key from each of the data packets. The address table apparatus further includes a plurality of memory banks 110 connected to the address bus wherein each memory bank includes a plurality of memory buckets 115 for storing a destination address (DA) and a port number in each of the buckets. The address table apparatus 100 further includes a comparand bus 120 connected to the address bus 105 for receiving the key therefrom. The address table apparatus 100 further includes a plurality of comparators 125 each corresponding to one of the memory banks 110 for receiving the destination address (DA) and the port number from the designated bucket from a corresponding memory bank 110. The comparators 125 further connected to the comparand bus 120 for receiving and comparing the key to the address from the designated bucket in each of the memory banks. The address table apparatus 100 further includes a result bus 130 connected to the comparators 125 for displaying an output port number from one of the comparators 125 if the key extracted from one the data packets matching the destination address (DA) from one of the designated buckets 115.
The flowchart of FIG. 12 illustrates the processing steps of this database search system. To start the lookup process (step 200), the searching and learning system 100 hashes a key into a bucket number (step 205). The searching and learning system 100 then compares the key with all entries of the bucket retrieved from each memory bank 110 (step 210). A check is made to determine if the key matched with the data entry retrieved from the Kth entry of each memory bank 110 (step 215). If the key does match the data entry, then the searching and learning system 100 also retrieve the associated data (step 220). The retrieved data is then returned as the output data (step 225). On the other hand, if the key does not match with any of the data retrieved from the Kth entry of each memory bank 110, then an “unknown key” is returned (step 230). The lookup process is then ended (step 235). The lookup process can now be carried out in one clock cycle.
FIG. 13 is a flow chart for illustrating the processing steps performed by the database searching and learning system 100 of this invention to carry out the learning process. After the start of the learning process (step 300), the searching and learning system 100 hashes the key into a bucket number (step 305), e.g., bucket number K where K is an integer between 1 and M (see equation 1). A search is performed to find out an empty entry in one of N memory banks (step 310). A check is performed to determine if there is an empty-entry is available (step 315). When it is determined that an empty entry is available in the Kth entry of Jth memory bank, the key and the associated data are stored in that empty slot A “learning success” message is returned as an output to the result bus (step 325). On the other hand, if an empty entry cannot be located in step 315, a “bucket overflow” message is returned (step 330) before the process of the learning logic is ended (step 335). The learning logic takes one cycle to compare and to find out if the key exists and if the data has been changed, and if there is an empty entry slot to store a new key into the address table. If a new key is required to be stored into the address table, the learning logic takes another cycle to write the key and the associated data into the address table. Therefore, the searching and learning system 100 is provided to complete the learning process in one cycle if no new information is to be written to the database. The searching and learning system 100 is provided to complete the learning process within two cycles when there is new data or changed data to be written into the database.
The structure as shown in FIG. 11 is particularly suitable for silicon chip implementation because the data bus can be made very wide, e.g., 1024 bit wide or even wider. The searching and learning processes can be expeditiously performed in parallel by employing a comparator in each memory bank. This architecture enables the completion of a searching operation in one cycle. For the purpose of writing back a data into the address table would take up another cycle. The overhead of managing the address table including learning of the new address, age control of each address entry item can be completed within one or two time cycles. Assuming each data entry for the database is 64 bits and the data bus of 1024 bit wide operating at a 66Mhz frequency, up to 66 million lookup requests and 33 millions learning requests can be supported by the searching and learning system 100 as that shown in FIG. 11. The system can be upgraded to support higher data rate either by employing a clock of higher frequency or employing a wider data bus.
FIG. 14 is another preferred embodiment of address lookup system 400 by applying the searching and learning system configuration similar to that disclosed in FIG. 11. The address lookup system includes a command queue 405 to receive and temporarily store the command and data associated with each command. The command and the associate data stored in the command queue 405 are then passed to and processed by a command parser 410 to generate either a lookup request or a learning request A lookup request is transferred to a lookup logic 415 and a learning request is transferred to a learning logic 420. For a lookup request, the data associated with the command is a key to be matched. For a learning request, the data includes the key and the associated data such as the port numbers or other types of parameters. The lookup logic or the learning logic performs the processing steps as described above by employing a searching and learning system as that shown in FIG. 11. The lookup logic 415 or the learning logic 420 either retrieve a data item from or writing a data into the address table respectively during an access to the address table. The results of the lookup logic or the learning logic are then temporarily stored in the result queue 430. The results are then passed on to a result bus for transfer to an output device to be further processed.
Since the lookup or the learning process can be completed within either a one or two dock cycles, the searching and learning system 100 is very suitable for pipelined operation. FIG. 15 is a diagram showing the address resolution logic modules, 510 and 520, which are cascaded. The result form a previous module 510 may become a command for a next pipelined module 520 for pipelined processes. The pipelined processes can be implemented in a switch system, which supports the layer-3 routing switch operations. The first module in the pipelined system, an attempt to match a layer-2 address is first performed. If the layer-2 address match is not successful, the process is passed on to a next-pipelined module to perform the layer-3 process. More efficient use of resources and higher switching speed is achieved by employing a routing and switching system with a pipelined architecture.
Therefore, an improved system configuration for performing completing the database searching and learning processes within one or two clock cycles is provided. The difficulties and limitations in the prior art are overcome. Specifically, the present invention provides an improved system configuration and address table structure organized into a plurality of memory banks. Therefore, the database lookup and learning processes can be carried out by employing a plurality of comparators in parallel to compare the key with data items stored in specific bucket-slot from a plurality of memory banks. This two-dimensional memory slot array is therefore better organized for carrying out an instant access and key-identification. The difficulties encountered by conventional link-list or content based memory database are thus resolved. The system configuration and the address table organization thus enable a system designer to take advantage of the very wide data buses. The wide data bus can be easily implemented on a silicon chip. The improved database searching and learning system can therefore be conveniently implemented on a semiconductor chip. With the improved system configuration and address table structure organized into a plurality of memory banks, the database lookup and learning processes can be completed in a time-duration no more than two clock cycles. The improved system configuration and database organization can be suitable for cascading into pipeline configuration for high-speed lookup and learning processes.
Although the present invention has been described in terms of the presently preferred embodiment, it is to be understood that such disclosure is not to be interpreted as limiting. Various alternations and modifications will no doubt become apparent to those skilled in the art after reading the above disclosure. Accordingly, it is intended that the appended claims be interpreted as covering all alternations and modifications as fall within the true spirit and scope of the invention.

Claims (15)

We claim:
1. An address table apparatus comprising:
an address bus for receiving input data packets and for hashing a designated bucket number and extracting a key from each of said data packets;
a plurality of memory banks connected directly to said address bus wherein each memory bank includes a plurality of memory buckets for storing a destination address (DA) and a port number for each of said packets in each of said buckets having a bucket number corresponding to a bucket number hashed from said each of said data packets;
a comparand bus connected to said address bus for receiving said key therefrom;
a plurality of comparators each corresponding to one of said memory banks for directly connected to and receiving said destination address (DA) and said port number from said designated bucket from a corresponding memory bank, said comparators further connected directly to said comparand bus for receiving and comparing said key to said address from said designated bucket in each of said memory banks; and
a result bus connected directly to said comparators for displaying an output port number from one of said comparators if said key extracted from one said data packets matching said destination address (DA) from one of said designated buckets.
2. The address table apparatus of claim 1 wherein:
said address bus, said comparand bus, said result bus, and
said memory banks are disposed on a semiconductor chip.
3. The address table apparatus of claim 2 wherein:
said address bus and said comparand bus having a bus-width equal to or more than 1024 bits.
4. The address table apparatus of claim 1 further comprising:
a command queue for receiving and temporarily storing a plurality of lookup/learning commands therein; and
a command parser for processing said lookup/learning commands for generating said data packets for inputting to said data bus.
5. The address table apparatus of claim 4 further comprising:
a result queue for receiving and temporarily storing said port number from said result bus.
6. A method for performing a lookup operation over an address table comprising:
(a) receiving input data packets from an input address bus for hashing a designated bucket number and extracting a key from each of said data packets;
(b) reading a destination address (DA) and a port number from a memory bucket corresponding to said designated bucket number from each of a plurality of memory banks each having a plurality of said memory buckets for storing a destination address (DA) and a port number in each of said memory buckets;
(c) employing a plurality of comparators for receiving said destination address (DA) and said port number and for comparing said key to said address from said designated bucket in each of said memory banks; and
(d) displaying an output port number from one of said comparators if said key extracted from one said data packets matching said destination address (DA) from one of said buckets corresponding to said designated bucket number.
7. The method for performing a lookup operation over an address table of claim 6 further comprising:
(e) displaying an unknown key if said key extracted from one said data packets does not match any of said destination addresses (DA) from all of said buckets corresponding to said designated bucket number.
8. A method for performing a learning operation over an address table comprising:
(a) receiving an input data packet from an input address bus for hashing a key into a designated bucket number;
(b) finding an empty memory bucket among a plurality of memory buckets corresponding to said designated bucket number from a plurality of memory banks wherein each of said memory banks configured for having a plurality of memory buckets; and
(c) storing said key and said data packet in said empty memory bucket found in one of said memory banks and returning a learning success message if an empty memory bucket is found and returning a bucket overflow message if no empty memory bucket is found in said step (b).
9. The method for performing a learning operation over an address table of claim 8 further comprising:
(d) returning a bucket overflow message when none of the memory buckets corresponding to said designated bucket number from said plurality of memory banks is empty.
10. The method for performing a learning operation over an address table of claim 8 wherein:
said step (c) of storing data of said data packet in said empty memory bucket is a step of storing a destination address and port number in said empty memory bucket.
11. An address table apparatus comprising:
a command queue for receiving and temporarily storing a plurality of lookup/learning commands therein;
a command parser for receiving from said command queue and for processing said lookup/learning commands for generating a lookup command or a learning command;
a lookup logic for receiving and processing said lookup command for generating a designated bucket number and a lookup key number;
an address table having a plurality of memory banks connected to said lookup logic wherein each of said memory banks includes a plurality of memory buckets for storing a lookup address and a lookup output data in each of said buckets;
a comparand bus connected directly to said lookup logic for receiving said lookup key therefrom;
a plurality of comparators each corresponding to one of said memory banks for receiving said lookup address and said lookup data from a memory corresponding to said designated bucket number of a corresponding memory bank, said comparators further connected to said comparand bus for receiving and comparing said lookup key to said lookup address from each of said memory buckets corresponding to said designated bucket number; and
a result queue connected to said comparators for receiving and temporary storing a lookup output data from one of said comparators if said lookup key matching said lookup address from one of said memory buckets.
12. The address table apparatus of claim 11 further comprising:
a learning logic for receiving and processing said learning command for generating a designated bucket number and a memory-bucket storage data;
said learning logic further having an empty memory bucket means for searching an empty memory bucket from a plurality of memory buckets corresponding to said designated bucket number in each of said memory banks; and
said learning logic further having a data-storing means for determining an empty memory bucket is found and for storing said memory-bucket storage data into said empty memory bucket.
13. The address table apparatus of claim 12 wherein:
said command queue, said command parser, said lookup logic, said learning logic, said comparand bus, said result queue, and said address table are disposed on a semiconductor chip.
14. The address table apparatus of claim 13 further comprising:
an address bus for passing said lookup command and said learning command to said address table; and
said address bus and said comparand bus having a bus-width equal to or more than 1024 bits.
15. The address table apparatus of claim 11 further comprising:
a cascaded address table apparatus provided for receiving a command from said address table apparatus for pipelined operation.
US09/121,586 1998-07-23 1998-07-23 Fast data base research and learning apparatus Expired - Fee Related US6490279B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/121,586 US6490279B1 (en) 1998-07-23 1998-07-23 Fast data base research and learning apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/121,586 US6490279B1 (en) 1998-07-23 1998-07-23 Fast data base research and learning apparatus

Publications (1)

Publication Number Publication Date
US6490279B1 true US6490279B1 (en) 2002-12-03

Family

ID=22397631

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/121,586 Expired - Fee Related US6490279B1 (en) 1998-07-23 1998-07-23 Fast data base research and learning apparatus

Country Status (1)

Country Link
US (1) US6490279B1 (en)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020085585A1 (en) * 2000-11-14 2002-07-04 Altima Communications, Inc. Linked network switch configuration
WO2003051006A1 (en) * 2001-12-07 2003-06-19 Vitesse Semiconductor Company A networking element adapted to receive and output also preambles of data packets or frames
US6633548B2 (en) * 2001-01-30 2003-10-14 Nokia Intelligent Edge Routers Inc. Method and apparatus for ternary content addressable memory (TCAM) table management
US20040114568A1 (en) * 2002-12-12 2004-06-17 Beverly Harlan T. Address search
US20050154681A1 (en) * 2001-04-05 2005-07-14 Audible Magic Corporation Copyright detection and protection system and method
US20050163121A1 (en) * 2003-01-29 2005-07-28 Fujitsu Limited Packet identification device and packet identification method
US20060034177A1 (en) * 2004-07-28 2006-02-16 Audible Magic Corporation System for distributing decoy content in a peer to peer network
US20060261988A1 (en) * 2005-05-23 2006-11-23 Sony Corporation Character string retrieving circuit and character string retrieving method
US7486689B1 (en) * 2004-03-29 2009-02-03 Sun Microsystems, Inc. System and method for mapping InfiniBand communications to an external port, with combined buffering of virtual lanes and queue pairs
US7562012B1 (en) 2000-11-03 2009-07-14 Audible Magic Corporation Method and apparatus for creating a unique audio signature
US20090316700A1 (en) * 2008-06-19 2009-12-24 Martin White Cascaded memory tables for searching
US7877438B2 (en) 2001-07-20 2011-01-25 Audible Magic Corporation Method and apparatus for identifying new media content
US7917645B2 (en) 2000-02-17 2011-03-29 Audible Magic Corporation Method and apparatus for identifying media content presented on a media playing device
US8006314B2 (en) 2007-07-27 2011-08-23 Audible Magic Corporation System for identifying content of digital data
US8082150B2 (en) 2001-07-10 2011-12-20 Audible Magic Corporation Method and apparatus for identifying an unknown work
US8199651B1 (en) 2009-03-16 2012-06-12 Audible Magic Corporation Method and system for modifying communication flows at a port level
US8332326B2 (en) 2003-02-01 2012-12-11 Audible Magic Corporation Method and apparatus to identify a work received by a processing system
US8588229B1 (en) * 2001-12-12 2013-11-19 Marvell International Ltd. Multiple address databases in a switch without the need for extra memory
US8640179B1 (en) 2000-09-14 2014-01-28 Network-1 Security Solutions, Inc. Method for using extracted features from an electronic work
US8972481B2 (en) 2001-07-20 2015-03-03 Audible Magic, Inc. Playlist generation method and apparatus
US9081778B2 (en) 2012-09-25 2015-07-14 Audible Magic Corporation Using digital fingerprints to associate data with a work
US20170180261A1 (en) * 2015-12-18 2017-06-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Avoiding dropped data packets on a network transmission

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414704A (en) * 1992-10-22 1995-05-09 Digital Equipment Corporation Address lookup in packet data communications link, using hashing and content-addressable memory
US5757795A (en) * 1996-04-25 1998-05-26 Compaq Computer Corporation Method and apparatus for hashing addresses in a network switch
US5864554A (en) * 1993-10-20 1999-01-26 Lsi Logic Corporation Multi-port network adapter
US5887187A (en) * 1993-10-20 1999-03-23 Lsi Logic Corporation Single chip network adapter apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414704A (en) * 1992-10-22 1995-05-09 Digital Equipment Corporation Address lookup in packet data communications link, using hashing and content-addressable memory
US5864554A (en) * 1993-10-20 1999-01-26 Lsi Logic Corporation Multi-port network adapter
US5887187A (en) * 1993-10-20 1999-03-23 Lsi Logic Corporation Single chip network adapter apparatus
US5757795A (en) * 1996-04-25 1998-05-26 Compaq Computer Corporation Method and apparatus for hashing addresses in a network switch

Cited By (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917645B2 (en) 2000-02-17 2011-03-29 Audible Magic Corporation Method and apparatus for identifying media content presented on a media playing device
US10194187B2 (en) 2000-02-17 2019-01-29 Audible Magic Corporation Method and apparatus for identifying media content presented on a media playing device
US9049468B2 (en) 2000-02-17 2015-06-02 Audible Magic Corporation Method and apparatus for identifying media content presented on a media playing device
US9883253B1 (en) 2000-09-14 2018-01-30 Network-1 Technologies, Inc. Methods for using extracted feature vectors to perform an action associated with a product
US9544663B1 (en) 2000-09-14 2017-01-10 Network-1 Technologies, Inc. System for taking action with respect to a media work
US10621227B1 (en) 2000-09-14 2020-04-14 Network-1 Technologies, Inc. Methods for using extracted features to perform an action
US10621226B1 (en) 2000-09-14 2020-04-14 Network-1 Technologies, Inc. Methods for using extracted features to perform an action associated with selected identified image
US10521471B1 (en) 2000-09-14 2019-12-31 Network-1 Technologies, Inc. Method for using extracted features to perform an action associated with selected identified image
US10552475B1 (en) 2000-09-14 2020-02-04 Network-1 Technologies, Inc. Methods for using extracted features to perform an action
US10540391B1 (en) 2000-09-14 2020-01-21 Network-1 Technologies, Inc. Methods for using extracted features to perform an action
US9256885B1 (en) 2000-09-14 2016-02-09 Network-1 Technologies, Inc. Method for linking an electronic media work to perform an action
US10521470B1 (en) 2000-09-14 2019-12-31 Network-1 Technologies, Inc. Methods for using extracted features to perform an action associated with selected identified image
US10367885B1 (en) 2000-09-14 2019-07-30 Network-1 Technologies, Inc. Methods for using extracted features to perform an action associated with selected identified image
US8904465B1 (en) 2000-09-14 2014-12-02 Network-1 Technologies, Inc. System for taking action based on a request related to an electronic media work
US10303714B1 (en) 2000-09-14 2019-05-28 Network-1 Technologies, Inc. Methods for using extracted features to perform an action
US10305984B1 (en) 2000-09-14 2019-05-28 Network-1 Technologies, Inc. Methods for using extracted features to perform an action associated with selected identified image
US10303713B1 (en) 2000-09-14 2019-05-28 Network-1 Technologies, Inc. Methods for using extracted features to perform an action
US10205781B1 (en) 2000-09-14 2019-02-12 Network-1 Technologies, Inc. Methods for using extracted features to perform an action associated with selected identified image
US10108642B1 (en) 2000-09-14 2018-10-23 Network-1 Technologies, Inc. System for using extracted feature vectors to perform an action associated with a work identifier
US10073862B1 (en) 2000-09-14 2018-09-11 Network-1 Technologies, Inc. Methods for using extracted features to perform an action associated with selected identified image
US10063940B1 (en) 2000-09-14 2018-08-28 Network-1 Technologies, Inc. System for using extracted feature vectors to perform an action associated with a work identifier
US10063936B1 (en) 2000-09-14 2018-08-28 Network-1 Technologies, Inc. Methods for using extracted feature vectors to perform an action associated with a work identifier
US10057408B1 (en) 2000-09-14 2018-08-21 Network-1 Technologies, Inc. Methods for using extracted feature vectors to perform an action associated with a work identifier
US8904464B1 (en) 2000-09-14 2014-12-02 Network-1 Technologies, Inc. Method for tagging an electronic media work to perform an action
US9832266B1 (en) 2000-09-14 2017-11-28 Network-1 Technologies, Inc. Methods for using extracted features to perform an action associated with identified action information
US9282359B1 (en) 2000-09-14 2016-03-08 Network-1 Technologies, Inc. Method for taking action with respect to an electronic media work
US9824098B1 (en) 2000-09-14 2017-11-21 Network-1 Technologies, Inc. Methods for using extracted features to perform an action associated with identified action information
US9805066B1 (en) 2000-09-14 2017-10-31 Network-1 Technologies, Inc. Methods for using extracted features and annotations associated with an electronic media work to perform an action
US9807472B1 (en) 2000-09-14 2017-10-31 Network-1 Technologies, Inc. Methods for using extracted feature vectors to perform an action associated with a product
US9781251B1 (en) 2000-09-14 2017-10-03 Network-1 Technologies, Inc. Methods for using extracted features and annotations associated with an electronic media work to perform an action
US9558190B1 (en) 2000-09-14 2017-01-31 Network-1 Technologies, Inc. System and method for taking action with respect to an electronic media work
US8782726B1 (en) 2000-09-14 2014-07-15 Network-1 Technologies, Inc. Method for taking action based on a request related to an electronic media work
US9538216B1 (en) 2000-09-14 2017-01-03 Network-1 Technologies, Inc. System for taking action with respect to a media work
US8640179B1 (en) 2000-09-14 2014-01-28 Network-1 Security Solutions, Inc. Method for using extracted features from an electronic work
US9536253B1 (en) 2000-09-14 2017-01-03 Network-1 Technologies, Inc. Methods for linking an electronic media work to perform an action
US8656441B1 (en) 2000-09-14 2014-02-18 Network-1 Technologies, Inc. System for using extracted features from an electronic work
US9529870B1 (en) 2000-09-14 2016-12-27 Network-1 Technologies, Inc. Methods for linking an electronic media work to perform an action
US9348820B1 (en) 2000-09-14 2016-05-24 Network-1 Technologies, Inc. System and method for taking action with respect to an electronic media work and logging event information related thereto
US8086445B2 (en) 2000-11-03 2011-12-27 Audible Magic Corporation Method and apparatus for creating a unique audio signature
US7562012B1 (en) 2000-11-03 2009-07-14 Audible Magic Corporation Method and apparatus for creating a unique audio signature
US6850542B2 (en) * 2000-11-14 2005-02-01 Broadcom Corporation Linked network switch configuration
US20020085585A1 (en) * 2000-11-14 2002-07-04 Altima Communications, Inc. Linked network switch configuration
US6633548B2 (en) * 2001-01-30 2003-10-14 Nokia Intelligent Edge Routers Inc. Method and apparatus for ternary content addressable memory (TCAM) table management
US8645279B2 (en) 2001-04-05 2014-02-04 Audible Magic Corporation Copyright detection and protection system and method
US9589141B2 (en) 2001-04-05 2017-03-07 Audible Magic Corporation Copyright detection and protection system and method
US20050154681A1 (en) * 2001-04-05 2005-07-14 Audible Magic Corporation Copyright detection and protection system and method
US20050154680A1 (en) * 2001-04-05 2005-07-14 Audible Magic Corporation Copyright detection and protection system and method
US7565327B2 (en) 2001-04-05 2009-07-21 Audible Magic Corporation Copyright detection and protection system and method
US8775317B2 (en) 2001-04-05 2014-07-08 Audible Magic Corporation Copyright detection and protection system and method
US7707088B2 (en) 2001-04-05 2010-04-27 Audible Magic Corporation Copyright detection and protection system and method
US7711652B2 (en) 2001-04-05 2010-05-04 Audible Magic Corporation Copyright detection and protection system and method
US7797249B2 (en) 2001-04-05 2010-09-14 Audible Magic Corporation Copyright detection and protection system and method
US8484691B2 (en) * 2001-04-05 2013-07-09 Audible Magic Corporation Copyright detection and protection system and method
US8082150B2 (en) 2001-07-10 2011-12-20 Audible Magic Corporation Method and apparatus for identifying an unknown work
US10025841B2 (en) 2001-07-20 2018-07-17 Audible Magic, Inc. Play list generation method and apparatus
US8972481B2 (en) 2001-07-20 2015-03-03 Audible Magic, Inc. Playlist generation method and apparatus
US7877438B2 (en) 2001-07-20 2011-01-25 Audible Magic Corporation Method and apparatus for identifying new media content
WO2003051006A1 (en) * 2001-12-07 2003-06-19 Vitesse Semiconductor Company A networking element adapted to receive and output also preambles of data packets or frames
US8588229B1 (en) * 2001-12-12 2013-11-19 Marvell International Ltd. Multiple address databases in a switch without the need for extra memory
US20040114568A1 (en) * 2002-12-12 2004-06-17 Beverly Harlan T. Address search
US8018935B2 (en) * 2002-12-12 2011-09-13 Intel Corporation Address search
US20050163121A1 (en) * 2003-01-29 2005-07-28 Fujitsu Limited Packet identification device and packet identification method
US7457292B2 (en) * 2003-01-29 2008-11-25 Fujitsu Limited Packet identification device and packet identification method
US8332326B2 (en) 2003-02-01 2012-12-11 Audible Magic Corporation Method and apparatus to identify a work received by a processing system
US7486689B1 (en) * 2004-03-29 2009-02-03 Sun Microsystems, Inc. System and method for mapping InfiniBand communications to an external port, with combined buffering of virtual lanes and queue pairs
US20060034177A1 (en) * 2004-07-28 2006-02-16 Audible Magic Corporation System for distributing decoy content in a peer to peer network
US8130746B2 (en) 2004-07-28 2012-03-06 Audible Magic Corporation System for distributing decoy content in a peer to peer network
US7221291B2 (en) * 2005-05-23 2007-05-22 Sony Corporation Character string retrieving circuit and character string retrieving method
US20060261988A1 (en) * 2005-05-23 2006-11-23 Sony Corporation Character string retrieving circuit and character string retrieving method
CN1870131B (en) * 2005-05-23 2010-06-23 索尼株式会社 Character string retrieving circuit and character string retrieving method
US10181015B2 (en) 2007-07-27 2019-01-15 Audible Magic Corporation System for identifying content of digital data
US8006314B2 (en) 2007-07-27 2011-08-23 Audible Magic Corporation System for identifying content of digital data
US9268921B2 (en) 2007-07-27 2016-02-23 Audible Magic Corporation System for identifying content of digital data
US8732858B2 (en) 2007-07-27 2014-05-20 Audible Magic Corporation System for identifying content of digital data
US8112818B2 (en) 2007-07-27 2012-02-07 Audible Magic Corporation System for identifying content of digital data
US9785757B2 (en) 2007-07-27 2017-10-10 Audible Magic Corporation System for identifying content of digital data
US20090316700A1 (en) * 2008-06-19 2009-12-24 Martin White Cascaded memory tables for searching
US8837487B2 (en) 2008-06-19 2014-09-16 Marvell World Trade Ltd. Cascaded memory tables for searching
US8243733B2 (en) 2008-06-19 2012-08-14 Marvell World Trade Ltd. Cascaded memory tables for searching
US8199651B1 (en) 2009-03-16 2012-06-12 Audible Magic Corporation Method and system for modifying communication flows at a port level
US9608824B2 (en) 2012-09-25 2017-03-28 Audible Magic Corporation Using digital fingerprints to associate data with a work
US9081778B2 (en) 2012-09-25 2015-07-14 Audible Magic Corporation Using digital fingerprints to associate data with a work
US10698952B2 (en) 2012-09-25 2020-06-30 Audible Magic Corporation Using digital fingerprints to associate data with a work
US10425344B2 (en) * 2015-12-18 2019-09-24 Avago Technologies International Sales Pte. Limited Avoiding dropped data packets on a network transmission
US20170180261A1 (en) * 2015-12-18 2017-06-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Avoiding dropped data packets on a network transmission

Similar Documents

Publication Publication Date Title
US6490279B1 (en) Fast data base research and learning apparatus
US7103708B2 (en) Performing lookup operations using associative memories optionally including modifying a search key in generating a lookup word and possibly forcing a no-hit indication in response to matching a particular entry
US6775281B1 (en) Method and apparatus for a four-way hash table
US8150891B2 (en) System for IP address lookup using substring and prefix matching
US8295286B2 (en) Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware
US7058642B2 (en) Method and data structure for a low memory overhead database
US7237059B2 (en) Performing lookup operations on associative memory entries
US6430190B1 (en) Method and apparatus for message routing, including a content addressable memory
US7065609B2 (en) Performing lookup operations using associative memories optionally including selectively determining which associative memory blocks to use in identifying a result and possibly propagating error indications
US7028136B1 (en) Managing idle time and performing lookup operations to adapt to refresh requirements or operational rates of the particular associative memory or other devices used to implement the system
EP1678619B1 (en) Associative memory with entry groups and skip operations
US20030121030A1 (en) Method for implementing dual link list structure to enable fast link-list pointer updates
US8599853B2 (en) System and method for an exact match search using pointer based pipelined multibit trie traversal technique
JP2003256265A (en) Search memory, controller for memory search, and memory search method
CN112667526B (en) Method and circuit for realizing access control list circuit
US6393515B1 (en) Multi-stream associative memory architecture for computer telephony
US20040117596A1 (en) Method and apparatus for performing a high speed binary search in time critical environments
US11886746B1 (en) Algorithmic TCAM with storage activity-based read
US8117384B2 (en) Searching a content addressable memory with modifiable comparands
JPH10222535A (en) Data retrieving circuit
Liu et al. Evaluating Enterprise Java Bean Technology
US20170124222A1 (en) Item match searching in a list
JPH1075242A (en) Routing system
JPH01226026A (en) Retrieving circuit
JPH07321872A (en) Tei mapping retrieving system for frame multiplex protocol

Legal Events

Date Code Title Description
AS Assignment

Owner name: ADVANCED COMMUNICATION DEVICES, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHEN, HONGLU;WANG, YING;TSUI, TAK-LAP;REEL/FRAME:009341/0709

Effective date: 19980717

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20061203