L'architettura nel dettaglio

Nvidia presenta le schede grafiche GeForce GTX 280 e GTX 260, basate su una nuova architettura, derivante dalla G80, che permette di raggiungere nuovi livelli prestazionali.

Avatar di Tom's Hardware

a cura di Tom's Hardware

L'architettura nel dettaglio

Un'architettura SIMT?

Nvidia descrive, per il GT200, il suo Shader Multriprocessor come un'unità SIMT. L'acronimo sta per Single Instruction Multiple Thread, e la principale differenza tra questo e il SIMD è che la dimensione dei vettori viene processata senza un dimensione predefinita. Concretamente, con un numero sufficiente di thread, il processore si comporta come un processore scalare. Per capire la differenza, ricordate come le unità pixel shader operano nella precedente architettura.

Il rasterizer genera quads - quadrati di 2x2 pixel, in cui ogni pixel è formato da un vettore con quattro valori single-precision floating-point (RGBA) o (XYZW), il formato maggiormente utilizzato nei calcoli 3D. Questi quads vengono poi inviati all'ALI, che opera in modalità SIMD 16-way - applicando la stessa istruzione a tutti i 16 valori floating-point. Questa si tratta di una esemplificazione per illustrare il principio; in pratica le GeForce 6 e 7 dispongono di una modalità chiamata co-issue per eseguire due istruzioni a vettore.

Dal G80, questa modalità operativa è stata modificata - il rasterizer genera ancora quads, che sono piazzati in un buffer. Quando 8 quads (32 pixel, un "warp" nelle terminologia CUDA) sono presenti nel buffer, possono essere eseguiti da un multiprocessore in modalità SIMD. Quindi, qual è la differenza? Il modo in cui i dati vengono organizzati: anziché lavorare su quattro vettori di quattro numeri floating-point organizzati in questa maniera: (R, G, B, A, R, G, B, A, R, G, B, A, R, G, B, A), il multiprocessore lavora su vettori di 32 valori floating point, ognuno composto da singoli componenti di ognuno dei 32 thread:

(R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R)

poi

(G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G)

etc.

Nella programmazione SIMD, il primo allineamento dati è chiamato AoS (Array Of Structures), e il second SoA (Structura of Arrays). Questa seconda organizzazione offre prestazioni migliori. Se ci sono abbastanza dati da riempire un vettore, il processore si comporta, dal punto di vista del programmatore, come un processore scalare, poiché le unità SIMD lavorano sempre al 100%, senza considerazione della larghezza dei dati che vengono processati. Al contrario, AoS raggiunge un picco di prestazioni solo quando la stessa istruzione viene applicata a tutti e quattro i componenti di ogni vettore.

👋 Partecipa alla discussione! Scopri le ultime novità che abbiamo riservato per te!

0 Commenti

⚠️ Stai commentando come Ospite. Vuoi accedere?


Questa funzionalità è attualmente in beta, se trovi qualche errore segnalacelo.