PARALELIZAM NA NIVOU INSTRUKCIJA
description
Transcript of PARALELIZAM NA NIVOU INSTRUKCIJA
PARALELIZAM NA NIVOU INSTRUKCIJA
traženje paralelizma i van osnovnih blokova instrukcija
Odmotavanje petlji
• 15% instrukcija u cjelobrojnim operacijama su grananja
• Da bi se postigle veće performanse, neophodno je iskoristiti ILP u više osnovnih blokova istovremeno.
Kašnjenja FP jedinica
Instrukcija koja daje rezultat Instrukcija koja koristi rezultat Kašnjenje u ciklusima
FP ALU op Druga FP ALU op 3
FP ALU op Store double 2
Load double FP ALU op 1
Load double Store double 0
Neka se instrukcije pokreću svakog ciklusa sata i nema strukturnih hazarda .
Kako kompajler može povećati ILP odmotavanjem petlje?
for (i=1; i<=1000; i++)
x[i]=x[i]+s;
Direktni prevod:Loop: LD F0, 0(R1)
ADDD F4, F0, F2
SD 0(R1), F4
SUBI R1, R1, #8
BNEZ R1, Loop
Izvođenje po ciklusima
CiklusLoop: LD F0, 0(R1) 1
– zastoj 2– ADDD F4, F0, F2 3– zastoj 4– zastoj 5– SD 0(R1), F4 6– SUBI R1, R1, #8 7– zastoj 8– BNEZ R1, Loop 9– zastoj 10
Promjenom redoslijeda instrukcija
• Loop: LD F0, 0(R1)
» zastoj
ADDD F4, F0, F2
SUBI R1, R1, #8
» BNEZ R1, Loop ; odgođeno grananje i modifikovana instrukcija
» SD 8(R1), F4 ; (bilo je 0(R1)) i zamjena SD i SUBI
• ubrzanje sa 10 na 6 ciklusa!
Odmotavanje 4 tijela petlje• Loop: LD F0,0(R1)
ADDD F4, F0, F2
SD 0(R1), F4 ; preskače se SUBI i BNEZLD F6, -8(R1)ADDD F8, F6, F2SD -8(R1), F8 ; preskače se SUBI i BNEZLD F10, -16(R1)ADDD F12, F10, F2SD -16(R1), F12 ; preskače se SUBI i BNEZLD F14, -24(R1)ADDD F16, F14, F2SD -24(R1), F16SUBI R1, R1, #32BNEZ R1, Loop
Ušteđeno je 3 grananja i dekrementiranja R1. jedan prolaz traje 28 ciklusa (LD-1 zastoj, ADDD-2, SUBI-1, grananje-1, ostale 1) ili 7 cilusa po svakoj kopiji originalne petlje - sporije nego ranije
Optimizirana sekvenca instrukcija
• Loop: LD F0, 0(R1)
• LD F6, -8(R1)
• LD F10, -16(R1)
• LD F14, -24(R1)
• ADDD F4, F0, F2
• ADDD F8, F6, F2
• ADDD F12, F10, F2
• ADDD F16, F14, F2
• SD 0(R1), F4
• SD -8(R1), F8
• SUBI R1, R1, #32
• SD 16(R1), F12
• BNEZ R1, Loop
• SD 8(R1), F16 ; - 32 + 8 = -24 (u odnosu na (R1))
• 14 ciklusa - 3.5 po kopiji originalne petlje!!!
Odkrivanje i odkljanjanje zavisnosti
• 1.zavisnost od podataka – (eng. data dependences),
• 2.zavisnost imena – (eng. name dependences),
• 3. upravljačka zavisnost – (eng. control dependences).
Zavisnost imena se rješava reimenovanje registara
• odmotana petlja bez … i sa preiminovanjem registara• Loop: LD F0, 0(R1) Loop: LD F0,0(R1)
– ADDD F4, F0, F2 ADDD F4, F0, F2– SD 0(R1), F4 ;bez SUBI i BNEZ; SD 0(R1), F4– LD F0, -8(R1) LD F6, -8(R1)– ADDD F4, F0, F2 ADDD F8, F6, F2– SD -8(R1), F4 ;bez SUBI i BNEZ; SD -8(R1), F8– LD F0, -16(R1) LD F10, -16(R1)– ADDD F4, F0, F2 ADDD F12, F10, F2– SD -16(R1), F4 ;bez SUBI i BNEZ; SD -16(R1), F12– LD F0, -24(R1) LD F14, -24(R1)– ADDD F4, F0, F2 ADDD F16, F14, F2– SD -24(R1), F4 SD -24(R1), F16– SUBI R1, R1, #32 SUBI R1, R1, #32– BNEZ R1, Loop BNEZ R1, Loop
Uklanjanja upravljačke zavisnosti modifikovanim grananjima.
• Loop: LD F0, 0(R1)– ADDD F4, F0, F2– SD 0(R1), F4– SUBI R1, R1, #8 ; bez BNEZ– BEQZ R1, Exit– LD F6, 0(R1)– ADDD F8, F6, F2– SD 0(R1), F8– SUBI R1, R1, #8 ; bez BNEZ– BEQZ R1, Exit– LD F10, 0(R1)– ADDD F12, F10, F2– SD 0(R1), F12– SUBI R1, R1, #8 ; bez BNEZ– BEQZ R1, Exit– LD F14, 0(R1)– ADDD F16, F14, F2– SD 0(R1), F16– SUBI R1, R1, #8 ; bez BNEZ– BNEZ R1, Loop
• Exit:
DINAMIČKIO RASPOREĐIVANJE
INSTRUKCIJA
• hardver raspoređuje izvršenje instrukcija sa ciljem smanjivanja zastoja.
• prednosti:- omogućava rješavanje situacija kod kojih zavisnosti nisu poznate
u trenutku kompajliranja (zbog npr. pristupa memoriji),
-olakšavaju posao kompajlerima i čini ih jednostavnijim,
- omogućava efikasno izvršavanje koda kompajliranog za jednu PS-u na drugoj PS-i.
DINAMIČKO RASPOREĐIVANJE SA SEMAFOROM (CDC 6600)
• sve instrukcije prolaze kroz stepen za pokretanje po redu donošenja, gdje mogu biti u zastoju ili se proslijeđivati sljedećem stepenu i ući u izvršenje mimo reda
• Cilj semaforisanja je da održi ritam izvršenja od jedne instrukcije po ciklusu sata (kada nema strukturnih hazarda) izvršavanjem instrukcije što prije je to moguće
• potrebno je da više instrukcija bude u EX fazi istovremeno
Osnovna struktura ogledne arhitekture sa semaforom
Svaka instrukcija se izvršava u četiri
koraka • Izdavanje
• Čitanje operanada
• Izvršenje
• Pisanje rezultata
zamjenjuju ID, EX i WB korake kod ogledne PS-e.
Komponente semafora Instrukcija
Status instrukcija
Pokretanje Čitanje operanada Izvršenje završeno Upis rezultata
LD F6, 34(R2)
LD F2, 45(R3)
MULTD F0, F2, F4
SUBD F8, F6, F2
DIVD F10, F0, F6
ADDD F6, F8, F2
Ime
Status funkctionalnih jedinica
Zauzeto Op Fi Fj Fk Qj Qk Rj Rk
Cjelobr. Da Load F2 R3 Ne
Množač1 Da Mult F0 F2 F4 Cjelobr. Ne Da
Množač2 Ne
Sabirač Da Sub F8 F6 F2 Cjelobr. Da Ne
Djelitelj Da Div F10 F0 F6 Množ1 Ne Da
Status rezultata u registrima
F0 F2 F4 F6 F8 F10 F12 ... F30
FJ Mult1 Cjelobr. Sub Djelitelj
TOMASULOV ALGORITAM
• Robertu Tomasulo - IBM (FP-jedinica kod modela 360/91, 1969. god.)
• kombinuje osnovne elemente semaforiranja i uvodi reimenovanje registara
• RS baferuju operande za instrukcije koje čekaju da budu pokrenute
FP jedinica sa Tomasulom
Samo tri koraka izvršenja
• Pokretanje
• Izvršenje
• Pisanje rezultata
Struktura RS Instrukcija
Status instrukcije
Pokretanje Izvršenje Upis rezultata
LD F6, 34(R2)
LD F2, 45(R3)
MULTD F0, F2, F4
SUBD F8, F6, F2
DIVD F10, F0, F6
ADDD F6, F8, F2
Ime
Rezervaciona stanica
Zauzeto Op Vj Vk Qj Qk
Sabir1 Da SUB Mem[34+Regs[R2]] Load2
Sabir2 Da ADD Sabir1 Load2
Sabir3 Ne
Množ1 Da MULT Regs[F4] Load2
Množ2 Da DIV Mem[34+Regs[R2]] Množ1
Polje
Status registara
F0 F2 F4 F6 F8 F10 F12 ... F30
Qi Množ1 Load2 Sabir2 Sabir1 Množ2
Prednosti Tomasula
• 1.distribucija logike za otkrivanje hazarda, i
• 2.eliminisanje zastoja zbog WAW i WAR hazarda.
DINAMIČKO PREDVIĐANJE GRANANJA
• Cilj svih mehanizama predviđanja grananja je rano rješavanje problema grananja i smanjenje broja zastoja
• Najjednostavniji način dinamičkog (tj. hardverskog) predviđanja je pomoću bafera za predviđanje grananja ili tabele istorije grananja
2-bitna šema predviđanja grananja
G ra n a n je
G ra n a n je
G ra n a n je
B e z g ra n a n ja
B e z g ra n a n ja
B e z g ra n a n ja
B e z g ra n a n ja
P re d v iđ e n o g ra n a n je
P re d v iđ e n og ra n a n je
P re d v iđ e n ob e z g ra n a n ja
P re d v iđ e n o b e z g ra n a n ja
G ra n a n je
Tačnost predviđanja sa 4096-ulaznim dvo-bitnim baferom
za SPEC89 benčmark-programe
Tačnost predviđanja kod 4096-ulaznog dvo-bitnog bafera u odnosu na bafer
sa neograničenim brojem ulaza za SPEC89 benchmark-programe
(2,2)-bafer za predviđanje granajna koristi dvo-bitnu globalnu istoriju da bi
izabrao među četiri sklopa za predviđanje za svaku adresu grananja
BAFER ODREDIŠNIH ADRESA GRANANJA
• keš odredišnih adresa grananja (BTB/BTC)
Koraci pri obradi instrukcije sa
BTB-om
Drugi način realizacije BTB-a
• da se umjesto, ili pored, adresa grananjja, smještaju i njihove instrukcije (sa odredišne adrese).
• Time se omogućava:• - da vrijeme pristupa BTB-u bude i duže od
vremena između dva uzastopna pribavljanja instrukcija, pa bafer može biti veći, i
• - optimizacija - preklapanje grananja (branch folding) - 0-ciklusno bezuslovno i, ponekad, 0-ciklusno uslovno grananje
Predviđanje indirektnih skokova !?
• baferovati povratne adrese u strukturi sličnoj steku.
• ako je keš dovoljno (!?) velik, potpuno tačno će se predviđati povratne adrese
Tačnost predviđanja kada bafer povratne adrese radi kao stack
SUPERSKALARNI I VLIW PROCESORI
• Kako postići CPI<1?• Superskalarni procesori pokreću različit
broj instrukcija po ciklusu i koriste statičko ili dinamičko raspoređivanje instrukcija
• VLIW procesori pokreću određen broj instrukcija formatiranih kao jedna velika instrukcija ili kao paket instrukcija, a koriste statičko raspoređivanje instrukcija.
Superskalarna PS-a u radu
Tip instrukcije Segmenti PS-e
Cjelobr. instrukcija IF ID EX MEM WB
FP instrukcija IF ID EX MEM WB
Cjelobr. instrukcija IF ID EX MEM WB
FP instrukcija IF ID EX MEM WB
Cjelobr. instrukcija IF ID EX MEM WB
FP instrukcija IF ID EX MEM WB
Cjelobr. instrukcija IF ID EX MEM WB
FP instrukcija IF ID EX MEM WB
Primjer:
Loop: LD F0, 0(R1) ; F0 = element niza
– ADDD F4, F0, F2 ; dodavanje skalara iz F2
– SD 0(R1), F4 ; smještanje rezultata
– SUBI R1, R1, #8 ; dekrement pokazivača na ljedeću DW
– BNEZ R1, Loop ; grananje ako je R1!=0
Odmotana i preraspodijeljena sekvenca instrukcija na
superscalarnoj oglednoj PS-i Cjelobrojna instrukcija FP instrukcija Ciklus sata
LOOP: LD F0, 0(R1) 1
LD F6, -8(R1) 2
LD F10, -16(R1) ADDD F4, F0, F2 3
LD F14, -24(R1) ADDD F8, F6, F2 4
LD F18, -32(R1) ADDD F12, F10, F2 5
SD 0(R1), F4 ADDD F16, F14, F2 6
SD -8(R1), F8 ADDD F20, F18, F2 7
SD -16(R1), F12 8
SD -24(R1), F16 9
SUBI R1, R1, #40 10
BNEZ R1, LOOP 11
SD -32(R1), F20 12
WLIW
• Jednostavniji hardver, složeniji kompajler
• koristi više nezavisnih FJ
Primjer:popunjavanje resursa oko 60%
Pristup memoriji 1
Pristup memoriji 2
FP operacija 1
FP operacija 2
Cjelobrojna operacija/grananje
LD F0, 0(R1) LD F6, -8(R1)
LD F10, -16(R1) LD F14, -24(R1)
LD F18, -32(R1) LD F22, -40(R1) ADDD F4, F0, F2 ADDD F8, F6, F2
LD F26, -48(R1) ADDD F12, F10, F2 ADDD F16, F14, F2
ADDD F20, F18, F2 ADDD F24, F22, F2
SD 0(R1), F4 SD -8(R1), F8 ADDD F28, F26, F2
SD -16(R1), F12 SD -24(R1), F16
SD -32(R1), F20 SD -40(R1), F24 SUBI R1, R1, #56
SD -0(R1), F28 BNEZ R1, LOOP
OGRANIČENJA PROCESORA SA VIŠESTRUKIM
POKRETANJEM INSTRUKCIJA
• raspoloživost ILP-a (nezavisnih instrukcija)• dodatni hardver neophodan za realizaciju
pokretanja i izvršenja višestrukih operacija svakog takta (pogotovo SS)
• kod VLIW – odmotavanje i zapošljavanje FJ-a; zastoj (npr. cache miss ) u svakoj FJ-i izaziva zastoj procesora - sve FJ moraju biti sinhronizovane; binarna kompatibilnost u “familiji” procesora
Transmeta - Crusoe
Nardno predavanje?
• 6 PODRŠKA KOMPAJLERA U POVEĆANJU ILP-a
• 6.1 OTKRIVANJE I ODKLANJANJE ZAVISNOSTI
• 6.2 SOFTVERSKE PROTOČNE STRUKTURE
• 6.3 TRASIRANJE
• 7 PODRŠKA HARDVERA U POVEĆANJU ILP-a
• 7.1 USLOVNE INSTRUKCIJE
• 7.2 KOMPAJLERSKO SPEKULISANJE UZ PODRŠKU HARDVERA
• 7.3 SARADNJA HW-SW U SVRHU SPEKULACIJE
• 7.4 SPEKULISANJE KORIŠTENJEM BITA “OTROVA”
• 7.5 SPEKULATIVNE INSTRUKCIJE SA REIMENOVANJEM
• 7.6 HARDVERSKO SPEKULISANJE