  As CMOS scaling reaches its technological limits, a radical departure from
traditional von Neumann systems, which involve separate processing and memory
units, is needed in order to significantly extend the performance of today's
computers. In-memory computing is a promising approach in which nanoscale
resistive memory devices, organized in a computational memory unit, are used
for both processing and memory. However, to reach the numerical accuracy
typically required for data analytics and scientific computing, limitations
arising from device variability and non-ideal device characteristics need to be
addressed. Here we introduce the concept of mixed-precision in-memory
computing, which combines a von Neumann machine with a computational memory
unit. In this hybrid system, the computational memory unit performs the bulk of
a computational task, while the von Neumann machine implements a backward
method to iteratively improve the accuracy of the solution. The system
therefore benefits from both the high precision of digital computing and the
energy/areal efficiency of in-memory computing. We experimentally demonstrate
the efficacy of the approach by accurately solving systems of linear equations,
in particular, a system of 5,000 equations using 998,752 phase-change memory
devices.
