Przejdź do zawartości

Streaming SIMD Extensions

Z Wikipedii, wolnej encyklopedii
To jest stara wersja tej strony, edytowana przez 80.49.77.8 (dyskusja) o 13:58, 1 cze 2003. Może się ona znacząco różnić od aktualnej wersji.
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

SSE (ang. Streaming SIMD Extensions) jest nazwą zestawu instrukcji wprowadzonego po raz pierwszy w procesorach Pentium III firmy Intel. Rozkazy te, podobnie jak roazky MMX, pozwalają na równoległe wykonywanie tej samej operacji na wektorze danych. Rozkazy SSE mogą wykonywać dokładnie te same operacje, które zdefiniowano w MMX, z tą różnicą, że rejestry SSE są dwukrotnie szersze (mają 128 bitów) - więc teoretycznie kod MMX przepisany na SSE powinien być dwukrotnie szybszy.

SSE umożliwia, i to jest najważniejsze, wykonywanie działań na wektorach danych lub skalarach (w tym kontekście skalar oznacza pierwszy element wektora) zmiennoprzecinkowych pojedynczej precyzji zgodnych ze standardem IEEE-754.

Zdefiniowano następujące działania, odnoszące się zarówno do wektorów jak skalarów:

  • dodawanie
  • odejmowanie
  • dzielenie
  • mnożenie
  • pierwiastkowanie
  • aproksymacja odrotności (1/x)
  • aproksymacja pierwiastka kwadratowego

Oprócz tego wprowdzono specjalizowane rozkazy do przesyłania danych pomiędzy rejestrami SSE, MMX, oraz pamięcią.

Zestaw rejestrów SSE, w odróżnieniu od MMX'owych mapowanych na stos koprocesora, stanowi zupełnie autonomiczną jednostką, obejmującą 8 rejestrów nazwanych xmm0, ..., xmm7. Ponieważ rozkazy SSE operują na liczbach zmiennoprzecinkowych jest dodatkowy rejestr kontrolny, w którym definiuje się:

  • sposób zaokrąglania wyników (ang. round control)
  • reakcję na błędy

W procesorze Pentium IV mamy już do czynienia z SSE2, bowiem do zestawu instrukcji SSE dodano nowe możliwości. Najważniejszą innowacją jest możliwość wykonywania działań na liczbach podwójnej precyzji.