Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
REDUNDANT PROCESSOR ARCHITECTURE FOR SAFETY-CRITICAL APPLICATIONS
Document Type and Number:
WIPO Patent Application WO/2024/099723
Kind Code:
A1
Abstract:
The invention relates to a computing unit (100) for executing a software-implemented function for a safety-critical application, comprising a first computing module (1) having a first voter (11) and a second computing module (2) having a second voter (12), wherein: the first computing module (1) and the second computing module (2) are each mounted on dedicated integrated circuits and are interconnected via a service layer; the computing unit (100) is configured to execute a specified software-implemented function simultaneously on the first computing module (1) and the second computing module (2) and to share, by means of the service layer, the results of the function executed on the computing modules (1, 2) with the respective other computing module (2); and the relevant voter (11, 12) checks if the results of the functions match.

Inventors:
STOFFEL MARTIN (DE)
Application Number:
PCT/EP2023/079032
Publication Date:
May 16, 2024
Filing Date:
October 18, 2023
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
DAIMLER TRUCK AG (DE)
International Classes:
G06F11/07; G06F11/16; G06F11/18; G06F11/20
Domestic Patent References:
WO2004029737A12004-04-08
Foreign References:
EP3699764A12020-08-26
EP4009173A12022-06-08
US20180370540A12018-12-27
EP2765045A12014-08-13
Download PDF:
Claims:
Patentansprüche Recheneinheit (100) zum Ausführen einer softwareimplementierten Funktion für eine sicherheitskritische Anwendung, aufweisend ein erstes Rechenmodul (1) mit einem ersten Voter (11) und ein zweites Rechenmodul (2) mit einem zweiten Voter (12), wobei das erste Rechenmodul (1) und das zweite Rechenmodul (2) auf jeweils eigenen integrierten Schaltungen aufgebracht sind und durch eine Diensteschicht miteinander verbunden sind, wobei die Recheneinheit (100) dazu ausgeführt ist, eine softwareimplementierte Funktion zeitlich parallel auf dem ersten Rechenmodul (1) und dem zweiten Rechenmodul (2) auszuführen und mittels der Diensteschicht das Ergebnis der auf dem ersten Rechenmodul (1) ausgeführten Funktion an den zweiten Voter (12) und das Ergebnis der auf dem zweiten Rechenmodul (2) ausgeführten Funktion an den ersten Voter (11) zu übermitteln, wobei der erste Voter (11) dazu ausgeführt ist, das Ergebnis der auf dem ersten Rechenmodul (1) ausgeführten Funktion mit dem Ergebnis der auf dem zweiten Rechenmodul (2) ausgeführten Funktion auf Übereinstimmung zu überprüfen, und wobei der zweite Voter (12) dazu ausgeführt ist, das Ergebnis der auf dem zweiten Rechenmodul (2) ausgeführten Funktion mit dem Ergebnis der auf dem ersten Rechenmodul (1) ausgeführten Funktion auf Übereinstimmung zu überprüfen. Recheneinheit (100) nach Anspruch 1, wobei die Recheneinheit (100) dazu ausgeführt ist, bei durch den ersten Voter (11) erkannter fehlender Übereinstimmung oder bei durch den zweiten Voter (12) erkannter fehlender Übereinstimmung ein Fehlersignal zu erzeugen. Recheneinheit (100) nach einem der vorhergehenden Ansprüche, wobei der erste Voter (11) dazu ausgeführt ist, sein Ergebnis der Überprüfung auf Übereinstimmung an den zweiten Voter (12) über die Diensteschicht zu übermitteln, und wobei der zweite Voter (12) dazu ausgeführt ist, sein Ergebnis der Überprüfung auf Übereinstimmung an den ersten Voter (11) über die Diensteschicht zu übermitteln, wobei der erste Voter (11) dazu ausgeführt ist, das Ergebnis der Überprüfung auf Übereinstimmung des ersten Voters (11) mit dem Ergebnis der Überprüfung auf Übereinstimmung des zweiten Voters (12) auf Konsistenz hin zu vergleichen, wobei der zweite Voter (12) dazu ausgeführt ist, das Ergebnis der Überprüfung auf Übereinstimmung des zweiten Voters (12) mit dem Ergebnis der Überprüfung auf Übereinstimmung des ersten Voters (11) auf Konsistenz hin zu vergleichen, wobei die Recheneinheit (100) dazu ausgeführt ist, bei vom ersten Voter (11) oder vom zweiten Voter (12) erkannter fehlender Konsistenz ein Fehlersignal zu erzeugen. Recheneinheit (100) nach einem der vorhergehenden Ansprüche, wobei die Recheneinheit (100) dazu ausgeführt ist, nur das erste Rechenmodul (1) und das zweite Rechenmodul (2) zur parallelen Ausführung der Funktion zu verwenden, solange kein Fehlersignal vorliegt. Recheneinheit (100) nach einem der Ansprüche 2 bis 4, wobei die Recheneinheit (100) ein drittes Rechenmodul (3) aufweist und dazu ausgeführt ist, nur nach erzeugtem Fehlersignal die Ausführung der softwareimplementierten Funktion auf dem dritten Rechenmodul (3) zu aktivieren. Recheneinheit (100) nach Anspruch 5, wobei das dritte Rechenmodul (3) einen dritten Voter (13) aufweist, wobei das erste Rechenmodul (1) dazu ausgeführt ist, mittels der Diensteschicht das Ergebnis der auf dem ersten Rechenmodul (1) ausgeführten Funktion an den dritten Voter (13) zu übermitteln, wobei das zweite Rechenmodul (2) dazu ausgeführt ist, mittels der Diensteschicht das Ergebnis der auf dem zweiten Rechenmodul (2) ausgeführten Funktion an den dritten Voter (13) zu übermitteln, wobei der dritte Voter (13) dazu ausgeführt ist, die Ergebnisse der auf dem ersten Rechenmodul (1) ausgeführten Funktion und der auf dem zweiten Rechenmodul (2) ausgeführten Funktion und der auf dem dritten Rechenmodul (3) ausgeführten Funktion auf jeweilige Übereinstimmung zu überprüfen. Recheneinheit (100) nach Anspruch 6, wobei jedes der Rechenmodule (1 ,2,3) dazu ausgeführt ist, sein jeweiliges Ergebnis der Ausführung der Funktion an alle jeweils anderen Rechenmodule über die Diensteschicht zu übermitteln, wobei jeder Voter (11 ,12,13) der Rechenmodule (1 ,2,3) dazu ausgeführt ist, die Ergebnisse aller Rechenmodule (1 ,2,3) auf Übereinstimmung zu vergleichen. Recheneinheit (100) nach Anspruch 7, wobei jeder der Voter (11,12,13) dazu ausgeführt ist, sein jeweiliges Ergebnis der Überprüfung auf Übereinstimmung an alle jeweiligen übrigen Voter über die Diensteschicht zu übermitteln, wobei die Recheneinheit (100) dazu ausgeführt ist, durch Ausführung einer Mehrheitsfunktion ein übereinstimmendes Ergebnis von Ausführungen der Funktion zu verwenden. Recheneinheit (100) nach einem der vorhergehenden Ansprüche, weiterhin aufweisend einen Orchestrator, wobei der Orchestrator dazu ausgeführt ist, dasjenige Rechenmodul mit einer fehlerhaften Ausführung der Funktion zu identifizieren und einen Wiederherstellungsversuch der korrekten Ausführung der Funktion am identifizierten Rechenmodul auszuführen. Fahrzeug mit einer Recheneinheit (100) nach einem der vorhergehenden Ansprüche.
Description:
Redundante Prozessorarchitektur für sicherheitskritische Anwendungen

Die Erfindung betrifft eine Recheneinheit zum Ausführen einer softwareimplementierten Funktion für eine sicherheitskritische Anwendung, sowie ein Fahrzeug mit einer solchen Recheneinheit.

Zugunsten erhöhter Sicherheit wird bei der Ausführung von Computerprogrammen in sicherheitskritischen Anwendungen typischerweise Hardware-Redundanz in der Programmausführung gefordert, um Fehler zu erkennen und mit fehlerfrei arbeitenden Ressourcen einen sicheren Betrieb bei der Ausführung des Computerprogramms aufrechterhalten zu können. Insbesondere das Betreiben von autonomen Fahrzeugen mit Hilfe eines implementierten Fahrsteuerungssystems erfordert eine Systemauslegung nach dem sogenannten "Fail-Operational" Prinzip. Das bedeutet, im Fahrsteuerungssystem müssen Fehler erkannt werden und bei Erkennung darauf reagiert werden - idealerweise, während uneingeschränkt die Funktionalität des Fahrsteuerungssystems aufrechterhalten wird. System mit Fail-Operational Systemarchitektur werden typischerweise durch das sogenannte "2 out of 3" Konzept (kurz "2oo3"-Konzept) ermöglicht, welches bedeutet, dass eine implementierte Funktion auf drei Kanälen parallel (und damit redundant) ausgeführt wird. Die Ergebnisse der Ausführungen in den drei Kanälen werden über sogenannte "Voter" verglichen, die zur Kontrolle dienen, ob die Ausführung in einem der Kanäle fehlerhaft ist. Derzeit existierende Fahrsteuerungssysteme sind typischerweise nach dem "Fail-Degraded" Konzept ausgelegt. Das bedeutet, dass Fehler erkannt werden und das Fahrzeug seine Funktionalität durch einen sogenannten Back-Up Pfad in reduzierter Form aufrecht erhält. Typischerweise findet die Fehlererkennung durch Prozessieren einer Funktion auf zwei Pfaden (jeweils ein Kern auf einem Prozessor) statt, deren Ergebnisse über Voter nach jedem Berechnungsschritt verglichen werden. Die Voter werden dabei typischerweise auf demselben Prozessor betrieben oder auf einem zweiten Prozessor mit höherem Safety Level (ASIL-D). Diese Thematiken werden insbesondere in folgenden Veröffentlichungen aus dem Stand der Technik diskutiert: In der Dissertation "B. Sari, Fail-operational Safety Architecture for ADAS/AD Systems and a Model-driven Approach for Dependent Failure Analysis", erschienen in der "Wissenschaftliche[n] Reihe Fahrzeugtechnik Universität Stuttgart" unter ISBN-13: 978- 3658294212, wird das 2oo3 Prinzip auf Multicoreebene beschrieben, d.h. jede Funktion bekommt drei unabhängige Kerne auf einem Hochleistungsprozessor zugewiesen.

In der Veröffentlichung "F. K. Bapp, T. Dörr, T. Sandmann, F. Schade, and J. Becker, 'Towards Fail-Operational Systems on Controller Level Using Heterogeneous Multicore SoC Architectures and Hardware Support', in SAE Technical Paper Series, 2018" wird außerdem ein Mechanismus beschrieben, der auf einem Lockstep-Prozessor (Prozessor mit mehreren Kernen deren Berechnungsergebnisse permanent verglichen werden) Funktionen parallel betreibt und im Fehlerfall in einen degradierten Modus geht.

In "E-Gas Working Group, 'Standardized E-Gas Monitoring Concept for Gasoline and Diesel Engine Control Units: Version 6.0' " wird ferner das in der Automobilindustrie etablierte Egas Monitoring Concept vorgestellt. Es sieht vor, das System in einen degradierten Modus zu bringen, sollte ein Fehler erkannt werden.

Die EP 2 765 045 A1 betrifft darüberhinaus eine Schaltung zur Steuerung eines Beschleunigungs-, Brems- und Lenksystems eines Fahrzeugs mit mindestens zwei separaten Motoren zur Betätigung des Beschleunigungs- und Bremssystems und mindestens zwei separaten Motoren zur Betätigung des Lenksystems, und mit mindestens einer elektronischen Kontrolleinheit zur Ansteuerung der mindestens zwei separaten Motoren zur Betätigung des Beschleunigungs- und Bremssystems sowie der mindestens zwei separaten Motoren zur Betätigung des Lenksystems, wobei die mindestens eine Kontrolleinheit drei identische CPUs und einen programmierbaren Logikbaustein aufweist, wobei jede der CPUs in Abhängigkeit von Eingangssteuersignalen sowie von Sensorsignalen der Motoren Ansteuersignale für die Motoren erzeugt und an den programmierbaren Logikbaustein weiterleitet, der abhängig von seiner Programmierung die Ansteuersignale einer der CPUs an die Motoren weiterleitet.

Somit werden in der EP 2 765 045 A1 drei Kanäle genutzt, um einen eventuell fehlerbehafteten Kanal zu überstimmen. Die Programmable Logic wird benutzt, um nur die korrekten Signale an die Aktoren weiterzugeben. Dies entspricht einer Umsetzung des Tripple Modular Redundancy Concepts und birgt den Nachteil, permanent drei Kanäle gleichzeitig zu betreiben, sowie einen zusätzlichen Chip zur Entscheidungsarbitrierung implementiert zu haben. Ferner ist nachteilig, dass die Nutzung dreier unabhängiger Kanäle ebenfalls bedeutet, dass alle Komponenten, die hierfür notwendig sind, dreifach vorliegen. Dies führt zu hohen Massen, sowie hohem Leistungsbedarf und erheblichen Kosten.

Aufgabe der Erfindung ist es, die Ausführung von softwareimplementierten Funktionen für sicherheitskritische Anwendungen effizienter zu gestalten.

Die Erfindung ergibt sich aus den Merkmalen der unabhängigen Ansprüche. Vorteilhafte Weiterbildungen und Ausgestaltungen sind Gegenstand der abhängigen Ansprüche.

Ein erster Aspekt der Erfindung betrifft eine Recheneinheit zum Ausführen einer softwareimplementierten Funktion für eine sicherheitskritische Anwendung, aufweisend ein erstes Rechenmodul und ein zweites Rechenmodul, wobei das erste Rechenmodul und das zweite Rechenmodul auf jeweils eigenen integrierten Schaltungen aufgebracht sind und durch eine Diensteschicht miteinander verbunden sind, wobei das erste Rechenmodul einen ersten Voter und das zweite Rechenmodul einen zweiten Voter aufweist, wobei die Recheneinheit dazu ausgeführt ist, eine vorgegebene softwareimplementierte Funktion zeitlich parallel auf dem ersten Rechenmodul und dem zweiten Rechenmodul auszuführen und mittels der Diensteschicht das Ergebnis der auf dem ersten Rechenmodul ausgeführten Funktion an den zweiten Voter und das Ergebnis der auf dem zweiten Rechenmodul ausgeführten Funktion an den ersten Voter zu übermitteln, wobei der erste Voter dazu ausgeführt ist, das Ergebnis der auf dem ersten Rechenmodul ausgeführten Funktion mit dem Ergebnis der auf dem zweiten Rechenmodul ausgeführten Funktion auf Übereinstimmung zu überprüfen, und wobei der zweite Voter dazu ausgeführt ist, das Ergebnis der auf dem zweiten Rechenmodul ausgeführten Funktion mit dem Ergebnis der auf dem ersten Rechenmodul ausgeführten Funktion auf Übereinstimmung zu überprüfen.

Die Recheneinheit ist dabei insbesondere dazu ausgeführt, nur das erste Rechenmodul und das zweite Rechenmodul (also kein drittes Rechenmodul) zur parallelen Ausführung der Funktion zu verwenden, solange kein Fehlersignal vorliegt.

Dass das erste Rechenmodul und das zweite Rechenmodul auf jeweils eigenen integrierten Schaltungen aufgebracht sind, drückt aus, dass es sich bei dem ersten Rechenmodul und dem zweiten Rechenmodul nicht um jeweilige Kerne eines Mehrkernprozessors handelt, sondern um Rechenmodule, insbesondere Prozessoren, die ihre eigenen Chips, d. h. eigene integrierte Schaltungen aufweisen. Prinzipiell könnte demnach sowohl das erste Rechenmodul als auch das zweite Rechenmodul jeweils alleine und damit ohne die Hilfe des jeweils anderen Rechenmoduls die Funktion unter Erhalt des vollständigen gewünschten Ergebnisses ausführen, dies wäre jedoch nicht für eine sicherheitskritische Anwendung ausreichend, da hierfür eine redundante Ausführung der Funktion benötigt wird. Während demnach bei Mehrkernprozessoren es möglich ist, eine auszuführende Funktion redundant auf mehreren Kernen des Mehrkernprozessors gleichzeitig ausführen zu lassen, werden gemäß dem ersten Aspekt der Erfindung anstatt von mehreren Kernen eines Mehrkernprozessors mehrere Rechenmodule parallel verwendet.

Ein solches Rechenmodul ist insbesondere ein Steuergerät, besonders bevorzugt ein Steuergerät eines Fahrzeugs, auch genannt eine ECU eines Fahrzeugs, wobei 'ECU' die Abkürzung für "Electronic Control Unit" ist.

Bevorzugt ist die Ausführung der softwareimplementierten Funktion zyklisch ausgestaltet, d. h. dass ein Algorithmus in bestimmten Zeitabschnitten wiederholt ausgeführt wird, wie es beispielsweise in der Regelungstechnik üblich ist, um einen aktuellen Eingangswert von Sensoren mit aktuellen Sollwerten zu vergleichen und in jedem der Zeitschritte einen Signalwert als Stellgröße im Sinne des Regelungsausgangs zu erzeugen. Werden von beiden Votern übereinstimmende Ergebnisse der Ausführungen auf dem ersten Rechenmodul und dem zweiten Rechenmodul nach Beendigung eines jeweiligen Zeitschritts erkannt, kann die Ausführung des Algorithmus im sich anschließenden Zeitschrift wiederholt werden. Dies entspricht dem Normalfall, d. h. der fehlerfreien Ausführung der Funktion über längere Zeiträume und führt typischerweise zu einer sehr großen Zahl von Iterationen in der Ausführung der softwareimplementierten Funktion, beispielsweise in Zeitschriften von 1 ms oder 10 ms über eine Fahrtdauer von 3 Stunden, wenn es sich bei der Recheneinheit um ein Fahrsteuerungssystem eines automatisierten Fahrzeugs handelt. Nur dann, wenn das Fehlersignal erzeugt wird, nachdem von zumindest einem der Voter eine fehlende Übereinstimmung bzw. eine fehlende Konsistenz in den Ergebnissen der Vergleiche der Übereinstimmung festgestellt wurde, kann die reguläre Ausführung der Funktion in paralleler Weise auf dem ersten Rechenmodul und im zweiten Rechenmodul nicht länger zuverlässig garantiert werden, sodass darauf reagiert werden muss. Eine solche Reaktion muss insbesondere bei einem autonomen Fahrzeug automatisch erfolgen. Die Diensteschicht wird auch "Middleware" genannt, dass sie typischerweise das Bindeglied in einer "Client-Server" Architektur darstellt. Diese Middleware dient dem Austausch der Daten zwischen den Votern und wird bevorzugt über kabelgebundenes Ethernet realisiert. Entsprechende Abschirmung der Kabel gegenüber elektromagnetischen Einflüssen ist vorteilhaft vorzusehen, insbesondere wenn elektrisch leitfähige Kabel anstelle von Lichtleitern verwendet werden.

Die Recheneinheit als Ganzes dient damit zum Ausführen einer softwareimplementierten Funktion. Softwareimplementiert heißt in diesem Zusammenhang, dass ein vorab definiertes und abgespeichertes Computerprogramm, wie beispielsweise ein zu Binärcode kompilierter C-Code, auf einem Prozessor ausgeführt wird, und die im Computerprogramm definierten algorithmischen Schritte mit ihren entsprechenden Berechnungen ausgeführt werden. Während ein solcher Vorgang per Definition standardmäßig auf jedem Heimanwender-Rechner erfolgt, zeichnet sich die Recheneinheit besonders dadurch aus, dass sie sich durch ihre Architektur und Konfiguration für sicherheitskritische Anwendungen eignet. Solche sicherheitskritischen Anwendungen führen im Gegensatz zu Anwendungen für den Heimanwender zu einer erhöhten erforderten Zuverlässigkeit, da beim Scheitern einer korrekten Ausführung der gewünschten Funktion mit negativen Konsequenzen zu rechnen ist, die insbesondere für Gesundheit und Leben von Menschen eine Gefahr darstellen oder Sachschäden in diesem Fall zu befürchten sind.

Indem ein erstes Rechenmodul und ein zweites Rechenmodul vorhanden ist, und auf beiden die gewünschte Funktion zeitlich parallel ausgeführt wird, kann bei der fehlerbehafteten Ausführung der Funktion auf einem der Rechenmodule erkannt werden, dass zumindest eines der Rechenmodul fehlerhafte Berechnungen ausführt. Erfindungsgemäß wird jedoch die gewünschte Funktion grundsätzlich nur zweifach parallel ausgeführt, und nicht dreifach, wie aus dem oben genannten Stand der Technik gelehrt wird. Trotzdem wird eine vollwertige "Fail-Operational" Systemarchitektur bei minimaler Anzahl an redundanten Komponenten erhalten.

Es ist damit eine vorteilhafte Wirkung der Erfindung, dass die notwendige Anzahl an Komponenten minimiert wird, während gleichzeitig eine Fail-Operational Systemarchitektur erreicht wird. Insbesondere die im Bezug auf die eingangs erwähnte EP 2 765 045 A1 genannten Nachteile werden hiermit vermieden. Sowohl die Funktionen, als auch die Voter laufen auf zwei verteilten Rechenmodulen, welche durch die Diensteschicht, bevorzugt via Ethernet, miteinander verbunden sind. Somit kann eine separate Entscheidungslogik einspart werden, da auch das Voting redundant ausgeführt wird. Neben dem Entfall der Entscheidungslogik ist der zweite große Vorteil der Erfindung gegenüber EP 2 765 045 A1 die effizientere Skalierbarkeit: Wenn Rechenmodule wie in der Automobiltechnik verwendete ECUs an ein Auslastungsmaximum geraten, kann, durch Hinzunahme zweier neuer ECUs (durch einfaches Verbinden über Ethernet), die Kapazität verdoppelt werden. Die CPUs in der EP 2 765 045 A1 lassen sich nicht skalieren, da sich diese auf einem Schaltkreis befinden. Die EP 2 765 045 A1 brauchte drüberhinaus drei zusätzliche CPUs und eine separate Entscheidungslogik für einen Skalierungsschritt.

Gemäß einer vorteilhaften Ausführungsform ist die Recheneinheit dazu ausgeführt, bei durch den ersten Voter erkannter fehlender Übereinstimmung oder bei durch den zweiten Voter erkannter fehlender Übereinstimmung ein Fehlersignal zu erzeugen.

Gemäß einer weiteren vorteilhaften Ausführungsform ist der erste Voter dazu ausgeführt, sein Ergebnis der Überprüfung auf Übereinstimmung an den zweiten Voter über die Diensteschicht zu übermitteln, und wobei der zweite Voter dazu ausgeführt ist, sein Ergebnis der Überprüfung auf Übereinstimmung an den ersten Voter über die Diensteschicht zu übermitteln, wobei der erste Voter dazu ausgeführt ist, das Ergebnis der Überprüfung auf Übereinstimmung des ersten Voters mit dem Ergebnis der Überprüfung auf Übereinstimmung des zweiten Voters auf Konsistenz hin zu vergleichen, wobei der zweite Voter dazu ausgeführt ist, das Ergebnis der Überprüfung auf Übereinstimmung des zweiten Voters mit dem Ergebnis der Überprüfung auf Übereinstimmung des ersten Voters auf Konsistenz hin zu vergleichen, wobei die Recheneinheit dazu ausgeführt ist, bei durch den ersten Voter erkannter fehlender Konsistenz oder bei durch den zweiten Voter erkannter fehlender Konsistenz ein Fehlersignal zu erzeugen.

Demnach überprüft nicht nur jeder Voter das Ergebnis der Ausführung der Funktion jedes Rechenmoduls durch Vergleich, sondern überprüft auch sein eigenes Ergebnis der Überprüfung und das Ergebnis der Überprüfung des anderen Voters auf Konsistenz der Ergebnisse der Voter selbst. Somit werden dezentrale Voter- Überprüfungen geschaffen, und eine separate Einheit zum Vergleichen der Voter- Ergebnisse entfällt vorteilhaft.

Gemäß einer weiteren vorteilhaften Ausführungsform erfolgen Daten-Übertragungen über die Diensteschicht über Ethernet. Gemäß einer weiteren vorteilhaften Ausführungsform weist die Recheneinheit ein drittes Rechenmodul auf und ist dazu ausgeführt, nur nach erzeugtem Fehlersignal die Ausführung der softwareimplementierten Funktion auf dem dritten Rechenmodul zu aktivieren.

Das dritte Rechenmodul wird vorteilhaft erst dann zur Ausführung der Funktion angesteuert, wenn das Fehlersignal erzeugt wurde, insbesondere durch einen Vergleich der Ergebnisse des ersten und des zweiten Rechenmoduls mit negativem Ausgang oder durch eine erkannte Inkonsistenz der Voter Ergebnisse des ersten und zweiten Voters. Vorteilhaft ist das dritte Rechenmodul damit nicht dauerhaft im Einsatz, sondern nur wenn in der Einheit aus erstem und zweitem Rechenmodul ein Fehler festgestellt wird. Dies ist energiesparender und erlaubt vorteilhaft leichter eine Skalierung über mehrere Recheneinheiten, da beispielsweise nur ein einziges drittes Rechenmodul über eine Vielzahl von Paaren von ersten und zweiten Rechenmodulen in einem System wie einem Fahrzeug verbaut werden muss, da die dritte Recheneinheit nur ein Back-up für mehrere redundante Rechenmodule dann darstellen kann. Das dritte Rechenmodul und damit ein dritter Kanal wird in anderen Worten on-demand bevorzugt über Ethernet und eine service-orientierte Middleware, die Diensteschicht, nur genau dann aufgerufen, wenn die beiden ersten in einem Kalkulationsschritt nicht übereinstimmen. Auch erlaubt der erfindungsgemäße Ansatz, den fehlerhaften Kanal während der Laufzeit zu reparieren.

Gemäß einer weiteren vorteilhaften Ausführungsform weist das dritte Rechenmodul einen dritten Voter auf, wobei das erste Rechenmodul dazu ausgeführt ist, mittels der Diensteschicht das Ergebnis der auf dem ersten Rechenmodul ausgeführten Funktion an den dritten Voter zu übermitteln, wobei das zweite Rechenmodul dazu ausgeführt ist, mittels der Diensteschicht das Ergebnis der auf dem zweiten Rechenmodul ausgeführten Funktion an den dritten Voter zu übermitteln, wobei der dritte Voter dazu ausgeführt ist, die Ergebnisse der auf dem ersten Rechenmodul ausgeführten Funktion und der auf dem zweiten Rechenmodul ausgeführten Funktion und der auf dem dritten Rechenmodul ausgeführten Funktion auf jeweilige Übereinstimmung zu überprüfen.

Gemäß einer weiteren vorteilhaften Ausführungsform ist jedes der Rechenmodule dazu ausgeführt, sein jeweiliges Ergebnis der Ausführung der Funktion an alle jeweils anderen Rechenmodule über die Diensteschicht zu übermitteln, wobei jeder Voter der Rechenmodule dazu ausgeführt ist, die Ergebnisse aller Rechenmodule auf Übereinstimmung zu vergleichen. Dadurch wird vorteilhaft das System on-demand auf ein "2oo3" Niveau gehoben und der fehlerhafte Pfad kann erkannt werden.

Gemäß einer weiteren vorteilhaften Ausführungsform ist jeder der Voter dazu ausgeführt, sein jeweiliges Ergebnis der Überprüfung auf Übereinstimmung an alle jeweiligen übrigen Voter über die Diensteschicht zu übermitteln, wobei die Recheneinheit dazu ausgeführt ist, durch Ausführung einer Mehrheitsfunktion ein übereinstimmendes Ergebnis von Ausführungen der Funktion zu verwenden.

Durch die bedingte Hinzunahme des dritten Rechenmoduls und dessen vollständige und analoge Anbindung an das erste und zweite Rechenmodul (analog wie diese untereinander verbunden sind), kann auch das Prinzip der Vergleiche der Voterergebnisse übernommen werden. Es liegt somit ein vollständiges "2oo3" System vor, das fehlerhafte Rechenmodul kann durch eine Mehrheitsfunktion erkannt werden. Während im Stand der Technik für eine Mehrheitsfunktion häufig ein sogenanntes "majority gate" implementiert wird, ist durch die vollständige Übermittlung von Daten über die Ergebnisse der ausgeführten Funktion an alle anderen Rechenmodule sowie der Austausch der Daten über die Ergebnisse der Voter untereinander eine zuverlässige Diagnose möglich, welches der Rechenmodule (und unter Umständen welcher der Voter) eine fehlerhafte Ausführung vollzieht.

Gemäß einer weiteren vorteilhaften Ausführungsform weist das Recheneinheit weiterhin einen Orchestrator auf, wobei der Orchestrator dazu ausgeführt ist, dasjenige Rechenmodul mit einer fehlerhaften Ausführung der Funktion zu identifizieren und einen Wiederherstellungsversuch der korrekten Ausführung der Funktion am identifizierten Rechenmodul auszuführen.

Der Wiederherstellungsversuch sieht einen Schritt vor, einen sogenannten "Recovery"- Schritt, den fehlerhaften Pfad zu beheben, indem die Funktion auf dem identifizierten fehlerhaften Rechenmodul geschlossen wird, d. h. beendet wird. Dem folgt ein Neustart des ganzen Rechenmoduls oder wahlweise ein Neustart der Ausführung der Funktion, indem der entsprechende Prozess neu gestartet wird, der für die Ausführung der Funktion zuständig ist. Idealerweise befindet sich nach diesem Recovery-Prozess das System wieder in seinem fehlerfreien Ursprungszustand, wodurch vorteilhaft die Verfügbarkeit der Recheneinheit maximiert wird.

Ein weiterer Aspekt der Erfindung betrifft ein Fahrzeug mit einer Recheneinheit wie oben und im Folgenden beschrieben.

Vorteile und bevorzugte Weiterbildungen des vorgeschlagenen Fahrzeugs ergeben sich durch eine analoge und sinngemäße Übertragung der im Zusammenhang mit der vorgeschlagenen Recheneinheit vorstehend gemachten Ausführungen.

Weitere Vorteile, Merkmale und Einzelheiten ergeben sich aus der nachfolgenden Beschreibung, in der - gegebenenfalls unter Bezug auf die Zeichnung - zumindest ein Ausführungsbeispiel im Einzelnen beschrieben ist. Gleiche, ähnliche und/oder funktionsgleiche Teile sind mit gleichen Bezugszeichen versehen.

Es zeigen:

Fig. 1 : Grundelemente der Recheneinheit gemäß einem Ausführungsbeispiel der Erfindung.

Fig. 2: Die Recheneinheit mit ihren vollständigen Elementen aufbauend auf dem Ausführungsbeispiel der Fig. 1.

Die Darstellungen in den Figuren sind schematisch und nicht maßstäblich.

Fig. 1 zeigt eine Recheneinheit 100 zum Ausführen einer softwareimplementierten Funktion für eine sicherheitskritische Anwendung. Die Recheneinheit 100 weist ein erstes Rechenmodul 1 und ein zweites Rechenmodul 2 auf, welche beide dieselben Eingangssignale, symbolisiert durch den verzweigten Eingangspfad der oberen Bildhälfte, erhalten. Sowohl das erste Rechenmodul 1 als auch das zweite Rechenmodul 2 können Steuergeräte, sogenannte ECUs, eines Fahrzeugs sein. Die Rechenmodule 1 ,2 sind jeweils auf ihren eigenen, voneinander unabhängigen integrierten Schaltungen, auch genannt Chips, angeordnet. Jedes der Rechenmodule 1 ,2 stellt damit eine prinzipiell eigene CPU (Abkürzung für "Central Processing Unit") dar, anstatt nur ein bestimmter Kern eines Mehrkernprozessors zu sein. Die auszuführende Funktion sei in diesem Beispiel eine Applikation, die in einem von mehreren Containern (als Container auf dem Gebiet der Software wird eine abtrennbare Umgebung verstanden, die in der Rolle einer Virtualisierung für eine Anwendung bestimmte und konstante Randbedingungen ermöglicht) abläuft. Die Container wiederum werden mithilfe eines Betriebssystems ausgeführt, welches sich speziell für eingebettete Systeme eignet, um auf einem solchen Steuergerät, wie sie die Rechenmodule jeweils sind, ausgeführt zu werden. Eine Diensteschicht, eine sogenannte Middleware, stellt das architektonische Bindeglied zwischen den Rechenmodueln 1 ,2 dar. Über eine kabelbasierte Ethernet Datenverbindung ist die Middleware dazu in der Lage, koordiniert zwischen dem ersten Rechenmodul 1 und dem zweiten Rechenmodul 2 Daten auszutauschen, insbesondere das Ergebnis der auf einem Rechenmodul ausgeführten Funktion an das andere Rechenmodul zu übermitteln. Das jeweilige Berechnungsergebnis wird somit mittels Ethernet (durch die Middleware) zum jeweils anderen Steuergerät gesendet. Somit haben die Voter 11,12 auf beiden Steuergeräten 1,2 sowohl das Ergebnis der eigenen Berechnung, als auch das des anderen Steuergerätes vorliegen. Wird nun eine solche vorgegebene softwareimplementierte Funktion zeitlich parallel auf dem ersten Rechenmodul 1 und dem zweiten Rechenmodul 2 ausgeführt und mittels der Diensteschicht das Ergebnis der auf dem ersten Rechenmodul 1 ausgeführten Funktion an den zweiten Voter 12 und das Ergebnis der auf dem zweiten Rechenmodul 2 ausgeführten Funktion an den ersten Voter 11 übermittelt, kann vom ersten Voter 11 das Ergebnis der auf dem ersten Rechenmodul 1 ausgeführten Funktion mit dem Ergebnis der auf dem zweiten Rechenmodul 2 ausgeführten Funktion auf Übereinstimmung überprüft werden, und vom zweiten Voter 12 das Ergebnis der auf dem zweiten Rechenmodul 2 ausgeführten Funktion mit dem Ergebnis der auf dem ersten Rechenmodul 1 ausgeführten Funktion auf Übereinstimmung überprüft werden. Der erste Voter 11 übermittelt außerdem sein Ergebnis der Überprüfung auf Übereinstimmung an den zweiten Voter 12 über die Diensteschicht, und der zweite Voter 12 übermittelt sein Ergebnis der Überprüfung auf Übereinstimmung an den ersten Voter 11 über die Diensteschicht. Damit kann der erste Voter 11 das Ergebnis der Überprüfung auf Übereinstimmung des ersten Voters 11 mit dem Ergebnis der Überprüfung auf Übereinstimmung des zweiten Voters 12 auf Konsistenz hin vergleichen. Analog dazu vergleicht der zweite Voter 12 das Ergebnis der Überprüfung auf Übereinstimmung des ersten Voters 11 mit dem Ergebnis der Überprüfung auf Übereinstimmung des zweiten Voters 12 auf Konsistenz hin. Nur so lange also, wie der erste und der zweite Voter 11,12 beide feststellen, dass von dem ersten Rechenmodul 1 und von dem zweiten

Rechenmodul 2 übereinstimmende Ergebnisse der Ausführung der Funktion erzielen, wird kein Fehlersignal erzeugt. Die Aufgabe eines jeweiligen Voters 11,12 ist es daher nicht nur, die Ergebnisse des ersten Rechenmoduls 1 und des zweiten Rechenmoduls 2 zu vergleichen, sondern auch das Resultat dieses Vergleichs des eigenen Voters mit dem Resultat des Vergleichs mit dem anderen Voter zu vergleichen. Ein jeweiliger der Voter 11,12 überprüft damit die Ausführung der Rechenmodule sowie die konsistente Ergebnis- Bestimmung zwischen den beiden Votern 11 ,12. Liegt keine Konsistenz vor, wird ein Fehlersignal von der Recheneinheit 100 erzeugt. In diesem Fall der Erzeugung des Fehlersignals, und nur in diesem Fall, wird davon abgewichen, Redundanz durch die lediglich zweifache parallele Ausführung der Funktion zu schaffen, und es wird in diesem Fall die Ausführung der Funktion auf einem dritten Rechenmodul 3 gestartet. Weitere Details hierzu sind in der Fig. 2 dargestellt.

Fig. 2 zeigt die vollständige Architektur der Recheneinheit 100, die den in der Fig. 1 beschriebenen Teil damit mitumfasst. Zusätzlich ist hier jedoch das dritte Rechenmodul 3 mit seinem dritten Voter 13 dargestellt, wobei das dritte Rechenmodul 3 nur dann für die zum ersten Rechenmodul 1 und zum zweiten Rechenmodul 2 parallele Ausführung herangezogen wird, wenn das Fehlersignal erzeugt wird, wie in Fig. 1 beschrieben. Mittels der Diensteschicht wird von jedem der Rechenmodule 1 ,2,3 dann sein jeweiliges Ergebnis der Ausführung der Funktion an alle jeweils anderen Rechenmodule übermittelt, und jeder der Voter 11,12,13 vergleicht die Ergebnisse aller Rechenmodule 1 ,2,3 auf Übereinstimmung. Jeder der Voter 11,12,13 übermittelt wiederum sein jeweiliges Ergebnis der Überprüfung auf Übereinstimmung an alle jeweiligen übrigen Voter über die Diensteschicht, und die Recheneinheit 100 ist dann dazu in der Lage, durch Ausführung einer Mehrheitsfunktion ein übereinstimmendes Ergebnis von Ausführungen der Funktion zu verwenden. Somit ist es möglich, dasjenige der Rechenmodule 1,2,3 zu identifizieren, welches eine fehlerhafte Ausführung der Funktion durchführt. In einem Recovery Prozess der Recheneinheit 100 kann damit versucht werden, durch Neustart des fehlerhaften Rechenmoduls einen einwandfreien Betrieb der Ausführung der Funktion auf diesem identifizierten Rechenmodul wieder herzustellen, und bei Scheitern der Wiederherstellung dieses abzuschalten und durch ein verbleibendes Rechenmodul mit fehlerfreiem Betrieb zu ersetzen, sodass die zweifach redundante Ausführung der Funktion weiter gewährleistet werden kann.

Obwohl die Erfindung im Detail durch bevorzugte Ausführungsbeispiele näher illustriert und erläutert wurde, so ist die Erfindung nicht durch die offenbarten Beispiele eingeschränkt und andere Variationen können vom Fachmann hieraus abgeleitet werden, ohne den Schutzumfang der Erfindung zu verlassen. Es ist daher klar, dass eine Vielzahl von Variationsmöglichkeiten existiert. Es ist ebenfalls klar, dass beispielhaft genannte Ausführungsformen wirklich nur Beispiele darstellen, die nicht in irgendeiner Weise als Begrenzung etwa des Schutzbereichs, der Anwendungsmöglichkeiten oder der Konfiguration der Erfindung aufzufassen sind. Vielmehr versetzen die vorhergehende Beschreibung und die Figurenbeschreibung den Fachmann in die Lage, die beispielhaften Ausführungsformen konkret umzusetzen, wobei der Fachmann in Kenntnis des offenbarten Erfindungsgedankens vielfältige Änderungen, beispielsweise hinsichtlich der Funktion oder der Anordnung einzelner, in einer beispielhaften Ausführungsform genannter Elemente, vornehmen kann, ohne den Schutzbereich zu verlassen, der durch die Ansprüche und deren rechtliche Entsprechungen, wie etwa weitergehende Erläuterungen in der Beschreibung, definiert wird.

Bezugszeichenliste erstes Rechenmodul zweites Rechenmodul drittes Rechenmodul erster Voter zweiter Voter dritter Voter Recheneinheit