Persistent Memory Programming Part 1: What is Persistent Memory?
Intel’s Andy Rudoff describes persistent memory and delves into why there’s so much activity around it in the industry lately. Andy describes how persistent memory is connected to a computer platform, how it performs, and what are some of the challenges for programmers. Andy is a Non-volatile Memory Software Architect and a member of the SNIA (Storage Networking Industry Association) Non-volatile Memory Programming Technical Work Group.
Hi. I'm Andy Rudoff from Intel. In this video, I'll explain what persistent memory is and why there's so much excitement around it. Don't forget to watch the rest of this playlist on persistent memory programming.
Let's start by describing what persistent memory is. Sometimes called storage class memory, persistent memory is only recently available on modern hardware due to the emergence of new memory technologies such as Intel's 3D XPoint memory. These new technologies allow products with the attributes of both storage and memory. These products are persistent, like storage, meaning they hold their contents even across power cycles. And they're byte addressable, like memory, meaning programs can access data structures in place. But what really makes persistent memory stand out is that it's fast enough to access directly from the processor without stopping to do the Block I/O required for traditional storage.
Performance is why there's so much recent excitement in the industry around persistent memory. If you compare a modern NAND-based SSD which plugs into the PCIe bus and communicates using MDM Express protocol, you can see the time it takes to read a block is over 80 microseconds. Notice how most of the time is spent accessing the media indicated by the blue area. The software stack is a small percentage of the overall access time. We could work on making the device driver faster and the difference would be hardly noticeable.
The Intel Optane SSD also plugs into the PCIe bus, but uses 3D XPoint, so the time spent accessing the media shrinks way down. Now notice that the overhead of the software stack in the PCIe protocol is a significant portion of the overall latency. To get the most out of 3D XPoint technology, it now makes sense to tackle the overhead of both software and the interconnect.
That's where persistent memory comes in. By connecting the media to the memory bus, the CPU can access the data directly without any driver or PCIe overhead. And since memory is accessed in 64-byte cache lines, the CPU reads only what it needs to read instead of rounding every access up to a block size like storage. You can see how low latency a 64-byte read is here, although I also show a 4K read for an apples-to-apples comparison with the SSDS.
With persistent memory, applications have a new tier available for data placement. In addition to the memory and storage tiers, the persistent memory tier offers capacities larger than DRAM and performance significantly higher than storage. Applications can access persistent memory resident data structures in place like they do with traditional memory. This eliminates the need to page blocks of data back and forth between memory and storage.
To get this low latency direct access, we need a software architecture that allows applications to connect up with ranges of persistent memory. That's the topic of the rest of this video series. Re-architecting your software will take some time. Get started right away by watching this persistent memory programming playlist. And don't forget to check out the links in the description below.