Rdtsc

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 29. december 2019; checks kræver 5 redigeringer .

rdtsc ( Read Time Stamp Counter ) er en assembler -  instruktion til x86- og x86_64-platforme , der læser TSC ( Time Stamp Counter )-tælleren og returnerer 64-bit antallet af clock-cyklusser i EDX: EAX- registrene siden sidste processornulstilling .

rdtsc er understøttet på Pentium (og kompatible) og nyere processorer. Opcode : 0F 31 [1] .

rdtscp [2] er blevet understøttet siden Intel Nehalem og AMD Family 0x0F [3] . Opcode: 0F 01 F9 [4] .

Brug

rdtsc er mest brugt:

Fordele

Sammenlignet med operativsystem- leverede API'er som WINAPI::QueryPerformanceCounter() eller gettimeofday() kan rdtsc/rdtscp-instruktioner give følgende fordele:

Brugsproblemer

For at løse mange problemer anbefales det at rette tråden på en specifik processor ( cpu-affinitet ) og deaktivere automatiske frekvensændringsteknologier (strømbesparende teknologier og dynamiske ydelsesændringer).

Noter

  1. Softwareudviklermanual til Intel® 64 og IA-32  Architectures . — Bd. 2 (Instruktionssæt-reference). - S. 4-301.
  2. En serialiseringsversion af rdtsc-instruktionen, der også læser IA32_TSC_AUX MSR, som ofte gemmer kernenummeret.
  3. rdtscp . Hentet 1. november 2011. Arkiveret fra originalen 2. januar 2012.
  4. Softwareudviklermanual til Intel® 64 og IA-32  Architectures . — Bd. 2 (Instruktionssæt-reference). - S. 4-303.
  5. Windows Anti-Debug Reference | Symantec Connect-fællesskabet . Dato for adgang: 30. december 2011. Arkiveret fra originalen 14. januar 2012.
  6. Slide 58 Timing Based Anti-Debugging Arkiveret 4. marts 2012.
  7. Tom St. Denis, Simon Johnson, Kryptografi for udviklere Arkiveret 9. oktober 2021 på Wayback Machine .
  8. Sådan optimeres til Pentium-familien af ​​mikroprocessorer Arkiveret 6. januar 2012 på Wayback Machine // 1996-2000 af Agner Fog. Kapitel "30. Test hastighed", arkiveret 19. november 2011.
  9. ICE Affinitet . Hentet 19. oktober 2011. Arkiveret fra originalen 7. september 2011.

Links