Embedded systems operate under increasingly dynamic conditions. They must support unpredictable interaction with users or with the environment. And they should work with widely varying input data, downloadable software, online services, and a wider range of software applications than is traditionally supported by embedded systems.
Worst-case system designs take into account all this unpredictability upfront, resulting in overallocated resources, higher costs, and longer time-to-market. In addition, embedded systems that are connected in a network also have to deal with the dynamic behavior and unpredictability of distributed systems, further increasing the design challenges.
IMEC has launched a research program to study and improve the dynamic behavior of networked embedded systems. The program will focus on moving management of the system's resources from the design phase to the runtime software development, thereby increasing flexibility and efficiency while shortening time-to-market. Targeted applications include cognitive radios, sensor networks, body area networks, or smart energy grid applications.
IMEC's research will examine methods to fully exploit multiple heterogeneous processing cores, including general-purpose processors, in a distributed setting. The number and variety of processing elements in such a system offer more flexibility to select processing resources for executing software, not only at design time, but also at run time.
The goal of IMEC's program is to create a run-time resource manager that addresses the dynamically changing conditions and makes a trade-off between processing availability and type, communication bandwidth, power consumption, and any other relevant constraint, while meeting the required quality of service. In addition, the program will contribute to the software infrastructure that exchanges information with the run-time manager. Different versions of this infrastructure will range from lightweight to advanced, depending on the openness of the software development methods used in a particular project. Advanced infrastructure will offer techniques such as virtualization, managed code, just-in-time compilation, and optimization.