高通modem架构_高通神经网络处理引擎SNPE分析与评测

e447bd9b4428b53b5f0d26e08f3d84f6.png

骁龙(SnapDragon)神经处理引擎(SNPE)是一个针对高通骁龙加速深层神经网络的运行时软件,高通在CSDN和其官网都提供了下载。

本文以SNPE 1.23为基准,将结合高通官方的SDK说明文档(高通在CSDN也提供了开发者社区,中文社区论坛,以及SNPE部分文档),介绍SNPE这一高通官方的神经网络处理引擎开发包。

开发中有疑问可在高通的CreatePoint检索相关文档或者在SNPE论坛提交疑问,或发邮件到support.cdmatech@qti.qualcomm.com。

因为SNPE的特殊性,本文重点考察:

  • 不同runtime架构特点,调度关系,尤其是对DSP/AIP的HVX与HTA;
  • 性能:CPU,FXP-CPU,GPU,GPU-FP16,FXP-DSP/FXP-AIP(FXP是int8量化);
  • 模型的int8量化与DSP/AIP的加载时的量化策略。

本文将以如下目录展开:

  1. 高通与骁龙处理器
  2. SNPE特点与工作流
  3. SNPE组成架构
  4. SNPE性能与精度
  5. int8量化策略

1. 高通与骁龙处理器

这部分的内容改写自百度百科的词条:骁龙。高通骁龙是Qualcomm Technologies(美国高通公司)的产品。

1.1 历代产品

在2013年之前,骁龙处理器分为S1,S2,S3,S4四个层级,以区分不同的四代产品。

  1. 骁龙S1(2007-2011):MSM7225/7265采用ARM v6架构、单CPU核心,45nm制程,320MHz的Hexagon QDSP5,未集成GPU;2008年QSD8250/8650发布,Scorpion核心(ARM v7架构),Adreno 200 GPU,600MHz的Hexagon QDSP6。奠定S2/S3形态;
  2. 骁龙S2:由MSM8255/8655、MSM7230/7630和APQ8055构成。均采用了Scorpion CPU、Adreno 204 GPU、256MHz Hexagon QDSP5以及支持双通道333MHz LPDDR2内存,45nm制程,功耗降低。MSM8255处理器:HTC Incredible S、HTC Desire S、索尼爱立信LT15i、LT18i、OPPO R807、诺基亚Lumia 800等大多数的WP7系统手机;
  3. 骁龙S3:进入双核+1080P时代,产品线短,仅有MSM8260/8660和APQ8060三个版本(MSM8260如HTC Sensation、HTC Sensation XE、索尼LT26i、OPPO X905、小米手机),差异在于网络制式,相同点是均为双核Scorpion CPU、Adreno 220 GPU和400MHz Hexagon QDSP6。骁龙S3与骁龙S2、骁龙S1构成了2010年、2011年间QualcommSoC高中低搭配。
  4. 骁龙S4:
  5. Play系列:双核MSM8225/8625和四核MSM8225/8625Q,45nm,CPU为Cortex-A5核心与Adreno 203 GPU
  6. Plus系列:双核Krait CPU、Adreno 205 GPU
  7. 高端Pro,Prime系列:MSM8260A/8660A拥有双核Krait CPU、双核/四核Adreno 320。APQ8064拥有高性能四核心Krait CPU

这一部分虽然只是罗列,但是能看出S1~S4的每一代都几乎都是基于ARM架构+自家DSP+GPU的异构平台。

1.2 骁龙处理器

后来的骁龙处理器,主要包括:800系列、700系列、600系列、400系列和200系列处理器。

800系列特点

  1. 该系列定位高端。截至目前,855是高通最新的旗舰级手机处理器;
  2. 9款:855/845/835/821/820/810/808/805/801/800;
  3. Krait架构、ARM公版架构、定制的Kyro架构:
  4. 800、801、805都基于Krait架构:该架构基于ARMv7-A指令集、自主设计采用28纳米工艺的全新处理器微架构;
  5. 810使用64位ARM公版架构;
  6. 骁龙820采用定制架构Kryo:高通推出的首款定制设计的64位CPU架构。821比820性能提升高达10%,此外Hexagon™ 680 DSP 带来性能、电池续航的优化。

其它系列:

  • 700系列:高端级,支持人工智能引擎(我猜应该是指SNPE)、功耗优化;
  • 600系列:高端级,手机、平板电脑、嵌入式等。15款:670/636/632/660/653/630/626/652/650/617/616/615/610/602A/600;
  • 400系列:大众级,10款:450/439/429/427/435/430/425/415/412/400;
  • 200系列:入门级,4款:212/210/208/200。

1.3 支持SNPE的处理器

支持SNPE的骁龙处理器列表如下:

  • 9款800系列中的5款(855/845/835/821/820);
  • 1款700系列(710);
  • 15款600系列中的6款(660/652/636/630/625/605);
  • 1款400系列(450)。

参照前面骁龙处理器系列,可以看出SNPE主要针对中高端机型中的800、600系列。

除了关注CPU和GPU外,比较引人注目的是DSP和AIP。其实AIP也是一种DSP,但根据表格中的值发现有CDSP和ADSP之分。只在官方文档中的支持设备表格与例子部分看到有CDSP,其它地方并没检索到更多信息,不过文档中说CDSP还是ADSP取决于设备:

This module runs on the ADSP or the CDSP, depending on the target. Please refer to the Snapdragon Device Support Matrix table in the Overview section to determine SNPE support of DSP on various Snapdragon devices. SNPE automatically detects the appropriate DSP.

但也在网上查到高通有2种DSP:

  1. mDSP is the Modem DSP, which allows the modem to outsource processing;
  2. aDSP is the Application DSP, which allows the device to process simple sets of data on low power, without having to wake up the Application processor (AP).

下图是骁龙800处理器,来自Hexagon hotchips2013的PPT,可以看到有aDSP与mDSP。

76236b3fb2377ac73596c8d25fd5c049.png

1.4 Hexagon DSP

列表中CPU、GPU都比较熟悉,但是对后两个DSP和AIP不了解。根据和高通平台的手机产品中的Hexagon百度百科对词条Hexagon(高通骁龙处理器的DSP名称,DSP是数字信号处理器)的解释:

Hexagon Digital Signal Processor (DSP),高通的Hexagon计算DSP,作为高通研发的世界一流处理器,集成了CPU和DSP功能,能支持移动平台多媒体和modem功能的深度嵌入处理。拥有高级的可变指令长度、超长指令字、支持硬件多线程机制的处理器架构,Hexagon架构和核心家族给高通带来了modem和多媒体应用的性能和功耗优势,是高通骁龙处理器的关键组件。

900b1b3d128038ca9d494ad235aa3f78.png

自骁龙品牌建立之初就有了DSP,早期DSP仅用于语音和简单的音频视频解码播放,随着智能手机使用需求加大,包括摄像头和传感器功能的信号处理任务都可由DSP完成,DSP比CPU更擅长在低功耗下处理这些任务。

其基本特点有:

  • DSP相比CPU可实现高性能计算和高能效(省电);
  • 用于卸载CPU任务,利用异构计算支持实时在线任务;
  • 音频任务。在无延迟、无失真的情况下流式传输音频,消除背景噪声;
  • 视觉任务。文本识别、对象识别、图像增强和图像内的面部识别。

因为原文太长了,很多图片和表格贴出来有格式或者显示问题,这里附上原文链接

高通神经网络处理引擎SNPE分析与评测​yuenshome.space
4fa994e224b14123dfe0c80963b092ac.png

版权声明:本文为weixin_39811036原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。