2012-10-18 23 views
9

Was ist der Unterschied zwischen SIMD und Vektorprozessoren? Mein derzeitiges Verständnis ist, dass Vektorverarbeitung eine Untermenge von SIMD ist. Aber mir wurde gesagt, dass "SIMD nicht auf Vektoren beschränkt ist" und ich weiß nicht genau, was das bedeutet. Irgendwelche konkreten Beispiele?SIMD vs. Vektorarchitekturen

Warum sind skalare Architekturen auch Vektorarchitekturen vorzuziehen? Liegt es daran, dass sie einfacher zu implementieren und zu programmieren sind?

Ich bin mir bewusst, dass wir SISD (reguläre 1-Core-CPUs), SIMD (SSE-Erweiterungen auf Single/Multi-Core-Prozessoren), MIMD (errmm .. etwa so etwas wie MPI ich denke, so Clustering!) Und MISD (was als unpraktisch/undurchführbar angesehen wurde). Abgesehen davon sind einige andere Dinge, über die ich gelesen habe, Vektorverarbeitungs- und Superskalararchitekturen. Irgendwelche neuen Architekturen, die ich vermisste und kennen sollte? Vielen Dank!

Antwort

9

Flynn's Taxonomy ist eine Klassifizierung von Computerarchitekturen. Durch Flynns Taxonomie fällt die Vektorverarbeitung in die Klasse der SIMD. Es gibt Architekturen, die keine Vektorprozessoren sind, aber in die SIMD-Klasse fallen. Beispiele sind z.B. die Connection Machine und viele GPUs, wo mehrere Prozessoren die gleichen Anweisungen ausführen.

MMX, SSE, Altivec usw. fallen in die Vektorverarbeitung ebenso wie in die SIMD-Klasse. Es gibt viele Namen, die sich auf dasselbe Konzept beziehen: Teilwortparallelismus, kleine SIMD, kurze Vektorverarbeitung, SIMD in einem Register (SWAR) oder am häufigsten Multimedia-Erweiterungen.

Traditionell haben Vektorprozessoren wie die Cray oder die STAR größere und variable Vektorgrößen verwendet.

Superscalar ist eine Möglichkeit, einen Prozessor zu implementieren, macht aber keine Aussage über seinen Befehlssatz wie Flynns Taxonomie.

3

Ein praktisches Beispiel konnte aus dem Vergleich von ARM Neon vs ARM VFP gefunden werden. Die erste ist eine klassische SIMD, die 2,4,8 oder 16 Elemente parallel (oder meistens parallel) auswertet. Die andere ist eine Gleitkomma-Erweiterung, die so programmiert ist, dass sie sequentiell über zwei Sätze von aufeinanderfolgenden Registern iteriert (vielleicht erlaubt sie ein Überspringen um 2), z. S0..S3, S8..S11 und Schreiben des Ergebnisses in S12..S15.

Die letztere Architektur behandelt Operationen mit variabler Nummer (1-4) mit dem gleichen Befehl mit 1-4 Taktzyklen, um die Aufgabe abzuschließen. Wenn die Architektur beispielsweise 128 Operationen pro Anweisung erlauben würde, wäre der konzeptionelle Unterschied zwischen den Systemen klarer - obwohl beide Vektor- und SIMD-Architekturen wären.