Also known as: Non-Volatile Memory Express
NVMe (Non-Volatile Memory Express) is a protocol for talking to fast solid-state storage directly over a PCI Express link, designed from the start for flash rather than spinning disks.1
Overview
Older interfaces such as SATA used the AHCI command set, which assumed the slow seek times of a hard disk drive and offered a single shallow command queue. NVMe instead exposes many deep queues that a flash-based SSD can service in parallel, with far lower per-command overhead. Drives commonly appear as an M.2 stick plugged straight into the board’s PCIe lanes, so the CPU reaches the flash without a legacy disk controller in the path.
What it’s for
NVMe exists to stop the interface from being the bottleneck once the medium is flash. A SATA SSD tops out around 550 MB/s; an NVMe drive on a few PCIe lanes runs several times that, with much lower latency under load. For a GopherTrunk node decoding many talkgroups at once, an NVMe SSD ensures that writing decoded frames and IQ snapshots never stalls the pipeline — though for a simple capture node a plain SD card or SATA SSD is usually plenty.
Sources
-
NVM Express — Wikipedia, on the NVMe storage protocol and its advantages over AHCI/SATA. ↩