First post, by feipoa
- Rank
- l33t++
In running some benchmarks with various PCIe USB 3.x cards on PCIe revision 1.0a motherboards, I was noticing that I don't get near the maximum uncoded thoughput of 250 megabytes per second for this PCI express specification. I am using a Samsung 870 EVO SSD connected inside UGREAN USB 3.1 gen2 to SSD adapter, which I think uses some Asmedia-based protocal converter. How much additional overhead is there with that protocol conversion?
These Samsung 870 EVO drives claim to do around 570 MB/s read, 530 MB/s write, and certainly will benchmark that when connected to the right SATA controller. PCIe spec 1.0a can do 250 Mbyte/sec of user data once 8b/10b encoding is considered. The USB 3.0 protocal should do 400 Mbytes/s once enconding is considered. USB 3.1 gen1 should do 605 Mbytes/sec once encoding is considered. So why do my benchmarks not easily reach 250 Mbyte/sec? Is there more than just the encoding overhead, "additional overhead"?
On a Renesas NEC D720201 USB 3.0 card connected to the PCIe 1.0a port in x1 mode, I get:
Read = 196 MB/s
Write = 161 MB/s
On another motherboard, the numbers are a smidge better at:
Read = 204 MB/s
Write = 165 MB/s
I know the USB-SATA adapter can do faster because when connected to a two-lane ASM1142 PCIe card, I see:
Read = 395 MB/s
Write = 258 MB/s
but that is still short of the 500 Mbyte/s 2 lanes of PCIe 1.0a can do once encoding is considered.
Is there some combination of hardware which will saturate that PCIe 1.0a x1 lane for a USB SSD? Do I need to wait for SSD SATA drives to advertise 1000 MB/s read/write speeds, for example? Or is there some uncommon PCIe 3.1 gen2 card in an x1 form factor which will yield 250 Mbyte/s with my existing hardware? Most PCIe 3.1 gen 1 or gen 2 cards are multi-lane.
Plan your life wisely, you'll be dead before you know it.