3 MULTICALCULATOARE ORGANIZARE GENERALĂ TRANSFERUL DE MESAJE LA MULTICALCULATOARE PROCESOARE MASIV PARALELE (MPP) SISTEME CU TRANSPUTERE MULTICALCULATOARE COW
3.1 ORGANIZARE GENERALĂ Multicalculatoarele = sisteme MIMD (Multiple Instruction Multiple Data) comunicaţia - transfer de mesaje. => rezolvă limitări ale multiprocesoarelor: -scalabilitate redusă: multiprocesoare număr redus de procesoare: 64 de procesoare la ENTERPRISE 10000, 256 de procesoare la NUMA-Q => multicalculatoare număr mare de procesoare : 2048 de procesoare la Cray T3E, sau 9152 de procesoare la Intel/Sandia Option Red; -concurenţă crescută la memoria partajată => multicalculatoarele dispun de module de memorie proprii fiecărui procesor, comunicatie prin “send” şi “receive”.
Structura generală a unui multicalculator.
două mari categorii de multicalculatoare: -MPP (Massively Parallel Processors) procesoare masiv paralele; -COW (Cluster Of Workstations) clustere de staţii de lucru.
Structura de baza a unui nod: unde: -router: implementeaza protocolul de comunicatie de nivel scazut, continand switch-uri, buffere si o unitate de rutare si arbitrare; -canale externe: interconecteaza routerele si defineste topologia retelei de interconectare; -canale interne: conecteaza routerul la nodul de prelucrare local si implementeaza interfata HW fizica dintre ele.
Arhitectura de principiu a unui router cu un canal de intrare si un canal de iesire (conectare la nod): unde -LC („link controller”): controlor de legatura; -unitatea de routare si arbitrare: implementeaza algoritmul de routare si protocolul de control al fluxului de pachete, rezolvand conflictele intre cereri simultane pentru aceeasi legatura de iesire (algoritmi de tip „round-robin”, prioritati fixe sau primul sosit primul servit).
3.2 TRANSFERUL DE MESAJE LA MULTICALCULATOARE Formatul mesajelor Scheme de rutare a mesajelor Analiza latentei Canale virtuale. Blocare. Rezolvarea coliziunii pachetelor Algoritmi de rutare Operatiile „send” si „receive” Protocoale pentru transfer de mesaje Soluţii de interpretare a informaţiilor din tranzacţia prin reţea
Formatul mesajelor Mesajul = unitatea logica de comunicare intre noduri - numar arbitrar de pachete de lungime fixa (=> lungime variabila). Pachetul = unitatea de baza continand adresa de destinatie (pentru rutare) si un numar de secventa (pentru reasamblarea mesajului). Un pachet este impartit intr-un numar de flituri („flits” – flow control digits) de lungime fixa reprezentand: -informatii de rutare (R) specificand destinatia; -numar de secventa (S); -date (D).
Scheme de rutare a mesajelor Modelul temporal general pentru o comunicatie fara conflicte intre doua noduri la distanta: unde: -ts timpul de lansare („startup”) componenta comuna tuturor tehnicilor de comunicatie (sec); -tm intarzierea prin canal, intre doua routere adiacente (sec/flit); -tr timpul de decizie a routerului (sec); -tw intarziere de comutare a routerului dupa luarea deciziei de routare (sec/phit).
Se noteaza: -w latimea canalului: numarul de biti ai canalului fizic care pot fi transmisi simultan intre doua routere adiacente (dimensiunea unui phit); -μ rata canalului: rata de varf a canalului in biti/sec care se pot transfera pe fiecare fir intr-un canal fizic; -B largimea de banda a canalului: B= μ in phits/sec, sau se mai poate defini B=w μ in biti/sec; -M dimensiunea unui pachet (in flits); -d lungimea caii de routare (numar de canale).
Comutarea de circuite („circuit switching”) Comutarea de circuite („circuit switching”). Comunicatia intre sursa si destinatie are doua faze: faza de stabilire a circuitelor si faza de transmisie a mesajului. -se injecteaza o sonda de routare: rezerva calea de la sursa la destinatie, continand adresa de destinatie si informatii de control, avand dimensiunea de p phits; -sonda inainteaza catre destinatie prin routerele intermediare, rezervand calea (a); -calea este setata cand sonda a ajuns la destinatie; -in acest moment se transmite inapoi un flit de achitare „acknowledge” (b); -la receptia achitarii sursa trimite intregul mesaj la viteza maxima a caii, care formeaza un circuit hardware rezervat intregul timp cat dureaza transmisia mesajului (c); -circuitul este eliberat de catre nodul destinatie sau de ultimii biti din mesaj.
Intarzierea (mesaj de lungime M transmis la distanta d): tCS = d (tr + (p + 1)(tw + tm)) + M tm unde d (tr + p(tw + tm)) este timpul pentru sonda sa ajunga la destinatie; d (tw + tm) este timpul pentru intoarcerea achitarii; M tm este timpul de transmisie a mesajului. => circuitul opereaza ca un singur fir de la sursa la destinatie. Avantaj: mesaje lungi si rare. Dezavantaj: mesaje scurte si dese.
Routarea memoreaza si inainteaza („store-and-forward”) are ca unitate de baza pachetul. Fiecare nod utilizeaza un buffer de pachet. Pachetul este transmis de la un nod sursa la un nod destinatie printr-o secventa de noduri intermediare.
Aceasta tehnica se mai numeste si comutare de pachete: -mesajul impartit in pachete de lungime fixa (fiecare pachet constand din flituri incepand cu flitul header); -fiecare nod are buffere de intrare si de iesire pentru un intreg pachet; -fiecare pachet este routat individual de la sursa la detinatie; -un pas („hop”-salt): copierea intregului pachet dintr-un buffer de iesire in bufferul de intrare urmator; -deciziile de routare sunt luate de fiecare router intermediar numai dupa ce intregul pachet a fost complet memorat in bufferul de intrare.
Intarzierea (pachet de lungime M trasmis pe distanta d): tSF = d (tr + (tw + tm) M) la fiecare pas: -se iau decizile de routare tr ; -pachetul este transferat la routerul urmator (tw + tm) M ; -> se repeta de d ori. Avantaj: mesaje scurte si dese (o transmisie ocupa cel mult un canal din intreaga cale, dar bufferarea intregului pachet creste costul si scade viteza. Dezavantaj: intarzierea in comunicatie este proportionala cu produsul M d, => se utilizeaza routarea de cale minima si retele de diametru mic.
Routarea cu fortare virtuala („virtual cut-through”) -> cea mai sofisticata si scumpa tehnica de routare: -mesajele impartite in pachete iar fiecare router are un buffer pentru memorarea unui intreg pachet; -in loc sa se astepte ca intregul pachet sa fie bufferat, flitul header care intra in router este fortat in routerul urmator imediat ce s-a luat decizia de routare si canalul de iesire este liber (b); -fiecare flit urmator este bufferat cand ajunge in router, dar imediat este fortat catre routerul urmator daca canalul de iesire este liber (c); -in cazul in care headerul nu poate inainta el asteapta in routerul curent si toate fliturile urmatoare sunt receptionate, posibil astfel sa elibereze canalele ocupate pana atunci (d); -daca nu exista conflict de resurse pe ruta, pachetul este efectiv transmis in banda de asamblare prin routere succesive (e).
Intarzierea (pachet de lungime M transmis pe distanta d ): tVCT = d (tr +tw + tm) + max(tw , tm ) M Presupunere: nu exista penalizare de timp pentru acest mecanism de routare. Headerul ajuns la destinatie => ciclul benzii de asamblare pentru flituri este maximul dintre timpul de comutare si intarzierea intre routere (s-a presupus ca exista buffer de intrare si buffer de ieisre). Numai flitul header contine informatii de routare => fiecare flit urmator este simplu inaintat dupa canalul de iesire ca predecesorul sau => nu se poate efectua transmisia intretesuta sau multiplexata a unor pachete diferite peste un acelasi canal fizic.
Rutarea gaura de vierme („wormhole”) divizeaza pachetele in flituri mai mici. Se utilizeaza buffere de flituri in rutere hardware atasate nodurilor.
-nu se pot intretese sau multiplexa transmisii de pachete diferite, fara un suport arhitectural aditional; -daca headerul nu poate inainta (datorita ocuparii canalelor de iesire) => intregul lant de flituri este blocat, ocupand bufferele de flit din routerele de pe cale, blocand astfel alte posibile comuniatii.
tWH = d (tr +tw + tm) + max(tw , tm ) M Latenta (in lipsa conflictelor de comunicatie): tWH = d (tr +tw + tm) + max(tw , tm ) M (aceeasi ca in routarea cu fortare virtuala) -permite utilizarea de routere simple, rapide si ieftine (cea mai utilizata in masinile comerciale). -uneori routerele utilizeaza numai buffere de intrare. -dezavanaj: blocarea resurselor in cazul stoparii lantului de flituri. In cazul considerarii timpului de lansare („startup”) ts >> tm si tm ≈ tw ≈ tr. Se pot utiliza si unele formule simplificate: tSF = ts + d M tm tCS = tVCT = tWH == ts + d td + M tm unde td = tr + tw. Deoarece d td << M tm (dimensiune mare a mesajului, cateva sute de flituri), in situatiile fara conflict de comunicatie in cadrul tehnicilor VCT, CS si WH nu conteaza lungimea drumului, iar SF este senzitiva fata de distanta.
Varianta simpla de analiza a latentei: Se noteaza: -L: lungimea pachetului (biti); -B: largimea de banda a canalului (biti / secunda); -d: distanta de la nodul sursa la nodul destinatie (numar de canale traversate); -F: lungimea unui flit (biti). Latenta de comunicatie pentru mecanismul „store-and-forward”: iar pentru „wormhole”:
Diagramele de timp pentru cele doua mecanisme:
Canale virtuale. Blocare. Exemplu: patru canale virtuale care partajeaza un singur canal fizic.
Situatia de blocare de tip buffer („buffer deadlock”) intr-o retea „store-and-forward” apare datorita unei asteptari circulare:
Situatia de blocare de tip canal („channel deadlock”) intr-o retea „mesh” cu rutare „wormhole”, cand patru mesaje sunt simultan transmise, patru flituri de la cele patru mesaje ocupa canalele simultan.
Asteptarile circulare - graf dependenta de canal (nodurile = canale, arcele = relatiile de dependenta intre acestea). => Situatia de blocare se poate evita prin adaugarea a doua canale virtuale v3 si v4.
Rezolvarea coliziunii pachetelor Pentru transferul unui flit intre doua noduri adiacente sunt necesare: -buffer sursa continand flitul; -canal de comunicatie; -buffer de receptie. Problema coliziunii pachetelor are urmatoarele solutii de baza: 1) bufferare in routarea cu fortare virtuala:
2) blocare in rutarea „wormhole” pura: 3) descarcare si retransmisie: pachetul 2 este abandonat si retransmis ulterior (exemplu: in reteaua BBN Buterfly).
4) deturnare: pachetul 2 este deturnat pe un alt canal => poate sa duca la o risipa de resurse (pachetul necesita mai multe canale pentru a ajunge la destinatie (exemplu Connection Machine, Delcor HEP).
Algoritmi de rutare Tipuri de comunicatie In retelele de multicalculatoare exista doua mari categorii de comunicatie: a) comunicatie unu-la-unu („unicast”) se transmit mesaje punct-la punct; surse pachete destinatii pachete cai de rutare Tipuri: -comunicatie de pereche singulara (izolata): nu exista probleme de deadlock, congestie, etc. Se pot utiliza algoritmi de calea cea mai scurta; -mai multe comunicatii unu-la-unu simultan: mai multe perechi de noduri schimba informatie simultan; -permutare: fiecare nod este sursa pentru un mesaj si destinatie pentru alt mesaj in acelasi timp (impune o permutare intre noduri).
b) comunicatii colective: -comunicatia unu-la-mai multi sau difuziunea (aceeasi informatie „one to many multicast”, iar daca informatia trimisa la noduri difera „scatter”); -comunicatia unu-la-toti („broadcast”); -comunicatia mai-multi-la-unul („gather”); -comunicatia mai multi la mai multi („many-to-many conference”, „many-to-many broadcast”, „scatter-gather”). Exista si unele operatii speciale : -compactarea datelor sau impachetarea; -RAW („random-access write”) emuland scrierea concurenta CW de la modelul teoetic PRAM pentru p procesoare; -RAR („random-access read”) emuland citirea concurenta CR de la modelul PRAM pentru p procesoare.
Solutii de routare: Routarea distribuita: functia de routare calculata in routere sau noduri pe masura ce pachetele se deplaseaza prin retea. -header-ul contine numai adresa de destinatie utilizata de router pentru selectarea canalelor de iesire; -utilizata in topologii regulate si simetrice (toate routerele utilizeaza acelasi algoritm de routare). Routarea dupa sursa: nodurile sursa predetermina complet caile de routare inainte de plasarea pachetelor in retea (sistemele IBM SP-2). Routarea hibrida (multifaza): nodul sursa precalculeaza adresele numai pentru cateva noduri intermediare, iar caile precise dintre ele sunt determinate intr-o maniera distribuita de catre routere (nCUBE-2). Routarea centralizata: functia de routare determinata de un controlor centralizat (tipic sistemele SIMD).
Implementarea algoritmilor de routare: viteza => implementare hardware (mai ales pentru routarea distribuita). Abordari: -masina cu stari finite; -tabela de translatare : nodurile si/sau routerele sursa pastreaza niste tabele de routare. Pentru N noduri in retea => tabela necesita O(N) intrari. Tabelele de routare nod sursa: specificarea completa pentru intreaga cale. Routarea distribuita: tabelele specifica canalul (canalele) de iesire corespunzand fiecarei destinatii. Tabelele de routare: -statice; -dinamice (exemplu: reteaua Myrinet permite recalcularea automata a tabelelor de routare de fiecare data cand se modifica reteaua de interconectare, de exemplu prin stergerea unui nod).
Routarea pachetelor se poate face pe baza unor algoritmi: -algoritmi de routare deterministi: calea de comunicatie este complet determinata dupa adresele sursei si destinatiei (inca din start), independent de conditiile retelei. Algoritm de routare determinist genereaza intotdeauna aceeasi cale intre o sursa si o destinatie (eventual calea cea mai scurta). -algoritmi de routare fara memorare („oblivious”), in raport de starea traficului din retea: este considerata numai adresa de destinatie, la fel ca la routarea determinista. Orice routare determinista este fara memorare, dar nu orice routare fara memorare este determinista. De exemplu pot exista mai multe cai de lungime minima intre sursa si destinatie, iar algoritmul de routare selecteaza o cale fie aleator fie ciclic. Algoritmii fara memorare nedeterministi pot distribui uniform traficul in situatiile in care solutiile adaptive sunt prea scumpe. -algoritmi de routare adaptivi: utilizeaza informatii despre traficul in retea si / sau stari ale canalelor. Calea depinde de conditiile retelei, fiind posibile cai alternative. Routarea adaptiva poate fi descompusa in doua functii distincte: -functia de routare: furnizeaza un set de canale posibile de iesire; -functia de selectie a iesirii: selecteaza unul din canalele libere de iesire pe baza informatiilor locale de stare.
Din p.d.v. al minimalitatii cailor de routare: -algoritmi greedy (sau minimali, directi, calea-cea-mai-scurta): fiecare decizie de routare aduce pachetul mai aproape de destinatie. De obicei algoritmii deterministi si algoritmii fara memorare sunt de tip greedy. -algoritmi nongreedy (sau neminimali, indirecti, „misrouting”): pot furniza canale care sa indeparteze pachetul de destinatie. Aici se incadreaza exclusiv algoritmii adaptivi. In loc sa se astepte in caz de blocare, pachetul este intors in ideea plasarii intr-o regiune libera, cand poate fi reluat un algoritm greedy. Consuma resurse aditionale.
Routare pe o retea liniara Routare liniara de pachete (pe o linie sau coloana):
Scheme de indexare a procesoarelor in retelele mesh : Routare pe retele mesh Scheme de indexare a procesoarelor in retelele mesh : 1) Sortare pe randuri in ordine crescatoare („row-major”) 2) Sortare pe randuri tip sarpe („snakelike row major”)
3) Sortare amestecata pe randuri („shuffled row-major”) 4) Sortare de proximitate („proximity order”).
Solutii de comunicatie intre procesoare in retelele mesh: utilizarea unor registre virtuale locale.
Algoritm „shearsort” pentru sortare intr-un mesh cu r randuri. pentru i=1,log2r executa sorteaza randurile in ordine tip sarpe sorteaza coloanele sus-jos daca (ordonare tip sarpe) atunci sorteaza randurile in ordine tip sarpe altfel sorteaza pe randuri crescator
Timpul necesar pentru executia algoritmului: unde p este numarul total de noduri din retea (reateaua poate sa fie si dreptunghiulara), iar pentru o retea mesh de dimensiune timpul necesar este:
Exemplu.
Routarea pe baza tabelei de translatare cu interale Routarea pe baza tabelei de translatare cu interale. O tabela simpla de translatare pentru o retea cu N noduri are dimensiunea O(N). Dimensiunea tabelei se poate micsora in cazul routarii cu intervale (o singura intrare in tabela per canal de iesire: fiecare intrare in tabela contine un interval de adrese de destinatie, specificat prin doua margini) Exemplu: tabelele de routare pentru cateva noduri (1,5,9) intr-o retea mesh:
Rutare XY intr-o retea mesh 2D
Apar situatii de aglomerare (suprasolicitare) a conexiunilor (bufferelor din anumite noduri). => Rezolvarea: algoritm de routare adaptiv => descongestionarea traficului.
Routare E-cub intr-un hipercub. -n-cub cu N = 2n noduri; -fiecare nod fiind codificat binar: b = bn-1 bn-2 ... b1 b0 -s = sn-1 sn-2 ... s1 s0 -> d = dn-1 dn-2 ... d1 d0 -n dimensiuni sunt notate i = 0, 1, 2, ... , n-1 (i -> bitul i din adresa de nod); -v nodul curent de pe ruta.
r ← s d // calculeaza vectorul de directie v ← s pentru i = 0, n-1 executa daca ri = 1 atunci v ← v 2i //altfel v ramane neschimbat
Exemplu: routare E-cub intr-un hipercub 4D. Se considera n = 4, s = 0110, d = 1101. r = r3r2r1r0 = s d = 0110 1101 = 1011 initial v = s = 0110 i = 0 => r0 = 1 => v = v 20 = 0110 0001 = 0111 i = 1 => r1 = 1 => v = v 21 = 0111 0010 = 0101 i = 2 => r2 = 0 => v = v = 0101 i = 3 => r3 = 1 => v = v 23 = 0101 1000 = 1101
Algoritmi de routare multicast si broadcast Parametrii de eficienta: -traficul de canal (la un moment dat sau pe un interval de timp) = numarul de canale utilizate pentru transferul mesajului implicat; -latenta de comunicatie = timpul cel mai lung de livrare a unui pachet. => pentru trafic minim nu se obtine latenta minima si invers!
Exemplu: multicast pe un sistem retea mesh 3x4: s -> di, i = 1,2, Solutii: a) implementare cu cinci comunicatii unu-la-unu: => trafic = 13, latenta (distanta) = 4.
b) multicast cu replicarea pachetului in fiecare nod intermediar (copii multiple ale pachetului => scaderea semnificativa a traficului). => solutie specifica mecanismului „store and forward” => trafic = 7, latenta =4.
c) multicast pentru mecanism „wormhole”. => trafic = 6, latenta = 5.
Exemplu: broadcast unu-la-toate utilizand un arbore cu 4 niveluri => latenta minima si trafic minim.
Exemplu: broadcast pe un n-cub utilizand un arbore de acoperire (“spanning tree”) pentru a atinge toate nodurile cu o latenta maxima n. Aplicatie pentru n = 4 si nodul sursa = 0000. Algoritmul: Pas 1) de la nivelul 0 se obtin n fii (4 fii) prin inversarea cate unui bit (fiu 0 – bit 0, fiu – bit 1, ...). Pas 2) Fiecare fiu k are k succesori, obtinuti prin inversarea cate unui bit 0, 1,..., k-1. Astfel: fiu 0 => 0 succesori; fiu 1 => 1 succesor, inversarea bit 0 => fiu 0; fiu 2 => 2 succesori, inversarea bit 0 => fiu 0; inversarea bit 1 => fiu 1; . . . . . . . . . . . . . . . . . . . . . . . . . . . . pana cand pe ultimul nivel un singur nod nu are niciun succesor.
Operatiile „send” si „receive” Operaţiile de comunicaţie la nivelul utilizatorului: -send specifică un buffer local de date care trebuie trimis şi un proces de reccepţie pe o maşină la distanţă; -receive specifică un proces care trimite date şi un buffer local în care se vor plasa aceste date.
Primele maşini cu transfer de mesaje -> primitive hardware apropiate de send şi receive la nivel utilizator. => un nod era conectat la un set fix de vecini, într-o reţea regulată de legături punct la punct cu buffere FIFO.
Soluţie mai perfecţionata: dispozitive de acces direct la memorie (DMA – Direct Memory Access) => operaţii send fără blocare. => suport pentru comunicaţia între oricare procesoare (nu numai vecine) - funcţii de routare în hardware => routere.
IBM SP-2 -maşină paralelă scalabilă cu staţii de lucru RS6000.
Intel Paragon nod - multiprocesor simetric (SMP)
Protocoale pentru transfer de mesaje => operaţiile de transfer de mesaje de la nivel utilizator -> primitive maşină de tranzacţie în reţea 1) Protocol sincron pentru transfer de mesaje
2) Protocol asincron (optimist) pentru transfer de mesaje
3) Protocol asincron (conservativ) pentru transfer de mesaje
Soluţii de interpretare a informaţiilor din tranzacţia prin reţea 1) Nu există interpretare a tranzacţiei mesajului: mesajul = secvenţă de biţi care se transferă “orb” în memorie prin DMA (Direct Memory Access) fizic sub controlul SO.
Sisteme: nCUBE 10, nCUBE/2, Intel iPSC, iPSC/2, iPSC/860, Delta, Ametek, IBM SP-1) şi majoritatea intefeţelor de reţea locală LAN (Local Area Network). => hardware simplu; abstractizarea comunicaţiei utilizator foarte generală; costuri de prelucrare mai mari.
Exemplu: sistemul nCUBE/2
Configuraţia maximă nCUBE/2 -> 8096 de noduri:
2) Transfer de mesaje de la nivel utilizator la nivel utilizator fără intervenţia S.O.
Arhitectura tipică la nivel utilizator:
Exemplu: sistemul Thinking Machine CM-5 (reţea - arbore):
3) Interpretarea mesajelor prin software pe un procesor de comunicaţie dedicat (procesor de mesaje). Exemplu: Intel Paragon.