50
Multi-procesorski sistemi Poglavje 8 Multi-procesorska strojna oprema Tipi multiprocesorskih OS Sinhronizacija multi-procesorjev Multiprocesorsko razporejanje

Poglavje 8 Multi-procesorski sistemi

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Multi-procesorski sistemi

Poglavje 8

Multi-procesorska strojna oprema Tipi multiprocesorskih OS Sinhronizacija multi-procesorjev Multiprocesorsko razporejanje

Uvod

• Problem 1• Povečevenje hitrosti ure - meje• Hitrost svetlobe = 30 cm/nsec• Hitrost prenosa 20 cm/nsec (baker,optika)• 10 GHz ura => 2 cm, 100 GHz ura 2 mm• 1 THz => velikost računalnika 100 mikronov• Problem 2• Odvajanje toplote (hladilnik večji od procesorja)

Uvod (2)

• Povečanje hitrosti z vzporednim procesiranjem• Dejstva:• 1000 procesorski računalnik komercialno dostopen; 1M je prihodnost• Aplikacije: napovedovanje vremena, simulacija plinov in tekočin, kompleksni sistemi (ekonomija)• Internet: kako dati 1M računalnikov v 1 sobo• Največji problem: komunikacija med procesorji, računalniki, …

Multiprocesorski sistem

• Nenehna potreba po hitrih računalnikih– Model skupnega pomnilnika– Multiprocesor s pošiljanjem sporočil– Porazdeljeni sistem

Multiprocesorji

Definicija:Računalniški sistem kjer si dva ali več CPU-jev deli skupen pomnilnik.

Lastnosti:– Procesor nekaj napiše v spomin, spet prebere in

dobi drugo vrednost. – Drugi procesorji lahko pišejo v spomin.– Osnova za komunikacijo.

6

Multi-procesorska strojna oprema

• UMA – uniform memory accesss• NUMA - nonuniform memory access

7

Multi-procesorska strojna oprema (1)

Multiprocesor na osnovi vodila

8

UMA SMP• Delo s spominom

– Preveri, če je vodilo prosto– Če je zasedeno mora počakati– Sicer da naslov na vodilo, kontrolni signali, spomin

pošlje vsebino– OK za 3-5 procesorjev; 32-64 – ni OK!– Vodilo postane ozko grlo– Rešitev: dodamo predpomnilnik

9

UMA SMP• Predpomnilnik (cache)

– 32 ali 64 besedni blok– Blok: Read-only, read-write, dirty bit– Samo branje je hitro, spreminjanje je problem– Spreminjanje:

• Pi zahteva pisanje strani; vsi preostali P* zavržejo čisto kopijo strani; Pi spremeni stran v pomnilniku

– Obstaja veliko algoritmov za delo s predpomnilnikom

• Lokalni spomin– Privatno vodilo– Prevajalnik mora znat uporabljat lokalni spomin

Multi-procesorska strojna oprema (2)

• UMA multiprocesor na osnovi navzkrižnih sikal

• Velikost UMA = omejeno na 16 – 32 CPU• Mreža stikal:

– Strojna oprema tel.central.

• Na presečišču vertikalne in horizontalne linije je stikalo.– Odprto, če je naslovljen spominski modul

• Postavitev trdnjav na šahovnico.• Najlepša lastnost:

– Ne-blokirajoča mreža.

• Slaba lastnost:– Število presečišč = n2

– N=1000 imamo miljon stikal

Multi-procesorska strojna oprema (3)

• UMA multiprocesor, ki uporablja večnivojsko stikalno mrežo lahko zgradimo iz 2x2 stikal

(a) 2x2 stikalo (b) oblika sporočila

Multi-procesorska strojna oprema (4)

• Stikalna mreža Omega

14

• 2x2 stikalo– 2 vhoda, 2 izhoda

• Sporočilo– Dostop do spomina– module+address+opcode[+value]

• Multistage switching netw || Omega ntwrk– log

2n nivojev, n/2 stikal nivoja

– log2n * n/2 stikal

– Perfektna razporeditev– Izbiramo bite na levi strani

15

• Konflikt naslovov– 000 dostopa do 001 – 001 dostopa do 000– Konflikt v 3A– Blokorajoča mreža!

• Razpšimo naslove po vseh modulih– Spodnje bite naslova uporabimo za številke

modulov!– Zapordni naslovi so zaporedni moduli

• Neblokirajoče stikalne mreže– Več poti med točkami

Multi-procesorska strojna oprema (5)

Lastnosti multiprocesorja NUMA 1. En naslovni prostor viden iz vseh CPU2. Dostop do oddaljenega spomina z ukazi

- LOAD- STORE

3. Dostop do oddaljenega pomnilnika je počasnejši od dostopa do lokalnega

• Hočemo delati z > 100 CPU• En naslovni prostor preko vseh CPU• Uporaba prepomnilnika

– NC-NUMA, CC-NUMA

• Direktorijski multiprocesor = CC-NUMA– Za vsako vrstico predpomnilnika hranimo:

• Lokacijo vrstice (vozlišče)• Umazan bit

Multi-procesorska strojna oprema (6)

Multi-procesorska strojna oprema (7)

(a) Direktorijski multiprocesor z 256 vozlišči(b) Polja 32-bitnega naslovnega prostora(c) Direktorij vozlišča 36

Direktorijski multiprocesor

• Primer:– 256 vozlišč, vozlišče=16M RAM+CPU– Celoten pomnilnik 232 =

• 28 = 256 vozlišč• 224 = 16M lokalni pomnilnik vozlišča • 26 = 64 B = ena vrstica• Statična alokacija:

– 1 vozlišče=1-16M, 2 vozlišče=16-32M, ...

• Direktorij = 218 vrstic po 64 B = 224 B • Tabela direktorija= 218 * 9 bitov/vrstico

– 64 B/vrstica =>1.76%, 32 B/vrstica=> 4%, 128 B/vrstica=>1%

• Slaba lastnost:– Vrstica je lahko le v enem predpomnilniku

Tipi multiprocesorskih OS

1) Vsak CPU ima svoj OS2) Nadrejeni/podrejeni multiprocesorji3) Simetrični multiprocesorji

Tipi multi-procesorskih OS (1)

Vsak CPU ima svoj operacijski sistem

Bus

• Lastna kopija OS za vsak CPU.– Deljenje kode OS.– Razdeljen spomin.– Deljenje diska.

• N CPU = N neodvisnih računalnikov.– Optimizacija: 1 kopija OS – Privatne kopije podat.struktur.– V tej verziji si CPU delijo disk.

Vsak CPU svoj OS

23

• Štirje aspekti (niso tako očitni):– OS klici se izvršijo lokalno.– Vsak OS ima svoje tabele lokalno. Ni deljenja

procesov.– Ni deljenja strani. Različni ostranjevalni sistemi.– Diskovni predpomnilnik je na vsakem CPU.

Lahko pride do nekonsistentnosti.

• Ta model običajno ni več uporabljen.

Vsak CPU svoj OS

Tipi multi-procesorskih OS (2)

Nadrejeni-podrejeni multiprocesor

Bus

• En CPU vsebuje tabele in kopijo OS.– Vsi sistemski klici se izvršijo na enem CPU.– Ko CPU opravi delo vpraša nadrejenega za

naslednje opravilo.– Ta model se izogne večini slabim lastnostim

prejšnjega.– CPU-ji so lahko usklajeni.

• Problemi:– Nadrejeni postane „ozko grlo“.– 10% kode je v sistemskem delu.– 10 CPU bo zasedlo nadrejenega.

Nadrejeni/podrejeni CPU

Tipi multi-procesorskih OS (3)

• Simetrični multiprocesorji– SMP multiprocesorski model

Bus

• Ena kopija OS – vsi CPU ga uporabljajo– Eliminiramo asimetrijo.

• Dobre lastnosti– Uravnoteženi procesi in spomin – Ni enega nadrejenega CPU

• Slabe lastnosti– 2 procesa izvajata OS kodo => problem!– Npr. 2 procesa vzameta eno prosto stran spomina– Mutex za OS?– Tako slabo kot model Nadrejeni-Podrejeni...

Simetrični multiprocesorji

28

• Razdelimo OS na neodvisne kritiče sekcije– Vsaka sekcija ima svoj mutex– Še vedno ostanejo skupne podatkovne strukture– Npr. tabela procesov– Za te naredimo poseben mutex– Paziti je potrebno na smrtne objeme

• Pogosto uporabljena rešitev– Težko je razdeliti OS na kritične sekcije.– Paziti je potrebno na smrtne objeme.– Uporaba vrstnega reda.

Simetrični multiprocesorji

Sinhronizacija multi-procesorjev

TSL instrukcije lahko spodletijo, če je vodilo že zaklenjeno

Sinhronizacija multi-procesorjev (1)

• Prepoved prekinitev ni smiselna ker imamo več procesorjev

• TSL instrukcija – Ne deluje, v splošnem, na več-procesorskem sis. – Korektna implementacija TSL zaklepa vodilo– Petersonova rešitev

Sinhronizacija multi-procesorjev (2)

• Problem korektne TSL– CPU v zanki testira mutex => izguba CPU časa– Obremenjuje vodilo in spomin

• Tudi TSL s predpomnilnikom je problem– Konstantno premikanje 64 besed (vrstice) med

CPU-ji – Problem je pisanje TSL; naredimo v dveh korakih: 1) branje in 2) TSL.

32

Sinhronizacija multi-procesorjev (3)• Ethernetno binarno eksponentno umikanje

(Anderson,90)– Ni potrebno predhodno branje– Zmanjšamo smetenje predpomnilnika– Tehtnica: dolžina čakanja - smetenje

• Spin lock – Če TSL ne uspe naredimo privatno ključavnico– + CPU se doda na koncu čakalne vrste– Ko CPU, ki drži ključavnico konča sprosti privatno

ključavnico naslednjemu v vrsti– Ni smetenja, ni stradanja, učinkovitost!

33

Sinhronizacija multi-procesorjev (4)

Več ključavnic za izogibanje smetenju predpomnilnika

Sinhronizacija multi-procesorjev (5)

Kroženje proti preklaplanju• V nekaterih primerih mora CPU počakati

– Čaka da pridobi listo pripravljenih

• V ostalih primerih imamo izbiro – Kroženje porabi CPU cikle– Preklaplanje tudi uporabi CPU cikle– Možno je narediti ločene odločitve vsakič, ko

opazimo zaklenjen mutex

Multiprocesorsko razporejanje

• Deljenje časa• Deljenje prostora• Razporejanje band

• Razporejamo procese, ki imajo niti.– Razlika med jedrnimi in uporabniškimi nitmi.– Jedro se zaveda niti in povezave med nitmi in

procesi.• Nekatere niti so povezane, druge niso.• Primer make: prevajanje modulov in vseh odvisnih

modulov• Potrebno je korektno izbirati niti.

• Razporejanje ima dve dimenziji– Kateri procesi (niti) se bodo izvajale na katerih

procesorjih? • Ne samo kateri proces...

Multi-procesorsko razporejanje (1)

• Algoritem: delitev časa• Najprej: razporejanje neodvisnih procesov.

– Kasneje se bomo ukvarjali s povezanimi nitmi

• Enostaven algoritem:– Ena skupna podatkovna struktura za razporejanje.– Seznam procesov pripravljenih na izvajanje.– Seznami po različnih prioritetah.– Ko se nit ustavi se izbere naslednja iz vrste z

najvišjo prioriteto.– Ustavitev niti: V/I operacija ali pretečeni kvant.

Multi-procesorsko razporejanje (2)

• Delitev procesorskega časa (timesharing)– Ena sama podatkovna struktura je uporabljena

za razporejanje!

Delitev časa

39

• Primer:• 16 CPU deluje• 14 procesov čaka (prioritetna vrsta)• CPU 4 konča => izbere proces A• CPU 12 konča => izbere proces B

• Algoritem deluje v redu za nepovezane niti.– Podobno eno-procesorskemu sistemu (ena PS).– Avtomatično porazdeljevanje bremen.

• Problemi:– Veliko št. CPU => podatkovne strukture za

razporejanje so zasičene. – Preklop konteksta ob V/I.

Delitev časa

40

• Problem: proces drži krožno ključavnico:– Na koncu svojega časovnega kvanta je ne sprosti.– Ostali procesi, ki čakajo na ključavnico se vrtijo v

prazno dokler ključavnica ni odklenjena.

• Pametno razporejanje (Zahorjan, 91):– Rešitev prejšnjega problema.– Definiramo zastavico, ki pove, da nekdo uporablja

krožno ključavnico.– Ko razporejevalnik vidi zastavico da procesu malce

več časa, da neha delati s ključavnico.

Delitev časa

41

• Problem:– CPU-ji so različni zaradi predpomnilnika in TLB, ki

vsebujeta bloke prejšnjih procesov.

• Razporejanje z naklonjenostjo (Vaswani, Zahorjan, 91):– Precejšen napor, da bi proces tekel na prejšnjem CPU– Dvo-nivojsko razporejanje:

• Ob kreaciji proces dobi CPU (1. nivo)• Vsak CPU ima svojo množico procesov• Razporejanje poteka potem na vsakem CPU (2. nivo)

Delitev časa

42

• Prednosti:– V grobem porazdeli breme po CPU-jih.– Uporablja se predpomnilnik.– Vsak CPU ima svojo pod.strukturo za razporejanje in

redko potrebuje druge. • => PS za razporejanje ni kritična.

Delitev časa

Multi-procesorsko razporejanje (3)

• Deljenje prostora– Več niti istočasno na večih CPU-jih

• Procesi so med seboj povezani.– Primer make:

• Proces kreira več niti, ki so povezane.

– Razporejanje več niti po večih CPU imenujemo deljenje prostora

• Algoritem:• Proces kreira več niti.• Pogledamo ali imamo zadosti CPU-jev za vse niti.• Če da, potem poženemo niti na CPU-jih.• Če ne, potem počakamo.• Če nit blokira z V/I operacijo potem CPU počaka.• Nit se izvaja do konca.

Delitev prostora

45

• V vsakem trenutku so CPU-ji razdeljeni na particije.– Vsaka particija izvaja svojo množico procesov.– Periodično se izvaja razporejanje procesov, ki

vstopajo v izvajanje.– Lahko uporabljamo strategije:

• Najkrajši proces najprej• Prvi pride prvi melje

– FIFO je v praksi težko izboljšati (Krueger, 94).

Delitev prostora

46

• Prostorsko in časovno razporejanje.• Kombinacija dveh algoritmov.

– Imamo časovne rezine.– Razporeja se cela banda hkrati.

Multi-procesorsko razporejanje (4)

• Deljenje prostora eliminira preklaplanje kontekstov.– Vendar procesi čakajo blokirani …– Algoritmi za deljenje časa in prostora !

• Problemi pri razporejanju niti, ki so neodvisne med sabo.– Niti so lahko nesinhronizirane.– Poglejmo primer:

Razporejanje bande

• Problem komunikacije med dvema nitma– Oba pripadata procesu A– Oba tečeta izven faze

Razporejanje bande

• Rešitev: razporejanje bande– Skupino povezanih niti se razporeja kot enoto (bando).– Vsi člani bande tečejo simultano na različnih CPU-jih.– Vsi člani bande začnejo in končajo časovne rezine

skupaj.

Razporejanje bande

Razporejanje bande

Razporejanje bande