# Why Storage Drive Speeds Don't Hit Their Theoretical Limits

You know that USB 2.0 has the potential for 480Mb/s, but you're not getting those speeds. Let's determine the data transfer bottlenecks for storage devices and their interfaces.

You've got a good grip on the numbers. You can tell your bits from your bytes (8 bits to a byte), your megas from your gigas, and, most relevantly to storage, your gigabits from your megabytes (1Gb is 1024Mb is 128MB). Easy!

So you don't get your barnacles in a bunch when your 6Gbps SATA SSD isn't giving you six gigabytes of sweet, sweet writes every second, because you know that 6 gigabits per second is only 750 megabytes per second. But wait! You're not getting 750MB/s either. And that USB 2.0 flash drive, with its theoretical maximum bandwidth of 480Mb/s, you're not getting 60MB/s read speeds out of that, either! Are you getting ripped off?

Photo credit: Flickr user simbe via Creative Commons

Brief interlude: storage capacity is measured in binary (where 1KB = 1024B, or 1x210), but advertised in decimal (where 1KB = 1000B, or 1x103). But storage transfer speed is measured in decimal. 6 gigabits of storage is 768MB of space (6 * 1024 / 8), but 6 gigabits per second is 750MB (6 * 1000 / 8) per second. This is needlessly complicated, and I do not support such shenanigans, but there you have it.

So let’s talk about the maximum theoretical bandwidth of SATA, USB, and SD cards, and how that theory compares to what you can reasonably expect to get. We'll start from the drive interface level and work our way out from there.

SATA

If you have any sort of modern computer, unless you have a brand-new MacBook Air or other ultrabook with a PCIe SSD, your internal storage connects to your motherboard using either the second- or third-generation version of the SATA interface.

SATA Revision 2.0 is often called SATA II and has a maximum theoretical bandwidth of 3 gigabits per second. SATA Revision 3.0 is sometimes called SATA III, and has a maximum theoretical bandwidth of 6 gigabits per second. (Revision 3.1 adds support for mSATA but doesn't increase the bandwidth.) To eliminate confusion I'm going to refer to them a 3Gbps SATA and 6Gbps SATA. There. Clarified.

The SATA spec encompasses a whole information transfer protocol that takes up some of the available bandwidth.

Because 1Gb is equal to 125MB (but remember, only for data transfers), in theory you'd be able to get 375MB/s read and write speeds from a drive on a 3Gbps SATA bus, and 750MB/s from a 6Gbps SATA bus. However, you aren't just streaming raw bit-level data back and forth. The SATA spec encompasses a whole information transfer protocol (see Wikipedia) that takes up some of the available bandwidth. Specifically, after the overhead, including 8b/10b encoding, 3Gbps SATA's maximum theoretical transfer speed is 300MB/s and 6Gbps SATA is limited to 600MB/s.

Of course, even these best-case scenarios are optimistic; even on SSDs that completely saturate the 3Gbps SATA bus (which is most of them, by now), you'll be limited to about 225MB/s in sequential reads and writes.

Fortunately, 6Gbps SATA is more than twice as good as 3Gbps SATA. Right now top-tier consumer SSDs can hit 515MB/s in sequential reads. The Samsung 840 EVO also gets around 515MB/s writing directly to its SLC cache, which means that if 515MB/s isn't the absolute real-world limit for 6Gbps SATA, it's awfully close.

#### Mechanical vs SSD

Your storage is only going to go as fast as its slowest component. If your interface is faster than your drive, your drive is the limiting factor, and vice versa. SSDs do a good job saturating the 3Gbps bus, and newer ones are reaching the limits of the 6Gbps SATA bus. Mechanical drives, though, are limited by physics, and usually top out no faster than 180MB/s at the very fastest. Mechanical drives with 6Gbps controllers will still perform better on a 6Gbps bus because the 6Gbps SATA spec has better support for Native Command Queueing, which helps optimize the order read and write operations are done in.

#### USB

Second verse, same as the first: USB 2.0 has a theoretical maximum bandwidth of 480MB/s (60MB/s), but in practice you'll never get above 40MB/s. Pretty crappy. USB 2.0 has 10-15 percent overhead. Some USB 2.0 flash drives are limited by the connection, but many are even slower because they use slow memory controllers--you'll be lucky to get 33MB/s reads and 15MB/s writes out of most USB 2.0 flash drives.

The latest version of USB, USB 3.0 SuperSpeed, has a maximum theoretical bandwidth of 5Gbps, or 625MB/s, but much of that is overhead. It's not clear how much, but the fastest USB 3.0 attached SSDs seem to top out near 300MB/s, even when the drive inside them can hit 500MB/s. USB 3.1 will double theoretical throughput to 10Gbps.

The SATA-to-USB handoff seems to take out quite a bit of performance.

Still, there aren't many good reasons to use a USB 3.0 SSD, given the relative cost, so most people will be using USB 3.0 for flash drives and mechanical drives. External hard drives nearly always consist of a standard SATA hard drive attached to a SATA-to-USB interface. The SATA-to-USB handoff seems to take out quite a bit of performance. Bare mechanical drives range between 150MB/s for 2.5-inch drives and 180MB/s for speedy 3.5-inch drives. I haven't seen a traditional hard drive that could hit 120MB/s over USB 3.0, barring SSDs and drives like the Buffalo DriveStation DDR, which has a 1GB DDR3 cache and still barely manages to top 200MB/s.

USB 3.0 flash drives have a wide performance range depending on the architecture of the flash memory and controllers within them. The fastest thumb drive our own Wesley Fenlon could find hits 230MB/s reads and 200MB/s writes, but they found USB 3.0 thumb drives with write speeds as bad as 20MB/s, so mileage varies greatly by drive.

#### SD Cards

And now we get to SD cards (and their micro variants), which are rated by speed class. The speed class of an SD card is its minimum guaranteed sustained write speed. So here, you're definitely getting the claimed performance, because they're being conservative.

Class 2 cards are supposed to write at a minimum of 2MB/s, Class 4 at 4MB/s, and Class 6 at 6MB/s, no matter how fragmented they are. Class 10 SD cards are guaranteed to write at a minimum of 10MB/s, but only when nonfragmented. Ultra High Speed 1-class cards are also guaranteed at a minimum of 10MB/s but can be much faster.

Compared to SATA or USB drives, SD cards are mighty pokey. That's okay, though. They just have to be fast enough to do what you need them to do.

Full-sized SD cards are mostly used for photo and video cameras and microSD cards for smartphone storage. That means SD cards need good sequential write speeds, for writing photos and video, and microSD cards need good random-write speeds, just like SSDs. A good Class 10 SD card can get up to 45MB/s reads and writes, though the speed will vary depending what camera and card you are using. A good Class 10 microSD card can write at around 10-15MB/s, enough to capture 4K video on a GoPro Hero3.

#### Are You Still There

To sum up: you're not going to hit the theoretical maximum bandwidth of your storage interface, but depending on what is on the other end of the connector, you may be able to saturate its actual maximum bandwidth.

If you're using an SSD on a 3Gbps SATA bus, the SATA bus is the bottleneck.

If you're using a mechanical drive, your drive is the bottleneck. If you're using an SSD on a 3Gbps SATA bus, the SATA bus is the bottleneck. If you're using an SSD on a 6Gbps bus, you're probably limited by the drive speed, but if it's a very fast SSD you're bumping up against the limit of the interface.

USB 2.0 is the bottleneck for hard drives and flash drives. Mechanical drives will perform much faster on USB 3.0 than on USB 2.0, but slower than if they were connected directly via SATA. USB 3.0 flash drives are mostly limited by their memory and controller architectures, but USB 3.0 SSDs are limited by the USB 3.0 interface.

So there you have it. Tune in next time when we talk about PCIe, RAM, Thunderbolt, and more!