You are on page 1of 14

Performanske procesora

Najjednostavniji parametar kojim se mogu meriti performanske računarskih sistema i


proteklo vreme izvršavanja odredjenog programa (elapsed time).Poredjenje vremena
potrebnog za izvršavanje odredjenog programa na dva računarska sistema moguće je
utvrsiti odnos performansi ta dva računarska sistema.Ovo vreme predstavlja ukupno
proteklo vreme, od početka izvršavanja programa do njegovog završetka. Potrebno je
napomenuti da ovo vreme nije merodavan parametar, jer računarski sistem pored testnog
programa izvršava i niz drugih programa usled timesharing-a i multitasking-a, koji
povećava ukupno vreme izvešenja ispitivanog programa. Zbog toga se uvodi procesorsko
vreme CPU time, koje predstavlja vreme koje procesor isključivo provede u izvršavanju
programa.

Primer 1.
Program u Matlab-u pokazuje razliku izmedju proteklog i procesorskog vremena na
primeru sortiranja 10000 članova nasumično generisanog niza.

clear all;
clc;

%broj clanova u nizu


n=50000;
%generisanje n-celobrojnih nasumicnih clanova niza
%na intervalu (0-10000)
a=round(1000*rand(n,1));
b=a;
c=a;
%Elapsed time
t=clock;
for i=1:n-1
for j=i+1:n
if b(i)>b(j)
temp=b(i);
b(i)=b(j);
b(j)=temp;
end;
end;
end;
Elapsed_time=etime(clock,t)

%CPU time
tic;
for i=1:n-1
for j=i+1:n
if c(i)>c(j)
temp=c(i);
c(i)=c(j);
c(j)=temp;
end;
end;
end;
CPU_time=toc

Quick sort algoritam ima kompleksnost t=f(n2).


Procesorsko vreme, koje predstavlja vreme potrebno za izvrsavanje programa moze se
rasclaniti prema sledecem .

CPU_Time=time/program=(time/cycle) *( cycle/instruction) *( instruction/program)

(time/cycle) – Clock Cycle Time


(cycle/instruction) - Cycles per Instruction
( instruction/program) – instruction count

Clock cycle time predstavlja vreme trajanja jednog taktnog impulsa i ono je obrnuto
proporcionalno frekvenciji na kojoj radi procesor. Povecanje frekvencije rada procesora
ograniceno je tehnologijom izrade na silicijumskog cipu.

Tokom dugog niza godina radna frekvencija unutar procesora se povecavala, dok se
smanjivala rezolucija tehnologije iste.
Poslednjih godina zaustavljen je rast frekvencije procesora na 3GHz.

Dva kljucna problema koja su zaustavila dalje poboljsanje brzine procesora su:
1. teorijska frekvencija na kojoj mogu raditi poluprovodnicke je 5Ghz i zagrevanje
usled velike radne frekvencije i velikog broja tranzistora u procesoru. GaAs –
50Ghz ima niz prednosti ali je tehnologija izrade komplikovanija.

CPUTime=Clock_cycle_Time*CPI*Instruction_count

CPI – Cycles Per Instruction

Jedan od nacina da se smanji duzina izvrsavanja operacija je koriscenje hardverski


implementiranih ( podrzanih ) instrukcija.

Savremeni procesori poseduju aritmeticke jedinice za rad sa celim brojevima i brojevima


u pokretnom zarezu, kao i niz drugih jedinica koje instrukcije izvrsavaju za svega par
taktnih intervala. Time se znacajno stedi na vremenu izvrsavanja ali se povecava
kompleksnost procesora.

Primer PIC mikrokontroler hardverski mnozac i softverski mnozac.


Operacija Metod Broj Broj taktova Vreme@40Mhz
instrukcija
8x8 bez znaka Softverski 13 69 6.9 mikroSec
8x8 bez znaka Hardverski 1 1 100 nanoSec
8x8 sa znakom Softverski 33 91 9.1 mikroSec
8x8 sa znakom Hardverski 6 6 600 nanoSec
16x16 sa Softverski 52 254 25.4 mikroSec
znakom
16x16 sa Hardverski 35 40 4 mikroSec
znakom
Podaci su za mikrokontroler PIC 18 F serije koji poseduje 8x8 bitni hardverski mnozac
neoznacenih brojeva.

Primer Praracun prosecne duzine instrukcija

Instrukcije broj taktova zastupnost u kodu


LOAD 5 25%
STORE 5 15%
ALU 5 40%
Branch ( grananje ) 3 15%
Ostale 6 5%

CPI=
 L(i ) P (i )  5 * 025  5 * 015  5 * 0.4  3 * 0.15  6 * 0.03  4.75taktova / isntrukciji

PIPELINING
Kod arhitekture starijih procesora instrukcije su izvrsavane jedna za drugom i izvrsenje
naredne instrukcije pocinjalo je tek kada se zavrsi prethodna instrukcija. Pretpostavimo
da svaku instrukciju mozemo podeliti na 5 faza .

1. Dohvatanje isntrukcija (IF – instruction fetch)


2. Decodiranje instrukcije (ID – Instruction Decode)
3. pristup memoriji (MEM – Memory Access)
4. Izvrsenje (EX – Execution )
5. ispis rezultata ( WB – Write Back)

Ako svaka faza instrukcije traje 1 taktni interval ( pretpostavka) onda ce za izvrsenje
jedne isntrukcije biti potrebno 5 taktnih intervala, a za izvrsenje 5 isntrukcija bice nam
potrebno 25 taktnih intervala.

Instrukcija i
IF ID MEM EX WB
Instrukcija i+1
IF ID MEM EX WB
Instrukcija i+2
IF ID MEM EX WB
Vreme t

Posto razliciti delovi procesora , ucestvuju u razlicitim fazama izvrsenja instrukcije


primecujemo da su oni veci deo vremena neiskorisceni. U novijim procesorima
primenjuje se paralelizam na nivou instrukcija tzv PIPELINING.
Ovim pristupom deo procesora koji zavrsi jednu fazu jedne instrukcije nastavlja izvrsenje
iste faze sledece instrukcije.To znaci da se u jednom taktnom intervalu moze istovremeno
izvrsavati 5 faza razlicitih instrukcija. Stoga ce izvrsavanje 5 instrukcija na ovakvom
racunaru trajati 5 taktnih impulsa, sto je umnogome brze od procesora koji ne poseduje
PIPELINING.

Instrukcija i
IF ID MEM EX WB
Instrukcija i+1
IF ID MEM EX WB
Instrukcija i+2
IF ID MEM EX WB
Instrukcija i+3
IF ID MEM EX WB
Instrukcija i+4
IF ID MEM EX WB
Vreme t

U poslednej vreme pocelo se sa primenom super skalarnih arhitektura procesora koji


istovremeno mogu izvrsavati dve ili vise isntrukcija na dve ili vise procesnih jedinica.

Instrukcija

Instrukcija i
IF ID MEM EX WB
Instrukcija i+1
IF ID MEM EX WB
Instrukcija i+2
IF ID MEM EX WB
Instrukcija i+2
IF ID MEM EX WB
Instrukcija i+3
IF ID MEM EX WB
Instrukcija i+3
IF ID MEM EX WB

Instruction Count – predstavlja broj masinskih instrukcija od kojih se sastoji napisani


program. On u mnogove zavisi od seta raspolozivih masinskih isntrukcija. Dalje
smanjenje broja instrukcija moze se izvrsiti optimizacijom koda od strane programera
koji ga pise, kao i koriscenjem efikasnih kompajlera, koji dati kod napisan u jeziku viseg
nivoa ( HLL) prevodi u masinski jezik.
Primer. Optimizovan kod
clear all;
close all;
clc;
n=10000;
a=round(1000*rand(n,1));

b=a;
c=a;
d=a;
m=n;
%Buble sort - najsporiji algoritam;
t1=cputime;
sorted=false;
while sorted ~=true
sorted=true;
m=m-1;
for i=1:m
if b(i,1) > b (i+1,1)
temp=b(i,1);
b(i,1)=b(i+1,1);
b(i+1,1)=temp;
sorted=false;
end;
end;
end;
t1=cputime-t1

%Quick sort
t2=cputime;
for i=1:n-1
for j=i+1:n
if c(i)>c(j)
temp=c(i);
c(i)=c(j);
c(j)=temp;
end;
end;
end;
t2=cputime-t2

%Matlab sort algoritam


t3=cputime;
d=sort(d);
t3=double(cputime-t3)

OUTPUT
t1 =
9.3125
t2 =
3.3750
t3 =
0.0156
>>
Parametri performansi procesora

Parametri performansi procesora predstavljaju vrednosti kojima se kvantitativno


izrazavaju performanse jednog procesora. Najjednostavniji pokazatelj performansi je
vreme izvrsavanja nekog programa.

CPU_Time=time/program=(time/cycle) *( cycle/instruction) *( instruction/program)

(time/cycle) – Clock Cycle Time


(cycle/instruction) - Cycles per Instruction
( instruction/program) – instruction count

CPUTime=Clock_cycle_Time*CPI*Instruction_count

CPI – Cycles Per Instruction

Prva dva faktora (Clock_cycle_Time,CPI) koja uticu na brzinu izvrsavanja programa


vezana su za tehnologiju izrade procesora i njegovu arhitekturu . Pomocu njih se definise
parametar koji predstavlja broj izvrsenih instrukcija u jedinici vremena.

MIPS (Million Instruction Per Second)

MIPS=1/(Clock_Cycle_Time*CPI*106)

Ovaj parametar nije bas najpouzdaniji pokazatelj performansi jednog procesora jer
njegove vrednosti zavise od primenjenog programa za testiranje, tj od tipa koriscenih
instrukcija. Koristi se kod RISC procesora.

Ovaj parametar se najcesce koristi pri definisanju performansi RISC procesora


(mikrokontroleri) , koji koriste redukovani set instrukcija koje su iste duzine i izvrsavaju
se za isto vreme.
Drugi mnogo korisceniji parametar za definisanje performansi procesora je broj operacija
u pokretnom zarezu. Jedinica je FLOPS ( Floating point Operations Per Second ).

Jedan od najcesce koriscenih nacina za odredjivanje ovog parametra je pomocu


LINPACK paketa za resavanje problema iz linearne algebre.

Sistem on n linearnih jednacina 2*n3/3 + 2*n2 operacija

Mnozenje matrica
X=A/B = A*B-1

clear all;
clc;
clf;
i=1;
for n=100:100:2000
clear A;
clear B;
A=randn(n,n);
B=randn(n,1);
tic;
x=A\B;
t=toc;
n;
mflops(i)=(2/3*n^3+2*n^2)/(t*1.e6);
i=i+1;
end;
plot(mflops)

900

800

700

600

500

400

300

200

100
0 2 4 6 8 10 12 14 16 18 20

Matlab primer testiranje


>>bench
Performanse memorijskog sistema

PREPISATI OD NEKOG IZ SVESKE SA VEŽBI.

Operativna
CPU Keš memorija memorija
SRAM DRAM

Vremenom javio se veliki jaz medju brzine rada procesora i operativne memorije pa je
procesor morao da ceka relativno sporu operativnu memoriju kako bi mu isporucila
trazene podatke.

Uvodjenjem keš memorije koja je mnogo brža od operativne memorije


premošćuje se jaz izmedju brzine procesora i operativne memorije. U keš memoriji se
čuvaju delovi operativne memorije ( blokovi ) koji se u tom trenutku koriste. Ukoliko
procesor zatraži neku memorijsku reč ona se isporučuje relativno brzo ako se nalazi u keš
memoriji. Ako reč nije u kešu neki od nepotrebnih blokova iz keša se zamenjuje sa
blokovima iz operativne memorije koji sadrži tu reč i reč se isporučje procesoru.

Pristup podatku koji je pronadjen u keš memoriji naziva se pogodak odnosno HIT , a
pristup podatku koji nije u keš memoriji je promašaj MISS.
Stopa pogodaka predstavlja procentualno izražen broj pogodaka u odnosu na ukupan broj
pristupa.

h=hit/(hit+miss)

Zadatak. Procesor poseduje dvostepenu keš memoriju čije vreme pristupa iznosi
L1: tl1=30ns uz verovatnoću da se u njoj nalazi podatak od hl1=60% ,L2: tl2=90ns
hl2=90% ,i operativnu memoriju sa vremenom pristupa od 500ns. OM : top=500ns.
Odrediti prosečno vreme pristupa memorijskom sistemu.

m=1-h

tp=hl1*tl1+1-hl1)*hl2*tl2+(1-hl1)(1-hl2)*top
tp=0.6*30+0.4*0.9*90+0.4*0.1*500=18+32.4+20=70.4ns
(1-hl1)=ml1
(1-hl2)=ml2

Povećanje brzine pristupa memorijskom sistemu implementacijom keš memorije zavisi


od:
- performansi memorijskih elemenata ( brzina i kapacitet )
- funkcije preslikavanja memorijskih blokova u keš. ( direktno, potpuno asocijativno, ...)
- zavisnost politike zamene blokova u kešu
- veličine bloka
Performanse operativne memorije

Osnovne performanse memorije.


1.Kapacitet memorije

Cm=2nm

- gde je 2n broj adresibilnih lokacija

- n – broj bitova u adresi

- m – velicina memorijske lokacije

Cm=232 1B=4GB ogranicenje velicine fajlova

2.Vreme pristupa

a) vreme citanja (read time) Tr – predstavlja vreme koje protekne od trenutka


izdavanja zahteva za citanje do trenutka kada je podatak raspoloziv u bufferu memorije.

b) vreme upisa ( write time) Tw – predstavlja vreme koje protekne od trenutka


izdavanja zahteva za upis do trenutka kada se ova operacija zavrsi i kada memorija moze
izvrsiti sledece operacije. Vreme izmedu dva uzastopna citanja ili vreme izmedju dva
uzastopna pisanja.

3. vreme ciklusa ( Cycle time ) Tc

– predstavlja vreme potrebno za uzastopni upis i citanje u istu memorijsku lokaciju.

Tc=(Tr+Tu)/2

4.Velicina memorijske lokacije m predstavlja broj bitova koji se u toku jedne operacije
mogu upisati ili procitati iz operativne memorije

5. Brzina prenosa ( memory transfer rate )

B=m/Tc ( MB/s) - srednja brzina


OE
CS Izlazna
R/W’ logika
D duzine n
Dekoder vrste Memorijsko
A duzine n polje

Dekoder
Memorijska
kolone
celija

Struktura memorijskog cipa

OE – output enable

CS – chip select

R/W – Read/Write’

CAS latency ( column access select ) CL

RAS to CAS latency ( Row to column access delay ) RCD

1’ SDRAM ( Single Data Rate RAM)

- 133MHz

- 64 bitna magistrala

- 1 bit/taktu

B=64*133 / 8bita=1064MB/s
2’ DDR ( Double Data Rate Ram)

-133Mhz ( 266Mhz)

-64 bita

- 2 bita po taktu

B=64*266/8=2128MB/s

3’ DDR2

- 533Mhz

- 64 bita

- 4 bita po taktu

B=4256 MB/s

Iskorišćenost operativne memorije


Iskorišćenje operativne memorije predstavlja efektivni adresni prostor koji je
dostupan korisniku i on je uglavnom manji od fizičkog kapaciteta memorije. On direktno
zavisi od tehnike upravljanja operativnom memorijom.
Tehnike upravljanja memorijom.
1. Monoprogramska – izvršava se samo ojedan program na računaru
2. multiprogramske tehnike – izvršava se više programa na računaru.
a. Nevirvelne tehnike
i. Statičke particije
ii. Dinamičke particije
iii. Relokatibilna memorija
iv. Statičke stranice

b. virtuelne tehnike
i. Dinamičko straničenje
ii. Dinamički segmenti
iii. Demand Page Segmentation
Glabalno iskorišćenje memorije
0 10 20 30 40 50 60 70 80 90 100 %

Monoprogramske tehnike 50%

Staticke particije 60%

Dinamicke particieje 75%

Relokativne particije 85%

Staticke stranice 80%

Dinamicko stranicenje 95%

Dinamicka segmentacija 90 %

Demand Page Segmentation 95 %


Tehnike za ispravljanje gresaka memorije

Ispravljanje gresaka kod poluprovodnickih memorija


Poluprovodnicke memorije su podlozne pojavljivanju gresaka koje se mogu
okarakterisati kao:
- hardverske
- privremene

Hardverska greska predstavlja trajan fizicki kvar grupe memorijskih celija koje se ne
mogu koristiti za pouzdano skladistenje podataka. One su prouzrokovane greskama u
proizvodnji ili eksremnim uticajima iz okoline ( elektricno ili mehanicko ostecenje ili
greske u prozvodnji ili slicno). ONE SE NE MOGU ISPRAVITI.
Privremena greska je slucajan ne destruktivan dogadjaj koji menja sadrzaj jedne ili vise
memorijskih celija bez njihovog ostecenja. One su prouzrokovane usled problema sa
napajanjem elekticnom energijom i usled dejstva visoko energetskihj cestica ( ALFA
cestice).

Vecina savremenih memorijskih sistema ukljucuje logiku za detektovanje i ispravljenje


gresaka.

Parity Check ( provera parnosti)

Parnost Bit parnosti

10110011 | 1
Ecc kodovi (Error Corection Code)

Signal greske

Ispis podataka
korektor

m
Upis podataka m k
f

k Memorija k Poredjenje
f
Prilikom upisa podatka u memoriju izvodi se proracun nad n bita podatka koji je opisan
funkcijom f kako bi se proizveo kod duzine k bitova. U memoriji se skladisti i kod i
podaci. Prilikom citanja podataka iz memorije kod se koristi kako bi se otkrile i spravile
eventualne greske. Na osnovu n bita procitanog podatka formira se skup od n bitova koda
koji se poredi sa kodom uskladistenim u memoriji. Rezultat ovog poredjenja moze biti:
1. Nije detektovana greska i podatak se moze proslediti u izlazni buffer.
2. Otkrivena je greska koja se moze korigovati , osteceni podatak i kod za
ispravljanje greske se prosledjuju korektoru koji u izlazni buffer upisuje
ispravljen(ispravan) podatak.
3. Otkrivena je greska koja se ne moze ispraviti i prosledjuje se signal greske.

Ovi kodovi se nazivaju kodovi za ispravljanje gresaka i oni se karakterisu po broju


gresaka u bitovima koje mogu da otkriju ili isprave. Najjednostavniji kod za ispravljanje
gresaka je Hammingov kod.

Broj bitova Ispravljanje jednostruke greske Ispravljanje jednostruke greske


podataka Detekcija dvostruke greske
Broj bitova % povecanja Broj bitova % povecanja
koda koda
8 4 50% 5 62.5%
16 5 31.25% 6 27.4%
32 6 18.75 7 21.875%
64 7 10.94% 8 12.5%

Koriste se i kod RAID sistema magnetnih diskova.

Iskoriscenost memorije od strane operativnog sistema

You might also like