( XMI | 2024. 11. 15., p – 15:00 )

Nem "költői túlzás" hanem óriási irónia. Kb pont az ellenkezője igaz. Az USB egy igencsak bonyolult dolog. Ha azt mondanám, hogy jobban emlékeztet egy számítógép-hálózatra, mint soros-portra még akkor is túlegyszerűsítek. Lehet, hogy a vezetéken egyszerűen csak packet-ek mennek át, de a packet-ek jelentős részét a host controller hardver maga értelmezi és csinál vele valamit.

Elég komplikált routing megoldás van a hubok (akár fizikai, akár csak virtuálisan létezők), van bridge-elés a különböző (1, 2, 3) verziók között. Verziónként a topológia modelljében is vannak eltérések, továbbá a host fele hány PCI device-nak mutatják magukat, melyik port melyik PCI device-hoz tartozik (USB2-nél egy fizikai USB port egy UHCI és egy EHCI PCI device-hoz is egyszerre tartozik, de egy UHCI-hez 2 port tartozhat, viszont az EHCI-hez az összes), és hogy a rádugott periféria hol melyik host device-on fog felbukkanni, szintén eltér és ezt megintcsak "hardver" feladata megoldani, mielőtt egyáltalán az oprendszeren a driver (melyik?) értesülne a csatlakozó eszközről.

Rengeteg telekom-hálózokra jellemző megoldás is megjelenik benne, az időrés-foglalási mechanizmusban, a garantált latency és sávszélesség kezelésben (ebből  is többféle megoldás van és verziónként eltér).

Aztán vannak low-level rendszerbusz-jellegű funkciók, mint például üzenetjelzett Interrupt, vagy DMA. Aminek pont az a lényege, hogy a driver csak a felsetupolást (memóriaterült allokálása stb.) csinálja, a tényleges DMA műveletet a hardver már maga intézi, anélkül, hogy a driverre kerülne a vezérlés.

Szóval nagyon sokmindent a "hardver" csinál, nem a szoftver vagy OS driver. A "hardver" azért van idézőjelben, mert nyilván valami beágyazott firmware fut az USB vezérlőn, a funkciók nagy részéért valójában ez a felelős. Mindenesetre egy meglehetősen összetett felelősség-megosztás van az OS driverek és hardver beágyazott firmware-je között.