In our project, we developed a new computer architecture that enables true in-memory processing based on a unit that can both store and process data using the same cells. This unit, called a memristive memory processing unit (mMPU), substantially reduced the necessity of moving data in computing systems, addressing the two main bottlenecks of current computing systems: speed ('memory wall') and energy efficiency ('power wall'). Emerging memory technologies, namely memristive devices, enabled the mMPU. While memristors are naturally used as memory, these novel devices can also perform logical operations using a technique we invented called Memristor Aided Logic (MAGIC). This combination formed the basis of the mMPU.
The goal of this research was to design a fully functional mMPU and demonstrate a real computing system with significantly improved performance and energy efficiency. We identified four main research tasks to demonstrate a full system utilizing the mMPU: mMPU design, system architecture and software, modeling and evaluation, and fabrication. Both the memristive memory array and the mMPU control were designed and optimized for different technologies in the first objective. For example, we developed tools such as SIMPLE and SIMPLER for automation of the controller design. The second objective dealt with various aspects of the system, including the programming model, different mMPU modes of operation and their corresponding system implications, compiler and operating systems, and others. For example, we explored different consistency models for the mMPU. To evaluate our system, we developed models, simulators, and evaluation tools in the third objective to measure the performance, area, and energy, and to compare them to other state-of-the-art computing systems. Lastly, we fabricated the different parts of the system and demonstrated their performance on several applications such as DNA sequencing, relational databases, and image processing.
During the project, we explored different technologies for processing with memristors (RRAM, CBRAM, PCM, Y-Flash, STT-MRAM), including experimental demonstrations of some of them. We also developed algorithms and tools to support the execution of different functions within the memory and for accurate evaluation of the performance and energy of in-memory processing. Additionally, we explored different architectures, protocols, and circuit design issues relevant to the mMPU. Our work resulted in significant advancements in in-memory processing technologies, paving the way for future innovations in computer architecture and specifically for processing-in-memory solutions.