Research topics in this group are specially focused on:
- Application-Oriented System Design: The Application-Oriented System Design method guides domain decomposition towards families of scenario-independent system abstractions that can be reused to build a variety of run-time support systems. Environmental dependencies observed during domain decomposition are separately modeled as scenario aspects, which can be transparently applied to system abstractions with the aid of scenario adapters. The assembling of such software components to produce a functioning system is assisted by component frameworks, which capture elements of reusable software architecture identified in the course of domain engineering. Usability is improved by inflated interfaces, which export whole families of abstractions to users as if they were single macrocomponents, passing the responsability of selecting appropriate family members to the system.
- Operating System Support: We investigate run-time support for both multicore and non-multicore systems in the context of embedded systems. We are particularly interested in the influence of memory contention in embedded real-time multicore applications and memory management in embedded systems. Due to unpredictability caused by the coherence through the memory hierarchy the task of bounding Worst-Case Execution Times (WCET) in these applications is not straightforward. The execution time of an application is affected by the contention for shared memory which can lead to deadline losses.
- Hardware Performance Counters: Hardware Performance Counters (HPCs) are special registers available in the most modern microprocessors through the hardware Performance Monitoring Unit (PMU). HPCs offer support to counting or sampling several micro-architectural events, such as cache misses and instructions counting, in real-time. In multicore systems, for instance, it is possible to count the numbers of snoop requests, last-level cache misses, and evicted cache lines. We are interested in using HPCs to generate run-time information about contention for shared memory in order to provide to the OS a precise view from applications' behavior.
- Cache Partitioning: Shared cache partitioning is the most common method used to address contention and provide real-time guarantees to multicore applications. Partitioning is used to isolate applications or threads workloads that interfere each other and thus increasing predictability. However, in an environment where there is data sharing, a memory partitioning/locking mechanism alone does not solve the problem because threads will access the same data location on the memory hierarchy. We are interested in designing and developing efficient intra-application (among threads of an application) and inter-application (among applications) cache partitioning to be used together with other techniques and thus decrease the influence of memory contention.
- Multicore Real-Time Scheduling: the idea is to use scheduling together with HPCs and memory partitioning techniques to provide real-time guarantees and mitigate the effects of the contention for shared memory.
- Automotive Control Algorithms: current cars have dozens of electronic control algorithms. We are investigating how the RTOS can provide an interface to support these algorithms easily. Also, we want to implement some algorithms in a multicore system to investigate how the contention for shared resources and isolation techniques affect the real-time issues of an automotive control algorithm.
If you want to join us, please refer to available work plans and send us an email.