AMD Graphics Core Next: revoluční grafické jádro - část 2.
17.8.2011, Petr Štefek, technologie
Dnešní článek uzavře naši rozpravu na téma budoucí architektury AMD v oblasti grafických jader. Graphics Core Next nahradí současnou architekturu AMD použitou u Radeonu HD 6900, ale nebude dříve než v roce 2013.
Kapitoly článku:
- AMD Graphics Core Next: revoluční grafické jádro - část 2.
- Nová architektura přináší i nové vlastnosti
- Závěr - plány AMD a konkurence
V předchozích kapitolách jsme se bavili o připravované architektuře Graphics Core Next a jaké má rozdíly oproti současné architektuře VLIW4 použité u čipu Cayman. Víme, jaké jsou slabé a silné stránky VLIW a proč se ji AMD snaží opustit. AMD se snaží o to, aby její grafické čipy byly v budoucnu nejen samostatnými akcelerátory, ale také úzkými výpočetními partnery pro CPU. Procesory jsou běžně vhodné pro určité typy úloh, ale masivní paralelní výpočty nezvládají. GPU naopak zvládají paralelní výpočty, ale je těžké využít jejich masivní výpočetní sílu u běžných aplikací psaných pro x86 architektury.Graphics Core Next bude podporovat přímo jazyky jako C++ a další pokročilé programovací jazyky. To všem vyústí v přidané podpoře pro pointery, virtuální funkce, výjimky a dokonce rekurzi. To bude nově znamenat, že vývojář nebude muset přecházet z vyšších jazyků na C pro psaní kódu pro GPU, takže bude možné tvoření aplikací současně pro GPU a CPU. Koncový uživatel zřejmě přínos tohoto faktu hned tak nepostřehne, ale vyústit by vše mělo v to, že bude skrze GPU akcelerovatelných více aplikací. V současné době máme na trhu několik málo aplikací, které podporují platformu CUDA z dílen Nvidie, ale stále to není to pravé ořechové, i když např. uživatelé poslední verze Photoshopu si mohou mnout ruce.
Všechno v případě Graphics Core Next prochází vývojem a to se tyká i paměťového subsystému, který musí být připraven vypořádat se nejen s běžnou akcelerací grafiky, ale i s GPU Computingem a spoluprací s CPU, kde oba čipy potřebují mít přístup ke stejným datům bez toho, aby se tato data kopírovala z paměti do paměti zařízení a synchronizovala se předtím, než se na nich začne pracovat. Udržování části dat dvojmo se pravděpodobně vývojáři nevyhnou už jen z toho důvodu, že oba paměťové systémy jsou zcela odlišných specifikací.
Systémová paměť pro procesor je mnohokrát pomalejší než „on-board“ paměť grafického akcelerátoru. Zjednodušeně řečeno, čím jsou data blíže procesoru, který je bude potřebovat, tím lépe pro výsledný výkon. Ideálním řešením by byla integrace dostatečného množství přímo do jádra procesorů, ale to technický není možné, neboť podobné paměti zabírají na čipech značné místo a prodražují jej. Nehledě na to, že by současnou technologií nebylo možné vyrobit GPU nebo CPU byť s integrovanými 512 MB paměti. Musíme se smířit s tím, že k paměti budou procesory GPU/CPU přistupovat externě.
Jednou z dalších zajímavostí Graphics Core Next je, že unifikovaný adresovací prostor bude x86-64, což znamená, že všechny instrukce poslané do GPU budou relativní vůči adresovacímu prostoru. Samotné GPU bude zodpovědné za provádění adresovaní do lokálních paměťových adres. Graphics Core Next bude obsahovat tzv. I/O Memory Mapping Unit, která bude mít na starosti tuto funkčnost. V minulosti jsme mohli vidět podobnou jednotku používanou pro sdílení periferií v prostředí virtual machine. Podobné funkčnosti ale musí mít podporu ze strany operačního systému, a tak je velmi pravděpodobné, že současné Windows 7 budou pro Graphics Core Next nevhodné. Není to ovšem žádná tragédie, když vezmeme v úvahu, že podobný čip se objeví na trhu nejdříve za 2 roky.
V případě pamětí samotných se konečně dočkáme pravé podpory ECC (Error Code Correction) a nahradí současné EDC (Erorr Detection & Correction). ECC jako taková bude zajišťovat integritu přenosů dat skrz paměťovou sběrnici GDDR5. ECC bude k dispozici pro SRAM i VRAM paměť. V případě cache je to v podstatě vylepšení, které ve výsledku nebude nic stát, ale to neplatí pro VRAM, kde dopad na výkon nějaký bude. Je velmi pravděpodobné, že AMD bude využívat tzv. „virtual ECC scheme“, což znamená, že ECC data budou posílána skrz VRAM a nebudou využívat extra paměti a řadičů (tak je tomu třeba u serverových ECC pamětí a paměťových řadičů).
Podporu FP64 výpočtů jsme již zmiňovali a Graphics Core Next je bude ve všech svých variantách podporovat, což je změna oproti Nvidii, která FP64 podporuje pouze u svého high-endového čipu GF110. Výkonnost FP64 výpočtu v poměru k FP32 je možné konfigurovat od 1/2 po 1/16, ale zde mi poněkud uniká, k čemu může podobné konfigurování v praxi sloužit, když v případě FP64 bude zřejmě každý vývojář vyžadovat maximální dostupný výkon. Nvidia má v jistých ohledech nevýhodu, ale pravdou zůstává, že běžný uživatel nebude z podpory FP64 nijak profitovat.
Pro programátory Graphics Core Next přinese podstatné zlepšení v oblasti podpory nástrojů pro ladění. Nové ISA v případě Graphics Core Next také přispěje ke zlepšení možností debuggingu. Programátoři budou nadšení, ale běžný uživatel si podobných změn nevšimne dříve než v praktickém využití v oblíbených aplikacích. V případě GPU jako takových to bude jednoznačně krokem kupředu, protože tento krok pomůže alespoň částečně srovnat krok se světem CPU, kde jsou výkonné nástroje za tímto účelem na trhu již řadu let.
Všechno v případě Graphics Core Next prochází vývojem a to se tyká i paměťového subsystému, který musí být připraven vypořádat se nejen s běžnou akcelerací grafiky, ale i s GPU Computingem a spoluprací s CPU, kde oba čipy potřebují mít přístup ke stejným datům bez toho, aby se tato data kopírovala z paměti do paměti zařízení a synchronizovala se předtím, než se na nich začne pracovat. Udržování části dat dvojmo se pravděpodobně vývojáři nevyhnou už jen z toho důvodu, že oba paměťové systémy jsou zcela odlišných specifikací.
Systémová paměť pro procesor je mnohokrát pomalejší než „on-board“ paměť grafického akcelerátoru. Zjednodušeně řečeno, čím jsou data blíže procesoru, který je bude potřebovat, tím lépe pro výsledný výkon. Ideálním řešením by byla integrace dostatečného množství přímo do jádra procesorů, ale to technický není možné, neboť podobné paměti zabírají na čipech značné místo a prodražují jej. Nehledě na to, že by současnou technologií nebylo možné vyrobit GPU nebo CPU byť s integrovanými 512 MB paměti. Musíme se smířit s tím, že k paměti budou procesory GPU/CPU přistupovat externě.
Jednou z dalších zajímavostí Graphics Core Next je, že unifikovaný adresovací prostor bude x86-64, což znamená, že všechny instrukce poslané do GPU budou relativní vůči adresovacímu prostoru. Samotné GPU bude zodpovědné za provádění adresovaní do lokálních paměťových adres. Graphics Core Next bude obsahovat tzv. I/O Memory Mapping Unit, která bude mít na starosti tuto funkčnost. V minulosti jsme mohli vidět podobnou jednotku používanou pro sdílení periferií v prostředí virtual machine. Podobné funkčnosti ale musí mít podporu ze strany operačního systému, a tak je velmi pravděpodobné, že současné Windows 7 budou pro Graphics Core Next nevhodné. Není to ovšem žádná tragédie, když vezmeme v úvahu, že podobný čip se objeví na trhu nejdříve za 2 roky.
V případě pamětí samotných se konečně dočkáme pravé podpory ECC (Error Code Correction) a nahradí současné EDC (Erorr Detection & Correction). ECC jako taková bude zajišťovat integritu přenosů dat skrz paměťovou sběrnici GDDR5. ECC bude k dispozici pro SRAM i VRAM paměť. V případě cache je to v podstatě vylepšení, které ve výsledku nebude nic stát, ale to neplatí pro VRAM, kde dopad na výkon nějaký bude. Je velmi pravděpodobné, že AMD bude využívat tzv. „virtual ECC scheme“, což znamená, že ECC data budou posílána skrz VRAM a nebudou využívat extra paměti a řadičů (tak je tomu třeba u serverových ECC pamětí a paměťových řadičů).
Podporu FP64 výpočtů jsme již zmiňovali a Graphics Core Next je bude ve všech svých variantách podporovat, což je změna oproti Nvidii, která FP64 podporuje pouze u svého high-endového čipu GF110. Výkonnost FP64 výpočtu v poměru k FP32 je možné konfigurovat od 1/2 po 1/16, ale zde mi poněkud uniká, k čemu může podobné konfigurování v praxi sloužit, když v případě FP64 bude zřejmě každý vývojář vyžadovat maximální dostupný výkon. Nvidia má v jistých ohledech nevýhodu, ale pravdou zůstává, že běžný uživatel nebude z podpory FP64 nijak profitovat.
Pro programátory Graphics Core Next přinese podstatné zlepšení v oblasti podpory nástrojů pro ladění. Nové ISA v případě Graphics Core Next také přispěje ke zlepšení možností debuggingu. Programátoři budou nadšení, ale běžný uživatel si podobných změn nevšimne dříve než v praktickém využití v oblíbených aplikacích. V případě GPU jako takových to bude jednoznačně krokem kupředu, protože tento krok pomůže alespoň částečně srovnat krok se světem CPU, kde jsou výkonné nástroje za tímto účelem na trhu již řadu let.