Hash Cam having a reduced size memory array and its application

Information

  • Patent Grant
  • 6438674
  • Patent Number
    6,438,674
  • Date Filed
    Tuesday, December 21, 1999
    25 years ago
  • Date Issued
    Tuesday, August 20, 2002
    22 years ago
Abstract
A hash CAM is provided with a hashing unit and a memory array. The hashing unit is designed to generate an n-bit index in response to an m-bit input, where n and m are positive integers, and n is smaller than m. The memory array is designed to store a number of truncated comparands of size r (in units of bits), and to output a selected one of the stored truncated comparands in accordance with the n-bit index, for comparison with a subset of r selected bits of the m-bit input, where r is also a positive integer, and m−r is less than or equal to n. In each of a number of applications, a look-up engine is provided with the hash CAM. In one particular application, a forwarding section of a networking device is provided with such look-up engine.
Description




BACKGROUND OF THE INVENTION




1. Field of the Invention




The present invention relates to the field of data processing and data communication. More specifically, the present invention relates to the design of hash CAM (content addressable memory) used in data processing and data communication devices.




2. Background Information




Numerous data processing and data communication applications employ a hash CAM for data look-up. Examples of these applications include but are not limited to network routers and switches looking up forwarding instructions for received frames.

FIG. 1

illustrates a typical prior art hash CAM. Prior art hash CAM


100


is constituted with hash function


102


, pointer array


104


, memory array


106


, and comparators


108




a


-


108




b


. Hash function


102


is used to hash an m-bit input value to an n-bit index, where m and n are positive integers, with m greater than n. An example of hash function


102


is one that breaks the m-bit input into a number of vectors of size less than or equal to n and either EXCLUSIVE-OR all the vectors together, or add all the vectors together. Another example of hash function


102


is one that divides the m-bit input by an n


th


order polynomial, and uses the n-bit remainder as the index. Pointer array


104


is designed to store up to 2


n


pointers pointing to 2


n


starting memory locations of 2


n


corresponding threaded lists of entries. Each entry includes a comparand, a payload and a next entry pointer (with the “last” next entry pointer of each threaded list set to “null” indicating the end of that particular list). Some of these lists may be “empty”, in which case, the corresponding pointers in the pointer array would be “null”. Memory array


106


is designed to store the threaded lists of entries. The payload of an indexed threaded list having the associated comparand that matches the m-bit input or an indication that no match was found is returned. Accordingly, each of the associated comparands is also m-bits in size. The nature of the payloads is application dependent. In the above mentioned network router/switch example, the payloads may be e.g. destination MAC addresses (MAC=media access control) or the number of the physical port to which the intended recipient is attached. Thus, comparator


108




a


is used to determine if an m-bit comparand matches an m-bit input, while comparator


108




b


is used to determine if the next pointer is a null pointer or not. Accordingly, comparator


108




a


is also m-bit in width.




Prior art hash CAMs of the type illustrated in

FIG. 1

suffer from the disadvantage that they require large memory arrays and wide comparators for applications involving long input values, i.e. large m. For example, it is not uncommon for many networking applications where the m-bit input may be as long as 128 bits or longer. Thus, a more efficient hash CAM is desired




SUMMARY OF THE INVENTION




The novel hash CAM of the present invention comprises a hashing unit and a memory array. The hashing unit is designed to generate an n-bit index in response to an m-bit input, where n and m are positive integers, and n is smaller than m. The memory array is designed to store a number of truncated comparands of size r (in units of bits), and to output a selected one of the stored truncated comparands in accordance with the n-bit index, for comparison with a subset of r selected bits of the m-bit input, where r is also a positive integer, and m−r is less than or equal to n.











BRIEF DESCRIPTION OF DRAWINGS




The present invention will be described by way of exemplary embodiments, but not limitations, illustrated in the accompanying drawings in which like references denote similar elements, and in which:





FIG. 1

illustrates a typical prior art hash CAM;





FIG. 2

illustrates the hash CAM of the present invention in accordance with one embodiment;





FIG. 3

illustrates the hash CAM of the present invention in accordance with another embodiment;





FIG. 4

illustrates one entry in the memory array of

FIG. 3

in further detail, in accordance with one embodiment;





FIG. 5

illustrates the mask array of

FIG. 3

in further detail, in accordance with one embodiment; and





FIG. 6

illustrates an example application of the hash CAM of the present invention.











DETAILED DESCRIPTION OF THE INVENTION




In the following description, various aspects of the present invention will be described, and various details will be set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to those skilled in the art that the present invention may be practiced with only some or all aspects of the present invention, and the present invention may be practiced without the specific details. In other instances, well known features are omitted or simplified in order not to obscure the present invention. Furthermore, repeated usage of the phrase “in one embodiment” does not necessarily refer to the same embodiment, although it may.




Referring now to

FIG. 2

, wherein the hash CAM of the present invention in accordance with one embodiment is shown. As illustrated, hash CAM


200


of the present invention is similarly constituted with hash function


202


, pointer array


204


, memory array


206


, and comparators


208




a


-


208




b


. However, hash CAM


200


is incorporated with the teachings of the present invention, resulting in reduced space requirement (more specifically, for memory array


206


and comparator


208




a


), when compared to the prior art, for handling the same size input hashed in like manner. That is, for a particular design point (m, n), hash CAM


200


of the represent invention requires less space than the prior art. As will be apparent from the description to follow, the larger n gets, the greater is the saving.




Hash function


202


is used similarly to hash an m-bit input value to an n-bit index, where m and n are also positive integers, with m greater than n. However, hash function


202


is preferably of a type where the n-bit index for each of 2


n


m-bit inputs having m−n common bits, is always unique. That is, for any m-bit input, x


1


x


2


. . . X


m−n


y


1


y


2


. . . y


n


, the m-bit input is mapped to n-bit index z


1


z


2


. . . z


n


, where the n-bit index is unique for each of the 2


n


variations of y


1


y


2


. . . y


n


(with the same x


1


x


2


. . . x


m−n)


, where x


i, y




j


, and z


k


are bits. In other words, changing any or all of bits y


1


through y


n


will change at least one bit z


k


. Hereafter, m−n may also be referred to as r, which by definition is also an integer. In one embodiment, hash function


202


is a function that generates the n-bit index by adding the m-bit input in a pre-determined manner to reduce the m-bit input to an n-bit value. For example, for a 4-bit input, a 2-bit index is generated by correspondingly adding the 2 most significant bits (MSB) to the 2 least significant bits (LSB). That is, for the 4-bit input 11 00, the resulting 2-bit index is 11. Note that for this hash function, the 2-bit indices generated for the 4-bit inputs 11 00, 11 01, 11 10, 11 11 are all different; respectively, they are 11, 10, 01 and 00. In another embodiment, hash function


202


is a function that generates the n-bit index by performing XOR operations on the m-bit input in a pre-determined manner to reduce the m-bit input to an n-bit value. In other embodiments, other hash functions with like properties may also be employed.




Pointer array


204


is similarly designed to store up to 2


n


pointers pointing to the starting memory locations of up to 2


n


corresponding threaded lists of entries. Each entry includes a comparand, a payload, and a next entry pointer (with the last next entry pointer of a threaded list set to “null”)




Memory array


206


is similarly designed to store the earlier described entries. However, in accordance with the present invention, for each payload of an entry, only m−n or r pre-determined selected bits of its m-bit input are stored as the associated comparand. In other words, when storing the associated comparand, n selected bits are truncated from each potential m-bit input. The payload is returned for an m-bit input if the stored r-bit comparand matches the corresponding r selected bits of the m-bit input. Thus, a saving of n bits of storage for each stored entry is achieved. In one embodiment, each comparand is formed by truncating the n LSB of a potential m-bit input. In another embodiment, each comparand is formed by truncating the n MSB of a potential m-bit input. In yet another embodiment, each comparand is formed by truncating the n center bits of a potential m-bit input. In other embodiments, other manner of truncation may also be employed, as long as they are consistent and complementary to the hash function.




The nature of the payloads remains application dependent. The payload may still be various types of network addresses (including but not limited to the earlier mentioned MAC addresses or IP (Internet Protocol) addresses, for various networking applications. The m-bit input may be formed in part or in whole in accordance with a received address.




Comparator


208




a


is used to determine if an r-bit comparand matches the corresponding r-bits of an m-bit input. Thus, comparator


208




a


is also advantageously reduced in width to r bits from m bits, resulting in an n bit saving in width. That is, elimination of all circuit elements necessary to perform n bit comparisons. Therefore, in an embodiment where multiple comparator


208




a


, say q units, are provided to support e.g. concurrent look-up for q m-bit inputs, a saving of circuit elements necessary to support comparison of q×n bits may be achieved. Again, the savings could be substantial for large ns.




Note that in alternate embodiments, depending on the applications, the present invention may also be practiced with comparator


208




a


being replaced with other combinatorial circuitry to determine if the corresponding r bits of the m-bit input has a predetermined relationship to a stored r-bit comparand.




As to comparator


208




b


, as in the prior art, it is used to determine if the next pointer is a null pointer or not.




Thus, it can be seen from the above description, the

FIG. 2

embodiment of hash CAM


200


of the present invention may achieve substantial savings in space, circuit area, and clock speed because, generally narrower comparisons can be performed more quickly.




Referring now to

FIG. 3

, wherein the hash CAM of the present invention in accordance with another embodiment is shown. As illustrated, hash CAM


300


of the present invention is again similarly constituted with hash function


302


, pointer array


304


, memory array


306


, and comparison circuitry


308




a


-


308




b


, as in the prior art. However, in accordance with the present invention, hash CAM


300


is further provided with input array


305


to store the m-bit input in a partitioned manner suitable for successive output in portions of size m/p, where m is greater than or equal to p. Additionally, the comparands are also stored in memory array


306


in the same partitioned manner. For the illustrated embodiment, hash CAM


300


is still further provided with mask array


307


. As will be described in more detail below, the incorporation of input array


305


, coupled with the novel “partitioned” method of operation of the present invention, advantageously require less logic, as compared to the prior art. Furthermore, enhanced hash CAM


300


is particularly suited for the employment of RAM that supports “burst mode” accesses. As will be apparent from the description to follow, the larger the design point is for m, the greater is the improvement. Furthermore, the incorporation of mask array


307


enables hash CAM


300


to support applications with different size m-bit inputs at the same time.




Hash function


302


is used similarly to hash an m-bit input value to an n-bit index, where m and n are also positive integers, with m greater than n. Pointer array


304


is similarly designed to store up to 2


n


pointers pointing to the starting memory locations of up to 2


n


corresponding threaded lists of entries. Memory array


306


is similarly designed to store a fraction of 2


n


threaded lists of entries. In one embodiment, memory array


306


is designed to store about ¼ of the 2


n


threaded lists of entries. Each entry similarly includes a comparand, a payload, and a next entry pointer. However, in accordance with the present invention, to facilitate faster operation with long m-bit inputs, large m, as alluded to earlier, each comparand is stored in a partitioned manner, suitable to be successively output in portions of size m/p (where p is the number of partition, see also

FIG. 4

where a 3-stage partition embodiment is shown). As alluded to earlier, in one embodiment, memory array


306


is a memory of the type that supports burst mode access, i.e. successively outputting multiple data responsive to one read address. The nature of the payloads remains application dependent. The payload may still be various types of network addresses (including but not limited to the earlier mentioned MAC addresses or IP (Internet Protocol) addresses, for various networking applications. The m-bit input may be formed in part or in whole in accordance with a received address.




Input array


305


is designed to store the m-bit input in a like partitioned manner, suitable to be successively output in portions of size m/p. Likewise, input array


305


is also preferably of a type that supports burst output.




Comparison circuitry


308




a


is used to cumulatively determine if an m-bit comparand matches an m-bit input, by successively comparing the corresponding portions of size m/p. For the 3-stage embodiment of

FIG. 4

, in one embodiment, comparison circuitry


308




a


operates in accordance with a three stage process given by the following equations:






noMatch<=(1


st


m/p portion of input {circumflex over ( )} 1


st


m/p portion of comparand)!=0  1)








noMatch<=noMatch II ((2


nd


m/p portion of input {circumflex over ( )} 2


nd


m/p portion of comparand)!=0)  2)








noMatch<=noMatch II ((3


rd


m/p portion of input {circumflex over ( )} 3


re


m/p portion of comparand)!=0)  3)






where noMatch is the output signal, and it is re-circulated as one of the inputs in each of the subsequent stages. In the above equations, “{circumflex over ( )}” represents the vector-wide EXCLUSIVE-OR operation in which the bits of one vector are EXCLUSIVE-ORed with corresponding bits of a second vector to create a third vector, and “II” represents a logical OR operation.




Thus, comparison circuitry


308




a


is able to handle long m-inputs with a comparator that is m−m/p bits narrower, than an implementation in accordance with the prior art. This narrower comparator has at most 1/p of the electronic elements otherwise required. That is, at least (p−1)/p of the circuit elements otherwise required to perform m−m/p bit comparisons may be eliminated. Experience has shown that this cumulative, staged approach employing fewer electronic elements, in addition to taking up less space, actually can make the match determination in less time, than a single stage larger implementation. Again, the speed up could be substantial for large ms.




Note that in alternate embodiments, depending on the applications, the present invention may also be practiced with comparison circuitry


308




a


being replaced with other combinatorial circuitry to determine if the m-bit input has a predetermined relationship to a stored m-bit comparand.




As to comparator


308




b


, as in the prior art, it is used to determine if the next pointer is a null pointer or not.




Mask array


307


is used to store a number of partitioned masks with portion size m/p, to allow hash CAM


300


to concurrently operate for different sized inputs. Under these embodiments, m would be at least as big as the largest size input to be supported. Each mask would be employed to effectively reduce the “supersized” m-bit input to the actual size of the input of a particular application. A four mask embodiment is illustrated in FIG.


5


. Depending on the values of each partitioned mask, each partitioned mask effective renders the m-bit input to a different sized input. For the four mask embodiment, a 2-bit mask index is employed to cause the appropriate mask to be output and taken into consideration (to effective reduce the “supersized” input) at comparison time. The comparison circuitry


308




a


of the earlier described 3-stage embodiment of

FIG. 4

, in accordance with one embodiment, may operate in accordance with a three stage process given by the following equations instead:






misMatch[7]<=((input[31:28]{circumflex over ( )}








comparand[31:28]) & mask[31:28])!=0








misMatch[6]<=((input[27:24]{circumflex over ( )}








comparand[27:24]) & mask[27:24])!=0








misMatch[5]<=((input[23:20]{circumflex over ( )}








comparand[23:20]) & mask[23:20])!=0








misMatch[4]<=((input[19:16]{circumflex over ( )}








comparand[19:16]) & mask[19:16])!=0








misMatch[3]<=((input[15:12]{circumflex over ( )}








comparand[15:12]) & mask[15:12])!=0








misMatch[2]<=((input[11:8]{circumflex over ( )}








comparand[11:8]) & mask[11:8])!=0








mismatch[1]<=((input[7:4]{circumflex over ( )}








comparand[7:4]) & mask[7:4])!=0








misMatch[0]<=((input[3:0]{circumflex over ( )}








comparand[3:0]) & mask[3:0])!=0  1a)








noMatch<=misMatch !=0  1b)








repeat (1a) for bits [63:32]  2a)








noMatch<=noMatch II (misMatch !=0)  2b)








repeat (1a) for bits [95:64]  3a)








noMatch<=noMatch II ((misMatch !=0)  3b)






where misMatch [7:0] are eight bits registered at the beginning of each stage, taking into account the corresponding portion of the appropriate mask, and noMatch is the output signal, and it is re-circulated as one of the inputs in each of the subsequent stages as before. In the above equations, “&” represents the vector-wide AND operation in which the bits of one vector are ANDed with corresponding bits of a second vector to create a third vector, and “!=” represents a NOT EQUAL operation.




Thus, it can be seen from the above description, the

FIG. 3

embodiment of hash CAM


300


of the present invention may achieve substantial speed up in looking up payloads for long m-bit inputs.




Referring now back to

FIG. 3

, while for ease of understanding, hash function


302


and comparison circuitry


308




a


have been described as conventional m to n hash function and conventional comparison circuitry respectively, whereas input array


305


and memory array


306


have been described as being employed to store the m-bit input and m-bit comparands in complementary partitioned manner of size m/p. However, hash function


302


may also be of a type where the n-bit index for each of 2


n


m-bit inputs having m−n common bits, is always unique. Therefore, a reduced size memory array


306


storing only r bits of each of the potential m-bit input may be employed as earlier described referencing FIG.


2


. Accordingly, memory array


306


may be employed to store the truncated r-bit comparands in portions of r/p instead (as opposed to merely m/p). In like manner, input array may be used to store the corresponding r bits of the m-bit input in portions of r/p instead (as opposed to m/p). Circuitry


308




a


may be further reduced in size to compare the r/p bit portions in succession (as opposed to m/p bit portions in succession).




Of course, for such alternate embodiment, if mask array


307


is also employed as earlier described, it too may be reduced in width by storing r-bit masks in r/p portions.




Referring now to

FIG. 6

, wherein an example application of the present invention is shown. As illustrated, networking device


600


includes first and second I/O interfaces


602


and


612


and forwarding section


604


. Forwarding section


604


includes look-up engine


606


, which is provided with hash CAM


608


incorporated with the teachings of the present invention. In one embodiment, hash CAM


608


includes the space saving teachings of FIG.


2


. In another embodiment, hash CAM


608


includes the speed up and multiple-size input teachings of

FIGS. 3-5

. In yet another embodiment, hash CAM


608


includes the space saving teachings of

FIG. 2

as well as the speed up and multiple-size input teachings of

FIGS. 3-5

. Except for hash CAM


608


, networking device


600


is intended to represent a broad range of networking devices known in the art, including but not limited to routers, switches and gateways.




Accordingly, a novel hash CAM and its application have been described.




Epilogue




From the foregoing description, those skilled in the art will recognize that many other variations of the present invention are possible. Thus, the present invention is not limited by the details described, instead, the present invention can be practiced with modifications and alterations within the spirit and scope of the appended claims.



Claims
  • 1. A hash CAM comprising:a hashing unit to generate an n-bit index in response to an m-bit input, where n and m are positive integers, and n is smaller than m; and a reduced size memory array coupled to the hashing unit to store a plurality of truncated comparands of size r (in units of bits), and to output one or more of said stored truncated comparands based at least in part on said n-bit index, for comparison with a subset of r selected bits of the m-bit input, where r is also a positive integer, and m−r is less than or equal to n.
  • 2. The hash CAM of claim 1, wherein the hash CAM further comprises reduced size comparison circuitry coupled to said reduced size memory array to compare one of said truncated comparands output by said reduced size memory array with said subset of r selected bits of the m-bit input.
  • 3. The hash CAM of claim 1, wherein m−r is equal to n.
  • 4. The hash CAM of claim 1, wherein the subset of r selected bits are r bits selected from a group of consisting of the r MSB of the m-bit input and the r LSB of the m-bit input.
  • 5. A hash CAM comprising:a hashing unit to generate an n-bit index in response to an m-bit input, where n and m are positive integers, and n is smaller than m; and a reduced size comparison circuitry to compare a subset of r selected bits of said m-bit input against a pre-stored truncated comparand of size r (in units of bits) selected based at least in part on said generated n-bit index, where r is also a positive integer, and m−r is less than or equal to n.
  • 6. The hash CAM of claim 5, wherein m−r is equal to n.
  • 7. The hash CAM of claim 5, wherein the subset of r selected bits are r bits selected from a group of consisting of the r MSB of the m-bit input and the r LSB of the m-bit input.
  • 8. An apparatus comprising:a hash cam to store a plurality of data and associated truncated comparands of size r (in units of bits), and to conditionally output a selected one of said stored data based at least in part on an m-bit input's relationship to said truncated comparands, wherein the hash cam includes a hashing unit and a reduced size memory array coupled to each other, with the hashing unit to generate an n-bit index in response to said m-bit input, and the reduced size memory array to store said data and associated truncated comparands, and to output a selected one of said stored truncated comparands in accordance with said n-bit index, for comparison with r selected bits of the m-bit input, where m, n and r are positive integers, and m−r is less than or equal to n; and access circuitry coupled to said hash cam to retrieve appropriate ones of said stored data for various m-bit inputs.
  • 9. The apparatus of claim 8, wherein the hash CAM further comprises reduced size comparison circuitry coupled to said reduced size memory array to compare one of said truncated comparands output by said reduced size memory array with said subset of r selected bits of the m-bit input.
  • 10. The apparatus of claim 8, wherein the apparatus is a sub-assembly including a look-up engine to look up data associated with m-bit inputs, and said hash CAM and access circuitry are part of said look-up engine.
  • 11. The apparatus of claim 8, wherein the apparatus is a networking device including a forwarding section to look up data associated with addresses, and said hash CAM and access circuitry are part of said forwarding section, said m-bit input being formed in part or in whole with one of said addresses.
  • 12. The apparatus of claim 11, wherein the networking device is a networking device selected from a group consisting of a gateway, a router, and a switch.
  • 13. The apparatus of claim 11, wherein said m-bit addresses are addresses selected from a group consisting of IP addresses and MAC addresses.
  • 14. An apparatus comprising:a hash cam to store a plurality of data and associated truncated comparands of size r (in units of bits), and to conditionally output a selected one of said stored data based at least in part on an m-bit input's relationship to said truncated comparands, wherein the hash cam includes a hashing unit and reduced size comparison circuitry, with the hashing unit to generate an n-bit index in response to said m-bit input, and the comparison circuitry to compare a subset of r selected bits of the m-bit input against one of said truncated comparands selected based at least in part on said generated n-bit index, where m, n and r are positive integers, and m−r is less than or equal to n; and access circuitry coupled to said hash cam to retrieve appropriate ones of said stored data for various m-bit inputs.
  • 15. The apparatus of claim 14, wherein the apparatus is a sub-assembly including a look-up engine to look up data associated with m-bit inputs, and said hash CAM and access circuitry are part of said look-up engine.
  • 16. The apparatus of claim 14, wherein the apparatus is a networking device including a forwarding section to look up data associated with addresses, and said hash CAM and access circuitry are part of said forwarding section, said m-bit input being formed in part or in whole with one of said addresses.
  • 17. The apparatus of claim 16, wherein the networking device is a networking device selected from a group consisting of a gateway, a router, and a switch.
  • 18. The apparatus of claim 16, wherein said m-bit addresses are addresses selected from a group consisting of IP addresses and MAC addresses.
  • 19. A networking apparatus comprising:an interface to receive a plurality of addresses; and a hash cam coupled to the interface, to store a plurality of data and associated truncated comparands of size r (in units of bits), and to conditionally output a selected one of said stored data based at least in part on an m-bit input's relationship to said truncated comparands, the m-bit input being formed in part or in whole with one of said addresses, wherein the hash cam includes a hashing unit and a reduced size memory array coupled to each other, with the hashing unit to generate an n-bit index in response to said m-bit input, and the reduced size memory array to store said data and associated truncated comparands, and to output a selected one of said stored truncated comparands in accordance with said n-bit index, for comparison with a subset of r selected bits of the m-bit input, where m, n and r are positive integers, and m−r is less than or equal to n.
  • 20. The networking apparatus of claim 19, wherein the hash CAM further comprises reduced size comparison circuitry coupled to said reduced size memory array to compare one of said truncated comparands output by said reduced size memory array with said subset of r selected bits of the m-bit input.
  • 21. The networking apparatus of claim 19, wherein the networking apparatus is a selected one of a gateway, a router and a switch.
  • 22. The networking apparatus of claim 19, wherein said addresses are addresses selected from a group consisting of IP addresses and MAC addresses.
  • 23. A networking apparatus comprising:an interface to receive a plurality of addresses; and a hash cam coupled to the interface, to store a plurality of data and associated truncated comparands of size r (in units of bits), and to conditionally output a selected one of said stored data based at least in part on an m-bit input's relationship to said truncated comparands, the m-bit input being formed in part or in whole with one of said addresses, wherein the hash cam includes a hashing unit and reduced size comparison circuitry, with the hashing unit to generate an n-bit index in response to said m-bit input, and the comparison circuitry to compare a subset of r selected bits of the m-bit input against one of said truncated comparands selected based at least in part on said generated n-bit index, where m, n and r are positive integers, and m−r is less than or equal to n.
  • 24. The networking apparatus of claim 23, wherein the networking apparatus is a selected one of a gateway, a router and a switch.
  • 25. The networking apparatus of claim 23, wherein said addresses are addresses selected from a group consisting of IP addresses and MAC addresses.
  • 26. In a hash CAM, a method of operation comprising:storing data and truncated comparands of size r (in units of bits) associated with said data; generating an n-bit index for an m-bit input, where m, n and r are positive integers with m−r being less than or equal to n; retrieving one of said stored data and its associated truncated comparand using said generated n-bit index; comparing the retrieved truncated comparand to a subset of r selected bits of said m-bit input; and outputting said retrieved data based at least in part on said comparison.
  • 27. In a look-up engine, a method of operation comprising:storing data and truncated comparands of size r (in units of bits) associated with said data; generating an n-bit index for an m-bit input, where m, n and r are positive integers with m−r being less than or equal to n; retrieving a selected one of said stored data based at least in part on the m-bit input's relationship with said truncated comparands determined using a subset of r selected bits of said m-bit input.
  • 28. In a networking apparatus, a method of operation comprising:storing data and truncated comparands of size r (in units of bits) associated with said data; forming an m-bit input based in part or in whole on an address; generating an n-bit index for said m-bit input, where m, n and r are positive integers with m−r being less than or equal to n; and retrieving a selected one of said stored data for said address based at least in part on the m-bit input's relationship with said truncated comparands determined using a subset of r selected bits of said m-bit input.
US Referenced Citations (10)
Number Name Date Kind
5414704 Spinney May 1995 A
5920886 Feldmeier Jul 1999 A
5920900 Poole et al. Jul 1999 A
6011795 Varghese et al. Jan 2000 A
6061368 Hitzelberger May 2000 A
6061712 Tzeng May 2000 A
6067574 Tzeng May 2000 A
6173384 Weaver Jan 2001 B1
6226710 Melchior May 2001 B1
6307855 Hariguchi Oct 2001 B1
Non-Patent Literature Citations (2)
Entry
Pei et al., “VLSI Implementation of Routing Tables: Tries and Cams,” IEEE, pp. 515-524, 1999.*
Glaise et al., “A Low Cost Searching Device for an ATM Adapter,” IEEE, pp. 488-493, 1997.