Ob ein Prozessor invariant TSC unterstützt kann man mit CPUID 80000007H:EDX[8] abfragen. Dies kann man in der aktuellen "Intel® 64 and IA-32 Architectures Software Developer Manuals" unter Kapitel "17.13.1 Invariant TSC" (Stand June 2013) nachlesen.
Da die aktuelle Jedi Bibliothek sehr viel von CPUID ausliest, habe ich diese verwendet um dieses Bit auszulesen. Die JclSysInfo.pas stellt die Funktionen bereit, die für das auslesen von CPUID benötigt werden. Darum habe ich sinngemäß die JclSysInfo.pas um folgende paar Zeilen ergänzt.
var RDTSCInfo : Cardinal; begin CallCPUID($80000007, 0, Unused, Unused, Unused, RDTSCInfo); end;
Das coole bei invariant TSC ist, dass das RDTSC Hagen Beispiel auch auf einem Intel i7 ohne Probleme läuft.
Quellen und weiterführende Literatur:
- Time Stamp Counter, Wikipedia
- CPUID, Wikipedia
- Delphi - RealTimeCPUCounter, Michael Puff
- Intel Core - Nehalem microarchitecture based, Wikipedia
- Intel® 64 and IA-32 Architectures Software Developer Manuals
- Project Jedi
Keine Kommentare:
Kommentar veröffentlichen