Description

Special topics course taught by Mike Bond in Autumn 2019

Hardware manufacturers are producing new non-volatile memory devices (https://en.wikipedia.org/wiki/Non-volatile_memory) that, unlike DRAM, retain their contents if the power goes off. Non-volatile memory bridges the gap between volatile memory (DRAM) and current non-volatile storage (disk), enabling languages and systems to use persistent memory (https://en.wikipedia.org/wiki/Persistent_memory), but it also presents key challenges and open problems.
- How do we make systems that provide persistence guarantees with good performance?
- How do we extend programming languages to support persistent memory?
- How do we avoid wearing out non-volatile memory by performing too many writes to it?

In this class, we will learn about active research on non-volatile/persistent memory by reading, critiquing, and discussing papers (mostly from the list below), and students will complete project(s) related to the course material.

General Information

Asking questions and getting help: Piazza and office hours
The best ways to ask questions are in or after class, on Piazza, and at office hours. Unless your Piazza post needs to be private, please make the post *public*, since other students may be interested in the question and answer.

For office hours, please use the CSE 6341 calendar's office hours:
- HTML: https://calendar.google.com/calendar/embed?src=8qr16326qsmdsoc7ela3g5u3ko%40group.calendar.google.com&ctz=America%2FNew_York
- ICAL: https://calendar.google.com/calendar/ical/8qr16326qsmdsoc7ela3g5u3ko%40group.calendar.google.com/public/basic.ics

To contact the instructor privately, please make a private Piazza post instead of sending e-mail if possible. To set up an appointment outside of office hours, create a new When2meet event (https://www.when2meet.com) with your availability for at least three forthcoming (week)days, and send a link to the instructor.
Course calendar
The official source for class times, office hours, due dates, and exam days will be the course calendar. You can use the following links to view the calendar and/or import it into your calendar program.

HTML: https://calendar.google.com/calendar/embed?src=fh66vd4borvd7na2s6carq2414%40group.calendar.google.com&ctz=America%2FNew_York

ICAL: https://calendar.google.com/calendar/ical/fh66vd4borvd7na2s6carq2414%40group.calendar.google.com/public/basic.ics
Topics and readings
We'll read some of the following papers and materials.

Introductory material:
- Tutorial slides
(http://research.cs.wisc.edu/sonar/tutorial/ -- slides at bottom)
- Commercially available persistent NVM (https://newsroom.intel.com/news-releases/intel-and-micron-produce-breakthrough-memory-technology, https://www.intel.com/content/www/us/en/architecture-and-technology/optane-dc-persistent-memory.html)
- PM programming (https://www.usenix.org/system/files/login/articles/login_summer17_07_rudoff.pdf)

Persistency:
- Consistency and concurrency (https://cacm.acm.org/magazines/2010/8/96610-memory-models-a-case-for-rethinking-parallel-languages-and-hardware/fulltext)
- Memory persistency (https://web.eecs.umich.edu/~twenisch/papers/isca14.pdf)
- Language-Level Persistency (http://web.eecs.umich.edu/virtual/papers/kolli17.pdf)
- Persistency for Synchronization-Free Regions (https://web.eecs.umich.edu/~pmchen/papers/gogte18_1.pdf)
- Efficient persist barriers for multicores (http://homepages.inf.ed.ac.uk/vnagaraj/papers/micro2015.pdf)

Failure atomicity based on critical sections:
- Leveraging locks with Atlas (https://dl.acm.org/citation.cfm?id=2660224)
- NVthreads (extends Atlas) (https://www.cs.purdue.edu/homes/hsu62/nvthreads-eurosys.pdf)
- Atlas follow-up (https://dl.acm.org/citation.cfm?id=2926704)
- Another critical-section-based approach (https://anon.cs.rochester.edu/research/synchronization/2016_Izraelevitz_ASPLOS_JUSTDO_logging.pdf)

Persistent transactions:
- NV-Heaps (https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/Asplos2011_NVHeaps.pdf)
- SoftWrAP (http://storageconference.us/2015/Papers/03.Giles.pdf)
- Use undo logging assuming transactions know set of writes in advance (https://web.eecs.umich.edu/~pmchen/papers/kolli16.pdf)
- Kamino-Tx (https://courses.engr.illinois.edu/ece598ms/sp2018/papers/paper54.pdf)
- Log-structured NVM (https://www.usenix.org/system/files/conference/atc17/atc17-hu.pdf)
- Evaluation of persistent transactions (https://arxiv.org/pdf/1804.00701)

System support for persistent memory:
- PMFS (http://esos.hanyang.ac.kr/files/courseware/graduate/System_software/a15-dulloor.pdf)
- Mnemosyne (http://research.cs.wisc.edu/sonar/papers/mnemosyne-asplos2011.pdf)
- Condit et al. 2009 (https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/BPFS.pdf)

HTM background:
- Herlihy and Moss 1993 (although this is a classic paper, the course isn't about HTM specifically, so we can probably read parts of the TM book instead)
- 2010: TM book (https://www.morganclaypool.com/doi/abs/10.2200/S00272ED1V01Y201006CAC011)
- Intel TSX, Yoo et al. 2013 (https://dl.acm.org/citation.cfm?id=2503232)

Use unmodified commodity HTM with PM:
- DudeTM (https://people.persper.org/jinglei/dudetm-asplos17.pdf)
- NV-HTM (https://ieeexplore.ieee.org/document/8425190/)
- Giles et al. 2017 (https://scholarship.rice.edu/bitstream/handle/1911/96585/ISMM17.pdf)
- Crafty (in progress)

Modify hardware to provide persistent transactions:
- Giles et al. 2018 (https://dl.acm.org/citation.cfm?id=3240305)
- PHTM (https://link.springer.com/chapter/10.1007%2F978-3-662-48653-5_41)
- PTM (https://ipads.se.sjtu.edu.cn/_media/publications/ptm-cal15.pdf)
- PHyTM (http://www.vldb.org/pvldb/vol10/p409-brown.pdf)
- ATOM (https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7920839)

Miscellaneous::
- Efficient NVM logging (https://dl.acm.org/citation.cfm?id=3133891)
- Transparent program checkpointing with ThyNVM (https://cseweb.ucsd.edu/~jzhao/files/thynvm-micro2015.pdf)
In-class discussions
Try to participate in every discussion, but not so much that others have trouble participating. Quality counts more than quantity. Take risks. It's okay to be "wrong."

You're encouraged to discuss papers in small groups with your classmates prior to our in-class discussion.

Discussion leaders should prepare to lead the class in a discussion of the paper's most interesting points. Note that the discussion is not a presentation, i.e., it's not like a conference talk. Everyone has already read the paper. That said, these papers are hard and will have material that's new to most of us, so as much as half of the discussion time should be spent leading discussion of challenging points in the paper. The rest of the time should be spent leading discussion of questions or topics that go beyond just understanding the paper's key points, such as discussing strengths, weaknesses, connections to related work, and opportunities/challenges/ideas for future work.

Please understand that I will hijack discussion periodically to make sure that certain points are part of the discussion and understood by the class.

Having slides is not strictly necessary, but slides are often helpful to put up a few diagrams from the paper (or conference talk), and to display your discussion questions. (The room has a Windows PC and an HDMI cable for a personal laptop, and I have a USB-C to HDMI converter.) It's often a good idea to draw on the blackboard during a discussion.

You may obtain the authors' slides if you like, but don't just use these slides (they will cause you to give a presentation rather than lead a discussion). It's okay to copy-paste diagrams from the slides to aid discussions. It's also okay to just copy-paste diagrams from the paper's PDF. Give appropriate credit on your slides (either throughout or on the first slide of your slides).

If you're a paper's discussion leader, send your discussion notes and questions (can be slides but definitely don't need to be) to me by private Piazza post by 24 hours before the in-class discussion, so he can give you feedback. You're welcome to ask questions or ask for feedback much sooner than that, e.g., if you have questions after reading the papers but before starting to work on discussion topics.
Grades
Approximate grade breakdown:

35% class participation
20% leading in-class discussions
45% project

I'll give you feedback during the semester if you need to improve on any of these things.
General policies
We should all be respectful of everyone else's questions, comments, and opinions.

To avoid distracting yourself, your fellow students, and me, please do the following:
- Arrive on time to class (I plan to start and end class exactly on time).
- Put phones away and silence them and keep them put away.
- Only use laptops and tablets for improving in-class discussion. Otherwise, or if they're going to distract you, put them away.

You are welcome to bring beverages such as coffee and water to class. Food is okay if it's not messy or distracting.
Disabilities and religious obligations
Please contact me as early as possible so I can help make reasonable accommodations.
Academic integrity
Representing someone else's work as your own is a seriously violation of academic integrity.

If you receive help from any source, you must explicitly acknowledge the source and nature of the help (i.e., add a written note on the paper or presentation). If the help seems unreasonable, you might lose some credit, but there won't be any academic integrity consequences, since you acknowledged the help you received.

I am obligated by University Rules to report any suspected violation to the Committee on Academic Misconduct (COAM). COAM decides whether a violation has occurred and, if so, what the penalty will be, which can include a failing grade and suspension or dismissal from the University.

Announcements

Announcements are not public for this course.
Staff Office Hours
NameOffice Hours
Michael Bond
When?
Where?

General Resources