Sunteți pe pagina 1din 33

CAPITOLUL 9

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

Multiprocesoare conectate printr-o singura magistrala


Istoria calculatoarelor paralele incepe o data cu primul calculator. La inceputul anilor 1980, interesul pt multiprocesoare este reinoit, cauza: - cresterea gradului de integrare si scaderea costurilor au determinat => - microprocesoare mici si ieftine (incap mai multe pe o placa) - memorii mari cu timp de acces mic - memorii cache care reduc foarte mult traficul pe magistrala - mecanisme hardware au fost inventate pentru pastra consistenta cache-rilor si memoriilor => simplifica programarea. Nr. maxim de procesoare pe magistrala este determinat de: - traficul necesar fiecarui procesor - largimea de banda a magistralei (viteza maxima pe magistrala). Multiprocesoare de vanzare in 1997:
Nume Nr max de proc. 4 12 4 8 36 30 Nume procesor Pentium Pro Alpha 21164 PA-8000 PowerPC 604 MIPS R10000 UltraSPARC 1 Frecv proc. MHz 200 440 180 112 195 167 Dim max memorie GB 2 28 4 2 16 30 Trafic pe mag MB/s 540 2150 960 1800 1200 2600

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.

Coerenta cache-urilor multiprocesoarelor


Snooping (spionare) = cel mai popular protocol de mentinere a coerentei cache
Procesor Procesor

Procesor

Tag spion

Date si tag cache

Tag spion

Date si tag cache


Magistrala unica

Tag spion

Date si tag cache

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.

Coerenta cache-urilor multiprocesoarelor


Mentinerea coerentei are 2 componente: citirea si scrierea. - scrierea trebuie sa fie exclusiva (numai un procesor poate scrie la un moment dat) - citirea trebuie sa se produca pe o copie valida a datei din cache
Politici de spionare: Scriere-invalidare: - procesorul care scrie trimite un semnal de invalidare si adresa pe magistrala inainte de a schimba copia sa locala; - celelalte cache-uri verifica daca au o copie; daca au, o invalideaza; - procesorul care a scris poate modifica in continuare copia sa locala pana cand un alt procesor doreste sa citeasca sau sa scrie in blocul partajat, atunci procesorul care a scris trebuie sa salveze blocul din cache in memoria principala, pt ca celalalt sa poata incarca o copie valida. Scriere-actualizare: - procesorul care scrie intr-un bloc partajat, trimite o copie a noii date pe magistrala (write-broadcast); - toate copiile din celelalte cache-uri sunt actualizate; - o noua scriere, un nou broadcast => creste foarte mult traficul pe magistrala Scriere-invalidare e preferata (trafic redus pe magistrala, asemeni write-back).

Coerenta cache-urilor - probleme


Partajare falsa: in cazul blocurilor mari de cache, variabile diferite se pot gasi in acelasi bloc, dar intregul bloc este schimbat intre procesoare chiar daca ele acceseaza variabile diferite din acelasi bloc. Rezolvare: compilatoarele sa aloce in acelasi bloc variabilele puternic corelate. Mai multe procesoare vor sa scrie intr-un cuvant partajat in acelasi ciclu de ceas (concurenta la scriere): => arbitrul de magistrala decide cine primeste primul magistrala si acel procesor va invalida copiile din cache-urile celorlalte procesoare; => celelate procesoare vor avea cache-miss la scriere. Obs: arbitrul de magistrala forteaza o comportare secventiala la scriere a procesoarelor (accese intretesute) = model de consistenta secvential.

Protocol de coerenta cache-uri


Diagrama de stari a unui bloc de cache pentru protocolul scriere-invalidare: 3 stari: 1. Numai citire (partajabil): blocul de cache nealterat (identic cu cel din memorie), poate fi partajat cu alte procesoare; 2. Citire/scriere (modificat): blocul de cache a fost alterat (nu mai este identic cu cel din memorie), nu poate fi partajat; 3. Invalid: blocul de cache nu contine o data valida Schimbarea starii unui bloc de cache are loc la: read miss, write hit/miss. Read miss: schimba starea blocului in citire-numai (partajabil) din starea: - invalid (1) si incarca blocul din memoria principala; - citire/scriere (5) si scrie inapoi blocul vechi in memorie, iar peste el incarca blocul nou. - celelalte cache-uri monitorizeaza read miss pe magistrala si, daca au in cache o copie a acestui bloc in starea citire/scriere (modificat), atunci scriu blocul in memorie (write back) si trec in starea invalid (ar putea fi si citire-numai); se asigura astfel un bloc valid pt citire. Pt a scrie (write) intr-un bloc, procesorul obtine magistrala, trimite un semnal de invalidare cu tag-ul (adresa blocului) la celelate cache-uri, scrie in bloc si-l pune in starea citire/scriere (modificat); - celelalte cache-uri monitorizeaza magistrala si, daca au o copie a blocului, o invalideaza.

Protocol de coerenta - automatul finit


Diagrama de stari a unui bloc din cache pentru protocolul scriere-invalidare: (1) Proc read miss incarca bloc in cache

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

(8) Proc write hit/miss pt miss, write-back si incarca alt bloc

Sincronizarea prin utilizarea coerentei


Cerinta: sincronizarea proceselor care lucreaza la o sarcina comuna. - programatorii utilizeaza variabile zavor (semafoare) pt sincronizare => arhitectii de procesoare vor asigura mecanismul prin care un procesor obtine zavorul si operatia prin care inchide o variabila. - pt single-bus e usor: o singura cale la memorie => un singur proc are acces la memorie la un moment dat; - proc si magistrala trebuie sa asigure o operatie atomica de modificare (swap) prin care proc citeste zavorul (semaforul) si-l modifica (atomic = indivizibil). Zavorul (semaforul) are 2 stari: 0 = neblocat (liber); 1 = blocat (stop). Un proc citeste si testeaza starea zavorului pana cand zavorul este deblocat. In acest moment se declanseaza intrecerea intre procesoare pt a obtine zavorul. Toate procesoarele utilizeaza un swap atomic pt a citi si modifica zavorul. Arbitrul de magistrala decide care proc obtine magistrala (zavorul). Proc care obtine magistrala citeste starea 0 a zavorului si-l trece pe 1 (blocat). Celelalte procesoare sunt blocate in accesul la magistrala, iar cand au acces, citesc zavorul in starea 1 (blocat). Proc care a obtinut zavorul are acces la datele partajate pentru modificare. Cand termina trece zavorul in 0 si declanseaza din nou competitia. Analogie: O camera cu o singura usa cu zavor. Cand usa e deschisa poate intra o singura persoana care trage zavorul. Ceilalti asteapta pana cand se deschide din nou usa.

Sincronizarea prin zavoare - algoritm


Incarca variabila zavor Mecanismul de coerenta cache asig: - buclarea pe testul zavorului se face pe copia locala din cache (reduce traficul pe magistrala); - proc care deblocheaza zavorul scriind 0, invalideaza copiile locale din cache-urile celorlalte proc; - toate proc incearca sa citeasca zavorul, dar unul singur obtine magistrala, deci acces la zavor pentru modificare; - celelalte procesoare cand obtin magistrala gasesc zavorul blocat (=1)

Neblocata? (= 0?) Da Incarca sa obtina zavorul prin swap citeste zavorul si-l trece in 1 (blocat)

Nu

Nu

Succes? (= 0?) Am citit 0 cu instr swap? Da

Incepe actualizarea datei partajate Termina actualizarea datei partajate

Deblocare: trece zavorul in 0

Multiprocesoare conectate printr-o retea


Sistemele single-bus sunt atractive, dar limitate datorita incompatibilitatii cerintelor puse magistralei: viteza mare, intarziere mica, lungime mare. => nr max de proc conectate intr-un sistem comercial = 36 Multiprocesoarele conectate printr-o retea au fiecare memorie proprie (privata), iar reteaua este utilizata numai pentru comunicatiile interprocesor; - comunicatiile sunt explicite: prin send si receive

Procesor

Procesor

Procesor

Cache

Cache

Cache

Memorie

Memorie Retea

Memorie

Exemple de sisteme: Cray XMP si YMP, Sun Enterprise 10000.

Multiprocesoare conectate printr-o retea


Caracteristici ale sistemelor multiprocesor comerciale conectate printr-o retea
Nume sistem Nr max Nume de procesor proc. 2048 Alpha 21164 64 PA-8000 32 128 64 Pentium Pro MIPS R10000 UltraSPARC 1 Frecv proc. MHz 450 180 200 195 250 Dim max Trafic / Nod Topolomemorie legatura gie GB MB/s retea 512 1200 4-cai SMP tor 3-D 64 980 2-cai SMP 8 cai # si inel 128 1024 4-cai SMP inel 128 800 2-cai SMP cub 6 64 1600 4-cai SMP 16 cai #

Cray Research T3E HP/Convex X-class Sequent NUMA-Q SGI Origin2000 Sun Enterprise 10000

Note: - # = topologie crosbar (conexiuni incrucisate).

- 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.

Multiprocesoare conectate printr-o retea


Memorie partajata = un singur spatiu de adrese, comunicatii implicite prin load si store. in opozitie cu Memorii multiple private = spatii de adrese separate, comunicatii explicite prin send si receive.

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.

Adresarea in procesoarele paralele pe scara larga


Pt a permite o scalabilitate pe scara larga, multiprocesoarele conectate prin retea au memoria distribuita fizic, memorii private. Comunicatiile: proiectantii hardware pun la dispozitie functiile send si receive, care permit comunicatii explicite. - au avantajul ca permit optimizarea comunicatiilor de catre programator, dar cer mai multa regie (cod de program) si atentie din partea programatorului decat comunicatiile implicite cu load si store. => Adaugarea unui nivel software peste send si receive care sa ascunda reteaua de comunicatii si sa asigure un singur spatiu de adresa (virtual) si comunicatii implicite prin load si store = memorie partajata virtual (memorie distribuita partajata DSM): - creaza iluzia unei memorii mari, cu un singur spatiu de adrese, care invoca sistemul de operare pentru comunicatiile prin memoria partajata; - aceste comunicatii trebuie sa fie rare, transferul paginilor dureaza mult; - memoriile cache devin foarte importante pt a minimiza comunicatiile in retea; - apare din nou problema coerentei cache-urilor, dar snooping-ul nu mai merge; => protocoale bazate pe directoare pt coerenta cache-urilor.

Protocoale de coerenta bazate pe directoare


Un singur director logic care pastreaza starea fiecarui bloc din memorie: ex: care cache-uri pastreaza copii ale blocului, daca blocul a fost scris s.a. Intrarile in director pot fi distribuite => avantajele: - elimina gatuirile ce pot aparea in concurenta la o singura resursa; - permite o proiectare scalabila.

- starea unui bloc de memorie se gaseste intr-o singura locatie, cunoscuta.


- coerenta e asigurata astfel: cand un procesor scrie in copia sa locala din cache a unui bloc partajat, controlerul directorului trimite peste retea comenzi explicite fiecarui procesor care are o copie locala a blocului.

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.

Optiuni in asigurarea coerentei


Procesor Procesor

Procesor

Procesor

Cache

Cache

Cache

Cache

Memorie Director

Memorie Director 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.

Cluster-e vs. Multiprocesoare


C: Conectate la switch prin magistralele de I/O - mai lente; M: Conectate prin magistrale locale la memorie sau la retea - mai rapide. C: N masini = N copii ale sistemului de operare; un program are 1/N memorie; M: N procesoare, un singur sistem de operare; un program - toata memoria. C: Cost administrare mult mai mare (N masini independente); M: Cost administrare de N ori mai mic. C: Disponibilitate f mare: toleranta la defectari, reparabilitate - relativ usoare; M: Disponibilitate, toleranta la defectari, reparabilitate - la M conectate prin retea, dar cu efort ridicat din partea S.O.; la sistemele conectate prin magistrala, sunt foarte greu de asigurat. C: Expandabilitate foarte usoara pe o scara foarte mare; M: Expandabilitate mult mai limitata si mai complicata, chiar si cele conectate prin retea. C: Investitie mai mica in cercetarea hardware si mai mult in software => ieftine; M: Investitie foarte mare si in hardware si software, piata foarte mica pt M pe scara foarte larga => foarte scumpe. Compromis: Clustere formate din multiprocesoare cu mai putine procesoare.

Topologii de retele pt multiprocesoare si cluster-e


Nod: procesor + memorie Maxim: Nodurile sa aiba legaturi dedicate fiecare cu fiecare = retea complet conectata = crossbar (n2 legaturi, neblocabila, dar scumpa); Minim: Toate nodurile conectate printr-o singura magistrala (1 legatura, blocabila, dar foarte ieftina). Intre minim si maxim exista retele cu mai putine legaturi, dar neblocabile ex: clasa de retele Clos.

Performanta unei retele depinde de multi factori:


- latenta = timpul scurs intre emisia si receptia unui mesaj pe o retea neincarcata - viteza (largimea de banda) = nr max de mesaje / unitatea de timp; - intarzierile cauzate de concurenta la o portiune din retea;

- variatia de performanta datorata nepotrivirii algoritmului la arhitectura retelei (paternul comunicatiilor).

Topologii - functii de permutare


Permutarile = functii bijective simple prin care unei intrari i se asociaza o iesire si numai una. Rol important in proiectarea retelelor.

- fiecarui nod i se asoc. o adresa x = (bm,bm-1,...,b1), bi = bitul i, N = 2m noduri


f : M M (M = multimea nodurilor Mx, f functie permutare); Mx Mf(x) Reteaua de interconectare noduri poate fi descrisa ca permutari pe reprezentarile binare ale adreselor. Tipuri de permutari 1. Deplasare circulara (inel): SH(x) = (x + 1) mod N 000 001

010

011

100

101

110

111 000 000 001 010 010 100 011 110 100 001 101 011 110 101 111 111

2. Amestecare perfecta (perfect shuffle): S(x) = (bm-1,...,b1,bm)


000 001 010 011 100 101 110 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)

Topologii - functii de permutare


3. Fluture (butterfly): B(x) = (b1,

bm-1, ..., b2, bm)

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)

4. Permutarea identica: I(x) = x

Topologii - functii de permutare


4. schimbare (exchange) hiperCUB:

Ek(x) = (bm, ..., bk+1, bk, bk-1, ..., 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

Topologii - functii de permutare


- hipercubul poate fi definit inductiv: - hipercub de ord. 0 - are 20 = 1 nod; - hipercub de ord. 1 - are 21 = 2 noduri; - hipercub de ord. 2 - are 22 = 4 noduri, este alcatuit din 2 hipercuburi de ord. 2 - hipercub de ord. n+1 - are 2n+1 noduri, este alcatuit din 2 hipercuburi de ord. n n=1 n=2 n=3 n=4
0 1 00 01 10 000 001 010 100 101 110 111

0000 0001

0010
0011

0100 0101

0110 0111

11

011

100 000 001

110 1000 1001 1010

010 101 111 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 }

Selectie functie de permutare


O1 I1 O2 I2 . . Retea . . . . On In

In realitate reteaua are numai n terminale, recircularea se face intern.

I/O1 I/O2 . Retea . . I/On

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.

b) Functii de permutare: inel, amestecare, fluture, cub etc.


c) Structura de control a boxelor de comutare: - control la nivel intregii etape (aceeasi functie simultan toate boxele etapei); - control individual al boxelor (mai multa flexibilitate, hardware mai complex).

Reteaua Omega - retea multi-etapa


- nr de nivele (identice) = log2N ex. log28 = 3 - nr de boxe de comutare = N/2 ex: 8/2 = 4 - conexiuni de tip amestecare perfecta; - control independent al fiecarei boxe. 0 0 0 0 0 1 4
1 5 2 6 3 7 11 4 2 4 6

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

Revolutie vs. evolutie:

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

Nota: CC = cache coherency


C C - U MA multiproce ssor C C -N U M A multiprocessor

M e ssa ge -pa ssing multiproce ssor

Evolutionary

P a ra lle l proce ssing multiproce ssor

M icroprogra mming

Virtual memory

C a che

R ISC

M a ssive S IM D

Pipe lining

R evolutionary