Processor Support for NVM Programming

Processor Support for
NVM Programming
Andy Rudoff
Intel Corporation
NVM Summit
January 20th 2015
1
Challenges Introduced by
NVM Programming
2
NVM Summit
Mgmt.
Management UI
Block
Application
Standard
Raw Device
Access
File
Application
Standard
File API
Memory
Application
Standard
File API
Load/Store
User
Space
Management Library
File System
NVDIMM
NVM Summit
MMU
Mappings
Kernel
Space
NVDIMM Driver
3
PM-Aware
File System
Where Writes are Cached
Application
Standard
File API
Load/Store
User
Space
PM-Aware
File System
No Page Cache
MMU
Mappings
msync()
FlushViewOfFile()
Kernel
Space
pmem_persist()
NVDIMM
4
NVM Summit
The Road to Persistence
MOV
Core
L1
Core
L1
L1
L2
Core
L1
L1
L2
Core
L1
L1
L2
L1
L2
L3
Memory Controller
Memory Controller
NVDIMM
NVDIMM
5
NVDIMM
NVDIMM
NVM Summit
Hiding Places
MOV
Core
L1
Core
L1
L1
L2
Core
L1
L1
L2
Core
L1
L1
L2
L1
L2
L3
Memory Controller
Memory Controller
NVDIMM
NVDIMM
6
NVDIMM
NVDIMM
NVM Summit
Instruction-Level
Support
7
NVM Summit
Two Levels of Flushing Writes
CLFLUSH, CLFLUSHOPT, CLWB
PCOMMIT
NVDIMM
8
NVDIMM
NVM Summit
Flushing Writes from Caches
9
Instruction
Meaning
CLFLUSH addr
Cache Line Flush:
Available for a long time
CLFLUSHOPT addr
Optimized Cache Line Flush:
New to allow concurrency
CLWB addr
Cache Line Write Back:
Leave value in cache
for performance of next access
WBINVD
Heavy Hammer:
used by OS to flush entire cache
Privileged
NVM Summit
Flushing Writes from
Memory Controller
10
Instruction
Meaning
PCOMMIT
Persistent Commit:
Flush stores accepted by
memory subsystem
Asynchronous DRAM Refresh
Flush outstanding writes
on power failure
Platform-Specific Feature
NVM Summit
How to Use This
11
NVM Summit
NVM Library: pmem.io
64-bit Linux Initially
Application
Standard
File API
Load/Store
User
Space
PM-Aware
File System
Library
MMU
Mappings
• Open Source
• http://pmem.io
• Libpmem
• Libpmemobj
• Libpmemblk
Transactional
• Libpmemlog
• Libvmem
Kernel
Space
NVDIMM
12
NVM Summit
Summary
• New Instructions Emerging
– Support the SNIA NVM Programming Model
• Stay Tuned… more to come…
– But you probably want to use a library: http://pmem.io
• Intel Architecture Instruction Set Extensions
Programming Reference
– https://software.intel.com/en-us/intel-isa-extensions
13
NVM Summit
14
NVM Summit