Storage

NVMe vs SATA

Two SSD interfaces. NVMe connects over PCIe and reaches 3,000-14,000 MB/s for sequential reads. SATA is the legacy 6 Gbps interface shared with HDDs and tops out around 550 MB/s. NVMe also has lower random-read latency and handles many more requests at once, which is what makes an NVMe SSD feel faster than a SATA SSD in real workloads.

Where the speed gap comes from

SATA is the interface hard drives use, and SSDs inherited it. Its third generation runs a 6 Gbps link, but the encoding puts 10 bits on the wire for every 8 bits of data, so the ceiling is 600 MB/s. Real SATA SSDs land near 550 MB/s. No SSD can pass that ceiling, however fast its flash is.

NVMe skips that link. The SSD sits on PCIe, usually over four lanes, and from PCIe 3.0 to 5.0 each generation doubles the speed of the last. The Throughput Visualizer models a PCIe 3.0 drive at 3,500 MB/s, a PCIe 4.0 drive at 7,000 MB/s and a PCIe 5.0 drive at 14,000 MB/s. SATA gets 550 MB/s in the same model and a hard drive 160 MB/s. A PCIe 4.0 drive reads 13 times as fast as a SATA SSD.

One queue against thousands

SATA drives talk through the AHCI protocol, which has one command queue holding up to 32 commands. NVMe was built for flash. Its spec allows up to 65,535 queues, each up to 65,536 commands deep, so many CPU cores can send requests at once without waiting in line. No drive uses anywhere near that many. The point is that a busy server or a multithreaded app can keep an NVMe drive fed, and each request passes through less software on the way.

That helps latency too. At the visualizer's reference latencies, a random SATA read takes about 2 times as long as an NVMe read. A hard drive's random read takes about 50 times as long as a SATA SSD's, which is why any SSD feels like a big jump.

What you'll notice

Big copies show the gap. Reading 100 GB takes 14 seconds at PCIe 4.0 speed and 182 seconds on SATA, and a hard drive needs 625 seconds. Boot times and app launches depend more on small random reads and on the CPU, so the gap you notice there is much smaller than the headline number. Going from a hard drive to any SSD is the jump you feel. NVMe over SATA is a smaller step.

An M.2 slot doesn't mean NVMe. M.2 is a connector, and its sockets can carry SATA, PCIe or both. An M.2 SSD can be a SATA drive that stops at 550 MB/s. The notches on the card don't settle it either, since many SATA drives are cut to fit the same slots as NVMe ones. Check the drive's spec and your motherboard manual before you buy.

SATA and NVMe in a NAS

A NAS shows how the interface and the network fit together. Synology's DS923+ has four bays for SATA drives and two M.2 NVMe slots that can hold an SSD cache or a storage pool, but its network ports are two 1GbE. A gigabit port moves at most 125 MB/s. A SATA SSD reads 550 MB/s, so the network, not the drive, sets the speed of a big copy to that NAS. A 10 GbE port carries 1,250 MB/s, so over 10 GbE the drive becomes the limit again.

Work it out yourselfOpen the Memory and Storage Throughput Visualizer

Sources

Back to the glossary