|
Posted by Ilya Zakharevich on 01/22/08 21:42
[A complimentary Cc of this posting was sent to
John Navas
<spamfilter1@navasgroup.com>], who wrote in article <kdhap35jd7b50p197hbq7r30l57blmldpl@4ax.com>:
> >> When the bus is busy with device 1, device 2 has to wait until device 1
> >> is done.
> >Irrelevant. Assume there is no device 1. Why maximum throughput is
> >not achieved?
> Bus overhead and latency.
So far all this discussion is running around this circle:
a) I ask: why do we observe bus overhead and latency;
b) People answer: because of bus overhead and latency.
Thanks, but no, thanks.
> >> In addition, device 2 cannot use the bus until polled by the
> >> host bus controller, which can be delayed for a number of reasons.
> >> There is no instantaneous interrupt response.
> >There is if there is no higher-priority interrupt. Why would there?
> It's *polled* -- *not* priority interrupt-driven.
Again: this is irrelevant as far as there is interrupt-driven wakeup call.
> >Same happens with any communication method. If the other side does
> >not cooperate, a streaming device would choke - polling or no polling.
> Unlike USB, DMA transfers can proceed without polling.
DMA transfers still require cooperation. Somebody should set up the
buffers in time. (The difference, is, of course, in SIZE of the
buffer. So it is quantitative, not qualitative.)
> The host computer stack has to compete with all other processes in the
> host.
This assumes that it is a process. If it is a device driver (as it
would be on any sane OS), there would be no competition.
> USB is cheap and simple (like hard disk PIO), and thus not terribly
> efficient. You're making assumptions that just aren't valid. You
> should read up on how it works.
So I ask: if somebody knows how it works, please speak up, and people
reply: you should read up on how it works.
Thanks, but no, thanks.
Yours,
Ilya
[Back to original message]
|