traditional computing systems. Strategies like adopting multiple levels of cache, [3] increasing memory bandwidth, [4] and near-memory computing [5] have been proposed to alleviate this problem which yet still seem to be insufficient to meet the increasing computing demands.In-memory computing (IMC) which refers to the realization of computational tasks within the memory unit aims to reduce the frequent movement of data across the bus (Figure 1b), providing new insights for building highly efficient computing systems. IMC with function of parallel computation, reducing either the computational complexity or accessed amount of data effectively can be performed on both volatile and non-volatile memories. IMC has a wide range of applications, ranging from stochastic computing that requires randomness and low precision to scientific computing with high precision. Volatile memories including static randomaccess memory (SRAM) and dynamic random-access memory (DRAM) have been mainly utilized to execute Boolean functions and obtained dozens of times speedup in compute-heavy as well as low input-output movement applications compared with conventional architectures in which SRAM and DRAM were only used for data storage. [6] While nonvolatile memory including Flash and emerging memristive devices (resistive random-access memory [RRAM], phase-change memory [PCM], and magnetic random-access memory [MRAM], etc.) with the ability to store a continuous conductance state were proved to perform matrix-vector multiplication (MVM) for parallel IMC based on Ohm's law and Kirchhoff's law. [7] Especially, the memristive device with crossbar configuration can be directly integrated with high density local interconnects and low thermal burden, allowing the significant boost to IMC performance.This review provides an overview of related work in various memory techniques, their applications, and required parameters in IMC, the current state of the art, and evaluation metrics and highlights opportunities for further development.
The Development of Memory TechnologiesDepending on the state of the data being stored, current memory technologies fall into two categories (Figure 2a): volatile and nonvolatile. Volatile memories will lose the data preserved when the power is disconnected, mainly including SRAM and DRAM, while information in nonvolatile memories including read-only memory (ROM), hard disk driver (HDD), Flash, MRAM, PCM, RRAM, and ferroelectric random-accessThe development of artificial intelligence and big data analytics is driving a revolution in methods for data processing and storage. Confronting speed and energy consumption issues, these fields require new computing systems to parallelly retrieve, process, and store massive amounts of data. Beyond CMOS devices and technology, advances in data storage technology such as static random-access memory, dynamic random-access memory, flash memories, resistive memories, phase change memories, and magnetic memories have made functional computing possible. In this article, a broad overvi...