This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:TMS570LC4357:意外的性能监控单元数据缓存丢失计数器?

Guru**** 2451970 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/636970/tms570lc4357-tms570lc4357-unexpected-performance-monitoring-unit-data-cache-miss-counter

器件型号:TMS570LC4357

您好!

我之前在 https://e2e.ti.com/support/microcontrollers/hercules/f/312/t/614362上发布的帖子 未得到回复。

我运行了一个实现32位字副本的简单 memset 循环。

 对于(i=0;i<100;i++){
  memset (fillBuffer,i,1024*1024);
 }

选择以下计数器后,PMU 将打开:

 0x07、/*数据写入*/
 0x03、/* DL1未命中*/
 0x42、/*回写*/

memset 目标缓冲区位于 SDRAM 中可缓存的正常非共享区域中、可缓存属性设置为 writeBack - WriteAllocate。

PMU 计数器会在该 memset 循环之前和之后立即复位。

memset 循环正在运行至完成、而不会被中断。  

粗略的理论计算是总共写入了26214400个32位字、因此访问了3276800高速缓存行、并且考虑到 WriteAllocate 策略、预期的丢失率非常高。

但是、在运行时捕获 PMU 实际上显示了一个非常低的数据缓存缺失数、而总数据写入和数据缓存回写计数器看起来是一致的。

没有预期的计数器溢出。

 数据写入(溢出)、数据缓存未命中(溢出)、数据缓存回写(溢出)=> 26214433 (0)、351 (0)、3202107 (0)
 数据写入(溢出)、数据缓存未命中(溢出)、数据缓存回写(溢出)=> 26214433 (0)、356 (0)、3201904 (0)
 数据写入(溢出)、数据高速缓存未命中(溢出)、数据高速缓存回写(溢出)=> 26214433 (0)、352 (0)、3202353 (0)
 数据写入(溢出)、数据缓存未命中(溢出)、数据缓存回写(溢出)=> 26214433 (0)、350 (0)、3203049 (0)
 数据写入(溢出)、数据缓存未命中(溢出)、数据缓存回写(溢出)=> 26214433 (0)、353 (0)、3203419 (0)
 数据写入(溢出)、数据缓存未命中(溢出)、数据缓存回写(溢出)=> 26214433 (0)、352 (0)、3202068 (0)
 数据写入(溢出)、数据缓存未命中(溢出)、数据缓存回写(溢出)=> 26214433 (0)、346 (0)、3203324 (0)
 数据写入(溢出)、数据缓存未命中(溢出)、数据缓存回写(溢出)=> 26214433 (0)、354 (0)、3202801 (0)

我在 Cortex-R5数据缓存 MissPMU 事件中没有找到任何勘误表。

请您查看并分析此问题 吗?

谢谢、

弗朗克。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Frank、

    很奇怪之前的线程被锁定了。 一般而言、除非海报滥用了 E2E、否则这不是 QJ 或我通常会做的事情、这显然不是这里的情况。 我会将此信息发回 QJ、看看他是否已经在理解该问题方面做了任何工作。 我们再次对这种混乱和被锁住的线程表示歉意。 我试图解锁、它不会让我感到好奇。