You are on page 1of 29

1.

Zahtjevi na arhitekturu digitalnog raunala


Zahtjeve na arhitekturu digitalnog raunala odreuje njegov direktni korisnik, a to je
prvenstveno programer koji programira u C-u.
Programski jezik C zahtjeva raunalo koje moe izvoditi:
aritmetike i logike naredbe:
o aritmetike: zbroji, oduzmi, pomnoi, podijeli
o logike: I, ILI, EXOR, NE,
o naredbe nad bitovima: I, ILI, EXOR, NE, , posmak, rotacija
naredbe za upravljanje programskim tokom,
o bezuvjetna: goto
o uvjetna: if, if-else, swich, while, do-while, for
Aritmetike i logike operacije te operacije nad bitovima izvode se nad elementarnim
tipovima podataka:
znakovi (char)
cjelobrojni (int)
s pominim zarezom jednostruke preciznosti (float)
s pominim zarezom dvostruke preciznosti (double)
Osim postavljenih zahtjeva programera treba voditi rauna da se raunalo treba realizirati
pomou digitalnih sklopova.
Polazei od navedenog slijedi da raunalo ope namjene se mora sastojati od dvije
funkcionalne cjeline: jedne u koju e biti zapisane naredbe i podaci te druge koja e sukladno
zapisanim naredbama izvoditi obradu nad podacima. Naredbe i podaci zapisuju se u zaseban
sklop koji se naziva memorija, a obrado podataka sukladno zadanim naredbama izvodi
procesor. Rjeenje raunala ope namjene prikazano na Slika 1.1. Ovakav model poznat je po
nazivu Von Neumanov model raunala.

Slika 1.1 Von Neumanov model raunala.

1.1. Nain zapisivanja podataka u memoriju


Cjelobrojni podaci se u memoriju zapisuju u binarnom obliku . Za prikaz negativnih brojeva
koristi se dvostruki komplement.

BINARNI BROJEVNI SUSTAV


Brojevni sustav s bazom brojanja B ima znamenke 0, 1, 2, ... , B-1
Npr. u dekadskom sustavu B=10, a znamenke su 0, 1, 2, ..., 8 i 9.
Ako je baza B=2 dobiva se binarni brojevni sustav, ije znamenke su 0 i 1.
Iz engleskog BInary digiT nastalo je ime za najmanju koliinu informacije BIT.
Primjer zapisivanja brojeva:
5710 = 5 * 101 + 7 * 100 = 1*25 + 1*24 + 1*23 + 0*22 + 0*21 + 1*20 = 1 1 1 0 0 1 2
Za binarno prikazivanje informacija je potreban najvei broj elemenata u usporedbi s ostalim
prikazima, a broj bita za prikaz brojeva je iz tehnikih razloga ogranien .
Ureaji koji obrauju i pohranjuju binarne informacije fiziki se izvode pomou elektronikih
elementa s 2 stabilna stanja (bistabil), koji su vrlo brzi i jeftini.

Pretvorba dekadskog broja u binarni


Binarni broj tvore ostaci dijeljenja s 2, odozdo prema gore

57 : 2 = 28
1
28 : 2 = 14
0
14 : 2 = 7
0
7:2= 3
1
3:2= 1
1
1:2= 0
1

NEGATIVNI BINARNI BROJEVI


Registar je skup memorijskih elemenata koji pamte znamenke binarnog broja to znai da je za
odreeno raunalo unaprijed propisana duina registra, a time i brojevno podruje unutar kojeg se
kreu brojevi.
Primjer: Operacija 7 - 5 u raunalu s registrom od 4 bita obavit e se kao
7 + (-5). Binarni prikaz broja -5 je sljedei:
Pozitivni broj

0101

Komplement do baze-1
(jedinini komplement)

Komplement do baze
(dvojni komplement)

1111
+ 0101

1010
+ 0001

1010
Dokaz da je dobiveni broj - 5
1 0 1 1 (- 5)
+ 0 1 0 1 (+5)

1011

Operacija oduzimanja 7 - 5
0 1 1 1 ( 7)
+ 1 0 1 1 (-5)

0000
Preljev 1

0010
Preljev 1

U registru s 3 bita, ako je prvi bit predznak mogu se prikazati sljedei brojevi:
Dekadski broj
0
1
2
3

Binarni broj
000
001
010
011

-4
-3
-2
-1

100
101
110
111

Za n = 3 dobije se interval [-22, 22 - 1],


Za n = 8 taj je interval
[-27, 27- 1 ], tj. [-128, 127].
Openito: [-2n-1, 2n-1 - 1].
Dodavanjem jedinice najveem prikazinom cijelom broju, dobit e se najmanji prikazini cijeli
broj (npr. za n=8 , 127 + 1  -128) , odnosno oduzimanjem jedinice od najmanjeg prikazinog
cijelog broja dobit e se najvei prikazini broj (npr. za n=8 , -128 1  127)

OKTALNI BROJEVNI SUSTAV


Baza sustava je B=8 a znamenke su 0, 1, 2, 3, 4, 5, 6, 7.
Koristi se za skraeno zapisivanje binarnih sadraja kada je to spretno.
Primjer:
36-bitni broj
oktalni broj

001
1

110
6

000 101 111 001 010 011


0
5
7
1
2
3

111
7

000
0

100
4

001
1

HEKSADEKADSKI BROJEVNI SUSTAV


Baza sustava je B = 16, a znamenke su 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Koristi se za skraeno zapisivanje binarnog sadraja.
Primjer:
16-bitni broj
heksadekadski ekviv.

0111
7

1011
B

0011
3

1110
E

RAZLOMLJENI BINARNI BROJEVI


Razlomljeni binarni brojevi sadre "binarnu toku", analogno decimalnom zarezu, odnosno toki
u anglo-amerikoj notaciji.
Primjer: prikaz razlomljenih brojeva
5.75 10

= 5 * 100 + 7 * 10-1 + 5 * 10-2 =


= 1*22 + 0*21 + 1*20 + 1*2-1 + 1*2-2 = 1 0 1 . 1 1 2

Pretvaranje decimalnog broja u binarni


Cjelobrojni dio dekadskog broja pretvara se u binarni uzastopnim dijeljenjem, a decimalni
uzastopnim mnoenjem s 2, gdje cjelobrojni dio dobivenih produkata tvori znamenke binarnog
razlomka.

Primjer: pretvaranje decimalnih brojeva koji se ne mogu prikazati konanim brojem binarnih
frakcija

Treba uoiti da se konani decimalni razlomak prikazuje kao beskonani periodiki binarni
razlomak.
Binarni broj se mnoi s potencijama baze 2 tako da se binarna toka pomakne odgovarajui broj
mjesta desno ili lijevo, zavisno da li je predznak potencije pozitivan ili negativan.
Primjer: 1 . 1 1 * 22 = 1 1 . 1

PRIKAZ REALNIH BROJEVA U RAUNALU


Standardna tonost: 32 bita (4 byte)
Dvostruka tonost: 64 bita (8 byte)
Realni brojevi standardne tonosti
Deklaracija u programskom jeziku C: float
IEEE (Institute of Electrical and Electronics Engineers) standard 754 za prikaz realnih brojeva u
standarnoj tonosti:

31

30

24

23

eksponent

P
Karakteristika
Mantisa

mantisa

predznak ( P=1 negativan, P=0 pozitivan)


binarni eksponent + 127 (da se izbjegne prikaz negativnog eksponenta)
normalizirana (samo jedan bit ispred binarne toke).

Primjer: prikazati dekadski broj 5.75


5.7510 = 101.112 * 20 = 1.01112 * 22
Kako se normalizacijom svakog binarnog broja (osim nule) postie oblik 1.xxxxx, vodea
jedinica ne pohranjuje se u raunalu i naziva se skrivenim bitom.
Time se tedi jedan bit to poveava tonost.
Predznak = 0 (pozitivan broj)
Binarni eksponent = 2
Mantisa (cijela)
Mantisa (bez skrivenog bita)

K = 2 + 127 = 129 = (1000 0001)2


1.0111
0111

Rezultat:
0 10000001

01110000000000000000000

ili
0100
4

0000 1011 1000 0000 0000 0000 0000 binarno


heksadecimalno
0
B
8
0
0
0
0

Primjeri:
2 = 102 * 20 = 12 * 21 = 0100 0000 0000 0000 ... 0000 0000 = 4000 0000 hex
P = 0, K = 1 + 127 = 128 (10000000), M = (1.) 000 0000 ... 0000 0000
-2 = -102 * 20 = -12 * 21 = 1100 0000 0000 0000 ... 0000 0000 = C000 0000 hex
Jednako kao 2, ali P = 1
4 = 1002 * 20 = 12 * 22 = 0100 0000 1000 0000 ... 0000 0000 = 4080 0000 hex
Jednaka mantisa, BE = 2, K = 2 + 127 = 129 (10000001)
6 = 1102 * 20 = 1.12 * 22 = 0100 0000 1100 0000 ... 0000 0000 = 40C0 0000 hex
1 = 12 * 20 = 0011 1111 1000 0000 ... 0000 0000 = 3F80 0000 hex
K = 0 + 127 (01111111).
.75 = 0.112 * 20 = 1.12 * 2-1 = 0011 1111 0100 0000 ... 0000 0000 = 3F40 0000 hex
Poseban sluaj - 0:

Normalizacijom broja 0 ne moe se dobiti oblik 1.xxxxx


0 = 0 0000000 0000 ... tj. kao 1.02 * 2-127

Raspon i tonost realnih brojeva


Za sluaj realnog broja standardne tonosti karakteristika (8 bita) se moe nalaziti u intervalu
[0,255].
Specijalni sluajevi karakteristike su 0 i 255, pa obzirom da je BE = K - 127, BE se moe kretati u
intervalu [-126,127].
Kada je K = 0 i svi bitovi mantise nula radi se o broju nula.
Kada je K = 0 i postoje binarne frakcije u mantisi tada je to denormalizirani broj, tj. vie ne postoji
skriveni bit.
Kada je K = 255 i svi bitovi mantise nula radi se o prikazu + illi - ovisno od predznaka P
Kada je K = 255 i postoje binarne frakcije u mantisi ne radi se o prikazu broja (NaN)
Najmanji pozitivni broj 0 koji se moe prikazati je:
0.000000000000000000000012 *2-126 to iznosi 1.401298464324817*10-45
a najvei je:
1.111111111111111111111112 * 2127 2128 = 3.402823669209*1038
Tonost: 24 binarne znamenke
224 10x  24 log 2 x log 10  x 24 log 2 = 7.224719895936
tj. priblino 7 prvih vaeih tonih znamenki.

Prikaz pomou brojevnog pravca:

-3.4*1038

-1.4*10-45

1.4*10-45

Numerike pogreke
Nemogunost koritenja svih bita kod raunanja
Primjer: 0.000110 + 0.990010
0.000110 :
(1.)101000110110111000101112 * 2-14
0.990010 :
(1.)111110101110000101000112 * 2-1
Kod zbrajanje, binarne toke moraju biti poravnate:
.000000000000011010001101 * 20 Samo 11 od 24 bita!
+.111111010111000010100011 * 20
.111111010111011100110000 * 20 = 0,990099906921410

3.4*1038

Realni brojevi dvostruke tonosti


Deklaracija u programskom jeziku C: double
63

62

52

51

eksponent

P
Karakteristika
Mantisa

mantisa

predznak ( P=1 negativan, P=0 pozitivan)


binarni eksponent + 1023 (da se izbjegne prikaz negativnog eksponenta)
normalizirana (samo jedan bit ispred binarne toke).

Raspon:
K [0,2047].
BE = K - 1023
BE [-1022,1023]
Specijalni sluajevi: K=0 i K=2047
Kada je K = 0 i svi bitovi mantise nula radi se o broju nula
Kada je K = 0 i postoje binarne frakcije u mantisi tada je to denormalizirani broj, tj. vie ne postoji
skriveni bit
Kada je K = 2047 i svi bitovi mantise nula radi se o prikazu + ili - ovisno o predznaku P
Kada je K = 2047 i postoje binarne frakcije u mantisi tada se ne radi o prikazu broja (Nan)
Najmanji pozitivni broj razliit od nule koji se moe prikazati je:
0.0000 ...0012 * 2-1022 to je 4.9406 * 10-324
a najvei je:
1.1111.....1111112 * 21023 21024 = 1.797693134862316*10308
Tonost: 53 binarne znamenke
253 10x  53 log 2 x log 10  x 53 log 2 = 15.95458977019
tj. priblino 16 prvih vaeih tonih znamenki.

Postoji jo i long double, meutim, njegova veliina ovisi o platformi, pa se tako mogu nai
implementacije u kojima je njegova veliina 64,80,96 ili 128 bita. ANSI standard propisuje da
nije manji od double broja. Primjer raspodjele ako je njegova veliina 80 bita:
long double

80 bita

Karakteristika: 15 bita
Binarni eksponent: Karakteristika 16383

1.2. Prikaz naredbi


Kako je ve navedeno raunalo treba izvoditi aritmetike i logike naredbe, te naredbe za
upravljanje programskim tokom. Prikaz naredbi definirati e se na primjeru jedne aritmetike
naredbe:
rez = op1 + op2
Nazivi varijabli su ekvivalent memorijskih adresa na kojima se varijabla pohranjuje. Sadraj
te memorijske lokacije je vrijednost varijable. Tako npr. op1 je smjeten na adresi 100 iji
sadraj je 10, a op2 na adresi 101 iji sadraj je 15. Rezultat, rez smjeten je na adresi 102 i
sadraj prije operacije je 0.

Slika 1.2 Nain pohrane varijabli u memoriji raunala.


Sukladno navedenome naredba sadri sljedee informacije:
operacija
adresa rezultata
adresa operanda 1
adresa operanda 2

+
102
100
101

Adrese su numeriki podaci koje je mogue prikazati u binarnom obliku. Operaciju je mogue
proizvoljno kodirati kao u primjeru:
Naredba

Simbol

zbrajanje
oduzimanje
mnoenje
dijeljenje
ostatak dijeljenja
I nad bitovima
ILI nad bitovima
EXOR nad bitovima
NE nad bitovima
itd

+
*
/
%
AND
OR
EXOR
NOT

Operacijski Operacijski
kod
kod binarno
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000

Tablica 1.1 Naredbe kao i pripadajui operacijski kodovi.

Na ovaj nain sve informacije mogu se zapisati u binarnom obliku. Neka raunalo moe
adresirati 4Gbyta memorije slijedi da je za prikaz adresa potrebno 32 bita, a neka ima do 15
operacija pa je njih mogue prikazati s 4 bita. Sada je naredbu mogue prikazati na nain:
Operacijski kod
4 bita

Adresa rezultata
32 bita

Adresa operanda 1
32 bita
100 bita

Adresa operanda 2
32 bita

Definiranje rasporeda polja u naredbi i njihovo znaenje naziva se format naredbe. Ovakva
naredba zauzima 12 okteta i 4 bita. U praksi je dobro da naredba zauizima cijeli broj okteta, u
ovom primjeru 13, pa se polje operacijskog koda proiruje za dodatna etiri bita i naredba
sada ima sljedei format:
Op.
kod
8 bita

Adresa rezultata

Adresa operanda 1

Adresa operanda 2

32 bita

32 bita

32 bita

104 bita
Ovim je definiran prikaz varijabli i naredbi u memoriji raunala. Slijedi opis izvoenja
naredbe.

1.3. Izvoenje naredbi princip rada procesora


Kako je ve prije opisano sve naredbe i podaci zapisani su u binarnom obliku u memoriji
raunala. Da bi izveo operaciju procesor mora imati informaciju gdje se nalazi naredba koju
treba izvesti, odnosno njenu adresu. Tu adresu procesor treba imati u jednom zasebnom
spremniku. Kada se s te adrese dohvati naredba procesor je interno pohrani da bi mogao
kasnije izvesti operaciju. Za oekivati je da se sljedea naredba koju treba izvesti nalazi
neposredno iza naredbe koja se trenutno izvodi. Zato se sadraj spremnika koji sadri adresu
naredbe koju treba izvesti inkrementira za veliinu naredbe.
Sukladno namjeni spremnik u kojem je pohranjena adresa sljedee naredbe koju treba izvesti,
a koji se nakon dohvata naredbe inkrementira da pokazuje na sljedeu naredbu se naziva
programsko brojilo (program counter) skr. PC. Spremnik u koji se privremeno pohrani
naredba dok se operacija ne izvede naziva se spremnik naredbe (instruction register) skr.
IR.
Korak prebacivanja naredbe iz memorije u procesor i priprema za dohvat sljedee naredbe
naziva se dohvat naredbe.
Nakon to je naredba iz memorije prebaena u procesor, procesor mora izvesti naredbu. Kao
prvi korak izvoenja naredbe je dohvat prvog operanda s adrese koja je sastavni dio naredbe
te njegova privremena pohrana u procesor. Sljedei korak je dohvat drugog operanda. Kad su
u operandi dohvaeni slijedi izvoenje operacije temeljem operacijskog koda. Procesor mora
imati zaseban sklop za izvoenje aritmetikih i logikih operacija koji se naziva aritmetika i
logika jedinica (arithmetical and logical unit) skr. ALU. Nakon to se izvede operacija
rezultat se privremeno pohrani u jedan spremnik. Zadnji korak je upis rezultata natrag u
memoriju na adresu odreenu naredbom.
Korak dohvata operanda, izvoenja operacije te pohrana rezultata u memoriju naziva se
izvoenje naredbe.
Cijeli ciklus sastoji se od dva koraka: dohvata naredbe (fetch) i koraka izvoenja naredbe
(execute).

Cijeli postupak prikazan je na primjeru jednostavne aritmetike naredbe u C-u:


int
x = 20, y = 30, z = 10, rez;
rez = x + y z;
Operandi x, y, z i rez zauzimaju po svaka po etiri uzastopne memorijske lokacije. Kao
primjer uzeti e se da je:
adr x 100
adr y 104
adr z 108
adr rez 112
Memorijske lokacije koje zauzima x, y i z se inicjaliziraju na zadane vrijednosti.
Aritmetika naredba izvodi se u dva koraka:
rez = x + y;
rez = rez - z;
Sukladno Tablica 1.1 u kojoj je dan primjer operacijskih kodova naredbe se kodiraju na nain:
rez = x + y;

Op. kod +
0

Adr, rez. rez


112

Adr, op1. x
100

Adr, op2. y
104

rez = rez z;

Op. kod 1

Adr, rez. rez


112

Adr, op1. rez


112

Adr, op2. z
108

Poetno stanje procesora prikazano je na sljedeoj slici:

Slika 1.3 Poetno stanje raunala prije nego se pokrene izvoenje naredbi.
Izvoenje programa poinje od adrese 0 koja je zapisana u programskom brojilu PCu. Sa
adrese 0 13 okteta se prebaci u spremnik naredbe IR te se programsko brojilo PC inkrementira
za 13 da pokazuje na sljedeu naredbu.
Ukoliko se prebacuje oktet po oktet tada ova faza traje 13 taktova.

MEMORIJA
0

112

100

104

PROCESOR
13

PC
IR

12
13

Op.
code

adr.
rez

adr.
op1

112

100

adr.
op2

112

112

108

104
25

100

20
ALU

103
104

30

107
108

10

111
112

115

x
y
z
rez

Slika 1.4 Dohvat prve naredbe


Ovim je zavrena faza dohvata naredbe. Slijedi faza izvoenja naredbe.
Temeljem operacijskog koda zakljuuje se da se radi o operaciji za zbrajane, te slijedi dohvat
prvog operanda. Adresa operanda (100) upisana je u treem polju spremnika naredbe IR. S te
adrese operand se prebacuje u privremeni spremnik procesora. Neka je za dekodiranje
naredbe potreban jedan takt, a za dohvat etiri okteta jo etiri takta. Ova faza prikazana je
sljedeom slikom
MEMORIJA
0

112

100

PROCESOR

12
13

13

PC
IR

104

Op.
code

adr.
rez

112

adr.
op1

100

adr.
op2

112

112

108

104
25

20

20
ALU

30
10
0

Slika 1.5 Dohvat prvog operanda prve naredbe.

100
103
104
107
108
111
112
115

x
y
z
rez

Slijedi dohvat drugog operanda. Adresa operanda (104) upisana je u etvrtom polju spremnika
naredbe IR. S te adrese operand se prebacuje u privremeni spremnik procesora. Za dohvat
etiri okteta potrebno je etiri takta. Ova faza prikazana je sljedeom slikom:
MEMORIJA
0

112

100

104

PROCESOR
13

PC
IR

12
13

Op.
code

adr.
rez

adr.
op1

112

100

adr.
op2

112

112

108

104
25

20

30
100

20
ALU

103
104

30

107
108

10

111
112

115

x
y
z
rez

Slika 1.6 Dohvat drugog operanda prve naredbe.


Nakon to su dohvaeni operandi izvodi se operacija. Rezultat operacije upisuje se u
privremeni spremnik. Neka je za izvoenje operacije potrebno jedan takt.
MEMORIJA
0

112

100

PROCESOR

12
13

13

PC
IR

104

Op.
code

adr.
rez

adr.
op1

112

100

adr.
op2

112

112

108

104
25

20

30

20
ALU
50

30
10
0

Slika 1.7 Izvoenje operacije.

100
103
104
107
108
111
112
115

x
y
z
rez

Posljednji korak u izvoenju naredbe je pohrana rezultata na adresu (112) specificiranu


drugim poljem naredbe. Neka je za prebacivanje etiri okteta iz procesora u memoriju
potrebno etiri takta.
MEMORIJA
0

112

100

PROCESOR

104

12
13

13

PC
Op.
code

adr.
rez

112

IR

adr.
op1

100

adr.
op2

112

112

108

104
25

20

30

20
ALU

30
10

50

50

100

103
104

107
108
111
112
115

z
rez

Slika 1.8 Pohrana rezultata prve naredbe natrag u memoriju.


Ovim je zavren cijeli ciklus dohvata i izvoenja prve naredbe.
U sljedeoj tablici dan je rezime trajanja dohvata i izvoenja naredbe.
trajanje
(takt)

faza
dohvat naredbe

izvoenje naredbe

dohvat naredbe 13 okteta


inkrementiranje PC-a
dekodiranje
dohvat 1. operanda
dohvat 2. operanda
ALU operacija
pohrana rezultata
UKUPNO

13
1
4
4
1
4
27

Iz tablice moe se zakljuiti da cijeli ciklus relativno dugo traje, ukupno 27 taktova. Takoer.
veliki dio vremena troi se na dohvat naredbe emu je razlog relativno velika naredba 13
okteta.
Slijedi izvoenje druge naredbe. Ciklus dohvata naredbe identian je kao i za prvu naredbu.
Slijedi dekodiranje naredbe i dohvat operanada, izvoenje operacije te pohrana rezultata.
Cijeli ciklus prikazan je na sljedeoj slici:

Slika 1.9 Ciklus izvoenja druge naredbe.


Ovim je razraen jedan mogui princip rada raunala. U ovom konceptu operandi se
dohvaaju direktno iz memorije te se rezultat takoer pohranjuju natrag u memoriju. Naredba
sadri operacijski kod te tri adrese (dva operanda i rezultat).

Cilj je prilikom projektiranja raunala dobiti raunalo koje je na istoj tehnolokoj osnovi:

bre
bolje koristi resurse raunala (memoriju i spremnike procesora)

Analizirajui rjeenje predloeno prethodnim tekstom mogu se uoiti sljedei nedostaci:


1. naredba je relativno velika pa dohvat naredbe relativno dugo traje
2. nakon to je izvedena prva naredba, njen rezultat koji je ujedno u operand sljedee
naredbe prvo se vrati u memoriju, a onda u sljedeoj naredbi ponovo iz memorije
vraa u procesor
Drugi nedostatak relativno se esto deava posebice kod sloenih aritmetikih izraza koji
rezultiraju nizom kumulativnih naredbi (rezultat prethodne je operand sljedee). U ovom
sluaju poboljanje je lako napraviti na nain da se rezultat umjesto da se upisuje u memoriju
proslijedi kao rezultat sljedeoj naredbi. Rezultat operacije upisuje se u poseban spremnik u
kojem automatski postaje jedan operand sljedee naredbe. Kako se u ovom spremniku
kumuliraju rezultati naredbi on se naziva akumulator. Navedeno rezultira sljedeim
konceptom procesora:
MEMORIJA
0
4

PROCESOR

PC

12
16

IR
op1/rez

op2

Acc

20
ALU

30
10
0

100
103
104
107
108
111
112
115

x
y
z
rez

Slika 1.10 Koncept procesora s akumulatorom


Kako u predloenom konceptu procesora jedan operand i rezultat se obavezno nalaze u
akumulatoru tako njih nije potrebno specificirati u naredbi. Na ovaj nain naredba poprima
oblik:
Op.
kod
8 bita

Adresa rezultata
32 bita

Naredba je sada samo 40 bita odnosno 5 okteta. Na ovaj nain napravljena je uteda u
koritenju memorije, a i potrebno je znatno krae vrijeme dohvata naredbe. Takoer, nije
potrebno dohvaati jedan operand te spremati rezultat natrag u memoriju. Sukladno
navedenome trajanje izvoenja naredbe iznosilo bi:

trajanje
(takt)

faza
dohvat naredbe
izvoenje naredbe

dohvat naredbe 5 okteta


inkrementiranje PC-a
dekodiranje
dohvat 2. operanda
ALU operacija
UKUPNO

5
1
4
1
11

Usporedbom s prethodnim konceptom procesora s tri adrese, kod procesora s akumulatorom


izvodi se naredba 27/11 2,5 puta bre.
Da li je procesor temeljen na akumulatoru stvarno toliko bri?
Odgovor na ovo pitanje moe se dobiti ukoliko se analizira izvoenje istog programskog
odsjeka kao u prethodnom rjeenju na ovom procesoru.
int
x = 20, y = 30, z = 10, rez;
rez = x + y z;
gdje su varijable x, y, z i rez na istim adresama kao u prethodnom primjeru.
Procesor s akumulatorom oekuje u akumulatoru jedan operand. Da bi se mogao inicijalno
napuniti akumulator s prvim operandom nekog kumulativnog rauna potrebno je uvesti
zasebnu naredbu koja sadraj memorijske lokacije upisuje u akumulator. Zato se uvodi
naredba load koja prebacuje sadraj memorijske lokacije u akumulator.
Na slian nain kad se zavri kumulativni raun potrebno je rezultat vratiti u memoriju. Zato
se uvodi naredba store koja prebacuje sadraj akumulatora u zadanu memorijsku lokaciju.
Naredbe load i store su naredbe za prijenos podataka. Ove naredbe nemaju AL operaciju i
zato traju za jedan takt manje od AL operacija.
Zadani primjer na procesoru s akumulatorom izvodio bi se preko sljedeeg niza naredbi:
1.
2.
3,
4,

naredba
load 100
zbroji 104
oduzmi 108
store 112

opis
sadraj x adr. 100 u akumulator, acc = 30
acc = acc + y , acc = 50
acc = acc - z , acc = 40
sadraj acc na adresu z (112), z = 40

trajanje

UKUPNO

10
11
11
10
42

Na procesoru koji je temeljen na naredbama s tri adrese izvoenje ovog primjera trajalo je
2*27 = 54 takta, a na procesoru temeljenom na akumulatoru 42. Slijedom navedenog ubrzanje
koje se dobiva novim konceptom je svega 54/42 odnosno oko 25%. Slino razmatranje vrijedi
i za koritenje memorije budui da procesor s akumulatorom zahtjeva etiri naredbe te
program zauzima 20 okteta usporedbi s 26 okteta kod prvobitne varijante (30% utede).
Navedena razmatranja vode zakljuku da je dobit procesora s akumulatorom to vea ukoliko
su kumulativni izrazi vei, dok ukoliko nema kumulativnog raunanja zbog potrebe uestalog
donosa operanda u akumulator i pohrane rezultata u memoriju ovakav procesor moe iskazati
ak i loije performanse.
Izvoenje naredbi na procesoru s akumulatorom prikazano je sljedeom slikom:

MEMORIJA

MEMORIJA
0

load 100

load 100
4
5

PROCESOR
5

IR

9
10

PC

4
5

PROCESOR

zbroji 104

14
15

load 100

op1/rez
Acc

IR

store 112
19

op2

20

ALU

30
10
0

100
103
104
107
108
111
112
115

9
10

PC

oduzmi 108

zbroji 104

oduzmi 108
14
15

load 100

op1/rez
Acc
20

store 112
19

op2

20

ALU

30

10

rez

MEMORIJA

IR

9
10

op1/rez
Acc
20

14
15

IR

store 112
19

op2

20

ALU

30
10
0

100
103
104
107
108
111
112
115

9
10

oduzmi 108
14
15

zbroji 104

op1/rez
Acc
20

store 112
19

op2
30

20

ALU

30

10

rez

MEMORIJA

4
5

IR

op1/rez
Acc
50

14
15

IR

store 112
19

20
30
10
0

100
103
104
107
108
111
112
115

15

rez

9
10

oduzmi 108

oduzmi 108

op1/rez
Acc
50

30

ALU

115

zbroji 104

10

PC

oduzmi 108

op2

111
112

4
5

PROCESOR
9
10

zbroji 104

107
108

load 100

zbroji 104

10

103
104

load 100

PC

100

MEMORIJA
0

PROCESOR

rez

zbroji 104

10

PC

oduzmi 108

zbroji 104

115

4
5

PROCESOR

zbroji 104

111
112

load 100
4
5

PC

107
108

load 100

10

103
104

MEMORIJA
0

PROCESOR

100

14
15

store 112
19

op2
30

ALU

20

30

10

rez

100
103
104
107
108
111
112
115

x
y
z
rez

MEMORIJA

MEMORIJA
0

load 100

load 100
4
5

PROCESOR

IR

9
10

15

PC

4
5

PROCESOR

zbroji 104

oduzmi 108

op1/rez
Acc
50

14
15

IR

store 112
19

op2

20

ALU

30
10
0

100
103
104
107
108
111
112
115

oduzmi 108
14
15

oduzmi 108

op1/rez
Acc
40

10

9
10

15

PC

oduzmi 108

zbroji 104

store 112
19

op2
10

20

ALU

30

10

rez

MEMORIJA

100
103
104
107
108
111
112
115

IR

9
10

14
15

IR

store 112
19

op2

ALU

20
30
10
0

100
103
104
107
108
111
112
115

9
10

oduzmi 108
14
15

store 112

op1/rez
Acc
40

10

zbroji 104

20

PC

oduzmi 108

store 112

op1/rez
Acc
40

4
5

PROCESOR

zbroji 104

15

rez

load 100
4
5

PC

load 100

20

MEMORIJA
0

PROCESOR

store 112
19

op2
10

ALU

20

30

10

rez

40

100
103
104
107
108
111
112

Slika 1.11 Izvoenje programskog odsjeka na procesoru s akumulatorom.


Primjer:
Usporedi izvoenje sljedeeg programskog odsjeka na oba tipa procesora:
int
x = 10, y = 20, z = 30, a = 5, b = 15, c = 25, rez;
rez = (y + z)*x + (b + c)*a;
Rjeenje:
Procesor s tri adrese
naredbe
trajanje
temp = y + z
26
temp = temp*x
26
rez = b + c
26
rez = rez*a
26
rez = rez + temp
26

Procesor s akumulatorom
naredbe
trajanje
load y
10
zbroji z
11
pomnoi x
11
store rez
10
load b
10
zbroji c
11
pomnoi a
11
zbroji rez
11
store rez
10
130
95

115

x
y
z
rez

Procesor s akumulatorom priblino je 35% brzi od procesora s tri adrese.


Ali, iz navedenog primjera moe se vidjeti da ukoliko bi procesor imao vie akumulatora, u
kojima bi bilo mogue pohraniti meurezultate prorauna dobilo bi se jo vee ubrzanje. Na
tragu ovog zakljuka iznjedrio se novi koncept procesora. Procesor sadri vie spremnika u
koje se privremeno pohranjuju operandi i rezultati operacija. Sve aritmetike i logike
operacije izvode se samo nad sadrajima spremnika te se rezultat operacije pohranjuje samo u
jedan od spremnika. Operandi se u spremnike donose pomou load naredbe, a rezultati se
upisuju u memoriju pomou store naredbe. Ovakav koncept procesora naziva se procesor sa
spremnicima ope namjene.
Procesor sa 32 spremnika ope namjene prikazan je sljedeom slikom:
MEMORIJA
0
4

PROCESOR

PC
12

IR

16

R0
R1
R2
R3

20
ALU

30
10

R31

100
103
104
107
108
111
112
115

x
y
z
rez

Slika 1.12 Procesor sa spremnicima ope namjene


Aritmetika naredba ovakvog procesora mora sadravati informacije o operaciji te
spremnicima u kojima se nalaze operandi te spremniku u koji se pohranjuje rezultat. Kako je
spremnika u ovom primjeru svega 32 za njihovo adresiranje potrebno je 5 bita. Sukladno
navedenome format naredbe je:
Op. kod
5 bita

Adresa spremnika
Adresa spremnika
rezultata
operanda 1
5 bita
5 bita
20 bita

Adresa spremnika
operanda 2
5 bita

Ovakav koncept procesora ima jo krau naredbu koja u osnovi zauzima svega tri okteta.
Izvoenje primjera kojim su opisani principi rada prethodna dva modela procesora na
procesoru sa spremnicima ope namjene prikazan je sljedeim slikama:

Slika 1.13 Izvoenje programskog odsjeka na procesoru sa spremnicima ope namjene.

Procjena vremena izvoenje naredbe na procesoru sa spremnicima ope namjene prikazano je


u sljedeoj tablici:
trajanje
(takt)

faza
dohvat naredbe
izvoenje naredbe

dohvat naredbe 3 okteta


inkrementiranje PC-a
dekodiranje
dohvat operanda
ALU operacija
UKUPNO

3
1
1
1
6

Ova analiza pokazuje da su ovakvi procesori priblino duplo bri od procesora s


akumulatorom, dok je broj naredbi da se izvede proraun priblino isti.
Temeljem provedenih razmatranja ovaj koncept procesora iskristalizirao se kao najbolje
rjeenje koje e se daljnje razraivati u ovom udbeniku.
Ovdje je vano i potrebno jo jednom napomenuti da su procjene broja taktova odnosno
vremena izvoenja naredbi raene temeljem pretpostavke da procesor dohvaa iz memorije
oktet po oktet (osam bitovna podatkovna sabirnica). Ukoliko procesor dohvaa vie okteta u
jednom taktu ovi podaci e se promijeniti. Takoer i vrijeme izvoenja naredbe varira u
ovisnosti o realizaciji procesora to e biti naknadno obraeno. Unato svemu navedenome
ove procjene su pomogle da se na odreeni nain kvantitativno usporede ponuena rjeenja.

1.4. Naini dohvata operanda adresni modovi


U dosadanjim razmatranjima obrada se radila samo s varijablama koje su odreene adresom
memorijske lokacije na koju se sadraj (vrijednost varijable) zapisuje. Programeri imaju
potrebu specificirati operande operacija i na drugaije naine.
Razliiti naini pristupa operandima pokazani su na sljedeem primjeru programskog
odsjeka u C-u:
#define
N 10
int
i, *pokazivac, podaci[N];
struct student
{
char ime[20], prezime[20];
int
godina;
} Ante;
.
pokazivac = podaci;
for (i = 0; i < N; i++)
podaci[i] = i+5;
.
Ovaj programski odsjeak pokazuje da su operandi definirani kao konstante, varijable
pokazivai, polja, strukture. Postavlja se pitanje kako pristupati ovakvim podacima, odnosno
kako bi procesor trebao pristupati ovakvim podacima.
Razmotrimo primjer kada je jedan od operanada konstanta. Konstantu je mogue zapisati u
naredbi u polje predvieno za adresu operanda ali sada se postavlja pitanje kako razlikovati da
se radi o konstanti a ne operandu.

Primjer:
int

x = 20, y = 30, rez;


rez = x + y + 104;
x adr 100, y adr 104, rez adr 108

Programski odsjeak izvodi se na nain:


rez = x + y
rez = rez + 104
Sukladno Tablica 1.1 u kojoj je dan primjer operacijskih kodova naredbe se kodiraju na nain:
rez = x + y;

Op. kod +
0

Adr, rez. rez


108

Adr, op1. x
100

Adr, op2. y
104

rez = rez + 104;

Op. kod +
0

Adr, rez. rez


108

Adr, op1. rez


108

operand 2 104
104

Postavlja se pitanje kako razlikovati koritenje drugog operanda, odnosno u prvoj naredbi
vrijednost operanda se nalazi na adresi 104, a u drugoj je operand vrijednost 104 i zapisana je
direktno u naredbi. Ovo je mogue jedino ukoliko razlikujemo ova dva tipa zbrajanja. To
znai da e operacija u zavisnosti o kombinacije operanada imati razliiti operacijski kod.
Naredba

0p1

zbrajanje
oduzimanje
mnoenje
dijeljenje
ostatak dijeljenja
I nad bitovima
ILI nad bitovima
EXOR nad bitovima
NE nad bitovima
..
zbrajanje
oduzimanje
mnoenje
dijeljenje
..

op2

var
var
var
var
var
var
var
var
var

var
var
var
var
var
var
var
var
var

var
var
var
var

konst
konst
konst
konst

Operacijski Operacijski
kod
kod binarno
0
0000 0000
1
0000 0001
2
0000 0010
3
0000 0011
4
0000 0100
5
0000 0101
6
0000 0110
7
0000 0111
8
0000 1000
16
17
18
19

0001 0000
0001 0001
0001 0010
0001 0011

Nakon ovakvog odabira operacijskih kodova naredbe se prikazuju na sljedei nain


rez = x + y;

Op. kod +
0

Adr, rez. rez


108

Adr, op1. x
100

Adr, op2. y
104

rez = rez + 104;

Op. kod +
16

Adr, rez. rez


108

Adr, op1. rez


108

operand 2 104
104

Slika 1.14 Operand (varijabla) specificiran preko memorijske adrese.

Slika 1.15 Operand (konstanta) specificiran u okviru .naredbe


Za primijetiti je da ovakvim rjeenjem dohvat konstante bri od dohvata varijable koja
zahtjeva dodatne pristupe memoriji.
Slina razmatranja mogu se provesti i za pokazivae. Pokaziva je varijabla iji sadraj je
adresa na kojoj se nalazi operand.
Na sljedeoj slici prikazan je dohvat operanda prikazanog kao pokaziva.

Slika 1.16 Operand (pokaziva) specificiran u okviru .naredbe.


Za razliku od konstante, pokaziva moe biti ili samo prvi operand, ili samo drugi operand, ili
oba operanda, rezultat, odnosno bilo koja kombinacija operanada i rezultata.
Polja i strukture zapisuju se u memoriju poetno od neke bazne adrese pa nadalje element po
element. Na sljedeoj slici prikazan je zapis polja u memoriji kao i nain pristupa
pojedinanom lanu polja.
MEMORIJA
0
1

pomak

baza = 100
+
indeks x veliina
elementa

100 = podaci

10
20
5
7
-10

35
35

podaci[0]
podaci[1]
108
podaci[2]
112
podaci[3]
116
podaci[4]
104

132
136

podaci[8]
podaci[9]

N-1

Slika 1.17 Nain zapisa polja u memoriji kao i pristup lanu polja
Za pristup lanovima polja, a slino vrijedi za strukturu dobro je uvesti zasebni spremnik u
koji e se zapisati baza, a pomak moe biti konstanta koja se zapie u okviru naredbe.

MEMORIJA
0
1

PROCESOR
Op.
code

rez

...

...

op1

...

100 = podaci

op2

16

pomak

+
baza

adresa 116

10
20
5
7
-10

100
35
35

podaci[0]
podaci[1]
108
podaci[2]
112
podaci[3]
116
podaci[4]
104

132
136

podaci[8]
podaci[9]

N-1

Slika 1.18 Nain pristupa operandu preko baze i pomaka


Nain pristupa operandu, odnosno pohrane rezultata, naziva se adresni mod. Razliiti adresni
modovi prikazani su i objanjeni na sljedeim slikama.
Adresiranje u kojem je operand sastavni dio naredbe, sluaj kada se radi o konstanti, naziva se
neposredno adresiranje (immediate addressing) i prikazano je sljedeom slikom

Slika 1.19

Operand kao konstanta koja je sastavni dio naredbe neposredno adresiranje


(immediate addressing)

Neposrednim adresiranjem moe se specificirati samo operand.


Pristup operandima, ali i rezultatu preko memorijske adrese (varijablama) naziva se direktno
adresiranje (direct addressing) i prikazano je sljedeom slikom.

Slika 1.20

Operandu ili rezultatu se pristupa preko adrese(varijabla) direktno adresiranje


(direct addressing)

Indirektan pristup operandu ili rezultatu bilo posredno preko memorijske adrese ili spremnika
(pokaziva) naziva se indirektno adresiranje (indirect addressing).

Slika 1.21

Operandu ili rezultatu se pristupa indirektno pomkou memorijske


lokacije(pokaziva) indirektno adresiranje (indirect addressing)

Slika 1.22

Operandu ili rezultatu se pristupa indirektno pomou spremnika (pokaziva)


indirektno adresiranje pomou spremnika (indirect register addressing)

Pristup operandima ili rezultatu raunajui adresu kao baza + pomak, Slika 1.18, naziva se
bazno adresiranje (base addressing). Koristi se za pristup sloenim tipova podataka.
Nakon svih ovih razmatranja za uoiti je da za svaku operaciju su mogue brojne kombinacije
pristupa operandima i rezultatu (adresnih modova) to moe rezultirati velikim brojem
operacija. Temeljem navedenoga prisutna su dva razliita koncepta raunala.
Prvi koncept je podrati to vei broj adresnih modova to rezultira velikom brojem naredbi.
Ovakav koncept naziva se raunalo s sloenim skupom naredbi (Complex Instruction Set
Computer) skr. CISC.
Suprotan koncept je podrati samo ogranieni broj adresnih modova to rezultira malim
brojem naredbi. Ovakav koncept naziva se raunalo s malim skupom naredbi (Reduced
Instruction Set Computer) skr. RISC.

You might also like