Multi-core architectures have received significant interest as thermal and power consumption problems limit further increase of speed in single-cores. In the multi-core research community a considerable amount of work has been done on real-time multi-core scheduling algorithms where it is assumed tasks are independent. However, synchronization of dependent tasks executing on multi-cores has not received as much attention, even though typical real-time systems in practice include tasks that share resources.
In this paper we propose a synchronization protocol for hierarchically scheduledmulti-core systems, and we present a comparison between the presented protocol and existing multi-core synchronization protocols. The presented protocol groups dependent tasks that directly or indirectly share mutually exclusive resources into independent components. Within a component dependent tasks use classical uniprocessor synchronization protocols, such as the Stack-based Resource allocation Protocol. The components are then scheduled on the cores by a global scheduler.
There are two major approaches for scheduling multicore: partitioned and global scheduling. While most existing multi-core synchronization protocols support only one category, the protocol presented in this paper is developed to handle both scheduling approaches. The presented approach is developed to allow for co-execution of existing legacy real-time applications along with new applications, i.e., a legacy application is put into one or more components preserving its own (original) scheduling and synchronization protocols.