Das Erstellen einer zuverlässigen USB 3.0-Unterstützung

Eine der wichtigen Rollen, die Windows als Teil eines ausgedehnten Ökosystems spielt, liegt in der Entwicklung der Unterstützung für neue Hardware. Dies ist ein ziemlich komplizierter Prozess, und in diesem Beitrag möchten wir auf die Unterstützung für USB 3.0 eingehen, da es sich dabei um etwas handelt, das jeder wegen der damit verbundenen Verbesserungen schnellstmöglich nutzen möchte. Dies ist außerdem unser erster Videobeitrag. Die Videos sind eher "technisch orientiert" und weniger aufwendig produziert, aber ich denke, die Aussage wird deutlich. (Die Videos sind in HTML5 eingebettet und können heruntergeladen werden.) Wenn es Ihnen beim Betrachten des Videos wie mir geht, fällt Ihnen vielleicht auf, dass die Anzeigen für den Dateikopiervorgang ein wenig veraltet aussehen...warten Sie es ab. Dieser Beitrag wurde von Dennis Flanagan verfasst, dem Leiter der Programmverwaltung für die Geräte- und Netzwerkgruppe. – Steven

Mit einem bis zu zehnmal schnelleren Durchsatz als USB 2.0 und einer verbesserten Energieverwaltung, die für eine längere Akkulebensdauer sorgt, bietet USB 3.0 überzeugende Gründe für eine Aktualisierung der meistgenutzten PC-Schnittstelle der Welt.Es wird erwartet, dass bis 2015 alle neuen PCs USB 3.0-Anschlüsse bieten und dass allein im selben Jahr über zwei Milliarden neue "SuperSpeed"-USB-Geräte verkauft werden.

Abbildung 1 – Marktprognose für PCs mit USB 3
In-Stat, Juni 2011

Abbildung 2 – Marktprognose für USB-Geräte, Juni 2011
In-Stat, Juni 2011

Die Entscheidung, in USB 3.0 zu investieren, war einfach, brachte jedoch die große Herausforderung mit sich, das vorhandene USB-Ökosystem dabei nicht zu beeinträchtigen. Unser Entwurf musste der überarbeiteten 3.0-Spezifikation genau folgen, um neu erscheinende USB 3.0-Hardware zu unterstützen. Es gibt außerdem jedoch Milliarden älterer USB-Geräte, mit denen Windows weiterhin kompatibel sein muss. Wie schreibt man eine einzige Software, mit der die neueste Hardwaretechnologie unterstützt wird, und stellt gleichzeitig sicher, dass 10 Milliarden vorhandene Geräte in Haushalten und Büros rund um den Globus immer noch funktionieren?

Zuerst ein wenig Geschichte

1996 veröffentlichte die USB-Organisation die erste USB-Spezifikation, in der zwei Geschwindigkeiten für USB-Geräte definiert wurden: Low Speed (1,5 Mbit/s) und Full Speed (12 Mbit/s). Zu dieser Zeit war die Idee des "Hotplugging" von Geräten (verbinden und trennen ohne Neustart) revolutionär. Von USB wurden außerdem verschiedene Arten der Datenübertragung unterstützt: Bulk für Geräte wie Drucker, die nur stapelweise große Datenmengen senden, Isochron für Geräte wie Lautsprecher, die kontinuierlich Daten in einer bestimmten Reihenfolge empfangen, sowie Interrupt für Geräte wie Tastaturen, die nur gelegentlich Daten senden.

Bei der Spezifikation von 1996 wurde die Komplexität außerdem vom USB-Gerät in den PC verlagert, sodass die Geräte billiger wurden und leichter implementiert werden konnten. Durch diese Features wurde USB zum attraktivsten Anschluss für externe Geräte. Als Folge übernahmen Gerätehersteller USB und schlossen sich dem Standard an, um allgemeine Schnittstellen zwischen Software und Hardware für verschiedene Klassen von Geräten zu definieren. Diese allgemeinen Schnittstellen ermöglichen einen einzigen Softwaretreiber – einen Klassentreiber – zur Unterstützung eines ganzen Gerätetyps. Von Beginn an unterstützte Microsoft die USB-Technologie sowie die zugehörige Organisation und trug über die Jahre zu vielen Spezifikationen bei. Die Unterstützung für USB 1.1 wurde in Windows 95 OSR 2 eingeführt.

Im Jahr 2000 wurde USB 2.0 mit einer höheren Geschwindigkeit (480 Mbit/s) eingeführt. Leider war der Hostcontroller, die Hardware zum Verbinden eines PCs mit Geräten, mit früheren Versionen nicht kompatibel. Hochgeschwindigkeitsgeräte funktionieren mit allen Controllern, dagegen funktionierten Low- und Full-Speed-Geräte nicht mit USB 2.0-Controllern. PCs mussten mit zwei unterschiedlichen Controllern ausgeliefert werden, oder es musste ein USB 2.0-Hub eingebettet werden, um alle Gerätetypen zu unterstützen. In Windows XP SP1 wurden die vorhandenen Softwaretreiber durch das Hinzufügen der USB 2.0-Funktionalität erweitert.

Der Weg zu USB 3: Am Anfang steht eine verlässliche Spezifikation

Durch die aktive Beteiligung an der USB-Organisation halfen wir bei der Schaffung einer Spezifikation, die überzeugend und interoperabel ist. Wie andere Mitglieder des USB Implementer-Forums wollten wir eine schnellere und energieeffizientere Version von USB, bei der, anders als bei USB 2.0, eine einzige Kombination aus Hardware und Software mit allen USB-Geräten funktioniert.

2008 veröffentlichte die USB-Organisation die neue USB 3.0-Spezifikation, die einen neuen Hostcontroller enthält und das neue "SuperSpeed"-USB-Gerät (5 Gbit/s) definiert. Zusammen können der Controller und das Gerät theoretisch mit bis zu zehnmal höheren Geschwindigkeiten als USB 2.0 betrieben werden. Mit diesem neuen Standard sollten Sie in der Lage sein, einen HD-Film von einem USB-Datenträger in ca. 80 Sekunden zu kopieren, anstelle der 15 Minuten, die USB 2.0 benötigt. Mit der Spezifikation wurde auch ein neuer Übertragungstyp – Streams – eingeführt, durch den Schreib- und Lesevorgänge von den Datenträgern effizienter verarbeitet werden können.

Die neue Spezifikation stellt 80 % mehr Energie bereit als USB 2.0. Dies führt zu beschleunigten Ladevorgängen und macht die eigenartigen "Y"-Kabel überflüssig, die für externe DVD-Laufwerke und andere Hochleistungsgeräte verwendet wurden. Ladevorgänge sind jedoch nicht die einzige Überlegung bezüglich der Energie. Benutzer wünschen sich mobile Computer mit längerer Akkulebensdauer. Aber selbst mit den neuen Niedrigleistungszuständen, durch die Aufgaben schneller erledigt werden und bei jeder Gelegenheit der Ruhezustand aufgerufen wird, ist USB 3.0 energieeffizienter als seine Vorgänger. Dies bedeutet eine längere Akkulebensdauer bei Notebooks und weniger Energieverbrauch bei Desktops.

Der wichtigste Punkt ist jedoch, dass die Spezifikation verspricht, eine neue UBS-Generation zu ermöglichen, während die Kompatibilität mit Full-, Low- und High Speed-Geräten erhalten bleibt. Selbst die Stecker sind abwärtskompatibel.

Enge Partnerschaft mit der Hardwarebranche

Gleichzeitig mit der Konkretisierung der Spezifikation begannen wir mit dem Entwurf von Windows und trafen auf die erste schwierige Entscheidung: Aktualisieren wir unsere bestehende USB-Software, die wir seit Windows 95 OSR 2 stufenweise verändert haben, oder schreiben wir eine neue Software unter Beachtung moderner Entwurfsprinzipien? Unzählige Geräte und die zugehörigen Treiber basieren auf dem Verhalten unserer vorhandenen Software. Daher konnten wir nicht einfach zu einem völlig neuen Entwurf wechseln. Die Lösung? Nicht einfach drauflosarbeiten. Stattdessen sorgfältig einen neuen USB-Softwarestapel für den neuen Controller entwerfen, während vorhandene Schnittstellen und Verhaltensweisen beibehalten werden, um sicherzustellen, dass alle Geräte und Treiber funktionieren. Für ältere Controller haben wir unseren vorhandenen Softwarestapel beibehalten.

Mit der Erstellung eines völlig neuen USB-Softwarestapels mussten wir früh beginnen. Wenn wir warten würden, bis Hardware zur Verfügung steht, wären wir zu spät dran, um das entstehende USB 3.0-Ökosystem zu unterstützen. Wir entschieden uns, vor der Verfügbarkeit von USB 3.0-Geräten mithilfe von "virtuellen" Geräten zu beginnen. Virtuelle Geräte sind Softwareabbilder von realer, physischer USB-Hardware: Anschlüsse, Hubs und andere Geräte.

Während die Entwicklung der virtuellen Geräte im Gang war, begannen wir mit dem Entwurf und der Prototyperstellung. USB-Software ist komplex, da Hubs und Geräte bei gleichzeitiger Fehlerbehandlung verwaltet werden müssen. Um etwas Langlebiges zu schaffen, mussten wir den Ablauf visualisieren und dokumentieren. Wir entwarfen drei umfangreiche Flussdiagramme und einen Code-Generator, um ein Visio-Diagramm automatisch in Software zu konvertieren. Zusammen mit Microsoft Research arbeiteten wir an der Weiterentwicklung eines Tools mit dem Namen Zing, mit dem jeder Aspekt dieses Softwaremodells überprüft werden konnte.

 
Flussdiagramm mit seinen Architekten Randy Aull und Vivek Gupta

Nachdem wir die anfängliche Entwicklung abgeschlossen hatten, trafen die ersten USB-Hostcontroller ein. Wir erkannten, dass Simulation zwar ein guter Ausgangspunkt war, aber nicht ausreichte. Mit Hardware ermittelten wir falsche Annahmen, Zeitablaufprobleme sowie andere Probleme, die nur in realen Szenarien vorkommen. Für den Weg nach vorne mussten wir außerdem ein neues Ökosystem aufbauen, wofür eine enge Zusammenarbeit mit unseren Hardwarepartnern erforderlich war. Wir mussten zusammenarbeiten, um Prototypen zu erstellen, Ideen auszutauschen, tiefergehende technische Diskussionen zu führen und Bugs in beide Richtungen melden zu können. Wir mussten ein gemeinsames Engagement für einen engen Austausch erreichen, damit wir Probleme vor der Fertigstellung der Entwürfe erkennen konnten.

Mit dem Fortschritt der USB 3.0-Entwicklung stieg auch das Gemeinschaftsgefühl. Software ist nur so leistungsstark wie die zugrunde liegende Hardware. Zusammen mit unseren Partnern in der Hardwarebranche konnten wir Probleme erkennen, Lösungen entwickeln und die Grundlage für ein neues USB-Ökosystem schaffen.

Ich teste, also bin ich

Während wir uns darauf konzentrierten, die Unterstützung für USB 3.0-Chips innerhalb des PCs zu erstellen, konnten wir die Gerätewelt nicht einfach ignorieren. Wir mussten buchstäblich um die Ecke denken. Es gibt über 10 Milliarden USB-Geräte weltweit. Einige werden täglich verwendet, andere fangen Staub im Regal, aber all diese Geräte wurden ursprünglich entworfen, um mit Windows-PCs zu funktionieren. Kompatibilität ist das Windows-Versprechen. Unsere Kunden waren immer gewohnt, dass neue Versionen von Windows mit ihren vorhandenen Geräten und Treibern funktionieren. Diese Verpflichtung gegenüber Kompatibilität wird bei Windows 8 über das gesamte Produkt hinweg eine hohe Priorität eingeräumt.

Für USB-Kompatibilitätstests funktioniert die "Hau-drauf-Methode" nicht, da es so viele Geräte gibt, darunter neue, die täglich hinzukommen, und viele alte Geräte, die nicht mehr erhältlich sind. Wir mussten eine intelligente Geräteteststrategie entwickeln. Nach dem Analysieren der Gerätestatistiken unterteilten wir die Geräte in drei Hauptkategorien:

  1. Gerätepopularität 
    Als wir uns die Telemetriequellen für die populärsten Geräte ansahen, erkannten wir ein Muster. Jede Geräteklasse (Tastatur, Webcam, Drucker, Speicher usw.) besaß eine Handvoll vorherrschender Hersteller mit nur wenigen Hauptproduktreihen. Nach dem Hochrechnen dieser Ergebnisse konnten wir 70-80 % der Geräte mit ein paar Hundert Geräten repräsentieren. Tester verwenden den mathematischen Begriff "Äquivalenzklassifizierung", um diese Arbeit zu beschreiben.
  2. Chipsatz
    Es gab noch einen bedeutenden Prozentsatz an Geräten, die nicht getestet würden, wenn wir uns nur auf die Popularitätsdaten beschränkt hätten. Daher betrachteten wir den eigentlichen Schaltungsentwurf näher. Wie auch Menschen erscheinen Geräte äußerlich ziemlich unterschiedlich, sind innerlich jedoch ziemlich ähnlich. Wenn wir sicherstellen können, dass alle USB-Chipsätze funktionieren, ist die Wahrscheinlichkeit hoch, dass auch die Geräte funktionieren, in denen sie enthalten sind. Die Chipsätze in Geräten stammen von einer relativ kleinen Anzahl an Herstellern. Daher entschieden wir uns dafür, deren USB-IP mit Entwicklungsplatinen zu repräsentieren.
  3. Weit verbreitete und anspruchsvolle Geräte
    Es kommt nicht oft vor, dass ein USB-Gerät für die meisten Anrufe bei den Supporttelefonen sorgt. Aber wenn es so ist, möchten wir sicherstellen, dass Windows damit zukünftig funktioniert.

Nach 10 Jahren Erfahrung mit USB, einem Dutzend Telemetriequellen sowie umfassender Forschung und ausgiebigem Brainstorming konnten wir den USB-Kompatibilitätsaufwand auf ca. 1000 spezifische Geräte reduzieren, die wir in den Windows-Laboren regulär testen. Wir stellen sicher, dass die Geräte beim Anschließen an PCs richtig erkannt werden, dass sie ordnungsgemäß in den Ruhezustand wechseln und diesen wieder verlassen, um Energie zu sparen, und dass sie verschiedene Stressbedingungen aushalten. Unsere Telemetriedaten deuten darauf hin, dass sich über 90 % der Geräte auf 16 Klassentreibern in Windows stützen, aber bei spezielleren Geräten stellen wir fest, dass die zugehörigen Treiber nahtlos von Windows Update heruntergeladen werden, soweit möglich. (Hierfür ist die Kooperation des Geräteherstellers erforderlich.) Da USB 3.0 vollständige Abwärtskompatibilität bietet, funktionieren ältere Treiber ohne Änderungen.

Wir haben außerdem in die Erstellung eines benutzerdefinierten Tools investiert – mit dem Microsoft USB Test Tool (MUTT) kann das vollständige Spektrum an Geräteverhaltensweisen simuliert werden, die wir über die Jahre beobachtet haben. Die MUTTs wurden von Grund auf betriebsintern von uns erstellt. Unsere Softwaretestingenieure erstellten den Schaltungsentwurf mithilfe ausgefallener Entwurfstools (MS Paint … ernsthaft). Anschließend entwickelten sie die Firmware und erstellten neue Testinhalte zum internen Ausführen. Das MUTT war geboren – Sie können es sich wie 1.000 Geräte auf einem USB-Stick vorstellen. Nach und nach stellten wir unseren Hardwarepartnern das MUTT zur Verfügung, die damit Probleme in ihren Geräten finden und beheben konnten, bevor die Geräte auf den Markt kommen.

Abbildung 4 - MUTT-Designer David Hargrove mit MUTT-Gerät
MUTT-Designer David Hargrove mit MUTT-Gerät

Demovideo

Der vielleicht wichtigste Aspekt von USB 3.0 ist die Erwartung, die Kunden an USB haben: Das ist einfach nur die dritte Version von USB, also sollte es funktionieren, oder? Jedes USB-Gerät, ob Low-, Full-, High- oder SuperSpeed, muss mit Windows 8 funktionieren. Darauf konzentrieren wir uns, während wir außerdem den stabilsten und zuverlässigsten USB-Stapel bereitstellen.

Sehen wir uns USB 3.0 in Aktion an, wenn damit ein paar beträchtliche Kopieraufgaben erledigt werden und es gegen USB 2.0 antritt.

Dieses HTML5-Video wird in Ihrem Browser nicht unterstützt.

Wenn hier kein Video angezeigt wird oder das Video nicht wiedergegeben werden kann, laden Sie es hier herunter: MP4 in hoher Qualität | MP4 in niedriger Qualität

--Dennis