- Optimization techniques for code efficiency
- Intrinsic C functions
- Parallel instructions
- Word-wide data access
- Software pipelining
In this chapter we illustrate several schemes that can be used to optimize and drastically reduce the execution time of your code. These techniques include the use of instructions in parallel, word-wide data, intrinsic functions, and software pipelining.
Begin at a workstation level; for example, use C code on a PC. While code written in assembly (ASM) is processor specific, C code can readily be ported from one platform to another. However, optimized ASM code runs faster than C and requires less memory space.
Before optimizing, make sure that the code is functional and yields correct results. After optimizing, the code can be so reorganized and resequenced that the optimization process makes it difficult to follow. One needs to realize that if a C - coded algorithm is functional and its execution speed is satisfactory, there is no need to optimize further.
After testing the functionality of your C code, transport it to the C6x platform. A floating - point implementation can be modeled first, then converted to a fixed - point implementation if desired. If the performance of the code is not adequate, use different compiler options to enable software pipelining (discussed later), reduce redundant loops, and so on. If the performance desired is still not achieved, you can use loop unrolling to avoid overhead in branching. ...