|
Originariamente inviato da David Kirk
Un secondo tema di notevole interesse mutuato dalle più recenti architetture delle console è quello dell'architettura a shader unificati. NVIDIA prevede di adottare questo modello in future generazioni dei propri chip video desktop per PC?
Faccio alcune premesse indispensabili: lo unified programming model, il modello di programmazione unificato, presentato da Microsoft nelle proprie API è un'idea eccellente. L'API tuttavia dice di avere un approccio unificato alla programmazione, non come questo approccio debba avvenire via hardware all'interno della GPU. Per questo motivo, l'API non dice in nessun modo che la programmazione debba avvenire con un'architettura unificata, o con pixel e vertex shader separati: l'importante per l'API è il risultato finale generato a video.
Per meglio capire i benefici o i limiti di un'architettura a shader unificati bisogna premettere che tipo di carico ed elaborazioni vengano svolte dagli shader:
* vertex shader: si tratta di operazioni soprattutto in floating point
* pixel shader: buona parte del workload è legato alle textures
Le due tipologie di operazioni sono quindi molto diverse tra di loro; un'architettura unificata permette di ottenere, sia per pixel che per vertex shader, dei valori prestazionali di picco che sono più elevati rispetto ad un'architettura con shader separati. La spiegazione è ovvia: c'è un'unica risorsa hardware per elaborare pixel e vertex shader, di potenza complessivamente più elevata rispetto a quanto singolarmente sono in grado di elaborare i singoli pixel pipeline e vertex pipeline di un'architettura non unificata.
Il vantaggio in termini di prestazioni massime, tuttavia, si scontra con i limiti propri di come i calcoli su pixel e vertex shader debbano venir eseguiti. L'obiettivo di un'architettura unificata è quella di cercare di saturare sempre e comunque le risorse hardware disponibili, eseguendo sia pixel che vertex shader. Se il chip video non è in grado di occupare sempre lo shader unificato con calcoli da eseguire, bilanciando l'esecuzione di pixel e vertex shader a seconda di quanto richiesto dalla scena per essere generata correttamente, si corre il rischio di avere colli di bottiglia e un non ottimale sfruttamento.
Pensando al mondo delle console, dove la piattaforma hardware non viene modificata per i mediamente 5 anni del proprio ciclo di vita, l'approccio unificato per pixel e vertex pipeline può avere senso in quanto i games developer continueranno ad utilizzare la stessa piattaforma per anni. Personalmente, tuttavia, credo che al momento attuale l'approccio con architetture separate sia preferibile, sia per l'approccio più semplice alla programmazione, sia per le prestazioni.
La programmazione con architettura unificata è su carta più semplice rispetto ad una con architettura separata, almeno ad una prima analisi superficiale. Se si vuole cercare di ottenere la massima efficienza dal proprio codice, sfruttando al meglio l'architettura unificata, ci si accorge però di come questo possa richiedere al programmatore, soprattutto nel breve periodo, uno sforzo ancor più importante che nella programmazione con pixel e vertex pipeline separate.
L'approccio con architettura unificata, quindi, potrà diventare applicabile con benefici tangibili all'architettura delle GPU per PC nel momento in cui i programmatori saranno in grado di sfruttare al meglio questa risorsa hardware, senza dover necessariamente impiegare molto tempo nell'ottimizzazione del codice.
Alcune indiscrezioni, che riporto nella forma di rumors non confermati, dicono che alcuni games developer stanno programmando titoli per Xbox 2 utilizzando l'architettura unificata per i soli pixel shader, passando al processore della console le operazioni legate ai vertex shader.
|