Professional Documents
Culture Documents
MULTIPROCESOARE
Introducere
Visul de aur al arhitectilor de calculatoare: Sa creeze calculatoare puternice prin simpla conectare a calculatoarelor mai mici existente =>
Multiprocesoarele trebuie sa fie scalabile: hardware-ul si software-ul sunt proiectate sa fie vandute cu un numar variabil de procesoare (1...256).
Hardware si software tolerant la defectari: lucrul poate continua in cazul defectarii unuia sau mai multor procesoare.
Time-sharing = partajarea in timp a UC de mai multe task-uri => un multiprocesor realizat cu mai multe uniprocesoare este mai potrivit pentru astfel de sarcini, decat sa construiesti uniprocesoare tot mai sofisticate. => Serverele de fisiere, de baze de date, de Web sunt standardizate pe multiprocesoare si detin un segment semnificativ din piata de calculatoare. Parallel processing program (program de prelucrare paralela) = un singur program care ruleaza pe mai multe procesoare simultan. Istoria calculatoarelor a demonstrat ca este foarte greu sa scrii programe concurente bune, care sa mearga bine pe orice arhitectura paralela. Drumul construirii de arhitecturi paralele si software pentru ele este un drum in care s-a investit enorm de multa munca si bani, de catre enorm de multe firme, de universitati si specialisti de renume, dar, din pacate este un drum presarat cu enorm de multe si rasunatoare falimente.
Introducere
Probleme cheie pt procesoarele paralele : cum partajeaza datele; cum se sincronizeaza; numarul maxim de procesoare. A. Doua modele de partajare a datelor: 1. procesoare cu memorie partajata 2. procesoare cu transfer de mesaje
1. Procesoare cu un singur spatiu de adrese (= procesoare cu memorie partajata) ofera programatorilor un singur spatiu de adrese partajat de toate procesoarele => procesoarele comunica prin variabile partajate in memorie (instr. load si store) Sincronizare prin bariere, semafoare si zavoare (lock). Numai un procesor are acces la un moment dat la o data partajata, cel care a capturat zavorul, celelalte procesoare asteapta deblocarea ei. Doua sub-modele: a) Multiprocesoare cu acces uniform la memorie (UMA - Uniform Memmory Access, sau multiprocesoare simetrice = SMP - Simmetric MultiProcessors) - toate procesoarele au acelasi timp de acces la memorie (fara privilegii) - scalabilitate limitata, redusa. b) Multiprocesoare cu acces neuniform la memorie (NUMA - NonUniform Memmory Access) - unele procesoarele au un timp de acces la memorie mai mic decat altele - mai greu de programat - scalabile spre foarte mari dimensiuni si un mare potential de performanta
2. Procesoare cu transfer de mesaje (message passing) Procesoare cu memorii private care comunica intre ele printr-o retea de legaturi prin emiterea si receptia de mesaje (send si receive). Routine specializate de emisie si receptie a mesajelor care asigura sincronizarea procesoarelor (inclusiv prin confirmarea receptiei). Doua sub-modele: a) Multiprocesoare cu transfer de mesaje (cu memorie proprie, conectate prin retele specializate, de mare viteza) - scalabilitate foarte mare b) Calculatoare conectate intre ele prin retele locale (swtch-uri de mare viteza) = ciorchine de calculatoare (clusters) - foarte mare toleranta la defectari In plus, la cele doua moduri de comunicare (memorie partajata sau transfer de mesaje), multiprocesoarele sunt construite in doua organizari de baza: - procesoare conectate printr-o singura magistrala - procesoare conectate prin retele Categorie Model Nr de procesoare Model de Transfer de mesaje 8-256 comunicare Memorie NUMA 8-256 partajata UMA 2-64 Conexiune Retea 8-256 fizica Magistrala 2-32
Introducere
Introducere - concluzii
Cum partajeaza datele procesoarele paralele ? un singur spatiu de adrese (SMP si NUMA) transfer de mesaje Cum se coordoneaza procesoarele paralele ? sincronizare (zavoare, semafoare) primitive interne send / recieve protocoale ale sistemului de operare
Cum sunt implementate multiprocesoarele ? conectate printr-o singura magistrala conectate printr-o retea
Programarea multiprocesoarelor
Desi s-au facut multe studii, s-au scris multe articole si carti despre programarea multiprocesoarelor, putine aplicatii importante au fost rescrise pentru multiprocesoare. De ce ?
Neportabilitate: e foarte greu sa gasesti aplicatii care sa foloseasca avantajul mai multor procesoare, mai ales multiprocesoare pe scara foarte larga. => cele mai multe aplicatii de prelucrare paralela sunt rezultatul unor generatori automati de software ce dezvolta subsisteme paralele cu interfata secventiala: ex: baze de date, servere de fisiere, CAD etc. Probleme:
1. Un program paralel bun = performanta si eficienta pe multiprocesoare altfel, uniprocesoarele superscalare cu planificare dinamica, executie fara ordine si speculativa exploateaza paralelismului la nivelul instructiunilor, fara a fi nevoie sa rescriem programele pentru multiprocesoare.
2. Regia comunicatiilor creste exponential cu numarul de procesoare ex: construirea unei case de 1 persoana, de 10, de 100 sau de 1.000.000. 3. Cunosterea in detaliu a arhitecturii este esentiala pt a scrie aplicatii paralele => dependenta de arhitectura, lipsa de portabilitate 4. Legea lui Amdahl: un program trebuie paralelizat complet pentru a obtine o crestere liniara de performanta prin cresterea numarului de procesoare
Compaq ProLiant Digital AlphaServer 8400 HP 9000 K460 IBM RS/6000 R40 SGI Power Challenge Sun Enterprise 6000
Multiprocesoare single-bus
Procesor Procesor Procesor
Cache
Cache
Cache
Single bus
Memorie
Maxim: 2 - 32 procesoare.
I/O
Mai multe procesoare pot avea in cache copii ale unei date comune (partajate). Daca un procesar modifica o copie a unei date partajate din cache-ul propriu, atunci trebuie initiata o procedura pentru: - actualizarea datei in memoria principala si - invalidarea copiilor datei din celelalte cache-uri. Scopul acestei proceduri: mentinerea coerentei cache-urilor = toate cache-urile trebuie sa contine copii valide ale datelor din memoria principala.
Procesor
Tag spion
Tag spion
Tag spion
Memorie
I/O
Toate controloarele de cache monitorizeaza (spineaza) magistrala pentru a determina daca este accesat unul din blocurile partajate. Duplicarea tag-urilor pentru a usura compararea cu adresele spionate pe magistrala.
Invalid
(3) alt Proc read/write miss Proc write back (4) Proc write miss incarca bloc in cache
(6) Invalidare sau alt Proc are write hit pt acest bloc
Citire-numai (partajabil) (7) Proc read hit/miss pt miss, incarca alt bloc in cache peste cel actual
Citire/scriere (modificat)
Legenda culorilor: Stimuli de la proc. propriu Stimuli de la alte proc. Activitate pe magistrala
Neblocata? (= 0?) Da Incarca sa obtina zavorul prin swap citeste zavorul si-l trece in 1 (blocat)
Nu
Nu
Procesor
Procesor
Procesor
Cache
Cache
Cache
Memorie
Memorie Retea
Memorie
Cray Research T3E HP/Convex X-class Sequent NUMA-Q SGI Origin2000 Sun Enterprise 10000
- compuse din noduri multiprocesor (SMP) formate din 2-4 procesoare (cai).
- toate sistemele au si un spatiu de adrese partajat cu timp de acces neuniform, exceptie Sun, care are un spatiu de adrese partajat cu timp de acces uniform. - toate sistemele (exceptie Cray) sunt cache coerente HP, Sequent si SGI utilizeaza directoare pentru coerenta cache-urilor; Sun are magistrale pt adrese si switch-uri (retea) pt date => coerenta cache e asigurata prin snooping conventional pe magistralele de adrese. -traficul / legatura este maximul posibil, in realitate niciodata atins.
Memorie distribuita = impartita in module si distribuita fizic in spatiu in apropierea procesoarelor. Timpul de acces e mai mic la modulul mai apropiat; timp de acces neuniform (NUMA). in opozitie cu Memorie centralizata = timp de acces la memorie uniform (UMA).
Nota: Multiprocesoarele pot avea un singur spatiu de adresa si memorie distribuita fizic. Memoriile multiple private sunt de regula memorii distribuite fizic.
Pentru o performanta ridicata, comunicatiile trebuie minimizate printr-o alocare optima a blocurilor de cod si date la memoriilor locale.
Alocarea poate fi: - lasata pe seama programatorului sau compilatorului (care trebuie sa cunoasca foarte bine arhitectura sistemului => mai greu). - gestionata de sistemul de operare ajutat de functii hardware, printr-un al doilea nivel de coerenta, la nivelul memoriilor principale ale fiecarui procesor; - va permite o migrare a paginilor intre memoriile procesoarelor prin retea; - mecanisme inteligente de alocare.
Procesor
Procesor
Cache
Cache
Cache
Cache
Memorie Director
Memorie
Memorie Director
a.
Retea
b.
Retea
Multiprocesoarele conectate printr-o retea pot asigura coerenta utilizand directoarele in doua moduri: a. coerenta la nivel cache: data originala e intr-o memorie, iar copiile sunt replicate numai in cache-uri;
b. coerenta la nivel memorie: data e replicata in memorii si in cache-uri. - daca memoriile sunt coerente, datele pot fi si in cache; - daca data dintr-o memorie e invalidata, si blocurile corespunzatoare din cache trebuie invalidate.
Comparatie cost-performanta
Cost Retea Performanta Performanta pe unitate de cost
Nr de proc 2 4 8 16 32 2 4 8 16 32 2 4 8 16 32
Legenda:
- multiprocesoare conectate prin magistrala (UMA); - multiprocesoare conectate prin retea (NUMA).
Cluster-e
Cluster = grup de calculatoare legate in retele locale prin switch-uri (sau fibre channels = canale de fibra optica) de mare viteza care asigura rularea de aplicatii mari consumatoare de timp si resurse: - baze de date (distribuite), servere de fisiere, servere Web, simulari, multiprogramare etc. - software: MPI si PVM asigura un nivel software peste sistemele de operare care creaza o masina virtuala unica (multiprocesor) dintr-un cluster.
Nr max Nume de procesor proc. HP 9000 EPS21 64 PA-8000 =4x16 IBM RS/6000 HACMP 16 PowerPC 604 R40 =8x2 IBM RS/6000 SP2 512 Power2 SC =16x32 Sun Enterprise 60 UltraSPARC Cluster 6000 HA =30x2 Tandem NonStop 4096 MIPS R10000 =16x256 Himalaya S70000 Nume sistem Frecv proc. MHz 180 112 135 167 195 Dim max Trafic / memorie legatura GB MB/s 64 532 4 1024 60 1024 12 150 100 40 Nod Nr max de noduri 16 2 32 2 256
4-cai SMP 8-cai SMP 16-cai SMP 30-cai SMP 16-cai SMP
Note: - clustere formate din multiprocesoare cu 4 la 30 procesoare. - in general calculatoarele sunt de raft (off-the-shelf), nu proiectate special, dar proiectate pentru piata serverelor.
010
011
100
101
110
111 000 000 001 010 010 100 011 110 100 001 101 011 110 101 111 111
- k-subshuffle: - k-supershuffle:
Sk(x) = (bm ,..., bk+1, bk-1,..., b1, bk) Sk(x) = (bm-1, ..., bm-k+1, bm, bm-k, ..., b1)
000
001
010
011
100
101
110
111
000 000 001 100 010 010 011 110 100 001 101 101 110 011 111 111
- k-subfluture: - k-superfluture:
Bk(x) = (bm ,..., bk+1, b1, bk-1,..., b2, bk) Bk(x) = (bm-k+1, bm-1, ..., bm-k+2, bm, bm-k, ..., b1)
- fiecare nod e conectat la nodurile fata de care adresa sa 000 difera printr-un singur bit. ex: cub de ordinul 3 (m = 3).
001
010
011
100
101
110
111
k=0 000 001 001 000 010 011 011 010 100 101 101 100 110 111 111 110
k=1 000 010 001 011 010 000 011 001 100 110 101 111 110 100 111 101
k=2 000 100 001 101 010 110 011 111 100 000 101 001 110 010 111 011
0000 0001
0010
0011
0100 0101
0110 0111
11
011
1100
1101
1110 1111
1011
Implementare retele
1. Retele cu o singura etapa (single-stage) = de recirculare; 2. Retele multi-etapa (multi-stage). 1. Retele cu o singura etapa (single-stage) = de recirculare - iesirile sunt legate la intrari; - mai multi cicli => iesirile unui ciclu sunt intrari pentru urmatorul ciclu; - in fiecare ciclu se asigura alta functie de permutare => functii complexe. - descriere matematica a retelei: prin functiile de permutare ce le poate asigura ex: - inel unidirectional: RING = { I, SH } - inel bidirectional: NN = { SH-1, I, SH } - amestecare-schimb: SE = { S-1, E1-1, I, E1, S }
Implementare retele
2. Retele multi-etapa (multi-stage): asigura functii foarte complexe. = etape de comutare conectate prin retele de permutare si structura de control ... ... Boxe de comutare Retea de permutare ...
a) Boxe de comutare (switching): conecteaza 2 intrari cu 2 iesiri. 4 functii de comutare: directa, inversare, difuzare in jos, difuzare in sus.
0 1 2 3 4 5
0 31 1
21 2
2 3
1 12 5
4 22 6
2
32 3 4 33 5 6 34 7 3
4 5
2 13 6
1
3 5 7
1 23 3
6 7
3 14 7 1
5 24 7 2
6
7
Concluzii
De multe ori dezvoltarea unei inovatii poate aduce un salt prea mare pentru utilizatorii de calculatoare.
Acceptarea ideilor hardware necesita acceptarea de catre proiectantii de software; de aceea proiectantii hardware trebuie sa cunoasca problemele software. Si daca proiectantii software doresc masini bune, ei trebuie sa cunoasca mai multe despre hardware pentru a fi capabili sa comunica si sa influienteze inginerii hardware.
Timesha re d multiproce ssor N ot-C C -N U M A multiproce ssor
Evolutionary
M icroprogra mming
Virtual memory
C a che
R ISC
M a ssive S IM D
Pipe lining
R evolutionary