C++ Compiler Supports for Embedded Multicore DSP Systems
The development of embedded systems has moved toward multicore in recent years. As processor numbers continue growing in embedded multicore systems, how to provide efficient programming models and tailored compiler supports becomes a critical issue in developing embedded multicore applications. Though C still dominates embedded computing so far, C++ is gaining importance and popularity in DSP systems for its power and flexibility. In addition, current C++ compilers are able to produce efficient and compact code as C compilers. This increases the practical use of C++ technologies in embedded systems. In this paper, we address issues in supporting C++ compilers and present methods to leverage C++ in embedded multicore computing. Since embedded systems are usually limited by tight resource, code size issues are addressed when supporting C++ libraries. Code size of standard C++ library is analyzed and a library layering technique is provided to guide reasonable library use in embedded applications. Our methods to leverage C++ include enhancing programming models with high-level abstraction and incorporating the programming models with parallel patterns to simplify program parallelization. In our experiments, PAC multi-DSP systems, composed of one MPU and two VLIW DSPs, are used to evaluate the proposed methods. Parallelization results on stereo-vision and image-blurring applications are presented with key components of the systems, including SIMD and DMAs, incorporated to pursue maximal performance. The result shows our approaches with C++ compilers can deliver performance improvements of 61% and 174% for the stereo-vision and image-blurring applications, respectively.