我现在要做的是八个核都共享同一片数据区,不过每个核负责处理的数据区域是不同的。
核0是主核,除了本身处理一块数据外,还负责通知其他核开始处理,及收到其他核完成处理的通知。
在核0收到其他完成处理的通知后,打开共享内存,读取所有核的处理结果
我的问题是:
1. 数据本来是存放在共享内存中,各核处理的数据结果只会暂时存放在Cache中么?如果需要放入内存中,是需要用Cache_wb写回么?
2. 如果是这样的话,八个核中应该如何调用Cache函数,使得最后所有的数据结果都能存入内存中呢?比如Cache_wb和Cache_disable函数都如何安排?
我的尝试:
1. 各核调用处理函数前都先调用Cache_disable,处理函数后再调用Cache_wb,结果只用核0的数据成功存入内存中了。
2. 在主核读取所有处理结果后面添加了一段
Cache_disable(Cache_Type_ALL);
Cache_inv(outBuf,sizeof(outBuf),Cache_Type_ALL,TRUE);
Cache_wait();
发现其他核的结果都可以读取,而主核的结果却没有了!>_<