Hacker News new | ask | show | jobs
by snarfy 1620 days ago
There are a variety of factors that add up to many ms of lag. USB and HDMI are a few that come to mind. USB is incredibly complex when compared to e.g. ps/2. If you are building an embedded board like rasberry pi and you want to add ps/2, you just add a couple pins. If you want to add usb, you buy an extra chip.
2 comments

Many CPUs have USB support. Pin count also doesn't correlate to latency, what matters is the minimum buffer size and transfer speed.

USB can beat PS/2 for latency without issue.

Isn't PS/2 interrupt based, while USB is based on periodic polling?
Polling is often lower latency than interrupts on modern hardware, since it can run at much finer grains and has so much less overhead to startup over an ISR.
That's often true on a scale of microseconds, but USB input devices are polled at intervals on millisecond scale.
Only in the slowest modes. It is possible to go faster than the 1ms poll rate, though it is back to interrupts:

> Transaction latency

> For low speed (1.5 Mbit/s) and full speed (12 Mbit/s) devices the shortest time for a transaction in one direction is 1 ms.[6] High speed (480 Mbit/s) uses transactions within each micro frame (125 µs)[7] where using 1-byte interrupt packet results in a minimal response time of 940 ns. 4-byte interrupt packet results in 984 ns.

https://www.wikipedia.org/wiki/USB_(Communications)

Ben Eater has a good video on this:

https://youtu.be/wdgULBpRoXk?t=1765

> If you want to add usb, you buy an extra chip.

Do you know how many chips are in a cable modem/router combo?

1 or 2, depends on the kind of modem. VDSL2+ modems might have three, though one of those is the line driver which is zero-delay for the purposes of a computer.
I've seen many more chips last time I opened one....
Most of those chips have zero impact on latency, and many aren't even involved in the actual packet flow.
Modems/routers don't use polling nor do they need debouncing. The default USB polling rate is 125Hz, which is already 8ms of latency. Debouncing depends on the switch and is generally a couple milliseconds as well.