Důvod není to, že by FMA4 bylo implementováno chybně, důvod je úplně jiný.
Mezi Intelem a AMD (a kdysi i VIA a jinými) se na poli instrukční sady x86 vede něco jako studená válka - společnosti nejsou ochotné spolupracovat ve vývoji instrukční sady. Jednoduchý příklad: Cyrix vyvinul vlastní instrukci pro šifrování a implementoval ji do svých CPU, o nějakou dobu později Intel představil úplně stejnou instrukci, jen s jinou opcode (něco jako jméno, díky kterému dekodér rozeznává co instrukce dělá). Problém je, že když někdo představí novou instrukci, nemůže ji jen tak přestat podporovat. V CPU se drží podpora i několik desítek let starých instrukcí, nelze z ničeho nic přestat podporovat instrukci kterou jsme minulý měsíc představili. CPU Cyrixu tedy musely najednou podporovat dvě šifrovací instrukce místo jedné, i když byly naprosto shodné. Byly tam i mnohem větší problémy, kdy se nejednalo jen o jednu instrukci, ale o celé instrukční rozšíření složené třeba z 50-100 instrukcí.
Tímhle způsobem výrobci přidávali tunu zbytečných instrukcí do x86, až jsme se dostali do dnešního stavu, kdy všechny x86 CPU trpí na to, že dekodér není schopný dostatečně rychle zjistit, co za instrukci z těch více než dvou tisíc má HW vlastně počítat.
Když se objevila potřeba vytvořit nové vektorové instrukce, AMD a Intel samozřejmě nespolupracovali. AMD představilo FMA3, pak si to rozmysleli a představili FMA4, pár měsíců později Intel představil AVX - AVX dělalo úplně to samé co FMA4/3, jen Intel zvolil výhodnější opcody (tj. AVX bylo o něco málo lepší). Později Intel upravil specifikaci tak, že AVX bude umět jen instrukce s 3 operandami (FMA3), ne se 4 (FMA4).
Na jakékoliv změny v HW bylo už pozdě, AMD tedy u Buldozeru muselo vydat CPU s FMA4 a nemohlo (nestíhalo) přejít na AVX, Intel na FMA4 ani nechtěl přejít a stejně by to taky nestihl implementovat.
U Ryzenů se původně počítalo s podporou obojího (FMA4 i 3), jenže pak si uvědomili, že tak by si sami vytvořili strašný problém - zatímco Intel si bude dělat vektorové jednotky pro 3 operandy, AMD by v budoucnu muselo zcela úplně zbytečně podporovat mrtvé vektorové instrukce se 4 operandami, které NIKDO nepoužívá. Kdyby Ryzeny (oficiálně) podporovaly FMA4, riskovali by, že někdo udělá na FMA4 pár programů, FMA4 dostane trochu popularity a ejhle - nemohli by FMA4 v budoucnu vyhodit ze Zenu 2 popřípadě Zenu 3, museli by je podporat už navždy (vektorové jednotky jsou už tak obrovské, muset zcela zbytečně podporovat 4 operandy by zabralo obrovské množství křemíku).
Odpovědět1 0