Meriti vreme ili oscilacije, koja je razlika? - Software engineering deep level optimization - uvod u merenje - V deo

Nastavljamo gde smo stali. Već smo pisali na temu merenja u prethodna četiri blog posta, i napomenuli da se meri zapravo broj oscilacija takta mikroprocesora, kako bih tačno znali koliko je zapravo potrebno procesorskog vremena da izvrši nama značajan programski kod. Postoje različiti profajleri za isto, međutim postavlja se pitanje u čemu je razlika? Da bi razumeli razliku između merenja vremena i merenja broja oscilacija takta procesora, potrebno je razumeti nekoliko koncepata, na osnovu kojih je baziran rad savremenih računarskih sistema.

Boost mikroprocesorskog takta

Dovoljno je za isto pogledati aplikaciju koja se naziva CPU-Z i pogledati u sekciju Clocks (core). U istoj sekciji možemo primetiti da postoji BUS speed (brzina magistrale računara) i MULTIPLIER (množilac). Oba parametra se menjaju u vremenu, na gore ili na dole. Ukoliko se parametri menjaju na veće vrednosti dobijamo takozvani BOOST mikroprocesorskog takta, te samo jezgro funkcioniše na većoj frekvenciji. BOOST se obično dešava kada je računarski sistem pod opterećenjem, tj. kada je ptorebno izvršiti (odraditi) dosta "računanja" te mu je i potrebno dati veću frekvenciju kako bih izvršio sve što je potrebno u što je moguće kraćem roku. BOOST mikroprocesorkog takta nema uticaja na merenje ukoliko BROJIMO otkucaje mikroprocesorkog takta, kako bih saznali brzinu izvršavanja programskog koda. Ukoliko izmerimo da je potrebno 100 oscilacija mikroprocesorskog takta, nema veze kolika je frekvencija istog, i da li je računarski sistem uradio BOOST ili ne. Jednostavno, bila frekvencija mikroprocesorskog takta 100MHz ili 1GHz, mi smo sigurni da je za izvršavanje programskog koda potrebno 100 oscilacija. Ono u šta ne možemo biti sigurni, je da li će doći do promene u broju oscilacija, ukoliko se proizvođač procesora odluči za optimizaciju kontrolera za izvršavanje instrukcija. Recimo, ukoliko se smanji broj mikrooperacija po instrukciji mikrosekvencera CPU-a za određeni instrukcijski set, možemo biti sigurni da se promenio i broj oscilacija mikroprocesorskog takta u odnosu na prvobitno merenje koje smo izvršili.

CPU-Z Clocks



Vreme i oscilacije CPU-a


Kad i šta gledamo kod merenja?

Gornji dijagram prikazuje gore napisano. Oscilacije pod (a) i (b) se razlikuju po frekvenciji, međutim frekvencija nije od značaja, jer merimo tj. brojimo oscilacije. Da li će biti frekvencija 100MHz ili 1GHz to nije od značaja. Brža frekvencija znači brže izvršavanje u jedinici vremena i ništa drugo. Isto, tako, BOOST nije od presudnog značaja, kada mikroprocesorski takt u jedinici vremena promeni broj oscilacija. To jednostavno ne utiče na merenje ukoliko brojimo koliko je oscilacija potrebno. Da li se meri broj oscilacija ili vreme izvršavanja (milisekunde) zavisi od toga šta merimo i sa kakvim aplikacijama radimo. Poslovne aplikacije uglavnom nemaju zahtev da radimo profajling u odnosu na broj oscilacija, te profajlere više koristimo kako bismo utvrdili performans probleme u smislu da li nam sinhronizacija pravi problem, gde imamo problem sa blokirajućim izvršavanjem koda, curenje memorije (bez obzira koristili framework ili ne) i slično. U zavisnosti od toga šta gledamo zavisi i koji profajler koristimo. Vreme u milisekundama je značajno, ali u većini slučajeva profajleri kod poslovnih aplikacija u većini slučajeva služe za otklanjanje bug-ova određenog tipa. U tim situacijama broj oscilacija nije potrebno meriti. Profajliranje broja oscilacija se radi u slučajevima kada programski kod izvršava zahtevne kalkulacije koje se optimizuju na određene načine, što algoritamski što uz pomoć CPU ekstenzija. Ono što je bitno jeste poznavati materiju, kada je potrebno raditi profajliranje, te razumeti šta je to što zapravo radimo i merimo. U svakom slučaju kao što vidimo, materija je zanimljiva, te merenje performansi izvršavanja programskog koda zahteva šire poznavanje računarstva bez obzira da li preferirate hardware ili software.

Autor
Vladimir Savić
zilsel-invent

Comments

Popular posts from this blog

Electrolytic capacitors and design rules

Fake VC830L digital multimeter

How to design LM324 Astable Multivibrator