• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Streaming SIMD Extensions



    Podstrony: 1 [2] [3] [4] [5]
    Przeczytaj także...
    Bariera pamięci - punkt w programie, w którym wymusza się na systemie komputerowym zsynchronizowanie zawartości pamięci, tj. uszeregowanie wszystkich zapisów i odczytów. Jest to potrzebne, ponieważ niektóre mikroprocesory w celu uzyskania lepszej wydajności nie uaktualniają od razu zawartości pamięci głównej lub podręcznej, np. zastępując powtarzające się zapisy pod ten sam adres w jedno, opóźnione, odwołanie do pamięci.Wątek (ang. thread) – część programu wykonywana współbieżnie w obrębie jednego procesu; w jednym procesie może istnieć wiele wątków.
    Nowe rejestry SSE

    SSE (ang. Streaming SIMD Extensions) jest nazwą zestawu instrukcji wprowadzonego w 1999 roku po raz pierwszy w procesorach Pentium III firmy Intel. SSE daje przede wszystkim możliwość wykonywania działań zmiennoprzecinkowych na 4-elementowych wektorach liczb pojedynczej precyzji (48 rozkazów). Ponadto wprowadzono jedenaście nowych rozkazów stałoprzecinkowych w zestawie MMX, a także dano możliwość wskazywania, które dane powinny znaleźć się w pamięci podręcznej.

    RISC (Reduced Instruction Set Computer) – nazwa architektury mikroprocesorów, która została przedstawiona pod koniec lat 70. w teoretycznych pracach na uniwersytecie Berkeley oraz w wynikach badań Johna Cocke z Thomas J. Watson Research Center.Typ – w językach programowania opis rodzaju, struktury i zakresu wartości, jakie może przyjmować dany literał, zmienna, stała, argument, wynik funkcji lub wartość.

    SSE to również zmiany w architekturze procesora: dodano 8 rejestrów XMM o rozmiarze 128 bitów oraz 32-bitowy rejestr kontrolny MXCSR; w 64-bitowych wersjach procesorów (AMD64, EM64T) dostępne jest jeszcze 8 dodatkowych rejestrów XMM. Rejestry 128-bitowe, na zawartości których wykonywana jest większość rozkazów SSE (nazywane w asemblerze xmm0, xmm1, ..., xmm15), stanowią zupełnie odrębne komórki pamięci – w odróżnieniu od rejestrów MMX nie zostały zamapowane na inne rejestry.

    Rejestry procesora to komórki pamięci o niewielkich rozmiarach (najczęściej 4/8/16/32/64/128 bitów) umieszczone wewnątrz procesora i służące do przechowywania tymczasowych wyników obliczeń, adresów lokacji w pamięci operacyjnej itd. Większość procesorów przeprowadza działania wyłącznie korzystając z wewnętrznych rejestrów, kopiując do nich dane z pamięci i po zakończeniu obliczeń odsyłając wynik do pamięci.Przerwanie (ang. interrupt) lub żądanie przerwania (IRQInterrupt ReQuest) – sygnał powodujący zmianę przepływu sterowania, niezależnie od aktualnie wykonywanego programu. Pojawienie się przerwania powoduje wstrzymanie aktualnie wykonywanego programu i wykonanie przez procesor kodu procedury obsługi przerwania (ang. interrupt handler).

    Spis treści

  • 1 Typy danych
  • 2 Mnemoniki rozkazów
  • 3 Działania zmiennoprzecinkowe
  • 3.1 Działania arytmetyczne
  • 3.2 Działania logiczne
  • 3.3 Porównania
  • 3.4 Konwersje pomiędzy liczbami całkowitymi i zmiennoprzecinkowymi
  • 3.5 Rozmieszczenie elementów w wektorze
  • 3.5.1 UNPCKLPS, UNPCKHPS
  • 3.5.2 SHUFPS
  • 4 MXCSR - rejestr kontrolny/statusu
  • 5 Przesłania liczb zmiennoprzecinkowych między rejestrami i pamięcią
  • 5.1 MOVAPS, MOVUPS
  • 5.2 MOVSS
  • 5.3 MOVLPS, MOVHPS
  • 5.4 MOVLHPS, MOVHLPS
  • 5.5 MOVMSKPS
  • 6 Pamięć podręczna
  • 6.1 Pobranie danych "bliżej" procesora
  • 6.2 Trwały zapis (ang. non-temporal)
  • 7 64-bitowe rozkazy całkowitoliczbowe
  • 8 Rozszerzenia SSE
  • 9 Przypisy
  • 10 Zobacz też
  • Rejestr stanu lub rejestr flag (niepoprawnie: rejestr statusu) – rejestr procesora opisujący i kontrolujący jego stan. Zawartość tego rejestru może zależeć od ostatnio wykonanej operacji (zmiana pośrednia), bądź trybu pracy procesora, który można ustawiać (zmiana bezpośrednia). Budowa rejestru stanu zależy od modelu programowego danego procesora, w szczególności może on mieć różne rozmiary (zwykle jest to ściśle związane z rodzajem architektury), jednak zwykle ma długość będąca wielokrotnością bajtu, czyli najczęściej oktetu: 8, 16, 32 lub 64 bitów. Pojedynczy bit rejestru stanu nazywa się flagą bądź znacznikiem.Streaming SIMD Extensions 4 (SSE4) to kolejne rozszerzenie zestawu instrukcji SSE opublikowane w kwietniu 2007 przez firmę Intel. SSE4 wprowadza 54 nowe instrukcje, podzielone na dwie podgrupy (wersje): SSE4.1 zawierający 47 rozkazów oraz SSE4.2 zawierający dodatkowe 7.

    Typy danych[]

    SSE wprowadza nowy typ danych: 4-elementowy wektor liczb zmiennoprzecinkowych pojedynczej precyzji (ang. 128-bit packed sigle-precision floating-point); liczba zmiennoprzecinkowa ma rozmiar 32 bitów. Poza tym wykorzystuje typy wektorowe zdefiniowane w MMX.

    Rozkazy SSE mogą wykonywać działania arytmetyczne na wektorach liczb zmiennoprzecinkowych na dwa sposoby:

    Supplemental Streaming SIMD Extension 3 (SSSE3) - zestaw instrukcji SSE czwartej generacji, rozszerzenie SSE3. SSSE3 jest błędnie nazywane jako SSE4, Tejas New Instructions (TNI) lub Merom New Instructions (MNI).Pamięć podręczna procesora (ang. CPU cache) - jest pamięcią typu SRAM (pamięć statyczna) o krótkim czasie dostępu. Zlokalizowana jest często bezpośrednio w jądrze procesora. Zastosowanie wielopoziomowej hierarchii pamięci podręcznej pozwala, korzystając z zasady lokalności przestrzennej i czasowej na zapewnienie złudzenia posiadania szybkiej i pojemnej pamięci głównej, a więc zmniejsza średni czas dostępu do pamięci głównej.
    1. packed (równoległe) — wykonując równocześnie 4 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.

    Przykład – mnożenie dwóch wektorów (rozkazem MULPS xmm0, xmm1):

    +-------+-------+-------+-------+
    |   x3  |   x2  |   x1  |   x0  | xmm0
    +-------+-------+-------+-------+
        *       *       *       *
    +-------+-------+-------+-------+
    |   y3  |   y2  |   y1  |   y0  | xmm1
    +-------+-------+-------+-------+
        =       =       =       =
    +-------+-------+-------+-------+
    | x3*y3 | x2*y2 | x1*y1 | x0*y0 | xmm0
    +-------+-------+-------+-------+
    

    Przykład – mnożenie pierwszych elementów wektorów (rozkazem MULSS xmm0, xmm1):

    MMX (MultiMedia eXtensions lub Matrix Math eXtensions) to zestaw 57 instrukcji SIMD dla procesorów Pentium i zgodnych. Rozkazy MMX mogą realizować działania logiczne i arytmetyczne na liczbach całkowitych. Pierwotnie wprowadzone w 1996 przez Intela dla procesorów Pentium MMX, aktualnie dostępne również na procesory innych producentów – wraz z rozwojem procesorów i dodawaniem nowych rozszerzeń (np. SSE) zbiór rozkazów MMX powiększał się. Instrukcje te są wykorzystywane przez procesory od Intel Pentium MMX i AMD K6 wzwyż.Intel 64 – architektura procesorów firmy Intel, będąca implementacją architektury x86-64. Do drugiej połowy 2006 roku nosiła nazwę EM64T. Są to nałożone na architekturę x86 dodatkowe instrukcje umożliwiające obsługę 32- i 64-bitowych aplikacji.
    +-------+-------+-------+-------+
    |   x3  |   x2  |   x1  |   x0  | xmm0
    +-------+-------+-------+-------+
                                *
    +-------+-------+-------+-------+
    |   y3  |   y2  |   y1  |   y0  | xmm1
    +-------+-------+-------+-------+
        =       =       =       =
    +-------+-------+-------+-------+
    |   x3  |   x2  |   x1  | x0*y0 | xmm0
    +-------+-------+-------+-------+
    
    Asembler (z ang. assembler) – termin informatyczny związany z programowaniem i tworzeniem kodu maszynowego dla procesorów. W języku polskim oznacza on program tworzący kod maszynowy na podstawie kodu źródłowego (tzw. asemblacja) wykonanego w niskopoziomowym języku programowania bazującym na podstawowych operacjach procesora zwanym językiem asemblera, popularnie nazywanym również asemblerem. W tym artykule język programowania nazywany będzie językiem asemblera, a program tłumaczący – asemblerem.Permutacja – wzajemnie jednoznaczne przekształcenie pewnego zbioru na siebie. Najczęściej termin ten oznacza funkcję na zbiorach skończonych.


    Podstrony: 1 [2] [3] [4] [5]



    w oparciu o Wikipedię (licencja GFDL, CC-BY-SA 3.0, autorzy, historia, edycja)

    Warto wiedzieć że... beta

    MAC (ang. multiply-accumulate) jest operacją wykonywaną przez jednostkę arytmetyczno-logiczną (ALU) procesora, polegającą na pomnożeniu zawartości dwóch rejestrów z dodaniem wyniku do aktualnej zawartości innego rejestru, najczęściej akumulatora.
    Procesor (ang. processor), także CPU (ang. Central Processing Unit) – urządzenie cyfrowe sekwencyjne, które pobiera dane z pamięci, interpretuje je i wykonuje jako rozkazy. Wykonuje on ciąg prostych operacji (rozkazów) wybranych ze zbioru operacji podstawowych określonych zazwyczaj przez producenta procesora jako lista rozkazów procesora.
    AMD64 (x86-64 lub x64) to 64-bitowa architektura procesorów firmy AMD, przeznaczona dla komputerów osobistych (procesory AMD Athlon 64, Athlon 64 FX, Athlon 64 X2, Phenom, oraz ostatnie wersje procesorów Sempron), komputerów przenośnych (Sempron, Turion 64, Turion 64 X2) oraz serwerów i wydajnych stacji obliczeniowych (AMD Opteron). Jest ona rozszerzeniem architektury x86 głównie o 64-bitowe rozkazy oraz rejestry. Umożliwia także bezpośrednie wykonywanie 16- i 32-bitowego kodu x86.
    SIMD (ang. Single Instruction, Multiple Data) – jeden z podstawowych rodzajów architektur komputerowych według taksonomii Flynna, obejmujący systemy, w których przetwarzanych jest wiele strumieni danych w oparciu o pojedynczy strumień rozkazów. Architektura SIMD jest charakterystyczna dla komputerów wektorowych.
    AVX (Advanced Vector Extensions) – rozszerzenie zestawu instrukcji SSE opublikowane w marcu 2008 przez firmę Intel. Jako pierwszy procesor zawierający ten zestaw instrukcji miał się pojawić w pierwszym kwartale 2011 roku i być oparty na układzie Sandy Bridge firmy Intel. AMD zapowiadał wprowadzenie procesora z AVX na trzeci kwartał 2011 roku - miałby być to układ BullDozer.
    Mnemonik - w językach assemblera jest to składający się z kilku liter kod-słowo, które oznacza konkretną czynność procesora. Przykładem mogą być: "add" (ang. dodaj) czy "sub" (ang. subtract - odejmij).
    Advanced Micro Devices, Inc., AMD (NYSE; AMD) – amerykańskie przedsiębiorstwo produkujące procesory wraz z technologią towarzyszącą dla użytkowników domowych i firm. Do głównych produktów firmy należą mikroprocesory, chipsety do płyt głównych, systemy wbudowane oraz procesory graficzne dla serwerów, stacji roboczych i komputerów PC.

    Reklama

    Czas generowania strony: 0.045 sek.