1.IntroductionHigh reliability, high performance and low cost are forcing higher levels of integration for VLSI embedded systems. As DSP applications are rapidly growing more complex, some designers are moving from full custom digital circuitry to programmable processors or in-house cores to obtain lower risk solutions. The DSP core is a DSP processor that can be reused and combined with program/data memory, dedicated logic, plus ASICs, and incorporated onto a large silicon chip, providing a cost efficient and flexible solution for many typical embedded applications requiring low power and high reliability. These systems demand small code size and high performance. Due to increasing complexities, high level compilation is a necessity. However the biggest drawback to both DSP processors or DSP core use is the code generation.The use of conventional code generation techniques and even compilers specifically designed for commercial DSP processors produce very inefficient code [8,4]. There are many more limitations placed upon code generation for the DSP processor than for the general purpose processor. The difficulty arises from non-homogeneous register sets, small number of very specialized registers, very specialized functional units, restricted connectivity, limited addressing, and highly irregular datapaths [8]. For example specialized functional units such as multiplier-accumulators and address calculation units are typically found in these architectures. Instructions take operands and store results of computations in well defined registers with limited connectivity. Instructions are highly interdependent and involve the use of modes, for example the mode classes typically involve product-shift and sign-extension. Some instructions will function differently depending upon the current mode setting and extra instructions to reset the mode are typically required. Limited addressing modes and the use of address registers are also typical. Code generation for DSP processors must meet tight timing constraints dictated typically by DSP throughput, and meet tight resource constraints. Given that these DSP processors must meet these requirements using very small code space (all on chip ROM), the code generation problem is a very difficult one [10]. Typically DSP processors are difficult to use and require long product development times even though the program being developed may be stored on chip in less than 1K program ROM. The need for decreasing time to market, development costs, and maintenance costs, demands the use of high level language compilation. All of these factors imply several challenges in writing efficient code generators for such DSP processors. This is even more difficult for the design of in-house DSP processor cores since retargetable compilation is also required.
Problem Description and Related WorkThe following problem, problem 1 given below, is an important part of the code optimization problem that will be studied in this paper. For simplicity let us assume that an algorithm to implemen...