SSE3 - SSE3

SSE3 , Streaming SIMD Extensions 3 , znany również przez jego Intel kryptonimem Prescott Nowe instrukcje ( PNI ), to trzecia iteracja SSE zestawu instrukcji dla IA-32 (x86) architektury. Intel wprowadził SSE3 na początku 2004 roku z przeglądu Prescott ich Pentium 4 CPU. W kwietniu 2005 roku, AMD wprowadziło podzbiór SSE3 w wersji E (Wenecji i San Diego) ich Athlon 64 procesorów. Wcześniejsze SIMD zestawy instrukcji na x86 platformy, od najstarszego do najnowszego, są MMX , 3DNow! (opracowany przez firmę AMD, ale nie jest obsługiwana przez procesory Intel), SSE i SSE2 .

SSE3 zawiera 13 nowych instrukcji ponad SSE2 .

Zmiany

Najbardziej zauważalną zmianą jest możliwość pracy w poziomie w rejestrze, w przeciwieństwie do bardziej lub mniej ściśle pionowej działania wszystkich poprzednich instrukcji SSE. Dokładniej, instrukcje dodawanie i odejmowanie wielokrotne wartości przechowywane w jednym rejestrze zostały dodane. Instrukcje te mogą być stosowane w celu przyspieszenia realizacji szeregu DSP i 3D operacji. Jest też nowa instrukcja przekonwertować zmiennoprzecinkowych na liczby całkowite bez konieczności zmiany trybu globalnego zaokrąglania, unikając kosztownych rurociągów stragany. Wreszcie rozszerzenie dodaje LDDQU alternatywny wyrównane całkowitą obciążenie wektor, który ma lepsze osiągi na NetBurst platform opartych na obciążenia, które przekraczają granice cacheline.

Procesory z SSE3

Nowe instrukcje

wspólne instrukcje

Arytmetyka

  • ADDSUBPD - ( Add-Odejmij-pakiety-Double )
    • Wejście: {A0, A1}, {B0, B1}
    • Wyjście: {A0 - B0, A1 + B1}
  • ADDSUBPS - ( Add-Odejmij-pakiety-Single )
    • Wejście: {A0, A1, A2, A3}, {B0, B1, B2, B3}
    • Wyjście: {A0 - B0, A1 + B1, A2 - B2, B3 A3 +}

AOS (tablicę struktur)

  • HADDPD - ( Horizontal-Add-pakiety-Double )
    • Wejście: {A0, A1}, {B0, B1}
    • Wyjście: {A0 + A1, B1 B0 +}
  • HADDPS ( Horizontal-Add-pakiety-Single )
    • Wejście: {A0, A1, A2, A3}, {B0, B1, B2, B3}
    • Wydajność: {A0 + A1 + A2, A3 + B0 B1, B2 + B3}
  • HSUBPD - ( Horizontal-Odejmij-pakiety-Double )
    • Wejście: {A0, A1}, {B0, B1}
    • Wyjście: {A0 - A1, B0 - B1}
  • HSUBPS - ( Horizontal-Odejmij-pakiety-Single )
    • Wejście: {A0, A1, A2, A3}, {B0, B1, B2, B3}
    • Wyjście: {A0 - A1, A2 - A3, B0 - B1, B2 - B3}
  • LDDQU - jak podano powyżej, to jest alternatywny wyrównane obciążenia całkowita wektorowych. Może to być pomocne dla zadań kompresji wideo.
  • MOVDDUP , MOVSHDUP, MOVSLDUP - Są one przydatne dla liczb zespolonych, jak i obliczania fal dźwięku.
  • FISTTP - Podobnie jak w przypadku starszego instrukcji x87 FISTP, ale ignoruje ustawienia trybu zaokrąglania zmiennoprzecinkowej sterowania zarejestrować i korzysta z trybu „chop” (obciąć) zamiast. Umożliwia pominięcie kosztownych załadunku i ponowne ładowanie rejestru kontrolnego języków takich jak C, przy czym przemiana pływaka do Int wymaga obcinania zachowań standardowych.

instrukcje Intel

  • MONITOR, MWAIT - Są optymalizacji wielowątkowych aplikacji, dając procesory z Hyper-Threading lepszą wydajność.

Referencje

Linki zewnętrzne