This is popping up in the Statistical Profiler and is chewing up 15% of the bandwidth.
What exactly is it ?? Is it a library of some sort etc ??
this is the default interrupt dispatcher from the SHARC libraries. You can take a look at its source at "...\214xx\lib\src\libc\int_cntl.asm".
For details of the available interrupt dispatchers, please see the SHARC Compiler Manual, available under the VisualDSP++ Help. Particularly the section:
1 Compiler > C/C++ Compiler Language Extensions > Support for Interrupts > Interrupt Dispatchers
Thanks craig, now I know what it is
I have already read about the interrupt dispatchers and the different types. I might try using the simpler versions as I don't have any circular buffers etc.
I am running some real time control loops that cannot be optimized using block DMA which would explain why the overhead is appearing quite large. I can easily switch into block mode on the higher priority interrupt but this is not improving things much.
I also have a lower priority interrupt which uses block DMA but is slowing down as the loading on the higher priority one becomes excessive. What would you suggest as a way of improving the performance ??
I am using a bit of conditional logic in my code which is unavoidable so the conditional jumps maybe incurring a speed penalty. Does the SHARC have branch prediction to improve ustilisation of the pipeline ??
SHARC does not have branch prediction in hardware. However it does have delayed branches (seen in code as "(db)"). This feature allows instructions to be executed in delay slots of a branch to reduce the overhead of taking the branch. It also has conditional instructions, which permit single instructions to be executed conditionally without a change in control flow. When compiling with optimisation enabled (-O), the compiler will use both of these features as best it can in order to reduce the cost of conditional code. The compiler also uses heuristics to order the code in such as way as to take as few branches as possible.
Hope this helps,
Retrieving data ...