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

关于Cache函数的处理步骤

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

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

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

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

主核0:

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

从核代码

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

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

Andy Yin1:

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

赞(0)
未经允许不得转载:TI中文支持网 » 关于Cache函数的处理步骤
分享到: 更多 (0)