NVMe - Removing the Performance Bottleneck on SSDs

SATA has served the PC industry well for a long time, and is a great solution for spinning media storage. As the industry moves to hybrid and solid-state storage however, SATA is stressed to provide the same value. With SATA Express entering the market, it appears that PCIe will become the dominant physical layer transport for storage.

Non-Volatile Memory Express (NVMe) is a technology that streamlines access to SSDs. Today, SSD performance is hampered by the 6G SATA PHY and the SATA protocol, which was designed for spinning media. NVMe takes advantages of the multi-lane PCIe PHY, and defines an interface designed with SSDs in mind. In this article NVM Express and SATA are compared, along with the involvement of PCIe with NVMe.

SATA:

Serial ATA (SATA or Serial AT Attachment) is a computer bus interface for connecting a host PC to its mass storage device such as hard disk drives and optical drives. Serial ATA was designed to replace the older parallel ATA (PATA) standard, offering several advantages over the older interface, including reduced cable size and cost (7 conductors instead of 40), native hot swapping, faster data transfer through higher signaling rates, and more efficient transfer through an (optional) I/O queuing protocol.

PCIe (Peripheral Component Interconnect Express)

When evaluating a next generation PHY the SATA community considered doubling SATA speeds from 6 Gbps to 12 Gbps, but eventually concluded that using the PCIe PHY had more advantages because of the ability to have higher performance on multiple lanes.

NVMe:

NVM Express (NVMe: Non Volatile Memory Express) is a scalable host controller interface that was designed to address the needs of enterprise and client applications that utilize PCI Express-based solid-state storage. The interface provides an optimized command and completion path. It includes support for parallel operation by supporting up to 64,000 commands within each of the 64,000 command queues. Support has been added for many enterprise capabilities like end-to-end data protection (compatible with T10 DIF and DIX standards), enhanced error reporting, and virtualization.

Some of the key features:

  • Does not require uncatchable / MMIO register reads in the command issue or completion path.
  • A maximum of one MMIO register write is necessary in the command issue path.
  • Support for up to 64K I/O queues, with each I/O queue supporting up to 64K commands.
  • Priority associated with each I/O queue with well-defined arbitration mechanism.
  • All information to complete a 4KB read request is included in the 64B command itself, ensuring efficient small I/O operation.
  • Efficient and streamlined command set.
  • Support for MSI/MSI-X and interrupt aggregation.
  • Support for multiple namespaces.
  • Efficient support for I/O virtualization architectures like SR-IOV.
  • Robust error reporting and management capabilities.

Summary: SATA has been the most widely used interface to connect SSDs in the personal computer. However, SATA was designed for mechanical hard disk drives, and has become increasingly inadequate, as SSDs have grown more popular as their performance has increased and their costs have decreased. As the industry is moving to hybrid and solid-state storage, the SATA PHY and protocol are reaching their limits. NVMe allows the industry to take advantage of the existing proven PCIe PHY, and move to a solution that capitalizes on the full performance of SSD devices.

Raju Mishra, Research and Development