【ARM】【NEON加速介绍】

转自:http://www.arm.com/zh/products/processors/technologies/neon.php

NEON

【ARM】【NEON加速介绍】_第1张图片
ARM® NEON™ 通用 SIMD 引擎可有效处理当前和将来的多媒体格式,从而改善用户体验。

NEON 技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D 图形、游戏、音频和语音处理、图像处理技术、电话和声音合成),其性能至少为 ARMv5 性能的 3 倍,为 ARMv6 SIMD 性能的 2 倍。

通过干净方式构建的 NEON 技术可无缝用于其本身的独立管道和寄存器文件。

NEON 技术是 ARM Cortex™-A 系列处理器的 128 位 SIMD(单指令,多数据)架构扩展,旨在为消费性多媒体应用程序提供灵活、强大的加速功能,从而显著改善用户体验。它具有 32 个寄存器,64 位宽(双倍视图为 16 个寄存器,128 位宽。)

NEON 指令可执行“打包的 SIMD”处理:

  • 寄存器被视为同一数据类型元素矢量
  • 数据类型可为:签名/未签名的 8 位、16 位、32 位、64 位单精度浮点
  • 指令在所有通道中执行同一操作
【ARM】【NEON加速介绍】_第2张图片

使用 NEON 技术的 ARM Cortex™-A 系列处理器,以及 ARM 的 Mali 多媒体硬件解决方案可用于多媒体应用,范围从智能手机和移动计算设备到 HDTV。 

NEON 增强了用户体验

NEON 可增强许多多媒体用户体验:

  • 观看任意格式的任意视频
  • 编辑和强化捕获的视频 – 视频稳定性
  • 锯齿消除渲染和合成
  • 游戏处理
  • 快速处理几百万像素的照片
  • 语音识别
  • 强大的多通道高保真音频处理

NEON 的特征和优点

NEON 支持用于 Internet 应用程序的范围广泛的多媒体编解码器:

  • 许多软编解码器标准:MPEG-4、H.264、On2 VP6/7/8、Real、AVS
  • 对于各种格式的正常大小的“Internet 流”解码来说,是理想的解决方案
  • 不仅仅针对编解码器,还适用于 2D 和 3D 图形和其他矢量处理
  • 提供现有工具、操作系统支持和生态体系支持

所需周期减少:

  • NEON 可使复杂视频编解码器的性能提升 60-150%
  • 单个简单 DSP 算法可实现更大的性能提升(4 倍 -8 倍)
  • 处理器可更快进入睡眠状态,从而在整体上节约了动态功耗 

NEON 技术的大量元素能够提高性能并简化软件开发过程,如: 

  • 通过对齐和非对齐数据访问,可对 SIMD 操作进行有效的矢量化。
  • 清晰的指令集架构,设计用于自动矢量化编译器和手动编码。
  • 有效访问打包数组,如 ARGB 或 xyz 坐标
  • 支持整数和浮点操作,以确保适合从编解码器、高性能计算到 3D 图形等广泛应用领域。
  • 与 ARM 处理器紧密结合,提供单指令流和内存的统一视图,从而能够提供一个具有更简单工具流的开发平台目标。nbsp;
  • 通过具有双 128 位/64 位视图的大型 NEON 寄存器文件,可有效处理数据并尽可能减少对内存的访问,从而增加了数据吞吐量。

如何使用 NEON

OpenMAX DL 库:

  • 加速 AV 编解码器的建议方法
  • 以源格式释放的库,在 ARM 网站上免费提供
  • 支持以下格式:MPEG-4 简单配置文件、H.264 基准、JPEG、MP3、AAC
  • 支持以下功能:FIR、IIR、FFT、点积、色彩空间转换、de-blocking.de-ringing、旋转、缩放、合成

矢量化编译器:

  • 使用现有源代码自动搜索 NEON SIMD
  • 受 ARM RealView 开发套件(v3.1 Pro 及更高版本)支持
  • 在 2007q3 及更高版本中受 gcc 支持

C 内部函数:

  • C 函数调用接口至 NEON 操作
  • 支持 NEON 支持的所有数据类型和操作
  • 在 ARM RealView 开发套件(3.1 及更高版本)和 gcc 2007q3 及更高版本中受支持

汇编器:

  • 针对确实需要在最低级别进行优化的用户
  • 在 ARM 的 RealView 开发套件(3.1 及更高版本)和 gcc 2007q3 及更高版本中受支持

 

开源社区中的 NEON 支持

当前,在以下开源项目中支持 NEON:

  • Android – NEON 优化
    • 使用 NEON,Skia 库 S32A_D565_Opaque 的速度加快了 5 倍
  • Ubuntu 09.04 支持 NEON:
    • 关键共享库的 NEON 版本
  • Bluez – 官方 Linux 蓝牙协议堆栈
    • NEON SBC 音频编码器
  • Pixman(Cairo 2D 图形库的一部分)
    • 合成/alpha 混合
    • X.Org、Mozilla Firefox、Fennec 和 Webkit 浏览器
    • 例如,使用 NEON 后,fbCompositeSolidMask_nx8x0565neon 的速度提高了 8 倍
  • ffmpeg - libavcodec
    • 用于众多 Linux 分发版的 LGPL 媒体播放器
    • 视频:MPEG-2、MPEG-4ASP、H.264 (AVC)、VC1
    • 音频:Ogg Vorbis
  • x264 – Google 2009 年度编程之夏
    • GPL h.264 编码器 – 例如,针对视频会议



你可能感兴趣的:(【ARM】【NEON加速介绍】)