Virtualizzazione

Dopo aver fatto una panoramica sulla nuova scheda ATI/AMD HD 2900 XT è giunto il momento di entrare più nel dettaglio con un approfondimento tecnico sull'architettura del chip R600.

Avatar di Andrea Ferrario

a cura di Andrea Ferrario

Editor in Chief

Virtualizzazione

Tutte le cache degli shader di R600 sono virtualizzate. I prodotti precedenti avevano un ammontare limitato di memoria a disposizione per immagazzinare istruzioni pixel shader, in particolare 64 slot per le scalari e 64 per le vettoriali. Con la linea 5xxx ATI ha aumentato questo valore a 1500 istruzioni mentre con R600, sebbene permanga una cache fisica per le istruzioni a disposizione degli shader, questa è completamente virtualizzata.

I thread dormienti devono essere inseriti da qualche parte in memoria. Il numero totale d'istruzioni che si possono immagazzinare è teoricamente e virtualmente illimitato. Si può accedere a 2^32 specifiche word, che a occhio e croce formano 4GB di dati shader.

Ecco cosa accade tipicamente quando un thread deve essere elaborato da uno shader. Il thread viene innanzitutto prelevato dal sistema o da altra memoria indirizzabile. Viene poi depositato in una cache ed eseguito, un po' come farebbe una CPU, ma con qualche complicazione in più di seguito. Le cache, essendo completamente associative, possono conservare contemporaneamente qualsiasi tipo d'istruzione a disposizione di tutti gli shader. Diversamente da una CPU, che normalmente elabora due o tre thread in contemporanea, la famiglia R600 ha molti shader, ognuno dei quali ha un'esecuzione in corso.

C'è anche una cache per le costanti o "variabili semi-statiche", tutte gestite tramite la virtualizzazione, considerando che le DX10 hanno un numero tremendamente elevato di costanti.