Just for the record, I am certainly following this thread with interest. I used to do a lot of PS2 vector unit programming (vector units being capable of executing separate executables to the main core in parallel) and I found it to be almost addictive. I went through a number of variations of experimenting how to get data into/out of the vector units, certainly one of the popular (decent performance) options was using a quad buffer, where the idea was (assuming buffers #0, #1, #2, #3 are each equal chunks of memory accessible to the vector unit, and below, for a single number, the letters execute in parallel, i.e. 3a, 3b and 3c run at once):
Start up
1. Upload data to be processed to buffer #0
2a. Process data in buffer #0, putting results into buffer #1
2b. Upload data to be processed into buffer #2
Main loop
3a. Download processed data from buffer #1 into main memory
3b. Upload new data into buffer #0
3c. Process data in buffer #2, putting results into buffer #3
4a. Download processed data from buffer #3 into main memory
4b. Upload new data into buffer #2
4c. Process data in buffer #0, putting results into buffer #1
On the PS2, you could transfer data into/out of the units via the DMA controller, which didn't tie up the CPU (except for memory contention), and with the above set up the vector unit would constantly be processing (you could transfer data quicker than it could be processed). There is also a variation for the second vector unit (VU1) as that has a direct path to talk to the graphics interface, so instead of downloading processed data to main memory, you could send processed data directly to be drawn.
It sounds like this may all be mostly uninteresting for the DSP, as the DSP has access to shared memory, but I thought I'd just put it out there, in case it is either of help, or opens up different ideas.