Zajímalo by mě, jestli všechny tyhle věci jako kde je kolik paketů za sebou atd, je v režii ovladače usb hosta, nebo jestli to dělá nějaký speciální USB chip? Pokud ty jednotlivé stavy atd řídí ovladač, pak mě nepřekvapuje, že USB tolik zatěžuje CPU.
Řadiče USB (UHCI, OHCI, EHCI) vypadají asi tak, že mají seznam front pro jednotlivé endpointy, a ke každé frontě seznam deskriptorů s pointery na data. Řadič to pak sám hardwarově prochází bez účasti procesoru --- cyklí přes seznam front a z každé fronty se snaží poslat jeden packet.
Na UHCI je třeba do front dávat rovnou packety o velikosti 64 bytů (t.j. driver ke každým 64 bytům dat musí vytvářet strukturu popisující packet). OHCI a EHCI jsou kvalitnější, tam stačí dát velký blok dat a řadič si ho sám rozseká na packety.