330 likes | 484 Views
Arkitektura Paraleloak. 4. Prozesuen Sinkronizazioa SMP Konputagailuetan. - Sarrera - Elkarrekiko esklusioa - Gertaeren bidezko sinkronizazioa - Sinkronizazio-hesiak. Arkitektura Paraleloak. IF - EHU. Pi. Pj. ... FLD F4, A(R0). ... FST A(R0) ,F2. ?. Sarrera.
E N D
Arkitektura Paraleloak 4.Prozesuen Sinkronizazioa SMP Konputagailuetan - Sarrera - Elkarrekikoesklusioa - Gertaerenbidezkosinkronizazioa - Sinkronizazio-hesiak Arkitektura Paraleloak IF - EHU
Pi Pj ... FLD F4,A(R0) ... ... FST A(R0),F2 ... ? Sarrera • SMP konputagailuetako memoria partekatua da, eta prozesuak aldagai partekatuen bidez komunikatzen dira. Aplikazio gehienetan, aldagai horien erabilera sinkronizatu egin behar da, programaren esanahia zehatza izan dadin. Adibidez:
Pi Pj ... LD R1,KONT ADDI R1,R1,#1 ST KONT,R1 ... ... LD R1,KONT ADDI R1,R1,#1 ST KONT,R1 ... Sarrera • Eta zer gertatuko da kasu honetan (KONT = 0)? LD..ADDI.......ST KONT = 1 !! LD....ADDI.....ST
Sarrera • Memoriako atzipenatomikoak (interferentziarik gabekoak) behar ditugu prozesuak sinkronizatu ahal izateko. Bi motako beharrak: - sekzio kritikoak elkarrekiko esklusioan exekutatu behar diren kode zatiak (prozesu bakar bat aldi berean). - gertaeren bidezko sinkronizazioa puntutik puntura→ gertaerak (ekoizle/kontsumitzaile) globala → hesiak
Sarrera • Prozesuak zain geratuko dira zerbait gertatu arte; hau da, denbora galdu egingo da. Denbora-tarte bat itxaroteko: -- itxarote aktiboa -- blokeoa Sinkronizazio-mekanismoen ezaugarriak: - latentzia txikia - trafiko mugatua - hedagarritasun ona - memoriako kostu txikia - zuzentasuna
Elkarrekiko esklusioa • Ez da prozesadore bat baino gehiago onartzen, aldi berean, kode zati jakin bat (sekzio kritikoa) exekutatzen. Sekzio kritikoaren exekuzioa kontrolatzeko: - sarrailak: 0, irekita - 1, itxita -lock - unlockfuntzioak: lock(SAR) aztertu sarraila; irekita badago, itxi eta igaro sekzio kritikoa exekutatzera; bestela, zain geratu sarraila ireki arte. unlock(SAR) ireki sarraila.
lock(SAR); unlock(SAR); sekzio kritikoa Elkarrekiko esklusioa lock: LD R1,SAR BNZ R1,lock ADDI R2,R0,#1 ST SAR,R2 RET ... kont ++ ; ... • RMW motako aginduatomikoak behar ditugu. ? unlock: ST SAR,R0 RET
T&S - Swap 1.1Test&Set ▪T&S R1,SAR R1:=MEM[SAR]; MEM[SAR]:=1; lock: T&S R1,SAR BNZ R1,lock RET unlock: ST SAR,R0 RET
T&S - Swap 1.2Swap ▪SWAP R1,SAR R1 <--> MEM[SAR]; lock: ADDI R1,R0,#1 l1: SWAP R1,SAR BNZ R1,l1 RET unlock: ST SAR,R0 RET
T&S - Swap Trafikoa SMP sistemetan, biziki garrantzitsua da ahalik eta trafiko gutxien sortzea. ADI: sarraila –SAR– aldagai partekatua da. T&S aginduak beti idazten du sarrailan, itxita dagoenean ere; beraz, sarraila duen datu-blokea baliogabetu egin behar da, behin eta berriz. Ondorioz, datu-trafiko asko sortuko da prozesuak sekzio kritikoan sartzeko zain dauden bitartean, sarrailaren datu-blokea transmititzen.
SK x x [TSBRQ x [TSBRQ.......... xBRQ....... TS/INV] x [TSBRQ................... TS/INV] xBRQ......... [TSBRQ............................ x TS/INV] xBRQ... T&S – Swap: trafikoa P0 SKan dago BRQ = blokea eskatu / x = baliogabetuta / bus-kontrola = FIFO P0 P1? P2? P3? P4? S=0,INV TS/INV] [TS.. [TS.. TS/INV] [TS.. [TS... behin eta berriz!
T&S with backoff Hobekuntzak trafikoa murrizteko 1Test&Set with backoff lock: T&S R1,SAR BNZ R1,zain RET zain: CALL ITXOIN [egokitu itx-denb.] JMP lock Sarraila itxita badago, ez saiatu behin eta berriz sartzen: utzi denbora tarte bat berriro ere saiatu baino lehen. Itxarote-denbora esponentziala izatea egokia ohi da: t0 = k; t1 = k × c; t2 = k × c2; ...
Test-and-Test&Set Hobekuntzak trafikoa murrizteko 2Test-and-Test&Setprozedura Banatu lock eragiketa bi zatitan: a. irakurri sarraila irekita aurkitu arte (LD); b. eta, orduan, saiatu sarraila modu atomikoan ixten (T&S). lock: LD R1,SAR BNZ R1,lock T&S R1,SAR BNZ R1,lock RET
SK x x x x x LD[TS....... BRQ LD...... TS/INV][LD.. x BRQ..... LD[TS....... BRQ... x BRQ x BRQ........ TS/INV][LD.. x BRQ. LD... BRQ....... LD[TS... TS/INV]LD......... x BRQ............... BRQ........... LD[TS. Test-and-T&S: trafikoa P0 SKan dago BRQ = blokea eskatu / x = baliogabetuta / bus-kontrola = FIFO P0 P1LD P2LD P3LD P4LD S=0,INV • Datu-trafikoa (datu-blokeak) • prozesubatSKrasartzeko → P + (P-1) + (P-2) • SKtikateratzeko → 1 • guztira → 3P - 2 P proz. → P(3P-1)/2 TS/INV]
LL – SC 2.1Load Locked / Store Conditional - eragiketa atomikoa bi zatitan banatu - hardwareko adierazle bat atomikotasuna bermatzeko ▪LL R1,SAR R1:=MEM[SAR]; SinL[helb]:=SAR; SinL[adi]:=1; ▪SC SAR,R1 baldin (SinL[helb,adi]=SAR,1) MEM[SAR]:=R1; SinL[adi]:=0; proz. guztietan (INV); R1:=1; (idatzi da) bestela R1:=0; (ez da idatzi)
behin bakarrik sortzen da trafikoa: sekzio kritikora sartzean; gainerako kasuetan, ez da idazten! LL – SC 2.1Load Locked / Store Conditional lock: ADDI R2,R0,#1 l1: LL R1,SAR BNZ R1,l1 ... SC SAR,R2 BZ R2,lock RET unlock: ST SAR,R0 RET
SK x x x x BRQ LL(1)[SC.... SC /INV] SC]LL............ LL(1)[SC...... (0)x BRQ BRQ..... SC]LL....... BRQ........ LL(1)[SC.. (0)x BRQ.... SC]LL..... LL(1)[SC. (0)x BRQ......... BRQ............ LL – SC: trafikoa P0 SKan dago BRQ = blokea eskatu / x = baliogabetuta / bus-kontrola = FIFO P0 P1LL P2LL P3LL P4LL S=0,INV • Datu-trafikoa (datu-blokeak) • prozesubatSKrasartzeko → P + (P-1) • SKtikateratzeko → 0 • guztira → 2P - 1 P proz. → P2
C&S 2.2Compare&Swap ▪C&S R1,R2,SAR baldin(R1=MEM[SAR]) MEM[SAR]<-->R2; lock: ADDI R2,R0,#1 l1: C&S R0,R2,SAR BNZ R2,l1 RET
Fetch&OP 3Fetch&Op RMW motako agindu-familia bat, eragiketa jakin sinple batzuk atomikoki egiteko; ohikoenak: ▪Fetch&Incr R1,ALD (edo Fetch&Dcr) R1 := MEM[ALD]; MEM[ALD] := MEM[ALD] + 1; ▪Fetch&Add R1,R2,ALD R1 := MEM[ALD]; MEM[ALD] := MEM[ALD] + R2;
Txartelak Hobekuntzak trafikoa murrizteko 1Txartelak (tickets) Ideia: sekzio kritikorako sarrerak ordenatzea. Sarrailaren ordez, bi sinkronizazio-aldagai: txanda (nori dagokio SKra sartzea) eta txartela (zure txanda-zenbakia). Aurrena, txartela eskuratu, eta gero zain geratu txanda heldu arte. > Txartela lortzeko: tx: LL R1,TXARTELA ADDI R2,R1,#1 SC TXARTELA,R2 BZ R2,tx F&I R1,TXARTELA
Txartelak Hobekuntzak trafikoa murrizteko 1Txartelak: lock eta unlock funtzioak lock: F&I R1,TXARTELA itx: LD R2,TXANDA SUB R3,R1,R2 BNZ R3,itx RET unlock: LD R1,TXANDA ADDI R1,R1,#1 ST TXANDA,R1 RET Trafikoa: - txartela eskuratzen denean - txanda aldagaia eguneratzen denean adi: balizko gainezkatzeak!
3 prozesu zain daude 0 i i+1 0 1 1 0 1 1 1 1 1 SB INDIZEA: itxaroteko hurrengo posizioa Sarraila-bektoreak Hobekuntzak trafikoa murrizteko 2Sarraila-bektoreak Ez erabili TXANDA aldagai partekatua, baizik eta sarraila pribatu bat prozesu bakoitzeko. Prozesu bakoitzak hurrengoari abisatzen dio. 1 SKan dagoen proz.
Sarraila-bektoreak Hobekuntzak trafikoa murrizteko 2Sarraila-bektoreak lock: F&IR1,INDIZEA itx: LD R2,SB(R1) BNZ R2,itx ST NIRE_IND,R1 RET unlock: ADDI R2,R0,#1 LD R1,NIRE_IND nirea itxi: ST SB(R1),R2 ADDI R1,R1,#1 hurr. ireki:ST SB(R1),R0 RET Trafikoa: behin bakarrik, sarraila-bektoreko osagaiak eguneratzean (adi! partekatze faltsua eta balizko gainezkatzeak).
P0 P1LD.. P2LD.... P3LD.... P4LD.... SK SK x x x x LD x BRQ LD BRQ LD....... BRQ..... LD... BRQ......... LD... BRQ............ Trafikoa P0 SKan dago BRQ = blokea eskatu / x = baliogabetuta / bus-kontrola = FIFO Txartela/Txanda Sarraila-bektoreak P0 P1LD P2LD P3LD P4LD SB(i+1)=0,INV TX++,INV • Datu-trafikoa (datu-blokeak) • Txartelak → 1 + P → P(P+3)/2 • Sarraila-bektoreak → 1 + 1 + 1 → 3P
Laburpena Sekzio kritikora sartzeko trafikoa (8 prozesadoreko SMP bat; kasurik txarrena: P = 7 prozesadore sekzio kritikora sartzeko zain daude.) T&S (mugatugabea) Test-and-Test&Set P(3P-1)/2 70 bloke LL - SC P2 49 bloke Txartelak P(P+3)/2 35 bloke Sarraila-bektoreak 3P 21 bloke
while(adi==0){}; adi = 1; Gertaerak • 1Puntutik punturako sinkronizazioa gertaeren bidez • Ohiko sinkronizazioa ekoizlearen eta kontsumitzaile-aren artean, adierazle edo flag baten bidez. P1(ekoizlea)P2 (kontsumitzailea) X = F1(Z); Y = F2(X); post(adi); wait(adi); post(adi,i); wait(adi,i);
H H H H H H H H Hesiak • 2Hesien bidezko sinkronizazioa Sinkronizazio globala: prozesu multzo bat sinkronizatzen da exekuzioarekin jarraitu baino lehen. Hesia antolatzeko datu-egitura: struct hesi_egitura { int sar ; SKaren sarraila int kont ; zenbat heldu diren int egoera ; 0 itxita - 1 irekita }
Hesiak Aurrenak hesia itxi behar du; azkenak, ireki. • Hesi sinple bat(H, hesi_egitura motako struct bat) HESIA (H,P) { LOCK (H.sar); if (H.kont == 0) H.egoera = 0; H.kont++; nire_kont = H.kont; UNLOCK (H.sar); if (nire_kont==P) { H.kont= 0; H.egoera = 1; } else while (H.egoera== 0) {}; }
aldagai pribatua Hesiak • Hesi berrerabilgarria. “Hesia irekita” adieratzen duen balioa ez da beti bera: bi balioren artean txandakatzen da. HESIA (H,P) { irt_bal = !(irt_bal); LOCK (H.sar); H.kont++; nire_kont = H.kont; UNLOCK (H.sar); if (nire_kont==P) { H.kont = 0; H.egoera = irt_bal; } else while (H.egoera != irt_bal); }
Hesiak • Eraginkortasuna: datu-trafikoa Partekatze faltsua saihesteko, demagun sar, kont eta egoera aldagaiak datu-bloke desberdinetan daudela. P prozesuko hesi batean, honako datu-bloke hauek eskatuko ditu Pi prozesadoreak: - sar aldagai duena, lock funtzioa exekutatzean. - kont aldagaiarena, gehitu ahal izateko. - egoera aldagaiarena, bitan, itxarote-begiztaren hasieran eta bukaeran. >> guztira, 4P (hesian sartzeko lehiarik gabe)
Laburpena > Prozesu paraleloak sinkronizatu egin behar dira (maiz), dela sekzio kritikoak antolatzeko, dela prozesu multzo baten exekuzioa “bateratzeko”. > Sinkronizazioak ahalik eta trafiko gutxien sortu behar du, eta ahalik eta azkarren bete behar da. > Agindu bereziak, atomikoak, behar dira sekzio kritikoak gauzatzeko: T&S (sinpleena) edo LL-SC bikotea. Hardwarearen laguntza behar da atomikotasuna bermatzeko.
Laburpena >T&S soil bat (edo, hobeto, LL/SC bikotea) nahikoa da sekzio kritiko bat kudeatzeko, baldin eta lehiarik ez badago. Bestela, trafikoa murriztuko duen estrategiaren bat erabili behar da: test-and-t&s, txartelak, sarraila-bektoreak... > Ekoizlea eta kontsumitzailea sinkronizatzeko, nahikoa da adierazle bat erabiltzea (aldagai partekatua). >Sinkronizazio-hesiak erabili behar dira aplikazio paraleloen prozesuak exekuzioaren puntu jakin batera heldu direla ziurtatzeko. Aukeran, behin eta berriz erabil daitezkeen hesiak dira egokienak.
Arkitektura Paraleloak IF - EHU P. Sink. | Laburpena >T&S soil bat (edo, hobeto, LL/SC bikotea) nahikoa da sekzio kritiko bat kudeatzeko, baldin eta lehiarik ez badago. Bestela, trafikoa murriztuko duen estrategiaren bat erabili behar da: test-and-t&s, txartelak, sarraila-bektoreak... > Ekoizlea eta kontsumitzailea sinkronizatzeko, nahikoa da adierazle bat erabiltzea (aldagai partekatua). >Sinkronizazio-hesiak erabili behar dira aplikazio paraleloen prozesuak exekuzioaren puntu jakin batera heldu direla ziurtatzeko. Aukeran, behin eta berriz erabil daitezkeen hesiak dira egokienak. ez ahaztu azterketa, urriaren 27an