请问:
1、如果将L1D CACHE设置为32KB,L1P CACHE设置为32KB,L2 CACHE设置为0KB;
在core的LL2中定义了两个数组,out1占用32KB存储空间,out2占用32KB存储空间,
那么,当在core的LL2中对out1、out2两个数组调用进行运算操作时,因为设置的LL2是cacheable,而L1D CACHE只有32KB,那么两个数组在L1D cache中参与运算操作时会发生cache存储空间的使用冲突么?
2、memset(void *buffer, int value, int count),对buffer起作用的是它cache中的内容还是其所在的真正内存中的内容??
2018-6-21 13:36:28
1. 用到哪个就把哪个读进cache,把原来的置换出去;
2. L1D和LL2的cache一致性不需要手工干预,所以可以不用管;如果是DDR或SL2的可Cache空间,在不在cache不能确定,做完memset之后需要writeback。
1. 用到哪个就把哪个读进cache,把原来的置换出去;
2. L1D和LL2的cache一致性不需要手工干预,所以可以不用管;如果是DDR或SL2的可Cache空间,在不在cache不能确定,做完memset之后需要writeback。
举报
2018-6-21 13:42:22
引用: hdfsf 发表于 2018-6-21 13:36
1. 用到哪个就把哪个读进cache,把原来的置换出去;
2. L1D和LL2的cache一致性不需要手工干预,所以可以不用管;如果是DDR或SL2的可Cache空间,在不在cache不能确定,做完memset之后需要writeback。
不是说L2的cache一致性由硬件维护么,所以不需要手动维护,那么我这一小段检测程序里面,为什么DDR3里面的前128个字节不对呢?
引用: hdfsf 发表于 2018-6-21 13:36
1. 用到哪个就把哪个读进cache,把原来的置换出去;
2. L1D和LL2的cache一致性不需要手工干预,所以可以不用管;如果是DDR或SL2的可Cache空间,在不在cache不能确定,做完memset之后需要writeback。
不是说L2的cache一致性由硬件维护么,所以不需要手动维护,那么我这一小段检测程序里面,为什么DDR3里面的前128个字节不对呢?
举报
2018-6-21 13:54:05
你是用DMA将LL2数据搬到DDR么,如果这块DDR的属性配置为cacheable,则需要在DMA启动前对这个DDR区域进行L1D cache invalid操作。
你是用DMA将LL2数据搬到DDR么,如果这块DDR的属性配置为cacheable,则需要在DMA启动前对这个DDR区域进行L1D cache invalid操作。
举报
2018-6-21 14:06:26
但是,
1,EDMA传输数据不是直接传输到内存中么?即使DDR被cacheable了,传输到DDR内存中的数据也应该是对的啊?
2,难道是:我从memory browser中看的是DDR cache中的内容,而不是真正内存中的麽?
3,L2的cache一致性不用手动维护吧?是硬件维护是么,也就是说L2 RAM中内容始终与L1D CACHE保持一致是么?
问题有点多,请多指教啊,谢谢!
但是,
1,EDMA传输数据不是直接传输到内存中么?即使DDR被cacheable了,传输到DDR内存中的数据也应该是对的啊?
2,难道是:我从memory browser中看的是DDR cache中的内容,而不是真正内存中的麽?
3,L2的cache一致性不用手动维护吧?是硬件维护是么,也就是说L2 RAM中内容始终与L1D CACHE保持一致是么?
问题有点多,请多指教啊,谢谢!
举报