Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico primeiro descreve a configuração inicial feita pelo software para habilitar as 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 seguintes etapas 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 desta troca, as latências específicas do dispositivo são preenchidas pelo dispositivo nos campos bU1DevExitLat e wU2DevExitLat da capacidade do dispositivo USB SuperSpeed (definido na Secção 9.6.2.2 da especificação USB 3.0). No segundo momento da troca, o host informa o dispositivo sobre as latências de saída gerais do dispositivo, através do envio de uma transferência de controlo 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 aos links upstream e ao controlador.
Para a porta DS à qual o dispositivo está ligado, 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 endpoints) 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. PORT_U1_TIMEOUT e PORT_U2_TIMEOUT valores
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 PORT_U2_TIMEOUT estiver entre 01H-FEH, há uma etapa adicional que ocorre no hardware como resultado da etapa 2. A porta DS informa o seu parceiro de ligação sobre esse valor. A importância desta 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 de U1_ENABLE e U2_ENABLE
Valor Descrição Ativado(a) A porta dos EUA pode iniciar transições e aceitar transições iniciadas pelo parceiro de link, se permitido pela política do dispositivo. Desabilitado A porta US não deve iniciar transições, mas pode aceitar transições iniciadas pelo parceiro de ligação.
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 transita para U1 e u2 de forma autónoma, sem qualquer intervenção adicional do software.
Um link está em estado de funcionamento (U0), desde que esteja transferindo pacotes ativamente. O link é considerado ocioso quando nenhum pacote está sendo transmitido. No estado ocioso, qualquer parceiro de ligação pode iniciar uma transição para U1 ou U2. O outro parceiro de ligação 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 rejeitar a transição, o link permanece 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 programou a porta DS para iniciar apenas transições U1 ou U2, a porta DS inicia o temporizador quando o link entra 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 no momento em que o temporizador expirar, a porta DS iniciará a transição para 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 programou a porta DS para iniciar as transições U1 e U2, a porta DS inicia 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 em U1 ou U2, uma porta DS pode trazer a porta de volta para U0 sempre que receber tráfego para o dispositivo conectado à 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 capacidade seja ativada pelo software. Se o dispositivo fizer a transição de um link para U1, o link pode 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 pode 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 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 em U1 ou U2, uma porta dos EUA pode 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 quaisquer pacotes para o host ou se está antecipando um pacote do host.
Vantagens do LPM iniciado por dispositivo
Os valores do temporizador que são definidos pelo software para portas DS são baseados em heurísticas gerais. 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 um palpite inteligente sobre quando a próxima transferência vai 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 finais 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 este processo, consulte a secção C.3.1 da especificação USB 3.0.
Transição direta de U1 para U2
Se o link estiver em U1, é possível que o link possa fazer a transição direta para U2 sem inserir U0 no meio. Isso pode ocorrer independentemente do parceiro de ligação que iniciou a transição para o U1. No entanto, a transição U1 para U2 pode ocorrer somente se o tempo limite U2 na porta DS do link estiver definido para 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 ao seu parceiro de link. Depois de o link ter entrado em U1, ambos os parceiros de ligação iniciam um temporizador usando o valor de tempo limite definido em conformidade 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 farão a transição silenciosa para o U2 sem qualquer 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, é bastante provável que o link estivesse em 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 pela transição automática do link para U0 e, em seguida, pela 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 U em sua porta dos EUA. Se todas as portas DS estiverem no estado de link U1 ou inferior, o hub deve 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 deve iniciar uma transição U2 em sua porta dos EUA, assumindo que o software permitiu que o hub iniciasse a transição U2.
Observação
Se não houver nenhum dispositivo conectado a uma porta DS, o estado da porta é Rx.Detect, que é inferior ao U2. Portanto, se não houver dispositivos conectados, o hub deve enviar a sua porta USB para o U2. Além disso, se todas as portas DS estavam inicialmente em U1 ou inferior e fazem a transição para U2 ou inferior, o hub deve fazer a transição da porta US de U1 para U2. Como essa transição não se baseia no temporizador de atividade U2, o hub deve trazer a sua porta USB 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 (ver secção C.1.2.2). O mecanismo é utilizado para minimizar o efeito do LPM na utilização do barramento.
Se um host envia uma solicitação de transferência para um dispositivo, cujo link upstream está em U1 ou U2, o host pode acabar desperdiçando largura de banda de barramento esperando que o link volte para U0 e, em seguida, que o dispositivo responda. Para evitar essa espera, o hub principal responde em nome do dispositivo enviando um cabeçalho de pacote adiado de volta para o host. O host processa o cabeçalho do pacote diferido de uma forma semelhante à NRDY, e, em seguida, fica livre para iniciar transferências com outros endpoints. 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 está pronto para a transferência. O anfitrião pode então reagendar a transferência para o dispositivo.
Uma responsabilidade importante do dispositivo é que, após o envio de ERDY, o dispositivo é responsável por manter o link em U0 até que o host envie uma resposta para ERDY ou até que o tempo tERDYTimeout (500 milissegundos) transcorra. Durante esse período, o dispositivo não deve iniciar uma transição U1 ou U2 e também deve rejeitar qualquer transição iniciada pelo seu parceiro de ligação.