请选择 进入手机版 | 继续访问电脑版
查看: 519|回复: 2

[分享] 管窥LPC5500的PowerQuad DSP加速器

[复制链接]

该用户从未签到

72

主题

80

帖子

0

金豆

版主

Rank: 7Rank: 7Rank: 7

积分
722
最后登录
2019-5-30
发表于 2019-1-20 20:49:09 | 显示全部楼层 |阅读模式
本帖最后由 eefishing 于 2019-1-20 20:50 编辑

引言

随着移动物联网和人工智能在微控制器领域的迅猛发展,边缘数字信号处理的需求与日俱增。

对于需要始终保持工作的移动设备来讲,Arm Cortex-M内核的处理器以其低功耗的特性,特别能够胜任这类工作。但是,Cortex-M的架构在设计中更侧重的是,控制应用系统的能效比,在数字信号处理的应用上,则远远落后于传统的数字信号处理器架构。由于没有使用专门的硬件加速器,在性能上甚至落后10倍到20倍。

Arm为了扩展Cortex-M微控制器在DSP领域的应用,提供了CMSIS-DSP的软件库,实现和优化了一些常用DSP算法,在一定程度上缓解了开发者的需求。但是随着对计算性能要求的提高,对专用硬件加速器的需求也就呼之欲出了。

下面我们来浏览一下,看看哪些微控制器的应用场景,对数字信号处理有比较高的要求呢:

运动姿态检测
► 使用矩阵计算、三角函数、FFT变换、FIR/IIR滤波器等,对原始信号进行预处理
► 使用卷积和相关性计算做模式匹配

自动化控制系统
► 使用FIR/IIR滤波器对原始采样信号做预处理

语音识别的关键词触发
► 使用FFT变换进行频谱分析,使用MFCC做特征提取,使用矩阵计算做窗口处理
► 使用DCT和FIR/IIR滤波器消除噪声

神经网络计算
► 海量数据的矩阵乘法/加法
► 以指数/对数计算为基础的Logistic/Sigmoid/Softmax函数,用于实现感知器,或者做统计分布分析

生物特征检测
► 使用FFT分析心跳等周期特征数据
► arctan(x)等三角函数用于指纹识别的计算

啊哈!随着集成了PowerQuad数字信号协处理器的LPC5500的面世,这些计算负载通通都能被轻松搞定。

PowerQuad与Cortex-M33内核的协处理器接口对接,在以低功耗和安全称雄的Cortex-M33微控制器平台上,为其提供了强大的DSP计算能力。

在LPC5500上,不需要极高的主频就可以完成较为复杂的DSP计算任务,可以极大地提高整个芯片的能效。同时,PowerQuad可以在已经非常成熟和流行的arm生态环境中开发,相对于传统DSP平台上的开发方式,极大地降低了DSP应用的开发门槛.。

PowerQuad正以大家喜闻乐见的方式走进千家万户。

PowerQuad的硬件功能

废话少讲,这里先甩出一张PowerQuad的硬件框图让大家开开眼。

QQ浏览器截图20190120204504.png

图1 PowerQuad内部硬件框图

从图上看,PowerQuad内部相当"有料":

  • 4个单精度浮点MAC计算单元
  • FFT/DCT转换引擎,可以搞定FFT、iFFT、DCT、iDCT
  • 超越函数计算引擎,结合协处理器指令可以搞定sin(x)、cos(x)、ln(x)、e^(x)、e^(-x)、1/(x)、1/sqrt(x)、sqrt(x)
  • 双Biquad IIR计算引擎,可用于实现IIR滤波器
  • 矩阵计算引擎,可以搞定矩阵的加法、减法、乘法、点积、求逆、转置、缩放等计算
  • FIR滤波器计算引擎,能搞定FIR滤波器和卷积,相关等计算
  • 经典的CORDIC计算引擎,可以用简单的迭代法计算arctan(x)和arctanh(x)函数


PowerQuad作为一个计算加速器,对内存的使用上也搭了一些专线,不让数据传输成为瓶颈。如图2所示:

QQ浏览器截图20190120204510.png

图2 PowerQuad同外接通信的总线

通过协处理器接口指令(MCR和MRC),就可以实现一些简单的数学计算传参。对于海量数据吞吐量的计算过程,PowerQuad可以使用主设备接口(类似DMA的方式),从专用的总线上访问私有内存,不需要同别的总线设备,分享使用总线的权限。

PowerQuad操作内存的四个数据接口(Input A、Input B、Temp、Output)可以同时执行数据存取操作。在理想情况下,甚至是在32-bit带宽的总线架构上,跑出了128-bit带宽的感觉。真快!快要飞起来的节奏!

PowerQuad可以同Arm核心并行工作,从而为进一步提高整个系统的实时性提供了可能。

使用协处理器配合CPU运行,在充分利用CPU硬件同步的情况下,相当于为CPU的执行扩展了两条流水线(PQ0和PQ1),如图3:

QQ浏览器截图20190120204517.png

图3 PowerQuad协处理器指令的并行计算

在执行效率上,相比用CPU纯软件计算,得到了显著提升。

以图4为例具体说明:

QQ浏览器截图20190120204522.png

图4 PowerQuad的协处理器流水作业

如图4中所示,PowerQuad中的两套状态机,分别执行两个6周期的计算指令,同时还包括保存上次计算结果和读下一个计算参数,总共只用了9个周期。在这期间, PowerQuad的硬件还自动完成了定点数和浮点数输入输出数据格式的转换。

很多函数,比如ln(x)、e^(x)、定点数的sqrt(x)和1/sqrt(x)、biquad(x)、sin(x)和cos(x)等,执行时间比CPU访问内存时间和传递/返回参数还少,几乎就是零等待完成计算。

图5列出了批量处理这些计算的时间对比。当Arm Cortex-M33内核和PowerQuad配合起来并行工作后,平均到每个操作上的周期数都变少了,计算速度有了显著的提升。

QQ浏览器截图20190120204528.png

图5 PowerQuad流水作业与Arm核心对比

不得不说,真是快!

在使用上,经过简单配置PowerQuad的计算引擎的寄存器(主要用于海量数据计算,如转换引擎、矩阵引擎、滤波器引擎等),基本上就可以把PowerQuad当成一个"黑盒子"的计算器了,配置好输入和输出数据存在内存空间的地址,启动计算,然后CPU就可以放心地休息或者干点别的事,直到PowerQuad通过中断或者事件的方式,通知CPU计算完成可以读结果了。

不容质疑,PowerQuad使用专用硬件引擎执行的计算,肯定比在CPU上纯软件的计算快得多。




PowerQuad的软件开发资源

随着CMSIS-DSP的广泛应用,CMSIS-DSP API也逐渐成为了业内的一个标准。这为微控制器系统上集成硬件加速器的功能提供了一个参考依据。

NXP的MCUXpresso SDK固件库中提供了PowerQuad驱动程序,同时还以PowerQuad驱动程序为基础,实现了兼容CMSIS-DSP API的函数,这就意味着用户在应用程序中,可以直接以调用CMSIS-DSP API的方式,使用PowerQuad强大的计算加速性能。

表1中列出了PowerQuad驱动程序中实现的CMSIS-DSP API:

QQ浏览器截图20190120204534.png

表1 PowerQuad驱动程序中
实现的CMSIS-DSP API

在LPC5500 PowerQuad Demo程序中,对几种典型DSP计算函数,分别执行PowerQuad和原生CMSIS-DSP软件库的相同函数,对两者的执行时间进行了比对:

QQ浏览器截图20190120204538.png

表2 PowerQuad vs CMSIS-DSP

QQ浏览器截图20190120204545.png
QQ浏览器截图20190120204551.png

更多关于PowerQuad的美妙体验还在等着你呦




回复

使用道具 举报

该用户从未签到

27

主题

237

帖子

0

金豆

高级会员

Rank: 4

积分
897
最后登录
2019-8-9
发表于 2019-2-14 10:55:36 | 显示全部楼层
楼主:欢迎你转发“恩智浦MCU加油站”的文章,但请你注明出处,不能直接抄袭。


另外,请大家可以扫码关注“恩智浦MCU加油站”公众号,直接阅读这样的好文章:
恩智浦MCU加油站_QR_30cm.jpg

回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2019-5-4 22:48
  • 签到天数: 43 天

    [LV.5]常住居民I

    48

    主题

    641

    帖子

    5

    金豆

    金牌会员

    Rank: 6Rank: 6

    积分
    1379
    最后登录
    2019-8-11
    发表于 2019-2-28 01:26:16 | 显示全部楼层
    很好,可以处理一些复杂的处理了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|恩智浦技术社区

    GMT+8, 2019-8-23 08:10 , Processed in 0.160253 second(s), 17 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表