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

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. Source code PCM-a možete preuzeti sa GitHub-a, klikni ovde. Kao što smo naveli u trećem delu, o deep level optimizaciji, PCM zahteva korišćenje drajvera, bez obzira koji OS koristite. Samo korišćenje drajvera, se odnosi na upis i čitanje podataka iz MSR-ova, što su specifični CPU registri namenjeni brojenju događaja koji su od značaja radi merenja performansi programskog koda. Build PCM-a je dosta jednostavan i opisan u README sekciji na GitHub-u, jedina stvar koja vas može izitirati je podešavanje MSR.sys drajvera koji nije potpisan jednim od sertifikata koji se nalaze instalirani u okviru Trusted Certification sekcije. To znači da morate da podesite vaš OS u Test Mode, što zavisi od OS-a. Isto tako BitLocker može da vam predstavlja problem jer self signed MSR.sys može isključivo da se koristi u okviru Test Mode-a. Nakon podešavanja istog, PCM možete da koristite, što kao stand-alone aplikaciju, što preko programskog koda, što je prikazano na slici gore, to je zapravo ono što nama treba. Kao što vidimo, ništa se ne razlikuje mnogo od STAR TIME i END TIME sekcije (treći deo blog posta), jedino što PCM "zna" da broji isključivo kada je vaš kod u toku izvršavanja, za razliku od START TIME i END TIME koji su sistemsko vreme koje protiče bez obzira koji software CPU trenutno izvršava. No, za razumevanje ovakvih stvari imate prethodne blog postove na temu deep level optimizacije te možete pogledati. 

Ono što sledi u narednim blog postovima je primer brojanja na jednom malom konkretnom primeru, gde ćemo probati da optimizujemo source kod, što algoritamskim metodama što upotrebom ekstenzija, te ćemo raditi poređenje rezulata merenja.


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