假设有两个数组buffA和buffB,分别用在不同的模块中;
当执行拷贝操作时,cache是怎样的变化过程:
for(int i=0;i<n;i++)
buffB[i]=buffA[i];
1、buffA的数据会被从内存缓存到L2、L1D,这个应该比较好理解
2、buffB的数据会被从内存缓存到L2、L1D,然后再被修改为buffA的数据吗?还是说会直接在L1D中构造出cache line数据?
3、如果buffB在复制完成后没有后续操作,使用cache_wbInv是不是会更快的释放cache空间
4、对buffA进行cache_wb操作,然后使用edma对buffA的数据拷贝到buffB,在多大的数据量的情况下会比使用cpu的copy操作更高效?
5、在程序中进行大量数据处理后,如果存在后续不再使用或【一段时间内不再使用】时,使用cache_wbInv、cache_Inv释放该内存范围cache,会不会有效提高其他部分的运行效率?cache_wbInv、cache_Inv操作都需要消耗一定的cpu时间,怎样评估【一段时间内不再使用】的数据是否值得这样操作?这个【一段时间】是怎样的一个时间长度?