Giter Site home page Giter Site logo

docs's Introduction

Persistent Memory Documentation

Introductory Materials

This USENIX ;login: article, published in the Summer of 2017, provides an overview of the persistent memory programming model and the related software work that has been taking place. It includes a very high-level description of programming with PMDK, although it refers to it by the old name, NVM Libraries. This article is actually a follow-on to an earlier article, published in the Summer 2013 issue of USENIX ;login:.

The Persistent Memory Summit 2018, held January 24th, 2018, provided a day full of informative talks and panels on persistent memory (slides and videos of the sesssions are available at above link).

The projects on this site, like PMDK, are product-neutral, meant to work on any product that provides the persistent memory programming model. One such product is Intel’s 3D XPoint. Intel has assembled a collection of persistent memory programming documentation, webinars, videos, and related materials on the Intel Developer Zone.

Dozens of companies have collaborated on a common persistent memory programming model in the SNIA NVM Programming Technical Workgroup (TWG). SNIA provides a persistent memory page on their web site with links to recent presentations, persistent memory standards and white papers, etc. The SNIA activity continues to be very active, working on areas like remote persistent memory and security. The original programming model specification put forward the basic idea that applications access persistent memory as memory-mapped files, a concept which has appeared as the DAX feature (Direct Access) on both Linux and Windows.

Standards

The SNIA NVM Programming Model standard describes the basic programming model used for persistent memory programming.

The ACPI Specification, starting with version 6.0, defines the NVDIMM Firmware Interface Table (NFIT) which is how the existence of persistent memory is communicated to operating systems. The specification also describes how NVDIMMs are partitioned into namespaces, methods for communicating with NVDIMMs, etc.

The UEFI Specification, covers other NVDIMM-related topics such as the Block Translation Table (BTT) which allows an NVDIMM to provide block device semantics.

Before the above two standards were developed, the NVDIMM Namespace Specification described the namespace and BTT mechanisms. The link to the outdated document is maintained here for reference.

Related Specifications

The NVDIMM Driver Writers Guide is targeted to driver writers for NVDIMMs that adhere to the NFIT tables in the Advanced Configuration and Power Interface (ACPI) V6.0 specification, the Device Specific Method (DSM) specification, and the NVDIMM Namespace Specification. This document specifically discusses the block window HW interface and persistent memory interface that Intel is proposing for NVDIMMs. A version of the document with change bars [pdf] from the previous version is also available.

The NVDIMM DSM Interface, Version 1.8, is targeted to writers of BIOS and OS drivers for NVDIMMs whose design adheres to the NFIT Tables in the ACPI specification. The document specifically discusses the NVDIMM Device Specific Method (_DSM) example.

docs's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.