请教:ARM的多核CPU(A9)不同核之间如果协同,分配load
一般来说,操作系统的调度器都实现了这个功能,芯片生产厂家不需要关注这个,或者关注一下也是内核/驱动工程师为了优化性能和功耗。
openmp啊,intel x86和TI的DSP都可以用openmp进行多核任务调度,我想ARM肯定问题不大
也就是说cpu架构已经做好了,基于cpu的soc不需要额外处理,对吗?
这是kernel scheduler的工作,最老的smp,一般是多核间loading balance来分配性能,power则用CPU hotplug.后来arm big little hmp的构架有套big little迁移的算法。后来改成arm的EAS,scheduler里面+cpu的power table.最新arm的dynamic iq scheduler又要改,估计构架还是eas那套。。
如果OS 或者系统支持多核心,应用软件需要支持多进程或者多线程并发。
我所知道的只有最大的几家会自己改scheduler,比如INTEL和高通。多数ARM厂家都是根据自己芯片和板子的功耗特性适配IPA/EAS,优化一下功耗相关的参数。至于性能都是标准的A9/A53/A72之类的,什么频率有什么性能都已经定好了,EAS会根据功耗性能来自动均衡负载的。
一个程序如果必须串行运行,多线程作用不大,如果可以并行,比如图像处理里的点处理就很适合并行化了,假设你有4核,你可以把图像分为4块,每个核做一个小块的点处理,在图片不太大情况下(设计到cache大小及命中率)提升可以做到接近4倍,但这样的多核场景需要你自行设计应用程序,再另外一种是用openmp这种中间件,这个就是自动帮你并行了。
这是OS干的活。
软件工程师只要写好各个task就行。
多谢大家