dslreports logo
 
    All Forums Hot Topics Gallery
spc
Search similar:


uniqs
653

bemis
Premium Member
join:2008-07-18
united state

bemis

Premium Member

USB 2.0 Hi vs. 2.0 Full vs. 1.1

I have a dumb question, that I can't seem to find a straight answer for, so I'm hoping to get some help--

Assuming I have a USB 2.0 Hi-Speed controller...

If I plug in a 2.0 Hi-Speed device and a 1.1 device to same controller (or even hub let's say) ... can the 2.0 Hi-Speed device still run at its max speed, or is it throttled back to 1.1 speeds at any point?
bemis

bemis

Premium Member

OK, so I think I may have answered my own question to some degree.

I believe that each device runs at the highest speed it and the controller can talk to each other, so it is not directly restricted by the presence of slower devices... but it is indirectly slower based on the other devices potentially taking a longer total amount of time for its transfers (which may or may not mean anything depending on the type of device).

Wiki has a blub on transaction translators which sound like they may also help to keep everything running at highest speeds.

koitsu
MVM
join:2002-07-16
Mountain View, CA
Humax BGW320-500

koitsu to bemis

MVM

to bemis
USB High Speed = USB 2.0 = 480mbit/sec
USB Full Speed = USB 1.x = 12mbit/sec
USB Low Speed = USB 1.x = 1.5mbit/sec

Note that these numbers do not indicate actual real-world performance (you will lose roughly 40% of it due to protocol overhead), just actual specification bandwidth/capacity.

As for what happens when you have different speed devices plugged into a single USB controller -- each device runs at their own separate independent speeds. Example scenario:

USB 2.0 controller has 4 ports. You have 3 devices plugged into it: one 480mbit device, one 12mbit device, and one 1.5mbit device.

Each device will operate at each of the negotiated speeds independent of one another. If you were to do constant transfers from each device simultaneously, you would find that you'd be getting, from each device respectively, roughly 280mbit/sec, 6mbit/sec, and 0.8mbit/sec. (The numbers are lower by ~40% due to protocol overhead, like I said).

This situation can change if you have a USB hub in the picture. Example: if you have a USB hub is a 2.0 hub, connected to a USB 1.x controller, you're only going to get USB 1.x speeds (in reality) from the devices hooked up to the USB 2.0 hub, despite the devices (on the hub) themselves being USB 2.0. In other words, the throughput limitation bottleneck is because you've got the 2.0 hub hooked up to a 1.x controller.

Finally, in some cases there are internal chip bandwidth limits, e.g. if you were to hook up 4 480mbit devices to the same controller and do transfers simultaneously would you get 280mbit/sec at each? Possibly, but then again in some cases you wouldn't (for example some of the Broadcom SOCs I've seen have internal bandwidth limits where effectively the entire USB 2.0 controller has a maximum bandwidth of 480mbit that's shared across all devices/ports, rather than 480mbit per device. So with two USB ports on that controller, operating at USB 2.0 speed, effectively each device would have 240mbit available to it, and in reality would get only 60% of that speed (due to protocol overhead)).

Hope this helps.

bemis
Premium Member
join:2008-07-18
united state

bemis

Premium Member

Thanks koitsu,

I think what is tripping me up is that it's called a "bus" ... so to me that implies that total bandwidth--or at least available time on the bus--is shared between devices. More devices = less time/bandwidth, therefore it becomes impossible to achieve maximum speeds...

The application is for multi-channel audio and I'm trying to determine if, using USB 1.1 Full Speed, it is possible to feed 8 channels (7.1) of 48kHz/16-bit audio to a device.

48000 samples per second per channel. 16 bits per sample. 8 channels ... which would be 48000*16*8=6144000 bits, or 5.85Mbps. Even with protocol overhead I think it should be do-able with Full Speed.

If we run at USB 2.0 High Speed then given the same slice of time on the bus we can move a huge amount more data and there is much less concern over getting audio starvation...

This is where the question of whether "sharing" occurs or not, and guaranteed bandwidth... i.e. if a user plugs an older USB device in, do we end up getting stuck with less bandwidth.

I believe that during USB enumeration there is a way to allocate, or at least inform the controller that you require, a certain amount of bandwidth, so that's what I'm looking further into now.

koitsu
MVM
join:2002-07-16
Mountain View, CA

koitsu

MVM

This has gone from a general USB question to something much more complex (it sounds like you're designing an actual hardware device that uses USB). I assume you have a USB-IF membership? If so, have you asked the folks there?