Está en la página 1de 52

PRINCIP RADA

PROCESORA
Prof. dr sc. Sven Gotovac
Primjer izvoenja programa
int op1, op2, op3, rez;
rez = op1 + op2 + op3;

Ovaj kod izvodi se:


rez = op1 + op2;
rez = rez + op3;

Neka su adrese lokacija na kojima su pohranjeni operandi:


op1 na adresi 100
op2 na adresi 104
op3 na adresi 108
rez na adresi 112

zbroji 112, 100,104


(zbroji sadraj s adrese 100 i 104 i rezultat pohrani na adresu 112)
Primjer izvoenja programa
Tada je kod:
rez = op1 + op2;
rez = rez + op3;

8 32 32 32
Op. Kod. Adresa rezultata Adresa operanda 1 Adresa operanda 2
zbroji 112, 100,104
(zbroji sadraj s adrese 100 i 104 i rezultat pohrani na adresu 112)

8 32 32 32
zbroji 112, 112,108
zbroji
(zbroji 112112 i 108 i rezultat100
sadraj s adrese 104
pohrani na adresu 112)

8 32 32 32
zbroji 112 112 108
DOHVAT NAREDBE: 0
zbroji 1
S adrese na koju pokazuje PC = 0 112
2
3
prebaci 13 bajta u IR 100
104
12
zbroji 13
0 PC 112
14

112
IR 108 25

10 100
20 104
5 108
0 112

T=0

1G-1
NAREDBA UITANA: 0
zbroji 1
PC inkremetiran da pokazuje na 112
2
3
sljedeu naredbu 100
104
12
zbroji 13
13 PC 112
14

112
zbroji 112 100 104 IR 108 25

10 100
20 104
5 108
0 112

Uitavanje 13 byte-ova

1G-1
IZVOENJE NAREDBE: 0
zbroji 1
S adrese 1. op (100) 112
2
3
dohvati njegovu vrijednost (10) 100
104
12
zbroji 13
13 PC 112
14

112
zbroji 112 100 104 IR 108 25

10 100
20 104
5 108
0 112

1G-1
IZVOENJE NAREDBE: 0
zbroji 1
Dohvaen prvi operand 112
2
3
100
104
12
zbroji 13
13 PC 112
14

112
zbroji 112 100 104 IR 108 25

10 100
10 20 104
5 108
0 112

Dohvat 4 byte

1G-1
IZVOENJE NAREDBE: 0
zbroji 1
S adrese 2. op (104) 112
2
3
dohvati njegovu vrijednost (20) 100
104
12
zbroji 13
13 PC 112
14

112
zbroji 112 100 104 IR 108 25

10 100
10 20 104
5 108
0 112

1G-1
IZVOENJE NAREDBE: 0
zbroji 1
Dohvaen drugi operand 112
2
3
100
104
12
zbroji 13
13 PC 112
14

112
zbroji 112 100 104 IR 108 25

10 100
10 20 20 104
5 108
0 112

Dohvat 4 byte

1G-1
IZVOENJE NAREDBE: 0
zbroji 1
Izvoenje operacije (zbroji) 112
2
3
100
104
12
zbroji 13
13 PC 112
14

112
zbroji 112 100 104 IR 108 25

10 100
10 20 20 104
5 108
0 112

30

Izvoenje operacije trajalo 1 ciklus

1G-1
POHRANA REZULTATA: 0
zbroji 1
Na adresu rezultata (112) 112
2
3
pohrani rezultat (30) 100
104
12
zbroji 13
13 PC 112
14

112
zbroji 112 100 104 IR 108 25

10 100
10 20 20 104
5 108
30 112

30

Pohrana 4 byte

1G-1
DOHVAT NAREDBE: 0
zbroji 1
S adrese na koju pokazuje PC = 13 112
2
3
prebaci 13 bajta u IR 100
104
12
zbroji 13
13 PC 112
14

112
zbroji 112 100 104 IR 108 25

10 100
10 20 20 104
5 108
30 112

30

UKUPNO:
1.Prijenos 13+4+4+4=25 byte
2.operacija
1G-1
DOHVAT NAREDBE: 0
zbroji 1
PC inkrementiran i pokazuje na 112
2
3
sljedeu naredbu 100
104
12
zbroji 13
26 PC 112
14

112
zbroji 112 112 108 IR 108 25

10 100
10 20 20 104
5 108
30 112

30

Uitavanje 13 byte

1G-1
IZVOENJE NAREDBE: 0
zbroji 1
S adrese 1. op (112) 112
2
3
dohvati njegovu vrijednost (30) 100
104
12
zbroji 13
26 PC 112
14

112
zbroji 112 112 108 IR 108 25

10 100
30 20 20 104
5 108
30 112

30

Dohvat 4 byte

1G-1
IZVOENJE NAREDBE: 0
zbroji 1
S adrese 2. op (108) 112
2
3
dohvati njegovu vrijednost (5) 100
104
12
zbroji 13
26 PC 112
14

112
zbroji 112 112 108 IR 108 25

10 100
30 5 20 104
5 108
30 112

30

Dohvat 4 byte

1G-1
IZVOENJE NAREDBE: 0
zbroji 1
Izvoenje operacije (zbroji) 112
2
3
100
104
12
zbroji 13
26 PC 112
14

112
zbroji 112 112 104 IR 108 25

10 100
30 5 20 104
5 108
30 112

35

Izvoenje operacije 1 ciklus

1G-1
POHRANA REZULTATA: 0
zbroji 1
Na adresu rezultata (112) 112
2
3
pohrani rezultat (35) 100
104
12
zbroji 13
26 PC 112
14

112
zbroji 112 112 108 IR 108 25

10 100
30 5 20 104
5 108
35 112

35

Pohrana 4 byte

1G-1
Zakljuci
Naredba zahtjeva
Dohvat naredbe 13 byte
Dohvat 1. i 2. operand 8 byte
Operacija
Pohrana rezultata 4 byte
Veliki dio vremena potroi se na
dohvat naredbe (13 byte)
Kako poboljati rjeenje?
Zakljuci
Skratiti naredbu
Nepotrebno se rezultat prethodne
naredbe vraa u memoriju i ponovo
dohvaa kao rezultat sljedee
naredbe
Rjeenje
Ne vraati rezultat naredbe u
memoriju nego ga proslijediti
sljedeoj naredbi kao operand
Samo drugi operand dovoditi iz
memorije
Ideja!
0
1
2
3
Procesor
12
13
PC 14

IR 25

op2

op1 op2

rez

1G-1

Memorija
Novo rjeenje
Rezultat i prvi operand uvijek su dostupni u
jednom spremniku, te nije potrebno specificirati
ih u naredbi
Potrebno specificirati samo adresu 2. operanda
8 32
Op. Kod. Adresa operanda 2

Naredba svega 40 bita, odnosno 5 byte

Potrebno dovesti 1. operand u registar


Potrebno spremiti rezultat
Primjer:
Polazni problem:
int op1, op2, op3, rez;
rez = op1 + op2 + op3;

1. Dovedi 1.operand (adresa 100) u registar


2. Zbroji s 2. operandom (adresa 104)
rezultat u registru
3. Zbroji s 3. operandom (adresa 108)
4. Spremi rezultat na adresu 112
0
uitaj 1
100 2
3
4
5
zbroji 6
104 7
8
0 PC 9
10
zbroji 11
IR 12
108
13
14
15
16
spremi 17
112 18
19

10 100
20 104
5 108
0 112

1G-1
0
uitaj 1
100 2
3
4
5
zbroji 6
104 7
8
5 PC 9
10
zbroji 11
uitaj 100 IR 108 12
13
14
15
16
spremi 17
112 18
19

10 100
20 104
5 108
0 112

Uitavanje 5 byte

1G-1
0
uitaj 1
100 2
3
4
5
zbroji 6
104 7
8
5 PC 9
10
zbroji 11
uitaj 100 IR 108 12
13
14
15
16
spremi 17
10 112 18
19

10 100
20 104
5 108
0 112

Uitavanje 4 byte

1G-1
0
uitaj 1
100 2
3
4
5
zbroji 6
104 7
8
10 PC 9
10
zbroji 11
zbroji 104 IR 108 12
13
14
15
16
spremi 17
10 112 18
19

10 100
20 104
5 108
0 112

Uitavanje 5 byte

1G-1
0
uitaj 1
100 2
3
4
5
zbroji 6
104 7
8
10 PC 9
10
zbroji 11
zbroji 104 IR 108 12
13
14
15
16
spremi 17
10 20 112 18
19

10 100
30 20 104
5 108
0 112

Uitavanje 4 byte
Operacija

1G-1
0
uitaj 1
100 2
3
4
5
zbroji 6
104 7
8
15 PC 9
10
zbroji 11
zbroji 108 IR 108 12
13
14
15
16
spremi 17
30 20 112 18
19

10 100
30 20 104
5 108
0 112

Uitavanje 5 byte

1G-1
0
uitaj 1
100 2
3
4
5
zbroji 6
104 7
8
15 PC 9
10
zbroji 11
zbroji 108 IR 108 12
13
14
15
16
spremi 17
30 5 112 18
19

10 100
35 20 104
5 108
0 112

Uitavanje 4 byte
Operacija

1G-1
0
uitaj 1
100 2
3
4
5
zbroji 6
104 7
8
20 PC 9
10
zbroji 11
spremi 112 IR 108 12
13
14
15
16
spremi 17
35 5 112 18
19

10 100
35 20 104
5 108
0 112

Uitavanje 5 byte

1G-1
0
uitaj 1
100 2
3
4
5
zbroji 6
104 7
8
20 PC 9
10
zbroji 11
spremi 112 IR 108 12
13
14
15
16
spremi 17
35 5 112 18
19

10 100
35 20 104
5 108
35 112

Upisivanje 4 byte

1G-1
Rjeenje s akumulatorom

PC

IR

Akumulator
Akumuliraju se uzastopni Acc op2
Rezultati operacija
Usporedba rjeenja
Rjeenje s akumulatorom
Manja naredba (bri dohvat naredbe)
Dohvat samo jednog operanda
Potrebno:
Dohvat naredbe 5 byte
Dohvat 2. operanda 4 byte
Operacija

Vie naredbi za isti posao


potrebno dohvatiti 1. operand
potrebno spremiti rezultat
Usporedba rjeenja
Primjer

Tri adrese Akumulator

Pristup Dohvat naredbe 2 x 13 = 26 4 x 5 = 20


memoriji Dohvat operanada 2 x 2 x 4 = 16 3 x 4 = 12
Pohrana rezultata 2x4=8 1x4=4
Operacija 2x1=2 2x1=2
Nedostatak rjeenja s
akumulatorom
Primjer:
rez=(x+y)*z-(x-y)/k

Proitaj x
Zbroji y
Pomnoi z
Spremi rez1 Rjeenje:
Proitaj x
Oduzmi y
Vie akumulatora odnosno
Podijeli k registara za operande
Spremi rez2
Proitaj rez1
Oduzmi rez2
Spremi rez
Procesor s registrima ope
namjene
PC
Svi operandi se nalaze u registrima
Rezultat se upisuje u registre IR

Potrebno donijeti
R0
U naredbi potrebno specificirati R1
R2
Operaciju R3
Registar gdje je operand 1
Registar gdje je operand 2
Registar gdje je rezultat
RN

Za 32 registra vrijedi:
5 5 5 5
Op. Kod. Registar rezultata Registar operanda 1 Registar operanda 2
Primjer:
Polazni problem:
int op1, op2, op3, rez;
rez = op1 + op2 + op3;

1. Dovedi 1.operand (adresa 100) u registar R0


2. Dovedi 2.operand (adresa 104) u registar R1
3. Dovedi 3.operand (adresa 108) u registar R2
4. Zbroji R0 i R1 i rezultat spremi u R3
5. Zbroji R3 i R2 i rezultat spremi u R3
6. Spremi rezultat iz R3 na adresu 112
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 0 108 u R2
11
zbroji 12
13
IR uitaj R0 100 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 18
rezultat u R3 19
R1 20
R2 spremi 21
R3 u 112 22
R3 23
24

10 100
R31 20 104
5 108
112

1G-1
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 4 108 u R2
11
zbroji 12
13
IR uitaj R0 100 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20
R2 spremi 21
R3 u 112 22
R3 23
24

10 100
R31 20 104
5 108
112
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 4 108 u R2
11
zbroji 12
13
IR uitaj R1 104 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20
R2 spremi 21
R3 u 112 22
R3 23
24

10 100
R31 20 104
5 108
112

1G-1
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 8 108 u R2
11
zbroji 12
13
IR uitaj R1 104 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20 20
R2 spremi 21
R3 u 112 22
R3 23
24

10 100
R31 20 104
5 108
112
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 8 108 u R2
11
zbroji 12
13
IR uitaj R2 108 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20 20
R2 spremi 21
R3 u 112 22
R3 23
24

10 100
R31 20 104
5 108
112

1G-1
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 12 108 u R2
11
zbroji 12
13
IR uitaj R2 108 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20 20
R2 spremi 21
5 R3 u 112 22
R3 23
24

10 100
R31 20 104
5 108
112
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 12 108 u R2
11
zbroji 12
13
IR zbroji R3 R0 R1 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20 20
R2 spremi 21
5 R3 u 112 22
R3 23
24

10 100
R31 20 104
5 108
112

1G-1
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 16 108 u R2
11
zbroji 12
13
IR zbroji R3 R0 R1 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20 20
R2 10 20 spremi 21
5 R3 u 112 22
R3 30 23
24

30 10 100
R31 20 104
5 108
112

1G-1
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 16 108 u R2
11
zbroji 12
13
IR zbroji R3 R3 R2 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20 20
R2 spremi 21
5 R3 u 112 22
R3 30 23
24

10 100
R31 20 104
5 108
112

1G-1
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 20 108 u R2
11
zbroji 12
13
IR zbroji R3 R3 R2 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20 20
R2 30 5 spremi 21
5 R3 u 112 22
R3 35 23
24

35 10 100
R31 20 104
5 108
112

1G-1
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 24 108 u R2
11
zbroji 12
13
IR spremi R3 112 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20 20
R2 spremi 21
5 R3 u 112 22
R3 35 23
24

10 100
R31 20 104
5 108
112

1G-1
0
uitaj 1
100 u R0 2
3
4
uitaj 5
6
104 u R1
7
8
uitaj 9
10
PC 24 108 u R2
11
zbroji 12
13
IR spremi R3 112 R0 i R1
14
rezultat u R3 15
zbroji 16
R3 i R2 17
R0 10 18
rezultat u R3 19
R1 20 20
R2 spremi 21
5 R3 u 112 22
R3 35 23
24

10 100
R31 20 104
5 108
35 112

1G-1
Usporedba rjeenja
Primjer
Tri adrese Akumulator Registri

Pristup Dohvat 2 x 13 = 26 4 x 5 = 20 6 x 4 = 24
memoriji naredbe
Dohvat 2 x 2 x 4 = 16 3 x 4 = 12 3 x 4 = 12
operanada
Pohrana 2x4=8 1x4=4 1x4=4
rezultata
Operacija 2x1=2 2x1=2 2x1=2

Prema ovoj analizi ispada da procesor sa registrima nema


nekakvih prednosti
Prednost je vidljiva na stvarnim primjerima
Primjer
Primjer:
rez=(x+y)*z-(x-y)/k

Akumulator Procesor s registrima


Proitaj x 9 Upii x u R1 8
Zbroji y 10 Upii y u R2 8
Pomnoi z 10 Upii z u R3 8
Spremi rez1 9 Upii k u R4 8
Proitaj x 9 Zbroji R1 i R2 u R5 5
Oduzmi y 10 Pomnoi R5 i R3 u R5 5
Podijeli k 10 Oduzmi R1 i R2 u R6 5
Spremi rez2 9 Podijeli R6 i R4 u R6 5
Proitaj rez1 9 Oduzmi R5 i R6 u R5 5
Oduzmi rez2 10 Spremi R5 u rez 8
Spremi rez 9
UKUPNO 104 65