|
Message
From: Austin Franklin<austin@d...>
Date: Thu Jul 15 14:06:15 CEST 2004
Subject: [oc] Why open processors are so much slower than commercial ones?
Hi Justin,> Similar to if you try to compile a matrix multiple program (for example) > with the C compiler GCC, compared to by hand, you'll find that you get a > HUGE markup in execution time doing it by your self. Compilers aren't very > smart!!
Not quite sure what you are saying here, it seems to be contradictory. You say "you get a HUGE markup in execution time doing it by your self" which, to me, means it runs slower... I think you meant to say the opposite, that you believe it will run faster if you hand compile it, as you then say "Compilers aren't very smart". Actually, this, in my experience, is not true. It is rare, these days, that you can hand compile code that runs faster than a compiler can, especially code of any size. Compilers have come a very long way over the past few decades.
> So I suggest that maybe they have closed to hand compiled the core, making > sure all the blocks are laid out very cleverly to reduce clock delay and > skew.
You are probably correct, but keep in mind, software does not have placement/routing, and FPGA hardware does...what this means, is there is yet another level of complexity beyond compilation that attributes to FPGA hardware performance. The hardware compilers are in fact reasonably good these days, but there have been no real improvements in placement/routing, algorithmically that is.
The saving grace is that FPGA manufacturers are making faster chips with more resources. Kind of the same reason the PC runs so fast, even with bad C code. And speaking of bad code, it is really essential, for using any compiler, that the code writer understand what the compiler does with what constructs, as some will compile more "efficiently" than others. It helps to run a few test cases of different methods of writing the same algorithm and seeing what the compiler does.
Regards,
Austin
|
 |