dslreports logo
site
 
    All Forums Hot Topics Gallery
spc

spacer




how-to block ads


Search Topic:
uniqs
619
share rss forum feed

bemis

join:2008-07-18
Reading, MA
Reviews:
·Comcast

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

join:2008-07-18
Reading, MA
Reviews:
·Comcast
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
Premium,MVM
join:2002-07-16
Mountain View, CA
kudos:23
reply 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.
--
Making life hard for others since 1977.
I speak for myself and not my employer/affiliates of my employer.

bemis

join:2008-07-18
Reading, MA
Reviews:
·Comcast
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
Premium,MVM
join:2002-07-16
Mountain View, CA
kudos:23
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?
--
Making life hard for others since 1977.
I speak for myself and not my employer/affiliates of my employer.