3-1
Statusni registar
bit
naziv
busy
C3-C0
condition code
ST
Top of stack
ES
error summary
opis
pokazuje da li je koprocesor zauzet izvravanjem nekog
taska
moe se provjeravati testiranjem statusne informacije ili
koritenjem FWAIT instrukcije
noviji koprocesori se automatski sinhronizuju s
procesorom, pa nije potrebno testirati B bit
pokazuje stanje koprocesora (ST=Top of Stack)
3-2
PE
precision error
UE
underflow
error
OE
overflow error
ZE
zero error
DE
denormalized
error
IE
invalid error
;
;
;
;
;
;
;
;
Primjer:
FSQRT
FSTSW AX
TEST AX,1
JNZ GRESKA
;
;
;
;
3-3
Kontrolni registar
Tag registar
16-bitni registar
pokazuje status svakog od registara internog koprocesorskog steka
3-4
FST
FSTP - skida podatak sa vrha steka i upisuje ga u memoriju ili naznaeni registar
koprocesora
FXCH - vri zamjenu sadraja datog registra i vrha steka
- Primjer:
FXCH ST(3)
Primjer:
.MODEL SMALL
.386
.387
.DATA
BROJ1 DD 30.0
BROJ2 DQ 100.25
BROJ3 DT 32.4567
BROJ4 DW 10
BROJ5 DD 20
BROJ6 DQ 30
BROJ7 DT 30
;
;
;
;
;
;
;
obina preciznost
dvostruka preciznost
proirena preciznost
16-bitni integer
32-bitni integer
64-bitni integer
BCD podatak
.CODE
.STARTUP
FLD BROJ1
FLD BROJ2
FLD BROJ3
FILD BROJ4
FILD BROJ5
FILD BROJ6
FBLD BROJ7
.EXIT
END
3-5
Aritmetike instrukcije
stek:
sabiranje:
FADD
FIADD
oduzimanje: FSUB
FSUBR
FISUB
mnoenje:
FMUL
FMULR
FIMUL
dijeljenje:
FDIV
FDIVR
FIDIV
FSQRT
FSCALE
FPREM
FRNDINT
FXTRACT
FABS
FCHS
3-6
Instrukcije poreenja
FCOM
FCOMP
FCOMPP
FICOM
FICOMP
FTST
FXAM
Transcendentalne operacije
FPTAN
; parcijalni tangens Y/X = tg
ulaz:
ST <= (u radijanima)
rezultat: ST <= X, ST(1) <= Y
FPATAN
F2XM1
; 2X-1
ulaz:
ST <= X
rezultat: ST <= 2X-1
FSIN
FCOS
FSINCOS
FYL2X
; Ylog2X
ulaz:
ST <= X, ST(1) <= Y
rezultat: skida X, a umjesto Y upisuje Ylog2X
FYL2XP1
; Ylog2(X+1)
ulaz:
ST <= X, ST(1) <= Y
rezultat: skida X, a umjesto Y upisuje Ylog2(X+1)
3-7
Operacije s konstantama
instrukcije koje na stek ostavljaju odgovarajuu konstantu
Upravljake instrukcije
slue za inicijalizaciju koprocesora, manipulaciju izuzecima i sl.
obino se pojavljuju u dva oblika: prvi uzrokuje stanje ekanja (eka se dok je koprocesor
busy), a drugi ne eka da se koprocesor oslobodi, npr. FNINIT (ne eka), a FINIT (eka)
FINIT/FNINIT ; resetuje i inicijalizuje koprocesor
stanje koprocesora nakon reseta
FSETPM
FLDCW
FSTCW/FNTSCW
FSTSW AX/FNTSSW AX
FINCST
; inkrementira ST
FDECST
; dekrementira ST
FNOP
; No OPeration za koprocesor
FWAIT
3-8
Primjer: Napisati asemblerski program koji rauna povrine i obime krugova iji se radijusi
nalaze u intervalu [1..5] s korakom 1, a rezultate smjeta u nizove POVRSINE i
OBIMI.
.MODEL SMALL
.386
.387
.DATA
RADIJUSI DD 1.0, 2.0, 3.0, 4.0, 5.0
POVRSINE DD 5 DUP (?)
OBIMI
DD 5 DUP (?)
DVA
DD 2.0
.CODE
.STARTUP
MOV SI,0
MOV CX,5
PETLJA: FLD RADIJUSI[SI]
FMUL ST,ST(0)
FLDPI
FMUL
FSTP POVRSINE[SI]
FLD RADIJUSI[SI]
FMUL DVA
FLDPI
FMUL
FSTSP OBIMI[SI]
;
;
;
;
;
ST <= r
ST <= r * r
ST(1) <= r*r,
ST <= pi
ST <= pi * r*r
pohrani povrsinu i skini sa steka
;
;
;
;
;
ST <= r
ST <= 2*r
ST(1) <= 2*r,
ST <= pi
ST <= pi * 2*r
pohrani obim i skini sa steka
ADD SI,4
LOOP PETLJA
.EXIT
END
3-9
Primjer: Napisati asemblerski program koji rauna realne korijene kvadratne jednaine
ax2+bx+c=0
DVA
CETIRI
A
B
C
R1
R2
.MODEL SMALL
.386
.387
.DATA
DD 2.0
DD 4.0
DD ?
; upisati a
DD ?
; upisati b
DD ?
; upisati c
DD ?
DD ?
.CODE
.STARTUP
FLDZ
FST R1
FSTP R2
; upii 0 na stek
; obrii R1
; obrii R2
FLD DVA
FMUL A
; formiraj 2a
FLD CETIRI
FMUL A
FMUL C
; formiraj 4ac
FLD B
FMUL B
; formiraj b2
FSUBR
FTST
FSTSW AX
SAHF
JZ RJESENJA
FSQRT
FSTSW AX
TEST AX,1
JZ RJESENJA
FCOMPP
JMP KRAJ
RJESENJA: FLD B
FCHS
FADD ST,ST(1)
FDIV ST,ST(2)
FSTP R1
FLD B
FCHS
FADD
FDIVR
FSTP R2
KRAJ:
.EXIT
END
; b2-4ac
; b2-4ac=0 ?
; ako jeste ne racunaj korijen
; racunaj korijen diskriminante
; je li diskriminanta negativna
; ako nije trai rjeenja
; ako jeste obrii stek i prekini program
; izraunaj R1
; izraunaj R2
3-10
TCPU = ( p + m k ) t c .
i =1
Brzina procesora
Brzina procesora predstavlja broj instrukcija koje procesor izvri u jedinici vremena.
Obino se koristi vea jedinica MIPS (miliona instrukcija po sekundi)
fc
N f
NI
MIPS =
=
= I c6 .
6
6
TCPU 10
N CPI 10
N tc 10
esto se brzina odreuje i u odnosu na izvravanje operacija u pokretnom zarezu (FP
aritmetika). Tada se koristi MFLOPS (miliona FP operacija po sekundi)
N FP
MFLOPS =
TCPU 10 6
Koriste se i vee jedinice GFLOPS i TFLOPS.
3-11
Primjer:
Procesor koji radi s taktom 200 MHz izvrava benchmark program sa sljedeom
strukturom:
i
tip instrukcije
broj instrukcija u
programu
broj taktova po
instrukciji
integer aritmetika
45000
prenos podataka
32000
FP aritmetika
15000
upravljaki prenos
8000
N
= tc =
NI
N CPI
N
i =1
Ii
N ci
N
i =1
Ii
fc
200 10 6
MIPS =
= 130
=
N CPI 10 6 1.55 10 6
TCPU = N tc t c =
Primjer:
N tc
155000
=
= 0.775ms
fc
200 10 6
tip instrukcije
udio instrukcija u
programu
broj taktova po
instrukciji
aritmetiko-logike
60%
load/store (ke)
18%
grananje
12%
10%
N CPI
N
Nc =
= tc =
NI
NI
=
N
i =1
Ii
NI
N ci
MIPS =
NI
= 2.24
fc
40 10 6
= 17.86
=
N CPI 10 6 2.24 10 6
3-12
Primjer:
MIPS
p=2
(2 + 0.5 2) N I
f
(1)
(1)
=
N CPI
(1)
c
3N I
f c(1)
N I f c(1)
f c(1)
NI
30 10 6
= (1)
=
=
=
= 10
3 10 6
TUK 10 6 3N I 10 6 3 10 6
f c(1)
30 10 6
=
=3
MIPS (1) 10 6 10 10 6
(2 + 0.5 4) N I
MIPS ( 2) =
N
( 2)
CPI
p=2
( 2)
c
4N I
f c( 2 )
f c( 2 )
NI
60 10 6
=
=
= 15
( 2)
10 6 4 10 6
4 10 6
TUK
f c( 2 )
60 10 6
=
=
=4
MIPS ( 2 ) 10 6 15 10 6
pa su traene promjene
N
N
( 2)
CPI
(1)
CPI
4
3
( 2)
MIPS
15 3
=
=
(1)
10 2
MIPS
3-13
( 2)
UK
(1)
UK
T
T
4N I
f ( 2)
4 f (1) 4 30 2
= c = c( 2 ) =
=
3N I
3 60 3
3 fc
f c(1)
Protok instrukcija kroz protoni sistem moe biti sinhroni ili asinhroni.
Asinhroni model protonog sistema bazira se na hendejkingu. Kad dati stepen zavri svoju
fazu alje signal narednom stepenu da je spreman da mu poalje podatke. Kad naredni stepen
primi podatak vraa acknowledge signal prethodnom stepenu.
Sinhroni model podrazumijeva postojanje zajednikog takt signala kojim se taktuju leevi
izmeu pojedinih protonih stepena.
T = max i + d = m + d m
i
3-14
T1
nkT
nk
15000 5
=
=
=
= 4.998667 5
Tk [k + (n 1)] T k + (n 1) 5 + 15000 1
b) E k =
Sk
n
==
= 0.9997
k
k + (n 1)
3-15
NELINEARNA PROTONOST
vrijeme
1
S1
S2
X
X
Rezervaciona
tabela statine
protonosti
S3
vrijeme
X
X
1
S1
S3
S2
X
X
Y
Y
Rezervaciona tabela za
realizaciju funkcije Y
Broj kolona u rezervacionoj tabeli pokazuje ukupno vrijeme izvravanja date funkcije
(ukupan broj takt perioda). Svaka zauzeta elija u tabeli pokazuje koji je od stepena zauzet u
odgovarajuem takt periodu.
Osnovni skalarni procesor zapoinje u svakom takt periodu izvravanje jedne
instrukcije. Kod dinamike protonosti, zbog nelinearnosti, instrukcije se najee ne
iniciraju u svakom takt periodu, ve sa odreenom zadrkom (latentnou). Latentnost je reda
k ako se iniciranje nove instrukcije vri svakih k takt perioda. Zbog nelinearnosti moe doi
doi do kolizije, ako se u istom ciklusu zahtijeva viestruko korienje istog stepena. Takve
latentnosti nazivamo zabranjenim i ne mogu se koristiti.
3-16
S2
X
X
S3
8
X
X
X
imamo
n = 8 m n 1 = 7 uzimamo m = 7 jer je to maksimalna
zabranjena latentnost
pa na osnovu rezervacione tabele
S1
C1
C2
C3
C4
C5
C6
C7
S2
X
X
S3
X
X
X
4
X
6
dobijamo
C = (1011010)
Dijagram stanja
Koristei kolizioni vektor moe se kreirati dijagram stanja protonog sistema, koji
pokazuje promjene stanja kod niza sukcesivnih instrukcija. Kree se od inicijalnog kolizionog
vektora - kolizionog vektora koji posjeduje informaciju o dozvoljenim latentnostima na
poetku obrade. Mehanizam za odreivanje stanja temelji se na pomjerakom registru duine
m bita. Sadraj registra se pomjera udesno i na desnom kraju izlaze biti koji oznaavaju da li
je data latentnost dozvoljena (0) ili nedozvoljena (1). Registar se slijeva puni nulom. Nakon
pomjeranja sadraja registra za potreban broj mjesta, dodatno se registar OR-uje sa
inicijalnim kolizionim vektorom, ime se dobija novi vektor stanja. Logika za formiranje
dijagrama stanja protonog sistema data je na sljedeoj slici.
Primjer:
C6
C5
C4
C3
C2
C1
Inicijalni
kolizioni vektor
iftovanje za
bit
dozv. latent.
upisana 0 slijeva
OR registra i
inicijalnog
vektora
novo stanje
nema dozvoljenih
latentnost osim 8
C6
C5
C4
C3
C2
C1
ift za 3 bita
OR
OR
ift za 6 bita
OR
3-18
mogue latentnosti 3 i 6
ostalo isto
ostalo isto
S2
S3
ift za 3 bita
OR
3-19
5+
1 0 1 1
Jednostavne putanje su (3) i (5). Oigledno, ako se izabere (3) imamo MAL=3.
Prema Shar-u, optimalan MAL jednak je maksimalnom broju zauzetih elemenata
u nekom od redova rezervacione tabee. Kod ovog sistema, maksimalan broj
zazuetih elemenata je 2, a postignuti MAL=3, to nije optimalno. Optimizacija se
postie uvoenjem elemenata za kanjenje, kao na slici
1
S1
X
X
S3
X
X
S4
S2
S3
S4
6
X
X
X
X
D
C4
C3
C2
C1
ift za 1 bit
OR
ift za 3 bita
OR
ift za 3 bita
OR
ift za 4 bita
OR
ift za 3 bita
OR
ift za 4 bita
OR
3-20
dozvoljeno 1, 3, 4, 6+
dozvoljeno 3
dozvoljeno 3 i 4
poetno stanje
ostaje isto
ostaje isto
ostaje isto
1 0 0 1 0
6+
6+
3
1 1 0 1 1
1 0 0 1 1
Jednostavne putanje su: (3), (6), (4,3), (4), (1,3,3), (1,6), (4,6).
MAL = (1+3+3)/3 = 2.33, to jo uvijek nije optimalno. Dodatno poboljanje
ostvaruje se dodavanjem jo jednog elementa za kanjenje, kao na sljedeoj slici.
Ubacivanjem jo jednog elementa za kanjenje dobija se MAL=2.
N
n
Efikasnost pokazuje koliko je protoni sistem zauzet. U obzir se uzimaju svi protoni
stepeni.
E=
8
= 88.8%
9
E=
3-21
8
= 44.4%
18
Primjer:
Svaki task prolazi kroz sloeni sistem sljedeim redom: f1f2f3f1 izlaz.
Multiplekser selektuje odgovarajue ulazne parove (A,B) ili (X,Y).
Na osnovu rezervacionih tabela sistema f1, f2 i f3 te zadane strukture sloenog
sistema moe se formirati rezervaciona tabela datog sloenog protonog sistema
S1
S2
S3
T1
T2
T3
U1
U2
U3
1
X
9
X
10
11
12
X
X
X
X
X
X
X
X
X
X
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
1
1
0
0
0
0
3-22
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
0
1
0
1
1
1
1
1
dozvoljeno 4, 5, 6, 10+
dozvoljeno 6
vraa se na osnovno
dozvoljeno 5, 6
ostaje
vraa se na osnovno
ostaje
10+
111000111
10+
10+
5
111011111
111001111
Jednostavne putanje su: (5), (6), (10+), (4,6), (5,6). Putanje minimalne latentnosti
su (5) i (4,6), pa je MAL=5.
PROTONOST KOD INTELOVIH PROCESORA 80X86
3-23
T (m,1) = k +
T .
m
Superprotona maina reda n jedan takt period dijeli na n dijelova i pri tome pribavlja
po jednu instrukciju tokom svakog od tih n dijelova, ime se obezbjeuje pribavljanje n
instrukcija u toku jednog osnovnog takt perioda. Ovakav koncept zahtijeva takt visoke
uestanosti.
T (1, n ) = k + (N 1) T .
n
SUPERPROTONO-SUPERSKALARNA ARHITEKTURA
T (m, n ) = k +
T .
mn
MOV EAX,10h
MOV EBX,12h
3-25
f i = (1 h1 )(1 h2 )L (1 hi 1 ) hi
i predstavlja vjerovatnou da e se uspjeno pristupiti nivou Mi nakon promaaja na niim
nivoima. Pri tome je
n
f
i =1
= 1,
f 1 = h1 ,
hn = 1
gdje su t1, t2, ..., tn vremenski gubici - cijena u vremenskim jedinicama koja se mora platiti
(izgubiti) za pristupanje sljedeem nivou.
Ukupna cijena hijerarhijske memorije definie se kao
n
C total = ci S i
i =1
3-26
S i > 0, t i > 0, za i = 1, 2, K, n
C total < C zadato
Primjer:
memorijski nivo
kapacitet (Si)
cijena/KB (ci)
ke
25 ns
512 KB
0.50 KM
glavna memorija
nepoznato
64 MB
0.002 KM
disk
4 ms
nepoznato
0.00005 KM
C total = ci S i = c1 S1 + c 2 S 2 + c3 S 3
i =1
Zahtjev je da bude
C total 1000 KM
c1 S1 + c 2 S 2 + c3 S 3 1000
0.50 512 + 0.002 1024 64 + 0.00005S 3 1000
0.00005S 3 612.928
S 3 12258560KB = 11.69MB
elimo postii efektivno vrijeme pristupa Teff = 10s
n
Teff = f i t i = f1 t1 + f 2 t 2 + f 3 t 3 =
i =1
= h1 t1 + (1 h1 ) h2 t 2 + (1 h1 )(1 h2 ) t 3 =
= 8.0245 10 -6 + 0.018t 2 = 10 10 -6
pa je
0.018t 2 = 1.9755 10 -6
t 2 = 109 10 -6 s = 109ms
3-27
3-28
Procesor 80486 raspolae i keom stranienja TLB (Translation Lookaside Buffer) brzom memorijom koja sadri podatke o 32 najee referencirane stranice. Ako data
linearna adresa referencira neku od tih stranica direktno se pristupa konkretnoj fizikoj
stranici, a tek u sluaju da se treba referencirati neka druga stranica ide se na dvo-nivosko
refernciranje, kako je prethodno objanjeno, preko direktorijuma stranica i tabele stranienja.
Pentium
3-29
0123
4567
4567
16 17
9 10 11
12
28 29 30
8 9 10
4 5
12
4 5
b
c
FIFO
0123
STRANICA
LRU
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
greka
b
c
greka
3-30
stopa
pogaanja
3
11
2
11
3.4.3. KEIRANJE
Ke memorija je bafer koji omoguava da procesor efikasnije funkcionie i u sluaju
sporije glavne memorije.
NAINI ADRESIRANJA KEA
Virtuelna adresa prevodi se u fiziku adresu posredstvom MMU (TLB). Ako je dati
podatak prisutan u keu pristupa mu se, a ako nije - u ke se uitava blok podataka iz
memorije, pri emu se u datom bloku, pored eljenog podatka, nalaze i podaci koji trenutno
ne trebaju, ali e moda zatrebati u nekom od narednih ciklusa. Razlikujemo Write-Through
(WT) i Write-Back (WB) ke. Kod WT kea promjena podataka u keu neposredno se
prenosi u glavnu memoriju, a kod WB kea naknadno.
Ovakav pristup keu je jednostavan. Osnovni nedostatak je usporavanje usljed
posredovanja MMU/TLB. Fiziki adresibilan ke karakteristian je za 80486 procesor.
Virtuelno adresibilan ke
Prenos podataka izmeu glavne memorije i kea vri se u blokovima ili linijama (kod
Intela). U ke memoriji govorimo o okvirima za blokove (block frames), a u glavnoj
memoriji govorimo o blokovima podataka. Ke posjeduje m okvira Bi, i=0,1, .., m-1, a glavna
memorija n blokova Bj, j=0,1,.., n-1.
Postoje razliite tehnike prenosa koje vre mapiranje blokova iz skupa {Bj}u skup
okvira {Bi}. Pretpostavimo da je n>>m i m=2r, n=2s. Svaki okvir ima b=2w rijei, pa u keu
ukupno ima mb rijei, tj. mb=2r+w. Glavna memorija ima nb=2s+w rijei. esto se okviri
dijele na setove, njih v=2t. Tada u svakom setu ima k=m/v=2r-t blokova.
3-31
Ke s direktnim mapiranjem
Ovo je najjednostavnija tehnika, ali i najrigidnija. Kod ove tehnike n/m=2s-r blokova
meusobno jednako udaljenih mapira se u isti okvir. Udaljenost blokova odreuje se po
modulu m. Npr. ako imamo 4 okvira, svaki etvrti blok se mapira u isti okvir, tj. blok Bj se
mapira u okvir Bi ako je i=j (mod m).
Memorijska adresa je duine s+w bita, i podijeljena je na tri dijela (tag, block, word).
Niih w bita definie offset rijei u bloku. Viih s bita definie adresu bloka u glavnoj
memoriji. Niih r bita od ovih s bita definie pomjeraj po modulu m, odnosno definie
konkretan okvir u keu. Kad se provjerava da li je konkretna rije u keu pristupa se (na
osnovu ovih r bita) konkretnom okviru (odnosno njegovom tag registru). Zatim se sadraj tog
tag registra uporeuje sa tag dijelom memorijske adrese (s-r bita). Ako su tagovi jednaki
pristupa se odgovarajuoj rijei u keu, inae se pristupa odgovarajuoj rijei u glavnoj
memoriji.
Potpuno asocijativni ke
3-32
Set-asocijativni ke
Ke sa sektorskim mapiranjem
3-33
Pentium: koristi dva kea: jedan za podatke (8kB) i jedan za instrukcije (8kB)
Pentium Pro: koristi jo i ke nivoa 2 za komunikaciju sa sistemom
3-34