各位:
我想看看Cache对内核访存内存性能的影响程度,在EVM6678平台上实验。CMD文件中映射的代码段、数据段不放在L1D LL2 中,为了方便对其配置,因为配置为Cache后,是不能映射数据和代码段的。CMD在MSM和DDR一部分区域开辟代码段和数据段映射空间。
(1)由于加载EVMC6678.gel文件中设置的是:L1D-32KB Cache, L1P Cache, LL2- All SRAM ,此种情况对L1D 和LL2分别循环写入16KB和32KB数据,测定速度分别为15564MBps,十分接近内核理论带宽,查看数据也正确。可是修改gel中的Cache配置方案,重新加载,不管如何修改,速度无变化。就算L1D无变化可以理解,但对LL2的内核访存无变化就难以理解了。不应该是L1D区域的Cache越大对LL2的访问越优异吗?另外看文档和论坛说L1D默认是Cacheable,是什么意思,是不是对LL2的访问不管配置L1D cache与否,都是可Cache的吗?
(2)对外部MSM和DDR区域测试,MSM默认状态下是SL2 RAM性质,那他应该受L1D Cache大小影响吧。此时配置Cache后,还需要对MAR使能吗?是MAR12吗? 作为SL3 SRAM呢? MSM配置为SL3 RAM性质的CSL函数是什么?
(3)DDR的Cache是LL2完成,在GEL原始L1D-32KB Cache, L1P Cache, LL2- All SRAM 情况下,内核访问只有1200MBps左右,正常码?CACHE_enableCaching(128),读取CACHE_getMemInfo(); pcx为何还为1??
(4)另外,文档MAR部分说对MAR的写操作,是必须被Supervisor Code完成,看论坛有人说是进入中断就是Supervisor 模式,如果是进中断,TI为何这样设置的原因?直接使用CACHE_enableCaching 函数不能完成对外部内存的Cachability设定吗?对MAR的写操作吗?
请解答!谢谢