Keby bola pravda že dôjde k odstraneniu MMX instrukcii tak by sme stratili čast procesorovej historie z v tej dobe aktuálnych procesorov čo v konečnom dôsledku nemusi byt tragédia pre novodobý softvér lebo ten už pravdepodobne na MMX nie je závislý.
Na PC platforme Wintel sa mi pacila a cenim si hlavne tu spätnu kompatibilitu vzdy ked prisla nova verzia Windows alebo nova generacia x86 CPU vzdy to bolo tak nejako uspokojivo spätne kompatibilne a clovek mal tie "istoty". :D Toto mam na PC rád, teraz mi odstranovanie starých instrukcii troska tuto nostalgiu rúca.
Zaujima ma aj problematika stareho softu, konkretne starých hier, pokial viem tak vecsina starých hier aj celkom "aktualnych" ako napriklad Mafia 1 vyuziva najskor nieco z MMX, X87 instrukcii a rad si tieto stare hry zahram aj dnes na novom PC. Takze pokial dôjde k odstraneniu MMX nebude mozne tento softver spustit?
Pokud program intrukční rozšíření CPU nedetekuje a nemá víc cest (a místo toho používá MMX natvrdo všude), tak pak by skutečně nefungoval. Respektive se spustí, ale pak při prvním výskytu spadne na chybě "program zavolal neplatnou instrukci" (nebo jak přesně je to řečeno).
U těch her je problém, že je člověk většinou nepřeloží znovu, kód není nebo není dostupný, často i grafika a další původní "assets" jsou ztracené.
Tak zase je na to sám a evidentně priorita EHW u CNEWS je nízká. Ale někdy je ta touha po táháku v titulku až moc křečovitá a laciná. Jenže to je zase nevýhoda omezené redakce, korekční mechanismy nefungují. Nevím, jestli to vůbec někdo rediguje. Nicméně tomu by se nevyhl zřejmě sebelepší novinář. Prostě nejsou finance na řádnou redakční práci.
EDIT: zapomněl jsem zdůraznit že z většiny je práce odváděna víceméně na úrovni a v rámci podmínek kvalitně.
No teda zrovna u tohohle jsem neměl pocit, že by to byla bulvární věc. Jestli se to stane, tak to bude pro ekosystém x86 docela zásadní věc.
Ono je teda jinak vůbec legrace, jak se ty reakce rozchází s očekáváním. Někdy se člověk celkem trefí v odhadu, že se něco bude číst víc než běžně, ale kolikrát je to úplný překvapení (směrem nahoru i dolů). A tady to je podobný, že mi to lidi zkritizujou většinou čekám u některejch jinejch věcí, a tam se to nestane :)
když už jsme u té emulace : https://translate.google.com/translate?sl=auto&tl=en&js=y&prev=_t&hl=cs&ie=UTF-8&u=https%3A%2F%2Fwww.heise.de%2Fct%2Fausgabe%2F2017-1-Von-Instruktionen-und-Takten-3575493.html&edit-text=
přidá Intel VISC do svých rozšíření x86 architektury ?
Ako naznačil gngl, väčšina inštrukcií je realizovaná aj vrámci SSE/AVX. Problémom môžu byť len inštrukcie na réžiu FPU (vtedy sa správala ako koprocesor, dnes je rovnocenná s ALU).
Ale vlastne, dá sa to riešiť aj bez prekompilovania. ARM funguje tak, že keď narazí na neznámu inštrukciu tak vygeneruje prerušenie (x86 bude podporovať určite niečo podobné). A vrámci assemblerovskej rutiny na najnižšej úrovni by to bolo riešiteľné vrámci pár strojových cyklom, čo myslím vzhľadom nato že dnešné počítače sú niekoľko krát rýchlejšie nemusí byť problém. A na úrovni hardvéru alebo mikrokódu by to bolo ešte rýchlejšie.
Mimochodom, AMD sa zbavilo 3dnow. Boli s tým nejaké problémy?
No a ďalšia vec je, že vypustenie pár inštrukcií im určite nepomôže k razantnému zvýšeniu výkonu. To nedáva zmysel. Skôr tipujem buď HSA, alebo presun plánovača vlákien z OS do hardvéru (alebo obe).
x87 není v mikrokódu. (časování neodpovídá) Ani by to dobře nešlo, protože hodně i současných aplikací stále primárně používá jenom x87. (Pouze překladače od Microsoftu defaultně použijí SSEx pokud se cílí na Windows 7 a novější)
Jde to dobře ověřit pomocí starého (a kontroverzního benchmarku) ScienceMark 2.0 - podtest DGEMM.
Minimálně na papíře toho mají určitě ještě víc, jde jen o to, nakolik jsou to schopni přatavit v nějaký produkt a za jak dlouho. Je jasné, že pokud je AMD dotáhne, tak to je motivace, proč tomu věnovat čas a peníze. Na druhou stranu, je také potřeba vydojit současné technologie. I kdyby AMD dotáhla, tak ke změně na trhu hned tak nedojde, takže času mají dost.
K razantnímu zvýšení výkonu to asi nepovede, ale podle mě se potvrzuje to, co říkám už roky (a co mi mnozí vymlouvali), totiž že ten akumulovaný starý sajrajt, který nikdo nepoužívá, musí nakonec pryč. Tedy asi podpora tech legacy fíčur jako instrukcí, které se už nepoužívají (a nakonec možná i samotného složitého kódování instrukcí s dlouhou evoluční historií) asi nebude tak zanedbatelná, jak mi všichni tvrdili. ;) Kdyby ne, asi by o tom Intel neuvažoval.
IMHO už od doby cca Pentia IV se všechno překládá na vnitřní instrukční sadu CPU právě pomocí něj. Jediná otázka je, jestli k tomu má nebo nemá specializovaný hardware. Tzn. jestli se to namapuje blíže 1:1 nebo naopak se bude muset použít 50 instrukcí na vykonání té jedné.
Teď se mi nedaří dohledat, ale dávněji jsem četl, že došlo k poklesu výkonu v x87 operacích při přechodu na novou architekturu a zdůvodnění padlo právě ve směru, že už to není 1:1, protože jsou to vlastně legacy instrukce, které se skoro nepoužívají.
Nutno říct, že jste mě ale dost nahlodali. Zvláště když se mi to nedaří dohledat.
3DNow! byla jiná situace. Vývojář u něj nikdy nemohl prsotě říct, že je požadované a že to bez něj nepojede, takže tam vždycky musela být nějaká runtime detekce, nebo třeba dvě různé různé binárky, jedna pro Intel, jedna pro K6-2/3 a K7.
Naproti tomu MMX měly kromě Intelu i všechny srovnatelná konkurenční CPU (Cyrix, AMD, IDT, Rise, pak VIA), takže tam se vývojáři klidně mohli spolehnout, že MMX je všude a může být zakompilované napevno (a že starší CPU prostě nebudou podporovaná). Někdy třeba nějaké programy ani nemusí mít skalární/céčkovou verzi některého toho kódu.
Ale to je přeci ta zjednodušená jednotka, o které hovořím. Stejně jako když třeba paralelní jednotku nahradíte sériovou. Trade-off mezi prostorem, spotřebou a rychlostí se dá dělat právě takhle. Ale jenom mikrokódem to jen těžko spravíte, protože zrovna ty "hlavní" jednotky jako SSE a AVX určitě budou natvrdo zadrátované. Záleží na nich příliš mnoho, než abyste si mohl dovolit je kompromitovat nějakou mikroprogramovatelností kvůli nějakému marginálnímu využití. Vždyť z téhož důvodu do nich ani nedali transcendentní funkce (*), které by člověk dnes využil mnohem častěji, než kód x87, tak proč by do nich měli dát ještě méně používanou funkčnost FPU typu x87?
((*) Bude platit pouze do příchodu VEXP2PD a VEXP2PS v procesorech Skylake-EX a Cannonlake, a i pak budou stále ještě chybět logaritmy a goniometrické funkce.)
Ale ta "vnitřní instrukční sada" nemá nic společného s chováním jednotky FPU. I pokud ta je stále ještě navržena jako stavový automat (kvůli transcendentním funkcím pravdepodobně musí), tak to přesto bude černá skříňka, do které rozhodně nebudete chtít sahat. Jinými slovy, v té "vnitřní instrukční sadě" budou výkonné operace FPU z hlediska zbytku procesoru (a hlavně dekodéru instrukcí) s největší pravděpodobností stále atomické. Pokud moderní čipy mají relativně nižší výkon v x86 FPU, tak to bude spíš právě tím, že kvůli lepšímu vyvážení procesoru asi prošla odtučňovací kúrou.
Sám sis dal odpověď, jak se to dá vypočítat a přitom to asi nevidíš. Pořád mluvíš o tom, že je něco třeba přidat do vektorových jednotek, já říkám, že všechno potřebné je na místě. Jakákoliv transcendentím funkce jde udělat iterativně pomocí sčítání a podmíněného skoku (samozřejmě násobení, dělení urychlí výpočet).
SSE/AVX můžou být "black box", ale to znamená, že je můžeme použít jako celek. Nebo se na ně úplně vykašleme a ALU to taky zvládne (i když asi ukrutně pomalu). Možností aproximací je kopa a některé z nich jsme určitě oba počítali ve škole.
A vy zase asi nevidíte, že když takhle začnete štourat v jednotkách SSE/AVX v dostatečné míře na to, abyste mohl volitelně rozšířit přesnost na 80 bitů a přidat schopnost počítat transcendentní funkce, tak zkompromitujete jejich "normální" provoz takovým způsobem, že se to téměř jistě nevyplatí. Intel i těm "nezkompromitovaným" jednotkám musí v současnosti snižovat frekcenci, protože už tak moc žerou, a vy tam chtete přidat nějaká extra hradla (a prodlevy), jež drtivou většinu času nebudou dělat nic užitečného. V dnešní době je mnohem lepší mít trochu "temného křemíku" navíc pro samostatnou FPU jednotku a použít power gating.