Multicore on AUTOSAR - from the idea to series production
Modern cars are highly complex systems consisting of a huge number of mechanical and electrical parts. An observable trend in the automotive industry shows that more and more features and innovations are based on electrics/electronics and therefore on software. Hence the demand of computational resources in the vehicle is growing rapidly. In the consumer PC and server market multi-core processors have become the method of choice to meet the ever increasing demand for computing power.
So why not just use multi-core CPUs in the automotive domain ?
Unfortunately, it is not as simple as that. The application in the automotive domain poses a different set of requirements on software and hardware and the increasing complexity of the electric systems in modern car necessitates the use of sophisticated methods for development and verification. AUTOSAR is a key technology to manage this increasing complexity. On one hand AUTOSAR focuses on a standard software architecture to fulfill requirements such as modularity, scalability, transferability and re-usability. On the other hand it defines a methodology that enables an efficient development of such systems.
We therefore set out to pave the way for the intagration of multi-core devices into the automotive domain by developing suitable software architectures for embedded devices, which were not available at the time. Our main focus was the application in the following scenarios:
- High integration: Integration of many software components with varying requirements from different domains on the same ECU.
- Parallel computing: Improving the performance of computationally intensive algorithms and functions, by resolving sub-problems simultaneously on different cores.
- Safety: Using multi-core CPUs to meet the safety requirements of the system. Multiple calculations of the same function simultaneously on different cores or the independent monitoring of cores are only one of the many use cases in this scenario.
In the following we outline the progress of the multi-core project and the evolution of the employed hardware from its initiation, all the way to series development.
2007: Initial experiments with multiple operating systems and architectures
Test environment: 3-core CPU simulated on FPGA + extended FreeRTOS
We started off in 2007 with preliminary experiments, simulating a 3-core processor on an FPGA and using an extension of Free RTOS as operating system. Concurrently, we investigated IPC concepts for multi-core systems using the cell processor of the PS3. The result were 3 proposals for a generic software architecture for multi-core systems, which we further refined in collaboration with our partners Bosch and Freescale.
2008: Validation of concepts with multi-core OS extensions on an automotive controller
Test environment: Freescale MPC 5516 + early multi-core embedded OS
In 2008 we validated the concepts developed in the previous year by implementing representative code from the powertrain domain. As test environment a dual-core MPC 5516 running a preliminary implementation of a multi-core embedded OS was used. Our experiences were contributed to the specification of the multi-core extensions the the AUTOSAR standard.
2009: Prototypical implementation of the AUTOSAR OS extensions
Test environment: Tricore 1797 Sandwich Board (prototype) + early implementation of AUTOSAR Stack 3.0 with multi-core Features
Simulating multi-core features on a Tricore1797 Sandwich Board, we developed a prototypical implementation of an engine management system as a test-case to validate the newly specified multi-core features of the AUTOSAR standard in 2009. To automate the parallelization of existing C-code the generation of a dependency graph was developed. Further goals of the project were the optimization of the deployment of multi-core software and the investigation of a suitable performance assesment.
2010: Safety concepts for multi-core systems
Test environment: Freescale/STM multi-core prototype (Leopard) + early implementation of AUTOSAR Stack 3.1 with multi-core features
Switching to a real multi-core system with a prototype of the Leopard, the focus of the project in 2010 moved to the development of safety concepts for the integration of software of various domains, such as chassis frame or engine control. We analyzed several hardware and software safety features, e.g. the manual protection unit (MPU) and the corresponding software components, and their application within the AUTOSAR framework. Furthermore, energy efficiency measurements were conducted, which can be safety relevant for instance in the context of the self-sufficient functioning of an airbag controller in the case of a failure of the electric circuitry. Additionally, as part of a diploma thesis, supported by BMW Car IT, load measurements on the basis of real use-cases were conducted.
2011: Multi-core systems in highly integrated scenarios
Test environment: Leopard + AUTOSAR Stack 3.1 with multi-core Features
In 2011 the project turned toward the evaluation of the use of multi-core technology in highly integrated usage scenarios, which poses additional requirements especially in the area of communication. We therefore analyzed the communication paradigms in the AUTOSAR standard for their applicability in multi-core systems and evaluated their impact on the performance. We further extended the performance evaluation towards the hardware and sofware safety features, that were investigated in the previous year. Finally we analyzed real software components and worked out recommendations for their optimization for use in multi-core highly integrated scenarios.
2012: Multicore goes to production...
Building on the experience accumulated in the course of the project, in 2012 we started to develop a software architecture for series production based on the developed AUTOSAR features. Furthermore, as in all our projects, the conservation and the transfer of the gained know how was another major task.