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

向专家请教一个关于cache,以及cacahe一致性的问题

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啊。

请求专家解惑

Andy Yin1:

 1 是的,L2设置为全ram时,只有一级L1 cache,cache line为64bytes。

2 在变量前加上#pragma DATA_ALIGN(变量名, 64)保证起始地址64bytes对齐,每个核写之后要做cache writeback,读之前做cache invalidate

user4675912:

回复 Andy Yin1:

谢谢回答,第二个问题还是没解决,我已经对齐了,不知道是什么原因,为什么inv之间要延时

赞(0)
未经允许不得转载:TI中文支持网 » 向专家请教一个关于cache,以及cacahe一致性的问题
分享到: 更多 (0)