Les 9: Meerdradige uitvoering

Vergelijkbare documenten
Examen Geavanceerde Computerarchitectuur

Examen Geavanceerde Computerarchitectuur

Examen Geavanceerde Computerarchitectuur

Computerarchitectuur. Terugblik / discussie / oefenopgaven

Les 11: systeemarchitectuur virtuele machines

Examen Geavanceerde Computerarchitectuur

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: , Appendix A.

computerarchitectuur antwoorden

Les 4: geheugenstroom in outof-order

informatica. hardware. overzicht. moederbord CPU RAM GPU architectuur (vwo)

Oefeningenlessen Geavanceerde Computerarchitectuur

Multi-core systemen. door Alexander Melchior

Uitwerking oefententamen Computerarchitectuur December 2016

Computerarchitectuur. H&P Ch 5. Thread-Level Parallelism

Computerarchitectuur. H&P App. C. Pipelining

Examen Geavanceerde Computerarchitectuur

Computerarchitectuur en netwerken. Memory management Assembler programmering

Digitale en analoge technieken

Beter, Sneller, Mooier. Processoren 12 januari 2015

1 Aanvulling cosy deeltijd

Geheugenbeheer. ICT Infrastructuren 2 december 2013

Semaforen. Semaforen p. 1/2

Computerarchitectuur en netwerken. Memory management Assembler programmering

Computerarchitectuur. App. B. Review of Memory Hierarchy

Computerarchitectuur en netwerken Toets 1 4 okt

Racedetectie in Parallelle Programma s door Gecontroleerde Heruitvoering

Memory Management. Virtual Memory. Eisen Memory Management. Verdelen geheugen over meerdere processen

von-neumann-architectuur Opbouw van een CPU Processoren 1 december 2014

Opgaven Registers Concurrency, 29 nov 2018, Werkgroep.

Extra details van de performance in de database kunt u zien met het Top Activity scherm dat u van hieruit kunt tonen.

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

Nederlandse samenvatting (Dutch summary)

Computerarchitectuur. Hoofdstuk 3: Instruction-Level Parallelism

TI-2720 Operating System Concepten. 6 november 2012, uur. docent: H.J. Sips. Dit is een tentamen met 9 open vragen

Tentamen Computersystemen

Vraag 1 (2 punten) (iii) Een lees-opdracht van virtueel adres 2148 seg 0, offset idem

Sequentiële gepijplijnde machine

Benchmarking van transactioneel geheugen

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

High Performance Computing

computerarchitectuur F. Vonk versie

Geheugenbeheer. ICT Infrastructuren. hoofdstukken 7 en 8.1

Examen computerarchitectuur

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

Take-home Tentamen Protocolvericatie. Universiteit van Amsterdam. 27 Maart 1994

Van Poort tot Pipeline. Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam

ICT Infrastructuren: Processen en Threads. 18 november 2013 David N. Jansen

Oefeningen Interpretatie I Reeks 6 : Registermachines

FAT32 disk structuur 2007 stam.blogs.com

ONTWERP VAN GEDISTRIBUEERDE SOFTWARE ACADEMIEJAAR STE EXAMENPERIODE, 15 JANUARI 2010, 14U 17U30 VRAAG 1: INLEIDENDE BEGRIPPEN[20 MIN]

Digitale technieken Deeltoets II

Uitwerking Tentamen Operating Systems Maandag 15 juni 2015 P1 P2 P3 P4 P5 P1 P3 P5 P4 P2 P1 P3 P5 P3. Opgave 1

ESA Week 4a: Unix. Vandaag: versiebeheer (RCS, CVS, SVN) Donderdag: Compilatiebeheer, SSH en nog het een en ander

Studentnummer:... Opleiding:... a) Met welke term wordt het interface tussen software en hardware van een processor aangeduid?

slides2.pdf April 12,

Computertechniek vorige examens

High Performance Computing

Hyper-V vs ESX in het datacenter

Hoofdstuk 7. Computerarchitectuur

From High-Level Language to language of the hardware

Proeftentamen in1211 Computersystemen I (Opm: de onderstreepte opgaven zijn geschikt voor de tussentoets)

Virtueel Geheugen en demand paging (1)

Hoe werkt een computer precies?

Examen besturingssystemen

Dealer instructie. SE serie 2008 versie 009

TECHNISCHE UNIVERSITEIT EINDHOVEN ComputerSystemen Deeltentamen B (weken 6..9) vakcode 2M208 woensdag 19 Maart 2003, 9:00-10:30

Waarmaken van Leibniz s droom

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Voorkennis: C, basiskennis microprocessoren (bij voorkeur ARM7 processor)

Assembly en Assemblers. Processoren 5 januari 2015

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

Computerarchitectuur. H&P Appendix A: Instruction Set Principles

Computerarchitectuur. H&P Appendix A: Instruction Set Principles

Transaction management.

Hardware Beginners. Processoren. Door Theo De Paepe

Universiteit Leiden Opleiding Informatica

Software Mobiliteit. UAMS - 6 maart Theo D'Hondt Lab voor Pogrammeerkunde Vrije Universiteit Brussel

Begrippen van transactieverwerking

Windows Xp professional op de werkstations en Windows 2000 op de Server

College 13: Patterns (2)

Software Reverse Engineering. Jacco Krijnen

Computerarchitectuur. H&P Ch 2. Memory Hierarchy Design

Beter, Sneller, Mooier. Processoren 27 maart 2012

Datastructuren Uitwerking jan

Inhoudsopgave. Optimalisatie van de mmips. Forwarding optie 1. Design flow. implementation

Klas : 5 Industriële ICT Herhalingsvragen reeks 1 PC-techniek

Eerste Toets Concurrency 20 december 2018, , Educ-β.

Gedistribueerd programmeren

Workshop Git. multiplayer notepad. Anthony Clays 21 november /30

Computerarchitectuur en Netwerken. Computerarchitectuur

Tentamen 17 augustus 2000 Opgaven Computerarchitectuur

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder

1=2720/2725 Operating System Concepten

Hardware-software Co-design

DB architectuur.

Proeftentamen in1211 Computersystemen I (NB de onderstreepte opgaven zijn geschikt voor de tussentoets)

LCD MONITOR SHARP INFORMATION DISPLAY GEBRUIKSAANWIJZING

Cover Page. Author: Vu, Van Thieu Title: Opportunities for performance optimization of applications through code generation Issue Date:

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Transcriptie:

Les 9: Meerdradige uitvoering consistentie Geavanceerde computerarchitectuur Lieven Eeckhout Academiejaar 2008-2009 Universiteit Gent

Overzicht Sequentiële consistentie Versoepelde consistentie Transactional memory 2

Geheugenconsistentie Geheugenconsistentiemodel specificeert de onderlinge volgorde van geheugenreferenties op een processor t.o.v. de geheugenreferenties van andere processors Is een integraal onderdeel van de ISA van een systeem voor multiprocessordoeleinden contract tussen de hardware en software Is van belang voor een correcte uitvoering van meerdradige applicaties 3

Consistentie vs coherentie Coherentie specificeert de onderlinge volgorde van geheugenreferenties naar eenzelfde geheugenlocatie Consistentiemodel specificeert de onderlinge volgorde van geheugenreferenties naar verschillende geheugenlocaties 4

A en B zijn gedeelde variabelen, en zijn initieel nul Draad 0 Voorbeeld Draad 1 algoritme van Dekkers A=1; if (B==0) { // critical section A=0; } B=1; if (A==0) { // critical section B=0; } Algoritme van Dekkers is een software implementatie voor locking Mutuele exclusie is gegarandeerd zolang eerst geschreven wordt en dan pas gelezen wordt Maar in OoO processor kunnen geheugenoperaties herordend worden, b.v. via load bypassing 5

Voorbeeld (bis) Draad 0 A=1; if (B==0) { // critical section A=0; } Draad 1 B=1; if (A==0) { // critical section B=0; } Enkele mogelijke correcte uitvoeringen: W A,0 ;R B,0 ;W B,1 ;R A,1 : draad 0 in kritische sectie W B,1 ;R A,1 ;W A,0 ;R B,0 : draad 1 in kritische sectie Een incorrecte uitvoering: R B,0 ;R A,1 ;W A,0 ;W B,1 : beide draden in kritische sectie R B,0 ;W B,1 ;R A,1 ;W A,0 : beide draden in kritische sectie W = write; R = read; subscript X,n = op geheugenlocatie X door draad n 6

Voorbeeld (ter) Draad 1 A=1; if (B==0) { critical section A=0; } Draad 2 B=1; if (A==0) { critical section B=0; } B.v. indien de leesoperatie vóór de schrijfoperatie uitgevoerd kan worden (load bypassing wegens niet-identieke adressen) Mutuele exclusie is niet langer gegarandeerd 7

Consistentiemodellen Twee types Sequentiële consistentie (SC) Sequential consistency Totale ordening tussen alle geheugenoperaties van alle processors Versoepelde consistentie Relaxed consistency Partiële ordening tussen de geheugenoperaties van alle processors Betere prestatie omdat totale ordening niet steeds nodig is 8

Sequentiële consistentie Totale ordening tussen alle geheugenreferenties van alle processors Door Lamport in 1979 Alsof alle processors alle gedeelde variabelen om beurt lezen en schrijven; bovendien is de ordening per draad zoals opgelegd door de programmavolgorde Conceptueel: ordening in een time-sharing systeem == multiprocessor met SC Eenvoudig voor programmeur 9

Sequentiële consistentie Processors issuing memory references as per program order P 1 P 2 P n The switch is randomly set after each memory reference Memory Uit Culler, Singh en Gupta Parallel Computer Architecture The result of the execution is the same as if the operations of all processors are executed in some sequential order, and the operations of each individual processor appear in the order specified by its program. (Lamport, 1979) 10

Draad 1 ld A; ld B; st C; st A; ld A; st B; Voorbeelden een SC uitvoering een andere SC uitvoering draad 1 draad 2 draad 1 draad 2 Draad 2 st B; ld A; ld C; st A; st B; ld B; ld A ld B st C st B ld A ld A ld B st C st B st A ld A ld C st A st B st A ld A st B ld A ld C st A st B ld B st B ld B 11

Waarom SC? Is een eenvoudig en intuïtief programmeermodel Heel wat legacy code werd geschreven voor time-sharing omgeving Men wil dat die code ook werkt op MP systeem Men wil inspanningen niet doen om code te herschrijven 12

SC: bespreking SC implementeren op een efficiënte manier voor goede prestatie is niet eenvoudig Wegens Totale ordening van geheugenoperaties per draad ( OoO paradigma) Totale ordening van geheugenoperaties van alle processors Vereist zeer veel bandbreedte over interconnectie 13

Maar... Totale ordening is niet steeds nodig Dus: versoepelen Enkel die geheugenreferenties ordenen die in volgorde uitgevoerd moeten worden teneinde de echte afhankelijkheden te respecteren Enkel ordening op gedeelde variabelen Betere prestatie en illusie van SC uitvoering Merk op: niet hetzelfde als versoepelde consistentie (zie later) Versoepeling op microarchitecturaal niveau versus op architecturaal niveau ~ OoO uitvoering van afhankelijkheden via registers en geheugen in OoO processor 14

SC implementeren Via cachecoherentie worden RAW afhankelijkheden tussen verschillende processors gerespecteerd Indien CPU A een variabele leest die geschreven wordt door CPU B, moet eerst de variabele in CPU A ongeldig gemaakt worden om nadien de nieuwe waarde te kopiëren van CPU B naar CPU A Indien geen coherentietrafiek (invalidates en/of cache misses), zijn er geen afhankelijkheden tussen de CPUs 15

SC implementeren (bis) M.a.w. geen consistentieregels nodig voor cache hits tussen coherentietrafiek (invalidate en/of cache miss) Geen interventie voor een groot deel van de geheugenoperaties wegens cache hits Twee overblijvende problemen Lokaal probleem: ordening van cache hits t.o.v. coherentietrafiek Globaal probleem: ordening van invalidates en cache misses 16

Globale probleem Er is ergens in het systeem één punt nodig waar de cache misses en invalidaties geordend worden Kleine multiprocessor met gedeelde bus Toegang tot de bus wordt geordend Grote multiprocessor met een directory Toegangen ordenen aan de ingang van de directory of in de interconnectie 17

Lokale probleem Ordenen van cache hits t.o.v. coherentietrafiek Eenvoudig in OoO processor De load/store queue uitbreiden om ook adressen van de globale stroom te bekijken Gebeurt toch reeds voor respecteren van RAW afhankelijkheden tussen geheugenoperaties (zie vroeger) 18

M.a.w. speculatie We speculeren dat een geheugenoperatie niet geordend moet worden Indien later blijkt dat ordening vereist is, heruitvoeren Dit mechanisme is reeds aanwezig voor de OoO uitvoering van geheugenoperaties (load bypassing en load forwarding) We hebben dus een mechanisme nodig om inbreuk op de ordening te detecteren 19

Uitbreiding in OoO processor finished load buffer OoO processorkern bus upgrades bus writes CPU B CPU C CPU D in-order commit CPU A bus 20

Detectie van inbreuk op ordening We markeren een speculatieve leesoperatie indien die hetzelfde adres refereert als het adres dat op de bus verschijnt t.g.v. een externe schrijfoperatie Bij completion van een gemarkeerde leesoperatie, de leesoperatie beschouwen als een foutief voorspelde sprong De leesoperatie en alle daarop volgende instructies opnieuw ophalen en uitvoeren Geïmplementeerd in MIPS R10K, HP PA-8000 en Intel Pentium Pro 21

Voorbeeld 1 Draad 1 Draad 2 st A=1 ld B...... ld A... ld B st A coherentie ld A execute commit ld B ld A 22

Voorbeeld 2 Draad 1 st A=1 if (ld B==0) { // critical section st A=0 } ld B Draad 2 st B=1 if (ld A==0) { // critical section st B=0 } st B=1 st A=1 beiden in kritische sectie ld A ld A st B=0 execute commit ld B st A=0 23

Voorbeeld 2 (bis) Draad 1 st A=1 if (ld B==0) { // critical section st A=0 } ld B Draad 2 st B=1 if (ld A==0) { // critical section st B=0 } st B=1 ld A ld A st A=1 st B=0 execute commit ld B ld B st A=0 24

SC versoepelen in hardware Wordt vaak toegepast MIPS R10K, HP PA-8000, Intel Pentium Pro Heeft beperkingen Vereist extra hardware Niet alle processors ondersteunen dit Toepasbaarheid is beperkt tot de processor Dit is een microarchitecturale optimalisatie Compiler is niet in staat instructies te herordenen 25

Overzicht Sequentiële consistentie Versoepelde consistentie Transactional memory 26

Relaxed Consistency Waarom niet het geheugenmodel wijzigen/versoepelen? Relaxed memory consistency model Idee Eenvoudige hardware Programmeur/compiler moet geheugenoperaties aanduiden die geordend moeten worden Alle andere operaties hoeven niet geordend te worden Voordelen Stelt compiler én processor in staat geheugenoperaties te herordenen 27

Versoepelde geheugenmodellen Groep 1: een leesoperatie kan een schrijfoperatie bypassen TSO, PC Groep 2: een schrijfoperatie kan ook een schrijfoperatie bypassen PSO Groep 3: lees- en schrijfoperaties kunnen ook leesoperaties bypassen WO, RC, RMO, Alpha, PowerPC [Merk op: een read-modify-write instructie is een lees- én schrijfoperatie] 28

Groep 1: Versoepelen van schrijf-lees ordening Een leesoperatie kan een schrijfoperaties bypassen Kortere latentie leesoperatie Latentie verbergen van schrijfoperatie 2 varianten TSO: total store ordering Garandeert write atomicity Write atomicity = alle schrijfoperaties (tot om het even welke geheugenlocatie) zijn zichtbaar voor alle processors in dezelfde ordening PC: processor consistency Garandeert geen write atomicity, enkel totale ordening van schrijfoperaties per processor 29

Fragment 1 Draad 1 A = 1; flag = 1; Draad 2 while (flag == 0); print A; TSO en PC garanderen SC semantiek 30

Fragment 2 A = 1; B = 1; Draad 1 print B; print A; Draad 2 SC garandeert dat Indien 1 geprint wordt voor B, ook 1 geprint wordt voor A Zo ook TSO en PC 31

Fragment 3 Draad 1 Draad 2 Draad 3 A = 1; while (A == 0); B = 1; while (B == 0); print A; SC garandeert dat A als 1 geprint wordt Zo ook TSO Maar niet PC Schrijfoperatie B=1; kan vroeger zichtbaar zijn voor draad 3 dan schrijfoperatie A=1; Dit kan optreden tgv. buffering in processor, cache en geheugencontroller, interconnectienetwerk, etc. 32

Fragment 4 A = 1; print B; Draad 1 B = 1; print A; Draad 2 SC garandeert dat Onmogelijk 0 geprint wordt voor zowel A als B Dit is de basis voor Dekker s algoritme Software manier voor mutuele exclusie Maar niet TSO en PC Omdat een leesoperatie een schrijfoperatie kan bypassen M.a.w., Dekker s algoritme werkt niet in TSO en PC 33

Hoe SC garanderen wanneer nodig in TSO/PC model? Mechanisme nodig dat garandeert dat (a) Een leesoperatie niet vóór een schrijfoperatie (waarbij lees- na schrijfoperatie komt in programmavolgorde) uitgevoerd wordt (b) Write atomicity vóór een leesoperatie (a) Kan gegarandeerd worden via MEMBAR (memory barrier) of FENCE instructies 34

Memory barriers Een barrier is een instructie Bestaat typisch in verschillende varianten voor verschillende ordeningen Hier: write-to-read MEMBAR Alle schrijfoperaties vóór de barrier moeten uitgevoerd zijn alvorens de uitvoering van de leesoperatie gestart kan worden B.v. fragment 4: Draad 1 A = 1; w2r_membar; print B; Draad 2 B = 1; w2r_membar; print A; 35

SC semantiek bij TSO/PC MEMBAR vóór de leesoperatie OF De leesoperatie vervangen door een readmodify-write instructie Leesoperatie wordt behandeld als een schrijfoperatie, dus geen herordening 36

Barrier implementatie Processor blokkeren (stall) tot alle voorgaande geheugenoperaties architecturaal gezien uitgevoerd zijn (completed) Vereist inspecteren ROB store buffer alle invalidaties in andere CPUs tgv. een store vóór de barrier moeten afgehandeld zijn Kan honderden processorcycli duren 37

Groep 2: Versoepelen van schrijf-schrijf ordening Een schrijfoperatie kan ook een schrijfoperatie (naar een andere geheugenlocatie) bypassen Laat write buffer merging toe Latentie van schrijfoperaties verbergen PSO: partial store ordering Sun Sparc Garandeert ook write atomicity 38

Fragment 1 Draad 1 A = 1; flag = 1; Draad 2 while (flag == 0); print A; TSO en PC garanderen SC semantiek PSO niet 39

Fragment 2 A = 1; B = 1; Draad 1 print B; print A; Draad 2 SC garandeert dat Indien 1 geprint wordt voor B, ook 1 geprint wordt voor A Zo ook TSO en PC Is niet het geval voor PSO 40

Fragment 3 Draad 1 Draad 2 Draad 3 A = 1; while (A == 0); B = 1; while (B == 0); print A; SC garandeert dat A als 1 geprint worden Zo ook TSO en PSO Wegens write atomicity Maar niet PC Wegens geen write atomicity 41

Fragment 4 A = 1; print B; Draad 1 B = 1; print A; Draad 2 SC garandeert dat Onmogelijk 0 geprint wordt voor zowel A als B Maar niet voor TSO, PC en PSO Omdat een leesoperatie een schrijfoperatie kan bypassen 42

Hoe SC garanderen wanneer nodig in PSO model? Via write-to-write MEMBAR of STBAR Alle schrijfoperaties vóór de barrier moeten uitgevoerd zijn alvorens de uitvoering van de volgende schrijfoperatie gestart kan worden B.v. fragment 1: Draad 1 A = 1; w2w_membar; flag = 1; Draad 2 while (flag == 0); print A; 43

Groep 3: Alle ordeningen versoepelen Geen enkele programma-ordening wordt gegarandeerd Bovenop groep 1 en 2: lees- en schrijfoperaties kunnen ook leesoperaties bypassen Verbergen van latentie tgv. leesoperaties Out-of-order uitvoering van leesoperaties Maakt heel wat compileroptimalisaties mogelijk 44

Verschillende modellen WO: weak ordering RC: release consistency Commerciële implementaties RMO: relaxed memory ordering Sun Sparc V9 Digital Alpha IBM PowerPC 45

WO: Weak Ordering Idee: Parallelle programma s gebruiken synchronisatie-operaties om geheugentoegangen te coördineren Tussen synchronisatie-operaties: geen ordening van geheugenoperaties 46

Voorbeeld Draad 1... lock (taskq); newtask->next = head; if (head!= NULL) head->prev = newtask; head = newtask; unlock (taskq);... Draad 2... lock (taskq); newtask->next = head; if (head!= NULL) head->prev = newtask; head = newtask; unlock (taskq);... Semantiek blijft behouden Ondanks herordeningen tss. synchronisatie-operaties Zolang geheugenoperaties niet herordend worden tov. synchronisatie-operaties, en vice versa 47

SYNC operatie Alle geheugenoperaties vóór de SYNC operatie moeten uitgevoerd zijn alvorens de uitvoering van de volgende geheugenoperatie gestart kan worden read/write read/write SYNC read/write read/write SYNC read/write read/write 48

RC: Release Consistency Draad 1... lock (taskq); newtask->next = head; if (head!= NULL) head->prev = newtask; head = newtask; unlock (taskq);... acquire: toegang krijgen tot code of variabelen release: toegang verlenen (aan andere processor) tot code of variabelen Uitbreiding op WO model door onderscheid te maken tussen verschillende types van synchronisatie 49

Acquire en Release Acquire Alle geheugenoperaties die volgen op de acquire kunnen niet uitgevoerd worden vóór de acquire acquire mag herordend worden tov. voorgaande operaties Release Alle geheugenoperaties die komen vóór de release moeten uitgevoerd zijn alvorens de release uit te voeren Operaties volgend op de release kunnen herordend worden tov. de release 50

read/write read/write 1 2 3 SYNC read/write read/write SYNC read/write read/write Weak Ordering read/write read/write 1 acquire read/write read/write 2 release Release Consistency read/write read/write 3 51

Commerciële implementaties Veronderstellen geen ordening Verschillen in de instructies die aangeboden worden om een ordening op te leggen Memory barriers Of fences genaamd ISA-specifiek 52

Voorbeeld 1: Digital Alpha Twee soorten fence instructies Memory barrier (MB) = synchronisatie-operatie zoals in WO Write memory barrier (WMB) = STBAR in PSO; legt enkel ordening op voor schrijfoperaties 53

Voorbeeld 2: Sun Sparc V9 RMO Relaxed memory ordering MEMBAR fence instructie met 4 flavor bits Read-to-read Read-to-write Write-to-read Write-to-write Elke combinatie van bits kan aangezet worden 54

Voorbeeld 3: IBM PowerPC Eén enkele fence instructie sync zoals MB instructie in Alpha ISA Geen write atomicity 55

56 SYNC neen ja ja ja PowerPC MB, WMB ja ja ja ja Alpha MEMBARs ja ja ja ja RMO REL, ACQ ja/neen ja ja ja RC SYNC ja ja ja ja WO STBAR ja ja ja PSO MEMBAR neen ja PC MEMBAR ja ja TSO ja SC operaties write atomicity r-to-r/w reorder w-to-w reorder w-to-r reorder model

Hardware/software interface Redeneren over toegelaten herordeningen is niet eenvoudig Ook portabiliteit is een mogelijks probleem B.v. een programma dat correct uitvoert op een TSO systeem zal niet correct uitvoeren op een RMO systeem Programmeermodel is vaak geïnspireerd op WO/RC modellen Programmeur moet synchronisatie toevoegen Compiler vertaalt synchronisatie in fence instructies Compiler en hardware herordenen geheugenoperaties 57

SC PC Consistentiemodellen in commerciële processors SGI MIPS Intel Pentium processor familie TSO Veel Sun Microsystems machines Geen ordening, enkel fence instructies Digital Alpha, IBM PowerPC, Sun Sparc V9 58

Overzicht Sequentiële consistentie Versoepelde consistentie Transactional memory 59

TM: motivatie We gaan het multi-core tijdperk in Zie volgende les Huidig programmeermodel op basis van synchronisatie via locks is ontoereikend Niet robust Moeilijk efficiënte code te schrijven Software met locks is niet composable 60

Locks zijn niet robust Stel: draad 1 neemt de lock en de load operatie (ld r1,a) veroorzaakt een page fault Zeer lange latentie Terwijl draad 1 de lock vasthoudt Draad 2 blijft in spin loop geen vooruitgang Draad 1 spin: cmpswp AL,1 bfail spin ld r1,a add r1,r1,1 st r1,a st 0,AL Draad 2 spin: cmpswp AL,1 bfail spin ld r1,a add r1,r1,3 st r1,a st 0,AL 61

Programmeren met locks is niet eenvoudig Coarse-grained locking Eenvoudig te programmeren Slechte prestatie Fine-grained locking Goede prestatie Moeilijk te programmeren 62

Software met locks is niet composable (1/2) lock T 1 hash tabel eerst lock nemen op T 1 add(t 1,item) item alvorens item toe te voegen kopieer element van T 1 naar T 2 delete(t 1,item) lock T 1 lock T 2 add(t 2,item) item item eerst lock nemen op T 2 alvorens item te verwijderen uit T 1 63

Software met locks is niet composable (2/2) kopieer element van T 1 naar T 2 delete(t 1,item) lock T 1 lock T 2 add(t 2,item) item item eerst lock nemen op T 2 alvorens item te verwijderen uit T 1 Stel: we willen deze methode als interface aanbieden Wat gebeurt er indien draad 1 een element wil kopiëren van T1 naar T2, en draad 2 van T1 naar T2? Mogelijks een deadlock Draad 1 neemt lock op T2, en draad 2 neemt lock op T1 Draad 1 probeert nadien lock to nemen op T2, en draad 2 probeert lock te nemen op T1 geen van beide maakt vooruitgang 64

Transactional Memory: basisidee Meerdere draden proberen gelijktijdig een kritische sectie te betreden op een atomaire manier Indien dat lukt: prima, pas architecturale toestand aan: commit Indien dat niet lukt: herstel de toestand zoals aan het begin van de kritische sectie (abort) en probeer opnieuw Programmeur specificeert de kritische secties maar zegt niet hoe dat moet gegarandeerd worden Dat gebeurt door het onderliggende TM systeem Draad 1 atomic{ ld r1,a add r1,r1,1 st r1,a } Draad 2 atomic{ ld r1,a add r1,r1,3 st r1,a } 65

Programmeren in TM lock (L); x++; unlock (L); atomic { x++; } Dit is wat de programmeur specificeert Het onderliggende systeem (compiler, VM, hardware, etc.) garandeert correcte uitvoering 66

Transactional Memory (1/2) Transactie Atomaire eenheid Een sequentie van operaties die ofwel volledig uitgevoerd wordt (commit), ofwel geen effect heeft (abort) Door programmeur gedefinieerd Gebaseerd op DBMS Toegang tot gemeenschappelijke data zonder locks Indien een conflict, herstel toestand, en probeer opnieuw 67

Transactional Memory (2/2) Alles of niets benadering: atomicity Bij commit, alle geheugenoperaties hebben terzelfdertijd effect Bij abort, geen enkele schrijfoperatie heeft effect Transactie is geïsoleerd: isolation Het effect van schrijfoperaties is enkel zichtbaar voor andere draden bij commit Geeft de illusie aan programmeur van seriële uitvoering Geen conflicterende geheugentoegangen door parallelle transacties vanuit andere draden Lost veel problemen van locks op: TM is robust, eenvoudig te programmeren, composable 68

TM: schaalbaarheid Parallelle leesoperaties tot dezelfde data Locks laten geen meerdere lezers toe TM wel, op automatische manier Parallelle lees- en schrijfoperaties tot disjuncte data Programmeur kan fine-grain locking toevoegen Niet eenvoudig Niet modulair TM garandeert fine-grain locking op automatische manier 69

TM implementatie (1) Data versioning Het beheren van verschillende versies van dezelfde data Twee benaderingen Eager versioning Past geheugentoestand onmiddellijk aan; en houdt undo log bij Snelle commit; trage abort Lazy versioning Houdt schrijfoperaties bij in buffer; past geheugentoestand aan bij commit Trage commit; snelle abort 70

Eager versioning begin van de transactie schrijf X 15 draad draad Undo Log X: 10 Undo Log X: 10 geheugen X: 15 geheugen commit transactie abort transactie draad draad X: 10 Undo Log X: 10 Undo Log X: 15 geheugen X: 10 geheugen 71

Lazy versioning begin van de transactie schrijf X 15 draad draad Write Buffer X: 15 Write Buffer X: 10 geheugen X: 10 geheugen commit transactie abort transactie draad draad X: 15 Write Buffer X: 15 Write Buffer X: 15 geheugen X: 10 geheugen 72

TM implementatie (2) Per transactie hebben we een een Read Set, en Geheugenlocaties gelezen door de transactie een Write Set Geheugenlocaties geschreven door de transactie Conflict treedt op indien ene draad een variabele leest die een andere draad wil schrijven Conflictdetectie op basis van vergelijken Read en Write Sets 73

TM implementatie (2) bis Conflictdetectie: twee benaderingen Optimistische benadering Bekijk lees- en schrijfoperaties enkel bij commit Veronderstel dat er geen conflicten zullen zijn Pessimistische benadering Bekijk lees- en schrijfoperaties tijdens uitvoering van transactie Gebruik contention manager om te beslissen over (i) stall, of (ii) abort (restart) Optimaliseer meest voorkomende geval 74

Optimistische detectie D1 D2 D1 D2 D1 D2 D1 D2 rd A wr A rd A rd A wr A wr B rd A wr A rd A wr A wr C commit restart commit commit restart commit commit rd A rd A wr A commit commit commit tijd succes abort succes abort 75

Pessimistische detectie D1 D2 D1 D2 D1 D2 D1 D2 rd A wr A rd A rd A wr A wr B rd A wr A rd A wr A stall restart restart wr C commit rd A commit rd A wr A commit rd A restart commit commit commit rd A wr A tijd succes stall abort restart geen 76 vooruitgang

Conflictdetectie Pessimistisch + Snelle detectie van conflicten Geen garantie voor vooruitgang; meer aborts Fine-grain communicatie Optimistisch + Garantie voor vooruitgang + Potentieel minder conflicten + Coarse-grain communicatie Trage detectie van conflicten 77

Transactional Memory Onderwerp van huidig onderzoek TM API Verschillende mogelijke TM implementaties Software Hardware Hybride software/hardware implementaties Ondersteuning in Sun Rock processor 78