Why is not USB interrupt-driven?

Sedat Kapanoglu picture Sedat Kapanoglu · Aug 16, 2011 · Viewed 12.2k times · Source

What's the rationale behind making USB a polling mechanism rather than interrupt-driven? The answers I can come up with some reasoning are:

  • Leave control of processing efficiency and granularity to OS, rather than the device itself.
  • Prevent "interrupt storms" by faulty devices.

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?

Answer

Christopher picture Christopher · Aug 16, 2011

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.