US20090207838A1 - Ternary content addressable memory embedded in a central processing unit - Google Patents

Ternary content addressable memory embedded in a central processing unit Download PDF

Info

Publication number
US20090207838A1
US20090207838A1 US12/431,178 US43117809A US2009207838A1 US 20090207838 A1 US20090207838 A1 US 20090207838A1 US 43117809 A US43117809 A US 43117809A US 2009207838 A1 US2009207838 A1 US 2009207838A1
Authority
US
United States
Prior art keywords
cpu
content addressable
addressable memory
ternary content
unit
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
US12/431,178
Inventor
Walter Clark Milliken
Craig Partridge
Alden W. Jackson
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.)
RPX Corp
Original Assignee
Stragent LLC
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=40672519&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=US20090207838(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Stragent LLC filed Critical Stragent LLC
Priority to US12/431,178 priority Critical patent/US20090207838A1/en
Publication of US20090207838A1 publication Critical patent/US20090207838A1/en
Priority to US13/071,290 priority patent/US20110173386A1/en
Assigned to RPX CORPORATION reassignment RPX CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: STRAGENT, LLC
Assigned to BBNT SOLUTIONS LLC reassignment BBNT SOLUTIONS LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PARTRIDGE, CRAIG, JACKSON, ALDEN W., MILLIKEN, WALTER CLARK
Assigned to BBN TECHNOLOGIES CORP. reassignment BBN TECHNOLOGIES CORP. MERGER (SEE DOCUMENT FOR DETAILS). Assignors: BBNT SOLUTIONS LLC
Assigned to STRAGENT, LLC reassignment STRAGENT, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BBN TECHNOLOGIES CORP.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Definitions

  • the present invention relates generally to central processing units and, more particularly, to systems and methods for processing data via a central processing unit containing an embedded ternary content addressable memory device.
  • LANs local area networks
  • businesses increase their use of networks, the result will be a more heavy reliance on transmitting data across these networks. This need for greater bandwidth and faster processing power will ultimately drive the need for more specialized network components.
  • CPU central processing unit
  • the CPU or the brains of most network devices, has evolved overtime to fit a greater number of transistors into ever smaller packages.
  • the basic goal of every new CPU design is to perform more operations in less time.
  • new CPU architecture designs are needed to support an increasing and massive flow of information across networks at all levels.
  • the network protocols that are becoming the standard for moving this massive amount of information require specific operations to be performed.
  • the CPUs used in this infrastructure must contain specialized functions to permit the rapid classification, manipulation, routing, and processing of packet-based messages. Performing fast parallel search operations would be useful in performing lookups in routers and networking equipment, in performing network traffic address management, and for performing other functions in which pattern recognition is needed.
  • on-chip error detection circuitry is needed to determine if data packets reached their destination without error, and to aid in the retransmission of those data packets that did not.
  • on-chip CPU designs are not specialized to perform the network intensive functions necessary to achieve the next level in network processing.
  • Systems and methods consistent with the present invention address this and other needs by providing a unique CPU architecture that permits faster processing of network data packets through the incorporation of a ternary (three operating-state) content addressable memory (CAM).
  • CAM content addressable memory
  • a CPU includes an arithmetic logic unit (ALU) and a ternary CAM.
  • ALU arithmetic logic unit
  • the ternary CAM is configured to perform one or more matching operations.
  • a method for processing packets in a network device includes receiving a packet and processing the packet using a ternary content addressable memory resident within a processing unit of the network device.
  • an ALU includes a register unit, a ternary content addressable memory, and an operations unit.
  • FIG. 1 illustrates an exemplary CPU in which systems and methods consistent with the present invention may be implemented
  • FIG. 2 illustrates an exemplary configuration, consistent with the present invention, of the ALU of FIG. 1 ;
  • FIG. 3 illustrates an exemplary configuration, consistent with the present invention, of the ALU register unit of FIG. 2 ;
  • FIG. 4 illustrates an exemplary configuration, consistent with the present invention, of the ternary CAM unit of FIG. 2 ;
  • FIG. 5 illustrates exemplary processing, consistent with the present invention, for performing pattern-matching operations.
  • Implementations consistent with the present invention provide a process through which a data packet may be processed by a CPU specialized to perform network processing operations.
  • the CPU consists of a bus, a memory unit, a control unit, and an enhanced arithmetic logic unit (ALU).
  • the ALU contains a ternary CAM unit to permit improved processing performance.
  • FIG. 1 illustrates an exemplary CPU 100 in which systems and methods, consistent with the present invention for processing network data packets may be implemented.
  • the CPU 100 includes a bus 110 , a memory management unit 120 , a control unit 130 , and an ALU 140 .
  • a single memory management unit 120 , control unit 130 , and ALU 140 have been shown for simplicity. It will be appreciated that the techniques described herein are equally applicable to CPUs 100 having multiple memory management units 120 , control units 130 , and/or ALUs 140 .
  • the bus 110 may contain one or more conventional buses or single signal lines that permit communication among the components of the CPU 100 , and between the CPU 100 and external devices.
  • the memory management unit 120 may contain the high-speed registers or storage devices used by the CPU 100 for temporary storage of instructions, addresses, and/or data.
  • the memory management unit 120 may also contain circuitry to translate internal logical addresses into external physical addresses for broadcast to devices external to the CPU 100 .
  • the control unit 130 may consist of the circuitry necessary to manage the operation of the CPU 100 , and communicate with the memory management unit 120 and the ALU 140 in a well-known manner.
  • the control unit 130 may regulate and integrate the operations of the CPU 100 by selecting and retrieving instructions from a main memory in the proper sequences, and interpreting those instructions so as to activate the other functional elements of the CPU 100 at the appropriate times to perform their respective operations.
  • the control unit 130 may transfer input data to the ALU 140 for processing.
  • the ALU 140 may function as the center core of the CPU 100 at which all calculations and comparisons are performed.
  • the ALU 140 may execute arithmetic and logical operations, CRC operations, pattern-matching operations, and some shift and extract operations on data received via two input buses.
  • the ALU 140 may contain various components to perform the operations described above.
  • FIG. 2 illustrates an exemplary configuration of the ALU 140 of FIG. 1 .
  • the ALU 140 includes a multiplexer (MUX) 210 , a MUX 220 , a MUX 230 , a MUX 240 , an ALU register unit 250 , a ternary CAM unit 260 , and an operations unit 270 .
  • MUX multiplexer
  • a single MUX 210 , MUX 220 , MUX 230 , MUX 240 , ALU register unit 250 , ternary CAM unit 260 , and operations unit 270 have been shown for simplicity. It will be appreciated that the techniques described herein are equally applicable to ALUs 140 having multiple components as described above.
  • the input signals and connections between functional blocks may be represented as buses, single signal lines, optical connections, or by any other information carrying architecture.
  • the ALU 140 may include control inputs to facilitate proper data selection, identify the operation to be performed, and supplement arithmetic operations.
  • the ALUse 1 A input may cause the MUX 210 to output a subset of the received signals.
  • the ALUlaneA input may cause the MUX 220 to output a subset of the received signals.
  • the ALUse 1 B input may cause the MUX 230 to output a subset of the received signals and the ALUlaneB input may cause the MUX 240 to output a subset of the received signals.
  • the ALUse 1 A and ALUse 1 B inputs may, for example, each consist of 3 bits of information.
  • the ALUlaneA input and ALUlaneB input may provide the 32-bit word for INPUT A and INPUT B to use as the A or B operand, respectively.
  • the ALUlaneA and ALUlaneB inputs may, for example, each consist of 2 bits of information.
  • the ALUfunc input may provide the operation to be performed on the operand(s), and may consist of 5 bits of data input information.
  • the ALUcin input may provide information regarding whether a carry-in is present for arithmetic operations, and may be able to provide this information with 1 bit of information.
  • control inputs i.e., ALUse 1 A, ALUse 1 B, ALUlaneA, ALUlaneB, ALUfunc, and ALUcin
  • ALUse 1 A has been specified as a signal or bus consisting of a specific number of bits
  • ALUse 1 B has been specified as a signal or bus consisting of a specific number of bits
  • ALUfunc has been specified as a signal or bus consisting of a specific number of bits
  • the ALU 140 may include data output signals to provide resultants and information flags to other devices and/or systems.
  • the 32-bit ALUout bus may provide the resultant vector to external devices and/or systems.
  • the input ALUout may connect to MUX 210 and/or MUX 230 to permit successive operations.
  • the 32-bit ALUout output may be replicated 4 times to 128 bits for 128-bit functional inputs.
  • the ALUcarry flag may indicate a carry-out for arithmetic operations, or may indicate multiple matches for matching operations.
  • the ALUzero flag may indicate that the last resultant was all zeros for an arithmetic operation, or may indicate that no matches occurred during the last matching operation.
  • the ALUsign flag may provide the high order bit of the ALUout bus (i.e., ALUout ⁇ 31>).
  • the ALUout ⁇ 3 . . . 0> flag may provide the four low order bits of the ALUout bus (i.e., ALUout ⁇ 3,2,1,0>).
  • the MUX 210 , MUX 220 , MUX 230 , and MUX 240 are shown integrated into the ALU 140 . It will be appreciated that the techniques described herein are equally applicable to an ALU 140 connected to external multiplexers or any other multiplexer design implementation that allows for the selection of 32-bits out of the 8 (128-bit) input buses.
  • the MUX 210 may include an 8-input multiplexer to select the 128-bit operand source from various input sources for INPUT A, denoted Ax, Bx, Cx, Dx, ALUout, Ex, Fx, or Gx.
  • the MUX 220 may include a 4-to-1 multiplexer to select 32-bits out of the 128-bit input. The output of MUX 220 may become the input to the INPUT A bus of the ALU 140 .
  • the MUX 230 may include an 8-input multiplexer to select the 128-bit operand source from various input sources for INPUT B, denoted Ay, By, Cy, Dy, ALUout, Ey, Fy, or Gy.
  • the MUX 240 may include a 4-to-1 multiplexer to select 32-bits out of the 128-bit input. The output of MUX 240 may become the input to the INPUT B bus of the ALU 140 .
  • the ALU register unit 250 may include general-purpose, fast, temporary storage registers that hold operands, status information, and resultants for the ALU 140 .
  • FIG. 3 illustrates an exemplary ALU register unit 250 consistent with the present invention.
  • the ALU register unit 250 may include register A 310 , register B 320 , register C 330 , register D 340 , register E 350 , register F 360 , register G 370 , and register H 380 .
  • Each of the eight registers, register A 310 through register H 380 may consist of a general-purpose 32-bit register.
  • the ALU 140 may require the use of specific registers for various storage and transmission purposes, or may dynamically locate operands and resultants in register locations.
  • the ALU 140 may designate register A 310 as the storage location for data received from the INPUT A bus, and register B 320 as the storage location for data received from the INPUT B bus.
  • the register C 330 may be used, for example, to store data previously input on INPUT A. This data may be used in a subsequent cycle for pattern matching operations that span 32-bit boundaries.
  • the ALU 140 may designate register H 380 as the ALUout storage register in which the resultant operand is stored prior to transmission on the ALUout bus.
  • the ALU register unit 250 may contain more or fewer individual registers than are shown in FIG. 3 , and each register may be structured with more or less than 32-bits of storage.
  • the ternary CAM unit 260 may include any type of ternary content addressable memory that can store three states of information in each cell, such as a logic one state, a logic zero state, and a don't-care state for compare operations.
  • the ternary CAM unit 260 may include an array of cells arranged in rows and columns that can be instructed to compare a specific operand with each of the entries in the array. The entire array, or segments thereof, may be searched in parallel. When performing a search, a CAM entry is considered to match if all the cells in the entry indicate a match, and otherwise fails to match, whenever one or more cells in the entry fails to match the corresponding input bit.
  • Each cell may represent one-bit of information, and the ternary CAM unit 260 may mask the bit within any individual CAM cell such that a successful match is always produced.
  • the ternary CAM unit 260 may contain a priority encoder to help sort out which matching location has top priority if more than one match exists.
  • FIG. 4 illustrates an exemplary ternary CAM unit 260 consistent with the present invention.
  • the ternary CAM unit 260 may include a CAM array 400 and comparator 440 .
  • the CAM array 400 may include 32 entries, labeled 401 through 432 . Each entry 401 through 432 may consist of 64 cells, which together may represent 64 bits of information for each entry. In a 64-bit comparison operation, the higher 32 bits of each 64-bit entry in the CAM array 400 (i.e., high bits 451 ) may, for example, be compared to the 32-bit PrevA operand, which may be located in register C 330 ( FIG. 3 ).
  • the lower 32 bits of each 64-bit entry in the CAM array 400 may be compared to the current INPUT A operand, which may be located in register A 310 ( FIG. 3 ).
  • the comparator 440 may compare an operand with every entry in the CAM array 400 in one clock cycle.
  • the operand may consist of packet header information.
  • the ternary CAM unit 260 may be used to perform Martian address filtering, as described in “Requirements for IP Version 4 Routers,” Request for Comments 1812, June 1995.
  • the operations unit 270 may include the circuitry necessary for performing arithmetic and logical operations in a well-known manner.
  • the operations unit 270 may include, for example, an adder, a shifter, and logic operator circuits.
  • the arithmetic operation to be performed may be received through the ALUfunc input.
  • the logical operation to be performed may be received via the ALUfunc input.
  • FIG. 5 illustrates exemplary processing, consistent with the present invention, for performing a pattern matching operation, such as an address lookup operation.
  • Processing may begin with the control unit 130 receiving an instruction that indicates that a pattern matching operation is to be performed on one or more operands [act 510 ].
  • the control unit 130 may provide the command to the ALU 140 via the ALUfunc bus.
  • the ALU 140 may be instructed to perform one of the following operations: Match(PrevA, A) or MatchAddr(PrevA, A).
  • the Match(PrevA, A) instruction may cause the ALU 140 to compare the contents of the PrevA register (e.g., register C 330 from FIG. 3 ) and the contents of the INPUT A register (e.g., register A 310 from FIG. 3 ) with each of the entries in the ternary CAM unit 260 , and then output a 32-bit matching vector.
  • the MatchAddr(PrevA, A) instruction may cause the ALU 140 to perform the same matching function as described for the Match(PrevA, A) instruction, however, the output in this case may be the highest address location from the ternary CAM unit 260 (i.e., entry 401 through entry 432 in FIG. 4 .) at which the matching operation was successful. When multiple matches occur, one match from the multiple matches will be selected according to predetermined priority criteria.
  • the mask instruction designated by LoadCAMMask(PrevA, A), may be received by the ALU 140 on the ALUfunc bus. The mask instruction may cause a mask of the comparison result of any specific bit in the operand.
  • the ternary CAM unit 260 may mask any 1-bit cell within any 64-bit entry (i.e., entry 410 through entry 432 from FIG. 4 ).
  • the ternary CAM unit 260 may then receive the data to fill at least one of the 64-bit entries of the CAM array 400 [act 525 ].
  • the load instruction designated by LoadCAM[B](PrevA, A) may be received by the ALU 140 on the ALUfunc input.
  • the ALU 140 may then load the PrevA register with 32 bits of data from the INPUT A bus (e.g., register C 330 from FIG. 3 ), load the INPUT A register (e.g., register A 310 from FIG. 3 ) with the next 32 bits of data from the INPUT A bus, and load the INPUT B register (e.g., register B 320 from FIG.
  • the combined 64-bit data whose high bits are composed of the PrevA register and whose low bits are composed of the INPUT A register, may now be loaded into the CAM array 400 , at the address indexed by the contents of the INPUT B register.
  • the process of (1) acquiring the PrevA data, (2) acquiring the INPUT A data, (3) acquiring the INPUT B index value, and (4) storing the combined 64-bit data in the CAM array 400 at a location indexed by B may continue until all the necessary data have been received by the ALU 140 .
  • An alternate fast-load method may be used to load the ternary CAM unit 260 .
  • the ALU 140 may receive a CAMFastLoad(A, B) command via the ALUfunc bus that causes the ternary CAM unit 260 to sequentially load each entry (i.e., entry 410 through entry 432 from FIG. 4 ) from a succession of mask/value pairs received on the INPUT A and the INPUT B buses, respectively.
  • the ALU 140 may then receive a 128-bit operand [act 530 ].
  • the operand may be selected by the ALU 140 through the receipt of a command on the ALUse 1 A input.
  • the ALUse 1 A input may cause one of the eight input buses (i.e., Ax, Bx, Cx, Dx, ALUout, Ex, Fx, or Gx) to be chosen to pass through the MUX 210 ( FIG. 2 ).
  • the ALU 140 may select 32 bits out of the 128 bits to be output by the MUX 210 through the receipt of a command on the ALUlaneA input [act 535 ].
  • the 32-bit operand may then be provided to ALU register unit 250 on the INPUT A bus.
  • the selected 32-bit operand may then be loaded into a storage register [act 540 ].
  • the ALU register unit 250 may receive the 32-bit operand from the INPUT A bus and store it, in register A 310 , for example, for further processing.
  • the ALU 140 may then access the contents previously stored in the PrevA register in preparation for the matching operation to follow [act 545 ].
  • the 32 bits of INPUT A data, stored in register A 310 for example, and the 32 bits of PrevA data, stored in register C 330 for example, may now be ready to be compared to each of the 64-bit entries in the ternary CAM unit 260 .
  • the ternary CAM unit 260 may then perform the matching or comparison operation [act 550 ].
  • the ternary CAM unit 260 may compare each 64-bit register entry (i.e., entry 401 through entry 432 ) against the INPUT A word stored in register A 310 and the PrevA word stored in register C 330 (see FIG. 4 ).
  • the high 32 bits of each 64-bit entry of the CAM array 400 may be compared against the PrevA word, and the low 32 bits may be compared against the INPUT A word ( FIG. 4 ).
  • the comparison taking place in those cells of each entry whose comparison results were masked in act 520 may always result in a match.
  • the result of the matching operation may then be stored in the ALUout register [act 555 ].
  • the ALU 140 may designate the register H 380 as the location at which the ALUout resultant is always stored, or may store the resultant in any other general register location.
  • the resultant stored in the ALUout register may depend upon the type of matching operation received in act 505 .
  • the resultant may consist of the 32-bit matching vector. This matching operation is useful for looking for packet framing and bit/byte-stuff and unstuff patterns.
  • MatchAddr(PrevA, A) the resultant may consist of the highest entry address location (i.e., entry 401 through entry 432 from FIG. 4 ) in the ternary CAM unit 260 at which a match was found. This operation is useful for packet classification and packet bit or byte framing alignment.
  • the ALU 140 may then set the output flags based upon the results of the matching operation [act 560 ].
  • the ALUcarry output flag may be set if multiple matches were found in the ternary CAM unit 260 .
  • the ALUzero flag may be set if no match occurred during the matching operation. If used with the matching operation, the ALUsign flag may provide the contents of the high order bit (i.e., bit 31 ) of the resultant ALUout register, and the ALUout ⁇ 3 . . . 0> flag may provide the low 4 bits (i.e., bits 3 , 2 , 1 , and 0 ) of ALUout register.
  • the resultant stored in the ALUout register (e.g., register H 380 ) may be provided as an output of the ALU 140 via the ALUout bus [act 565 ].
  • the resulting 32-bit word may be replicated four times to 128 bits, if necessary.
  • FIG. 5 describes one implementation, consistent with the present invention, in which processing speed may be increased through the use of a CPU with a unique hardware design.
  • Implementations consistent with the present invention offer a unique approach to ALU design with the integration of a ternary CAM unit.
  • This unique design when implemented in a network device (e.g., a router), may improve such network operations as the section bytes/bits to insert or delete for “stuff/unstuff” operations, address lookup operations, and packet classification.
  • a unique CPU design incorporates a specialized ALU that contains a ternary CAM to increase processing performance.
  • the ternary CAM may contain multiple entries each consisting of multiple cells, and may compare an operand with all of its entries in one clock cycle.
  • the ternary CAM may have the ability to mask the comparison of any cell within any entry.

Abstract

An arithmetic logic unit (140) improves the processing of information. The arithmetic logic unit (140) includes a register unit (250), a ternary content addressable memory (260), and an operations unit (270).

Description

    RELATED APPLICATION
  • This application is a continuation of U.S. application Ser. No. 09/938,921, filed Aug. 24, 2001, which claims priority under 35 U.S.C. §119 based on a U.S. Provisional Application No. 60/233,583, filed Sep. 19, 2000, the disclosure of which are hereby incorporated by reference.
  • FIELD OF THE INVENTION
  • The present invention relates generally to central processing units and, more particularly, to systems and methods for processing data via a central processing unit containing an embedded ternary content addressable memory device.
  • BACKGROUND OF THE INVENTION
  • Data networks are becoming more critical to every aspect of the business world. No longer are all divisions of a company, such as marketing, R&D, production, and sales co-located within the same building or campus. In many cases, the personnel supporting these business units are not even located within the same country or continent, Virtual worldwide corporate networks typically consist of local area networks (LANs), which are often connected to the Internet to reach employees across the globe. As businesses increase their use of networks, the result will be a more heavy reliance on transmitting data across these networks. This need for greater bandwidth and faster processing power will ultimately drive the need for more specialized network components.
  • At the heart of this technology race is the central processing unit (CPU). The CPU, or the brains of most network devices, has evolved overtime to fit a greater number of transistors into ever smaller packages. The basic goal of every new CPU design is to perform more operations in less time. As a result, new CPU architecture designs are needed to support an increasing and massive flow of information across networks at all levels.
  • The network protocols that are becoming the standard for moving this massive amount of information require specific operations to be performed. The CPUs used in this infrastructure must contain specialized functions to permit the rapid classification, manipulation, routing, and processing of packet-based messages. Performing fast parallel search operations would be useful in performing lookups in routers and networking equipment, in performing network traffic address management, and for performing other functions in which pattern recognition is needed. In addition, on-chip error detection circuitry is needed to determine if data packets reached their destination without error, and to aid in the retransmission of those data packets that did not. Currently, on-chip CPU designs are not specialized to perform the network intensive functions necessary to achieve the next level in network processing.
  • Accordingly, there is a need for systems and methods that will address CPU architecture designs that embed the important network processing functions into the CPU, and thereby eliminate the need to go off-chip to perform these functions.
  • SUMMARY OF THE INVENTION
  • Systems and methods consistent with the present invention address this and other needs by providing a unique CPU architecture that permits faster processing of network data packets through the incorporation of a ternary (three operating-state) content addressable memory (CAM).
  • In accordance with the purpose of this invention as embodied and broadly described herein, a CPU is provided that includes an arithmetic logic unit (ALU) and a ternary CAM. The ternary CAM is configured to perform one or more matching operations.
  • In another implementation consistent with the present invention, a method for processing packets in a network device is provided. The method includes receiving a packet and processing the packet using a ternary content addressable memory resident within a processing unit of the network device.
  • In yet another implementation consistent with the present invention, an ALU is provided. The ALU includes a register unit, a ternary content addressable memory, and an operations unit.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an embodiment of the invention and, together with the description, explain the invention. In the drawings,
  • FIG. 1 illustrates an exemplary CPU in which systems and methods consistent with the present invention may be implemented;
  • FIG. 2 illustrates an exemplary configuration, consistent with the present invention, of the ALU of FIG. 1;
  • FIG. 3 illustrates an exemplary configuration, consistent with the present invention, of the ALU register unit of FIG. 2;
  • FIG. 4 illustrates an exemplary configuration, consistent with the present invention, of the ternary CAM unit of FIG. 2; and
  • FIG. 5 illustrates exemplary processing, consistent with the present invention, for performing pattern-matching operations.
  • DETAILED DESCRIPTION
  • The following detailed description of implementations consistent with the present invention refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. Also, the following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims and equivalents.
  • Implementations consistent with the present invention provide a process through which a data packet may be processed by a CPU specialized to perform network processing operations. The CPU consists of a bus, a memory unit, a control unit, and an enhanced arithmetic logic unit (ALU). The ALU contains a ternary CAM unit to permit improved processing performance.
  • Exemplary System Configuration
  • FIG. 1 illustrates an exemplary CPU 100 in which systems and methods, consistent with the present invention for processing network data packets may be implemented. The CPU 100 includes a bus 110, a memory management unit 120, a control unit 130, and an ALU 140. A single memory management unit 120, control unit 130, and ALU 140 have been shown for simplicity. It will be appreciated that the techniques described herein are equally applicable to CPUs 100 having multiple memory management units 120, control units 130, and/or ALUs 140. The bus 110 may contain one or more conventional buses or single signal lines that permit communication among the components of the CPU 100, and between the CPU 100 and external devices.
  • The memory management unit 120 may contain the high-speed registers or storage devices used by the CPU 100 for temporary storage of instructions, addresses, and/or data. The memory management unit 120 may also contain circuitry to translate internal logical addresses into external physical addresses for broadcast to devices external to the CPU 100. The control unit 130 may consist of the circuitry necessary to manage the operation of the CPU 100, and communicate with the memory management unit 120 and the ALU 140 in a well-known manner. The control unit 130 may regulate and integrate the operations of the CPU 100 by selecting and retrieving instructions from a main memory in the proper sequences, and interpreting those instructions so as to activate the other functional elements of the CPU 100 at the appropriate times to perform their respective operations. The control unit 130 may transfer input data to the ALU 140 for processing.
  • The ALU 140 may function as the center core of the CPU 100 at which all calculations and comparisons are performed. The ALU 140 may execute arithmetic and logical operations, CRC operations, pattern-matching operations, and some shift and extract operations on data received via two input buses. The ALU 140 may contain various components to perform the operations described above.
  • Exemplary Arithmetic Logic Unit
  • FIG. 2 illustrates an exemplary configuration of the ALU 140 of FIG. 1. In FIG. 2, the ALU 140 includes a multiplexer (MUX) 210, a MUX 220, a MUX 230, a MUX 240, an ALU register unit 250, a ternary CAM unit 260, and an operations unit 270. A single MUX 210, MUX 220, MUX 230, MUX 240, ALU register unit 250, ternary CAM unit 260, and operations unit 270 have been shown for simplicity. It will be appreciated that the techniques described herein are equally applicable to ALUs 140 having multiple components as described above. The input signals and connections between functional blocks may be represented as buses, single signal lines, optical connections, or by any other information carrying architecture.
  • The ALU 140 may include control inputs to facilitate proper data selection, identify the operation to be performed, and supplement arithmetic operations. The ALUse1A input may cause the MUX 210 to output a subset of the received signals. The ALUlaneA input may cause the MUX 220 to output a subset of the received signals. Similarly, the ALUse1B input may cause the MUX 230 to output a subset of the received signals and the ALUlaneB input may cause the MUX 240 to output a subset of the received signals. The ALUse1A and ALUse1B inputs may, for example, each consist of 3 bits of information. The ALUlaneA input and ALUlaneB input may provide the 32-bit word for INPUT A and INPUT B to use as the A or B operand, respectively. The ALUlaneA and ALUlaneB inputs may, for example, each consist of 2 bits of information. The ALUfunc input may provide the operation to be performed on the operand(s), and may consist of 5 bits of data input information. The ALUcin input may provide information regarding whether a carry-in is present for arithmetic operations, and may be able to provide this information with 1 bit of information. While each of the control inputs (i.e., ALUse1A, ALUse1B, ALUlaneA, ALUlaneB, ALUfunc, and ALUcin) has been specified as a signal or bus consisting of a specific number of bits, the present invention does not limit each control input to any specific size.
  • The ALU 140 may include data output signals to provide resultants and information flags to other devices and/or systems. The 32-bit ALUout bus may provide the resultant vector to external devices and/or systems. The input ALUout may connect to MUX 210 and/or MUX 230 to permit successive operations. The 32-bit ALUout output may be replicated 4 times to 128 bits for 128-bit functional inputs. The ALUcarry flag may indicate a carry-out for arithmetic operations, or may indicate multiple matches for matching operations. The ALUzero flag may indicate that the last resultant was all zeros for an arithmetic operation, or may indicate that no matches occurred during the last matching operation. The ALUsign flag may provide the high order bit of the ALUout bus (i.e., ALUout<31>). The ALUout<3 . . . 0> flag may provide the four low order bits of the ALUout bus (i.e., ALUout<3,2,1,0>).
  • In FIG. 2, the MUX 210, MUX 220, MUX 230, and MUX 240 are shown integrated into the ALU 140. It will be appreciated that the techniques described herein are equally applicable to an ALU 140 connected to external multiplexers or any other multiplexer design implementation that allows for the selection of 32-bits out of the 8 (128-bit) input buses. The MUX 210 may include an 8-input multiplexer to select the 128-bit operand source from various input sources for INPUT A, denoted Ax, Bx, Cx, Dx, ALUout, Ex, Fx, or Gx. The MUX 220 may include a 4-to-1 multiplexer to select 32-bits out of the 128-bit input. The output of MUX 220 may become the input to the INPUT A bus of the ALU 140.
  • The MUX 230 may include an 8-input multiplexer to select the 128-bit operand source from various input sources for INPUT B, denoted Ay, By, Cy, Dy, ALUout, Ey, Fy, or Gy. The MUX 240 may include a 4-to-1 multiplexer to select 32-bits out of the 128-bit input. The output of MUX 240 may become the input to the INPUT B bus of the ALU 140.
  • The ALU register unit 250 may include general-purpose, fast, temporary storage registers that hold operands, status information, and resultants for the ALU 140. FIG. 3 illustrates an exemplary ALU register unit 250 consistent with the present invention. The ALU register unit 250 may include register A 310, register B 320, register C 330, register D 340, register E 350, register F 360, register G 370, and register H 380. Each of the eight registers, register A 310 through register H 380, may consist of a general-purpose 32-bit register.
  • The ALU 140 may require the use of specific registers for various storage and transmission purposes, or may dynamically locate operands and resultants in register locations. For example, the ALU 140 may designate register A 310 as the storage location for data received from the INPUT A bus, and register B 320 as the storage location for data received from the INPUT B bus. The register C 330 may be used, for example, to store data previously input on INPUT A. This data may be used in a subsequent cycle for pattern matching operations that span 32-bit boundaries. Furthermore, the ALU 140 may designate register H 380 as the ALUout storage register in which the resultant operand is stored prior to transmission on the ALUout bus. It will be appreciated that the ALU register unit 250 may contain more or fewer individual registers than are shown in FIG. 3, and each register may be structured with more or less than 32-bits of storage.
  • The ternary CAM unit 260 may include any type of ternary content addressable memory that can store three states of information in each cell, such as a logic one state, a logic zero state, and a don't-care state for compare operations. The ternary CAM unit 260 may include an array of cells arranged in rows and columns that can be instructed to compare a specific operand with each of the entries in the array. The entire array, or segments thereof, may be searched in parallel. When performing a search, a CAM entry is considered to match if all the cells in the entry indicate a match, and otherwise fails to match, whenever one or more cells in the entry fails to match the corresponding input bit.
  • Each cell may represent one-bit of information, and the ternary CAM unit 260 may mask the bit within any individual CAM cell such that a successful match is always produced. The ternary CAM unit 260 may contain a priority encoder to help sort out which matching location has top priority if more than one match exists.
  • FIG. 4 illustrates an exemplary ternary CAM unit 260 consistent with the present invention. The ternary CAM unit 260 may include a CAM array 400 and comparator 440. The CAM array 400 may include 32 entries, labeled 401 through 432. Each entry 401 through 432 may consist of 64 cells, which together may represent 64 bits of information for each entry. In a 64-bit comparison operation, the higher 32 bits of each 64-bit entry in the CAM array 400 (i.e., high bits 451) may, for example, be compared to the 32-bit PrevA operand, which may be located in register C 330 (FIG. 3). The lower 32 bits of each 64-bit entry in the CAM array 400 (i.e., low bits 450) may be compared to the current INPUT A operand, which may be located in register A 310 (FIG. 3). The comparator 440 may compare an operand with every entry in the CAM array 400 in one clock cycle.
  • In a packet processing operation, the operand may consist of packet header information. For example, the ternary CAM unit 260 may be used to perform Martian address filtering, as described in “Requirements for IP Version 4 Routers,” Request for Comments 1812, June 1995.
  • Returning to FIG. 2, the operations unit 270 may include the circuitry necessary for performing arithmetic and logical operations in a well-known manner. The operations unit 270 may include, for example, an adder, a shifter, and logic operator circuits. The arithmetic operation to be performed may be received through the ALUfunc input. The logical operation to be performed may be received via the ALUfunc input.
  • Exemplary Process for Performing Matching Operations
  • FIG. 5 illustrates exemplary processing, consistent with the present invention, for performing a pattern matching operation, such as an address lookup operation. Processing may begin with the control unit 130 receiving an instruction that indicates that a pattern matching operation is to be performed on one or more operands [act 510]. The control unit 130 may provide the command to the ALU 140 via the ALUfunc bus.
  • The ALU 140 may be instructed to perform one of the following operations: Match(PrevA, A) or MatchAddr(PrevA, A). The Match(PrevA, A) instruction may cause the ALU 140 to compare the contents of the PrevA register (e.g., register C 330 from FIG. 3) and the contents of the INPUT A register (e.g., register A 310 from FIG. 3) with each of the entries in the ternary CAM unit 260, and then output a 32-bit matching vector. The MatchAddr(PrevA, A) instruction may cause the ALU 140 to perform the same matching function as described for the Match(PrevA, A) instruction, however, the output in this case may be the highest address location from the ternary CAM unit 260 (i.e., entry 401 through entry 432 in FIG. 4.) at which the matching operation was successful. When multiple matches occur, one match from the multiple matches will be selected according to predetermined priority criteria.
  • A determination is made as to whether the ternary CAM unit 260 needs to be loaded [act 515]. If the ternary CAM unit 260 is already loaded with data for comparison, then the processing may continue on to act 530. If the ternary CAM unit 260 needs to be loaded, then the ternary CAM unit 260 may receive care/don't care mask instructions [act 520]. The mask instruction, designated by LoadCAMMask(PrevA, A), may be received by the ALU 140 on the ALUfunc bus. The mask instruction may cause a mask of the comparison result of any specific bit in the operand. The ternary CAM unit 260 may mask any 1-bit cell within any 64-bit entry (i.e., entry 410 through entry 432 from FIG. 4).
  • Following the receipt of the masking instructions, the ternary CAM unit 260 may then receive the data to fill at least one of the 64-bit entries of the CAM array 400 [act 525]. The load instruction, designated by LoadCAM[B](PrevA, A), may be received by the ALU 140 on the ALUfunc input. The ALU 140 may then load the PrevA register with 32 bits of data from the INPUT A bus (e.g., register C 330 from FIG. 3), load the INPUT A register (e.g., register A 310 from FIG. 3) with the next 32 bits of data from the INPUT A bus, and load the INPUT B register (e.g., register B 320 from FIG. 3) with an index value from the INPUT B bus. The combined 64-bit data, whose high bits are composed of the PrevA register and whose low bits are composed of the INPUT A register, may now be loaded into the CAM array 400, at the address indexed by the contents of the INPUT B register. The process of (1) acquiring the PrevA data, (2) acquiring the INPUT A data, (3) acquiring the INPUT B index value, and (4) storing the combined 64-bit data in the CAM array 400 at a location indexed by B may continue until all the necessary data have been received by the ALU 140.
  • An alternate fast-load method may be used to load the ternary CAM unit 260. The ALU 140 may receive a CAMFastLoad(A, B) command via the ALUfunc bus that causes the ternary CAM unit 260 to sequentially load each entry (i.e., entry 410 through entry 432 from FIG. 4) from a succession of mask/value pairs received on the INPUT A and the INPUT B buses, respectively.
  • The ALU 140 may then receive a 128-bit operand [act 530]. The operand may be selected by the ALU 140 through the receipt of a command on the ALUse1A input. The ALUse1A input may cause one of the eight input buses (i.e., Ax, Bx, Cx, Dx, ALUout, Ex, Fx, or Gx) to be chosen to pass through the MUX 210 (FIG. 2). The ALU 140 may select 32 bits out of the 128 bits to be output by the MUX 210 through the receipt of a command on the ALUlaneA input [act 535]. The 32-bit operand may then be provided to ALU register unit 250 on the INPUT A bus.
  • The selected 32-bit operand may then be loaded into a storage register [act 540]. The ALU register unit 250 may receive the 32-bit operand from the INPUT A bus and store it, in register A 310, for example, for further processing. The ALU 140 may then access the contents previously stored in the PrevA register in preparation for the matching operation to follow [act 545]. The 32 bits of INPUT A data, stored in register A 310 for example, and the 32 bits of PrevA data, stored in register C 330 for example, may now be ready to be compared to each of the 64-bit entries in the ternary CAM unit 260.
  • The ternary CAM unit 260 may then perform the matching or comparison operation [act 550]. The ternary CAM unit 260 may compare each 64-bit register entry (i.e., entry 401 through entry 432) against the INPUT A word stored in register A 310 and the PrevA word stored in register C 330 (see FIG. 4). The high 32 bits of each 64-bit entry of the CAM array 400 may be compared against the PrevA word, and the low 32 bits may be compared against the INPUT A word (FIG. 4). The comparison taking place in those cells of each entry whose comparison results were masked in act 520, may always result in a match.
  • The result of the matching operation may then be stored in the ALUout register [act 555]. The ALU 140 may designate the register H 380 as the location at which the ALUout resultant is always stored, or may store the resultant in any other general register location. The resultant stored in the ALUout register may depend upon the type of matching operation received in act 505. For the basic matching operation designated by Match(PrevA, A), the resultant may consist of the 32-bit matching vector. This matching operation is useful for looking for packet framing and bit/byte-stuff and unstuff patterns. For the basic matching operation designated by MatchAddr(PrevA, A), the resultant may consist of the highest entry address location (i.e., entry 401 through entry 432 from FIG. 4) in the ternary CAM unit 260 at which a match was found. This operation is useful for packet classification and packet bit or byte framing alignment.
  • The ALU 140 may then set the output flags based upon the results of the matching operation [act 560]. The ALUcarry output flag may be set if multiple matches were found in the ternary CAM unit 260. The ALUzero flag may be set if no match occurred during the matching operation. If used with the matching operation, the ALUsign flag may provide the contents of the high order bit (i.e., bit 31) of the resultant ALUout register, and the ALUout<3 . . . 0> flag may provide the low 4 bits (i.e., bits 3, 2, 1, and 0) of ALUout register.
  • The resultant stored in the ALUout register (e.g., register H 380) may be provided as an output of the ALU 140 via the ALUout bus [act 565]. The resulting 32-bit word may be replicated four times to 128 bits, if necessary.
  • The aforementioned acts in FIG. 5 describes one implementation, consistent with the present invention, in which processing speed may be increased through the use of a CPU with a unique hardware design. Implementations consistent with the present invention offer a unique approach to ALU design with the integration of a ternary CAM unit. This unique design, when implemented in a network device (e.g., a router), may improve such network operations as the section bytes/bits to insert or delete for “stuff/unstuff” operations, address lookup operations, and packet classification.
  • CONCLUSION
  • Systems and methods, consistent with the present invention, provide mechanisms through which faster processing of data packets is made possible through the use of a CPU specialized for this function. A unique CPU design incorporates a specialized ALU that contains a ternary CAM to increase processing performance. The ternary CAM may contain multiple entries each consisting of multiple cells, and may compare an operand with all of its entries in one clock cycle. The ternary CAM may have the ability to mask the comparison of any cell within any entry.
  • The foregoing description of exemplary embodiments of the present invention provides illustration and description, but is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from the practice of the invention. For example, while the above-described CPU contains a single ALU and associated ternary CAM unit, it will be appreciated that the present invention is equally applicable to a CPU containing multiple ALUs and/or ternary CAM units. In such an implementation, the CPU may be capable of performing multiple operations in parallel to further increase performance.
  • While a series of acts has been described with regard to FIG. 5, the order of the acts may be varied in other implementations consistent with the present invention. No element, act, or instruction used in the description of the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Where only one item is intended, the term “one” or similar language is used.
  • The scope of the invention is defined by the claims and their equivalents.

Claims (21)

1. In a network device, a central processing unit (CPU) comprising:
an arithmetic logic unit; and
a ternary content addressable memory operatively coupled to the arithmetic logic unit and configured to perform one or more matching operations.
2. The CPU of claim 1 wherein the one or more matching operations includes a network packet processing operation.
3. The CPU of claim 2 wherein the packet processing operation includes an address lookup operation.
4. The CPU of claim 3 wherein the address lookup operation includes an Internet Protocol (IP) address lookup operation.
5. The CPU of claim 1 wherein the one or more matching operations includes a packet stuff/unstuff operation.
6. The CPU of claim 1 wherein the one or more matching operations includes a packet classification operation.
7. The CPU of claim 1 wherein the ternary content addressable memory is located within the arithmetic logic unit.
8. The CPU of claim 1 further comprising:
a first register configured to store a first 32-bit operand; and
a second register configured to store a second 32-bit operand.
9. The CPU of claim 8 wherein the ternary content addressable memory performs the one or more matching operations based on at least one of the first and second 32-bit operands.
10. The CPU of claim 8 wherein the ternary content addressable memory includes a memory array including a group of 64-bit entries, and
wherein, when performing the one or more matching operations, the ternary content addressable memory compares higher order bits of each entry of the memory array to the first 32-bit operand and compares lower order bits of each entry of the memory array to the second 32-bit operand.
11. The CPU of claim 1 wherein the ternary content addressable memory includes a memory array that includes a group of 64-bit entries.
12. The CPU of claim 11 wherein the memory array comprises 32 entries.
13. The CPU of claim 1 wherein, when performing the one or more matching operations, the ternary content addressable memory is configured to:
compare an operand to a group of entries.
14. The CPU of claim 13 wherein the ternary content addressable memory is further configured to:
set a first flag when the operand fails to match an entry in the group of entries, and
set a second flag when the operand matches multiple entries of the group of entries.
15. The CPU of claim 13 wherein, prior to comparing, the ternary content addressable memory is configured to:
sequentially load the group of entries from a succession of mask/value pairs transferred to the ternary content addressable memory.
16. A method for processing packets in a network device, comprising:
receiving a packet; and
processing the packet using a ternary content addressable memory resident within a processing unit of the network device.
17. The method of claim 16 wherein the processing unit includes an arithmetic logic unit, and
wherein the ternary content addressable memory is located within the arithmetic logic unit.
18. The method of claim 16 wherein the processing includes performing a matching operation using information in a header of the packet.
19. The method of claim 18 wherein the processing includes a packet classification operation.
20. A system for forwarding packets in a network device, comprising:
means for receiving at least one packet; and
means for processing the packet using a ternary content addressable memory resident within a central processing unit of the network device.
21. An arithmetic logic unit comprising:
a register unit;
an operations unit; and
a ternary content addressable memory coupled to the register unit and operations unit.
US12/431,178 2000-09-19 2009-04-28 Ternary content addressable memory embedded in a central processing unit Abandoned US20090207838A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/431,178 US20090207838A1 (en) 2000-09-19 2009-04-28 Ternary content addressable memory embedded in a central processing unit
US13/071,290 US20110173386A1 (en) 2000-09-19 2011-03-24 Ternary content addressable memory embedded in a central processing unit

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US23358300P 2000-09-19 2000-09-19
US09/938,921 US7543077B1 (en) 2000-09-19 2001-08-24 Ternary content addressable memory embedded in a central processing unit
US12/431,178 US20090207838A1 (en) 2000-09-19 2009-04-28 Ternary content addressable memory embedded in a central processing unit

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/938,921 Continuation US7543077B1 (en) 2000-09-19 2001-08-24 Ternary content addressable memory embedded in a central processing unit

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/071,290 Continuation US20110173386A1 (en) 2000-09-19 2011-03-24 Ternary content addressable memory embedded in a central processing unit

Publications (1)

Publication Number Publication Date
US20090207838A1 true US20090207838A1 (en) 2009-08-20

Family

ID=40672519

Family Applications (3)

Application Number Title Priority Date Filing Date
US09/938,921 Active 2026-06-01 US7543077B1 (en) 2000-09-19 2001-08-24 Ternary content addressable memory embedded in a central processing unit
US12/431,178 Abandoned US20090207838A1 (en) 2000-09-19 2009-04-28 Ternary content addressable memory embedded in a central processing unit
US13/071,290 Abandoned US20110173386A1 (en) 2000-09-19 2011-03-24 Ternary content addressable memory embedded in a central processing unit

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/938,921 Active 2026-06-01 US7543077B1 (en) 2000-09-19 2001-08-24 Ternary content addressable memory embedded in a central processing unit

Family Applications After (1)

Application Number Title Priority Date Filing Date
US13/071,290 Abandoned US20110173386A1 (en) 2000-09-19 2011-03-24 Ternary content addressable memory embedded in a central processing unit

Country Status (1)

Country Link
US (3) US7543077B1 (en)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100135313A1 (en) * 2002-05-06 2010-06-03 Foundry Networks, Inc. Network routing system for enhanced efficiency and monitoring capability
US20110069711A1 (en) * 2009-09-21 2011-03-24 Brocade Communications Systems, Inc. PROVISIONING SINGLE OR MULTISTAGE NETWORKS USING ETHERNET SERVICE INSTANCES (ESIs)
US8671219B2 (en) 2002-05-06 2014-03-11 Foundry Networks, Llc Method and apparatus for efficiently processing data packets in a computer network
US8718051B2 (en) 2003-05-15 2014-05-06 Foundry Networks, Llc System and method for high speed packet transmission
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US8964754B2 (en) 2000-11-17 2015-02-24 Foundry Networks, Llc Backplane interface adapter with error control and redundant fabric
US8989202B2 (en) 2002-05-06 2015-03-24 Foundry Networks, Llc Pipeline method and system for switching packets
US9030943B2 (en) 2006-11-22 2015-05-12 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US9112780B2 (en) 2007-01-11 2015-08-18 Foundry Networks, Llc Techniques for processing incoming failure detection protocol packets
US9338100B2 (en) 2004-03-26 2016-05-10 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US9378005B2 (en) 2005-12-28 2016-06-28 Foundry Networks, Llc Hitless software upgrades
US9672239B1 (en) * 2012-10-16 2017-06-06 Marvell Israel (M.I.S.L.) Ltd. Efficient content addressable memory (CAM) architecture
US20180165381A1 (en) * 2016-12-12 2018-06-14 Intel Corporation Accelerator for Gather-Update-Scatter Operations

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140281208A1 (en) * 2013-03-13 2014-09-18 Silicon Graphics International Corp. Associative Look-up Instruction for a Processor Instruction Set Architecture
US9418397B2 (en) * 2013-10-25 2016-08-16 Harman International Industries, Incorporated Start-up processing task distribution among processing units
US9792988B2 (en) 2014-08-12 2017-10-17 Ciena Corporation Parallel turbine ternary content addressable memory for high-speed applications
US9940191B2 (en) 2015-03-28 2018-04-10 International Business Machines Corporation Concurrent error detection in a ternary content-addressable memory (TCAM) device
US9606861B2 (en) 2015-03-28 2017-03-28 International Business Machines Corporation Armonk Concurrent error detection in a ternary content-addressable memory (TCAM) device
WO2020172988A1 (en) * 2019-02-28 2020-09-03 Huawei Technologies Co., Ltd. Shader alu outlet control

Citations (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20514A (en) * 1858-06-08 Steam-power meter
US20554A (en) * 1858-06-15 Watohcase
US4467444A (en) * 1980-08-01 1984-08-21 Advanced Micro Devices, Inc. Processor unit for microcomputer systems
US5519649A (en) * 1993-06-04 1996-05-21 Nippon Steel Corporation Micro-processor having rapid condition comparison function
US5537532A (en) * 1993-10-07 1996-07-16 British Telecommunications Public Limited Company Restoration in communications networks
US5638315A (en) * 1995-09-13 1997-06-10 International Business Machines Corporation Content addressable memory for a data processing system
US5809078A (en) * 1997-01-14 1998-09-15 Digital Vision Laboratories Corporation Relay node system and relay control method of the same system
US6000016A (en) * 1997-05-02 1999-12-07 Intel Corporation Multiported bypass cache in a bypass network
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6141743A (en) * 1998-09-17 2000-10-31 Advanced Micro Devices, Inc. Token-based storage for general purpose processing
US6147890A (en) * 1997-12-30 2000-11-14 Kawasaki Steel Corporation FPGA with embedded content-addressable memory
US6202198B1 (en) * 1998-04-21 2001-03-13 Neoprobe Corporation Programmable integrated analog input/output circuit with distributed matching memory array
US6304903B1 (en) * 1997-08-01 2001-10-16 Agilent Technologies, Inc. State machine for collecting information on use of a packet network
US6324087B1 (en) * 2000-06-08 2001-11-27 Netlogic Microsystems, Inc. Method and apparatus for partitioning a content addressable memory device
US20020002668A1 (en) * 1996-01-19 2002-01-03 Hiroki Miura Program execution method for specific case processing and apparatus using the same
US6510509B1 (en) * 1999-03-29 2003-01-21 Pmc-Sierra Us, Inc. Method and apparatus for high-speed network rule processing
US6560740B1 (en) * 1999-08-03 2003-05-06 Advanced Micro Devices, Inc. Apparatus and method for programmable built-in self-test and self-repair of embedded memory
US6647428B1 (en) * 2000-05-05 2003-11-11 Luminous Networks, Inc. Architecture for transport of multiple services in connectionless packet-based communication networks
US6651096B1 (en) * 1999-04-20 2003-11-18 Cisco Technology, Inc. Method and apparatus for organizing, storing and evaluating access control lists
US6658458B1 (en) * 2000-06-22 2003-12-02 Cisco Technology, Inc. Cascading associative memory arrangement
US6665297B1 (en) * 1999-12-09 2003-12-16 Mayan Networks Corporation Network routing table
US6725351B1 (en) * 1999-08-09 2004-04-20 Murata Manufacturing Co., Ltd. Data communication device having a buffer in a nonvolatile storage device
US6757779B1 (en) * 1999-09-23 2004-06-29 Netlogic Microsystems, Inc. Content addressable memory with selectable mask write mode
US6792502B1 (en) * 2000-10-12 2004-09-14 Freescale Semiconductor, Inc. Microprocessor having a content addressable memory (CAM) device as a functional unit therein and method of operation
US20040193741A1 (en) * 1999-09-23 2004-09-30 Pereira Jose P. Priority circuit for content addressable memory
US20050152379A1 (en) * 2003-11-19 2005-07-14 Honeywell International Inc. Self-checking pair on a braided ring network
US7143231B1 (en) * 1999-09-23 2006-11-28 Netlogic Microsystems, Inc. Method and apparatus for performing packet classification for policy-based packet routing

Patent Citations (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20554A (en) * 1858-06-15 Watohcase
US20514A (en) * 1858-06-08 Steam-power meter
US4467444A (en) * 1980-08-01 1984-08-21 Advanced Micro Devices, Inc. Processor unit for microcomputer systems
US5519649A (en) * 1993-06-04 1996-05-21 Nippon Steel Corporation Micro-processor having rapid condition comparison function
US5537532A (en) * 1993-10-07 1996-07-16 British Telecommunications Public Limited Company Restoration in communications networks
US5638315A (en) * 1995-09-13 1997-06-10 International Business Machines Corporation Content addressable memory for a data processing system
US20020002668A1 (en) * 1996-01-19 2002-01-03 Hiroki Miura Program execution method for specific case processing and apparatus using the same
US5809078A (en) * 1997-01-14 1998-09-15 Digital Vision Laboratories Corporation Relay node system and relay control method of the same system
US6000016A (en) * 1997-05-02 1999-12-07 Intel Corporation Multiported bypass cache in a bypass network
US6304903B1 (en) * 1997-08-01 2001-10-16 Agilent Technologies, Inc. State machine for collecting information on use of a packet network
US6327639B1 (en) * 1997-12-11 2001-12-04 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6147890A (en) * 1997-12-30 2000-11-14 Kawasaki Steel Corporation FPGA with embedded content-addressable memory
US6202198B1 (en) * 1998-04-21 2001-03-13 Neoprobe Corporation Programmable integrated analog input/output circuit with distributed matching memory array
US6141743A (en) * 1998-09-17 2000-10-31 Advanced Micro Devices, Inc. Token-based storage for general purpose processing
US6510509B1 (en) * 1999-03-29 2003-01-21 Pmc-Sierra Us, Inc. Method and apparatus for high-speed network rule processing
US6651096B1 (en) * 1999-04-20 2003-11-18 Cisco Technology, Inc. Method and apparatus for organizing, storing and evaluating access control lists
US6560740B1 (en) * 1999-08-03 2003-05-06 Advanced Micro Devices, Inc. Apparatus and method for programmable built-in self-test and self-repair of embedded memory
US6725351B1 (en) * 1999-08-09 2004-04-20 Murata Manufacturing Co., Ltd. Data communication device having a buffer in a nonvolatile storage device
US6757779B1 (en) * 1999-09-23 2004-06-29 Netlogic Microsystems, Inc. Content addressable memory with selectable mask write mode
US20040193741A1 (en) * 1999-09-23 2004-09-30 Pereira Jose P. Priority circuit for content addressable memory
US7143231B1 (en) * 1999-09-23 2006-11-28 Netlogic Microsystems, Inc. Method and apparatus for performing packet classification for policy-based packet routing
US6665297B1 (en) * 1999-12-09 2003-12-16 Mayan Networks Corporation Network routing table
US6647428B1 (en) * 2000-05-05 2003-11-11 Luminous Networks, Inc. Architecture for transport of multiple services in connectionless packet-based communication networks
US6324087B1 (en) * 2000-06-08 2001-11-27 Netlogic Microsystems, Inc. Method and apparatus for partitioning a content addressable memory device
US6658458B1 (en) * 2000-06-22 2003-12-02 Cisco Technology, Inc. Cascading associative memory arrangement
US6792502B1 (en) * 2000-10-12 2004-09-14 Freescale Semiconductor, Inc. Microprocessor having a content addressable memory (CAM) device as a functional unit therein and method of operation
US20050152379A1 (en) * 2003-11-19 2005-07-14 Honeywell International Inc. Self-checking pair on a braided ring network

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8964754B2 (en) 2000-11-17 2015-02-24 Foundry Networks, Llc Backplane interface adapter with error control and redundant fabric
US9030937B2 (en) 2000-11-17 2015-05-12 Foundry Networks, Llc Backplane interface adapter with error control and redundant fabric
US8989202B2 (en) 2002-05-06 2015-03-24 Foundry Networks, Llc Pipeline method and system for switching packets
US8671219B2 (en) 2002-05-06 2014-03-11 Foundry Networks, Llc Method and apparatus for efficiently processing data packets in a computer network
US20100135313A1 (en) * 2002-05-06 2010-06-03 Foundry Networks, Inc. Network routing system for enhanced efficiency and monitoring capability
US8718051B2 (en) 2003-05-15 2014-05-06 Foundry Networks, Llc System and method for high speed packet transmission
US9461940B2 (en) 2003-05-15 2016-10-04 Foundry Networks, Llc System and method for high speed packet transmission
US8811390B2 (en) 2003-05-15 2014-08-19 Foundry Networks, Llc System and method for high speed packet transmission
US9338100B2 (en) 2004-03-26 2016-05-10 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US9378005B2 (en) 2005-12-28 2016-06-28 Foundry Networks, Llc Hitless software upgrades
US9030943B2 (en) 2006-11-22 2015-05-12 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US9112780B2 (en) 2007-01-11 2015-08-18 Foundry Networks, Llc Techniques for processing incoming failure detection protocol packets
US9166818B2 (en) 2009-09-21 2015-10-20 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US20110069711A1 (en) * 2009-09-21 2011-03-24 Brocade Communications Systems, Inc. PROVISIONING SINGLE OR MULTISTAGE NETWORKS USING ETHERNET SERVICE INSTANCES (ESIs)
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US9672239B1 (en) * 2012-10-16 2017-06-06 Marvell Israel (M.I.S.L.) Ltd. Efficient content addressable memory (CAM) architecture
US20180165381A1 (en) * 2016-12-12 2018-06-14 Intel Corporation Accelerator for Gather-Update-Scatter Operations
US10289752B2 (en) * 2016-12-12 2019-05-14 Intel Corporation Accelerator for gather-update-scatter operations including a content-addressable memory (CAM) and CAM controller

Also Published As

Publication number Publication date
US7543077B1 (en) 2009-06-02
US20110173386A1 (en) 2011-07-14

Similar Documents

Publication Publication Date Title
US20090207838A1 (en) Ternary content addressable memory embedded in a central processing unit
US11677664B2 (en) Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US7237058B2 (en) Input data selection for content addressable memory
US6631466B1 (en) Parallel string pattern searches in respective ones of array of nanocomputers
US7313667B1 (en) Methods and apparatus for mapping fields of entries into new values and combining these mapped values into mapped entries for use in lookup operations such as for packet processing
US9563399B2 (en) Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features
US7933282B1 (en) Packet classification device for storing groups of rules
US7701941B2 (en) Network switch with mutually coupled look-up engine and network processor
US8015392B2 (en) Updating instructions to free core in multi-core processor with core sequence table indicating linking of thread sequences for processing queued packets
US7599364B2 (en) Configurable network connection address forming hardware
WO2021135491A1 (en) Flow table matching method and apparatus
US7697526B2 (en) Packet filtering based on port bit map
US7480300B2 (en) Content addressable memory organized to share entries between different entities such as ports of a network unit
US10623316B2 (en) Scaling of switching tables with high bandwidth
AU2003265288B2 (en) Associative memory with enhanced capabilities
US20050010690A1 (en) System and method for modifying data transferred from a source to a destination
US7477641B2 (en) Providing access to data shared by packet processing threads
CN112667526B (en) Method and circuit for realizing access control list circuit
US8122189B1 (en) Methods for logically combining range representation values in a content addressable memory
US9515929B2 (en) Traffic data pre-filtering
US7181568B2 (en) Content addressable memory to identify subtag matches
US20070106839A1 (en) Multiple mode content-addressable memory
US20090144452A1 (en) Implementing conditional packet alterations based on transmit port
CN117240947B (en) Message processing method, device and medium
JP2000151627A (en) Packet filter circuit

Legal Events

Date Code Title Description
AS Assignment

Owner name: RPX CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:STRAGENT, LLC;REEL/FRAME:030511/0496

Effective date: 20130522

AS Assignment

Owner name: BBNT SOLUTIONS LLC, MASSACHUSETTS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MILLIKEN, WALTER CLARK;PARTRIDGE, CRAIG;JACKSON, ALDEN W.;SIGNING DATES FROM 20010816 TO 20010820;REEL/FRAME:030629/0088

Owner name: BBN TECHNOLOGIES CORP., MASSACHUSETTS

Free format text: MERGER;ASSIGNOR:BBNT SOLUTIONS LLC;REEL/FRAME:030629/0165

Effective date: 20051122

Owner name: STRAGENT, LLC, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BBN TECHNOLOGIES CORP.;REEL/FRAME:030629/0180

Effective date: 20090427

STCB Information on status: application discontinuation

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