Building Software for Persistent Memory
We have been building software to support persistent memories for over a decade — long before Intel released the first commercial persistent main memory. We began by describing and addressing the essential challenges that persistent memory software would face. We built NOVA, the world’s fastest persistent memory file system, Orion, the most capable distributed file system for persistent memory, and Onyx, the world’s first phase change memory SSD. Most recently, we described easy techniques to adapting existing programs to use PMEM, provided the first independent characterization of Optane persistent memory performance, and crafted simple rules for how programmers can maximize performance.
System Support for Persistent Memory
We build cutting-edge system software to support persistent memories and RDMA-based networking. We built NOVA, the world’s fastest (and most fault-tolerant) persistent memory file system and Orion, the most capable distributed file system for persistent memory. We built Moneta, QuickSAN, and Willow — SSDs that anticipated features of NVMe, NVMe-over-fabrics, and intelligent SSDs — as well as Onyx, the first publicly demonstrated phase change memory SSD. We are also updating legacy software stacks and file systems interface to be a better match for technologies like Intel’s Optane persistent main memory.
Persistent Programming
A decade before Intel’s persistent memory came to market, we published NV-Heaps describing the essential challenges that persistent memory software would face. When Optane became a reality, we had early and published the first independent characterization of its performance. We followed it with easy techniques to adapting existing programs to use PMEM performance and simple rules for how programmers can maximize performance. We are also building compilers, language support, debugging, and verification tools make PMEM programming easy and safe.
Training Researchers
My research group hosts a diverse set of students from all over the world. They learn to frame research questions, lead research projects, design experiments, and, most important, present and describe their ideas to maximize impact. They also write a lot of code. They learn practical skills and gain an understanding of how the publication process works.
I’ve advised fifteen Ph.Ds and four postdocs. Four are now faculty members (including Dr. Yiying Zhang who just join the UCSD faculty) and the rest are engineers at Google, Facebook, Microsoft, Intel, VMware, Qualcomm, NetApp, Western Digital, Micron, and other companies. For instance, Dr. Laura Caulfield (Ph.D. 2013) is a Senior Software Developer at Microsoft where she plays a central role in Windows Azure’s SSD strategy. You can read more about where my students end up.
Building Research Communities
Top researchers visit UC San Diego each year to attend the two research meeting we host. In March the Non-Volatile Memories Workshop attracts nearly 200 researchers from around the world to hear about the latest research developments in solid state storage. In summer, Persistent Programming In Real Life (PIRL) focuses on the nitty gritty of programming for PMEM in real, deployable systems. Both meetings give my students unmatched access to industry and research leaders and have helped make UCSD a global leader in storage systems research.
Grad Students
Training researchers is my main job, and I’m always looking for new graduate students. If you want to build cool systems (and enjoy some sun), please apply and mention me as a potential advisor.
Publications
Latest
Widely Cited
Teaching
In the Spring I teach CSE176e/276e: Robotic System Design and Implementation. In 10 weeks, students design and build a small quadcopter from scratch, including the hardware and software. The class covers PCB design and manufacturing, the principles of quadcopter operation, sensor filtering and fusion, simple control theory, and embedded systems programming. It’s lots of fun.
In CSE42: Designing and Programming Electronic Devices, students design, build, and program simple wheeled robots while they learn basic programming in CSE11 (Introduction to Computer Science
and Object-Oriented Programming). Working in the Envision Maker Studio, they design the robots using a custom robot design tool, 3D design tools, and their own creativity. Then, solder them together and program them with Arduino.
I teach Modern Storage Systems for graduate students. We cover the latest, greatest developments in storage technologies as well as the classic papers that lay the foundation for the modern era. The course includes, a large implementation project based on cutting edge hardware that forces students wrestle with the central issues at the heart of all storage systems: reliability, consistency, and performance.
Professor Leo Porter and I designed a new computer architecture course that covers how modern processors work and how software can exploit their latest features to maximize performance and efficiency. The course includes a hands-on lab that requires students to optimize a machine learning library for one of Intel’s latest processors. Getting the best performance requires understanding how pipelining, caching, core-level parallelism, and vector ISAs work together is modern CPUs and how to leverage them using profilers, compilers, and clever programming.
About
Steven Swanson is a professor in the Department of Computer Science and Engineering at the University of California, San Diego and the director of the Non-volatile Systems Laboratory. His research interests include the systems, architecture, security, and reliability issues surrounding heterogeneous memory/storage systems, especially those that incorporate non-volatile, solid-state memories. He has received an NSF CAREER Award, Google Faculty Awards, a Facebook Faculty Award, and been a NetApp Faculty Fellow. He is a co-founder of the Non-Volatile Memories Workshop. In previous lives, he worked on low-power co-processors for irregular applications and building scalable dataflow architectures. He received his Ph.D. from the University of Washington in 2006 and his undergraduate degree from the University of Puget Sound in 1999.
Office: EBU3B 3212 (Directions)
Phone: (858)534-1743
E-mail: swanson@cs.ucsd.edu
CV: Download PDF
Mailing Address:
Computer Science & Engineering
University of California, San Diego
9500 Gilman Drive
EBU3B 3212 MC 0404
La Jolla, CA 92093-0404