【vfp开源代码栏目提醒】:网学会员--在 vfp开源代码编辑为广大网友搜集整理了:Cortex A9/A8/Arm11/Arm9 性能测试PK - 教育绩等信息,祝愿广大网友取得需要的信息,参考学习。
Cortex A9/A8/Arm11/Arm9 性能测试 PK 单核的 Cortex-A9在性能上比已经推出的 Cortex-A8处理器更高,并且 A9系列可以提供两个乃至四个内核片上 SMP 产品, 能提供总共超过8000Dhrystone MipsDMIPS的峰值处理性能,这一性能大约是典型 arm11处理器如 iphone的10-15倍,遑论更早的 arm9系列。
同时 Cortex-a8是可综合的,芯片制造商采用速度优化工艺时的时钟频率能够超过1GHz,也可采用低功耗工艺大幅降低耗电。
如果要进一步的省电,还可以采用动态减慢时钟或关闭部分内核的方法。
对称多处理(SMP)早已在大型机、服务器以及 PC 机上使用多年,这种平行技术的确能够有效的提高计算机的性能。
如今的半导体技术允许在一个硅片上集成多个处理器核心,这些核心能够执行同样的指令集,拥有同等的存储器配置,IO 访问能力和中断,这就是片上 SMP。
在这种硬件上运行的高级操作系统能够调度使用任意的核心来运行软件线程或执行中断。
这一切过去只能够在“大”的计算机上实现,但在不远的将来,你我的手机上也能够拥有这种高级功能。
实现片上 SMP 对于手持设备来说,可以实现目前用单核方案,如 arm11不可能实现的应用。
因为 SMP 可以实现非常好的性能和功耗伸缩性,在保持功耗足够低的前提下,能够将性能扩展到非常高的水平,应对现在和未来丰富的应用,如 HDVIDEO 播放、如 PC 般毫不缩水的浏览 Internet 等。
如果使用单核方案,就不得不实现极高的速度——采用2GHz 甚至更高主频的掌上处理器,那将导致无法接受的发热和耗电。
现在的移动应用越来越复杂,丰富程度直逼桌面应用,多进程、多线程等技术也早已在手持设备上采用,桌面计算机已经普及的多核心技术更是为 SMP 进入掌上设备指明了前进的 方向 。
ARM 处 理器 中的 Cortex-a9是 专门 为此 类 应用 设计 的 。
Cortex-a9 和 前一 代Cortex-a8一样是超标量设计,能够单周期执行2条指令,比 ARM11处理器同频性能提高约一倍。
Cortex-a9处理器更改进了流水线,除了增加多处理指令还加入了乱序执行等功能。
除了拥有 Cortex-a8的特性之外,每核心平均同频性能比 Cortex-a8提高了20。
实 现 SMP 的 第 一 个 消 费 类 嵌 入 式 器 是 TI OMAP4 系 列 , 包 括 OMAP4430 和OMAP4440。
除了采用 Cortex-a9 MP 为处理器核心之外,还提供了哪些高级功能呢?让我们来细数一下: 45nm 芯片工艺,提供高性能的同时只消耗极少的能源 专门为移动嵌入式平台设计,在单一芯片上集成了应用处理器(Cortex-a9担任) , 多媒体处理 IVA3,3D 图形加速器 PVR SGX540以及其他的各种移动接口 可以支持 full HD 1080p 尺寸、各种编解码算法,进行实时编码和解码的硬件多媒体 加速器 IVA3。
它的核心当然是专门硬件加上集成的 C64x 共同协作的结果,同时拥有硬 件加速的高效性和 DSP 的灵活性,实际上等于把 DAVINCI 平台塞入到你的手机里面 集成高速图形信号处理器, 用于处理像素格式变换等。
可以支持2千万像素的照相和 摄像功能,令 OMAP4拥有千万像素数码相机和高清数码 DV 的功能。
集成 PowerVR SGX540三维硬件加速器(3D 加速显卡) ,轻松支持3D 桌面,游戏 以及其他3D 应用 支持 HDMI 高清视频输出,支持 WUXGA 显示,同时支持传统的模拟视频 容易与 Wifi,Bluetooth,USB HS/OTG,GPS,3G/4G 通讯等各种数据接口连接 配合 TWL60x0芯片,实现高级的电源管理,充分节省电池电力嵌入式处理器层出不穷,系列和种类繁多。
经常在嵌入式产业界见到的处理器,仅指令集家族就有 x86,arm,powerpc,mips,sh 等。
每种指令集往往又有很多系列,下面还有不同版本,甚至同一版本有不同芯片厂家实现产品。
这还不够,再加上不同的主频、总线结构、存储器 cache 配置,即使在行业里打拼多年的专业人士也难免眼花缭乱。
所以,经常有人会问:200Mhz 的 arm9比起嵌入式工控机上的赛扬有多大的性能差距?四千多买的500MHz 的智能手机究竟比笔记本电脑慢多少? 在短时间内全面解释这类问题,介绍清楚各种嵌入式处理器的来龙去脉是不可能的。
笔者前日对手里的几个嵌入式处理器进行了性能评测,获得了一些有趣儿的结果,能够一定程度上说明问题,于是撰文跟大家分享。
涉及的对象包括 arm 家族常用的系列嵌入式处理器,从初学者都知道的 S3C2410到基于 arm1136jf-s 的 OMAP2420,还有新一代产品新宠 OMAP3/Cortex-a8。
软件运行的操作系统为 linux-2.6.24以及之后版本和 gcc-4编译器。
最终的测试结果说明了目前嵌入式处理器的性能现状,可供感兴趣的读者参考,最后还提供了笔者使用的测试
代码下载。
笔者也非常希望爱好者在自己的嵌入式平台上测试,并将结果发帖交流。
本文的内容主要基于笔者亲自测试的结果, 也有部分结果来自于他人的测试,绝大多数的测试对于稍有嵌入式 Linux 经验的人都可以很容易的重复。
测试项目包括 nbench 整数性能,nbench 内存带宽,nbench 双精度浮点性能,单精度浮点 FIR 性能,SIMD 向量单精度浮点 FIR 性能。
测试软件简介nbench nbench 是一个简单的用于测试处理器,存储器性能的基准测试程序。
即著名的 BYTEMagazine 杂志的 BYTEmark benchmark program。
nbench 在系统中运行并将结果和一台运行 Linux 的 AMD K6-233电脑比较,得到的比值作为性能指数。
由于是完全
开源的,爱好者可以在各种平台和操作系统上运行 nbench,并进行优化和测试,是一个简单有效的性能测试工具。
nbench 的结果主要分为 MEM、INT 和 FP,其中 MEM 指数主要体现处理器总线、CACHE 和存储器性能,INT 当然是整数处理性能,FP 则体现双精度浮点性能(大多数嵌入式处理器都没有强大的双精度浮点能力)。
fp_fir fp_fir 是笔者编写的单精度浮点 FIR 性能测试程序,简单并直观的评价系统的单精度浮点数乘加性能(玩过 DSP 就知道,浮点乘加是 TigerSHARC 的拿手好戏) 。
fp_fir 的一个亮点是可以很容易的 SIMD 向量化,即利用 SSE3/Altivec/Neon 等 SIMD 指令集加速执行。
这个测试的结果也是最有戏剧性的。
1.nbench 测试 MEM 部分 此测试包括字符排序、数据赋值和位操作。
这个测试中,高主频、高速的片内 CACHE和快速的外存储器非常重要。
采用新架构的 Cortex-a8和强劲的桌面 x86占有很大优势,其中很大一部分是源于片上的二级 CACHE 结构 具体分数如下表1 nbench 存储器性能 处理器名称 MEM 性能指数(越大越好) Pentium MMX 166MHZ 0.51 S3C2410 200MHz 0.67 PXA255 400MHz 0.94 PXA270 520MHz 1.16 OMAP2420 400MHz 1.17 PPC440 400MHz 1.46 PentiumIII 800MHz 3.74 OMAP3530 600MHz 3.04 图1 nbench 存储器性能2.nbench 测试 INT 部分 此测试包含整数排序,模拟浮点运算,霍夫曼编码,IDEA 加密算法。
在此测试里,主频是最主要的性能因素,指令集的并行度也有很大影响,所以超标量处理器 PentiumIII 和Cortex-a8的优势不仅来自于主频,也来自于单周期执行多条指令、分支预测等综合能力。
但是更老的 PPC440也是双发射的超标量 CPU,不过并没有体现太大优势,一方面 是PPC440的 ALU 指令并不能双发,另一方面也是因为通用整数运算内在的并行度并不高,指令级并行受限较多,并行加速不如主频提高明显。
表2 nbench 整数性能 处理器名称 INT 性能指数(越大越好) Pentium MMX 166MHZ 0.53 S3C2410 200MHz 0.76 PXA255 400MHz 1.26 PXA270 520MHz 1.82 OMAP2420 400MHz 1.86 PPC440 400MHz 1.67 PentiumIII 800MHz 3.39 OMAP3530 600MHz 3.57 图2 nbench 整数性能3.nbench 测试 FP 部分 此测试包括双精度浮点傅立叶变换、神经网络、LU 分解。
在此测试里面桌面处理器一枝独秀,主要是因为 PentiumIII 拥有强大的 SSE 浮点处理能力,双精度浮点硬件流水线性能远超其他处理器,尤其是只有传统标量整数指令集的嵌入式处理器,如 S3C2410和PPC440。
低功耗的嵌入式处理器一般不会集成双精度流水线 FPU,主要是因为硅片面积和功耗较大,实现浮点处理靠另外的方法。
S3C2410(ARM920T)和 PPC440利用 softfloat 库实现浮点处理,性能是最低的。
(当然,仅仅是比其他的高级处理器低,虽然只有 K6-233性能的百分之几。
如果你测试很多S3C2410开发板自带的 oabi gcc-2.95硬浮点工具链,加上内核 NWFPE 模拟浮点指令,会得到更惨的结果。
oabiNWFPE 性能只有 softfloat 的10到20分之一,是向量浮点的几千分之一) XSCALE 以及其他 ARMV5TE 以上的处理器可以利用定点向量指令加快 softfloat 库模拟,其中支持 iWMMXT 的 PXA270可以使用64位定点向量指令显著加快速度。
新的 ARM 处理器如 OMAP2420集成硬件了
VFP,虽然不是桌面 CPU 规模的流水线 FPU,还是比软件模拟快很多。
也许读者会奇怪 OMAP3 600MHz 的浮点性能比 OMAP2 400MHz 还低,这是因为Cortex-a8比 arm11进一步简化了
VFP 的硬件以降低功耗和面积,并引入了如同 Pentium4处理器的向量指令集 neon。
该指令集最大数据宽度和 SSE3一样为128bit, 可以支持完全流水的向量定点和单精度浮点处理,仅仅比 SSE3少了双精度浮点流水处理。
由于 nbench 进行双精度浮点测试,并且使用 glibc 内建的未优化的数学库,所以无法发挥 neon 的性能。
表3 nbench 双精度浮点性能 处理器名称 FP 性能指数(越大越好) Pentium MMX 166MHZ 0.85 S3C2410 200MHz 0.01 PXA255 400MHz 0.59 PXA270 520MHz 0.99 OMAP2420 400MHz 1.43 PPC440 400MHz 0.04 PentiumIII 800MHz 6.62 OMAP3530 600MHz 0.98 图3 nbench 双精度浮点性能4.fp_fir 测试 在 fp_fir 测试中,为了对 Cortex-a8的 noen 向量处理能力进行对比,加入了高性能的处理器 PentiumD 920 3.0GHz 的对比评测。
该系统配备2GB 双通道 DDR2内存,运行Linux-2.6.27 x86_64 64-bits 系统。
同样,也加入了基于老式 arm920t 的 S3C2410“陪太子读书” 需要知道的是 PentiumD 920除了拥有嵌入式处理器难以企及的3GHz 主频,更有2MBL2CACHE 和800MHz 64-bits 前端总线,并且同样集成了 SSE3 128-bit SIMD 指令集。
表4 测试平台功能对比 PentiumD 920 OMAP2420/arm1136jf-s OMAP3530/Cortex-a8功能 代号 Presler 指令集 指令集 arm v6 指令集 arm v7a x86_64工艺 90nm 标准单元 65 nm 标准单元 65nm Intel custom 主频 400MHz 600Mhz 3.0GHzL1 ca 16KB I-cache 16KB D- 16KB I-cache 16KB D- 12KB Trace I-cache 16K che cache cache B D-cacheL2 ca 无 256KB 每核心2MB che运行 32-bits armv6el linux-2. 32-bits armv7el linux-2. 64-bits x86_64 linux-2.6.2平台 6.21 glibc-2.5 gcc-4.1.2 6.28 glibc-2.7 gcc-4.3.2 7 glibc-2.7 gcc-4.3.2传统 非流水
VFP 非流水
VFP 深流水线 FPUFPUSIMD 流水线 neon 128-bits 向 深流水线 sse3 128-bits 向 无 FPU 量单精度浮点 量单精度和双精度浮点片上多处 arm1136 C55x DSP Cortex-a8 C64x DSP x86_64双核 SMP 理图形 集成 MBX 3D 加速 IVA 集成 SGX 3D 加速 IVA2 无内置加速 视频加速 视频加速 本次测试将 fp_fir 程序分别编译到不同平台上,分为9中不同的 CPU 与配置组合表5 测试配置和编译选项 配置名称 编译配置 采用软浮点库,编译选项 S3C2410 200MHz softfloat -mcpuarm920t -mtunearm920t -O3 -msoft-float -ffast-math 采用软浮点库,编译选项OMAP2420 400MHz softfloat -mcpuarm1136jf-s -mtunearm1136jf-s -O3 -msoft-float -ffast-math 采用
VFP 硬件浮点,编译选项 OMAP2420 400MHz
vfp -mcpuarm1136jf-s -mtunearm1136jf-s -O3 -mfloat-abisoftfp -mfpuvfp -ffast-math 采用
VFP 硬件浮点,编译选项 OMAP3530 600MHz
vfp -mcpucortex-a8 -mtunecortex-a8 -O3 -mfloat-abisoftfp -mfpuvfp -ffast-math 采用 neon 向量浮点,gcc-4.3.2自动生成 neon 向量指令, 编译选项OMAP3530 600MHz auto ve ctorized -mcpucortex-a8 -mtunecortex-a8 -O3 -mfloat-abisoftfp -mfpuneon -ftree-vectorize -ffast-math 采用手工编写的汇编函数,人工调用 neon 向量浮点指令, 编译选项OMAP3530 600MHz manual vectorized -mcpucortex-a8 -mtunecortex-a8 -O3 -mfloat-abisoftfp 采用 FPU 硬件浮点,编译选项PentiumD920 3.0GHz scalar fpu -marchnocona -O3 采用 sse3向量浮点,gcc-4.3.2自动生成 sse3向量指令,编 译选项PentiumD920 3.0GHz SSE3 vectorized -marchnocona -O3 -ftree-vectorize -ffast-math -mfpmathsse -mmmx -msse -msse2 -msse3 新版本 gcc-4.3已经加入了 neon 向量指令支持,而对 sse 的支持在更早版本中就已经加入了。
要启用向量指令自动生成功能,需要在编译参数中加入适当的处理器指令集标记和浮点选择标记,在 arm 架构下为-mfloat-abisoftfp -mfpuneon -ftree-vectorize -ffast-math 在 x86架构下为-mfpmathsse -ftree-vectorize -mmmx -msse -msse2 -msse3 -ffast-math 在 另外, arm linux 平台下,如果使用的是 EABI(embedded application binary interface)配置则允许系统中混合运行 softfp,
vfp,neon 向量浮点等各种浮点实现
代码。
例如在cortex-a8上运行同时运行优化的向量浮点
代码和老式 arm920t 的软浮点
代码,这使得上述测试能够方便的完成。
如果用老的 oabi 环境,切换不同的浮点配置必须把全部的用户
代码重新编译。
下载地址在这里可以找到。
表6 fp_fir 单精度浮点乘加性能 1M samples 1024点单精度浮点 FIR 用时(越小越好): 处理器名称 秒 S3C2410 200MHz softfloat 1175.22 OMAP2420 400MHz softfloat 248.39 OMAP2420 400MHz
vfp 34.45 OMAP3530 600MHz
vfp 53.17OMAP3530 600MHz auto vecto 6.98 rizedOMAP3530 600MHz manual ve 2.99 ctorizedPentiumD920 3.0GHz scalar fp 6.91 uPentiumD920 3.0GHz SSE3 ve 0.95 ctorized 图4 fp_fir 单精度浮点乘加性能 单位:秒 越小越好 由于向量处理和传统非流水标量处理性能差距很大,去掉前面5种地性能的配置。
截取后4种向量处理配置的柱状图,可以清晰的看到 neon 和 sse3性能 PK 图5 fp_fir 单精度浮点乘加性能 单位:秒 越小越好 可以看到流水线化的向量协处理对数值运算帮助非常大,有数量级的性能提升。
这也是为什么 INTEL/AMD 等处理器厂商都把多媒体指令集作为亮点大肆宣传, 各种操作系统和软件也积极应用 SIMD 指令来进行加速。
因为 嵌入 式处理 器原 本就没 有集 成全流 水线 FPU,这 种加 速对嵌 入式 处理器 如cortex-a8尤其明显。
此外,嵌入式处理器指令集兼容的历史包袱比 x86要少得多,完全可以直接采用向量指令集得到接近大型 CPU 和传统高端 DSP 的数值计算性能,有的嵌入式 CPU 干脆把这类指令叫做嵌入式 DSP 指令。
这类向量指令集在视频图像处理、语音识别、计算机视觉、软件无线电和人工智能等应用上拥有极大的性能/功耗比优势。
上一篇:
基于GPS GPRS的车载监控终端
下一篇:
关于大学英语教学