From WikiChip
Difference between revisions of "snia/direct access"

(dax)
 
 
Line 1: Line 1:
 
{{title|Direct Access (DAX) - SNIA}}
 
{{title|Direct Access (DAX) - SNIA}}
'''Direct Access''' ('''DAX''') is a mechanism defined by [[SNIA]] as part of the {{snia|NVM Programming Model}} that provides byte-addressable loads and stores when working with a [[persistent memory-aware file system]].
+
'''Direct Access''' ('''DAX''') is a mechanism defined by [[SNIA]] as part of the {{snia|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 {{snia|NVM Programming Model}} allows for direct byte-level access to the non-volatile media.
 +
 
 +
== See also ==
 +
* {{snia|NVM Programming Model}}

Latest revision as of 14:35, 19 November 2018

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[edit]

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.

See also[edit]