Architektury SIMD

Single Instruction Multiple Data - czyli wykonujemy jedno polecenie na wielu różnych danych jednocześnie. Procesory takie są specjalizowane do obliczeń macierzowych. Przykład - CUDA. Procesory są globalnie zsynchronizowane i połączone w regularną siatkę. Każdy z procesorów składowych jest połączony tylko z najbliższymi sąsiadami.

Nazywa się to architekturą systoliczną. Dlaczego? To termin medyczny określający coś związanego z pracą serca (ale jak szukałem w google to tylko procki wyskakiwały więc olać). Chodzi o to, że wszystkie procesory działają w rytm jednego, wspólnego zegara.

Struktura wewnętrzna procesora może być albo jak najprostsza, albo dążyć do stopnia skomplikowania obecnych mikroprocesorów.

Dane i częściowe wyniki są przesyłane między procesorami składowymi w takt wspólnego sygnału zegarowego, w związku z czym wyniki są uzyskiwane stopniowo.

Tablica z częściowym rozpowszechnianiem danych

Komunikacja PE1) punkt-punkt oraz magistrala. Komunikacja zewnętrzna przez magistralę.

Wykorzystywane w rozbudowanych układach sterujących, stopień wykorzystania >50%.

Tablica heksagonalna

Komunikacja między procesorami tylko punkt-punkt.

Komunikacja zewnętrzna tylko za pomocą procesorów zewnętrznych.

Prosta konstrukcja, duża liczba PE, niski stopień wykorzystania - <50%.

Tablica przetwarzania potokowego.

Komunikacja taka sama jak w tablicy heksagonalnej, prosta konstrukcja.

Liczba PE mniejsza niż w heksagonalnej, a stopień ich wykorzystania to co najmniej 50%.

Tablica typu Wavefront

Asynchroniczna komunikacja punkt-punkt. Komunikacja zewnętrzna tylko za pomocą procesorów brzegowych.

Dobra skalowalność, łatwe przeprogramowywanie, dobre parametry FTC, stopień wykorzystania PE = 50%.

W tym przypadku zaniedbujemy wspólnie taktujący zegar (stąd ta asynchroniczność) w przypadku wymiany informacji, która następuje po dogadaniu się z sąsiadem - forma handshakingu. Istnieje ryzyko rozjechania się procesorów (tzn zachwianie rytmu), ale można to wykryć.

Tablica z rozpowszechnianiem danych

Procesory są taktowane wspólnym zegarem, ale dane są dostarczane magistralowo, a nie na zasadzie punkt-punkt. Przyspiesza to pracę - wrzucasz sobie informacje od razu do magistrali, a każdy procesor dostaje swoją własną, indywidualną porcję danych.

Łatwa implementacja algorytmów, wysoki stopień wykorzystania PE.

Wykorzystywane w rozbudowanych układach sterujących.

Efektywność

Porównajmy na macierzy nn.

Heksagonalna jest trochę średnia.
Przetwarzania potokowego jest już trochę lepsza - w końcu struktura jest dopasowana do macierzy niż plaster miodu.
Częściowe rozpowszechnianie danych - przyjemniejsza, ponieważ wszystko szybciej ładuje się do procesorów.
Wavefront - czasy podobne do przetwarzania potokowego, ale plus jest taki, że można znaleźć uszkodzone procesory i inaczej je przeprogramować - istnieją elementy, które za to odpowiadają. Łatwo takie coś skalować.
Tablica z rozpowszechnianiem danych - najszybsza, w sumie dzięki najszybszemu przesyłowi danych. Minus jest taki, że trzeba zrealizować układy sterujące, które będą zarządzać magistralami.

1) Procesory elementarne? Sprawdzić! FIXME
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki