Arbeiten USB-Controller parallel oder seriell?
Viele USB-Controller haben mehr als einen USB-Anschluss.
Wenn dann z.B. an einem Controller 4 USB-Geräte angeschlossen sind (USB-Stick, Maus, Tastatur und Kartenleser), kann dann der USB-Controller die Signale (Daten) dieser 4 Geräte gleichzeitig bearbeiten (Parallelbetrieb) oder schaltet er sequentiell von deinem zum anderen Eingang um und verarbeitet die blockweise empfangenen Daten dann seriell?
2 Antworten
Hey :D,
USB-Controller arbeiten grundsätzlich seriell, auch wenn mehrere USB-Geräte an einem Controller angeschlossen sind. Das bedeutet, dass der Controller nicht wirklich gleichzeitig die Daten aller angeschlossenen Geräte verarbeitet (Parallelbetrieb), sondern vielmehr die Signale der verschiedenen Geräte nacheinander bearbeitet.
Jedoch ist es wichtig zu verstehen, dass USB (Universal Serial Bus) selbst ein serielles Übertragungsprotokoll verwendet, bei dem Daten in seriellen Paketen über die Verbindung gesendet werden. Wenn mehrere Geräte an einem einzelnen Controller angeschlossen sind, erfolgt die Verarbeitung der Daten durch sogenannte Multiplexing-Techniken, bei denen der Controller die verschiedenen Geräte abwechselnd (in einer Art "Schnellumschaltung") abfragt und die empfangenen Daten seriell verarbeitet. Dies geschieht sehr schnell, sodass der Eindruck entsteht, dass mehrere Geräte gleichzeitig "kommunizieren".
In der Praxis ist es also eher eine schnelle sequentielle Verarbeitung, bei der der Controller kontinuierlich von einem Gerät zum nächsten umschaltet, um die Daten zu empfangen und zu senden.
USB ist ein Master-Slave-Protokoll, bei dem der Host-Controller (z. B. der USB-Controller auf dem Mainboard) die Kommunikation steuert. Der Controller fragt die Geräte in einem bestimmten Zeitplan (Polling) ab.
In einem sogenannten Frame oder Microframe (je nach USB-Version) teilt der Host-Controller jedem Gerät einen Zeitabschnitt (Zeitslot) zu, in dem es Daten senden oder empfangen kann.
Die Datenübertragung erfolgt also seriell (nacheinander), aber so schnell, dass es für den Benutzer wie ein quasi-paralleler Betrieb erscheint.
Der Controller verarbeitet die eingehenden Daten blockweise, da jedes Gerät seine Daten in kleinen Paketen überträgt.
Je nach USB-Version (z. B. USB 2.0, USB 3.0) und Bandbreite der Geräte können mehrere Geräte in sehr kurzen Abständen abgefragt werden.
Die verfügbare Bandbreite des USB-Busses wird unter allen angeschlossenen Geräten aufgeteilt.
Manche Geräte (wie eine Maus oder Tastatur) benötigen nur minimale Bandbreite (Interrupt Transfers), während andere (wie ein USB-Stick) größere Datenmengen (Bulk Transfers) übertragen.
Der USB-Controller priorisiert Datenströme entsprechend ihrer Übertragungsart.