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