Novice
arhiv
Članki
Testi
Forum
mali oglasi
teme zadnjih 24h
iskanje
Pravila
Povezave
Ostalo
Anketa
| Znam programirati: | | da | 43% |  (707) | | ne | 33% |  (542) | | morda | 21% |  (348) | | ne vem | 3% |  (56) | | Skupaj glasov: 1653 |
Predlagajte vprašanje za naslednjo anketo!
|
|
  Nova bitka v vojni grafičnih kartic
Avtor: Marko Dolenc Datum: 26. 9.2004 |
|
Da je računalništvo hitro se razvijajoča
panoga čivkajo že vrabčki na vejah. Da se grafične kartice
razvijajo še hitreje od ostalih področij znotraj računalništva,
je takisto lahko jasno vsakemu, ki vsaj vsake toliko preleti kakšen cenik z
računalniško opremo. Hitrost s katero prihajajo in odhajajo s
teh cenikov razni modeli grafičnih kartic je namreč naravnost
osupljiva.
Mnogokrat pa je bilo že tudi v praksi dokazano, da je v vsakem hitrem
svetu že majhna napaka dovolj za izpad iz igre, pa naj bo to izlet iz
steze v formuli 1 ali pa zgrešena generacija grafičnih
čipov v bitki za čim večji tržni delež. Nekaj let
nazaj si je takšen izlet iz proge privoščil slavni 3dfx, kar so
plačali s propadom podjetja. Lani pa si je podobeno napako privoščil
še en gigant - NVIDIA. Prav zato so bile to rundo vse oči uprte v NVIDIO
in ali jim bo uspela vrnitev v igro ali pa bodo počasi odšli v
prašne strani zgodovine. Kako stvari stojijo danes?
| | Rdeči tabor | |
ATI je že pred dvema letoma izdal jedro imenovano R300 (in
kartici
Radeon 9700 in 9700 PRO, ki sta nosili ta čip). R300 je bil prvi
čip,
ki je bil izdelan z DirectX 9.0 v mislih in je bil predstavljen celo prej kot
sama knjižnica DirectX 9.0. Kljub temu pa se je to jedro kasneje
izkazalo
za izjemno dobro zasnovano, saj je z manjšimi popravki zmoglo opraviti
z
vso konkurenco vse do nove generacije kartic, o katerih je govora v tem
članku.
| | Novo jedro R420 |
 Radeon X800 XT |
Tistim, ki nekoliko bolje spremljajo razvoj grafičnih kartic,
je kodno ime R420 gotovo vsaj malce dvignilo obrvi. Proizvajalci namreč radi
poimenujejo svoje koščke silicija z lepimi
"okroglimi" imeni.
Konkretno so zadnje tri ATI-jeve generacije nosile imena R100 (originalni
Radeon), R200 (Radeon 8500) in že omenjeni R300. Dejstvo, da je nov
čip imenovan R420, nakazuje, da je ATI delal na čipu R400,
vendar je bil projekt opuščen. Na nove Radeone X800 bi tako lahko
gledali tudi kot na rešitev v sili, ko je ATI ugotovil, da jedro R400 ne bi bilo
konkurenčno.
Tega občutka se ne znebimo, ko si pogledamo same
specifikacije, saj novi Radeoni iz družine X800 delujejo bolj kot štiri jedra RV360
zlepljena skupaj, kot pa povsem nov čip. To seveda ni nujno slabo, saj tako lahko
pri ATI-ju sam čip bolje optimizirajo, ker vedo, kje so bile težave s
prejšnjo generacijo. Poleg tega pa je tudi funkcijsko starejše
jedro še vedno dovolj močno tudi za najnovejše igre. Kljub
temu pa je v novem jedru tudi nekaj novosti. Najpomembnejša novost je gotovo
algoritem za stiskanje tekstur 3Dc. Gre za predelavo že
obstoječega DXTC (DirectX Texture Compression) oziroma S3TC in je bistveno bolj
primeren za stiskanje t.i. normal map, ki jih na veliko uporabljajo sodobne igre (Doom 3,
Far Cry,...). Igre lahko zato uporabljajo večje normal mape, ali pa za
že obstoječe normal mape porabijo 4x manj prostora v
pomnilniku grafične kartice. Vendar pa morajo to novo kompresijo igre posebej
podpreti.
 Mapa normal |
 Mapa normal zakompresirana z DXT1. 3Dc odpravlja te napake (glej nos pošasti). Napake pa postanejo še bistveno bolj očitne, ko je mapa normal uporabljena za izris luči. |
Druga novost je sprememba v pixel shaderjih, ki so sedaj lahko dolgi do
512 ukazov (96 na R300), še vedno pa spadajo v generacijo 2.0 in
ponujajo manj kot tisti v GeForce-ih FX. Tretja sprememba pa je, da so kotne funkcije sedaj
en ukaz namesto makroja šestih ukazov, kar lahko precej pohitri
shaderje, ki uporabljajo kotne funkcije. Med novosti bi lahko šteli tudi temporal
antialiasing, vendar gre le za uporabo možnosti programiranja vzorcev
za mehčanje robov, ki je prisotna že v R300. Velika prednost tega
načina je, da z menjavanjem vzorcev za vsako izrisano sliko navidez
podvojimo število vzorcev (torej 2x FSAA izgleda zelo blizu 4x FSAA).
Ima pa tudi slabost, in sicer deluje dobro le pri dovolj velikem številu
slik na sekundo (čez 60 fps).
| | Zeleni tabor | |
NVIDIA se je lani znašla v hudih škripcih, saj je
njihov odgovor na Radeona 9700 PRO najprej pošteno zamujal, ko pa je kočno
prišel na dan, se je izkazalo, da je v novih DirectX 9.0 aplikacijah tudi bistveno
počasnejši. Kot da to še ne bi bilo dovolj, je bila
kartica GeForce FX 5800 Ultra, zasnovana na jedru NV30, še pošteno
glasna, in vse to je povzročilo, da dejansko ni nikoli ugledala polic trgovin.
GeForce FX 5900 (NV35) je sicer odpravil nekaj arhitekturnih težav (o
tem več malce kasneje), zaradi katerih je bil njegov predhodnik tako
počasen v programih, ki so uporabljali pixel shaderje 2.0. Še
vedno pa je ostala nadležna težava, ki je vztrajno
zmanjševala hitrost shaderju skladno s količino uporabljenih registrov. Kljub funkcijsko
bogatemu čipu je bilo pred prihodom nove generacije bolj ali manj jasno,
da bo NVIDIA morala precej drastično poseči v arhitekturo, če se
hoče enakovredno kosati s konkurenco.
| | NV40 stopi v ring |
 GeForce 6800 Ultra |
Da novi GeForce ni ravno zgled enostavnosti je razvidno že iz
števila tranzistorjev v tej novi zverini, ki jih je kar 220
milijonov (160 milijonov v konkurenčnem Radeonu X800). Seveda pa samo število
tranzistorjev ne odloča o zmagovalcu. NVIDIA je iz prejšnje
generacije obdržala dobre lastnosti, predvsem velja tukaj omeniti
tehnologijo UltraShadow, ki podvoji število izrisanih pik, ko so
potrebne samo Z in stencil vrednosti (renderiranje senc v Doom 3), preostanek
čipa pa je več ali manj povsem nov. NV40 je že po prvem pogledu v
specifikacije funkcionalno zelo napreden čip, saj je prvi, ki podpira
t.i. shader model 3.0 z vsemi novostmi, ki jih ti shaderji prinašajo.
Omogoča dostop do tekstur iz vertex shaderja, kar nam omogoča
displacement mapping. Podprogrami, vejitve in zanke delujejo tako na nivoju
ogljišč trikotnikov (vertex shader), kot tudi na posameznih
pikah (pixel shader). Pomembna novost je tudi možnost filtriranja tekstur
zapisanih v 16 bitnem formatu s plavajočo vejico in
"prelivanje" (blending) s tem formatom. Poleg tega pa je NV40 sposobna renderirati na 4
ločene površine, kar je podpiral že Radeon 9700,
GeForce-i FX pa ne. Pomembna novost je tudi možnost instanciranja geometrije (geometry
instancing), ki pohitri izris velike količine enakih objektov (gozd,
travnik, kup asteroidov,...). Pri tem pa je potrebno omeniti, da geometry
instancing zmanjša samo obremenitev na centralnem procesorju, saj imamo
namesto 10000 klicev v grafično knjižnico (in
posledično gonilnik) samo enega. Obremenitev grafične kartice pa je v obeh
primerih povsem enaka, pravzaprav zna biti geometry instancing celo
počasnejši v primeru, ko hočemo izrisati veliko objektov sestavljenih iz veliko
trikotnikov, saj postane problem hitrost branja oglišč iz
pomnilnika (vertex fetch), kar do sedaj še ni bil problem. Poleg tega pa to
podpirajo tudi drugi čipi in ATI je že našel pot kako to
funkcionalnost ponuditi na svojih karticah brez SM 3.0. Čip pa vsebuje še dve
novosti, ki sta veliko bolj dobrodošli za končne uporabnike.
NVIDIA se je končno oprijela mehčanja robov z rotiranim vzorcem
(Rotated Grid FSAA), ki pri enakem številu vzorcev nudi boljše
rezultate. Novost je tudi programabilen video pogon, ki vsebuje vse potrebne ukaze za
kodiranje in dekodiranje video posnetkov. S tem bo mogoče razbremeniti
centralni procesor, saj bo tako kodiranje kot dekodiranje video posnetkov v
različnih formatih (MPEG, DivX,...) prevzela grafična kartica, seveda
ob ustrezni programski opremi.
Predvsem pa je pri novem paradnem konju zelenih pomembno to, da ne
vsebuje več napak prejšnje generacije. Pixel shaderji sedaj
tečejo s polno hitrostjo tudi v polni natančnosti, pa tudi drastično
zmanjševanje hitrosti ob uporabi večih registrov je
preteklost. Še vedno pa polovična natančnost prinaša
določene hitrostne prednosti (manj pritiska na registre pomeni, da kartica lažje
skriva zakasnitve pri teksturiranju), vendar je to sedaj le še dodatna možnost kako
še bolj pohitriti shader in ne več pogoj za normalno delovanje. Edina
arhitekturna težavica je v bistvu ta, da je dostopanje tekstur iz vertex
shaderja še dokaj počasno, vendar bodo to opazili le
programerji, že osvežitev pa bo tudi to težavo
odpravila.
| | Ko postavimo oba čipa bok ob bok... | |
...ugotovimo, da se na prvi pogled skorajda ne razlikujeta. Oba
vsebujeta 6 cevovodov za obdelavo geometrije (vertex shader) in 16 cevovodov za
izrisovanje pik (pixel shader) s po eno enoto za teksturiranje.
| |
R420 (Radeon X800 XT) |
NV40 (GeForce 6800 Ultra) |
| proces izdelave |
130nm |
130nm |
| število tranzistorjev |
160 milijonov |
220 milijonov |
| hitrost jedra |
520 MHz |
400 MHz |
| število cevovodov za izris pik |
16 |
16 |
| hitrost zapolnjevanja |
8320 milijonov pik/s |
6400 milijonov pik/s (12800 samo za Z in stencil) |
| število cevovodov za obdelavo geometrije |
6 |
6 |
| hitrost izrisovanja trikotnikov |
do 780 milijonov trikotnikov/s |
do 600 milijonov trikotnikov/s |
Novi Radeon se zaradi precej višje frekvence (posledica
manjšega števila tranzistorjev) očitno odreže bolje in vsi
lahko mirno živimo naprej, saj že poznamo zmagovalca. Ali
pač?
Vendar pa stvari niso več niti približno tako
enostavne. Arhitektura vertex shader enot na obeh čipih je zelo podobna, saj je
vsak cevovod za geometrijo tako na GeForce-u kot Radeon-u zmožen obdelati
eno 128 bitno vektorsko operacijo in eno 32 bitno skalarno operacijo v enem ciklu.
Kar se tiče fleksibilnosti je v prednosti sicer GeForce, ki
omogoča daljše programe, dinamične vejitve in zanke ter dostop do
tekstur, vendar je Radeon zaradi višjih frekvenc običajno
hitrejši, ni pa nujno, saj si lahko z dinamičnimi vejitvami GeForce prihrani kar precej
dela. Poleg tega pa maličenje geometrije v današnjih igrah
sploh ni problematično, probleme pa pogosto povzroča hitrost pixel
shaderjev.
NVIDIA je pri GeForce-ih FX pošteno zavozila ravno pri pixel
shaderjih. NV30 je imel štiri cevovode od katerih je bil vsak zmožen
hkrati prebrati dve teksturi (ali pa namesto dveh tekstur eno matematično
operacijo s polno natančnostjo) in izvesti dve matematični
operaciji s fiksno vejico (torej običajnih 32 bpp in ne 64 bpp ali celo 128 bpp).
Taka arhitektura se je dobro obnesla le v DirectX 8.0 igrah (pixel shaderji 1.x).
DirectX 9.0 oziroma pixel shaderji 2.0 pa zahtevajo vsaj 16 bitno
natančnost s plavajočo vejico, zato je bil GeForce FX 5800 s
štirimi operacijami na cikel pošteno za R300, ki so jih zmogli
8. Na NV35 je NVIDIA zamenjala dve enoti za fiksno aritmetiko z eno enoto za
operacije s plavajočo vejico (ki pa ni bila sposobna vseh operacij),
še vedno pa je ostajala velika omejitev število uporabljenih
registrov, ki je hitro zmanjševala hitrost.
Če si sedaj pogledamo malce podrobneje še cevovod za
izrisovanje pik na novem Radeonu X800 (ki je identičen tistemu iz prejšnje
generacije):
 Struktura cevovoda za izrisovanje pik na Radeonu. |
vidimo da ga sestavlja ena enota za teksturiranje in dve enoti za
aritmetiko (24 bitna natančnost s plavajočo vejico). Obe enoti sta
zmožni zastonjskih modifikatorjev iz pixel shaderjev 1.4, kar pomeni, da lahko
gonilnik zazna množenje ali deljenje z 2, 4, 8 ali 16 in namesto enote za
aritmetiko uporabi modifikator (zastonsko množenje in deljenje).
Vendar pa je ena enota kar precej okleščena in ne zmore vseh
ukazov.
Vsak cevovod za izrisovanje pik v novem GeForce-u pa je sestavljen iz
dveh aritmetičnih enot, ki zmoreta izvajati vse ukaze iz specifikacije. Ker
NV40 tako kot GeForce-i FX nima specifične enote za teksturiranje, to
nalogo prevzame prva aritmetična enota, ki pa je tokrat zmožna
prebrati le eno teksturo. Obe enoti sta tudi tukaj zmožni zastonjskih
modifikatorjev iz pixel shaderjev 1.4, tako kot Radeon. Poleg tega pa sta obe
enoti super skalarni, torej se lahko dva 2D ukaza izvedeta hkrati na
isti enoti (za razliko od Radeona, kjer je lahko le en ukaz do 3D, drugi pa mora biti
vedno 1D, torej skalaren). Zanimiva prednost je tudi to, da je prva
aritmetična enota sposobna zastonj normalizirati vektor v
polovični natančnosti, kar precej pohitri shaderje za izris luči,
saj to prihrani kar 3 običajne ukaze. Tako kot pri vertex shaderjih pa tudi
pri pixel shaderjih dinamične vejitve omogočajo programerjem, da
si prihranijo nekaj nepotrebnega dela ali pa se znebijo podvojevanja dela in tako
pohitrijo shaderje. Če si pogledamo še kako nekaj zadnjih
čipov izgleda s stališča programerja:
| |
Radeon X800 |
GeForce 6800 |
Radeon 9800 |
GeForceFX 5900 |
| Vertex shaderji |
| Verzija |
2.0 |
3.0 |
2.0 |
2.0 razširjena |
| Največje število ukazov |
256 |
512 |
256 |
256 |
| Zanke, podprogrami, primerjanje s konstantami |
da |
da |
da |
da |
| Največja globina gnezdenja |
1 |
4 |
1 |
4 |
| Splošne primerjave, pogojno prekinjanje zank |
ne |
da |
ne |
da |
| Največja globina pri splošnem primerjanju |
- |
24 |
- |
24 |
| Število različnih tekstur |
- |
4 |
- |
- |
| Število konstant |
256 |
256 |
256 |
256 |
| Število začasnih registrov |
16 |
32 |
16 |
12 |
| Pixel shaderji |
| Verzija |
2.0 razširjena |
3.0 |
2.0 |
2.0 razširjena |
| Največje število ukazov |
512 |
4096 |
96 |
512 |
| Zanke, podprogrami, primerjanje s konstantami |
ne |
da |
ne |
ne |
| Največja globina gnezdenja |
- |
4 |
- |
- |
| Splošne primerjave, pogojno prekinjanje zank |
ne |
da |
ne |
ne |
| Največja globina pri splošnem primerjanju |
- |
24 |
- |
- |
| Število različnih tekstur |
16 |
16 |
16 |
16 |
| Število konstant |
32 |
224 |
32 |
32 |
| Število začasnih registrov |
32 |
32 |
12 |
22 |
| | Ko potegnemo črto | |
Za to generacijo je očitno, da bo izredno izenačena.
Kar ATI pridobi zaradi višje frekvence lahko NVIDIA odvzame z boljšo
in fleksibilnejšo arhitekturo. Katera kartica pa bo zmagovala, bo v
največji meri odvisno od igre in pixel shaderjev, ki jih bo
uporabljala. NVIDIA se je z novimi GeForce-i zagotovo vrnila nazaj v igro in
izničila prednost, ki si jo je ATI ustvaril v zadnjem letu. Prihodnost bo tako
še zanimiva... Kot vedno.
|
|
Za vse na Slo-Techu objavljene prispevke odgovarjajo izključno njihovi avtorji Copyright by Slo-Tech Team Vse pravice pridržane! ISSN 1581-0186 Design (ampak res samo oblika) by Kodesign Alternativne barvne sheme by Exonium Production Do strani dostopate iz:
| Prijava | |
Zadnje novice
Napad na Border Gateway Protocol (27)
Izšel brezplačni VMware ESXi Hypervisor (17)
Izšel Django 1.0 (6)
Google izdal lasten brskalnik (305)
Začenja se nova sezona oddaje Resnična resničnost (28)

|