L'architettura in dettaglio
Come Nvidia, AMD ha scelto di partire dalla sua vecchia architettura, anzichè riprogettare tutto da zero. Un po' la stessa cosa di quanto è successo con R600, riutilizzato per RV670.
L'architettura inizialmente introdotta con Xenos, la GPU usata per la console Xbox 360, è basata su un grupo di array SIMD. Lo Xenos dispone di tre array SIMD, mentre R600 e R670 ne hanno quattro. RV770 aumenta questo numero a 10 elementi.
Come facilmente deducibile, siccome la GPU dispone di 800 ALU, ogni array SIMD ne contiene 80, anche se questo modo di vedere l'architettura è molto semplificato. In pratica, le 80 ALU non sono indipendenti tra loro. Sono invece raggruppate in unità vLIW five-way - 16 unità per array SIMD.
Questa organizzazione implica alcune restrizioni; ognuna delle cinque istruzioni di un VLIW devono essere indipendenti dalle altre. È il compilatore che ha il compito di trovare istruzioni abbastanza indipendenti, da instradare in maniera tale da saturare le ALU - diversamente dal G80, che usa un approccio più a livello hardware.
Ecco un esempio per illustrare quanto descritto:
I1 FADD R1, R1, 3.14
I2 FMUL R2, R1, 1.41
I3 FMAD R3, R0, 0.5, 0.5
In questo caso, l'Istruzione 1 e 3 possono condividere lo stesso bundle, ma no l'Istruzione 2, che dipende da risultato dell'Istruzione 1. Se il compilatore non dispone di abbastanza istruzioni, dovrà riempire gli "spazi vuoti" con istruzioni NOP, che non fanno nulla, riducendo le prestazioni del chip.
Questo significa che le ALU Nvidia raggiungeranno il loro piccolo prestazionale più spesso, poichè sono meno dipendenti dal codice; tuttavia, lo svantaggio in questo caso riguarda la loro costruzione, infatti necessitano di più transistor per essere realizzate. Le unità AMD dipendono molto dalle prestazioni del compilatore (il compilatore che è interno al driver e che riorganizza le istruzioni assembler generate dall'HLSL), ma l'azienda può integrarne di più in un die più piccolo.
Le unità VLIW non sono state riviste pesantemente; ci sono quattro unità in grado di eseguire una FAMD o un'addizione integer e un'unità speciale in grado di eseguire sia FAMD o una moltiplicazione integer, o una funzione trascendentale (seno, coseno, log, exp, etc). L'unico reale miglioramento è l'inserimento del bit shifting integer, che ora può essere gestito da una delle cinque unità, mentre le schede 2900/3800 necessitavano di un'unità speciale per queste operzioni. Anzichè renderele più potenti, AMD ha scelto di ottimizzarle, per ridurne la dimensione, così da riuscire a inserne di più nel die.