You are on page 1of 6

POBOLJŠANJE PERFORMANSI

Svi proizvođači računara voljeli bi da njihovi sistemi rade brže. U ovom poglavlju
opisaćemo niz naprednih tehnika koje se danas isprobavaju za poboljšanje
performansi sistema (prvenstveno procesora i memorije). Zahvaljujući velikoj
konkurenciji koja vlada u računarskoj industriji, vrijeme između pojave novih ideja
za ubrzavanje rada računara i njihovog ugrađivanja u proizvode začuđujuće je
kratko. Zbog toga se ideje o kojima ćemo govoriti u nastavku već uveliko koriste u
postojećim proizvodima.
Te ideje se mogu grubo svrstati u dvije kategorije: poboljšanje implementacije i
poboljšanje arhitekture. Poboljšanja implementacije obuhvataju načine
konstruisanja novih procesora ili memorije zbog kojih će sistem raditi brže i bez
izmjene postojeće arhitekture. Unapređivanje implementacije bez arhitekture
znači da će stari programi raditi na novih računarima, što je udarni komercijalni
faktor. Jedan od načina da se poboljša implementacija jeste korištenje bržeg
takta, ali to nije jedini način. Poboljšanje performansi, počevši od procesora 80386
preko procesora 80486, Pentiuma i Pentiuma Pro, do Pentiuma II, posljedica je
poboljšanja implementacije jer je arhitektura suštinski u svima njima ostala ista.
Neka poboljšanja se mogu ostvariti samo kroz izmjenu arhitekture. Ponekadsu te
izmjene postupne (npr. dodavanje novih instrukcija i registara), tako da stari
programi nastavljaju da rade na novim modelima. U ovom slučaju, da bi se
izvukao maksimum,mora se unaprijediti i softver ili barem stari prevesti pomoću
novog prevodioca koji prepoznaje i koristi novouvedene mogućnosti procesora.
Međutim, otprilike jednom u nekoliko decenija projektanti shvate da je stara
arhitektura potpuno iskorištena i da se može napredovati samo ako se krene od
nule. RISC revolucija iz osamdesetih godina bila je jedan takav proboj,druga takva
revolucija već lebdi u zraku.
U ovom poglavlju razmotrićemo četiri različite tehnike za poboljšanje performansi
procesora. Počinjemo s tri provjerena poboljšanja implementacije, zatim preći na
jedno koje daje najbolje rezultate kada je u izvjesnoj mjeri podržano izmjenama
arhitekture.
Ove tehnike su:
o Keš memorija
o Predviđanje programskog skoka
o Izvršavanje preko reda uz preimenovanje registara
o Špekulativno izvršavanje

KEŠ MEMORIJA

Jedan od najizazovnijih aspekata projektovanja računara u čitavoj njihovoj istoriji


bio jeda se napravi takav sistem memorije koji isporučuje operadne procesoru
onom brzinom kojom on može da ih obrađuje. Nedavni veliki rast brzine
procesora nije bio praćen odgovarajućim ubrzanjem memorije. U odnosu na
procesore, memorije decenijama sve više zaostaju. Kada se ima u vidu neizmjerna
važnost glavne memorije,takva situacija je umnogome ograničila razvoj sistema
visokih performansi i podstakla istraživanja usmjerenja na zaobilaženje problema
sa odnosom između brzine memorije i brzine procesora, koji je svake godine
postajao sve veći.

Savremeni procesori postavljaju memoriji prevelike zahtjeve, kako u pogledu


kašnjenja tako i sa aspekta propusnost opsega(količine isporučenih podataka u
jedinici vremena). Nažalost ova dva aspekta zavise jedan od drugog. Mnoge
tehnike za povećanje propusnog opsegadaju rezultate samo uz povećanje
kašnjenja. Kako brzina procesora raste, postaje sve teže napraviti memoriju
sposobnu da isporuči operande u jednom ili dva sistemska ciklusa. Jedan od
načina da se ovaj problem riješi jeste i keš memorija.

Kao što je navedeno, brzina RAM memorije je sve više zaostajala za brzinom
mikroprocesora. Da bi se ta nesrazmjera smanjila, uvedena je takozvana keš
memorija. Za razliku od radne RAM memorije koja je dinamičkog tipa, keš memorija
je statičkog tipa i ima za red veličine (oko 10 puta) kraće vrijeme pristupa.
Keš memorija je postavljena između mikroprocesora i radne memorije, a njenim
radom je upravljao posebni keš kontroler.

Ovaj kontroler je na osnovu podatka kojeg je mikroprocesor tražio iz memorije


pokušavao da predvidi koji će sljedeći podatak biti potreban mikroprocesoru, pa je
unaprijed, ne čekajući zahtjev, taj podatak očitavao iz radne memorije i smještao
ga u keš memoriju.

Ako je predviđanje bilo dobro, kada mikroprocesor zatraži taj podatak, on će ga


dobiti iz keš memorije, a to će biti desetak puta brže nego da ga je čekao iz radne
memorije.

Drugi uzrok ubrzanja rada računara je u tome da kada mikroprocesor treba da


smjesti neke podatke u memoriju, on ih predaje brzoj keš memoriji, odakle se ti
podaci pod upravljanjem keš kontrolera šalju u radnu memoriju. Za to vrijeme je
procesor slobodan da obavlja neke druge poslove.

Keš memorija se prvobitno smještala na matičnu ploču, ali je već od 80486


procesora djelimično premještena u sam mikroprocesor.

Pojavom Pentium procesora, pojavila su se i dva nivoa keš memorije.

Keš memorija prvog nivoa (L1 nivo) je smještena u samo jezgro mikroprocesora.
Ova veoma brza memorija ima relativno mali kapacitet i podjeljena je na dva bloka,
jedan služi za instrukcije a drugi za podatke. Ona obično radi na istom taktu kao i
sam procesor.

Keš memorija drugog nivoa (L2 nivo) ima znatno veći kapacitet i kod današnjih
mikroprocesora je takođe smještena unutar samog procesorskog čipa. Zavisno od
tipa procesora, ova keš memorija može da radi na punom taktu procesora ili na
nižem taktu (obično polovina učestalosti takta procesora).

Uvođenjem keš memorije u sam mikoprocesor dobilo se dalje povećanje brzine


rada računara, sa tim da ta brzina dosta zavisi od kvaliteta keš kontrolera, odnosno
od toga koliko dobro on predviđa sljedeće podatke koje će biti potrebni
mikroprocesoru, da bi mogao unaprijed da ih pripremi.

Keš memorija je mala i brza i čuva najskorije korištene memorijske riječi. Kada bi
dovoljno veliki procenat potrebnih memorijskih riječi bio u keš memoriji, efektivno
kašnjenje memorije drastično bi se smanjilo.
U jednoj od najefikasnijih tehnika za istovremeno povećanje propusnog opsega i
smanjene kašnjenja koristi se višestruka keš memorija. Njena osnovna verzija koja
radi veoma efikasno sadrži zaseban kešza instrukcije i za podatke. Brojne su koristi
od ovakve organizacije, često nazvane podjeljeni keš ( engl. split cache).

Danas su memorije dosta složenije od naših primjera, pa se između keša za


instrukcije i za podatke i glavne memorije može smjestiti dodatni keš, tzv. keš
drugog nivoa. U stvari, mogu postojati i tri i više nivoa keša, što zavisi od zahtjeva
postavljenih konkretnoj memoriji. Na sljedećoj slici vidimo memoriju s tri nivoa
keš. Sam procesor čip sadrži mali keš za instrukcije i mali keš za podatke(po
pravilu od 16 do 64 KB). Tu je i keš drugog nivoa koji se ne nalazi na procesorskom
čipu, ali može biti i u procesorskom pakovanju, neposredno do procesorskog čipa i
s njim povezan brzom putanjom. Ovaj keš je u principu jedinstven, sadrži
mješavinu instrukcija i podataka. Tipična veličina L2 keša iznosi od 512 KB do 1MB.
Keš trećeg nivoa (L3) nalazi se na procesorskoj ploči i sadrži nekoliko megabajta
SRAM memorije koja je mnogo brža od glavne DRAM memorije. Keševi su u
principu hijerarhijski kumulativni, što znači da se sadržaj keša prvog niva nalazi u
kešu drugog nivoa a da se sadržaj keša drugog nivoa nalazi u kešu trećeg nivoa.

Sistem s tri nivoa keša


Rad keša se zasniva na dvije vrste lokalnosti adresa. Prostorna lokalnost
(engl.spatial locality) jeste zapažanje da će se adresama brojčano bliskim
adresama kojima je nedavno pristupano vrlo vjerovatno pristupati i u bliskoj
budućnosti. Keš koristi ovo svojstvo da pripremi više podataka nego što se
trenutno traži,u nadi da će oni uskoro biti iskorišteni. Vremenska lokalnost (engl.
temporal locality) odnosi se na ponovno pristupanje nedavno posjećenim
memorijskim lokacijama.
Sve vrste keša koriste sljedeći model. Glavna memorija se dijeli u blokove fiksne
memorije, zvane redovi keša (engl. cache lines). Red keša po pravilu sadrži od 4
do 64 uzastopna bajta. Redovi se uzastopno numerišu počevši od nule, tako da – s
redovima od po 32 bajta – red 0 sadrži bajtove od 0 do 31, red 1 sadrži bajtove od
32 do 63 itd. Kada se zatraži podatak iz memorije, kontroler keša provjerava da li
se tražena riječ trenutno nalazi u kešu. Ako se nalazi, može se odatle koristiti,bez
potrebe da se pristupa glavnom memoriji. Ukoliko se riječ ne nalazi u kešu, jedan
red se briše, a iz memorije ili iz nižeg nivoa preuzima se traženi red koji ga
zamjenjuje.

Direktno preslikani keš


Najjednostavnija keš memorija poznata je po imenom direktno preslikani keš
(engl. direct-mapped cache).
U direktno preslikanog keša, memorijska riječ se može čuvati samo na jednom,
tačno predviđenom mjestu.
Set-asocijativni keš
Keš sa n mogućih odrednica za svaku memorijsku adresu zove se n-trostruki set-
asocijativni keš (engl. n-way set associative cache). Set-asocijativni keš složeniji je
od direktno preslikanog keša.
Dinamičko predviđanje programskog skoka
Kod savremenih računara u velikoj mjeri se koristi paralelna obrada podataka.
Takva obrada na ima sedam faza, u najsavršenijim računarima, obrada se ponekad
obavlja u deset faza pa čak i više od toga. Paralelna obrada daje najbolje rezultate
kada je kod linearan tj. kada jedinica za preuzimanje podataka može redom da
čita riječi iz memorije i da ih šalje jedinici za dekodiranje znajući unaprijed šta joj
je potrebno. Problem sa ovim modelom je što nije realan. Programi nisu
sastavljeni od linearnih nizova koda. Oni su prepuni skokova. Situacija poslije
programskog skoka naziva se vremenski procjep (engl. Delay shot).

Predviđanje programskog skoka može biti dinamičko i statičko.

Špekulativno izvršavanje
Računarski programi se mogu podijeliti na osnovne blokove(engl.basic blocks), pri
čemu se svaki osnovni blok sastoji od linearnog niza koda, s jednom ulaznom na
na vrhu i jednom izlaznom na dnu bloka. Izvršavanje koda prije nego se zna da li
je on uopšte potreban zove se špekulativno izvršavanje (engl.speculative
execution).

Primjer nivoa mikroarhiteture – Mikroarhitektura


procesora Pentium 4
U unutrašnjosti Pentuma 4 nalazi se savremeno RISC jezgro s paralelnom
obradom instrukcija i vrlo brzim radnim taktom. Intelovi inžinjeri su uspjeli da
naprave potpuno savremen procesor koristeći prastaru arhitekturu.

Mikroarhitektura Pentiuma 4, nazvana NetBurst, predstavlja potpun raskid s


prethodnom arhitekturom P6 korištenom u procesorima Pentium Pro.

Pentium 4 sadrži četiri glavna podsistema:

- memoriju
- podsistem za pripremu instrukcija
- podsistem za upravljanje prekorednim izvršavanjem instrukcija
- podsistem za izvršavanje

U prvom generaciji Pentiuma 4, veličina keša je iznosila 256KB, u drugoj 512 KB, a
u trećoj 1 MB.

You might also like