NIOS II 处理器性能测试(转)
0赞本文对NiosII 处理器的经济型Nios II/e和快速型Nios II/f在不同的优化方式下测试其性能,测试了以下代码的运行时间。
1、Printf//文件打印
2、usleep(1000)//睡眠时间
3、IOWR_ALTERA_AVALON_PIO_DATA//端口读写
测试代码如下:
#include#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中运行