Hi,TI工程师:
有如下几种场景,看如何来实现多核共享内存:
1.同一个工程(包括同样的代码和cmd文件)生成出来的out文件,加载到多个核上。
这种场景,应该可以适用于那些每个核都处理类似任务的场景,编程主要靠coreID来区分流程,内存分配也最好以放置在MSMC上为主(主要是为节省内存空间),而且加载时也只用加载一份(如果有放置在LL2上的,则需各自都要加载)。
2.各核自建工程,但是部分代码数据相同:
这种情况下,如果考虑把相同的代码or数据放到MSMC上一份以实现多核共享。这个时候,由于工程不一致,cmd文件也不尽相同。如果要实现共享,是否需要在各自的cmd文件中指定一个相同的MSMC绝对地址来划分一个段,然后将需要共享的代码or数据通过#progma放进去?但是同时,编译器又是如何来保证各个核放置在这个段里面的代码or数据的内容的顺序又是一致的呢?
即,假设我需要定义一个共享变量来实现多核同步,编译器如何来保证每个核工程编译时让其出现在同一个地址上的?
另外,对于共享段,在加载时,是否就只用加载一次就可以了?
3.各个核的任务差异很大:
由于差异较大,MSMC就没有必要划分共享段来。用法就可以类似LL2来用,将MSMC私有化。一个核可以通过绝对地址去访问另一个核的MSMC段内容。
这些都是个人的一些理解,还请TI工程师指正是否正确。
特别是场景2,一直没有搞明白它是如何实现的。
谢谢!