[Speex-dev] TI 6xxx platform performance

Jim Crichton jim.crichton at comcast.net
Thu Jan 19 08:33:19 PST 2006


I think that just removing the FIXED_POINT define should be sufficient, 
though you mind want to turn off MANUAL_ALLOC, because I am not sure if the 
memory usage is identical for the fixed point build, and the constants in 
config.h are set for the fixed point build.  Are you testing on the 
simulator, or on an eval board?  It does not look like the 6713 has enough 
memory to hold Speex (64K vs. 1024K for the 6416), and your performance 
could suffer badly running from external memory.

I would be very surprised if you can get below 9.3MIPs/channel for floating 
point, since Jean-Marc has posted raw MIPs numbers somewhere around 10 MIPs 
for the algorithm itself.  And that is discounting the memory issues.  With 
the C6416 you can fit the code and data for 32 channels in internal memory.

If you want to post (or send me) your .pjt and .cmd files for the 6713 
build, I can take a look at it in the simulator (I am using the 6415 now, 
though I do not need as many channels).  But if you are experienced enough 
in this area to be doing 6416 optimizations, I am probably not telling you 
anything that you don't already know.  That is not a task for the faint of 

Jim Crichton

----- Original Message ----- 
From: "Jerry Trantow" <jtrantow at ieee.org>
To: "'Jean-Marc Valin'" <jean-marc.valin at usherbrooke.ca>
Cc: <speex-dev at xiph.org>
Sent: Thursday, January 19, 2006 10:40 AM
Subject: RE: [Speex-dev] TI 6xxx platform performance

I started my project using the CodeComposerStudio speex_C64_test.pjt in
speex  To build using floating point, I created a new project with
the same files and modified ti\config.h to #undef FIXED_POINT.  Is there a
better way to configure a floating point processor?

I have a few TI specific optimizations that could go into the next release.
What's the procedure for submitting code?

I've been working with this code for about a week now. I'm still trying to
understand it all, but I'm particularly impressed by the float vs fixed
flexibility of the code.

Jerry J. Trantow
Applied Signal Processing, Inc.
jtrantow at ieee.org

-----Original Message-----
From: Jean-Marc Valin [mailto:jean-marc.valin at usherbrooke.ca]
Sent: Thursday, January 19, 2006 1:00 AM
To: Jerry Trantow
Cc: speex-dev at xiph.org
Subject: Re: [Speex-dev] TI 6xxx platform performance

> To get a feel for the computational load, I am running 1 second (50
> of voice through the encoder.

You might want to use a bit more just so you don't see the
initialization complexity at all.

> My profile of the 6416 indicates I'm at 27.4M cycles/channel.  I need to
> below 720Mhz/32 channels = 22.5M cycles per channel.  I did a little work
> inner_prod() and normalize16() and I'm confident I can get 32 channels by
> optimizing 5 or 6 functions.  I expect these numbers to translate over the
> DM642.

have you tried defining PRECISION16? That should reduce the computation

> A lower cost option would be to use a floating point 6713.  I thought that
> 300Mhz floating point would come out even or ahead in an encoding
> comparison.  Instead of the 300M/32=9.3M cycles per channel that I need, I
> see 71.5M cycles per channel!!!

That's definitely strange. Normally, if your chip takes the same time to
do a float op than it takes to do an int op, then the float version
should be faster. That's because some of the float ops get replaced by
several int ops.

> Does this make sense?
> I'm generating floating point code, using the optimizer, etc...

Are you sure the compiler isn't using float emulation or something like

> Has anyone posted DM642, C64xx or C67xx benchmarks?

I'm not aware of any.


Speex-dev mailing list
Speex-dev at xiph.org

More information about the Speex-dev mailing list