Since adaptivity affects all layers of system development and all the thematic areas in ArtistDesign it is quite difficult to provide a bried technical state of the art description. Here, we have focused on the industrial state of the art.
Adaptive resource management is primarily of interest in consumer electronics, industrial automation, and telecommunications. Mobile cellular terminals today are getting more and more advanced and their source code consists of 5-15 million lines of, typically C, code involving a large number of parallel activities. For these applications, the use of adaptive resource management would allow to safely mix real-time and non real-time processes. The majority of the activities are related to multimedia streaming, where multiple video and audio streams are common. It is not uncommon to have a desired system utilization that is well beyond 100 %. Designing the system for the worst-case scenario is not exonomically justified. Hence, adaptivity is needed in order to be able to dynamically tradeoff the quality of the activities.
In telecommunication companies, the main current interest seems to be in exploring the use of the Linux OS and its real-time extensions. QoS mechanisms, virtualization and reservation-based scheduling, multi- and many-core platforms, and data-flow based programming models are also attracting substantial interest.
In the area of Industrial Automation, the continuous increment in processing power and memory capacity in local processors gives the opportunity to add new tasks into them, increasing system complexity in terms of supervision, diagnostics, presentation, communication, etc. Adaptive task scheduling that preserves the real-time constraints is a possible way to handle such situations and manage the complexity of the application.
Reconfigurable hardware systems are a technique that for a long time has not been able to compete either with software-based systems or with ASIC-based solutions. However, there are signs that that is about to change, especially for applications where the gains in performance over software-based system and the faster development cycle compared to ASICs are important.
The multi/many-core trend also narrows the gap between software and hardware-based implementation techniques. In both cases good models are needed for exploiting parallelism, both in the programming models and languages used and in the compilers and analysis tools. Ideally, it should be possible to execute the same application either on a FPGA with a high-level of parallelism or on a, e.g., quad-core, platform without having to change anything in the source.