Serial communication over USB 3 – Theoretical speed

bandwidthhdmiusb

USB 3 has a theoretical speed of 640Mbps or 80 megabytes per second.

Does this mean (in theory) that I can send 80 megabytes of information over the serial port from my computer to a device connected via USB 3 every second?

4k video usually has something like 35Mbps bitrate. USB3's theoretical bandwidth is 640Mbps. Can USB3 (in theory) support 'video out', assuming there was a monitor that accepted USB3 instead of HDMI? Why are HDMI cables used when USB3 has enough bandwidth to handle 4k video?

Best Answer

First off, the baudrate for USB3 superspeed mode is 5Gbps which is 640MBps, not 640Mbps.

Secondly, while that is the baudrate (the number of line transitions per second) that USB can use to transfer information, there is overhead on every sequence of bytes, exactly what the overhead is depends on the packet size, but it usually not more than a dozen bytes on a packet of 1024 bytes. There are a couple main theoretical bottlenecks here though.

One is the bus' bandwidth usage, which is to say while a USB3 tranceiver can transmit or receive at a rate of 5 gigabaud, it cannot do that indefinitely, it has to write that information into storage registers, and wait on DMA calls to copy the data out of those registers into system memory. The DMA calls can get delayed unpredictably by the cpu and other peripherals such as the graphics card using the bus for their own DMAs.

The second is propagation delay, all data that is read from a USB slave (device) has to be requested by the master (host) this request is in the form of a downstream packet form the host to the device. and it takes time for this packet to propagate down the length of a wire. The speed of light in copper is about 85% of that in vaccuum if i remember correctly, and as a rule of thumb that speed is about 1 foot per nanosecond, so for a 1 foot usb cable, that signal has to travel for 1 nanosecond before the tranciever can even begin to pick it up (at 5Gbps, 1 nanosecond is enough to transfer 5 whole bits of data). and you have to do this for every packet (there are actually several handshake packets that have to be sent for every sequence of packets).

On another note, once the device receives the read request packet from the host, it has to fire an interrupt, load the tranciever with its data and then let the transciever send that out so there is quite a bit of turnaround time as well.

As for using USB3 to drive video, you certainly can, there are a number of adapters out there for doing just that and USB3 is still plenty fast to achieve that. some have their own graphics cards onboard some just forward the data over serial from a framebuffer device. you can see some here on newegg.

Related Question