Memorie paralelă

De la Wikipedia, enciclopedia liberă

Multe aplicații folosesc formate speciale de date care pot fi accesate în paralel. Acest fenomen stă la baza conceptului de memorie paralelă, unde idea principală este de a mări lățimea de bandă a memoriei prin folosirea mai multor module de memorie ce funcționează în paralel pentru a furniza procesorului doar date folositoare. Arhitecturile de tip memorie paralelă sunt folosite în special în cazul procesoarelor de tip SIMD (Single instruction, multiple data).

Clasificarea sistemelor de memorie[modificare | modificare sursă]

Figura alăturată înfățișează diferențele arhitecturale dintre memoria paralelă și memoria intercalată (interleaved).

Arhitectura memoriei intercalate și paralele

Ambele configurații de memorie folosesc N module de memorie: S0,S1...SN-1 care lucrează în paralel. Totodată, M elemente de procesare PE0, PE1...PEN-1 sunt utilizate cu memorii paralele(M≤N).

Memoriile intercalate folosesc module de memorii multiplexate în timp care primesc cereri de acces serial unul câte unul. Ciclul de acces al memoriei durează câteva cicluri de procesor. De obicei există buffere la intrări/ieșiri pentru a stoca cererile ce nu pot fi servite imediat. În mod tradițional computerele vectorizate folosesc memoriile intercalate.

Memoriile paralele au magistrale de adrese și date mari iar modulele de memorie primesc cereri de acces în paralel. Spre deosebire de memoriile intercalate, cele paralele sunt definite ca fiind multiplexate în spațiu. Un exemplu ce folosește o astfel de arhitectură este reprezentat de procesoarele SIMD(Single instruction, multiple data).

În unele supercomputere multi-vector, un sistem de memorie cu numeroase module de memorie poate fi multiplexat atât în timp cât și în spațiu.

Diferențe între cele două arhitecturi[modificare | modificare sursă]

Noțiunea de sistem compatibil se referă la faptul că există un număr minim de module de memorie ce pot furniza date către toate elementele de procesare în fiecare ciclu procesor. Pentru memoria intercalată înseamnă că numărul de module de memorie este egal cu raportul dintre ciclul de memorie și ciclul procesor. În cazul memoriei paralele compatibile, numărul de module este egal cu numărul de elemente de procesare(N=M).

Conflictul de memorie se petrece atunci când mai multe locații de date sunt accesate simultan în cadrul aceluiași modul de memorie. Memoriile multiport facilitează câteva accese simultane dar sunt soluții forte scumpe în special atunci când numărul de porturi este mare. Conflictul de memorie la memoriile intercalate poate avea ca efect scăderea lățimii de bandă, în special la sistemele compatibile. În cazul memoriilor paralele, se presupune de obicei că M elemente paralele de date pot fi accesate simultan în fiecare ciclu procesor. Drept urmare, de obicei, conflictele de memorie nu sunt permise în cadrul sistemelor cu memorii paralele.

Principiile memoriei paralele[modificare | modificare sursă]

Memoria paralelă

Imaginea alăturată înfățișează o diagrama bloc a arhitecturii de timp memorie paralelă. Blocurile funcționale sunt: Unitatea de Calculare a Adresei,N module de memorie S0,S1...SN-1, Unitatea de Permutare a Datelor. În funcție de formatul de acces F și de locație primului element(punctul de scanare) r, Unitatea de Calculare a Adresei calculează adresa și predă legătura către modulul de memorie adecvat. Unitatea de Permutare a Datelor organizează datele în ordinea corectă, specifică formatului de acces și a punctului de scanare.

Formate de acces[modificare | modificare sursă]

Spațiul de adrese în cadrul arhitecturilor cu memorie paralelă nu poate fi asignat în mod arbitrar din moment ce datele trebuie să fie stocate în memorie folosind tipare predefinite numite și formate de acces sau modele (template). Elementele ce constituie datele pentru un anumit format de acces pot fi citite din modulele de memorie în paralel când este realizat un acces lipsit de conflicte.

Exemple de formate de acces

Fiecare aplicație poate folosi diferite formate de acces.

Procesare de imagini[modificare | modificare sursă]

O imagine poate fi reprezentată ca un vector bidimensional. Imaginile pot fi stocate, vizualizate, rotite, scalate și comprimate. Procesarea de imagini poate folosi formate precum: rânduri, coloane, dreptunghiuri, diagonale. Imaginile 3-D sunt favorizate de folosirea formatelor de acces de tip spirală. În procesarea de imagini, algoritmul Lee de rutare beneficiază de formatul de acces de tip spirală.

Procesare video[modificare | modificare sursă]

Câteva dintre operațiile de baza ale codării video cum ar fi standardele: H.263, H.264, și MPEG-4 sunt estimări de mișcare, interpolări, compensări de mișcare, transformate discrete cosinus, cuantizări, cuantizări inverse, și transformata discretă cosinus inversă. Formatele de acces specifice pentru aceste operații sunt : rânduri, coloane, dreptunghiuri prăbușite, dreptunghiuri. Scanarea zigzag ca și alte scanări adiționale alternativ-orizontale și alternativ-verticale din cadrul formatului MPEG-4 pot folosi modele (template) atipice. Aceste formate sunt similare formatului de acces Zigzag.

Avantaje și dezavantaje ale memoriei paralele[modificare | modificare sursă]

Un sistem de memorie paralela cu 8 module de memorie în comparație cu un sistem convențional de memorie scalează o imagine folosind un algoritm simplu de interpolare de 6.5-8 ori mai repede.

În cazul codării MPEG-4 folosind funcții ce includ interpolare, OBMC(overlapped block motion compensation) și IDTC(transformata cosinus inversă) s-au obținut următoarele diferențe între un sistem cu arhitectura clasică a memoriei și un sistem ce beneficiază de o arhitectură cu memorie paralelă : sistemul cu arhitectură clasică a avut nevoie de 1.44-1.9 ori mai multe cicluri procesor și 1.22-1.62 ori mai multe instrucțiuni decât sistemul cu arhitectură paralela a memoriei. Aceste îmbunatățiri se datorează alinierii optimale și ordonării datelor în sistemul cu memorie paralelă.

Ca și dezavantaje, sistemele cu memorie paralelă au nevoie de o arie de silicon mai mare și o întârziere suplimentară în cazul adresării totale a memoriei. Puterea consumată la un acces de memorie este de 1.3-2.77 ori mai mare la memoriile paralele. Totuși, puterea totala consumată este afectată de doi factori: operația de acces la memorie este mai redusă ca timp în cazul memoriilor paralele iar puterea totală e redusă datorită numărului mai mic de instrucțiuni necesare.

Referințe[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]