You are on page 1of 70

Teorijski uvod Lockovi

Uvod

I Dostignut teoretski maksimum single-thread performansi


2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

Uvod
Teorijski uvod Lockovi

Uvod i konflikti
Thread

I Dostignut teoretski maksimum single-thread performansi


I Thread
2002. predstavlja kontekst izvršavanja nekog programa

I
I
Rešenje je
Konflikt meprona d̄eno u paralelizmu
d̄u threadovima – ukoliko
ne postoji uvod̄enjem
radeviše
nad
jezgara u jedan procesor
različitim podacima ili nad disjunktnim celinama istih
podataka/resursa
I U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga
I Konflikt nastaje kada više threadova želi da vrši operacije
I nad istim pa
Od sada podskupom resursa
na dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod
Bagovi

I Dostignut teoretski maksimum single-thread performansi


I Čak
2002.i kada konflikt postoji on se ne mora uvek ispoljiti

I
I Rešenje
Zbog togaje bagove
pronad̄eno
nije ulako
paralelizmu – uvod̄enjem više
reprodukovati
jezgara u jedan procesor

I
I Postoje problemi kao
U obe prethodne deadlock,
arhitekture livelock i (i
je postojala contention
postoji)
mogućnost multi-threadinga
I Debugging multi-thread programa je generalno veoma
I Od sada pa na dalje posmatraćemo sisteme koji
težak
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod safety
Thread

I Dostignut teoretski maksimum single-thread performansi


I 2002.
U nastavku ćemo smatrati da su programi koje koristimo
tačni
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
jezgara u jedan procesor
I To ne znači da oni neće izazvati konflikte kada se
I izvršavaju u više threadova
U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga
I Zato treba da obezbedimo da oni budu thread-safe
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod arhitekture
Primer

CPU
I Dostignut teoretski maksimum single-thread performansi
2002. CORE 1 CORE 2 CORE 8

I RešenjeL1jeCACHE L1 CACHE
pronad̄eno L1d̄enjem
u paralelizmu – uvo CACHE više
jezgara uL2 jedan
CACHE procesor
L2 CACHE L2 CACHE

I U obe prethodne arhitekture je postojala (i postoji)


L3 CACHE
mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threadingMEMORY

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

UvodHaswell-E
Intel

I Dostignut teoretski maksimum single-thread performansi


2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod situacije
Primer

I Multi-thread program koji vrši neku komplikovanu


I simulaciju
Dostignut teoretski maksimum single-thread performansi
2002.
I Za potrebe kasnije analize svaka iteracija simulacije se
beleži u jedinstven log fajl koji je zajednički za sve
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
threadove
jezgara u jedan procesor
I Samo beleženje se vrši pozivom konkretne funkcije
I writeLog(text)
U obe prethodne arhitekture je postojala (i postoji)
I mogućnost
Ceo programmulti-threadinga
se izvršava na jednom CPU koji ima
efektivno 8 jezgara
I Od sada pa na dalje posmatraćemo sisteme koji
I Koji su sve problemi
podržavaju koje moramo da rešimo?
multi-threading
I Konkurentno pisanje u fajl?

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod
writeLog funkcija

I Dostignut teoretski maksimum single-thread performansi


I Najjednostavnija
2002. implementacija bila bi:

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


void procesor
jezgara u jedan writeLog(char *text) {
fprintf(out, "%s", text);
I
}
U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga

I Od
Šta sada pa na ovde?
je problem dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod
writeLog funkcija – cont’d

I fprintf u ovom slučaju predstavlja critical section – kod


I koji samo jedan
Dostignut thread
teoretski sme da single-thread
maksimum izvršava u nekom trenutku
performansi
I 2002. u kodu želimo da onemogućimo da više od jednog
Stoga
threada istovremeno piše u fajl
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
I Jedno potencijalno rešenje:
jezgara u jedan procesor
void writeLog(char *text) {
I U obe prethodne arhitekture je postojala (i postoji)
acquireLock(lock);
mogućnost multi-threadinga
fprintf(out, "%s", text);
releaseLock(lock);
I Od sada pa}na dalje posmatraćemo sisteme koji
podržavaju multi-threading
I Ali kako implementirati ove funkcije?

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvodpokušaj
Prvi

void acquireLock(bool *lock) {


Dostignut teoretski
Iwhile(true) { maksimum single-thread performansi
2002.
if(*lock == false) {
*lock = true;
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
break;
jezgara
} u jedan procesor
}
} I U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga
void releaseLock(bool *lock) {
Od sada
I*lock pa na dalje posmatraćemo sisteme koji
= false;
} podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod
Atomske operacije

I Kod sa prethodnog slajda nije tačan


I Dostignut nam
Potrebna teoretski maksimum
je posebna single-thread
atomska performansi
(nedeljiva) mašinska
2002.
instrukcija!
I Za tu svrhu postoji compare_and_swap(Destination,
I Rešenje je prona
Comparand, d̄eno uatomska
Exchange) paralelizmu – uvokoja:
operacija d̄enjem više
jezgara u jedan procesor
I postavi Exchange na Destination ukoliko je prvobitna

vrednost Destination bila jednaka sa Comparand


I U obe prethodne
I vrati arhitekture
trenutnu vrednost je postojala
Destination (i postoji)
u suprotnom
mogućnost multi-threadinga
I Ova instrukcija zavisi od arhitekture:
I InterlockedCompareExchange
OdI sada – MSDN
pa na dalje posmatraćemo operacija
sisteme koji na
Windowsu
podržavaju multi-threading
I __sync_val_compare_and_swap – u slučaju GCC kompajlera
na Linux sistemima

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvodand set (TAS) lock


Test

voidDostignut teoretski maksimum


*lock) { single-thread performansi
I
acquireLock(bool
2002.
while(CAS(lock, false, true)) {
/* Nothing */
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
}
} jezgara u jedan procesor

voidUreleaseLock(bool
obe prethodne arhitekture
*lock) {je postojala (i postoji)
I
mogućnost
*lock multi-threadinga
= false;
}
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvodand test and set (TATAS) lock


Test

voidDostignut teoretski maksimum


*lock) { single-thread performansi
I
acquireLock(bool
2002.
do {
while(*lock) {}
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
} while(CAS(lock, false, true));
} jezgara u jedan procesor

voidUreleaseLock(bool
obe prethodne arhitekture
*lock) {je postojala (i postoji)
I
mogućnost
*lock multi-threadinga
= false;
}
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod
Problemi sa TATAS

I Dostignut teoretski maksimum single-thread performansi


I Izaziva
2002. takmičenje za isti resurs (cache liniju koja sadrži
lock) – blago poboljšanje u odnosu na TAS
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
I
jezgara
Ne u jedan
postoji procesor
kontorla oko toga koji thread dobija lock (ne
postoji jasna ’polisa zaključavanja’ kao na primer FCFS)
I U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga
I Postoji problem stampeda – svi threadovi istovremeno
I pokušaju
Od sada pa da na
dobiju
daljelock (kako ovo rešiti?)
posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod
Rešenje stampeda: TATAS

I Dostignutkoristiti
Možemo teoretski maksimum
nekakav single-thread
back-off algoritam:performansi
2002.
I Posmatramo lock s iteracija
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
I Ako se lock ne oslobodi, čekamo lokalno w iteracija (bez
jezgara u jedan procesor
posmatranja locka!)
I U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga
I Generalno, vrednosti s i w biramo u zavisnosti od problema
I iOd
to najčešće
sada pa na koristeći ograničeni eksponencijalni
dalje posmatraćemo sisteme koji back-off
(back-off se resetuje kada
podržavaju multi-threading se lock dobije)

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod
Queue-based lockovi

I Dostignut teoretski maksimum single-thread performansi


I Svi threadovi koji žele da dobiju lock se postavljaju u red:
2002.
odmah dobijamo first come first serve (FCFS) ponašanje
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
I
jezgara
Svaki u jedan
thread procesor
se vrti lokalno na flagu u svom queue entry-ju:
nemamo pristup dubljim slojevima memorije dok čekamo
I U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga
I Oslobad̄anje (release) locka budi sledeći thread direktno:
I nemamo
Od stampeda
sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod lock
MCS

I Dostignut teoretski maksimum single-thread performansi


lock:
2002.
Lock predstavlja rep liste
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
jezgara u jedan procesor
QNode 1 QNode 2 QNode 3
I U obe prethodne arhitekture je postojala (i postoji)
mogućnost
FALSE multi-threadinga
FALSE FALSE

I Od Glava
sada pa na dalje posmatraćemo sisteme koji Rep
podržavaju multi-threading Lokalni flag

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod lock acquire


MCS

void acquireMCS(mcs *lock, QNode *qn) {


IQNode *prev;
Dostignut teoretski maksimum single-thread performansi
qn->flag
2002. = false;
qn->next = NULL;
Iwhile(true) {
Rešenje je prona d̄eno u paralelizmu – uvod̄enjem više
prev =u jedan
jezgara lock->tail;
procesor
/* Label 1 */
if(CAS(&lock->tail,
I U obe prev,
prethodne arhitekture qn)) break;
je postojala (i postoji)
}mogućnost multi-threadinga
if(prev != NULL) {
I Odprev->next
sada pa na=dalje
qn; posmatraćemo
/* Label 2 */ sisteme koji
while(!qn->flag) { } // Spin
podržavaju multi-threading
} }

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod lock release


MCS

Dostignut teoretski maksimum single-thread performansi


I

void2002.
releaseMCS(mcs *lock, QNode *qn) {
if(lock->tail = qn) {
I Rešenje je pronad̄eno u paralelizmu
if(CAS(&lock->tail, qn, NULL)) –return;
uvod̄enjem više
}jezgara u jedan procesor
while(qn->next == NULL) { }
U obe prethodne= arhitekture
Iqn->next->flag true; je postojala (i postoji)
} mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod
Proširimo problem

I Dostignut teoretski maksimum single-thread performansi


I Zamislimo
2002. da naš log fajl sada ima i programe koji on-line
analiziraju (čitaju) log-fajl
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
I U ovom uslučaju
jezgara jedan nam nije dovoljno da imamo samo mutex
procesor
(true/false lock) kao do sada (sem u slučaju jednog čitača)
I U obe prethodne arhitekture je postojala (i postoji)
I mogućnost
Stoga multi-threadinga
uvodimo koncept Reader-writer lockova – lockova
kod kojih omogućavamo da više čitača istovremeno
I Od sada fajlu
pristupa pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod acquire i release


Writer

void acquireWrite(int *lock) {


I Dostignut teoretski maksimum single-thread performansi
do {
2002.
if((*lock == 0) &&
(CAS(lock, 0, -1))) {
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
break;
jezgara u jedan procesor
} while(true);
} I
U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga
void releaseWrite(int *lock) {
*lock = 0;
I Od sada pa na dalje posmatraćemo sisteme koji
}
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod acquire i release


Reader

void acquireRead(int *lock) {


Dostignut
Ido { teoretski maksimum single-thread performansi
2002.
int oldVal = *lock;
if((oldVal >= 0) &&
I Rešenje je pronad̄eno
(CAS(lock, u paralelizmu
oldVal, – uvo
oldVal+1))) { d̄enjem više
jezgara u jedan
break; procesor
}} while (true);
} I U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga
void releaseRead(int *lock) {
Od sada pa-1);
IFADD(lock, na dalje posmatraćemo
// Atomic sisteme koji
fetch-and-add
} podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod vidovi konkurentnog procesiranja


Drugi

I Dostignut teoretski maksimum single-thread performansi


2002.
I Hijerarhijski lockovi – uspostavljaju prostorno-lokalan
redosled na threadove koji zahtevaju lock (npr. po jezgru
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
na kome se izvršavaju)
jezgara u jedan procesor

I
I U obe prethodne
Čitanje bez lockovaarhitekture je postojala
– u slučajevima (i postoji)
gde se malo piše a
mogućnost
puno multi-threadinga
čita, koriste se sheme kao verzioni brojevi (version
number schemes)
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod materijal
Dodatni

I Dostignut teoretski maksimum single-thread performansi


2002.
I "The art of multiprocessor programming", Herlihy & Shavit
– jako dobar pregled struktura podataka u deljenoj
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
memoriji, sa praktične i teoretske tačke gledišta
jezgara u jedan procesor

I
I U obe prethodne arhitekture je postojala (i postoji)
http://www.cs.rochester.edu/~scott/papers/1991_TOCS_
mogućnost–multi-threadinga
synch.pdf orignialni Mellor-Crummey i Scott rad iz 1991.
u kojem uvode MCS lockove
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod u paralelno procesiranje


Teorijski uvod Lockovi

Uvod

I Dostignut teoretski maksimum single-thread performansi


2002.
Ostale teme za superskalare i
jezgara uchip multiprocesore
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

Uvod
Teorijski uvod Lockovi

Uvod Ubacivanje instrukcija u prozor


• In order, pa to radi programski brojač, ako se nije
skočilo
I Dostignut teoretski maksimum single-thread performansi

• Skakanje
2002. – na osnovu predikcije!
• Širina reči instrukcijskog keša danas – 128 do 192
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
bita – tipično nekoliko instrukcija
jezgara u jedan procesor
• U slučaju da je RISC, tada su cele instrukcije u reči
(bloku)
I U obe prethodne arhitekture je postojala (i postoji)

• Akomogućnost
je CISC multi-threadinga
tada ne moraju instrukcije na početku
iIna kraju široke reči da budu cele!!!
Od sada pa na dalje posmatraćemo sisteme koji
• Moramo damulti-threading
podržavaju znamo granice instrukcija, a to se
može uraditi tek nakon bar delimičnog
dekodovanja!!
Uvod
Teorijski uvod Lockovi

UvodŠta se ubacuje po ciklusu u prozor -


RISC
Pravila:
I Dostignut teoretski maksimum single-thread performansi
1. Ako je PC pokazao na početak bloka i nema skokova,
2002.
učitavaju se dalje sve instrukcije iz bloka i šalju na
paralelno dekodovanje
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
2. Akojezgara
je PC upokazao početak bloka, a u bloku je 1
jedan procesor
instrukcija skoka => ako je predikcija da nema skoka
učitavaju se sve instrukcije, a ako je predikcija da ima,
I U obe prethodne arhitekture je postojala (i postoji)
učitavaju se sve instrukcije do instrukcije skoka i
mogućnost multi-threadinga
instrukcija skoka, a ostale ne ulaze u prozor
3. Ako je doskakanje negde u sredinu bloka, ne učitava se
I Od sada pa na dalje posmatraćemo sisteme koji
deopodržavaju
do tačkemulti-threading
uskakanja, a za ostatak važi 2., ali od tačke
uskakanja

3
Uvod
Teorijski uvod Lockovi

Uvod Dva skoka u bloku?


• Kompajler može da pravi razmak između
I Dostignut teoretski maksimum single-thread performansi
instrukcija
2002. skoka (selidbe operacija) od
najmanje onoliko instrukcija koliko ih ima u
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
bloku
jezgara u jedan procesor
• Limit – zbog jedne predikcije po ciklusu,
maksimalni instrukcijski
I U obe prethodne arhitekture jeparalelizam je 6-9
postojala (i postoji)
mogućnost multi-threadinga
instrukcija po ciklusu! (Samo DoAll traže više)
• Eksperimenti
I Od sada pa na sa
daljeprediktorima koji rade
posmatraćemo sisteme koji dve
predikcije
podržavajupo ciklusu
multi-threading

4
Uvod
Teorijski uvod Lockovi

Uvod Šta raditi sa CISC?


• Lepiti delove instrukcija iz susednih blokova, jer
I Dostignut teoretski maksimum single-thread performansi
zauzimaju 1-17 bajta!
2002.
• Raditi paralelno određivanje granica instrukcija u
blokovima
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više

• Kako to uraditi?
jezgara u jedanPrediktor
procesor nam dozvoljava da se
zalećemo i da radimo prefetching i delimično
I U obe prethodne arhitekture je postojala (i postoji)
dekodovanje većeg broja reči instrukcijskog keša u
mogućnostFIFO
kompleksni multi-threadinga
(in order issue) zbog paralelnog
I Od sada pagranica
određivanja instrukcija
na dalje posmatraćemo sisteme koji
• Radimo prefetching
podržavaju većeg broja bazičnih blokova na
multi-threading
dinamičkom tragu još pre instrukcijskog prozora!!!
5
Uvod
Teorijski uvod Lockovi

Uvod Posledice dohvatanja većeg broja


bazičnih blokova
• Potreban
I Dostignut je tracemaksimum
teoretski multiportni cacheperformansi
single-thread za
pamćenje
2002. dinamičkog traga unapred
• Multiportni, jerd̄eno
I Rešenje je prona se paralelno
u paralelizmučita
– uvona viševiše
d̄enjem
dekodera da biprocesor
jezgara u jedan se dobile mikrooperacije
• to
I Udodaje protočne
obe prethodne stepene
arhitekture i povećava
je postojala (i postoji) kaznu
mogućnost
zbog greškemulti-threadinga
u predikciji – nije previše značajno
• Imamo
I Od sadaograničenje u propusnosti
pa na dalje posmatraćemo sistemezbog
koji
podržavaju multi-threading
grananja

6
Uvod
Teorijski uvod Lockovi

Predobrada
Uvod za instrukcijski prozor
• Rešenje: dohvatati reči sa instrukcijama unapred
I Dostignut teoretski maksimum single-thread performansi
nekoliko
2002. bazičnih blokova i obezbediti brže
određivanje granica instrukcija nego što će se na
kraju ubacivati
I Rešenje je pronaud̄eno
prozor – Intel 50%
u paralelizmu – uvoviše
d̄enjem više
• Svejezgara
se touradi
jedan procesor
u pipeline-u: prediktor određuje šta
se
I Uubacuje, u pipeline-u
obe prethodne arhitekturese određuju
je postojala granice
(i postoji)
instrukcija
mogućnosti multi-threadinga
zatim radi dekodovanje, a na kraju
postoji i queue mikroinstrukcija koje se tek onda
I Od sada pa na dalje posmatraćemo sisteme koji
ubacuju u ROB, odnosno instrukcijski prozor
podržavaju multi-threading
(ugrađenu dataflow mašinu)

7
Uvod
Teorijski uvod Lockovi

Uvod Trace Cache


• Ključna ideja: Pakovati više nesusednih
bazičnih blokova
I Dostignut u jednu susednu
teoretski maksimum keš
single-thread reč
performansi
2002. BR BR BR

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor
BR BR BR

• U obe
IJedno prethodnejearhitekture
dohvatanje dohvatanjeje postojala
više (i postoji)
bazičnih blokova – gube
semogućnost multi-threadinga
granice bazičnih blokova
• ITrace cachepaindeksira
Od sada na dalje na osnovu startne
posmatraćemo adresekoji
sisteme i sledećih n
predikcija grananja
podržavaju multi-threading
• Korišćeno od Pentium 4 procesora za čuvanje dekodovanih
mikrooperacija 8
Uvod
Teorijski uvod Lockovi

Uvod Trace Cache za Haswell


I Dostignut teoretski maksimum single-thread performansi
2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor
Otkrivanje granica
instrukcija
I U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


Tracepodržavaju
cache multi-threading

9
Uvod
Teorijski uvod Lockovi

Uvod Zavisnosti po podacima preko


memorije
• Prave zavisnosti, antizavisnosti i izlazne zavisnosti,
I Dostignut teoretski maksimum single-thread performansi
jer nema dinamičkog preimenovanja za memoriju
2002.
• Store instrukcije treba po originalnom redosledu
izvršavati
I Rešenje jei tek kada
pronad̄enosu in order (commit)
u paralelizmu – uvod̄enjem–više
mali
ROB za store,
jezgara u jedanpa zbog redosleda nema izlaznih
procesor
zavisnosti
• Antizavisnosti
I U obe prethodne arhitekture je postojala (i postoji)
praktično ne mogu nastati, ako
mogućnost
postoji loadmulti-threadinga
buffer (load nije zavisan po podacima
izI registara, pa kreće odmah u izvršavanje ako
Od sada pa na dalje posmatraćemo sisteme koji
nema pravih zavisnosti preko memorije)
podržavaju multi-threading
• Ali tada imamo store – load – store problem
10
Uvod
Teorijski uvod Lockovi

Uvod Load-Store redovi


• Zavisnosti preko memorije bi mogli da značajno
I Dostignut teoretski maksimum single-thread performansi
ograniče performanse, zbog velike dužine
2002.
pipelina za Load i Store, upisa tek kada je commit
Store instrukcije i sporosti memorije
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
• Mora se ugraditi
jezgara kompleksna load-store
u jedan procesor
reordering tehnika da se smanji efektivno
kašnjenje memorije
I U obe prethodne dozvoljavanjem
arhitekture spekulativnih
je postojala (i postoji)
load-a
mogućnost multi-threadinga
• Zašto su spekulativni? – ne znamo da li neka
I Od sada pa na dalje posmatraćemo sisteme koji
ranija store instrukcija ne menja sadržaj lokacije,
podržavaju multi-threading
jer može još da se izračunava adresa

11
Uvod
Teorijski uvod Lockovi

Uvod Store Spekulativni Store Buffer


Store • Ne sme se menjati sadržaj memorije dok store
Address Data instrukcija nije komitovana. Zato spekulativni
Speculative store buffer čuva podatke spekulativnih store
Store Buffer
I Dostignut teoretski maksimum single-thread performansi
podataka
V S Tag2002.Data • Tokom dekodovanja se redom zauzimaju ulazi
V S Tag Data
(lokacije) po programskom redosledu
V S ITag Data
Rešenje je • d̄eno
prona Storeuoperacija se deli
paralelizmu na “store
– uvo address”
d̄enjem više i “store
V S Tag Data
data” mikro-operacije - “Store address”
jezgara u jedan procesor
izvršavanje upisuje tag, a “Store data” izvršavanje
Store
Commit
upisuje podatke
I U obe prethodne arhitekture je postojala (i postoji)
mogućnost
Path • Store se komituje kada se podaci i adresa za
multi-threadinga
najstariji store upišu i instrukcija je komitovana
Tags
I Od sada Data (ROB):
pa na dalje posmatraćemo sisteme koji
– Ukloni se 1 za spekulativni bit S i komitovani
podržavaju multi-threading
podaci se upisuju u cache
L1 Data • Moguć store abort reset valid bita V
Cache
Uvod 12
Teorijski uvod Lockovi

UvodLoad bypass iz spekulativnog store


buffera
Speculative Load Address
Store Buffer L1 Data
I Dostignut teoretski maksimum single-thread Cache
performansi
VS
2002.
Tag Data
VS Tag Data
V IS
VS
Tag
Rešenje
Tag je Data
prona Tags
Data d̄eno u paralelizmu
Data više
– uvod̄enjem
VS Tag
jezgara Data procesor
u jedan
VS Tag Data

U obe prethodne arhitekture je postojala (i postoji)


I Load Data
• Ako mogućnost
i store buffermulti-threadinga
i cache imaju podatak, koji uzeti?
Spekulativni store buffer
• Ako
I Od sada
je dva paista
puta naadresa
dalje posmatraćemo
u store bufferu, sisteme koji
koji upis uraditi?
podržavaju
Najnoviji multi-threading
store (jer je podatak ranije store operacije pokupljen iz
spekulativnog store buffer-a)

13
Uvod
Teorijski uvod Lockovi

Uvod Memorijske zavisnosti


I
sd x1, (x2)
Dostignut teoretski maksimum single-thread performansi
2002. ld x3, (x4)
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
• Kada se može raditi load?
jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

Uvod 14
Teorijski uvod Lockovi

Uvod In-Order Memory Queue


• Sve Load iteoretski
I Dostignut Store operacije moraju po
maksimum single-thread performansi
programskom
2002. redosledu
• => Load ijeStore
I Rešenje ne mogu
pronad̄eno da napuste
u paralelizmu ROB
– uvod̄enjem dok
više
svejezgara
prethodne Load i Store operacije ne završe
u jedan procesor

izvršavanje
I U obe prethodne arhitekture je postojala (i postoji)

• Load
mogućnost
i Storemulti-threadinga
mogu spekulativno u odnosu na
ostale instrukcije
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

Uvod 15
Teorijski uvod Lockovi

Uvod
Konzervativno O-o-O Load Izvršavanje
sd x1, (x2)
I Dostignut teoretski maksimum single-thread performansi
2002. ld x3, (x4)
Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
I
• Može load pre store-a ako se za adrese zna da
jezgara u jedan procesor
je
x4 != x2
• Svaka load adresa se poredi sa adresama svih
I U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga
prethodno nekomitovanih store operacija
• Ne raditi
I Od sadaload, ako je
pa na dalje bilo koja od
posmatraćemo prethodnih
sisteme koji
adresa store-a
podržavaju nepoznata
multi-threading

Uvod 16
Teorijski uvod Lockovi

Uvod Adresna Spekulacija


sd x1, (x2)
I Dostignut teoretski maksimum single-thread performansi
2002. ld x3, (x4)

• Pretpostavimo
I Rešenje je pronada je ux4
d̄eno != x2 – uvod̄enjem više
paralelizmu
• Izvrši
jezgara u jedan procesor
se load pre nego što je poznata store adresa
• Moraju se čuvatiarhitekture
I U obe prethodne sve nekomitovane
je postojala (i load/store
postoji)
adrese u programskom
mogućnost multi-threadingaredosledu
• Ako se dogodi da je x4==x2, obustavi load i sve
prateće
I Od sadainstrukcije (load exception)
pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading
• => Velika kazna za grešku zbog netačne
pretpostavke o različitosti adresa
Uvod 17
Teorijski uvod Lockovi

Uvod Load – Store kod Haswell


I Dostignut teoretski maksimum single-thread performansi
2002.
4 porta za memoriju
u instrukcijskom
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
prozoru!!!
jezgara
Tri jedinice u jedan procesor
adresnih
generatora
I U obe prethodne arhitekture je postojala (i postoji)
mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

18
Uvod
Teorijski uvod Lockovi

Uvod Haswell prozor, registri i FJ


Vektorski registri AVX i
vektorske ALU
I Dostignut teoretski maksimum single-thread performansi
2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

19
Uvod
Teorijski uvod Lockovi

Uvod

I Dostignut teoretski maksimum single-thread performansi


2002.

I Multithreading i Multicore
Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

20
Uvod
Teorijski uvod Lockovi

Uvod
Šta razmatramo kod Multithreading-a
I Dostignut teoretski maksimum single-thread performansi
• 2002.
Pregled Threading Algoritama
• Hyper-Threading
I Rešenje je pronad̄enoKoncepti
u paralelizmu – uvod̄enjem više
jezgara u jedan procesor
• Hyper-Threading Arhitektura
I U obe prethodne arhitekture je postojala (i postoji)
• Prednosti i mane
mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

21
Uvod
Teorijski uvod Lockovi

Uvod
Threading Algoritmi
• Time-slicing
– Dostignut
Procesorteoretski maksimum single-thread performansi
I
se prebacuje između niti u fiksnim
2002.
vremenskim intervalima.
– Rešenje
I Visoka cena, naročito
je prona ako je jedan
d̄eno u paralelizmu od
– uvo procesa
d̄enjem više u
stanju učekanja.
jezgara Fine grain
jedan procesor

• Switch-on-event
I U obe prethodne arhitekture je postojala (i postoji)
– mogućnost
Niti se menjaju u slučaju da se događa bilo koje
multi-threadinga
čekanje u niti koji se izvršava
I Od sada pa na dalje posmatraćemo sisteme koji
– podržavaju
Ako se čekaju podaci sa sporog izvora, CPU se
multi-threading
predaje nekom od drugih procesa (ne OS). Coarse
grain
22
Uvod
Teorijski uvod Lockovi

Uvod
Threading Algoritmi (2)
• Multiprocesiranje
I Dostignut teoretski maksimum single-thread performansi
– 2002.
Ukupan posao se distribuira na više procesora
– Značajan dodatni trošak
IRešenje je pronad̄eno u paralelizmu – uvod̄enjem više
• Simultaneous Multi-Threading (SMT)
jezgara u jedan procesor

I– UViše
obeniti se izvršavaju
prethodne na jejednom
arhitekture postojalaprocesoru
(i postoji) bez
izmene konteksta
mogućnost multi-threadinga
– Osnova za Intelovu Hyper-Threading tehnologiju.
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

23
Uvod
Teorijski uvod Lockovi

Uvod
Hyper-Threading Concept
• U svakom trenutku u vremenu, samo deo
I Dostignut teoretski maksimum single-thread performansi
procesorskih
2002.
resursa se koristi za izvršavanje
programskog kôda niti
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
• Neiskorišćeni resursi mogu biti istovremeno
jezgara u jedan procesor
iskorišćeni za paralelno izvršavanje druge
I U obe prethodne arhitekture je postojala (i postoji)
niti/aplikacije
mogućnost multi-threadinga
• Kod servera ili klijentskih računara često
I Od sada pa na dalje posmatraćemo sisteme koji
postoji puno niti, pa je veoma korisno
podržavaju multi-threading

24
Uvod
Teorijski uvod Lockovi
Quick Recall: Many Resources IDLE!
Uvod For an 8-way
superscalar.

I Dostignut teoretski maksimum single-thread performansi


2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemoFrom:


sisteme koji
Tullsen,
Eggers, and Levy,
podržavaju multi-threading
“Simultaneous
Multithreading:
Maximizing On-chip
Parallelism, ISCA
25
Uvod
1995.
Teorijski uvod Lockovi

Uvod

I Dostignut teoretski maksimum single-thread performansi


2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

26
Uvod
Teorijski uvod Lockovi

Uvod

I Dostignut teoretski maksimum single-thread performansi


2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


(a) u jedan procesor
jezgara (b) (c) (d)

(a)USuperskalarni
I obe prethodneprocesor bez je
arhitekture multithreading-a
postojala (i postoji)
(b)mogućnost
Superskalarni procesor sa coarse-grain multithreading-om
multi-threadinga
(c) Superskalarni procesor sa fine-grain multithreading-om
I Od sada pa na dalje posmatraćemo sisteme koji
(d)podržavaju
Superskalarni procesor sa simultaneous multithreading-om
multi-threading
(SMT)

27
Uvod
Teorijski uvod Lockovi

UvodSimultaneous Multithreading (SMT)


Primer: novi Intel procesori sa “Hyperthreading”- om
Osnovna ideja: teoretski
I Dostignut Iskoristiti instrukcijski
maksimum nivo paralelizma
single-thread performansinad
više 2002.
niti istovremeno; tj. pretvoriti paralelizam na nivou
niti u dodatni instrukcijski nivo paralelizma
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
Iskoristiti sledeće
jezgara osobine
u jedan modernih procesora:
procesor
• Više funkcionalnih jedinica, pa postoji znatan višak FJ u
I U obe prethodne arhitekture je postojala (i postoji)
odnosu na prosečne potrebe jedne niti
mogućnost multi-threadinga
• Preimenovanje registara i dinamičko raspoređivanje
(ugrađena
I Od sadadata
pa naflow
daljemašina) - Više sisteme
posmatraćemo instrukcija
koji iz više
podržavaju
nezavisnih nitimulti-threading
mogu da koegzistiraju i da se istovremeno
izvršavaju, uz veći ukupni paralelizam dva smanjena
nepovezana dinamička DDG! 28
Uvod
Teorijski uvod Lockovi

Uvod
Hyper-Threading Arhitektura
• Prvo se pojavila kod Intel Xeon MP procesora
I Dostignut teoretski maksimum single-thread performansi
• Stvara
2002.iluziju kojom se jedan fizički procesor javlja
kao više (2) logička procesora
• Svaki logički
I Rešenje procesor
je prona ima
d̄eno u kopiju arhitekturalnog
paralelizmu – uvod̄enjem više
stanja
jezgara u jedan procesor
• Logički procesore dele jedan zajednički skup fizičkih
I U obe prethodne arhitekture je postojala (i postoji)
resursa za izvršavanje
mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

29
Uvod
Teorijski uvod Lockovi

Uvod
Hyper-Threading Arhitekture
• Operativni sistemi i korisnički konkurentni
I Dostignut teoretski maksimum single-thread performansi
programi
2002. mogu da rasporede procese ili niti na
logičke procesore kao da se raspoređuju na
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
multiprocesorski sistem sa istim brojem
jezgara u jedan procesor
fizičkih procesora
• Kako logički
I U obe procesori
prethodne mogu
arhitekture da koriste
je postojala (i postoji)deljene
mogućnost multi-threadinga
resurse:
I– Od
Cache,
sada izvršne jedinice,
pa na dalje Prediktore
posmatraćemo grananja,
sisteme koji
kontrolnumulti-threading
podržavaju logiku, OoO logiku, magistrale, fizičke
registre, ...
30
Uvod
Teorijski uvod Lockovi

Power 5 dataflow ...


Uvod

I Dostignut teoretski maksimum single-thread performansi


2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor

U obe prethodne arhitekture je postojala (i postoji)


I
• Zašto samo dve niti?multi-threadinga
mogućnost
– Sa 4, neki od deljenih resursa (fizički registri, cache, memorijski propusni
opseg)
I bi postao
Od sada uskodalje
pa na grlo posmatraćemo sisteme koji
• Cena: podržavaju multi-threading
– Power5 jezgro je oko 24% veći od Power4 jezgra zbog podrške za simultani
multithreading
31
Uvod
Teorijski uvod Lockovi

Uvod
Prednosti
Dostignut
• Kod nekih
I teoretski
procesora jemaksimum single-thread performansi
2002.
dodatna površina na čipu
okoI 5%
Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
• Nemajezgara
gubitka performansi
u jedan procesor
ako je samo jedna nit
I U obe prethodne arhitekture je postojala (i postoji)
aktivna, a poboljšane
mogućnost multi-threadinga
performanse sa dve niti
(dva
I manja
Od sada nepovezana
pa na dalje posmatraćemo sisteme koji
DDG podržavaju
niti istovremeno)
multi-threading
• Bolje iskorišćenje resursa
32
Uvod
Teorijski uvod Lockovi

Uvod
Mane
• Da se iskoristi,
I Dostignut mora
teoretski da bude
maksimum konkurentni
single-thread performansi
program
2002.

I
– Rešenje
Niti nisujedeterminističke i mora pažljivi dizajn
pronad̄eno u paralelizmu – uvod̄enjem više
aplikacije
jezgara u jedan procesor
– Niti imaju dodatnu kontrolnu logiku
IU obe prethodne arhitekture je postojala (i postoji)
• Konflikti deljenih
mogućnost resursa – cache i memorija
multi-threadinga
pre svega
I Od sada pa na dalje posmatraćemo sisteme koji

• Ukupni dobitak
podržavaju je mali, ali će rasti sa
multi-threading
veličinama instrukcijskog prozora!
33
Uvod
Teorijski uvod Lockovi

Uvod Multicore
• Multiprocesori na
I Dostignut teoretski čipu single-thread performansi
maksimum
• UMA
2002.multiprocesori (symmetric

multiprocessing)
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

34
Uvod
Teorijski uvod Lockovi

Osnovna Shared Memory Arhitektura


Uvod
• Procesori svi povezani na veliku deljenu memoriju
– Gde su cache memorije?
I Dostignut teoretski maksimum single-thread performansi
2002. P1 P2 Pn

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor
interconnect

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga
memory
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading
• Koja su ograničenja, kako su napravljeni, limiti, programiranje?

35
Uvod
Teorijski uvod Lockovi

Kako i gde Cache???


Uvod P1 Pn

$ $
Bus
I Dostignut teoretski maksimum single-thread performansi
2002. Mem I/O devices

• Za visoke performanse sa deljenom memorijom: koristi cache-


eve!
I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više

– Svaki
jezgara u jedan
procesor imaprocesor
jedan ili više svojih cache-eva
– Stavi podatke iz memorije u cache
U obe prethodne
–I Writeback arhitekture
cache: nemoj slati svejepodatke
postojala (i postoji)
preko bus-a u memoriju
mogućnost multi-threadinga
• Cache-evi smanjuju srednje kašnjenje memorijskog sistema
–I Automatska replikacija bliže procesoru
Od sada pa na dalje posmatraćemo sisteme koji
– Važnije za multiprocesor
podržavaju nego za jedan procesor: veća su kašnjenja
multi-threading
• Normalan uniprocesorski mehanizam za dohvatanje podataka
• Problem: Koherencija Cache-eva!
36
Uvod
Teorijski uvod Lockovi

Primer problema koherencije Cache-a


Uvod
P1 P2 P3
u=? 3
u=?
4 5 $
$ $
I Dostignut u :5 u = 7
u :5 teoretski maksimum single-thread performansi
2002.

I Rešenje je
1
pronad̄eno u paralelizmu – uvo d̄enjem više
I/O devices
2
jezgara u jedanu :5
procesor
Memory
• Processori mogu da vide
I U obe prethodne različitejevrednosti
arhitekture postojalau(inakon događaja 3
postoji)
• Sa write back cache-evima,
mogućnost vrednost upisana u memoriju zavisi od
multi-threadinga
toga koji cache i kada da upiše u memoriju
• Kako
I Odovo
sadapopraviti na bus-u:
pa na dalje Coherencesisteme
posmatraćemo Protocolkoji
– Upotrebiti
podržavajubus da emituje (broadcast) upise ili invalidacije
multi-threading
– Jednostavni protokoli zasnovani na braodcast-u na bus-u
– Bus može do 32- 64 processora (max)
37
Uvod
Teorijski uvod Lockovi

Ograničenja Bus-Based Shared Memory


Uvod
Assume:
I/O MEM ° ° ° MEM
1 GHz processor w/o cache
=> 4 GB/s inst BW per processor (32-bit)
I Dostignut teoretski maksimum single-thread performansi
=> 1.2 GB/s data BW at 30% load-store
2002.
140 MB/s
°°° Suppose 98% inst hit rate and 95% data hit rate
I Rešenje je pronad̄eno u =>paralelizmu
80 MB/s inst –
BWuvo
perd̄enjem
processorviše
jezgara
cache u jedan
cacheprocesor=> 60 MB/s data BW per processor

5.2 GB/s  140 MB/s combined BW


I UPROC
obe prethodne
PROC
arhitekture je postojala (i postoji)
mogućnost multi-threadinga
Assuming 1 GB/s bus bandwidth
\ 8 processors will saturate bus
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

38
Uvod
Teorijski uvod Lockovi

Uvod

I Dostignut teoretski maksimum single-thread performansi


2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

39
Uvod
Teorijski uvod Lockovi

Cache Organizacija za Multi-core


Uvod

• L1 cache je uvek privatan za core


IDostignut teoretski maksimum single-thread performansi
2002. može biti privatan ili deljeni
• L2 cache
Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više
I
• Prednosti deljenog L2 cache-a:
jezgara u jedan procesor
 efikasna dinamička alokacija prostora za svaki core
I U
Podaci deljeni odarhitekture
obe prethodne strane višejecore-ova se(ine
postojala repliciraju
postoji)
mogućnost multi-threadinga
• Prednosti privatnog L2 cache-a:
I Od
brzisada
pristup
pa privatnom L2 – dobro zasisteme
na dalje posmatraćemo male programe
koji
 podržavaju
privatan je bus do privatnog L2  manje sačekivanja
multi-threading

40
Uvod
Teorijski uvod Lockovi

Uvod Podsetnik: SMT


(Simultaneous Multi Threading)

Dostignut teoretski maksimum single-thread performansi


I
SMT2002.
vs. CMP

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga

I Od sada pa na dalje posmatraćemo sisteme koji


podržavaju multi-threading

41
Uvod
Teorijski uvod Lockovi

Uvod A Single Chip Multiprocessor


Superscalar (SS) SMT
I Dostignut teoretski maksimum single-thread performansi
2002.

I Rešenje je pronad̄eno u paralelizmu – uvod̄enjem više


jezgara u jedan procesor

I U obe prethodne arhitekture je postojala (i postoji)


mogućnost multi-threadinga
CMP
I Od sada pa na dalje posmatraćemo sisteme koji
podržavaju multi-threading

42
Uvod
Teorijski uvod Lockovi

Uvod Superskalar i SMT vs. CMP


Zašto Core-ovi: Problemi hardverskog projektovanja (za SS i SMT):
•Površina čipa raste kvadratno sa kompleksnošću core-a
I Dostignut teoretski maksimum single-thread performansi
• Broj
2002.
registara O(Instruction window size)
• Broj registarskih portova - O(broj izdatih instrukcija po ciklusu)
CMP
I rešava
Rešenje problem
je prona d̄eno(~ulinearna zavisnost
paralelizmu od ukupno
– uvod̄enjem višeizdatih
instrukcija)
jezgara u jedan procesor
•Sporiji takt
• Produžavaju
I U obe prethodnese žice zbog puno
arhitekture je MUX
postojala (i postoji)
• Veliki bufferi,multi-threadinga
mogućnost redovi i registarski file-ovi
Da bi stalo na IK, smanjuje se ILP, skraćuje Pipeline, pa Branch
Od sada pa na
mispredication
I daljesu
kazne posmatraćemo
manje sisteme koji
CMP
podržavaju multi-threading
brži takt, manji, oslanja se više na kompiler i na load
balancing
•Kompleksni dizajn i verifikacija
43
Uvod
Teorijski uvod Lockovi

Uvod Budućnost
• TLP (Thread Level Paralelizam) i PLP (Process Level Paralelizam)
postaju neminovnost
I Dostignut u budućnosti
teoretski maksimumi favorizuju CMP
single-thread i SMT na
performansi
procesorima.
2002.
•Kako iskoristiti - KDP, ali se mora obezbediti i balansiranje
I Rešenje
opterećenja je pronad̄eno u paralelizmu – uvod̄enjem više
procesora
•SMT jezgara u jedan procesor
(Hyperthreading) se adaptira na broj procesa i dinamički –
hardverski i transparentno deli procesorske resurse prema
I U obe prethodne arhitekture je postojala (i postoji)
zahtevima 2 procesa.
•Kadamogućnost multi-threadinga
nema multiprocesnog rada, superskalari i SMT procesori su
bolji od jednostavnih procesora u CMP
I Od sada pa na dalje posmatraćemo sisteme koji
•Kompajleri i dalje igraju veliku ulogu – prevode tako da kod u
podržavaju multi-threading
instrukcijskom prozoru u svakom trenutku bude što paralelniji, ali
ograničenje je nepoznavanje svih zavisnosti u vreme prevođenja
44
Uvod
Teorijski uvod Lockovi

Uvod SMT Dual-core: sve četiri niti mogu da se


izvršavaju konkurentno
L1 D-Cache D-TLB L1 D-Cache D-TLB
I Dostignut teoretski maksimum single-thread performansi
2002.
Integer Floating Point Integer Floating Point
L2 Cache and Control

L2 Cache and Control


I Rešenje je pronad̄eno u paralelizmu – uvo
Schedulers
d̄enjem više
Schedulers
jezgara u jedan procesor
Uop queues Uop queues
I U obe prethodne arhitekture je postojala (i postoji)
Rename/Alloc Rename/Alloc
mogućnost multi-threadinga
BTB Trace Cache uCode BTB Trace Cache uCode
I Od sada pa na daljeROM
posmatraćemo sisteme koji ROM
Decoder Decoder
podržavaju multi-threading
Bus

Bus

BTB and I-TLB BTB and I-TLB

45 Thread 1 Thread 3 Thread 2 Thread 4


Uvod
Teorijski uvod Lockovi

Uvod I7 - 4770
• 4I Haswell core-amaksimum single-thread performansi
Dostignut teoretski
• 2002.
8 thread-ova (2 po core-u)
• Niz vektorskih
I Rešenje je pronainstrukcija
d̄eno u paralelizmu – uvod̄enjem više
jezgara u jedan procesor
• Multiply-Add
• I U obe prethodne arhitekture je postojala (i postoji)
Enkripcija i digitalno potpisivanje
mogućnost multi-threadinga
u hardveru
postaju deo instrukcijskog seta
I Od sada pa na dalje posmatraćemo sisteme koji
• Grafičke funkcije visokog nivoa kao instrukcije
podržavaju multi-threading
– iako ima zaseban grafički procesor
46
Uvod

You might also like