ARM Advanced SIMD_第1页
ARM Advanced SIMD_第2页
ARM Advanced SIMD_第3页
ARM Advanced SIMD_第4页
ARM Advanced SIMD_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARM Advanced SIMD NEON it provides 1 A set of interesting scalar vectorinstructions and registers the latter are mapped to the same chip area as theFPU ones comparable to MMX SSE 3DNow in the 86 world 2 VFPv3 D32 as a requirement i e 32 hardware FPU 64 bit registers instead of the minimum of 16 NEON technology as it is used on ARM Cortex A seriesprocessors that implement the ARMv7 A or ARMv7 R architectures profiles The ARMv8 architectural architecture extends theNEON support and provides backwards compatibility with ARMv7 implementations ARM ENON 技术可加速多媒体和信号处理算法 如视频编码 解码 2D 3D 图形 游戏 音频和语音处理 图像处理技术 电话和声音合成 其性能至少为 ARMv5 性能的 3 倍 为 ARMv6 SIMD 性能的 2 倍 NEON 技术是 ARM Cortex A 系 列处理器的 128 位 SIMD 架构扩展 旨在为消费性多媒体应用程序提供灵活 强 大的加速功能 从 ARMv7 开始 ARM 提供高级单指令多数据 SIMD 扩展亦称 NEON 技术 它是一种 由 ARM 开发的 64 128 位混合 SIMD 体系结构 可以提升多媒体和信号处理应用 程序的性能 NEON 的寄存器 有 16 个 128 位四字寄存器 Q0 Q15 32 个 64 位双字寄存器 D0 D31 两个寄存器是重叠的 在使用的时候需要特别注意 不小心就会被覆 盖掉 NEON 的数据类型 无符号整数 有符号整数 未指定类型的整数 浮点数 0 1 上的多项式 数据类型针对的是操作数 而不是目标数 NEON 中的数据 类型说明符由一个指示数据类型的字母构成 该字母通常后跟一个指示宽度的 数字 NEON 指令可处理 1 由以下内容构成的双字向量 八个 8 位元素 四个 16 位元素 两个 32 位元素 一个 64 位元素 2 由以下内容构成的四字向量 十六个 8 位元素 八个 16 位元素 四个 32 位元素 两个 64 位元素 NEON 中的正常指令 宽指令 窄指令 饱和指令 长指令 1 正常指令 生成大小相同且类型通常与操作数向量相同的结果向量 2 长 指令 对双 字向量操作数执行运算 生成四字向量的结果 所生成的元素一般是操作数元 素宽度的两倍 并属于同一类型 3 宽指令 一个双字向量操作数和 一个 四字向量操作数执行运算 生成四字向量结果 所生成的元素和第一个操作数 的元素是第二个操作数元素宽度的两倍 4 窄指令 四字向量操作数执行运 算 并生成双字向量结果 所生成的元素一般是操作数元素宽度的一半 5 饱和指令 当超过数据类型指定的范围则自动限制在该范围内 NEON 标量 有些 NEON 指令可处理与向量组合使用的标量 NEON 标量可以为 8 位 16 位 32 位或 64 位 除乘法指令之外 访问标量的指 令也可访问寄存器 组中的任何元素 指令语法通过在双字向量中使用索引来引用标量 从而使 Dm x 表示 Dm 中的第 x 个元素 乘法指令仅允许使用 16 位或 32 位标量 并且 只能访问寄存器组中的前 32 个标量 这在乘法指令中意味着 1 16 位标量 限定为寄存器 D0 D7 其中 x 位于范围 0 3 内 2 32 位标量限定为寄存器 D0 D15 其中 x 为 0 或 1 0 1 上的多项式算法 使用布尔算法规则处理系数 0 和 1 1 0 0 1 1 0 2 0 1 1 0 1 3 0 0 0 1 1 0 0 4 1 1 1 也就是说 将两个 0 1 上的多项式相加与按位异或的运算相同 而将两个 0 1 上的多项 式相乘则与整乘的运算相同 但部分积执行的是异或运算 而不 是相加运算 NEON 注意事项 1 load 数据的时候 第一次 load 会把数据放在 cache 里面 只要不超过 cache 的大小 下一次 load 同样 数据的时候 则会比第一次 load 要快很多 会直接从 cache 中 load 数据 2 在做 NEON 乘法指令的时候会有 大约 2 个 clock 的阻塞时间 如果你要立即使用乘法的结果 则就会阻塞在这 里 乘法的结果不能立即使用 可以将一些其它的操作插入到乘法后面而不会 有时间的消耗 3 使用饱和指令 的时候 如乘法饱和的时候 在做乘法后 会再去做一次饱和 所用时间要比直接做乘法要慢 4 在对 16 位数据进行 load 或者 store 操作的时候 需 要注意的是字节移位 NEON 指令只适用于支持 NEON 的系统 ARMv7 M 不支持 NEON NEON 的指令集只是 ARM 和 THUMB 指令集中的子集 NEON 的指令都是以 V 字母开 头 使用 intrinsics 内联函数 不如使用汇编优化效率高 这些函数在编译 的时候会直接转化成 NEON 的汇编指令 为了支持这些内联函数必须要包含头 文件 arm neon h 使用 NEON 技术还要通过在编译的时候加入 mfpu neon 才能 起到效果 使用 intrinsics 没法控制寄存器分配和内存对齐等 NEON 技术只适用于 ARM Cortex A 系列处理器 Cortex A 系列处理器 ARMCortex A 系列的 CPU 处理器内核包括 ARMCortex A5 ARM A7 ARM Cortex A8 ARM Cortex A9 MPCore ARM Cortex A9 单核处理器 ARM Cortex A15 MPCore ARM Cortex A 系列是一系列用于复杂操作系统和用户应用程序的应用 程序处理器 Cortex A 系列处理器支持 ARM Thumb 和 Thumb 2 指令 集 ARM Cortex 系列处理器核包括 Cortex A 系列 高性能 具备 MMU 可以允许如 Symbian Linux Android Windows CE 等操作系统 Cortex R 系列 高端嵌 入式满足高性能高可靠性的实时需求 Cortex M 嵌入式单片机 低功耗 低 成本 基于 ARMv7 A 架构的 ARM Cortex A 系列处理器 Cortex A5 Cortex A7 Cortex A8 Cortex A9 Cortex A15 的基本特性 基 本上都可以支持 ARM Thumb 2 Thumb 指令集 支持 Java 加速扩展的 Jazelle 技术 ThustZone 的安全扩展以及针对浮点 FPU 的 VFP 硬件扩展和并行多数据的 SIMD 的 NEON 多媒体处理器扩展 支持主流的嵌入式 OS Symbian Linux Android WindowsMobile Windows Phone 支持分支 预测 branchprediction 但各处理器在 VFP NEON 的类型 半精度浮点 16 bit half precision floating point 的支持 多核 MPcore 流水线 pipeline 单 MHz 处理性能 L1 L2cache 控制器 乱序执行 指令 dual issue 并发等方面 略有不同 Cortex A 处理器共性 1 ARMv7 A 体系结构 2 对所有操作系统的支持 A Linux 完整分配 Android Chrome Ubuntu 和 Debian B Linux 第三 方 MontaVista QNX Wind River C Symbian D Windows CE F 需要 使用内存管理单元的其它操作系统支持 3 指令集支持 ARM Thumb 2 提 供最佳代码密度和性能混用 Thumb Jazelle DSP 4 TrusZone 安全扩 展 5 VFP 高级单精度和双精度浮点支持 6 NEON 媒体处理引擎 7 支持分 支预测 branch prediction Cortex A5Cortex A5 ARMARM 核处理器核处理器 Cortex A5 处理器 支持 ARMv7 A 架构的特性 包 括 TrustZone 安全扩展 NEON 多媒体处理引擎 芯片面积和功耗特性很好 但处 理性能性对于其他 Cortex A 略差 如只相当于 Cortex A8 的 80 性能 Cortex A15 的一半性能 Cortex A5 可以支持多核 Cortex A5 处理器支持双 发 dual issue 以及分支预测 branch prediction NEON 和 VFP 的硬件可选 Cortex A5 支持 ARM 和 Thumb 指令集 并可以包含 Jazelle DBX 和 Jazelle RCT 的 Java 加速技术 Cortex A5 处理器是尺寸最小 功耗最低 可以低至 0 08mw 0 12mw MHz 的 ARM 多核处理器 能够向最广泛的设备提供 Internet 访问 包括超低成本手机 特色手机和智能移动终端以及普遍采用的嵌入式 消费类和工业设备 Cortex A5 处理器的应用与 Cortex A8 Cortex A9 和 Cortex A15 处理器完全兼容 能够立即访问已得到认可的开发平台和软件体系 包括 Android Adobe Flash Java Platform Standard Edition Java SE JavaFX Linux Microsoft Windows Embedded Symbian 和 Ubuntu Cortex A5 与 Cortex A8 Cortex A9 和 Cortex A15 处理器的完全应用兼容性 为大 量现有 ARM926EJ S 和 ARM1176JZ S 处理器授权使用方提供了高价值的迁移 途径 Cortex A5 功耗和面积只有 Cortex A9 的 1 3 且具有完全的指令集兼 容性 特性关键字 特性关键字 VFP NEON Jazelle RCT Thumb Thumb 2 1 4 cores Variable L1 L2 Cache MMU TrustZone Cortex A7Cortex A7 ARMARM 核处理器核处理器 Cortex A7 处理器的功耗和面积与超高效 Cortex A5 相似 但性能提升 15 20 Cortex A7 是 ARM 的大小核设计中的小 核部分 并且与高端 Cortex A15 CPU 体系结构完全兼容 Cortex A7 处理器 包括了高性能处理器 Cortex A15 的一切特性 包括虚拟化 virtualization 大容量物 理内存地址扩展 Large Physical Address Extensions LPAE 可 以寻址到 1TB 的存储空间 NEON VFP 以及 AMBA 4 ACE coherency AMBA4 CacheCoherent Interconnect CCI Cortex A7 支持多核 MPCore 的设计以 及 Big Little 的大小核设计 小型高能效的 Cortex A7 是最新低成本智能手 机和平板电脑中独立 CPU 的理想之选 并可在 big LITTLE 处理配置中与 Cortex A15 结合 特性关键字 VFPv4 FPU NEON Thumb 2 JazelleRCT DBX out of order speculative issue superscalar Large Physical AddressExtensions LPAE Hardware virtualization 1 4 SMP cores 32KB 32KB L1 up to4MB L2 MMU TrustZone Cortex A8Cortex A8 ARMARM 核处理器核处理器 Cortex A8 处理器是第一个使用 ARMv7 A 架 构的处理器 很多应用处理器以 Cortex A8 为核心 如 S5PC100 Samsung OMAP3530 TI Texas Instruments i MX515 Freescale Cortex A8 处理器 是一个双指令执行的有序超标量处理器 针对高度优化的能效实现可提供 2 0 Dhrystone MIPS 每 MHz 这些实现可提供基于传统单核处理器的设备所需的 高级别的性能 Cortex A8 在市场中构建了 ARMv7 体系结构 可用于不同应用 包括智能 手机 智能本 便携式媒体播放器以及其他消费类和企业平台 分开 的 L1 指令和数据 cache 大小可以为 16KB 或者 32KB 指令和数据共享 L2 cache 容量可以到 1MB L1 和 L2 cache 的 cache 数据宽度为 128 比特 L1cache 是虚拟索引 物理上连续 而 L2 完全使用物理地址 Cortex A8 的 L1 cache 行宽度为 64byte L2cache 在片内集成 另外和 Cortex A9 相比 由于 Cortex A8 支持的浮点 VFP 运算非常有限 其 VFP 的速度非常慢 往往相同的 浮点运算 其速度是 Cortex A9 的 1 10 Cortex A8 能并发某些 NEON 指令 如 NEON 的 load store 和其他的 NEON 指令 而 Cortex A9 因为 NEON 位宽限制 不能并发 Cortex A8 的 NEON 和 ARM 是分开的 即 ARM 核和 NEON 核的执行流 水线分开 NEON 访问 ARM 寄存器很快 但是 ARM 端需要 NEON 寄存器的数据会 非常慢 特性关键字 VFP NEON Jazelle RCT Thumb 2 13 stage superscalarpipeline Variable L1 L2 Cache MMU TrustZone 使用 Cortex A8 的设备 包括 Apple 的 ipad1 apple A4 处理器 BeagleBoard TI OMAP3530 or TI DM 3730 HTCDesire SBM7000 Oregon State University OSWALD Gumstix Overo Earth Pandora Apple iPhone 3GS Apple iPod touch 3rd and 4th Generation Apple iPad A4 Apple iPhone 4 A4 Archos 5 BeagleBoard Motorola Droid Motorola Droid X Motorola Droid 2 Motorola Droid R2D2 Edition Palm Pre Samsung Omnia HD Samsung Wave S8500 Samsung i9000 Galaxy S Sony Ericsson Satio Touch Book Nokia N900 Meizu M9 Google Nexus S Sharp PC Z1 Netwalker Cortex A9Cortex A9 ARMARM 核处理器核处理器 Cortex A9 MPCore 或者单核处理器单 MHz 性 能比 Cortex A5 或者 Cortex A8 高 支持 ARM Thumb Thumb 2 TrustZone JazelleRCT Jazelle DBX 技术 L1 的 cache 控制器提供了硬件的 cache 一致 性维护支持多核的 cache 一致性 核外的 L2 cache 控制器 L2C 310 or PL310 支持最多 8MB 的 cache Cortex A9 的 L1cache 行宽度为 32byte L2 cache 因 为多核的原因在核外集成 即通过 SCU 来访问多核共享的 L2 cache 特性关键 字 Application profile VFPv3 FPU NEON Thumb 2 Jazelle RCT DBX out of order speculative issue superscalar 1 4 core SMP 32KB 32KB L1 up to4MB L2 MMU TrustZone 使用 Cortex A9 的设备 包括 nVidia s 双核 Tegra 2 以及 TI s OMAP4 平台 Apple 的 ipad2 appleA5 处理 器 LG Optimus 2X nVidiaTegra 2 Samsung Galaxy S II Samsung Exynos 4210 Sony NGP PSP2 PandaBoard TI OMAP4430 or TIOMAP 4460 Motorola Atrix 4G Motorola DROID BIONIC Motorola Xoom Cortex A15ARMCortex A15ARM 核处理器核处理器 Cortex A15 MPCore 处理器是目前 Cortex A 系列中性能最高的处理器 一个突出的特性是其硬件的虚拟化技术 Hardware virtualization 以及大物理内存的扩展 Large Physical Address Extension LPAE 能寻址到 1TB 的内存 特性关键字 Application profile VFPv4 FPU NEON Thumb 2 Jazelle RCT DBX out of order speculative issue superscalar LargePhysical Address Extensions LPAE Hardware virtualization 1 4 SMP cores 32KB 32KB L1 up to 4MB L2 MMU TrustZone 使用 Cortex A15 的设备 目前集成 Cortex A15 的处理器量产 的只有 Samsung 的 Exynos 5 系列处理器 但 TI 的 OMAP5 系列处理器也采用 Cortex A15 的核 NEON 的流水线在 Cortex A8 和 Cortex A9 的处理器上不同 NEON 的指令一 般都是在一个周期内发出 但是执行结果可能若干个周期才能有 效 只有简单 的如 VSUB VADD 和 VMOV 指令才能在下一个周期可以用 从 NEON 的寄存器把数 据保存到 ARM 寄存器非常耗时 需要至少 20 个周期的 延时 因而尽量避免这 类操作 尽量避免 ARM 和 NEON 处理器访问相同的数据区域 Not all ARMv7 based Android devices will support NEON Define LOCAL ARM NEONto true in your module definition and theNDK will build all its source files with NEON support This can be useful ifyou want to build a static or shared library that specifically contains NEONcode paths 用 gcc 编译器编译带有 neon 的文件 ARM NEON Intrinsics 需要添加 mfpu neon The NDK supports the compilation of modules or evenspecific source files with support for NEON What this means is that a specificcompiler flag will be used to enable the use of GCC ARM Neon intrinsics andVFPv3 D32 at the same time Neon support only works when targeting the armeabi v7a ABI otherwise the NDK build scripts will complain and abort Itis important to use checks like the following in your Android mk define a static library containing ourNEON code ifeq TARGET ARCH ABI armeabi v7a include CLEAR VARS LOCAL MODULE mylib neon LOCAL SRC FILES mylib neon c LOCAL ARM NEON true include BUILD STATIC LIBRARY endif TARGET ARCH ABI armeabi v7a NOT ALL ARMv7 BASED ANDROID DEVICES WILL SUPPORT NEON Itis thus crucial to perform runtime detection to know if the NEON capablemachine code can be run on the target device To do that use the cpufeatures library that comes with this NDK You should explicitly check thatandroid getCpuFamily returns ANDROID CPU FAMILY ARM and thatandroid getCpuFeatures returns a value that has theANDROID CPU ARM FEATURE NEON flag set as in include if android getCpuFamily ANDROID CPU FAMILY ARM 2 OpenMAX 3 ffmpeg 4 Eigen3 5 Pixman 6 x264 7 Math neon 8 libjpeg turbo 9 Android Skia NEON C C intrinsics are available in armcc GCC g and llvm When you compile a file the compiler must know what processor you want the code to runon The primary option for doing this is mcpu cpu name where cpu name is the nameof th

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论