您好!
我之前在 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 事件中没有找到任何勘误表。
请您查看并分析此问题 吗?
谢谢、
弗朗克。