EMZETT.
Login

NVMe

NVMe Image: Dmitry Nosachev, CC BY-SA 4.0, Wikimedia Commons

In short: “Non-Volatile Memory Express” — a protocol that connects SSDs directly to the CPU via PCIe, instead of via the older, slower SATA standard.

In more detail: NVMe was specifically designed for flash storage and makes much better use of the parallel nature of SSDs than SATA (originally designed for mechanical hard drives) — this makes NVMe SSDs many times faster. Physically, NVMe SSDs usually come in the M.2 form factor.

In Depth

The design flaw NVMe fixes

SATA was originally developed for mechanical hard drives, whose speed was inherently strongly limited by rotating platters and a moving read head — the SATA protocol (more precisely, the AHCI command interface layered on top of it) therefore only allows a single command queue with a limited depth of 32 entries, which was completely sufficient for HDDs, since their mechanical access time remained the limiting factor anyway. Flash-based SSDs, by contrast, can inherently process thousands of operations in parallel across their many individual memory chips, but were massively throttled by the SATA protocol as an artificial bottleneck — the SSD itself would have been much faster than SATA/AHCI could even request.

Massively parallel queues

NVMe was designed from the ground up for exactly this kind of parallelism: it allows up to 65,536 simultaneous command queues, each with up to 65,536 entries per queue — a capacity orders of magnitude higher than SATA/AHCI. NVMe is also connected directly to the CPU via PCIe, instead of being routed through an additional SATA controller chip, which further reduces latency and protocol overhead — every additional processing step between the CPU and the memory chip costs valuable microseconds, which add up noticeably across millions of operations per second.

Practical speed differences

In practice, this means sequential transfer rates of several gigabytes per second for NVMe SSDs (current PCIe 5.0 models reach over 10 GB/s), compared to around 550 MB/s at the hard SATA limit, as well as considerably lower access times for many small, simultaneous file accesses (random I/O) — noticeable, for example, at system startup, when opening many programs at once, or when loading large game worlds, where thousands of small file fragments are requested practically simultaneously.

PCIe generations as a speed limit

Since NVMe connects directly via PCIe lanes, the available PCIe generation determines the maximum possible speed of an NVMe SSD: a PCIe 3.0 SSD is limited to around 3.5 GB/s, PCIe 4.0 doubles the theoretical maximum to around 7 GB/s, PCIe 5.0 doubles it again to over 14 GB/s. How many PCIe lanes and which generation a particular M.2 slot on a motherboard actually provides therefore directly determines whether the full potential of an expensive high-end NVMe SSD can even be realised at all.

See also: PCIe, M.2, SATA