PDA

View Full Version : Alcuni dubbi tecnici sulle attuali GPU...


Dott.Wisem
09-09-2008, 17:15
Chi è in grado di rispondere alle seguenti domande? Una volta avrei potuto rispondere io stesso, ma purtroppo è da un bel po' che non sono più informatissimo sulle evoluzioni tecnologiche delle GPU ATi e nVidia... Ad ogni modo, ecco le domande:

1) Come mai le schede ATi, pur avendo un numero spropositato di unità shader unificate, è da un po' di anni mi pare che, tranne che per l'ultima serie 48xx, vanno peggio delle schede nVidia, le quali invece hanno unità shader in quantità notevolmente inferiore?

2) Come mai ATi continua a proporre schede video di fascia media con oltre 100 unità shader unificate, ma 4 rop invece che 8 ? Non è sprecato avere tutte quelle unità shader, se poi hai in uscita un notevole collo di bottiglia rappresentato dal pixel throughput dimezzato rispetto alla concorrenza? Finché la tipica risoluzione usata nei videogiochi era 1024x768 potevo anche capire, ma oggi la minima risoluzione è diventata 1280x800 (risoluzione standard di un notebook 15.4") ed i monitor LCD wide vanno da 1440x900 in su...

tigershark
09-09-2008, 18:05
1) Come mai le schede ATi, pur avendo un numero spropositato di unità shader unificate, è da un po' di anni mi pare che, tranne che per l'ultima serie 48xx, vanno peggio delle schede nVidia, le quali invece hanno unità shader in quantità notevolmente inferiore?...

diciamo che sono architetture molto diverse tra loro, non puoi paragonare la singola unità di shading di una GPU Nvidia con quella Ati.

Detto in modo moooolto semplice il rapporto di potenza tra un'unità shader nvidia ed una Ati è 1:2 ma ripeto, è troppo semplicistica come spiegazione, le due aziende hann oadottato approcci defferenti nella realizzazione delle proprie architetture.



2) Come mai ATi continua a proporre schede video di fascia media con oltre 100 unità shader unificate, ma 4 rop invece che 8 ? Non è sprecato avere tutte quelle unità shader, se poi hai in uscita un notevole collo di bottiglia rappresentato dal pixel throughput dimezzato rispetto alla concorrenza? Finché la tipica risoluzione usata nei videogiochi era 1024x768 potevo anche capire, ma oggi la minima risoluzione è diventata 1280x800 (risoluzione standard di un notebook 15.4") ed i monitor LCD wide vanno da 1440x900 in su...

beh diciamo che Ati ha imparato dai suoi errori passati e con la serie 4xxx si è ripresa più che bene. Più che scelte tecniche sono scelte commerciali fatte anche per invogliare magari l'acquisto delle gpu di segmento superiore, considerando anche il fatto che una scheda Ati costa mediamente qualcosa in meno di quelle Nvidia a parità di segmento prestazionale.

Dott.Wisem
09-09-2008, 18:44
diciamo che sono architetture molto diverse tra loro, non puoi paragonare la singola unità di shading di una GPU Nvidia con quella Ati.

Detto in modo moooolto semplice il rapporto di potenza tra un'unità shader nvidia ed una Ati è 1:2 ma ripeto, è troppo semplicistica come spiegazione, le due aziende hann oadottato approcci defferenti nella realizzazione delle proprie architetture.Ecco, appunto, io intendevo proprio questo: un'unità shader di una recente GPU nVidia, quante e che tipo di operazioni può fare in più rispetto allla concorrente? Alla fine, nelle specifiche tecniche, credo che questa sia una cosa fondamentale da far sapere, altrimenti come faccio a rendermi conto se, almeno su carta, una GPU è migliore di un'altra? Certo, lo so che sono tanti i parametri che entrano in gioco, ma almeno si avrebbe qualche certezza da cui partire.




beh diciamo che Ati ha imparato dai suoi errori passati e con la serie 4xxx si è ripresa più che bene. Più che scelte tecniche sono scelte commerciali fatte anche per invogliare magari l'acquisto delle gpu di segmento superiore, considerando anche il fatto che una scheda Ati costa mediamente qualcosa in meno di quelle Nvidia a parità di segmento prestazionale.Boh, se vedi la serie ATi HD36xx, sono buone schede per quello che costano, ma arriva appena ai livelli una 8600GT (standogli sempre dietro nei benchmark, fra l'altro), nonostante la prima abbia 120 unità di shader, mentre la seconda ne abbia appena 32! Ora, è possibile che un'unità shader nVidia sia 4 (dico QUATTRO) volte più efficiente di un'unità shader ATi ? Non è più probabile, invece, che l'8600GT vada meglio per via del fatto che ha 8 rop invece che 4 ?

Ortolino
09-09-2008, 19:12
Probabilmente per entrambi i motivi...comunque visto il prezzo della 3650, di più non puoi aspettarti, sono delle oneste schede di fascia bassa.

tigershark
09-09-2008, 19:20
Ecco, appunto, io intendevo proprio questo: un'unità shader di una recente GPU nVidia, quante e che tipo di operazioni può fare in più rispetto allla concorrente? Alla fine, nelle specifiche tecniche, credo che questa sia una cosa fondamentale da far sapere, altrimenti come faccio a rendermi conto se, almeno su carta, una GPU è migliore di un'altra? Certo, lo so che sono tanti i parametri che entrano in gioco, ma almeno si avrebbe qualche certezza da cui partire.

provo a risponderti e spero di essere sufficientemente chiaro:

partiamo con due GPU attuali

NVidia GT2xx
Ati RV770

Il GTX280 ha come saprai 240 SP raggruppati a 8. Ognuno di questi raggruppamenti prende il nome di streaming multiprocessors.
Un gruppo di 3 streaming multiprocessors viene indicato con il nome di thread processing cluster o TPC.
Nel GTX280 abbiamo 10 TPC e 30 SM.

Lo Streaming Processor progettato da AMD per la GPU RV770 invece è composto da un insieme 5 SM. La GPU RV770 dispone di 16 Streaming Processor per ogni Core SIMD.

Quindi cambia strutturalmente il modo in cui sono organizzate internamente le GPU.

Gli Stream Processing Unit sono tutti uguali e sono in grado di gestire operazioni di Multiply / ADD (la loro architettura deriva da quella di una unità FP MUL più una unità ADD). Questi blocchi sono praticamente identici a quelli utilizzati da NVIDIA nel chip GT200.

Mentre GT200 dispone di 240 Stream Processor, RV770 ne prevede 800. Ma il blocco dell´RV770 più simile ad uno Stream Processor di NVIDIA non è la singola Stream Processing Unit bensì lo Streaming Processor: nell´RV770 ne troviamo 160.

Questo significa che il confronto andrebbe fatto in maniera differente. GT200 dispone di 240 Streaming Processor in grado di gestire ognuno una istruzione alla volta. RV770 dispone di 160 Streaming Processor in grado di gestire fino a 5 istruzioni per ogni ciclo. La sola restrizione è che tutte le istruzioni facciano parte dello stesso thread.

Ancora una volta sta ai programmatori con i propri drivers sfruttare in modo più o meno ottimale una determinata architettura.

Un SIMD Core di RV770 può essere paragonato ad una unità SM del chip NVIDIA GT200 anche se con le dovute differenze. Il SIMD Core dispone di 16 SP mentre lo Streaming Multiprocessor ne prevede la metà. Inoltre, ogni SP dell´RV770 può processare 5 istruzioni alla volta contro una sola istruzione degli SP NVIDIA. Le texture units, comprese le texture cache sono accoppiate agli SP all´interno del SIMD Core, mentre nel chip GT200 queste sono posizionate al di fuori dello SM. Al contrario NVIDIA ha inserito nello SM la cache istruzioni e la cache delle costanti mentre AMD ha lasciato questi blocchi al di fuori.

Con queste differenze architetturali, non è possibile rispondere con precisione alla tua domanda...posso però dirti che in totale RV770 può processare un massimo teorico di 800 istruzioni alla volta mentre GT200 ne può processare 240 (oltre ad ulteriori 240 attraverso le due unità SFU disponibili per ogni SM e solo in determinate situazioni). Ma i casi ottimale e peggiore differiscono molto prendendo in esame le due diverse architetture.

Diciamo che nel caso migliore GT200 è capace di elaborare 480 istruzioni per ogni ciclo contro le 800 di RV770. Nel caso peggiore, però, l´architettura NVIDIA si ferma a 240 mentre quella AMD scende a 160.

l´architettura NVIDIA preferisce lavorare su moltissimi thread semplici, composti da poche o meglio da una sola istruzione. L´approccio AMD mostra il meglio di sé, invece, con threads complessi e pieni di istruzioni.

In aggiunta, l´architettura proposta da NVIDIA è sensibile solo al TLP, Thread Level Parallelism, che risulta abbastanza semplice da applicare e gestire per ottenere buoni risultati (l´estrazione del TLP deve tenere in considerazione solo i conflitti fra thread che si verificano quando questi devono condividere delle risorse). L´architettura AMD, invece, può essere sfruttata al meglio sia estraendo parallelismo a livello di thread, appunto TLP, che a livello di istruzioni (ILP o Thread Level Parallelism). Questo significa un maggiore sforzo di ottimizzazione da parte del Thread Scheduler che non sempre riuscirà a tenere la GPU AMD al massimo delle sue possibilità.

Per concludere c'è la questione DX 10.1 ma in tal caso ognuno mostra pareri discordanti in merito quindi lascio a te la risposta,

Spero che la spiegazione ti sia abbastanza chiara.

Dott.Wisem
09-09-2008, 20:50
provo a risponderti e spero di essere sufficientemente chiaro:

partiamo con due GPU attuali

NVidia GT2xx
Ati RV770
......
......
l´architettura NVIDIA preferisce lavorare su moltissimi thread semplici, composti da poche o meglio da una sola istruzione. L´approccio AMD mostra il meglio di sé, invece, con threads complessi e pieni di istruzioni.

In aggiunta, l´architettura proposta da NVIDIA è sensibile solo al TLP, Thread Level Parallelism, che risulta abbastanza semplice da applicare e gestire per ottenere buoni risultati (l´estrazione del TLP deve tenere in considerazione solo i conflitti fra thread che si verificano quando questi devono condividere delle risorse). L´architettura AMD, invece, può essere sfruttata al meglio sia estraendo parallelismo a livello di thread, appunto TLP, che a livello di istruzioni (ILP o Thread Level Parallelism). Questo significa un maggiore sforzo di ottimizzazione da parte del Thread Scheduler che non sempre riuscirà a tenere la GPU AMD al massimo delle sue possibilità.
Grazie della risposta, però rimango ancora perplesso sul discorso. Ma forse, per avere delle idee più chiare, il confronto andrebbe fatto in questo modo:

n. MAX teorico istruzioni per ciclo di clock;

n. medio di istruzioni generate per ciclo di clock, prendendo in considerazione degli shader molto simili a quelli usati in giochi recenti.

Poi, immagino che nel confronto fra i due concorrenti, entri in gioco anche il discorso della velocità di clock doppia per le shader unit delle GPU nVidia...

Per concludere c'è la questione DX 10.1 ma in tal caso ognuno mostra pareri discordanti in merito quindi lascio a te la risposta,Purtroppo non sono informato sulla questione DX 10.1.... :(

Defragg
10-09-2008, 09:47
Grazie della risposta, però rimango ancora perplesso sul discorso. Ma forse, per avere delle idee più chiare, il confronto andrebbe fatto in questo modo:

n. MAX teorico istruzioni per ciclo di clock;

n. medio di istruzioni generate per ciclo di clock, prendendo in considerazione degli shader molto simili a quelli usati in giochi recenti.

Allora questa immagine dovrebbe chiarirti un po' le idee.
http://images.anandtech.com/reviews/video/ATI/4800/ilp.png
http://www.anandtech.com/video/showdoc.aspx?i=3341&p=6
Ma per ottenere quel risultato è necessario lavorare sui driver.

Mercuri0
10-09-2008, 09:55
Ecco, appunto, io intendevo proprio questo: un'unità shader di una recente GPU nVidia, quante e che tipo di operazioni può fare in più rispetto allla concorrente? Alla fine, nelle specifiche tecniche, credo che questa sia una cosa fondamentale da far sapere, altrimenti come faccio a rendermi conto se, almeno su carta, una GPU è migliore di un'altra?
E' assolutamente impossibile fare il confronto tra le schede leggendo le specifiche tecniche. Anche le ROP sono differenti (per dire)

L'unico modo per confrontare le schede è leggersi qualche recensione o farsi consigliare da qualcuno che l'ha lette.

Al massimo nelle specifiche puoi vedere una variazione del clock rispetto al modello di riferimento.

p.s. le 36xx stanno per essere sostituite dalle 46xx

Dott.Wisem
10-09-2008, 11:45
Allora questa immagine dovrebbe chiarirti un po' le idee.
http://images.anandtech.com/reviews/video/ATI/4800/ilp.png
http://www.anandtech.com/video/showdoc.aspx?i=3341&p=6
Ma per ottenere quel risultato è necessario lavorare sui driver.
Interessantissimo articolo, thx. ;)

yossarian
13-09-2008, 14:49
Chi è in grado di rispondere alle seguenti domande? Una volta avrei potuto rispondere io stesso, ma purtroppo è da un bel po' che non sono più informatissimo sulle evoluzioni tecnologiche delle GPU ATi e nVidia... Ad ogni modo, ecco le domande:

1) Come mai le schede ATi, pur avendo un numero spropositato di unità shader unificate, è da un po' di anni mi pare che, tranne che per l'ultima serie 48xx, vanno peggio delle schede nVidia, le quali invece hanno unità shader in quantità notevolmente inferiore?



un confronto basato sui numeri è impossibile perchè le tipologie di unità di calcolo sono completamente differenti. L'approccio di nVIDIA prevede alu di tipo scalari ciascuna delle quali capaci di eseguire una MADD una SFU e un'operazione sul controllo di flusso per il dynamic branching, con un approccio di tipo seriale. Ogni alu può lavorare su un singolo thread, quindi, in teoria, GT200 può operare su 240 thread per ogni ciclo, eseguendo una singola operazione per volta tra quelle relative a quello specifico thread.
RV770 ha unità di calcolo di tipo vliw, ovvero ognuna è composta da 5 alu capaci di eseguire una MADD (una di queste può, in alternativa, eseguire una sfu) e da una unità per il controllo di flusso, con un approccio di tipo parallelo. Questo significa che ogni unità di calcolo delle 160 presenti su una HD48x0 può eseguire contemporaneamente fino a 5 operazioni (più una per il dynamic branching) in parallelo, purchè siano relative allo stesso thread.
In conclusione, mentre GT200 ha, in teoria, la possibilità di operare sempre al massimo delle proprie capacità di calcolo, RV770 ha una capacità di calcolo che può oscillare dalle 160 alle 800 operazioni matematiche per ciclo di clock.
Altre differenze si hanno nelle operazioni di texturing: nVIDIA ha più unità di texture filtering mentre ATi ha più unità di texture address e fa uso di texture cache di tipo fully associative (mentre quelle di nVIDIA sono di tipo set associative 2-way): il primo approccio è di tipo brute force (punta sulla quantità di operazioni possibili) il secondo tende a ridurre a zero il rischio di cache miss. Differenti sono pure le rop's o RBE; quelle di nVIDIA sono ottimizzate per le operazioni di riempimento dello z-buffer (le unità preposte a svolgere le color ops sono in grado di fare anche z-ops, raddoppiando, di fatto, lo z-fillrate); quelle ATi sono ottimizzate per l'uso del MSAA box filter in modalità 4x e 8x avendo più unità di interpolazione lineare e più punti di "spilling". Sempre relativamente alle rop's i chip ATi hanno la possibilità di adoperare 2 differenti render target per color e z-ops: questo permette di risparmiare banda passante ed eseguire un passaggio di rendering in meno per l'applicazione di MSAA con motori grafici che fanno uso di deferred rendering. Altra differenza, infine, nel memory controller, di tipo simmetrico quello di nVIDIA con 8 canali da 64 bit (32+32) sia lato ram che lato gpu, asimmetrico quello di ATi con 4 canali lato ram e 32 lato gpu (il primo garantisce una canale più ampio verso le ram ma costituirebbe un collo di bottiglia in caso di utilizzo di ram veloci, il secondo presenta un canale enorme lato gpu, puntando sull'uso di ram veloci e sull'utilizzo di algoritmi per il rispermio di banda verso la ram (multirender target, tessellation, texture matrix, cubemap matrix, color compression soprattutto con MSAA attivo, ecc).



2) Come mai ATi continua a proporre schede video di fascia media con oltre 100 unità shader unificate, ma 4 rop invece che 8 ? Non è sprecato avere tutte quelle unità shader, se poi hai in uscita un notevole collo di bottiglia rappresentato dal pixel throughput dimezzato rispetto alla concorrenza? Finché la tipica risoluzione usata nei videogiochi era 1024x768 potevo anche capire, ma oggi la minima risoluzione è diventata 1280x800 (risoluzione standard di un notebook 15.4") ed i monitor LCD wide vanno da 1440x900 in su...

vale quanto detto sopra: le rop's di ATi e nVIDIA sono differenti e non è possibile fare un paragone di tipo numerico. Inoltre è diversa l'occupazione di banda per le due gpu (e tale divario aumenterà con l'adozione di engine dx10 e dx10.1) quindi anche l'impegno delle rop's è diverso.

Dott.Wisem
14-09-2008, 15:10
un confronto basato sui numeri è impossibile perchè le tipologie di unità di calcolo sono completamente differenti. L'approccio di nVIDIA prevede alu di tipo scalari ciascuna delle quali capaci di eseguire una MADD una SFU e un'operazione sul controllo di flusso per il dynamic branching, con un approccio di tipo seriale. Ogni alu può lavorare su un singolo thread, quindi, in teoria, GT200 può operare su 240 thread per ogni ciclo, eseguendo una singola operazione per volta tra quelle relative a quello specifico thread.
RV770 ha unità di calcolo di tipo vliw, ovvero ognuna è composta da 5 alu capaci di eseguire una MADD (una di queste può, in alternativa, eseguire una sfu) e da una unità per il controllo di flusso, con un approccio di tipo parallelo. Questo significa che ogni unità di calcolo delle 160 presenti su una HD48x0 può eseguire contemporaneamente fino a 5 operazioni (più una per il dynamic branching) in parallelo, purchè siano relative allo stesso thread.
In conclusione, mentre GT200 ha, in teoria, la possibilità di operare sempre al massimo delle proprie capacità di calcolo, RV770 ha una capacità di calcolo che può oscillare dalle 160 alle 800 operazioni matematiche per ciclo di clock.
Altre differenze si hanno nelle operazioni di texturing: nVIDIA ha più unità di texture filtering mentre ATi ha più unità di texture address e fa uso di texture cache di tipo fully associative (mentre quelle di nVIDIA sono di tipo set associative 2-way): il primo approccio è di tipo brute force (punta sulla quantità di operazioni possibili) il secondo tende a ridurre a zero il rischio di cache miss. Differenti sono pure le rop's o RBE; quelle di nVIDIA sono ottimizzate per le operazioni di riempimento dello z-buffer (le unità preposte a svolgere le color ops sono in grado di fare anche z-ops, raddoppiando, di fatto, lo z-fillrate); quelle ATi sono ottimizzate per l'uso del MSAA box filter in modalità 4x e 8x avendo più unità di interpolazione lineare e più punti di "spilling". Sempre relativamente alle rop's i chip ATi hanno la possibilità di adoperare 2 differenti render target per color e z-ops: questo permette di risparmiare banda passante ed eseguire un passaggio di rendering in meno per l'applicazione di MSAA con motori grafici che fanno uso di deferred rendering. Altra differenza, infine, nel memory controller, di tipo simmetrico quello di nVIDIA con 8 canali da 64 bit (32+32) sia lato ram che lato gpu, asimmetrico quello di ATi con 4 canali lato ram e 32 lato gpu (il primo garantisce una canale più ampio verso le ram ma costituirebbe un collo di bottiglia in caso di utilizzo di ram veloci, il secondo presenta un canale enorme lato gpu, puntando sull'uso di ram veloci e sull'utilizzo di algoritmi per il rispermio di banda verso la ram (multirender target, tessellation, texture matrix, cubemap matrix, color compression soprattutto con MSAA attivo, ecc).



vale quanto detto sopra: le rop's di ATi e nVIDIA sono differenti e non è possibile fare un paragone di tipo numerico. Inoltre è diversa l'occupazione di banda per le due gpu (e tale divario aumenterà con l'adozione di engine dx10 e dx10.1) quindi anche l'impegno delle rop's è diverso.Grazie yossarian, sei stato chiarissimo. L'unica cosa su cui rimango perplesso è il discorso ROP, nel senso che, secondo me, un numero doppio di ROP determina la possibilità teorica di sparare il doppio dei pixel in uscita per ciclo di clock. Quando determinate condizioni sono soddisfatte, quindi, la GPU con il doppio delle ROP può essere il doppio più performante.
In conclusione, quindi, mi pare di capire che nVidia adotti un approccio più pratico, volto a dare risultati tangibili nell'immediato, mentre ATi preferisce guardare al futuro, sperando che la complessità degli shader aumenti molto più di quanto si aspetti nVidia. Devo dire, però, che non mi aspettavo che ATi adottasse una cache full-associative, visto che una set-associative odierna permette di risparmiare una quantità notevole di transistor ad un costo di performance praticamente trascurabile.

yossarian
14-09-2008, 20:09
Grazie yossarian, sei stato chiarissimo. L'unica cosa su cui rimango perplesso è il discorso ROP, nel senso che, secondo me, un numero doppio di ROP determina la possibilità teorica di sparare il doppio dei pixel in uscita per ciclo di clock. Quando determinate condizioni sono soddisfatte, quindi, la GPU con il doppio delle ROP può essere il doppio più performante.


teorica ma non pratica, poichè senza i filtri attivi le rop's non costituiscono un collo di bottiglia.


In conclusione, quindi, mi pare di capire che nVidia adotti un approccio più pratico, volto a dare risultati tangibili nell'immediato, mentre ATi preferisce guardare al futuro, sperando che la complessità degli shader aumenti molto più di quanto si aspetti nVidia. Devo dire, però, che non mi aspettavo che ATi adottasse una cache full-associative, visto che una set-associative odierna permette di risparmiare una quantità notevole di transistor ad un costo di performance praticamente trascurabile.

la complessità degli shader sta già aumentando (lo dimostra anche il diverso approccio tra G80 e GT200, in cui il rapporto alu/tex aumenta da 2:1 a 3:1).
Una set associative 4-way ha una complessità comparabile a quella di una fully associative, mentre una 2-way ha bisogno, comunque, di essere affiancata da un buon circuito di branching (che ne aumenta la complessità).

Dott.Wisem
14-09-2008, 20:54
teorica ma non pratica, poichè senza i filtri attivi le rop's non costituiscono un collo di bottiglia.E perché? Anche se non uso filtri, comunque posso generare al più 8 pixel in output per ciclo di clock, mentre con 4 rop, anche se la GPU avesse il potenziale per riuscire a generare quasi sempre 8 pixel per ciclo di clock, avendo la metà delle ROP, non potrebbe andare oltre i 4 pixel/clock.

la complessità degli shader sta già aumentando (lo dimostra anche il diverso approccio tra G80 e GT200, in cui il rapporto alu/tex aumenta da 2:1 a 3:1).
Una set associative 4-way ha una complessità comparabile a quella di una fully associative, mentre una 2-way ha bisogno, comunque, di essere affiancata da un buon circuito di branching (che ne aumenta la complessità).Non sono esperto in materia, però negli articoli ho sempre letto che la cache fully-associative è usata poco perché le prestazioni di una set-associative a 2 o 4 vie sono molto simili, ma la complessità della prima (in termini di numero di transistor da usare) è decisamente maggiore.

Athlon 64 3000+
14-09-2008, 21:07
In RV770 per caso nelle rop's è stato reinserito il circuito di resolve per fare MSAA di tipo lineare? Io sapevo che in R600 e RV670 la avevano messo nello shader core,mentre in RV770 non so se è nelle rop's o nello shader core.

yossarian
15-09-2008, 02:11
E perché? Anche se non uso filtri, comunque posso generare al più 8 pixel in output per ciclo di clock, mentre con 4 rop, anche se la GPU avesse il potenziale per riuscire a generare quasi sempre 8 pixel per ciclo di clock, avendo la metà delle ROP, non potrebbe andare oltre i 4 pixel/clock

sarebbe vero se le rop's fossero indipendenti dal resto della gpu. Nella realtà le cose stanno in maniera moltoi diversa e le rop's non rappresentano praticamente quasi mai il collo di bottiglia: per cui avere il doppio delle rop's e tenerne buona parte inattiva è solo uno spreco di transistor. Solo nei bench sintetici che calcolano il pure fillrate con 8 bit interi per colore, si raggiunge il massimo teorico possibile sulla base del numero di rop's e della loro frequenza di funzionamento; sono sufficienti 3 o 4 texel per pixel per vedere il fillrate pressochè diìmezzarsi; se ci aggiungi anche operazioni matematiche il calo è ancora più sensibile. Questo vale sia per i chip ATi che per quelli nVIDIA, segno evidente che non sono le rop's a frenare la velocità d'elaborazione. Se uso i filtri e, in particolare, il MSAA, salgo di risoluzione facendo color blending a fp16 o, addirittura, a fp32, allora le rop's possono iniziare a costituire un collo di bottiglia, ma, a questo punto, non è meglio avere la metà delle rop's con, però, il doppio delle unità che fanno operazioni di blending? Risposta: si, perchè dallo shader core arrivano, comunque, meno dei pixel necessari a tenere occupate tutte le rop's e quelle occupate svolgono il loro lavoro a velocità doppia (tieni conto anche cha tra shader core e rop's c'è un crossbar che serve a "smistare" i pixel verso le unità di calcolo libere).


Non sono esperto in materia, però negli articoli ho sempre letto che la cache fully-associative è usata poco perché le prestazioni di una set-associative a 2 o 4 vie sono molto simili, ma la complessità della prima (in termini di numero di transistor da usare) è decisamente maggiore.

una set-associative ha bisogno, in ogni caso, di un buon circuito di branching, la 2-way in misura ancora maggiore rispetto alla 4-way e, comunque, non assicura i risultati raggiungibili con una fully associative. Diciamo che la più usata è la 2-way associative con abbinato, almeno un cincuito di DB e qualche algoritmo di branching statico, ma solo perchè presenta un ottimo rapporto costi/benefici, ma non rappresenta l'eccellenza. Anche per le tmu vale il discorso fatto per le rop's: l'approccio di nVIDIA punta più sul numero, quello di ATi sull'efficienza.
Questo tipo di filosofia è riscontrabile in tutto il chip se si fa un confronto tra le due architetture, tranne che nel caso delle unità di shading, dove la situazione è completamente ribaltata (efficienza per nVIDIA, approccio di tipo "brute force" per ATi).

In RV770 per caso nelle rop's è stato reinserito il circuito di resolve per fare MSAA di tipo lineare? Io sapevo che in R600 e RV670 la avevano messo nello shader core,mentre in RV770 non so se è nelle rop's o nello shader core.

RV670 ha il circuito di resolve nelle rop's (come pure rv770); in r600 non c'è un circuito negli shader, ma sono gli shader stessi che si occuano di fare le interpolazioni necessarie per i calcoli relativi al MSAA.

Dott.Wisem
15-09-2008, 14:52
Ok, ma allora perché le schede nVidia di fascia media (tipo le 8600) usano il doppio delle ROP rispetto alle soluzioni ATi? Andrebbero uguale se ne avessero 4 invece di 8?

yossarian
15-09-2008, 15:52
Ok, ma allora perché le schede nVidia di fascia media (tipo le 8600) usano il doppio delle ROP rispetto alle soluzioni ATi? Andrebbero uguale se ne avessero 4 invece di 8?

Dipende dal tipo di rop's: quelle nVIDIA puntano sulla velocità di riempimento dello z-buffer per cui maggiore è il numero di rop's più velocemente si completa questa operazione. Un'elaborazione, eprò, non è fatta di solo z-buffer e le rop's di ATi sono più veloci nelle operazioni di color blending e di applicazione del MSAA (soprattutto quelle della serie 4); operazioni per cui, però, non serve un gran numero di rop's perchè sarebbe sovradimensionato rispetto alla quantità di dati che lo shader core riesce ad inviare.
Le rop's dei chip NV, se fossero la metà, impiegherebbero, per ogni frame, semplicemente il doppio del tempo a riempire lo z-buffer, cosa che avviene con quelle dei chip ATi che, però, riguadagnano con le operazioni successive (cosa che i chip NV non sarebbero in grado di fare).

Domanda per domanda, tra una 260 e una 4870, il vantaggio nel pixel fillrate teorico è del 25% a vantaggio della prima (tenendo conto anche delle differenti frequenze di funzionamento); tale vantaggio dovrebbe aumentare per le operazioni in cui le rop's possono costituire un collo di bottiglia. Eppure non è affatto così, anzi ocn i filtri aumenta il vantaggio della 4870.
Come te lo spieghi?

Dott.Wisem
15-09-2008, 16:30
Dipende dal tipo di rop's: quelle nVIDIA puntano sulla velocità di riempimento dello z-buffer per cui maggiore è il numero di rop's più velocemente si completa questa operazione. Un'elaborazione, eprò, non è fatta di solo z-buffer e le rop's di ATi sono più veloci nelle operazioni di color blending e di applicazione del MSAA (soprattutto quelle della serie 4); operazioni per cui, però, non serve un gran numero di rop's perchè sarebbe sovradimensionato rispetto alla quantità di dati che lo shader core riesce ad inviare.
Le rop's dei chip NV, se fossero la metà, impiegherebbero, per ogni frame, semplicemente il doppio del tempo a riempire lo z-buffer, cosa che avviene con quelle dei chip ATi che, però, riguadagnano con le operazioni successive (cosa che i chip NV non sarebbero in grado di fare).
Capito. Ti ringrazio per l'esauriente risposta. :)
Domanda per domanda, tra una 260 e una 4870, il vantaggio nel pixel fillrate teorico è del 25% a vantaggio della prima (tenendo conto anche delle differenti frequenze di funzionamento); tale vantaggio dovrebbe aumentare per le operazioni in cui le rop's possono costituire un collo di bottiglia. Eppure non è affatto così, anzi ocn i filtri aumenta il vantaggio della 4870.
Come te lo spieghi?Beh, probabilmente nell'ultima serie di schede (4xxx) ATi ha risolto un bel po' di problemi che affliggevano quelle precedenti... Difatti, prima di queste, se non vado errato le GPU ATi arrancavano un po' nei benchmark, rispetto alla serie 8xxx di nVidia. Fra l'altro, la nuova fascia media di ATi propone schede dotate finalmente di 8 ROP (probabilmente era un passo obbligato, visto che hanno ben 320 unità shader, invece di 120 delle HD26xx e HD36xx...).

yossarian
15-09-2008, 19:20
Beh, probabilmente nell'ultima serie di schede (4xxx) ATi ha risolto un bel po' di problemi che affliggevano quelle precedenti... Difatti, prima di queste, se non vado errato le GPU ATi arrancavano un po' nei benchmark, rispetto alla serie 8xxx di nVidia. Fra l'altro, la nuova fascia media di ATi propone schede dotate finalmente di 8 ROP (probabilmente era un passo obbligato, visto che hanno ben 320 unità shader, invece di 120 delle HD26xx e HD36xx...).

hai centrato il problema