close

SIMD

Salt la navigare Salt la căutare

Fluxul de instrucțiuni unice, fluxul de date multiple ( SIMD ) constă dintr-un număr mare de procesoare identice care execută aceeași secvență de instrucțiuni pe seturi diferite de date [1] . Procesoarele SIMD sunt adesea folosite de supercalculatoare și cu unele variații chiar și în microprocesoarele moderne .

Modelul SIMD este compus dintr-o singură unitate de control care execută o instrucțiune la un moment dat prin controlul mai multor ALU care funcționează sincron. La fiecare pas, toate elementele execută aceeași instrucțiune scalară, dar fiecare pe un datum diferit. Un computer bazat pe acest model se mai numește și Procesor Array.

Î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 dintre instrucțiunile SIMD și DSP-uri este că acestea vin cu un set complet de instrucțiuni și, prin urmare, sunt capabile să îndeplinească 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 folosite pentru a procesa date generice.

Beneficii

În procesarea datelor multimedia, sunt adesea întâlniți algoritmi care pot profita de o arhitectură SIMD. De exemplu, pentru a schimba 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-ar salva pe toate simultan în memorie. Efectuarea operațiunilor în blocuri, mai degrabă decât în ​​pixeli unici, face operațiunile mult mai eficiente, deoarece computerele moderne sunt proiectate pentru a transfera date în blocuri și sunt ineficiente în accesările individuale la memorie.

Un alt avantaj derivă din faptul că, de obicei, instrucțiunile SIMD sunt întotdeauna capabile să manipuleze toate datele încărcate în același timp: Deci, dacă un procesor SIMD este capabil să încarce 8 date, va putea, de asemenea, să le proceseze pe toate în același timp. Microprocesoarele superscalare 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, designerii decid uneori să folosească registrele FPU pentru a reduce costurile . Această alegere face imposibilă utilizarea simultană a instrucțiunilor SIMD și FPU, cu excepția cazului în care contextul se schimbă încet. Aceasta a fost abordarea aleasă de Intel pentru instrucțiunile MMX care sunt notoriu de lente atunci când sunt asociate cu operațiuni în virgulă mobilă. De asemenea, trebuie luat în considerare 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 Amdahl referitoare la fracția paralelizabilă. Legea exprimă conceptul că nivelul maxim de paralelizare obținut este limitat în vârf 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ă într-un timp mai mic 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 calculatoarele vectoriale, în special cele produse de Cray în anii 1970.

Mașinile ulterioare au preferat să folosească 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 de 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 procesarea tridimensională. Plăcile grafice moderne sunt echipate cu procesoare SIMD dedicate care scutesc CPU de procesarea costisitoare legată de afișajul tridimensional. Unele procesoare includ instrucțiuni dedicate procesării semnalului, aceste operații sunt folosite pentru a codifica/decodifica fluxurile video pentru a accelera algoritmii de compresie.

Software

În computerele personale, dezvoltarea software-ului SIMD a decurs inițial lent. 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ă folosească registrele FPU -ului ca registre pentru instrucțiunile SIMD și această alegere de design a deprimat performanța software-ului SIMD. A doua problemă a fost gestionarea proastă a compilatorilor. Inițial, compilatorii nu au fost capabili să gestioneze eficient instrucțiunile SIMD și, prin urmare, de multe ori programatorii care intenționau să folosească aceste instrucțiuni au fost forțaț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.

În sistemele produse de Apple , software-ul SIMD, pe de altă parte, s-a răspândit aproape imediat. Procesoarele utilizate de Apple au folosit instrucțiuni SIMD AltiVec , 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țiuni SIMD.

Aplicații comerciale

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

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

Note

  1. ^ Andrew S. Tanenbaum și Todd Austin, Architecture of Computers , Ediția a șasea, Pearson, p. 70.

Link- uri externe