Posts

Intel® Performance Counter Monitor - Meriti vreme ili oscilacije, koja je razlika? - Software engineering deep level optimization - uvod u merenje - VI deo

Image
Nastavljamo dalje sa programskim brojačima za merenje performansi programskog koda. U trećem delu o deep level optimizaciji (algoritamski + CPU ekstenzije) naveli smo da se zapravo koriste hardware-ski programski brojači integrisani u CPU jezgro. Prošli smo kroz primer da merenje sa START TIME i END TIME nije dovoljno dobro iz više razloga, o kojima možete pročitati u trećem delu. U ovom blog postu osvrnućemo se na Intel-ove programske brojače i njihovo rešenje. Intel PCM - Performance Counter Monitor Kako je materijal već dostupan na Intel-ovom web site-u, ovde ćemo navesti isključivo deo koji je nama potreban kako bi izmerili performanse dela koda od značaja, bilo da se radi o algoritamskoj optimizaciji ili optimizaciji korišćenjem CPU ekstenzija (MMX, XMM, SSE... - o tome smo već pisali u prvom delu , razlika između ANY CPU build-a, i ukoliko se koriste ekstenzije). Intel PCM hardware-ski brojači Na sledećem linku imate detalje o Intel-ovim programskim brojačima, klikni ovde . Sour

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

Image
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 o

Software engineering deep level optimization - uvod u merenje - IV deo

Image
Nastavljamo dalje sa merenjem te ovom prilikom prolazim kroz razloge zašto primenjena tehnika merenja prikazana u prošlom blog postu ( broj III ) nije tačna, te nam odokativno predočava koliko traje izvršavanje jednog dela programskog koda ili koda u celosti. Za analizu će se koristiti Concurrency Visualizer ekstenzija za Visual Studio. Programski kod Prvo ćemo napisati programski kod koji merimo. Dovoljno je koristiti for petlju koja ispisuje na konzoli Hello World!, jer ovde je zapravo poenta prikazati merenje, šta merimo i kako treba meriti koristeći Performance Counter-e umesto Start Date Time na početku izvršavanja main funkcije i End Date Time na kraju izvršavanja iste. Na screenshot-u dole prikazan je primer programskog koda koji se meri.   Programski kod koji se meri Preemption Quantum i Interrupts Koristeći Concurrency Visualizer za Visual Studio možemo grafički prikazati gde zapravo leži problem kod merenja ukoliko se ne koriste Performance Counter-i. Concurrency Profiler   Z

Software engineering deep level optimization - uvod u merenje - III deo

Nakon što se primene određene tehnike optimizacije software-a, performanse je potrebno izmeriti kako bi bili sigurni da je optimizovanje software-a uspešno završeno. Ono u šta moramo biti sigurni je do kog nivoa tačnosti i preciznosti moramo izvršiti merenje. Već sam napomenuo da se u slučaju deep level optimizacije (asm) brzina izvršavanja meri brojanjem ciklusa takta a u ovom blog postu ću pokazati prvo i zašto. Svakako, na početku ću proći kroz koncept rada računarskog sistema sa multi-threading operativnim sistemom koji se izvršava na jednom procesorkom jezgru, radi jasne slike zašto se broje clock ciklusi a ne meri sistemsko vreme, kako to mnogi developeri rade, radi dobijanja rezultata merenja, što je daleko od bilo kakve tačnosti i preciznosti merenja. Nakon toga u narednim blog postovima prikazaću hardware-ske brojače i kako se isti koriste i zbog čega (ovde je naravno jasno, uvek dodata hardware-ska jedinica integrisana u core mikroprocesora znači da ista ne zahteva vreme p

Software engineering deep level optimization - INLINE tehnika optimizacije - II deo

Image
Nedavno sam krenuo sa pisanjem seta blog postova na temu deep level optimizacije te da nastavim sa istim. Kao što sam naveo u prvom blog postu, postoji više tehnika deep level optimizacije software-a, kako bi se što bolje iskoristio potencijal mikroprocesora i računarskog sistema generalno. Kompajleri, ključne reči kompajlera (koje nisu deo standarda programskog jezika već deo kompajlerskih komandi), setovi instrukcija, prevashodno ekstenzije van standardnog seta Intel instrukcija, su ključ za deep level optimizaciju. U ovom tekstu navodim prvu tehniku optimizacije koja se zove "inline" a svodi se na redukovanje korišćenja stack-a kao i optimizacije broja instrukcija koje treba izvršiti, te se jedan deo posla prepušta kompajleru. Tehnika optimizacije zvana INLINE Sam naziv tehnike deep level optimizacije je logičan, u trenutku kada shvatite koncept optimizovanja software-a ovom tehnikom. Ključ inline optimizacije je zaobilaženje stack-a i samim tim redukovanje broja instrukc

Kako zarađuje open hardware zajednica

Image
Možda se većina pitala kako zarađuje open hardware zajednica obzirom da proizvođač otvori kompletno rešenje, omogućeno za download, uključujući električni dizajn, dizajn štampane pločice u formatu dostupnom za jedan od popularnih CAD alata koji podržavaju proizvodni proces kao što je Autodesk Eagle CAD. Bez ulaženja u marketing, jer isti ovde igra ulogu što ću navesti tokom teksta ukratko navodim razloge istog. Open hardware Open hardware je odlična stvar prevashodno za širenje znanja o hardware-sko software-skim rešenjima, poznata je svima Arduino platforma, ili ti open hardware platforma za kreiranje prototipova. Ali kako ista zarađuje ako su otvorili svoje hardware-sko software-sko rešenje? Na donjoj slici prikazan je deo web stranice sa koje možete, za džabe preuzeti hardware-sko rešenje Arduino UNO R3 razvojne pločice: električnu šemu, Eagle PCB dizajn itd. imate praktično dostupno sve što vam je potrebno. To znači da istu pločicu možete napraviti i sami, te kako to onda

Jednobitni ADC za analogne senzore

Image
Implementacija jednobitnog analognog senzora je jednostavna i bazira sa na upotrebi komparatora koji trigeruje visok ili nizak nivo: +5VDC ili 0VDC tj. logičku jedinicu i logičku nulu. Princip rada je jednostavan o čemu će biti reči u blogu koji sledi. UVOD Jednobitne ADC ili ti jednobitne analogno digitalne senzore je jednostavno implementirati korišćenjem komparatora, takođe moguće je koristiti i operacioni pojačavač koji se konfiguriše u režimu rada komparator. Princip rada je jednostavan, na neinvertujući ulaz se dovodi analogni signal koji se poredi sa referentnim nivoom koji definiše nama željenu analognu vrednost signala, kada analogni signal dostigne željenu vrednost, komparator generiše logičku jedinicu na izlazu, u suprotnom logičku nulu. Generisani digitalni signal sa izlaza komparatora se dovodi na interrupt ulaz mikrokontrolera, što je dovoljno da trigeruje obradu događaja koja je dodeljena istom senzoru tj. događaju - dosegnuta je određena vrednost. Slika 1. prik