• (转)NIOS II 处理器性能测试


    本文对NiosII 处理器的经济型Nios II/e和快速型Nios II/f在不同的优化方式下测试其性能,测试了以下代码的运行时间。

    1、Printf//文件打印

    2、usleep(1000)//睡眠时间

    3、IOWR_ALTERA_AVALON_PIO_DATA//端口读写

    测试代码如下:

    #include <stdio.h>
    #include "system.h"
    #include "unistd.h"
    #include "altera_avalon_performance_counter.h"
    #include "altera_avalon_pio_regs.h"

    int main()
    {
        PERF_RESET(PERFORMANCE_COUNTER_BASE);
        PERF_START_MEASURING(PERFORMANCE_COUNTER_BASE);
        PERF_BEGIN(PERFORMANCE_COUNTER_BASE,1);
        printf("Hello from Nios II!\n");//test printf
        PERF_END(PERFORMANCE_COUNTER_BASE,1);
        PERF_BEGIN(PERFORMANCE_COUNTER_BASE,2);
        usleep(1000);//test usleep
        PERF_END(PERFORMANCE_COUNTER_BASE,2);
        PERF_BEGIN(PERFORMANCE_COUNTER_BASE,3);
        //IOWR_ALTERA_AVALON_PIO_DATA(PIO_BASE,0x00);//test IOWR
        IOWR(PIO_BASE,0,0x00);
        PERF_END(PERFORMANCE_COUNTER_BASE,3);
        PERF_STOP_MEASURING(PERFORMANCE_COUNTER_BASE);
        perf_print_formatted_report(PERFORMANCE_COUNTER_BASE,alt_get_cpu_freq(),
                                    3,"printf","usleep","IOWR");
      return 0;
    }

      测试结果如下:

    表一:Nios II/e,没有优化

    Section

    %

    Time (sec)

    Time (clocks)

    Occurrences

    printf

    20.9

    0.00113

    56317

    1

    usleep

    79

    0.00427

    213400

    1

    IOWR

    0.0459

    0.00000

    124

    1

      表二:Nios II/e,优化:optimize -03

    Section

    %

    Time (sec)

    Time (clocks)

    Occurrences

    printf

    13.9

    0.00065

    32648

    1

    usleep

    86

    0.00404

    201865

    1

    IOWR

    0.0383

    0.00000

    90

    1

      表三:Nios II/e,优化:optimize -0s

    Section

    %

    Time (sec)

    Time (clocks)

    Occurrences

    printf

    13.4

    0.00063

    31439

    1

    usleep

    86.5

    0.00405

    202681

    1

    IOWR

    0.0358

    0.00000

    84

    1

      表四:Nios II/f,没有优化

    Section

    %

    Time (sec)

    Time (clocks)

    Occurrences

    printf

    18.7

    0.00023

    11387

    1

    usleep

    81.1

    0.00099

    49290

    1

    IOWR

    0.0428

    0.00000

    26

    1

      表五:Nios II/f,优化:optimize -03

    Section

    %

    Time (sec)

    Time (clocks)

    Occurrences

    printf

    11

    0.00012

    5969

    1

    usleep

    88.9

    0.00097

    48281

    1

    IOWR

    0.0147

    0.00000

    8

    1

      表六:Nios II/f,优化:optimize -0s

    Section

    %

    Time (sec)

    Time (clocks)

    Occurrences

    printf

    12.1

    0.00013

    6653

    1

    usleep

    87.8

    0.00097

    48315

    1

    IOWR

    0.0473

    0.00000

    26

    1

      通过比较上述六个表格数据,NiosII/e和NiosII/f性能还是相差比较大,从表格中数据看性能差4倍以上,同样的处理器优化之后性能比优化之前提升25%左右,而对于-03优化和-0S优化,性能基本差不多。而且usleep(1000),即延时1ms只有在NiosII/f中运行,才具有所设定的延时,在NiosII/e中实际延时时间为程序指定时间(1ms)的4倍左右,即4ms。

      根据Altera提供的资料:
     In Nios II Performance Benchmarks (Alteras document) are this DMIPS ratio: Nios II /f - 1.105, Nios II /s - 0.518, Nios II /e - 0.107


      即如果采用50MHz时钟,CUP的DMIPS为


      Nios II/f:1.105*50=55.25 DMIPS
      Nios II/s:0.518*50=25.9 DMIPS
      Nios II/e:0.107*50=5.35 DMIPS


      该性能的条件是在onchip-mem中运行,optimize为-03。cycloneII器件。本文中的程序在外接SDRAM中运行

  • 相关阅读:
    SDWebImage 原理及使用问题
    iOS沙盒目录
    java基础知识积累总结
    切片原型[start:stop:step]
    select嵌套问题
    Numpy:字符串转为数值型、日期型;日期型转为数值型
    数据标准化处理(简单整理)
    Numpy:自定义复合数据类型
    Numpy:数组创建 numpy.arrray() , numpy.arange()、np.linspace ()、数组基本属性
    Numpy:使用索引、切片提取一维数组、多维数组内数据
  • 原文地址:https://www.cnblogs.com/xuanxiaochen/p/2284151.html
Copyright © 2020-2023  润新知