Anda di halaman 1dari 67

1.

Uvod
Veinu modernih raunara moemo ematski predstaviti kao da se sastoje od nekoliko
meusobno povezanih nivo. Na najniem nivo nalazi se sloj digitalne logike sastavljen, kao
to samo ime implicira, od razliitih digitalnih kola. Naredni nivo predstavlja nivo
mikroarhitekture. Na ovom nivo nalazi se kolekcija od 8 do 32 registra koja ine lokalnu
memoriju i kolo koje se naziva aritmetika-logika jedinica (eng. Arithmetic Logic Unit,
ALU), namijenjeno za izvoenje jednostavnih aritmetikih operacija. Registri povezani sa
ALU ine putanju podataka (eng. data path), kojom prolaze podaci prilikom obrade u
procesoru. Osnovna operacija putanje podataka moe se opisati na sljedei nain: odabire se
jedan ili dva registra koji sadre odreene podatke, zatim se sadraj tih registara obrauje u
ALU, i na kraju se rezultat smijeta natrag u neki od registara ili u memoriju. Kod nekih
maina, rad putanje podataka je upravljan sa programom koji se naziva mikroprogram, dok se
kod drugih radom putanje podataka upravlja hardverom.
Naredni nivo je nivo arhitekture instrukcijskog skupa. Ovaj nivo obuhvata skup
instrukcija koje mogu biti izvedene od strane mikroprograma ili hardvera. Nakon nivoa skupa
instrukcija dolazi nivo operativnog sistema. On u osnovi predstavlja hibridni nivo koji
obuhvata instrukcije sa prethodnog nivoa kao i skup novih instrukcija.
Nivo asemblerskog jezika dolazi nakon operativnog sistema. Programi napisani u
asemblerskom jeziku se naprije prevode na jezike nivoa 1, 2 ili 3, pa se tek onda interpretiraju
od stvarne maine. Program koji izvodi prevoenje naziva se asembler.
Krajnji nivo predstavlja nivo aplikativnih programa napisanih u nekom od jezika
visokog nivoa. Programi napisani u ovim jezicima se prevode na nivo 3 ili 4 pomou
translatora pod imenom kompajleri.
Skup tipova podataka, operacija i osobina svakog nivoa naziva se arhitekturom.
Programi napisani u stvarnom mainskom jeziku mogu biti direktno izvravani od
strane raunarskih elektronikih kola bez intervencije interpretera ili translatora. Ova
elektronika kola, zajedno sa memorijom i ulano/izlaznim ureajima ine raunarski hardver.
Softver se sastoji od algoritama - niza instrukcija i njihove raunarske interpretacije programa. Programi mogu biti pohranjeni na hard disku, CD-ROM-u, ili nekom drugom
mediju.
Kod modernih raunara, jasna granica izmeu softvera i hardvera ne postoji, s obzirom
da bilo koja operacija koja se moe izvesti softverski, moe takoe biti izvedena i hardverski.

2. Razvoj raunarske arhitekture


2.1 Raunari nulte generacije
Jedna od prvih osoba koja je izgradila mainu za raunanje bio je francuski naunik
Blaise Pascal (1623.-1662.), u iju ast je nazvan programski jezik Pascal. Navedeni ureaj
izgraen je 1642. godine, kada je Pascal imao samo 19 godina. Ureaj je trebao da pomogne
njegovom ocu koji je prikupljao porez za francusku vladu. Bio je to u potpunosti mehaniki
ureaj sainjen od zupanika i mogao je izvravati samo opEracije sabiranja i oduzimanja.
Trideset godina kasnije, veliki njemaki matematiar baron Gottfried Wilhel von
Leibniz (1646.-1716.) izgradio je drugu mehaniku mainu koja je pored sabiranja i
oduzimanja, mogla da izvodi i operacije mnoenja i dijeljenja.

Slika 1. Blaise Pascal i njegov mehaniki kalkulator

Slika 2 Gottfried Wilhelm von Leibniz i njegov kalkulator

Stopedeset godina kasnije, profesor matematike Univerziteta u Cambridgeu, Charles


Babage (1792.-1871.), izumitelj brzinometra, dizajnirao je svoj mehaniki raunar pod
nazivom difference engine. Ovaj mehaniki ureaj mogao je samo sabirati i oduzimati i bio je
namijenjen za raunanje tabele brojeva koritene za pomorsku navigaciju. Cijela konstrukcija
maine bila je dizajnirana tako da izvodi samo jedan algoritam, metodu konanih razlika

primjenom polinoma. Ono to je bilo interesantno kod ove maine jeste metod dobijanja
izlaza: rezultati su bueni na bakarnu plou pomou eline kocke.

Slika 3 Charles Babage i njegov mehaniki raunar

Premda je ovakva maina radial prilino dobro, Babage se brzo umorio od maine koja
je mogla izvoditi samo jedan algoritam. Potroio je ogromne iznose novca na dizajn i
izgradnju nove maine koju je nazvao analitikom mainom (eng. analytical engine).
Analitika maina je imala etiri komponente: pohranu (memoriju), mlin (raunsku jedinicu),
ulaznu sekciju (ita buene kartice) i izlaznu sekciju (bueni i tampani izlaz). Memorija se
sastojala od 1000 rijei po 50 decimalnih cifara, i svake je mogla sadravati varijable i
rezultate. Raunska jedinica je mogla da prihvati operande iz memorije, zatim da ih sabere,
oduzme, pomnoi ili podijeli, te smjesti rezultat natrag u memoriju. Kao i diferentna maina,
analitika maina je u potpunosti bila mehanika.
Znaaj analitike maine ogledao se u njenoj opoj namjeni. Ova maina mogla je da
ita podatke i programe sa buenih kartica i da ih izvrava. Neke instrukcije su, na primjer
zahtijevale da maina uita dva broja iz pohrane (memorije) u raunarsku jedinicu, te da se
rezultat smjesti poovno u pohranu. Buenjem razliitih programa na ulaznim karticama bilo
je mogue programirati mainu tako da izvodi razliite proraune.
Analitika maina je koristila jednostavan asemblerski jezik. Da bi kreirao softver za
ovu mainu, Babbage je unajmio Adu Augusta Lovelace (kerku poznatog britanskog
pjesnika Lorda Byrona). Prema tome, Ada Lovelace bila je prvi programer na svijetu. U njenu
ast, programski jezik Ada je dobio ime.

Slika 4. Ada Lovelace

Naredni znaajan trenutak u razvoju raunara desio se kasnih 1930.-tih godina, kada je
njemaki student inenjerstva Konrad Zuse izgradio niz automatskih raunarskih maina
pomou elektromagnetskih releja. Njegovi radovi uniteni su u saveznikom bombardiranju
Berlina 1944. godine.
Neto kasnije, u SAD, John Atanasoff sa Iowa State College i George Stibbitz iz Bell
Labs dizajnirali su svoje kalkulatore. Atanasoffova maina koristila je binarnu aritmetiku i
imala kondenzatore kao memeoriju, koji su periodino morali biti osvjeavani, zbog gubitka
naelekrisanja. ipovi dananje dinamike memorije (DRAM) funkcioniu na slian nain.
Naalost, ova maina nikad nije postala operacionalna. S druge strane, Stibbitzov raunar,
premda mnogo primitivniji u odnosu na Atanasoff, je zaista radio.
Godine 1944. , na Hardvardu, Howard Aiken razvija soju prvu mainu, Mark I. Ova
maina imala je 72 rijei od po 23 decimalne cifre i imala je vrijeme izvravanja instrukcije
od 6 sekundi. Kao ulazi i izlazi koritene su buene papirne trake.
2.2 Raunari prve generacije
Jedan od bitnih podstreka za pojavu elektronikih raunara bio je II svjetski rat. Na
poetku rata, njemake podmornice koje su napadale Britaniju i britansku flout meusobno su
slale ifrirane poruke pomou ureaja koji se zvao ENIGMA. Iako su britancu uspjeli doi u
posjed ove maine zahvaljujui poljskim obavjetajcima, nisu mogli brzo odgonetnuti kako da
se izvri dekodiranje tih poruka. Svako dekodiranje tih poruka zahtijevalo je ogroman
proraun i dok bi britanci odgonetnuli sadraj poruke, odreeni dogaaj bi se ve desio. Stoga
je britanska vlada formirala tim, na elu sa poznatim britanskim matematiarem Alanom
Turingom, s ciljem razvoja raunara koji bi mogao dekodirati ove poruke. Ovaj tim je razvio
1943. godine elektroniki raunar nazvan COLOSSUS, a koji je narednih 30 godina ostao
vojna tajna. Iako je do trenutka objavljivanja detalja oko izrade ovo raunara, on ve bio
potpuno zastario, bitno je napomenuti da je on bio prvi elektroniki digitalni raunar.

Slika 5. ENIGMA i COLLOSUS

U isto vrijeme, u SAD, John Mauchley predloio je amerikoj vojsci da finansijski


podre kreiranje elektronikog raunara za navoenje teke artiljerije. Njegov prijedlog
prihvaen je 1943. godine, te je Mauchley, zajedno sa svojim studentom J. Presper Eckertom,
razvio elektroniki raunar pod nazivom ENIAC (Electronic Numerical Integrator And
Computer). Sastojao se od 18000 vakumskih cijevi, koje su se kvarile u prosjeku svakih
sedam minuta i 1500 releja, te je teio 30 tona i troio je oko 140 kW. Imao je 20 registara
koji su mogli smjestiti brojeve od po 10 decimalnih cifara. ENIAC se mogao programirati
podeavanjem 6000 prekidaa sa vie pozicija. Maina nije bila zavrena sve do 1946. godine.
Ubrzo nakon toga, Eckert i Mauchley su poeli sa razvojem raunara EDVAC
(Electronic Discrete Variable Automatic Computer).
Na Princeton Institute of Advanced Studies, John Von Neumann razvio je svoju
vlastitu verziju EDVAC-a, nazvanu IAS maina. On je prvi opisao dizajn, sada poznat pod
imenom von Neumannova maina, a koji se sastojao od 5 osnovnih dijelova: memorije,
aritmetiko logike jedinice, kontrolne jedinice, ulaznih i izlaznih ureaja. Memorija
njegovog raunara imala je 4096 rijei, pri emu je svaka rije mogla sadravati 40 bitam tj. 0
ili 1. Svaka rije je mogla sadravati ili dvije 20-bitne instrukcije ili 40-bitni cio broj sa
predznakom. Instrukcije su imale 8 bita koji su govorili o tipu te instrukcije, dok je preostalih
12 bita koriteno za specificiranje jedne od 4096 memorijskih rijei. Aritmetiko logika
jedinica zajedno sa kontrolnom jedinicom su inile "mozak" raunara. U savremenim
raunarima oni su objedinjeni u jedan ip koji se naziva CPU (Central Processing Unit).
Aritmetiko logika jedinica je sadravala specijalni unutranji 40-bitni registar nazvan
akumulator. tipina instrukcija bi smjetala rije iz memorije u akumulator ili bi se sadraj
akumulatora smijetao u memoriju. Potrebno je napomenuti da ova maina nije imala
floating-point aritmetiku (tj. nije mogla da radi sa realnim brojevima).

Slika 6. John von Neumann i originalna von Neumannova maina

Otprilike u isto vrijeme sa pojavom ISA maine, istraivai na M.I.T.-u su gradili svoj
raunar, Whirlwind I, koji je bio maina sa 16-bitnom rijei namijenjena za upravljanje u
realnom vremenu. Ovaj projekat je doveo do razvoja memorije sa magnetskom jezgrom od
strane Jay Forestera i do razvoja prvog komercijalnog miniraunara.
Godine 1953. tada mala tvrtka IBM zapoinje s proizvodnjom raunara IBM 701.
2.3 Raunari druge generacije
Godine 1948. istraivai John Bardeen, Walter Bratain i William Shockley u Bell Labs
ravili su transistor, za to su 1956. godine dobili i Nobelovu nagradu za fiziku. U samo 10
godina, tranzistori su potpuno revolucionizirali razvoj raunara, tako da su ve kasnih 1950.tih raunari sa vakumskim cijevima bili potpuno zastarjeli. Prvi raunar sa tranzistorima bio je
izgraen na M.I.T.-ovoj Lincoln Laboratoriji, kao nasljednik Whirlwinda I. Ovaj raunar
nazvan je TX-o (Transistorized eXperimental computer o).
Digital Equipment Corporation (DEC) dizajnirala je 1961. godine raunar PDP-1 koji
je imao 4096 18-bitnih rijei i mogao je izvriti 200000 instrukcija u sekundi. Jedna od
inovacija PDP-1 bio je vizuelni displej I mogunost da crta take bilo gdje na ekranu veliine
512x512 taaka. Nekoliko godina nakon PDP-1, pojavio se PDP-8 raunar ija je glavna
inovacija bila uvoenje jedne sabirnice omnibus. Sabirnica predstavlja kolekciju paralelnih
ica namijenjenih za povezivanje komponenti raunara.
Otprilike u isto vrijeme, kompanija IBM je razvila svoj raunar 7090, a zatim i verziju
7094 i time postala vodea kompanija u podruju naunog raunarstva. Nakon toga razvijena
je verzija 1401 namijenjena za poslovne sisteme sa 4000 bajta memorije, premda kasnija
verzija je imala i do 16000 bajta. Potrebno je napomenuti da su raunari 7094 i 1401 bili
potpuno nekompatibilni: jedan je brza maina sa paralelnom binarnom aritmetikom i 36bitnim registrima, dok je drugi koristio serijsku decimalnu aritmetiku sa rijeima promjenljive
duine.
Godine 1964. skoro nepoznata kompanija, Control Data Corporation (CDC),
predstavila je svoj raunar 6600. Raunar 6600 bio je bri od svih raunara dostupnih u to
vrijeme. Unutar CPU nalazila se paralelna maina sa nekoliko funkcionalnih jedinica za
izvoenje operacija sabiranja, mnoenja, dijeljenja.
6

Pored navedenih raunara, u ovom periodu su se pojavili jo mnogi drugi raunari kao
to je na primjer Burroughs B5000.
2.4 Raunari tree generacije
Moglo bi se rei da su se raunari tree generacije pojavili zahvaljujui izumu
silicijumskih integrisanih kola Roberta Noycea 1958. Godine, a koja su omoguavala
smijetanje desetina tranzistora na jedan ip. Ovo je omoguilo da se izgrade manji, bri i
jeftiniji raunari.
U ovom periodu, IBM je uveo jednu liniju proizvoda nazvanu System/360, zasnovanu
na integrisanim kolima, a koja je bila dizajnirana za nauno i poslovno raunarstvo.
System/360 je sadravao veliki broj inovacija: to je bila porodica maina sa istim
asemblerskim jezikom i poveanom veliinom i snagom; softver napisan za jedan model se
mogao izvravati i na drugom modelu bez problema; uveden je princip multiprograminga kod
kojeg je vie programa istovremeno uitano u memoriju, te kad jedan eka da se zavre
operacije ulaza/izlaza, drugi program se moe izvravati.
DEC kompanija je primijenila integrisana kola u svojim raunarima te je zamijenila
PDP-8 sa PDP-11 serijom koja je bila izuzetno uspjena.
2.5 Raunari etvrte generacije
Do poetka 1980., bilo je mogue smjestiti desetine hiljada, a zatim i stotine hiljada i
konano milione tranzistora na jedan ip. Ova tehnologija nazvana Very Large Scale
Integration, VLSI, dovela je do razvoja manjih i brih raunara. Tako je zapoela era
personalnih raunara koji su mogli biti koriteni za obradu teskta, rad sa tabelama i slino.
2.6 Podjela raunara
U nastavku je data openita podjela danas dostupnih raunara.
Svi raunari se s obzirom na svoja svojstva mogu podijeliti na vie skupina.
Najrasprostranjeniju skupinu predstavljaju mikroraunari. To su raunari najmanje snage, i sa
njima se veina dananjih korisnika raunara najvie susree. Moemo ih podijeliti na kune
raunare i line ili personalne raunare (skraeno PC Personal Computer). Kuni raunari su
najjeftiniji i najjednostavniji, i koriste se preteno za igru i uenje, dok su PC raunari
pogodni i za poslovne primjene. Kako su danas cijene PC raunara drastino opale, oni se sve
vie susreu i u kunoj upotrebi, tako da se vie ne moe govoriti o strogoj podjeli na kune i
personalne raunare.
Mikroraunare moemo podijeliti i na stone (desktop) i prijenosne raunare. Stoni
raunari su predvieni za smjetaj na jednom mjestu, dok su prijenosni raunari predvieni za
esto prenoenje sa jednog na drugo mjesto. Stoga su prijenosni raunari malih dimenzija i
male teine, a opremljeni su i baterijskim napajanjem da omogue rad na mjestima gdje
gradska napojna mrea nije dostupna. Postoji mnogo vrsta prijenosnih raunara, a najpoznatiji
su laptop raunari, notebook raunari (veliine sveske), hand-held raunari (veliine
kalkulatora, namijenjeni za dranje u ruci), palmtop raunari (veliine dlana) i sasvim
minijaturni PDA raunari (Personal Digital Assistant).
Radne stanice predstavljaju monije raunare od mikroraunara, namijenjene
intenzivnijoj obradi podataka. Njihova brzina rada i kapacitet memorije znatno su vei nego
7

kod mikroraunara. Obino posjeduju izvanredne mogunosti grafikog prikaza podataka,


tako da se intenzivno koriste za obradu grafikih podataka (dijagrama, crtea, slika, itd.).
Mikroraunari i radne stanice spadaju u jednokorisnike raunare, jer su namijenjeni za
istovremeno opsluivanje samo jednog korisnika.
Miniraunari, za razliku od mikroraunara i radnih stanica, namijenjeni su za
istovremeno opsluivanje vie korisnika, te spadaju u klasu viekorisnikih raunara. Njihova
snaga znatno prelazi mogunosti mikroraunara i radnih stanica, stoga se koriste kada je
potrebna velika brzina obrade podataka. Najpoznatiji miniraunari bili su raunari PDP-11 i
VAX-11/780 (treba napomenuti da se granice izmeu skupina raunara pomjeraju sa
razvojem tehnologije, tako da su dananji PC mikroraunari moniji od nekadanjih
miniraunara PDP-11 i VAX).
Veliki (mainframe) raunari predstavljaju raunare izuzetno velike snage, koji se
koriste u situacijama kada ni miniraunari ne mogu ostvariti neophodnu brzinu obrade.
Meutim, cijena velikih raunara je isuvie visoka, tako da ove raunare sebi mogu priutiti
samo velike kompanije. Veliki raunarski sistemi se tipino koriste za opsluivanje vie
stotina ili hiljada korisnika u velikim organizacijama, koji su meusobno prostorno ratrkani.
Najea primjena velikih raunara je u vladinim agencijama, bankarstvu, upravljanju
avionima i svemirskim letjelicama itd.
Superraunari su najmonija vrsta raunara, koji se odlikuju sasvim specifinom
(namjenskom) arhitekturom i specijalnim tehnolokim rjeenjima. Zbog enormno velike
cijene (koja premauje desetine miliona dolara) ne proizvode se serijski, nego iskljuivo
pojedinano (po narudbi), a namijenjeni su iskljuivo za vojne primjene, vremensku
prognozu ili za potrebe veoma specifinih istraivanja. Vodei proizvoai superraunara su
Cray Research i CDC (Control Data Corporation).
Raunarske sisteme moemo podijeliti i prema nainu grae, odnosno po arhitekturi.
Opisana Von Neumannova arhitektura tipian je predstavnik jednoprocesorskih sistema, jer
raunari graeni po ovoj arhitekturi imaju samo jednu procesnu jedinicu. Postoje i
vieprocesorski sistemi, kod kojih je karakteristino postojanje vie procesnih jedinica.
Vieprocesorski raunarski sistemi mogu neki zadatak podijeliti na vie dijelova, koji se
nakon toga istovremeno obrauju na vie procesora. Ovakav nain obrade naziva se paralelno
procesiranje. Na taj nain se postie znatno vea brzina rada nego na jednoprocesorskim
sistemima. Graa vieprocesorskih raunara kao i graa programa koji mogu raditi na takvim
raunarima su prilino sloeni, pa se takvi raunari za sada ne koriste u svakodnevnoj
upotrebi, nego iskljuivo za specifine zadatke kod kojih se trai obrada velike koliine
podataka u kratkom vremenu.

3. ORGANIZACIJA RAUNARSKOG SISTEMA


Bilo koji digitalni raunar moe se predstaviti kao meusobno povezani sistem
procesora, memorije i ulazno/izlaznih ureaja.

3.1 Procesori
Na slici je prikazana organizacija jednostavnog digitalnog raunara.

Funkcija centralne procesne jedinice (eng. Central Processing Unit, CPU) je da izvri
programe pohranjene u memoriji dobavljanjem instrukcija programa, ispitivanjem tih
instrukcija i zatim izvravanjem tih instrukcija jedne iza druge.
Komponente raunara su meusobno povezane sa sabrnicom (eng. bus) koja
predstavlja kolekciju paralelnih ica za prenoenje adresa, podataka i kontrolnih signala.
CPU se sastoji od nekoliko dijelova. Kontrolna jedinica je odgovorna za dobavljanje
instrukcija iz glavne memorije i odreivanje tipa tih instrukcija. Aritmetiko logika jedinica
(eng. Arithmetic Logic Unit, ALU) izvodi operacije kao to su na primjer: sabiranje i
Booleovo AND.
Takoe, CPU sadri i malu, vrlo brzu memoriju koja se koristi za smjetanje
privremenih rezultata i izvjesnih kontrolnih informacija. Ova memorija je sainjena od niza
registara, od kojih svaki ima odgovarajuu veliinu i funkciju. Obino, svi registri imaju istu
veliinu. Svaki registar moe smjestiti jedan broj, do veliine odreene veliinom registra.
Podaci se mogu itati iz ili upisivati u registre velikom brzinom, jer su oni smjeteni unutar
CPU. Jedan od najvanijih registara je programski broja (eng. Program Counter, PC) koji
pokazuje na sljedeu instrukciju koja treba biti dobavljena za izvravanje. Instrukcijski
registar (eng. Instruction Register, IR) namijenjen je za smijetanje instrukcije koja se
trenutno izvrava.

3.2 Organizacija CPU


Unutranja organizacija dijela tipinog von Neumannovog CPU je data na slici. Ovaj
dio predstavlja putanju podataka (eng. data path) i sastoji se od skupa registara, ALU i
nekoliko sabirnica koje povezuju dijelove putanje podataka. Skup registara razlikuje se od
jedne raunarske arhitekture do druge. Obino ovaj skup ine registri ope namjene i registri
specijalne namjene. Registri ope namjene mogu biti koriteni u razliite svrhe, pa otuda i
naziv ope namjene. Registri specijalne namjene imaju specifine funkcije unutar CPU. Na
primjer, programski broja (eng. Program Counter, PC) predstavlja registar specijalne
namjene koji sadri adresu naredne instrukcije. Naredni primjer je instrukcijski registar (eng.
Instruction Register, IR) koji sadri instrukciju koja se trenutno izvrava.
U primjeru na slici, registri su povezani sa dva ulazna registra ALU, oznaena sa A i
B. Ovi registri sadre ulaz u ALU, sve dok je ALU zauzeta izvoenjem nekih drugih
operacija.

ALU moe izvesti operacije sabiranja, oduzimanja i neke druge jednostavne operacije
nad ulazima, pri emu se rezultat tih operacija smijeta u izalzni registar. Sadraj izlaznog
registra moe biti ponovo pohranjen u neki od registara i kasnije, sadraj registra moe biti
pohranjen u memoriju. Potrebno je napomenuti da svi dizajni nemaju registre A i B, te izlazni
registar.
Veina instrukcija moe biti podijeljena u jednu od dvije kategorije: registar-memorija
i registar-registar instrukcije. Registar-memorija instrukcije omoguavaju da rijei iz
memorije budu dobavljene u registre, gdje npr. mogu biti koritene kao ulazi u ALU u
narednim instrukcijama. Druge registar-memorija instrukcije omoguavaju registrima da
pohrane rijei natrag u memoriju. Rije podrazumijeva jedinicu podataka premjetenu iz
memorije u registre. Tipine registar-registar instrukcije dobavljaju dva operanda iz registara
u ulazne registre ALU, izvode neke operacije nad njima i smjetaju rezultat natrag u jedan od
registara. Proces provoenja dva operanda kroz ALU i pohrane rezultata naziva se ciklus puta
podataka i predstavlja jezgru veine CPU-a. On, u znaajnoj mjeri, definie ta maina moe
da uradi. to je ciklus puta podataka bri, to je bra maina.

10

CPU izvrava svaku instrukciju u obliku niza manjih koraka. To su:


dobaviti narednu instrukciju iz memorije u instrukcijski registar;
promijeniti programski broja tako da pokazuje na narednu instrukciju;
odrediti tip dobavljene instrukcije;
ako instrukcija koristi rijei iz memorije, odrediti gdje se one nalaze;
dobaviti rije, akoje to potrebno, u registar CPU-a;
izvriti instrukciju;
vratiti se na korak 1. za poetak izvravanja naredne instrukcije.
Ova sekvenca koraka se esto naziva fetch-decode-execute ciklus i ona je centralna za
rad svih raunara. U ovaj ciklus je ukljuena i provjera da li postoji neki interrupt, na primjer,
interrupt koji ukljuuje zahtjev I/O ureaja, aritmetiki prijenos na prethodnu poziciju i
slino. Kada se ovakav interrupt pojavi, pokree se rutina za obradu interrupta. Rutine za
obradu interrupta predstavljaju programe koji se pozivaju u cilju: prikupljanja stanja
programa koji se trenutno izvrava, rijeavanja situaciju koja je dovela do pojave interrupta i
vraanje prethodnog stanja programa.
Akcije CPU-a tokom ciklusa izvrenja instrukcije definisane su mikro-naredbama
odreenim od strane kontrolne jedinice. Ove mikro-naredbe predstavljaju individualne
kontrolne signale poslane preko posebnih kontrolnih linija. Na primjer, pretpostavimo da
elimo izvriti instrukciju koja pomijera sadraj registra X u registar Y. takoe pretpostavimo
da su oba registra povezana sa sabirnicom podataka D. Kontrolna jedinica e izdati kontrolni
signal koji e rei registru X da smjesti svoj sadraj na sabirnicu podataka D. Nakon nekog
vremena, drugi kontrolni signal e rei registru Y da proita podatke sa sabirnice D.
1.
2.
3.
4.
5.
6.
7.

Skup registara
Registri predstavljaju izuzetno brze memorijske lokacije unutar CPU namijenjen da
kreiraju i pohrane rezultate CPU operacija i drugih prorauna. Razliiti raunari imaju
razliite skupove registara. Oni se razlikuju u broju, tipovima registara, te u duini svakog
registra. Takoe se razlikuju u nainu primjene registara. Registri ope namjene mogu biti
koriteni u razliite svrhe i mogu im biti dodijeljene razliite funkcije od strane programera.
Registri specijalne namjene su ogranieni na specifinu funkciju. U nekim sluajevima, neki
registri su koriteni samo za pohranu podataka i ne mogu biti koriteni za proraun adrese
operanda. Duina registara podataka mora biti dovoljno velika da moe smjestiti vrijednosti
veine tipova podataka. Adresni registri mogu biti koriteni za samo odreeni mod adresiranja
ili mogu biti koriteni za ope naine adresiranja. Adresni registri moraju biti dovoljno dugi
tako da mogu smjestiti najduu adresu. Broj registara koritenih u nekoj arhitekturi utie na
dizajn skupa instrukcija. Vrlo mali broj registara moe rezultirati poveanjem broja
memorijskih referenci. Naredni tip registara su registri koji sadre bite statusa procesora ili
zastavice (eng. flag). Ovi biti su postavljeni od CPU-a kao rezultat izvravanja neke operacije.
Statusni biti mogu biti testirani kasnije kao dio neke druge operacije.
Pri operacijama itanja i pisanja, vrlo bitna su dva registra: registar podataka memorije
(eng. memory data register, MDR) i registar adrese memorije (eng. memory address register,
MAR). Ovi registri su koriteni samo od CPU i programeri im ne mogu direktno pristupiti. Da
bi se izvrila operacija zapisivanja na specifinu memorijsku lokaciju, MDR i MAR su
koriteni na sljedei nain:
1. Rije koja treba biti pohranjena na nekoj memorijskoj lokaciji je najprije uitana
pomou CPU u MDR.
2. Adresa lokacije u koju rije treba biti pohranjena je uitana od CPU u MAR.
3. Signal za pisanje je izdat od CPU.
Na slian nain izvodi se operacija itanja, a MDR i MAR su koriteni na sljedei nain:
11

1. Adresa lokacije sa koje treba proitati rije je smjetena u MAR.


2. Signal za itanje je izdat od CPU-a.
3. Zahtijevana rije bie uitana iz memorije u MDR i bie spremna za koritenje od
CPU-a.
Dva glavna registra ukljuena u dobavljanje instrukcija za izvravanje su: programski broja
PC i instrukcijski registar IR. PC predstavlja registar koji sadri adresu sljedee instrukcije
koja treba biti dobavljena. Dobavljena instrukcija je zatim uitana u IR za izvravanje. Nakon
uspjenog dobavljanja, PC je auriran tako da pokazuje na sljedeu instrukciju koja treba biti
izvrena. U sluaju operacije grananja, PC je auriran na instrukciju koja je cilj grananja,
nakon to se odredi uslov grananja, tj. jednom kada je ciljna instrukcija poznata.
Registri stanja ili zastavice se obino koriste za odravanje informacija o statusu. Neke
arhitekture sadre specijalni registar o statustu programa (eng. Program Status Word, PSW).
PSW registar sadri bite postavljene od CPU-a tako da indiciraju trenutni status programa koji
se izvrava. Ovi indikatori su tipino aritmetike operacije, interrupti, informacije za zatitu
memorije ili status procesora.
Adresni registri specijalne namjene mogu biti indeksni registri, pokazivai na segment,
pokazivai na stack (eng. Stack Pointer, SP). Pri indeksiranom adresiranju, adresa operanda je
dobijena sabiranjem konstante sadraju registra koji se naziva indeksni registar. Indeksni
registar sadri pomjeraj adrese. Indeksirano adresiranje je oznaeno u instrukciji navoenjem
imena indeksnog registra unutar zagrada i primjenom simbola X koji oznaava konstantu koju
treba dodati.
Stack predstavlja mehanizam organizacije podataka kod kojeg je zadnji pohranjeni
podataka prvi podatak koji e biti dobavljen sa stacka. Nad stackom mogu biti izvedene dvije
operacije: push i pop operacije. Da bi se oznaila lokacija na stacku koja moe biti adresirana
koristi se pokaziva na stack. Kod push operacije, SP koristi se za oznaavanje lokacije vrha
stacka. Nakon smijetanja ove vrijendosti na stack, SP se uveava.
Kontrolna jedinica
Kontrolna jedinica je glavna komponenta koja usmjerava operacije sistema slanjem
kontrolnih signala ka putanji podataka. Ovi signali kontroliu tok podataka unutar CPU i
izmeu CPU i eksternih jedinica kao to je memorija i I/O. Kontrolne sabirnice prenose
signale izmeu kontrolne jedinice i drugih raunarskih komponenti na osnovu sistemskog
sata. Sistemski sat proizvodi kontinualnu sekvencu impulsa odreenog trajanja i frekvencije.
Sekvence step signala t0 , t1 , t2 ,... koritena je za izvravanje odreene instrukcije. Opcode
polje dobavljene instrukcije se dekodira kako bi generator kontrolnih signala dobio potrebne
informacije o instrukciji koja se treba izvriti. Step informacija generisana modulom logikog
kola koritena je sa drugim ulazima za ovo generisanje kontrolnih signala.
Uglavnom, postoje dva razliita tipa kontrolnih jedinica: mikroprogramske i
hardverske. Kod mikroprogramskih, kontrolni signali asocirani sa operacijama pohranjeni su
u specijalne memorijske jedinice. Kontrolna rije je mikroinstrukcija koja specificira jednu ili
vie mikrooperacija. Sekvenca mikroinstrukcija naziva se mikroprogram, koji je pohranjen u
ROM ili RAM nazvan kontrolna memorija CM. Kod hardverskih kontrolnih jedinica, za
generisanje kontrolnih signala koritena su fiksna logika kolakoja direktno odgovaraju
Booleovim izrazima. Oito je da je hardverska kontrola bra u odnosu na mikroprogramsku,
ali ona moe biti vrlo skupa i komplikovana za kompleksne sisteme. Hardverska kontrola je
ekonominija za male kontrolne jeidnice. Mikroprogramska kontrola moe biti jednostavno
adaptirana na promjene u dizajnu sistema, nove instrukcije se mogu lako dodati bez promjene
12

u hardveru. Hardverska kontrola zahtijeva redizajn cijelog sistema u sluaju bilo kakve
izmjene.

Slika 7 Odreivanje kontrolnih signala

Principi dizajna modernih raunara


Pri dizajnu modernih raunara postoji nekoliko osnovnih principa koje obino slijede
arhitekti CPU-ova ope namjene. Nekih od tih principa su dati u nastavku.
Sve uobiajene instrukcije se izvravaju direktno u hardveru i nisu implementirane
pomou mikroinstrukcija. Eliminisanjem nivoa interpretacije omoguava veu brzinu za
veinu instrukcija.
Dizajneri modernih raunara pribjegavaju razliitim pristupima kako bi maksimizirali
preformansu raunara, a najee to podrazumijeva pokretanje to je mogue vie instrukcija
u sekundi. Ovaj princip, u osnovi, sugerie da paralelizam moe imati glavnu ulogu u
postizanju bolje performanse, jer izdavanje velikog broja sporih instrukcija u kratkom
vremenskom intervalu je mogue samo ako se one mogu izvravati u isto vrijeme.
Jedna od kritinih taki za pokretanje vie instrukcija je dekodiranje tih individualnih
instrukcija kako bi se odredilo koji resursi su potrebni za njihovo izvravanje. Poboljanje
ovog procesa moe se postii kreiranjem instrukcija regularne fiksne duine sa malim brojem
polja. to je manji broj razliitih formata instrukcija, to je bolje.
Jedan od najlakih naina za razdvajanje operacija u odvojene korake jeste
zahtijevanje da operandi za instrukcije dolaze iz i vraaju se u CPU registre. Operacije
dobavljanja operanada iz memorije u registre moe biti izvedeno u odvojenim instrukcijama.
S obzirom da pristupanje memoriji moe zahtijevati dosta vremena, pa je i kanjenje
nepredvidljivo, ove instrukcije mogu biti preklopljene sa instrukcijama koje samo pomjeraju
operande izmeu registara i memorije.
S obzirom da je vrijeme pristupa memoriji prilino dugo u poreenju sa pristupom
registrima, potrebno je obezbijediti veliki broj registara (bar 32), tako da jednom kad je rije
dobavljena, ona moe biti pohranjena u registar sve dok ne bude vie potrebna.

13

Sistemski sat
Svaki raunar posjeduje unutranji sat koji regulie koliko brzo se mogu izvravati
instrukcije raunara. Ovaj sistemski ili glavni sat sinhronizira sve komponente sistema. CPU
zahtijeva tano odreen broj perioda sata za izvravanje svake instrukcije. Prema tome, esto
se preformansa izvravanja instrukcija mjeri u broju ciklusa sata vremenu trajanja jednog
perioda sata umjesto u sekundama. Razliite instrukcije mogu zahtijevati razliit broj
ciklusa sata za svoje izvravanje, pa se brzina izvravanja instrukcija procesora, izraena u
broju ciklusa po instrukciji, predstavlja kao prosjean broj ciklusa svih instrukcija izvrenih u
nekom programu. Frekvencija sata (ponekad se naziva i brzinom sata) mjeri se u MHz ili
GHz, pri emu je 1 MHz jednak 1 milionu ciklusa sata u sekundi (1 Hz je 1 ciklus u sekundi).
Vrijeme jednog ciklusa (ili period ciklusa) je jednostavno reciprona vrijednost frekvencije
sata.
Veina maina je sinhrona: postoji jedan glavni sat koji mijenja vrijednost u pravilnim
vremenskim intervalima. Meutim, izvjesne sabirnice i ureaji posjeduju i svoje vlastite
satove. Satovi sabirnice su obino sporiji nego CPU satovi, to izaziva razliite probleme i
zastoje.

14

3.3 Paralelizam na nivou instrukcija


Danas veina raunarskih arhitekata nastoji da pobolja performansu maina
primjenom paralelizma. Paralelizam se moe izvesti na dva naina: paralelizam na nivou
instrukcija i paralelizam na nivou procesora.
Pipelining
Poznato je da je, tokom godina, glavno usko grlo u poveanju brzine bilo dobavljanje
instrukcija iz memorije. Kao potencijalno rjeenje uveden je tzv. prefetch buffer (skup
registara) u koji su se smjetale unaprijed instrukcije iz memorije, tako da bi one bile tu kada
zatrebaju. Prefetching ili dobavljanje unaprijed dijeli izvravanje instrukcija u dva dijela:
dobavljanje i stvarno izvravanje.
Koncept pipeline-a proiruje prethodnu strategiju jo dalje, tako da se umjesto
dijeljenja instrukcija na dva dijela, one sijele na vie dijelova (12 i vie), pri emu je svaki dio
izveden na odreenom dijelu hardvera, koji radi paralelno. Na slici je prikazan pipeline sa pet
jedinica nazvanih stepenima. Stepen S1 dobavlja instrukciju iz memorije i smijeta je u bafer
sve dok ne bude potrebna. Stepen S2 dekodira instrukciju, odreuje njen tip i potrebne
operande. Stepen S3 locira i dobavlja operande, bilo iz memorije ili registara. Stepen S4
izvrava instrukciju, tipino provodei operande kroz put podataka (slika??). Konano, stepen
S5 zapisuje rezultat natrag u odgovarajui registar. U toku ciklusa 1, stepen S1 dobavlja
instrukciju 1 iz memorije. U ciklusu 2, S2 dekodira instrukciju 1, a S1 dobavlja instrukciju 2.
U ciklusu 3, S3 dobavlja operande za instrukciju 1, S2 dekodira instrukciju 2, a S1 dobavlja
instrukciju 3. U ciklusu 4, S4 izvrava instrukciju 1, S3 dobavlja operande za instrukciju 2, S2
dekodira instrukciju 3, a S1 dobavlja instrukciju 4. Konano, u ciklusu 5, S5 pie rezultat
instrukcije 1 u memoriju, dok ostali stepeni rade na sljedeim instrukcijama.

Ako pretpostavimo da je trajanje ciklusa 2 ns, tada je potrebno 10 ns da instrukcija


proe svih 5 stepenih pipelinea. Tada se na prvi pogled ini da maina moe raditi sa 100
15

MIPS-a (eng. Millions of Instructions Per Second), mada je stvarna brzina 500 MIPS-a, jer se
pri svakom ciklusu (2 ns) kompletira jedna nova instrukcija.
Pipelining omoguava balans izmeu vremena izvrenja instrukcije i broja MIPS-a
procesora. Sa trajanjem ciklusa od T ns i n stepeni pipelinea, vrijeme izvrenja instrukcije
iznosi nT ns, jer svaka instrukcija proe kroz n stepeni sa trajanjem T ns.

3.4 Superskalarna arhitektura


Izraz superskalarna arhitektura nastao je 1987. godine. Danas se ovaj izraz koristi da
opie procesor koji moe da obradi vie instrukcija, esto etiri ili est instrukcija, u toku
jednog ciklusa sata. Da bi se ovo moglo realizovati, superskalarni CPU mora imati viestruke
funkcionalne jedinice kako bi mogao obraditi navedeni broj instrukcija.
Na primjer, procesor 486 je imao samo jedan pipeline, dok je Pentium imao dva: u i v
pipeline. Glavni u pipeline mogao je izvravati proizvoljne Pentium instrukcije, dok je v
pipeline mogao izvravati samo cjelobrojne instrukcije. Stoga, parovi instrukcija su morali
biti kompatibilni da bi se mogli izvravati paralelno. Ako instrukcije u paru nisu bile dovoljno
jednostavne ili su bile inkompatibilne, samo bi se prva instrukcija izvrila u u pipelineu, dok
bi druga morala ekati. Tako je Pentium imao dva puta bre izvravanje u poreenju sa 486.
Pentium III imao je strukturu slinu onoj na slici.

Slika 8

3.5 Paralelizam na nivou procesora


Zahtjevi za brim raunarima su sve vei. Paralelizam na nivou instrukcija pomae, ali
pipelining i superskalarne operacije rijetko ubrzavaju obradu za faktor vei od pet ili deset.
Stoga se ide na dizajn raunara sa viestrukim CPU-ovima.
Prvi takav pristup bila je matrica procesora koja se sastoji od velikog broja identinih
procesora koji izvode istu sekvencu instrukcija nad razliitim skupovima podataka. Prvi takav
procesor bio je ILLIAC IV raunar proizveden na University of Illinois, 1972. godine.
Ovakav dizajn se oznaavao kao SIMD (Single Instruction-stream Multiple Datastream)
procesor. Nizovi procesora (eng. Vector processors) su za programere slini matrici
procesora, ali se za razliku od matrice procesora, sve operacije sabiranja su izvedene na
jednom sabirau (Cray Research 1974.).

16

3.6 Multiprocesori
Multiprocesori predstavljaju sistem sa vie CPU-ova koji dijele zajedniku memoriju.
Mogue su razliite sheme. Primjer na slici ima jednu sabirnicu sa vie CPU-ova i jednu
memoriju na koju su oni spojeni. Na primjeru na slici, svaki procesor ima svoju lokalnu
memoriju, koja nije dostupna drugim procesorima, ime se smanjuje saobraaj na sabirnici. U
primjeru na slici, svi CPU-ovi koriste istu memoriju i mogu itati i pisati u bilo koji dio nje,
pa stoga oni moraju meusobno komunicirati da bi se izbjegla kolizija.
U odnosu na druge tipove paralelnih raunara, multiprocesori imaju prednost zbog
jednostavnosti programiranja sa samo jednom dijeljenom memorijom.

Slika 9

3.7 Multiraunari
Premda je multiprocesore sa manjim brojemprocesora (256) relativno jednostavno
izgraditi, vee sisteme je iznenaujue teko konstruisati. Potekoa u ovakvom sistemu jeste
povezivanje svih procesora na memoriju. Umjesto jedne zajednike memorije, izgraeni su
sistemi koji se sastoje od velikog broja meusobno povezanih raunara, od kojih svaki ima
svoju privatnu memoriju. Takvi sistemi nazivaju se multiraunari.
CPU-ovi u multiraunarima ponekad se nazivaju slabo povezanim CPU-ovima, dok se
u multiprocesorima nazivaju vrstopovezanim CPU-ovima. U multiraunarima, CPU-ovi
17

meusobno komuniciraju slanjem poruka, pri emu su oni povezani u topologije tipa 2D i 3D
mrea, stabala ili prestenova.
Do danas su izgraeni i u funkciji su raunari sa skoro 10000 CPU-ova.

18

4. Primarna memorija
Memorija predstavlja dio raunara namijenjen za pohranu programa i podataka.
Osnovna jedinica memorije je binarna cifra nazvana bit koja moe imati vrijednost 0 ili 1.
Jedan od razloga za primjenu binarne aritmetike lei u injenici da to je potrebno
razlikovati manji broj razliitih vrijednosti u signalu, to je sistem pouzdaniji. S obzirom da
binarni brojni sistem ima samo dvije vrijednosti, 0 i 1, koje treba razlikovati, on predstavlja
najpouzdaniji metod za kodiranje digitalnih informacija.

4.1

Predstavljanje podataka

Biti i bajti
Dananji raunari, na fundamentalnom nivo, prepoznaju samo dva stanja: da li
elektrina struja tee kroz kolo ili ne. kao posljedica toga, sve informacije koje se
predstavljaju unutar raunara moraju se predstaviti pomou ova dva stanja. Umjesto
terminologije da li struja tee kroz kolo ili ne, raunarska nauka koristi oznake 1 i 0 za ove
dvije mogunosti. Stoga, osnovna jedinica informacija je binarna cifra (koja se naziva bit
informacije). Jedan bit informacije moe sadravati samo 0 ili 1. Kolekcija od 8 bita naziva se
bajt (eng. byte), pa se veliina memorije generalno mjeri kao broj bajta informacija koje
raunar moe da pohrani.
Veliina memorije prvih raunara mjerila se u 210 bajta, s obzirom da je 210 1024 ,
ovo se zaokruivalo na 1000, pa se 1024 bajta oznaava kao jedan kilobajt (to i nije zapravo
potpuno tano). U skladu sa tim, maina sa kapacitetom od 16 kilobajta ima 16384 bajta.
Danas se za kapacitet memorije koriste i veliine reda:
Magabajta: 1 megabajt = 220 bajta = 1048576 bajta,
Gigabajt: 1 gigabajt = 230 bajta = 1073741824 bajta.
Predstavljanje teksta
Uobiajeni nain predstavljanja teksta jeste da se za svaki simbol (npr. za svako slovo,
znak interpunkcije ili broj) koji treba biti predstavljen definie jedinstveni kod. Svaki kod
sastoji se od sekvence bita fiksne duine. Rije moe biti zapisana primjenom koda za svako
slovo te rijei. Napoznatiji kod koji se koristi u raunarima je ASCII (American Standard
Code for Information Interchange) kod. On koristi 8 bita za predstavljanje slova engleskog
alfabeta. ASCII kod sadri definicije za 128 znakova sedmobitnih brojeva, tj. niza od sedam 0
i 1, dok se osmi bit koristi za detekciju greaka pomou bita parnosti. Tih 128 znakova sastoji
se od 33 netampajua i 94 tampajuih i SPACE znakova (znak bez grafike). Netampajui
znakovi se ne ampaju i koriste se za definisanje formata teksta, kontroliu rad ureaja kojima
se prosljeuju, specijalne informacije o nizu podataka. 94 tampajua znaka i SPACE znak
prikazani su na slici.

Slika 10

19

Ponekad se pored ASCII koda koristi Unicode standard koji koristi 16 bita za
predstavljanje znakova (umjesto 8), tako da je skup znakova Unicode standarda puno vei
nego ASCII skup. Unicode skup znakova ukljuuje i znakove iz drugih alfabeta pored
engleskog (npr. kineski ili grki)

4.2

Memorijske adrese

Memorija se sastoji od velikog broja elija ili lokacija, pri emu svaka elija moe
pohraniti dio informacije. Svaka elija ima svoj broj koji se naziva adresom, pomou koje
program moe da joj pristupi.
Ako memorija ima n elija, one e imati adrese od 0 do n-1. Sve elije u memoriji
sadre isti broj bita. Ako se elija sastoji od k bita, ona moe sadravati bilo koju od 2k
razliitih kombinacija bita. Susjedne elije imaju uzastopne adrese. Raunari koji koriste
binarni brojni sistem izraavaju memorijsku adresu kao binarne brojeve. Ako adresa ima m
bita, maksimalni broj elija koje je mogue adresirati je 2m .
Znaaj elije je da ona predstavlja najmanju jedinicu koja se moe adresirati. Zadnjih
godina, skoro svi proizvoai imaju standardizovane 8-bitne elije nazvane bajt (eng. byte).
Bajti se zatim grupiu u rijei. 32-bitni raunari imaju rijei od 4 bajta, a 64-bitni sistemi
imaju rijei od 8 bajta.

Slika 11

4.3 Redoslijed bajta


Bajti u rijei mogu biti numerisani s lijeva nadesno i s desna nalijevo, to je vrlo bitno.
Prvi sistem, s lijeva nadesno, gdje numerisanje poinje od velikog kraja (gdje je vea
poziciona vrijednost bita) naziva se big endian, a drugi sistem, s desna nalijevo, naziva se
little endian. Sistemi su dobili naziv po djelu Guliverova putovanja Johnatana Swifta.

20

Slika 12

4.4 Kodovi za korekciju greke


Raunarske memorije ponekad naprave greke usljed varijacija napona i slino. Da bi
se sprijeile greke, neke memorije koriste kodove za detekciju ili korekciju greke. Kada se
koriste ovi kodovi, svakoj rijei se dodaju dodatni biti na poseban nain.
Neka se memorijska rije sastoji od m bita podataka i r dodatnih redudantnih bita ili
bita provjere. Totalna duina je n=m+r. esto se n-bitna rije od m bita podataka i r bita
provjere naziva n-bitna kodan rije.
Broj pozicija bita u kojima se dvije kodne rijei razlikuju naziva se Hammingova
distanca (Hamming 1950.). Najjednostavniji primjer za detekciju greke koristi se kod sa
jednim bitom za provjeru parnosti. Bit parnosti se bira tako da je broj bita sa vrijednou 1 u
kodnoj rijei paran (ili neparan). Takav kod ima distancu 2, te se koristi samo za detekciju
jedne greke.

4.5 Cache memorija


Istorijski gledano, CPU-ovi su uvijek bri od memorije. Da bi se razrijeio problem
ekanja CPU da rije bude dobavljena iz memorije, uvedene su male brze memorije pri CPU.
Te male brze memorije nazivaju se cache (od francuske rijei cacher to znai sakriti)
memorije i u njih se smjetaju esto koritene rijei iz memorije. Tako kada CPU treba rije iz
memorije, on najprije provjeri cache memoriju. Samo ako rije nije u cache memoriji, ona se
dobavlja iz glavne memorije. Ako se znaajan dio rijei smjesti u cache, znaajno se smanjuje
prosjeno vrijeme pristupa memoriji.
Osnovu cache sistema ini pretpostavka da kada je jedna rije referencirana, ona i neki
od njenih susjeda se dobavljaju iz velike spore memorije u cache, tako da im se, kada budu
koritene naredni put, moe brzo pristupiti. Na primjer, ako neka rije treba biti k puta
proitana ili zapisana u kratkom intervalu, tada raunar treba 1 referencu na sporu memoriju i
k-1 referencu na brzu memoriju. Krajnji rezultat primjene cache memorije jeste da u bilo
kojem trenutku, jedan aktivni dio glavne memorije je dupliciran u cache memoriji.

21

Slika 13

4.6 ROM i RAM memorija


Esencijalna komponenta svakog raunara je njegova memorija. Ona se koristi za
pohranu instrukcija koje trebaju biti izvrene, kao i podataka. Osnovne komponente za
izgradnju memorije su latchovi i flip-flopovi.
RAM (Random Access Memory) memorija predstavlja memoriju sa sluajnim
pristupom iz koje se podaci mogu itati i upisivati. Postoje dvije vrste ove memorije:
statika kod koje je sadraj sauvan sve dok postoji napajanje (koristi flipflopove), vrlo je brza i zbog toga se koristi kao cache memorija;
dinamika koja ne koristi flip-flopove nego koristi polja elija sainjenih od
jednog tranzistora i kondenzatora. Zbog primjene kondenzatora, svaki bit
dinamike RAM memorije mora biti osvjeen nakon nekoliko msec. Ova
memorija se najee koristi za izgradnju glavne memorije.
Postoji nekoliko tipova ipova dinamike RAM memorije. Najstariji tip je FPM (Fast
Page Mode) DRAM koji je organizovan kao matrica bita i radi tako da mu se proslijede tzv.
raw adrese i zatim prolazi kroz kolonu adresa. Eksplicitan signal govori memoriji kada treba
da proslijedi podatke, te ona radi asinhrono u odnosu na sistemski sat. Naredni tip je EDO
(Extended Data Output) DRAM koji omoguava da se krene sa narednom mamorijskom
referencom prije nego to se zavri prethodna memorijska referenca, ime se ne ubrzava
obrada jedne memorijske reference, ali se dobija vei broj rijei u sekundi. SDRAM
(Synchonous DRAM) predstavlja hibrid izmeu statikog i dinamikog RAM-a i upravljan je
preko glavnog sistemskog sata, ime se eliminie potreba za kontrolnim signalom kao kod
FPM. Umjesto toga, CPU odreuje memoriji koliko ciklusa treba da se izvrava. Naredno
poboljanje je DDR (Double Data Rate) SDRAM kod kojeg memorijski ip daje izlaz i na
rastuu i padajuu ivicu impulsa sata, udvostruujui brzinu podataka.
ROM (Read-Only Memory) memorija predstavlja memoriju kod koje se podaci ne
mogu mijenjati ili brisati, odnosno podaci se upisuju tokom proizvodnje. Ova memorija je
jeftinija od RAM memorije. PROM (programmable ROM) memorija omoguava da bude
programirana (jedanput). EPROM (Erasable PROM) memorija ne samo da omoguava da
bude jedanput programirana, nego se moe i obrisati. EEPROM memorija moe biti obrisana
nekoliko puta. Posebna vrsta EEPROM memorije je flash memorija.

22

5 Sekundarna memorija
Na slici ispod prikazana je piramida (hijerarhija) memorije. Tipina piramida
memorije poinje sa malim, skupim i relativno brzim jedinicama, registrima, nakon ega
slijedi cache memorija, a zatim dolazi vea, manje skupa i relativno spora jedinica glavne
memorije. Ovo znai da pomijeranjem niz piramidu memorije poveavaju se tri kljuna
parametra:
Vrijeme pristupa postaje vee;
Kapacitet pohrane podataka postaje vei;
Raste omjer broja bita i cijene.
Cache i glavna memorija su izgraene od poluprovodnikih materijala, tipino od
CMOS tranzistora. Obino se ovaj nivo naziva primarna memorija. Nakon nivoa memorije od
poluprovodnikih materijala slijedi nivo vee, manje skupe i dosta sporije magnetske
memorije koja se tipino sastoji od harddiska. Ovaj nivo se obino naziva sekundarnom
memorijom. Tape se obino naziva tercijarnom memorijom.

Slika 14 Piramida memorije

5.1 Magnetni diskovi


Magnetni disk se sastoji od jedne ili vie aluminijskih ploa sa magnetizirajuom
presvlakom. Obino su dijametra 3 do 12 cm, dok su kod notebook raunara oni 3 cm ili
manji. Glava diska koja sadri indukcioni namot klizi iznad povrine i kada pozitivna ili
negativna struja prolazi kroz glavu, ona magnetie povrinu neposredno ispod glave,
poravnavajui magnetne djelie na desno ili lijevo ovisno od polariteta struje. Kada glava
prelazi preko namagnetisanog dijela, inducira se pozitivna ili negativna struja u glavi, to
omoguava da se proitaju prethodno zapisani biti. Tako, dok se ploa rotira ispod glave, niz
bita moe biti zapisan i ponovo proitan kasnije. Cirkularna sekvenca bita zapisana dok disk
napravi kompletnu rotaciju naziva se track. Svaki track je podijeljen na dijelove fiksne
duine koji se nazivaju sektorima (obino 512 bajta) kojima prethodi predsektor (eng.
preamble) koji omoguava glavi da se sinhronizuje prije itanja i pisanja. Naredni podatak je
kod za korekciju greke: Hammingov kod ili Reed-Solomonov kod. Izmeu uzastopnih
sektora nalazi se tzv. zazor izmeu sektora (eng. intersector gap).
23

Veina diskova se sastoji od viestrukih ploa postavljenih vertikalno jedna iznad


druge. Svaka ploa im svoju glavu. Skup traka naziva se cilindar. Dananji PC diskovi imaju
6 do 12 ploa po ureaju, to znai 12 do 24 povrine za snimanje.
Zajedno sa svakim diskom dolazi i tzv. disk kontroler, ip koji kontrolie ureaj.
Kontroler prima naredbe od softvera kao to su READ, WRITE i FORMAT, kontrolie
kretanje ruke, detektuje i kontrolie greke, konvertuje 8-bitne bajte proitane iz memorije u
serijski niz bita i obrnuto. Kada kontroler otkrije tzv. pokvarene sektore (sektore sa
permanentnom magnetizacijom) onih zamjenjuje sa rezervnim sektorima koji se nalaze unutar
svakog cilindra ili zone.

Slika 15

Slika 16

5.1 Floppy disk


Floppy disk je izumljen od strane IBM-a za potrebe zapisivanja informacija o
odravanju mainframe raunara, ali je vremenom njegova veliina smanjena za potrebe PC
raunara. Opte karakteristike floppy diska su iste kao kod mag. diskova, osim to kod floppy
diska, glava zaista dodiruje plou za magnetiziranje (diskete). Kao rezultat toga, i medij i
glava bivaju brzo istroeni.

24

5.2 IDE diskovi


IDE (skraeno od Integrated Drive Electronics) ureaji pojavili su se sredinom 1980.tih. Za razliku od prvobitnih diskova kod kojih se disk kontroler nalazio na zasebnoj ploi,
kod IDE diskova, on je bio integrisan sa ureajem. Konvencija pozivanja diska od BIOS-a
adresirala je sektore, davajui broj glave, cilindra i sektora, pri emu su brojevi glava i
cilindara poinjali sa 0, a sektora sa 1.
IDE ureaji su se vremenom razvili u EIDE ureaje (Extended IDE) koji su podravali
drugu shemu adresiranja koja se naziva LBA (Logical Block Addressing) koja jednostavno
daje brojeve sektorimapoev od 0 do 228 1 . Ova shema je zahtijevala da kontroler
konvertuje LBA adrese u adrese glave, sektroa i cilindra. Nasljednik EIDE bio je ATA-3 (AT
Attachment), a nakon njega pojavili su se ATAPI-4 (ATA Packet Interface), ATAPI-6,
ATAPI-7,

5.3 SCSI diskovi


SCSI (Small Computer System Interface) diskovi se ne razlikuju od IDE diskova u
pogledu organizacije glave, sektora i sl., nego oni imaju drugaiji interfejs i mnogo vee
brzine transfera.SCSI (Small Computer System Interface) je standardizovan 1986. godine.
SCSI je vie od interfejsa hard diska, on je zapravo sabirnica na koju moe biti spojen SCSI
kontroler i do 7 ureaja (SCSI hard diskovi, CD-ROM i drugi SCSI periferali). Svaki ureaj
ima dva konektora: jedan za ulaz i jedan za izlaz.

5.4 RAID
Kao to je paralelno procesiranje esto koriteno da se ubrza performansa CPU-a,
zadnjih godina desio se slian razvoj I/O ureaja. Ideja o paralelnom I/O ureaju dovela je do
razvoja nove klase I/O ureaja nazvanih RAID (Redudant Array of Independent Disks).
Osnovna ideja RAID ureaja bila je postaviti nekoliko diskova pored raunara (npr. servera),
zamijeniti karticu disk kontrolera sa RAID kontrolerom, kopirati podatke u RAID i nastaviti
sa normalnim radom. Operativnom sistemu bi RAID izgledao kao jedan veliki disk ureaj.
Budui da SCSI diskovi imaju dobre performanse, nisku cijenu i mogunost da imaju i
do 7 ureaja na jednom kontroleru, veina RAID-ova se sastoji od RAID SCSI kontrolera i
kutije SCSI diskova, a koji se operativnom sistemu ini kao jedan veliki disk.

25

Slika 17

5.5 CD-ROM
Optiki diskovi originalno su razvijeni za snimanje TV programa i disk prve
generacije razvijen je za Philips za potrebe snimanja filmova. Prvobitni diskovi bili su
promjera 30 cm i zvali su se LaserVision.
CD (Compact Disk) je razvijen 1980. godine od strane Philips-a i Sony-a. Tehniki
detalji su opisani u meunarodnom standardu (IS 10149), nazvanom Red Book. CD je
prenika 120mm, debljine 1.2mm, sa rupom u sredini od 15mm.
CD se snima koristei infracrveni laser velike snage koji bui rupe veliine od 0.8
mikrona prenika u disku obloenim staklom.
Neto kasnije, 1984. Godine, Phlips i Sony su definisali i standard YellowBook za
CD-ROM (Compact Disk Read Only Memory) koji definie formatiranje raunarskih
podataka. Ovaj standard je poboljaomogunosti sistema za korekciju greke.

26

Slika 18

5.6 CD-Recordable (CDR)


CDR su slini CDROM-ovima, izuzev da oni sadre 0.6 mm lijeb za navoenje
lasera prilikom snimanja. Izmeu slojeva polycarbonata i reflektivnog sloja (CRROM ima
sloj od srebra), postavljen je sloj boje koji moe biti:
od cijanina, zelene boje,
od ptalocijanina, koji je ukaste boje.
U Orange Book je definisan standard za novu vrstu CD-R, a to je CD-ROM XA, koji
omoguava da zapisi na CD budu dodavani inkrementalno, tj. moe se dodati jedan zapis
dana, drugi kroz par dana. S ovim su se pojavili i tzv. multisession CD-ROMovi.

Slika 19. Presjek CD-R diska i lasera

27

5.7 CD-Rewritable
Ovi CD-ovi omoguavaju da se na jednom te istom mediju moe vie puta itati i
upisivati podaci. CD-RW ureaji koriste lasere sa tri razliite nivoa snage:
najvii nivo se koristi za snimanje podataka,
srednji za brisanje podataka,
najnii nivo slui za itanje podataka.

5.8 DVD
DVD (Digital Versatile Disk) ima isti opi dizajn kao CD-ovi, ali imaju:
manje upljine (0.4miktona, u odnosu na 0.8 mikrona kod CD-a),
zbijenije spirale (0.74 mikrona naspram 1.6 mikrona za CD),
crveni laser (0.65 mikrona u odnosu na 0.78 kod CD).

Slika 20 Presjek DVD-a sa dva sloja

5.9 Blue-Ray
Nasljednik DVD-a je Blue-Ray nazvan tako zbog plavog lasera koji koristi. Plavi laser
ima krau talasnu duinu u odnosu na crveni laser koriten kod DVD-a, tako da moe kreirati
manje upljine i time smjestiti do 25GB podataka.

28

6 Ulazno/izlazni ureaji
6.1 Sabirnica
Tipini raunarski sistem je sastavljen od nekoliko komponenti kao to je centralna procesna
jedinica (CPU), memorijski ipovi i ulazno/izlazni (U/I) ureaji. Takoe, on sadri sabirnicu (eng.
bus) koja predstavlja zajedniki put koji povezuje ove razliite komponente u raunarskom sistemu.
Ona se sastoji od medija kao to su ice i konektori i protokola sabirnice.
Raunar na slici 7.2 ima jednu sabirnicu povezanu sa CPU, memorijom, U/I ureajima.
Veina sistema ima dvije ili vie sabirnica. Svaki U/I ureaj sastoji se od dva dijela: kontrolera i
samog U/I ureaja. Kontroler U/I ureaja se obino nalazi na ploi koja se umee u slobodan slot
(izuzev kontrolera koji nisu opcioni, npr. tastatura koji su na matinoj ploi). Uloga kontrolera je da
kontrolie svoj U/I ureaj i upravlja njegovim pristupom sabirnici.
Potrebno je napomenuti da se sabirnica ne koristi samo od strane U/I ureaja, nego i od CPU
za dobavljanje instrukcija i podataka. Ako i CPU i U/I ureaj trebaju sabirnicu, tada U/I ureaj ima
prednost i to odreuje arbitar sabirnice.
Sabirnica predstavlja kanal kojim informacije teku od jedne do druge raunarske jedinice ili
ureaja. Obino sabirnica posjeduje pristupne take ili mjesta kojima se ureaj moe povezati sa
sabirnicom. Veina dananjih sabirnica su bidirekcione to znai da ureaji mogu slati i primati
informacije preko iste sabirnice. Sabirnica je dijeljeni komunikacioni link izmeu razliitih ureaja.
Ona omoguava lako dodavanje novih ureaja i olakava portabilnost perifernih ureaja izmeu
razliitih raunarskih sistema. Meutim, ako je veliki broj ureaja povezan sa istom sabirnicom, tada
ona moe postati usko grlo sistema.
Sabirnice ukljuuju ice koje se koriste za prenos adresa, podataka, kontrolnih signala,
statusnih signala, sata i slino (slika 7.2). Adresne linije indiciraju izvor ili odredite podataka koji su
postavljeni na linijama podataka. Kontrolne linije se koriste za implementaciju protokola sabirnice.
esto ove linije se koriste za prenos signala koji kontroliu sabirnicu, upravljaju interuptima i slino.
Statusne linije indiciraju progres trenutne transakcije. Signali statusa su koriteni kod sistema
sinhronih sabirnica kako bi se sinhronizovale operacije sabirnice.

Slika 21Razliite vrste linija sabirnice

Komunikacione potrebe razliitih ureaja u raunarskom sistemu mogu se znaajno


razlikovati. Ovo je dovelo do razvoja razliitih vrsta sabirnica koje se meusobno razlikuju u

29

propusnosti, latentnosti i slino. Tipino, postoje dvije vrste sabirnica, CPU-memorija sabirnice i U/I
sabirnice.
CPU-memorija sabirnice su brze i kratke, dok su U/I sabirnice obino duge i spore. U/I
sabirnice povezuju vei broj razliitih ureaja. Neki autori ovo nazivaju hijerarhijom sabirnica sa
brzim sabirnicama blie procesoru i sporim sabirnicama daleko od procesora.
U/I sabirnice u personalnom raunaru su obino izraene na tampanoj ploi, koja ima
kontektore-slotove za umetanje kartice perifernih ureaja (slika 7.3.).

Slika 22 Pojednostavljeni prikaz slotova U/I ureaja na matinoj ploi

Protokoli sabirnice
Sabirnica predstavlja komunikacioni kanal dijeljen izmeu mnogo razliitih ureaja i prema
tome potrebno je definisati odreena pravila kako bi se komunikacija odvijala bez smetnji. Ova pravila
nazivaju se protokolima sabirnice. Dizajn sabirnice obuhvata nekoliko zahtjeva koji se moraju uzeti u
obzir kao to je irina sabirnice podataka, brzina transfera podataka, protokoli sabirnice, sat i slino.
Ovisno od toga da li su transakcije na sabirnici upravljane satom ili ne, sabirnice se dijele na sinhrone i
asinhrone sabirnice. Ovisno od toga da li se biti podataka alju preko paralelnih ica ili su
multipleksirani na jednu icu, postoje paralelne i serijske sabirnice. Kontrola komunikacije preko
sabirnice u prisustvu veeg broja ureaja zahtijeva procedure koje se nazivaju eme arbitriranja.
Sinhrone i asinhrone sabirnice
Kod sinhronih sabirnica, operacije sabirnice su sinhronizovane sa referentnim signalom sata.
Sat sabirnice je obino izveden na osnovu sata raunarskog sistema, mada je on obino sporiji od
glavnog sata. Na primjer, sabirnice od 66MHz su koritene u sistemima sa satom procesora od
500MHz. Sabirnice su tradicionalno sporije od procesora, jer je vrijeme pristupanja memoriji obino
due od ciklusa sata procesora. Prenos preko sabirnice zahtijeva nekoliko ciklusa sata.
Na slici 7.4 prikazana je operacija itanja iz memorije preko sinhrone sabirnice. U toku prvog
ciklusa sata CPU smijeta adresu lokacije sa koje eli itati na adresnu liniju sabirnice. Kasnije, u toku
istog ciklusa sata, jednom kada su adresne linije stabilizirane, READ zahtjev je uspostavljen od CPU.
Potrebno je nekoliko ciklusa sata da memorija izvri pristupanje eljenoj lokaciji. U jednostavnoj
sabirnici, ovo odgovara stanju ekanja i podaci se postavljaju na sabirnicu od strane memorije nakon
dva ili tri ciklusa ekanja. CPU zatim oslobaa sabirnicu uklanjanjem READ kontrolnog signala.

30

Operacija pisanja je slina, s tim da je procesor sada izvor podataka, te postavlja WRITE signal na
sabirnicu. Razliite arhitekture sinhroniziraju operacije sabirnice u odnosu na rastuu ili opadajuu
ivicu signala sata.

Slika 23. Operacija itanja podataka iz memorije na sinhronoj sabirnici

Asinhrone sabirnice nemaju sistemskog sata. Ovdje se koristi princip "handshaking" kako bi
se podaci prikladno prenijeli izmeu poiljaoca i primaoca. Proces je prikazan na slici 7.5.

Slika 24 Operacija itanja podataka iz memorije na asinhronoj sabirnici

Na primjer, kod asinhrone operacije itanja, master sabirnice stavlja adresu i kontrolni signal
na sabirnicu i postavlja signal za sinhronizaciju. Signal za sinhronizaciju od mastera govori slave-u da
bude sinhronizovan i jednom kada pristupi podacima, on postavlja svoj sinhronizacioni signal.
Sinhronizacioni signal slave-a indicira procesoru da se na sabirnici nalaze validni podaci i da se mogu
itati podaci. Master zatim uklanja svoj sinhronizacioni signal, to indicira slave-u da je master
proitao podatke. Zatim slave uklanja svoj sinhronizacioni signal. Ovaj nain sinhronizacije naziva se
full handshake.

31

Ovdje ne postoji sat, tako da je poetak i kraj prenosa podataka indiciran sa specijalnim
signalima za sinhronizaciju. Asinhroni komunikacioni protocol se moe smatrati kao par maina
konanog stanja (eng. Finite State Machine, FSM) koje rade tako da jedna FSM ne nastavlja sa radom
sve dok druga FSM ne doe u odreeno stanje.
Sinhrone sabirnice su obino bre od asinhronih, jer ne postoji potreba za usklaivanjem
sinhronizacije za svaki prenos. Procesor-memorija sabirnice su sinhrone sabirnice, jer su ureaji
povezani tim sabirnicama brzi, ima ih manji broj i meusobno su blizu. U/I sabirnice su asinhrone, jer
mnogi periferali trebaju manje brzine prenosa podataka i fiziki se ne nalaze u blizini jedni drugih.
Serijske i paralelne sabirnice
Sabirnice koje prenose nekoliko bita podataka istovremeno nazivaju se paralelne sabirnice. Za
veinu sistema, potrebno je imati iroke sabirnice sa viestrukim linijama koje mogu brzo prenijeti
velike koliine podataka. Paralelne sabirnice obino imaju 8, 16, 32 ili 64 linije podataka. Primjeri
paralelnih sabirnica su ISA, PCI, VESA i EISA sabirnice. Serijske sabirnice koriste istu liniju za
prenos bita podataka istog bajta/rijei. Obino, ove sabirnice imaju samo jednu liniju podataka i biti se
preko nje alju jedan iza drugog, kao paket. Universal Standard Bus (USB) i IEEE 1394 arhitektura
sabirnica su primjer serijskih sabirnica. Serijske sabirnice su jefitnije od paralelnih sabirnica, ali
paralelne sabirnice imaju veu propusnost.
ISA (eng. Industry Standard Architecture) sabirnica predstavlja stariju verziju raunarskih
sabirnica. Nakon ove sabirnice, razvile su se EISA sabirnice, da bi nakon toga Intel razvio PCI (eng.
Peripheral Component Interconnect) sabirnice koje mogu biti koritene u mnogim konfiguracijama.
Na slici 7.6 dat je primjer jednog raunarskog sistema. CPU komunicira sa memorijskim
kontrolerom preko konekcije velike brzine, dok kontroler komunicira direktno sa memorijom i PCI
sabirnicom, tako da saobraaj izmeu CPU i memorije ne ide preko PCI sabirnice. Visokopropusni
periferali (periferali sa velikom brzinom prenosa podataka) mogu se spojiti na PCI sabirnicu direktno.
PCI sabirnica ima most ka ISA sabirnici, tako da ISA i njeni ureaji mogu biti koriteni.

Slika 25 Primjer sabirnica u raunarskom sistemu

1
2
3

Svi mini i mikroraunari mogu da se klasifikuju prema strukturi sabirnica na:


sisteme sa jednom sabirnicom
sisteme sa odvojenom ulazno/izlaznom sabirnicom
sisteme sa vie sabirnica

6.2.

Terminali
Raunarski terminali obuhvataju tastaturu i monitor.

Tastature
Danas postoji vie tipova tastatura. Kod dananjih tastatura, npr. onih jefitinijih, kada
se pritisne tipka ostvaruje se mehaniki kontakt izmeu tipki i tampane ploe, dok se kod
32

tastura neto bolje kvalitete, izmeu tipki i tampane ploe nalazi sloj elastinog materijala
(vrsta gume). Pojedine tastature su dizajnirane tako da se ispod svake tipke nalazi kao mala
kupola, koja, ako se tipka dovoljno pritisne, zatvara strujni krug. Neke druge ispod tipki imaju
magnet, umjesto kupole, koji prolaazi kroz namotaj i na taj nain inducira struju.
Kod personalnih raunara, kada se pritisne tipka na tastaturi, generie se interrupt i
pokree se keyboard interrupt handler (softver koji predstavlja dio operativnog sistema). Ovaj
interrupt handler ita registar unutar kontrolera tastature da bi dobio podatak o broju pritisnute
tipke (od 1 do 102). Kada se tipka otpusti, pokree se drugi interrupt. Tako, ako je pritisnuta
SHIFT tipka, a zatim pritisnuta tipka S, operativni sistem moe da odredi da korisnik eli
veliko slovo S.
Monitori
CRT (Cathode Ray Tube) monitor ima top (monitor u boji ima 3 topa, RGB) koji
izbacuje snop elektrona na fluoroscentni ekran u blizini prednje strane cijevi. Tokom
horizontalnog skena, snop prelazi preko ekrana za oko 50 sec ispisujui skoro pa
horizonatlnu liniju, zatim se vraa natrag ka lijevoj ivici da bi zapoeo novi prolazak. Ureaji
koji proizvode sliku liniju po liniju nazivaju se raster scan ureaji. Slika na cijelom ekranu se
stalno ispisuje oko 30 do 60 puta u sekundi.

Slika 26

Najee koriteni flat panel displeji su tzv. LCD (Liquid Crystal Display) monitori.
LCD monitor sastoji se od dvije paralelne staklene ploe izmeu kojih se nalazi zatvoreni dio
koji sadri tene kristale. Obje ploe su spojene na transparentne elektrode, a svjetlost iza
stranje ploe osvjetljava ekran. Transparentne elektrode se koriste za kreiranje elektrinog
polja u kristalima.
Druga vrsta flat panela su tzv. TFT displeji koji koriste elemente koji se nazivaju thin
film transistors. Veina notebook raunara, kao i flat displeja za desktio raunare koristi TFT
tehnologiju.

33

Slika 27

6.3.

Mi

Mi predstavlja ureaj koji omoguava korisniku da pomjeranjem mia pomjeri i mali


pokaziva na ekranu i na taj nain odabere eljeni element na ekranu ili pokrene eljenu
akciju.
Postoje tri vrste mieva: mehaniki, optiki i optomehaniki. Prva vrsta mieva ima
dva gumena tokia na dnu ije su ose meusobno okomite. Svaki toki je spojen na
promjenljivi otpornik ili potenciometar. Mjerenjem otpornosti mogue je vidjeti za koliko se
svaki toki rotirao i na taj nain izraunati pomjeraj mia u svakom smjeru. U zadnje vrijeme
ti tokii zamijenjeni su sa gumenom lopticom.
Optiki mievi imaju LED diodu i fotodetektor na dnu. On je koriten iznad specijalne
plastine podloge sa gustom pravougaonom mreom. Prilikom pomjeranja mia, fotodetektor
koja se reflektuje od LED diode. Elektronika unutar mia broji koliko linija je preeno u
svakom smjeru.
Trea vrsta mia je optomehaniki. Slino novijim mehanikim mievima, oni imaju
kuglicu koja okree dvije meusobno okomite osovine. Osovine su spojene na enkodere koji
imaju proreze kroz koje moe proi svjetlost. Prilikom pomjeranja mia, osovine se rotiraju,
svjetlosni impulsi padaju na detektor kad god se pojavi prorez izmeu LED i detektora. Broj
impulsa koji se detektuje je proporcionalan pomjeraju.
Mi alje sekvencu od 3 bajta svaki put kada se mi pomjeri za izvjesnu minimalnu
distancu. Prvi bajt je pomjeraj u x smjeru, drugi u y smjeru, a trei je trenutno stanje dugmadi
mia.

6.4.

tampai

Jednobojni tampai
Najjeftiniji tip tampaa je tzv. Matrini tampa kod kojeg glava za tampanje ima
izmeu 7 i 24 elektromagnetski aktivirane igle du svake linije tampanja. Ako ima 7 igala za
tampanje 80 znakova u matrici 5x7 du linije, tada se linija tampanja sastoji od 7
horizontalnih linija od po 5x80 taaka.
Kvalitet tampanja matrinog tampaa moe se poveati na dva naina: koritenjem
vie igala i njihovim preklapanjem. Preklapanje zahtijeva vie prelazaka preko iste linije da bi
34

se dobile preklapajue take, to dovodi do sporijeg tampanja. Matrini tampai su jefitini,


vrlo pouzdani, ali i spori, buni i slabe grafike.

Slika 28

Inkjet tampai imaju pomjerljivu glavu koja sadri spremnik sa tintom koja prelazi
horizontalno preko papira pomou trake dok tinta pre iz glave kroz male mlaznice. Kapljica
tinte ima zapreminu od oko 1 pikolitra. Postoje dvije vrste inkjet tampaa: piezlektrini
(koriteni kod Epsona) i termalni (koriteni kod Canon, HP i Lexmarka). Kod piezlektrinih
tampaa koristi se posebna vrsta kristala smjetena pored komore za tintu. Kada se na kristal
primijeni napon, on se malo deformie, tjerajui kapljicu tinte kroz mlaznicu. to je napon
vei, to je vea i kapljica. Termalni inkjet tampai sadre mali otpornik unutar svake
mlaznice. Kada se na otpornik primijeni napon, on se vrlo brzo zagrije, skoro trenutno
podiui temperaturu tinte do kljuanja, sve dok se ne kreira baloni. On vri pritisak na
mlaznicu tjerajui tintu kroz mlaznicu na papir. Mlaznica se nakon toga hladi i rezultujui
vakuum uvlai novu tintu iz spremnika. Rezolucija inkjet tampaa je najmanje 1200 dpi
(dots per inch, taaka po inu) i najvie 4800 dpi.
Laserski tampai koriste skoro istu tehnologiju kao maine za fotokopiranje. Srce
tampaa je rotirajui valjak (ili pojas). Na poetku svakog ciklusa stranice, on se napuni na
1000 V i obloen je sa fotosenzitivnim materijalom. Zatim se svjetlost sa lasera skenira du
valjka. Snop svjetlosti je moduliran tako da proizvede uzorak svijetlih i tamnih taaka. Take
koje pogodi snop gube svoj elektrini naboj. Nakon za djeli ugla kako bi se ispisala naredna
linija. Kada prva linija dotakne toner (rezervoar elektrostatiki osjetljivog praha), on biva
privuen onim takama koje su jo uvijek naelektrisane i tako se formira vizuelna slika linije.
Nakon toga, valjak obloen tonerom biva pritisnut uz papir i prah se prenosi na papir. Papir se
nakon toga proputa kroz zagrijane valjkove koji trajno spajaju toner i papir. Zatim se valjak
razelektrie, oisti od preostalog tonera i priprema za narednu stranicu.

Slika 29

35

tampai u boji
Skoro svi sistemi za tampanje koriste 4 vrste tinte: cijan, uta, magenta i crna, zbog
ega se ovi sistemi nazivaju CYMK tampai. Kompletan skup boja koje displej ili tampa
moe proizvesti naziva se gamut.
Postoje dvije vrste tinte za inkjet tampae:
Tinte zasnovane na boji koja se sastoji od boje rastopljene u nekoj tenosti. One
daju svijetle boje i brzo protiu. Nedostatak ove tinte je da blijedi kada je izloena
UV svjetlosti, npr. sunevoj svjetlosti.
Tinte zasnovane na pigmentu koja sadri vrste estice pigmenta unutar tenosti
koja ispari sa papira ostavljajui samo pigment.
Princip rada laserskih tampaa u boji je isti kao kod jednobojnih laserskih tampaa,
izuzev toga da su zasebne C, Y, M i K slike prenesene na valjak pomou 4 razliita tonera.
Osim inkjet i laserskih tampaa u boji, postoje jo tampai sa vrstom tintom,
votani tampai i tampai sa sublimirajuom bojom.
Telekomunikaciona oprema
Veina raunara se povezuje na raunarsku mreu, a esto i na Internet. Da bi se
ostvario pristup na Internet potrebna je odgovarajua oprema.
Ponekad se telefonska linija koristi za ostvarivanje fizike komunikacije sa
raunarskom mreom ili Internetom. Obina telefonska linija nije prikladna za prijenos
raunarskih signala, koji obino predstavljaju 0 kao 0 V i 1 kao napon od 3 do 5 V. Signal sa
dva nivoa trpi znaajnu distorziju kada se prenosi preko telefonske linije, to vodi do greaka
transmisije.
isti sinusni talas sa frekvencijom od 1000 do 2000 Hz, koji se naziva nosilac moe
biti prenesen sa vrlo malom distorzijom. Variranjem amplitude, frekvencije i faze sinusnog
talasa moe biti prenesena sekvenca 0 i 1. Ovaj proces se naziva modulacija. Kod amplitudne
modulacije, koritena su dva razliita nivoa napona za 0 i 1. Osoba koja slua digitalne
podatke pri vrlo maloj brzini e uti glasan um za 1 i nikakv um za 0. Kod frekventne
modulacije, nivo napona je konstantan, ali se mijenja frekvencija nosioca za 0 i 1. Osoba koja
slua frekventno modulisane digitalne podatke e uti dva tona koji odgovaraju 0 i 1. Kod
fazne modulacije, mijenja se faza nosioca za 180 kada se podaci mijenjaju sa 0 na 1 ili sa 1
na 0.
Biti se preko telefonske linije alju serijski, jedan po jedan. Ureaj koji prihvata
znakove od raunara u obliku signala sa dva nivoa i alje ih jedan po jedan bit naziva se
modem. Ime ureaja je skraenica od rijei modulator demodulator. Da bi oznaio poetak i
kraj svakog znaka ispred i iza svakog znaka se alju tzv. start i stop biti. Modem poiljaoc
alje individualne bite znaka u pravilnim vremenskim intervalima. Prijemni modem
konvertuje modulisani nosioc u binarni broj. Moderni modemi rade na brzinama od 28800
bita/s do 57600 bita/s. Veina modema je full-duplex, to znai da mogu slati podatke u oba
smjera u isto vrijeme. Ako modemi mogu slati podatke u samo jednom smjeru u istom
trenutku naziva se half-duplex. Linije koje mogu slati podatke u samo jednom smjeru su
simplex linije.
ADSL (Asymmetric digital subscriber line) dijeli spektar frekvencija od 1.1 MHz u
256 neovisnih kanala od 4312.5 Hz. Kanal 0 je koriten za POTS (Plain Old Telephone
Service). Kanali 1 5 nisu koriteni kako bi se sprijeila interferencija izmeu signala glasa i
signala podataka. Od preostalih 250 kanala, jedan je koriten za upstream kontrolu i jedan za
downstream kontrolu. Preostali kanali su dostupni za korisnike podatke. Prilikom koritenja
ADSL-a, telefonska kompanija kod kupca postavlja NID (Network Interface Device) ureaj.
Pored (ili kombinovano sa) NID je postavljen tzv. spliter, analogni filter, koji odvaja opseg od
0-4000 Hz koriten za POTS od podataka. Signal sa podacima se alje na ADSL modem.
36

Danas veina kablovskih TV kompanija nudi i Internet pristup. Ova tehnologija je


neto drugaija od ADSL-a. No, kao i ADSL, i kablovski internet koristi kablovski modem
koji ima dva interfejsa: jedan ka raunaru i drugi ka kablovskoj mrei.

37

7. Nivo mikroarhitekture
Nivo koji se nalazi iznad nivoa digitalne logike naziva se nivo mikroarhitekture.
Najjednostavniji nain za razumijevanja ovog nivoa jeste da se dizajn mikroarhitekture
posmatra kao problem programiranja, gdje je svaka instrukcija koja se poziva na narednom
nivou (ISA nivou) u osnovi funkcija koja se poziva od jednog glavnog programa. S druge
strane, glavni program se moe predstaviti kao beskonana petlja koja u svakom koraku
odreuje koja funkcija e biti pozvana, poziva datu funkciju i zatim poinje iz poetka.
Svaki mikroprogram posjeduje jedan skup varijabli koji se naziva stanjem raunara i
kojem se moe pristupiti pomou ovih funkcija. Na primjer, programski broja (eng. Program
Counter, PC) je dio tog stanja. On odreuje na kojoj memorijskoj lokaciji se nalazi sljedea
instrukcija koju treba izvriti.
Svaka instrukcija ima nekoliko polja, obino jedno ili dva. Prvo polje svake instrukcije
predstavlja opcode (skraeno od engleskih rijei operation code), koje identificira instrukciju,
govorei o kakvoj instrukciji je rije, na primjer ADD ili LOAD. Mnoge instrukcije imaju i
dodatno polje koje definie operande.

7.2.

Putanja podataka

CPU moe biti podijeljen na podatkovni dio i kontrolni dio. Podatkovni dio, koji se
ee naziva putanja podataka (eng. datapath), predstavlja dio CPU i obuhvata ALU, njene
ulaze i izlaze. Kontrolni dio predstavlja kontrolnu jedinicu koja izdaje kontrolne signale
namijenjene za putanju podataka. Putanja podataka je slina na veini raunarskih maina.
Ona sadri odreen broj 32-bitnih registara kojima su dodjeljena simbolika imena, kao npr.
PC, SP i slino, pri emu se ovim registrima moe pristupiti samo na nivou mikroarhitekture.
Unutar CPU-a, podaci se pomijeraju od jednog registra do drugog i izmeu ALU i registara.
Unutarnji pomjeraji podataka izvedeni su preko lokalnih sabirnica, koje mogu prenositi
podatke, instrukcije i adrese. Unutarnje pomjeranje podataka izmeu registara i izmeu ALU i
registara moe biti izvedeno primjenom razliitih oraganizacija ukljuujui organizacije sa
jednom, dvije ili tri sabirnice. Za komponente CPU-a koje proslijeuju podatke meusobno
vrlo esto mogu biti koritene posebne putanje podataka.
Primjer dat na slici je uobiajen za veliki broj maina i predstavljen je za 32-bitne
sisteme. Sadri 32-bitne registre, oznaene kao npr. PC, MAR i slino. Putanja podataka
prikazana na slici ima dvije sabirnice podataka, B i C, mada pored njih tu postoji jo i
sabirnica A. Veina registara moe postaviti svoj sadraj na sabirnicu B. Izlaz iz ALU i
pomjeraa se prenosi sabirnicom C do jednog ili vie registara istovremeno.
ALU prikazana na slici je identina ALU predstavljenoj u prethodnom poglavlju. Rad
ALU je odreen sa 6 kontrolnih linija: F0 i F1 odreuju operaciju koju izvodi ALU, ENA i
ENB omoguavaju proslijeivanje individualnih ulaza A i B ALU, INVA invertuje lijevi ulaz,
a INC poveava bit najmanje pozicione vrijenosti izlaza za vrijednost 1. Na primjer, ako
kontrolni signali imaju sljedee vrijednosti: F0=1, F1=1, ENA=1, ENB=1, INVA=0 i INC=0,
tada to podrazumijeva izvravanje operacije A+B.
ALU ima dva podatkovna ulaza: lijevi ulaz (A) i desni ulaz (B). Sa ulazom A spojen je
registar H, dok je ulaz B u osnovi sabirnica B, preko koje se mogu proslijeivati podaci iz
bilo kojeg od registara povezanih sa tom sabirnicom.
Pored kontrolnih linija ALU, za kontrolu izlaza iz ALU koriste se jo dvije kontrolne
linije. Prva pomijera sadraj ulijevo za 1 bajt, punei bite najmanje pozicione vrijednosti sa 0,
a druga linija pomijera sadraj udesno za 1 bit, ostavljajui bit navee pozicione vrijednosti
nepromijenjen.
38

Raunar moe komunicirati na dva naina sa memorijom: 32-bitni port sa


adresiranjem memorije na nivou rijei i 8-bitni port sa adresiranjem na nivou bajta. 32-bitni
port je kontrolisan sa dva registra MAR (Memory Address Register) i MDR (Memory Data
Register).
U nastavku je data tabela kombinacija ALU signala i odgovarajuih operacija.

Slika 30 Primjer putanje podataka

Slika 31 Primjer kombinacija ALU signala i odgovarajue funkcije

7.3.

Vremenska sekvenca kod putanje podataka

Na slici je prikazan redoslijed operacija kod putanje podataka. Kratak impuls je


proizveden na poetku svakog ciklusa sata. On moe biti izveden od glavnog sata. Na
opadajuu ivicu impulsa, podeeni su svi bita za kola. Za to je potrebno vrijeme w . Zatim je
odabran registar potreban na sabirnici B i njegov sadraj je postavljen na sabirnicu. Potrebno
je x vremena da taj sadraj bude stabilan na sabirnici. Tada ALU i pomjera poinju sa
39

radomna validnim podacima. Nakon y vremena, izlazi ALU i pomjeraa su stabilni. Nakon
dodatnih z , rezultati su propagirani du sabirnice C ka registrima, gdje e biti uitani pri
rastuoj ivici sljedeeg impulsa.

Slika 32 Vremenski dijagram jednog ciklusa putanje podataka

7.4.

Mikroinstrukcije

Da bi se mogla kontrolisati putanja podataka sa primjera, potrebno je 29 signala. Oni


mogu biti podijeljeni u 5 funkcionalnih grupa:
Signali koji kontroliu upisivanje podataka sa sabirnice C u registre (9),
Signali koji kontroliu proslijeivanje sadraja registara na sabirnicu B za ulaz u
ALU (9),
Signali za kontrolisanje funkcija ALU i pomjeraa (8),
Signali (nisu prikazani) za indiciranje itanja /pisanja preko MAR/MDR (2),
Signali (nisu prikazani) za indiciranje dobavljanja iz memorije preko PC/MBR (1).
Vrijednosti ovih 29 kontrolnih signala specificiraju operacije za jedan ciklus putanje
podataka. Ciklus se sastoji od odbavljanja vrijednosti iz registara na sabirnicu B, propagiranja
signala kroz ALU i pomjera, njihovo voenje na sabirnicu C i konano upisivanje rezultata u
odgovarajui registar/registre. Ako je postavljen signal za itanje podataka iz memorije,
memorijska operacija je zapoeta na kraju ciklusa putanje podataka, nakon to je MAR
napunjen. Podaci iz memorije su dostupni na kraju ciklusa u MBR ili MDR i mogu biti
koriteni u narednom ciklusu.

40

8. Instrukcijski skup
Nivo arhitekture instrukcijskog skupa (eng. Instruction Set Architecture, ISA) nalazi
se izmeu nivoa mikroarhitekture i nivoa operativnog sistema. ISA nivo predstavlja interfejs
izmeu softvera i hardvera i to je jezik koji oba ova elementa moraju razumjeti. ISA nivo
mora biti backward komaptibilan, tj. nova maina mora biti u stanju izvravati i stare
programe bez izmjene. Meutim, poptuno je prihvatljivo da nova maina ima i neke nove
instrukcije i osobine koje mogu biti iskoritene samo sa novim softverom.
Kvalitet ISA nivo okarakterisan je sa dva faktora. Prvi faktor je da ISA treba definie
skup instrukcija koje mogu biti efikasno implementirane sa trenutnim i buduim
tehnologijama, ato rezultuje u dizajnima efikasnim u toku nekoliko generacija raunara.
Drugo, ISA treba da obezbijedi i jasan kompajlirani kod.
Prilikom kreiranja koda za ISA nivo, pisac kompajlera mora znati kakav je model
memorije, kakvi registri postoje, koji tipovi podataka i instrukcija su raspoloivi, itd.
Kolekcija svih ovih informacija je ono to definie ISA nivo.
Bitna osobina ISA nivoa je da kod veine maina postoji barem dva moda:
Kernel mod namijenjen za izvravanje operativnog sistema i on omoguava svim
instrukcijama da budu izvrene;
Korisniki mod namijenjen za izvravanje aplikacionih programa i ne dozvoljava
nekim osjetljivim instrukcija (kao to je direktna manipulacija cache memorijom)
da se izvre.
Svi raunari imaju odreene registre pri ISA nivou koji kontroliu izvravanje
programa, uvaju privremene rezultate, itd. Registri na ISA nivou vidljivi korisnikim
programima mogu biti podijeljeni u dvije kategorije:
registri opte namjene uvaju kljune lokalne varijable i meurezultate
prorauna;
registri specijalne namjene obuhvataju program counter i stack pointer registre,
kao i registre sa specijalnom funkcijom.
Pored navedenih registara, postoji i jedan tzv. hibridni kernel/korisnik registar koji se
naziva flag registar ili PSW (Program Status Word). Ovaj registar sadri bite potrebne CPU-u,
meu kojima su najbitniji uslovni kodovi (condition codes) koji se podeavaju na svakom
ciklusu ALU i odreuju status rezultata zadnje operacije. Ovi uslovni kodovi koriste se od
strane instrukcija poreenja ili uslovnog granjanja. Na primjer: N- postavlja se kada je
rezultat bio negativan; Z - postavlja se kada je rezultat bio nula.
Na ISA nivou postoji i odreeni broj registara specijalne namjene koji su vidljivi samo
u kernel modu i oni kontroliu cache, memorije, ulazno-izlazne ureaje i druge hardverske
osobine maine. Ovi registri se koriste samo od operativnog sistema.

8.1 Memorijski modeli


Svi raunari dijele memoriju na elije koje imaju uzastopne adrese. Najee koritena
veliina elije je 8 bita. Ovakva elija od 8 bita naziva se bajt (eng. Byte). Bajti su openito
grupisani u 4-bajtne (32-bitne) ili 8-bajtne (64 bitne) rijei, pri emu instrukcije mogu
manipulisati sa cijelim rijeima. Da bi se rijei mogle premijetati iz i u memoriju, svakoj
rijei se dodjeljuju razliite adrese. Ove adrese su koritene da se odredi lokacija u memoriji
na koju e data rije biti pohranjena (write operacija) ili proitana (read operacija).
Broj bita, l, potreban da se distinktivno adresira M rijei u memroiji je dat sa
l log 2 M . Na primjer, ako je veliina memorije 64 M (64 mega riji), onda je broj bita u
adresi jednak log 2 (64 220 ) log 2 (226 ) 26 bita. Alternativno, ako je broj bita u adresi l,

onda je maksimalna veliina memorije M jednaka M 2l .


41

Mnoge arhitekture zahtijevaju da rije uvijek pone na njihovim prirodnim granicama,


tako da na primjer 4-bajtna rije moe poeti na adresama 0, 4, 8, itd., ali ne i na adresama 1
ili 2. Slino, 8-bajtne rijei mogu poeti na adresama 0, 8, 16, itd, ali ne i na 4 ili 6.
Poravnanje memorije u raunarima se dosta puta zahtijeva zbog efikasnijeg rada. Meutim, na
primjer kod Pentiuma 4, ISA program dozvoljava da rije moe poeti na bilo kojoj adresi.
Mogunost uitavanja rijei na proizvoljne adrese zahtijeva dodatnu logiku na ipu, to ga
ini veim i skupljim.
Veina maina ima jedan linearan adresni prostor na ISA nivou, proirujui od adrese
0 pa sve do nekog maksimuma, esto 232 ili 264 bajta. Naredni bitan aspekt ISA nivoa jeste
njegova memorijska semantika.

Slika 33

8.2 Instrukcije
Glavna osobina ISA nivoa je njegov skup instrukcija koje odreuju ta maina moe
uraditi. Ove instrukcije uvijek obuhvataju instrukcije kao to su LOAD i STORE za
pomjeranje podataka izmeu memorije i registara i MOVE instrukciju za kopiranje podataka
izmeu registara. Pored njih tu su aritmetike instrukcije, Booleove instrukcije i instrukcije za
poreenje podataka i granjanje.
Instrukcija se sastoji od opcode sa dodatnim informacijama kao to je gdje se nalaze
podaci i gdje e biti smjeten rezultat. Instrukcije uvijek imaju opcode koji govori ta data
instrukcija radi, a pored njega mogu biti dodate jo 0, 1, 2 ili 3 adrese.

Slika 34 Instrukcije sa razliitim brojem adresa

Ovisno od raunara, sve instrukcije mogu biti iste ili promjenljive duine. Instrukcije
mogu biti krae od, due od ili iste duine kao i duine rijei.

Slika 35

42

8.2.

Tipovi podataka

Svi raunari koriste odreene tipove podataka za svoj rad. Ti podaci moraju biti
predstavljeni u nekom specifinom obliku unutar raunara. Na ISA nivou koriteni su razliiti
tipovi podatak. Tipovi podataka mogu biti podijeljeni u dvije kategorije: numerike i
nenumerike tipove podataka. Numeriki tipovi podataka su:
cjelobrojni tip
brojevi sa pominim zarezom.
Cjelobrojni tipovi mogu biti tipa unsigned i signed, to znai da ne posjeduju ili
posjeduju bit predznaka, respektivno. Unsigned cijeli brojevi imaju prednost jednog dodatnog
bita. Na primjer, 32-bitna rije moe pohraniti cijele brojeve bez predznaka u intervalu od 0
do 232 1 , dok signed cijeli brojevi mogu manipulisati samo sa brojevima u intervalu do
231 1 , kao i negativnim brojevima. Brojevi sa pominim zarezom mogu imati duinu 32, 64
ili ponekad i 128 bita. Veina raunara ima instrukcije za izvoenje aritmetike sa realnim
brojevima.
Nenumeriki tipovi podataka:
karakteri
stringovi
Booleove vrijednosti.

8.3.

Adresiranje

Veina instrukcija sadri operande za koje je potrebno specificirati gdje se nalaze.


Stoga, specificiranje gdje se nalaze operandi (tj. njihova adresa) naziva se adresiranje. Mod
adresiranja predstavlja nain na koji su biti adrese interpretirani kako bi se naao odgovarajui
operand.
Neposredno adresiranje
Najjednostavniji nain za instrukciju da specificira operand jeste da se u adresni dio
instrukcije smjesti sam operand umjesto adrese ili druge informacije koja opisuje gdje se
operand nalazi. Takav operand se naziva neposredni operand, jer se automatski dobavlja iz
memorije u isto vrijeme kada se dobavlja instrukcija.
Prednost neposrednog adresiranja je da ne zahtijeva dodatnu referencu memorije da
dobavi operand. Nedostatak da na ovaj nain mobu biti dobavljene samo konstante, kao i broj
vrijednosti koje je mogue dobaviti je ogranien veliinom polja.
Direktno adresiranje
Direktno adresiranje predstavlja metod za specificiranje operanda u memoriji
davanjem njegove pune adrese. Direktno adresiranje ima ogranienu upotrebu: instrukcija
uvijek pristupa istoj memorijskoj lokaciji, pa se tako vrijednost moe mijenjati, ali lokacija ne
moe. Stoga se ovo adresiranje obino koristi za globalne varijable ije su adrese poznate u
toku kompajliranja.
Registarsko adresiranje
Konceptualno, ovo adresiranje je isto kao direktno adresiranje, ali ono specificira
registar koji sadri operand, umjesto memorijske lokacije. Ovaj mod je uobiajen kod veine
raunara i obino se naziva registarski mod.
Registarsko indirektno adresiranje
Kod ovog moda adresiranja, specificirani operand se dobavlja iz memorije ili se
smjeta u memoriju, no njegova adresa nije ukljuena u instrukciju, kako kod direktnog

43

adresiranja. Umjesto toga, adresa je sadrana u registru i kada se adresa koristi na ovaj nain,
to se naziva pointer (pokaziva). Prednost ovog moda je da on moe referencirati memoriju
bez smjetanja pune memorijske adrese u instrukciju.
Indeksirano adresiranje
Kod ovog moda adresiranja, adresa operanda je dobijena dodavanjem konstante
sadraju registra koji se naziva indeksni registar. Indeksirano adresiranje je indicirano u
instrukciji ukljuivanjem imena indeksnog registra u zagradama i koritenjem simbola X da se
indicira konstanta koja treba biti dodata.
Bazno-indeksirano adresiranje
Neki raunari koriste mod adresiranja kod kojeg je memorijska adresa izraunata
sabiranjem dva registra plus (opciono) offset i takav mod se naziva bazno-indeksirano
adresiranje. Jedan od registara predstavlja bazu, a drugi je indeks.
Stack adresiranje
Obrnuta poljska notacija (reverse Polish notation, ime je dobila prema poljskom
logiaru J. Lukasiewicz) ili postfix notacija podrazumijeva da se u matematikom izrazu
operator pie nakon operanda, npr xy+, umjesto kao kod infix notacije x+y
Ova notacija ima niz prednosti u odnosu na infix:
Bilo koja formula moe biti izraena bez zagrada
Prikladna je za izraunavanje formula pomou raunara primjenom stacka
Postfix operatori nemaju prioriteta
Postoji nekoliko algoritama za konverziju infix formula u postfix notaciju.
Infix notacija
(8+2x5)/(1+3x2-4)
Postfix notacija
825x+132x+4-/

8.4.

Tipovi instrukcija

Tipovi instrukcija koji ine instrukcijski skup maine su indikator snage arhitekture
same maine. Instrukcije ISA nivoa mogu biti podijeljene na razliite naine. Najea
podjela je na:
Instrukcije pomjeranja podataka,
Diadske operacije,
Monadske operacije,
Poreenje i uslovno granjanje,
Instrukcije proceduralnih poziva,
Kontrola petlji,
Ulaz/izlaz.
Instrukcije pomijeranja podataka
Instrukcije pomijeranja podataka koritene se za pomijeranje podataka izmeu
razliitih jedinica raunarske maine. Kopiranje podataka sa jedne lokacije na drugu
predstavlja fundamentalnu operaciju u raunaru. Najee se za pomjeranje podataka koriste
sljedee instrukcije:
LOAD za pomjeranje iz memorije u registar,
STORE za pomjeranje iz registra u memoriju,
MOVE za pomjeranje iz jednog registra u drugi.,
Primjeri instrukcija pomijeranja iz (u) registre u (iz) memoriju su:

44

STORE Ri, 1024


LOAD 25838, Rj
Prva instrukcija pohranjuje sadraj izvornog registra Ri na memorijsku lokaciju 1024, a druga
uitava sadraj memorijske lokacije 25838 u odredini registar Rj.
Instrukcija,
MOVE Ri, Rj
pomijera sadraj registra Ri u registar Rj.
Diadske operacije
To su operacije koje kombinuju dva operanda da bi proizvele rezultat. Sve ISA-e
imaju instrukcije za sabiranje i oduzimanje cijelih brojeva, a veina imaju i za mnoenje i
dijeljenje cijelih brojeva. Naredna grupa diadskih operacija ukljuuju Boolove instrukcije,
obino I, ILI, ponekad i EXOR, NILI i NI.
Na primjer, instrukcije
ADD R1,R2,R0
SUBTRACT R1,R2,R0
raunaju sumu i razliku registara R1 i R2 i smijetaju rezultat u registar R0, respektivno.
Monadske operacije
Ove operacije imaju samo jedan operand. U ove operacije spadaju operacije
pomjeranja bita na lijevo ili na desno, te NE operacija.
Instrukcije proceduralnih poziva
Procedura je grupa instrukcija koje izvravaju neki zadatak i koje mogu biti pozvane
sa nekoliko mjesta u programu. Umjesto procedure esto se koristi izraz subroutine ili
method. Kada procedura zavri sa izvravanjem zadatka ona mora vratiti odgovarajui izraz
nakon poziva. Zbog toga povratna adresa mora bti proslijeena u proceduru ili snimljena
negdje kako bi mogla biti locirana kada se procedura zavri. Povratna adresa moe bit
smjetena u: memoriju, registar ili stack.
Ako procedura moe da poziva sama sebe, tada se ona naziva rekurzivnom
procedurom.
Instrukcije ulaza/izlaza (I/O)
I/O instrukcije se koriste za transfer podataka izmeu raunara i perifernih ureaja.
Trenutno su u upotrebi tri razliite I/O scheme kod raunara:
Programirani I/O sa ekanjem koristi se kod ugraenih sistema (sistema u
realnom vremenu). Ovi sistemi imaju jednu ulaznu i jednu izlaznu instruciju.
I/O voene interruptom CPU pokree I/O ureaj i govori mu da generie
interrupt kada zavri sa poslom.
DMA (Direct Memory Access) I/O.
DMA ip ima 4 registra. Prvi sadri memorijsku adresu koja treba biti upisana ili
proitana. Drugi sadri broja koliko bajta (ili rijei) treba biti preneseno. Trei specificira
broj ureaja ili I/O prostornu adresu, tako definiui koji I/O ureaj je potreban. etvrti
odreuje da li podaci trebaju biti upisani ili proitani sa I/O ureaja.

45

9. Nivo asemblerskog jezika


Ovaj nivo se znaajno razlikuje u odnosu na nivo mikroarhitekture ili ISA i OS nivo,
jer se on implementira translacijom, a ne interpretacijom.
Skup instrukcija mikroprocesora predstavlja skup binarnih ulaza koji generiu
odreene akcije u toku ciklusa jedne instrukcije. Mainski jezik predstavlja izvorni jezik dat
procesoru. Na primjer, verzija instrukcije na mainskom jeziku za mikroprocesor MC 68000
koja glasi:
"Napuni neposredni decimalni operand 2001 na adresu na koju ukazuje registar A
ima sljedei 32-bitni format:
0010 0000 0111 1000 0000 0111 1101 0001
Za mikroprocesor MC 68000 sekvenca :
Izvri sabiranje sadraja dvije memorijske lokacije 600016 i 600216, a rezultat smjesti
u memorijsku lokaciju 600416
imae sljedei oblik:
0011 0000 0011 1000
0110 0000 0000 0000
1101 0000 0111 1000
0110 0000 0000 0000
0011 0001 1100 0000
0110 0000 0000 0100
Ovo predstavlja mainski jezik, ili objektni (object) kd (program) i njega e maina
direktno izvravati, tj. ovakav program koga ini sekvenca 0 i 1 maina jedino i razumije.
Kreiranje programa na mainskom jeziku se moe iskazati kroz sljedea zapaanja:
programi su teki za razumijevanje, veoma teko se nalaze greke, a iste nakon toga
koriguju;
instrukcije se teko unose u mainu, kuca se bit po bit, a zatim se cijela rije unosi u
paralelnoj formi;
programi ne posjeduju komentar koji e programeru olakati rad;
programi su dugaki i zamorni za analizu;
programer esto iz nehata ini greke koje je veoma teko locirati, a nakon toga
korigovati.
Programsko poboljanje se postie dodeljivanjem imena svakom instrukcionom
kdu. Ime kda instrukcije zove se mnemonik. Mnemonik opisuje sa minimalnim brojem
znakova ta instrukcija radi. Na primjer,
Add za sabiranje
Sub za oduzimanje
Kada se primjenjuju mnemonci, programska sekvenca za MC 68000, ima sljedei
oblik
Move.W
$6000, D0
Add.W
$6000, D0
Move.W
D0,$6004
Budui da asemblerski jezik predstavlja simboliki oblik mainskog jezika, svaki tip
procesora ima svoj jedinstven asemblerski jezik.
Programi koji konvertuju korisniki program napisanom u nekom jeziku u drugi
nazivaju se translatori. Jeziku kojem je napisan originalni program naziva se izvorni jezik, a
jezik u koji se program prevodi naziva se ciljni jezik.
Ako procesor moe direktno izvravati programe napisane u izvornom jeziku, tada ne
postoji potreba za ovom konverzijom, odnosno translacija u ciljni jezik je potrebna onda kada
46

procesor nije namijenjen za izvorni jezik. Ako je translacija izvedena korektno, izvravanje
prevedenog programa e dati potpuno iste rezultate kao i izvravanje izvornog programa na
odgovarajuem procesoru.
Potrebno je razlikovati pojmove translacije i interpretacije. Kod translacije, originalni
program u izvornom jeziku se ne izvrava direktno. Umjesto toga, on je konvertovan u
ekvivalenti program nazvan objektni program ili izvrni binarni program, ije se izvravanje
izvodi tek nakon to je translacija zavrena. Pri translaciji postoje dva razliita koraka:
Generisanje ekvivalentnog programa;
Izvravanje novog generisanog programa.
Ova dva koraka se ne izvode simultano, tj. drugi korak ne poinje sve dok se ne zavri prvi
korak. Kod interpretacije, postoji samo jedan korak i to je izvravanje originalnog izvornog
programa.
Dok se izvrava objektni program, aktivna su samo tri nivoa: nivo mikroarhitekture,
ISA i OS nivo. Prema tome, u raunarskoj memoriji u toku izvravanja programa mogu biti
naena tri programa: korisniki objektni program, operativni sistem i mikroprogram (ako
postoji), dok svi tragovi originalnog izvornog programa nestaju.
Translatori mogu biti podijeljeni u dvije grupe ovisno od odnosa izmeu izvornog i
ciljnog jezika. Kada je izvorni jezik u osnovi simbolika predstava numerikog mainskog
jezika, translator se naziva asemblerom, a izvorni jezik naziva se asemblerski jezik. Kada je
izvorni jezik jezik visokog nivoa, kao to su Java i C, a ciljni jezik je ili numeriki mainski
jezik ili simbolika predstava tog jezika, translator se naziva kompajlerom.
isti asemblerski jezik je jezik kod kojeg svaki izraz daje tano jednu mainsku
instrukciju. Drugim rijeima, izmeu mainskih instrukcija i izraza (naredbi) u asemblerskom
programu postoji jedan-na-jedan preslikavanje. Asemblerski program (asembler) vri
prevoenje korisnikog programa ili izvornog programa, napisanog pomou mnemonika, u
program na mainskom jeziku, ili objektni program, koga e mikroraunar izvravati.
Razlog za koritenje asemblerskog jezika umjesto mainskog jeste da je puno
jednostavnije programirati u asemblerskom jeziku. Upotreba simbolikih imena i adresa
umjesto binarih ili oktalnih vrijenosti je znatno jednostavnije. Programer u asemblerskom
jeziku mora znati samo simbolika imena, jer ih asembler prevodi u mainske instrukcije.
Ono to razlikuje asemblerski jezik jeste da programer moe pristupiti svim
osobinama i instrukcijama dostupnim na maini, a to programeri u jezicima visokog nivoa
ne mogu. Ovo znai da sve to se moe uraditi u mainskom jeziku, moe se uraditi i u
asemblerskom jeziku, dok mnoge instrukcije, registri i sline osobine nisu dostupne za jezike
visokog nivoa.
Jezici za sistemsko programiranje, kao to je C, nalaze se izmeu ova dva tipa, jer
posjeduju sintaksu jezika visokog nivoa, ali i sa pristupom maini kao to to ima asemblerski
jezik. Nedostatak asemblerskog jezika je da se program u asemblerskom jeziku moe
izvravati samo na jednoj porodici maina.
Programiranje u asemblerskom jeziku u poreenju sa programiranjem u jezicima
visokog nivoa je teko. No, razlozi za programiranje u asemblerskom jeziku su performansa i
pristup maini. Prvo, programer u asemblerskom jeziku kreira kod koji je mnogo manji i
puno bri od koda u programskom jeziku vieg nivoa. Za neke aplikacije brzina i veliina
koda su kritini. Mnoge ugraene aplikacije, kao to su smart card, kodovi za mobilne
telefone, BIOS rutine, itd. spadaju u ovu kategoriju. Drugo, neke procedure zahtijevaju
potpun pristup hardveru to je gotovo nemogue kod jezika visokog nivoa. Primjer ovoga su
interrupti niskog nivoa kod operativnog sistema ili kontrolera ureaja u mnogim sistemima u
realnom vremenu.
Veina velikih projekata zavisi od poboljanja perfomanse za faktor 2 ili 3, i vie u
pogledu nekih kritinih procedura, te je obino neophodno napisati dio koda u asemblerskom
47

jeziku. Meutim, ponekad je usljed nedostatka memorije, pisanje koda u asemblerskom jeziku
jedina alternativa.
Programer koristi usluge tekst editora za kreiranje tekst datoteke (text file) koja
sadri program napisan na asemblerskom jeziku. Imena izvorna datoteka (source file) i
izvorni program (source program) se esto koriste u asemblerskom jeziku i jezicima vieg
nivoa da oznae tekst datoteke.

Slika 36

Asembler prihvata izvorni program kao ulaz, vri provjeru formata zbog greaka u
pisanju i proizvodi objektni modul koji sadri program napisan na mainskom jeziku. Punilac
(loader) smijeta objektni modul u memoriju na kojoj e se program izvravati (ciljna maina
- target machine). Na ciljnoj maini program se testira pomou programa za odstranjivanje
greaka (debugger)
Kada programer vri programiranje na asemblerskom jeziku, on mora strogo da zna
da:
koji e mikroraunar koristiti,
koje registre i instrukcije dotini mikroraunar posjeduje,
koje adresne naine rada koristi, i puno drugih detalja,
asembler nije prenosiv,
Svaki mikroraunar ima svoj sopstveni asemblerski jezik koji odraava njegovu
sopstvenu arhitekturu. Asemblerski jezik je jezik kod koga svaka instrukcija generie tano
jednu mainsku instrukciju, to znai da postoji korespondencija jedan-prema-jedan izmeu
mainskih instrukcija i instrukcija na asemblerskom programu. Postoji onoliko asemberskih
jezika koliko postoji i razliitih mikroprocesora.
Za odreivanje vrijednosti algebarskog izraza X=Y+Z kod jednih procesora se koristi
instrukcija
Add X,Y,Z,
a kod drugih (mikroprocesora) instrukcija
Add Y,Z,X
Sagledavajui ogroman broj nedostataka programiranja na asemblerskom jeziku udruenje
IEEE oformila je radnu grupu IEEE P 694 koja je imala zadatak da standardizuje mnemonike
asemblerskog jezika. Na alost preporuke ove grupe nisu iroko prihvaene od strane
industrije. Nezavisno od toga to su pokuaji standardizacije propali ostali su tragovi tog rada
za koje se ini da su preutno ire prihvaeni od strane proizvodjaa RISC procesora a koji
se odnose na:
specifikaciju imena mnemonika,
48

definiciju tipa modifikatora,


uslove grananja,
dogovor o koritenju formata ALU instrukcija.
Struktura instrukcija na asemblerskom jeziku dosta vjerno odslikava strukturu
mainskih instrukcija koje on predstavlja. Asemblerski jezici razliitih procesora meusobno
su dosta slini, to omoguava da se o njima u izvesnoj mjeri diskutuje uopeno. Tako, kada
se dobro poznaje jedan asemblerski jezik lako se ui drugi.
Neka od najee koritenih imena mnenonika su data u tabeli.
mnemonik

operacija

Add

sabiranje

Sub

oduzimanje

Mul

mnoenje

Div

deljenje

Inc

inkrementiranje

Dec

dekrementiranje

Cmp

kompariranje

Move

kopiranje

Clr

brisanje (sadraja registra)

Ld

punjenje (registra iz memorije)

St

smetaj (sadraja registra u memoriju)

Lda

punjenje adreses u registar

Ldm

punjenje veeg broja registara

Stm

smetaj veeg broja registara

Shl

pomeranje u levo

Shr

pomeranje u desno

Br

bezuslovno grananje

Bc

uslovno grananje

Bal

grananje i povezivanje

Bal R

grananje na registar i povezivanje

Modifikatori koji prate odreeni tip podataka mogu biti oblika:


Modifikator

tip podatka

bajt (8-bitova)

UB

neoznaeni bajt (8-bitova)


49

polu-rije (16 bitova)

UH

neoznaena polu-re (16-bitova)

rije (32 bita)

UW

neoznaena rije (32-bita)

pokretni zarez (32-bita)

dupla preciznost pokretni zarez (64-bita)

znak ili decimalni broj u 8-bitnom formatu

decimalni broj u pakovanom (4-bitnom) formatu

Uslovi granjanja:
CC

uslovi

istinit

pogrean

premaaj

prenos ili pozajmljivanje

PE

parna parnost

PO

neparna parnost

LE

manji od ili jednak

LT

manji od

EQ

jednak

NE

nije jednak

GE

vei od ili jednak

GT

vei od

Program napisan u asembleru sastoji se od sekvence asemblerskih iskaza, gdje je


svaki iskaz zapisan u zasebnoj liniji. Svaki iskaz na asemblerskom jeziku ine sljedea etiri
polja: oznake (labele), opkda ili direktive, operanda i komentara.
Labela (opciona)

Operacioni kod
(zahtijevan)

Operand

Komentar

Slika 37 Format asemblerske instrukcije

Oznaka ili labela je za najvei broj instrukcija i direktiva opciono polje koje
predstavlja simboliko ime za memorijsku adresu. Ona predstavlja identifikator koji moe biti
koriten u liniji programa kako bi se moglo izvriti grananje na tu liniju. Takoe, moe biti
koriten za pristup podacima primjenom simbolikih imena.

50

Izraz: Move.L B,D0


Maksimalna duina labele se razlikuje od jednog asemblerskog jezika do drugog.
Izraz definie lokaciju instrukcije u memoriji nakon to je program napunjen (loadovan).
Oznaka se moe koristiti da definie poetak programskog segmenta radi kasnijeg obraanja.
Oznaka se koristi kod dodjela memorije pseudoinstrukcijama, jer omoguava da memorisani
podaci budu dostupni preko simbolikih imena.
Polje operacioni kd ili direktiva sadri: mnemonik instrukcije - simboliku
skraenicu za opkd ako iskaz predstavlja mainsku instrukciju ili asemblersku direktivu tj.
pseudoinstrukciju ako je iskaz komanda asembleru. Izbor imena za mnemonike i direktive
razlikuje se od jednog asemblera do drugog. U nastavku je dat primjer instrukcije i direktive.
Add R1,R2,R3
- instrukcija
Alfa EQU 50
- direktiva
Polja operandi u iskazima asemblerskog jezika namenjena su da specificiraju adrese i
registre koji se koriste kao operandi u mainskoj instrukciji. Polje operanda kod instrukcije
Add ukazuje ta sa ime treba sabrati. Polje operand kod Jump (Branch) instrukcije ukazuje
gde treba skoiti. Kod pseudoinstrukcija ovo polje ukazuje koliko memorijskog prostora treba
rezervisati. Asembleri prepoznaju i odreene simbole u polju operand. Simbolu moe da se
dodijeli apsolutna adresa, neposredna vrijednost, ili bilo koji drugi vaei operand.
Izraz (expression) predstavlja kombinaciju simbola, konstanti (literali), algebarskih
operatora i zagrada, a koristi se od strane asemblera za odreivanje adresa ili vrijednosti
operanada. Instrukcijom
Move.W # $ 2000, D1
definie se 16-bitna heksadecimalna vrijednost 2000 kao neposredni izvorni operand.
Konstante za koje asembler automatski rezervie memorijski prostor zovemo literali.
Asemblerske direktive se alternativno nazivaju i asemblerske pseudoinstrukcije.
Najvei broj asemblera prua pomo programeru na razliite naine putem koritenja
asemberskih direktiva. Akcija koja se preuzima od strane direktiva egzistira samo u toku
asembliranja izvornog programa, tj. direktive su neizvrive asemblerske instrukcije.
Asemblerske direktive su komande razmljive samo asembleru i ne odgovaraju stvarnoj
mainskoj instrukciji.
Kao to je ve prethodno napisano, program napisan u asemblerskom jeziku mora
biti preveden u binarni mainski jezik prije nego moe biti izvren. Proces asembliranja, kao
aktivnost, je dovoljno slian i moe se kao postupak opisati da vai za sve maine, tj. bude
generalni. Asembliranje moemo da zamislimo na sljedei nain:
program na asemblerskom jeziku predstavlja niz iskaza;
asembler u datom trenutku ita jedan iskaz, prevodi ga u mainski jezik (generie
objektni program u binarnoj formi), a na svom izlazu generie dva tipa informacija:
o prvi tip se odnosi na generisani mainski kd i pridruuje se datoteci u kojoj se
uva izvrivi mainski kd;
o drugi tip se dodaje odgovarajuem dijelu listing datoteke koja se koristi za
potrebe tampanja.
Proces se ponavlja sve dok se ne prevede cijeli program.
Slika ispod prikazuje tri osnovna koraka pri asembliranju i procesu izvravanja. Asembler ita
izvorni program u semblerskom jeziku i generie objektni program u binarnom obliku.
Objektni program se proputa ka linkeru. Linker provjerava da li u objektnoj datoteci postoje
pozivi procedura iz biblioteke, te kombinuje zahtijevane procedure sa objetnim programom i
proizvodi izvrni program. Loader uitava izvrni program u memoriju i usmjerava CPU ka
poetnoj adresi.
Biblioteka

Asembler

Linker

Loader
51

Asemblerski program

Objektni program

Izvrni program

Asembler
Asembleri su programi koji generiu mainski kod instrukcija iz izvornog programa
napisanog u asemblerskom jeziku. On zamjernjuje simbolike adrese sa numerikim
adresama, zamjenjuje simbolike kodove operacija sa kodovima mainskih operacija,
rezervie pohranu za instrukcije i podatke i prevodi konstante u mainsku predstavu. Funkcija
asemblera moe biti izvedena skeniranjem asemblerskog programa i mapiranjem njegovih
instrukcija u ekvivalentni mainski kod. Budui da simboli mogu biti koriteni u intrukcijama
prije nego su definisani neto kasnije, jedno skeniranje programa ne mora biti dovoljno da bi
se izveslo mapiranje. Jednostavan asembler skenira cijeli asemblerski program dvaput, pri
emu se svako skeniranje naziva prolaz. Tokom prvog prolaza, on generie tabelu koja
ukljuuje sve simbole i njihove binarne vrijednosti. Ova tabela se naziva tabela simbola.
Tokom drugog prolaza, asembler e koristiti ovu tabelu simbola da bi generisao objektni
program i izlazne informacije potrebne za linker.

Linker i loader
Linker predstavlja entitet koji kombinuje objektne module koji mogu rezultirati iz
asembliranja viestrukih asemblerskih modula odvojeno. Loader je usluga operativnog
sistema koja ita izvrni kod u memoriju i poinje njegovo izvravanje.
Nakon to su asemblerski moduli prevedeni u objektne module, funkcije linkera i
loader pripremaju program za izvravanje. Ove funkcije ukljuuju kombinovanje objektnih
modula zajedno, odrivanje adresa nepoznatih tokom asembliranja, alociranje memorije, i
konano izvravanje programa.

Struktura podataka
Asembler koristi bar tri tabele za izvoenje svojih funkcija: tabelu simbola, tabelu
opcode i tabelu pseudoinstrukcija. Tabela simbola generisan u prvom prolazu, ima ulaz za
svaki simbol u programu. Sa savkim simbolom je asocirana i binarna vrijednost i druge
informacije. Tabela opcode prua informacije o operacionim kodovima. Sa svakim
simbolikim opcodeom u tabeli je asocirana i njegova numerika vrijednost i druge
informacije, kao to je njegov tip, duina instrukcije i njegovi operandi. Ulazi u tabelu
pseudoinstrukcija su simboli pseudoinrtukcija. Svaki ulaz ukazuje asembleru na proceduru
koja procesira pseudointrukciju kada se ona nae u programu.

52

10. Nivo operativnog sistema


Operativni sistem (OS) predstavlja program, koji sa aspekta programera, dodaje nove
instrukcije i osobine iznad onoga to prua ISA nivo. Operativni sistem objedinjuje u cjelinu
dijelove raunara i sakriva od korisnika one detalje funkcionisanja koji nisu bitni za koritenje
raunara. Glavne komponente OS softvera ukljuuju interfejs sistemskih poziva, datoteni
sistem, sistem za kontrolu procesa i sistem za upravljanje ureajima (drajveri ureaja). OS
sadri gotovo sve instrukcije ISA nivoa, kao i skup novih instrukcija koje dodaje OS. Te nove
instrukcije nazivaju se sistemski pozivi. Sistemski poziv poziva predefinisani servis OS-a,
koji moe biti jedna od njegovih instrukcija. Primjer sistemskog poziva je itanje podataka iz
fajla.
Operativni sistem ima dvostruku ulogu :
upravlja sastavnim dijelovima raunara, kao tu su npr. procesor, kontroleri i
radna memorija (sa ciljem to veeg iskoritenja),
stvara za krajnjeg korisnika raunara pristupano radno okruenje, tako to
od maine koja rukuje bitima i bajtovima stvara mainu koja rukuje sa datotekama
i procesima.
Dakle, moe se rei da je operativni sistem softver zaduen za kordinaciju izmeu
raunarskih komponenti (u smislu komunikacije i uspenog funkcionisanja komponenti) i za
izvravanje aplikacionih (korisnikih) programa. Prva funkcija operativnog sistema je
upravljanje resursima raunara (eng. Resource management). Pod pojmom resurs
podrazumijeva se svi dijelovi raunara koji su potrebni programu za rad. Resursi mogu biti
hardverski (procesor, memorija, ulazno-izlazni ureaji) i softverski (programi, podaci, tj.
datoteke svih vrsta). Zadatak operativnog sistema je da vodi rauna o resursima raunara, to
jest da zadovolji potrebe programa, da prati koji program koristi koje resurse itd.
Operativni sistem obezbjeuje takozvanu virtuelnu predstavu sistema, odnosno
jedinstven pogled na raunarski sistem s take gledita korisnika, nezavisan od konfiguracije
raunara, konkretnog hardvera i same arhitekture.
Ukratko reeno, operativni sistem je skup sistemskih programa koji posreduje izmeu
korisnika raunara i raunarskog hardvera, a cilj mu je da:
izvrava korisnike programe i olaka rjeavanje korisnikih problema;
koritenje raunarskog sistema uini podesnijim za korisnika;
omogui to efikasnije iskoritenje raunarskog hardvera.
Kao takav, operativni sistem je jedan od najvanijih i najsloenijih dijelova
raunarskog sistema i sastoji se od vie relativno nezavisnih celina. Kod modernih raunara,
OS je jedini softver koji se izvrava u kernel modu. Tani interni detalji OS-a razlikuju se od
jednog sistema do drugog.
Zbog odnosa veliine operativnog sistema i radne memorije, veina OS ne moe da
stane u radnu memoriju. Zato se u memoriji uvijek nalaze samo najvaniji dijelovi OS-a koji
aktiviraju i zavravaju korisnike programe, upravljaju dodjelom i pristupom memoriji i
datotekama, i obavljaju ulazno-izlazno operacije. Ovaj dio OS-a mora obavezno podravati
mehanizam prekida (eng. Interrupt) koji predstavlja osnovu rada i komuniciranja raunara sa
spoljnim svijetom. Dio OS-a koji mora uvijek postojati u radnoj memoriji obino se naziva
jezgro ili kernell. Funkcije koje koriste svi nivoi moraju se smestiti u kernel OS-a. Ostali
dijelovi se smjetaju u memoriju kada su potrebni i uklanjaju kada vie nisu potrebni.
Operativni sistemi mogu se klasificirati prema razliitim kriterijima, na primjer prema
broju korisnika ili broju proces, prema namjeni i slino.
U zavisnosti od broja korisnika koji istovremeno mogu raditi na istom OS, oni se
dijele na:
jednokorisnike (eng. single-user),
53

viekorisnike (eng. multi-user).


Jednokorisniki sistemi obezbeuju primjenu raunara za samo jednog korisnika.
Ovakve OS karakterie jeftin hardver, solidna pratea programska podrka, jednostavan
datoteni sistem, jednostavan I/O sistem, a u prolosti i relativno slabe performanse.
Viekorisniki sistemi su kvalitetni operativni sistemi koji zahtijevaju jae hardverske
konfiguracije. Tipian viekorisniki sistem je UNIX, koji obezbeuje simultani pristup za
vie korisnika istovremeno, pri emu korisnici pristupaju sistemu preko posebnih terminala.
Prema broju simultanih aktivnosti, tj. prema broju procesa koji se mogu izvravati
paralelno ili kvaziparalelno, operativni sistemi se dijele na jednoprocesne (eng. singletasking)
i vieprocesne (eng. multitasking). Multitasking je mogunost operativnog sistema da na
jednom procesoru izvrava vie procesa (zadataka, eng. task) istovremeno. Poto se na
jednom procesoru u jednom trenutku moe izvravati samo jedan proces, naizmjeninim
dodjeljivanjem procesora svakom od procesora, operativni sistem moe simulirati korisniku
da se procesi izvravaju istovremeno. Ovakav nain rada se naziva kvazi-paralelnim.
Preklapanje izmeu procesa moe biti:
Ko-operativno Proces samovoljno odluuje o duini izvravanja.
Pre-emptivno OS moe prekinuti izvrenje procesa i dati procesorsko vrjeme
drugom procesu.
Prema namjeni, operativni sistemi se dijele na operativne sisteme ope namjene (eng.
general purpose systems), koji mogu da obavljaju razne poslove, kao to su obrada teksta i
slike, i operativne sisteme specijalne namene, koji, po pravilu, slue za upravljanje procesima.
Prema funkcionalnim osobinama raunarskog sistema za koji su namijenjeni,
operativni sistemi se dijele u sljedee kategorije: operativni sistemi za velike raunarske
sisteme (eng. mainframe systems), operativni sistemi za sisteme sa dijeljenjem vremena (eng.
time-sharing systems) koji predstavljaju specijalnu klasu velikih sistema u kojoj je svakom
korisniku omoguena on-line komunikacija sa svojim poslom i operativnim sistemom,
operativni sistemi za desktop raunare (eng. desktop systems), operativni sistemi za
vieprocesorske sisteme (eng. multiprocessor systems), mreni operativni sistemi (eng.
network OS), distribuirani sistemi (eng. distributed systems), OS za clustere (eng. clustered
systems), operativni sistemi za upravljanje u realnom vremenu (eng. real-time systems), itd.
Osnovne funkcije operativnog sistema su:
upravljanje procesorom;
upravljanje memorijom;
upravljanje ulazom i izlazom;
upravljanje podacima;
upravljanje sekundarnom memorijom;
umreavanje;
zatitu;
korisniki interfejs.
Procesor je jedan od najvanijih resursa raunarskog sistema. Upravljanje procesorom
moe se podijeliti na dva nivoa:
nivo neposredne dodjele procesora nekom programu, tj. predaje kontrole nad
procesorom nekom programu;
nivo razreavanja prioriteta, tj. odluivanja koji od moguih programa ima najvei
prioritet da bi postao proces i da bi u nekom sledeem trenutku dobio kontrolu nad
procesorom.
Pod upravljanjem memorijom (eng. memory management) podrazumijeva se
upravljanje glavnom memorijom raunara, kojoj procesor pristupa direktno zbog uzimanja
instrukcija ili podataka. Na ovom nivou obavljaju se sljedee funkcije:

54

realizacija odreene strategije dodjeljivanja memorije (redoslijed dodjeljivanja


memorije poslovima, statino ili dinamino dodjeljivanje, principi dodjeljivanja,
itd.);
dodjeljivanje memorije (algoritmi izbora poetne lokacije segmenta koji se
dodjeljuje);
sprovoenje odreene strategije oslobaanja memorije (ukrupnjavanje manjih
osloboenih dijelova memorije, oslobaanje dijelova memorije, redoslijed obrade
zahtjeva za dodelu memorije).
Na nivou upravljanja ureajima (eng. device management) realizuju se sljedee
funkcije:
obezbjeivanje nezavisnosti ureaja (programi treba da budu nezavisni od tipa
ureaja koji se koriste za ulazno-izlazne operacije);
obezbjeivanje efikasnog rada ureaja (s obzirom da I/O operacije predstavljaju
esto usko grlo raunarskog sistema, poeljno je da se to efikasnije preklapaju i
izoluju od procesora);
obezbjeivanje jedinstvenog koncepta analize rada svih ureaja raunarskog
sistema;
realizacija odreene strategije dodjeljivanja ureaja (na primjer, redoslijed
dodjeljivanja ureaja poslovima, nain dodjeljivanja ureaja: namjenski, s diobom,
kao virtuelni itd.);
dodeljivanje ureaja (fiziko dodjeljivanje ureaja, kontrolnih jedinica i kanala
poslovima);
realizacija odreene strategije oslobaanja ureaja (na primjer, ureaj se oslobaa
tek kad se posao kojem je dodijeljen zavri).
Nivo upravljanja podacima (eng. data management) treba da obezbijedi softverska
sredstva za organizovanje podataka i pristupanje podacima na nain koji odgovara korisniku
raunarskog sistema. Koncepcija upravljanja zavisi, prije svega, od vrste podataka i reima
njihovog koritenja. Na ovom nivou realizuju se sljedee funkcije:
formiranje i brisanje osnovnih struktura podataka (datoteka);
itanje datoteka i upisivanje u datoteke;
obezbjeivanje uslova za simboliko adresiranje datoteka (prema njihovim
imenima);
zatita podataka od namernog i nenamjernog unitavanja (zbog pada sistema);
zatita podataka od neovlatenog pristupa i koritenja;
dijeljenje datoteka (podataka) izmeu vie poslova (korisnika).
Postoje dvije koncepcije projektovanja operativnih sistema, a to su monolitna
organizacija (eng. monolithic systems) i slojevita organizacija (eng. layered systems). U
prolosti, monolitni sistemi su predstavljali najeu organizaciju operativnih sistema.
Monolitni operativni sistem je realizovan kao skup procedura koje se po potrebi mogu
meusobno pozivati, bez ikakvih ogranienja. Korisniki programi upotrebljavaju servise
operativnog sistema na sljedei nain: parametri sistemskog poziva se smjetaju na odreena
mjesta, kao to su registri procesora ili stek, nakon ega slijedi pozivanje jezgra operativnog
sistema (eng. kernel call). Ova operacija prebacuje procesor iz korisnikog reima rada u
sistemski reim rada i kontrolu predaje operativnom sistemu. U sistemskom reimu rada
dostupne su neke komande procesora kojima se ne moe pristupiti iz korisnikog reima.
Posle pozivanja kernela, operativni sistem preuzima kontrolu i na osnovu parametara poziva
odreuje koju sistemsku proceduru treba pozvati. Nakon izvrenja procedure, kontrola se
vraa korisnikom programu. Operativni sistem ima sljedeu strukturu, sastavljenu od tri
osnovna skupa programa:
55

glavni program koji obrauje sistemske pozive;


skup sistemskih procedura koje se pozivaju prilikom sistemskih poziva;
skup pomonih procedura koje koriste sistemske procedure.
U slojevitoj realizaciji (eng. layered system), operativni sistem se dijeli na razliite
slojeve. Slojevi su organizovani hijerarhijski: svaki sloj moe da poziva samo funkcije niih
slojeva. Prvi slojeviti operativni sistem, THE (eng. Technische Hogeschool Eindhoven, E.W.
Dijkstra), sastojao se od est slojeva. Slojevi od 0 do 3 predstavljaju jezgro operativnog
sistema i rade u sistemskom reimu:
nulti sloj upravlja procesorom, tj. dodjeljuje procesor razliitim procesima;
prvi sloj upravlja memorijom, tj. dodjeljuje potrebnu memoriju procesima;
drugi sloj upravlja komunikacijom izmeu razliitih procesa i komandnog
interpretera;
trei sloj obavlja ulazno-izlazne operacije.
Na etvrtom sloju rade korisniki programi, koji se ne brinu o dodjeli procesora,
dodjeljivanju memorije, komandnom interpreteru, ulazno-izlaznim operacijama sve te
operacije obavljaju nii slojevi.
Sistemski pozivi
Aplikacioni programi komuniciraju sa operativnim sistemom pomou sistemskih
poziva (eng. system calls). Interfejs sistemskih poziva osigurava jednu ili vie ulaznih taaka
za servisiranje instrukcija sistemskih poziva, kao i interrupta ureaja. Kd interfejsa
sistemskih poziva kopira argumente sistemskog poziva i uva kontekst korisnikog procesa.
Zatim se odreuje tip sistemskog poziva kako bi se odredilo koju kernel funkciju je potrebno
pozvati da bi se implementirao odreeni sistemski poziv, interrupt ili izuzetak. Kada se
kompletira ova kernel funkcija, interfejs sistemskog poziva zamjenjuje kontekst korisnikog
procesa prelazi u korisniki mod (eng. User Mode), vraajui kontolu nazad ka korisnikom
procesu. On takoe alje vraenu vrijednosti i status greke u korisniki proces.
Funkcije koje izvodi interfejs sistemskih poziva su sljedee:
odreivanje tipa sistemskog poziva;
snimanje konteksta procesa;
poziv odgovarajue kernel rutine;
vraanje konteksta procesa;
povratak na korisniki program.
Sistemske pozive esto podrava i procesor, na taj nain to razlikuje dva reima rada:
korisniki reim (eng. user mode) i sistemski reim (eng. supervisor mode). Korisniki
programi mogu raditi iskljuivo u korisnikom reimu rada procesora, dok je sistemski reim
rada je predvien za operativni sistem. Prilikom sistemskih poziva procesor prelazi iz
korisnikog reima rada u sistemski, a vraa se u korisniki reim poslije obrade poziva.
Sistemski pozivi obezbjeuju interfejs izmeu programa koji se izvrava i operativnog
sistema. Generalno, realizuju se na asemblerskom jeziku, ali noviji vii programski jezici,
poput jezika C i C++, takoe omoguavaju realizaciju sistemskog poziva.
Datoteni sistem
Datoteke raunarske instalacije mogu biti pohranjeni na razliitim fizikim ureajima,
kao to su diskovi. Razliite datoteke mogu sadravati razliite tipove podataka, kao to je na
primjer slika, tabela ili tekst. Sa aspekta OS-a, datoteka je jednostavna sekvenca bajta
zapisana na nekom I/O ureaju. OS dijeli datoteku na blokove fiksne veliine. Svaki blok
datoteke ima adresu koja jedinstveno govori gdje je taj blok fiziki pohranjen. Podaci se
pomjeraju izmeu glavne memorije i sekundarne memorije u jednom bloku. Sistemski pozivi

56

koji se odnose na upravljanje datotekama pokrenuti od aplikativnih programa su interpretirani


od strane datotenog sistema OS i transformisani su u komande specifine za dati ureaj.
Prema tome, proces implementacije sistemskog poziva ukljuuje lociranje datoteke na disku,
te dobavljanje u glavnu memroiju svih informacija za pristup toj datoteci. OS, takoe,
rezervie za datoteku prostor u memoriji jednak veliini bloka.
Kada aplikativni program pozove sistemski poziv da upie neke bajte u datoteku,
datoteni sistem OS-a zapisuje bajte u bafer alociran za datoteku. Kada bafer postane pun,
datoteni sistem ga kopira u blok na ureaju za pohranu (pozivanjem drajvera ureaja); ovaj
blok postaje naredni blok datoteke. Kada aplikacija pozove sistemski poziv za zatvaranje
datoteke, datoteni sistem zapisuje sadraj bafer kao zadnji blok bez obzira da li je bafer bio
pun ili ne. Zatvaranje ukljuuje oslobaanje prostora tabele koja sadri informacije o datoteci
i oslobaanje bafera alociranog datoteci.
Upravljanje ureajima: drajveri ureaja
Dio OS-a namijenjen za upravljanje ureajima je implementiran kao kolekcija drajvera
ureaja. Veina raunara ima I/O ureaje kao to su terminali, tampai, ureaji za pohranu i
slino. Svi ovi ureaji zahtijevaju specifian softver za upravljanje ureajem (eng. device
driver) koji djeluje kaointerfejs izmeu kontrolera ureaja i datotenog sistema OS kernela. Drajver
ureaja je potreban, jer svaki ureaj ima svoje specifine komande umjesto generikih komandi. Na
primjer, drajver tampaa sadri sav softver specifian ta taj tip tampaa. Prema tome, drajver ureaja
ini dio I/O softvera ovisan od ureaja. Podjelom softvera u kernel modu na komponenete ovisne od
ureaja i komponenete neovisne od ureaja, zadatak dodavanja novih ureaja raunaru je znaajno
pojednostavljen.
Drajver ureaja ini glavni dio softvera u kernel modu. Svaki drajver ureaja je kolekcija
rutina i moe imati viestruke polazne take. Drajver prima generike komande od datotenog sistema
OS-a i konvertuje ih u specijalizirane komande za ureaj i obrnuto. Softver ureaja sakriva jedinstvene
karakteristike ureaja od datotenog sistema OS-a.

Drajver ureaja moe biti prilino kompleksan. Mnogi parametri moraju biti podeeni
prije pokretanja kontrolera ureaja, a mnogi statusni biti moraju biti provjereni prije
kompletiranja svake operacije ureaja. Mnogi drajveri ureaja, kao to je na primjer drajver
tastature su dio pre-instaliranog sistemskog softvera (instaliraju se u toku same instalacije OSa).
Sve rutine u drajveru ureaja mogu biti grupisane na tri naine, na osnovu
funkcionalnosti:
rutine za inicijalizaciju;
rutine za I/O inicijalizaciju;
rutine za nastavak I/O;
rutine za inicijaciju I/O;
rutine za nastavak I/O (rutine za sevis interrupta);
Rutine za autokonfiguraciju se nazivaju vrijeme sistemskog reboot-a, za provjeru da li
je prisutan odgovarajui kontroler ureaja i za izvoenje eljene inicijalizacije. Rutine I/O
inicijacije pozivaju se od datotenog sistema OS-a ili sistema za upravljanje procesima kao
odgovor na zahtjeve za sistemskim pozivom od aplikativnih programa.ove rutine provjeravaju
status ureaja i iniciraju I/O zahtjeve slanjem komandi ka kontroleru ureaja. Ako je za ureaj
koriten programski upravljan I/O prenos, onda rutine I/O inicijacije takoe izvode I/O
prenos.
Virtuelna memorija
Na poetku razvoja raunarskih tehnologija, memorija je bila mala i skupa. Na
primjer, IBM 650, vodei nauni raunar 1950.-tih, imao je samo 2000 rijei memorije. U to
vrijeme, programeri su troili puno vremena pokuavajui da smjeste programe u tako malu

57

memoriju, tavie esto su koriteni sporiji algoritmi umjesto brih i boljih algoritama, samo
zato to su ovi drugi zauzimali vie memorije. Stoga je predloena primjena softverske
strukture koja ima velike prednosti pri realizaciji novih operativnih sistema i koja se virtuelna
memorija.

10.1 Boot proces


Boot-ovanje predstavlja proces inicijalizacije raunara i pokretanja operativnog
sistema. Osnovni problem je u tome to je za pokretanje programa potreban operativni sistem,
koji sam mora biti pokrenut bez pomoi tako komplikovanog programa. Boot-ovanje se
sastoji od sljedeih faza:
Pokretanje BIOS-a
Izvravanje bootloader-a
Pokretanje operativnog sistema
BIOS (Basic Input/Output System) predstavlja prvi softver koji se pokree prilikom
pokretanja raunara. Zaduen je za inicijalizaciju, provjeru i upravljanje perifernim ureajima,
a prije svega onima sa kojih se moe pokrenuti operativni sistem. BIOS dozvoljava
konfiguraciju hardvera. Posebno su bitni parametri koji se odnose na samo boot-ovanje. BIOS
se obino nalazi na PROM, EPROM ili FLASH memoriji na matinoj ploi i ima mogunost
samoprovjere (Power-on-self test). Koristi se za upravljanje ulazno/izlaznim ureajima, mada
moderni operativni sistemi obino komuniciraju sa hardverom direktno.
BIOS je zaduen za nalaenje ureaja koji je pogodan za podizanje sistema i
izvravanje bootloader-a sa njegovog boot sektora. Ukljuivanje ili reset:
CPU se postavlja na 0 memorijsku poziciju (BIOS);
CPU poinje da izvrava instrukcije BIOS-a;
Izvrava se Power On Self-Test (POST);
BIOS se poziva na podeavanja iz CMOS-;.
Podeavanja ukazuju na to sa kog ureaja izvriti uitavanje operativnog sistema.
Pri uitavanju kernela operativnog sistema, ureaj na koji je pokazao BIOS mora da
poseduje poseban program (boot-loader). Boot-loader je poseban program iji je zadatak
uitavanje kernela operativnog sistema u RAM memoriju. Oni mogu biti jednostavni ili mogu
imati vie mogunosti (npr. izbor izmeu vie razliitih jezgara tj. operativnih sistema). Ako
se radi o disku, boot-loader bi trebao da se nalazi na njegovom prvom sektoru (Master Boot
Record). On obino prenosi izvravanje na boot sektor particije na kojoj je sistem, ali neki
boot menaderi (npr. LILO) mijenjaju ovo ponaanje. S obzirom da je veliina boot sektora
ograniena (512 b), za komplikovaniju inicijalizaciju (npr. izbor izmeu vie sistema)
pokree se druga faza bootloader-a. Ona nije neophodna. Ovi bootloader-i su poznati kao
second stage bootloader-i. Boot loader programi ne moraju uitati kernel iskljuivo sa
lokalnog ureaja. Na primjer, PXE boot agenti se nalaze na nekim mrenim adapterima koje
je proizvela kompanija Intel. PXE boot agenti imaju mogunost da uitaju jezgro sa udaljenog
mrenog raunara. Ovakvi raunari se nazivaju diskless workstation ili radne stanice bez
spoljne memorije.
Nakon uitavanja kernela operativnog sistema u RAM memoriju raunara CPU se
upuuje na prvu memorijsku lokaciju kernela. Kernel operativnog sistema zavisi od tipa
operativnog sistema, ali boot faza uglavnom sadri sljedee korake:
Prepoznavanje hardvera i uitavanje modula za podrku rada sa njima (eng.
driver).
Uitavanje korisnikog interfejsa - GUI (Graphical User Interface) ili CLI
(Command Line Interface).

58

Kernel operativnih sistema najee podravaju mogunost konfigurisanja putem


proslijeivanja inicijalnih parametara (najee od strane boot loader-a) ili uitavanja
konfiguracionih parametara sa neke druge lokacije (RAM, ROM, fajl itd.)
Neki operativni sistemi (UNIX, Linux, MS Windows itd.) imaju mogunost rada u
razliitim reimima, na primjer:
Linux:
0 = halt
1 = single user mode
2 = unused (but configured the same as runlevel 3)
3 = multiuser mode (default Slackware runlevel)
4 = X11 with KDM/GDM/XDM (session managers)
5 = unused (but configured the same as runlevel 3)
6 = reboot
MS Windows:
Safe mode
Safe mode with command prompt
Safe mode with network support
Last known good configuration
Normal mode

10.2 Operativni sistem Unix


UNIX OS razvijen je poetkom 1970.-tih u Bell Labs. Prvu verziju UNIX-a napisao je
Ken Thompson u asembleru za PDP-7 miniraunar. Naredna verzija bila je kreirana za PDP11 u programskom jeziku C i nju je implemntirao Dennis Ritchie. Naredna modifikacija
UNIX-a izvrena je na University of California Berkeley. Neke od najvanijih izmjena bile su
ukljuivanje virtuelne memorije u obliku stranica, proirenje imena fajlova sa 14 na 255
karaktera i ukljuivanje TCP/IP protokola.
Gotovo istovremeno, pri AT&T razvijene je izmijenjena verzija UNIX-a, nazvana
System V. IEEE Standard Board je razvio standard nazvan POSIX (Portable Operatin System
IX). Danas postoji veliki broj implementacija UNIX sistema, no opa shema prikazana na
slici primjenjiva je na veinu verzija.

Slika 38 Struktura tipinog UNIX sistema

59

10.3 Operativni sistem Linux


Linux je operativni sistem nastao poetkom 90-ih sa eljom da se stvori jednostavan i
lako dostupan operativni sistem nalik Unix operativnim sistemima. Ono to karakterie Linux
je njegov kernel, koji je razvio njegov tvorac Linus Torvalds, dok pratei softver moe da se
razlikuje od distribucije do distribucije. Najpoznatije distribucije su Red Hat, Mandrake,
SuSe, Slackware... Izvorni kod Linux-a se dobija uz ove distribucije.

10.4 Operativni sistem Windows


Kada se 1981. godine pojavio IBM PC, bio je opremljen sa 16-bitnim
jednokorisnikim OS-om orijentisanom ka komandnoj liniji i zvao se MS-DOS 1.0. Nakon
toga, inspirisan uspjehom Apple Macintosh, Microsoft je odluio dodati grafiki korisniki
interfejs postojeem MS-DOS-u i takav OS je nazvao Windows. MS-DOS je ostao prisutan i
u verzijama Windows 95, Windows 98 i Windows ME.

Slika 39 Struktura tipinog Windows sistema

Windows NT bio je prva verzija koja je bila stvarni 32-bitni OS. Nakon njega pojavio
se Windows 2000, pa Windows XP. Zadnjih godina pojavile su se verzije Windows Vista, te
Windows 7 i 8. Windows XP i noviji OS-ovi mogu biti server ili klijent verzije.
Novije Windows verzije (XP i noviji OS) podravaju multiprogramming, to su
viekorisniki sistemi (npr. server verzije).

60

11.

Mikroprocesor Intel 8086

Osnovni teorijski koncepti obraeni u okviru ovog poglavlja u nastavku su


prezentirani na primjeru mikroprocesora Intel 8086. Razlog za odabir upravo ovog modela
mikroprocesora (P) lei u injenici da su sve kasnije generacije Intelovih procesora zadrale
kompatibilnost i slinu strukturu kao i on. Intel 8086, slika 7.28, je 16 bitni procesor
kompanije Intel koji na tritu pojavio 1978. godine i od tada je postao osniva cijele familije
P-a na kojoj su temeljeni PC raunari. Ta familija je popularno nazvana x86 familija i u nju
spadaju: 8086, 8088, 80286, 80386, 80486, P1, P1 MMX, Pentium PRO, P2, P3, P4.
Kompatibilnost su sauvali i najnoviji Core, Core 2 i Core i7 procesori tako da se mogu
smatrati logikim lanovima i nasljednicima X86 familije.

Slika 40 Intel 8086 procesor

Intel 8086 je prvi potpuno 16-bitni P i u svoje vrijeme predstavljao je pravu


revoluciju. Na nivou koda zadrao je kompatibilnost sa svojim uspjenim prethodnicima 8bitnim P-ima 8080 i 8085. Radi se o P-u sa jednim akumulatorom to je bilo tipino
rjeenje Intela u to vrijeme.
Mikroprocesor Intel 8086 ima sljedee tehnike karakteristike:
Takt: 4,77 do 10 MHZ
Broj tranzistora: 29.000
Tehnologija: NMOS, CMOS, HMOS
Kuite: DIP 40 iglica
Adresna sabirnica: 20-bita (1MB)
Podatkovna sabirnica: 16-bita
Broj naredbi: 117
11.1.

Osnovne karakteristike mikroprocesora Intel 8086

7.11.1.1.
Dijelovi mikroprocesora Intel 8086
Mikroprocesor Intel 8086 je po svojoj unutranjoj strukturi podijeljen u dvije osnovne
jedinice (slika 7.29):
EU (eng. Execution Unit) izvrna jedinica koja izvrava instrukcije.
BIU (eng. Bus Interface Unit) jedinica za spregu sa sabirnicom koja dohvata
instrukcije iz memorije, ita operande i alje rezultate u memoriju ili ka periferijama.
Ove dvije jedinice su meusobno neovisne i najee svoje aktivnosti obavljaju
istovremeno.

61

Slika 41 Struktura Intel 8086 procesora

EU nije direktno povezana sa spoljanjom sabirnicom, te vezu sa memorijom i


periferijama ostvaruje samo preko BIU. Sredinji dio EU predstavlja aritmetiko-logika
jedinica (ALU) koja, u zavisnosti od date instrukcije, izvrava aritmetike ili logike operacije
nad operandima. Informaciju o tome koju instrukciju treba da izvri, ALU dobija iz dijela
BIU koji se naziva red instrukcija (eng. Instruction queue), a operande dobija iz dva
16-bitna registra za operande. Kao to se vidi sa slike, EU sadri registre ope namjene
i PSW (eng. Processor Status Word) registar koji pamti trenutno stanje procesora.
BIU obavlja svu potrebnu razmjenu podataka i instrukcija izmeu procesora sa jedne
strane i memorije i periferija sa druge strane. Pored generatora adresa i kontrolera sabirnice,
BIU sadri jo instruction pointer (IP) registar i instruction queue (IQ) registar.
Princip rada Intel 8086 procesora bi se mogao opisati na sljedei nain. Neka procesor
izvrava neki program i u datom trenutku je stigao do neke instrukcije u programu. Ta i
narednih nekoliko instrukcija programa ve je smjetena u IQ. IP sadri adresu instrukcije
koja slijedi nakon instrukcija smetenih u IQ. ALU uzima prvu instrukciju iz IQ, dekodira
njen operacioni kod i, ukoliko to instrukcija zahtijeva, pokuava da dohvati potrebne
operande. Ako su operandi ve u registrima za operande, ALU izvrava instrukciju. Ako
operandi nisu raspoloivi, ve moraju biti dopremljeni iz memorije ili sa neke periferije, EU
alje zahtjev BIU da pribavi operande. BIU pronalazi podatke i smijeta ih u registre za
operande, nakon ega ALU izvrava instrukciju. Tokom izvravanja instrukcije u EU, BIU
dohvata narednu instrukciju iz memorije (na osnovu adrese u IP registru) i dopunjava IQ.
Sadraj IP registra se mijenja na adresu naredne instrukcije. Rezultat rada ALU moe da bude
operand za narednu instrukciju, podatak bitan za daljni rad programa ili podatak koji treba
smjestiti u memoriju ili poslati nekoj periferiji. Stoga se on moe poslati u registre za
operande, registre ope namjene ili proslijediti BIU sa zahtjevom da ih poalje u memoriju ili
ka odreenoj periferiji. Po izvrenju instrukcije obino se postavljaju i statusni flegovi PSW
registra koji opisuju dobijeni rezultat. Zatim se prelazi na izvravanje naredne instrukcije koja
se nalazi u IQ.

62

Za razliku od kasnijih generacija intel-kompatibilnih mikroprocesora, mikroprocesor


i8086 nema u sebu ugraen matematiki koprocesor, ve se on isporuivao kao poseban ip.
Matematiki koprocesor ima svoje instrukcije koje su predviene za brzo izvravanje
operacija sa realnim (eng. floating point) brojevima.
7.11.1.2.
Sabirnica podataka
Kao to je ve prethodno opisano, sabirnica podataka predstavlja skup ica utisnutih u
matinu plou koje povezuju procesor sa ostalim ureajima raunara. Mikroprocesor i8086
posjeduje sabirnicu podataka veliine 20 bita. To za posljedicu ima da i8086 moe da adresira
najvie 220=1048576=1MB RAM memorije. To je tzv. adresni prostor ovog mikroprocesora.
S obzirom da procesor i8086 ima 16-bitne registre, on
20-bitnu adresu formira u 2 registra posebnom tehnikom segmentiranog adresiranja. U
jednom (segmentnom) registru SR se formira tzv. segmentna adresa, u jednom (ofsetnom)
registru OR se formira tzv. ofsetna adresa, a zatim se fizika 20-bitna adresa podatka formira
po formuli SR*16+OR. Tako, adresni prostor mikroprocesora moemo shvatiti kao niz bajta
duine 1048576.
Kada procesor npr. upisuje neki 16-bitni podatak u RAM memoriju, on prvo na
sabirnicu podataka postavi 20-bitnu adresu memorijske lokacije na koju e podatak biti
upisan, a zatim u sljedeem strujnom impulsu na sabirnicu postavi sam 16-bitni podatak i 4bitni kontrolni (upravljaki) signal na osnovu kojeg e kontroler RAM memorije "shvatiti"
znaenje prethodnih signala. Tako se u funkcionalnom smislu razlikuju adresna sabirnica,
sabirnica podataka i upravljaka sabirnica.
Najvei dio adresnog prostora ini RAM memorija, ROM memorija kao i specijalni
kanali ("portovi") koji slue za komunikaciju centralnog procesora sa spoljnim ureajima.
11.2.
Registri mikroprocesora i8086
Registri mikroprocesora i8086 su memorijske jedinice veliine 16 bita (2 bajta)
ugraene u mikroprocesor. Ukupno ih ima 14. Nad njihovim sadrajem mikroprocesor
izvrava aritmetiko-logike operacije, u njima formira adrese memorijskih lokacija u RAM
memoriji, itd. Registri su "adresirani" svojim nazivom, tj. svaki registar ima svoje ime. Neki
registri imaju samo jednu namjenu i ne mogu se koristiti za druge namjene, dok su neki
registri vienamjenski. Kod vienamjenskih registara bie navedeno za ta se tipino i
najee koriste, ali bie naglaeno da se mogu koristiti i u druge namjene. Neki registri mogu
da budu operand neke instrukcije, a neki ne. Ako neka instrukcija ima 2 operanda, postoje
pravila o tome koji registri mogu da se koriste u odgovarajuem kontekstu, a koji ne.

Registri ope namjene (data registers) su podijeljeni u dvije grupe od po 4 registra i


oznaavaju se sa AX, BX, CX i DX. Ovi registri se sastoje od po 2 osmobitna registra, npr.
AX (eng. Accumulator register) se sastoji od nieg bajta AL (Alow) i vieg bajta AH (Ahigh),
to znai da operand neke instrukcije moe biti cio AX, ili samo njegov nii bajt AL, ili samo
njegov vii bajt AH.
AX
BX
CX
DX

AH
BH
CH
DH

AL
BL
CL
DL

(accumulator)
(base)
(counter)
(data)

63

Registar AX se najee koristi za formiranje rezultata i meurezultata aritmetikologikih operacija, za stavljanje podataka na stek i slino, ali moe da se koristi i u druge
namjene.
Registar BX (eng. Base register) se najee koristi za formiranje ofsetnog dijela
adrese nekog podatka, u aritmetiko-logikim operacijama i slino, ali moe da se koristi i u
druge namjene.
Registar CX (eng. Counter register) se najee koristi pri aritmetiko-logikim
operacijama, a tipina namjena je i da slui kao broja u "petljama" i slino, ali moe da se
koristi i u druge namjene.
Registar DX (eng. Data register) se najee koristi u aritmetiko-logikim
operacijama, a tipina namjena je i da slui za adresiranje portova (ofsetni dio adrese) ali
moe da se koristi i u druge namjene. Portovi su specijalno rezervisane memorijske lokacije u
adresnom prostoru koje slue kao ulazno-izlazni kanali u komunikaciji procesora sa
perifernim ureajima (modemi, tampai, mi, ).
Adresni registri prvenstveno slue za adresiranje memorijskih lokacija. Dijele se u
dvije grupe: segmentni registri i ofsetni registri.
Segmentni registri (eng. Segment registers) sadre segmenti dio neke adrese.
CS
DS
SS
ES

(code segment)
(data segment)
(stack segment)
(extra segment)

Registar CS (eng. Code segment) uvijek sadri (i ne moe se koristiti za druge


namjene) segmentni dio adrese tekue instrukcije. Kada se izvrava neki program, instrukcije
tog programa su smjetene u RAM memoriji, a CS registar u svakom momentu sadri
segmentni dio adrese one instrukcije koja se u datom trenutku izvrava.
Registar DS (eng. Data segment) je predvien da sadri segmentni dio adrese podataka
u RAM memoriji nad kojima program operie. Na primjer, ako se u instrukciji za sabiranje
kao prvi argument zada registar AX, a kao drugi argument se navede samo ofsetni dio adrese
neke "promjenljive" u RAM memoriji (inae, moe da se zada i segmentni i ofsetni dio
adrese), procesor e automatski podrazumjevati da je segmentni dio adrese te "promjenljive"
smjeten u DS registru. Isto vai i za mnoge druge instrukcije.
Registar SS (eng. Stack segment) uvijek sadri (i ne moe se koristiti za druge
namjene) segmentni dio adrese podataka u steku (tj. stek-segmentu). Svi podaci na steku
imaju adrese iji je segmenti dio isti sadraj registra SS.
Registar ES (eng. Extra segment) je pomoni segmentni registar. Na primjer, ako DS
registar sadri segmenti dio adresa podataka u jednom data-segmentu, registar ES moe da
sadri segmenti dio adresa podataka u drugom data-segmentu.
Ofsetni (indeksni) registri (eng. pointer and data registers) sadre segmenti dio neke
adrese, ali se mogu koristiti i za druge namjene.
64

SP
BP
IP
SI
DI

(stack pointer)
(base pointer)
(instruction pointer)
(source index)
(destination index)

Registar SP (eng. Stack pointer)uvijek sadri (i ne moe se koristiti za druge namjene)


ofsetni dio adrese podatka na vrhu steka. Instrukcije za stavljanje podataka na stek i skidanje
podataka sa steka automatski mijenja sadraj SP registra tako da on uvijek sadri ofsetni dio
adrese podatka na vrhu steka. Prema tome, vrijednost SS:SP=SS*16+SP uvijek predstavlja
fiziku
(20-bitnu) adresu podatka na vrhu steka.
Registar BP (eng. Base pointer) moe da se koristi na razne naine, ali po pravilu slui
za adresiranje podataka na steku, tj. sadri ofsetni dio adrese nekog podatka unutar steka. Na
primjer, ako je SP=8 i BP=6, tada SS:SP daje fiziku adresu podatka na vrhu steka, a SS:BP
daje fiziku adresu podatka koji je prethodno stavljen na stek.
Registar IP (eng. Instruction pointer) uvijek sadri (i ne moe se koristiti za druge
namjene) ofsetni dio adrese tekue instrukcije (tj. prvog bajta tekue instrukcije). Kada se
neka instrukcija izvri, automatski mijenja sadraj IP registra tako da on u sljedeem trenutku
sadri ofsetni dio adrese instrukcije koja tada kree da se izvrava. Prema tome, vrijednost
CS:IP=CS*16+IP uvijek predstavlja fiziku (20-bitnu) adresu memorijske lokacije na koju je
upisana instrukcija koja se u tom trenutku izvrava.
Registri SI (eng. Source index) i DI (eng. Destination index) se mogu koristiti na razne
naine. esto se koriste pri formiranju rezultata ili operanada aritmetiko-logikih instrukcija.
Ipak, posebno su korisni pri radu sa nizovima. Na primjer, uporeivanju lanova dva niza, u
programskoj petlji pri svakom prolasku kroz petlju uporeuje i-ti lan prvog sa i-tim lanom
drugog niza. To se moe realizovati tako da se sadraji ovih registara postave tako da u
svakom trenutku sadre ofsetni dio adrese prvog tj. drugog niza.
Fleg registar (status flags) SF:
Ovaj registar je veoma specifian po tome to svaki njegov bit ima posebnu funkciju, i
za razliku od ostalih registara, pojedine instrukcije mogu da pristupaju i obrauju pojedine
bitove posebno. Svaki bit tj. tzv. flag predstavlja signal o statusu u kojem se procesor nalazi,
statusu izvrenja poslednje instrukcije, i sl. Slijedi opis pojedinih flegova (svih 16 bitova
imaju svoje nazive i namjene):
m
NT
OPL
OF
DF
IF
TF
SF

- ovako oznaeni flegovi se ne koriste;


- nested task signalizira da li je u toku izvravanje nekog ugnjedenog
procesa;
- U/I privilege level signalizira prioritet tekue ulazno-izlazne operacije;
- overflow flag signalizira da li je dolo do prekoraenja opsega nekih
podataka;
- direction flag instrukcijama za rad sa nizovima signalizira da li da niz
obrauju od poetka prema kraju ili od kraja niza prema poetku;
- interrupt enable (flag) signalizira da li je u toku obrada nekog zahtjeva
za prekid;
- trap flag koristi se pri radu dibagera;
- sign flag signalizira da li je pri nekoj aritmetikoj instrukciji za rezultat

65

ZF
AF
PF
CF

dobijen pozitivan ili negativan rezultat;


- zero flag signalizira da li je pri nekoj aritmetikoj instrukciji za rezultat
dobijen broj 0 ili nije;
- auxiliry flag pomoni fleg koji razne instrukcije koriste na razne
naine;
- parity flag signalizira da li je pri nekoj instrukciji za rezultat dobijen
paran ili neparan rezultat;
- carry flag signalizira da li je pri nekoj aritmetikoj instrukciji dolo do
prenosa najvieg bita van odgovarajueg registra.

11.3.
Segmenti i adresiranje
Fiziku adresu nekog bajta RAM memorije mikroprocesor sastavlja pomou sadraja
dva registra, po formuli SR*16+OR, gde je SR segmentni registar koji sadri segmentni dio
adrese memorijske lokacije (SR je po pravilu neki od registara CS, DS, SS, ES), a OR je
ofsetni (indeksni) registar koji sadri ofsetnu adresu memorijske lokacije (OR je najee neki
od registara IP, SP, BP, SI, DI, DX, BX). Fizika adresa SR*16+OR skraeno se oznaava sa
SR:OR odnosno SEGMENT:OFFSET. Na primjer, ako registri DS i BX sadre brojeve
DS = 13622 = (0011010100110110)2
BX = 20628 = (1010000100101000)2,

tada DS:BX predstavlja pokaziva na memorijsku lokaciju sa fizikom adresom:


DS:BX = 13622*16+20628=238580=(0011010100110110)2*(10000)2+
+(1010000100101000)2=(00111010001111110100)2.
Moe se primjetiti da mnoenje sadraja registra DS predstavlja transliranje njegovih
bitova za 4 mjesta ulijevo i dodavanje 4 nule na desnoj strani (analogno, mnoenje brojem 2n
predstavlja transliranje pomnoenog broja ulijevo za n cifara i dodavanje n nula na kraj). U
viim programskim jezicima, promjenljiva tipa pointer (pokaziva) predstavlja 4-bajtnu (u
sluaju mikroprocesora i8086) promjenljivu koja u svoja via dva bajta sadri segmentnu, a u
nia dva ofsetnu adresu neke memorijske lokacije.
Segmenti su blokovi memorije (nizovi bajta) u kojima se nalaze dijelovi programa.
Kada korisnik operativnom sistemu d zahtjev za izvravanje nekog programa, operativni
sistem na disku pronae datoteku koja sadri taj izvrni program, a zatim za njega rezervie
dijelove RAM memorije (segmente) u koje uita dijelove programa, i pokrene njegovo
izvravanje. Adresiranje pojedinih bajta unutar jednog segmenta se vri na gore navedeni
nain (SEGMENT:OFFSET = SEGMENT*16+OFFSET), pri emu sve memorijske lokacije
unutar jednog segmenta imaju jednak segmentni dio adrese, i razliite ofsetne dijelove adresa.
Stoga je maksimalna veliina jednog segmenta odreena maksimalnom vrednou ofsetnog
registra, a to je 216=65536=64KB. Posljedica ovakvog naina adresiranja je i da fizika
adresa prvog bajta nekog segmenta mora biti dijeljiva sa 16, jer za OR=0 je vrijednost
SR*16+OR dijeljiva sa 16. U raunarstvu se jedinica od 16 bajta naziva paragraf (paragraph).
U zavisnosti od njihovog sadraja, segmente dijelimo na sljedee tipove:
(a)
Kodni segment (code segment): segment u kome se nalaze instrukcije
programa; jedan program (ako je veliki) moe da ima vie kodnih segmenata; kombinacija
registara CS:IP u svakom momentu izvravanja programa sadri fiziku adresu (prvog bajta)
memorijske lokacije na koju je upisana instrukcija koja se u tom momentu izvrava.
(b)
Segment podataka (data segment): segment u kome se nalaze podaci sa kojima
program operie; jedan program (ako operie sa velikim brojem podataka, npr. sa velikim
nizovima i matricama) moe da ima vie segmenata podataka; kombinacije registara DS:SI,
66

DS:DI, DS:BX itd. po pravilu tokom izvravanja programa sadre fizike adrese memorijskih
lokacija na kojima su upisani neki podaci koje program obrauje.
(c)
Segment podataka organizovanih u stek (stack segment): segment u kome se
nalaze podaci organizovani u stek, sa kojima program operie; stek se moe zamisliti kao niz
podataka promjenljive veliine gdje se neki novi podatak skladiti u stek tako to se kopira na
kraj tog niza "vrh steka", a oitava se tako to se premjesti sa "vrha steka" na neko drugo
mjesto, a novi vrh steka postaje ranije pretposljednji podatak u nizu; operacije stavljanja i
skidanja podatka sa vrha steka se obavljaju specijalizovanim instrukcijama one mogu na
stek stavljati ili skidati podatke samo u grupama od po 2 bajta; jedan program moe da ima
samo jedan stek-segment; kombinacija registara SS:SP u svakom momentu tokom izvravanja
programa sadri fiziku adresu memorijske lokacije na koju je upisan podatak koji se nalazi
na vrhu steka.

67

Anda mungkin juga menyukai