Strana 4 z 5
- NVIDIA FERMI – novinky a inovace
Architekturu jádra jsme nakousli v předcházející kapitolce, teď si jí tak nějak po lopatě dokončíme s tím, že si řekneme, co vlastně FERMI přináší za ty inovace. Samotná výpočetní jednotka se hodně změnila.
FERMI obsahuje vlastně třetí generaci Stream Multiprocesoru, těch je v jádře hned 16 a z čeho se skládá nově CUDA procesor? Nese v sobě jednu ALU jednotku a jednu FPU jednotku – jedna pro aritmetické výpočty a druhá pro výpočty s plovoucí desetinou čárkou. Nutným vylepšením bylo přidání podpory nejnovějšího standardu pro programovatelné výpočty, kterým je IEEE 754-2008, který podporují samozřejmě i grafické karty ATI Radeon HD 5000. Ten je základem nové generace GPGPU a kromě jiných věcí výrazně zpřesňuje výpočty.
FERMI také nově používá přesnější funkci (FMA) pro výpočty a to jak pro Double precision, tak pro singl precision, což je posun k lepšímu a větší přesnosti výpočtů. Zrychlení výpočtů pak má na starosti přidání jedné speciální jednotky, které byly u GT200 jen tři. Ve FERMI je jedna navíc a navíc mají poněkud jiné uspořádání, co se týká jejich řízení a tak by mělo být jejich využívání daleko efektivnější. Což ve finále opět znamená rychlejší dokončení požadovaných výpočtů, než tomu bylo u GT200.
Hlavní změnou v architektuře jednotek je ale přidání a zrychlení vyrovnávacích pamětí (Cache). V GT200 měla každý SM blok s jádry k dispozici jen 16kB paměti, ve FERMI už má každý blok rovnou 64kB, která je navíc programovatelná a dělitelná pro požadavky konkrétních aplikací. Ve finále tedy opět vyšší výkon co se operací s pamětí týká.
Přibyla navíc ještě další L2 paměť o velikosti plných 768kB, což by v některých oblastech mělo znamenat až 20x větší výkon než u GT200. NVIDIA uvádí, že díky tomu se reálně výkon v PhysX demu zvýšil 2,7x proti GT200. Tohle dává jistou naději na zvýšení výkonu, pokud grafika bude zpracovávat najednou grafiku i fyziku, jak se to NVIDIA právě snaží prosadit. Nicméně větší paměť samozřejmě pomůže mnoha dalším aplikacím.
Pro profesionální segment je také důležité nasazení podpory ECC pamětí. ECC je systém kontroly dat, ta sice výkon jako taková vlastně snižuje a na druhou stranu hlídá, zda je vše v pořádku a to je v profi sféře klíčové. ECC technologii běžně používají servery, TESLA, která se o proniknutí do Profesionálního segmentu snažila právě na úkor serverů, ale narazila právě na to, že ECC neměla. FERMI už je toto technologií vybaveno a díky dalším změnám v architektuře čipu samotném má právě toto být tím rozhodujícím, co posune GPGPU technologii dál.
Poměrně zajímavou funkcí je jistě i GigaThread, tedy vlastně souběžný běh jednotlivých výpočetních vláken a to kolik jich může najednou běžet, jak jsou organizovaná a jak se mezi nimi přepíná. G80 umělo najednou zpracovat nějakých 12288 vláken, GT200 pak už 30720. FERMI pak umí 24 576. Než začnete někteří panikařit, že FERMI je slabší než GT200, není tomu tak. Ano reálně sice zvládne najednou méně vláken, ale za to s větší efektivitou. Přepínání mezi úlohami je prý 10x rychlejší a to konkrétně mezi 3D úlohou a GPGPU, jinými slovy se tedy věci dějí rychleji a ve výsledku z toho tedy kouká vyšší výkon a efektivnější využití systémových prostředků. Jinými slovy, FERMI grafika by měla daleko lépe zvládat to, když jí najednou budete zaměstnávat vykreslováním herní scény a výpočtem herních fyzikálních efektů.
Je ovšem otázka, zda je nutné jí tím obtěžovat, NVIDIA, která ale nemá procesory a snaží se PhysX prosadit i přes mrtvoly přes GPU, si myslí, že ano. Na druhou stranu mnozí programátoři vidí i mnohé další využití lepší správy prostředků. FERMI totiž umožňuje i spuštění věcí programových jader najednou, což u předchozích jader možné nebylo. Tím už se v podstatě začíná podobat procesoru. A když jsme u toho …
Právě zde je asi největší inovace a důvod toho, proč se nové GPU tváří spíše jako CPU. NVIDIA FERMI podporuje OpenCL a DirectCompute, obojí je ale podobné vlastně stávajícímu CUDA, takže to žádné překvapení není. Co je nové je podpora instrukční sady paralelních vláken PTX 2.0. Nemá cenu si nějak podrobně vysvětlovat, co to je, protože nás to jako běžné uživatele vlastně ani moc nemusí zajímat. Bylo by ale dobré vědět, že právě tohle je základem nabídky FERMI architektury z hlediska programování.
PTX 2.0 je unifikovaná sada instrukcí, která sjednocuje rozdělení adresní prostory, což výrazně zjednodušuje programování v mnoha směrech. Navíc jako taková podporuje C++, samozřejmě to ale neznamená, že programy psané pro X86 procesory rozjedete na FERMI grafice. To opravdu ne. Znamená to ale, že se takový programátor nemusí v podstatě učit zcela nový programovací jazyk a muže vytvářet snadněji programy v C++ optimalizované pro grafiku. Samozřejmě celá věc je poněkud složitější, odborníci odpustí, a nám ostatním to pro představu bohatě stačí.
Ještě než programování opustíme, ukažme si alespoň ještě novinku, kterou NVIDIA spolu s FERMI vypouští. Tím je vývojové prostředí s názvem NEXUS. To je navrženo k podpoře masivně paralelních aplikací psaných v podporovaných GPGPU jazycích jako je CUDA C, OpenCL nebo DirectCompute. NEXUS přináší spolupráci s Micrsofto Visual Studia a umožňuje tak snáze vývojářům pracovat, vyvíjet a analyzovat programy psané pro GPU stejně, jak to dělali s programy pro CPU. NEXUS umožňuje vývoj aplikací využívající, jak CPU, tak GPU právě programování a toto nové vývojové prostředí je důvodem proč je alespoň jedna skupina uživatelů nadšena z nové architektury FERMI.
Pro běžné uživatele z toho ale kromě prvních aplikací, které skutečně budou využívat plně výhod CPU i GPU, nic dalšího nekouká. Každopádně FERMI by mělo skutečně posunout GPGPU o dost dál …
|