Innhold Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer Prinsipper for synkronisering av felles hukommelse Multiprosessorer koblet sammen av én buss 02.05 2001 Parallelle datamaskiner 1
Parallelle datamaskiner Ønsker å øke eksekveringshastigheten til programmer man eksekverer på en maskin. Ideelt sett ønsker man: Hvis 1 prosessor bruker tid n på program X, skal m prosessorer bruker tiden n/m på å kjøre X. I praksis er dette ikke mulig av flere årsaker: Visse deler av et program er sekvensielle. Det finnes innbyrdes avhengigheter som gjør at visse deler av programmet må vente på andre deler. Det finnes problemer som ikke lar seg parallellisere. 02.05 2001 Parallelle datamaskiner 2
For at et program skal eksekveres (helt eller delvis) i parallell, må det stilles krav til både programmeringsverktøy og maskinvare: Programmet må skrives i et programmeringsspråk som støtter parallellitet. Operativsystemet må støtte ekte parallell eksekvering. Det bør finnes verktøy for å parallellisere et program (eller det må gjøres manuelt) Maskinvaren må inneholde minst to prosessorer, og mekanismer som gjør at de kan kommunisere sammen og synkronisere eksekveringen. 02.05 2001 Parallelle datamaskiner 3
Det er vanlig å klassifisere datamaskiner utifra følgende kriterier: Single Instruction Stream, Single Data Stream (SISD) Single Instruction Stream, Multiple Data Streams (SIMD) Multiple Instruction Streams, Single Data Stream (MISD) Multiple Instruction Streams, Multiple Data Streams (MIMD) Vanlig å betrakte kun MISD og MIMD som multiprosessorer. 02.05 2001 Parallelle datamaskiner 4
Prosessorene må kommunisere hvis de aksesserer samme minne. Eksempel: Billettreservasjon A F (Felles Billett database) B A: Er billett X ledig? B: Er billett X ledig? F: Ja, X ledig A: Reserver billett X B: Reserver billett X F: Reservet billett X for. 02.05 2001 Parallelle datamaskiner 5
For å kontrollere data-aksess finnes to teknikker for synkronisering: Låsing Låsing. Meldingsutveksling. Kun en prosessor har tilgang til en variabel eller et dataområde ad gangen. En prosessor som ønsker å aksessere en variabel, sjekker først om låse-bit et er satt. Hvis låse-bit et ikke er satt, setter prosessoren bit et, og aksesserer variabelen. Hvis låse-bit et er satt, betyr det at en annen prosessor bruker variabelen og den kan ikke aksesseres. Prosessoren som setter låse-bit et må frigi det ( låse opp ) når variabelen ikke lenger brukes. Lese-låse operasjonen må være atomisk 02.05 2001 Parallelle datamaskiner 6
Meldingsutveksling Prosessor A Prosessor B Kø Delt minne Operasjoner for å lese fra og skrive til meldingskøen må beskyttes som ved delt minne Meldingsutveksling må brukes hvis parallelle prosessorer har private minneområder. Støtter multiprosessornettverk 02.05 2001 Parallelle datamaskiner 7
Sammekobling av multiprosessorer En enkelt buss Cache Cache Cache Single bus Memory I/O Via nettverk Cache Cache Cache Memory Memory Memory Network 02.05 2001 Parallelle datamaskiner 8
Én-buss systemer har flere fordeler: Enkelt-prosessorer er mindre enn en integrert multiprosessor. Cache kan redusere trafikken på systembussen. Det finnes mekanismer for å holde minne og cache konsistene i multiprosessor-omgivelser. Cache-koherens må garanteres i multiprosessor-systemer: Problem: Fordi flere prosessorer kan oppdatere samme variabel, finnes det tidsrom hvor lokal cache er oppdatert, men hovedminnet ennå ikke er oppdatert (jfr billett-reservasjon). Hva skjer hvis en annen prosessor leser hovedminnet i dette tidsrommet? 02.05 2001 Parallelle datamaskiner 9
Cache-koherens protokoller brukes for å sikre at innhold i lokale cacher og hovedminnet samsvarer. Snooping er den mest vanlige teknikken: Lesing: Intet problem med flere kopier. Skriving: Kun en prosessor får skrive, og alle andre kopier i lokale cacher må oppdateres. Snooping-protokollen holder styr cacher som inneholder et objekt som skal skrives til. Ved read miss sjekkes alle lokale cacher og oppdaterer cachen som fikk read miss. Ved write miss må alle cacher som inneholder kopi av objektet som ga write miss oppdateres. 02.05 2001 Parallelle datamaskiner 10
Kopier som er feil etter skriveoperasjon kan merkes som ugyldige ( write-invalidate ), eller oppdateres med en gang ( write-update ) Write-invalidate Info om ugyldig blokk sendes ut på bussen. Prosessorer som har kopier av disse i lokal cache merker disse som ugyldige. Prosessoren som skrev oppdaterer deretter sin egen cache. De andre cachene må selv sørge for å oppdatere seg selv ved behov (lesing eller skriving vil alltid gi cache miss ) Tillater at mange kan lese, men kun en prosessor kan skrive ad gangen. 02.05 2001 Parallelle datamaskiner 11
Write-update Den oppdaterte verdien sendes ut på bussen. Prosessorer som har kopier av disse i lokal cache skriver inn den nye verdien. Tilsvarer write-through ved SISD-arkitektur Bruker bussen oftere Oppdaterte verdier blir raskere tilgjengelig i andre lokale cacher Snoop tag Cache tag and data Snoop tag Cache tag and data Snoop tag Cache tag and data Single bus Memory I/O 02.05 2001 Parallelle datamaskiner 12
Eksempel på cache-koherens protokoll: Basert på write-invalidate som er mest vanlig (reduserer busstrafikken) Hver cache-blokk er i en av tre tilstander: 1) Read Only: Blokken har ikke blitt skrevet til og kan deles direkte. 2) Read/Write: Blokken har blitt skrevet til og kan ikke deles direkte 3) Invalid: Blokken inneholder ikke gyldige data. Signaler som styrer cache-koherens protokollen for en blokk i en lokal cache kommer både fra prosessoren og bussen: Fra prosessoren: Write hit Write miss Read miss Fra bussen Read miss eller write miss fra en annen prosessor Invalidate fra en annen prosessor 02.05 2001 Parallelle datamaskiner 13
Invalid (not valid cache block) read miss Read Only (clean) write miss Proce ssor read miss if (Write back dirty block to memory) (Send invalidate hit) Proce ssor write (hit or miss) Read/ Write (dirty) Signaler fra prosessoren write Another pro cessor h as a read miss o r a write miss fo r this blo ck (seen o n bus); write b ack old blo ck Invalid (not valid ca che bloc k) Invalid ate o r a noth er pro ce ssor ha s a write mis s for this blo ck (seen o n b us) Read Only (cle an) Rea d/ Write (dirty) Signaler fra bussen 02.05 2001 Parallelle datamaskiner 14
Bruk av koherensprotokoll for synkronisering. Benytter lock variabel for å synkronisere eksekveringen av parallelle prosesser som arbeider på et felles problem. Lock = 0: Variabelen kan benyttes Lock = 1: Variabelen er opptatt Hvis lock -variabel er opptatt, må prosessorer som ønsker å gå videre vente til variabelen er ledig. Bussen må ha en atomisk les-og-sett operasjon for lock -variable. Prosessorer som ser at lock er låst, går i løkke og tester verdien helt til den låses opp. Hver prosessor kan ha en lokal kopi av lock - variabelen ved buss-basert koherens protokoll. Når lock -variabelen frigjøres, vil det forårsake write-invalidate eller write-update 02.05 2001 Parallelle datamaskiner 15
Flytskjema for koherens-basert synkronisering Load lock variable No Unlocked? (= 0?) Yes Try to lock variable using swap: read lock variable and then set variable to locked value (1) No Succeed? (= 0?) Yes Begin update of shared data Finish update of shared data Unlock: set lock variable to 0 02.05 2001 Parallelle datamaskiner 16