Rdtsc

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 29 de diciembre de 2019; las comprobaciones requieren 5 ediciones .

rdtsc ( Read Time Stamp Counter ) es una instrucción de ensamblador  para plataformas x86 y x86_64 que lee el contador TSC ( Time Stamp Counter ) y devuelve el número de ciclos de reloj de 64 bits en los registros EDX: EAX desde el último reinicio del procesador .

rdtsc es compatible con Pentium (y compatible) y procesadores más nuevos. Código de operación : 0F 31 [1] .

rdtscp [2] ha sido compatible desde Intel Nehalem y AMD Family 0x0F [3] . Código de operación: 0F 01 F9 [4] .

Uso

rdtsc es el más utilizado:

Beneficios

En comparación con las API proporcionadas por el sistema operativo, como WINAPI::QueryPerformanceCounter() o gettimeofday(), las instrucciones rdtsc/rdtscp pueden proporcionar las siguientes ventajas:

Problemas de uso

Para resolver muchos problemas, se recomienda arreglar el hilo en un procesador específico ( afinidad de cpu ) y deshabilitar las tecnologías de cambio automático de frecuencia (tecnologías de ahorro de energía y cambios dinámicos de rendimiento).

Notas

  1. Manual del desarrollador de software de las arquitecturas Intel® 64 e IA-32  . — vol. 2 (referencia del conjunto de instrucciones). - Pág. 4-301.
  2. Una versión de serialización de la instrucción rdtsc, que también lee el MSR IA32_TSC_AUX, que a menudo almacena el número de kernel.
  3. rdtscp . Consultado el 1 de noviembre de 2011. Archivado desde el original el 2 de enero de 2012.
  4. Manual del desarrollador de software de las arquitecturas Intel® 64 e IA-32  . — vol. 2 (referencia del conjunto de instrucciones). - Pág. 4-303.
  5. Referencia de antidepuración de Windows | Comunidad Symantec Connect . Fecha de acceso: 30 de diciembre de 2011. Archivado desde el original el 14 de enero de 2012.
  6. Diapositiva 58 Antidepuración basada en el tiempo Archivado el 4 de marzo de 2012.
  7. ↑ Calle Tom. Denis, Simon Johnson, Criptografía para desarrolladores Archivado el 9 de octubre de 2021 en Wayback Machine .
  8. Cómo optimizar para la familia de microprocesadores Pentium Archivado el 6 de enero de 2012 en Wayback Machine // 1996-2000 por Agner Fog. Capítulo "30. Prueba de velocidad", archivado el 19 de noviembre de 2011.
  9. Afinidad de ICE . Consultado el 19 de octubre de 2011. Archivado desde el original el 7 de septiembre de 2011.

Enlaces