2042|0

6197

帖子

0

资源

五彩晶圆(初级)

C6678多核应用的cache小测试 [复制链接]

C6678多核之间在MSMC中交互数据,默认会用到L1D cache
数据一致性问题是很令人困扰的。
小测试验证了关于L1D cache 的linesize 是64Byte
初始化:
if(DNUM == 0)
{
(unsigned int)(0x0C330600) = 0x00;
(unsigned int)(0x0C330604) = 0x100;
(unsigned int)(0x0C330644) = 0x100;
WritebackCache((void *)((unsigned int)(0x0C330600)), 128);
}
然后在多核同步中断程序中:
//test

if(DNUM == 0)
{
    InvalidCache((void *)(0x0C330600), 64);
    (*(unsigned int*)(0x0C330600))++;
    WritebackCache((void *)((unsigned int)(0x0C330600)), 4);
}
else
{

    InvalidCache((void *)(0x0C330640), 64);
    (*(unsigned int*)(0x0C330644))++;
    WritebackCache((void *)((unsigned int)(0x0C330644)), 4);
    /*
    InvalidCache((void *)(0x0C330600), 64);
    (*(unsigned int*)(0x0C330604))++;
    WritebackCache((void *)((unsigned int)(0x0C330604)), 4);
    */
}

如此测试条件下,两个数据始终相差0x100,但若替换成注释部分的代码,则会破坏数据完整性。

也可以利用XMC来配置SL2,这样不用反复的InvalidCache和WritebackCache操作。


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表