Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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.
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:
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.
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
gdje je:
m
n
C
b
i
(b)
(1)
n 1
N = Cibi
(2)
i =0
N=
C b
(3)
i = m
N=
n 1
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.
2.1.2.
-1
-2
-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
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.
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
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
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
..
.
..
.
...
16
0
0
1
1
0
1
0
1
0
1
1
0
Prenos
(carry)
(1)
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
2.2.2.
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.
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)
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:
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.
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
2.2.3.
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
22
2.2.4.
Realni brojevi
Obratite panju broj 0.999 se esto u raunarskoj tehnici pie kao .999.
23
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.
-2
=
x
x
x
x
10 =
1
10 =
2
10 =
3
10
5
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
(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)
(0111 1100)
(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:
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:
Kod dvostruke preciznosti, kompletan broj u decimalnom formatu dobijamo pomou slijedee
formule:
(8)
Gdje je:
S predznak,
27
1 bit
(0)
11 bita
52 bita
(01111111101) (0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101)
(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
-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
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:
(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.
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 =
n = 1.0 b n
(11)
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.
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
0
1
11..11
11..11
00..00
00..00
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
:
31
11..11
32
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)
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.
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
(50)10
(80)10
(-126)10
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
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.
.101 x 2 = .0101 x 2
.0101 x 2 = .010 x 2
Nakon zaokruenja dobijenog rezultata na tri znaajne cifre, dobijamo rezultat (.100 x 2 )2
5
gdje ponovo gubimo dio preciznosti broja (.0001 x 2 )
37
38
39
B
0
1
0
1
OR
0
1
1
1
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
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
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
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
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:
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
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:
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
47
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
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.
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
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
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
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.
18
53
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
nic
Sabir
CPU
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
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?
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.
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.
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
Northbridge
Memorijski
slotovi
Memorijski
bus
(hub za kontrolu
memorije)
PCI bus
Integrisani
grafiki
kontroler
Southbridge
PCI bus
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
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.
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
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:
63
kao konstruktori ovakvog raunara predvidjeli. Pored toga, instrukcija u ovom registru mora
biti formatirana po pravilima koja ponovo utvrujemo mi konstruktori ovakvog raunara.
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
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.
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.
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
70
65535
RAM
PUSH
automatski
uveava
Stek
1
0
71
on ne koristi indeksno
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
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.
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 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
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
4.2.4.
Signali podataka
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.
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 .
29
75
procesora kao maine stanja, svaki od navedenih koraka se deava u tano odreenom
vremenskom trenutku.
4.2.6.
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
S1
0
0
1
1
Opis
HALT
Pii
itaj podatak
itaj instrukciju (Fetch)
77
T2
T1
T3
CLK
A8-A15
AD0-AD7
Tokom T2 i T3 ovdje je
Traeni podatak
ALE
IO/M#
IO/M#=0,znai iz memorije,
RD#
Oitavanje podatka
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
Generalno, pri izvravanju instrukcije procesora 8085 (ali i drugih procesora) postoje slijedee
faze:
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
4.2.7.
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
81
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:
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
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.
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.
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
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
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
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
86
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
JMP C007h
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.
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.
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
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]
; [C010] -> A
; [BC] -> A
; [DE] -> A
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
Zadatak ove instrukcije je da u par registara H, L uita 16 bitni podatak na koji pokazuje
adresa adr.
Primjer:
LHLD C000h
; [C000] -> HL
; A -> [C000]
89
; A -> [BC]
; H<->D, L<->E
; [HL] -> SP
; HL <-> stek
;
;
;
;
BC
DE
HL
A,
-> stek
-> stek
-> stek
Flags -> stek
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
90
Ova instrukcija e iskopirati sadraj akumulatora na I/O port ija je 8-bitna adresa navedena
kao operand.
Primjer:
OUT F8h
Ova instrukcija e iskopirati sadraj sa ulaznog porta ija je 8-bitna adresa navedena kao
operand u akumulator.
Primjer:
IN 8Ch
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
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
; A = A 1 - Cy
; A=A broj - Cy
; 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
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
Sa prethodne slike vidimo da je ovaj procesor podjeljen na dva dijela, koji se nazivaju:
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
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
4.5.1.
96
broja, 4 segmentna registra i jedan status registar (registar bita stanja). Oni se mogu po
funkciji podijeliti na sljedee registre:
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:
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
BP
SI
DI
16 bita
Segmentni
registri
CS
SS
DS
ES
16 bita
IP
Flags
97
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
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.
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:
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
0001h
0002h
...
...
FFFEh
FFFFh
99
16 bita
Segmentni
registar CS
+ 4 bita
0 0 0 0
20
16 bita
Pokaziva
instrukcije (IP)
16
Sabira
kompletna adresa
20-bita
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
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
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
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.
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.
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.
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
105
106
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.
107
4.6.2.
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:
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.
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
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.
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
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:
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:
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
0000C h
Posveeni vektori
Tip 0-4
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
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
117
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.
4.6.7.
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:
118
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
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.
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
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.
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
122
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.
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.
124
14
Dekoder kolona
SRAM
Primopredajnik
podataka
125
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:
126
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.
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:
128
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.
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.
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
130
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.
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
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
132
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 =
(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
Tr =
(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 =
(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
DDR4
DDR3
DDR2
800-2133
DDR1
SDRAM
2133-4266
400-800
200-400
66-133
2002
2006
2010
135