Performance Testing and Conclusion
We fired up the system sent over by MSI and started with some testing. First up were some simple file copies from within Windows 8.1. An Intel P3700 NVMe PCIe SSD was used as the source and destination for these copies, ensuring that the USB 3.1 side of things was the bottleneck.
We used all three USB 3.x controllers (ASMedia, Intel, and VIA), and to each of those host controllers we connected the USB 3.1 demo board (RAID-0 Intel SSD 730) and a Samsung USB T1 (Single 850 EVO). The T1 is only USB 3.0, but is used as a point of reference as a device capable of nearly saturating the bus at its respective speed grade. Here are those results:
Starting from the bottom, the VIA controller (bottom pair), while significantly faster than USB 2.0, falls short of the other two controllers. Intel's USB 3.0 controller (middle pair) turns in great results, but note that the T1 actually beats the ASM1352R in reads, suggesting that the 1352R may not be as optimized as it could be. Moving onto the ASMedia USB 3.1 host controller (top pair), while we see an absolute improvement in throughput, it is not the doubling we expected to see.
The pair of Intel SSD 730's are more than capable of 1GB/sec when in RAID-0, so I believe we can attribute the disparity to the first generation design of the ASM1142 and ASM1352R. Sure they don't completely saturate the theoretical bandwidth of USB 3.1, but if you recall, first generation USB 3.0 hardware came nowhere near the speeds we see in modern hardware. Digging a bit deeper with some other tests, it appeared the ASM1352R was not handling queued commands as efficiently as it could have. Here is a short excerpt of the specs of that chip which apply to queueing:
- Support Mass Storage Class, Bulk-Only Transport Specification Revision 1.3
- Support Universal Attached SCSI Protocol Specification Revision 1.0
- Compliant with USB3.1 Specification Revision 1.0
- Serial ATA bus up to 6Gbps Signal bandwidth
- Support SATA NCQ command
- Support over 2TB drives
- Compliant with Serial ATA Specification Revision3.2
- Support Spread Spectrum Control of USB3.0 and SATA interface to improve the EMI performance
One of the easiest ways to determine QD response of a storage medium (especially an external one which may or may not play nicely with Iometer) is with successive ATTO runs using different queue depth settings. Here are three successive ATTO runs of the ASM1142/ASM1352R pair at various queue depths:
Note the near negligible difference between QD=4 and QD=10. The Intel 730's alone would show a very noticeable difference across that same QD delta, however something about either the ASM1352R's RAID efficiency or the ASM1142's implementation of UASP is limiting the maximum effective queue depth here. If I was to guess based on the results seen here, I would suggest that UASP is at work, but the RAID controller may not be passing those queued commands onto the connected SSDs. The slight increase in throughput from QD2-4 could be explained by increased effective parallelism via UASP over the USB 3.1 bus itself, but that type of scaling could only be effective at lower queue depths, which is the behavior we are seeing here.
MSI's demo has shown us that USB 3.1 (Superspeed+) is here and capable of some very impressive throughputs. The first generation hardware we tested today was not able to reach the theoretical maximum of 1.1GB/sec, but achieving those speeds may require optimizations extending outside of the USB pipeline (i.e. motherboard BIOS tweaks and Windows kernel optimizations). We hope to dive further into USB 3.1 very soon, hopefully with a closer look at the Type-C connector. More to follow on this front for sure!
A big thanks goes out to MSI for providing the X99A Gaming 9 ACK motherboard as well as the prototype USB 3.1 hardware for our testing today!