By the way, I did take look at the USB 1.1 spec and the usb.org forum. Here’s what I found, including some info that was confusing.
I’ve posted on the usb.org forum as well, but I’m hoping somebody on this newsgroup will also respond.
In section 5.0 of the USB 1.1 spec, the table 5-6 on page 48 shows the bulk transaction limits. For a 64 byte transfer, the number of useful (non-protocol, I think this means) data bytes/frame is 1216. With a frame = 1 ms, this would be 1.2 Mbytes/sec.
(1) Since specs are theoretical, I went to the usb.org website and found a Q/A in which somebody asked what actual data rates look like on USB. I’ve pasted it in below. My question is if they meant 900 kilobits per second or 900 kilobytes per second?
If the theoretical max is 12 Mbits-per-second, then 900 kbits/sec would be (900 kilo-bits-per-sec / 12000 kilo-bits-per-sec) * 100 = 9/120 * 100 = 7.5% of theoretical throughput.
If the actual throughput is instead 900 K bytes per second, the actual throughput would be (900 K bytes per sec * 8 bits/byte) / 12000 kilo bytes per second * 100 = 60%, which makes more sense to me.
(2) Can somebody give me an idea of what the actual throughput values they have seen for bulk endpoints? The host is a PC running Windows XP SP2 and the device has what I think is a 64 byte fifo. The packets being transferred are 64 bytes long. I do realize that there are also dependencies as to whether either the host or target is ready to receive/send data, etc, but I was hoping to get a typical value.
http://www.usb.org/developers/usbfaq/#band1http:
1. What do actual data rates on USB look like?
A: USB’s actual throughput is a function of many variables. Typically, the most important ones are the target device’s ability to source or sink data, the bandwidth consumption of other devices on the bus, and the efficiency of the host’s USB software stack. In some cases, PCI latencies and processor loading can also be critical.
Assuming only the target endpoint consumes a significant amount of bus bandwidth-and both the target and the host are able to source or sink data as fast as USB can move it-the maximum attainable bandwidth is a function of the transfer type and signaling rate. These bandwidths are given in chapter 5 of the USB Specification. In practice, most hosts can reach the maximum isochronous and interrupt bandwidths with a single target endpoint. With bulk transfers, typical transfer rates are around 900kb/s to a single endpoint, increasing to near ideal transfer rates with multiple endpoints
----- Original Message -----
From: S. Drasninmailto:xxxxx
To: Windows System Software Devs Interest Listmailto:xxxxx
Sent: Wednesday, August 24, 2005 11:28 AM
Subject: [ntdev] need practical throughput estimate for bulk endpoints
hi all:
I need to get an idea of what is practically achievable for USB 1.1 bulk endpoint throughput.
Given a system that has one bulk in and one bulk out endpoints in use (no other endpoints in use), what is a practical rule of thumb of the throughput you’ll get?
I realize there is some overhead as described in the 1.1 spec, and some over head for when either side is not ready, but I want to know what people really have been seeing? I think the controller we are using has a 64 byte fifo.
It is unreasonable to achieve a 50% efficiency (50% of 12 Mbps)?
It’s a hard pill for me to swallow when I hear somebody tell me that getting 16% efficiency is a reasonable value due to overhead.
What have you all been seeing? Even worse case would be good for me!
thanks in advance
—
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com</mailto:xxxxx></mailto:xxxxx></http:>