1. osnovi o ra~unarima -...
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.