A mixed serial-parallel content addressable memory (cam) includes serial cam cells and parallel cam cells that are arranged in multiple (N) columns and multiple (M) rows. Each row includes at least one serial cam cell and at least two parallel cam cells. The M rows are searched in parallel. For each row, the serial cam cells are searched sequentially, and the parallel cam cells are selectively searched in parallel. The cam further includes a driver that generates search lines for the N columns of cam cells, one search line per column. The driver sets the search lines to an N-bit value to search for in the cam. Prior to each search operation, the driver presets at least one search line for at least one column of serial cam cells to precharge a match line for each row.
|
1. An integrated circuit comprising:
a plurality of serial content addressable memory (cam) cells and a plurality of parallel cam cells arranged in a plurality of rows and a plurality of columns, each row comprising at least one serial cam cell and at least two parallel cam cells; and
a driver configured to generate a plurality of search lines for the plurality of columns and to preset at least one search line for at least one column of serial cam cells prior to each search operation, wherein search lines for columns of parallel cam cells are not preset.
16. A method of searching a content addressable memory (cam) comprised of a plurality of rows of cam cells, each row comprising at least one serial cam cell and at least two parallel cam cells, the method comprising:
for each of the plurality of rows of cam cells,
presetting at least one search line for at least one serial cam cell in the row for precharging a match line for the at least two parallel cam cells in the row, wherein search lines for columns of parallel cam cells are not preset,
searching the at least one serial cam cell in the row in a sequential order, and
selectively searching the at least two parallel cam cells in the row in parallel.
22. An apparatus comprising:
means for searching a content addressable memory (cam) comprised of a plurality of rows of cam cells, each row comprising at least one serial cam cell and at least two parallel cam cells, the means for searching the cam comprising, for each of the plurality of rows of cam cells,
means for presetting at least one search line for at least one serial cam cell in the row to precharge a match line for the at least two parallel cam cells in the row, wherein search lines for columns of parallel cam cells are not preset,
means for searching the at least one serial cam cell in the row in a sequential order, and
means for selectively searching the at least two parallel cam cells in the row in parallel.
14. An integrated circuit comprising:
a cache memory configured to store data and comprising
a content addressable memory (cam) configured to store addresses for the data and comprising a plurality of serial cam cells, a plurality of parallel cam cells, and a driver, wherein the plurality of serial cam cells and the plurality of parallel cam cells are arranged in a plurality of rows and a plurality of columns, wherein each row comprises at least one serial cam cell and at least two parallel cam cells, wherein the driver is configured to generate a plurality of search lines for the plurality of columns of cam cells and to preset at least one search line for at least one column of serial cam cells prior to each search operation, and wherein search lines for columns of parallel cam cells are not preset, and
a random access memory (RAM) configured to store the data; and a processor configured to access the cache memory for the data.
3. The integrated circuit of
a plurality of buffer circuits, one buffer circuit for each row, each buffer circuit coupled between second and third serial cam cells in an associated row.
4. The integrated circuit of
5. The integrated circuit of
6. The integrated circuit of
7. The integrated circuit of
a plurality of match lines for a plurality of rows of parallel cam cells, the plurality of match lines being precharged prior to each search operation by the presetting of the at least one search line.
8. The integrated circuit of
a plurality of virtual ground lines for a plurality of rows of parallel cam cells, one virtual ground line for each row of parallel cam cells, each virtual ground line being controlled to enable or disable an associated row of parallel cam cells.
9. The integrated circuit of
10. The integrated circuit of
11. The integrated circuit of
12. The integrated circuit of
13. The integrated circuit of
15. The integrated circuit of
17. The method of
searching the plurality of rows of cam cells in parallel.
18. The method of
presetting a search line for a last serial cam cell in the row to precharge the match line for the at least two parallel cam cells in the row.
19. The method of
searching the at least two parallel cam cells in the row only if the at least one serial cam cell in the row match.
20. The method of
searching the at least two parallel cam cells in the row in parallel and concurrently with the searching of the at least one serial cam cell in the row.
21. The method of
for each of the plurality of rows of cam cells,
controlling a virtual ground line for the at least two parallel cam cells in the row to enable or disable the searching of the at least two parallel cam cells.
23. The apparatus of
means for searching the at least two parallel cam cells in the row only if the at least one serial cam cell in the row match.
24. The apparatus of
means for searching the at least two parallel cam cells in the row in parallel and concurrently with the means for searching of the at least one serial cam cell in the row.
|
I. Field
The present disclosure relates generally to electronic circuits, and more specifically to a content addressable memory.
II. Background
A content addressable memory (CAM) is an array of memory cells and associated comparison circuits. These comparison circuits allow for fast searches of the contents of the memory array. All of the rows of the memory array may be searched/evaluated in parallel to determine whether or not an input value matches the value stored in any of the rows. Each row is associated with a respective match line that indicates the search result for that row. The match line for each row that matches the input value is asserted (e.g., to logic high) to indicate a match, and the match line for each row that does not match the input value is de-asserted (e.g., to logic low) to indicate a mismatch.
CAM is used for various applications such as, e.g., a cache memory. The cache memory may be accessed faster than other types of memory and is used to store data that is more likely to be accessed by a processor. The cache memory may include a random access memory (RAM) that stores the data and a CAM that stores the addresses of the data. To determine whether a given word of data is stored in the cache-memory, the CAM is searched to determine whether the address of this word matches any of the addresses stored in the CAM. If there is a match, then the desired word may be retrieved from the RAM for use.
The CAM may be searched extensively, e.g., for each processor instruction with a memory access. Hence, the performance of the CAM typically has a large impact on the performance of the processor. Fast search speed may be achieved by searching all of the rows of the CAM in parallel. However, the parallel search consumes a large amount of power, which is undesirable for many applications.
There is therefore a need in the art for a CAM with high performance and lower power consumption.
A mixed serial-parallel CAM that is capable of achieving high performance and lower power consumption is described herein. The CAM includes serial CAM cells and parallel CAM cells that are arranged in multiple (N) columns and multiple (M) rows. Each row includes at least one serial CAM cell, at least two parallel CAM cells, and a match line and a virtual ground line for the parallel CAM cells in that row. The M rows are searched in parallel. For each row, the serial CAM cells are searched sequentially, and the parallel CAM cells are selectively searched in parallel. For each row, the parallel CAM cells may be searched in parallel (1) only if the serial CAM cells match, which reduces power consumption, or (2) concurrently with the searching of the serial CAM cells, which improves search speed. The virtual ground line for each row is controlled to enable or disable the searching of the parallel CAM cells in that row.
The CAM further includes a driver that generates N search lines for the N columns of CAM cells, one search line per column. The driver sets the N search lines to an N-bit value to search for in the CAM. Prior to each search operation, the driver presets at least one search line for at least one column of serial CAM cells to precharge the match line for each row. Presetting refers to setting or forcing a line to a predetermined logic value (e.g., logic low). For example, if each row includes four serial CAM cells, then the driver may preset the search line for the second CAM cell or the fourth CAM cell in the row, as described below. The presetting of at least one search line avoids the need for a timing signal for the serial CAM section. The omission of this timing signal may improve search speed.
Various aspects and embodiments of the invention are described in further detail below.
The features and nature of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings in which like reference characters identify correspondingly throughout.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or designs.
Search line driver 140 receives the input address and generates the search lines for the N columns of CAM cells. Output circuits 150 receive the match lines for the M rows and provide the desired output. For example, output circuits 150 may perform encoding and provide a K-bit value that indicates a specific row that matches the input address, where K=log2 ┌M┐ and ┌ ┐ denotes a ceiling operation.
In general, a CAM may be designed to perform parallel search, serial search, or mixed serial-parallel search. For all three search schemes, all M rows of the CAM array may be searched in parallel to look for any matches with the input address. For the parallel search scheme, all N bits of each row are searched in parallel to determine whether that row matches the input address. The parallel search scheme provides the search results in the shortest amount of time among the three schemes but consumes the most power because of the parallel comparisons. For the serial search scheme, the N bits of each row are searched in a sequential order, typically starting with the least significant bit (LSB). The serial search for each row terminates once a mismatch between an input address bit and a stored bit is detected. The serial search scheme consumes the least amount of power among the three schemes because another stored bit is compared only if all preceding stored bits match their corresponding address bits. However, the serial search scheme provides the search results in the longest amount of time among the three schemes because of the serial comparisons. The mixed serial-parallel search scheme performs a serial search for some number of bits and a parallel search for the remaining bits to obtain both high speed and lower power consumption. The mixed serial-parallel scheme is described below.
For the embodiment shown in
Comparison circuit 220x includes three N-FETs 222, 224 and 226, and a P-channel FET (P-FET) 228. N-FETs 222 and 224 have their gates coupled to data line q and complementary data line qb, respectively, their sources coupled to a search line s and a complementary search line sb, respectively, and their drains coupled together and further to the gates of FETs 226 and 228. N-FET 226 has its source coupled to an input match line match_in and its drain coupled to an output match line match_out. P-FET 228 has its source coupled to the output match line and its drain coupled to a supply voltage VDD.
Comparison circuit 220x operates as follows. Differential search line, s and sb, is set to the value of an address bit. If the address bit matches the data bit stored in memory cell 210, then search line s matches data line q, complementary search line sb matches complementary data line qb, either N-FET 222 or 224 is turned ON, and node eq is pulled to logic high by the N-FET that is turned ON. The logic high on node eq turns OFF P-FET 228 and turns ON N-FET 226, which passes the logic value on the input match line to the output match line. Alternatively, if the address bit does not match the stored data bit, then either N-FET 222 or 224 is turned ON, node eq is pulled down to logic low by the N-FET that is turned ON, N-FET 226 is turned OFF, P-FET 228 is turned ON, and the output match line is pulled up to logic high. Comparison circuit 220x thus passes the logic value on the input match line to the output match line if there is a match and provides a high logic value on the output match line if there is a mismatch.
A P-FET 256 is used to precharge the match line. P-FET 256 has its drain coupled to the supply voltage VDD, its source coupled to the match line, and its gate coupled to a preset line pre.
Comparison circuit 240x operates as follows. Prior to performing a search on a row of CAM cells, the pre line is brought to logic low, P-FET 256 is turned ON, the match line is precharged to the supply voltage VDD, the pre line is then brought to logic high, and P-FET 256 is turned OFF. Differential search line, s and sb, is set to an address bit value. If the address bit matches the stored data bit, then either N-FET 242 or 244 is turned ON and pulls node eq to logic low, N-FET 246 is turned OFF, and the match line is not pulled down to the virtual circuit ground. Alternatively, if the address bit does not match the stored data bit, then either N-FET 242 or 244 is turned ON and pulls node eq to logic high, N-FET 246 is turned ON, and the match line is pulled down to the virtual circuit ground. Any CAM cell that does not match pulls down the match line to logic low. If all CAM cells in the row match, then the match line remains in the precharged (logic high) state.
For the parallel search scheme, the match lines for all M rows are precharged prior to performing a search. Typically, only one row (if any) matches the input address, and the match line for this row remains at logic high. All other rows do not match, and the match lines for these rows are discharged to logic low. Each row has a relatively large parasitic capacitance. The continual precharging and discharging of the highly capacitive match lines results in high power consumption for the parallel search scheme.
For the serial search scheme, the input match line for the leftmost (or LSB) serial CAM cell in each row is set to logic low. All M rows are searched in parallel, but only one bit is searched at a time for each row until there is a mismatch or all bits in the row are searched. Power consumption is reduced since a highly capacitive match line is not discharged when there is a mismatch for any given bit. However, search speed is slower and depends on the number of CAM cells in the row. Furthermore, timing signals are typically needed to control the sequential search of the bits in each row.
The mixed serial-parallel search scheme attempts to obtain both low power consumption and high search speed. The probability of a match for any given bit may be assumed to be 50%. If the bits in each row are independent, which is generally true for the lesser significant bits, then the probability of a match after n bits is (½)n, and the probability of a mismatch after n bits is 1−(½)n. For example, the probability of a mismatch is 75% after two bits, 87.5% after three bits, 93.75% after four bits, and so on. A serial search may be performed for a small number of bits (e.g., four bits) to obtain low power consumption. After searching this small number of bits, most rows will not match, and a parallel search may be performed for the remaining bits in each row that matches the serial portion.
The four serial CAM cells 120a through 120d are arranged into two pairs to limit the number of pass transistors 226 that are coupled in series and to reduce the parasitic capacitance on the input and output match lines between the serial CAM cells. Fewer pass transistors 226 reduce the voltage drop across these transistors when they are turned ON. Lower parasitic capacitance improves the transient response of the input and output match lines, which allows for faster propagation time and higher operating speed. A NOR gate 330 receives output match line m2b from CAM cell 120b and a preB signal and drives the gates of an N-FET 332 and a P-FET 334. N-FET 332 has its source coupled to circuit ground and its drain coupled to the input match line for serial CAM cell 120c. P-FET 334 has its source coupled to circuit ground and its drain coupled to output match line m4b for CAM cell 120d. An inverter 340 receives output match line m4b from CAM cell 120d and provides a match line for the serial section, match_s. N-FETs 342 and 344 have their gates coupled to the output of inverter 340 and to a par line, respectively, their sources coupled to circuit ground, and their drains coupled to a virtual circuit ground for the parallel section, match_gnd. A NAND gate 350 receives output match line m4b from CAM cell 120d and a parB signal. P-FETs 352 and 354 have their gates coupled to the output of NAND gate 350 and to the pre line, respectively, their sources coupled to a match line for the parallel section, match_p, and their drains coupled to the supply voltage VDD. An AND gate 360 receives the match lines for the serial and parallel sections, match_s and match_p, and provides the match line for the row.
A large portion of the total power consumption for a CAM is typically due to the continual precharging and discharging of the match lines and the continual precharging and discharging of the search lines. Power consumption may be reduced by searching only a small percentage of rows in which the serial sections match, as noted above. In this case, the match lines for only a small percentage of rows are precharged and discharged. Power consumption may also be reduced by not precharging and discharging the search lines. Typically, search line s and complementary search line sb are both preset to logic low while the match lines are being precharged in order to avoid shorting the supply voltage VDD to circuit ground, e.g., via P-FET 256 and N-FET 246 shown in
The architecture shown in
For the sequential mode, the par signal is at logic low, and the parB signal is at logic high. N-FET 344 is turned OFF, the match_gnd line is controlled by N-FET 342, and the output of NAND gate 350 is equal to the match_s line. If all of the serial CAM cells match, then the match_s line is at logic high, and the match_gnd line is pulled down to logic low. Conversely, if the serial CAM cells do not match, then the match_s signal is at logic low, P-FET 352 is turned ON, and the match_p line is precharged.
For the parallel mode, the par signal is at logic high, and the parB signal is at logic low. N-FET 344 is turned ON, the match_gnd line is pulled down to logic low at all times, and the parallel section is operational while the serial search is being performed. The output of NAND gate 350 is at logic high, P-FET 352 is turned OFF, and the match_p line is precharged via P-FET 354 with the pre signal.
The mixed serial-parallel search for row 300 may be performed as follows. A serial search is performed over the serial section, either sequentially one CAM cell at a time, starting with CAM cell 120a, or in parallel for all CAM cells in the serial section. Each serial CAM cell passes the search result from a prior serial CAM cell if there is a match and passes logic high if there is a mismatch.
If all serial CAM cells 120a through 120d match, then output match line m4b from CAM cell 120d is at logic low, the output of inverter 340 is at logic high, N-FET 342 is turned ON, and the match_gnd line is pulled down to circuit ground. The match_p line is precharged during a prior search, and the CAM cells in the parallel section are enabled when the match_gnd line is at circuit ground. If all parallel CAM cells 122 match, then the match_p line remains at logic high. The output of AND gate 360 is logic high if the serial and parallel sections both match.
Conversely, if any one of serial CAM cells 120a through 120d does not match, then output match line m4b from CAM cell 120d is at logic high, the output of inverter 340 is at logic low, N-FET 342 is turned OFF, the match_gnd line floats, and the parallel section is disabled. The parB line is at logic high for the sequential mode, and the logic low on the m4b line results in a logic low at the output of NAND gate 350. P-FET 352 is turned ON and precharges the match_p line. If the parallel section was not enabled in the prior search because all of the serial CAM cells did not match, then P-FET 352 only needs to replace a small amount of charge that may have leaked since the prior precharge.
If the match_p line is only precharged when there is a mismatch for the serial CAM cells, then the match_p line may be erroneous in certain situations. One such situation is a case in which the serial CAM cells match and the parallel CAM cells do not match for a given search; and the match_p line is not precharged as described above. If both the serial CAM cells and the parallel CAM cells match in the next search, then the parallel section may erroneously declare a mismatch because the match_p line was not precharged in the prior search. To avoid erroneous detection for the case described above, the match_p line may be precharged prior to each search with the preB signal. This precharge may be achieved by providing a logic high on the preB line, which results in a logic low at the output of NOR gate 330. The logic low from NOR gate 330 turns on P-FET 334 and forces a logic high on the m4b line, which turns on P-FET 352 and precharges the match_p line.
The preB line also prevents the match_gnd line from being set to logic low during precharging of the match_p line. If the preB line is not present and the m2b line is at logic low, then the output of NOR gate 330 is at logic high, N-FET 332 is turned ON, the input match line for serial CAM cell 120c is at logic low, the m4b line may be at logic low, and the match_s line may be at logic high, which would then bring the match_gnd line to logic low. The parallel section would then be enabled and may short match_p line, which is being precharged to the supply voltage VDD. If the preB line is present and set to logic high during precharging, then the match_gnd line is prevented from being pulled down to logic low. The floating match_gnd line disables the parallel section during precharging of the match_p line.
The preB signal is generated with sufficient timing margin to ensure that NOR gate 330 provides the desired logic value for precharging. In particular, the logic state of the m2b signal should be settled before the preB line is asserted in order to ensure a valid output from NOR gate 330. This timing margin for the preB line limits the speed at which the serial section may be searched, which limits the speed at which the entire row of CAM cells may be searched.
The mixed serial-parallel search for row 400 may be performed as follows. Prior to performing the search, the match_p line is precharged by presetting the search line for the second serial CAM cell 120b, so that the s2 and s2b lines are both at logic low. The logic low on the s2 and s2b lines turns on either N-FET 222b or 224b, which brings the eq2 node to logic low. The logic low on the eq2 node turns ON P-FET 228b, which pulls the m2b line to logic high and forces the output of inverter 430 to logic low. The logic low at the output of inverter 430 turns ON P-FET 334, which pulls the m4b line to logic high, forces the output of inverter 340 to logic low, and sets the output of NAND gate 350 to logic low. The logic low at the output of inverter 340 turns OFF N-FET 342, which causes the match_gnd line to float. The logic low at the output of NAND gate 350 turns ON P-FET 352, which precharges the match_p line. After precharging the match_p line, the s2 and s2b lines for serial CAM cell 120b are released and take on the value of the second input address bit. The serial search may then be performed for the serial section as described above for
For the embodiment shown in
For the embodiment shown in
The CAM described herein may be used for various applications. One exemplary application for the CAM is described below.
Wireless device 800 is capable of providing bi-directional communication via a receive path and a transmit path. For the receive path, signals transmitted by base stations are received by an antenna 812 and provided to a receiver unit (RCVR) 814. Receiver unit 814 conditions (e.g., filters, amplifies, and frequency downconverts) the received signal, digitizes the conditioned signal, and provides data samples to an application specific integrated circuit (ASIC) 820 for further processing. For the transmit path, data to be transmitted from wireless device 800 is provided by ASIC 820 to a transmitter unit (TMTR) 816. Transmitter unit 816 conditions (e.g., filters, amplifies, and frequency upconverts) the data and generates a modulated signal, which is transmitted via antenna 812 to the base stations.
ASIC 820 includes various units such as, for example, a microprocessor 822, a digital signal processor (DSP) 824, and a cache memory 826. Microprocessor 822 performs general-purpose processing and may be a reduced instruction set computer (RISC) or some other type of processor. DSP 824 performs data processing for the transmit path (e.g., encoding, interleaving, modulation, code channelization, spectral spreading, filtering, and so on) and the receive path (e.g., filtering, despreading, channelization, demodulating, deinterleaving, decoding, and so on). The processing to be performed by DSP 824 is dependent on the communication system. Cache memory 830 stores data and/or program codes for microprocessor 822 and/or DSP 824. Cache memory 830 may include a CAM 832 that stores addresses for the data and/or program codes and a RAM 834 that stores the data and/or program codes. CAM 832 may be implemented based on any of the CAM designs described herein or some other CAM design. A controller 840 controls the operation of ASIC 820 and other units within wireless device 800. A main memory 842 stores program codes and data used by controller 840.
The CAM described herein may be implemented in various hardware units such as an ASIC, a DSP, a digital signal processing device (DSPD), a programmable logic device (PLD), a field programmable gate array (FPGA), a controller, a processor, and other electronic devices. The CAM may also be fabricated in various IC process technologies such as CMOS, N-MOS, P-MOS, bipolar-CMOS (Bi-CMOS), bipolar, and so on. CMOS technology can fabricate both N-FETs and P-FETs on the same integrated circuit (IC) die, whereas N-MOS technology can only fabricate N-FETs and P-MOS technology can only fabricate P-FETs. The CAM may be fabricated using any device size technology (e.g., 130 nanometer (nm), 65 nm, 30 nm, and so on).
The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
Jung, Seong-Ook, Yoon, Sei Seung
Patent | Priority | Assignee | Title |
8773880, | Jun 23 2011 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Content addressable memory array having virtual ground nodes |
8837188, | Jun 23 2011 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Content addressable memory row having virtual ground and charge sharing |
Patent | Priority | Assignee | Title |
5574875, | Mar 13 1992 | SGS-Thomson Microelectronics Limited | Cache memory system including a RAM for storing data and CAM cell arrays for storing virtual and physical addresses |
5602795, | Jan 12 1994 | Sun Microsystems, Inc. | Method and apparatus for implementing a high-speed dynamic line driver |
5978246, | Sep 08 1997 | NEC Electronics Corporation | Content addressable memory device |
20030219034, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Sep 30 2005 | Qualcomm Incorporated | (assignment on the face of the patent) | / | |||
Nov 29 2005 | YOON, SEI SEUNG | QUALCOMM INCORPORATED A DELWARE CORPORATION | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 017081 | /0770 | |
Nov 29 2005 | JUNG, SEONG-OOK | QUALCOMM INCORPORATED A DELWARE CORPORATION | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 017081 | /0770 |
Date | Maintenance Fee Events |
Jan 25 2013 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Jan 26 2017 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Jan 15 2021 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 18 2012 | 4 years fee payment window open |
Feb 18 2013 | 6 months grace period start (w surcharge) |
Aug 18 2013 | patent expiry (for year 4) |
Aug 18 2015 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 18 2016 | 8 years fee payment window open |
Feb 18 2017 | 6 months grace period start (w surcharge) |
Aug 18 2017 | patent expiry (for year 8) |
Aug 18 2019 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 18 2020 | 12 years fee payment window open |
Feb 18 2021 | 6 months grace period start (w surcharge) |
Aug 18 2021 | patent expiry (for year 12) |
Aug 18 2023 | 2 years to revive unintentionally abandoned end. (for year 12) |