76
1 1. Uvod 1.1 Kratka istorija razvoja ra~unara Qudi su od davnina nastojali konstruisati ure|aje koji bi im olak{ali izvo|ewe ra~unskih operacija. U procesu ra~unawa koristimo decimalni brojni sistem koji ima 10 cifara: 0-9. Naziv decimalni poti~e od latinske rije~i decem koja zna~i deset, dok su simboli cifara do{li od Arapa, a ovi su ih preuzeli od Indusa. Sigurno je da je razlog kori{tewa ovog brojnog sistema u tome {to ~ovjek ima 10 prstiju na obe ruke (da nas je majka priroda podarila sa 6 prstiju na rukama, vrlo vjerovatno je da bi koristili brojni sistem sa bazom 12. ^ovjek je u po~etku, sasvim sigurno koristio prste za pomo} u brojawu. Prsti su korespondirali ciframa i numeri~kim veli~inama. Za rad sa ve}im brojevima koristili su se kamen~i}i. Na kostima koje datiraju iz perioda 30 000god. 20 000 god. PNE, na|ene su recke kojima su brojne veli~ine memorisane. Na jednoj kosti iz Afrike, 8 500 god. PNE, zapisani su prosti brojevi 11, 13, 17 i 19, o~ito kao posebno interesantni. Izme|u 1900 i 1800 god. PNE pojavquju se prvi pozicioni brojni sistemi (Babilon, sa bazom 60). Izme|u 1000 i 500 god. PNE izumqen je abacus, prvi mehanizam kori{ten za prakti~no ra~unawe (Babilonci ili Kinezi). Abacus je u osnovi ravna (kamena, drvena ili sli~na plo~a, na koju se postavqaju elementi: kamen~i}i, {tapi}i i sl.). Leonardo da Vin~i je oko 1500 god. napravio prvi mehani~ki kalkulator. 1623. god. Wilhelm Schickhard napravio je mehani~ki ure|aj za osnovne matemati~ke operacije. Mnogo poznatiji Blaise Pascal (1642) i Gottfried Leibnitz (1671) projektovali su i gradili mehani~ke ma{ine koje su osnovne operacije radile 'automatski'. Radovi Charlesa Babbage-a (1823) mogu se smatrati samim po~etkom ra~unarstva ~ija je logika najsli~nija logici dana{wih ma{ina. Ada Lovelace Byron (1815-1851), k}i lorda Byrona, radila je sa Charlesa Babbage-om na wegovom projektu diferencne i analiti~ke ma{ine, i sugerisala je Babbage-u kako bi wegova ma{ina trebala biti programirana, pa je na osnovu toga ponijela epitet prvog programera, a programski

Skripta(1 Dio)

Embed Size (px)

Citation preview

Page 1: Skripta(1 Dio)

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

Page 2: Skripta(1 Dio)

2

jezik ADA je dobio naziv po wenom imenu. Sva ta i druga nastojawa, sve do

~etrdesetih godina dvadesetog vijeka, mogu se smatrati mehani~kom erom u razvoju

ra~unara. Pojavom elektronskih ra~unara u{lo se u nevjerovatno buran period

ra~unarstva, a koji je prema svim reperkusijama na ostale segmente qudske

djelatnosti (informati~ka revolucija) ozna~io novu epohu u razvoju qudske

civilizacije.

Osnovni razlog tome svakako je u ~iwenici da je uspje{no rje{avawe ra~unskih i

drugih aplikativnih problema primjenom ra~unara davalo ideje za rje{avawe jo{

kompleksnijih problema, uz prirodne zahtjeve za ve}e procesne mogu}nosti i mawu

cijenu. Za ilustraciju mo`emo navesti da tr`i{te superra~unara raste po stopi od

30% godi{we. Ovaj trend je najmawe akademsko pitawe ili pitawe presti`a, ve} je

u su{tini strate{ko pitawe progresa nacija, dr`ava i civilizacije u cjelini.

1.1 Oblasti primjene ra~unara.

Problemi koji se rje{avaju primjenom ra~unara zadiru u sve segmente nauke,

tehnike, industrije, medicine itd. Sa stanovi{ta sofistifikacije obrade, aplika-

cije se mogu grupisati u ~etiri nivoa;

• procesirawe podataka, • procesirawe informacija, • procesirawe znawa, • inteligentno procesirawe.

Kori{tewe ra~unara je po~elo procesirawem podataka, {to je i danas jedna od

najzna~ajnijih oblasti primjene (numeri~ke simulacije kompleksnih fenomena kao

{to su vrijeme, klima, proizvodni procesi, hemijske reakcije i sl.). Ipak, sve je

izra`enije pomjerawe ka procesirawu informacija. Informacione objekte ~ine

podaci povezani odre|enom sintaksnom strukturom ili relacijama. Akvizicija

ogromne koli~ine podataka na ra~unarskim sistemima {irom svijeta stvorila je

impresivnu bazu znawa (nau~ne, tehni~ke, komercijalne i druge informacije), {to

je povratno iniciralo zahtjeve za procesirawe znawa. Iako su postignuti zna~ajni

rezultati u ovoj oblasti, oni su jo{ uvijek daleko od spektakularnih prognoza.

Inteligentni ra~unari, sposobni da razmi{qaju i donose odluke, jo{ uvijek nisu

stvar bliske budu}nosti.

Kompleksnost obrade i zahtjevi za procesnim mogu}nostima ra~unara rastu sa

nivoom sofistifikovanosti problema. Uvjerewe je da isti trend pokazuje i mogu}-

Page 3: Skripta(1 Dio)

3

nost eksploatacije paralelizma ({to, s obzirom na tehnolo{ke limite mogu}nosti

jednoprocesorskih ra~unara, name}e primjenu paralelnih ma{ina kao imperativ).

Za ilustraciju kompleksnosti problema prva dva nivoa, nave{}emo nekoliko

primjera.

Simulacija klime na{e planete za period od 10 godina za aktuelne modele

zahtijeva broj operacija u pokretnom zarezu reda 1016, uz produkciju stotina

gigabajta podataka. Razli~ita poboq{awa simulacionog modela (pove}awe

rezolucije, me|uokeanska interakcija i sl.) mogu dodatno pove}ati procesne

zahtjeve. Sna`an pritisak za kori{tewe sve br`ih ra~unara imaju izra`eno

komercijalne aplikacije, kao {to su video konferencijski sistemi, razumijevawe i

procesirawe govora, internet i video servisi, trodimenzionalna grafika i

animacija u realnom vremenu, sistemi za pomo} kod dono{ewa odluka itd. Za

grafi~ke aplikacije visokih zahtjeva, procjena zahtjevane procesorske snage za

animaciju u stvarnom vremenu je reda teraflopsa (1012 operacija u teku}em zarezu u

sekundi ).

1. 3 Trendovi razvoja

Performanse najmo}nijih ra~unara, od prvog ENIAC-a do dana{wih

superra~unara, uve}avale su se u prosjeku za faktor 10 svakih 5 godina. Ovakav

trend je odr`an zahvaquju}i izvanrednom razvoju tehnologije proizvodwe

elektronskih komponenata, ali i razvoju arhitekture ra~unara i na~ina

procesirawa podataka (Sl.1.1).

U po~etnom periodu, rast procesne mo}i se bazirao gotovo iskqu~ivo na razvoju

tehnologije za proizvodwu elektronskih komponenata i akumuliranom znawu o

projektovawu ra~unara i wegovih modula. Arhitektura ra~unara i na~in procesi-

rawa su se, sve do po~etka 70-ih godina, zasnivali na jednostavnom konceptu i

organizaciji von Neumann-ove ma{ine: ra~unar se sastoji od centralne procesne

jedinice (CPJ) i memorije, koji su me|usobno povezani i izme|u kojih je mogu}a

izmjena podataka. Centralna memorija izmjenqivog sadr`aja sadr`i kako podatke

tako i program-niz instrukcija, ~ijim se izvo|ewem realizuje `eqena funkcija ili

algoritam. Izvo|ewe instrukcija se sastoji iz dobavqawa operacionog koda, koji

odre|uje semantiku instrukcije, i operanada u CPJ, izvr{ewa odre|enog ra~unawa i

vra}awa rezultata u memoriju.

Maric Slavko
graficke aplikacije visokih zahtjeva se pribli`avaju radu sa rezolucijom od 109 ele me na ta slike. Uz procjenu od 200 operacija po elementu 25 puta u sekundi, => 1012.
Slavko Maric
Electronic Numerical Integrator and Calculator. Smje{ten u nekoliko soba, te`ak 30 tona, imao 18 000 cijevi, tro{io 150 kw, procesna mo} nekoliko desetina operacija/ sec. Balisti~ka ra~unawa radio 100x br`e od ~ovjeka.
Page 4: Skripta(1 Dio)

4

Sl. 1.1 Vr{ne performanse ra~unara u periodu 1945-1998. Znakom ‘°’ su ozna~eni jednoprocesorski, znakom ‘+’ vektorski, a znakom ‘x’ masovno paralelni ra~unari.

Napredak tehnologije od cijevne (I generacija ra~unara), preko tranzistorske

(druge generacije) i integrisanih kola malog i sredweg stepena integracije (tre}a

generacija ra~unara) do VLSI kola imao je vi{estruke efekte. Impresivno i

kontinualno pove}awe broja tranzistora u integrisanim kolima i pove}awe radne

frekvencije, direktno su uticali na pove}awe performansi ra~unara. Ovo je, s

druge strane, pred programere postavilo zahtjeve za boqe kori{tewe hardverskih

mogu}nosti ra~unara, {to je rezultovalo softverskim tehnikama i konceptima za

upravqawe konkurentnim doga|ajima: alokacija resursa, komunikacija i sinhroni-

zacija izme|u procesa (monitori, semafori, barijere, signali) i sl. Procesirawe

konkurentnih doga|aja je sistematski i intenzivno analizirano i prou~avano, {to

je bio jedan od temeqa za uspje{nu realizaciju paralelnih ma{ina (u naj{irem

smislu, paralelna ma{ina se sastoji iz skupa procesnih elemenata, povezanih

odre|enim komunikacionim podsistemom, koji imaju mogu}nost paralelnog rada-

procesirawa u ciqu izvr{ewa jedinstvenog posla).

Svi navedeni faktori su stvorili uslove i podlogu za paralelno procesirawe,

te za projektovawe i realizaciju prvih paralelnih ra~unara 60-tih godina (IBM

9020, Goodyears Associative Processor, ILLIAC IV, CDC 7600). Pove}awe stepena

Slavko Maric
Prvi IC proizveden 1959.god. (Jack Kilby, Texas Instruments). Sadr`ao 1 tranzistor, 1 kondenzator i nekoliko otpornika
Page 5: Skripta(1 Dio)

5

integracije omogu}ilo je implementaciju kompleksnih funkcija i koncepata na

hardverskom nivou: vektorsko i proto~no procesirawe, vi{estruke funkcionalne

jedinice i sl., {to je dalo novi podsticaj za razvoj u domenu superra~unara.

Po~etkom 80-tih godina po~iwe {ira komercijalna primjena paralelnih ra~unara

(DAP, MPP, Cosmic Cube, NCube, Alliant, Sequents Balans, Cray, CM). Napretkom

tehnologije i realizacijom kompleksnih modula na jednom kristalu, smawio se broj

osnovnih komponenata potrebnih za implementaciju jednoprocesorskog ra~unara.

Po{to je cijena ra~unara, aproksimativno, proporcionalna broju osnovnih

komponenata koje ga ~ine, do{lo je do pada cijene ra~unara po jedinici procesne

mo}i i potpune inverzije Grosch-evog zakona. Svako novo pove}awe stepena

integracije, omogu}avalo je i pove}awe broja procesora u ra~unaru, za istu cijenu.

Predvi|awe Sidney Fernbach-a je postalo realnost: aktuelni superra~unari nakon

10-20 godina postaju dio standardne ra~unarske opreme.

Danas, paralelni ra~unari preuzimaju dominaciju na tr`i{tu, iako se jo{

uvijek posti`u izvanredni rezultati na eksploataciji paralelizma u okviru jedne

centralne procesorske jedinice (superskalarni i superproto~ni procesori). Svi

glavni protagonisti u podru~ju ra~unarske tehnike sla`u se da je paralelizam

jedini na~in da se zadovoqe kontinualno rastu}i zahtjevi tr`i{ta za super brzim

i jeftinim ra~unawem. Argument za ovakvo uvjerewe je nesporan, i bazira se na

apsolutnom limitu u brzini prostirawa: brzini svjetlosti. Brzina ra~unawa

jednog procesnog elementa je limitirana frekvencijom osnovnog takta. Pove}awe

frekvencije osnovnog takta, zbog ka{wewa pri prostirawu signala (4-6 ns/m),

zahtijeva smawewe rastojawa izme|u elemenata, {to tako|e ima svoj tehnolo{ki i

fizi~ki limit. Aktuelno stawe u podru~ju ra~unara najvi{ih performansi (Sl.

1.2) potvr|uje navedene ocjene. U bliskoj budu}nosti, paralelizam }e dominirati ne

samo u superra~unarima nego i u personalnim ra~unarima, radnim stanicama i

ra~unarskim mre`ama.

Page 6: Skripta(1 Dio)

6

Iako su mogu}nost pove}awa performansi i povoqniji odnos

performansa/cijena osnovni razlozi za sve ve}u primjenu paralelnih ra~unara i

paralelne obrade, oni nisu i jedini. Paralelni ra~unarski sistemi, zbog

redundancije procesnih elemenata, imaju hardversku podlogu za mogu}nost preva-

zila`ewa otkaza, odnosno realizaciju aspekata neosjetqivosti na gre{ke. Tako|e,

ovakvi sistemi, po pravilu nude mogu}nost postepenog pove}awa performansi

sistema dodavawem novih procesorskih, memorijskih i drugih modula.

Sl. 1.2 Broj kori{tenih procesora u superra~unarima. Znakom ‘+’ su ozna~eni vektorski, a znakom ‘x’ masovno paralelni ra~unari.

Jo{ jedan va`an trend }e imati sve vi{e uticaja na na~in procesirawa: ra~unarske

mre`e. Ra~unarska mre`a povezuje fizi~ki dislocirane i heterogene ra~unare sa

mogu}no{}u me|usobne komunikacije i kori{tewa distribuiranih resursa na isti

na~in na koji se koriste lokalni resursi. Pove}awe brzine komunikacije u

ra~unarskim mre`ama (ve} su aktuelne brzine od 1000 Mb/sec u standardnim

mre`ama) i pouzdanosti mre`a, pru`i}e mogu}nost izvr{ewa programa

istovremenim kori{tewem ne samo procesora lokalnog ra~unara nego i procesora

u drugim ra~unarima u mre`i. Zbog toga, o~ekuje se da }e podru~je distribuiranog

procesirawa sve vi{e konvergovati ka oblasti paralelnog procesirawa.

Mo`e se postaviti pitawe, za{to je, i pored ubjedqivih, prethodno navedenih

argumenata, navedeni koncepti prodirali relativno sporo, posebno u podru~je

komercijalne primjene. Dva su osnovna razloga: paralelne ma{ine nisu jednostavne

za realizaciju i, paralelno programirawe je znatno te`e od sekvencijalnog.

Page 7: Skripta(1 Dio)

7

Su{tinski ciq, da se ostvari ubrzawe izvo|ewa programa ili skupa programa,

mo`e se ostvariti paralelnim procesirawem na nivou programa, zadataka-

procedura, me|uinstrukcijskom nivou i (ili) u okviru izvo|ewa jedne ma{inske

instrukcije. Eksploatacija paralelizma na najni`em nivou se realizuje

hardverski, a udio hardvera u eksploataciji paralelizma opada prema vi{im

nivoima, uz uobi~ajenu tendenciju rasta hardverskog udjela u implementaciji

rje{ewa. U ovom domenu, razli~itim tehnikama, organizacijom i povezivawem

procesnih i drugih elemenata, implementirani su kompleksni algoritmi za

automatsko prepoznavawe i izvr{ewe paralelnih operacija na instrukcionom i

me|uinstrukcionom nivou, {to je rezultovalo razli~itim arhitekturama.

Sistemski softver je morao obezbijediti podr{ku za efikasno izvo|ewe

programa u vi{eprocesorskom okru`ewu. Operativni sistemi su, pored

standardnih zahtjeva za multiprogramski rad, morali obezbijediti efikasne

mehanizme za:

• raspore|ivawe po procesnim elementima, ne samo procesa, nego i vi{estru-

kih paralelnih niti u okviru procesa,

• balansirawe optere}ewa,

• komunikaciju izme|u procesora, uzimaju}i u obzir strukturu i stawe

komunikacionog podsistema,

• mogu}nost dinami~ke rekonfiguracije u slu~aju otkaza nekog od elemenata i

sl.

Slijede}e fundamentalno pitawe je kako kreirati programe koji se izvode na para-

lelnoj ma{ini. Jasno je da je u ciqu efikasne eksploatacije paralelizma, po{to

hardver prepoznaje paralelizam uglavnom na nivou instrukcija ili grupe

instrukcija, neophodna specifikacija paralelizma na nivou programa/zadataka.

Dvije su mogu}nosti koje programeri imaju na raspolagawu: da pi{u na standardan

na~in i u standardnim programskim jezicima, a da identifikaciju paralelizma i

specifikaciju paralelnog izvo|ewa u potpunosti prepuste paralelizira-

ju}im/vektoriziraju}im prevodiocima, ili da koriste specifi~ne programske

naredbe i funkcije za eksplicitnu identifikaciju paralelizma i specifikaciju

na~ina eksploatacije. Iako je automatska identifikacija paralelizma (posebno

programskih petqi) ve} du`i period predmet intenzivnih nau~nih istra`ivawa, a

proizvo|a~i paralelnih ma{ina su ulo`ili ogromne napore i sredstva u razvoj

Slavko Maric
Gorwi limit ubrzawa koji se mo`e dobiti izvo|ewem algoritma na p – procesorskoj arhitekturi, dat je kontraverznim Amdahl-ovim zakonom : S\(p\) = � , gdje je f odnos procesnih zahtjeva za izvr{ewa ra~unawa koja se moraju izvesti sekvencijalno, u odnosu na ukupne procesne zahtjeve. Iako na prvi pogled obeshrabruju}i, pokazalo se da f � 0 \( S\(p\) � 1/p \) kada obim ra~unawa rasste \( tipi~no sa porastom ulaznih podataka\), te se f mo`e smawiti primjenom pogodnih algoritama.
Page 8: Skripta(1 Dio)

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.

Page 9: Skripta(1 Dio)

9

2

Klasifikacija ra~unarskih arhitektura

2.1 Definicija arhitektura ra~unara

Aspekt arhitekture ra~unarskih sistema tretira problem organizacije i

strukture kontrolnih funkcija, procesnih elemenata, memorijskih modula, te

sistema povezivawa. Arhitektura u osnovi defini{e podlogu za procesirawe/obra-

du i time odre|uje mogu}nosti programske nadgradwe.

S obzirom na razli~ite mogu}nosti koncepcije pojedinih elemenata

ra~unarskih sistema i wihovih veza, spektar arhitektura je bio {irok jo{ od samog

po~etka razvoja ra~unarske tehnike. Razli~iti koncepti su se preplitali u

pojedinim rje{ewima, tako da se nijedna klasifikacija ne mo`e smatrati

apsolutno adekvatnom.

Prvu klasifikaciju ra~unarskih sistema dali su J.C.Murtha i R.L.Beadless (1964), a

zatim Flynn (1966) L.C.Hobbs i D.J.Theis (1970). Najpoznatija i naj~e{}e kori{tena

klasifikacija je Flynn-ova koja kategorizuje ra~unarske sisteme na osnovu odnosa

instrukcionog toka i toka podataka na:

• SISD - ma{ine sa jednim tokom instrukcija i jednim tokom podataka,

• SIMD - ma{ine sa jednim tokom instrukcija i vi{estrukim tokom podataka,

• MISD - ma{ine sa vi{estrukim tokom instrukcija i jednim tokom podataka,

• MIMD - ma{ine sa vi{estrukim tokom i instrukcija i podataka.

Feng (1972) predla`e klasifikaciju na bazi du`ine rije~i i broja rije~i koje se

procesiraju paralelno. Konzistentnu klasifikaciju daje W.Handler na bazi razli-

Maric Slavko
Classification of parallel processors: general purpose network computers, parallel networks with common central control parallel networks with many identical processor elements which can indenpendently execute instructions Special purpose network computers sharacterized by global parallelism pattern processors associative processors nonglobal computers where each module is only semiiindependent (i.e., locally parallel) - ova klasa je za configuracije koje ne spadaju u gornje dvije grupe.
Maric Slavko
Arhitekt. se opisuje parom (x, y), gdje je x duzina rijeci, a y broj rijeci koje se mogu procesirati paralelno (32, 16) znaci da se 32 bitni podaci mogu procesirati u 16 jedinica istovremeno.
Slavko Maric
Enslow, Flores : arhitektura je odre|eno algoritmima osnovnih funkcionalnih jedinica. Josef : arh. je na~in ure|ewa strukture sistema skupom postupaka za realizaciju `eqenih ciqeva. Myers : arh. je odre|ena distribucijom funkcija po zadatim nivoima, IBM : odre|ena skupom ma{inskih/ asemblerskih instrukcija
Maric Slavko
t (computer type) = ( k, d, w) : k je broj PCU, d je broj ALU (po PCU), w je broj ELC (u okviru ALU) Exmpl.: t(C.mmp) = ( 16, 1, 16)
Page 10: Skripta(1 Dio)

10

kovawa tri nivoa procesirawa: nivo programske kontrolne jedinice (PCU) koja

interpretira instrukcije, nivo aritmeti~ko-logi~ke jedinice (ALU) koja izvodi

aritmeti~ko-logi~ke operacije, i nivo elementarnih logi~kih sklopova (ELC) koji

izvode elementarne operacije.

2.2 Hijerarhijska struktura organizacije

ra~unarskog sistema

Standardna hijerarhijska predstava ra~unarskog sistema je u obliku koncentri~nih

krugova (Sl. 2.1.)

Aplik. Softver

Sistemskisoftver

Hardver

Sl. 2.1 Hijerarhijska organizacija ra~unara

Svaki od ovih nivoa mo`e se razlo`iti na podnivoe, npr hardverski nivo mo`e se

posmatrati na:

• digitalno – logi~kom nivou i

• nivou elektronskih sklopova.

Page 11: Skripta(1 Dio)

11

2.3 Razli~iti koncepti ra~unarskih arhitektura

U ciqu poboq{awa performansi, kao {to je ve} re~eno, pored primjene

najnovijih tehnolo{kih rje{ewa nastojalo se {to vi{e operacija u toku

procesirawa izvesti istovremeno. Razli~iti koncepti u arhitekturama

ra~unarskih sistema proizlazili su iz razli~itih koncepata identifikacije i

eksploatacije paralelizma i tehnolo{kih mogu}nosti realizacije tih koncepata.

Postojawe paralelizma zna~i mogu}nost da se odre|ena ra~unawa mogu procesirati

istovremeno. Paralelizam postoji i mo`e se detektovati i eksploatisati na vi{e

hijerarhijskih nivoa. Na najvi{em nivou mo`emo posmatrati paralelizam izme|u

programa-aplikacija (me|uprogramski paralelizam). Svaki program mo`emo

posmatrati i kao ure|en skup zadataka izme|u kojih postoje relacije pretho|ewa i

izme|u kojih mo`e postojati izmjena podataka (izlazne podatke iz jednog zadatka

drugi zadatak koristi kao ulaz). Kao ni`e nivoe mo`emo identifikovati

proceduralni nivo, nivo programskih petqi ili grupa instrukcija, instrukcioni

nivo i nivo elementarnih operacija.

Na najvi{em nivou, paralelizam se jednostavno mo`e eksploatisati pridjeqi-

vawem razli~itih programa razli~itim procesorima (ili ~ak ra~unarima poveza-

nim u odgovaraju}u mre`u). Ali, i svaki program inherentno sadr`i zna~ajan iznos

paralelizma na ni`im nivoima koji se mo`e eksploatisati, i time, s jedne strane,

smawiti vrijeme izvr{ewa programa, a s druge strane boqe iskoristiti postoje}e

procesne resurse ma{ine. Ako postoji paralelizam izme|u zadataka, onda se oni

mogu procesirati istovremeno na razli~itim procesorima (s tim da svaki

procesor izvodi niz instrukcija, kojim se implementira dati zadatak, asinhrono od

drugog). Ovaj trend je vodio razvoju MIMD vi{eprocesorskih arhitektura. Na

ni`em nivou, posebno interesantne za eksploataciju paralelizma su programske

petqe, koje veoma ~esto implementiraju operacije nad nizovima podataka

(poqima/vektorima). U programskim petqama se ponavqa ista grupa operacija nad

razli~itim skupom podataka. Mnogi nau~ni problemi zahtijevali su izvr{avawe

ogromnog broja petqi nad velikim nizovima podataka. Optimalno izvr{avawe

programskih petqi, odnosno operacija nad vektorima, bio je ciq arhitektura koje

su rezultovale SIMD procesorskim poqima i vektorskim procesorima.

Page 12: Skripta(1 Dio)

12

Na nivou izvo|ewa instrukcija i grupa instrukcija, tako|e je mogu}e identifi-

kovati (i eksploatisati) zna~ajan iznos paralelizma. Na ovom nivou (procesirawa

instrukcija), najzna~ajnije tehnike za eksploataciju paralelizma su proto~na obra-

da i grupna obrada operacija sa kori{tewem vi{e funkcionalnih jedinica.

Koncept proto~ne obrade se sastoji u tome da se neka operacija razdijeli u

sekvencijalni niz podoperacija, pri ~emu se svaka podoperacija realizuje u specija-

lizovanom hardverskom sklopu (proto~nom stepenu). Niz ovih hardverskih segme-

nata ~ini proto~ni sistem. Kroz proto~ni sistem se propu{ta tok podataka. Svaki

podatak se parcijalno obra|uje u svakom proto~nom stepenu, a procesirawe podata-

ka (kompletirawe operacije) se zavr{ava po izlasku procesiranog podatka iz

proto~nog sistema (odre|ene varijacije postoje u smislu blokirawa odre|enih

segmenata pri prolazu podatka kroz proto~ni sistem, mogu}nosti premo{}avawa i

sl.). Sukcesivni podaci se obra|uju tako da se pojedine faze wihove obrade prekla-

paju u razli~itim proto~nim stepenima (Sl. 2.2). Proto~ni stepeni mogu implemen-

tirati jednu ili vi{e funkcija (multifunkcionalni proto~ni stepeni).

S1

S2

Sn

L LLL

Izlaz Ulaz

Sl. 2.2 Koncept proto~ne obrade.

Ako je ka{wewe signala kroz prihvatni registar Tl, a propagacija kroz kombina-

cionu logiku proto~nih stepeni Ti, onda je period radnog takta proto~nog sistema T

= {Ti

max i} +Tl = Tm + Tl. Frekvencija je limitirana najdu`im periodom ka{wewa

kroz kombinacionu logiku nekog stepena.

Koncept maksimalnog preklapawa operacija u proto~nim stepenima, vodio je

implementaciji proto~nih stepeni pribli`no istih kombinacionih ka{wewa,

{to se moglo realizovati za redukovani skup naj~e{}e kori{tenih optimizovanih

operacija (instrukcija), odnosno RISC procesorskim arhitekturama. Drugi koncept

istovremenog izvr{avawa vi{e operacija (instrukcija) izvorno poti~e od ideje na

kojoj se zasnivaju podacima pokretane ma{ine: sve operacije koje imaju sve podatke

Maric Slavko
Maric Slavko
feedforward / feedback connections
Slavko Maric
tj..pove}ava se radna frekvencija ??? radni materijal
Slavko Maric
PREKIDI (hazardi) U PROTO^NOJ OBRADI. granawa, prekidi ( interrupts) - upravqa~ki hazardi zavisnosti po podacima - hazardi zbog kori{}ewa podataka strukturni hazardi - konflikti zbog kori{}ewa resursa razli~ite du`ine u izvo|ewu instrukcija ( FP/ skalarne) hijerarhijska organizacija memorije
Slavko Maric
1. Instrukcijama se implementira samo jedna Load ( Load fp1, Mem(r1+r2)), Store ili registarska operacija (Add r1,r2,r3). 2. Naj~e{}e imaju integer register set, i FP reg set. 3. Sve instrukcije su fiksne du`ine. 4. Sve instr. traju 1 ciklus. 5. Redukovani broj instr. 6. Marker uslova se ne generi{e implicitno, nego eksplicitno instrukcijom 7. Zbog kompaktnosti i jednostavnosti instrukcija, jednostavniji je proces prevo|ewa. 8. Nema mikroprograma => mawa je kompleksnost 9. Ve}i su programi, potreban je ve}i broj internih registara (16, 32 i do 500). 10. Nedestruktivni registarski model ( r3 ( r1+ r 2 ) [ MSt]
Page 13: Skripta(1 Dio)

13

potrebne za izvr{ewe ~ine trenutno slobodan skup operacija koji je spreman za

izvo|ewe; skup procesora preuzima izvo|ewe operacija, nakon ~ega se generi{u

novi izlazni podaci i novi skup slobodnih operacija, spremnih za izvo|ewe u

narednom ciklusu.

Sli~no prethodno navedenom, kod ma{ina pokretanih kontrolnim tokom, niz

instrukcija se mo`e izvesti paralelno (slobodan skup), ako ne postoji zavisnost po

podacima (direktna, izlazna ili antizavisnost). U nizu sukcesivnih instrukcija

koje ne produkuju granawa (bazi~ni blok), prosje~an broj slobodnih operacija je ~ 3.

Pove}awe prosje~nog broja slobodnih operacija posti`e se eksploatacijom

paralelizma van bazi~nih blokova . Ovaj koncept vodio je razvoju ma{ina sa

velikom du`inom rije~i (VLIW-very large instruction word), pri ~emu se vi{e

nezavisnih operacija kodira u jednu VLIW instrukciju i sve se izvode istovremeno

(na vi{e izvr{nih jedinica). Prepoznavawe skupa slobodnih operacija u programu,

te planirawe wihovog izvr{ewa i kodirawe u VLIW instrukciju vr{i prevodilac

u fazi prevo|ewa.

Koncept istovremenog izvr{avawa vi{e instrukcija vodio je ekstenziji RISC

arhitektura ka superskalarnim ma{inama. Redoslijed izvo|ewa i mapirawe izvo-

|ewa instrukcija po procesnim resursima odre|uje se dinami~ki (sa mogu}no{}u

prekorednog izvo|ewa). Predikcija granawa vr{i se dinami~ki, na bazi stawa

automata za granawe pojedinih instrukcija, koja se vode u posebnoj, brzoj memoriji,

sa vjerovatno}om poga|awa do 95%. Aktuelni superskalarni procesori standardno

koriste proto~nu obradu u pojedinim funkcionalnim jedinicama. Postoji

rasprostraweno uvjerewe da }e ove arhitekture dominirati u narednom periodu

razvoja ra~unarske tehnike i da }e drugi aspekti imati malo uticaja na budu}i

razvoj istih. Ipak, budu}i da je paralelno procesirawe izrazito invazivno i da

prodire u sve aplikativne domene, od superprocesirawa do ugra|enih ra~unarskih

sistema, postoje tako|e sna`ni argumenti da postoje}e arhitekture moraju

evoluirati u pravcu podr`avawa generalnog modela za paralelno procesirawe. S

obzirom na ogromne investicije ulo`ene u razvoj postoje}ih sistema i na ~iwenicu

nastavka trenda rasta performansi postoje}ih tipova arhitektura, prirodno je

o~ekivati da }e u bliskoj budu}nosti proces te}i u pravcu kombinovawa postoje}ih

rje{ewa u ciqu {to ve}e eksploatacije paralelizma na svim hijerarhijskim

nivoima.

Slavko Maric
GRANAWA : prosje~an broj instrukcija bez granawa je ~ 7.5. 66% bazi~nih blokova sadr`i mawe od 7.5 instr. u baz. bloku ~ broj instr. granawa je 25%, od toga su 75% uslovna granawa
Slavko Maric
- du`ina instrukcije : x*100 bita, fiksni format, - grupisawe operacija u VLIW instrukciju vr{i kompajler jedinsstveno dekodirawe instrukcija ako je paralelizam mawi od broja mogu}ih operacija u VLIW instr., koristi se NOP instr. -> gubitak prostora i smawewe efikasnosti eksploatacije.
Slavko Maric
UPRAVQA^KI HAZARDI - smawewe cijene. Zaka{weno granawe : Nakon detekcije granawa, jedan broj instrukcija nastavqa da se izvodi i izvr{ava. Ubacuju se korisne ili NOP instrukcije. Ranije odre|ivawe granawa : pretpostavka je da se pipeline resetuje sa branch instr. Novi niz instr. prije }e se o~itati ako se ranije odredi adresa i uslov granawa. Predikcija granawa : logika (h ili s) koja predvi|a granawe. Dobavqaju se instrukcije sa predikovane grane. Ako gre{ka, izvr{ewe instrukcija se mora poni{titi. Vi{estruko pribavqawe : Pribavqaju se oba puta, a procesor iskqu~uje nekorektan kod kada uslov bude poznat. paralelno izvr{ewe granawa : Uzima se stati~ki predikovana instrukcija granawa, i ako nije OK poni{tava se izvr{ewe i uzima instrukcija sa alternativne adrese.
Slavko Maric
Skra}uje se ciklus ma{ine u odnosu na osnovnu skalarnu ma{inu na l/m, uz pove}awebroja instrukcija koje se istovremeno izvr{avaju).
Page 14: Skripta(1 Dio)

14

U ciqu kratkog pregleda ra~unarskih arhitektura izvr{ena je klasifikacija

data slikom 2.3.

Paralelni ra~. sistemi

Upravqanikontrolnim tokom

Upravqani podacima Upravqanizahtjevima

SIMD MISD MIMD

Vektorski Paralelni Visoko paralelni Labavo spregnuti

Multiprocesori

Multira~unari

Lokalnera~un. mre`e

Distribuirani sistemiAsocijativni

Sistoli~ni

Jednoprocesorski. sistemi

Sl. 2.3 Klasifikacija ra~unarskih arhitektura.

Page 15: Skripta(1 Dio)

15

3. Klasična, Von-Noemanova arhitektura računara

3.1 Koncept Von-Noemanovog računara

Von-Noemanova arhitektura računara je izvanredno strukturirana: na najvišem nivou apstrakcije

predstavlja se jednostavnim i razumljivim dijagramom (Sl. 3.1).

I/O MEMORIJA

CPU

Sl. 3.1

Memorija promjenljivog sadržaja, sadrži ne samo podatke/rezultate računanja, nego i

program (skup instrukcija/akcija) koji se izvodi. Ovaj koncept je omogućio univerzalnost i

jednostavnost primjene računara: novi aplikativni zadatak može da se izvede na računaru samo

punjenjem drugog programa u memoriju i pokretanjem njegovog izvršenja. Centralna procesna

jedinica (CPU) dobavlja instrukcije iz memorije i izvodi ih jednu za drugom. Instrukcije sadrže

informacije kako o vrsti operacije/akcije, tako i o operandima nad kojima se akcija izvodi.

Distinkcija između instrukcija i podataka u memoriji i određivanje sekvence izvođenja je

ostvarena korištenjem programskog brojača (PC). Nakon završetka izvođenja neke instrukcije,

vrijednost programskog brojača specifikuje memorijsku adresu slijedeće instrukcije koja će se

izvesti. Na ovaj način postoji sekvencijalni tok kontrole (određen nizom sukcesivnih vrijednosti

programskog brojača) koji upravlja izvršenjem programa. Dakle, u toku izvođenja, postoji jedan

Page 16: Skripta(1 Dio)

16

tok (niz) instrukcija koje se izvode nad odnosnim tokom (nizom) podataka. Iz navedenog razloga,

ovaj tip arhitektura po Flyn-ovoj klasifikaciji spada u grupu SISD (single instruction-single data)

računara.

Ovaj jednostavan koncept omogućio je da se kompleksan sistem, kao što je računar sa svojim

procesima, uspješno analiziraju, te da se sistematski rješavaju odnosni problemi.

3.2 Princip organizacije SISD računarskih sistema

Globalni blok dijagram SISD računara dat je na sl. 3.2. Osnovni funkcionalni elementi su, kako je

to naznačeno i u dijelu 3.1, Centralna procesna jedinica (CPU), memorija i ulazno/izlazni

(pod)sistem

Sl. 3.2

Izvršna jedinica

.

Program koji računar izvodi, nalazi se u glavnoj memoriji računara. Program u glavnoj memoriji

može biti trajno upisan (u memoriju sa trajnim sadržajem ROM-EPROM), ili se puni u glavnu

memoriju (RAM) sa sekundarne memorije (koja je takođe memorija sa trajnim sadržajem),

sistemskim programom. Prva varijanta je karakteristična za specijalizovane računare za

upravljanje procesima koji rade u otežanim eksploatacionim uslovima, dok je druga varijanta

karakteristična za računare opše namjene.

Page 17: Skripta(1 Dio)

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.

Page 18: Skripta(1 Dio)

18

Navedeni osnovni moduli računara međusobno komuniciraju preko skupa prenosnih puteva

(linija) - magistrale. Broj prenosnih linija kojima se istovremeno mogu prenositi informacije

određuje širinu magistrale (u bitima).

3.2.1 Organizacija i struktura centralne procesne jedinice (CPU)

Osnovna funkcija CPJ je da izršava program smješten u glavnoj memoriji. Osnovni

funkcionalni blokovi CPJ su upravljačka jedinica i izvršna jedinica (u literaturi poznata i kao

staza podataka – data path). Upravljačka jedinica vrši pribavljanje instrukcija iz memorije,

njihovo dekodiranje i generisanje upravljačkih signala za izvršnu jedinicu (pribavljanje podataka i

instrukcija iz memorije se može realizovati i posebnom funkcionalnom jedinicom). Izvršna

jedinica izvršava operacije predviđene datom instrukcijom. Podaci u okviru CPU cirkulišu

jednom ili više skupina linija – internih magistrala.

Detaljnija blok šema procesora data je na sl. 3.4.

Reset

+1 PC

Sl. 3.4 Blok šema CPJ

Page 19: Skripta(1 Dio)

19

33..33 Izvršna jedinica

Izvršna jedinica sadrži aritmetičko-logičku (ALU) i druge funkcionalne jedinice za

manipulaciju podacima, registre, pomjerače, generator adrese i komunikacione puteve

između njih. Kada postoji više puteva podataka na ulazu/izlazu neke komponente,

neophodna su upravljačka kola za selekciju podataka na odgovarajućim putevima

(upravljačke tačke). Upravljačka tačka je prekidač puta podataka koja, na bazi upravljačkog

signala, dozvoljava ili blokira prenos podataka na odgovarajućem prenosnom putu. Na sl 3.5 dat

je principijelni primjer implementacije upravljačkih tačaka na ulazu/izlazu jedne funkcionalne

jedinice CPU-a.

3.5

3.5

Sl. 3.5 Upravljačke tačke procesora

Upravljačke tačke pripadaju upravljačkoj jedinici, a sami putevi za prenos podataka izvršnoj

jedinici. MDR (memory data register) je interni registar preko kojeg se vrši upis podataka u

glavnu memoriju, odnosno čitanje podataka iz glavne memorije. On služi kao bafer između CPJ i

memorije pri prenosu podataka između ovih jedinica. MAR (memory address regeister) je takođe

interni registar, preko kojeg se postavlja adresa memorijske lokacije koja se referencira (za čitanje

ili upis). Transfer podataka iz memorije u registar se odvija u slijedećim koracima:

(MDR) Mem[MAR],

Page 20: Skripta(1 Dio)

20

(Rx) (MDR).

Kao što je prethodno rečeno, ALU i druge funkcionalne jedinice (pomjerači, množači,

floating-point jedinice, grafičke jedinice itd.) vrše aritmetičko-logičke operacije nad podacima-

operandima predviđene instrukcijom.

3.3.1 Registri

Registri se u procesoru koriste za prihvat i čuvanje rezultata nakon izvršenja operacija u

funkcionalnim jedinicama procesora, za prihvat podataka iz memorije, te za transfer

podataka/međurezultata iz procesora u memoriju. Sastoje se iz elemenata koji mogu imati dva ili

više stabilnih stanja. Mogu se realizovati na različite načine: kao flip-flopovi, kola koja čuvaju

informaciju kao električni tovar na gejtu ili kapacitetu određenog tipa FET-a, kao skup prekidača

(fiksnog ili izmjenljivog stanja) itd. Između bitova registara može postojati određena logika, koja

može vršiti određene operacije između susjednih bitova registra (npr. kopiranje sadržaja

prethodnog/narednog bita u tekući bit registra, čime se ostvaruje pomjeranje sadržaja u registru,

odbrojavanje na više, na niže itd.).

Skup registara CPJ, čije stanje nakon izvršenja neke instrukcije može imati uticaja na

izvršenje slijedeće instrukcije naziva se programski model procesora. Ovo iz razloga što je za

programiranje na 'najnižem' nivou dovoljno poznavanje programskog modela procesora, odnosno

uloge i funkcije svakog registra iz programskog modela. MAR i MDR su interni registri, i ne

pripadaju programskom modelu procesora. S obzirom da stanje ovih registara može imati uticaj

na izvršenje slijedeće instrukcije, programski model se mora sačuvati u slučaju suspenzije

izvršenja programa (zbog prekida npr.), i restaurirati nakon završetka suspenzije i prije nastavka

izvođenja suspendovanog programa. Ostali registri CPJ se mogu svrstati u grupu internih

registara.

Registri programskog modela

Ovi registre se mogu svrstati u slijedeće grupe:

• Programski brojač. Neposredno prije početka pribavljanja i izvršenja instrukcije, ovaj

registar sadrži memorijsku adresu instrukcije koja treba da se izvrši.

• Registri opšte namjene. Ovi registri se generalno mogu referencirati u svim instrukcijama

koje koriste registre: kako za speifikaciju operanada tako i za specifikaciju adresa. Ipak, u

praksi obično postoje ograničenja na generalnost primjene ovih registara.

Page 21: Skripta(1 Dio)

21

• Registri za podatke. Ovi registri mogu prihvatati podatke i njihov sadržaj se može

koristiti kao operandi u operacijama specifikovanim instrukcijama. Ovi registri se ne

mogu koristiti za specifikaciju adrese.

• Adresni registri. Koriste se za specifikaciju adrese operanada/instrukcija. Svaka

instrukcija (sa izuzetkom instrukcije NOP – No Operation) ili vrši određene operacije nad

operandima, ili vrši transfer kontrole izvođenja programa na instrukciju čija lokacija u

memoriji nije neposredno iza tekuće instrukcije (instrukcije grananja). Lokacije

operanada i slijedeće instrukcije dobijaju se u procesu sračunavanja efektivne adrese

(operanada, instrukcije), a ovaj proces zavisi od primijenjenog načina adresiranja u

odnosnoj instrukciji. Razumijevanje načina adresiranja i formiranja efektivne adrese je od

ključnog značaja za proces programiranja na asemblerskom nivou. Neki registri se u

instrukcijama pri formiranju efektivne adrese koriste inherentno, a neki eksplicitno

(moguće je korištenje više registara za specifikaciju adrese istovremeno). Postoji više

varijanti adresnih registara, prema njihovoj ulozi u formiranju efektivne adrese:

− Segmentni registri (Intel 8086, … ). Efektivna adresa se formira

kombinacijom sadržaja odnosnog segmentnog registra koji pokazuje na

početak segmenta (bazna adresa) i ofseta – odstojanja od početka segmenta

koji se formira zavisno od adresnog načina. Korištenje ovih registara je

podrazumijevajuće, ali se može navesti i eksplicitna upotreba registra kojom

se poništava podrazumijevajuća upotreba (segment override)

− Indeksni registri. Mogu se koristiti kao indeks u neko polje čiji je početak

određen baznom adresom. Obično ovi registri imaju mogućnost auto-

inkrementiranja odnosno auto-dekrementiranja.

− Bazni registri. Njihova uloga je suštinski ista kao segmentnih registara, izuzev

što se ovi registri eksplicitno navode pri specifikaciji instrukcije.

− Pokazivač steka. Ovaj registar pokazuje na vrh LIFO steka na koji se

automatski smještaju podaci pri pozivu potprograma ili pri ulasku u proces

poslužianja prekida. Takođe se stek može koristiti za privremeno smještanje

podataka korištenjem odgovarajućih instrukcija (PUSH, PULL/POP). U ovim

primjenama uloga pokazivača je podrazumijevajuća. Ovaj registar se najčešće

Page 22: Skripta(1 Dio)

22

može i eksplicitno specifikovati (u instrukcijama kojima se inicijalizira ili

čuva sadržaj pokazivača).

• Statusni registar. Ovaj registar sadrži markere (flags, condition codes), koji se

postavlja se obično ju za indikaciju rezultata prethodne operacije. Npr. nakon

izvršenja neke aritmetičke operacije rezultat može biti pozitivan, negativan, nula,

može se desiti prenos (carry) ili preljev/premašaj opsega. Često je nakon ovih

aritmetičkih operacija potrebno testirati rezultat izvršenja i donijeti odluku o

daljem pravcu procesiranja na osnovu rezultata testiranja (npr. za slučaj preljeva,

potrebno je pozvati neku rutinu za procesiranje grešaka). Za ovo se koriste

instrukcije grananja zavisno od uslova (BNE, BPO, JE, …). Ove instrukcije kao

ulazne parametre koriste stanje markera u statusnom registru. Standardni markeri

u statusnim riječima procesora su:

− Sign (Znak). Bit koji označava znak (pozitivan/negativan) rezultata prethodne

operacije.

− Zero (Nula). Bit koji je postavljen ako je rezultat prethodne operacije 0.

− Carry (Prenos). Ovaj bit se može postaviti različitim instrukcijama, npr.

prenosom kod sabiranja iz bita najviše težine (odnosno 'pozajmljivanjem' kod

oduzimanja), pomjeračkim instrukcijama te eksplicitnim postavljanjem

statusnog registra.

− Overflow (Preljev/premašaj). Ovaj bit se postavlja kada se rezultat operacije

(npr. sabiranja) ne može predstaviti brojem raspoloživih bita registra.

− Interrupt enable (Omogućenje prekida). Ovim bitom se dozvoljava/

onemogućuje prekid izvršenja programa eksternim zahtjevom. U slučaju da je

prekid dozvoljen i da postoji zahtjev za prekid, procesor nakon kompletiranja

tekuće instrukcije čuva tekući kontekst/stanje izvršenja (ili neophodni dio tog

konteksta) i započinje izvršenje rutine za servisiranje prekida (interrupt

service routine). Ukoliko postoji više ulaznih linija u procesor različitih

prioriteta kojima se može zahtijevati prekid tekućeg izvođenja i servisiranje

zahtjeva, u tom slučaju u statusnom registru postoji više bita kojima se

određuje minimalni prioritet zahtjeva koji će biti poslužen.

Page 23: Skripta(1 Dio)

23

− Biti privilegovanog režima. Ovim bitima se može specifikovati režim

izvođenja instrukcija: tipično korisnički režim (koji je efektivan kada se izvodi

korisnički program) ne može izvoditi sve instrukcije iz repertoara procesora.

U supervizorskom režimu procesor izvodi sve instrukcije iz svog repertoara.

Moguće je postojanje i režima rada sa privilegijama između dva navedena

slučaja.

Interni registri

Interni regstri su registri koje procesor interno koristi za privremeno smještanje i baferovanje

podataka u procesu pribavljanja i izvršenja instrukcije. Stanje ovih registara nakon izvršenja neke

instrukcije ne utiče na izvršenje slijedeće instrukcije. Npr. MAR (memory address register) se

koristi postavljanje memorijske adrese sa koje se vrši očitavanje podatka/instrukcije, odnosno na

koju se vrši upis podatka. Nakon što se adresa (generisana generatorom adresa) postavi u MAR,

transfer podatka između procesora i memorije se vrši aktiviranjem upravljačkih signala za čitanje/

upis memorije (Mem_Read, Mem_Write). Ukoliko se vrši upis u memoriju, prethodno se podatak

mora postaviti u MDR (memory data register). Nakon čitanja iz memorije, podatak se takođe

prvo smješta u MDR, a zatim se prosljeđuje u registar ili ulaz ALU.

Npr. ako se izvodi instrukcija

ADD Rx, displ[Bx],

koja vrši sabiranje sadržaja registra Rx i memorijske lokacije određene baznom adresom

(sadržane u registru Bx) i odstojanjem displ od početka te adrese, onda:

• generator adresa prvo sračunava efektivnu adresu EfADR = (Bx) + displ,

• (MAR) EfADR, • (ΜDR) Mem[MAR], • (Rx) (Rx) + (MDR). (ALU u jednom ciklusu sračunava zbir operanada koji su

dovedeni na ulaz – Rx i MDR, te vraća rezultat u odredišni registar (Rx).

3.3.2 Interne magistrale

Internim magistralama se prenose podaci, adrese i upravljački signali u okviru centralne

procesne jedinice. U cilju postizanja većih brzina, broj internih (on chip) magistrala je po pravilu

veći od spoljnih. U slijedećem primjeru su date varijante organizacije centralne procesorske

jedinice sa različitim brojem internih magistrala.

Page 24: Skripta(1 Dio)

24

Page 25: Skripta(1 Dio)

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

Page 26: Skripta(1 Dio)

25

33..33 Upravljačka jedinica

Upravljačka jedinica generiše signale za upravljanje svim aktivnostima u okviru CPJ,

kontrolom upravljačke jedinice se vrši dobavljanje instrukcije iz memorije, njeno

dekodovanje i identifikacija operacije koju je potrebno izvršiti, identifikacija i prenos

operanada od izvorišta do funkcionalnih jedinica gdje se zahtijevana operacija izvodi, te

vraćanje rezultata na odredište. Ovaj proces se pod kontrolom upravljačke jedinice

ponavlja pri izvođenju svake slijedeće instrukcije. Dakle, upravljačka jedinica djeluje kao

'komandni centar' iz kojeg se upravlja radom ostalih jedinica sistema, a u svrhu izvršenja

niza mašinskih instrukcija – programa čime se realizuje željena funkcija - algoritam.

Da bi upravljačka jedinica ostvarila ove zadatke, ona mora da:

• obezbijedi korektan redoslijed izvršenja instrukcija (sekvenciranje instrukcija),

• generisanjem potrebnih signala obezbijedi izvršenje selektovane instrukcije.

Sekvenciranje instrukcija

Kao što smo prethodno naveli, procesor izvodi niz instrukcija (elementarnih akcija sa

stanovišta asemblerskog programiranja) iz skupa mašinskih instrukcija procesora. Skup

mašinskih instrukcija može biti različit (minimalni skup kojim se može realizovati svaki

algoritam je skup koji se sastoji iz (M. L. Minsky, 1967):

• instrukcije ADD ONE (dodaj jedan) i,

• instrukcije DECREMENT AND JUMP IF ZERO (umanji sadržaj za jedan uz

grananje ako je rezultat 0).

Podrazumijeva se da se iza prve instrukcija (ADD ONE) u sekvencijalnom programu

može izvesti samo jedna (slijedeća sekvencijalna instrukcija), tj. da ona ima samo jednog

nasljednika, dok se nakon izvršenja druge instrukcije (DECREMENT AND JUMP IF

ZERO) izvodi jedna od dvije moguće 'slijedeće' instrukcije, zavisno od rezultata

izvršenja. Druga instrukcija spada u grupu instrukcija grananja. U praksi je broj

instrukcija prvog tipa znatno veći od drugog (¨približno je 20% instrukcija grananja).

Logika za određivanje lokacije slijedeće instrukcije, nakon izvođenja instrukcije I1

prvog tipa, je jednostavna: ako PC pokazuje na lokaciju instrukcije I1, onda:

Page 27: Skripta(1 Dio)

26

• na osnovu operacionog koda i načina adresiranja instrukcije I1, može se utvrditi

broj bajta w instrukcije I1,

• ako je slijedeća instrukcija koja treba da se izvede smještena neposredno iza I1,

onda se njena adresa može odrediti novom vrijednošću PC-a:

PC PC+ w.

Kod instrukcije grananja, ukoliko je rezultat izvršenja takav da je potrebno izvršiti

instrukciju koja se ne nalazi iza same instrukcije nego na mjestu MX, onda sama

instrukcija grananja sadrži informacije (način adresiranja, registri koji se koriste za

specifikaciju adrese, ofseti i slično) na osnovu kojih se sračunava vrijednost MX

(efektivna adresa) tako da je proces sračunavanja adrese slijedeće instrukcije slijedeći:

• na osnovu operacionog koda i načina adresiranja instrukcije I1, utvrđuje se broj

bajta w instrukcije,

• ukoliko je uslov testiranja istinit, onda se na osnovu adresnog načina sračunava

MX i PC MX; u suprotnom PC PC+ w.

Pored prenosa upravljanja sa sukcesivnog toka instrukcija na instrukciju koja nije u

nizu instrukcijama grananja (koje mogu biti instrukcije uslovnog ili bezuslovnog

transfera), ovaj prenos se standardno u računarskim sistemima može realizovati

instrukcijama za poziv potprograma (instrukcije tipa CALL, JSR ili slično), ili

događajem prekida. Tipično, u ovim slučajevima, prenos upravljanja je privremen, i

vraća se na tačku gdje se prekid desio nakon završetka potprograma ili obrade prekida.

Izvođenje instrukcija

Izvođenje instrukcija se realizuje tako što upravljačka jedinica generiše niz upravljačkih

signala u pravo vrijeme i u korektnoj sekvenci, koji upravljaju radom izvršne jedinice

procesora. Ovi signali su:

• interni upravljački signali (koji upravljaju radom sklopova u okviru CPU-a),

• spoljni upravljački signali (signali tipa MR, MW, IOR, IOW, statusni signali

procesora),

• spoljni ulazni upravljački signali (signali tipa Reset, Ready, BussError itd.),

Page 28: Skripta(1 Dio)

27

• instrukcija – signali na ovim linijama ukazuju na tip operacije koja treba da se

obavi (Sl. 3.6).

6

Tipovi upravljačkih jedinica

Dve su varijante realizacije upravljačke jedinice:

• direktno upravljanje. Logičkom mrežom se generišu kontrolni signali u

predefinisanom redoslijedu za svaku mašinsku instrukciju (hardwired/konvencionalni

pristup),

• mikroprogramsko upravljanje (Wilkis 1953). Kontrolni signali se generišu izvršenjem

mikroinstrukcija zapisanih u internoj mikroprogramskoj memoriji procesora.

Izvođenje svake mašinske instrukcije (koja ima svoj asemblerski ekvivalent) se

realizuje nizom elementarnih akcija koje se implementiraju mikroinstrukcijama.

Prednost direktnog upravljanja je brzina a mikroprogramskog jednostavnost

realizacije i izmjena/otklanjanja grešaka u projektovanju. Mikroprogramsko upravljanje

takođe daje veću fleksibilnost u smislu mikroprogramske implementacije specijalnih

rutina (korisničkih, dijagnostičkih i dr.), mogućnost emulacije procesora starijih

generacija ili drugih procesora itd.

Page 29: Skripta(1 Dio)

28

Upravljačka jedinica sa direktnim upravljanjem.

Varijante ovog tipa upravljačkih jedinica su upravljačke jedinice zasnovane na:

• tabeli stanja,

• elementima za kašnjenje

• brojačkoj sekvenci.

Prilikom izvođenja instrukcije procesor prolazi kroz niz internih stanja. Na osnovu

tekućeg stanja i skupa ulaznih signala, generišu se izlazni signali i procesor prelazi u

novo stanje. Dio generisanih izlaza se koristi kao ulazni signali sljedećeg stanja. Logika

rada, može se predstaviti tabelom stanja, kojom se opisuje prelazi procesora kroz interna

stanja. Na Sl. 3.7 vrste u tabeli odgovaraju internim stanjima iz skupa Sint. Kolone u tabeli

odgovaraju podskupovima ulaznih signala bj A⊂ ul. Iz stanja Si pod dejstvom podskupa

ulaznih signala bj prelazi se u novo stanje Sij, pri čemu se aktiviraju ulazni signali

definisani sa aij ⊂ Aiz.

Sl. 3.7 Tabela stanja upravljačke jedinice

Problem sa realizacijom upravljačke jedinice upravljane na bazi tabele stanja je u veličini

tabele, zbog velikog broja mogućih stanja i velikog broja stanja ulaznih signala.

Upravljačka jedinica zasnovana na elementima za kašnjenje

Kod ovog koncepta upravljačkih jedinica, polazi se od dijagrama toka rada upravljačke

jedinice. Za reprezentaciju n stanja sistema koristi se n-bistabilnih elemenata; jedan

element po stanju.

Page 30: Skripta(1 Dio)

29

U datom trenutku aktivan je samo jedan bistabilni element i taj ukazuje na tekuće stanje.

Prelaz u novo stanje se može predstaviti podskupom osnovnih koncepata dijagrama toka,

pri čemu se svaki od ovih koncepata implementira odgovarajućim upravljačkim kolom

(Sl.3.8)

Nedostatak ove metode je u velikom broju flip-flopova koji se koriste za reprezentaciju

stanja sistema, odnosno elemenata za kašnjenje. Sličan koncept realizacije je koncept

zasnovan na brojačkoj sekvenci.

Sl. 3.8 Realizacija koncepata dijagrama toka upravljačkim kolima

Metoda brojačke sekvence

Upravljačka jedinica ovog tipa pretpostavlja izvršenje mašinske instrukcije u k koraka. U

i-tom koraku aktivira se neki skup upravljačkih linija korištenjem odnosnog faznog

impulsa Φi. Fazni impulsi Φi (i = 1, …, k) generišu se kolom 'brojač sekvenci'. Sukcesivni

impulsi na izlazu brojača sekvenci su vremenski pomjereni za vrijeme trajanja impulsa

Page 31: Skripta(1 Dio)

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

Page 32: Skripta(1 Dio)

31

Primjer generisanja upravljačkih signala pri izvođenju ADD instrukcije hipotetičkog

procesora metodom brojačke sekvence, dat je u tekstu koji slijedi. Dio staza podataka

hipotetičkog procesora prikazan je na sl. 3.11 (1.2MP). Kontrolne tačke su predstavljene

kružićima. Sadržaj registra iz registarskog skupa, specifikovanog A-adresom ili B-

adresom se prosljeđuje na odnosnu magistralu (A ili B) tako da se oni pojavljuju na ulazu

ALU kao operandi. Izlaz iz ALU-a ide na D-magistralu, i može se kopirati u registar

specifikovan B-adresom. Za selekciju registra A i B koriste se kontrolni signali 1 i 2, za

kopiranje izlaza ALU signal 3, za očitavanje/upis sadržaja registra kontrolni signal 4 i za

specifikaciju ALU operacije signali 5 – 8.

Sl. 3.11 Staze podataka hipotetičkog procesora

Pretpostavimo da ADD instrukcija hipotetičkog procesora ima format:

Page 33: Skripta(1 Dio)

32

OPCODE ADD A-adresa B-adresa

pri čemu A i B adrese specifikuju odnosni registar u registarskom skupu. ADD

instrukcija se može definisati kao što slijedi:

Dodaj sadržaj registra specifikovanog A-adresom sadržaju registra

specifikovanog B–adresom, i smjesti rezultat u registar određen B-

adresom.

Pretpostavimo da je instrukcija već raspoloživa u registru (instrukcioni registar).

Vremenski dijagrami signala potrebnih za implementaciju gornje instrukcije, zajedno sa

osnovnim taktom i faznim signalima Φ1 - Φ4, dati su na Sl. 3.12.

Sl. 3.12 Vremenski dijagrami upravljačkih signala za implementaciju ADD instrukcije

Page 34: Skripta(1 Dio)

33

ADD operacija se implementira slijedećom sekvencom događaja:

Φ1 a. Omogući A-adresu: Ovim se postavlja prvi operand na ulaz ALU

b. Omogući B-adresu: Ovim se postavlja drugi operand na ulaz ALU

c. Postavi ALU kontrolu: Ovim se specifikuje operacija za izvršenje u ALU

Φ2 a. Omogući A-adresu: Zadrži A - vrijednost na ulazu ALU-a

b. Omogući B-adresu: Zadrži B - vrijednost na ulazu ALU-a

c. Omogući D-prihvatnik (leč): Proslijeđivanje rezultata na D-magistralu

d. Postavi ALU kontrolu: Zadrži ALU OPCODE

Φ3 a. Onemogući A-adresu: (posto više nije potrebna)

b. Omogući B-adresu: Za upis sadržaja D – magistrale u B registar

c. Onemogući D-prihvatnik (leč): (više nije potrebna)

d. Omogući upis: Omogućava upis D – magistrale u B registar

Φ4 Onemogućenje svih signala: Kraj operacije

Page 35: Skripta(1 Dio)

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.

Page 36: Skripta(1 Dio)

35

Sl. 3.14 Korespondencija između metode zasnovane na kašnjenju i metode zasnovane na upravljačkoj sekvenci

Page 37: Skripta(1 Dio)

38

Kao što je prethodno rečeno, mikroinstrukcije sadrže skup mikrokomandi koje

kontrolišu izvršenje skupa mikrooperacija u toku mikroinstrukcionog ciklusa. Ukoliko se

svakom mikroinstrukcijom kotroliše izvršenje samo jedne mikrooperacije, onda se radi o

vertikalnim mikroinstrukcijama, a ako se jednom mikroinstrukcijom može specifikovati

izvršenje više mikrooperacija, onda se radi o horizontalnim mikroinstrukcijama.

Prednost vertikalnih mikroinstrukcija je u:

• maksimalnom iskorištenju mikroinstrukcione riječi, jer se specifikuje samo

operacija koja se izvodi,

• mikroprogramiranje je jednostavno zbog jednostavnosti formata mikroinstrukcija.

Nedostatci vertikalnog mikroprogramiranja su u relativno dugim sekvencama

mikroinstrukcija, što implicira duže vrijeme izvršenja mikroprograma i što nema

mogućnost paralelnog izvođenja mikrooperacija.

Često se pod horizontalnim mikroinstrukcijama podrazumijeva maksimalni

paralelizam operacija, što podrazumijeva korištenje većeg broja različitih polja u okviru

mikroinstrukcije. Balansirani pristup koristi manji broj polja za specifikaciju mikro-

operacija nego kod horizontalnih mikroinstrukcija; ovaj format mikroinstrukcija se često

referiše terminom dijagonalni format (dijagonalne mikroinstrukcije). Dok je broj

različitih polja kod vertikalnih mikroinstrukcija 1-3, horizontalnih veći od 6, kod

dijagonalnih instrukcija broj različitih polja je od 4-6.

Ukoliko se u mikroprogramskoj memoriji nalazi veliki broj mikroinstrukcija koje se

ponavljaju (ako je ukupan broj mikroinstrukcija n, broj različitih mikroinstrukcija je m pri

čemu je često m << n) onda se može primijeniti koncept nanoprogramiranja. Kod ovog

koncepta, konvencionalna mikroprogramska memorija se zamjenjuje mikroprogramskom

memorijom od n riječi. Svaka riječ sadrži samo adresu mikroinstrukcije u nanomemoriji

(te je , s obzirom da imamo m različitih mikroinstrukcija, dužina ove mikroprogramske

riječi log2m bita). Na ovaj način se smanjuje zahtjev za ukupan kapacitet memorije

mikroprograma (Sl. 3.15).

Page 38: Skripta(1 Dio)

39

Sl. 3.15 Konvencionalni i nanoprogramski koncpet realizacije mikroprogramske

memorije

Page 39: Skripta(1 Dio)

40

33..44 Ulazno/Izlazni podsistem

3.4.1 Povezivanje procesora sa okolinom

Fizičko povezivanje mikroprocesora sa okolinom realizuje se preko električki

provodljivih nožica – pinova. Preko pinova se realizuje napajanje procesora, taktna

pobuda te prenos signala za komunikaciju sa memorijom i U/I podsistemom. Putevi koji

povezuju pinove procesora sa ostalim dijelovima sistema čine spoljašnu magistralu

procesora. Različiti procesori mogu imati određene specifičnosti u pogledu broja i

funkcija pojedinih linija. Za ilustraciju, primjer linija za povezivanje hipotetičkog

procesora dat je na sl 3.16.

Sl. 3.16

3.4.2 Princip povezivanja sa U/I podsistemom

Računar komunicira sa spoljnim svijetom (ljudi, industrijski procesi itd.) preko

ulazno/izlaznih jedinica (uređaja). S obzirom na primjenu računara u svim oblastima

ljudske djelatnosti, razvijen je veliki broj periferijskih uređaja sa kojima računar može da

komunicira. Mnogi od ovih uređaja postali su standardni dio računarskih sistema. I pored

Page 40: Skripta(1 Dio)

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

Page 41: Skripta(1 Dio)

42

Principijelna blok šema U/I interfejsa prikazana je na sl. 3.18

Sl. 3.18 Blok šema U/I interfejsa

Iako memorijski i U/I podsistem mogu da dijele određene linije i adresa i podataka,

oni su logički razdvojeni: određene kontrolne linije specifikuju da li se operacije odnose

na U/I ili memorijski podsistem. Npr. pri generisanju U/I adrese 5, na adresnim linijama

će se pojaviti vrijednost 5, ali će aktivan biti kontrolni signal za komunikaciju sa

periferijama (M/IO u logičkoj 0 ), a pri generisanju memorijske adrese 5, pored iden-

tičnog sadržaja na adresnim linijama, na kontrolnim linijama signal M/IO biće u stanju

logičko 1.

I pored standardizacije tehnika povezivanja U/I uređaja sa računarima problemi kod

povezivanja proističu iz razlike u: brzini periferija; broju bita prenosa; specifičnom

načinu zapisivanja/predstavljanja podataka; tipovima dozvoljenih operacija, načinu

detekcije i reakcije na pojave grešaka itd. Zbog tih specifičnosti, nije racionalna

implementacija logike povezivanja sa periferijama u sam CPU.

3.4.3 U/I interfejs

Page 42: Skripta(1 Dio)

43

U/I interfejs kontroliše rad periferijskih jedinica u skladu sa naredbama procesora

računara, i po potrebi vrši konverziju podataka iz jednog formata u drugi. Najčešće su

periferijske jedinice zasebne cjeline, dok se U/I interfejs pakuje u isti kabinet/kućište sa

procesorom i memorijom.

Ponekad nije jednostavno utvrditi liniju razgraničenja između periferije i interfejsa.

Npr. na sl. 3.19, enkoder konvertuje pritisak na tipku tastature u 7-bitni ASCII kod. Ovaj

kod se pamti u interfejsu ka magistrali, i na zahtjev prosljeđuje na samu magistralu. Iako

je logički enkoder u sastavu interfejsa, on se najčešće pakuje zajedno sa tastaturom, dok

se interfejs prema magistrali implementira u kućištu zajedno sa procesorom.

Sl. 3.19 Jednostavni interfejs tastature

U/I interfejs treba da prepozna kada mu se CPU obraća u cilju slanja/čitanja podataka

/komandi/statusa i da izvrši u predviđenom vremenu zahtijevanu akciju/operaciju: prihvat

ili slanje odnosnih podataka. Za realizaciju toga cilja, U/I interfejs treba da generiše i da

procesira odnosne signale za sinhronizaciju komunikacije sa CPJ. Zahtjevi analogni

navedenom se postavljaju i pri komunikaciji U/I interfejsa sa periferijom. Dodatno, U/I

interfejs treba da obezbjedi potrebnu konverziju podataka iz formata u kojem prima

(šalje) podatke od CPJ (periferijske jedinice) u format prijema od strane periferijske

jedinice (CPJ), da obezbijedi procesiranje grešaka itd. Principijelna blok šema U/I

interfejsa, kojom se obezbjeđuju navedene funkcije data je na sl. 3.20.

Page 43: Skripta(1 Dio)

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.

Page 44: Skripta(1 Dio)

45

Skup portova predstavlja U/I programski model. Programski model interfejsa

tastature sa sl. 3.19 sastoji se od jednog 8-bitnog I/O porta (KBDATA) (sl. 3.20).

7 6 0

0 Kod tipke (ASCII) KBDATA

Sl. 3.20 Programski model interfejsa tastature

Da bi očitao podatak sa tastature, program mora da izvede instrukciju koja vrši

transfer sadržaja porta KBDATA u jedan od registara procesora. Iako je port KBDATA

sa stanovišta procesora read-only (moguće samo čitanje), encoder (interfejs) može da

'upisuje' u njega podatke. Pokušaj upisa u port sa procesorske strane nema efekta na

sadržaj registra. Zbog navedenog, port se naziva 'ulazni'.

Primjer interfejsa ka izlaznoj periferijskoj jedinici, sa jednim (izlaznim) portom

(DIGOUT) u interfejsu, prikazan je na sl. 3.21.

Sl. 3.21 a) 7-segmentni displej i pripadajući interfejs; b) programski model

Periferija interpretira 8-bitni podatak kao dvije BCD cifre, sa prikazom na 2 7-

segmentna displeja. Da bi se izvršio prikaz željenih cifara, procesor mora poslati 2 BCD

cifre u 1-om bajtu na izlazni port DIGOUT odgovarajućim instrukcijama.

Page 45: Skripta(1 Dio)

46

Pored toga što je KBDATA ulazni a DIGOUT izlazni port, razlika je i u tome što

KBDATA ne pamti sadržaj pritisnutog tastera, nego ga samo baferuje za prosljeđivanje

na U/I magistralu (kada se tipka tastature otpusti, istovremeno dolazi i do promjene

KBDATA). S druge strane DIGOUT je registar sa memorijom: nakon upisa od strane

procesora, sadržaj porta se ne mijenja dok se ne upiše nova vrijednost od strane CPU-a.

Prema tipu podataka koji se izmjenjuju između porta i procesora, razlikujemo:

• port podataka (preko kojeg se izmjenjuju podaci),

• statusni port (preko kojeg procesor može dobiti informaciju o stanju prenosa, U/I

interfejsa odnosno uređaja),

• upravljački port, preko kojeg CPU postavlja komande i parametre za izvođenje

U/I operacija.

3.4.4 Načini selekcije U/I uređaja

Za selekciju U/I uređaja i transfer podataka ka perifernim uređajima (i obrnuto),

procesor može koristiti dva načina. Jedan je korištenjem specijalnih U/I instrukcija

procesora (izolirani U/I), dok se drugi realizuje korištenjem instrukcija za izmjenu

podataka sa memorijom (memorijsko – mapirani U/I).

Primjer korištenja i formata U/I instrukcija IN / OUT je dat na sl. 3.22.

IN Rn, Pn ; učitava se u registar Rn sadržaj porta Pn,

OUT Pn, Rn ; upisuje se u port Pn sadržaj registra Rn.

15 4 3 0

Opcode Rn

Pn

Sl. 3.22 Korištenje i format U/I instrukcija

IN / OUT instrukcije izvršavaju transfer podataka slično memorijskim instrukcijama

LD / ST, izuzev da ne adresiraju memoriju nego U/I port. Pri izvođenju memorijskih

instrukcija procesor aktivira signal M/IO za selekciju memorije (logičko 1). Signal M/IO

Page 46: Skripta(1 Dio)

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

Page 47: Skripta(1 Dio)

48

Pri U/I komunikaciji CPU može biti u većoj ili manjoj mjeri uključen u proces U/I

komunikacije. Ako su U/I operacije u potpunosti kontrolisane od strane CPU-a

(iniciranje, osmatranje statusa periferije, transfer podataka i okončanje transfera), onda se

ovakav tip transfera naziva programirani U/I prenos.

Programirani U/I prenos

Tipičan protokol komunikacije za očitavanje podataka sa ulaznog porta kod

programiranog U/I prenosa dat je na sl. 3.24.

Sl. 3.24 Protokol komunikacije za ulaznu jedinicu.

Sl. 3.25 Programski model tastature sa kontrolnim i statusnim portom

Npr. za programski model tastature koji se sastoji od jednog kontrolnog i statusnog

porta i jednog ulaznog porta za podatke (sl. 3.25), učitavanje podataka tehnikom

programiranog ulaza/izlaza dat je slijedećim kodom:

Page 48: Skripta(1 Dio)

49

INIT: LDA #1 ; Start (iniciranje) operacije

STA KBCS ;

CEKANJE: TST KBCS ; Testiranje spremnosti interfejsa (RDY=1)

BPL CEKANJE ; Čekanje, ako interfejs nije spreman

LDA KBDATA ; Interfejs spreman, očitaj podatak

….

Pored ove varijante programiranog U/I (uslovni U/I prenos), u varijanti bezuslovnog

prenosa procesor ne ispituje status spremnosti periferije za komunikaciju; ovo se

primjenjuje kada se zna da je periferija uvijek spremna za U/I komunikaciju u trenutku

iniciranja transfera. Primijetimo da je moguće inicirati pripremu slijedećeg podatka (npr.

kod čitanja jedinice magnetne trake), nakon očitavanja prethodnog, i nastaviti obradu

(preklapanje obrade i U/I – overlapped U/I).

Tehnika prenosa podataka programiranim U/I ima veliki nedostatak u ogromnom

gubitku procesorskog vremena dok se čeka na spremnost periferije (problem se dijelom

može ublažiti preklapajućim U/I). U cilju minimizacije utroška procesorskog vremena pri

U/I komunikaciji, razvijene su prekidne tehnike prenosa podataka, kao i prenos podataka

direktnim pristupom memoriji.

Page 49: Skripta(1 Dio)

50

Prekidna tehnika U/I komunikacije

Prekidi

Prekidi su događaji koji uzrokuju prekid izvršavanja normalnog toka programske

sekvence. Ovi događaji mogu biti različiti, a dijele se na softverske (generisane

programom) i hardverske (generisane hardverskim sklopovima/uređajima) (sl. 3.26).

Prekid proizilazi iz višeg prioriteta servisiranja događaja koji uzrokuje prekid, u odnosu

na prioritet izvršavanja osnovnog programa. Servisiranje se realizuje aktiviranjem

prekidne rutine (interrupt service routine) koja treba da izvede sve potrebne akcije koje

zahtijeva pojava tog događaja. Nakon servisiranja događaja prekida programska sekvenca

se vraća na tačku prekida, nakon čega se nastavlja izvođenje osnovnog programa.

Prekidi

Softverski (sinhroni) Hardverski

Eksplicitno generisani

Poslj. greške u izvođenju programa

SWI

INT

SIM I/O INT

. . .

Eksterni Interni

Maskirani Nemaskirani

I/O ALARM

TIMER

. . .

. . .

. . .

DIV BY ZERO

POWER FAIL

MACHINE MULFUNCTION

PARITY ERROR

. . .

Sl. 3.26 Klasifikacija prekida

Page 50: Skripta(1 Dio)

51

Određeni događaji najvišeg prioriteta uvijek uzrokuju prekid (npr. POWER FAIL,

MACHINE MULFUNCTION, ALARM, DIV BY ZERO, …). Maskirani prekidi se

poslužuju samo ako procesor prethodno postavi bitove dozvole prekida u statusnoj riječi

procesora za odnosne događaje.

Ideja prekida potiče od problema komunikacije sa periferijama. Kod programiranog

I/O procesor kontinualno testira spremnost periferije za komunikaciju. Pri takvom načinu

komunikacije, u sistemu sa mnogo periferijskih jedinica procesor bi većinu vremena

trošio u čekanju na spremnost periferija. Takav način rada bi usporavao čak i periferijske

jedinice: periferija koja ima spreman podatak bi mogla da čeka značajan vremenski

period zbog komunikacije procesora sa drugim periferijama programiranim U/I, što bi

blokiralo pripremu novih podataka od strane periferija koje čekaju na komunikaciju.

Alternativni pristup je da procesor radi koristan posao izvodeći osnovni program, a da

periferija kada postane spremna za komunikaciju, izvjesti o tome procesor – postavi

zahtjev za komunikaciju. Na osnovu prioriteta zahtjeva, procesor može prihvatiti zahtjev

i servisirati događaj aktiviranjem prekidne rutine, ili odložiti servisiranje zahtjeva za neki

kasniji trenutak vremena.

Procesor može prekinuti tekuću sekvencu kontrolnog toka samo između individualnih

mašinskih instrukcija. Razlog tome je to što program čije se izvršenje prekida, treba da

nastavi rad od tačke prekida nakon servisiranja događaja koji ga je generisao. Za to je

potrebno čuvanje stanja procesora (konteksta) u trenutku prekida, i restauracija tog stanja

nakon servisiranja prekida. Pošto je za izvođenje instrukcije osnovnog programa iza tačke

prekida bitan samo kontekst programskog modela nakon izvođenja prethodne instrukcije,

onda se prekidi dozvoljavaju samo nakon kompletiranja izvršenja jedne instrukcije a prije

početka izvršenja druge. Dakle, proces izvršenje jedne instrukcije bi se mogao opisati

sekvencom:

BEGIN

CheckForInterrupt; Fetch; Execute;

END

Page 51: Skripta(1 Dio)

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

Page 52: Skripta(1 Dio)

53

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

procesora se:

• utvrđuje zahtjev za prekid najvišeg prioriteta u IR,

• ukoliko je prekid tog nivoa dozvoljen (odgovarajućim bitima dozvole prekida

(obično u statusnoj riječi procesora) kojima se specifikuje dozvola prekida

određenog prioriteta i višeg), onda se ulazi u sekvencu posluživanja prekida

(pohranjivanje stanja i ulazak u ISR). Adresa ISR je određena zahtjevom INTRi

koji se poslužuje.

3.27

Kod prekidnog sistema ovog tipa (multinivoijski prekidni sistem sa n-nivoa) tipično

uređenje prioriteta je slijedeće:

Ako se poslužuje prekid nivoa k < n, onda su dozvoljeni prekidi nivoa k+1, …, n.

Koncept gdje se svakom U/I interfejsu pridjeljuje jedan prekidni nivo, nije pogodan,

jer broj periferija i U/I interfejsa može biti veliki (nije ga lako unaprijed ni predvidjeti).

Zbog toga se koristi rješenje gdje je na jednu liniju zahtjeva za prekid moguće vezati veći

broj U/I interfejsa (na ulazu u procesor može postojati jedna ili više prekidnih linija). Pri

tome se koriste različite tehnike za utvrđivanje izvora prekida na određenoj liniji.

Identifikacija prozivanjem

Kada se desi prekid uzrokovan zahtjevom za prekid INTRi na određenoj liniji, ulazi

se u proces posluživanja prekida aktiviranjem odgovarajuće ISR-e. Pri ulasku u ISRi nije

Page 53: Skripta(1 Dio)

54

poznat izvor prekida, jer je više U/I interfejsa vezano na istu liniju INTRi. Da bi se

utvrdio izvor zahtjeva, odnosna ISRi treba da ispituje status svakog interfejsa vezanog na

INTRi liniju. Prvi interfejs za koji se utvrdi da je postavio zahtjev (što se utvrđuje

ispitivanjem statusnih portova interfejsa) opslužuje se u ISRi. Primjer hardverske

realizacije ove tehnike (za procesor sa jednom linijom INT za specifikaciju zahtjeva za

prekid), dat je na sl. 3.28, dok je primjer dijagrama toka odgovarajuće ISR dat na sl. 3.29.

Sl. 3.28 Šema hardverske implementacije prekidne tehnike U/I komunikacije prozivanjem

Primijetimo da redoslijed ispitivanja određuje i prioritet posluživanja zahtjeva istog

prekidnog nivoa. Ovaj redoslijed može biti fiksan, a može se i mijenjati (npr. round-robin

tehnikom: uređaj koji je poslednji poslužen, u narednom posluživanju ispituje se na

kraju). Takođe primijetimo da je moguća varijanta ISR-e u kojoj se vrši povratak (RTI)

na kraju posluživanja svakog interfejsa (čim se posluži prvi interfejs koji je tražio

zahtjev). Ova varijanta je pogodna ako je mala vjerovatnoća da dva interfejsa

istovremeno traže zahtjev za prekid.

Page 54: Skripta(1 Dio)

55

Sl. 3.29 Dijagram toka ISR kod tehnike prozivanja

Lančanje i vektorsko prekidanje

Kod ove tehnike i dalje je više U/I interfejsa vezano na jednu INTRi liniju – zahtjev

za prekid. Identifikacija U/I interfejsa koji je zahtijevao prekid i aktivacija rutine za

posluživanje odnosnog interfejsa se realizuje hardverski. Da bi se aktivirala odnosna ISR

rutina interfejsa koji je postavio zahtjev za prekid, odnosni interfejs postavlja na linije

podataka prekidni vektor (odnosno identifikator na osnovu kojeg procesor identifikuje

ISR). Da bi samo jedan uređaj (od više njih, koji su eventualno postavili istovremeno

zahtjeve za prekid) postavio prekidni vektor na linije podataka, koristi se lančanje. Način

realizacije lančanja prikazan je na sl. 3.30.

Page 55: Skripta(1 Dio)

56

Sl. 3.30 Način realizacije lančanja

Page 56: Skripta(1 Dio)

57

INTA (interrupt acknowledge) se koristi kao signal da je CPU prepoznao zahtjev za

prekid i da je spreman da primi informaciju o vektoru prekida. Ovim se ostvaruje

sinhronizacija CPU-a i U/I interfejsa u procesu identifikacije zahtjeva za prekid.

Logika kontrole U/I komunikacije prekidnom tehnikom često se implementira

posebnim programibilnim kolom (kontroler prekida – interrupt controler). Kolo obično

sadrži registar za pamćenje zahtjeva za prekid (IRR – interrupt request register), registar

za maskiranje (IMR – interrupt mask register) (sl. 3.31), registar statusa servisiranja (ISR

– interrupt service register), konrolne i statusne registre te logiku za lančanje (chaining).

Sl. 3.31 Logika za maskiranje zahtjeva za prekide

Na slikama 3.32 i 3.33 prikazane su šeme korištenja kontrolera prekida za slučaj

povezivanja jedan port/interfejs - jedna prekidna linija, odnosno grupa portova/interfejsa

- jedna prekidna linija.

Page 57: Skripta(1 Dio)

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

Page 58: Skripta(1 Dio)

59

višeg nivoa od tekućeg posluživanja, onda se postavlja linija INTREQ u aktivno, nakon

prepoznavanja zahtjeva od strane CPU (aktivan INTA) interfejs (ili kontroler) postavlja

vektor prekida na magistralu podataka koji odgovara zahtjevu najvišeg nivoa (u varijanti

na sl. 3.32, 3.33, postavljanje vektora prekida postavlja U/I port). Procesor na bazi

prekidnog vektora određuje adresu RSP i ulazi u proces posluživanja prekida, a kontroler

postavlja bit u ISR. Na kraju obrade prekida, RSP je dužna da signalizira kontroleru

prekida da je servisiranje završeno (preko kontrolnog porta), a kontroler na osnovu toga

briše postavljeni bit u ISR. Na ovaj način je implementacija U/I komunikacije prekidnom

tehnikom znatno pojednostavljena, jer je cijela logika već imlementirana u integrisanom

kolu.

Metod vektorskog prekida zauzećem magistrale

Kod ovog metoda U/I interfejs treba prije postavljanja zahtjeva (linije INTR) da

stekne pravo kontrole nad magistralom (bus master). Na taj način samo jedan U/I

interfejs može da aktivira ovu liniju. Nakon aktiviranja zahtjeva i njegovog detektovanja

od strane procesora, procesor šalje signal prepoznavanja zahtjeva (INTA), a interfejs

postavlja svoj vektor prekida na linijama za podatke.

U/I komunikacija direktnim pristupom memoriji

Komunikacija između perifernih jedinica i procesora je relativno jednostavan i efikasan

mehanizam, ukoliko su periferijske jedinice spore. U tom slučaju, i za veliki broj

periferijskih jedinica, vrijeme koje procesor potroši za komunikaciju sa periferijama

iznosi svega nekoliko procenata ukupnog procesorskog vremena.

Međutim, transfer velikog broja podataka između brzih periferija (diskova npr.) i

memorije preko procesora mehanizmom prekida za transfer svakog pojedinačnog

podataka, zahtijevao bi znatan procenat procesorskog vremena (vrijeme pripreme i

transfera podataka od strane periferije može biti i kraće od samog trajanja RSP). Prema

tome, alternativni pristup se nameće kao imperativ.

Page 59: Skripta(1 Dio)

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

Page 60: Skripta(1 Dio)

61

Da bi DMA interfejs izvršio prenos podataka ka memoriji, on standardno postavlja

procesoru zahtjev za prekid INTR (kojim indicira spremnost za prijem/predaju podataka.

Podaci se prenose u blokovima). Procesor postavlja parametre prenosa: adresu početka

memorijskog bloka, broj bloka diska, kao i broj bajta koji se prenosi, te izdaje komandu

za prenos koja sadrži i informaciju o smjeru prenosa (sl. 3.35).

Sl. 3.35 Programski model DMA

DMA interfejs treba da dobije pravo upravljanja magistralom u toku transfera

podataka ka/iz memorije (ako bi i procesor i DMA istovremeno slali podatke preko

magistrale, došlo bi do superpozicije i nekorektnog upisa/čitanja). Zahtjev za upravljanje

magistralom DMA saopštava procesoru preko linije BR (bus request), a odobrenje od

procesora dobija kada procesor postavi signal BG (bus grant) (sl. 3.36)

Sl. 3.36 Kontrolni signali za dobijanje prava upravljanja magistralom

Prije predavanja magistrale DMA interfejsu, procesor treba da završi tekuće korište-

nje magistrale (tekući aktivni ciklus magistrale) i da postavi svoje izlaze na magistralu u

neaktivno stanje (stanje visoke impedanse). Ovo procesor može da uradi u više tačaka

ciklusa mašinske instrukcije (npr. iza faze pribavljanja, faze dekodiranja instrukcije,

pribavljanja operanda itd). Blok šema DMA interfejsa i načina povezivanja sa

procesorom i memorijom data je na sl. 3.37

Page 61: Skripta(1 Dio)

62

Sl. 3.37 Blok šema DMA prenosa

Postoji nekoliko varijanti DMA prenosa sa stanovišta dužine kontrole nad

magistralom:

1. Krađa ciklusa (Cycle stealing). Ukoliko pretpostavimo da disk jedinica može da

realizuje transfer jednog bajta svakih 800ns, a da je ciklus memorije 100ns, slijedi

da ako od 8 memorijskih ciklusa 1 koristi DMA, procesoru ostaje 7/8 (87.5%

propusnog opsega mamorije). Procesor ne troši svo svoje vrijeme na komunika-

ciju sa memorijom; određeni broj mašinskih ciklusa procesor koristi za interne

kalkulacije i manipulaciju podacima u samom procesoru. DMA postaje kontroler

nad sabirnicom DMA kada je u procesu transfera podataka i kada procesor ne

koristi magistralu (DMA 'krade' cikluse kontrole nad magistralom od procesora).

Po ovom metodu se prenosi samo bajt ili riječ po 'ukradenom' ciklusu. Sudari

procesora i DMA kontrolera su rijetki (kada istovremeno žele pristup memoriji)

ali u realnim situacijama može doći i do produženja mašinskih ciklusa za nekoliko

taktova u procesu zauzimanja i oslobađanja magistrale. Navedeni efekti

ograničavaju brzinu prenosa podataka, pa se ona koristi kod sporijih jedinica.

2. Standardni DMA prenos. Kod ove varijante DMA interfejs drži kontrolu nad

sabirnicom za vrijeme prenosa cijelog bloka podataka. Ovim se postižu velike

brzine prenosa, ali procesor mora da čeka dok DMA ne završi transfer bloka.

Page 62: Skripta(1 Dio)

63

Kompromisno rješenje je da DMA kontroler oslobađa sabirnicu nakon prenosa

određenog broja podblokova, kako bi procesoru omogućio da reaguje na izuzetne

događaje (burst – paketni DMA).

3. Po trećoj varijanti DMA kontroler koristi magistralu u mašinskim ciklusima u

kojima je ne koristi CPU. Na taj način se maksimizira iskorištenje propusnog

opsega memorije, i to bez blokade rada CPU.

Napomenimo da se za potrebe specijalizovanih algoritama pri izvođenju U/I operacija

(npr. često se javlja potreba da se prije smještanja u memoriju podaci prethodno

transformišu) realizuju inteligentni U/I procesori sa svojim instrukcionim skupom i

memorijom, koji minimizuju vrijeme CPU u U/I transakcijama i svode ga na

supervizorsku ulogu.

Page 63: Skripta(1 Dio)

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

Page 64: Skripta(1 Dio)

65

CPI od 1 – 20 za mikroprogramske upravljačke jedinice. Zbog toga su CISC procesori gornjem

lijevom uglu projektnog prostora.

RISC (reduced instruction set computers) procesori imaju veću frekvenciju radnog takta od

CISC procesora. S obzirom da se najčešće koristi hardverski implementirana upravljačka

jedinica, CPI je kod ovih mašina reduciran na 1-2.

Specijalna klasa RISC procesora su superskalarni procesori, kod koji se više instrukcija

mogu izvoditi istovremeno za vrijeme svakog ciklusa, pa je kod ovih procesora CPI ispod

korespondentnih vrijednosti za RISC procesore.

Procesori sa velikom dužinom riječi (VLWI – very long instruction word) koriste više

funkcionalnih jedinica i od superskalarnih procesora. Time se još više smanjuje broj CPI. Zbog

velike dužine riječi (256-1024 bita), upravljačka jedinica ovih procesora je mikroprogramskog

tipa, te je (zbog mikroprogramskog ROM-a) brzina radnog takta manja. Neke instrukcije ovih

procesora zahtijevaju i veći broj mikroprogramskih ciklusa.

Superprotočni procesori koriste višefazne taktne signale sa znatno višom radnom

frekvencijom i relativno visokim CPI faktorom, izuzev ako se ne koriste i višestruke funkcionalne

jedinice što je primijenjeno u vektorskim procesorima. Ovi procesori pored skalarnih

funkcionalnih jedinica imaju i funkcionalne jedinice za vektorske operacije.

4.2 Protočna obrada instrukcija

Izvođenje tipične instrukcije može se razložiti na manje ili veće korake (faze) kao npr: faza

pribavljanja i faza izvršenja; ili faze pribavljanja instrukcije, dekodiranja, izvršenja i upisa

rezultata. Ove faze u izvođenju instrukcije se najčešće realizuju u instrukcionom protočnom

sistemu (instruction pipeline), kako je to predstavljeno na sl. 4.2.

Page 65: Skripta(1 Dio)

66

Sl. 4.2 Protočno izvršenje sukcesivnih instrukcija u osnovnom skalarnom procesoru ( a) ) i podprotočna obrada ( b) i c) )

Protočni sistem, kako je to opisano u dijelu 2.3, prihvata sukcesivne instrukcije na ulazu i

izvršava ih u stepenima protočnog sistema, sa preklapanjem izvršenja instrukcija u sukcesivnim

stepenima. U tekstu koji slijedi, date su definicije nekih osnovnih pojmova vezanih za protočnu

obradu instrukcija:

( 1 ) Ciklus protočnog sistema – definiše se intuitivno kao period potreban za kompletiranje

operacija u svakom stepenu (podrazumijeva se da svi stepeni zahtijevaju isto vrijeme

za izvršenje obrade).

( 2 ) Kašnjenje lansiranja instrukcija za izvršenje – vrijeme (u ciklusima) između iniciranja

izvršenja susjednih instrukcija.

Page 66: Skripta(1 Dio)

67

( 3 ) Brzina lansiranja instrukcija za izvršenje – broj instrukcija lansiranih za izvršenje po

ciklusu, ovaj parametar je takođe poznat kao stepen superskalarnog procesora.

( 4 ) Kašnjenje (vrijeme) izvršavanja prostih operacija – Pod prostim operacijama se

podrazumijevaju operacije cjelobrojnog sabiranja, punjenja/smještanja podataka,

grananja itd. Ovo vrijeme se iskazuje takođe u ciklusima.

( 5 ) Konflikti u pristupu resursima – Ovo se odnosi na situaciju kada dve ili više

instrukcija zahtijevaju korištenje iste funkcionalne jedinice istovremeno.

Osnovni skalarni procesor se definiše kao mašina kod koje se iniciranje instrukcija za

izvršenje obavlja u svakom ciklusu, odnosno kod koje je kašnjenje (vrijeme) izvršenja prostih

operacija jedan ciklus. Protočni sistem se može maksimalno iskoristiti ako sukcesivne instrukcije

kontinualno ulaze u protočni sistem brzinom od jedne instrukcije po ciklusu (Sl. 4.2a). Ako se

instrukcije mogu lansirati svaki drugi ciklus, onda je to slučaj podprotočne obrade

(underpipelining – sl. 4.2b). Drugi slučaj podprotočne obrade je prikazan na sl.4.2c, gdje se faze

obrade grupišu u veće korake: npr. faze pribavljanja i dekodiranja se realizuju u jednom

protočnom stepenu, a faze izvršenja i upisa rezultata u drugom protočnom stepenu. Najbolje

iskorištenje se postiže u slučaju 4.2a ( CPI = 1 ), dok je u slučaju 4.2b CPI = 2 ( za slučaj 4.2c je

ciklus protočnog sistema dva puta veći od osnovnog ciklusa – radnog takta procesora).

S obzirom da se performanse procesora mogu reprezentovati brzinom izvršenja instrukcija

iskazanom u izvršenim milionima instrukcija u sekundi (MIPS rate)

MIPS rate = 10

6×CPI

f . (4.1)

Vidi se da su performanse procesora sa obradom kao na Sl. 4.2b i Sl. 4.2c duplo niže u

odnosu na performanse osnovnog skalarnog procesora.

Na Sl.4.3 je data arhitektura osnovnog skalarnog računarskog sistema, neznatno

modifikovana u odnosu na šeme date u poglavlju 3. CPU može da ima višestruke (skalarne i

vektorske) funkcionalne jedinice (ALU, akceleratore operacija u pokretnom zarezu itd.).

Specijalne funkcionalne jedinice mogu biti ugrađene u CPU (4.3a) ili pridodate kao eksterne

jedinice (koprocesori – Sl. 4.3b). Koprocesori mogu biti floating-point akceleratori koji izvode

operacije nad skalarnim (flating-point) operandima, vektorski procesori (čiji su operandi vektori),

digitalni signalni procesori (DSP) ili Lisp procesori, koji vrše simbolička računanja u AI

Page 67: Skripta(1 Dio)

68

aplikacijama. Koprocesori ne mogu raditi samostalno, i moraju biti kompatibilni sa procesorom

domaćinom (host processor). Ponekad se ovi procesori nazivaju pridodati (attached) ili sluge

(slave) ili pozadinski (back-end), ali su oni po procesnoj moći ponekad znatno moćniji od

računara domaćina (npr. moćni Cray Y-MP je pozadinski procesor malog miniračunara-

domaćina).

Sl. 4.3 Model osnovnog skalarnog računara

Page 68: Skripta(1 Dio)

69

4.3 Arhitekture bazirane na karakteristikama instrukcionog skupa

U početnoj fazi razvoja računarske tehnike, računari su sadržavali relativno jednostavan

skupom instrukcija. Osnovni razlog je bila visoka cijena hardvera. Nakon toga je došlo do

dramatičnog pada cijene hardvera po gejtu, i rasta cijene softvera. Softverska tehnologija se

usavršavala što je rezultovalo razvojem strukturnih i objektno orijentisanih programskih jezika i

koncepata, što je povećalo semantički raskorak između hardvera i sovtvera.

Rezultat navedenih procesa je bilo nastojanje da se u hardver implementiraju sve

kompleksnije funkcije, koje je dovelo do toga da instrukcioni skup računara postane velik i

kompleksan (računari sa kompleksnim instrukcionim skupom – Complex Instruction Set

Computers/CISC). Ovaj trend je bio pospješen jednostavnošću i fleksibilnošću

mikroprogramskog koncepta.

Tipičan CISC instrukcioni skup sadrži približno 120 – 350 instrukcija sa korištenjem

različitih instrukcionih formata i koristi relativno mali broj registara opšte namjene (general

purpose registers - GPRs). U toku izvršenja instrukcija često se izvršavaju operacije nad

memorijskim/ registarskim operandima, sa nizom memorijskih referenci. Mnoge instrukcije

jezika visokog nivoa (high level languages – HLL) su često direktno implementirane u hardver.

Ovo pojednostavljuje implementaciju programskih prevodioca, poboljšava efikasnost realizacije

određenih funkcija i dopušta proširenja sa skalarnih na vektorske i simboličke instrukcije.

Redukovani instrukcioni skup. Nakon mnogih istraživanja koja su se bavila karakteristikama

izvođenja programa, došlo se do rezultata koji su pokazivali da se svega 25% instrukcija iz

kompleksnog instrukcionog skupa često koristi (95% vremena). Ovaj podatak se može

interpretirati i tako da se 75% hardverski implementiranih instrukcija ne izvodi gotovo nikako.

Zbog toga se prirodno nametalo pitanje: Zašto koristiti dragocijeni prostor na procesorskom čipu

za implementaciju rijetko korištenih funkcija? Rijetko korištene instrukcije se mogu

implementirati softverski – korištenjem osnovnih, često korištenih procesorskih instrukcija. Iako

je softverska implementacija ovih funkcija znatno sporija od hardverske, ukupan efekat je

pozitivan, jer se oslobođeni prostor na procesorskom čipu može iskoristiti za realizaciju znatno

moćnijeg hardvera (implementacija keš memorije na čipu, ili jedinice za operacije u pokretnom

zarezu).

Instrukcioni skup RISC procesora sadrže tipično manje od 100 instrukcija sa fiksnim (32-

bitnim) formatom instrukcija. Instrukcije koriste svega nekoliko načina adresiranja, većina

Page 69: Skripta(1 Dio)

70

instrukcija koriste operande u registrima. Pristup memoriji se vrši samo load/store instrukcijama.

Broj registara ovih procesora je veliki kako bi se omogućila brza promjena konteksta između

procesa, te brzi pozivi i gniježdenje procedura. Većina optimizovanih instrukcija se izvodi u

jednom mašinskom ciklusu. S obzirom na optimizaciju hardvera, cijeli procesor se standardno

realizuje na jednom VLSI čipu. Kao rezultat svega je rad CPU-a na višim frekvencijama radnog

takta, smanjenje vrijednosti CPI parametra i prema tome više performanse u MIPS, prema (4.1).

Na Sl. 4.4 su na globalnom nivou predstavljene distinkcije u arhitekturi između modernih

CISC i tradicionalnih RISC arhitektura. Navedene distinkcije se mogu smanjivati u budućnosti,

zbog primjene RISC koncepata u CISC arhitekturama i obrnuto.

Sl. 4.4 Arhitekturna razlika tipičnih RISC i CISC arhitektura.

Komparativne karakteristike CISC i RISC arhitektura predstavljene su Tabelom 4.1.

Arhitekturna karakteristika CISC RISC

Format i broj instrukcija Veliki instrukcioni skup, varijabilni format instrukcija

Mali broj instrukcija, fiksni format. Većina instrukcija su registarske instrukcije.

Načini adresiranja 12 – 24 3 - 5

Opšti registri i keš 8 – 24 GPR, jedan keš i za instrukcije i za podatke, novije CISC mašine takođe razdvajaju instrukcioni i keš za podatke

Veliki broj (32 – 192) GPRs, posebni keš za instrukcije/ podatke

Page 70: Skripta(1 Dio)

71

CPI CPI 2-15 Srednji CPI < 1.5

Upravljačka jedinica Najčešće mikroprogramska memorija, ali savremeni CISC i sa hardverskom upravljač-kom jedinicom

Uglavnom hardverska realizacija upravljačke jedinice

Skalarni CISC procesori

CISC skalarni procesori procesiraju skalarne podatke. Najprostiji skalarni procesori

izvršavaju cjelobrojne instrukcije (operandi su sa ‘fiksnom (binarnom) tačkom’). Moćniji skalarni

procesori rade i sa cjelobrojnim i sa operacijama u pokretnom zarezu (sl. 4.3). Implementacija

može biti ili na jednom čipu, ili na više čipova na jednoj procesorskoj ploči.

Procesiranje je najčešće podprotočno; osnovni uzroci su zavisnost između podataka, konflikti

kod korišćenja resursa i grananja. Performanse ispod optimalnih proizilaze i iz razloga kada je

radni takt duži od vremena potrebnog za izvršenje osnovnih operacija.

Sl. 4.5 Arhitektura procesora MC 68040.

Page 71: Skripta(1 Dio)

72

Primjer CISC procesora je Motorola MC68040 mikroprocesor. Blok šema arhitekture ovog

procesora predstavljena je na sl. 4.5. Primjeri drugih CISC arhitektura su VAX 8800, Intel x86,

itd.

RISC skalarni procesori

Generički RISC skalarni procesori se nazivaju skalarni RISC jer su projektovani za izvođenje

jedne instrukciju po ciklusu (kao prema sl. 4.2a). Kao što je prethodno pomenuto, instrukcije koje

se rijetko izvršavaju u RISC procesorima se implementiraju softverski. Zbog toga su zahtjevi koji

se postavljaju pred programski prevodilac RISC mašina viši u odnosu na zahtjeve za prevodioce

CISC procesora. Paralelizam na nivou instrukcija se eksploatiše i kod RISC i kod CISC

procesora.

I RISC ali i CISC procesori za visoke performanse moraju da rade na što višim radnim

frekvencijama, sa što manjim CPI faktorom uz efikasno generisnje koda programskim

prevodiocem. Pojednostavljenje strukture instrukcija u RISC arhitekturama omogućava

približavanje idealnim performansama osnovnog skalarnog procesora (sl. 4.2a).

Primjeri RISC baziranih procesora su Sun SPARC, Intel i860, Motorola M88100, AMD

29000 itd. SPARC ima atribut proširljivog (scalable) procesora, jer se broj registara (i

registarskih prozora) mijenja u različitim SPARC implementacijama.

Kod MC 88100 se proširljivost odnosi na broj specijalnih funkcionalnih jedinica (SFU –

special functional units) koje su implementirane u različitim 88100 varijantama. U tekstu koji

slijedi dat je sažet opis SPARC procesora firme Cypress semiconductor.

Page 72: Skripta(1 Dio)

73

Sl. 4.6 a) Cypress CY7C601 SPARC processor

b) Cypress CY7C602 floating – point jedinica.

SPARC sadrži 69 instrukcija (14 su instrukcije za rad u pokretnom zarezu). U cilju

optimizacije poziva procedura, registarski skup je podijeljen na registarske prozore (window

register). Ideja je da se parametri pri pozivu procedura predaju putem registara i time poboljšaju

performanse. Kod standardnih CISC prevodilaca, parametri se predaju preko steka, što zahtijeva

Page 73: Skripta(1 Dio)

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

Page 74: Skripta(1 Dio)

75

(Ins), lokalni registri procedure (Locals) i registarska sekcija za predaju parametara slijedećoj

proceduri (Outs). Registarska sekcija ulaznih parametara pozvane procedure(Insi) se preklapa sa

registarskom sekcijom izlaznih parametara pozivne procedure (Outs i-1) (sl. 4.7).

Ukupno ima 64 preklapajuća i 64 lokalna registara, uz 8 globalnih. Prozori čine cirkularni

stek. Prozor procedure koja se izvodi se naziva aktivni prozor, i na njega pokazuje pokazivač

aktivnog prozora (CWP). WIM (window interrupt mask) se koristi za indikaciju da je prozor

zauzet, i da je njegova dodjela novoj proceduri nedozvoljena. Ako se desi takav slučaj da se

poziva nova procedura a svi prozori su zauzeti (CWP i WIM se izjednače), onda se generiše

prekid, u toku kojeg se smještaju Ins i Locals registri prozora u memoriju koristeći servisnu rutinu

na koju pokazuje trap base register. WIM se poveća i pokazuje na slijedeći prozor i nastavi

proces pozivanja slijedeće procedure. Opisanom tehnikom se znatno smanjuje vrijeme izmjene

parametara u procesu pozivanja procedura.

Drugi primjer RISC procesora je Intel i860 procesor (Sl. 4.8)

Sl. 4.8 Intel i860 RISC mikroprocesor

Page 75: Skripta(1 Dio)

76

Procesor ima 64-bitne i interne i eksterne linije podataka, dok su adresne linije 32-bitne. ALU

za cjelobrojne operacije je takođe 32-bitna. Postoje posebne keš memorije za podatke (8kb) i

instrukcije (4kb). Komunikacija sa memorijom se realizuje preko jedinice za upravljanje

memorijom MMU (memory management unit). Postoje dvije jedinice za obradu u pokretnom

zarezu: množač i sabirač. Specijalne dualne instrukcije add-and multiply i substract-and multiply

koriste istovremeno i jedinicu za množenje i jedinicu za sabiranje. Takođe, istovremeno se mogu

izvoditi i cjelobrojene operacije i opercije u tekućem zarezu, pa zbog toga i8060 ima

karakteristike i superscalarnog procesora. Grafička jedinica podržava 3-dimenzionalne grafičke

operacije sa 8, 16 i 32 bitnim pikselima. Ovaj RISC procesor ima 82 instrukcije, od čega 24 za

operacije u pokretnom zarezu, 10 grafičkih instrukcija i 6 pseudoasemblerskih instrukcija.

Debata između projektanata RISC i CISC procesora traje duže vrijeme. Na bazi jednačine

(4.1) može se zaključiti da je RISC superiorniji u odnosu na CISC, ukoliko se dužina programa ne

povećava dramatično. Neka istraživanja pokazuju da se broj instrukcija, pri konvertovanju CISC

u RISC programe uvećava za 40%. Ipak, ovo povećanje u broju instrukcija (i veličini memorije

koju zahtijeva odgovarajući program) je znatno manji nego što je povećanje radnog takta

(smanjenje ciklusa) i redukcija CPI.

Nedostatci RISC arhitekture su slijedeći:

• s obzirom na to da se jedna CISC instrukcija implementira nizom RISC instrukcija,

povećava se veličina potrebne memorije kao i broj memorijskih pristupa potrebnih za

pribavljanje instrukcija,

• iako veći registarski skup može da drži više privremenih podataka, sistem za dekodiranje

registara je komplikovaniji, što produžava vrijeme pristupa registrima,

• kako bi se prethodni problemi minimizovali, kompajler treba da generiše optimalan kod,

pa se visoki zahtjevi postavljaju pred programske prevodioce,

• upravljačka jedinica implementirana u hardver je manje fleksibilna i kompleksnija za

projektovanje i realizaciju.

Ipak, razlike između RISC i CISC arhitektura se sve više smanjuju. Napredak tehnologije

omogućava primjenu dobrih rješenja i jednog i drugog koncepta kako u RISC tako i u CISC

arhitekturama.

Page 76: Skripta(1 Dio)

77

4.4 Hazardi kod protočne obrade

Hazard je okolnost koja sprečava da funkcionalna jedinica izvršava instrukciju

maksimalnom brzinom. Hazardi se mogu javiti zbog:

• zavisnosti po podacima između instrukcija

• konflikata u korištenju zajedničkih resursa pri istovremenom izvođenju različitih

instrukcija (strukturni hazardi)

• promjene instrukcionog toka (uzrokovan instrukcijama grananja i drugim instrukcijama

koje mijenjaju kontrolni tok - upravljački hazardi).

Hazardi uzrokuju da se rad cijelog protočnog sistema ili njegovog dijela privremeno zaustavi,

što uzrokuje degradaciju radnih performansi. Obično, kada se zaustavi izvršenje neke instrukcije

u protočnom stepenu, onda se zaustavlja izvršenje i svih drugih instrukcija u protočnom sistemu

koje slijede iza zaustavljene instrukcije dok se produžava izvršenje instrukcija koje su u

protočnom sistemu ispred zaustavljene instrukcije. Ovo znači da se u slučaju pojave zastoja

(hazarda) u nekom protočnom stepenu zaustavlja i dalje pribavljanje instrukcija.

U cilju smanjenja broja hazarda koriste se različiti postupci koji se mogu podijeliti na statičke

i dinamičke. Statičke (softverske) tehnike su postupci koji se primijenjuju prije samog izvođenja,

odnosno postupci u fazi prevođenja programa. Ove tehnike se zasnivaju na identifikaciji

karakteristika programa (prije svega zavisnosti po podacima između instrukcija) i potencijalnih

hazarda koji se nastoje eliminisati preuređenjem programskog kôda. Dinamičke tehnike se

baziraju na preuređenju redoslijeda izvođenja instrukcija u toku samog izvršenja, korišćenjem

dodatnih hardverskih sklopova na samoj CPU.

Softverske tehnike usložnjavaju projektovanje programskih prevodilaca, a programiranje u

asemblerskom jeziku postaje ekstremno teško. Osim toga teško je predvidjeti sve elemente run-

time ponašanja programa u fazi prevođenja. Dinamički pristup ima na raspolaganju stvarnu sliku

ponašanja programa u toku izvođenja, ali reakcija mora biti ekstremno brza i pravovremena.

Nedostaci ovog pristupa su svakako u usložnjavanju hardvera čime se zahtijeva dodatni prostor

na procesorskom čipu za implementaciju ovih funkcija, a može da rezultuje i ograničenjem u

brzini radnog takta.