You are on page 1of 19

Pojednostavljeni model

mikroprocesora RISC
arhitekture

Computer Systems Design and Architecture


Heuring, Jordan

Jednostavni RISC Simple RISC


Programerski model raunala
31

R0

0
.
.

R31

.
.
31

31

PC
IR

CPU
32 32-bitna registra ope
namjene
programsko brojilo PC
instrukcijski registar IR

232-1

Radna Memorija
Big-Endian Byte Ordering
kapacitet 232 byte
pristup 32-bitni 4 byte odjednom
Load/Store arhitektura: pristup memoriji
iskljuivo pomou load i store naredbi

SRISC Osnovne grupe formata instrukcija

31

27

op

1.
31

27

op

2.
31

3.

22

1.
2.
3.

c1
22

ra
27

op

ra
17

22

ra

rb

c1
17

rb

12

rc

c1

Operacijski kod, jedan spremnik i konstanta


Operacijski kod, dva spremnika i konstanta
Operacijski kod, tri spremnika i konstanta

SRISC ISA (Instruction Set Architecture)


Instrukcije za pristup memoriji

upis u registre (load):


ld, ldr, la, lar

upis u memoriju iz registra (store): st, str


Naredbe za grananje

uvjetno i bezuvjetno grananje na instrukciju ija je adresa u


specificiranom registru: br, brl
Aritmetike i Logike instrukcije

aritmetike:
add, addi, sub, neg

logike: and, andi, or, osi, not

posmak: shr, sha, shl, shc


Posebne instrukcije

bez operanada: nop, stop

31

22

22

27

31

22

17

ra

(ne koristi se)


12

rb

rc

brl

add, sub, and, or


0

count
5

c3

(ne koristi se)

shr, shra

shl, shc

00000

27

op

8.

17

ra

31

br

ne koristi se

c3

22

op

(ne koristi se) cond

17

rb

c3

rc

22

ra
27

(ne koristi se) cond

12

rb

27

op
31

rc

neg, not

c3
12

rb

27

op
31

rc
17

ra

ne koristi se
12

rb

22

op

ldr, str, lar

12

rc

17

ne koristi se

31

6.

17

ne koristi se

27

op

5.

22

ra

31

ld, st, la, addi,


andi, ori

c1

27

op

4.

c2

ra

31

3.

7.

rb

27

op

2.

17

ra

31

I N S T R U K C I J E

22

op

1.

F O R M A T

SRISC 8 formata instrukcije

27

ne koristi se

nop, stop

SRISC instrukcije za pristup memoriji


Iskljuivo load i store instrukcije slue dohvatu i pohrani
operanada u i iz memorije

load instrukcije: ld, ldr, la, lar

store instrukcije: st, str


31

27

22

op

17

ra

rb

c2

Prvi format koriste:


Instrukcija

op

Znaenje

Nain adresiranja

ld ra, c2

R[ra] = M[c2]

direktno adresiranje

ld ra, c2(rb)

R[ra] = M[c2+R[rb]]

indirektno adresiranje (rb<>0)

st ra, c2

M[c2] = R[ra]

direktno adresiranje

st ra, c2(rb)

M[c2+R[rb]] = R[ra]

indirektno adresiranje (rb<>0)

la ra, c2

R[ra] = c2

upii vrijednost adrese u registar

la ra, c2(rb)

R[ra] = c2+R[rb]

upii vrijednost adrese u registar

SRISC instrukcije za itanje memorije


ld (load)
puni spremnik odreen s 5 bitnom vrijednou ra
podatkom ija je adresa vrijednost 17 bitnog polja c2
ovisno o vrijednosti polja rb
1.

rb = 00000: Upravljaka jedinica vrijednost memorijske


lokacije rauna pretvaranjem vrijednosti u c2 u 32-bitnu
irenjem bita predznaka.

16

c2

16

0101..................................01
31

000000000000000101..................................01

2.

c2

1101..................................01
31

111111111111111101..................................01

rb <> 00000: Upravljaka jedinica vrijednost memorijske


lokacije rauna tijekom izvoenja prema izrazu:
c2 + R[rb]

SRISC instrukcije za pisanje u memoriju

st (store)

Sprema podatke u memoriju


1.

Direktno adresiranje - rb = 00000: spremi podatak iz


registra ra na memorijsku lokaciju adrese c2.

2.

Indirektno adresiranje - rb <>00000: spremi podatak iz


registra ra na memorijsku lokaciju adrese c2 + R[rb].

SRISC instrukcije za raunanje adrese

la (load address)

Rauna adresu operanda i sprema je u registar ra.

Koristi se za sintezu sloenijih naina adresiranja.


la ra, c2

R[ra] = c2.

la ra, c2(rb)

R[ra] = c2 + R[rb].

SRISC ogranienja direktnog adresiranja


Ogranienje radi veliine konstante c2: 16 bita + predznak
Mogue direktno adresirati 2 memorijska prostora:

prvih 64 k:
00000000h 0000FFFFh

zadnjih 64k:
FFFF0000h FFFFFFFFh.
31

16

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 0 0 0 0 0
0

. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0

adrese od 00010000h do FFFEFFFFh ne mogu se direktno adresirati


31

16

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
F

. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
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 1 1 1 1 1 1
F

SRISC pristup ostalom dijelu memorije

Adresiranje pomakom:
adresa = R[rb] + c2
R[rb] baza
c2 pomak prethodno pretvoreno iz 17 u 32-bitni broj

Indirektno adresiranje:
adresa = R[rb] + 0
R[rb] baza
c2 = 0

SRISC instrukcije za pristup memoriji format 2


31

27

22

op

ra

c1

Instrukcije s relativnim adresiranjem:


Instrukcija

op

Znaenje

Opis

ldr ra, c1

R[ra] = M[PC+c1]

upii u registar podatak s adrese


PC+c1

str ra, c1

M[PC+c1] = R[ra]

upii u memorijsku lokaciju PC+c1

lar ra, c1

R[ra] = PC+c1

upii u registar relativnu adresu

Adresa se rauna tijekom izvoenja instrukcije pribrajanjem konstante


programskom brojilu run-time addition.

SRISC premjestive instrukcije

Relativne adrese ine instrukcije premjestivim (relocatable instructions)


Naredbe i podaci specificiraju se kao konstantna udaljenost od sadraja PC
Programski moduli se mogu premjetati bilo gdje u memoriji bez mijenjanja
vrijednosti pomaka.
Konstanta pomaka c1 je duljine 22 bita (21 bit vrijednost i 1 bit predznak).
Mogue specificirati instrukcije i podatke u prostoru od 221 oko trenutne
vrijednosti PC.

SRISC primjeri instrukcija load/store

Instrukcija

op

ra

rb

c1

Znaenje

Nain adresiranja

ld r5, 44

44

R[5] M[44]

Direktno

ld r5, 44(r6)

44

R[5] M[44+R[6]]

Pomak

ldr r7, 61

61

R[7] M[PC+61]

Relativno

st r11, 0(r12)

11

12

M[R[12]] R[11]

Indirektno registrom

str r11, 23

11

23

M[PC+23] R[11] Relativno

la r21, 78

21

78

R[21] 78

Trenutno

lar r17, 0

17

R[17] PC

Adresa u registar

SRISC aritmatike i logike instrukcije


Instrukcije s jednim operandom
Trei format instrukcije
31

27

op

22

ra

Instrukcija

17

ne koristi se

op

12

rc

ne koristi se

Znaenje

Opis

neg ra, rc

15

R[ra] = -R[rc]

dvojni komplement

not ra, rc

24

R[ra] = R[rc]

jedinini komplement

SRISC ALU instrukcije binarne operacije


Troadresne instrukcije
esti format instrukcije
31

27

op

22

ra

17

rb

12

rc

ne koristi se

Instrukcija

op

Znaenje

Opis

add ra, rb, rc

12

R[ra] = R[rb] + R[rc]

zbroj

sub ra, rb, rc

14

R[ra] = R[rb] - R[rc]

razlika

and ra, rb, rc

20

R[ra] = R[rb] and R[rc] logiko I

or ra, rb, rc

22

R[ra] = R[rb] or R[rc]

logiko ILI

SRISC ALU instrukcije neposredno adresiranje


Dva registra i konstanta
Prvi format instrukcije
31

27

22

17

op

ra

rb

c2

Instrukcija

op

Znaenje

addi ra, rb, c2

13

R[ra] = R[rb] + c2

zbroj

andi ra, rb, c2

21

R[ra] = R[rb] and c2

logiko I

ori ra, rb, c2

23

R[ra] = R[rb] or c2

logiko ILI

Opis

SRISC Vrste Posmaka


Posmak (shift): pomicanje bitova u rijei lijevo, desno ili kruno
Sedmi a) i b) formati instrukcija
Logiki posmak u desno: na upranjenu poziciju upisuje se 0.
1 101................................01

shr

0 1101.................................0

Aritmetiki posmak u desno: na upranjenu poziciju upisuje se


ponovo bit predznaka.
1 101................................01

shra

1 1101.................................0

SRISC Vrste Posmaka

Posmak lijevo: na upranjenu poziciju upisuje se 0.


1

101................................01 0

shl

1101.................................0 1

Kruni posmak: MSB bit ide na LSB poziciju


shc
101.................................011

SRISC Instrukcije Posmaka


Dva registra i konstanta
Sedmi a) format instrukcije
31

27

op

22

ra

17

rb

c3

(ne koristi se)

count

broj 0

Instrukcije posmiu operand zapisan u R[rb] za onoliko mjesta


koliko je zapisano u dijelu instrukcije count.

count je 5-bitna vrijednost zapisana formatu bez predznaka.

5 bitova omoguava posmak od 1 do 25=31 bitova, (0 je


iskljuena)

10

SRISC Instrukcije Posmaka


Tri registra i konstanta
Sedmi b) format instrukcije
31

27

22

op

ra

17

rb

12

rc

c3

(ne koristi se) 00000

broj = 0

Instrukcije posmiu operand zapisan u R[rb] za onoliko mjesta


koliko je zapisano u 5 LSB bitova registra R[rc].

5 bitova omoguava posmak od 20=0 do 25=31 bitova

SRISC primjeri instrukcija posmaka

Instrukcija

op

Znaenje

shr ra, rb, rc

26

logiki posmak R[rb] za R[rc] u desno i pohrani u R[ra]

shr ra, rb, count

26

logiki posmak R[rb] za count u desno i pohrani u R[ra]

shra ra, rb, rc

27

aritmetiki posmak R[rb] za R[rc] u desno i pohrani u R[ra]

shl ra, rb, rc

28

posmak R[rb] za R[rc] u lijevo i pohrani u R[ra]

shl ra, rb, count

28

posmak R[rb] za count u lijevo i pohrani u R[ra]

shc ra, rb, rc

29

kruni posmak R[rb] za R[rc] i pohrani u R[ra]

shc ra, rb, count

29

kruni posmak R[rb] za count i pohrani u R[ra]

11

SRISC Instrukcija Grananja Branch (br)


Dva registra i konstanta
etvrti format instrukcije
31

27

op

22

17

ne koristi se

op. kod

rb

12

rc

c3

(ne koristi se) cond

adresa skoka uvjet grananja

uvjet

Instrukcija br mijenja sadraj registra programskog brojila PC


adresom zapisanom u R[rb]

SRISC Instrukcija Grananja Branch & Link (brl)


Tri registra i konstanta
Peti format instrukcije
31

27

op
op. kod

22

ra
povezni reg.

17

rb

12

rc

adr. skoka uvjet grananja

c3

(ne koristi se) cond


uvjet

Instrukcija brl mijenja sadraj registra programskog brojila PC


adresom zapisanom u R[rb], tek nakon to sadraj programskog
brojila spremi u povezni registar R[ra].
Omoguuje koritenje potprograma: adresa sljedee instrukcije
programa koja se treba izvesti nakon povratka iz potprograma je
sauvana.

12

SRISC Instrukcije Grananja - Uvjeti


c3 <2..0>
cond

Instrukcija

Uvjet grananja

brnv, brlnv

000

Nikada

br, brl

001

Bezuvjetno

brzr, brlzr

010

Ako je R[rc] = 0

brnz, brlnz

011

Ako je R[rc] 0

brpl, brlpl

100

Ako je R[rc] 0 , (bit 31 = 0)

brmi, brlmi

101

Ako je R[rc] < 0 , (bit 31 = 1)

ALU provjerava R[rc] prije izvoenja skoka.


Ne postoji Statusni Registar sa bitovima - zastavicama (flag)

SRISC primjeri instrukcija grananja


Instrukcija

rb

rc

c3 <2..0>
cond

000

R[5] PC

nikada

001

PC R[6]

bezuvjetno

001

R[7] PC
PC R[9]

bezuvjetno

11

010

ako je R[6] = 0 PC R[11]

nula
nula

op

ra

brlnv r5

br r6

brl r7, r9
brzr r11,r6

Znaenje

Uvjet R[rc]

brlzr r10,r11,r6

10

11

010

R[10] PC
ako je R[6] = 0 PC R[11]

brnz r4,r5

011

ako je R[5] 0 PC R[4]

nije nula
nije nula

brlnz r3,r4,r5

011

R[3] PC
ako je R[5] 0 PC R[4]

brpl r5,r8

100

ako je R[8] 0 PC R[5]

plus

brlpl r7,r5,r8

100

R[7] PC
ako je R[8] 0 PC R[5]

plus

brmi r4,r7

101

ako je R[7] < 0 PC R[4]

minus

brlmi r6,r4,r7

101

R[6] PC
ako je R[7] < 0 PC R[4]

minus

13

SRISC Ostale Instrukcije: nop i stop


Samo operacijski kod
Osmi format instrukcije
31

27

op

Instrukcija

ne koristi se

op

Znaenje

Opis

nop

ne izvodi nikakvu operaciju

stop

31

Run 0

zaustavlja izvoenje programa

nop:
Koristi se kod implementacije protone izvedbe mikroprocesora
(cjevovod).
stop:
Koristi se kod otkrivanja greaka u radu programa (debuger).

SRISC Primjer GOTO


C programski isjeak:
goto Lbl3
SRISC ekvivalent:
lar
br
.....
Lbl3:

.....

r0, Lbl3 ; upii adresu skoka u registar r0


r0
; granaj
; nastavak

14

SRISC Primjer IF
C programski isjeak:
#define Cijena 125
if (X<0) then X = -X;
SRISC ekvivalent:
Cijena
X:

Kraj:

.equ
.org
.dw
.org
lar
ld
brpl
neg
.....

125
1000
1
5000
r2, Kraj
r1, X
r2, r1
r1, r1

; definicija simbolike konstante


; sljedea rije biti e smjetena na adr. 100010
; rezerviraj 1 rije za varijablu X
; program e se uitati na lokaciju adrese 500010
; upii relativnu adresu skoka za la (4)
; upii vrijednost var. X u registar r1
; granaj za Else ako je r1 0 na Kraj
; negacija vrijednosti u r1
; nastavak

SRISC Primjer IF binarni izgled instrukcije lar, la


lar r2, Kraj
31

lar

27

r2

Kraj

22

op = 6

ra = r2

c1 = 3

00110

00010

00 0000 0000 0000 0000 0011

Relativno adresiranje: u r2 se upisuje zbroj PC (5001) i c1 (3)


la

r2, Kraj
31

la

27

r2

22

17

Kraj

op = 5

ra = r2

rb = 0

c2 = 5004

00101

00010

00000

0 0001 0011 1000 1100

Direktno adresiranje: u r2 se upisuje vrijednost c2 (5004)

15

SRISC Jednosabirnika Arhitektura

SRISC Jednosabirnika Arhitektura : add instrukcija

RTN za add instrukciju


RTN

T0

MA PC: C PC+4;

T1

MD M[MA]: PC C;

T2

IR MD;

T3

A R[rb];

T4

C A + R[rc];

T5

R[ra] C;

IZVRI

DOHVATI

Korak

16

SRISC Dvosabirnika Arhitektura

SRISC Dvosabirnika Arhitektura: add instrukcija


RTN za add instrukciju

IZVRI DOHVATI

Korak

RTN

Kontrolni niz

T0

MA PC;

PCout, C=B, Main

T1

C PC+4: MD M[MA];

PCout, INC4, PCin , Read, Wait

T2

IR MD;

MDout, C=B, IRin

T3

A R[rb];

Grb, Rout, C=B, Ain

T4

R[ra] A + R[rc];

Grc, Rout, ADD, Sra, Rin , End

17

SRISC Dvosabirnika Arhitektura: Ubrzanje


za add instrukciju
Vrijeme izvoenja T = IC * CPI *
Ubrzanje = (T1-bus- T2-bus ) / T2-bus * 100
Pretpostavke da su za 1-bus i
2-bus jednaki:

Instruction Count IC

Vrijeme perioda takta

Ubrzanje =
= (IC*6* -IC*5*)/(IC*5*)*100=
= (6-5)/5 * 100 =
= 20%

Pretpostavke da je zbog due


propagacije signala kroz drugu
sabirnicu za 2-bus jednak:

2 = 1 * 1,1
IC je jednak

Ubrzanje =
= (IC*6*1 -IC*5*2)/(IC*5*2)*100=
= (IC*6*1 -IC*5*1,1*1)/(IC*5* 1,1*1)*100=
= (6-5,5)/5,5 * 100 =
= 9,1%

Ubrzanje dobiveno smanjenjem CPI dijelom izgubljeno produenjem vremena


perioda takta (clock period).

SRISC Trosabirnika Arhitektura

18

SRISC Trosabirnika Arhitektura: add instrukcija


RTN za add instrukciju
RTN

Kontrolni niz

T0

MA PC: MD M[MA]: PC PC+4;

PCout, MABin , INC4, PCin , Read, Wait

T1

IR MD;

MDout, C=B, IRin

T2

R[ra] R[rb] + R[rc];

GArc, RAout, GBrb, RBout, ADD, Sra,


Rain , End

IZVRI DOHVATI

Korak

SRISC Trosabirnika Arhitektura: Ubrzanje za


add instrukciju
Vrijeme izvoenja T = IC * CPI *
Ubrzanje = (T1-bus- T3-bus ) / T3-bus * 100
Pretpostavke da su za 1-bus i
3-bus jednaki:

Instruction Count IC

Vrijeme perioda takta

Ubrzanje =
= (IC*6* -IC*3*)/(IC*3*)*100=
= (6-3)/3 * 100 =
= 100%

Pretpostavke da je zbog due


propagacije signala kroz drugu
sabirnicu za 3-bus jednak:

3 = 1 * 1,1
IC je jednak

Ubrzanje =
= (IC*6*1 -IC*3*3)/(IC*3*2)*100=
= (IC*6*1 -IC*3*1,1*1)/(IC*3* 1,1*1)*100=
= (6-3,3)/ 3,3 * 100 =
= 82%

Ubrzanje dobiveno smanjenjem CPI dijelom izgubljeno produenjem vremena


perioda takta (clock period).

19

You might also like