CS 6501 - Non-Volatile Memory Systems
Instructor: Sudhanva Gurumurthi
Day and Time: Tuesday and Thursday, 2:00-3:15 PM
Location: MEC 341
We are in the era of data-centric computing. The massive growth in the volume of digital data poses new challenges for architecture and system design. As applications become more data intensive, there is greater pressure on all levels of the memory hierarchy to house the data and deliver it efficiently to the processor cores. While hard disk drives have served as the primary means of storage for decades, their performance limitations and high power consumption pose huge hurdles to their continued use in future data-centric computing platforms. Furthermore, as more cores are integrated onto the processor die, the gap between the I/O demands of the cores and the ability of the disk-based storage systems to deliver the data efficiently to them is rapidly widening. Similarly, as application working sets grow, there becomes a need to use larger caches and main memory, which again entail performance and power overheads.
Non-volatile memory technologies provide opportunities to address these challenges. There exist a variety of non-volatile memory technologies, such as flash and phase-change memory, each of which has unique characteristics that needs to be taken into account at both design time and runtime. There are a variety of ways to incorporate non-volatile memory into the memory hierarchy. For example, one may use such a memory to create a new level in the cache hierarchy, as a part of or a complete replacement for DRAM in main memory, or use it within the storage system in the form of Solid-State Disks (SSDs). Each of these approaches has implications at both the architecture and system levels. There are also interesting ways of leveraging the fact that these memory technologies are indeed non-volatile and can therefore retain data for long periods of time and across system power downs.
In this course, we will explore topics related to various aspects of non-volatile memory systems. The material for this course is drawn from papers published at both computer architecture and operating systems conferences and journals. In addition to reading and presenting papers, students will be expected to undertake a semester-long research project.
Graduate-level computer architecture (CS 6354 or equivalent). Undergraduate students who have taken an advanced computer architecture course (CS 433 or equivalent) are also welcome.
Undergraduate-level operating systems (CS 4414 or equivalent).
A strong background in C/C++ programming along with good systems development skills.
Course Reading List