U1 및 U2 전환
이 항목에서는 먼저 소프트웨어에서 U1 및 U2 전환을 사용하도록 설정하는 초기 설정에 대해 설명한 다음 하드웨어에서 이러한 전환이 발생하는 방법을 설명합니다.
소프트웨어별 초기 설정
이 항목에서는 소프트웨어가 디바이스를 열거하는 방법을 설명합니다.
U1 또는 U2 전환이 발생할 경우 소프트웨어는 디바이스를 열거하는 동안 다음 단계를 수행합니다.
소프트웨어는 열거 프로세스 중에 U1 또는 U2 종료 대기 시간 정보를 디바이스와 교환합니다. 이 교환의 첫 번째 부분으로 디바이스별 대기 시간은 SuperSpeed USB 디바이스 기능의 bU1DevExitLat 및 wU2DevExitLat 필드(USB 3.0 사양의 섹션 9.6.2.2에 정의됨)로 채워집니다. 교환의 두 번째 부분으로, 호스트는 USB 3.0 사양의 섹션 9.4.12에 따라 SET_SEL 제어 전송을 전송하여 디바이스의 전체 종료 대기 시간에 대해 디바이스에 알립니다. 대기 시간 정보에는 업스트림 링크 및 컨트롤러와 연결된 대기 시간이 포함됩니다.
디바이스가 연결된 DS 포트의 경우 소프트웨어는 PORT_U1_TIMEOUT 및 PORT_U2_TIMEOUT 두 값을 구성합니다. 이러한 값을 결정하는 동안 소프트웨어는 디바이스의 특성(예: 엔드포인트 유형)과 U1 또는 U2에서 U0으로 디바이스를 다시 가져오는 것과 관련된 대기 시간을 고려합니다. 다음 표에서는 시간 제한 값에 대해 설명합니다.
표 1. PORT_U1_TIMEOUT 및 PORT_U2_TIMEOUT 값
값 Description 01H-FEH DS 포트는 비활성 기간 후에 전환을 시작해야 합니다. 정확한 기간은 시간 제한 값에서 파생됩니다. 보류 중인 트래픽이 없는 한 포트는 링크 파트너가 시작한 전환을 수락해야 합니다. Ffh DS 포트는 전환을 시작하지 않아야 하지만 보류 중인 트래픽이 없는 한 링크 파트너가 시작한 전환을 수락해야 합니다. 0 DS 포트는 전환을 시작하지 않아야 하며 링크 파트너가 시작한 전환을 수락해서는 안 됩니다. PORT_U2_TIMEOUT 값이 01H-FEH 사이이면 2단계의 결과로 하드웨어에서 발생하는 추가 단계가 있습니다. DS 포트는 해당 값에 대해 링크 파트너에게 알릴 수 있습니다. 이 단계의 중요성은 "U1에서 U2로 직접 전환"에 설명되어 있습니다.
모든 디바이스 또는 허브에 대해 소프트웨어는 SET_FEATURE(U1_ENABLE/U2_ENABLE) 제어 전송을 전송하여 U1_ENABLE 및 U2_ENABLE 두 값을 구성합니다. 다음 표에서는 이러한 값에 대해 설명합니다.
표 2. U1_ENABLE 및 U2_ENABLE 값
값 Description 사용 미국 포트는 디바이스 정책에서 허용하는 경우 전환을 시작하고 링크 파트너가 시작한 전환을 수락할 수 있습니다. 사용 안 함 미국 포트는 전환을 시작하지 않아야 하지만 링크 파트너가 시작한 전환을 수락할 수 있습니다.
하드웨어 전환
이 항목에서는 U1 및 U2로의 하드웨어 전환에 대해 설명합니다.
소프트웨어에 의해 초기 설정 후 하드웨어는 소프트웨어의 추가 개입 없이 U1 및 u2 자율적으로 전환됩니다.
링크는 패킷을 적극적으로 전송하는 한 U0(작업 상태)에 있습니다. 패킷이 전송되지 않을 때 링크는 유휴 상태로 간주됩니다. 유휴 상태에서 모든 링크 파트너는 U1 또는 U2로의 전환을 시작할 수 있습니다. 다른 링크 파트너는 전환을 수락하거나 거부할 수 있습니다. 링크 파트너가 전환을 수락하면 링크가 해당 U 상태로 이동합니다. 전환을 거부하는 경우 링크는 U0에 유지됩니다.
DS 포트 시작 전환
DS 포트는 포트에서 비활성을 추적하는 타이머 메커니즘을 구현합니다. 해당 포트가 패킷을 보내거나 받을 때마다 타이머가 다시 설정됩니다. 또한 소프트웨어가 새 시간 제한 값을 프로그래밍할 때 타이머가 다시 설정됩니다. 소프트웨어가 U1 또는 U2 전환만 시작하도록 DS 포트를 프로그래밍한 경우 링크가 U0에 처음 입력되면 DS 포트가 타이머를 시작합니다. 타이머 값은 소프트웨어에서 프로그래밍한 U1(또는 U2) 시간 제한 값을 기반으로 합니다. 타이머가 만료되면 링크가 U0에 있는 경우 DS 포트는 U1(또는 U2) 전환을 시작합니다.
미국 포트 링크 파트너는 디바이스가 전환이 성능 또는 대기 시간 요구 사항을 충족하는 디바이스의 기능에 영향을 줄 수 있음을 알고 있는 경우 전환을 거부할 수 있습니다. 예를 들어 디바이스가 ERDY 알림을 보내고 호스트에서 전송 요청을 예상하는 경우 디바이스는 그 동안 U1 또는 U2 상태 전환을 거부할 수 있습니다.
소프트웨어가 U1 및 U2 전환을 모두 시작하도록 DS 포트를 프로그래밍한 경우 DS 포트는 먼저 타이머에 따라 U1 전환을 시작합니다(이 섹션의 앞부분에서 설명). U1에서 U2로의 전환은 이 항목에서 U1에서 U2로의 직접 전환에 설명되어 있습니다.
링크가 U1 또는 U2에 있는 경우 DS 포트는 포트에 연결된 디바이스에 대한 트래픽을 수신할 때마다 포트를 다시 U0으로 가져올 수 있습니다.
디바이스(미국 포트)가 시작한 전환
소프트웨어에서 기능을 사용하도록 설정하면 디바이스에서 U0에서 U1 또는 U0으로의 전환을 시작할 수 있습니다. 디바이스가 U1에 대한 링크를 전환하는 경우 DS 포트의 U2 타이머에 따라 직접 U2로 전환할 수 있습니다("U1에서 U2로 직접 전환"에 설명됨). 그러나 U2 타이머가 설정되지 않은 경우 디바이스는 자체적으로 U1에서 U2로의 직접 전환을 시작할 수 없습니다. 이 경우 디바이스는 U2로 전환을 시작하기 전에 링크를 U0으로 다시 가져와야 합니다.
이러한 전환을 시작할 시기를 결정하는 동안 디바이스는 종료 대기 시간 및 성능 요구 사항을 고려해야 합니다. 디바이스가 전환을 얼마나 적극적으로 시작할 수 있는지에 대한 정보에 입각한 결정을 내릴 수 있도록 소프트웨어는 이 문서의 앞부분에 설명된 대로 다양한 종료 대기 시간 값을 제공합니다.
링크가 U1 또는 U2에 있는 경우 미국 포트는 언제든지 포트를 U0으로 다시 가져올 수 있습니다. 일반적으로 미국 포트는 호스트에 패킷을 보내려고 하거나 호스트에서 패킷을 예상하는 경우 U0으로의 전환을 시작합니다.
디바이스 시작 LPM의 이점
소프트웨어에서 DS 포트에 대해 설정한 타이머 값은 일반적인 추론을 기반으로 합니다. 이러한 타이머 값을 선택하는 동안 소프트웨어는 디바이스 성능이 손상되지 않도록 합니다. 디바이스의 성능을 유지하기 위해 소프트웨어는 너무 작은 값을 선택할 수 없습니다. DS 포트 시작 전환은 타이머를 기반으로 하며 디바이스의 정확한 상태를 고려하지 않으므로 이 메커니즘은 디바이스를 U1 또는 U2 상태로 보낼 수 있는 모든 기회를 활용할 수 없습니다.
반면 디바이스는 특성 및 현재 상태에 대한 정확한 지식을 가지고 있습니다. 따라서 다음 전송이 언제 이루어질지 지능적으로 추측할 수 있습니다. 해당 정보에 따라 디바이스는 성능에 큰 영향을 주지 않고 이러한 전환을 적극적으로 시작할 수 있습니다.
예를 들어 디바이스는 엔드포인트 중 하나에서 NRDY 알림을 전송했으며 잠시 동안 트래픽이 없을 것임을 알고 있습니다. 이 경우 디바이스는 U1 또는 U2로의 전환을 즉시 시작할 수 있습니다. ERDY 알림을 보내기 직전에 디바이스는 해당 데이터를 보낼 준비를 위해 링크를 U0으로 다시 가져올 수 있습니다. 이 프로세스에 대한 자세한 내용은 USB 3.0 사양의 C.3.1 섹션을 참조하세요.
U1에서 U2로 직접 전환
링크가 U1에 있는 경우 그 사이에 U0을 입력하지 않고도 링크가 U2로 직접 전환할 수 있습니다. 이는 U1로의 전환을 시작한 링크 파트너에 관계없이 발생할 수 있습니다. 그러나 U1에서 U2로의 전환은 링크의 DS 포트에서 U2 시간 제한이 01H-FEH 사이의 값으로 설정된 경우에만 발생할 수 있습니다.
"소프트웨어별 초기 설정" 섹션에서는 DS 포트가 시간 제한 값을 링크 파트너에게 전달할 수 있는 추가 단계를 설명합니다. 링크가 U1로 입력되면 두 링크 파트너는 DS 포트의 U2 시간 제한 값에 따라 설정된 시간 제한 값을 사용하여 타이머를 시작합니다. 트래픽으로 인해 타이머가 다시 설정되지 않고 만료되면 두 링크 파트너는 명시적으로 통신하지 않고 자동으로 U2로 전환됩니다.
U1 또는 U2에서 U3으로 전환
U1 또는 U2로의 전환은 하드웨어에서 자율적으로 시작되지만 U3로의 전환은 소프트웨어에서 시작됩니다. U3 전환은 비활성 기간 후에만 시작되므로 전환 전에 링크가 U0이 아닌 U1 또는 U2에 있었던 것일 가능성이 큽니다.
USB 3.0 사양은 U1 또는 U2에서 U3으로의 직접 전환을 정의하지 않습니다. 부모 허브 또는 컨트롤러는 자동으로 링크를 U0으로 전환한 다음 U3으로 전환해야 합니다.
허브에 대한 U1 또는 U2 전환
USB 3.0 사양은 미국 포트에서 U 상태 전환을 시작하는 시기에 대한 특정 지침을 허브에 제공합니다. 모든 DS 포트가 연결 상태 U1 이하인 경우 소프트웨어가 허브에서 U1 전환을 시작할 수 있다고 가정하고 허브는 미국 포트에서 U1 전환을 시작해야 합니다.
마찬가지로 모든 DS 포트가 U2 이하의 연결 상태인 경우 소프트웨어가 허브에서 U2 전환을 시작할 수 있다고 가정하고 허브는 미국 포트에서 U2 전환을 시작해야 합니다.
참고
DS 포트에 연결된 디바이스가 없는 경우 포트의 상태는 Rx.Detect이며 U2보다 낮습니다. 따라서 연결된 디바이스가 없는 경우 허브는 미국 포트를 U2로 보내야 합니다. 또한 모든 DS 포트가 처음에 U1 이하이고 U2 이하로 전환되는 경우 허브는 미국 포트를 U1에서 U2로 전환해야 합니다. 해당 전환은 U2 활동 타이머를 기반으로 하지 않으므로 허브는 미국 포트를 U0으로 가져온 다음 U2로 보내야 합니다.
패킷 지연
USB 3.0 사양은 패킷 지연이라는 메커니즘을 설명합니다(C.1.2.2 섹션 참조). 이 메커니즘은 LPM이 버스 사용률에 미치는 영향을 최소화하는 데 사용됩니다.
호스트가 업스트림 링크가 U1 또는 U2인 디바이스로 전송 요청을 보내는 경우 호스트는 링크가 U0으로 돌아올 때까지 기다린 다음 디바이스가 응답할 때까지 대기하여 버스 대역폭을 낭비하게 될 수 있습니다. 이러한 대기를 방지하기 위해 부모 허브는 지연된 패킷 헤더를 호스트로 다시 전송하여 디바이스를 대신하여 응답합니다. 호스트는 NRDY와 유사한 방식으로 지연된 패킷 헤더를 처리한 다음 다른 엔드포인트로 전송을 자유롭게 시작할 수 있습니다. 동시에 허브는 링크에서 U0 전환을 시작한 다음 지연된 패킷에 대해 디바이스에 알릴 수 있습니다. 그런 다음 디바이스는 ERDY를 호스트로 보내 디바이스가 이제 전송할 준비가 되었음을 나타냅니다. 그런 다음 호스트는 디바이스로의 전송 일정을 다시 예약할 수 있습니다.
디바이스의 중요한 책임은 ERDY를 보낸 후 호스트가 ERDY에 응답을 보내거나 tERDYTimeout (500밀리초) 시간이 경과할 때까지 U0에서 링크를 유지하는 것입니다. 이 시간 동안 디바이스는 U1 또는 U2 전환을 시작하지 않아야 하며 링크 파트너가 시작한 전환을 거부해야 합니다.