- Učlanjen(a)
- 21.07.2003
- Poruke
- 3,894
- Poena
- 410
Pocele su da se pojavljuju informacije o ovome pa rekoh brze-bolje da otvorim thread 😀
Osim onoga sto se vec zna iz odavde, a to je da AVX cine 256-bitni vektori i instrukcije sa 3 operanda, sada se zna da ce izmedju ostalog postojati instrukcije za AES enkripciju i dekripciju.
Ovo je verovatno dodato zbog toga sto svaki GPU mora da implementira HDCP zastitu, a poznato je da ce Intel implementirati GPU kao skup x86 jezgara.
Advanced Vector Extensions (AVX) ce u sledecoj reviziji doneti i FMA (Fused Multiply-Add) instrukcije.
Novi registri ce se zvati YMM i bice prosirenje postojecih XMM registara. U 32-bitnom modu bice ih 8 (YMM0-YMM7), a u 64-bitnom modu ce takodje biti dostupni i YMM8-YMM15.
Postojace 3 nacina enkodiranja instrukcija
1. Sa XMM registrima i dva operanda kao i do sada
2. Sa XMM registrima i tri operanda (odvojen destination i dva source operanda) gde se gornjih 128 bita ignorisu
3. Sa YMM registrima takodje sa tri operanda
Pominju se i instrukcije sa cak cetiri operanda od kojih je jedan implicitni (FMA, VBLENDx, VPERMx).
Na primer:
Moze se pisati kao:
Skoro sve SSE/SSE2 instrukcije mogu se prosiriti dodavanjem slova V ispred imena i koriscenjem tri operanda. Dodat je novi prefix, takozvani VEX koji omogucava direktno enkodiranje registarskih operanda, funkcionalnost REX prefiksa je obuhvacena, SIMD prefiksi i escape byte encoding su skraceni i podrzan je operand swizzling. Znaci islo se na efikasnije enkodiranje vec podosta dugackih instrukcija kako bi se poboljsale sanse za mikro-fuziju.
Takodje, vecina instrukcija koje se kodiraju sa VEX prefiksom (osim onih koje ocekuju eksplicitan alignment) moci ce da pristupaju neporavnatim memorijskim lokacijama za razliku od dosadasnjih SIMD instrukcija.
Nove instrukcije su:
- AESENC
- AESENCLAST
- AESDEC
- AESDECLAST
- AESIMC
- AESKEYGENASSIST
- PCLMULQDQ
- VBROADCASTSS
- VBROADCASTSD
- VBROADCASTF128
- VEXTRACTF128
- VINSERTF128
- VPERMILPD
- VPERMIL2PD
- VPERMILPS
- VPERMIL2PS
- VPERM2F128
- VZEROALL
- VZEROUPPER
- VFMADDPD
- VFMADDPS
- VFMADDSD
- VFMADDSS
- VFMADDSUBPD
- VFMADDSUBPS
- VFMSUBADDPD
- VFMSUBADDPS
- VFMSUBPD
- VFMSUBPS
- VFMSUBSD
- VFMSUBSS
- VFNMADDPD
- VFNMADDPS
- VFNMADDSD
- VFNMADDSS
- VFNMSUBPD
- VFNMSUBPS
- VFNMSUBSD
- VFNMSUBSS
Sto se tice FMA to ce biti dodato tek u drugoj generaciji AVX-a.
Detekcija ide preko CPUID instrukcije sa EAX=1 i to:
Postojanje AES instrukcija oznacava bit 25 u registru ECX.
Postojanje PCLMULQDQ instrukcije oznacava bit 1 u registru ECX.
Postojanje podrske za cuvanje AVX konteksta od strane OS-a oznacava bit 27 u registru ECX.
Postojanje AVX oznacava bit 28 u registru ECX.
Postojanje FMA oznacava bit 12 u registru ECX.
Dokument iz kog je sve ovo preuzeto mozete skinuti odavde: Link (PDF sa Rapidshare, spakovan StuffIt arhiverom, 745.7 KB)
ili odavde: Link (PDF direktno sa Intelovog sajta, 2.6 MB).
Osim onoga sto se vec zna iz odavde, a to je da AVX cine 256-bitni vektori i instrukcije sa 3 operanda, sada se zna da ce izmedju ostalog postojati instrukcije za AES enkripciju i dekripciju.
Ovo je verovatno dodato zbog toga sto svaki GPU mora da implementira HDCP zastitu, a poznato je da ce Intel implementirati GPU kao skup x86 jezgara.
Advanced Vector Extensions (AVX) ce u sledecoj reviziji doneti i FMA (Fused Multiply-Add) instrukcije.
Novi registri ce se zvati YMM i bice prosirenje postojecih XMM registara. U 32-bitnom modu bice ih 8 (YMM0-YMM7), a u 64-bitnom modu ce takodje biti dostupni i YMM8-YMM15.
Postojace 3 nacina enkodiranja instrukcija
1. Sa XMM registrima i dva operanda kao i do sada
2. Sa XMM registrima i tri operanda (odvojen destination i dva source operanda) gde se gornjih 128 bita ignorisu
3. Sa YMM registrima takodje sa tri operanda
Pominju se i instrukcije sa cak cetiri operanda od kojih je jedan implicitni (FMA, VBLENDx, VPERMx).
Na primer:
Kod:
ADDPS xmm1, xmm0
Moze se pisati kao:
Kod:
VADDPS xmm2, xmm1, xmm0
Skoro sve SSE/SSE2 instrukcije mogu se prosiriti dodavanjem slova V ispred imena i koriscenjem tri operanda. Dodat je novi prefix, takozvani VEX koji omogucava direktno enkodiranje registarskih operanda, funkcionalnost REX prefiksa je obuhvacena, SIMD prefiksi i escape byte encoding su skraceni i podrzan je operand swizzling. Znaci islo se na efikasnije enkodiranje vec podosta dugackih instrukcija kako bi se poboljsale sanse za mikro-fuziju.
Takodje, vecina instrukcija koje se kodiraju sa VEX prefiksom (osim onih koje ocekuju eksplicitan alignment) moci ce da pristupaju neporavnatim memorijskim lokacijama za razliku od dosadasnjih SIMD instrukcija.
Nove instrukcije su:
- AESENC
- AESENCLAST
- AESDEC
- AESDECLAST
- AESIMC
- AESKEYGENASSIST
- PCLMULQDQ
- VBROADCASTSS
- VBROADCASTSD
- VBROADCASTF128
- VEXTRACTF128
- VINSERTF128
- VPERMILPD
- VPERMIL2PD
- VPERMILPS
- VPERMIL2PS
- VPERM2F128
- VZEROALL
- VZEROUPPER
- VFMADDPD
- VFMADDPS
- VFMADDSD
- VFMADDSS
- VFMADDSUBPD
- VFMADDSUBPS
- VFMSUBADDPD
- VFMSUBADDPS
- VFMSUBPD
- VFMSUBPS
- VFMSUBSD
- VFMSUBSS
- VFNMADDPD
- VFNMADDPS
- VFNMADDSD
- VFNMADDSS
- VFNMSUBPD
- VFNMSUBPS
- VFNMSUBSD
- VFNMSUBSS
Sto se tice FMA to ce biti dodato tek u drugoj generaciji AVX-a.
Detekcija ide preko CPUID instrukcije sa EAX=1 i to:
Postojanje AES instrukcija oznacava bit 25 u registru ECX.
Postojanje PCLMULQDQ instrukcije oznacava bit 1 u registru ECX.
Postojanje podrske za cuvanje AVX konteksta od strane OS-a oznacava bit 27 u registru ECX.
Postojanje AVX oznacava bit 28 u registru ECX.
Postojanje FMA oznacava bit 12 u registru ECX.
Dokument iz kog je sve ovo preuzeto mozete skinuti odavde: Link (PDF sa Rapidshare, spakovan StuffIt arhiverom, 745.7 KB)
ili odavde: Link (PDF direktno sa Intelovog sajta, 2.6 MB).