Der USB unterstützt den Datenaustausch zwischen USB-Host und USB-Gerät auf uni- oder bidirektionaler Basis. Datentransfers finden immer zwischen der Host-Software und einem bestimmten Endpunkt eines USB-Gerätes statt, wobei ein bestimmtes USB-Gerät verschiedene Endpunkte haben kann. Der USB-Host behandelt die Kommunikation mit einem Endpunkt eines Geräts unabhängig von einem anderem Endpunkt des selben Geräts. Wie schon erläutert, wird die Verbindung zwischen Host und dem Endpunkt eines Geräts Pipe genannt.
Pipes (außer Message-Pipes) sind immer unidirektional, d.h. für eine bidirektionale Verbindung zwischen USB-Host und USB-Gerät sind mindestens zwei Pipes erforderlich.
Arten des Datenflusses
Die USB-Architektur unterstützt vier verschiedene Arten des Datenflusses:
Kontroll-Transfers:
Kontroll-Daten werden von der USB-Software benötigt, um ein Gerät zu konfigurieren oder Status-Informationen anzuzeigen. Die Datenübertragung erfolgt verlustfrei, d.h. fehlerkorrigiert.
Bulk-Transfers:
Mittels Bulk-Transfer werden typischerweise große Datenmengen übertragen, wie sie beispielsweise bei Druckern oder Scannern anfallen. Bulk-Daten sind sequentiell. Ordnungsgemäßer Datenaustausch wird auf Hardwareebene durch Fehlererkennung sichergestellt. Im Bedarfsfall können auch begrenzt Wiederholungen einer Transaktion ausgeführt werden. Eine feste Bandbreite ist für diese Art der Datenübertragung nicht vorgesehen. Es wird die Bandbreite benutzt, die gerade verfügbar ist. Ist der Bus schon voll ausgelastet wird mit der Übertragung solange gewartet, bis wieder Kapazitäten vorhanden sind.
Interrupt-Transfers:
Für kleine, zu unbestimmbaren Zeiten auftretende Datentransfers wird diese Art der Übertragung verwendet. Die Daten werden dabei mit der vollen Geschwindigkeit übertragen, die das Gerät unterstützt.
Interrupt-Transfers finden normalerweise in Verbindung mit auftretenden Ereignissen Verwendung. Es werden dabei zum Beispiel die Koordinaten eines Zeigegerätes übertragen.
Isochrone Transfers:
Die mit dieser Transferart übertragenen Daten sind fortlaufend und werden in Echtzeit erstellt, übermittelt und empfangen. Timing-Informationen werden dabei mit übertragen.
Ein isochroner Datenstrom muss mit der Rate geliefert werden, mit der er empfangen werden soll. Die dabei für die jeweilige Pipe benötigte Bandbreite ist abhängig von der Sampling-Rate des USB-Geräts. Mögliche Latenzzeiten während der Übertragung hängen von der Pufferung an den entsprechenden
Endpunkten ab.
Ein typisches Beispiel für isochrone Daten ist Sprache. Wenn der Datenstrom während einer solchen Übertragung abreißt, kommt es zu unschönen Störungen bei der Sprachausgabe. Selbst wenn die Daten komplett übertragen wurden, kann eine verzögerte Übertragung den wie zum Beispiel bei Telefon-Konferenzen benötigten Echtzeit-Effekt zunichte machen.
Die zeitlich korrekte Übertragung wird bei isochronen Transfers durch das potentielle Auslassen bestimmter Datenteile erreicht. Mit anderen Worten: wenn ein Fehler bei der Übertragung auftritt, wird er nicht durch Hardware-Mechanismen (Wiederholungen) korrigiert. In der Praxis wird der Fall des
Datenverlustes jedoch nur selten auftreten, da bei isochronen Transfers die ausreichende Bandbreite für die Übertragung reserviert wird, um sicherzustellen, dass die Daten mit der gewünschten Rate geliefert werden können. Außerdem ist der USB für minimale Datenverzögerungen bei der Übertragung konfiguriert.
|