Leserartikel Latenz in Tastaturen

Status
Für weitere Antworten geschlossen.

NamenIos

Lieutenant
Registriert
Dez. 2005
Beiträge
620
Latenz in Tastaturen



Motivation

Immer häufiger kommt die Frage auf, ob USB Hubs die Tastatureingaben verzögern oder ob PS/2 USB überlegen ist. So wie der Input Lag beim Monitor scheinen Verzögerungen eine wichtige Rolle bei manchen Spielern einzunehmen. Leider gab es bisher keine mir bekannten Untersuchungen, ob es Verzögerungen gibt und wie groß sie sind. Auch wurde der Einfluss der Anschlussmöglichkeiten bisher nur auf der theoretischen Seite betrachtet. Um etwas Klarheit in das Thema zu bringen, wollte ich das ganze mal etwas näher zu untersuchen.


Vorüberlegung: Wie funktioniert eine Tastatur und was verursacht Latenzen?

Ein Tastendruck ist ein einfaches Schließen eines Tasters, dies muss der Tastaturcontroller auslesen, verarbeiten und über das USB oder PS/2 Protokoll an den Computer senden. Der Computer muss das Signal noch verarbeiten, hier gibt es theoretisch auch Unterschiede (PS/2 ist interruptbasiert). Für das komplexe Thema USB ist das Buch USB2.0 aus dem Franzis Verlag ein guter Einstieg. Frei im Internet gibt es auch noch Informationen auf der offiziellen USB Seite, siehe 1 und 2. Für PS/2 ist deutsche Übersetzung von Adam Chapweskes Artikel The PS/2 Keyboard Interface sehr gut.

Das Auslesen von 105 Tastern erfolgt spaltenweise über die in einer Matrix angeordneten Taster. Für genauere Information lege ich euch Keyboard Matrix Help von Dave Dribin nahe.
Der Keyboardcontroller muss diese Informationen verarbeiten, dazu gehört in der Regel eine Entprellung und das Aufbereiten der Daten für eine Übertragung. Das wäre unter anderem bei USB die Begrenzung von 6 Tasten und das Erstellen des Datenpakets und bei PS/2 das Vergleichen mit dem vorherigen Zustand um Veränderungen in den Sendebuffer zu schreiben.
Gegebenenfalls muss der USB-Treiber die Tastatureingaben noch verarbeiten.


Messaufbau

Da ich leider keinen parallelen Port mehr habe, musste ich meinen seriellen Port benutzen und die RTS Leitung missbrauchen. Mit dem -12V/+12V Pegel schalte ich einen NPN Transistor durch bzw. sperre ihn. Die Massereferenz bringt die Tastatur mit, so habe ich kein Problem mit negativer Logik. Für die Messung lege ich mit Hilfe von Messspitzen die Collector-Emitterstrecke über den Taster (bzw. einer Spalten und Reihe). So kann ich mit einem Programm die Tasten drücken.

Das Programm speichert den ersten Zeitpunkt (natürlich mit QueryPerformanceCounter), schaltet den Transistor durch und wartet auf eine Tasteneingabe. Darauf wird der zweite Zeitpunkt bestimmt und 64ms-320ms gewartet. Diese Wartezeit ist nötig, um realitätsnahe Ergebnisse zu erhalten, denn sobald ich eine feste Zeit warte liegen die Messwerte aufgrund der Pollingrate des Tastenscans und des USB-Protokolls viel näher zusammen. Diese Messungen führe ich 200-mal durch, das führt zu einer ausreichenden Messgenauigkeit bei moderater Messdauer.


Getestet Geräte

Meine verfügbaren Tastaturen, die ich aufschraube, sind leider sehr begrenzt. Daher müsst ihr euch vorerst mit einer reinen PS/2 Tastatur Marke Dell, einer USB/PS/2 G80-3000 (von Ende 2007), einer G-Series G-720 USB und dem Das Modell III zufriedengeben. Zusätzlich habe ich noch getestet, ob ein/zwei Hubs teils mit zwei gleichzeitigen Datenübertragungen und CPU Last sich negativ auswirken.


Die Ergebnisse

Ich kenne mich nicht wirklich gut mit Tabellenkalkulationen aus, und möchte mich nur für diesen Beitrag nicht darin einarbeiten. Wer bessere Tabellen machen möchte, dem stelle ich gerne die Messwerte zur Verfügung.
Ich lasse mal die Häufigkeitsverteilungen und Zahlen (ø=Durchschnittliche Dauer; σ=Standardabweichung) für sich sprechen:
usbhubtestv751.png

Die weiteren USB Tastaturen habe ich aus Bequemlichkeit am Monitorhub getestet.
tastaturps2usbtestv7jt.png

Update 29.07.: DIY USB Keyboard mit einer Taste:
eigenbauusbkeyboardbd57.png


Diese Verteilungen geben an wie häufig die Messung in einem bestimmten Intervall liegen. Mal am Beispiel der Dell Tastatur erklärt: Von 200 Messwerten lagen: erster
blauy77e.png
knapp 30 zwischen 22ms und 23ms, zweiter
blauy77e.png
gut 70 zwischen 23ms und 24ms usw.

Zu beachten ist auch der Intervall in dem die Latenz liegt.

Fazit

Wie man sieht, hat die Pollingrate des USB-Protokolls einen sehr großen Einfluss auf die Breite der Streuung der Verzögerung. Wenn die Pollingrate der Tastaturen auf 1ms gesetzt werden würde, wären wahrscheinlich alle USB Ergebnisse um 7ms zusammengeschoben. Allerdings scheint die Verarbeitungszeit des Controllers den größten Einfluss zu haben. Es wäre interessant weitere Tastaturen zu testen, die über einen passiven Adapter sowohl das PS/2 als auch das USB Protokoll unterstützen. Ich kann mir gut vorstellen, dass eine vorhersagbare Latenz wie sie die Dell Tastatur und mit Abstrichen auch die G-80 über PS/2 und die G-Series über USB haben weitaus genauer auszugleichen ist als eine breite Streuung der Latenz.

Um die Latenz an verschieden Rechnern zu testen, bräuchte man Referenzgeräte. Hier würde sich entweder eine verbreitete Tastatur anbieten oder ein Mikrocontroller, der beide Protokolle möglichst mit möglichst geringer Latenz anbietet. Interessant zu untersuchen wäre auch die minimale Zeit, in der die Reihenfolge zweier Tastendrücke unterschieden werden kann. Im September habe ich voraussichtlich etwas mehr Zeit, da werde ich mich unter Umständen dem Thema widmen, wenn mir keiner zuvor kommt. Mit der selben Messapparatur und einer kleinen Änderung im Programm könnte man auch die Latenz von Mausklicks messen.


Wer Lust hat diesen Artikel auf Englisch zu übersetzen kann das gerne machen, ansonsten werde ich mich irgendwann dransetzen. Wenn ihr den Artikel irgendwo anders Postet verlinkt bitte das Originalthema hier und macht mich per PM drauf aufmerksam.

Genauere Fragen zu den Diagrammen beantworte/ergänze ich gerne, ich habe erstmal ein paar Links und eine sehr grundlegende Erklärung hinzugefügt.
 
Zuletzt bearbeitet von einem Moderator: (wiederhergestellt)
Schade, dass man das nicht wirklich auf DAU Niveau bringen kann. Eine Liste mit vielen Messergebnissen verschiedener Tastaturen wäre schon verdammt geil.

Gute Idee!
 
Ist echt interessant dein Artikel, jedoch kann ich aus den Diagrammen nicht wirklich was herauslesen :(
 
Nun so schwierig sind die Diagramme nicht zu verstehen:

Stellt halt die Häufigkeitsverteilung dar. 20 Messwerte ergeben eine Verzögerung von 10 ms, 20 eine von 20 ms usw.
 
Ein Update, Messung mit Eigenbau USB Controller. Wie man sieht ist die USB Schnittstelle nicht das Problem. Vielleicht könnte man die Geschwindigkeit sogar noch etwas optimieren. Der Mikrocontroller kostet für den Endverbraucher als Einzelbestellung nichtmal 10€.
 
Zuletzt bearbeitet von einem Moderator:
zur Info:
der Startpost ist nicht mehr aktuell und wird vom TE nicht weiter gepflegt.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben