Multicore systems have not only become ubiquitous in the desktop and server worlds, but are also becoming the standard in the embedded space. Multicore offers programability and flexibility over traditional ASIC solutions.
However,many of the advantages of switching to multicore hinge onthe assumption that software development is simpler andless costly than hardware development. However, the designand development of correct, high-performance, multi-threaded programs is a difficult challenge for most programmers.
Stream programming is one model that has wide applicability in the multimedia, signal processing, and networking domains. Streaming is convenient for developers because it separates the creation of actors, or functions that operate on packetsof data, from the ?ow of data through the system.
However, stream compilers are generally ineffective for embedded systems because they do not handle strict resource or timing constraints. Specifically, real-time deadlines and memory sizelimitations are not handled by conventional stream partitioning and scheduling techniques.
This paper introduces the SPIR (signal processing intermediate representation) compiler that orchestrates the execution of streaming applications with strict memory and timing constraints. SPIR takes the C language with minimal extensions for representing data?ow programming paradigm as input, rather than the specialized streaming language such as StreamIt. Using C can minimize the entry-level efforts for programmers to describing the streaming programming paradigm.
To read this external content in full download the complete paper from the author archives at the University of Michigan.