source: Arthur Sainio, In-memory computing summit,2016
With the announcements of new storage-class memory (SCM) based devices, such as Intel & Micron 3D XPoint, HPE & SanDisk memristors, Samsung & Netlist NVDIMM-P and Sony & Viking Technology NVDIMM-N. The performance characteristics of the NVMs have significally changed, such as DRAM-like latencies and fine-grain data access. Legacy approaches to access storage and memory impose unnecessary overheads while using the new NVM technologies. The software engineers are currently working on a evolving concept for the convergence of storage and memory system. Software-Defined Memory (SDM) was originally coined in 2014 by SanDisk to describe the new software abstraction to access their SSD and persistent memory devices. Intel and Fusio.io also proposed their SDM solutions trying to provide agile approach to access storage and memory objects. Current active prototypes of Software Defined Memory (SDM) includes:
This project actively supported by Fusion-io, Inc.
This project actively supported by Intel, Inc.
- Download the NVDIMM Kernel Tree
- Compile kernel with the following configurations to enable PMEM and DAX support.
- If you have NVDIMMs, then you should have kernel support. If you don’t have NVDIMMs, you can still test the new PMEM features via volatile memory (i.e. DRAM ) mapping.
- Volatile memory mapping
- Check if you have pmem device
- ls /dev/pmem0
- fdisk -l /dev/pmem0Disk /dev/pmem0: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
- Format ext4 file system and mount
- mkdir /mnt/pmem
- mkfs.ext4 -F -b 4096 /dev/pmem0
- mount -o dax /dev/pmem0 /mnt/pmem
NVDIMM Kernel Tree: https://git.kernel.org/cgit/linux/kernel/git/nvdimm/nvdimm.git
NVDIMM Namespace: http://pmem.io/documents/NVDIMM_Namespace_Spec.pdf
DSM Interface Example: http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf
Driver Writer’s Guide: http://pmem.io/documents/NVDIMM_Driver_Writers_Guide.pdf
Non-volatile memory ( NVM ) is a type of computer memories that can retrieve stored information across even power failure. Unlike volatile memory, NVM does not need its memorized data to be refreshed periodically. It is commonly used for secondary storage or long-term consistent storage. Examples of mechanical NVMs storage include, hard disk drive (HDD) and magnetic tape. Another type of NVMs is electrical. Examples of electrical NVM storage include, EEPROM, Flash memory, and solid-state drive (NAND flash SSD)
Recent in developing NVM technologies include:
- 3D XPoint(Intel, Micron)
- Memristor (HP, SK Hynix)
- Nano-RAM (Nantero)
- Phase Change Memory (Intel, Micron, IBM)
- Race Track
To make memory persistent, we are facing a number of challenges:
1. How to ensure information stored is durable? The computer system still includes volatile cache memory system. We need to ensure data in caches is flushed. When and how to flush the data impact the system performance .
2. How to ensure consistency of updates? Modern computer have multiple layer private and shared caches. One data could have multiple copies in caches. How to ensure consistency is still a big challenge. This requires change of hardware and software programming models to achieve this goal.
3D XPoint™ technology is an new class of non-volatile memory that can help turn immense amounts of data into valuable information in real time. With up to 1,000 times lower latency and exponentially greater endurance than NAND, 3D XPoint technology can deliver game-changing performance for big data applications. Its ability to enable high-speed, high-capacity data storage close to the processor creates new possibilities for system architects and promises to enable entirely new applications.