b"\n_START_ARTICLE_\nSingle instruction multiple data\n_START_SECTION_\nVantaggi\n_START_PARAGRAPH_\nNell'elaborazioni di dati multimediali spesso si incontrano algoritmi che possono avvantaggiarsi di un'architettura SIMD. Per esempio per cambiare la luminosit\xc3\xa0 di un'immagine un microprocessore dovrebbe caricare ogni pixel che compone l'immagine nei suoi registri, effettuare la modifica della luminosit\xc3\xa0 e poi salvare i risultati in memoria. Un processore SIMD eseguirebbe prima un'istruzione che caricherebbe con un'unica operazione un certo numero di pixel (il numero preciso dipende dall'architettura) poi il processore modificherebbe tutti i dati in parallelo e in seguito li salverebbe tutti contemporaneamente in memoria. Eseguire le operazioni a blocchi invece che agire sui singoli pixel rende le operazioni molto pi\xc3\xb9 efficienti dato che i moderni computer sono progettati per trasferire i dati a blocchi e sono inefficienti nei singoli accessi alla memoria._NEWLINE_Un altro vantaggio deriva dal fatto che tipicamente le istruzioni SIMD sono sempre in grado di manipolare tutti i dati caricati contemporaneamente: Quindi se un processore SIMD \xc3\xa8 in grado di caricare 8 dati, questo sar\xc3\xa0 anche in grado di processarli tutti contemporaneamente. Anche i microprocessori superscalari sono in grado di elaborare pi\xc3\xb9 dati contemporaneamente ma con un'efficienza inferiore.\n_START_SECTION_\nSvantaggi\n_START_PARAGRAPH_\nLe architetture basate su SIMD richiedono un numero elevato di registri e quindi a volte i progettisti per ridurre i costi decidono di utilizzare i registri della FPU. Questa scelta rende impossibile utilizzare istruzioni SIMD e FPU contemporaneamente a meno di lenti cambi di contesto. Questo era l'approccio scelto da Intel per le istruzioni MMX che infatti sono notoriamente lente se associate a operazioni in virgola mobile. Va anche considerato che la programmazione parallela \xc3\xa8, generalmente,  pi\xc3\xb9 complessa rispetto alla programmazione scalare e quindi richiede molto pi\xc3\xb9 tempo e competenze da parte del programmatore.\n_START_SECTION_\nLimiti\n_START_PARAGRAPH_\nIl limite intrinseco delle architetture di tipo SIMD \xc3\xa8 dato dalla legge di Amdhal relativa alla frazione parallelizzabile. La legge esprime il concetto che il livello massimo di parallelizzazione ottenibile \xc3\xa8 limitato superiormente dalla cosiddetta frazione non parallelizzabile di codice presente nel sorgente del programma da eseguire. Quindi un programma che gira su una architettura SIMD non potr\xc3\xa0 essere mai eseguito in meno tempo di quello necessario ad eseguire la frazione di codice che non \xc3\xa8 parallelizzabile.\n_START_SECTION_\nRecenti computer SIMD\n_START_PARAGRAPH_\nNegli ultimi anni sono strati prodotti molti microprocessori dotati di istruzioni SIMD di media dimensione (64 o 128 bit). Nel 1994 i processori PA-RISC vennero dotati delle istruzioni MAX. Attualmente istruzioni SIMD sono incluse in quasi tutti i microprocessori, tra i quali ricordiamo PowerPC, con le istruzioni AltiVec, le Intel MMX, SSE, SSE2, SSE3 e SSE4, l'AMD 3DNow!, ARM con la tecnologia NEON, le istruzioni SPARC VIS, le PA-RISC MAX e le MIPS MDMX e MIPS-3D._NEWLINE_Queste istruzioni generalmente includono tutte le principali operazioni di elaborazione sui vettori e le matrici. Spesso queste istruzioni includono elaborazioni tridimensionali. Le moderne schede grafiche sono dotate di processori SIMD dedicati che sgravano la CPU di elaborazioni onerose legate alla visualizzazione tridimensionale. Alcuni processori includono istruzioni dedicate all'elaborazione dei segnali, queste operazioni vengono utilizzate per codificare/decodificare i flussi video per velocizzare gli algoritmi di compressione.\n_START_SECTION_\nSoftware\n_START_PARAGRAPH_\nNei personal computer lo sviluppo di software SIMD inizialmente \xc3\xa8 proceduto con lentezza. Questo \xc3\xa8 stato dovuto a due problemi concomitanti. Il primo problema era dovuto al fatto che Intel e AMD per risparmiare avevano deciso di utilizzare come registri per le istruzioni SIMD i registri della FPU e questa scelta progettuale deprimeva le prestazioni del software SIMD. Il secondo problema era le gestione deficitaria dei compilatori. Inizialmente i compilatori non erano in grado di gestire efficacemente le istruzioni SIMD e quindi spesso i programmatori che intendevano utilizzare queste istruzioni erano costretti a scrivere estese porzioni di codice in Assembly._NEWLINE_Nonostante la partenza lenta del software SIMD su macchine x86 in seguito i compilatori migliorarono e Intel rilasci\xc3\xb2 le istruzioni SSE che risolvevano i maggiori problemi delle precedenti istruzioni SIMD. Infatti attualmente il software SIMD si sta diffondendo rapidamente._NEWLINE_Nei sistemi prodotti da Apple il software SIMD invece si \xc3\xa8 diffuso quasi subito. I processori utilizzati da Apple utilizzavano le istruzioni SIMD AltiVec, notevolmente pi\xc3\xb9 performanti delle istruzioni MMX di Intel. Inoltre i programmatori di sistemi Apple ebbero a disposizione quasi subito buoni compilatori per istruzioni SIMD prodotti da Motorola, IBM e dal progetto GNU. Inoltre Apple punt\xc3\xb2 molto sulle istruzioni SIMD infatti molti suoi programmi come QuickTime e iTunes utilizzano istruzioni SIMD.\n_START_SECTION_\nApplicazioni commerciali\n_START_PARAGRAPH_\nSpesso i processori SIMD vengono utilizzati per le applicazioni audio/video e per gestire la grafica tridimensionale. Infatti all'interno della console PlayStation 2 della Sony \xc3\xa8 montato un processore SIMD che utilizza vettori a quattro dimensioni e provvede a gestire la grafica dei videogiochi._NEWLINE_Un processore vettoriale annunciato di recente \xc3\xa8 il Cell. Questo processore viene sviluppato da IBM in congiunzione con Toshiba e Sony. Il processore \xc3\xa8 dotato di un certo numero di unit\xc3\xa0 SIMD dotate di RAM indipendente e di un processore classico utilizzato per eseguire le istruzioni non SIMD. Questo processore \xc3\xa8 sviluppato per essere utilizzato dalle applicazioni che fanno un utilizzo intenso della grafica tridimensionale, infatti \xc3\xa8 stato utilizzato dalla PlayStation 3."