Abstract
In the recent years, Multiprocessor System-on-Chip (MPSoC) has become the main-stream in embedded systems. To benefit from such architectures, the parallelism of an application ought to be discovered. While techniques of automatically extracting parallelism are still impractical, it relies on programmers to expose the parallelism on multi-core platforms. In order to help programmers design parallel applications, various multi-core programming models and languages are proposed. Among the diversity of models for programming multi-core processors, the stream programming offers an attractive way to parallelize programs on MPSoC. However, it remains an interesting and challenging problem to effectively develop highly parallel and time-to-market applications with the provided streaming programming models and languages. In this thesis, we present multi-core design patterns with streaming RPC and a set of visualization tools to effectively write multi-core streaming programs. Where the streaming RPC is a streaming mechanism handles data-intensive and stream-based applications and efficiently utilizing the parallel architecture of the multiprocessors. Also the streaming RPC design patterns could benefit in coarse-grain data parallel, task parallel, and pipeline parallel. In addition, we provide a set of streaming RPC tools (based on Eclipse) assisting programmers in writing streaming applications. The provided visualization tools could improve time-to-market streaming programs by designing streaming applications in high level streaming work flow, handling communication overhead by using streaming channel, and generating streaming rpc c source codes. The use of these design patterns and tools are demonstrated on an jpeg decoder application with a dual-core platform [ARM+PACDSP].