Qual será o código exato para obter contagens de falhas de cache de último nível na arquitetura Intel Kaby Lake

Li um artigo interessante, intitulado "Um ataque de canal lateral de alta resolução no cache de último nível" e queria descobrir a função de hash de índice para minha própria máquina - ou seja, Intel Core i7-7500U (arquitetura Kaby Lake) - seguindo as orientações deste trabalho.

Para fazer engenharia reversa da função hash, o documento menciona a primeira etapa 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;
   }
 }

Como posso codificar oreset_pmc()&nbsp;eread_pmc()&nbsp;em C ++? De tudo o que li online até agora, acho que requer código de montagem em linha, mas não tenho idéia de quais instruções usar para obter a contagem de erros da LLC. Eu ficaria agradecido se alguém pudesse especificar o código para essas duas etapas.

Estou executando o Ubuntu 16.04.1 (64 bits) na estação de trabalho VMware.

P.S .: Encontrei menção a essesLONGEST_LAT_CACHE.REFERENCES&nbsp;eLONGEST_LAT_CACHE.MISSES&nbsp;no capítulo 18 do volume 3B doManual do desenvolvedor de software das arquiteturas Intel, mas não sei como usá-los.