Extras din curs
INTRODUCERE
“Necesarul de simulări al Departamentului pentru Energie (DOE) al Statelor Unite depăşeşte cu mult capacitatea celor mai puternice supercomputere din lume. Pentru a satisface aceste necesităţi, DOE a creat Iniţiativa de Calcul Strategic Accelerat (ASCI – Accelerated Strategic Computing Initiative). Acest program accelerează dezvoltarea de noi supercomputere scalabile şi va conduce în următorul secol la un supercomputer care va lucra la o rată de 100 TFLOPS (1014 operaţii în virgulă mobilă pe secundă).” – Mattson 1997.
Nici-o altă industrie nu a cunoscut evoluţie atât de rapidă ca industria calculatoarelor. Se constată practic o dublare a performanţelor la fiecare 18 luni (capacitate de integrare, frecvenţe de ceas). Această observaţie a devenit legea lui Moore (descoperită în 1965 de Gordon Moore, co-fondator al firmei Intel). Software-ul a urmat şi el calea deschisă de progresele din hardware, făcând valabilă legea lui Nathan: “Software-ul este un gaz. Îşi creşte volumul astfel încât să ocupe tot spaţiul pe care îl are la dispoziţie”.
S-a creat deci aşa numitul cerc virtuos: progresele tehnologice au dat calculatoare mai ieftine şi mai bune, ele au permis aplicaţii noi, nebănuite altă dată (cine ar fi gândit în anii `50 la jocuri 3-D şi comerţ electronic?), iar aplicaţiile au deschis pieţe noi cu cerinţe sporite.
Gama calculatoarelor s-a diversificat enorm: de la calculatoare încorporate în jucării, bunuri de uz casnic (telefoane, maşini de spălat, de gătit etc), maşini unelte, la calculatoare portabile şi reţele de supercalculatoare. Toate acestea, în următorii zece ani vor face foarte probabil parte toate din Internet.
Deşi progresul a fost şi continuă să fie dramatic, cerinţele au continuat şi ele să crească într-un ritm la fel de ameţitor: se doresc maşini de uz caznic comandate prin voce, automobile care să urmeze itinerarii stabilite pe hartă, simularea exploziilor nucleare sau a marii explozii iniţiale de la începutul universului, prelucrarea datelor seismice sau a fotografiilor de satelit în locul explorărilor geologice directe. Chiar dacă simulările costă enorm (hardware şi software), ele sunt totuşi mult mai ieftine.
Deşi frecvenţele de ceas şi densităţile de integrare au crescut şi continuă să crescă continuu, totuşi lucrurile nu vor putea evolua la nesfârşit pe calea aceasta. Viteza luminii e deja o limită care trebuie luată în considerare, iar la un moment dat fiecare tranzistor va avea atât de puţini atomi încât efectele cuantice vor deveni o problemă majoră (ex. principiul incertitudinii lui Heisenberg).
Din toate aceste motive, pentru a rezolva problemele tot mai complexe, arhitecţii de calculatoare se îndreaptă tot mai insistent spre calculatoarele paralele. Dacă până în `90 procesoarele şi sistemele uniprocesor au egalat şi depăşit arhitecturile multiprocesor, treptat în proiectarea procesoarelor a trebuit să se facă apel la principii arhitecturale din sistemele paralele (arhitecturi pipeline, superpipeline şi superscalare etc).
1. PROBLEMELE ARHITECTURILOR PARALELE
Când proiectăm un nou sistem de calcul paralel, trebuie să răspundem la următoarele întrebări fundamentale:
1. Tipul, numărul şi dimensiunea procesoarelor;
2. Tipul, dimensiunea şi repartiţia modulelor de memorie, modul de partajare a datelor;
3. Modul de interconectare şi sincronizare a procesoarelor şi a modulelor de memorie.
Deşi există variaţii mari în numărul şi dimensiunea procesoarelor şi a modulelor de memorie, totuşi, soluţiile de conectare sunt cele care fac să difere esenţial modelele de arhitecturi paralele.
Din punctul de vedere al aplicaţiilor executate pe arhitecturile paralele, avem două categorii:
1. Time-sharing, partajarea în timp a procesorului de mai multe programe independente (ex. Unix). Un multiprocesor realizat cu mai multe procesoare este mai potrivit pentru astfel de sarcini, decât să construieşti uniprocesoare tot mai sofisticate. Serverele de fisiere, de baze de date, de Web sunt standardizate pe multiprocesoare şi deţin un segment semnificativ din piaţa de calculatoare.
2. Parallel processing program (program de prelucrare paralelă), un singur program care ruleaza pe mai multe procesoare simultan. Istoria calculatoarelor a demonstrat că este foarte greu să scrii programe concurente bune, care să meargă bine pe orice arhitectură paralelă (să exploateze la maximum paralelismul oricărei maşini, adică să fie portabil).
Paralelismul poate fi exploatat la diferite niveluri:
- nivel bit: aritmetică pe biţi paraleli; elementele de procesare sunt construite să opereze simultan pe mai mulţi biţi (4, 8, 16, 32, 64 sau 128); cel mai scăzut nivel de paralelism, asigurat de toate procesoarele actuale;
- nivel variabilă sau instrucţiune: mai multe variabile pot fi calculate simultan (vector sau scalari); procesoare construite să execute simultan mai multe instrucţiuni prin suprapunerea fazelor de execuţie (pipeline = linie de asamblare cu unităţi specializate, 5-12 etape) şi prin suprapunerea execuţiei instrucţiunilor de acelaşi tip sau diferite (superscalar = mai multe unităţi de acelaşi tip sau de tip diferit, 2-6); transparent pentru programator, nivel asigurat de majoritatea procesoarelor actuale;
- nivel proces: grupuri de instrucţiuni (rutine) ale aceluiaşi task pot fi executate în paralel pe mai multe procesoare, colaborând strâns pentru obţinerea rezultatului; ex. prelucrarea unei imagini de către mai multe procesoare; nivel asigurat de multiprocesoarele actuale prin planificare statică (utilizator sau compilator) sau dinamică (sistem de operare);
- nivel task: execuţia în paralel a mai multor sarcini ale aceluiaşi program (ex: prelucrarea datelor de la senzori, calcule de poziţie şi viteză şi comanda motoarelor articulaţiilor unui robot; prelucrarea şi servirea a mii de cereri în paralel într-un server de comerţ electronic);
- nivel job: execuţia simultană, independentă a mai multor programe diferite (time-sharing).
1.1. Modele de comunicare
Pentru a înţelege importanţa comunicaţiilor dintre procese (arhitectura interconexiunilor) e suficient să ne imaginăm ce comunicaţii sunt necesare pentru a repartiza sarcinile şi a sincroniza lucrările de construire a unei case de catre 1 lucrător, 10, 100, 1000 sau 1000000 de lucrători. De fapt această problemă a comunicaţiilor nu e nouă, ea e semnalată şi de Biblie, prin pilda celebră a Turnului Babel.
Sunt două modele de comunicare: procesoare cu memorie partajată (multiprocesoare) şi procesoare cu transfer de mesaje (procesoare cu memorie distribuită sau multicalculatoare).
1.1.1. Sisteme cu memorie partajată
Toate procesoarele partajează o memorie fizică comună (fig. 1). Procesele care lucrează pe un multiprocesor partajează un spaţiu de adrese unic. Procesele comunică prin variabile partajate în memoria comună (ex. unul scrie datele în memorie, iar celălalt le citeşte). Accesul la variabile este simplu: execuţia instrucţiunilor LOAD (încarcă) şi STORE (salvează), iar sincronizarea proceselor se poate face prin bariere, zăvoare, semafoare, regiuni critice şi monitoare. Memoriile cache minimizează comunicaţiile pe magistrală sau reţea. Sunt necesare protocoale de asigurare a coerenţei cache-urilor.
Este un model uşor de înţeles pentru programatori şi are o gamă foarte largă de aplicaţii.
Preview document
Conținut arhivă zip
- Multiprocesoare
- CursArh9.doc
- CursArhCap9-1.ppt