290 likes | 423 Vues
Arkitektura Paraleloak. 5. Memoriaren Kontsistentzia Konputagailu Paraleloetan. - Aginduen exekuzio-ordena - Atomikotasuna - Kontsistentzia sekuentziala - Kontsistentzia-eredu malguak. Arkitektura Paraleloak . IF - EHU. Sarrera: exekuzio-ordena. Memoriako aginduen exekuzio-ordena?.
E N D
Arkitektura Paraleloak 5.Memoriaren Kontsistentzia Konputagailu Paraleloetan - Aginduen exekuzio-ordena - Atomikotasuna - Kontsistentzia sekuentziala - Kontsistentzia-eredu malguak Arkitektura Paraleloak IF - EHU
Sarrera: exekuzio-ordena • Memoriako aginduen exekuzio-ordena? Prozesadore bakarra:hardwareak desordenatu egin ditzake aginduak, baina kontrol-unitate bakar bat dago; beraz, desordena “kontrolpean” dago. P prozesadore:ez dakigu zein izango den aginduen “ordena globala”. Multiprozesadoreko memoriako kontsistentziakmemoria-aginduen exekuzio-ordena zehazten eta zedarritzen du.
Sarrera: exekuzio-ordena • Datuen koherentziak ere “ordena” jakin bat zehazten du: • aldagai baten aldaketak cache guztietan eta ordenaberean ageriko dira. Baina koherentzia-protokoloek ez dute aldagaidesberdinenaldaketenordena zehazten!
Emaitzak: B,A 0,0 / 0,1 / 2,1 2,0 ?? Sarrera: exekuzio-ordena • Programa paraleloen semantika aginduen exekuzio-ordena lokalari eta globalari lotuta dago. Hasieran: A = B = 0 P1 P2 A = 1;(wr1)print B;(rd1) B = 2; (wr2)print A;(rd2) Emaitza B=2 eta A=0 izan daiteke... baldin eta P2k (edo P1ek) desordenatu egiten baditu bere bi aginduak, berarentzat erabat independenteak baitira!
dependentziak wr1rd1 wr2rd2 Sarrera: exekuzio-ordena • Programa paraleloen semantika sinkronizazio-eragiketen bidez ezartzen da. P1 P2 A = 1; while (prest==0){}; prest = 1; print A; A = 1 idatzi beharko luke P2k? Agian ez, P2k ez baitu programa globalaren sinkronizazioa ulertzen!
dependentziak wr1rd1 wr2rd2 Sarrera: exekuzio-ordena • Programa paraleloen semantika sinkronizazio-eragiketen bidez ezartzen da. P1 P2 A = 1; while (prest==0){}; prest = 1; print A; wr1rd2 dependentzia betetzeko, aginduen ordena lokalari eutsi behar zaio: (wr1>>wr2etard1>>rd2) + wr2rd1 wr1rd2
Sarrera: atomikotasuna • Ordena lokala ez da nahikoa, atomikotasun ezak ere arazoak sor ditzake eta. P1 P2 A = 1; while (prest==0){}; prest = 1; print A; Bi aldagai aldatzen dira P1en; zein ordenatan ikusiko dira aldaketa horiek P2n? P2k A = 0 inprimatuko du, baldin eta prest aldagaiaren aldaketa A aldagaiarena baino lehen heltzen bada P2ra!
beraz, C = 0 lortuko dugu! Sarrera: atomikotasuna • Beste adibide bat P1 P2 P3 A = 1; while (A==0){}; B = 1; while (B==0){}; C = A;
Kontsistentzia-ereduak • Aplikazio paraleloak programatzen dituenak sistema paraleloaren kontsistentzia-eredua ezagutu behar du: - aginduen exekuzio-ordena prozesadore bakoitzean. - aldagai partekatuetan egiten diren idazketa/irakurketa eragiketen atomikotasuna. Azter ditzagun kontsistentzia-eredu nagusiak.
Kontsist. sekuentziala, SC • Kontsistentzia sekuentziala (SC) • Prozesadore bakarreko “ordena hertsiko” ereduaren zabalkuntza. 1(Memoriako) aginduen ordena lokala errespetatu behar da, prozesadore bakoitzean: ezin dira LD eta ST aginduak berrordenatu. wr >> rd; rd >> rd; wr >> wr; rd >> wr;
? Sisteman a; b; c; d; Kontsist. sekuentziala, SC • Adibidez: • P1 a; b; • P2 c; d; bai ez a; d; c; b; ez c; d; b; a; bai a; c; b; d;
a ag. (Pi) a ag. (Pi) b ag. (Pj) b ag. (Pj) Kontsist. sekuentziala, SC Kontsistentzia sekuentziala (SC): 2(Memoriako) aginduen ordena globalak prozesa-dore bakoitzeko aginduen tartekatze zehatza izan behar du; beraz, ezin zaio agindu baten exekuzioari ekin aurrekoarena (edozein prozesadoretan), eta haren ondorioak, bukatu arte → atomikotasuna.
1. INV 1. INV ST 2. ACK 2. ACK Kontsist. sekuentziala, SC • Ordena lokalaz gain atomikotasuna ere ziurtatzeko, aginduen exekuzioa (eta ondorioak prozesadore guztietan) noiz bukatzen den jakin behar da: >>Prozesadorekoaginduenbukaera: - LD: erraza, datuak lortzen direnean. - ST: zaila, idazketaz gain, baliogabetzeak ere aintzat hartu behar baitira → ACK abisuak koherentzia- protokoloetan.
1. BC 1. BC ST 3. segi 3. segi LD 2. ACK 2. ACK Kontsist. sekuentziala, SC • >> Beste prozesadoreetako aginduen bukaera: - Irakurketa bati ekiteko, LD, lehenik ziur egon behar dugu bloke horren gaineko azken idazketa bukatu dela... prozesadore guztietan! Konplexutasuna koherentzia-protokoloaren araberakoa da: - INV: ez da zaila, datu-blokea eskatu behar baita. - BC: broadcast eragiketa bukatu dela jakin behar da.
P1 P2 A = 1 A = 0 B = A P1 P2 r1 = 1 A = 0 A = r1 B = r1 Kontsist. sekuentziala, SC • SC ereduak ezartzen dituen baldintzak oso gogorrak dira, eta sistemaren eraginkortasunaren gaineko eragina handia izan daiteke: - ezin dira memoria-atzipenak desordenatu. - ezin dira idazketa-bufferrak erabili. - ezin dira erregistroak erabili memoria-erabilera optimizatzeko.
Eredu malguak • Ba al dago beste aukerarik? SC ereduak ezartzen duen baldintza multzoa nahikoa da, baina ez da beharrezkoa. Aginduen ordenari ezarritako murriztapenak arindu daitezke: wr>>rd; rd>>rd; wr>>wr; rd>>wr; + atomikotasuna Horrela, kontsistentzia-eredu malguak definitzen dira: ordena-erlazio batzuk ez dira beti errespetatzen.
Eredu malguak • Hala ere, programatzaileak ordena hertsia ezartzeko aukera izan behar du beti. • Horretarako, mihiztadura lengoaiako agindu bereziak, fence izenekoak, erabiltzen dira: • MEMBAR, STBAR, SYNC... - write-fence: idazketen ordena ezartzeko - read-fence: irakurketen ordena ezartzeko - memory-fence: memoria-eragiketa guztien ordena ezartzeko Ikus ditzagun kontsistentzia-eredu malguak.
P P P ST LD MEM Eredu malguak: TSO • 1 Total Store Ordering (TSO) / Processor Consistency (PC) Ez da wr>>rd ordena-erlazioa ziurtatzen Beraz, LD aginduak aurreko ST aginduak baino lehen exekuta daitezke (“load aurreratu” eredua). Adi: T&S, SWAP... aginduak rd eta wr eragiketak dira, batera.
Eredu malguak: TSO • Ez da kontsistentzia sekuentziala ziurtatzen; beraz, litekeena da emaitzetan ezustekoak izatea. P1 P2 X = balio_berria; Y = balio_berria; Y_kopia = Y; X_kopia = X; SC: gutxienez batek, X_kopia-k edo Y_kopia-k balio_berria izango du. TSO: litekeena da ez batak ez besteak ez hartzea balio berria.
Eredu malguak: TSO • Ordena ezarri behar bada aplikazioko puntu jakin batean, “ordena-hesi” bat osatu behar da. • Horretarako, bietako bat: • - fence motako aginduak erabili behar dira. • - RMW motako aginduak erabili behar dira, desordenatu ezin baitira eredu honetan: • ST... LD → SWAP ... LD
Eredu malguak: TSO TSO eredua egokia da idazketen latentzia gaindi-tzeko, eta eredu horretan ondo funtzionatzen du adierazleen bidezko sinkronizazioak: P1 P2 A = 1; while (prest==0){}; prest = 1; print A; P1eko bi idazketak eta P2ko bi irakurketak ezin dira desordenartu.
P P P ST LD MEM Eredu malguak: PSO • 2 Partial Store Ordering (PSO) Ez dira wr>>rd eta wr>>wr ordena-erlazioak ziurtatzen. Eredu honetan ez da idazketen arteko ordena ere ziurtatzen. Gauzatzea aurreko bera da, baina ST aginduen ilarak ez dira FIFO motakoak. ADI: litekeena da adierazleen bidezko sinkronizazioa ez funtzionatzea! Beraz, sinkronizazio mota hori erabili behar bada, memoria-aginduen ordena ezarri beharko da.
Eredu malguenak • Memoria-agindu guztien ordena ziurtatu behar da? P1/P2/... lock(sar); nik = i; i = i + N; unlock(sar); P1P2 X = X + 1; while (adi==0){}; Y = B + 1; A = X/2; adi = 1; B = Y; Nahikoa litzateke sinkronizazio-eragiketen ordena ziurtatzea! rd,wr>>s s>>rd,wr s>>s
rd... wr... rd... wr... sink rd... wr... sink Eredu malguak: WO 3 Weak Ordering (WO) - sinkronizazio-eragiketetan izan ezik, memoria-aginduen arteko edozein ordena onartzen da. - sinkronizazio-eragiketak fence moduan tratatzen dira. ADI:memoria-eragiketak “etiketatu” egin behar dira, sinkronizaziokoak identifikatu ahal izateko.
rd... wr... rd... wr... rd... wr... s_rel s_acq Eredu malguak: RC 4 Release Consistency (RC) Sinkronizazio-eragiketak bi motatan banatu: acquire (sa) eta release (sr). Honako ordena-erlazio hauek bakarrik bete behar dira: sa >> rd,wr rd,wr >> sr
ordena Adibidea
Laburpena • Kontsistentzia-ereduak memoria-eragiketen ordena eta atomikotasuna zehazten ditu; kontuan hartu behar da programa paralelo egokiak diseinatu ahal izateko. • Bi kontsistentzia-eredu: sekuentziala eta malguak. SC ereduak murriztapen asko ezartzen du eta eragin handia izan dezake eraginkortasunean. Eredu malguek memoria-aginduen arteko ordena-erlazio batzuk ez betetzea baimentzen dute. Zenbait kasutan, ordena hertsia ezarri behar da, fence motako aginduen bidez. • SC eredua gehi exekuzio espekulatiboa da ohikoena. Aukeran, TSO eredua ST aginduen latentzia ezkutatzeko egokia izan daiteke.
Kontsistentzia-ereduak memoria-eragiketen ordena eta atomikotasuna zehazten ditu; kontuan hartu behar da programa paralelo egokiak diseinatu ahal izateko. Bi kontsistentzia-eredu: sekuentziala eta malguak. SC ereduak murriztapen asko ezartzen du eta eragin handia izan dezake eraginkortasunean. Eredu malguek memoria-aginduen arteko ordena-erlazio batzuk ez betetzea baimentzen dute. Zenbait kasutan, ordena hertsia ezarri behar da, fence motako aginduen bidez. SC eredua gehi exekuzio espekulatiboa da ohikoena. Aukeran, TSO eredua ST aginduen latentzia ezkutatzeko egokia izan daiteke. Arkitektura Paraleloak IF - EHU M. Konts. | Laburpena please, read the notes and don’t forget exercises!