2012-10-18 21 views
9

Qual è la differenza tra processori SIMD e vettoriali? La mia attuale comprensione è che l'elaborazione vettoriale è un sottoinsieme di SIMD. Ma mi è stato detto che "SIMD non è limitato ai vettori" e non so esattamente cosa significhi. Qualche esempio concreto?SIMD vs Architetture vettoriali

Inoltre, perché le architetture scalari preferiscono architetture vettoriali? È perché sono più facili da implementare e programmare?

Sono consapevole del fatto che abbiamo SISD (CPU 1 core standard), SIMD (estensioni SSE su processori single/multi core), MIMD (erroneamente .. qualcosa come MPI credo, quindi clustering!) E MISD (che è stato ritenuto impraticabile/non fattibile). Oltre a questo, alcune altre cose di cui ho letto sono l'elaborazione vettoriale e le architetture Superscalar. Eventuali nuove architetture che mi sono sfuggite e dovrebbero sapere? Grazie!

risposta

9

Flynn's Taxonomy è una classificazione di architetture di computer. Con Flynn's Taxonomy l'elaborazione vettoriale rientra nella classe di SIMD. Esistono architetture che non sono processori vettoriali ma rientrano nella classe SIMD. Esempi sono ad es. il Connection Machine e molti GPUs dove più processori eseguono le stesse istruzioni.

MMX, SSE, Altivec, ecc. Ricadono nell'elaborazione vettoriale e nella classe SIMD. Ci sono molti nomi che si riferiscono allo stesso concetto: parallelismo delle sub parole, SIMD su piccola scala, elaborazione vettoriale breve, SIMD all'interno di un registro (SWAR) o più comunemente estensioni multimediali.

Tradizionalmente i processori vettoriali come Cray o STAR hanno utilizzato dimensioni vettoriali maggiori e variabili.

Superscalar è un modo per implementare un processore ma non rilascia alcuna dichiarazione sul set di istruzioni come fa Taxonomy di Flynn.

3

Un esempio pratico potrebbe essere trovato dal confronto di ARM Neon vs ARM VFP. La prima è la SIMD più classica che valuta 2,4,8 o 16 elementi in parallelo (o per lo più paralleli). L'altra è un'estensione a virgola mobile, programmata per iterare in sequenza su due serie di registri successivi (forse consentendo un salto di 2) ad es. S0..S3, S8..S11 e scrivendo il risultato su S12..S15.

Quest'ultima architettura gestisce operazioni con numero variabile (1-4) con la stessa istruzione utilizzando 1-4 cicli di clock per completare l'operazione. Se l'architettura consentirebbe di dire 128 operazioni per istruzione, la differenza concettuale tra i sistemi sarebbe più chiara, anche se entrambe sarebbero architetture vettoriali e SIMD.