NVM Express (NVMe) group is finalizing the NVMe 1.3 standard, adding new features such as management and networking support. One new wrinkle that embedded developers will appreciate is the ability to split NVMe storage into multiple sets with multiple namespaces within each (Fig. 1). The IO commands within a set have the same quality of service (QoS) and aren’t impacted by other set configurations. This provides predictable access to storage.
1. The IO commands within a set have the same QoS and will not be affected by other set configurations. Each set can have one or more namespaces.
Namespaces may also have asymmetric access, which is handy for multiple path access through different controllers in a high-availability system. This is useful when the controllers may not be identical or provide identical performance.
The standard also takes into account endurance—an important aspect for flash-based NVMe systems. The sets can be collected together into endurance groups that share endurance characteristics (Fig. 2). A set must be completely contained within a single group.
2. The new standard includes endurance groups so that developers can query or specify where data should be placed.
Predictable access is supported in addition to predictable endurance support. NVMe does this by including deterministic and non-deterministic windows (Fig. 3). The former has fixed latency that can be useful in real-time applications.
3. Fixed latency within a deterministic window can be important to real-time embedded applications.
The health of a system can now be managed using in-band and out-of-band techniques (Fig. 4). The new approach enables applications to tunnel NVMe-MI commands through an NVMe driver. IT also adds the NVMe-MI Send and Receive commands. It allows for management at the field-replaceable-unit (FRU) level and provides Vital Product Data (VPD) access as well as enclosure management.
4. NVMe will now support in-band and out-of-band management.
The out-of-band support uses the standard SMBus/I2C hardware interface. It supports PCIe Vendor Defined Messages (VDM) as well as IPMI FRU VPD information. This approach makes possible management that’s independent of the operating system and applications using the NVMe storage.
5. NVMe-over-Fabric will add TCP/IP support to the mix.
NVMe-over-Fabric (NVMe-oF) targets hyperscale computing environments (Fig. 5). The addition of TCP/IP support to NVMe-oF is expected to be ratified by the end of 2018. This may also be the same timeframe for NVMe-oF using RDMA. One of the issues will be how to handle network discovery.