Test Report SylixOS 实时性能 TR0010010001 V1.00 Date: 2015/12/03 类别 内容 关键词 SylixOS ARMv7A nbench 摘 要 利用 nbench 测试 SylixOS 在 ARMv7A 处理器上的定点运算 浮点运算和内存性能
SylixOS nbench 性能对比 修订历史版本 日期 原因 V1.00 2015/07/24 创建文档 V1.01 2016/11/29 修改文档模板 i
SylixOS nbench 性能对比 目录 1. 测试目的... 1 2. 测试工具... 1 2.1 硬件平台... 1 2.2 操作系统... 1 2.3 编译器... 1 3. 测试方法... 2 4. Linux 测试结果... 2 5. SylixOS 测试结果... 3 6. 测试结果汇总与对比... 4 7. 测试结论... 5 i
SylixOS nbench 性能对比 1. 测试目的 通过对比测试验证 SylixOS 是否正常发挥了 ARMv7A 的 Cache VFP NEON 分支 预测等的性能, 验证 BSP 是否在内存控制器 CPU 主频设置等地方存在不正确的地方 2. 测试工具 2.1 硬件平台 测试硬件平台使用保定飞凌嵌入式技术有限公司设计 生产和发行销售的 OK335xS 型 开发板, 如图 2.1 所示 图 2.1 OK335xS 开发板关键硬件参数如下 : CPU:TI 公司的 AM335x 芯片 (ARM Cortex-A8 核心,ARMv7A 体系结构, 运行主频为 800MHz, 带有 32KB 的 D-Cache 和 32KB 的 I-Cache 及 256KB 的 L2-Cache) 内存 :512MB DDR2 FLASH 存储 :256M SLC NAND Flash 2.2 操作系统测试硬件平台运行的操作系统为 SylixOS,libsylixos 的版本为 1.2.0-rc1 GEMINI(b), bspam335x 的版本为 1.1.0 libsylixos 关闭了对 MONITOR 和 SMP 支持 编译 libsylixos 和 bspam335x 时, 编译参数中的 cpu 参数为 -mcpu=cortex-a8, 优化参数为 -O2, 即使用 O2 等级优化 对比测试操作系统为厂家配套的 Linux, 版本为 3.2.0 2.3 编译器 SylixOS 及相关软件使用 RealCompiler 编译器编译,GCC 版本信息如下 : arm-sylixos-eabi-gcc: gcc version 4.9.3 20150303 (release) [ARM/embedded-4_9-branch revision 221220] (SylixOS Toolchain for ARM Embedded Processors) 1
SylixOS nbench 性能对比 Linux 及相关软件使用厂家配套的编译器编译,GCC 版本信息如下 : arm-arago-linux-gnueabi-gcc: gcc version 4.5.3 20110311 (prerelease) (GCC) 3. 测试方法 nbench 是一个简单的用于测试处理器 存储器性能的基准测试程序, 即著名的 BYTE Magazine 杂志的 BYTEmark benchmark program nbench 主页 :http://www.tux.org/~mayer/linux/bmark.html nbench 在系统中运行并将结果与一台运行 Linux 的 AMD K6-233 电脑作比较, 得到的比值作为性能指数 由于是完全开源的, 爱好者可以在各种平台和操作系统上运行 nbench, 并进行优化和测试, 是一个简单有效的性能测试工具 nbench 的结果主要分为 MEM INT 和 FP, 其中 MEM 指数主要体现处理器总线 Cache 和存储器性能,INT 指数是处理器的整数处理性能,FP 指数是处理器的双精度浮点运算性能 ( 大多数嵌入式处理器都没有强大的双精度浮点运算能力 ) nbench 的测试项目如表 3.1 所示 表 3.1 nbench 测试项目 测试项目 Numeric sort String sort Bitfield Emulated floating-point Fourier coefficients Assignment algorithm Huffman compression IDEA encryption Neural Net 测试项目描述 Sorts an array of long integers. Sorts an array of strings of arbitrary length. Executes a variety of bit manipulation functions. A small software floating-point package. A numerical analysis routine for calculating series approximations of waveforms. A well-known task allocation algorithm. A well-known text and graphics compression algorithm. A relatively new block cipher algorithm. A small but functional back-propagation network simulator. nbench 的最新版本为 2.2.3, 我们将使用这个版本的 nbench 完成测试 分别移植 nbench 到 SylixOS 和 Linux 并运行, 将得到两份测试结果, 然后对测试结果进行汇总 对比和分析 移植好的 nbench 代码托管在 github 上 :https://github.com/sylixos/nbench 4. Linux 测试结果 nbench 编译参数如下 : arm-arago-linux-gnueabi-gcc -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=vfpv3 -O3 nbench 测试结果输出如下 : root@ok335x:/home/forlinx#./nbench 2
SylixOS nbench 性能对比 BYTEmark* Native Mode Benchmark ver. 2 (10/95) Index-split by Andrew D. Balsa (11/97) Linux/Unix* port by Uwe F. Mayer (12/96,11/97) TEST : Iterations/sec. : Old Index : New Index : : Pentium 90* : AMD K6/233* --------------------:------------------:-------------:------------ NUMERIC SORT : 395.2 : 10.14 : 3.33 STRING SORT : 40.032 : 17.89 : 2.77 BITFIELD : 1.3728e+08 : 23.55 : 4.92 FP EMULATION : 67.8 : 32.53 : 7.51 FOURIER : 1324.1 : 1.51 : 0.85 ASSIGNMENT : 5.2366 : 19.93 : 5.17 IDEA : 840.3 : 12.85 : 3.82 HUFFMAN : 514.44 : 14.27 : 4.56 NEURAL NET : 1.42 : 2.28 : 0.96 LU DECOMPOSITION : 55.316 : 2.87 : 2.07 ==========================ORIGINAL BYTEMARK RESULTS========================== INTEGER INDEX : 17.524 FLOATING-POINT INDEX: 2.143 Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0 ==============================LINUX DATA BELOW=============================== CPU : L2 Cache : OS : Linux 3.2.0 C compiler : arm-arago-linux-gnueabi-gcc libc : static MEMORY INDEX : 4.129 INTEGER INDEX : 4.565 FLOATING-POINT INDEX: 1.189 Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38 * Trademarks are property of their respective holder. 5. SylixOS 测试结果 nbench 编译参数如下 : arm-sylixos-eabi-gcc -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=vfpv3 -O3 nbench 测试结果输出如下 : [root@sylixos_station:/apps]#./nbench BYTEmark* Native Mode Benchmark ver. 2 (10/95) Index-split by Andrew D. Balsa (11/97) Linux/Unix* port by Uwe F. Mayer (12/96,11/97) 3
SylixOS nbench 性能对比 TEST : Iterations/sec. : Old Index : New Index : : Pentium 90* : AMD K6/233* --------------------:------------------:-------------:------------ NUMERIC SORT : 388.95 : 9.97 : 3.28 STRING SORT : 86.674 : 38.73 : 5.99 BITFIELD : 1.4089e+08 : 24.17 : 5.05 FP EMULATION : 88.811 : 42.62 : 9.83 FOURIER : 1602.2 : 1.82 : 1.02 ASSIGNMENT : 6.545 : 24.90 : 6.46 IDEA : 964.07 : 14.75 : 4.38 HUFFMAN : 624.49 : 17.32 : 5.53 NEURAL NET : 1.6227 : 2.61 : 1.10 LU DECOMPOSITION : 59.439 : 3.08 : 2.22 ==========================ORIGINAL BYTEMARK RESULTS========================== INTEGER INDEX : 22.045 FLOATING-POINT INDEX: 2.446 Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0 ==============================LINUX DATA BELOW=============================== CPU : L2 Cache : OS : sh: command not found. C compiler : libc : MEMORY INDEX : 5.804 INTEGER INDEX : 5.285 FLOATING-POINT INDEX: 1.356 Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38 * Trademarks are property of their respective holder. 6. 测试结果汇总与对比 Linux 和 SylixOS 的 nbench 测试结果汇总如表 6.1 所示 表 6.1 nbench 测试结果 测试项目 SylixOS Linux NUMERIC SORT 388.95 395.2 STRING SORT 86.674 40.032 BITFIELD 1.4089e+08 1.3728e+08 FP EMULATION 88.811 67.8 FOURIER 1602.2 1324.1 ASSIGNMENT 6.545 5.2366 IDEA 964.07 840.3 HUFFMAN 624.49 514.44 4
SylixOS nbench 性能对比 NEURAL NET 1.6227 1.42 LU DECOMPOSITION 59.439 55.316 由表 6.1 可以看出,SylixOS 绝大部分的测试项目的性能评分均高于 Linux, 仅 NUMERIC SORT 测试的性能评分微弱低于 Linux nbench 完成以上测试项目后会生成一个处理器的定点运算 浮点运算 内存的性能评分, 汇总如表 6.2 所示 表 6.2 nbench 性能评分 性能类型 SylixOS Linux MEMORY INDEX 5.804 4.129 INTEGER INDEX 5.285 4.565 FLOATING-POINT INDEX 1.356 1.189 由表 6.2 可以看出,AM335x 处理器在 SylixOS 下, 定点运算 浮点运算 内存的性能 评分均高于 Linux 7. 测试结论 由以上测试结果我们可以得出如下结论 : SylixOS 正常发挥了 ARMv7A 的 Cache VFP NEON 分支预测性能, 比 Linux 的还要好, 纯算法类型的应用程序在 SylixOS 上有更好的性能表现 ; BSP 正确设置了内存控制器参数和处理器主频 ; SylixOS 使用的编译器 RealCompiler(GCC-4.9.4) 比 Linux 使用的编译器 (GCC-4.5.3) 更能发挥 ARMv7A 处理器性能 5