NVMe vs AHCI: Another Win for PCIe

Improving performance is never just about hardware. Faster hardware can only help to reach the limits of software and ultimately more efficient software is needed to take full advantage of the faster hardware. This applies to SSDs as well. With PCIe the potential bandwidth increases dramatically and to take full advantage of the faster physical interface, we need a software interface that is optimized specifically for SSDs and PCIe.

AHCI (Advanced Host Controller Interface) dates back to 2004 and was designed with hard drives in mind. While that doesn't rule out SSDs, AHCI is more optimized for high latency rotating media than low latency non-volatile storage. As a result AHCI can't take full advantage of SSDs and since the future is in non-volatile storage (like NAND and MRAM), the industry had to develop a software interface that abolishes the limits of AHCI.

The result is NVMe, short for Non-Volatile Memory Express. It was developed by an industry consortium with over 80 members and the development was directed by giants like Intel, Samsung, and LSI. NVMe is built specifically for SSDs and PCIe and as software interfaces usually live for at least a decade before being replaced, NVMe was designed to be capable of meeting the industry needs as we move to future memory technologies (i.e. we'll likely see RRAM and MRAM enter the storage market before 2020).

Latency 2.8 µs 6.0 µs
Maximum Queue Depth Up to 64K queues with
64K commands each
Up to 1 queue with
32 commands each
Multicore Support Yes Limited
4KB Efficiency One 64B fetch Two serialized host
DRAM fetches required

Source: Intel

The biggest advantage of NVMe is its lower latency. This is mostly due to a streamlined storage stack and the fact that NVMe requires no register reads to issue a command. AHCI requires four uncachable register reads per command, which results in ~2.5µs of additional latency.

Another important improvement is support for multiple queues and higher queue depths. Multiple queues ensure that the CPU can be used to its full potential and that the IOPS is not bottlenecked by single core limitation.

Source: Microsoft

Obviously enterprise is the biggest beneficiary of NVMe because the workloads are so much heavier and SATA/AHCI can't provide the necessary performance. Nevertheless, the client market does benefit from NVMe but just not as much. As I explained in the previous page, even moderate improvements in performance result in increased battery life and that's what NVMe will offer. Thanks to lower latency the disk usage time will decrease, which results in more time spend at idle and thus increased battery life. There can also be corner cases when the better queue support helps with performance.

Source: Intel

With future non-volatile memory technologies and NVMe the overall latency can be cut to one fifth of the current ~100µs latency and that's an improvement that will be noticeable in everyday client usage too. Currently I don't think any of the client PCIe SSDs support NVMe (enterprise has been faster at adopting NVMe) but the SF-3700 will once it's released later this year. Driver support for both Windows and Linux exists already, so it's now up to SSD OEMs to release compatible SSDs.

Why We Need Faster SSDs Testing SATA Express
Comments Locked


View All Comments

  • Kristian Vättö - Thursday, March 13, 2014 - link

    In theory two SSDs in RAID 0 should achieve twice the bandwidth of one. In practice that's almost true and you should expect maximum bandwidth of around ~1060MB/s (vs 550MB/s with one SSD).
  • Exodite - Thursday, March 13, 2014 - link

    External power, and we might get it as a *!*%?1* molex?

    Wake me up when we get to a usable revision.
  • grahaman27 - Thursday, March 13, 2014 - link

    My thoughts exactly. I like sata, but this revision looks like a mess!
  • invinciblegod - Thursday, March 13, 2014 - link

    Why did they do translation between pci-express and sata in the first place? Was it because in the event of a pci-super-express SATA can just make new chips and the current hard drives would be compatible (like from PCI to PCI-Express)?
  • npaladin2000 - Thursday, March 13, 2014 - link

    I wonder if M.2 is the better solution here, and could be adapted to serve the enterprise niches that SATAe is aiming for? After all, it provides the direct PCIe interface, and also provides power and is a small connector.
  • SirKnobsworth - Thursday, March 13, 2014 - link

    For bigger, higher performance SSDs I think that actual PCIe cards are going to remain dominant. M.2 provides an x4 interface but the highest performance SSDs will have no trouble maxing that out. I think we may have already seen x8 cards demoed but I'm not sure.
  • Veramocor - Thursday, March 13, 2014 - link

    Could a internal motherboard USB header be used instead? USB 3.1 does about 10 Gpbs (with overhead) and would supply power. The cabling would be much cleaner.

    Or an internal Thunderbolt 2.0 connection does 20 Gbps. Imagine a single internal wire supplying both power and data instead of the mess this looks like. It would beat the speed of everything save PCIe 3.0 x4.
  • Kristian Vättö - Thursday, March 13, 2014 - link

    USB has massive overhead. USB 3.0 manages only around 280MB/s in real world, whereas the theoretical maximum is 625MB/s (5Gbps). That is over 50% overhead! Assuming similar overhead, USB 3.1 would do 560MB/s, which is inline with SATA 6Gbps. However, USB uses CPU a lot more, making it very inefficient.

    As for Thunderbolt, it's basically just cabled PCIe. The difference is that TB requires expensive controllers and cabling to work, whereas PCIe alone is much cheaper.

    I think SATA-IO just needs to get back to the drawing board and get rid of the external power requirement. PCIe supplies power, so there really shouldn't be need for more than that.
  • phoenix_rizzen - Thursday, March 13, 2014 - link

    Just make a PCIe x2 connector, stick it on a cable, and plug it between the drive and the mobo PCIe slot.

    Then it's up to mobo makers to decide whether to just add PCIe x2 slots in the normal space (for use with either PCIe add-in cards or SATAe drives) or to add dedicated PCIe x2 slots over near the normal SATA slots for use with only SATAe drives.
  • SirKnobsworth - Thursday, March 13, 2014 - link

    Why does it need to be attached with a cable? There are already PCIe form factor SSDs. If that takes up too much space then provide M.2 sockets on the motherboard. M.2 cards provide less area than 2.5" devices but that shouldn't be an issue for smaller SSDs, beyond which you really want more lanes anyway.

Log in

Don't have an account? Sign up now