Hi everyone,
I'm in the middle of an optimization session within our DSP code.
We came up with the idea of using the resource partitions A/B used while optimizing loops in the code:
*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
* Resource Partition:
* A–side B–side ;
* .L units 2 3 ;
* .S units 4 4 ;
* .D units 1 0 ;
* .M units 0 0;
* .X cross paths 1 3 ;
* .T address paths 1 0 ;
* Long read paths 0 0 ;
* Long write paths 0 0 ;
* Logical ops (.LS) 0 1 (.L or .S unit) ;
* Addition ops (.LSD) 6 3 (.L or .S or .D unit) ;
* Bound(.L .S .LS) 3 4 ;
* Bound(.L .S .D .LS .LSD) 5* 4 ;
*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
My questions are:
1. Does the compiler use these partitions "behind the scenes" without informing the user when it comes to code blocks which aren't within any loop?
a. if not, does this mean that only one pipeline partition is used for code which is outside of a loop and 2 partitions are only used within loops?
b. if yes, is there a way to see the asm output of how these partitions are used for each block of code?
2. Is it possible to use them manually in case I have a code block outside of a loop that can be optimized using both partitions?
a. if not, does this mean that I have to "fool" the compiler by putting this code block into a dummy loop format in order to utilize the resource partitions better?
Thanks in advance!
Yehonadav.