Recently, I had the distinct privilege of acting as host, opening, and closing speaker at the Persistent Memory Summit, an event held by the Storage Networking Industry Association (SNIA). This one-day event drew over 200 participants from many different companies and featured several distinguished speakers and analysts from the semiconductor and storage industries. It was a great day, filled with learning, discussion, and collaboration on the topic.
Still, if you’re reading this, you may be saying – what’s persistent memory? Isn’t memory (RAM) volatile? Well, to be blunt, if you don’t know about persistent memory (PM) yet, you should. It is already having an impact on computing and server design by facilitating several different improvements in the way applications use system resources, such as processors and memory. Frankly, much of the computing world changes if you can assume that memory is persistent.
Imagine the implications – for filesystems, databases, and in-memory computing – if data can persist across power loss, potentially for the lifetime of the server. No more reloading data into memory from peripherals (e.g. disk). No more caching data in memory, just for the sake of having it there – instead, store your data in PM and keep it there. Don’t cache it, use it. It’s in memory already – no caching required! Furthermore, in the very near future (this year, and also next year), the level of impact will take a significant step upward as new forms of PM hit the marketplace. In short, you HAVE to be aware of this technology and what it means to computing.
A bit (pun intended) of history. Three years ago, the first generally available form of PM hit the market, known as non-volatile DIMMs, or NVDIMMs. NVDIMM technology is standardized and is widely available, especially in the form known as an NVDIMM-N, which contains both volatile memory (DRAM in particular) and non-volatile memory (NAND flash in particular). An NVDIMM-N is highly useful, in that it appears as a normal DIMM to the BIOS and operating system, aka RAM, but upon power loss, the NVDIMM-N can save its own contents into the non-volatile (flash) area. This takes place (assuming an external energy source, like supercapacitors) without any BIOS or CPU intervention. Upon restoration of power, the NVDIMM performs the reverse – the contents of flash are copied back into DRAM, before the OS boots. Therefore, the contents are exactly as they were at the instant of power loss.
These NVDIMM-Ns are widely available, from several different suppliers, and have wide support across server vendors and also operating systems. Linux and Windows, in particular, have supported NVDIMM-N for more than two years now, and provide filesystem and application-level support for their use and operation. This is a wonderful thing – and something that you should know about!
Beyond NVDIMMs lie new and exciting forms of PM, some of which are just now hitting the market. In particular, two new forms – MRAM and 3D Xpoint – were discussed at length during the Persistent Memory Summit. Platform (both hardware and software) support for these two forms of PM is also imminent. Yet this year, you will see several announcements on the topic from several different memory suppliers and platform/OS providers as well.
Now that I have your interest – hopefully – there are terrific resources at your beck and call. On the SNIA website, you will find numerous resources to learn about PM such as videos from the recent Summit (especially on the SNIA YouTube channel). I cannot over-emphasize how important this technology is, and will be, to server-based computing in the near future – specifically, starting now and into the next three or four years. PM already is paying major dividends in application performance, especially relative to using peripheral-based non-volatile memories such as NAND (flash memory) on an SSD. As wonderful as NVM Express (NVMe)-based SSDs are, PM allows applications to persist (and read back) data typically at least an order of magnitude (10x) quicker, if not 30-50x. Imagine performing data-intensive workloads at this rate. If reading data from disk is your bottleneck, that’s the improvement you may realize if your application stays in the memory channel and doesn’t have to read from disk.
Since PM is memory, byte-addressable and persistent data can be accessed via CPU operations (in particular the well-understood load/store semantics). This is opposed to I/O semantics – read/write, where blocks of data (as opposed by bytes) are addressed. Plus, since the CPU is doing memory load/store, it is not interrupted by the typical I/O processing (e.g. interrupts and context switches). Your application runs unimpeded. After all, you are paying for the CPU one way or the other, either buying servers for on-premises work or renting instances from a cloud provider – why not utilize the CPU at its most efficient?
Bringing this back full circle, at the PM Summit, all of the above – and then some – was presented, with plenty of Q&A. I strongly encourage you to watch the videos of the presentations, from the aforementioned SNIA website and YouTube channel. PM could very well end up in your next general computing platform, servers in particular, or even more far-fetched uses such as in mobile devices and embedded platforms. I suspect that PM will become as ubiquitous in servers as did DRAM, after its introduction nearly thirty years ago – supplanting SRAM (remember SRAM modules?) as the dense, cost-efficient memory of choice. PM will become another part of the memory hierarchy – starting with SRAM-based caches in CPUs, then DRAM, then PM. All of those memory technologies, brought to bear by intelligent OSes, and leveraged outwards to the world of applications, will enable ever-more efficient computing.