FS#10028 - Move Tremor block pcm (double-buffer) into IRAM for big speedup

Attached to Project: Rockbox
Opened by Dave Hooper (stripwax) - Tuesday, 17 March 2009, 01:11 GMT
Last edited by Nils Wallménius (nls) - Saturday, 21 March 2009, 15:24 GMT
Task Type Patches
Category Codecs
Status Closed
Assigned To No-one
Operating System iPod 5G
Severity Low
Priority Normal
Reported Version Version 3.1
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


Putting the block pcm buffer (libtremor/block.c) into iram (rather than using the ogg_calloc stuff) gives a speedup of about 15MHz on some test vorbis files around q5 - from around 45MHz (according to buffering thread debug) to around 30MHz - using a regular 30MHz clock that would mean almost never having to boost. Using a default 24MHz clock I get a boost ratio of around 11% now.

Attached is one way to do this which works for ipod 5g (other targets untested, suspect many targets may not have sufficient iram to allow for BOTH the block.c pcm buffer and the existing synthesis.c pcm buffer)
This task depends upon

Closed by  Nils Wallménius (nls)
Saturday, 21 March 2009, 15:24 GMT
Reason for closing:  Out of Date
Additional comments about closing:  Closed on request by the poster.
Thanks for looking into this!
Comment by Dave Hooper (stripwax) - Tuesday, 17 March 2009, 01:28 GMT
Seems I was hasty in my assessment (and can only assume I measured very badly) - test_codec never lies
Still, despite marginal improvement, any reason to not commit [after changes to ensure works on all platforms]?
Comment by Nils Wallménius (nls) - Thursday, 19 March 2009, 15:43 GMT
hi, this patch seems to be doing part of what  FS#9882  does
Comment by Dave Hooper (stripwax) - Saturday, 21 March 2009, 15:18 GMT
Part of it, although that patch doesn't seem to put the vorbis dsp buffer into iram, just the block dsp buffer.
Anyway, as discussed on irc (on 17th), my patch is certainly better folded into  FS#9882  in any case. I'm looking at doing a combination of the following things (and will post on  FS#9882  instead of here)
put dsp buffer into iram too
get rid of need for memcpy ("vect_copy") step

 FS#10028  can be closed