Writing the weights into the array
Before any multiply, each weight has to be written as a conductance. The controller first RESETs the array to the amorphous, high-resistance state, then crystallizes each cell a little at a time with SET pulses, reading it back after every pulse and stopping when it is within tolerance of its target. A SET can only raise G, so if a pulse overshoots the cell is RESET and the climb starts again. The conductances this produces are the ones the crossbar uses, and they start to drift as soon as the write ends.
Pulse sequence for one cell
Array write map
Each number is how many write pulses that cell needed. Darker means more. Cells aimed at the lowest conductance stay at their erased value and need none. That is why every G⁺/G⁻ pair has a 0: a positive weight is written into the G⁺ cell and a negative one into the G⁻ cell, and the other cell of the pair rests at Gmin. The counts come from this page’s illustrative write model with seeded random variation, so they show the shape of the effect, not the figures of a real device. The counts depend only on where each target sits between Gmin and Gmax, not on their µS values, so moving Gmin or Gmax changes the targets in µS but leaves these counts the same. Click a cell to inspect its pulse sequence. A red outline marks a cell that never reached its tolerance.
Result y = xᵀW
Trace one output
Efficiency versus digital multiply-accumulate
A conventional processor fetches every weight from memory and performs the M×N multiply-adds one batch at a time. The crossbar keeps the weights where they are and finishes all of them in a single read. The figures come from an illustrative energy and timing model, so adjust the assumptions to match a design you care about.
References and further reading
This simulator is a teaching model. Its device behaviour (pulse response, variation, drift, energy and timing figures) is illustrative, not taken from a measured device. These papers describe the real systems it imitates. Links can change, so searching the title and DOI always works.
Phase-change memory and PCM weights supports the device settings, the write panels and drift
- Wong, H.-S. P., Raoux, S., Kim, S., Liang, J., Reifenberg, J. P., Rajendran, B., Asheghi, M. & Goodson, K. E. Phase change memory. Proceedings of the IEEE 98, 2201–2227 (2010). IEEE Xplore A review of the device physics, the materials, the scaling and the reliability of PCM, with a focus on memory use.
- Raoux, S. et al. Phase-change random access memory: a scalable technology. IBM Journal of Research and Development 52 (2008). IEEE Xplore Explains the mushroom cell, the SET and RESET operations and why the technology scales to small sizes.
- Wuttig, M. & Yamada, N. Phase-change materials for rewriteable data storage. Nature Materials 6, 824–832 (2007). doi:10.1038/nmat2009 Why some alloys switch between glass and crystal so quickly, and how the same materials are used in optical discs and in memory.
- Le Gallo, M. & Sebastian, A. An overview of phase-change memory device physics. Journal of Physics D: Applied Physics (2020). doi:10.1088/1361-6463/ab7794 A recent overview of threshold switching, crystallization, resistance drift and noise, written with in-memory computing in mind.
- Burr, G. W. et al. Experimental demonstration and tolerancing of a large-scale neural network (165,000 synapses) using phase-change memory as the synaptic weight element. IEEE Transactions on Electron Devices (2015). doi:10.1109/TED.2015.2439635 An early experiment that stored neural-network weights in a pair of PCM cells each, and what it took to tolerate their imperfections.
- Le Gallo, M. et al. A 64-core mixed-signal in-memory compute chip based on phase-change memory for deep neural network inference. Nature Electronics 6, 680–693 (2023). doi:10.1038/s41928-023-01010-1 A chip that does what the crossbar simulator in Step 3 models, built with PCM weights, and the drift and noise problems it had to handle.
- Wong, H.-S. P. et al. Metal–oxide RRAM. Proceedings of the IEEE 100, 1951–1970 (2012). doi:10.1109/JPROC.2012.2190369 A review of metal-oxide ReRAM: the switching mechanism, the materials and the electrical behaviour, with a focus on memory use.
- Waser, R. & Aono, M. Nanoionics-based resistive switching memories. Nature Materials 6, 833–840 (2007). doi:10.1038/nmat2023 A review of the physics behind resistive switching, where the movement of ions inside the material changes the cell’s resistance.
Crossbars, vector-matrix multiplication and in-memory computing supports the crossbar and the efficiency panel
- Hu, M. et al. Dot-product engine for neuromorphic computing: programming 1T1M crossbar to accelerate matrix-vector multiplication. 53rd ACM/EDAC/IEEE Design Automation Conference (DAC), 1–6 (2016). doi:10.1145/2897937.2898010 An analog memristor-crossbar accelerator for matrix-vector multiplication, with a method for mapping matrix values onto device conductances. The abstract reports results with only 4-bit DACs and ADCs.
- Ielmini, D. & Wong, H.-S. P. In-memory computing with resistive switching devices. Nature Electronics 1, 333–343 (2018). doi:10.1038/s41928-018-0092-2 A review of in-memory computing with resistive devices, covering digital, analogue and stochastic schemes and the challenges that remain.
- Sebastian, A., Le Gallo, M., Khaddam-Aljameh, R. & Eleftheriou, E. Memory devices and applications for in-memory computing. Nature Nanotechnology 15, 529–544 (2020). doi:10.1038/s41565-020-0655-z · free version A broad overview of the memory devices used for in-memory computing and the computational primitives they enable, from signal processing to deep learning.
Writing the weights supports the Programming panel
- Alibart, F., Gao, L., Hoskins, B. D. & Strukov, D. B. High precision tuning of state for memristive devices by adaptable variation-tolerant algorithm. Nanotechnology 23, 075201 (2012). doi:10.1088/0957-4484/23/7/075201 · arXiv:1110.1393 A feedback write algorithm that tuned the conductance of titanium-oxide devices to about 1% relative accuracy (roughly 7 bits) despite large variation in switching. The idea behind program-and-verify.
Splitting weights across several cells supports the Binary weighted cell encoding
- Shafiee, A. et al. ISAAC: a convolutional neural network accelerator with in-situ analog arithmetic in crossbars. ACM SIGARCH Computer Architecture News 44(3) (2016); presented at ISCA 2016. doi:10.1145/3007787.3001139 · author copy A crossbar accelerator that spreads each 16-bit weight over several memristor cells in the same row (2 bits per cell in the paper) and merges the columns with shifts and adds. The Binary weighted option is the 1-bit-per-cell extreme of the same idea.