Anda di halaman 1dari 34

3.

NAPREDNE TEHNIKE U RAUNARSKIM


ARHITEKTURAMA
3.1. NUMERIKI KOPROCESOR
Razlikujemo dva tipa implementacije numerikih koprocesora u raunarskim
sistemima i to:
pridodati (attached) koprocesor
koprocesor je realizovan u zasebnom integrisanom kolu koje je
pridodato procesoru
karakteristino za starije Intelove procesore
(8086+8087, 80286+80287, 80386SX+80387SX,
80386DX+80387DX, 80486SX+80487SX)
ugraeni (built-in) koprocesor
koprocesor je integrisan (ugraen) u CPU
karakteristino za 80486DX i Pentium procesore
Numeriki koprocesori 80x87 omoguavaju mnoenje, dijeljenje, sabiranje,
oduzimanje, raunanje kvadratnog korijena te logaritamske i trigonometrijske funkcije nad
16-, 32- i 64-bitnim oznaenim cjelobrojnim vrijednostima, 18-cifarskim BCD brojevima i
32-, 64- i 80-bitnim podacima u pokretnom zarezu. Interno, koprocesor manipulie podacima
u proirenoj tanosti (80 bita)

3.1.1. ARHITEKTURA NUMERIKOG KOPROCESORA


Numeriki koprocesor 80x87 ine dvije sekcije:
upravljaka jedinica (Control Unit CU)
povezuje koprocesor na sistemsku magistralu
prepoznaje i preuzima koprocesorske instrukcije
numerika izvrna jedinica (Numeric Execution Unit NEU)
izvrava sve koprocesorske instrukcije
posjeduje interni 8-registarski stek (registri su 80-bitni) u kojem se
dre operandi i rezultati

3-1

Statusni registar

sadri statusnu informaciju o koprocesoru


statusnom registru pristupa se instrukcijom FSTSW, koja kopira sadraj statusnog
registra u odgovarajuu rije u memoriji, odnosno FSTSW AX instrukcijom (80287 i
noviji), koja statusnu informaciju koprocesora direktno upisuje u AX registar
procesora
uitavanjem statusne informacije u AX lako se testira stanje pojedinih statusnih bita
struktura statusnog registra

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)

pokazuje koji je registar steka adresiran kao top of stack


normalno (nakon resetovanja) to je registar 0
setovan ako je setovan bilo koji od bita koji pokazuju neku
od greaka (PE, UE, OE, ZE, DE, IE)

3-2

PE

precision error

pokazuje da rezultat ili operandi premauju selektovanu


preciznost

UE

underflow
error

pokazuje da je nenulti rezultat premalen da bi se prikazao u


traenoj tanosti

OE

overflow error

pokazuje da je rezultat prevelik da bi se prikazao


ako je ova greka maskirana koprocesor generie
beskonanost

ZE

zero error

DE

denormalized
error

pokazuje da je bar jedan od operanada denormalizovan

IE

invalid error

pokazuje overflow ili underflow steka, neodreenost izraza


ili koritenje NAN (nenumerikog) podatka kao
operanda, npr. vaenje drugog korijena iz negativnog
broja

pokazuje da je dolo do dijeljenja s nulom

postoje dva naina testiranja bita u statusnom registru


uitati statusnu informaciju u AX pomou FSTSW instrukcije, a zatim
pomou TEST instrukcije testirati odgovarajui bit
Primjer:
FDIV BROJ
FSTSW AX
TEST AX,4
JNZ GRESKA

;
;
;
;

dijeli podat. na vrhu steka s podatkom BROJ


uitava statusnu informaciju u AX
testira ZE bit (bit 2 statusnog registra)
ako ima greka (bit je setovan) skoi

;
;
;
;

trai drugi korijen podatka na vrhu steka


uitava statusnu informaciju u AX
testira IE bit (bit 0 statusnog registra)
ako ima greka (bit je setovan) skoi

Primjer:
FSQRT
FSTSW AX
TEST AX,1
JNZ GRESKA

uitati statusnu informaciju u AX pomou FSTSW instrukcije, a zatim


pomou SAHF instrukcije izvriti prenos viih 8 bita (AH) u registar
stanja (flegove), a potom koristiti instrukcije uslovnog skoka (JE, JB ...)
Primjer:
FCOM BROJ
FSTSW AX
SAHF
JE JEDNAKO
JB MANJE
JA VECE

;
;
;
;

poredi podatak na vrhu steka s BROJem


uitava statusnu informaciju u AX
kopira AH u flegove
skae zavisno od stanja

3-3

Kontrolni registar

selektuje preciznost, nain zaokruivanja i kontrolu beskonanosti


upravljaka informacija upisuje se u kontrolni registar pomou FLDCW instrukcije
affine = omoguava pozitivnu/negativnu beskonanost
projective = neoznaena beskonanost
biti maske omoguavaju maskiranje bita greke u statusnom registru (ako je
setovan nije markiran)

Tag registar

16-bitni registar
pokazuje status svakog od registara internog koprocesorskog steka

3-4

3.1.2. INSTRUKCIJSKI SET NUMERIKOG KOPROCESORA


Instrukcije za prenos podataka

floating point podaci


FLD

- uitava floating point podatak iz memorije i smjeta ga na vrh internog steka


- nakon toga pokaziva vrha steka (ST) uveava se za 1
- podatak moe da se uita iz neke memorijske lokacije ili nekog od registara
koprocesora
- Primjer:
FLD ST(2)
FLD BROJ

FST

; kopira sadraj reg 2 steka na vrh steka


; kopira sadraj lokacije BROJ na vrh steka

- kopira podatak sa vrha steka u memoriju ili naznaeni registar koprocesora

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)

; mijenja sadraj vrha steka i registra 3

integer podaci koprocesor automatski vri konverziju integera u proirenu tanost


FILD - uitava integer iz memorije i smjeta ga na vrh internog steka
FIST - kopira podatak sa vrha steka u memoriju
FISTP - skida podatak sa steka i smjeta ga u memoriju

BCD podaci (80 bita = 10 bajtova = 9 + 1 bajtova = 18 cifara + znak)


FBLD - uitava BCD podatak iz memorije i smjeta ga na vrh internog steka
FBSTP - skida podatak sa steka i smjeta ga u memoriju

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

postoji nekoliko oblika adresiranja podataka u aritmetikim instrukcijama

stek:

uzima podatak sa vrha steka (izvorni operand) i podatak neposredno


ispod vrha steka (odredini operand)
Primjer:
FADD

; skida podatak sa vrha steka, sabira ga sa


sljedeim i umjesto njega upisuje zbir
(sada je zbir na vrhu steka)

registarsko: uzima podatak sa vrha steka i podatak iz nekog od registara steka


ST(n), n=0..7
Primjer:
FADD ST,ST(2)
FADD ST(2),ST

memorija: uzima podatak sa vrha steka i podatak iz memorije


Primjer:
FADD BROJ

sabiranje:

FADD
FIADD

oduzimanje: FSUB
FSUBR
FISUB

mnoenje:

FMUL
FMULR
FIMUL

dijeljenje:

FDIV
FDIVR
FIDIV

; sabira integer iz memorije i vrh steka


; oduzima ST od ST(1) i ostavlja razliku na mjestu
ST(1), to je novi vrh steka
; oduzima ST(1) od ST i ostavlja razliku na mjestu
ST
; oduzima podatak iz memorije od vrha steka i
ostavlja razliku na vrhu steka
; mnoi ST sa ST(1) i ostavlja proizvod na mjestu
ST(1), to je novi vrh steka
; mnoi ST(1) sa ST i ostavlja proizvod na mjestu
ST
; mnoi podatak (integer) iz memorije sa vrhom
steka i ostavlja proizvod na vrhu steka
; dijeli ST sa ST(1) i ostavlja rezultat na mjestu
ST(1), to je novi vrh steka
; dijeli ST(1) sa ST i ostavlja rezultat na mjestu
ST
; dijeli ST sa podatak (integer) iz memorije i
ostavlja rezultat na vrhu steka

FSQRT

; podatak na vrhu steka mijenja njegovim drugim korijenom

FSCALE

; dodaje ST(1) (posmatran kao integer) eksponentu podatka na


vrhu steka (to je ekvivalentno brzom mnoenju ili dijeljenju
nekim stepenom broja 2)

FPREM

; dijeli ST po modulu ST(1) i ostatak ostavlja na ST(1), to je


novi ST

FRNDINT

; zaokruuje vrh steka na integer

FXTRACT

; rastavlja floating point podatak sa vrha steka na eksponent i


mantisu, mantisa je na vrhu, a nemodifikovani eksponent na
ST(1)

FABS

; podatak na vrhu steka mijenja njegovom apsolutnom vrijednou

FCHS

; mijenja znak podatka na vrhu steka (+ => - i obrnuto)

3-6

Instrukcije poreenja

porede podatak sa vrha steka sa drugim elementom, a rezultat se vraa u statusnom


registru pomou bitova C3-C0

FCOM

; poredi vrh steka (ST) s nekom mem. lokacijom ili registrom


ako se ne referencira poseban podatak uzima se ST(1)

FCOMP

; isto kao i FCOM, samo to skida podatak sa steka

FCOMPP

; isto kao i FCOM, samo to skida dva podatka sa steka

FICOM

; poredi ST sa integerom iz memorije

FICOMP

; isto kao i FICOM, samo to skida podatak sa steka

FTST

; provjerava ST u odnosu na nulu

FXAM

; provjerava ST (vidi C3-C0 u statusnom registru)

Transcendentalne operacije
FPTAN
; parcijalni tangens Y/X = tg
ulaz:
ST <= (u radijanima)
rezultat: ST <= X, ST(1) <= Y

FPATAN

; parcijalni arkus tangens = arctg(Y/X)


ulaz:
ST <= X, ST(1) <= Y (0<=Y<X<)
rezultat: skida X, a umjesto Y upisuje rezultat

F2XM1

; 2X-1
ulaz:
ST <= X
rezultat: ST <= 2X-1

log210, log2e su ugraene konstante

FSIN

; mijenja ugao na vrhu steka (u radijanima) sa sin

FCOS

; mijenja ugao na vrhu steka (u radijanima) sa cos

FSINCOS

; trai sin i cos ugla sa vrha steka (u radijanima) i


ostavlja ST <= sin i ST(1) <= cos

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

; prelazak u zatieni mod (kada i procesor radi u


zatienom modu)

FLDCW

; puni kontrolni registar odgovarajuom upravljakom


informacijom adresiranom datim operandom

FSTCW/FNTSCW

; pohranjuje kontrolni registar u datu memorijsku


lokaciju tipa WORD

FSTSW AX/FNTSSW AX

FINCST

; inkrementira ST

FDECST

; dekrementira ST

FNOP

; No OPeration za koprocesor

FWAIT

; procesor eka da koprocesor zavri operaciju


ovu instrukciju treba koristiti prije pristupa nekoj
memorijskoj lokaciji od strane procesora koju koristi
koprocesor

; kopira sadraj statusnog registra u AX registar

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

3.2. PERFORMANSE CPU


Taktni signal
Kod najveeg broja raunara procesor se pobuuje taktnim impulsima fiksne
uestanosti, fc [Hz], odnosno perioda tc [s].
Vrijeme izvravanja programa
CPU izvravajui dati program troi vrijeme
TCPU = N tc t c ,
gdje je Ntc - ukupan broj takt perioda potreban za
izvravanje programa
Ako je NI - ukupan broj instrukcija u programu tada je prosjean broj taktnih perioda
po instrukciji
N
N CPI = tc , odnosno N tc = N CPI N I
NI
pa je
N N CPI
.
TCPU = N I N CPI t c = I
fc
Razliite instrukcije zahtijevaju razliit broj taktnih perioda pa je
NI

TCPU = ( N CPI )i t c , gdje je (NCPI)i - broj taktova potreban za i-tu instrukciju


i =1

Izvravanje instrukcija odvija se kroz nekoliko faza: pribavljanje instrukcije,


dekodovanje instrukcije, pribavljanje operanada, izvrenje instrucije i smjetanje rezultata.
Obino se vri razdvajanje na procesorski ciklus (dekodovanje i izvrenje) i memorijski
ciklus (pribavljanje instrukcije, pribavljanje operanada i smjetanje rezultata). Za realizaciju
procesorskog ciklusa potrebno je p taktnih perioda. U memorijskom ciklusu treba obaviti m
pristupa memoriji, a svaki pristup memoriji je k puta dui od procesorskog takt perioda, pa je
TCPU = N I ( p + m k ) t c
odnosno
NI

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

Odrediti efektivni NCPI, MIPS i vrijeme izvravanja datog programa TCPU.


4

N
= tc =
NI

N CPI

N
i =1

Ii

N ci

N
i =1

45000 1 + 32000 2 + 15000 2 + 8000 2


= 1.55
45000 + 32000 + 15000 + 8000

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

Pretpostavimo da procesor s taktom od 40 MHz izvrava test program kojeg ini


200 000 instrukcija, koje mogu da se podijele u etiri grupe:
i

tip instrukcije

udio instrukcija u
programu

broj taktova po
instrukciji

aritmetiko-logike

60%

load/store (ke)

18%

grananje

12%

load/store (bez kea)

10%

Odrediti prosjean NCPI te odgovarajui MIPS.


4

N CPI

N
Nc =
= tc =
NI
NI
=

N
i =1

Ii

NI

N ci

(0.6 + 0.36 + 0.48 + 0.8)N I

MIPS =

NI

0.6 N I 1 + 0.18 N I 2 + 0.12 N I 4 + 0.1N I 8


=
NI

= 2.24

fc
40 10 6
= 17.86
=
N CPI 10 6 2.24 10 6

3-12

Primjer:

Radna stanica koristi procesor s taktom od 30 MHz. CPU je realizovan tako da


zavrava procesorski ciklus (dekodovanje i izvrenje instrukcije) za prosjeno 2
takt perioda, a memorijskom podsistemu pristup se obavlja za 2 takt perioda.
Da bi se poboljale performanse, takt procesora je povean na 60 MHz.
Memorijski podsistem nije promijenjen. Meutim, pristup memorijskom
podsistemu sada se obavlja za 4 takt perioda.
Odrediti: a) promjenu efektivnog broja ciklusa po instrukciji (NCPI),
b) promjenu MIPS,
c) promjenu ukupnog vremena izvravanja datog benchmark programa
nakon promjene takta procesora.
Pretpostaviti da benchmark program ini 30% instrukcija koje zahtijevaju jedan
pristup memoriji, a 10% instrukcija koje zahtijevaju dva pristupa memorijskom
podsistemu.
Ukupno vrijeme izvravanja programa je
TUK = TUK 1 + TUK 2 + TUK 3 =
= N I 1 N CPI 1 t c + N I 2 N CPI 2 t c + N I 3 N CPI 3 t c =

= 0.6 N I p t c + 0.3 N I ( p + k ) t c + 0.1N I ( p + 2k ) t c =

= [0.6 p + 0.3 p + 0.3k + 0.1 p + 0.2k ] N I t c = ( p + 0.5k ) N I t c


Prije poveanja takta imamo
f c(1) = 30MHz, k = 2,
(1)
=
TUK

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

Nakon poveanja takta imamo


f c( 2 ) = 60MHz, k = 4,
( 2)
=
TUK

(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)

3.3. NAPREDNE TEHNIKE REALIZACIJE PROCESORA


3.3.1. PROTONOST (PIPELINING)
LINEARNA PROTONOST
Protonost je hardverska tehnika koja se koristi za poboljavanje performansi, a
podrazumijeva dijeljenje instrukcija na nekoliko faza (akcija) koje se izvravaju
sekvencijalno, npr. pribavljanje instrukcije, dekodovanje instrukcije, pribavljanje operanada,
izvrenje instrukcije i upis rezultata.
Protoni sistem ini nekoliko hardverskih stepena (S1, S2, ..., Sk) meusobno
razdvojenih leevima (L1, L2, ..., Lk). Svaki od hardverskih - protonih stepena zaduen je za
realizaciju neke od faza. Instrukcije prolaze kroz protoni sistem od stepena do stepena i
izvravaju se po fazama. zahvaljujui ovakvoj koncepciji u CPU se istovremeno procesira k
instrukcija, svaka u razliitoj fazi.

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.

Period takt signala T treba da je jednak najduem periodu zadravanja instrukcije u


nekom od stepena (npr. ako pribavljanje operanada traje najdue - toliko treba da traje i takt
period protonog sistema) kako bi svi stepeni zavrili obradu.

T = max i + d = m + d m
i

3-14

Maksimalna propusnost protonog sistema definie se kao maksimalna brzina


izvravanja instrukcija
1
f =
T
Latentnost se definie kao vrijeme zadravanja instrukcije u protonom sistemu
L = kT
Protoni sistem sa k stepena moe izvriti n taskova u idealnom sluaju za k+(n-1)
taktova, pa je ukupno vrijeme potrebno za izvravanje n taskova
Tk = [k + (n 1)] T
Isti posao neprotoni sistem zavrie za
T1 = nkT .
Faktor ubrzanja protonog sistema sa k stepena definie se kao kolinik vremena
potrebnog za izvrenje n taskova u neprotonom i u datom protonom sistemu
T
nkT
nk
Sk = 1 =
=
Tk [k + (n 1)] T k + (n 1)
Za n=1 imamo Sk=1, a za n imamo Skk.
Efikasnost Ek protonog sistema sa k stepena definie se odnos faktora ubrzanja Sk i
broja stepena k
S
n
Ek = k =
k
k + (n 1)
Za n=1 imamo Ek=1/k, a za n imamo Ek1.
Propusnost Hk protonog sistema sa k stepena moe se definisati kao broj taskova
(operacija) izvrenih u jedinici vremena
n
nf
Hk =
=
=E f
[k + (n 1)] T k + (n 1) k
Broj stepena u protonom sistemu moe biti razliit, obino 2k15. Optimalan broj
stepena obino se odreuje na osnovu odnosa performanse/cijena (PCR).
Primjer:

Pretpostavimo da se program od 15000 instrukcija izvrava u protonom


procesoru s taktom od 25 MHz. Neka je procesor petostepeni i neka se pribavlja
po jedna instrukcija svaki ciklus.
Odrediti: a) faktor ubrzanja u odnosu na neprotoni sistem,
b) efikasnost i propusnost ovog protonog procesora.
a) S k =

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)

H k = E k f = 0.9997 25 10 6 = 24.99 MIPS

3-15

NELINEARNA PROTONOST

Linearnu (statinu) protonost karakterie kaskada procesnih elemenata (protonih


stepena) koji su linearno povezani, a izvravaju niz fiksnih funkcija.
Nelinearni (dinamiki) protoni sistemi mogu se rekonfigurisati tako da izvravaju
razliite funkcije u razliito vrijeme. Osim kaskadne linearne veze procesnih elemenata
prisutne su i odgovarajue sprege (feedforward i feedback), pa se zato i zovu nelinearni
sistemi.
Primjer nelinearnog protonog sistema dat je na slici. Ovaj sistem ima tri stepena (S1,
S2, S3). Osim veza S1S2 i S2S3 karakteristinih za linearnu protonost, postoje i
feedforward veze (S1S3) te feedback veze (S3S1 i S3S2).

Nelinearne veze omoguavaju realizaciju razliitih funkcija. Zauzetost pojedinih


protonih stepena za realizaciju date funkcije obino se prikazuje pomou tzv. rezervacionih
tabela. Za statiku protonost potrebna je samo jedna rezervaciona tabela, a kod dinamike
protonosti potrebno je onoliko tabela koliko ima funkcija.
vrijeme
1
S1
S2
S3

vrijeme

1
S1

S2

X
X

Rezervaciona
tabela statine
protonosti

S3

vrijeme

X
X

1
S1

Rezervaciona tabela za realizaciju


funkcije X

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.

kolizija u sluaju latentnosti reda 2

kolizija u sluaju latentnosti reda 5

3-16

Ostale latentnosti, koje ne izazivaju koliziju, su dozvoljene.

Osnovni zahtjev je postizanje minimalne latentnosti. Postoji nekoliko tehnika za


odreivanje i implementaciju minimalne latentnosti, kao to su: kolizioni vektor, dijagrami
stanja, uvoenje stanja ekanja itd.
Kolizioni vektor

Kolizioni vektor formira se na osnovu rezervacione tabele. To je m-bitni vektor, gdje


je m n-1 maksimalna zabranjena latentnost, a n-broj kolona u rezervacionoj tabeli. Ako se
sa p oznai dozvoljena latentnost, tada nam treba 1 p m-1. Idealno je p=1, to odgovara
statikoj (linearnoj) protonosti. Kolizioni vektor je oblika
C = (C m C m 1C m 2 KC 2 C1 ) .
Bit Ci kolizionog vektora pokazuje da li je latentnost reda i dozvoljena (Ci = 0) ili zabranjena
(Ci = 1).
Primjer:

Za funkciju X ija je rezervaciona tabela


1
S1

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)

Vidi se da su dozvoljene latentnosti 1, 3 i 6, a nedozvoljene 2, 4, 5 i 7.


3-17

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:

Formirati dijagram stanja za funkciju X iz prethodnog primjera.


Za datu funkciju kolizioni vektor (prethodni primjer) je C=(1011010).
Dozvoljene latentnosti su 1, 3 i 6.
I svaka latentnost 8 takoe je dozvoljena (ali tada se gubi smisao protonosti).
Za latentnost reda 1 imamo
C7

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

Za latentnost reda 3 imamo


C7

C6

C5

C4

C3

C2

C1

Inicijalni kol. vektor

ift za 3 bita

OR

ponovo ift za 3 bita

OR

ift za 6 bita

OR

3-18

mogue latentnosti 3 i 6
ostalo isto
ostalo isto

Za dati sistem moe se nacrtati sljedei dijagram stanja


Mogua su tri stanja:
1011010
1011011
1111111
Naznaene strelice oznaavaju
mogue prelaske iz stanja u stanje
Na osnovu dijagrama stanja mogu da se formiraju sekvence (putanje) koje
obezbjeuju protonost bez kolizije, npr. (1,8), (3), (6), (1,8,3,8), (3,6), (3,6,3), (3,8) itd.
Ovakvih sekvenci ima beskonano.
Od interesa su jednostavne putanje: (3), (6), (8), (1,8), (3,8), (6,8). To su putanje kod
kojih se svako stanje pojavljuje samo jedamput.
Posebno su znaajne jednostavne putanje koje imaju minimalnu, odnosno minimalnu
prosjenu latentnost. Npr. putanja (3) ima minimalnu latentnost koja iznosi 3, dok putanja
(1,8) ima minimalnu prosjenu latentnost (1+8)/2=4.5.
Konaan izbor predstavlja putanja s minimalnom (prosjenom) latentnou, a to je u
ovom sluaju (3). MAL = Minimal Average Latency.
Metode optimizacije

Metode optimizacije svode se na smanjivanje minimalne prosjene latentnosti. MAL


moe da se redukuje uvoenjem elemenata za kanjenje, odnosno stanja ekanja.
Primjer:

Posmatra se nelinearni protoni sistem

Neka je rezervaciona tabela


1
S1

S2

S3

Na osnovu rezervacione tabele imamo kolizioni vektor C=(1011). Uzmimo C kao


inicijalni kolizioni vektor. Dozvoljena latentnost je 3.
C4 C3 C2 C1
Inicijalni KV

ift za 3 bita

OR

ostaje isto stanje

3-19

Dijagram stanja datog sistema je

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

Uvoenjem elementa za kanjenje mijenja se rezervaciona tabela.


1
S1
S2

1
S1

X
X

S3

X
X

S4

S2
S3

S4

6
X

X
X

X
D

Sada je kolizioni vektor C=(10010).


C5

C4

C3

C2

C1

Inicijalni kol. vektor

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

Dijagram stanja modifikovanog sistema dat je na sljedeoj slici


6+

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.

Propusnost i efikasnost nelinearnog protonog sistema

Optimizacija MAL poveava propusnost sistema.


Propusnost se moe definisati kao broj taskova (N) zapoetih za n ciklusa
Hk =

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:

Tri funkcionalna protona sistema f1, f2 i f3 karakteriu sljedee rezerv. tabele

Na bazi ova tri sistema formiran je sloeni protoni sistem

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

Kolizioni vektor sloenog sistema je C=(C9C8C7C6C5C4C3C2C1)=(111000111).


C9 C8 C7 C6 C5 C4 C3 C2 C1
Inicijalni k.v.
ift 4
OR
ift 6
OR
ift 5
OR
ift 5
OR
ift 6
OR
ift 6
OR

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

Dijagram stanja sloenog protonog sistema dat je na sljedeoj slici


6

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

Karakteristina je za 80386 i 80486 procesore. Koristi se za usklaivanje brzine rada


procesora i memorije, jer je procesor bri od DRAM-a, pa bi u normalnoj komunikaciji
procesor ekao (uvodio bi stanje ekanja) da DRAM postavi ili uzme podatke sa magistrale, a
kod pipelininga nema ekanja ve se to vrijeme koristi za pribavljanje nove instrukcije. Kod
sistema koji ne podravaju pipelining uvodi se stanje ekanja
itanje podataka iz memorije bez
korienja pipelininga (kod 80386)

itanje podataka iz memorije uz korienje


pipelininga (kod 80386)

Non-pipelined mod ukljuuje se ako se NA*


(Next Address) pin dri na "1"
ADS* pin oznaava da je adresa vaea

3-23

memoriji se obezbjeuje dodatno vrijeme, jer


se adresa na adresnu magistralu postavlja
ranije
pipelined mod ukljuuje se dovoenjem NA*
pina na "0" i leovanjem date adrese
adresnim leom (le prihvata adresu na strob
signal ADS*)
adresa se postavlja prije pa se ukupno
vrijeme raspoloivo DRAM-u produava i ne
moraju se uvoditi stanja ekanja, odnosno
mogu se koristiti sporije memorijske
komponente

3.3.2. SUPERSKALARNE I SUPERPROTONE ARHITEKTURE


SUPERSKALARNA ARHITEKTURA

Osnovna skalarna maina ima mogunost pribavljanja jedne nove instrukcije u


svakom takt periodu. Superskalarna maina reda m ima mogunost da istovremeno pribavlja
m novih instrukcija u svakom takt periodu. Uopte, superskalarna maina reda m moe da se
posmatra kao m paralelnih konkurentnih protonih sistema.

Za izvrenje N instrukcija osnovnoj skalarnoj maini potrebno je vrijeme


T (1,1) = [k + N 1] T
Za izvrenje N instrukcija superskalarnoj maini reda m potrebno je vrijeme
N m

T (m,1) = k +
T .
m

pa je faktor ubrzanja superskalarne maine reda m u odnosu na osnovnu skalarnu mainu


T (1,1) m (k + N 1)
S (m,1) =
=
T (m,1) N + m (k 1)
Primjer superskalarne maine: Cray-1.
SUPERPROTONA ARHITEKTURA

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.

Za izvrenje N instrukcija superprotonoj maini reda n potrebno je vrijeme


1

T (1, n ) = k + (N 1) T .
n

pa je faktor ubrzanja superprotone maine reda n u odnosu na osnovnu skalarnu mainu


T (1,1) n (k + N 1)
S (1, n ) =
=
T (1, n )
nk + N 1
Primjer superprotone maine: MIPS R4000.
3-24

SUPERPROTONO-SUPERSKALARNA ARHITEKTURA

Superprotono-superskalarna maina reda (m,n) izvrava m instrukcija svakih 1/n


osnovnog takt perioda.

Vrijeme potrebno za izvrenje N instrukcija u ovakvoj maini je


N m

T (m, n ) = k +
T .
mn

pa je faktor ubrzanja u odnosu na osnovnu skalarnu mainu


T (1,1)
mn (k + N 1)
=
S (m, n ) =
T (m, n )
mnk + N m
Primjer maine: DEC Alpha (m = 2, n = 6).
SUPERSKALARNA ARHITEKTURA KOD INTELOVIH PROCESORA

Karakteristina je za Pentium procesore.


Pentium ima tri izvrne jedinice (execution unit): jedna izvrava floating point
instrukcije, a druge dvije (U-pipe i V-pipe) izvravaju integer instrukcije. Ovakva arhitektura
omoguava simultano izvravanje tri instrukcije, npr.
FADD ST,ST(2)

MOV EAX,10h

MOV EBX,12h

jer ove tri instrukcije nisu meusobno zavisne.

3-25

3.4. NAPREDNE TEHNIKE UPRAVLJANJA MEMORIJOM


3.4.1. PLANIRANJE MEMORIJSKE ORGANIZACIJE
Memorijski podsistem raunarskog sistema najee je hijerarhijski organizovan.
Svaki od nivoa karakteriu sljedei parametri: vrijeme pristupa do tog nivoa (ti), kapacitet
(Si), cijena (ci), propusni opseg izmeu tog i narednog nivoa (bi) te jedinica transfera
podataka (xi) npr. bajt.

Stopa pogaanja (hit ratio) hi definie se kao vjerovatnoa da je zahtijevana informacija


raspoloiva na nivou Mi.
Stopa promaaja (miss ratio) definie se kao 1-hi.
Frekvencija pristupa (access frequency) nivou Mi definie se kao

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

Efektivno vrijeme pristupa (effective access time) definie se kao


n

Teff = f i t i =h1 t1 + (1 h1 ) h2 t 2 + L + (1 h1 )(1 h2 )L (1 hn 1 ) t n


i =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

Optimalno planirana memorija cijenom je bliska CtotalCn, a efektivnim vremenom


pristupa Tefft1. Problem projektovanja optimalnog hijerarhijskog memorijskog sistema svodi
se na problem minimizacije efektivnog vremena pristupa uz odgovarajua ogranienja

S i > 0, t i > 0, za i = 1, 2, K, n
C total < C zadato
Primjer:

Treba projektovati hijerarhijski memorijski sistem sa tri nivoa koje karaktreiu


sljedei parametri:
i

memorijski nivo

vrijeme pristupa (ti)

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

Treba postii efektivno vrijeme pristupa t=10s sa stopom pogaanja kea


h1=0.98 i stopom pogaanja glavne memorije h2=0.9. Pored toga, ukupna cijena
memorijskog sistema ne smije prei 1000 KM.
Rjeenje:
Ukupna cijena memorije
n

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 =

= 0.98 25 10 -9 + (1 0.98) 0.9 t 2 + (1 0.98)(1 0.9) 4 10 -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

to je dopustivo jer su vremena pristupa RAM-u reda n10ns.

3-27

3.4.2. VIRTUELNA MEMORIJA


Glavna memorija se esto naziva i fizika memorija. U njoj se nalaze programi tokom
izvravanja te potrebni podaci i rezultati. Zbog ogranienosti glavne memorije ne mogu svi
programi biti istovremeno u njoj, ve samo aktivni programi ili neki njihovi dijelovi. Ostatak
se dri u sekundarnoj memoriji (npr. disk), koja predstavlja virtuelno proirenje glavne
memorije. Kad zatrebaju, potrebni dijelovi se uitavaju iz sekundarne memorije u glavnu, a
nepotrebni dijelovi smjetaju se u sekundarnu memoriju. Ove izmjene odvijaju se pod
kontrolom operativnog sistema. Postoje razliiti modeli implementacije koncepta virtuelne
memorije, kao to su stranienje, TLB, segmentacija itd.
VIRTUELNA MEMORIJA KOD INTELOVIH PROCESORA 80X86
Procesori 80386 - 80486

Raspolau posebnom funkcionalnom jedinicom za upravljanje memorijom (Memory


Management Unit MMU) koja je zaduena za prevoenje virtuelne adrese (adresa koju
generie program) u fiziku adresu (adresa konkretne memorijske lokacije u fizikoj
memoriji).
Virtuelna adresa prvo se prevodi u linearnu adresu, na osnovu bazne adrese segmenta
(deskriptor) i offseta

Linearna adresa se nakon toga prevodi u fiziku, ime se omoguava pristup


konkretnoj fizikoj lokaciji u fizikoj memoriji.
Da bi se pristupilo odreenoj fizikoj adresi koristi se mehanizam stranienja.
Stranice su duine 4 KB. Prevoenje logike adrese u fiziku odvija se na dva nivoa
koritenjem direktorijuma stranica (page directory) i tabele stranienja (page table).
Direktorijum stranica je duine 4 KB i omoguava 1024 4-bajtna podatka o tabelama
stranienja. Svaka tabela stranienja je duine 4 KB i sadri adrese 1024 fizike stranice.
Poto je svaka stranica duine 4 KB jednom tabelom stranienja moe da se alocira 4 MB.

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

MMU Pentiuma slian je onom kod 80386/80486 procesora. Mehanizam za


stranienje omoguava rad sa 4kB-nim ili 4MB-nim stranicama. Ako se radi o stranicama
duine 4 MB tada se gubi potreba za tabelom stranienja, jer se itav adresni prostor od 4GB
moe alocirati sa 1024 podatka u direktorijumu stranica.

3-29

POLITIKA ZAMJENE STRANICA

Ako se referencirana stranica ne nalazi u glavnoj memoriji potrebno ju je uitati iz


sekundarne memorije. Problem nastaje kada treba odrediti koju stranicu treba iz glavne
memorije smjestiti na disk kako bi se na njeno mjesto uitala potrebna stranica. Postoji
nekoliko tehnika kojima se ovo rjeava:
LRU (Least Recently Used) - mijenja se stranica koja najdue nije referencirana
LFU (Least Frequently Used) - mijenja se stranica koja je najrjee referencirana u
prolosti
FIFO (First In First Out) - mijenja se stranica koja je najdue u memoriji
Random - mijenja se sluajno izabrana stranica.
Primjer:

Posmatrajmo sistem kod kojeg je implementiran koncept virtuelne memorije na


dva nivoa: M1 - glavna memorija, M2 - disk. Neka su duine stranica 4 rijei.
Pretpostavimo da se u glavnoj memoriji mogu nalaziti 3 stranice (npr. a, b, c), a
na disku imamo 10 stranica (0, 1, 2, ..., 9). Neka konkretan program generie
sljedee adrese potrebnih rijei:
0,1,2,3,4,5,6,7,8,16,17,9,10,11,12,28,29,30,8,9,10,4,5,12,4,5.
Pretpostaviti da je na poetku memorija prazna. Koristei LRU i FIFO tehnike
vriti zamjene stranica u glavnoj memoriji potrebnim stranicama s diska.
Prikazati raspored stranica u glavnoj memoriji tokom izvravanja programa, a na
kraju odrediti stopu pogaanja za svaku od koritenih tehnika.
Rjeenje:
adrese
stranice
generisane
adrese
stranice

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

Ke memoriji moe se pristupati koritenjem fizike ili koritenjem virtuelne adrese.


Fiziki adresibilan ke

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

Virtuelna adresa istovremeno se prosljeuje i keu i MMU, ime se zaobilazi


posredovanje MMU. Problemi nastaju kad vie procesa koristi iste virtuelne adrese.

PRENOS PODATAKA IZMEU GLAVNE MEMORIJE I KEA

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

Omoguava veu fleksibilnost u mapiranju blokova u odnosu na direktno mapiranje.


Svaki blok iz glavne memorije moe biti mapiran u bilo koji od okvira u keu. Zbog toga su
tagovi okvira s-bitni.

Ovdje moraju da se porede svi tagovi sa zadanim u memorijskoj adresi, to moe


dugo da traje. Zbog toga je potrebna asocijativna memorija za paralelno poreenje svih
tagova istovremeno. Ovo je glavni nedostatak ovakvog kea.

3-32

Set-asocijativni ke

Koristi tehniku koja predstavlja kompromis izmeu direktnog mapiranja i potpuno


asocijativnog kea. Ako se ispravno isprojektuje moe da obezbijedi najbolji odnos
performanse/cijena.
Ovdje se u m okvira dijeli na v setova sa po k okvira u svakom setu, m=vk. Svaki set
identifikuje se sa d bita (2d=v). Sada su tag registri duine s-d bita. Setovi imaju 2, 4, 8, 16 ili
64 okvira (zavisno od duine blokova te odnosa performanse/cijena).
Potpuno asocijativni ke moe se posmatrati kao set-asocijativni ke kod kojeg imamo
jedan set (v=1) sa k=m okvira. Uopte, blok Bj moe biti mapiran u bilo koji okvir Bf seta Si
ako je i = j (mod v).

Ke sa sektorskim mapiranjem

Ke i glavna memorija dijele se na sektore fiksne duine, a zatim se primjenjuje


tehnika potpune asocijativnosti (svaki sektor moe biti smjeten u bilo koji od okvira u keu).
Kad se zahtijeva pristup odreenom bloku prvo se identifikuje kojem sektoru pripada
(asocijativno). Ako je sektor u keu tada se pristupa konkretnom bloku u tom okviru. Ako
sektor nije ve u keu onda se traeni blok (ne sektor) iz memorije uitava u odgovarajui
okvir bloka u nekom od sektora. Ostali blokovi u tom sektoru kea oznaavaju se kao
nevaei i tek kasnije se mogu zamijeniti adekvatnim blokovima iz memorije.

3-33

KEIRANJE KOD INTELOVIH PROCESORA 80X86


80486

ke memorija koristi se za dranje i podataka i instrukcija


ke je organizovan linijski (4 * 32 bita = 4 * 4 bajta = 4 dvostruke rijei)
funkcionie kao write-through sistem
karakteristino imamo 8kB ke
ke se kontrolie posredstvom Cache Test registara

registar TR3 koristi se za testiranje podataka u keu


registar TR5 odreuje koja se linija kea testira (koja linija od njih ukupno 128
koliko ih ima u 8kB), ent biti odreuju kojem podatku u liniji se pristupa, a con
biti definiu operaciju (itanje, upis i dr.)

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

Anda mungkin juga menyukai