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.

C64x+ cache 问题



由于L2CACHE是  数据和指令混合存放的,但是L1PCACHE 是专门用来存放指令的,L1DCACHE是专门用来存放数据的。

我的问题是,DSP如何在L2CACHE中区分哪一块数据是代码,需要载入到L1PCACHE中,哪一块是数据,需要载入到L1DCACHE中呢?

  • 这个由CMD文件定义程序段和数据段。

  • 哦这样的,谢谢!

    那如果这样的话,

    1。

    是不是说,CPU会一直自动从L1P中读取命令,然后译码执行,因为CPU主要是为了执行程序,当读取一条命令时候,需要取操作数的时候,

    再调用L1Dcache  也就是数据cache,从低级的存储器中调取数据。所以,CPU首要是 和指令CACHE 交互,需要用到数据的时候,才会启用数据cache。

  • 是的,CPU通过程序总线从L1P中读取指令,同时协同数据总线从L1D中读取数据。

  • Hank Zhao 说:

    是的,CPU通过程序总线从L1P中读取指令,同时协同数据总线从L1D中读取数据。

    你好,谢谢您的回复,非常感谢。

    我还想问另外一个问题,就是在DSP 下面CCS调试程序代码的时候,如何分析L1P L1D cache 以及L2CACHE的运行状态,判断是否发生miss 和 hit 等。通常情况下是用什么方法呢?

    我看到CCS里面有个tools的cache tag ram viewer好像是能分析cache的,但是不知道怎么用,我程序跑起来之后,看不到任何cache的运行信息,不知道是不是哪里设置错误了?我现在用CCS3.3  硬件DSP是DM648,然后用的是xds560 PCI 的jtag仿真器。我搜了网上帖子,有些人说,软件仿真simulator可以,我想问下,到底是emulator可以还是simulator可以?还是我哪里设置错了?我就想分析下我的代码中cache的利用率,以便优化。谢谢!

  • 你可以使用CCS的profile功能来分析cache,使用profile要用simulator。