Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
SSE2 - Wikipedia, wolna encyklopedia

SSE2

Z Wikipedii

Streaming SIMD Extensions 2 (SSE2) - zestaw instrukcji SIMD, rozszerzający istniejący SSE. Nowe cechy:

Technologia ta została wprowadzona w procesorach rodziny Pentium 4 oraz Athlon 64.

Spis treści

[edytuj] Typy danych

SSE2 wykorzystuje typy danych zdefiniowane w MMX i SSE, definiuje także kilka nowych typów danych: w większości wektorów o określonych rozmiarach.

Typy zmiennoprzecinkowe:

  • wektor 2 liczb zmiennoprzecinkowych podwójnej precyzji (2 x 64 bity)
  • wektor 4 liczb zmiennoprzecinkowych pojedynczej precyzji (4 x 32 bity; wprowadzony w SSE)

Typy całkowite (rozszerzenia typów MMX):

  • wektor 16 bajtów - packed byte (16 x 8 bitów)
  • wektor 8 słów - packed word (8 x 16 bitów)
  • wektor 4 podwójnych słów - packed duble words (4 x 32 bity)
  • wektor 2 poczwórnych słów - packed quad words (2 x 64 bity)
  • liczba 128-bitowa - long quadword

Analogicznie jak w SSE, rozkazy SSE2 mogą wykonywać działania arytmetyczne na wektorach liczb zmiennoprzecinkowych podwójnej precyzji na dwa sposoby:

  1. packed (równoległe) — wykonując równocześnie dwa niezależne działania zmiennoprzecinkowe na odpowiadających sobie elementach wektorów;
  2. scalar (skalarne) — wykonując działanie tylko na pierwszych elementach wektorów.


Rozmiar słowa
[bity]
Rozmiar elementu
[bity]
Liczba elementów wektora Uwagi
Liczby zmiennoprzecinkowe  
128 64 2 SSE2, liczby podwójnej precyzji
128 32 4 SSE, liczby pojedynczej precyzji
Liczby całkowite (ze znakiem lub bez)  
128 128 1 SSE2, całe słowo
128 64 2 SSE2, packed quad word
128 32 4 SSE2, packed double word
128 16 8 SSE2, packed word
128 8 16 SSE2, packed byte
64 64 1 MMX, quad word
64 32 2 MMX, packed double word
64 16 4 MMX, packed word
64 8 8 MMX, packed byte

[edytuj] Mnemoniki rozkazów

Zobacz więcej w osobnym artykule Streaming SIMD Extensions, w sekcji Mnemoniki rozkazów.

Tak jak w SSE, również w SSE2 sufiksy mnemoników określają typy danych, na jakich działają określone rozkazy; oprócz tych zdefiniowanych w MMX i SSE pojawiły się nowe dla liczb zmiennoprzecinkowych podwójnej precyzji:

  • PD - wektory,
  • SD - skalary.

[edytuj] Działania zmiennoprzecinkowe

[edytuj] Działania arytmetyczne

  • dodawanie (ADDPD, ADDSD)
  • odejmowanie (SUBPD, SUBSD)
  • dzielenie (DIVPD, DIVSD)
  • mnożenie (MULPD, MULSD)
  • pierwiastek kwadratowy (SQRTPD, SQRTSD)
  • wartość maksymalna (MAXPD, MAXSD)
  • wartość minimalna (MINPD, MINSD)

[edytuj] Działania logiczne

Wykonywane są na poziomie bitów, a nie liczb:

  • suma (ORPD),
  • iloczyn (ANDPD),
  • iloczyn negacji (ANDNPD) - jeden z argumentów jest negowany przed obliczeniem iloczynu,
  • różnica symetryczna (XORPD),

[edytuj] Porównanie

Zobacz więcej w osobnym artykule Streaming SIMD Extensions, w sekcji Porównania.

Rozkazy porównania SSE2 działają w taki sam sposób jak SSE, jedna różnica to oczywiście rozmiary elementów wektorów:

  • rozkazom SSE2 CMPPD i CMPSD odpowiadają rozkazy SSE CMPPS i CMPSS;
  • rozkazom SSE2 COMISD i UCOMISD odpowiadają rozkazy SSE COMISS i UCOMISS.

[edytuj] Rozmieszczanie elementów w wektorach

  • SHUFPD
  • UNPCKLPD, UNPCKHPD

[edytuj] Konwersje między liczbami zmiennoprzecinkowymi i całkowitymi

  • liczby zmiennoprzecinkowe podwójnej precyzji:
    • konwersje wektorowe:
      • CVTPD2PI, CVTTPD2PI - liczby zmiennoprzecinkowe na 32-bitowe liczby całkowite
      • CVTPD2PQ, CVTTPD2PQ - liczby zmiennoprzecinkowe na 64-bitowe liczby całkowite
      • CVTPI2PD - 32-bitowe liczby całkowite na liczby zmiennoprzecinkowe
      • CVTDQ2PD - 64-bitowe liczby całkowite na liczby zmiennoprzecinkowe
    • konwersje skalarne:
      • CVTSD2SI, CVTTSD2SI - liczba zmiennoprzecinkowa na 32-bitową liczbę całkowitą
      • CVTSI2SD - 32-bitowa liczba całkowita na liczbę zmiennoprzecinkową
  • liczby zmiennoprzecinkowe pojedynczej precyzji:
    • konwersje wektorowe:
      • CVTPS2DQ, CVTTPS2DQ - liczby zmiennoprzecinkowe na 64-bitowe liczby całkowite
    • konwersja skalarna:
      • CVTDQ2PS - 64-bitowa liczba całkowita na liczbę zmiennoprzecinkową

[edytuj] Konwersje między liczbami zmiennoprzecinkowymi pojedynczej i podwójnej precyzji

  • konwersje wektorów (po dwa elementy):
    • CVTPS2PD - z pojedynczej na podwójną precyzję
    • CVTPD2PS - z podwójnej na pojedynczą precyzję
  • konwersje skalarów:
    • CVTSS2SD - z pojedynczej na podwójną precyzję
    • CVTPS2SS - z podwójnej na pojedynczą precyzję

[edytuj] Rozkazy całkowitoliczbowe

  • PMULUDQ - mnożenie 32-bitowych liczb bez znaku, wyniki są 64-bitowe
  • PADDQ - dodawanie 64-bitowych liczb ze znakiem
  • PSUBQ - odejmowanie 64-bitowych liczb ze znakiem
  • PSHUFLW, PSHUFHW - zmiana kolejności elementów 16-bitowych, odpowiednio, w dolnej i górnej połówce 128-bitowego wektora
  • PSHUFD - zmiana kolejności elementów 32-bitowych
  • PSLLDQ, PSLRDQ - przesunięcia bitowe w lewo i prawo elementów 64-bitowych
  • PUNPCKHQDQ, PUNPCKLQDQ

[edytuj] Kontrola pamięci podręcznej i spójności pamięci

  • CLFLUSH - zapisuje i unieważnia wskazaną linijkę cache na wszystkich poziomach pamięci podręcznej
  • LFENCE - uszeregowanie operacji odczytu pamięci
  • MFENCE - uszeregowanie operacji odczytu i zapisu pamięci
  • PAUSE - jest podpowiedzią (ang. hint) dla procesora, która przyspiesza wyjście z pętli aktywnego oczekiwania (ang. spin-wait loop)
  • zapisy do pamięci z podpowiedzią (hint) o nietymczasowym charakterze danych (tj. dane nie będą w najbliższym czasie potrzebne):
    • MASKMOVDQU - uaktualnienie wybranych bajtów z rejestru XMM
    • MOVNTPD, MOVNTDQ - zapis rejestru XMM (tj. dwóch słów 64-bitowych, przez pierwszy rozkaz traktowanych jako liczby zmiennoprzecinkowe, w drugim - jako całkowite)
    • MOVNTI - zapisanie rejestru ogólnego przeznaczenia (czyli EAX, EBX itd.)

[edytuj] Przesyłanie danych

[edytuj] Wektory liczb zmiennoprzecinkowe

  • MOVAPD
  • MOVUPD
  • MOVHPD, MOVLPD
  • MOVSD
  • MOVMSKPD

[edytuj] Wektory liczb całkowitych

  • MOVDQA
  • MOVQ2DQ, MOVDQ2Q

[edytuj] MXCSR - rejestr kontrolny/statusu

Zobacz więcej w osobnym artykule Streaming SIMD Extensions, w sekcji MXCSR - rejestr kontrolny/statusu.

W SSE2 dodaną jedna flagę kontrolującą obliczenia zmiennoprzecinkowe:

  • ang. denormals-are-zero - jej ustawienie powoduje zamienianie liczb nieznormalizowanych na zero (jest to działanie niestandardowe); nieznormalizowane liczby zmiennoprzecinkowe, to bardzo małe liczby, w których wykładnik nie mieści się w dostępnym zwykle zakresie, lecz dzięki wyzerowaniu najstarszego bitu mantysy (tj. rezygnacji ze znormalizowanej mantysy) liczba może zostać zapisana.

[edytuj] Podpowiedzi dla systemu przewidywania skoków

Podsystem przewidywania skoków posiada wbudowane reguły statycznego przewidywania skoków warunkowych - np. jeśli adres docelowy skoku jest ujemny (skok wstecz, jak w pętlach) to przyjmuje się, że skok nastąpi. W SSE2 wprowadzono podpowiedzi (ang. branch hint), które dla wskazanych instrukcji skoku nadpisują domyślne reguły, pozwalając wskazać bardziej prawdopodobny przepływ sterowania w programie. Podpowiedzi te mają formę przedrostków dla kodów rozkazu skoku, nie są odrębnymi instrukcjami.

Mimo że w symulacjach rozwiązanie to wyglądało bardzo obiecująco, w rzeczywistych programach nie zanotowano wzrostu wydajności.[1]

[edytuj] Procesory obsługujące SSE2

[edytuj] Znane procesory nie obsługujące SSE2

Przypisy

[edytuj] Zobacz też

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com