NVMe
NVMe (Non-Volatile Memory Express) is a protocol and interface specification designed specifically for accessing high-speed non-volatile storage, especially SSD's based on flash memory. It lets SSDs connect directly to the computer's CPU via the fast PCIe bus, avoiding performance bottlenecks of older interfaces like SATA.
NVMe was created because older interfaces like SATA, designed for slower hard disk drives (HDDs), couldn't keep up with the rapidly increasing speeds of flash memory.
Contents
Overview and Purpose
NVMe is an optimized, high-performance, and scalable interface for solid-state drives in both consumer and enterprise systems. It was built from the ground up to use the inherent parallelism of SSDs.
Its main purpose is to significantly reduce latency and increase throughput compared to older storage interfaces. By connecting directly to PCIe, NVMe reduces the software overhead and hardware path between the CPU and storage, enabling much faster data transfer.
How it Works
NVMe operates over the PCIe bus, which provides a direct link to the CPU. This direct path is much faster and has more bandwidth than the SATA bus, which typically connects through a separate controller and was designed for slower, sequential access devices.
Key design aspects that make NVMe fast include:
- Direct PCIe Connection: No need for an intermediate storage controller designed for HDDs.
- Multiple Command Queues: Supports thousands of command queues, each holding tens of thousands of commands at once. This allows parallel processing of data requests, efficiently using SSDs' ability to handle many operations simultaneously. SATA, by contrast, typically supports only one command queue.
- Reduced Software Overhead: The NVMe protocol is simpler and requires fewer CPU cycles to process commands.
- Efficient Interrupt Handling: Designed to reduce the number of interruptions to the CPU per operation.
This architecture enables NVMe SSDs to achieve much higher input/output operations per second (IOPS) and lower latency than SATA SSDs.
NVMe vs. SATA
Feature | NVMe | SATA |
---|---|---|
Interface / Bus | PCIe | SATA |
Connection | Direct to CPU via PCIe lanes | Connects via SATA controller, then to CPU |
Command Queues | Up to 65,535 | Typically 1 |
Queue Depth (Commands per queue) | Up to 65,536 | Typically 32 (with NCQ) |
Maximum Theoretical Speed | Much Higher (e.g., PCIe 3.0 x4 is ~3,500 MB/s, PCIe 4.0 x4 is ~7,000 MB/s, PCIe 5.0 x4 is ~14,000 MB/s) | Limited to ~600 MB/s |
Latency | Lower (designed for fast flash access) | Higher (overhead from legacy protocol) |
Designed For | High-speed flash, parallel access | Slower HDDs, sequential access |
Form Factors
NVMe SSDs come in several physical sizes:
- M.2: The most common form factor for NVMe SSDs in modern laptops and desktops. It's a small, rectangular module that plugs directly into an M.2 slot on the motherboard. M.2 drives can be either SATA or NVMe.
- U.2: A form factor mainly found in enterprise servers and workstations. It's typically a 2.5-inch drive, similar in size to a standard server HDD, offering NVMe speeds in a familiar server form factor.
- PCIe Add-in Card (AIC): NVMe SSDs that plug into a standard PCIe expansion slot on the motherboard, like a graphics card.
Advantages
- Significantly Higher Speed: Much faster read and write speeds compared to SATA SSDs.
- Lower Latency: Quicker response times for data access.
- Improved Performance under Load: Excels at handling many simultaneous data requests due to its parallel design.
- Unlocks SSD Potential: Allows modern flash memory to perform at speeds far beyond what SATA can provide.