GeForce 7800 GTX - újítások
2004 áprilisában az NVIDIA bemutatta NV40 kódnevű GPU-ját, mellyel a hosszú ideje trónoló ATI-t letaszította a videokártyák küzdelmében győztesnek kijáró helyről. Az új GPU-ra épülő csúcskártya neve GeForce 6800 Ultra lett, a GeForce FX-ek csúfos szereplése után egy totálisan felújított architektúraként mutatkozott be, mely támogatta a Shader Model 3.0-t, a HDR-t és 222 millió tranzisztoros „szörnyszülöttként” a GeForce FX-ekhez hasonlóan melegedett, így kétslotos hűtést igényelt. A magas tranzisztorszám az új GeForce-ot megakadályozta az extra magas órajelek elérésében (elfogadható kihozatal mellett 350-400 MHz-en jártak az új chipek), ami – mint nem sokkal később kiderült – az újdonsült GeForce trónjába került.
G70 | NV40 | R480 | |
Gyártástechnológia | 0,11 µm (TSMC) | 0,13 µm (IBM) | 0,13 µm low-k (TSMC) |
Tranzisztorok száma | 302 millió | 222 millió | 160 millió |
GPU órajele | 430 MHz | 400 MHz | 540 MHz |
Pixelfutószalagok száma | 24 | 16 | 16 |
Pixel fillrate | 6880 Mpixel/s | 6400 Mpixel/s | 8640 Mpixel/s |
Futószalagonkénti textúrázó egységek száma | 1 | 1 | 1 |
Textúra fillrate | 10320 Mtexel/s | 6400 Mtexel/s | 8640 Mtexel/s |
Vertex shader egységek száma | 8 | 6 | 6 |
Támogatott PS-verzió | 3.0+ | 3.0+ | 2.0+ (24 bites precizitás) |
Támogatott VS-verzió | 3.0+ | 3.0+ | 2.0+ (32 bites precizitás) |
Memória órajele | 600 MHz | 550 MHz | 590 MHz |
Memória effektív órajele | 1200 MHz | 1100 MHz | 1180 MHz |
Memóriainterfész | 256 bit | 256 bit | 256 bit |
Memória-sávszélesség | 38400 MB/s | 35200 MB/s | 37760 MB/s |
Memória mérete | 256-512 MB | 256-512 MB | 256-512 MB |
Memóriatípus | GDDR3 | GDDR3 | GDDR3 |
AGP-busz | PCIe / (AGP 8x?) | AGP 8x / PCIe | AGP 8x / PCIe |
Támogatott DirectX-verzió | 9.0c | 9.0c | 9.0b |
Memória-optimalizáció | LMA III; Color Compression; Normal Map Compression (V8U8, 3Dc) |
LMA III; Color Compression |
HyperZ HD |
További optimalizációk | IntelliSample 4.0; CineFX 4.0; UltraShadow 2.0; Adaptive Transparency AA |
IntelliSample 3.0; CineFX 3.0; UltraShadow 2.0; |
SmartShader HD; SmoothVision HD; 3Dc Compression; Temporal AA |
Nem egészen egy hónappal később az ATI is kiadta legújabb GPU-ját, mely az R420-as kódnévre hallgatott, a kártya pedig a Radeon X800 XT nevet kapta. Az R420 (az NV40-nel ellentétben) inkább egy feltupírozott Radeon 9800-asra hasonlított, mintsem hogy egy teljesen új architektúra lett volna, azonban a kisebb magméret (160 millió tranzisztor) és a gyártás során felhasznált technológia (low-k dielektrikum) lehetővé tette, hogy ez a chip konkurensénél jóval magasabb órajeleket is elérjen, így 520 MHz-en a Radeon X800 XT Platinum Edition a legtöbb játékban gyorsabbnak bizonyult a GeForce 6800 Ultránál. Később mindkét gyártó hozott újításokat (az ATI az X850-esekkel, az NVIDIA az SLI-vel), azonban a két gyártó közül egyik sem lett egyértelműen a 3D-s játékok koronázatlan királya. Most, több mint egy évvel később az NVIDIA újra támadásba lendült, és bejelentette legújabb grafikus processzorát, az NVIDIA G70-et.
A G70 elvi felépítése
Az új architektúra a GeForce 7 nevet kapta, a most megjelent grafikus processzor pedig a G70 kódnevű magra épül (ellentétben az előzőleg felröppent NV48 kódnévvel). A G70 az NVIDIA NV40 leszármazottjának tekinthető, ebben azonban nincs semmi rossz, hiszen az NV40 nagyon jól sikerült. A GPU natívan támogatja a PCI Express csatlakozást, és 0,11 mikronos gyártástechnológiával a TSMC üzemeiben készül. Ismerkedjünk meg kicsit közelebbről az új architektúrával. Elöljáróban meg kell említenünk, hogy a G70 kétségkívül napjaink legösszetettebb grafikus processzora, több mint 302 millió tranzisztorral simán körözi az előző generáció képviselőjét, az NV40-et a maga 222 millió tranzisztorával (és az R480-at, mely 160 millióból épül fel). A tranzisztorszám megnövekedése mégsem jelent gondot az előállítás során, hiszen a kisebb csíkszélességű gyártástechnológia lehetővé teszi, hogy egyetlen szilíciumostyából csaknem annyi mag készüljön, mint korábban. Ez egyben azt is jelenti, hogy elviekben a G70 gyártása alig kerül többe, mint az NV40-é. A tranzisztorszám növekedése legfőképpen két újításnak köszönhető, a futószalagok száma 24-re, a vertex shaderek száma pedig 8-ra nőtt az NV40 16/6-os felépítésével szemben. Ettől függetlenül az NVIDIA nem „csak” plusz futószalagok és vertex shaderek tervezésével töltötte az elmúlt évet, hanem valóban felújította az NV40-et, hiszen mind a vertex, mind a pixel shaderek önmagukban is gyorsultak az előző generációhoz képest, emellett újfajta élsimítás lépett be a képbe. Mindez nem egyértelműen derül ki a fentebb látható grafikonból, ezért kicsit részletesebben is tárgyaljuk az itt megemlített újításokat.
Több vertex shader
A diagramon majdnem legfelül nyolc egymás melletti egységet láthatunk, ezek a vertex shaderek. Az NV40 ebből hattal rendelkezett, míg a G70 már nyolccal, ez már önmagában elegendő gyorsulást eredményezhet azokban az esetekben, amikor a futtatott program a vertexszámolási kapacitásra támaszkodik. A vertex shaderek számának emelésén felül az NVIDIA állítása szerint maguk az egységek is 20-30 %-kal gyorsultak. Mivel azonban jelenkorunk játékai nem ebből profitálnak főleg (talán a munkaállomások esetében más lehet a helyzet), ezért nem ez a G70-es chip legfőbb újítása. Mindesetre mivel a vertex eljárások könnyedén párhuzamosíthatóak, ezért már csak az egységek számának 33 %-os emelése is gyorsulást eredményez a vertexszámolás-limitált szituációkban.
Egy G70-es vertex shader felépítése
Több és jobb pixel shader
Napjaink (és a jövő) játékai főleg a pixel shaderekre fognak támaszkodni, hiszen a különféle megvilágítások, árnyékolások és más effektek mind-mind ezeknek az egységeknek köszönhetőek. A blokkdiagram közepe táján láthatjuk a pixel shadereket négyes csoportokba rendezve, ezek a quadok, melyeket már az NV40-ből is megismerhettünk. A négyes shadercsoportok közösen osztozkodnak egyes erőforrásokon, mint például az L2 textúra-gyorsítótár, azonban ennél is fontosabb kiemelni, hogy a G70 esetében pixel shaderenként számolhatunk két mini-ALU-val (arithmetic-logic unit). A mini-ALU az NV35-ben mutatkozott be, azonban az NVIDIA az NV40-ből kihagyta ezt a részegységet, mely a pixel shaderek sebességét, vagyis a GPU matematikai számolási sebességét képes gyorsítani.
Egy G70-es pixel shader felépítése
A pixel shaderek további gyorsulását az NVIDIA állítása szerint úgy érte el, hogy kielemzett több mint 1300 gyakran használt shader algoritmust, melyeket a fejlesztők játékokban és különböző programokban használnak, majd az analizálgatás eredménye egy olyan shader egység lett, mely adott idő alatt akár kétszer gyorsabb is lehet egy NV40-es pixel shadernél. Az optimalizálás eredményeként továbbá a G70-es pixel shaderek egységnyi idő alatt kétszer több MADD (multiply-add) utasítást tudnak végrehajtani, mint az NV40-ben találhatóak. Természetesen a játékokban található shaderek nem csak MADD utasításokból állnak, de az NVIDIA állítása szerint ez az egyetlen változtatás képes a G70 shaderteljesítményét az NV40-énél kétszer nagyobbá tenni.
A ROP egységek
A ROP (Raster OPeration) egységeket a diagram alsó felében találjuk meg. A G70 az NV40-hez hasonlóan 16 ROP egységgel rendelkezik, vagyis futószalagonként „átlagban” kevesebbel, mint az NV40. Hogyan lehetséges ez? A ROP egységek végzik a fragmentek pixelekké alakítását, az FSAA-számolást, ezek végzik a szín- és Z-tömörítést, illetve a ROP egységek írják ki a végső pixelt a frame bufferbe, vagyis fejezik be a renderelés folyamatát. Az NV40 és ennélfogva a G70 egyik meglepő újdonsága a pixel shaderek és a ROP egységek elkülönítése. Az, hogy az NVIDIA nem a pixelfutószalagok számának megfelelő ROP egységet épített a G70-be, azt jelenti, hogy szerinte nem a közeljövőben használt magas felbontások által megkívánt fill-rate lesz probléma, vagyis a ROP egységek számát nem kell az egekig emelni. Emlékezzünk csak vissza a GeForce 6600 GT-re, melyben a nyolc futószalag ellenére csak négy ROP egység van: az NV43-as chip esetében csak a legritkább esetben van szükség a négy ROP által elérhetővé vált render-kimenetek teljes áteresztőképességére.
Egy G70-es ROP-egység funkciói
Mindehhez hozzá kell tennünk, hogy ahogyan az NV40 esetében, úgy a G70 esetében is a ROP kimenetek órajelenként egy-egy Z és szín eredményt tudnak kiírni, azonban abban az esetben, ha a szín eredményre nincs szükség, a szín ROP egység képes egy második Z eredmény kiírására. Ebből a Z-duplázó technikából a megszokott árnyékolási technológiákkal felépített játékok tudnak igazán profitálni, mint például a Doom 3.
Nem kell több memória-sávszélesség
A G70 az NV40-hez hasonlóan 256 bites buszon keresztül kommunikál a memóriával, mégis, a GeForce 7800 GTX alig rendelkezik több memória-sávszélességgel, mint a GeForce 6800 Ultra (550 vs. 600 MHz). Vajon miért csak ennyit növelt az NVIDIA a memória sebességén? Az eddig elhangzott újítások sorából a lépés logikája kikövetkeztethető, az NVIDIA szerint a jövő játékai inkább a shaderekre fognak épülni, vagyis a shader kódok végrehajtásán kell gyorsítani, a memóriasávszélesség bővítésére egyelőre nincs szükség. A ROP egységek számának változatlansága is ennek köszönhető. Az NVIDIA úgy gondolja, hogy a nem túl távoli jövőben a textúra-sávszélesség túl fog nőni a color és Z eredmények sávszélesség-igényén. Ezzel persze nem fog teljesen leállni a memória sávszélességének növelése, mindössze a sebesség növelésének indoka fog megváltozni.
A cikk még nem ért véget, kérlek, lapozz!