Part Number: TMS320C6748
Other Parts Discussed in Thread: SYSBIOS
We were recently profiling our code, and were attempting to optimize our HWI and SWI functions. We are already using the optimizer within the Code Gen tools (-O2 level), so our next question was where to place our functions within memory. We considered three options.
1. L1 and L2 100% cache, all code and data loaded in DDR2.
2. L1 and L2 100% cache, load HWI and SWI code into L3 (sometimes called the Shared RAM). Everything else loaded into DDR2.
3. L1 100% cache, L2 100% RAM. Load HWI and SWI code into L2, everything else into DDR2.
We measure MIN, MAX, and AVERAGE execution time of our HWI / SWI code. For some reason, option #1 always leads to the best profiling numbers. Option #2 is the next best, with Option #3 being the worst. It doesn't make sense to me why DDR2 would be faster than L3 (or even L2 configured as RAM). The internal memory access must be way faster compared to DDR2, so why would the profiling numbers show DDR2 better than anything?
Just to be clear, we are only moving around the code from our HWI and SWI functions. Everything data related stays in DDR2 for all options. This implies we are only taking about the L1P cache controller.
Thanks, Dean