CN2-lecture12
-
Upload
mihai-ilie -
Category
Documents
-
view
221 -
download
0
Transcript of CN2-lecture12
-
8/12/2019 CN2-lecture12
1/46
Calculatoare Numerice (2)
- Cursul 11 Multiprocesoare 2
20.02.20131
Facultatea de Automatic i Calculatoare Universitatea Politehnica Bucureti
-
8/12/2019 CN2-lecture12
2/46
Comic of the day
2
http://dilbert.com/strips/comic/1992-07-18/
http://dilbert.com/strips/comic/1992-07-18/http://dilbert.com/strips/comic/1992-07-18/http://dilbert.com/strips/comic/1992-07-18/http://dilbert.com/strips/comic/1992-07-18/http://dilbert.com/strips/comic/1992-07-18/http://dilbert.com/strips/comic/1992-07-18/ -
8/12/2019 CN2-lecture12
3/46
-
8/12/2019 CN2-lecture12
4/46
Reele de interconectareProcesor-Memorie
Reelele fluture i Bene: exemple de reele de interconectare procesor -memorie
(a) Butterfly network (b) Bene network
0
2
4
6
8
10
12
14
Processors Memories
Pr
ocessors
Memories
1
3
5
7
9
11
13
15
0
2
4
6
8
10
12
14
1
3
5
7
9
11
13
15
0
2
4
6
0
2
4
6
1
3
5
7
1
3
5
7
Row 0
Row 1
Row 2
Row 3
Row 4
Row 5
Row 6
Row 7
-
8/12/2019 CN2-lecture12
5/46
Reele de interconectareProcesor-Memorie
Interconectarea a opt procesoare la 256 bancuri de memorie la Cray Y-MP(1988), un supercomputer cu procesoare vectoriale multiple
0
1
2
3
4
5
6
7
8 8
8 8
8 8
8 8
4 4
4 4
4 4
4 4
4 4
4 4
4 4
4 4
Sections Subsections Memory banks
0, 4, 8, 12, 16, 20, 24, 2832, 36, 40, 44, 48, 52, 56, 60
1, 5, 9, 13, 17, 21, 25, 29
2, 6, 10, 14, 18, 22, 26, 30
3, 7, 11, 15, 19, 23, 27, 31
Processors
1 8 switches224, 228, 232, 236, . . . , 252
225, 229, 233, 237, . . . , 253
226, 230, 234, 238, . . . , 254
227, 231, 235, 239, . . . , 255
8/
8/
8/
8/
-
8/12/2019 CN2-lecture12
6/46
6
Consistena secvenial Model de memo rie
A system is sequentially consistent if the result ofany execution is the same as if the operations of allthe processors were executed in some sequentialorder, and the operations of each individual processorappear in the order specified by the program
Leslie Lamport
Sequential Consistency = ntreesere arbitrar cu pstrarea ordinei referinelor la memorie pentru programele secveniale
M
P P P P P P
-
8/12/2019 CN2-lecture12
7/46
7
Consistena secvenial Task- uri secveniale concurente : T1, T2Variabile partajate: X, Y (ini ial X = 0, Y = 10)
T1: T2:Store (X), 1 (X = 1) Load R 1 , (Y)Store (Y), 11 (Y = 11) Store (Y), R1 (Y= Y)
Load R 2 , (X)Store (X), R2 (X= X)
Care sunt rspunsurile corecte pentru X i Y ?
(X,Y) {(1,11), (0,10), (1,10), (0,11)} ?
Dac y este 11 atunci x nu poate fi 0
-
8/12/2019 CN2-lecture12
8/46
8
Consistena secvenial Consistena secvenial impune mai multe contrngeri
de ordonare de memorie ca i cele impuse dedependenele de memorie ale programelor uni -procesor( )
Care sunt cele din exemplele noastre ?
T1: T2:Store (X), 1 (X = 1) Load R 1 , (Y)Store (Y), 11 (Y = 11) Store (Y), R1 (Y= Y)
Load R 2 , (X)Store (X), R2 (X= X)
Cerine adiionale SC
Poate un sistem cu cache i out-of-orderexecution s pun la dispoziie o imagine consistentsecvenial a memoriei?
-
8/12/2019 CN2-lecture12
9/469
Excluziunea mutuala si instructiuni blocante
Instruciuni blocante atomice read-modify-writee.g., Test&Set, Fetch&Add, Swap vs
Instruciuni atomice non -blocante read-modify-writee.g., Compare&Swap,
Load-reserve/Store-conditional vsProtocoale bazate pe operaii Load Store obinuite
Performana depinde de mai muli factori :degree of contention,cache-uri,out-of-order execution i Loads & Stores
-
8/12/2019 CN2-lecture12
10/46
Probleme n implementareaConsistenei Secveniale
Implentarea CS este complicat de dou probleme
Capabiliti de execuie Out-of-order Load(a); Load(b) yes Load(a); Store(b) yes if a bStore(a); Load(b) yes if a bStore(a); Store(b) yes if a b
Cache-uriCache- urile pot preveni ca efectul unui store s fie vzut de alte procesoare
M
P P P P P P
-
8/12/2019 CN2-lecture12
11/46
11
Bariere la memorieIns t ruc iuni care secvenializeaz accesul la memorie
Procesoarele cu arhitecturi de memorie slab-cuplate (ex.Permit reordonarea op. Loads & Stores la adrese diferite)trebuie s implementeze bariere la memorie (instruciuni)pentru a fora serializarea acceselor la memorie
Exemple de procesoare cu memorii slab-cuplate:Sparc V8 (TSO,PSO): MembarSparc V9 (RMO):
Membar #LoadLoad, Membar #LoadStoreMembar #StoreLoad, Membar #StoreStore
PowerPC (WO): Sync, EIEIOBarierele la memorie (Memory fences ) sunt operaii costisitoare dar pot fi folosite numai atunci cnd sunt necesare
-
8/12/2019 CN2-lecture12
12/46
12
Folosirea barierelor la memorie
Producer posting Item x:Load R tail , (tail)Store (R tail ), xMembar SS Rtail =R tail +1Store (tail), R tail
Consumer:Load R head , (head)
spin: Load R tail , (tail)if R head ==R tail goto spinMembar LL
Load R, (R head )Rhead =R head +1Store (head), R head process(R)
Producer Consumer
tail head
Rtail Rtail Rhead R
ensures that tail ptris not updated before
x has been stored
ensures that R isnot loaded before
x has been stored
-
8/12/2019 CN2-lecture12
13/46
Data-Race Free Programsa.k.a. Proper ly Sync hron ized Programs
Process 1 ...Acquire(mutex);
< critical section>Release(mutex);
Process 2 ...Acquire(mutex);
< critical section>Release(mutex);
Variabilele de sincronizare (e.g. mutex) sunt separate devariabilele de date
Accesele la variabilele partajate de date sunt protejate n regiunile critice
n u avem conflicte de date n afar de lock -uri
n general, nu poate fi dovedit c un program este lipsit de conflicte de date.
-
8/12/2019 CN2-lecture12
14/46
Bariere pentru programeleconcurente
Process 1 ...Acquire(mutex);membar;
< critical section>
membar;Release(mutex);
Process 2 ...Acquire(mutex);membar;
< critical section>
membar;Release(mutex);
Modelul de memorie permite reordonarea instruciunilor dectre compilator, ct timp aceast reordonare nu este fcutpeste o barier Procesorul nu trebuie s fac prefetch sau s speculeze peste o barier
-
8/12/2019 CN2-lecture12
15/46
Excluziune mutual folosind Load/Store
Un protocol bazat pe dou variabile partajate c1 i c2.Ini ial c1 i c2 sunt 0 (not busy)
Care este problema?
Process 1 ...
c1=1;L: if c2=1 then go to L< critical section>
c1=0;
Process 2 ...
c2=1;L: if c1=1 then go to L
< critical section>c2=0;
Deadlock!
-
8/12/2019 CN2-lecture12
16/46
Excludere mutual : a doua ncercare Pentru a evita deadlock , las un proces s renune la lock
(i.e. Process 1 seteaz c1 la 0) ct timp ateapt .
Deadlock nu mai este posibil dar este o posibilitate redus de livelock .
Un proces nenorocos poate s nu intre niciodat n seciunea critic starvation
Process 1 ...
L: c1=1;if c2=1 then
{ c1=0; go to L}< critical section>
c1=0
Process 2 ...
L: c2=1;if c1=1 then
{ c2=0; go to L}< critical section>
c2=0
-
8/12/2019 CN2-lecture12
17/46
Un protocol pentru excludere mutual T. Dek k er, 1966
Process 1 ...c1=1;turn = 1;
L: if c2=1 & turn=1then go to L
< critical section>c1=0;
Protocol bazat pe trei variabile partajate c1, c2 i turn.
Iniial, c1 i c2 sunt 0 (not busy)
turn = i asigur c doar procesul i poate s atepte variabilele c1 i c2 asigur excluderea mutual Solu ia pentr n procese a fost dat de Dijkstrai este puin ma i complicat !
Process 2 ...c2=1;turn = 2;
L: if c1=1 & turn=2then go to L
< critical section>c2=0;
-
8/12/2019 CN2-lecture12
18/46
Analiza algoritmului lui Dekker
... Process 1
c1=1;turn = 1;L: if c2=1 & turn=1
then go to L< critical section>
c1=0;
... Process 2
c2=1; turn = 2;L: if c1=1 & turn=2
then go to L< critical section>
c2=0; S
c e n a r
i o 1
... Process 1 c1=1;turn = 1;
L: if c2=1 & turn=1then go to L< critical section>
c1=0;
... Process 2 c2=1;turn = 2;
L: if c1=1 & turn=2then go to L< critical section>
c2=0; S
c e n a r
i o
2
-
8/12/2019 CN2-lecture12
19/46
19
N-process Mutual ExclusionLamports Bakery Algorithm
Process i
choosing[i] = 1;num[i] = max(num[0], , num[N -1]) + 1;choosing[i] = 0;
for(j = 0; j < N; j++) {while( choosing[j] );while( num[j] &&
( ( num[j] < num[i] ) ||( num[j] == num[i] && j < i ) ) );
}
num[i] = 0;
Initially num[j] = 0, for all jEntry Code
Exit Code
-
8/12/2019 CN2-lecture12
20/46
20
Consiste na memoriei la SMP-uri
Presupunem c CPU-1 actualizeaz A la 200 .write-back : memoria si cache -2 au valori vechi
write-through : cache-2 are valoarea veche
Conteaz aceste valori neactualizate ?Cum este vzut memoria partajat de software?
cache-1A 100
CPU-Memory bus
CPU-1 CPU-2
cache-2A 100
memoryA 100
-
8/12/2019 CN2-lecture12
21/46
Write-back Caches & SC
T1 is executed
prog T2LD Y, R1
ST Y, R1 LD X, R2ST X,R2
prog T1ST X, 1
ST Y,11
cache-2cache-1 memoryX = 0
Y =10X= Y=
X= 1
Y= 11
Y =
Y=X =X=
cache-1 writes back YX = 0Y = 11X= Y=
X= 1Y=11
Y =Y=X =X=
X = 1Y =11X= Y=
X= 1Y=11
Y = 11Y= 11 X = 0X= 0 cache-1 writes back X
X = 0Y =11X= Y=
X= 1Y=11
Y = 11Y=11X = 0X= 0
T2 executed
X = 1Y =11X= 0Y=11
X= 1Y=11
Y =11Y=11X = 0X= 0
cache-2 writes back X & Y
-
8/12/2019 CN2-lecture12
22/46
Write-through Caches & SCcache-2
Y =Y=X = 0X=
memoryX = 0Y =10X= Y=
cache-1X= 0Y=10
prog T2LD Y, R1
ST Y, R1 LD X, R2ST X,R2
prog T1
ST X, 1ST Y,11
Cache-urile write-through nu meninnici consistena secvenial
T1 executedY =
Y=X = 0X=
X = 1
Y = 11X= Y=
X= 1
Y= 11
T2 executed Y = 11Y=11X = 0X= 0
X = 1Y =11X= 0Y=11
X= 1Y=11
-
8/12/2019 CN2-lecture12
23/46
Meninerea consisteneisecveniale (CS) CS este suficient pentru programe tip
producer-consumer i cu excluziune mutual (e.g., Dekker)
Copiile multiple ale unei locaii n diferite Cache-uri pot cauza degradarea CS.
Este nevoie de suport hardware pentru doar un singur procesor la un moment datare permisiune de write la o locaie de memorie
nici un procesor nu poate s ncarce o copie a vechii locaii dup o scriere Protocoale de coeren a cache -ului
-
8/12/2019 CN2-lecture12
24/46
Protocoale de menin e re a coereneicache pentru CS
write request: adresa este invalidat ( actualizat ) n toat ecache- urile nainte (dup) o operaie de write
read request:
dac o este gasit o copie murdar ntr -uncache, se efectueaz un write -back nainte decitirea memoriei
Ne vom concentra pe protocoale deInvalidare i nu pe protocoale Update
-
8/12/2019 CN2-lecture12
25/46
Warmup: Parallel I/O
(DMA vine de la Direct Memory Access)
Fie Cache-ul fie DMA-ulpot s fie Bus Master i s
fac transferuri la un mom. dat DISK
DMA
PhysicalMemory
Proc.
R/W
Data (D) Cache
Address (A)
AD
R/W
Page transfers
occur while theProcessor is running
MemoryBus
-
8/12/2019 CN2-lecture12
26/46
Probleme cu Parallel I/O
Memorie Disc: Memoria fizic poate fi
neactualizat dac copia din Cache este murdar Disc Memorie: Cache- ul poate s conin datevechi i s nu vad write -urile la memorie
DISK
DMA
PhysicalMemory
Proc.Cache
MemoryBus
Cached portionsof page
DMA transfers
C h i l i l i
-
8/12/2019 CN2-lecture12
27/46
Cache- uri multiple icoerena cache -urilor
Memoriile cache dedicate fiecrui procesor reduc traficul la memoriaprocipal (prin reeaua de interconectare) dar introduc o serie deprobleme de consisten.
0 0
1 1
m 1
Processor-to-
memorynetwork
p 1
Processor-to-
processornetwork
Processors Caches Memory modules
Parallel I/O
. . .
.
.
.
.
.
.
-
8/12/2019 CN2-lecture12
28/46
Starea copiilor de date
Diferite tipuri de blocuri de date din cache pentru un procesor paralel cumemorie principal centralizat i cache -uri locale pentru fiecare procesor
0
1 Processor-to-
memorynetwork
p 1
Processor-to-
processornetwork
Processors Caches Memory modules
Parallel I/O
. . .
.
.
.
.
.
.
w x
y
z
wz
wy
xz
Multiple consistent
Single consistent
Single inconsistent
Invalid
m 1
0
1
-
8/12/2019 CN2-lecture12
29/46
Snoopy Cache Goo dm an 1983Idee: S avem un cache care spioneaz (snoop upon)transferurile DMA, i atunci do the right thing Etichetele snoopy cache sunt dual-port
Proc.
Cache
Snoopy read portattached to MemoryBusData
(lines)
Tags andState
A
D
R/W
Used to drive Memory Buswhen Cache is Bus Master
A
R/W
A i il S C h t
-
8/12/2019 CN2-lecture12
30/46
Aciunile Snoopy Cache pentruDMA
Observed BusCycle Cache State Cache Action
Address not cached
DMA Read Cached, unmodifiedMemory Disk Cached, modified
Address not cached
DMA Write Cached, unmodified
Disk Memory Cached, modified
No action
No action
No action
Cache intervenes
Cache purges its copy
???
-
8/12/2019 CN2-lecture12
31/46
Shared Memory Multiprocessor
Folosete mecanismul snoopy pentru a pstraconsistena memoriei pentru toate procesoarele
M1
M2
M3
SnoopyCache
DMA
PhysicalMemory
MemoryBus
SnoopyCache
SnoopyCache
DISKS
Protocol snoopy de
-
8/12/2019 CN2-lecture12
32/46
Protocol snoopy decoeren cache
Automat FSM pentru un protocol de coeren cache ce folosete cachewrite-back
CPU reador write hit
Invalid
Shared(read-only)
Exclusive(writable)
CPU read hit
CPU read miss:signal read miss
on bus
CPU w rite miss:signal write miss
on bus
CPU w rite hit: signal write miss on bus
Bus write miss:write back cache line
Bus write miss
Bus read miss: write back cache line
P
C
P
C
P
C
P
C
BusMemory
-
8/12/2019 CN2-lecture12
33/46
Diagrama de tranziii pentru Cache Pro toco lu l MSI
M
S I
M: ModifiedS : Shared
I : Invalid
Fiecare linie din cache are tag
Address tagBiistare
Write miss
Alt procesor dorete s scrie
Read
miss
Alt procesor dorete s scrie
Citire de laOrice procesor
P1 citete sau scrie
Starea cachepentruprocesorul P 1
E l d
-
8/12/2019 CN2-lecture12
34/46
Exemplu cu dou procesoare (Citesc i scriu aceeai linie din cache )
M
S I
Write miss
Readmiss
P2 intent to write
P2 reads,P
1 writes back
P1 readsor writes
P2 intent to write
P1
M
S I
Write miss
Readmiss
P1 intent to write
P1 reads,P2 writes back
P2 readsor writes
P1 intent to write
P2
P1 readsP1 writesP2 readsP2 writes
P1 writesP2 writes
P1 reads
P1 writes
-
8/12/2019 CN2-lecture12
35/46
Observa ie
Dac o linie este n starea M atunci nici un alt cachenu poate s aib o copie a linei !
Memor ia rmne coerent, nu pot exista copii diferite
M
S I
Write miss
Alt procesor dorete s scrie
Readmiss
Alt procesor dorete s scrie
Citire de laOrice procesor
P1 citete sau scrie
Starea cachepentruprocesorul P 1
MESI P l MSI b i
-
8/12/2019 CN2-lecture12
36/46
36
MESI: Protocol MSI mbuntit performane mrite pentru date locale
M E
S I
M: Modified Exclusive E: Exclusive, unmodifiedS : Shared I: Invalid
Fiecare linie are un tagAddress tag
Biistare
Write missAlt procesordorete s scrie
Read miss,shared
Alt procesordorete s scrie
P1 write
Citire de oriceprocesor
Alt procesor citete P1 face write back
P1 readP1 writeor read
Starea cache pt.procesorul P1
Read miss,not shared
Implementarea Algoritmului
-
8/12/2019 CN2-lecture12
37/46
Implementarea AlgoritmuluiSnoopy Cache
Structura principal a unui algoritm snoopy de coeren cache
Tags
Cachedataarray
Duplicate tagsand state store
for snoop side
CPU Main tags andstate store for
processor side
=?
=?
Processor sidecache control
Snoop sidecache control
Addr Addr CmdCmd BufferBufferSnoopstate
Systembus
Tag
Addr Cmd
State
Snoop optimizat cu cache uri
-
8/12/2019 CN2-lecture12
38/46
Snooper Snooper Snooper Snooper
Snoop optimizat cu cache-uriLevel-2
Procesoarele au de obice cache pe dou niveluri mic L1, mare L2 (de obicei ambele on chip acum)
Proprietatea de incluziune: intrrile din L1 trebuie s fie n L2
invalidare n L2 invalida re n L1 Snooping n L2 nu afecteaz limea de band CPU-L1
Ce probleme pot s apar ?
CPU
L1 $
L2 $
CPU
L1 $
L2 $
CPU
L1 $
L2 $
CPU
L1 $
L2 $
-
8/12/2019 CN2-lecture12
39/46
Interven ie
Cnd avem un read -miss pentru A n cache-2,se emite pe bus un read request pentru A Cache-1 trebuie s fac vizibil i s i schimbe starea n shared Memoria poate s rspund i ea la cerere !
tie memoria c are date vechi? Cache-1 trebuie s intervin prin controllerul dememorie pentru a da datele corecte pentru cache-2
cache-1A 200
CPU-Memory bus
CPU-1 CPU-2
cache-2
memory (stale data)A 100
-
8/12/2019 CN2-lecture12
40/46
False Sharing
state blk addr data0 data1 ... dataN
Un bloc cache conine ma i mult de un cuvnt dedate
Coerena cache -ului este fcut la nivel e bloc inu la nivel de cuvnt
Presupunem c M1 scrie word i i M2 scrie word k iambele cuvinte au aceeai adres de bloc .Ce se poate ntmpla ?
Si i i h il
-
8/12/2019 CN2-lecture12
41/46
41
Sincroniza rea i cache -urile:P robleme de performan
Protocoalele de coeren a cache -ului vor face mutex-ul s fac ping-
pong ntre cache -urile lui P1 i P2.Acest fenomen poate fi redus prin citirea locaiei iniiale a mutex-ului (non- atomic) i execuia unui schimb doar dac acesta are valoareazero.
cache
Processor 1R 1
L: swap (mutex), R;if then goto L;
M[mutex] 0;
Processor 2R 1
L: swap (mutex), R;if then goto L;
M[mutex] 0;
Processor 3R 1
L: swap (mutex), R;if then goto L;
M[mutex] 0;
CPU-Memory Bus
mutex=1cache cache
Performan a i traficul pe
-
8/12/2019 CN2-lecture12
42/46
Performan a i traficul pemagistrale
n general, o instruciune read-modify-writenecesit dou operaii pe magistral, dac nuavem alte operaii la memorie de ctre alteprocesoare
ntr-un scenariu multiprocesor, accesul tuturorcelolalte procesoare la magistral trebuie s fieblocat pe durata execuiei operaiei atomice deread-modify-write
costisitor pentru magistrale simple
ISA-urile moderne folosescload-reservestore-conditional
L d & S di i l
-
8/12/2019 CN2-lecture12
43/46
Load-reserve & Store-conditional
Dac un alt procesor vede o tranzacie de store laadresa din registrul de rezervare, bitul de rezervare
este setat la 0 Mai multe procesoare pot rezerva a simultan Aceste instruciuni sunt similare cu load i store obinuite,din pct de vedere al traficului pe bus
Registre speciale pentru stocarea flag-urilor dereserve, adresa i rezultatul s tore-conditionalLoad-reserve R, (a):
;R M[a];
Store-conditional (a), R:if == then cancel other procs
reservation on a;M[a] ;
status succeed;else status fail;
P f
-
8/12/2019 CN2-lecture12
44/46
Performan :Lo ad-reserve & Store-con di t ion al
Numrul total de tranzacii pe bus nu este
neaprat redus, dar spargerea unei instruciuniatomice n load-reserve & store-conditional:
crete utilizarea magistralei , mai ales pentrumagistralele care efectueaz tranzacii n maimulte etape
reduce efectul ping-pong pentru cachedeoarece procesoarele care ncearc s obinun semafor nu trebuie s fac un store defiecare dat
Limea de band limiteaz
-
8/12/2019 CN2-lecture12
45/46
Limea de band limiteazperformanele Avem un sistem multiprocesor cu memorie partajat construit n jurulunui singur bus cu limea de band de x GB/s. Cuvintele de instruciuni i date au fiecare 4B lime, fiecare instruciune necesit accesul n medie la 1.4 cuvinte din memorie (inclusiv la instruciunea nsi) . Ratacombinat de hit a cache-urilor este de 98%. Calculai limita sperioar aperformanei sistemului multiprocesor n GIPS. Liniile de adres suntseparate i nu afecteaz limea de band de date.
Solu ie
Execuia unei instruciuni implic un transfer de 1.4 0.02 4 = 0.112 B. Astfel, limita absolut a perfomanei este de x /0.112 = 8.93 x GIPS. Dac presupunem o lime a busului de 32 de bii, c nici un ciclu pe bus nu
se irosete i o frecven de ceas pe bus de y GHz, limita superioar aperfomanei devine 286 y GIPS. Magistralele opereaz la frecvene de0.1 - 1 GHz. Prin urmare, o performan apropiat de 1 TIPS (chiar i TIPS) este peste capabilitile acestui tip de arhitectur .
-
8/12/2019 CN2-lecture12
46/46
Acknowledgements
These slides contain material developed and copyright by:
Arvind (MIT) Krste Asanovic (MIT/UCB) Joel Emer (Intel/MIT) James Hoe (CMU) John Kubiatowicz (UCB) David Patterson (UCB)
MIT material derived from course 6.823UCB material derived from course CS252