The NVM Express® standard, or NVMe®, is the leading interface technology for SSDs, used by the vast majority of computing systems from data centers to laptops to cell phones. On June 2, 2021, NVM Express publicly released a suite of specifications for nonvolatile memory across a broad range of applications. Besides completely reorganizing the existing specifications, NVMe 2.0 adds many important new features. NVMe committee members and users are excited by this next step forward. Let’s explore why.
One of the limitations of conventional hard disk drives is that, if the next block of data you need is on the other side of the actual physical disk, you have to wait for the disc to spin around until it reaches the read head. Flash-based solid-state drives don’t have that problem, of course: Every block is the same “distance” away. But the old interface standards were written with that limitation in mind. The first NVMe specification, released in 2011, was written to set SSDs free and allow applications to make the most of the extra performance.
The last public release of the specification was NVMe 1.4 (June 10, 2019), which consisted of three specifications:
- NVMe Base specification
- NVMe Management Interface (MI) specification, which covers operations related to monitoring, configuring and managing NVMe devices through “out of band” mechanisms, meaning that these operations are kept separate from read/write operations
- NVMe over Fabrics (NVMe-oF) specification, which adds support for networking protocols, making it possible to construct high-performance storage networks, or “fabrics”
For NVME 2.0, the specification has been refactored to enable “faster and simpler development.” Rather than one very large document, specific areas have been separated from the base document. These should give users a clear idea of where to go for information on a specific topic, although use of multiple documents will likely be required. As a result, there are now eight specifications:
- NVMe Base Specification 2.0
- NVM Command Set Specification 1.0
- Zoned Namespace Command Set Specification 1.0
- PCIe Transport Specification 1.0
- Management Interface 1.2
- RDMA Transport Specification 1.0
- TCP Transport Specification 1.0
- Key-Value Command Set Specification 1.0
The diagram below shows how these all fit together.
Diagram: NVM Express, Inc.
In addition to the refactoring, a variety of new and important features have been introduced:
Zoned Namespaces (ZNS)
This is an important development that helps applications achieve higher performance while improving the longevity of NAND-based storage. Instead of many drives arbitrarily organized into one or more logical drives, ZNS allows one drive to appear as multiple drives assigned to different threads. The specification defines zoned namespaces and the associated Zoned Namespace Command Set. A zoned namespace divides the logical address space of a namespace into zones. Each zone is a logical block range that is written sequentially, but if rewritten, it is reset. The interface allows zoned namespaces to expose natural boundaries for internal device structures and to offload management of internal mapping tables to the host.
NVM Set and Endurance Group Management
Micron was active in the development of this feature since it allows various types of memory (e.g., SLC, TLC, etc.) to be used for specific applications. It defines an interface for interoperable management of endurance groups and NVM sets. This allows domains to be configured and managed. Endurance groups are analogous to auto-tiering of hot and cold storage but geared toward data that needs to be accessed often, but not necessarily quickly.
Simple Copy Command
This feature defines a simple copy command used by the host to copy data from one or more source logical block ranges to a single consecutive destination logical block range. Data can be copied within the device without having to transfer data across the PCI Express (PCIe) interface, which reduces interface traffic and thus improves performance.
Domains and Partitioning
This feature expands NVMe architecture by defining capabilities to enable large scale environments with different domains and the possibility of partitioning of domains. It will be useful when multiple flash types are available on a single device (e.g., SLC, TLC, QLC, etc.) and allows parts of the system to be offline for maintenance while the rest keeps going.
Command and Feature Lockdown
This is a significant security enhancement that allows hosts and management entities to prohibit the execution of some commands and Set Feature command features. For example, ordinary read/write commands for a particular drive might be allowed, but all admin commands might be locked out.
This feature extends the NVMe architecture to support different types of namespaces. For example, namespaces may contain logical blocks that have special access rules or namespaces that contain things other than logical blocks, as in the case of key-value pairs.
This feature adds NVMe support for traditional hard disk drives. It is a good example of how NVMe is trying to broaden its scope and simplify the ecosystem by allowing a variety of persistent media to be connected using a single storage connection.
It’s important to follow these specifications since there are already multiple changes being requested to the 2.0 specification. And some things are still to come: key per I/O, zoned random write areas (ZRWA), and computational storage. These are all important and complex features that are in active development, which I’ll explore in a future article.
One of the big questions for driver and SSD vendors is: What is the minimum set of changes necessary to move from 1.4 to 2.0? This is an important discussion but one that gets really technical really fast. We have a perspective on this that we’d be happy to share, so please reach out to me if you’d like to explore further.
Micron has been an important supporter of the NVMe 2.0 specification and a contributor to the development of many of these new features that open up a lot of really interesting possibilities for system architects and application developers. And going forward, we’ll continue to take an active role in introducing new and valuable features to this specification to benefit users of our persistent storage.
For more information on Micron’s NVMe SSDs, visit micron.com/nvme.