Extensie vectorială avansată
Această intrare sau secțiune despre componentele computerului nu menționează sursele necesare sau sunt insuficiente . |
Numele Advanced Vector Extension (prescurtat în AVX ) indică un set de instrucțiuni SIMD propuse și dezvoltate de Intel , anunțate în cadrul Forumului dezvoltatorilor Intel din 2008 și care urmează SSE4 datorită arhitecturii a zecea generație cunoscută sub numele de Sandy Bridge , lângă Nehalem .
Caracteristici tehnice
Aceste instrucțiuni prevăd introducerea de vectori pe 256 de biți (spre deosebire de cei utilizați anterior pe 128 de biți ) care vor permite obținerea unei dublări a calculelor în virgulă mobilă și îmbunătățirea organizării datelor, făcându-le mai eficientă; Instrucțiunile pe 128 de biți vor fi în continuare executate folosind jumătatea inferioară a noilor registre și o extindere suplimentară la 512 biți sau chiar 1024 biți este probabilă în viitor.
În plus, limita instrucțiunilor cu cel mult 2 operanzi va fi extinsă până la 3 operandi într-un mod nedistructiv dacă registrul de destinație este diferit de cele 2 registre sursă: aceasta înseamnă că, de exemplu, operațiunea va fi înlocuit cu astfel încât registrul rămâne neschimbată după executarea instrucțiunii.
Beneficii în aplicații
Aplicațiile care ar trebui să obțină cele mai mari beneficii ar trebui să fie cele de tip multimedia, în special cele de modelare 3D și calcul științific , de asemenea, datorită faptului că scalabilitatea în raport cu numărul de nuclee de procesor ar trebui să fie maximă, iar acest tip de aplicațiile sunt tocmai acelea care sunt încă capabile să profite de un număr mare de nuclee.
Instrucțiunile AVX ar trebui să vă permită, de asemenea, să accelerați calculele legate de criptarea AES .
Extensii vectoriale avansate 2
Advanced Vector Extensions 2 (AVX2), cunoscut și sub numele de Haswell New Instructions , [1] este o extindere a setului de instrucțiuni AVX introdus în microarhitectura Haswell a Intel. AVX2 face următoarele adăugiri:
- extinderea majorității instrucțiunilor SSE și AVX pe 256 de biți.
- manipularea și multiplicarea biților pentru uz general cu trei operanzi
- colectați medii, permițând încărcarea elementelor vectoriale din locații de memorie non-contigue
-
DWORD-
șiQWORD-
către orice permanent - deplasări vectoriale
Uneori, o altă extensie care folosește un steag cpuid diferit este considerată parte a AVX2; aceste instrucțiuni sunt listate pe propria pagină și nu mai jos:
- suport FMA cu trei operanzi (FMA3)
Instrucțiuni noi
Instrucțiuni | Descriere |
---|---|
VBROADCASTSS , VBROADCASTSD | Copiați un operand de registru pe 32 de biți sau pe 64 de biți pe toate elementele unui registru vector XMMM sau YMMM. Acestea sunt versiuni de jurnal ale acelorași instrucțiuni din AVX1. Cu toate acestea, nu există o versiune pe 128 de biți, dar același efect poate fi obținut pur și simplu utilizând VINSERTF128. |
VPBROADCASTB , VPBROADCASTW , VPBROADCASTD , VPBROADCASTQ | Copiați un registru întreg sau operand de 8, 16, 32 sau 64 de biți în memorie pe toate elementele unui registru vector XMMM sau YMMM. |
VBROADCASTI128 | Copiați un operand de memorie pe 128 de biți pe toate elementele unui registru vector YMMM. |
VINSERTI128 | Înlocuiește jumătatea inferioară sau superioară a unui registru YMMM de 256 de biți cu valoarea unui operand sursă de 128 de biți. Cealaltă jumătate a destinației rămâne neschimbată. |
VEXTRACTI128 | Extrage jumătatea inferioară sau superioară a unui registru YMMM pe 256 de biți și copiază valoarea într-un operand țintă pe 128 de biți. |
VGATHERDPD , VGATHERQPD , VGATHERDPS , VGATHERQPS | Colectează valori în virgulă mobilă de precizie simplă sau dublă utilizând indexuri și scale de 32 sau 64 de biți. |
VPGATHERDD , VPGATHERDQ , VPGATHERQD , VPGATHERQQ | Colectează valori întregi de 32 sau 64 de biți utilizând indexuri și scale de 32 sau 64 de biți. |
VPMASKMOVD , VPMASKMOVQ | Citește condiționat orice număr de elemente dintr-un operand de memorie vectorială SIMD într-un registru de destinație, lăsând elementele vectoriale rămase necitite și ștergând elementele corespunzătoare din registrul de destinație. Alternativ, scrie în mod condiționat orice număr de elemente dintr-un operand al registrului vector SIMD într-un operand de memorie vector, lăsând elementele rămase ale operandului neschimbate în memorie. |
VPERMPS , VPERMD | Se amestecă cele opt elemente vectoriale de 32 de biți ale unui operand sursă de 256 de biți într-un operand de destinație de 256 de biți, cu un registru sau un operand de memorie ca selector. |
VPERMPD , VPERMQ | Se amestecă cele patru elemente vectoriale de 64 de biți ale unui operand sursă de 256 de biți într-un operand de destinație de 256 de biți, cu un registru sau un operand de memorie ca selector. |
VPERM2I128 | Se amestecă cele patru elemente vectoriale de 128 de biți a doi operanzi sursă de 256 de biți într-un singur operand de destinație de 256 de biți, cu o constantă imediată ca selector. |
VPBLENDD | Versiune imediată cu dublu cuvânt a instrucțiunilor PBLEND ale lui SSE4. |
VPSLLVD , VPSLLVQ | Deplasare logică spre stânga. Permite deplasări variabile în care fiecare element este mutat pe baza intrării ambalate. |
VPSRLVD , VPSRLVQ | Schimbare logică spre dreapta. Permite deplasări variabile în care fiecare element este mutat pe baza intrării ambalate. |
VPSRAVD | Deplasați-vă aritmetic spre dreapta. Permite deplasări variabile în care fiecare element este mutat pe baza intrării ambalate. |
CPU cu AVX2
- Intel
- Haswell , Q2 2013
- Haswell E , T3 2014
- Broadwell , Q4 2014
- Broadwell E , T3 2016
- Skylake , T3 2015
- Kaby Lake , T3 2016 (ULV mobil) / T1 2017 (desktop / mobil)
- Skylake-X , Q2 2017
- Coffee Lake , trimestrul IV 2017
- Cannon Lake , așteptat în 2018
- Lacul Cascade , așteptat în 2018
- Lacul de gheață , așteptat în 2018
- AMD
Notă
- ^ (RO) Mark Buxton, Haswell Descrierile noilor instrucțiuni sunt acum disponibile! , la software.intel.com , Intel , 13 iunie 2011. Accesat la 16 noiembrie 2018 .