InvasIC: Transregional Collaboriative Research Center 89 — Invasive Computing
Invasive computing denotes a novel paradigm for the design and programming of future parallel computing systems. Its unique characteristic is to give a programmer explicit handles to specify and argue about resource requirements desired, or required in different phases of execution: Using an invade command, an application may instruct the operating system to claim a set of processor, memory and communication resources for being allocated for a -by default- subsequent exclusive use. In an infect phase, the application workload is then spread and executed on the obtained claim of resources. A retreat command finally frees a claim again and the application may resume sequential execution. To support this idea of self-adaptive and resource-aware programming, not only novel programming concepts, languages, compilers and operating system concepts had to be developed from scratch, but also revolutionary architectural changes in the design of MPSoCs (multiprocessor system-on-a-chip) including mechanisms to allocate and isolate resources on demand.
Mission I: Basic Principles and Invasive Efficiency. As major results of the first funding phase, substantial gains in multicore utilisation and efficiency have been shown to be achievable by only claiming resources when necessary and retreating from them if not needed.
Mission II: *-Predictability. A unique jewel of invasive computing is the inherent capability to isolate even distributed applications from each other by not sharing resources. This feature has shown to enable *-predictability of non-functional qualities of program execution such as execution time, throughput, but also safety and security properties. Using current multicore platforms and operating systems, little if no support for hardware and/or temporal isolation can be established on demand of an application program. By exploiting the fact that resources may be (temporally) claimed exclusively, we were able to show that *-predictability may be enabled on program demand using invasive computing which uses run-to-completion as the default mode of thread execution, partial virtualisation and techniques for memory reconfiguration and bandwidth guarantees on the designed invasible NoC.
Mission III: Beating Run-Time Uncertainties and Run-Time Requirement Enforcement. Not only the interferences caused when sharing resources such as caches, processors and communication links as being the practice today, makes the analysis of non-functional properties hard. The bounds themselves or their variability might be much too large for any practical use. Unfortunately, isolation alone does not help to reduce the remaining uncertainty caused by input (problem size), environment (e.g. temperature), and machine state (e.g., cache, power manager, etc.). Our goal of phase III is therefore to close this missing link for making multicore systems available to be used for the billion dollar market of embedded and cyber-physical IoT products where application programs require the strict or at least loose enforcement of tight non-functional property ranges. Here, through the static analysis of robustness and the automatic generation of verifiable run-time requirement enforcer (RRE) modules (additional code that either locally or globally observes and controls the satisfaction of requirements within prescribed corridors) in combination with run-time requirement monitoring (RRM), we expect to provide the missing link to successfully combine resource awareness and tight predictability of non-functional aspects of program execution on multicore platforms.
Mission I: Basic Principles and Invasive Efficiency. As major results of the first funding phase, substantial gains in multicore utilisation and efficiency have been shown to be achievable by only claiming resources when necessary and retreating from them if not needed.
Mission II: *-Predictability. A unique jewel of invasive computing is the inherent capability to isolate even distributed applications from each other by not sharing resources. This feature has shown to enable *-predictability of non-functional qualities of program execution such as execution time, throughput, but also safety and security properties. Using current multicore platforms and operating systems, little if no support for hardware and/or temporal isolation can be established on demand of an application program. By exploiting the fact that resources may be (temporally) claimed exclusively, we were able to show that *-predictability may be enabled on program demand using invasive computing which uses run-to-completion as the default mode of thread execution, partial virtualisation and techniques for memory reconfiguration and bandwidth guarantees on the designed invasible NoC.
Mission III: Beating Run-Time Uncertainties and Run-Time Requirement Enforcement. Not only the interferences caused when sharing resources such as caches, processors and communication links as being the practice today, makes the analysis of non-functional properties hard. The bounds themselves or their variability might be much too large for any practical use. Unfortunately, isolation alone does not help to reduce the remaining uncertainty caused by input (problem size), environment (e.g. temperature), and machine state (e.g., cache, power manager, etc.). Our goal of phase III is therefore to close this missing link for making multicore systems available to be used for the billion dollar market of embedded and cyber-physical IoT products where application programs require the strict or at least loose enforcement of tight non-functional property ranges. Here, through the static analysis of robustness and the automatic generation of verifiable run-time requirement enforcer (RRE) modules (additional code that either locally or globally observes and controls the satisfaction of requirements within prescribed corridors) in combination with run-time requirement monitoring (RRM), we expect to provide the missing link to successfully combine resource awareness and tight predictability of non-functional aspects of program execution on multicore platforms.