2012-10-18 26 views
9

Czym różnią się procesory SIMD od wektorów? Obecnie rozumiem, że przetwarzanie wektorowe jest podzbiorem SIMD. Ale powiedziano mi, że "SIMD nie ogranicza się do wektorów" i nie wiem dokładnie, co to oznacza. Jakieś konkretne przykłady?SIMD kontra architektury wektorowe

Co więcej, dlaczego architektura skalarna jest preferowana w architekturze wektorowej? Czy to dlatego, że są łatwiejsze do wdrożenia i zaprogramowania?

Mam świadomość, że mamy SISD (standardowe 1 rdzeniowe procesory), SIMD (rozszerzenia SSE na procesorach jedno/wielordzeniowych), MIMD (errmm .. mniej więcej coś takiego jak MPI, tak sądzę, więc klastrowanie!) I MISD (który został uznany za niepraktyczny/niewykonalny). Poza tym, niektóre inne rzeczy, o których czytałem, to architektury wektorowe i superskalarne. Jakieś nowe architektury, które przegapiłem i o których powinienem wiedzieć? Dzięki!

Odpowiedz

9

Flynn's Taxonomy to klasyfikacja architektur komputerowych. Dzięki przetwarzaniu wektorowemu Flynn's Taxonomy należy do klasy SIMD. Istnieją architektury, które nie są procesorami wektorowymi, ale należą do klasy SIMD. Przykładami są np. Connection Machine i wielu GPUs, gdzie wiele procesorów wykonuje te same instrukcje.

MMX, SSE, Altivec itp. Należą do przetwarzania grafiki wektorowej, a także klasy SIMD. Istnieje wiele nazw odnoszących się do tej samej koncepcji: równoległość podword, SIMD na małą skalę, przetwarzanie krótkiego wektora, SIMD w rejestrze (SWAR) lub najczęściej rozszerzenia multimedialne.

Tradycyjnie procesory wektorowe, takie jak Cray lub STAR, wykorzystują większe i zmienne rozmiary wektorowe.

Superscalar to sposób na zaimplementowanie procesora, ale nie składa żadnych oświadczeń na temat jego zestawu instrukcji, tak jak robi to taksonomia Flynna.

3

Praktyczny przykład można znaleźć w porównaniu ARM Neon vs ARM VFP. Pierwsza to bardziej klasyczna SIMD oceniająca 2,4,8 lub 16 elementów równolegle (lub najczęściej równolegle). Drugi to rozszerzenie zmiennoprzecinkowe, które jest zaprogramowane do sekwencyjnego iterowania na dwóch zestawach kolejnych rejestrów (być może pozwalając na pominięcie o 2), np. S0..S3, S8..S11 i zapisanie wyniku do S12..S15.

Ta ostatnia architektura obsługuje operacje z numerami zmiennymi (1-4) z tą samą instrukcją, używając 1-4 cykli zegara do wykonania zadania. Jeśli architektura pozwoliłaby na 128 operacji na instrukcję, różnica koncepcyjna między systemami byłaby wyraźniejsza - nawet gdyby obie były architekturami wektorowymi i SIMD.