Real-time systems constitute a notable share of today’s embedded computers that needs special attention. The design of robust and fault-tolerant real-time systems is a highly active research area that has produced numerous approaches for evaluating and increasing system robustness against selected fault scenarios.
These methodologies can be applied throughout the design process of an embedded system and yield systems that are highly robust against a selected set of disturbances in the field. Future embedded systems, however, will undergo an evolution in both hard- and software configuration during their lifetime. In the automotive industry, it is already common to update or add software components during the lifetime of a product, producing a variety of software configurations in the field. To ensure functional and temporal correctness of all possible configurations, OEMs have to maintain a complex versioning database and perform exhaustive testing to cover the whole configuration landscape. This already constitutes a problem today, which will grow into a major challenge in the future.
Designing embedded systems robust and fault-tolerant will not ultimately solve this problem, as the evolution an embedded system goes through during its lifetime cannot be foreseen at design time. Hence, embedded systems need to be adaptive to changing conditions, in the sense that they need to be able to meet given requirements including safety, security, and performance, in the presence of uncertainty in its external environment or internal execution platform. Adaptivity can be seen as a means for enforcing predictability in the presence of uncertainty.
The uncertainty can be viewed as the difference between the average and the worst-case behavior of a system and its environment. The trend in embedded system is towards drastically increasing uncertainty due to, e.g., execution platforms with increasingly sophisticated HW/SW architectures (layering, caches, multiple cores, speculative execution etc), increased connectivity with complex and non-deterministic external environments, increased amount of difficult-to analyze software, and increased variability with respect to use cases.
One technique for achieving adaptivity in particular in software-based systems is feedback. In many embedded systems worst-case designs are unfeasible for several reasons. One of these is the over-provisioning of resources that this typically implies. Other reasons are uncertainties associated with worst-case resource utilization estimates and on-line changes in objectives, external conditions and use cases. In a feedback-based resource management system, the allocation of resources is based on a comparison of the actual resource utilization by, e.g., a set of activities or tasks, with the desired resource utilization. The difference is then used for deciding how the resources should be allocated to the different activities. The decision mechanism constitutes the feedback controller in the scheduling scheme. Feedback control makes it possible to deal with uncertainties and variations in a controlled way.
Feedback scheduling is primarily suited for soft real-time applications and adaptive real-time applications, where missing one or more deadlines does not jeopardize correct system behavior, but only causes performance degradation. For this type of systems, the goal is typically to meet some Quality of Service requirement. The adaptive class of real-time systems is a suitable description for a many practical applications. This includes different types of multimedia applications, but also many control and signal processing applications. An important research trend here is how to best model embedded computing system from a control perspective. Different model formalisms can be considered, from pure discrete event based models to fluid continuous-time approximative models.
The research trends related to adaptivity in embedded systems are numerous since adaptivity is crosscutting. In hardware-based oriented embedded systems there are work performed on modeling and hardware generation for adaptive processes and applications. Emerging architectures such as partially reconfigurable, either fine-grained or coarse-grained, FPGAs provide a huge potential for adaptivity in the area of embedded systems. Since many system functions are only executed at particular points of time they can share an adaptive component with other system functions, which can significantly reduce the design costs. However, adaptivity adds another dimension of complexity into system design since the system behavior changes during the course of adaptation. This imposes additional requirements on the design process, in particular system verification.
In the software-oriented part of embedded systems there is also a considerable work on computational models that allow for adaptivity, how adaptivity can be provided in component-based architectures, adaptive task models for scheduling, program language constructs supporting adaptivity, and run-time support for adaptive resource management from operating systems, middleware, and communication networks. The resources in the latter case typically include clock cycles, memory, communication bandwidth, and energy, but could in general also include other resources which are allocated dynamically.