You are on page 1of 4

0110100111110110 16bit

2^16 razlicitih adresa, tj. 2^16 lokacija u memoriji moze da se referencira pomocu
ovih 16 bita
2^16 = 64*1024
ako je memorijska lokacija velicine 1B tj. 8bita, to znaci da sa ovih 16bita adrese
mozemo da alociramo 64*1024B = 64 KB memorije

1B = 8b
1KB = 1024B
1MB = 1024KB = 2^20B
1GB = 1024MB = 2^30B
1TB = 1024GB = 2^40B
1PT = 1024TB = 2^50B...

Primer dvoadresne instrukcije duzine 16bita, ciji je operacioni kod duzine 6bita, a
koristi 5bitne adrese.
110110 01011 01000
OPKOD adr1 adr2

Ovako projektovana instrukcija moze da ima 2^6 razlicitih instrukcija. Adresa moze
da referencira na 2^5 razlicitih vrednosti tj. lokacija u memoriji.

void dodaj(int* a, int b){


*a += b;
}
poziv metode u C-u:
int n = 5;
dodaj(&n, 10);
//sada je n = 15

Navesti sve mogucnosti za OPKOD i adresu jednoadresnih instrukcije duzine 32 bita

32bit
OPKOD ADR1
1b 31b
2b 30b
...
31b 1b

Sve mogucnosti dvoadresni instrukcija duzine 36 bita, ako je opkod duzine 5bita.
--------36bit-------
OPKOD ADR1 ADR2
5b 1b 30b
5b 2b 29b
...
5b 30b 1b
OOAAABBB

dvoadresna instrukcije:
O - bit operacionog koda
A - bit prve adrese
B - bit druge adrese

primer:
00 110 010
01...
10...
11...

posto je opkod 2 bita, moze 2^2 razlicitih instrukcijaAKO.

Ukoliko zelimo da u istom skupu projektovanih instrukcija imamo i jednoadresne


instrukcije na primer, tada jedan pocetak(jedna kombinacija prva dva bita) mora da
znaci da je u pitanju jednoadresna instrukcija.

PROSIRENJE OPERACIONOG KODA:


OOOOO BBB

U ovom slucaju, mozemo da imamo najvise 3 dvoadresne, na primer opkodovi 00...


01... i 10.... dok npr. 11... moramod a rezervisemo za pocetak jednoadresnih
instrukcija.

Opkodovi svih jednoadresnih instrukcija:


11000
11001
11010
11011
11100
11101
11110
11111

sada imamo 2^3 jednoadresnih instrukcija

Data je 16bit instrukcija koja podrzava jednoadresne, dvoaresne i troadresne


instrukcije, sve su 4bit, ako se koriste sve, max broj troadresnih?

-------16bit-------
OPKOD ADR1 ADR2 ADR3
4bit 4bit 4bit 4bit

2^4 troadresnih kada NE BI POSTOJALE DVOADRESNE I JEDNOADRESNE


0000
0001
...
1101
1110 - npr. ovo rezervisemo za dvoadresne
1111 - npr. ovo rezervisemo za jednoadresne

2^4 - 1 - 1 = 14
Neka je dat racunar sa instrukcijama duzine 16bita i adresama duzine 4bita.
prikazati prosirenje OPkoda tako da moze da podrzi:
15 troadresnih
14 dvoadresnih
31 jednoadesnih
16 bez adrese

------16bit------
OPKOD ADR1 ADR2 ADR3
4bit 4bit 4bit 4bit
OPKODOVI ZA TROADRESNE:
0000
0001
0010
...
1110

OPKODOVI ZA DVOADRESNE
11110000
11110001
...
11111101

OPKODOVI JEDNOADRESNIH
111111100000
111111100001
...
111111101111
111111110000
111111110001
...
111111111110

OPKODOVI INSTRUKCIJA BEZ ADRESE


1111111111110000
1111111111110001
...
1111111111111111

Projektovati prosireni OPKOD tako da se unutar 36bit instrukcije, moze koristiti:


7 instrucija s dve 15bit adrese i jednim trobitnim brojem registra
500 instrukcija s jednom 15bitnom adresom i jednim trobitnim brojem registra
40 insturkcija bez adrese ili registra

------36bit--------
OPKOD ADR1 ADR2 BR
3bit 15bit 15bit 3bit

OPKOD dvoadresnih
000
001
010
011
100
101
110

OPKOD jednoadresnih
111000000000000000
111000000000000001
...
111000000111110011

499 1
249 1
124 0
62 0
31 1
15 1
7 1
3 1
1 1
0

OPKOD INSTR. BEZ ADRESE


111000000111110100000000000000000000
111000000111110100000000000000000001
...
111000000111110100000000000000100111

39 1
19 1
9 1
4 0
2 0
1 1
0

Dat racunar 16bit instrukcije i 6bit adrese. Neke imaju 1 adresu, dok druge imaju
2. N dvoadresnih instrukcija, koji je maksimalan broj jednoadresnih instrukcija?

------16bit------
OPKOD ADR1 ADR2
4bit 6bit 6bit
0000
0001
...

(16-N) * 2^6

You might also like