• 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).

    Typy danych[ | edytuj kod]

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

    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.

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

    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):

    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.
    +-------+-------+-------+-------+
    |   x3  |   x2  |   x1  |   x0  | xmm0
    +-------+-------+-------+-------+
                                *
    +-------+-------+-------+-------+
    |   y3  |   y2  |   y1  |   y0  | xmm1
    +-------+-------+-------+-------+
        =       =       =       =
    +-------+-------+-------+-------+
    |   x3  |   x2  |   x1  | x0*y0 | xmm0
    +-------+-------+-------+-------+
    

    Mnemoniki rozkazów[ | edytuj kod]

    Mnemoniki instrukcji SSE działających na wektorach liczb całkowitych zostały wybrane zgodnie z konwencję wprowadzoną w MMX – nazwy zaczynają się najczęściej od litery P.

    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.

    Dla nazw instrukcji działających na liczbach zmiennoprzecinkowych nie wprowadzono żadnego prefiksu; jednak podobnie jak w MMX sufiks nazwy określa typ:

  • PS (packed single) – działanie na wektorach,
  • SS (scalar single) – działanie na skalarach.
  • Ponadto jeśli rozkazy działają na połówkach rejestrów XMM (tj. albo odnoszą się do bitów 0..63, albo 64..127), w mnemonikach rozkazu występuje litera – odpowiednio – L albo H, od angielskich słów low („niski”) i high („wysoki”).

    x86-64 (nazywane też amd64 i x64) – opracowane przez AMD rozszerzenie architektury IA-32, którego głównym celem było ułatwienie zarządzania pamięcią operacyjną powyżej 4GiB poprzez dodanie obsługi 64-bitowych liczb stałoprzecinkowych do jednostki arytmetyczno-logicznej. Ze względu na zachowanie wysokiej zgodności wstecznej, możliwe jest jednoczesne uruchamianie aplikacji 32- i 64-bitowych. Pierwszymi procesorami implementującymi nową architekturę były zaprezentowane w roku 2003 Opteron i Athlon 64. Później swoje implementacje wprowadziły firmy Intel (Intel 64) i VIA.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.


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




    Warto wiedzieć że... beta

    Permutacja – wzajemnie jednoznaczne przekształcenie pewnego zbioru na siebie. Najczęściej termin ten oznacza funkcję na zbiorach skończonych.
    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.
    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.021 sek.