由于我 之前做过大量的指纹算法及其移植的研究,分别将其移植至NIOS2,ARM11 6410 WITHOUT MMU,ARM11 6410 WITH MMU以及STM32F429ZET6
处理时间如下:
NIOS2 100MHZ: 30S左右
ARM11 6410 WITHOUT MMU 667MHZ:8秒之内
ARM11 6410 WITH MMU 667MHZ: 2秒
STM32F429ZET6 250MHZ:2秒之内
NIOS2是altera公司的软核,在验证IP核时还是具有很大作用。由于没有打开CACHE,因此其数据处理能力较差。
ARM11 6410 WITHOUT MMU 667MHZ 三星公司的ARM11,在没有运行操作系统的情况下,不打开CACHE(但打开浮点协处理器),其运行速度为8秒
ARM11 6410 WITH MMU 667MHZ 三星公司的ARM11,在没有运行操作系统的情况下,打开CACHE(打开浮点协处理器),其运行速度为2秒,可见cache的强大(该处理器为1级缓存,相对较弱),若想深入研究计算机cache,可以去看CMU和斯坦福的两本相应著作
Computer Systems: A Programmer‘s Perspective (2nd Edition),Computer Architecture: A Quantitative Approach, 5th Edition。另外Hisa Ando的支撑处理器的技术:永无止境地追求速度的世界中有不带缓存,带1level缓存,带2level缓存,带3level缓存的实际测量数据,有兴趣可以看一看。
STM32F429ZET6:ST公司最新的产品,理论运行速度为168MHZ,本人为了追求速度,将其超频到250MHZ 。处理速度为2秒之内,正常速度处理速度为3秒。
接下来就是今天的ZYNQ了,写完makefile文件后,输入make报错,让我百思不得其解,sqrt,atan2,fabs,atan2没有定义,估计是编译器对库文件支持的还不是特别完善,于是我利用uclibc中的这四个文件,并将其从库中剥离出来。重新编译。成功!
开始测量ZYNQ的数据处理能力,输入:time ./main
运行时间为0.27s。这个速度已经相当的快了。让我不得不佩服ARM公司的那群基佬们。由于本人另外还有任务,所以这段时间我可能没有时间去折腾相应的接口驱动,等完成了相应的任务后,再来慢慢完成相应的接口驱动设计。最近实在是太忙了。好啦,时间不早了,先暂时写到这里吧。
参考资料:
Bryant R, David Richard O H. Computer systems: a programmer‘s perspective[M]. Prentice Hall, 2003.
Hennessy J L, Patterson D A. Computer architecture: a quantitative approach[M]. Elsevier, 2012.
Mecklenburg R. Managing projects with GNU make[M]. " O‘Reilly Media, Inc.", 2004.
Jone R L. Linker & Loader[J]. 1999.
ARM architecture reference manual[M]. Pearson Education, 2001.
支撑处理器的技术:永无止境地追求速度的世界[M].安藤桐 (Hisa Ando) (作者), 李剑 (译者).2009