nibia 发表于 2014-6-23 10:33:29

NIOS性能还是很强劲啊比6410强悍、

本帖最后由 nibia 于 2014-6-23 16:33 编辑

最近在用NIOS 做一段图像处理程序,其实方案确实不靠谱,无奈老板做软件出身,懂一点点硬件,认为FPGA最强,一定要NIOS干。
同样c++代码,ok6410532Mhz执行时间225ms,nios 200Mhz执行时间133ms。NIOS开了硬件除法,使能了cache。6410我不知道是否还有什么可以优化的地方。
在虚拟机下,代码运行时间87ms.

看来nios性能还是很NB的啊。

jiangchun9981 发表于 2014-6-23 10:55:37

NIOS+关键部分算法FPGA加速=无敌,不过用FPGA成本可就上去了

3DA502 发表于 2014-6-23 11:01:35

不知道LZ用的哪一个级别的FPGA,我就玩过CII的,NIOSII性能很渣

超过ARM9感觉上不可能的

nibia 发表于 2014-6-23 11:09:25

我用的cycloneIV,现在好像百元左右吧。

XIVN1987 发表于 2014-6-23 11:40:18

感觉不靠谱,,,开硬件除法也要说???连Cortex-M3都有硬件除法,6410这种ARM11的肯定硬件除法、DSP、浮点运算都是有的。。。说FPGA运算比ARM11快我信,可NIOS也只不过是个CPU而已,,

redroof 发表于 2014-6-23 11:53:26

XIVN1987 发表于 2014-6-23 11:40
感觉不靠谱,,,开硬件除法也要说???连Cortex-M3都有硬件除法,6410这种ARM11的肯定硬件除法、DSP、浮 ...

最低级的硬除法器每个时钟除1位,大部分单片机内部的“硬件除法器”都是这样的
高级的有每个时钟除2位或除4位的,这样除法速度就快了2-4倍,差别还是很大的

如果除法在你的算法里面超级重要,那么给它配一个高级的除法器是有用的。


XIVN1987 发表于 2014-6-23 15:01:40

redroof 发表于 2014-6-23 11:53
最低级的硬除法器每个时钟除1位,大部分单片机内部的“硬件除法器”都是这样的
高级的有每个时钟除2位或 ...


我赞同你说的硬件除法器有快慢??

不过我认为以cycloneIV这种资源的FPGA上面实现的NIOSII,其除法器不可能比ARM11上实现的除法器更快,更慢倒是有可能,因为除法器是很耗逻辑资源的。。。

redroof 发表于 2014-6-23 15:18:32

XIVN1987 发表于 2014-6-23 15:01
我赞同你说的硬件除法器有快慢??

不过我认为以cycloneIV这种资源的FPGA上面实现的NIOSII,其除法器不 ...

叫楼主看看他的NIOS里面的除法器是什么除法器吧
没准人家配的就是一个每次除4位或者更多位的快速除法器{:lol:}
除法器是很费资源,但如果除法对楼主很重要,耗掉半个FPGA的资源做个超快的除法器也值得

用ARM11,就只能用自带的每次除1位的除法器了。

jianfengxixi 发表于 2014-6-23 15:30:08

NIOSII在CYCLONE IV中能跑200MHz,楼主怎么做到的?稳定不?

ziruo2002ab 发表于 2014-6-23 15:44:21

不信,两个测试环境基本完全一样么

error_dan 发表于 2014-6-23 16:31:56

linux自身的损耗没还没算呢,你NIOS上还跑OS吗?八成是裸机吧,人家6410还要背着一个沉重的linux跑,当然累了。
LZ可以试试看用6410裸机跑,不知道你多大分辨率,反正肯定比现在这个成绩大大超出。

nibia 发表于 2014-6-23 16:32:26

本帖最后由 nibia 于 2014-6-23 16:35 编辑

恩,nios是裸奔的。 nios我只是使用自带的硬件乘法除法器,开启cache。添加了tightly coupled memory和clock bridge。开启cache确实能很大提高速度,我测过的。、
代码都是完全一样的,ok6410各部分耗时我记录为225ms,100us,1.6ms;同样在nios下133.5ms,0.3us,0.37ms。图就不截了。

在linux下计时:
        gettimeofday(&tpstart,NULL);
        usleep(9000);        //9ms
        gettimeofday(&tpend,NULL);
       
        timeuse = 1000000*(tpend.tv_sec - tpstart.tv_sec)+ tpend.tv_usec - tpstart.tv_usec;
        timeuse /= 1000000;
        printf("use time0:%f\n",timeuse);
实际延时的时间为12ms。在pc下延时正常。

在nios下计时:
       PERF_BEGIN(PERFORMANCE_COUNTER_BASE,1);
       usleep(100000);//100ms
       PERF_END(PERFORMANCE_COUNTER_BASE,1);

usleep在nios没有开始cache和那些bridge时候 是100ms,开启了那些,实际延时小于100ms。
同时nios也耗费了fpga 90%的资源、我只是试验,我还想说,方案不靠谱,实际估计也没有人这么做。

mcupro 发表于 2014-6-23 18:16:35

jianfengxixi 发表于 2014-6-23 15:30
NIOSII在CYCLONE IV中能跑200MHz,楼主怎么做到的?稳定不?

我在CYCLONE2上超频跑 可以做到。当时用的是EP2C5Q208C7N用的是7 的速度等级。
CYCLONE 4 应该问题不大。
应该说NIOS + FPGA加速器的整体表现超过了6410 ,不能单独说NIOS吧。

ccrt 发表于 2014-6-24 20:37:46

结论相当不靠谱啊

banye2010 发表于 2014-6-25 00:15:14

一个是裸跑,一个带Linux系统,没的比

vows 发表于 2014-6-25 00:46:27

都裸奔试试看

宇豪电子 发表于 2014-10-28 15:06:43

涨见识了!

freefei 发表于 2014-10-30 16:12:50

又学习了,长知识了

hantnt 发表于 2014-10-30 16:58:19

NIOS 性能还不及STM32F103 我会乱说?

bx2231 发表于 2014-11-3 11:08:24

添加了硬件乘法器,100MHz的NIOS也就差不多60MHz的cortex m3。而且调试NIOS软件,慢得要死。

冲上云霄 发表于 2014-11-3 11:31:34

学到东西了

dboyzju 发表于 2014-11-29 10:39:27

感觉应该让6410裸跑程序再进行比较

chun2495 发表于 2014-12-2 10:11:55

怎么说呢? 论坛里对nios一片叫骂声,不知是nios做过项目还是跟着别人骂的。我用nios做过两个完整的项目,跑ucos,开cache,优化-os,带优盘,上位机,电阻电容屏,8寸、7寸屏,打印机,程序运行还是相当流畅的,用的是飓风三。只是nios在调试时有时候会莫名出现一些bug,让人很恼火,但摸清了它的脾性,个人感觉操作还是很简单的。

xiangye 发表于 2014-12-2 11:32:47

有些算法是硬件实现的,相当于并行处理,速度当然快

YFM 发表于 2014-12-31 11:08:50

楼主果断6410没开cache

YFM 发表于 2014-12-31 11:10:40

2年前用 nios加ucos 切换进程的时候用了1400多clk

qianniao29 发表于 2015-1-4 18:54:10

用过cyclone ii,超频能跑到100Mhz,感觉跟stm32差不多

NJ8888 发表于 2015-1-4 19:20:36

我猜楼主6410不是裸奔,系统有其他任务分走了时间片,别告诉我你6410 nios跑的是一样的OS
页: [1]
查看完整版本: NIOS性能还是很强劲啊比6410强悍、