Cuál será el código exacto para obtener el recuento de errores de caché de último nivel en la arquitectura Intel Kaby Lak

Leí un artículo interesante, titulado "Un ataque de canal lateral de alta resolución en el caché de último nivel", y quería descubrir la función de hash de índice para mi propia máquina, es decir, Intel Core i7-7500U (arquitectura Kaby Lake) —Siguiendo las pistas de este trabajo.

ara aplicar ingeniería inversa a la función hash, el documento menciona el primer paso como:

 for (n=16; ; n++) 
 {
   // ignore any miss on first run
   for (fill=0; !fill; fill++) 
   {
     // set pmc to count LLC miss
     reset_pmc();
     for (a=0; a<n; a++)
       // set_count*line_size=2^19
       load(a*2^19);
   }

   // get the LLC miss count
   if (read_pmc()>0) 
   {
     min = n;
     break;
   }
 }

¿Cómo puedo codificar elreset_pmc() yread_pmc() en C ++? De todo lo que he leído en línea hasta ahora, creo que requiere un código de ensamblaje en línea, pero no tengo idea de qué instrucciones usar para obtener el recuento de errores de LLC. Estaría obligado si alguien puede especificar el código para estos dos pasos.

Estoy ejecutando Ubuntu 16.04.1 (64 bits) en la estación de trabajo VMware.

P.S .: encontré mención de estosLONGEST_LAT_CACHE.REFERENCES yLONGEST_LAT_CACHE.MISSES en el Capítulo 18, Volumen 3B de laIntel Architectures Software Developer's Manual, pero no sé cómo usarlos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta