rovid ideju idozitesek PC-n
Miko Imre
imre.miko at siemens.com
Tue Dec 17 10:57:02 CET 2002
Pentium I -tol kezdodoen van egy olyan utasitas, hogy RDTSC.
Ha a fordito nem ismerne az Opcode: 0Fh 31h
Ez az utasitas az EDX:EAX-be olvassa ki a TSC regiszter tartalmat.
A TSC egy 64 bites szamlalo (Time Stamp Counter), amely minden
orajelciklusnal 1-el novelodik.
Modszer:
Megnezed, hogy pl 100mS alatt mennyit no az erteke,
majd a rovid idoziteshez kiszamitod, hogy mennyit kell
nonie.
Idozites: Egy ciklusban varsz, amig a megadott ertekkel nem no a TSC.
(Tulcsordulasra figyelni!)
Hatrany: Az RDTSC nincs megvalositva minden processzoron.
Eloszor a CPUID (0fh A2h) utasitassal ellenorizni kell, hogy
a processzor tamogatja-e:
MOV EAX,1
CPUID
AND EDX, 00010000b
JNZ TSC_tamogatva
JMP TSC_nem_tamogatva
Az Intel a Pentium I (nem MMX-es)-tol tamogatja.
A Cyrix a MMX-es 6x86-tol.
Az AMD-t nem tudom.
Az meg megint mas kerdes, hogy mi lesz a tenyleges idozitesed hossza
a multitask miatt ...
Udv.
Imre
Bodosi Balazs wrote:
> PIC programozot irok w98 ala assemblyben, mar teljesen keszen van, de
> az idoziteseket meg ures ciklussal oldom meg, igy ez gep es
> sebessegfuggove teszi a progit. Szeretnek valami univerzalisan
> hasznalhato otletetet a nagyon rovid (100ns) koruli idozitesekre. A
> portra iras/olvas fix ideig tart vagy az is chipset es sebessegfuggo?
> Valami 4ms koruli idozitesi otlet is kellene, de ezt talan mar le
> tudom trukkosen kezelni.
> Vegso otletkent arra gondoltam, hogy 1s-ig szamoltatok a geppel
> ures ciklusban es ez a szam fog a gep sebessegenek alapjaul szolgalni.
> De ez multitaszkos kornyezetben nem tunik tul jo otletnek...
> Valaki mas esetleg osszefutott-e ezzel a gonddal?
> A windows WM_TIMER-jet mar probaltam...
> Udv:
> BBalazs
>
> http://www.phys.szote.u-szeged.hu/bbalazs/bbalazs.htm
>
More information about the Elektro
mailing list