Čip G200
G200 predstavuje z technického hľadiska evolúciu čipu G80 (recenzia) s viacerými vylepšeniami efektivity, novými funkciami a zvýšeným počtom výpočtových jednotiek. Sama nVidia ju označuje ako "druhú generáciu unified visual computing" architektúru. V tejto technickej časti sa preto zameriame hlavne na novinky oproti predchádzajúcim čipom G80, G92.jadro G200-100-A2 s HS, stredné označenie 100 značí 8 aktívnych clusterov, A2 je revízia
Zhruba od roku 2005, kedy začal vývoj nového čipu, boli hlavné ciely inžinierov v nVidii vyrobiť čip, ktorý dosahuje aspoň dvojnásobný výkon G80 s orientáciou na budúcnosť a má odstránené jeho nedostatky. Pridané boli aj viaceré features, ktoré konkurencia v podobe AMD/ATi už nejakú dobu poskytovala, nVidia ale nie. Medzi takéto features patrí schopnosť vypnúť nepotrebné jednotky (clock gating) v 2D a znížiť pracovnú frekvenciu. Výsledkom je 25W spotreba GTX 280 v 2D. Vďaka tomu je aj priemerná spotreba o dosť nižšia, ako by ste si podľa TDP mohli myslieť. Pre prehrávanie videa má čip takisto svoj mód kedy šetrí energiu, nakoľko je využívaný len VP2 v NVIO Čipe. Na rozdiel od predchádzajúcich čipov, ktoré mali len 8bit color výstup, má G200 rovnako ako najnovšie Radeon grafické karty 10bit color output.
Technické parametre čipu G200 | |
Výrobný proces: |
65nm @ TSMC |
Počet tranzistorov: | ~1400 miliónov |
Plocha a rozmery jadra: | ~576mm^2; ~24mm x 24mm |
Obal jadra: | flipchip + HS |
Základná konfigurácia: | 80 textúr/ 32 pixelov/ 128x Z |
Zbernica: | 512-bit 8x 64-bit |
Podpora Direct3D: | 10(+) |
Pripojenie k systému: | PCI-Express 2.0 x16 |
Výstupy: | 2x dual-link DVI, HDMI, HDCP |
Podobne ako G92 je aj G200 je vyrábaný u TSMC v overenom 65nm procese a má plochu jadra okolo 576mm^2, čo nám dáva ~24mm dĺžku jednotlivých strán. Je teda najväčší sériovo vyrábaný čip. nVidia má pre názornosť aj jedno priame porovnanie so 45nm dvojjadrovým procesorom Intel „Penryn“.
Váži okolo 1400 miliónov tranzistorov a na štart prichádza s podobnými pracovnými frekvenciami ako G80 v roku 2006. Pôvodne boli plánované vyššie pracovné frekvencie shader-core, ktoré sa nakoniec nepodarilo dosiahnuť, pretože by čip musel mať ešte viac custom tranzistorov. V konečnom dôsledku by G200 ani s mierne vyššími frekvenciami nebol extra lepší. Ako G80, tak aj G200 má ochranu pred fyzickým poškodením v podobe heat spreader-a (HS).
Pokiaľ sa pýtate, čo zaberá takú veľkú plochu, tu je odpoveď:
memory interface (pamäťové pripojenie) obopína skoro celý čip, ktorý je tvorený prevažne clustermi s výpočtovými jednotkami
Shadercore sa javí na prvý pohľad veľmi usporiadene, čo vďačí ručne optimalizovaným „custom tranzistorom“. Vďaka tomu môže pracovať na vyšších frekvenciách ako zvyšok čipu. Obdobne sa používajú aj v moderných procesoroch. Ľahko sa dá rozoznať aj 10 clusterov. Samozrejme, nič nebráni nVidii predávať čipy G200 aj s čiastočne vypnutými clustermi – ako na GeForce GTX 260, a tak využiť aj nie úplne funkčné G200vky.
Pre nVidiu znamená veľkosť jadra G200 ale jednu veľkú nevýhodu – z jedného 300mm wafera sa môže vyrobiť teoreticky len 90 až 95 funkčných čipov. To nie je vôbec veľa a znamená v konečnom dôsledku vysokú cenu G200. S menším výrobným procesom by sa to zlepšilo, ale v dobe výroby prvých G200 to nebolo možné, keďže nemala TSMC 55nm proces dostatočne odladený na takéto veľké čipy. Mohlo teda prísť k problémom s výrobou. Ešte k tomu nemôže nVidia pre silnú konkurenciu grafické karty s G200 za takú cenu ako by chcela, inak by ich nikto nekupoval. Preto sa snaží nVidia až teraz prejsť na 55nm half-node procesu a zmenšiť čip, znížiť celkové náklady. Ticho a bez väčšej mediálnej pozornosti sa vyrobilo už množstvo 55nm G200, ktoré sú zatiaľ len na profesionálnych Quadro, Tesla kartách. Podľa všetkého sa majú dostať aj na GeForce karty. Je ale otázne, či budú mať tieto karty oproti GTX 280 a GTX 260 vyššie pracovné frekvencie a iné označenie alebo nie.
schéma jadra G200
Celkovo obsahuje jadro, ako je znázornené na obrázku, desať clusterov. nVidia ich označuje ako TPC = Texture/Thread Processing Clusters (podľa toho aké údaje sa spracovávajú). Tie poznáme už z G80, ten ich mal osem. Malé zelené časti vo vnútri sú aritmetické jednotky, alebo stream procesors (SPs). Sú zoradené do skupín po osem a táto formácia má tiež svoj názov – SM (shader multiprocessor). Keď to všetko vynásobíme: 10 TPCs * 8 SPs * 3 SMs dostaneme 240 SPs. Naozaj slušný počet, skoro dvakrát viac ako 128, ktoré má G80/G92. Jednu zo zmien, ktorú môžeme hneď spozorovať, je teda zvýšenie SMs v každom TPC. Filtrovacie a adresovacie jednotky sa naďalej nachádzajú v TPC – hnedé jednotky, ale ich pomer k SPs sa zmenil. Z 1:2 na 3:1. Potreba aritmetického výkonu narastá stále rýchlejšie ako potreba texturovacieho výkonu a tak je tento krok nVidii pochopiteľný. Napriek navýšeniu pomeru zostáva nVidia v tomto oveľade konzervatívnejšia ako AMD/ATi. V spodnej časti sa nachádzajú partície rasterizačných jednotiek, ktoré sú pripojené k 64bit pamäťovému radiču. Celkovo má G200 preto 512bit široký crossbar. V skratke, G200 má dostatok všetkého. Čo mu ale chýba je naďalej plná podpora Direct3D 10.1 aj keď nVidia uvádza, že podporuje určité features. Je prinajmenšom zaujímavé, že nVidia tieto features už , z akéhokoľvek dôvodu, nemenuje.
jeden TPC
Celkovo najväčšie zmeny sa dotkli shadercore. Vďaka tomu, že sa nVidia zamerala pri G200 na GPGPU schopnosti, máme k dispozícii oveľa viac detailov o architektúre jadra ako pri predchádzajúcich GPUs. Vďaka tomu sa môžeme pozrieť bližšie na Texture Processing Cluster alebo cluster, ako pracuje a pod. Shadercore G200 je zložený z TPCs . Každý TPC je zložený z troch shader multiprocesorov (SMs), osem adresovacích (TAUs)/filtrovacích (TFUs) jednotiek a L1 cache. Veľkosť tejto pamäti neuvádza nVidia. Vo vnútri SM sa nachádza jedna Instruction unit (IU), osem stream procesorov (SPs) a 16KiB lokálna zdieľaná pamäť. Vďaka tejto pamäti môžu, ak je vykonávaná GPGPU aplikácia, jednotlivé SPs komunikovať s inými SPs a vymieňať si údaje. Výsledkom je zvýšená efektivita a rýchlosť spracovania viacerých algoritmov.
túto jednoduchú schému využíva nVidia na znázornenie, ako pracuje G200 v tzv. CUDA compute móde
Navýšenie stream procesorov na 240 by málo prinieslo, keby ich nevedel čip poriadne využiť. Kľúčové pre koncový výkon je teda optimálne vyťaženie všetkých jednotiek. V samotnom jadre, na hw báze, to majú na starosti IU jednotky, ktoré nevykazujú stratu výkonu pri výmene threadu. Každý SM má jednu IU jednotku, ktorá dokáže riadiť skupinu 32 paralelných threadov, nVidia ich nazýva „warps“. G80 bol obmedzený len na 24 Warps. Preto sa v G200 zvýšil počet paralelne vykonateľných threadov z 12228 na 30720. Warp je jedna zo základných jednotiek G200 - branching granularita je jeden warp, teda 32 pixelov alebo 16 vertices. Keby nastala situácia, že thread vo warp potrebuje operáciu s veľkou latenciou - napr. čítanie textúry, prístup k pamäti, tak ho dokáže IU jednoducho vymeniť s iným z množstva warps, ktoré čakajú na vykonanie. Medzitým sa načítajú potrebné údaje a následne sa vykonaná vymenený warp. Čip dokáže takto zakryť latenciu a vyťažiť čo najlepšie jednotlivé výpočtové jednotky.
Jednotlivé TPCs komunikujú medzi sebou cez MIMD (Multiple Instruction, Multiple Data). SM medzi sebou však komunikujú cez SIMT (Single Instruction, Multiple Threads), ktoré sa podobá veľmi SIMD (Single Instruction, Multiple Data). Jednotlivé SPs sú v G200 viac-menej skalárne jednotky. To znamená, že tieto ALUs vypočítajú za takt jeden komponent z RGBA (Red, Green, Blue, Alpha). Každý cluster môže byť za takt zásobovaný rôznymi komponentami, podľa toho, ktorý je momentálne najdôležitejší na výpočet a pod. Clustery samé o sebe sú teda veľmi flexibilné. Menej pružné sa zdajú byť SMs, ktoré môžu pre SIMT počítať na ALUs len ten istý komponent. Nie je preto možné v rámci jedného clusteru v jednom takte vypočítať rôzne komponenty. Po jednom takte ale môžu ALUs už počítať rôzne komponenty. SMs majú byť napriek tomu vďaka efektívnemu thread schedulingu veľmi dobre vyťažené.
Aritmetický výkon G200 by sa teda aspoň podľa počtu SPs oproti G80 ani nezdvojnásobil. Skutočnosť je ale iná. Prečo to je tak, nám ukáže až ďalšie vylepšenie G200 oproti G80/G92. Každá ALU (aritmetická jednotka) alebo SP dokáže za takt na G80 vykonať jednu MADD (MUL + ADD) a jednu MUL operáciu. To sa nezmenilo ani na G200. Zvýšilo sa ale výrazne vyťaženie. G80 mohol využiť MADD jednotku úplne pre general shading, ale druhá MUL jednotka bola väčšinou zaťažená korekciou perspektív, interpoláciou alebo špeciálnymi funkciami SFUs. Vyťaženie druhej MUL jednotky na G80/G92 bolo v praxi preto len okolo 15%. Reálne majú preto všetky GeForce 8/9 grafické karty aritmetický výkon o 1/3 nižší ako je udávaná teoretická hodnota. Na G200 sa však druhá MUL jednotka dá využiť podľa nVidie až na 93-94% pre general shading.
G8x/G9x sa mohli dostať s dlhými shadermi do situácie, že ich limitovala register file. Výsledkom čoho bola strata výkonu. Vďaka jej zdvojnásobeniu v G200 na jeden SM by nemal mať čip problém ani s dlhšími a komplexnejšími shadermi. Jej zväčšenie nezaberie veľkú časť jadra, avšak nárast výkonu je značný najmä s GPGPU aplikáciami. Nedostatkom G8x/G9x oproti konkurencii bol aj geometry shader a stream out výkon. Obe sú to čisto Direct3D 10 features, ktoré sa zatiaľ nevyužívajú tak často v hrách. V budúcnosti sa to pravdepodobne zmení. Dnes sú využívané hlavne v 3DMark Vantage a Medusa tech-deme. G200 má preto 6x zväčšené interné buffer output štruktúry. Z tohoto dôvodu dosahuje čip až 4x vyšší geometry shader a stream out výkon ako G80.
je prekvapivé, že tento graf, dokazujúci slabší GS výkon G80, pochádza od nVidie
Keďže bol G200 do značnej miery optimalizovaný pre GPGPU je logická podpora Double Precision (DP). Predstavuje teda prvý čip nVidie s podporou DP a ide v porovnaní s RV670/RV770 inou cestou. Na rozdiel od RV670/RV770, kde 4/5 SPs, tie menšie, dokážu počítať DP so štvrtinovým výkonom, má G200 v každom SM jednu špeciálne na to určené Double Precision MAD jednotky. Dokopy 3 takéto jednotky v clusteri, ktoré spĺňajú IEEE 754 štandard, teda 64bit presnosť spracovania údajov. Pre „obyčajných ľudí" je to feature čipu, ktorú pravdepodobne nikdy nevyužijú. Takúto väčšiu presnosť spracovania dát potrebujú hlavne vedci, ktorým single presision (32bit presnosť) nestačí. Celkový DP aritmetický výkon G200 je vďaka 30 MAD jednotkám * bežiacim na frekvencii 1,296 GHz * 2 FLOPs = 77,76 GFLOPs/s. Zhruba rovnaký výkon ako 8 jadrový Xeon procesor. V porovnaní s RV670 a jeho 99 GLFOPs/s DP, ktorý podporoval ako prvý consumer čip 64bit presnosť, je to pomerne málo. Nezmenilo sa to ani v RV770, ktorý má 800 SPs a logicky ešte vyšší double precision aritmetický výkon. AMD/ATi má vďaka tomu jeden, pre trh s profesionálnymi kartami, kde sa tiež využívajú desktop čipy, podstatný argument, ktorý by mohol prevážiť. Jeden fakt ale hrá v prospech G200. Tieto špeciálne jednotky dokážu počítať aj špeciálne funkcie (cos, sin atď) v jednom takte, na rozdiel od ALUs RV670, ktoré sú DP schopné.
G200 obsahuje v každom clusteri dve quad-TMUs (textúrovacie jednotky), pozostávajúce z 2x4 TFUs (filtrovacích) a 2x4 TAUs (adresovacích jednotiek, ktoré dokážu za takt filtrovať a adresovať osem textúr za takt. Oproti G80 je to navýšenie, keďže dokázali tieto adresovať len štyri textúry za takt a filtrovať osem. Nezmenil sa ale výkon pri FP16 textúrach – sú filtrované naďalej s polovičným výkonom. Nakoľko má G200 desať TPCs, zvýšil texturovací výkon zo 64 v G92 na 80 texels za takt. Týchto 80 TMUs majú dokopy 48GTexels/s čistý bilinear texelfillrate. Na prvý pohľad by sa mohlo zdať, že sa TMUs vôbec nevylepšili. Nie je to ale celkom pravda, oproti predchádzajúcim čipom G8x/G9x pracujú vďaka vylepšeným schedulerom v priemere o 22% efektívnejšie. Je logické, že teoretická texelfillrate G200 sa preto blíži viac realite ako to bolo s predchádzajúcimi čipmi.
Navýšený bol aj počet ROP partícií. G200 ich má osem, 50% viac ako G80 a dvakrát tak veľa ako G92. Inak povedané – G200 má celkovo 32 ROPs, pričom dokáže každá ROP partícia za takt ukončiť prácu na štyroch pixeloch, celkovo teda 32 pixelov za takt. Výkon ROPs teda stúpol priamoúmerne k výkonu zvyšného čipu, aby ho zbytočne nelimitovali. Výsledkom je, že GeForce GTX 280 má vyšší teoretický pixelfillrate ako GeForce 9800 GX2. Podporované sú rovnaké antialiasing (AA) módy ako s G80/G92 – multisampling, supersampling (pomocou aplikácie nHancer), transparency adaptive a coverage. Oproti G80 sa ale dočkali viacerých vylepšení, z ktorých niektoré boli použité už v ROPs G92 a odrážajú sa vo výkone. Týkajúce sa lepšej kompresie Z/stencil, inteligentnejšieho z-cullingu a výkonnejšieho Early-Z, kvôli väčšiemu počtu ZROPs Novinkou je aj schopnosť vykonávať frame buffer blends v jednom takte na rozdiel od dvoch v predchádzajúcich čipoch. Blend výkon G200 je preto 32 samplov za takt oproti 12 samplom za takt na G80. Vyšší počet ROPs je vždy vítaný, pretože hrajú u GeForce kariet veľkú rolu pri antialiasingu. Viac ROPs teda znamená vyššie FPS pri vyššej úrovni antialiasingu.
Podľa týchto riadkov „vidieť“, že celkové zmeny G200 sú oproti predchodcovi menšie, ako tie ktoré uskutočnila AMD/ATi na RV770. Dôvod je jednoduchý – nVidia podcenila AMD/ATi a G80 je v podstate veľmi dobrý základ, ktorý nebolo treba tak výrazne prerobiť. Určité nedostatky si však G200 zobral od G8x/G9x – zlý výkon triangle setupu, ktorý sa prejaví vo výkone s 8xMSAA. Crossbar sa takisto nezmenil a zaberie preto spolu s pamäťovým subsystémom naozaj veľa tranzistorov - skoro toľko ako mal R520.
bart31
Vacropoli
crux2005
Gudas
M1ch4l
crux2005
juloSVKxxl
hvk
hvk
Mikhail
crux2005
Timeshifter
hmlafo
crux2005
mmichalll
SimonB