Partilhar via


Transições U1 e U2

Este tópico descreve primeiro a configuração inicial que é feita pelo software para habilitar transições U1 e U2 e, em seguida, descreve como essas transições ocorrem no hardware.

Configuração inicial por software

Este tópico descreve como o software enumera um dispositivo.

Para que as transições U1 ou U2 ocorram, o software executa as etapas a seguir durante a enumeração de um dispositivo.

  1. O software troca informações de latência de saída U1 ou U2 com o dispositivo durante o processo de enumeração. Como a primeira parte dessa troca, as latências específicas do dispositivo são preenchidas pelo dispositivo nos campos bU1DevExitLat e wU2DevExitLat da funcionalidade do dispositivo USB SuperSpeed (definida na Seção 9.6.2.2 da especificação USB 3.0). Como segunda parte da troca, o host informa ao dispositivo sobre latências gerais de saída para o dispositivo enviando uma transferência de controle SET_SEL, de acordo com a seção 9.4.12 da especificação USB 3.0. As informações de latência incluem as latências associadas a upstream links e controlador.

  2. Para a porta DS à qual o dispositivo está anexado, o software configura dois valores: PORT_U1_TIMEOUT e PORT_U2_TIMEOUT. Ao decidir esses valores, o software leva em consideração as características do dispositivo (como o tipo de pontos de extremidade) e as latências associadas a trazer o dispositivo de volta de U1 ou U2 para U0. A tabela a seguir descreve os valores de tempo limite.

    Tabela 1. valores de PORT_U1_TIMEOUT e PORT_U2_TIMEOUT

    Valor Descrição
    01H-FEH A porta DS deve iniciar transições após um período de inatividade. O período exato é derivado do valor de tempo limite. A porta deve aceitar transições iniciadas pelo parceiro de link, a menos que haja tráfego pendente.
    FFH A porta DS não deve iniciar transições, mas deve aceitar transições iniciadas pelo parceiro de link, a menos que haja tráfego pendente.
    0 A porta DS não deve iniciar transições e não deve aceitar transições iniciadas pelo parceiro de link.
  3. Se o valor de PORT_U2_TIMEOUT estiver entre 01H-FEH, haverá uma etapa adicional que ocorre no hardware como resultado da etapa 2. A porta DS informa seu parceiro de link sobre esse valor. A importância dessa etapa é descrita em "Transição Direta de U1 para U2".

  4. Para cada dispositivo ou hub, o software configura dois valores: U1_ENABLE e U2_ENABLE enviando transferências de controle de SET_FEATURE (U1_ENABLE/U2_ENABLE). A tabela a seguir descreve esses valores.

    Tabela 2. valores de U1_ENABLE e U2_ENABLE

    Valor Descrição
    habilitado A porta dos EUA pode iniciar transições e aceitar transições iniciadas pelo parceiro de link, se permitido pela política de dispositivo.
    Desabilitado A porta dos EUA não deve iniciar transições, mas pode aceitar transições iniciadas pelo parceiro de link.

Transições de hardware

Este tópico descreve as transições de hardware para U1 e U2.

Após a configuração inicial pelo software, o hardware faz a transição para U1 e u2 de forma autônoma sem intervenção adicional do software.

Um link está no estado de trabalho (U0), desde que esteja transferindo ativamente pacotes. O link é considerado ocioso quando nenhum pacote está sendo transmitido. Em estado ocioso, qualquer parceiro de link pode iniciar uma transição para U1 ou U2. O outro parceiro de link pode optar por aceitar ou rejeitar a transição. Se o parceiro de link aceitar a transição, o link passará para esse estado U. Se ele rejeitar a transição, o link permanecerá em U0.

Transições iniciadas pela porta DS

Uma porta DS implementa um mecanismo de temporizador que rastreia a inatividade na porta. O temporizador é redefinido sempre que essa porta envia ou recebe um pacote. O temporizador também é redefinido quando o software programa novos valores de tempo limite. Se o software tiver programado a porta DS para iniciar apenas transições U1 ou U2, a porta DS iniciará o temporizador quando o link entrar pela primeira vez em U0. O valor do temporizador é baseado no valor de tempo limite U1 (ou U2) que foi programado pelo software. Se o link estiver em U0 quando o temporizador expirar, a porta DS iniciará a transição U1 (ou U2).

O parceiro de link de porta dos EUA pode optar por rejeitar a transição se o dispositivo souber que a transição pode afetar a capacidade do dispositivo de atender aos requisitos de desempenho ou latência. Por exemplo, se o dispositivo tiver enviado uma notificação ERDY e estiver esperando uma solicitação de transferência do host, o dispositivo poderá rejeitar transições de estado U1 ou U2 enquanto isso.

Se o software tiver programado a porta DS para iniciar transições U1 e U2, a porta DS iniciará primeiro a transição U1 com base no temporizador (descrito anteriormente nesta seção). A transição de U1 para U2 é descrita neste tópico em Transição Direta de U1 para U2.

Se um link estiver no U1 ou no U2, uma porta DS poderá trazer a porta de volta para U0 sempre que receber tráfego para o dispositivo anexado à porta.

Transições iniciadas pelo dispositivo (porta dos EUA)

Um dispositivo pode optar por iniciar uma transição de U0 para U1 ou U0 para U2, desde que a funcionalidade seja habilitada pelo software. Se o dispositivo fizer a transição de um link para U1, o link poderá fazer a transição para U2 diretamente com base no temporizador U2 da porta DS (descrito em "Transição Direta de U1 para U2". No entanto, se o temporizador U2 não estiver definido, o dispositivo não poderá iniciar uma transição direta de U1 para U2 por conta própria. Nesse caso, o dispositivo deve trazer o link de volta para U0 antes de iniciar a transição para o U2.

Ao decidir quando iniciar essas transições, um dispositivo deve considerar suas latências de saída e requisitos de desempenho. Para ajudar o dispositivo a tomar decisões informadas sobre a agressividade com que ele pode iniciar as transições, o software também fornece vários valores de latência de saída, conforme descrito anteriormente neste documento em "Configuração inicial por software".

Se o link estiver no U1 ou U2, uma porta dos EUA poderá trazer a porta de volta para U0 a qualquer momento. Normalmente, a porta dos EUA inicia a transição para U0 quando sabe que está prestes a enviar pacotes para o host ou se está antecipando um pacote do host.

Vantagens do LPM iniciado pelo dispositivo

Os valores de temporizador definidos pelo software para portas DS são baseados na heurística geral. Ao escolher esses valores de temporizador, o software garante que o desempenho do dispositivo não seja prejudicado. Para manter o desempenho do dispositivo, o software não pode escolher valores muito pequenos. Como as transições iniciadas pela porta DS são baseadas nos temporizadores e não levam em conta o estado exato do dispositivo, esse mecanismo não pode aproveitar todas as oportunidades possíveis de enviar o dispositivo para o estado U1 ou U2.

O dispositivo, por outro lado, tem conhecimento preciso sobre suas características e estado atual. Portanto, ele pode fazer uma suposição inteligente sobre quando a próxima transferência ocorrerá. Com base nessas informações, o dispositivo pode (e deve) optar por iniciar ativamente essas transições sem afetar significativamente o desempenho.

Por exemplo, o dispositivo enviou uma notificação NRDY em um de seus pontos de extremidade e sabe que não haverá tráfego por um tempo. Nesse caso, o dispositivo pode iniciar imediatamente uma transição para U1 ou U2. Pouco antes de enviar a notificação ERDY, o dispositivo pode trazer o link de volta para U0 em preparação para enviar esses dados. Para obter detalhes sobre esse processo, consulte a seção C.3.1 da especificação USB 3.0.

Transição direta de U1 para U2

Se o link estiver no U1, é possível que o link possa fazer a transição direta para u2 sem inserir U0 no meio. Isso pode ocorrer independentemente de qual parceiro de link iniciou a transição para o U1. No entanto, a transição U1 para U2 só poderá ocorrer se o tempo limite U2 na porta DS do link estiver definido como um valor entre 01H-FEH.

A seção "Configuração inicial por software" descreve uma etapa adicional que permite que a porta DS comunique o valor de tempo limite para seu parceiro de link. Depois que o link tiver entrado no U1, ambos os parceiros de link iniciarão um temporizador usando o valor de tempo limite definido de acordo com o valor de tempo limite U2 da porta DS. Se o temporizador não for redefinido devido ao tráfego e expirar, ambos os parceiros de link serão transferidos silenciosamente para o U2 sem nenhuma comunicação explícita entre eles.

Transições de U1 ou U2 para U3

As transições para U1 ou U2 são iniciadas no hardware de forma autônoma, mas a transição para u3 é iniciada pelo software. Como a transição U3 é iniciada somente após um período de inatividade, é bem provável que o link esteja no U1 ou U2 (em vez de U0) antes da transição.

A especificação USB 3.0 não define transições diretas de U1 ou U2 para U3. O hub ou controlador pai é responsável por fazer a transição automática do link para U0 e, em seguida, fazer a transição para U3.

Transições U1 ou U2 para hubs

A especificação USB 3.0 fornece diretrizes específicas para hubs sobre quando iniciar transições de estado dos EUA em sua porta dos EUA. Se todas as portas DS estiverem no estado de link U1 ou inferior, o hub deverá iniciar uma transição U1 em sua porta dos EUA, supondo que o software habilitou o hub para iniciar a transição U1.

Da mesma forma, se todas as portas DS estiverem no estado de link U2 ou inferior, o hub deverá iniciar uma transição U2 em sua porta dos EUA, supondo que o software habilitou o hub para iniciar a transição U2.

Observação

Se não houver nenhum dispositivo anexado a uma porta DS, o estado da porta será Rx.Detect, que é menor que U2. Portanto, se não houver dispositivos anexados, o hub deverá enviar sua porta dos EUA para U2. Além disso, se todas as portas DS estiverem inicialmente no U1 ou inferior e fizerem a transição para U2 ou inferior, o hub deverá fazer a transição da porta dos EUA de U1 para U2. Como essa transição não se baseia no temporizador de atividade U2, o hub deve trazer sua porta dos EUA para U0 e, em seguida, enviá-la para U2.

Adiamento de pacotes

A especificação USB 3.0 descreve um mecanismo conhecido como adiamento de pacotes (consulte a seção C.1.2.2). O mecanismo é usado para minimizar o efeito do LPM na utilização do barramento.

Se um host enviar uma solicitação de transferência para um dispositivo, cujo link de upstream está no U1 ou no U2, o host poderá acabar desperdiçando a largura de banda do barramento aguardando o link voltar para U0 e, em seguida, para que o dispositivo responda. Para evitar essa espera, o hub pai responde em nome do dispositivo enviando um cabeçalho de pacote adiado de volta para o host. O host processa o cabeçalho de pacote adiado de maneira semelhante à NRDY e, em seguida, é livre para iniciar transferências com outros pontos de extremidade. Em paralelo, o hub inicia uma transição U0 no link e informa ao dispositivo sobre o pacote adiado. Em seguida, o dispositivo envia ERDY para o host para indicar que o dispositivo agora está pronto para a transferência. Em seguida, o host pode reagendar a transferência para o dispositivo.

Uma responsabilidade importante do dispositivo é que, depois de enviar o ERDY, o dispositivo é responsável por manter o link em U0 até que o host envie uma resposta ao ERDY ou até que o tempo tERDYTimeout (500 milissegundos) se desfaça. Durante esse tempo, o dispositivo não deve iniciar uma transição U1 ou U2 e também deve rejeitar qualquer transição iniciada por seu parceiro de link.