Extensie vectorială avansată

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

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- și QWORD- 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

Notă

  1. ^ (RO) Mark Buxton, Haswell Descrierile noilor instrucțiuni sunt acum disponibile! , la software.intel.com , Intel , 13 iunie 2011. Accesat la 16 noiembrie 2018 .

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT