40
PARALELIZAM NA NIVOU INSTRUKCIJA traženje paralelizma i van osnovnih blokova instrukcija

PARALELIZAM NA NIVOU INSTRUKCIJA

  • Upload
    emiko

  • View
    123

  • Download
    1

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: PARALELIZAM NA NIVOU INSTRUKCIJA

PARALELIZAM NA NIVOU INSTRUKCIJA

traženje paralelizma i van osnovnih blokova instrukcija

Page 2: PARALELIZAM NA NIVOU 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.

Page 3: PARALELIZAM NA NIVOU INSTRUKCIJA

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 .

Page 4: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 5: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 6: PARALELIZAM NA NIVOU INSTRUKCIJA

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!

Page 7: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 8: PARALELIZAM NA NIVOU INSTRUKCIJA

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!!!

Page 9: PARALELIZAM NA NIVOU INSTRUKCIJA

Odkrivanje i odkljanjanje zavisnosti

• 1.zavisnost od podataka – (eng. data dependences),

• 2.zavisnost imena – (eng. name dependences),

• 3. upravljačka zavisnost – (eng. control dependences).

Page 10: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 11: PARALELIZAM NA NIVOU INSTRUKCIJA

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:

Page 12: PARALELIZAM NA NIVOU INSTRUKCIJA

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.

Page 13: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 14: PARALELIZAM NA NIVOU INSTRUKCIJA

Osnovna struktura ogledne arhitekture sa semaforom

Page 15: PARALELIZAM NA NIVOU INSTRUKCIJA

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.

Page 16: PARALELIZAM NA NIVOU INSTRUKCIJA

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      

Page 17: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 18: PARALELIZAM NA NIVOU INSTRUKCIJA

FP jedinica sa Tomasulom

Page 19: PARALELIZAM NA NIVOU INSTRUKCIJA

Samo tri koraka izvršenja

• Pokretanje

• Izvršenje

• Pisanje rezultata

Page 20: PARALELIZAM NA NIVOU INSTRUKCIJA

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      

Page 21: PARALELIZAM NA NIVOU INSTRUKCIJA

Prednosti Tomasula

• 1.distribucija logike za otkrivanje hazarda, i

• 2.eliminisanje zastoja zbog WAW i WAR hazarda.

Page 22: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 23: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 24: PARALELIZAM NA NIVOU INSTRUKCIJA

Tačnost predviđanja sa 4096-ulaznim dvo-bitnim baferom

za SPEC89 benčmark-programe

Page 25: PARALELIZAM NA NIVOU INSTRUKCIJA

Tačnost predviđanja kod 4096-ulaznog dvo-bitnog bafera u odnosu na bafer

sa neograničenim brojem ulaza za SPEC89 benchmark-programe

Page 26: PARALELIZAM NA NIVOU INSTRUKCIJA

(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

Page 27: PARALELIZAM NA NIVOU INSTRUKCIJA

BAFER ODREDIŠNIH ADRESA GRANANJA

• keš odredišnih adresa grananja (BTB/BTC)

Page 28: PARALELIZAM NA NIVOU INSTRUKCIJA

Koraci pri obradi instrukcije sa

BTB-om

Page 29: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 30: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 31: PARALELIZAM NA NIVOU INSTRUKCIJA

Tačnost predviđanja kada bafer povratne adrese radi kao stack

Page 32: PARALELIZAM NA NIVOU INSTRUKCIJA

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.

Page 33: PARALELIZAM NA NIVOU 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

Page 34: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 35: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 36: PARALELIZAM NA NIVOU INSTRUKCIJA

WLIW

• Jednostavniji hardver, složeniji kompajler

• koristi više nezavisnih FJ

Page 37: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 38: PARALELIZAM NA NIVOU INSTRUKCIJA

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

Page 39: PARALELIZAM NA NIVOU INSTRUKCIJA

Transmeta - Crusoe

Page 40: PARALELIZAM NA NIVOU INSTRUKCIJA

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