You are on page 1of 76

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

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, aplikacije 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}-

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 procesirawa 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.

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 sinhronizacija 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 radaprocesirawa 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

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.

Iako

su

mogu}nost

pove}awa

performansi

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 prevazila`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.

Su{tinski ciq, da se ostvari ubrzawe izvo|ewa programa ili skupa programa, mo`e se ostvariti paralelnim procesirawem na nivou programa, zadatakaprocedura, 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{estrukih 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 paralelnoj 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

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.

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/obradu 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 SIMD MISD MIMD ma{ine sa jednim tokom instrukcija i jednim tokom podataka, ma{ine sa jednim tokom instrukcija i vi{estrukim tokom podataka, ma{ine sa vi{estrukim tokom instrukcija i jednim tokom podataka, 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 Sistemski softver 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 pridjeqivawem razli~itih programa razli~itim procesorima (ili ~ak ra~unarima povezanim 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 identifikovati (i eksploatisati) zna~ajan iznos paralelizma. Na ovom nivou (procesirawa instrukcija), najzna~ajnije tehnike za eksploataciju paralelizma su proto~na obrada 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 specijalizovanom hardverskom sklopu (proto~nom stepenu). Niz ovih hardverskih segmenata ~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 podataka (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 preklapaju u razli~itim proto~nim stepenima (Sl. 2.2). Proto~ni stepeni mogu implementirati jednu ili vi{e funkcija (multifunkcionalni proto~ni stepeni).

Ulaz

S1

S2
Sl. 2.2 Koncept proto~ne obrade.

Sn

Izlaz

Ako je ka{wewe signala kroz prihvatni registar Tl, a propagacija kroz kombinacionu logiku proto~nih stepeni Ti, onda je period radnog takta proto~nog sistema T = max {Ti} +Tl =
i

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.

Jednoprocesorski. sistemi

Paralelni ra~. sistemi

Upravqani kontrolnim tokom

Upravqani podacima

Upravqani zahtjevima

SIMD

MISD

MIMD

Vektorski

Paralelni

Visoko paralelni

Labavo spregnuti

Sistoli~ni
Multira~unari Multiprocesori

Asocijativni

Lokalne ra~un. mre`e

Distribuirani sistemi

Sl. 2.3 Klasifikacija ra~unarskih arhitektura.

15

3.

Klasina, Von-Noemanova arhitektura raunara

3.1 Koncept Von-Noemanovog raunara


Von-Noemanova arhitektura raunara je izvanredno strukturirana: na najviem nivou apstrakcije predstavlja se jednostavnim i razumljivim dijagramom (Sl. 3.1).

MEMORIJA

I/O

CPU
Sl. 3.1 Memorija promjenljivog sadraja, sadri ne samo podatke/rezultate raunanja, nego i program (skup instrukcija/akcija) koji se izvodi. Ovaj koncept je omoguio univerzalnost i jednostavnost primjene raunara: novi aplikativni zadatak moe da se izvede na raunaru samo punjenjem drugog programa u memoriju i pokretanjem njegovog izvrenja. Centralna procesna jedinica (CPU) dobavlja instrukcije iz memorije i izvodi ih jednu za drugom. Instrukcije sadre informacije kako o vrsti operacije/akcije, tako i o operandima nad kojima se akcija izvodi. Distinkcija izmeu instrukcija i podataka u memoriji i odreivanje sekvence izvoenja je ostvarena koritenjem programskog brojaa (PC). Nakon zavretka izvoenja neke instrukcije, vrijednost programskog brojaa specifikuje memorijsku adresu slijedee instrukcije koja e se izvesti. Na ovaj nain postoji sekvencijalni tok kontrole (odreen nizom sukcesivnih vrijednosti programskog brojaa) koji upravlja izvrenjem programa. Dakle, u toku izvoenja, 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) raunara. Ovaj jednostavan koncept omoguio je da se kompleksan sistem, kao to je raunar sa svojim procesima, uspjeno analiziraju, te da se sistematski rjeavaju odnosni problemi.

3.2

Princip organizacije SISD raunarskih sistema

Globalni blok dijagram SISD raunara dat je na sl. 3.2. Osnovni funkcionalni elementi su, kako je to naznaeno i u dijelu 3.1, Centralna procesna jedinica (CPU), memorija i ulazno/izlazni (pod)sistem

Izvrna jedinica

Sl. 3.2

. Program koji raunar izvodi, nalazi se u glavnoj memoriji raunara. Program u glavnoj memoriji moe biti trajno upisan (u memoriju sa trajnim sadrajem ROM-EPROM), ili se puni u glavnu memoriju (RAM) sa sekundarne memorije (koja je takoe memorija sa trajnim sadrajem), sistemskim programom. Prva varijanta je karakteristina za specijalizovane raunare za upravljanje procesima koji rade u oteanim eksploatacionim uslovima, dok je druga varijanta karakteristina za raunare ope namjene.

17

Kontrolna jedinica dobavlja instrukcije iz memorije, dekodira ih i generie niz upravljakih signala u pravom trenutku i u korektnoj sekvenci kojima se obezbjeuje izvrenje operacije specifikovane instrukcionim kodom u izvrnoj jedinici procesora (Sl. 3.3). Npr. za izvoenje instrukcije za promjenu znaka (komplementiranje do 2) sadraja registra Rx: (Rx) upravljaka jedinica generie signale kojima se: sadraj registra Rx dovodi na ulaz aritmetiko logike jedinice (ALU), izvodi promjena znaka (komplementiranje do 2) u ALU, rezultat upisuje nazad u registar Rx.

(Rx),

3.3

S obzirom da se mnogi rezultati izvrenja instrukcija koriste u kasnijoj fazi kao operandi (podaci) potrebno ih je memorisati. Registri CPU-a mogu uvati ove meurezultate, ali je broj registara u procesoru mali a instrukcije za svoje izvrenje esto zahtijevaju operande u registrima. Zbog navedenog, pored instrukcija, u glavnoj memoriji se nalaze i podaci sa kojima program operie u toku svoga izvoenja. Za trajno uvanje podataka i programa koristi se jeftinija sekundarna memorija (magnetni/optiki diskovi, magnetne trake). Magnetni diskovi se u odreenim sluajevima mogu koristiti i za privremeno smjetanje dijelova programa/podataka u toku izvoenja, kada kapacitet glavne memorije nije dovoljan. Procesor ne moe direktno dobavljati instrukcije niti podatke iz sekundarne memorije nego se to realizuje preko glavne memorije. Preko U/I sistema raunar komunicira sa spoljnim svijetom. Osnovni zadatak ovog sistema je transformacija informacija iz forme razumljive objektima spoljnjeg svijeta (ljudi, senzori, izvrni organi itd.) u formu razumljivu raunaru i obrnuto.

18

Navedeni osnovni moduli raunara meusobno komuniciraju preko skupa prenosnih puteva (linija) - magistrale. Broj prenosnih linija kojima se istovremeno mogu prenositi informacije odreuje irinu magistrale (u bitima).

3.2.1 Organizacija i struktura centralne procesne jedinice (CPU)


Osnovna funkcija CPJ je da izrava program smjeten u glavnoj memoriji. Osnovni funkcionalni blokovi CPJ su upravljaka jedinica i izvrna jedinica (u literaturi poznata i kao staza podataka data path). Upravljaka jedinica vri pribavljanje instrukcija iz memorije, njihovo dekodiranje i generisanje upravljakih signala za izvrnu jedinicu (pribavljanje podataka i instrukcija iz memorije se moe realizovati i posebnom funkcionalnom jedinicom). Izvrna jedinica izvrava operacije predviene datom instrukcijom. Podaci u okviru CPU cirkuliu jednom ili vie skupina linija internih magistrala. Detaljnija blok ema procesora data je na sl. 3.4.

+1

P C Reset

Sl. 3.4 Blok ema CPJ

19

3. 3

Izvrna jedinica

Izvrna jedinica sadri aritmetiko-logiku (ALU) i druge funkcionalne jedinice za manipulaciju podacima, registre, pomjerae, generator adrese i komunikacione puteve izmeu njih. Kada postoji vie puteva podataka na ulazu/izlazu neke komponente, neophodna su upravljaka kola za selekciju podataka na odgovarajuim putevima (upravljake take). Upravljaka taka je prekida puta podataka koja, na bazi upravljakog
signala, dozvoljava ili blokira prenos podataka na odgovarajuem prenosnom putu. Na sl 3.5 dat je principijelni primjer implementacije upravljakih taaka na ulazu/izlazu jedne funkcionalne jedinice CPU-a.

3.5

3.5

Sl. 3.5 Upravljake take procesora Upravljake take pripadaju upravljakoj jedinici, a sami putevi za prenos podataka izvrnoj jedinici. MDR (memory data register) je interni registar preko kojeg se vri upis podataka u glavnu memoriju, odnosno itanje podataka iz glavne memorije. On slui kao bafer izmeu CPJ i memorije pri prenosu podataka izmeu ovih jedinica. MAR (memory address regeister) je takoe 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 slijedeim koracima: (MDR) Mem[MAR],

20

(Rx)

(MDR).

Kao to je prethodno reeno, ALU i druge funkcionalne jedinice (pomjerai, mnoai, floating-point jedinice, grafike jedinice itd.) vre aritmetiko-logike operacije nad podacimaoperandima predviene instrukcijom. 3.3.1 Registri Registri se u procesoru koriste za prihvat i uvanje rezultata nakon izvrenja operacija u funkcionalnim jedinicama procesora, za prihvat podataka iz memorije, te za transfer podataka/meurezultata iz procesora u memoriju. Sastoje se iz elemenata koji mogu imati dva ili vie stabilnih stanja. Mogu se realizovati na razliite naine: kao flip-flopovi, kola koja uvaju informaciju kao elektrini tovar na gejtu ili kapacitetu odreenog tipa FET-a, kao skup prekidaa (fiksnog ili izmjenljivog stanja) itd. Izmeu bitova registara moe postojati odreena logika, koja moe vriti odreene operacije izmeu susjednih bitova registra (npr. kopiranje sadraja prethodnog/narednog bita u tekui bit registra, ime se ostvaruje pomjeranje sadraja u registru, odbrojavanje na vie, na nie itd.). Skup registara CPJ, ije stanje nakon izvrenja neke instrukcije moe imati uticaja na izvrenje slijedee instrukcije naziva se programski model procesora. Ovo iz razloga to je za programiranje na 'najniem' 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 moe imati uticaj na izvrenje slijedee instrukcije, programski model se mora sauvati u sluaju suspenzije izvrenja programa (zbog prekida npr.), i restaurirati nakon zavretka suspenzije i prije nastavka izvoenja suspendovanog programa. Ostali registri CPJ se mogu svrstati u grupu internih registara. Registri programskog modela Ovi registre se mogu svrstati u slijedee grupe: Programski broja. Neposredno prije poetka pribavljanja i izvrenja instrukcije, ovaj registar sadri memorijsku adresu instrukcije koja treba da se izvri. Registri opte 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 obino postoje ogranienja na generalnost primjene ovih registara.

21

Registri za podatke. Ovi registri mogu prihvatati podatke i njihov sadraj se moe 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 vri odreene operacije nad operandima, ili vri transfer kontrole izvoenja programa na instrukciju ija lokacija u memoriji nije neposredno iza tekue instrukcije (instrukcije grananja). Lokacije operanada i slijedee instrukcije dobijaju se u procesu sraunavanja efektivne adrese (operanada, instrukcije), a ovaj proces zavisi od primijenjenog naina adresiranja u odnosnoj instrukciji. Razumijevanje naina adresiranja i formiranja efektivne adrese je od kljunog znaaja za proces programiranja na asemblerskom nivou. Neki registri se u instrukcijama pri formiranju efektivne adrese koriste inherentno, a neki eksplicitno (mogue je koritenje vie registara za specifikaciju adrese istovremeno). Postoji vie varijanti adresnih registara, prema njihovoj ulozi u formiranju efektivne adrese:

Segmentni registri (Intel 8086, ). Efektivna adresa se formira kombinacijom sadraja odnosnog segmentnog registra koji pokazuje na poetak segmenta (bazna adresa) i ofseta odstojanja od poetka segmenta koji se formira zavisno od adresnog naina. Koritenje ovih registara je podrazumijevajue, ali se moe navesti i eksplicitna upotreba registra kojom se ponitava podrazumijevajua upotreba (segment override) Indeksni registri. Mogu se koristiti kao indeks u neko polje iji je poetak odreen baznom adresom. Obino ovi registri imaju mogunost autoinkrementiranja odnosno auto-dekrementiranja. Bazni registri. Njihova uloga je sutinski 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 smjetaju podaci pri pozivu potprograma ili pri ulasku u proces posluianja prekida. Takoe se stek moe koristiti za privremeno smjetanje podataka koritenjem odgovarajuih instrukcija (PUSH, PULL/POP). U ovim primjenama uloga pokazivaa je podrazumijevajua. Ovaj registar se najee

22

moe i eksplicitno specifikovati (u instrukcijama kojima se inicijalizira ili uva sadraj pokazivaa). Statusni registar. Ovaj registar sadri markere (flags, condition codes), koji se postavlja se obino ju za indikaciju rezultata prethodne operacije. Npr. nakon izvrenja neke aritmetike operacije rezultat moe biti pozitivan, negativan, nula, moe se desiti prenos (carry) ili preljev/premaaj opsega. esto je nakon ovih aritmetikih operacija potrebno testirati rezultat izvrenja i donijeti odluku o daljem pravcu procesiranja na osnovu rezultata testiranja (npr. za sluaj preljeva, potrebno je pozvati neku rutinu za procesiranje greaka). 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 rijeima procesora su: Sign (Znak). Bit koji oznaava znak (pozitivan/negativan) rezultata prethodne operacije. Zero (Nula). Bit koji je postavljen ako je rezultat prethodne operacije 0. Carry (Prenos). Ovaj bit se moe postaviti razliitim instrukcijama, npr. prenosom kod sabiranja iz bita najvie teine (odnosno 'pozajmljivanjem' kod oduzimanja), pomjerakim instrukcijama te eksplicitnim postavljanjem statusnog registra. Overflow (Preljev/premaaj). Ovaj bit se postavlja kada se rezultat operacije (npr. sabiranja) ne moe predstaviti brojem raspoloivih bita registra. Interrupt enable (Omoguenje prekida). Ovim bitom se dozvoljava/ onemoguuje prekid izvrenja programa eksternim zahtjevom. U sluaju da je prekid dozvoljen i da postoji zahtjev za prekid, procesor nakon kompletiranja tekue instrukcije uva tekui kontekst/stanje izvrenja (ili neophodni dio tog konteksta) i zapoinje izvrenje rutine za servisiranje prekida (interrupt service routine). Ukoliko postoji vie ulaznih linija u procesor razliitih prioriteta kojima se moe zahtijevati prekid tekueg izvoenja i servisiranje zahtjeva, u tom sluaju u statusnom registru postoji vie bita kojima se odreuje minimalni prioritet zahtjeva koji e biti posluen.

23

Biti privilegovanog reima. Ovim bitima se moe specifikovati reim izvoenja instrukcija: tipino korisniki reim (koji je efektivan kada se izvodi korisniki program) ne moe izvoditi sve instrukcije iz repertoara procesora. U supervizorskom reimu procesor izvodi sve instrukcije iz svog repertoara. Mogue je postojanje i reima rada sa privilegijama izmeu dva navedena sluaja.
Interni registri Interni regstri su registri koje procesor interno koristi za privremeno smjetanje i baferovanje podataka u procesu pribavljanja i izvrenja instrukcije. Stanje ovih registara nakon izvrenja neke instrukcije ne utie na izvrenje slijedee instrukcije. Npr. MAR (memory address register) se koristi postavljanje memorijske adrese sa koje se vri oitavanje podatka/instrukcije, odnosno na koju se vri upis podatka. Nakon to se adresa (generisana generatorom adresa) postavi u MAR, transfer podatka izmeu procesora i memorije se vri aktiviranjem upravljakih signala za itanje/ upis memorije (Mem_Read, Mem_Write). Ukoliko se vri upis u memoriju, prethodno se podatak mora postaviti u MDR (memory data register). Nakon itanja iz memorije, podatak se takoe prvo smjeta u MDR, a zatim se prosljeuje u registar ili ulaz ALU. Npr. ako se izvodi instrukcija ADD Rx, displ[Bx], koja vri sabiranje sadraja registra Rx i memorijske lokacije odreene baznom adresom (sadrane u registru Bx) i odstojanjem displ od poetka te adrese, onda: generator adresa prvo sraunava efektivnu adresu EfADR = (Bx) + displ, (MAR) EfADR, (DR) Mem[MAR], (Rx) (Rx) + (MDR). (ALU u jednom ciklusu sraunava zbir operanada koji su dovedeni na ulaz Rx i MDR, te vraa rezultat u odredini registar (Rx).

3.3.2 Interne magistrale Internim magistralama se prenose podaci, adrese i upravljaki signali u okviru centralne procesne jedinice. U cilju postizanja veih brzina, broj internih (on chip) magistrala je po pravilu vei od spoljnih. U slijedeem primjeru su date varijante organizacije centralne procesorske jedinice sa razliitim brojem internih magistrala.

24

25

3.3 3.4 3.5 3.6 3.7 3.8


Izvrna jedinica

Princip organizacije Struktura CPU Bazi~na organizacija memorije Izvo|enje programa Povezivanje i komunikacija sa periferijskim podsistemom Magistrale

+1

25

3. 3

Upravljaka jedinica

Upravljaka jedinica generie signale za upravljanje svim aktivnostima u okviru CPJ, kontrolom upravljake jedinice se vri dobavljanje instrukcije iz memorije, njeno dekodovanje i identifikacija operacije koju je potrebno izvriti, identifikacija i prenos operanada od izvorita do funkcionalnih jedinica gdje se zahtijevana operacija izvodi, te vraanje rezultata na odredite. Ovaj proces se pod kontrolom upravljake jedinice ponavlja pri izvoenju svake slijedee instrukcije. Dakle, upravljaka jedinica djeluje kao 'komandni centar' iz kojeg se upravlja radom ostalih jedinica sistema, a u svrhu izvrenja niza mainskih instrukcija programa ime se realizuje eljena funkcija - algoritam. Da bi upravljaka jedinica ostvarila ove zadatke, ona mora da:

obezbijedi korektan redoslijed izvrenja instrukcija (sekvenciranje instrukcija), generisanjem potrebnih signala obezbijedi izvrenje selektovane instrukcije.

Sekvenciranje instrukcija Kao to smo prethodno naveli, procesor izvodi niz instrukcija (elementarnih akcija sa stanovita asemblerskog programiranja) iz skupa mainskih instrukcija procesora. Skup mainskih instrukcija moe biti razliit (minimalni skup kojim se moe 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 sadraj za jedan uz grananje ako je rezultat 0).

Podrazumijeva se da se iza prve instrukcija (ADD ONE) u sekvencijalnom programu moe izvesti samo jedna (slijedea sekvencijalna instrukcija), tj. da ona ima samo jednog nasljednika, dok se nakon izvrenja druge instrukcije (DECREMENT AND JUMP IF ZERO) izvodi jedna od dvije mogue 'slijedee' instrukcije, zavisno od rezultata izvrenja. Druga instrukcija spada u grupu instrukcija grananja. U praksi je broj instrukcija prvog tipa znatno vei od drugog (priblino je 20% instrukcija grananja). Logika za odreivanje lokacije slijedee instrukcije, nakon izvoenja instrukcije I1 prvog tipa, je jednostavna: ako PC pokazuje na lokaciju instrukcije I1, onda:

26

na osnovu operacionog koda i naina adresiranja instrukcije I1, moe se utvrditi broj bajta w instrukcije I1, ako je slijedea instrukcija koja treba da se izvede smjetena neposredno iza I1, onda se njena adresa moe odrediti novom vrijednou PC-a: PC PC+ w.

Kod instrukcije grananja, ukoliko je rezultat izvrenja takav da je potrebno izvriti instrukciju koja se ne nalazi iza same instrukcije nego na mjestu MX, onda sama instrukcija grananja sadri informacije (nain adresiranja, registri koji se koriste za specifikaciju adrese, ofseti i slino) na osnovu kojih se sraunava vrijednost MX (efektivna adresa) tako da je proces sraunavanja adrese slijedee instrukcije slijedei:

na osnovu operacionog koda i naina adresiranja instrukcije I1, utvruje se broj bajta w instrukcije, ukoliko je uslov testiranja istinit, onda se na osnovu adresnog naina sraunava 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 raunarskim sistemima moe realizovati instrukcijama za poziv potprograma (instrukcije tipa CALL, JSR ili slino), ili dogaajem prekida. Tipino, u ovim sluajevima, prenos upravljanja je privremen, i vraa se na taku gdje se prekid desio nakon zavretka potprograma ili obrade prekida. Izvoenje instrukcija Izvoenje instrukcija se realizuje tako to upravljaka jedinica generie niz upravljakih signala u pravo vrijeme i u korektnoj sekvenci, koji upravljaju radom izvrne jedinice procesora. Ovi signali su:

interni upravljaki signali (koji upravljaju radom sklopova u okviru CPU-a), spoljni upravljaki signali (signali tipa MR, MW, IOR, IOW, statusni signali procesora), spoljni ulazni upravljaki 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).

Tipovi upravljakih jedinica

Dve su varijante realizacije upravljake jedinice:

direktno upravljanje. Logikom mreom se generiu kontrolni signali u predefinisanom redoslijedu za svaku mainsku instrukciju (hardwired/konvencionalni pristup),

mikroprogramsko upravljanje (Wilkis 1953). Kontrolni signali se generiu izvrenjem mikroinstrukcija zapisanih u internoj mikroprogramskoj memoriji procesora. Izvoenje svake mainske 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 greaka u projektovanju. Mikroprogramsko upravljanje takoe daje veu fleksibilnost u smislu mikroprogramske implementacije specijalnih rutina (korisnikih, dijagnostikih i dr.), mogunost emulacije procesora starijih generacija ili drugih procesora itd.

28

Upravljaka jedinica sa direktnim upravljanjem.


Varijante ovog tipa upravljakih jedinica su upravljake jedinice zasnovane na:

tabeli stanja, elementima za kanjenje brojakoj sekvenci.

Prilikom izvoenja instrukcije procesor prolazi kroz niz internih stanja. Na osnovu tekueg stanja i skupa ulaznih signala, generiu se izlazni signali i procesor prelazi u novo stanje. Dio generisanih izlaza se koristi kao ulazni signali sljedeeg stanja. Logika rada, moe 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 Aul. 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 upravljake jedinice Problem sa realizacijom upravljake jedinice upravljane na bazi tabele stanja je u veliini tabele, zbog velikog broja moguih stanja i velikog broja stanja ulaznih signala. Upravljaka jedinica zasnovana na elementima za kanjenje Kod ovog koncepta upravljakih jedinica, polazi se od dijagrama toka rada upravljake 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 tekue stanje. Prelaz u novo stanje se moe predstaviti podskupom osnovnih koncepata dijagrama toka, pri emu se svaki od ovih koncepata implementira odgovarajuim upravljakim kolom (Sl.3.8) Nedostatak ove metode je u velikom broju flip-flopova koji se koriste za reprezentaciju stanja sistema, odnosno elemenata za kanjenje. Slian koncept realizacije je koncept zasnovan na brojakoj sekvenci.

Sl. 3.8 Realizacija koncepata dijagrama toka upravljakim kolima Metoda brojake sekvence Upravljaka jedinica ovog tipa pretpostavlja izvrenje mainske instrukcije u k koraka. U i-tom koraku aktivira se neki skup upravljakih linija koritenjem odnosnog faznog impulsa i. Fazni impulsi i (i = 1, , k) generiu se kolom 'broja sekvenci'. Sukcesivni impulsi na izlazu brojaa sekvenci su vremenski pomjereni za vrijeme trajanja impulsa

30

(Sl. 3.9). Sprega brojaa sekvenci i logikog 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 brojaa sekvenci i logikog bloka

31

Primjer generisanja upravljakih signala pri izvoenju ADD instrukcije hipotetikog procesora metodom brojake sekvence, dat je u tekstu koji slijedi. Dio staza podataka hipotetikog procesora prikazan je na sl. 3.11 (1.2MP). Kontrolne take su predstavljene kruiima. Sadraj registra iz registarskog skupa, specifikovanog A-adresom ili Badresom se prosljeuje 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 moe 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 oitavanje/upis sadraja registra kontrolni signal 4 i za specifikaciju ALU operacije signali 5 8.

Sl. 3.11 Staze podataka hipotetikog procesora Pretpostavimo da ADD instrukcija hipotetikog 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 moe definisati kao to slijedi: Dodaj sadraj registra specifikovanog A-adresom sadraju registra specifikovanog Badresom, i smjesti rezultat u registar odreen Badresom. Pretpostavimo da je instrukcija ve raspoloiva 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 upravljakih signala za implementaciju ADD instrukcije

33

ADD operacija se implementira slijedeom sekvencom dogaaja: 1 a. Omogui A-adresu: b. Omogui B-adresu: Ovim se postavlja prvi operand na ulaz ALU Ovim se postavlja drugi operand na ulaz ALU

c. Postavi ALU kontrolu: Ovim se specifikuje operacija za izvrenje u ALU 2 a. Omogui A-adresu: b. Omogui B-adresu: Zadri A - vrijednost na ulazu ALU-a Zadri B - vrijednost na ulazu ALU-a Proslijeivanje rezultata na D-magistralu

c. Omogui D-prihvatnik (le):

d. Postavi ALU kontrolu: Zadri ALU OPCODE 3 a. Onemogui A-adresu: (posto vie nije potrebna) b. Omogui B-adresu: d. Omogui upis: Za upis sadraja D magistrale u B registar Omoguava upis D magistrale u B registar Kraj operacije c. Onemogui D-prihvatnik (le): (vie nije potrebna) 4 Onemoguenje svih signala:

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 kanjenje je konceptualno ista kao i metoda zasnovana na brojakoj sekvenci. Konverzija rjeenja na bazi prve metode u rjeenje na bazi brojake sekvence je predstavljena na Sl. 3.14.

35

Sl. 3.14 Korespondencija izmeu metode zasnovane na kanjenju i metode zasnovane na upravljakoj sekvenci

38

Kao to je prethodno reeno, mikroinstrukcije sadre skup mikrokomandi koje kontroliu izvrenje skupa mikrooperacija u toku mikroinstrukcionog ciklusa. Ukoliko se svakom mikroinstrukcijom kotrolie izvrenje samo jedne mikrooperacije, onda se radi o vertikalnim mikroinstrukcijama, a ako se jednom mikroinstrukcijom moe specifikovati izvrenje vie mikrooperacija, onda se radi o horizontalnim mikroinstrukcijama. Prednost vertikalnih mikroinstrukcija je u:

maksimalnom iskoritenju mikroinstrukcione rijei, 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 due vrijeme izvrenja mikroprograma i to nema mogunost paralelnog izvoenja mikrooperacija. esto se pod horizontalnim mikroinstrukcijama podrazumijeva maksimalni paralelizam operacija, to podrazumijeva koritenje veeg broja razliitih polja u okviru mikroinstrukcije. Balansirani pristup koristi manji broj polja za specifikaciju mikrooperacija nego kod horizontalnih mikroinstrukcija; ovaj format mikroinstrukcija se esto referie terminom dijagonalni format (dijagonalne mikroinstrukcije). Dok je broj razliitih polja kod vertikalnih mikroinstrukcija 1-3, horizontalnih vei od 6, kod dijagonalnih instrukcija broj razliitih polja je od 4-6. Ukoliko se u mikroprogramskoj memoriji nalazi veliki broj mikroinstrukcija koje se ponavljaju (ako je ukupan broj mikroinstrukcija n, broj razliitih mikroinstrukcija je m pri emu je esto m << n) onda se moe primijeniti koncept nanoprogramiranja. Kod ovog koncepta, konvencionalna mikroprogramska memorija se zamjenjuje mikroprogramskom memorijom od n rijei. Svaka rije sadri samo adresu mikroinstrukcije u nanomemoriji (te je , s obzirom da imamo m razliitih mikroinstrukcija, duina ove mikroprogramske rijei log2m bita). Na ovaj nain se smanjuje zahtjev za ukupan kapacitet memorije mikroprograma (Sl. 3.15).

39

Sl. 3.15 Konvencionalni i nanoprogramski koncpet realizacije mikroprogramske memorije

40

3. 4

Ulazno/Izlazni podsistem

3.4.1

Povezivanje procesora sa okolinom

Fiziko povezivanje mikroprocesora sa okolinom realizuje se preko elektriki provodljivih noica 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 spoljanu magistralu procesora. Razliiti procesori mogu imati odreene specifinosti u pogledu procesora dat je na sl 3.16. broja i funkcija pojedinih linija. Za ilustraciju, primjer linija za povezivanje hipotetikog

Sl. 3.16 3.4.2 Princip povezivanja sa U/I podsistemom

Raunar komunicira sa spoljnim svijetom (ljudi, industrijski procesi itd.) preko ulazno/izlaznih jedinica (ureaja). S obzirom na primjenu raunara u svim oblastima ljudske djelatnosti, razvijen je veliki broj periferijskih ureaja sa kojima raunar moe da komunicira. Mnogi od ovih ureaja postali su standardni dio raunarskih sistema. I pored

41

velikog broja, veoma razliitih perifernih jedinica, princip njihovog povezivanja sa raunarima je u znatnoj mjeri standardizovan. Prema komunikacionim karakteristikama, U/I ureaje moemo grupisati u:

razumljive ovjeku (terminali, tampai, zvune U/I jedinice itd.), itljive od strane maine (magnetne trake, diskovi, skeneri itd), komunikacione (pogodni za komunikaciju sa udaljenim ureajima), razumljive specifinim ureajima/procesima (A/D konvertori, jedinice za sprezanje sa izvrnim organima itd.)

Prema brzini, razlikujemo brze (magnetni diskovi, A/D konvertori, komunikacioni ureaji), jedinice srednjih brzina (jedinice magnetnih traka, standardni tastarure tampai itd.) i spore ureaje ( prekidai, releji i slino). Princip povezivanja periferijskih jedinica i raunara moe se predstavi sl. 3.17. Sa slike se vidi da se povezivanje sa periferijom vri posredstvom U/I interfejsa. Kao i memorijska sabirnica i U/I sabirnica sadri adresne linije, linije podataka, i kontrolne linije. Adresne linije slue za selekciju registara (portova) preko kojih se odvija komunikacija sa periferijskim jedinicama, a preko linija podataka se vri prenos informacija izmeu periferija i raunara. Kontrolnim linijama se prenose kontrolne i statusne informacije i vri sinhronizacija prenosa. Broj adresnih linija kao i broj linija podataka ne moraju da korespondiraju broju odnosnih linija na memorijskoj sabirnici.

Sl. 3.17 Povezivanje raunara 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 odreene linije i adresa i podataka, oni su logiki razdvojeni: odreene 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 logiko 1. I pored standardizacije tehnika povezivanja U/I ureaja sa raunarima problemi kod povezivanja proistiu iz razlike u: brzini periferija; broju bita prenosa; specifinom nainu zapisivanja/predstavljanja podataka; tipovima dozvoljenih operacija, nainu detekcije i reakcije na pojave greaka itd. Zbog tih specifinosti, nije racionalna implementacija logike povezivanja sa periferijama u sam CPU. 3.4.3 U/I interfejs (M/IO u logikoj 0 ), a pri generisanju memorijske adrese 5, pored identinog sadraja na adresnim linijama, na kontrolnim linijama signal M/IO bie u stanju

43

U/I interfejs kontrolie rad periferijskih jedinica u skladu sa naredbama procesora raunara, i po potrebi vri konverziju podataka iz jednog formata u drugi. Najee su periferijske jedinice zasebne cjeline, dok se U/I interfejs pakuje u isti kabinet/kuite sa procesorom i memorijom. Ponekad nije jednostavno utvrditi liniju razgranienja izmeu 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 prosljeuje na samu magistralu. Iako je logiki enkoder u sastavu interfejsa, on se najee pakuje zajedno sa tastaturom, dok se interfejs prema magistrali implementira u kuitu zajedno sa procesorom.

Sl. 3.19 Jednostavni interfejs tastature U/I interfejs treba da prepozna kada mu se CPU obraa u cilju slanja/itanja podataka /komandi/statusa i da izvri u predvienom vremenu zahtijevanu akciju/operaciju: prihvat ili slanje odnosnih podataka. Za realizaciju toga cilja, U/I interfejs treba da generie 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 greaka itd. Principijelna blok ema U/I interfejsa, kojom se obezbjeuju navedene funkcije data je na sl. 3.20.

44

Sl. 3.20 Blok ema U/I interfejsa U/I portovi Periferijski interfej sadri skup registara U/I portova kojima CPU moe da pristupa i preko kojih CPU komunicira sa interfejsom. Funkcije portova mogu biti:

Baferovanje podataka ka/iz memorije, uvanje informacije o statusu ureaja sa kojim se komunicira, Registrovanje komandi CPU a upuenih 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 0 6 0 KBDATA

Kod tipke (ASCII)

Sl. 3.20 Programski model interfejsa tastature Da bi oitao podatak sa tastature, program mora da izvede instrukciju koja vri transfer sadraja porta KBDATA u jedan od registara procesora. Iako je port KBDATA sa stanovita procesora read-only (mogue samo itanje), encoder (interfejs) moe da 'upisuje' u njega podatke. Pokuaj upisa u port sa procesorske strane nema efekta na sadraj 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 pripadajui interfejs; b) programski model Periferija interpretira 8-bitni podatak kao dvije BCD cifre, sa prikazom na 2 7segmentna displeja. Da bi se izvrio prikaz eljenih cifara, procesor mora poslati 2 BCD cifre u 1-om bajtu na izlazni port DIGOUT odgovarajuim instrukcijama.

46

Pored toga to je KBDATA ulazni a DIGOUT izlazni port, razlika je i u tome to KBDATA ne pamti sadraj pritisnutog tastera, nego ga samo baferuje za prosljeivanje 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, sadraj porta se ne mijenja dok se ne upie nova vrijednost od strane CPU-a. Prema tipu podataka koji se izmjenjuju izmeu porta i procesora, razlikujemo:

port podataka (preko kojeg se izmjenjuju podaci), statusni port (preko kojeg procesor moe dobiti informaciju o stanju prenosa, U/I interfejsa odnosno ureaja), upravljaki port, preko kojeg CPU postavlja komande i parametre za izvoenje U/I operacija.

3.4.4 Naini selekcije U/I ureaja Za selekciju U/I ureaja i transfer podataka ka perifernim ureajima (i obrnuto), procesor moe koristiti dva naina. Jedan je koritenjem specijalnih U/I instrukcija procesora (izolirani U/I), dok se drugi realizuje koritenjem instrukcija za izmjenu podataka sa memorijom (memorijsko mapirani U/I). Primjer koritenja i formata U/I instrukcija IN / OUT je dat na sl. 3.22. IN OUT 15 Opcode Pn Sl. 3.22 Koritenje i format U/I instrukcija IN / OUT instrukcije izvravaju transfer podataka slino memorijskim instrukcijama LD / ST, izuzev da ne adresiraju memoriju nego U/I port. Pri izvoenju memorijskih instrukcija procesor aktivira signal M/IO za selekciju memorije (logiko 1). Signal M/IO Rn, Pn Pn, Rn ; uitava se u registar Rn sadraj porta Pn, ; upisuje se u port Pn sadraj registra Rn. 4 3 Rn 0

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 nain adrese selektuju ili I/O portove, ili memorijske lokacije, zavisno od koritenih instrukcija (odnosno kontrolnih signala koji se generiu). Kod memorijski mapiranog U/I, I/O portovima se pristupa koritenjem 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 raspoloive), za U/I transfer se mogu koristiti sve instrukcije za referenciranje memorije, raspoloiv 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. Tehnike U/I komunikacije i prenosa podataka

3.4.5

48

Pri U/I komunikaciji CPU moe biti u veoj ili manjoj mjeri ukljuen u proces U/I komunikacije. Ako su U/I operacije u potpunosti kontrolisane od strane CPU-a (iniciranje, osmatranje statusa periferije, transfer podataka i okonanje transfera), onda se ovakav tip transfera naziva programirani U/I prenos. Programirani U/I prenos Tipian protokol komunikacije za oitavanje 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), uitavanje podataka tehnikom programiranog ulaza/izlaza dat je slijedeim kodom:

49

INIT: CEKANJE:

LDA STA TST BPL LDA .

#1 KBCS KBCS

; Start (iniciranje) operacije ; ; Testiranje spremnosti interfejsa (RDY=1)

CEKANJE ; ekanje, ako interfejs nije spreman KBDATA ; Interfejs spreman, oitaj 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 mogue inicirati pripremu slijedeeg podatka (npr. kod itanja jedinice magnetne trake), nakon oitavanja 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 moe ublaiti preklapajuim U/I). U cilju minimizacije utroka 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 dogaaji koji uzrokuju prekid izvravanja normalnog toka programske sekvence. Ovi dogaaji mogu biti razliiti, a dijele se na softverske (generisane programom) i hardverske (generisane hardverskim sklopovima/ureajima) (sl. 3.26). Prekid proizilazi iz vieg prioriteta servisiranja dogaaja koji uzrokuje prekid, u odnosu na prioritet izvravanja osnovnog programa. Servisiranje se realizuje aktiviranjem prekidne rutine (interrupt service routine) koja treba da izvede sve potrebne akcije koje zahtijeva pojava tog dogaaja. Nakon servisiranja dogaaja prekida programska sekvenca se vraa na taku prekida, nakon ega se nastavlja izvoenje osnovnog programa. Prekidi

Softverski (sinhroni)

Hardverski

Eksplicitno generisani

Poslj. greke u izvoenju programa Maskirani DIV BY ZERO

Eksterni

Interni POWER FAIL MACHINE MULFUNCTION PARITY ERROR . . .

SWI INT SIM I/O INT


. . .

Nemaskirani
ALARM

I/O . . . TIMER . . . Sl. 3.26 Klasifikacija prekida

. . .

51

Odreeni dogaaji najvieg prioriteta uvijek uzrokuju prekid (npr. POWER FAIL, MACHINE MULFUNCTION, ALARM, DIV BY ZERO, ). Maskirani prekidi se posluuju samo ako procesor prethodno postavi bitove dozvole prekida u statusnoj rijei procesora za odnosne dogaaje. Ideja prekida potie od problema komunikacije sa periferijama. Kod programiranog I/O procesor kontinualno testira spremnost periferije za komunikaciju. Pri takvom nainu komunikacije, u sistemu sa mnogo periferijskih jedinica procesor bi veinu vremena troio u ekanju na spremnost periferija. Takav nain rada bi usporavao ak i periferijske jedinice: periferija koja ima spreman podatak bi mogla da eka znaajan 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 izvodei osnovni program, a da periferija kada postane spremna za komunikaciju, izvjesti o tome procesor postavi zahtjev za komunikaciju. Na osnovu prioriteta zahtjeva, procesor moe prihvatiti zahtjev i servisirati dogaaj aktiviranjem prekidne rutine, ili odloiti servisiranje zahtjeva za neki kasniji trenutak vremena. Procesor moe prekinuti tekuu sekvencu kontrolnog toka samo izmeu individualnih mainskih instrukcija. Razlog tome je to to program ije se izvrenje prekida, treba da nastavi rad od take prekida nakon servisiranja dogaaja koji ga je generisao. Za to je potrebno uvanje stanja procesora (konteksta) u trenutku prekida, i restauracija tog stanja nakon servisiranja prekida. Poto je za izvoenje instrukcije osnovnog programa iza take prekida bitan samo kontekst programskog modela nakon izvoenja prethodne instrukcije, onda se prekidi dozvoljavaju samo nakon kompletiranja izvrenja jedne instrukcije a prije poetka izvrenja druge. Dakle, proces izvrenje jedne instrukcije bi se mogao opisati sekvencom: BEGIN CheckForInterrupt; Fetch; Execute; END

52

CheckForInterrupt sekvenca utvruje postojanje zahtjeva za prekid, odnosno dogaaja koji zahtijevaju posluivanje. Ukoliko se radi o dogaaju (tipu prekida) koji zahtijeva neodlono servisiranje ili ako je prekid koji se moe kontrolisati (maskirati) dozvoljen, onda se ulazi u proces posluivanja prekida u okviru kojeg se:

Pohranjuje u memoriju (na stek) dio stanja ili kompletno stanje programskog modela procesora i postavlja u PC adresa poetka 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), Sauvano stanje programskog modela se restaurira sa steka (insrukcijom RTI return from interrupt, koja se izvodi na kraju ISR) i nastavlja izvoenje od mjesta gdje je prekid nastao.

Automatsko uvanje (dijela) programskog modela procesora, u procesu posluivanja prekida, obuhvata obavezno programski broja i statusnu rije procesora. Ukoliko je broj registara procesora mali, onda se najee 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 rijei) pri ulasku u servisnu rutinu i restauracija sauvanog 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 sadraj pohranjuje/restaurira. Servisiranje prekida zavisi od prirode dogaaja koji ga je uzrokovao. U daljnjem tekstu bie opisano vie varijanti koritenja mehanizma prekida u procesu U/I komunikacije. Sistem sa veim brojem prekidnih linija Najjednostavniji sluaj realizacije U/I komunikacije prekidnim mehanizmom je da svaka periferija ima svoju prekidnu liniju (Sl. 3.27). Svaka linija kojom se zahtijeva prekid ima obino fiksan prioritet. Omoguenje prekida odreenih prioriteta se kontrolie internim bitovima dozvole (interrupt enable). Za svaku prekidnu liniju definisana je specifina adresa na koju se preusmjerava programska sekvenca u sluaju dogaaja

53

prekida (adresa ISR). U okviru interne CheckForInterrupt (mikroprogramske) sekvence procesora se:

utvruje zahtjev za prekid najvieg prioriteta u IR, ukoliko je prekid tog nivoa dozvoljen (odgovarajuim bitima dozvole prekida (obino u statusnoj rijei procesora) kojima se specifikuje dozvola prekida odreenog prioriteta i vieg), onda se ulazi u sekvencu posluivanja prekida (pohranjivanje stanja i ulazak u ISR). Adresa ISR je odreena zahtjevom INTRi koji se posluuje.

3.27

Kod prekidnog sistema ovog tipa (multinivoijski prekidni sistem sa n-nivoa) tipino ureenje prioriteta je slijedee: Ako se posluuje 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 moe biti veliki (nije ga lako unaprijed ni predvidjeti). Zbog toga se koristi rjeenje gdje je na jednu liniju zahtjeva za prekid mogue vezati vei broj U/I interfejsa (na ulazu u procesor moe postojati jedna ili vie prekidnih linija). Pri tome se koriste razliite tehnike za utvrivanje izvora prekida na odreenoj liniji. Identifikacija prozivanjem Kada se desi prekid uzrokovan zahtjevom za prekid INTRi na odreenoj liniji, ulazi se u proces posluivanja prekida aktiviranjem odgovarajue ISR-e. Pri ulasku u ISRi nije

54

poznat izvor prekida, jer je vie 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 utvruje ispitivanjem statusnih portova interfejsa) opsluuje 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 odgovarajue ISR dat na sl. 3.29.

Sl. 3.28 ema hardverske implementacije prekidne tehnike U/I komunikacije prozivanjem Primijetimo da redoslijed ispitivanja odreuje i prioritet posluivanja zahtjeva istog prekidnog nivoa. Ovaj redoslijed moe biti fiksan, a moe se i mijenjati (npr. round-robin tehnikom: ureaj koji je poslednji posluen, u narednom posluivanju ispituje se na kraju). Takoe primijetimo da je mogua varijanta ISR-e u kojoj se vri povratak (RTI) na kraju posluivanja svakog interfejsa (im se poslui prvi interfejs koji je traio zahtjev). Ova varijanta je pogodna ako je mala vjerovatnoa da dva interfejsa istovremeno trae zahtjev za prekid.

55

Sl. 3.29 Dijagram toka ISR kod tehnike prozivanja

Lananje i vektorsko prekidanje Kod ove tehnike i dalje je vie U/I interfejsa vezano na jednu INTRi liniju zahtjev za prekid. Identifikacija U/I interfejsa koji je zahtijevao prekid i aktivacija rutine za posluivanje 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 ureaj (od vie njih, koji su eventualno postavili istovremeno zahtjeve za prekid) postavio prekidni vektor na linije podataka, koristi se lananje. Nain realizacije lananja prikazan je na sl. 3.30.

56

Sl. 3.30 Nain realizacije lananja

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 obino sadri registar za pamenje 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 lananje (chaining).

Sl. 3.31 Logika za maskiranje zahtjeva za prekide Na slikama 3.32 i 3.33 prikazane su eme koritenja kontrolera prekida za sluaj 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 moe zabraniti odreene prekide postavljanjem odnosnih bitova u IMR. Preko kontrolnih portova se definie prioritetni mehanizam: fiksni prioriteti linija (sa mogunou da se bilo kojoj liniji pridijeli najnii prioritet), round robin itd. Takoe se definie vrijednost prekidnog vektora najnieg prioriteta, odnosno adresa rutine za servisiranje prekida (RSP). Ako se u IRR pojavi vie zahtjeva istovremeno, onda kontroler na bazi stanja registra maskiranja, registra servisiranja prekida (ISR), i prioritetnog mehanizma zakljuuje da li treba generisati zahtjev za prekid procesoru (linija INTREQ, sl. 3.32, 3.33). Ukoliko je u toku posluivanje prekida vieg nivoa, onda zahtjevi ostaju da 'vise' (pending requests). Ukoliko je pristigao jedan ili vie zahtjeva

59

vieg nivoa od tekueg posluivanja, 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 najvieg nivoa (u varijanti na sl. 3.32, 3.33, postavljanje vektora prekida postavlja U/I port). Procesor na bazi prekidnog vektora odreuje adresu RSP i ulazi u proces posluivanja prekida, a kontroler postavlja bit u ISR. Na kraju obrade prekida, RSP je duna da signalizira kontroleru prekida da je servisiranje zavreno (preko kontrolnog porta), a kontroler na osnovu toga brie postavljeni bit u ISR. Na ovaj nain je implementacija U/I komunikacije prekidnom tehnikom znatno pojednostavljena, jer je cijela logika ve imlementirana u integrisanom kolu.

Metod vektorskog prekida zauzeem magistrale Kod ovog metoda U/I interfejs treba prije postavljanja zahtjeva (linije INTR) da stekne pravo kontrole nad magistralom (bus master). Na taj nain samo jedan U/I interfejs moe 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 izmeu perifernih jedinica i procesora je relativno jednostavan i efikasan mehanizam, ukoliko su periferijske jedinice spore. U tom sluaju, i za veliki broj periferijskih jedinica, vrijeme koje procesor potroi za komunikaciju sa periferijama iznosi svega nekoliko procenata ukupnog procesorskog vremena. Meutim, transfer velikog broja podataka izmeu brzih periferija (diskova npr.) i memorije preko procesora mehanizmom prekida za transfer svakog pojedinanog podataka, zahtijevao bi znatan procenat procesorskog vremena (vrijeme pripreme i transfera podataka od strane periferije moe biti i krae od samog trajanja RSP). Prema tome, alternativni pristup se namee kao imperativ.

60

Kanal za direktan pristup memoriji (DMA channel - direct memory access channel), je specijalni interfejs koji omoguava periferiji da izvri brz transfer podataka ka/iz memorije, bez uea CPU (odnosno, uee 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 razliitih tehnika prenosa, a) programirani U/I; b) prekidni U/I; c) DMA U/I

61

Da bi DMA interfejs izvrio 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 poetka memorijskog bloka, broj bloka diska, kao i broj bajta koji se prenosi, te izdaje komandu za prenos koja sadri 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, dolo bi do superpozicije i nekorektnog upisa/itanja). Zahtjev za upravljanje magistralom DMA saoptava 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 zavri tekue koritenje magistrale (tekui aktivni ciklus magistrale) i da postavi svoje izlaze na magistralu u neaktivno stanje (stanje visoke impedanse). Ovo procesor moe da uradi u vie taaka ciklusa mainske instrukcije (npr. iza faze pribavljanja, faze dekodiranja instrukcije, pribavljanja operanda itd). Blok ema DMA interfejsa i naina 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 stanovita duine kontrole nad magistralom: 1. Kraa ciklusa (Cycle stealing). Ukoliko pretpostavimo da disk jedinica moe 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 troi svo svoje vrijeme na komunikaciju sa memorijom; odreeni broj mainskih 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 moe doi i do produenja mainskih ciklusa za nekoliko taktova u procesu zauzimanja i oslobaanja magistrale. Navedeni efekti ograniavaju brzinu prenosa podataka, pa se ona koristi kod sporijih jedinica. 2. Standardni DMA prenos. Kod ove varijante DMA interfejs dri kontrolu nad sabirnicom za vrijeme prenosa cijelog bloka podataka. Ovim se postiu velike brzine prenosa, ali procesor mora da eka dok DMA ne zavri transfer bloka.

63

Kompromisno rjeenje je da DMA kontroler oslobaa sabirnicu nakon prenosa odreenog broja podblokova, kako bi procesoru omoguio da reaguje na izuzetne dogaaje (burst paketni DMA). 3. Po treoj varijanti DMA kontroler koristi magistralu u mainskim ciklusima u kojima je ne koristi CPU. Na taj nain se maksimizira iskoritenje propusnog opsega memorije, i to bez blokade rada CPU. Napomenimo da se za potrebe specijalizovanih algoritama pri izvoenju U/I operacija (npr. esto se javlja potreba da se prije smjetanja u memoriju podaci prethodno transformiu) 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
Razliite 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 usavravaju, frekvencija radnog takta procesora se brzo pomjera od manjih ka veim bzinama, odnosno kompletan dijagram sa sl. 4.1 se pomjera ka donjem desnom uglu. Drugi trend je da proizvoai procesora nastoje da smanje vrijednost CPI koristei 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 upravljake jedinice. Zbog toga su CISC procesori gornjem lijevom uglu projektnog prostora. RISC (reduced instruction set computers) procesori imaju veu frekvenciju radnog takta od CISC procesora. S obzirom da se najee koristi hardverski implementirana upravljaka jedinica, CPI je kod ovih maina reduciran na 1-2. Specijalna klasa RISC procesora su superskalarni procesori, kod koji se vie instrukcija mogu izvoditi istovremeno za vrijeme svakog ciklusa, pa je kod ovih procesora CPI ispod korespondentnih vrijednosti za RISC procesore. Procesori sa velikom duinom rijei (VLWI very long instruction word) koriste vie funkcionalnih jedinica i od superskalarnih procesora. Time se jo vie smanjuje broj CPI. Zbog velike duine rijei (256-1024 bita), upravljaka jedinica ovih procesora je mikroprogramskog tipa, te je (zbog mikroprogramskog ROM-a) brzina radnog takta manja. Neke instrukcije ovih procesora zahtijevaju i vei broj mikroprogramskih ciklusa. Superprotoni procesori koriste viefazne taktne signale sa znatno viom radnom frekvencijom i relativno visokim CPI faktorom, izuzev ako se ne koriste i viestruke funkcionalne jedinice to je primijenjeno u vektorskim procesorima. Ovi procesori pored skalarnih funkcionalnih jedinica imaju i funkcionalne jedinice za vektorske operacije.

4.2 Protona obrada instrukcija

Izvoenje tipine instrukcije moe se razloiti na manje ili vee korake (faze) kao npr: faza pribavljanja i faza izvrenja; ili faze pribavljanja instrukcije, dekodiranja, izvrenja i upisa rezultata. Ove faze u izvoenju instrukcije se najee realizuju u instrukcionom protonom sistemu (instruction pipeline), kako je to predstavljeno na sl. 4.2.

66

Sl. 4.2 Protono izvrenje sukcesivnih instrukcija u osnovnom skalarnom procesoru ( a) ) i podprotona obrada ( b) i c) )

Protoni sistem, kako je to opisano u dijelu 2.3, prihvata sukcesivne instrukcije na ulazu i izvrava ih u stepenima protonog sistema, sa preklapanjem izvrenja instrukcija u sukcesivnim stepenima. U tekstu koji slijedi, date su definicije nekih osnovnih pojmova vezanih za protonu obradu instrukcija: (1) Ciklus protonog sistema definie se intuitivno kao period potreban za kompletiranje operacija u svakom stepenu (podrazumijeva se da svi stepeni zahtijevaju isto vrijeme za izvrenje obrade). (2) Kanjenje lansiranja instrukcija za izvrenje vrijeme (u ciklusima) izmeu iniciranja izvrenja susjednih instrukcija.

67

(3) (4)

Brzina lansiranja instrukcija za izvrenje broj instrukcija lansiranih za izvrenje po ciklusu, ovaj parametar je takoe poznat kao stepen superskalarnog procesora. Kanjenje (vrijeme) izvravanja prostih operacija Pod prostim operacijama se podrazumijevaju operacije cjelobrojnog sabiranja, punjenja/smjetanja podataka, grananja itd. Ovo vrijeme se iskazuje takoe u ciklusima.

(5)

Konflikti u pristupu resursima Ovo se odnosi na situaciju kada dve ili vie instrukcija zahtijevaju koritenje iste funkcionalne jedinice istovremeno.

Osnovni skalarni procesor se definie kao maina kod koje se iniciranje instrukcija za izvrenje obavlja u svakom ciklusu, odnosno kod koje je kanjenje (vrijeme) izvrenja prostih operacija jedan ciklus. Protoni sistem se moe maksimalno iskoristiti ako sukcesivne instrukcije kontinualno ulaze u protoni sistem brzinom od jedne instrukcije po ciklusu (Sl. 4.2a). Ako se instrukcije mogu lansirati svaki drugi ciklus, onda je to sluaj podprotone obrade (underpipelining sl. 4.2b). Drugi sluaj podprotone obrade je prikazan na sl.4.2c, gdje se faze obrade grupiu u vee korake: npr. faze pribavljanja i dekodiranja se realizuju u jednom protonom stepenu, a faze izvrenja i upisa rezultata u drugom protonom stepenu. Najbolje iskoritenje se postie u sluaju 4.2a ( CPI = 1 ), dok je u sluaju 4.2b CPI = 2 ( za sluaj 4.2c je ciklus protonog sistema dva puta vei od osnovnog ciklusa radnog takta procesora). S obzirom da se performanse procesora mogu reprezentovati brzinom izvrenja instrukcija iskazanom u izvrenim milionima instrukcija u sekundi (MIPS rate) MIPS rate =
f CPI 10
6

(4.1)

Vidi se da su performanse procesora sa obradom kao na Sl. 4.2b i Sl. 4.2c duplo nie u odnosu na performanse osnovnog skalarnog procesora. Na Sl.4.3 je data arhitektura osnovnog skalarnog raunarskog sistema, neznatno modifikovana u odnosu na eme date u poglavlju 3. CPU moe da ima viestruke (skalarne i vektorske) funkcionalne jedinice (ALU, akceleratore operacija u pokretnom zarezu itd.). Specijalne funkcionalne jedinice mogu biti ugraene 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 vre simbolika raunanja u AI

68

aplikacijama. Koprocesori ne mogu raditi samostalno, i moraju biti kompatibilni sa procesorom domainom (host processor). Ponekad se ovi procesori nazivaju pridodati (attached) ili sluge (slave) ili pozadinski (back-end), ali su oni po procesnoj moi ponekad znatno moniji od raunara domaina (npr. moni Cray Y-MP je pozadinski procesor malog miniraunaradomaina).

Sl. 4.3 Model osnovnog skalarnog raunara

69

4.3 Arhitekture bazirane na karakteristikama instrukcionog skupa


U poetnoj fazi razvoja raunarske tehnike, raunari su sadravali relativno jednostavan skupom instrukcija. Osnovni razlog je bila visoka cijena hardvera. Nakon toga je dolo do dramatinog pada cijene hardvera po gejtu, i rasta cijene softvera. Softverska tehnologija se usavravala to je rezultovalo razvojem strukturnih i objektno orijentisanih programskih jezika i koncepata, to je povealo semantiki raskorak izmeu 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 raunara postane velik i kompleksan (raunari sa kompleksnim instrukcionim skupom Complex Instruction Set Computers/CISC). Tipian Ovaj trend je bio pospjeen jednostavnou i fleksibilnou mikroprogramskog koncepta. CISC instrukcioni skup sadri priblino 120 350 instrukcija sa koritenjem razliitih instrukcionih formata i koristi relativno mali broj registara opte namjene (general purpose registers - GPRs). U toku izvrenja instrukcija esto se izvravaju 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, poboljava efikasnost realizacije odreenih funkcija i doputa proirenja sa skalarnih na vektorske i simbolike instrukcije. Redukovani instrukcioni skup. Nakon mnogih istraivanja koja su se bavila karakteristikama izvoenja programa, dolo se do rezultata koji su pokazivali da se svega 25% instrukcija iz kompleksnog instrukcionog skupa esto koristi (95% vremena). Ovaj podatak se moe interpretirati i tako da se 75% hardverski implementiranih instrukcija ne izvodi gotovo nikako. Zbog toga se prirodno nametalo pitanje: Zato koristiti dragocijeni prostor na procesorskom ipu za implementaciju rijetko koritenih funkcija? Rijetko koritene instrukcije se mogu implementirati softverski koritenjem osnovnih, esto koritenih procesorskih instrukcija. Iako je softverska implementacija ovih funkcija znatno sporija od hardverske, ukupan efekat je pozitivan, jer se osloboeni prostor na procesorskom ipu moe iskoristiti za realizaciju znatno monijeg hardvera (implementacija ke memorije na ipu, ili jedinice za operacije u pokretnom zarezu). Instrukcioni skup RISC procesora sadre tipino manje od 100 instrukcija sa fiksnim (32bitnim) formatom instrukcija. Instrukcije koriste svega nekoliko naina adresiranja, veina

70

instrukcija koriste operande u registrima. Pristup memoriji se vri samo load/store instrukcijama. Broj registara ovih procesora je veliki kako bi se omoguila brza promjena konteksta izmeu procesa, te brzi pozivi i gnijedenje procedura. Veina optimizovanih instrukcija se izvodi u jednom mainskom ciklusu. S obzirom na optimizaciju hardvera, cijeli procesor se standardno realizuje na jednom VLSI ipu. Kao rezultat svega je rad CPU-a na viim frekvencijama radnog takta, smanjenje vrijednosti CPI parametra i prema tome vie performanse u MIPS, prema (4.1). Na Sl. 4.4 su na globalnom nivou predstavljene distinkcije u arhitekturi izmeu modernih CISC i tradicionalnih RISC arhitektura. Navedene distinkcije se mogu smanjivati u budunosti, zbog primjene RISC koncepata u CISC arhitekturama i obrnuto.

Sl. 4.4 Arhitekturna razlika tipinih RISC i CISC arhitektura. Komparativne karakteristike CISC i RISC arhitektura predstavljene su Tabelom 4.1. Arhitekturna karakteristika Format i broj instrukcija Naini adresiranja Opti registri i ke CISC Veliki instrukcioni skup, varijabilni format instrukcija 12 24 8 24 GPR, jedan ke i za instrukcije i za podatke, novije CISC maine takoe razdvajaju instrukcioni i ke za podatke RISC Mali broj instrukcija, fiksni format. Veina instrukcija su registarske instrukcije. 3-5 Veliki broj (32 192) GPRs, posebni ke za instrukcije/ podatke

71

CPI Upravljaka jedinica

CPI 2-15 Najee mikroprogramska memorija, ali savremeni CISC i sa hardverskom upravljakom jedinicom

Srednji CPI < 1.5 Uglavnom realizacija jedinice hardverska upravljake

Skalarni CISC procesori


CISC skalarni procesori procesiraju skalarne podatke. Najprostiji skalarni procesori izvravaju cjelobrojne instrukcije (operandi su sa fiksnom (binarnom) takom). Moniji skalarni procesori rade i sa cjelobrojnim i sa operacijama u pokretnom zarezu (sl. 4.3). Implementacija moe biti ili na jednom ipu, ili na vie ipova na jednoj procesorskoj ploi. Procesiranje je najee podprotono; osnovni uzroci su zavisnost izmeu podataka, konflikti kod korienja resursa i grananja. Performanse ispod optimalnih proizilaze i iz razloga kada je radni takt dui od vremena potrebnog za izvrenje 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


Generiki RISC skalarni procesori se nazivaju skalarni RISC jer su projektovani za izvoenje jedne instrukciju po ciklusu (kao prema sl. 4.2a). Kao to je prethodno pomenuto, instrukcije koje se rijetko izvravaju u RISC procesorima se implementiraju softverski. Zbog toga su zahtjevi koji se postavljaju pred programski prevodilac RISC maina vii u odnosu na zahtjeve za prevodioce CISC procesora. Paralelizam na nivou instrukcija se eksploatie i kod RISC i kod CISC procesora. I RISC ali i CISC procesori za visoke performanse moraju da rade na to viim radnim frekvencijama, sa to manjim CPI faktorom uz efikasno generisnje koda programskim prevodiocem. Pojednostavljenje strukture instrukcija u RISC arhitekturama omoguava pribliavanje 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 proirljivog (scalable) procesora, jer se broj registara (i registarskih prozora) mijenja u razliitim SPARC implementacijama. Kod MC 88100 se proirljivost odnosi na broj specijalnih funkcionalnih jedinica (SFU special functional units) koje su implementirane u razliitim 88100 varijantama. U tekstu koji slijedi dat je saet opis SPARC procesora firme Cypress semiconductor.

73

Sl. 4.6 a) Cypress CY7C601 SPARC processor b) Cypress CY7C602 floating point jedinica. SPARC sadri 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 poboljaju 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 preklapajuih registarskih prozora u SPARC arhitekturi. Po konceptu registarskih prozora (uveden Berkley RISC arhitekturom), svakoj proceduri se pridjeljuje 32 cjelobrojna registra (svaki duine 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 veliine (po 8 registara u svakoj sekciji): Sekcija ulaznih parametara

75

(Ins), lokalni registri procedure (Locals) i registarska sekcija za predaju parametara slijedeoj 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 preklapajua 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 sluaj da se poziva nova procedura a svi prozori su zauzeti (CWP i WIM se izjednae), onda se generie prekid, u toku kojeg se smjetaju Ins i Locals registri prozora u memoriju koristei servisnu rutinu na koju pokazuje trap base register. WIM se povea i pokazuje na slijedei prozor i nastavi proces pozivanja slijedee 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 takoe 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: mnoa i sabira. Specijalne dualne instrukcije add-and multiply i substract-and multiply koriste istovremeno i jedinicu za mnoenje i jedinicu za sabiranje. Takoe, istovremeno se mogu izvoditi i cjelobrojene operacije i opercije u tekuem zarezu, pa zbog toga i8060 ima karakteristike i superscalarnog procesora. Grafika jedinica podrava 3-dimenzionalne grafike operacije sa 8, 16 i 32 bitnim pikselima. Ovaj RISC procesor ima 82 instrukcije, od ega 24 za operacije u pokretnom zarezu, 10 grafikih instrukcija i 6 pseudoasemblerskih instrukcija. Debata izmeu projektanata RISC i CISC procesora traje due vrijeme. Na bazi jednaine (4.1) moe se zakljuiti da je RISC superiorniji u odnosu na CISC, ukoliko se duina programa ne poveava dramatino. Neka istraivanja pokazuju da se broj instrukcija, pri konvertovanju CISC u RISC programe uveava za 40%. Ipak, ovo poveanje u broju instrukcija (i veliini memorije koju zahtijeva odgovarajui program) je znatno manji nego to je poveanje radnog takta (smanjenje ciklusa) i redukcija CPI. Nedostatci RISC arhitekture su slijedei: s obzirom na to da se jedna CISC instrukcija implementira nizom RISC instrukcija, poveava se veliina potrebne memorije kao i broj memorijskih pristupa potrebnih za pribavljanje instrukcija, iako vei registarski skup moe da dri vie privremenih podataka, sistem za dekodiranje registara je komplikovaniji, to produava vrijeme pristupa registrima, kako bi se prethodni problemi minimizovali, kompajler treba da generie optimalan kod, pa se visoki zahtjevi postavljaju pred programske prevodioce, upravljaka jedinica implementirana u hardver je manje fleksibilna i kompleksnija za projektovanje i realizaciju. Ipak, razlike izmeu RISC i CISC arhitektura se sve vie smanjuju. Napredak tehnologije omoguava primjenu dobrih rjeenja i jednog i drugog koncepta kako u RISC tako i u CISC arhitekturama.

77

4.4 Hazardi kod protone obrade


Hazard je okolnost koja spreava da funkcionalna jedinica izvrava instrukciju

maksimalnom brzinom. Hazardi se mogu javiti zbog: zavisnosti po podacima izmeu instrukcija konflikata u koritenju zajednikih resursa pri istovremenom izvoenju razliitih instrukcija (strukturni hazardi) promjene instrukcionog toka (uzrokovan instrukcijama grananja i drugim instrukcijama koje mijenjaju kontrolni tok - upravljaki hazardi). Hazardi uzrokuju da se rad cijelog protonog sistema ili njegovog dijela privremeno zaustavi, to uzrokuje degradaciju radnih performansi. Obino, kada se zaustavi izvrenje neke instrukcije u protonom stepenu, onda se zaustavlja izvrenje i svih drugih instrukcija u protonom sistemu koje slijede iza zaustavljene instrukcije dok se produava izvrenje instrukcija koje su u protonom sistemu ispred zaustavljene instrukcije. Ovo znai da se u sluaju pojave zastoja (hazarda) u nekom protonom stepenu zaustavlja i dalje pribavljanje instrukcija. U cilju smanjenja broja hazarda koriste se razliiti postupci koji se mogu podijeliti na statike i dinamike. Statike (softverske) tehnike su postupci koji se primijenjuju prije samog izvoenja, odnosno postupci u fazi prevoenja programa. Ove tehnike se zasnivaju na identifikaciji karakteristika programa (prije svega zavisnosti po podacima izmeu instrukcija) i potencijalnih hazarda koji se nastoje eliminisati preureenjem programskog kda. Dinamike tehnike se baziraju na preureenju redoslijeda izvoenja instrukcija u toku samog izvrenja, korienjem dodatnih hardverskih sklopova na samoj CPU. Softverske tehnike uslonjavaju projektovanje programskih prevodilaca, a programiranje u asemblerskom jeziku postaje ekstremno teko. Osim toga teko je predvidjeti sve elemente runtime ponaanja programa u fazi prevoenja. Dinamiki pristup ima na raspolaganju stvarnu sliku ponaanja programa u toku izvoenja, ali reakcija mora biti ekstremno brza i pravovremena. Nedostaci ovog pristupa su svakako u uslonjavanju hardvera ime se zahtijeva dodatni prostor na procesorskom ipu za implementaciju ovih funkcija, a moe da rezultuje i ogranienjem u brzini radnog takta.

You might also like