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

Diskuse k Zen hardwarově umí i FMA4 instrukce, jsou pouze neaktivní

Taky múže jít o podporu pro specifické zákazníky - tedy superpočítače. Tyto často mají specifické úpravy na úrovni mikrokódu.

+1
+1
-1
Je komentář přínosný?

Tohle už je známé delší dobu, ale každopádně díky za článek. Nejpravděpodobnější vysvětlení je to (nebo se to aspoň v odborných kruzích říká), že plán AMD byl sjednotit instrukční sady s Intelem, ale v případě FMA4 narazili na problémy s kompatibilitou u špatně napsaného SW (který na AMD automaticky použil FMA4 místo detekce přes cpuid). Postupné vypuštění HW podpory pro FMA4 u dalších generací Zenu by dávalo smysl, protože by to umožnilo zjednodušit návrh kritické části jádra (3 porty do registrů místo 4) a tím zvýšit výkon (menší latence). Tohle byl taky zřejmě hlavní důvod, proč Intel přešel z FMA4 na FMA3 ještě před dokončením návrhu Haswellu.

+1
+2
-1
Je komentář přínosný?

FMA4 je optimalizovatelnější (takové pěkné slovo!). FMA3 dělá to samé, ale jeden registr zničí a přepíše výsledkem. V případě, kdy bych mohl a chtěl ten registr použít v další instrukci, musím ho tam znovu nasunout. Ve specifických výpočtech to může hrát roli. A taky je to přehlednější a kontrolovatelnější.

+1
0
-1
Je komentář přínosný?

FMA3 tohle resi tak, ze existuji vsechny mozne varianty te instrukce, takze pripadu, kdy je potreba vkladat MOVy je minimum a navic to nestoji zadny vykon (MOV mezi registry je free). S tou prehlednosti ale souhlasim. Z pohledu programatora je FMA4 urcite lepsi. Ale za ten nizsi vykon vsech zakladnich FP operaci to nestoji :).

+1
0
-1
Je komentář přínosný?

" A tak se stalo, že když AMD vydala Zen a ve výčtu podporovaných instrukcí chyběla FMA4, bylo to většině lidí upřímně jedno. "

To bude tim, ze a) vetsina lidi netusi co FMA je a jaky ma prakticky prinos, a b) existuje FMA3 ktere odvede stejne dobrou praci.

Jinak zrovna FMA bych rekl ze je jedna z tech dulezitejsich instrukci poslednich 10 let. Cirou nahodou vykon GPU, kdyz se udava v GFLOPs, obvykle znamena prave GFLOPs ve FMA operaci, ne prumer ani nic jineho. Na vetsine GPU je taky FMA jedna z nejrychlejsich operaci (obvykle 1 clock cycle).

Jestli vas zajima proc je to tak dulezite, tak strucne: na CPU ani FPU nenajdete instrukce pro transcendentalni funkce (sin, cos, log, exp atd). Resp na GPU jsou ale s velmi omezenou presnosti. Tudiz pokud potrebujete pocitat neco s vyssi presnosti, tak to musite vypocitat softwarove (nejakym matematickym vzorcem), coz obvykle znamena polynomy, a prave polynomy umoznuje FMA pocitat o dost presneji.

+1
+2
-1
Je komentář přínosný?

Neplacej. FSIN, FTAN,... byly soucasti instrukcni sady FPU uz od 80287 v roce 1982

+1
0
-1
Je komentář přínosný?

To je pravda, ale kolega asi myslel neco, co je opravdu v HW a ne jen v mikrokodu. SSE ani AVX tyhle instrukce nemaji a navic FPU se uz v 64bit modu bezne nepouziva.
Jeste dodam, ze velky prinos FMA je krome polynomu take napr. pro vypocet vsemoznych maticovych transformaci a matematickych vypoctu obecne. Zvysuje to presnost i vykon (2 FP operace za cenu 1).

+1
0
-1
Je komentář přínosný?

> SSE ani AVX tyhle instrukce nemaji

Presne tohle jsem myslel. A kolega ma taky pravdu ze FPU se uz davno nepouziva, ma totiz (krome pomalosti) taky zopar zasadnich chybicek ktere SSE/AVX nemaji - napriklad ze vysledky nejakeho kodu ktery pouziva FPU muzou zaviset na tom, jak dobre dany kod kompilator zoptimalizuje. Coz je teda dost zasadni problem kdyz clovek chce reprodukovatelne a spolehlive vypocty. Z tohodle duvodu napr. GCC kompilator uz roky pouziva defaultne SSE na vsechny vypocty s float/double. Viz tady: https://gcc.gnu.org/wiki/x87note

+1
0
-1
Je komentář přínosný?

Pokud se nepletu tak za mých mladých let se "FMA se třemi operandy" říkalo "akumulace". Jedná se o základní stavební kámen všelijakých "konvolučních" výpočetních algoritmů: filtrace časových řad a diskrétní Fourierova transformace (audio, měření a regulace, software-defined radio), dvourozměrná filtrace a komprese/dekomprese obrazu (DCT, wavelety) apod. Základní výbava všech DSPček - ačkoli tam možná "akumulátor" byl spíš jeden konkrétní registr s pevným účelem, tzn. možná nefiguroval v instrukcích jako explicitní operand... Ano tohle vše je podmnožinou "maticových operací".

+1
0
-1
Je komentář přínosný?

Pro psaní komentářů se, prosím, přihlaste nebo registrujte.