Ablaufsysteme Left Up Right Ablaufsysteme

Time stamp counter

Für Intel-Pentium-Prozessoren und Nachfolger kann man den Time Stamp Counter auslesen, der alle Taktzyklen nach dem letzten reboot zählt.

Dies kann auch aus einem Anwendungsprogramm gemacht werden. So hat man eine Uhr, die (fast) nichts kostet.

Probleme:

Merkmale:

In Linux kann man unter /proc/cpuinfo unter flags herausfinden, welche Merkmale der TSC hat:

constant_tsc TSC hat konstante Rate → keine Uhrkorrektur notwendig
nonstop_tsc det TSC stoppt nicht in C-Zuständen
rdtscp RDTSCP-Instruktion vorhanden (AMD)
tsc RDTSC-Instruktion
tsc_reliable TSC sei vertrauenswürdig
tsc_scale AMD MST-basierte TSC-skalierung, Taktratenkontrolle
(siehe auch x86cpufeatures)

D.h. Obige Probleme können spezifisch nach verwendeten Prozessor auftreten oder auch nicht, und man kann das Vorhandensein abfragen.

Links

High resolution timing aus dem IO-Port-Programming HOWTO
Engl. Wiki über Timestamp-Counter
Manchmal muss man den TSC-Zugriff mit pctrl(2) freischalten
Kern Kerntechnik: Richtiger Umgang mit der Zeit
Arnd Heursch: Zeitdauern messen mit dem TSC Time Stamp Clock Register unter Linux auf x86PCs seit dem Pentium"
kerrywong
Für die rdtsc-Messung laute die Formel so:
runtime_in_s=(t2-t1)/(CPU_TAKT_MHZ*1000), wobei man CPU_TAKT_MKZ mit grep "cpu MHz" /proc/cpuinfo | cut -d':' -f2 | uniq bestimmt
(siehe aber auch die Bemerkungen oben)
Using the RDTSC Instruction for Performance Monitoring
Counting on the time stamp counter,2006
timestamp.c bei opensolaris
Implementierung eines highresolution timers für mehrere CPUs
Synchronisierung via timerinterupt, master-CPU zählt hoch, slave-CPU kontrolliert
Dieses ist aber der Mechanismus im Kern mit Koordinierung usw. der offensichtlich nicht billig ist.

Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber