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操作。
可以参考:
https://blog.csdn.net/weekman93/article/details/88806868
#个人认为这个帖子里的基地址不能直接使用,但思路是可以参考的#
比较好的资料的TI的官方的"KeyStone_1_Memory_Performance"!

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C6678是一款基于TI(德州仪器)公司的多核处理器的产品。多核编程是指同时利用多个处理器核心来完成任务的编程技术。 C6678拥有8个DSP核心,每个核心都可以独立地执行指令和处理数据。多核编程可以充分利用这些核心,实现并发执行,提高系统的处理能力和效率。 在多核编程中,常见的问题包括任务划分、负载均衡和通信机制等。 首先,任务划分是指将一个大的任务拆分成多个小任务,并分配给不同的核心进行处理。任务划分需要考虑到任务的性质和依赖关系,合理地将任务划分成独立且可以并行执行的子任务。 其次,负载均衡是指将多个任务均匀地分配给各个核心,使得各个核心的工作负载相对平衡。负载均衡可以通过动态调整任务的分配策略和监测核心的工作状态来实现。 另外,通信机制是多核编程中的重要问题。多个核心之间需要进行数据的共享和交换,以及协调任务的执行顺序。常见的通信机制包括消息传递、共享内存和同步机制等。 在使用C6678进行多核编程时,需要注意以下几点。首先,要合理地使用并行编程框架,如OpenMP或MPI,来简化并行编程的过程。其次,要注意数据的共享和同步访问,避免出现数据竞争和冲突。此外,还需要合理地选择任务划分和负载均衡策略,以充分发挥C6678的并行计算能力。 总而言之,C6678多核编程是一种可以充分利用C6678处理器多核心的编程技术。在应用中,需要考虑任务划分、负载均衡和通信机制等常见问题,并根据实际情况选择适合的编程框架和策略,以提高系统性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值