Safety Automotive AUTOSAR goes Multicore – mit Sicherheit

Die AUTOSAR-Kombination: Mulitcore mit Sicherheit
Die AUTOSAR-Kombination: Mulitcore mit Sicherheit

Zur Zeit dominieren zwei Themen die Software-Entwicklung für Fahrzeugsteuergeräte: zum einen das zunehmende Umstellen der Rechnerarchitekturen auf Multicore-Prozessoren und zum anderen die Sicherheitsbetrachtungen nach ISO 26262. Jedes dieser beiden Themen ist schon für sich alleine komplex genug – was ergibt sich da erst aus der Kombination?

Der Hauptgrund für die Einführung von Multicore-Architekturen ist das Erhöhen der Rechnerleistung, ohne die Taktfrequenz anheben zu müssen. Dieses Ziel wird aber nur erreicht, wenn sich ein ausreichender Anteil der Anwendungs-Software parallelisieren lässt. Die klassische Referenz hierzu ist Amdahls Gesetz. Hieraus ergibt sich zum Beispiel für einen Dual-Core-Prozessor und eine Software mit einer Parallelisierbarkeit von 50 Prozent eine maximale Leistungssteigerung von nur 30 Prozent im Vergleich zu einer Single-Core-Architektur. Um eine bestmögliche Rechenleistung zu erreichen, muss der Entwickler beim Verteilen der Software-Module darauf achten, die gemeinsame Ressourcennutzung über Kerngrenzen hinweg zu minimieren.

Bei den Ressourcen handelt es sich um Hardware-Register und – in den meisten Fällen – um Datenbereiche. Die Herausforderung bei der kernübergreifenden Ressourcennutzung ist nicht die Zugriffskoordination, sondern das Vermeiden von Wartezuständen bei konkurrierendem Zugriff auf die gemeinsamen Ressourcen. In so einem Fall geht die unabhängige Datenverarbeitung verloren und der Nutzen der Parallelisierung vermindert sich.

Funktionale Sicherheit nach ISO 26262

Das Berücksichtigen der Anforderungen an die funktionale Sicherheit nach ISO 26262 ist inzwischen fester Bestandteil des Entwicklungsprozesses im Automobilbau. Auf Basis der Gefahren- und Risiko­analyse werden die Anforderungen an die Funktionen eines Steuergeräts bezüglich ihrer Sicherheitsrelevanz bewertet und der passende Automotive Safety Integrity Level (ASIL) wird zugeordnet. Wie wirkt sich das auf eine Multicore-Software-Architektur aus, wenn sicherheitsrelevante Funktionen umzusetzen sind? Vor der Beantwortung dieser Frage ein paar Hinweise zum Lockstep-Konzept für Multicore-Prozessoren, das in vielen Safety-Projekten zum Einsatz kommt.

Lockstep Mode

Beim Lockstep Mode führen zwei Kerne identischen Code aus. Ein unabhängiger Komparator vergleicht die Ergebnisse und erzeugt bei Unterschieden einen Fehler-Trap. Das weitere Vorgehen hängt von der Hardware und dem Sicherheitskonzept des Steuergeräts ab. Die Hardware muss so ausgelegt sein, dass sie nach dem Auftreten des Fehler-Trap einen sicheren Zustand erreicht. Weil beide Kerne identischen Code ausführen, sind außer der Fehlerbehandlung keine Erweiterungen der Software bezüglich Multicore notwendig. Anders formuliert: Auch wenn hier mehrere Kerne zum Einsatz kommen, handelt es sich nicht um eine Multicore-Architektur, die zur Leistungssteigerung beiträgt.

Multicore-Architektur mit verteilter Software

Die Multicore-Architektur lässt sich zur Erhöhung der Rechnerleistung oder bei sicherheitsrelevanten Systemen auch zur parallelen Realisierung von diversitären Algorithmen wie ASIL-Dekompositionen verwenden.

Der Entwickler ordnet die Software-Module gemäß Parallelisierbarkeit und abhängig vom Sicherheitskonzept den in AUTOSAR definierten OS Applications zu. Diese lassen sich den in der ISO 26262 definierten Partitionen gleichsetzen.

Dabei handelt es sich um Bereiche innerhalb eines Steuergerätes, die störungsfrei voneinander ablaufen müssen – Freedom from Interference. In Multicore-Steuergeräten werden die OS Applications den unterschiedlichen Rechnerkernen zugewiesen (Bild 1). Für den Entwickler spielt es keine Rolle, ob das Ziel der Aufteilung die Parallelisierbarkeit oder die Dekomposition ist: Er muss einen störungsfreien Ablauf zwischen den OS Applications herstellen. Das erfordert im Wesentlichen das Überwachen von Laufzeiten und Vermeiden einer fehlerhaften Änderung von sicherheitsrelevanten Speicherinhalten.