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

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

Instrukční bývala jedním z až mikroskopicky zkoumaných a hodnocených aspektů výbavy procesorové architektury. Situace se sice změnila, ale i tak mohou některé detaily překvapit…
Amd Zen Lisa Su 02

Koncem 90. let a nějaký čas ještě po roce 2000 čekali uživatelé netrpělivě na každou další instrukční sadu. Stál za tím výkonnostní přínos, který obvykle jejich podporu (na straně hardwaru a samozřejmě i softwaru) provázel. Postupem času ale podpora každé nové instrukční sady přinášela méně a méně výkonu a na software s podporou se čekalo déle. V některých případech se ani uživatelé nedočkali, neboť přínos byl tak nízký, že se vývojáři nevyplácelo ztrácet s implementací čas, nebo daná instrukční sada měla specifické využití a většině aplikací mnoho nepřinášela.

AMD „Orochi“ se čtyřmi jádry „Bulldozer“

Bulldozer

Dalo by se říct, že argumentům typu „Můj procesor podporuje XYZ 2.7 a tvůj je, heč!“ definitivně zavřela ústa AMD vydáním Bulldozeru a jemu následujícího Piledriveru. Toto zavření úst nebylo ze strany AMD tak úplně chtěné, ale to už je vlastně jedno. Spočívalo v tom, že tyto architektury s podporou prakticky všech tehdy možných i nemožných instrukcí nedosahovaly výkonu konkurenčního high-endu a ten pro změnu nedisponoval tak širokou podporou instrukčních sad. Jedna strana tedy nevytahovala podporu instrukčních sad kvůli malému praktickému přínosu a druhá strana rovněž ne, protože už v tomto ohledu nebyla na koni.

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. FMA neboli fused multiply–add akceleruje součin dvou hodnot se součtem třetí, přičemž zaokrouhlení je provedeno už po spočtení výsledku. Číslice (FMA4) neznačí generaci instrukce (jako např. SSE2, SSE4 ap.), ale počet podporovaných operandů (tedy vstupních číselných hodnot).

Amd Ryzen Dieshot

Zen

FMA3 a FMA4 se tedy neliší tím, že by jeden byl starší generací a tedy subsetem druhé novější generace, ale liší se implementací a kombinací výhod a nevýhod. FMA4 je flexibilnější, ale na úkor o něco vyšších nároků na registry, FMA3 je méně flexibilní, ovšem s nižšími nároky na registry. Připomeňme si (nostalgici mohou se slzou v oku), co o instrukčních sadách ve článku o Bulldozeru napsal před sedmi lety WIFT:

Konečně se do AMD procesorů dostávají SSE4.1 a SSE 4.2 instrukce, stejně jako AES-NI pro šifrování a hashování a také AVX pro náročné operace s plovoucí řádovou čárkou, plus FMA4 (A=B+C×D, jinými slovy pracuje se čtyřmi operandy) a dále instrukční sada XOP, což je spolu s FMA4 část sady instrukcí původně ohlášených jako SSE5 (to se nakonec rozmělnilo do několika sub-sad). Je jasné, že k využití těchto nových instrukcí (zejména pak FMA4 a sady XOP) je potřeba připravit patřičné aplikace příslušnými kompilátory, namátkou už o nich ví Microsoft Visual Studio 2010 SP1 nebo Open64 Compiler Suite. V redakci máme na vyzkoušení vzorky x264 kodérů s podporou AVX a XOP, takže si to budeme moci vyzkoušet, nicméně v tomto se výkon Bulldozeru ukáže až časem, jak se budou objevovat aplikace s podporou. Něco by vám o tom mohl říci také autor VirtualDubu Avery Lee.

Každopádně se nám instrukční sady Intelu a AMD mírně vzdalují. V tomto směru byla zajímavá „rošáda“ s FMA instrukcemi, AMD chtěla původně do Bulldozeru zahrnout FMA3 a Intel FMA4 a pak si to obě firmy skoro ve stejný moment prohodily, Intel do svých procesorů zahrne FMA3 (ovšem bude to až v roce 2013 Haswell) a AMD do Bulldozeru nyní dává FMA4 (rozdíl je v počtu operandů, FMA3 během práce potřebuje jeden z nich přepsat výsledkem, FMA4 použije pro výsledek čtvrtý – každopádně nejsou navzájem kompatibilní, aplikace či kompilátor musí počítat s konkrétní implementací).

Tento úryvek navíc pochází z jediného redakčního článku označeného tagem FMA4, což myslím pěkně ilustruje potřebu, respektive nepotřebu, toto téma nějak výrazněji řešit už v roce 2011. Stručně lze doplnit události z tehdejšího pohledu budoucí: FMA3 doplnil Piledriver a Intel s ním přišel, jak WIFT správně prorokoval, až s Haswellem.

Nyní, s odstupem mnoha let, upozornila redakce webu Level1Techs na fakt, že ač podpora pro FMA4 v oficiálních specifikacích architektury Zen chybí, hardwarově podporována je, což je možné i úspěšně experimentálně potvrdit. Je třeba dodat, že redakce webu Level1Techs správně upozornila, ovšem objevitelem této skutečnosti není. Jen tak mezi řečí ji totiž na svém blogu zmínil Agner. Ovšem právě v důsledku nenápadné zmínky koncem rozsáhlého textu, navíc v rámci média, které má řekněme úzký okruh příznivců, zůstal tento fakt opomenut.

Zen Computex 2016 08

Zen na Computexu 2016

Logickou otázkou následující této informaci je, proč je podpora FMA4 u Zenu neaktivní. Redakce Level1Techs předkládá hypotézu, že kvůli hardwarovému bugu. To je možné, ale jedním dechem je třeba dodat, že jde jen o jednu z možných hypotéz. Podporu FMA4 je možné ověřit (a učinil to již loni Agner) a nějaký zásadnější problém se neprojevil. Pokud má Zen s FMA4 problém, pak jde o problém, který se objevuje jen v nějaké specifické situaci, ne vždy. V takovém případě by ale bylo možné předpokládat, že by AMD měla snahu problém vyřešit během přípravy Zen+, kdy do jádra zasahovala a došlo mj. k výraznému snížení latencí cache a řadiče.

Znamenalo by to, že buď (1) by odstranění problému vyžadovalo více práce než umožňovaly časové či finanční prostředky vymezené na přípravu Zen+, nebo (2) AMD v kontextu požadavku současných aplikací nevidí důvod podporu FMA4 u první generace Zenu vůbec řešit, nebo (3) ve skutečnosti nejde o hardwarový bug.

Zen Isscc 02

Z pohledu výrobce může být nefunkčnost FMA4 strategickým rozhodnutím. Lze si představit dva důvody, dvě hypotetické možnosti, proč by k tomu mohla AMD přistoupit. (1) Během vývoje architektury Zen a přípravy Zen 2 a 3 dospěla k závěru, že se FMA4 neprosadilo a vypustila jeho podporu zcela. Aby příští generace Zenu v tomto ohledu nevypadaly jako krok zpět, byla podpora deaktivována i u první. (2) Další možnost se ubírá opačným směrem, byť je méně pravděpodobná. AMD si je vědoma, že každý další mezigenerační architektonický krok přináší menší posun než ten předchozí. To vidíme u Intelu na evoluci od vydání architektury Sandy Bridge. Nezpřístupnění FMA4 s první generací Zenu by mohlo být marketingové rozhodnutí, které seznam novinek Zen 2 snadno rozšíří o jednu položku.

Zen Isscc 04

Byť druhá možnost asi nebude vysoce pravděpodobná, není nemožná. Marketingové zamlčení podpory nové funkce není nijak ojedinělé. Vzpomenout můžeme třeba na GPU Bonaire / Radeon HD 7790, jehož technologická výbava byla omezena a odhalena až při vydání v podobě Radeonu R7 260X, který byl součástí nové generace, se kterou byly nové technologie (TrueAudio aj.) představeny. Ani ve světě procesorů nejde o ojedinělou záležitost - byť je rozdíl v tom, že novinky byly hardwarově podporovány, pouze o nich marketing spíše mlčel: Jde o APU Raven Ridge, které podporuje naprostou většinu novinek Zen+, přesto bylo v době vydání propagováno jako Zen první generace, aby tyto novinky zůstaly marketingovému oddělení k dispozici k příležitosti vydání druhé generace osmijádrových Ryzenů.

Tagy: 
Zdroje: 

Diskuse ke článku Zen hardwarově umí i FMA4 instrukce, jsou pouze neaktivní

Středa, 19 Prosinec 2018 - 11:05 | frr | Pokud se nepletu tak za mých mladých let se...
Úterý, 16 Říjen 2018 - 15:35 | franzzz | > SSE ani AVX tyhle instrukce nemaji Presne...
Úterý, 16 Říjen 2018 - 13:44 | xR | FMA3 tohle resi tak, ze existuji vsechny mozne...
Úterý, 16 Říjen 2018 - 13:35 | xR | To je pravda, ale kolega asi myslel neco, co je...
Úterý, 16 Říjen 2018 - 13:25 | VŠK | FMA4 je optimalizovatelnější (takové pěkné slovo...
Úterý, 16 Říjen 2018 - 13:21 | tomo | Neplacej. FSIN, FTAN,... byly soucasti instrukcni...
Úterý, 16 Říjen 2018 - 12:32 | franzzz | " A tak se stalo, že když AMD vydala Zen a...
Úterý, 16 Říjen 2018 - 12:01 | xR | Tohle už je známé delší dobu, ale každopádně díky...
Úterý, 16 Říjen 2018 - 11:53 | Milan Bačík | Taky múže jít o podporu pro specifické zákazníky...

Zobrazit diskusi