05-11-2008 07:41 PM
I have a floating-point application that runs on an AMD520 processor. The AMD520 is a 133 MHz machine with hardware floating-point (sort of a Pentium 1).
I have ported the application to MicroBlaze on a Virtex 4 chip, set to run at 100 MHz with an FPU implemented. The application runs 500 times faster on the AMD520 than on the MicroBlaze. This is WAY too slow for my needs. My questions are:
1) Is this factor of 500 reasonable?
2) Is it possible that I have implemented something in error (e.g., I don't have the cache turned on, or am I not using the FPU correctly)?
3) Is there any way to speed up the application?
4) Is there a reference floating-point application for MicroBlaze that I could use to test my MicroBlaze implementation, or, does anyone have an application that they could send me that has a known execution time?
Thanks for your assistance.
05-12-2008 01:37 AM
The MicroBlaze FPU only support single-precision operations.
If your application is using double-precisions number, the FPU will not be used at all and all operations will be done using software library routines.
The factor 500 shows that the case here.
05-12-2008 09:37 AM
I did the comparison using single-precision variables (floats instead of doubles) to generate the 500 to 1 comparison between the AMB520 and MicroBlaze versions. However, I am suspicious that the MicroBlaze fpu is not being used somehow. The 500 to 1 ratio seems very high. Hence my desire to test an application with a known execution time to calibrate my MicroBlaze implementation.