¿El sondeo de un teclado USB normalmente se ralentiza si no se utiliza?

¿El sondeo de un teclado USB normalmente se ralentiza si no se utiliza?

Los teclados USB más rápidos que puedo encontrar utilizan USB 2.0 con sondeo de 1000 Hz.

Si simplemente veo una película y no toco este teclado durante horas, ¿la comunicación USB de ida y vuelta realmente continúa repitiéndose cada ms? ¿O normalmente entraré en algún tipo de estado de suspensión del USB (por ejemplo, sondeo de 1 Hz)?

Mi entendimientoes que, cada ms, la PC debe comenzar con una solicitud IN, el teclado debe enviar una respuesta de DATOS (que diga "no se ha presionado ninguna tecla") y la PC debe enviar una respuesta ACK.

Entonces, hago esta pregunta porque todo parece un desperdicio... pero tal vez no sea gran cosa.

(Esta pregunta es sobre PC normales con Windows, pero también tengo curiosidad por los dispositivos Android. Por cierto, creoPS/2Los teclados no tienen ninguna comunicación de ida y vuelta a través del cable PS/2 si no se toca el teclado, pero corríjanme si me equivoco).

Respuesta1

¿El sondeo de un teclado USB normalmente se ralentiza si no se utiliza?

No, el sistema no puede saber cuándo el teclado está"no utilizado"con anticipación.
Tú, el usuario, sabes que no estás usando el teclado, pero el sistema no puede detectar tus intenciones.

Se requiere el sondeo de dispositivos en el bus USB para garantizar un servicio consistente y oportuno de todos los dispositivos conectados.
Los esquemas impulsados ​​por eventos (por ejemplo, el uso de interrupciones) requieren soluciones adaptativas más complejas para evitar la inanición de dispositivos de baja prioridad o baja actividad.

... ¿la comunicación USB de ida y vuelta realmente continúa repitiéndose cada ms?

Sí, esa es la definición del protocolo USB para comunicación bidireccional en un medio compartido.

¿O normalmente entraré en algún tipo de estado de suspensión del USB (por ejemplo, sondeo de 1 Hz)?

No.
No hay penalización por votar si el autobús estaría inactivo.
Se podría implementar una encuesta de tasa adaptativa con mayor complejidad y el tiempo de respuesta se vería afectado en consecuencia.

Tenga en cuenta que este sondeo normalmente lo realiza principalmente el controlador USB del host y no la CPU del host USB. Este sondeo puede tener un impacto o una carga mínimos en el procesador o el sistema operativo de la PC.


USB es un estándar que se implementa en hardware y software. Se espera que el lado del software del sistema operativo de la implementación sea similar para cualquier sistema operativo, incluidos Windows y Android.

Por ejemplo, la tasa de sondeo del dispositivo USB la especifica el propio dispositivo y no es una decisión del sistema operativo host.
Esta tasa de votación se especifica en elDescriptor de punto finaly puede variar desde "1 ms para dispositivos de velocidad baja/completa y 125 us para dispositivos de alta velocidad".


Creo que los teclados PS/2 no tienen ninguna comunicación de ida y vuelta a través del cable PS/2 si no se toca el teclado.

Una interfaz PS/2 utiliza una línea de reloj para negociar la dirección de la comunicación semidúplex, mientras que USB es un bus semidúplex compartido que se basa en un protocolo temporal maestro-esclavo.
Un dispositivo PS/2 puede transmitir en cualquier momento a menos que el host de la PC baje la línea del reloj, lo que obliga al dispositivo PS/2 a dejar de transmitir.

Respuesta2

Si simplemente veo una película y no toco este teclado durante horas, ¿la comunicación USB de ida y vuelta realmente continúa repitiéndose cada ms? ¿O normalmente entraré en algún tipo de estado de suspensión del USB (por ejemplo, sondeo de 1 Hz)?

cada ms, la PC debería iniciar las cosas con una solicitud IN

En realidad, la "comunicación" no ocurre en cada ms. Pero es cierto que los hosts USB de baja velocidad pulsan continuamente el bus con "mantenimiento" cada ms. Esto se llama "Marcos USB". Así que aquí no se produce ninguna comunicación real.

La "comunicación" ocurre sólo cuando el anfitrión envía una solicitud de sondeo (IN), como usted correctamente señaló. La tasa de sondeo normal para Windows es de 8 ms, una vez cada 8 fotogramas, pero depende. Si se utiliza un controlador propietario, como "teclado para juegos", como usted dijo, el sondeo puede realizarse cada 1 ms.

Sí, es un proceso inútil, cierto. Es por eso que la mayoría de los dispositivos portátiles emplean técnicas de ahorro de energía. En lugar de reducir la velocidad de sondeo, utilizan la función USB_SUSPEND estándar. Si su algoritmo interno determina que no sale nueva información del teclado o el mouse, el host suspenderá selectivamente cada HID (dispositivo de interfaz humana). La latencia de entrada al estado SUSPENDER es de 8 ms. Si no recuerdo mal, el tiempo de espera de inactividad es de ~200 ms, después del cual los cables USB entran en estado SUSPENDER, sin alternar.

Cuando toque un teclado o mouse, generarán un evento de "despertador" y el host REANUDARÁ el tráfico USB y el sondeo de comunicación. Sí, este RESUME lleva más tiempo que el sondeo habitual, 15-20-50 ms, e incluso más si todo el sistema queda dormido hasta cierto punto, por lo que los usuarios pueden sentirse frustrados con el "retraso del teclado". Pero esta funcionalidad de suspensión administrada activamente salva la vida útil de la batería.

Si simplemente mira una película en una PC de escritorio, el consumo de energía es una preocupación menor y es probable que el sondeo de su teclado nunca se detenga, aunque podría haber opciones de configuración que permitan ahorros de energía más agresivos.

A diferencia de USB, la interfaz PS/2 puede generar activamente tráfico de comunicación desde el lado del teclado/ratón, por lo que la interfaz puede permanecer inactiva sin sondear desde el host.

información relacionada