Измерение TLB Miss Penalty для процессоров Intel с помощью инструмента PCM - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь измерить штраф за промах TLB (перевод в сторону буфера) на X86-64. В частности, штраф за пропущенный унифицированный TLB второго уровня, который является стоимостью обхода TLB.

Я изучал инструмент Intel PCM, но не смог понять, как его использовать для этой цели. Ниже приведен код, который я использую для получения счетчиков производительности по библиотекам PCM:

      #include "cpucounters.h"        // Intell PCM monitoring tool

    int main() {
       PCM * m = PCM::getInstance();
       PCM::ErrorCode returnResult = m->program();
       if (returnResult != PCM::Success){
          std::cerr << "Intel's PCM couldn't start" << std::endl;
          std::cerr << "Error code: " << returnResult << std::endl;
          exit(1);
       }



       SystemCounterState before_sstate = getSystemCounterState();


//  CODE TO MEASURE TLB MISS PENALTY 


       SystemCounterState after_sstate = getSystemCounterState();

       std::cout << "Instructions per clock:" << getIPC(before_sstate,after_sstate) << std::endl;
       std::cout << "Bytes read:" << getBytesReadFromMC(before_sstate,after_sstate) ;
    }

С этим я могу получить IPC. Но я не знаю, как будет выглядеть тестовая программа, чтобы измерить штраф за промах TLB с высокой точностью.

Любые советы о том, какие другие инструменты я могу использовать для быстрой оценки, были бы очень полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...