ARM架构&性能优化简介

ARM

        英国ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构 ,在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。ARM并不生产芯片,而是设计指令集&架构然后授权给半导体厂商设计和生产芯片。像我们熟悉的高通、MTK、瑞萨、芯驰、全志等都是ARM的客户。

ARM处理器IP

        ARM根据不同场景的应用需求设计了多套IP,它们在功耗、性能等方面各有侧重,目前主要分为如下几类:

  • Cortex-A:性能较高,常用于平板/手机/车载娱乐等行业
  • Cortex-R:安全性较高,用于车规级域控制器等领域
  • Cortex-M:微控制器系列,用于对性能要求不高的场景,如工业控制、家具家电等

CPU算力

        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

        注意

  • 上述计算得到的为参考值,实际中通过专用工具进行测试,结果具有一定差异
  • 评估的只包含CPU,不涉及其他异构处理器:GPU/DSP/NPU等

性能问题

        首先需要明确一个问题,即算力是否能够和性能划等号,答案是否。

        算力只是各个芯片理论DMIPS的总和,它无法代表具体某个核的性能;而很多应用往往跑在单核上,此时单核的性能反而是制约应用表现得直接因素。这就像10个小学生 VS 4个初中生,也许拔河时前者能取胜,但比拼单项时就会被后者完虐。

        由于CPU编程的便利性和擅长处理逻辑任务的特点,CPU算力往往是系统中争抢使用的资源,资源紧张时就会导致系统卡顿。因此性能优化就成为避不开的一个问题,结合这里的场景就是降低计算资源占用,尤其是CPU资源。

        而对于算法开发同学来说,一般通过降低算法的耗时来实现上述目标。在介绍相关方法之前首先提一下Amdahl定律,它是指导算法耗时优化的基础定律。

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小了将近一半!所以在进行耗时优化之前,需要了解各个模块的运行耗时分布,制定合理的优化目标。

耗时优化

        耗时优化的流程大致分为“耗时分布评测”——“耗时优化”——“效果验证”三步,而耗时优化的手段很多,这里简要介绍如下。

  • 流程精简:去除冗余/重复操作,计算/数据复用
  • 原理简化:使用计算复杂度更低的方法替代原有方法
  • 代码优化:提高cache命中率、浮点转定点
  • 多核:多线程计算
  • SIMD:Neon指令集
  • 异构计算:GPU/DSP/NPU等

参考

Amdahl定律(阿姆达尔定律)-CSDN博客

DMIPS, FLOPS, OPS概念

【精选】ARM Cortex-A系列(A53、A57、A73等)处理器性能分类与对比_maopig的博客-CSDN博客

几款MCU和SOC的CPU算力评估 - 知乎

你可能感兴趣的:(算法优化,性能优化,linux)