USB 3.0 : xHCI, BOT, UASP, Windows 7 et 8... pas si simple !

Tag : USB 3;
Publié le 21/03/2013 par
Imprimer
Nous en parlons assez régulièrement dans nos tests de cartes mères, les constructeurs proposent diverses solutions pour augmenter les débits de l'USB 3.0, des solutions que l'on résume souvent sous le nom de Turbo.

Avant de voir ce qu'elles font en pratique, un petit rappel. Nous parlons ici de solutions logicielles. Certaines cartes mères proposent en effet dans leur bios une option Turbo.


Celles-ci sont différentes. Dans ce cas (une carte mère Gigabyte), elle consiste à connecter le contrôleur USB 3.0 tiers différemment, il passe alors des lignes PCI Express exposées par le chipset directement vers les lignes gérées par le processeur. Cela permet de lever éventuellement certaines limites, mais cela n'a rien à voir avec ce dont nous vous parlons ci-dessous.

Les solutions logicielles

Nous évoquions précédemment l'application USB Boost d'Asus. Si elle propose un pilote UASP, elle propose également un autre mode de fonctionnement baptisé Turbo, et que l'on avait vu arriver un peu avant chez Asrock via une application baptisée Xfast USB (et encore un peu plus avant chez SuperTalent).


L'idée de base de cet outil est de remplacer à la volée le Class Driver BOT Microsoft par un autre pilote. On ne parlera pas vraiment d'UASP même si, sur le principe de fonctionnement, l'idée n'est pas sans rappeler ce que propose de faire Microsoft pour implémenter l'UASP. En pratique il s'agit d'un pilote optimisé, qui fonctionne dans le cas d'Asrock à la fois sur les périphériques USB 2.0 mais aussi sur les périphériques USB 3.0 (l'application USB Boost ne fonctionne qu'en USB 3.0).

Le fonctionnement de ces applications est littéralement transparent pour les contrôleurs ce qui laisse penser que les fonctionnalités avancées (Stream pipes et autres) ne sont probablement pas utilisées.


A gauche, un port USB 2.0 sans Xfast USB, à droite avec

Dans le cas de Xfast USB, on peut voir sur nos screenshots que l'outil d'Asrock ajoute un ClassDriver baptisé FNETBOH_305.SYS, et qui semble développé par cette société tierce taïwanaise .

Chez Asus, le mode Turbo est un peu plus compliqué puisqu'il remplace plusieurs pilotes Microsoft par des pilotes qui viennent, encore sans surprise, de chez MCCI :


Les pilotes insérés par Asus remplaçent la stack Microsoft

Dans les deux cas, ces pilotes fonctionnent de manière universelle sur tous les contrôleurs, indépendamment de la marque. Ainsi, si l'on prend l'exemple de la carte mère P8Z77-V Pro d'Asus qui dispose à la fois de ports Intel et Asmedia, on pourra activer le mode Turbo sur les deux types de ports. La limite de ces applications tient dans le fait qu'elles ne fonctionnent que sur les cartes mères de leur marque respective.

Notons une limitation de l'outil d'Asus, il n'est pas possible de choisir entre Turbo et UASP. L'application permet simplement de choisir entre le mode normal (BOT) ou un des deux autres modes disponibles, Turbo ou UASP. Si l'UASP est "possible", on ne pourra pas activer le mode Turbo. Notez enfin que le pilote UASP fourni par Asus ne fonctionne qu'avec le contrôleur Asmedia.
Des transferts limités à 64k ?

Comme nous l'avons dit précédemment, il y a une distinction entre ces modes Turbo et l'UASP au sein des applications, si la méthode utilisée (remplacer des drivers Microsoft par un driver custom) est la même, que font réellement ces pilotes ?

Il faut savoir qu'il y a en pratique une limitation dans la taille maximale des I/O qui peuvent être envoyées par les pilotes Microsoft fournis dans Windows 7 aux périphériques USB, cette limite étant de 64 Ko. Microsoft reconnait le problème et propose même un hotfix, optionnel, qui est téléchargeable ici  (une adresse email est nécessaire pour le téléchargement). Sur la page on trouve la clef de la base de registre à changer pour modifier la taille maximale des blocs qui puisse être envoyée (jusqu'à 2 Mo). Sachant que le nombre d'I/O que l'on peut traiter est toujours une limite importante, il est naturel de penser que les 64 Ko entraînent une limite forte aux débits séquentiels maximums que l'on peut atteindre.

Mais les logiciels Turbo d'Asus et d'Asrock se résument-t-ilsdonc à ce simple hotfix ? Non, car malheureusement il ne suffit pas d'installer ce Hotfix Microsoft pour que les performances augmentent ! Vous pouvez le voir ci-dessous ou nous comparons trois cas (mode bot, mode bot + hotfix, mode Turbo) :



[ Mode BOT ]  [ Mode BOT + hotfix ]  [ Mode Turbo ]


Le Hotfix ne sert strictement à rien, et pour cause, pour qu'il fonctionne, il faut que le pilote du périphérique autorise des transferts de blocs de plus de 64 Ko. Hors, les périphériques USB utilisent généralement des pilotes Microsoft… qui sont limités à 64 Ko. Si l'on dispose, c'est le cas de quelques modèles, d'un pilote spécifique pour son boitier USB, que ce pilote est bel et bien prévu pour des blocs de plus de 64 Ko, et du hotfix, alors on peut, théoriquement, émuler ce que font les solutions d'Asrock et d'Asus.

Or comme vous le voyez, les solutions d'Asus/Asrock ne s'embarassent pas de tous ces problèmes, et c'est pour cela qu'ils remplacent directement le pilote Microsoft par un pilote tiers, qui n'est pas mué par les mêmes contraintes. Résultat, on voit sous ATTO que les performances augmentent fortement au-delà de 64Ko en mode Turbo.

Cependant, le remède utilisé par Asus et Asrock a des incidences plus complexes. Le pilote changeant, ce n'est pas que la limite du nombre d'I/O qui évolue. Tous les pilotes ne sont pas égaux et pourront être plus ou moins efficaces, ou plus ou moins optimisés pour certaines tailles de transferts. Comme nous le verrons dans nos benchs en pratique, le pilote en lui-même joue un rôle primordial, et peut faire tout, voir parfois n'importe quoi !
Vos réactions

Top articles