Sunteți pe pagina 1din 10

Principii si metodologii de testare pentru procesoare

1. Obiectivul lucrarii

Lucrarea de fata isi propune sa prezinte intr-o forma cat mai exacta si eficienta
cateva principii, metodologii de testare si termeni de referinta folositi pentru
masurarea performantelor si compararea diferitelor tipuri de procesoare. Se
urmareste tratarea urmatoarelor aspecte legate de functionarea si evaluarea
performantelor:
a) tipuri de arhitecturi implementate pentru procesoarele de uz general;
b) prezentarea evolutiei tehnologiei in domeniul microprocesoarelor;
c) caracteristici generale ale microprocesoarelor existente.

2. Introducere teoretica

2.1. Microprocesorul

Microprocesorul reprezinta unitatea centrala de procesare (UCP) a unui


calculator, componenta ultracompacta si de o importanta majora; alegerea acesteia
determina limitele performantei si pretul sistemului de calcul. Pentru a intelege
performantele si capacitatile unui calculator, trebuie cunoscute optiunile existente
in materie de microprocesoare. In zilele noastre, majoritateamicroprocesoarelor care
ruleaza software pentru
calculatoare personale (PC – Personal Computer) sunt variante imbunatatite
ale vechiului procesor 8086 si au la baza arhitectura x86.
Datorita popularitatii acestui tip arhitectural, si unele procesoare cu arhitectura
diferita (RISC – Reduced Instruction Set Computer) pot rula software pentru un PC,
emuland functiunile procesoarelor Intel x86 sau incorporand unitati de executie a
instructiunilor compatibile celor de la Intel. De remarcat este faptul ca, datorita
superioritatii evidente a procesoarelor RISC, chiar Intel a preluat pentru ultimele
modele de procesoare concepte RISC, pastrand insa compatibilitatea cu vechea
arhitectura x86 (Procesoarele Pentium Pro, Pentium II, Pentium III, Pentium 4 si Intel
Core).
Termenul de procesor RISC (Reduced Instruction Set Computer) este pus
in comparatie cu cel referitor la procesoarele CISC (Complex Instruction Set
Computer). Procesoarele RISC, aparute pentru prima oara in anii '80, pareau la
inceput predestinate sa domine industria computerelor in anii '90 si sa faca uitate
vechile arhitecturi de calculatoare. Practic, toti producatorii importanti din industria
calculatoarelor ofera acum sisteme gen RISC: gigantii IBM si Hewlett Packard si-
au dezvoltat propriile procesoare RISC, in timp ce alti producatori, ca DEC sau
Siemens, au preferat sa cumpere licente ale unor arhitecturi deja existente pentru a
tine pasul cu concurenta acerba din domeniu.
Procesoarele RISC au inaugurat un nou set de principii arhitecturale. Din
aceasta cauza, notiunea de RISC a fost considerata mai degraba o filozofie decat o
reteta arhitecturala diferita. Punctele relevante ale filozofiei RISC sunt:
 setul de instructiuni trebuie sa fie simplu;
 instructiunile trebuie sa ruleze la cea mai mare viteza posibila;
 notiunea de pipeline este mai importanta decat dimensiunea setului de
instructiuni;
 tehnologia compilatorului este un element critic intr-un procesor RISC:
optimizarea compilatoarelor trebuie sa translateze cat mai mult posibil din
complexitatea hardware-ului catre faza de compilare.
Rezultatele cercetarilor au dat nastere unei arhitecturi mai simple,
caracterizate de instructiuni mai putine, mai multe registre, acces simplificat pentru
incarcarea si depozitarea datelor in memoria principala si posibilitatea executiei
instructiunilor intr-o singura perioada de ceas. Procesoarele RISC au fost folosite
uzual in statiile de lucru foarte puternice pentru aplicatii stiintifice, tehnice si
militare, unde se justificau preturile mari pentru performante inalte.
Odata cu evolutia microprocesoarelor RISC, s-a descoperit ca avantajul
acestora nu consta numai in micsorarea setului de instructiuni, ci si in simplitatea
acestora. Azi, majoritatea microprocesoarelor RISC au cam acelasi numar de
instructiuni ca si cele CISC, de aceea vechea rivalitate RISC/CISC si-a pierdut
semnificatia. Datorita modurilor mai simple de adresare ale instructiunilor RISC,
avand nevoie de un singur acces la memoria principala si putand fi executate intr-un
singur ciclu de ceas, executia lor a putut fi foarte usor implementata in structuri de
tip pipelinesi structuri superscalare care permit executia simultana a mai multor
instructiuni.

2.2. Sisteme de benchmarking

Procesul si metodologiile de testare pentru sistemele de calcul au fost


intotdeauna extrem de variate si s-au bazat pe diferiti algoritmi de testare si standarde
diverse de comparatie. Scopul acestei lucrari este acela de a prezenta o alternativa
de testare a procesoarelor intr-un mod eficient si usor de asimilat. Aplicatia
urmareste explicarea termenilor si a caracteristicilor implicate in procesul de testare
si evaluare a performantelor unui sistem de calcul.

2.2.1. Conceptul de benchmark

Termenul benchmark reprezinta rezultatul rularii unui set de programe sau de


alte operatii atunci cand se doreste evaluarea performantei unui obiect cu ajutorul
aplicarii mai multor teste standard si incercari. Termenul mai este des folosit si
pentru a denumi programe special construite in acest scop. Benchmarking este de
obicei asociat cu evaluarea performantelor caracteristice componentelor hard ale
unui PC, ca de exemplu performanta unui procesor de a calcula in virgula mobila,
dar de asemenea exista circumstante cand aceasta operatie se poate aplica si
componentelor soft. Benchmark-ul de software realizeaza evaluarea performantelor
compilatoarelor si ale managementului bazelor de date integrate in software-ul
evaluat.
Cu cat arhitecturile pentru calculatoare au devenit din ce in ce mai avansate, cu atat a
devenit mai dificila compararea performantelor diferitelor sisteme doar studiind specificatiile.
Prin urmare, s-au dezvoltat teste care pot fi aplicate pe diferite sisteme, si astfel rezultatele
testelor sa poata fi comparate pentru diferite arhitecturi. De exemplu, procesoarele Intel
Pentium 4 in general opereaza la o frecventa de ceas mai mare decat procesorul AMD, dar
acesta nu se traduce neaparat intr-o putere computationala mai mare. Cu alte cuvinte, un
procesor AMD mai lent, datorita frecventei de ceas, poate performa la testele benchmark la fel
ca un procesor Intel cu frecventa mai mare.
Sistemele benchmark sunt create astfel incat sa poata reproduce un anumit tip
de incarcare (workload) pentru o anumita componenta sau pentru un anumit sistem.
Benchmark-urile „sintetice” realizeaza aceasta prin programe speciale care le
impun incarcarea pe componente. Cele „aplicate”, insa, ruleaza programe in timp
real. In timp ce sistemele benchmark „aplicate” ofera de obicei o mai buna masurare
a performantelor in aplicatii reale pentru un sistem dat, cele sintetice se folosesc inca
pentru testarea componentelor individuale, cum ar fi hard disk-ul sau placile de retea.
Sistemele benchmark sunt importante mai ales in designul
microprocesoarelor, dand posibilitatea celor care se ocupa cu designul procesoarelor
de a masura si de a face schimbari in deciziile referitoare la diferitele variante
posibile de microarhitectura.
De exemplu, daca un sistem benchmark extrage algoritmul cheie al unei
aplicatii, el va contine aspectele senzitive ale performantei acesteia. Ruland acest
„fragment” mult mai mic pe un simulator ciclic, el poate oferi indicii in cea ce
priveste imbunatatirea performantei.
Inainte de anul 2000, arhitectii de PC-uri si microprocesoare foloseau pentru
aceasta indicii SPEC (Standard Performance Evaluation Corporation – organizatie
non-profit care produce sisteme de tip benchmark impartiale). Aceasta a fost fondata
in 1988 si finantata de organizatiile membre care includ si producatorii de software
si hardware de top. Pentru a putea folosi un sistem benchmark SPEC, trebuie
cumparata o licenta de la aceasta companie, iar pretul variaza in functie de test de la
cateva sute pana la cateva mii de dolari.
Aceasta modalitate de plata este criticata, deoarece ea intra in neconcordanta
cu licentele GPL (licenta pentru soft gratuit) pe care le are. Benchmark-urile de la
SPEC bazate pe Unix erau lungi si prin urmare greu de folosit in intregime. Asadar,
incepand din 1998, odata cu fondarea EEMBC (Embedded Microprocessor
Benchmark Consortium – Markus Levy si 12 companii reprezentative de
semiconductoare), care era focusata pe imbunatatirea sistemelor de tip benchmark,
arhitectii pot rula pe un algoritm mult mai mic si mult mai focusat.
Urmatoarea provocare pentru EEMBC a fost cea de a micsora consumul de
putere si utilizarea resurselor de energie a procesoarelor, deoarece din ce in ce mai
multe procesoare integrate merg catre medii cu consum mic, cum ar fi telefoanele
mobile sau alte aplicatii mobile. Producatorii de computere s-au straduit de-a lungul
vremii sa-si configureze sistemele astfel incat sa obtina rezultate foarte bune la
sistemele benchmark, desi aceste rezultate nu se pot folosi in aplicatiile practice,
fiind nerealiste.
In anii '80, unele compilatoare puteau detecta diferite operatii matematice
folosite in calculul in virgula mobila si inlocuiau operatia cu una echivalenta mult
mai rapida. Totusi, pana la mijlocul anilor '90, o astfel de transformare era foarte rar
folositoare in afara sistemelor benchmark, pana cand arhitecturile RISC au subliniat
importanta pentru performanta a tehnologiei de compilatoare. Azi, benchmark-urile
sunt folosite in special de companii care dezvolta compilatoare nu numai pentru a-
si imbunatati propriile rezultate, dar si pentru aplicatiile in care acestea se
implementeaza. Sistemele de tip benchmark ofera deci o metoda de a compara
performantele diferitelor subsisteme pentru diferite arhitecturi. In cadrul acestei
lucrari de laborator se folosesc trei tipuri de algoritmi de benchmark, care sunt
prezentati in continuare.

2.2.2. Algoritmul Linpack

Linpack este o librarie software care are ca scop rularea de calcule algebrice
lineare pe un sistem de calcul. Linpack a fost dezvoltat in mediul de programare
Fortran de catre programatorii Jack Dongarra, Jim Bunch, Cleve Moler si Pete
Stewart, iar scopul sau principal era de a fi rulat pe supercalculatoarele dezvoltate in
anii 1970 si 1980. Linpack foloseste functii de baza ale algebrei lineare pentru
efectuarea de operatii cu vectori si matrice.
Sistemul de benchmark Linpack masoara puterea de calcul in virgula mobila
a unui sistem de calcul prin rezolvarea unui sistem de ecuatii lineare de
dimensiune nn, un tip de sistem des intalnit in inginerie. Pentru sistemele paralele
si distribuite, a fost rescrisa o forma adaptata a algoritmului Linpack, denumita HPL
(High Performance Linpack), si care este unul dintre algoritmii standard de testare
pentru clasificarea unui calculator in cadrul TOP 500.
In cazul algoritmului Linpack, trebuie precizat faptul ca pentru aplicatia
dezvoltata in cadrul acestei lucrari s-a ales o dimensiune a sistemului linear de ecuatii
de 500500, datorita aspectului experimental al aplicatiei.

2.2.3. Algoritmul de integrare Monte Carlo

Algoritmul de integrare Monte Carlo are ca scop determinarea


numarului  prin intermediul aproximarii unui cerc. Astfel, se genereaza N numere
aleatoare in interiorul unui patrat predefinit de latura 1, avand cele patru colturi in
punctele de coordonate (0,0), (0,1), (1,0) si, respectiv, (1,1).
Pasul urmator al algoritmului il reprezinta determinarea punctelor generate in
acest spatiu care sunt in interiorul unui cerc unitate, avand centrul in punctul de
coordonate (0,0) si raza r = 1. Aceasta se poate realiza aplicand relatia:

(x2 + y2)½ < r. (1)


Prin alegerea atat a unui patrat de latura 1 cat si a unui cerc de raza 1, se reuseste
simplificarea masiva a problemei, deoarece se poate elimina radacina patrata din interiorul
ecuatiei. Astfel, inecuatia se reduce la forma:

x2 + y2 < 1. (2)

Elementele care se afla in interiorul cercului vor respecta aceasta conditie, iar cele care
nu respecta conditia impusa se afla in afara cercului (vezi figura 1). Aproximarea
numarului  se realizeaza prin obtinerea raportului dintre numarul de puncte aleatoare care se
afla in interiorul cercului si numarul total de puncte generate. Pentru reducerea problemei la un
singur cuadrant, se inmulteste aceasta valoare cu 4. Numarul mediu astfel obtinut reprezinta
aproximarea numarului .

Fig. 1. Reprezentarea geometrica a conditiei x2 + y2 < 1.

Algoritmul de integrare Monte Carlo este deosebit de usor de implementat,


deoarece se poate identifica foarte usor numarul de instructiuni in virgula mobila
efectuate de procesor pentru fiecare numar aleator generat. Astfel, procesorul
consuma trei operatii pentru generarea expresiei x2 + y2 si o operatie pentru
generarea setului (x,y) de numere aleatoare.
Totusi, dezavantajul acestui benchmark este ineficacitatea sa, deoarece implementarea
Monte Carlo returneaza cele mai slabe valori de performanta.

2.2.4. Algoritmul de generare a matricelor

Acest algoritm consta in generarea unui numar de matrice aleatoare (pentru


rezultate concludente se foloseste o valoare foarte mare). Inainte de procedura de
masurare a matricelor, se extrage data sistemului la nivel de milisecunda, iar dupa
terminarea procedurii se extrage data actuala a sistemului si se compara cu prima
valoare.
Odata obtinut numarul de milisecunde necesar pentru generarea aleatoare a
numarului de matrice predefinit, se calculeaza numarul de instructiuni total efectuate
si se raporteaza la durata determinata anterior. Astfel, se obtine intr-un mod foarte
simplu numarul de milioane de instructiuni efectuate per secunda.
Algoritmul de generare a matricelor este cel mai simplu tip de algoritm implementat,
insa si cel mai slab din punct de vedere calitativ. Marele lui dezavantaj este ca nu poate face o
comparatie lineara exacta intre calculatoare diferite.
3. Descrierea aplicatiei

Aplicatia aferenta acestei lucrari de laborator este realizata in mediul de


dezvoltare Visual C#.NET si urmareste dezvoltarea urmatoarelor notiuni:
a) implementarea in cadrul aplicatiei a unui catalog de referinta in ceea ce
priveste tipurile de procesoare existente;
b) implementarea in cadrul aplicatiei a unui modul de testare efectiva in
timp real a performantelor unui procesor.

Fig. 2. Meniul principal al aplicatiei.


Aplicatia contine cate un formular pentru fiecare notiune implementata, un
formular cu meniul principal al aplicatiei, precum si un formular auxiliar, folosit
pentru generarea graficelor de comparatie.
Formularul principal al aplicatiei a fost construit in jurul a doua butoane de
control, corespunzatoare celor doua functii generale ale aplicatiei. Acestea sunt
separate vizual conform celor doua module majore: tipuri si familii de procesoare,
respectiv, benchmark procesor (vezi figura 2).
Al doilea formular care aferent aplicatiei este formularul intitulat Tipuri si
familii de procesoare. Rolul sau este de prezentare a unui catalog cu tipurile si
tehnologiile de procesoare existente. Acest formular opereaza cu doua ferestre de tip
text in care se vor afisa informatiile despre procesoarele selectate (vezi figura 3).
Fig. 3. Formularul Tipuri si familii de procesoare.

De asemenea, s-au adaugat si doua ferestre de tip picture, a caror functie este
de a afisa informatii grafice legate de procesoarele selectate de catre utilizator. Ca
element ajutator, s-au inclus si doua scrollbar-uri verticale, care permit utilizatorului
o manipulare mai usoara a textului afisat.
Al treilea formular dezvoltat in cadrul aplicatiei este intitulat Benchmark
procesor si are in vedere implementarea algoritmilor de benchmark pentru o
evaluare eficienta a performantelor procesorului pe care urmeaza a se rula aplicatia.
Acest formular este compus din cinci butoane de comanda si un control de generare
a graficelor. Controalele de tip buton sunt folosite pentru manipularea formularului
de catre utilizator, iar controlul de generare de grafice este folosit pentru afisarea
graficului propriu-zis. Din punct de vedere al utilizatorului, parcurgerea acestui
formular decurge in modul urmator (vezi figura 4).
In cadrul procedurii de incarcare a formularului se parcurg toate optiunile
puse la dispozitie. Butonul de comanda Testare cu ajutorul algoritmului de generare
matrice declanseaza procesul de calcul, aplica algoritmul de calculare a
performantei procesorului descris in platforma si returneaza un rezultat masurat in
MFLOPS (Millions FLoating Operations Per Second).
Fig. 4. Formularul Testare procesor.

Al doilea buton de comanda, Testare cu ajutorul algoritmului Monte Carlo, porneste


procesul de testare cu ajutorul algoritmului Monte Carlo, descris anterior, si de asemenea
returneaza un rezultat masurat tot in MFLOPS.
Butonul de comanda numarul 3 se refera la metoda Testare prin setul de algoritmi
Linpack, care testeaza procesorul prin intermediul setului Linpack, folosit si pentru masurarea
performantelor supercalculatoarelor.
Butonul Afisare grafic ruleaza codul pentru randarea graficului in interiorul controlului
de generare de grafice, iar graficului ii pot fi adaugate spre comparatie si rezultatele obtinute
anterior ale altor calculatoare.
Butonul Resetare grafic functioneaza prin resetarea variabilei de redesenare si
regenerarea formularului pentru a permite utilizatorului sa selecteze alte valori.

4. Desfasurarea lucrarii

1. Se parcurge introducerea teoretica pentru intelegerea aspectelor care stau


la baza aplicatiei.
2. Se parcurge capitolul de descriere a aplicatiei pentru aprofundarea
optiunilor pe care aplicatia le pune la dispozitie.
3. Se lanseaza aplicatia de testare a procesoarelor: Procesoare.exe.
4. Se deschide formularul Tipuri si familii de procesoare si se compara
tipurile de procesoare prezentate in cadrul acestui formular. Se urmareste
explicarea evolutiei microprocesoarelor odata cu trecerile de la o generatie
la alta.
 Se selecteaza in prima caseta un procesor ale carui specificatii si
imagini vor fi afisate pe ecran.
 Se selecteaza in cea de-a doua caseta un procesor ale carui specificatii
si imagini vor fi afisate pe ecran.
 Se compara diferentele dintre cele doua procesoare, urmarind din lista
parametrilor doar pe cei care indica performanta.
 Se procedeaza intr-un mod similar pentru doua seturi de procesoare
disponibile, alese dintre cele mai recent aparute.
5. Se deschide formularul Benchmark procesor si se ruleaza cei trei
algoritmi de evaluare a performantelor. Se compara performantele cu cele
ale procesoarelor disponibile in caseta Alegeti calculatoare pentru
comparatie. De asemenea, se compara rezultatele obtinute pe statia de
lucru curenta (ale carei performante vor fi afisate implicit) cu rezultatele
obtinute pe alte statii de lucru din retea.
 Se actioneaza butonul Testare cu ajutorul algoritmului Monte Carlo si
se noteaza rezultatul obtinut.
 Se actioneaza butonul Testare cu ajutorul algoritmului de generare
liste matrice si se noteaza rezultatul obtinut.
 Se actioneaza butonul Testare prin setul de algoritmi Linpack si se
noteaza rezultatul obtinut.
 Daca se doreste comparatia cu alte procesoare ale caror valori sunt
predefinite in cadrul programului, se selecteaza
procesorul/procesoarele dorit(e) din cadrul ferestrei cu optiuni aflate
in coltul din stanga-jos al interfetei aplicatiei.
Atentie! Desi se pot selecta mai multe procesoare simultan pentru
comparatie (maximum 5), este recomandat sa se selecteze un singur
procesor sau maximum doua, astfel incat generarea graficului pentru
comparatie sa fie cat mai exacta.
 Se actioneaza butonul Afisare grafic si se studiaza graficul comparativ
obtinut.
 Daca se doreste generarea unui grafic nou, se actioneaza
butonul Resetare grafic si se reiau masuratorile, astfel incat pe
ansamblul tuturor determinarilor sa intervina in comparatie toate
procesoarele din lista disponibila.

5. Intrebari

1. Definiti diferentele dintre procesoarele CISC (x86) si RISC.


2. Explicati cum s-a transat rivalitatea dintre arhitecturile RISC si CISC.
3. Definiti conceptele de benchmark si benchmarking.
4. Care este diferenta dintre un benchmark „sintetic” si unul „aplicat”?
5. Ce reprezinta un sistem de benchmark de tip SPEC si cum este utilizat
acesta?
6. Care sunt considerentele pentru care se limiteaza dimensiunea sistemului
de ecuatii in cazul algoritmului Linpack?
7. Cum se explica usurinta in implementare a algoritmului de integrare
Monte Carlo? Dar rezultatele slabe returnate de acesta?
8. Cum se obtine valoarea MIPS in cazul algoritmului de generare a
matricelor?
9. Explicati diferentele dintre cei trei algoritmi de benchmark implementati.
10. Cum se realizeaza comparatia intre performantele calculatorului curent si
cele ale unui calculator predefinit?
11. Cum se modifica rezultatele produse prin rularea unui test de performanta
pentru procesoare daca se dubleaza memoria instalata a sistemului de calcul?
12. Ce influenta are arhitectura interna a unui procesor asupra rezultatelor
unui test de tip benchmark?
13. Cum se poate rezolva in cadrul aplicatiei selectarea simultana a mai
multor procesoare pentru comparatie?
14. Specificati diferentele de functionare dintre procesorul Pentium 4 si
procesorul Intel Core.

S-ar putea să vă placă și