Passa ô cuntinutu

AVX

Rifirimentu d'archititturaFeex

AVX, Advanced Vector Extensions, agghiunci un mudellu di prugrammazzioni vitturiali cu riggistri YMM e struzzioni cudificati cu VEX, nclisi opirazzioni a puntu fluttuanti a 256 bit. Servunu sia lu supportu dû prucissuri ca la gistioni dû statu dû sistema upirativu.

Chiḍḍu ca t'hà sapiri

AVX, Advanced Vector Extensions, agghiunci un mudellu di prugrammazzioni vitturiali cu riggistri YMM e struzzioni cudificati cu VEX, nclisi opirazzioni a puntu fluttuanti a 256 bit. Servunu sia lu supportu dû prucissuri ca la gistioni dû statu dû sistema upirativu.

Comu funziona

AVX allarga li riggistri vitturiali a 256 bit, chê 128 bit nfiriuri d'ogni riggistru YMM ca si suvrappòninu ô sò riggistru XMM. Assai struzzioni ùsanu na forma a tri opiranni, pirmittennu â distinazzioni d'èssiri diffirenti di l'input. Un vetturi a 256 bit po tèniri 8 valuri a puntu fluttuanti a pricisioni sìngula o 4 a pricisioni duppia, ma li struzzioni si diffirènzianu nnê tipi d'upirannu e nnô cumpurtamentu.

Unni e' ùtili

Un ciclu numèricu po sommari diversi valuri a puntu fluttuanti ndipinnenti cu na sula struzzioni vitturiali. Lu cumpilaturi o la libbrirìa havi a ginirari ddu còdici e urdinari caricamenti, alliniamentu, cudati e dipinnenzi currettamenti. AVX nun parallilizza autumaticamenti un prugramma qualsivogghia tra li core, e l'opirazzioni cu nteri a 256 bit addànnanu di cuntrollari l'estinzioni rilivanti mmeci d'assùmiri AVX2.

Comu cuntrollari lu supportu e l'abbilitazzioni

Cuntrolla CPUID.01H:ECX AVX bit 28, XSAVE bit 26 e OSXSAVE bit 27. Sulu doppu aviri cunfirmatu OSXSAVE lu software po usari XGETBV cu ECX=0 e virificari ca i bit 1 e 2 di XCR0 abbìlitanu lu statu XMM e YMM. Usa un dispatcher di runtime mantinutu mmeci d'eseguiri AVX comu n'esperimentu di rilivamentu.

Lu prugramma havi sia a cuntèniri na mplimintazzioni apprupriata sia a silizziunàrila a runtime. La nummarazzioni di l'hardware, lu statu dî riggistri abbilitatu dû SO e la basi cumpilata dû binariu sunnu cuntrolli siparati. Na màchina virtùali po ammustrari apposta menu funziunalitati dû sò host, e un container nun agghiunci struzzioni a la CPU host.

Zoccu la funziunalitati nun stabbilisci

Lu supportu AVX di sulu nun signìfica AVX2, FMA, F16C, AVX-VNNI o AVX-512. La larghizza dû vetturi nun dici quanti cicli pigghia na struzzioni. Na màchina virtùali po mustrari un set d'istruzzioni cchiù nicu rispettu a l'host fìsicu.

Cumpatibbilitati e pristazzioni nnâ pràtica

Misuredda lu caricu di travagghiu cumpletu cu dati rapprisintativi. Vettura cchiù larghi ponnu arridùciri lu nùmmaru di struzzioni lassannu lu tràfficu di mimoria, la sincrunizzazzioni o i costi di cunvirsioni nun canciati. La latenza dî struzzioni, lu throughput e lu cumpurtamentu d'energìa dipènninu dâ microarchitittura esatta e dî cunnizzioni upirativi.

Na lista di virìfica pràtica

  1. Riggistra lu mudellu esattu dû prucissuri o dâ piattafurma e li virsioni di l'applicazzioni, dû SO e dû runtime cuinvorti. Manteni la formulazzioni di l'erruri o dû requisitu riali.
  2. Cuntrolla lu rifirimentu dû prudutturi pi ddu mudellu esattu, poi spizziona la capacitati effittiva e lu statu abbilitatu nta l'ambienti unni lu prugramma gira.
  3. Cunfrunta ogni requisitu dû binariu o dû backend silizziunatu. Na funziunalitati cû nomu sìmili, un pseudònimu o n'etichetta ticnulòggica ginèrica nun abbàstanu.
  4. Cunferma ca l'applicazzioni hà silizziunatu la mplimintazzioni privista. Usa la sò diagnòstica ducumintata e un fallback suppurtatu quannu li requisiti nun sunnu suddisfatti.
  5. Fai un canciamentu suppurtatu a la vota e ripeti lu stissu caricu di travagghiu. Manteni dispunìbbili la cunfigurazzioni urigginali e lu pircorsu di ricùp ситуаazzioni.

Si la funziunalitati e' ndicata ma lu software nun la po usari

Accumenza cû cumpunenti esattu ca fallisci. Un database d'hardware discrivi la capacitati riggistrata; lu sistema upirativu o l'hypervisor ponnu ammustrari n'ambienti effittivu diffirenti. N'erruri di struzzioni illigali addanna puru n'indàggini supra la struzzioni ca fallisci pi daveru e supra la build binaria, picchì la curruzzioni o na struzzioni nun currilata e nun suppurtata ponnu fari un sìntumu sìmili.

Installa la virsioni di l'applicazzioni, dû driver o dû runtime suppurtata pâ piattafurma esatta, e usa la build di basi o di fallback ducumintata dû prudutturi si n'hai bisognu. N'aggiurnamentu dû software nun po criari na struzzioni ca manca nnô prucissuri. Li canciamenti di firmware e di pulìtica di sicurizza avìssiru a sèquiri la prucidura dû prudutturi dû sistema e un pianu di ricùpiru mmeci d'un ricittariu d'uttimizzazzioni ginèricu.

Funti e scanciu di st'esplicazzioni

Intel 64 and IA-32 Architectures Software Developer's Manual · Linux kernel: using XSTATE features in user space

Sti rifirimenti stabbilìscinu lu cumpurtamentu architittùnicu e li requisiti dû software. Nun virìficanu di manera ndipinnenti ogni valuri di funziunalitati nta na pàggina d'un mudellu hardware culligatu. Pû supportu dû mudellu, usa li provi dû prudutturi di dda pàggina e cuntrolla la cunfigurazzioni effittiva dû sistema. St'artìculu nun duna un benchmark, na cirtificazzioni o na data di rivisioni ndipinnenti.

Funti e virìfica

Titularità editoriali: Feex. Nudda data di rivisioni nnipinnenti è riggistrata. Comu facemu i ricerchi.

  • Intel 64 and IA-32 Architectures Software Developer's Manual · Li Vulumi 1 e 2 discrìvinu li famigghi di struzzioni muntuati e CPUID; lu Vulumi 3 discrivi statu, pagginazzioni, VMX e cuntrolli di prutizzioni. La ducumintazzioni d'architittura nun stabbilisci lu supportu pi un mudellu particulari.
  • Linux kernel: using XSTATE features in user space · Statu vitturiali abbilitatu dû SO, statu dî tile abbilitatu dinamicamenti, requisiti dû signal stack e flussu di pirmissu AMX. Lu cumpurtamentu spicìficu di Linux nun e' na prumissa supra n'àutru SO.

Fu ùtili st'artìculu?

Un sì o un no abbasta. Scegghi un mutivu si voi, o junci na nota curta.

Fu ùtili st'artìculu?