TI中文支持网
TI专业的中文技术问题搜集分享网站

C6678 Cache无作用

各位:

            我想看看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的写操作吗?                 

                    请解答!谢谢

Zhan Xiang:

             (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的吗?

[Z].L1D cache是read-allocate-only cache,也就是说只有读了数据才会把数据进到cache中,如果直接写,会从write buffer直接写出去的。6678的L1D可以配置成SRAM,只是在复位后,bootloader会默认将L1D和L1P配置成cache

             (2)对外部MSM和DDR区域测试,MSM默认状态下是SL2 RAM性质,那他应该受L1D Cache大小影响吧。此时配置Cache后,还需要对MAR使能吗?是MAR12吗? 作为SL3 SRAM呢? MSM配置为SL3 RAM性质的CSL函数是什么?

[Z],要使能MAR的,找到对应地址的MAR bit直接置位即可。CSL用CACHE_setMemRegionInfo来设置MAR

              (3)DDR的Cache是LL2完成,在GEL原始L1D-32KB Cache, L1P Cache, LL2- All SRAM 情况下,内核访问只有1200MBps左右,正常码?CACHE_enableCaching(128),读取CACHE_getMemInfo(); pcx为何还为1??

[Z]DDR3的速率是多少,如果是core访问,在开了L2 cache下,大概速率是1400MB,你可以参考TI网站上相关的memory测试数据。

                (4)另外,文档MAR部分说对MAR的写操作,是必须被Supervisor Code完成,看论坛有人说是进入中断就是Supervisor 模式,如果是进中断,TI为何这样设置的原因?直接使用CACHE_enableCaching 函数不能完成对外部内存的Cachability设定吗?对MAR的写操作吗? 

[Z]不在中断中是可以直接修改MAR的,并不需要进入中断,supervisor mode主要是用来实现安全相关功能的,你这里的操作不涉及该功能。   

Canyu Su:

回复 Zhan Xiang:

[Z]DDR3的速率是多少 ?  DDR是1333KHz,是TI的6678评估板,我设置到L2 256KB 或者512KB Cache并CACHE_enableCaching(128), 能跑到2000MBps多。

 

另问题:可是现在有个问题:不开LL2 ,只开L1D和L1P Cache下竟能够跑到5120MBps左右,比不使用Cache还快。????

另问题:第一个您说内核写操作和读操作的Cache方式不一样,现在我只是对内存写数据,我在尝试下读操作用时?他两个的机制不同吗?这样分析的话读操作更快吗?

赞(0)
未经允许不得转载:TI中文支持网 » C6678 Cache无作用
分享到: 更多 (0)