NVMe (Non-Volatile Memory Express) is an interface protocol built especially for Solid State Drives (SSDs). NVMe works with PCI Express (PCIe) to transfer data to and from SSDs. NVMe enables rapid storage in computer SSDs and is an improvement over older Hard Disk Drive (HDD) related interfaces such as SATA and SAS. The only reason SATA and SAS are used with SSDs in computers is that until recently, only slower HDDs have been used as the large-capacity storage in computers. Flash memory has been used in mobile devices such as smartphones, tablets, USB drives and SD cards. (SSDs are flash memory.)
Officially, NVMe is an optimized “scalable host controller interface designed to address the needs of Enterprise, Data Center and Client systems that utilize PCI Express (PCIe) based solid state drives.”
SSDs have a clear advantage with faster access through the PCIe serial bus standard. NVMe was built from scratch as a new way to efficiently access storage devices that are specifically built with non-volatile (flash) memory – SSDs. NVMe enables a faster interface for leveraging the speeds that SSDs are capable of. As SSDs began to replace slower Hard Disk Drives (HDDs) in computers as primary storage, a new interface was needed to make use of the faster speed capability. However, in the transition to SSD, some PCs have been outfitted with an SSD that is accessed through interfaces historically used with slower HDDs, such as Serial Attached SCSI (SAS) and Serial ATA (SATA). It makes more sense to use NVMe with an SSD.
SSD is already the primary source of storage for smartphones and tablets. SSDs are presently more expensive than HDDs, and often used as memory cache in conjunction with HDDs to speed up computer systems. SSDs have no moving parts and in many ways are more rugged than HDDs.
The specification for the NVMe standard is available at nvmexpress.org. Alternate SSD interfaces (to replace HDDs on PCs) are Serial ATA (SATA), mSATA, or PCIe. (For PCIe, an internal PCIe interface might be used if the SSD were on a circuit board that could be plugged into the PCIe slot on a motherboard.) Modern servers might access SSDs through Serial attached SCSI (SAS), SATA, PCIe, or Fibre channel.
NVMe-based SSDs use PCIe to create reduced latency over SSDs. The form factors that the NVMe protocol uses must connect in some way to PCIe within the computer. To date, connections for NVMe can be made through a PCIe expansion card, a 2.5-inch U.2 connector, or an M.2 small form factor. SSD makers seem to be migrating to PCIe, with most using an M.2 connector, a.k.a. “Next Generation Form Factor.”
How does NVMe work?
For NVMe, the complicated-sounding “Submission and Completion Queue” is one mechanism that takes advantage of SSD technology. The Queue’s host software manages and controls SSD data flow, creates and deletes separate queues, aborts commands, and so forth. A computer with four cores might have four queue pairs to ensure that the data structures are kept in the corresponding core’s cache (see Figure 1). NVMe supports several deep, independent queues.
NVMe SSD on the Market
Intel claims “breakthrough” performance with the Intel Solid-State Drive Data Center Family for PCIe “with up to six times faster data transfer speed than 6 Gbps SAS/SATA SSDs.” The Intel® Solid-State Drive Data Center P3700 Series “can replace the performance of seven SATA SSDs aggregated through a host bus adapter.”[i] NVMe began with use in the enterprise, or server market, but is percolating down into the consumer market.
For consumer use, Intel’s SSD 600p series SSDs with the NVMe interface weighs just 40 g. Capacity for the series starts at 128 GB and goes all the way up to 1 TB. The 600p uses the M.2 form factor with PCIe 3.0 on 4 lanes. The power consumption is 100 mW when active and 40 mW when idle. On Newegg, the 1 TB version of the Intel SSD 600p is $350 as of this writing. Micron is another major manufacturer of NVMe SSDs and flash memory.
SATA has a throughput ceiling of 6.0 gigabits per second (Gbps), while SAS has a ceiling of 12 Gbps. NVMe is an interface protocol that uses PCIe technology to transport data between the CPU and the SSD. PCIe is well-established, well-supported as a standard, and has steadily grown faster over the past decade. PCIe 3.0 was released in 2010 and delivers ~1 GB/sec per lane (bidirectional). With 4 lanes, PCIe 3.0 ‘s throughput would be 8 Gbps in both directions at once (duplex) for a total of 16 Gbps. PCIe is also scalable. At 16 lanes, PCIe 3.0 yields 16 Gbps duplex. PCIe 4.0 was announced in 2017 and is expected to double the throughput of PCIe 3.0. With NVMe and PCIe, SSD throughput will continue to increase in speed along with PCIe. In addition to PCI Express, NVMe also supports Fibre Channel and RDMA.[ii]
[ii] “NVM Express Overview,”PDF, accessed Mar 18 2018, https://app.e2ma.net/app2/audience/signup/1843375/1788830