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.
Komunikacja PE1) punkt-punkt oraz magistrala. Komunikacja zewnętrzna przez magistralę.
Wykorzystywane w rozbudowanych układach sterujących, stopień wykorzystania >50%.
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%.
Komunikacja taka sama jak w tablicy heksagonalnej, prosta konstrukcja.
Liczba PE mniejsza niż w heksagonalnej, a stopień ich wykorzystania to co najmniej 50%.
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ć.
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.
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.
