@mjanjic,
Gomila koda je kompajlirana sa dinamickim dispatcher-om za razne Intel arhitekture. Recimo bilo sta kompajlirano Intelovim kompajlerom.
Tako ti ne vidis nista i deluje ti da .exe radi "na svim Intel procesorima" od Atoma do Core-a - to je zato sto dispatcher mapira adekvatne funkcije za adekvatni CPUID.
Evo sta podrzava Tremont:
Code:
MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT,
AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID,
SGX, UMIP, GFNI-SSE, CLWB, ENCLV, SHA
Evo sta podrzava Sunny Cove:
Code:
MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT,
AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA3, F16C, BMI,
BMI2, VT-x, VT-d, TXT, TSX, RDSEED, ADCX, PREFETCHW,
CLFLUSHOPT, XSAVE, SGX, MPX, AVX-512
Zamisli sad da ucitas neki .exe fajl. Ako je kod pisan pre Lakefield-a, dispatcher ce ucitati kod sa najvise instrukcija. Sve dok taj kod ostane na Sunny Cove jezgru, sve je OK.
Ali ako OS scheduler odluci da migrira niti na mala jezgra, pre ili kasnije ce doci do ilegalnog opkoda. Ako to hoces da resavas sa exception handler-om u scheduleru, OK to moze, ali racunaj sa zescim usporenjem.
Linux vec odavno kuburi sa ovim (pre svega zbog ARM-a - iako ARM ima mnogo manji problem, obicno su krivci bile firme sa svojim custom arhitekturama poput Samsunga i NVIDIA-e).
Citat:
Mala jezgra mogu da se bave "prostim" poslovima, tastaturom, mišem i drugim periferijama, delovima GUI operativnog sistema, i sve ono što podržavaju, dok veća jezgra mogu da se bave nekim proračunima, obradom multimedije ili 3D renederom i slično.
Odlicna ideja! A kako ce to OS scheduler da zna sta neka nit radi - gledace u pasulj pa da zna da se nit "bavi periferijama"? I, jos vaznije, kako ce scheduler unapred znati da nit ne koristi, recimo, instrukcije koje nema Tremont?
OK, mozda uvedu neki novi API da se nit "predstavi" i opise sta radi - ali sav postojeci softver pisan u proteklm decenijama nece koristiti taj API. Plus ovo uopste ne resava pitanje instrukcijskog seta.
Za matori softver prakticno ili mogu da ga forsirsaju na jedan tip jezgra ili da ubace exception handler u scheduler (uz sav trosak bacenih ciklusa).
Uzgred, te price sta ce neko terati ili nece terati na laptopu su budalastina. Ako je procesor x64 kompatibilan od njega ocekujes da izvrsava sav korektan kod koji postuje sta CPUID kaze. Ako procesor i OS nisu u stanju da izvrse takav kod bez krahova, oni su defektni. "No ifs, no buts".
Sta, ako poteras video editor, OS ce da ti izbaci poruku da "to nije softver za ovaj laptop"? Super, screenshot i pravac roba nazad i refund.
Veruj mi, problem nije uopste trivijalan. Nije NVIDIA slucajno na kraju pogasila "little" jezgra, niti je Go zabatalio atomike koje ne podrzavaju mala Samsung Exynos jezgra.
A verujem da i NVIDIA i Google imaju dovoljno eksperata.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos:
http://www.digicortex.net/node/17 Gallery:
http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! -
https://github.com/psyq321/PowerMonkey