arm处理器上多线程如何优化加速

arm处理器上多线程如何优化加速,第1张

嵌入式多核处理器。

嵌入式多核处理器已经在嵌入式设备领域得到广泛运用,但嵌人式系统软件开发技术还停留在传统单核模式,并没有充分发挥多核处理器的性能。程序并行化优化目前在PC平台上有一定运用,但在嵌入式平台上还很少,另外,嵌入式多核处理器与PC平台多核处理器有很大不同,因此不能直接将PC平台的并行化优化方法应用到嵌人式平台。本文分别从任务并行和缓存优化两方面进行并行化优化的研究,探索在嵌人式多核处理器上对程序进行并行化优化的方法。

先说结论:大小核挺好,调度是大小核的衍生,用不好会有问题,但它是免费的,不好可以不用。 看了 @北极 的答案,写的挺好,但是缺乏一点数据支撑。而 @winnie Shao 说的也对,只不过拿好几家用Big.Little来说明它好有点牵强。 为什么在网上找不到Big.Little的具体功耗数据呢?因为选用不同的核,用不同的工艺,使用不同的signoff条件,设计不同的电源/电压/频率域,运行不同的大小核切换软件(HMP/EAS),使用不同的功耗模型,跑不同的场景,得到的功耗曲线都是不一样的,没法一概而论。而这些东西,在流片以前是没法给出答案的,就算用了仿真环境,也没法跑复杂的场景,得到准确的答案。 另一方面,如很多人所述,对于安卓手机,大家都做8核,那么你的4核就算调度的再好,你也卖不上8核的价。市场上的安卓手机芯片就那么几个玩家,高通可以自己玩,其他的三星,MTK,海思,展讯,LG,联芯,RDA,中兴,ASR,松果,哪家的市场和管理敢扔开ARM的建议直接自己干?大小核再不好,它在市场和技术上都是经过考验的,谁敢在仿真都没法证明它不好的情况下去掉它直接流片?做产品不是拍脑袋,就算技术上不需要,那市场呢?谁敢保证做出来OEM都同意你的观点?就算OEM都同意,顾客会有什么反应?这难道是一个普通的手机芯片公司能定的事情?除了苹果恐怕没人敢这么说,这个相信大家都明白。 当然,还有一个例外,就是有低端和超低端手机芯片的,比如MTK,展讯,联芯和RDA等,为了面积成本考虑,根本就不会有很多电源/电压/频率域,由于芯片本身就小,用不到8核,功耗也低,不存在降功耗的需求,这时可以只用单一配置。 再补充一句题外话,ARM自己测出来的场景,最多用到6核,大小核是ARM提的,8核也是ARM提的,但10核确实不是ARM提的,并且ARM的调度软件都不支持10核,需要用户自己改。 而要看Big.Little的功耗到底好在哪,我们需要做一堆假设和简化。假设使用A73MP4/A53MP4,在TSMC16FF+节点,分别跑在2.3Ghz和1.5Ghz(具体Signoff条件我就不写了),无极调频。此时软件,模型和场景先省略,单看独自跑的时候需要多少电(基于Dhrystone): A73@2.3G/0.8V需要500mW动态功耗(220mW/Ghz/core)和110mW的静态功耗(MP4,2MB L2C) A53@1.5G/0.8V需要100mW动态功耗(63mW/Ghz/core)和7mW的静态功耗(MP4,1MB L2C) (这两组数据来自ARM) 以上是单个核在全速跑的时候的数据,非常明显,A73需要610mW,而A53只需要107毫瓦,6倍。 而他们的性能呢?A73的SPEC2KINT是835/Ghz,A53是500/Ghz。乘上频率,分别是1920和750. 一个任务运行在A53运行,时间比A73多花2.5倍,能量可以少6倍,能效比是3.1/7. 那如果这个任务在低频 的A73运行呢?假设是1.5G,功率是440mW,性能1252,能效比2.8/7。 不过,降低A73的频率可以使用更低的0.72V,功耗可以再降20%,能效应该是3.4/7. 再假设A53也降频,到500Mhz,和2.3Ghz的A73比,能效就变成了3.1/7.5. 基于以上功耗数据,我们可以很明显看到,A53的能效一直是在A73的2倍以上。不考虑运行时间只考虑能效,所有的任务当然都是给A53比较好。但同时,由于很多程序都是单线程的,为了用户体验,还是要放到A73上提高速度。在图形处理上,如果使用了OpenGL ES,单核CPU性能更重要,会直接成为GPU性能的瓶颈,到最新的 Vulkan才缓解。这两点放在一起,推动了大小核的产生,虽然电源设计更困难,调度程序更复杂,IP需要买的更多。此外,如果把以上的功耗条件改掉,比如A53跑到极高的频率(意味着用极高电压和漏电极高的物理库,导致漏电成数倍上升),有可能会造成小核的能效低于大核,那又是另外的情况了,并不能说明就该取消小核。 @北极 还提到,手机上非跑分情况下的用电大户不是 cpu,而跑分时调度又没有必要。这话没错,但是也不全对。平时的耗电大户是屏幕,玩游戏是 GPU,可是除此之外,所谓的待机功耗大部分都在 CPU和总线的静态功耗。DDR此时大多是关的,基带也是休眠的。如果我拿 一个A73来做待机核,他的漏电是 A53的十五倍。这样的芯片到了 OEM会被骂死。这一点,你就是找神仙也没法帮你优化。再说Vulkan,它使用了CPU多线程,使得以前只能在一个CPU大核跑的GPU驱动可以分散在多核小核。这时候谁用的电更少?调度软件会帮你决定,而单一大核就没有这个能力。 有人说那我功耗控制做的更精细些,然后去掉小核。不是不行,但是这需要额外面积和更复杂的软件,而且上面也说了,做不到小核那样低的漏电。还有,同样的优化也可以用在小核。并且,从A73下一代开始,arm可以把调度的单位做到单个核,而不是之前的一个簇。一个到八个核芯片公司完全可以定义八级大小,也可以独立的改频率,不存在四核八核十核十二核的概念了。 还有,都是大核难道就不需要切换和合并吗?也需要,只不过不一定在两个簇内,可能不需要通过总线。而 A73下一代就把这个改进了。 还有人提到了切换的代价,其实切换只是大小核的附带功能,而这个代价会越来越小。我就不上数据了。 总之,大小核是个好设计,省了功耗,间接省了面积。之前由于做的不够精细,导致多余的核产生,今年出的新设计就会改掉了。

是这样的,你用FPGA可以实现处理器,也可以实现一些复杂的算法,如FFT,FIR等。如果用FPGA实现了处理器,那么处理器可以裸奔(不加嵌入式 *** 作系统),也可以加入嵌入式 *** 作系统(如uC/OS-II,uClinux)。

FPGA的重点不在 *** 作系统,但作为一个从事电子设计的人,嵌入式 *** 作系统是必须掌握的。通常 *** 作系统在ARM应用的最为广泛,在单片机、DSP、FPGA中也有应用,但较少。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7863399.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存