现在有个疑问是SYS/BIOS在多核情况下到底是如何部署的?是一个SYS/BIOS系统运行在多个core上,还是每个core上都运行一个SYS/BIOS。其效果可不可以类比是window下的intel多核处理器?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
现在有个疑问是SYS/BIOS在多核情况下到底是如何部署的?是一个SYS/BIOS系统运行在多个core上,还是每个core上都运行一个SYS/BIOS。其效果可不可以类比是window下的intel多核处理器?
谢啦!
还想再问一下:多核Load program的时候,cmd中配置如下:
.text : > MSMCSRAM
.far : > MSMCSRAM
.data : > MSMCSRAM
.bss : > MSMCSRAM
.cinit : > MSMCSRAM
.cio : > MSMCSRAM
.pinit : > MSMCSRAM
.const : > MSMCSRAM
.switch : > MSMCSRAM
.bios : > MSMCSRAM
.alignconst : > MSMCSRAM
.init_array : > MSMCSRAM
.fardata : > MSMCSRAM
.neardata : > MSMCSRAM
.rodata : > MSMCSRAM
全部八个cores都load这个指导生成的.out文件,那么八个cores的程序会不会发生覆盖,或者八核重用一段代码?
会覆盖,不能这么做,每个核自己的段必须是单独的内存段,不能像你的例子这样指定到同一个内存区间里,必须在每个cmd文件里把MEMORY分开,
比如 core 0使用 0x0C000000-0x0C010000, core 1使用0x0C010000-0x0C020000等等,
共享的lib库或者数据可以放在同一段Memory里面。
想接着问一下:
如果多个cores共用的都是一个project和cmd,load的时候全部load同样的.out文件,各个cores执行的功能是由coreID来区分的。
每个core的代码都是一样的,只不过是通过if,else判断选择了不同的分支执行而已,那么即使发生覆盖,代码还是保持不变。
那么直接将代码load到共享SRAM中作为共享代码段,所有的cores都从共享代码段开始执行,可以节省部分的内存。这种想法可不可行?会发生总线/数据竞争吗?
用一个project可以,代码一样然后走分支也可以,这样的话代码段是可以共享的;但是用一个cmd比较麻烦,stack,far,bss在不同的核上要用不同的地址,否则这些数据就会冲突。