US20020159466A1 - Lookup engine - Google Patents

Lookup engine Download PDF

Info

Publication number
US20020159466A1
US20020159466A1 US10/074,022 US7402202A US2002159466A1 US 20020159466 A1 US20020159466 A1 US 20020159466A1 US 7402202 A US7402202 A US 7402202A US 2002159466 A1 US2002159466 A1 US 2002159466A1
Authority
US
United States
Prior art keywords
look
value
key value
engine
input key
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.)
Abandoned
Application number
US10/074,022
Inventor
John Rhoades
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.)
Clearspeed Solutions Ltd
Rambus Inc
Original Assignee
ClearSpeed Technology Ltd
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
Priority claimed from GB0103687A external-priority patent/GB0103687D0/en
Priority claimed from GB0103678A external-priority patent/GB0103678D0/en
Priority claimed from GB0121790A external-priority patent/GB0121790D0/en
Application filed by ClearSpeed Technology Ltd filed Critical ClearSpeed Technology Ltd
Assigned to CLEARSPEED TECHNOLOGY LIMITED reassignment CLEARSPEED TECHNOLOGY LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: RHOADES, JOHN
Publication of US20020159466A1 publication Critical patent/US20020159466A1/en
Priority to US11/151,271 priority Critical patent/US8200686B2/en
Priority to US11/151,292 priority patent/US20050242976A1/en
Assigned to CLEARSPEED TECHNOLOGY PLC reassignment CLEARSPEED TECHNOLOGY PLC MERGER (SEE DOCUMENT FOR DETAILS). Assignors: CLEARSPEED SOLUTIONS LIMITED
Assigned to CLEARSPEED SOLUTIONS LIMITED reassignment CLEARSPEED SOLUTIONS LIMITED CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: CLEARSPEED TECHNOLOGY LIMITED
Assigned to CLEARSPEED TECHNOLOGY LIMITED reassignment CLEARSPEED TECHNOLOGY LIMITED CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: CLEARSPEED TECHNOLOGY PLC
Assigned to RAMBUS INC. reassignment RAMBUS INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: CLEARSPEED TECHNOLOGY LTD.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof

Definitions

  • the present invention relates to a look up engine for use in computer systems.
  • it relates to look-up engine for use in routing tables, flow tables and access control lists.
  • a router is a switching device which receives a packet, and based on destination information contained within the data packet, routes the packet to its destination.
  • Each packet contains a header field and data field.
  • the header field contains control information associated with the routing of the packet including source and destination information.
  • a router On receiving a packet, a router identifies the key in the header field. The key contains the information that is used to look up the route for the received packet.
  • the look up table includes a plurality of entries having a route destination associated with a “key”. After a key for a packet has been determined, the router performs the look-up in the look up table for the matching entry and hence the destination associated with the key and routes the packet accordingly. A given key may typically match a large number of routes in the look up table.
  • a trie is a multi-way tree structure used for organising data to optimise lookup performance.
  • the data is organized as a set of linked nodes, in a tree structure.
  • Each trie node contains a power-of-two number of entries.
  • Each entry is either empty or contains the lookup result. If the entry is empty, it will point to another trie node and the look up process is repeated. If the entry contains the look up value, this value is returned and the look up process is effectively terminated.
  • a particular form of such a trie is a level-compressed trie (LC-trie) data structure also known as a “Patricia” tree (Practical Algorithm to Retrieve Information Coded In Alphanumeric).
  • LC-trie level-compressed trie
  • a traditional trie uses every part (bit or characters) of the key. in turn, to determine which subtree to select.
  • a Patricia tree nominates (by storing its position in the node) which element of the key will next be used to determine the branching. This removes the need for any nodes with just one descendent and consequently the Patricia tree utilises less memory than that required by a traditional trie.
  • Patricia trees are fairly expensive to generate, so a table which utilises such a format is best used in applications for which lookup speed is more important than update speed.
  • the object of the present invention is to provide a look up engine and look up process which provides fast and accurate look up.
  • a look up table comprising a plurality of parallel look up state machine which can provide concurrent look ups.
  • Each look up state machine accesses storage means, preferably comprising a plurality of parallel, independent memory banks, in which the look up table may be constructed on the basis of a trie, more preferably a Patricia tree structure.
  • Such a look up table provides increased performance by doing multiple parallel lookups to multiple memory banks in parallel.
  • the returned value may be a final value or reference to another table.
  • the object of the invention is also achieved in accordance with a second aspect of the present invention by providing each trie entry with a skip value field.
  • a skip value field This enables the ability to avoid false hits, avoiding a memory access to check if a table hit is real. Conventional tries return false hits.
  • the skip value field is compared to the skipped key bits, and a lookup failure is signalled if they do not match.
  • skip values are not stored in the trie entries, which gives rise to false hits in the table.
  • the possibility of false hits means that hits have to be confirmed by performing an additional memory reference to the full table.
  • the provision of a skip value field for each entry eliminates the need for this extra memory reference, at the expense of somewhat larger entries.
  • the look up engine in accordance with the first aspect may incorporate the feature of the second aspect. If the feature of the second aspect is not incorporated, then it can be appreciated that the false hits may be returned but the memory required for the look up table or tables would be reduced. Further, it can be appreciated that further processing would be required to detect such false hits.
  • Key lengths can be up to 128 bits and values can be up to 41 bits.
  • the table lookup engine has some internal memory for table storage, and it can also use memory external to the table lookup engine block.
  • the object of the invention is also achieved in accordance with a third aspect of the present invention by providing a table lookup engine which deals with longest prefix matching by pre-processing the entries to split overlapping ranges.
  • the conventional method is to maintain a “history stack” in the trie hardware for this. In pre-processing the entries in this way, the hardware is simplified.
  • the table lookup engine according to the present invention is capable of returning the number of bits that did match in the case of a table miss.
  • Parallel lookups can be further accelerated by pre-processing the tables, such that lookups that require more memory accesses have their entries preferentially placed in fast, on-chip RAM.
  • the lookup table or tables is constructed in software giving a high degree of flexibility, for example, the length of the key value can be fixed or of variable length, the tree depth is programmable and the size of the tree and performance can be optimised. It is simply to design the look up with or without the facility of minimising false hits. Of course, it can be appreciated that a table which has false hits would be smaller in size, but would require further processing of the result to detect false hits.
  • the software utilised by the present invention pre-processes the data into the trie structure which enables different performance trade-offs and types of lookups/return values possible with the same simple hardware.
  • FIG. 1 is a schematic block diagram of the LC-trie data structure of the look up table according to an embodiment of the present invention.
  • FIG. 2 is a schematic block diagram of the table look up engine according to the embodiment of the present invention.
  • the look up table comprises a plurality of entries 110 a - 110 d , 120 a - 120 h .
  • Each entry comprises a look up value and an associated key value.
  • the entries are arranged within the look up table in a plurality of hierarchal nodes, for example a first level 110 and a second level 120 . Although only two levels are illustrated here, it can be appreciated that any number of levels may be supported.
  • a key 100 is input into the look up table.
  • a predetermined number of the leading bits of the input key 100 are used to index into the first level 110 of the hierarchy of nodes. This is done by adding the value of these bits to the base address of the node.
  • the leading bits 101 of the input key 100 point to an entry 110 b of the first level of nodes 110 .
  • the entry 110 b contains a skip count and a skip value.
  • the skip count causes the look up process to skip a predetermined number of bits 102 in the input key 100 .
  • the skip value indicates the number of bits 103 to be used to index into the next level 120 of nodes.
  • the look up is carried out by adding the value of these bits 103 to the base address of the node 120 . This points to a particular entry 120 f . This entry 120 f contains the final value. The value is returned and the look up process is terminated.
  • the size of each entry within the nodes is fixed at 8 bytes and is independent of the size of the key. This enables the internal memory width to be set to 8 bytes so that it is useful as ordinary memory when used in a bypass mode.
  • a typical format of a node entry may be as shown in Table I. TABLE I field bits usage bcnt 4 number of key bits used to index next node scnt 4 number of key bits to skip sbits 15 value to check against key when skipping bindx 22 location of next node
  • the depth of a trie depends primarily on the number of entries in the table and the distribution of the keys. For a given table size, if the keys tend to vary mostly in their most significant bits, the depth of the trie will be smaller than if they tend to vary mostly in their least significant bits.
  • a branch of the trie terminates in a value entry when the bits that were used to reach that entry determine a unique key. That is to say, when there does not exist two different keys with the same leading bits.
  • the nodes of a trie can contain many empty entries. Empty entries occur when not all possible values of the bit field used to index a node exist in the keys that are associated with that node. For such routing tables about half the nodes are empty. Since, in the preferred embodiment, the size of a node entry is 8 bytes, such tables will consume about 16 bytes of memory per table entry.
  • Each trie entry in the look up table includes a skip value field.
  • the skip value field is compared to the skipped key bits, and a lookup failure is signalled if they do not match.
  • the table lookup engine comprises at least one interface unit.
  • the interface unit comprises an initiator and target interfaces to connect to a bus system of a processing system.
  • the initiator comprises a control and status interface for initialization, configuration and statistics collection, which is in the peripheral virtual component interface (PVCI) address space.
  • PVCI peripheral virtual component interface
  • AVCI advanced virtual component interface
  • There is a third memory interface that makes the internal memory of the table lookup engine available as ordinary memory, which is in the AVCI address space. All these interface units can be used concurrently. It is possible to make use of the memory interface while the table lookup engine is busy doing lookups. Indeed, this is how the tables in the table lookup engine are updated without disrupting lookups in progress.
  • the table lookup engine can be configured to use external (to the block) memory which can be accessed by the bus, in addition to or instead of its
  • the control interface provides the following functions. Note that the key and value sizes are not configurable via this interface.
  • the application that generates the tables determines how many key bits will actually be used. In the preferred embodiment, the processing system supports key sizes of 32, 64 or 128 bits, but internally the table lookup engine expands shorter keys to 128 bits, by appending extra lower-significance bits. The table lookup engine always returns 64 bit values, but it is up to the application how many of these bits to use.
  • the table lookup engine internal memory is organised as two equal size, independent banks.
  • the size of these banks is a synthesis parameter. They are organised as a configurable number of entries with a width of 8 bytes.
  • the maximum number of entries that can be configured for a bank is 131072, which implies a maximum total memory size of 2 megabytes.
  • Clients can use the table lookup engine internal memory in the same way as ordinary memory, bypassing the lookup state machines.
  • the address for a memory access selects one or more entries (depending on the details of the bus transaction) for reading or writing.
  • the protocol for a lookup is an AVCI write transaction to address TLEKeyAddr. Multiple keys can be submitted for lookup in a single write transaction.
  • the table lookup engine responds by sending back an AVCI read response to the source interface containing the values.
  • the table lookup engine has a key input FIFO with at least 128 slots, so it can accept at least that many keys without blocking the bus.
  • Lookups that succeed return the value stored in the table.
  • Lookups that fail (the key is not in the table) return a special “missing value” containing a bit pattern specified by the user. It is feasible to construct the tables in such a way that a lookup failure returns additional information, for example, the number of bits of the key that do match in the table. This assists the processing system in evaluating the cause of the failure.
  • the table lookup engine does not internally support longest prefix matching, but that effect can still be achieved by constructing the tables in the proper way.
  • the idea is to split the overlapping address ranges into disjoint pieces.
  • Lookup values may not necessarily be returned in the order of the keys.
  • the transaction tagging mechanism of AVCI is used to assist client blocks in coping with ordering changes.
  • the contents of the memory being used by the table lookup engine can be updated while lookups are in progress.
  • the actual updates are done via the memory interface.
  • a software protocol is adopted to guarantee table consistency.
  • the table lookup engine 200 comprises an input FIFO buffer 202 connected to the input of a distributor 204 .
  • the output of the distributor is connected in parallel to a plurality of lookup state machines 206 a , 206 b , 206 c , 206 d .
  • Each lookup state machine 206 a , 206 b , 206 c , 206 d has access to a storage means.
  • the storage means comprises a memory arbiter 208 and a plurality of parallel independent memory banks 212 a , 212 b .
  • Each lookup state machine 206 a , 206 b , 206 c , 206 d is connected to the input of a collector 210 .
  • the output of the collector 210 is connected to an output FIFO buffer 214 .
  • the table lookup engine uses a number of lookup state machines (LSM) 206 a , 206 b , 206 c , 206 d operating concurrently to perform lookups.
  • LSM lookup state machines
  • Incoming keys from the bus are held in an input FIFO 202 .
  • These are distributed to the lookup state machines 206 a , 206 b , 206 c , 206 d by a distributor block 204 .
  • Values coming from the state machines are merged by a collector block 210 and fed to an output FIFO 214 . From here the values are sent out on the bus to the requester.
  • the entries of the input FIFO 202 each contain a key, a tag and a source port identifier.
  • This FIFO 202 has at least 128 slots, so two clients can each send 64 keys concurrently without blocking the bus lane. Even if the FIFO 202 fills, the bus will only block momentarily.
  • the distributor block 204 watches the lookup state machines 206 a , 206 b , 206 c , 206 d and sends a key to any one that is available to do a new lookup.
  • a priority encoder may be used to choose the first ready state machine.
  • the lookup state machines 206 a , 206 b , 206 c , 206 d do the lookup using a fixed algorithm. They treat all keys as 128 bits and all values as 60 bits internally. These sizes were chosen somewhat arbitrarily. It would be possible to extend the maximum key size to 256 bits.
  • the main impact on the table lookup engine would be an increase in the size of the input FIFO 202 and LSMs 206 a , 206 b , 206 c , 206 d . It would be possible to increase the maximum size of the result.
  • the main impact would be that trie entries would be larger than 8 bytes, increasing the overall table lookup engine memory required for a given size table.
  • Memory read requests are sent to the memory arbiter block 208 .
  • the number of memory requests needed to satisfy a given lookup is variable, which is why the table lookup engine may return out-of-order results.
  • the collector block 210 serialises values from the lookup state machines 206 a , 206 b , 206 c , 206 d into the output FIFO 214 .
  • a priority encoder may be used to take the first available value.
  • the memory arbiter block 208 forwards memory read requests from the state machines 206 a , 206 b , 206 c , 206 d to the appropriate memory block 212 a , 212 b .
  • the table lookup engine has an FBI initiator block for performing external memory reads. If the block using the table lookup engine and the external memory are on the same side of the table lookup engine, there will be bus contention. Avoiding this requires a bus layout constraint: the table lookup engine must sit between the main processing units and the external memory, and the table lookup engine initiator interface must be closest to the memory target interface. Whether or not a memory read request goes to off-chip memory is determined by the external memory configuration registers.
  • the output FIFO 214 contains result values waiting to be sent to the requester block. Each slot holds a value, a tag and a port identifier. if the table lookup engine received more than one concurrent batch of keys from different blocks, the results are intermingled in this FIFO 214 . The results are sent to the correct clients in the order they enter the output FIFO 214 , and it is up to the clients to use the tag to properly associate keys and values.
  • the table lookup engine according to the embodiment of the present invention can achieve a peak performance of about 300 million lookups/second. This level of performance is based on the table lookup engine internal memory system being able to sustain a memory cycle rate of 800 million reads/second. This is achieved by using two banks of memory operating at 400 million reads/second with pipelining reads.
  • the latency of the internal memory system needs to be of the order of 4-8 cycles.
  • the number of state machines is chosen to saturate the memory interface. That is to say, there are enough state machines so that one of them is doing a memory access on nearly every cycle, for example 24 LSMs. Higher memory latencies can be tolerated by increasing the number of lookup state machines, but the practical limit is about 32 state machines.
  • the table lookup engine state machine lookup algorithm is fixed and fairly simple, to attain performance.
  • the way that the table lookup engine achieves great flexibility in applications is in the software that constructs the LC-trie data structure. With this flexibility comes a cost, of course. It is expensive to generate the trie structure.
  • the idea for using the table lookup engine is that some general purpose processor—for example in the control plane—preconstructs the trie data and places it in memory that is accessible by the bus, perhaps an external SRAM block. An onboard embedded processing unit is notified that a table update is ready and it does the actual update in the table lookup engine memory.
  • the table lookup engine state machines consider the memory it uses to be big-endian.
  • the table lookup engine can provide longest prefix matching.
  • overlapping ranges can be identified and split. This preprocessing step is not very expensive and does not significantly increase the trie size for typical routing tables. It also allows multiple concurrent tables to exist. This is achieved by prepending a small table identifier to the key. With eight tables, this would require three bits per key.
  • the table lookup engine can return the number of matching bits.
  • the lookup engine returns whatever bits it finds in the last trie entry it fetched. Further, on a lookup failure that entry is uniquely determined by the lookup algorithm; it is the entry that would have contained the value had the missing key been present.
  • the program that generates the trie structure could fill in all empty trie entries with the number of matching bits required to reach that trie entry. These return values could be flagged some way to distinguish them from lookup table hits by the generator program. Then the table lookup engine would return the number of matching bits on a lookup failure.
  • the table lookup engine according to the present invention also enables concurrent lookups and updates.
  • One way to achieve this would be to have two versions of the table in table lookup engine memory simultaneously, and switch between them with a single write to a table lookup engine configuration register. Then lookups in progress will find either a value from the old version of the table or a value from the new version of the table.
  • the embedded processing unit achieves this by first placing the new level 1 -n nodes in the table lookup engine memory, then overwriting the level 0 node entry that points to the new nodes.
  • the table lookup engine according to the present invention also allows very large results to be produced. If a value for a given key needs to be more than 60 bits, an auxiliary table can be placed in the table lookup engine memory—actually any available memory—and an index into the auxiliary table placed in the table lookup engine value. The auxiliary table would then be read using normal memory indexing. This is purely a software solution, and has no implications to the table lookup engine internal operation.

Abstract

A look up engine 200 comprising a storage means 212a, 212b for storing a plurality of entries, each entry comprising a value and an associated key value, such that, in operation, a look up is carried out by outputing a value which is associated with the stored key value which matches an input key value. The look up engine 200 comprises a plurality of look up state machines 206a, 206b, 206c, 206d connected in parallel to enable multiple look ups to be carried out concurrently. Each entry comprises an associated skip value, if the skipped bits of the input key value and the associated skip value mismatches, an error message is output to indicate lookup failure. The entries may be stored in a trie format which is constructed by identifying overlapping ranges between the plurality of entries; splitting the identified overlapping ranges; storing the plurality of entries within a trie structure.

Description

    TECHNICAL FIELD
  • The present invention relates to a look up engine for use in computer systems. In particular, but not exclusively, it relates to look-up engine for use in routing tables, flow tables and access control lists. [0001]
  • BACKGROUND OF THE INVENTION
  • One area in which look up tables are extensively used are in routing tables for use by a router. A router is a switching device which receives a packet, and based on destination information contained within the data packet, routes the packet to its destination. [0002]
  • Each packet contains a header field and data field. The header field contains control information associated with the routing of the packet including source and destination information. On receiving a packet, a router identifies the key in the header field. The key contains the information that is used to look up the route for the received packet. [0003]
  • The look up table includes a plurality of entries having a route destination associated with a “key”. After a key for a packet has been determined, the router performs the look-up in the look up table for the matching entry and hence the destination associated with the key and routes the packet accordingly. A given key may typically match a large number of routes in the look up table. [0004]
  • Traditional routing processes using a conventional look up table are very time consuming. One known method to speed up this look up process is to cache the most recent or often performed matches. [0005]
  • Furthermore it is difficult to update conventional look up tables to change routing information. [0006]
  • One solution to this is to provide a look up table in which the entries are stored in a special format, known as a “trie”. A trie is a multi-way tree structure used for organising data to optimise lookup performance. The data is organized as a set of linked nodes, in a tree structure. Each trie node contains a power-of-two number of entries. Each entry is either empty or contains the lookup result. If the entry is empty, it will point to another trie node and the look up process is repeated. If the entry contains the look up value, this value is returned and the look up process is effectively terminated. [0007]
  • A particular form of such a trie is a level-compressed trie (LC-trie) data structure also known as a “Patricia” tree (Practical Algorithm to Retrieve Information Coded In Alphanumeric). [0008]
  • A traditional trie uses every part (bit or characters) of the key. in turn, to determine which subtree to select. However, a Patricia tree nominates (by storing its position in the node) which element of the key will next be used to determine the branching. This removes the need for any nodes with just one descendent and consequently the Patricia tree utilises less memory than that required by a traditional trie. However, Patricia trees are fairly expensive to generate, so a table which utilises such a format is best used in applications for which lookup speed is more important than update speed. However, with increasing complexity of routers and hence the increased size of such look tables, it has become increasingly important to increase the speed of look up and the accuracy of lookup. [0009]
  • SUMMARY OF THE INVENTION
  • The object of the present invention is to provide a look up engine and look up process which provides fast and accurate look up. [0010]
  • This is achieved in accordance with a first aspect of the present invention by providing a look up table comprising a plurality of parallel look up state machine which can provide concurrent look ups. Each look up state machine accesses storage means, preferably comprising a plurality of parallel, independent memory banks, in which the look up table may be constructed on the basis of a trie, more preferably a Patricia tree structure. Such a look up table provides increased performance by doing multiple parallel lookups to multiple memory banks in parallel. The returned value may be a final value or reference to another table. [0011]
  • The object of the invention is also achieved in accordance with a second aspect of the present invention by providing each trie entry with a skip value field. This enables the ability to avoid false hits, avoiding a memory access to check if a table hit is real. Conventional tries return false hits. During the lookup process, the skip value field is compared to the skipped key bits, and a lookup failure is signalled if they do not match. In the traditional implementation of LC-tries, skip values are not stored in the trie entries, which gives rise to false hits in the table. The possibility of false hits means that hits have to be confirmed by performing an additional memory reference to the full table. The provision of a skip value field for each entry eliminates the need for this extra memory reference, at the expense of somewhat larger entries. The look up engine in accordance with the first aspect may incorporate the feature of the second aspect. If the feature of the second aspect is not incorporated, then it can be appreciated that the false hits may be returned but the memory required for the look up table or tables would be reduced. Further, it can be appreciated that further processing would be required to detect such false hits. [0012]
  • Key lengths, for example, can be up to 128 bits and values can be up to 41 bits. The table lookup engine has some internal memory for table storage, and it can also use memory external to the table lookup engine block. [0013]
  • The object of the invention is also achieved in accordance with a third aspect of the present invention by providing a table lookup engine which deals with longest prefix matching by pre-processing the entries to split overlapping ranges. The conventional method is to maintain a “history stack” in the trie hardware for this. In pre-processing the entries in this way, the hardware is simplified. [0014]
  • In the event of multiple tables which may be used for different protocols, then these could be stored as separate tables and which table to be search is chosen by the value of the input key. Alternatively, the tables may be combined in the same tree so the first look up (and therefore the first bits of the input key value) is which way to branch to get at the appropriate sub-table. [0015]
  • Multiple logical tables can be supported simultaneously by prep ending the keys with a table selector. [0016]
  • The table lookup engine according to the present invention is capable of returning the number of bits that did match in the case of a table miss. [0017]
  • Parallel lookups can be further accelerated by pre-processing the tables, such that lookups that require more memory accesses have their entries preferentially placed in fast, on-chip RAM. [0018]
  • Further, in accordance with a preferred embodiment, the lookup table or tables is constructed in software giving a high degree of flexibility, for example, the length of the key value can be fixed or of variable length, the tree depth is programmable and the size of the tree and performance can be optimised. It is simply to design the look up with or without the facility of minimising false hits. Of course, it can be appreciated that a table which has false hits would be smaller in size, but would require further processing of the result to detect false hits. The software utilised by the present invention pre-processes the data into the trie structure which enables different performance trade-offs and types of lookups/return values possible with the same simple hardware.[0019]
  • BRIEF DESCRIPTION OF DRAWINGS
  • FIG. 1 is a schematic block diagram of the LC-trie data structure of the look up table according to an embodiment of the present invention; and [0020]
  • FIG. 2 is a schematic block diagram of the table look up engine according to the embodiment of the present invention.[0021]
  • DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
  • With reference to FIG. 1, the trie structure of a look up table according to an embodiment of the present invention will be described. The look up table comprises a plurality of entries [0022] 110 a-110 d, 120 a-120 h. Each entry comprises a look up value and an associated key value. The entries are arranged within the look up table in a plurality of hierarchal nodes, for example a first level 110 and a second level 120. Although only two levels are illustrated here, it can be appreciated that any number of levels may be supported.
  • A key [0023] 100 is input into the look up table. A predetermined number of the leading bits of the input key 100 are used to index into the first level 110 of the hierarchy of nodes. This is done by adding the value of these bits to the base address of the node. In the example shown in FIG. 1, the leading bits 101 of the input key 100 point to an entry 110 b of the first level of nodes 110. The entry 110 b contains a skip count and a skip value. The skip count causes the look up process to skip a predetermined number of bits 102 in the input key 100. The skip value indicates the number of bits 103 to be used to index into the next level 120 of nodes. As in the previous level the look up is carried out by adding the value of these bits 103 to the base address of the node 120. This points to a particular entry 120 f. This entry 120 f contains the final value. The value is returned and the look up process is terminated.
  • In this example, two memory accesses were used to do the lookup, one in trie level [0024] 110 and the other in trie level 120. In practice, real tables contain many more nodes and levels than shown in this example. For instance, a typical forwarding table, in accordance with a preferred embodiment of the present invention, with 100,000 entries might contain 6 levels and 200,000 nodes.
  • In the preferred embodiment, the size of each entry within the nodes is fixed at 8 bytes and is independent of the size of the key. This enables the internal memory width to be set to 8 bytes so that it is useful as ordinary memory when used in a bypass mode. A typical format of a node entry may be as shown in Table I. [0025]
    TABLE I
    field bits usage
    bcnt  4 number of key bits used to index next node
    scnt  4 number of key bits to skip
    sbits 15 value to check against key when skipping
    bindx 22 location of next node
  • If, for example, all the bits of bcnt is set to one, the remaining bits in the entry represent a value (either an actual value or the special value for lookup failure). This means that values can contain up to 60 bits. It also means that 1<=bcnt <=14, so the maximum node size is 2[0026] 14 entries. If any one of the bits of bcnt is not set to one, the entry represents a pointer to another node.
  • The depth of a trie depends primarily on the number of entries in the table and the distribution of the keys. For a given table size, if the keys tend to vary mostly in their most significant bits, the depth of the trie will be smaller than if they tend to vary mostly in their least significant bits. A branch of the trie terminates in a value entry when the bits that were used to reach that entry determine a unique key. That is to say, when there does not exist two different keys with the same leading bits. [0027]
  • The nodes of a trie can contain many empty entries. Empty entries occur when not all possible values of the bit field used to index a node exist in the keys that are associated with that node. For such routing tables about half the nodes are empty. Since, in the preferred embodiment, the size of a node entry is 8 bytes, such tables will consume about 16 bytes of memory per table entry. [0028]
  • Each trie entry in the look up table, according to the embodiment of the present invention, includes a skip value field. During the lookup process, the skip value field is compared to the skipped key bits, and a lookup failure is signalled if they do not match. [0029]
  • The table lookup engine comprises at least one interface unit. The interface unit comprises an initiator and target interfaces to connect to a bus system of a processing system. The initiator comprises a control and status interface for initialization, configuration and statistics collection, which is in the peripheral virtual component interface (PVCI) address space. There is a lookup interface for receiving keys and sending results of lookups, which is in the advanced virtual component interface (AVCI) address space. There is a third memory interface that makes the internal memory of the table lookup engine available as ordinary memory, which is in the AVCI address space. All these interface units can be used concurrently. It is possible to make use of the memory interface while the table lookup engine is busy doing lookups. Indeed, this is how the tables in the table lookup engine are updated without disrupting lookups in progress. The table lookup engine can be configured to use external (to the block) memory which can be accessed by the bus, in addition to or instead of its internal memory. [0030]
  • There are several internal registers that can be read or written. The control interface provides the following functions. Note that the key and value sizes are not configurable via this interface. The application that generates the tables determines how many key bits will actually be used. In the preferred embodiment, the processing system supports key sizes of 32, 64 or 128 bits, but internally the table lookup engine expands shorter keys to 128 bits, by appending extra lower-significance bits. The table lookup engine always returns 64 bit values, but it is up to the application how many of these bits to use. [0031]
    TABLE II
    Reset
    Field Bits Value Function
    Reset 0 0 When set (reset = 1) , perform a complete
    reset of the table lockup engine blocks
    Enable 1 0 When set (Enable = 1), enable the table
    lookup engine
    CountersOn 2 0 When set (CountersOn = 1), enable
    updating of the counters
  • [0032]
    TABLE III
    Reset
    Field Bits Value Function
    ResetStatus 0 0 Indicates whether the table lookup
    engine is busy resetting or not
    EnableStatus 1 0 Indicates the enable state of the table
    lookup engine
    CountersOnStatus 2 0 Indicates whether updating the counters
    mode is enabled
  • [0033]
    TABLE IV
    Reset
    Field Bits Value Function
    IntMemoryStart 31:0 note Start location of internal memory in
    bytes
    IntMemorySize 31:0 note Size of internal memory in bytes
  • Note: After reset, these registers contain the start and size of the entire internal memory. The application can change these if it wishes to reserve some portion of the memory for non-table lookup engine purposes. [0034]
    TABLE V
    Reset
    Field Bits Value Function
    ExtMemoryStart 31:0
    NumIntBankReadsN 31:0 0 Number of reads by internal
    memory bank (N registers, where
    N is number of banks)
    NumExtBankReadsN 31:0 0 Number of reads by external
    memory bank (M registers, where
    M is number of banks)
  • [0035]
    TABLE VI
    Reset
    Field Bits Value Function
    NumLookups 31:0 0 Number of lockups
    NumIntMemReads 31:0 0 Number of internal memory reads
    NumExtMemReads 31:0 0 Number of external memory reads
    NumIntBankReadsN 31:0 0 Number of reads by internal
    memory bank (N registers, where
    N is number of banks)
    NumExtBankReadsN 31:0 0 Number of reads by external
    memory bank (M registers, where
    M is number of banks)
  • The table lookup engine internal memory according to the embodiment of the present invention is organised as two equal size, independent banks. The size of these banks is a synthesis parameter. They are organised as a configurable number of entries with a width of 8 bytes. The maximum number of entries that can be configured for a bank is 131072, which implies a maximum total memory size of 2 megabytes. Clients can use the table lookup engine internal memory in the same way as ordinary memory, bypassing the lookup state machines. The address for a memory access selects one or more entries (depending on the details of the bus transaction) for reading or writing. [0036]
  • The protocol for a lookup is an AVCI write transaction to address TLEKeyAddr. Multiple keys can be submitted for lookup in a single write transaction. The table lookup engine responds by sending back an AVCI read response to the source interface containing the values. [0037]
  • The table lookup engine has a key input FIFO with at least 128 slots, so it can accept at least that many keys without blocking the bus. [0038]
  • Lookups that succeed return the value stored in the table. Lookups that fail (the key is not in the table) return a special “missing value” containing a bit pattern specified by the user. It is feasible to construct the tables in such a way that a lookup failure returns additional information, for example, the number of bits of the key that do match in the table. This assists the processing system in evaluating the cause of the failure. [0039]
  • The table lookup engine does not internally support longest prefix matching, but that effect can still be achieved by constructing the tables in the proper way. The idea is to split the overlapping address ranges into disjoint pieces. [0040]
  • Lookup values may not necessarily be returned in the order of the keys. The transaction tagging mechanism of AVCI is used to assist client blocks in coping with ordering changes. [0041]
  • Multiple client blocks can submit lookup requests simultaneously. If this causes the input FIFO to fill up, the bus lane between the requester block and the table lookup engine will block temporarily. The table lookup engine keeps track internally of the source port of the requester for each lookup, so the result values will be sent to the correct place. This may to return the result to the requester or elsewhere. [0042]
  • The contents of the memory being used by the table lookup engine can be updated while lookups are in progress. The actual updates are done via the memory interface. A software protocol is adopted to guarantee table consistency. [0043]
  • The [0044] table lookup engine 200, as shown in FIG. 2, comprises an input FIFO buffer 202 connected to the input of a distributor 204. the output of the distributor is connected in parallel to a plurality of lookup state machines 206 a, 206 b, 206 c, 206 d. Each lookup state machine 206 a, 206 b, 206 c, 206 d has access to a storage means. The storage means comprises a memory arbiter 208 and a plurality of parallel independent memory banks 212 a, 212 b. Each lookup state machine 206 a, 206 b, 206 c, 206 d is connected to the input of a collector 210. The output of the collector 210 is connected to an output FIFO buffer 214.
  • The table lookup engine uses a number of lookup state machines (LSM) [0045] 206 a, 206 b, 206 c, 206 d operating concurrently to perform lookups. Incoming keys from the bus are held in an input FIFO 202. These are distributed to the lookup state machines 206 a, 206 b, 206 c, 206 d by a distributor block 204. Values coming from the state machines are merged by a collector block 210 and fed to an output FIFO 214. From here the values are sent out on the bus to the requester.
  • The entries of the [0046] input FIFO 202 each contain a key, a tag and a source port identifier. This FIFO 202 has at least 128 slots, so two clients can each send 64 keys concurrently without blocking the bus lane. Even if the FIFO 202 fills, the bus will only block momentarily.
  • The [0047] distributor block 204 watches the lookup state machines 206 a, 206 b, 206 c, 206 d and sends a key to any one that is available to do a new lookup. A priority encoder may be used to choose the first ready state machine.
  • The [0048] lookup state machines 206 a, 206 b, 206 c, 206 d do the lookup using a fixed algorithm. They treat all keys as 128 bits and all values as 60 bits internally. These sizes were chosen somewhat arbitrarily. It would be possible to extend the maximum key size to 256 bits. The main impact on the table lookup engine would be an increase in the size of the input FIFO 202 and LSMs 206 a, 206 b, 206 c, 206 d. It would be possible to increase the maximum size of the result. The main impact would be that trie entries would be larger than 8 bytes, increasing the overall table lookup engine memory required for a given size table. Shorter keys are easily extended by adding zero-valued least significant bits. Memory read requests are sent to the memory arbiter block 208. The number of memory requests needed to satisfy a given lookup is variable, which is why the table lookup engine may return out-of-order results.
  • The [0049] collector block 210 serialises values from the lookup state machines 206 a, 206 b, 206 c, 206 d into the output FIFO 214. A priority encoder may be used to take the first available value.
  • The [0050] memory arbiter block 208 forwards memory read requests from the state machines 206 a, 206 b, 206 c, 206 d to the appropriate memory block 212 a, 212 b. This might be to an internal memory bank or an external memory accessed via the bus. The table lookup engine has an FBI initiator block for performing external memory reads. If the block using the table lookup engine and the external memory are on the same side of the table lookup engine, there will be bus contention. Avoiding this requires a bus layout constraint: the table lookup engine must sit between the main processing units and the external memory, and the table lookup engine initiator interface must be closest to the memory target interface. Whether or not a memory read request goes to off-chip memory is determined by the external memory configuration registers.
  • The [0051] output FIFO 214 contains result values waiting to be sent to the requester block. Each slot holds a value, a tag and a port identifier. if the table lookup engine received more than one concurrent batch of keys from different blocks, the results are intermingled in this FIFO 214. The results are sent to the correct clients in the order they enter the output FIFO 214, and it is up to the clients to use the tag to properly associate keys and values.
    Lookup algorithm
    ValueType lookup(const lcsnode* trie, KeyType key)
    {
    // toplgwd is size of level 0 node
    int idx = key.topbits(toplgwd);
    key = key<<toplgwd;
    lcsnode nd = trie [idx]; // current entry
    while (nd.bcnt != 15) {
    unsigned int cksbits =
    key.topbits(nd.scnt);
    key = key<<nd.scnt;
    if (cksbits != nd.sbits) return
    missingValue;
    int nidx = key.topbits(nd.bcnt);
    key = key<<nd.bcnt;
    idx = nd.bindx+nidx;
    nd = trie [idx];
    }
    return
    concatenate (nd.scnt,nd.sbits,nd.bind.x);
    }
  • The table lookup engine according to the embodiment of the present invention can achieve a peak performance of about 300 million lookups/second. This level of performance is based on the table lookup engine internal memory system being able to sustain a memory cycle rate of 800 million reads/second. This is achieved by using two banks of memory operating at 400 million reads/second with pipelining reads. The latency of the internal memory system needs to be of the order of 4-8 cycles. The number of state machines is chosen to saturate the memory interface. That is to say, there are enough state machines so that one of them is doing a memory access on nearly every cycle, for example 24 LSMs. Higher memory latencies can be tolerated by increasing the number of lookup state machines, but the practical limit is about 32 state machines. [0052]
  • The table lookup engine state machine lookup algorithm is fixed and fairly simple, to attain performance. The way that the table lookup engine achieves great flexibility in applications is in the software that constructs the LC-trie data structure. With this flexibility comes a cost, of course. It is expensive to generate the trie structure. The idea for using the table lookup engine is that some general purpose processor—for example in the control plane—preconstructs the trie data and places it in memory that is accessible by the bus, perhaps an external SRAM block. An onboard embedded processing unit is notified that a table update is ready and it does the actual update in the table lookup engine memory. The table lookup engine state machines consider the memory it uses to be big-endian. When constructing trie structures the correct type of endianness needs to be employed. In this way the table lookup engine can provide longest prefix matching. When constructing the trie from the routing table, overlapping ranges can be identified and split. This preprocessing step is not very expensive and does not significantly increase the trie size for typical routing tables. It also allows multiple concurrent tables to exist. This is achieved by prepending a small table identifier to the key. With eight tables, this would require three bits per key. [0053]
  • The table lookup engine according to the present invention can return the number of matching bits. The lookup engine returns whatever bits it finds in the last trie entry it fetched. Further, on a lookup failure that entry is uniquely determined by the lookup algorithm; it is the entry that would have contained the value had the missing key been present. The program that generates the trie structure could fill in all empty trie entries with the number of matching bits required to reach that trie entry. These return values could be flagged some way to distinguish them from lookup table hits by the generator program. Then the table lookup engine would return the number of matching bits on a lookup failure. [0054]
  • The table lookup engine according to the present invention also enables concurrent lookups and updates. One way to achieve this would be to have two versions of the table in table lookup engine memory simultaneously, and switch between them with a single write to a table lookup engine configuration register. Then lookups in progress will find either a value from the old version of the table or a value from the new version of the table. The embedded processing unit achieves this by first placing the new level [0055] 1-n nodes in the table lookup engine memory, then overwriting the level 0 node entry that points to the new nodes.
  • The table lookup engine according to the present invention also allows very large results to be produced. If a value for a given key needs to be more than 60 bits, an auxiliary table can be placed in the table lookup engine memory—actually any available memory—and an index into the auxiliary table placed in the table lookup engine value. The auxiliary table would then be read using normal memory indexing. This is purely a software solution, and has no implications to the table lookup engine internal operation. [0056]
  • Although a preferred embodiment of the method and apparatus of the present invention has been illustrated in the accompanying drawings and described in the forgoing detailed description, it will be understood that the invention is not limited to the embodiment disclosed, but is capable of numerous variations, modifications without departing from the scope of the invention as set out in the following claims. [0057]

Claims (36)

1. A look up engine comprising a storage means for storing a plurality of entries, each entry comprising a value and an associated key value, such that, in operation, a look up is carried out by outputting a value which is associated with the stored key value which matches an input key value, the look up engine comprising a plurality of look up state machines connected in parallel to enable multiple look ups to be carried out concurrently.
2. A look up engine according to claim 1, wherein the entries are stored in a trie structure.
3. A look up engine according to claim 2, wherein the trie structure is a PATRICIA trie structure.
4. A look up engine according to claim 1 further comprising an input buffer and an output buffer.
5. A look up engine according to claim 4, wherein the look up engine further comprises a distributor for distributing the input key values between the plurality of look up state machines.
6. A look up engine according to claim 5, wherein the look up engine further comprises a collector for collecting the outputs from the plurality of look up state machines for outputting the lookup value.
7. A look up engine according to claim 1, wherein the length of the key values and the values is fixed.
8. A look up engine according to any one of claims 1, wherein the length of the key value and the values is variable.
9.A look up engine according to claim 1, wherein the look up engine further comprises a tagging mechanism in which each key value has a tag associated therewith such that the output values can be ordered in accordance with the order of receipt of the input key value.
10. A look up engine according to claim 1, wherein the look up engine comprises means for storing the identity of a requester requesting look up for each look up request such that the output value is sent to the correct location.
11. A look up engine according to claim 1, wherein at least one of the output values comprises an error message which is output to indicate a look up failure.
12. A look up engine according to claim 11, wherein the error message further comprising additional data including indication of the type of error.
13. A look up engine according to claim 12, wherein the additional data includes indication of the number of bits of the input key value which matched.
14. A look up engine according to claim 11, wherein each entry further comprises a skip value and each key value comprises a plurality of bits, and wherein the error message is sent if the skip value mismatches the skipped bits of the input key value.
15. A look up engine according to claim 1, wherein the storage means comprises internal and/or external memory.
16. A look up engine according to claim 15, wherein the storage means comprises a plurality of independent, parallel memory banks, each memory bank containing at least one table of the plurality of entries.
17. A look up engine according to claim 16, wherein the tables are mutually exclusive.
18. A look up engine according to claim 17, wherein the input key value comprises a table identifier for identifying which of the tables is required.
19. A look up engine according to claim 15, wherein the look up state machines can be bypassed in operation such that the storage means is utilised as memory for a processing means.
20. A look up engine according to claim 19, wherein the storage means is dynamically partitioned for use as memory by the processing means and for storing the plurality of entries.
21. A method for looking up a value, the method comprising the steps of:
(a) receiving a key value;
(b) comparing the input key value with a plurality of stored key values;
(c) outputting the value associated with the stored key value that matches the input key value, wherein steps (a), (b) and (c) are carried out concurrently.
22. A method for looking up a value, the method comprising the steps of:
(a) receiving a key value; dividing the input key value into a plurality of predetermined portions;
(b) comparing each predetermined portion of the input key value with a plurality of stored key values;
(c) outputting the value associated with the stored key value that matches the predetermined portion of the input key value;
(d) assembling each lookuped value to produce a final key value;
(e) comparing the final key value with a plurality of stored key values; and
(f) outputting the value associated with the stored key value that matches the final key value, wherein steps (b) to (d) are carried out concurrently.
23. A computer system comprising a plurality of processing means interconnected via a bus system, the computer system further comprising a look up engine, the look up engine comprising a storage means for storing a plurality of entries, each entry comprising a value and an associated key value, such that, in operation, a look up is carried out by outputting a value which is associated with the stored key value which matches an input key value, the look up engine comprising a plurality of look up state machines connected in parallel to enable multiple look ups to be carried out concurrently.
24. A computer system according to claim 23, wherein the look up engine is connected to the bus system via a plurality of parallel interface units, the interface units allowing concurrent update of the entries and look up.
25. A computer system according to claim 23, wherein multiple keys are submitted for look up in a single bus transaction.
26. A look up engine comprising at least one storage means for storing a plurality of entries, each entry comprises a key value, an associated value and a skip value, such that, in operation a look up is carried out by outputting a value which is associated with the stored key value which matches an input key value, the input key comprising a plurality of bits, if the skipped bits of the input key value and the associated skip value mismatches, an error message is output to indicate lookup failure.
27. A look up engine according to claim 26, wherein the error message further comprising additional data including indication of the type of error.
28. A look up engine according to claim 26, wherein multiple look ups are carried out concurrently.
29. A method for looking up a value, each value having a key value and a skip value associated therewith, the method comprising the steps of:
receiving a key value comprising a plurality of bits;
comparing the input key value with a plurality of stored key values;
comparing the skip value associated with the value corresponding to the input key value with the skipped bits of the input key value;
outputting the value associated with the stored key value that matches the input key value if the skip value matches the skipped bits of the input key value, and outputting an error message to indicate look up failure if the skip value does not match the skipped bits of the input key.
30. A method according to claim 29, wherein the output error message comprises additional data including an indication of the type of error.
31. A method according to claim 29, wherein multiple look ups are carried out concurrently.
32. A method of constructing a trie in a storage means, the trie comprising a plurality of entries, the method comprising the steps of:
identifying overlapping ranges between the plurality of entries;
splitting the identified overlapping ranges;
storing the plurality of entries within a trie structure.
33. A method according to claim 32, wherein the depth of the trie is programmable.
34. A method according to claim 33, wherein the entries are arranged in a PATRICIA trie.
35. A method according to any one of claim 32, wherein, the method further comprises the step of:
providing each entry with a skip value such that, during the look up operation, the skip value associated with the value corresponding to the input key value is compared with the skipped bits of the input key value;
outputting the value associated with the stored key value that matches the input key value if the skip value matches the skipped bits of the input key value, and outputting an error message to indicate look up failure if the skip value does not match the skipped bits of the input key.
36. A look up engine constructed and updated in accordance with a method of constructing a trie in a storage means, the trie comprising a plurality of entries, the method comprising the steps of:
identifying overlapping ranges between the plurality of entries; splitting the identified overlapping ranges;
storing the plurality of entries within a trie structure.
US10/074,022 2001-02-14 2002-02-14 Lookup engine Abandoned US20020159466A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/151,292 US20050242976A1 (en) 2001-02-14 2005-06-14 Lookup engine
US11/151,271 US8200686B2 (en) 2001-02-14 2005-06-14 Lookup engine

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
GB0103678A GB0103678D0 (en) 2001-02-14 2001-02-14 Network processing
GB0103678.9 2001-02-14
GB0103687A GB0103687D0 (en) 2001-02-14 2001-02-14 Network processing-architecture II
GB0103687.0 2001-02-14
GB0121790A GB0121790D0 (en) 2001-02-14 2001-09-10 Network processing systems
GB0121790.0 2001-09-10

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US11/151,271 Division US8200686B2 (en) 2001-02-14 2005-06-14 Lookup engine
US11/151,292 Division US20050242976A1 (en) 2001-02-14 2005-06-14 Lookup engine

Publications (1)

Publication Number Publication Date
US20020159466A1 true US20020159466A1 (en) 2002-10-31

Family

ID=27256074

Family Applications (10)

Application Number Title Priority Date Filing Date
US10/468,168 Expired - Fee Related US7290162B2 (en) 2001-02-14 2002-02-14 Clock distribution system
US10/073,948 Expired - Fee Related US7856543B2 (en) 2001-02-14 2002-02-14 Data processing architectures for packet handling wherein batches of data packets of unpredictable size are distributed across processing elements arranged in a SIMD array operable to process different respective packet protocols at once while executing a single common instruction stream
US10/074,022 Abandoned US20020159466A1 (en) 2001-02-14 2002-02-14 Lookup engine
US10/468,167 Abandoned US20040114609A1 (en) 2001-02-14 2002-02-14 Interconnection system
US10/074,019 Abandoned US20020161926A1 (en) 2001-02-14 2002-02-14 Method for controlling the order of datagrams
US11/151,271 Expired - Fee Related US8200686B2 (en) 2001-02-14 2005-06-14 Lookup engine
US11/151,292 Abandoned US20050242976A1 (en) 2001-02-14 2005-06-14 Lookup engine
US11/752,299 Expired - Fee Related US7818541B2 (en) 2001-02-14 2007-05-23 Data processing architectures
US11/752,300 Expired - Fee Related US7917727B2 (en) 2001-02-14 2007-05-23 Data processing architectures for packet handling using a SIMD array
US12/965,673 Expired - Fee Related US8127112B2 (en) 2001-02-14 2010-12-10 SIMD array operable to process different respective packet protocols simultaneously while executing a single common instruction stream

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US10/468,168 Expired - Fee Related US7290162B2 (en) 2001-02-14 2002-02-14 Clock distribution system
US10/073,948 Expired - Fee Related US7856543B2 (en) 2001-02-14 2002-02-14 Data processing architectures for packet handling wherein batches of data packets of unpredictable size are distributed across processing elements arranged in a SIMD array operable to process different respective packet protocols at once while executing a single common instruction stream

Family Applications After (7)

Application Number Title Priority Date Filing Date
US10/468,167 Abandoned US20040114609A1 (en) 2001-02-14 2002-02-14 Interconnection system
US10/074,019 Abandoned US20020161926A1 (en) 2001-02-14 2002-02-14 Method for controlling the order of datagrams
US11/151,271 Expired - Fee Related US8200686B2 (en) 2001-02-14 2005-06-14 Lookup engine
US11/151,292 Abandoned US20050242976A1 (en) 2001-02-14 2005-06-14 Lookup engine
US11/752,299 Expired - Fee Related US7818541B2 (en) 2001-02-14 2007-05-23 Data processing architectures
US11/752,300 Expired - Fee Related US7917727B2 (en) 2001-02-14 2007-05-23 Data processing architectures for packet handling using a SIMD array
US12/965,673 Expired - Fee Related US8127112B2 (en) 2001-02-14 2010-12-10 SIMD array operable to process different respective packet protocols simultaneously while executing a single common instruction stream

Country Status (6)

Country Link
US (10) US7290162B2 (en)
JP (2) JP2004524617A (en)
CN (2) CN100367730C (en)
AU (1) AU2002233500A1 (en)
GB (5) GB2374443B (en)
WO (2) WO2002065700A2 (en)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040028046A1 (en) * 2002-08-08 2004-02-12 Priya Govindarajan Logarithmic time range-based multifield-correlation packet classification
US20040114587A1 (en) * 2002-12-12 2004-06-17 Stmicroelectronics, Inc. System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine
US20050055457A1 (en) * 2003-09-10 2005-03-10 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US20070028190A1 (en) * 2005-05-20 2007-02-01 Scott Stachfield Dynamic hyperlinking approach
US20070091899A1 (en) * 2005-10-21 2007-04-26 Cisco Technology, Inc., A California Corporation Data structure for storing and accessing multiple independent sets of forwarding information
US8775727B2 (en) 2012-08-31 2014-07-08 Lsi Corporation Lookup engine with pipelined access, speculative add and lock-in-hit function
US10063407B1 (en) 2016-02-08 2018-08-28 Barefoot Networks, Inc. Identifying and marking failed egress links in data plane
US10084687B1 (en) 2016-11-17 2018-09-25 Barefoot Networks, Inc. Weighted-cost multi-pathing using range lookups
US10237206B1 (en) 2017-03-05 2019-03-19 Barefoot Networks, Inc. Equal cost multiple path group failover for multicast
US10313231B1 (en) * 2016-02-08 2019-06-04 Barefoot Networks, Inc. Resilient hashing for forwarding packets
CN110009092A (en) * 2017-11-03 2019-07-12 畅想科技有限公司 Activation primitive for deep neural network
US10404619B1 (en) 2017-03-05 2019-09-03 Barefoot Networks, Inc. Link aggregation group failover for multicast
US20230214355A1 (en) * 2021-12-31 2023-07-06 Tsx Inc. Storage of order books with persistent data structures

Families Citing this family (261)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174452B2 (en) * 2001-01-24 2007-02-06 Broadcom Corporation Method for processing multiple security policies applied to a data packet structure
US7549056B2 (en) 1999-03-19 2009-06-16 Broadcom Corporation System and method for processing and protecting content
JP2004524617A (en) 2001-02-14 2004-08-12 クリアスピード・テクノロジー・リミテッド Clock distribution system
US7107478B2 (en) * 2002-12-05 2006-09-12 Connex Technology, Inc. Data processing system having a Cartesian Controller
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US20030078997A1 (en) * 2001-10-22 2003-04-24 Franzel Kenneth S. Module and unified network backplane interface for local networks
FI113113B (en) 2001-11-20 2004-02-27 Nokia Corp Method and device for time synchronization of integrated circuits
US7055123B1 (en) * 2001-12-31 2006-05-30 Richard S. Norman High-performance interconnect arrangement for an array of discrete functional modules
US6836808B2 (en) * 2002-02-25 2004-12-28 International Business Machines Corporation Pipelined packet processing
US8005966B2 (en) * 2002-06-11 2011-08-23 Pandya Ashish A Data processing system using internet protocols
US7415723B2 (en) * 2002-06-11 2008-08-19 Pandya Ashish A Distributed network security system and a hardware processor therefor
US7408957B2 (en) * 2002-06-13 2008-08-05 International Business Machines Corporation Selective header field dispatch in a network processing system
US8015303B2 (en) * 2002-08-02 2011-09-06 Astute Networks Inc. High data rate stateful protocol processing
US7360007B2 (en) * 2002-08-30 2008-04-15 Intel Corporation System including a segmentable, shared bus
US20040066779A1 (en) * 2002-10-04 2004-04-08 Craig Barrack Method and implementation for context switchover
US20050044324A1 (en) * 2002-10-08 2005-02-24 Abbas Rashid Advanced processor with mechanism for maximizing resource usage in an in-order pipeline with multiple threads
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7961723B2 (en) * 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US7924828B2 (en) * 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US7984268B2 (en) 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US8478811B2 (en) 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US20050033831A1 (en) * 2002-10-08 2005-02-10 Abbas Rashid Advanced processor with a thread aware return address stack optimally used across active threads
US8176298B2 (en) 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US7596621B1 (en) * 2002-10-17 2009-09-29 Astute Networks, Inc. System and method for managing shared state using multiple programmed processors
US8151278B1 (en) 2002-10-17 2012-04-03 Astute Networks, Inc. System and method for timer management in a stateful protocol processing system
US7814218B1 (en) 2002-10-17 2010-10-12 Astute Networks, Inc. Multi-protocol and multi-format stateful processing
ATE438242T1 (en) * 2002-10-31 2009-08-15 Alcatel Lucent METHOD FOR PROCESSING DATA PACKETS AT LAYER THREE IN A TELECOMMUNICATIONS DEVICE
JP4157403B2 (en) * 2003-03-19 2008-10-01 株式会社日立製作所 Packet communication device
US8477780B2 (en) * 2003-03-26 2013-07-02 Alcatel Lucent Processing packet information using an array of processing elements
US8539089B2 (en) * 2003-04-23 2013-09-17 Oracle America, Inc. System and method for vertical perimeter protection
US7356669B2 (en) 2003-05-07 2008-04-08 Koninklijke Philips Electronics N.V. Processing system and method for transmitting data
US7558268B2 (en) * 2003-05-08 2009-07-07 Samsung Electronics Co., Ltd. Apparatus and method for combining forwarding tables in a distributed architecture router
US7500239B2 (en) * 2003-05-23 2009-03-03 Intel Corporation Packet processing system
US20050108518A1 (en) * 2003-06-10 2005-05-19 Pandya Ashish A. Runtime adaptable security processor
US7349958B2 (en) * 2003-06-25 2008-03-25 International Business Machines Corporation Method for improving performance in a computer storage system by regulating resource requests from clients
US7174398B2 (en) * 2003-06-26 2007-02-06 International Business Machines Corporation Method and apparatus for implementing data mapping with shuffle algorithm
CA2442803A1 (en) * 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Structure and method for managing workshares in a parallel region
US7886307B1 (en) * 2003-09-26 2011-02-08 The Mathworks, Inc. Object-oriented data transfer system for data sharing
US7120815B2 (en) * 2003-10-31 2006-10-10 Hewlett-Packard Development Company, L.P. Clock circuitry on plural integrated circuits
US7634500B1 (en) * 2003-11-03 2009-12-15 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
AU2004297923B2 (en) * 2003-11-26 2008-07-10 Cisco Technology, Inc. Method and apparatus to inline encryption and decryption for a wireless station
US6954450B2 (en) * 2003-11-26 2005-10-11 Cisco Technology, Inc. Method and apparatus to provide data streaming over a network connection in a wireless MAC processor
US7340548B2 (en) 2003-12-17 2008-03-04 Microsoft Corporation On-chip bus
US7058424B2 (en) * 2004-01-20 2006-06-06 Lucent Technologies Inc. Method and apparatus for interconnecting wireless and wireline networks
GB0403237D0 (en) * 2004-02-13 2004-03-17 Imec Inter Uni Micro Electr A method for realizing ground bounce reduction in digital circuits adapted according to said method
US7903777B1 (en) 2004-03-03 2011-03-08 Marvell International Ltd. System and method for reducing electromagnetic interference and ground bounce in an information communication system by controlling phase of clock signals among a plurality of information communication devices
US20050216625A1 (en) * 2004-03-09 2005-09-29 Smith Zachary S Suppressing production of bus transactions by a virtual-bus interface
US7478109B1 (en) * 2004-03-15 2009-01-13 Cisco Technology, Inc. Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
KR100990484B1 (en) * 2004-03-29 2010-10-29 삼성전자주식회사 Transmission clock signal generator for serial bus communication
US20050254486A1 (en) * 2004-05-13 2005-11-17 Ittiam Systems (P) Ltd. Multi processor implementation for signals requiring fast processing
DE102004035843B4 (en) * 2004-07-23 2010-04-15 Infineon Technologies Ag Router Network Processor
GB2417105B (en) 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US7913206B1 (en) * 2004-09-16 2011-03-22 Cadence Design Systems, Inc. Method and mechanism for performing partitioning of DRC operations
US7508397B1 (en) * 2004-11-10 2009-03-24 Nvidia Corporation Rendering of disjoint and overlapping blits
US8170019B2 (en) * 2004-11-30 2012-05-01 Broadcom Corporation CPU transmission of unmodified packets
US20060156316A1 (en) * 2004-12-18 2006-07-13 Gray Area Technologies System and method for application specific array processing
US20060212426A1 (en) * 2004-12-21 2006-09-21 Udaya Shakara Efficient CAM-based techniques to perform string searches in packet payloads
US7769858B2 (en) * 2005-02-23 2010-08-03 International Business Machines Corporation Method for efficiently hashing packet keys into a firewall connection table
US7818705B1 (en) 2005-04-08 2010-10-19 Altera Corporation Method and apparatus for implementing a field programmable gate array architecture with programmable clock skew
US8112654B2 (en) * 2005-06-01 2012-02-07 Teklatech A/S Method and an apparatus for providing timing signals to a number of circuits, and integrated circuit and a node
US7373475B2 (en) * 2005-06-21 2008-05-13 Intel Corporation Methods for optimizing memory unit usage to maximize packet throughput for multi-processor multi-threaded architectures
JP4797482B2 (en) * 2005-07-20 2011-10-19 ブラザー工業株式会社 Wiring board and method of manufacturing wiring board
US20070086456A1 (en) * 2005-08-12 2007-04-19 Electronics And Telecommunications Research Institute Integrated layer frame processing device including variable protocol header
US8325768B2 (en) * 2005-08-24 2012-12-04 Intel Corporation Interleaving data packets in a packet-based communication system
US7904852B1 (en) 2005-09-12 2011-03-08 Cadence Design Systems, Inc. Method and system for implementing parallel processing of electronic design automation tools
US8218770B2 (en) * 2005-09-13 2012-07-10 Agere Systems Inc. Method and apparatus for secure key management and protection
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
US7835359B2 (en) * 2005-12-08 2010-11-16 International Business Machines Corporation Method and apparatus for striping message payload data over a network
EP1971958A2 (en) * 2006-01-10 2008-09-24 Brightscale, Inc. Method and apparatus for processing algorithm steps of multimedia data in parallel processing systems
US20070162531A1 (en) * 2006-01-12 2007-07-12 Bhaskar Kota Flow transform for integrated circuit design and simulation having combined data flow, control flow, and memory flow views
US8301885B2 (en) * 2006-01-27 2012-10-30 Fts Computertechnik Gmbh Time-controlled secure communication
KR20070088190A (en) * 2006-02-24 2007-08-29 삼성전자주식회사 Subword parallelism for processing multimedia data
CN101416216B (en) * 2006-03-30 2012-11-21 日本电气株式会社 Parallel image processing system control method and apparatus
US7617409B2 (en) * 2006-05-01 2009-11-10 Arm Limited System for checking clock-signal correspondence
US8390354B2 (en) * 2006-05-17 2013-03-05 Freescale Semiconductor, Inc. Delay configurable device and methods thereof
US8041929B2 (en) * 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
JP2008004046A (en) * 2006-06-26 2008-01-10 Toshiba Corp Resource management device, and program for the same
US7584286B2 (en) * 2006-06-28 2009-09-01 Intel Corporation Flexible and extensible receive side scaling
US8448096B1 (en) 2006-06-30 2013-05-21 Cadence Design Systems, Inc. Method and system for parallel processing of IC design layouts
US7516437B1 (en) * 2006-07-20 2009-04-07 Xilinx, Inc. Skew-driven routing for networks
CN1909418B (en) * 2006-08-01 2010-05-12 华为技术有限公司 Clock distributing equipment for universal wireless interface and method for realizing speed switching
US20080040214A1 (en) * 2006-08-10 2008-02-14 Ip Commerce System and method for subsidizing payment transaction costs through online advertising
JP4846486B2 (en) * 2006-08-18 2011-12-28 富士通株式会社 Information processing apparatus and control method thereof
CA2557343C (en) * 2006-08-28 2015-09-22 Ibm Canada Limited-Ibm Canada Limitee Runtime code modification in a multi-threaded environment
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
US20080059762A1 (en) * 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system
US9563433B1 (en) 2006-09-01 2017-02-07 Allsearch Semi Llc System and method for class-based execution of an instruction broadcasted to an array of processing elements
US20080055307A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski Graphics rendering pipeline
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
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
US7657856B1 (en) 2006-09-12 2010-02-02 Cadence Design Systems, Inc. Method and system for parallel processing of IC design layouts
US7783654B1 (en) 2006-09-19 2010-08-24 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
JP4377899B2 (en) * 2006-09-20 2009-12-02 株式会社東芝 Resource management apparatus and program
US8010966B2 (en) * 2006-09-27 2011-08-30 Cisco Technology, Inc. Multi-threaded processing using path locks
US8179896B2 (en) 2006-11-09 2012-05-15 Justin Mark Sobaje Network processors and pipeline optimization methods
US9141557B2 (en) 2006-12-08 2015-09-22 Ashish A. Pandya Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine
US7996348B2 (en) 2006-12-08 2011-08-09 Pandya Ashish A 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters
JP4249780B2 (en) * 2006-12-26 2009-04-08 株式会社東芝 Device and program for managing resources
US7917486B1 (en) 2007-01-18 2011-03-29 Netlogic Microsystems, Inc. Optimizing search trees by increasing failure size parameter
DE602007014413D1 (en) * 2007-03-06 2011-06-16 Nec Corp DATA TRANSFER NETWORK AND CONTROL DEVICE FOR A SYSTEM WITH AN ARRAY OF PROCESSING ELEMENTS, EITHER EITHER SELF- OR COMMONLY CONTROLLED
JP2009086733A (en) * 2007-09-27 2009-04-23 Toshiba Corp Information processor, control method of information processor and control program of information processor
US20090089234A1 (en) * 2007-09-28 2009-04-02 Rockwell Automation Technologies, Inc. Automated code generation for simulators
US8548777B2 (en) * 2007-09-28 2013-10-01 Rockwell Automation Technologies, Inc. Automated recommendations from simulation
US20090089029A1 (en) * 2007-09-28 2009-04-02 Rockwell Automation Technologies, Inc. Enhanced execution speed to improve simulation performance
US20090089031A1 (en) * 2007-09-28 2009-04-02 Rockwell Automation Technologies, Inc. Integrated simulation of controllers and devices
US8069021B2 (en) * 2007-09-28 2011-11-29 Rockwell Automation Technologies, Inc. Distributed simulation and synchronization
US7801710B2 (en) * 2007-09-28 2010-09-21 Rockwell Automation Technologies, Inc. Simulation controls for model variability and randomness
US7995618B1 (en) * 2007-10-01 2011-08-09 Teklatech A/S System and a method of transmitting data from a first device to a second device
US8515052B2 (en) * 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US9596324B2 (en) 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
US8726289B2 (en) * 2008-02-22 2014-05-13 International Business Machines Corporation Streaming attachment of hardware accelerators to computer systems
US8250578B2 (en) * 2008-02-22 2012-08-21 International Business Machines Corporation Pipelining hardware accelerators to computer systems
US20090268727A1 (en) * 2008-04-24 2009-10-29 Allison Brian D Early header CRC in data response packets with variable gap count
US20090271532A1 (en) * 2008-04-24 2009-10-29 Allison Brian D Early header CRC in data response packets with variable gap count
US20090268736A1 (en) * 2008-04-24 2009-10-29 Allison Brian D Early header CRC in data response packets with variable gap count
US8543005B2 (en) * 2008-04-30 2013-09-24 Hewlett-Packard Development Company, L.P. Intentionally skewed optical clock signal distribution
JP2009271724A (en) * 2008-05-07 2009-11-19 Toshiba Corp Hardware engine controller
EP2289001B1 (en) * 2008-05-30 2018-07-25 Advanced Micro Devices, Inc. Local and global data share
US8958419B2 (en) * 2008-06-16 2015-02-17 Intel Corporation Switch fabric primitives
US8566487B2 (en) 2008-06-24 2013-10-22 Hartvig Ekner System and method for creating a scalable monolithic packet processing engine
US7804844B1 (en) * 2008-08-05 2010-09-28 Xilinx, Inc. Dataflow pipeline implementing actions for manipulating packets of a communication protocol
US8311057B1 (en) 2008-08-05 2012-11-13 Xilinx, Inc. Managing formatting of packets of a communication protocol
US8160092B1 (en) 2008-08-05 2012-04-17 Xilinx, Inc. Transforming a declarative description of a packet processor
US7949007B1 (en) 2008-08-05 2011-05-24 Xilinx, Inc. Methods of clustering actions for manipulating packets of a communication protocol
EP2327026A1 (en) * 2008-08-06 2011-06-01 Nxp B.V. Simd parallel processor architecture
CN101355482B (en) * 2008-09-04 2011-09-21 中兴通讯股份有限公司 Equipment, method and system for implementing identification of embedded device address sequence
US8493979B2 (en) * 2008-12-30 2013-07-23 Intel Corporation Single instruction processing of network packets
JP5238525B2 (en) * 2009-01-13 2013-07-17 株式会社東芝 Device and program for managing resources
KR101553652B1 (en) * 2009-02-18 2015-09-16 삼성전자 주식회사 Apparatus and method for compiling instruction for heterogeneous processor
US8140792B2 (en) * 2009-02-25 2012-03-20 International Business Machines Corporation Indirectly-accessed, hardware-affine channel storage in transaction-oriented DMA-intensive environments
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8874878B2 (en) * 2010-05-18 2014-10-28 Lsi Corporation Thread synchronization in a multi-thread, multi-flow network communications processor architecture
US8170062B2 (en) * 2009-04-29 2012-05-01 Intel Corporation Packetized interface for coupling agents
US8743877B2 (en) * 2009-12-21 2014-06-03 Steven L. Pope Header processing engine
CN101807288B (en) * 2010-03-12 2014-09-10 中兴通讯股份有限公司 Scenic spot guide system and implementation method thereof
US8332460B2 (en) * 2010-04-14 2012-12-11 International Business Machines Corporation Performing a local reduction operation on a parallel computer
EP2596470A1 (en) * 2010-07-19 2013-05-29 Advanced Micro Devices, Inc. Data processing using on-chip memory in multiple processing units
US8880507B2 (en) * 2010-07-22 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match using binary search tree
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
RU2436151C1 (en) * 2010-11-01 2011-12-10 Федеральное государственное унитарное предприятие "Российский Федеральный ядерный центр - Всероссийский научно-исследовательский институт экспериментальной физики" (ФГУП "РФЯЦ-ВНИИЭФ") Method of determining structure of hybrid computer system
US9667539B2 (en) * 2011-01-17 2017-05-30 Alcatel Lucent Method and apparatus for providing transport of customer QoS information via PBB networks
US8869162B2 (en) 2011-04-26 2014-10-21 Microsoft Corporation Stream processing on heterogeneous hardware devices
US9020892B2 (en) * 2011-07-08 2015-04-28 Microsoft Technology Licensing, Llc Efficient metadata storage
US8880494B2 (en) 2011-07-28 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match scheme
CN103858386B (en) 2011-08-02 2017-08-25 凯为公司 For performing the method and apparatus for wrapping classification by the decision tree of optimization
US8923306B2 (en) 2011-08-02 2014-12-30 Cavium, Inc. Phased bucket pre-fetch in a network processor
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US9154335B2 (en) * 2011-11-08 2015-10-06 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for transmitting data on a network
US9542236B2 (en) 2011-12-29 2017-01-10 Oracle International Corporation Efficiency sequencer for multiple concurrently-executing threads of execution
WO2013100783A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
US9178730B2 (en) 2012-02-24 2015-11-03 Freescale Semiconductor, Inc. Clock distribution module, synchronous digital system and method therefor
US20130229290A1 (en) * 2012-03-01 2013-09-05 Eaton Corporation Instrument panel bus interface
WO2013141290A1 (en) * 2012-03-23 2013-09-26 株式会社Mush-A Data processing device, data processing system, data structure, recording medium, storage device and data processing method
JP2013222364A (en) 2012-04-18 2013-10-28 Renesas Electronics Corp Signal processing circuit
US9082078B2 (en) 2012-07-27 2015-07-14 The Intellisis Corporation Neural processing engine and architecture using the same
CN103631315A (en) * 2012-08-22 2014-03-12 上海华虹集成电路有限责任公司 Clock design method facilitating timing sequence repair
US9185057B2 (en) * 2012-12-05 2015-11-10 The Intellisis Corporation Smart memory
US9639371B2 (en) 2013-01-29 2017-05-02 Advanced Micro Devices, Inc. Solution to divergent branches in a SIMD core using hardware pointers
US9391893B2 (en) * 2013-02-26 2016-07-12 Dell Products L.P. Lookup engine for an information handling system
US20140269690A1 (en) * 2013-03-13 2014-09-18 Qualcomm Incorporated Network element with distributed flow tables
US9185003B1 (en) * 2013-05-02 2015-11-10 Amazon Technologies, Inc. Distributed clock network with time synchronization and activity tracing between nodes
US20150012679A1 (en) * 2013-07-03 2015-01-08 Iii Holdings 2, Llc Implementing remote transaction functionalities between data processing nodes of a switched interconnect fabric
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10392744B2 (en) * 2013-10-11 2019-08-27 Wpt Gmbh Elastic floor covering in the form of a web product that can be rolled up
US20150120224A1 (en) * 2013-10-29 2015-04-30 C3 Energy, Inc. Systems and methods for processing data relating to energy usage
EP3328103A1 (en) 2013-11-29 2018-05-30 Nec Corporation Apparatus, system and method for mtc
US9547553B1 (en) 2014-03-10 2017-01-17 Parallel Machines Ltd. Data resiliency in a shared memory pool
US9372723B2 (en) * 2014-04-01 2016-06-21 Freescale Semiconductor, Inc. System and method for conditional task switching during ordering scope transitions
US9372724B2 (en) * 2014-04-01 2016-06-21 Freescale Semiconductor, Inc. System and method for conditional task switching during ordering scope transitions
US9781027B1 (en) 2014-04-06 2017-10-03 Parallel Machines Ltd. Systems and methods to communicate with external destinations via a memory network
US9690713B1 (en) 2014-04-22 2017-06-27 Parallel Machines Ltd. Systems and methods for effectively interacting with a flash memory
US9477412B1 (en) 2014-12-09 2016-10-25 Parallel Machines Ltd. Systems and methods for automatically aggregating write requests
US9733981B2 (en) 2014-06-10 2017-08-15 Nxp Usa, Inc. System and method for conditional task switching during ordering scope transitions
US9781225B1 (en) 2014-12-09 2017-10-03 Parallel Machines Ltd. Systems and methods for cache streams
US9753873B1 (en) 2014-12-09 2017-09-05 Parallel Machines Ltd. Systems and methods for key-value transactions
US9639473B1 (en) 2014-12-09 2017-05-02 Parallel Machines Ltd. Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location
US9639407B1 (en) 2014-12-09 2017-05-02 Parallel Machines Ltd. Systems and methods for efficiently implementing functional commands in a data processing system
US9632936B1 (en) 2014-12-09 2017-04-25 Parallel Machines Ltd. Two-tier distributed memory
US9552327B2 (en) 2015-01-29 2017-01-24 Knuedge Incorporated Memory controller for a network on a chip device
US10061531B2 (en) 2015-01-29 2018-08-28 Knuedge Incorporated Uniform system wide addressing for a computing system
US9749225B2 (en) * 2015-04-17 2017-08-29 Huawei Technologies Co., Ltd. Software defined network (SDN) control signaling for traffic engineering to enable multi-type transport in a data plane
EP3278213A4 (en) 2015-06-05 2019-01-30 C3 IoT, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
US20160381136A1 (en) * 2015-06-24 2016-12-29 Futurewei Technologies, Inc. System, method, and computer program for providing rest services to fine-grained resources based on a resource-oriented network
CN106326967B (en) * 2015-06-29 2023-05-05 四川谦泰仁投资管理有限公司 RFID chip with interactive switch input port
US10027583B2 (en) 2016-03-22 2018-07-17 Knuedge Incorporated Chained packet sequences in a network on a chip architecture
US9595308B1 (en) 2016-03-31 2017-03-14 Altera Corporation Multiple-die synchronous insertion delay measurement circuit and methods
US10346049B2 (en) 2016-04-29 2019-07-09 Friday Harbor Llc Distributed contiguous reads in a network on a chip architecture
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10664942B2 (en) * 2016-10-21 2020-05-26 Advanced Micro Devices, Inc. Reconfigurable virtual graphics and compute processor pipeline
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10296351B1 (en) * 2017-03-15 2019-05-21 Ambarella, Inc. Computer vision processing in hardware data paths
US10243882B1 (en) 2017-04-13 2019-03-26 Xilinx, Inc. Network on chip switch interconnect
CN107704922B (en) 2017-04-19 2020-12-08 赛灵思公司 Artificial neural network processing device
CN107679621B (en) * 2017-04-19 2020-12-08 赛灵思公司 Artificial neural network processing device
CN107679620B (en) * 2017-04-19 2020-05-26 赛灵思公司 Artificial neural network processing device
US10514719B2 (en) * 2017-06-27 2019-12-24 Biosense Webster (Israel) Ltd. System and method for synchronization among clocks in a wireless system
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
CN107831824B (en) * 2017-10-16 2021-04-06 北京比特大陆科技有限公司 Clock signal transmission method and device, multiplexing chip and electronic equipment
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10673745B2 (en) 2018-02-01 2020-06-02 Xilinx, Inc. End-to-end quality-of-service in a network-on-chip
US10503690B2 (en) 2018-02-23 2019-12-10 Xilinx, Inc. Programmable NOC compatible with multiple interface communication protocol
JP2019153909A (en) * 2018-03-02 2019-09-12 株式会社リコー Semiconductor integrated circuit and clock supply method
US10621129B2 (en) 2018-03-27 2020-04-14 Xilinx, Inc. Peripheral interconnect for configurable slave endpoint circuits
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10505548B1 (en) 2018-05-25 2019-12-10 Xilinx, Inc. Multi-chip structure having configurable network-on-chip
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10838908B2 (en) 2018-07-20 2020-11-17 Xilinx, Inc. Configurable network-on-chip for a programmable device
US10824505B1 (en) 2018-08-21 2020-11-03 Xilinx, Inc. ECC proxy extension and byte organization for multi-master systems
US11176281B2 (en) * 2018-10-08 2021-11-16 Micron Technology, Inc. Security managers and methods for implementing security protocols in a reconfigurable fabric
US10963460B2 (en) 2018-12-06 2021-03-30 Xilinx, Inc. Integrated circuits and methods to accelerate data queries
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10796040B2 (en) * 2019-02-05 2020-10-06 Arm Limited Integrated circuit design and fabrication
US10936486B1 (en) 2019-02-21 2021-03-02 Xilinx, Inc. Address interleave support in a programmable device
US10680615B1 (en) 2019-03-27 2020-06-09 Xilinx, Inc. Circuit for and method of configuring and partially reconfiguring function blocks of an integrated circuit device
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11386038B2 (en) * 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US10891414B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Hardware-software design flow for heterogeneous and programmable devices
US11301295B1 (en) 2019-05-23 2022-04-12 Xilinx, Inc. Implementing an application specified as a data flow graph in an array of data processing engines
US11188312B2 (en) 2019-05-23 2021-11-30 Xilinx, Inc. Hardware-software design flow with high-level synthesis for heterogeneous and programmable devices
US10891132B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Flow convergence during hardware-software design for heterogeneous and programmable devices
US11288244B2 (en) * 2019-06-10 2022-03-29 Akamai Technologies, Inc. Tree deduplication
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US10977018B1 (en) 2019-12-05 2021-04-13 Xilinx, Inc. Development environment for heterogeneous devices
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11320885B2 (en) 2020-05-26 2022-05-03 Dell Products L.P. Wide range power mechanism for over-speed memory design
US11496418B1 (en) 2020-08-25 2022-11-08 Xilinx, Inc. Packet-based and time-multiplexed network-on-chip
CN114528246A (en) * 2020-11-23 2022-05-24 深圳比特微电子科技有限公司 Operation core, calculation chip and encrypted currency mining machine
US11520717B1 (en) 2021-03-09 2022-12-06 Xilinx, Inc. Memory tiles in data processing engine array
US11336287B1 (en) 2021-03-09 2022-05-17 Xilinx, Inc. Data processing engine array architecture with memory tiles
US11768714B2 (en) 2021-06-22 2023-09-26 Microsoft Technology Licensing, Llc On-chip hardware semaphore array supporting multiple conditionals
US11848670B2 (en) 2022-04-15 2023-12-19 Xilinx, Inc. Multiple partitions in a data processing array

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4899216A (en) * 1986-09-02 1990-02-06 Fuji Photo Film Co., Ltd. Method of and apparatus for processing an image with gradation correction of video signal
US5121198A (en) * 1990-06-28 1992-06-09 Eastman Kodak Company Method of setting the contrast of a color video picture in a computer controlled photographic film analyzing system
US5155484A (en) * 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
US5327159A (en) * 1990-06-27 1994-07-05 Texas Instruments Incorporated Packed bus selection of multiple pixel depths in palette devices, systems and methods
US5640551A (en) * 1993-04-14 1997-06-17 Apple Computer, Inc. Efficient high speed trie search process
US5651099A (en) * 1995-01-26 1997-07-22 Hewlett-Packard Company Use of a genetic algorithm to optimize memory space
US5754584A (en) * 1994-09-09 1998-05-19 Omnipoint Corporation Non-coherent spread-spectrum continuous-phase modulation communication system
US5781772A (en) * 1989-07-12 1998-07-14 Digital Equipment Corporation Compressed prefix matching database searching
US6115802A (en) * 1995-10-13 2000-09-05 Sun Mircrosystems, Inc. Efficient hash table for use in multi-threaded environments
US6131102A (en) * 1998-06-15 2000-10-10 Microsoft Corporation Method and system for cost computation of spelling suggestions and automatic replacement
US20030004921A1 (en) * 2001-06-28 2003-01-02 Schroeder Jacob J. Parallel lookups that keep order
US6631419B1 (en) * 1999-09-22 2003-10-07 Juniper Networks, Inc. Method and apparatus for high-speed longest prefix and masked prefix table search

Family Cites Families (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1061921B (en) * 1976-06-23 1983-04-30 Lolli & C Spa IMPROVEMENT IN DIFFUSERS FOR AIR CONDITIONING SYSTEMS
USD259208S (en) * 1979-04-23 1981-05-12 Mccullough John R Roof vent
GB8401805D0 (en) * 1984-01-24 1984-02-29 Int Computers Ltd Data processing apparatus
JPS61156338A (en) * 1984-12-27 1986-07-16 Toshiba Corp Multiprocessor system
US4641571A (en) * 1985-07-15 1987-02-10 Enamel Products & Plating Co. Turbo fan vent
US4850027A (en) * 1985-07-26 1989-07-18 International Business Machines Corporation Configurable parallel pipeline image processing system
JP2564805B2 (en) * 1985-08-08 1996-12-18 日本電気株式会社 Information processing device
JPH0771111B2 (en) * 1985-09-13 1995-07-31 日本電気株式会社 Packet exchange processor
US5021947A (en) * 1986-03-31 1991-06-04 Hughes Aircraft Company Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing
GB8618943D0 (en) * 1986-08-02 1986-09-10 Int Computers Ltd Data processing apparatus
US5418970A (en) * 1986-12-17 1995-05-23 Massachusetts Institute Of Technology Parallel processing system with processor array with processing elements addressing associated memories using host supplied address value and base register content
GB8723203D0 (en) * 1987-10-02 1987-11-04 Crosfield Electronics Ltd Interactive image modification
DE3742941A1 (en) * 1987-12-18 1989-07-06 Standard Elektrik Lorenz Ag PACKAGE BROKERS
JP2559262B2 (en) * 1988-10-13 1996-12-04 富士写真フイルム株式会社 Magnetic disk
JPH02105910A (en) * 1988-10-14 1990-04-18 Hitachi Ltd Logic integrated circuit
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
US5218709A (en) * 1989-12-28 1993-06-08 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Special purpose parallel computer architecture for real-time control and simulation in robotic applications
US5426610A (en) * 1990-03-01 1995-06-20 Texas Instruments Incorporated Storage circuitry using sense amplifier with temporary pause for voltage supply isolation
JPH04219859A (en) * 1990-03-12 1992-08-10 Hewlett Packard Co <Hp> Harware distributor which distributes series-instruction-stream data to parallel processors
US5625836A (en) 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5713037A (en) 1990-11-13 1998-01-27 International Business Machines Corporation Slide bus communication functions for SIMD/MIMD array processor
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5963746A (en) 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5367643A (en) * 1991-02-06 1994-11-22 International Business Machines Corporation Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
US5285528A (en) * 1991-02-22 1994-02-08 International Business Machines Corporation Data structures and algorithms for managing lock states of addressable element ranges
WO1992015960A1 (en) * 1991-03-05 1992-09-17 Hajime Seki Electronic computer system and processor elements used for this system
US5313582A (en) * 1991-04-30 1994-05-17 Standard Microsystems Corporation Method and apparatus for buffering data within stations of a communication network
US5224100A (en) * 1991-05-09 1993-06-29 David Sarnoff Research Center, Inc. Routing technique for a hierarchical interprocessor-communication network between massively-parallel processors
EP0593609A1 (en) * 1991-07-01 1994-04-27 Telstra Corporation Limited High speed switching architecture
US5404550A (en) * 1991-07-25 1995-04-04 Tandem Computers Incorporated Method and apparatus for executing tasks by following a linked list of memory packets
JP2750968B2 (en) * 1991-11-18 1998-05-18 シャープ株式会社 Data driven information processor
US5307381A (en) * 1991-12-27 1994-04-26 Intel Corporation Skew-free clock signal distribution network in a microprocessor
US5603028A (en) * 1992-03-02 1997-02-11 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for data distribution
JPH0696035A (en) 1992-09-16 1994-04-08 Sanyo Electric Co Ltd Processing element and parallel processing computer using the same
EP0601715A1 (en) * 1992-12-11 1994-06-15 National Semiconductor Corporation Bus of CPU core optimized for accessing on-chip memory devices
US5579223A (en) * 1992-12-24 1996-11-26 Microsoft Corporation Method and system for incorporating modifications made to a computer program into a translated version of the computer program
GB2277235B (en) * 1993-04-14 1998-01-07 Plessey Telecomm Apparatus and method for the digital transmission of data
US5420858A (en) * 1993-05-05 1995-05-30 Synoptics Communications, Inc. Method and apparatus for communications from a non-ATM communication medium to an ATM communication medium
JP2629568B2 (en) * 1993-07-30 1997-07-09 日本電気株式会社 ATM cell switching system
US5918061A (en) * 1993-12-29 1999-06-29 Intel Corporation Enhanced power managing unit (PMU) in a multiprocessor chip
US5524223A (en) 1994-01-31 1996-06-04 Motorola, Inc. Instruction accelerator for processing loop instructions with address generator using multiple stored increment values
US5423003A (en) * 1994-03-03 1995-06-06 Geonet Limited L.P. System for managing network computer applications
DE69428186T2 (en) * 1994-04-28 2002-03-28 Hewlett Packard Co Multicast device
DE69519449T2 (en) * 1994-05-05 2001-06-21 Conexant Systems Inc Space pointer data path
JP3093273B2 (en) 1994-05-06 2000-10-03 モトローラ・インコーポレーテッド Call routing system for wireless data devices
US5463732A (en) * 1994-05-13 1995-10-31 David Sarnoff Research Center, Inc. Method and apparatus for accessing a distributed data buffer
US5659781A (en) * 1994-06-29 1997-08-19 Larson; Noble G. Bidirectional systolic ring network
US5682480A (en) * 1994-08-15 1997-10-28 Hitachi, Ltd. Parallel computer system for performing barrier synchronization by transferring the synchronization packet through a path which bypasses the packet buffer in response to an interrupt
US5586119A (en) * 1994-08-31 1996-12-17 Motorola, Inc. Method and apparatus for packet alignment in a communication system
US5949781A (en) * 1994-08-31 1999-09-07 Brooktree Corporation Controller for ATM segmentation and reassembly
AU1174695A (en) * 1994-11-07 1996-05-31 Temple University - Of The Commonwealth System Of Higher Education Multicomputer system and method
JPH08249306A (en) * 1995-03-09 1996-09-27 Sharp Corp Data driven type information processor
US5634068A (en) * 1995-03-31 1997-05-27 Sun Microsystems, Inc. Packet switched cache coherent multiprocessor system
US5835095A (en) * 1995-05-08 1998-11-10 Intergraph Corporation Visible line processor
JP3515263B2 (en) * 1995-05-18 2004-04-05 株式会社東芝 Router device, data communication network system, node device, data transfer method, and network connection method
US5689677A (en) 1995-06-05 1997-11-18 Macmillan; David C. Circuit for enhancing performance of a computer for personal use
US6147996A (en) * 1995-08-04 2000-11-14 Cisco Technology, Inc. Pipelined multiple issue packet switch
US5612956A (en) * 1995-12-15 1997-03-18 General Instrument Corporation Of Delaware Reformatting of variable rate data for fixed rate communication
US5822606A (en) * 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
IL116989A (en) * 1996-01-31 1999-10-28 Galileo Technology Ltd Switching ethernet controller
WO1997029613A1 (en) 1996-02-06 1997-08-14 International Business Machines Corporation Parallel on-the-fly processing of fixed length cells
US5781549A (en) * 1996-02-23 1998-07-14 Allied Telesyn International Corp. Method and apparatus for switching data packets in a data network
US6035193A (en) 1996-06-28 2000-03-07 At&T Wireless Services Inc. Telephone system having land-line-supported private base station switchable into cellular network
US6101176A (en) 1996-07-24 2000-08-08 Nokia Mobile Phones Method and apparatus for operating an indoor CDMA telecommunications system
US5828858A (en) * 1996-09-16 1998-10-27 Virginia Tech Intellectual Properties, Inc. Worm-hole run-time reconfigurable processor field programmable gate array (FPGA)
US6088355A (en) * 1996-10-11 2000-07-11 C-Cube Microsystems, Inc. Processing system with pointer-based ATM segmentation and reassembly
US6791947B2 (en) * 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
JPH10271132A (en) * 1997-03-27 1998-10-09 Toshiba Corp Flow control system for packet exchange network
JP3000961B2 (en) * 1997-06-06 2000-01-17 日本電気株式会社 Semiconductor integrated circuit
US5969559A (en) * 1997-06-09 1999-10-19 Schwartz; David M. Method and apparatus for using a power grid for clock distribution in semiconductor integrated circuits
US5828870A (en) * 1997-06-30 1998-10-27 Adaptec, Inc. Method and apparatus for controlling clock skew in an integrated circuit
JP3469046B2 (en) * 1997-07-08 2003-11-25 株式会社東芝 Functional block and semiconductor integrated circuit device
US6047304A (en) * 1997-07-29 2000-04-04 Nortel Networks Corporation Method and apparatus for performing lane arithmetic to perform network processing
WO1999014893A2 (en) * 1997-09-17 1999-03-25 Sony Electronics Inc. Multi-port bridge with triplet architecture and periodical update of address look-up table
JPH11194850A (en) * 1997-09-19 1999-07-21 Lsi Logic Corp Clock distribution network for integrated circuit, and clock distribution method
US6009488A (en) * 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US5872993A (en) * 1997-12-01 1999-02-16 Advanced Micro Devices, Inc. Communications system with multiple, simultaneous accesses to a memory
US6081523A (en) * 1997-12-05 2000-06-27 Advanced Micro Devices, Inc. Arrangement for transmitting packet data segments from a media access controller across multiple physical links
US6219796B1 (en) * 1997-12-23 2001-04-17 Texas Instruments Incorporated Power reduction for processors by software control of functional units
US6301603B1 (en) * 1998-02-17 2001-10-09 Euphonics Incorporated Scalable audio processing on a heterogeneous processor array
JP3490286B2 (en) 1998-03-13 2004-01-26 株式会社東芝 Router device and frame transfer method
JPH11272629A (en) * 1998-03-19 1999-10-08 Hitachi Ltd Data processor
US6052769A (en) * 1998-03-31 2000-04-18 Intel Corporation Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
US6275508B1 (en) * 1998-04-21 2001-08-14 Nexabit Networks, Llc Method of and system for processing datagram headers for high speed computer network interfaces at low clock speeds, utilizing scalable algorithms for performing such network header adaptation (SAPNA)
AU3883499A (en) * 1998-05-07 1999-11-23 Aprisma Management Technologies, Inc. Multiple priority buffering in a computer network
US6305001B1 (en) * 1998-06-18 2001-10-16 Lsi Logic Corporation Clock distribution network planning and method therefor
DE69840947D1 (en) 1998-09-10 2009-08-13 Ibm Packet switching adapter for variable length data packets
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
EP0992895A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Hardware accelerator for data processing systems
JP3504510B2 (en) * 1998-10-12 2004-03-08 日本電信電話株式会社 Packet switch
JP3866425B2 (en) * 1998-11-12 2007-01-10 株式会社日立コミュニケーションテクノロジー Packet switch
US6272522B1 (en) * 1998-11-17 2001-08-07 Sun Microsystems, Incorporated Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
US6256421B1 (en) * 1998-12-07 2001-07-03 Xerox Corporation Method and apparatus for simulating JPEG compression
JP3704438B2 (en) * 1998-12-09 2005-10-12 株式会社日立製作所 Variable-length packet communication device
US6338078B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US6366584B1 (en) * 1999-02-06 2002-04-02 Triton Network Systems, Inc. Commercial network based on point to point radios
JP3587076B2 (en) 1999-03-05 2004-11-10 松下電器産業株式会社 Packet receiver
AU4651000A (en) * 1999-04-23 2000-11-10 Z-Dice, Inc. Gaming apparatus and method
GB2352536A (en) * 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution
GB2352595B (en) * 1999-07-27 2003-10-01 Sgs Thomson Microelectronics Data processing device
USD428484S (en) * 1999-08-03 2000-07-18 Zirk Todd A Copper roof vent cover
US6631422B1 (en) 1999-08-26 2003-10-07 International Business Machines Corporation Network adapter utilizing a hashing function for distributing packets to multiple processors for parallel processing
US6404752B1 (en) * 1999-08-27 2002-06-11 International Business Machines Corporation Network switch using network processor and methods
US6963572B1 (en) * 1999-10-22 2005-11-08 Alcatel Canada Inc. Method and apparatus for segmentation and reassembly of data packets in a communication switch
AU2470901A (en) * 1999-10-26 2001-06-06 Arthur D. Little, Inc. Bit-serial memory access with wide processing elements for simd arrays
JP2001177574A (en) * 1999-12-20 2001-06-29 Kddi Corp Transmission controller in packet exchange network
GB2357601B (en) * 1999-12-23 2004-03-31 Ibm Remote power control
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
CN100339832C (en) * 2000-01-07 2007-09-26 国际商业机器公司 Method and system for frame and protocol classification
US20030093613A1 (en) * 2000-01-14 2003-05-15 David Sherman Compressed ternary mask system and method
JP2001202345A (en) * 2000-01-21 2001-07-27 Hitachi Ltd Parallel processor
DE60026229T2 (en) * 2000-01-27 2006-12-14 International Business Machines Corp. Method and apparatus for classifying data packets
US6704794B1 (en) * 2000-03-03 2004-03-09 Nokia Intelligent Edge Routers Inc. Cell reassembly for packet based networks
US20020107903A1 (en) * 2000-11-07 2002-08-08 Richter Roger K. Methods and systems for the order serialization of information in a network processing environment
JP2001251349A (en) * 2000-03-06 2001-09-14 Fujitsu Ltd Packet processor
US7139282B1 (en) * 2000-03-24 2006-11-21 Juniper Networks, Inc. Bandwidth division for packet processing
US7089240B2 (en) * 2000-04-06 2006-08-08 International Business Machines Corporation Longest prefix match lookup using hash function
US7107265B1 (en) * 2000-04-06 2006-09-12 International Business Machines Corporation Software management tree implementation for a network processor
US6718326B2 (en) * 2000-08-17 2004-04-06 Nippon Telegraph And Telephone Corporation Packet classification search device and method
DE10059026A1 (en) 2000-11-28 2002-06-13 Infineon Technologies Ag Unit for the distribution and processing of data packets
GB2370381B (en) * 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
USD453960S1 (en) * 2001-01-30 2002-02-26 Molded Products Company Shroud for a fan assembly
US6832261B1 (en) 2001-02-04 2004-12-14 Cisco Technology, Inc. Method and apparatus for distributed resequencing and reassembly of subdivided packets
JP2004524617A (en) 2001-02-14 2004-08-12 クリアスピード・テクノロジー・リミテッド Clock distribution system
GB2407673B (en) 2001-02-14 2005-08-24 Clearspeed Technology Plc Lookup engine
JP4475835B2 (en) * 2001-03-05 2010-06-09 富士通株式会社 Input line interface device and packet communication device
CA97495S (en) * 2001-03-20 2003-05-07 Flettner Ventilator Ltd Rotor
USD471971S1 (en) * 2001-03-20 2003-03-18 Flettner Ventilator Limited Ventilation cover
US6922716B2 (en) 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
US7257590B2 (en) * 2001-08-29 2007-08-14 Nokia Corporation Method and system for classifying binary strings
US7283538B2 (en) * 2001-10-12 2007-10-16 Vormetric, Inc. Load balanced scalable network gateway processor architecture
US7317730B1 (en) * 2001-10-13 2008-01-08 Greenfield Networks, Inc. Queueing architecture and load balancing for parallel packet processing in communication networks
US6941446B2 (en) 2002-01-21 2005-09-06 Analog Devices, Inc. Single instruction multiple data array cell
US7382782B1 (en) 2002-04-12 2008-06-03 Juniper Networks, Inc. Packet spraying for load balancing across multiple packet processors
US20030235194A1 (en) * 2002-06-04 2003-12-25 Mike Morrison Network processor with multiple multi-threaded packet-type specific engines
US7200137B2 (en) * 2002-07-29 2007-04-03 Freescale Semiconductor, Inc. On chip network that maximizes interconnect utilization between processing elements
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
GB0226249D0 (en) * 2002-11-11 2002-12-18 Clearspeed Technology Ltd Traffic handling system
US7656799B2 (en) 2003-07-29 2010-02-02 Citrix Systems, Inc. Flow control system architecture
US7620050B2 (en) 2004-09-10 2009-11-17 Canon Kabushiki Kaisha Communication control device and communication control method
US7787454B1 (en) 2007-10-31 2010-08-31 Gigamon Llc. Creating and/or managing meta-data for data storage devices using a packet switch appliance
JP5231926B2 (en) 2008-10-06 2013-07-10 キヤノン株式会社 Information processing apparatus, control method therefor, and computer program
US8493979B2 (en) * 2008-12-30 2013-07-23 Intel Corporation Single instruction processing of network packets
US8014295B2 (en) 2009-07-14 2011-09-06 Ixia Parallel packet processor with session active checker

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4899216A (en) * 1986-09-02 1990-02-06 Fuji Photo Film Co., Ltd. Method of and apparatus for processing an image with gradation correction of video signal
US5781772A (en) * 1989-07-12 1998-07-14 Digital Equipment Corporation Compressed prefix matching database searching
US6014659A (en) * 1989-07-12 2000-01-11 Cabletron Systems, Inc. Compressed prefix matching database searching
US5327159A (en) * 1990-06-27 1994-07-05 Texas Instruments Incorporated Packed bus selection of multiple pixel depths in palette devices, systems and methods
US5121198A (en) * 1990-06-28 1992-06-09 Eastman Kodak Company Method of setting the contrast of a color video picture in a computer controlled photographic film analyzing system
US5155484A (en) * 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
US5640551A (en) * 1993-04-14 1997-06-17 Apple Computer, Inc. Efficient high speed trie search process
US5754584A (en) * 1994-09-09 1998-05-19 Omnipoint Corporation Non-coherent spread-spectrum continuous-phase modulation communication system
US5651099A (en) * 1995-01-26 1997-07-22 Hewlett-Packard Company Use of a genetic algorithm to optimize memory space
US6115802A (en) * 1995-10-13 2000-09-05 Sun Mircrosystems, Inc. Efficient hash table for use in multi-threaded environments
US6131102A (en) * 1998-06-15 2000-10-10 Microsoft Corporation Method and system for cost computation of spelling suggestions and automatic replacement
US6631419B1 (en) * 1999-09-22 2003-10-07 Juniper Networks, Inc. Method and apparatus for high-speed longest prefix and masked prefix table search
US20030004921A1 (en) * 2001-06-28 2003-01-02 Schroeder Jacob J. Parallel lookups that keep order

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040028046A1 (en) * 2002-08-08 2004-02-12 Priya Govindarajan Logarithmic time range-based multifield-correlation packet classification
US7684400B2 (en) * 2002-08-08 2010-03-23 Intel Corporation Logarithmic time range-based multifield-correlation packet classification
US20040114587A1 (en) * 2002-12-12 2004-06-17 Stmicroelectronics, Inc. System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine
US7715392B2 (en) * 2002-12-12 2010-05-11 Stmicroelectronics, Inc. System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine
US20050055457A1 (en) * 2003-09-10 2005-03-10 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US7702882B2 (en) 2003-09-10 2010-04-20 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US20070028190A1 (en) * 2005-05-20 2007-02-01 Scott Stachfield Dynamic hyperlinking approach
US8555166B2 (en) * 2005-05-20 2013-10-08 Hillcrest Laboratories, Inc. Dynamic hyperlinking approach
US9344763B2 (en) 2005-05-20 2016-05-17 Hillcrest Laboratories, Inc. Dynamic hyperlinking approach
US20070091899A1 (en) * 2005-10-21 2007-04-26 Cisco Technology, Inc., A California Corporation Data structure for storing and accessing multiple independent sets of forwarding information
US7551609B2 (en) * 2005-10-21 2009-06-23 Cisco Technology, Inc. Data structure for storing and accessing multiple independent sets of forwarding information
US8775727B2 (en) 2012-08-31 2014-07-08 Lsi Corporation Lookup engine with pipelined access, speculative add and lock-in-hit function
US10063407B1 (en) 2016-02-08 2018-08-28 Barefoot Networks, Inc. Identifying and marking failed egress links in data plane
US20210194800A1 (en) * 2016-02-08 2021-06-24 Barefoot Networks, Inc. Resilient hashing for forwarding packets
US11811902B2 (en) * 2016-02-08 2023-11-07 Barefoot Networks, Inc. Resilient hashing for forwarding packets
US10313231B1 (en) * 2016-02-08 2019-06-04 Barefoot Networks, Inc. Resilient hashing for forwarding packets
US11310099B2 (en) 2016-02-08 2022-04-19 Barefoot Networks, Inc. Identifying and marking failed egress links in data plane
US10791046B2 (en) 2016-11-17 2020-09-29 Barefoot Networks, Inc. Weighted-cost multi-pathing using range lookups
US10084687B1 (en) 2016-11-17 2018-09-25 Barefoot Networks, Inc. Weighted-cost multi-pathing using range lookups
US10728173B1 (en) 2017-03-05 2020-07-28 Barefoot Networks, Inc. Equal cost multiple path group failover for multicast
US10404619B1 (en) 2017-03-05 2019-09-03 Barefoot Networks, Inc. Link aggregation group failover for multicast
US11271869B1 (en) 2017-03-05 2022-03-08 Barefoot Networks, Inc. Link aggregation group failover for multicast
US11716291B1 (en) 2017-03-05 2023-08-01 Barefoot Networks, Inc. Link aggregation group failover for multicast
US10237206B1 (en) 2017-03-05 2019-03-19 Barefoot Networks, Inc. Equal cost multiple path group failover for multicast
CN110009092A (en) * 2017-11-03 2019-07-12 畅想科技有限公司 Activation primitive for deep neural network
US20230214355A1 (en) * 2021-12-31 2023-07-06 Tsx Inc. Storage of order books with persistent data structures
US11797480B2 (en) * 2021-12-31 2023-10-24 Tsx Inc. Storage of order books with persistent data structures

Also Published As

Publication number Publication date
US20110083000A1 (en) 2011-04-07
GB2377519B (en) 2005-06-15
US8127112B2 (en) 2012-02-28
US20050242976A1 (en) 2005-11-03
GB2389689B (en) 2005-06-08
GB2374443B (en) 2005-06-08
JP2004524617A (en) 2004-08-12
JP2004525449A (en) 2004-08-19
US20030041163A1 (en) 2003-02-27
US20070220232A1 (en) 2007-09-20
US7290162B2 (en) 2007-10-30
US7917727B2 (en) 2011-03-29
WO2002065700A3 (en) 2002-11-21
GB2389689A (en) 2003-12-17
GB0319801D0 (en) 2003-09-24
AU2002233500A1 (en) 2002-08-28
GB0203634D0 (en) 2002-04-03
US20040114609A1 (en) 2004-06-17
US7856543B2 (en) 2010-12-21
CN1613041A (en) 2005-05-04
US20070217453A1 (en) 2007-09-20
GB0203633D0 (en) 2002-04-03
GB2390506A (en) 2004-01-07
GB2374442B (en) 2005-03-23
WO2002065700A2 (en) 2002-08-22
GB2390506B (en) 2005-03-23
WO2002065259A1 (en) 2002-08-22
GB0203632D0 (en) 2002-04-03
CN1504035A (en) 2004-06-09
GB2374443A (en) 2002-10-16
GB2374442A (en) 2002-10-16
CN100367730C (en) 2008-02-06
US20050243827A1 (en) 2005-11-03
US8200686B2 (en) 2012-06-12
GB2377519A (en) 2003-01-15
US20040130367A1 (en) 2004-07-08
US7818541B2 (en) 2010-10-19
US20020161926A1 (en) 2002-10-31
GB0321186D0 (en) 2003-10-08

Similar Documents

Publication Publication Date Title
US8200686B2 (en) Lookup engine
US7167471B2 (en) Network processor with single interface supporting tree search engine and CAM
US7281085B1 (en) Method and device for virtualization of multiple data sets on same associative memory
US6266706B1 (en) Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams
US6606681B1 (en) Optimized content addressable memory (CAM)
JP3453148B2 (en) Fast Variable Length Best Match Lookup in Switching Devices
US5909440A (en) High speed variable length best match look-up in a switching device
US6553002B1 (en) Apparatus and method for routing data packets through a communications network
US6665297B1 (en) Network routing table
US6434144B1 (en) Multi-level table lookup
US6697363B1 (en) Method and apparatus for longest matching prefix determination in a communication network
US8780926B2 (en) Updating prefix-compressed tries for IP route lookup
US20050044134A1 (en) High-performance hashing system
US7539772B2 (en) Method for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables
EP1485827A2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
KR20020081680A (en) Method and apparatus for longest match address lookup
JP4995125B2 (en) How to search fixed length data
WO2001005116A2 (en) Routing method and apparatus
US20040015494A1 (en) Multi-bit patricia trees
US6804230B1 (en) Communication device with forwarding database having a trie search facility
JP2004229163A (en) Device and method for retrieving fixed length data, computer program, and computer readable recording medium
US20140358886A1 (en) Internal search engines architecture
WO2002098055A2 (en) Load balancing in ip address lookup
CA2303118A1 (en) Method and system for fast routing lookups
GB2407673A (en) Lookup engine

Legal Events

Date Code Title Description
AS Assignment

Owner name: CLEARSPEED TECHNOLOGY LIMITED, UNITED KINGDOM

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RHOADES, JOHN;REEL/FRAME:012842/0269

Effective date: 20020325

AS Assignment

Owner name: CLEARSPEED SOLUTIONS LIMITED, UNITED KINGDOM

Free format text: CHANGE OF NAME;ASSIGNOR:CLEARSPEED TECHNOLOGY LIMITED;REEL/FRAME:017596/0686

Effective date: 20040701

Owner name: CLEARSPEED TECHNOLOGY PLC, UNITED KINGDOM

Free format text: MERGER;ASSIGNOR:CLEARSPEED SOLUTIONS LIMITED;REEL/FRAME:017596/0727

Effective date: 20040701

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: CLEARSPEED TECHNOLOGY LIMITED, UNITED KINGDOM

Free format text: CHANGE OF NAME;ASSIGNOR:CLEARSPEED TECHNOLOGY PLC;REEL/FRAME:024979/0100

Effective date: 20090729

AS Assignment

Owner name: RAMBUS INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:CLEARSPEED TECHNOLOGY LTD.;REEL/FRAME:024987/0496

Effective date: 20100818