Почему не USB-прерывание? - PullRequest
13 голосов
/ 16 августа 2011

Каково обоснование того, что USB является механизмом опроса, а не управляемым прерыванием?Ответы, которые я могу придумать с некоторыми рассуждениями:

  • Оставьте контроль над эффективностью обработки и детализацией для ОС, а не для самого устройства.
  • Предотвращение "штормов прерывания" неисправными устройствами.

Некоторые объяснения в сети, которые я нашел, говорят, что это в основном из-за природы USB-устройств.В основном это системы на основе микроконтроллеров, которые не могут ставить в очередь большие передачи, поэтому требуют коротких интервалов прерывания, и такие короткие интервалы прерывания могут быть не самыми эффективными.Это правда?

Могут ли быть другие причины?

Ответы [ 2 ]

15 голосов
/ 16 августа 2011

Главной предпосылкой развития USB были "дешевые чипсы". Это было сделано с помощью опроса, что снижает необходимость в более высоком арбитражном протоколе.

Firewire, который допускал прерывания от устройств и даже DMA, был намного дороже. Таким образом, USB победил в области с низкими затратами, и FireWire в области с малой задержкой / низкими издержками / .... Благодаря истории USB более или менее выиграл.

6 голосов
/ 16 августа 2011

Каково обоснование для того, чтобы сделать USB механизмом опроса, а не управляемым прерыванием?

Похоже, что это анти-USB FUD (как в Fear-Unterminy-Doubt).

Причина в том, что это несколько упрощает вещи на уровне аппаратного обеспечения - например, никаких коллизий. USB полудуплексный, чтобы уменьшить количество проводов в кабеле, так что только one может говорить в любом случае.

Хотя USB использует опрос по проводам, как только вы используете его в программном обеспечении, вы заметите, что у вас есть прерывания в USB. Единственная проблема заключается в небольшом увеличении времени ожидания, которое в большинстве случаев незначительно. Поскольку опрос обычно выполняется в аппаратном IIRC, программное обеспечение получает уведомление только при наличии новых данных.

На уровне программного обеспечения существуют так называемые «конечные точки прерывания» - и угадайте, что их использует каждое устройство HID: мыши, клавиатура и джостики являются HID.

...