Professional Documents
Culture Documents
Dio 2 ISA
Dio 2 ISA
Slijedi projektiranje procesora temeljenog na postavljenom modelu. Kao prvi korak rezimirati
će se polazne pretpostavke:
• osnovni koncept je RISC temeljen na spremnicima opće namjene
• sve aritmetičke i logičke naredbe operande nalaze u spremnicima opće namjene te
u njih pohranjuju rezultat operacije
• prijenos operanada iz memorije u spremnike obavlja se pomoću load naredbe,
odnosno pohrana rezultata iz spremnika u memoriju pomoću store naredbe,
• Radi jednostavnosti sve naredbe su iste dužine.
Temeljem postavljenih polaznih pretpostavki može se pristupiti konkretnom definiranju,
specifikaciji gradivnih elemenata računala.
Veličina memorije: Broj memorijskih lokacija koje procesor može adresirati ovisi trenutnom
stanju tehnologije tako da današnji procesori adresiraju minimalno 4G memorije. Neka se
tako odabere i za projektirani procesor. Slijedi da su adrese 32 bitovne.
U memoriju se upisuju naredbe i podaci. Podaci mogu biti veličine 8, 16, 32 i 64 bita (char,
int, float, double). Radi bolje iskoristivosti dobro je memoriju organizirati sukladno
najmanjem podatku, odnosno da su lokacije 8 bitovne.
Programsko brojilo (PC) je spremnik u kojem je upisana adresa sljedeće naredbe koju
procesor treba izvesti. Ako procesor može adresirati 4G memorijskih lokacija slijedi da
programsko brojilo mora biti 32 bita.
Spremnici opće namjene koriste se za privremenu pohranu operanada i rezultata aritmetičkih
i logičkih operacije. Broj spremnika ovisi o tehnološkim mogućnostima (cijeni izvedbe),
zahtjevima programera te dodatnim zahtjevima vezanim uz učinkovitost sustava. Veći broj
spremnika opće namjene omogućava programerima privremenu pohranu većeg broja varijabli
ali je s druge strane skuplje rješenje, a i ima utjecaja na učinkovitost pri nekim funkcijama
operacijskog sustava, konkretno izmjene konteksta. U praksi se koristi od 8 pa sve do 128
spremnika opće namjene. Neka se za ovaj slučaj odabere kompromisno rješenje od 32
spremnika opće namjene.
U spremnike opće namjene, kako je već spomenuto, pohranjuju se operandi i rezultati
aritmetičkih i logičkih operacija. Neka procesor radi samo s cjelobrojnim podacima (radi
kasnije jednostavnije sklopovske realizacije). Cjelobrojni podaci su 32 bitovni, pa je najbolje i
da spremnici opće namjene budu 32 bita.
Instrukcijski spremnik (IR) privremeno pohranjuje naredbu koja se trenutno izvodi.
Njegova veličina ovisi o formatu naredbe. Kako se radi o RISC računalu neka bude podržano
do 32 naredbe, odnosno za operacijski kod potrebno je 5 bita. Kako ima 32 spremnika za
adresiranje svakog spremnika potrebno je također 5 bita, odnosno za rezultat i dva operanda
15 bita. Ukupno s operacijskim kodom za aritmetičku i logičku naredbu potrebno je 20 bita.
Naravno, ovo se odnosi samo na direktno adresiranje spremnika. Ukoliko se primjene i drugi
adresni modovi, npr. neposredno adresiranje potrebno je imati dodatnog mjesta za konstantu.
Temeljem navedenog može se zadati da naredba bude fiksne veličine, i to 32 bita. Ovakav
zahtjev na fiksnu veličinu naredbe niz prednosti kod sklopovske realizacije procesora.
Nakon provedenih razmatranja predloženo rješenje procesora prikazano je na slici:
Izvode se isključivo nad sadržajima spremnika procesora. Obuhvaćaju dva operanda i rezultat.
Jedan operand je uvijek varijabla, dok drugi operand može biti varijabla ili konstanta.
Primjer:
ADD R3,R7,R11
Konstanta c1 ograničena je na 17 bita i kako može poprimiti i negativnu vrijednost njen iznos
ograničen je na -216 do 216-1.
Primjer:
ADDI R3,R7,47
31 2726 2221 1716 0
01100000 1 1 00 11100 0 0000 0 000 1 01111
ili
ADDI R3,R7,-47
31 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 R7
31 16 0
1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 IR
predznak
te se dobije:
31 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 R7
31 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 c2
Primjer:
SUB R3,R7,R11
Primjer:
AND R3,R7,R11
ili
ANDI R3,R7,-47
Primjer:
OR R3,R7,R11
Konstanta c1 ograničena je na 17
Primjer:
ORI R3,R7,47
ili
ORI R3,R7,-47
R[ra] = M[adr]
gdje su ra spremnik u koji se podatak upisuje,
adr je adresa sa koje se podatak upisuje u spremnik.
Mogući format naredbe bio bi:
odakle slijedi da adresa može biti samo 22 bita, odnosno da je moguće adresirati sveg 4MB
memorije, što definitivno nije zadovoljavajuće.
Moguća rješenja su:
• Proširiti naredbu za dodatnih 32 bita
adresa
+
31 0
R[rb]
Ponekad je zgodno imati mogućnost upisa direktno s adrese bez proračuna adrese uz
ograničenja na adresu kojoj se direktno pristupa. Moguća rješenja su:
31 2726 2221 0
00010 ra c2
31 2726 2221 0
op.kod ra c2
31 2726 0
op.kod C3
Sva apsolutna grananja imaju isti operacijski kod 25 te se tip grananja određuje na osnovu a, b
i c bitova na način:
a b c
0 0 0 bezuvjetno BA
0 0 1 pozitivno BAP
0 1 0 negativno BAM
0 1 1 nula BAZ
1 0 0 raz. nula BANZ
2.1.4 Primjeri prevođenja iz Ca u strojni jezik
Rješenje:
adrese:
i = 300
j = 304
k = 308
x = 312
0 LA R0, 300 ; bazna adresa o R0
4 LD R1, R0, 0 ; i u R1
8 LD R2, R0, 4 ; j u R2
12 SUB R3, R1, R2 ;k=i–j
16 ADDI R3, R3, -14 ; k = k -14
20 LD R4, R0, 12 ; x u R4
24 SUB R5, R4, R3 ; u R5 x – k, računa se 0 > x – k
28 BRMI R5, 8 ; granaj se ako je x – k negativno, preskoči 3 naredbe
32 BRZ R5, 4 ; granaj se ako je x – k = 0, preskoči 2 naredbe
36 LA R3, 0 ; ako je x – k > 0 tada je k = 0
40 BR 4 ; preskoči k = x, jednu naredbu
44 ADDI R3, R4, 0 ;k=x
48 ST R3, R0, 8 ; spremi k
adrese:
i = 300
j = 304
k = 308
0 LA R0, 300 ; bazna adresa o R0
4 LD R1, R0, 0 ; i u R1
8 LD R2, R0, 4 ; j u R2
12 LD R3, R0, 8 ; k u R3
; računa se 0 > j + i – k + 15
16 ADD R4, R1, R2 ; rez = i + j
20 SUB R4, R4, R3 ; rez = rez - k
24 ADDI R4, R4, 14 ; rez = rez +15
28 BRMI R4, 8 ; granaj se ako je rez negativno, preskoči 3 naredbe
32 BRZ R4, 4 ; granaj se ako je rez = 0 preskoči 2 naredbe
36 LA R3, 0 ; ako je rez > 0 tada je k = 0
40 BR 4 ; preskoči jednu naredbu
44 ADDI R3, R1, R1 ;k=i+j
48 ST R3, R0, 8 ; spremi k