A content addressable memory (cam) is provided that can perform wide word searches. At least one cam memory core having a plurality of bit pattern entry rows is included in the cam. In addition, search logic is included that, is capable searching particular rows during each cycle. The search logic is also capable of allowing match line results of unsearched rows to remain unchanged during a cycle. The cam further includes a serial AND array in communication with the bit pattern entry rows, wherein the serial AND array is capable of computing a match result for wide word entries that span multiple bit pattern entry rows. In one aspect, a match line enable signal is provided to the serial AND array, which facilitates computation of the match result.
|
0. 34. A method, comprising:
storing word entries in at least one content addressable memory (cam) core having a plurality of bit pattern entry rows:
computing a plurality of match line results for selected bit pattern entry rows during a search cycle; and
computing a match result for word entries that span multiple bit pattern entry rows.
0. 28. A method of performing word searches, the method comprising:
storing word entries in at least one content addressable memory (cam) core having a plurality of bit pattern entry rows;
storing a plurality of word boundary bits in a boundary array, wherein individual ones of the plurality of word boundary bits correspond to individual ones of the plurality of bit pattern entry rows; and
computing a match result for a word entry that spans multiple bit pattern entry rows.
1. A content addressable memory (cam) capable of performing wide word searches, comprising:
at least one cam memory core having a plurality of bit pattern entry rows;
a boundary array having a plurality of word boundary bits, each word boundary bit corresponding to a bit pattern entry row; and
a serial AND array in communication with the bit pattern entry rows and the word boundary bits, wherein the serial AND array is capable of utilizing the word boundary bits to compute a match result for wide word entries that span multiple bit pattern entry rows.
21. A content addressable memory (cam) capable of performing wide word searches, comprising:
at least one cam memory core having a plurality of bit pattern entry rows;
search logic capable of searching particular rows during each cycle, the search logic further capable of allowing match line results of unsearched rows to remain unchanged during a cycle; and
a serial AND array in communication with the bit pattern entry rows, wherein the serial AND array is capable of computing a match result for wide word entries that span multiple bit pattern entry rows.
16. A content addressable memory (cam) capable of performing wide word searches, comprising:
a boundary array having a plurality of word boundary bits, each word boundary bit corresponding to a bit pattern entry row of a cam memory core; and
a serial AND array having a plurality of serial AND computational units, each serial AND computational unit in communication with a corresponding bit pattern entry row of the cam memory core and a word boundary bit corresponding to the bit pattern entry row, wherein the serial AND computational units receive as inputs a control signal indicating a beginning of a search and a control signal indicating an end of a search,
wherein the serial AND array is capable of utilizing the word boundary bits to compute a match result for wide word entries that span multiple bit pattern entry rows.
9. A content addressable memory (cam) capable of performing wide word searches, comprising:
a boundary array having a plurality of word boundary bits, each word boundary bit corresponding to a bit pattern entry row of a cam memory core; and
a serial AND array having a plurality of serial AND computational units, each serial AND computational unit in communication with a corresponding bit pattern entry row of the cam memory core and a word boundary bit corresponding to the bit pattern entry row, wherein the serial AND computational units receive as inputs a word boundary bit and an internal match line result corresponding to an adjacent bit pattern entry row,
wherein the serial AND array is capable of utilizing the word boundary bits to compute a match result for wide word entries that span multiple bit pattern entry rows.
2. A cam as recited in
3. A cam as recited in
4. A cam as recited in
5. A cam as recited in
6. A cam as recited in
7. A cam as recited in
8. A cam as recited in
10. A cam as recited in
11. A cam as recited in
12. A cam as recited in
13. A cam as recited in
14. A cam as recited in
15. A cam as recited in
17. A cam as recited in
18. A cam as recited in
19. A cam as recited in
20. A cam as recited in
22. A cam as recited in
23. A cam as recited in
24. A cam as recited in
25. A cam as recited in
26. A cam as recited in
27. A cam as recited in
0. 29. The method of claim 28, wherein the computing a match result comprises computing a plurality of match line results for the plurality of bit pattern entry rows.
0. 30. The method of claim 29, wherein the computing a match result comprises determining a beginning and an end the word entry according to the plurality of word boundary bits.
0. 31. The method of claim 30, wherein the computing a match result comprises combining the match line results corresponding to the plurality of bit pattern entry rows of the wide word entry to compute the match result.
0. 32. The method of claim 28, wherein word boundary bits have a value of “1” indicate a beginning of a wide word entry.
0. 33. The method of claim 28, wherein the storing comprises storing word entries in a plurality of cam cores, wherein the cam cores are serially coupled.
0. 35. The method of claim 34, wherein match line results for unselected bit pattern entry rows remain unchanged during the search cycle.
0. 36. The method of claim 34, further comprising:
combining the match line results corresponding to the bit pattern entry rows of word entries to compute the match result.
0. 37. The method of claim 28, wherein the computing a match result is using a serial AND array that is in communication with the plurality of bit pattern entry rows and the plurality of word boundary bits.
0. 38. The method of claim 34, wherein the computing a match result comprises using a serial AND array that is in communication with the plurality of bit pattern entry rows.
0. 39. The method of claim 34, wherein the computing a match result comprises using a match line enable output signal from a match line enable latch.
0. 40. The method of claim 34, further comprising searching only odd rows or only even rows of the plurality of bit pattern entry rows.
0. 41. The method of claim 34, further comprising specifying widths of the word entries using differential width tags.
0. 42. The method of claim 34, further comprising using a first control signal to indicate a beginning of the search cycle and a second control signal to indicate an ending of the search cycle.
|
This application is related to the following applications: (1) U.S. patent application Ser. No. 09/654,316, filed Sep. 1, 2000, and entitled “Variable Width Content Addressable Memory Device For Searching Variable Width Data”; and (2) U.S. patent application Ser. No. 09/642,253, filed Aug. 17, 2000, and entitled “Priority Encoder With Multiple Match Function For Content Addressable Memories And Methods For Making The Same.” Each of these related application is incorporated herein by reference.
1. Field of the Invention
The present invention relates generally to memory devices, and more particularly to content addressable memory devices searchable using words spanning multiple rows in memory.
2. Description of the Related Art
Memory devices are indispensable components of modem computer systems and networks. As storage devices, they are used to provide fast access to data and instructions stored therein. A content addressable memory (CAM) is a special type of memory that is often used for performing address searches. For example, Internet routers often include a CAM for searching the address of specified data. The use of CAMs allows the routers to perform fast searches to allow computer systems to communicate data with one another over networks. In addition, CAMs are utilized in numerous other areas such as database searches, image processing, and voice recognition applications, where fast search performance is desired.
As is well known, CAMs typically include a two-dimensional row and column content address memory array of core cells, such that each row contains an address, pointer, or bit pattern entry. Within such an array of cells, a CAM may perform “read “and ”write” operations at specific addresses like a conventional random access memory (RAM). In addition, a CAM is used to perform fast search operations that simultaneously compare a bit pattern of data, known as a comparand, against an entire list (e.g., column) of pre-stored entries (e.g., rows) of bit patterns in the CAM array. Based on these comparisons, the CAM typically outputs a result in the form of an address, pointer, or bit pattern corresponding to an entry that matches the input data. By thus performing comparisons simultaneously of all CAM entries, the CAM provides significant savings in search time over RAMs such as DRAMs, SRAMs, and the like.
A CAM typically can perform high-speed searches on comparands or search keys of a particular bit length, known as the word width. However, available word widths in conventional CAMs arc limited by the physical organization of the CAM.
During a search operation, a comparand is compared against each bit pattern entry 102 in the CAM array 100 by comparing the individual bits of the comparand against the corresponding CAM cell 104 of the bit pattern entry 102. If each CAM cell 104 of the bit pattern entry 102 matches the corresponding bit of the comparand, the match line 106 of the bit pattern entry is high. However, CAM cells 104 that do not match the comparand ground the match line 106, thus pulling the match line 106 for the bit pattern entry 102 low when the comparand does not match the data stored in the bit pattern entry 102.
As can be seen from
More particularly, a CAM chip must fit within a package, which implies physical limitations on the actual dimensions of the CAM memory. Generally, CAM memories can only be built to a particular size before 1) performance degrades and 2) the chip no longer fits within the packaging. Performance degradation often results from extra loading caused from using long match lines, which are conventionally needed when using extended word widths.
In view of the foregoing, there is a need for CAM architectures wherein the word width is not limited by the physical width of the CAM memory. In particular, the CAM architectures should allow for word width sizes greater than the width of a single CAM row, thereby maximizing the usage of CAM space with attendant savings in cost.
Broadly speaking, the present invention fills these needs by providing a CAM architecture capable of performing wide word searches for words spanning multiple CAM rows. In one embodiment, a CAM capable of performing wide word searches is disclosed. The CAM includes at least one CAM memory core having a plurality of bit pattern entry rows, and a boundary array having a plurality of word boundary bits, wherein each word boundary bit corresponds to a bit pattern entry row. Also included is a serial AND array that is in communication with the bit pattern entry rows and the word boundary bits. The serial AND array is capable of utilizing the word boundary bits to compute a match result for wide word entries that span multiple bit pattern entry rows. Specific word boundary bits can indicate word boundaries of stored word entries. Word boundary bits having a value of “1” can indicate a beginning of a new word entry, or optionally, an end of a word entry spanning multiple bit pattern entry rows.
In another embodiment, a CAM capable of performing wide word searches is disclosed that includes a boundary array having a plurality of word boundary bits, wherein each word boundary bit corresponds to a bit pattern entry row of a CAM memory core. In addition, a serial AND array having a plurality of serial AND computational units is included. In this embodiment, each serial AND computational unit is in communication with a corresponding bit pattern entry row of the CAM memory core and a word boundary bit corresponding to the bit pattern entry row. Further, serial AND computational units receive as inputs a word boundary bit and an internal match line result corresponding to an adjacent bit pattern entry row. In this manner, the serial AND array is capable of utilizing the word boundary bits to compute a match result for wide word entries that span multiple bit pattern entry rows. Using this embodiment, word boundary bits having a value of “1” can indicate a beginning of a new word entry. The internal match line result for a particular serial AND computational unit can be a match line result before processing the word boundary bit corresponding the serial AND computational unit. In one aspect, a bit pattern entry row having a highest address of the bit pattern entry rows comprising a word entry can be searched before remaining bit pattern entry rows of the word entry. Similarly, a bit pattern entry row having a lowest address of the bit pattern entry rows comprising the word entry can be searched after other bit pattern entry rows of the word entry.
A further CAM capable of performing wide word searches is disclosed in a further embodiment of the present invention. The CAM includes a boundary array having a plurality to the bit pattern row of the word entry having the lowest memory address. The match line results 214 corresponding to the bit pattern rows of the remainder of the word entry are forced to a miss or “0.”
The serial AND array 212 shown in
To facilitate match line 206 combining, each serial AND computational unit 300 receives the internal match line result 302 from an adjacent serial AND computational unit 300. Each internal match line result 302 is based on the match line 206 of the corresponding bit pattern row and the match line or word boundary bit 218 of an adjacent bit pattern row, as described in greater detail below.
In operation, the OR gate 400 of the serial AND computational unit 300 receives as inputs the internal match line result amloi+1 302 and the word boundary bit Si+1 218 from the adjacent serial AND computational unit. The output of the OR gate 400 is then provided to the AND gate 402, which also receives the match line 206 for the bit pattern row. The result of the AND gate 402 is then stored by the flip-flop 404. The output of the flip-flop 404 is the internal match line result amloi 302 for the serial AND computational unit 300. The internal match line result amloi 302 represents the combination of the internal match line result amloi+1 302 from the adjacent serial AND computational unit and the match line 206 for the current bit pattern row.
However, because an OR operation is performed on the adjacent internal match line result amloi+1 302 and the word boundary bit Si+1 218, the internal match line result amloi 302 can represent only the match line 206 for the current bit pattern row. In particular, if the adjacent word boundary bit Si+1 218 is a “1,” meaning the adjacent bit pattern row is a new word entry, the output of the OR gate 400 will be a “1” regardless of the state of the adjacent internal match line result 302. Hence, the internal match line result amloi 302 will represent only the match line 206 for the current bit pattern row.
As mentioned previously, the internal match line result amloi 302 is provided to an adjacent serial AND computational unit. In addition, the internal match line result amloi 302 is provided to the AND gate 406, which combines the internal match line result amloi 302 with the word boundary bit Si 218 to produce the match line result 214. As discussed above, generally only the serial AND computational unit 300 corresponding to the bit pattern row of the word entry having the lowest address provides the match line result 214 for the word entry. Serial AND computational units 300 corresponding to the remaining bit pattern rows of the word entry are forced to output “0” on the match line result 214 line. To this end, the AND gate 406 is only capable of outputting a “1” result when the word boundary bit Si 218 for the current bit pattern row is a “1,” indicating the tail of a word entry. In this case, the match line result 214 for the word entry will match the internal match line result amloi 302 for the serial AND computational unit 300.
For example, bit pattern row 0 208a and bit pattern row 1 208b represent a single large word entry, where bit pattern row 0 208a has a lower address than bit pattern row 1 208b. Hence, bit pattern row 0 208a has a value of “1” indicating the start of the word entry, and the remaining bit pattern row 1 208b has a value of “0.” Bit pattern row 2 208c is the start of a new word entry, and hence, the corresponding word boundary bit 218 has a value of “1,” indicating the start of the new word entry. As above, the remaining bit pattern row 3 208d has a value of “0.” In addition to indicating the start of word entries, the word boundary bits 218 can be used to indicate the boundary of large word entries, as described next with reference to
In operation, the serial AND computational units 600 synthesize a match line result 214 that resembles a solution that would occur had there been a very large word comprising a single bit pattern row. More particularly, the serial AND computational units 600 combine the match lines 206 from bit pattern rows comprising a single word entry, and output the match line result 214 from the serial AND computational unit 600 corresponding to the bit pattern row having the lowest memory address. The match line results 214 corresponding to the bit pattern rows of the remainder of the word entry are forced to a miss or “0.” To facilitate match line 206 combining, each serial AND computational unit 600 receives the match line result 214 from an adjacent serial AND computational unit 600, as described in greater detail below.
In operation, the XNOR gate 700 of the serial AND computational unit 600 receives as inputs the word boundary bit S. Si 218 for the bit pattern row and the SC 602 control signal. In addition, the OR gate 702 receives as inputs the match line result 214 from the adjacent serial AND computational unit and the
In one embodiment, multiple search cycles are used to search word entries spanning multiple bit pattern rows. To signal the beginning and end of the complete search, search control signals SC 602 and
In particular, the chart 800 illustrates control signal values for a three cycle, three row search. As shown, during cycle 0 the
In order to search wide words as described above, a particular sequence of searching is followed to generate the proper match line information (206 and 214). Tables 10-13 below illustrate examples of how searches can be conducted for various search directionalities and word widths for data stored as shown in tables 2-9. Although the examples show signal SC for the implementations of
Table 10 below illustrates a two-row ascending search data “F” using unique tags.
TABLE 10
Cycle
Applied Search Data
Applied Search Tag
SC
PEOE
0
DataB1-F
B
1
0
0
1
DataB2-F
B
0
1
1
Table 11 below illustrates a two-row descending search data “F” using unique tags.
TABLE 11
Cycle
Applied Search Data
Applied Search Tag
SC
PEOE
0
DataB2-F
B
1
0
0
1
DataB1-F
B
0
1
1
Table 12 below illustrates a four-row ascending search data “H” using unique tags.
TABLE 12
Cycle
Applied Search Data
Applied Search Tag
SC
PEOE
0
DataD1-H
D
1
0
0
1
DataD2-H
D
0
0
0
2
DataD3-H
D
0
0
0
3
DataD4-H
D
0
1
1
Table 13 below illustrates a four-row descending search data “H” using unique tags.
TABLE 13
Cycle
Applied Search Data
Applied Search Tag
SC
PEOE
0
DataD4-H
D
1
0
0
1
DataD3-H
D
0
0
0
2
DataD2-H
D
0
0
0
3
DataD1-H
D
0
1
1
For example, bit pattern row 0 208a and bit pattern row 208b represent a single large word entry, where bit pattern row 1 208b has a higher address than bit pattern row 0 208a. Hence, bit pattern row 0 208a has a value of “1” indicating the beginning of the word entry, and the remaining bit pattern row 1 208b has a value of “0.” Bit pattern row 2 208c is the start of a new word entry, and hence, the corresponding word boundary bit 218 has a value of “1,” and the ending bit pattern row 3 208d has a value of “0.”
In the examples discussed thus far, unique tag bits have been used to specify the width of an entry in memory. To reduce the number of tag bits needed to support additional word widths, one embodiment of the present invention utilizes differential width tags to specify the width of an entry in memory. Using differential width tags, only two additional code words are required to specify any multi-row CAM entry. Specifically, a “Head” of the entry word row is indicated with one code word and all other rows within the multi-row entry store a “non-head” tag value. In the following examples, “H” will indicate the “Head” of the entry word row and “NH” will indicate the “non-head” of the entry word row. “H” can have any logic value as long as “NH” is different than “H.”
If the CAM entry spans only one row, the tag value for the CAM entry is always “Head.” For ascending search configurations, if the CAM entry spans more than one row, the CAM row with the lowest address receives the “Head” value and all other rows within the multi-row entry receive the “non-head” value. For descending search configurations, if the CAM entry spans more than one row, the CAM row with the highest address receives the “Head” value and all other rows within the multi-row entry receive the “non-head” value. In the following examples, Row i is any row in the CAM array, where i is an integer greater than or equal to zero.
Table 14 below illustrates a differential tag value for a single row entry for both ascending and descending search configurations.
TABLE 14
Tag Value
Row
H
i
Table 15 below illustrates differential tag values for a double row entry for an ascending search configuration.
TABLE 15
Tag Value
Row
H
i
NH
i + 1
Table 16 below illustrates differential tag values for a double row entry for a descending search configuration.
TABLE 16
Tag Value
Row
NH
i
H
i + 1
Table 17 below illustrates differential tag values for a three-row entry for an ascending search configuration.
TABLE 17
Tag Value
Row
H
i
NH
i + 1
NH
i + 2
Table 18 below illustrates differential tag values for a three-row entry for a descending search configuration.
TABLE 18
Tag Value
Row
NH
i
NH
i + 1
H
i + 2
Table 19 below illustrates differential tag values for a four-row entry for an ascending search configuration.
TABLE 19
Tag Value
Row
H
i
NH
i + 1
NH
i + 2
NH
i + 3
Table 20 below illustrates differential tag values for a four-row entry for a descending search configuration.
TABLE 20
Tag Value
Row
NH
i
NH
i + 1
NH
i + 2
H
i + 3
Tables 21-27 below illustrate data storage examples using the differential tag scheme described above. Table 21 illustrates four single row stored CAM entries for both ascending and descending searches using differential width tags.
TABLE 21
Row
Stored Tag
Stored Data
Store Boundary Bit
0
H
DataA1-A
T
1
H
DataA1-B
T
2
H
DataA1-C
T
3
H
DataA1-D
T
Table 22 illustrates two double row stored CAM entries for an ascending search using differential width tags.
TABLE 22
Row
Stored Tag
Stored Data
Store Boundary Bit
0
H
DataB1-E
NT
1
NH
DataB2-E
T
2
H
DataB1-F
NT
3
NH
DataB2-F
T
Table 23 below illustrates two double row stored CAM entries for a descending search using differential width tags.
TABLE 23
Row
Stored Tag
Stored Data
Store Boundary Bit
0
NH
DataB1-E
T
1
H
DataB2-E
NT
2
NH
DataB1-F
T
3
H
DataB2-F
NT
Table 24 below illustrates a four row stored CAM entry for an ascending search using differential width tags.
TABLE 24
Row
Stored Tag
Stored Data
Store Boundary Bit
0
H
DataD1-G
NT
1
NH
DataD2-G
NT
2
NH
DataD3-G
NT
3
NH
DataD4-G
T
Table 25 below illustrates a four row stored CAM entry for a descending search using differential width tags.
TABLE 25
Row
Stored Tag
Stored Data
Store Boundary Bit
0
NH
DataD1-G
T
1
NH
DataD2-G
NT
2
NH
DataD3-G
NT
3
H
DataD4-G
NT
In addition, a heterogeneous mixture of various entry sizes can be stored within the same array, as illustrated below in Tables 26 and 27. Table 26 below shows an example of a four-row stored CAM entry and a double-row stored CAM entry for an ascending search using differential tags.
TABLE 26
Row
Stored Tag
Stored Data
Store Boundary Bit
0
H
DataD1-G
NT
1
NH
DataD2-G
NT
2
NH
DataD3-G
NT
3
NH
DataD4-G
T
4
H
DataB1-H
NT
5
NH
DataB2-H
T
Table 27 shows an example of a four-row stored CAM entry and a double-row stored CAM entry for a descending search using differential tags.
TABLE 27
Row
Stored Tag
Stored Data
Store Boundary Bit
0
NH
DataD1-G
T
1
NH
DataD2-G
NT
2
NH
DataD3-G
NT
3
H
DataD4-G
NT
4
NH
DataB1-H
T
5
H
DataB2-H
NT
In operation, the applied search tag is H for the first cycle. Any subsequent cycles required use the NH value for the applied search tag. The order of the applied search data follows the same order as the search directionality. Tables 28-31 show examples of searches using the differential tags described above. Table 28 shows an ascending search for double-row stored search data “F” using differential tags.
TABLE 28
Cycle
Applied Search Data
Applied Search Tag
SC
PEOE
0
DataB1-F
H
1
0
0
1
DataB2-F
NH
0
1
1
Table 29 shows an ascending search for double-row stored search data “F” using differential tags.
TABLE 29
Cycle
Applied Search Data
Applied Search Tag
SC
PEOE
0
DataB2-F
H
1
0
0
1
DataB1-F
NH
0
1
1
Table 30 shows an ascending search for four-row stored search data “H” using differential tags.
TABLE 30
Cycle
Applied Search Data
Applied Search Tag
SC
PEOE
0
DataD1-H
H
1
0
0
1
DataD2-H
NH
0
0
0
2
DataD3-H
NH
0
0
0
3
DataD4-H
NH
0
1
1
Table 30 shows a descending search for four-row stored search data “H” using differential tags.
TABLE 31
Cycle
Applied Search Data
Applied Search Tag
SC
POE
0
DataD4-H
H
1
0
0
1
DataD3-H
NH
0
0
0
2
DataD2-H
NH
0
0
0
3
DataD1-H
NH
0
1
1
In operation 1004, the search data for the search operation is received on the input bus. The search data can be of varying widths, as desired by the user. Wide search data may need to be received over multiple clock cycles depending on the width of the input bus. In addition, generally a field, or Tag, indicating the width of the search data is received along with the search data, as described in greater detail in U.S. patent application Ser. No. 09/654,316, filed Sep. 1, 2000, and entitled “Variable Width Content Addressable Memory Device For Searching Variable Width Data.”
A decision is then made as to whether the search data spans multiple bit pattern rows in CAM memory, in operation 1006. As mentioned previously, data that spans multiple bit pattern rows in CAM memory may be stored and searched using the embodiments of the present invention. If the search data does not span multiple bit pattern rows in CAM memory, the method 1000 continues with operation 1008. Otherwise, the method 1000 continues with operation 1010.
When the search data is not being compared to data spanning multiple bit pattern rows, a search is performed using the received search data in operation 1008. This search is performed as described above with reference to
In operation 1010, a search is performed for the data stored in the portion of the word having the highest address. Specifically, a search is performed using the portion of the search data that is expected to match the highest addressed portion of the word entry. For example, if a word entry spans three bit pattern rows, the portion of the word entry row stored in the last, or third row, of the entry is searched during operation 1010 using the corresponding portion of the search data.
In operation 1012, a search is performed for the data stored in the portion of the word having the next highest address. Similar to operation 1010, a search is performed using the portion of the search data that is expected to match the next highest addressed portion of the word entry. For example, the next highest address portion of a word entry after the third row, is the second row of the entry.
A decision is then made, in operation 1014, as to whether the search data spans additional bit pattern rows. If the search data spans additional bit pattern rows, the method 1000 continues with another operation 1012. Otherwise the method is completed in operation 1016.
Post process operations are performed in operation 1016. Post process operations include post processing of the search results, further search operations, and other post process operations that will be apparent to those skilled in the art. Advantageously, the embodiments of the present invention can perform searches for wide word entries spanning multiple bit pattern entry rows without altering the physical width of CAM memory. Thus, adverse consequences, such as reduced efficiency and increased cost, associated with physically wide CAM memory are avoided using the embodiments of the present invention.
In addition to the wide word CAM systems described above, embodiments of the present invention can provide wide word searching using a match line enable instead of a boundary bit array.
In addition, the CAM system 1100 includes a CAM core 202, which does not include priority encoder. Although the wide word CAM system 1100 is illustrated in
Each CAM core 202 is coupled to the next CAM core 202 via match lines 206. As above, although
The wide word CAM system 1100 further includes a serial AND array 1102. The serial AND array 1102 receives as inputs the match line outputs 206 of the CAM core 202, which does not include a priority, and a match line enable output signal 1108 from a match line enable latch 1106. The match line enable latch 1106 receives a match line enable input signal 1104, and inverts the signal 1104 to generate the match line enable output signal 1108.
The serial AND array 1102, in conjunction with the match line enable latch 1106, allows embodiments of the present invention to perform search operations using words spanning multiple bit pattern rows 208, in addition to variable word widths as described above. As above, the serial AND array 1102 combines the match lines 206 of word entries that span multiple bit pattern rows 208 and synthesizes a match line result 214 that resembles a solution that would occur had there been a very large word comprising a single bit pattern row. Specifically, the serial AND array 1102 comprises a plurality of serial AND computational units, which use the match lines 206 and the match line enable output signal 1108 as inputs to compute a match line result 214 for each word entry regardless of how many bit pattern rows 208 the word entry spans. The match line results 214 from the serial AND array 1102 are provided to the priority encoder 216, which generates the highest priority matching address.
In operation, each serial AND computational unit 1200 synthesizes a match line result 214 that resembles a solution that would occur had there been a very large word comprising a single bit pattern row. More particularly, the serial AND computational units 1200 combine the match lines 206 from bit pattern rows comprising a single word entry, and output the match line result 214 from the serial AND computational unit 1200 corresponding to the bit pattern row of the word entry having the lowest memory address, as described in greater detail below with reference to
In operation, the AND gate 1302 receives the second match line mloi+1 and the match line enable output 1108. The output of the AND gate 1302 is the second match line result 214. In addition, the OR gate 1304 also receives as inputs the second match line mloi+1 and the match line enable output 1108. The output of the OR gate 1304 is provided as input to the AND gate 1300, which also receives the first match line mlo1. The output of the AND gate 1300 is the first match line result 214.
As above, embodiments of the present invention store wide words in a particular fashion in order to perform wide word searches. Tables 32 and 33 below illustrate exemplary wide word storage configurations for performing wide words searches using serial AND computational units 1200 as described with reference to
Table 32 below shows unique width tags associated with two double row stored CAM entries.
TABLE 32
Row
Stored Tag
Stored Data
0
B
DataB1-E
1
B
DataB2-E
2
B
DataB1-F
3
B
DataB2-F
Table 33 below shows unique width tags associated with a double row and a single row stored CAM entries.
TABLE 33
Row
Stored Tag
Stored Data
0
B
DataB1-H
1
B
DataB2-H
2
A
DataA1-C
Similar to previously described methods for search wide words, the methods described with reference to
When the serial AND array is capable of one or two row searching, the CAM array includes a means to search only odd rows, a means to search only even rows, and a means to search all rows simultaneously. By odd rows it is meant that the CAM array includes a means to search entries that correspond to match line i where i is an odd integer, and by even rows it is meant that the CAM array includes a means to search entries that correspond to match line i where i is an even integer. To perform these functions, one embodiment of the present invention includes control signals SS[1:0] to control which rows of the CAM array are searched. For example, these control signals can be configured as shown in table 34.
TABLE 34
Description of CAM Array Operation
SS[1]
SS[0]
No search
0
0
Search Even Rows only
0
1
Leave state of odd rows corresponding match line
output unchanged
Search Even Rows only
1
0
Leave state of odd rows corresponding match line
output unchanged
Search All Rows simultaneously
1
1
All match lines are updated and may change state
As shown in table 34, the state of the control signals SS[1] and SS[0] indicate which rows are to be searched. In addition, the state of the control signals SS[1] and SS[0] indicate which rows are allowed to change state. For example, when SS[1] is “0” and SS[0] is “1” only even rows are searched. In addition, the match line state of the odd rows remains unchanged.
Using the control signals SS[1:0] in conjunction with the tag bits, match line enable output signal, and priority controller control signal (PEOE), embodiments of the present invention can perform word searches for words spanning multiple rows without using a boundary bit array. Tables 35-37, below, illustrate search signals for performing wide word searches using control signals SS[1:0] and a match line enable output. In particular, table 35, below, illustrates exemplary search signals for performing an ascending search of data spanning two rows.
TABLE 35
Cycle
Search Data
Search Tag
SS[1:0]
MLE
MLEN
PEOE
0
DataB1-H
B
01
0
1
0
1
DataB2-H
B
10
1
0
1
Table 36, below, illustrates exemplary search signals for performing a descending search of data spanning two rows.
TABLE 36
Cycle
Search Data
Search Tag
SS[1:0]
MLE
MLEN
PEOE
0
DataB2-H
B
10
0
1
0
1
DataB1-H
B
01
1
0
1
Finally, table 37, below, illustrates exemplary search signals for performing an ascending or descending search of data spanning a single row.
TABLE 37
Cycle
Search Data
Search Tag
SS[1:0]
MLE
MLEN
PEOE
0
DataA1-C
A
11
0
1
1
In addition to facilitating wide word searching with reduced logic, the capability to search only odd or even rows also greatly reduces the power utilized by the CAM. By only searching half of the CAM array for the first cycle of a two row wide word search, a significant power savings occurs. Similarly, only the other half of the CAM array is searched on the second cycle of a two row wide word search, which achieves similar power savings.
The present invention may be implemented using any type of integrated circuit logic, state machines, or software driven computer-implemented operations. By way of example, a hardware description language (HDL) based design and synthesis program may be used to design the silicon-level circuitry necessary to appropriately perform the data and control operations in accordance with one embodiment of the present invention.
The invention may employ various computer-implemented operations involving data stored in computer systems. These operations are those requiring physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. Further, the manipulations performed are often referred to in terms, such as producing, identifying, determining, or comparing.
Any of the operations described herein that form part of the invention are useful machine operations. The invention also relates to a device or an apparatus for performing these operations. The apparatus may be specially constructed for the required purposes, or it may be a general purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
Further, although embodiments of the present invention have been described with specific logical values for various logical statements and states, it should be noted that the embodiments of the present invention are not be limited to these specific logical values for various logical statements and states. In particular, the specific logical values can be changed to better suit a particular design. For example, specified logical values of “0” and “1” can be reversed to better suit the logical design of a particular application.
Additionally, the various block diagrams may be embodied in any form which may include, for example, any suitable computer layout, semiconductor substrate, semiconductor chip or chips, printed circuit boards, packaged integrated circuits, or software implementations (and combinations thereof). Accordingly, those skilled in the art will recognize that the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.
Gupta, Sanjay, Podaima, Jason Edward, Avramescu, Radu, Gibson, Randall
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5179640, | Feb 01 1990 | Oce Graphics USA Inc. | Generating repeating patterns from a pattern header |
6392910, | Sep 10 1999 | INNOMEMORY LLC | Priority encoder with multiple match function for content addressable memories and methods for implementing the same |
6526474, | Oct 25 1999 | Cisco Technology, Inc | Content addressable memory (CAM) with accesses to multiple CAM arrays used to generate result for various matching sizes |
6553453, | Sep 10 1999 | INNOMEMORY LLC | Variable width content addressable memory device for searching variable width data |
6633953, | Feb 08 2000 | HYWIRE LTD | Range content-addressable memory |
6674660, | Jan 07 2002 | UniRAM Technology, Inc. | Methods for saving power and area for content addressable memory devices |
6862655, | Oct 01 2002 | Xylon LLC | Wide word search using serial match line computation in content addressable memory |
20030231630, | |||
20040093462, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Sep 24 2002 | PODAIMA, JASON EDWARD | SIBERCORE TECHNOLOGIES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 019509 | /0235 | |
Sep 24 2002 | GUPTA, SANJAY | SIBERCORE TECHNOLOGIES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 019509 | /0235 | |
Sep 24 2002 | GIBSON, G F RANDALL | SIBERCORE TECHNOLOGIES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 019509 | /0235 | |
Sep 24 2002 | AVRAMESCU, RADU | SIBERCORE TECHNOLOGIES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 019509 | /0235 | |
Aug 18 2005 | SIBERCORE TECHNOLOGIES, INC | Core Networks LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 019509 | /0239 | |
Feb 14 2007 | Core Networks LLC | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Oct 15 2012 | REM: Maintenance Fee Reminder Mailed. |
Mar 03 2013 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Sep 06 2014 | 4 years fee payment window open |
Mar 06 2015 | 6 months grace period start (w surcharge) |
Sep 06 2015 | patent expiry (for year 4) |
Sep 06 2017 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 06 2018 | 8 years fee payment window open |
Mar 06 2019 | 6 months grace period start (w surcharge) |
Sep 06 2019 | patent expiry (for year 8) |
Sep 06 2021 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 06 2022 | 12 years fee payment window open |
Mar 06 2023 | 6 months grace period start (w surcharge) |
Sep 06 2023 | patent expiry (for year 12) |
Sep 06 2025 | 2 years to revive unintentionally abandoned end. (for year 12) |