TI工程师:
环境:EVMC6678LE
1. 如果在CMD文件中声明L2区域是SRAM映射,那么在软件中使用CACHE_L2SetSize(CACHE_512KCACHE),则该L2区域的最终性质是什么?SRAM还是Cache?
2. 我们知道CMD文件中映射到的区域都必须是SRAM,这样Linker才能够进行链接映射,那么软件中再将其声明为Cache,这样会有什么样的后果呢?
3. 对C66x设备,Cache的申请相比较于C64x是更灵活的,可以选择4K 8K 。。。。那么如果我对L2区域进行cache设置时,如设置大小为256KB,这样分配出的Cache是连续成块的还是离散的?
4. 在工程开发中,对于L1P L1D 和L2的cache选择一般是怎样得?我想着L1P区域是全部作为Cache ,L1D 和 L2分别一半作为Cache,这样合理吗?
5. 我知道Cache的大小对于内核的Load/Store是有影响的,那么影响有多大呢?如果有频繁的内核对数据存取,是不是Cache越大越好呢?
6. 当使用基于BIOS操作系统进行开发时,文档中说:L2是自动作为Cache的,不能修改吗?另外, Cache文档中有说道Cache APIs是能够在Bios开发上使用的,这里指的是基于CSL的Cache APIs(如CACHE_L2SetSize())吗?
Andy Yin1:
1. cmd只是用于划分存储空间,cache属性是在代码中配置,索引如果软件中配置512KCACHE,则所有L2为cache,此时不能在cmd中向L2指定任意数据或代码段;
2 对6678而言,是将高地址依次配置为cache,具体参考6678 data manual SPRS691D;
3 一般将L1P/L1D全部配成cache,L2配置为全SRAM,关键的数据放在L2,可以根据需要调整;