On Tue, Jul 13, 2010 at 6:05 PM, Joel Crisp cydergoth@gmail.com wrote:
This many be a daft comment, but shouldn't high performance math be implemented via DSP or GPU hardware or some other co-pro on an embedded system?
Where the hardware available is a good fit, yes - but porting work is need in every case, for every target device, so it's not very scalable in terms of effort or portability.
Generally only bulk-number-crunching software components designed with this sort of acceleration in mind will perform well with it - using hardware accelerators to process data can give high data throughput, but suffers from relatively massive setup costs and latency compared with running general-purpose code on the CPU. Using extra hardware blocks for general-purpose work may also interfere with the ability to save power by turning those devices off when they're not in use.
Components for which hardware acceleration is a big win typically includes codecs, video rendering and streaming components.
For other cases, software implementation gives you a universal fallback which will work (albeit at reduced performance) on all devices - we still want this to be as fast a possible, since in general not every device will have an accelerated path for everything. Suppose someone invents a novel codec after the hardware was built, for example.
Cheers, ---Dave