Bir mikroişlemcinin hızını nasıl test edersiniz ?

Başlatan pcb, 13 Ekim 2011, 21:15:26

pcb

Merhaba arkadaşlar

Diyelim ki daha önce kullanmadığınız kadar hızlı bir işlemci ile çalışacaksınız, her şeyi hazırladınız ( kart - program vs) işlemciyi çalıştırdığınızda baktınız ki pek fark yok gibi , görsel olarak bunu anlamak zor olabilir (menü geçişlerinden vs.). hızını nasıl test edersiniz ?

z

Clock ayarlamalarini dogru yapti ve CPU'yu en yuksek clkla besleyebilidiyseniz, bir portun pinini toggle eden yazilimi calistirdiginizda pinde olusan sinyali scopla izlerseniz bu basit test, islemcinin hizi hakkinda yaklasik fikir verecektir.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

pcb


fatihinanc

#3
Alıntı yapılan: pcb - 13 Ekim 2011, 21:57:50
@bunalmıs
Bunu test edicem

Aslında bu yöntem işlemciye göre değişiyor.
Bunu yapmadan önce işlemcinin bir ASM komutunu kaç cycle da yaptığını bilmek gerekiyor.

Örn;

P1.1 bitini set et   -> 5 cycle
P1.1 bitini temizle -> 5 cycle


Pinde görülecek frekans(Osilatör 1MHz ise) = 1MHz / 10 = 100kHz çıkar.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Erol YILMAZ

Mcu da hız ile ilgili durumlara baktığımızda seviyeler söz konusu,
Misal Cortex M3 te 72-80 Mhz arası çalışan bir grup var,
Şİmdi yeni nesil Cortex M3 ler 120 Mhz çalışıyor.

Hız sadece CPU gücü ile ölçülemeyebilir.
ADC vs gibi çevrebirimlerin de hıza etkisi olabilir.
Çevrimi başlatıp çevrimin bitmesini bekleyip gidiyorsanız ADC nin hızlı sonuçlanması hızı direkt etkiler.
Cortex M3 cpu su olupta  0.2 MSample ADC'de var, 2MSample olan da...

Misal geçenlerde 100 Mhz çalışan bir Cortex M3 mcu da 20 Khz lik bi timer kesmesi oluşturup
bu kesme işleminde geçen süreyi PIN den sinyal olarak okudum.
İşlemci bana kısaca, "daha çooooook kod kaldırırım ben" :) dedi...

Burak B

Bendeki LPC1768 128Mhz de çalışıyor. Bu işler için saat hızı değilde şöyle bir sistem geliştirmişler.
Mesela buradaki eleman bu benchmarkı port edip LPC1768 test etmiş.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

Bahsettigim yontem yalniz siradan islemciler icin.

I/O portlarin, CPU hizina yetisemeyecegi yapilarda CPU I/O islemleri yaparken donanimsal olarak yavaslatilir.

Bu nedenle frekansi cok yuksek ciplerde CPU clk ile I/O portlardan okuma yazma hizi arasinda direk iliski kurmak zor.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

GreeN

Hızını nasıl test ederiz derken bahsedilen hız ,  çalışma frekansının ne olduğunu test ediyoruz , yoksa mcu'nun performansımı?

Bir işlemcinin performansını diğeriyle karşılartırmanın en kolay yolu , bir dizi işlemi yapabildiği süreye bakmak gerek. TimerX kurarsın işlem bittiğinde timer değerini okursun.
İşlemcilerin perfomansları hakkında MIPS ve DMIPS değerleri bize işlemciler hakkında bilgi vermekte. MIPS pek önem verilen bir ölçüt değil .
Ama DMIPS değerleri kayda değer karşılatırma kriteri olabilir.

İşlemcinin clock saatinin kaç olduğunu öğrenmeye yönelik test yapmak istiyorsan , bir timer kurarsın (internal clock ile) sabit belirlediğin bir süre saymasını beklersin  , timer değerinin kaydedersin, PIC için frekansın kaç olduğunu bulabilirsin

timer değeri * 1/(Frekans/4/(div)) = timer süresi


Terörü Lanetliyoruz.

pcb

açıklamalarınız için teşekkür ederim ancak kullanmaya çalıştığım yeni işlemcide istenmeyen problemler le karşılaştığımdan şimdilik hızından çok lcd ekranı çalıştırmaya uğraşıyorum.
https://www.picproje.org/index.php/topic,35781.new.html#new

cicjoe

bir islemcinin performansina etki eden bircok etken bircok etken var. datasheet'ini acip icinde neler var neler yok, hangi teknolojileri kullanmis bakmak lazim.

-saat sinyali (clock) : islemcinin performansina dogrudan etki eder
-veri genisligi (data bus / register width): islemcinin tek hamlede ne kadar bit ile islem yapabilecegini belirledigi icin dogrudan etkilidir.
-kod verimliligi (code effeciency): bir kodun kac saykil (instruction cycle)'da gerceklesecegini berlirler. az oldugunda daha iyi oldugu dusunulebilir ancak eger islemci is hatti kullaniyorsa cok olmasi daha iyidir. ornegin is hatti kullanmayan bir islemci bir satir islemi 4 cycle, x86 12 saykil'da yapiyor.  yani 100 satir kod calistirdiginda is hatsiz islemci 400 saykil, x86 111 saykilda isi bitirir. bu durumda teknolojisine bakarak degerlendirmek lazim. is hatti yoksa az saykil iyidir, varsa fark etmez zaten kac saykil oldugu, cunku 1. satirdan sonra satir basi 1 saykil (genelde) harcar.
-is hatti (pipeline): islemcinin her saykilda bosta olan butun birimlerini kullanmasini saglar. fetch-decode-execute olarak dusunursek, 1. kodu fetch etti, decode ederken 2. kodu fetch eder, 1. kodu execute ederken 2. kodu decode eder 3. kodu fetch eder. bu boyle surer gider. hatta 2-3 tane ayni birimden kullanarak, ayni anda 2-3 tane kodu fetch edebilir. execution unit birden fazla olursa zaten multi-core oluyor. islemler arasinda veri bagimliligi (data dependency) kontrolu yapar. bagimlilik varsa ayni anda execute etmez.
1. satir => x = a + b;
2. satir => y = x * x;
ise cift execution unit olsa dahi bu islemler ayni anda isleme girmez.
-ALU ve FPU: belkide en onemlisidir. icerisinde bulunan devrelerin yetenegi onemlidir. carpma veya noktali sayilarla bas edebilmesi performansi etkiler.
-dallanma tahmini (branch prediction): bir kod blogunu calistirirken, ileride karsilacagi dallanmadaki 1 yolu secerek ordaki kodlari bosta kalan birimlerinde calistirir. eger program o yola dallanirsa, direk register'dan sonucu getirir. eger diger yola dallanirsa, bisey yokmus gibi orayi calistirmaya devam eder.

ben yazilimci oldugum icin cache bellek falan da ekleyecektim ama elektronikte o kadar onemli mi bilemedim.

camby

MIPS değeri ile 1 komutun işleme süresi net olarak anlaşılıyor. Örneğin : 1/16M sn

DMIPS'de de aynı hesabı yapabilir miyiz ?