微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > ARM Cortex-M的音频性能解析

ARM Cortex-M的音频性能解析

时间:07-26 来源:电子发烧友 点击:

用低精度指令来某些仿真高精度MAC指令(例如32位乘以32位,在64位结果内累加),但最好是使用高精度MAC指令来获得高效实现。

  SIMD能力:这些模块内的运算往往是少量指令的反复执行,从而产生精简循环内核。单指令多数据(SIMD)能力对于此类模块的高效执行最为理想。内置此功能的处理器更有利于处理此类模块。

  饱和算法:某些运算需要使用饱和算法。例如,当在运行时产生窗口系数或在产生PCM输出数据到所需位宽时。针对饱和算术的需求可以减少,但无法完全避免,因为中间结果的位宽更高。因此,支持饱和算法的指令是高效实现的理想之选。

  分支推测:这些模块有一个预定的代码流。由于这些模块需要对指令反复执行运算,简单的分支推测有利于减少因流水线清空所产生的开销。

  MAC和控制代码混合模块

  这些模块同样是计算密集型,但在MAC密集运算中还涉及控制代码运算。快速傅里叶变换(FFT)、滤波器组等变换运算是这一类型的典型例子。此类模块的处理器要求为:

  DSP指令:由于上述两类模块(MAC密集模块和MAC和控制代码混合模块)主要涉及MAC运算,因此,如果只有MAC和MLS(乘法和减法)指令而无运算累加的开销,一定能提高效率。

  混合位宽运算:运算对象的最小位宽取决于各种因素。例如,在滤波运算中,输出精度和滤波器稳定性决定滤波器系数的位宽。所以高效实现离不开能够处理混合位宽运算对象的指令。

  压缩数据处理:FFT等这类模块的运算一般使用称为旋转因子的16位系数。FFT基数越高,所涉及的旋转因子越多,但相对复杂度越低。这些旋转因子可通过打包成32位数据来降低内核循环中的任何寄存器不足。或者可通过将旋转因子载入到内核循环以外的寄存器来避免重复负载的可能开销。因此,能够运算压缩数据的指令是提高效率的理想之选。

  位反转:能够执行位反转的指令有利于需要位反转寻址的FFT等关键模块。

  控制代码模块

  这些模块主要涉及控制代码且代码流为数据依赖型。位流解复用器和熵解码运算就属于此类。例如,MP3解码器采用霍夫曼解码,而WMA解码器采用游程解码。接下来讨论此类模块的处理器要求。

  无符和按位运算:这些模块需要处理打包的数据流,而这需要数据提取。因此,能够执行按位运算、提取、打包、解包的指令和能够处理无符运算对象的指令都是高效实现所需要的。

  精简数据,减少占位:这些模块中的代码流主要为数据依赖型,因此不是预定的。所以,精简数据大小有助于减少缓存清空所引起的任何开销。

  ARM Cortex-M3和Cortex-M4处理器

  本节将探讨ARM低功耗高性能微控制器Cortex-M3内核的功能,然后讨论Cortex-M系列的最新处理器内核M4的功能。Cortex-M系列内核的功能及示例指令和循环如表2所列。

  Cortex-M3功能:采用高精度MAC单元,可提供最高32位乘以32位数据的乘法精度,得出64位累加结果。其他有利功能包括DSP指令、范数计算辅助指令、分支推测、因Thumb-2的高代码密度以及硬件除法指令。这些功能都有利于音频处理。

  Cortex-M4功能:Cortex-M4内核是Cortex-M3的升级产品,除了继承全部现有功能外,还增加了单循环MAC单元和浮点单元(FPU)等额外功能。MAC单元只需要1个循环,即使对于最高精度运算也是如此,将32位乘以32位,得出64位累加结果。增加了具有SIMD功能的DSP指令和高精度MAC单元等新功能,Cortex-M4就是一种具有DSP功能的微控制器,即数字信号控制器(DSC)。这些功能对于音频处理非常有利,因为需要高精度来保持透澈的音质。 

表2:Cortex-M3和Cortex-M4功能、指令及循环示例。

  音频处理传统上在数字信号处理器(DSP)上实施,而由通用处理器(GPP)负责系统相关的功能。随着Cortex-M系列的问世,由于这些处理器完全适合音频处理应用,音频可在这些内核上获得高效实施而无需DSP。

  音频模块代码示例

  现在,我们将展示一些不同音频处理部件(音频解码器、编码器、后处理及通用信号处理等)的例程的代码示例。代码段内用粗体字表示的指令是最新引入Cortex-M4的。每条指令的循环次数在括号中给出。表格概述了每个示例所用的总循环、所需的指令数及所用的寄存器。

  窗口重叠加法模块

  重叠加法窗口化是大多数音频解码器采用的典型模块。它以MAC运算为主,属于计算密集型。图4所示为此模块的运算处理流程。此例的实施方案在等式1中给出。 

图4:窗口重叠加法模块图 

等式1:窗口重叠加法模块 


双二阶IIR滤波器模块

双二阶滤波器是二阶IIR滤波器的常用名,是均衡器等音频编码器和后处理器模块的一种典型例程。本质上属于计算密集型,以MAC运算为主。图5所示为此模块的Direct Form-1版本。此例的实施方案在等式-2中

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

网站地图

Top