Diit.cz - Novinky a informace o hardware, software a internetu

Druhá generace Parallel Thread Execution ISA

Nvidia Fermi logo (jako)
Kalifornská Nvidia právě v tuto chvíli oficiálně uvolňuje informace o chystané nové (nejen DirectX 11) generaci GPU, o které jsme doposud psali jako o GT300. Její krycí jméno je Fermi a rovnou si řekněme: jde o malou revoluci ve stylu, s jakým přišlo GPU G80 na GeForce 8800. Pojďme se tedy společně podívat, co Nvidia právě ve svých laboratořích a ve spolupráci s TSMC usilovně finišuje, co hodlá postavit proti Radeonům a FireGL/FireStream kartám generace HD 5800 a čím hodlá zatopit pod kotlem nejen AMD, ale i Intelu. Architektura nové generace Nvidia čeká na své představení…

Fermi je první architekturou podporující instrukční sadu Parallel Thread eXecution (PTX) 2.0. PTX je low level virtuální mašina a ISA (Instruction Set Architecture) navržená k podpoře paralelních operací na paralelních thread procesorech. PTX instrukce programů jsou ovladačem GPU překládány na strojové instrukce. Primárním cílem PTX je:

  • poskytnou stabilní ISA, které přežije několik generací GPU
  • dosahovat maximálního výkonu GPU v kompilovaných aplikacích
  • poskytovat nezávislé ISA pro C, C++, Fortran a další jazyky
  • poskytovat code distribution ISA pro vývojáře aplikací a middleware
  • poskytovat společné ISA pro generátory a překladače optimalizovaného kódu pro jednotlivé jazyky
  • usnadnit ruční psaní knihoven a výkonných kernelů
  • poskytovat šklávoatelný programovací model, který se přizpůsobí velikosti GPU od několika jader až po mnoho paralelních jader

PTX 2.0 přináší několik nových vlastností, které velmi vylepšují programovatelnost GPU, přesnost výpočtů a výkon. To zahrnuje již zmiňované 32bit floating point přesnost, unifikované adresní prostory pro proměnné a ukazatele a nové instrukce pro OpenCL a DirectCompute. Speciálně zdůrazněme: PTX 2.0 bylo specificky navrženo k poskytnutí plné podpory pro programovací jazyk C++.

Jednotný adresní prostor pro plnou podporu C++

Fermi a PTX 2.0 ISA implementují jednotný (sjednocený, unifikovaný) adresní prostor, který sjednocuje tři až dosud oddělené adresní prostory (threadový lokální privátní, blokový sdílený a globální) pro načítání a uchovávání operací. V PTX 1.0 byly instrukce pro tyto operace specifické vždy pro jeden z oněch tří adresních prostorů. Programy mohly načítat a ukládat hodnoty pouze vždy v jednom daném specifickém, známém v momentě kompilace. Bylo tak velmi těžké plně implementovat C a C++ ukazatele, neboť cíle ukazatelů v adresním prostoru nemusely být v momentě kompilace známy a bylo možné je určovát pouze dynamicky za běhu.

S PTX 2.0 jednotný adresní prostor tyto dosud oddělené sjednocuje v jeden souvislý adresní prostor. Jediná sada unifikovaných instrukcí pro načítání a ukládání tak operuje nad tímto jediným adresním prostorem a nahrazuje onu dosud užívanou trojici pro lokální, sdílené a globální prostory. Aktuálně zadefinovaný 40bitový adresní prostor podporuje až 1 TB adresovatelné paměti, ISA pro načítání a ukládání podporuje dokonce 64bitové adresování pro budoucí růst parametrů produktů na bázi Fermi architektury.

Nvidia představila Fermi: jednotný adresní prostor

I díky tto sjednocené implementaci podporuje Fermi plnohodnotně C++ programy. PTX 2.0 umožňuje použít unifikované ukazatele na kteroukoli oblast paměti, hardwarová translační jednotka Fermi pak automaticky mapuje ukazatele na správnou oblast paměti. Dále nechybí podpora pro virtuální funkce, ukazatele na funkci a "new" a "delete" operátory pro dynamickou alokaci objektů a dealokaci. Též jsou podporovány operace pro výjimky "try" a "catch".

Optimalizace pro OpenCL a DirectCompute

Jak OpenCL, tak DirectCompute je úzce spojeno s programovacím modelem CUDA. Mají shodné klíčové abstrakce threadů, bloky threadů, sítě bloků threadů, synchronizační paměťovou bariéru, perblock sdílenou paměť, globální paměť i atomické operace (takové, které jsou dokončovány "na jeden zátah" bez vlivu okolí uprostřed jejich běhu - nemůže se tedy stát, že by nějaké vlákno vyčetlo nekonzistentní data). Fermi jakožto třetí generace CUDA architektur, je "od přírody" pro tato API optimalizováno. Navíc Fermi disponuje hardwarovou podporou pro OpenCL a DierctCompute surface instrukce s konverzí formátu, což umožňuje grafickým a výpočetním programům jednoduše pracovat s těmi samými daty. PTX 2.0 ISA také přidává podporu pro další DirectCompute instrukce jako population count, append a bit-reverse.

IEEE 32bit Floating Point přesnost

Single-precision floating point instrukce nyní podporují subnormální čísla přímo na úrovni hardware, stejně jako zaokrouhlovací módy IEEE 754-2008 (nearest, zero, positive infinity,
a negative infinity). Subnormální čísla jsou taková, která leží mezi nejmenším pozitivním a největším negativním číslem každého floating point systému. Pryč je tak chování předchozí generace, která takové výsledky vypouštěla a dávala hodnoty jako nula, což vedlo ke ztrátě přesnosti výpočtu a produkovalo neodpovídající chování programů.

CPU typicky provádějí subnormální výpočty pomocí nakládání s výjimkami, což vyžaduje tisíce cyklů. FPU jednotka ve Fermi má na toto specifický kousek hardware, tedy vše provede bez dopadu na výkon.

Nvidia představila Fermi: Fused MAD

Obvyklá sekvence operací v počítačové grafice či lineární algebře, je násobení dvou čísel a přičtení výsledku ke třetímu (tedy D = A . B + C). Předchozí generace GPU tuto funkci akcelerovaly multiply-add (MAD) instrukcí, která umožňovala vykonat oba operátory v jediném taktu. MAD instrukce provádí násobení s oříznutím následované přičítáním se zaokrouhlením na nejbližší hodnotu. Fermi implementuje novou fused multiply-add (FMA) instrukci v 32bit single-precision i 64bit double-precision floating point číslech (GT200 podporuje FMA jen pro double-precision).

David "David Ježek" Ježek

Bývalý zdejší redaktor (2005-2017), nyní diskusní rejpal.

více článků, blogů a informací o autorovi

Diskuse ke článku Nvidia představila novou architekturu Fermi

Neděle, 4 Říjen 2009 - 09:01 | mukade | ja som zvedavy na larrabee, ci zamuti stojate...
Pátek, 2 Říjen 2009 - 12:00 | Anonym | Charlie Demerjan pátrá, radí, informuje: http://...
Pátek, 2 Říjen 2009 - 08:38 | Anonym | ba te prezentaci byla ukazovana jenom maketa...
Pátek, 2 Říjen 2009 - 08:26 | Anonym | až to uvidím tak to posoudím, ale marketing maj...
Pátek, 2 Říjen 2009 - 08:25 | Mad MaxII | >>David: Omluva, vy jste to nikde...
Pátek, 2 Říjen 2009 - 07:43 | Mad MaxII | >>David: Pane redaktore, s tim ze...
Čtvrtek, 1 Říjen 2009 - 22:23 | Anonym | Neklesly akcie nVidie protože pořád hlásala, že...
Čtvrtek, 1 Říjen 2009 - 21:27 | qee | Bezva článek, díky. Jinak bych si tipnul, že...
Čtvrtek, 1 Říjen 2009 - 20:12 | Anonym | Fermi ma vela veci ktore sa budu dat pouzit v...
Čtvrtek, 1 Říjen 2009 - 19:51 | Anonym | Osobně si myslím, že hardwarově nebude mezi...

Zobrazit diskusi