Prise en charge robuste du protocole USB 3.0

Conception de Windows 8

Vision en coulisses de l'équipe d'ingénierie Windows

Prise en charge robuste du protocole USB 3.0

Rate This
  • Comments 3

La prise en charge de nouveau matériel est l'un des rôles importants que joue Windows dans le cadre d'un vaste écosystème. Ce processus demande beaucoup d'implication et dans ce billet, nous voulions nous pencher sur la prise en charge du protocole USB 3.0, car nous savons qu'un grand nombre de personnes s'y intéressent en raison des améliorations qu'il apporte. Il s'agit également de notre premier billet sous forme vidéo. Notre but a été de créer des vidéos « d'ingénierie », et non des vidéos de grande qualité, mais je crois que le message passe (notez que les vidéos sont incorporées au format HTML5 et téléchargeables). Si vous êtes comme moi lorsque vous regardez une vidéo, vous pouvez vous dire que ces indicateurs de progression de copie ont l'air un peu dépassé…mais attendez de voir. Ce billet a été rédigé par Dennis Flanagan, le directeur de la gestion des programmes pour le groupe Appareils et mise en réseau. –Steven

Avec un débit 10 fois plus élevé que le protocole USB 2.0 et une gestion de l'alimentation améliorée qui augmente la durée de vie des batteries, le protocole USB 3.0 présente des arguments convaincants pour améliorer l'interface PC la plus utilisée du monde.En 2015, tous les nouveaux PC seront équipés de ports USB 3.0 et plus de 2 milliards de nouveaux périphériques USB « SuperSpeed » seront vendus uniquement au cours de cette année-là.

Figure 1 : prévision du marché concernant les PC USB 3
Statistiques, juin 2011

Figure 2 : prévision du marché concernant les périphériques USB, juin 2011
Statistiques, juin 2011

La décision d'investir dans le protocole USB 3.0 a été facile à prendre, mais le faire sans compromettre l'écosystème USB existant a représenté un défi important à relever. Nous devions respecter la version révisée de la spécification 3.0 précisément dans le but de faire émerger le matériel USB 3.0. Il existe par ailleurs des milliards d'appareils et périphériques USB antérieurs avec lesquels Windows doit rester compatible. Comment écrire un logiciel qui accueille la technologie la plus récente sur un matériel en constante évolution tout en s'assurant qu'il fonctionne toujours avec 10 milliards d'appareils existants dans tous les foyers et les entreprises du monde ?

Tout d'abord, un peu d'histoire

En 1996, l'organisation des normes USB a publié la première spécification USB, qui définissait deux débits pour les périphériques USB : le bas débit (1,5 Mbits/s) et le débit normal (12 Mbits/s). À cette époque, l'idée de « connexion à chaud » pour un périphérique (connecter et déconnecter sans avoir besoin de redémarrer), était révolutionnaire. Le bus USB était par ailleurs capable de transférer des données de différentes façons : en bloc pour les périphériques, tels que les imprimantes qui envoient un grand nombre de données, puis les oublient ; en mode isochrone pour les périphériques, tels que les haut-parleurs qui reçoivent continuellement des données dans un ordre précis ; et en mode interruption pour les périphériques, tels que les claviers, qui n'envoient des données que de temps en temps.

La spécification de 1996 a également permis d'intégrer la complexité du périphérique USB dans le PC, ce qui a rendu les périphériques moins chers et plus simples à implémenter. Ces caractéristiques ont fait du bus USB le connecteur de périphérique externe le plus attrayant. Les fabricants de périphériques ont donc adopté le bus USB et rejoint l'organisme de normalisation pour définir les interfaces communes entre le logiciel et le matériel pour différentes classes de périphériques. Ces interfaces communes permettent à un pilote logiciel unique, un pilote de classe, de prendre en charge un type entier de périphérique. Depuis le début, Microsoft a adopté la technologie USB et rejoint l'organisation de normalisation, contribuant ainsi à de nombreuses spécifications au cours des années. Nous avons introduit le protocole USB 1.1 dans Windows 95 OSR 2.

En 2000, la spécification USB 2.0 a vu le jour avec un nouveau haut débit (480 Mbits/s). Malheureusement, le contrôleur d'hôte, le matériel utilisé pour connecter un PC aux périphériques, n'était pas compatible avec les versions antérieures. Les périphériques haut débit fonctionnaient avec tous les contrôleurs, mais les périphériques bas débit et à débit normal ne fonctionnaient pas avec les contrôleurs USB 2.0. Les PC devaient être conçus avec deux contrôleurs différents ou intégrer un concentrateur USB 2.0, afin de prendre en charge tous les types de périphériques. Dans Windows XP SP1, nous avons amélioré la pile de pilotes logiciel existante par l'ajout de la fonctionnalité USB 2.0.

La voie menant au bus USB 3 repose sur une spécification solide

En participant activement à l'organisme de normalisation USB, nous avons contribué à créer une spécification qui est à la fois convaincante et interopérable. Tout comme d'autres membres de l'USB Implementer’s Forum, nous souhaitions mettre en place une version plus rapide et plus économe en énergie du bus USB dans laquelle, contrairement au bus USB 2.0, une seule combinaison de matériel et logiciel fonctionnerait avec tous les périphériques USB.

En 2008, l'organisation de normalisation USB a publié la nouvelle spécification USB 3.0, qui incluait un nouveau contrôleur d'hôte et définissait le nouveau périphérique USB « SuperSpeed » (5 Gbits/s). Ensemble, le contrôleur et le périphérique peuvent fonctionner à des vitesses théoriques jusqu'à 10 fois supérieures au bus USB 2.0. Avec cette nouvelle norme, vous pouvez copier un film en haute définition à partir d'un lecteur de stockage USB en 80 secondes environ au lieu des 15 minutes nécessaires avec un bus USB 2.0. La spécification a également donné lieu à un nouveau type de transfert (flux), qui permet aux lecteurs de stockage de traiter les lectures et les écritures plus efficacement.

La nouvelle spécification fournissait une puissance 80 % supérieure à celle du bus USB 2.0. Cela représentait un chargement plus rapide et rendait inutile les câbles en Y utilisés par les lecteurs de DVD ou autres périphériques haute puissance. Mais le chargement n'est pas le seul aspect à prendre en compte en matière de puissance et d'alimentation. Avec l'informatique mobile, les gens souhaitent conserver l'autonomie des batteries de leur PC. En introduisant en plus de nouveaux états d'alimentation basse, en terminant les tâches plus rapidement et en réduisant la consommation d'énergie chaque fois que cela est possible, le bus USB 3.0 est plus efficace en termes d'économie d'énergie que ses prédécesseurs. Ceci se traduit en une durée de vie plus élevée de la batterie des portables et en une consommation d'énergie plus faible des ordinateurs de bureau.

Encore plus important, la spécification promet de faire naître une nouvelle génération de bus USB tout en préservant la compatibilité avec les périphériques à débit normal, bas débit et haut débit. Même les fiches sont rétrocompatibles.

Partenariat étroit avec l'industrie du matériel informatique

Au moment où la consolidation commençait à prendre forme, nous avons entamé la conception de Windows et avons fait face à notre première décision difficile. Est-ce nous mettons à jour notre logiciel USB existant, que nous avons régulièrement modifié depuis Windows 95 OSR2, ou est-ce que nous écrivons un nouveau logiciel conforme aux principes de conception modernes ? Comme d'innombrables périphériques et leurs pilotes reposent sur le comportement de notre logiciel existant, nous ne pouvions pas simplement nous précipiter dans l'adoption d'une toute nouvelle conception. La solution ? Ne pas nous précipiter. À la place, concevoir méticuleusement une nouvelle pile USB pour le nouveau contrôleur tout en conservant les interfaces et comportements existants, en nous assurant ainsi que chaque périphérique et pilote fonctionnera. Pour les contrôleurs plus anciens, nous avons conservé notre pile existante.

Pour créer une toute nouvelle pile USB, nous avons dû commencer tôt. Si nous avions attendu que le matériel soit disponible, il aurait été trop tard pour prendre en charge l'écosystème USB 3.0 naissant. Nous avons décidé de commencer avant que des périphériques USB 3.0 ne soient disponibles, en créant des périphériques « virtuels ». Les périphériques virtuels sont des représentations logicielles de matériel USB physique réel : les ports, les concentrateurs et d'autres périphériques.

Au cours du développement des périphériques virtuels, nous avons commencé à concevoir et à créer des prototypes. Le logiciel USB est complexe, car il doit gérer les concentrateurs et périphériques tout en se chargeant des erreurs. Pour créer quelque chose doté d'une certaine longévité, nous devions visualiser et documenter le flux. Nous avons conçu trois diagrammes de flux importants et un générateur de code pour convertir automatiquement un diagramme Visio en logiciel. En collaboration avec l'équipe Microsoft Research, nous avons élaboré un outil appelé Zing, capable de valider chaque aspect de ce modèle logiciel.

 
Diagramme de flux avec ses architectes, Randy Aull et Vivek Gupta

Une fois le développement initial terminé, les premiers contrôleurs hôte USB sont arrivés. Nous avons reconnu que la simulation donnait un point de départ appréciable, mais ce n'était pas suffisant. Le matériel nous a permis de mettre en lumière certaines suppositions incorrectes, des problèmes de délai et d'autres problèmes inhérents aux scénarios du monde réel. Dans ce qui nous restait à faire, nous devions également favoriser un nouvel écosystème qui nécessite une solide collaboration avec nos partenaires de matériel informatique. Nous devions travailler ensemble pour créer des prototypes, échanger des idées, avoir des discussions techniques approfondies et signaler des bogues dans les deux sens. Nous devions nous engager mutuellement à collaborer étroitement afin d'identifier les problèmes avant que les conceptions ne soient finalisées.

Au fur et à mesure du développement du protocole USB 3.0, le sentiment d'appartenance à une communauté se renforçait. Le succès d'un logiciel est lié à celui du matériel qu'il prend en charge. En collaboration avec nos partenaires de l'industrie du matériel informatique, nous avons identifié des problèmes, trouvé des solutions et ouvert la voie à un nouvel écosystème USB.

Je teste, donc je suis

Tout en restant concentrés sur la prise en charge des puces USB 3.0 à l'intérieur du PC, nous ne pouvions pas ignorer le monde des périphériques. Nous devions aller au-delà dans notre cheminement de pensée. Il existe plus de 10 milliards de périphériques et appareils USB dans le monde. Certains sont utilisés quotidiennement et d'autres prennent la poussière dans un coin, mais tous ont été pensés à l'origine pour fonctionner avec des PC Windows. La compatibilité est la promesse de Windows. Nos clients se sont habitués à ce que les nouvelles versions de Windows fonctionnent avec leurs périphériques et pilotes existants. Cet engagement quant à la compatibilité demeure en haut de la liste des priorités pour Windows 8 dans l'intégralité du produit.

Pour tester la compatibilité USB, la méthode « forcée » ne fonctionne pas, car les périphériques sont trop nombreux : de nouveaux apparaissent chaque jour et de nombreux périphériques anciens ne sont plus disponibles sur le marché. Nous devions mettre en place une stratégie de test intelligente des périphériques. Après avoir analysé les statistiques des périphériques, nous les avons classés en trois catégories principales :

  1. Popularité des périphériques 
    En nous penchant sur les sources télémétriques des périphériques les plus répandus, nous avons dégagé une tendance. Chaque classe de périphérique (clavier, webcam, imprimante, stockage, etc.) présente une poignée de fabricants prédominants, avec seulement un nombre réduit de gammes de produits. En projetant ces découvertes, nous avons pu représenter 70 à 80 % des périphériques avec quelques centaines de périphériques. Les testeurs utilisent le terme de « classe d'équivalence » pour décrire ce travail.
  2. Puce
    En nous en tenant aux données de popularité, il nous restait un pourcentage important de périphériques non testés. Nous nous sommes donc penchés sur la conception du circuit. Tout comme les humains, les périphériques qui semblent très différents en apparence se ressemblent beaucoup de l'intérieur. Si nous pouvions garantir le fonctionnement de toutes les puces USB, il est hautement probable que les périphériques qui les contiennent fonctionnent également. Comme un nombre relativement retreint de fabricants de puces sont impliqués dans les périphériques, nous avons choisi de représenter leur IP USB avec des conseils de développement.
  3. Périphériques connus et représentant un défi
    Ce n'est pas souvent qu'un périphérique USB est l'objet d'un appel passé au support produit. Lorsque cela arrive, nous voulons être certain que Windows fonctionnera avec dans le futur.

Après 10 ans d'expérience USB, une douzaine de sources télémétriques et des tonnes de recherche et de séances de réflexion, nous avons pu réduire les efforts de compatibilité USB à environ 1 000 périphériques uniques que nous testons régulièrement dans les laboratoires Windows. Nous nous assurons que les périphériques sont reconnus correctement lorsqu'ils sont connectés aux PC, qu'ils utilisent le mode veille de façon appropriée pour économiser l'énergie et qu'ils sont capables de supporter différents types de contraintes. Nos données télémétriques indiquent que plus de 90 % des périphériques reposent sur les 16 pilotes de classe de Windows, mais pour les périphériques les plus personnalisés, nous vérifions que leur pilote se téléchargent sans problème depuis Windows Update lorsque cela est possible (le fabricant du périphérique doit coopérer dans ce cas). Grâce à la rétrocompatibilité complète assurée par le protocole USB 3.0, les pilotes antérieurs fonctionnent toujours comme avant.

Nous avons également lourdement investi dans la conception d'un outil personnalisé, l'outil de test USB de (MUTT, Microsoft USB Test Tool), afin de simuler les différents comportements que nous avons observés au cours des années chez les périphériques. Nous avons entièrement créé l'outil MUTT, en interne. Nos testeurs de logiciels ont élaboré la conception des circuits à l'aide d'outils de création sophistiqués (MS Paint … sérieusement). Ils ont ensuite développé le microprogramme et généré un nouveau test à exécuter en interne. L'outil MUTT est alors né : imaginez-vous 1 000 périphériques dans une clé USB. Avec le temps, nous avons partagé l'outil MUTT avec nos partenaires de matériel informatique et ils l'ont utilisé pour identifier et rectifier les problèmes sur leurs périphériques avant de les commercialiser.

Figure 4 : concepteur de l'outil MUTT, David Hargrove, avec périphérique MUTT
Concepteur de l'outil MUTT, David Hargrove, avec périphérique MUTT

Vidéo de démonstration

L'aspect le plus important du protocole USB 3.0 réside peut-être dans l'attente qu'il suscite auprès des clients : il s'agit simplement d'un bus USB3, donc cela devrait marcher, non ? Chaque périphérique USB, qu'il soit à bas débit, débit normal, haut débit et SuperSpeed, doit fonctionner dans Windows 8. C'est notre objectif, tout en offrant également la pile USB la plus robuste et la plus fiable.

Regardons maintenant le protocole USB 3.0 en action pendant l'exécution de tâches de copie importantes et dans sa course contre USB 2.0.


Si vous ne voyez pas la vidéo ou si vous ne parvenez pas à la lire, téléchargez-la ici : MP4 haute qualité | MP4 faible qualité

--Dennis

  • Loading...
Leave a Comment
  • Please add 6 and 5 and type the answer here:
  • Post