What's the rationale behind making USB a polling mechanism rather than interrupt-driven? The answers I can come up with some reasoning are:
Some explanations on the net that I found say that it's mostly because of the nature of USB devices. They are mostly microcontroller-based systems which cannot queue larger transfers therefore require short interrupt intervals and such short interrupt intervals may not be the most efficient. Is that true?
Could there be other reasons?
A USB device can support interrupt endpoints so that it can send or receive data at regular intervals. To accomplish that, the host polls the device at regular intervals and data is transmitted each time the host polls the device. Interrupt transfers are mostly used for getting interrupt data from the device.
Polling of devices on the USB bus is required in order to guarantee consistent and timely servicing of all connected devices. Event-driven schemes (e.g. using interrupts) require more-complex adaptive work-arounds to avoid starvation of low-priority or low-activity devices.
The bus uses USB Periodic Transactions called "Interrupt Pipe" to get keyboard data, which is formally a form of polling. Show activity on this post. Built-in keyboards use the method corresponding to the interface they use and that interface is usually either PS/2 or USB.
The overarching premise of the development of USB was, "cheap chips". This was done, through the use of polling, which reduces the need for a higher arbitration protocol.
Firewire, which did allow for interrupts from the devices and even DMA, was much more expensive. So USB won in the low-cost field, and firewire in low-latency/low-overhead/... field. Due to history USB more or less won.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With