La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

4. Prozesuen Sinkronizazioa SMP Konputagailuetan

Presentaciones similares


Presentación del tema: "4. Prozesuen Sinkronizazioa SMP Konputagailuetan"— Transcripción de la presentación:

1 4. Prozesuen Sinkronizazioa SMP Konputagailuetan
Arkitektura Paraleloak IF - EHU 4. Prozesuen Sinkronizazioa SMP Konputagailuetan - Sarrera - Elkarrekiko esklusioa - Gertaeren bidezko sinkronizazioa - Sinkronizazio-hesiak

2 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: ... FST A(R0),F2 FLD F4,A(R0) Pi Pj ?

3  Eta zer gertatuko da kasu honetan (KONT = 0)?
Sarrera  Eta zer gertatuko da kasu honetan (KONT = 0)? ... LD R1,KONT ADDI R1,R1,#1 ST KONT,R1 Pi ... LD R1,KONT ADDI R1,R1,#1 ST KONT,R1 Pj LD..ADDI ST KONT = 1 !! LD....ADDI.....ST

4 Sarrera  Memoriako atzipen atomikoak (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

5  Sinkronizazio-mekanismoen ezaugarriak:
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

6 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 - unlock funtzioak: lock(SAR) aztertu sarraila; irekita badago, itxi eta igaro sekzio kritikoa exekutatzera; bestela, zain geratu sarraila ireki arte. unlock(SAR) ireki sarraila.

7 ? Elkarrekiko esklusioa  RMW motako agindu atomikoak behar ditugu.
unlock(SAR); lock(SAR); ... kont ++ ; lock: LD R1,SAR BNZ R1,lock ADDI R2,R0,#1 ST SAR,R2 RET sekzio kritikoa ? unlock: ST SAR,R0 RET  RMW motako agindu atomikoak behar ditugu.

8 T&S - Swap 1.1 Test&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

9 T&S - Swap 1.2 Swap ▪ SWAP R1,SAR R1 <--> MEM[SAR];
lock: ADDI R1,R0,#1 l1: SWAP R1,SAR BNZ R1,l1 RET unlock: ST SAR,R0 RET

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

11 T&S – Swap: trafikoa behin eta berriz! SK P0 P1 ? x P2 ? P3 ? P4 ?
P0 SKan dago BRQ = blokea eskatu / x = baliogabetuta / bus-kontrola = FIFO P0 P1 ? P2 ? P3 ? P4 ? S=0,INV x SK [TS BRQ [TS BRQ [TS BRQ [TS BRQ x TS/INV] TS/INV] [TS.. x BRQ TS/INV] [TS.. x BRQ... TS/INV] [TS.. x BRQ TS/INV] [TS... behin eta berriz!

12  Hobekuntzak trafikoa murrizteko
T&S with backoff  Hobekuntzak trafikoa murrizteko 1 Test&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; ...

13  Hobekuntzak trafikoa murrizteko
Test-and-Test&Set  Hobekuntzak trafikoa murrizteko 2 Test-and-Test&Set prozedura 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

14 Test-and-T&S: trafikoa
P0 SKan dago BRQ = blokea eskatu / x = baliogabetuta / bus-kontrola = FIFO P0 P1 LD P2 LD P3 LD P4 LD S=0,INV x SK x TS/INV][LD.. BRQ BRQ BRQ BRQ... LD[TS TS/INV] x BRQ x BRQ x BRQ LD[TS x BRQ..... LD...... LD[TS... TS/INV][LD.. x BRQ. LD... LD[TS. TS/INV] LD Datu-trafikoa (datu-blokeak) prozesu bat SKra sartzeko → P + (P-1) + (P-2) SKtik ateratzeko → 1 guztira → 3P - 2 P proz. → P(3P-1)/2

15 LL – SC 2.1 Load Locked / Store Conditional ▪ LL R1,SAR ▪ SC SAR,R1
- 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)

16 LL – SC 2.1 Load 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 behin bakarrik sortzen da trafikoa: sekzio kritikora sartzean; gainerako kasuetan, ez da idazten!

17 LL – SC: trafikoa SK P0 P1 LL P2 LL P3 LL P4 LL
P0 SKan dago BRQ = blokea eskatu / x = baliogabetuta / bus-kontrola = FIFO P0 P1 LL P2 LL P3 LL P4 LL S=0,INV x SK SC /INV] BRQ BRQ BRQ BRQ..... LL(1)[SC.... (0)x BRQ (0)x BRQ.... (0)x BRQ LL(1)[SC...... SC] LL LL(1)[SC.. SC] LL LL(1)[SC. SC] LL..... Datu-trafikoa (datu-blokeak) prozesu bat SKra sartzeko → P + (P-1) SKtik ateratzeko → 0 guztira → 2P - 1 P proz. → P2

18 C&S 2.2 Compare&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

19 Fetch&OP 3 Fetch&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;

20  Hobekuntzak trafikoa murrizteko
Txartelak  Hobekuntzak trafikoa murrizteko 1 Txartelak (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

21  Hobekuntzak trafikoa murrizteko
Txartelak  Hobekuntzak trafikoa murrizteko 1 Txartelak: 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!

22  Hobekuntzak trafikoa murrizteko
Sarraila-bektoreak  Hobekuntzak trafikoa murrizteko 2 Sarraila-bektoreak Ez erabili TXANDA aldagai partekatua, baizik eta sarraila pribatu bat prozesu bakoitzeko. Prozesu bakoitzak hurrengoari abisatzen dio. 3 prozesu zain daude 1 SB i i+1 1 INDIZEA: itxaroteko hurrengo posizioa SKan dagoen proz.

23  Hobekuntzak trafikoa murrizteko
Sarraila-bektoreak  Hobekuntzak trafikoa murrizteko 2 Sarraila-bektoreak lock: F&I R1,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).

24 Trafikoa SK SK P0 P0 P1 LD P1 LD.. P2 LD P2 LD.... P3 LD P3 LD....
P0 SKan dago BRQ = blokea eskatu / x = baliogabetuta / bus-kontrola = FIFO Txartela/Txanda Sarraila-bektoreak P0 P1 LD P2 LD P3 LD P4 LD TX++,INV P0 P1 LD.. P2 LD.... P3 LD.... P4 LD.... SB(i+1)=0,INV x LD x BRQ SK SK BRQ BRQ BRQ BRQ..... LD LD LD... LD... Datu-trafikoa (datu-blokeak) Txartelak → 1 + P → P(P+3)/2 Sarraila-bektoreak → → 3P

25  Sekzio kritikora sartzeko trafikoa
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

26 1 Puntutik punturako sinkronizazioa gertaeren bidez
Gertaerak 1 Puntutik 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); while (adi == 0) {}; adi = 1; post(adi); wait(adi); post(adi,i); wait(adi,i);

27 2 Hesien bidezko sinkronizazioa
Hesiak 2 Hesien bidezko sinkronizazioa Sinkronizazio globala: prozesu multzo bat sinkronizatzen da exekuzioarekin jarraitu baino lehen. H Hesia antolatzeko datu-egitura: struct hesi_egitura { int sar ; SKaren sarraila int kont ; zenbat heldu diren int egoera ; 0 itxita - 1 irekita } H

28 Hesiak Hesi sinple bat (H, hesi_egitura motako struct bat)
Aurrenak hesia itxi behar du; azkenak, ireki. 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) {};

29 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); aldagai pribatua

30 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)

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

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

33 ez ahaztu azterketa, urriaren 27an
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


Descargar ppt "4. Prozesuen Sinkronizazioa SMP Konputagailuetan"

Presentaciones similares


Anuncios Google