Najlepsze pytania
Chronologia
Czat
Perspektywa

Advanced Vector Extensions

Z Wikipedii, wolnej encyklopedii

Remove ads

AVX (Advanced Vector Extensions) – rozszerzenie listy rozkazów SSE opublikowane w marcu 2008 przez Intel. Jako pierwszy procesor zawierający ten zestaw instrukcji miał się pojawić w pierwszym kwartale 2011 roku i być oparty na architekturze Sandy Bridge tej firmy. AMD zapowiadał wprowadzenie procesora z AVX na trzeci kwartał 2011 roku – miałby być to układ o architekturze Bulldozer.

Rozszerzenia:

  1. W AVX wprowadzono 256-bitowe rejestry – 2 razy większe niż wykorzystywane dotychczas w SSE. Nowych rejestrów jest 16 i w asemblerze noszą nazwy YMM0...YMM15. W dalszych wersjach AVX mogą pojawić się jeszcze większe rejestry, 512-, a nawet 1024-bitowe.
  2. Dodano kilka rozkazów działających wyłącznie na rejestrach YMM (19 rozkazów).
  3. Dodane czteroargumentowe rozkazy akumulujące wyniki mnożenia wektorów liczb zmiennoprzecinkowych, to znaczy wykonujące obliczenia według schematu (12 rozkazów).
  4. Dodane specjalizowane instrukcje wspomagające szyfrowanie AES (6 rozkazów).
  5. Część rozkazów SSE, głównie tych działających na wektorach liczb zmiennoprzecinkowych, może wykonywać działania na rejestrach YMM (88 rozkazów).
  6. Rozszerzone kodowanie rozkazów, dzięki któremu możliwe stało się wykonywanie niektórych instrukcji SSE w wariancie trójargumentowym lub czteroargumentowym. Dotychczas wszystkie rozkazy były dwuargumentowe, z czego jeden był docelowy (nadpisywany) i często zachodziła konieczność jego zapisania/przepisania do innego rejestru lub pamięci, jeśli musiał zostać wykorzystany w dalszej części obliczeń – w wariancie trójargumentowym można wprost wskazać docelowy rejestr (rozwiązanie zapożyczone z architektury RISC) (166 rozkazów).
Remove ads

Rejestry

Thumb

Mikroprocesor pracujący w trybie 32-bitowym ma dostęp do pierwszych 8 rejestrów (0..7), w trybie 64-bitowym do wszystkich. Istniejące rejestry SSE (XMM0...XMM7) zostały zamapowane na młodsze 128 bitów rejestrów YMM0...YMM7.

Typy danych

W związku z dwukrotnym poszerzeniem rejestru pojawiły się nowe typy wektorowe tylko dla liczb zmiennoprzecinkowych:

  • 8 × 32 bity – wektor 8 liczb zmiennoprzecinkowych pojedynczej precyzji
  • 4 × 64 bity – wektor 4 liczb zmiennoprzecinkowych podwójnej precyzji

Mnemoniki instrukcji

Mnemoniki rozkazów AVX oraz SSE działających na 256-bitowych rejestrach rozpoczynają się literą V. Typ danych, na jakich działają, określa sufiks:

  • PS, PD – wektor liczb zmiennoprzecinkowych,
  • SS, SD – skalar (pierwszy element wektora), czyli liczba zmiennoprzecinkowa odpowiednio pojedynczej i podwójnej precyzji

Mnemoniki rozkazów akumulujących wyniki mnożenia rozpoczynają się od VFM lub VFNM, natomiast mnemoniki rozkazów wspomagających szyfrowanie od AES.

Rozkazy AVX

Podsumowanie
Perspektywa

Instrukcje AVX działają na rejestrach YMM, niektóre również na XMM.

Nowe rozkazy

Więcej informacji Instrukcja, Działanie ...
Remove ads

Akumulujące wyniki mnożenia (FMA)

Liczba rozkazów należących do tej grupy wynosi 12. Wszystkie są czteroargumentowe VFMxxxxx w, x, y, z i wykonują działanie według schematu

Instrukcje skalarne, czyli działające na pierwszym elemencie wektora (sufiks SD lub SS), zachowują się inaczej niż instrukcje skalarne SSE: wpisują wartość zero na pozostałe pozycje wektora wynikowego, podczas gdy w SSE przepisywane są elementy jednego z argumentów.

Lista rozkazów FMA:

Więcej informacji , ...

Wspomagające szyfrowanie algorytmem AES

  • AESDEC, AESDECLAST – deszyfrowanie
  • AESENC, AESENCLAST – szyfrowanie
  • AESIMC
  • AESKEYGENASSIST

Rozszerzone rozkazy SSE

Podsumowanie
Perspektywa

AVX rozszerza możliwości instrukcji SSE na dwa sposoby:

  • umożliwia przeprowadzanie obliczeń na dwa razy szerszych rejestrach YMM
  • rozszerza liczbę argumentów z dwóch na trzy lub trzech na cztery

Rozkazy SSE mogące dodatkowo działać na rejestrach YMM

Więcej informacji Instrukcja, Działanie ...

Trójargumentowe instrukcje SSE mogące działać na rejestrach XMM oraz YMM

Więcej informacji Instrukcja, Działanie ...
Remove ads

Trójargumentowe instrukcje SSE mogące działać wyłącznie na rejestrach XMM

Rozkazy działające na wektorach liczb zmiennoprzecinkowych:

Więcej informacji Instrukcja, Działanie ...

Rozkazy działające na wektorach liczb całkowitych:

Więcej informacji mnożenie wektorowe, następnie dodawanie sąsiednich elementów ...

Czteroargumentowe instrukcje SSE mogące działać na rejestrach XMM oraz YMM

Więcej informacji Instrukcja, Działanie ...

Czteroargumentowe instrukcje SSE mogące działać tylko na rejestrach XMM

Więcej informacji Instrukcja, Działanie ...

Rozkazy konwersji

Wersje SSE działają na 32-bitowych liczbach całkowitych, AVX – 64-bitowych.

Więcej informacji Instrukcja, Działanie ...

Zobacz też

Przypisy

Bibliografia

Linki zewnętrzne

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads