Non-volatile memory express (NVMe) is a storage protocol that allows users to get the most out of high-performance flash based solid-state drives (SSD). It is well suited to multicore processing, and many simultaneous I/O operations can be accommodated, which has made NVMe SSD extremely popular in data storage and processing centres, as well as high-end PCs for gaming applications, for example.
All memory devices comply with a communications protocol, it’s how data is transferred, and SSDs have historically used the serial AT attachment (SATA) interface protocol. The protocol is also used by hard disk drives (HDDs) too, as SATA was developed for mass storage devices – including optical drives.
In recent years, SSDs have started using the peripheral component interconnect express (PCIe) protocol; and a high-end computer will have PCIe slots for adding GPU, RAID or WiFi cards – as the protocol is not just about memory. Indeed, PCIe is intended for high-speed devices that generate high volumes of data, whereas SATA is really for lower bandwidth work.
Like SATA, the PCIe protocol is based on serial data transfer. Or rather each lane is for serial transfer. These lanes are not synchronised, so we’re not taking traditional parallel comms here, which is what PCI without the ‘e’ is, by the way.
A single lane of PCIe is faster than SATA, as even the SATA III spec is limited to a maximum speed of 600MB/s. In terms of Gen 2 PCIe, two lanes are capable of up to 1GB/s and four up to 2GB/s.
As mentioned, PCIe is used for NVM-based SSDs but was not specifically designed for it. NVMe on the other hand was, which is the succinct answer we give when ever asked “PCIe versus NVMe?” So, let’s look at NVMe and SSD in some detail.
NVMe (Non-Volatile Memory Express) and SSD (Solid State Drive) are both types of storage devices that use flash memory to store data. However, there are some important differences between the two technologies.
- Speed: NVMe drives are generally faster than SSDs. This is because NVMe uses a faster interface (PCIe) that allows for more direct communication between the CPU and storage. This can result in significantly faster read and write speeds, which can be beneficial for applications that require high performance.
- Latency: NVMe drives have lower latency than SSDs, meaning they can access data more quickly. This can be particularly beneficial for applications that require fast data access, such as databases or virtual machines.
- Parallelism: NVMe drives can perform multiple operations at the same time, allowing for better performance in multi-tasking environments or with applications that require high levels of parallelism.
- Capacity: NVMe drives can support larger storage capacities than SSDs, making them a good choice for applications that require large amounts of storage.
- Cost: NVMe drives are generally more expensive than SSDs. This may be a consideration for some applications where cost is a primary concern.
The NVM Express consortium, a non-profit organisation, says:
NVMe is designed from the ground up to deliver high bandwidth and low latency storage access for current and future NVM technologies
The organisation also says the NVMe family of specifications define how host software communicates with NVM across multiple transports, including PCIe.
NVM Express lists the standards as:
- The NVMe specification. This is a register interface and command set for PCIe technology attached storage with industry standard software available for numerous operating systems. NVMe is widely considered the de facto industry standard for PCIe SSDs.
- NVMe Management Interface (NVMe-MI) Specification. This is the command set and architecture for out-of-band management of NVMe (e.g., discovering, monitoring and updating NVMe devices).
- NVMe over Fabrics (NVMe-oF) Specification. This is an extension to NVMe that enables tunnelling the NVM Express command set over additional transports beyond PCIe architecture. NVMe-oF technology extends the benefits of efficient storage architecture at scale in the world’s largest data centres by allowing the same protocol to extend over various networked interfaces.
As mentioned, NVMe was specifically designed for SSD and data transfer can be via PCIe – i.e., NVMe is available in the PCIe card form factor.
Other NVMe SSD form factors are M.2 and U.2, the latter of which is only available in NVMe. It is the PCIe form factor that delivers on the numbers front though. A PCIe Gen 4 can, if 16 NVMe lanes are used, can deliver 32GB/s.
NVMe is also low power – both in use and particularly when in standby – when compared to a SATA drive of equal capacity, and that is making the making technology of great appeal within embedded systems. Indeed, if the system needs high speed memory access and an easy means of upgrading (future-proofing), an NVMe SSD is a serious alternative to an embedded MultiMediaCard (eMMC). And we’ll be discussing eMMC vs SSD in a future blog.