AMD Graphics Core Next: revoluce po 10 letech
13.1.2012, Petr Štefek, technologie
AMD velmi překvapivě vydalo zbrusu novou architekturu GPU o více než rok dříve, než byl původní plán. Graphics Core Next, jak se novinka jmenuje, je revolucí, která mění GPU z dílen AMD po 10 letech od nástupu Radeonu 9700. Doplněno o 4 nové kapitoly.
Kapitoly článku:
- AMD Graphics Core Next: revoluce po 10 letech
- VLIW4 odchází do propadliště dějin?
- Graphics Core Next – vektorově-skalární architektura
- Rasterizační jednotky vs. paměťová propustnost
- Partially Resident Textures, anizotropní filtrování
- Geometrický engine, DirectX 11.1 a PCI Express 3.0
- Akcelerace a komprese videa + Eyefinity 2.0
- PowerTune a ZeroCore Power
Pokud se podíváme na samotnou architekturu GPU, tak nezůstal kámen na kameni, což je již patrné z prvního kusého pohledu na blokové schéma Tahiti. Samozřejmě v samotném jádru nejsou všechny znázorněné jednotky uspořádány úplně stejně jako na tomto ilustračním obrázku, ale na to jsme si už během let a představování různých architektur mohli zvyknout. Pokud se podíváme doprostřed čipu, kde jsme byli zvyklí vídávat u AMD SIMD procesory a samostatně texturovací jednotky (TMU), tak je jasné, že zde je všechno jinak. Tahiti má podle přepočtu na staré dobré stream procesory 2048 jednotek a my si hned vysvětlíme, jak k tomuto číslu AMD došlo.
Schéma Graphics Core Next alias GPU Tahiti (28nm)
Nyní pojďme k základním blokům v podobě Compute Unit (CU) blíže a zjistíme, že jejich součástí jsou 4 vektorové výpočetní jednotky, kde každá z nich integruje 16 ALU a je tedy schopna 16 samostatných operací. Když si tedy vynásobíme počet ALU a počet vektorových SIMD, máme počet 64, který už jen stačí vynásobit počtem Compute Units (32). Velkou zajímavostí je, že se samotné texturovací jednotky jsou zde součástí každé CU (v každé je jich přítomna čtveřice) a pro jejich celkový počet opět stačí vynásobit počtem CU (32).
Kromě čtveřice vektorových SIMD je v jádru přítomna i relativně jednoduchá skalární ALU, která může být využita pro aritmetické operace, které vektorové SIMD neumí nebo by nedělaly efektivně a navíc se může podílet na jednoduchém větvení kódu (podmínkami if/then). AMD tyto jednotky nepočítá do celkového počtu stream procesorů a je to tak i logické, neboť skalární jednotka má v tomto případě více funkcí a je spíše takovou speciální funkční jednotkou než běžnou ALU v SIMD. Scheduler (plánovač) má na starosti celou Compute Unit a to, jak efektivně bude s jednotlivými SIMD pracovat.
Compute Units GPU Tahitit
AMD mělo v případě svých minulých architektur často problémy s využitím dostupných jednotek, a tak díky svým výzkumům došlo k názoru, že vlastně speciální jednotku SFU v případě architektury VLIW5 nepotřebuje, protože operace jsou tak ojedinělé, že je zbytečné plýtvat místem na dedikovanou jednotku, která po většinu času zahálí. VLIW4 tedy přinesla kosmetickou změnu a SFU odstranila, čímž její funkci zastanou v případě nutnosti 3 ze 4 zbylých jednotek. Problém v případě minulých architektur AMD spočíval v tom, že pokud něco výpočetní blok počítal a nejednalo se o nezávislé výpočty, tak třeba opravdu zbytek bloku (třeba 4 z 5 jednotek) zahálely, ale přesto musely čekat na provedení výpočtu, aby s výsledkem mohly dále pracovat.
Architektura GCN je jiná káva. Díky speciální konfiguraci vektorových výpočetních jednotek s 16 ALU je např. možné, aby jedna vektorová jednotka prováděla výpočet a zbylé tři pracovaly na úplně jiných operacích, čímž se vzájemně neblokují a dosahuje se zde podstatně vyšší efektivity. Nezávislost vektorových jednotek je to, oč zde běží a proč právě GCN je vhodné i pro jiná nasazení než jen grafika. Architektura je natolik flexibilní, že by se neměla potýkat s problémy už u existujících aplikací optimalizovaných pro VLIW4/5. Díky vysoké účinnosti v běžných matematických operacích, jako jsou třeba výpočty s maticemi a další, lze vidět opravdu velký potenciál GCN v High Performace Computingu a současné první testy to jen potvrzují. Pro tento segment nasazení je ale zcela stěžejní např. podpora ECC pamětí, kterou naštěstí Tahiti má, ale není vyloučeno, že z důvodu úspory zůstane vyhrazena pro high-end.
Pokud si odmyslíme skalární jednotku, která by za určitých okolností mohla působit samostatně, pak zde máme architekturu, která bude akceleraci všech rozličných aplikací od herních až po profesionální provádět za pomocí velkého počtu v podstatně samostatných vektorových procesorů. GCN bude zcela určitě excelovat ve zpracování paralelního kódu, ale díky chytrému návrhu mu nezlomí vaz, pokud dojde na kód sériový, což je také velké plus oproti starším návrhům GPU. Velmi zajímavé bude sledovat, jak si nová architektura povede v akceleraci grafiky ve srovnání se staršími architekturami VLIW.
Je možné, že se dočkáme mainstreamových čipů, které budou mít podobný počet tranzistorů a výpočetních jednotek jako high-end minulé generace a zde se přímo nabízí možnost srovnání na stejných frekvencích. Hodně bude záležet i na tom, jak AMD bude průběžně pracovat na vývoji ovladačů pro GCN architekturu, která může doznat v průběhu času značného přilepšení v oblasti výkonu. Takt tomu ostatně bylo i u starších architektur. Doufejme, že GCN bude základem na několik let, abychom vůbec měli šanci tento vývoj vidět.
Zdroj: Anandtech.com - GCN vs. VLIW4 (efektivita)
Při akceleraci běžných aplikací ovšem musíme mít na paměti, že architektura GPU je stále „jen“ in-order, což znamená, že instrukce nemohou být vykonávány v jiném než naplánovaném pořadí. Zde je hlavní rozdíl mezi běžným moderním desktopovým procesorem a GPU. Naštěstí pro Tahiti jsou zde přítomny tzv. asynchronní výpočetní procesory (ACE), které v případě zpracovávání více úloh najednou (multi-tasking) mohou do jisté míry vykonávání řídit, ale převážně jen v oblasti nastavování priorit jednotlivým operacím a zvyšovat tak efektivitu využití dostupných zdrojů. Zajímavé bude také sledovat, jakou roli v případném porovnávání sehraje třeba L2 cache, která je sice násobně menší než např. u procesorů Intel Sandy Bridge, ale na druhé straně nesmíme zapomínat, že GPU má na rozdíl od procesoru k dispozici téměř neomezenou paměť (3 GB) o rychlosti 264 GB/s. Není sice tak rychlá jako integrovaná cache u procesoru, ale na druhou stranu je násobně rychlejší než operační paměť počítače.
Další poměrně zásadní věcí pro profesionální svět je fakt, že Tahiti podporuje nativně double-precision (DP) výpočty. Teoreticky by mělo mít Tahiti výkon 3788 TFLOPS při FP32 výpočtech, což je podstatně více než předešlé generace čipů. Pokud zařadíte na FP64 výpočty, tak se dostáváme na teoretickou 1/2 výkonu čipu. Podpora ECC a dobrý výkon při FP64 předurčují toto GPU pro svět HPC a zřejmě v následujících měsících uvidíme snahy AMD přesvědčit o tom nejen vývojáře, ale také například světové univerzity či společnosti zabývající se návrhem supervýkonných systémů. Právě další generace by měly přispět k navýšení současného maximální dostupného výkonu v jednom systému. Za pár let tak možná budou nejrychlejší počítače postaveny na GPU.
Windows 8 budou podporovat DirectX 11.1
Zajímavostí je, že celá rodina Southern Islands podporuje ještě nevydané API DirectX 11.1, které je součástí Windows 8, jež se chystají na trh až koncem tohoto roku. Podpora samozřejmě potěší, ale v určitých ohledech se můžeme dočkat rychlejšího běhu některých her nebo aplikací. Avšak kde není dost software s nativní podporou toho API, tam ani Tahiti nebere. Zbrusu nové GPU také podporuje OpenCL 1.2, které se pomalu začíná v některých případech zabydlovat i v našich domácích počítačích. Samozřejmostí je nový standard PCIe 3.0, který ovšem není dostupný na platformě AMD, ale pouze u Intelu . To nás mrzet nemusí, neboť hardcore hráči stejně asi budou preferovat platformu Intel s procesory Sandy Bridge.
Schéma Graphics Core Next alias GPU Tahiti (28nm)
Nyní pojďme k základním blokům v podobě Compute Unit (CU) blíže a zjistíme, že jejich součástí jsou 4 vektorové výpočetní jednotky, kde každá z nich integruje 16 ALU a je tedy schopna 16 samostatných operací. Když si tedy vynásobíme počet ALU a počet vektorových SIMD, máme počet 64, který už jen stačí vynásobit počtem Compute Units (32). Velkou zajímavostí je, že se samotné texturovací jednotky jsou zde součástí každé CU (v každé je jich přítomna čtveřice) a pro jejich celkový počet opět stačí vynásobit počtem CU (32).
Kromě čtveřice vektorových SIMD je v jádru přítomna i relativně jednoduchá skalární ALU, která může být využita pro aritmetické operace, které vektorové SIMD neumí nebo by nedělaly efektivně a navíc se může podílet na jednoduchém větvení kódu (podmínkami if/then). AMD tyto jednotky nepočítá do celkového počtu stream procesorů a je to tak i logické, neboť skalární jednotka má v tomto případě více funkcí a je spíše takovou speciální funkční jednotkou než běžnou ALU v SIMD. Scheduler (plánovač) má na starosti celou Compute Unit a to, jak efektivně bude s jednotlivými SIMD pracovat.
Compute Units GPU Tahitit
AMD mělo v případě svých minulých architektur často problémy s využitím dostupných jednotek, a tak díky svým výzkumům došlo k názoru, že vlastně speciální jednotku SFU v případě architektury VLIW5 nepotřebuje, protože operace jsou tak ojedinělé, že je zbytečné plýtvat místem na dedikovanou jednotku, která po většinu času zahálí. VLIW4 tedy přinesla kosmetickou změnu a SFU odstranila, čímž její funkci zastanou v případě nutnosti 3 ze 4 zbylých jednotek. Problém v případě minulých architektur AMD spočíval v tom, že pokud něco výpočetní blok počítal a nejednalo se o nezávislé výpočty, tak třeba opravdu zbytek bloku (třeba 4 z 5 jednotek) zahálely, ale přesto musely čekat na provedení výpočtu, aby s výsledkem mohly dále pracovat.
Architektura GCN je jiná káva. Díky speciální konfiguraci vektorových výpočetních jednotek s 16 ALU je např. možné, aby jedna vektorová jednotka prováděla výpočet a zbylé tři pracovaly na úplně jiných operacích, čímž se vzájemně neblokují a dosahuje se zde podstatně vyšší efektivity. Nezávislost vektorových jednotek je to, oč zde běží a proč právě GCN je vhodné i pro jiná nasazení než jen grafika. Architektura je natolik flexibilní, že by se neměla potýkat s problémy už u existujících aplikací optimalizovaných pro VLIW4/5. Díky vysoké účinnosti v běžných matematických operacích, jako jsou třeba výpočty s maticemi a další, lze vidět opravdu velký potenciál GCN v High Performace Computingu a současné první testy to jen potvrzují. Pro tento segment nasazení je ale zcela stěžejní např. podpora ECC pamětí, kterou naštěstí Tahiti má, ale není vyloučeno, že z důvodu úspory zůstane vyhrazena pro high-end.
Pokud si odmyslíme skalární jednotku, která by za určitých okolností mohla působit samostatně, pak zde máme architekturu, která bude akceleraci všech rozličných aplikací od herních až po profesionální provádět za pomocí velkého počtu v podstatně samostatných vektorových procesorů. GCN bude zcela určitě excelovat ve zpracování paralelního kódu, ale díky chytrému návrhu mu nezlomí vaz, pokud dojde na kód sériový, což je také velké plus oproti starším návrhům GPU. Velmi zajímavé bude sledovat, jak si nová architektura povede v akceleraci grafiky ve srovnání se staršími architekturami VLIW.
Je možné, že se dočkáme mainstreamových čipů, které budou mít podobný počet tranzistorů a výpočetních jednotek jako high-end minulé generace a zde se přímo nabízí možnost srovnání na stejných frekvencích. Hodně bude záležet i na tom, jak AMD bude průběžně pracovat na vývoji ovladačů pro GCN architekturu, která může doznat v průběhu času značného přilepšení v oblasti výkonu. Takt tomu ostatně bylo i u starších architektur. Doufejme, že GCN bude základem na několik let, abychom vůbec měli šanci tento vývoj vidět.
Zdroj: Anandtech.com - GCN vs. VLIW4 (efektivita)
Při akceleraci běžných aplikací ovšem musíme mít na paměti, že architektura GPU je stále „jen“ in-order, což znamená, že instrukce nemohou být vykonávány v jiném než naplánovaném pořadí. Zde je hlavní rozdíl mezi běžným moderním desktopovým procesorem a GPU. Naštěstí pro Tahiti jsou zde přítomny tzv. asynchronní výpočetní procesory (ACE), které v případě zpracovávání více úloh najednou (multi-tasking) mohou do jisté míry vykonávání řídit, ale převážně jen v oblasti nastavování priorit jednotlivým operacím a zvyšovat tak efektivitu využití dostupných zdrojů. Zajímavé bude také sledovat, jakou roli v případném porovnávání sehraje třeba L2 cache, která je sice násobně menší než např. u procesorů Intel Sandy Bridge, ale na druhé straně nesmíme zapomínat, že GPU má na rozdíl od procesoru k dispozici téměř neomezenou paměť (3 GB) o rychlosti 264 GB/s. Není sice tak rychlá jako integrovaná cache u procesoru, ale na druhou stranu je násobně rychlejší než operační paměť počítače.
Další poměrně zásadní věcí pro profesionální svět je fakt, že Tahiti podporuje nativně double-precision (DP) výpočty. Teoreticky by mělo mít Tahiti výkon 3788 TFLOPS při FP32 výpočtech, což je podstatně více než předešlé generace čipů. Pokud zařadíte na FP64 výpočty, tak se dostáváme na teoretickou 1/2 výkonu čipu. Podpora ECC a dobrý výkon při FP64 předurčují toto GPU pro svět HPC a zřejmě v následujících měsících uvidíme snahy AMD přesvědčit o tom nejen vývojáře, ale také například světové univerzity či společnosti zabývající se návrhem supervýkonných systémů. Právě další generace by měly přispět k navýšení současného maximální dostupného výkonu v jednom systému. Za pár let tak možná budou nejrychlejší počítače postaveny na GPU.
Windows 8 budou podporovat DirectX 11.1
Zajímavostí je, že celá rodina Southern Islands podporuje ještě nevydané API DirectX 11.1, které je součástí Windows 8, jež se chystají na trh až koncem tohoto roku. Podpora samozřejmě potěší, ale v určitých ohledech se můžeme dočkat rychlejšího běhu některých her nebo aplikací. Avšak kde není dost software s nativní podporou toho API, tam ani Tahiti nebere. Zbrusu nové GPU také podporuje OpenCL 1.2, které se pomalu začíná v některých případech zabydlovat i v našich domácích počítačích. Samozřejmostí je nový standard PCIe 3.0, který ovšem není dostupný na platformě AMD, ale pouze u Intelu . To nás mrzet nemusí, neboť hardcore hráči stejně asi budou preferovat platformu Intel s procesory Sandy Bridge.