L’USB 3.0 offre non solo nuove prestazioni da primato in termini di velocità di trasferimento, ma anche nuove opportunità per prolungare la vita dei dispositivi a batteria, sia che siano “host” o “device”, grazie ad una serie di caratteristiche che operano in maniera indipendente a livello hardware.
Introduzione
Ogni progettista di dispositivi a batteria ha come obiettivo quello di estendere il più possibile la vita delle batterie. Per queste ragioni il mercato dei dispositivi portatili si sta focalizzando sempre di più sul problema della gestione dei consumi. Molti dei prodotti più diffusi sul mercato elettronico ne sono interessati: laptop, netbook, smartphone e tablet, e la ricerca del componente più efficiente è divenuta ormai una costante. In questo contesto l’arrivo dell’USB 3.0 fornisce una nuova opportunità per aumentare ulteriormente la vita delle batterie.
UN PO’ DI STORIA
Originariamente pensato per superare i problemi del modello APM (Advanced Power Management), l’Advanced Configuration and Power Interface, o ACPI, fu introdotto nel 1997. Questa specifica porta alcuni concetti del mondo “power” in ambiti che prima ne erano estranei, come il BIOS, l’hardware di sistema e il software. La Specifica ACPI consente di definire delle tabelle nel BIOS per definire le modalità di alimentazione delle singole periferiche. Il sistema operativo usa queste specifiche per decidere quando commutare un dispositivo, o l’intero sistema, da uno stato all’altro. Con la specifica USB 2.0 abbiamo assistito al primo tentativo di supportare tutto ciò con un approccio basato sul software e sui concetti di “suspend” e “resume” per mettere il bus in modalità di basso consumo. In ogni caso, questa implementazione in stile ACPI è stata affetta da problemi di stabilità e lunghe attese, tanto che in molti casi questi meccanismi venivano disabilitati dagli utenti. Va detto che implementare una politica di power management per l’USB non è cosa facile. Il bus USB è previsto per collegare periferiche con funzioni anche molto diverse tra loro e in grado di sfruttare più o meno intensamente la banda di comunicazione a disposizione. Molti dispositivi rimangono in idle per lunghi periodi, inoltre, la tendenza per i dispositivi di ricarica è quella di sfruttare la potenza a disposizione sulle porte USB. Con l’USB 2.0 il modello di power management fu arricchito con l’introduzione del Link Power Management (LPM) grazie alla specifica EHCI 1.1. Le transizioni di stato LPM sono simili al meccanismo suspend/resume definito nella specifica USB 2.0, tuttavia, definiscono un meccanismo per commutare velocemente una porta di “root” dallo stato di “enabled” (L0) a un nuovo stato di “sleep” (L1). Implementare la politica LPM richiede modifiche sia a livello di chip che a livello di software e tutto questo ha rallentato l’introduzione sul mercato. In Tabella 1 vengono mostrate le condizioni di ingresso e uscita dagli stati LPM.
ARRIVA USB 3.0
L’USB Implementers Forum (USB-IF) ha constatato che l’utilizzo massiccio del protocollo USB, quasi diventato uno standard per tanti prodotti, necessitava di un miglioramento sotto l’aspetto dell’efficienza energetica, facendola diventare una dei punti focali della nuova interfaccia SuperSpeed USB. Per garantire la retro-compatibilità, i dispositivi USB 3.0 devono supportare le velocità definite nella specifica 2.0 oltre che la nuova velocità definita dalla specifica 3.0. I dispositivi USB 3.0 continuano ad avere controller e livelli fisici separati per le velocità “full” e “high speed”, rispetto alla “SuperSpeed”. Per assicurare che i vantaggi a livello di alimentazione introdotti con l’USB 3.0 non vengano meno quando il dispositivo viene collegato ad una porta 2.0, tutte le porte di tipo 3.0 devono supportare le specifiche LPM quando operano a high/full speed. Ovviamente, i prodotti certificati, sui quali è apposto il logo USB subiscono dei test dedicati per essere sicuri di soddisfare i requisiti necessari. L’USB SuperSpeed utilizza due coppie di segnali differenziali che lavorano a frequenza di 5 GHz per garantire un aumento delle prestazioni pari a 10x rispetto alla high speed. Tutto questo senza penalizzare il consumo di potenza, che viene stimato all’incirca il 25% in meno rispetto alla velocità high-speed. Queste prestazioni risultano possibili perché alcuni problemi di architettura circuitale che affliggevano la specifica USB 2.0 sono stati risolti e migliorati nella specifica 3.0, in particolare:
- È stato eliminato il “device polling” consentendo ai dispositivi di segnalare in maniera asincrona quando necessitano di essere serviti dall’host.
- La possibilità per le porte di iniziare la procedura per l’ingresso in low power.
- La capacità delle porte di rimuovere l’alimentazione da tutta la loro circuiteria.
- La capacità di utilizzare il “data streaming” per i trasferimenti “bulk”.
- Una sequenza più efficiente di “token/data/handshake”.
- L’aggiunta del “packet routing”, che elimina la necessità di fare il broadcast del pacchetto a tutti gli endpoint in downstream in un hub.
In aggiunta a questi cambiamenti, l’USB 3.0 migliora l’efficienza implementando il power management a livello di link, per avere la più alta velocità e precisione nel gestire il consumo di energia. In Figura 1 viene mostrato il risparmio di energia utilizzando un trasferimento SuperSpeed rispetto all’high speed per trasferire 20 Mbyte di dati.
In Tabella 2 invece sono elencati i quattro stati di power per la specifica USB 3.0. Ogni stato via via riduce la potenza istantanea utilizzata, aumentando di conseguenza anche la latenza per uscire dallo stato stesso. Questo metodo fornisce un modello molto più adattativo per la gestione dei consumi, che utilizza timer e lo stato di collegamento per ridurre l’assorbimento del dispositivo. Le specifiche di come il dispositivo deve ridurre la potenza, tuttavia, sono lasciate al costruttore. Molti dei più recenti dispositivi USB 3.0 fanno affidamento su un timer di inattività per l’ingresso nello stato U1. Nello stato U1 viene ridotto il consumo spegnendo il PHY SuperSpeed. Man mano che il periodo di inattività aumenta, sempre più parti dell’interfaccia vengono spente. In alcuni casi può capitare che l’host immediatamente richieda di commutare allo stato di suspend U3 durante i periodi di idle, questo approccio molto rigido spesso è legato ad alcune classi di dispositivi che, ad esempio, hanno lunghi periodi di inattività e la richiesta di ridurre i consumi arriva dai livelli software superiori (class driver per esempio).
CONFIGURARE UN DISPOSITIVO USB 3.0 PER LA GESTIONE ENERGETICA
Sono essenzialmente 4 i passi per configurare un dispositivo USB 3.0 per gestire il power management:
- Il dispositivo deve dichiarare il proprio livello di supporto al meccanismo di power management con i propri “endpoint descriptor”. Ovviamente, per i dispositivi certificati SuperSpeed il supporto deve essere completo, ma nulla vieta che ci siano dispositivi che non vengono certificati che si fanno degli sconti.
- L’host deve inviare un pacchetto di SET_FEATURE contenente l’informazione U1/U2_ENABLE durante la configurazione. Alternativamente, alcuni dispositivi che hanno un uso sporadico, vanno direttamente in low-power state. I livelli superiori necessitano di un meccanismo per abilitare (o disabilitare) la capacità della porta di upstream di richiedere l’ingresso in low-power. Quando viene ricevuta l’informazione di U1/U2_ENABLE la porta di upstream può iniziare ad entrare nello stato di U1/U2.
- L’host deve inviare un pacchetto LMP (Link Management Packet) per definire i timeout di inattività per U1/U2. Il valore di questi timer consente all’host di definire l’intervallo di tempo delle transizioni U0→U1 e U1→U2. Questi timer forniscono la flessibilità di ritardare le transizioni tra i power state per applicazioni specifiche, come per esempio i masterizzatori blu-Ray, che possono soffrire problemi di utilizzo se ci sono ritardi e tempi lunghi nelle risposte. I timeout per U1 e U2 possono arrivare fino a 127 μs e 65 ms, rispettivamente. Inviare un pacchetto LMP con il timeout per U1 implicitamente abilita la porta di host a iniziare le transizioni U1 e U2.
- L’host informa il dispositivo delle latenze di uscita del sistema dagli stati U1/U2 utilizzando il pacchetto di SET_SEL. Ossia SEL è il tempo per passare da U1/U2 a U0 e serve come meccanismo per i layer superiori per ridurre o, se necessario, disabilitare l’ingresso in U1/ U2 se, per esempio, la latenza di uscita del sistema è maggiore dei tempi di servizio richiesti da device isocroni.
In Figura 2 è possibile uno scambio di pacchetti tra host e device durante la fase di configurazione del power management.