This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于Cache函数的处理步骤



我现在要做的是八个核都共享同一片数据区,不过每个核负责处理的数据区域是不同的。

核0是主核,除了本身处理一块数据外,还负责通知其他核开始处理,及收到其他核完成处理的通知。

在核0收到其他完成处理的通知后,打开共享内存,读取所有核的处理结果

我的代码大概是这个样子的

主核0:

// 初始化共享区域的数据
Cache_wbAll();
// 通知其他核处理数据
Cache_disable();
// 主核处理它这部分的数据,并把结果放在内存中
Cache_wbAll();
// 等待其他核完成处理
Cache_inv();
Cache_wait();
// 主核读取存入结果的内存区域

从核代码

// 获得主核通知
Cache_disable();
// 从核处理数据
Cache_wbAll();
// 通知主核处理完成

最后的结果只有主核数据被正确存入了!如果处理Cache,请详细说明下>_<


  •   保证共享数据的地址及长度cache line对齐,每个core在向共享memory写完数据后,执行cache write back将数据回写到实际memory;在读共享数据之前及处理完共享数据之后执行cache invalidate,保证从实际地址读到更新的数据。