Wird die Abfrage einer USB-Tastatur normalerweise langsamer, wenn sie nicht verwendet wird?

Wird die Abfrage einer USB-Tastatur normalerweise langsamer, wenn sie nicht verwendet wird?

Die schnellsten USB-Tastaturen, die ich finden kann, verwenden USB 2.0 mit 1000-Hz-Polling.

Wenn ich nur einen Film anschaue und diese Tastatur stundenlang nicht berühre, wird die Hin- und Her-USB-Kommunikation dann wirklich alle ms wiederholt? Oder wechsle ich normalerweise in eine Art USB-Ruhezustand (z. B. 1-Hz-Polling)?

Mein Verständnisbesteht darin, dass der PC alle ms mit einer IN-Anforderung beginnen sollte, die Tastatur dann eine DATA-Antwort senden sollte (mit der Meldung „Es wurden keine Tasten gedrückt“) und der PC dann eine ACK-Antwort senden sollte.

Ich stelle diese Frage, weil mir das alles verschwenderisch erscheint … aber vielleicht ist es keine große Sache.

(Diese Frage bezieht sich auf normale Windows-PCs, aber ich bin auch neugierig auf Android-Geräte. Übrigens denke ichPS/2Tastaturen verfügen über keine Hin- und Her-Kommunikation über das PS/2-Kabel, wenn die Tastatur nicht berührt wird, aber korrigieren Sie mich bitte, wenn ich falsch liege.)

Antwort1

Wird das Polling einer USB-Tastatur normalerweise langsamer, wenn es nicht verwendet wird?

Nein, das System kann nicht erkennen, wann die Tastatur"nicht benutzt"im Voraus.
Sie als Benutzer wissen, dass Sie die Tastatur nicht verwenden, aber das System kann Ihre Absichten nicht erkennen.

Um eine konsistente und zeitgerechte Bedienung aller angeschlossenen Geräte zu gewährleisten, ist eine Abfrage der Geräte auf dem USB-Bus erforderlich.
Ereignisgesteuerte Schemata (z. B. unter Verwendung von Interrupts) erfordern komplexere adaptive Workarounds, um ein Aushungern von Geräten mit niedriger Priorität oder geringer Aktivität zu vermeiden.

... wird die Hin- und Her-USB-Kommunikation wirklich weiterhin jede Millisekunde wiederholt?

Ja, das ist die Definition des USB-Protokolls für die bidirektionale Kommunikation auf einem gemeinsam genutzten Medium.

oder wechsle ich normalerweise in eine Art USB-Ruhezustand (z. B. 1-Hz-Polling)?

Nein.
Es gibt keine Strafe für das Polling, wenn der Bus andernfalls im Leerlauf wäre.
Ein Polling mit adaptiver Rate könnte mit erhöhter Komplexität implementiert werden, wobei die Reaktionszeit entsprechend darunter leiden würde.

Beachten Sie, dass diese Abfrage normalerweise hauptsächlich vom USB-Controller des Hosts und nicht von der CPU des USB-Hosts durchgeführt wird. Diese Abfrage kann nur minimale Auswirkungen oder Belastungen auf den PC-Prozessor oder das Betriebssystem haben.


USB ist ein Standard, der in Hardware und Software implementiert ist. Die Implementierung auf der Betriebssystemsoftwareseite dürfte für alle Betriebssysteme, einschließlich Windows und Android, ähnlich sein.

Beispielsweise wird die Abfragerate des USB-Geräts vom Gerät selbst festgelegt und ist keine Entscheidung des Host-Betriebssystems.
Diese Abfragerate wird in derEndpunktdeskriptorund kann zwischen „1 ms für Geräte mit niedriger/hoher Geschwindigkeit und 125 µs für Geräte mit hoher Geschwindigkeit“ liegen.


Ich denke, bei PS/2-Tastaturen gibt es keine Hin- und Her-Kommunikation über das PS/2-Kabel, wenn die Tastatur nicht berührt wird.

Eine PS/2-Schnittstelle verwendet eine Taktleitung, um die Richtung der Halbduplex-Kommunikation auszuhandeln, während USB ein gemeinsam genutzter Halbduplex-Bus ist, der auf einem zeitlichen Master-Slave-Protokoll basiert.
Ein PS/2-Gerät kann jederzeit senden, es sei denn, der PC-Host setzt die Taktleitung auf „Low“, wodurch das PS/2-Gerät gezwungen wird, die Übertragung zu stoppen.

Antwort2

Wenn ich nur einen Film anschaue und diese Tastatur stundenlang nicht berühre, wird die Hin- und Her-USB-Kommunikation dann wirklich alle ms wiederholt? Oder wechsle ich normalerweise in eine Art USB-Ruhezustand (z. B. 1-Hz-Polling)?

jede ms sollte der PC mit einer IN-Anforderung beginnen

Tatsächlich findet „Kommunikation“ nicht wirklich jede ms statt. Es stimmt jedoch, dass Low-Speed-USB-Hosts den Bus kontinuierlich jede ms mit „Keep-Alive“ pulsieren. Dies wird als „USB-Frames“ bezeichnet. Es findet hier also keine tatsächliche Kommunikation statt.

Die „Kommunikation“ erfolgt nur, wenn der Host eine Polling-Anforderung (IN) sendet, wie Sie richtig bemerkt haben. Die normale Polling-Rate für Windows beträgt 8 ms, einmal pro 8 Frames, aber es kommt darauf an. Wenn ein proprietärer Treiber verwendet wird, wie Sie sagten, als „Gaming-Tastatur“, kann das Polling alle 1 ms erfolgen.

Ja, es ist ein verschwenderischer Prozess, das stimmt. Deshalb verwenden die meisten tragbaren Geräte Energiespartechniken. Anstatt die Abfragerate zu verlangsamen, verwenden sie die Standardfunktion USB_SUSPEND. Wenn ihr interner Algorithmus feststellt, dass keine neuen Informationen von Tastatur oder Maus kommen, setzt der Host jedes HID (Human-Interface-Device) selektiv außer Betrieb. Die Eintrittslatenz in den SUSPEND-Zustand beträgt 8 ms. Wenn ich mich richtig erinnere, beträgt das Inaktivitäts-Timeout ~200 ms, danach wechseln die USB-Kabel in den SUSPEND-Zustand, kein Umschalten.

Wenn Sie eine Tastatur oder Maus berühren, wird ein „Wake-UP“-Ereignis generiert und der Host nimmt den USB-Datenverkehr und die Kommunikationsabfrage wieder auf. Ja, diese Wiederaufnahme dauert länger als die normale Abfrage, 15-20-50 ms, und sogar noch länger, wenn das gesamte System bis zu einem gewissen Grad einschläft, sodass Benutzer möglicherweise über „Tastaturverzögerungen“ frustriert sind. Aber diese aktiv verwaltete Suspend-Funktion spart tatsächlich Batterielebensdauer.

Wenn Sie auf einem Desktop-PC nur einen Film ansehen, ist der Stromverbrauch weniger besorgniserregend und die Abfrage Ihrer Tastatur wird wahrscheinlich nie beendet, obwohl es Konfigurationseinstellungen geben könnte, die ein drastischeres Energiesparen ermöglichen.

Anders als USB kann die PS/2-Schnittstelle aktiv Kommunikationsverkehr von der Tastatur-/Mausseite aus generieren, sodass die Schnittstelle ohne Abfrage vom Host inaktiv bleiben kann.

verwandte Informationen