As computing systems and society at large becomes more data-centric, the importance of being able to access data quickly and efficiently becomes critical. In current systems, hard disk performance limits overall system performance for data-intensive tasks and ultimately limits our ability to efficiently process massive amount of data quickly. A new class of advanced, solid-state non-volatile memories are poised to revolutionize how computer systems store and access persistent data. These memory technologies are 100s to 1000s times faster than conventional disk drives. However, they require a complete re-engineering of numerous system components as well as the interfaces between those components. Without understanding and implementing these changes, we will never realize the full potential of these memories. In this research, the PIs propose to design, implement, and evaluate new system components and abstractions for accessing non-volatile, solid-state memories. They will construct hardware prototype system, simulation systems, and custom-built software systems to reduce the cost of accessing these memories and make them easier for programmers to use safely and reliably.
Redefining the interface and abstractions that programs use to access and manipulate persistent state will have significant effects across all aspects of computer system design. It will require thinking hardware, operating system, programming language, and application-level design decisions and enable new models for data-intensive computation. The PIs will incorporate the programming models, prototypes, and applications into the curriculum of the CSE department at UCSD. Finally, the broad and interdisciplinary scope of the rsearch makes it an excellent tool for recruiting groups that are traditionally underrepresented in computing fields.
Our project how to integrate new memory technologies into computing systems and how to allow those systems to benefit fully from the performance and features that these new memory technologies can provide. The technologies we studied are "non-volatilie" because they retain data after power has been removed from the system. Conventional memory technologies do not have this property. In conventional systems, programs running on the computer operate on data structures that reside in volatile memory and, when the system wants to preserve the data, the system converts the data into another format and writes it out to hard disk or other storage device. This conversion between the volatile and non-volatile versions of the data is inefficient. Our work allowed programmers to use a single format for both operating on and for preserving the data, leading to programs that are more efficient and more responsive to users. This transitions raises a host of challenges. For instance, if a program is modifying a piece of data and power fails in the midst of the modification, the data may be preserved in corrupted state. To avoid this kind of problem, we created software tools that allowed programmers to manipulate data without the possibility of it being preserved in a corrupted state. This will make it much easier for programmers to successfully use these new memories in future computing systems and should lead to better, more efficient, and more responsive software as well as increased programmer productivity.