Analog content-addressable memory with analog input and analog output
The analog content-addressable memory (aCAM) addresses the limitations of digital CAMs by using memristors to represent value ranges, enabling efficient parallel searching and fuzzy matching, enhancing search accuracy and density.
Patent Information
- Application Number
- DE102021125927
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-04-30
- Filing Date
- 2021-10-06
- Publication Date
- 2025-01-02
- Estimated Expiration
- 2041-10-06
AI Technical Summary
Existing digital content-addressable memories (CAMs) face challenges in performing fuzzy searches and determining the degree of match between input and stored data, as they rely on exact matches and struggle with handling ranges of acceptable matches or Hamming distances.
Analog content-addressable memory (aCAM) that uses memristors to represent stored value ranges, allowing for parallel searching of analog value ranges and producing analog outputs that quantify matches, including fuzzy search capabilities and support for 'Don't Care' values.
aCAM enables efficient parallel searching and matching of analog input values within defined ranges, providing a higher storage density and the ability to perform fuzzy searches, improving search efficiency and accuracy compared to digital CAMs.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
Description of the state of the art
[0001] Content-addressable memory ("CAM") is computer memory in which stored data is accessed based on its content rather than its address. This distinguishes CAM from other types of computer memory, such as random-access memory (RAM), which access stored data based on its address. CAM is generally faster than RAM and other types of computer memory in search applications and is widely used in various technologies, such as computer networking. For example, in computer networking technologies, CAM is widely used in forwarding operations, routing operations, and cache memory applications. CAM has a wide range of applications in computer technology. Therefore, improvements in CAM provide improvements in computer technology.
[0002] LI, C.; GRAVES, CE; SHENG, X.; et al.: “Analog content-addressable memories with memristors”, Nature Communications, No. 11, 1638 (2020) describes the generation of a match line voltage VML.
[0003] Against this background, the object of the present invention is to provide improved analog, content-addressable memories (aCAM) and an improved method for generating a match line voltage in an analog, content-addressable memory (aCAM), which at least partially eliminates the disadvantages of the prior art.
[0004] This object is achieved by a method according to independent claim 1, a content-addressable memory according to independent claim 7, and a system according to independent claim 13. Preferred embodiments are the subject of the respective dependent claims. Brief description of the drawings
[0005] The present disclosure will be described in detail in accordance with one or more various embodiments with reference to the following figures. The figures are for illustrative purposes only and represent merely typical or exemplary embodiments. Fig. 1A shows a block diagram of an example content addressable memory (CAM) in accordance with various embodiments. Fig. 1B is a diagram of an example addressable analog memory (aCAM) cell configured to store an analog range of values in accordance with various embodiments. Fig. Figure 1C shows an example of an analog value range that can be stored in an aCAM cell according to various embodiments. Fig. 2A is a diagram of an exemplary aCAM cell configured to provide an analog output in accordance with various embodiments. Fig. Figure 2B shows an example diagram showing the relationship between the current on a match line (I ML ) and the voltage on a data line (V DL ) in accordance with various embodiments. Fig. Figure 3A shows an example diagram showing the relationship between the voltage on a match line (V ML ) and time in accordance with various embodiments. Fig. Figure 3B shows example implementations of CAMs with analog outputs in accordance with various embodiments. Fig. 4 is a block diagram of an example computing component or device 400 for searching analog value ranges and generating analog outputs that quantify matches between input data and stored data, according to various embodiments. Fig. 5 is an example of a computing component that may be used to implement various features of the embodiments described in the present disclosure.
[0006] The figures are not exhaustive and do not limit the present disclosure to the precise form disclosed. Detailed description
[0007] One way content-addressable memories (CAMs) provide faster performance in search applications is by performing search operations in their memory in parallel. When provided with input (e.g., an input search word), the CAMs perform the search for the input in their memory in parallel. The input is compared with the stored data in the CAMs, and the address of the stored data that matches the input is returned. Because the search for the input is performed in parallel, a CAM-based search system can perform searches faster than, for example, an iterative search system that iteratively searches its memory.
[0008] While CAMs offer several advantages over other types of computer memory, the use of CAMs presents various technical challenges. Some of these technical challenges relate to the use of digital CAMs, such as binary CAMs (BCAMs) and ternary CAMs (TCAMs). In general, BCAMs accept binary inputs of "0" and "1" and perform exact match searches of the binary inputs. TCAMs accept binary inputs like BCAMs and an additional "x" or "don't care" input. Similar to BCAMs, TCAMs perform exact match searches, where the additional "x" or "don't care" input produces a match regardless of whether the corresponding bit is a "0" or a "1." Because digital CAMs, such as BCAMs and TCAMs, rely on exact matches, systems that rely on digital CAMs face various technical challenges.These technical challenges include, for example, finding a range of acceptable matches, as in a fuzzy search application, or determining the degree to which an input matches stored data in memory (e.g., Hamming distance).
[0009] Accordingly, an analog content-addressable memory (aCAM) is disclosed that addresses the various technological challenges described herein. In various embodiments, an aCAM enables parallel searching of analog value ranges and generates analog outputs that quantify matches between input data (e.g., input search words) and stored data (e.g., stored words). An input search word may include one or more input search values. A stored word may include one or more stored values or, in some cases, stored value ranges. In one embodiment, an aCAM may include a set of memory cells arranged on a match line. The memory cells of the aCAM may be used to represent a stored word.Each memory cell of the aCAM may represent a stored value or a stored range of values of the stored word. As further described herein, an analog signal (e.g., an analog input) may be a signal comprising a continuous range of time-varying values. This is in contrast, for example, to a binary digital signal containing discrete 0s and 1s. In one embodiment, a memory cell of an aCAM may represent a stored range of values of a stored word. The memory cell may include two memristors that determine the stored range of values of the stored word. The conductances of the two memristors may be set to represent a lower voltage limit and an upper voltage limit of an analog voltage range for the memory cell.The upper voltage range and the lower voltage range may represent the stored value range of the stored word. In one embodiment, an input search word may be provided via a match line of an aCAM representing a stored word. A voltage associated with an input search value of the input search word may be received at a memory cell of the aCAM via the match line. The input search value may be compared to a stored value range represented by the memory cell based on a voltage of the input search value and an analog voltage range for the memory cell. The input search value may be determined to match the stored value range if the voltage is within the analog voltage range for the memory cell.The input search value can be determined to not match the stored value range if the voltage is outside the analog voltage range for the memory cell. In this way, input search values of the input search word can be compared with memory cells representing stored value ranges of the stored word. The aCAM can generate an analog output representing a number of matches between the input search values of the input search word and the stored value ranges of the stored word. Based on the analog output, it can be determined whether the input search word matches the stored word and to what extent the input search word matches the stored word (e.g., Hamming distance).As illustrated in this embodiment, an aCAM may be configured to receive an analog input and generate an analog output indicating a match between the analog input and stored data and indicating a degree to which the analog input and stored data match, as further described herein.
[0010] Fig. 1A shows a block diagram of an example of a content-addressable memory (CAM) 100 in accordance with various embodiments. In some cases, the CAM 100 may be used in a digital application in which a digital input search word is provided to the CAM 100 and a digital output indicates a match between the digital input search word and a digital stored word. In some cases, the CAM 100 may be used in an analog application in which an analog input search word is provided to the CAM 100 and an analog output indicates a match between the analog input search word and an analog stored word and indicates a degree to which the analog input search word and the analog stored word match. As shown in Fig. 1A, the CAM 100 may include a memory array 102. The memory array 102 stores the stored words 0 through 2-1. Each stored word in the memory array 102 contains one or more stored values. In some cases, the stored values may be analog stored values or a range of stored values. The CAM 100 may include a search data register 112. The search data register 112 may be loaded with a search word 114. The search word 114 may be a digital input search word or an analog input search word. The search word 114 may be n bits. When performing a search, the search word 114 is loaded into the search data register 112 and communicated to the memory array 102 via a set of search lines 110. The input search word is searched among the stored words of the memory array 102.Each memory cell in the memory cell array 102 can indicate whether a value of the search word 114 matches a stored value in the memory cell. In some cases, a memory cell in the memory cell array 102 can indicate whether an analog value of the search word 114 matches a stored analog value or is within a stored analog range in the memory cell. The information regarding whether the memory cells in the memory cell array 102 contain matches to the search word 114 is communicated to an encoder 108 via a set of match lines 104. When performing a search, a match line can be charged to a threshold voltage. The match line discharges with each deviation indicated by memory cells on the match line.Based on the matches or mismatches communicated over the set of match lines 104, the encoder 108 outputs a match location 106. The match location 106 may indicate an address or location associated with a stored word that matches the search word 114.
[0011] Fig. 1B is a diagram of an example analog addressable memory (aCAM) cell 130 configured to store an analog range of values in accordance with various embodiments. As shown in Fig. 1B, the aCAM cell 130 includes six transistors (T1-T6) and two memristors (M1-M2). The transistors may include various combinations of n-type and p-type transistors. As a non-limiting example, the transistors may include five n-type metal-oxide-semiconductor field-effect transistors (MOSFETs) and one p-type MOSFET. Other transistor types with a variety of semiconductor materials may also be used. In various embodiments, an input search value is set to a voltage amplitude V DL , which is applied via a data line 142. The data line 142 can also be connected to other aCAM cells. The aCAM cells on the data line 142 can store values or ranges of values associated with different stored words. The voltage V DL along the data line 142 is converted into the voltages V DL1 and V DL2and fed to the divider subcircuits 136, 138. The aCAM cell 130 can store an upper limit and a lower limit for comparison with the input search value. The upper limit can be a conductance G M1 of the memristor M1, and the lower limit can be a conductance G M2 of the memristor M2. The conductance values G M1 and G M2 form a lower stress limit f (G M1 ) and an upper voltage limit f (G M2 ) of an analog voltage range 132, which represents a continuous analog range of values stored in the aCAM cell 130. In other words, the lower limit of the analog value range stored in the aCAM cell 130 corresponds to the lower voltage limit defined by the conductance G M1of the memristor M1, and the upper limit of the analog value range stored in the aCAM cell 130 corresponds to the upper voltage limit determined by the conductance G M2 of the memristor M2.
[0012] As in Fig. 1B, aCAM cell 130 may be connected to a match line 138. aCAM cell 130 may be connected to other aCAM cells on match line 138. The aCAM cells on match line 138 may store values or ranges of values associated with a stored word. In various embodiments, a search operation may begin by precharging match line 138 to a high logic level (e.g., a high voltage). Match line 138 will remain at the high voltage (indicating a match) if all aCAM cells connected to match line 138 match their corresponding input values. If a search input value does not match a stored value in a corresponding aCAM cell, the cell may discharge match line 138, resulting in a low logic level on match line 138.The low logic level on the match line 138 may indicate a deviation.
[0013] In various embodiments, a lower and an upper voltage limit are encoded by the voltage divider subcircuits 134, 136. The voltage divider subcircuits 134, 136 determine the gate voltages of the pull-down transistors T2 and T6, which are connected to the match line 138. The voltage divider subcircuit 134 includes a transistor T1 and a memristor M1 connected in series and controlling a gate voltage G1 of the pull-down transistor T2, which corresponds to a lower limit match threshold of the aCAM cell 130. The upper limit matching threshold of the aCAM cell 130 is similarly configured with an independent voltage divider subcircuit 136 comprising a transistor T3 and a series-connected memristor M2, as well as an inverter (transistors T4 and T5 operate as inverters) to control a gate voltage G2 of the pull-down transistor T6.
[0014] The match line 138 is connected to the pull-down transistors T2 and T6 and is held high for a match result when both the gate voltage G1 of the pull-down transistor T2 is less than the threshold voltage of T2 and the gate voltage G2 of the pull-down transistor T6 is less than the threshold voltage of T6, thereby holding both transistors T2 and T6 in a high-impedance state (e.g., OFF). When V DL1 is greater than the threshold voltage of transistor T1, transistor T1 is highly conductive. As a result, the search voltage between search lines 140 (e.g., SL high and SL low ) via the memristor M1, resulting in a small gate voltage G1 on the transistor T2, which is less than a threshold voltage of T2 and is not sufficient to turn on the pull-down transistor T2. Since T2 does not conduct, it does not discharge the match line 138 either. If V DL1less than the threshold voltage of transistor T1, then T1 remains in a high-impedance, non-conductive state. As a result, the search voltage between the search lines 140 (e.g., SL high and SL low ) across transistor T1 and memristor M1, causing a gate voltage G1 on transistor T2 that is greater than the threshold voltage of T2, turning on pull-down transistor T2 and discharging match line 138. Divider subcircuit 134 enforces the lower limit of the stored range in aCAM cell 130 by discharging match line 138 (thereby indicating a deviation) for a V DL which is less than (or less than or equal to) the lower voltage limit f (G M1 ), which is determined by the conductance G M1of the memristor M1. The divider subcircuit 214 enforces the upper limit of the stored range in the aCAM cell 130 by discharging the match line 138 (e.g., indicating a discrepancy) for a V DL which is greater than (or greater than or equal to) the upper voltage limit f (G M2 ) which is determined by the conductance G M2 of the memristor M2. If V DL2is less than the threshold voltage of transistor T3, T3 remains in a high-impedance, non-conducting state. As a result, the search voltage drops between the search lines 140 via transistor T3 and memristor M2, supplying a high voltage to the inverter (transistors T4 and T5 together). The inverter inverts the high voltage, applying a low gate voltage G2 to the pull-down transistor T6. This low gate voltage G2 is less than the threshold voltage of T6 and therefore not sufficient to turn on transistor T6. Since T6 does not conduct, it also does not discharge the match line 138. When V DL2is greater than the threshold voltage of transistor T3, transistor T3 turns on and remains in a highly conductive state. As a result, the search voltage between search lines 140 drops across memristor M2, resulting in a small voltage being supplied to the inverter. The inverter inverts this small voltage into a high gate voltage G2 that is greater than the threshold voltage of pull-down transistor T6, turning on transistor T6 and discharging match line 138.
[0015] Thus, the aCAM cell 130 keeps the match line 138 high when V DL is within a certain range defined by the conductance G M1 of memristor M1 and the conductance G M2 of memristor M2, or if f (G M1 ) < V DL < f (G M2 ). In various embodiments, the match line 138 may be kept high when f (G M1 ) = VDL or V DL = f (G M2 ). Thus, the analog voltage range 132, which is defined by f (G M1 ) and f (G M2 ), a matching voltage range for the aCAM cell 130. In other words, the aCAM cell 130 determines that a search input value matches the value range stored in the aCAM cell 130 when the voltage (V DL ), to which the search input value is mapped, within the range defined by f (G M1 ) and f (G M2 ) limited analog voltage range 132. Different analog value ranges can be stored in different aCAM cells by changing one or more of the conductances G M1 and G M2 the memristors M1 and M2 can be adjusted.
[0016] In various embodiments, the aCAM cell 130 is configurable to store a "Don't Care" value. Thus, the aCAM cell 130 can operate as a TCAM cell. The aCAM cell 130 can be configured to store a "Don't Care" value by changing the conductance G M1 of memristor M1 and the conductance G M2 of memristor M2 so that f (G M1 ) ≤ V DL,min and f (G M2 ) ≥ V DL,max If the conductance G M1 of the memristor M1 is set so that the lower voltage limit f (G M1 ) is below the minimum voltage that can be applied to the data line 142 (e.g. V DL,min ), and the conductance G M2 of the memristor M2 is set so that the upper voltage limit f(G M1 ) is above the maximum voltage that can be applied to the data line 142 (e.g., V DL,max ), then any voltage V DL, which can be applied to the data line 142 and which is determined by V DL,min and V DL,max limited, also fall into the analog voltage range 132, which is defined by f (G M1 ) and f (G M2 ) is limited. Thus, the lower voltage limit (G M1 ) and the upper stress limit f(G M2 ) the one by V DL,min and V DL,max limited range. For a search input value, the voltage V DL , to which the search input value is mapped, i.e. within the range defined by f (G M1 ) and f (G M2 ) limited analog voltage range 132. In this way, the aCAM cell 130 can match any search input value, which is equivalent to storing a "don't care" value.
[0017] The aCAM cell 130 may be configured to support the receipt of a "Don't Care" value for a search input value. In various embodiments, a "Don't Care" value may be searched for by applying different voltages to the data lines DL1 and DL2. For example, a very high voltage may be applied to DL1 and a very low voltage to DL2. This would turn off the pull-down transistors T2 and T6 and keep the voltage on the match line 138 high, indicating a match regardless of the value or range of values stored in the aCAM cell 130. In various embodiments, the aCAM cell 130 may be configured to indicate a mismatch for a stored word by changing the conductance G M1 of the memristor M1 and the conductance G M2 of the memristor M2 so that f (G M1 ) > f (G M2). The aCAM cell 130 would generate a deviation and, in some cases, result in a deviation for a stored word, regardless of the search input value received at the aCAM cell 130.
[0018] In various embodiments, the aCAM cell 130 can also be configured to store discrete values. The storage of a discrete value in the aCAM cell 130 can be based on voltage quantization. Voltages that are within a preconfigured range of a given voltage can be defined as equivalent to the given voltage. For example, voltages that are within 0.4 of 0.1 can be defined as 0.1. In this way, a discrete value being sought (e.g., a discrete voltage applied to the data line 142) can result in a match as long as it falls within a range predefined as equivalent to the sought value, thereby achieving a certain degree of noise tolerance.
[0019] In an aCAM, multiple cells can be connected to match line 138. Match line 138 outputs a high value when every cell on match line 138 matches the corresponding search input value. Unlike digital CAMs, aCAMs can have significantly higher storage density. For example, aCAM cell 130, with its six transistors and two memristors, can store multiple bits. In contrast, an SRAM cell can store a one-bit value with ten transistors and a ternary-bit value with sixteen transistors (in the case of a digital TCAM cell). In addition, a single aCAM cell can store analog ranges of values, allowing the aCAM cell to search and match a wide range of analog inputs, something digital CAMs cannot.
[0020] Fig. Figure 1C shows an example of an analog value range 160 that may be stored in an aCAM cell according to various embodiments. As described herein, an aCAM cell may store an analog value range by storing a conductance G M1 a memristor M1 and a conductance G M2 of a memristor M2 to obtain an analog voltage range defined by a lower voltage limit f (G M1 ) and an upper voltage limit f (G M2 ). For example, a search input value can be compared with the analog value range 160 stored in the aCAM cell. This comparison can determine whether a data line voltage V DL , which corresponds to the search input value, is within the analog voltage range 160 defined by the lower voltage limit f (G M1 ) and the upper voltage limit f (G M2) is defined depending on whether a matching line to which the aCAM cell is connected remains at a high voltage (a high logic level) or is discharged to a low voltage (a low logic level). As in Fig. 1C, a fuzzy search function may be provided, wherein the aCAM cell may compare an input range of values with a stored range of values and return a match even if the search input range does not exactly match the stored range. In various embodiments, the aCAM cell may provide a fuzzy search function that extends a match range for the aCAM cell beyond the stored range 164 and includes fuzzy match ranges 162, 166. If an input search range of values does not exactly fall within the stored range 164, the aCAM cell may still return a match if the input search range falls within the match range that includes the fuzzy match ranges 162, 166.One or both of the fuzzy matching ranges 162, 166 may be appended to one or both ends of the stored range 164 to create the matching range. In various embodiments, the fuzzy matching ranges 162, 164 may be dependent on the lower voltage limit f (G. M1 ) and the upper voltage limit f (G M2 ) of the analog voltage range.
[0021] Fig. Figure 2A is a diagram of an exemplary aCAM cell 200 configured to provide an analog output in accordance with various embodiments. As shown in Fig. 2A, the aCAM cell 200 comprises six transistors (T1-T6) and two memristors (M1-M2). The aCAM cell 200 can, for example, be constructed like the aCAM cell 130 of Fig. 1B. In various embodiments, the aCAM cell 200 may receive an input 204 via a data line. The input 204 may be compared to an upper threshold and a lower threshold, which correspond to a conductance of the memristor M1 and a conductance of the memristor M2, respectively. When the input 204 is within a range of values defined by the upper threshold and the lower threshold, the aCAM cell 200 provides a zero current (or a very small deviation current), which may produce an output voltage 214 of zero (or near zero) (e.g., indicating a match). If the input 204 is outside the range of values defined by the upper threshold and the lower threshold, the aCAM cell 200 contributes a portion of the deviation current 206 to the match line 210, which may produce an output voltage 214 (e.g., indicating a match).In various embodiments, the match line 210 is essentially grounded, and the voltage on the match line 210 is maintained at zero. If the input 204 is outside the range of values stored in the aCAM cell 200, the aCAM cell 200 increases the current i_mismatch 206 on the match line 210. If the input 204 is within the range of values stored in the aCAM cell 200, the aCAM cell 200 does not increase the current i_mismatch 206 on the match line 210. As shown in FIG. Fig. 2A, the aCAM cell 200 may be located with other memory cells 202 on the match line 210. The other memory cells 202 and the aCAM cell 200 may contribute to a total current i_mismatch 208 on the match line 210 depending on whether the inputs to the other memory cells 202 and the input 204 to the aCAM cell 200 match the stored values in the other memory cells 202 and the aCAM cell 200. The total current i_mismatch 208 on the match line 210 indicates a total number of mismatches on the match line 210. As shown in Fig. 2A, the total current i_mismatch 208 may be supplied to a voltage converter 212 (e.g., an operational amplifier). The voltage converter 212 may generate a voltage output 214 corresponding to the total number of mismatches on the match line 210 based on the total current i_mismatch 208. For example, a match line of an aCAM may have five aCAM cells on the match line. The input search word may have two matches and three mismatches with the stored values in the five aCAM cells on the match line. In this example, the three aCAM cells associated with the three mismatches each increment a current on the match line. The two aCAM cells associated with the two matches do not increment the current on the match line. The resulting current on the match line indicates that there were three mismatches (and two matches) with the input search word.Based on the resulting current, an output voltage can be generated. The output voltage can indicate that there were three deviations (and two matches) with the input search word. By providing an analog output, an aCAM described here can thus provide an indication of a match between an input search word and a stored word, as well as an indication of the degree of match between the input search word and the stored word.
[0022] In various embodiments, a range of voltage outputs generated by voltage converter 212 may correspond to a range of possible deviations between an input search word and a stored word. In some cases, the range of output voltages may be limited by a threshold voltage. The threshold voltage may be associated with a threshold number of deviations that can be tolerated between an input search word and a stored word. An input search word that has a number of deviations from a stored word that exceeds the threshold number of deviations may result in a voltage output corresponding to the threshold voltage. The output voltage corresponding to the threshold voltage may indicate that the input search word and the stored word do not match.An input search word that has a number of differences with a stored word that is within the threshold number of differences can result in a voltage output in a voltage range within the threshold voltage. The voltage range can indicate a number of differences within the threshold number of differences between the input search word and the stored word. In various applications, such as fuzzy logic applications, an input search word can be considered to match a stored word even if the number of differences between the input search word and the stored word is less than the threshold number of differences. Among the input search words that meet the threshold number of differences, the input search words can be ranked according to the degree of matching with the stored word.In this way, the input search terms can be ranked based on their Hamming distances. An input search term that has fewer matches with a stored word than an input search term that has more matches with the stored word can be ranked higher. An input search term that has more discrepancies with a stored word than an input search term that has fewer discrepancies with the stored word can be ranked lower.
[0023] Fig. 2B shows an example diagram 250 illustrating the relationship between the current on a match line (I ML ) and the voltage on a data line (V DL) in accordance with various embodiments. As described herein, a match line is charged to a high voltage to perform a search. The match line is discharged by aCAM cells on the match line depending on whether an input search value matches a stored value. As described in Fig. 2B, the example diagram 250 may be associated with an aCAM cell that stores a range of values corresponding to a voltage range from 0.2 V to 0.5 V. Thus, the aCAM cell has an adjustment range 254 from 0.2 V to 0.5 V. The aCAM cell has a deviation range 252 for voltages below 0.2 V and a deviation range 256 for voltages above 0.5 V. An input value that lies within the adjustment range 254 does not cause the aCAM cell to discharge the match line and does not increase the current on the match line. An input value that lies within the deviation ranges 252, 256 causes the aCAM to discharge the match line and increase the current on the match line (e.g., 15 µA). The examples and values given here are for illustrative purposes, and it should be understood that many variations are possible.
[0024] Fig. 3A shows an example graph 300 illustrating a relationship between the voltage on a match line (V ML ) and time in accordance with various embodiments. In various embodiments, the relationship depicted in example graph 300 may be a basis for determining a number of discrepancies between an input search word and a stored word based on the voltage on the match line over time. As described herein, a match line is charged to a high voltage to perform a search. The match line is discharged by aCAM cells on the match line depending on whether an input search value matches a stored value. As described in Fig. 3A, the voltage on the match line decreases over time, and the rate at which the voltage on the match line decreases corresponds to the number of deviations between an input search word and a stored word. In the example graph 300, a graph line 302 shows the voltage on a match line over time for zero deviations. A graph line 304 shows the voltage on a match line over time for one deviation. A graph line 306 shows the voltage on a match line over time for two deviations. A graph line 308 shows the voltage on a match line over time for three deviations. A graph line 310 shows the voltage on a match line over time for four deviations. A graph line 312 shows the voltage on a match line over time for five deviations.A graph line 314 shows the voltage on a match line over time for six discrepancies. In various embodiments, the number of discrepancies between an input search word and a stored word can be determined based on the voltage on a match line at a particular time. Determining the number of discrepancies in this manner does not rely on a voltage converter that converts a current on the match line into a voltage indicative of the number of discrepancies. For example, using example graph 300, it can be seen that at 50 µs, an input search word that has no discrepancies with a stored word results in a match line of approximately 1.0 V. An input search word that has a discrepancy with a stored word results in a match line of approximately 0.9 V.An input search word that has two deviations to a stored word results in a match line of approximately 0.8 V. An input search word that has three matches to a stored word results in a match line of approximately 0.6 V. An input search word that has more than three deviations results in a match line of approximately 0.4 V or less. In this example, three deviations can be chosen as the threshold number of deviations. An input search word that has three deviations to a stored word can be considered a match based on the threshold number of deviations. When a search is performed for an input search word, the match line can be evaluated at 50 µs. If the match line is 0.6 V or more, a match for the input search word can be determined based on the match line voltage.Based on the match line voltage at 50 µs, a number of deviations can be determined. Thus, by evaluating the voltage of a match line at a specific time, the number of deviations between an input search word and a stored word can be determined. The examples and values provided here are for illustrative purposes, and it should be understood that many variations are possible.
[0025] Fig. 3B shows example implementations 330, 360 of CAMs with analog outputs in accordance with various embodiments. In example implementation 330, an SRAM TCAM cell 332 is implemented with an analog output and a voltage converter 334 for generating an analog voltage output. In example implementation 360, a 4T2M memristor TCAM cell 362 is implemented with an analog output and a voltage converter 364 for generating an analog voltage output. As shown in Fig. 3B, the various embodiments described herein are not limited to the example architectures or configurations shown. Desired functionality may be implemented using a variety of alternative architectures and configurations.
[0026] Fig. 4 is a block diagram of an example computing component or device 400 for searching analog value ranges and generating analog outputs that quantify matches between input data and stored data, according to various embodiments. The computing component 400 may be, for example, a server computer, a client device, a controller, or other similar computing component capable of processing data. In some cases, various functions performed by the computing component 400 may rely on an aCAM, as described herein. It should be understood that many variations are possible. In the example implementation of Fig. 4, the computer component 400 includes a hardware processor 402 and a machine-readable storage medium 404.
[0027] The hardware processor 402 may be one or more central processing units (CPUs), semiconductor-based microprocessors, and / or other hardware devices suitable for retrieving and executing instructions stored in the machine-readable storage medium 404. The hardware processor 402 may retrieve, decode, and execute instructions, such as instructions 406-412, to control processes or operations for searching analog value ranges and generating analog outputs that quantify matches between input data and stored data. Alternatively, or in addition to retrieving and executing instructions, the hardware processor 402 may include one or more electronic circuits comprising electronic components for performing the functionality of one or more instructions, such as:a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or other electronic circuitry. Instructions 406-412 may enable searching analog value ranges and generating analog outputs that quantify the correspondence between input data and stored data. Although instructions 406-412 are shown, the instructions may be executed in any order, without some of the instructions shown, and / or with the inclusion of other instructions not shown, and the instructions would still fall within the scope of the disclosure.
[0028] A machine-readable storage medium, such as machine-readable storage medium 404, may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. For example, machine-readable storage medium 404 may be random access memory (RAM), non-volatile RAM (NVRAM), electrically erasable programmable read-only memory (EEPROM), a storage device, an optical disk, or the like. In some embodiments, machine-readable storage medium 404 may be a non-transitory storage medium, where the term "non-transitory" does not include the transitory transmission signals. As described in detail below, machine-readable storage medium 404 may be encoded with executable instructions, e.g.,with instructions 406-412 to search analog value ranges and generate analog outputs that quantify matches between input data and stored data.
[0029] At block 406, the hardware processor(s) 402 may execute machine-readable / machine-executable instructions stored in the machine-readable storage media 404 to determine a set of stored analog words in an addressable analog memory (aCAM). In various embodiments, the set of stored analog words may be associated with a set of stored ranges of analog values.
[0030] At block 408, the hardware processor(s) 402 may execute machine-readable / machine-executable instructions stored in the machine-readable storage media 404 to determine an analog search input word. In various embodiments, the analog search input word may include one or more analog search input values.
[0031] At block 410, the hardware processor(s) 402 may execute machine-readable / machine-executable instructions stored in the machine-readable storage media 404 to determine that the analog search input word matches at least one stored analog word of the set of stored analog words based on a comparison of the set of stored analog words and the analog search input word. In various embodiments, the set of stored analog words may be associated with a set of stored ranges of analog values. The determination that the analog search input word matches the at least one stored analog word of the set of stored analog words may be based on the set of analog input values being within the set of stored ranges of analog values.
[0032] At block 412, the hardware processor(s) 402 may execute machine-readable / machine-executable instructions stored in the machine-readable storage media 404 to generate an analog output indicating an address of the at least one stored analog word of the set of stored analog words. In various embodiments, the analog output may indicate a number of matches or a number of discrepancies between the analog input values of a search analog input word and stored analog values of a stored analog word. For example, the analog output may indicate a Hamming distance between the analog input word and the stored analog word.
[0033] Fig.Figure 5 shows a block diagram of an exemplary computer system 500 in which various embodiments described herein may be implemented. Computer system 500 includes a bus 502 or other communication mechanism for conveying information, and one or more hardware processors 504 connected to bus 502 for processing information. For example, hardware processor(s) 504 may be one or more general-purpose microprocessors.
[0034] Computer system 500 also includes main memory 506, such as random access memory (RAM), a cache, and / or other dynamic storage devices, connected to bus 502 for storing information and instructions to be executed by processor 504. Main memory 506 may also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by processor 504. When such instructions are stored in storage media accessible to processor 504, computer system 500 becomes a special-purpose machine adapted to perform the operations specified in the instructions.
[0035] Computer system 500 also includes a hardware accelerator 508. Hardware accelerator 508 may be configured to execute instructions (e.g., programming or software code) stored in main memory 506, read-only memory (ROM), and / or storage 514 to execute in combination or in parallel with one or more content-addressable analog memories (aCAM) 510. In an example implementation, example hardware accelerator 508 may include multiple integrated circuits, which in turn may include application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other very large integrated circuits (VLSIs).The integrated circuits of the exemplary hardware accelerator 508 may be specifically optimized to perform a discrete subset of computer processing operations or to execute a discrete subset of computer-executable instructions in an accelerated manner. For example, the hardware accelerator 508 may be configured or fabricated to implement a set of instructions on the aCAM 510.
[0036] The aCAM 510 may include non-volatile memory constructed using technologies including, for example, resistive switching memory (i.e., a memristor), phase-change memory, magnetoresistive memory, ferroelectric memory, another resistive random access memory (Re-RAM), or combinations of these technologies. The aCAM 510 may be implemented using technologies that allow the aCAM 510 to retain its contents even when power is interrupted or otherwise removed. Thus, the data in the aCAM 510 "persists," and the aCAM 510 may function as what is known as "non-volatile memory."
[0037] Computer system 500 also includes a read-only memory (ROM) 512 or other static storage device connected to bus 502 for storing static information and instructions for processor 504. A storage device 514, such as a magnetic disk, an optical disk, or a USB flash drive, etc., is provided and connected to bus 502 for storing information and instructions.
[0038] Computer system 500 may be connected to a display 516, such as a liquid crystal display (LCD) (or a touch screen), via bus 502 to display information to a computer user. An input device 518, including alphanumeric and other keys, is coupled to bus 502 to communicate information and command selections to processor 504. Another type of user input device is cursor control 520, such as a mouse, trackball, or cursor direction keys, for communicating direction information and command selections to processor 504 and controlling cursor movement on display 516. In some embodiments, the same direction information and command selections as with cursor control may be implemented via receiving touches on a touch screen without a cursor.
[0039] Computer system 500 may include a user interface module for implementing a graphical user interface, which may be stored on a mass storage device as executable software code executed by the computing device(s). This and other modules may include, for example, components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables.
[0040] In general, the terms “component,” “engine,” “system,” “database,” “data store,” and the like, as used herein, may refer to logic embodied in hardware or firmware, or to a collection of software instructions that may have entry and exit points and be written in a programming language such as Java, C, or C++. A software component may be compiled and linked into an executable program, installed in a dynamic link library, or written in an interpreted programming language such as BASIC, Perl, or Python. It is understood that software components may be called by other components or by themselves, and / or may be called in response to detected events or interrupts. Software components configured to run on computing devices may be embodied on a computer-readable medium, such as a hard disk.a compact disc, digital video disc, flash drive, magnetic disk, or other tangible medium, or as a digital download (and may be originally stored in a compressed or installable format that requires installation, decompression, or decryption prior to execution). Such software code may be stored partially or entirely in a memory of the executing computing device for execution by the computing device. Software instructions may be embedded in firmware, such as an EPROM. In addition, the hardware components may consist of interconnected logic units, such as gates and flip-flops, and / or programmable units, such as programmable gate arrays or processors.
[0041] Computer system 500 may implement the techniques described herein using custom hard-wired logic, one or more ASICs or FPGAs, firmware, and / or program logic that, in combination with the computer system, makes or programs computer system 500 into a special-purpose machine. According to one embodiment, the techniques described herein are performed by computer system 500 in response to processor(s) 504 executing one or more sequences of one or more instructions contained in main memory 506. Such instructions may be read into main memory 506 from another storage medium, such as storage device 514. Execution of the instruction sequences contained in main memory 506 causes processor(s) 504 to perform the process steps described herein.In alternative embodiments, hard-wired circuits may be used instead of or in combination with software instructions.
[0042] The term "non-transitory media" and similar terms as used herein refer to any media that stores data and / or instructions that cause a machine to operate in a particular manner. Such non-transitory media may include non-volatile media and / or volatile media. Examples of non-volatile media include optical or magnetic hard disks, such as storage device 514. Volatile media includes dynamic memory, such as main memory XYZ06. Common forms of non-volatile media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape or other magnetic data storage media, CD-ROMs, other optical data storage media, physical media with hole patterns, RAM, PROM and EPROM, FLASH EPROM, NVRAM, other memory chips or cartridges, and networked versions thereof.
[0043] Non-transitory media are distinct from transmission media but can be used in conjunction with them. Transmission media are involved in the transfer of information between non-transitory media. Examples of transmission media include coaxial cables, copper cables, and fiber optic cables, including the wires that make up bus 502. Transmission media can also take the form of sound or light waves, such as those generated in data communications via radio and infrared.
[0044] Computer system 500 also includes a communications interface 522 connected to bus 502. Network interface 522 establishes a two-way data communications connection to one or more network connections connected to one or more local area networks. Communications interface 522 may, for example, be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem for establishing a data communications connection to a corresponding type of telephone line. Network interface 522 may, for example, be a Local Area Network (LAN) card that establishes a data communications connection to a compatible LAN (or a WAN component for communicating with a WAN). Wireless connections may also be implemented.In each of these implementations, the network interface 522 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams containing various types of information.
[0045] A network connection typically enables data communication across one or more networks to other data devices. For example, a network connection may connect across a local area network to a host computer or to data devices of an Internet service provider (ISP). The ISP, in turn, provides data communication services across the worldwide packet data communications network, now commonly referred to as the "Internet." Both the local area network and the Internet use electrical, electromagnetic, or optical signals that carry digital data streams. The signals across the various networks and the signals on the network connection and across the communications interface 522 that carry the digital data to and from the computer system 500 are examples of transmission media.
[0046] Computer system 500 can send messages and receive data, including program code, over the network(s), the network connection, and the communications interface 522. In the Internet example, a server could transmit requested code for an application program over the Internet, the ISP, the local network, and the communications interface 522.
[0047] The received code may be executed by processor 504 upon receipt and / or stored in storage device XYZ10 or other non-volatile memory for later execution.
[0048] Each of the processes, methods, and algorithms described in the preceding sections may be embodied in, and fully or partially automated by, code components executed by one or more computer systems or computer processors comprising computer hardware. The one or more computer systems or computer processors may also operate to support performance of the corresponding operations in a cloud computing environment or as software as a service (SaaS). The processes and algorithms may be partially or fully implemented in application-specific circuitry. The various features and methods described above may be used independently or combined in various ways.Various combinations and subcombinations are intended to be within the scope of this disclosure, and certain method or process blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular order, and the associated blocks or states may be performed in other suitable orders, in parallel, or otherwise. Blocks or states may be added to or removed from the disclosed examples. The execution of certain operations or processes may be distributed among computer systems or computer processors located not only on a single machine, but distributed across a number of machines.
[0049] As used herein, a circuit may be implemented in any form of hardware, software, or a combination thereof. For example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logic components, software routines, or other mechanisms may be implemented to form a circuit. In implementation, the various circuits described herein may be implemented as discrete circuits, or the described functions and features may be distributed, in part or in whole, among one or more circuits.Although various features or functional elements are individually described or claimed as separate circuits, these features and functions may be shared by one or more common circuits, and such description is not intended to assume or imply that separate circuits are required to implement these features or functions. If a circuit is implemented in whole or in part with software, that software may be implemented to operate with a computer or processing system capable of performing the functionality described with respect to it, such as computer system 500.
Claims
[1] A process comprising: Generating a match line voltage in an analog content addressable memory (aCAM) that decays over time; Evaluating the match line voltage at a selected time; determining a non-zero number of deviations between values of an analog search input word and values of a stored analog word in the aCAM based on the match line voltage at the selected time; Determining that the analog search input word matches the stored analog word based on the non-zero number of deviations between the values of the stored analog word and the values of the analog search input word; and Generating an analog output indicating an address of the stored analog word and the non-zero number of deviations between the values of the analog search input word and the values of the stored analog word; where: the values of the stored analog word correspond to a set of stored voltage ranges, the values of the analog search input word correspond to a set of input voltages, each input voltage from the set of input voltages being compared with a stored voltage range from the set of stored voltage ranges, and a deviation between a value of the analog search input word and a value of the stored analog word occurs when an input voltage corresponding to the value of the analog search input word lies outside a stored voltage range corresponding to the value of the stored analog word, wherein an upper limit voltage of the stored voltage range is connected to a first conductance of a first memristor of the aCAM and a lower limit voltage of the stored voltage range is connected to a second conductance of a second memristor of the aCAM. [2] The method of claim 1, wherein the analog output further indicates a Hamming distance between the analog search input word and the stored analog word. [3] The method of claim 1, wherein the determination that the analog search input word matches the stored analog word is based on the non-zero number of deviations between the values of the analog search input word and the values of the stored analog word being within a threshold number of deviations. [4] The method of claim 1, wherein a stored voltage range in the set of stored voltage ranges is associated with a fuzzy matching range, the fuzzy matching range extending a matching range of the stored voltage range. [5] The method of claim 1, wherein a rate at which the match line voltage decays corresponds to the number of deviations between the values of the analog search input word and the values of the stored analog word. [6] A method according to claim 5, wherein the rate at which the match line voltage decays increases with an increasing number of deviations. [7] An analog content-addressable memory (aCAM) configured to perform the following: generating a match line voltage in the aCAM that decays over time; Evaluate the match line voltage at a selected time and determining a non-zero number of deviations between values of an analog search input word and values of a stored analog word in the aCAM based on the match line voltage at the selected time; Determining that the analog search input word matches a stored analog word in the aCAM based on a non-zero number of deviations between values of the stored analog word and values of the analog search input word; and Generating an analog output indicating an address of the stored analog word and the non-zero number of deviations between the values of the analog search input word and the values of the stored analog word; where: the values of the stored analog word correspond to a set of stored voltage ranges, the values of the analog search input word correspond to a set of input voltages, each input voltage from the set of input voltages being compared with a stored voltage range from the set of stored voltage ranges, and a deviation between a value of the analog search input word and a value of the stored analog word occurs when an input voltage corresponding to the value of the analog search input word lies outside a stored voltage range corresponding to the value of the stored analog word, wherein an upper limit voltage of the stored voltage range is connected to a first conductance of a first memristor of the aCAM and a lower limit voltage of the stored voltage range is connected to a second conductance of a second memristor of the aCAM. [8] The aCAM of claim 7, wherein the analog output further indicates a Hamming distance between the analog search input word and the stored analog word. [9] The aCAM of claim 7, wherein the determination that the analog search input word matches the stored analog word is based on the non-zero number of deviations between the values of the analog search input word and the values of the stored analog word being within a threshold number of deviations. [10] The aCAM of claim 7, wherein a stored voltage range in the set of stored voltage ranges is associated with a fuzzy matching range, the fuzzy matching range extending a matching range of the stored voltage range. [11] The aCAM of claim 7, wherein a rate at which the match line voltage decays corresponds to the number of deviations between the values of the analog search input word and the values of the stored analog word. [12] The aCAM of claim 11, wherein the rate at which the match line voltage decays increases with an increasing number of deviations. [13] A system comprising: a processor configured to execute machine-executable instructions to: to generate a match line voltage in an analog content addressable memory (aCAM) that decays over time; to evaluate the compliance line voltage at a selected time and determine a non-zero number of deviations between values of an analog search input word and values of a stored analog word in the aCAM based on the match line voltage at the selected time; determine that the analog search input word matches the stored analog word based on a non-zero number of deviations between values of the stored analog word and values of the analog search input word; and generate an analog output indicating an address of the stored analog word and the non-zero number of deviations between the values of the analog search input word and the values of the stored analog word; where: the values of the stored analog word correspond to a set of stored voltage ranges, the values of the analog search input word correspond to a set of input voltages, each input voltage from the set of input voltages being compared with a stored voltage range from the set of stored voltage ranges, and a deviation between a value of the analog search input word and a value of the stored analog word occurs when an input voltage corresponding to the value of the analog search input word lies outside a stored voltage range corresponding to the value of the stored analog word, wherein an upper limit voltage of the stored voltage range is connected to a first conductance of a first memristor of the aCAM and a lower limit voltage of the stored voltage range is connected to a second conductance of a second memristor of the aCAM. [14] The system of claim 13, wherein the analog output further indicates a Hamming distance between the analog search input word and the stored analog word. [15] The system of claim 13, wherein the determination that the analog search input word matches the stored analog word is based on the non-zero number of deviations between the values of the analog search input word and the values of the stored analog word being within a threshold number of deviations. [16] The system of claim 13, wherein a rate at which the match line voltage decays corresponds to the number of deviations between the values of the analog search input word and the values of the stored analog word. [17] The system of claim 16, wherein the rate at which the match line voltage decays increases with an increasing number of deviations.
