1. osnovi o ra~unarima -...

32
1 1. Osnovi o ra~unarima 1.1. Ra~unarski sistemi Ra~unarski sistemi su ma{ine koje vr{e brzo izračunavanje i ~ije su akcije upravljane od strane programa. Program se sastoji od unapred pripremljene liste instrukcija. Softver, hardver, podaci, i komunikacije su komponente koje ~ine ra~unarski sistem. Pri tome: a) podaci sa kojima se manipuli{e - predstavljaju fundamentalnu prezentaciju ~injenica i opservacija. Podaci se procesiraju od strane ra~unara sa ciljem da se generi{e informacija. Oni mogu biti numeri~ki, alfanumeri~ki, grafi~ki, ili imati bilo koju drugu formu. U svim slu~ajevima podaci se moraju predstaviti u formi sa kojom ra~unar mo`e da manipuli{e. b) hardver - obezbedjuje fizi~ke mehanizme za: i) uno{enje (generisanje) podataka iz (ka) spoljnjeg sveta; ii) procesiranje podataka putem izvr{enja instrukcija; iii) memorisanje podataka; iv) kopiranje podataka izmedju razli~itih ulazno-izlaznih uredjaja koji su sastavni delovi sistema; i v) elektronsko upravljanje razli~itim ulaznim, izlaznim i memorijskim komponentama. c) softver - ~ine ga sistemski i aplikacioni programi, a defini{u ga instrukcije koje se izvr{avaju od strane hardvera. Ovim instrukcijama ta~no se ukazuje hardveru koji zadaci treba da se obave i u kom redosledu. Kod savremenih ra~unarskih sistema, ~esto se de{ava da unos podataka, generisanje prikaza, kao i memorisanje podataka i softvera budu locirani na mestu koje je razli~ito od onoga na kome se vr{i procesiranje. [ta vi{e, kod odredjenih instalacija, aktuelno procesiranje se distribuira izmedju ve}eg broja ra~unarskih sistema, pri ~emu se pojedini rezultati prenose ka individualnim sistemima kojima su ti rezultati potrebni. Zbog ovoga, neophodno je razmotriti i ~etvrtu komponentu: d) komunikaciona komponenta - ~ine je hardver i softver koji obavljaju transport programa i podataka izmedju medjusobno povezanih ra~unara. Strogo posmatrano, ra~unarski sistem ~ine komponente hardver i sistemski softver koje u toku izvr{enja aplikacionih programa rade u zajedni{tvu. Imaju}i u vidu ovu konstataciju, veliki broj autora smatra da samo ove komponente ~ine ra~unarski sistem. Komunikaciona komponenta je ta koja povezuje individualne ra~unarske sisteme u jedinstvenu celinu. Podaci i aplikacioni softver, i pored toga {to su fundamentalni za rad ra~unarskog sistema, predaju se od strane korisnika. Ovakvo jedno razmi{ljanje ukazuje da ove komponente nisu sastavni deo samog ra~unarskog sistema. U daljem tekstu smatra}emo da ra~unarski sistem ~ine sve ~etiri prethodno nabrojane komponente. Specifi~ne implementacije ra~unarskih sistema menjaju se tokom vremena, ali osnovni koncepti ostaju isti. U principu svi ra~unarski sistemi imaju sli~ne hardverske i softverske komponente i skoro svi obavljaju takore}i iste funkcije. Cilj ovog kursa je da upozna studenta kako te komponente rade i kako one uti~u na ispravnost i performanse.

Upload: phungthuy

Post on 06-Jun-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

1

1. Osnovi o ra~unarima

1.1. Ra~unarski sistemi

Ra~unarski sistemi su ma{ine koje vr{e brzo izračunavanje i ~ije su akcije upravljane

od strane programa. Program se sastoji od unapred pripremljene liste instrukcija. Softver,

hardver, podaci, i komunikacije su komponente koje ~ine ra~unarski sistem. Pri tome:

a) podaci sa kojima se manipuli{e - predstavljaju fundamentalnu prezentaciju

~injenica i opservacija. Podaci se procesiraju od strane ra~unara sa ciljem da se

generi{e informacija. Oni mogu biti numeri~ki, alfanumeri~ki, grafi~ki, ili imati bilo

koju drugu formu. U svim slu~ajevima podaci se moraju predstaviti u formi sa kojom

ra~unar mo`e da manipuli{e.

b) hardver - obezbedjuje fizi~ke mehanizme za: i) uno{enje (generisanje) podataka iz

(ka) spoljnjeg sveta; ii) procesiranje podataka putem izvr{enja instrukcija; iii) memorisanje podataka; iv) kopiranje podataka izmedju razli~itih ulazno-izlaznih

uredjaja koji su sastavni delovi sistema; i v) elektronsko upravljanje razli~itim ulaznim,

izlaznim i memorijskim komponentama.

c) softver - ~ine ga sistemski i aplikacioni programi, a defini{u ga instrukcije koje se

izvr{avaju od strane hardvera. Ovim instrukcijama ta~no se ukazuje hardveru koji

zadaci treba da se obave i u kom redosledu.

Kod savremenih ra~unarskih sistema, ~esto se de{ava da unos podataka, generisanje

prikaza, kao i memorisanje podataka i softvera budu locirani na mestu koje je razli~ito od

onoga na kome se vr{i procesiranje. [ta vi{e, kod odredjenih instalacija, aktuelno

procesiranje se distribuira izmedju ve}eg broja ra~unarskih sistema, pri ~emu se pojedini

rezultati prenose ka individualnim sistemima kojima su ti rezultati potrebni. Zbog ovoga,

neophodno je razmotriti i ~etvrtu komponentu:

d) komunikaciona komponenta - ~ine je hardver i softver koji obavljaju transport

programa i podataka izmedju medjusobno povezanih ra~unara.

Strogo posmatrano, ra~unarski sistem ~ine komponente hardver i sistemski softver koje

u toku izvr{enja aplikacionih programa rade u zajedni{tvu. Imaju}i u vidu ovu konstataciju,

veliki broj autora smatra da samo ove komponente ~ine ra~unarski sistem. Komunikaciona

komponenta je ta koja povezuje individualne ra~unarske sisteme u jedinstvenu celinu.

Podaci i aplikacioni softver, i pored toga {to su fundamentalni za rad ra~unarskog sistema,

predaju se od strane korisnika. Ovakvo jedno razmi{ljanje ukazuje da ove komponente nisu

sastavni deo samog ra~unarskog sistema. U daljem tekstu smatra}emo da ra~unarski sistem

~ine sve ~etiri prethodno nabrojane komponente.

Specifi~ne implementacije ra~unarskih sistema menjaju se tokom vremena, ali osnovni

koncepti ostaju isti. U principu svi ra~unarski sistemi imaju sli~ne hardverske i softverske

komponente i skoro svi obavljaju takore}i iste funkcije.

Cilj ovog kursa je da upozna studenta kako te komponente rade i kako one uti~u na

ispravnost i performanse.

2 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

1.2. Arhitektura i organizacija ra~unara

Kada se izu~avaju ra~unari, sa ciljem da ne dodje do konfuzije oko obja{njenja

odredjenih termina, neophodno je prvo razjasniti ~itaocu zna~enje slede}a dvaju pojmova:

arhitektura ra~unara i organizacija ra~unara.

Pojam arhitektura ra~unara ti~e se funkcionalnog pona{anja ra~unarskog sistema i

uklju~uje one atribute sistema koji su vidljivi programeru, tj. atribute koji imaju direktan

uticaj na logi~ko izvr{enje programa. To zna~i da se pogled programera pre svega odnosi na

aspekte kakvi su:

a) broj bitova koji se koriste za predstavljanje razli~itih tipova podataka - tipi~no su to

karakteri (znaci), integer i floating point (FP) brojevi, i td. Tako na primer, za

predstavljanje karaktera koriste se 8-bitni binarni brojevi, za predstavljanje integer vrednosti koriste se 16-bitne binarne vrednosti, i dr.

b) skup instrukcija - odnosi se na tipove operacija koje su podr`ane od strane te

arhitekture, kakve su recimo operacije tipa sabiranje, oduzimanje, pomeranje, poziv

potprograma, i dr.

c) tehnike za adresiranje memorije - odnose se na definisanje adresa memorijskih

lokacija kojima se pristupa

d) ulazno-izlazni (U/I) mehanizmi - ti~u se tehnika za prenos podataka, organizaciju

ulazno-izlaznog prostora, i dr.

Sa druge strane, pojam organizacija ra~unara odnosi se na operativne jedinice i

njihovo medjusobno povezivanje, tj. detalje koji nisu direktno vidljivi programeru, kakvi su

na primer, interfejsi izmedju ra~unara i perifernih uredjaja, taktna frekvencija, tehnologija

instalirane memorije, namena i naponski nivoi raznih upravlja~kih signala, i td.

U toku svog `ivotnog veka arhitektura ra~unara se ne menja (ne menja se obim

podataka, skup instrukcija, adresni na~ini rada itd.) dok organizacija ra~unara obi~no

pretrpi ve}i broj promena (promene se gabariti uredjaja, taktna frekvencija rada, tehnologija

izrade plo~a i modula itd.).

U ovoj knjizi, ravnopravno, izu~ava}emo i ukaziva}emo na detalje koji se odnose kako

na arhitekturu tako i na organizaciju ra~unara.

1.3. Hijerarhijska organizacija ra~unara

Ra~unar je kompleksan sistem sastavljen od velikog broja elektronskih komponenata.

Odmah se postavlja pitanje: Kako se funkcionisanje ra~unara mo`e najefikasnije opisati i

rad sa njim uspe{no savladati? Pri ovome treba imati u vidu da se danas ra~unarima

uspe{no koriste ne samo stru~njaci profila elektronike nego i in`enjeri gradjevine,

ma{instva, tehnologije, zatim lekari, ekonomisti, pravnici i td. Svi oni kreiraju svoje

aplikacije ili uspe{no koriste neke gotove aplikacione programe. Jedino je pri ovome

sigurno da svaki od nabrojanih korisnika ne poznaje sve detalje ra~unarskog sistema, ali je,

sa druge strane, evidentno da svi oni bez ve}ih problema koriste mogu}nosti ra~unara.

1.3.1. Koncept nivoa

Klju~ ka br`oj i lak{oj spoznaji principa rada ra~unara nalazi se u hijerarhiskoj

organizaciji kompleksnih sistema. Konkretno, kada se govori o ra~unarskoj arhitekturi u

kori{}enju koncepta nivoa. Osnovna ideja je da postoji ve}i broj nivoa, ili pogleda, na

kojima se rad ra~unara mo`e razmatrati, po~ev od najvi{eg, na kome korisnik izvr{ava

programe ili koristi ra~unar, pa sve do najni`eg, koga ~ine tranzistori i `ice (veze). Izmedju

1. Osnovi o ra~unarima 3

najvi{eg i najni`eg nivoa, kako je to prikazano na slici 1.1, postoji ve}i broj medjunivoa.

Kako idemo sa najni`eg prema najvi{em nivou, nivoi postaju sve apstraktniji, tj. interna

struktura ra~unara je sve manje vidljiva. Prakti~ne reperkusije ovakvog pristupa su slede}e.

Recimo, ekonomista treba da poznaje ra~unar samo na nivou aplikacionih programa i to

samo radi zara~unavanja kamate, obrade knjigovodstvenih podataka, pravljenja godi{njih

izve{taja itd.

Sa druge strane, projektant hardvera, koji radi na nivou logi~kih kola (L1), ekspert je

za projektovanje brzih sabira~a, mno`a~a, kola za multipleksiranje signala. Ali, da bi

uspe{no obavio svoj zadatak, on mora da poznaje i neke detalje koji se odnose na susedne

nivoe. Konkretno to zna~i slede}e: Projektant mora da zna kolika je opteretljivost logi~kih

kola (fan-in i fan-out) koje je on iskoristio u {emi da bi se izbegli hazardi u radu kola, {to je

ina~e klju~ni deo aktivnosti projektanta koji je zadu`en za nivo tranzistora i `ica. Takodje,

projektant hardvera treba da zna na~in rada i da je u stanju da defini{e signale upravljanja

za slo`enije logi~ke blokove, kakvi su ALU, serijski ili paralelni mno`a~i i dr., {to je

primarni zadatak projektanta na nivou funkcionalnih jedinica. Globalno posmatrano,

projektant ma{ine nivoa 'i', da bi uspe{no obavio svoj zadatak, mora izvrsno da poznaje

detalje ma{ine na nivou 'i', ali i dobro da vlada sa problemima koji se odnose na na~in

sprezanja sa susednim nivoima 'i-1' i 'i+1'.

korisnicki nivo : aplikacioni programi

nivo viših programskih jezika

asemblerski jezik / mašinski kod

mikroprogramsko / direktno upravljanje

funkcionalne jedinice ( memorija, ALU, itd.)

logicka kola

tranzistori i žice

najviši nivo

najniži nivo

L6

L5

L4

L3

L2

L1

L0

Slika 1.1 Nivovska organizacija ma{ine

A. Nivo aplikacionih programa: Veliki broj korisnika ra~unara najbolje je upoznat sa

nivoom aplikacionih programa. Na ovom nivou korisnik interaguje sa ra~unarom

izvr{enjem programa kakvi su word processor, razne video igre, i dr. Drugim re~ima,

korisnik vidi ra~unar preko programa koji se na tom ra~unaru izvr{ava, a da pri tome ni{ta

od njegove interne strukture korisniku nije vidljivo.

B. Nivo vi{eg programskog jezika: Svako ko je programirao ra~unar na nekom

vi{em programskom jeziku (high level language - HLL-nivo), kakav je recimo C, Pascal,

Fortran ili neki drugi jezik, zna kako se interaguje sa ma{inom. Naime, programer vidi

4 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

samo jezik i nijedan detalj koji se odnosi na ni`e nivoe. Na HLL-nivou programer vidi

tipove podataka i iskaze HLL-a, ali ne zna detalje o tome kako se ti podaci implementiraju

od strane ma{ine. Kompajler je taj koji je zadu`en za preslikavanje tipova podataka i

iskaza sa HLL-nivoa na hardver ra~unara. Programi kreirani na HLL-u mogu se

rekompajlirati za razli~ite ma{ine tako da je efekat njihovog izvr{enja isti, nezavisno od

toga na kojoj ma{ini se oni kompajliraju i izvr{avaju. Programi napisani na HLL-u

kompatibilni su i nezavisni od tipa ma{ine. Ovaj tip kompatibilnosti naziva se izvorno-

kodna kompatibilnost.

C. Asemblerski jezik / nivo ma{inskog koda: Kao {to smo napomenuli, HLL-nivo

nema veliki uticaj na ma{inu za koju se HLL prevodi. Kompilator prevodi izvorni kod u

ma{inske instrukcije, tj. u oblik koji je poznat kao ma{inski jezik ili ma{inski kod. Za

razliku od HLL-a ma{inski jezik uklju~uje i neke aspekte ma{ine na ni`em nivou. U su{tini,

na nivou ma{inskog jezika manipuli{e se sa hardverskim resursima kakvi su registri i

defini{e se prenos podataka izmedju njih. To zna~i da se najve}i broj ma{inskih instrukcija

opisuje u zavisnosti od njihovog efekta na nivou registarskog prenosa. Kolekcija ma{inskih

instrukcija za datu ma{inu zove se skup instrukcija. Svaki ma{inski kod predstavlja

kolekciju logi~kih jedinica i nula, a naziva se ma{inski binarni kod, ili tzv. binarni kod.

Pisanje programa u binarnom kodu, tj. programiranje uz pomo} logi~kih nula i jedinica, je

naporan posao, neefikasan i podlo`an gre{kama. Izlaz iz ove situacije predstavlja re{enje

koje se nudi od strane asemblera. Asembler prevodi simboli~ke oznake ma{inskih

instrukcija, tzv. mnemonike - ADD, MOV, JUMP i dr., u odgovaraju}i binarni kod. Ovaj

jezik, za ~ije konstrukcije postoji odnos jedan-na-prema-jedan u odnosu na kostrukcije

ma{inskog jezika, naziva se asemblerski jezik.

D. Upravlja~ki nivo: Zadatak upravlja~ke jedinice je da kontroli{e tok registarskog

prenosa podataka o kome smo prethodno govorili. Ovu funkciju upravlja~ka jedinica

obavlja uz pomo} upravlja~kih signala kojima se reguli{e prenos podataka izmedju

registara, i preko logi~kih kola koja prenose te podatke. U su{tini, upravlja~ka jedinica

interpretira jednu po jednu instrukciju ma{inskog koda, uslovljavaju}i obavljanje

specificiranog registarskog prenosa ili preuzimanje nekih drugih akcija.

Kao {to je prikazano na slici 1.1 upravlja~ka jedinica se mo`e realizovati na vi{e

na~ina. Najve}i broj realizacija upravlja~kih jedinica zasnovan je na direktnom

upravljanju (hardwired control). To zna~i da se upravlja~ki signali, koji reguli{u

registarski prenos, direktno generi{u od strane bloka sastavljenog od digitalnih logi~kih

komponenata. Jedinica zasnovana na direktnom upravljanju karakteri{e se velikom brzinom

rada, ali treba naglasiti da se modifikacije hardvera ove jedinice relativno te{ko izvode.

Naj~e{}e mala izmena u skupu instrukcija zahteva kompletan redizajn upravlja~ke jedinice.

Relativno sporiji i jednostavniji pristup za implementaciju instrukcija predstavlja

mikroprogram. Mikroprogram je u su{tini skup kratkih programa napisanih na niskom

jezi~kom nivou od koji svaki, u direktnoj interakciji sa hardverom, obavlja zadatak

definisan jednom ma{inskom instrukcijom. Mikroprogram se ~esto naziva i firmver

(firmware) s obzirom da predstavlja sponu izmedju hardvera i softvera. Firmver se izvr{ava

od strane mikroprogramskog-kontrolera.

E. Nivo funkcionalne jedinice: Registarski prenos i druge operacije koje se

implementiraju od strane upravlja~ke jedinice, a od va`nosti su za korektan rad ra~unara,

vr{e preme{tanje podataka ka ili iz funkcionalnih jedinica. Tipi~ne funkcionalne jedinice

kod ra~unara su interni CPU-ovi registri, ALU, glavna memorija, i dr.

1. Osnovi o ra~unarima 5

F. Logi~ka kola, tranzistori i veze: Najni`i nivoi na kojima se opisuje rad ra~unara

su nivo logi~kih kola i nivo tranzistora. Naime, funkcionalne jedinice su izvedene od

logi~kih kola, a ova od tranzistora. Logi~ka kola implementiraju logi~ke operacije od kojih

zavisi funkcionisanje ra~unara. Sa ta~ke gledi{ta hijerarhijske organizacije, logi~ka kola su

sastavljena od elektri~nih komponenti, kakve su tranzistori, i `ica koje povezuju te

komponente. Na ovom nivou, funkcionisanje ra~unara je vidljivo preko amplitude

naponskih i strujnih impulsa, vremena propagacije signala kroz kola, i dr.

1.3.2. Interakcija izmedju nivoa

Svaki nivo sa slike 1.1 obavlja specifi~nu funkciju. Ipak, razlike koje postoje kako u

okviru nivoa tako i izmedju nivoa veoma ~esto su nejasne. Da bi ukazali na ovaj problem

analizira}emo slede}i primer. Neka neki ra~unar novije generacije poseduje namenski

hardver za FP (floating point) operacije, dok drugi iz iste familije, ali starije generacije

poseduje samo hardver za izvr{enje integer operacija. Nezavisno od toga o kojoj se

generaciji govori, sa ta~ke gledi{ta HLL-nivoa, i jedan i drugi ra~unar treba da izvr{avaju

FP operacije. Kod ra~unara starije generacije, FP instrukcije se izvr{avaju kao sekvenca

postoje}ih ma{inskih instrukcija integer tipa pomo}u kojih se imitira, ili emulira, rad FP

operacija. Ovakvu situaciju sre}emo kod mikroprocesora koji opciono koriste numeri~ke

koprocesore. Oni mikroprocesori koji nemaju ugradjen numeri~ki FP koprocesor emuliraju

FP instrukcije pomo}u skupa FP rutina koje su implementirane na ma{inskom jeziku

mikroprocesora. Na nivou HLL-a i asemblerskog jezika obe implementacije se vide na isti

na~in, jedina razlika postoji u brzini izvr{enja instrukcija, tj. mikroprocesor koji ima

implementirano FP koprocesor mnogo br`e izvr{ava FP operacije od onoga koji ih emulira.

Takodje veoma ~esto u toku realizacije ra~unarskog sistema dolazi do spajanja

aktivnosti koje se obavljaju na nivoima HLL-a i firmvera kao i na nivou funkcionalnih

jedinica. Zbog toga je te{ko identifikovati koja se od operacija izvr{ava na kojem od

pomenutih nivoa. Ideja o uslojavanju arhitekture ra~unara na hijerarhijsko organizovane

nivoe nije bila namenjena cilju da se ovi nivoi koriste radi pravljenja neke {eme na osnovu

koje }emo klasifikovati i izu~avati ra~unare, nego ka tome da se {to vi{e pomogne ~itaocu

prilikom sagledavanja globalne koncepcije rada ra~unarskog sistema.

1.4. Pogled programera na sistem

Sa ta~ke gledi{ta korisnika, ra~unarski sistem je namenjen obavljanju nekog korisnog

posla kao {to je word-procesiranje, manipulisanje sa podacima, re{avanje nekog slo`enog

matemati~kog problema, ili grafi~ko prikazivanje mernih rezultata na osnovu prikupljenih

podataka od nekog slo`enog tehnolo{kog procesa. Iako se radi o razli~itim tipovima

zadataka svi oni se od strane ra~unara obavljaju na, u su{tini, identi~an na~in, shodno

modelu ulaz-proces-izlaz. To zna~i da program prihvata ulazne podatke sa diska, mi{a,

tastature, ili nekog drugog ulaznog uredjaja, obavlja neki tip procesiranja nad ulaznim

podacima, i generi{e izlazne podatke koje sme{ta na disk, {tampa na {tampa~u, prikazuje na

monitoru, ili upu}uje nekom drugom izlaznom uredjaju. Dijagram koji opisuje bilo koji

ra~unarski proces prikazan je na slici 1.2. Operacije koje se obavljaju u toku procesiranja su

tipa jednostavna izra~unavanja, sortiranje, uporedjivanje, dono{enje odluka, i neke druge

operacije. Student se upoznaje sa modelom tipa ulaz-proces-izlaz u toku savladavanja

predmeta Osnove programskih jezika, pa zbog toga o njemu ne}emo vi{e govoriti.

Moderne programske tehnike ~esto koriste alternativne paradigme kod kojih se razli~iti

aspekti problema modeliraju kao objekti. Objekti su celine (entities) a opisuju se pomo}u

6 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

svojih osobina i akcija koje mogu da obave. Osobine mogu uzeti formu podataka, dok su

akcije procedure koje se obavljaju nad tim podacima. Objektni model preuobli~ava model

ulaz-proces-izlaz, ali ga ne invalidira. Interno, {to se samog objekta ti~e, obavlja se

identi~no izra~unavanje.

memorija

ulaz proces izlaz

Slika 1.2 Model ulaz-proces-izlaz

1.5. Pogled projektanta arhitekture ra~unara

Projektant arhitekture ra~unara vidi sistem na svim nivoima prikazanim na slici 1.1. U

toku faze projektovanja ra~unarskog sistema cilj projektanta je da sistem postigne visoke

performanse uz {to je mogu}e ni`u cenu. Performanse se obi~no specificiraju preko brzine

izvr{enja programa, kapaciteta ugradjene memorije, tipa kori{}enog displeja, i izbora i

promene ve}eg broja drugih tehnolo{kih parametara. Kada je u pitanju cena tu se pre svega

misli na iznos novca koga treba ulo`iti za kupovinu ra~unara. Veoma ~esto od presudnog

uticaja mogu biti mali-gabarit, mala-te`ina i mikro-potro{nja, kada `elimo da kupimo

prenosivi ra~unar. Ostvarivanje optimalnog odnosa izmedju cene i performanse obi~no

zahteva da se u~ini veliki broj kompromisa i to na svim nivoima.

1.6. Tipi~an ra~unarski sistem

Dana{nji ra~unari su u zna~ajnoj meri evoluirali u odnosu na one iz 50-ih i 60-ih

godina pro{log veka. Ne samo da su dana{nji ra~unari postali po gabaritima znatno manji,

nego su po postignutim performansama daleko superiorniji, a cena i potro{nja su daleko

ni`e. No, nezavisno od zaista impresivnog napretka koji je zadnjih nekoliko decenija

ostvaren u ra~unarskoj tehnologiji, osnovne komponente (hardver, softver, podaci i

komunikaciona komponenta) su jo{ i dalje prepoznatljive kod savremenih ra~unara.

Na slici 1.3 prikazana je jedna tipi~na struktura ra~unarskog sistema. Obi~no koristimo

tastaturu i mi{ za unos programskog teksta i podataka, kao i komandi u ra~unar. Displej

(monitor) se standardno koristi za opservaciju izlaza. [tampa~ je veoma ~esto dostupan kao

alternativni izlaz monitoru. Preko komunikacionog interfejsa ra~unarski sistem komunicira

sa udaljenim sistemima.

Izra~unavanje i druge programske operacije se obavljaju od strane centralne

procesorske jedinice (central processing unit - CPU) koja se nalazi unutar ra~unara. U toku

procesiranja, u memoriji ra~unara se ~uvaju programi i podaci. Drugi ulazno-izlazni

uredjaji kakvi su kruti-disk i jedinica magnetne trake koriste se za dugoro~no ~uvanje

programskih fajlova, kao i fajlova podataka. Podaci i programi se prenose izmedju razli~itih

ulazno-izlaznih uredjaja i koriste od strane CPU-a.

Hardverski deo ra~unarskog sistema ~ine CPU, memorija, svi ulazni, izlazni, kao i

uredjaji za memorisanje. Pored ulazno-izlaznih uredjaja prikazanih na slici 1.3 ~esto su deo

1. Osnovi o ra~unarima 7

hardvera ra~unara i slede}i ulazno-izlazni uredjaji: bar-kod skener, opti~ki skener za

prepoznavanje znakova, skener slike, razni uredjaji elektronske merne instrumentacije,

svetle}e pero, grafi~ka tableta, ploter, i dr.

Slika 1.3 podjednako va`i kako za velike (mainframe) tako i za male ra~unare. Veliki i mali

ra~unari prvenstveno se razlikuju po brzini rada i kapacitetu memorije. Osnovne hardverske

komponente su veoma sli~ne.

Slika 1.3 Tipi~ni ra~unarski sistem

1.6.1. Hardverske komponente

Najvidljiviji deo ra~unarskog sistema je bez sumnje hardver. Na slici 1.4 prikazana je

jedna standardna hardverska organizacija ra~unarskog sistema koju ~ine slede}a ~etiri

podsistema: magistrale, CPU, ulazno-izlazni podsistem, i memorijski podsistem.

A. Magistrale - magistrala je kolekcija elektri~nih provodnika a koristi se za prenos

informacije izmedju gradivnih blokova sistema. U su{tini, magistrala predstavlja skup

veza (linija) po kojima se u paralelnoj formi prenose signali i napajanje. Ona obezbedjuje

put preko koga sastavni delovi sistema mogu medjusobno komunicirati, kao na primer, da

se sadr`aj jednog registra kopira u drugi. Magistrala mo`e biti jednosmerna ili

dvosmerna. Jednosmerna magistrala mo`e prenositi podatke samo u jednom smeru, dok

dvosmerna u oba, ali ne istovremeno. U elektri~nom smislu veliki broj uredjaja ima

mogu}nost da aktivno pobudjuje magistralu (uklju~uje se na magistralu), ili da se isklju~uje

sa nje. Magistralu, kod koje se njeni sastavni delovi mogu povezivati na ovaj na~in,

zovemo trostati~ka magistrala, tj. svaka linija mo`e biti u stanju 0, 1 ili isklju~eno.

Svakom magistralom mogu se prenositi tri grupe signala: podaci, adrese i upravlja~ki

signali. Kao {to se vidi sa slike 1.4 u jednom sistemu mo`e istovremeno da egzistira ve}i

broj magistrala (sistemska, memorijska, U/I magistrala).

8 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

Magistrale se obi~no projektuju za prenos podataka fiksnog obima poznatih kao re~i.

Broj bajtova u re~i je osnovni sistemski parametar koji se razlikuje od sistema do sistema.

Tako na primer, kod Intel-ovih Pentium sistema obim re~i je 4 bajta, kod klase sistema tipa

server kakvi su Intel Itanium i Sun SPARCS obim re~i je 8 bajtova, a kod malih embedded

kontrolera koji se koriste u procesnoj i automobilskoj industriji obim re~i je 1 ili 2 bajta.

Slika 1.4 Hardverska organizacija jednog tipi~nog sistema

B. Ulazno-izlazni uredjaji - ulazno-izlazni (U/I) uredjaji su veza ra~unara sa

spoljnjim svetom. U konkretnom slu~aju (slika 1.4) U/I podsistem ~ine ~etiri U/I uredjaja:

a) tastatura i mi{ za unos podataka i komandi od strane korisnika; b) displej kao izlaz za

korisnika; i c) disk za dugoro~no memorisanje podataka i programa.

Svaki U/I uredjaj je povezan na U/I magistralu preko kontrolera ili adaptera. Razlika

izmedju ova dva gradivna bloka, koje ~esto nazivamo i U/I interfejsi, prvenstveno se ogleda

u na~inu pakovanja. Kontroleri su ~ip-setovi (jedinstveno ili skup integrisanih kola) koji su

locirani na glavnoj sistemskoj plo~i (~esto nazvanoj motherboard), dok je adapter kartica

koja se sme{ta u slot na sistemskoj plo~i. Nezavisno od na~ina izvodjenja, namena U/I

interfejsa je da obavi prenos informacije ka/iz U/I uredjaja preko U/I magistrale.

Obi~no na svaki U/I kontroler ili adapter mogu}e je povezati vi{e od jednog U/I

uredjaja, ili tzv. periferala. Na primer, na jedan U/I flopi disk kontroler mogu}e je povezati

dve flopi disk jedinice (drajva).

U/I interfejsi ne predstavljaju samo mehani~ke konektore koji povezuju periferal na

U/I magistralu, nego sadr`e i odredjeni iznos "inteligencije", tj. poseduju logiku koja

obavlja komunikacionu funkciju izmedju periferala i magistrale. ^itaocu se odmah name}e

pitanje: zbog ~ega se periferali ne povezuju direktno na U/I magistralu? Razlozi su slede}i:

(a) Postoji {irok dijapazon periferala koji se razlikuju po na~inima rada. Sa tog aspekta

neprakti~no je ugraditi svu potrebnu logiku unutar CPU-a kako bi mogli da upravljamo sa

tako velikim brojem razli~itih U/I uredjaja.

1. Osnovi o ra~unarima 9

(b) Brzina prenosa podataka koja karakteri{e periferale je ~esto sporija u odnosu na

brzinu prenosa podataka izmedju memorije i CPU-a. Zbog toga neprakti~no je koristiti

veoma brzu memorijsku magistralu za direktnu komunikaciju sa periferijama.

(c) Periferali ~esto koriste razli~ite formate podataka i obim re~i u odnosu na ra~unar

na koji se priklju~uju.

Kao {to se vidi na slici 1.4 na U/I magistralu, preko odgovaraju}ih U/I interfejsa,

povezan je ve}i broj periferala. Pri ovome svakom periferalu je dodeljena jedinstvena

adresa tako da CPU mo`e selektivno da pristupa odredjenom U/I uredjaju. Samo onaj

uredjaj koji prepozna svoju adresu odazva}e se na CPU-ove komande.

C. Centralna procesorska jedinica - CPU, ili jednostavno re~eno procesor, je

ma{ina koja interpretira (ili izvr{ava) instrukcije sme{tene u glavnoj memoriji.

Instrukcije se izvr{avaju jedna za drugom na slede}i na~in: Prvo, CPU pribavlja

instrukciju iz memorije, zatim je dekodira, i na kraju izvr{ava. Kao i svaki digitalni sistem,

CPU se mo`e podeliti na dva gradivna bloka: programsko-upravlja~ku jedinicu

(upravlja~ki deo), i aritmeti~ko-logi~ku jedinicu (deo za obradu podataka), tj. "mozak" i

"snagu" procesora. Danas se aritmeti~ki organ naziva i staza podataka (datapath). Staza

podataka sadr`i izvr{ne jedinice, kao {to je aritmeti~ko-logi~ka jedinica (ALU), pomera~e,

registre i komunikacione puteve izmedju njih. Staza podataka sadr`i registre op{te namene

vidljive korisniku, programski broja~ (PC), instrukcioni registar (IR), prekidno adresni

registar (IAR), statusni registar procesora (PSW) i dr.

Staza podataka obavlja aritmeti~ke operacije, a upravlja~ka jedinica ukazuje stazi

podataka, memoriji i U/I uredjajima {ta da urade u zavisnosti od sadr`aja teku}e

programske instrukcije.

Kao {to se vidi sa slike 1.4, jedan od klju~nih gradivnih blokova CPU-a je registar

nazvan programski broja~ (program counter - PC). U bilo kom trenutku PC sadr`i adresu

neke ma{insko-jezi~ke instrukcije koja je sme{tena u glavnoj memoriji.

Od trenutka kada se sistem uklju~i na napajanje, pa sve do trenutka kada se isklju~i,

procesor slepo ponavlja jedan te isti zadatak: ^ita instrukciju iz glavne memoriju na koju

pokazuje PC, interpretira bitove instrukcija, obavlja neku jednostavnu operaciju diktiranu

od strane instrukcije, i zatim a`urira PC da bi ukazao na narednu instrukciju, koja mo`e ali

ne mora biti kao naredna u memoriji u odnosu na instrukciju koja se teku}e izvr{ava.

Postoje nekoliko osnovnih operacija koje izvr{ava CPU. U toku izvr{enja ovih operacija

aktivno u~estvuju glavna memorija, polje registara (register file) i ALU. Polje registara se

mo`e posmatrati kao mamorija malog kapaciteta koju ~ini skup registara obima re~, od

kojih svaki ima svoje jedinstveno ime. ALU izra~unava nove podatke i vrednosti adresa.

Neke od jednostavnih operacija koje CPU obavlja po nalogu instrukcije su slede}e:

a) punjenje (load) - kopira bajt ili re~ iz glavne memorije u registar, upisivanjem preko

prethodnog sadr`aja registra.

b) pam}enje (store) - kopira bajt ili re~ iz registra u lokaciju glavne memorije,

upisivanjem preko prethodnog sadr`aja te lokacije.

c) a`uriranje (update) - dovodi sadr`aj dva registra na ulaze ALU-a, sabira te dve re~i, i

sme{ta rezultat u registar, upisivanjem preko prethodnog sadr`aja tog registra.

d) U/I ~itanje (I/O read) - kopira bajt ili re~ sa U/I uredjaja u registar.

e) U/I upis (I/O write) - kopira bajt ili re~ iz registra u U/I uredjaj.

f) grananje (jump) - izvla~i re~ iz same instrukcije i kopira tu re~ u PC, upisivanjem

preko prethodnog sadr`aja PC-a.

D. Memorija - Tokom proteklih nekoliko decenija, brzina procesora merena brojem

instrukcija koje se izvr{avaju u sekundi, za istu cenu, duplirala se svakih 18 meseci. Sa

10 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

druge strane, brzina pristupa memoriji je imala isti trend, samo {to je za istu cenu,

pove}anje na godi{njem nivou bilo 10%, a kapacitet memorije se u~etvorostru~avao na

svakih 36 meseci. I dok su se, u proteklom periodu, brzina procesiranja CPU-a i kapacitet

memorije pove}avali u istom iznosu, sve vi{e se potencirala razlika u brzini procesora i

brzini pristupa memoriji.

Razliku koja postoji u brzini rada izmedju procesora sa jedne i memorije sa druge

strane, projektanti arhitekture te`e da re{e razli~itim premo{}avanjima. Jedan tipi~ni

ra~unarski sistem sadr`i nekoliko tipova memorije, po~ev od brzih i skupih internih

registara pa sve do sporih i jeftinih prenosivih diskova. Uzajamni uticaj brze i spore

memorije se uskladjuje tako {to se taj procep popunjava ve}im brojem razli~itih tipova

memorije koje rade koordinisano, tako da se ra~unarski sistem pona{a kao da ima

jedinstvenu veoma brzu i veliku memoriju. Ovakav koncept se bazira na hijerarhijskoj

organizaciji memorije (za vi{e detaljla o hijerarhijskoj organizaciji memorije videti sliku

1.8, i poglavlje Organizacija memorije). Na slici 1.5 prikazana je hijerarhija, zajedno sa

nekim faktorima koji su klju~ni sa aspekta brzine prenosa podataka.

medijum

memorisa-

nja

tipi~no

prose~no

vreme

pristupa

propusnost

(br. prenetih

bajtova u

sekundi)

kapacitet

medijuma

obim bloka

preba~enog

sa ni`eg na

vi{i nivo

ko upravlja

prenosom

podataka

tehnologija

izrade

registri

CPU-a

200ps-

1ns 0.5-60GB/s 256B-1kB

re~ obima

2 ili 4B

upravlja~ka

jednica

CPU-a

CMOS

SRAM

L1 ke{

memorija 5-10ns 0.8-0.1GB/s 16-64kB

linija

4-32B

primarni

ke{

kontroler

CMOS

SRAM

L2 ke{

memorija 15-40ns 0.1-0.3GB/s

128kB-

1GB

linije

4-128B

sekundarni

ke{

kontroler

CMOS

SRAM

glavna

memorija

50-

100ns

20-

80MB/s

256MB-

1GB

stranice

4kB

MMU

(jedinica za

upravljanje

kodom

memorije)

CMOS

DRAM

slotovi

pro{irenja

glavne

memorije

75-

500ns

800kB-

30MB 1-10GB

stranice

4kB MMU

CMOS

DRAM

disk ke{ 60-

500ns

900kB-

30MB 1-10MB

blokovi

4kB

kontroler

uredjaja

CMOS

DRAM

kruti disk 5-50ms 1200-

6000kB/s

100-

500GB

fajlovi

obima MB

kontroler

uredjaja

magnetni

medijum

flopi disk 95ms 100-200kB/s 1,44MB fajlovi

obima kB

kontroler

uredjaja

magnetni

medijum

CD-ROM 100-

500ms

500-

4000kB/s

600MB-

20GB

fajlovi

obima MB

kontroler

uredjaja

opti~ki

zapis

trake

(cartrige)

0,5s pa

navi{e 2000kB/s 1-10TB

fajlovi

obima MB

kontroler

uredjaja

magnetni

medijum

Slika 1.5 Performanse memorije i kapacitet memorisanja

1. Osnovi o ra~unarima 11

Na vrhu hijerarhije su registri CPU-a, a koriste se za privremeno ~uvanje podataka u

toku procesiranja. Pristup ovim registrima je takore}i trenutan s obzirom da su oni sastavni

deo CPU-a. Ke{ je mala, ali veoma brza memorija, u kojoj se ~uvaju instrukcije i podaci. U

glavnoj memoriji se ~uvaju programi i podaci. Slotovi pro{irenja se uglavnom koriste kod

velikih ra~unara. Sekundarna memorija se tretira kao U/I uredjaj, a karakteri{e se velikim

kapacitetom memorisanja uz relativno spori odziv. Postoji ve}i broj tipova sekundarne

memorije kakvi su kruti diskovi, flopi diskovi i magnetne trake koji koriste magnetni

medijum za zapis, i CD-ROM i DVD (Digital Versatile Disc) koji koriste opti~ki zapis.

Uka`imo sada, u kratkim crtama, na osnovne karakteristike glavne memorije,

sekundarne memorije, ke{ memorije, i hijerarhijske organizacije memorije kod ra~unara.

Glavna memorija - ~esto nazvana primarna ili radna memorija, koristi se za

~uvanje programa i podataka kojima se pristupa od strane CPU-a. Primarnu memoriju ~ini

veliki broj }elija, od kojih je svaka numerisana i individualno adresibilna. Svaka }elija ~uva

jedan binarni broj koji mo`e da predstavlja podatak ili instrukciju. Osnovni obim }elije kod

velikog broja ra~unara je 8 bitova, a naziva se memorijski bajt. Susedne memorijske }elije

se kombinuju radi formiranja ve}ih grupa. Kod velikog broja sistema, ~etiri memorijska

bajta se kombinuju u formi koju nazivamo re~, dva bajta u formi polu-re~, itd.

Kapacitet primarne memorije odredjuje maksimalni broj instrukcijskih re~i i re~i

podataka koje se mogu istovremeno napuniti (~uvati) u memoriju. Tako na primer, ra~unar

sa 512 MB glavne memorije nije u stanju da izvr{ava programe koji za ~uvanje svojih

instrukcija i podataka zahtevaju kapacitet od 870 MB. To zna~i da se u okviru ra~unara

moraju ugraditi odgovaraju}i mehanizmi koji }e obezbediti punjenje programa u sekcijama.

Obi~no to zna~i da se u glavnu memoriju puni samo ona sekcija koja se trenutno izvr{ava.

Napretkom poluprovodni~ke tehnologije iznos glavne memorije drasti~no se pove}ao.

Negde 80-tih godina pro{log veka 64 kB se smatralo suvi{e velikim iznosom. Danas, 32-

bitni personalni ra~unari poseduju i do 1 GB memorije. Kod velikih ra~unara iznos glavne

memorije je reda nekoliko stotina GB-a. Obim programa je takodje drasti~no pove}an.

Komercijalni programi koji se nude na tr`i{tu po svom obimu reda su nekoliko stotina MB-

a.

Sekundarna memorija - sli~ni zaklju~ci va`e i za sekundarnu memoriju. Uo~imo ipak

jednu bitnu razliku koja postoji izmedju poluprovodni~kih RAM memorija (registri, ke{,

glavna memorija) i uredjaja za masovno memorisanje (magnetni i opti~ki diskovi). Za rad

registara i RAM memorije neophodno je kontinualno napajanje. Naime, ovi gradivni

blokovi nakon isklju~enja napajanja gube memorisani sadr`aj. Nasuprot tome uredjaji za

masovno memorisanje zadr`avaju, na nedefinisano dug period, zapam}enu informaciju i

nakon isklju~enja napajanja. Ovaj tip memorisanja naziva se ne-nestalan (non-volatile).

U dana{nje personalne ra~unare instalirani su kruti-diskovi kapaciteta stotinu i vi{e

GB-a. Memorisanje slika i videa, na primer, zahteva ogroman memorijski kapacitet. Da bi

se zadovoljili ovi zahtevi u ra~unarske sisteme se ugradjuju polja krutih-diskova pomo}u

kojih je mogu}e memorisati informaciju od nekoliko stotina tera-bajtova (TB).

Ke{ memorija - u toku izvr{enja programa najve}i broj obra}anja memoriji se odnosi

na mali broj lokacija. Obi~no 90% od vremena izvr{enja programa se tro{i na 10% koda.

Ova osobina je poznata kao princip lokalnosti. Ako se program obra}a nekoj memorijskoj

lokaciji X tada postoji velika verovatno}a da }e naredno obra}anje toj istoj lokaciji biti

veoma skoro. Ovu osobinu nazivamo vremensku lokalnost (temporal locality). Sli~no,

postoji i prostorna lokalnost (spatial locality), a to zna~i da postoji velika verovatno}a da

}e lokacija kojoj }emo se kao narednoj obratiti biti veoma blizu teku}e, u odnosu na

memorijsku adresu. Vremenska lokalnost se javlja kao posledica toga {to program najve}i

12 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

deo svog vremena tro{i na izvr{enje iteracija ili rekurzija, tako da se isti deo koda u toku

vremena koristi ve}i broj puta. Prostorna lokalnost se javlja zato {to su podaci obi~no

memorisani u uzastopnim, a ne u razudjenim, lokacijama.

Glavni cilj projektanta ra~unarskog sistema je da u~ini operacije obra}anja memoriji

{to je mogu}e br`im. Realno posmatrano pristup memoriji je, u op{tem slu~aju, znatno

sporiji u poredjenju sa brzinom CPU-a tako da memorija predstavlja usko-grlo sa aspekta

performansi sistema. U principu, kada je u pitanju brzina obra}anja memoriji va`i da su

memorije ve}eg kapaciteta sporije u odnosu na memorije manjeg kapaciteta, ali su zato

br`e memorije skuplje u odnosu na sporije. Tako na primer, disk jedinica ima obi~no od

100 do 1000 puta ve}i memorijski kapacitet u odnosu na kapacitet glavne memorije, ali je

procesoru potrebno 10,000,000 puta du`e vreme da pro~ita podatke sa diska nego iz

memorije. Na sli~an na~in, registarsko polje CPU-a u koje mo`e da se memori{e nekoliko

stotina bajtova informacije, nasuprot milionima bajtova koji se ~uvaju u glavnoj memoriji,

je 100 puta br`e u odnosu na glavnu memoriju.

I pored impresivnog napredka u poluprovodni~koj tehnologiji zadnjih decenija

~injenica je da se procep koji se odnosi na brzinu pristupa procesor-memorija (processor

memory gap) i dalje kontinualno pove}ava. Izgleda, lak{e je da se napravi procesor koji }e

raditi br`e, nego memorija koja }e biti br`a.

Na osnovu prethodne diskusije zaklju~ili smo da se u toku izvr{enja programa najve}i

broj obra}anja memoriji odnosi na mali skup lokacija, {to zna~i da se princip lokalnosti

mo`e uspe{no iskoristiti za pobolj{anje performansi sistema, tj. smanjenje procepa u

vremenu pristupa procesor-memorija. U tom cilju, sistemski projektanti izmedju glavne

memorije i CPU-a ugradjuju veoma brzu memoriju koju nazivaju ke{ memorija. U ovoj

memoriji, sa ta~ke gledi{ta prostorne lokalnosti ~uvaju se sadr`aji naj~e{}e pristupanim

lokacijama glavne memorije, a sa aspekta vremenske lokalnosti podaci koji su programu

trenutno neophodni, a koji }e, takodje, i u bliskoj budu}nosti biti potrebni.

Na slici 1.6 prikazano je kako ke{ memorija podr`ava operacije ~itanja glavne

memorije.

Slika 1.6 Ke{ u memorijskom sistemu

Ke{ kontroler posreduje izmedju CPU-a i memorijskog sistema koga ~ine ke{ i glavna

memorija. Ke{ kontroler predaje zahtev za ~itanje memorije prema ke{u i glavnoj memoriji.

Ako se sadr`aj zahtevane lokacije nalazi u ke{u, ke{ kontroler prosledjuje taj sadr`aj CPU-u

i ukida zahtev prema glavnoj memoriji. Ovaj slu~aj se naziva ke{ pogodak (cache hit). U

slu~aju kada lokacija kojoj se obra}amo nije prisutna u ke{u, prvo se kreira slobodna

lokacija u ke{u a zatim se referencirana re~ iz glavne memorije dobavlja prvo u ke{, a zatim

se iz ke{a dostavlja CPU-u. Ova situacija se naziva ke{ proma{aj (cache miss). I pored

toga {to pristup glavnoj memoriji prilikom ke{ proma{aja traje znatno du`e u odnosu na

direktni pristup glavnoj memoriji, ukupne performanse sistema se mogu pobolj{ati ako je

stopa ke{ pogodaka ve}a od 80%.

Kod savremenih ra~unarskih sistema (vidi sliku 1.7) postoje nekoliko nivoa ke{a,

poznatih kao nivo L1, nivo L2, a u odredjenim slu~ajevima i nivo L3.

1. Osnovi o ra~unarima 13

Nivo ke{a L1 se naj~e{}e implementira na samom ~ipu CPU-a, kapaciteta je reda 64

kB, i mo`e mu se pristupati, takore}i, brzinom koja je tipi~na za registarsko polje. Nivo L2,

kapaciteta od nekoliko stotina kB do nekoliko desetina MB povezuje se na CPU preko

specijalne magistrale. Pristup ke{u nivoa L2 je od 5 do 10 puta sporiji u odnosu na pristup

nivou ke{a L1, ali je 5 do 10 puta br`i u odnosu na pristup glavnoj memoriji. Ke{ memorije

nivoa L1 i L2 se implementiraju kao memorije SRAM tipa.

Slika 1.7 Ke{ memorija kod savremenih ra~unarskih sistema

Hijerarhija memorije - memorijske komponente u okviru ra~unarskog sistema su

hijerarhijski organizovane (vidi sliku 1.8). Kako se kre}emo sa vrha hijerarhije ka dnu,

komponente za memorisanje postaju sporije, ve}e su po kapacitetu, i jeftinije po ceni

memorisanja po bajtu. Registarsko polje nalazi se na vrhu hijerarhije i naziva se nivo L0.

L1 ke{ zauzima mesto nivoa 1, L2 ke{u se dodeljuje nivo 2, glavnoj memoriji nivo 3, itd.

Glavna ideja memorijske hijerarhije je da se memorija na jednom nivou koristi kao ke{

memorija za naredni ni`i nivo. Shodno ovom principu, registarsko polje predstavlja ke{ za

ke{ nivoa L1; zatim L1 ke{ je ke{ za nivo L2; nakon toga L2 ke{ je ke{ za glavnu

memoriju, a glavna memorija je ke{ za disk. Kod ra~unarskih sistema koji se povezuju na

mre`u lokalni disk se koristi kao ke{ za podatke koji se ~uvaju na diskovima drugih

ra~unara.

L0:

L1:

L2:

L3:

L4:

L5:

registri

On-chip L1 keš(SRAM)

Off-chip L2 keš(SRAM)

Glavna memorijaDRAM

Lokalna sekundarna memorija(lokalni diskovi)

Udaljena sekundarna memorija(distribuirani fajl sistemi, Web serveri)

CPU-ovi registri cuvaju recipodataka iz keš memorije.

L1 keš cuva keš linijeizbavljene iz L2 keša.

L2 keš cuva keš linijeizbavljene iz glavnememorije.

Glavna memorija cuva diskblokove podataka zbavljenesa lokalnih diskova.

Lokalni diskovi cuvajufajlove izbavljene sadiskova od udaljenihmrežnih servera.

Manji, bržii skuplji

(po bajtu)uredaj za

memorisanje

Veci, sporiji i jeftiniji

(po bajtu)uredaj za

memorisanje

Slika 1.8 Primer memorijske hijerarhije kod malih ra~unara tipa IBM PC

14 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

Koncept memorisanog programa - instrukcije koje ~ine program su sme{tene u ke{u

i/ili u glavnoj memoriji. One se jedna-po-jedna (sekvencijalno) dobavljaju i izvr{avaju od

strane procesora, mada kod savremenih sistema, kakvi su proto~no organizovani sistemi,

postoji preklapanje u izvr{enju izmedju ve}eg broja instrukcija, tj. ka`emo da postoji

kombinacija paralelnog i proto~nog izvr{enja. Podaci sa kojima se manipuli{e od strane

instrukcija takodje se ~uvaju u memoriji (ke{, glavna memorija, disk). Ideja da se u toku

procesiranja programske instrukcije i programski podaci ~uvaju u memoriji naziva se

koncept memorisanog programa (stored program concept). Ovaj va`an koncept uveden

je od strane John von Neumann-a, jednog od tvoraca ra~unara, i on i danas predstavlja

osnovu svih savremenih ra~unara.

1.6.2. Softverska komponenta

Pored hardvera, ra~unarskom sistemu je potreban i softver. Softver ~ine programi koji

ukazuju ra~unaru {ta da radi. Da bi uradio neki koristan posao, sistem treba da izvr{ava

instrukcije koje su specificirane od strane programa.

Postoje dve glavne kategorije softvera, sistemski softver i aplikacioni softver.

Sistemski softver nam omogu}ava da manipuli{emo fajlovima, punimo i izvr{avamo

programe, i prihvatamo podatke sa mi{a i tastature. Sistemsko-softverski programi koji

upravljaju ra~unarom nazivaju se operativni sistem, i razlikuju se od aplikacionih

programa, kakvi su Microsoft Word, Netscape, ili programa koje je korisnik kreirao, po

tome {to izvr{avaju specifi~ne zahteve korisnika. Windows i Unix su poznati reprezenti

operativnih sistema.

Operativni sistem je klju~ni deo ra~unarskog sistema. Kao i hardver, on se sastoji od

ve}eg broja komponenata. Jedna pojednostavljena prezentacija operativnog sistema

prikazana je na slici 1.9. Svakako klju~nu ulogu ima korisni~ki interfejs (user interface)

koji omogu}ava korisniku da unosi komande, izvr{ava komande, i manipuli{e fajlovima.

Takodje, korisni~ki interfejs prihvata podatke sa tastature, a kod savremenih ra~unarskih

sistema, i od mi{a ili drugih uredjaja. Izlaznu prezentaciju korisni~ki interfejs generi{e na

displeju. Kod nekih sistema, izlazni displej mo`e biti tekstualni, ali u skorije vreme sve je

vi{e prisutna grafi~ka prezentacija, tj. rad sa ve}im brojem prozora i mogu}nost

manipulisanja sa njima.

Interfejs aplikacionog programa (application programming interface - API)

predstavlja interfejs za aplikacione programe i druge uslu`ne programe radi pristupa

internim servisima koje pru`a operativni sistem. Tu pre svega spadaju fajl servisi, ulazno-

izlazni servisi, servisi za komuniciranje podacima, servisi korisni~kog interfejsa, servisi

izvr{enja programa, itd.

Veliki broj internih servisa izvr{ava modul kernel. Ostali servisi koji se obavljaju od

strane drugih modula obi~no se upravljaju od strane kernela. Kernel upravlja radom

memorije putem dodele (alokacije) prostora procesima, obavlja planiranje izvr{enja

procesa, obezbedjuje i podr`ava rad mehanizama za komuniciranje izmedju procesa koji se

izvr{avaju, upravlja servisima i resursima koji su deljivi sa drugim procesima, i zadu`en je

da obezbedi sigurnost u radu sistema.

Sistem za upravljanje fajlovima alocira i upravlja radom dodele prostora sekundarne

memorije, i vr{i translaciju fajl-zahteva koji su specificirani po imenu u specifi~ne ulazno-

izlazne zahteve. Aktuelno snimanje i o~itavanje fajlova se obavlja od strane ulazno-izlaznih

drajvera (pokreta~kih programa). Svaki ulazno-izlazni drajver kontroli{e (upravlja radom)

jedan ili ve}i broj hardverskih uredjaja sli~nog tipa (kao na primer, kruti ili flopi diskovi).

1. Osnovi o ra~unarima 15

Mre`ni modul kontroli{e interakciju izmedju ra~unarskog sistema i mre`e/mre`a na

koju/koje se ra~unar povezuje.

Operativni sistem je skoro uvek sme{ten na krutom-disku, dok se kod nekih sistema

operativni sistem u~itava preko mre`nog servisa. U oba slu~aja, bootstrap, ili IPL (Initial Program Load) program obezbedjuje da se nakon uklju~enja sistema na napajanje obavi

njegovo testiranje, a tek nakon toga operativni sistem se puni sa diska, ili mre`e.

korisnik

korisnickiinterfejs

aplikacioniprogram

aplikaciono programski interfejs

sistem zaupravljanjefajlovima

kernel

U/Idrajveri

mrežnimodul

hardver mreža

Sleka 1.9 Blok dijagram pojednostavljenog operativnog sistema

Na osnovu prethodnog je jasno da sistemski softver i hardver obezbedjuju radno

okru`nje ra~unarskom sistemu. Aplikacioni softver, komunikaciona podr{ka, i korisni~ki

podaci zaokru`uju kompletnu sliku o ra~unarskom sistemu.

1.6.3. Komunikaciona komponenta

Veliki broj savremenih ra~unara danas ne radi samostalno. Umesto toga oni se

povezuju sa drugim ra~unarima preko mre`nog adaptera na mre`u, kako je to prikazano na

slici 1.10.

Ra~unari fizi~ki mogu biti locirani jedan pored drugog ili biti razdvojeni po nekoliko

hiljada kilometara. Da bi zajedni~ki radili, ra~unari moraju medjusobno komunicirati.

Komunikaciona komponenta zahteva ne samo od hardvera nego i od softvera da ostvare

ovaj cilj.

Dodatne hradverske komponente mogu fizi~ki medjusobno povezivati ra~unare u jedan

multiprocesorski sistem, ili cluster, ili mre`u, ili se povezivati preko telefona, satelita, ili

mikrotalasne veze, sa drugim ra~unarima koji se nalaze na nekim udaljenim lokacijama.

Veza izmedju ra~unara se ostvaruje preko komunikacionog kanala. Kanal mo`e biti izveden

uz pomo} o`i~ene veze (kablovski), fiber opti~kog vlakna, telefonske linije, ili be`i~ne

tahnologije (infracrvenim svetlom, mobilnim telefonom, ili radiom). Kao interfejs izmedju

16 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

ra~unara i komunikacionog kanala, u samom ra~unaru, koristi se specijalizovan hardver

koji mo`e biti modem ili mre`na interfejs kartica.

Slika 1.10 Povezivanje ra~unara na mre`u

Softversku komponentu ~ine dodatni programi koji su sastavni deo operativnog sistema

svakog ra~unara. Pravila pomo}u kojih se reguli{e razmena podataka izmedju ra~unara

nazivaju se protokoli. Internacionalnim standardima se garantuje da protokoli budu

univerzalno kompatibilni. Internet je primer globalne ra~unarske mre`e, ~iji je rad regulisan

internacionalno standardizovanim protokolima.

1.7. Mehanizmi internivovske konverzije

Kao {to smo ve} uo~ili, konverzija programa sa jednog nivoa na drugi (vidi sliku 1.1)

vr{i se prevodjenjem, interpretacijom ili kombinacijom obe tehnike. Analiza koja sledi

odnosi se samo na konverziju sa vi{eg nivoa na ni`i. Inverznu konverziju je veoma te{ko

sprovesti, jer na ni`em nivou skoro da je nemogu}e (ili u najmanju ruku veoma te{ko)

ustanoviti koju je operaciju vi{eg nivoa programer iskoristio. Kombinovana tehnika ~esto

uklju~uje uvodjenje medjujezika. Uka`imo sada, sa ne{to vi{e detalja, na svaku od ovih

tehnika pojedina~no.

1.7.1. Prevodjenje - kompilacija

U najkarakteristi~nijem obliku tehnika prevodjenja se javlja izmedju nivoa L5 i L4

(slika 1.1) i nju zovemo kompilacijom. U toku procesa kompilacije (slika 1.11) izvornog

programa PH (napisan na jeziku visokog nivoa LH) u objektni program na jeziku ni`eg nivoa

1. Osnovi o ra~unarima 17

LL (koji se izvr{ava od strane ma{ine), svaki iskaz programa PH zamenjuje se nizom

instrukcija iz LL tako da one imaju isti efekat kao i originalni iskaz iz PH.

Slika 1.11 Ciklus kompilacija-izvr{enje sa LH na LL

Kao {to se vidi sa slike 1.11, kompilator je program koji na svom ulazu prihvata

izvorni program, tj. program napisan na nekom od HLL-ova, a na svom izlazu generi{e

ekvivalentan program na ma{inskom jeziku, tj. objektni program.

Dijagram sa slike 1.11 ukazuje da kompilator kao i kompletan objektni program koji

on generi{e, koegzistiraju u okviru glavne memorije ra~unara.

Ova {ema, poznata kao "in-memory" kompilacija, efikasna je u pogledu brzine rada ali

zahteva ugradnju velike glavne memorije.

Slika 1.12 Ciklus kompilacija/izvr{enje sa memorisanjem objektnog programa

i pozivanjem punioca

U najve}em broju slu~ajeva, kao {to je prikazano na slici 1.12, objektni program koji

se generi{e na izlazu kompilatora upisuje se u sekundarnu memoriju. Kada se proces

18 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

kompilacije izvornog programa zavr{i, kompilator se odstranjuje (bri{e) iz glavne

memorije. Nakon toga se poziva korisni~ki program poznat kao punilac (loader). Punilac

sme{ta objektni program iz sekundarne u glavnu memoriju ~ime je objektni program

spreman za izvr{enje.

U oba slu~aja (slika 1.11 i slika 1.12) podrazumeva se da je napunjeni objektni

program u stvari program u formi ma{inskog koda koji se mo`e direktno izvr{avati od

strane hardvera ra~unara.

Proces kompilacije se mo`e podeliti na dva glavna dela:

a) analiza izvornog programa, i

b) sinteza objektnog programa.

Ove delove je mogu}e dalje deliti.

Slika 1.13 Celovit proces kompilacije

Analizu ~ine slede}e tri faze:

a1) skeniranje (detaljna analiza) izvornog programa znak po znak sa ciljem da se

prepoznaju osnovni jezi~ki simboli (tj. identifikatori, rezervisane re~i, celobrojne vrednosti,

operatori i td.) koji ~ine program. Ova faza je poznata pod imenom leksi~ka analiza.

1. Osnovi o ra~unarima 19

a2) u sekvenci simbola koja ~ini program prepoznaje se sintaksna struktura i vr{i

verifikacija da bi se utvrdilo da li ova struktura po{tuje sintaksna pravila programskog

jezika. Ovaj proces poznat je kao sintaksna analiza.

a3) u informacionoj tabeli zapisuje se zna~enje identifikatora (promenljive, konstante)

deklarisanih u izvornom programu i proverava se da li su kori{}enja kompatibilna sa

njihovim deklaracijama. Ova aktivnost se zove semanti~ka analiza.

Sintezu ~ine slede}e dve glavne faze:

b1) odredjuje se kako }e i gde, promenljive deklarisane u izvornom programu u okviru

objektnog programa biti predstavljene u memorijskim lokacijama. Ova faza poznata je kao

dodela (alokacija) memorije.

b2) odredjivanje objektnih kodnih sekvenci na osnovu sekvenci akcija definisanih

izvornim programom. Ovaj proces poznat je pod imenom generisanje koda.

Shodno prethodnoj analizi ukupni proces kompilacije prikazan je na slici 1.13.

U toku analize generi{e se listing programa. On sadr`i tekst originalnog izvornog

programa zajedno sa indikacijom prirode i pozicije bilo kakve jezi~ke gre{ke detektovane

tokom analize. Proces sinteze koristi informacione tabele kreirane u toku procesa analize,

koje sadr`e informacije pridru`ene razli~itim identifikatorima i drugim izvornim

programskim celinama. Proces kompilacije, kod koga se svaka od faza kompilacije za dati

izvorni program kompletira pre nego {to naredna faza po~ne, poznat je kao vi{eprolazna

kompilacija.

Pod odredjenim uslovima faze se mogu preklapati ili paralelno izvr{avati. Ovo je

poznato kao jednoprolazna kompilacija.

Primer 1.1

Analizirajmo sada, kroz jedan pokazni primer, `ivotni vek programa. Koriste}i

vi{e programski jezik C analizira}emo rad ra~unarskog sistema trasiranjem vremena

`ivota jednog jednostavnog programa nazvanog zdravo (vidi sliku 1.14). Analizu

}emo sprovesti od trenutka njegovog kreiranja od strane programera, do momenta kada

se on izvr{i od strane sistema. Kraj programa se karakteri{e {tampanjem poruke, i

njegovim zavr{etkom. Sagledavanjem `ivotnog veka programa cilj nam je da pa`ljivo

uka`emo na klju~ne koncepte, terminologiju, i komponente koje u~estvuju u toj

aktivnost. @ivotni vek programa zdravo po~inje kao izvorni program (ili izvorni

fajl) koga programer kreira pomo}u editora i pamti ga kao tekstualni fajl na disku

nazvan zdravo.c. Izvorni program ~ini sekvenca bitova, od kojih svaki ima vrednost

0 ili 1, organizovanih u 8-bitne grupe nazvane bajtovi. Svaki bajt (u programu sa slike

1.14) predstavlja neki tekstualni karakter (ili znak).

1. #include <stdio.h> 2. 3. int main() 4. { 5. printf("zdravo, elef\n"); 6. }

Slika 1.14 Program zdravo

Najve}i broj ra~unarskih sistema za predstavljanje tekstualnih karaktera koristi

ASCII standard. Kod ovog standarda svakom karakteru se dodeljuje jedinstvena integer vrednost obima bajt. Odgovaraju}a ASCII prezentacija programa zdravo prikazana

je na slici 1.15.

20 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

# i n c l u d e 35 105 110 99 108 117 100 101

<sp> < s t d i o . 32 60 115 116 100 105 111 46

h > \n \n i n t <sp> 104 62 10 10 105 110 116 32

m a i n ( ) \n { 109 97 105 110 40 41 10 123

\n <sp> <sp> <sp> <sp> p r i 10 32 32 32 32 112 114 105

n t f ( ” z d r 110 116 102 40 34 122 100 114

a v o , <sp> e l e 97 118 111 44 32 101 108 101

f \ n ” ) ; \n } 102 92 110 34 41 59 10 125

Slika 1.15 Program zdravo

Program zdravo.c se pamti na disku kao fajl u formi niza bajtova. Svakom bajtu

je dodeljena integer vrednost koja odgovara odredjenom karakteru. Na primer, prvi bajt

ima integer vrednost 35, koja odgovara karakteru "#". Vrednost drugog bajta je 105, i

ona odgovara karakteru "i", i td. Naglasimo da se svaka tekstualna linija zavr{ava

nevidljivim karakterom newline, "\n", ~ija je vrednost 10, a koji ozna~ava prelazak na

novi red. Fajl kakav je zdravo ~ine isklju~ivo ASCII karakteri, a takve fajlove

nazivamo tekstualni fajlovi. Svi ostali fajlovi su poznati kao binarni fajlovi.

Da bi se program zdravo.c izvr{io od strane sistema neophodno je individualne C

iskaze prevesti od strane drugih programa u sekvencu instrukcija na ma{inskom jeziku.

Ove instrukcije se zatim pakuju u formu koja se zove izvr{ivi objektni program

(executable object program). Ovaj program se zatim pamti na disku kao binarni fajl.

Objektni programi se ~esto nazivaju i objektni izvr{ivi fajlovi.

Usvoji}emo da je ne na{em ra~unarskom sistemu instaliran Unix operativni sistem,

a da se prevodjenje izvornog fajla u objektni fajl obavlja od strane drajvera-za-

kompajler pomo}u slede}e naredbe:

unix > gcc -o zdravo zdravo.c

U konkretnom slu~aju gcc drajver-za-kompajler ~ita izvorni fajl zdravo.c i

prevodi ga u izvr{ivi objektni fajl zdravo. Prevodjenje, kako je to prikazano na slici

1.16, obavlja se u ~etiri faze. Programi koji izvr{avaju ~etiri faze (preprocesor,

kompajler, asembler, i linker) kolektivno se nazivaju kompilacioni sistem.

zdravo.cizvorni

zdravo.imodifikovani

zdravo.sasemblerski

zdravo.orelokatibilni

zdravoizvršivi

preprocesor(cpp)

kompajler(cc1)

asembler(as)

linker

printf.o

izvorniprogram(tekst)

(tekst)objektni

(binarni)program

program objektni

(binarni)program

Slika 1.16 Kompilacioni sistem

1. Osnovi o ra~unarima 21

1) faza preprocesiranja - preprocesor (cpp) modifikuje izvorni C program u

saglasnosti sa direktivama koje po~inju karakterom "#". Tako na primer,

komandna linija 1 programa zdravo.c koja je oblika #include <stdio.h> ukazuje preprocesoru da pro~ita sadr`aj fajla tipa zaglavlje sistema

stdio.h i direktno ga insertuje u programski tekst. Kao rezultat se dobija drugi

C program koji obi~no ima sufiks i. 2) faza kompilacije - kompajler (cc1) prevodi tekstualni fajl zdravo.c u tekstualni

fajl zdravo.s koji predstavlja program na asemblerskom jeziku. Svaki iskaz

programa na asemblerskom jeziku u standardnoj tekstualnoj formi ta~no opisuje po

jednu instrukciju na ma{inskom jeziku. Asemblerski jezik je koristan jer

predstavlja zajedni~ki izlazni jezik za kompilatore razli~itih HLL-ova, kakvi su C,

Pascal, Fortran i dr. U konkretnom slu~aju, C kompajleri, Fortran kompajleri, i

drugi, generi{u izlazne fajlove na istom asemblerskom jeziku. 3) faza asembliranja - asembler (as) prevodi zdravo.s u ma{inske instrukcije i

pakuje ih u formu poznatu kao relokatibilni objektni program, a rezultat sme{ta

u objektni fajl zdravo.o. Fajl zdravo.o je binarni fajl, a njegovi bajtovi

kodiraju ma{insko jezi~ke instrukcije (tj. ne kodiraju vi{e tekstualne karaktere).

Ako bi pomo}u tekst-editora hteli sada da vidimo na ekranu displeja sadr`aj fajla

zdravo.o pojavi}e se nerazumljivi znaci. 4) faza linkovanja - uo~imo da program zdravo poziva funkciju printf koja je

deo standardne C biblioteke i sastavni je deo svakog C kompajlera. Funkcija

printf postoji kao poseban unapred kompajliran objektni fajl nazvan

printf.o koji se sada spaja sa programom zdravo.o. Spajanje obavlja linker

(ld). Kao rezultat se dobija fajl zdravo koji je izvr{ivi objektni fajl. Ovaj fajl je

spreman za punjene (loadovanje) u memoriju, kao i izvr{enje od strane sistema.

Primer 1.2

Sagleda}emo sada na koji na~in operativni sistem upravlja hardverom ra~unara. Da

bi u daljem tekstu sa~uvali doslednost u izlaganju analizira}emo na~in izvr{enja

programa zdravo.

Kao {to smo ve} naglasili nakon obavljene kompilacije izvornog programa

zdravo.c dobija se izvr{ivi objektni fajl koji se sme{ta na disk. Da bi se kod Unix

sistema pokrenulo izvr{enje izvr{ivog fajla zdravo, neophodno je otkucati njegovo

ime u aplikacionom programu poznatom kao shell na slede}i na~in:

unix> ./zdravo zdravo, elef unix>

U su{tini shell je komandno-linijski interpreter koji na displeju ekrana generi{e

prompt, ~eka da korisnik otkuca komandnu liniju, a nakon toga izvr{ava komandu. Ako

prva re~ komandne linije ne odgovara prepoznatljivoj (built-in) shell komandi,

shell usvaja da je to ime izvr{ivog fajla koga on puni u memoriju, a nakon toga ga

izvr{ava. To zna~i da, u konkretnom slu~aju, shell puni i izvr{ava program zdravo

i ~eka da on zavr{i. Program zdravo od{tampa poruku na ekranu displeja i zavr{ava.

Program shell zatim ponovo generi{e prompt i ~eka na naredni ulaz u komandnu

liniju.

22 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

A. Procesi

Kada se program kakav je zdravo izvr{ava na sistemu, operativni sistem pru`a iluziju

da je to jedini program koji se izvr{ava na tom sistemu. Sa ta~ke gledi{ta programa to

izgleda kao da program ima ekskluzivno pravo kori{}enja procesora, glavne memorije i U/I

uredjaja. Sve izgleda kao da procesor, bez prekida, izvr{ava instrukcije u programu jednu

za drugom, a da su kod i programski podaci jedini objekti sme{teni u memoriji sistema.

Ovakav utisak se pru`a zahvaljuju}i konceptu procesa.

Proces predstavlja apstrakciju operativnog sistema za program koji se izvr{ava. Na

jednom istom sistemu konkurentno mo`e da se izvr{ava ve}i broj procesa, pri ~emu je to

tako izvedeno kao da svaki proces ima ekskluzivno pravo kori{}enja hardvera. Pojam

Umesto da sagledavamo sada servise koje je u toku izvr{enja programa zdravo pru`io

operativni sistem, smatra}emo da je, kako je to prikazano na slici 1.17, operativni

sistem nivo softvera postavljen izmedju aplikacionog programa i hardvera. Svi poku{aji

aplikacionog programa da manipuli{u hardverom prolaze preko operativnog sistema.

Procesor Glavna memorija U/I uredjaji

Operativni sistem

Aplikacioni programiSoftver

Hardver

Slika 1.17 Nivovski pogled na ra~unarski sistem

Operativni sistem ima slede}e dve primarne namene: 1) {titi hardver od pogre{no

preduzetih akcija u toku izvr{enja aplikacionih programa (Recimo korisnik mo`e da izda lo{u komandu koja se odnosi na to da se spuste glave na disku; kao rezultat izvr{enja ove komande dolazi do o{te}enja diska, a time i naru{avanja integriteta sistema. Upravo operativni sistem je taj koji ne dozvoljava da korisnik direktno upravlja akcijama kriti~nim po rad sistema.); i 2) obezbedjuje aplikacijama

jednostavne i uniformne mehanizme za manipulisanje sa hardverskim uredjajima kako

u toku izvr{enja slo`enih operacija tako i operacija niskog nivoa. Oba ova cilja, kako je

to prikazano na slici 1.18, operativni sistem ostvaruje preko slede}ih osnovnih

apstrakcija: procesa, virtuelne memorije i fajlova. Kao {to se vidi sa slike 1.18,

fajlovi su apstrakcija U/I uredjaja, virtuelna memorija predstavlja apstrakciju glavne

memorije i disk U/I uredjaja, dok su procesi apstrakcija za procesor, glavnu memoriju,

i U/I uredjaje.

Procesor Glavna memorija U/I uredjaji

procesi

virtuelna memorija

fajlovi

Slika 1.18 Apstrakcija koju obezbedjuje operativni sistem

1. Osnovi o ra~unarima 23

konkurentno odnosi se na ~injenicu da su instrukcije jednog procesa isprepletene sa

instrukcijama drugog procesa. Preplitanje obavlja operativni sistem koriste}i mehanizam

kontekst komutacije (context switching). Operativni sistem ~uva trag o stanju procesa koji

se izvr{ava. Stanje se naziva kontekst, i odnosi se na teku}e vrednosti PC-a, registara iz

registarskog polja, i sadr`aja glavne memorije. U datom trenutku od strane sistema se

izvr{ava samo jedan proces. Kada operativni sistem donese odluku da prenese pravo

upravljanja sa teku}eg procesa na novi proces, on obavlja kontekst komutaciju na taj na~in

{to prvo zapamti u memoriji kontekst teku}eg procesa, zatim postavi (aktivira) kontekst

novog procesa, a nakon toga prenese pravo upravljanja novom procesu. Novi proces nastavi

sa izvr{enjem ta~no sa onog mesta gde se prethodno bio zaustavio. Na slici 1.19 prikazana

je osnovna ideja koja se odnosi na izvr{enje procesa zdravo.

vreme

processhell

proceszdravo

aplikacioni kod

OS kod

aplikacioni kod

OS kod

aplikacioni kod

kontekstkomutacija

kontekstkomutacija

Slika 1.19 Princip implementacije kontekst komuacije

Napomena: OS je skra}enica za operativni sistem.

Kod konkretnog scenarija postoje dva konkurentna procesa, shell proces i proces

zdravo. Inicijalno se izvr{ava proces shell koji ~eka na ulaz sa komandne linije. Kada

izdamo zahtev da se izvr{i program zdravo, shell opslu`uje taj zahtev putem

aktiviranja poziva specijalne funkcije nazvane sistemski poziv (system call). Ovim se

pravo upravljanja prenosi operativnom sistemu. Operativni sistem zapamti u memoriji

kontekst shell-a, a zatim kreira novi proces zdravo kao i njegov kontekst, a nakon toga

predaje pravo upravljanja novom procesu zdravo. Kada proces zdravo zavr{i,

operativni sistem obnavlja kontekst procesa shell, ponovo se vra}a na njegovo izvr{enje,

i ~eka na novi ulaz sa komandne linije.

B. Virtuelna memorija

Virtuelna memorija je apstrakcija koja obezbedjuje procesu iluziju da je on taj koji ima

ekskluzivno pravo kori{}enja glavne memorije. Svaki proces ima isti jedinstveni pogled na

memoriju, koji se naziva virtuelni adresni prostor. Virtuelni adresni prostor za Linux

procese prikazan je na slici 1.20. Kod Linux-a, gornja ~etvrtina adresnog prostora je

rezervisana za kôd i podatke operativnog sistema koji su zajedni~ki za sve procese. Ostale

tri ~etvrtine koje se nalaze u donjem delu adresnog prostora koriste se za ~uvanje kôda i

podataka korisni~kog procesa.

Virtuelni adresni prostor vidjen od strane svakog procesa sastoji se od ve}eg broja

definisanih oblasti, pri ~emu svaka ima neku svoju specifi~nu namenu.

24 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

0

0x08048000

0x40000000

0xc0000000

0xf f f f f f f f

memorija koja je nevidljivakorisnickom kodu

funkcijaprintf()

napunjen od straneizvršivog fajlazdravo

neiskorišcenamemorijska oblast

podaci koji se mogucitati i upisivati

run-time heap(kreiran od strane rutine malloc

u toku izvršenja programa)

kod i podaci koji semogu samo citati

memorijsko preslikaniregion za deljive

bibliotecke programe

korisnicki magacin(kreira se u toku

izvršenja programa)

kernel virtuelnamemorija

Slika 1.20 Organizacija virtuelnog adresnog prostora

Programski kôd i podaci - kôd po~inje na istoj fiksnoj adresi, zatim slede lokacije za

podatke koje odgovaraju globalnim promenljivim u C-u. Oblasti kôda i podataka se

direktno inicijaliziraju od strane sadr`aja izvr{ivog objektnog fajla koji je u konkretnom

slu~aju zdravo.

Heap - odmah iza oblasti kôda i podataka sledi run-time heap. Nasuprot oblastima

kôda i podataka, ~iji je obim fiksni kada proces po~ne sa izvr{enjem, oblast heap u toku

izvr{enja procesa se {iri i su`ava dinami~ki usled poziva standardnih C bibliote~kih rutina

kakve su malloc i free.

Deljive biblioteke - Sredina adresnog prostora je oblast u kojoj se ~uvaju kod i podaci

za deljive bibliote~ke programe, kakvi su oni koji pripadaju standardnoj C biblioteci i

matemati~koj biblioteci.

Magacin - na vrhu korisni~kog virtuelnog adresnog prostora nalazi se magacin

korisnika (user stack) koji se od strane kompilatora koristi za impementaciju funkcijskih

poziva. Na sli~an na~in kao i heap, u toku izvr{enja programa magacin korisnika dinami~ki

se {iri i su`ava. Pri svakom pozivu funkcije on se {iri, a pri povratku su`ava.

Kernel virtuelne memorije - kernel je deo operativnog sistema koji je uvek prisutan

(rezidentan) u memoriji. Gornja ~etvrtina adresnog prostora je rezervisana za kernel.

Aplikacionim programima nije dozvoljeno da pristupaju ovoj oblasti radi upisa i ~itanja,

niti da direktno pozivaju funkcije definisane u kernel kôdu.

Da bi virtuelna memorija korektno radila, neophodno je da postoji dobra interakcija

izmedju hardvera i operativnog softvera, uklju~uju}i tu i translaciju koju obavlja hardver

nad svakom adresom koju generi{e procesor. Osnovna ideja se sastoji u tome da se

sa~uvaju (zapamte) sadr`aji virtuelnih memorija procesa na disku, a zatim da se glavna

memorija koristi kao ke{ memorija za disk.

1. Osnovi o ra~unarima 25

C. Fajlovi

Fajl predstavlja sekvencu bajtova. Od strane operativnog sistema, svaki U/I uredjaj,

kakav je disk, tastatura, mi{ pa ~ak i mre`a, modelira se kao fajl. Na taj na~in, svi ulazi i

izlazi sistema se obavljaju ~itanjem i upisom fajlova, koriste}i mali skup sistemskih poziva

poznatih kao Unix U/I.

Jednostavnost kori{}enja fajlova je bez sumnje veoma mo}na ideja jer svim

aplikacijama obezbedjuje uniforman pogled na sve U/I uredjaje koji mogu biti povezani na

sistem. Tako na primer, aplikacioni programeri, koji manipuli{u sa sadr`ajima disk fajlova

uop{te nisu svesni specifi~nosti rada disk tehnologije. [ta vi{e, isti program bez problema

}e se izr{avati na razli~itim sistemima koji koriste razli~ite disk tehnologije.

1.7.2. Interpretacija

Kada se program PH, napisan na jeziku LH, interpretira na nivou LL, ka`emo da je

potrebno koristiti poseban program koga zovemo interpreter. Interpreter uzima jednu

instrukciju iz programa PH, analizira je i uslovljava da se sa istim efektom izvr{i niz

instrukcija sa nivoa LL. Ovaj se proces produ`ava sve dok se ne izvr{i kompletan program

(slika 1.21).

Prednost ovog konverzionog mehanizma sa strane sistema je ta {to je interpreter

relativno mali i {to se u odnosu na kompilator lak{e implementira na nivou ma{ine. Sa

strane programera, debagiranje programa je olak{ano zbog mogu}nosti direktne interakcije

sa interpreterom. Nedostatak je taj {to je izvr{enje izvornih programa postupkom

interpretacije sporije u odnosu na kompilovane programe. Razlika u brzini izvr{enja je reda

10 i vi{e puta.

Slika 1.21 Interpretacija nivoa LH na LL

26 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

1.7.3. Kombinovanje interpretacije i kompilacije

Kombinovani mehanizam kompilacija-interpretacija koristi medju-jezik LI, koji se

nalazi izmedju nivoa LL i LH. Program PH, napisan na jeziku LH, kompajlira se u program PI

na jeziku LI. Program PI se zatim intepretira na nivou LL pomo}u interpretera (slika 1.22).

Prednost ove metode ogleda se u boljoj prenosivosti programa, kao i u tome {to se

zadr`avaju ostale dobre osobine prve i druge tehnike. (Pod prenosivo{}u podrazumevamo

mogu}nost izvr{enja programa napisanih za ra~unar marke i tipa X/A na ra~unar marke i

tipa Y/B bez ili sa malim ulo`enim trudom). Na primer, jezik nivoa LI se mo`e tako izabrati

da je proces kompilacije lak za izvodjenje, kompajler ne tako slo`en, a objektni program PI

kratak. Sa druge strane u odnosu na LH, jezik nivoa LI je lak{e interpretirati. Primer

Primer 1.3

Kao {to smo ve} naglasili postoje tri razli~ita nivoa programskih jezika: (1)

ma{inski jezik; (2) asemblerski jezik; i (3) HLL.

Kada se programiranje vr{i na ma{inskom jeziku koristi se numeri~ka

reprezentacija instrukcija (oblici sa binarnim nulama i jedinicama). Kod programiranja

na asemblerskom jeziku instrukcije se predstavljaju pomo}u mnemoni~kih re~i, a

promenljive simboli~kim imenima. Kod HLL-ova formiraju se kompleksni iskazi, pri

~emu svaki iskaz obavlja ve}i broj operacija.

Ma{inski jezici zahtevaju "trivijalno" prevodjenje. Kod prevodjenja sa

asemblerskog jezika svaka mnemoni~ka re~ se zamenjuje numeri~kom instrukcijom, a

proces prevodjenja se obavlja od strane asemblera. HLL prevodjenja se obavljaju od

strane sistemskih programa koje nazivamo kompajleri ili interpreteri.

Asembleri i kompajleri se naj~e{}e koriste kao prevodioci, ali kod velikog broja

sistema koriste se i interpreteri. Interpreteri prevode HLL na medjuformu koja je vi{a

od asemblerskog jezika, ali ova forma, da bi se program izvr{avao, mora da se

interpretira.

Veliki broj prevodioca za Basic projektovan je da radi kao interpreter. Interpreteri

u toku razvoja programa su izuzetno korisna softverska sredstva jer oni, sa ta~ke

gledi{ta programera, "zadr`avaju" osobine programa na vi{em nivou ~ime pru`aju

mogu}nost lak{eg testiranja i korigovanja. Kada programer radi na terminalu koriste}i

interpreter, on mo`e da izvr{ava program, ispituje rezultate i obavlja korekcije nad

individualnim iskazima, ili da insertuje novi iskaz. S obzirom da program nije u celosti

preveden (kakav je slu~aj kod kompajliranja), interpreter mo`e u toku rada i testiranja

programa, za potrebe programera, da prika`e originalni iskaz programa.

Interpreteri su veoma korisni kod aplikacionih programa namenjenih za

upravljanje i merenje jer oni obezbedjuju odredjeni stepen "intimnosti" izmedju

programa, sa jedne, i instrumenta na koji je ra~unar povezan, sa druge strane. Imaju}i u

vidu da se izmene i korekcije mogu lako izvoditi, proces debagiranja programa je

veoma efikasan. Interpreteri koji poseduju funkcije za podr{ku rada upravlja~kih

aplikacija obi~no imaju implementirano iskaze za direktnu kontrolu ulaza i izlaza kod

mernih instrumenata, kao i drugih uredjaja upravlja~kog tipa. Ova mogu}nost

standardno se koristi za testiranje rada te opreme, s obzirom da se prikaz vr{i

neposredno na ekranu interaktivnog terminala, a upravljanje radom opreme obavlja se

pomo}u direktnih komandi.

1. Osnovi o ra~unarima 27

kori{}enja ove tehnike je P_code koji predstvalja medju-jezik a nivoa je izmedju Pascal-a i

ma{inskog koda.

Slika 1.22 Kombinovanje kompilacije i interpretacije

Primer 1.4

Java apleti (applets) su ra~unarski programi napisani na programskom jeziku Java.

Nasuprot drugim HLL-ovima (kakvi su C, Pascal, Fortran) Java apleti se ne

kompajliraju u ma{inski kod koji se mo`e izvr{avati od strane ra~unara, nego, kao {to

se vidi sa slike 1.23, kompajliraju se u jedan poseban format koji se zove bajtkod.

Bajtkod je ulaz u Java Virtuelnu Ma{inu (Java Virtual Machine - JVM), koja

interpretira i izvr{ava kod. JVM mo`e biti hardverski ~ip, ali se obi~no realizuje kao

program, ~esto deo Web browser-a. U su{tini, bajtkod se mo`e shvatiti kao ma{inski

kod za JVM.

Java apletizvorni kod

Java kompajler

bajtkod

JVM zaG4 Power Mac

JVM za SPARCUnix radnu stanicu

JVM za WindowsPentium PC

G4 Power MacSPARC

Unix radna stanicaWindows

Pentium PC

Slika 1.23 Proces kompilacije za Java aplete

28 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

1.8. Evolucija arhitekture ra~unara

Razvoj ra~unara je pro{ao period od 60 godina. U toku proteklog perioda jasno se

prepoznaju pet generacija. Na slici 1.24 zbirno su prikazane tehnologija, arhitektura,

softver, aplikacije, i tipi~ni reprezentativni sistemi za svaku od generacija ra~unara.

Sa ta~ke gledi{ta tehnologije, prva generacija je koristila vakumske cevi i relea kao

memorijske komponente. Drugu generaciju karakteri{e kori{}enje diskretnih tranzistora i

magnetnih jezgara kao memorijskih komponenti. Tre}a generacija po~inje sa uvodjenjem

SSI (Small-Scale Integration) kola. ^etvrta generacija se prepoznaje po kori{}enju VLSI

mikroprocesora, a peta po upotrebi ULSI (Ultra Large Scale Integration) kola.

generacija

period tehnologija i arhitektura

softver i operativni

sistem

reprezentativni

sistemi

prva

1946-1956

vakuumske cevi i relei kao

memorijski elementi, jedno-bitni

CPU sa akumulatorsko baziranim

skupom instrukcija

ma{insko/asemblerski

jezici, programi bez

potprograma

ENIAC,

IBM 701,

Princeton IAS

druga

1956-1967

diskretni tranzistori, mamorijska

jezgra, akceleratori za rad sa

brojevima pokretnog zareza,

U/I kanali

Algol i Fortran sa

kompajlerima, batch

operativni sistem

IBM 7030,

CDC 1604,

Univac LARC

tre}a

1967-1978

integrisana kola, proto~no

organizovan CPU,

mikroprogramsko upravljanje

C jezik, multiprogrami-

ranje, time-scharing

operativni sistem

PDP 11,

IBM 360/370,

CDC 6600

~etvrta

1978-1989

VLSI mikroprocesori,

poluprovodni~ke memorije,

multiprocesori, vektor procesori

simetri~no multiproce-

siranje, paralelni

kompajleri, message-passing biblioteke

IBM PC,

VAX 9000,

Cray X/MP

peta

1990-danas

ULSI kola, skalabilni paralelni

ra~unari, cluster ra~unari, Intranet

i Internet

Java, mikrokarneli,

multithreading, distrib-

uirani operativni sistem,

World Wide Web

IBM SP2,

SGI Origin 2000,

Digital TruCluster

Slika 1.24 Generacije ra~unara tokom proteklih 60 godina

Nasuprot standardnom kompajleru, koji generi{e objektni kod za odredjeni

ra~unarski sistem, Java kompajler generi{e bajtkod koji je nezavisan od tipa platforme.

JVM za svaku platformu interpretira bajtkod tako da se on mo`e izvr{avati na svojoj

specifi~noj platformi. Ovo je korisno za aplete kojima se pristupa preko World Wide Web-a. Dovoljno je da postoji samo jedan skup (set) bajtkoda, tj. server ne treba da

predaje razli~ite bajtkodove razli~itim platformama (tj. razli~itim ra~unarima povezanih

u mre`i). Naime, kada se preko Web-a zahteva neki Java aplet, Web server uvek {alje

isti bajtkod, nezavisno od platforme sa koje je zahtev upu}en i na kojoj }e aplet biti

izvr{en. Ipak, treba naglasiti, da je negativna strana ovakvog pristupa ta {to se bajtkod

mora interpretirati od strane JVM, a ne direktno izvr{avati od strane ra~unara. Krajnji

rezultat je taj da se interpretirani kod izvr{ava mnogo sporije u odnosu na kompajlirani.

Postoje i just-in-time kompajleri koji kompajliraju bajtkod u izvr{ivi fajl, ali oni unose

re`ijsko vreme (overhead) i kasne po~etak izvr{enja programa.

1. Osnovi o ra~unarima 29

Sa aspekta softvera prva generacija koristi ma{insko/asemblerske jezike. Druga

generacija po~inje sa kori{}enjem HLL-ova, kakvi su Algol i Fortran. Tre}a generacija se

prepoznaje po kori{}nju jezika C, multiprogramiranju, i time-scharing operativnim

sistemima. ^etvrtu generaciju karakteri{e paralelno i vektorsko procesiranje, a petu

skalabilno i cluster izra~unavanje.

Ukaza}emo sada, u kratkim crtama, na dve glavne osobine ra~unara pete generacije,

skalabilnost i cluster izra~unavanje. Globalno posmatrano, zajedni~ka osobina svih

savremenih ra~unara je paralelizam. [ta vi{e, paralelizam u radu se mo`e eksploatisati na

vi{e na~ina i u okviru jedinstvenog procesora. Koncept skalabilnosti sadr`i paralelizam.

Za jedan ra~unarski sistem, uklju~uju}i sve njegove hardverske i softverske resurse,

ka`emo da je skalabilan, ako se on mo`e pro{iriti (scale up), tj. pobolj{ati i pove}ati svoje

resurse, sa ciljem da se prilagodi pove}anim zahtevima koji se ti~u performansi ili/i

funkcionalnosti, ali istovremeno da se ra~unar mo`e suziti (scale down), tj. pogor{ati i

smanjiti svoje resurse, ako se od njega zahtevaju slabije performanse i funkcionalnost, uz

naravno ni`u cenu. Op{ta osobina skalabilnog ra~unarskog sistema je ta da se snaga sistema

proporcionalno pove}ava sa brojem resursa. U idealnom slu~aju, korisnik bi `eleo da se

snaga izra~unavanja pove}a n puta kada se sistemski resursi pobolj{aju ili pove}aju n puta.

Cluster predstavlja skup ra~unara (~vorova) koji su fizi~ki medjusobno povezani

pomo}u visoko-performansne mre`e ili preko LAN (Local Area Network). Obi~no, svaki

ra~unarski ~vor mo`e biti standardni ra~unar, radna stanica ili personalni ra~unar.

Najva`nije je svakako to da cluster ~vorovi moraju biti u stanju da rade kolektivno kao

jedinstveni, integrisani ra~unarski resurs. Pored toga treba da postoji dodatni ose}aj, od

strane svakog korisnika, o konvencionalnom na~inu rada i ulozi da se svaki ~vor

individualno koristi u jednom interaktivnom re`imu rada.

1.9. Klasifikacija ra~unarskih arhitektura

Klasifikovati objekte koji se u vremenu dinami~ki menjaju veoma je te`ak posao jer

uklju~uje predvidjanje pravaca razvoja ovih objekata u budu}nosti. Zbog toga, klasifikacija

zahteva pa`ljivo prou~avanje i najsitnijih detalja kao i sagledavanje svih aspekata na

osnovu kojih je mogu}e ustanoviti kriterijume za klasifikaciju. Kada se govori o

ra~unarima, njihov izbor na svetskom tr`i{tu danas je tako veliki da je ponekad veoma

te{ko uo~iti one elemente koji su zajedni~ki za ve}i broj ra~unara, kao i one koji ih ~ine

razli~itim.

Kada se kriterijumi za klasifikaciju usvoje, a klasifikacione {eme prihvate, oni mogu

imati zna~ajan uticaj na dalja razmi{ljanja. Na primer, ako je neki sistem u razvoju postoji

opasnost da na~ini rasudjivanja projektanata arhitekture budu pod jakim uticajem

klasifikacionih kriterijuma. U daljem tekstu ograni~i}emo se na tri klasifikacione {eme.

Kod prve, razlike izmedju ra~unara prave se na osnovu fizi~kog obima, kapaciteta i

performansi, a kod druge, podela se zasniva na identifikaciji dva razli~ita nezavisna

koncepta: toka instrukcija i toka podataka. Kod tre}e podele pravi se razlika u obimu

obrade koja se, kod izvr{enja programa napisanih na nekom od vi{ih programskih jezika,

obavlja od strane hardvera ili softvera.

1.9.1. Prva klasifikaciona {ema

Medju in`enjerima, proizvodja~ima i korisnicima ra~unara standardizovano je

grupisanje ra~unara u pet glavnih klasa:

• mikrora~unari,

30 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

• minira~unari,

• superminira~unari,

• veliki ra~unari i

• superra~unari.

Najmanje ma{ine se zovu mikrora~unari. Mikrora~unar je ra~unar kod koga je CPU

izveden kao mikroprocesor. Mikroprocesor je elektronska komponenta realizovana kao

jedinstveni integrisani ~ip. Naj~e{}e kori{}ene verzije su personalni ra~unari koji danas

nalaze primenu u {kolama, na fakultetima, u industriji, u preduze}ima i td. Naredni vi{i

nivo ma{ine se zove minira~unar. Osobina ovih ma{ina je da se njihovo vreme mo`e

multipleksirati izmedju ve}eg broja korisnika (time-sharing re`im rada), i da poseduju

zna~ajnu mogu}nost memorisanja podataka i programa na diskovima. Minira~unari se

danas uglavnom koriste kod aplikacija u realnom vremenu, kao {to su regulacija

vazdu{nog, `elezni~kog i drugog saobra}aja, automatizaciju procesa proizvodnje u

fabrikama i td.

Supermini ra~unari u su{tini predstavljaju velike minira~unare. Uglavnom su bazirani

na 32-bitnim procesorima, a u odnosu na minira~unare, mogu da podr`avaju simultani rad

sa znatno ve}im brojem korisnika, opslu`uju ve}i broj perifernih uredjaja i imaju

instaliranu mnogo ve}u memoriju. Ove moderne ma{ine uglavnom se koriste kao mre`ni

"file-server"-i, mo}ne radne stanice i dr.

Glavna razlika izmedju velikih ra~unara (mainframe) i supermini ra~unara je u U/I

kapacitetu i aplikacijama gde se oni koristi. Kod supermini ra~unara sre}emo diskove

kapaciteta do stotinak gigabajtova, a kod velikih ra~unara kapacitet diskova prema{uje

nekoliko terabajta. Supermini ra~unari se uglavnom koriste za interaktivne aplikacije dok se

veliki ra~unari danas uglavnom koriste za podr{ku radu sa obimnim bazama podataka.

Na primer, velike poslovne i vladine organizacije (kao {to su banke, aviokompanije,

vojska, policija i td.) imaju potrebe za centralizovanim memorisanjem podataka koje se

nadgleda i upravlja sa jednog mesta, {to je i osnovna karakteristika velikih ra~unara.

I pored toga {to se performanse velikih ra~unara, kao ma{ina op{te namene, svakim

danom sve vi{e pobolj{avaju, ostaju oblasti primene koje one ne mogu pokriti. Tipi~ne

takve aplikacije mo`emo sresti kod re{avanja obimnih matemati~kih izra~unavanja u

realnom vremenu, kao {to su discipline aerodinamike, seizmologije, meteorologije,

atomske, nuklearne i fizike plazme i dr. Ove ma{ine su specijalno projektovane da

maksimiziraju broj FLOPS-ova (Floating Point Operation per Second). Svi ra~unari koji

imaju vi{e od 1 GFLOPS smatraju se super-ra~unarima.

1.9.2. Druga klasifikaciona (Flynn-ova) {ema

Kao {to smo ve} ukazali, Flynn-ova klasifikaciona {ema se zasniva na identifikaciji

dva nezavisna koncepta: toka podataka i toka instrukcija. Tok instrukcija se defini{e kao

sekvenca instrukcija koja se obavlja od strane ra~unara, a tok podataka kao sekvenca

podataka koji se pozivaju od strane toka instrukcija (uklju~uju}i ulazne podatke i

privremene rezultate). Klasifikacija se zasniva na multipliciranju oba niza (jedinstveni ili

vi{estruki). Prema ovoj klasifikaciji, slika 1.25, postoje ~etiri klase ra~unara.

SISD - jedinstveni tok instrukcija - jedinstveni tok podataka (Single Instruction stream Single Data stream) klasu ra~unara ~ine konvencionalne von Neumann-ove arhitekture.

Kod ovih ra~unara u jednom trenutku procesira se samo jedna instrukcija koja operi{e nad

jedinstvenim tokom podataka, operanada i rezultata.

1. Osnovi o ra~unarima 31

SIMD - jedinstveni tok instrukcija i vi{estruki tok podataka (Single Instruction stream Multiple Data stream). Kod ovih ra~unara jednom instrukcijom simultano se operi{e nad

nekoliko elemenata podataka.

MISD - vi{estruki tok instrukcija i jedinstveni tok podataka (Multiple Instruction stream Single Data stream). Kod ove klase ra~unara nad jedinstvenim podacima operi{e se

od strane ve}eg broja instrukcija.

MIMD - vi{estruki tok instrukcija vi{estruki tok podataka (Multiple Instruction stream Multiple Data stream). Ova klasa ra~unara je veoma {iroka jer pokriva sve

multiprocesorske i multikomjuterske sisteme, tj. sisteme sa privatnom ili deljivom

memorijom, slabo, umereno ili ~vrsto spregnute sisteme itd.

SISD SIMD

MISD MIMD

jednostruki tokpodataka

višestruki tokpodataka

jednostruki tokinstrukcija

višestruki tokinstrukcija

Slika 1.25 Flynn-ova klasifikacija ra~unara

1.9.3. Tre}a klasifikaciona {ema

Ovaj kriterijum za klasifikaciju arhitektura bazira se na iznosu (obimu) obrade koji se,

kod izvr{enja HLL programa, obavlja od strane softvera ili hardvera. Kod konvencionalnih

ra~unara, izvorni program, se pomo}u kompilatora, prevodi u objektni, a nakon toga se

izvr{ava od strane hardvera. Drugim re~ima, da bi se program izvr{io potrebno je kako

hardversko tako i softversko procesiranje. Sa druge strane, postoje i ra~unari kod kojih su

funkcije visokog nivoa implementirane u hardveru. Kod ovih ma{ina proces kompilacije je

pojednostavljen s obzirom da je hardver u stanju da izvr{i funkcije koje su veoma bliske

onim koje se koriste u izvornom jeziku. [ema na kojoj je prikazana klasifikacija arhitektura

data je na slici 1.26.

Slika 1.26 Klasifikacija arhitekture u odnosu na izvr{enje HLL-a

32 Mile Stoj~ev - Arhitekture mikroprocesora, I deo

Arhitekture sa direktnim izvr{enjem izvornog programa - osobina im je da se HLL

programi izvr{avaju direktno bez prevodjenja. Prednost je {to ne postoji proces

kompilacije, a pogrami se predstavljaju jedinstvenom datotekom (fajlom koji je izvorni, tj.

ne postoje objektna i izvr{na verzija). Nedostatak je {to se mali broj sintaksnih gre{aka

mo`e otkriti, i {to ma{ine mogu izvr{avati programe samo na jeziku za koga su

projektovane. Ne postoje mikroprocesori koji su realizovani za ovaj tip arhitekture, pa ih

zbog toga ne}emo izu~avati.

Arhitekture redukovanog tipa - u cilju optimiziranja vremena izvr{enja programa,

samo mali broj jednostavnih instrukcija je direktno hardverski implementiran. Tipi~ni

predstavnici ovog tipa arhitektura su RISC procesori.

Arhitekture koje su direktno jezi~ki orijentisane - neke od konstrukcija ma{inskih

naredbi (kodova) su usmerene ka pojednostavljenju procesa kompilacije. Naime, uvode se

specijalni adresni na~ini rada i instrukcije, hardverski realizovane, koje se od strane

kompilatora koriste za implementaciju tipi~nih HLL operacija, kao {to je pristup

kompleksnim strukturama podataka. Tipi~ni predstavnici ovih arhitektura su CISC

procesori.

Arhitekture koje su jezi~ki prilagodjene - odnos izmedju HLL-a i ma{inskog koda je

jedan-prema-jedan. Shodno tome, kompilator kod ovih ma{ina postaje veoma sli~an

asembleru. Razlika izmedju tipa A i B je slede}a: Kod tipa A se koristi softversko

prevodjenje (sporo), a kod tipa B hardversko (br`e). Oba tipa arhitekture, A i B, su strogo

orijentisana ka izvr{enju programa napisanih na jeziku za koji je ma{ina projektovana. Ne

postoje realizovani mikroprocesori koji pripadaju ovoj kategoriji, pa zbog toga ove tipove

arhitektura ne}emo izu~avati.