Nel Febbraio 2011 NVIDIA ha presentato il progetto Kal-El (nome di chiara ispirazione Smallvilliana), per tutti noto come Tegra 3, un SoC (System on a Chip) con processore mobile quad-core, evoluzione del Tegra 2. Apparentemente, tutti i produttori di chip mobile furono concordi nel dire che la direzione intrapresa da NVIDIA fosse quella più giusta, ma effettivamente, a distanza di un anno e mezzo, esemplari di tablet e smartphone quad-core si contano ancora sulla punta delle dita. E le piattaforme quad-core sono ancora meno: oltre a Tegra 3, esiste la piattaforma Exynos del nuovo Samsung Galaxy S III, mentre siamo ancora in attesa di vedere sul mercato le prime implementazioni di Qualcomm SnapDragon S4 Pro. Complice di questa "pochezza" anche la nuova ondata di soluzioni dual-core, parecchio ottimizzate nell’architettura e disponibili a buon prezzo. Si pensi ad esempio all’accoppiata Cortex A9 e GPU Mali 400MP che Sony e Samsung hanno deciso di piazzare su telefoni dal costo accessibile o alle CPU Qualcomm S4 Krait che non temono il confronto con la concorrenza a quattro core.
Tegra 3 rimane dunque l’attuale piattaforma mobile più potente in assoluto, grazie al numero di core ed alle frequenze di funzionamento della CPU ed alla GPU collocata all’interno del SoC, nettamente più potente di quella utilizzata in Tegra 2 (che a sua volta continua ad essere, almeno sulla carta, più potente di tutta la concorrenza in circolazione).
I core a disposizione della CPU Tegra 3, volendo essere precisi, non sono quattro, bensì cinque, quattro Cortex A9 che funzionano, a seconda delle specifiche del rivenditore, a frequenze superiori al GHz e che vengono sfruttati per applicazioni intensive che richiedono l’interazione dell’utente, abbinati ad un Cortex A9 “singolo”, che viaggia a frequenze nettamente più basse (circa 500 MHz), utilizzato invece durante lo stand-by inattivo e attivo (sincronizzazione mail, social network, musica, etc.).
Le premesse sono parecchio buone, e apparentemente pure i risultati. O almeno così dovrebbe essere, perché, per quanto NVIDIA di promesse con Tegra 2 ne abbia fatte molte e molto rumorose, alla fine dei conti molto è rimasto solamente nei numeri dei benchmark, con scarsa ottimizzazione del software ed una politica nella distribuzione dei sorgenti dei driver è diametralmente opposta al concetto Open Source di Android. Questo si è tradotto in cellulari molto costosi, facilmente svalutabili, clienti insoddisfatti ed in un repentino abbandono della più potente piattaforma dual-core da parte della comunità dei modders, che non avendo materiale sul quale potersi concentrare per lo sviluppo software sono stati costretti ad alzare bandiera bianca.
La gestione di Tegra 3 per ora pare stia procedendo su binari diversi. Nel frattempo ci apprestiamo a fare un’analisi delle sue caratteristiche e delle sue innovazioni.
Ottimizzato per i Principali Utilizzi in Ambito Mobile
Lo studio delle statistiche dell’utilizzo del telefono da parte degli utenti, ha mostrato che solitamente i nostri terminali si trovano nella fase di stand-by attivo (sincronizzazione social network, meteo, mail, musica) per l’80% del tempo, mentre sono sottoposti ad utilizzo intensivo per il 20% del tempo (navigazione web, giochi, video e foto, ...).
Siccome la fase di stand-by attivo non richiede l’interazione dell’utente, non è necessario che venga svolta in maniera tale da risultare “fluida”, e può essere quindi delegata al singolo “Companion Core”, che operando a basse frequenze ed a bassi voltaggi permette di risparmiare energia. Inoltre NVIDIA ha pensato bene di rendere “trasparente” il quinto core alle applicazioni ed al sistema operativo, in maniera che non venga visto e usato nelle normali operazioni, ma che possa essere sfruttato dalla tecnologia vSMP (Variable Symmetric MultiProcessing) di Tegra3.
Ma nel concreto, quali sono i vantaggi di una simile architettura? I chip in silicio hanno un consumo di energia che è pari alla somma dell’energia di base che serve al funzionamento del processore ed all’Energia Dinamica (o variabile), che serve per il corretto funzionamento delle applicazioni.
Energia Totale = Energia di Base + Energia Dinamica
Mentre l’Energia di Base è un valore intrinseco della procedura tecnologica di costruzione (processo produttivo, materiali usati, schema), l’Energia Dinamica è invece proporzionale alla frequenza ed al quadrato della tensione di funzionamento.
Energia Dinamica = Frequenza x Voltaggio^2
Quando un processore sta operando vicino alla sua frequenza massima, la quota maggiore dell’energia totale è data dall’Energia Dinamica, mentre quando opera a frequenze basse la quota maggiore risulta quella dell’Energia di Base.
Il sistema di funzionamento a transistor dei componenti elettronici che sono utilizzati oggigiorno caratterizza i consumi dei nostri apparecchi elettronici, perciò le CPU costruite per operare ad alte frequenze hanno alti consumi in termini di Energia di Base, ma sono in grado di operare a frequenze elevate senza utilizzare tensioni altrettanto elevate e dunque mantenendo relativamete bassi i consumi. Le CPU costruite invece per operare a bassi consumi hanno una richiesta in termini di Energia di Base che è molto bassa, ma hanno consumi eccessivi quando è richiesto il funzionamento a piena frequenza, perché hanno necessità di innalzare di molto il voltaggio.
Al fine di ottimizzare consumi e potenza delle CPU, un SoC deve avere una precisa combinazione di core in silicio e ottimizzazioni in termini di istruzioni per questo tipo di tecnologia.
Variable Symmetric Multiprocessing
Il vSMP (Variable Symmetric Multiprocessing) è un brevetto di NVIDIA implementato per la prima volta sul progetto Kal-El che permette la gestione di Tegra 3 in maniera tale da poter fornire bassi consumi e prestazioni elevate. Il vSMP è in grado di distribuire il carico di lavoro sui core attraverso due software di gestione:
- il Dynamic Voltage anf Frequency Scaling (DVFS) che di occupa di gestire le frequenze delle varie CPU a seconda dei carichi
- il CPU Hot-Plug che si occupa dell’accensione e dello spegnimento dei vari core
L’utilizzo di questi due moduli software di basso livello contenuti all’interno del SoC fa sì che non ci sia bisogno di effettuare modifiche o implementazioni di codice sul sistema operativo, che da Android 2.2 sui telefonini e da HoneyComb 3.x sui tablet permette l’utilizzo di più CPU, con l'unica pecca di “intenderle” tutte con la stessa capacità di calcolo (questo è uno dei motivo per cui è stato necessario inserire un Companion Core identico ai core a prestazioni elevate).
I moduli sopra riportati effettuano un monitoraggio del carico di lavoro e il Governor della CPU garantisce l’accensione e lo spegnimento dei vari core. Tegra 3 è in grado di fare lo switch dinamico (automatico e quindi non percepibile dall’utente) dalla CPU a risparmio energetico a quelle a prestazioni elevate, ma è anche in grado di accendere o spegnere un numero variabile di core principali a seconda delle richieste del sistema operativo (e quindi delle applicazioni). A seconda dell’operazione che stiamo svolgendo la nostra richiesta in termini di potenza sarà differente, e sarà differente anche il consumo del dispositivo.
La CPU a bassa frequenza del Tegra 3 è, come abbiamo detto all’inizio, identica alle altre quattro, e nello specifico un ARM Cortex A9, ma essendo costruito per avere bassi consumi, ha una richiesta in termini di Energia di Base molto contenuta e nettamente più bassa rispetto agli altri core; inoltre il rapporto potenza/prestazioni del Companion Core sviluppa più performance per ogni singolo watt consumato rispetto ad una sola delle CPU ad alte prestazioni.
Questo, nonostante funzioni a soli 500 MHz, è dotato di potenza sufficiente per gestire non solo le varie operazioni di sincronizzazione dei contatti, social network, aggiornamento widget ma anche flussi audio e riproduzione video offline ed online in quanto all’interno del SoC sono integrate delle componenti hardware specializzate che si occupano della codifica e decodifica video, e permettono di diminuire il sovraccarico sulla CPU stessa (sia essa il Companion Core o i quattro core principali).
Le CPU a frequenza elevata invece sono costruite per funzionare a voltaggi più elevati rispetto al Companion Core, ma il processo produttivo e la tecnologia utilizzate permettono di dover variare di poco le tensioni, e quindi avere poca variazione in termini di Energia Dinamica sui quattro core.
L’architettura vSMP ha degli ulteriori vantaggi rispetto alle altre architetture multiprocessore:
Coerenza della Cache: Siccome il vSMP non permette mai al Companion Core di essere attivo assieme al core princiapale, non ci sono penalizzazioni dovute alla Sincronizzazione della Cache. Il Companion Core ed i cores principali condividono tra loro la stessa cache L2, che è programmata con tempi di risposta analoghi.
Efficienza del Sistema Operativo: Android è stato progettato in maniera tale da avere a disposizione, in ambito multiprocessore, cores identici e con capacità elaborative praticamente analoghe tra loro, e quindi la suddivisione dei carichi di lavoro è programmata in base a queste caratteristiche. Il pregio del vSMP è quello di mantenere tutti i cores attivi alla stessa frequenza, ed anche quando si passa dal Companion Core ai cores principali, lo si fa mantenendo (nella fase di transizione) una capacità di calcolo invariata (i core principali partono alla stessa frequenza di quella del Companion Core).
Ottimizzazione dei Consumi: Ogni singolo core in un’architettura multiprocessore asincrona, trovandosi a frequenze differenti dagli altri ha bisogno di una quantità di energia elettrica diversa, e quindi di un voltaggio differente. La soluzione può essere o quella di dotare ogni singola CPU di un proprio sistema di regolazione di voltaggi, e quindi di far aumentare i costi di produzione. Inoltre in questa maniera si perde il vantaggio rispetto al tipo di programmazione di Android (cores identici con uguale capacità di calcolo). La soluzione ottimale studiata da Nvidia è risultata essere quella di dotare il Companion Core ed i cores principali di un unico sistema di regolazione delle tensioni visto che non deve lavorare contemporaneamente su entrambi i fronti, abbinato ad un efficiente sistema di suddivisione dei carichi di lavoro, in maniera tale da poter utilizzare un unico valore di tensione su tutte e quattro le CPU, mantenendo voltaggi contenuti e conseguentemente consumi bassi.
Grazie a tutte queste caratteristiche Kal-El risulta essere un’architettura altamente ottimizzata sotto l’aspetto delle prestazioni e dei consumi, ma anche sotto l’aspetto dei costi di realizzazione che non sono diventato spropositatamente elevati rispetto alla concorrenza dual-core nonostante il maggior numero di core e la necessaria selezione sugli stessi in base alle temperature di funzionamento tali da ottimizzarne il comfort di utilizzo.
L’architettura vSMP, nella fase di progettazione, ha introdotto anche alcuni problemi che gli ingegneri di NVIDIA sono stati costretti a risolvere:
- Tempi di Switch tra le CPU: il problema principale da affrontare è l'evitare che il tempo necessario al passaggio tra il Companion Core e quelli principali si ripercuotesse sulle prestazioni e, cosa ancor peggiore, sulla fluidità dell'interfaccia utente (scatti nel cambio di schermata, nel cliccare le icone, nell’aprire il drawer, e via discorrendo). NVIDIA ha implementato una circuiteria ed un pacchetto di software di basso livello tali da poter offrire la massima velocità in termini di cambio della CPU. In termini di tempo, per completare l’operazione di spegnimento del Companion Core, accensione di quelli principali e regolazione delle tensioni in favore della nuova richiesta energetica sono necessari solamente 2 millisecondi, un tempo impercettibile durante l’utilizzo.
- Core Thrashing: l'architettura vSMP progettata da NVIDIA permette di evitare il continuo switch fra Companion core e core principali, che porterebbero a prestazioni ridotte e consumi elevati, quando il carico di lavoro è tale per cui si è attorno al valore di soglia. Questo comportamento è stato gestito aggiungendo una certa intelligenza ed un sistema di isteresi programmabile all'interno dell'algoritmo di gestione della CPU che controlla continuamento il carico di lavoro e lo adatta per prevenire l'effetto di Core Thrashing.
I vantaggi di una CPU QuadCore in ambito Mobile
I primi dispositivi mobile Android erano dotati di una CPU a singolo core funzionante a circa 578 MHz abbinata, nella migliore delle ipotesi, a circa 256 MB di memoria RAM. La crescita del livello tecnologico dei dispositivi mobile è stata compressa in un arco di tempo estremamente ridotto rispetto alla controparte desktop, e la possibilità di avere una sempre maggiore potenza di calcolo a disposizione ha reso possibile lo sviluppo di applicazioni sempre più affamate di potenza computazionale. Basti pensare alle fotocamere dei telefonini che, in quanto a numero di pixel acquisiti possono ormai gareggiare con molte compatte (con questo non vogliamo entrare nella diatriba, ancora molto forte, sulla qualità di acquisizione).
L’avvento dei tablet e la loro rapida acquisizione da parte di una porzione di utenza sempre maggiore, inoltre, ha fatto sì che l’hardware presente negli smartphone dovesse affrontare sempre più spesso quelle che all’inizio erano operazioni esclusivamente eseguite sui computer desktop e portatili.
Di contro, la rapida ascesa in termini di potenza di elaborazione ha permesso di usufruire in maniera ottimale di contenuti web e di applicazioni con una qualità grafica elevata; in futuro non è da escludere un utilizzo adeguato anche sotto l’aspetto della produttività più onerosa come CAD/CAM e calcolo numerico.
In particolare nell’utilizzo come postazione web, il chip Tegra 3 è in grado di fornire prestazioni del tutto paragonabili a quelle di un computer desktop. I moderni browser multi-thread, capaci di gestire le pagine usando differenti processi e facendo in modo che sia i thread che i processi siano altamente parallelizzati sono ben digeriti dalla CPU quad-core Tegra 3 che risulta essere in grado di allocare molte più funzioni JavaScript rispetto alle CPU dual-core ed al contempo è in grado di eseguirli più rapidamente, tanto da risultare fino al 50% più veloce nell’esperienza d’uso rispetto alle vecchie piattaforme con CPU a due core.
Inoltre diventa possibile l’utilizzo di applicazioni che fanno largo uso di risorse hardware che mai fino ad ora erano approdate sui tablet o sugli smartphone. SI pensi alle app di editing di video HD, a quelle di processamento delle immagini, di transcodifica audio e video, riconoscimento facciale, compressione di file, simulazione della fisica, applicazioni e giochi anche in 3D stereoscopico. I benchmark effettuati dall'azienda di Santa Clara possono dare una visione più precisa della differenza di prestazioni:
CoreMark è un Benchmark utile a misurare le performance con applicazioni multimediali intensive
Photaf 3D Panorama permette di catturare foto 3D panoramiche e fa largo uso di Image Processing
Linpack è un benchmark utilizzato per verificare le capacità multitasking di una CPU.
Notare che il grafico parte dal 50%, le performance non sono raddoppiate, ma sono aumentate del 50% circa.
Handbrake è un’applicazione di transcodifica video, e il nome stesso (freno a mano) rende l’idea di quanto sia esosa e pesante in termini di risorse. Anche in questo caso l’aumento prestazionale è notevole (circa il 50% in più).
Un’Esperienza di Gioco Migliore
Ora veniamo al punto forte di questa piattaforma mobile, l’aspetto gaming. Tutte le case produttrici possono mettere assieme quattro CPU (o anche di più) e realizzare la loro piattaforma quad-core (grazie anche alle politiche di licenza di ARM), ma pochi hanno l’esperienza in ambito GPU di NVIDIA.
Il SoC Kal-El è equipaggiato con un upgrade della GPU inclusa nel dual-core Tegra 2, in particolare, i cores di elaborazione grafica sono passati da 8 a 12, anche se l’architettura è rimasta fondamentalmente invariata. Sulla piattaforma Tegra 2 saltava all'occhio che il collo di bottiglia fosse principalmente nella capacità di elaborazione della CPU, cosa che non dovrebbe più avvenire con i quattro processori Cortex A9 di Tegra 3.
La scelta di NVIDIA di utilizzare più cores sia nella CPU che nella GPU è dovuta al fatto che, come per le altre applicazioni, i programmatori di videogiochi stanno percorrendo una via di alta parallelizzazione delle operazioni, rendendole singolarmente meno pesanti, ma molto più numerose rispetto a prima.
La grande potenza di Kal-El permette di realizzare dei videogiochi mobile che per la prima volta in assoluto possono vantare fisica e creazione delle texture in tempo reale, con un incremento notevole sulla qualità grafica e sull’esperienza di gioco. Quando in un ambiente simulato possono comparire eventi fisici come collisioni, gravità, vento e acqua, quello che ci si aspetta è che con essi si possa interagire, esattamente come accade nella realtà, e che l’ambiente stesso reagisca in modo realistico. Con la possibilità di similare un motore fisico, Kal-El introduce un realismo mai visto prima su una piattaforma mobile, permettendo un’immersione nel mondo di gioco paragonabile a quella delle macchine desktop.
Inoltre, la presenza di quattro core permette di suddividere il carico di lavoro facendo in modo che nessuno sia sovraccaricata lasciando libere risorse per il completamento di altri processi.
Kal-El risulta largamente più performante di Tegra 2 in ogni test
La possibilità di sfruttare texture in tempo reale permette di creare le variazioni cromatiche dell’ambiente in base alle condizioni atmosferiche simulate, agli impatti, ed alle variabili del gioco (ad esempio i danni fisici su un personaggio). In questa maniera l’esperienza di gioco risulterà ancora più interattiva ed accattivante sotto ogni aspetto.
Inoltre la generazione di texture in tempo reale, che richiede un elevato carico di lavoro sull’hardware, permette la riduzione delle dimensioni dei file relativi al gioco.
Il test Windmill per la creazione dinamica delle texture permette di tirar fuori un set di oltre 300MB di texture partendo da una base di 1MB. Questo fa si che i programmatori possano fornire elementi meno pesanti e gli utenti scaricare pacchetti di dati più piccoli. Ma ovviamente tutto ciò è possibile solo se si ha a disposizione una potenza tale da poter gestire le texture dinamiche in tempo reale.
I vantaggi nell'utilizzo di Tegra 3 quale piattaforma gaming sono immediatamente visibili quando si fa un diretto confronto con quello che riesce a fare una piattaforma standard non basata sul SoC NVIDIA. Il video che segue è stato effettuato con un tablet ASUS Transformer Pad del quale pubblicheremo presto una recensione.
I vantaggi di una simile piattaforma potrebbero contribuire, come sta già accadendo, a spostare una grossa fetta di casual-gamer dalle console ai tablet, specie se il termine di confronto è "console portatile". I segnali di questo scenario arrivano da più parti: i produttori di console portatili lamentano scarse vendite, difficilmente giustificabili solo con il periodo di crisi globale che stiamo vivendo, chi progetta e realizza tablet punta sempre più spesso su soluzioni che fanno del gaming il proprio liet-motif di vendita (l'Archos GamePad o il Wikipad sono solo esempi limite, ma si guardi anche al Sony Xperia Tablet S, all'iniziativa di NVIDIA con Tegra Zone o alla possibilità di utilizzare i tipici controller da console sulla stessa piattaforma Tegra 3) e, infine, le software house sfornano giochini o videogame più seri in continuazione per la piattaforma Android.
Tutte avvisaglie di un chiaro trend, che potrebbe anche culminare con la fine delle console portatili.