This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

L2cache禁止,为什么cpu运行会比恒miss要慢?

按以下流程测L2cache,发现一个现象,请教一下大家。

芯片是xilinx的zynq,L2 size = 512K。

程序本身加载到0x100000。

关闭所有中断。

使能L1和L2。

把0xfc000000开始的512K数据lock到L2中。

反复读写0x140000开始的64K内存。这样,L2虽使能,但却恒定miss,程序能跑890遍/秒。

跑一段时间后,执行DisableL2Cache。程序能跑865遍/秒。

为什么,L2 enable时,即使恒定miss,也比L2 disable 快一些?

Parents
  • 感觉你是想对比测试memcpy在L2 cache disabled和L2里面所有cache memory被lock情况下的带宽吗?

    为了回答你的问题,有几个问题需了解一下:

      1)   “恒定miss” 具体指的是什么? L2 cache miss? 如何测试得到的数据?

      2) 看了一下xilinx网站,zynq 用的Cortex-A9。没有谈到L2的具体情况,用的是PL310吗(可以做instruction和data的prefetch)? 具体是哪一款zynq,看他们网站有Single-core和Dual-core。

      3) 0x140000开始的64K内存 在MMU里面的配置属性是什么?

      4) L2 cache lock的代码能否贴出来。

      5) 你的测试是在baremetal,还是有OS的情况下的测试。

    多谢。

Reply
  • 感觉你是想对比测试memcpy在L2 cache disabled和L2里面所有cache memory被lock情况下的带宽吗?

    为了回答你的问题,有几个问题需了解一下:

      1)   “恒定miss” 具体指的是什么? L2 cache miss? 如何测试得到的数据?

      2) 看了一下xilinx网站,zynq 用的Cortex-A9。没有谈到L2的具体情况,用的是PL310吗(可以做instruction和data的prefetch)? 具体是哪一款zynq,看他们网站有Single-core和Dual-core。

      3) 0x140000开始的64K内存 在MMU里面的配置属性是什么?

      4) L2 cache lock的代码能否贴出来。

      5) 你的测试是在baremetal,还是有OS的情况下的测试。

    多谢。

Children