Self-* Computing
Since more than a decade researchers are proposing and investigating computing systems with so-called self-* properties. The self in self-* refers to the capability of a system to modify its own behavior or structure without any external control in reaction to or even in anticipation of system dynamics. System dynamics is caused by changes in the system itself or by events external to the system. There are many instantiations of self-* such as self-adaptive, self-optimizing, self-coordinating and self-healing, and the appeal of self-* properties has fuelled research fields such as self-organizing systems, autonomic computing, and organic computing. Self-* capabilities are considered as enablers for future computing systems that will have to deal with unprecedented complexity, heterogeneity, and dynamics.
We are interested in self-* capabilities at the hardware and computer architecture levels. In the MOVES project, funded by the DFG within the priority program Organic Computing (PP 1183), we focused on evolvable hardware and investigated novel hardware representation models and multi-objective evolutionary optimizers for creating adaptive hardware structures. In the EvoCache project we studied self-adaptive processors that are able to evolve application-specific cache mapping functions to improve runtime and energy consumption.
Self-aware computing systems are the most recent breed of self-* systems. They collect and learn knowledge about their own state and the environment, and adapt to changes through reasoning and decision making processes. We contributed to the self-awareness initiative of the European Commission and coordinated the EPiCS project. In this project, we focused on computational self-awareness as a novel paradigm for designing and operating heterogeneous multi-cores. Currently, we are studying the learning classifier system XCS as an algorithmic means to realize self-awareness in computing systems. This work is funded by the DFG within the collaborative research center On-The-Fly Computing (CRC 901).