Life Beyond SATA And AHCI

During our time at Samsung's SSD Summit, we looked at (but didn't touch) technologies that the company is expected to introduce over the next year. Like many of its competitors, Samsung is is investing heavily in next-generation protocols, physical interfaces, and form factors. PCI Express is where the company sees storage moving to next.

We've reviewed several PCI Express-based cards over the last year. Many of them were simply conventional SATA drives, bridged to communicate over PCI Express. The result was often very fast, but still dependent on SATA and AHCI. That's going to change in 2014, though.

Pictures are always worth a thousand words, right? Think of the physical connection and protocol like the lanes on a highway. SATA has a fairly restrictive limit on the number of pathways data can take. PCI Express is far more scalable, and you're able to combine lanes to create larger links, depending on the performance your application demands.

As protocols go, we've relied on AHCI for many years. The problem is that it was designed with spinning disks in mind, and not SSDs. As a result, we're already slamming up against the SATA interface's limits. In an effort to standardize solid-state drive access across PCI Express, 80 companies (led in part by Samsung), created the Non-Volatile Memory Host Controller Interface Specification. NVM Express, as it's called, is the first interface designed specifically with SSDs in mind.

The above slide has a lot of low-level detail describing NVMe, but there are two important points. First, AHCI adds an enormous amount of overhead and latency to commands and transfers, which simply aren't required when you're working with flash memory. The second one involves queuing. The AHCI protocol can only handle one queue with up to 32 commands. Even the fastest 15,000 RPM disk drives have access times in 5 ms range. Hammered by purely random accesses, a single queue with 32 commands is more than enough.

When it comes to solid-state storage, though, parallelism can almost be limitless. Most client-focused architectures employ eight-channel designs, but there's nothing preventing more complex controllers. In enterprise applications, specifically with PCIe add-in cards, the number of channels and NAND packages can be much higher. NVMe allows for 64,000 queues and 64,000 commands per queue!