使用PCM工具测量TLB英特尔处理器的罚金

问题描述 投票:1回答:1

我正在尝试测量X86-64上的TLB(翻译后备缓冲区)未命中率。具体来说,第二级统一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错过罚分。

关于可以用来快速估算的其他工具的任何提示都将非常有帮助。

reverse-engineering performancecounter pcm tlb micro-architecture
1个回答
0
投票

[我在intel-pcm的官方网站上看到一个帖子,它说PCM由于其实现机制而无法添加TLB遗漏之类的指标:

PCM使用自由运行的计数器,即,在启动时会使用一组固定的事件对计数器进行一次编程。 PCM已经使用了所有可用的核心计数器,我们不能在不放弃其他指标(例如缓存未命中)的情况下添加任何其他指标(例如TLB未命中)。

© www.soinside.com 2019 - 2024. All rights reserved.