Professional Documents
Culture Documents
02 FRISC Arhitektura
02 FRISC Arhitektura
Dodatni zahtjev
• Sustav mora dozvoljavati moguća kasnija proširenja i za neke
druge aplikacije (jedan sustav za više primjena-efikasnost)
Računalni
sustav
Inicijalizacija
sustava
Upravljanje Korisničko
radom sustava sučelje
Upravljanje
radom
sustava
Komunikacija s
Očitanje Upravljanje
korisničkim
temperature klimom
sučeljem
Željena temperatura
Klima uključena
Korisničko
sučelje
Komunikacija s
Očitanje tipaka Prikaz na LCD upravljačkim
dijelom sustava
1200 1122
1000
800 Ugradbena
računala
600 Stolna
računala
400 Superračunala
200 131
5
0
2002
• Sljedeći zadatak:
• Projektirati ugradbeni računalni sustav
Računalo
Procesor
Ulaz
Put Izlaz
Upravljačka jedinica podataka Memorija
(control) (datapath)
Računalo
Procesor
Ulaz
Put Izlaz
Upravljačka jedinica podataka Memorija
(control) (datapath)
Računalo
Procesor
Ulaz
Put Izlaz
Upravljačka jedinica podataka Memorija
(control) (datapath)
Računalo
Procesor
Ulaz
Put Izlaz
Upravljačka jedinica podataka Memorija
(control) (datapath)
Računalo
Procesor
Ulaz
Put Izlaz
Upravljačka jedinica podataka Memorija
(control) (datapath)
Računalo
Procesor
Ulaz
Put Izlaz
Upravljačka jedinica podataka Memorija
(control) (datapath)
Memorija
Upravljačka jedinica
ADD A,B,X
A Sklop za
B obradu
podataka
X
A Sklop za
B obradu
podataka
X
Memorija
Upravljačka jedinica
A Sklop za
B obradu
podataka
X
Memorija
Upravljačka jedinica
A
A Sklop za
B obradu
podataka
X
Memorija
Upravljačka jedinica
A
A Sklop za
+ obradu
B
podataka
X B
Memorija
Upravljačka jedinica
A
A Sklop za
+ obradu
B
podataka
X B
• Mikroarhitektura
Memorija Procesor
Sabirnica
Memorijski
Procesor
podsustav
Memorijski
podsustav
RD
WR Upravljačka sabirnica
SIZE
Podatkovna sabirnica
Mem.
čip
• Adresni dekoder
• Služi za odabir pojedinog memorijskog čipa prilikom prijenosa traženog
podatka
• Odabir se radi na temelju adresnih i upravljačkih signala
• Izveden kao jednostavni kombinacijski sklop
4 5 6 7
8 9 10 11
STAVI UZMI
100
101
102 103 SP
103
Kod uzimanja se
prvo podatak UZMI
uzima s mjesta
koje pokazuje SP 100
101 34
102 101 SP
12
103
Kod uzimanja se
prvo podatak UZMI
uzima s mjesta
koje pokazuje SP 100
101 34
102 101 SP
12
103
UZMI
100
101
102 102
103 SP
12
103
Memorija
Upravljačka jedinica
A
A Sklop za
+ obradu
B
X B podataka
Memorija
Upravljačka jedinica
A
A Sklop za
+ obradu
B
X B podataka
Memorija
Upravljačka jedinica
A
A Sklop za
+ obradu
B
X B podataka
• Stogovne arhitekture
• Akumulatorske arhitekture
• Arhitekture registar-memorija
ALU
...
B
A
X
...
Memorija
TOS
Acc
• Ako postoji, drugi operand se čita
iz memorije
B
A
X
...
B
A
X
...
Reg-mem arhitekture
+ Jednostavan pristup podatcima u memoriji
- Dodatan pristup memoriji pri izvođenju naredaba, vrijeme izvođenja
varira
Load-store arhitekture
+ Brzo izvođenje, jednostavan format naredaba, jednostavno generiranje
kôda, jednostavnost protočne strukture, uniformno vrijeme izvođenja
- Veći broj naredaba u programu zbog zasebnih učitavanja
podataka iz mem.
• Akumulatorska
• EDSAC
• Registarsko-memorijska
• Motorola 68000 i Intel 80x86 (imaju karakeristike reg-mem i reg-reg)
• Registarsko-registarska (load-store)
• ARM, MIPS, SPARC
ALU
• RISC procesor
FF ... PC
100 ADD 101
101 SUB
102 LOAD
103 STORE
104 ...
>>>>
Aritmetičko-logičke naredbe
Memorijske naredbe
• Adresu zadajemo kao običan broj (pozitivni cijeli broj), što znači
da moramo poznavati položaj memorijske lokacije kojoj želimo
pristupati
Upravljačke naredbe
Ne ?
© Kovač, Basch, FER, Zagreb 116
Upravljačke naredbe
• Ne možemo ostvariti uvjetno grananje:
if (Uvjet) then
Naredba_1 Izračunaj Uvjet
else
Naredba_2
endif Ne
Uvjet istinit ?
Da
kako
Naredba_1
ostvariti
bezuvjetni
skok
? Naredba_2
JP adresa
JP_uvjet adresa
SR ... Z V C N
>>>>
M Minus N=1
P Plus (Positive) N=0
• EQ i NE su ekvivalentni uvjetima Z i NZ, tj. oni su samo drugačiji
način pisanja tih uvjeta
• M i P su ekvivalentni uvjetima N i NN, tj. oni su samo drugačiji način
pisanja tih uvjeta
• ULT i UGE su također uvjeti koji su ekvivalentni uvjetima
C i NC
Ne
SUB R2,R2,R2 Pobriši R2
DALJE ...
DALJE ...
nastavak
ADD R0,R1,R2
JP_C BRISI
JP DALJE
BRISI SUB R2,R2,R2
DALJE ...
JP_C BRISI Da
Ima li prijenosa ?
DALJE ...
© Kovač, Basch, FER, Zagreb 136
Upravljačke naredbe - primjeri
Primjer uvjetnog i bezuvjetnog grananja - naredba if-else:
Zbrojiti registre R0 i R1 i rezultat staviti u R2. Ako dođe do prijenosa
treba na memorijsku lokaciju REZ upisati 0, a inače treba upisati R2.
Rješenje:
izračunaj i Izračunaj Uvjet
ADD R0,R1,R2
ispitaj uvjet
JP_C BRISI Da
Ima li prijenosa ?
DALJE ...
© Kovač, Basch, FER, Zagreb 137
Upravljačke naredbe - primjeri
Primjer uvjetnog i bezuvjetnog grananja - naredba if-else:
Zbrojiti registre R0 i R1 i rezultat staviti u R2. Ako dođe do prijenosa
treba na memorijsku lokaciju REZ upisati 0, a inače treba upisati R2.
Rješenje:
izračunaj i Izračunaj Uvjet
ADD R0,R1,R2
ispitaj uvjet
JP_C BRISI Da
Ima li prijenosa ?
Rješenje:
Program ćemo temeljiti na dijagramu toka. U programu ćemo
vidjeti većinu onoga što smo do sada naučili:
• AL-naredbe,
• memorijske naredbe,
• rad s konstantama,
• naredbu uvjetnog i bezuvjetnog skoka.
Da
Brojač jednak 0 ?
Ne
Umnožak = Umnožak + B
Brojač = Brojač - 1
Dohvati A iz memorije
Dohvati B iz memorije
Brojač = A
Umnožak = 0
Da
Brojač jednak 0 ?
Ne
Umnožak = Umnožak + B
Brojač = Brojač - 1
Dohvati A iz memorije
Dohvati B iz memorije
Brojač = A
Umnožak = 0
Da
Brojač jednak 0 ?
Ne
Umnožak = Umnožak + B
Brojač = Brojač - 1
Dohvati A iz memorije
Dohvati B iz memorije
Brojač = A
Umnožak = 0
Da
Brojač jednak 0 ?
Ne
Umnožak = Umnožak + B
Brojač = Brojač - 1
Dohvati A iz memorije
Dohvati B iz memorije
Brojač = A
Umnožak = 0
Da
Brojač jednak 0 ?
Ne
Umnožak = Umnožak + B
Brojač = Brojač - 1
Dohvati A iz memorije
Dohvati B iz memorije
Brojač = A
Umnožak = 0
Konstante 0 i 1 za kasnije
korištenje u programu Da
Brojač jednak 0 ?
Ne
Umnožak = Umnožak + B
Brojač = Brojač - 1
Da
Brojač jednak 0 ?
Ne
Umnožak = Umnožak + B
Brojač = Brojač - 1
Ne
Umnožak = Umnožak + B
Brojač = Brojač - 1
Umnožak = Umnožak + B
Brojač = Brojač - 1
Umnožak = Umnožak + B
Brojač = Brojač - 1
Umnožak = Umnožak + B
Brojač = Brojač - 1
KRAJ STORE R3, (300)
...
Spremi Umnožak u memoriju
Umnožak = Umnožak + B
Brojač = Brojač - 1
KRAJ STORE R3, (300)
...
NULA DW 0 Spremi Umnožak u memoriju
JEDAN DW 1
© Kovač, Basch, FER, Zagreb 152
LOAD R0, (100) ; R0 ≡ A
LOAD R1, (200) ; R1 ≡ B
OR R0, R0, R2 ; R2 ≡ Brojač := A
LOAD R3, (400) ; R3 ≡ Umnožak := 0
LOAD R4, (400) ; R4 ≡ 0
LOAD R5, (410) ; R5 ≡ 1
Umnožak = Umnožak + B
Brojač = Brojač - 1
KRAJ STORE R3, (300)
...
400 DW 0 Spremi Umnožak u memoriju
410 DW 1
© Kovač, Basch, FER, Zagreb 153
Strojni kôd naredaba
Općenito
• Ponovimo:
• procesor svaku naredbu mora dohvatiti, dekodirati i izvesti
• Prednosti:
• Jedno čitanje iz memorije dohvaća jednu cijelu naredbu
• Jednostavnost i pravilnost arhitekture (pri dohvaćanju i dekodiranju
naredbe)
• Nedostatak:
• Ako procesor ima velik broj naredaba, načina adresiranja, registara itd.,
onda širina naredbe može biti nedovoljna, ili može ograničavati skup
naredaba, ili ograničava širine adresa i podataka u naredbi
• ovo ograničenje je naročito dolazilo do izražaja prije, dok je širina
procesorske riječi bila tipično samo jedan bajt
• Prednost:
• Nema ograničenja na broj naredaba i njihovu složenost
• Nedostatci:
• Za dohvat naredbe potrebno je više čitanja iz memorije
• Komplicirana arhitektura i dekodiranje (nakon dohvata prve riječi
strojnog kôda raspoznaje se koliko još riječi treba dohvatiti)
>>>>
• Primjeri korištenja:
ADD R1, R2, R3 ; R1+R2->R3
XOR R3, R7, R3 ; R3 xor R7->R3
• Primjeri korištenja:
LOAD R3, (100) ; podatak iz memorije s adrese 100 spremi u R3
STORE R5, (28) ; podatak iz R5 spremi na adresu 28 u memoriji
• Primjeri korištenja:
JP 100 ; bezuvjetno skoči na naredbu na adresi 100
JP_NZ 100 ; ako zastavica Z nije postavljena, onda skoči na adresu 100
>>>>
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
Postoji spojni put između registra DR i općih registara jer tim putom
prolaze podatci prilikom izvođenja naredaba LOAD i STORE
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
DR
Data
bus
IR
REG
PC
SR
ALU Address
AR
bus
31-27 26 25-0
Rješenje:
ADD R1, 55, R0 ; prvi dio izraza
XOR R2, 4ABC, R3 ; drugi dio izraza
SUB R0, R3, R0 ; razliku spremi u R0
>>>>
Komentar:
Prednosti u odnosu na prethodni program su očite:
• kraći program (3 naredbe prema 5)
• nema dodatnih podataka u memoriji (2 podatka)
• brže izvođenje (3 ciklusa prema 7 - o ciklusima kasnije)
© Kovač, Basch, FER, Zagreb 215
Proširenja AL-naredaba - proširenje broja
• Aritmetičko-logička jedinica je 32-bitna pa, prema tome,
očekuje 32-bitne operande
• Kasnije ćemo vidjeti kako se ove naredbe koriste i kako točno rade
0 niža poluriječ R0
0 viša poluriječ R1
>>>>
© Kovač, Basch, FER, Zagreb 226
Proširenja AL-naredaba - primjer
Rješenje:
• Registarski izlazi A i B
dovode se na ulaze ALU
C
• Izlaz iz ALU dovodi se na
registarski ulaz C
REG
A B
SR
ALU
SR
ALU
SR_wr
Upravljačka jedinica generira
C_sel signale kojima upravlja
C C_wr izvođenjem AL-naredaba:
• A_sel odabire registar koji
REG A_sel će se pojaviti na izlazu A
B_sel
• B_sel odabire registar koji
A B će se pojaviti na izlazu B
SR
Oper_sel
ALU
SR_wr
• C_sel odabire registar koji
C_sel će se napuniti vrijednošću
C C_wr prisutnom na ulazu C
• C_wr zadaje trenutak
REG A_sel upisa u registar odabran
B_sel sa C_sel
A B
SR
Oper_sel
ALU
SR_wr
• Oper_sel zadaje jedinici
C_sel ALU koju operaciju treba
C C_wr izvesti
• SR_wr zadaje trenutak
REG A_sel upisa novih vrijednosti
B_sel zastavica u SR
A B
SR
Oper_sel
ALU
EXT IR
A B • Tijekom dekodiranja i
izvođenja strojni kôd se
SR
nalazi u naredbenom
registru IR
ALU
EXT IR
SR
ALU
EXT IR
ALU
MOVE 32, R1
• src - izvor podatka; može biti: SR, R0-R7 ili 20-bitni podatak koji
se predznačno proširuje na 32 bita
• dest - odredište podatka; može biti: SR ili R0-R7
>>>>
© Kovač, Basch, FER, Zagreb 248
Uvođenje registarskih naredaba - primjer
<<<<
BR_9ABCDEF0 DW 9ABCDEF0
>>>>
>>>>
Upravljačka jedinica
Upravljačka jedinica
ALU
Upravljačka jedinica
Upravljačka jedinica
EXT IR
• Proširimo put podataka i
za slučaj kad je izvor
C podataka broj
• Koriste se isti sklopovi
REG kao i kod AL-naredaba
• IR je spojen na EXT
A B
koji se preko
multipleksora dovodi
na drugi ulaz od ALU
SR
ALU
Upravljačka jedinica
EXT IR
• Ovisno o izvoru podataka
bira se izlaz iz EXT ili izlaz
C B iz skupa općih registara
• ALU ne obavlja operaciju
REG nego samo proslijeđuje
svoj drugi operand na izlaz
koji se dalje vodi u SR ili
A B opći registar
SR
ALU
. . . . .
. . . . .
FFFF FFFD
FFFF FFFE
FFFF FFFF
. . . . .
. . . . .
koji se
ne mogu
• što ukupno daje 220 lokacija izravno
(tj. jedan MB) adresirati
• Moguća rješenja
• Proširiti strojni kôd (nekih) naredaba tako da zauzimaju dvije riječi
i u drugu riječ staviti 32-bitnu adresu
• Upotrijebiti jedan od općih registara za adresiranje
Rješenje:
LOAD R2, (200) ; Dohvati prvi podatak.
LOAD R0, (A_300000) ; Stavi broj 300000 u R0 i s
LOAD R3, (R0) ; njim adresiraj drugi podatak.
STORE R3, (200)
STORE R2, (R0)
; U memoriji na adresi A_300000 mora biti upisan
; broj 300000 koji ćemo koristiti kao adresu:
A_300000 DW 300000 ; Služi kao adresa za drugi podatak
...
200 DW 1234 ; Prvi podatak.
...
300000 DW 2468 ; Drugi podatak.
© Kovač, Basch, FER, Zagreb 272
Proširenje memorijskih nar. - strojni kôd
• U drugom obliku nam ostaje neiskorištenih 20 najnižih bitova:
operacijski kôd 1 dest/src adrreg ---
1000
16-bitni podatak
1000 1. podatak 8 1001
u nizu bajta 1002 8-bitni podatak
1008 2. podatak 8 1003 - prazno - ne koristi se
u nizu bajta 1004
1010 3. podatak 1005
8 32-bitni podatak
u nizu bajta 1006
1007
.....
; kopiraj bajt R0
1000
; iz 3. u 1. strukturu
1001
LOADB R5, (R3+2)
STOREB R5, (R1+2) R0+2 1002
1003 -
; kopiraj riječ R0+4 1004
; iz 1. u 3. strukturu 1005
LOAD R5, (R1+4) 1006
STORE R5, (R3+4) 1007
SP
1234 SP 1234
2288 2288
PUSH R0
PUSH R1
R1 SP
POP R0
R0
POP R1
Upravljačka jedinica
R7±
±4
A B
ALU
AR
A[0..31]
Upravljačka jedinica
R7±
±4
A B
ALU
AR
A[0..31]
A[0..31]
izlaz
© Kovač, Basch, FER, Zagreb 295
Proširenje memorijskih nar. - put podataka
• Za adresiranje pomoću
Upravljačka jedinica
adresnog registra i odmaka
u naredbama LOAD i STORE,
treba izračunati adresu i
DR
poslati je u AR:
D[0..31]
C • Prvi operand (adresni
registar) dovodi se na
EXT IR
ulaz od ALU iz općih
REG registara (izlaz A)
R7±
±4 • Drugi operand (odmak)
A B dovodi se na ALU iz
sklopa za predznačno
proširenje (EXT)
• ALU zbraja dijelove
ALU
AR
A[0..31]
adrese koja se šalje u AR
© Kovač, Basch, FER, Zagreb 296
Proširenje memorijskih nar. - put podataka
• U naredbama PUSH i POP za
Upravljačka jedinica
adresiranje se koristi R7
• R7 se povećava ili
DR smanjuje za 4 na temelju
upravljačkog signala
D[0..31]
C R7±4
EXT IR • R7 se dovodi u AR kroz
REG ALU koja tada samo
propušta svoj prvi
R7±
±4 operand na izlaz i ne
A R7 B izvodi nikakvu operaciju
ALU
AR
A[0..31]
Upravljačka jedinica
ALU
AR
A[0..31]
Upravljačka jedinica
R7±
±4
A B
ALU
AR
A[0..31]
• Nepraktično je:
• za skok trebaju dvije naredbe i jedan slobodni registar
• za skok treba dodatna memorijska lokacija u kojoj je adresa skoka
(praktično je da je ova lokacija bude negdje unutar memorije koja
se može adresirati s 20 bitova, jer inače i nju moramo dohvaćati
indirektno preko nekog drugog registra)
• Dodatna nepraktičnost: ne
možemo koristiti labelu za skok
(labele povećavaju čitljivost)
...
JP 2100000 • Također treba znati adresu na koju
želimo skočiti (Znamo li je?
...
Teorijski znamo, ali u praksi NE -
... zato što obično ne vodimo računa
odredište skoka 210000C na kojim adresama se nalaze
... naredbe)
>>>>
adresa
od AND
SP
adresa adresa
od XOR SP od XOR
... SP ... ...
RETN
RETN_uvjet
• bitovi int i i/n određuju radi li se o naredbi RET, RETI ili RETN:
• ako je int=0, onda se radi o naredbi RET
• ako je int=1, onda bit i/n znači:
• ako je i/n=0, onda se radi o naredbi RETI
• ako je i/n=1, onda se radi o naredbi RETN
HALT_uvjet
HALT
A[0..31]
ALU
AR
A[0..31]
ALU
AR
DR
EXT IR D[0..31]
REG
4
+
R7±
±4
A B
PC
SR
A[0..31]
ALU
AR
© Kovač, Basch, FER, Zagreb 340
Popis naredaba procesora FRISC
• Nakon definiranja strojnih kôdova i proširivanja imamo sljedeće
naredbe:
Aritmetičko-logičke naredbe: ADD, SUB, ADC, SBC, CMP, AND, OR,
XOR, SHL, SHR, ASHR, ROTL, ROTR
Sintaksa: RET_uvjet
RETI_uvjet
RETN_uvjet
HALT_uvjet
• Procesorska adresiranja:
• odnose se na različite načine na koje procesor adresira podatke
prilikom izvođenja naredaba
• međusobno se raspoznaju po strojnom kôdu naredbe
• Primjeri:
ADD R0, %D 12, R2
MOVE 200, R3
ROTL R2, ZA_TRI, R2
• Napomene:
• u jednoj naredbi svaki operand može imati svoje adresiranje
• umjesto broja može se pisati i labela (ZA_TRI)
• Napomene:
• u memorijskom naredbama adresa se piše u zagradama, a u
upravljačkim naredbama adresa se piše bez zagrada
• umjesto broja može se pisati i labela (POTPROG)
• Primjeri:
JR 1200
JR PETLJA
• Primjeri:
JP_CC (R0)
CALL (R6)
• Primjeri:
• Napomene:
• U zadnjem primjeru "STORE R5,(R6)", ne radi se o
registarskom indirektnom adresiranju iako nema odmaka.
• Memorijske naredbe LOAD/STORE uvijek koriste registarsko
indirektno adresiranje s odmakom.
• Odmak je u ovoj naredbi jednak ništici pa ga se mora pisati, ali u
strojnom kôdu ništica je zapisana kao odmak. Pravi zapis naredbe
bi bio "STORE R5,(R6+0)".
• Odmak se često naziva i pomakom, ali tako se naziva i operacija
pomicanja bitova (shift) pa ćemo radije koristiti naziv odmak koji
je bliži engleskom izvorniku offset ili displacement
• Primjeri:
PUSH R5
POP R6