Einführende Betrachtung des USB und Möglichkeiten der Integration in das Rainbow-Betriebssystem

 
WEITER LESEN
Einführende Betrachtung des USB und Möglichkeiten der
        Integration in das Rainbow-Betriebssystem

                                                    Georg Gottleuber
                                                Institut für Verteilte Systeme
                                                        Universität Ulm
                                                  Albert-Einstein-Allee 11
                                                           89069 Ulm
                                            georg.gottleuber@uni-ulm.de

ABSTRACT
Diese Ausarbeitung führt in die Funktionsweise und Hard-
ware des Universal Serial Bus (USB) ein. Dabei werden die
einzelnen Spezifikationen, die verwendete Hardware, die zu-
grundeliegende Logik und die benötigten Treiber skizziert.

Außerdem werden verschiedene Architekturmöglichkeiten
für die USB-Treiberimplementierung in das transaktionale
verteilte Betriebssystem Rainbow besprochen.

Keywords
USB, Rainbow, transaktionale Treiber

1. EINFÜHRUNG
Der Universal Serial Bus (USB) findet seit seiner Einführung
in der ersten Version 1995 im Desktop-, Embedded- und            Figure 1: Physikalische Bus-Topologie (Abbildung
Servermarkt eine weite Verbreitung. Die Stecker und Buch-        aus [2])
sen sind an nahezu all diesen Geräten zu finden. Die gängi-
gen Betriebssysteme Windows, Mac OS, Linux und BSD
unterstützen die Verwendung von USB durch entsprechende         fünf herkömmliche Hubs untereinander verwendet werden.
Treiber.                                                         Verbundgeräte, die mehrere Funktionen anbieben (z.B.:
                                                                 Drucker und Scanner) können dann jedoch nicht auf der
Das an der Universität Ulm entwickelte transaktionale           untersten Ebene benutzt werden, da sie zwei Ebenen benöti-
verteilte Betriebssystem Rainbow verwendet PCs, die eben-        gen.
falls USB-Hardware enthalten. Für die transaktionale Un-
terstützung der USB-Treiber werden verschiedene Ansätze        2.2    Spezifikationen
erläutert, die von Michael Rupp [8] erarbeitet wurden.          Die Version 1.0 der USB-Spezifikation erschien 1995 und
                                                                 damit im gleichen Jahr wie Apples IEEE 1394 Firewire-
2. USB                                                           Standard. Ausgearbeitet von den Firmen Compaq, Dig-
2.1 Topologie                                                    ital Equipment Corporation, IBM PC Company, Intel,
Der USB verbindet USB-Geräte mit dem USB-Host. Die              Microsoft, NEC und Northern Telecom sollte USB eine
physikalischen Verbindungen können in mehreren Ebe-             schnelle, bidirektionale, günstige, dynamisch an- und ab-
nen sternförmig angeordnet werden (siehe Abbildung 1).          steckbare, serielle Schnittstelle schaffen [1]. Als weitere
Verzweigungen werden durch sogenannte Hubs realisiert.           Merkmale werden selbstidentifizierende Peripheriegeräte,
Wegen Zeitvorgaben können höchstens sieben Ebenen              automatische Treiberauswahl und Konfiguration, Expansion
verwendet werden.     Da die Anschlüsse des Hosts be-           der PC-Anschlussmöglichkeiten auf bis zu 127 Geräte, er-
reits als Root-Hub implementiert sind, können maximal           weiterbare Architektur und einfach zu handhabende gün-
                                                                 stige Verkabelung genannt. Die Spezifikation beschreibt alle
                                                                 grundlegenden Eigenschaften von USB, wie Bus-Topologie,
                                                                 Kommunikationsfluss, Transferstypen, mechanische und
                                                                 elektrische Eigenschaften, Hardware-Software-Interaktion
                                                                 und USB-Hubs (jeweilige Erläuterung im restlichen Doku-
                                                                 ment). Als grundsätzliches Design wurde ein Master-Slave-
                                                                 Bus mit dem PC als festen Busmaster (Host) gewählt.

                                                                 Für Anwender sind besonders die zwei Geschwindigkeits-
                                                                 modi interessant. Die Übertragung im LowSpeed-Modus er-
reicht eine Bruttodatenrate von 1,5 MBit/s. Im FullSpeed-
Modus werden bis zu 12 MBit/s übertragen. Die für den
Anwender maximal nutzbare Datenrate ergibt sich durch
Abzug des protokollbedingten Overheads von der Brutto-
datenrate.

Als Verkabelung werden ungedrillte und ungeschirmte Ka-
bel mit einer Maximallänge von 3 Metern für LowSpeed-
Anwendungen (z.B.: Maus und Tastatur), sowie verdrillte
und geschirmte Kabel mit bis zu 5 Metern Länge für den
FullSpeed-Betrieb vorgeschrieben.1

Die folgende Version 1.1 beseitigte einige Unklarheiten und
führte Interrupt-OUT-Transfers (Abschnitt 2.4.2 und 2.4.4)
neu ein.

Mit der USB-Spezifikation in Version 2.0 wurde ein
HighSpeed-Modus eingeführt, der eine Bruttoübertragun-
srate von bis zu 480 Mbit/s ermöglicht.        Dabei wer-
den die bisherigen FullSpeed-Verbindungskabel verwendet.
Der Funktionalität von USB 1.x2 Geräten bleibt un-
berührt. Außerdem können diese Geräte ohne unnötigen
Geschwindigkeitsverlust an USB-2.0-Hubs betrieben wer-
den. Ebenfalls können USB-1.x-Hubs in die Topologie inte-
griert werden. Unterhalb eines solchen Hubs ist dann jedoch     Figure 2: USB 3.0 Dual-Bus-Architektur (Abbil-
keine HighSpeed-Übertragung möglich.                          dung aus [3])

Die Ende 2008 erschienene Version 3.0 der USB-
Spezifikation beschreibt einen SuperSpeed-Modus, der bis          • Stromversorgung: SuperSpeed-Geräte dürfen (bei un-
zu 5 Gbit/s Daten transferiert. Dafür werden jeweils               veränderter Versorgungsspannung von 5 V) nach einer
zum Senden und zum Empfangen ein neues Aderpaar ver-                erfolgreichen High-Power-Anfrage bis zu 900 mA
wendet (differenzielle Übertragung). Als Konsequenz da-            Strom verbrauchen (USB 2.0 nur 500 mA). Ohne An-
raus mussten neue Steckverbinder und entsprechende Ka-              frage dürfen 150 mA bezogen werden (USB 2.0 nur 100
bel eingeführt werden. Die SuperSpeed-Transfers verwen-            mA).
den nur die neuen Aderpaare, während USB-2.0-Transfers
nur über die bisherigen verlaufen. Die gleichzeitige Verwen-     • Idle-Pakete: Wie bisher führen die Verbindungen des
dung von USB-3.0- und USB-2.0-Adern bleibt allein Hubs              USB kein extra Taktsignal. Alle angeschlossenen
vorbehalten (siehe Abschnitt 2.6). Die neuen Buchsen sind           Geräte halten den Takt, indem sie spezielle Synchro-
aber abwärtskompatibel zu USB-2.0-Kabeln und Geräten.             nisationssignale auf den Datenleitungen nutzen. Um
                                                                    den Takt trotz der erhöhten Geschwindigkeit von USB
Neben dem bestehenden USB-2.0-System wurde so quasi                 3.0 zu halten, werden kontinuierlich Pakete versendet.
eine parallele SuperSpeed-Infrastruktur mit eigenem Pro-            Wenn eine SuperSpeed-Verbindung keine regulären
tokoll geschaffen. Dieses Protokoll unterscheidet sich jedoch       Pakete überträgt, werden Idle-Pakte übertragen. Um
nur in Einzelheiten, sodass die bisherigen hardwareunab-            unnötigen Stromverbrauch zu vermeiden, wird ein
hängigen Treiber mit wenigen Modifikationen weiter verwen-         weitgehendes Power-Management eingeführt.
det werden können. In einem USB-3.0-Bus bleiben durch
die beschriebene “Dual-Bus-Architektur” USB-2.0-Geräte           • Senkung des Stromverbrauchs: Das neue Power-
uneingeschränkt benutzbar [3] (Abbildung 2). Außerdem              Management definiert neben dem Übertragungszus-
werden folgende Neuerungen für den SuperSpeed-Modus                tand (“Operational”) noch drei weitere Standby- und
genannt [5],[6]:                                                    Suspend-Zustände, die auch für Hubs zur Verfügung
                                                                    stehen. Ein Hub kann beispielsweise in einen Standby-
                                                                    Zustand wechseln, wenn alle an ihn angeschlossenen
    • Dual-Simplex-Unicast-Bus: Während USB 2.0 ein                Geräte ebenfalls in einem Energiesparzustand sind.
      Half-Duplex-Broadcast-Bus zugrunde liegt, arbeitet
                                                                  • Kein Polling: Das bisher strikte Polling wird durch
      SuperSpeed als Dual-Simplex-Unicast-Bus. Dadurch
                                                                    die Einführung einer neuen asynchronen Nachricht ver-
      ist es möglich gleichzeitig IN- und OUT-Transaktionen
                                                                    mieden. So muss der Host nun beispielsweise nicht
      durchzuführen.
                                                                    mehr ständig bei der USB-Tastatur nachfragen, ob
1                                                                   neue Nutzereingaben vorhanden sind. Stattdessen
  In den späteren Spezifikationen wurden die Län-                 frägt er einmal, worauf die Tatstatur mit NRDY (“Not
genbeschränkungen wieder aufgehoben und nur noch die
notwendigen elektrischen Eigenschaften und maximalen Sig-           Ready”) antwortet. Daraufhin entfallen weitere An-
nallaufzeiten vorgegeben.                                           fragen, da die Tastatur, sobald sie neue Eingaben
2
  Mit dieser Schreibweise werden USB 1.0 und USB 1.1 kon-           bekommt ein ERDY (“Endpoint Ready”) sendet. Nun
forme Geräte zusammengefasst.                                      frägt der Host mit der Gewissheit, dass neue Daten
vorhanden sind nach. Als Antwort erhält er vom Gerät                Host                         Gerät
      die neuen Daten.                                                                                     1 2

    • Data-Bursts: Data-Bursts erlauben es dem Host oder
      Gerät bis zu 16 DATA-Pakete zu senden, ohne auf eine
                                                                       4     3 2        1                  4 3
      Bestätigung (“ACK”) zu warten. Dadurch wird der
      Protokoll-Overhead wesentlich reduziert.                              Typ A                          Typ B

    • Scrambling: Um elektromagnetische Störungen durch                    5 43 2 1                     5 4321
      sich wiederholende Datenmuster bei der Übertra-
      gung zu minimieren, werden die Daten mit einem
      pseudozufälligen Zahlenstrom mittels XOR vermengt                    Mini-A                       Mini-B
      (Methode wie bei PCIe 2.0).
                                                                             5 43 2 1                     5 43 2 1
Abzüglich des Protokoll-Overheads kann der Anwender laut
Spezifikation so eine Nettodatenraten von ca. 400 MB/s                     Micro-AB                      Micro-B
nutzen.

Alle weiteren Ausführungen beziehen sich, wenn nicht ex-
plizit anders gekennzeichnet, auf die USB-2.0-Spezifikation.

2.3 Hardware
                                                                            Typ A
In Version 1.0 von USB waren ursprünglich nur eine Typ-A-
Buchse für den Host und eine Typ-B-Buchse für das Gerät                                                 Typ B
beschrieben.3 Verbunden wurde der Host mit dem Gerät
mittels einem Kabel welches einen A-Stecker auf einen B-
Stecker führte. Da nur diese Sorte von Kabeln verfüg-
bar war, konnte es nicht passieren, dass versehentlich zwei             Micro-AB                         Micro-B
Geräte oder zwei Hosts miteinander verbunden wurden.
                                                               Figure 3: USB-Anschlüsse: USB 1.x und 2.0 in grau,
Wegen des großen Platzbedarfs der Buchsen bei zunehmend        USB 3.0 in blau (USB 2.0 aus [4])
kleiner werdenden Geräten, wurden Mini-A- und Mini-B-
Buchsen eingeführt und Verbindungskabel mit A- auf B-
Stecker beider Größen hergestellt.                            2.4.2    Endpunkte
                                                               Jedem Gerät wird vom Host-Controller eine eindeutige
Für noch kleinere Geräte wurden später Micro-B-Buchsen      Adresse zwischen 1 und 127 zugewiesen. Außerdem kann
und entsprechende Kabel realisiert.      Allerdings sollten    jedes Gerät unabhängig voneinander nutzbare Endpunkte
nun Geräte auch ohne einen PC untereinander USB-              anbieten. Endpunkte werden als IN-Endpunkte bezeichnet,
Verbindungen benutzen können. Als Beispiel kann hier          wenn sie die Kommunikation zum Gerät ermöglichen. Als
eine direkte Verbindung der Digitalkamera mit einem Fo-        OUT-Endpunkte benennt man Endpunkte, die zur Kom-
todrucker dienen. Diese Funktionalität wird USB On-The-       munikation zum Host dienen. Minimal muss jedoch ein
Go (OTG) bezeichnet. Eines der beiden Geräte übernimmt       Endpunkt Null, der zur Konfiguration benötigt wird, un-
dann die Host-Rolle. Diese OTG-Geräte wurden mit einer        terstützt werden. Dieser IN-/OUT-Endpunkt bietet einen
Micro-AB-Buchse ausgestattet, weil sie beide Rollen ein-       kombinierten Betrieb [8].
nehmen können. Bei einer solchen Verbindung muss nur
ein Gerät OTG beherrschen, welches zum Host wird [9].
Abbildung 3 zeigt die üblichen und standardisierten USB-      2.4.3    Pipes
Anschlüsse. Um besonders bei den Typ-A-Buchsen Ver-           Eine Pipe stellt die Verbindung zwischen deinem Endpunkt
wechslungen zwischen USB 3.0 und den älteren Varianten        eines Gerätes und der Software des Hosts dar. Außerdem
auszuschließen, wird von der USB-3.0-Spezifikation eine Far-   werden Pipes mit der Datenbandbreite assoziiert. Die meis-
bkodierung in blau vorgeschlagen.                              ten Pipes werden bei der Konfiguration eines USB-Gerätes
                                                               angelegt. Es gibt zwei verschiedene Pipe-Typen.
2.4 Logischer Aufbau
                                                               Stream-Pipes sind unidirektional und werden zum Daten-
2.4.1    Frames und Micro-Frames                               transfer benutzt. Die Struktur, der transportierten Daten
USB verwendet bei der Einteilung der Bandbreite eine Zeit-     ist nicht spezifiziert. Stream-Pipes bieten Interrupt-, Bulk-
einheit von 1 ms (USB 1.x) als sogenannten Frame bzw.          und Isochronous-Transfers.
125 µs (USB 2.0) als Micro-Frame. Bestimmten Transfer-
typen kann so eine kontinuierliche Bandbreite und Latenz       Message-Pipes sind im Gegensatz dazu bidirektional und
zugesichert werden.                                            übertragen spezifizierte Datenstrukturen. Sie werden für
3
 Stecker und Buchsen mit der Bezeichnung A werden immer        Control-Transfers genutzt und folgen einem speziellen In-
auf Hostseite verwendet. Die Bezeichnung B kennzeichnet        teraktionsschema. Zu erst wird vom Host ein Request
immer die Geräteseite.                                        (siehe Abschnitt 2.5.2) an das Gerät geschickt. Darauf folgt
Transfers                      Transfer

            Transaktionen              Transaktion T1                Transaktion T2                      Transaktion T3

                                        Token Paket                Daten Paket                Handshake Paket

           Pakete

                                 PID      Adresse       Endpunkt     CRC         PID      Daten    CRC          PID

            Pakete auf USB       ...     SOF    T         T        T1      T         T         unbenutzt     SOF      T   T2   ...

                                          Start-of-Frame-Paket                           Transaktionen

            Zeit                                                    Micro-Frame

                             Figure 4: Logische Ebenen eines Transfers (abgeändert aus [8])

ein Datentransfer in die gewünschte Richtung. Nach einer                      eine zugesicherte Bandbreite und Latenz. Sie besitzen keine
Zeitverzögerung folgt dann ein Statusbericht. Eine beson-                     Fehlerkorrektur und kein Handshake-Paket, da auftretende
dere Message-Pipe, die sogenannte Default-Control-Pipe, ex-                    Fehler toleriert werden. Als Einsatzgebiete sind Audio- und
istiert immer, sobald ein Gerät angeschlossen ist. Sie gibt                   Video-Streams angedacht.
Zugriff auf die Gerätekonfiguration, den Status und Kon-
trollinformation [2].                                                          2.4.5      Transaktionen
                                                                               Ein USB-Transfer besteht aus verschiedenen Transaktio-
2.4.4   Transfers                                                              nen. Während Transfers über verschiedene (Micro-)Frames
Ein Transfer wird durchgeführt, wenn eine Software eine                       verteilt sein können, müssen USB-Transaktionen innerhalb
Funktion des USB-Gerätes nutzt, z.B. Daten kopiert. Eine                      eines (Micro-)Frames abgehandelt werden.[8]
Charakterisierung des Datenflusses wird dabei durch vier
verschiedene Transfertypen vorgegeben:                                         2.4.6      Pakete
                                                                               Die verschiedenen Pakete einer Transaktion setzen sich
Control-Transfers müssen von jedem USB-Gerät unterstützt                    üblicherweise aus einer Paket-ID (PID), Daten und einem
werden. Sie dienen der Konfiguration, dem Auslesen von                         CRC zusammen. Hiervon ausgenommen sind Handshake-
Statusinformation und zur Steuerung des Geräts. Control-                      Pakete, die nur die PID enthalten.
Transfers haben eine reservierte Bandbreite, die mindestens
10 % bzw. 20 % eines Frames bzw. Microframes beträgt.                         2.5     Protokollarisches
Ein Interrupt-Transfer hat, entgegen seinem Namen, nichts                      2.5.1      Busprotokoll
mit einem Interrupt bzw. Interrupt-Request im herkömm-                        Alle USB-Transfers werden vom Host-Controller initiiert.
lichen Sinne zu tun. Es handelt sich lediglich um einen                        Transaktionen zwischen Host und Gerät benötigen drei
sich kontinuierlich wiederholenden Transfer. Dieser wird                       Pakete (siehe Abbildung 5):
vom Host-Controller eingerichtet und ist unidirektional. Das
Gerät hat also keine Möglichkeit selbst den Bus in irgen-
                                                                                 1. Das Token-Paket wird vom Host-Controller gesendet
deiner Weise zu unterbrechen, wie es der Name suggerieren
                                                                                    und beinhaltet den Typ der Transaktion, die Richtung,
könnte.
                                                                                    die Adresse des beteiligten USB-Gerätes und die Num-
                                                                                    mer des Endpunktes.
Bulk-Transfers werden verwendet um größere Mengen an
Daten zu übertragen. Sie besitzen keine garantierte Latenz                      2. Das Daten-Paket wird vom Host oder vom Gerät
oder Bandbreite. Deshalb werden sie ausgeführt, wenn noch                          gesendet und enthält die Daten.
Zeit im aktuellen Microframe vorhanden ist.
                                                                                 3. Das Handshake-Paket wird vom Empfänger (Host oder
Isochronous-Transfers können von FullSpeed- und                                    Gerät) versendet und gibt an, ob die Transaktion er-
HighSpeed-Geräten durchgeführt werden und haben                                   folgreich war.
Host                                        Gerät
                   Host                                 Host
                                                                                                               Pipes

                           ACK   (6)   (6)    ACK                                    Gerätetreiber                             IN- / OUT-Endpunkt

                                                                  DATA   (5)                           Default-Control-Pipe
(5)      DATA
                                       (4)
                                                                                  USB-Systemtreiber                               Endpunkt Null
                                             IN-Token
(4)    OUT-Token                                                                                                          implementiert GET_DESCRIPTOR-
                                                                                                                          Request
                                                                                                                                                 b   b   b
                                 (3)                                                                                               Device
                           ACK
                                       (3)    ACK
                                                                                                                                   Configuration             b   b   b

(2)      DATA
                                                                  DATA   (2)
                                                                                                                                                             b   b   b
                                                                                                                                     Interface
(1)    OUT-Token                       (1)   IN-Token                                                        phy. Bus
                                                                                     Host-Controller                               Bus Interface
                   Gerät                                Gerät

             OUT-Transfer                           IN-Transfer                Figure 6:          Logischer Aufbau von USB-Host und
                                                                               Gerät
Figure 5: Pakete eines IN-/OUT-Transfers mit zwei
Transaktionen (USB 2.0); Zusammenfassung der
                                                                               2.5.4      Geräteklassen
Pakete im SuperSpeed-Protokoll (rot-gestrichelte
                                                                               Geräteklassen    können aus dem DEVICE- bzw.
Rahmen)
                                                                               INTERFACE-Deskriptor bestimmt werden und dienen
                                                                               zur Identifizierung des Gerätes. Häufig können auch un-
                                                                               terschiedliche Geräte der selben Geräteklasse den gleichen
Das SuperSpeed-Protokoll weicht von dieser Vorgabe ab,
                                                                               generische USB-Treiber verwenden. So wird eine zusätzliche
weil es aufeinanderfolgende Pakete des Hosts zusammen-
                                                                               Treiberinstallation für ähnliche Geräte vermieden. Außer-
fasst. Für OUT-Transaktionen wird das Token in das
                                                                               dem können auch Unterklassen und Protokollversionen
DATA-Paket integriert. Für IN-Transaktionen wird das To-
                                                                               angegeben werden.
ken von einem Handshake-Paket ersetzt (siehe Abbildung
5).
                                                                               2.6     Hubs
                                                                               USB-Hubs dienen in der physikalischen Topologie als
2.5.2      Requests                                                            “Verteiler”. Sie besitzen einen sogenannten Upstreamport,
Um Geräte über die Control-Pipe anzusprechen bzw. zu                         mit dem sie an den bestehenden USB angeschlossen werden
konfigurieren, werden Requests verwendet. Sie enthalten fol-                   und mehrere Downstreamports, die Anschlussmöglichkeiten
gende Elemente:                                                                für weitere USB-Geräte bieten.

                                                                               HighSpeed-Hubs müssen sogenannte Splittransaktionen aus-
      • Request-Code: gibt die Art des Requests an                             führen können. Diese sind nötig, weil ein LowSpeed- oder
                                                                               FullSpeed-Gerät nicht den restlichen Bus “ausbremsen” soll.
      • wValue: Parameter für den Request                                     Bei einer Splittransanktion verläuft die Kommunikation mit
                                                                               einem solchen Geräten in HighSpeed und nur der letzte
      • wIndex: (meistens) zur Angabe eines Endpunktes                         Hub spricht mit dem Gerät im geforderten LowSpeed- oder
                                                                               FullSpeed-Modus.
      • wLength: Länge der Daten, die bei der darauffolgen-
        den Transaktion gesendet werden sollen                                 Ein USB-3.0-Hub ist eine logische Kombination aus zwei
                                                                               Hubs: einem USB-2.0-Hub und einem SuperSpeed-Hub.
                                                                               Der USB-2.0-Hub ist mit den USB-2.0-Anschlüssen ver-
Je nach verwendetem Request-Typ kann sich die Be-
                                                                               bunden, während der SuperSpeed-Hub die SuperSpeed-
deutung aber auch von dieser Definition unterscheiden.
                                                                               Anschlüsse kontrolliert (siehe Abbildung 2). Konsequenter-
Einige wichtige Requests sind GET CONFIGURATION,
                                                                               weise kann ein USB-3.0-Hub alle Adern des Upstreamports
GET DESCRIPTOR, GET INTERFACE, SET STATUS,
                                                                               nutzen und gibt sich als zwei Geräte aus: ein SuperSpeed-
SET ADDRESS.
                                                                               Hub am SuperSpeed-Bus und ein USB-2.0-Hub am USB-
                                                                               2.0-Bus [3].
2.5.3      Deskriptoren
Deskriptoren beschreiben die Charakteristiken eines                            2.7     USB-Treibersystem
Gerätes. Durch sie erhält der Host die benötigten In-                       Die für den USB-Host benötigten Treiber gliedern sich in
formationen, um den richtigen Treiber für das Gerät                          drei Ebenen:
auszuwählen. Der Aufbau eines Deskriptors erfolgt nach
einem festgelegten Schema, das sowohl verpflichtende als
auch optionale Felder definiert.                                                  • Treiber für den Host-Controller: Der Host-Controller-
Treiber (HCD) bietet eine abstrakte Schnittstelle,         Michael Rupp hat in seiner Arbeit [8] untersucht, wie
        die unabhängig vom konkret verwendeten Typ des            das bisher für den lokalen Kernel konzipierte und imple-
        USB-Controllers ist. Verwendet werden der Univer-          mentierte USB-System in den transaktionalen verteilten
        sal Host Controller (UHC) oder der Open Host Con-          Kernel integriert werden kann. Die folgenden Abschnitte
        troller (OHC) im LowSpeed und FullSpeed-Modus,             stellen eine Zusammenfassung der untersuchten Integra-
        der Enhanced Host Controller (EHC) für HighSpeed-         tionsmöglichkeiten dar.
        Übertragungen und der Extensible Host Controller
        (XHC) für den mit USB 3.0 eingeführten SuperSpeed-       3.2    Lokaler Ansatz
        Modus.                                                     Beim lokalen Ansatz wird die bisherige Implementierung im
                                                                   lokalen Kernel an den verteilten Kernel angebunden. Dazu
      • Generischer USB-Treiber (USBD): Der USBD bietet            werden die Schnittstellen zu den einzelnen Gerätetreiber als
        Gerätetreibern die Möglichkeit Kommandos an Geräte      Dummy-Klassen im verteilten Kernel angeboten. Die ein-
        abzusetzen und Daten in und aus Pipes zu trans-            fachste Möglichkeit zur Realisierung verwendet dann einen
        ferieren. Er benutzt die HCDs.                             Task im verteilten Kernel, der kontinuierlich prüft (Polling),
                                                                   ob neue Daten für eine Dummy-Klasse Daten vorliegen, oder
      • Gerätetreiber (für USB-Geräte): Gerätetreiber im-
                                                                   nicht.
        plementieren gerätespezifische Funktionen und nutzen
        dafür den USBD.
                                                                   Allerdings ergibt sich eine Problematik, die bei den beiden
                                                                   anderen Ansätzen auch auftritt: der Abbruch im verteilten
3. INTEGRATIONSMÖGLICHKEITEN                                       Kernel. Sendet ein Task des verteilten Kernels mittels Mi-
   DES USB-SYSTEMS IN RAINBOW                                      crokernelinterface einen Schreibbefehl, so wird dieser auch
                                                                   dann vom lokalen Kernel ausgeführt, wenn ein Abbruch im
3.1 Rainbow                                                        verteilten Kernel erfolgt. Nach dem Abbruch ist es für den
Das verteilte Betriebssystem Rainbow wird am Institut für         verteilten Kernel außerdem nicht mehr ersichtlich, dass der
verteilte Systeme an der Universität Ulm entwickelt. Es ist       Schreibvorgang stattfand. Als Lösung wird ein spezieller
ein 64-Bit-System, welches transaktionale Speicheroperatio-        DMA-SmartBuffer zur Übergabe der Daten vom verteilten
nen auf einem gemeinsamen verteilten Speicher bietet. Als          an den lokalen Kernel vorgeschlagen. Dabei werden die
Hardware werden mehrere 64-Bit Standard-PCs verwendet              Befehle in den Speicher des lokalen Kernels geschrieben.
[7].                                                               Der lokale Kernel darf sie jedoch erst ausführen, wenn
                                                                   sichergestellt ist, dass der schreibende Task (des verteilten
Der Zugriff auf den verteilten Speicher erfolgt in Rainbow         Kernels) nicht mehr abgebrochen werden kann bzw. abge-
nach dem ACID-Prinzip4 . Die Zugriffe werden mittels op-           brochen wurde. Dies wird erreicht, indem ein zweiter Task
timistischer Synchronisation durchgeführt. Wird bei einem         im verteilten Kernel überprüft, ob der erste Task abge-
Task ein Konflikt festgestellt, so wird er abgebrochen und         brochen wurde, oder nicht.
es erfolgt eine Rückabwicklung seiner bisherigen Schreibzu-
griffe (Rollback).                                                 3.3    Gemischter Ansatz
                                                                   Der gemischte Ansatz beschreibt die fast willkürliche
Innerhalb von Rainbow werden zwei verschiedene Kernel
                                                                   Aufteilung des USB-Treibers auf die beiden Kernel. Zusät-
ausgeführt. Der lokale Kernel dient zum Booten des Rechn-
                                                                   zlich zur Problematik beim Austausch der Daten zwischen
ers und zur Initialisierung der Geräte, die für den verteilten
                                                                   den Kerneln, nimmt hier auch die Anzahl der betroffenen
Betrieb benötigt werden. Als Beispiel kann hier die Netzw-
                                                                   Schnittstellen zu. Um später dynamisch Treiber hinzufü-
erkkarte genannt werden. Anschließend wird der verteilte
                                                                   gen zu können, bietet es sich an, die Gerätetreiber und den
Kernel gestartet.
                                                                   USBD in den verteilten Kernel zu integrieren. Der hard-
                                                                   warenahe EHC-Treiber wird dagegen im lokalen Kernel, der
Der verteilte Kernel liegt im verteilten Speicher und wird
                                                                   nicht unterbrochen werden kann, angesiedelt. Die Inter-
verteilt ausgeführt.    Da beide Kernel voneinander ge-
                                                                   rupts können direkt vom EHC-Treiber verarbeitet werden
trennt sind, ist eine Kommunikation zwischen ihnen nur
                                                                   und brauchen nicht in den verteilten Kernel weitergeleitet
eingeschränkt möglich. Dafür wird das Mikrokernelinterface
                                                                   werden. Auch Dummy-Klassen sind im verteilten Kernel
verwendet, das es erlaubt, vom verteilten Kernel aus Funk-
                                                                   nicht nötig. Die von der Abbruchproblematik betroffe-
tionen des lokalen Kernels aufzurufen. Zusätzlich kann der
                                                                   nen Schnittstellen werden wie im lokalen Ansatz mit einem
lokale Speicher verwendet werden um Daten auszutauschen.
                                                                   DMA-SmartBuffer versehen.
Im Gegensatz zum lokalen Kernel, der nur seinen eigenen
lokalen Speicher sieht, kann der verteilte Kernel auf beide
Speicherbereiche zugreifen. So ist es für ihn möglich Daten      3.4    Verteilter Ansatz
an eine fest definierte lokale Speicheradresse zu schreiben        Beim verteilten Ansatz wird der lokale Kernel so klein
und einen Softwareinterrupt auszulösen. Der daraufhin             wie möglich gehalten und alle wesentlichen Teile des USB-
ausgeführte lokalen Kernel interpretiert die Daten, führt        Systems im verteilten Kernel implementiert. Ein Abbruch
entsprechende Funktionen aus und schreibt eventuelle Rück-        ist deshalb nahezu im kompletten USB-System möglich.
gabewerte ebenfalls an eine definierte Speicherstelle [8]. Mit-    Besonders die Datenstrukturen des EHC-Treibers, die sich
tlerweile existiert auch ein Interface in Gegenrichtung, um        im lokalen Speicher befinden, müssen dagegen abgesichert
vom lokalen Kernel aus mit dem verteilten Kernel zu kom-           werden.
munizieren.
                                                                   Durch die Verlagerung des EHC-Treibers in den verteilten
4
    ACID: atomicity, consistency, isolation und durability         Kernel entsteht außerdem ein Problem mit den Interrupts.
Sie müssen nun weitergeleitet und im verteilten Kernel be-
handelt werden. Im lokalen Kernel findet dafür eine Zwis-
chenpufferung des Statusregisters beim Auftreten des Inter-
rupts statt. Die Übergabe an den verteilten Kernel erfolgt
dann mittels des SmartBuffer-Prinzips.

Ein Vorteil dieses Ansatzes ist, dass der EHC-Treiber mit
dem USBD im gleichen Kernel integriert ist. Dadurch
gestaltet sich die Implementierung der dazwischenliegenden
Schnittstelle problemlos. Außerdem entspricht ein kleiner
lokaler Kernel dem bisherigen Design von Rainbow.

3.5 Schlussfolgerungen
Da besonders auf das Hinzufügen von USB-Treibern zur
Laufzeit Wert gelegt wird, scheidet der lokale Ansatz aus.
Weil die dynamische Generierung von Objekten nur im
verteilten Kernel möglich ist, dürfen sich die USB-Treiber
für eine solche Funktionalität nicht im lokalen Kernel
befinden.

Um den lokalen Kernel möglichst klein zu halten, wurde aus
der verbleibenden Auswahl der verteilte Ansatz vorgezogen.

4. REFERENCES
[1] Universal Serial Bus Specification. Compaq, Digital
    Equipment Corporation, IBM PC Company, Intel,
    Microsoft, NEC, Northern Telecom, rev 1.0, Januar
    1996.
[2] Universal Serial Bus Specification. Compaq,
    Hewlett-Packard, Intel, Lucent, Microsoft, NEC,
    Philips, rev 2.0, April 2000.
[3] Universal Serial Bus 3.0 Specification. Hewlett-Packard
    Company, Intel Corporation, Microsoft Corporation,
    NEC Corporation, ST-NXP Wireless, Texas
    Intruments, rev 1.0, November 2008.
[4] http://en.wikipedia.org/wiki/universal serial bus.
    Wikipedia, Juni 2010.
[5] D. Anderson. Introduction to USB 3.0. MindShare,
    Inc., August 2009.
[6] B. Benz. Pfeilschnell. c’t, 22 2008.
[7] N. Kaemmer, S. Gerhold, T. Baeuerle, and
    P. Schulthess. Transactional distributed memory
    management for cluster operating systems. In
    Electronics and Microelectronics (MIPRO).
    International Convention on Information and
    Communication Technology, 2009.
[8] M. Rupp. Entwicklung eines transaktionalen Treibers
    für einen USB Hostcontroller. Diplomarbeit,
    Universität Ulm, Februar 2009.
[9] USB Implementers Forum. Introduction to USB
    On-The-Go.
Sie können auch lesen