SPRAC21A June 2016 – June 2019 OMAP-L132 , OMAP-L138 , TDA2E , TDA2EG-17 , TDA2HF , TDA2HG , TDA2HV , TDA2LF , TDA2P-ABZ , TDA2P-ACD , TDA2SA , TDA2SG , TDA2SX , TDA3LA , TDA3LX , TDA3MA , TDA3MD , TDA3MV
Following is the C code for the L2 Stride-Jmp Read function. The difference from the earlier pipeline read is as highlighted.
long long temp1, temp2, temp3, temp4;
void l2_stride_jmp_read(unsigned byte_cnt)
{
long long *restrict src = (long long *)ext_buf[0];
unsigned int wrStartTime, wrStopTime;
int i;
wrStartTime = CSL_tscRead();
for (i=0; i<byte_cnt/8; i+=32 )
{
temp1 = src[i];
temp2 = src[i+16];
}
wrStopTime = CSL_tscRead();
WBINVALIDATE
wrDuration = (float)(wrStopTime-wrStartTime)/(DSP_FREQ/1000);
}
The pipeline can be viewed as in Figure 23. It can be observed that this code would make sure the two load engines are occupied every cycle of the pipeline.
Figure 23. DSP CPU Pipeline L2 Stride-Jmp Read Software Pipelining