Direct Access (DAX) is a mechanism defined by SNIA as part of the NVM Programming Model that provides byte-addressable loads and stores when working with a persistent memory-aware file system through direct MMU mappings.
Overview
The traditional file I/O APIs usually provide a mechanism called memory-mapped file whereby a portion of a file is mapped directly onto the virtual memory of an application with a byte-for-byte correlation between the two. An application can then use standard pointers to operate on the data through normal loads and stores in a byte-addressable fashion. Although, from the software perspective, the operations are done on single bytes, in reality paging is involved as traditional block storage I/O must be done in blocks. On a byte access, the operating system must read a full block (typically around 4 KiB or so) from the storage device into memory. Likewise, on a store, the operating system must write out the entire block back to the storage device.
The direct access (DAX) mechanism of the persistent memory-aware file system allows the kernel to set up a direct load-store access to the persistent medium through direct MMU mappings, instead of the paged-access found in traditional block storage. In other words, in addition for traditional block-level support, the NVM Programming Model allows for direct byte-level access to the non-volatile media.