Funzionalità fisse o architettura unificata?
Un altro spazio alla libera interpretazione nasce dagli approcci intrapresi da ATi e Nvidia nelle DirectX 9. Nvidia ha optato per funzionalità fisse nella progettazione della sua architettura, mentre ATi ha deciso di frammentare la pipeline tradizionale in modo da fornire funzionalità maggiori con le medesime risorse.
Non c'è niente di sbagliato nel progettare X vertex shader con Y pixel shader e Y ROPs (Raster Operation Processors), ma come ci ha dimostrato ATi con la sua attuale serie di processori grafici DirectX 9.0c, ci sono aumenti prestazionali grazie a un core dinamico. Molti sviluppatori di giochi hanno cambiato i loro titoli per diventare dipendenti dai pixel shader con un design frammentato; ATi è stata capace di capitalizzare su questo aspetto aggiungendo unità pixel shader a un nuovo progetto del core. Un layout per hardware Direct3D 10 potrebbe integrare unità shader con funzionalità fisse, ma quale sarebbe il vantaggio?
Gli shader unificati hanno più senso, perché significa che le unità shader possono cambiare funzionalità al volo. Questo significa che se un frame ha più bisogno di vertex shader o di pixel shader, il core può assegnare più unità di processo o cluster per svolgere l'operazione che ha una domanda superiore.
Qui sotto ci sono alcuni esempri di carico di lavoro in ambiente di processo tradizionale.
Esempio 1: Elevata necessità di operazioni vertex, bassa necessità di operazioni pixel
In questo esempio, il Pixel Shader è sottoutilizzato; potrebbe intervenire di più nel frame, ma è ostacolato dall'uscita dell'output del Vertex Shader.
Esempio 2: Bassa necessità di operazioni vertex, elevata necessità di operazioni pixel
In questo esempio, il Pixel Shader è sottoutilizzato, ostacolata dalle Vertex Shader.
Esempio 3: Bassa necessità di operazioni vertex, elevata necessità di operazioni pixel.
In questo esempio, il Pixel Shader può renderizzare lo stesso quantitativo dell'esempio 1, ma ci sono 12 processori vertex in più che possono essere utilizzati. Questo porta il core grafico ad essere utilizzato al massimo delle sue potenzialità.
Esempio 4: Bassa necessità di operazioni vertex, elevata necessità di operazioni pixel.
In quest'ultimo esempio, il carico di Vertex Shader è lo stesso dell'esempio 2, laddove ci sono 6 processori pixel che possono essere utilizzati.
Il punto di questa dimostrazione è che gli shader sono soltanto programmi che lavorano su processori in virgola mobile. Con il nuovo standard Direct3D 10, non ha senso progettare un'architettura a shader con funzionalità fisse. Con un core prestante e intelligente, potremo avere rese significative sulle architetture unificate con lo stesso numero di unità in virgola mobile di quelle che potremo avere con un'architettura fissa con lo stesso numero totale di FPU.