微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 请教:ARM的多核CPU(A9)不同核之间如果协同,分配load

请教:ARM的多核CPU(A9)不同核之间如果协同,分配load

时间:12-12 整理:3721RD 点击:
对于嵌入式软件工程师来说,如果是单核CPU,比较容易理解,但对于多核CPU,一个程序如何分配到不同的核上去执行?软件工程师需要做什么吗?

一般来说,操作系统的调度器都实现了这个功能,芯片生产厂家不需要关注这个,或者关注一下也是内核/驱动工程师为了优化性能和功耗。

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就行。

多谢大家

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top