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
© Copyright 2024