-
Die vorliegende Erfindung betrifft ein Rechnersystem sowie ein Verfahren zum Betrieb eines Rechnersystems. Das Rechnersystem kann eine hohe Zuverlässigkeit und/oder Verfügbarkeit für beispielsweise sicherheitsrelevante Anwendungen zur Verfügung stellen.
-
Stand der Technik
-
Insbesondere in sicherheitsrelevanten Anwendungen, die mit einem Rechnersystem, wie etwa einem eingebetteten System in einem Kraftfahrzeug, durchgeführt werden, wird eine möglichst hohe Zuverlässigkeit und/oder Verfügbarkeit des Rechnersystems angestrebt. Häufig soll dies durch eine Fehlerkennung für die Hardware-Komponenten des Rechnersystems erreicht werden. Hierzu können beispielsweise gemäß dem sogenannten Lockstep-Verfahren die Hardware-Komponenten, insbesondere Prozessoren, redundant vorgehalten werden, um identische Programmanweisungen, also z.B. ein Softwareprogramm, parallel auf sämtlichen redundanten Hardware-Komponenten parallel zu verarbeiten. Zur Fehlererkennung werden dann die Verarbeitungsergebnisse miteinander verglichen. Durch die so erzielte Redundanz lassen sich hardwareseitige Ausfälle in einer der Hardware-Komponenten erkennen, wobei darauf z.B. mit einer Ersatzmaßnahme reagiert werden kann. Allerdings ist es üblicherweise erforderlich, dass die Hardware-Komponenten zueinander identisch ausgeführt sind, so dass die Bereitstellungskosten entsprechend hoch sind. Zudem hat sich gezeigt, dass sich abhängige und/oder systematische Fehler auf diese Weise nicht oder zumindest nur eingeschränkt erkennen lassen.
-
Offenbarung der Erfindung
-
Die Aufgabe der Erfindung ist es daher, ein Rechnersystem mit einer verbesserten Zuverlässigkeit und/oder Verfügbarkeit zu schaffen.
-
Diese Aufgabe wird durch ein Rechnersystem sowie ein Verfahren zum Steuern eines solchen Rechnersystems gemäß den unabhängigen Ansprüchen gelöst. Vorteilhafte Weiterbildungen der Erfindung ergeben sich aus den abhängigen Ansprüchen, der Beschreibung sowie den begleitenden Figuren.
-
Ein derartiges Rechnersystem kann beispielsweise in einer sicherheitsrelevanten Anwendung zum Einsatz kommen, wie beispielsweise in der Luftfahrt, in einem Kraftfahrzeug, insbesondere für einen autonomen Fahrbetrieb, und ähnlichen Anwendungen. Das Rechnersystem kann als eingebettetes System in Form eines elektronischen Steuergeräts implementiert sein. Dementsprechend kann das Rechnersystem beispielsweise dazu eingerichtet sein, mit Sensoren und/oder Aktoren zusammenzuwirken, um z.B. bei einer Anwendung in einem Kraftfahrzeug dessen Fahrbetrieb automatisch zu steuern und Fahrmanöver zu veran lassen.
-
Das Rechnersystem weist wenigstens eine erste Recheneinheit und wenigstens eine zweite Recheneinheit auf. Die erste und die zweite Recheneinheit sind beispielsweise Prozessoren. Das Rechnersystem kann z.B. algorithmisch implementiert sein. Das Rechnersystem ist dazu eingerichtet, einen ersten Programmteil, z.B. einen Teil eines Programmcodes, durch die erste Recheneinheit über einen ersten Zeitabschnitt zu verarbeiten. Ferner ist das Rechnersystem dazu eingerichtet, parallel dazu denselben ersten Programmteil zusätzlich durch die zweite Recheneinheit über einen gegenüber dem ersten Zeitabschnitt unterschiedlich langen, zweiten Zeitabschnitt zu verarbeiten. In anderen Worten, beansprucht die Verarbeitung der zueinander zumindest funktional identischen Programmteile unterschiedliche Zeitspannen. Es ist auch möglich, dass eine Identität vorliegt, wobei (wenn auch minimale) Abweichungen des zur Ausführung vorgesehenen Programmcodes auftreten können, welche beispielsweise durch einen Unterschied im Kompilierprozess auftreten können. Das Rechnersystem ist ferner dazu eingerichtet, zu einem Zeitpunkt am Ende des zweiten Zeitabschnitts und/oder des ersten Zeitabschnitts eine jeweilige Verifizierungsgröße der beiden verarbeiteten ersten Programmteile miteinander zu vergleichen. Der Zeitpunkt am Ende des zweiten Zeitabschnitts kann auch als Synchronisationspunkt zwischen der ersten und der zweiten Recheneinheit verstanden werden. Unter einer Verifizierungsgröße kann in diesem Zusammenhang eine Eigenschaft des jeweiligen Programmteils verstanden werden, der eine Aussage über die korrekte Verarbeitung und/oder eine Verarbeitungsgüte des Programmteils zulässt.
-
Dadurch lässt sich ein besonders zuverlässiges Rechnersystem mit einer hohen Verfügbarkeit bereitstellen. Dabei ist kein redundantes Vorhalten zueinander identischer Recheneinheiten, also Recheneinheiten mit identischer Rechenleistung, notwendig, so dass sich das Rechnersystem mit insgesamt hoher Rechenleistung dennoch kostengünstig zur Verfügung stellen lässt. Insbesondere kann die erste Recheneinheit eine bestimmte Funktion, z.B. eine Fahrfunktion, als Folge des verarbeiteten Programms bereitstellen, während die zweite Recheneinheit primär der Überwachung der eigentlichen Verarbeitung und/oder Bereitstellung der Funktion dient. Das Rechnersystem ist zumindest weitgehend homogen aufgebaut und ist zeitentkoppelt. Insgesamt erlaubt das Rechnersystem eine Erkennung von insbesondere abhängigen und systematischen Fehlern.
-
Eine Weiterbildung der Erfindung sieht vor, dass der der zweiten Recheneinheit zugeordnete zweite Zeitabschnitt länger sein kann als der der ersten Recheneinheit zugeordnete erste Zeitabschnitt. In anderen Worten, kann die zweite Recheneinheit für dieselbe Verarbeitung eine längere Zeitdauer beanspruchen als die erste Recheneinheit. Der Vergleich der jeweiligen Verifikationsgrößen kann aber zu dem Zeitpunkt am Ende des zweiten Zeitabschnitts erfolgen. Dadurch kann die zweite Recheneinheit mit einer geringeren Rechenleistung zur Verfügung gestellt werden als die erste Recheneinheit.
-
Gemäß einer Weiterbildung kann das Rechnersystem ferner dazu eingerichtet sein, während des zweiten Zeitabschnitts parallel zur Verarbeitung des ersten Programmteils durch die zweite Recheneinheit wenigstens einen weiteren zu dem ersten Programmteil verschiedenen, zweiten Programmteil durch die erste Recheneinheit zu verarbeiten. In anderen Worten, kann die erste Recheneinheit zwei oder mehr verschiedene Programmteile verarbeiten, während die zweite Recheneinheit im gleichen Zeitraum den ersten Programmteil verarbeitet.
-
Das Rechnersystem kann gemäß einer Weiterbildung auch wenigstens eine Speichereinrichtung aufweisen, in der die Verifizierungsgröße des durch die erste Recheneinheit verarbeiteten ersten Programmteils wenigstens bis zum Erreichen des Zeitpunkts am Ende des zweiten Zeitabschnitts speicherbar ist. Dadurch kann die erste Recheneinheit bis zum Erreichen des Zeitpunkts am Ende des zweiten Zeitabschnitts auch mehrere verschiedene Programmteile sequentiell verarbeiten. Zusätzlich kann dieselbe oder eine weitere Speichereinrichtung auch zum Speichern des durch die zweite Recheneinheit verarbeiteten ersten Programmteils eingerichtet sein.
-
In einer anderen Weiterbildung kann die Verifizierungsgröße ein bestimmter, insbesondere berechneter, Fingerabdruck des jeweiligen Programmteils sein. Der Fingerabdruck kann in Bezug auf die erste Recheneinheit für jeden darin verarbeiteten Programmteil bestimmt werden. Für die zweite Recheneinheit kann der Fingerabdruck für den ersten Programmteil berechnet werden. Es kann gefordert sein, dass der Fingerabdruck in Bezug auf die zweite Recheneinheit bis zum Erreichen des Zeitpunkts am Ende des zweiten Zeitabschnitts abgeschlossen sein muss.
-
Um auf erfasste Fehler des Rechnersystems reagieren zu können, kann gemäß einer Weiterbildung das Rechnersystem ferner dazu eingerichtet sein, wenigstens eine Ersatzmaßnahme zu veranlassen, wenn die zum Zeitpunkt am Ende des zweiten Zeitabschnitts miteinander verglichenen Verifizierungsgrößen voneinander abweichen. Die Abweichung kann beispielsweise darin bestehen, dass die beiden Verifizierungsgrößen, z.B. Fingerabdrücke der Programmteile, nicht identisch sind, sich also z.B. in einem Bit unterscheiden. Die Ersatzmaßnahme kann bei einer Anwendung in einem Kraftfahrzeug beispielsweise darin bestehen, dass das Kraftfahrzeug in einen sicheren Zustand gesteuert wird, also beispielsweise in sicherer Position zum Halten manövriert wird.
-
Eine andere Weiterbildung sieht vor, dass der Zeitpunkt am Ende des zweiten Zeitabschnitts so festgelegt ist, dass der Vergleich der Verifizierungsgrößen, vorzugsweise stets, innerhalb einer vorbestimmten Fehlertoleranzzeit (fault tolerance time, FTT) durchführbar ist. Dadurch kann eine besonders hohe Zuverlässigkeit erreicht werden.
-
Gemäß einer Weiterbildung, kann das Rechnersystem eine weitere, zweite erste Recheneinheit aufweisen, die zum parallelen Verarbeiten desselben jeweiligen Programmteils mit der ersten ersten Recheneinheit gekoppelt ist. Dabei kann das Rechnersystem ferner dazu eingerichtet sein, regelmäßig, z.B. getaktet, die Verifikationsgrößen, also z.B. Fingerabdrücke, des zu verarbeitenden Programmteils der beiden ersten Recheneinheiten zu vergleichen. Es kann also ein redundanter Pfad zwischen der ersten Recheneinheit und einer zusätzlichen, identisch ausgeführten ersten Recheneinheit vorgesehen sein. Dadurch lässt sich das Rechnersystem für die Erkennung von zufälligen Fehlern, insbesondere innerhalb der ersten Recheneinheit, erweitern.
-
In einer anderen Weiterbildung kann das Rechnersystem eine weitere, zweite zweite Recheneinheit aufweisen, die zum parallelen Verarbeiten desselben jeweiligen Programmteils mit der ersten zweiten Recheneinheit gekoppelt ist. Dadurch können auch zufällige Fehler innerhalb der ersten zweiten Recheneinheit erkannt werden.
-
Um eine hohe Rechenleistung besonders kostengünstig bereitstellen zu können, können gemäß einer Weiterbildung die erste Recheneinheit über eine erste Rechenleistung verfügen und die zweite Recheneinheit über eine gegenüber der ersten Rechenleistung niedrigere, zweite Rechenleistung verfügen. Die erste Recheneinheit kann z.B. ein Grafikprozessor (GPU) sein, der insbesondere für Anwendungen in einem autonomen Fahrbetrieb eines Kraftfahrzeugs eingerichtet sein kann. Die zweite Recheneinheit kann dagegen eine geringere Rechenleistung haben und z.B. als System-on-a-Chip (SoC) ausgeführt sein.
-
Der Vergleich der jeweiligen Verifikationsgrößen kann in einer Weiterbildung durch einen Kreuzvergleich erfolgen. Alternativ oder zusätzlich dazu, kann der Vergleich der jeweiligen Verifikationsgrößen gemäß einer anderen Weiterbildung durch eine zu der ersten und zweiten Recheneinheit unterschiedliche, dritte Recheneinheit durchgeführt werden, die zum Vergleichen der jeweiligen Verifizierungsgrößen eingerichtet ist.
-
Die Erfindung betrifft auch ein Verfahren zum Betrieb eines Rechnersystems, das eine erste Recheneinheit und eine zweite Recheneinheit aufweist. Das Verfahren eignet sich insbesondere für das vorstehend beschriebene Rechnersystem und lässt sich an die vorstehend erläuterten Ausführungsvarianten des Rechnersystems anpassen.
-
Das Verfahren umfasst die folgenden Schritte:
- - In der ersten Recheneinheit wird ein erster Programmteils über einen ersten Zeitabschnitt verarbeitet.
- - Parallel zu der Verarbeitung wird derselbe erste Programmteil durch die zweite Recheneinheit über einen gegenüber dem ersten Zeitabschnitt unterschiedlich langen, zweiten Zeitabschnitt verarbeitet.
- - Zu einem Zeitpunkt am Ende des ersten und/oder zweiten Zeitabschnitts werden jeweilige Verifizierungsgrößen der beiden verarbeiteten ersten Programmteile miteinander verglichen.
-
Damit erlaubt das Verfahren einen homogenen, zeitentkoppelten Betrieb des Betriebs des Rechnersystems und erlaubt die Erkennung von abhängigen und/oder systematischen Fehlern.
-
Gemäß einer Weiterbildung kann eine Programmteilgröße des ersten Programmteils so gewählt werden, dass dieser durch die zweite Recheneinheit bis zum Erreichen des Zeitpunkts am Ende des zweiten Zeitabschnitts komplett verarbeitet werden kann. Der Zeitpunkt kann dann einen Synchronisationspunkt zwischen der ersten und der zweiten Recheneinheit darstellen.
-
Weitere, die Erfindung verbessernde Maßnahmen werden nachstehend gemeinsam mit der Beschreibung der bevorzugten Ausführungsbeispiele der Erfindung anhand von Figuren näher dargestellt.
-
Figurenliste
-
Im Folgenden werden vorteilhafte Ausführungsbeispiele der Erfindung mit Bezug auf die begleitenden Figuren detailliert beschrieben. Es zeigen:
-
Es zeigen:
- 1 ein Kraftfahrzeug mit einem Rechnersystem,
- 2 eine schematische Übersicht eines Rechnersystems,
- 3 ein Verarbeitungsschema für ein mit einem Rechnersystem zu verarbeitenden Programm und
- 4 ein Flussdiagramm eines Verfahrens zum Betrieb eines Rechnersystems.
-
Die Figuren sind lediglich schematisch und nicht maßstabsgetreu. In den Figuren sind gleiche, gleichwirkende oder ähnliche Elemente durchgängig mit gleichen Bezugszeichen versehen.
-
Ausführungsformen der Erfindung
-
1 zeigt ein Kraftfahrzeug 200, das für einen autonomen Fahrbetrieb eingerichtet ist und zu diesem Zweck ein Rechnersystem 100 in Form eines Steuergeräts oder eines Steuergeräteverbunds aufweist, womit zumindest Teilfunktionen des autonomen Fahrbetriebs gesteuert werden können.
-
In 2 ist eine Ausführungsform des Rechnersystems 100 in einer detaillierteren schematischen Übersicht gezeigt. Das Rechnersystem 100 weist eine erste Recheneinheit 110 in Form eines Grafikprozessors (GPU) als Hochleistungsrecheneinheit und eine zweite Recheneinheit 120 in Form eines als System-on-a-Chip (SoC) ausgeführten Prozessors mit einer gegenüber der Rechenleistung der ersten Recheneinheit 110, ggf. signifikant, geringeren Rechenleistung auf. Die erste Recheneinheit 110 und die zweite Recheneinheit 120 sind mittels eines Pfads bzw. einer homogenen, zeitentkoppelten programm- bzw. softwaretechnisch umgesetzten Verbindung 130 nach Art eines Lockstep-Systems gekoppelt.
-
In einer optionalen Ausführungsform verfügt das Rechnersystem 100 ferner über eine weitere erste Recheneinheit 110' und eine weitere zweite Recheneinheit 120'. Die weitere erste Recheneinheit 110' ist über einen Pfad bzw. einer homogenen programm- bzw. softwaretechnisch umgesetzten Verbindung 140 nach Art eines Lockstep-Systems an die erste Recheneinheit 110 gekoppelt. Die weitere zweite Recheneinheit 120' ist über einen zusätzlichen Pfad 150 im Wesentlichen auf gleiche Weise an die zweite Recheneinheit 120 gekoppelt. Weiter optional, ist die weitere erste Recheneinheit 110' über einen zusätzlichen Pfad 160 an die weitere zweite Recheneinheit 120' gekoppelt.
-
In einer weiteren optionalen Ausführungsform verfügt das Rechnersystem 100 über eine zu den ersten Recheneinheiten 110, 110' und zweiten Recheneinheiten 120, 120' verschieden ausgeführte, dritte Recheneinheit 170, die hier exemplarisch durch einen sogenannten safe island- oder safe housekeeping Prozessor gebildet ist.
-
In einer weiteren optionalen Ausführungsform verfügt das Rechnersystem 100 über eine Speichereinheit 180, die insbesondere zum Speichern einer Verifikationsgröße, z.B. eines Fingerabdrucks, einer Checksumme oder ähnlichem, eingerichtet ist.
-
Zur Steuerung der Recheneinheiten 110, 110', 120, 120' sowie der Pfade 130, 140, 150, 160 kann das Rechnersystem 100 eine (nicht gezeigte) Steuerlogik aufweisen. Die Steuerung kann algorithmisch implementiert sein.
-
3 zeigt in einem Verarbeitungsschema zur Programmbearbeitung die vorstehend erläuterten Komponenten des Rechnersystems 100 in einem funktionellen Zusammenhang. Das abzuarbeitende Programm umfasst hier exemplarisch eine Steuerungsfunktion für den autonomen Fahrbetrieb des Kraftfahrzeugs 200. Das Rechnersystem 100 kann mit dem anhand der 3 nachfolgend erläuterten Verfahren betrieben werden.
-
Wie in 3 gezeigt, umfasst das (nicht näher bezeichnete) Programm mehrere Programmteile, die hier zur besseren Veranschaulichung mit 1 bis 8 durchnummeriert sind. Diese Anzahl ist nur exemplarisch zu verstehen, so dass auch weniger oder deutlich mehr Programmteile vorhanden sein können.
-
Die erste Recheneinheit 110, also die Hochleistungsrecheneinheit, verarbeitet den ersten Programmteil 1 über einen ersten Zeitabschnitt t1 hinweg. Während dieser Verarbeitung bestimmt bzw. berechnet das Rechnersystem 100, z.B. über die Steuerlogik, eine Verifikationsgröße z.B. in Form eines Fingerabdrucks des ersten Programmteils 1 und speichert diese in der Speichereinheit 180.
-
Parallel zu der Verarbeitung des ersten Programmteils 1 durch die erste Recheneinheit 110 verarbeitet die zweite Recheneinheit 120, die wie oben erläutert eine geringere Rechenleistung aufweist, ebenfalls den (identischen) ersten Programmteil 1. Dabei erstreckt sich - wie in 3 durch eine geschweifte Klammer angedeutet - die Bearbeitung über einen gegenüber dem ersten Zeitabschnitt t1 länger dauernden, zweiten Zeitabschnitt t2. Während dieser Verarbeitung bestimmt bzw. berechnet das Rechnersystem 100 eine Verifikationsgröße z.B. in Form eines Fingerabdrucks des ersten Programmteils 1 und speichert diese in der Speichereinheit 180 oder stellt diese anderweitig zur Verfügung.
-
Zum Ende des zweiten Zeitabschnitts ist ein Zeitpunkt t3 vorgesehen, der einen Synchronisationspunkt bzw. Vergleichspunkt zwischen der ersten und der zweiten Recheneinheit 110, 120 darstellt, wie dies in 3 durch eine senkrechte Linie dargestellt ist. Der Zeitpunkt t3 ist so gewählt, dass dieser unter Verarbeitung des ersten Programmteils 1 durch die zweite Recheneinheit 120 unter allen Umständen innerhalb einer vorbestimmten Zeitspanne erreicht wird, die einer z.B. in einer Funktionsspezifikation vordefinierten Fehlertoleranzzeit (fault tolerance time, FTT) entspricht.
-
Zum Zeitpunkt t3, also dem Synchronisationspunkt bzw. Vergleichspunkt, zu dem die Verarbeitung des ersten Programmteils 1 durch die zweite Recheneinheit 120 abgeschlossen ist, werden die beiden Verifikationsgrößen, also z.B. die Fingerabdrücke, miteinander verglichen. Hierzu wird auf die Speichereinheit 180 zugegriffen, um die Verifikationsgrößen zu erhalten und diese auf Identität zu überprüfen. Die Überprüfung erfolgt entweder durch einen Kreuzvergleich oder durch die dritte Recheneinheit 170. Für den Fall, dass keine Identität festgestellt wird, veranlasst das Rechnersystem 100 eine Ersatzmaßnahme, die bei dem hier beispielhaften Einsatz im Kraftfahrzeug 200 aus einer Steuerung desselben in einen sicheren Zustand, z.B. Stillstand in einer geeigneten Position, bestehen kann.
-
Wie in 3 anschaulich dargestellt, ist die erste Recheneinheit 110 insbesondere aufgrund seiner Rechenleistung dazu eingerichtet, während des zweiten Zeitabschnitts t2, den die zweite Recheneinheit 120 zur Verarbeitung des ersten Programmteils 1 benötigt, mehrere weitere Programmteile 2, 3 und 4 innerhalb eines jeweiligen Zeitabschnitts, z.B. des ersten Zeitabschnitts t1, stapelweise zu verarbeiten. Hierbei nutzt die erste Recheneinheit 110 die gesamte Rechenleistung. Das heißt, dass zum Zeitpunkt t3 in diesem Ausführungsbeispiel vier Programteile 1 bis 4 durch die erste Recheneinheit 110 und zur Sicherstellung der Zuverlässig bzw. Verfügbarkeit der ersten Recheneinheit 110 nur der eine erste Programmteil 1 verarbeitet wird.
-
Ist der oben erläuterte Vergleich der beiden Verifikationsgrößen zum Zeitpunkt t3 erfolgreich, wird also eine Identität zwischen beiden festgestellt, beginnt ab dem Zeitpunkt t3 eine Verarbeitung des nächsten Programmteils 5 durch die zweite Recheneinheit 120. Parallel dazu, setzt auch die erste Recheneinheit 110 die Verarbeitung genau desselben Programmteils 5 fort. Das heißt, dass nach dem Zeitpunkt t3 das oben beschriebene Verfahren mit anderen Programmteilen fortgesetzt wird, bis beim nächsten Synchronisationspunkt bzw. Vergleichspunkt, nämlich zum Zeitpunkt t4, erneut ein Vergleich der Verifikationsgrößen des Programmteils 5 erfolgt. Wie in 3 durch Fortsetzungspunkte angedeutet, wird dieses Verfahren so lange wiederholt, bis alle Programmteile des Programms verarbeitet sind.
-
In 3 ist auch das Verarbeitungsschema für die optionalen Ausführungsformen mit ggf. weiterer erster Recheneinheit 110' und/oder zweiter Recheneinheit 120' gezeigt. Das Verarbeitungsschema entspricht für sich betrachtet im Wesentlichen dem vorstehend beschriebenen, wobei durch die Redundanz weitere Überprüfungen ermöglicht werden. Dadurch können auch zufällige Fehler der ersten und/oder zweiten Recheneinheit 110, 120 erfasst werden.
-
4 fasst das vorstehend beschriebene Verfahren in einem Flussdiagramm zusammen. In einem Schritt S1 erfolgt das Verarbeiten des ersten Programmteils 1 durch die erste Recheneinheit 110 über den ersten Zeitabschnitt t1. Parallel dazu, erfolgt in einem Schritt S2 ein Verarbeiten desselben ersten Programmteils 1 durch die zweite Recheneinheit 120 über einen gegenüber dem ersten Zeitabschnitt t1 unterschiedlich langen, zweiten Zeitabschnitt t2. Schließlich erfolgt in einem Schritt S3 ein miteinander Vergleichen der jeweiligen Verifizierungsgröße der beiden verarbeiteten ersten Programmteile 1 zum Zeitpunkt t3 am Ende des zweiten Zeitabschnitts t2.