Ospitiamo qui la prima parte di una lunga e dettagliata retrospettiva riguardante gli ultimi quattro anni di competizione fra nVidia e AMD. Anni che hanno visto avvicendarsi architetture diversissime, uniti però da un sottile fil rouge, il processo produttivo a 28nm. Ecco quindi la prima parte del contributo, il cui autore, assiduo frequentatore di AD, si fa conoscere col nickname omerico “nessuno”. Le successive “puntate” verranno rese disponibili nei prossimi giorni.
Siamo arrivati a quella che è probabilmente la fine del processo produttivo a 28nm, che presto verrà sostituito dal nuovo processo a 16nm FinFet.
Il processo a 28nm è stata una anomalia degli ultimi anni riguardante i processi produttivi: è durato ben più a lungo del previsto e la sua età ha imposto dei limiti sulla possibilità di miglioramento delle GPU.
Sembra però che finalmente sia giunta anche per lui la sua ora. Tempo quindi di tirare un bilancio su cosa si è fatto e come ha condizionato il progresso delle tecnologie applicate alle GPU degli ultimi 4 anni.
Sarà una lunga storia, basata sulle vicende salienti in ordine cronologico da Gennaio 2012 fino a Gennaio 2016, un periodo di 4 anni esatti in cui molto è successo e molto è anche cambiato nonostante il processo produttivo fosse sempre stato lo stesso. Molti dettagli e avvenimenti secondari vengono omessi, onde evitare di rendere la storia troppo lunga e noiosa.
Spero che la descrizione sia quanto più vicina alla realtà (in caso di errori segnalateli) e di vostro gradimento.
Partiamo dal principio di questa avventura.
L’inizio della storia è quello che ha segnato la via degli ultimi 4 anni dei due grandi costruttori di GPU rimasti in vita, AMD e nVidia, dopo un’era più antica in cui vi erano molti più attori a contendersi il mercato.
La storia comincia con la presentazione a inizio 2012 della nuova GPU basata sul nuovo processo produttivo a 28nm da parte di AMD. Una presentazione che segna il cambiamento della strategia di AMD condotta fino a quel momento: la strategia del “piccolo è bello” annunciata nel 2007, che aveva portato AMD a realizzare GPU più piccole di quelle della concorrenza ma con prestazioni simili, sebbene mai riuscendo a superarle in prestazioni pure.
La GPU, chiamata Tahiti, si presenta completamente rivoluzionata rispetto alla vecchia architettura Terascale che AMD aveva usato fino a quel momento, presentata nel 2006 con la serie 2xxx e affinata per i successivi 6 anni fino alla serie 6xxx. La nuova architettura, chiamata GCN (Graphics Core Next) elimina quelli che erano i limiti di TeraScale, soprattutto per quello che riguarda la capacità di eseguire GPGPU in maniera efficiente. TeraScale era in effetti una architettura ottimizzata soprattutto per l’esecuzione delle operazioni richieste dalla pipeline 3D e dai giochi, rimanendo un passo indietro per quel che riguarda la flessibilità di esecuzione di codice generico sulla GPU (General Purpose GPU, o GPGPU) usato per accelerare taluni funzioni che la CPU esegue in maniera meno efficiente e usato sempre di più per creare effetti grafici all’interno dei motori di gioco.
TeraScale era una architettura VLIW (Very Long Instruction Word), ovvero una architettura che permetteva di eseguire lunghe istruzioni complesse e composte da più istruzioni elementari (4 o 5 a seconda della versione dell’architettura) in un solo ciclo. Quindi molto efficiente se era possibile raggruppare più istruzioni in una singola macro istruzione (come le istruzioni geometriche o matriciali usate maggiormente dalla pipeline 3D). Viceversa molto meno nel caso le istruzioni non potessero essere raggruppate (per esempio per dipendenza l’una dal risultato dell’altra che impedisce l’esecuzione contemporanea delle istruzioni elementari). Da evidenziare che il raggruppamento e l’ordinamento era eseguito da un compilatore al momento della creazione del flusso di istruzioni da inviare alla scheda, non dall’HW al momento dell’esecuzione vera e propria. Questo rendeva l’HW molto più snello con la controindicazione che, come abbiamo già detto, nel caso di esecuzione di flussi di codice complesso non era particolarmente efficiente.
Le caratteristiche sulla carta della nuova GPU sono interessanti. Prima di tutto la sua dimensione. Il chip si presenta con una dimensione notevole, 358mm^2 nella stessa classe della precedente GPU top gamma di AMD, Cayman, con i suoi 389mm^2. La scheda su cui è montata, con finale x970, seguendo la nomenclatura di AMD degli anni precedenti, fa capire che il chip è quello grande destinato alla fascia alta della nuova serie.
Sulla carta ha tutto quello che serve per coprire quella posizione: bus a 384bit, il più grande realizzato da AMD dopo la presentazione di quel R600 con bus a 512bit che tanto deluse le aspettative e ispirò la strategia delle GPU piccole, 128 TMU e 32 ROP (Cayman in confronto aveva bus a 256bit, 96 TMU e 32 ROP). Il consumo massimo dichiarato è uguale a quello di Cayman, pari a 250W. Il numero di shader, o le singole unità di calcolo che compongono il core della GPU, passano da 1920 a 2048. Ma il semplice confronto numerico non è possibile per stabilire le nuove performance della GPU. La nuova architettura GCN è completamente diversa dalla vecchia TeraScale e si avvicina più alla filosofia che nVidia ha sempre seguito sin dalla realizzazione del G80 (GTX8800 Ultra) nel 2007. Le nuove ALU non sono più aggregate in gruppi di 4 (o 5 con le versioni precedenti a Cayman) e la loro efficienza nell’eseguire i calcoli General Purpose è aumentata notevolmente.
Un confronto con quello che la concorrenza ha in quel momento sul mercato è doveroso: la migliore GPU di nVidia realizzata con il vecchio PP a 40nm è il GF110, revisione di quel GF100 con architettura Fermi nato decisamente male. Il GF110 è un chip di 520mm^2, bus da 384bit, 64 TMU, 48 ROP e 512 shader (che ricordiamo girano al doppio della frequenza di base della GPU).
Le prestazioni della nuova 7970 ovviamente sono le più alte che una scheda grafica a GPU singola possa realizzare fino a quel momento. Tutte le altre schede grafiche montano chip con un processo produttivo obsoleto (40nm) e riescono a superare in termini assoluti di frame realizzati la 7970 solo in configurazione multi GPU, con consumi che sono almeno doppi e con tutti i problemi che le soluzioni multi GPU si portano dietro da quando sono state inventate.
Tahiti è quindi la nuova regina delle GPU, e apre le porte a una nuova era di GPU basate sul nuovo processo produttivo a 28nm che durerà a lungo. Forse troppo. La presentazione della scheda, le cui prestazioni sono rimaste segretissime fino al momento del lancio aumentando notevolmente la curiosità e le speculazioni nell’attesa, però non è scevra da alcuni dubbi. I commenti che i manager di nVidia, ovviamente altrettanto interessati alla questione, esprimono pubblicamente sono una bomba atomica lanciata nel web: in italiano possono essere riassunti in sole due parole “credevamo meglio”.
Le polemiche si scatenano ovunque, anche perché nVidia fino a quel momento non ha presentato uno straccio di prova delle potenzialità dell’architettura che sta sviluppando (Kepler). Ed è in ritardo. AMD oltre a Tahiti come GPU top gamma ha infatti rilasciato anche tutta la serie di GPU destinate alle fasce inferiori, schede che ovviamente si pongono un gradino (o anche due) sopra le equivalenti già presenti sul mercato. I prezzi della nuova serie di AMD ovviamente riflettono questa posizione di dominio, come giusto che sia per una azienda che ha investito anni e una discreta quantità capitali per realizzare qualcosa che sia migliore di ciò che il resto del mercato propone. Il tempo passa, e mentre i commenti e i dibattiti si infiammano, nVidia non ha più nulla da dire pubblicamente.
A Marzo 2012, con 3 mesi di ritardo rispetto alla concorrenza, finalmente nVidia presenta la sua nuova architettura Kepler basata sul nuovo processo produttivo a 28nm. La presentazione è un’altra bomba che esplode. E definisce quello che sarà la nuova politica di nVidia rispetto ai risultati ottenuti da AMD.
I fatti sono presto raccontati ma le conseguenze necessiteranno decisamente più parole per essere descritte.
nVidia si presenta con una nuova scheda top gamma, facilmente riconoscibile per la nomenclatura: GTX680. Cosa che era scontata, visto il livello della nuova GPU top gamma di AMD. Ciò che stupisce, è invece il nome della GPU che monta. Essendo la top gamma ci si aspetterebbe la “solita” GPU pizza che nVidia ha sempre realizzato come prima soluzione, ovvero le GPU con denominazione Gx100 (o Gx110 per le revisioni). Le parole di nVidia pronunciate alla presentazione di Tahiti risuonano ancora; però i fatti ora sembrano supportarli. Sulla nuova scheda top gamma di nVidia per la prima volta è stato messo il chip di fascia inferiore a quello più grande, il GK104. Le sue caratteristiche che sorprendono più di tutte sono la dimensione di 298mm^2 e il bus di “soli” 256bit. Gli shader sono 1536, 128 TMU e 32 ROP. Da notare comunque che con la nuova architettura gli shader non vanno più al doppio della frequenza rispetto al resto della GPU e quindi il loro numero è aumentato per compensare la diminuzione di velocità nell’eseguire le istruzioni. Questa GPU di classe media di nuova generazione supera di gran lunga le prestazioni del top gamma GF110 montato sulla GTX580.
Il cambiamento delle storiche strategie in atto da anni è evidente. Riassumiamole velocemente, sapendo che una strategia si forma secondo quello che sono i risultati propri di una azienda rispetto a quelli che la concorrenza ottiene. Facciamo un salto indietro di 6 anni rispetto ai fatti qui descritti, al tempo dell’introduzione sul mercato delle GPU “moderne”. Al tempo dei 90nm, per fare un confronto con il processo produttivo in uso.
È il 2006, anno in cui entrambe le case cambiano le proprie vecchie architetture con unità di calcolo separate per geometria e pixel in unità di calcolo unificate per eseguire tutti i tipi di calcoli necessari attraverso lo stesso HW. Si apre la strada al GPGPU, ovvero alla possibilità di eseguire sequenze arbitrarie di istruzioni sulle GPU che non siano necessariamente istruzioni con finalità grafiche. Il risultato di questo flusso di istruzioni può essere usato diversamente che solo all’interno della GPU una volta recuperato dalla CPU. Codice “general purpose” (con finalità generale) appunto. Fisica, AI, effetti grafici dinamici in tempo reale sono ora disponibili tramite la GPU.
Nel 2007 nVidia rilascia la sua architettura Tesla con il chip chiamato G80 cui segue poco dopo il G92. Il primo chip ha una potenza bruta tale da annichilire qualsiasi proposta della concorrenza; il secondo è la sua revisione a basso costo, molto più piccola ed efficiente, contro cui AMD deve lottare duramente per più di 2 anni con i suoi RV600 e RV670, rispettivamente serie 2xxx e 3xxx. L’architettura Terascale che AMD eredita da ATI nella sua prima versione si dimostra troppo debole nella competizione da quindi la necessità di cambiare strategia di sviluppo. Dopo l’enorme, costosissimo e fallimentare RV600 con il suo bus da 512bit (un inedito fino a quel momento) e centinaia di W di consumo, AMD passa alla realizzazione di GPU più piccole e snelle che pensa di abbinare in soluzioni multi GPU per ottenere le prestazioni top che sorpassino quelle della concorrenza che adotta GPU enormi dai consumi esagerati per avere qualche percentuale di prestazioni in più.
La strategia di AMD si dimostra subito di difficile realizzazione. La distanza che c’è di potenza di elaborazione e di dimensioni (e quindi risorse montate sul chip) non è contenibile con le GPU troppo piccole cui AMD pensava di rimanere legata. Ad ogni generazione AMD è costretta ad aumentare la dimensione delle proprie GPU per colmare sempre più la distanza che la separa dalle soluzioni della concorrenza. Le dimensioni dei suoi chip rimangono comunque inferiori a quelle corrispondenti di nVidia, negli anni sempre pressoché costanti. Dal RV770 (serie 4xxx) le GPU più grandi di AMD danno filo da torcere alle soluzioni “monster” di nVidia in campo videoludico. Le prime non la spuntano nelle prestazioni assolute, ma iniziano ad avere una efficienza (rapporto tra prestazioni e consumi, ma anche prestazioni e area di silicio usata) che è superiore a quello della concorrenza. In altri termini, le prestazioni superiori di nVidia si giustificano con un dispendio molto superiore di energia (corrente consumata e quindi calore da disperdere) e anche di silicio.
Le GPU di AMD sono quindi anche più economiche da realizzare, e mettono seria pressione ai prezzi di vendita di nVidia.
Sfortunatamente per AMD il progetto di realizzare schede multi GPU da confrontare con le mono GPU di nVidia fallisce: quest’ultima, nonostante le difficoltà di realizzare soluzioni multi GPU con un consumo (e costo) contenuto, riesce comunque nell’intento e non permette ad AMD di presentarsi con la scheda più veloce sul mercato. Il danno d’immagine che AMD subisce per tutto questo tempo è elevato, mentre all’opposto nVidia ne ottiene i benefici d’immagine seppure dietro un costo di produzione non indifferente.
Più a basso livello le strategie sono divergenti come non mai. Mentre AMD cerca di riparare la sua architettura al cui debutto si è dimostrata chiaramente non all’altezza delle aspettative (e usando un termine poco elegante ma che rende bene l’idea “asfaltata” dall’architettura rivale), nVidia si concentra a realizzare GPU con capacità di calcolo general purpose sempre più avanzate. Questa scelta, come abbiamo visto, la svantaggia sotto il punto di vista delle dimensioni e dei consumi rispetto a quello che realizza la rivale. Il mondo dei videogiochi intanto cambia e grazie anche alle nuove librerie DX10 e poi DX11 comincia a sfruttare sempre più le possibilità di eseguire codice complesso per ottenere sempre più originali effetti grafici.
La guerra dei prezzi nel mondo consumer e la nuova capacità delle GPU di eseguire codice general purpose suggerisce ad nVidia di costruire un nuovo mercato: quello delle schede dedicate al calcolo. Le risorse investite in tale progetto sono enormi, ma le consentono di vendere le sue GPU “monster” con margini che nel mondo consumer non potrebbe avere. nVidia così comincia a realizzare 2 architetture diverse: una destinata al mondo consumer o per meglio dire, videoludico, e una da vendere anche (ma non solo) nel nuovo mercato delle schede acceleratrici per calcoli scientifici. Quest’ultima architettura ovviamente è quella usata per le enormi GPU, che poi vengono usate anche nel mondo consumer come le top gamma (con alcune caratteristiche disabilitate tramite driver, come le capacità di calcolo a 64bit) contro cui AMD fa fatica a tenere testa.
Le due strategie di sviluppo differenziate arrivano al 2012, anno in cui, come abbiamo visto, anche AMD decide che il GPGPU è diventato qualcosa di importante e quindi propone una architettura in grado di eseguire codice come, se non meglio di, quanto non sia in grado di fare la concorrenza.
Continua qui.