Introduction - What is NVMe?
Identifying the problem with current SSDs is simple. SSDs were forced to conform to the legacy of spinning media, in every fashion, as they gained acceptance. A glaring problem is the interface; SSDs commonly use SATA and SAS connections. AHCI and SCSI, the interface protocols for SATA and SAS, were initially designed to communicate with the slow rotating platters of HDDs. HDDs have never come close to providing the high IOPS and low-latency performance of SSDs, and legacy interfaces simply aren't designed to deliver the unadulterated connection flash-based devices crave.
SSD manufacturers migrated to the PCIe bus to power high-performance products for several reasons. Most common SSDs still come in a 2.5" form factor, even though one of the primary advantages of flash memory is enhanced density and a smaller footprint. The PCIe slot allows for denser designs better suited to the advantages of flash memory.
PCIe also provides much more bandwidth than other interfaces and reduces latency due to its close proximity to the CPU. Some manufacturers hamper performance by utilizing the AHCI protocol over the PCIe bus. Other manufacturers have taken to developing their own proprietary software interfaces to provide better performance. These approaches have restricted the performance of most PCIe SSDs.
The NVMe (Non-Volatile Memory Express) protocol was built ground-up for non-volatile memory and scales to address both client and enterprise applications. Actually designed with next-generation non-volatile memory like PCM and MRAM in mind, NVMe is memory-agnostic and has no NAND-specific commands. Instead, latency, parallelism, performance, and low power operation were a key focus during NVMe development. These design tenets avail themselves perfectly to NAND flash media and its inherently parallel architecture.
Designed specifically to cater to multi-core environments, the NVMe interface provides almost unlimited scaling. The optimized software stack provides a radical reduction in latency. Latency is the most treasured performance characteristic of SSDs and delivers tangible performance benefits to applications. NVMe also lightens the CPU load required to perform storage operations through a number of enhancements.
An overriding goal of the NVMe specification is to usher in the commodization of PCIe SSDs. Over 90 companies have participated in the development in an open industry consortium, and a 13-company promoter group directs the body. Revolutionizing the communication protocol is a huge undertaking and development of the entire ecosystem is key. The NVMe committee will help speed broad industry adoption of PCIe SSDs by providing standard drivers, a consistent feature set, development tools, and compliance and interoperability testing through the UNH-IOL NVMe Test Consortium.
NVMe is already experiencing broad driver support with integrated drivers in Windows, Linux, UNIX, Solaris, VMware, and UEFI. In the past, it took a considerable amount of engineering effort to develop custom drivers and software for PCIe SSDs from scratch, and then validation essentially occurred in a vacuum. This process takes months, and sometimes years, to validate and progress through qual cycles. Unfortunately, some of the problems encountered with drivers and software occurred with SSDs already deployed into production environments.
The NVMe protocol speeds development and accelerates time to market. Tier 1 NAND vendors, OEMs, SSD vendors, and even hyperscale datacenters, can deploy solutions easily with standardized controllers and reference firmware designed to utilize the NVMe interface. The ability to deploy previously validated utilities, software, and drivers, helps minimize firmware and software customizations.
After years in development, and attending more sessions at trade shows than I can count, it really is exciting to have NVMe finally make it into the lab. Let's get to testing.