Re: usb scheduler

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Jul 28, 2012 at 8:50 PM, Clemens Ladisch <clemens@xxxxxxxxxx> wrote:
> Alexey Filin wrote:
>> On Fri, Jul 27, 2012 at 5:04 PM, Peter Stuge <peter@xxxxxxxx> wrote:
>>> If you require consumer interfaces and you want neither USB nor
>>> Ethernet then I guess there is only FireWire left to choose from.
>>
>> "The FireWire host interface supports DMA and memory-mapped devices"
>
> This is the interface between the host controller and its driver.
>
> The interesting thing about FireWire would be RDMA, but allowing the
> device to read/write the PC's memory doesn't help you much because there
> is no indication when it did so, so you'd need additional transactions
> to tell your driver about this.

Is IO operation of memory-mapped device guaranteed to be synchronous?

>
> With a 3.2 GHz CPU and under ideal conditions (using queued posted
> quadlet writes), I can get about 120000 FireWire packets per second.
> With such small packets, the bottleneck is the CPU because of the packet
> queueing overhead.  What you need is some protocol that does not use
> packets.

It is impossible, modern system bus (PCIe) uses serial links and a
packet protocol (PCI Express 2.0 Base Specification Revision 0.9, 1.5.
PCI Express Layering Overview):

"PCI Express uses packets to communicate information between
components. Packets are formed in the Transaction and Data Link Layers
to carry the information from the transmitting component to the
receiving component."

Unfortunately spec doesn't define latencies. PCI Express 2.0 spec,
2.8. Completion Timeout Mechanism:

"In any split transaction protocol, there is a risk associated with
the failure of a Requester to receive an expected Completion. To allow
Requesters to attempt recovery from this situation in a standard
manner, the Completion Timeout mechanism is defined. This mechanism is
intended to be activated only when there is no reasonable expectation
that the Completion will be returned, and should never occur under
normal operating conditions. Note that the values specified here do
not reflect expected service latencies, and must not be used to
estimate typical response times."

 PCI Express 2.0 spec, Table 7-24: Device Control 2 Register:

"Completion Timeout Value - In device Functions that support
Completion Timeout programmability, this field allows system software
to modify the Completion Timeout value. This field is applicable to
Root Ports, Endpoints that issue Requests on their own behalf, and PCI
Express to PCI/PCI-X Bridges that take ownership of Requests issued on
PCI Express....Default range: 50 μs to 50 ms"

the same in PCI EXPRESS BASE SPECIFICATION, REV. 3.0 (Table 7-25:
Device Control 2 Register)

Some info about request ordering (PCI Express System Architecture, ch
8, Transaction ordering, Introduction):

"...As with other protocols, PCI Express imposes ordering rules on
transactions moving through the fabric at the same time. The reasons
for the ordering rules include:
  * Ensuring that the completion of transactions is deterministic and
in the sequence intended by the programmer.
  * Avoiding deadlocks conditions.
  * Maintaining compatibility with ordering already used on legacy
buses (e.g., PCI, PCI-X, and AGP).
  * Maximize performance and throughput by minimizing read latencies
and managing read/write ordering."

Sequential order of request execution (Alan wrote about it) seems to
be the cornerstone of existing buses.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux