R600 - technologie, možnosti architektury
Napsal: úte 5. čer 2007, 22:11
Tahle otázka se řešila snad všude a přičemž se na povrch dostalo mnoho zajímavých informací, vysvětlení, důvodů... Nebude na škodu, když je budeme mít pohromadě a zároveň v diskusi kolem tohoto tématu budeme pokračovat jen na jednom místě.
Většina lidí bohužel hledá jeden jediný důvod a pokud najde cokoli, co by byť jen potenciálně mohlo (ne)úspěch ovlivnit, přikládají tomu přehnanou váhu. Ve skutečnosti jde ale o větší množství menších komplikací...
loňská akvizice ATi ze strany AMD
Sloučení obou firem provázelo nemálo komplikací a prvořadé pro AMD v tu chvíli bylo udržení společnosti v chodu, při životě, vytyčit si priority a přizpůsobit jim vše ostatní. To nějakou dobu trvalo a samozřejmě to na chystané produkty nemělo nijak pozitivní vliv. Došlo na rozhodnutí, která zpětně můžeme hodnotit jako špatná (opakovné posuny v datu vydání apod.) - AMD jako takové s vydáváním grafických čipů nemá zkušenosti a pokud začnou do těchto věcí mluvit lidé, kteří mají tak maximálně teoretické znalosti, nemůže to dopadnout dobře. Nyní víme, že zdržení R600 bylo docela nesmyslné - revize čipu A13, která se používá pro výrobu, byla hotová už v lednu a mnohé karty nesou tyto lednové čipy. Téměř pětiměsíční čekání bylo zbytečné...
80nm HS TSMC: power-leakage
80nm HS proces TSMC, pro který byl čip navržen, trpí problémem, díky kterému je spotřeba čipů na něm vyrobených mnohem větší, než jaká by měla být. Tento nedostatek nijak negativně neovlivňuje frekvence (důkazem může být i fakt, že R600 přetaktované z referenčních 740MHz na 850MHz bez zvýšení napájecí voltáže nejsou ničím výjimečným), ale enormní spotřeba a vyzařované teplo jsou při vyšších frekvencích tak vysoké, že standardní chladiče a zdroje by kartu vůbec nezvládaly.
Pokud se na to podíváme z opačného hlediska, tak když s nepovedeným výrobním procesem a konzervativně nastaveným napájecím napětím běhá karta defaultně na 740MHz a bez jakýchkoli úprav zvládá i 830-860MHz, tak nastává otázka, jakou frekvenci ATi pro R600 plánovala. Pokud by Výrobní proces neměl problémy a ATi by mohla použít odpovídající napájení, nemyslím, že budu vedle, když zmíním 900-950MHz, tzn. posun o 25% výš, než kde skončil finální produkt (o 20% vyšší výkon by byl logický důsledek)
texture fillrate
Pomalu každý druhý člověk tvrdí, že 16 texturovacích jednotek je málo. Jenže R600 nemá 16 texturovacích jednotek, ale 16 TFU (texture filtering units, tedy 16 jednotek pro filtraci textur). Toho "ostatního", co souvisí s texturingem, "má více". Texture adressing units: 32 (tedy stejně jako G80 a dvojnásobek oproti R580) a ještě 80 texture-sampling units (vzorkovací jednotky, především pro některé DX10 operace - třeba takový Xenos jich měl 16). Polovina adressing units a všechny samplery ale poněkud "leží ladem" - současné aplikace je téměř nevyužijí.
Pokud je intenzivně využíváno 16 TFU + 16 TAU, je to podobné jako R580, ale je třeba mít na paměti, že tyto jednotky zvládají víc, než v případě R580 (např. FP16 filtering bez ztráty výkonu...). Pokud vezmeme v úvahu, jaké frekvence ATi při návrhu R600 myslela, byl by filtered-texturing fillrate R600 skoro o 50% vyšší, než u X1950XTX, což by bohatě dostačovalo. Pokud u finální R600 na 740MHz považujeme výkon shader core za dostačující a výkon texturing enginu za nízký, znamenaly by o čtvrtinu vyšší frekvence posun na z "adekvátní+nízký" na "obrovský+adekvátní" (podobně by bylo možné popsat z dnešního hlediska úspěšnou R580)
propady výkonu při MSAA
Tohle je trošku oříšek. R600 má předpoklady k FSAA 4x téměř bez ztráty výkonu (~250GB/s internal B/W, 125GB/s external B/W, 4 MSAA vzorky na ROP za takt, dvojnásobně účinná Z komprese oproti R5xx...). Zádrhel je ale v tom, že nepodporuje fixně MSAA resolve (jednoduše řečeno nemá jednotky, které z jednotlivých AA vzorků poskládají výsledný pixel). R600 tento krok provádí přes shader core. ATi tvrdí, že nadcházející hry stejně budou vyžadovat resolve přes shader core - což potvrzuje např. UE3, který používá techniku deferred shading, díky níž není možné fixní resolve používat, nicméně většině současných her by fixní resolve vyhovoval lépe a znamenal by pro ně nesrovnatelně nižší propad výkonu. Otázkou tedy je, zda R600 skutečně fixní resolve podporovat neměl (ATi mohla počítat s rychlejším nástupem nových her), nebo zda měla R600 podporovat obě varianty a ta fixní (přes ROPs) nefunguje kvůli chybě v návrhu čipu*. Ať tak či tak, GeForce 8800 GTX překonává bez FSAA Radeon HD2900XT jen o nějakých 10-15%. Pokud by tedy ATi v případě nadcházejícího čipu propady výkonu vyřešila a dostaly by se na úroveň odpovídající zbytku HW parametrů, mohl by být propad při FSAA nižší, než u G80.
*je tu samozřejmě i možnost, že fixní resolve sám o sobě funkční je, ale může vést např. ke konfliktům v přístupu k bufferůn, nebo do paměti, kvaůi kterým ATi musela příslušnou část hardwaru deaktivovat
absence HD2900XTX - 1GB GDDR4
O HD2900XTX se nejdříve mluvilo jako o 850MHz čipu, pak se zmiňovalo 814MHz a nakonec zůstal jen ten gigabyte GDDR4 se standardně taktovaným jádrem na 740MHz jako OEM HD2900XT 1GB. Pro retail trhy by XTX měla kvůli nedostatečné frekvenci jádra špatný poměr cena/výkon, neboť rychlejší paměti této kartě na výkonu nepřidají, zato cenu ovlivní výrazně.
absence skutečných DX10 aplikací
Zmínil jsem to o pár odstavců výš - texturing engine je optimalizovaný pro potřeby DX10. Podobně je na tom ale i shadercore - výpočetní jednotky jsou uspořádány v pěticích, neboť je to výhodné pro geometrické operace, výsledky geometry shaderu jsou také velmi dobré. Ale chybějí aplikace, které by tyto DX10 technologie používaly - tyto výhody se neprojeví.
VLIW shader core?
Kritizována (zvlášť nVidií) je VLIW architektura. Jediný logický důvod, proč ji nVidia kritizuje je proto, že ji a G80 nepoužívá. VLIW nemá vliv na kvalitu grafického čipu Využívaly ho prakticky všechny DX9 čipy - jak ty úspěšné, tak i ty neúspěšné, takže samotný fakt využití VLIW vůbec s kvalitou/výkonem/konkurenceschopností čipu nemá co dělat.
Dále také byla R600 vytýkána (opět hlavně nVidií) přílišná složitost shader core, kvůli které je pro jeho optimální vytížení třeba velice komplexních řídících obvodů. Toto je opět pravda pouze zčásti - shader core R600 samozřejmě komplexní je. Ale ATi má na rozdíl od nVidie s programovatelnými řídícími a dispatch procesory zkušenosti už z Xenosu, R520 a R580, takže si podobný krok dovolit mohla a zatím nic nenasvědčuje tomu, že by v tomto směru měl R600 jakékoli problémy.
Druhá strana mince je, že ani shader core G80 není zdaleka tak jednoduché, jak se ho nVidia snažila vykreslit. Krom toho, že řídící obvody pracují na jiné frekvenci, než samotné shader core, není jeho architektura čistě skalární, jak nVidia tvrdí, ale je ve skutečnosti dual-issue (na MADD jednotku je vázána SFU, kterou nVidia zmiňuje jen tehdy, pokud se jí to hodí. Pokud se jí to nehodí, jako v tomto případě tak o ní mlčí)
Nejpozoruhodnější na tom všem je to, že nVidia, která měla vždycky shader core na horší úrovni než ATi, káže o tom, jak by mělo vypadat. Což je trochu komické, když zohledníme, že unifikace na R600 funguje od vydání naplno, kdežto na G80 zrovna jako po másle neběhá...
frekvence shader core G8x
Není dobré situaci hodnotit jen z hlediska "co ATi nevyšlo", ale také "co vyšlo nVidii". Protože pokud by G80 neměla takový výkon, jaký má, nikdo by se nad výkonem současné R600 nepozastavoval. Takže na chvilku odsuňme otázku "proč je R600 pomalejší" a zkusme se zeptat, "proč je G80 rychlejší". Odbočím ještě víc. Marketingové oddělení nVidie má po léta jednu úžasnou schopnost - pokud je produkt úspěšný, neodůvodní to skutečnou příčinou, která je za ten výkon zodpovědná, ale odůvodňuje to vždy prvkem, který má pouze její produkt. Např. proč je GeForce 256 rychlá? Protože má TnL. Pravda byla jinde - příčinou byl dvojnásobek pixel pipelines a DDR paměti, jenže právě TnL nikdo z konkurence nenabízel, takže pak působilo jako exkluzivní featura (= ideální marketingový tahák)
Stejně je to s G80. Skutečným tajemstvím jejího výkonu není nic jiného, než shader core taktované cca na dvojnásobku frekvence čipu. Pokud bychom pro rozumný výkon potřebovali 256 výpočetních jednotek na běžné frekvenci, zaručí nám dvojnásobné frekvence, že pro dosažení stejného výkonu bude stačit jen polovina (128) jednotek. Ušetřené tranzistory a plochu čipu pak nVidia mohla využít pro více texturovacích jednotek a ROPs. Pokud by shader core G80 běželo na běžné frekvenci, musela by nVidia použít více jednotek (např. 160 nebo 192) a aby se do jádra "vešly", musela by zároveň ubrat ROPs a texturovací jednotky (TMUs: 32->24 a ROPs: 24->16). Výkon čipu by tím ve výsledku klesnul zhruba o třetinu. Klíčem výkonu G80 je tedy frekvence shader core.
To je pro ATi v současné chvíli velice nepříjemné, neboť tuto výhodu je velmi obtížné překonat. Pozitivní pro ATi ale může být fakt, že výhodu "rychlého" shader core už nVidia využila, kdežto ATi ještě ne a potencionální třetinové navýšení výkonu může v budoucnu ještě je. S tím souvisí další potenciální výhoda ATi a to je výkon na jeden MHz.
clock domains - nevyužitý potenciál?
R600 se skládá z několika clock domains, tzn. různé části čipu mohou běžet na různých frekvencích. Tato informace je potvrzená. Není však známo, zda clock domains ATi implementovala jen kvůli odstranění možných problémů se synchronizací (donutit 2*2cm velký čip, aby běžel absolutně synchronně je poměrně problematické, takže rozložení na menší části, které běží na vlastních frekvencích může být nejsnazším řešením).
Frekvence clock-domains se liší, ale jen o několik MHz. Pokud ATi měla nějaké další plány, nedošlo k jejich realizaci. Pokud ovšem nějaké opravdu má, je pravděpodobné, že šlo pouze o experimentální implementaci a k reálnému využití dojde např. až na R700, či později.
Fast14?
Tato informace je nepotvrzená, ale podle jednoho zdroje R600 nějakým způsobem využívá technologii Fast14 (technologie společnosti Intrinsity; čip navržený s jejím využitím může fungovat až na několikanásobně vyšší frekvenci, než standarně - má to ale mnohá úskalí). Těžko říct, co je na tom pravdy - může jít taktéž o experimentální implementaci, případně to může být důvod pro vysoké frekvence, které R600 jako celek zvládá (ale které srazil nepovedený výrobní proces). Uvidíme.
Pokud to shrnu, jsou problémem R600 nedostatečné frekvence pramenící nepřímo z nepovedeného výrobního procesu a propad výkonu při AA. Pokud by se obojí vyřešilo, mohlo by to (tedy s využitím 65nm procesu) navýšit výkon při FSAA celkově o 40-60% bez jakýchkoli dalších úprav čipu, což nevypadá zase až tak zle
//edit Wilik - upraveno
//no-X: doplněno
Většina lidí bohužel hledá jeden jediný důvod a pokud najde cokoli, co by byť jen potenciálně mohlo (ne)úspěch ovlivnit, přikládají tomu přehnanou váhu. Ve skutečnosti jde ale o větší množství menších komplikací...
loňská akvizice ATi ze strany AMD
Sloučení obou firem provázelo nemálo komplikací a prvořadé pro AMD v tu chvíli bylo udržení společnosti v chodu, při životě, vytyčit si priority a přizpůsobit jim vše ostatní. To nějakou dobu trvalo a samozřejmě to na chystané produkty nemělo nijak pozitivní vliv. Došlo na rozhodnutí, která zpětně můžeme hodnotit jako špatná (opakovné posuny v datu vydání apod.) - AMD jako takové s vydáváním grafických čipů nemá zkušenosti a pokud začnou do těchto věcí mluvit lidé, kteří mají tak maximálně teoretické znalosti, nemůže to dopadnout dobře. Nyní víme, že zdržení R600 bylo docela nesmyslné - revize čipu A13, která se používá pro výrobu, byla hotová už v lednu a mnohé karty nesou tyto lednové čipy. Téměř pětiměsíční čekání bylo zbytečné...
80nm HS TSMC: power-leakage
80nm HS proces TSMC, pro který byl čip navržen, trpí problémem, díky kterému je spotřeba čipů na něm vyrobených mnohem větší, než jaká by měla být. Tento nedostatek nijak negativně neovlivňuje frekvence (důkazem může být i fakt, že R600 přetaktované z referenčních 740MHz na 850MHz bez zvýšení napájecí voltáže nejsou ničím výjimečným), ale enormní spotřeba a vyzařované teplo jsou při vyšších frekvencích tak vysoké, že standardní chladiče a zdroje by kartu vůbec nezvládaly.
Pokud se na to podíváme z opačného hlediska, tak když s nepovedeným výrobním procesem a konzervativně nastaveným napájecím napětím běhá karta defaultně na 740MHz a bez jakýchkoli úprav zvládá i 830-860MHz, tak nastává otázka, jakou frekvenci ATi pro R600 plánovala. Pokud by Výrobní proces neměl problémy a ATi by mohla použít odpovídající napájení, nemyslím, že budu vedle, když zmíním 900-950MHz, tzn. posun o 25% výš, než kde skončil finální produkt (o 20% vyšší výkon by byl logický důsledek)
texture fillrate
Pomalu každý druhý člověk tvrdí, že 16 texturovacích jednotek je málo. Jenže R600 nemá 16 texturovacích jednotek, ale 16 TFU (texture filtering units, tedy 16 jednotek pro filtraci textur). Toho "ostatního", co souvisí s texturingem, "má více". Texture adressing units: 32 (tedy stejně jako G80 a dvojnásobek oproti R580) a ještě 80 texture-sampling units (vzorkovací jednotky, především pro některé DX10 operace - třeba takový Xenos jich měl 16). Polovina adressing units a všechny samplery ale poněkud "leží ladem" - současné aplikace je téměř nevyužijí.
Pokud je intenzivně využíváno 16 TFU + 16 TAU, je to podobné jako R580, ale je třeba mít na paměti, že tyto jednotky zvládají víc, než v případě R580 (např. FP16 filtering bez ztráty výkonu...). Pokud vezmeme v úvahu, jaké frekvence ATi při návrhu R600 myslela, byl by filtered-texturing fillrate R600 skoro o 50% vyšší, než u X1950XTX, což by bohatě dostačovalo. Pokud u finální R600 na 740MHz považujeme výkon shader core za dostačující a výkon texturing enginu za nízký, znamenaly by o čtvrtinu vyšší frekvence posun na z "adekvátní+nízký" na "obrovský+adekvátní" (podobně by bylo možné popsat z dnešního hlediska úspěšnou R580)
propady výkonu při MSAA
Tohle je trošku oříšek. R600 má předpoklady k FSAA 4x téměř bez ztráty výkonu (~250GB/s internal B/W, 125GB/s external B/W, 4 MSAA vzorky na ROP za takt, dvojnásobně účinná Z komprese oproti R5xx...). Zádrhel je ale v tom, že nepodporuje fixně MSAA resolve (jednoduše řečeno nemá jednotky, které z jednotlivých AA vzorků poskládají výsledný pixel). R600 tento krok provádí přes shader core. ATi tvrdí, že nadcházející hry stejně budou vyžadovat resolve přes shader core - což potvrzuje např. UE3, který používá techniku deferred shading, díky níž není možné fixní resolve používat, nicméně většině současných her by fixní resolve vyhovoval lépe a znamenal by pro ně nesrovnatelně nižší propad výkonu. Otázkou tedy je, zda R600 skutečně fixní resolve podporovat neměl (ATi mohla počítat s rychlejším nástupem nových her), nebo zda měla R600 podporovat obě varianty a ta fixní (přes ROPs) nefunguje kvůli chybě v návrhu čipu*. Ať tak či tak, GeForce 8800 GTX překonává bez FSAA Radeon HD2900XT jen o nějakých 10-15%. Pokud by tedy ATi v případě nadcházejícího čipu propady výkonu vyřešila a dostaly by se na úroveň odpovídající zbytku HW parametrů, mohl by být propad při FSAA nižší, než u G80.
*je tu samozřejmě i možnost, že fixní resolve sám o sobě funkční je, ale může vést např. ke konfliktům v přístupu k bufferůn, nebo do paměti, kvaůi kterým ATi musela příslušnou část hardwaru deaktivovat
absence HD2900XTX - 1GB GDDR4
O HD2900XTX se nejdříve mluvilo jako o 850MHz čipu, pak se zmiňovalo 814MHz a nakonec zůstal jen ten gigabyte GDDR4 se standardně taktovaným jádrem na 740MHz jako OEM HD2900XT 1GB. Pro retail trhy by XTX měla kvůli nedostatečné frekvenci jádra špatný poměr cena/výkon, neboť rychlejší paměti této kartě na výkonu nepřidají, zato cenu ovlivní výrazně.
absence skutečných DX10 aplikací
Zmínil jsem to o pár odstavců výš - texturing engine je optimalizovaný pro potřeby DX10. Podobně je na tom ale i shadercore - výpočetní jednotky jsou uspořádány v pěticích, neboť je to výhodné pro geometrické operace, výsledky geometry shaderu jsou také velmi dobré. Ale chybějí aplikace, které by tyto DX10 technologie používaly - tyto výhody se neprojeví.
VLIW shader core?
Kritizována (zvlášť nVidií) je VLIW architektura. Jediný logický důvod, proč ji nVidia kritizuje je proto, že ji a G80 nepoužívá. VLIW nemá vliv na kvalitu grafického čipu Využívaly ho prakticky všechny DX9 čipy - jak ty úspěšné, tak i ty neúspěšné, takže samotný fakt využití VLIW vůbec s kvalitou/výkonem/konkurenceschopností čipu nemá co dělat.
Dále také byla R600 vytýkána (opět hlavně nVidií) přílišná složitost shader core, kvůli které je pro jeho optimální vytížení třeba velice komplexních řídících obvodů. Toto je opět pravda pouze zčásti - shader core R600 samozřejmě komplexní je. Ale ATi má na rozdíl od nVidie s programovatelnými řídícími a dispatch procesory zkušenosti už z Xenosu, R520 a R580, takže si podobný krok dovolit mohla a zatím nic nenasvědčuje tomu, že by v tomto směru měl R600 jakékoli problémy.
Druhá strana mince je, že ani shader core G80 není zdaleka tak jednoduché, jak se ho nVidia snažila vykreslit. Krom toho, že řídící obvody pracují na jiné frekvenci, než samotné shader core, není jeho architektura čistě skalární, jak nVidia tvrdí, ale je ve skutečnosti dual-issue (na MADD jednotku je vázána SFU, kterou nVidia zmiňuje jen tehdy, pokud se jí to hodí. Pokud se jí to nehodí, jako v tomto případě tak o ní mlčí)
Nejpozoruhodnější na tom všem je to, že nVidia, která měla vždycky shader core na horší úrovni než ATi, káže o tom, jak by mělo vypadat. Což je trochu komické, když zohledníme, že unifikace na R600 funguje od vydání naplno, kdežto na G80 zrovna jako po másle neběhá...
frekvence shader core G8x
Není dobré situaci hodnotit jen z hlediska "co ATi nevyšlo", ale také "co vyšlo nVidii". Protože pokud by G80 neměla takový výkon, jaký má, nikdo by se nad výkonem současné R600 nepozastavoval. Takže na chvilku odsuňme otázku "proč je R600 pomalejší" a zkusme se zeptat, "proč je G80 rychlejší". Odbočím ještě víc. Marketingové oddělení nVidie má po léta jednu úžasnou schopnost - pokud je produkt úspěšný, neodůvodní to skutečnou příčinou, která je za ten výkon zodpovědná, ale odůvodňuje to vždy prvkem, který má pouze její produkt. Např. proč je GeForce 256 rychlá? Protože má TnL. Pravda byla jinde - příčinou byl dvojnásobek pixel pipelines a DDR paměti, jenže právě TnL nikdo z konkurence nenabízel, takže pak působilo jako exkluzivní featura (= ideální marketingový tahák)
Stejně je to s G80. Skutečným tajemstvím jejího výkonu není nic jiného, než shader core taktované cca na dvojnásobku frekvence čipu. Pokud bychom pro rozumný výkon potřebovali 256 výpočetních jednotek na běžné frekvenci, zaručí nám dvojnásobné frekvence, že pro dosažení stejného výkonu bude stačit jen polovina (128) jednotek. Ušetřené tranzistory a plochu čipu pak nVidia mohla využít pro více texturovacích jednotek a ROPs. Pokud by shader core G80 běželo na běžné frekvenci, musela by nVidia použít více jednotek (např. 160 nebo 192) a aby se do jádra "vešly", musela by zároveň ubrat ROPs a texturovací jednotky (TMUs: 32->24 a ROPs: 24->16). Výkon čipu by tím ve výsledku klesnul zhruba o třetinu. Klíčem výkonu G80 je tedy frekvence shader core.
To je pro ATi v současné chvíli velice nepříjemné, neboť tuto výhodu je velmi obtížné překonat. Pozitivní pro ATi ale může být fakt, že výhodu "rychlého" shader core už nVidia využila, kdežto ATi ještě ne a potencionální třetinové navýšení výkonu může v budoucnu ještě je. S tím souvisí další potenciální výhoda ATi a to je výkon na jeden MHz.
clock domains - nevyužitý potenciál?
R600 se skládá z několika clock domains, tzn. různé části čipu mohou běžet na různých frekvencích. Tato informace je potvrzená. Není však známo, zda clock domains ATi implementovala jen kvůli odstranění možných problémů se synchronizací (donutit 2*2cm velký čip, aby běžel absolutně synchronně je poměrně problematické, takže rozložení na menší části, které běží na vlastních frekvencích může být nejsnazším řešením).
Frekvence clock-domains se liší, ale jen o několik MHz. Pokud ATi měla nějaké další plány, nedošlo k jejich realizaci. Pokud ovšem nějaké opravdu má, je pravděpodobné, že šlo pouze o experimentální implementaci a k reálnému využití dojde např. až na R700, či později.
Fast14?
Tato informace je nepotvrzená, ale podle jednoho zdroje R600 nějakým způsobem využívá technologii Fast14 (technologie společnosti Intrinsity; čip navržený s jejím využitím může fungovat až na několikanásobně vyšší frekvenci, než standarně - má to ale mnohá úskalí). Těžko říct, co je na tom pravdy - může jít taktéž o experimentální implementaci, případně to může být důvod pro vysoké frekvence, které R600 jako celek zvládá (ale které srazil nepovedený výrobní proces). Uvidíme.
Pokud to shrnu, jsou problémem R600 nedostatečné frekvence pramenící nepřímo z nepovedeného výrobního procesu a propad výkonu při AA. Pokud by se obojí vyřešilo, mohlo by to (tedy s využitím 65nm procesu) navýšit výkon při FSAA celkově o 40-60% bez jakýchkoli dalších úprav čipu, což nevypadá zase až tak zle
//edit Wilik - upraveno
//no-X: doplněno