Instrucțiuni unice de date multiple

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Arhitecturi conexe
( Taxonomia lui Flynn )
Instrucțiuni
Singur
Instrucțiuni
Multiplu
Dat
Singur
SISD MISD
Date
Multiplu
SIMD MIMD

Fluxul de instrucțiuni unice, fluxul de date multiple ( SIMD ) este o arhitectură în care mai multe unități de procesare procesează mai multe fluxuri de date în paralel [1] . Acesta este utilizat de procesoarele vectoriale sau de procesoarele care rulează în paralel. SIMD este adesea folosit de supercomputere și cu unele variații și în microprocesoarele moderne.

Modelul SIMD este compus dintr-o singură unitate de control care execută o instrucțiune odată controlând mai multe ALU-uri care funcționează sincron. La fiecare pas, toate elementele execută aceeași instrucțiune scalară, dar fiecare pe o bază de date diferită. Un computer bazat pe acest model este numit și Array Processor.

În trecut, au fost produse un număr mare de dispozitive dedicate îndeplinirii sarcinilor specifice. De obicei, aceste dispozitive erau DSP-uri programate corespunzător. Diferența cheie între instrucțiunile SIMD și DSP-urile este că acestea vin cu un set de instrucțiuni complet și, prin urmare, sunt capabile de practic orice sarcină. În schimb, instrucțiunile SIMD sunt concepute pentru a manipula cantități mari de date în paralel și pentru operațiunile obișnuite se bazează pe un alt set de instrucțiuni gestionate de obicei de microprocesor. În plus, DSP-urile tind să includă o serie de instrucțiuni dedicate procesării unor tipuri specifice de date, cum ar fi date audio sau video, în timp ce instrucțiunile SIMD sunt utilizate pentru procesarea datelor generice.

Beneficii

În procesarea datelor multimedia, se întâlnesc adesea algoritmi care pot profita de o arhitectură SIMD. De exemplu, pentru a modifica luminozitatea unei imagini, un microprocesor ar trebui să încarce fiecare pixel care compune imaginea în registrele sale, să facă schimbarea luminozității și apoi să salveze rezultatele în memorie. Un procesor SIMD ar executa mai întâi o instrucțiune care ar încărca un anumit număr de pixeli cu o singură operație (numărul precis depinde de arhitectură ), apoi procesorul ar modifica toate datele în paralel și apoi le va salva pe toate în același timp în memorie . Efectuarea operațiunilor în blocuri, mai degrabă decât în ​​pixeli simpli, face operațiunile mult mai eficiente, deoarece computerele moderne sunt proiectate pentru a transfera date în blocuri și sunt ineficiente în accesele de memorie individuale.

Un alt avantaj derivă din faptul că instrucțiunile SIMD sunt de obicei capabile să manipuleze întotdeauna toate datele încărcate în același timp: Deci, dacă un procesor SIMD poate încărca 8 date, va putea, de asemenea, să le proceseze pe toate în același timp. Microprocesoarele suprascalare sunt, de asemenea, capabile să proceseze mai multe date în același timp, dar cu o eficiență mai mică.

Dezavantaje

Arhitecturile bazate pe SIMD necesită un număr mare de registre și, prin urmare, proiectanții decid uneori să utilizeze registre FPU pentru a reduce costurile. Această alegere face imposibilă utilizarea simultană a instrucțiunilor SIMD și FPU, cu excepția cazului în care se modifică contextul lent. Aceasta a fost abordarea preferată de Intel pentru instrucțiunile MMX, care sunt notoriu lente atunci când sunt asociate cu operații în virgulă mobilă. De asemenea, trebuie considerat că programarea paralelă este în general mai complexă decât programarea scalară și, prin urmare, necesită mult mai mult timp și abilități din partea programatorului.

Limite

Limita intrinsecă a arhitecturilor de tip SIMD este dată de legea lui Amdhal referitoare la fracțiunea paralelizabilă. Legea exprimă conceptul că nivelul maxim de paralelizare obținut este limitat în partea de sus de așa-numita fracțiune de cod neparalelizabilă prezentă în sursa programului de executat. Prin urmare, un program care rulează pe o arhitectură SIMD nu va putea fi executat niciodată în mai puțin timp decât cel necesar pentru a executa fracțiunea de cod care nu este paralelizabilă.

Istorie

Prima utilizare a instrucțiunilor SIMD a avut loc în computerele vectoriale, în special în cele produse de Cray în anii 1970.

Mașinile ulterioare au preferat să utilizeze un număr relativ mare de procesoare simple. Exemple de acest tip de mașini sunt:

Și multe alte mașini mai puțin cunoscute

Calculatoare SIMD recente

În ultimii ani, multe microprocesoare au fost produse cu instrucțiuni SIMD de dimensiuni medii (64 sau 128 biți). În 1994 procesoarele PA-RISC au fost echipate cu instrucțiuni MAX . În prezent, instrucțiunile SIMD sunt incluse în aproape toate microprocesoarele, inclusiv PowerPC , cu instrucțiuni AltiVec , Intel MMX , SSE , SSE2 , SSE3 și SSE4 , AMD 3DNow! , ARM cu tehnologie NEON , instrucțiuni SPARC VIS , PA-RISC MAX și MIPS MDMX și MIPS-3D .

Aceste instrucțiuni includ, în general, toate operațiunile majore de procesare pe vectori și matrice. Adesea aceste instrucțiuni includ procesare tridimensională. Plăcile grafice moderne sunt echipate cu procesoare dedicate SIMD care scutesc procesorul scump de procesare legată de afișajul tridimensional. Unele procesoare includ instrucțiuni dedicate procesării semnalului, aceste operații sunt utilizate pentru a codifica / decoda fluxurile video pentru a accelera algoritmii de compresie.

Software

În computerele personale, dezvoltarea software-ului SIMD a început inițial încet. Acest lucru s-a datorat a două probleme concomitente. Prima problemă s-a datorat faptului că Intel și AMD, pentru a economisi bani, au decis să utilizeze registrele FPU ca registre pentru instrucțiunile SIMD și această alegere de proiectare a deprimat performanța software-ului SIMD. A doua problemă a fost slaba manipulare a compilatoarelor. Inițial compilatoarele nu au reușit să gestioneze în mod eficient instrucțiunile SIMD și, prin urmare, deseori programatorii care intenționau să utilizeze aceste instrucțiuni au fost obligați să scrie porțiuni mari de cod în Assembly .

În ciuda pornirii lente a software-ului SIMD pe mașinile x86 , compilatoarele s-au îmbunătățit ulterior și Intel a lansat instrucțiunile SSE care au rezolvat problemele majore ale instrucțiunilor SIMD anterioare. De fapt, software-ul SIMD se răspândește în prezent rapid.

Pe sistemele produse de Apple, software-ul SIMD, pe de altă parte, s-a răspândit aproape imediat. Procesoarele utilizate de Apple foloseau instrucțiunile AltiVec SIMD, care sunt semnificativ mai puternice decât instrucțiunile MMX ale Intel. În plus, programatorii de sisteme Apple au avut aproape imediat compilatoare bune pentru instrucțiunile SIMD produse de Motorola , IBM și proiectul GNU . În plus, Apple s-a bazat foarte mult pe instrucțiunile SIMD, de fapt multe dintre programele sale, cum ar fi QuickTime și iTunes, folosesc instrucțiunile SIMD.

Aplicații comerciale

Procesoarele SIMD sunt adesea folosite pentru aplicații audio / video și pentru a gestiona grafica tridimensională. De fapt, un procesor SIMD este montat în consola Sony PlayStation 2 care utilizează vectori în patru dimensiuni și gestionează grafica jocurilor video.

Un procesor vectorial este celula . Acest procesor este dezvoltat de IBM împreună cu Toshiba și Sony. Procesorul este echipat cu un număr de unități SIMD echipate cu memorie RAM independentă și un procesor clasic folosit pentru a executa instrucțiuni non-SIMD. Acest procesor este dezvoltat pentru a fi utilizat de aplicații care utilizează intensiv grafica tridimensională, de fapt a fost folosit de PlayStation 3 .

Notă

  1. ^ Hennessy, John L. și Asanović, Krste., Arhitectura computerelor: o abordare cantitativă , ediția a 5-a, Morgan Kaufmann, 2012, ISBN 012383872X ,OCLC 755102367 .

linkuri externe

Controlul autorității LCCN ( EN ) sh2012002030
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT