Transitions U1 et U2
Cette rubrique décrit d’abord la configuration initiale effectuée par le logiciel pour activer les transitions U1 et U2, puis décrit comment ces transitions se produisent dans le matériel.
Configuration initiale par logiciel
Cette rubrique décrit comment les logiciels énumèrent un appareil.
Pour que des transitions U1 ou U2 se produisent, le logiciel effectue les étapes suivantes lors de l’énumération d’un appareil.
Le logiciel échange des informations de latence de sortie U1 ou U2 avec l’appareil pendant le processus d’énumération. Dans la première partie de cet échange, les latences spécifiques à l’appareil sont renseignées par l’appareil dans les champs bU1DevExitLat et wU2DevExitLat de la fonctionnalité de périphérique USB SuperSpeed (définie dans la section 9.6.2.2 de la spécification USB 3.0). Dans la deuxième partie de l’échange, l’hôte informe l’appareil des latences de sortie globales pour l’appareil en envoyant un transfert de contrôle SET_SEL, conformément à la section 9.4.12 de la spécification USB 3.0. Les informations de latence incluent les latences associées aux liens amont et au contrôleur.
Pour le port DS auquel l’appareil est attaché, le logiciel configure deux valeurs : PORT_U1_TIMEOUT et PORT_U2_TIMEOUT. Lors du choix de ces valeurs, le logiciel prend en considération les caractéristiques de l’appareil (telles que le type de points de terminaison) et les latences associées au retour de L’appareil de U1 ou U2 vers U0. Le tableau suivant décrit les valeurs de délai d’expiration.
Tableau 1. PORT_U1_TIMEOUT et PORT_U2_TIMEOUT valeurs
Valeur Description 01H-FEH Le port DS doit lancer des transitions après une période d’inactivité. La période exacte est dérivée de la valeur du délai d’expiration. Le port doit accepter les transitions initiées par le partenaire de liaison, sauf s’il y a du trafic en attente. FFH Le port DS ne doit pas initier de transitions, mais doit accepter les transitions initiées par le partenaire de liaison, sauf s’il y a du trafic en attente. 0 Le port DS ne doit pas initier de transitions et ne doit pas accepter les transitions initiées par le partenaire de liaison. Si la valeur PORT_U2_TIMEOUT est comprise entre 01H et FEH, une étape supplémentaire se produit dans le matériel à la suite de l’étape 2. Le port DS informe son partenaire de liaison de cette valeur. L’importance de cette étape est décrite dans « Transition directe de U1 à U2 ».
Pour chaque appareil ou hub, le logiciel configure deux valeurs : U1_ENABLE et U2_ENABLE en envoyant des transferts de contrôle SET_FEATURE (U1_ENABLE/U2_ENABLE). Le tableau suivant décrit ces valeurs.
Tableau 2. U1_ENABLE et U2_ENABLE valeurs
Valeur Description activé Le port américain peut lancer des transitions et accepter les transitions initiées par le partenaire de liaison si la stratégie d’appareil l’autorise. Désactivé Le port américain ne doit pas initier de transitions, mais peut accepter des transitions initiées par le partenaire de liaison.
Transitions matérielles
Cette rubrique décrit les transitions matérielles vers U1 et U2.
Après la configuration initiale par le logiciel, le matériel passe à U1 et u2 de manière autonome sans intervention supplémentaire du logiciel.
Un lien est à l’état de fonctionnement (U0) tant qu’il transfère activement des paquets. Le lien est considéré comme inactif quand aucun paquet n’est transmis. Dans un état inactif, n’importe quel partenaire de lien peut lancer une transition vers U1 ou U2. L’autre partenaire de lien peut choisir d’accepter ou de rejeter la transition. Si le partenaire de lien accepte la transition, le lien passe à cet état U. S’il rejette la transition, le lien reste dans U0.
Transitions initiées par le port DS
Un port DS implémente un mécanisme de minuteur qui suit l’inactivité sur le port. Le minuteur est réinitialisé chaque fois que ce port envoie ou reçoit un paquet. Le minuteur est également réinitialisé lorsque le logiciel programme de nouvelles valeurs de délai d’expiration. Si le logiciel a programmé le port DS pour lancer uniquement des transitions U1 ou U2, le port DS démarre le minuteur lorsque le lien entre pour la première fois dans U0. La valeur du minuteur est basée sur la valeur de délai d’expiration U1 (ou U2) qui a été programmée par le logiciel. Si le lien est en U0 lorsque le minuteur expire, le port DS lance la transition U1 (ou U2).
Le partenaire de liaison de port aux États-Unis peut choisir de rejeter la transition si l’appareil sait que la transition peut affecter la capacité de l’appareil à répondre aux exigences de performances ou de latence. Par exemple, si l’appareil a envoyé une notification ERDY et attend une demande de transfert de la part de l’hôte, l’appareil peut rejeter les transitions d’état U1 ou U2 dans l’intervalle.
Si le logiciel a programmé le port DS pour lancer les transitions U1 et U2, le port DS lance d’abord la transition U1 en fonction du minuteur (décrit plus haut dans cette section). La transition de U1 à U2 est décrite dans cette rubrique dans Transition directe de U1 à U2.
Si un lien se trouve dans U1 ou U2, un port DS peut ramener le port dans U0 chaque fois qu’il reçoit du trafic pour l’appareil attaché au port.
Transitions initiées par l’appareil (port des États-Unis)
Un appareil peut choisir d’initier une transition de U0 à U1 ou U0 à U2, tant que la fonctionnalité est activée par le logiciel. Si l’appareil effectue la transition d’un lien vers U1, le lien peut passer directement à U2 en fonction du minuteur U2 du port DS (décrit dans « Transition directe de U1 vers U2 »). Toutefois, si le minuteur U2 n’est pas défini, l’appareil ne peut pas initier une transition directe de U1 à U2 seul. Dans ce cas, l’appareil doit rétablir le lien vers U0 avant de lancer la transition vers U2.
Lors du choix du moment où lancer ces transitions, un appareil doit prendre en compte ses latences de sortie et ses exigences de performances. Pour aider l’appareil à prendre des décisions éclairées sur la façon dont il peut initier les transitions, le logiciel fournit également diverses valeurs de latence de sortie, comme décrit précédemment dans ce document dans « Configuration initiale par logiciel ».
Si le lien est en U1 ou U2, un port américain peut ramener le port dans U0 à tout moment. En règle générale, le port des États-Unis lance la transition vers U0 lorsqu’il sait qu’il est sur le point d’envoyer des paquets à l’hôte ou s’il anticipe un paquet à partir de l’hôte.
Avantages du LPM lancé par l’appareil
Les valeurs du minuteur définies par le logiciel pour les ports DS sont basées sur des heuristiques générales. Lors du choix de ces valeurs de minuteur, le logiciel garantit que les performances de l’appareil ne sont pas altérées. Afin de maintenir les performances de l’appareil, le logiciel ne peut pas choisir des valeurs trop petites. Étant donné que les transitions initiées par le port DS sont basées sur les minuteurs et ne prennent pas en compte l’état exact de l’appareil, ce mécanisme ne peut pas tirer parti de toutes les opportunités possibles d’envoi de l’appareil à l’état U1 ou U2.
L’appareil, quant à lui, dispose d’une connaissance précise de ses caractéristiques et de son état actuel. Par conséquent, il peut faire une estimation intelligente du moment où le prochain transfert va avoir lieu. Sur la base de ces informations, l’appareil peut (et doit) choisir d’initier activement ces transitions sans affecter considérablement les performances.
Par exemple, l’appareil a envoyé une notification NRDY sur l’un de ses points de terminaison et sait qu’il n’y aura pas de trafic pendant un certain temps. Dans ce cas, l’appareil peut immédiatement lancer une transition vers U1 ou U2. Juste avant d’envoyer la notification ERDY, l’appareil peut rétablir le lien vers U0 en vue de l’envoi de ces données. Pour plus d’informations sur ce processus, consultez la section C.3.1 de la spécification USB 3.0.
Transition directe de U1 à U2
Si le lien se trouve dans U1, il est possible que le lien puisse passer directement à U2 sans entrer U0 entre les deux. Cela peut se produire quel que soit le partenaire de lien qui a initié la transition vers U1. Toutefois, la transition U1 vers U2 peut se produire uniquement si le délai d’expiration U2 sur le port DS de la liaison est défini sur une valeur comprise entre 01H-FEH.
La section « Configuration initiale par logiciel » décrit une étape supplémentaire qui permet au port DS de communiquer la valeur du délai d’expiration à son partenaire de liaison. Une fois le lien entré dans U1, les deux partenaires de liaison démarrent un minuteur à l’aide de la valeur de délai d’expiration définie en fonction de la valeur de délai d’expiration U2 du port DS. Si le minuteur n’est pas réinitialisé en raison du trafic et expire, les deux partenaires de liaison passent silencieusement à U2 sans aucune communication explicite entre eux.
Transitions de U1 ou U2 à U3
Les transitions vers U1 ou U2 sont lancées dans le matériel de manière autonome, mais la transition vers U3 est initiée par le logiciel. Étant donné que la transition U3 n’est lancée qu’après une période d’inactivité, il est très probable que le lien se trouvait dans U1 ou U2 (plutôt que U0) avant la transition.
La spécification USB 3.0 ne définit pas les transitions directes entre U1 ou U2 et U3. Le hub ou le contrôleur parent est responsable de la transition automatique du lien vers U0, puis de sa transition vers U3.
Transitions U1 ou U2 pour les hubs
La spécification USB 3.0 fournit des instructions spécifiques pour les hubs sur le moment où lancer des transitions d’état U sur son port américain. Si tous les ports DS sont à l’état de liaison U1 ou inférieur, le hub doit lancer une transition U1 sur son port américain, en supposant que le logiciel a activé le hub pour lancer la transition U1.
De même, si tous les ports DS sont à l’état de liaison U2 ou inférieur, le hub doit lancer une transition U2 sur son port américain, en supposant que le logiciel a activé le hub pour lancer la transition U2.
Notes
Si aucun appareil n’est attaché à un port DS, l’état du port est Rx.Detect, ce qui est inférieur à U2. Par conséquent, si aucun appareil n’est attaché, le hub doit envoyer son port américain à U2. En outre, si tous les ports DS étaient initialement en U1 ou inférieur et qu’ils passent à U2 ou inférieur, le hub doit faire passer le port us de U1 à U2. Étant donné que cette transition n’est pas basée sur le minuteur d’activité U2, le hub doit apporter son port américain à U0, puis l’envoyer à U2.
Report de paquets
La spécification USB 3.0 décrit un mécanisme appelé report de paquets (voir la section C.1.2.2). Le mécanisme est utilisé pour réduire l’effet de LPM sur l’utilisation du bus.
Si un hôte envoie une demande de transfert à un appareil dont le lien amont est en U1 ou U2, l’hôte peut finir par gaspiller la bande passante du bus en attendant que le lien revienne à U0, puis que l’appareil réponde. Pour éviter cette attente, le hub parent répond au nom de l’appareil en envoyant un en-tête de paquet différé à l’hôte. L’hôte traite l’en-tête de paquet différé d’une manière similaire à NRDY, puis est libre d’initier des transferts avec d’autres points de terminaison. En parallèle, le hub lance une transition U0 sur le lien, puis informe l’appareil du paquet différé. L’appareil envoie ensuite ERDY à l’hôte pour indiquer que l’appareil est maintenant prêt pour le transfert. L’hôte peut ensuite replanifier le transfert vers l’appareil.
Une responsabilité importante de l’appareil est qu’après l’envoi d’ERDY, l’appareil est responsable de conserver le lien dans U0 jusqu’à ce que l’hôte envoie une réponse à ERDY ou jusqu’à ce que le temps tERDYTimeout (500 millisecondes) s’écoule. Pendant ce temps, l’appareil ne doit pas lancer de transition U1 ou U2 et doit également rejeter toute transition initiée par son partenaire de liaison.