|
|
|
![]() |
|
Strumenti |
![]() |
#41 | |
Senior Member
Iscritto dal: Nov 2002
Città: Singularity
Messaggi: 894
|
Quote:
![]() Comunque stavo pensando... il Kyro 2 andava in crisi se c'erano troppi triangoli per tile, in particolare se erano > 512, cioè più di uno per pixel. Guardando le specifiche del Unreal Engine 3 si legge che arriva a 1.2 milioni di triangoli per scena, e a 1024x768 significa in medi più di uno per pixel... Si deve complicare la circuiteria interna per gestire il culling di un maggior numero di triangoli (mantenendo buona la tecnologia degli Infinite Planes così come è descritta da Beyond 3d). La soluzione ibrida di yossarian mi sembra molto più interessante, ma da quello che so non dovrebbe essere molto diversa da quella che Ati sfrutta con la sua HyperZ HD.
__________________
echo 'main(k){float r,i,j,x,y=-15;while(puts(""),y++<16)for(x=-39;x++<40;putchar(" .:-;!/>"[k&7])) for(k=0,r=x/20,i=y/8;j=r*r-i*i+.1, i=2*r*i+.6,j*j+i*i<11&&k++<111;r=j);}'&>jul.c;gcc -o jul jul.c;./jul |Only Connect| "To understand is to perceive patterns" Isaiah Berlin "People often speak of their faith, but act according to their instincts." Nietzsche - Bayesian Empirimancer - wizardry |
|
![]() |
![]() |
![]() |
#42 | |
Senior Member
Iscritto dal: Oct 2004
Città: Palermo
Messaggi: 16598
|
Quote:
Simon sposta nella sezione giusta ![]() Scherzo eh... il motore sempre volkswagen è quindi... ![]() Ultima modifica di BTinside : 13-11-2004 alle 15:26. |
|
![]() |
![]() |
![]() |
#43 | |
Senior Member
Iscritto dal: Oct 2004
Città: Palermo
Messaggi: 16598
|
Quote:
il doppio fill rate dell'ultrashadow di NV40 , non viene compensato da R420 con l'HyperZ??? Altrimenti come fa una X800XT PE a competere e spesso superare la 6800Ultra? Non ditemi che questo vantaggio sia solo merito delle frequenze più alte di R420 |
|
![]() |
![]() |
![]() |
#44 | |
Senior Member
Iscritto dal: Apr 2001
Città: Bari
Messaggi: 2776
|
Quote:
![]() Il fill rate doppio di NV40 rispetto a R420 è presente nel rendering sul solo z-buffer o sul solo stencil buffer. Queste operazioni non sono molto frequenti e vengono fatte essenzialmente per realizzare le stencil shadow in Doom III. Quindi NV40 ha il doppio del fill rate di R420 limitatamente a quella situazione. Nella più diffusa e classica operazione di rendering contemporaneamente nello z-buffer e nello stencil buffer le due architettura si comportano allo stesso modo. Hyper-Z HD racchiude tecniche di compressione del colore e dei dati relativi allo z-buffer oltre a tecniche per la rimozione di superfici nascoste. Il rendering fatto per le ombre di Doom III non beneficia + di tanto di queste tecniche. Solo nell'ultima passata in cui si scrive nel frame buffer si vedono i miglioramenti dovuti all'Hyper-Z HD. |
|
![]() |
![]() |
![]() |
#45 | |
Senior Member
Iscritto dal: Oct 2004
Città: Palermo
Messaggi: 16598
|
Quote:
|
|
![]() |
![]() |
![]() |
#46 | |
Senior Member
Iscritto dal: Jun 2003
Messaggi: 4826
|
Quote:
Pape |
|
![]() |
![]() |
![]() |
#47 | |
Senior Member
Iscritto dal: Apr 2001
Città: Bari
Messaggi: 2776
|
Quote:
|
|
![]() |
![]() |
![]() |
#48 | |
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
in effetti non è molto differente; in questo caso, una soluzione "ibrida" è l'unico mezzo per non stravolgere la logica del chip e per ovviare ai problemi di spazio interno. Il Kyro, infatti, è un chip molto semplice, con un'architettura 2x1 e con una sola alu per pipeline (come, d'altra parte, anche NV15, NV2x, R100 e R200), operante a 32 bit (8 per canale) in virgola fissa. Realizzato a 0,18 u ha, perciò, un notevole spazio interno per allocare buffer di varia natura e, proprio grazie a questa caratteristica, presenta soluzioni molto moderne per l'epoca in cui è stato progettato (la possibilità di applicare 8 texel per pixel per single pass, ad esempio pur disponendo di 1 sola tmu). Nel caso dell'R300, invece, la situazione è molto diversa: elevato parallelismo, elevato numero di transistor, architettura molto complessa e poco spazio interno al chip. Perciò i registri adoperati come tile buffer (l'R300 ne utilizza 3 poichè adotta un algoritmo a 3 livelli) sono di dimensioni estremamente ridotte (4x4, 2x2 e 1) rispetto a quello del Kyro2 (16x32), però la necessità di ricorrere alla display resolution è ridotta al minimo: E' ovvio che il tbr si basa su un principio diverso nella gestione del rendering dell'immagine, però anche l'algortimo di ATi prevede la completa eliminazione di tutte le superfici nascoste e risulta persino più veloce del tbr nel caso di scansione front to back. Ultima modifica di yossarian : 13-11-2004 alle 22:52. |
|
![]() |
![]() |
![]() |
#49 | |
Senior Member
Iscritto dal: Sep 2001
Città: Pescara
Messaggi: 3695
|
Quote:
non sono d'accordo. A questi livelli le aziende rivali si studiano a vicenda sono in grado di capire abbastanza precisamente cosa farà l'avversario e/o anche come lo farà. La tecnologia TBR è davvero fantastica (sebbene affetta da diversi problemi, non ultimo quello di doversi scontrare con delle API pensate per operatori di rendering immediato) e dire che non conviene usala perchè tanto si può aumentare il bus e/o la frequenza mi sembra un tantino fuori luogo. Immagina un chip della complessita (e con la potenza bruta) di NV40 accoppiato alla tecnologia TBR: se un KyroII da 350Mp/Mt per secondo teneva testa a una GF2GTS da 800Mp/1600Mt per secondo, chissa cosa potrebbe fare questo ipotetico chip... Un'ultima cosa: la tecnologia UltraShadowII non ha nulla a che fare con il TBR. E' vero che in ultima analisi lo scopo di queste tecnologie è quello di risparmiare calcoli non processando ciò che non serve, ma il modo in cui lo fanno e i principi a cui si appoggiano (nonchè la loro efficenza) sono molto differenti... X Yossarian: così com'è strutturato l'R300 non ha bisogno di tenere nessuna triangle list o in qualche caso è necessario anche per lui ricorrere a queste famose liste? CIAO! ![]() |
|
![]() |
![]() |
![]() |
#50 | ||
Senior Member
Iscritto dal: Nov 2002
Città: Singularity
Messaggi: 894
|
Quote:
Quote:
Un dubbio.. il Kyro doveva parte della sua efficenza alla possibilità di operare localmente su una tile tranne nella fase di texture fetch (se non ricordo male), e questo significava anche risparmio di banda. Le attuali schede hanno per quello che si sa una specie di cache interna oppure accedono sempre direttamente al framebuffer?
__________________
echo 'main(k){float r,i,j,x,y=-15;while(puts(""),y++<16)for(x=-39;x++<40;putchar(" .:-;!/>"[k&7])) for(k=0,r=x/20,i=y/8;j=r*r-i*i+.1, i=2*r*i+.6,j*j+i*i<11&&k++<111;r=j);}'&>jul.c;gcc -o jul jul.c;./jul |Only Connect| "To understand is to perceive patterns" Isaiah Berlin "People often speak of their faith, but act according to their instincts." Nietzsche - Bayesian Empirimancer - wizardry |
||
![]() |
![]() |
![]() |
#51 | ||
Senior Member
Iscritto dal: Nov 2002
Città: Singularity
Messaggi: 894
|
Quote:
Quote:
![]() http://www.xbitlabs.com/articles/vid...ay/r420_9.html Oltre allo Z-buffer c'è un "Tile Z buffer" che tiene traccia del valore Z più alto della tile. Prende un singolo poligono e lo divide in blocchi 8x8, testando i valori Z agli angoli. Se sono tutti superiori al valore memorizzato nel "Tile Z buffer" il blocco viene scartato, altrimenti raffina a blocchi di 4x4, e se necessario, a 2x2, ovvero a livello di pixel.
__________________
echo 'main(k){float r,i,j,x,y=-15;while(puts(""),y++<16)for(x=-39;x++<40;putchar(" .:-;!/>"[k&7])) for(k=0,r=x/20,i=y/8;j=r*r-i*i+.1, i=2*r*i+.6,j*j+i*i<11&&k++<111;r=j);}'&>jul.c;gcc -o jul jul.c;./jul |Only Connect| "To understand is to perceive patterns" Isaiah Berlin "People often speak of their faith, but act according to their instincts." Nietzsche - Bayesian Empirimancer - wizardry |
||
![]() |
![]() |
![]() |
#52 | |
Senior Member
Iscritto dal: Sep 2001
Città: Pescara
Messaggi: 3695
|
Quote:
![]() Avevo letto anche io qualcosa su come funziona l'HSR sull'R300 ed ero a conoscenza di questa "tile z buffer", però non ho capito se, per operare su una tile, deve prima generare la tringle list relativa (come nei chip Kyro). CIAO! ![]() |
|
![]() |
![]() |
![]() |
#53 | |
Senior Member
Iscritto dal: Oct 2004
Città: Palermo
Messaggi: 16598
|
Quote:
è implicito e può significare tante cose -non ne hanno la voglia...........perchè risulterebbe compromettente economicamente |
|
![]() |
![]() |
![]() |
#54 | |
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Da puntualizzare una cosa; a partire dalla generazione DX7 (l'R100 ad esempio) i chip non eseguono più immediate rendering (tranne, la GF2) ma hanno un algoritmo per la rimozione delle superfici nascoste. Il problema è che non tutti eseguono, newi casi dubbi, il test alla display resolution (come invece fa l'R300). Questo non permette di eliminare completamente tutti i poligono nascosti, dando luogo in alcuni casi, al fenomeno dell'overdraw che diventa tanto più grave quanto più alta è la risoluzione, maggiore il numero di poligoni e a filtri attivi. Il TBR, invece, utilizza solo la display resolution (cioè la risoluzione reale a cui si lavora) per effettuare il test; questo permette un'analisi accurata pixel per pixel. |
|
![]() |
![]() |
![]() |
#55 | |
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
no, hanno delle cache interne, però, a parte il caso dell'R300 e, suppongo, dell'R420, non sono sicuro che gli altri effettuino test pre rendering alla display resolution; se così fosse, il fenomeno dell'overdraw non sarebbe del tutto eliminato, perchè l'analisi sullo z-buffer della ram video viene fatta in fase di post processing, ovvero a rendering effettuato. |
|
![]() |
![]() |
![]() |
#56 | |
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
il Kyro, ha un'architettura molto semplice: è una 2x1, con una sola alu fx8 per pipeline; questo, su un chip a 0,18 u, permette di ricavare molto spazio per utilizzare cache interne per svolgere varie funzioni (da qui la possibilità di fare multitexturing a 8 layer in single pass e di utilizzare tile di grandi dimensioni (16x32) da caricare on chip). Al paragone, lo stesso NV15, con la sua 4x2 (e 1 alu fx4/fx8 per pipeline) o l'R100 con la 2x3 e 1 alu fx8 per pipeline, sono molto più complessi; per non parlare dell'R300, realizzato a 0,15, ma con architettura 8x1, con 2 fpu per pipe, 4 unità VS, ecc. ecc.: in un chip così complicato, che già deve implementare il numero minimo di registri per essere compatibile con il tipo di API per cui è progettato (DX9 in questo caso), non c'è molto spazio per allocare una ulteriore cache di grandi dimensioni (tipo quella del Kyro) per fare TBR (ATi, sull'R300, ha dovuto "risparmiare", cercando di ridurre al minimo la complessità dei circuiti che si occupano del LoD e dell'AF), facendo ricorso al numero minimo di bit consentiti per avere una corretta visualizzazione. Questo è il motivo per cui le dimensioni della tile alla display resolution sono state scelte di soli 4x4 pixel (R200, ad esempio, l'aveva 8x8, però on chip era caricata solo una tile a "risoluzione" ridotta, delle dimensioni di 2x2 pixel scelti col criterio dei pivot sui 4 gruppi 4x4 costituenti la tessera di partenza: infatti R200 non effettua early z-test alla display resolution ed è affetto dal fenomeno dell'overdraw). |
|
![]() |
![]() |
![]() |
#57 | |||
Senior Member
Iscritto dal: Nov 2002
Città: Singularity
Messaggi: 894
|
Quote:
![]() A proposito, mi chiedo se l'attuale tendenza a inserire molte funzioni complesse on chip sia conveniente, piuttosto che replicare molte volte le operazioni più frequenti, essenzialmente MAC e divisioni (per il calcolo delle coordinate texture), più o meno come nell'Emotion Engine, che infatti ha un numero di transistor molto ridotto (10 milioni). Ovvio che un'architettura simile significa la necessità di un buon lavoro a livello di driver ![]() Quote:
Quote:
__________________
echo 'main(k){float r,i,j,x,y=-15;while(puts(""),y++<16)for(x=-39;x++<40;putchar(" .:-;!/>"[k&7])) for(k=0,r=x/20,i=y/8;j=r*r-i*i+.1, i=2*r*i+.6,j*j+i*i<11&&k++<111;r=j);}'&>jul.c;gcc -o jul jul.c;./jul |Only Connect| "To understand is to perceive patterns" Isaiah Berlin "People often speak of their faith, but act according to their instincts." Nietzsche - Bayesian Empirimancer - wizardry |
|||
![]() |
![]() |
![]() |
#58 | ||
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
l'attuale tendenza sta iniziando a mostrare la corda; riprova ne è il fatto della ricerca di soluzioni multi-vga, come lo SLI di nVIDIA. E' molto probabile che la generazione prossima (R520 e NV50?) sia l'ultima con questo tipo di architettura; in seguito si dovrebbe migrare verso architetture con VS e PS unificati, il che sta a significare utilizzo di circuiti in grado di eseguire le operazioni di base comuni e renderle disponibili per entrambi i tipi di unità di calcolo complesse. Risultato: maggior parallelismo, drastica riduzione dei tempi morti nelle elaborazioni (periodi in cui uno dei due blocchi è inattivo, in attesa che l'altro termini i suoi calcoli) e, soprattutto, notevole risparmio di transistor (molte unità di calcolo elementari, attualmente contenute sia nei ps che nei vs, non saranno replicate ma saranno uniche e i risultati da esse forniti saranno a disposizione di chi ne avrà bisogno in quel momento). Quote:
Ultima modifica di yossarian : 14-11-2004 alle 11:49. |
||
![]() |
![]() |
![]() |
#59 | ||
Senior Member
Iscritto dal: Nov 2002
Città: Singularity
Messaggi: 894
|
Quote:
che a loro volta coordinano ciascuna 4 o 8 unità SIMD. Anche le voci riguardo R500 parlano di 48 ALU dotate di un'unità vettoriale. A quanto pare è la soluzione più efficiente ![]() Quote:
http://www.ati.com/products/radeon97...pro/specs.html In che senso si avrebbe risparmio di banda? andando a leggere/ scrivere solo blocchi di 4 pixel sul framebuffer non si ha un guadagno di banda? Anche copiando tutto il blocco 8x8 arrivati a livello pixel si deve eseguire uno Z-test classico perchè comunque non ci sono più blocchi da rigettare/raffinare. E sarebbe necessario copiare poi il blocco elaborato nel framebuffer. Questo andando a logica, dimmi se sto sbagliando qualcosa ![]()
__________________
echo 'main(k){float r,i,j,x,y=-15;while(puts(""),y++<16)for(x=-39;x++<40;putchar(" .:-;!/>"[k&7])) for(k=0,r=x/20,i=y/8;j=r*r-i*i+.1, i=2*r*i+.6,j*j+i*i<11&&k++<111;r=j);}'&>jul.c;gcc -o jul jul.c;./jul |Only Connect| "To understand is to perceive patterns" Isaiah Berlin "People often speak of their faith, but act according to their instincts." Nietzsche - Bayesian Empirimancer - wizardry |
||
![]() |
![]() |
![]() |
#60 | ||
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Si, R500 dovrebbe avere un'architettura con 48 alu polifunzionali più 16 texture unit; una società consociata di ATi (intrinsity) sta da tempo conducendo esperimenti su processori con unità SIMD, enormi cache interne e frequenze molto elevate (raggiungibili grazie alla semplicità del chip). Quote:
Ho parlato di risparmio di banda perchè, nel caso la tile 8x8, quella alla display resolution, tanto per intenderci, non è caricata on chip, la sua analisi avviene in post processing, quando è già stata effettuata l'operazione di texturing; questo significa che è sempre presente il rischio di overdraw. In caso contrario, lo z-test preventivo rimuove tutti i poligoni, non si ha overdraw e lo z-test effettuato in post processing (perchè in ogni caso si effettua un doppio controllo, prima e dopo le operazioni di texturing), ha solo il compito di mero controllo |
||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:17.