Programming of resistive random access memory for analog computation
09842647 · 2017-12-12
Assignee
Inventors
- John Paul Strachan (San Carlos, CA)
- Brent Buchanan (Fort Collins, CO)
- Emmanuelle Merced Grafals (Palo Alto, CA, US)
Cpc classification
G11C13/0033
PHYSICS
G11C29/52
PHYSICS
International classification
G11C11/00
PHYSICS
G11C29/52
PHYSICS
Abstract
Examples include a method of programming resistive random access memory (RRAM) array for analog computations. In some examples, a selected RRAM cell of the RRAM array may be programmed with a selected target conductance and a programmed conductance error of the selected RRAM cell may be determined. A neighboring RRAM cell may be programmed with an error corrected target conductance that is a function of a neighboring target conductance and the programmed conductance error of the selected RRAM cell. The neighboring RRAM cell may be in a same row or a same column as the selected RRAM cell. The selected RRAM cell and neighboring RRAM cell are programmed such that the RRAM array is programmed for an analog computation.
Claims
1. A method of programming a resistive random access memory (RRAM) array for an analog computation, the method comprising: programming a selected RRAM cell of the RRAM array with a selected target conductance; determining a programmed conductance error of the selected RRAM cell; and programming a neighboring RRAM cell with an error corrected target conductance, wherein the neighboring RRAM cell is in a same row as the selected RRAM cell or a same column as the selected RRAM cell, wherein the error corrected target conductance is a function of a neighboring target conductance and the programmed conductance error of the selected RRAM cell; and wherein the selected RRAM cell and the neighboring RRAM cell are programmed such that the RRAM array is programmed for the analog computation.
2. The method of claim 1, wherein the selected RRAM cell of the RRAM array is an nth RRAM cell, where n is a nearest integer of N/2, and where N is a number of cells in a column or a row of the RRAM array and is a positive integer greater than one.
3. The method of claim 1, wherein programming the neighboring RRAM cell further comprises: programming a first neighboring RRAM cell with a first error corrected target conductance, wherein the first error corrected target conductance is a function of a first target conductance and the programmed conductance error of the selected RRAM cell; and programming a second neighboring RRAM cell with a second error corrected target conductance, wherein the second error corrected target conductance is a function of a second target conductance and the programmed conductance error of the selected RRAM cell.
4. The method of claim 3, wherein the first error corrected conductance is the first target conductance of the first neighboring RRAM cell reduced by a first factor of the programmed conductance error of the selected RRAM cell, wherein the second error corrected conductance is the second target conductance of the second neighboring RRAM cell reduced by a second factor of the programmed conductance error of the selected RRAM cell, and wherein the first factor and the second factor are each a positive fraction equal to or between 0 and 1.
5. The method of claim 4, wherein a sum of the first factor and the second factor is equal to 1.
6. The method of claim 5, wherein the first factor equals the second factor.
7. The method of claim 4, wherein programming the neighboring RRAM cell further comprises: programming a third neighboring RRAM cell with a third error corrected target conductance, wherein the third error corrected target conductance is a function of a third target conductance and the programmed conductance error of the selected RRAM cell; and programming a fourth neighboring RRAM cell with a fourth error corrected target conductance, wherein the fourth error corrected target conductance is a function of a fourth target conductance and the programmed conductance error of the selected RRAM cell.
8. The method of claim 7, wherein the third error corrected conductance is the third target conductance of the third neighboring RRAM cell reduced by a third factor of the programmed conductance error of the selected RRAM cell, wherein the fourth error corrected conductance is the fourth target conductance of the fourth neighboring RRAM cell reduced by a fourth factor of the programmed conductance error of the selected RRAM cell, and wherein the third factor and the fourth factor are each a positive fraction equal to or between 0 and 1.
9. The method of claim 8, wherein the sum of the first factor, the second factor, the third factor, and the fourth factor is equal to 1.
10. The method of claim 4, wherein programming the neighboring RRAM cell further comprises: programming a third neighboring RRAM cell with a third error corrected target conductance, wherein the third error corrected target conductance is a function of a third target conductance and a programmed conductance error of the first neighboring RRAM cell; and programming a fourth neighboring RRAM cell with a fourth error corrected target conductance, wherein the fourth error corrected target conductance is a function of a fourth target conductance and a programmed conductance error of the second RRAM cell.
11. The method of claim 10, wherein the third error corrected conductance is the third target conductance of the third neighboring RRAM cell reduced by a third factor of the programmed conductance error of the first neighboring RRAM cell, wherein the fourth error corrected conductance is the fourth target conductance of the fourth neighboring RRAM cell reduced by a fourth factor of the programmed conductance error of the second neighboring RRAM cell, and wherein the third factor and the fourth factor are each a positive fraction equal to or between 0 and 1.
12. A resistive random access memory (RRAM) array programmed for an analog computation comprising: a selected RRAM cell of the RRAM array that is programmed with a selected target conductance; a first neighboring RRAM cell that is programmed with a first error corrected target conductance, wherein the first error corrected target conductance is a function of a first target conductance and a programmed conductance error of the selected RRAM cell; and a second neighboring RRAM cell that is programmed with a second error corrected target conductance, wherein the second error corrected target conductance is a function of a second target conductance and the programmed conductance error of the selected RRAM cell, and wherein the selected RRAM cell, the first neighboring RRAM cell, and the second neighboring RRAM cell are programmed such that the RRAM array is programmed for the analog computation.
13. The RRAM array of claim 12, wherein the first neighboring RRAM cell and the second neighboring cell are adjacent to the selected RRAM cell in a same row as the selected RRAM cell or in a same column as the selected RRAM cell.
14. The RRAM array of claim 12, wherein the first target conductance and the second target conductance are together reduced by an amount equal to the programmed conductance error of the selected RRAM cell to calculate the first error corrected target conductance and the second error corrected target conductance.
15. The RRAM array of claim 14, further comprising: a third neighboring RRAM cell that is programmed with a third error corrected target conductance, wherein the third error corrected target conductance is a function of a third target conductance and a programmed conductance error of the selected RRAM cell; and a fourth neighboring RRAM cell that is programmed with a fourth error corrected target conductance, wherein the fourth error corrected target conductance is a function of a fourth target conductance and the programmed conductance error of the selected RRAM cell, and wherein the third neighboring RRAM cell and the fourth neighboring RRAM cell are programmed such that the RRAM array is programmed for the analog computation.
16. The RRAM array of claim 14, wherein the first target conductance, the second target conductance, the third target conductance, and the fourth target conductance are together reduced by an amount equal to the programmed conductance error of the selected RRAM cell to calculate the first error corrected conductance, the second error corrected conductance, the third error corrected conductance, and the fourth error corrected conductance.
17. A non-transitory machine-readable storage medium comprising instructions executable by a processing resource to program a resistive random access memory (RRAM) array for an analog computation, the instructions to: program a selected RRAM cell of the RRAM array with a selected target conductance; determine a programmed conductance error of the selected RRAM cell; and program a neighboring RRAM cell with an error corrected target conductance, wherein the error corrected target conductance is a function of a neighboring target conductance and the programmed conductance error of the selected RRAM cell; wherein programming the selected RRAM cell and programming the neighboring RRAM cell program the RRAM array for the analog computation, wherein the analog computation is a linear transformation, a convolution operation, or a neural network inference algorithm.
18. The non-transitory machine-readable storage medium comprising instructions executable by a processing resource to program the RRAM array for the analog computation of claim 17, wherein the instructions to program the neighboring RRAM cell further comprise instructions to: program a first neighboring RRAM cell with a first error corrected target conductance, wherein the first error corrected target conductance is a function of a first target conductance and the programmed conductance error of the selected RRAM cell; and program a second neighboring RRAM cell with a second error corrected target conductance, wherein the second error corrected target conductance is a function of a second target conductance and the programmed conductance error of the selected RRAM cell, and wherein the first target conductance and the second target conductance are together reduced by an amount equal to the programmed conductance error of the selected RRAM cell to calculate the first error corrected conductance and the second error corrected conductance.
19. The non-transitory machine-readable storage medium comprising instructions executable by a processing resource to program the RRAM array for the analog computation of claim 17, wherein the instructions to program the neighboring RRAM cell further comprise instructions to: program a first neighboring RRAM cell with a first error corrected target conductance, wherein the first error corrected target conductance is a function of a first target conductance and the programmed conductance error of the selected RRAM cell; and program a second neighboring RRAM cell with a second error corrected target conductance, wherein the second error corrected target conductance is a function of a second target conductance and the programmed conductance error of the selected RRAM cell; program a third neighboring RRAM cell with a third error corrected target conductance, wherein the third error corrected target conductance is a function of a third target conductance and the programmed conductance error of the selected RRAM cell; and program a fourth neighboring RRAM cell with a fourth error corrected target conductance, wherein the fourth error corrected target conductance is a function of a fourth target conductance and the programmed conductance error of the selected RRAM cell, and wherein the wherein the first target conductance, the second target conductance, the third target conductance, and the fourth target conductance are together reduced by an amount equal to the programmed conductance error of the selected RRAM cell.
20. The non-transitory machine-readable storage medium comprising instructions executable by a processing resource to program the RRAM array for the analog computation of claim 18, wherein the instructions to program the neighboring RRAM cell further comprise instructions to: program a third neighboring RRAM cell with a third error corrected target conductance, wherein the third error corrected target conductance is a function of a third target conductance and a programmed conductance error of the first neighboring RRAM cell; and program a fourth neighboring RRAM cell with a fourth error corrected target conductance, wherein the fourth error corrected target conductance is a function of a fourth target conductance and a programmed conductance error of the second neighboring RRAM cell.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The following detailed description references the drawings, wherein:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
DETAILED DESCRIPTION
(13) A resistive random access memory (RRAM) array may be programmed for analog computation. The analog computation may involve certain cells of the RRAM array having differing conductance such that the particular analog computation is accurate. Programming RRAM cells to have a specific conductance often results in a programmed conductance error. In some examples, the programmed conductance may be higher than expected. Whereas in other examples, the programmed conductance may be lower than expected. Such errors may affect the overall computational accuracy of the analog computation for which the RRAM array is programmed.
(14) A closed-loop programming scheme may be used to reduce programming error. Under such a scheme, a cell may be iteratively programmed and reprogrammed, alternatively over-shooting and then under-shooting the target conductance until the cell is within a target threshold of the target conductance. Such a scheme may involve numerous programming cycles, may be prohibitively time-consuming, and may fail to result in a suitably accurate computation.
(15) Examples described herein may allow for an inaccurate target conductance at a selected RRAM cell by adjusting a neighboring RRAM cell's target conductance to account for the conductance error at the selected RRAM cell. For instance, examples described herein may involve programming a selected RRAM cell, determining the programmed conductance error of the selected RRAM cell, and programming a neighboring RRAM cell with an error corrected target conductance that is a function of a neighboring target conductance and the programmed conductance error of the selected RRAM cell. In some such examples, the neighboring RRAM cell may be reduced by a factor of the programmed conductance error of the selected RRAM cell to compute the error corrected target conductance.
(16) In some examples described herein, a method of programming an RRAM array for an analog computation may include programming a selected RRAM cell of the RRAM array with a selected target conductance and determining a programmed conductance error of the selected RRAM cell. The method may further include programming a neighboring RRAM cell with an error corrected target conductance. The neighboring RRAM cell may be in the same row as the selected RRAM cell or a same column as the selected RRAM cell and the error corrected target conductance may be a function of a neighboring target conductance and the programmed conductance error of the selected RRAM cell. Both the selected RRAM cell and the neighboring RRAM cell are programmed such that the RRAM array is programmed for the analog computation.
(17) In some such examples, programming the neighboring RRAM cell comprises programming a first neighboring RRAM cell with a first error corrected target conductance that is a function of a first target conductance and the programmed conductance error of the selected RRAM cell and programming a second neighboring RRAM cell with a second error corrected target conductance that is a function of a second target conductance and the programmed conductance error of the selected RRAM cell. In some examples, programming the neighboring RRAM cell may further comprise programming a third neighboring RRAM cell with a third error corrected target conductance that is a function of a third target conductance and the programmed conductance error of the selected RRAM cell and programming a fourth neighboring RRAM cell with a fourth error corrected target conductance that is a function of a fourth target conductance and the programmed conductance error of the selected RRAM cell. In other examples, programming the neighboring RRAM cell may instead further comprise programming the third neighboring RRAM cell with a third error corrected target conductance that is a function of a third target conductance and the programmed conductance error of the first neighboring RRAM cell and programming a fourth neighboring RRAM cell with a fourth error corrected target conductance that is a function of a fourth target conductance and the programmed conductance error of the second neighboring RRAM cell.
(18) In some examples described herein, an RRAM array programmed for an analog computation may comprise a selected RRAM cell of the RRAM array that is programmed with a selected target conductance. The RRAM array may also comprise a first neighboring RRAM cell that is programmed with a first error corrected target conductance, which is a function of a first target conductance and a programmed conductance error of the selected RRAM cell. The RRAM array may further comprise a second neighboring RRAM cell that is programmed with a second error corrected target conductance, which is a function of a second target conductance and the programmed conductance error of the selected RRAM cell. The selected RRAM cell, the first neighboring RRAM cell, and the second neighboring RRAM cell may be programmed such that the RRAM array is programmed for the analog computation.
(19) In some examples described herein, a non-transitory machine-readable storage medium comprises instructions executable by a processing resource to program an RRAM array for analog computation. The instructions may program a selected RRAM cell of the RRAM array with a selected target conductance, determine a programmed conductance error of the selected RRAM cell, and program a neighboring RRAM cell with an error corrected target conductance. The error corrected target conductance is a function of a neighboring target conductance and the programmed conductance error of the selected RRAM cell.
(20) Programming the selected RRAM cell and the neighboring RRAM cell programs the RRAM array for the analog computation, which may be a linear transformation, a convolution operation, or a neural network inference algorithm. In examples described herein, a determination, action, etc., that is said to be a function of a given condition may be a function of that condition alone or a function of that condition and other condition(s).
(21) Referring now to the drawings,
(22) Method 100 may program the RRAM array for analog computations. The analog computations may include linear transformations (e.g., Fourier transform, discrete cosine transform, etc.), convolution operations (e.g., periodic convolutions, discrete convolutions, etc.), neural network inference algorithms (e.g., backpropagation algorithms, machine learning algorithms, etc.), and the like. The performance of different analog computations, may involve different RRAM cells of the RRAM array having varying conductance. Conductance refers to the degree to which an object conducts electricity. Depending on the analog computation to be performed, each RRAM cell within an RRAM array may have a particular target conductance, which may vary from one RRAM cell to the next. The target conductance of an RRAM cell, as used herein, refers to an intended or an ideal conductance for the RRAM cell. The target conductance for an RRAM cell is the conductance the RRAM cell would have if programming were error-free.
(23) Turning to
(24) Returning to method 100 of
(25) An RRAM cell may provide storage of the programmed conductance. In particular, the programmed conductance may be stored in a non-volatile manner by the RRAM cell until the RRAM cell is once again programmed (i.e., reprogrammed) to establish a second programmed conductance. When not being programmed, the RRAM cell may substantially retain the programming resistance even in the absence of power.
(26) The selected RRAM cell, as used herein, is an RRAM cell of an RRAM array that is to be programmed with a selected target conductance. The selected target conductance, as used herein, is a target conductance of the selected RRAM cell. In the example of
(27) At 120, a particular voltage, current, or combination thereof may be applied across the terminals of the selected RRAM cell to program the selected RRAM cell with a selected target conductance. Depending on the selected target conductance, the applied voltage, current, or combination thereof may be correspondingly higher or lower in order to program the selected RRAM cell to have the selected target conductance.
(28) At 140, the programmed conductance error of the selected RRAM cell is determined. The programmed conductance error may be determined by measuring the actual programmed conductance of the selected RRAM cell (i.e., the programmed conductance of the selected RRAM cell) reduced by the selected target conductance. In some examples, the programmed conductance may be measured by applying a low voltage or current that will not disturb the conductance, but allows the state to be read. If the programmed conductance of the selected RRAM cell is greater than the selected target conductance, the programmed conductance error is represented by a positive number. If the programmed conductance of the selected RRAM cell is less than the selected target conductance, the programmed conductance error is represented by a negative number.
(29) In some examples, steps 120 and 140 may be repeated until the programmed conductance of the selected RRAM is within a certain error threshold of the target conductance of the selected RRAM. For instance, steps 120 and 140 may iterate until the programmed conductance of the selected RRAM cell is within 20% (or some other suitable percentage or amount) of the target conductance of the selected RRAM cell. In other examples, method 100 may simply proceed to 160, regardless of the percentage or amount by which the programmed conductance varies from the target conductance of the selected RRAM cell.
(30) At 160 of method 100, a neighboring RRAM cell may be programmed with an error corrected target conductance. A neighboring RRAM cell, as used herein, may refer to a cell that is adjacent to or proximate to the selected RRAM cell. In the example of
(31) In another example, the neighboring RRAM cell may include the next two (or three or more) closest RRAM cells in a same row or column as the selected RRAM cell such that each of the target conductance of these cells are adjusted by the programmed conductance error of the selected RRAM cell. For instance, if the selected RRAM cell is at a second row and a third column of the RRAM array (e.g., RC.sub.2,3 of
(32) The error corrected target conductance, as used in the examples herein, is an adjusted target conductance of the neighboring RRAM cell that accounts for programmed conductance error of another RRAM cell in the RRAM array. In the example of
(33) The error corrected target conductance of the neighboring RRAM cell may be the neighboring target conductance adjusted by some, all, none, or an amount greater than the programmed conductance error of the selected RRAM cell. In the example of
(34) At 160, a particular voltage, current, or combination thereof may be applied across the terminals of the neighboring RRAM cell to program the neighboring RRAM cell with the error corrected target conductance. Depending on the error corrected target conductance, the applied voltage, current, or combination thereof may be correspondingly higher or lower in order to program the neighboring RRAM cell to have the error corrected target conductance. In the example of
(35) In some examples, determining a programmed conductance error and programming RRAM cells may be done via a non-transitory machine-readable storage medium comprising instructions executable by a processing resource, as described below in relation to
(36) In some examples, a programmed conductance error of the neighboring RRAM cell may be calculated to determine the difference between the actual programmed conductance of the neighboring RRAM cell and the error corrected target conductance of the RRAM cell. An adjacent RRAM cell to the neighboring RRAM cell may be programmed with an error corrected target conductance that is a function of the adjacent RRAM cell's target conductance and the programmed conductance error of the neighboring RRAM cell. In this manner, each RRAM cell in either the same column or the same row as the selected RRAM cell may be programmed. At the boundary of the RRAM array, any remaining programmed conductance error may simply be discarded or may also be used to determine an error corrected target conductance of an RRAM cell in a next row or column in the RRAM array.
(37)
(38) In the example of
(39) As shown in
(40) Although the flowchart of
(41)
(42) The first neighboring RRAM cell, in the example of
(43) As used herein, the first target conductance is the ideal conductance of the first neighboring RRAM cell for the RRAM array to perform the analog computation. The first target conductance for the first neighboring RRAM cell is the conductance the first neighboring RRAM cell would have if programming were error-free. The first error corrected target conductance of the first neighboring RRAM cell may be the first target conductance adjusted by some, all, or, in some examples, none of the programmed conductance error of the selected RRAM cell, as determined at step 140 of
(44) In some examples, the first error corrected target conductance G.sub.n+1.sup.ET is represented by
G.sub.n+1.sup.ET=G.sub.n+1.sup.T−x.Math.Δ.sub.n.sup.E (1)
where G.sub.n+1.sup.T is the first target conductance of the first neighboring RRAM cell, ΔG.sub.n.sup.E is the programmed conductance error of the selected RRAM cell, and x is a first factor, wherein 0≦x≦1. In such examples, the first error corrected target conductance of the first neighboring RRAM cell is reduced by a first factor x of the programmed conductance error of the selected RRAM cell where x is a positive fraction equal to or between 0 and 1.
(45) If the programmed conductance of the selected RRAM cell is greater than the selected target conductance, the programmed conductance error is represented by a positive number. Accordingly, the first error corrected target conductance would be the first target conductance of the first neighboring RRAM cell reduced by all, some, or none of the programmed conductance error of the selected RRAM cell, depending on the value of first factor x.
(46) If the programmed conductance of the selected RRAM cell is less than the selected target conductance, the programmed conductance error is represented by a negative number. Accordingly, the first error corrected target conductance would be the first target conductance of the first neighboring RRAM cell reduced by all, some or none of the negative programmed conductance error of the selected RRAM cell. In such an example, depending on the value of first factor x, the first factor of the programmed conductance error of the selected RRAM cell would be effectively added to the first target conductance of the first neighboring RRAM cell (e.g., G.sub.n+1.sup.T−x.Math.(−ΔG.sub.n.sup.E)).
(47) As described above in relation to step 160 of
(48) At 164 of
(49) As used herein, the second target conductance is the ideal conductance of the second neighboring RRAM cell for the RRAM array to perform the analog computation. The second target conductance for the second neighboring RRAM cell is the conductance the second neighboring RRAM cell would have if programming were error-free. The second error corrected target conductance of the second neighboring RRAM cell may be the second target conductance adjusted by some, all, or, in some examples, none of the programmed conductance error of the selected RRAM cell, as determined at step 140 of
(50) In some examples, the second error corrected conductance G.sub.n−1.sup.ET is represented by
G.sub.n−1.sup.ET=G.sub.n−1.sup.T−y.Math.ΔG.sub.n.sup.E (2)
where G.sub.n−1.sup.T is the second target conductance of the second neighboring RRAM cell, ΔG.sub.n.sup.E is the programmed conductance error of the selected RRAM cell, and y is a second factor, wherein 0≦y≦1. In such examples, the second error corrected target conductance of the second neighboring RRAM cell is reduced by a second factor y of the programmed conductance error of the selected RRAM cell where y is a positive fraction equal to or between 0 and 1.
(51) If the programmed conductance of the selected RRAM cell is greater than the selected target conductance, the programmed conductance error is represented by a positive number. Accordingly, the second error corrected target conductance would be the second target conductance of the second neighboring RRAM cell reduced by all, some, or, in some examples, none of the programmed conductance error of the selected RRAM cell, depending on the value of second factor y.
(52) If the programmed conductance of the selected RRAM cell is less than the selected target conductance, the programmed conductance error is represented by a negative number. Accordingly, the second error corrected target conductance would be the second target conductance of the second neighboring RRAM cell reduced by all, some or none of the negative programmed conductance error of the selected RRAM cell. In such an example, depending on the value of second factor y, the second factor of the programmed conductance error of the selected RRAM cell would be effectively added to the second target conductance of the second neighboring RRAM cell (e.g., G.sub.n−1.sup.T−y.Math.(−ΔG.sub.n.sup.E)).
(53) As described above in relation to step 160 of
(54) In some examples in which the first error corrected conductance is represented by equation (1) and the second error corrected conductance is represented by equation (2), the sum of the first factor x and the second factor y may be equal to 1 (x+y=1). Thus, the total programmed conductance error of the selected RRAM cell may be distributed to the first and second neighboring RRAM cells (at least ideally, as each of the first and second neighboring RRAM cells may themselves have a programmed conductance error associated with them after programming). In some such examples, the first factor x may equal the second factor y (x=y) such that each of the first target conductance and the second target conductance are adjusted by half of the programmed conductance error of the selected RRAM cell. In other such examples, first factor x may be greater or less than second factor y such that the first neighboring RRAM cell is adjusted by a greater or a lesser amount than the second neighboring RRAM cell. For instance, first factor x may be set to 1 and second factor y may be set to 0 such that the total programmed conductance error of the selected RRAM cell is distributed only to a first neighboring RRAM cell.
(55) In other examples in which the first error corrected conductance is represented by equation (1) and the second error corrected conductance is represented by equation (2), the sum of the first factor x and the second factor y may be less than or greater than 1. For example, a conductance amount greater than the programmed conductance error of the selected RRAM cell may be distributed to the first and second neighboring RRAM cells. Thus, the sum of the first factor x and the second factor y would be greater than 1. In another example, a conductance amount less than the programmed conductance error of the selected RRAM cell may be distributed to the first and second neighboring RRAM cells. Thus, the sum of the first factor x and the second factor y would be less than 1. Adjusting the first target conductance and the second target conductance of the first and second RRAM cells, respectively, by a sum that is greater than or less than the programmed conductance error of the selected RRAM cell may account for known or typical programming errors that may result.
(56) Although the flowchart of
(57)
(58) At 166 of
(59) As used herein, the third target conductance is the ideal conductance of the third neighboring RRAM cell for the RRAM array to perform the analog computation. The third target conductance for the third neighboring RRAM cell is the conductance the third neighboring RRAM cell would have if programming were error-free. The third error corrected target conductance of the third neighboring RRAM cell may be the third target conductance adjusted by some, all, or, in some examples, none of the programmed conductance error of the selected RRAM cell, as determined at step 140 of
(60) In some examples, the third error corrected target conductance G.sub.n+2.sup.ET is represented by
G.sub.n+2.sup.ET=G.sub.n+2.sup.T−a.Math.ΔG.sub.n.sup.E (3)
where G.sub.n+2.sup.T is the third target conductance of the third neighboring RRAM cell, ΔG.sub.n.sup.E is the programmed conductance error of the selected RRAM cell, and a is a third factor, wherein 0≦a≦1. In such examples, the third error corrected target conductance of the third neighboring RRAM cell is reduced by a third factor a of the programmed conductance error of the selected RRAM cell where a is a positive fraction equal to or between 0 and 1.
(61) If the programmed conductance of the selected RRAM cell is greater than the selected target conductance, the programmed conductance error is represented by a positive number. Accordingly, the third error corrected target conductance would be the third target conductance of the third neighboring RRAM cell reduced by all, some, or none of the programmed conductance error of the selected RRAM cell, depending on the value of third factor a.
(62) If the programmed conductance of the selected RRAM cell is less than the selected target conductance, the programmed conductance error is represented by a negative number. Accordingly, the third error corrected target conductance would be the third target conductance of the third neighboring RRAM cell reduced by all, some or none of the negative programmed conductance error of the selected RRAM cell. In such an example, depending on the value of third factor a, the third factor of the programmed conductance error of the selected RRAM cell would be effectively added to the third target conductance of the third neighboring RRAM cell (e.g., G.sub.n+2.sup.T−a.Math.(−ΔG.sub.n.sup.E)).
(63) As described above in relation to step 160 of
(64) At 168 of
(65) As used herein, the fourth target conductance is the ideal conductance of the fourth neighboring RRAM cell for the RRAM array to perform the analog computation. The fourth target conductance for the fourth neighboring RRAM cell is the conductance the fourth neighboring RRAM cell would have if programming were error-free. The fourth error corrected target conductance of the fourth neighboring RRAM cell may be the fourth target conductance adjusted by some, all, or, in some examples, none of the programmed conductance error of the selected RRAM cell, as determined at step 140 of
(66) In some examples, the fourth error corrected conductance G.sub.n−2.sup.ET is represented by
G.sub.n−2.sup.ET=GT.sub.n−2.sup.T−b.Math.ΔG.sub.n.sup.E (4)
(67) where G.sub.n−2.sup.T.sub.—2 is the fourth target conductance of the fourth neighboring RRAM cell, ΔG.sub.n.sup.E is the programmed conductance error of the selected RRAM cell, and b is a fourth factor, wherein 0≦b≦1. In such examples, the fourth error corrected target conductance of the fourth neighboring RRAM cell is reduced by a fourth factor of the programmed conductance error of the selected RRAM cell where b is a positive fraction equal to or between 0 and 1.
(68) If the programmed conductance of the selected RRAM cell is greater than the selected target conductance, the programmed conductance error is represented by a positive number. Accordingly, the fourth error corrected target conductance would be the fourth target conductance of the fourth neighboring RRAM cell reduced by all, some, or, in some examples, none of the programmed conductance error of the selected RRAM cell, depending on the value of fourth factor b.
(69) If the programmed conductance of the selected RRAM cell is less than the selected target conductance, the programmed conductance error is represented by a negative number. Accordingly, the fourth error corrected target conductance would be the fourth target conductance of the fourth neighboring RRAM cell reduced by all, some or none of the negative programmed conductance error of the selected RRAM cell. In such an example, depending on the value of fourth factor b, the fourth factor of the programmed conductance error of the selected RRAM cell would be effectively added to the fourth target conductance of the fourth neighboring RRAM cell (e.g., G.sub.n−2.sup.T−b.Math.(−ΔG.sub.n.sup.E)).
(70) As described above in relation to step 160 of
(71) In some examples in which the first error corrected conductance is represented by equation (1), the second error corrected conductance is represented by equation (2), the third error corrected conductance is represented by equation (3), and the fourth error corrected conductance is represented by equation (4), the sum of the first factor x, the second factor y, the third factor a, and the fourth factor b may be equal to 1 (x+y+a+b=1). Thus, the total programmed conductance error of the selected RRAM cell may be distributed to the first, second, third, and fourth neighboring RRAM cells (at least ideally, as each of the first, second, third, and fourth neighboring RRAM cells may themselves have a programmed conductance error associated with them after programming). In some examples, the programmed conductance error of the selected RRAM cell may be equally distributed amongst the first, second, third, and fourth neighboring RRAM cells. In other examples, the programmed conductance error of the selected RRAM cell may be variously distributed amongst the first, second, third, and fourth neighboring RRAM cells. For instance, the first and second neighboring RRAM cells may be adjusted with a greater portion of the programmed conductance error than the third and fourth neighboring RRAM cells, or vice versa.
(72) In other examples, some neighboring RRAM cells may not be adjusted at all. For instance, in an example in which the selected RRAM cell is the nth cell in a row, the first neighboring RRAM cell is the “n+1” cell, the second neighboring RRAM cell is the “n−1” cell, the third neighboring RRAM cell is the “n+2” cell, and the fourth neighboring RRAM cell is the “n−2” cell, a first factor x and a third factor a may be set to 0 such that only the two cells to the left of the selected RRAM cell in the row are adjusted by the programmed conductance error of the selected RRAM cell.
(73) In yet other examples, the sum of the factors may be less than or greater than 1. For example, a conductance amount greater than the programmed conductance error of the selected RRAM cell may be distributed to the neighboring RRAM cells such that the sum of the factors would be greater than 1. In another example, a conductance amount less than the programmed conductance error of the selected RRAM cell may be distributed to the neighboring RRAM cells such that the sum of the factors would be less than 1.
(74) Although the flowchart of
(75)
(76) At 170 of
(77) As described above in relation to
(78) As described above in relation to the programmed conductance error of the selected RRAM cell, the programmed conductance error of the first neighboring RRAM cell may be determined by measuring the actual programmed conductance of the first neighboring RRAM cell reduced by the error corrected target conductance of the first neighboring RRAM cell.
(79) In some examples, the third error corrected target conductance G.sub.n+2.sup.ET is represented by
G.sub.n+2.sup.ET=G.sub.n+2.sup.T−a.Math.ΔG.sub.n+1.sup.E (5)
where G.sub.n+2.sup.T is the third target conductance of the third neighboring RRAM cell, ΔG.sub.n+1.sup.E is the programmed conductance error of the first neighboring RRAM cell, and a is a third factor, wherein 0≦a≦1. In such examples, the third error corrected target conductance of the third neighboring RRAM cell is reduced by a third factor a of the programmed conductance error of the first neighboring RRAM cell where a is a positive fraction equal to or between 0 and 1.
(80) If the programmed conductance of the first neighboring RRAM cell is greater than the error corrected target conductance of the first neighboring RRAM cell, the programmed conductance error is represented by a positive number. Accordingly, the third error corrected target conductance would be the third target conductance of the third neighboring RRAM cell reduced by all, some, or none of the programmed conductance error of the first neighboring RRAM cell, depending on the value of third factor a.
(81) If the programmed conductance of the first neighboring RRAM cell is less than the error corrected target conductance of the first neighboring RRAM cell, the programmed conductance error is represented by a negative number. Accordingly, the third error corrected target conductance would be the third target conductance of the third neighboring RRAM cell reduced by all, some or none of the negative programmed conductance error of the first neighboring RRAM cell. In such an example, depending on the value of third factor a, the third factor of the programmed conductance error of the first neighboring RRAM cell would be effectively added to the third target conductance of the third neighboring RRAM cell (e.g., G.sub.n+2.sup.T−a.Math.(−ΔG.sub.n+1.sup.E)).
(82) As described above in relation to step 166 of
(83) At 172 of
(84) As described above in relation to
(85) As described above in relation to the programmed conductance error of the selected RRAM cell, the programmed conductance error of the second neighboring RRAM cell may be determined by measuring the actual programmed conductance of the second neighboring RRAM cell reduced by the error corrected target conductance of the second neighboring RRAM cell.
(86) In some examples, the fourth error conductance G.sub.n−2.sup.ET is represented by
G.sub.n−2.sup.ET=G.sub.n−2.sup.ET−b.Math.ΔG.sub.n−2.sup.ET (6)
where G.sub.n−2.sup.T is the fourth target conductance of the fourth neighboring RRAM cell, ΔG.sub.n−1.sup.E is the programming conductance error of the second neighboring RRAM cell, and b is a fourth factor, wherein 0≦b≦1. In such examples, the fourth error corrected target conductance of the fourth neighboring RRAM cell is reduced by a fourth factor of the programmed conductance error of the second neighboring RRAM cell where b is a positive fraction equal to or between 0 and 1.
(87) If the programmed conductance of the second neighboring RRAM cell is greater than the error corrected target conductance of the second neighboring RRAM cell, the programmed conductance error is represented by a positive number. Accordingly, the fourth error corrected target conductance would be the fourth target conductance of the fourth neighboring RRAM cell reduced by all, some, or, in some examples, none of the programmed conductance error of the second neighboring RRAM cell, depending on the value of fourth factor b.
(88) If the programmed conductance of the second neighboring RRAM cell is less than the selected target conductance, the programmed conductance error is represented by a negative number. Accordingly, the fourth error corrected target conductance would be the fourth target conductance of the fourth neighboring RRAM cell reduced by all, some or none of the negative programmed conductance error of the second neighboring RRAM cell. In such an example, depending on the value of fourth factor b, the fourth factor of the programmed conductance error of the second neighboring RRAM cell would be effectively added to the fourth target conductance of the fourth neighboring RRAM cell (e.g., G.sub.n−2.sup.T−b.Math.(−ΔG.sub.n−1.sup.E)).
(89) As described above in relation to step 168 of
(90) In some examples in which the first error corrected conductance is represented by equation (1) and the second error corrected conductance is represented by equation (2), the sum of the first factor x and the second factor y may be equal to 1 (x+y=1). Thus, the total programmed conductance error of the selected RRAM cell may be distributed to the first and second neighboring RRAM cells (at least ideally, as each of the first and second neighboring RRAM cells may themselves have a programmed conductance error associated with them after programming). As described above, in some examples, the programmed conductance error of the selected RRAM cell may be equally or unequally distributed amongst the first and second neighboring RRAM cells.
(91) In some examples in which the third error corrected conductance is represented by equation (5) and the fourth error corrected conductance is represented by equation (6), factors a and b may be equal to 1 such that the total programmed conductance error of the first neighboring RRAM cell and the second neighboring RRAM cell are distributed to the third and fourth neighboring RRAM cells, respectively (at least ideally, as each of the third and fourth neighboring RRAM cells may themselves have a programmed conductance error associated with them after programming). In other examples, the programmed conductance error of the first and second neighboring RRAM cells may also be distributed to other neighboring RRAM cells.
(92) In other examples, some neighboring RRAM cells may not be adjusted at all. For instance, in an example in which the selected RRAM cell is the nth cell in a row, the first neighboring RRAM cell is the “n+1” cell and the second neighboring RRAM cell is the “n−1” cell, a first factor x may be set to 0 such that only the cell to the left of the selected RRAM cell in the row is adjusted by the programmed conductance error of the selected RRAM cell.
(93) In yet other examples, the sum of the factors may be less than or greater than 1. For example, a conductance amount greater than the programmed conductance error of the selected RRAM cell may be distributed to the neighboring RRAM cells such that the sum of the factors would be greater than 1. In another example, a conductance amount less than the programmed conductance error of the selected RRAM cell may be distributed to the neighboring RRAM cells such that the sum of the factors would be less than 1.
(94) Although the flowchart of
(95)
(96) As depicted in
(97) In the example of
(98) In some examples, each RRAM cell may have a conductance G that indicates the row and column at which the RRAM cell is located. For instance, the conductance of RRAM cell RC.sub.1,1 may be represented by G.sub.1,1. The conductance of RRAM cell RC.sub.1,2 may be represented by G.sub.1,2, and so on. As shown, at each row line R.sub.1, R.sub.2, R.sub.3, R.sub.4, through R.sub.N, a corresponding input voltage V.sub.1.sup.I, V.sub.2.sup.I, V.sub.3.sup.I, V.sub.4.sup.I, through V.sub.N.sup.I may be applied. The application of an input voltage V.sub.1.sup.I at row line R.sub.1 yields an output current at each of the column lines of RRAM array 200. In one example, if an input voltage V.sub.1.sup.I is applied at row line R.sub.1 having an RRAM cell RC.sub.1,2 with a conductance of G.sub.1,2, an output current at column line C.sub.2 may be represented by I.sub.2.sup.O.
(99) A current through any RRAM cell yields the product of an input voltage and the programmed conductance. This current I.sub.j may be represented as
I.sub.j=G.sub.i,j.Math.V.sub.i (7)
where I.sub.j represents a current I at a column j, G.sub.i,j represents a conductance G at row i and column j, and V.sub.i represents a voltage V at row i.
(100) Because a current through any RRAM cell yields the product of an input voltage and the programmed conductance, a dot product may be computed for RRAM array 200. For instance, if an input voltage V.sub.i.sup.I were applied to a row i of RRAM array 200, the dot product may be the vector of output currents I.sub.j.sup.O. This vector of output currents I.sub.j.sup.O may be represented as
I.sub.j.sup.O=Σ.sub.iG.sub.i,j.Math.V.sub.i.sup.I
where the vector of output currents is the sum of the product of a conductance G at row i and column j and an input voltage V at row i. Depending on the programmed conductance of the RRAM cells within RRAM array 200, the dot product may result in the application of a linear transformation, a convolution operation, or a neural network inference algorithm.
(101) In some examples, the RRAM cells of RRAM array 200 may be programmed for an analog computation as described above in relation to
(102) The second neighboring RRAM cell may also be one of RC.sub.3,1, RC.sub.3,3, RC.sub.2,2, or RC.sub.4,2 different from the first neighboring RRAM cell, but in the same row or column as the first neighboring RRAM cell and the selected RRAM cell. Because, in the example described herein, the selected RRAM cell is RC.sub.3,2, and the first neighboring RRAM cell is RC.sub.4,2, the second neighboring RRAM cell is RC.sub.2,2. Second neighboring RRAM cell RC.sub.4,2 is programmed with a second error corrected target conductance, wherein the second error corrected target conductance is a function of a second target conductance and the programmed conductance error of the selected RRAM cell, as described above in relation to step 164 of
(103) In some such examples, the first target conductance and the second target conductance may be together reduced by an amount equal to the programmed conductance error of the selected RRAM cell, as described above in relation to
(104) In some examples, in which the selected RRAM cell is RC.sub.3,2, the first neighboring RRAM cell is RC.sub.4,2, and the second neighboring RRAM cell is RC.sub.2,2, a third and fourth neighboring RRAM cell may be one of RC.sub.5,2 (not shown) and RC.sub.1,2, respectively. Third neighboring RRAM cell RC.sub.5,2 is programmed with a third error corrected target conductance, wherein the third error corrected target conductance is a function of a third target conductance and a programmed conductance error of the selected RRAM cell, as described above in relation to step 166 of
(105) In some such examples, the first, second, third, and fourth target conductance may be together reduced by an amount equal to the programmed conductance error of the selected RRAM cell, as described above in relation to
(106) As described above in relation to
(107) Although RRAM array 200 of
(108) Further examples are described in relation to
(109) In examples described herein, a processing resource may include, for example, one processor or multiple processors. As used herein, a processor may be at least one of a central processing unit (CPU), a semiconductor-based microprocessor, a graphics processing unit (GPU), a field-programmable gate array (FPGA) to retrieve and execute instructions, other electronic circuitry suitable for the retrieval and execution instructions stored on a machine-readable storage medium, or a combination thereof. Processing resource 305 may fetch, decode, and execute instructions stored on storage medium 310 to perform the functionalities described below in relation to instructions 320, 330, and 340. In other examples, the functionalities of any of the instructions of storage medium 310 may be implemented in the form of electronic circuitry, in the form of executable instructions encoded on a machine-readable storage medium, or a combination thereof.
(110) As used herein, a machine-readable storage medium may be any electronic, magnetic, optimal, or other physical storage apparatus to contain or store information such as executable instructions, data, and the like. For example, any machine-readable storage medium described herein may be any of Random Access Memory (RAM), volatile memory, non-volatile memory, flash memory, a storage drive (e.g., a hard drive), a solid state drive, any type of storage disc (e.g., a compact disc, a DVD, etc.), network attached storage such as “cloud” storage (e.g., remote data storage accessible via the Internet), and the like, or a combination thereof. Further, any machine-readable storage medium described herein may be non-transitory. In the example of
(111) Instructions 320 program a selected RRAM cell of the RRAM array with a selected target conductance, as described above in relation to step 120 of
(112) As described herein, instructions 320, 330, and 340 may be executed by processing resource 305 of a device (not shown). In some examples, instructions 320, 330, and 340 may be part of an installation package that, when installed, may be executed by processing resource 305 to implement the functionalities described above. In such examples, storage medium 310 may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed. In other examples, instructions 320, 330, and 340 may be part of an application, applications, or component(s) already installed on a device (not shown) including processing resource 305. In such examples, the storage medium 310 may include memory such as a hard drive, solid state drive, or the like. In some examples, functionalities described herein in relation to
(113)
(114) Instructions 340B comprise 340a, 340b, and 340c, as described above in relation to
(115) Instructions 340B also comprise instructions 342 that program a second neighboring RRAM cell with a second error corrected target conductance, as described above in step 164 of
(116) As described herein, instructions 341 and 342 may be executed by processing resource 305 of a device (not shown). In some examples, instructions 341 and 342 may be part of an installation package that, when installed, may be executed by processing resource 305 to implement the functionalities described above. In such examples, storage medium 310 may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed. In other examples, instructions 341 and 342 may be part of an application, applications, or component(s) already installed on a device (not shown) including processing resource 305. In such examples, the storage medium 310 may include memory such as a hard drive, solid state drive, or the like. In some examples, functionalities described herein in relation to
(117)
(118) Instructions 340C comprise 340a, 340b, and 340c, as described above in relation to
(119) Instructions 340C also include instructions 343 and 344. Instructions 343 program a third neighboring RRAM cell with a third error corrected target conductance, as described above in step 166 of
(120) Instructions 344 program a fourth neighboring RRAM cell with a fourth error corrected target conductance, as described above in step 168 of
(121) As described herein, instructions 341, 342, 343, and 344 may be executed by processing resource 305 of a device (not shown). In some examples, instructions 341, 342, 343, and 344 may be part of an installation package that, when installed, may be executed by processing resource 305 to implement the functionalities described above. In such examples, storage medium 310 may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed. In other examples, instructions 341, 342, 343, and 344 may be part of an application, applications, or component(s) already installed on a device (not shown) including processing resource 305. In such examples, the storage medium 310 may include memory such as a hard drive, solid state drive, or the like. In some examples, functionalities described herein in relation to
(122)
(123) Instructions 340D comprise 340a, 340b, and 340c, as described above in relation to
(124) Instructions 340D further includes instructions 345 and 346. Instructions 345 program a third neighboring RRAM cell with a third error corrected target conductance, as described above in step 170 of
(125) Instructions 346 program a fourth neighboring RRAM cell with a fourth error corrected target conductance, as described above in step 172 of
(126) As described herein, instructions 341, 342, 345, and 346 may be executed by processing resource 305 of a device (not shown). In some examples, instructions 341, 342, 345, and 346 may be part of an installation package that, when installed, may be executed by processing resource 305 to implement the functionalities described above. In such examples, storage medium 310 may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed. In other examples, instructions 341, 342, 345, and 346 may be part of an application, applications, or component(s) already installed on a device (not shown) including processing resource 305. In such examples, the storage medium 310 may include memory such as a hard drive, solid state drive, or the like. In some examples, functionalities described herein in relation to