关于C6000 DSP 二级cache的工作机理有一些问题,像和大家讨论下。谢谢!
cpu一上电,就要开始一条条的执行指令,但是由于指令(代码段.text)往往存放在DDR或者SDRAM中。
问题1:
是不是说,代码段.text中的指令要从DDR或者SDRAM中被搬运或者映射到L1P cache中才能被执行?
问题2:
如果是要搬运到L1P的话,如何搬运,因为DSPC6000 有二级缓存cache,DDR和L1P CACHE 之间还隔着
L2 CACHE,是不是说,分两步走,step1,指令先从DDR映射或者搬运到L2 cache中,step2,指令再从
L2 cache中映射或者搬运到L1p cache中。
问题3:
如果问题2成立的话,由于L2 cache和L1p cache 以及L1d cache三者大小和cache line大小都不同,以
DM648为例,L1P cache 32KB linesize 为32byte 直接映射 L1D cache 32KB linesize 64byte 二路
相联映射, L2 cache 256KB linesize 为128byte 。
是不是说,step1,指令从DDR到L2 cache时候,一次性搬运L2 cache linesize 大小,也就是128byte大小指令。然后step2,指令从L2cache 搬运到L1p cache时候,一次性搬运L1P CACHE linesize大小,也就是32byte 长度
指令?
问题4:
如果上面问题都成立的话,那么这些步骤step1和step2都是由谁来完成的?系统自动完成的么?还是要人为干预,
编程实现?
问题5:
最后关于DDR cacheability ,如果DDR开启了CACHE 功能,是不是就像上面描述的step1呢?开启CACHE之后,DDR
会自动定期向L2cache 搬运指令或者代码?
steve_xiaop:
DSP C64x cpu 在取指令时候,如何判断自己想要的指令是否存在L1P cache中,是否存在L2cache 中,还是存在DDR或者SDRAM中。
cpu一上电,从第一条取指令开始的时候,所有cache中包括L1P cache L1D cache和L2 cache中的内容是不是都是0?
pengpeng gong:
呵呵 你cache研究的很深入啊 关注一个。
steve_xiaop:
回复 pengpeng gong:
pengpeng gong
呵呵 你cache研究的很深入啊 关注一个。
steve_xiaop:
回复 steve_xiaop:
顶起来
Louis:
回复 steve_xiaop:
你好,
请参考http://www.ti.com/lit/ug/spru656a/spru656a.pdf TMS320C6000 DSP Cache User's Guide》Chapter1 1.5 Cache Basics 的描述。
chen xie:
回复 steve_xiaop:
你的研究有结果了么???