Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe primero la configuración inicial que realiza el software para habilitar las transiciones U1 y U2 y, a continuación, se describe cómo se producen estas transiciones en el hardware.
Configuración inicial por software
En este tema se describe cómo el software enumera un dispositivo.
Para que se produzcan transiciones U1 o U2, el software realiza los pasos siguientes durante la enumeración de un dispositivo.
El software intercambia información de latencia de salida U1 o U2 con el dispositivo durante el proceso de enumeración. Como primera parte de este intercambio, el dispositivo rellena las latencias específicas del dispositivo en los campos bU1DevExitLat y wU2DevExitLat de la funcionalidad del dispositivo USB SuperSpeed (definido en la sección 9.6.2.2 de la especificación USB 3.0). Como segunda parte del intercambio, el host informa al dispositivo sobre las latencias de salida generales del dispositivo mediante el envío de una transferencia de control de SET_SEL, según la sección 9.4.12 de la especificación USB 3.0. La información de latencia incluye las latencias asociadas a vínculos y controladores ascendentes.
Para el puerto DS al que está conectado el dispositivo, el software configura dos valores: PORT_U1_TIMEOUT y PORT_U2_TIMEOUT. Al decidir estos valores, el software tiene en cuenta las características del dispositivo (como el tipo de puntos de conexión) y las latencias asociadas a la devolución del dispositivo desde U1 o U2 a U0. En la tabla siguiente se describen los valores de tiempo de espera.
Tabla 1. valores de PORT_U1_TIMEOUT y PORT_U2_TIMEOUT
Importancia Descripción 01H-FEH El puerto DS debe iniciar transiciones después de un período de inactividad. El período exacto se deriva del valor de tiempo de espera. El puerto debe aceptar transiciones iniciadas por el asociado de vínculo a menos que haya tráfico pendiente. FFH El puerto DS no debe iniciar transiciones, pero debe aceptar las transiciones iniciadas por el asociado de vínculo a menos que haya tráfico pendiente. 0 El puerto DS no debe iniciar transiciones y no aceptar las transiciones iniciadas por el asociado de vínculo. Si el valor de PORT_U2_TIMEOUT está entre 01H-FEH, hay un paso adicional que se produce en el hardware como resultado del paso 2. El puerto DS informa a su socio de enlace sobre el valor. La importancia de este paso se describe en "Transición directa de U1 a U2".
Para cada dispositivo o concentrador, el software configura dos valores: U1_ENABLE y U2_ENABLE enviando transferencias de control de SET_FEATURE (U1_ENABLE/U2_ENABLE). En la tabla siguiente se describen esos valores.
Tabla 2. valores de U1_ENABLE y U2_ENABLE
Importancia Descripción Activado El puerto de EE. UU. puede iniciar transiciones y aceptar transiciones iniciadas por el asociado de vínculo si la directiva de dispositivo lo permite. Deshabilitado El puerto de EE. UU. no debe iniciar transiciones, pero puede aceptar las transiciones iniciadas por el asociado de vínculo.
Transiciones de hardware
En este tema se describen las transiciones de hardware a U1 y U2.
Después de la configuración inicial por parte del software, el hardware pasa a U1 y u2 de forma autónoma sin intervención adicional del software.
Un vínculo está en estado de trabajo (U0) siempre que transfiera activamente paquetes. El vínculo se considera inactivo cuando no se transmiten paquetes. En estado inactivo, cualquier socio de enlace puede iniciar una transición a U1 o U2. El otro asociado de vínculo puede optar por aceptar o rechazar la transición. Si el socio del enlace acepta la transición, el vínculo pasa a ese estado U. Si rechaza la transición, el vínculo permanece en U0.
Transiciones iniciadas por el puerto DS
Un puerto DS implementa un mecanismo de temporizador que realiza un seguimiento de la inactividad en el puerto. El temporizador se restablece cada vez que ese puerto envía o recibe un paquete. El temporizador también se restablece cuando el software programa nuevos valores de tiempo de espera. Si el software ha programado el puerto DS para iniciar solo transiciones U1 o U2, el puerto DS inicia el temporizador cuando el vínculo entra por primera vez en U0. El valor del temporizador se basa en el valor de tiempo de espera U1 (o U2) programado por el software. Si el vínculo está en U0 cuando expira el temporizador, el puerto DS inicia la transición U1 (o U2).
El asociado de vínculo de puerto de EE. UU. puede optar por rechazar la transición si el dispositivo sabe que la transición puede afectar a la capacidad del dispositivo para cumplir los requisitos de rendimiento o latencia. Por ejemplo, si el dispositivo ha enviado una notificación ERDY y espera una solicitud de transferencia del host, el dispositivo podría rechazar las transiciones de estado U1 o U2 mientras tanto.
Si el software ha programado el puerto DS para iniciar las transiciones de U1 y U2, el puerto DS inicia primero la transición U1 en función del temporizador (descrito anteriormente en esta sección). La transición de U1 a U2 se describe en este tema en Transición directa de U1 a U2.
Si un vínculo está en U1 o U2, un puerto DS puede devolver el puerto a U0 en cualquier momento en que reciba tráfico para el dispositivo conectado al puerto.
Transiciones iniciadas por el dispositivo (puerto USB)
Un dispositivo puede optar por iniciar una transición de U0 a U1 o U0 a U2, siempre y cuando el software habilite la funcionalidad. Si el dispositivo realiza la transición de un vínculo a U1, el vínculo puede realizar la transición a U2 directamente en función del temporizador U2 del puerto DS (descrito en "Transición directa de U1 a U2". Sin embargo, si no se establece el temporizador U2, el dispositivo no puede iniciar una transición directa de U1 a U2 por sí mismo. En ese caso, el dispositivo debe devolver el vínculo a U0 antes de iniciar la transición a U2.
Al decidir cuándo iniciar esas transiciones, un dispositivo debe tener en cuenta sus latencias de salida y los requisitos de rendimiento. Para ayudar al dispositivo a tomar decisiones fundamentadas sobre cómo puede iniciar las transiciones de forma agresiva, el software también proporciona varios valores de latencia de salida, tal como se describe anteriormente en este documento en "Configuración inicial por software".
Si el vínculo está en U1 o U2, un puerto de EE. UU. puede devolver el puerto a U0 en cualquier momento. Normalmente, el puerto de EE. UU. inicia la transición a U0 cuando sabe que está a punto de enviar paquetes al host o si está anticipando un paquete del host.
Ventajas del LPM iniciado por el dispositivo
Los valores del temporizador establecidos por el software para los puertos DS se basan en heurística general. Al elegir esos valores de temporizador, el software garantiza que el rendimiento del dispositivo no se vea afectado. Para mantener el rendimiento del dispositivo, el software no puede elegir valores demasiado pequeños. Dado que las transiciones iniciadas por el puerto DS se basan en los temporizadores y no tienen en cuenta el estado exacto del dispositivo, este mecanismo no puede aprovechar todas las posibles oportunidades de enviar el dispositivo al estado U1 o U2.
El dispositivo, por otro lado, tiene conocimientos precisos sobre sus características y estado actual. Por lo tanto, puede hacer una estimación inteligente sobre cuándo se va a realizar la siguiente transferencia. En función de esa información, el dispositivo puede (y debe) optar por iniciar activamente estas transiciones sin afectar significativamente al rendimiento.
Por ejemplo, el dispositivo ha enviado una notificación NRDY en uno de sus puntos de conexión y sabe que no habrá tráfico durante un tiempo. En ese caso, el dispositivo puede iniciar inmediatamente una transición a U1 o U2. Justo antes de enviar la notificación ERDY, el dispositivo puede devolver el vínculo a U0 como preparación para enviar esos datos. Para obtener más información sobre este proceso, consulte la sección C.3.1 de la especificación USB 3.0.
Transición directa de U1 a U2
Si el vínculo está en U1, es posible que pase directamente a U2 sin entrar en U0 en medio. Esto puede ocurrir independientemente del socio de enlace que haya iniciado la transición a U1. Sin embargo, la transición de U1 a U2 solo puede producirse si el tiempo de espera de U2 en el puerto DS del vínculo se establece en un valor entre 01H-FEH.
La sección "Configuración inicial por software" describe un paso adicional que permite al puerto DS comunicar el valor de tiempo de espera a su asociado de vínculo. Una vez que el enlace ha entrado en U1, ambos socios del enlace inician un temporizador utilizando el valor de tiempo de espera configurado según el valor de tiempo de espera U2 del puerto DS. Si el temporizador no se restablece debido al tráfico y expira, ambos socios de enlace pasan a U2 silenciosamente sin ninguna comunicación explícita entre ellos.
Transiciones de U1 o U2 a U3
Las transiciones a U1 o U2 se inician en el hardware de forma autónoma, pero el software inicia la transición a U3. Dado que la transición de U3 se inicia solo después de un período de inactividad, es bastante probable que el vínculo estuviera en U1 o U2 (en lugar de U0) antes de la transición.
La especificación USB 3.0 no define transiciones directas de U1 o U2 a U3. El concentrador o controlador primario es responsable de realizar automáticamente la transición del vínculo a U0 y, a continuación, de realizar la transición a U3.
Transiciones U1 o U2 para centros
La especificación USB 3.0 proporciona directrices específicas para los concentradores sobre cuándo iniciar las transiciones de estado de U en su puerto de EE. UU. Si todos los puertos DS están en estado de vínculo U1 o inferior, el centro debe iniciar una transición U1 en su puerto de EE. UU., suponiendo que el software habilitó el centro para iniciar la transición de U1.
Del mismo modo, si todos los puertos DS están en estado de enlace U2 o inferior, el concentrador debe iniciar una transición U2 en su puerto US, asumiendo que el software permitió al concentrador iniciar la transición U2.
Nota:
Si no hay ningún dispositivo conectado a un puerto DS, el estado del puerto es Rx.Detect, que es inferior a U2. Por lo tanto, si no hay dispositivos conectados, el centro debe enviar su puerto de EE. UU. a U2. Además, si todos los puertos DS estaban inicialmente en U1 o inferior y pasan a U2 o inferior, el concentrador debe realizar la transición del puerto de EE. UU. de U1 a U2. Dado que esa transición no se basa en el temporizador de actividad U2, el centro debe traer su puerto de EE. UU. a U0 y, a continuación, enviarlo a U2.
Aplazamiento de paquetes
La especificación USB 3.0 describe un mecanismo conocido como aplazamiento de paquetes (consulte la sección C.1.2.2). El mecanismo se usa para minimizar el efecto de LPM en el uso de buses.
Si un host envía una solicitud de transferencia a un dispositivo, cuyo vínculo ascendente está en U1 o U2, el host podría acabar desperdiciando el ancho de banda de bus esperando a que el vínculo vuelva a U0 y, a continuación, para que el dispositivo responda. Para evitar esa espera, el hub principal responde en nombre del dispositivo enviando un encabezado de paquete diferido al host. El host procesa el encabezado de paquete diferido de una manera similar a NRDY y, a continuación, es libre de iniciar transferencias con otros puntos de conexión. En paralelo, el centro inicia una transición de U0 en el vínculo y, a continuación, informa al dispositivo sobre el paquete diferido. A continuación, el dispositivo envía ERDY al host para indicar que el dispositivo ya está listo para la transferencia. A continuación, el host puede volver a programar la transferencia al dispositivo.
Una responsabilidad importante del dispositivo es que después de enviar ERDY, el dispositivo es responsable de mantener el vínculo en U0 hasta que el host envíe una respuesta a ERDY o hasta que transcurre el tiempo de tERDYTimeout (500 milisegundos). Durante ese tiempo, el dispositivo no debe iniciar una transición U1 o U2 y también debe rechazar cualquier transición iniciada por su asociado de vínculo.