Ciao a tutti,
finalmente ho concluso dei test che voglio condividere con tutti voi.
Stavolta le schede in questione sono una Savage4 Extreme e una Creative Blaster Banshee. Di seguito le specifiche:
-) Savage4 32 MB SDRAM -> core/mem 143/143
-) Creative Banshee 16 MB SGRAM -> core/mem 100/100
Perchè un confronto del genere? Dando per scontato che sarebbe più corretto confrontare a una Banshee una Savage3D (e non una Savage4, scheda uscita diversi mesi dopo), penso che il confronto possa risultare interessante, per due ragioni:
-) sono entrambe delle architetture 1x1, con la differenza che la Savage4 può effettuare multitexture in single-pass al contrario della Banshee;
-) la Banshee ha un bus verso la RAM ampio 128 bit contro i 64 bit della Savage4.
Inoltre, in passato cambiai la mia Banshee per una Savage4, e volevo togliermi la curiosità di quale fosse più veloce su un sistema molto più potente di quello che avevo allora! :D
Il sistema utilizzato è composto da:
-) CPU Pentium 3 866 Mhz;
-) Motherboard con chipset VIA Apollo133A;
-) RAM 384 MB;
-) Windows 98 SE.
L'analisi si dividerà in tre parti: una sulle prestazioni 2D, una sulle prestazioni 3D e una sulla qualità di immagine.
Partiamo con l'analisi delle prestazioni 2D:
Wow... la Banshee domina il test 2D. Un plauso a 3dfx per l'ottimo motore 2D che hanno saputo creare praticamente dal nulla (le schede precedenti erano acceleratori esclusivamente 3D). Le prestazioni 2D della Savage4 sono tanto basse che mi hanno insospettito: ho fatto quindi qualche test per capire se il problema fosse legato al chip grafico o alla banda verso le VRAM.
Ecco i risultati:
I risultati sono inequivocabili: il bus a 64 bit strozza le prestazioni del chip di S3.
Una nota circa la qualità dell'output: la Savage4 in mio possesso, una OEM senza marca, ha una qualità 2D decisamente inferiore a quella esibita dalla Creative Banshee. Questo conferma quanto ricordavo, e cioè che la mia ex V3200 (una Banshee della ASUS) aveva una qualità 2D decisamente superiore a quella di una pur marchiata Creative Savage4.
Ora le prestazioni 3D:
Per l'occasione, ho testato la Banshee sia con gli ultimi driver reference, sia con i Banshee evolution 09. Questi ultimi driver danno prestazioni maggiori, ma rendono Quake3 praticamente ingiocabile: ogni secondo, ci sono degli scatti dove il gioco rimane quasi bloccato e dei momenti in cui gli fps sono normali.
Esaminando le prestazioni 3D, notiamo dei risultati misti: se nei giochi single-texture (vedi Forsaken) la Banshee fa valere la forza dei suoi 128 bit di bus e non risulta penalizzata dal clock notevolmente inferiore, nei giochi multi-texture è il Savage4 ad avvantaggiarsi considerevolmente. Perchè, dato che entrambi i chip hanno architettura 1x1? Semplice: il Savage4 supporta il single-pass multi-texture, funzionalità che gli permette di migliorare le sue prestazioni in confronto a quelle della Banshee. Ma come è possibile questo, dato che anche la Savage4 ha una sola TMU? Per capire il punto, vediamo prima come si comporta la Banshee in situazione di single-texture e dual-texture.
Per disegnare un pixel ricoperto da 2 texture, la Banshee deve fare due passate di rendering:
--prima passata - single texture--
1) fare il primo texture fetch (4 campioni da 16 bit, per un totale di 8 byte);
2) leggere il valore dello Z-buffer alle coordinate dove andrà disegnato il pixel (2 byte);
3) se, in base al controllo precedente, il pixel deve risultare visibile, scrivere il nuovo valore Z nello Z-buffer (2 byte);
4) se il pixel deve risultare visibile, scrivere il valore di colore del pixel (2 byte) nel framebuffer;
--seconda passata - dual texture--
5) fare il secondo texture fetch (4 campioni da 16 bit, per un totale di 8 byte);
6) leggere il valore dello Z-buffer e del color buffer alle coordinate dove andrà disegnato il pixel (4 byte);
7) se, in base al controllo precedente, il pixel deve risultare visibile, scrivere il nuovo valore Z nello Z-buffer (2 byte);
8) se il pixel deve risultare visibile, amalgamare il colore del nuovo campionamento con quello precedente e quindi scrivere il nuovo valore di colore del pixel (2 byte) nel framebuffer.
I passaggi sopra esposti sono solo indicativi, in quanto possono essere effettuati in ordine diverso da quanto indicato e, soprattutto, ci sono cache interne al chip che possono alleviare il traffico verso la VRAM. In ogni caso, basilarmente, le operazioni da compiere sono quelle indicate sopra. In situazione di single-texture la scheda deve compiere solo i passi da 1 a 4; con una sola texture, quindi, abbiamo 100 Mp/sec e 100 Mt/sec, per un carico sul bus di 1.4 GB/sec.
Con due texture, la schede deve compiere anche gli altri passaggi. Tirando le somme, vediamo che con 2 texture a 16 bit e il z/color buffer sempre a 16 bit, per ogni pixel la Banshee muove 30 byte di dati. A 50 Mpx/sec e 100 Mtx/sec (ricordo che stiamo parlando di pixel dual-textured), vediamo che il bus verso la VRAM è caricato di 1.5 GB/sec. Come potete intuire, in questo caso il numero di pixel processati dalla scheda è della metà rispetto al massimo teorico (abbiamo, infatti, 50 Mp/sec) ma, essendo ogni pixel ricoperto da due texture, abbiamo 100 Mt/sec. Non a caso 3dfx ha scelto di equipaggiare la Banshee con un bus in grado di garantire 1.6 GB/sec... Da quanto visto sopra, quindi, deduciamo che la Banshee ha prestazioni in termini di Mt/sec praticamente costanti, sia con una che con due texture per pixel; questo comporta che l'utente avverte un calo di fps di circa il 50% nei giochi che usano 2 texture per pixel in quanto il pixel fill rate si dimezza, assestandosi a 50 Mp/s.
Ora passiamo alla Savage4... leggendo i passaggi indicati sotto, tenete a mente che tale scheda ha bus da 64 bit e quindi è generalmente limitata dalla larghezza di banda della memoria video. Per disegnare un pixel con due texture (sempre con valori a 16 bit), la scheda deve fare una sola passata di rendering:
1) fare il primo texture fetch (4 campioni da 16 bit, per un totale di 8 byte);
2) fare il secondo texture fetch (4 campioni da 16 bit, per un totale di 8 byte);
3) leggere il valore dello Z-buffer alle coordinate dove andrà disegnato il pixel (2 byte);
4) se, in base al controllo precedente, il pixel deve risultare visibile, scrivere il nuovo valore Z nello Z-buffer (2 byte);
5) se il pixel deve risultare visibile, scrivere il valore di colore del pixel (2 byte) nel framebuffer;
Di nuovo, analizziamo per prima il comportamento in single texture: in questo caso, il chip può in teoria muovere fino a 143 Mp/sec - 143Mt/sec, con un carico sul bus di 2.0 GB/sec. Il punto è che il bus verso la VRAM garantisce, a 143 Mhz, un massimo di 1,144 GB/sec. Questo vuol dire che la scheda è ampiamente limitata dalla banda di memoria, al punto che, verosimilmente, le prestazioni del chip grafico non potranno eccedere gli 82 Mp/sec - 82 Mt/sec... meno di quanto garantito dal Banshee e, infatti, in questa modalità il Savage4 non è molto distante dalla scheda di 3dfx, a fronte di un vantaggio di clock del ben 43%. Se a questo punto vi chiedete perchè, pur con valori teorici inferiori, la scheda di S3 riesca a stare davanti (seppur di poco) a quella di 3dfx anche in un gioco single-texture come Forsaken, non preoccupatevi: me lo sono chiesto anch'io. E ho una sola risposta: le cache e l'efficienza del memory controller. Evidentemente, l'accoppiata cache/controller di S3 riesce a raggiungere un'efficienza percentuale maggiore rispetto a quella di 3dfx.
Vediamo che succede nei giochi dual texture: in questo caso, il chip deve spendere due cicli di clock nel campionamento delle due texture; questo vuol dire che il suo limite massimo di riempimento scende a 71,5 Mps/sec con 143 Mt/sec (ogni pixel "vale doppio", essendo coperto da 2 texure). A fronte del calo del pixel-rate del 50%, il carico verso la VRAM, invece di salire (a causa del secondo campionamento), scende: con un pixel-rate di 71,5 Mp/sec e 2 texture per pixel, arriviamo a 1.573 GB/sec. Questo valore è ancora troppo per il bus del Savage4, ma è considerevolmente minore di quanto necessario in single-texture. In modalità dual-texture, la banda verso la VRAM garantisce al chip un massimo di 52 Mp/sec - 104 Mt/sec. In altre parole, nei giochi multi-texture, il Savage4 è meno limitato dalla velocità della VRAM e dipende in misura maggiore dalla velocità del processore grafico. Questo vuol dire che, abilitando il dual-texture, l'utente avvertirà solo un modesto calo di fps (nell'ordine del 30%), a fronte dell'applicazione di 2 texture per pixel. Di nuovo, questi risulati in termini di Mp/s e Mt/s non sembrano molto lontani da quelli della Banshee ma, dato che i test con Q2 e Q3 mostrano prestazioni notevolmente superiori, dobbiamo imputare al chip S3 un'ottima efficienza della combo cache/controller, che riesce a ottenere il meglio dalla limitata banda di memoria.
Per verificare se le considerazioni sopra esposte sono corrette, ho condotto alcuni test sullo scaling della Savage4. Nel grafico seguente, potete trovare i risultati di alcuni test condotti con frequenze di clock differenti:
Dal grafico notiamo diverse cose interessanti:
-) i risultati del fill-rate single-texture della Savage4 sono notevolmente migliori rispetto a quanto calcolato sulla sola base della larghezza di banda da e verso il framebuffer, tanto da essere superiori a quelli della Banshee (che ha il chip a soli 100 Mhz ma gode di un bus verso la VRAM ampio 128 bit); questo indica un'ottima efficienza della cache e del memory controller. Potenzialmente, quindi, i risultati della Savage4, anche in regime di single-texture, possono essere leggermente superiori a quelli della Banshee (che però gira a clock notevolmente inferiori): infatti, Forsaken gira leggermente più veloce sul chip di S3);
-) con il chip a 100 Mhz e la VRAM a 143 Mhz, la scheda S3 arriva al 96,1% e 98,4% di efficienza rispettivamente con i test single-texture e dual-texture. Parrebbe che con questi clock la VRAM non sia più il fattore limitante;
-) con il chip a 143 Mhz e la VRAM a 100 Mhz, riscontriamo che quest'ultima rappresenta un pesante collo di bottiglia tranne che nel test dual-texture. Infatti, i risulati del test single-texture sono più bassi di quelli ottenuti con il chip a 100 Mhz (abbiamo infatti 87,3 Mp/sec), mentre i valori del test dual-texture sono notevolmente migliori, assestandosi sui 133 Mp/sec. Sulla stessa linea, Forsaken (un gioco single-texture) gira meglio con la scheda settata a 100/143 (core/mem) che non a 143/100 (core/mem).
In altre parole, il grafico conferma che, con l'utilizzo di applicazioni dual-texture, la scheda S3 risenta meno del collo di bottiglia verso la VRAM.
Esaurito il discorso prestazioni, passiamo a quello qualità. La 3dfx è stata tanto criticata, in passato, per la scelta dei soli 16 bit di colore. La sua risposta era articolata su due punti:
-) l'algoritmo di dithering delle sua schede era notevolmente superiore a quello della concorrenza;
-) grazie all'utilizzo di DAC particolari, si poteva abilitare una modalità simil-22 bit che doveva garantire un'ottima qualità.
Inoltre, nell'odierna community 3dfx, ho sentito diverse volte parlare molto bene di una particolare impostazione di alpha blending (smooth alpha) che, a detta di alcuni, migliora notevolmente la qualità a video, rendendo il dithering meno evidente. In questa sezione vogliamo vedere come risponde la qualità video al variare di queste impostazioni. Purtroppo, per quanto riguarda i fantomatici 22 bit, non posso esservi d'aiuto, in quanto l'utilizzo di questa impostazione è riservato alle schede con chip Voodoo3: sulla Banshee, non mi pare dare differenze (per lo meno a occhio). Inoltre, tale effetto non sarebbe comunque catturabile tramite screenshot, dato che viene applicato direttamente dal DAC. Invito quindi i possessori di Voodoo3 a abilitare i 22 bit e a valutare con i propri occhi le differenze ottenibili. Un'ulteriore nota sulle immagini della Banshee: anche se non supporta il DAC avanzato per i 22 bit di colore, tale scheda, come tutte le precedenti 3dfx, supporta comunque un effetto, applicato sempre nel DAC, di interpolazione lineare di tipo 4x1 (i pixel di una riga vengono interpolati 4 alla volta). Le immagini presentate qui sotto _non_ possono tenere conto di questo effetto (applicato nel DAC) e, quindi, la qualità di questi screenshot è comunque leggermente inferiore rispetto a quella ottenuta a video. Fatte queste premesse, andiamo avanti... ;)
Iniziamo con le immagini a 16 bit della Savage4:
A 32 bit, la qualità della Savage4 aumente notevolmente:
Ora vediamo quelle della Banshee, iniziando con le classiche impostazioni a 16 bit, con settaggio alpha impostato di default (sharper):
Ora impostiamo l'alpha blending a smooth:
Da quanto possiamo vedere nelle immagini, impostando l'alpha blending a smooth il dithering sul canale alpha viene effettivamente disabilitato! Questa può essere una soluzione che porta vantaggi in alcuni casi (vedasi lo screenshot della nebbia: a me sembra leggermente meglio _senza_ dithering sull'alpha channel) ma svantaggi in altri (vedasi le bande verdi dell'immagine del muro o quelle del cielo: senza dithering sono molto evidenti). In pratica, in alcune immagini servirebbe l'alpha smooth e in alcune quello sharper... capirete quindi la mia curiosità nel vedere che è possibile settare una modalità "auto".
Di seguito le immagini ottenute con l'alpha blending in "auto":
Ai miei occhi, purtroppo, settare l'alpha blending in auto equivale a impostarlo a sharper (default, con dithering) e quindi questa impostazione non sembra sortire nessun effetto.
Bene... direi che abbiamo analizzato tutto l'analizzabile! :p
E' ora di tirare le conclusioni:
-) nei giochi single-texture, la Banshee è quasi equivalente alla Savage4 Extreme, nonostante un forte svantaggio a livello di clock. Ciò vuol dire che, se messa a confronto con le varianti più comuni di Savage4 (LT/GT/Pro), risulterebbe più veloce di queste ultime nonostante la scheda 3dfx sia di una generazione precedente;
-) nei giochi multi-texture la Savage4 si porta avanti in modo più deciso, dato che, con queste impostazioni, la limitata ampiezza di banda ha effetti proporzionalmente minori rispetto all'aumento del carico di lavoro sul chip grafico. Questo vuol dire che, pur con una sola TMU, grazie al single-pass multi-texture la scheda S3 è più indicata per i giochi che usano più texture per pixel (Unreal, Quake2, Quake3, ecc.);
-) utilizzando la profondità colore di 32 bit, le prestazioni della Savage4 scendono parecchio. A differenza di altre schede dello stesso periodo, però, la qualità del dithering a 16 bit non è niente male; ricordo che con i primi driver i 16 bit di colore erano inguardabili... si vede che poi S3 ci ha messo una pezza. In altre parole, meglio giocare a 16 bit ma con FPS accettabili che non 32 bit con FPS bassi (almeno con questa scheda);
-) i 16 bit della scheda 3dfx sono si più gradevoli da vedere rispetto a quelli della Savage4, ma non sono comunque perfetti. Valgono però le considerazioni in merito all'impossibilità di catturare con degli screenshot gli effetti applicati dal DAC (sono curioso di conoscere le opinioni di chi può vedere una Voodoo3 con il filtro DAC avanzato per l'abilitazione dei 22 bit di colore);
-) le prestazioni 2D del chip S3 sono pesantemente limitate dalla banda di memoria; il chip 3dfx invece ha un motore 2D semplicemente spettacolare;
-) la qualità della visualizzazione a video (RAMDAC e filtri passa-basso) è molto maggiore sulla Creative Banshee, ma non è detto che Savage4 di altre marche non possano avere una qualità dell'output paragonabile a quella della scheda Creative.
Considerazione conclusiva finale: checchè se ne dica, io resto convinto che i 16 bit di colore di 3dfx erano più che sufficienti all'epoca, quando gli FPS con gli ultimi giochi non erano mai troppo elevati. Chi aveva una TNT2 poteva si giocare a 32 bit, ma, quando aveva bisogno di più velocità era costretto a scalare a una modalità 16 bit davvero scadente. Più che altro, 3dfx poteva includere una modalità 32 bit anche solo "di facciata", ma che sarebbe stata sufficiente per calmare le polemiche sollevate all'ora.
Altri pareri?
Ciao. :)