Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve primeiro a configuração inicial 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.
O software troca informações de latência de saída U1 ou U2 com o dispositivo durante o processo de enumeração. Como 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 (definido na Seção 9.6.2.2 da especificação USB 3.0). Como segunda parte da troca, o host informa ao dispositivo sobre as latências gerais de saída do 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 links de subida e ao controlador.
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 do U1 ou U2 para u0. A tabela a seguir descreve os valores de tempo limite.
Tabela 1. valores 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. 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 a seu parceiro de link sobre esse valor. A importância dessa etapa é descrita em "Transição Direta de U1 para U2".
Para cada dispositivo ou hub, o software configura dois valores: U1_ENABLE e U2_ENABLE enviando transferências de controle SET_FEATURE (U1_ENABLE/U2_ENABLE). A tabela a seguir descreve esses valores.
Tabela 2. valores U1_ENABLE e U2_ENABLE
Valor Descrição Ativado A porta dos EUA pode iniciar transições e aceitar transições iniciadas pelo parceiro de conexão, se permitido pela política do 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 pacotes ativamente. O link é considerado ocioso quando nenhum pacote está sendo transmitido. No modo 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 será movido para esse estado U. Se ele rejeitar a transição, o link permanecerá no 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 programou 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 no 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 enviou uma notificação ERDY e está esperando uma solicitação de transferência do host, o dispositivo pode rejeitar transições de estado U1 ou U2 enquanto isso.
Se o software tiver programado a porta DS para iniciar as transições U1 e U2, a porta DS iniciará pela primeira vez a transição U1 com base no temporizador (descrito anteriormente nesta seção). A transição de U1 para U2 é descrita neste tópico na Transição Direta de U1 para U2.
Se um link estiver no U1 ou 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 por 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 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 em 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 o estado atual. Portanto, ele pode fazer um palpite 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 uma de suas interfaces e sabe que não haverá tráfego por algum 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 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 do tempo limite para seu parceiro de link. Depois que o link tiver inserido 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 enlace passam silenciosamente para 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 pai ou controlador é responsável por transferir automaticamente o link para U0 e, depois, 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 U em sua porta USB. Se todas as portas DS estiverem no estado de vínculo 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 vínculo 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 em U1 ou inferiores 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 US para U0 e então enviá-la para U2.
Adiamento de pacote
A especificação USB 3.0 descreve um mecanismo conhecido como adiamento de pacote (consulte a seção C.1.2.2). O mecanismo é usado para minimizar o efeito do LPM na utilização do ônibus.
Se um host enviar uma solicitação de transferência para um dispositivo cujo link upstream esteja em U1 ou U2, o host poderá acabar desperdiçando largura de banda do barramento ao aguardar o link retornar a U0 e, então, esperar pela resposta do dispositivo. Para evitar essa espera, o hub principal responde em nome do dispositivo enviando de volta um cabeçalho de pacote adiado para o host. O host processa o cabeçalho do pacote adiado de uma maneira semelhante ao NRDY, podendo então iniciar transferências com outros pontos de extremidade. Em paralelo, o hub inicia uma transição U0 no link e, em seguida, informa o 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, após o envio do ERDY, o dispositivo seja responsável por manter o link no U0 até que o host envie uma resposta para ERDY ou até que o tempo tERDYTimeout (500 milissegundos) se esvaia. 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.