Sign in with
Sign up | Sign in
Faster USB 3.0 Performance: Examining UASP And Turbo Mode
By ,
1. USB 3.0: Dude, Where's My Speed?

Most days, we treasure the utility, convenience, and instant connectivity of USB. But sometimes we curse the interface's very existence. USB's plug and play nature makes it incredibly easy to use. Sometimes, though, it almost malevolently refuses to recognize an attached device or transfer data at the speed we expect.

USB 2.0: This is going to take all day...USB 2.0: This is going to take all day...

With Intel's 7-series chipsets and AMD's Fusion Controller Hubs now featuring native USB 3.0 support, it is difficult to imagine how we ever tolerated the first generation of USB more than a decade ago. With a maximum throughput of 1.5 MB/s, file transfers over USB 1.1 were frustratingly slow, though that was at least partially mitigated by the small-capacity memory sticks available back then.

Fast-forward a few years to the introduction of USB 2.0, which hit the market with an advertised maximum bandwidth of 60 MB/s—an enormous leap over USB 1.1. Saddled with protocol overhead and 8b/10b signaling, however, USB 2.0 was actually capped somewhere in the 30-40 MB/s range. That was good enough for a while. But we get desensitized to great performance, so, as affordable external RAID enclosures and SATA-based SSDs became more popular, it became painfully obvious that USB 2.0 was holding us up.

Enter USB 3.0, fulfilling our demand for a faster data interface with a blistering maximum throughput of 625 MB/s. After factoring in signaling, you're looking at a 500 MB/s ceiling. Even then, though, real-world performance never seems to get as high as those overly optimistic bandwidth charts so prominently featured by motherboard vendors on the front of their boxes.

USB 3.0: Better. But still, we were expecting more!USB 3.0: Better. But still, we were expecting more!

Based on the performance of the thumb drives and external hard drives lying around our SoCal lab, we were worried that we weren't getting anywhere near the interface's potential. So, we set out to explore the state of USB 3.0 and figure out if there was any way to improve our USB 3.0 transfer speeds.

2. So, What Makes USB 3.0 Slower Than We Expect?

So, why do our USB 3.0-based devices sputter out around 150 MB/s when the interface is supposed to be good for up to 500 MB/s or so? Breaking down the basic speeds and feeds is a good first step in understanding the inner workings of USB.

Interface
Data Rate (Bits/s)
Theoretical Bandwidth (Bytes/s)
Theoretical Bandwidth After 8b/10b Encoding (Bytes/s)
USB 2.0
480 Mb/s
60 MB/s
48 MB/s
USB 3.0
5 Gb/s
625 MB/s
500 MB/s


Because USB isn't ideal for transmitting baseband data, information needs to be encoded using a line code and then decoded on the other end. This is a critical step that allows the receiving end to recover the data clock. Without it, you end up with a much higher error rate. Like many other interfaces (like optical gigabit Ethernet), USB uses the 8b/10b line code, turning eight-bit symbols into ten-bit symbols, achieving what is referred to as DC balance. Although 8b/10b provides the frequent transitions needed for clock recovery, it incurs a 20% bandwidth hit.

Right off the top, then, USB 3.0's 5 Gb/s data rate turns into a 500 MB/s peak throughput. But that's not the only variable eating into your device's real-world transfer speeds.

The USB Implementers Forum (USB-IF) states the following in its Universal Serial Bus 3.0 Specification, under section 4.4.11:

SuperSpeed efficiency is dependent on a number of factors including 8b/10b symbol encoding, packet structure and framing, link level flow control, and protocol overhead. At a 5 Gbps signaling rate with 8b/10b encoding, the raw throughput is 500 MBps. When link flow control, packet framing, and protocol overhead are considered, it is realistic for 400 MBps or more to be delivered to an application.

All of the sudden, USB 3.0 is down another 100 MB/s. Even at 400 MB/s, though, we're still looking pretty good compared to USB 2.0's sub-40 MB/s performance.

Although those figures help temper our expectations of USB 3.0 somewhat, they don't answer why we're seeing real-world numbers that are so much lower, though. We're still left asking, "Why are the USB 3.0 devices so slow when the spec is capable of so much more?"

The first answer to our question is that the device-side controller significantly influences performance. In the chart above, Thermaltake's BlacX 5G is clearly capable of overtaking Apricorn's SATA-to-USB 3.0 Adapter, though you're only going to see those numbers if you use a high-performance SSD. More impressively, the BlacX 5G is capable of outperforming Buffalo's external RAID solution, which shows up in the chart above that. Now, the BlacX 5G is the only device of the three mentioned that uses an ASM1051 controller. Thus far, in our experience, USB 3.0 devices employing ASMedia controllers deliver the best performance. But that advantage alone isn't enough to push past 300 MB/s to the interface's peak potential.

Second, the host's controller significantly influences performance. The aforementioned benchmarks were run on an ASRock Z77 Extreme6 motherboard’s native USB 3.0 ports. With that said, we've seen conflicting performance numbers, and the results almost seem to be implementation-specific. Etron's controller on one board tops out at 250 MB/s, and then the same controller on another platform can't get past 200 MB/s. Overall, though, the most consistent experience comes from USB native to a Platform Controller Hub or Fusion Controller Hub.

The final issue is that, although USB 3.0 is capable of 400 MB/s, its performance potential is impeded by an inefficient protocol. All forms of USB use four transfer types: control, interrupt, isochronous, and bulk. The first two—control and interrupt—define the manner in which the host communicates with devices. The third transfer type, isochronous transfer, is for transferring data periodically and continuously, determining how a device can reserve a defined amount of bandwidth with guaranteed latency. Isochronous transfer is typically used in audio/video devices like capture cards, because it resolves the problem of data loss (such as video frame dropping) when multiple USB devices are in use. Lastly, bulk transfer (bulk-only transport) is the mode that we are focusing on here, since it's used for transferring data to USB mass storage devices.

Bulk-only transport—or “BOT” as it's more commonly known in engineering circles— was originally developed in 1998 for USB 1.1 as a protocol that receives and processes a single command at a time. BOT was specifically conceived to handle the needs of USB thumb drives, which at the time were quite small with low speed/capacity. In this respect, BOT is similar to native IDE in that command queuing is dropped on the host side (that explains why USB performance flatlines when queue depth is increased).

BOT remained unchanged when USB 2.0 debuted in 2000, possibly because the USB bus speed bottleneck eliminated any need for a BOT update. But that might have been a mistake in retrospect. This little bit of procrastination has a big impact on USB 3.0 because the interface is no longer slower than the devices connecting to it. Now, the reverse is true.

3. Turbo Mode: Faster USB, With A Caveat

The maximum transaction size for bulk-only transfers (BOT) at the operating system level is 64 KB. However, sequential data is typically moved in 128 KB blocks, requiring two BOT transactions. What's being referred to as "Turbo mode" overcomes that limitation by increasing the maximum transfer size to 1 MB or larger, allowing the USB driver to pack several 128 KB sequential requests into one larger transaction. Fewer small transactions means less wait, ready, and acknowledge USB commands, in turn reducing the amount of bandwidth consumed by signal overhead.

USB 2.0 speeds generally increase by 8-10 MB/s with Turbo mode enabled, delivering a ~25-33% bump in performance. You'll always see that speed-up, regardless of whether you're using a conventional hard drive or SSD, because both storage devices outperform the bandwidth-constrained interface.

As we know, USB 3.0 rectifies our bottleneck issue. When we drop in a hard drive, sequential reads top out around ~128 MB/s—and Turbo mode has no effect. The hard drive simply isn't fast enough to push third-gen USB, so even when enable higher transfer speeds, the mechanical disk is still what's slowing us down.

Once we switch over to our 240 GB Vertex 3, Turbo mode starts playing a more significant role. Throughput on the Apricorn SATA-USB 3.0 adapter jumps about 30-40 MB/s, representing a ~20-25% improvement. Interestingly, the Thermaltake BlacX 5G is such a great performer by default that Turbo mode gives it no additional benefit.

Turbo Mode, Explained

Turbo mode is relatively uncomplicated, basically involving a simple modification of the BOT driver at the operating system level. ASRock's XFast USB and Asus' USB 3.0 Boost utilities enable Turbo mode, though these software tools are proprietary to specific ASRock or Asus motherboards.

Manually enabling Turbo mode on a board from a vendor that doesn't offer its own utility is possible by modifying the HKEY_LOCAL_MACHINES\SYSTEM\CurrentControlSet\Control\usbstor\054C00C1 registry key. Add a 32-bit DWORD value named "MaximumTransferLength" and specify the maximum transfer size value between 65535 (64 KB) and 2097120 (2 MB) in the data field. Depending on the vendor, some Turbo mode optimizations occur at the signaling level to remove the wait, ready, and acknowledge commands inherent to USB. However, these optimizations play only a minor role in how Turbo mode improves performance.

External storage predominantly involves sequential transfers. Very rarely does random I/O come into play. If you to try to run Windows from a thumb drive, then sure, you'd be accessing multiple small files scattered across the volume. And when this is the case, Turbo mode is going to negatively impact your random throughput (though this is really only applicable to SSDs; hard drives don't handle random requests well enough to get bogged down any worse). We see the 4 KB random read performance our Apricorn SATA-USB 3.0 adapter drop from 48 MB/s to 36 MB/s with Turbo mode enabled, while random writes suffer a slightly smaller slow-down.

There is really no good way to circumvent the loss of random I/O performance with BOT. Unlike sequential transfers, small random blocks cannot be packed together. The USB driver's look-forward algorithm sends transactions piece-by-piece because the LBA address locations are not adjacent.

But why does increasing the transaction size slow down the movement of random 4 KB blocks? You see, a larger transaction size extends the amount of time the USB driver attempts—and ultimately fails—to pack more 4 KB transfers into a larger transaction. The result is that our Vertex 3 barely breaks 80 MB/s. Attached to SATA, it hits ~325 MB/s at high queue depths.

4. USB Attached SCSI (UAS): Enabling Even Better USB 3.0 Performance

USB Attached SCSI (UAS) is a new USB 3.0 protocol that replaces the older USB 2.0 BOT protocol. Intended to more completely exploit USB 3.0's potential, UAS introduces two major architectural changes. 

  1. Four-Pipe Model: Previously, query and command signals shared the same pipe with transferred data. USB 3.0's UAS protocol (UASP) does not mix transfer types, and each data type has its own pipe. Think of UAS as multi-threaded, whereas BOT is more of a serial process.
  2. Command queuing: Unlike BOT, UAS processes transfers in parallel, eliminating the need to wait for the next signal.

The thing is, UAS support is not a simple switch you turn on. It requires four platform-oriented elements in order to work:

  1. UAS support in the USB driver stack.
  2. Device hardware supporting UAS.
  3. Device firmware supporting UAS.
  4. UAS-compatible system controller.

If any of those are missing, UAS won't function and USB 2.0's BOT becomes the fallback mode for preserving compatibility. So, you wouldn't want to plug a UAS-capable device into a motherboard that doesn't support it, or connect a client device limited to BOT support into a platform that enables UAS.

We can only guess how many existing USB 2.0 or 3.0 devices might be UAS-enabled. But what we do know is that the host's and device's controller must have hardware-based support for the feature. We are told that many shipping USB devices likely already support UAS. But vendors are ultimately responsible for providing firmware updates to enable it.

Thermaltake's BlacX 5G features ASMedia's ASM1051, a USB 3.0 controller with UAS support. However, a firmware update from Thermaltake's website is required to turn it on.

UAS support is currently missing from Windows 7, OS X, and Linux (depends on kernel), but Microsoft confirmed that Windows 8 will feature native UAS support late last year. Indeed, installing the Windows 8 Release Preview reveals the native UAS Mass Storage Driver. However, Windows 8 UAS support only seems to work for USB 3.0. We're told that a Windows 7 update for UAS support is probable some time after Windows 8 ships.

There is no word on the status of UAS support in OS X. However, we do know that Apple developers have been involved with UAS, so it's possible that native support could appear in the operating system succeeding Lion. Unfortunately, we have no information on UAS support for Linux.

We do not have to wait for Windows 8 to test UAS. Fortunately, Asus has been making a big deal about USB 3.0 Boost, an application that adds Turbo mode and UASP support to select models, including Z77-, X79-, Z68-, 990FX/990X/970-, and A75-based platforms with ASMedia's ASM1042 USB 3.0 controller.

If you happen to own a board from Asus equipped with the requisite hardware, either "Turbo" or "UASP" appears alongside the Normal button in Asus' USB 3.0 Boost utility once the drive is formatted and plugged into a USB 3.0 port. It can be a port native to the chipset or attached to ASMedia's controller; it doesn't matter. Turbo mode is specific to any USB 2.0 or non-UAS USB 3.0 devices, and you don't get the option to select Turbo mode if your USB 3.0 device supports UAS. "Normal" mode (BOT) is the default option for all devices.

ASRock's XFast USB is a more polished piece of software, enabling Turbo mode on any USB port without requiring the device to be NTFS- or FAT-formatted. However, Asus is alone in supporting UAS in Windows 7, and it does so through by licensing MCCI's ExpressDisk UASP Driver.

The Asus UASP driver performs better than BOT and the native Windows 8 UAS driver, particularly in random reads.

The Windows 8 UAS driver is fastest in sequential transfers, pushing almost 360 MB/s and leading the Asus UASP driver by 25 MB/s in sequential reads, specifically. In contrast, BOT tops out at ~300 MB/s. Asus' UASP driver leads in sequential writes, achieving up to ~340 MB/s. Windows 8's native UAS driver only manages to hit ~325 MB/s. But both UASP modes show a marked improvement over BOT, which levels off at ~315 MB/s.

5. Enabling UAS On Older USB 3.0-Equipped Motherboards

As we've mentioned, even if you have a UAS-capable device, the system you plug it into must still support the feature before it offers any appreciable benefit. Getting there requires software and hardware considerations.

Addressing The Software Side

Windows 7's driver stack doesn't include UAS support, which is why Asus' USB 3.0 Boost utility includes .inf driver configuration files in a sub-installation folder. These driver configuration files are the missing link.

As it turns out, you can technically use those same drivers to enable UAS support manually. There's one big roadblock in the way, though. When Asus licensed MCCI's UAS driver, it included a subroutine that checks the make and model of your motherboard. If you're not using one of the company's boards, the process becomes prohibitively complex (although we've made it work in our lab).

If, however, CPU-Z identifies the manufacturer of your motherboard as "ASUSTek Computer INC", manually replacing the "USB Mass Storage Driver" with "ASUS USB 3.0 Boost Storage Driver" under System Properties reveals a second "UAS Storage Driver."

Try this on a non-Asus motherboard and you'll get a driver error, unfortunately, and the second driver remains hidden. The only way to work around the error is modify your SMBIOS string using a special tool. Again, it's probably more of an effort than most people want to even bother with, particularly since we aren't even done yet.

To be clear, then, we're only able to proceed with an older Asus board that does support USB 3.0, but isn't already UAS-enabled.

Addressing The Hardware Side

Just because we have the driver installed doesn't mean UAS is working yet. The right hardware matters, too. Take Asus' P8P67 Deluxe as an example. It contains the right SMBIOS string, naturally, but it employs a Renesas USB 3.0 controller, which is why it's not listed on the support page for USB 3.0 Boost. What all of the supported boards do have in common is ASMedia's ASM1042 controller. 

The implication is that ASMedia's hardware does offer UAS support, while Renesas' doesn't. We were able to get UAS working through the Z77 chipset's native USB 3.0 ports using Windows 8 on an ASRock's Z77 Extreme6 motherboard (along with the Asus UAS driver on the Z77-equipped P8Z77-V Deluxe), suggesting that Intel's integrated controller does support UAS.

In contrast, the older Renesas controller either lacks the necessary hardware support or it requires a driver update.

The answer, interestingly enough, is to buy a Syba USB 3.0 PCIe card (SD-PEX20112). This cheap solution works because it centers on the ASM1042 controller hardware, which supports UAS, according to ASMedia. Simply install ASM1042 driver from Asus, and you're good to go.

Running Iometer with the Thermaltake BlacX 5G plugged into our Syba USB 3.0 card confirms that UAS works; sequential read speed tops out at 325 MB/s, which is right where we'd expect to see it on a board with native UAS support.

6. On A Quest For Better USB 3.0 Performance

Depending on controllers, devices, and hosts, USB 3.0 performance varies widely, and those jumps up and down are made evident in our benchmarks. And it's worth the research to figure out which combination of components is going to yield the best experience.

Turbo mode and UAS are both attractive technologies able to bolster the default behavior of USB 3.0. But they both require you connect devices that let the interface shine, meaning you need storage that won't gum up performance as a bottleneck. Hook up an external hard drive via USB 3.0, and it's going to deliver the same speed in pretty much every situation. Really, it takes some form of solid-state storage to make a difference.

And don't cross your fingers for better random I/O performance, either. Although we have to imagine that the number of folks leaning on USB-attached storage for workloads pushing heavy random accesses, it's worth mentioning that Turbo mode and UAS don't help. Really, sequential access patters stand to gain the most from both technologies. 

Perhaps oddly enough, we saw the biggest gains from Turbo mode using the USB 3.0 devices that delivered the worst performance. Apricorn's SATA-USB 3.0 Adapter is a favorite lab tool, but it employs a poorly optimized USB 3.0 controller. A lot of inexpensive USB 3.0 enclosures and thumb drives fall into this category, and they're the ones that benefit most from Turbo—good news, since Turbo mode is basically free.

Enabling Turbo mode is a fruitless endeavor when you're using higher-end USB 3.0 devices, though, like Thermaltake's BlacX 5G, because its normal (BOT) performance is so good. UAS is the game-changer in this particular scenario; its sequential performance is as much as 20% higher, depending on your setup. 

UAS is a fairly new technology, and so we're withholding judgement on it for now. Some of the vendors we contacted report much higher numbers than the ones reported here in their own labs, and we have every reason to believe higher speeds are possible. According to several of the engineers we contacted, development hardware achieves sequential speeds as high as 430 MB/s and random I/O exceeds 100 MB/s. In comparison, we hit 350 and 70 MB/s in both metrics, respectively, with our shipping hardware. 

At the end of the day, UAS still offers tremendous potential, though PC enthusiasts might not even be the primary beneficiaries of it. As one Western Digital engineer pointed out, this technology is a real boon in the mobile and low-end desktop spaces. USB imposes a significant processing overhead using BOT, which helps explain why USB 2.0 and 3.0 often shows so poorly on older machines. The UAS protocol is more efficiently streamlined, creating less work for the host CPU. The addition of command queuing support opens the door to better performance because storage operations are processed in parallel. This combination of lower signal overhead and more efficient data transfers helps boost performance on older and cheaper computer systems, freeing the processor for other tasks.