Compartir a través de


Transiciones U1 y U2

En este tema se describe primero la configuración inicial realizada por 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.

  1. El software intercambia la 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.

  2. 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

    Valor 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 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 debe aceptar transiciones iniciadas por el asociado de vínculo.
  3. 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 asociado de vínculo sobre ese valor. La importancia de este paso se describe en "Transición directa de U1 a U2".

  4. Para cada dispositivo o concentrador, el software configura dos valores: U1_ENABLE y U2_ENABLE mediante el envío de 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

    Valor Descripción
    habilitado El puerto de EE. UU. puede iniciar transiciones y aceptar transiciones iniciadas por el asociado de vínculo si lo permite la directiva de dispositivo.
    Disabled El puerto de EE. UU. no debe iniciar transiciones, pero puede aceptar 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 y cuando transfiera paquetes activamente. El vínculo se considera inactivo cuando no se transmite ningún paquete. En estado inactivo, cualquier asociado de vínculo 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 asociado de vínculo acepta la transición, el vínculo se mueve 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 los programas de software 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 transiciones 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 siempre que reciba tráfico para el dispositivo conectado al puerto.

Transiciones iniciadas por el dispositivo (puerto de EE. UU.)

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 pasar 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í solo. 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 informadas sobre cómo puede iniciar las transiciones de forma agresiva, el software también proporciona varios valores de latencia de salida, 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.

Por otro lado, el dispositivo tiene conocimientos precisos sobre sus características y el estado actual. Por lo tanto, puede hacer una estimación inteligente sobre cuándo se llevará a cabo 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 el vínculo pueda pasar directamente a U2 sin entrar en U0 entre. Esto puede producirse independientemente del asociado de vínculo 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 vínculo ha especificado U1, ambos asociados de vínculo inician un temporizador con el valor de tiempo de espera establecido 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 asociados de vínculo pasan silenciosamente a U2 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 muy 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, realizar la transición a U3.

Transiciones U1 o U2 para concentradores

La especificación USB 3.0 proporciona directrices específicas para los concentradores sobre cuándo iniciar transiciones de estado U en su puerto de EE. UU. Si todos los puertos DS están en estado de vínculo U1 o inferior, el concentrador debe iniciar una transición U1 en su puerto de EE. UU., suponiendo que el software habilitó el concentrador para iniciar la transición de U1.

Del mismo modo, si todos los puertos DS están en estado de vínculo U2 o inferior, el concentrador debe iniciar una transición U2 en su puerto de EE. UU., suponiendo que el software habilitó el concentrador para iniciar la transición de 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 del bus.

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 centro primario responde en nombre del dispositivo mediante el envío de 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 concentrador 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.