|
Posted by John Navas on 01/22/08 01:29
On Tue, 22 Jan 2008 00:25:03 +0000 (UTC), Ilya Zakharevich
<nospam-abuse@ilyaz.org> wrote in <fn3d4v$77b$1@agate.berkeley.edu>:
><spamfilter1@navasgroup.com>], who wrote in article <hnf9p31ajn83asrj4hn43b2e4597ue2l2e@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.
>> 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.
>> Latency occurs because the device has to wait to be polled. It cannot
>> demand the bus instantly.
>
>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.
>> That helps, but there can still be latency due to issues in the host
>> controller (which handles multiple ports)
>
>Assume than controller is dedicated to a device.
The host computer stack has to compete with all other processes in the
host.
>> and software stack (which handles all ports).
>
>Again, how this is relevant? The stack expects some data be ready on
>port7 in 3msec. It sets a timer, and polls port7. If nothing there,
>and some suitable delay passed, it can poll the remaining 11 ports.
>(I assume that USB controller can bus master for multi-packet
>transfer; can it?)
That would be horribly inefficient.
Think hard disk PIO versus hard disk DMA.
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.
--
Best regards,
John Navas
Panasonic DMC-FZ8 (and several others)
Navigation:
[Reply to this message]
|