IP Library Granted Patent US 7,451,267
Granted Patent B1
US 7,451,267 · App. 10/948,050 · Granted Nov 11, 2008

Method and apparatus for learn and related operations in network search engine

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,451,267
App. No.
10/948,050
Granted
Nov 11, 2008
Kind
B1
Abstract

A search engine method and apparatus can store and update status information for each entry of a content addressable memory (CAM) array, for a learn operation, or the like. A search engine can include a status memory block external to and independent of the CAM array. A status memory block ( 800 ) can include a number of memory sections ( 806 - 0 to 806 - 2 ) that each includes a number of bit locations for storing a free/not-free status of CAM entries in a hierarchical fashion. Corresponding control sections ( 808 - 0 to 808 - 2 ) can include priority encoders ( 812 - 0 to 812 - 2 ) that determine a first free element in a memory section for a next hierarchical level, as well as status aggregation logic ( 814 - 0 to 814 - 2 ) that can generate an aggregated status that is propagated to a previous hierarchical level.

Claims (82)

1. A search engine device, comprising:

a content addressable memory (CAM) cell array arranged into a plurality of CAM entries that each store data values for comparison with search key values; and

a status memory block separate from the CAM cell array that includes

a leaf section having a plurality of rows that each include a plurality of bits, each such bit representing the free/not-free status of one CAM entry, and

an intermediate section having a plurality of rows that each includes a plurality of intermediate bits, each such intermediate bit indicating whether all of the CAM entries of a corresponding leaf section row have a not-free status or at least one CAM entry of the corresponding leaf section row has a free status.

2. The search engine device of claim 1 , wherein:

the status memory block comprises an array of static random access memory (SRAM) cells.

3. The search engine device of claim 1 , further including:

at least one priority encoder for receiving and encoding a highest priority bit from a selected row of the leaf section into an index value.

4. The search engine device of claim 3 , wherein:

the status memory block further includes

a next free address register that stores the address of an available CAM entry available having a free status, at least a portion of the address of the available CAM entry being generated by the at least one priority encoder.

5. The search engine device of claim 1 , further including:

an input control section for receiving at least a write address in a write operation; and

an address multiplexer having a first input coupled to the status memory block for receiving at least a next free address value, a second input coupled the input control section for receiving at least a write address, and an output coupled to the CAM cell array.

6. The search engine device of claim 1 , wherein:

the status memory block includes

the leaf section having x*y*z bits, each such bit storing a free/not-free status of one CAM entry,

an initial search section of x bits, each such bit representing a write status for a different set of y*z CAM entries, and

a priority encoder for encoding a highest priority bit from the x bits.

7. The search engine device of claim 1 , wherein:

the status memory block further includes

a priority encoder for receiving and encoding a highest priority bit from a selected row of the intermediate section.

8. The search engine device of claim 1 , wherein:

the status memory block includes

the leaf section having x*y*z bit storage locations, each of which indicates the free/not-free status of a CAM entry,

an intermediate section having x*y bit storage locations, each corresponding to a different z bits of the leaf section and indicating if any one of the corresponding z bits has a free status, and

an initial search section having x bit storage locations, each corresponding to a different y*z bits of the leaf section and indicating if any one of the corresponding y*z bits has a free status.

9. The search engine device of claim 8 , further including:

a next free address register that stores the address of an available CAM entry available for a learn operation, said available CAM entry address being a combination of binary values i, j and k, where i is an encoded value in the range of 0 to x−1, j is an encoded value in the range of 0 to y−1, and k is an encoded value from 0 to z−1.

10. An apparatus that includes a content addressable memory (CAM) for performing a learn operation, comprising:

a circuit block external to and independent from any CAM array of the apparatus, the circuit block comprising a plurality of sub-blocks;

each sub-block including a plurality of memory elements storing a free/not-free status for at least one entry of the CAM array; and

each sub-block includes a corresponding selection circuit for encoding the location of one bit from a plurality of bits provided by memory elements of the corresponding sub-block; wherein

the sub-blocks have a hierarchy with respect to one another, and

the memory elements of each sub-block store the free/not-free status of a larger number of entries of the CAM array than the memory elements of sub-blocks that are lower in the hierarchy.

11. The apparatus of claim 10 , wherein:

a lowest sub-block of the hierarchy has memory elements that each store the free/not-free status of one entry of the CAM array.

12. The apparatus of claim 11 , wherein:

each sub-block except the lowest hierarchy sub-block includes

memory elements that each store the status of an aggregation of memory element values of the next lower sub-block in the hierarchy, and

status aggregation logic that logically combines multiple memory element values of the next lower sub-block in the hierarchy to form an aggregated status value.

13. A method for tracking a free/not-free status of entries in search engine device, where such entries are compared to a search key, the method comprising the steps of:

storing free/not-free status data for each entry in a status memory that is a physically separate circuit block from the entries;

storing a free/not-free status of each entry as one bit in a lowest hierarchy level;

storing aggregation bits in at least one higher hierarchy level, each aggregation bit representing the free/not-free status for different groups of bits in the lowest hierarchy level; and

determining at least a portion of next free address by prioritizing and encoding selected bits from the lowest hierarchy level and prioritizing and encoding selected bits from the at least one higher hierarchy level.

14. The method of claim 13 , wherein:

in a find next free address operation

prioritizing aggregation bits of the at least one higher hierarchy level to determine a group of bits in the lowest hierarchy level that includes at least one bit having a free status, and encoding a storage location including such an aggregation bit to form a first part of a next free address;

prioritizing the group of bits in the lowest hierarchy level to determine a bit corresponding to a highest priority entry having a free status, and encoding a storage location including such a bit to form a second part of the next free address; and

storing the next free address in a next free address register.

15. The method of claim 14 , wherein:

each entry of the search engine has a unique address and each bit of the lowest hierarchy level corresponds to a unique address; and

in a learn operation

writing learn data to an entry corresponding to a learn address,

setting the status of the bit in the lowest hierarchy level corresponding to the learn address to not-free,

updating the status of all aggregation bits corresponding to the updated bit in the lowest hierarchy level; and

performing the find next free address operation.

16. The method of claim 14 , wherein:

in an initialization operation,

setting all bits in all hierarchy levels to a free status, and

performing a find next free address operation.

17. The method of claim 16 , wherein:

the find next free address operation further includes

reading a single row of bit values of a highest hierarchy level, and

prioritizing and encoding the bit values from the row of the highest hierarchy level to generate one portion of a next free address.

18. The method of claim 17 , wherein:

the find next free address operation further includes

reading a row of bit values in the next lower hierarchy level according to the first index value, and

prioritizing and encoding the bit values from the row of next lower hierarchy level to find a second portion of the next free address.

19. The method of claim 17 , wherein:

the find next free address operation further includes

reading a row of bit values in the lowest hierarchy level according to an index value provided from a second lowest hierarchy level,

prioritizing and encoding the bit values from the row of lowest hierarchy level to find a last index of a bit that has a free status,

combining address portions all hierarchy levels to generate the next free address value.

20. The method of claim 14 , wherein:

each entry of the search engine has a unique address and each bit of the lowest hierarchy level corresponds to a unique address; and

in an unlearn operation

setting the status of the bit in the lowest hierarchy level corresponding to an unlearn address to free,

updating the status of all aggregation bits corresponding to the updated bit in the lowest hierarchy level; and

performing the find next free address operation.

Assignments (13)
CORRECTIVE ASSIGNMENT TO CORRECT THE ERROR IN RECORDING THE MERGER PREVIOUSLY RECORDED AT REEL: 047357 FRAME: 0302. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 22, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048674/0834 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER PREVIOUSLY RECORDED ON REEL 047195 FRAME 0658. ASSIGNOR(S) HEREBY CONFIRMS THE THE EFFECTIVE DATE IS 09/05/2018. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047357/0302 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047195/0658 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
CHANGE OF NAME Recorded Apr 16, 2015
From: NETLOGIC MICROSYSTEMS, INC.
To: NETLOGIC I LLC
Reel/Frame 035443/0824 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2015
From: NETLOGIC I LLC
To: BROADCOM CORPORATION
Reel/Frame 035443/0763 →
RELEASE OF SECURITY INTEREST Recorded Aug 30, 2011
From: SILICON VALLEY BANK
To: NETLOGIC MICROSYSTEMS, INC.; NETLOGIC MICROSYSTEMS INTERNATIONAL LIMITED; NETLOGIC MICROSYSTEMS CAYMANS LIMITED
Reel/Frame 026830/0141 →
SECURITY AGREEMENT Recorded Jul 17, 2009
From: NETLOGIC MICROSYSTEMS, INC.; NETLOGIC MICROSYSTEMS INTERNATIONAL LIMITED; NETLOGIC MICROSYSTEMS CAYMANS LIMITED
To: SILICON VALLEY BANK
Reel/Frame 022973/0710 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2007
From: CYPRESS SEMICONDUCTOR CORPORATION
To: NETLOGIC MICROSYSTEMS, INC.
Reel/Frame 018961/0327 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 28, 2006
From: CYPRESS SEMICONDUCTOR CORPORATION
To: NETLOGIC MICROSYSTEMS, INC.
Reel/Frame 017379/0729 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2004
From: VENKATACHARY, SRINIVASAN; SRIKRISHNA, AJAY; RAJAMANICKAM, JAGADEESAN
To: CYPRESS SEMICONDUCTOR CORPORATION
Reel/Frame 016002/0093 →