Towards predictable execution model on ARM-based heterogeneous platforms

Many today's real-time applications, such as Advanced Driver Assistant Systems (ADAS), demand both high computing power and safety guarantees. High computing power can be easily delivered by, now ubiquitous, multi-core CPUs or by a heterogeneous system with a multi-core CPU and a parallel accelerator such as a GPU. Reaching the required safety level in such a system is by far more difficult because the commercial-of-the-shelf (COTS) high-performance platforms contain many shared resources (e.g. main memory) with arbiters not designed to provide real-time guarantees. A promising approach to address this problem, known as PRedictable Execution Model (PREM), was introduced by Pellizzoni et al. [1]. We are interested in applying PREM to ARM-based heterogeneous platforms, but so far, all PREM-related work has been done on x86 or PowerPC. In this paper, we introduce several building blocks that are needed for implementing PREM on NVIDIA Tegra X1 platform. We propose a modification of the MemGuard tool to be practically usable on ARM platforms. We also analyse a throttling mechanism of Tegra X1 memory controller, that allows controlling memory bandwidth of non-CPU clients such as the GPU. We show that this mechanism can be used to make the execution time of CPU tasks more predictable.

[1]  Premysl Sucha,et al.  Scalable and efficient configuration of time-division multiplexed resources , 2016, J. Syst. Softw..

[2]  Hiren D. Patel,et al.  A framework for scheduling DRAM memory accesses for multi-core mixed-time critical systems , 2015, 21st IEEE Real-Time and Embedded Technology and Applications Symposium.

[3]  Ravi Iyer,et al.  Cache QoS: From concept to reality in the Intel® Xeon® processor E5-2600 v3 product family , 2016, 2016 IEEE International Symposium on High Performance Computer Architecture (HPCA).

[4]  Marco Caccamo,et al.  Light-PREM: Automated software refactoring for predictable execution on COTS embedded systems , 2014, 2014 IEEE 20th International Conference on Embedded and Real-Time Computing Systems and Applications.

[5]  Luca Benini,et al.  GPUguard: Towards supporting a predictable execution model for heterogeneous SoC , 2017, Design, Automation & Test in Europe Conference & Exhibition (DATE), 2017.

[6]  Lui Sha,et al.  MemGuard: Memory bandwidth reservation system for efficient performance isolation in multi-core platforms , 2013, 2013 IEEE 19th Real-Time and Embedded Technology and Applications Symposium (RTAS).

[7]  Lui Sha,et al.  Real-Time Control of I/O COTS Peripherals for Embedded Systems , 2009, 2009 30th IEEE Real-Time Systems Symposium.

[8]  Marco Caccamo,et al.  Real-time cache management framework for multi-core architectures , 2013, 2013 IEEE 19th Real-Time and Embedded Technology and Applications Symposium (RTAS).

[9]  Rodolfo Pellizzoni,et al.  Memory Servers for Multicore Systems , 2016, 2016 IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS).

[10]  Marco Caccamo,et al.  A Predictable Execution Model for COTS-Based Embedded Systems , 2011, 2011 17th IEEE Real-Time and Embedded Technology and Applications Symposium.

[11]  Selma Saidi,et al.  The shift to multicores in real-time and safety-critical systems , 2015, 2015 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS).

[12]  Marco Caccamo,et al.  A Real-Time Scratchpad-Centric OS for Multi-Core Embedded Systems , 2016, 2016 IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS).

[13]  Ulrich Drepper,et al.  What Every Programmer Should Know About Memory , 2007 .