Despite the clear market trends towards parallel computing systems, most (if not all) industrial real-time systems are still based on single-core devices. The reason is that real-time systems require solid guarantees be provided about the timing behaviour of the running tasks, completing time-critical activities within specified hard or soft deadlines: single-core embedded systems are easier to analyse, program, and characterize; many efficient real-time scheduling techniques have been implemented into industrial-level Real-Time Operating Systems (RTOS); new application features are easier to add maintaining the existing single-core implementation; memory and communication interferences are easier to bound, profile and control, etc.
Unfortunately, very little performance improvements may be obtained out of modern single-core systems. With a few years delay from their general-purpose counterpart, real-time systems already collected what was possible to collect from single-core processors. This is the reason why all main real-time application developers are in deep need for multi-core solutions that can be applicable to industrial scenarios, with clean programming interfaces, efficient RTOS support, predictable execution models and clear timing guarantees. Without such a technological background, very limited enhancements may be provided to real-time applications requiring a prompt interaction with the environment.
The problem is that it is difficult to provide predictable timing guarantees when multiple cores may contend for shared resources, like memory, buses and I/O devices. A large number of results have been proposed by the real-time research community to address these issues: multi-core scheduling algorithms, schedulability tests, predictable execution models, etc. However, we are not aware of any industrial-level application that brings this wide algorithmic background to an industrial setting. In this project, we intend to bridge this technological gap, selecting the most suitable and practical scheduling techniques from the recent real-time literature, and implementing them on modern embedded multi-core platforms for the embedded market.