You are on page 1of 14

UNIVERZITET „ Džemal Bijedić “

Fakultet Informacijskih
Tehnologija
MOSTAR

Protočna organizacija procesora


-Hazardi podataka
ARHITEKTURA KOMPJUTERSKIH SISTEMA

Mentor: Leid Zejnilović


Predmetni nastavnik: Student:
Prof. Dr. Emir Humo Vojislav Babić / DL
SUMMARY

This work is about process organisation run and contains explanations


about data hazards, hazard division, the methods of hazard evasion
and baypassing.

Ovaj rad govori o protočnoj organizaciji procesora, hazardima


podataka, njihovoj podjeli, metodama izbjegavanja i premošćavanja.

2
SADRŽAJ

SUMMARY.....................................................................................................2

SADRŽAJ......................................................................................................3

Podjela hazarda podataka...............................................................................4

Strukturni hazardi.................................................................................................................4

Hazardi podataka..................................................................................................................5

Klasifikacija hazarda podataka.........................................................................5

Otkrivanje hazarda podataka..........................................................................6

Izbjegavanje hazarda podataka premošćavanjem..............................................6

Hazardi podataka koji se ne mogu izbjeći premošćavanjem.................................7

Izbjegavanje hazarda podataka planiranjem instrukcija......................................8

Hazardi upravljanja..............................................................................................................8

ZAKLJUČAK.................................................................................................13

LITERATURA...............................................................................................14

3
Podjela hazarda podataka

Pri izvršavanju instrukcija pri protočnom procesoru dolazi do situacija


kada ne ide sve tako glatko već se pri izvršavanju nekih instrukcija javljaju
zastoji. Ovi zastoji dovode do toga da se u nekim taktnim ciklusima
nekompletira nijedna instrukcija što povećava prosječan broj taktnih ciklusa
po instrukciji (CPI) na vrijednost veću od 1.
Situacije pri radu protočnog procesora koji dovode do zastoja u
njegovmo radu nazivamo hazardima.

Prema uzorku hazarda razlikujemo:


- Strukturne hazarde
- Hazarde podataka
- Hazarde upravljanja

Strukturni hazardi (eng. structural hazards)

Strukturni hazardi nastaju zbog nedostatka neophodnih hardverskih


resursa procesora za pribavljanje i izvšavanje bez zastoja svih mogućih
kombinacija i instrukcija prisutnih u stepenima protočnog procesora. Zbog
toga dvije instrukcije koje se nalaze u različitim stepenima mogu pokušati da
istovremeno koriste isti resurs koji je inače nedjeljiv.
Pošto pojava strukturnih hazarda pogoršava performanse protočnih
procesora postavlja se pitanje da li ih treba eliminisati po svaku cijenu.

4
Pojava strukturnih hazarda može se eliminisati na više načina:
- Uvođenjem više kritičnih funkcionalnih jedinica kao što su odvojene
memorije za programe i podatke, sabirači, množači itd.
- Povećanjem broja portova za upis i čitanje kod polja registara
- Protočnom organizacijom kritičnih funkcionalnih jedinica na kojima
obrada traje više taktnih ciklusa
Svako od ovih riješenja ima svoju cijenu, zato treba odmjeriti ulaganja
potrebna za elimisanje ovakvih hazarda, nasuprot poboljšanja performansi
protočnog procesora koje se time postiže. Pri odlučivanju da li neku
funkcionalnu jedinicu protočno organizovati treba imati u vidu sljedeće.
Protočno organizovana funkcionalna jedinica u poređenju sa neprotočnom
funkcionalnom jedinicom ima dužu latenciju. Ovo može povećati učestanost
pojavljivanja hazarda podataka što takođe pogoršava performanse
procesora. To je razlog što se u nekim procesorima primjenjuje neprotočna
funkcionalna jedinica, iako ona za neke kombinacije instrukcija dovodi do
strukturnih hazarda.

Hazardi podataka (eng. data hazards)

Kod njih se javlja zavisnost po podacima (eng. data dependence).


Hazard podataka pripada tipu čitanja nakon upisa.
To se na protočnom procesoru može postići tako što ćemo pribavljanje
operanda iz R3 odložiti do taktnog ciklusa u kome smo sigurni da R3 sadrži
novu vrijednost upisanu instrukcijom SUB

Klasifikacija hazarda podataka

Posmatramo dvije instrukcije Ij i Ik između kojih postoje zavisnosti po


podacima preko registra Ri pri čeku Ik slijedi za Ij. Ako se ove dvije
instrukcije istovremeno nađu u protočnom procesoru mogu se javiti slijedeći
hazardi podataka:

- Čitanje nakon upisa (eng. read after write – RAW) – instrukcija


Ik pokušava da pročita izvršni operand iz Ri pre nego što Ij obavi upis
tako da Ik nekorektno uzima staru vrijednost podatka. Ovo je najčešći
tip hazarda podataka. Zavisnost po podacima koja dovodi do ovog tipa
hazarda naziva se prava zavisnost.

- Upis nakon upisa (eng. write after write – WAW) – Ik pokušava


da upiše operand prije nego što je upisala Ij, upisi su obavljeni
obrnutim redoslijedom ostavljajući u odredištu određenu vrijednost sa
Ij umjesto vrijednosti određene sa Ik. Zavisnost po podacima koja
dovodi do ovog tipa hazarda naziva se izlazna zavisnost. Ovaj hazard
je prisutan samo u protočnim sistemima koji vrše upis u dva ili više
5
stepena ili dopuštaju da instrukcija Ik nastavi napredovanje iako je
instrukcija Ij zaustavljena. Dopuštanje upisa u različitim stepenima
protočnog sistema uvodi druge probleme, pošto dvije instrukcije mogu
pokušati upise u istom taktnom ciklusu.

- Upis nakon čitanja (eng. write after read – WAR) – Ik pokušava


upis u odredište prije nego što ga je pročitala Ij, tako da Ij nekorektno
dobija novu vrijednost. Zavisnost po podacima koja dovodi do ovog
tipa hazarda naziva se antizavisnost. WAR hazard nastaje kada ima
instrukcija koje rano upisuju rezultat i drugih instrukcija koje kasno
čitaju operande u protočnom sistemu. Zbog prirodne strukture
protočnog sistema koji tipično čita vrijednost prije nego što upiše
rezultate, takvi hazardi su rijetki. Protočni sistemi za kompleksne
skupove instrukcija koje podržavaju autoinkrementno adresiranje i
zahtjevaju da operandi bivaju pročitani kasno u protočnom sistemu
mogu kreirati WAR hazard!

Otkrivanje hazarda podataka

Hazardi podataka nastaju pri protočnom izvršenju instrukcija između


kojih postoji zavisnost po podacima.

Izbjegavanje hazarda podataka premošćavanjem

Upoznali smo opasnost od hazarda podataka i način na koji se hazardi


podataka mogu izbjeći. Još jedan i to vrlo efikasan način da se hazardi
podataka izbjegnu sastoji se u dostavljanju izorišnih operanada zavisnim
instrukcijama prije nego šo ih instrukcije proizvođača rezultata upišu u
odredišne registre. Ta tehnika izbjegavanja hazarda podataka poznata je kao
premošćavanje (eng. forwarding, bypassing). Upravljanje premošćavanjem
(da li će ga biti i kojim putem) svodi se na adresiranje multipleksera na
ulazima ALU-a i memorije podataka. Adresne signale za ove multiplksere
generiše jedinica za upravljanje premošćavanjem (eng. forwarding unit)
smještena u okviru EX stepena.

6
Hazardi podataka koji se ne mogu izbjeći
premošćavanjem

Izložen tehnikom premošćavanja ne mogu se izbjeći baš svi hazardi


podataka. Situacija koja zahteva zastoj u instrukciji koja neposredno slijedi
instrukciju LOAD, naziva se blokiranje punjenjem (eng. load interlock).
U mnogim savremenim protočnim procesorima pribavljanje operanada iz
memorije traje više taktnih ciklusa. Ovo je posledica rada procesora na sve
višim učestanostima sad već reda GHz i nepostojanja memorija koje bi radile
pri tim brzinama. potreba za zastojem u instrukciji koja neprestano slijedi za
instrukcijom LOAD, pojačana je u takvim protočnim sistemima. Trajanje
zastoja bi se produžilo na više taktnih ciklusa što je određeno latencijom
operacije pribavljanja operanada. Pod latencijom operacije podrazumijevamo
broj taktnih ciklusa koji mora proteći o početka operacije do korišćenja
rezultata te operacije u drugoj instrukciji.
Otkrivanje potrebe za zastojem poslije instrukcije LOAD vrši se takođe
hardverom u okviru ID stepena. Umetanje zastoja nakon punjenja
neophodno je ako su ispunjeni uslovi navedeni u tabeli.

7
Izbjegavanje hazarda podataka planiranjem instrukcija

Do pojave hazarda podataka dolazi kada se par instrukcija Ij i Ik


između kojih postoji zavisnost po podacima nalazi se rastojanje ne većem od
dužine lanca stepena omeđenih stepenom koji koristi rezultat i stepena koji
proizvodi taj rezultat. To se može postići premještanjem nekih zavisnih
instrukcija s svojih polaznih pozicija u pozicije između ovog para instrukcija.
Pri tome se mora voditi računa da se time ne promijeni algoritam koji
program implementira. Ovakav način izbjegavanja hazarda podataka naziva
se planiranje instrukcijal (eng. instruction scheduling). Ovaj kriterijum
bezbjednog rastojanja između nezavisnih instrukcija postaje znatno blaži pri
korišćenju premošćavanja. Kako smo to već zaključili pri premošćavanju
opasnost od hazarda postoji samo poslije instrukcije LOAD i to samo ako
zavisna instrukcija neposredno slijedi za njom.
Planiranje instrukcija obavljju kompilatori.

Hazardi upravljanja:

Hazardi upravljanja javljaju se pri izvršavanju instrukcija za


upravljanje tokom programa. Podsjetim se da u tu grupu spadaju instrukcije
grananja, skokova, poziva procedura i povratka iz procedura. Sa stanovišta
protočnog izvršavanja instrukcija iz ove grupe instrukcije granjanja najbolje
reprezentuju probleme koji se pri tome javljaju. Naime izvršenje instrukcije
grananja uključuje izračunavanja (adrese), odredišta grananja i ishoda
uslova grananja i po tome je instrukcija grananja najopštiji predstavnih
instrukcija za upravljanje tokom programa. Hazardi grananja nastaju kao
posledica neblagovremenog određivanja adrese instrukcije koja će biti
izvršena poslije instrukcije grananja. Opasnost od nekoretnog izvršenja
programa poslije instrukcije grananja naziva se hazard grananja.
Zastoji koji su potrebni u probavljanju instrukcije-sledbenika grananja
razlikuju se od zastoja potrebnih za izbegavanje hazarda podataka.

8
Zastojima zbog hazarda podataka odlaže se završetak određene faze
instrukcije do prestanka uslova za nastanak hazarda. Izbegavanje hazarda
grananja zahteva zastoje u pribavljanju instrukcije dinamičkog sledbenika
grananja pri čemu se ignoriše već pribavljena instrukcija-sekvencijalni
sledbenik grananja. Broj taktnih ciklusa od prve faze instrukcije grananja do
pribavljanja instrukcije sledbenika grananja, isključujući oba ova taktna
ciklusa, nziva se kašnjenje grananja (eng. branch delay). Ovo pokazuje da
izvršavanje instrukcija grananja u protočnim procesorima vodi pogoršanju
propusnosti procesora, koje se ogleda u povećanu prosečnog broja CPI na
vrijednost veće od jedinice.

Postoji više načina za sniženje cene grananja u protočnim sistemima.


Neka od njih su:

- Određivanje ishoda grananja i odredišta grananja u stepenu što


bližem stepenu pribavljanja instrukcija

- Pretpostavka da grananje neće biti obavljeno

- Zakašnjeno grananje

To je koncepcija koja obezbeđuje da se poslije instrukcije grananja,


nezavisno od njenog ishoda, probavi k instrukcija s puta neobavljenog
grananja, prije nego što se eventualno pređe na instrukciju –odredište
grananja. Ovih k instrukcija , sekvencijalnih sledbenika instrukcije
grananja, nalaze se u tzv. slotovima kašnjenja grananja.

9
U slotove kašnjenja grananja mogu se umetnuti instrukcije uzete:
a) ispred instrukcije grananja
b) sa puta obavljenog grananja
c) sa puta neobavljenog grananja

10
Teškoće pri planiranju instrukcija kod zakašnjelog grananja javljaju se:

- zbog ograničenja pri izboru instrukcije za premiještanje u slot


kašnjenja grananja

- teškoća da se u vrijeme kompilacije programa predvidi da li su


veći izgledi da grananje bude obavljeno ili neobavljeno

Da olakšaju ove probleme kreatori arhitektura sa zakašnjenim


grananjem predvideli su posebne instrukcijeuslovnog grananja sa
poništavanjem (eng. cancelling or nullifying branch)
Implementacija zakašnjenog grananja zahtijeva nešto dodatnog
hardvera. Za jedan slot kašnjenja grananja, što je jedini slučaj koji
sesreće u praksi, potreban je još jedan dodatni programiski brojač
(PC).
Zakašnjeno grananje je arhitekturno riješenje o kome
programeri na nivou asemblerskog jezika i tvorci kompilatora moraju
voditi računa. Ako je broj slotova kašnjenja potreban za prikrivanje
kašnjenja grananja veći od jeda, ovo riješenje ima ograničenu
upotrebnu vrijednost jer je tada teško sve slotove kašnjenja popuniti
korisnim instrukcijama. Takvi slučajevi javljaju se u protočnim
sistemima sa velikom dubinom (većom od 5) i u protočnim sistemima
u kojima se istovremeno pribavlja i izvršava više od jedne instrukcije
(tzv. superskalarni procesori)

- Predviđanje grananja

Predviđanje ishoda grananja može doprinijeti smanjenju izgubljenih


taktnih ciklusa zbog grananja. Pribavljanje instrukcije-sledbenika
obavljenog grnanja vrši se korišćenjem bafera odredišta grananja (eng.
branch target buffer). Bafer odredišta grananja je posebna memorijska
struktura u kojoj se za instrukcije grananja sa predviđenim ishodom da se
grnanje obavlja, čuvaju adrese odredišta grananja. Pri pribavljanju svake
instrukcije pregleda se bafer odredišta grananja i ako se za tu instrukciju
u njemu nađe odgovarajuća stavka, znači da se pribavlja instrukcija
grananja sa predviđenim ishodom da se grananje obavlja. Tada se iz
bafera odredišta grananja, uporedo sa pribavljanjem instrukcije grananja,
dobija adresa odredišta grananja.

Predviđanje ishoda grananja može biti


a) statičko i
b) dinamičko.
Statičko predviđanje vrši se tzv. profilisanjem programa. To je
višekratno prethodno izvršavanje programa sa zadatim ulaznim
podacima pri kome se za svaku izvršenu instrukciju grananja beleže
ishodi grananja.

11
Dinamičko predviđanje grananja zahteva poseban hardver, kojim se u
toku izvršenja programa beleže ishodi izvršenih instrukcija grananja,
tzv. istorija grananja i na osnovu nje predviđaju ishodi grananja pri
slijedećem izvršenju svake instrukcije grananja.

- Pribavljanje instrukcija i sa puta obavljenog i sa puta


neobavljenog grananja

Povremeno gubljenje taktnih ciklusa u slučajevima pogrešnog


predviđanja grananja može se izbeći tako što se poslije instrukcije
grananja pribavljaju instrukcije i sa puta obavljenog grananja i sa puta
neobavljenog grananja. i u tom slučaju treba koristiti bafer odredišta
grananja.

Ovo riješenje može se primjeniti u protočnim procesorima sa


zahtijevanim izrazito visokim performansama. Implementacija ovog
riješenja na protočnim procesorima sa velikim kašnjenjem grananja može
biti neprihvatljivo skupa.

12
ZAKLJUČAK:

Hazardi podataka, kod protočne organizacije procesora, igraju jako bitnu


ulogu kod predviđanja izgradnje, arhitekture samog procesora i programeri
na nivou asemblerskog jezika i tvorci kompilatora moraju voditi računa, jer
pogrešan korak može dovesti do dovođenja pogrešnih instrukcija i
disfunkcionalnosti procesora. Njihovo proučavanje nam pomaže da
previdimo i na vrijeme uklonimo moguća mjesta na kojima do hazarda može
doći, a da pri tome maksimalno iskoristimo postojeće resurse, jer nekada i
samo izbjegavanje hazarda uzima mnogo resursa i predstavlja veliki trošak.
Zato treba planirati i shvatiti na kojim mjestima do hazarda moze doći i do
koje vrste, pa prema tome planirati metodu/tehniku izbjegavanja!

13
LITERATURA

Knjige:

Arhitektura i
1. Nebojša Milenković 2002
organizacija računara
Upravljanje
2. B. Danković, D. Antić 1996
procesima
Computer
3. architecture and Hayes, J.P. 1998
organization
4.

5.

Web:

1.
http://rti.etf.bg.ac.yu/

2. http://www.cs.clemson.edu/

3. www.mips.com/publicatins

4. www.wikpedia.com

14

You might also like