
내가 찾은 가장 빠른 USB 키보드는 1000Hz 폴링 기능을 갖춘 USB 2.0을 사용합니다.
영화만 보고 몇 시간 동안 이 키보드를 건드리지 않으면 앞뒤로 USB 통신이 실제로 매 ms마다 계속 반복됩니까? 아니면 일반적으로 일종의 USB 절전 상태(예: 1Hz 폴링)로 들어가나요?
나의 이해즉, 매 ms마다 PC는 IN 요청으로 작업을 시작해야 하고, 키보드는 DATA 응답("키를 누르지 않았습니다"라고 말함)을 보내고, PC는 ACK 응답을 보내야 합니다.
그래서 제가 이런 질문을 드리는 이유는 그게 다 낭비인 것 같아서... 하지만 어쩌면 별 것 아닐 수도 있습니다.
(이 질문은 일반 Windows PC에 관한 질문인데 Android 기기에도 궁금합니다. 그런데 제 생각에는PS/2키보드를 건드리지 않으면 PS/2 케이블을 통해 앞뒤로 통신할 수 없지만, 제가 틀렸다면 정정해 주세요.)
답변1
USB 키보드 폴링을 사용하지 않으면 일반적으로 속도가 느려지나요?
아니요, 시스템은 키보드가 언제 작동하는지 알 수 없습니다."사용되지 않음"미리.
사용자인 당신은 키보드를 사용하고 있지 않다는 것을 알고 있지만 시스템은 당신의 의도를 감지할 수 없습니다.
연결된 모든 장치의 일관되고 시기적절한 서비스를 보장하려면 USB 버스에서 장치를 폴링해야 합니다.
이벤트 중심 방식(예: 인터럽트 사용)에서는 우선 순위가 낮거나 활동이 적은 장치의 고갈을 방지하기 위해 더 복잡한 적응형 해결 방법이 필요합니다.
... 앞뒤 USB 통신이 실제로 매 ms마다 계속 반복됩니까?
예, 이것이 공유 매체에서의 양방향 통신을 위한 USB 프로토콜의 정의입니다.
아니면 일반적으로 일종의 USB 절전 상태(예: 1Hz 폴링)로 들어가나요?
아니요.
버스가 유휴 상태라면 폴링에 대한 페널티는 없습니다.
적응형 속도 폴링은 복잡성이 증가하여 구현될 수 있으며 그에 따라 응답 시간도 저하됩니다.
이 폴링은 일반적으로 USB 호스트의 CPU가 아닌 호스트 USB 컨트롤러에 의해 주로 수행됩니다. 이 폴링은 PC 프로세서 또는 OS에 최소한의 영향이나 부하를 줄 수 있습니다.
USB는 하드웨어와 소프트웨어에 구현되는 표준입니다. 구현의 OS 소프트웨어 측면은 Windows 및 Android를 포함한 모든 OS에서 유사할 것으로 예상됩니다.
예를 들어, USB 장치의 폴링 속도는 장치 자체에 의해 지정되며 호스트 OS에 의해 결정되지 않습니다.
이 폴링 속도는엔드포인트 설명자, 범위는 "저속/최대 속도 장치의 경우 1ms, 고속 장치의 경우 125us"입니다.
PS/2 키보드는 키보드를 터치하지 않으면 PS/2 케이블을 통한 앞뒤 통신이 없는 것 같습니다.
PS/2 인터페이스는 클록 라인을 사용하여 반이중 통신 방향을 협상하는 반면, USB는 마스터-슬레이브 임시 프로토콜에 의존하는 공유 반이중 버스입니다.
PS/2 장치는 PC 호스트가 클록 라인을 로우로 구동하여 PS/2 장치가 전송을 중지하지 않는 한 언제든지 전송할 수 있습니다.
답변2
영화만 보고 몇 시간 동안 이 키보드를 건드리지 않으면 앞뒤로 USB 통신이 실제로 매 ms마다 계속 반복됩니까? 아니면 일반적으로 일종의 USB 절전 상태(예: 1Hz 폴링)로 들어가나요?
매 ms마다 PC는 IN 요청으로 작업을 시작해야 합니다.
실제로 "통신"이 실제로 매 ms마다 발생하는 것은 아닙니다. 그러나 저속 USB 호스트가 매 ms마다 "keep-alive"를 사용하여 버스를 지속적으로 펄스하는 것은 사실입니다. 이를 "USB 프레임"이라고 합니다. 따라서 여기서는 실제 통신이 발생하지 않습니다.
"통신"은 귀하가 올바르게 언급한 것처럼 호스트가 폴링(IN) 요청을 보낼 때만 발생합니다. Windows의 일반적인 폴링 속도는 8프레임당 한 번씩 8ms이지만 상황에 따라 다릅니다. 말씀하신 것처럼 독점 드라이버를 "게임 키보드"로 사용하는 경우 폴링은 1ms마다 발생할 수 있습니다.
예, 그것은 낭비적인 과정입니다. 이것이 바로 대부분의 휴대용 장치가 절전 기술을 사용하는 이유입니다. 폴링 속도를 늦추는 대신 표준 USB_SUSPEND 기능을 사용합니다. 내부 알고리즘이 키보드나 마우스에서 새로운 정보가 나오지 않는다고 판단하면 호스트는 각 HID(휴먼 인터페이스 장치)를 선택적으로 일시 중지합니다. SUSPEND 상태로의 진입 대기 시간은 8ms입니다. 제가 정확하게 기억한다면 비활성 시간 초과는 ~200ms이고 그 이후에는 USB 전선이 전환 없이 SUSPEND 상태로 진입합니다.
키보드나 마우스를 터치하면 "Wake-UP" 이벤트가 생성되고 호스트는 USB 트래픽 및 통신 폴링을 재개합니다. 예, 이 RESUME은 일반적인 폴링보다 더 오랜 시간(15-20-50ms)이 걸리며 전체 시스템이 어느 정도 잠자기 상태가 되면 더 오랜 시간이 걸리므로 사용자는 "키보드 지연"으로 인해 좌절감을 느낄 수 있습니다. 그러나 이 능동적으로 관리되는 일시 중지 기능은 배터리 수명을 절약해 줍니다.
데스크톱 PC에서 영화만 보는 경우에는 전력 소비에 대한 우려가 덜하며, 더 공격적인 절전을 가능하게 하는 구성 설정이 있을 수 있지만 키보드 폴링은 절대 멈추지 않을 가능성이 높습니다.
USB와 달리 PS/2 인터페이스는 키보드/마우스 측에서 통신 트래픽을 적극적으로 생성할 수 있으므로 호스트에서 폴링하지 않고도 인터페이스가 비활성 상태를 유지할 수 있습니다.