Andere verbeteringen
Een andere sterke verbetering ten opzichte van de vorige versie is dat USB 3.0 full duplex is, zodat er tegelijkertijd data verstuurd én ontvangen kan worden. Eerdere versies waren half duplex. Daarnaast heeft er ook een aanzienlijke verbetering plaatsgevonden op het gebied van energiebeheer. Apparaten kunnen nu in verschillende energiebesparende modi worden gezet. Zo gaan apparaten in slaapstand op het moment dat deze niet gebruikt worden, maar kunnen ze ook razendsnel weer worden ‘gewekt’. Een externe harde schijf bijvoorbeeld kan op deze manier een stuk energiezuiniger werken.
USB was altijd een notoire stroomverbruiker, wat met name voor de notebookgebruikers onder ons allesbehalve prettig is. Het zit hem in het feit dat het USB protocol van het zogeheten polled model is. Dit houdt in dat de USB host constant vraagt aan het USB device of er nog data is die moet worden overgedragen. Dit is uitermate inefficiënt, temeer omdat een aanzienlijk deel van het platform (lees: de chipset) gebruikt wordt bij deze activiteit: USB houdt als het ware de halve computer uit zijn slaap. Dit wordt nu anders opgelost. Op het moment dat de USB host vraagt aan een USB device of er nog data is die overgedragen moet worden, en het USB apparaat geeft een zogenaamde NAK (ofwel, nee er is geen data voorhanden) dan kan de USB host dit nu in zijn eigen cache geheugen opslaan. Deze cache is net groot genoeg om het negatief antwoord (NAK) op een transfer verzoek op te slaan. Het grote voordeel is dat de rest van de chipset nu met rust gelaten wordt, in plaats van uit een low power state gehaald te worden, louter om ‘nee te verkopen’.
De reden dat USB standaarden altijd polled zijn, komt voort uit het feit dat dit een relatief eenvoudig maar bovenal goedkoop model oplevert. En dat past weer in de strategie om een goedkope standaard te creëren.
Ondanks de verbetering dat polling niet meer continue zal verhinderen dat een platform in low power modus verblijft, is niet alles rozegeur en maneschijn bij de nieuwe standaard. Op het moment dat er wél dataoverdracht plaatsvindt, zijn er in totaal vijf cycli nodig om de data daadwerkelijk over te dragen. Dit in tegenstelling tot het PCI model die er maar twee nodig heeft. Puur omdat er data transfer plaatsvind, moeten de CPU en het geheugen meerdere malen benaderd worden. Er vindt dus over de gehele chipset activiteit plaats om alleen het USB apparaat te bedienen. Hoe dit er in de praktijk precies uitziet, kun je in de onderstaande afbeelding zien. Toegegeven, het gaat om hooguit 15W, maar het telt wel degelijk mee onder de streep. Helaas is dit niet veranderd met de komst van versie 3.0.
Een van de voordelen van USB 2.0 was de mogelijkheid om stroom te leveren aan aangesloten apparaten. Dit is doorgezet in de nieuwe standaard. Waar de 2.0 versie 500mA kon transporteren is dit met 80% verhoogd tot 900mA. Hiermee is voor meer soorten randapparatuur de noodzaak verdwenen om deze met een externe energiebron te verbinden.
Versimpelde weergave van USB data overdracht (polled):
1) USB host vraagt aan het geheugen ‘scheduling’ informatie op
2) De geheugencontroller benadert de CPU hiervoor
3) USB host vraagt de data van het USB apparaat op en ontvangt deze
4) De data wordt naar het geheugen geschreven
5) De geheugencontroller moet hiervoor weer de CPU benaderen