From the Superuser board:
The theoretical maximums are as follows:
In
bits per second, that is:
- USB 1.1 = 12 Mbit/s
- Firefire 400 = 400 Mbit/s
- USB 2.0 = 480 Mbit/s
- FireWire 800 = 800 Mbit/s
- USB 3.0 = 5 Gbit/s
- USB 3.1 = 10 Gbit/s
- eSATA = Up to 6 Gbit/s (750 MB/s) right now as it depend on the internal SATA chip.
- Thunderbolt = 10 Gbit/s × 2 (2 channels)
- Thunderbolt 2 = 20 Gbit/s
- Thunderbolt 3 = 40 Gbit/s
Some of these are missing some simple overhead (wire encoding method) that should be applied when describing theoretical maximum. Encoding means, if you want to transmit x bits of data, then it takes y bits on the wire (where y is greater than x).
Back in the RS-232 days (serial ports) data was transferred at 300 to 115200 baud typically, (bps) using one start bit, 8 bits of data, and one stop bit. Thats 10 bits per byte.
8b/10b encoding was created to help clocking bits and to balance DC voltage (having too many 1 bits or zero bits in a row is bad). Later, more efficient encodings are used - 64b/66b, 128b/132b, 128b/130b.
USB gen 1 uses 8b/10b encoding, so the theoretical max is 4 Gbps.
USB gen 2 uses 128b/132b encoding, so the theoretical max is 9.7 Gbps.
SATA 6g uses 8b/10b encoding, 4.8 Gbps.
Thunderbolt uses 64b/66b encoding, but the 10, 20, 40 Gbps numbers already take this into account (Thunderbolt is 10.3125 Gbps or 20.625 Gbps).
FireWire numbers are slightly different than the rounded numbers that we usually see. 393.216 Mbps and 786.432 Mbps.
On top of the simple overhead is the complex overhead required for the protocol used (protocol is all the bytes that aren't data). Different methods of transmitting data have different overhead. For example, see
https://microchipdeveloper.com/usb:high-speed for USB 2.0 examples.
Instead of these bit rates, or the simple or complex theoretical maxes, it helps to use a benchmark. Different benchmarks give different numbers. I believe on the Mac that AmorphousDiskMark.app sequential test gives the highest numbers. I did some tests (read/write MB/s) with a 2.5" HD drive (not an SSD):
USB 2.0: 15/23
FireWire 400: 30/28
FireWire 800: 69/54
USB 3.0: 77/56
Of course, with an SSD or NVMe, the USB 3.0 speed would be more like 460 MB/s. Not sure why my USB 2.0 numbers are so low. Maybe it's normal. Maybe it's the USB controllers in my external drives. If I try a USB 2.0 to NVMe then I can get slightly better.