Technologie: nVidia GeForce 7800 GTX
22.6.2005, Zdeněk Kabát, článek
Další evoluce v grafickém je světě je na pořadu dne. Nová rodina GeForce 7 je uvedena představením hi-endového čipu GeForce 7800GTX, který kromě masivního paralelismu vyniká i pokročilou architekturou.
Kapitoly článku:
Jádro G70 zblízka
Grafické jádro G70 je jeden z nejkomplexnějších čipů, které se v současnosti dají v desktopové oblasti najít. A je také pořádně velké - na ploše cca 330 mm2 se nachází celkem 302 milionů tranzistorů, což je děsivé číslo. Když ho srovnáme např. s procesory, tak Athlon 64 FX obsahuje 106 milionů, dvoujádrový Athlon 64 X2 233 milionů a dvoujádrové Pentium D podobných 230 milionů. Jenže u procesorů je většina plochy spotřebována do cache, zatímco GeForce 7800 GTX má prakticky všechny tranzistory využity jako výpočetní jednotky! To klade obrovské nároky na bezchybnou výrobu a protože je pravděpodobné, že G70 nemá v záloze žádné pipeline, bude výtěžnost zpočátku nejspíše malá.
G70 je vyráběna 0,11mikronovým procesem, což je v současnosti nejmodernější technologie pro GPU (procesory používají 90nm, což je plánováno i u ATi R500). nVidia má s 0,11 mikrony zkušenost už dlouho, jsou jí vyráběny veškeré GeForce 6200 a 6600, ale otázkou je, jak to bude vypadat při výrobě dvakrát tak velkého čipu.
Další zajímavou věcí je, že lepší výrobní proces u hi-endových čipů stále nepřispívá k vyšší frekvenci. Když si vezmu ke srovnání ATi, tak její Radeon X850XT zvládá se 130nm procesem frekvenci 540MHz, což je na velikost čipu obdivuhodné. Ovšem Radeon X800XL se stejným počtem tranzistorů na 110nm technologii umí maximálně 400MHz. Ani GeForce 7800 GTX na tom nebude nijak obdivuhodně a její frekvence je 430MHz. Je to sice více než u GeForce 6800 Ultra, ale přesto nic moc.
Upravená SIMD/MIMD architektura
Před 3D pipeline, resp. mezi API a AGP/PCIe rozhraním, ale stojí ještě jedna věc, a to kompilátor. První a druhá generace CineFX, tedy grafické čipy NV3x, byly postaveny VLIW architektuře (tzn. Very Long Instruction Word). Pokud bych měl její význam zjednodušit, tak VLIW procesory dokáží díky kompilátoru upravit zdrojový kód tak, že se místo několika standardních instrukcí použije instrukce jediná o velké délce slova. Ovšem právě VLIW kompilátor u GeForce FX nebyl příliš podařený už jen z důvodu, že se dodělával dodatečně k hotové NV30.
Výsledkem bylo, že instrukční slova byla skládána velmi neefektivně a pipeline se občas zasekávala a restartovala. Znamenalo to slabší výkon GeForce FX hlavně v operacích se shadery, ve kterých naproti tomu ATi excelovala. Proto nVidia nahradila u 6. generace GPU tento systém novou architekturou SIMD/MIMD, čímž usnadní práci hlavně sama sobě. (Pozn.: SIMD = Single Instruction Multiple Data, MIMD = Multiple Instruction Multiple Data).
Detailní pohled na 3D pipeline
Grafická pipeline čipu G70 vypadá následovně:
Když se podíváme na pipeline jako takovou, zjišťujeme, že se od NV40 příliš neliší. Vše začíná libovolným rozhraním, ať už se jedná o PCI Express v PC, nebo o libovolný můstek v herních konzolách apod. Jako první se počítá geometrie scény, k čemuž slouží 8 vertex pipeline. Detail jednoho enginu si můžete prohlédnout na další stránce. Další část nazvaná Cull/Clip/Setup slouží k tomu, že jsou ořezány vrcholy ležící mimo viditelnou scénu (cliping), příp. se nenachází na viditelné straně objektu (backface culling). Poté je scéna složena z jednotlivých trojúhelníků nebo polygonů.
Další část jádra zahrnuje 24 pixel pipeline, které zabírají suverénně největší část samotného GPU. Pipeline jsou rozděleny podobně, jako tomu bylo u předchozích generací grafických čipů ATi a nVidie, tedy do čtveřic nazývaných quad-pipelines. Protože G70 obsahuje šest těchto bloků, umožňuje vypnout některé části a prodávat čip jako levnější verzi. To bylo samozřejmě k vidění již u NV40 - GeForce 6800LE (8 pipelines), 6800 (12) a 6800GT/Ultra (16 pipelines).
A proč zrovna čtveřice? Odpověď nabízí Triangle Setup před tímto blokem - zde je polygon rozdělen na čtverečky o velikosti 2x2 pixely, které jsou následně distribuovány jednotlivým quad-pipelines. Protože je vždy současně zpracováván jen jeden trojúhelník, nikoliv scéna jako taková, je práce pixel pipelines nejefektivnější v případě velkých polygonů. Na obrázku totiž kromě způsobu vykreslování pixelů vidíte i další fakt, a to že se z dané čtveřice může nacházet uvnitř trojúhelníku třeba jen jeden pixel. Pak pracuje jen jedna pipeline ze čtyř.
Po výstupu z pixel pipelines procházejí data křížovým řadičem (Fragment Crossbar), který rozděluje vypočítané pixely do jednotlivých ROP jednotek. Jejich úkolem je vyrenderovat výsledný obraz a uložit jej do frame bufferu v paměti, odkud je posléze odesílán na monitor. Ke komunikaci s pamětí slouží opět křížový řadič složený ze čtyř 64-bitových komponent - dohromady tedy 256-bit přístup.