6678如果我设置L1P为32Kcache,L1D为32Kcache,L2为0Kcache,是不是意味着只有L1这一级cache,这样设置如果读写共享内存中的数据保持一致性,是不是cacahe line是64字节。DDR3是不是也是一级cache,cache是不是也是64字节,如果设置了cacheable。
还有一个问题,如果我想让1-7核同时运行,运行完成后分别通知0核已完成。0核收到所有七个都完成,再进行下一步动作。这个怎么实现。
我用共享内存实现,用一个变量flag【8】【64】去同步,都完成flag【corenum】【0】置1,在0核main函数中while一直查询,查之前每次都要cache_inv,发现有问题,一直同步不了,我查物理内存是已经都置1了。是不是while时间太短,inv太频繁,如果我做一段延时,就能同步上,这是为什么。还有一个奇怪的现象就是,如果我用flag【8】【128】就能同步上,不用延时,为什么,是不是cache line是128,可是共享内存默认的就是L1 cache啊。
请求专家解惑