[Speex-dev] Updated MIPs and memory requirements for TI c54x or c55DSPs

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Wed Aug 17 16:56:16 PDT 2005


Hi,

Just a couple tips to reduce complexity. First, I think you'd get a good
speedup by enabling the PRECISION16 switch (if it's not done already).
This (very) slightly reduces quality, but means you convert a lot of
"emulated" 16x32 multiplications into 16x16. There are also several
routines that would benefit from platform-specific optimizations. There
are already optimizations for ARM (*_arm4.h), Blackfin (*_bfin.h) and
SSE (*_sse.h), so you can see what functions are worth optimizing. 

For a DSP, there are also two specific things I would watch. First,
there is at least one CPU-intensive place (inner_prod) where I have to
use many shifts in a loop to prevent overflows, but those could be
replaced by a single shift at the end when using a 40-bit accumulator
(which can also replace the only use I have of spx_word64_t). The second
thing is in the filters (*_mem2() functions). The reference
implementation assumes that writes are as fast as reads. This is often
not true on DSPs (at least on Blackfin), so it is possible to re-write
the algorithm to take that into account. There is an example (in C) for
filter_mem2() and compute_impulse_response() at the end of
filters_bfin.h.

Hope this helps.

	Jean-Marc

Le mercredi 17 août 2005 à 16:41 -0400, Jim Crichton a écrit :
> The 42 MIP number was from my post of 24 May, and it was for C55x and
> Speex 1.1.8.  I tested 1.1.10 yesterday, and the number went down very
> slightly; it was just over 41 MIPs peak measured in 20 ms blocks on
> MALE.WAV, for encoder/decoder loop, 8kbps narrowband with minimum
> complexity.  C54x was just awful in comparison (>200 MIPs, not enough
> for real time), and I abandoned that family and switched to the
> C5509A.  At least one other user has made some optimizations for C54x
> and gotten the MIPs down some, but the C55x family seems to like Speex
> a lot better (32-bit math support is more efficient).  I had promised
> Jean-Marc to make a reference build for others to look at, but I have
> not got around to that yet.  I can send you the .pjt and .cmd files
> that I used, if you like. 
-- 
Jean-Marc Valin <Jean-Marc.Valin at USherbrooke.ca>
Université de Sherbrooke



More information about the Speex-dev mailing list