Look at a means to make USB3.0 go even faster, for those who like file transfers to take less time
If you haven't yet made the transition, the difference between external storage connected by USB 2.0 and USB 3.0 is often huge.

Whereas USB2.0 caps file transfers at just over 30MB/s, USB 3.0 gets much closer to the capability of the storage device, often more than three times that level for a hard drive. That's very important if you have a short window to secure files, are trying to get a train home or you need to restore a system rapidly.

Name:  USB 3.0 performance graph Normal, Turbo, UASP, SATA.jpg
Views: 578
Size:  29.3 KB


What do you do, though, if even USB 3.0 just isn't quick enough? In this short project, I'll look at implementing both UASP and Turbo mode, and see how each can squeeze a little more out of USB 3.0 technology. In an attempt to gain a greater understanding of what these things can go, it's first important to understand the limitations of USB 3.0 as it's generally implemented.

The Need for Speed
It's a personal bugbear of mine that whenever USB3.0 technology is used in a device, the hardware maker then mentions 5Gbps (which equates to 625 megabytes per second), the theoretical bandwidth available under USB3.0. It's ludicrous, like calculating the length of a train journey based on the absolute maximum speed the locomotive can achieve.

Most devices on USB3.0 can't achieve even a small portion of 5Gbps, and it's meant to have multiple devices on it anyway. Still, it's worth remembering that the best USB 1.1 could achieve was 12M bps (1.5MB/s), and USB 2.0 ran out of steam at about 480Mbps (60MB/s). However, in both cases, I've never seen any storage device actually get near those caps.

The reason for the shortfall is the protocol used to send and receive data, which under USB2.0 consumes at least a third of the bandwidth just keeping things organized. That was fine when most hard drives could barely break those speeds, but even a cheap laptop drive can achieve more than 100MB/s, and many SSDs can do five times that level.

The appearance of USB3.0 seemed to address those issues, offering 625MB/s. While it still uses the same 8b/10b encoding, the impact is less, so it only blew about 125MB/s of that sending the data, leaving 500MB/s for me and you. At least that's the theory. Anyone who's placed a 500MB/s SSD in an external USB 3.0 enclosure and tested it can confirm the reality doesn't meet those expectations.
Name:  The StarTech 2.5 USB 3.0 SATA II SSD HDD.jpg
Views: 468
Size:  25.7 KB


What USB 3.0 Speed?

To get some baseline numbers, I took a very high-performance SSD, a 512GB Crucial M550, and placed it inside a new external enclosure provided by Star Tech (SKU: S2510BMU33). I then connected it to my work PC, based on the MSI Z87-G43, and ran Crystal Disk Mark 3.0 on it. The results are above.

Given that when the very same SSD is connected via SATA it can read and write faster than 500MB/s per second, there is obviously a problem here. If I go back to the USB 3.0 specifications, I'm drawn to some references that start to hint as to why I'm being seriously disappointed.

The first of these is a comment about 'raw throughput', which points out that the 500MB/s number doesn't actually take account of flow control, packet framing and other protocol necessities. When that's all factored in, 500MB/s becomes 400MB/s. Even that level would be good, but that's not what I'm seeing here or even close. Maybe a second opinion would be a good thing?

My Z87 board uses an Intel home- baked USB 3.0 implementation, and I also have a X79 test platform that uses an AS Media controller instead. What numbers will that alternative implementation come back with?
No Medal, Yet My research revealed that AS media probably makes some of the best USB3.0 controllers. However, when I tested it, the results were not substantially better than the Intel's Z87. It's interesting to note that the X79 doesn't have native support, because when it came out Intel was doing a rain-dance hoping that people would ignore USB3.0 in preference to its Thunderbolt technology, beloved of Apple.

Eventually it realized that people weren't going to junk all their old peripherals on Intel's say-so, and it included USB3.0 in its designs. But back to USB3.0 and its inherent issues. Even on the AS media controller, there's a shortfall, and it's taking away a big chunk of what performance that should be available, in theory. USB actually supports four different ways to get data across it: control, interrupt, isochronous and bulk.

As you might imagine, modes like control and interrupt are designed for devices like mice and keyboards, while the isochronous transfer is perfect for streamed inconsistent data like those that come from a TV adapter. Bulk is the weapon of choice for file transfer and the one that I've been testing here.

Bulk-only transport (BOT) does away with the ability to interrupt the data flow and instead commits to handle the data shipped continuously in large blocks to completion. In this model, there's no queue control on the host end of the transfer, which is why USB performs so badly if you start another file copy when one is already in operation. The biggest data block that BOT can move is 64KB, though normally data will be moved in double chunks requiring two transactions.

Even at 128KB, it's going to take a great many BOT transactions to move a gigabyte of data, and much of that will be padded out with unnecessary commands. There is support for a 'Turbo Mode', where 128KB blocks are glued into 1MB or bigger elements, reducing all the commands and allowing the data to flow more efficiently.

Historically under USB 2.0, the Turbo mode made a worthwhile improvement adding at least 25% to the overall performance. On USB 3.0, implementing Turbo Mode actually means hacking the BOT part of the driver to allow for greater flexibility and larger data blocks. Many AS Rock and Asus boards come with a utility to do this and, luckily, because I have one of those, I can test that theory.

Name:  The USB 3.0 Boot utility on Asus motherboards allows you to use Turbo or UASP mode.jpg
Views: 532
Size:  48.6 KB


Engage Turbo Mode

The Sabertooth X79 motherboard is made by Asus, and it very kindly includes a utility to activate Turbo mode on the ASmedia chip that drives USB 3.0 on that design. It's called USB 3.0 Boost and comes as part of the AI Suite II.

Once this software is active installed and the system rebooted, it's purely a matter of selecting 'Turbo' over 'Normal' and then retesting the system. Or rather, that's what I assumed.

What actually happened was slightly off-script, because the StarTech enclosure supports an extra advanced mode, UASP. When I got to the screen that allowed Turbo mode activation, it wasn't an available option, though UASP was. Logically, if you've got something better, then Turbo mode is rather pointless, so this makes sense.

Before I get on to that, I needed to retread a couple of steps and determine what Turbo mode would do, with an enclosure that might work with. In the end, I borrowed a USB 3.0 transfer cable from the Western Digital Black2 drive, which doesn't support UASP but did enable Turbo mode to be selected.

The results were compelling. Read speed was significantly better, even if write performance was oddly a little less. The important information I gained here was that there's better performance to be had if you have the right controller and the right peripheral in combination.

Having explored Turbo mode, it was time for UASP to reveal its virtues.

UASP
After that slight diversion I was ready to test UASP mode. But before I reveal that level, it's useful to explain how this differs from normal USB 3.0 and Turbo mode.

UASP or USB Attached SCSI (also called UAS) is the merging of old and new technologies: USB and SCSI (Small Computer System Interface). This option was introduced as part of the USB 3.0 standard, though until now not many vendors have actually implemented it. Your success or otherwise in getting this technology to work is entirely dependent on the chip that supplies USB 3.0 on your system, and having the right peripherals.

In my case that was initially the ASmedia controller on the Sabertooth X79, tweaked with the USB 3.0 Boost application, and the StarTech 5251 OBMU33 enclosure. The results of deploying this technology are Significant as the scores above show.
These still aren't close to the SATA performance of the drive, but they're also a country mile from where we started out with pure USB 3.0. Clearly, if you want performance reading or writing to external storage, then UASP is the way to go. There is, however, a twist in this story, which I hadn't anticipated. And it has to do with what version of Windows you're running.

Name:  Asus motherboards list that support UASP and Turbo mode.jpg
Views: 541
Size:  112.0 KB


Not all readers of Micro Mart have Asus motherboards, and my next objective was to provide this level of performance elsewhere, potentially to my own MSI work platform. Surely, that's not difficult?

All my tests were performed with a Crucial M550 SSD. If you don't have an SSD drive that can deliver 500MBb/s speeds, then UASP probably won't help you.

How to Get UASP?

This might seem interesting from a technical perspective, but what can you do if the USB 3.0 on your system doesn't support UASP? Thankfully there are some options that mostly involve getting both a new controller, in the form of a PCI Express card and a new UASP supporting enclosure.

For these experiments, StarTech very kindly provided a card it sells, the part number of which is PEXUSB3S25.This board uses the NEC PD720202, which on this design provides two external USB 3.0 ports and requires a four-pin Molex power line so as not to overload the PCIe bus, It's a tiny card, and as part .of the kit it tomes with a low-profile end plate and a power converter from SATA to Molex. I plugged it into the test environment, installed the drivers from the disc provided, and ran some tests. The results were very disappointing, about the same as normal USB 3.0 on my work system. At this point I became very confused.

The only conclusion I could come to was that the card and enclosure weren't in UASP mode, and some research on the subject revealed that other than Asus's amazing USB 3.0 Boost solution, getting UASP operating on Windows 7 is problematic.

Without drivers that are written to circumvent the Microsoft-controlled stack, this functionality just isn't available on that as. I've included a list of Asus boards that support both Turbo and UASP modes and some hardware that you can use with them. For everyone else, this might be the only really good reason I've seen to use Windows 8, because on that platform this hardware does work and works very well.

By way of a final comparison, here is a graph showing what the same Crucial M550 SSD in a StartTech USB 3.0 enclosure can do, depending how precisely it's accessed from the computer. I include the pure SATA scores for the M550, as this shows you what proportion of the possible performance you end up with.

The UASP speed is about 70% of the SATA, where Turbo is only just above 50%, and ordinary BOT operations USB 3.0 is only 40% when reading. Therefore, a file transferred using UASP will probably get there well ahead of one moved using ordinary USB 3.0.