赞
踩
英国ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构 ,在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。ARM并不生产芯片,而是设计指令集&架构然后授权给半导体厂商设计和生产芯片。像我们熟悉的高通、MTK、瑞萨、芯驰、全志等都是ARM的客户。
ARM根据不同场景的应用需求设计了多套IP,它们在功耗、性能等方面各有侧重,目前主要分为如下几类:
Cortex-A系列下也有众多的配置,以CPU来讲包括A35、A55、A57、A78等,数字越大CPU的算力越强。一般处理芯片会有大小核搭配而成,譬如高通的SA8155芯片里有4个A76和4个A55。
一般使用DMIPS评估CPU的算力,表示处理器的运算能力。其计算公式为DMIPS = cpu DMIPS/MHz* 主频,前面一项表示每MHz下CPU提供的算力。由此计算得到SA8155的算力如下
型号 | DMIPS/Mhz | 主频/GHz | DMIPS |
SA8155 | 4个A76:5.2 4个A55: 2.7 | 超大核:2.96 大核:2.42 小核:1.8 | 2.96*1024*5.2+2.42*1024*5.2*3+1.8*1024*2.7*4=74326.016 |
注意
首先需要明确一个问题,即算力是否能够和性能划等号,答案是否。
算力只是各个芯片理论DMIPS的总和,它无法代表具体某个核的性能;而很多应用往往跑在单核上,此时单核的性能反而是制约应用表现得直接因素。这就像10个小学生 VS 4个初中生,也许拔河时前者能取胜,但比拼单项时就会被后者完虐。
由于CPU编程的便利性和擅长处理逻辑任务的特点,CPU算力往往是系统中争抢使用的资源,资源紧张时就会导致系统卡顿。因此性能优化就成为避不开的一个问题,结合这里的场景就是降低计算资源占用,尤其是CPU资源。
而对于算法开发同学来说,一般通过降低算法的耗时来实现上述目标。在介绍相关方法之前首先提一下Amdahl定律,它是指导算法耗时优化的基础定律。
Amdahl 定律是计算机系统中的一个重要定律,核心思想是:我们对计算机系统的某一部分加速的时候,该加速部分对系统整体性能的影响取决于该部分的重要性和加速程度。
比如一个应用程序A,系统运行总时间是T,某一部分执行时间为t,t与T的比值是a(t / T = a,也就是说 t = aT), 该部分性能提升k倍时执行时间为 t’ = aT / k。此时总执行时间为
T(总) = T - t + t’
= T - aT + aT / k
= (1 - a) *T + (aT) / k
= (1 - a + a/k) * T
这里加速比S=1/(1-a+a/k),假如我们对某个占比60%的代码进行3倍加速,那么整体的加速比为1/(1-0.6+0.6/3)=1.6667,比3小了将近一半!所以在进行耗时优化之前,需要了解各个模块的运行耗时分布,制定合理的优化目标。
耗时优化的流程大致分为“耗时分布评测”——“耗时优化”——“效果验证”三步,而耗时优化的手段很多,这里简要介绍如下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。