An Introduction to NVMe
Technology Paper
Authored by:
Hermann Strass
NVM Express (NVMe) is a protocol for the transport of data over different media and for optimized storage in NAND flash. Peripheral Component Interconnect Express (PCIe) is currently the most used transport medium. Other media,
like NVMe over Fabrics, are currently being standardized. NVMe is optimized for NAND flash chips. The protocol provides a high-bandwidth and low-latency framework to the storage protocol, but with flash-specific improvements.
NVMe Protocol
NVMe is a scalable protocol optimized for efficient data transport over PCIe for storage on NAND flash, primarily deployed on PCIe solid-state drives today. It uses a simple streamlined, minimum set of only 13 commands, as listed in Table 1.
To optimize storage and retrieval, NVMe uses up to 64K commands per queue on up to 64K I/O queues for parallel operation. It has a paired submission-andcompletion queue mechanism in host memory. Host software places commands into the submission queue. The NVMe controller places command completions into an associated completion queue. Multiple submission queues may report completions on a single completion queue, provided the controller supports arbitration with different priorities. Message-Signaled Interrupts Extended (MSI-X)
and interrupt steering is supported as well. Optionally, support for many enterprise capabilities like end-to-end data protection (compatible with T10 DIF and DIX
standards), enhanced error reporting, autonomous power state transitions for clients and hinting are included.
An Introduction to NVMe
Table 1. Simple Command Set Optimized for NVMe (Source: NVM Express Org)
Only 10 admin commands are required
Only 3 I/O commands are required
ADMIN COMMANDS
NVM I/O COMMANDS
Create I/O Submission Queue
Read
Delete I/O Submission Queue
Write
Create I/O Completion Queue
Flush
Delete I/O Completion Queue