Upload
slavisa-djukic
View
91
Download
6
Embed Size (px)
Citation preview
1
1. Uvod 1.1 Kratka istorija razvoja ra~unara
Qudi su od davnina nastojali konstruisati ure|aje koji bi im olak{ali
izvo|ewe ra~unskih operacija. U procesu ra~unawa koristimo decimalni brojni
sistem koji ima 10 cifara: 0-9. Naziv decimalni poti~e od latinske rije~i decem
koja zna~i deset, dok su simboli cifara do{li od Arapa, a ovi su ih preuzeli od
Indusa. Sigurno je da je razlog kori{tewa ovog brojnog sistema u tome {to ~ovjek
ima 10 prstiju na obe ruke (da nas je majka priroda podarila sa 6 prstiju na rukama,
vrlo vjerovatno je da bi koristili brojni sistem sa bazom 12.
^ovjek je u po~etku, sasvim sigurno koristio prste za pomo} u brojawu. Prsti su
korespondirali ciframa i numeri~kim veli~inama. Za rad sa ve}im brojevima
koristili su se kamen~i}i. Na kostima koje datiraju iz perioda 30 000god. – 20 000
god. PNE, na|ene su recke kojima su brojne veli~ine memorisane. Na jednoj kosti iz
Afrike, 8 500 god. PNE, zapisani su prosti brojevi 11, 13, 17 i 19, o~ito kao
posebno interesantni.
Izme|u 1900 i 1800 god. PNE pojavquju se prvi pozicioni brojni sistemi
(Babilon, sa bazom 60). Izme|u 1000 i 500 god. PNE izumqen je abacus, prvi
mehanizam kori{ten za prakti~no ra~unawe (Babilonci ili Kinezi). Abacus je u
osnovi ravna (kamena, drvena ili sli~na plo~a, na koju se postavqaju elementi:
kamen~i}i, {tapi}i i sl.).
Leonardo da Vin~i je oko 1500 god. napravio prvi mehani~ki kalkulator. 1623.
god. Wilhelm Schickhard napravio je mehani~ki ure|aj za osnovne matemati~ke
operacije. Mnogo poznatiji Blaise Pascal (1642) i Gottfried Leibnitz (1671) projektovali
su i gradili mehani~ke ma{ine koje su osnovne operacije radile 'automatski'.
Radovi Charlesa Babbage-a (1823) mogu se smatrati samim po~etkom ra~unarstva ~ija
je logika najsli~nija logici dana{wih ma{ina. Ada Lovelace Byron (1815-1851), k}i
lorda Byrona, radila je sa Charlesa Babbage-om na wegovom projektu diferencne i
analiti~ke ma{ine, i sugerisala je Babbage-u kako bi wegova ma{ina trebala biti
programirana, pa je na osnovu toga ponijela epitet prvog programera, a programski
2
jezik ADA je dobio naziv po wenom imenu. Sva ta i druga nastojawa, sve do
~etrdesetih godina dvadesetog vijeka, mogu se smatrati mehani~kom erom u razvoju
ra~unara. Pojavom elektronskih ra~unara u{lo se u nevjerovatno buran period
ra~unarstva, a koji je prema svim reperkusijama na ostale segmente qudske
djelatnosti (informati~ka revolucija) ozna~io novu epohu u razvoju qudske
civilizacije.
Osnovni razlog tome svakako je u ~iwenici da je uspje{no rje{avawe ra~unskih i
drugih aplikativnih problema primjenom ra~unara davalo ideje za rje{avawe jo{
kompleksnijih problema, uz prirodne zahtjeve za ve}e procesne mogu}nosti i mawu
cijenu. Za ilustraciju mo`emo navesti da tr`i{te superra~unara raste po stopi od
30% godi{we. Ovaj trend je najmawe akademsko pitawe ili pitawe presti`a, ve} je
u su{tini strate{ko pitawe progresa nacija, dr`ava i civilizacije u cjelini.
1.1 Oblasti primjene ra~unara.
Problemi koji se rje{avaju primjenom ra~unara zadiru u sve segmente nauke,
tehnike, industrije, medicine itd. Sa stanovi{ta sofistifikacije obrade, aplika-
cije se mogu grupisati u ~etiri nivoa;
• procesirawe podataka, • procesirawe informacija, • procesirawe znawa, • inteligentno procesirawe.
Kori{tewe ra~unara je po~elo procesirawem podataka, {to je i danas jedna od
najzna~ajnijih oblasti primjene (numeri~ke simulacije kompleksnih fenomena kao
{to su vrijeme, klima, proizvodni procesi, hemijske reakcije i sl.). Ipak, sve je
izra`enije pomjerawe ka procesirawu informacija. Informacione objekte ~ine
podaci povezani odre|enom sintaksnom strukturom ili relacijama. Akvizicija
ogromne koli~ine podataka na ra~unarskim sistemima {irom svijeta stvorila je
impresivnu bazu znawa (nau~ne, tehni~ke, komercijalne i druge informacije), {to
je povratno iniciralo zahtjeve za procesirawe znawa. Iako su postignuti zna~ajni
rezultati u ovoj oblasti, oni su jo{ uvijek daleko od spektakularnih prognoza.
Inteligentni ra~unari, sposobni da razmi{qaju i donose odluke, jo{ uvijek nisu
stvar bliske budu}nosti.
Kompleksnost obrade i zahtjevi za procesnim mogu}nostima ra~unara rastu sa
nivoom sofistifikovanosti problema. Uvjerewe je da isti trend pokazuje i mogu}-
3
nost eksploatacije paralelizma ({to, s obzirom na tehnolo{ke limite mogu}nosti
jednoprocesorskih ra~unara, name}e primjenu paralelnih ma{ina kao imperativ).
Za ilustraciju kompleksnosti problema prva dva nivoa, nave{}emo nekoliko
primjera.
Simulacija klime na{e planete za period od 10 godina za aktuelne modele
zahtijeva broj operacija u pokretnom zarezu reda 1016, uz produkciju stotina
gigabajta podataka. Razli~ita poboq{awa simulacionog modela (pove}awe
rezolucije, me|uokeanska interakcija i sl.) mogu dodatno pove}ati procesne
zahtjeve. Sna`an pritisak za kori{tewe sve br`ih ra~unara imaju izra`eno
komercijalne aplikacije, kao {to su video konferencijski sistemi, razumijevawe i
procesirawe govora, internet i video servisi, trodimenzionalna grafika i
animacija u realnom vremenu, sistemi za pomo} kod dono{ewa odluka itd. Za
grafi~ke aplikacije visokih zahtjeva, procjena zahtjevane procesorske snage za
animaciju u stvarnom vremenu je reda teraflopsa (1012 operacija u teku}em zarezu u
sekundi ).
1. 3 Trendovi razvoja
Performanse najmo}nijih ra~unara, od prvog ENIAC-a do dana{wih
superra~unara, uve}avale su se u prosjeku za faktor 10 svakih 5 godina. Ovakav
trend je odr`an zahvaquju}i izvanrednom razvoju tehnologije proizvodwe
elektronskih komponenata, ali i razvoju arhitekture ra~unara i na~ina
procesirawa podataka (Sl.1.1).
U po~etnom periodu, rast procesne mo}i se bazirao gotovo iskqu~ivo na razvoju
tehnologije za proizvodwu elektronskih komponenata i akumuliranom znawu o
projektovawu ra~unara i wegovih modula. Arhitektura ra~unara i na~in procesi-
rawa su se, sve do po~etka 70-ih godina, zasnivali na jednostavnom konceptu i
organizaciji von Neumann-ove ma{ine: ra~unar se sastoji od centralne procesne
jedinice (CPJ) i memorije, koji su me|usobno povezani i izme|u kojih je mogu}a
izmjena podataka. Centralna memorija izmjenqivog sadr`aja sadr`i kako podatke
tako i program-niz instrukcija, ~ijim se izvo|ewem realizuje `eqena funkcija ili
algoritam. Izvo|ewe instrukcija se sastoji iz dobavqawa operacionog koda, koji
odre|uje semantiku instrukcije, i operanada u CPJ, izvr{ewa odre|enog ra~unawa i
vra}awa rezultata u memoriju.
4
Sl. 1.1 Vr{ne performanse ra~unara u periodu 1945-1998. Znakom ‘°’ su ozna~eni jednoprocesorski, znakom ‘+’ vektorski, a znakom ‘x’ masovno paralelni ra~unari.
Napredak tehnologije od cijevne (I generacija ra~unara), preko tranzistorske
(druge generacije) i integrisanih kola malog i sredweg stepena integracije (tre}a
generacija ra~unara) do VLSI kola imao je vi{estruke efekte. Impresivno i
kontinualno pove}awe broja tranzistora u integrisanim kolima i pove}awe radne
frekvencije, direktno su uticali na pove}awe performansi ra~unara. Ovo je, s
druge strane, pred programere postavilo zahtjeve za boqe kori{tewe hardverskih
mogu}nosti ra~unara, {to je rezultovalo softverskim tehnikama i konceptima za
upravqawe konkurentnim doga|ajima: alokacija resursa, komunikacija i sinhroni-
zacija izme|u procesa (monitori, semafori, barijere, signali) i sl. Procesirawe
konkurentnih doga|aja je sistematski i intenzivno analizirano i prou~avano, {to
je bio jedan od temeqa za uspje{nu realizaciju paralelnih ma{ina (u naj{irem
smislu, paralelna ma{ina se sastoji iz skupa procesnih elemenata, povezanih
odre|enim komunikacionim podsistemom, koji imaju mogu}nost paralelnog rada-
procesirawa u ciqu izvr{ewa jedinstvenog posla).
Svi navedeni faktori su stvorili uslove i podlogu za paralelno procesirawe,
te za projektovawe i realizaciju prvih paralelnih ra~unara 60-tih godina (IBM
9020, Goodyears Associative Processor, ILLIAC IV, CDC 7600). Pove}awe stepena
5
integracije omogu}ilo je implementaciju kompleksnih funkcija i koncepata na
hardverskom nivou: vektorsko i proto~no procesirawe, vi{estruke funkcionalne
jedinice i sl., {to je dalo novi podsticaj za razvoj u domenu superra~unara.
Po~etkom 80-tih godina po~iwe {ira komercijalna primjena paralelnih ra~unara
(DAP, MPP, Cosmic Cube, NCube, Alliant, Sequents Balans, Cray, CM). Napretkom
tehnologije i realizacijom kompleksnih modula na jednom kristalu, smawio se broj
osnovnih komponenata potrebnih za implementaciju jednoprocesorskog ra~unara.
Po{to je cijena ra~unara, aproksimativno, proporcionalna broju osnovnih
komponenata koje ga ~ine, do{lo je do pada cijene ra~unara po jedinici procesne
mo}i i potpune inverzije Grosch-evog zakona. Svako novo pove}awe stepena
integracije, omogu}avalo je i pove}awe broja procesora u ra~unaru, za istu cijenu.
Predvi|awe Sidney Fernbach-a je postalo realnost: aktuelni superra~unari nakon
10-20 godina postaju dio standardne ra~unarske opreme.
Danas, paralelni ra~unari preuzimaju dominaciju na tr`i{tu, iako se jo{
uvijek posti`u izvanredni rezultati na eksploataciji paralelizma u okviru jedne
centralne procesorske jedinice (superskalarni i superproto~ni procesori). Svi
glavni protagonisti u podru~ju ra~unarske tehnike sla`u se da je paralelizam
jedini na~in da se zadovoqe kontinualno rastu}i zahtjevi tr`i{ta za super brzim
i jeftinim ra~unawem. Argument za ovakvo uvjerewe je nesporan, i bazira se na
apsolutnom limitu u brzini prostirawa: brzini svjetlosti. Brzina ra~unawa
jednog procesnog elementa je limitirana frekvencijom osnovnog takta. Pove}awe
frekvencije osnovnog takta, zbog ka{wewa pri prostirawu signala (4-6 ns/m),
zahtijeva smawewe rastojawa izme|u elemenata, {to tako|e ima svoj tehnolo{ki i
fizi~ki limit. Aktuelno stawe u podru~ju ra~unara najvi{ih performansi (Sl.
1.2) potvr|uje navedene ocjene. U bliskoj budu}nosti, paralelizam }e dominirati ne
samo u superra~unarima nego i u personalnim ra~unarima, radnim stanicama i
ra~unarskim mre`ama.
6
Iako su mogu}nost pove}awa performansi i povoqniji odnos
performansa/cijena osnovni razlozi za sve ve}u primjenu paralelnih ra~unara i
paralelne obrade, oni nisu i jedini. Paralelni ra~unarski sistemi, zbog
redundancije procesnih elemenata, imaju hardversku podlogu za mogu}nost preva-
zila`ewa otkaza, odnosno realizaciju aspekata neosjetqivosti na gre{ke. Tako|e,
ovakvi sistemi, po pravilu nude mogu}nost postepenog pove}awa performansi
sistema dodavawem novih procesorskih, memorijskih i drugih modula.
Sl. 1.2 Broj kori{tenih procesora u superra~unarima. Znakom ‘+’ su ozna~eni vektorski, a znakom ‘x’ masovno paralelni ra~unari.
Jo{ jedan va`an trend }e imati sve vi{e uticaja na na~in procesirawa: ra~unarske
mre`e. Ra~unarska mre`a povezuje fizi~ki dislocirane i heterogene ra~unare sa
mogu}no{}u me|usobne komunikacije i kori{tewa distribuiranih resursa na isti
na~in na koji se koriste lokalni resursi. Pove}awe brzine komunikacije u
ra~unarskim mre`ama (ve} su aktuelne brzine od 1000 Mb/sec u standardnim
mre`ama) i pouzdanosti mre`a, pru`i}e mogu}nost izvr{ewa programa
istovremenim kori{tewem ne samo procesora lokalnog ra~unara nego i procesora
u drugim ra~unarima u mre`i. Zbog toga, o~ekuje se da }e podru~je distribuiranog
procesirawa sve vi{e konvergovati ka oblasti paralelnog procesirawa.
Mo`e se postaviti pitawe, za{to je, i pored ubjedqivih, prethodno navedenih
argumenata, navedeni koncepti prodirali relativno sporo, posebno u podru~je
komercijalne primjene. Dva su osnovna razloga: paralelne ma{ine nisu jednostavne
za realizaciju i, paralelno programirawe je znatno te`e od sekvencijalnog.
7
Su{tinski ciq, da se ostvari ubrzawe izvo|ewa programa ili skupa programa,
mo`e se ostvariti paralelnim procesirawem na nivou programa, zadataka-
procedura, me|uinstrukcijskom nivou i (ili) u okviru izvo|ewa jedne ma{inske
instrukcije. Eksploatacija paralelizma na najni`em nivou se realizuje
hardverski, a udio hardvera u eksploataciji paralelizma opada prema vi{im
nivoima, uz uobi~ajenu tendenciju rasta hardverskog udjela u implementaciji
rje{ewa. U ovom domenu, razli~itim tehnikama, organizacijom i povezivawem
procesnih i drugih elemenata, implementirani su kompleksni algoritmi za
automatsko prepoznavawe i izvr{ewe paralelnih operacija na instrukcionom i
me|uinstrukcionom nivou, {to je rezultovalo razli~itim arhitekturama.
Sistemski softver je morao obezbijediti podr{ku za efikasno izvo|ewe
programa u vi{eprocesorskom okru`ewu. Operativni sistemi su, pored
standardnih zahtjeva za multiprogramski rad, morali obezbijediti efikasne
mehanizme za:
• raspore|ivawe po procesnim elementima, ne samo procesa, nego i vi{estru-
kih paralelnih niti u okviru procesa,
• balansirawe optere}ewa,
• komunikaciju izme|u procesora, uzimaju}i u obzir strukturu i stawe
komunikacionog podsistema,
• mogu}nost dinami~ke rekonfiguracije u slu~aju otkaza nekog od elemenata i
sl.
Slijede}e fundamentalno pitawe je kako kreirati programe koji se izvode na para-
lelnoj ma{ini. Jasno je da je u ciqu efikasne eksploatacije paralelizma, po{to
hardver prepoznaje paralelizam uglavnom na nivou instrukcija ili grupe
instrukcija, neophodna specifikacija paralelizma na nivou programa/zadataka.
Dvije su mogu}nosti koje programeri imaju na raspolagawu: da pi{u na standardan
na~in i u standardnim programskim jezicima, a da identifikaciju paralelizma i
specifikaciju paralelnog izvo|ewa u potpunosti prepuste paralelizira-
ju}im/vektoriziraju}im prevodiocima, ili da koriste specifi~ne programske
naredbe i funkcije za eksplicitnu identifikaciju paralelizma i specifikaciju
na~ina eksploatacije. Iako je automatska identifikacija paralelizma (posebno
programskih petqi) ve} du`i period predmet intenzivnih nau~nih istra`ivawa, a
proizvo|a~i paralelnih ma{ina su ulo`ili ogromne napore i sredstva u razvoj
8
navedenih prevodilaca, generisani kod ~esto ne daje o~ekivane performanse.
Programeri su, za vremenski kriti~ne i u pogledu ra~unawa visoko zahtjevne
aplikacije, morali pisati eksplicitno paralelne programe koriste}i pro{irewa
postoje}ih jezika naredbama za eksplicitnu specifikaciju paralelizma ili
koriste}i potpuno nove programske jezike. Za postizawe najvi{ih performansi,
ipak, neophodno je bilo programirawe na "ni`em" nivou. Iskustvo da je pisawe
paralelnih programa, i pored novih paralelnih konstrukcija u programskim
jezicima, i daqe kompleksan i te`ak zadatak, otvorilo je pitawe da li su te
te{ko}e inherentno svojstvene paralelnom programirawu, ili su refleksija
neadekvatnog okru`ewa za razvoj, analizu i pode{avawe paralelnih programa. Zbog
toga, veliki napori se ula`u, tako|e, u razvoj programskog okru`ewa za podr{ku
razvoju paralelnih programa.
Pored navedenog, zna~ajna su istra`ivawa i rje{ewa na planu standardizacije
komunikacije pri paralelnom izvo|ewu programa u heterogenom mre`nom okru-
`ewu, analizi performansi, metoda za razvoj algoritama pogodnih za izvo|ewe na
paralelnim arhitekturama itd. O~gledno je da je problematika paralelnog
procesirawa izuzetno kompleksna, i da zahtijeva iskustvo i poznavawe razli~itih
aspekata iz oblasti ra~unarskih arhitektura i hardvera, operativnih sistema,
programskih jezika, algoritama, analize performansi i dr.
9
2
Klasifikacija ra~unarskih arhitektura
2.1 Definicija arhitektura ra~unara
Aspekt arhitekture ra~unarskih sistema tretira problem organizacije i
strukture kontrolnih funkcija, procesnih elemenata, memorijskih modula, te
sistema povezivawa. Arhitektura u osnovi defini{e podlogu za procesirawe/obra-
du i time odre|uje mogu}nosti programske nadgradwe.
S obzirom na razli~ite mogu}nosti koncepcije pojedinih elemenata
ra~unarskih sistema i wihovih veza, spektar arhitektura je bio {irok jo{ od samog
po~etka razvoja ra~unarske tehnike. Razli~iti koncepti su se preplitali u
pojedinim rje{ewima, tako da se nijedna klasifikacija ne mo`e smatrati
apsolutno adekvatnom.
Prvu klasifikaciju ra~unarskih sistema dali su J.C.Murtha i R.L.Beadless (1964), a
zatim Flynn (1966) L.C.Hobbs i D.J.Theis (1970). Najpoznatija i naj~e{}e kori{tena
klasifikacija je Flynn-ova koja kategorizuje ra~unarske sisteme na osnovu odnosa
instrukcionog toka i toka podataka na:
• SISD - ma{ine sa jednim tokom instrukcija i jednim tokom podataka,
• SIMD - ma{ine sa jednim tokom instrukcija i vi{estrukim tokom podataka,
• MISD - ma{ine sa vi{estrukim tokom instrukcija i jednim tokom podataka,
• MIMD - ma{ine sa vi{estrukim tokom i instrukcija i podataka.
Feng (1972) predla`e klasifikaciju na bazi du`ine rije~i i broja rije~i koje se
procesiraju paralelno. Konzistentnu klasifikaciju daje W.Handler na bazi razli-
10
kovawa tri nivoa procesirawa: nivo programske kontrolne jedinice (PCU) koja
interpretira instrukcije, nivo aritmeti~ko-logi~ke jedinice (ALU) koja izvodi
aritmeti~ko-logi~ke operacije, i nivo elementarnih logi~kih sklopova (ELC) koji
izvode elementarne operacije.
2.2 Hijerarhijska struktura organizacije
ra~unarskog sistema
Standardna hijerarhijska predstava ra~unarskog sistema je u obliku koncentri~nih
krugova (Sl. 2.1.)
Aplik. Softver
Sistemskisoftver
Hardver
Sl. 2.1 Hijerarhijska organizacija ra~unara
Svaki od ovih nivoa mo`e se razlo`iti na podnivoe, npr hardverski nivo mo`e se
posmatrati na:
• digitalno – logi~kom nivou i
• nivou elektronskih sklopova.
11
2.3 Razli~iti koncepti ra~unarskih arhitektura
U ciqu poboq{awa performansi, kao {to je ve} re~eno, pored primjene
najnovijih tehnolo{kih rje{ewa nastojalo se {to vi{e operacija u toku
procesirawa izvesti istovremeno. Razli~iti koncepti u arhitekturama
ra~unarskih sistema proizlazili su iz razli~itih koncepata identifikacije i
eksploatacije paralelizma i tehnolo{kih mogu}nosti realizacije tih koncepata.
Postojawe paralelizma zna~i mogu}nost da se odre|ena ra~unawa mogu procesirati
istovremeno. Paralelizam postoji i mo`e se detektovati i eksploatisati na vi{e
hijerarhijskih nivoa. Na najvi{em nivou mo`emo posmatrati paralelizam izme|u
programa-aplikacija (me|uprogramski paralelizam). Svaki program mo`emo
posmatrati i kao ure|en skup zadataka izme|u kojih postoje relacije pretho|ewa i
izme|u kojih mo`e postojati izmjena podataka (izlazne podatke iz jednog zadatka
drugi zadatak koristi kao ulaz). Kao ni`e nivoe mo`emo identifikovati
proceduralni nivo, nivo programskih petqi ili grupa instrukcija, instrukcioni
nivo i nivo elementarnih operacija.
Na najvi{em nivou, paralelizam se jednostavno mo`e eksploatisati pridjeqi-
vawem razli~itih programa razli~itim procesorima (ili ~ak ra~unarima poveza-
nim u odgovaraju}u mre`u). Ali, i svaki program inherentno sadr`i zna~ajan iznos
paralelizma na ni`im nivoima koji se mo`e eksploatisati, i time, s jedne strane,
smawiti vrijeme izvr{ewa programa, a s druge strane boqe iskoristiti postoje}e
procesne resurse ma{ine. Ako postoji paralelizam izme|u zadataka, onda se oni
mogu procesirati istovremeno na razli~itim procesorima (s tim da svaki
procesor izvodi niz instrukcija, kojim se implementira dati zadatak, asinhrono od
drugog). Ovaj trend je vodio razvoju MIMD vi{eprocesorskih arhitektura. Na
ni`em nivou, posebno interesantne za eksploataciju paralelizma su programske
petqe, koje veoma ~esto implementiraju operacije nad nizovima podataka
(poqima/vektorima). U programskim petqama se ponavqa ista grupa operacija nad
razli~itim skupom podataka. Mnogi nau~ni problemi zahtijevali su izvr{avawe
ogromnog broja petqi nad velikim nizovima podataka. Optimalno izvr{avawe
programskih petqi, odnosno operacija nad vektorima, bio je ciq arhitektura koje
su rezultovale SIMD procesorskim poqima i vektorskim procesorima.
12
Na nivou izvo|ewa instrukcija i grupa instrukcija, tako|e je mogu}e identifi-
kovati (i eksploatisati) zna~ajan iznos paralelizma. Na ovom nivou (procesirawa
instrukcija), najzna~ajnije tehnike za eksploataciju paralelizma su proto~na obra-
da i grupna obrada operacija sa kori{tewem vi{e funkcionalnih jedinica.
Koncept proto~ne obrade se sastoji u tome da se neka operacija razdijeli u
sekvencijalni niz podoperacija, pri ~emu se svaka podoperacija realizuje u specija-
lizovanom hardverskom sklopu (proto~nom stepenu). Niz ovih hardverskih segme-
nata ~ini proto~ni sistem. Kroz proto~ni sistem se propu{ta tok podataka. Svaki
podatak se parcijalno obra|uje u svakom proto~nom stepenu, a procesirawe podata-
ka (kompletirawe operacije) se zavr{ava po izlasku procesiranog podatka iz
proto~nog sistema (odre|ene varijacije postoje u smislu blokirawa odre|enih
segmenata pri prolazu podatka kroz proto~ni sistem, mogu}nosti premo{}avawa i
sl.). Sukcesivni podaci se obra|uju tako da se pojedine faze wihove obrade prekla-
paju u razli~itim proto~nim stepenima (Sl. 2.2). Proto~ni stepeni mogu implemen-
tirati jednu ili vi{e funkcija (multifunkcionalni proto~ni stepeni).
S1
S2
Sn
…
L LLL
Izlaz Ulaz
Sl. 2.2 Koncept proto~ne obrade.
Ako je ka{wewe signala kroz prihvatni registar Tl, a propagacija kroz kombina-
cionu logiku proto~nih stepeni Ti, onda je period radnog takta proto~nog sistema T
= {Ti
max i} +Tl = Tm + Tl. Frekvencija je limitirana najdu`im periodom ka{wewa
kroz kombinacionu logiku nekog stepena.
Koncept maksimalnog preklapawa operacija u proto~nim stepenima, vodio je
implementaciji proto~nih stepeni pribli`no istih kombinacionih ka{wewa,
{to se moglo realizovati za redukovani skup naj~e{}e kori{tenih optimizovanih
operacija (instrukcija), odnosno RISC procesorskim arhitekturama. Drugi koncept
istovremenog izvr{avawa vi{e operacija (instrukcija) izvorno poti~e od ideje na
kojoj se zasnivaju podacima pokretane ma{ine: sve operacije koje imaju sve podatke
13
potrebne za izvr{ewe ~ine trenutno slobodan skup operacija koji je spreman za
izvo|ewe; skup procesora preuzima izvo|ewe operacija, nakon ~ega se generi{u
novi izlazni podaci i novi skup slobodnih operacija, spremnih za izvo|ewe u
narednom ciklusu.
Sli~no prethodno navedenom, kod ma{ina pokretanih kontrolnim tokom, niz
instrukcija se mo`e izvesti paralelno (slobodan skup), ako ne postoji zavisnost po
podacima (direktna, izlazna ili antizavisnost). U nizu sukcesivnih instrukcija
koje ne produkuju granawa (bazi~ni blok), prosje~an broj slobodnih operacija je ~ 3.
Pove}awe prosje~nog broja slobodnih operacija posti`e se eksploatacijom
paralelizma van bazi~nih blokova . Ovaj koncept vodio je razvoju ma{ina sa
velikom du`inom rije~i (VLIW-very large instruction word), pri ~emu se vi{e
nezavisnih operacija kodira u jednu VLIW instrukciju i sve se izvode istovremeno
(na vi{e izvr{nih jedinica). Prepoznavawe skupa slobodnih operacija u programu,
te planirawe wihovog izvr{ewa i kodirawe u VLIW instrukciju vr{i prevodilac
u fazi prevo|ewa.
Koncept istovremenog izvr{avawa vi{e instrukcija vodio je ekstenziji RISC
arhitektura ka superskalarnim ma{inama. Redoslijed izvo|ewa i mapirawe izvo-
|ewa instrukcija po procesnim resursima odre|uje se dinami~ki (sa mogu}no{}u
prekorednog izvo|ewa). Predikcija granawa vr{i se dinami~ki, na bazi stawa
automata za granawe pojedinih instrukcija, koja se vode u posebnoj, brzoj memoriji,
sa vjerovatno}om poga|awa do 95%. Aktuelni superskalarni procesori standardno
koriste proto~nu obradu u pojedinim funkcionalnim jedinicama. Postoji
rasprostraweno uvjerewe da }e ove arhitekture dominirati u narednom periodu
razvoja ra~unarske tehnike i da }e drugi aspekti imati malo uticaja na budu}i
razvoj istih. Ipak, budu}i da je paralelno procesirawe izrazito invazivno i da
prodire u sve aplikativne domene, od superprocesirawa do ugra|enih ra~unarskih
sistema, postoje tako|e sna`ni argumenti da postoje}e arhitekture moraju
evoluirati u pravcu podr`avawa generalnog modela za paralelno procesirawe. S
obzirom na ogromne investicije ulo`ene u razvoj postoje}ih sistema i na ~iwenicu
nastavka trenda rasta performansi postoje}ih tipova arhitektura, prirodno je
o~ekivati da }e u bliskoj budu}nosti proces te}i u pravcu kombinovawa postoje}ih
rje{ewa u ciqu {to ve}e eksploatacije paralelizma na svim hijerarhijskim
nivoima.
14
U ciqu kratkog pregleda ra~unarskih arhitektura izvr{ena je klasifikacija
data slikom 2.3.
Paralelni ra~. sistemi
Upravqanikontrolnim tokom
Upravqani podacima Upravqanizahtjevima
SIMD MISD MIMD
Vektorski Paralelni Visoko paralelni Labavo spregnuti
Multiprocesori
Multira~unari
Lokalnera~un. mre`e
Distribuirani sistemiAsocijativni
Sistoli~ni
Jednoprocesorski. sistemi
Sl. 2.3 Klasifikacija ra~unarskih arhitektura.
15
3. Klasična, Von-Noemanova arhitektura računara
3.1 Koncept Von-Noemanovog računara
Von-Noemanova arhitektura računara je izvanredno strukturirana: na najvišem nivou apstrakcije
predstavlja se jednostavnim i razumljivim dijagramom (Sl. 3.1).
I/O MEMORIJA
CPU
Sl. 3.1
Memorija promjenljivog sadržaja, sadrži ne samo podatke/rezultate računanja, nego i
program (skup instrukcija/akcija) koji se izvodi. Ovaj koncept je omogućio univerzalnost i
jednostavnost primjene računara: novi aplikativni zadatak može da se izvede na računaru samo
punjenjem drugog programa u memoriju i pokretanjem njegovog izvršenja. Centralna procesna
jedinica (CPU) dobavlja instrukcije iz memorije i izvodi ih jednu za drugom. Instrukcije sadrže
informacije kako o vrsti operacije/akcije, tako i o operandima nad kojima se akcija izvodi.
Distinkcija između instrukcija i podataka u memoriji i određivanje sekvence izvođenja je
ostvarena korištenjem programskog brojača (PC). Nakon završetka izvođenja neke instrukcije,
vrijednost programskog brojača specifikuje memorijsku adresu slijedeće instrukcije koja će se
izvesti. Na ovaj način postoji sekvencijalni tok kontrole (određen nizom sukcesivnih vrijednosti
programskog brojača) koji upravlja izvršenjem programa. Dakle, u toku izvođenja, postoji jedan
16
tok (niz) instrukcija koje se izvode nad odnosnim tokom (nizom) podataka. Iz navedenog razloga,
ovaj tip arhitektura po Flyn-ovoj klasifikaciji spada u grupu SISD (single instruction-single data)
računara.
Ovaj jednostavan koncept omogućio je da se kompleksan sistem, kao što je računar sa svojim
procesima, uspješno analiziraju, te da se sistematski rješavaju odnosni problemi.
3.2 Princip organizacije SISD računarskih sistema
Globalni blok dijagram SISD računara dat je na sl. 3.2. Osnovni funkcionalni elementi su, kako je
to naznačeno i u dijelu 3.1, Centralna procesna jedinica (CPU), memorija i ulazno/izlazni
(pod)sistem
Sl. 3.2
Izvršna jedinica
.
Program koji računar izvodi, nalazi se u glavnoj memoriji računara. Program u glavnoj memoriji
može biti trajno upisan (u memoriju sa trajnim sadržajem ROM-EPROM), ili se puni u glavnu
memoriju (RAM) sa sekundarne memorije (koja je takođe memorija sa trajnim sadržajem),
sistemskim programom. Prva varijanta je karakteristična za specijalizovane računare za
upravljanje procesima koji rade u otežanim eksploatacionim uslovima, dok je druga varijanta
karakteristična za računare opše namjene.
17
Kontrolna jedinica dobavlja instrukcije iz memorije, dekodira ih i generiše niz upravljačkih
signala u pravom trenutku i u korektnoj sekvenci kojima se obezbjeđuje izvršenje operacije
specifikovane instrukcionim kodom u izvršnoj jedinici procesora (Sl. 3.3). Npr. za izvođenje
instrukcije za promjenu znaka (komplementiranje do 2) sadržaja registra Rx:
(Rx) ¬ (Rx),
upravljačka jedinica generiše signale kojima se:
• sadržaj registra Rx dovodi na ulaz aritmetičko – logičke jedinice (ALU), • izvodi promjena znaka (komplementiranje do 2) u ALU, • rezultat upisuje nazad u registar Rx.
3.3
S obzirom da se mnogi rezultati izvršenja instrukcija koriste u kasnijoj fazi kao operandi
(podaci) potrebno ih je memorisati. Registri CPU-a mogu čuvati ove međurezultate, ali je broj
registara u procesoru mali a instrukcije za svoje izvršenje često zahtijevaju operande u registrima.
Zbog navedenog, pored instrukcija, u glavnoj memoriji se nalaze i podaci sa kojima program
operiše u toku svoga izvođenja. Za trajno čuvanje podataka i programa koristi se jeftinija
sekundarna memorija (magnetni/optički diskovi, magnetne trake). Magnetni diskovi se u
određenim slučajevima mogu koristiti i za privremeno smještanje dijelova programa/podataka u
toku izvođenja, kada kapacitet glavne memorije nije dovoljan. Procesor ne može direktno
dobavljati instrukcije niti podatke iz sekundarne memorije nego se to realizuje preko glavne
memorije.
Preko U/I sistema računar komunicira sa spoljnim svijetom. Osnovni zadatak ovog sistema
je transformacija informacija iz forme razumljive objektima spoljnjeg svijeta (ljudi, senzori,
izvršni organi itd.) u formu razumljivu računaru i obrnuto.
18
Navedeni osnovni moduli računara međusobno komuniciraju preko skupa prenosnih puteva
(linija) - magistrale. Broj prenosnih linija kojima se istovremeno mogu prenositi informacije
određuje širinu magistrale (u bitima).
3.2.1 Organizacija i struktura centralne procesne jedinice (CPU)
Osnovna funkcija CPJ je da izršava program smješten u glavnoj memoriji. Osnovni
funkcionalni blokovi CPJ su upravljačka jedinica i izvršna jedinica (u literaturi poznata i kao
staza podataka – data path). Upravljačka jedinica vrši pribavljanje instrukcija iz memorije,
njihovo dekodiranje i generisanje upravljačkih signala za izvršnu jedinicu (pribavljanje podataka i
instrukcija iz memorije se može realizovati i posebnom funkcionalnom jedinicom). Izvršna
jedinica izvršava operacije predviđene datom instrukcijom. Podaci u okviru CPU cirkulišu
jednom ili više skupina linija – internih magistrala.
Detaljnija blok šema procesora data je na sl. 3.4.
Reset
+1 PC
Sl. 3.4 Blok šema CPJ
19
33..33 Izvršna jedinica
Izvršna jedinica sadrži aritmetičko-logičku (ALU) i druge funkcionalne jedinice za
manipulaciju podacima, registre, pomjerače, generator adrese i komunikacione puteve
između njih. Kada postoji više puteva podataka na ulazu/izlazu neke komponente,
neophodna su upravljačka kola za selekciju podataka na odgovarajućim putevima
(upravljačke tačke). Upravljačka tačka je prekidač puta podataka koja, na bazi upravljačkog
signala, dozvoljava ili blokira prenos podataka na odgovarajućem prenosnom putu. Na sl 3.5 dat
je principijelni primjer implementacije upravljačkih tačaka na ulazu/izlazu jedne funkcionalne
jedinice CPU-a.
3.5
3.5
Sl. 3.5 Upravljačke tačke procesora
Upravljačke tačke pripadaju upravljačkoj jedinici, a sami putevi za prenos podataka izvršnoj
jedinici. MDR (memory data register) je interni registar preko kojeg se vrši upis podataka u
glavnu memoriju, odnosno čitanje podataka iz glavne memorije. On služi kao bafer između CPJ i
memorije pri prenosu podataka između ovih jedinica. MAR (memory address regeister) je takođe
interni registar, preko kojeg se postavlja adresa memorijske lokacije koja se referencira (za čitanje
ili upis). Transfer podataka iz memorije u registar se odvija u slijedećim koracima:
(MDR) Mem[MAR],
20
(Rx) (MDR).
Kao što je prethodno rečeno, ALU i druge funkcionalne jedinice (pomjerači, množači,
floating-point jedinice, grafičke jedinice itd.) vrše aritmetičko-logičke operacije nad podacima-
operandima predviđene instrukcijom.
3.3.1 Registri
Registri se u procesoru koriste za prihvat i čuvanje rezultata nakon izvršenja operacija u
funkcionalnim jedinicama procesora, za prihvat podataka iz memorije, te za transfer
podataka/međurezultata iz procesora u memoriju. Sastoje se iz elemenata koji mogu imati dva ili
više stabilnih stanja. Mogu se realizovati na različite načine: kao flip-flopovi, kola koja čuvaju
informaciju kao električni tovar na gejtu ili kapacitetu određenog tipa FET-a, kao skup prekidača
(fiksnog ili izmjenljivog stanja) itd. Između bitova registara može postojati određena logika, koja
može vršiti određene operacije između susjednih bitova registra (npr. kopiranje sadržaja
prethodnog/narednog bita u tekući bit registra, čime se ostvaruje pomjeranje sadržaja u registru,
odbrojavanje na više, na niže itd.).
Skup registara CPJ, čije stanje nakon izvršenja neke instrukcije može imati uticaja na
izvršenje slijedeće instrukcije naziva se programski model procesora. Ovo iz razloga što je za
programiranje na 'najnižem' nivou dovoljno poznavanje programskog modela procesora, odnosno
uloge i funkcije svakog registra iz programskog modela. MAR i MDR su interni registri, i ne
pripadaju programskom modelu procesora. S obzirom da stanje ovih registara može imati uticaj
na izvršenje slijedeće instrukcije, programski model se mora sačuvati u slučaju suspenzije
izvršenja programa (zbog prekida npr.), i restaurirati nakon završetka suspenzije i prije nastavka
izvođenja suspendovanog programa. Ostali registri CPJ se mogu svrstati u grupu internih
registara.
Registri programskog modela
Ovi registre se mogu svrstati u slijedeće grupe:
• Programski brojač. Neposredno prije početka pribavljanja i izvršenja instrukcije, ovaj
registar sadrži memorijsku adresu instrukcije koja treba da se izvrši.
• Registri opšte namjene. Ovi registri se generalno mogu referencirati u svim instrukcijama
koje koriste registre: kako za speifikaciju operanada tako i za specifikaciju adresa. Ipak, u
praksi obično postoje ograničenja na generalnost primjene ovih registara.
21
• Registri za podatke. Ovi registri mogu prihvatati podatke i njihov sadržaj se može
koristiti kao operandi u operacijama specifikovanim instrukcijama. Ovi registri se ne
mogu koristiti za specifikaciju adrese.
• Adresni registri. Koriste se za specifikaciju adrese operanada/instrukcija. Svaka
instrukcija (sa izuzetkom instrukcije NOP – No Operation) ili vrši određene operacije nad
operandima, ili vrši transfer kontrole izvođenja programa na instrukciju čija lokacija u
memoriji nije neposredno iza tekuće instrukcije (instrukcije grananja). Lokacije
operanada i slijedeće instrukcije dobijaju se u procesu sračunavanja efektivne adrese
(operanada, instrukcije), a ovaj proces zavisi od primijenjenog načina adresiranja u
odnosnoj instrukciji. Razumijevanje načina adresiranja i formiranja efektivne adrese je od
ključnog značaja za proces programiranja na asemblerskom nivou. Neki registri se u
instrukcijama pri formiranju efektivne adrese koriste inherentno, a neki eksplicitno
(moguće je korištenje više registara za specifikaciju adrese istovremeno). Postoji više
varijanti adresnih registara, prema njihovoj ulozi u formiranju efektivne adrese:
− Segmentni registri (Intel 8086, … ). Efektivna adresa se formira
kombinacijom sadržaja odnosnog segmentnog registra koji pokazuje na
početak segmenta (bazna adresa) i ofseta – odstojanja od početka segmenta
koji se formira zavisno od adresnog načina. Korištenje ovih registara je
podrazumijevajuće, ali se može navesti i eksplicitna upotreba registra kojom
se poništava podrazumijevajuća upotreba (segment override)
− Indeksni registri. Mogu se koristiti kao indeks u neko polje čiji je početak
određen baznom adresom. Obično ovi registri imaju mogućnost auto-
inkrementiranja odnosno auto-dekrementiranja.
− Bazni registri. Njihova uloga je suštinski ista kao segmentnih registara, izuzev
što se ovi registri eksplicitno navode pri specifikaciji instrukcije.
− Pokazivač steka. Ovaj registar pokazuje na vrh LIFO steka na koji se
automatski smještaju podaci pri pozivu potprograma ili pri ulasku u proces
poslužianja prekida. Takođe se stek može koristiti za privremeno smještanje
podataka korištenjem odgovarajućih instrukcija (PUSH, PULL/POP). U ovim
primjenama uloga pokazivača je podrazumijevajuća. Ovaj registar se najčešće
22
može i eksplicitno specifikovati (u instrukcijama kojima se inicijalizira ili
čuva sadržaj pokazivača).
• Statusni registar. Ovaj registar sadrži markere (flags, condition codes), koji se
postavlja se obično ju za indikaciju rezultata prethodne operacije. Npr. nakon
izvršenja neke aritmetičke operacije rezultat može biti pozitivan, negativan, nula,
može se desiti prenos (carry) ili preljev/premašaj opsega. Često je nakon ovih
aritmetičkih operacija potrebno testirati rezultat izvršenja i donijeti odluku o
daljem pravcu procesiranja na osnovu rezultata testiranja (npr. za slučaj preljeva,
potrebno je pozvati neku rutinu za procesiranje grešaka). Za ovo se koriste
instrukcije grananja zavisno od uslova (BNE, BPO, JE, …). Ove instrukcije kao
ulazne parametre koriste stanje markera u statusnom registru. Standardni markeri
u statusnim riječima procesora su:
− Sign (Znak). Bit koji označava znak (pozitivan/negativan) rezultata prethodne
operacije.
− Zero (Nula). Bit koji je postavljen ako je rezultat prethodne operacije 0.
− Carry (Prenos). Ovaj bit se može postaviti različitim instrukcijama, npr.
prenosom kod sabiranja iz bita najviše težine (odnosno 'pozajmljivanjem' kod
oduzimanja), pomjeračkim instrukcijama te eksplicitnim postavljanjem
statusnog registra.
− Overflow (Preljev/premašaj). Ovaj bit se postavlja kada se rezultat operacije
(npr. sabiranja) ne može predstaviti brojem raspoloživih bita registra.
− Interrupt enable (Omogućenje prekida). Ovim bitom se dozvoljava/
onemogućuje prekid izvršenja programa eksternim zahtjevom. U slučaju da je
prekid dozvoljen i da postoji zahtjev za prekid, procesor nakon kompletiranja
tekuće instrukcije čuva tekući kontekst/stanje izvršenja (ili neophodni dio tog
konteksta) i započinje izvršenje rutine za servisiranje prekida (interrupt
service routine). Ukoliko postoji više ulaznih linija u procesor različitih
prioriteta kojima se može zahtijevati prekid tekućeg izvođenja i servisiranje
zahtjeva, u tom slučaju u statusnom registru postoji više bita kojima se
određuje minimalni prioritet zahtjeva koji će biti poslužen.
23
− Biti privilegovanog režima. Ovim bitima se može specifikovati režim
izvođenja instrukcija: tipično korisnički režim (koji je efektivan kada se izvodi
korisnički program) ne može izvoditi sve instrukcije iz repertoara procesora.
U supervizorskom režimu procesor izvodi sve instrukcije iz svog repertoara.
Moguće je postojanje i režima rada sa privilegijama između dva navedena
slučaja.
Interni registri
Interni regstri su registri koje procesor interno koristi za privremeno smještanje i baferovanje
podataka u procesu pribavljanja i izvršenja instrukcije. Stanje ovih registara nakon izvršenja neke
instrukcije ne utiče na izvršenje slijedeće instrukcije. Npr. MAR (memory address register) se
koristi postavljanje memorijske adrese sa koje se vrši očitavanje podatka/instrukcije, odnosno na
koju se vrši upis podatka. Nakon što se adresa (generisana generatorom adresa) postavi u MAR,
transfer podatka između procesora i memorije se vrši aktiviranjem upravljačkih signala za čitanje/
upis memorije (Mem_Read, Mem_Write). Ukoliko se vrši upis u memoriju, prethodno se podatak
mora postaviti u MDR (memory data register). Nakon čitanja iz memorije, podatak se takođe
prvo smješta u MDR, a zatim se prosljeđuje u registar ili ulaz ALU.
Npr. ako se izvodi instrukcija
ADD Rx, displ[Bx],
koja vrši sabiranje sadržaja registra Rx i memorijske lokacije određene baznom adresom
(sadržane u registru Bx) i odstojanjem displ od početka te adrese, onda:
• generator adresa prvo sračunava efektivnu adresu EfADR = (Bx) + displ,
• (MAR) EfADR, • (ΜDR) Mem[MAR], • (Rx) (Rx) + (MDR). (ALU u jednom ciklusu sračunava zbir operanada koji su
dovedeni na ulaz – Rx i MDR, te vraća rezultat u odredišni registar (Rx).
3.3.2 Interne magistrale
Internim magistralama se prenose podaci, adrese i upravljački signali u okviru centralne
procesne jedinice. U cilju postizanja većih brzina, broj internih (on chip) magistrala je po pravilu
veći od spoljnih. U slijedećem primjeru su date varijante organizacije centralne procesorske
jedinice sa različitim brojem internih magistrala.
24
25
3.3 Princip organizacije
3.4 Struktura CPU
3.5 Bazi~na organizacija memorije
3.6 Izvo|enje programa
3.7 Povezivanje i komunikacija sa periferijskim podsistemom
3.8 Magistrale Izvršna jedinica
+1
25
33..33 Upravljačka jedinica
Upravljačka jedinica generiše signale za upravljanje svim aktivnostima u okviru CPJ,
kontrolom upravljačke jedinice se vrši dobavljanje instrukcije iz memorije, njeno
dekodovanje i identifikacija operacije koju je potrebno izvršiti, identifikacija i prenos
operanada od izvorišta do funkcionalnih jedinica gdje se zahtijevana operacija izvodi, te
vraćanje rezultata na odredište. Ovaj proces se pod kontrolom upravljačke jedinice
ponavlja pri izvođenju svake slijedeće instrukcije. Dakle, upravljačka jedinica djeluje kao
'komandni centar' iz kojeg se upravlja radom ostalih jedinica sistema, a u svrhu izvršenja
niza mašinskih instrukcija – programa čime se realizuje željena funkcija - algoritam.
Da bi upravljačka jedinica ostvarila ove zadatke, ona mora da:
• obezbijedi korektan redoslijed izvršenja instrukcija (sekvenciranje instrukcija),
• generisanjem potrebnih signala obezbijedi izvršenje selektovane instrukcije.
Sekvenciranje instrukcija
Kao što smo prethodno naveli, procesor izvodi niz instrukcija (elementarnih akcija sa
stanovišta asemblerskog programiranja) iz skupa mašinskih instrukcija procesora. Skup
mašinskih instrukcija može biti različit (minimalni skup kojim se može realizovati svaki
algoritam je skup koji se sastoji iz (M. L. Minsky, 1967):
• instrukcije ADD ONE (dodaj jedan) i,
• instrukcije DECREMENT AND JUMP IF ZERO (umanji sadržaj za jedan uz
grananje ako je rezultat 0).
Podrazumijeva se da se iza prve instrukcija (ADD ONE) u sekvencijalnom programu
može izvesti samo jedna (slijedeća sekvencijalna instrukcija), tj. da ona ima samo jednog
nasljednika, dok se nakon izvršenja druge instrukcije (DECREMENT AND JUMP IF
ZERO) izvodi jedna od dvije moguće 'slijedeće' instrukcije, zavisno od rezultata
izvršenja. Druga instrukcija spada u grupu instrukcija grananja. U praksi je broj
instrukcija prvog tipa znatno veći od drugog (¨približno je 20% instrukcija grananja).
Logika za određivanje lokacije slijedeće instrukcije, nakon izvođenja instrukcije I1
prvog tipa, je jednostavna: ako PC pokazuje na lokaciju instrukcije I1, onda:
26
• na osnovu operacionog koda i načina adresiranja instrukcije I1, može se utvrditi
broj bajta w instrukcije I1,
• ako je slijedeća instrukcija koja treba da se izvede smještena neposredno iza I1,
onda se njena adresa može odrediti novom vrijednošću PC-a:
PC PC+ w.
Kod instrukcije grananja, ukoliko je rezultat izvršenja takav da je potrebno izvršiti
instrukciju koja se ne nalazi iza same instrukcije nego na mjestu MX, onda sama
instrukcija grananja sadrži informacije (način adresiranja, registri koji se koriste za
specifikaciju adrese, ofseti i slično) na osnovu kojih se sračunava vrijednost MX
(efektivna adresa) tako da je proces sračunavanja adrese slijedeće instrukcije slijedeći:
• na osnovu operacionog koda i načina adresiranja instrukcije I1, utvrđuje se broj
bajta w instrukcije,
• ukoliko je uslov testiranja istinit, onda se na osnovu adresnog načina sračunava
MX i PC MX; u suprotnom PC PC+ w.
Pored prenosa upravljanja sa sukcesivnog toka instrukcija na instrukciju koja nije u
nizu instrukcijama grananja (koje mogu biti instrukcije uslovnog ili bezuslovnog
transfera), ovaj prenos se standardno u računarskim sistemima može realizovati
instrukcijama za poziv potprograma (instrukcije tipa CALL, JSR ili slično), ili
događajem prekida. Tipično, u ovim slučajevima, prenos upravljanja je privremen, i
vraća se na tačku gdje se prekid desio nakon završetka potprograma ili obrade prekida.
Izvođenje instrukcija
Izvođenje instrukcija se realizuje tako što upravljačka jedinica generiše niz upravljačkih
signala u pravo vrijeme i u korektnoj sekvenci, koji upravljaju radom izvršne jedinice
procesora. Ovi signali su:
• interni upravljački signali (koji upravljaju radom sklopova u okviru CPU-a),
• spoljni upravljački signali (signali tipa MR, MW, IOR, IOW, statusni signali
procesora),
• spoljni ulazni upravljački signali (signali tipa Reset, Ready, BussError itd.),
27
• instrukcija – signali na ovim linijama ukazuju na tip operacije koja treba da se
obavi (Sl. 3.6).
6
Tipovi upravljačkih jedinica
Dve su varijante realizacije upravljačke jedinice:
• direktno upravljanje. Logičkom mrežom se generišu kontrolni signali u
predefinisanom redoslijedu za svaku mašinsku instrukciju (hardwired/konvencionalni
pristup),
• mikroprogramsko upravljanje (Wilkis 1953). Kontrolni signali se generišu izvršenjem
mikroinstrukcija zapisanih u internoj mikroprogramskoj memoriji procesora.
Izvođenje svake mašinske instrukcije (koja ima svoj asemblerski ekvivalent) se
realizuje nizom elementarnih akcija koje se implementiraju mikroinstrukcijama.
Prednost direktnog upravljanja je brzina a mikroprogramskog jednostavnost
realizacije i izmjena/otklanjanja grešaka u projektovanju. Mikroprogramsko upravljanje
takođe daje veću fleksibilnost u smislu mikroprogramske implementacije specijalnih
rutina (korisničkih, dijagnostičkih i dr.), mogućnost emulacije procesora starijih
generacija ili drugih procesora itd.
28
Upravljačka jedinica sa direktnim upravljanjem.
Varijante ovog tipa upravljačkih jedinica su upravljačke jedinice zasnovane na:
• tabeli stanja,
• elementima za kašnjenje
• brojačkoj sekvenci.
Prilikom izvođenja instrukcije procesor prolazi kroz niz internih stanja. Na osnovu
tekućeg stanja i skupa ulaznih signala, generišu se izlazni signali i procesor prelazi u
novo stanje. Dio generisanih izlaza se koristi kao ulazni signali sljedećeg stanja. Logika
rada, može se predstaviti tabelom stanja, kojom se opisuje prelazi procesora kroz interna
stanja. Na Sl. 3.7 vrste u tabeli odgovaraju internim stanjima iz skupa Sint. Kolone u tabeli
odgovaraju podskupovima ulaznih signala bj A⊂ ul. Iz stanja Si pod dejstvom podskupa
ulaznih signala bj prelazi se u novo stanje Sij, pri čemu se aktiviraju ulazni signali
definisani sa aij ⊂ Aiz.
Sl. 3.7 Tabela stanja upravljačke jedinice
Problem sa realizacijom upravljačke jedinice upravljane na bazi tabele stanja je u veličini
tabele, zbog velikog broja mogućih stanja i velikog broja stanja ulaznih signala.
Upravljačka jedinica zasnovana na elementima za kašnjenje
Kod ovog koncepta upravljačkih jedinica, polazi se od dijagrama toka rada upravljačke
jedinice. Za reprezentaciju n stanja sistema koristi se n-bistabilnih elemenata; jedan
element po stanju.
29
U datom trenutku aktivan je samo jedan bistabilni element i taj ukazuje na tekuće stanje.
Prelaz u novo stanje se može predstaviti podskupom osnovnih koncepata dijagrama toka,
pri čemu se svaki od ovih koncepata implementira odgovarajućim upravljačkim kolom
(Sl.3.8)
Nedostatak ove metode je u velikom broju flip-flopova koji se koriste za reprezentaciju
stanja sistema, odnosno elemenata za kašnjenje. Sličan koncept realizacije je koncept
zasnovan na brojačkoj sekvenci.
Sl. 3.8 Realizacija koncepata dijagrama toka upravljačkim kolima
Metoda brojačke sekvence
Upravljačka jedinica ovog tipa pretpostavlja izvršenje mašinske instrukcije u k koraka. U
i-tom koraku aktivira se neki skup upravljačkih linija korištenjem odnosnog faznog
impulsa Φi. Fazni impulsi Φi (i = 1, …, k) generišu se kolom 'brojač sekvenci'. Sukcesivni
impulsi na izlazu brojača sekvenci su vremenski pomjereni za vrijeme trajanja impulsa
30
(Sl. 3.9). Sprega brojača sekvenci i logičkog bloka kojim se implementira odnosna
funkcija predstavljena je na sl. 3.10 (3.36).
Sl.3.9 Brojač sekvenci modula k
Sl. 3.10 Sprega brojača sekvenci i logičkog bloka
31
Primjer generisanja upravljačkih signala pri izvođenju ADD instrukcije hipotetičkog
procesora metodom brojačke sekvence, dat je u tekstu koji slijedi. Dio staza podataka
hipotetičkog procesora prikazan je na sl. 3.11 (1.2MP). Kontrolne tačke su predstavljene
kružićima. Sadržaj registra iz registarskog skupa, specifikovanog A-adresom ili B-
adresom se prosljeđuje na odnosnu magistralu (A ili B) tako da se oni pojavljuju na ulazu
ALU kao operandi. Izlaz iz ALU-a ide na D-magistralu, i može se kopirati u registar
specifikovan B-adresom. Za selekciju registra A i B koriste se kontrolni signali 1 i 2, za
kopiranje izlaza ALU signal 3, za očitavanje/upis sadržaja registra kontrolni signal 4 i za
specifikaciju ALU operacije signali 5 – 8.
Sl. 3.11 Staze podataka hipotetičkog procesora
Pretpostavimo da ADD instrukcija hipotetičkog procesora ima format:
32
OPCODE ADD A-adresa B-adresa
pri čemu A i B adrese specifikuju odnosni registar u registarskom skupu. ADD
instrukcija se može definisati kao što slijedi:
Dodaj sadržaj registra specifikovanog A-adresom sadržaju registra
specifikovanog B–adresom, i smjesti rezultat u registar određen B-
adresom.
Pretpostavimo da je instrukcija već raspoloživa u registru (instrukcioni registar).
Vremenski dijagrami signala potrebnih za implementaciju gornje instrukcije, zajedno sa
osnovnim taktom i faznim signalima Φ1 - Φ4, dati su na Sl. 3.12.
Sl. 3.12 Vremenski dijagrami upravljačkih signala za implementaciju ADD instrukcije
33
ADD operacija se implementira slijedećom sekvencom događaja:
Φ1 a. Omogući A-adresu: Ovim se postavlja prvi operand na ulaz ALU
b. Omogući B-adresu: Ovim se postavlja drugi operand na ulaz ALU
c. Postavi ALU kontrolu: Ovim se specifikuje operacija za izvršenje u ALU
Φ2 a. Omogući A-adresu: Zadrži A - vrijednost na ulazu ALU-a
b. Omogući B-adresu: Zadrži B - vrijednost na ulazu ALU-a
c. Omogući D-prihvatnik (leč): Proslijeđivanje rezultata na D-magistralu
d. Postavi ALU kontrolu: Zadrži ALU OPCODE
Φ3 a. Onemogući A-adresu: (posto više nije potrebna)
b. Omogući B-adresu: Za upis sadržaja D – magistrale u B registar
c. Onemogući D-prihvatnik (leč): (više nije potrebna)
d. Omogući upis: Omogućava upis D – magistrale u B registar
Φ4 Onemogućenje svih signala: Kraj operacije
34
Kontrolna logika potrebna za generisanje vremenskog dijagrama sa Sl. 3.12. data je na Sl.
3.13.
Sl. 3.13
Metoda zasnovana na elementima za kašnjenje je konceptualno ista kao i metoda
zasnovana na brojačkoj sekvenci. Konverzija rješenja na bazi prve metode u rješenje na
bazi brojačke sekvence je predstavljena na Sl. 3.14.
35
Sl. 3.14 Korespondencija između metode zasnovane na kašnjenju i metode zasnovane na upravljačkoj sekvenci
38
Kao što je prethodno rečeno, mikroinstrukcije sadrže skup mikrokomandi koje
kontrolišu izvršenje skupa mikrooperacija u toku mikroinstrukcionog ciklusa. Ukoliko se
svakom mikroinstrukcijom kotroliše izvršenje samo jedne mikrooperacije, onda se radi o
vertikalnim mikroinstrukcijama, a ako se jednom mikroinstrukcijom može specifikovati
izvršenje više mikrooperacija, onda se radi o horizontalnim mikroinstrukcijama.
Prednost vertikalnih mikroinstrukcija je u:
• maksimalnom iskorištenju mikroinstrukcione riječi, jer se specifikuje samo
operacija koja se izvodi,
• mikroprogramiranje je jednostavno zbog jednostavnosti formata mikroinstrukcija.
Nedostatci vertikalnog mikroprogramiranja su u relativno dugim sekvencama
mikroinstrukcija, što implicira duže vrijeme izvršenja mikroprograma i što nema
mogućnost paralelnog izvođenja mikrooperacija.
Često se pod horizontalnim mikroinstrukcijama podrazumijeva maksimalni
paralelizam operacija, što podrazumijeva korištenje većeg broja različitih polja u okviru
mikroinstrukcije. Balansirani pristup koristi manji broj polja za specifikaciju mikro-
operacija nego kod horizontalnih mikroinstrukcija; ovaj format mikroinstrukcija se često
referiše terminom dijagonalni format (dijagonalne mikroinstrukcije). Dok je broj
različitih polja kod vertikalnih mikroinstrukcija 1-3, horizontalnih veći od 6, kod
dijagonalnih instrukcija broj različitih polja je od 4-6.
Ukoliko se u mikroprogramskoj memoriji nalazi veliki broj mikroinstrukcija koje se
ponavljaju (ako je ukupan broj mikroinstrukcija n, broj različitih mikroinstrukcija je m pri
čemu je često m << n) onda se može primijeniti koncept nanoprogramiranja. Kod ovog
koncepta, konvencionalna mikroprogramska memorija se zamjenjuje mikroprogramskom
memorijom od n riječi. Svaka riječ sadrži samo adresu mikroinstrukcije u nanomemoriji
(te je , s obzirom da imamo m različitih mikroinstrukcija, dužina ove mikroprogramske
riječi log2m bita). Na ovaj način se smanjuje zahtjev za ukupan kapacitet memorije
mikroprograma (Sl. 3.15).
39
Sl. 3.15 Konvencionalni i nanoprogramski koncpet realizacije mikroprogramske
memorije
40
33..44 Ulazno/Izlazni podsistem
3.4.1 Povezivanje procesora sa okolinom
Fizičko povezivanje mikroprocesora sa okolinom realizuje se preko električki
provodljivih nožica – pinova. Preko pinova se realizuje napajanje procesora, taktna
pobuda te prenos signala za komunikaciju sa memorijom i U/I podsistemom. Putevi koji
povezuju pinove procesora sa ostalim dijelovima sistema čine spoljašnu magistralu
procesora. Različiti procesori mogu imati određene specifičnosti u pogledu broja i
funkcija pojedinih linija. Za ilustraciju, primjer linija za povezivanje hipotetičkog
procesora dat je na sl 3.16.
Sl. 3.16
3.4.2 Princip povezivanja sa U/I podsistemom
Računar komunicira sa spoljnim svijetom (ljudi, industrijski procesi itd.) preko
ulazno/izlaznih jedinica (uređaja). S obzirom na primjenu računara u svim oblastima
ljudske djelatnosti, razvijen je veliki broj periferijskih uređaja sa kojima računar može da
komunicira. Mnogi od ovih uređaja postali su standardni dio računarskih sistema. I pored
41
velikog broja, veoma različitih perifernih jedinica, princip njihovog povezivanja sa
računarima je u znatnoj mjeri standardizovan.
Prema komunikacionim karakteristikama, U/I uređaje možemo grupisati u:
• razumljive čovjeku (terminali, štampači, zvučne U/I jedinice itd.),
• čitljive od strane mašine (magnetne trake, diskovi, skeneri itd),
• komunikacione (pogodni za komunikaciju sa udaljenim uređajima),
• razumljive specifičnim uređajima/procesima (A/D konvertori, jedinice za sprezanje sa izvršnim organima itd.)
Prema brzini, razlikujemo brze (magnetni diskovi, A/D konvertori, komunikacioni
uređaji), jedinice srednjih brzina (jedinice magnetnih traka, standardni tastarure
štampači itd.) i spore uređaje ( prekidači, releji i slično).
Princip povezivanja periferijskih jedinica i računara može se predstavi sl. 3.17. Sa
slike se vidi da se povezivanje sa periferijom vrši posredstvom U/I interfejsa. Kao i
memorijska sabirnica i U/I sabirnica sadrži adresne linije, linije podataka, i kontrolne
linije. Adresne linije služe za selekciju registara (portova) preko kojih se odvija
komunikacija sa periferijskim jedinicama, a preko linija podataka se vrši prenos
informacija između periferija i računara. Kontrolnim linijama se prenose kontrolne i
statusne informacije i vrši sinhronizacija prenosa. Broj adresnih linija kao i broj linija
podataka ne moraju da korespondiraju broju odnosnih linija na memorijskoj sabirnici.
Sl. 3.17 Povezivanje računara sa periferijama
42
Principijelna blok šema U/I interfejsa prikazana je na sl. 3.18
Sl. 3.18 Blok šema U/I interfejsa
Iako memorijski i U/I podsistem mogu da dijele određene linije i adresa i podataka,
oni su logički razdvojeni: određene kontrolne linije specifikuju da li se operacije odnose
na U/I ili memorijski podsistem. Npr. pri generisanju U/I adrese 5, na adresnim linijama
će se pojaviti vrijednost 5, ali će aktivan biti kontrolni signal za komunikaciju sa
periferijama (M/IO u logičkoj 0 ), a pri generisanju memorijske adrese 5, pored iden-
tičnog sadržaja na adresnim linijama, na kontrolnim linijama signal M/IO biće u stanju
logičko 1.
I pored standardizacije tehnika povezivanja U/I uređaja sa računarima problemi kod
povezivanja proističu iz razlike u: brzini periferija; broju bita prenosa; specifičnom
načinu zapisivanja/predstavljanja podataka; tipovima dozvoljenih operacija, načinu
detekcije i reakcije na pojave grešaka itd. Zbog tih specifičnosti, nije racionalna
implementacija logike povezivanja sa periferijama u sam CPU.
3.4.3 U/I interfejs
43
U/I interfejs kontroliše rad periferijskih jedinica u skladu sa naredbama procesora
računara, i po potrebi vrši konverziju podataka iz jednog formata u drugi. Najčešće su
periferijske jedinice zasebne cjeline, dok se U/I interfejs pakuje u isti kabinet/kućište sa
procesorom i memorijom.
Ponekad nije jednostavno utvrditi liniju razgraničenja između periferije i interfejsa.
Npr. na sl. 3.19, enkoder konvertuje pritisak na tipku tastature u 7-bitni ASCII kod. Ovaj
kod se pamti u interfejsu ka magistrali, i na zahtjev prosljeđuje na samu magistralu. Iako
je logički enkoder u sastavu interfejsa, on se najčešće pakuje zajedno sa tastaturom, dok
se interfejs prema magistrali implementira u kućištu zajedno sa procesorom.
Sl. 3.19 Jednostavni interfejs tastature
U/I interfejs treba da prepozna kada mu se CPU obraća u cilju slanja/čitanja podataka
/komandi/statusa i da izvrši u predviđenom vremenu zahtijevanu akciju/operaciju: prihvat
ili slanje odnosnih podataka. Za realizaciju toga cilja, U/I interfejs treba da generiše i da
procesira odnosne signale za sinhronizaciju komunikacije sa CPJ. Zahtjevi analogni
navedenom se postavljaju i pri komunikaciji U/I interfejsa sa periferijom. Dodatno, U/I
interfejs treba da obezbjedi potrebnu konverziju podataka iz formata u kojem prima
(šalje) podatke od CPJ (periferijske jedinice) u format prijema od strane periferijske
jedinice (CPJ), da obezbijedi procesiranje grešaka itd. Principijelna blok šema U/I
interfejsa, kojom se obezbjeđuju navedene funkcije data je na sl. 3.20.
44
Sl. 3.20 Blok šema U/I interfejsa
U/I portovi
Periferijski interfej sadrži skup registara – U/I portova kojima CPU može da pristupa
i preko kojih CPU komunicira sa interfejsom. Funkcije portova mogu biti:
• Baferovanje podataka ka/iz memorije, • Čuvanje informacije o statusu uređaja sa kojim se komunicira, • Registrovanje komandi CPU –a upućenih U/I interfejsu.
45
Skup portova predstavlja U/I programski model. Programski model interfejsa
tastature sa sl. 3.19 sastoji se od jednog 8-bitnog I/O porta (KBDATA) (sl. 3.20).
7 6 0
0 Kod tipke (ASCII) KBDATA
Sl. 3.20 Programski model interfejsa tastature
Da bi očitao podatak sa tastature, program mora da izvede instrukciju koja vrši
transfer sadržaja porta KBDATA u jedan od registara procesora. Iako je port KBDATA
sa stanovišta procesora read-only (moguće samo čitanje), encoder (interfejs) može da
'upisuje' u njega podatke. Pokušaj upisa u port sa procesorske strane nema efekta na
sadržaj registra. Zbog navedenog, port se naziva 'ulazni'.
Primjer interfejsa ka izlaznoj periferijskoj jedinici, sa jednim (izlaznim) portom
(DIGOUT) u interfejsu, prikazan je na sl. 3.21.
Sl. 3.21 a) 7-segmentni displej i pripadajući interfejs; b) programski model
Periferija interpretira 8-bitni podatak kao dvije BCD cifre, sa prikazom na 2 7-
segmentna displeja. Da bi se izvršio prikaz željenih cifara, procesor mora poslati 2 BCD
cifre u 1-om bajtu na izlazni port DIGOUT odgovarajućim instrukcijama.
46
Pored toga što je KBDATA ulazni a DIGOUT izlazni port, razlika je i u tome što
KBDATA ne pamti sadržaj pritisnutog tastera, nego ga samo baferuje za prosljeđivanje
na U/I magistralu (kada se tipka tastature otpusti, istovremeno dolazi i do promjene
KBDATA). S druge strane DIGOUT je registar sa memorijom: nakon upisa od strane
procesora, sadržaj porta se ne mijenja dok se ne upiše nova vrijednost od strane CPU-a.
Prema tipu podataka koji se izmjenjuju između porta i procesora, razlikujemo:
• port podataka (preko kojeg se izmjenjuju podaci),
• statusni port (preko kojeg procesor može dobiti informaciju o stanju prenosa, U/I
interfejsa odnosno uređaja),
• upravljački port, preko kojeg CPU postavlja komande i parametre za izvođenje
U/I operacija.
3.4.4 Načini selekcije U/I uređaja
Za selekciju U/I uređaja i transfer podataka ka perifernim uređajima (i obrnuto),
procesor može koristiti dva načina. Jedan je korištenjem specijalnih U/I instrukcija
procesora (izolirani U/I), dok se drugi realizuje korištenjem instrukcija za izmjenu
podataka sa memorijom (memorijsko – mapirani U/I).
Primjer korištenja i formata U/I instrukcija IN / OUT je dat na sl. 3.22.
IN Rn, Pn ; učitava se u registar Rn sadržaj porta Pn,
OUT Pn, Rn ; upisuje se u port Pn sadržaj registra Rn.
15 4 3 0
Opcode Rn
Pn
Sl. 3.22 Korištenje i format U/I instrukcija
IN / OUT instrukcije izvršavaju transfer podataka slično memorijskim instrukcijama
LD / ST, izuzev da ne adresiraju memoriju nego U/I port. Pri izvođenju memorijskih
instrukcija procesor aktivira signal M/IO za selekciju memorije (logičko 1). Signal M/IO
47
se koriste kako za selekciju portova U/I interfejsa (pored adresnih informacija), tako i za
inicijalizaciju samog transfera. Pri transferu podataka iniciranom IN/OUT instrukcijama,
memorija nije 'prozvana', jer je kontrolni signal M/IO postavljen na 0. Na taj način
adrese selektuju ili I/O portove, ili memorijske lokacije, zavisno od korištenih instrukcija
(odnosno kontrolnih signala koji se generišu). Kod memorijski – mapiranog U/I, I/O
portovima se pristupa korištenjem memorijskih instrukcija. Jedan dio memorijskog
adresnog prostora je pridjeljen za adresiranje U/I portova (sl. 3.23).
Sl. 3.23 Izolovani i memorijski-mapirani I/O
Prednosti memorijski - mapirane U/I komunikacije su:
• ne zahtijeva specijalizovane U/I instrukcije (kod nekih procesora ove instrukcije nisu ni raspoložive),
• za U/I transfer se mogu koristiti sve instrukcije za referenciranje memorije,
• raspoloživ je veliki broj U/I portova,
• pojednostavljuje se hardverska struktura.
Nedostaci memorijski - mapirane U/I komunikacije su:
• gubitak dijela adresnog prostora memorije (namijenjen za U/I), • memorijske instrukcije nisu optimizovane za U/I operacije.
3.4.5 Tehnike U/I komunikacije i prenosa podataka
48
Pri U/I komunikaciji CPU može biti u većoj ili manjoj mjeri uključen u proces U/I
komunikacije. Ako su U/I operacije u potpunosti kontrolisane od strane CPU-a
(iniciranje, osmatranje statusa periferije, transfer podataka i okončanje transfera), onda se
ovakav tip transfera naziva programirani U/I prenos.
Programirani U/I prenos
Tipičan protokol komunikacije za očitavanje podataka sa ulaznog porta kod
programiranog U/I prenosa dat je na sl. 3.24.
Sl. 3.24 Protokol komunikacije za ulaznu jedinicu.
Sl. 3.25 Programski model tastature sa kontrolnim i statusnim portom
Npr. za programski model tastature koji se sastoji od jednog kontrolnog i statusnog
porta i jednog ulaznog porta za podatke (sl. 3.25), učitavanje podataka tehnikom
programiranog ulaza/izlaza dat je slijedećim kodom:
49
INIT: LDA #1 ; Start (iniciranje) operacije
STA KBCS ;
CEKANJE: TST KBCS ; Testiranje spremnosti interfejsa (RDY=1)
BPL CEKANJE ; Čekanje, ako interfejs nije spreman
LDA KBDATA ; Interfejs spreman, očitaj podatak
….
Pored ove varijante programiranog U/I (uslovni U/I prenos), u varijanti bezuslovnog
prenosa procesor ne ispituje status spremnosti periferije za komunikaciju; ovo se
primjenjuje kada se zna da je periferija uvijek spremna za U/I komunikaciju u trenutku
iniciranja transfera. Primijetimo da je moguće inicirati pripremu slijedećeg podatka (npr.
kod čitanja jedinice magnetne trake), nakon očitavanja prethodnog, i nastaviti obradu
(preklapanje obrade i U/I – overlapped U/I).
Tehnika prenosa podataka programiranim U/I ima veliki nedostatak u ogromnom
gubitku procesorskog vremena dok se čeka na spremnost periferije (problem se dijelom
može ublažiti preklapajućim U/I). U cilju minimizacije utroška procesorskog vremena pri
U/I komunikaciji, razvijene su prekidne tehnike prenosa podataka, kao i prenos podataka
direktnim pristupom memoriji.
50
Prekidna tehnika U/I komunikacije
Prekidi
Prekidi su događaji koji uzrokuju prekid izvršavanja normalnog toka programske
sekvence. Ovi događaji mogu biti različiti, a dijele se na softverske (generisane
programom) i hardverske (generisane hardverskim sklopovima/uređajima) (sl. 3.26).
Prekid proizilazi iz višeg prioriteta servisiranja događaja koji uzrokuje prekid, u odnosu
na prioritet izvršavanja osnovnog programa. Servisiranje se realizuje aktiviranjem
prekidne rutine (interrupt service routine) koja treba da izvede sve potrebne akcije koje
zahtijeva pojava tog događaja. Nakon servisiranja događaja prekida programska sekvenca
se vraća na tačku prekida, nakon čega se nastavlja izvođenje osnovnog programa.
Prekidi
Softverski (sinhroni) Hardverski
Eksplicitno generisani
Poslj. greške u izvođenju programa
SWI
INT
SIM I/O INT
. . .
Eksterni Interni
Maskirani Nemaskirani
I/O ALARM
TIMER
. . .
. . .
. . .
DIV BY ZERO
POWER FAIL
MACHINE MULFUNCTION
PARITY ERROR
. . .
Sl. 3.26 Klasifikacija prekida
51
Određeni događaji najvišeg prioriteta uvijek uzrokuju prekid (npr. POWER FAIL,
MACHINE MULFUNCTION, ALARM, DIV BY ZERO, …). Maskirani prekidi se
poslužuju samo ako procesor prethodno postavi bitove dozvole prekida u statusnoj riječi
procesora za odnosne događaje.
Ideja prekida potiče od problema komunikacije sa periferijama. Kod programiranog
I/O procesor kontinualno testira spremnost periferije za komunikaciju. Pri takvom načinu
komunikacije, u sistemu sa mnogo periferijskih jedinica procesor bi većinu vremena
trošio u čekanju na spremnost periferija. Takav način rada bi usporavao čak i periferijske
jedinice: periferija koja ima spreman podatak bi mogla da čeka značajan vremenski
period zbog komunikacije procesora sa drugim periferijama programiranim U/I, što bi
blokiralo pripremu novih podataka od strane periferija koje čekaju na komunikaciju.
Alternativni pristup je da procesor radi koristan posao izvodeći osnovni program, a da
periferija kada postane spremna za komunikaciju, izvjesti o tome procesor – postavi
zahtjev za komunikaciju. Na osnovu prioriteta zahtjeva, procesor može prihvatiti zahtjev
i servisirati događaj aktiviranjem prekidne rutine, ili odložiti servisiranje zahtjeva za neki
kasniji trenutak vremena.
Procesor može prekinuti tekuću sekvencu kontrolnog toka samo između individualnih
mašinskih instrukcija. Razlog tome je to što program čije se izvršenje prekida, treba da
nastavi rad od tačke prekida nakon servisiranja događaja koji ga je generisao. Za to je
potrebno čuvanje stanja procesora (konteksta) u trenutku prekida, i restauracija tog stanja
nakon servisiranja prekida. Pošto je za izvođenje instrukcije osnovnog programa iza tačke
prekida bitan samo kontekst programskog modela nakon izvođenja prethodne instrukcije,
onda se prekidi dozvoljavaju samo nakon kompletiranja izvršenja jedne instrukcije a prije
početka izvršenja druge. Dakle, proces izvršenje jedne instrukcije bi se mogao opisati
sekvencom:
BEGIN
CheckForInterrupt; Fetch; Execute;
END
52
CheckForInterrupt sekvenca utvrđuje postojanje zahtjeva za prekid, odnosno
događaja koji zahtijevaju posluživanje. Ukoliko se radi o događaju (tipu prekida) koji
zahtijeva neodložno servisiranje ili ako je prekid koji se može kontrolisati (maskirati)
dozvoljen, onda se ulazi u proces posluživanja prekida u okviru kojeg se:
• Pohranjuje u memoriju (na stek) dio stanja ili kompletno stanje programskog modela procesora i postavlja u PC adresa početka rutine za servisiranje prekida (u sklopu CheckForInterrupt sekvence),
• Identifikuje izvor (uzrok prekida) i izvode se sve potrebne akcije za servisiranje prekida (u sklopu ISR – rutine za servisiranje prekida),
• Sačuvano stanje programskog modela se restaurira sa steka (insrukcijom RTI – return from interrupt, koja se izvodi na kraju ISR) i nastavlja izvođenje od mjesta gdje je prekid nastao.
Automatsko čuvanje (dijela) programskog modela procesora, u procesu posluživanja
prekida, obuhvata obavezno programski brojač i statusnu riječ procesora. Ukoliko je broj
registara procesora mali, onda se najčešće pohranjuje kompletan programski model, a
ukoliko je broj registara veliki, onda se zadatak čuvanja/restauracije njihovog stanja
realizuje u okviru ISR. Promjena stanja procesora (PC-a, registara i statusne riječi) pri
ulasku u servisnu rutinu i restauracija sačuvanog stanja pri povratku iz servisne rutine
naziva se promjena konteksta procesora (context switching). U cilju brzog čuvanja/
restauracije konteksta, mnogi procesori imaju specijalizovane instrukcije kojim se
specifikuje opseg registara čiji se sadržaj pohranjuje/restaurira.
Servisiranje prekida zavisi od prirode događaja koji ga je uzrokovao. U daljnjem
tekstu biće opisano više varijanti korištenja mehanizma prekida u procesu U/I
komunikacije.
Sistem sa većim brojem prekidnih linija
Najjednostavniji slučaj realizacije U/I komunikacije prekidnim mehanizmom je da
svaka periferija ima svoju prekidnu liniju (Sl. 3.27). Svaka linija kojom se zahtijeva
prekid ima obično fiksan prioritet. Omogućenje prekida određenih prioriteta se kontroliše
internim bitovima dozvole (interrupt enable). Za svaku prekidnu liniju definisana je
specifična adresa na koju se preusmjerava programska sekvenca u slučaju događaja
53
prekida (adresa ISR). U okviru interne CheckForInterrupt (mikroprogramske) sekvence
procesora se:
• utvrđuje zahtjev za prekid najvišeg prioriteta u IR,
• ukoliko je prekid tog nivoa dozvoljen (odgovarajućim bitima dozvole prekida
(obično u statusnoj riječi procesora) kojima se specifikuje dozvola prekida
određenog prioriteta i višeg), onda se ulazi u sekvencu posluživanja prekida
(pohranjivanje stanja i ulazak u ISR). Adresa ISR je određena zahtjevom INTRi
koji se poslužuje.
3.27
Kod prekidnog sistema ovog tipa (multinivoijski prekidni sistem sa n-nivoa) tipično
uređenje prioriteta je slijedeće:
Ako se poslužuje prekid nivoa k < n, onda su dozvoljeni prekidi nivoa k+1, …, n.
Koncept gdje se svakom U/I interfejsu pridjeljuje jedan prekidni nivo, nije pogodan,
jer broj periferija i U/I interfejsa može biti veliki (nije ga lako unaprijed ni predvidjeti).
Zbog toga se koristi rješenje gdje je na jednu liniju zahtjeva za prekid moguće vezati veći
broj U/I interfejsa (na ulazu u procesor može postojati jedna ili više prekidnih linija). Pri
tome se koriste različite tehnike za utvrđivanje izvora prekida na određenoj liniji.
Identifikacija prozivanjem
Kada se desi prekid uzrokovan zahtjevom za prekid INTRi na određenoj liniji, ulazi
se u proces posluživanja prekida aktiviranjem odgovarajuće ISR-e. Pri ulasku u ISRi nije
54
poznat izvor prekida, jer je više U/I interfejsa vezano na istu liniju INTRi. Da bi se
utvrdio izvor zahtjeva, odnosna ISRi treba da ispituje status svakog interfejsa vezanog na
INTRi liniju. Prvi interfejs za koji se utvrdi da je postavio zahtjev (što se utvrđuje
ispitivanjem statusnih portova interfejsa) opslužuje se u ISRi. Primjer hardverske
realizacije ove tehnike (za procesor sa jednom linijom INT za specifikaciju zahtjeva za
prekid), dat je na sl. 3.28, dok je primjer dijagrama toka odgovarajuće ISR dat na sl. 3.29.
Sl. 3.28 Šema hardverske implementacije prekidne tehnike U/I komunikacije prozivanjem
Primijetimo da redoslijed ispitivanja određuje i prioritet posluživanja zahtjeva istog
prekidnog nivoa. Ovaj redoslijed može biti fiksan, a može se i mijenjati (npr. round-robin
tehnikom: uređaj koji je poslednji poslužen, u narednom posluživanju ispituje se na
kraju). Takođe primijetimo da je moguća varijanta ISR-e u kojoj se vrši povratak (RTI)
na kraju posluživanja svakog interfejsa (čim se posluži prvi interfejs koji je tražio
zahtjev). Ova varijanta je pogodna ako je mala vjerovatnoća da dva interfejsa
istovremeno traže zahtjev za prekid.
55
Sl. 3.29 Dijagram toka ISR kod tehnike prozivanja
Lančanje i vektorsko prekidanje
Kod ove tehnike i dalje je više U/I interfejsa vezano na jednu INTRi liniju – zahtjev
za prekid. Identifikacija U/I interfejsa koji je zahtijevao prekid i aktivacija rutine za
posluživanje odnosnog interfejsa se realizuje hardverski. Da bi se aktivirala odnosna ISR
rutina interfejsa koji je postavio zahtjev za prekid, odnosni interfejs postavlja na linije
podataka prekidni vektor (odnosno identifikator na osnovu kojeg procesor identifikuje
ISR). Da bi samo jedan uređaj (od više njih, koji su eventualno postavili istovremeno
zahtjeve za prekid) postavio prekidni vektor na linije podataka, koristi se lančanje. Način
realizacije lančanja prikazan je na sl. 3.30.
56
Sl. 3.30 Način realizacije lančanja
57
INTA (interrupt acknowledge) se koristi kao signal da je CPU prepoznao zahtjev za
prekid i da je spreman da primi informaciju o vektoru prekida. Ovim se ostvaruje
sinhronizacija CPU-a i U/I interfejsa u procesu identifikacije zahtjeva za prekid.
Logika kontrole U/I komunikacije prekidnom tehnikom često se implementira
posebnim programibilnim kolom (kontroler prekida – interrupt controler). Kolo obično
sadrži registar za pamćenje zahtjeva za prekid (IRR – interrupt request register), registar
za maskiranje (IMR – interrupt mask register) (sl. 3.31), registar statusa servisiranja (ISR
– interrupt service register), konrolne i statusne registre te logiku za lančanje (chaining).
Sl. 3.31 Logika za maskiranje zahtjeva za prekide
Na slikama 3.32 i 3.33 prikazane su šeme korištenja kontrolera prekida za slučaj
povezivanja jedan port/interfejs - jedna prekidna linija, odnosno grupa portova/interfejsa
- jedna prekidna linija.
58
Sl. 3.32 Povezivanje U/I portova sa CPU preko kontrolera prekida
Sl. 3.33 Prekidni sistem sa grupisanjem U/I interfejsa i kontrolerom prekida
Program može zabraniti određene prekide postavljanjem odnosnih bitova u IMR.
Preko kontrolnih portova se definiše prioritetni mehanizam: fiksni prioriteti linija (sa
mogućnošću da se bilo kojoj liniji pridijeli najniži prioritet), round – robin itd. Takođe se
definiše vrijednost prekidnog vektora najnižeg prioriteta, odnosno adresa rutine za
servisiranje prekida (RSP). Ako se u IRR pojavi više zahtjeva istovremeno, onda
kontroler na bazi stanja registra maskiranja, registra servisiranja prekida (ISR), i
prioritetnog mehanizma zaključuje da li treba generisati zahtjev za prekid procesoru
(linija INTREQ, sl. 3.32, 3.33). Ukoliko je u toku posluživanje prekida višeg nivoa, onda
zahtjevi ostaju da 'vise' (pending requests). Ukoliko je pristigao jedan ili više zahtjeva
59
višeg nivoa od tekućeg posluživanja, onda se postavlja linija INTREQ u aktivno, nakon
prepoznavanja zahtjeva od strane CPU (aktivan INTA) interfejs (ili kontroler) postavlja
vektor prekida na magistralu podataka koji odgovara zahtjevu najvišeg nivoa (u varijanti
na sl. 3.32, 3.33, postavljanje vektora prekida postavlja U/I port). Procesor na bazi
prekidnog vektora određuje adresu RSP i ulazi u proces posluživanja prekida, a kontroler
postavlja bit u ISR. Na kraju obrade prekida, RSP je dužna da signalizira kontroleru
prekida da je servisiranje završeno (preko kontrolnog porta), a kontroler na osnovu toga
briše postavljeni bit u ISR. Na ovaj način je implementacija U/I komunikacije prekidnom
tehnikom znatno pojednostavljena, jer je cijela logika već imlementirana u integrisanom
kolu.
Metod vektorskog prekida zauzećem magistrale
Kod ovog metoda U/I interfejs treba prije postavljanja zahtjeva (linije INTR) da
stekne pravo kontrole nad magistralom (bus master). Na taj način samo jedan U/I
interfejs može da aktivira ovu liniju. Nakon aktiviranja zahtjeva i njegovog detektovanja
od strane procesora, procesor šalje signal prepoznavanja zahtjeva (INTA), a interfejs
postavlja svoj vektor prekida na linijama za podatke.
U/I komunikacija direktnim pristupom memoriji
Komunikacija između perifernih jedinica i procesora je relativno jednostavan i efikasan
mehanizam, ukoliko su periferijske jedinice spore. U tom slučaju, i za veliki broj
periferijskih jedinica, vrijeme koje procesor potroši za komunikaciju sa periferijama
iznosi svega nekoliko procenata ukupnog procesorskog vremena.
Međutim, transfer velikog broja podataka između brzih periferija (diskova npr.) i
memorije preko procesora mehanizmom prekida za transfer svakog pojedinačnog
podataka, zahtijevao bi znatan procenat procesorskog vremena (vrijeme pripreme i
transfera podataka od strane periferije može biti i kraće od samog trajanja RSP). Prema
tome, alternativni pristup se nameće kao imperativ.
60
Kanal za direktan pristup memoriji (DMA channel - direct memory access channel),
je specijalni interfejs koji omogućava periferiji da izvrši brz transfer podataka ka/iz
memorije, bez učešća CPU (odnosno, učešće CPU-a se svodi na iniciranje transfera).
Tokovi podataka kod programiranog U/I, prekidnog U/I i DMA prenosa su prikazani na
sl. 3.34.
Sl. 3.34 Tokovi podataka kod različitih tehnika prenosa, a) programirani U/I; b)
prekidni U/I; c) DMA U/I
61
Da bi DMA interfejs izvršio prenos podataka ka memoriji, on standardno postavlja
procesoru zahtjev za prekid INTR (kojim indicira spremnost za prijem/predaju podataka.
Podaci se prenose u blokovima). Procesor postavlja parametre prenosa: adresu početka
memorijskog bloka, broj bloka diska, kao i broj bajta koji se prenosi, te izdaje komandu
za prenos koja sadrži i informaciju o smjeru prenosa (sl. 3.35).
Sl. 3.35 Programski model DMA
DMA interfejs treba da dobije pravo upravljanja magistralom u toku transfera
podataka ka/iz memorije (ako bi i procesor i DMA istovremeno slali podatke preko
magistrale, došlo bi do superpozicije i nekorektnog upisa/čitanja). Zahtjev za upravljanje
magistralom DMA saopštava procesoru preko linije BR (bus request), a odobrenje od
procesora dobija kada procesor postavi signal BG (bus grant) (sl. 3.36)
Sl. 3.36 Kontrolni signali za dobijanje prava upravljanja magistralom
Prije predavanja magistrale DMA interfejsu, procesor treba da završi tekuće korište-
nje magistrale (tekući aktivni ciklus magistrale) i da postavi svoje izlaze na magistralu u
neaktivno stanje (stanje visoke impedanse). Ovo procesor može da uradi u više tačaka
ciklusa mašinske instrukcije (npr. iza faze pribavljanja, faze dekodiranja instrukcije,
pribavljanja operanda itd). Blok šema DMA interfejsa i načina povezivanja sa
procesorom i memorijom data je na sl. 3.37
62
Sl. 3.37 Blok šema DMA prenosa
Postoji nekoliko varijanti DMA prenosa sa stanovišta dužine kontrole nad
magistralom:
1. Krađa ciklusa (Cycle stealing). Ukoliko pretpostavimo da disk jedinica može da
realizuje transfer jednog bajta svakih 800ns, a da je ciklus memorije 100ns, slijedi
da ako od 8 memorijskih ciklusa 1 koristi DMA, procesoru ostaje 7/8 (87.5%
propusnog opsega mamorije). Procesor ne troši svo svoje vrijeme na komunika-
ciju sa memorijom; određeni broj mašinskih ciklusa procesor koristi za interne
kalkulacije i manipulaciju podacima u samom procesoru. DMA postaje kontroler
nad sabirnicom DMA kada je u procesu transfera podataka i kada procesor ne
koristi magistralu (DMA 'krade' cikluse kontrole nad magistralom od procesora).
Po ovom metodu se prenosi samo bajt ili riječ po 'ukradenom' ciklusu. Sudari
procesora i DMA kontrolera su rijetki (kada istovremeno žele pristup memoriji)
ali u realnim situacijama može doći i do produženja mašinskih ciklusa za nekoliko
taktova u procesu zauzimanja i oslobađanja magistrale. Navedeni efekti
ograničavaju brzinu prenosa podataka, pa se ona koristi kod sporijih jedinica.
2. Standardni DMA prenos. Kod ove varijante DMA interfejs drži kontrolu nad
sabirnicom za vrijeme prenosa cijelog bloka podataka. Ovim se postižu velike
brzine prenosa, ali procesor mora da čeka dok DMA ne završi transfer bloka.
63
Kompromisno rješenje je da DMA kontroler oslobađa sabirnicu nakon prenosa
određenog broja podblokova, kako bi procesoru omogućio da reaguje na izuzetne
događaje (burst – paketni DMA).
3. Po trećoj varijanti DMA kontroler koristi magistralu u mašinskim ciklusima u
kojima je ne koristi CPU. Na taj način se maksimizira iskorištenje propusnog
opsega memorije, i to bez blokade rada CPU.
Napomenimo da se za potrebe specijalizovanih algoritama pri izvođenju U/I operacija
(npr. često se javlja potreba da se prije smještanja u memoriju podaci prethodno
transformišu) realizuju inteligentni U/I procesori sa svojim instrukcionim skupom i
memorijom, koji minimizuju vrijeme CPU u U/I transakcijama i svode ga na
supervizorsku ulogu.
64
4. Napredne tehnike organizacije CPU
4.1 Projektni prostor
Različite procesorske arhitekture se mogu predstaviti u projektnom prostoru sa taktnom
frekvencijom kao apscisnom koordinatom i CPI (brojem ciklusa po instrukciji), kako je to
predstavljeno na sl. 4.1.
Sl. 4.1 Projektni prostor procesora
Kako se implementacione tehnologije brzo usavršavaju, frekvencija radnog takta procesora se
brzo pomjera od manjih ka većim bzinama, odnosno kompletan dijagram sa sl. 4.1 se pomjera ka
donjem desnom uglu. Drugi trend je da proizvođači procesora nastoje da smanje vrijednost CPI
koristeći kako hardverske tako i softverske pristupe.
Konvencionalni procesori spadaju u familiju poznatu CISC (complex instruction set
computers) procesora. Brzina takta ovih CISC procesora do nekoliko desetina MHz. sa opsegom
65
CPI od 1 – 20 za mikroprogramske upravljačke jedinice. Zbog toga su CISC procesori gornjem
lijevom uglu projektnog prostora.
RISC (reduced instruction set computers) procesori imaju veću frekvenciju radnog takta od
CISC procesora. S obzirom da se najčešće koristi hardverski implementirana upravljačka
jedinica, CPI je kod ovih mašina reduciran na 1-2.
Specijalna klasa RISC procesora su superskalarni procesori, kod koji se više instrukcija
mogu izvoditi istovremeno za vrijeme svakog ciklusa, pa je kod ovih procesora CPI ispod
korespondentnih vrijednosti za RISC procesore.
Procesori sa velikom dužinom riječi (VLWI – very long instruction word) koriste više
funkcionalnih jedinica i od superskalarnih procesora. Time se još više smanjuje broj CPI. Zbog
velike dužine riječi (256-1024 bita), upravljačka jedinica ovih procesora je mikroprogramskog
tipa, te je (zbog mikroprogramskog ROM-a) brzina radnog takta manja. Neke instrukcije ovih
procesora zahtijevaju i veći broj mikroprogramskih ciklusa.
Superprotočni procesori koriste višefazne taktne signale sa znatno višom radnom
frekvencijom i relativno visokim CPI faktorom, izuzev ako se ne koriste i višestruke funkcionalne
jedinice što je primijenjeno u vektorskim procesorima. Ovi procesori pored skalarnih
funkcionalnih jedinica imaju i funkcionalne jedinice za vektorske operacije.
4.2 Protočna obrada instrukcija
Izvođenje tipične instrukcije može se razložiti na manje ili veće korake (faze) kao npr: faza
pribavljanja i faza izvršenja; ili faze pribavljanja instrukcije, dekodiranja, izvršenja i upisa
rezultata. Ove faze u izvođenju instrukcije se najčešće realizuju u instrukcionom protočnom
sistemu (instruction pipeline), kako je to predstavljeno na sl. 4.2.
66
Sl. 4.2 Protočno izvršenje sukcesivnih instrukcija u osnovnom skalarnom procesoru ( a) ) i podprotočna obrada ( b) i c) )
Protočni sistem, kako je to opisano u dijelu 2.3, prihvata sukcesivne instrukcije na ulazu i
izvršava ih u stepenima protočnog sistema, sa preklapanjem izvršenja instrukcija u sukcesivnim
stepenima. U tekstu koji slijedi, date su definicije nekih osnovnih pojmova vezanih za protočnu
obradu instrukcija:
( 1 ) Ciklus protočnog sistema – definiše se intuitivno kao period potreban za kompletiranje
operacija u svakom stepenu (podrazumijeva se da svi stepeni zahtijevaju isto vrijeme
za izvršenje obrade).
( 2 ) Kašnjenje lansiranja instrukcija za izvršenje – vrijeme (u ciklusima) između iniciranja
izvršenja susjednih instrukcija.
67
( 3 ) Brzina lansiranja instrukcija za izvršenje – broj instrukcija lansiranih za izvršenje po
ciklusu, ovaj parametar je takođe poznat kao stepen superskalarnog procesora.
( 4 ) Kašnjenje (vrijeme) izvršavanja prostih operacija – Pod prostim operacijama se
podrazumijevaju operacije cjelobrojnog sabiranja, punjenja/smještanja podataka,
grananja itd. Ovo vrijeme se iskazuje takođe u ciklusima.
( 5 ) Konflikti u pristupu resursima – Ovo se odnosi na situaciju kada dve ili više
instrukcija zahtijevaju korištenje iste funkcionalne jedinice istovremeno.
Osnovni skalarni procesor se definiše kao mašina kod koje se iniciranje instrukcija za
izvršenje obavlja u svakom ciklusu, odnosno kod koje je kašnjenje (vrijeme) izvršenja prostih
operacija jedan ciklus. Protočni sistem se može maksimalno iskoristiti ako sukcesivne instrukcije
kontinualno ulaze u protočni sistem brzinom od jedne instrukcije po ciklusu (Sl. 4.2a). Ako se
instrukcije mogu lansirati svaki drugi ciklus, onda je to slučaj podprotočne obrade
(underpipelining – sl. 4.2b). Drugi slučaj podprotočne obrade je prikazan na sl.4.2c, gdje se faze
obrade grupišu u veće korake: npr. faze pribavljanja i dekodiranja se realizuju u jednom
protočnom stepenu, a faze izvršenja i upisa rezultata u drugom protočnom stepenu. Najbolje
iskorištenje se postiže u slučaju 4.2a ( CPI = 1 ), dok je u slučaju 4.2b CPI = 2 ( za slučaj 4.2c je
ciklus protočnog sistema dva puta veći od osnovnog ciklusa – radnog takta procesora).
S obzirom da se performanse procesora mogu reprezentovati brzinom izvršenja instrukcija
iskazanom u izvršenim milionima instrukcija u sekundi (MIPS rate)
MIPS rate = 10
6×CPI
f . (4.1)
Vidi se da su performanse procesora sa obradom kao na Sl. 4.2b i Sl. 4.2c duplo niže u
odnosu na performanse osnovnog skalarnog procesora.
Na Sl.4.3 je data arhitektura osnovnog skalarnog računarskog sistema, neznatno
modifikovana u odnosu na šeme date u poglavlju 3. CPU može da ima višestruke (skalarne i
vektorske) funkcionalne jedinice (ALU, akceleratore operacija u pokretnom zarezu itd.).
Specijalne funkcionalne jedinice mogu biti ugrađene u CPU (4.3a) ili pridodate kao eksterne
jedinice (koprocesori – Sl. 4.3b). Koprocesori mogu biti floating-point akceleratori koji izvode
operacije nad skalarnim (flating-point) operandima, vektorski procesori (čiji su operandi vektori),
digitalni signalni procesori (DSP) ili Lisp procesori, koji vrše simbolička računanja u AI
68
aplikacijama. Koprocesori ne mogu raditi samostalno, i moraju biti kompatibilni sa procesorom
domaćinom (host processor). Ponekad se ovi procesori nazivaju pridodati (attached) ili sluge
(slave) ili pozadinski (back-end), ali su oni po procesnoj moći ponekad znatno moćniji od
računara domaćina (npr. moćni Cray Y-MP je pozadinski procesor malog miniračunara-
domaćina).
Sl. 4.3 Model osnovnog skalarnog računara
69
4.3 Arhitekture bazirane na karakteristikama instrukcionog skupa
U početnoj fazi razvoja računarske tehnike, računari su sadržavali relativno jednostavan
skupom instrukcija. Osnovni razlog je bila visoka cijena hardvera. Nakon toga je došlo do
dramatičnog pada cijene hardvera po gejtu, i rasta cijene softvera. Softverska tehnologija se
usavršavala što je rezultovalo razvojem strukturnih i objektno orijentisanih programskih jezika i
koncepata, što je povećalo semantički raskorak između hardvera i sovtvera.
Rezultat navedenih procesa je bilo nastojanje da se u hardver implementiraju sve
kompleksnije funkcije, koje je dovelo do toga da instrukcioni skup računara postane velik i
kompleksan (računari sa kompleksnim instrukcionim skupom – Complex Instruction Set
Computers/CISC). Ovaj trend je bio pospješen jednostavnošću i fleksibilnošću
mikroprogramskog koncepta.
Tipičan CISC instrukcioni skup sadrži približno 120 – 350 instrukcija sa korištenjem
različitih instrukcionih formata i koristi relativno mali broj registara opšte namjene (general
purpose registers - GPRs). U toku izvršenja instrukcija često se izvršavaju operacije nad
memorijskim/ registarskim operandima, sa nizom memorijskih referenci. Mnoge instrukcije
jezika visokog nivoa (high level languages – HLL) su često direktno implementirane u hardver.
Ovo pojednostavljuje implementaciju programskih prevodioca, poboljšava efikasnost realizacije
određenih funkcija i dopušta proširenja sa skalarnih na vektorske i simboličke instrukcije.
Redukovani instrukcioni skup. Nakon mnogih istraživanja koja su se bavila karakteristikama
izvođenja programa, došlo se do rezultata koji su pokazivali da se svega 25% instrukcija iz
kompleksnog instrukcionog skupa često koristi (95% vremena). Ovaj podatak se može
interpretirati i tako da se 75% hardverski implementiranih instrukcija ne izvodi gotovo nikako.
Zbog toga se prirodno nametalo pitanje: Zašto koristiti dragocijeni prostor na procesorskom čipu
za implementaciju rijetko korištenih funkcija? Rijetko korištene instrukcije se mogu
implementirati softverski – korištenjem osnovnih, često korištenih procesorskih instrukcija. Iako
je softverska implementacija ovih funkcija znatno sporija od hardverske, ukupan efekat je
pozitivan, jer se oslobođeni prostor na procesorskom čipu može iskoristiti za realizaciju znatno
moćnijeg hardvera (implementacija keš memorije na čipu, ili jedinice za operacije u pokretnom
zarezu).
Instrukcioni skup RISC procesora sadrže tipično manje od 100 instrukcija sa fiksnim (32-
bitnim) formatom instrukcija. Instrukcije koriste svega nekoliko načina adresiranja, većina
70
instrukcija koriste operande u registrima. Pristup memoriji se vrši samo load/store instrukcijama.
Broj registara ovih procesora je veliki kako bi se omogućila brza promjena konteksta između
procesa, te brzi pozivi i gniježdenje procedura. Većina optimizovanih instrukcija se izvodi u
jednom mašinskom ciklusu. S obzirom na optimizaciju hardvera, cijeli procesor se standardno
realizuje na jednom VLSI čipu. Kao rezultat svega je rad CPU-a na višim frekvencijama radnog
takta, smanjenje vrijednosti CPI parametra i prema tome više performanse u MIPS, prema (4.1).
Na Sl. 4.4 su na globalnom nivou predstavljene distinkcije u arhitekturi između modernih
CISC i tradicionalnih RISC arhitektura. Navedene distinkcije se mogu smanjivati u budućnosti,
zbog primjene RISC koncepata u CISC arhitekturama i obrnuto.
Sl. 4.4 Arhitekturna razlika tipičnih RISC i CISC arhitektura.
Komparativne karakteristike CISC i RISC arhitektura predstavljene su Tabelom 4.1.
Arhitekturna karakteristika CISC RISC
Format i broj instrukcija Veliki instrukcioni skup, varijabilni format instrukcija
Mali broj instrukcija, fiksni format. Većina instrukcija su registarske instrukcije.
Načini adresiranja 12 – 24 3 - 5
Opšti registri i keš 8 – 24 GPR, jedan keš i za instrukcije i za podatke, novije CISC mašine takođe razdvajaju instrukcioni i keš za podatke
Veliki broj (32 – 192) GPRs, posebni keš za instrukcije/ podatke
71
CPI CPI 2-15 Srednji CPI < 1.5
Upravljačka jedinica Najčešće mikroprogramska memorija, ali savremeni CISC i sa hardverskom upravljač-kom jedinicom
Uglavnom hardverska realizacija upravljačke jedinice
Skalarni CISC procesori
CISC skalarni procesori procesiraju skalarne podatke. Najprostiji skalarni procesori
izvršavaju cjelobrojne instrukcije (operandi su sa ‘fiksnom (binarnom) tačkom’). Moćniji skalarni
procesori rade i sa cjelobrojnim i sa operacijama u pokretnom zarezu (sl. 4.3). Implementacija
može biti ili na jednom čipu, ili na više čipova na jednoj procesorskoj ploči.
Procesiranje je najčešće podprotočno; osnovni uzroci su zavisnost između podataka, konflikti
kod korišćenja resursa i grananja. Performanse ispod optimalnih proizilaze i iz razloga kada je
radni takt duži od vremena potrebnog za izvršenje osnovnih operacija.
Sl. 4.5 Arhitektura procesora MC 68040.
72
Primjer CISC procesora je Motorola MC68040 mikroprocesor. Blok šema arhitekture ovog
procesora predstavljena je na sl. 4.5. Primjeri drugih CISC arhitektura su VAX 8800, Intel x86,
itd.
RISC skalarni procesori
Generički RISC skalarni procesori se nazivaju skalarni RISC jer su projektovani za izvođenje
jedne instrukciju po ciklusu (kao prema sl. 4.2a). Kao što je prethodno pomenuto, instrukcije koje
se rijetko izvršavaju u RISC procesorima se implementiraju softverski. Zbog toga su zahtjevi koji
se postavljaju pred programski prevodilac RISC mašina viši u odnosu na zahtjeve za prevodioce
CISC procesora. Paralelizam na nivou instrukcija se eksploatiše i kod RISC i kod CISC
procesora.
I RISC ali i CISC procesori za visoke performanse moraju da rade na što višim radnim
frekvencijama, sa što manjim CPI faktorom uz efikasno generisnje koda programskim
prevodiocem. Pojednostavljenje strukture instrukcija u RISC arhitekturama omogućava
približavanje idealnim performansama osnovnog skalarnog procesora (sl. 4.2a).
Primjeri RISC baziranih procesora su Sun SPARC, Intel i860, Motorola M88100, AMD
29000 itd. SPARC ima atribut proširljivog (scalable) procesora, jer se broj registara (i
registarskih prozora) mijenja u različitim SPARC implementacijama.
Kod MC 88100 se proširljivost odnosi na broj specijalnih funkcionalnih jedinica (SFU –
special functional units) koje su implementirane u različitim 88100 varijantama. U tekstu koji
slijedi dat je sažet opis SPARC procesora firme Cypress semiconductor.
73
Sl. 4.6 a) Cypress CY7C601 SPARC processor
b) Cypress CY7C602 floating – point jedinica.
SPARC sadrži 69 instrukcija (14 su instrukcije za rad u pokretnom zarezu). U cilju
optimizacije poziva procedura, registarski skup je podijeljen na registarske prozore (window
register). Ideja je da se parametri pri pozivu procedura predaju putem registara i time poboljšaju
performanse. Kod standardnih CISC prevodilaca, parametri se predaju preko steka, što zahtijeva
74
memorijske pristupe za upis parametara na stek (iz pozivne procedure) i memorijske pristupe iz
pozvane procedure za čitanje (ulaznih parametara).
Sl. 4.7 Koncept preklapajućih registarskih prozora u SPARC arhitekturi.
Po konceptu registarskih prozora (uveden Berkley RISC arhitekturom), svakoj proceduri se
pridjeljuje 32 cjelobrojna registra (svaki dužine 32 bita). Osam od ovih registara su globalni
registri (koje dijele sve procedure), dok su preostala 24 registri prozora procedure. Prozor je
podijeljen na tri sekcije iste veličine (po 8 registara u svakoj sekciji): Sekcija ulaznih parametara
75
(Ins), lokalni registri procedure (Locals) i registarska sekcija za predaju parametara slijedećoj
proceduri (Outs). Registarska sekcija ulaznih parametara pozvane procedure(Insi) se preklapa sa
registarskom sekcijom izlaznih parametara pozivne procedure (Outs i-1) (sl. 4.7).
Ukupno ima 64 preklapajuća i 64 lokalna registara, uz 8 globalnih. Prozori čine cirkularni
stek. Prozor procedure koja se izvodi se naziva aktivni prozor, i na njega pokazuje pokazivač
aktivnog prozora (CWP). WIM (window interrupt mask) se koristi za indikaciju da je prozor
zauzet, i da je njegova dodjela novoj proceduri nedozvoljena. Ako se desi takav slučaj da se
poziva nova procedura a svi prozori su zauzeti (CWP i WIM se izjednače), onda se generiše
prekid, u toku kojeg se smještaju Ins i Locals registri prozora u memoriju koristeći servisnu rutinu
na koju pokazuje trap base register. WIM se poveća i pokazuje na slijedeći prozor i nastavi
proces pozivanja slijedeće procedure. Opisanom tehnikom se znatno smanjuje vrijeme izmjene
parametara u procesu pozivanja procedura.
Drugi primjer RISC procesora je Intel i860 procesor (Sl. 4.8)
Sl. 4.8 Intel i860 RISC mikroprocesor
76
Procesor ima 64-bitne i interne i eksterne linije podataka, dok su adresne linije 32-bitne. ALU
za cjelobrojne operacije je takođe 32-bitna. Postoje posebne keš memorije za podatke (8kb) i
instrukcije (4kb). Komunikacija sa memorijom se realizuje preko jedinice za upravljanje
memorijom MMU (memory management unit). Postoje dvije jedinice za obradu u pokretnom
zarezu: množač i sabirač. Specijalne dualne instrukcije add-and multiply i substract-and multiply
koriste istovremeno i jedinicu za množenje i jedinicu za sabiranje. Takođe, istovremeno se mogu
izvoditi i cjelobrojene operacije i opercije u tekućem zarezu, pa zbog toga i8060 ima
karakteristike i superscalarnog procesora. Grafička jedinica podržava 3-dimenzionalne grafičke
operacije sa 8, 16 i 32 bitnim pikselima. Ovaj RISC procesor ima 82 instrukcije, od čega 24 za
operacije u pokretnom zarezu, 10 grafičkih instrukcija i 6 pseudoasemblerskih instrukcija.
Debata između projektanata RISC i CISC procesora traje duže vrijeme. Na bazi jednačine
(4.1) može se zaključiti da je RISC superiorniji u odnosu na CISC, ukoliko se dužina programa ne
povećava dramatično. Neka istraživanja pokazuju da se broj instrukcija, pri konvertovanju CISC
u RISC programe uvećava za 40%. Ipak, ovo povećanje u broju instrukcija (i veličini memorije
koju zahtijeva odgovarajući program) je znatno manji nego što je povećanje radnog takta
(smanjenje ciklusa) i redukcija CPI.
Nedostatci RISC arhitekture su slijedeći:
• s obzirom na to da se jedna CISC instrukcija implementira nizom RISC instrukcija,
povećava se veličina potrebne memorije kao i broj memorijskih pristupa potrebnih za
pribavljanje instrukcija,
• iako veći registarski skup može da drži više privremenih podataka, sistem za dekodiranje
registara je komplikovaniji, što produžava vrijeme pristupa registrima,
• kako bi se prethodni problemi minimizovali, kompajler treba da generiše optimalan kod,
pa se visoki zahtjevi postavljaju pred programske prevodioce,
• upravljačka jedinica implementirana u hardver je manje fleksibilna i kompleksnija za
projektovanje i realizaciju.
Ipak, razlike između RISC i CISC arhitektura se sve više smanjuju. Napredak tehnologije
omogućava primjenu dobrih rješenja i jednog i drugog koncepta kako u RISC tako i u CISC
arhitekturama.
77
4.4 Hazardi kod protočne obrade
Hazard je okolnost koja sprečava da funkcionalna jedinica izvršava instrukciju
maksimalnom brzinom. Hazardi se mogu javiti zbog:
• zavisnosti po podacima između instrukcija
• konflikata u korištenju zajedničkih resursa pri istovremenom izvođenju različitih
instrukcija (strukturni hazardi)
• promjene instrukcionog toka (uzrokovan instrukcijama grananja i drugim instrukcijama
koje mijenjaju kontrolni tok - upravljački hazardi).
Hazardi uzrokuju da se rad cijelog protočnog sistema ili njegovog dijela privremeno zaustavi,
što uzrokuje degradaciju radnih performansi. Obično, kada se zaustavi izvršenje neke instrukcije
u protočnom stepenu, onda se zaustavlja izvršenje i svih drugih instrukcija u protočnom sistemu
koje slijede iza zaustavljene instrukcije dok se produžava izvršenje instrukcija koje su u
protočnom sistemu ispred zaustavljene instrukcije. Ovo znači da se u slučaju pojave zastoja
(hazarda) u nekom protočnom stepenu zaustavlja i dalje pribavljanje instrukcija.
U cilju smanjenja broja hazarda koriste se različiti postupci koji se mogu podijeliti na statičke
i dinamičke. Statičke (softverske) tehnike su postupci koji se primijenjuju prije samog izvođenja,
odnosno postupci u fazi prevođenja programa. Ove tehnike se zasnivaju na identifikaciji
karakteristika programa (prije svega zavisnosti po podacima između instrukcija) i potencijalnih
hazarda koji se nastoje eliminisati preuređenjem programskog kôda. Dinamičke tehnike se
baziraju na preuređenju redoslijeda izvođenja instrukcija u toku samog izvršenja, korišćenjem
dodatnih hardverskih sklopova na samoj CPU.
Softverske tehnike usložnjavaju projektovanje programskih prevodilaca, a programiranje u
asemblerskom jeziku postaje ekstremno teško. Osim toga teško je predvidjeti sve elemente run-
time ponašanja programa u fazi prevođenja. Dinamički pristup ima na raspolaganju stvarnu sliku
ponašanja programa u toku izvođenja, ali reakcija mora biti ekstremno brza i pravovremena.
Nedostaci ovog pristupa su svakako u usložnjavanju hardvera čime se zahtijeva dodatni prostor
na procesorskom čipu za implementaciju ovih funkcija, a može da rezultuje i ograničenjem u
brzini radnog takta.