Optimized MP-SoC Middleware for Event-driven Applications (OptiMMA)
The OptiMMA project will enable the mapping of emerging, dynamic software applications on complex Multi-Processor Systems-on-Chip (MP-SoC). The main research objective is to realize a breakthrough in the development of scalable, dynamic resource requests in embedded software. This is achieved through the use of a runtime resource manager that mediates between embedded software and the hardware platform. The resource manager manages -at runtime- the memory storage, energy consumption, bandwidth and computation resources of the embedded system. The economic actors in Flanders that are targeted by this technology are actors that specialize in multimedia and telecommunication applications on mobile devices, medical imaging devices, embedded software design, hardware platforms design, design tools, etc.
We have realized a prototype tool-assisted approach that aims at optimizing applications for heterogeneous systems-on-chip. The input to the toolchain consists of a software description and a platform descripton. The software description eventually is a high-level synchronous data flow model annotated with timing informations. This model can either be given by hand (with timing estimates in that case) or is constructed starting from an existing application. The platform description is a high-level description detailing the processing elements, memories and interconnect that describe the target hardware.
The software and hardware description are fed into an interactive tool to identify different runtime scenario's for the application. For each scenario the design-time exploration tool determines the most optimal resource mappings of software tasks to processing element (including what voltage level to run the processor at), data to memory, and communication to network element. The optimizations takes into account the energy consumption savings while satisfying all application constraints like QoS and throughput requirements and platform constraints like processing elements, memory and communication resource capacity constraints. The toolchain was validated on two application case studies: a 3D game engine and a medical imaging application.
Using the toolchain we implemented the customizable runtime components for the processing elements, memories and shared bus communication, including the runtime scenario detection logic to detect in which scenario the application is present at run-time, and run-time resource managers for Processing elements, memories and communication.