Rdtsc

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 29 december 2019; kontroller kräver 5 redigeringar .

rdtsc ( Read Time Stamp Counter ) är en assemblerinstruktion  för x86- och x86_64-plattformar som läser TSC-räknaren ( Time Stamp Counter ) och returnerar antalet 64-bitars klockcykler i EDX: EAX- registren sedan den senaste processoråterställningen .

rdtsc stöds på Pentium (och kompatibla) och nyare processorer. Opkod : 0F 31 [1] .

rdtscp [2] har stöds sedan Intel Nehalem och AMD Family 0x0F [3] . Opkod: 0F 01 F9 [4] .

Användning

rdtsc används oftast:

Fördelar

Jämfört med operativsystem -försedda API :er som WINAPI::QueryPerformanceCounter() eller gettimeofday() kan rdtsc/rdtscp-instruktioner ge följande fördelar:

Användningsproblem

För att lösa många problem rekommenderas att fixa tråden på en specifik processor ( cpu-affinitet ) och inaktivera automatiska frekvensändringsteknologier (energisparande tekniker och dynamiska prestandaförändringar).

Anteckningar

  1. Handbok för programvaruutvecklare för Intel® 64 och IA-32 Architectures  . — Vol. 2 (Instruktionsuppsättningsreferens). - S. 4-301.
  2. En serialiseringsversion av rdtsc-instruktionen, som också läser IA32_TSC_AUX MSR, som ofta lagrar kärnnumret.
  3. rdtscp . Hämtad 1 november 2011. Arkiverad från originalet 2 januari 2012.
  4. Handbok för programvaruutvecklare för Intel® 64 och IA-32 Architectures  . — Vol. 2 (Instruktionsuppsättningsreferens). - S. 4-303.
  5. Windows Anti-Debug Referens | Symantec Connect Community . Datum för åtkomst: 30 december 2011. Arkiverad från originalet den 14 januari 2012.
  6. Bild 58 Timing Based Anti-Debugging Arkiverad 4 mars 2012.
  7. Tom St. Denis, Simon Johnson, Kryptografi för utvecklare Arkiverad 9 oktober 2021 på Wayback Machine .
  8. Hur man optimerar för Pentium-familjen av mikroprocessorer Arkiverad 6 januari 2012 på Wayback Machine // 1996-2000 av Agner Fog. Kapitel "30. Testar hastighet", arkiverad 19 november 2011.
  9. ICE-affinitet . Hämtad 19 oktober 2011. Arkiverad från originalet 7 september 2011.

Länkar