Você está na página 1de 135

Arhitektura i funkcija raunara

Boris Damjanovi

Skripta

Prijedor, 2010

Table of Contents
Arhitektura i funkcija raunara ................................................................................................... 1
Skripta .................................................................................................................................... 1
Boris Damjanovi ................................................................... Error! Bookmark not defined.
Prijedor, 2010 ......................................................................................................................... 1
2. Pojam raunarske tehnike i arhitekture raunara............................................................... 3
3. Predstavljanje podataka ..................................................................................................... 8
3.1.
Brojni sistemi ............................................................................................................. 8
3.1.1.
Binarni brojni sistem ........................................................................................ 10
3.1.2.
Konverzija binarnih u decimalne podatke ........................................................ 10
3.1.3.
Konverzije podataka izmeu razliitih brojnih sistema (izmeu razliitih baza)
11
3.2.
Binarna, oktalna i heksadekadna reprezentacija podataka ..................................... 13
3.2.1.
Osnovni tipovi podataka u raunaru ................................................................ 13
3.2.2.
Oznaeni cijeli brojevi (signed) ........................................................................ 18
3.2.3.
Binarno kodirani dekadni (BCD) brojevi .......................................................... 22
3.2.4.
Realni brojevi ................................................................................................... 23
3.3.
Binarna aritmetika .................................................................................................... 33
3.4.
Bulova algebra ......................................................................................................... 40
4. Model digitalnog raunara ................................................................................................ 48
4.1.
Arhitektura raunara sa sabirnicom (magistralom).................................................. 54
4.2.
Osnove funkcionisanja raunara ............................................................................. 62
5. Mikroprocesori .................................................................................................................. 68
5.1.
Mikroprocesor Intel 8085 ......................................................................................... 68
5.1.1.
Programski model - osnovni registri procesora 8085 ...................................... 68
5.2.
Signali mikroprocesora Intel 8085 ........................................................................... 73
5.2.1.
Signali napajanja ............................................................................................. 74
5.2.2.
Takt signal (Clock ili CLK)................................................................................ 74
5.2.3.
Adresni signali ................................................................................................. 74
5.2.4.
Signali podataka .............................................................................................. 75
5.2.5.
Tehnika multipleksiranja signala AD0-AD7 ..................................................... 75
5.2.6.
Vremenski dijagrami procesora 8085 .............................................................. 76
5.2.7.
Mehanizam prekida procesora 8085 ............................................................... 81
5.2.8.
Ostali signali mikroprocesora 8085 ................................................................. 84
5.3.
Ostali registri procesora 8085 .................................................................................. 84
5.4.
Pogled izbliza na ISA arhitekturu procesora 8085 .................................................. 86
5.4.1.
Skup instrukcija mikroprocesora 8085............................................................. 88
5.5.
Mikroprocesor Intel 8086 ......................................................................................... 94
5.5.1.
Registri mikroprocesora 8086 .......................................................................... 96
5.5.2.
Upotreba segmentnih registara ..................................................................... 102
5.6.
Signali mikroprocesora Intel 8086 ......................................................................... 107
5.6.1.
Signali napajanja mikroprocesora 8086 ........................................................ 107
5.6.2.
Takt signal mikroprocesora 8086 .................................................................. 108
5.6.3.
Adresni signali ............................................................................................... 108
5.6.4.
Signali podataka ............................................................................................ 109
5.6.5.
Vremenski dijagrami procesora 8086 ............................................................ 110
5.6.6.
Prekidi (Interapti) mikroprocesora 8086 ........................................................ 113
5.6.7.
Signali HOLD i HLDA (Direktni pristup memoriji) .......................................... 118
5.6.8.
Minimalni i maksimalni nain rada mikroprocesora 8086 .............................. 121
6. Organizacija operativne memorije raunara .................................................................. 122
6.1.
Tipovi operativne memorije ................................................................................... 122

1. Pojam raunarske tehnike i arhitekture raunara


Da bi raunar kao ureaj koji korisnici vide na policama trgovina i na svojim radnim stolovima
dobio svoju funkcionalnost i formu, on prethodno mora da proe kroz mnogo faza u procesu
proizvodnje. Prva faza u izradi kompjutera jeste projektovanje raznih njegovih dijelova
procesora, memorije, sabirnica, hard diska te raznih ulaznih i izlaznih ureaja. U fazu
projektovanja ubraja se takoe i projektovanje matinih ploa uklapanje postojeih i novih
komponenata u jednu funkcionalnu cjelinu, kao i projektovanje kompletnih raunarskih
sistema. Projektanti su grupa strunjaka koja je, osim za projektovanje, zainteresovana i za
nain funkcionisanja pojedinih dijelova i kompletnog raunarskog sistema. Nakon faze
projektovanja slijedi faza realizacije raunara tokom koje se dovreni projekti iz projektantskih
biroa prenose u proizvodne hale raznih fabrika irom svijeta gdje se proizvode pojedine
komponente ili kompletni raunarski sistemi. Slijedea grupa strunjaka koja je
zainteresovana za izradu raunara su razne veleprodaje, a na naim prostorima esto i
maloprodaje koje raunare dobijaju u kitu, odnosno u dijelovima. Strunjaci u takvim
kompanijama sastavljaju raunare na osnovu proizvoakih uputstava i preporuka za
sastavljanje. Zbog toga su oni zainteresovani za sastav raunara, ali i nain njegovog
funkcionisanja i njegove performanse, da bi ih mogli kvalitetno prezentovati potencijalnim
kupcima. Za sastav i nain funkcionisanja su zainteresovane i raznorodne softverske kue
od proizvoaa operativnih sistema, koji se najvie oslanjaju na hardver, preko proizvoaa
npr. video igara, koji moraju znati kako da iskoriste mogunosti pojedinih grafikih kartica, pa
do proizvoaa softvera za poslovnu primjenu, koji moraju da znaju minimalnu konfiguraciju
na kojoj e njihov softver raditi. Na kraju ovog lanca su korisnici, koji su zainteresovani za
dobijanje raunara sa to boljim karakteristikama po to povoljnijoj cijeni.
Na osnovu svega reenog, mogli bi izvui nekoliko slijedeih definicija:

Raunarska tehnika je nauka ili nauna disciplina koja se bavi sastavom, nainom
funkcionisanja, projektovanjem, realizovanjem i koritenjem raunara.
Arhitektura raunara obuhvata sve ono to je vezano za projektovanje, realizovanje i
primjenu raunara sa osvrtom na organizaciju i strukturu svih njegovih elemenata.
Arhitektura raunara je nain realizovanja raunara i svih njegovih sastavnih
elemenata, ukljuujui sklopovske (hardverske) i programske (softverske) dijelove, sa
ciljem ostvarivanja zahtjeva korisnika.

Vrlo esto se koristi i termin organizacija raunara arhitektura i organizacija raunara.


Svi smo svjedoci da se na zapadu, ali i kod nas, sve ee koristi termin IT ili IT sektor koji se
bazira na koritenju raunara. Kod nas se ipak mnogo ee koristi termin informatika.
Informatika i informacione tehnologije su jako povezane sa raunarskom tehnikom i
arhitekturom raunara jer se baziraju na korienju raunara.
U uvodnom paragrafu smo spominjali pojedine dijelove raunara i raunar kao cjelinu.
Takoe smo spominjali i operativni sistem i pojedine programe. Sve navedeno ini nivoe na
kojima moemo posmatrati arhitekturu raunara, pa se npr. moe posmatrati:

Arhitektura osnovnih jedinica raunara.


Arhitektura raunarskog sistema
Arhitektura operativnog sistema
Arhitektura pojedinih (korisnikih) programa

Za projektovanje i proizvodnju odreenih dijelova raunara potrebna su specifina znanja i


tehnologije, koja se razlikuju od znanja i tehnologija potrebnih za konstruisanje raunara kao
cjeline. Takoe, sa softverskog aspekta, proizvodnja operativog sistema zahtjeva bitno
drugaiji pristup od npr. proizvodnje neke aplikacije za poslovnu primjenu. Zbog toga kaemo
da se odgovarajua arhitektura raunara postie primjenom odredjenih tehnika i postupaka
na svim nivoima posmatranja raunara.
Kada govorimo o performansama nekog raunara, na njegove karakteristike najvie utie
usklaenost svih prethodno navedenih nivoa arhitekture raunara. Npr. ne vrijedi nam mnogo
raunar koji moe da adresira beskonano veliku koliinu memorije ako ne postoji operativni
sistem koji to moe da iskoristi. Zbog toga, arhitektura raunara na svim nivoima direktno
utie na karakteristike i mogunosti konkretnog raunara.

Jo u drugoj polovini osamdesetih godina u informatikim krugovima vaila je izreka da se


automobilska industrija razvijala brzinom kojom se razvijala raunarska u 20. vijeku, ve tada
bi imali automobile kojima bi mogli da odemo na mjesec. I zaista, ovaj sektor se tazvijao
najbre i najeksplozivnije u odnosu na sve druge tehnike nauke. Prije tano 40 godina,
inenjer Gordon Mur, jedan od osnivaa firme Intel, najveeg svjetskog proizvoaa
kompjuterskih ipova, napisao je novinski lanak u kome je iznio tvrdnju da e se broj
pojedinanih elektronskih elemenata na jednom ipu svake godine uveavati za oko 60%. To
njegovo predvidjanje se manje-vie obistinilo, jer su inenjeri uspjevali da neprestano
smanjuju tranzistore ali i druge osnovne elemente. Poredjenja radi, 1965. kada je Mur iznio
svoju viziju, na jedan ip moglo je da stane oko 60 tranzistora i otpornika. S druge strane,
Intelov ip tipa Itanijum (iz 2006. godine) sadri milijardu i 700 miliona tranzistora. Sa
razvojem i proirenjem primjene raunara rastao je interes i za arhitekturu raunara i
definisale su se dvije grupe strunjaka zainteresovanih za nju:

Projektanti i proizvodjai raunara zainteresovani za prjektovanje i proizvodnju


raunara sa to boljim karakteristikama uz to nie trokove;
Korisnici raunara zainteresovani za dobijanje (nabavku) raunara koji e najbolje
zadovoljiti zahtjeve konkretne primjene uz najniu cijenu.

Dananji raunari se koriste u mnogim oblastima ivota - od projektovanja, proizvodnje,


medicine, komunikacija i poslovne primjene pa do obrazovanja i zabave. Zbog ovako velikog
spektra primjene raunara, veliki je i znaaj raunarske tehnike i arhitekture raunara, a on se
ogleda u slijedeim prednostima i karakteristikama primjene raunara:

Velika brzina obrade podataka;


Velika tanost obrade podataka;
Memorisanje velikih koliina podataka;
Univerzalnost primjene i mogunost prilagoavanja zahtjevima posla;
Mogunost upravljanja pomou raunara;
Mogunost komunikacije pomou raunara;
Relativno niska cijena.

Danas su raunari prodrli u gotovo svaku oblast ivota, tako da bi nabrajanje svih moguih
primjena raunara oduzelo previe prostora zbog toga emo ovdje nabrojati samo
najvanije oblasti primjene raunara:

Nauno - tehnika primjena. Prve primjene raunara su bile u toj oblasti zahvaljujui
elji za automatizacijom procesa raunanja. Danas se raunari koriste i za
modeliranje fizikih pojava, procesa i objekata, rjeavanje odgovarajuih sistema
jednaina kao i za projektovanje pomou raunara u raznim naunim oblastima.
Poslovna primjena je praktino jedna od najrasprostranjenijih oblasti primjene
raunara. Sa poslovnom primjenom raunara sreemo se tokom svakodnevnih
aktivnosti u gotovo svakom preduzeu. To su razliite evidencije, materijalno i
finansijsko poslovanje, obraun plata i dr. Rukovodioci takoe koriste raunar za
obezbjedjivanje aurnosti i tanosti u poslovanju te obezbjeivanje informacija bitnih
za donoenje odluka za upravljanje poslovnim sistemom.
Primjena u upravljanju predstavlja jedan vaan segment primjene raunara. Raunari
se danas koriste za upravljanje razliitim objektima, procesima, mainama,
uredjajima. Poznati su primjeri upotrebe raunara u proizvodnji, saobraaju, u vojne
svrhe itd. Ovakve raunare esto karakterie rad u realnom vremenu - upravljanje
istovremeno dok se objekat kree ili proces odvija, kao i garantovano vrijeme odziva.
Primjena raunara u komunikacijama je danas toliko rairena da je gotovo nemogue
navesti sve njene aspekte. Raunarske komunikacije obuhvataju mnogobrojne oblasti
od transakcjia izmeu dva umreena raunara, preko razmjene e-mailova i faksova,
do VOIP tehnologije i video konferencija. Ova oblast primjene dovela je i do razvoja
brojnih komunikacionih ureaja koji su bazirani na primjeni raunara - od raznih
wireless mrenih kartica do web kamera.

Razvoj raunara
1) Abakus i Antiktitera. Ve smo spomenuli ogromnu brzinu kojom se raunaska industrija
razvijala tokom 20. vijeka. Meutim, razvoj raunara ne poinje tek u 20. vijeku. Jo od
antikih vremena, ljudi su pokuavali da automatizuju proces raunanja. Prvi poznati ureaj

koji je olakavao raunanje bio je abakus (engl. abacus). O pokuajima drevnih civilizacija da
ubrzaju i olakaju proces raunanja svjedoi i mehanizam iz Aniktitere, koji je otkriven 1901.
godine na grkom ostrvu Aniktitera. Misli se da potie iz perioda od oko 100-150 godina
p.n.e., a po kompleksnosti nadilazi ureaje koji su se pojavili hiljadu godina kasnije.
2) arls Bebid - Analitika maina. Prvu polovinu 19. vijeka obiljeili su radovi velikog
engleskog naunika arlsa Bebida (1791-1871). Oslanjajui se na teoretsku osnovu koju su
postavili Blejz Paskal, Gotfrid Lajbnic i Vilijem rinkard, on je najprije izradio koncept
diferencijalne maine, a zatim i prijedlog tzv. Analitike maine prvi koncept raunara opte
namjene. Takoe je dao prijedloge za ulaze podataka u navedene ureaje u vidu buenih
kartica. Interesantno je rei da je 1991. godine diferencijalna maina uspjeno napravljena i
putena u rad samo na osnovu nacrta ovog velikog naunika.
3) Herman Holerit Tabelarne maine. Kraj 19. vijeka obiljeio je rad amerikog naunika
Hermana Holerita (1860-1929). Ovaj veliki statistiar je izumio i realizovao mehaniki ureaj
za uvanje i obradu velikog broja statistikih podataka smjetenih u tabelama, koji je bio
zasnovan na buenim karticama. Osnova njegove ideje zasnivala se na mogunosti da se
bilo koji podatak moe predstaviti pomou brojeva. Na osnovu brojanog koda, podatke je
bilo mogue mehaniki uvati, sabirati ili sortirati. Oitavanje podataka sa kartica vrio je
pomou sistema igala sa oprugom koje bi, kada naiu na ubuenje zatvarale elektrino kolo.
4) Alan Tjuring Algoritam i Hipotetika maina. Prvu treinu 20. vijeka obiljeila je pojava jo
jednog engelskog naunika. Alan Tjuring je imao veliki uticaj na formalizaciju pojma algoritam.
On je takoe prvi koji je dao jasnu i potpunu teoriju raunara opte namjene pomou tzv.
Hipotetike Tjuringove maine. Ideja Tjuringove maine se zasnivala na traci na koju je bilo
(hipotetiki) mogue zapisivati ili itati podatak po podatak pomou glave za pisanje. Podaci
su bili nule ili jedinice.
5) Hauard H. Aiken i D.Brajs - Mark 1. 1944. godine, razvijen je raunar Mark I ili Harvard
Mark I. Harvard Mark 1 (eng. Harvard Mark I) je bio prvi svjetski programabilni raunar. To je
bila elektro-mehanika maina koja je izvravala komande korak-po-korak. Naredbe
(instrukcije) se unoene u raunar uz pomo papirne vrpce, kartonskih kartica sa rupama ili
prekidaa. Mark 1, iji razvoj je djelomino finansirao IBM je razvijen od Hauarda Aikena
(Howard Aiken) i Dejmsa Brajsa (James W. Bryce) na univerzitetu Harvard, gdje je
zauzimao itavu zgradu. Zavren je 1944. godine, a radio je vie od 15 godina. Tokom
Drugog svjetskog rata je vrio razliite proraune za potrebe mornarice SAD. Koristio je
relejnu logiku.
6) The First Draft of a Report on the EDVAC. 30. juna 1945. godine, objvljen je nepotpun
dokument kojeg je na 101 strani napisao Don fon Nojman (John von Neuman) u kojem je
opisana arhitektura raunara kod kojega su i program i podaci smjeteni u memoriju.
7) ENIAC. 1946. godine realizovan je prvi elektronski raunar, nazvan ENIAC (Electronic
Numerical Integrator And Computer). On predstavlja prvi digitalni elektronski raunar kog je
bilo mogue programirati u cilju reavanja irokog spektra raunarskih problema. ENIAC je
dizajniran i izgraen u svrhu izraunavanja balistikih tablica za vojsku SAD. Prvi problemi
rjeavani na ENIAC-u bili su povezani i sa izradom hidrogenske bombe. Koristio je
elektronske vakuumske cijevi. Mogao je da izvede oko 5000 ciklusa po sekundi. Za operaciju
mnoenja 10. cifrenih brojeva trebalo mu je 14 ciklusa ili 2800 s, odnosno mogao je da izvri
357 ovakvih operacija po sekundi.
8) UNIVAC. Godine 1951. realizovan je prvi raunar opte namjene koji se komercijalno
proizvodio, nazvan UNIVAC I (UNIVersal Automatic Computer I). Razvijali su ga Presper
Ekert i Don Mali, koji su takoe uestvovali i u razvoju ENIAC-a. UNIVAC I je koristio 5200
vakumskih cijevi i bio je teak 13150 kg. Mogao je da izvri 1905 operacija po sekundi sa
klokom od 2.25 MHz. Samo procesor i memorija su zauzimali zapreminu od 4.3x2.4x2.6
metara, dok je kompletan sistem zauzimao povrinu od 35.5 kvadratnih metara.

Generacije raunara
Podjela na generacije vezana je za tehnologiju realizovanja raunara, tj. osnovnu
komponentu za realizaciju raunara. Osnovna komponenta za izradu se mijenjala tokom
vremena poevi od vakuumskih cijevi, preko tranzistora do integrisanih krugova. Tokom
svog burnog razvoja u prethodnih 60 godina, raunari su proli kroz nekoliko slijedeih
generacija:

Prva generacija
o Od 1946.god. do 1956.god.
o Osnovna komponenta je elektronska vakumska cijev.
Druga generacija
o Od 1957.god. do 1963.god.
o Osnovna komponenta je poluprovodniki tranzistor.
Trea generacija
o Od 1964.god. do 1981.god.
o Osnovna komponenta je integrisano kolo malog (SSI), srednjeg (MSI) i
velikog stepena integracije (LSI).
SSI Small Scale of Integration
MSI Medium Scale of Integration
LSI Large Scale of Integration
etvrta generacija
o Od 1982.god. do (199- god) vremenska granica vie nije precizna
o Osnovna komponenta je integrisano kolo vrlo velikog stepena integracije
(VLSI).
VLSI Very Large Scale of Integration
Peta generacija
o U toku je. (od 199- god. )
o Osnovna komponenta je integrisano kolo ultra velikog stepena integracije
(ULSI).
ULSI Ultra Large Scale of Integration
U petoj generaciji javljaju se slijedei pojmovi:
 Wafer-scale integration (wafer-oblanda, sloj) - superip na jednom
waferu
 System on Chip (SoC) - sve komponente kompjutera na jednom ipu
 Three dimensional Integrated Circuit (3D-IC) - nekoliko slojeva
integrisanih i vertikalno (horizontalno se podrazumjeva)
 Primjena metoda vjetake inteligencije i raspoznavanja uzoraka te
paralelna obrada.

Uporedo sa razvojem hardvera, dolazi i do burnog razvoja softvera koji je morao da prati i
koristi uvjek nove hardverske mogunosti. Na poetku, ljudi su sa kompjuterima komunicirali
mainskim jezikom - jezikom koji se sastoji od brojeva. Poto je ovakav nain programiranja
ljudskom umu jako teak, postepeno je dolo i do razvoja razliitih asemblera koji su bili
prilagoeni razliitim platformama. Prva velika prednost asemblera bila je u tome to su
brojane pozive odreenih instrukcija zamjenili mnemonicima koji su mnogo blii ljudskom
nainu razmiljanja.
Slijedei korak u razvoju softvera bila je pojava viih programskih jezika fortran, basic,
pascal, C itd. koji su jo vie olakavali proces programiranja. Nakon pojave velikog broja
kompajlera, poele su se razvijati i razliite metode programiranja. Nakon prvih kompajlera
koji su radili u In-line reimu, pojavljuju se najprije modularni asembleri, pa proceduralni jezici,
pa zatim strukturno programiranje, objektno orjentisano programiranje, a najnovija
1
paradigma je aspektno orjentisano programiranje.
Treba napomenuti da su asemblerski jezici jo uvjek najblii arhitekturi raunara i da je njeno
potpuno razumjevanje mogue, osim asemblerom, djelimino doarati samo pomou
programskog jezika C. Svi ostali programski jezici, da bi olakali programiranje, postavljaju
razliite slojeve izmeu hardvera i programera, i na taj nain apstrahuju i sakrivaju mainu od
programera.

Tipovi raunara
Definicija:
Raunar - uredjaj ili sistem koji vri obradu podataka.
Iz prethodne, kratke definicije, vidi se da raunar obrauje podatke. Odmah se moramo
zapitati kakve podatke raunari obrauju? Znamo da dananji personalni raunari mogu
obrauju tekstualne, brojane podatke, sliku, zvuk i mnogo drugih podataka. Ali kako se ovi
1

Od grkog para i digm, pokazati, para-pored, digma-pokazati, uiniti razumljivim, primjer, uzorak

podaci prestavljaju u svom izvornom obliku? Taan odgovor na ovo pitanje je uvjek u
brojanom obliku. Meutim, ostaje pitanje na koji nain maina moe da obrauje brojane
podatke. Najjednostavniji odgovor je da bi mogla da mjeri visinu napona ili struje i da ova
visina na na neki nain predstavlja brojani podatak. Naponi i struje prestavljeni na ovaj nain
su KONTINUALNE (neprekidne) fizike veliine. Drugi nain na koji se podaci mogu
predstavljati u raunarima bio bi pomou DISKRETNIH ili DISKONTINUALNIH (prekidnih)
veliina. Znai, podaci se u raunaru predstavljaju u dva osnovna vida:

Kontinualnom i
Diskretnom.

Kontinualne veliine se, kako je reeno predstavljaju naponima ili strujama odreene visine ili
amplitude. Diskretni podaci se, s druge strane, predstavljaju IMPULSIMA.
U skladu sa podacima koje obrauju, jasno je da postoje slijedee vrste obrade podataka:
analogni, digitalni i hibridni nain obrade, koji predstavlja kombinaciju prethodna dva.
Na osnovu toga moemo izvriti podjelu raunara na slijedee tipove:

Analogni,
Digitalni i
Hibridni.

Analogni raunar vri obradu analognih podataka. Elektronska kola generiu i kontroliu
napone ili struje koji predstavljaju promjenljive veliine, tj. podatke. Osnovni elementi ovakvih
raunara su operacioni pojaavai. Tanost im uglavnom nije velika, ali ih karakterie velika
brzina dobijanja rezultata. Koriste se uglavnom u specijalnim primjenama.
Digitalni raunar vri obradu numerikih, digitalnih podataka. Sve operacije u ovakvim
raunarima se svode na osnovne aritmetike i logike operacije. Digitalni raunari pri obradi
podataka primjenjuju algoritamske postupke. Osnovne prednosti ovakvih raunara su njihova
vea tanost, koja zavisi od duine digitalnih podataka i neodredjeno dugo vrijeme uvanja
podataka u memoriji. Zahvaljujui napretku tehnologije, brzina ovih raunara se neprekidno
poveava, tako da su oni gotovo istisnuli analogne raunare iz praktine upotrebe.
Hibridni raunar koristi prednosti analognog (brzina) i digitalnog (tanost) raunara. Kod
ovakvog raunara zastupljeni su i analogni i digitalni postupci obrade podataka, zavisno od
potrebe. Oni imaju veliku primjenu u upravljanju procesima, gdje analogni dio prati odvijanje
procesa i upravlja kontrolnim organima dok digitalni dio realizuje funkciju upravljanja.

2. Predstavljanje podataka
U prethodnom poglavlju, kada smo govorili o vrstama raunara, rekli smo da digitalni raunari
obrauju digitalne ili diskretne podatke. Takoe smo naveli da se diskretni podaci
predstavljaju diskontinualnim veliinama impulsima. Sve operacije i kompletan rad
raunara baziraju se na dva osnovna fizika stanja ima napona (impulsa), sa simbolikom
oznakom 1 i nema napona (impulsa) sa simbolikom oznakom 0, kao na slijedeoj slici:

Da bi se izbjegli problemi vezani za sinhronizaciju, u praksi sreemo i razliite druge naine


predstavljanja ova dva stanja, npr. vezane za promjenu signala:

Postoje i razliiti drugi naini prikazivanja ova dva stanja fazna modulacija, frekventna
modulacija itd.
Kako smo ve pominjali, svi podaci (i instrukcije) se u raunaru predstavljaju u brojanom
obliku. Poto je na osnovu prethodne slike jasno da je binarni brojni sistem raunaru najblii i
najprirodniji, moraemo se prisjetiti osnova potrebenih za konverzije izmeu razliitih brojnih
sistema.

2.1. Brojni sistemi


Brojni sistem je nain oznaavanja ili izraavanja brojeva uz pomo nizova znakova ili naziva.
Uporedo s razvojem pisma kroz ovjekovu istoriju razvijali su se i razliiti brojni sistemi koji se
po strukturi dijele na:
1.) aditivne,
2.) aditivno-multiplikativne.
Aditivni sisitem je niz znakova u kojima je broj jednak zbiru znakova od kojih je sastavljen,
npr. kao kod starih Rimljana:
XXXVII = 10 + 10 + 10 + 5 + 2 = 37
Ovakvi sisitemi nisu omoguavali raunske operacije kakve omoguavaju aditivnomultiplikativni brojni sistemi. Kod aditivno-multiplikativnih sistema pojedini brojevi (cifre)

predstavljaju teinske grupe - pojedinane cifre se mnoe teinskom grupom, a zatim se


dobijeni rezultati saberu, kao u slijedeem primjeru:
"stotinu etrdeset i pet" = 1*100 + 4*10 + 5*1 = 145
Najvaniji dio aditivno-multiplikativnog brojnog sistema je baza (osnova, radix), koja se kao
mnoilac nalazi u sastavu broja. Danas je najvie u upotrebi dekadni brojni sistem, aditivnomultiplikativni sistem s osnovom (bazom) deset (10).
Dekadni sistem se tumai na slijedei nain:

Svaka cifra ima odgovarajuu teinsku vrijednost, koja je u odnosu sa bazom (10) brojnog
sistema. Bilo koji drugi brojni sistem mogue je predstaviti na ovaj nain.
Ako posmatramo prethodnu sliku, moemo uoiti slijedee pojmove:
10 osnova, baza (radix) brojnog sistema
1,3,5,7 cifre broja kojeg predstavljamo
Eksponenti pozicije odgovarajuih cifara (7 je na poziciji nula, 5 na poziciji 1 itd.)
Uopteno, svaki brojni sistem ima osnovu (b) i cifre (Ci) brojnog sistema. Kako smo ve rekli,
cifre su teinske (imaju odgovarajuu teinu), a ta teina zavisi od njihovog poloaja u
podatku. Baza je uvijek cijeli pozitivan broj vei od 1 (b>1) dok su cifre (Ci) uvjek cijeli
pozitivni brojevi izmedju 0 i b-1 (0 C b-1).
Tokom ljudske istorije su razvijani razliiti brojni sistemi, a za raunarsku tehniku su
najznaajniji slijedei:
Naziv
Osnova
Cifre
binarni

0,1

oktalni

0,1,2,3,4,5,6,7

decimalni

10

0,1,2,3,4,5,6,7,8,9

heksadecimalni

16

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Podatak se u bilo kom brojnom sistemu predstavlja na slijedei nain:


C n 1C n 2 ...C 2 C1C 0 , C 1C 2 ...C m ,

gdje je:
m
n
C
b
i

(b)

(1)

- broj razlomakih mjesta u podatku (desno od zareza)


- broj cijelih mjesta u podatku (lijevo od zareza)
- cifre brojnog sistema
- baza (osnova) brojnog sistema
- mjesto ili pozicija cifre u podatku

Stvarna vrijednost cijelog broja moe se izraunati na osnovu slijedee formule:

n 1

N = Cibi

(2)

i =0

Dok je formula za izraunavanje razlomljenog dijela:


1

N=

C b

(3)

i = m

Odnosno kompletnog broja:


n 1

N=

n 1

Cibi = Cibi + Cibi


i = m

i =0

(4)

i = m

Primjeri:
2
1
0
-1
-2
X = 427,3510 = 410 + 210 + 710 + 310 + 510
= (400) + (20) + (7) + (3/10) + (5/100)
Dakle ovdje je, prema (1) i (4):
m = 2, n = 3 dok je b = 10.

135710 =
3
2
1
0
1*10 + 3*10 + 5*10 + 7*10 =
1*1000 + 3*100 + 5*10 + 7*1

2.1.1.

Binarni brojni sistem

U digitalnim raunarima se koristi binarni numeriki sistem za predstavljanje podataka.


Njegova osnova je 2, a cifre su 0 i 1.
Primjer:
X=11010001(2)
Cifra se u binarnom sistemu naziva bit, to predstavlja skraenicu od engleskog termina
BInary digiT, to znai binarna cifra.
Za razliku od raunara, ovjeku je za svakodnevnu upotrebu mnogo prorodniji i laki dekadni
brojni sistem. Zbog toga se moramo malo pozabaviti i konverzijom izmeu razliitih brojnih
sistema.

2.1.2.

Konverzija binarnih u decimalne podatke

Postupak opisan jednainom (4) se moe koristiti i za konvertovanje binarnog broja u


decimalni broj. Pretpostavimo da imamo binarni broj (1010.01)2. Ovdje je n=4, m=2 i b=2.
Koristei jednainu (4), imamo:
3

-1

-2

1x2 + 0x2 + 1x2 + 0x2 + 0x2 + 1x2 =


(8)10 + (0)10 + (2)10 + (0)10 + (0/2)10 + (1/4)10 =
(10.25)10
Prikazani metod za konverziju koji koristi jednainu (4) naziva se metod polinoma i moe se
korisiti za pretvaranje broja iz bilo kog brojnog sistema u dekadni brojni sistem.
Kada vrimo konverziju izmeu bilo koja dva brojna sistema, prva stvar na koju trebamo
obratiti panju su baze navedenih brojnih sistema. Sama konverzija se dakle realizuje vodei
rauna o tome da je osnova binarnog sistema 2 a dekadnog 10, te uzimajui u obzir
vrijednost i poloaj (teinu) svake binarne cifre, prema izrazima (1) i (4):
Primjeri pretvaranja iz binarnog u dekadni brojni sistem:
1100,11012 =
3
2
1
0
-1
-2
-3
-4
1x2 + 1x2 + 0x2 + 0x2 + 1x2 + 1x2 + 0x2 + 1x2 =
(8)10 + (4)10 + (0)10 + (0)10 + (1/2)10 + (1/4)10 + (0/8)10 + (1/16)10=
12,812510
10101011,10012 =
10

-1

-2

-3

-4

1x2 + 0x2 + 1x2 + 0x2 + 1x2 + 0x2 + 1x2 + 1x2 + 1x2 + 0x2 + 0x2 + 1x2 =
(128)10 + (0)10 + (32)10 + (0)10 + (8)10 + (0)10 + (2)10 + (1)10 + (1/2)10 + (0/4)10 + (0/8)10
+(1/16)10 =
171,562510
Konverziju bi mogli izvriti i ovako:
(10101011)2=
--------------------------------------------1 0 1 0 1 0 1 1
7
6
5
4
3
2
1
0
2 2 2 2 2 2 2 2
--------------------------------------------7
6
5
4
3
2
1
0
=1*2 + 0*2 + + 1*2 + 0*2 + 1*2 + 0*2 + 1*2 + 1*2 =
=128 + 32 + 0 + 8 + 0 + 2 + 1 = 17110
U zadnjem primjeru, dva krajnja bita imaju naveu i najmanju teinsku poziciju (mnoe se sa
7
0
2 i 2 ). Bit sa najveom teinom naziva se najznaajniji bit (MSB most significant bit),
dok se bit sa najmanjom teinom naziva najmanje znaajan bit (LSB least significant
bit). Po konvenciji, MSB je lijevi bit u broju, a LSB se nalazi na desnom kraju broja. Takoe
treba primjetiti da prikazani broj ima 8 bita, odnosno da je formatiran na nivou jednog Bajta
(Byte). Bajt u raunarskim naukama predstavlja osnovnu jedinicu podataka, a danas se
predstavlja kao ureena kolekcija od osam bita.

2.1.3.
Konverzije podataka izmeu razliitih brojnih sistema
(izmeu razliitih baza)
U prethodnom poglavlju smo vidjeli kako moemo pretvoriti podatke iz binarnog brojnog
sistema (sa bazom 2) u dekadni brojni sistem (sa bazom 10). Meutim, ako bi morali da
obavimo obrnut postupak, odnosno da pretvorimo podatke iz dekadnog u binarni brojni
sistem, ovakva vrsta konverzije bila bi neto tea. Najprostiji nain da pretvorimo realni broj iz
dekadnog u binarni brojni sistem bio bi da posebno pretvaramo njegov cjelobrojni a posebno
razlomljeni dio. Posmatraemo ovaj postupak na primjeru pretvaranja broja (23.375)10 u
binarni broj, a za konvertovanje emo koristiti metode ostatka i multiplikacije.

Metoda ostatka
Ako bilo koji cijeli broj podjelimo sa 2, kao ostatak pri dijeljenju mogu se pojaviti samo brojevi
0 i 1, odnosno cifre binarnog brojnog sistema. Posmatraemo cijeli dio prethodno pomenutog
broja (23)10:

Dakle, broj 23 dijelimo sa 2 i dobijamo 11 sa ostatkom 1. Zatim dobijeni rezultat (11) ponovo
dijelimo sa 2 pa dobijamo rezultat 5 (koji ulazi u slijedee dijeljenje) i ostatak 1. Postupak se
zavrava kada rezultirajui cijeli broj viestrukim dijeljenjem svedemo na nulu.
Treba primjetiti da rezultirajue bite dobijamo od najmanje znaajnog bita (LSB) prema
najznaajnijem bitu (MSB), dok se dobijeni broj ita odozdo prema gore (od MSB prema
LSB). Dakle, rezultat ove konverzije bi bio (23)10=(10111)2.
Prikazana ideja predstavlja osnovu metode ostatka (remainder method) za konvertovanje
cijelih brojeva (integer) izmeu razliitih baza. Cijeli broj predstavljen u bilo kom brojnom

11

sistemu moemo pretvoriti u drugi brojni sistem uzastopnim dijeljenjem (sa ostatkom) pomou
baze drugog brojnog sistema. Pogledajmo jo jedan primjer, koji ilustruje pretvaranje iz
heksadekadnog u dekadni brojni sistem:

esto koritena notacija za pisanje heksadekadnih brojeva poinje simbolima 0x. Ovdje smo
broj (17)16 dijelili sa (A)16, to je ekvivalentno dijeljenju sa (10)10, dakle dijelili smo ga sa
bazom drugog brojnog sistema. Cifre koje dobijamo na ovaj nain su uvjek manje od baze u
koju pretvaramo u sluaju pretvaranja u dekadni brojni sistem moemo dobiti cifre 0-9.

Metoda multiplikacije
Konverzija razlomljenog dijela broja vri se pomou metode multiplikacije. Ova metoda
zasniva se na uzastopnom mnoenju razlomljenog dijela broja sa bazom brojnog sistema u
koju vrimo konverziju. Ako posmatramo razlomljeni dio prethodno pomenutog broja
(0.375)10, mnoenjem ovog broja (ali i bilo kog drugog razlomljenog broja) sa 2 dobiemo
uvjek broj koji je manji od 2, dakle manji od baze u koju vrimo konverziju. Dodatno, prva cifra
dobijenog umnoka (lijevo od decimalne take) e uvjek biti 0 ili 1. Pogledajmo to na primjeru:

Dakle, rezultat konverzije (0.375)10 je (0.011)2. Treba primjetiti da uvjek mnoimo razlomljeni
dio rezultata, kao i da konverziju zavravamo kada razlomljeni dio rezultata padne na nulu.
Na kraju, spojiemo cjelobrojni i razlomljeni dio i formiraemo rezultat konverzije
(23.375)10=(10111.011)2.
Treba primjetiti da razlomljeni dio u jednom brojnom sistemu moe imati konaan broj cifara,
dok u drugom moe imati beskonaan broj cifara. Na primjer, pri pretvaranju broja (0.2)10 u
binarni brojni sistem, imamo:

Konverzije izmedju razliitih numerikih sistema od kojih ni jedan nije decimalni (sistemi sa
osnovama b1 i b2) najlake se izvode preko decimalnog brojnog sistema. Prvo se izvri
konverzija iz jednog sistema (sa osnovom b1) u decimalni sistem, a onda iz decimalnog
sistema u drugi (sa osnovom b2) koriteni numeriki sistem.

12

2.2. Binarna, oktalna i heksadekadna reprezentacija


podataka
Podaci predstavljeni u binarnom brojnom sistemu su esto veoma dugaki nizovi nula i
jedinica koje je dosta teko proitati, a jo tee prepisati na papir. Zbog toga se, tokom
razvoja raunarskih nauka, u praksi pojavilo predstavljanje podataka u oktalnom i
heksadekadnom brojnom sistemu. Ova dva brojna sistema su najmanji brojni sistemi koji su
djeljivi sa dva. Njihova djeljivost sa dva omoguava nam da grupiemo cifre binarnog brojnog
sistema i da ih pretvorimo u podatke koji su laki za itanje. Pogledaemo jo jednom cifre
binarnog, dekadnog, oktalnog i heksadekadnog brojnog sistema, ovaj put predstavljene na
neto drugaiji nain:
Binarni (2)
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111

Oktalni (8)
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17

Heksadekadni (16)
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

Decimalni (10)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Treba uoiti da je za predstavljanje bilo kog broja sa bazom 8 potrebno odvojiti tri binarne
cifre (0-7 <=> 000-111), dok za predstavljanje bilo kog broja sa bazom 16 moramo odvojiti 4
binarne cifre (0-F <=> 0000-1111). Generalno, potrebno nam je K bita za predstavljanje broja
K
3
u bazi 2 , gdje je K cijeli broj. Npr, 8 = 2 , pa oktalni brojni sistem zauzima 3 binarne cifre, a
4
16 = 2 , pa heksadekadni zauzima 4 binarne cifre.
Da bi pretvorili neki cijeli broj iz baze 2 u bazu 8, mogli bi podjeliti cifre binarnog broja u grupe
po 3, poevi od decimalne take. Posmatraemo to na primjeru pretvaranja binarnog broja
(10110)2 u bazu 8:
(10110)2 = (010)2 (110)2 = (2)8 (6)8 = (26)8
Primjetite da smo na lijevoj strani (MSB) dodali jednu nulu, da bi formirali puni triplet.
Pogledaemo i primjer pretvaranja binarnog broja (10110110)2 u bazu 16:
(10110110)2 = (1011)2 (0110)2 = (B)16 (6)16 = (B6)16
Treba primjetiti da je B cifra heksadekadnog brojnog sistema, ija je decimalna vrijednost
(11)10.
U raunarskoj tehnici heksadekadni brojni sistem ima veoma veliku ulogu i veoma eso se
upotrebljava. Kako emo vidjeti, ovaj brojni sistem se koristi za predstavljanje adresa
memorijskih lokacija kao i za predstavljanje instrukcija, podataka, odnosno uopte - sadraja
memorije ili neke datoteke itd. Naravno, treba uvijek imati u vidu da heksadekadni sistem
slui ljudima za lake itanje ili pisanje brojeva - digitalni raunari i dalje memoriu i obrauju
podatke koristei binarni brojni sistem.

2.2.1.

Osnovni tipovi podataka u raunaru

U jednom od prethodnih poglavlja Ve smo spominjali termin Bit binarna cifra. Podatak koji
ima vie bita naziva se binarna rije. U raunarima se svi podaci predstavljaju kao sekvence
od nekoliko bita. Prvi konstruktori raunara su, kada se pojavila potreba da memoriu i

13

obrauju podatke na neki nain, morali da odlue koliko dugake mogu da budu te sekvence
bita. Oni su veinom imali ograniene resurse i morali su da usklade duinu odreene
sekvence bita sa mogunostima i ogranienjima trenutnog razvoja nauke i tehnike. Tako je
nastao pojam Bajta-a (Byte), najmanjeg elementa koji se moe adresirati u kompjuteru. On
najee oznaava sekvencu bita ija je duina odreena arhitekturom raunara. Iako se
danas gotovo uvijek pod pojmom Bajta oznaava sekvenca od 8 bita, to nije uvjek bilo tako.
Npr. arhitektura raunara CDC6000 bila je zasnovana na bajtu duine 6 bita.
Sam temin Bajt upotrebio je Dr.Werner Buchholz 1956. godine, a porijeklo vue od engleske
rijei bite zagristi, te na taj nain indicira veliinu fragmenta podataka koje raunar moe da
prima na svom ulazu.
Ipak, danas je uvrijeeno shvatanje da je 1 bajt sekvenca od 8 bita, pa emo se i mi u daljem
8
izlaganju drati ove pretpostavke. Pomou jednog bajta moe da se predstavi 2 = 256
razliitih vrijednosti (podataka).
Pratei dananje konvencije, rije (Word) predstavlja sekvencu od 16 bita, dvostruka rije
(DWord) je sekvenca od 32 bita, dok je etvorostruka rije (QWord) sekvenca od +64 bita.
Ako bi, na primjer, trebali da predstavimo broj (3)10 u binarnom brojnom sistemu, formatiran
na nivou bajta i rijei, imali bi:
(3)10 = (11)2 =
1 bajt: 0000 0011
1 rije: 0000 0000 0000 0011
Vidimo da su cifre binarnih brojeva grupisane u etvorke, radi lake itljivosti. Naravno, ove
etvorke imaju svoje ime nibble, to na engleskom jeziku znai etvorka.
Ono to je posebno za informatiku, a to se razlikuje od svih drugih oblasti nauke, jeste da se
hiljade i milioni ovdje raunaju i oznaavaju na drugaiji nain. Svi smo navikli da je npr.
3

10 =1000,
6
10 =1000000.
Meutim, za oznaavanje veih koliina podataka u bitima ili bajtovima koriste se slijedei
termini:

10

Kilo (K), to znai 2 ili 1024.


10
10
20
Mega (M), to znai 2 2 = 2 ili 1024 1024 = 1 048 576.
10 10 10
30
Giga (G), to znai 2 2 2 =2 ili 102410241024= 1 073 741 824.

Neoznaeni cijeli brojevi (pozitivni cijeli brojevi i nula)


Pred konstruktorima prvih raunara bile su i druge bitne odluke, vezane za nain
predstavljanja i interpretacije podataka u raunaru. Svi digitalni raunari rade samo sa
sekvencama bita, odnosno binarnim brojevima odreene duine. Ako znamo duinu jednog
bajta, pomou njega moemo da predstavimo cjelobrojni podatak (integer ili int) vei ili
jednak nuli sa 256 razliitih vrijednosti. S druge strane, pomou jedne rijei moemo da
predstavimo 65536 razliitih brojeva. Generalno, za izraunavanje ranga bilo kog cjelobrojnog
podatka veeg od nule, vai slijedea formula:
b
(5)

R=2

gdje je:
b broj bita podatka, a
R rang broja.
Ako bi bilo potrebno da izraunamo rang Bajta, DWord-a i QWorda, koristei jednainu (5),
dobili bi:
Bajt: R= 28 = 256;
DWord: R= 232 = 4294967296;
QWord: R= 264 = 18446744073709551616.

14

Dakle, u dvostruku rije moe da stane 4294967296 razliitih ne-negativnih vrijednosti, a u


etvorostruku 18446744073709551616. Neoznaeni cijeli brojevi se vrlo esto navode i kao
unsigned integer.

Brojke i slova
Ako bi se stavili u poziciju prvih konstruktora raunara, morali bi da rijeimo jo nekoliko bitnih
problema, a prvi od njih je kako predstaviti slova u raunaru? Npr. za predstavljanje velikih
slova engleskog alfabeta bila bi nam potrebna tabela za 26 slova za to bi nam bila dovoljna
sekvenca od 5 bita, jer je
(26)10= (11010)2
Kako raunari mogu da rade samo sa binarnim brojevima, svakom slovu bi morali da
pridruimo po jedan broj, a to bi mogli da uradimo npr. kao u slijedeoj tabeli:
A
B
...
Y
Z

00001
00010
...
11001
11010

Ako bi htjeli da stavimo i cifre u nau implementaciju hipotetikog raunara, duinu tabele bi
morali poveati za jo 10 mjesta:
A
...
Z
0
1
...
9

00001
...
11010
11011
11100
100100

Iz table je vidljivo da nam sada za predstavljanje 36 znakova treba 6 bita, jer je:
(36)10= (100100) 2
Ako u nau tabelu poelimo da ubacimo i mala slova engleske abecede, naa tabela mora
imati 62 polja, za ta nam je dovoljno 6 bita.
(62)10= (111110) 2
Ako bi morali da ubacujemo i znakove interpunkcije (. , ; : ! ?) i moda neke posebne simbole
(dolar, funta, plus, minus itd.), vrlo brzo bi doli do 7 bitne tabele.
U doba kada su se prvi konstruktori suoili sa ovim problemom, rjeenje je ve postojalo i bilo
je standardizovano. Bell-ovi teleprinteri su koristili 7-bitne tabele i slinu logiku za slanje
tekstualnih poruka (telegrama). Oni su u to doba ve imali razvijen i standardizovan nain
prenoenja slova i poruka pomou 7-bitnih tabela, gdje je svakom slovu i cifri (alfanumeriku)
bila dodjeljena odgovarajua 7-bitna vrijednost. Odreeno slovo ili cifra je na stani predajnika
pretvarano u sekvencu impulsa koja je na strani prijemnika mogla ponovo biti pretvorena u to
slovo ili cifru, te ga je bilo mogue odtampati na papir.
Proirivanjem i standardizovanjem Bellovog koncepta, 6.oktobra 1960. godine usvojena je
ASCII tabela (American Standard Code for Information Interchange), kao standardan
nain prenoenja tekstualnih podataka. Iako je poela kao 7-bitna, dananja ASCII tabela
sadri 256 slova i razliitih drugih simbola i znakova, a jedan znak zauzima 8 bita ili 1 bajt.
Slijedi isjeak ASCII (ita se Aski) tabele:
De
c
0

He
x
0

De
c
32

He
x
20

Cha
r
Nul
l

1
2

Char

33

21

Spac
e
!

34

22

De
c
64

He
x
40

Cha
r
@

De
c
96

He
x
60

Cha
r
`

65

41

97

61

66

42

98

62

De
c
12
8
12
9
..
.

He
x
80

Cha
r

81

..
.

...

2
Ne-negativne brojeve ini skup prirodnih brojeva i nula, dakle cijeli broj N >= 0. U raunarskoj tehnici esto se koristi i termin
neoznaeni brojevi. Za razliku od njih, oznaeni brojevi ukljuuju i negativne brojeve.
Prirodnim brojevima nazivamo pozitivne cijele brojeve {1, 2, 3, ...}.

15

35

23

67

43

99

63

36

24

68

44

64

37

25

69

45

65

38

26

&

70

46

66

39

27

71

47

67

40

28

72

48

68

41

29

73

49

69

10

42

2A

74

4A

6A

11

43

2B

75

4B

6B

12

44

2C

76

4C

6C

13

45

2D

77

4D

6D

14

46

2E

78

4E

6E

15

47

2F

79

4F

6F

16

10

48

30

80

50

70

17

11

49

31

81

51

71

18

12

50

32

82

52

72

19

13

51

33

83

53

73

20

14

52

34

84

54

74

21

15

53

35

85

55

75

22

16

54

36

86

56

76

23

17

55

37

87

57

77

24

18

56

38

88

58

78

25

19

57

39

89

59

79

26

1A

58

3A

90

5A

7A

27

1B

59

3B

91

5B

7B

28

1C

60

3C

<

92

5C

7C

29

1D

61

3D

93

5D

7D

30

1E

62

3E

>

94

5E

7E

31

1F

63

3F

95

5F

10
0
10
1
10
2
10
3
10
4
10
5
10
6
10
7
10
8
10
9
11
0
11
1
11
2
11
3
11
4
11
5
11
6
11
7
11
8
11
9
12
0
12
1
12
2
12
3
12
4
12
5
12
6
12
7

7F

..
.

..
.

...

Tabela 1: Isjeak ASCII tabele


U veini dananjih programskih jezika, ovaj tip podatka je predstavljen kao char (jedan
alfanumerik) ili string (niz alfanumerika), a pri pisanju koda se predstavlja sa pomou
jednostrukih ili dvostrukih apostrofa, kao npr:
a, abc123 ili a, abc123.
Ovaj koncept je dugi niz godina vladao u IT sektoru, sve dok ga nisu polako poeli
zamjenjivati drugi koncepti, koji su bili u stanju da prikau i slova koja ne pripadaju samo
engleskom alfabetu.

16

Uvod u binarnu aritmetiku


Iako emo raunarsku (binarnu) aritmetiku detaljnije obraivati u iduim poglavljima, ovdje
moramo da obradimo jednu operaciju binarno sabiranje, jer se ona koristi pri predstavljanju
oznaenih binarnih brojeva. Binarno sabiranje se obavlja nain slian runom sabiranju
decimalnih brojeva. Dva binarna broja A i B se sabiraju sa desna u lijevo, a kao rezultat se
dobija njihova suma i eventualni prenos. Kako biti A i B mogu uzeti samo vrijednosti 0 i 1,
mogu se javiti slijedee kombinacije:
A

0
0
1
1

0
1
0
1

0
1
1
0

Prenos
(carry)

(1)

Posmatraemo postupak binarnog sabiranja na primjeru brojeva (1100)2 i (1010)2.

Kako u prva tri koraka nema prenosa (carry), njihovo izvoenje se svodi na upisivanje
vrijednosti iz tabele. etvrti i peti korak su neto interesantniji. U etvrtom koraku javlja se
sabiranje (1+1). Iz tabele vidimo da je 1+1=0, pa nulu upisujemo u istoj koloni u rezultat.
Meutim, pri sabiranju 1+1 javlja se i prenos (1). Njega upisujemo u prvoj slijedeoj (lijevoj)
koloni u polju prenosa. U petom koraku, najprije dopiemo nedostajue nule i saberemo ih
(0+0=0, bez prenosa), a zatim dobijeni rezultat (0) saberemo sa poljem prenosa (1), tako da
dobijamo (0+1=1).
Posmatrajmo slijedei primjer, u kom je potrebno sabrati binarne brojeve (111)2 i (11)2.

17

Prethodno prikazani primjer ilustruje tri mogua sluaja prenosa, pa preporuujemo da ga


dobro prouite.

2.2.2.

Oznaeni cijeli brojevi (signed)

Jo u osnovnoj koli smo nauili da se negativni brojevi piu isto kao i pozitivni, sa znakom
minus (-) ispred broja. Ako bi ovaj koncept pokuali da prebacimo u na hipotetiki raunar,
on bi, u memorijskom smislu, bio dosta skup. Za predstavljanje najmanjeg cijelog broja bila bi
nam potrebna dva bajta jedan za predznak iz ASCII skupa, a drugi za sam broj. Npr,
slijedea tabela prikazuje pozitivan i negativan broj 1, predstavljen na ovaj nain:

(+), 43 dec
(-), 44 dec

U memoriji
ASCII predznak Binarni Broj
00101011
00000001
00101101
00000001

Dakle, potrebno bi nam bilo 8 bita (1 bajt) samo da predstavimo predznak, dok bi za
kompletan broj imali na raspolaganju jo 8 bita. Zbog toga ovakav koncept nikada nije
koriten u praksi. Ipak, slina ideja nala je primjenu u Binarno kodiranim decimalnim
podacima, koje emo upoznati malo kasnije.

Koncept predznak i dimenzije (sign and magnitude)


Kada bi mi bili konstruktori nekog hipotetikog ureaja, jednostavno rjeenje koje bi moda
mogli da iskoristimo, bilo bi da pokuamo uzeti jedan bit iz prostora za podatke. U tom bitu bi
drali predznak broja npr.
0 = pozitivan broj;
1 = negativan broj.
U preostalih 7 bita bi drali stvarne podatke, tako da bi pozitivan i negativan broj 1 mogli da
predstavimo na slijedei nain:
+/Vrijednost
+1 = 0
000 0001
-1 = 1
000 0001
Ovakav nain oznaavanja cijelih brojeva naziva se koncept predznak-dimenzije (sign and
magnitude ili signed magnitude). Kako smo vidjeli, njegova osnovna karakteristika jeste da
se pokua iskoristiti jedan bit (krajnji lijevi bit) iz postojeeg prostora za podatke da bi prikazali
predznak. U tom sluaju, dimenzije podatka (magnituda) su samo 7 bita, pa prethodno
spominjani bajt moe da prikae vrijednosti od -127(10) do +127(10).
Slijedea tabela ilustruje ovaj koncept:

18

Binarno

Oznaen

0 1111111

0 0000010
0 0000001
0 0000000
1 0000000
1 0000001
1 0000010

1 1111111

podatak
127
`
2
1
+0
0
1
2
`
127

Treba primjetiti da ovakav nain prikazivanja brojeva ima jedan veliki nedostatak u njemu
postoje dvije nule, pozitivna i negativna. Takoe, moramo obratiti panju i na rang ovog broja.
8
U sluaju neoznaenih podataka, za rang jednog bajta vaila je formula R = 2 = 256. Za
predstavljanje brojeva pomou koncepta predznak-dimenzije, rang moramo umanjiti za 1,
zbog postojanja dvije nule, kao u slijedeoj formuli:

R = 2b 1

(6)

Primjer: Predstaviti broj (+12)10 i (-12)10 koristei koncept predznak-dimenzije.


(+12)10 = (0000 1100)2
(-12)10 = (1000 1100)2
Iako ovakav koncept prikazivanja cijelih brojeva ima veliki nedostatak pozitivna i negativna
nula, on je ipak koriten u raunaru IBM 7090. Ovaj koncept se i danas koristi za
predstavljanje realnih brojeva u pokretnom (plivajuem) zarezu.

Prvi komplement
Operacija komplementiranja je vrlo jednostavna za izvoenje potrebno je jednostavno
pretvoriti sve nule originalnog binarnog broja u jedinice, a sve njegove jedinice u nule. Dakle:
!0 = 1
!1 = 0
Gdje je ! oznaka za komplement. U literaturi se esto koriste i oznake ~A (tilda od A) i
(nadvueno A) za operaciju komplementiranja.
Ova operacija se, kako emo uskoro nauiti, naziva bitwise NOT operacija. Prvi komplement
emo posmatrati na slijedeem primjeru:
(+12)10 = (0000 1100)2
(-12)10 = (1111 0011)2
Dakle, i koncept prvog komplementa se moe iskorisititi za predstavljanje pozitivnih i
negativnih brojeva, kao u slijedeoj tabeli:
Binarno

Oznaen

0111 1111

0000 0010
0000 0001
0000 0000
1111 1111
1111 1110
1111 1101

1000 0000

podatak
127
`
2
1
+0
0
1
2
`
127

19

Nedostatak predstavljanja oznaenih brojeva na ovaj nain je, kao i u sluaju koncepta
predznak-dimenzije, postojanje dvije nule. Zbog toga je na ovaj nain u okviru jednog bajta
8
mogue predstaviti samo R = 2 -1 = 255 razliitih brojeva.

Drugi komplement
Drugi komplement nekog broja (bilo pozitivnog ili negativnog) se realizuje kao invertovanje
njegovih bita i na kraju dodavanje broja 1 na dobijeni rezultat. Ako se kao rezultat sabiranja
pojavi prenos u najznaajnijem bitu, ovaj prenos se ignorie.
Ako npr. treba da komplementiramo broj 127 u okviru jednog bajta, drugi komplement
dobijamo u dva koraka:

Posmatrajmo slijedeu tabelu koja ilustruje ovaj koncept:


Binarno

Oznaen

0 1111111

0 0000010
0 0000001
0 0000000
0 0000000
1 1111111
1 1111110

1 0000001

podatak
127
`
2
1
+0
0
1
2
`
127

Kako vidimo, pozitivni brojevi predstavljeni pomou drugog komplementa uvjek poinju nulom
na mjestu MSB-a, dok negativni brojevi uvijek poinju jedinicom, to bitno pojednostavljuje
projektovanje sklopova koji treba da manipuliu ovakvim brojevima. Takoe treba primjetiti da
ovakav nain predstavljanja oznaenih brojeva ne pati od nedostataka vezanih za
pojavljivanje dvije nule. Da bi ovo pokazali, pronai emo drugi komplement od broja
(+0)10=(0000 0000)2
Prvi komplement broja (0000 0000)2 daje
(1111 1111)2
Nako to ovom rezultatu dodamo (1)2, dobiemo
(0000 0000)2
a prenos na poziciji lijevog (MSB) bita emo odbaciti.
Ako se ponovo vratimo na primjer sa brojem (12)10, imamo:
(+12)10 =
(0000 1100)2
Prvi komp.

(1111 0011)2
+1
---------(1111 0100)2

Iz tabele vidimo da pozitivni brojevi poinju od (0)10, a negativni od (-1)10. Zbog toga u okviru
jednog bajta apsolutna vrijednost najveeg negativnog broja (-128)10, dok je vrijednost
20

najveeg pozitivnog broja (+127)10. Treba primjetiti da svaki broj u prethodnoj tabeli, bio on
pozitivan ili negativan ima svoj drugi komplement svaki osim broja (-128)10. Da bi to
pokazali, pokuaemo da komplementiramo ovaj broj:
(+128)10 =
(1000 0000)2
(0111 1111)2
+1
---------(1000 0000)2
Koncept drugog komplementa je veoma vaan, jer se ovakva reprezentacija oznaenih
brojeva najee koristi u raunarskoj tehnici i arhitekturi raunara.

Modifikovana notacija (Excess N, biased)


Do sada smo vidjeli razliite konvencije, odnosno dogovorene naine predstavljanja
oznaenih brojeva. Meutim, za njihovo predstavljanje na nivou jednog bajta, na raspolaganju
su nam uvjek bili isti binarni brojevi od (0000 0000)2 do (1111 1111)2. Samo je stvar dogovora
ininjera i naunih radnika kako se u principu isti binarni brojevi tretiraju u razliitim
notacijama.
Prikazani opseg binarnih brojeva daje nam jo jednu mogunost za predstavljanje oznaenih
brojeva. Ideja modifikovane notacije je da se pozitivni brojevi pomaknu za odreeni broj
mjesta od binarne nule, kao u slijedeoj tabeli:
Binarno

0000 0000
0000 0001
0000 0010

0111 1111
1000 0000

1111 1111

Neoznaen

Oznaen

podatak
0
1
2

podatak
-127
-126
-125

127
128

0
1
8
+128

255

Na ovaj nain, ne-negativni brojevi su pomaknuti za 127 mjesta od binarne nule (0000 0000)2.
Ovakva notacija naziva se jo i Excess 127 ili biased notacija. Vrijednost oznaenog
podatka u ovoj notaciji se izraunava jednostavnim oduzimanjem broja 127 (pomaka) od
stvarne vrijednosti binarnog broja. Ako na primjer imamo binarni broj (0000 0010)2=(2)10,
onda e vrijednost oznaenog broja biti:
Excess127 = (2)10 (127)10 = (-125)10.
S druge strane, ako imamo dat neki broj u Excess 127 notaciji, njegovu binarnu vrijednost
dobijamo tako da najprije dodamo broja 127 datom broju, pa ga onda pretvorimo u binarni
oblik. Ako je dat broj (-125)10, u binarnom obliku ga dobijamo kao:
Binarno(-125) = (-125)10 + (127)10 = (2)10 = (0000 0010)2.
Na primjer, za brojeve (12)10 i (-12)10 koji su predstavljeni u Excess 127 notaciji, imamo:
Binarno(12) = (12)10 + (127)10 = (139)10 = (1000 1011)2.
Binarno(-12) = (-12)10 + (127)10 = (115)10 = (0111 0011)2.
Dakle, stvarna vrijednost, koja se nalazi u nekoj memoriji je
(1000 1011)2, ili (139)10, a tumaimo je kao
12 u Excess127 notaciji.
Ako posmatramo Excess notaciju, bitno je shvatiti da u memoriji stoji neoznaen podatak, a
mi (ili neka maina) ga interpretiramo kao oznaen.
Binarno (stvarna Neoznaen
binarna
podatak
vrijednost)
(Stvarni)

Oznaen
podatak

0000 0000

-127

21

0000 0001

-126

0000 0010

-125

0111 1111

127

1000 0000

128

1111 1111

255

+128

Treba napomenuti da se u starijim raunarima koristila i Exces 128 notacija.

2.2.3.

Binarno kodirani dekadni (BCD) brojevi

U jednom od prethodnih poglavlja spominjali smo mogunost da se predznak broja predstavi


njegovim ASCII karakterom, odnosno binarnim ekvivalentom znaka minus (-) i zakljuili smo
da ovo nije efikasno rjeenje u smislu potronje memorije. Meutim, mogli smo razmiljati na
neto drugaiji nain i pokuati da svaku cifru dekadnog brojnog sistema predstavimo
odgovarajuom sekvencom nula i jedinica. U tom sluaju bi nam za predstavljanje cifara (09)10 bila potrebna 4 bita za svaku cifru (0000 - 1001)2.
Ovakvo rjeenje naziva se binarno kodirani decimali (BCD) i ono se u starijim izvedbama
raunara i kalkulatora dosta koristilo, a i danas su este finansijske i poslovne aplikacije koje
koriste ovakvu reprezentaciju brojeva. Da bi predstavili neki decimalni broj na ovaj nain,
svaka decimalna cifra je smjetena u etvorku (nibble), kako slijedi:
Decimalni:
0
BCD:
0000

1
0001

2
0010

3
0011

4
0100

5
0101

6
0110

7
0111

8
1000

9
1001

BCD reprezentacija broja (127)10 bila bi:


0000 0001 0000 0010 0000 0111
Kako raunari za dranje podataka koriste bajte (8 bita), danas imamo dva uobiajena naina
za smjetanje 4-bitnih BCD brojeva u bajt:
Svaka cifra je smjetena u jednu etvorku (nibble), dok su ostali biti popunjeni nulama,
3
jedinicama (u suaju EBCDIC koda) ili sa 0011 u sluaju ASCII tabele.
Po dvije cifre su smjetene u jedan bajt.
Veina modernih raunara koristi pakovane BCD podatke, koji se uvjek smjetaju u rijei
(paran broj bajta). Npr. u 32 bita imamo 4 bajta ili 8 etvorki (nibble). Pakovani BCD koristie
7 etvorki za cifre, i jednu etvorku za predznak broja. Kao pozitivan (+) predznak broja koristi
se (1100)2 odnosno (C)16, a za negativan predznak (1101)2 odnosno (D)16. Prethodno opisani
broj (127)10 u pakovanom BCD formatu (16 bita) bi bio predstavljen kao:
1
2
7
+
0001 0010 0111 1100
Treba primjetiti da odvajanjem jedne etvorke za predznak takoe gubimo dio prostora za
4
predtavljanje brojeva. Takoe, kako je 2 = 16, a BCD reprezentacijom predstavljamo samo
10 cifara, ni ovo rjeenje u smislu potronje memorije nije previe efikasno. Ipak, ono se i
danas koristi, uglavnom u raunovodstvenim sistemima.
Za komplementiranje BCD brojeva koriste se deveti i deseti komplement. Deveti
komplement broja (127)10 dobijamo kada ga oduzmemo od 9999, kao u slijedeem primjeru:
9999
-0127
----9872
3
Extended Binary Coded Decimal Interchange Code (EBCDIC) je IBM-ov 8-bitni standard, slian ASCII tabeli, razvijan 1963 i
1964 godine, kao pokuaj da se zamjeni u to doba 7-bitna ASCII tabela. Izgovara se Eb-Si-Dik.

22

Deseti komplement se dobija kada na deveti komplement dodamo broj 1.

2.2.4.

Realni brojevi

Do sada smo govorili samo o moguim nainima predstavljanja oznaenih i neoznaenih


cijelih brojeva. Velika snaga modernih kompjutera zasniva se i na njihovoj mogunosti obrade
realnih brojeva. Zbog toga emo ovdje obraditi neke osnovne naine njihovog predstavljanja.

Brojevi u fiksnim zarezu ( fixed point numbers)


Ako razmiljamo o mogunostima na koji nain neki raunar moe da predstavi realan broj,
prvo pitanje koje moramo postaviti je na koji nain on moe da prikae decimalnu taku (ili
zarez, po evropskoj notaciji). U sistemu sa fiksnom decimalnom takom (ili u fiksnom
zarezu, fixed point numbers), za predstavljanje bilo kog broja imamo na raspolaganju uvjek
isti, unaprijed odreen broj cifara, a decimalna taka je uvjek na istom mjestu. Primjeri
ovakvih brojeva su:
(2.12)10,
(0.31)10,
(5.55)10.
U prethodnim primjerima, svaki broj je imao tano 3 cifre, a decimalna taka je bila smjetena
nakon druge cifre s desne strane. Ako posmatramo bajt kao sekvencu bita, takoe bi mogli
usvojiti neku vrstu konvencije ili dogovora npr, decimalna taka e se nalaziti iza etvrtog
bita. Npr, moemo prikazati brojeve:
(1111 1111)2 = (15.15)10
(1100 1011)2 = (12.11)10
(0001 0001)2 = (1.1)10
Vana razlika izmeu predstavljanja binarnih brojeva sa fiksnim zarezom na papiru i u
raunaru je u tome da u raunaru decimalnu taku nigdje ne zapisujemo. Kako smo rekli,
koristi se neka vrsta konvencije ili dogovora prema kojoj projektanti raunara ili programeri
znaju gdje se nalazi decimalna taka.
Meutim, ovakav nain predstavljanja relnih brojeva nije previe precizan, i moe da prikae
samo ogranien rang realnih brojeva sa malom preciznou.

Rang i preciznost brojeva sa fiksnim zarezom


Predstavlljanje podataka u fiksnom zarezu karakterie rang brojeva koje mogu da prikau i
njihova preciznost.
Rang je razlika izmeu najveeg i najmanjeg broja koji je mogue prikazati.
Preciznost je udaljenost izmeu susjednih brojeva na brojnoj pravoj.
Ako posmatramo prethodno prikazane decimalne brojeve u fiksnom zarezu koji su koristili 3
cifre i decimalnu taku nakon druge cifre s desne strane, pomou takve konvencije bi mogli
prikazati brojeve u rangu [0.00-9.99]. S druge strane, preciznost ovako prikazanih brojeva
bila bi 0.01, jer bi to bila razlika izmeu bilo koja dva susjedna broja (npr. 5.02 - 5.01 = 0.01).
Potrebno je uoiti i ta bi se desilo ako bi usvojili neke drugaije konvencije. Ako bi decimalnu
taku pomjerili skroz u desno, mogli bi prikazati brojeve u neto veem rangu [ 000. , 999. ],
dok bi izgubili na preciznosti ona bi u datom sluaju iznosila 1.0. Ako bi usvojili konvenciju
kojom bi na primjer, decimalnu taku pomakli skroz u lijevu stranu, mogli bi da prikaemo
4
brojeve u mnogo manjem rangu [ .000 , .999 ] , dok bi poveali preciznost na 0.001. U oba
sluaja, mogli bi da prikaemo po 1000 razliitih brojeva, bez obzira da li se radi o brojevima
izmeu 000-999 ili .000-.999.
Bitno je istai da rang ne mora poinjati ni zavravati lijepim i loginim brojevima. Rang moe
da bude i [-50, +49] ili [-90, 0].
Rang i preciznost su veoma vani pojmovi vezani za arhitekturu raunara jer su oba
ograniena brojem bita koji su raspoloivi u datoj arhitekturi. Vidjeli smo da smanjenjem ranga
moemo poveati preciznost i obrnuto smanjenjem preciznosti moemo poveati rang
broja. Zbog toga ovi pojmovi moraju biti jasni ne samo projektantima raunara, ve i
4

Obratite panju broj 0.999 se esto u raunarskoj tehnici pie kao .999.

23

programerima i obinim korisnicima koji esto pokuavaju da prenesu neogranieno velike


brojeve iz realnog svijeta u raunar koji uvjek ima ograniene resurse.

Brojevi u pokretnom zarezu (floating point numbers)


Kako smo vidjeli, brojevi u fiksnom zarezu uvjek imaju decimalnu taku na istom mjestu. Oni
takoe imaju i fiksni broj cifara lijevo i desno od decimalne take. Da bi prikazali vrlo veliki ili
vrlo mali broj u fiksnom zarezu potrebno je mnogo cifara. Npr. da bi prikazali jednu milijardu ili
9
10 , treba nam 10 decimalnih cifara ili 30 binarnih.
1,000,000,000 = 11 1011 1001 1010 1100 1010 0000 0000
9

Da bi prikazali vrlo mali broj, kao 1/10 , ponovo nam treba mnogo cifara u ovom sluaju
tano 9 decimalnih ali i oko 50 binarnih cifara da bi tek priblino precizno predstavili traeni
broj.
0.000000001 = 0.000000000000000000000000000001000100101110000010111
Dakle, da bi prikazali ovakve brojeve u fiksnom zarezu koristei binarni brojni sistem, morali bi
odvojiti 30 binarnih cifara za cijele brojeve, i jo 50 binarnih cifara za razlomljeni dio broja.
Meutim, u praksi se tokom kalkulacija pojavljuju jo mnogo vei ili mnogo manji brojevi od
ovdje prikazanih. Hardver koji bi morao da uva i obrauje brojeve koji bi zahtjevali jo vei
rang i preciznost od ovdje prikazanih bio bi vrlo komplikovan, skup i spor. Praksa je takoe
pokazala da pri manipulaciji vrlo velikim brojevima, obino nije istovremeno potrebna velika
preciznost, odnosno nije potreban vei broj decimala u razlomljenom dijelu podatka. Pri
manipulaciji jako malim brojevima, u praksi se rijetko javljaju veliki cjelobrojni dijelovi podatka.
Zbog toga se tokom razvoja raunara pristupilo neto drugaijem konceptu, koji se naziva
floating point (plivajua taka ili pokretni zarez), a koja je nastala iz naune notacije.
Pomou ovog naina predstavljanja brojeva, mogue je prikazati ili vrlo veliki broj sa manjom
preciznou ili mali broj sa vrlo velikom preciznou, kao npr.
1,000,000,000.7 veliki broj, mala preciznost ili
0.23456701232 mali broj, velika preciznost
Podsjeanje: Nauna (scientific) notacija ili eksponencijalna notacija je nain pisanja brojeva
koji omoguava pisanje brojeva koji su ili preveliki ili premali da bi mogli biti napisani u
standardnoj decimalnoj notaciji. Po ovoj notaciji, brojevi se piu na slijedei nain:
a*10

gdje je:
a koeficient odnosno mantisa, a
b eksponent
Ova notacija omoguava nam krae pisanje vrlo velikih ili vrlo malih brojeva:
53

2.2*10

-30

2.13*10

Poto je u raznim kompjuterskim programima iz ranog doba bilo teko napisati eksponent kao
superskript, razvijena je tzv. E notacija
2.2E+53
2.13E-30
Primjetite da ovaj nain oznaavanja nema veze sa matematikom e konstantom (Ojlerov
broj), ve da je vezan za pojam Eksponent.

24

Floating point reprezentacija omoguava predstavljanje veoma velikog ranga brojeva pomou
malog broja cifara, zahvaljujui tome to odvaja cifre koje se koriste za preciznost od cifara
koje se koriste za rang broja. Ako bi Avogadrovu konstantu predstavili koristei ovu notaciju u
bazi 10, imali bi:
23

+6.023*10

23

Ovdje je rang predstavljen pomou eksponenta 10 , dok je preciznost data ciframa broja u
fiksnom zarezu. Dio koji je prikazan brojem u fiksnom zarezu, esto se naziva i mantisa ili
signifikanta. Dakle, moemo rei da brojeve u pokretnom zarezu karakterie trojka
predznak, eksponent i signifikanta.
Rang ovako prikazanog broja prvenstveno je odreen brojem cifara u eksponentu (u primjeru
exponent ima dvije cifre - 23) i bazom eksponenta (u primjeru je baza 10). Preciznost na ovaj
nain prikazanog broja zavisi najprije od broja cifara mantise (u primjeru su to 4 cifre) ali i od
veliine eksponenta.
Slijedea slika prikazuje kako bi trojka predznak, eksponent, mantisa (signifikanta) mogla biti
formatirana u raunaru:

Ako su cifre uvjek pakovane na prikazani nain (prvo znak, pa eksponent i signifikanta na
kraju), onda ovakav nain pakovanja olakava poreenje brojeva. Ovdje se ponovo moramo
podsjetiti da nema potrebe da se za decimalnu taku odvaja poseban prostor za njeno
skladitenje, dok god se ona nalazi na istom, unaprijed dogovorenom mjestu.

Normalizacija i sakriveni bit


Potencijalni problem pri predstavljanju brojeva u pokretnom zarezu je injenica da jedan isti
broj moemo predstaviti na vie naina.
Primjer:
4

-2

37.145 = .003714510 = 3714.510 .


Ovakav nain predstavljanja brojeva naziva se nenormalizovana forma. U normalizovanoj
formi, decimalna taka se pomjera u lijevo sve dok ne doe do lijeve nenulte cifre, dok se
istovremeno vri adekvatno podeavanje eksponenta. Ovaj proces je prikazan u slijedeim
primjerima:
Primjer 1:
3584.1
3584.1
358.41
35.841
3.5841

=
x
x
x
x

10 =
1
10 =
2
10 =
3
10
5

Dakle, zadnji prikazani broj je u normalizovanoj formi .


Primjer 2:
Normalizovati brojeve 300, 4000 i 0.000 000 0061
300
= 3 x 102
4000
= 4 x 103
0.000 000 0061 = 6.1 x 10-9
5 720 000 000 = 5.72 x 109

5
Treba napomenuti da odreena grupa autora normalizaciji u sluaju dekadnog brojnog sistema pristupa neto drugaije
(0.35841), dok u sluaju binarnog brojnog sistema koriste ovdje prikazan pristup.

25

Do sada smo o normalizaciju posmatrali samo u svjetlu naune (scientific) notacije u


dekadnom brojnom sistemu. Ali kako raunari koriste binarni brojni sistem, mogli bi pokuati
da predstavimo normalizovane mantise iz prethodnog primjera kao binarne brojeve.
Pogledajmo slijedei primjer:
Primjer 3:
= (1 .1)2-norm
(3)10 = (11)2
(4)10 = (100)2
= (1.00)2-norm
(5.72)10 = (101.10111)2 = (1.0110111)2-norm
Vidimo da kada mantisu nekog normalizovanog broja prikaemo binarno, na prvoj poziciji
lijevo uvjek imamo cifru 1. Ininjeri i nauni radnici su davno primjetili ovu injenicu i usvojili
konvenciju po kojoj nema potrebe skladititi ovaj bit. On se prije pakovanja podatka za
skladitenje odbaci, a restaurira se prilikom raspakivanja podatka koji treba da uestvuje u
nekim aritmetikim operacijama. Ovaj bit se jo naziva nevidljivi ili sakriveni (hidden) bit ili
sakrivena jedinica. Ovaj koncept omoguava da se u mantisi moe drati jo jedan, dodatni
bit.
Primjer 4:
Ako je signifikanta (mantisa) nakon normalizacije imala oblik slijedee sekvence bita
10110
kada podatak budemo memorisali, signifikanta e biti snimljena u obliku
0110
Kada budemo vrili izraunavanje, o ovom bitu moramo voditi rauna. Dakle prije neke
raunske operacije, moramo restaurirati originalni podatak:
10110

IEEE 754-2008 standard za predstavljanje brojeva u pokretnom zarezu


IEEE 754-2008 je danas najraireniji standard za predstavljanje brojeva u pokretnom zarezu
koji je prisutan u mnogim hadverskim i softverskim implementacijama. Ovaj standard nastao
je na osnovama IEEE-754-1985 standarda, kao njegovo proirenje. Prvi standard iz 1985.
godine vladao je gotovo 23 godine. Kreiran je od strane IEEE instituta (Institute of Electrical
and Electronics Engineers) u elji da unificira nain predstavljanja realnih brojeva, jer su u to
doba razliiti proizvoai koristili razliite ideje, to je oteavalo razmjenu podataka i
programiranje. Standard iz 1985. godine je definisao dva tipa podataka single i double,
odnosno jednostruku i dvostruku preciznost. Oba ova formata koriste ranije predstavljene
koncepte: trojku (predznak, eksponent, signifikanta) kao i nevidljivi bit i normalizaciju.
Jednostruka preciznost ili single (koja se u standardu iz 2008. naziva binary32) je 32-bitni
broj sa bazom 2. Karakteriu ga:

Bit predznaka (1 bit): 0 za pozitivne, 1 za negativne brojeve


Eksponent (8 bita u Excess127 formatu) i
Signifikanta (23+1 bita).
Nevidljivi bit je nula samo ako su svi biti eksponenta nule.

Kada je u pitanju jednostruka preciznost, kompletan broj u decimalnom formatu dobijamo


pomou slijedee formule:

n = (1) S x(m) x 2 E 127

(7)

Gdje je:
S predznak,
m signifikanta (mantisa) data kao decimalni broj,
E Eksponent dat kao decimalni broj.

26

Primjer: Ako se u memoriji nalazi podatak 0x3E200000, prikazati taj podatak kao single i
izraunati njegovu decimalnu vrijednost.
Binarna slika ovog podatka je:
(3E200000)16 = (0011 1110 0010 0000 0000 0000 0000 0000)2
Sada emo podatak ralaniti prema prethodnoj slici na triplet (predznak, eksponent,
signifikanta):
1 bit

8 bita

(0)

(0111 1100)

23 bita
(010 0000 0000 0000 0000 0000)

Signifikanti dodajemo sakriveni bit:


(0)

(0111 1100)

(1.010 0000 0000 0000 0000 0000)

Sada izraunavamo vrijednost broja (predznak) (eksponent) (mantisa):

(0)

(124)10

(1.25)10

(+)

(124-127)10

(1.25)10

Eksponent smo izraunali koristei Excess127 notaciju, oduzimanjem pomaka 127 od broja.
Koristei formulu (7), imamo:

n = (1) 0 x(1.25) x 2124 127 = 1x (1.25) x 23 = 1x(1.25) x 0.125 = 0.15625


Signifikantu (mantisu) koja je data kao binarni broj moemo pretvoriti u decimalni broj tako, da
joj najprije dodamo nevidljivi bit, ali bez decimalne take:
(1010 0000 0000 0000 0000 0000)2
Zatim ovaj broj pretvorimo u decimalni
(1010 0000 0000 0000 0000 0000)2=(10485760)10
23

i podjelimo sa 2 :
M = 10485760 / 223 = 1.25
Dvostruka preciznost ili double (koja se u standardu iz 2008. naziva binary64) je 64-bitni
broj sa bazom 2. Karakteriu ga:

Bit predznaka (1 bit): 0 za pozitivne, 1 za negativne brojeve


Eksponent (11 bita u Excess1023 formatu) i
Signifikanta (52+1 bita).
Nevidljivi bit je nula samo ako su svi biti eksponenta nule.

Kod dvostruke preciznosti, kompletan broj u decimalnom formatu dobijamo pomou slijedee
formule:

n = (1) S x(m) x 2 E 1023

(8)

Gdje je:
S predznak,

27

m signifikanta (mantisa) data kao decimalni broj,


E Eksponent dat kao decimalni broj.
Primjer: Dat je podatak (0x3fd5 5555 5555 5555). Prikazati taj podatak kao double i
izraunati njegovu decimalnu vrijednost.
Binarna slika ovog podatka je:

(3fd5 5555 5555 5555)16 =


(0011 1111 1101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101)2

Sada emo podatak ralaniti na triplet (predznak, eksponent, signifikanta):

1 bit
(0)

11 bita

52 bita

(01111111101) (0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101)

Signifikanti dodajemo sakriveni bit:

(0)
(01111111101) (10101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101
0101)

Najprije izraunamo vrijednost mantise u kao hex. broj (jo ne u decimalnom obliku, da
zbog dijeljenja ne izgubimo preciznost)

(10101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 01010101)2 =
(0x15555555555555)16

Sada izraunavamo vrijednost broja:

-2

-52

x (0x15555555555555 x 2
-54

= 2

-54

= 2

x 0x15555555555555 =
x 6004799503160661 = 0.33333.

Standard IEEE 754-2008 dodaje i neke nove tipove podataka u odnosu na stari standard iz
1985. godine. Potreba za novim tipom podataka pojavila se kod proizvoaa grafikih kartica
2002. godine. Tada poinju da se javljaju brojevi u pokretnom zarezu duine svega dva bajta.
Ovaj format podataka tada je dobio ime half precision floating point, a po standardu iz 2008.
godine nazvan je binary16.
Half precision floating point ili binary16 format je 16-bitni broj sa bazom 2, a karakteriu
ga:

28

Bit predznaka (1 bit): 0 za pozitivne, 1 za negativne brojeve


Eksponent (5 bita u Excess15 formatu) i
Signifikanta (10+1 bita).
Nevidljivi bit je nula samo ako su svi biti eksponenta nule.

Pri predstavljanju brojeva u binary16 formatu, decimalni broj dobijamo pomou slijedee
formule:

n = (1) S x(m) x 2 E 15

(9)

Novi strandard definisao je jo jedan floating point format, koji u memoriji zauzima ak 16
bajta.
Quadruple precision ili binary128 format je 128-bitni broj sa bazom 2, a karakteriu ga:

Bit predznaka (1 bit): 0 za pozitivne, 1 za negativne brojeve


Eksponent (15 bita u Excess 16383 formatu) i
Signifikanta (112+1 bita).
Nevidljivi bit je nula samo ako su svi biti eksponenta nule.

Za predstavljanja brojeva u binary128 formatu, moemo koristiti formulu:

n = (1) S x(m) x 2 E 16383

(10)

Treba jo rei i da su se tokom razvoja razliitih arhitektura raunara javljali razliiti drugi
naini predstavljanja brojeva u pokretnom zarezu, poput extended notacije, razliitih IBM-ovih
i Cray-ovih formata, te novijih decimalXX (XX je 32, 64 ili 128) formata, koji se koriste za
raunovodstvene aplikacije.

Ogranienja brojeva u pokretnom zarezu


Ako posmatramo bilo koju prethodno prikazanu notaciju, moemo primjetiti da brojevi u
pokretnom zarezu imaju ogranien broj bita. Ovo ogranienje navodi nas da malo razmislimo
o tome kolika je greka prilikom predstavljanja ovih brojeva. Kada kaemo greka, mislimo
na razmak izmeu susjednih brojeva u pokretnom zarezu. Na realnoj pravoj, floating-point
brojevi nisu uniformno rasporeeni, njihova gustina je razliita u razliitim takama ove prave.
Jo preciznije, izmeu susjednih stepena od 2 lei jednak broj floating-point vrijednosti (od 24 i od 65536-131072 imamo isti broj vrijednosti). Da bi ovo ilustrovali, posmatraemo
hipotetiki, normalizovani sistem brojeva u pokretnom zarezu, koji ima:

Normalizovanu (nevidljivi bit je uvjek 1) signifikantu duine 2 bita,


Dvo-bitni eksponent u Excess2 formatu,
Bit predznaka.
Broj nula (0) emo predstaviti kao slijedei niz binarnih cifara (00000)2.

Mantisa M, nokon to joj dodamo nevidljivi bit, moe uzimati pozitivne vrijednosti od (1.00)2(1.11)2, odnosno:
(1.00)2 = (1)10
(1.01)2 = (1.25)10
(1.10)2 = (1.50)10
(1.11)2 = (1.75)10
Mogue binarne vrijednosti eksponenta su (00)2-(11)2, to bi prema Excess2 formatu iznosilo
od (E= 0-2 = -2)10 do (E= 3-2 = 1)10. Dakle, eksponent E moe uzimati vrijednosti
-2 <= E <= 1;
Ako bi izraunali samo dio pozitivnih brojeva i preslikali ih na negativni dio prave, dobili bi vrlo
interesantne rezultate, prikazane na slijedeoj slici.

29

1 4
=
4 16
5 1 5
1.25 2 2 = =
4 4 16
6 1 6
2
1 .5 2 = =
4 4 16
...
...
7 8 56 7
1.75 21 = =
=
4 4 16 2

1 2 2 =

Ako posmatramo razliite eksponente, vidimo da su pozitivni brojevi koji su umnoci


eksponenta (-2) - (4/16, 5/16, 6/16 i 7/16) najgue rasporeeni, dok su umnoci npr.
eksponenta (0) - (4/4, 5/4, 6/4 i 7/4) mnogo rjee rasporeeni, ali ih u oba sluaja ima isti broj
po etiri umnoka (broja) za svaki eksponent. Situacija je ista i za negativne brojeve.
Slika takoe prikazuje relativno veliki procjep (gap) izmeu nule i prvog broja kojeg je
mogue predstaviti u ovom formatu. Kako je prvi pozitivan broj kojeg moemo da predstavimo
u naem format 4/16, procjep se kree od 0 do 4/16 na pozitivnu stranu. Najmanji pozitivan
broj razliit od nule, u bilo kom formatu, nastaje kada i eksponent i mantisa imaju namanje
mogue vrijednosti. U naem sluaju, najmanji eksponent je -2, a najmanja normalizovana
mantisa je 1. Ovaj procjep (gap) nastaje kao posljedica normalizacije mantise. Svi
normalizovani floating point sistemi imaju procjep koji je smjeten u blizini nule, u kom nije
mogue predstaviti brojeve.
Ako bi u naem hipotetikom sistemu morali da oduzmemo
5/16 4/16 = 1/16,
rezultat bi pao u procjep u kom nismo u mogunosti da prikazujemo brojeve. Ovakvi rezultati
se mogu dobiti i u stvarnim floating point sistemima, kao rezultat neke aritmetike operacije.
Ovakav rezultat se naziva underflow (prekoraenje uslijed suvie malog rezultata).
Ako bi u naem hipotetikom sistemu morali da saberemo
7/2 + 1/2 = 8/2,
ponovo bi doli u situaciju da takav broj ne moemo da prikaemo. I ova vrsta ogranienja
postoji i u stvarnim floating point sistemima, a naziva se overflow (prekoraenje uslijed
suvie velikog rezultata).

Denormalizacija (subnormalni brojevi)


Vidjeli smo da konaan broj bita koji imamo na raspolaganju za predstavljanje brojeva utie
na gustinu i raspored taaka na brojnoj pravoj kao i na prekoraenja uslijed prevelikog i
premalog rezultata (overflow i underflow). Ako imamo na raspolaganju fiksan broj bita koji je
npr. odreen standardom, ne moemo uticati na problem predstavljanja prevelikih brojeva.
Meutim, procjep koji se javlja u blizini nule je rezultat normalizacije, odnosno postojanja
nevidljivog bita u mantisi koji je uvjek postavljen na 1, iza kojeg se nalazi decimalna taka.
Najmanji pozitivan broj kojeg moemo da predstavimo u normalizovanom bin. sistemu je:

n = 1.0 b n

(11)

Gdje je b baza 2, a n eksponent.


Ako bi denormalizovali mantisu, tada nevidljivi bit vie ne bi bio 1, ve nula. Ovo bi otvorilo put
za predstavljanje mnogo veeg ranga vrlo malih brojeva i popunjavanje procjepa (gap) koji se
javlja u blizini nule.
Denormalizovani (subnormalni) brojevi su dakle svi oni koji popunjavaju underflow procjep
u okolini nule u floating point sistemima.
Iskoristiemo prethodno prikazani hipotetiki sistem brojeva u pokretnom zarezu, kojega
emo denormalizovati. Sada bi prva cifra ovakvog sistema bila nula (0), pa bi mogli prikazati
npr slijedee brojeve:

30

0.0 22 = 0
1 1 1
=
4 4 16
2 1 2
= =
4 4 16

0.25 22 =
0.5 22
...
...

Dakle, upotrebom subnormalnih brojeva mogue je popuniti procjep koji se javlja u veini
normalizovanih floating point sistema. Nedostatak ovakvog pristupa je mogunost
pojavljivanja vie razliitih prezentacija istog broja (kao npr. dvije nule).
Iako ideja upotrebe subnormalih brojeva postoji jo od 1980. godine, od numerikog
koprocesora 8087, ona do danas nije u potpunosti standardizovana. Razliiti proizvoai
koriste razliite pristupe rjeavanju ovog problema. Neki procesori izraunavaju ovakve
brojeve hardverski, na isti nain kao i obine brojeve. Drugi procesori se pri izraunavanju
ovih brojeva koriste uslugama sistemskog softvera, a ponekad ak i aplikativni softver
preuzima ulogu raunanja subnormalnih brojeva na sebe. Kada npr. intelov procesor generie
underflow exception (posebna vrsta poruke o greci), aplikacija poput MatLab-a moe na
sebe preuzeti izraunavanje subnormalnih brojeva.

Specijalni sluajevi brojeva u pokretnom zarezu


Pomou nekog floating point sistema moemo predstaviti 5 osnovnih tipova brojeva.

Nenulte, normalizovane brojeve smo ve opisali u prethodnim poglavljima


Takozvana ista nula predstavlja se svim nulama u polju eksponenta i mantise. Kako
predznak moe biti pozitivan i negativan, imamo dvije reprezentacije za nulu: +0 i -0.
Beskonanost (Infinity) se u ovom sistemu predstavlja na nain da su svi biti
eksponenta jedinice, a svi biti signifikante nule. Ovakvi brojevi su pogodni za
prikazivanje rezultata npr. dijeljenja nekog broja sa nulom.
NaN (Not A Number) brojevi nastaju kada rezultat nije definisan npr. dijeljenjem nule
sa nulom ili dijeljenjem beskonano sa beskonano. NaN broj se predstavlja pomou
eksponenta u kom su sve jedinice i mantise koja je razliita od nule.
Subnormalni brojevi, koji popunjavaju procjep (gap) koji postoji u blizini nule.

Primjeri brojeva u pokretnom zarezu prikazanih u jednostrukoj preciznosti (single ili binary32):
Znak

Eksponent (e)

Mantisa
(M)
XX..XX

Vrijednost

00..01
:
11..10

0
1

00..00
00..00

00..00
00..00

ista nula (pozitivna, +0)


ista nula (negativna, -0)

0
1

11..11
11..11

00..00
00..00

Plus beskonanost (+)


Minus beskonanost (-)

11..11

11..11

00..01
:
01..11
10..00
:
11..11

Signalni NaN
(prvi bit mantise - 0)
SnaN
Tihi (Quiet) NaN
(prvi bit mantise - 1)
QNaN

00..00

00..01
:

Pozitivan subnormalni broj


(-127+1)
0.M 2

Pozitivan normalizovan broj


(e-127)
1.M 2

31

11..11

32

2.3. Binarna aritmetika


U prethodnom poglavlju smo istraivali neke od naina na koji brojevi mogu biti predstavljeni
u raunaru, ali smo tek dotakli problematiku aritmetikih operacija koje se mogu izvoditi nad
tim brojevima. U ovom poglavlju emo obraditi etiri osnovne aritmetike operacije
sabiranje, oduzimanje, mnoenje i dijeljenje. Na poetku emo vidjeti kako se ove operacije
izvode nad cijelim brojevima, a zatim emo obraditi i brojeve u pokretnom zarezu.

Binarno oduzimanje
Binarno oduzimanje se obavlja nain slian runom oduzimanju decimalnih brojeva. Dva
binarna broja A i B se oduzimaju sa desna u lijevo dok ne dobijemo rezultat i eventualnu
pozajmicu. Kako biti A i B mogu uzeti samo vrijednosti 0 i 1, mogu se javiti slijedee
kombinacije:
A

0
0
1
1

0
1
0
1

0
1
1
0

Pozajmica
(borrow)
(1)

Pogledaemo primjer oduzimanja binarnog broja (10)2 od (101)2:


1
1010101
- 111001
-------100

1
1
1010101
- 111001
-------100

1
01
1010101
- 111001
-------1100

2a

2b

3a
0
1010101
- 111001
-------1100

1
10
1010101
- 111001
-------1100
1
11
010
1010101
- 111001
-------11100

1
11
010
1010101
- 111001
-------011100

1
11
010
1010101
-0111001
-------0011100

3b

3c

Oduzimanje binarnih brojeva svodi se na upisivanje vrijednosti iz tabele, osim u sluaju (0-1),
kada se javlja prenos. Prenos je opisan u koracima 2a i 2b. U koraku 2a, najprije prectramo
nulu od koje oduzimamo, a zatim od veeg broja pozajmimo bit sa liijeve strane i predstavimo
ga pomou dvije jedinice.
U koraku 2b, koji je odvojen zbog jednostavnosti, ponitiemo jednu od novih jedinica i
prvobitnu jedinicu, tako da nam ostaje 1.

33

U koraku 3a, ponovo treba oduzeti (0-1), ali sada je na lijevoj strani nula od koje ne moemo
posuivati. Zbog toga, najprije posuujemo iz njene susjedne kolone (korak 3b), a zatim
koristimo jednu od ve posuenih jedinica (korak 3c). U koraku 3c, ponitavanje jedinica
neemo prikazivati zbog jednostavnosti. Korake 4 i 5 ne treba posebno opisivati jer se ponovo
radi o prostom preuzimanju vrijednosti iz tablica. Prikazana metoda naziva se metoda
pozajmice (borrow). Kako vidimo, ovu metodu bi bilo prilino teko hardverski
implementirati, pa emo u slijedeem poglavlju vidjeti jo jednu metodu za binarno
oduzimanje.

Prenos i prekoraenje u drugom komplementu


Dananji raunari uglavnom koriste drugi komplement za predstavljanje cijelih brojeva. Kako
smo vidjeli, iako na brojnoj pravoj postoji beskonano mnogo realnih brojeva, raunari mogu
da prikau samo ogranien skup brojeva. Ako bi se npr. ograniili na 3 bita, pomou drugog
komplementa bi mogli da predstavimo ukupno 8 razliitih vrijednosti, kao na slijedeoj slici:
Sabiranje

0
000
-1

111

001

-2 110

-3

010 2

101

011

100
-4

Ako bi poevi od nule (000)2, uveavali binarni broj za po jedan, dobili bi prikazani niz
binarnih brojeva (000, 001, 010, .. ,111)2. Binarno sabiranje ve ranije prikazano, i samo po
sebi je trivijalno. Na prethodnoj slici treba obratiti panju na decimalnu reprezentaciju
navedenih brojeva. Kako smo usvojili konvenciju prema kojoj emo brojeve predstavljati
pomou drugog komplementa, primjeujemo postojanje dva granina sluaja vezana za
promjenu predznaka.
Zahvaljujui drugom komplementu, uveavanjem broja (011)2 ili (3)10, neemo dobiti (+4)10,
ve prelazimo u negativne brojeve (-4)10.
Drugi granini sluaj je jo zanimljiviji. Inkrementiranjem broja (111)2 dobijamo nulu, ali uz
pojavu jo jednog bita, koji se naziva bit prenosa (carry), koji ne moemo smjestiti u na trobitni sistem:
111
1
-----(1)000
Za prikazani brojni sistem kaemo da je modularan. Modularna aritmetika je pojam koji
koristimo svaki put kada pogledamo na sat. Na primjer, ako je sada 23h, a neko nas pita
koliko e sati biti nakon 3 asa, kao iz topa e dobiti odgovor 2 sata ujutro, iako je 23+3
razliito od 2.
Dakle, pri sabiranju i oduzimanju binarnih brojeva moramo voditi rauna i o njihovom rangu i o
usvojenoj konvenciji za predstavljanje negativnih brojeva (u primjeru drugi komplement).
Ovdje emo obraditi jo jednu metodu za binarno oduzimanje, koja koristi drugi komplement.
Ako je npr. potrebno oduzeti broj 2 od broja 5, najprije emo komplementirati broj 2, a zatim
tako dobijeni negativni broj (-2) sabrati sa brojem 5. Ova metoda za binarno oduzimanje
naziva se metoda komplementiranja.

34

Primjer: Izvriti binarno oduzimanje (5)10-(2)10. Za predstavljanje brojeva na raspolaganju


imamo 8 bita, a za prikazivanje negativnih brojeva koristiemo drugi komplement.
Najprije emo komplementirati broj 2, da bi dobili negativnu vrijednost:
2 0000 0010
!2 1111 1101
--------+1
-2= 1111 1110
Zatim emo sabrati 5 + (-2)
5
0000 0101
(-2) 1111 1110
+ --------(1) 0000 0011
U ovom sluaju emo odbaciti bit prenosa prikazan u okviru zagrada.
Iz prethodna dva primjera vidjeli smo da se bit prenosa moe javiti kada sabiramo pozitivan i
negativan broj. Meutim, da li na ovaj nain pravimo greku? ta bi se desilo ako bi morali da
saberemo brojeve (50)10 i (80)10 koristei osmobitnu notaciju?
Primjer: Izvriti binarno sabiranje brojeva (50)10 i (80)10. Za predstavljanje brojeva na
raspolaganju imamo 8 bita, a za prikazivanje negativnih brojeva koristimo drugi komplement.
0011 0010
+0101 0000
--------1000 0010

(50)10
(80)10
(-126)10

Da se radilo o neoznaenim (unsigned) brojevima, dobijeni broj (1000 0010)2 predstavljao bi


taan rezultat (130)10. Meutim, kako se radi o oznaenim brojevima u drugom komplementu,
rezultat koji smo dobili je broj (-126)2. Kada sabiramo dva broja koja imaju velike mantise i isti
predznak, moe doi do greke uslijed prekoraenja (overflow) ako je rezultat preveliki da
bi stao u broj bita koji koristimo u datoj reprezentaciji. Ova greka se moe javiti i kod
sabiranja negativnih brojeva. Generalno, prekoraenje se javlja kada magnituda (dimenzija)
rezultata nadvisi rang koji je definisan brojem bita podatka. Postoje dva jednostavna pravila
koja nam pomau da utvrdimo da li je dolo do greke uslijed prekoraenja:
1. Ako sabiramo dva broja sa istim predznakom, moe doi do prekoraenja;
2. Ako sabiramo brojeve razliitih predznaka, rezultat e uvjek manji od apsolutne
vrijednosti bilo kog od ta dva broja, pa nee doi do prekoraenja.

Binarno mnoenje
Binarno mnoenje se moe realizovati viestrukim ponavljanjem operacije binarnog sabiranja,
slino operaciji decimalnog mnoenja. U slijedeem primjeru prikazano je binarno mnoenje
brojeva (1111)2 i (1010)2:

35

Najprije mnoimo gornji broj (mnoenik) sa desnom cifrom donjeg broja (mnoioca). Kako je
ta cifra nula, a bilo koji broj pomnoen sa nulom je opet nula, u polje rezultata upisujemo 4
nule.
Sada mnoimo gornji broj sa drugom cifrom mnoioca. Kako je ovo druga cifra mnoioca, u
polje rezultata upisujemo jednu nulu. Druga cifra mnoioca je 1, a svaki broj pomnoen sa 1
je jednak samom sebi, pa moemo prepisati gornji broj.
U koracima 3 i 4 ponavljamo navedenu proceduru.

Binarno dijeljenje
Binarno dijeljenje se izvodi na slian nain kao i dugo dijeljenje
Pogledaemo primjer dijeljenja brojeva (100001)2 sa (110)2.
100001 : 110 = 1
-110
---10

100001 : 110 = 10
-110
---100

100001 : 110 = 101


-110
---1001
-110
---11

100001.0 : 110 = 101.


-110
---1001
-110
---11
100001.0 : 110 = 101.1
-110
---1001
-110
---110
-110
---0

decimalnih brojeva.

U prvom koraku u traimo najmanji sadralac broja (110)2 u broju (100001)2. Najmanji
sadralac je broj (1000)2. Navedeni broj se u njemu uvjek sadri jednom (jer se radi o
binarnom brojnom sistemu), a ostatak dobijamo oduzimanjem djelioca od dijeljenika.
U drugom koraku prepisujemo slijedeu cifru dijeljenika u ostatak. Kako je dobijeni broj (100)2
manji od (110)2, u polje rezultata upisujemo nulu.
6

Dugo dijeljenje je naziv za runo (koritenjem papira i olovke) dijeljenje brojeva koje smo svi nauili u osnovnoj koli.

36

U treem koraku ponovo prepisujemo slijedeu cifru dijeljenika u ostatak. Dobijeni broj
(1001)2 je vei ili jednak od (110)2, pa u rezultat upisujemo jedinicu, a novi ostatak raunamo
oduzimanjem djelioca od dijeljenika.
Iako smo potroili cijeli dio dijeljenika, u etvrtom koraku je vidljivo da i dalje postoji ostatak
(11)2. Da bi dovrili operaciju dijeljenja, u polju rezultata dopisujemo radiks taku. Radiks
taku i dodatnu nulu upisujemo i u dijeljenik.
U petom koraku, prepisujemo nulu iz dijeljenika u ostatak. Kako je ostatak (110)2 vei ili
jednak od djelioca (110)2, u polje rezultata upisujemo jedinicu, dok ostatak ranije pomenutim
oduzimanjem svodimo na nulu.

Sabiranje i oduzimanje u pokretnom zarezu


Aritmetika u pokretnom zarezu se razlikuje od cjelobrojne zbog injenice da je potrebno
najprije uskladiti eksponente i mantise brojeva koji ulaze u aritmetike operacije. Ako bi
posmatrali sabiranje brojeva 1.1E2 i 2.2E3 u naunoj notaciji u bazi 10, prije nego to
pristupimo sabiranju mantisa, morali bi izjednaiti eksponente, jer je
1.1E2 = 110;
2.2E3 = 2200
Prosto sabiranje mantisa bi oito dalo pogrean rezultat, pa zbog toga moramo eksponent
manjeg broja najprije izjednaiti sa veim:
1.1E2 = 0.11E3 = 110;
Tek sada bi mogli pristupiti sabiranju mantisa ovako ureenih brojeva:
0.11 E3
+2.2 E3
------2.31 E3
Meutim, zavisno od broja cifara koji imamo na raspolaganju za predstavljanje brojeva,
izjednaavanje eksponenata za sobom povlai i eventualno preureenje razlomljenih dijelova
podataka, to moe dovesti do zaokruenja ili gubitka preciznosti.
3

Ako bi posmatrali sabiranje dva neoznaena binarna broja (.101 x 2 )2 i (.111 x 2 )2 u


pokretnom zarezu, u kojima razlomljeni dijelovi imaju po tri znaajne cifre bez sakrivenog bita,
3
4
najprije bi trebali da uskladimo manji eksponent prema veem (2 ->2 ). Tako bi imali:
3

.101 x 2 = .0101 x 2

Dobijeni broj moramo svesti na tri znaajne cifre:


4

.0101 x 2 = .010 x 2

U ovom procesu smo izgubili dio preciznosti (.0001 x 2 )


Rezultat operacije sabiranja bio bi:
4

(.010 + .111) x 2 = 1.001 x 2 , odnosno nakon normalizacije (.1001 x 2 )


5

Nakon zaokruenja dobijenog rezultata na tri znaajne cifre, dobijamo rezultat (.100 x 2 )2
5
gdje ponovo gubimo dio preciznosti broja (.0001 x 2 )

Mnoenje i dijeljenje u pokretnom zarezu


Mnoenje i dijelljenje u pokretnom zarezu izvodi se neto drugaije nego sabiranje i
oduzimanje. Polja predznaka, eksponenta i mantise se mogu obraivati odvojeno, u skladu sa
sliedeim pravilima:
Ako operandi imaju isti predznak, rezultat e biti pozitivan, dok e razliiti predznaci
operanada proizvesti negativan predznak u rezultatu.
Eksponent rezultata dobija se sabiranjem eksponenata operanada za mnoenje, odnosno
oduzimanjem za sluaj dijeljenja.
Mantise se mnoe ili dijele, nakon ega slijedi normalizacija broja, ako je potrebna.
Primjeri:
1) Pomnoiti brojeve (+1.1E2)10 i (+2.2E3)10, koji su dati u naunoj notaciji.
a) Predznaci datih brojeva su isti, pa e i predznak rezultata biti pozitivan.

37

b) Kako se radi o mnoenju, eksponente sabiramo:


e=2+3=5
c) Mantise datih brojeva emo pomnoiti:
M = 1.1 x 2.2 = 2.42
Dobijeni rezultat je:
R= (+2.42E5)
(Provjera: 110x2200=242000)
2
-3
2) Pomnoiti brojeve (+.101 x 2 )2 i (-.110 x 2 )2 uz uslov da brojevi i rezultat imaju po
3 znaajne cifre, bez sakrivenog bita.
a) Kako se predznaci operanada razlikuju, rezultat e imati negativan predznak.
b) Eksponente u sluaju mnoenja sabiramo, tako da imamo
E = 2 + (-3) = -1
c) Nakon mnoenja razlomljenih dijelova dobijamo
M = (.101)2 x (.110)2 = (.01111)2
odnosno
-1
R = (-.01111 x 2 )
Nakon normalizacije i svoenja na 3 znaajna bita, rezultat je:
-2
R = (-.111 x 2 )
5

3) Podijeliti brojeve (+.110 x 2 )2 i (+.100 x 2 )2 uz uslov da brojevi i rezultat imaju po


3 znaajne cifre, bez sakrivenog bita.
a) Oba predznaka su pozitivna, tako da e i rezultat biti pozitivan
b) Kako se radi o dijeljenju, eksponente oduzimamo pa imamo:
E=54=1
c) Dijeljenjem mantisa dobijamo:
M = (110)2 : (100)2 = (1.1)2
odnosno
1
R = (+1.1 x 2 )
Nakon normalizacije i svoenja na 3 znaajna bita, rezultat je:
2
R = (+1.1 x 2 )

BCD sabiranje i oduzimanje


BCD predstavljanje podataka pojavljuje se u praksi od druge polovine 60-tih godina prolog
vijeka. U to doba jo uvjek nije bila jasna razlika izmeu kalkulatora, programibilnih
kalkulatora i kompjutera. Meutim, principi koji su tada postavljeni vae i danas. Iako danas
postoje i pakovani BCD podaci, ovdje emo obraditi samo primjere koji se odnose na prirodne
(natural) BCD podatke. Sabiranje u BCD sistemu je vrlo jednostavno i izvodi se nad grupama
od po 4 binarne cifre. Ono to je razliito u odnosu na obino binarno sabiranje je pojava jo
jednog prenosa (carry) izmeu etvorki koje predstavljaju pojedine cifre u BCD sistemu, koji
se u razliitoj literaturi nazivaju jo i poluprenosi. Prenosi se javljaju kad god je dobijeni zbir
vei od 9. BCD sabiranje emo posmatrati na primjeru sabiranja brojeva (+255)10 i (+63)10.

Oduzimanje u BCD sistemu je takoe vrlo jednostavno. Da bi ga realizovali, prisjetiemo se


7
metode komplementiranja binarnih brojeva, gdje smo koristili aritmetiki princip
a b = a + (-b)
zbog ega smo najprije komplementirali umanjenik b, a potom radili operaciju sabiranja.
7

Principles of computer architecture

38

Dakle, BCD oduzimanje brojeva (+255)10 i (+63)10, emo izvesti kao:


255 63 = 255 + (-63)
Zbog toga emo broj (+63)10 najprije komplementirati koristei deseti komplement:
9999
-0063
----9936
+1
----9937
A zatim izvriti sabiranje tako dobijenih brojeva:

39

2.4. Bulova algebra


Kako je ranije reeno, sve operacije i kompletan rad raunara baziraju se na dva osnovna
fizika stanja ima napona (impulsa), sa simbolikom oznakom 1 i nema napona (impulsa)
sa simbolikom oznakom 0.
Znai da se elektronski sklopovi, koji u raunaru obavljaju razne operacije, ponaaju slino
prekidaima. Na ulazu uzimaju razliita stanja (0, 1) nad njima izvravaju razliite operacije i
na izlazima ponovo daju stanja (0, 1) odnosno neistina (F) i istina (T), respektivno.
Naravno, u matematici ve odavno postoje teoretske pretpostavke koje nam mogu pomoi pri
obradi ovakvih podataka. Osnovu ove grane matematike postavio je jo u 19 vijeku engleski
matematiar i filozof Dord Bul (George Boole). Po njemu je ova grana matematike nazvana
Bulova logika ili Bulova algebra.

Osnovne Bulove operacije


Osnovne operacije u prekidakoj algebri su:

Sabiranje (oznaava se sa + odnosno ILI, OR),


Mnoenje (oznaava se sa odnosno I, AND) i
Komplementiranje (oznaava se crticom iznad oznake promjenljive, npr. , odnosno
NE, NOT),

Osnovne logike operacije se uobiajeno predstavljaju tabelama istinitosti (Truth Tables), u


kojima se predstavljaju argumenti operacije i rezultat.
Operacija OR (logiko ILI, +) uzima dva argumenta i na izlazu daje istinit rezultat (1) ako je
bar jedan od argumenata istinit, kao u slijedeoj tabeli istinitosti:
A
0
0
1
1

B
0
1
0
1

OR
0
1
1
1

Tabelu istinitosti smo mogli prikazati i ovako:


A
F
F
T
T

B
F
T
F
T

OR
F
T
T
T

Opreacija AND (logiko I, x) uzima dva argumenta a na izlazu daje istinit rezultat (1) samo
ako su oba argumenta istinita. Tabela istinitosti za ovu operaciju je:
A
0
0
1
1

B
0
1
0
1

AND
0
0
0
1

Operacija NOT (NE, komplementiranje) oznaava se crticom iznad varijable. Uzima jedan
argument a na izlazu daje invertovan rezultat sa ulaza, kao u slijedeoj tabeli istinitosti:
A
0
1

NOT
1
0

Iako ne pripada osnovnom skupu Bulovih operacija, operacija XOR (ekskluzivno ILI) se vrlo
esto sree i koristi, pa emo je ovdje posebno istai. Ova operacija uzima dva argumenta, a
na izlazu daje istinit rezultat (1) ako i samo ako je samo jedan ulazni argument istinit (1), kao
u slijedeoj tabeli istinitosti:
A
0
0
1

B
0
1
0

XOR
0
1
1

40

Logika kola
Do sada prikazane logike operatore smo obraivali na apstraktan nain, preko njihovih
tabela istinitosti. Meutim, ovi operatori postoje i kao fiziki sklopovi u raunaru, u formi
osnovnih digitalnih logikih kola (u literaturi jo i vrata - gates). Osnovna logika kola
implementiraju prethodno prikazane osnovne operacije Bulove algebre - OR, AND i NOT.
Slijedea slika prikazuje grafiki simbol svakog od ovih kola:

Jo jedno esto koriteno kolo je XOR logiko kolo, iji je simbol dat na slijedeoj slici:

A
Y
B
XOR kolo
Univerzalna kola
Univerzalna kola NAND i NOR, koja se u literaturi zovu i izvedena kola, su takoe vrlo esto
koritena logika kola. Njihovi izlazi nastaju komplementiranjem izlaza AND i OR kola.
Tabela istinitosti i simbol NAND kola je:

A
Y
B

A
0
0
1
1

B
0
1
0
1

NAND
1
1
1
0

NAND kolo
Vana osobina NAND kola koju moemo primjetiti iz tabele istinitosti je da ne moramo uvjek
znati oba stanja na ulazu. Kako je iz tabele vidljivo, ako je na bilo kom ulazu vrijednost 0, na
izlazu emo dobiti vrijednost 1.
Tabela istinitosti i simbol NOR kola je:

A
Y
B

A
0
0
1
1

B
0
1
0
1

NOR
1
0
0
0

NOR kolo
Ovdje ponovo moramo primjetiti jednu osobinu NOR kola iz njegove tabele. Ako je na bilo
kom ulazu vrijednost 1, ne moramo znati stanje drugog ulaza na izlazu emo dobiti
vrijednost 0.
Univerzalna kola imaju jo jednu interesantnu osobinu. Pravilnim povezivanjem univerzalnih
kola mogue je konstruisati bilo koje osnovno logiko kolo.

41

Primjeri:
1) Koristei NAND kolo, konstruisati NOT kolo.

A
A

A
0
1

A
0
1

Izlaz
1
0

2) Koristei dva NAND kola, konstruisati AND kolo:

Z
A

X
0
0
1
1

Y
0
1
0
1

A
1
1
1
0

A
1
1
1
0

Z
0
0
0
1

Sloenija logika kola koja u raunarima izvode aritmetike operacije ili donose odluke su
esto sastavljena od nekoliko osnovnih ili univerzalnih logikih kola. Logika kola se ne
9
proizvode i ne koriste individualno ve se u raunarima nalaze u obliku integrisanih kola (IC ).
Tipino integrisano kolo sastoji se od odreenog broja elektronskih komponenata (tranzistori,
otpornici, kondenzatori...) pomou koji se implementiraju razliite vrste logikih kola. Primjer
10
jednog ovakvog SSI kola dat je na slijedeoj slici:
+5 V

GND

Ovakva, sloenija kola moemo podijeliti na kola sa kombinacionom logikom i na kola sa


sekvencijalnom logikom.

Kombinaciona kola
Osnovni koncept po kom se prepoznaju kombinaciona kola je injenica da je njihov izlaz
uvjek u potpunosti rezultat vrijednosti na njihovim ulazima u datom momentu.
Ako bi trebali da konstruiemo kolo koje treba da sabere dva binarna broja, najprije bi morali
pogledati tabelu istinitosti za operaciju sabiranja. Iz tabele moemo zakljuiti da su nam,
pored dva ulaza, potrebna i dva izlaza jedan za rezultat i drugi za prenos (carry).
A
0
0
1
1

B
0
1
0
1

+
0
1
1
0

prenos
0
0
0
1

Ako prve tri kolone uporedimo sa tabelama opisanim u Osnovnim Bulovim operacijama,
vidjeemo da su one identine XOR operaciji. S druge strane, prenos je jednak AND
8

Essentials of Computer Organization and Architecture


Integrated Circuit, IC
10
Small Scale of Integration mali stepen integracije
9

42

operaciji. Kombinovanjem XOR i AND kola dobijamo polusabira (half adder), koji je
prikazan na slijedeoj slici:
A
Suma
B

Ulazi
A B
0 0
0 1
1 0
1 1

XOR kolo

AND kolo

Izlazi
Suma Prenos
0
0
1
0
1
0
1
0

Prenos

Polusabira je vrlo jednostavno kolo, pa od njega u stvarnosti ne bi imali mnogo koristi, jer
ovo kolo moe da sabere samo dva bita. Meutim, njega bi mogli proiriti tako da simulira
stvarno binarno sabiranje. Ako se podsjetimo naina na koji smo vrili binarno sabiranje, u
operaciju ulaze dvije binarne cifre i eventualni prenos iz prethodnog koraka. Dakle, ovo kolo
bi moralo da bude u stanju da primi tri bita na ulazu, dok na izlazu treba da da rezultat (sumu)
i prenos.
Kolo koje moe da izvri sabiranje 3 bita i da na izlazu da rezultat sabiranja i prenos naziva
se puni sabira (Full Adder), a dato je na slijedeoj slici:

Ulazni
prenos
Suma

Xor2

Xor1

And1

And2
Izlazni
prenos
OR

Ulazi
A B prenos
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

Xor1
0
0
1
1
1
1
0
0

Meurez.
And1 And2
0
0
0
0
0
0
1
1

0
0
1
1
0
1
0
0

Izlazi
Prenos
Xor2 OR
0
0
1
0
1
0
0
1
1
0
0
1
0
1
1
1

Prikazano kolo moemo ponavljati tako da bude sposobno da izvri sabiranje jednog bajta, 16
bitne rijei ili proizvoljnog niza bita. Sutina kombinovanja vie ovakvih kola sastoji se u tome
da svakom slijedeem kolu u nizu u taku ulaznog prenosa dovodimo signal (bit) izlaznog
prenosa prethodnog kola, dok u take A i B dovodimo uvjek nove podatke (bite) koje treba
sabrati.
Ovako izveden sabira naziva se ripple carry adder (sabira sa serijskim prenosom).
Sabira sa serijskim prenosom predstavlja prilino staro i sporo rjeenje, ali nam daje
osnovnu ideju na koji nain se moe realizovati sabiranje u raunaru. U novije vrijeme se

43

koriste carry-lock-ahead, carry-select adder i carry-save adder, koji ubrzavaju proces


sabiranja za 40-90%.
Slijedee interesantno sekvencijalno kolo koje se esto koristi u raunarima je dekoder.
Dekoder se moe koristiti za npr. adresiranje memorijskih ipova. Dekoderi na ulazu primaju
n
binarnu informaciju u vidu n bita, a na izlazu daju maksimalno 2 bita. Na primjer, dekoder
koji ima 3 ulazne i 8 izlaznih linija naziva se 3 u 8 dekoder.
Primjer: Pretpostavimo da imamo raunar koji ima ukupno 8 memorijskih ipova,
svaki veliine od po 8kB (0-8191 bajta). Dakle, u svakom ipu imamo mogunost da
13
smjestimo 2 bajta. Adresiranje svakog pojedinanog bajta u okviru jednog ipa je
jednostavno, navoenjem brojanog podatka adrese. Meutim, kako imamo 8 ipova,
postavlja se pitanje kako raunar moe da pristupi eljenom ipu npr. etvrtom
ipu? Odgovor je pomou dekodera. Kako nam je za predstavljanje brojeva 0-7
dovoljno 3 bita, mogli bi ipove pobrojati od nula do sedam i usvojiti konvenciju da
ako na ulazu u dekoder imamo (000)2, pristupamo upu 0, ako imamo (001)2 onda
pristupamo ipu 1 itd. Na ovaj nain smo pomou tri ulazna signala (3 bita) uspjeli da
adresiramo ukupno 8 memorijskih ipova. Dakle, binarnim brojnim sistemom smo
smo kodirali informaciju, a raunar koristei dekoder deifruje tu informaciju i na taj
nain pristupa pojedinanim memorijskim ipovima.
Simbol dekodera dat je na slijedeoj slici:

Slijedee uobiajeno kombinaciono kolo je multiplekser. Ovo kolo odabira jedan od ulaznih
analognih ili digitalnih signala i prenosi taj signal na samo jednu izlaznu liniju. Selekciju
odreene ulazne linije odreuje skup vrijednosti na kontrolnim linijama. Simbol multipleksera
dat je na slijedeoj slici:
Multiplexer
S

S8

C1

C2

C3

ENB

Ovakva kola se koriste kada je potrebno ostvariti utedu u resursima. Npr. ako vie razliitih
sklopova u u nekom ureaju u svom radu zahtjeva usluge AD konvertora, bilo bi veoma
skupo da za svaki sklop pravimo po jedan poseban konvertor. Umjesto toga, taj ureaj se
konstruie tako da ima samo jedan AD konvertor, a da mu ostali sklopovi pristupaju preko
multipleksera, koji se ponaa kao prekida sa vie stanja, kao na slici:
Linija 1
Linija 2
Linija 3

AD konvertor

Linija 4

Sekvencijalna kola
Do sada smo razmatrali kola kod kojih se bilo koja promjena stanja na ulazima istovremeno
reflektuje na izlaze. Meutim, ako bi koristili samo ovakva kola, u raunarima ne bi postojala
mogunost memorisanja informacija. Kod sekvencijalnih kola, stanje na njihovim izlazima
zavisi i od trenutnih i od prethodnih stanja na izlazima. Da bi upamtila prethodna stanja,
ovakva kola moraju imati neke memorijske elemente, koji se nazivaju filp-flopovi. Kako je za
sekvencijalna kola bitan i redoslijed dogaaja, odnosno vrijeme, u raunarima takoe moramo
imati mogunost da poslaemo dogaaje u odgovarajuem vremenskom nizu. Sinhrona

44

sekvencijalna kola koriste clock signal za mjerenje vremena. Ovaj signal se sastoji od niza
impulsa precizne amplitude i perioda, kao na slijedeoj slici:

Za razliku od sinhronih, asinhrona sekvencijalna kola postaju aktivna u momentu kada se


ulazna vrijednost promjeni, pa im clock signal nije potreban.
Osnovni memorijski elementi u raunaru su flip-flop i le (latch). Mada se u literaturi esto
poistovjeuju, ovdje emo ipak napraviti razliku izmeu ova dva kola. Osnovna razlika izmeu
ovih kola je u nainu na koji ona okidaju. Kada smo govorili o predstavljanju podataka, vidjeli
smo da razliita stanja u raunaru (0, 1) moemo predstaviti visinom napona ili promjenom
napona. Le (latch) reaguje na visinu napona (level-triggered), dok flip-flop okida na promjenu
napona (edge-triggered), odnosno, flip-flopu je generalno govorei potreban clock signal za
ispravan rad.
Dakle, sekvencijalna kola mogu da na neki nain pamte, jer uzimaju u obzir prethodno i
trenutno stanje na svojim ulazima. Ovakva bistabilna kola mogu se jednostavno izvesti
kombinovanjem NAND i NOR kola. Najjednostavniji primjer jednog ovakvog kola predstavlja
11
SR Le , odnosno Set-Reset Le, koji emo konstruisati pomou dva NOR kola:

R
Q

Not Q
S

Ulazi
Izlazi
R S
Q
Not Q
Akcija
0 0 Latch Latch Bez promjene (zadri, zakljuaj stanje)
0 1
0
1
Q = 0 (S-Latch)
1 0
1
0
Q = 1 (R-Latch)
1 1 Invalid Invalid
Zabranjena kombinacija
A
0
0
1
1

B
0
1
0
1

NOR
1
0
0
0

Ako bi htjeli da ovo kolo dovedemo u stanje reseta, na njegov R (reset) ulaz bi morali dovesti
signal 1, a na S ulaz 0 (R=1, S=0). Pojava signala 1 na ulazu R gornjeg kola bi dovela do
pojave signala 0 na njegovom izlazu (prisjetite se osobine NOR kola ne moramo znati
stanje drugog ulaza). Taj signal (0) bi automatski bio prenesen na prvi ulaz donjeg NOR kola.
Kako je stanje i na drugom njegovom ulazu nula (S=0), na izlazu Not Q emo dobiti vrijednost
jedan (1), kao na slijedeim slikama:

11

U literaturi esto i SR Flip Flop

45

Ako bi iz ovog stanja, ulaze u kolo vratili na (R=0, S=0), kolo bi ostalo u neizmjenjenom stanju
na izlazima. Zahvaljujui uticaju donjeg NOR kola bi bar jedan od ulaza u gornje NOR kolo
ponovo bio postavljen na jedan (1).

Kako smo vidjeli, ovakva kola pokazuju osnovne mogunosti pamenja prethodnih stanja.
Situacija bi bila veoma slina i kada bi na Set ulaz kola doveli jediicu, a na Reset ulaz nulu
(S=1, R=0) ali bi objanjenje rada ovog kola poelo od donjeg NOR kola. Pojava signala 1
na ulazu S donjeg kola bi dovela do pojave signala 0 na njegovom izlazu (ponovo osobina
NOR kola ne moramo znati stanje drugog ulaza). Taj signal (0) bi automatski bio prenesen
na drugi ulaz gornjeg NOR kola. Kako je stanje i na drugom njegovom ulazu nula (R=0), na
izlazu Q emo dobiti vrijednost jedan (1), kao na slijedeim slikama:

I ponovo, ako bi po izlasku ovog stanja, ulaze u kolo vratili na (R=0, S=0), kolo ponovo
upamtilo prethodno stanje na izlazima, zahvaljujui stanju gornjeg kola.

46

Kod ovog kola se ne koristi sluaj kada su na oba ulaza jedinice (R=1, S=1), jer ovaj sliaj
kolo nije u stanju da pamti na izlazima bi dobili dvije nule (0, 0) od ega nemamo koristi, pa
12
ovakav sluaj oznaavamo u tabeli istinitosti kao invalid nevalidan.
Dakle, bez obzira da li ovo kolo setujemo (S=1, R=0) ili resetujemo (S=0, R=1), nakon
promjene ulaznih signala u (S=0, R=0) ovo kolo je u stanju da upamti svoje prethodno stanje.
Neto sloenijim kombinacijama NOR i NAND kola dobijamo razliite verzije flip-flopova. Na
13
slijedeoj slici vidimo simbole za RS flip-flop, JK (Jack Kilby ) flip-flop i D (od data) flip-flop:

Leevi i flip-flopovi se koriste za konstruisanje jo sloenijih sekvencijalnih kola, kao to su


registri, brojai, memorije i protoni registri. Na slijedeoj slici vidimo primjer jednostavnog 4bitnog registra koji je konstruisan pomou etiri D flip-flopa.

Binarni broja je sekvencijalno kolo koje mijenja svoje stanje pod uticajem clock signala. Npr.
binarni broja sastavljen od 4 JK flip-flopa e uveavati svoje stanje za 1, prolazei pri tome
kroz 0000, 0001, 0010, 0011, ..., 1111.

12
13

TeahLab The Basic RS Nor Latch


Jack Kilby, ininjer kompanije Texas Instruments koji je izumio integrisano kolo.

47

3. Model digitalnog raunara


Ako na hipotetiki raunar posmatramo kao spravu za obradu podataka, ono to nam je na
prvom mjestu potrebno je nain da raunaru dostavimo podatke koje on treba da obrauje
na raunar morae da ima mogunost da preko nekog ulaza prima podatke i informacije.
Takoe, obraeni rezultati nam ne bi mnogo vrijedili ako do njih ne bismo mogli doi na
raunar e morati imati i nain da nam prezentira rezultate obrade preko izlaza podataka i
informacija. A da bi uopte mogao da obrauje podatke, na raunar morao bi imati ugraene
odreene sklopove koji e obavljati aritmetike operacije (sabiranje, oduzimanje itd.),
odreene logike sklopove (and, or itd.). Takoe, jedan od preduslova za rad naeg
raunara je i mogunost memorisanja podataka, gdje bi se po potrebi uvali rezultati i
meurezultati obrade podataka. Naravno, radi usklaivanja svih ovih procesa, potreban nam
je i jedan centralni upravljaki ili kontrolni sklop u samom raunaru. Ako bi se zadovoljili da
ovdje stanemo sa razvojem, ovakav raunar bo mogao da obavlja samo ogranien skup
funkcija. Za svaku novu funkciju, za svaku novu mogunost obrade, morali bi da
konstruiemo novi raunar. Zbog toga emo naem raunaru dodati jo jednu novu
mogunost sposobnost da obrauje podatke u skladu sa nekim programom.
U skladu s tim, osnovne jedinice raunara su

Ulazna jedinica,
Memorijska jedinica,
14
Aritmetiko-logika jedinica (ALU ),
Upravljaka (kontrolna) jedinica
Izlazna jedinica,

Aritmetiko-logika i upravljaka jedinica se esto posmatraju i realizuju kao jedna cjelina koja
se naziva procesor ili centralna procesna jedinica (CPU Central Processing Unit). Ako
je procesor realizovan kao jedno monolitno integrisano kolo onda se on naziva
mikroprocesor.
Raunar u kome se kao procesor koristi mikroprocesor naziva se
mikroraunar. Sistem u kome se koristi mikroraunar naziva se mikroraunarski sistem. U
personalnim raunarima se danas kao procesor uglavnom koristi mikroprocesor.
Veliki uticaj na razvoj arhitekture raunara i raunarske tehnike imao je Don fon Nojman,
amerikanac maarskog porijekla, koji je tokom rada na razvoju hidrogenske bombe poeo da
izuava i digitalne raunare. Ubrzo nakon toga, on poinje rad na projektu EDVAC (Electronic
Discrete Variable Automatic Computer). U tekstu First Draft of a Report on the EDVAC,
opisao je arhitekturu raunara u kom su podaci i program smjeteni u isom adresnom
prostoru. Ova ideja je bila revolucionarna jer su prvi raunari imali fiksne programe. Dananji
manji kalkulatori imaju sline fiksne programe i zbog toga mogu da obavljaju samo ogranien
skup aritmetikih funkcija, ali ne mogu da vre obradu teksta ili slike. Svaka promjena
programa kod ovakvih raunara je dugotrajan proces koji zahtjeva njihovo potpuno
redizajniranje i sastavljenje od esto sasvim razliitih hardverskih elemenata.
Fon Nojmanova ideja je iz temelja promjenila ovakav pristup. Njegov koncept je zadrao
pristup prema kome se u hardver raunara ugraivao odreeni predefinisani skup instrukcija
(instruction set) koji je fiksan. Meutim, fon Nojman je takvom raunaru dodao i memoriju u
koju se moe smjestiti odreen broj fiksnih instrukcija proizvoljnim redoslijedom program.
Ideja prema kojoj su podaci i instrukcije smjeteni u isti adresni prostor je omoguavala
da nakon uitavanja novog programa raunar promjeni svoje ponaanje i funkcionisanje bez
izmjene njegovog hardvera.
Primjer:
Na raspolaganju nam je hipotetiki raunar koji ima dva dodatna memorijska
elementa (A i B) za smjetanje podataka veliine 1. bajta. Ovaj raunar ima
predefinisani skup instrukcija koji se sastoji od etiri raunske operacije sabiranje,
oduzimanje, mnoenje i dijeljenje, iji su binarni kodovi dati u slijedeoj tabeli:
Operacija
Kod
Saberi (ADD)
00
Oduzmi (SUB)
01
Pomnoi (MUL) 10
14

Arithmetic logic unit

48

Podijeli (DIV)
11
Podrazumjevani argumenti svih operacija su dodatni memorijski elementi A i B, a
rezultat bilo koje operacije ovog raunara se ponovo smjeta u memorijski element A.
Npr. ako je A=2 i B=1, rezultat operacije ADD (binarni kod 00) e biti A+B = 3 i bie
ponovo smjeten u memorijski element A. Raunar ima i memoriju u koju moemo
proizvoljnim redoslijedom smjestiti do 4 instrukcije koje se nakon toga izvravaju
redom kojim su unesene. Pretpostavimo i da imamo mogunost da na neki nain u
dodatne memorijske elemente upiemo odreene vrijednosti.
ta e biti rezultat slijedeeg programa uitanog u memoriju, ako su vrijednosti
upisane u dodatnim memorijskim elementima A=3 i B=2?
Memorija
A B
00
3 2
10
01
01
Rjeenje:
Prva operacija do koje na raunar dolazi u toku izvravanja je sabiranje (kod 00).
Kao rezultat ove operacije, on e sabrati brojeve koji se nalaze u A i B (3+2=5) i
rezultat e smjestiti u memorijski element A.
Memorija
A B
Novo A
00
3 2
5
10
01
01
Prva slijedea operacija do koje e raunar doi tokom izvravanja je mnoenje (kod
10). Raunar e sada pomnoiti brojeve koji se nalaze u A i B (5*2=10) i rezultat e
ponovo smjestiti u element A.
Memorija
A B
Novo A
00
3 2
5
10
5 2
10
01
01
Slijedee dvije instrukcije do kojih e raunar doi tokom izvravanja su operacije
oduzimanja (01). U prvom oduzimanju, raunar e oduzeti A-B=10-2=8 i rezultat
smjestiti u A.
Memorija
A
B
Novo A
00
3 2
5
10
5 2
10
01
10 2
8
01
Nakon toga e ponovo izvriti oduzimanje A-B=8-2=6 i rezultat smjestiti u A.
Memorija
A
B
Novo A
00
3 2
5
10
5 2
10
01
10 2
8
01
8 2
6
Kao rezultat ovog programa, u memorijskom elementu A e biti smjeten broj 6.
Prethodni primjer najbolje objanjava genijalnost Fon Nojmanove ideje ako u memoriju
uitamo neki drugi niz instrukcija (00, 10, 01, 10), dobiemo sasvim novu funkciju raunara,
bez izmjene njegovog hardvera.
Na slijedeoj slici prikazan je Fon Nojmanov model digitalnog raunara:

49

Na ovom modelu vidljivo je da kontrolna i aritmetiko-logika jedinica (ALU) ine jednu cjelinu
procesor. Na slici je vidljiv i jedan novi dio, oznaen kao akumulator. Akumulator je dodatni
memorijski element koji se nalazi u samom procesoru. Procesor moe imati vie ovakvih
dodatnih memorijskih elemenata koji se zajednikim imenom nazivaju registri i koji slue za
memorisanje razliitih vrijednosti i meurezultata izraunavanja. Meutim, zato koristiti
registre kada na model ve posjeduje memoriju? Odgovor je zbog jednostavnosti
konstrukcije i brzine izvravanja. U prethodnom primjeru na hipotetiki raunar je imao malu
operativnu memoriju i registre A i B (sada ih vie ne moramo zvati dodatni memorijski
elementi). Njegove instrukcije su bile tako dizajnirane da uvijek uzimaju argumente sa istog
mjesta (A, B) i smjetaju rezultat u odreeni registar A dakle uvijek znaju gdje su im podaci.
Ako bi podatke (meurezultate i rezultate) drali u memoriji, instrukcije vie ne bi bile tako
jednostavne svaka bi morala u sebi imati i podatak iz kog dijela memorije (sa koje adrese)
treba da uzme podatak i u koji dio memorije da smjesti rezultat. Osim toga, ovakva
konstrukcija raunara bila bi i mnogo sporija.

Upoznavanje sa registrima procesora


Generalno, registri mikroprocesora su mali dijelovi memorije koji se nalaze na samom
mikroprocesoru. Njima procesor pristupa mnogo bre nego drugim memorijskim elementima.
Ovakvi specijalizivani memorijski elementi se ne smatraju se dijelom operativne memorije
15
raunara. Veina dananjih procesora koristi tzv. load-store arhitekturu, prema kojoj se
podaci uitavaju iz nekog veeg memorijskog elementa (npr. RAM) u registre. Podaci
uitani u registre se dalje koriste za razliita izraunavanja i na kraju ponovo smjeste u neki
vei memorijski element. Kako emo vidjeti, ovakav nain konstrukcije raunara omoguava
da u samu instrukciju kodiramo informacije o tome gdje joj se nalaze argumenti i gdje treba
da smjesti rezultat.
Registri memoriu podatke u binarnom obliku a sastavljeni su od flip-flopova. Npr. 16-bitni
registar mogao bi biti sastavljen od 16 D flip-flopova. U praksi, dananji raunari uglavnom
koriste registre veliine 16, 32 ili 64 bita, mada postoje i manji i vei registri od nabrojanih.
Podaci koje raunar obrauje zbog toga moraju biti organizovani kao binarne rijei
odgovarajue duine. Broj registara razlikuje se od arhitekture do arhitekture, ali je najee
neki umnoak broja 2 (16, 32...).
Moderni raunari imaju brojne specijalizovane registre koji osim smjetanja razliitih
podataka, kao to su rezultati, meurezultati ili memorijske adrese, slue za iftanje
(pomjeranje) vrijednosti, za poreenje, za brojanje itd. Neki registri pamte mjesto do kog je
program doao u toku svoga izvravanja npr. registar programski broja.
Da rezimiramo, registri su memorijski elementi koji se nalaze na procesoru i kojima procesor
najbre manipulie, malog su kapaciteta i njihov broj je ogranien.

15
Uitaj-smjesti, esto i uitaj-izvri arhitektura. Ovaj izraz se u zadnje vrijeme sve ee javlja umjesto izraza RISC Reduced
Instruction Set Architecture (http://en.wikipedia.org/wiki/Load-store_architecture)

50

Osnovni podaci o operativnoj memoriji raunara


U modernim raunarima postoji vei broj memorijskih jedinica razliitih tipova. Tako,
razlikujemo operativne ili primarne memorijske jedinice (RAM, ROM) i sekundarne
memorijske jedinice (mass storage) isl. Meutim, za razmatranje naeg modela emo se u
ovom momentu ograniiti na operativnu ili RAM memoriju. RAM (Random Access Memory)
memorija sastavljena je od flip-flopova i smjeta se u mikroipove. U nju se podaci mogu
upisivati ili iz nje oitavati, a po iskljuivanju napajanja, sadraj ovakve memorije se gubi.
Memoriju je najlake vizuelno predstaviti kao matricu koja je sastavljena od bita. Ve smo
napomenuli da podaci koje raunar obrauje moraju biti organizovani kao binarne rijei
odgovarajue duine (8, 16, 32 bita). Svaki red u takvoj matrici bi zbog toga mogao biti
binarna rije duine npr. 8 bita, kao na slici:
8 bita
Red 1
Red 2
...
...
...
Red N

Kombinovanjem jednog ili vie redova memorije moemo sastaviti binarnu rije potrebnu za
rad odgovarajueg raunara.
Iako se ova vrsta memorije naziva memorija sa sluajnim pristupom, pristup podacima koji
su smjeteni u njoj nije ni malo sluajan. Da bi objasnili nastanak njenog imena, najprije emo
opisati jedan alternativni nain za zapisivanje i oitavanje podataka stek.
Stek (stack) je apstraktna struktura podataka koja se bazira na principu "zadnji koji je uao
prvi izlazi" (LIFO Last In First Out).

Stek je niz vorova (nodova) kojima pristupamo pomou samo dvije operacije PUSH i POP.
PUSH dodaje novi vor (nod) na vrh strukture ne dirajui pri tom postojee, a POP skida
trenutni vor sa vrha steka. U realnom ivotu, paralelu ovakvoj sturukturi moemo nai u
gomili naslaganih blokova ili cigli. Prednost ovakve strukture je u tome to ne moramo znati
adresu svakog podatka u memoriji dovoljno je da znamo samo adresu zadnjeg koji je
unesen. Meutim, podatak iz sredine steka ne moemo oitati ni izmjeniti sve dok ne skinemo
sve prethodno naslagane podatke (cigle) sa steka. Dakle, stek je struktura sa sekvencijalnim
ili serijskim pristupom. Kod ovakvih memorijskih struktura, brzina pristupa podatku zavisi od
pozicije takvog podatka.
S druge strane, ako bi pobrojali svaki red u memoriji koristei neoznaene cijele brojeve,
svakom pojedinanom redu bi mogli pristupati na osnovu njegovog broja, odnosno njegove
adrese. Sada, kada imamo adresu svakog reda, mogue je pristupati podacima u memoriji
proizvoljnim redoslijedom. Ovjde brzina pristupa nekom podatku ne zavisi od njegovog
poloaja u memoriji, pa je ova vrsta memorije dobila pomalo udno ali opte prihvaeno ime
RAM ili memorija sa sluajnim pristupom.
Veliina memorije se mjeri jedinicama mjere koje su ljudima koji se ne bave informatikom
pomalo neobine. Osnovnu jedinicu, Bajt, smo ve upoznali. Meutim, jedan kilo-Bajt (kB)
10
20
sadri 2 odnosno 1024 bajta, dok jedan mega-bajt (MB) sadri 2 ili 1048576 batja a 1
30
giga-bajt (GB) sadri 2 bajta.
Svima nam je poznato da danas i prosjeni raunari imaju RAM koji se mjeri u gigabajtima.
Meutim, nije uvjek bilo tako. Poetkom sedamdesetih godina prolog vijeka, 64kB se

51

smatralo za ogromnu koliinu memorije. Ve od tog doba se poeo javljati problem


adresiranja memorije, jer su konstruktori prvih raunara bili ogranieni mogunostima
elektronskih sklopova tog vremena, njihovom cijenom i tehnolokim postupkom. A zbog ega
bi adresiranje moglo da predstavlja problem, ako znamo da se radi o neoznaenim cijelim
brojevima? Odgovor lei u broju bita koji je potreban za predstavljanje odreenog broja. Ako
bi adresu neke memorijske lokacije drali u nekom posebnom registru, broj bita takvog
registra odreivao bi koliinu memorije koju moemo da dohvatimo. Npr. ako bi imali
memoriju veliine 4 bajta (odnosno 4 reda) koji su pobrojani od 0-3, takav registar bi morao
2
da ima 2 bita, jer je 2 =4. Ako bi imali memoriju veliine 256 bajta (0-255), takav registar bi
8
morao da ima 8 bita, jer je 2 =256. A za memoriju veliine 64kB na registar bi trebao da ima
16
16 bita, jer je 2 =65536.
8 bita
00
01
10
11
1 0 Dvo-bitni registar

Aritmetiko logika jedinica


16

Aritmetiko logika jedinica (ALU ) je digitalni sklop koji vri stvarnu obradu podataka u
raunaru. Kako joj ime kae, ona izvrava aritmetike i logike operacije koje su potrebne u
toku rada raunara. Ona je osnovni dio ak i najjednostavnijih procesora. Moderni raunari
mogu imati i vie ovakvih jedinica. Simbol aritmetiko logike jedinice je:
Aritmetiko
logika
jedinica

Aritmetiko logika jedinica obrauje podatke koristei isti numeriki format kao i ostala
digitalna kola u raunaru. Njen rad je uvjek kontrolisan od strane kontrolne jedinice. ALU
najprije uita podatke sa ulaznih registara, a zatim nad podacima obavi onu operaciju koju joj
naredi kontrolna jedinica.
Veina aritmetiko logikih jedinica moe da obavlja jednostavnije operacije, koje ukljuuju
aritmetike operacije nad cijelim brojevima (sabiranje, mnoenje, oduzimanje, dijeljenje),
zatim logike operacije na nivou bita (And, Not, Or, Xor) i ifranje ili rotiranje bita.
Za kompleksnija izraunavanja, kao to je izraunavanje kvadratnog korjena, razliiti
proizvoai su tokom razvoja raunarske tehnike koristili razliite pristupe, esto pravei
kompromise izmeu brzine obrade i cijene. Izrada ALU koja bi mogla da vri ovakve
kompleksne proraune bila je veoma skupa.
Zbog toga raniji procesori (80286, 80683...) imali mogunost povezivanja sa numerikim
koprocesorom, koji se u mainu ugraivao opciono po elji korisnika. Jo jedno rjeenje
17
ovog problema bilo je da se teret zadatka prebaci na operativni sistem, tako da OS emulira
postojanje koprocesora. Ovakva rjeenja koristila su jednostavnu ALU, a teret izraunavanja
su prebacivala ili na neki drugi (skuplji) sklop ili na softver.
Naravno, postojala su i rjeenja u kojima se ovakve kompleksne kalkulacije vre u okviru ALU
u jednom koraku, to predstavlja najkomplikovanije i najskuplje rjeenje single clock ALU.
Pored ovoga, postoje prilino sloena rjeenja aritmetiko logike jedinice koja izraunava
npr. kvadratni korijen kroz nekoliko koraka. Meutim, ovakvi sklopovi esto su u stanju da
paralelno (istovremeno) sa izraunavanjem korijena vre i druga izraunavanja, tako da
praktino postiu istu brzinukao i single clock ALU. Rjeenja koja paralelno izvravaju vie
zadataka zasnovana su na principu cjevovoda i nazivaju se calculation pipeline.

16
17

Arithmetic logic unit


Emulira imitira postojanje

52

Operacije koje se izvravaju u ALU esto ostavljaju trag na posebnom registru koji se naziva
status registar. Biti ovog registra oznaavaju razliita stanja koja su rezultat prethodne
instrukcije. Npr. jedan od bita moe bit postavljen na 1 ako je rezultat prethodne operacije
18
paran, drugi bit moe biti postavljen ako je rezultat bio nula, trei ako je dolo do
prekoraenja itd. Biti ovog registra se esto nazivaju i flags (zastavice), jer broj 1 podsjea na
podignutu zastavicu koja signalizira neki dogaaj.

Kontrolna jedinica
Kontrolna jedinica nadzire izvrenje svih instrukcija i transfer svih informacija. Zadatak
kontrolne jedinice je da pribavi instrukcije nekog programa iz memorije a zatim i da ih
dekodira, te da se pobrine da se pravi podaci nau u pravim registrima. Pored ovoga, zadatak
kontrolne jedinice je da opsluuje prekide (interrupt) i da pokrene odgovarajua kola u okviru
ALU da bi ona izvrila potrebne operacije. Kontrolna jedinica koristi poseban registar
programski broja da bi mogla da zna koja je slijedea instrukcija u memoriji koju treba da
izvri. Ona takoe koristi i status registar u kom su zapisani podaci o parnosti,
prekoraenjima, prenosima itd. prethodno izvrene operacije.
Zbog svega ovoga je kontrolna jedinica veoma sloen sklop, koji se moe realizovati na dva
naina kao sklopovska ili kao mikroprogramska kontrolna jedinica.
Sklopovska realizacija kontrolne jedinice je veoma sloena. Ona se izvodi pomou
logikih kola, flip-flopova, kodera, dekodera, brojaa i drugih digitalnih kola. Ovakva kontrolna
jedinica zasnovana je na fiksnoj arhitekturi svaka izmjena ili ispravak greke u kontrolnoj
jedinici zahtjeva njenu ponovnu proizvodnju.
Mikroprogramska kontrolna jedinica osmiljena je jo 1951. od strane M.V.Wilkesa. Ovako
izvedena kontrolna jedinica koristi mikroprograme i mikroinstrukcije za pokretanje
odgovarajuih kola ALU. Mikroinstrukcije su smjetene u posebnu memoriju (ROM) koja se
nalazi u kontrolnoj jedinici. Kada ovakva kontrolna jedinica treba da izvri neku instrukciju
programa, ona mapira tu instrukciju na odgovarajui dio posebne (ROM) memorije koji sadri
jednu ili vie mikroinstrukcija. Same mikroinstrukcije su u stvari signali koji se alju aritmetiko
logikoj jedinici i koji joj govore koje operacije treba da izvri.

Ulazno izlazni podsistem


19

Ulazno-izlazne jedinice (I/O ) su ureaji koji nam omoguavaju da komuniciramo sa


raunarom. Ulazni ureaji kao to su tastatura, mi, skener, ita kartica isl. omoguavaju
nam da unesemo infromacije u raunar. Izlazni ureaji poput monitora, tampaa, plotera ili
zvunika daju nam mogunost da dobijemo informacije iz raunara.
Ovakvi ureaji nisu direktno vezani za CPU. Umjesto toga, oni koriste razliite interfejse
20
(interface) koji su vezani za sabirnicu raunara. Sabirnica je sklop koji je zaduen da
prenosi signale izmeu razliitih sklopova u raunaru, a obradiemo je detaljnije u slijedeem
poglavlju. Kada raunar treba da poalje podatke na neki izlazni sklop, podaci se od
procesora (preko sabirnice) alju do interfejsa zaduenog za taj izlazni ureaj. Interfejs tada
pretvara signale sa sabirnice u format koji je prihvatljiv za taj izlaznih ureaj. Ako neki ulazni
ureaj treba da poalje podatke u raunar, te podatke najprije preuzima interfejs datog
ureaja i pretvara ih u signale koji mogu da se prenesu preko sabirnice do procesora.

18

esto se koristi i izraz setovan bit sa istim znaenjem postavljen na 1


Input/output
20
Interface taka interakcije izmeu dva sistema
19

53

3.1. Arhitektura raunara sa sabirnicom (magistralom)


CPU komunicira sa ostalim sklopovima u raunaru koristei sabirnicu. Sabirnica (magistrala,
Bus) je tokom istorije posmatrana kao skup paralelnih provodnika koji slue kao zajedniki i
dijeljeni put za prenos podataka izmeu razliitih podsistema u raunaru. Sabirnice su
jednostavno i jeftino, ali i prilagodljivo rjeenje za meusobno povezivanje razliitih sklopova
u raunaru.
U prethodnom modelu smo vidjeli da postoji odreena interakcija izmeu svih komponenata
raunara. Ako razmiljamo o tome koje mogunosti imamo za prenos podataka u raunaru,
na raspolaganju su nam serijska i paralelna veza. Serijsku vezu bi mogli predstaviti jednim
provodnikom preko koga teku podaci izmeu dva ureaja, kao na slici:

Ako period jednog impulsa traje npr. 1 mili-sekundu, za prolazak 8 impulsa preko ovakve linije
bie potrebno 8 ms. Sa druge strane, ako bi koristili osam paralelnih provodnika, mogli bi
znatno ubrzati prenos podataka preko takve linije:

Ukupno vrijeme za prenos osam impulsa preko osmo-ilnog provodnika bilo bi osam puta
manje samo jednu milisekundu.
Iz navedenih razloga, obrada i prenos podataka izmedju svih jedinica raunara se ranije vrila
paralelno da bi se postigla velika brzina rada raunara. U jednom trenutku, samo jedan
ureaj (ALU, memorija ili neki drugi sklop) moe da koristi magistralu. Dakle, ako npr. CPU
oitava neki podatak iz memorije, ostalim sklopovima nee biti dozvoljeno da je koriste.
Magistrala je, dakle, skup paralelnih linija (provodnika) preko kojih se prenose informacije u
binarnom obliku izmedju svih jedinica raunara. Magistrala posjeduje onoliko linija koliko se
bita paralelno obradjuje i prenosi u raunaru. Ona je dvosmjerna, ali se u jednom trenutku
preko nje moe prenositi samo jedan podatak i to samo u jednom smijeru. U njenom sastavu
se obino nalaze i odgovarajua digitalna kola koja slue za povezivanje svih sklopova i
jedinica na magistralu.
Potrebno je naglasiti i da se ovakav, paralelni prenos podataka u novijim raunarima sve vie
naputa, iz razloga koji e biti navedeni kasnije. Meutim, za uvodni dio, draemo se
pretpostavke da je sabirnica skup paralelnih linija.
Na sledeoj slici je prikazana blok-ema (arhitektura) raunara koji koristi magistralu

54

Poto sabirnicu zajedniki koristi vie ureaja u raunaru, veoma je vano na neki nain
sinhronizovati rad svih ovih ureaja. Zamislite situaciju u kojoj CPU preko zajednike
sabirnice alje podatke na tampa, dok istovremeno tastatura emituje neke svoje podatke.
Oigledno je da mora postojati odreeni skup pravila ili protokol koji odreuje kada e neki od
sklopova imati pravo da koristi sabirnicu. Zbog toga se linije sabirnice dijele na kontrolne,
adresne i linije podataka, kao na slijedeoj slici:

Svaki procesor na svom tijelu ima izvode ili pinove pomou kojih se fiziki vezuje za matinu
plou. Kako emo uskoro vidjeti, svaki od esto brojnih izvoda procesora se u stvari vezuje za
neku od linija sabirnice.
Linije sabirnice koje su odreene iskljuivo za prenos podataka nazivaju se linije podataka, a
taj dio sabirnice naziva se jo i sabirnica podataka (data bus). Ove linije (odnosno
provodnici, ice) slue za prenos podataka sa jedne lokacije na drugu u oba smjera npr. od
procesora ka memoriji i obrnuto.
Kontrolne linije prenose od procesora ka ureajima informaciju o tome koji sklop ima pravo
da koristi sabirnicu. Meutim, kontrolne linije takoe prenose ka procesoru zahtjeve razliitih
ureaja koji ele da koriste sabirnicu. Dakle i kontrolne linije, ili kako se jo esto nazivaju
kontrolna sabirnica (Control Bus) mogu da prenose signale u oba smjera.
Adresne linije navode lokaciju (npr. u memoriji) sa koje treba oitati podatak ili u koju treba
upisati podatak. Podaci o adresama uvjek idu od procesora ka drugim sklopovima. Adresna
sabirnica (Address Bus) je jednosmjerna jer procesor mora da objasni nekom sklopu sa
koje njegove adrese eli da oita/upie podatke.
Da ne bude zabune sve prethodno opiane linije koje slue za povezivanje razliitih sklopova
u raunaru jednim imenom se nazivaju sabirnica. Ove linije se dalje prema funkciji dijele na
linije podataka, kontrolne i adresne linije. Iako su tokom razvoja raunara i raunarske tehnike

55

razliiti proizvoai su poeli da projektuju i razliite druge, specijalizovane vrste sabirnica, u


ovom momentu emo pretpostaviti da u raunaru postoji samo jedna sabirnica koja je
ugraena u matinu plou raunara i koja ima pomenute kontrolne, adresne i linije podataka.
21
Ovakva sabirnica, koja se naziva i backplane bus, povezuje procesor, I/O ureaje i
memoriju, tako da svi ureaji dijele njene usluge.

nic
Sabir

CPU

Ovakve sabirnice moraju da budu kompatibilne sa brojnim ureajima razliitih arhitektura i


brzina. Tipina transakcija oitavanja podataka iz memorije preko sabirnice ukljuuje slijedee
korake
1. Procesor postavlja odgovarajui signal na kontrolne linije, da bi ukazao sa kojim
sklopom (u ovom sluaju memorija) eli da komunicira, te da naznai da se radi o
itanju;
2. Procesor na adresne linije postavlja adresu memorijske lokacije sa koje eli da oita
podatke
3. Procesor, ako je potrebno, mora da saeka da potencijalno sporija memorija pronae
podatak;
4. Kada memorija pronae traeni podatak, procesor ga uitava u neki od svojih
registara.
Navedene operacije potrebno obaviti redom kojim su nabrojane, a svaka operacija treba da
bude pokrenuta u tano odreenom vremenskom trenutku. Da bi ovo postigli, sabirnicu
moramo posmatrati kao mainu stanja (state machine), gdje se prelazak na svako novo
stanje deava u tano odreenom trenutku vremena, tek kada je prethodno stanje ve
zavreno. Koncept maine stanja nam je blizak i iz svakodnevnog ivota koristi ga ak i
programator obine maine za pranje vea. Ona naprije uzima vodu, potom dodaje
deterdent, zatim ispira itd.
Da bi procesor i sabirnica mogli da obave zadatak npr. prebacivanja podatka iz memorije u
neki registar, oni moraju imati mogunost mjerenja vremena. Ovu mogunost prua im jo
jedan poseban signal sistemski sat ili Clock.

Sistemski sat (CLOCK) metronom


Svaki kompjuter posjeduje interni sistemski sat ili Clock koji regulie kojom brzinom e se
izvravati instrukcije. Clock takoe sinhronizuje rad svih ostalih komponenata u sistemu. CPU
koristi otkucaje sistemskog sata da bi drao takt u ijem ritmu pleu svi ostali sklopovi u
sistemu. Frekvencija sistemskog sata ali i brzina mikroprocesora se mjerilo se kod starijih
6
9
maina u mega-hercima (1 MHz = 10 Hz) ili kod novih u giga-hercima (1 GHz = 10 Hz).
Vrijeme trajanja jednog ciklusa (period) je reciprona vrijednost frekvenciji. Npr. ako imamo
mainu koja radi na 500 MHz, period jednog ciklusa e iznositi:
T=1/f = 1/500,000 = 2 ns.
Sistemski sat je jedan od najvanijih pokazatelja brzine neke maine, ali nije i jedini. U obzir
se uvjek mora uzeti i sama arhitrktura maine i mikroprocesora. Ako bi dvije maine radile na
istoj Clock frekvenciji, ne mora da znai da bi rezultate davale jednakom brzinom. Npr. nekoj
starijoj 80286 maini bilo je potrebno 20 ciklusa da izvri operaciju mnoenja, dok je neto
novijim pentiumima za izvrenje istog zadatka dovoljan jedan ciklus.

21
Backplane Bus Sabirnica na tampanoj ploi. Elektronski sklopovi se povezuju na plou od petrinaksa ili vitroplasta na koju
je kairanjem nanesen sloj bakra. Posebnim postupkom, koji se naziva tampanje, uklanja se dio bakra tako da na ploi ostaju
samo vodovi koji povezuju pojedine elemente.

56

Svaki mikroprocesor ima ulaz koji se naziva CLOCK (ili se koristi slino ime). Ovaj signal
dobija se od kristalnog oscilatora kada se na njega prikljui napon, a ima izgled kao na slici:
Sistemski sat
Clock

Mikroprocesori koriste CLOCK da bi definisali vremensko trajanje pojedinih operacija.


Procesori 80286 i 80386 su u radu dijelili frekvenciju CLOCK ulaza sa dva da bi dobili
Processor Clock (PCLK). Za razliku od njih, noviji procesori koriste CLOCK signal bez
dijeljenja frekvencije.

Kada izvodi operacije itanja ili pisanja (transakcije), procesor inicira niz dogaaja koji se
nazivaju ciklusi sabirnice (bus cycle). Tokom jednog ovakvog ciklusa, procesor smjeta
adresu na adresnu sabirnicu, podeava sadraj kontrolne sabirnice da bi utvrdio tip
transakcije (npr. itanje iz memorije ili pisanje na IO ureaj) i prebacuje podatke izmeu sebe
i navedene lokacije. Ovo se deava po strogo utvrenom redoslijedu, gdje se svaki korak
deava tek na odreenoj vremenskoj taki.
Sabirnica je dakle maina stanja gdje se svaki korak odreen PCLK signalom.
Primjer: Imamo CLOCK frekvenciju od 40 MHz i PCLK frekvenciju upola manju,
dakle 20MHz. Koliko e trajati jedan Clock, a koliko jedan PCLK period?

Trajanje jednog Clock perioda izraunaemo kao:


TCLOCK = 1/40,000,000= 0.000000025 s = 25 ns,
PCLK Frekvencija je upola manja od Clock frekvencije, dakle
FPCLK = 40MHz/2 = 20Mhz.
PCLK ciklus e trajati
TPCLK = 1/20,000,000 = 0.00000005 = 50 ns
ili
TPCLK = 2*Tclock = 2*25 = 50 ns.
Ako bi ovakvu sabirnicu posmatrali kao mainu stanja, svako stanje bi trajalo 50 ns.
Kad god nije ukljuena u neku operaciju itanja ili pisanja, za ovu sabirnicu kaemo da je u
idle stanju (besposlena). im mikroprocesor zapone operaciju itanja ili pisanja, sabirnica
naputa idle stanje i zapoinje novi ciklus sabirnice koji emo zvati "vrijeme za adresiranje"
(address time). Tokom ovog vremena, koje traje jedan PCLK ciklus, procesor smjeta
adresu na adresne linije i smjeta tip operacije na kontrolne linije.
Nakon to zavri sa adresiranjem, procesor prebacuje nau mainu stanja (sabirnicu) u
slijedee stanje koje emo nazvati "vrijeme za podatke" (data time). Ova imena emo
22
koristiti radi jasnijeg predstavljanja deavanja, iako Intel koristi druga imena za ova stanja.
Tokom trajanja ovog stanja, (1 PCLK ciklus) procesor eka da odabrani ureaj obradi ili
pripremi podatke. Na kraju ovog perioda, procesor testira stanje na jednom svom pinu, koji se
23
naziva READY# ulaz. Ako je ono logika jedinica (High ), mikroprocesor moe da oita ili
upie podatke i naa maina stanja je zavrila jedan ciklus sabirnice.
Ako se radilo o itanju, READY# signalizira da je ureaj kojem je procesor pristupao stavio
traene podatke na sabirnicu. Procesor tada uitava podatke sa sabirnice u neki svoj registar
i zavri ciklus sabirnice.
22
23

ISA System Architecture, Tom Shanley and Don Anderson, Addison-Wesley Publishing Company 2000. god, str. 25
Razliiti procesori ovdje oekuju razliite signale logiku nulu ili logiku jedinicu.

57

Ako se radilo o pisnju, READY# signalizira da je ureaj kojem je procesor pristupao prihvatio
podatke i upisao ih, pa procesor ponovo zavrava ciklus.
Ovakav nain itanja i pisnja se deava ako nema stanja ekanja (0-wait state). itanje i
pisanje bez stanja ekanja su u stanju da izvravaju procesori poevi od generacije 80286 i
noviji. Znai, 0-wait state ciklus sabirnice kod 386 maine koja radi na 20 MHz trajao bi
100ns.

Svi ciklusi sabirnica sastoje se od dva stanja od vremena za adresiranje i vremena za


podatke. Meutim, kada se zavre ova dva stanja, nee svaki ureaj biti spreman da zavri
ciklus. Neki ureaji su bitno sporiji od mikroprocesora u svom odgovoru na njegov zahtjev za
prenosom podataka. Npr, ako mikroprocesor provjeri svoj READY# pin na kraju prvog
vremena za podatke, ovaj signal ne mora biti potvren od sporijeg ureaja. Drugim rijeima,
sporiji ureaj trai od procesora jo vremena da obradi njegov zahtjev, pa sabirnica ponovo
ulazi u stanje vremena za podatke (data time). Ovo dodatno vrijeme naziva se stanje
ekanja wait state. Tokom ovog dodatnog vremena, nita se ne mijenja CPU
jednostavno eka da istekne novi PCLK ciklus. Zatim, procesor ponovo provjerava svoj
READY# pin da vidi je li ureaj zavrio. Ako nije, postupak se ponavlja, a ako jeste,
mikroprocesor zavrava ciklus sabirnice.
Dakle, dok god dri iskljuenu READY# liniju, sporiji ureaj primorava procesora da
produava ciklus sabirnice, da bi zavrio prenos podataka, kao na slijedeoj slici:

Kompletno vrijeme koje je potrebno da se obavi neka transakcija (bez obzira da li se radi o
oitavanju ili upisivanju podataka) naziva se ciklus sabirnice.

Dalji razvoj sabirnica


Personalni raunari (PC) imaju svoju, posebnu terminologiju kada se radi o sabirnicama. PC
maine obino imaju internu sabirnicu (esto se naziva i System bus ili Front side bus) koja
povezuje CPU, memoriju i ostale interne komponente. Eksterne sabirnice (u literaturi esto i
Expansion bus) povezuju vanjske ureaje, periferije, slotove za proirenja i I/O portove sa
ostatkom raunara.
Uporedo sa razvojem mikroprocesora, razvijala se i tehnologija matinih ploa i sabirnica.
Procesori danas na matinoj ploi imaju podruku u vidu ipseta koji ih povezuje sa ostalim
komponentama sistema. Dananji ipset se u osnovi sastoji od dva mona integrisana kola
koja nose imena north i sout bridge (sjeverni i juni most). Ova dva integrisana kola ponaaju

58

se u osnovi kao komunikacioni vorovi (hub-ovi). North bridge kontrolie prenose podataka
velike brzine izmeu mikroprocesora, memorije, grafikog sistema i south bridge-a. S druge
24
strane, sporiji I/O prenosi podataka ostvaruju se preko south bridge-a . Ova dva kola se u
rijetkim sluajevima mogu nai i na jednom ipu, ali se u glavnom izvode odvojeno, a njihov
dizajn nije standardizovan ve ih svaki proizvoa projektuje prema svojim potrebama.
Razlog za odvajanje veze memorije i grafikog sistema od veza ostalih sklopova lei u velikoj
razlici u brzini tastatura ili hard disk su danas toliko sporiji od nekog memorijskog ipa i
procesora da se viestruko isplati odvojiti poseban, jeftiniji kontroler i sabirnicu za
komunikaciju sa ovakvim, sporim ureajima. Kod Intelovih Sandy Bridge i AMD-ovih
Fusion procesora, sjeverni most se nalazi u okviru tijela samog procesora.
Slijedea slika prikazuje tipinu matinu plou koja se danas koristi:

CPU

Slot za grafiku
kartu

Clock

Front side
bus

Veoma brzi grafiki bus


AGP ili PCI express

Northbridge

Memorijski
slotovi
Memorijski
bus

(hub za kontrolu
memorije)

PCI bus

Integrisani
grafiki
kontroler

Southbridge
PCI bus

(hub za kontrolu I/O


ureaja)
IDE
SATA
USB
Ethernet
Audio

PCI slotovi
za proirenje
LPC
bus

BIOS

Kablovi i portovi
koji izlaze van
matine ploe

Super I/O
Serijski port
Paralelni port
Floppy disk
Tastatura
Mi

Na prethodnoj slici pored dva navedena kontrolera vidimo i vei broj razliitih sabirnica FSB,
LPC, PCI bus itd. iju emo funkciju obraditi neto kasnije. Za sada je potrebno primjetiti da
su svi sporiji ureaji povezani sa procesorom preko junog mosta, dok su brza memorija i
grafika sa procesorom vezani preko sjevernog mosta.
U dananjoj arhitekturi raunara postoji jo jedna tendencija prebacivanje kompletnog
sjevernog mosta na tijelo procesora radi jo veeg ubrzanja rada raunara (Sandy Bridge).
Ova tendencija se javlja kod AMD-a od procesora AMD64, a kod Intela od njihovih Nehalem
procesora.

24

The Intel Microprocessors Hardware and Software Principles and Applications

59

Prekidi (interrupts)
U prethodnim poglavljima smo se upoznali sa osnovnim pojmovima kao to je procesor, ALU,
kontrolna jedinica, sabirnica i memorija. Meutim, za pozpunije razumjevanje osnovnih
pojmova i njihove komunikacije sa procesorom moramo upoznati jo jedan koncept prekide
(interrupts). Da bi podrobnije opisali problem komunikacije razliitih sklopova sa procesorom,
moramo sebi postaviti nekoliko pitanja. Kako procesor komunicira sa ureajima ije
ponaanje nije unaprijed poznato? Da li procesor neprekidno ispituje stanja ureaja u sistemu
(ureaj po ureaj) i gubi vrijeme ekajui na njihove odgovore? ta se deava u raunaru
kada korisnik pritisne neki taster na tastaturi dok istovremeno neki program zahtjeva da
procesor vri neka obimna izraunavanja? Ili ta se deava ako doe do neke fatalne greke
u nekom od sklopova istovremeno dok procesor izvrava neki program?
Da bi shvatili nain funkcionisanja interapta, naem relativno jednostavnom modelu raunara
sa sabirnicom emo dodati jo samo jedan sklop kontroler tastature. Pretpostaviemo da je
ovaj sklop vezan na jednoj strani za tastaturu, a na drugoj za sabirnicu raunara. Ako korisnik
npr. pritisne neki taster, tastatura e kontroleru proslijediti signal sa informacijom o tome koji
je taster pritisnut. Ovaj kontroler ima zadatak da procesoru dostavi informaciju o tome koji je
taster pritisnut. Ako je procesor zauzet neko vrijeme, ovaj kontroler moe zadrati u svojoj
25
internoj memoriji (u nekom buffer -u) podatke o nekoliko pritisnutih tastera. Meutim, ova
interna memorija na kontroleru nije neograniena - ako je procesor zauzet na due vrijeme,
ona e se prepuniti podacima. Da bi se izbjegle situacije u kojima bi moglo doi do gubitka
podataka uslijed zauzetosti procesora i prepunjenosti bafera, ovakav kontroler mora imati
mogunost da signalizira procesoru da je neki taster pritisnut, a tu mogunost mu daje
mehanizam prekida ili interapta. Pomou ovakvog pristupa postignut je jo jedan cilj
procesor nee gubiti vrijeme ispitujui ureaj po ureaj koji se nalazi u sistemu. Na ovaj nain
je na ureaje prebaena odgovornost da poalju signal procesoru ako je dolo do neke
promjene njihovg stanja.
Dakle, kada god neki sklop (ili program) mora da preusmjeri panju mikroprocesora sa starog
programa koji je do tog trenutka izvravao na neki drugi program (ili potprogram) deava se
26
27
interapt . Ovakav interapt se kontrolnim linijama prenosi od navedenog sklopa do
procesora. Potprogram koji obrauje zahtjev za prekidom naziva se interrupt handler ili
interrupt service routine (ISR). Svaki interapt e obino imati vlastiti program, odnosno
vlastitu ISR rutinu. O ovim potprogramima e detaljnije biti rijei neto kasnije, kada budemo
obraivali mikroprocesore 8085 i 8086.
Da bi pravilno obradio ovakvu vrstu prekida, procesor mora da bude u stanju da na neki nain
memorie svoje trenutno stanje sadraj svojih registara sa rezultatima i meurezultatima
kao i mjesto do kog je doao tokom izvrenja programa. Za memorisanje trenutnog stanja
procesor najee koristi stek. Nakon to je na steku zapamtio svoje trenutno stanje,
procesor mora da obradi prekid (npr. neki koji dolazi sa kontrolera tastature), a zatim treba da
u svoje registre iz steka uita ranije zapameno stanje i da nastavi sa normalnim
izvravanjem prethodno prekinutog programa od mjesta na kom je prekinut.
Neki interapt moe biti pokrenut razliitim uzrocima:
1.
2.
3.
4.
5.

I/O zahtjevima,
Aritmetikom grekom (kao to je dijeljenje sa nulom ili prekoraenje),
Neispravnou hardvera (npr. memory parity error),
Na osnovu zadate prekidne take (kao kod dibagiranja programa),
Zbog neispravne instrukcije (zbog pogrene upotrebe pointera) itd.

Razliiti interapti oznaavaju se razliitim brojevima i okidaju na razliite dogaaje u sistemu.


Neki od njih se pokreu hardverski a neki softverski. Hardverske prekide generiu ureaji
poput tastature, mia ili nekog kontrolera koji signalizira procesoru neki dogaaj. Softverski
interapti generiu se kada procesor izvri neku instrukciju npr. kada iz asemblera pozivamo
INT funkciju.
Ako imate dovoljno godina da poznajete operativni sistem DOS, moda se sjeate famoznog
interapta INT 21h, koji je igrao ogromnu ulogu u povezivanju aplikacija sa sistemskim
pozivima. Npr. pozivanjem ovog interapta sa podeenim odgovarajuim vrijednostima u
25

Buffer fragment memorije koji se koristi za privremeno smjetanje podataka


http://www.cap-lore.com/Hardware/int.html
27
I kontrolne linije su provodnici ice. Pogledajte poglavlje Arhitektura raunara sa sabirnicom (magistralom)
26

60

registrima mogli ste da iz vaeg programa oitate ili upiete bajt na ekran, na tampa, da
otvorite ili obriete neku datoteku itd. Generalno, softverski interapti slue za povezivanje
aplikacija sa odreenim sistemskim uslugama.

61

3.2. Osnove funkcionisanja raunara


U osnovi rad raunara je baziran na programu koji se nalazi u operativnoj memoriji i koji se
izvrava tako da procesor oitava (pribavlja) iz operativne memorije i izvrava jednu po jednu
instrukciju programa.
U skladu sa time, osnovne faze rada raunara su:

Oitavanje (pribavljanje) instrukcije,


Izvravanje instrukcije
Priprema za oitavanje slijedee instrukcije

Osnovne faze se naizmjenino ponavljaju dok god je raunar ukljuen. Pojednostavljeno, na


osnovu toga, rad raunara se moe prikazati dijagramom toka datim na sledeoj slici:

Start

Ukljueno
napajanje

Stop

Oitavanje
instrukcije iz
memorije

Izvravanje
instrukcije

Priprema za
oitavanje
slijedee
instrukcije

Dakle, instrukcije koje procesor treba da izvri se uvjek ve nalaze u operativnoj memoriji
(RAM). Ovo je vrlo logino sa aspekta brzine i konstrukcije raunara. to se brzine tie, ovo je
najbra mogua varijanta za izvravanje programa ako samo zamislimo situaciju u kojoj
procesor mora da oita instrukciju sa nekog sporog flopi diska, takav program bi se izvravao
veoma, veoma dugo. S druge strane, konstruisanje procesora koji bi morao da zna da oitava
instrukcije sa veoma velikog broja razliitih ureaja bio bi veoma skup i obiman zadatak.
Da bi obogatili nae znanje o raunarima, posmatraemo ponaanje jednog jednostavnog
hipotetikog raunara u njegovom radu. Pretpostavimo da na hipotetiki raunar koristi
binarni brojni sistem sa drugim komplementom. Njegov procesor posjeduje aritmetikologiku jedinicu koja je zaduena za obavljanje aritmetikih i logikih operacija i kontrolnu
jedinicu koja koordinira i upravlja radom svih ostalih sklopova u sistemu.
Iako dananji procesori imaju veoma veliki broj registara razliite funkcije i namjene, u ovom
procesoru emo radi jednostavnosti koristiti samo sedam registara. Naem hipotetikom
raunaru emo dodjeliti 4kB operativne memorije (RAM) koju emo adresirati bajt po bajt (04095), tako da e nam za adresiranje kompletne memorije biti dovoljno 12 bita. U ovu
memoriju emo uitati program koji raunar treba da izvri a istovremeno emo je korisititi i da

62

u njoj drimo podatke koje raunar treba da obradi. U ovom momentu, neemo se baviti
nainom na koji emo uitati program u memoriju pretpostaviemo da se on uitava sa
nekog vanjskog medija. Sama tehnika uitavanja nam za objanjenje rada ovog raunara nije
interesantna i neemo je dalje razmatrati.
Sastavni dijelovi ovakvog hipotetikog raunara su dati na slijedeoj slici:

Procesor naeg hipotetikog raunara ima slijedeih 7 registara:


AC akumulator (16 bita) je registar opte namjene. U njega emo smjetati podatke koje
CPU treba da obradi. Veina dananjih raunara ima mnogo vie ovakvih registara.
MAR registar za memorijsku adresu ili Memory Address Register (12 bita) je registar
u kojem emo drati adresu memorijske lokacije kojoj pristupamo bez obzira da li se radi o
itanju ili upisivanju podataka. Ovaj registar ima 12 bita jer nam vie ne treba za adresiranje
12
kompletne operativne memorije (2 = 4096).
MBR registar tampon zona ili Memory Buffer Register (16 bita) je registar u koji emo
smjetati podatke neposredno pred njihovo upisivanje u memoriju ili neposredno po njihovom
oitavanju iz memorije.
PC programski broja ili Program Counter (12 bita) je registar koji uvijek dri
memorijsku adresu slijedee instrukcije koju treba izvriti. Na prethodno prikazanom
dijagramu toka vidjeli smo da se programi uvjek izvravaju iz opertivne memorije. Nakon
izvrenja svake instrukcije, zadatak kontrolne jedinice je da promjeni sadraj ovog registra
tako da on pokazuje na slijedeu instrukciju koju treba izvriti. Ovakav registar se esto
naziva i pokaziva instrukcije (Instruction Pointer, IP).
IR registar instrukcije ili Instruction Register (16 bita) registar u koji se smjeta
instrukcije koja je oitana iz memorije i koju treba izvriti. Dakle, svaka instrukcija naeg
procesora e biti 16 bita dugaka.
InReg ulazni registar ili Input Register (16 bita). Podaci koje na raunar treba da uita
sa nekog ulaznog ureaja (sa tastature) se najprije prebacuju u ovaj registar.
OutReg izlazni registar ili Output Register (16 bita). Obraeni podaci koje je potrebno
ispisati na izlazni ureaj (monitor) se pred izlazak iz procesora prebacuju u ovaj registar.
Jedan dio opisanih registara (PC, IR) ima vrlo specifinu namjenu. Ako bi programeru bilo
dozvoljeno da proizvoljno mijenja sadraj npr. registra IR, koji dri prethodno oitanu
instrukciju iz memorije, moglo bi doi do nepravilnog izvrenja programa ili pada sistema. U
ovom registru uvijek se mora nalaziti instrukcija iz definisanog skupa instrukcija koji smo mi,

63

kao konstruktori ovakvog raunara predvidjeli. Pored toga, instrukcija u ovom registru mora
biti formatirana po pravilima koja ponovo utvrujemo mi konstruktori ovakvog raunara.

ISA arhitektura - Instruction Set Architecture


ISA arhitektura bilo kog procesora odreuje koje instrukcije e takav raunar moi da izvrava
kao i taan format svake instrukcije. Pojedine ISA arhitekture sastoje se od vie stotina
instrukciija. Ipak, na procesor e, radi jednostavnosti moi da izvrava mnogo manji broj
instrukcija. Ve smo spomenuli da bilo koja instrukcija naeg procesora mora da bude 16 bita
dugaka. Ovih 16 bita emo podijeliti na dva dijela, tako da u prva 4 bita smjestimo
operacioni kod, koji procesoru govori koju instrukciju treba da izvri, dok e preostalih 12
bita moi da dri operand - najee adresu na kojoj se nalazi podatak koji elimo da
obradimo. Ovakav pristup je uobiajen i u dananjim modernim raunarima.

Skup instrukcija koji e na raunar moi da izvrava dat je u slijedeoj tabeli:


Kod instrukcije
Binarno
Heksa-

0001
0010
0011
0100
0101
0110
0111
1000
1001

decimalno
1
2
3
4
5
6
7
8
9

Instrukcija

Znaenje

Load X
Store X
Add X
Sub X
Input
Output
Halt
JmpCond
Jmp X

Uitaj sadraj sa adrese X u AC


Smjesti sadraj registra AC na adresu X
Dodaj sadraj adrese X registru AC i smjesti u AC
Oduzmi od AC sadraj adrese X i smjesti u AC
Uzmi pritisnuti kod sa tastature i smjesti u AC
Ispii sadraj registra AC na monitoru
Zavri program
Uslovni skok, preskoi slijedeu instrukciju ako je AC=0
Bezuslovni skok na adresu X

Razmotriemo malo detaljnije format instrukcije naeg hipotetikog raunara. Pretpostavimo


da je u IR registar uitana slijedea instrukcija:

Prva etiri bita, koja ine operacioni kod su (0001)2. U prethodnoj tabeli vidimo da se radi o
Load instrukciji. Ostalih 12 bita (000001100100)2 ine adresu sa koje treba uitati podatak.
Dakle, sa stotog bajta u memoriji treba uitati podatak i smjestiti ga u registar AC. Meutim,
veliina registra AC je 16 bita, a naa memorija je organizovana bajt po bajt. Uitavanjem
samo podatka sa decimalne adrese 100 popunili bi samo 8 bita registra AC iako je veliina
ovog registra 16 bita. Ovo nas vodi do jo jednog vanog koncepta koji je temelj velikog broja
programskih jezika pointera.
U realnom svijetu raunari i njihovi programski jezici poznaju pojam pointera ili pokazivaa.
Svaki podatak ima svoj tip (Byte, Char, Word isl) koji odreuje njegovu duinu. Svaki pointer
koji pokazuje na neki podatak odreenog tipa ima istu duinu kao tip podatka na koji
pokazuje. Pointeri pokazuju na odreenu adresu u memoriji, tako da npr. oitavanjem
vrijednosti koja se nalazi na navedenoj memorijskoj lokaciji, dobijamo podatak ija je duina
odreena tipom pointera. Dakle, ako je pointer tipa Byte, oitavanjem vrijednosti dobiemo 8
bita, a ako je tipa Word oitavanjem emo dobiti 16 bita.
Zbog toga emo i naem raunaru i njegovom skupu instrukcija dodati i ovu mogunost. U
registar AC moe da stane tip podatka Word (16 bita), tako da e prilikom oitavanja
memorije u njega biti uitani podaci sa decimalnih adresa 100 i 101, odnosno 16 bita.
Pretpostaviemo da je u registar IR uitana npr. slijedea instrukcija:

64

Operacioni kod ove instrukcije je (0011)2. Iz tabele vidimo da se radi o Add instrukciji koja
treba da sabere vrijednost u registru AC sa sadrajem adrese (000001100110)2 i da rezultat
ponovo upie u AC registar. I ovdje vai isto pravilo drugi sabirak e ponovo 16 bita
dugaak, odnosno sadraj adresa 102 i 103.
Ako bi htjeli da zavrimo sa izvrenjem naeg programa, u registru IR bi morala biti uitana
instrukcija Halt:

Iako je skup instrukcija naeg hipotetikog raunara veoma mali, pisanje programa
koritenjem binarnih brojeva predstavljalo bi nonu moru. Program koji treba da izvri
prethodno opisane 3 instrukcije u binarnom obliku izgledao bi ovako:
0001 000001100100
0011 000001100110
0111 000000000000
Prethodno prikazane instrukcije nazivaju se mainske instrukcije ili mainski kod. Pisanje
programa koritenjem mainskih instrukcija je jako nepregledno i sporo. Ako bi umjesto
mainskih instrukcija mogli da koristimo komande Load, Add i Halt, isti program bi imao
slijedei izgled:
Load 100
Add 102
Halt
Veini ljudi imena instrukcija ili mnemonici su mnogo itkiji i jednostavniji za koritenje. Ako
svaka mainska instrukcija ima odgovarajui mnemonik, onda imamo vezu jedan-premajedan u kojoj je svaki mainski kod jednoznano odreen odgovarajuim mnemonikom. Skup
svih mnemonika koji opisuju skup instrukcija naeg raunara naziva se njegov asemblerski
jezik. Da bi mogli da izvravamo program napisan koritenjem mnemonika, moramo ga
najprije prevesti u binarni oblik, odnosno u mainske instrukcije. Za ovu svrhu koriste se
programi prevodioci ili kompajleri, koje emo detaljnije obraditi neto kasnije.
Do sada smo odreene instrukcije posmatrali u sluaju kada su se one ve nalazile u
procesoru, uitane u IR registar. Meutim, prije uitavanja u ovaj registar instrukcije su se
nalazile u memoriji naeg raunara. Kako smo ve rekli, pretpostaviemo da imamo
mogunost da instrukcije uitavamo u memoriju sa nekog eksternog medija, pri emu nas
trenutno ne interesuje tehnika njihovog prebacivanja sa tog medija u operativnu memoriju.
Ono to jo moramo utvrditi je gdje emo u memoriji (na koju adresu) smjestiti instrukcije
nekog programa i kojim redoslijedom emo to uiniti. Najjednostavnije rjeenje bilo bi da
instrukcije ponemo uitavati od nulte adrese i da ih slaemo u memoriju onim redom kojim
se one pojavljuju u programu. Veina dananjih raunara koristi ovaj princip - instrukcije
nekog programa se smjetaju u uzastopne memorijske lokacije onim redom kojim se i
izvravaju.
Zadatak registra PC je da uvjek pokazuje na adresu memorijske lokacije u kojoj se nalazi
slijedea instrukcija koja treba biti izvrena. Sadraj programskog brojaa PC naeg
hipotetikog raunara uveava se nakon svake izvrene instrukcije za za veliinu jedne
instrukcije. Kako je jedna instrukcija dugaka 16 bita, nakon svake izvrene instrukcije sadraj
ovog registra e biti uvean za 2 - pokazivae na memorijsku lokaciju koja je 2 bajta dalje od
prethodne. Ovakav nain uzimanja instrukcija iz memorije naziva se jo in-line uzimanje
koda. U sluaju ovakvog, linijskog uzimanja koda, kontrolna jedinica ima jednostavan zadatak
ona se ponaa vie-manje kao broja.
Meutim, ako je neka od instrukcija u programu koji izvrava na raunar instrukcija skoka ili
grananja (Jmp ili JmpCond) doi e do naruavanja linijskog uzimanja instrukcija iz memorije.
U ovom sluaju, kontrolna jedinica ima neto tei zadatak. Pretpostavimo da u IR registru
imamo slijedeu instrukciju:

65

Operacioni kod ove instrukcije (1001)2 govori nam da se radi o instrukciji bezuslovnog
skoka (Jmp). Kada naie na ovu instrukciju, procesor ne radi nita posebno on
jednostavno mora da nastavi sa izvravanjem programa od mjesta u memoriji na koji
pokazuje adresni dio instrukcije (000000000100)2. U naem sluaju, procesor e nastaviti da
izvrava program od instrukcije koja se nalazi na adresi 4. Dakle, u sluaju bezuslovnog
skoka, kontrolna jedinica treba samo da podesi sadraj PC registra na instrukciju koja je
naznaena u adresnom dijelu.
Ostaje nam jo da razmotrimo ta se deava u sluaju uslovnog skoka. Pretpostavimo da u
IR registru imamo slijedeu instrukciju:

Operacioni kod ove instrukcije (1000)2 govori nam da se radi o instrukciji uslovnog skoka
(JmpCond). Kada doe do ove instrukcije, procesor najprije mora da provjeri da li je sadraj
AC registra jednak nuli. Ako jeste, onda treba preskoiti prvu slijedeu instrukciju programa
koja se nalazi u memoriji. Ako nije, nastavlja se izvravanje programa linijskim uzimanjem
koda iz memorije. Ovo je samo vrlo jednostavan primjer koji je odabran tek da ilustruje
koncept uslovnog skoka. Uslovni skokovi u realnim mainama su neto komplikovaniji, a
postoji nekoliko razliitih vrsta ovakvih skokova.
Prethodno prikazane instrukcije ne zahtjevaju navoenje registra u koji treba smjestiti rezultat.
Kao konstruktori ovog hipotetikog raunara predvidjeli smo da je podrazumjevana lokacija za
smjetanje rezultata AC registar. Ovakve instrukcije nazivaju se implicitne instrukcije. Da
smo pri definisanju naeg skupa instrukcija predvidjeli mogunost da se navede registar u koji
emo upisati rezultat (ali i registar iz kojeg treba npr. oitati neku vrijednost), ovakve
instrukcije bi spadale u grupu eksplicitnih instrukcija.
Do sada smo u objanjavanju rada naeg hipotetikog raunara radi jednostavnosti
izbjegavali da u razmatranje ukljuujemo sabirnicu. Meutim, svi prenosi podataka iz
memorije i u nju ukljuuju korienje sabirnice. Sabirnicu naeg hipotetikog raunara emo
zadrati u najjednostavnijoj moguoj formi pretpostaviemo da je to obina 16-bitna
sabirnica i da povezuje memoriju i sve registre koji se nalaze u procesoru. Takoe emo
pretpostaviti i da unutar procesora postoje posebni komunikacioni kanali (interne sabirnice)
koji povezuju registre MAR i IR te MBR sa registrom AC. MAR registar dri memorijsku
adresu sa koje treba oitati ili u koju treba upisati podatak. Prije svakog oitavanja/upisivanja,
iz registra instrukcije IR se izdvaja adresni dio (12 bita) i prebacuje u MAR registar. MBR
registar slui kao bafer u koji podatak iz AC registra odlazi neposredno pred njegovo
upisivanje u memoriju, a u sluaju oitavanja iz memorije, podatak se smjesti najprije u MBR
pa tek potom u AC registar.

Vidjeli smo da mainske instrukcije koje smo do sada opisivali imaju veoma jednostavnu
formu i da je osnovni zadatak ovih instrukcija da objasne hardverskim komponentama naeg
hipotetikog raunara na koji nain trebaju da izvre program. Na prvi pogled, sve ove
instrukcije izgledaju veoma jednostavno, ali ako dublje razmislimo ta se dogaa u pozadini,

66

na nivou pojedinih registara i sabirnice, vidjeemo da izvrenje bilo koje instrukcije ukljuuje
nekoliko operacija.
Npr. Load instrukcija treba da uita sadraj sa neke memorijske lokacije u AC registar.
Meutim, to se ostvaruje pomou nekoliko mini-instrukcija:
1. Najprije se adresa iz operanda instrukcije (12 bita iz IR registra) mora prebaciti u
MAR registar preko internog komunikacionog kanala.
2. Nakon toga, adresa koja se nalazi u MAR registru se izbacuje na sabirnicu, da bi
preko sabirnice dola do memorije. Sada memorija zna sa koje lokacije treba da oita
podatak.
3. Podatak koji se nalazi na navedenoj lokaciji u memoriji sada se mora preko sabirnice
prebaciti u MBR registar.
4. Tek nakon toga, korienjem internog komunikacionog kanala, moemo prebaciti
traeni podatak iz MBR registra u AC registar.
Dakle, svaka instrukcija mikroprocesora se u praksi realizuje kao niz mikro-operacija ili
mikro-instrukcija, a niz ovakvih mikro-instrukcija koji je potreban da bi se izvrila jedna
mainska instrukcija naziva se mikro-program. Dananji proizvoai procesora najee
koriste ovakav, mikroprogramski pristup pri realizaciji svojih procesora.
Ovdje smo upoznali jo jedan novi koncept. Interni komunikacioni kanali koji povezuju razliite
dijelove procesora zaista postoje i u pravim procesorima i nazivaju se interne sabirnice
(internal bus). Ovdje je najmjerno koriten izraz interni komunikacioni kanali, da bi se
podvukla razlika u odnosu na vanjsku sabirnicu koja povezuje procesor i memoriju naeg
hipotetikog raunara.

67

4. Mikroprocesori
Procesor ili CPU je srce svakog raunara. U procesoru se vri stvarna obrada podataka u
raunaru u skladu sa nekim programom koga on izvrava. Prije fon Nojmanove ideje,
kompjuteri sa fiksnim programom su bili programirani na taj nain da su za izvrenje svakog
novog programa u njih fiziki ubacivani novi sklopovi koji su zatim povezivani na drugaiji
nain. Od ovog vremena do danas, CPU je preao dugaak put tokom kojeg su njegovi
osnovni elementi bili elektrini releji, vakuumske cijevi da bi preko diskretnih tranzistora doao
do integrisanih kola razliitog stepena integracije. Prvi komercijalno dostupan mikroprocesor
koji se bazirao na tehnologiji integrisanih kola bio je Intel 4004 iz 1970. godine, dok je prvi
iroko korien mikroprocesor bio Intel 8080 iz 1974. godine.
U ovom poglavlju emo obraditi dva mikroprocesora koji su ostavili veliki trag i udarili temelje
moderne arhitekture raunara Intel 8085 i 8086.

4.1. Mikroprocesor Intel 8085


Mikroprocesor Intel 8085 je bio 8-bitni procesor koji je nastao na temeljima prethodnog
Intelovog mikroprocesora 8080. Ovaj procesor je koristio samo jedno napajanje od +5V
otuda i broj 5 u njegovom nazivu. Njegovom prethodniku 8080 je bilo potrebno vie razliitih
izvora napajanja (+5V, -5V, +12V). Ovaj mikroprocesor bio je realizovan kao jedno
integrisano kolo sa 40 prikljuaka (pinova) a bio je zasnovan na fon Nojmanovom modelu
raunara.
Procesor 8085 je imao sedam 8-bitnih registara opte namjene koji su nazvani A, B, C, D E,
H i L, gdje je registar A imao ulogu akumulatora. Pored ovoga, procesor je imao dva 16 bitna
registra PC program counter i SP Stack pointer. Registar PC automatski se uveava pri
izvrenju svake instrukcije tako da uvijek pokazuje na slijedeu instrukciju koju procesor treba
da izvri. Registar SP uvijek pokazuje na vrh steka i automatski se uveava ili umanjuje sa
dodavanjem ili skidanjem podataka sa steka. Registar Flags koji je takoe 8-bitni dri podatke
o prethodno izvrenoj instrukciji (kao ranije opisani Status registar). Pored navedenih
registara, ovaj procesor posjeduje i jedan odvojeni flip-flop koji se naziva IE (Interrupt Enable)
bit ili bit maske prekida.

Mikroprocesor Intel 8085 se na tritu pojavio jo davne 1977. godine. Iako veoma star,
njegova struktura i njegovog funkcionisanja se i danas izuavaju. U ovom procesoru su
objedinjene mnoge ideje i koncepti koji se i danas koriste pri konstruisanju procesora. Zbog
toga, ali i zbog njegove relativne jednostavnosti u odnosu na konstrukciju savremenih
procesora, jo uvjek se mogu nai brojne knjige koje su u cjelini ili djelimino posveene
ovom procesoru.

4.1.1.

Programski model - osnovni registri procesora 8085

Kroz diskusiju o registrima mikroprocesora 8085 obuhvatiemo generalne koncepte koji vae
i za konstrukciju bilo kojeg drugog mikroprocesora. Na prethodnoj slici prikazali smo osnovne
registre mikroprocesora 8085. U pravilu, svaki mikroprocesor posjeduje neto iri skup
registara, koji se u glavnom navode samo na dijagramima koji detaljnije opisuju nain rada
procesora.

68

Programski model procesora ine oni registri procesora koji su dostupni programeru, tj. iji se
sadraj moe izmijeniti izvravanjem instrukcija programa ili se moe ispitati pomou
instrukcija programa. U registre koji ine programski model procesora spadaju:
1. akumulator i registri opte namjene,
2. adresni registri (PC i SP)
3. registar bita stanja (Flags)
Osim tih registara koji su dostupni programeru, procesor posjeduje jo neke registre koji se
koriste i iji se sadraj mijenja u toku izvravanja programa, ali im se ne moe pristupiti
programski. To su:
1.
2.
3.
4.

registar instrukcije,
privremeni registar,
registar adrese (ili bafer adrese),
registar podatka (ili bafer podatka)

Akumulator
Akumulator je veoma vaan registar koji se gotovo uvijek pojavljuje na svim blok emama.
Ovaj registar je podrazumjevani argument mnogih instrukcija mnoge instrukcije su
projektovane tako da ga koriste bez navoenja njegovog imena (implicitno). Npr. instrukcija
ADD B e koristiti akumulator, iako ga u instrukciji nismo naveli. U njemu se uvijek nalazi
jedan od operanada koji ALU koristi u radu, dok se drugi operand se nalazi u privremenom
registru. Rezultat izvravanja aritmetike ili logike operacije obino se ponovo upisuje u
akumulator.
Primjer: Pretpostavimo da se na nekoj memorijskoj lokaciji M nalazi broj 510 i da je u
akumulatoru smjeten broj 110. Instrukcija ADD M sabira trenutne sadraje
memorijske lokacije M (broj 5) i akumulatora (broj 1) i rezultat ponovo smjeta u
akumulator. Da bi izvrio operaciju sabiranja, procesor e najprije sadraj memorijske
lokacije M prebaciti u privremeni registar, kao na slici:

Na osnovu broja bita akumulatora obino se definie tip procesora. Tako postoje 8-bitni, 16bitni, 32-bitni procesori, 64 bitni procesori.
Procesor 8085 ima 8-bitni akumulator zbog toga smo u poetku diskusije rekli da je on 8bitni procesor. Kako se sadraj akumulatora moe oitati ili izmjeniti koritenjem odreenih
instrukcija procesora, kae da je taj registar dostupan programeru.

Adresni registri
Adresni registri su registri iji se sadraj koristi za adresiranje lokacija u operativnoj memoriji
ili I/O sklopovima. Kako smo vidjeli, sadraj nekog od adresnih registara se izbacuje na
sabirnicu radi pristupa podacima ili instrukcijama koje su smjetene na navedenoj adresi.
Osnovni adresni registri u zavisnosti od njihove funkcije su:
1.
2.
3.
4.

programski broja
pokaziva steka
pokaziva podatka i
indeksni registar.

Treba rei i da nemaju svi mikroprocesori sve navedene registre - 8085 posjeduje programski
broja (PC), pokaziva steka (SP) i neku vrstu pokazivaa podataka u vidu registra M o kome
e biti rijei kasnije.
Programski broja (PC-Program Counter) je jedan od najvanijih registara za shvatanje
naina funkcionisanja procesora i raunara. To adresni registar u kojem se uvijek nalazi
adresa sljedee instrukcije programa koji procesor izvrava. Vidjeli smo da prije izvravanja
odreene instrukcije procesor mora prvo da je oita memorije - sa lokacije na koju pokazuje

69

sadraj programskog brojaa. U toku izvravanja te instrukcije sadraj programskog brojaa


se automatski mijenja tako da adresira slijedeu instrukciju programa koju procesor treba da
izvri.
Duina operacionog koda jedne instrukcije procesora 8085 je 1 bajt. Kako se programi
najee izvravaju redoslijedom kojim su uneseni (In-Line), pri izvravanju programa sadraj
programskog brojaa se uveava najee za 1.
Primjer: Pretpostavimo da je sadraj registra PC 100h (on pokazuje na memorijsku
lokaciju 100h). Pretpostavimo da se u memoriji nalazi instrukcija MVI B, 5 iji je
zadatak da u registar B upie broj 5. U memoriji e to biti prikazano slijedeim nizom
bajta:
Lokacija Hex kod Mnemonik
100
06
MVI B,
101
05
5
`
`
...
Prisjetimo ranije opisanih mikrooperacija koje procesor mora da izvede pri izvrenju
neke instrukcije. Izvravanje instrukcije MVI B, 5 bi mogli opisati pomou slijedeih
mikrooperacija:
1) Procesor uitava heksadecimalni kod (06h) sa lokacije 100h.
2) Njegov dekoder raspoznaje instrukciju MVI B koja zahtjeva jedan argument. Sada
procesor uveava sadraj programskog brojaa za 1.
3) Procesor uitava argument - broj (5h) sa lokacije 101h, izvrava instrukciju i
ponovo uveava sadraj programskog brojaa za 1.
Pri realizovanju instrukcija skokova i grananja u programu sadraj programskog brojaa se
mijenja na drugi nain, ali opet tako da adresira onu instrukciju koju treba sljedeu pribaviti i
izvriti.
Broj bita programskog brojaa bilo kog procesora zavisi od toga koliki je adresni prostor
procesora, tj. koliko lokacija operativne memorije procesor moe direktno da adresira. Ako je
n
broj bita programskog brojaa n tada on moe adresirati 2 memorijskih lokacija. Broj bita
registra PC procesora 8085 je 16, tako da on moe da adresira 64 kB memorije (65536
bajta).
Pokaziva steka (SP-Stack Pointer) je takoe veoma vaan registar koji se nalazi u svakom
procesoru. SP je adresni registar u kojem se nalazi pokaziva na vrh steka. Kako smo ve
naveli, stek je memorijska struktura LIFO tipa (Last In, First Out) to znai da se onaj podatak
koji je posljednji upisan prvi oitava.
Ve smo opisali da se stek koristi u radu sa prekidima da bi procesor mogao da memorie
svoje trenutno stanje, odnosno taku do koje je doao u izvrenju glavnog programa. Kako
smo ve upoznali programski broja, vi ve pogaate da e na steku sigurno biti sauvan
njegov sadraj da bi procesor nakon zavretka potprograma mogao da nastavi sa izvrenjem
glavnog programa. Na steku e takoe biti sauvani i sadraji ostalih registara, da bi se
sauvali meurezultati izraunavanja glavnog programa.
Stek se u veoma starim raunarima mogao realizivati na samom procesoru to je bila tzv.
sklopovska realizacija steka. Meutim, danas se kao on realizuje iskljuivo u okviru
operativne memorije raunara. Ovakav nain realizacije naziva se programska realizacija
steka. Stek se u memoriji raunara moe nai bilo gdje, to zavisi od odluke njegovih
projektanata. Vrlo esti su sluajevi da se stek nalazi na poetku ili na kraju nekog bloka
memorije. Pretpostavimo da imamo sluaj nekog hipotetikoh raunara kod koga stek poinje
od adrese 010 sadraj SP registra e pokazivati na adresu 010 u RAM memoriji. Instrukcija
PUSH D tog raunara slui da gurne jedan bajt podataka iz registra D na stek. Nakon
izvrenja ove instrukcije, pokaziva steka SP e automatski biti uvean za 1 i pokazivae na
lokaciju 110 u memoriji. Nakon jo jednog izvrenja iste instrukcije, SP e pokazivati na
lokaciju 210. Instrukcija POP D takvog raunara skida jedan bajt podataka sa steka u njegov
registar D i istovremeno automatski umanjuje sadraj registra SP za 1. Nakon izvrenja ove
instrukcije, sadraj SP e dakle, biti umanjen i pokazivae na lokaciju 110.
Ako u istom tom hipotetikom raunaru njegovi konstruktori izmjene mjesto gdje se nalazi
stek, tako da on poinje od zadnje memorijske lokacije, npr. 6553610 tada e se pri
izvravanju instrukcije PUSH morati da podese da se sadraj registra SP automatski
umanjuje za 1. Nakon izvrenja dvije ovakve instrukcije, SP e pokazivati na lokaciju 65534, a

70

nakon izvrenja jedne POP instrukcije, SP e automatski biti uvean za 1, i pokazivae na


lokaciju 65535.
65536
PUSH
automatski
umanjuje
Stek

65535

RAM
PUSH
automatski
uveava
Stek

1
0

Potrogrami su grupe instrukcija koje su napisane i smjetene odvojeno od glavnog


programa. Potprogrami izvravaju odreene funkcije koje se esto ponavljaju u glavnom
programu. Kako su prekidi u stvari samo posebna vrsta sistemskih potprograma, procesor u i
sluaju potprograma mora da izvri u osnovi iste operacije koje radi u sluaju prekida.
Primjer: Pretpostavimo da imamo neki hipotetiki raunar koji ima samo etiri 8-bitna registra
PC, SP, A i B. Stek ovog raunara nalazi se na kraju memorijske mape. Ovakav stek se jo
naziva auto-dekrementirajui. SP ovakvog raunara pokazuje na lokaciju 256 (Zato?).
Potprogrami takvog raunara se pozivaju funkcijom CALL. Kada procesor pri izvravanju
glavnog programa naie na operacioni kod instrukcije CALL, on mora da izvri nekoloko
slijedeih koraka:
1. Sauva sadraj registra PC na steku i umanji sadraj registra SP za 1,
2. Skoi na adresu potprograma i izvri ga,
3. Nakon povratka iz potprograma, procesor vraa sa steka sauvanu vrijednost u
svoj PC registar registar i uveava sadraj SP za 1.
4. Kada u registar programski broja (PC) upie adresu na kojoj je prekinuo glavni
program, procesor moe da nastavi sa njegovim izvravanjem.
Ono to se mora uoiti pri koritenju steka je da on ima svoj poetak negdje u memoriji, ali da
nema svoj kraj. Registar SP je dostupan programeru preko instrukcija PUSH i POP.
Neopreznim guranjem podataka na stek, programer moe potroiti slobodnu memoriju,
nakon ega e svaka PUSH instrukcija unititi neki podatak, instrukciju programa koji se
trenutno izvrava ili instrukciju operativnog sistema. S druge strane, kako se stek koristi i pri
izvravanju prekida i potprograma, programer koji koristi stek za smjetanje nekih vlastitih
rezultata i meurezultata mora da bude veoma oprezan.
Kako se kod programske realizacije stek moe nalaziti bilo gdje u operativnoj memoriji,
pokaziva steka mora da ima onoliko bita koliko i programski broja. Kod procesora 8085
registar SP ima 16 bita, kao i registar PC. U prethodnom primjeru, na hipotetiki raunar je
imao auto-dekrementirajui stek sa svakom instrukcijom PUSH, on je automatski umanjivao
sadraj SP registra za 1. Procesor 8085 takoe koristi auto-dekrementirajui stek.
Procesor 8085 ima i 8-bitne registre (jedan bajt) i 16 bitne registre koji su dugaki po dva
bajta. Njegova PUSH instrukcija zbog toga izbacuje na vrh steka parove registara npr. poziv
instrukcije PUSH B e na stek gurnuti sadraje registara B i C. Naravno, svaki poziv ove
instrukcije e umanjiti pokaziva steka za dva umjesto za jedan.
Pokaziva podatka (DP-Data Pointer) je adresni registar u kojem se nalazi adresa podatka
koji e se koristiti pri izvravanju instrukcije. Da bi se omoguilo adresiranju u itavom
adresnom prostoru taj registar obino ima onoliko bita koliko i programski broja.
Kod procesora 8085 ne postoji poseban registar pokaziva podatka ve se za adresiranje
podatka koriste parovi 8-bitnih registara BC, DE i HL.
Indeksni registar (IR-Index Register) se koristi za indeksno adresiranje podataka Takvo
adresiranje se koristi pri radu sa nizovima podataka u operativnoj memoriji. Indeksni registar
tada pokazuje osnovu, tj. adresu poetnog podatka u takvom nizu, a promjenom njegovog

71

sadraja lako se pristupa svakom podatku. Da bi se moglo pristupiti podacima u cijelom


adresnom prostoru indeksni registar obino ima onoliko bita koliko i programski broja.
Kod procesora 8085 ne postoji poseban indeksni registar jer
adresiranje.

on ne koristi indeksno

Blok registara opte namjene


Blok registara opte namjene je skup registara koji se mogu koristiti za privremeno uvanje
meurezultata i rezultata izraunavanja ali i adresa. Procesor najbre manipulie sa
podacima koji se nalaze u registrima, jer su registri sastavni dio procesora. Kako emo
uskoro vidjeti, procesor mora da utroi odreeno vrijeme da bi pristupio podacima koji se
nalaze u npr. memoriji ili nekom drugom sklopu. Zbog toga je poeljno je da procesor ima to
je mogue vie ovih registara. Oni su najee iste veliine kao i akumulator.
Kod procesora 8085 registri opte namjene su B, C, D, E, H, L. Ovi registri imaju po 8 bita
(kao i akumulator).

Flags registar i PSW


28

Flags (status) registar, ili kako se jo esto zove registar bita stanja ili CCR registar uvijek
dri podatke o prethodno izvrenoj instrukciji. Pojedini biti ovog registra se postavljaju na (1)
ili na (0) u zavisnosti od zadnje izvrene aritmetike ili logike operacije. Procesori posjeduju
razliite instrukcije za ispitivanje tih bita, na osnovu kojih je mogue donositi odreene odluke
u programu. Flags registar procesora 8085 je 8-bitni registar, ali se samo 5 njegovih flegova:

(S) sign ili bit predznaka rezultata. Ako je S=1 onda je podatak u akumulatoru negativan, a
ako je S>=0 onda je podatak pozitivan.
(Z) Zero ili bit nule rezultata. Pokazuje da je rezultat izvravanja prethodne instrukcije nula
odnosno da je sadraj akumulatora jednak nuli.
(AC) Auxaliry Carry ili bit poluprenosa. Pokazuje da je nakon izvravanja instrukcije bilo
prenosa iz nie u viu polovinu bajta. Koristi se pri radu sa BCD podacima.
(P) Parity ili bit parnosti. Ovaj bit se postavlja na (1) ako podatak u akumulatoru ima paran
broj jedinica. Koristi se za generisanje bita parnosti ili bita neparnosti koji se primjenjuju za
kontrolu ispravnosti kodovanja i ispravnosti prenosa podataka.
(C) Carry ili Bit prenosa. Pokazuje da li je pri realizovanju prethodne instrukcije dolo do
pojave prenosa ili pozajmice bita. Prenos se pojavljuje kod sabiranja ako rezultat ima vie bita
nego to je broj bita akumulatora. Pri oduzimanju se pojavljuje pozajmica ako se oduzima
vei broj od manjeg. Bit prenosa (Cy) se koristi i pri pomijeranju (iftanju) bita u akumulatoru
pri emu bit koji izlazi ili ulazi se upisuje u bit prenosa.
Primjer: Instrukcija SUB reg procesora 8085 e od sadraja akumulatora oduzeti
sadraj registra reg i rezultat ponovo smjestiti u akumulator. Npr. SUB B e izvriti
oduzimanje A-B i rezultat smjestiti u A.
(A - B) -> A
Pretpostavimo da u registre mikroprocesora A i B uitamo isti broj, i da nakon toga
izvrimo instrukciju SUB B, kao u slijedeem fragmentu koda:
MVI A, 5h
MVI B, 5h
SUB B
JZ C008
...
Nakon oduzimanja, fleg Z registra CCR ovog procesora e biti postavljen na nulu.
Instrukcija JZ xxxx ovog procesora ima zadatak da skoi (prenese izvrenje
programa) na adresu xxxx ako je sadraj akumulatora nula. Ona provjerava upravo
fleg Z pa ako je on postavljen (1), instrukcija JZ e realizovati skok na adresu koja je
navedena kao njen operand.

28

Condition Code Registar

72

Kako je sadraj flags registra usko povezan sa sadrajem akumulatora, ova dva registra se
na blok emama esto prikazuju jedan pored drugog i oznaavaju sa PSW (Processor Status
Word). Projektanti procesora 8085 su i predvidjeli zajedniku upotrebu ova dva registra u
odreenim instrukcijama npr. sadraj akumulatora mogue je gurnuti na stek pomou
instrukcije PUSH PSW, koja na stek zajedno sa akumulatorom izbacuje i sadraj registra
Flags.

4.2. Signali mikroprocesora Intel 8085


Na slijedeoj slici je prikazan izgled ovog mikroprocesora (pogled odozgo):

Adrese i
podaci

X1

40

Vcc

X2

39

Hold

Reset out

38

HLDA

SOD

37

CLK

36

Reset In

35

Ready

RST 7.5

34

IO/M

RST 6.5

33

S1

RST 5.5

32

RD

INTR

10

INTA

11

AD0

12

AD1

13

AD2

8085

SID
Trap

31

WR

30

ALE

29

S0

28

A15

14

27

A14

AD3

15

26

A13

AD4

16

25

A12

AD5

17

24

A11

AD6

18

23

A10

AD7

19

22

A9

Vss

20

21

A8

Adrese

Na prethodnoj slici je vidljiv veliki broj prikljuaka mikroprocesora 8085 njih ukupno 40.
Svaki prikljuak ili pin je oznaen odgovarajuim brojem ali i nekom oznakom (X1, X2, Reset
out...). Ve smo ranije pominjali razliite linije ili signale mikroprocesora (adresne, linije
podataka, kontrolne). Pinovi mikroprocesora u stvari predstavljaju ove linije pomou kojih on
preko sabirnice komunicira sa ostatkom raunara. Tipino, signali nekog (pa i ovog)
mikroprocesora mogu se podjeliti u slijedee grupe:
1.
2.
3.
4.
5.

signali napajanja,
takt signal,
adresni signali,
signali podataka,
upravljaki signali.

73

U ranijim diskusijama smo, radi jednostavnosti, izostavili linije (signale) napajanja i takt signal.
Treba imati na umu da prethodni blok dijagram prikazuje idealizovano rjeenje. Kako emo
uskoro vidjeti, projektanti mikroprocesora esto odstupaju od ovakvog rjeenja i koriste sve
to bi im moglo olakati ili pojeftiniti izradu procesora i njegovo vezivanje na sabirnicu. Npr. u
praksi neemo uvijek imati ovako lijepo odvojene linije podataka i adresne linije. Meutim, bez
obzira na ideje koje u praksi projektanti koriste, signali procesora e se i dalje moi podijeliti u
navedene grupe signala.

4.2.1.

Signali napajanja

To su pinovi na koje se dovodi napon za napajanje. Procesor 8085 (ali i ostali sklopovi u
raunaru) se napaja istosmjernim naponom standardne vrijednosti napona od +5V. On
posjeduje dva prikljuka i to jedan za plus signal napona napajanja (Vcc), a drugi za minus
signal ili masu (Vss). U zavisnosti od realizacije, ovakva integrisana kola imaju dozvoljene
tolerancije od 5% ili 10%. Izvor za napajanje mora, pored odgovarajueg napona, da
obezbjedi i potrebnu struju odnosno snagu. Naravno, danas postoje i procesori koji se
napajaju i niim naponima (3V, 2V i 1,5 V).

4.2.2.

Takt signal (Clock ili CLK)

Takt signal je impulsni prostoperiodini signal koji se mora generisati i dovesti na procesor da
bi procesor uopte mogao funkcionisati. Pod njegovim uticajem se odvijaju sve operacije u
procesoru i u raunaru.
Razliite verzije mikroprocesora su imale razliite izvedbe ovog signala. Ovaj signal je na blok
dijagramu prikazan kao jednosmjerni signal koji ulazi u procesor, to nagovjetava da se izvor
ovoga signala nalazi van procesora. Meutim, ovo ne mora uvijek biti sluaj. Pojedini
mikroprocesori zahtjevaju da im poseban ip (klok generator) dobavi ovaj signal, dok drugi
imaju generator takt signala integrisan na tijelu mikroprocesora.
Mikroprocesor Intel 8085 je posjedovao generator takt signala na samom integrisanom kolu
procesora, tako da je na njega bilo dovoljno prikljuiti kristal kvarca da bi se generisao takt
signal. Osnovna frekvencija na kojoj je oscilovao ovaj kristal (CLOCK) bila je 6.14 MHz, dok je
PCLK frekvencija (stvarna frekvencija na kojoj je procesor radio) bila 3.07 MHz.
Naravno, tokom vremena se mijenjala tehnologija izrade procesora tako da je frekvencija na
kojoj procesori rade je danas dola do reda giga-herca. Meutim, i danas vai princip da za
svaki procesor postoji maksimalno dozvoljena frekvencija takt signala, jer za vee frekvencije
procesor poinje raditi nestabilno, pa neispravno i na kraju biva uniten. Ta maksimalno
dozvoljena frekvencija zavisi od tehnologije u kojoj je realizovan procesor i od unutranje
strukture procesora.
Na proceosru Intel 8085 pinovi X1 i X2 slue kao ulazi na koje se vezuje kristal kvarca, dok
pin CLK slui za napajanje ostalih sklopova raunara takt signalom.

4.2.3.

Adresni signali

Kako im ime kae, adresni signali prenose adrese od procesora prema memoriji i U/I
sklopovima. Adresni signali su jednosmjerni jer se adrese uvijek prenose od procesora ka
ostalim sklopovima za procesor su to izlazni signali.
Na adresnim linijama se tipino nalazi

adresa memorijske lokacije sa koje se oitava instrukcija,


adresa memorijske lokacije u kojoj se nalazi operand koje e se koristiti pri
izvravanju instrukcije ili
adresa memorijske lokacije ili I/O sklopa u koji se upisuje neki rezultat.

Procesor obino ima onoliko adresnih signala koliko ima bita adresa koju generie, tj. koliko
bita ima adresni registar. Procesor Intel 8085 imao je samo jedan adresni registar duine 16
bita programski broja koji je pokazivao na slijedeu instrukciju programa koju treba izvriti.
Meutim, nije imao poseban adresni registar za podatke pa je kombinovao vrijednosti u dva
registra opte namjene (2x8 bita = 16 bita) da bi mogao da adresira ukupno 64Kb memorije.
Zbog toga bi ovaj procesor trebao da ima ukupno 16 adresnih linija. Meutim, sa slike je
vidljivo da on ima samo 8 pravih adresnih linija (linije A8 A15), dok je jedan broj linija
oznaen slovima AD.

74

Da bi smanjili broj izvoda na procesoru, Intelovi ininjeri su iskoristili domiljato rjeenje.


Jedan dio pinova ovog procesora projektovan je tako da ima dvostruku ulogu preko linija
AD0-AD7 se prenose i adrese i podaci. Kod ovog procesora jedan dio adrese (nii dio) se
prenosi preko zajednikih linija AD0-AD7, a drugi dio adrese (vii dio) preko adresnih signala
A8-A15, tako da na kraju dobijamo ukupno 16 adresnih linija pomou kojih je mogue
adresirati navedenih 64kB memorije. Da bi vidjeli kako se vri sinhronizacija ovih linija,
najprije emo se upoznati sa linijama podataka.

4.2.4.

Signali podataka

Signali podataka u svakom raunaru su dvosmjerni i preko njih se prenose

podaci u procesor i iz procesora.


instrukcije pri njihovom oitavanju iz operativne memorije.

Procesor ima onoliko signala podataka koliko bita imaju podaci sa kojima operie, tj. onoliko
koliko bita ima akumulator. Kako u procesoru Intel 8085 ulogu akumulatora preuzima 8-bitni A
registar, njegove linije podataka su bile 8-bitne. Kako smo ve spomenuli, linije podataka
AD0-AD7 su bile multipleksirane - preko njih su prenoeni i podaci i adrese.

4.2.5.

Tehnika multipleksiranja signala AD0-AD7

Iako je mikroprocesor Intel 8085 prilino star, neke ideje i koncepti koji su upotrebljeni pri
njegovoj realizaciji moda e se javljati i u novijim generacijama procesora. Ideja o
zajednikim linijama za podatke i adrese koju su iskoristili Intelovi ininjeri prilikom
projektovanja procesora 8085 bila je zasnovana na injenici da adresne linije i linije podataka
u njegovom radu nikada nisu istovremeno zauzete. Ako se prisjetimo ranije opisanih
jednostavnih primjera rada sabirnice, na nju procesor najprije izbaci adresu memorijske
lokacije na kojoj se nalazi odreeni podatak, a kada memorija pronae navedeni podatak, tek
onda se preko sabirnice taj podatak prenosi do procesora.
Da bi obezbjedili da se adresa na adresnim linijama zadri dovoljno dugo, Intelovi ininjeri su
procesoru dodali jo jedno kolo vrlo slino registru eksterni le (latch) koji moe da zapamti
8 bita. Razlika izmeu ovog kola i registra je u tome to se prilikom upisa podataka u le,
podatak istovremeno pojavljuje na njegovom izlazu.
Projektanti su pored ovog kola procesoru dodali jo jedan kontrolni signal ALE ili Address
Latch Enable. Signal ALE omoguava upisivanje podataka u eksterni le (moemo ga zvati i
vanjski registar, da izbjegnemo zabunu). Slijedea blok ema prikazuje mikroprocesor,
29
njegove adresne linije i linije podataka te signal ALE koji otvara le .

Pretpostavimo da procesor mora da oita neki podatak iz operativne memorije. Tipino, on e


na adresne linije (AD0-AD7 i A8-A15) izbaciti adresu tog podatka. Meutim, procesor
(odnosno njegovi projektanti) nema podatke o tome koliko dugo e ovi signali biti potrebni
memoriji za njen ispravan rad. Zbog toga istovremeno sa izbacivanjem adrese procesor
pomou ALE signala otvara i le u koji se smjeta nii dio adrese i koji tu ostaje do daljeg
upamen. Sada memorija (ili bilo koji drugi sklop) mogu preko linija A0-A7 i A8-A15 da dou
do podataka o adresi, dok su istovremeno osloboene linije preko kojih se u procesor u bilo
kom momentu mogu vratiti traeni podaci. U skladu sa ranije opisanim funkcionisanjem

29

Latch brava, reza

75

procesora kao maine stanja, svaki od navedenih koraka se deava u tano odreenom
vremenskom trenutku.

4.2.6.

Vremenski dijagrami procesora 8085

Nain komunikacije nekog mikroprocesora sa svojim okruenjem se najlake opisuje pomou


vremenskih dijagrama. Ovakvi dijagrami opisuju odreene signale koje procesor izbacuje na
svoje pinove u odreenom trenutku kao i signale koje kao odgovor prima iz okruenja preko
svojih pinova. Osnovna jedinica mjere na ovakvim dijagramima je takt ciklus ili T-state koji
traje jedan period PCLK signala (ili za novije procesore, 1 period Clock signala), koji se mjeri
od opadajue ivice do slijedee opadajue ivice.

Da bi opisali deavanja na sabirnici procesora Intel 8085 pomou vremenskog dijagrama,


moramo se najprije upoznati sa odreenim brojem njegovih kontrolnih signala.
Signal za oitavanje iz operativne memorije ili I/O sklopa je izlazni signal
procesora koji procesor generie u trenutku kada treba da oita neki podatak ili instrukciju iz
operativne memorije ili podatak iz nekog drugog sklopa.
Prije generisanja ovog signala, na adresnim linijama procesora se ve nalazi adresa lokacije
sa koje se vri oitavanje. U trenutku kada se ovaj signal generie, dolazi do oitavanja
podatka ili instrukcije iz npr. memorije i podatak se preko linija podataka prenosi u procesor, u
neki od njegovih registara.
Kod procesora Intel 8085 ovaj signal je oznaen kao RD nadvueno, a koristi se i oznaka
RD#. To to je oznaka ovog signala nadvuena (komplementirana) znai da niskim nivoom
vri oitavanje.
Znai, ako je
RD=1 (logika 1) nema oitavanja,
RD=0 (logika 0) treba izvriti oitavanje.

U raunaru se, pored operativne memorije, moe nai vei broj I/O
sklopova. Da bi procesor naznaio sa koje vrste ureaja eli da izvri oitavanje, on koristi
ssignal za oitavanje sa I/O sklopa. Signal za oitavanje iz I/O sklopa je takoe izlazni
signal procesora. Generie se u trenutku izvravanja instrukcije za oitavanje podataka iz I/O
sklopa. U trenutku generisanja tog signala na adresnim signalima procesora ve se nalazi
adresa sklopa iz kojeg treba oitati podatak. Kako i njegova oznaka u sebi sadri nadvlaku
(komplement) kod slova M, znai da u je sluaju oitavanja iz memorije onda taj signal na
niskom nivou, a ako se radi o oitavanju iz I/O (ulaznog) sklopa onda je taj signal na visokom
(High ili logika jedinica) nivou. Da bi odredio da li se radi o oitavanju iz memorije ili nekog
I/O sklopa, procesor koristi kombinaciju signala RD# i I/O# na slijedei nain:
RD#
0
0
1

IO/M#
0
1
-

Sklop
itaj iz memorije
itaj iz I/O sklopa
Nema oitavanja

Izgled ovih signala u sluaju oitavanja iz memorije najbolje ilustruju slijedea slika:

76

U sluaju oitavanja iz I/O sklopa, signali bi izgledali kao na slijedeoj slici:

ALE signal za omoguavanje upisivanja adrese u vanjski registar (le). To je izlazni


signal procesora. Procesor generie ovaj signal da bi upisao nii bajt adrese u vanjski registar
i da bi se sabirnica oslobodila za prenos podataka.
S0 i S1 su statusni signali mikroprocesora koje on za sluaj oitavanja podatka iz memorije
postavlja na (0, 1), a za sluaj oitavanja instrukcije iz memorije na (1, 1). Kako ovi signali
mogu opisati ukupno 4 stanja, slijedi potpuna tabela sa opisima:
S0
0
1
0
1

S1
0
0
1
1

Opis
HALT
Pii
itaj podatak
itaj instrukciju (Fetch)

Nakon to smo se upoznali sa signalima koje emo koristiti, pogledaemo vremenski


dijagram za oitavanje podatka iz memorije. Na dijagramu radi jednostavnosti neemo
odvojenim linijama prikazivati signale S0 i S1. Recimo da se traeni podatak nalazi na adresi
2005h vremenski dijagram oitavanja podatka sa navedene adrese e izgledati kao na
slijedeoj slici:

77

Oitavanje podatka iz memorije

T2

T1

T3

CLK

A8-A15

AD0-AD7

20H, Vii bajt adrese, 3 T ciklusa

05H, Nii bajt


adrese, 1 T ciklus

Tokom T2 i T3 ovdje je
Traeni podatak

ALE
IO/M#

IO/M#=0,znai iz memorije,

S0=0, S1=1 - podatak

RD#

Oitavanje podatka

Vidimo da su na naem vremenskom dijagramu prikazana etiri T-stanja. Vremenski


dijagrami se itaju period po period, od T1 do T4. Tokom svakog perioda na odgovarajuim
pinovima se javljaju razliiti signali sa razliitim znaenjima.
T1: U toku prvog T-stanja, procesor na adresne linije AD0-AD7 i A8-A15 izbacuje adresu
podatka kojeg treba da oita iz memorije (20h i 05h). Istovremeno sa ovim signalom, na svoj
ALE prikljuak izbacuje logiku jedinicu (High) da bi naredio da se nii bajt adrese prebaci u
adresni le. Takoe, na izvod IO/M# izbacuje logiku nulu, a na par S0-S1 signale (0, 1) koji
navode da se radi o oitavanju podatka iz memorije.
T2 i T3: U toku prethodnog ciklusa, procesor je oslobodio sabirnicu za prenos podataka, dok
je istovremeno na le i na adresne signale upisao adresu memorijske lokacije. Sada procesor
na svom RD# izvodu generie logiku nulu i time daje nareenje za poetak oitavanja
podatka iz memorije.
Dakle, sa dijagrama vidimo da se adresa na adresnim linijama A8-A15 nalazi tokom 3 Tciklusa, dok se nii bajt adrese nakon prvog takt ciklusa seli na adresni le i time oslobaa
linije sabirnice za protok podataka.
Dijagram je vrlo slian i za sluaj oitavanja instrukcije iz memorije u ovom sluaju singali
S0 i S1 bi imali vrijednosti (1, 1).
Ako oitavanje nekog podatka iz memorije posmatramo kao jednu operaciju, onda moemo
rei da operacija oitavanja podatka traje 3 T-stanja. Naravno, procesor u toku svoga rada
izvrava razliite operacije oitavanje instrukcije iz memorije, upisivanje podatka u memoriju
ili I/O sklop te oitavanje podatka iz memorije ili I/O sklopa. Ukupno vrijeme potrebno za
izvrenje bilo koje operacije naziva se mainski ciklus. Meutim, izvravanje jedne
instrukcije esto zahtjeva izvoenje nekoliko ovakvih operacija koje zajedno ine ciklus
instrukcije. Da bi vidjeli kako to izgleda u praksi, posmatraemo izvrenje jedne jednostavne
instrukcije MVI B (Move Immediate B). Zadatak ove instrukcije je u registar B upie
odgovarajui broj. Npr. instrukcija MVI B, 43h treba da u registar B upie vrijednost 43h.
Kako se svaki program izvrava iz operativne memorije raunara, da bi mogao da izvri neku
instrukciju, procesor je najprije mora oitati njen operacioni kod iz memorijske lokacije na koju
pokazuje registar PC (programski broja). Pretpostaviemo da programski broja pokazuje na
memorijsku adresu 2000h i da se tamo nalazi operacioni kod ove instrukcije 06h, dok se na
adresi 2001h nalazi operand ove instrukcije broj 43h.

78

Prvi mainski ciklus koji oitava operacioni kod (instrukciju) iz memorije traje 4 T ciklusa.
Tokom prvog mainskog ciklusa u kontrolnu jedinicu procesora 8085 (u njen IR registar) e
biti uitan operacioni kod instrukcije. Ovaj proces se vri na prethodno opisani nain

izbacivanjem adrese 2000h na adresne linije i prebacivanjem nieg bajta adrese u le


(ALE signal) da bi memorija bila obavjetena sa koje adrese treba da dohvati
instrukciju (prvo T-stanje),
oitavanjem operacionog koda instrukcije sa linija podataka, a pod upravljanjem
kontrolnih signala RD#, IO/M#, S0 i S1 (slijedea dva T-stanja).

etvrto T-stanje koristi se za dekodiranje instrukcije.


Sada procesor zna koju instrukciju mora da izvri, ali mu je potreban i operand ove
instrukcije, odnosno broj koji mora da upie u registar B. Ovaj podatak se nalazi u slijedeoj
uzastopnoj memorijskoj lokaciji (2001h), pa sada procesor pokree mainski ciklus itanja
podatka iz memorije, koji traje 3 T-stanja:

izbacivanjem adrese 2001h na adresne linije i prebacivanjem nieg bajta adrese u le


(ALE signal) i
oitavanjem operanda (broja 43h) instrukcije sa linija podataka, a pod upravljanjem
kontrolnih signala RD#, IO/M#, S0 i S1.

Dakle, ciklus pribavljanja (Instruction Fetch ili FC) instrukcije


ciklusa.

MVI B traje dva mainska

Generalno, pri izvravanju instrukcije procesora 8085 (ali i drugih procesora) postoje slijedee
faze:

pribavljanje instrukcije (oitavanje instrukcije) i eventualno pribavljanje operanada


izvravanje instrukcije.

Faza pribavljanja instrukcije uvijek prethodi fazi njenog izvravanja, a oba ta ciklusa
posmatrana zajedno nazivaju se ciklus instrukcije.
U toku faze pribavljanja instrukcije (FC) procesor oitava instrukciju iz operativne memorije.
On postavlja sadraj programskog brojaa na adresnu magistralu, a zatim generie signal za
oitavanje iz memorije. Nakon oitavanja na linijama podataka se pojavljuje operacioni kod
instrukcije koji se zatim upisuje u registar instrukcije procesora (IR) odnosno u dekoder
instrukcija. Svaka instrukcija procesora 8085 moe da bude duine 1, 2 ili 3 bajta, zavisno od
toga da li instrukcija ima i operande u memoriji. Ako je potrebno, slian postupak se ponavlja i
za oitavanje operanada iz memorije. Nakon to je faza pribavljanja instrukcije zavrena,
procesor odmah poinje ciklus izvravanja instrukcije.
U fazi izvravanja instrukcije (Instruction Execute ili EC) procesor dekodira operacioni
kod instrukcije i na osnovu toga generie potrebne signale i realizuje sve operacije potrebne

79

za njeno izvravanje. Rezultat toga su odreene aritmetike ili logike operacije, kao i prenosi
podataka izmeu registara procesora, registara i memorije itd. Na slijedeoj slici vidljive su
faze pribavljanja i izvrenja neke jednobajtne instrukcije procesora 8085.
Faza pribavljanja
FC - Instruction Fetch

T1

T2

T3

Faza izvravanja
EC - Instruction Execute

T4

T5

T6

T7

Ciklus instrukcije
IC = FC + EC

Obje ove faze faza pribavljanja (kako operacionog koda tako i operanada) kao i faza
izvrenja zajedno ine jedan ciklus instrukcije.
Vidjeli smo da procesor u toku faze pribavljanja instrukcije esto mora da pribavlja i njene
operande. Kako su i operandi i instrukcije za procesor u stvari binarni brojevi, ovi prenosi su
vrlo slini. Da bi razdvojio mainski ciklus oitavanja instrukcije iz memorije od vrlo slinog
ciklusa oitavanja podataka, procesor 8085 koristi slijedee signale:
IO/M#=1,
S0=1,
S1=1
Mainski ciklus pribavljanja instrukcije moe se opisati slijedeim blok dijagramom:

Kako smo vidjeli, ciklus pribavljanja instrukcije kod procesora 8085 traje etiri T-stanja. Stanje
T4 se koristi za dekodiranje instrukcije. S druge strane, mainski ciklus pribavljanja podatka
traje 3 T-Stanja.
Mikroprocesor Intel 8085 ima 5 osnovnih mainskih ciklusa:

Ciklus oitavanja operacionog koda instrukcije iz memorije (Opcode fetch) koji traje 4
T-stanja,
Ciklus oitavanja podatka iz memorije (Memory read) koji traje 3 T-stanja,

80

Ciklus upisivanja podatka u memoriju (Memory write) koji traje 3 T-stanja,


Ciklus oitavanja podatka iz I/O sklopa (I/O read) koji traje 3 T-stanja i
Ciklus upisivanja podatka na I/O sklop (I/O write) koji traje 3 T-stanja.
Dakle, ciklus instrukciije moe obuhvatati nekoliko mainskih ciklusa, a svaki pojedinani
mainski ciklus moe obuhvatati nekoliko T-stanja.
Ciklus upisivanja podatka u memoriju ili I/O sklop se vri kombinovanjem signala WR#
(signala za upisivanje u memoriju ili IO sklop) i signala IO/M#, na nain koji je vrlo slian
ranije opisanom oitavanju podatka iz memorije.

4.2.7.

Mehanizam prekida procesora 8085

30

U ranijoj diskusiji vidjeli smo da signale sa zahtjevima za prekidom procesoru mogu da alju
razliiti ureaji, ali i da se oni mogu izazvati softverski. Takoe smo naveli da do interapta
dolazi kada neki sklop (ili program) mora da preusmjeri panju procesora sa starog programa,
kojeg je do tog trenutka izvravao, na neki drugi potprogram. Potprogrami koji se izvravaju
kao odgovori na razliite zahtjeve za prekidima nazivaju se interrupt handleri ili interrupt
service routine (ISR). Kako raunar uvjek izvrava programe iz memorije i ovi potprogrami
nalaze se u operativnoj memoriji raunara. Meutim, emu zaista slue ovakvi programi? I na
koji nain oni dolaze u memoriju raunara?
ISR rutine su tipino sistemski programi koje dobavlja proizvoa matine ploe, dio
operativnog sistema ili drajveri nekog ureaja (device driver). Device drivers ili popularno
drajveri su programi koje piu proizvoai razliitih hadrverskih komponenata. Njihova uloga
je da obezbjede komunikaciju izmeu programa vieg nivoa (npr. MS Word) i njegovog
operativnog sistema (npr. Windows XP) na jednoj strani i nekog ureaja (npr. printer) na
drugoj strani. Drajveri su programi koji zavise i od hardvera i od operativnog sistema na kojem
se izvravaju.
U pravilu, programi za obradu prekida (ISR) se uitavaju u operativnu memoriju u toku
podizanja sistema. Kada raunar ne radi, ovi programi su smjeteni ili u nekoj ROM memoriji
ili na hard disku (u sluaju da su dio operativnog sistema ili kao drajveri ugraeni u njega), to
zavisi od izvedbe i generacije raunara.
Preusmjeravanje panje procesora sa programa koji se izvravao prije prekida na ISR rutinu
sa sobom povlai niz akcija koje procesor mora da preduzme. Da bi po povratku iz ISR rutine
mogao da nastavi sa normalnim izvravanjem prekinutog programa, procesor negdje mora da
memorie svoje trenutno stanje, odnosno sadraj programskog brojaa, koji pokazuje do koje
take je stigao u izvravanju prekinutog programa kao i sadraj svih registara koji eventualno
dre rezultate i meurezultate izraunavanja. Za ovu svrhu procesor koristi memorijsku
strukturu koja se naziva stek (stack).
Stek je, kako smo ve opisali, memorijska struktura LIFO tipa (Last In, First Out). U veoma
starim raunarima (npr. baziranim na procesoru 8008) procesori su imali poseban, vlastiti
interni stek ili eksterni memorijski ip koji se koristio kao stek. Meutim, ve od procesora
8080 projektanti sistema odustaju od ovakvog koncepta i stek u svim novijim mainama
smjetaju u RAM memoriju, a za pristup ovom dijelu memorije koriste poseban registar koji se
naziva Stack Pointer (SP) ili pokaziva na vrh steka. U registru SP se uvijek nalazi adresa
zadnjeg podataka koji je upisan na stek. Ako bi projektanti sistema osmislili stek koji bi
poinjao npr. od adrese 0000h, onda bi svako upisivanje bajta podataka na stek automatski
uveavalo SP za 1, a skidanje podatka sa steka bi umanjivalo adresu u SP registru. Naravno,
projektanti sistema mogu da realizuju i stek koji poinje sa zadnjom memorijskom adresom u
raunaru npr. FFFFh. U tom sluaju bi dodavanje jednog bajta na stek bi umanjilo adresu u
SP za 1.
Dakle, kada procesor primi zahtjev za prekid, deava se slijedea sekvenca dogaaja:
1. Procesor mora na neki nain zabraniti izvravanje ostalih prekida obino
postavljanjem nekog flega.
2. Zatim, treba da na steku sauva stanje svojih registara najee pokaziva
instrukcije i Flegs registar.

30

Poglavlje Arhitektura raunara sa sabirnicom (magistralom), - Prekidi (Interrupts)

81

3. Nakon to je na steku sauvao svoje trenutno stanje, procesor u svoj PC registar


uitava adresu na kojoj se nalazi ISR rutina i izvrava je kao to bi izvravao bilo koji
drugi program.
4. Kada zavri sa izvravanjem programa za obradu prekida, procesor mora da sa steka
u svoje registre uita ranije memorisane vrijednosti Flegs registar i sadraj
programskog brojaa.
5. Nakon ovoga procesor ponovo dozvoljava izvravanje ostalih prekida (brisanjem
odgovarajueg flega).
6. Kako je uitao sadraj programskog brojaa, procesor sada moe da nastavi sa
izvravanjem prethodnog programa od mjesta gdje je prekinuo njegovo izvravanje.
Slijedee vano pitanje koje stoji pred projektantima sistema je pitanje adrese u memoriji na
kojoj se mogu smjestiti programi za obradu prekida. Kako je svaka ISR rutina u stvari
potprogram koji mora biti uitan u memoriju, procesor mora na neki nain da sazna na kojoj je
memorijskoj lokaciji taj potprogram smjeten. Ako je procesoru adresa ovog potprograma
poznata, onda govorimo o vektorskim prekidima. U sluaju ne-vektorskih prekida, ureaj
koji je zatraio prekid mora da dostavi procesoru adresu na kojoj se nalazi program za obradu
navedenog prekida. A kako smo ve opisali, jednom kada procesor dobije poetnu adresu
nekog programa za obradu prekida, on je uitava u svoj PC registar i dalje izvrava kao bilo
koji drugi program.
Ako bi se stavili u ulogu projektanta ovakvog sistema, pred nama bi bile dvije mogunosti za
smjetanje programa za obradu prekida u memoriju. Prva mogunost bi bila da za svaki
program odredimo fiksni broj bajta (npr. 50 bajta) i da ISR rutine slaemo od, recimo poetne
memorijske adrese 0000h. Nedostatak ovakvog pristupa je u tome to moda nee svi
programi za obradu prekida moi da stanu u 50 bajta, dok e neke druge ISR rutine biti
znatno krae i troie nam memoriju. Druga mogunost bila bi da u neku memorijsku lokaciju
upiemo tabelu koja dri memorijske adrese ISR rutina, kao na slijedeoj slici:

Memorija
ISR rutina
2
2500h
ISR rutina
1

2500h
2000h

2000h

Vektor 2
Vektor 1

Na ovaj nain, mi kao projektanti raunara ne ograniavamo duinu ISR rutina one sada
mogu biti proizvoljno dugake.
Mikroprocesor Intel 8085 je interesantan jer ilustruje oba navedena pristupa. Da bi ovo
razmotrili, pogledaemo na koji nain su u memoriji smjeteni vektori prekida procesora 8085:

82

Sa slike je vidljivo da su vektori RST0 RST3 dugaki po osam bajta, dok su ostali dugaki
31
svega 4 bajta . U vrijeme kada je nastao ovaj procesor, u 8 bajta se mogao smjestiti neki
manji program (sjetite se da je ovakav sistem imao maksimalno 64kB RAM-a). Ostali vektori,
duine 4 bajta su mogli da dre vrlo jednostavne programe ili se u njih mogla smjestiti
instrukcija skoka (JMP) na neku drugu lokaciju na kojoj se nalazio poetak programa za
obradu prekida.
Generalno gledano, veina dananjih raunara koristi sline tabele u kojma se nalaze vektori
prekida. Vektor interapta (interrupt vector) je dakle pokaziva na adresu na kojoj se nalazi
stvarni kod ISR rutine. Kako je prikazano, u rijetkim sluajevima u ovaj vektor se moe
smjestiti i manja ISR rutina. U pravilu, svaki raunar ima tabelu ovakvih vektora (Interrupt
Vector Table ili IVT) koja je obino smjetena na samom poetku operativne memorije. Ova
tabela se upisuje u memoriju u toku podizanja operativnog sistema a pri tome esto koristi i
vrijednosti koje su zapisane u nekom ROM-u (npr. BIOS) ili (u sluaju drajvera) na hard disku.
S druge strane, kod razliitih ISR rutina na koje pokazuju vektori iz navedene tabele esto se
nalazi u samom sistemskom ROM-u.
U prethodnim poglavljima govorili smo i da postoje hardverski prekidi, koje generiu vanjski
ureaji (mi, tastatura i razliiti kontroleri) i softverski prekidi, koji se generiu kada procesor
izvri odreenu instrukciju (npr. iz asemblera procesora 8086 pozivamo INT 21h da bi ispisali
neko slovo na ekran). Softverski interapti slue za povezivanje neke aplikacije sa
odgovarajuim sistemskim uslugama. Procesor Intel 8085 ima 8 softverskih prekida koji nose
oznake RST 0 RST 7. Hardverski prekidi ovoga procesora su Trap (ili RST 4.5), RST 5.5,
RST 6.5, RST 7.5 i INTR.
Projektanti mikroprocesora 8085 su predvidjeli mogunost da procesor ignorie odreene
zahtjeve za prekid kada je to neophodno. Na primjer, u momentu kada ve izvrava prekid
procesor automatski zabranjuje izvravanje ostalih prekida. Zbog toga se u procesoru 8085
nalazi IE (Interrupt Enable) bit, ijim se brisanjem zabranjuje prihvatanje prekida. Dakle, dok
god je ovaj bit postavljen na 1, procesor nee ignorisati interapte. Bit maske prekida IE se
postavlja i brie posebnim komandama (EI/DI), a ponekad ga i procesor postavlja automatski.
Pored ovoga, interapti se mogu dodatno maskirati i pomou SIM instrukcije, koja omoguava
32
selektivno maskiranje interapta . Meutim, postoje i interapti koje procesor ne smije ignorisati
i na koje maskiranje nema uticaja. Generalno, interapte moemo podijeliti u dvije grupe:

Maskirajue interapte (IRQ), koji mogu biti ignorisani od strane procesora i


Nemaskirajue interapte (NMI), koji ne mogu biti ignorisani. Postavljanje bita maske
prekida IE ili maskiranje SIM instrukcijom nema uticaja na ovakve interapte.

Jedini prekid koji se u procesoru 8085 ne moe maskirati je Trap prekid. Ako Trap pin
procesora primi signal za aktiviranje (logika 1.), ovaj interapt e biti izvren bez obzira na
stanje IE flega. Zbog toga Trap linija mora ostati aktivna (1) sve dok ISR ne zavri obradu
ovog signala. Svrha ovoga prekida je dibagiranje programa korak po korak.
Prekidi RST 5.5, RST 6.5 i RST 7.5 su hardverski prekidi koji se mogu maskirati. Dakle,
brisanjem i postavljanjem bita maske prekida IE mogue je uticati na to da li e procesor
31
32

8085 Microprocessor: Programming and Interfacing, N.K.Srinath


8085 Microprocessor: Programming and Interfacing, N.K.Srinath

83

prihvatiti ovakve zahtjeve za prekidima. Prekid RST 5.5 je najnieg prioriteta, dok je prekid
RST 7.5 najvieg prioriteta u ovoj grupi prekida. Generalno, lokacije vektora 5.5 i 6.5 nee
sadravati ISR rutine ve e upuivati na neko mjesto u memoriji gdje su one smjetene. Kod
nekih rjeenja raunara, RTS 5.5 prekid se aktivira kada korisnik pritisne neko dugme na
tastaturi, a vektor upuuje na lokaciju u EPROM-u u kom se nalazi program za obradu ovog
prekida.
Jedini hardverski prekid koji nije vektroskog tipa je INTR prekid. Kada hardverski signal za
prekid doe preko nekog RST prikljuka, interni kontroler koji se nalazi u procesoru generie
33
CALL instrukciju prema unaprijed odreenoj lokaciji vektora, kako je prikazano na
prethodnoj slici. Dakle, u procesor su na neki nain zapisane adrese vektorskih prekida. Ali
kada zahtjev za prekid doe preko INTR linije (postavljanjem na logiku 1.), procesor oekuje
da mu vanjski ureaj dostavi adresu na kojoj se nalazi ISR. Ovaj prekid se realizuje uz pomo
jo jedne linije procesora INTA# (Interrupt Accepted), kojom procesor potvruje eksternom
ureaju da e prihvatiti njegov zahtjev za prekidom. Kada procesor spusti signal na pinu
INTA# na logiku nulu, vanjski ureaj zna da je procesor prihvatio njegov zahtjev i postavlja
na linije podataka odgovarajuu CALL ili RST instrukciju. Zahtjeve za INTR prekidima
34
procesoru 8085 je mogao da alje 8259 PIC kontroler. Ovaj kontroler se ponaao kao
multiplekser koji je kombinovao zahtjeve za prekid od razliitih ureaja u sistemu na jedan pin
procesora.

4.2.8.

Ostali signali mikroprocesora 8085

Procesor 8085 ima svega jo nekoliko pinova koje moramo pomenuti. Kada proceosr primi
35
logiku jedinicu (High) na signal Ready koji smo ve spominjali , on je u stvari dobio
obavjetenje od nekog sporijeg sklopa da saeka jo jedno T-stanje da bi sporiji sklop zavrio
svoj posao.
Signali Reset_In# i Reset_Out rade sinhronizovano. Dovoenjem logike nule na pin
Reset_In# dolazi do brisanja sadraja svih registara u procesoru. Jedno T-stanje kasnije, na
pinu Reset_Out se javlja logika jedinica, koja se uglavnom koristi za restartovanje
kompletnog raunara.
SOD (Serial Output of Data). Mikroprocesor 8085 je 8-bitni procesor koji u normalnom radu
alje i prima po 8 bita podataka odjednom. Meutim, postoje ureaji koji zahtjevaju serijski
prenos podataka. U vrijeme ovog mikroprocesora, npr. mi se prikljuivao na serijski port.
Signalom SOD upravljala je instrukcija SIM. Ova instrukcija je jednostavno slala sadraj
akumulatora bit po bit na SOD prikljuak.
Prikljuak SID (Serial Input Data) radio je suprotnu operaciju. Pod komandom RIM
instrukcije podaci su bit po bit prebacivani u akumulator sa SID prikljuka.
Signali HOLD i HLDA procesora 8085 slue za iniciranje i potvrdu zahtjeva za DMA prenos
podataka. DMA (Direct Memory Access) prenos podataka omoguava razliitim ureajima da
pristupaju memotiji direktno, zaobilazei pri tome procesor. Danas ovu mogunost koriste
mnogi ureaji od hard disk kontrolera, preko video i muzikih kartica do mrenih kartica.
Procesor dobija zahtjev (u vidu logike jedinice) za realizovanje DMA prenosa preko svog
HOLD pina. Ako je procesor slobodan/spreman za ovu vrstu prenosa, on na svom HLDA pinu
generie High signal (logiku jedinicu) i istovremeno dovodi svoje prikljuke koji su vezani za
sabirnicu u stanje visoke impedanse. Nakon toga, o DMA prenosu dalje se brine posebno
kolo - DMA kontroler.

4.3. Ostali registri procesora 8085


Primjetili ste da kroz diskusiju o registrima mikroprocesora 8085 razmatramo i generalne
koncepte koji vae i za konstrukciju bilo kojeg drugog mikroprocesora. U ranijim poglavljima
smo obradili samo osnovne registre ovog procesora. U pravilu, svaki mikroprocesor posjeduje
neto iri skup registara, koji se u glavnom navode samo na dijagramima koji opisuju nain
rada procesora. Kompletan skup registara nekog procesora obuhvata slijedee registre:
1. registar instrukcije,
33

CALL instrukcija slui za poziv potprograma.


Programmable Interrupt Controler
35
Poglavlje Sistemski sat (Clock) - metronom
34

84

2.
3.
4.
5.
6.
7.
8.

privremeni registar,
akumulator,
adresni registar,
blok registara opte namjene,
registar adrese,
registar podatka,
registar bita stanja.
RST 6.5

INTA
INTR

RST 5.5

TRAP

SID

SOD

RST 7.5

Signali
serijskih IO
ureaja

Signali prekida

8-bitna interna sabirnica podataka


8 bita
Akumulator
8 bita

Privremeni
8 bita

8 bita

Instr.reg.
8 bita

8 bita
Flags reg.
8 bita

Dekoder
instrukcija

(8 bita)

(8 bita)

(8 bita)

(8 bita)

(8 bita)

(8 bita)

PC
(16 bita)

SP
(16 bita)

ALU

Registri

Nii bajt
adrese

Vii bajt
adrese
Multiplekser

CLK
Gen

Reset

Reset
In#
Clk out

Takt i kontrolni signali


DMA
Status

Hold
Reset
Out#

Adresni bafer

Bafer za
adrese/podatke

Ready
HLDA S0 S1

Dekoder sabirnice

Adresni le

ALE
MEMW#
MEMR#

IOR#

IOW#
A8-A15
A0-A7
Adresni Bus Adresni Bus

D0-D7
Bus podataka

Registar instrukcije
Diskusiju emo poeti od registra koji se nalazi u gotovo svakom procesoru, ali se ne
pojavljuje uvijek na blok emama i spiskovima koji navode registre nekog procesora. Ovakvi
registri se izostavljaju sa spiskova iz dva glavna razloga da bi se pojednostavilo objanjenje
radi procesora i radi toga jer programeri na rad ovog registra nemaju direktnog uticaja.
Procesor koristi registar IR da bi upisao instrukciju neposredno nakon njenog oitavanja iz
operativne memorije. Instrukcija se nakon toga iz ovog registra vodi u upravljaku jedinicu,
odnosno u njen dekoder instrukcija, koja dalje generie potrebne upravljake signale za
izvravanje te instrukcije. Registar instrukcije ima onoliko bita koliko bita ima u operacionom
kodu instrukcije procesora. Mikroprocesor 8085 ima registar instrukcije (IR) duine 8 bita.

Privremeni registar
Slijedei registar koji se takoe esto izostavlja sa spiskova i blok ema je privremeni registar.
Privremeni registar se koristi za smjetanje jednog od operanada koji se koristi pri izvravanju
neke aritmetike ili logike instrukcije. Poto ALU uzima dva operanda, drugi operand koji
ALU koristi se uvijek nalazi u akumulatoru. Upisivanje podataka u privremeni registar se vri

85

automatski u toku izvravanja instrukcije. To znai da ne postoje posebne instrukcije za


upisivanje u taj registar.
Broj bita privremenog registra je jednak broju bita akumulatora. Privremeni registar procesora
8085 ima 8 bita.

Registar adrese (adresni bafer)


Ovaj registar spada u grupu registara koji se veoma esto izostavljaju sa lista na kojima se
navode registri pojedinih mikroprocesora. Generalno, registar adrese je direktno vezan za
vanjske adresne linije procesora. On slui kao bafer u kojem se privremeno memorie adresa
neposredno pred njeno izbacivanje na adresne linije. U njemu se uvijek nalazi adresa
memorijske lokacije ili U/I sklopa iz koga se oitava ili u koji se upisuje podatak pri izvravanju
instrukcije. Taj registar obino ima onoliko bita koliko i programski broja.
Kako emo uskoro vidjeti, kod procesora 8085 adresa se prenosi u dva dijela jedan dio
adrese prenosi se preko linija A8-A15, dok drugi dio adrese ide preko linija AD0-AD7 koje su
zajednike za prenos podataka i adresa. Zbog toga u procesoru 8085 ovaj registar (bafer)
ima 8 bita. Preostalih 8 bita adrese smjetaju se u registar (bafer) podataka.

Registar podatka (bafer podataka)


Registar podatka se takoe esto izostavlja sa blok ema i spiskova registara. I on slui kao
bafer u kojem se privremeno memorie podatak, neposredno pred njegovo izbacivanje na
adresne linije.
Registar podatka je direktno vezan na vanjske linije podataka procesora i preko njega se
prenose podaci iz procesora ili u procesor. Taj registar ima onoliko bita koliko i akumulator.
Kod procesora 8085 preko njega se pored podataka, prenosi jedan dio adrese, kada on radi u
paru sa registrom adrese.

4.4. Pogled izbliza na ISA arhitekturu procesora 8085


36

Ve smo spominjali da ISA arhitektura bilo kog procesora odreuje koje instrukcije e takav
raunar moi da izvrava kao i taan format svake instrukcije. Bilo koja instrukcija je u stvari
komanda koju procesor treba da izvri. Uzastopnim navoenjem instrukcija formiramo
program koji raunar izvrava. Svaka instrukcija sastoji se od dva dijela od operacionog
koda instrukcije i od operanada. Operacioni kod (OpCode) navodi koju instrukciju procesor
mora da izvri, a operandi su podaci nad kojima treba izvriti navedenu operaciju. Kako ova
dva polja zajedno ine jednu instrukciju, generalni format bilo koje instrukcije je:

Pojedine instrukcije bilo kojeg procesora, pa i procesora 8085 mogu da budu razliitih duina.
Razliite instrukcije zauzimaju vee ili manje fragmente operativne memorije. Mikroprocesor
8085 u posjeduje instrukcije duine od jednog do tri bajta.
Da bi demonstrirali jendobajtne instrukcije, najprije emo se upoznati sa instrukcijama MOV,
ADD i CMA.
Instrukcija MOV dest, src uzima dva argumenta. Ona ima zadatak da prebaci podatak sa
izvora src u odredite dest. Pri tome, izvor i odredite mogu biti registri ili memorijske
lokacije. Ova instrukcija jedino ne moe direktno da prenosi podatke iz jedne memorijske
lokacije u drugu. Njen heksadekadni kod je 4Fh.
Primjer:

MOV B, C
MOV B, 2000h

; C->B
; [2000]->B

Instrukciju ADD opr smo ve upoznali. Ona uzima jedan operand opr koji moe biti registar ili
memorijska lokacija. Njen zadatak je da sadraj akumulatora sabere sa operandom opr i da
rezultat smjesti u registar A (akumulator). Njen heksadekadni kod je 80h.
Primjer:

36

ADD B
ADD 2000h

; A+B -> A
; A+[2000] -> A

Instruction Set Architecture

86

Instrukcija CMA ne uzima nikakve argumente. Zadatak ove instrukcije je da komplementira


(ili invertuje) svaki bit u akumulatoru. Njen heksadekadni kod je 2Fh.
Primjer:

CMA

; A = Not A

Kako smo vidjeli, ove tri instrukcije uzimaju razliite brojeve argumenata dva, jedan i ni
jedan. Meutim, sve tri zauzimaju isti prostor u memoriji po jedan bajt. Ako bi ove tri
instrukcije bile u nekom programu smjetene jedna do druge, u memoriji bi imali niz bajta
prikazan u koloni Hex kod:
Hex kod u memoriji
4F
80
2F

Mnemonik i argumenti
MOV C, A
ADD B
CMA

Kada procesor oita heksadekadni kod bilo koje od navedenih instrukcija, nakon to ga
dekodira (prepozna) on odmah izvrava tu instrukcije jer su svi podaci koji su mu potrebni za
izvrenje ovakvih instrukcija ve u njegovim registrima.
Da bi vidjeli ponaanje dvobajtnih instrukcija, upoznaemo se sa jo jednom novom
instrukcijom. Instrukcija MVI dest, Data uzima dva argumenta. Njen zadatak je da prebaci
brojani podatak Data veliine 8 bita u odredite dest, pri emu dest moe biti registar ili
memorijska lokacija.
Primjer:

MVI A, 5h
MVI B, 8h
MVI M, 1H

; 5 -> A
; 8 -> B
; 1 -> [M] (M je memorijska lokacija na koju ukazuje
par registara HL)

Navedne instrukcije e u memoriji e zauzimati po dva bajta. Ako bi ove tri instrukcije bile u
nekom programu smjetene jedna do druge, u memoriji bi imali slijedei niz bajta:
Hex kod u memoriji
3E
05

MVI A
5

Bajt po bajt
Prvi bajt
Drugi bajt

06
08
36
01

MVI B
8
MVI M
1

Prvi bajt
Drugi bajt
Prvi bajt
Drugi bajt

Mnemonik i argumenti
MVI A, 5

MVI B, 8
MVI M, 1

Nakon to procesor oita i dekodira operacioni kod jedne od prikazanih MVI instrukcija (prvi
bajt), on nakon toga mora da iz memorije uita i operand koji se nalazi u slijedeem bajtu. Tek
nakon toga moe da izvri navedenu instrukciju.
Posmatrajui heksadekadne reprezentacije pojedinih instrukcija u memoriji, vidimo da se one
razlikuju iako se u sva tri sluaja radi o MVI instrukciji MVI A <=> 3Eh, MVI B <=> 06h itd.
Ove tri instrukcije razlikuju se po odreditu odnosno mjestu na koje treba da upiu podatak
prva treba da ga upie u registar A, druga u registar B itd. Iz ovoga je vidljivo da su intelovi
projektanti u okviru operacionog koda instrukcije kodirali i odredite u koje treba upisati neki
podatak - adresu. Zbog toga se format instrukcije moe predstaviti i na slijedei nain:

U prikazanom primjeru, polje naina adresiranja se odnosi na registar ili memorijsku lokaciju u
koju se upisivao podatak. Ni danas nije rijedak sluaj da projektanti mikroprocesora koriste
ovakav pristup koji je predstavljen jo u procesoru Intel 8085. Naravno, projektanti pri tome
imaju potpunu slobodu i ne moraju uvijek jasno odvojiti operacioni kod i polje naina
adresiranja.

87

Da bi uspjeno diskutovali o instrukcijama duine 3 bajta, upoznaemo jo jednu novu


instrukciju bezuslovni skok ili JMP xxxx. Ova instrukcija ima zadatak da prenese izvrenje
programa na lokaciju navedenu u njenom operandu xxxx. Operand ove funskcije moe biti
bilo koji 16 bitni broj.
Primjer:

JMP C007h

; preskae sve instrukcije do adrese C0007h

Navedna instrukcija e u memoriji e zauzimati ukupno 3 bajta. Heksadekadni kod ove


instrukcije u memoriji je:
Hex kod u memoriji
C3
07
C0

JMP
07
C0

Bajt po bajt
Prvi bajt
Drugi bajt
Trei bajt

Kada procesor uita i dekodira prvi bajt prikazane instrukcije, poznat mu je samo tip
instrukcije JMP. Nakon toga, procesor oitava i slijedea dva bajta da bi kompletirao adresu
na koju mora da prenese izvrenje programa.

4.4.1.

Skup instrukcija mikroprocesora 8085

Ve smo spominjali da svaki procesor ima odreeni skup instrukcija (Instruction set) i da taj
skup odreuje koje e operacije procesor biti u stanju da izvrava. Ovaj skup instrukcija je
konaan on se odreuje pri projektovanju i izradi procesora.
da je osnovni skup operacija koje moe da realizuje procesor definisan je instrukcijama
procesora. Svaki procesor posjeduje konaan skup instrukcija sa tano poznatim
operacijama. Skup instrukcija procesora definie osnovne operacije koje procesor moe
realizovati. Svaki procesor ima konaan skup instrukcija koji se definie pri projektovanju i
izradi procesora.
Instrukcije procesora se obino dijele u sljedeih pet glavnih tipova:
1.
2.
3.
4.
5.

instrukcije za prenos podataka,


aritmetike instrukcije,
logike instrukcije,
instrukcije za upravljanje izvravanjem programa,
Kontrolne instrukcije.

U nastavku emo u kratkim crtama nabrojati instrukcije procesora 8085. Naravno,


podrazumjeva se da se instrukcije bilo kog procesora ne ue na pamet njihova prava svrha i
funkcija e se najbolje razumjeti tokom pisanja programa u nekom od brojnih simulatora
procesora 8085.

Instrukcije za prenos podataka procesora 8085


Instrukcije za prenos podataka se koriste za kopiranje, premjetanje i unoenje podataka
izmeu registara procesora ili memorijskih lokacija.
MVI instrukcija. Prva ovakva instrukcija koju emo upoznati je MVI instrukcija. Zadatak ove
instrukcije je da upie podatak u navedeni registar ili u memoriju. Njen generalni format je
MVI RegDest, Data
MVI M, Data

; upisuje podatak u registar


; upisuje podatak u memoriju

Instrukcija MVI ima dvije forme. Njena prva forma je jednostavna ona upisuje neki podatak
u navedeni registar. Druga forma ove instrukcije treba da upie podatak u neku memorijsku
lokaciju. Da bi mogla da upie podatak u memoriju, ova instrukcija koristi par registara HL
(High-Low) kao pokaziva podatka. Zbog toga, prije koritenja ove instrukcije moramo
postaviti registre H i L da pokazuju na neku adresu u memoriji.
Primjer:
MVI B, 5h
MVI H,C0h
MVI L,10h
MVI M,55h
HLT

;
;
;
;
;

5 -> registar B
C0 -> registar H
10 -> registar L
U HL je sada adresa [C010]
55 -> [C010]

88

Instrukcija MOV. Slijedea instrukcija koju emo upoznati je MOV instrukcija. Njen generalni
format je
MOV RegDst, RegSrc
MOV Mem, RegSrc
MOV RegDst, Mem

; kopira podatke izmeu dva registra


; kopira podatak iz registra u memoriju
; kopira podatak iz memorije u registar

Ova instrukcija ima tri razliite forme. U prvom svom obliku, instrukcija kopira podatke izmeu
dva registra npr. MOV B, A e prekopirati sadraj akumulatora A u registar B. Druga dva
oblika slue za kopiranje podataka izmeu memorijskih lokacija i registara. Kao i u
prethodnom sluaju, memorijsku lokaciju moramo adresirati pomou para registara H i L.
Primjer:
MVI A, 5h
MOV B,A
MVI H,C0h
MVI L,10h
MOV M,B
HLT

;
;
;
;
;
;

5 -> A
A -> B
C0 -> H
10 -> L
U HL je sada adresa [C010]
B -> [C010]

Instrukcija LDA. Format ove instrukcije je:


LDA adr

; kopira sadraj sa adrese adr u akumulator

Zadatak ove instrukcije je da u akumulator iskopira sadraj memorijske lokacije na koju


pokazuje njen operand.
Primjer:
LDA C010h

; [C010] -> A

Instrukcija LDAX. Format instrukcije je:


LDAX RegPar ; indirektno kopira sadraj iz memorije u akumulator
Zadatak ove instrukcije je da u akumulator iskopira sadraj memorijske lokacije na koju
upuuje par registara BC ili DE. Pri tome se kao operand zadaje samo B ili D registar.
Primjer:
LDA B
LDA D

; [BC] -> A
; [DE] -> A

Instrukcija LXI. Format instrukcije je:


LXI RegPar

; uitava 16 bita podataka u par registara

Zadatak ove instrukcije je da u par registara uita 16 bitni podatak naveden kao operand.
Primjer:
LXI B, 1122h
LXI D, 3344h

; 11 -> B, 22 -> C
; 33 -> D, 44 -> E

Instrukcija LHLD. Format instrukcije je:


LHLD Adr

; uitava 16 bita iz memorije u par registara HL

Zadatak ove instrukcije je da u par registara H, L uita 16 bitni podatak na koji pokazuje
adresa adr.
Primjer:
LHLD C000h

; [C000] -> HL

Instrukcija STA. Format instrukcije je:


STA adr

; kopira sadraj iz akumulatora na adresu adr

Zadatak ove instrukcije je da kopira sadraj iz akumulatora na memorijsku lokaciju na koju


pokazuje adresa adr.
Primjer:
STA C010h

; A -> [C000]

Instrukcija STAX. Format instrukcije je:


STAX RegPar ; indirektno kopira akumulator u memoriju

89

Zadatak ove instrukcije je da kopira sadraj iz akumulatora na memorijsku lokaciju na koju


pokazuje par registara naveden kao operand.
Primjer:
STAX B

; A -> [BC]

Instrukcija SHLD. Format instrukcije je:


SHLD adr

; direktno kopira par HL u memoriju

Zadatak ove instrukcije je da kopira sadraj iz para registara H, L na memorijsku lokaciju na


koju pokazuje adresa navedena kao operand.
Primjer:
MVI H,55h
MVI L,66h
SHLD C010h

; HL -> [C010], prvo L pa H u memoriju

Instrukcija XCHG. Format instrukcije je:


XCHG ; razmjena izmeu HL i DE
Zadatak ove instrukcije je da zamjeni sadraj registra H sa D i registra L sa E. Ova instrukcija
nema operande.
Primjer:
XCHG

; H<->D, L<->E

Instrukcija SPHL. Format instrukcije je:


SPHL ; sadraj HL u pokaziva steka (HL=SP)
Zadatak ove instrukcije je da par registara H L upie u stek pointer. Ova instrukcija nema
operande.
Primjer:
SPHL

; [HL] -> SP

Instrukcija XTHL. Format instrukcije je:


XTHL

; razmjena izmeu HL i vrha steka

Zadatak ove instrukcije je da vrijednosti para registara H i L razmjeni sa vrijednostima na vrhu


steka. Ova instrukcija nema operande.
Primjer:
XTHL

; HL <-> stek

Instrukcija PUSH. Format instrukcije je:


PUSH RegPar ; gura par registara na stek
Zadatak ove instrukcije je da vrijednosti para registara izbaci na stek. Uvijek se zadaje samo
jedan registar kao operand B, D, H ili PSW. Pokaziva steka se automatski umanjuje za dva
pri svakom izvrenju ove instrukcije.
Primjer:
PUSH B
PUSH D
PUSH H
PUSH PSW

;
;
;
;

BC
DE
HL
A,

-> stek
-> stek
-> stek
Flags -> stek

Instrukcija POP. Format instrukcije je:


POP RegPar

; skida par registara sa steka

Zadatak ove instrukcije je da vrijednosti sa vrha steka skine u par registara. Uvijek se zadaje
samo jedan registar kao operand B, D, H ili PSW. Pokaziva steka se automatski uveava
za dva pri svakom izvrenju ove instrukcije.
Primjer:
POP B
POP D
POP H
POP PSW

;
;
;
;

stek
stek
stek
stek

->
->
->
->

BC
DE
HL
A, Flags

Instrukcija OUT. Format instrukcije je:

90

OUT 8-bitna adresa

; sadraj akumulatora na navedeni port

Ova instrukcija e iskopirati sadraj akumulatora na I/O port ija je 8-bitna adresa navedena
kao operand.
Primjer:
OUT F8h

; sadraj akumulatora na I/O port

Instrukcija IN. Format instrukcije je:


IN 8-bitna adresa

; prebacuje vrijednost ulaznog porta u akumulator

Ova instrukcija e iskopirati sadraj sa ulaznog porta ija je 8-bitna adresa navedena kao
operand u akumulator.
Primjer:
IN 8Ch

; vrijednost sa ulaznog porta u akumulator

Aritmetike instrukcije
Kako im ime kae, aritmetike instrukcije realizuju razliite aritmetike operacije. Pri tome
koriste podatke iz registara procesora ili memorije.
ADD instrukcija. Prva aritmetika instrukcija koju emo upoznati je ADD instrukcija. Zadatak
ove instrukcije je da sabere sadraj registra ili memorijske lokacije sa akumulatorom i da
rezultat smjesti u akumulator. Njen generalni format je
ADD B
ADD M

; A=A+B
; A=A+[M]

Kako vidimo, instrukcija ADD ima dvije forme. Njena prva forma je jednostavna ADD B e
sabrati vrijednosti koje nae u registrima A i B te e rezultat upisati u registar A.
Ako je operand ove instrukcije memorijska lokacija, ona se navodi pomou para registara HL.
Dakle, da bi koristili njenu drugu formu, moramo u par registara HL upisati memorijsku
lokaciju na kojoj se nalazi drugi sabirak.
Primjer:
;------------- prva - sabira iz registra
MVI A, 3
MVI B, 2
ADD B ;A=3+2=5
;------------- druga - sabira iz memorije
MVI H,C0h
MVI L,10h
STA C010h ; A-> [C010]
; u memoriju [HL=Co10h] upisujemo
; drugi sabirak, tek da imamo sta sabrati
ADD M
; sada sabiramo: A=A+[C010]
HLT
ADC instrukcija. Instrukcija ADC je vrlo slina prethodno opisanoj ADD instrukciji. Razlika je
u tome to e ADC kao trei sabirak uzeti sadraj Carry flega (otuda slovo C u njenom
nazivu). Njen generalni format je
ADD B
ADD M

; A=A+B+Cy
; A=A+[M]+Cy

I za ovu instrukciju vai da ako je njen operand memorijska lokacija, ona se navodi pomou
para registara HL.
Primjer:
;------------- pravimo prenos u CY flegu
MVI A,FFh
MVI B,$1
ADD B ; ovo radimo samo da izazovemo prenos
;------------- sada ADC
MVI A, 1
MVI B, 1
ADC B ; <---- A = A + B + Cy = 1 + 1 + 1 = 3
HLT

91

ADI instrukcija. Ovoj instrukciji neposredno (Immediate) zadajemo drugi sabirak. Njen
generalni format je
ADI broj

; A=A + broj

Slovo I u njenom nazivu dolazi od Immediate neposredno. Drugi sabirak, koji je zadan
neposredno, bie sabran sa sadrajem akumulatora.
Primjer:
MVI A, 1
ADI $2
; A = 1 + 2
HLT
ACI instrukcija. Instrukcija ACI je vrlo slina prethodno opisanoj ADI instrukciji. Njen
generalni format je
ACI $1

; A=A+1+Cy

Slovo C u njenom nazivu znai da e i ona kao trei sabirak uzeti sadraj Carry flega, dok
slovo I indicira da e drugi sabirak uzeti neposredno.
Primjer:
ACI $1 ; <---- A = A + 1 + Cy
DAD instrukcija. Instrukcija DAD sabira sadraj para registara koji je naveden kao operand
sa parom registara HL. Njen generalni format je
DAD regPar

; HL = HL + regPar

Iako su pojedini registri koji uestvuju u operaciji 8-bitni, njihovi parovi daju 16-bitne
vrijednosti. Procesor uzima ovakve, 16 bitne vrijednosti, sabira njihov sadraj i dobijenu 16bitnu vrijednost smjeta u par registara HL. Kao operandi ove instrukcije mogu se pojaviti
registri B (BC), D (DE) i H (HL).
Primjer:
MVI B,10h
MVI C,20h ; 16 bitna vrijednost BC=1020h
MVI H,30h
MVI L,40h ; 16 bitna vrijednost HL=3040h
DAD B
; HL = 1020h + 3040h = 4060h
HLT
SUB instrukcija. Zadatak ove instrukcije je da od akumulatora oduzme sadraj registra ili
memorijske lokacije. Njen generalni format je
SUB reg
SUB M

; A=A-reg
; A=A-[M]

Ako je operand ove instrukcije memorijska lokacija, ona se navodi pomou para registara HL,
kao i u sluaju sabiranja.
Primjer:
SUB B ; A = A - B
SBB instrukcija. Instrukcija SBB je vrlo slina prethodno opisanoj SUB instrukciji. Razlika je
u tome to e SBB kao drugog umanjioca uzeti sadraj Carry flega, u kom se dri pozajmica
(Borrow, otuda slovo B u njenom nazivu). Njen generalni format je
SBB B
SBB M

; A=A - B - Cy
; A=A - [M] - Cy

I za ovu instrukciju vai da ako je njen operand memorijska lokacija, ona se navodi pomou
para registara HL.
Primjer:
SBB B ; A = A - B - Cy
SUI instrukcija. Ova instrukcija oduzima od akumulatora neposredno (Immediate) zadanu
vrijednost. Njen generalni format je
SUI broj

; A=A - broj

Operand, koji je zadan neposredno, bie oduzet od sadraja akumulatora.


Primjer:

92

MVI A, 3
SBB $2
; A = 3 - 2
HLT
SBI instrukcija. Ova instrukcija oduzima od akumulatora neposredno (Immediate) zadanu
vrijednost, uzimajui u obzir i pozajmicu (Borrow). Njen format je
SBI broj

; A=A broj - Cy

Operand i sadraj Cy flega bie oduzeti od sadraja akumulatora.


Primjer:
SBI $1

; A = A 1 - Cy

SBI instrukcija. Ova instrukcija oduzima od akumulatora neposredno (Immediate) zadanu


vrijednost, uzimajui u obzir i pozajmicu (Borrow). Njen format je
SBI broj

; A=A broj - Cy

Operand i sadraj Cy flega bie oduzeti od sadraja akumulatora.


Primjer:
SBI $1

; A = A 1 - Cy

INR instrukcija. Ova instrukcija uveava (inkrementira) za 1 sadraj nekog registra ili
memorijske lokacije. Njen format je
INR reg
INR M

; reg=reg+1
; [M]= [M]+1

INX instrukcija. Ova instrukcija uveava (inkrementira) za 1 sadraj para registra. Kao
operandi ove instrukcije mogu se pojaviti registri B (BC), D (DE) i H (HL). Njen format je
INR regPar

; regPar=regPar+1

DCR instrukcija. Ova instrukcija umanjuje (dekrementira) za 1 sadraj nekog registra ili
memorijske lokacije. Njen format je
DCR reg
DCR M

; reg=reg-1
; [M]= [M]-1

DCX instrukcija. Ova instrukcija umanjuje (dekrementira) za 1 sadraj para registra. Kao
operandi ove instrukcije mogu se pojaviti registri B (BC), D (DE) i H (HL). Njen format je
INR regPar

; regPar=regPar-1

DAA instrukcija. Ova instrukcija pretvara sadraj akumulatora iz 8-bitnog binarnog broja u 2
4-bitna BCD broja. U sluaju da je sadraj nia 4 bita vea od 9 ili ako je Cy fleg postavljen,
instrukcija dodaje 6 niem nibblu. Ako je sadraj viih 4 bita (vii nibble) vei od 9 ili ako je Cy
fleg postavljen, instrukcija dodaje 6 viem nibblu. Njen format je
DAA

; nema operanada

Instrukcija pretvara binarni broj u akumulatoru u broj u BCD formatu. Ova instrukcija se rijetko
koristi.

Logike instrukcije

93

4.5. Mikroprocesor Intel 8086


Ovaj mikroprocesor spada u grupu mikroprocesora opte namjene. Realizovan je kao
monolitno integrisano kolo visokog stepena integracije ( LSI kolo). Ima 40 prikljuaka, a
37
38
39
realizovan je u NMOS tehnologiji (kasnije i u HMOS i CMOS ).
Ovaj mikroprocesor je 16-bitni svi njegovi registri opte namjene (ukljuujui i akumulator)
su 16-bitni. Mikroprocesor Intel 8086 ima i nekoliko 16-bitnih adresnih registara. Kako emo
uskoro vidjeti, iako su njegovi adresni registri 16-bitni, on je u stanju da adresira 1 MB
memorije odnosno da koristi 20 adresnih bita.
Procesor 8086 moe da obrauje podatke na nivou bita, bajtova, rijei (dva bajta) i blokova
podataka (nizova podataka). Mogu je rad sa podacima sa ili bez predznaka, u binarnom i
BCD sistemu ukljuujui mnoenje i djeljenje, a procesor posjeduje ukupno 95 instrukcija.
Maksimalna frekvencija takt signala koja se moe koristiti je 5 MHz, 8 MHz ili 10MHz to
zavisi od verzije mikroprocesora koji se koristi.
Osnovna blok-ema (osnovna arhitektura) mikroprocesora je prikazana na sljedeoj slici:
EU - izvrna jedinica
AX
BX
CX
DX
SP
BP
DI
SI

BIU jedinica za povezivanje


sa magistralom
Segmentni
registri

Blok registara
opte namjene

CS
DS
SS
ES
IP Pokaziva
instrukcije

Jedinica za
povezivanje sa
magistralom

Podaci

Vanjska
magistrala

Privremeni
registri

Instrukcije
ALU

Red instrukcija
6 bajtova

Flags Reg.bita stanja

Sa prethodne slike vidimo da je ovaj procesor podjeljen na dva dijela, koji se nazivaju:

Izvrna jedinica - EU (Execution Unit),


Jedinica za povezivanje sa magistralom BIU (Bus Interface Unit).

Naravno, fiziki raspored sklopova na procesoru ne mora biti ovakav - ova podjela je logika i
omoguava jednostavnije objanjenje naina rada ovoga procesora.
Prikazane dvije jedinice funkcioniu nezavisno jedna od druge, iako meu njima postoji
odredjena veza i sinhronizacija. Izvrna jedinica (EU) samo izvrava instrukcije, i to

37

MOSFET je metaloxidesemiconductor field-effect transistor (MOSFET, MOS-FET, ili MOS FET), dok N oznaava tzv.Ntype materijal koji je na poseban nain obogaen elektronima
High performance MOS
39
Complementary metaloxidesemiconductor (CMOS)
38

94

instrukcije koje se ve nalaze u procesoru. S druge strane, jedinica za povezivanje sa


magistralom (BIU) je zaduena za pribavljanje instrukcija i podataka koje EU izvrava.
Nezavisni rad EU i BIU omoguava da one rade paralelno istovremeno dok EU izvrava
neku instrukciju, BIU radi na pribavljanju slijedee instrukcije iz memorije. Na ovaj nain je
postignuto veliko ubrzanje rada mikroprocesora i kompletnog raunara. Sve ovo ne bi bilo
mogue bez jo jednog veoma vanog elementa u sastavu BIU se nalazi red instrukcija
(instruction queue) duine 6 bajta, u koji BIU moe unaprijed da smjesti odreeni broj
instrukcija.
Ranije smo spominjali da se izvrenje bilo kojeg programa odvija kao uitaj/izvri petlja. Ako
bi malo proirili prethodno teoretsko rjeenje, mogli bi rei da procesor izvrava svaki
program prolazei kroz etiri ciklusa, odnosno etiri sljedea koraka:
1.
2.
3.
4.

pribavljanje (oitavanje) sljedee instrukcije iz memorije,


oitavanje operanda,
izvravanje instrukcije,
upisivanje rezultata.

Kod mikroprocesora 8086 EU je zaduena samo za korak 3 za izvrenje instrukcija i to


instrukcija koje se ve nalaze u mikroprocesoru, u redu instrukcija. Ostale korake: pribavljanje
instrukcije, pribavljanje (oitavanje) operanada i upisivanje rezultata vri BIU.
Za vrijeme dok EU izvrava jednu instrukciju BIU pribavlja sljedeu instrukciju iz memorije.
Kako procesor ne gubi vrijeme ekajui da se prethodno uitana instrukcija izvri, BIU moe
da pribavi vie instrukcija i da ih upie u red instrukcija. Istovremeno izvravanje jedne
instrukcije i pribavljanje nove instrukcije poveava ukupnu brzinu izvravanja instrukcija i rada
mikroprocesora. Prethodno prikazana 4 koraka sada se ne izvravaju jedan nakon drugoga
(sekvencijalno), ve se esto preklapaju, kao na slijedeoj slici:

Postojanje reda instrukcija veliine 6 bajta omoguava da BIU unaprijed pribavi do 6 bajta
instrukcija (sa njihovim operandima) i da se na taj nain obezbjedi da uglavnom ve postoji
pribavljena instrukcija koju EU treba da izvri. Na taj nain se ne gubi vrijeme na ekanje da
se sljedea instrukcija iz memorije i preko sabirnice prebaci u procesor.
Tako je poveana brzina izvravanja instrukcija u odnosu na mikroprocesore prethodne
generacije (npr. 8085), koji nisu imali mogunost istovremenog pribavljanja i izvravanja
instrukcija. Kod sljedeih generacija mikroprocesora, zahvaljujui poveanom broju
tranzistora na integrisanom kolu, realizovane su takve strukture koje su omoguile (pored
paralelnog izvravanja i pribavljanja instrukcija) istovremeno izvravanje vie instrukcija, ime
se jo poveala brzina funkcionisanja mikroprocesora.
Primjer: Pretpostavimo da imamo mogunost da posmatramo rad dva hipotetika
procesora koje emo nazvati XX85 i XX86 koji rade na istoj frekvenciji.
Pretpostaviemo i da oni imaju iste skupove instrukcija i da oni iste instrukcije
izvravaju jednakom brzinom. Dakle, radi se o identinim procesorima ali sa jednom
bitnom razlikom procesor XX86 ima mogunost da paralelno sa izvravanjem jedne
instrukcije uitava drugu iz memorije.
Recimo i da u trenutku kada poinjemo sa posmatranjem, oba procesora moraju
najprije da uitaju neku instrukciju koju e izvriti.
Radi jednostavnosti emo pretpostaviti da su instrukcije koje se nalaze u memorijama
oba procesora jednostavne jednobajtne instrukcije, sline instrukcijama procesora
8085. Oba procesora e izvriti npr. MOV C, A pa ADD B, pa ADD C itd. Radi
jednostavnosti, pretpostaviemo da faze pribavljanja (FC) i izvrenja (EC) svake
instrukcije za oba procesora traju jednak vremenski period. Na slici koja slijedi dat je
prikaz aktivnosti pri izvrenju takvih instrukcija - najprije prikaz mikroprocesora XX85

95

kod koga ne postoji preklapanje pribavljanja i izvravanja instrukcija, a zatim i


mikroprocesora XX86, kod koga preklapanje postoji.

Na prikazanoj slici je jedan ciklus instrukcije procesora XX85 podjeljen na faze


pribavljanja i izvravanja instrukcije. Tokom prve faze pribavljanja instrukcije (FC1),
oba procesora e, prema uslovima zadatka, potroiti isto vrijeme. Meutim, ve u
prvoj fazi izvravanja (EC1) javlja se velika razlika. Procesor 8085 ovoj fazi moe
jedino da izvrava instrukciju, dok procesor 8086 istovremeno sa izvravanjem
prethodne oitava slijedeu instrukciju iz memorije. Ova vrsta paralelizma omoguava
mikroprocesoru XX86 da izvri vei broj instrukcija nego XX85, iako po uslovima
zadatka, oba rade na istoj frekvenciji. Kako vidimo sa slike, dok XX85 uita i izvri
samo dvije instrukcije, XX86 je ve izvrio tri, a uitao ak etiri instrukcije. Takoe,
treba primjetiti da on XX86 mnogo efikasnije koristi sabirnicu kod njega je ona
neprekidno zauzeta, dok je ona kod XX85 procesora tek polovino iskoritena.
Prethodni primjer najbolje objanjava genijalnost ideje paralelnog izvravanja, odnosno
preklapanja ciklusa pribavljanja i izvravanja instrukcije. Ve pretpostavljate oznake XX85 i
XX86 su iskoritene da bi upuivale na nain ponaanja procesora 8085 i 8086 koji, za razliku
od hipotetikih procesora u primjeru, imaju neto drugaiji skup instrukcija i rade na razliitim
frekvencijama.
Meutim, paralelizam u izvravanju nije bio jedino genijalno rjeenje Intelovih ininjera pri
projektovanju mikroprocesora 8086. Ve smo spominjali da je ovaj procesor je imao samo 16bitne registre, a ipak je mogao da adresira 1 MB odnosno da koristi 20 bita za adresiranje. Da
bi mogli da objasnimo nain formiranja adrese procesora 8086, najprije emo se upoznati se
registrima ovoga mikroprocesora, odnosno sa jednom novom grupom registara sa
segmentnim registrima.

4.5.1.

Registri mikroprocesora 8086

Mikroprocesor 8086 je mnogim svojim rjeenjima postavio temelje dananje arhitekture


raunara. Jedno od rjeenja koje je nastavilo da se koristi u itavoj generaciji procesora sve
do dananjih dana su registri ovoga procesora.
Mikroprocesor 8086 posjeduje 14 unutranjih registara veliine od po 16 bita. Od toga su 4
registra opte namene, 2 registra pointera (pokazivaa), 2 indeksna registra, programski

96

broja, 4 segmentna registra i jedan status registar (registar bita stanja). Oni se mogu po
funkciji podijeliti na sljedee registre:

registri podataka (registri opte namjene),


pokazivai i indeksni registri,
segmentni registri,
pokaziva instrukcija,
registar bita stanja.

Iako su svi veliine od po 16 bita, registri opte namjene se mogu koristiti kao jedan registar
od 16 bita ili kao dva registra po 8 bita, kao na slijedeoj slici:

Instrukcije mikroprocesora 8086 su projektovane tako da mogu pristupati pojedinim bajtima


ovog procesora npr. navoenjem AH za vii (High) bajt ili AL za nii (Low) bajt. Takoe je
mogue pristupati i kompletnom 16-bitnom podatku navoenjem AX kao operanda instrukcije.
Na sljedeoj slici je prikazan skup registara, odnosno tzv. programski model, mikroprocesora
8086.
16 bita
8 bita

8 bita

AX, 16 bita

AH

AL

Akumulator (Accumulator)

BX, 16 bita

BH

BL

Baza (Base)

CX, 16 bita

CH

CL

Broja (Counter)

DX, 16 bita

DH

DL

Podatak (Data)

16 bita

Registri
pokazivai
Indeksni
registri

SP

Pokaziva steka (Stack Pointer)

BP

Pokaziva baze (Base Pointer)

SI

Indeks izvora (Source Index)

DI

Indeks odredita (Destination Index)

16 bita

Segmentni
registri

CS

Segment koda (Code Segment)

SS

Segment steka (Stack Segment)

DS

Segment podataka (Data Segment)

ES

Dodatni segment (Extra segment)

16 bita

IP
Flags

Pokaziva instrukcije (Instruction Pointer)


Biti stanja

97

Registri opte namjene (registri podataka) procesora 8086


Registri opte namene (registri podataka) imaju najiri dijapazon upotrebe, ali svaki od njih
ima i neke specifinosti. Jedna stvar koja je specifina samo za njih je da se mogu posmatrati
ili kao 16-bitni ili kao par 8-bitnih registara.
15

AH
BH
CH
DH

AL
BL
CL
DL

AX
BX
CX
DX

Registar AX (Accumulator Register) ali i njegov nii dio AL se esto nazivaju i akumulator.
Sve instrukcije koje koriste AX kao operand zauzimaju manji prostor u memoriji nego one
koje rade sa drugim registrima. Ovom registru se, kao i drugim registrima opte namjene
moe pristupati dio po dio (AH ili AL) ili se moe koristiti cijeli registar, kada se kao operand
navodi AX.
Primjer:
ADD AL, 5
SUB AX, 1
LAHF

; AL=AL+5=5 (sabira nii bajt)


; AX=AX-1=4 (oduzima od cijelog registra)
; ucitava Flegs u podrazumjevani operand AH

Registar BX (Base Registar) se koristi kao bazni pokaziva za dobijanje stvarne fizike
adrese i tad se koristi zajedno sa DS registrom. Takoe se koristi i kao registar opte
namjene za raznorodne aritmetike i logike instrukcije.
Primjer:
MOV BX, 102h
MOV AL, [BX] ; Bez navodjenja DS uzima bajt
; sa adrese DS:BX i smjeta ga u AL
Registar CX (Counter Register) se koristi kao broja, tj. slui za smjetanje trenutne
vrijednosti brojaa. Implicitno se umanjuje prilikom izvravanja instrukcija za rad sa
stringovima (nizovima podataka) i petljama. Takoe se koristi njegov nii dio CL u
istrukcijama za rotiranje i pomeranje, gde se u njega smjeta operand koji predstavlja broj
ponavljanja date operacije nad argumentom.
Primjer:
MOV AL, 0xFF
MOV CL, 2
SHL AL, CL
; ifta bite AL lijevo za CL pozicija
; instrukcija ne prihvata BL kao operand
Registar DX (Data Register) se implicitno koristi u aritmetikim operacijama mnoenja i
dijeljenja, a takoe se koristi i za smjetanje adrese porta kod ulazno-izlaznih instrukcija.
Primjer:
MOV AX, 0xFFFF
MOV BX, 0x4
MUL BX

; AX = 0xFFFF
; BX = 0x0004
; AX*BX = 0003 FFFC; rezultat u par DX,AX

Namjena registara opte namjene mikroprocesora 8086 je vrlo slina namjeni takvih registara
kod procesora 8085. Njihovo ponaanje je utvreno definisanim skupom instrukcija ovoga
procesora, a generalno moemo rei su namjenjeni za obavljanje vrlo irokog spektra
zadataka. U nastavku emo se upoznati i sa nekim novim i po namjeni razliitim registrima od
onih koje smo vidjeli u procesoru 8085. Segmentni registri, pokaziva instrukcije i pointerski
registri u procesoru 8086 imaju posebnu namjenu formiranje memorijske adrese.

Upoznavanje sa segmentnim registrima procesora 8086


Kada je Intel 1978. godine dizajnirao 8086 i 8088 mikroprocesore, u svijetu je bilo popularno
strukturno programiranje. Programeri su veliku panju obraali na loginost u pravljenju
programa. Glasine kau da je Intel, da bi pomogao programerima da bolje organizuju
kompleksne programe, napravio segmentne registre. Ideja je bila da jedan dio memorije

98

(jedan segment) dri program, da drugi dri podatke, da trei slui kao prostor za stek i da
etvrti slui kao ekstra segment za podatke.
Tako su nastala etiri segmentna registra duine 16 bita:

CS Code Segment registar


DS Data Segment registar
SS Stack Segment registar
ES Extra segment registar

Namjena ovih registara bila je da adresiraju pojedine memorijske lokacije. Meutim, kako su
ovo 16-bitni registri, ovakvi kakvi jesu oni ne bi mogli da adresiraju memoriju veliine 1 MB,
koliko smo na poetku rekli da je adresni prostor ovoga procesora. U svakom od ovih
registara nalazi se poetna adresa segmenta veliine 64 kB. Ako bi nihov sadraj predstavili
kao heksadekadne brojeve, oni bi mogli da dre podatke u rangu od 0000h FFFFh.
Registri pokazivai (pointerski registri) slue za pristup podacima koji se nalaze u nekom
segmentu, a dozvoljena je i njihova upotreba u atimetiko-logikim operacijama. Upravo ovdje
poinje slijedea pria o dosjetljivosti Intelovih projektanata pria koju emo najbolje
objasniti primjerom:
Primjer: Pretpostavimo ponovo da imamo na raspolaganju hipotetiki raunar, u
kojem nas interesuje ponaanje jednog njegovog registra. Taj registar ije ponaanje
pratimo je adresni registar koji se naziva Code Segment (CS) a duina mu je 16-bita.
Pretpostavimo takoe da u takvom raunaru na raspolaganju imamo i jedan dodatni
vanjski sklop ili bafer u koji moemo upisati podatak veliine 20 bita. Kada u bafer
prebacimo vrijednost iz CS registra, on tu vrijednost ifta u lijevo za etiri bita.
Praktian rezultat ovakvog pomjeranja bita u lijevo je uveavanje vrijednosti
prebaenog broja dodavanjem jo jedne heksadekadne nule, kao na slijedeoj slici:
Registar CS
16 bita
0000h

0000 0000 0000 0000 0000 = 00000h = 010

0001h

0000 0000 0000 0001 0000 = 00010h = 1610

0002h

0000 0000 0000 0011 0000 = 00020h = 3210

...

...

FFFEh

1111 1111 1111 1110 0000 = FFFE0h = 104854410

FFFFh

1111 1111 1111 1111 0000 = FFFF0h = 104856010

Vanjski sklop Buffer 20 bita

Ako bi adresu koja se nalazi u CS registru u koracima uveavali za 1 i odmah nakon


toga prebacivali taj podatak u bafer, vidimo da bi bafer uveavao prebaenu
vrijednost u koracima od po 16. Dakle, vrijednost koja se nalazi u sabirau mogla bi
da adresira memoriju u rangu od 00000h FFFF0h, ali u skokovima od po 16 bajta.
Prethodni primjer prikazuje na koji nain je mogue adresirati gotovo cijeli memorijski prostor
veliine 1 MB, ali neprecizno - u koracima od po 16. Da bi mogli precizno da adresiraju
kompletan memorijski prostor, Intelovi ininjeri su predvidjeli koritenje kombinacije dva
registra jednog segmentnog i jednog pokazivakog registra.
Prije sabiranja, sadraj segmentnog registra se proiri na 20 bita pomjeranjem za etiri bita u
lijevo i upisivanjem vrijednosti 0 u etiri najnia bita koji se dobijaju pomjeranjem. Zatim se ta
vrijednost sabere sa sadrajem odgovarajueg adresnog registra.
Npr. ako treba da oita instrukciju iz memorije, procesor vri sabiranje sadraja segmentnog
registra CS i sadraja pokazivaa instrukcija IP. Ovakav nain adresiranja naziva se
segment:offset adresiranje. Nain generisanja stvarne fizike adrese je prikazan na
sljedeoj slici:

99

16 bita
Segmentni
registar CS

+ 4 bita
0 0 0 0

20

16 bita
Pokaziva
instrukcije (IP)

16

Sabira

kompletna adresa
20-bita

Primjer: Pretpostavimo da se u registrima CS (segment koda) i IP (pokaziva


instrukcije) procesora 8086 nalaze slijedee vrijednosti:
CS = C000h i
IP = 8000h.
Adresa na koju pokazuju ova dva registra formira se iz dva koraka. Najprije se
sadraj CS registra pomjera (ifta) u lijevo za 4 bita, tako da dobijamo rezultat
C0000h, a zatim se ova vrijednost sabira sa sadrajem IP registra:
C0000
+ 8000
-----C8000
Segmentni registri se dakle koriste u kombinaciji sa drugim (pokazivakim) registrima za
dobijanje stvarne fizike adrese koja ima 20 bita. Zbog vanosti ove grupe registara, njima
emo se vratiti malo kasnije, nakon to upoznamo i ostale registre ovog procesora.

Programski broja
Registar programski broja ili pokaziva instrukcije IP (Instruction Pointer) je jedan od
najvanijih registara u bilo kojem procesoru, pa i u mikroprocesoru 8086. Ovaj registar uvjek
adresira narednu instukciju koju treba da izvri procesor. Meutim, on to ne radi sam poto
ovaj registar ima samo 16-bita, on adresira instrukcije u paru sa registrom CS (Code
Segment). Zbog toga i registar CS uvjek mora pokazivati na dio memorije (segment) u kojem
se nalazi kod programa koji se trenutno izvrava. Dakle, stvarna adresa instrukcije se formira
pomou sadraja registara IP i CS. Kao to je ve opisano, ovakav nain adresiranja naziva
se segment:offset, a esto se navodi i kao CS:IP.
Vrijednost u registru IP uveava sam procesor prilikom izvrenja instrukcije, osim u
sluajevima skoka i poziva potprograma, kada se posebno zada adresa na koju e se
postaviti programski broja.
Do promjena sadraja programskog brojaa dolazi i kada se desi prekid i kada procesor
prelazi na izvrenje prekidne rutine.
IP

Instr. Pointer

Registri pokazivai podataka procesora 8086


Registar SP (Stack Pointer) je pokaziva na vrh steka i svaka instrukcija koja radi sa stekom
ga modifikuje. Kako je i on 16-bitni registar i njemu je potrebna pomo nekog od segmentnih
registara da bi formirao kompletnu adresu. Uz njega se podrazumjeva koritenje segmentnog
registra SS (Stack Segment) prilikom formiranja apsolutne adrese.
Primjer:
MOV AX, 1
PUSH AX

; izbacuje podatak na adresu [SS:SP]

100

Pokaziva steka procesora 8086 je, kao i u sluaju procesora 8085 auto-dekrementirajui.
PUSH instrukcija ovoga procesora, koja izbacuje sadraj nekog registra na stek, dozvoljava
samo izbacivanje kompletnih 16-bitnih registara na stek (AX, BX, CX itd, ali ne i AL, BL itd).
Zbog toga e svaka PUSH instrukcija umanjiti vrijednost SP registra za 2 bajta.
Treba izbjegavati suvine izmjene sadraja ovog registra, u sluaju da niste sigurni ta se tom
prilikom deava i ta se trenutno nalazi na steku.
SP

Stack Pointer

BP

Base Poitner

Registar BP (Base Pointer) se obino koristi za pristup podacima koji se nalaze na steku i to
bez izmjene steka. To je veoma korisno, jer na taj nain moemo podatke prenijete
potprogramu koristiti u proizvoljnom redoslijedu, nezavisnom od redoslijeda postavljanja
argumenata na stek. Na steku se obino nalaze i lokalne promjenljive, koje pripadaju datom
potprogramu i njima se pristupa na isti nain.
Primjer:
MOV BP,0xFFF8
MOV AL, [BP] ; sa adrese na steku [SS:BP] u AL

Indeksni registri procesora 8086


Indeksni registri se koriste za adresiranje implicitno prilikom rada sa stringovima. Meutim,
oni se mogu koristiti i kao registi opte namjene u aritmetrikim i logikim operacijama.
SI
DI

Source Index
Destination Index

Registar SI (Source Index) predstavlja indeks (adresu) unutar izvornog stringa (niza
podataka). Njegova vrijednost se mijenja u zavisnosti od flega (bita stanja) smijera (DF
Direction Flag). Kompletna adresa se uvjek dobija uz pomo DS segmentnog registra - DS:SI.
Registar DI (Destination Index) igra slinu ulogu kao SI i prestavlja indeks unutar
odredinog stringa. Njegova vrednost se takoe implicitno mijenja u zavisnosti od flega
smjera (DF) kao i kod SI. Ona se uvjek koristi u paru sa registrom ES kompletna adresa je
dakle ES:DI.
Primjer: Instrukcija CMPSB slui za poreenje dva niza bajta koja se nalaze u
memoriji. Za to koristi parove registara DS:SI i ES:DI koji pokazuju na poetak
izvornog i odredinog niza. Ako je DF = 0, onda se i sadraj SI i sadraj DI registra
uveava nakon svakog poreenja. Instrukcija REPE e se izvravati dok god
instrukcija CMPSB preko Flegs registra ukazuje da su poreeni bajtovi jednaki.
REPE
CMPSB ; implicitno koristi DS:SI i ES:DI

Registar bita stanja (Flags)


Registar bita stanja ili status registar je 16-bitni registar koji daje informacije o rezultatu
poslijednje izvrene instrukcije. Od 16 bita u tom registru se praktino koristi 9 bita, a ostali
biti su rezervisani biti za kasnije primjene i njihov sadraj je obino nula.

Od 9 bita koji se koriste 6 bita su biti stanja, a 3 bita su kontrolni biti. Biti stanja pokazuju
stanje rezultata nakon izvrenja svake instrukcije. Kontrolni biti se koriste za upravljanje

101

radom mikroprocesora, odnosno pomou njih se utie na rad mikroprocesora. Procesor 8086
posjeduje slijedee bite stanja:
CF (Carry Fllag) bit prenosa ili pozajmice prilikom sabiranja ili oduzimanja. On se koristi i
kod operacija pomeranja i rotiranja.
PF (Parity Flag) bit parnosti. Pokazuje da rezultat u akumulatoru ima paran broj jedinica
(PF Parity Flag). To je bit parnosti koji e biti postavljen u sluaju da je broj jedinica u
rezultatu predhodne instrukcije paran.
AF (Auxiliary Carry) bit pomonog prenosa ili poluprenosa. On pokazuje da li postoji
prenos izmeu nia 4 bita i via 4 bita u rezultatu. Koristi se za rad sa BCD podacima.
ZF (Zero Flag) bit nule rezultata. On pokazuje da li je rezultat prethodne operacije bio nula,
odnosno ako se radi o poreenju, da su operandi jednaki.
SF (Sign Flag) bit znaka rezultata. On pokazuje da li je rezultat prethodne operacije
pozitivan ili negativan broj. Ako je SF=0 onda je rezultat pozitivan, a ako je SF=1 onda je
rezultat negativan. Ovaj bit u stvari sadri znak rezultata predhodne instrukcije.
OF (Overflow Flag) bit prekoraenja. On pokazuje da li je pri prethodno izvrenoj
aritmetikoj operaciji dolo prekoraenja. Ako je broj bita rezultata vei od broja bita koji moe
da stane u registar u koji treba upisati rezultat, OF bit e biti postavljen.
Procesor 8086 ima i dodatna tri kontrolna bita:
IF (Interrupt enable Flag) bit maske prekida. Pomou njega se omoguava ili zabranjuje
prihvatanje zahtjeva za prekid opteg tipa koji dolaze na ulaz INTR. Ako je IF=0
onemogueno je prihvatanje a ako je ovaj bit postavljen procesor e reagovati na spoljanje
prekide.
TF (Trap Flag) ili Trap bit. Koristi se za dibagiranje, tj. da se procesor dovede u reim rada
korak po korak. U tom reimu procesor izvrava jednu instrukciju i nakon toga generie
intetrno zahtjev za prekid i odlazi u potprogram za obradu tog prekida. U tom potprogramu se
moe posmatrati sadraj registara procesora, sadraj memorijskih lokacija i tako pratiti
izvrenje programa, vriti otkrivanje greaka u programu i njihovo otklanjanje. Takav nain
rada mikroprocesora je predvien za razvijanje programa i za uklanjanje i otkrivanje greaka
u programu. Ako je postavljen, poslije svake instrukcije e biti generisan prekid INT 3 u okviru
koga se posmatraju rezultati izvravanja programa koji se razvija.
DF (Direction Flag) ili bit smjera. Ovaj bit se koristi u operacijama za rad sa nizovima
podataka i pokazuje smijer kretanja unutar stringa. On odreuje da li e se poveavati ili
umanjivati sadraj registara SI i DI koji adresiraju niz podataka. Kada je DF=0 sadraj
registara se uveava, a kada je DF=1 sadraj registara se umanjuje.

4.5.2.

Upotreba segmentnih registara

Ve smo rekli da svaka adresa u nekom od segmentnih registara pokazuje na poetnu


adresu tog segmenta u memoriji. Meutim, ovi registri imaju samo 16 bita, pa bi to znailo da
svi oni moraju imati poetne adrese u prvih 64K memorije, odnosno u rangu od 0000h do
FFFFh, kao na slici:

102

Ono to se stvarno deava je da se navedenih 16 bita adrese u bilo kom od ovih registara
pomjeraju (iftaju) lijevo za 4 mjesta.

Praktino, na etvorocifreni heksadecimalni broj dodaje jo jedna imaginarna nula koja


stvarno utie na adresu. Tako, ako nam je sadraj nekog registra FFFFh, on stvarno upuuje
na adresu FFFF0h (pet hex. cifara).
F0000h ->FFFF0h
Slijedea slika prikazuje memorijski prostor koji je mogue adresirati na ovaj nain.

Pogledaemo nain na koji segmentni registri upuuju na stvarne adrese:


Sadraj
segm.registra
0001h
0002h
0003h
...

Stvarna adresa
hex
00010h
00020h
00030h
...

Stvarna adresa
dec
16
32
48
...

103

FFFDh
FFFEh
FFFFh

FFFD0h
FFFE0h
FFFF0h

1048528
1048544
1048560

Vidimo da segmentni registri adresiraju memorijski prostor od 1MB ali u koracima svaku
esnaestu lokaciju. Zbog toga, da bi mogli da pristupamo svim memorijskim lokacijama,
kombinujemo segmentne registre sa nekim od adresnih registara.

Registri Code Segment (CS) i Instruction Pointer (IP)


CS (Code Segment) registar se najee koristi povezano sa IP (Intruction Pointer) registrom.
Naziv registra Instruction Pointer ili pokaziva instrukcije sam dovoljno govori o namjeni
ovoga registra. Njegov zadatak je da uvjek pokazuje na memorijsku lokaciju slijedee
instrukcije koja treba da bude izvrena.
Sa druge strane, ako nam je poznato da se programi i njihove instrukcije se esto jednim
imenom nazivaju kod, odmah nam je jasna i namjena registra Code Segment. On uvjek
pokazuje na poetak dijela memorije u kojem je smjeten kod programa koji se trenutno
izvrava. Zajedno, ova dva registra odreuju tanu memorijsku lokaciju sa koje mikroprocesor
treba da uzme slijedeu instrukciju.
Ovaj nain adresiranja naziva se (i pie u formi) Segment:Offset.
CS registar daje nam adresu segmenta, dok nam drugi dio, odnosno tanu lokaciju unutar
segmenta daje IP registar. Npr. ako su trenutni sadraji u registrima CS i IP 8000:1000,
slijedea instrukcija koju e procesor uitati nalazi se na hiljaditoj lokaciji segmenta koji
poinje adresom 80000h, odnosno 81000h.

Poto registar IP ali i ostali pokazivaki registri imaju samo po 16 bita, u segment:ofset
organizaciji memorije postoje ogranienje vezano za duinu segmenta. Maksimalna vrijednost
koju moe da dri neki pokazivaki registar je FFFFh ili 65536. Zbog toga je maksimalna
duina segmenta ograniena na 64 kB.
Primjer: Poetak segmenta odreen je segmentnim registrom CS. On moe da
adresira prostor od 1MB, zahvaljujui dodatnoj nuli (16 + 4 bita) prema prethodno
opisanoj tehnici. Ako je u registru CS upisana vrijednost 6000h, a u IP vrijednost
C000h, izraunati i nacrtati poloaj i veliinu segmenta i memorijske lokacije na koju
pokazuje ovaj par registara.
CS = 6000h
Poetak segmenta = 60000h
IP = C000h
Veliina segmenta = FFFFh
Memorijska lokacija = 60000h + C000h = 6C000h.

104

Ovo ogranienje veliine segmenta od 64 kB nametalo je programerima koji su u vrijeme


ovog i slinih procesora pravili programe da paze da li im su njihovi programi dui od 64 kB.
Iako danas ovo ogranienje izgleda udno, jer danas i najobiniji programi zauzimaju vie od
64 kB, u vrijeme nastanka ovog procesora programi su veinom bili krai od duine
segmenta.
Sa slike je vidljivo da o nekom memorijskom segmentu moemo razmiljati i kao o prozoru
kroz koji vidimo dio memorije duine 64 kB. Ovaj prozor moemo pomjerati lijevo-desno
mijenjanjem vrijednosti segmentnog registra, koji odreuje gdje e biti poetak takvog
prozora.
Vrijednosti koje se nalaze u ova dva registra (CS i IP) mijenjaju se ili automatski ili pomou
JUMP (skok) instrukcije. Postoje dvije vrste skokova, NEAR i FAR JUMP.
NEAR JUMP se koristio ako se skae u okviru istog segmenta koda, i tada se mijenja jedino
sadraj IP registra.
FAR JUMP se koristio kada treba skoiti van okvira nekog segmenta - tada se mijenja
sadraj oba registra (CS i IP).

Registri DS (Data Segment) i SI (Source Index)


Registar DS (Data Segment) pokazuje na memorijski blok namenjen za smetanje podataka.
Sve instrukcije koje pristupaju podacima to ine uz pomo ovog registra. Kako je i ovaj
registar 16-bitni, pri adresiranju memorije koristi se prethodno opisana segment:offset
tehnika. Kao offset dio adrese koristi se ili adresni registar SI ili se offset navodi neposredno,
to zavisi od koritene instrukcije. Treba rei i da je DS registar podrazumjevani operand
odreenih instrukcija.
Primjer: U registar AL uitati bajt koji se nalazi na memorijskoj lokaciji 20010h u Data
Segmentu.
MOV AX, 2000
;upii broj 2000h u AX registar
MOV DS, AX
;prebaci sadraj iz AX u DS
MOV AL, [0010] ;sadraj memorijske lokacije 2000:0010
;upii u AL registar
U prethodnom primjeru, registar DS je podrazumjevani operand instrukcije (instrukcija
ga koristi implicitno), dok je offset dio adrese naveden neposredno.
Poto je ilegalno upisati broj 2000h direktno u DS registar, prvo emo ga
upisati u AX.
Sada iz AX prebacujemo sadraj u DS. Procesor sada zna gdje je poetak
Data Segmenta (2000 + 0h).
Zadnja instrukcija kae procesoru da u registar AL smjesti sadraj koji nae
na lokaciji 0010h Data Segenta. Procesor e pokrenuti ciklus itanja 1 bajta
sa memorijske lokacije 20010h (20000h + 0010h).
Vidjeli smo da zadnja instrukcija (MOV) nije navela segmentni dio adrese.
Procesor u ovom sluaju uvjek pretpostavlja da treba da ita sa lokacije na koju
upuuje DS registar. Offset dio je dan u okviru uglastih zagrada. I on je veliine
16 bita, i za njega vrijede ista ogranienja koja su vrijedila za prethodni sluaj.

105

Registri ES (Extra Segment) i DI (Destination Index)


ES registar je 16 bitni registar koji uvjek pokazuje na poetak dodatnog segmenta za podatke.
Ovaj segment se moe koristiti za smjetanje razliitih podataka, a esto se koristi i pri radu
sa nizovima podataka, u paru sa DI registrom.
Primjer: U registar AL uitati bajt koji se nalazi na memorijskoj lokaciji 30010h u Extra
Segmentu.
MOV AX, 3000
;upii broj 3000h u AX registar
MOV ES, AX
;prebaci sadraj iz AX u ES
MOV AL, ES:[0010] ;sadraj memorijske lokacije 3000:0010
;upii u AL registar
Za raliku od prethodnog primjera, vidimo da smo ovdje morali navesti da se traeni
podatak nalazi u Extra segmentu.

Registri SS (Stack Segment) i SP (Stack Pointer)


Registar SS (Stack Segment) dri poetnu adresu dijela memorije koja se koristi kao stek
(segment), dok registar SP (Stack Pointer) dri offset dio i pokazuje na tanu adresu unutar
segmenta. Dakle, i ovdje se adresa odreuje pomou dva dijela - SEGMENT:OFFSET, na
nain koji je ranije pokazan.
Ovdje moramo primjetiti da je mogue da se etiri nabrojana segmenta mogu nalaziti bilo gdje
u memorijskom prostoru. Mogue je i da se neki segmenti preklapaju to nije nita neobino.
Ovakva segmentna organizacija sa segmentnim registrima je kasnije zadrana i kod ostalih
mikroprocesora iz familije Intel 80x86 (x = 1, 2, 3, 4) da bi se zadrala softverska
kompatibilnost izmedju ovog i ostalih kasnijih mikroprocesora iz ove serije.

106

4.6. Signali mikroprocesora Intel 8086


Na sljedeoj slici je prikazan izgled integrisanog kola mikroprocesora 8086 (pogled odozgo) i
raspored odgovarajuih signala na prikljucima.

Minimalni i

Maksimalni
nain rada

40

Vcc

AD14

39

AD15

AD13

38

A16 / S3

AD12

37

A17 / S4

AD11

36

A18 / S5

AD10

35

A19 / S6

AD9

34

BHE# / S7

AD8

33

MN / MX#

AD7

32

RD#

AD6

10

31

HOLD

RQ# / GT0#

AD5

11

30

HLDA

RQ# / GT1#

AD4

12

29

WR#

LOCK#

AD3

13

28

M / IO#

S2#

AD2

14

27

DT / R#

S1#

AD1

15

26

DEN#

S0#

AD0

16

25

ALE

QS0

NMI

17

24

INTA#

QS1

INTR

18

23

TEST#

CLK

19

22

READY

GND

20

21

RESET

8086

GND

Ve na samom poetku razmatranja signala mikroprocesora 8086, eka nas jo jedna velika
inovacija Intelovih ininjera. Sa slike je vidljivo da ovaj procesor moe da radi u minimalnom ili
maksimalnom reimu rada. Minimalni reim rada bio je rezervisan je za raunare sa jednim
mikroprocesorom, a maksimalni za vee raunarske sisteme sa vie mikroprocesora. Dakle,
ve daleke 1976. godine, kada je poeo rad na projektovanju ovog procesora, Intelovi
strunjaci su predvidjeli mogunost njegovog spajanja sa drugim procesorima u sistemu.
Posebnim nainom spajanja njegovog prikljuka MN/MX# mijenjalo se ponaanje procesora i
kao funkcija prikljuaka sa brojevima 24-31.

4.6.1.

Signali napajanja mikroprocesora 8086

Kao i njegov prethodnik, mikroprocesor 8086 se napaja istosmjernim naponom standardne


vrijednosti napona od +5V. On posjeduje dva prikljuka napajanja i to jedan za plus signal
napona napajanja (Vcc), a drugi za minus signal ili masu (GND). Maksimalna struja
mikroprocesora je manja od 350mA, a u prosjeku mikroprocesor troi oko 100mA.

107

4.6.2.

Takt signal mikroprocesora 8086

Za razliku od procesora 8085, mikroprocesor 8086 ne posjeduje sklopove za generisanje takt


signala pa se on mora generisati izvan mikroprocesora. Ovaj mikroprocesor koristi takt signal
koji se dovodi na prikljuak CLK. Za njegovo generisanje koristi se jedno posebno vanjsko
kolo oznaeno sa 8284A. Na to kolo se prikljuuje ili kristal kvarca ili RC-mrea. Maksimalna
frekvencija takt signala moe da bude 5 MHz, 8 MHz ili 10 MHz, to zavisi od koritene
verzije mikroprocesora.

4.6.3.

Adresni signali

Tokom upoznavanja sa procesorom 8085, vidjeli smo da je dio njegovih adresnih pinova
(ukupno 8) imao dvostruku ulogu u jednom momentu je procesor preko njih izbacivao
adrese, a u drugom su se na njima nalazili podaci. I mikroprocesor 8086 koristi slian princip.
Ovaj mikroprocesor ima 20 adresnih signala i svi oni su multipleksirani.
AD0-AD15 su prikljuci mikroprocesora preko kojih se prenose i adrese i podaci. To su
multipleksirane linije preko kojih se u prvom dijelu mainskog ciklusa (u prvom T-stanju)
prenose biti adrese (niih 16 bita adrese), a u sljedeem dijelu ciklusa preko njih se prenosi
podatak (16 bita podatka).
A16/S3-A19/S6 su takoe multipleksirane linije. U prvom dijelu mainskog ciklusa na njima
se nalaze 4 via bita adrese, a u sledeem biti stanja S3 do S6.

108

Iz pozicije procesora, adresni signali su uvijek izlazni signali procesor uvijek mora da
navede kojoj adresi i kojem sklopu eli da pristupi. Principijelno najjednostavniji nain za
povezivanje ovog procesora sa memorijom prikazan je na slijedeoj slici:

Poto se samo kratko nalaze na odgovarajuim prikljucima mikroprocesora, adresni biti se


moraju prebaciti u vanjski registar (le) da bi na sabirnici oslobodili prostor za podatke.
Adresni biti se pojavljuju u prvom dijelu mainskog ciklusa, kada se pojavljuje i signal ALE koji
se koristi za njihovo upisivanje vanjski adresni registar.
Pored dva osnovna stanja (0 i 1), svi adresni pinovi ovog mikroprocesora mogu da budu
dovedeni u stranje visoke impedanse (tree stanje - ni nula, ni jedan), to ima efekat kao da
su oni fiziki odvojeni od sabirnice. Ovakva logika naziva se trostatika logika, a realizuje se
pomou trostatikih kola. Ovo odvajanje pinova sa magistrale deava se kada je
mikroprocesor u stanju HOLD, HALT ili RESET.

4.6.4.

Signali podataka

Da bi pristupio podacima ili instrukcijama koje se nalaze npr. u memoriji, mikroprocesor 8086
najprije mora da objavi adresu na kojoj se nalazi traeni podatak ili instrukcija. Vidjeli smo da
se u toku objavljivanja adrese koristi posrednik adresni bafer, u koji se adresa smjeta da bi
se sabirnica oslobodila za prenos podataka. Za prenos podataka mikroprocesor 8086 koristi

109

16 linija za podatke preko kojih moe u jednom trenutku da prenese 16 bita. Podaci se
prenose preko istih prikljuaka AD0-AD15 kao i nii dio adrese.
U drugom dijelu mainskog ciklusa (drugom i ostalim T-stanjima) preko ovih linija se prenose
podaci i instrukcije. Za razliku od adresnih signala koji su za procesor uvjek jednosmjerni (idu
od procesora ka ostalim sklopovima), linije podataka su dvosmjerne. Preko njih procesor
moe da oitava ili upisuje podatke u memoriju ili neki drugi sklop ili da oitava instrukcije iz
memorije.
Kako se radi o istim pinovima mikroprocesora kao i u sluaju adresnih linija, i ovi prikljuci
procesora su trostatiki, odnosno mogu se dovesti u stanje visoke impedanse i odvojiti od
vanjske magistrale. To se takoe deava kada je mikroprocesor u stanju HOLD, HALT ili
RESET.

4.6.5.

Vremenski dijagrami procesora 8086

Tokom ranijih diskusija smo vidjeli da se nain komunikacije mikroprocesora sa njegovom


okolinom najbolje i najlake opisuje vremenskim dijagramima. Ponaanje i nain komunikacije
sa okolinom mikroprocesora 8086 u minimalnom reimu rada je vrlo slino ranije opisanom
ponaanju njegovog prethodnika. Da bi to ilustrovali, pogledaemo njegov vremenski
dijagram oitavanja podatka iz memorije, za sluaj minimalnog reima rada:

Svaki ciklus sabirnice ovog mikroprocesora se sastoji od najmanje 4 T-stanja. Ukoliko


mikroprocesor komunicira sa nekim sporijim ureajem, dodatna stanja ekanja (TW) mogu
biti umetnuta izmeu ciklusa T3 i T4. Sporiji ureaj e procesoru signalizirati da nije spreman
dranjem READY linije na niskom nivou (logika 0).
Sa signalom ALE (Address Latch Enable) smo se ve upoznali. Njegov zadatak je ostao isti
da dozvoli upisivanje adrese u adresni le. Kada treba da dozvoli upisivanje u le, procesor
napon na ovoj liniji podie na visok nivo (logika jedinica). Kao adresni leevi koristila su se
kola 8282/8283.
Signal M/IO# je vrlo slian onom koji smo vidjeli kod procesora 8085. Preko ove linije
procesor signalizira da li se radi o komunikaciji sa memorijom ili nekim IO ureajem. Kod

110

ovoga procesora, ako je signal na visokom nivou (logika 1.), radi se o komunikaciji sa
memorijom.
Linija DT/R# (Data Transmit/Receive) mikroprocesora 8086 se koristi u minimalnom reimu
rada ako se koristi 8286/8287 primopredajnik podataka (transceiver) da odredi tok podataka
od procesora ili ka procesoru. Kada procesor obori ovaj signal na nulu, to je znak
primopredajniku da podaci teku prema porcesoru.
Signal DEN# (Data Enable) procesor koristi da bi signalizirao primopredajnicima podataka
da e preko magistrale biti realizovan prenos podataka. On je na niskom nivou kad god je
potrebno realizovati prenos preko magistrale. Ovaj signal omoguava primopredajnicima da
razdvoje podatke od adresa na multipleksiranim linijama AD.
Signal RD# smo upoznali tokom diskusije o mikroprocesoru 8085 i ima istu namjenu to je
signal za oitavanje iz memorije ili ulaznog sklopa. Mikroprocesor ga generie kada treba
oitati instrukciju ili podatak tako to obori napon na ovom pinu na nizak nivo (logika nula).
Kako smo ranije ve naveli, vremenski dijagrami se itaju sa lijeva na desno pri emu se
prolazi kroz svako T-stanje pojedinano. Pri tumaenju prethodnog dijagrama treba imati u
vidu da se radi o oitavanju podatka iz memorije.
T1-stanje (za oitavanje iz memorije)
U toku prvog T-stanja, na multipleksiranje adresne linije izbacuje se memorijska adresa sa
koje treba oitati podatak. Ona se izbacuje preko pinova AD15-AD0 i A19-A16/S6-S3.
Procesor istovremeno generie i ALE impuls da bi izbacio kompletnu 20-bitnu adresu u
adresni le. Na opadajuoj ivici ovog signala, adresa koja je u tom trenutku ve stabilna na
magistrali, se izbacuje u privremeni adresni registar (le).
M/IO# signal je u ovom trenutku ve postavljen na High (logika 1), signalizira ostalim
sklopovima da se radi o komunikaciji sa memorijom.
DT/R# (Data Transmit/Receive) signal je takoe ve postavljen na Low (logika nula). On
ukazuje na smjer kretanja podataka preko magistrale. U ovom sluaju, procesor treba da
primi (receive) podatke. Procesor pomou signala DT/R# obavjetava primopredajnike
podataka da se radi o oitavanju podatka odnosno da e podaci ili instrukcije tei iz nekog
sklopa u procesor.
Signal BHE na dijagramu nije prikazan radi jednostavnosti. Ovaj signal takoe slui za
adresiranje, jer u kombinaciji sa A0 odreuje da li e se itati sa parne ili neparne adrese ili e
biti oitana cijela rije. Njegovu ulogu emo detaljnije razmotriti neto kasnije.
T2-stanje (za oitavanje iz memorije)
Tokom ovog perioda se uklanja adresa sa adresne sabirnice.
Procesor postavlja svoj RD# signal na Low (logiku nulu), da bi naznaio da se radi o itanju.
Ovaj signal koristi se u kombinaciji sa pinom M/IO# koji signalizira da li se radi o oitavanju iz
memorije ili iz IO sklopa. Signali RD# i M/IO# predstavljaju komandu adresiranom ureaju
(memoriji) da se spoji na lokalnu sabirnicu, dok ostali ureaji trebaju da se odvoje od
sabirnice.
Ako se koristi primopredajnik podataka (transceiver) za baferovanje podataka, onda se i
signal DEN# (Data Enable) postavlja na logiku nulu. Putem ovoga signala, procesor
obavjetava primopredajnike podataka da e preko multipleksiranih linija AD (za adrese i
podatke) tei podaci.
Biti stanja S6-S3, koji u ovom taktu zamjenjuju signale A19-A16, slue da identifikuju
segmentni registar koji je koriten prilikom formiranja adrese i da odrede da li e procesor
prihvatati interapte.
T3-stanje (za oitavanje iz memorije)
Tree T-stanje je ostavljeno memoriji da pokua da pronae i pripremi podatke. Sve dok je
signal READY na niskom nivou (logika 0), procesor e ekati da memorija pronae i pripremi
podatke za prenos. U momentu kada memorija izbaci traeni podatak na sabirnicu, ona
podie signal READY na logiku jedinicu i procesor moe da pone sa oitavanjem podatka.
Meutim, ako memorija ne uspije dovoljno brzo da pripremi traeni podatak, procesor izmeu
T3 i T4 ubacuje jo jedno T-stanje koje se, kako smo ve vidjeli, naziva stanje ekanja.
T4-stanje (za oitavanje iz memorije)

111

Na poetku ovoga perioda podaci se prebacuju u registre mikroprocesora. etvrto T-stanje


koristi se takoe i da procesor vrati signale kojima kontrolie smjer toka podataka na poetne
pozicije, da bi mogao da pokrene slijedei ciklus sabirnice.
Na sljedeoj slici su prikazani talasni oblici signala mikroprocesora 8086 za jedan mainski
ciklus upisivanja podatka u IO sklop (za minimalni nain rada).

T1 ciklus / upis u IO sklop


I u sluaju upisivanja u memoriju ili IO sklop, situacija je vrlo slina kao kod prethodno
opisanog dijagrama. Tokom T1 ciklusa, na adresne linije A(0-19) izbacuje se adresa na koju
treba upisati traeni podatak, dok signal ALE postavljen na logiku jedinicu otvara adresni le.
Signal M/IO# (logika nula) navodi da se radi o upisivanju u IO sklop, dok DT/R# (logika
jedinica) ukazuje da e podaci biti emitovani od procesora ka nekom drugom sklopu.
T2 ciklus / upis u IO sklop
Tokom ovog perioda ponovo se uklanja adresa sa adresne sabirnice, a sabirnica odlazi u
stanje visoke impedanse.
Signal WR# se postavlja na Low (logika 0), to je komanda adresiranom ureaju da se spoji
na lokalnu sabirnicu.
Ako se koristi primopredajnik podataka (transceiver) za baferovanje podataka, onda se i
signal DEN# postavlja na logiku nulu, jer signali WR# i DEN# zajedno upravljaju ovim kolom.
Tokom ovog ciklusa takoe se postavljaju i multipleksirane status linije S3-S7.
T3 ciklus / upis u IO sklop
Ovaj period slui samo za to da adresiranom IO ureaju da vremena da se pripremi za
upisivanje podataka. Kada ureaj izbaci na liniju READY High signal (logika 1), to je signal
procesoru da je ureaj spreman da kompletira prenos podataka.
T4 ciklus / upis u IO sklop

112

Na poetku ovoga perioda podaci se prebacuju u mikroprocesor. Tokom ovog perioda svi
signali mikroprocesora se postavljaju u prvobitno stanje, radi pripreme za slijedei ciklus
sabirnice.

4.6.6.

Prekidi (Interapti) mikroprocesora 8086

Tokom prethodnih diskusija u kojima smo pominjali prekide naveli smo da do interapta dolazi
kada neki sklop (ili program) mora da preusmjeri panju procesora sa starog programa, kojeg
je do tog trenutka izvravao, na neki drugi potprogram. Taj drugi program se naziva ISR
40
(Interrupt Service Routune) ili ponekad ISS (Interupt Service Subroutine ). Mjesto do kojega
je procesor doao u toku izvrenja prekinutog programa pamti se guranjem njegovih registara
na stek da bi procesor znao odakle da nastavi sa njegovim izvravanjem nakon povratka iz
ISR rutine.
Da bi to vie obogatili znanje o prekidima, moramo razmotriti i funkcionisanje raunarskog
sistema kao cjeline. Iako je procesor najvaniji sklop u raunaru, mnoge funkcije i usluge
koje dobijamo od mikroraunara nam ne prua on ve razliiti drugi sklopovi koji se nalaze u
raunaru. Npr. radom tastature upravlja kontroler 8042A dok rad serijskog porta nadzire
Intelov ip 8251A. Meutim, svi ovi sklopovi moraju na neki nain biti povezani sa
procesorom, da bi on mogao da kontrolie njihov rad i da odgovara na njihove zahtjeve.
Ranije smo spominjali mogunost da procesor stalno iznova prolazi kroz veliku petlju tokom
koje neprekidno provjerava stanje svakog sklopa. Ova metoda se naziva pooling, i prikazana
je na slijedeoj slici:
CPU

RAM

U/I (1)
Multiplekser
Kojeg kontrolie CPU

ROM

U/I (2)

U/I (3)

U/I (n)

Pri koritenju ovakve, u sutini sinhrone metode, procesor posveuje isto vrijeme svakom
ureaju, zatim odreeno vrijeme izvrava koristan program, zatim se ponovo vraa ureajima
itd. Iako ovakva metoda funkcionie, ona ima mnogo nedostataka. Kako smo ve spominjali,
ova metoda bez potrebe troi vrijeme procesora on neprekidno mora da oitava stanja
pojedinih sklopova umjesto da izvrava neki svrsishodan kod. Takoe, ako neki ureaj alje
podatke velikom brzinom, moglo bi doi do gubitka podataka, jer procesor u ovakvom reimu
opsluuje ureaje u nekoj vrsti petlje od prvog do zadnjeg, pa ponovo od prvog do zadnjeg
itd.
Zbog toga su Intelovi strunjaci razvili mnogo bolji metod. U ovom metodu, odgovornost za
obavjetavanje procesora o promjenama je prebaena na vanjske ureaje. Umjesto da
neprekidno ispituje stanja razliitih ureaja i eka na njihove odgovore, procesor izvrava neki
koristan program sve dok ne dobije signal od nekog ureaja koji zahtjeva njegovu panju.
Ovakva, asinhrona metoda, u kojoj procesor izvrava koristan program sve dok ne dobije
41
zahtjev od nekog ureaja, naziva se metoda interapta ili prekida . U ovakvom sistemu
40
41

Subroutine - potprogram
Intel - 8259A - Programmable Interrupt Controller

113

42

pojavljuje se jedan novi sklop programabilni kontroler prekida (PIC) . Ovaj sklop ponaa
se kao menader u ovakvom sistemu. PIC prima zahtjeve od razliitih ulaznih i izlaznih
ureaja, odreuje koji od pristiglih zahtjeva ima vei znaaj i alje zahtjev za prekidom
procesoru. Ako ovaj kontroler primi novi zahtjev u momentu dok procesor ve izvrava neki
drugi interapt, on ponovo odreuje koji je od njih vaniji ako je potrebno, on moe da
prekine izvravanje neke ISR rutine i da pokrene drugu koja je u datom momentu vanija.
Ovakav sistem, koji se jo naziva i Interrupt-driven (voen prekidima) dat je na slijedeoj
slici:

Kao programabilni kontroler prekida najee se koristilo 8259 (ili novije 8259A) kolo. Iako
ovo kolo u modernim raunarima ne moemo nai kao odvojen ip, ono se jo uvjek koristi u
okviru Southbridge ipseta u x86 raunarima.
Uloga programabilnog kontrolera prekida moe se opisati i kao posrednika. Ovaj kontroler
posreduje pri zahtjevima razliitih perifernih ureaja upuenih procesoru. Njegova
odgovornost je da signalizira procesoru da neki od ureaja zahtjeva neku uslugu npr.
postavljanjem signala INTR na logiku jedinicu, kao na prethodnom dijagramu.
Nakon to preda procesoru zahtjev za prekid, kontroler prekida ima jo jedan zadatak. Na
neki nain, on mora da objasni procesoru kakvu akciju ureaj oekuje, odnosno koji program
(koji ISR ili interrupt handler) treba da izvri. Intelovi ininjeri su ponovo rijeili ovaj problem
na najjednstavniji nain. U ranijim poglavljima vidjeli smo da svaki raunar ima tabelu sa
vektorima (pokazivaima) na adrese na kojima se nalazi stvarni kod ISR rutine. Kontroler
interapta predaje procesoru broj ISR rutine, odnosno njenu brojanu poziciju u IVT tabeli.
Iako prethodno opisani hardverski interapti imaju veliki znaaj za funkcionisanje raunara,
softverski interapti nisu nita manje vani. Softverske intarapte generie procesor kada
tokom izvravanja nekog programa naie na INT instrukciju. Koncept softverskih interapta
najee koriste pisci operativnih sistema da bi pojedine aplikacije mogle da koriste usluge
njihovog OS-a.
Da bi se mogli ozbiljnije pozabaviti softverskim interaptima, moramo se bar povrno upoznati
sa pojmom BIOS-a. U originalnom IBM PC raunaru, koji se oslanjao na procesor 8088
(blizak roak procesora 8086), memorijske adrese F0000h-FFFFF su bile rezervisane za
sistemski ROM. U tom ROM-u, koji se nalazio na samom vrhu memorijskog prostora ovoga
raunara, nalazio se skup programa za pokretanje sistema (boot sekvenca) i skup ISR rutina
42

Programmable Interrupt Controller

114

za osnovnu kontrolu odreenih hardverskih ureaja. Ovaj ROM koji se nazivao BIOS ROM
bio je duine 64kB. Njegovo funkcionisanje emo detaljnije upoznati neto kasnije za sada
je bitno da shvatimo da se funkcionisanje procesora 8086 u velikoj mjeri oslanja na ovaj
ROM.
U ranijim diskusijama smo kao primjer softverskog interapta spominjali famozni interapt 21h
operativnog sistema DOS. BIOS (Basic Input Output System) koristi slian mehanizam.
Interapti 10h, 13h i 16h su interne BIOS funkcije koje kontroliu ekran, disk kontroler i
tastaturu. Operativni sistem DOS je esto, umjesto da direktno adresira hardverske ureaje,
koristio usluge BIOS-a da kontrolie ponaanje raunarskog sistema. Moderni operativni
sistemi sve manje se oslanjaju na koncept BIOS-a i koriste neto bri mehanizam drajvera da
bi kontrolisali ponaanje hardvera.
Konstruktori mikroprocesora 8086 su ostavili mogunost za implementaciju 256 prekida u
raunaru koji se oslanja na ovaj procesor. Ovi interapti su bili podjeljeni u nekoliko grupa:

NMI i INTR su implementirani kao vanjski interapti koje su pokretali hardverski


ureaji,
INT n, INTO (Owerflow) i INT3 (breakpoint) su softverski interapti, koji su mogli biti
inicirani iz nekog programa,
Dva interapta generie sam procesor: divide-by-0 i single-step.

Kao i njegov prethodnik, i procesor 8086 koristi tabelu vektora prekida (IVT) u kojoj dri
poetne adrese ISR rutina koje su zaduene za obradu prekida. Ve pogaate da ova tabela
procesora 8086 mora da dri dva podatka adresu segmenta (2 bajta) koja e biti upisana u
registar CS i adresu ofseta (2 bajta) koja e biti upisana u IP registar. Tek kada dobije oba
ova podatka, mikroprocesor 8086 moe da realizuje skok na poetak neke ISR rutine. Da bi
smjestili poetne adrese za 256 ISR rutina, potrebno nam je 256 x 4 = 1024 bajta.
Par registara CS:IP procesora 8086 uvijek pokazuje na slijedeu instrukciju programa koji se
trenutno izvrava. S druge strane, izvrenje nekog potprograma za obradu prekida zahtjeva
da se u CS:IP registre upie poetna adresa ISR rutine. Da bi nakon obrade interapta mogao
da nastavi sa normalnim izvrenjem programa, procesor mora na steku da sauva trenutno
stanje u svojim registrima. Zbog toga, kada doe do interapta, procesor preduzima slijedee
akcije:

Sadraj Flags, CS i IP registara on gura na stek,


isti sadraj TF i IF bita stanja da bi zabranio prekide tipa korak po korak i INTR,
Procesor uitava poetnu adresu ISR rutine u svoje registre CS:IP i poinje
izvravanje ovog programa,
Na kraju ISR rutine, kada izvrava IRET instrukciju, procesor vraa sa steka sadraje
IP, CS i Flags registara,
Nakon to vrati ove registre, ponovo postavlja bite stanja IF i TF te nastavlja sa
izvrenjem programa.

Memorijska slika tabele vektora prekida ovoga procesora data je na slijedeoj slici:

115

Ostatak memorije
[CS]

003FF h

[IP]

003FE h

TIP 255

Dostupni programeru
Tip 32-255
...
TIP 33
...
[CS] tipa 32

00084 h

TIP 32
[IP] tipa 32

00080 h

Rezervisani vektori
Tip 5-31

00014 h

...
INTO - prekoraenje (TIP 4)
...
...

00010 h

INTO - breakpoint (TIP 3)


...
[CS] tipa 2

0000C h

Posveeni vektori
Tip 0-4

NMI - nemaskirajui prekid (TIP 2)


[IP] tipa 2
[CS] tipa 1

00008 h

Single-step (TIP 1)
[IP] tipa 1
[CS] tipa 0

4 bajta

00004 h

Divide-by-zero (TIP 0)
[IP] tipa 0

00000 h

2 bajta
43

Kako je iz priloene slike vidljivo , u prvih 1024 bajta (0-1023) operativne memorije nalazi se
IVT tabela u kojoj se nalaze pokazivai ka ISR rutinama. Broj koji je dodjeljen pojedinim
pokazivaima odreuje tip datog prekida tako imamo prekid Tipa 0, Tipa 1 ili Tipa 255. Prvih
pet pokazivaa (Tip 0 Tip 4) su posveeni vektori koje ili koristi procesor ili slue za
nemaskirajui interapt. Slijedeih 27 pokazivaa (5-31) su rezervisani, do su ostali (32-255)
dostupni programeru. Izraz dostupni programeru znai da su ovi interapti na raspolaganju na
prvom mjestu piscima operativnih sistema kada bi obini programeri morali da piu ovakve
rutine, njihov posao bi trajao veoma dugo.
Interesantno je rei da se po Intelovoj terminologiji, samo NMI i INTR smatraju za hardverske
(ili vanjske) prekide. Svi ostali prekidi, ukljuujui i divide-by-0 i single-step (koje generie
CPU) smatraju se za softverske (unutranje) prekide.
Prekidi su prema prioritetu izvrenja podijeljeni u slijedee grupe:

43

Interni prekidi - divide-by-0, single-step, break-point i owerflow, sa najviim


prioritetom
Nemaskirajui prekid (NMI -Non Maskable Interrupt),
Softverski prekidi (INT n),
Vanjski, hardverski interapti (INTR), sa najniim prioritetom.

Undrestanding 8085-8086 Microprocessors - (korigovana tabela)

116

Prethodna slika prikazuje samo jedan mali isjeak memorije originalnog IBM PC raunara. Da
bi dobili kvalitetniju sliku o nainu funkcionisanja interapta, pogledaemo kako je izgledao
kompletan memorijski prostor ovakvog raunara:

Zadnji blok memorije (F0000-FFFFF) veliine 64 kB bio je odreen za sistemski ROM ili
44
BIOS. U njemu su se nalazile rutine za testiranje pojedinih komponenti, pokretanje
operativnog sistema i rutine za obradu prekida. Pored toga, na matinoj ploi je postojalo
podnoje u koje je bilo mogue smjestiti opcioni ROM. Za njega je takoe bio odvojen blok
veliine 64 kB (E0000-EFFF). Ovo podnoje je ostavljeno da bi bilo mogue instalirati jo
jedan ROM sa dodatnim BIOS i ISR rutinama za dodatne ureaje koji su proirivali
funkcionalnost takvog raunara. Podrazumjeva se da je opcioni ROM ugraivan u (za to
doba) skuplje maine. Slijedei memorijski blok duine 128 kB bio je rezervisan za razliite
ureaje kao to je hard disk BIOS (C8000h) i video BIOS za EGA i VGA ureaje (C0000h).
Pored konvencionalne memorije koja je u to doba bila dostupna programima, postojao je i
blok veliine 128 kB video memorije koju su koristili grafiki adapteri (CGA, MDA, Hercules,
EGA i VGA).
Kako vidimo, rutine za obradu prekida nalazile su se u originalnom IBM PC raunaru u okviru
razliitih ROM memorija. Zadatak proizvoaa matinih ploa u to vrijeme bio je da proizvede
i isporui ploe u kojima su RAM i ROM memorija rasporeeni kao na prethodnoj slici. Poto
smo se bar principijelno upoznali sa pozicijama vektora i rutina za obradu prekida, obrada
pojedinih interapt linija (pinova) procesora e biti mnogo laka.
Prva linija koju emo obraditi je INTR linija. Kao i u sluaju ranije opisanog procesora, ovaj
prekid je hardverskog tipa generiu ga razliiti ureaji uz pomo programibilnog kontrolera
interapta. Stanje na ovom pinu mikroprocesor ispituje tokom poslednjeg mainskog ciklusa
svake instrukcije. Ako je na njemu logika jedinica, mikroprocesor prekida izvravanje
tekueg programa i prelazi na potprogram za obradu tog prekida.

44

ISA system architecture

117

Mikroprocesor tada generie signal potvrde prihvatanja zahtjeva za prekid INTA#. On se


koristi za oitavanje tipa (odnosno broja) vektora prekida iz PIC kontrolera. Na osnovu IVT
tabele dobija se poetna adresa ISR rutine za obradu tog prekida.
Ovaj zahtjev za prekid se moe softverski maskirati (onemoguiti) pomou bita IF u registru
bita stanja. Takoe, taj prekid procesor automatski onemogui nakon reseta i po prelasku u
potprogram za obradu prekida, a omogui ga po povratku iz potprograma za obradu prekida.

NMI (Non Maskable Interrupt). Na ovom pinu nalazi se ulaz zahtjeva za prekid koji se ne
moe maskirati. Ovo je prekid najvieg prioriteta iji se zahtjev uvijek prihvata. Prelazak sa
niskog na visok nivo na tom ulazu izaziva prekid na kraju tekue instrukcije, pa mikroprocesor
odlazi u potprogram za obradu tog prekida. Poetna adresa ove ISR rutine nalazi se na
drugoj poziciji (Tip 2) u IVT tabeli.
Ovaj prekid generie se samo u sluaju ozbiljnih problema u sistemu kada napajanje ne
funkcionie kako treba ili ako se otkrije pogreno oitavanje memorije.
INTA# je signal kojim mikroprocesor potvruje da je prihvatio zahtjev za prekid opteg tipa
koji je doveden na ulaz INTR. Kad mikroprocesor prihvati zahtjev za INTR prekid u
izvravanju tekue instrukcije on generie nizak nivo na ovom izlazu.

Nizak nivo pokazuje da je mikroprocesor prihvatio zahtjev za prekid i da treba da dobije


informaciju o tome koji je sklop izazvao prekid tj. da dobije vektor (tip) prekida. Ovaj signal se
vodi na PIC kontroler i koristi se za oitavanje tipa prekida od tog sklopa.

4.6.7.

Signali HOLD i HLDA (Direktni pristup memoriji)

U raunarima, procesor je najvaniji sklop u sistemu od kojeg zavise gotovo sva deavanja i
funkcije raunara. U ranim fazama razvoja raunara, procesor je obavljao ba sve akcije od
izvravanja programa do prebacivanja podataka u neku perifernu jedinicu. Meutim, ovo nije
bilo dovoljno efikasno rjeenje, jer procesor u momentu dok prebacuje podatke nije u stanju
da radi nita drugo. Da bi prebacio instrukciju iz nekog sklopa u memoriju, procesor je morao
da izvri dvije MOV instrukcije, kao na slijedeoj slici:

Vidjeli smo da je dio problema transfera podataka izmeu procesora i memorije u


mikroprocesoru 8086 rijeen razdvajanjem EU i BIU. Meutim, da bi razliite periferne
jedinice mogle da razmjenjuju podatke bez ometanja procesora u njegovom radu, osmiljen je
45
koncept direktnog pristupa memoriji (DMA ). Koncept DMA ine posebni kanali (DMA
kanali) i kola koja omoguavaju transfer informacija bez optereivanja procesora. Ovaj
koncept bilo mogue ostvariti uz pomo jednog posebnog kola - DMA kontrolera. Ovaj
45

Direct Memory Access

118

kontroler je privremeno preuzimao od procesora brigu o sabirnici i prebacivao podatke


izmeu memorije i IO sklopa, kao na slijedeoj slici:

Na slici su prikazani tokovi adresa i podataka izmeu I/O ureaja, memorije i DMA kontrolera,
koji se jednim imenom nazivaju DMA kanal. U sistemu sa mikroprocesorom 8086 kao DMA
kontroler se koristilo Intel 8237 integrisano kolo. Ovo kolo je imalo 4 korisna DMA kanala i
jedan dodatni preko kojeg je bilo mogue kaskadno povezati vie ovakvih kola.
DMA transfer podataka se, pored transfera IO-memorija, takoe koristio i da bi se podaci
velikom brzinom prenijeli izmeu dva memorijska sklopa. Za realizovanje DMA prenosa
koristila su se dva signala mikorporocesora 8086:
HOLD je signal kojim neki vanjski sklop zahtjeva osloboenje magistrale. To je najee DMA
kontroler, a moe biti neki drugi mikroprocesor u sistemu sa vie mikroprocesora.
Kada na ovom pin-u primi logiku 1, mikroprocesor dovodi svoje izlaze u stanje visoke
impedanse i oslobadja magistralu im zavri tekui mainski ciklus. Sklop koji je zahtijevao
magistralu sada moe da je koristi. Mikroprocesor nastavlja izvravanje programa dok god
postoje prethodno pribavljene instrukcije u redu instrukcija ili dok ne bude potrebno realizovati
prenos preko magistrale.
Kad se signal na ovom ulazu vrati na nizak nivo to znai da je magistrala slobodna i da je
mikroprocesor moe koristiti. Mikroprocesor tada preuzima korienje magistrale i nastavlja
izvravanje programa.

HLDA signal kojim se potvrdjuje da je mikroprocesor prihvatio zahtjev na HOLD ulazu. Kad
prihvati zahtjev na HOLD ulazu mikroprocesor postavlja ovaj izlaz na visok nivo. To znai da
je oslobodio zajedniku magistralu i da sklop koji je traio upravljanje magistralom moe

119

preuzeti upravljanje magistralom. To je ustvari signal potvrde da je mikroprocesor uao u


HOLD stanje.

Ovakav nain realizovanja DMA prenosa naziva se standardan ili third party DMA prenos.
Kod standardne realizacije DMA prenosa, DMA kontroler vri prenos podataka izmeu I/O
jedinice i memorije. Kasnije je razvijena jo jedna vrsta DMA prenosa koja se naziva firstparty DMA. Kod ovakve realizacije, ne postoji trea strana ili posrednik u prenosu podataka
izmeu I/O ureaja i memorije. Ovdje stvarni prenos podataka realizuje kontroler I/O ureaja.
Ovakav, moderniji nain realizacije naziva se jo i BUS mastering.

Pristup memoriji signali BHE#/S7


Mikroprocesor Intel 8086 ima 16 linija podataka zahvaljujui emu je u stanju je da preko
sabirnice odjednom prenese 16 bitnu rije. Meutim, njegovi registri opte namjene podjeljeni
su na dva dijela duine 8 bita, kojima se moe pristupati pojedinano (npr. AH ili AL) a
omoguen je pristup i kompletnom registru duine 16 bita (npr. AX). Instrukcije ovog
procesora (kao to je MOV) su realizovane tako da mogu da prebacuju podatke veliine
jednog ili dva bajta izmeu registara i/ili memorijskih lokacija. Zbog toga procesor mora na
neki nain da objasni memoriji sa kakvim podatkom manipulie hoe li korisiti bajt ili rije.
Da bi omoguili procesoru da uspjeno upravlja pristupima memoriji, intelovi ininjeri su
dodali jedan novi pin - BHE# i iskoristili jedan postojei - AD0. Pin AD0 je odabran zbog
osobine binarnog brojnog sistema najmanje znaajan bit odreuje da li je broj paran ili
neparan.
Signal BHE#/S7 (Bus High Enable) je signal na kojem je multipleksirana informacija o
adresiranju (BHE#) i dodatna informacija o statusu (S7). Signal BHE# je aktivan tokom
perioda T1, dok je informacija o statusu dostupna tokom T2, T3 i T4 perioda.
Signal BHE zajedno sa adresnim signalom AD0 se koristi za omoguavanje pristupa bajtima
ili rijeima u memoriji. Kod ovog mikroprocesora je mogu pristup memoriji bajt po bajt
(parnom/neparnom ili viem/niem) ili cijeloj rijei (16 bita) u memoriji.
Memorija raunara se moe posmatrati kao dvije cjeline sa parnim i neparnim adresama
svakoga bajta. Istovremeno, sabirnica raunara se moe podjeliti na vii i nii bajt. Onaj bajt
koji se nalazi na linijama AD0 - AD7 je nii i mapira se na parni bajt u memoriji. Na linijama
AD8 - AD15 nalazi se vii bajt koji se mapira na neparne memorijske adrese. Signali BHE# i
AD0 se koriste za pristup bajtima na parnim ili neparnim adresama i za pristup rijeima prema
sljedeoj tabeli.
BHE#
0
0
1
1

AD0
0
1
0
1

Vrsta pristupa
Pristup 16 bitnoj rijei
Pristup neparnoj adresi (vii bajt adrese, D8-D15)
Pristup parnoj adresi (nii bajt adrese, D0-D7)
Nema pristupa

Ako se traeni bajt nalazi na neparnoj adresi, signali (BHE#, AD0) e biti postavljeni na (0,
1), a podatak e biti isporuen na linije AD8-AD15. Zadraemo se malo ovdje da
protumaimo nain na koji se ovi signali mogu itati. Najmanje vaan bit (LSB) adrese AD0 je
postavljen na 1, to znai da je adresa neparan broj upuuje na neparnu memorijsku
adresu. S druge strane, rije Enable u nazivu pina BHE# znai dozvoliti. Kako je ovaj signal
komplementiran (#), a postavljen je na 0, bie dozvoljen pristup viem dijelu adresne
sabirnice.
Ako se traeni bajt nalazi na parnoj adresi, signali (BHE#, A0) e biti postavljeni na (1, 0), a
podatak e biti isporuen na linije AD0-AD7.
Ako se radi o oitavanju podatka tipa word, postoji razlika u nainu itanja sa parnih i
neparnih adresa. Rije koja se oitava sa parne adrese se uvjek uitava u jednom ciklusu
sabirnice., dok je za oitavanje podatka sa neparne adrese procesor morao da izvri dva
ciklusa sabirnice.

120

Statusni signali mikroprocesora 8086


S3, S4, S5, S6, S7 izlazni signali (biti) koji pokazuju stanja mikroprocesora, odnosno stanja
na magistrali i koji se registri koriste.

S5 pokazuje stanje bita za omoguenje prekida opte namjene (to je IF u registru


bita stanja).
S6 pokazuje da li procesor koristi ili ne magistralu (na niskom nivou kad
mikroprocesor koristi magistralu).
S7 - tzv. rezervni bit stanja i ne koristi se kod ovog mikroprocesora, ali je ostavljen
kao mogunost da se koristi u sljedeim mikroprocesorima iz ove serije.
S3, S4 pokazuju koji se segmentni registar koristi pri konkretnom ciklusu instrukcije
pri pristupu magistrali, tj. govori koji je tip memorijskog pristupa.
S4
0
0
1
1

S3
0
1
0
1

Memorijski pristup
Pristup dodatnom segmentu - koristi se ES
Pristup steku - koristi se SS
Pristup programu ili nema pristupa - koristi se CS ili nita
Pristup segmentu podataka - koristi se DS

Pomou ovih signala, mogue je postii da mikroprocesor adresira do 4MB iako je njegova
adresa dugaka svega 20 bita (1 MB). Dakle, za svaki segment moe biti odvojen po 1MB
RAM-a.

4.6.8.

Minimalni i maksimalni nain rada mikroprocesora 8086

Pomou ulaznog signala MN/MX# se definie nain rada mikroprocesora, minimalni ili
maksimalni nain rada. Visok nivo oznaava minimalni nain rada, a nizak nivo maksimalni
nain rada. U osnovi se ta dva naina rada razlikuju samo u nainu generisanja i u vrstama
nekih upravljakih signala. U oba naina rada osnovne karakteristike funkcionisanja
mikroprocesora su iste.
Minimalni nain rada je namijenjen i koristi se u jednostavnijim sistemima sa jednim
mikroprocesorom. U praksi se uglavnom koristi takav nain rada, pa smo ga mi ovdje ire
razmatrali. Tada mikroprocesor generie i koristi signale na nain kako je to ranije opisano.
Kada je mikroprocesor 8086 postavljen za maksimalni nain rada, neki od njegovih signala
mijenjaju svoju funkciju da bi omoguili rad u tzv. multiprocesorskom ili koprocesorskom
okruenju.
Pod pojmom multiprocesorsko okruenje ovdje se misli na postojanje vie procesora u
sistemu, pri emi svaki procesor moe da izvrava svoj vlastiti program. U ovakvim
okruenjima, obino su odreeni resursi sistema zajedniki za sve procesore. Primjeri takvih
resursa mogu biti memorija, HD itd. Ovakvi resursi se jo nazivaju i globalni ili zajedniki
resursi. Postoje i resursi koji pripadaju svakom pojedinom procesoru. Ti resursi se nazivaju
lokalni ili privatni resursi.
Koprocesorsko okruenje znai da u sistemu postoji jo jedan procesor, ali da oni ne mogu
da pristupaju sabirnici istovremeno. U ovom sluaju, prvi procesor preputa kontrolu drugom i
tada prvi prekida izvrenje svojih operacija.
Mikroprocesor 8086 u maksimalnom reimu rada nije u stanju da direktno obezbjedi sve
signale potrebne za kontrolisanje sabirnice, memorije, IO ureaja i interapta. To se odnosi na
signale WR#, M/IO#, DT/R#, DEN#, ALE i INTA#. Zbog toga on prije pokretanja ciklusa
sabirnice koristi status signale S0, S1 i S2. Ova tri signala oznaavaju koja vrsta protoka
podataka preko sabirnice je u pitanju. Ovi signali se dalje vode na vanjsko kolo - kontroler
sabirnice 8288.
Na osnovu stanja signala S0, S1 i S2 kolo 8288 dalje proizvodi potrebne signale za svaki
ciklus sabirnice.

121

5. Organizacija operativne memorije raunara


Veina dananjih raunara izgraena je na postavkama Fon Nojmanovog modela. Memorija
ini jedan od temelja ovoga modela, jer se programi koje procesor izvrava nalaze u memoriji.
Ranije smo upoznali osnovne pojmove vezane za operativnu memoriju tek toliko da bi mogli
da pratimo dalje izlaganje. Tokom prethodnog izlaganja vidjeli smo da je organizacija
memorije u sutini linearna. Podaci se u memoriji adresiraju kao linearni niz bajta. Takoe
smo vidjeli da procesori moraju ili imati dovoljno velike adresne registre da bi mogli da
adresiraju memoriju na ovaj nain, ili su morali da koriste razliite kombinacije registara, kao u
sluaju segment:ofset adresiranja, da bi mogli da pristupe podacima u kompletnom prostoru
memorije.
U prethodnim poglavljima, pojmam memorija odnosio se u glavnom na operativnu ROM ili
RAM memoriju. U dijelu koji slijedi, malo detaljnije emo se upoznati vrstama operativne
memorije i nainima njihove organizacije.

5.1. Tipovi operativne memorije


Izraz memorija u kontekstu raunarskih sistema odnosi se na irok rang ureaja koji su u
stanju da zapiu podatke od razliitih memorijskih ipova koje najee nazivamo
operativna memorija do magnetnih ureaja za spremanje velikih koliina podataka koji ine
sekundarnu memoriju raunara.
Operativna memorija (esto i radna, primarna) memorija je izvedena od poluprovodnikih
elemenata. Ova vrsta memorije koristi direktni pristup (pomou adresa), kod kojega brzina
pristupa ne zavisi od poloaja, odnosno adrese lokacije kojoj se pristupa. Pristup i prenos
podataka je paralelan.
Danas u svijetu postoje brojni razliiti tipovi operativne memorije. Ovi razliiti tipovi su se
razvijali uporedo sa razvojem ostalih dijelova raunarskih sistema. Meutim, definitivno
najvei uticaj na razvoj operativne memorije imao je mikroprocesor. Neprekidan rast brzine
procesora esto je dovodio do situacije da je memorija koja je do jue odlino radila danas
postajala usko grlo u sistemu. Uprkos injenici da danas postoji veliki broj razliitih tehnologija
kojima se realizuju memorijski ipovi, postoje samo dva osnovna tipa memorije: RAM
(Random Access Memory) i ROM (Read Only Memory).
Kako smo u ranijim diskusijama spominjali, izraz RAM (u prevodu memorija sa sluajnim
pristupom) donekle upuuje na pogrean zakljuak. Pristup ovoj vrsti memorije nije ni malo
sluajan. Sam izraz je nastao da bi se naglasila injenica da ovoj vrsti memorije ne
pristupamo sekvencijalno. Sekvencijalni pristup postoji npr. kod zapisa na neku magnetnu
traku da bi doli do nekog podatka moramo najprije proi preko svih ranije zapisanih
podataka, odnosno premotati traku. Kako vidimo, kod sekvencijalne memorije, pristup
podatku zavisi od njegovog poloaja na mediju koji ga nosi.
Osnovna karakteristika RAM memorije je njena nestalnost ova memorija gubi sve zapisane
podatke pri iskljuenju napajanja. Kada kaemo da imamo npr. kompjuter sa jednim ili dva
GB memorije, u stvari elimo da kaemo da taj kompjuter ima jedan ili dva GB RAM
memorije. Ovakva memorija je obino manjeg kapaciteta u odnosu na npr. hard disk zbog
relativno visoke cijene.
U RAM se prije izvravanja prenose programi iz sekundarne memorije. Procesor uvjek
izvrava programe iz operativne memorije tako oitava instrukciju po instrukciju. U RAM se
prenose i podaci iz sekundarne memorije koje procesor oitava i koristi pri izvravanju
programa. Rezultate koje dobija pri izvravanju programa procesor takodje moe upisati u
ovu memoriju.
Da bi se postigla maksimalna brzina rada sistema operativna memorija treba da ima brzinu
koja odgovara brzini rada procesora i to vei kapacitet. Kako je cijena brzih memorija velikog
kapaciteta visoka, u praksi se uglavnom koriste operativne memorije neto niih brzina rada.
Memorija ROM (Read Only Memory) tipa je memorija sa fiksnim sadrajem koji se jedino
moe oitavati. I ROM memorija koristi direktni pristup podacima, pomou adresa.
Kao memorija ROM tipa moe da se koristi nekoliko razliitih tipova poluprovodnikih
memorija. U sutini, postoji pet tipova ovakve memorije ROM, PROM, EPROM, EEPROM i
fle memorija.

122

Tehnologija izrade ROM memorija


Osnovna karakteristika svih tipova ROM memorija je njihova nepromjenjivost. Zadatak ove
memorije je da uva podatke i po iskljuenju napajanja. U skladu sa njenim imenom, iz nje su
podaci mogli biti oitavani, ali ih nije bilo mogue zapisati u ovakvu memoriju. Tokom razvoja
raunara i raunarskih sistema koristili su se razliiti pristupi za formiranje ovakve memorije
od vrlo starih, koji su se zasnivali na oiavanju matrice sa diodama do dananjih fle
memorija. Na slici je prikazana matrica sa diodama koja je sluila kao ROM memorija:

Ovdje emo se ipak zadrati na izvedbama ROM memorije na integrisanim kolima koja
moemo nai u neto novijim raunarima. ROM memorije koje se nalaze u okviru operativne
memorije raunara koriste se za smjetanje BIOS rutina - za podizanje operativnog sistema i
za smjetanje ISR rutina razliitih hardverskih ureaja.
Najstarije rjeenje ovakve memorije nazivao se Mask ROM ili samo ROM. Ovakva memorija i
njen sadraj programirali su se razmjetanjem elektronskih elementata pri proizvodnji
integrisanog kola. Podaci koji su u njoj bili na ovaj nain zapisani nikada vie nisu mogli biti
izmjenjeni. Ime ROM koje koristimo i za ostale tipove ove memorije u stvari potie od ove
najstarije memorije.
Kako je prethodno opisana tehnologija bila veoma skupa, ubrzo su se pojavila jeftinija
rjeenja. Prvo se pojavio PROM (Programmable ROM) ili jednom programabilni ROM. Prazan
PROM ip koji ranije nije bio koriten (programiran) imao je sve svoje bite postavljene na 1.
Sama tehnologija postavljanja njegovih bita (programiranje) sastojalo se od dovoenja
visokog napona na oksidne tranzistore i probijanja oksida radi pravljenja namjernog kratkog
spoja. Zbog toga se ova tehnologija nazivala i pregorjevanje osiguraa (blowing a fuse). Ovaj
proces je bio nepovratan.
EPROM (Erasable Programmable ROM) je mogao biti obrisan izlaganjem jakom UV svjetlu.
Njegovo programiranje ponovo je zahtjevalo dovoenje vrlo visokih napona (odnosno mnogo
viih od radnog napona sklopa).
EEPROM (Electrically Erasable Programmable ROM) ima strukturu koja je slina EPROMu, ali dozvoljava da brisanje njegovih podataka obavimo prikljuenjem napona. Dakle, za
brisanje i programiranje ovakve memorije nisu bili potrebni nikakvi posebni ureaji. Tipino,
EEPROM dozvoljava da njegove podatke briemo i mijenjamo bit po bit, to je vrlo spor
proces.
Fle memorija (Flash) je noviji tip EEPROM-a koji je predstavljen 1984. godine. Ova vrsta
memorije donijela je unapreenje u smislu da je njen sardaj mogao da se brie ili mijenja
blok po blok, to je bilo znatno bre od njenog prethodnika.
Modrena NAND Fle (po NAND logikim kolima) memorija vrlo efikasno koristi prostor na
silikonskom ipu, tako da dozvoljava kreiranje individualnih ipova veoma velikog kapaciteta
do 2010. godine, ovakve memorije su dostizale kapacitet od 256 GB. Ovakve memorije u vidu
razliitih stikova polako popostaju konkurencija hard diskovima i sekundarnoj memoriji.

123

Meutim, kada se koriste kao sastavni dijelovi operativne memorije raunara, zadrava se
naziv ROM.

Osnovna organizacija memorije


U ranijim poglavljima, vidjeli smo da je svakoj lokaciji u memoriji pridruen jedinstven broj koji
se naziva adresa. Ako bi imali memorijski ip veliine 16 lokacija, ove lokacije bi mogli
pobrojati od 0-15 ili od 00002-11112. Ako bi elije ovakve memorije uredili u kvadrat, imali bi
situaciju kao na slijedeoj slici:

Da bi aktivirali odreenu eliju odnosno lokaciju, moramo aktivirati odgovarajui red i kolonu.
Na slici je aktiviran red 01 i kolona 10 koji zajedno ine lokaciju 0110. Proces aktiviranja u
stvari rade kola koja se nazivaju dekoderi kolona i redova. Kada dobijemo adresu 0110, prvu
polovinu adrese dovodimo do dekodera reda, a drugu polovinu adrese do dekodera kolona.
Dekoderi su mala logika kola iji je jedini zadatak da na osnovu ulaznog podatka izabere
odgovarajui red ili kolonu (npr. podizanjem napona).
Maksimalan broj lokacija koje ovakva memorija moe da adresira zavisi od broja bita u njenoj
adresi. Ovdje smo adresirali 16 lokacija zahvaljujui 4 bita adrese. Generalno, pomou n bita
n
adrese moemo adresirati 2 memorijskih lokacija.
Primjetili ste da tokom prethodne diskusije niti jednom nije upotrebljena rije bajt uvjek smo
govorili o memorijskim lokacijama. Memorije mogu biti konstruisane na razliite naine, tako
da na jednoj lokaciji moe biti podatak veliine bita, bajta, ali i rijei (Word) kao i dvostruke
rijei (DWord) sve zavisi od ideja i mogunosti njihovih konstruktora.

Razliite realizacije RAM memorije


Postoje dva osnovna tipa RAM memorije - statika ili dinamika. Dinamika RAM memorija
(DRAM) sastavljena je od kondenzatora i tranzistora koji se nalaze na integrisanom kolu.
Kako svi kondenzatori s vremenom gube svoj naboj, ova vrsta memorije se mora periodino
osvjeavati. Vrijeme osvjeavanja varira od ipa do ipa i kree se od reda milisekundi do
reda nanosekundi.
Statika RAM memorija (SRAM) dri svoje podatke dok god je napajanje prisutno. Ova vrsta
RAM-a se sastoji od kola slinih D-Flip-Flopovima. Statika memorija RAM tipa je znatno bra
od dinamike. Kako je konstrukcija statikog RAM-a znatno sloenija, ovakva izvedba
memorije je znatno skuplja od dinamikog RAM-a.
S druge strane, dinamiki RAM je mnogo gue pakovan, pa zauzima mnogo manje prostora,
manje se grije pa troi manje energije. Zbog svoje jednostavnije konstrukcije (jedan njen bit
se sastoji od tranzistora i kondenzatora) ova vrsta memorije je jeftinija. Zbog svega ovoga,
dizajneri raunara najee koriste dinamiki RAM, dok statiku memoriju u mnogo manjim
koliinama koriste kao ke memoriju.
Kako je jeftinija realizacija RAM memorije bila mnogo ei izbor konstruktora raunarskih
sistema, pojavile su se brojne varijante ove memorije: Multibank DRAM (MDRAM), Fast-Page
Mode (FPM) DRAM, Extended Data Out (EDO) DRAM, Burst EDO DRAM (BEDO DRAM),
Synchronous Dynamic Random Access Memory (SDRAM), Synchronous-Link (SL) DRAM,
Double Data Rate (DDR) SDRAM, DDR2 SDRAM, DDR3 SDRAM i DDR4 SDRAM.
Da bi shvatili razlike izmeu ova dva naina konstruisanja memorije, pogledaemo dvije
njihove jednostavne izvedbe. Rani SRAM ipovi imali su po 20 prikljuaka koji su se mogli
grupisati na slijedei nain:

124

Ukupno 14 adresnih signala


Linije podataka (Data In i Data Out)
Kontrolne linije (Write Enable i Chip Secect)
Linije napajanja (Ground i VCC)

Izgled jednog takvog ipa dat je na slijedeoj slici:

14

Funkcija adresnih signala je jasna ovakav ip mogao je da adresira 2 = 16,384 lokacija.


Njegovi signali DOut i DIn (Data Out i Data In) sluili su za oitavanje i upisivanje podataka bit
po bit. Kako je neki realan sistem imao vie ovakvih memorijeskih ipova, signal CS# (Chip
Select) sluio je da procesor ili kontroler selektuje taan ip sa kojim e izvriti transakciju.
Signal WE# odreivao je da li se radi o transakciji pisanja ili oitavanja podatka.
Za oitavanje jednog bita sa ovakvog ipa bilo bi potrebno izvriti slijedee korake:

Na adresne linije morala se dovesti adresa traenog bita.


Preko linije CS# (Chip Select) procesor odabira ip sa kojim komunicira,
Trebalo je aktivirati WE# liniju na logiku jedinicu, tako da ip zna da treba da pone
da oitava traeni bit.

Nakon toga, na pinu DOut pojavio bi se traeni bit.


U prethodnom poglavlju smo vidjeli da se memorijski ipovi organizuju kao matrice, te da je
svaka lokacija matrice odreena jedinstevnim rednim brojem. Lokacije na koje upuuju
adrese na opisanom ipu su biti, jer je ovaj SRAM ip tako konstruisan.
Nain njegovog rada bi mogli opisati i slijedeom blok emom:
Adresni
BUS

Dekoder kolona

SRAM

Primopredajnik
podataka

125

Ve smo pominjali da je za njihov rad DRAM ipove potrebno neprekidno osvjeavati, da


njihovi kondenzatori ne bi izgubili naboj. Na prvi pogled se ini da bi DRAM memorija trebala
da bude skuplja zbog dodatne logike za osvjeavanje. Meutim, za zapisivanje jednoga bita
DRAM-a potreban nam je jedan tranzistor i jedan kondenzator. S druge strane, za svaki flipflop koji dri jedan bit u SRAM memoriji, potrebno je vie od 10 tranzistora. Kako su danas
prosjene veliine RAM memorije izmeu 2 i 4 GB, raunica je jasna konstrukcija ovako
velikih memorija od SRAM ipova bila bi veoma skupa. Na slijedeoj slici prikazan je jedan
DRAM ip:

Ono to prvo pada u oi jeste manji broj adresnih linija koje ovo kolo ima. Da bi objasnili
zato, moramo se prisjetiti osnovnih osobina ove vrste memorije. Spomenuli da je meorija
DRAM tipa mnogo manjih dimenzija (4 do 6 puta manja od SRAM) i da troi mnogo manje
energije, to su njene velike prednosti. Da bi mogli da adresiramo sve vee i vee koliine
memorije, morali bi na tijelo integrisanog kruga da postavljamo sve vei i vei broj adresnih
linija. Kako samo integrisano kolo bez prikljuaka zauzima vrlo malo prostora, morali bi da ga
poveavamo da bi imali gdje da smjestimo prikljuke, to bi izazvalo dodatno grijanje ovakvog
kola i time ponitilo obje njegove prednosti pred SRAM memorijom.
Kao rjeenje navedenog problema, u pravilu se adresa DRAM memoriji alje u dva dijela,
preko adresnih linija koje su sada multipleksirane. Principijelna blok ema jednog DRAM ipa
data je na slijedeoj slici:
Adresni
BUS

BUS
podataka
CAS

Adr.le kolone

Dekoder redova

RAS

Adr.le reda

Dekoder kolona

DRAM

Osvjeava i
primopred.podat.

Na obje slike vidimo i da se pojavljuju i dva nova signala RAS (Row Address Strobe) i CAS
(Column Addess Strobe), koji aktiviraju red odnosno kolonu respektivno, jer adresu ovoj vrsti
memorije aljemo u dva dijela. Ako bi trebalo izvriti oitavanje jednog bita sa ovakvog DRAM
ipa bilo bi potrebno proi kroz slijedee korake:

Adresa reda se postavlja na adresne linije preko sabirnice,


Aktivira se RAS pin, to omoguava zapisivanje dijela adrese u le reda,

126

Dekoder redova aktivira odgovarajui red,


WE# (Write Enable) se postavlja na logiku jedinicu, tako da DRAM zna da u njega
neemo pisati podatke,
Adresa kolone se postavlja na iste (multipleksirane) adresne linije,
Aktivira se CAS pin, to izaziva zapisivanje drugog dijela adrese u le kolone,
CAS signal slui istovremeno za aktiviranje kolone i kao signal koji dozvoljava
izbacivanje traenog bita na liniju DOut.
Linije RAS i CAS se deaktiviraju da bi se pripremile za slijedei ciklus prenosa
podataka.

Ve smo se nekoliko puta u toku diskusije sreli sa pojmom osvjeavanje DRAM memorijskih
ipova, jer kondenzatori u ovoj vrsti memorije gube naboj. Svaki put kada oitamo neki
podatak iz ovakve memorije, mi ga pored toga i osvjeimo, odnosno dopunimo njegov
kondenzator. Dakle, regularan nain osvjeavanja DRAM memorije je itanje ili zapisivanje
podataka u nju. Meutim, ovakav nain osvjeavanja bio bi dosta spor jer se oitavanjem
jedne lokacije osvjeava samo jedan bit. Na sreu, osvjeavanje je mogue uraditi i pomou
RAS signala, kada se osvjeava cijeli jedan red lokacija, to je opte prihvaena praksa. O
nainu osvjeavanja redova brine se DRAM kontroler koji periodino osvjeava red po red i
koji vodi rauna da se pri tome ne sudari sa regularnim zahtjevima za itanje i pisanje.
Na prethodnim slikama su, radi jednostavnosti, DRAM memorijski ipovi prikazani u vidu
kvadratnih matrica. Meutim, u realnom svijetu, konstruktori ovih ureaja se trude da imaju
vie redova i manje kolona, jer to garantruje bre i lake osvjeavanje ovakvog ipa.
Osvjeavanje DRAM memorije, zbog neprekidnog kruenja RAS signala kroz svaki red, u
velikoj mjeri utie i na njene performanse. U stvari, bitka za ubrzanje ovih ipova dovela je do
pojave velikog broja ideja i razliitih standarda koji su pokuavali, svaki na svoj nain, da
rijee ovako nastalo usko grlo.

Redovi, moduli i banke


U prethodna dva primjera vidjeli smo rjeenja memorijskih ipova koji su imali izlaze DataIn i
DataOut preko kojih su mogli da oitaju ili upiu samo po jedan bit podataka. Meutim, u
ranijim primjerima komunikacije procesora sa memorijom, vidjeli smo da je procesor adresirao
najmanje podatke veliine jednoga bajta. Da bi smjestili jedan bajt (8 bita) u jednu memorijsku
lokaciju, konstruktori memorija su doli na ideju da smjeste 8 ovakvih jednobitnih (x1) ipova
na isti modul i da pri tome svaki ip dri po jedan bit kompletne informacije Ako bi trebalo
oitati podatak sa ovakvog modula, pri adresiranju jednog bajta koji je smjeten na njemu, svi
ipovi dobijaju istu adresu sa koje treba da oitaju po jedan bit kompletne informacije. Dakle,
na istoj memorijskoj lokaciji na svih 8 ipova nalazi se po jedan bit a tek svi zajedno daju
traeni bajt.
Adresni BUS

BUS Podataka

Iz perspektive procesora, ovakav modul bi izgledao kao jedan ip koji je u stanju da vri
transakcije na nivou bajta. Ovakav ip bi mogao da se vee na adresnu sabirnicu irine
npr.16 bita, dok bi sabirnica podataka morala da bude 8-bitna.
Kako je vrijeme prolazilo, dolazili su noviji procesori koji su zahtjevali rad sa irim sabirnicama
podataka. Procesor 80486 imao je 32-bitnu sabirnicu podataka. Da ne bi iz korjena mijenjali
standarde izrade memorija, konstruktori su primjenili rjeenje sa organizovanjem vie modula
u skupove koji su zajedno drali podatke nazivali su se memorijske banke.

127

Na prethodnoj slici, etiri modula zajedno ine jednu memorijsku banku. Ukupna irina
sabirnice podataka sada je poveana na 32 bita, koji se dijele na etiri navedena modula
bajt 1 ide u prvi modul, bajt 2 u drugi, bajt 3 u trei, bajt 4 u etvrti, bajt 5 ponovo u prvi itd.
Dakle, jedna banka bila je sastavljena od 4 modula odnosno od 32 ipa.
Ovakvo rjeenje vailo je do pojave pentium procesora, koji je donijeo sabirnicu podataka
irine 64 bita. Kako je postalo jako teko i nepraktino organizovati banke koje bi se sastojale
od 64 jednobitna ipa (sa po jednim DataIn i DataOut prikljukom), konstruktori su poeli da
primjenjuju drugaije rjeenje. Sada su poeli da se pojavljuju ipovi koji su imali vie DataIn i
DataOut izlaza - 4, 8, 16 32 ili 64. Tako je npr. jedan 8-bitni modul koji je na prethodnoj slici
realizovan pomou 8 ipova, sada mogao biti realizovan npr. pomou dva 4-bitna ipa, dok je
jedan 32-bitni modul mogao biti realizovan kao dva 16-bitna ili etiri 8-bitna ipa.
Uporedo sa izmjenama u nainima realizacije memorijskih ipova pojavila su se i razliita
pakovanja i odgovarajua podnoja koja su pratila ovakve promjene. Prvi PC raunari koristili
su DIP (Dual InLine Package) pakovanja. Ovakva integrisana kola esto su se (pored DIP)
nazivala i DIL. Tipno kolo prikazano je na slijedeo slici:

SIMM ili Single Inline Memory Module je tip memorijskog modula koji se koristio od poetka
80 do kraja 90 godina prologa vijeka. Karakteristian je po tome to je imao iste prikljuke
sa obje strane ipa (postojala je redundansa). Tipini SIMM moduli imali su 30 ili 72 pina, kao
na slici:

DIMM ili Dual InLine Memory Module je tip memorijskog modula koji je poeo da zamjenjuje
SIMM standard od pojave pentium procesora. Za razliku od SIMM modula, DIMM moduli
imaju dva reda razliitih prikljuaka po jedan sa svake strane modula. Na slici su prikazani
168-pinski SDRAM modul i 184-pinski DDR SDRAM modul:

Naini pristupa DRAM memoriji


Osnovna, prvobitna forma DRAM memorije od koje su nastale sve ostale njene varijante
oitavala je i upisivala podatke nezavisno od radnog takta procesora ili sabirnice. Zbog toga
to je njen rad bio nezavisan od Clock signala, ova vrsta memorije dobila je ime asinhroni

128

DRAM. Ona je jednostavno odgovarala najbre to je mogla na promjene na svojim ulazima,


ne vodei rauna o stanju ostalih signala u raunaru.
Vremenom se razvio i sinhroni pristup ovoj ovrsti memorije. Sinhroni DRAM (SDRAM)
usklaen je sa radnim taktom (Clock signalom) sabirnice. On dakle odgovara na vanjske
komande sinhronizovano sa taktom sabirnice. SDRAM tehnologija bila je prethodnica novijim
DDR1, DDR2 i DDR3 tehnologijama izrade memorija.

Kanjenje (latencija)
Svim elektronskim sklopovima, ma koliko oni brzi bili, potrebno je odreeno vrijeme da obrade
podatke. Memorijski sklopovi nisu izuzetak zavisno od naina njihove konstrukcije, mora
protei odreeno vrijeme od momenta kada od sabirnice ponu da primaju adresu do
momenta kada su u stanju da oitaju ili snime neki podatak. Ovo vrijeme naziva se kanjenje
ili latencija.
Iako postoji nekoliko tipova kanjenja koja igraju ulogu u opisivanju rada DRAM memorija, za
nae razmatranje kanjenja emo uzeti u obzir samo dva najvanija. Prvi tip kanjenja
predstavlja vrijeme koje je potrebno da proe izmeu dva uspjena oitavanja memorije.
Kako se DRAM tehnologija bazira na punjenju i pranjenju kondenzatora u ovom sluaju
kondenzatora koji veoma brzo gube naelektrisanje nakon svakog oitavanja mora protei
odreeni period tokom koga e kondenzatori biti dopunjeni. Ovaj period se jo naziva i
precharge period ili vrijeme predpunjenja.

Kada smo koracima opisivali rad memorije, zadnji korak je navodio da se linije RAS i CAS
moraju deaktivirati da bi se pripremile za novi ciklus. Na prethodnoj slici prikazan je samo
RAS signal, ali isto vai i za CAS signal na slici bi dovoljno bilo zamjeniti naziv RAS sa
CAS.
Drugi vaan tip kanjenja je javlja se u toku aktiviranja RAS ili CAS signala. Ovaj tip kanjenja
vezan je za tromost kola (itaj kondenzatora) koja ine ovu vrstu memorije. Zbog navedene
tromosti sklopova, kada aktiviramo RAS ili CAS signal mora protei odreeno vrijeme prije
nego to oni izvre odabir reda ili kolone, odnosno prije nego to budu u stanju da izbace
traeni podatak na sabirnicu. Vrijeme pristupa (Access time) reda ili kolone oznaavaemo sa
tRAC i tCAC.

Da bi shvatili uticaj oba opisana kanjenja, pogledaemo slijedei vremenski dijagram:

129

Kako vidimo, postoje dvije vrste kanjenja (latencije): vrijeme pristupa (access time) i
46
vrijeme ciklusa (cycle time) . Vrijeme pristupa vezano je za drugu vrstu kanjenja koju
smo ve opisali (tromost pri samom oitavanju), dok je vrijeme ciklusa takvo kanjenje koje je
vezano za razmak izmeu dva oitavanja, odnosno prva opisana vrsta kanjenja.
Oba ova kanjenja utiu na ponaanje procesora u komunikaciji sa ovom vrstom memorije.
Ako se radi o npr. vrlo brzom procesoru i vrlo sporoj memoriji, procesor e dok eka da
istekne acces time (dok memorija vrati traeni podatak) morati da ubaci po neko stanje
ekanja, a zatim e ponovo morati da eka da istekne cycle time i da ubacuje stanja ekanja.
Dakle, to je sporija memorija, procesor e ubacivati vie stanja ekanja i cijeli sistem e biti
sporiji.

Korak naprijed Fast Page Mode DRAM (FPM DRAM)asinhrona memorija


Da bi na neki nain smanjili ranije opisana kanjenja, konstruktori memorijskih ipova su
iskoristili ranije pominjanu ideju da se podaci i instrukcije u memoriji najee smjetaju u
sukcesivnim memorijskim lokacijama (In-Line). Tako je nastalo prvo unapreenje asinhrone
DRAM memorije koje je dobilo ime Fast Page Mode DRAM. Ideja koju su konstruktori Fast
Page Mode DRAM memorije imali na umu je da iskoriste ovakav nain slaganja podataka u
memoriji i da konstruiu memoriju koja vraa cijeli red (odnosno stranicu, page) podataka.
RAS
CAS
Adresna sabirnica
Sabirnica podataka

RAS aktivan
precharge
Red

CAS aktivan

precharge

tCAC

L1

precharge

Kolona 2

Kolona 1
tRAC

CAS aktivan

D1

CAS aktivan

Kolona 3

tCAC

L2

D2

tCAC

D3

L3

Sa slike je vidljivo da je samo prvo vrijeme pristupa FPM DRAM memorije isto kao u
prethodnom primjeru. Ostali pristupi istom redu su bitno krai, jer je RAS signal ve aktivan.
Pored ovoga, smanjeno je i vrijeme ciklusa (vrijeme izmeu oitavanja) na precharge period
cijelog reda sada utie samo CAS signal.
Ono to je bitno primjetiti pri radu ove memorije je da nema preklapanja adresnih signala
(Kolona 1, kolona 2...) i signala podataka (D1, D2...). Upravo ova injenica rodila je jo jedno
unapreenje naina rada koje je implementaciju nalo u EDO DRAM memoriji.

46

ARS Tehnica RAM guide

130

Extended Data Out DRAM EDO DRAM asinhrona memorija


Drugo unapreenje asinhrone DRAM memorije implementirano je u okviru EDO DRAM
tehnologije. Konstruktori Extended Data Out DRAM EDO DRAM memorije su iskoristili jo
jednu mogunost da smanje kanjenje DRAM memorije tako to su konstruisali memoriju koja
je bila u stanju da istovremeno sa pojavom podatka na linijama podataka pokrenu novi ciklus
oitavanja kolone izbacivanjem adrese na linije kolone, kao na slijedeoj slici:

Sa slike je vidljivo da kada pone izbacivanje prvog podatka D1 na linije podataka, dok su
linije podataka jo zauzete, poinje i zadavanje slijedee adrese Kol.2 preko adresnih linija.
Ova tehnologija je omoguila odreenu vrstu preklapanja, vrlo blisku cjevovodu (pipeline) koji
emo uskoro blie prodiskutovati.

Sinhroni DRAM - SDRAM


Tradicionalna DRAM memorija radila je asinhrono, to znai da je odgovarala na promjene na
svojim ulazima najbre to je mogla. S druge strane, SDRAM (Single Data Rate DRAM,
esto i Synchronous DRAM) koristi koncept konane maine stanja koji smo ranije opisivali
gdje se svaki korak (ili svako stanje) deava u tano odreenom trenutku vremena. Zbog toga
ova vrsta memorije mora da koristi takt signal koji uzima od sabirnice, odnosno radi
sinhronizovano sa sabirnicom. Ovakav nain rada omoguava joj da koristi kompleksniji nain
komandovanja i da na taj nain realizuje princip cjevovoda (pipeline).
Princip cjevovoda omoguava ovakvim ipovima da prihvate novu komandu na svojim
pinovima prije nego to zavre obradu prethodne. Kako se ovdje sve deava pod uticajem
takt signala, traeni podatak e se pojaviti na linijama podataka nakon tano odreenog broja
T-stanja. Na slijedeoj slici prikazan je pojednostavljen vremenski dijagram koji prikazuje
oitavanje podatka iz jednog ovakvog ipa.

Kako je CAS latencija ovakvog ipa 2, protei e dva T-stanja prije nego to se podaci pojave
47
na linijama podataka . SDRAM memorija oitava podatke na rastuoj ivici (Rising Edge)
signala, kako je to naznaeno strelicama na prethodnoj slici.
Iz prethodne diskusije vidjeli smo da se DRAM memorija organizuje u banke da bi popunila
cijeli adresni prostor. U sluaju SIMM modula, bilo je potrebno vie SIMM-ova u jednoj banci
da bi popunili kompletan 32-bitni ili 64-bitni prostor sabirnice podataka. Kako DIMM moduli
47

MICRON 16 MEG: x4, x8 SDRAM product specification

131

imaju vie pinova, jedan DIMM modul je obino bio dovoljan da popuni sabirnicu podataka
obino je bio potreban jedan DIMM za jednu banku. SDRAM je koncept koritenja banaka
unaprijedio stavljanjem vie banaka na jedan DIMM. Ovo nije uraeno da bi se popunile linije
podataka one su bile ve popunjene, ve da bi se omoguio bri rad ovakve memorije. Iz
prethodnih diskusija vezanih za DRAM, vidjeli smo da je prije ponovnog aktiviranja RAS i
CAS signala bilo potrebno saekati odreeno vrijeme da bi se kola (itaj kondenzatori) mogla
oporaviti i dopuniti. Ovo vrijeme smo nazivali precharge period ili vrijeme dopunjavanja. Kako
SRDAM modul u sebi sadri najmanje dvije banke, dopunjavanje se moe organizovati na
takav nain da dok npr. oitavamo podatke sa jedne banke, druga banka je slobodna za
dopunjavanje. Kada se odluimo da oitamo podatak sa druge banke, ona e ve biti
dopunjena i moi emo odmah da je koristimo. Mogunost automatskog dopunjavanja koja se
naziva Concurrent Auto Precharge postoji u veini naprednijih memorija SDRAM tipa. U
veini sluajeva, generisanjem READ ili WRITE signala koji treba da realizuje transakciju sa
bankom n automatski e pokrenuti i ciklus osvjeavanja banke m.
Memorije ovoga tipa mogu da oitavaju podatke u nizovima (burst ili rafalno). Za razliku od
FPM ili EDO DRAM memorija, koje su kada im je odreen RAS signal (red), morale da
neprekidno zadaju CAS signal kojim biraju svaku slijedeu kolonu, SDRAM ipovi se mogu
unaprijed programirati tako da izbacuju sekvence (ili rafale) podataka. Npr. mogli bi je
programirati da kada na adresnim linijama dobije zadatak da oita podatak na koloni 0, ona
mora da nam vrati cijelu sekvencu podataka na kolonama 0-1-2-3. to je jo zanimljivije, ona
podatke moe da vraa bilo kojim redoslijedom mogli smo je programirati i da nam vrati
sekvencu podataka na adresama kolona 1-0-3-2.

48

Prethodna slika prikazuje opisani burst nain rada zadavanjem kolone N na adresnim
linijama, memorija izbacuje cijeli niz podataka na adresama N, N+1, N+2 i N+3. Na
prethodnoj slici vano je primjetiti da na sabirnicama podataka nema ekanja podaci
neprekidno izlaze iz memorije.
Memorije ovoga tipa koje su organizovane oko cjevovoda (pipeline) mogu da oitavaju i
upisuju podatke i u tzv Random Read i Random Write reimu rada.

49

Prethodna slika prikazuje Random Read Access reim rada SDRAM memorije koja ima
CAS latenciju duine 2 perioda (2 T-stanja). Na slici je vidljivo da nakon svake zadate adrese
kolone mora protei dva takt perioda dok se navedeni podatak ne pojavi na linijama
podataka. Meutim, kako se komande zadaju jedna za drugom, efekat cjevovoda je takav da
su linije podataka neprekidno zauzete i da podaci izlaze iz memorije jedan za drugim.
48
49

MICRON 16 MEG: x4, x8 SDRAM product specification


MICRON 16 MEG: x4, x8 SDRAM product specification

132

Kako se SDRAM tehnologija razvijala, poeli su da se pojavljuju razliiti proizvoai koji su


prodavali memorijske module sposobne da rade na vrlo razliitim brzinama. Da bi na neki
nain sredio trite koje je poelo da izbacuje ponekad nekompatibilne i neodgovarajue
komponente, Intel je objavio PC100 standard. Ovaj standard je opisivao naine i zahtjeve
koje moraju da ispune proizvoai memorija da bi one mogle da rade na 100 MHz. Naziv PC100 je postao opte-prihvaen naziv za SDRAM memorije koje su radile na 100 MHz, a ubrzo
su se pojavile i memorije sa prefiksom PC nakon kojega je navoena radna frekvencija takve
SDRAM memorije (PC66, PC100, PC133).

Ostali tipovi SDRAM memorija


Slijedei korak u razvoju sinhronih DRAM memorija predstavljala je pojava Double Data Rate
(DDR) SDRAM memorija, koje se jo nazivaju i DDR1 memorije. Ovakve momorije koristile
su iste komande i iste principe oitavanja ili upisivanja podataka koje smo upoznali u
prethodnom poglavlju kada smo govorili o SDRAM-u. Meutim, SDRAM je mogao da oitava
ili upisuje podatke samo na rastuoj ivici signala, dok je DDR SDRAM unaprijeen tako da
oitava ili upisuje podatke i na rastuoj i na opadajuoj ivici signala. Na ovaj nain, DDR1 je
mogao da manipulie sa dvostruko vie podataka po jednom ciklusu od njegovog prethodnika
SDRAM-a.
Tipine frekvencije DDR1 memorija su bile 100, 133, 166 i 200 MHz (10, 7.5, 6 i 5 ns/ciklusu),
dok su im oznake bile DDR-200, DDR-266, DDR-333 i DDR-400, ime su upuivale na
injenicu da manipuliu sa dvostruko vie podataka tokom ciklusa.
Brzina prenosa (transfer rate) ovakvih memorija rauna se pomou slijedee formule:

Tr =

FClk 2 N bits
8

(12)

Gdje je:
Nbits - broj bita kojim memorija operie
2 oznaava dvostruki transfer (i opadajuu i rastuu ivicu) po ciklusu
Fclk radna frekvencija memorije
DDR1 memorija sa 64 bitnim prenosom podataka, koja koristi frekvenciju od 100 MHz ima
50
brzinu prenosa od 1600 MB/s :

Tr =

100 MHz 2 64 12800


=
= 1600MB / s
8
8

(13)

DDR2 SDRAM memorija nastavila je proces unapreenja SDRAM memorije. Ako je DDR1
memorija mogla da obradi dvostruko vie podataka od klasine SDRAM memorije, DDR2 je u
stanju da obradi etiri puta vie podataka. Njena osnovna razlika u odnosu na DDR1
memoriju je u tome to DDR2 koristi interni mnoitelj frekvencije. Ovaj mnoitelj poduplava
frekvenciju koju ona dobija od sabirnice, tako da DDR2 memorija moe da obavi ukupno 4
transfera podataka po jednom ciklusu sabirnice.
Tipine frekvencije na kojima DDR2 radi su 100, 133, 166, 200 i 266 MHZ, sa oznakama
DDR2-400, DDR2-533, DDR2-667, DDR2-800 i DDR2-1064. Oznake upuuju na injenicu da
se DDR2 memorija ponaa kao SDRAM koji radi na 400-1064MHz.
Brzina prenosa (transfer rate) DDR2 memorija rauna se pomou slijedee formule:

Tr =

FClk 2 2 N bits
8

(14)

Gdje je:
Nbits - broj bita kojim memorija operie
2 oznaava dvostruki transfer (i opadajuu i rastuu ivicu) po ciklusu
2 druga dvojka upuuje na mnoitelj frekvencije
50

Mega-bajta po sekundi

133

Fclk radna frekvencija memorije


DDR2 memorija sa 64 bitnim prenosom podataka, koja koristi frekvenciju od 100 MHz ima
brzinu prenosa od 3200 MB/s:

Tr =

100 MHz 2 2 64 25600


=
= 3200 MB / s
8
8

(15)

DDR3 SDRAM predstavlja slijedei korak u unapreenju SDRAM memorije. Ova vrsta
memorije takoe koristi interni mnoitelj frekvencije, ali njen mnoitelj e uetvorostruiti
frekvenciju koju dobije od sabirnice.
Tipine frekvencije na kojima ova memorija radi su 100, 133, 166, 200, 233 i 266 MHz sa
oznakama DDR3-800, DDR3-1066, DDR3-1333, DDR3-1600, DDR3-1866 i DDR3-2133.
Oznake upuuju na injenicu da se DDR3 memorija ponaa kao obini SDRAM koji radi na
frekvencijama od 800 do 2133MHz.
Brzina prenosa (transfer rate) DDR3 memorija rauna se pomou slijedee formule:

Tr =

FClk 2 4 N bits
8

(16)

Gdje je:
Nbits - broj bita kojim memorija operie
2 oznaava dvostruki transfer (i opadajuu i rastuu ivicu) po ciklusu
4 upuuje na mnoitelj frekvencije
Fclk radna frekvencija memorije
DDR3 memorija sa 64 bitnim prenosom podataka, koja koristi frekvenciju od 100 MHz ima
brzinu prenosa od 6400 MB/s:

Tr =

100 MHz 2 4 64 51200


=
= 6400MB / s
8
8

(17)

U trenutku pisanja ove knjige (2010 godina), u pripremi je bio jo jedan standard i jedna nova
memorija DDR4 SDRAM. Tokom razvoja DDR memorije, svaka od njih je sniavala napon
na kojem je integrisano kolo radilo i istovremeno je poveavala frekvenciju na kojoj je
oscilovao. Tako smo vidjeli da je najbra DDR3 memorija imala oznaku DDR3-2133 (kao
kada bi obina SDRAM memorija radila na 2133 MHz).
Od DDR4 SDRAM tehnologije moemo oekivati da e pomai ove frekvencije na jo vii
nivo njene oekivane oznake e biti od DDR4-2133 do DDR4-4266.

134

Tip memorije i Brzina

DDR4
DDR3
DDR2

800-2133

DDR1
SDRAM

2133-4266

400-800
200-400

66-133

Godina uvoenja standarda


1999

2002

2006

2010

135

Você também pode gostar