-
HINTERGRUND DER ERFINDUNG
-
Eine Ausführungsform betrifft eine Objekt-Arbitration für Steuersysteme.
-
Systeme, die Sicherheitsfunktionen bereitstellen, verwenden typischerweise redundante Steuerungen, um sicherzustellen, dass der Betrieb derartiger Funktionen im Falle eines Fehlers beibehalten werden kann. In Steuerungssystemen werden Daten an eine Steuerung oder ähnliche geliefert und Aufgaben werden auf der Grundlage der Eingangsdaten ausgeführt. Es ist nicht ungewöhnlich für mehrere Prozessoren oder einen Multicore-Prozessor eine gleiche Funktion für Redundanzzwecke auszuführen, die bei der Feststellung, ob ein Fehler in den Ausgabeergebnissen der ausgeführten Funktion vorhanden ist, helfen kann. Wenn jedoch widersprüchliche Ergebnisse von den verschiedenen Prozessoren oder dem Multicore-Prozessor ausgegeben werden, der dieselbe Funktion ausführt, wird eine Arbitrierung durchgeführt, um zu bestimmen, welche Ergebnisse verwendet werden sollen. Für Steuerungssysteme, die eine ungerade Anzahl von Prozessoren nutzen, gewinnt das Ergebnis, das der Mehrheit zugeordnet ist. Wenn jedoch eine gerade Anzahl von Prozessoren verwendet wird, dann ist eine Split-Entscheidung vorhanden. Systeme ohne robuste Arbitrierungstechnik können nur das Ergebnis des bearbeiteten Masters verwenden. Allerdings ist das Problem das Ergebnis aus dem bezeichneten Master könnte die Fehlersteuerung oder Kern sein, was zu fehlerhaften Steuerungsaktionen führt, als Ergebnis der Verwendung der Ergebnisse mit den Fehlern. Darüber hinaus kann die Menge an Informationen, die aus der verschiedenen redundanten Verarbeitung gewonnen und aufgezeichnet werden können, groß und rechnerisch intensiv sein.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Ein Vorteil einer Ausführungsform ist die Auswahl eines Ausgabeergebnisses einer Funktion, die von einem Mehrfachprozessor oder von Mehrfachkernen in einem Prozessor in einem redundanten Steuerungssystem ausgeführt werden. Die hierin beschriebene Technik bestimmt nicht nur, welches Ausgangsergebnis für die weitere Verarbeitung ausgewählt werden soll, sondern reduziert effizient die Datenmenge, die nur durch die Aufnahme kritischer Funktionen und Parameterwerte verwendet wird, die von kritischen Funktionen verwendet werden. Jede ausgeführte Aufgabe wird durch einen jeweiligen Pfad identifiziert. Die Pfade werden als eine Funktion identifiziert, um kritische Funktionen zu identifizieren, die während der Aufgabe ausgeführt werden. Parameterwerte werden auch nur für die ausgeführten kritischen Funktionen aufgezeichnet. Zusätzlich wird ein Bitvektor erzeugt, der den Pfad eindeutig identifiziert, wobei jeder Bitvektor alle kritischen Funktionen beinhaltet. Ein entsprechendes Bit wird in jedem Bitvektor nur gesetzt, wenn die kritische Funktion im Pfad ausgeführt wird. Jedes entsprechende Bit weist ferner weitere Punkte auf eine für diese kritische Funktion aufgezeichnete Parameterwerte auf. Infolgedessen speichert und verwendet die hierin beschriebene Technik effizient nur minimale Informationen, die benötigt werden, um den Weg zu identifizieren und die gespeicherten Daten zu verwenden, um eine fundierte Entscheidung zu treffen. Zusätzlich verwendet ein Arbitrierungsmodul die aufgezeichneten Daten durch jede kritische Funktion jedes jeweiligen Pfades und wendet eine Logikfunktion oder eine Logiktabelle oder eine Kombination sowohl der Logiktabelle als auch einer Logikfunktion an, um zu bestimmen, welche Ausgangsergebnisse verwendet werden sollen.
-
Eine Ausführungsform sieht ein Verfahren zur Arbitrierung von widersprüchlichen Ausgängen in einem redundanten Steuersystem vor. Die Ausführungsdaten einer Aufgabe, die von jeder Steuerung in dem redundanten Steuerungssystem ausgeführt wird, werden aufgezeichnet. Die Ausführungsdaten beinhalten einen anfänglichen Zeitstempel jedes Ausführungsstroms, die Identifizierung von kritischen Funktionen in jedem Ausführungsstrom und Parameterwerte, die von den kritischen Funktionen verwendet werden. Ein Pfad, der durch jede Steuerung ausgeführt wird, wird nur anhand der kritischen Funktionen identifiziert, die für jeden Ausführungsstrom ausgeführt werden. Die aufgezeichneten Ausführungsdaten jedes ausgeführten Pfades werden auf ein Arbitrierungsmodul angewendet. Ein Ausgabeergebnis von einem der jeweiligen Steuerungen, die durch ein Arbitrierungsmodul auf der Grundlage der aufgezeichneten Ausführungsdaten jedes ausgeführten Pfades auswählen. Der Ausgabeergebnis der ausgewählten Steuerung wird zur Weiterverarbeitung an ein nächstes Modul übermittelt.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht ein architektonisches Blockdiagramm eines exemplarischen Steuerungssystems.
-
2 veranschaulicht eine Datenstruktur und eine Architektur, die verwendet wird, um eine Ausführungssequenz jeder Aufgabe aufzuzeichnen.
-
3 veranschaulicht ein erstes Beispiel von zwei Prozessoren, die jeweilige Funktionen ausführen und Ergebnisse entsprechend den Funktionen ausgeben.
-
4 veranschaulicht ein erstes Beispiel von zwei Prozessoren, die jeweilige Funktionen über verschiedene Pfade ausführen, die unterschiedliche Ergebnisse liefern.
-
5 veranschaulicht eine von dem Arbitrierungsmodul verwendete Datenstruktur.
-
6 stellt exemplarische Pfade und ihren zugehörigen Pfad-Flag-Vektor dar.
-
7 veranschaulicht eine exemplarische Struktur für eine Funktion und zugehörige Parameterwerte in einer exemplarischen Tabelle.
-
8 veranschaulicht eine Zuordnung eines Pfadvektors zu einem zugehörigen Tabellenfunktionseintrag und zugehörigen Parameterwerten.
-
9 veranschaulicht ein Flussdiagramm eines Prozesses zur Aufzeichnung von Ausführungspfaden und Werten.
-
10 veranschaulicht eine exemplarische Struktur eines Arbitrierungsmoduls, das verwendet wird, um eine Arbitrierungsstrategie auszuführen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die nachfolgende ausführliche Beschreibung dient lediglich zum besseren Verständnis der Ausführungsformen und ist nicht dazu bestimmt, die Ausführungsformen des hierin beschriebenen Gegenstands oder die Anwendung und Verwendungen dieser erwähnten Ausführungsformen zu beschränken. Jeder Gebrauch des Wortes „exemplarisch” ist auszulegen als „dient als Beispiel, Sachverhalt oder zur Veranschaulichung”. Hierin beschriebene Anwendungen sind exemplarisch und nicht als bevorzugt oder vorteilhaft gegenüber anderen Anwendungen zu verstehen. Die Beschreibungen in diesem Dokument sind nicht als gebunden durch eine ausdrückliche oder implizierte Theorie zu verstehen, die vor dem vorstehenden Hintergrund, der ausführlichen Beschreibung oder den ausführlichen Beschreibungen, der Zusammenfassung oder der folgenden ausführlichen Beschreibung vorgestellt wird.
-
Die Techniken und Technologien können hierin in Bezug auf die funktionellen und/oder logischen Blockkomponenten beschrieben werden und unter Bezugnahme auf symbolische Darstellungen von Vorgängen, Programmverarbeitungen und Funktionen, die von verschiedenen Computerkomponenten oder Vorrichtungen durchgeführt werden können. Derartige Vorgänge, Programme und Funktionen werden manchmal als computerausgeführt, computerisiert, softwareimplementiert oder computerimplementiert bezeichnet. Es sollte beachtet werden, dass derartige Blockkomponenten aus einer beliebigen Anzahl von Hardware, Software und/oder Firmware-Komponenten aufgebaut sein können, die konfiguriert sind, um die spezifischen Funktionen auszuführen. So kann zum Beispiel eine Ausführungsform eines Systems oder einer Komponente verschiedene integrierte Schaltungskomponenten, (z. B. Speicherelemente, digitale Signalverarbeitungselemente, Logikelemente, Nachschlagetabellen oder dergleichen einsetzen, die eine Vielzahl von Funktionen unter der Steuerung eines oder mehrerer Mikroprozessoren oder anderer Steuervorrichtungen) durchführen können.
-
Wenn in Software oder Firmware implementiert, sind verschiedene Elemente der hierin beschriebenen Systeme im Wesentlichen die Codesegmente oder Anweisungen, die die verschiedenen Aufgaben ausführen. In bestimmten Ausführungsformen sind die Programm- oder Codesegmente auf einem materiellen, prozessorlesbaren Medium gespeichert, das jedes Medium sein kann, das Informationen speichern oder übertragen kann. Beispiele für nichtflüchtige, Prozessor-lesbare Medien beinhalten einen elektronischen Schaltkreis, einen Mikrocontroller, einen anwendungsspezifischen integrierten Schaltkreis (ASIC), ein Halbleiter-Speicherelement, einen ROM-Speicher, einen Flash-Speicher, einen löschbaren ROM-Speicher (EROM), eine Floppy-Disk, eine CD-ROM, eine optische Speicherplatte, eine Festplatte oder dergleichen.
-
Das hierin beschriebene System und die Methodik können verwendet werden, um Fehler in Steuerungen zu identifizieren, die Softwarefunktionen in Steuersystemen ausführen. Während der Ansatz und die Methodik bezüglich Steuerungen oder Prozessoren beschrieben werden, die in Fahrzeuganwendungen verwendet werden, erkennt der Fachmann, dass die Kraftfahrzeuganwendung lediglich exemplarisch ist, und dass die hierin offenbarten Konzepte auf jedes andere geeignete Kommunikationssystem angewendet werden können, wie beispielsweise Automatisierungsanwendungen, Fertigungs- und Montageanwendungen und Spiele.
-
Der Begriff „Fahrzeug”, wie hierin beschrieben, kann im weitesten Sinne so ausgelegt werden, dass er nicht nur ein Personenkraftfahrzeug beinhaltet, sondern alle anderen Fahrzeuge, ohne jedoch darauf beschränkt zu sein, Schienenverkehrssysteme, Flugzeuge, Geländesportfahrzeuge, Roboterfahrzeuge, Motorräder, LKW, Sportnutzfahrzeuge (SUVs), Wohnmobile (RVs), Wasserfahrzeuge, Luftfahrzeuge, landwirtschaftliche Fahrzeuge, und Baufahrzeuge.
-
In 1 ein architektonisches Blockschaltbild eines exemplarischen Steuerungssystems dargestellt. Derartige Steuersysteme werden oft zwei oder mehr Steuerungen verwenden, sodass, wenn ein Hardwarefehler bei einer primären Steuerung auftritt, dann mindestens eine Backup-Steuerung leicht aktiviert werden kann, um ein Merkmal des Steuersystems zu steuern oder eine Steuerung für eine begrenzte Funktionalität des Merkmals im Fehlerfall zu liefern. Wie in 1 gezeigt, wird eine Vielzahl von Sensoren für Daten bereitgestellt, die durch einen oder mehrere Sensoren 12 erhalten werden. Die Sensoren 12 erfassen den Statuszustand einer Vorrichtung, eines Subsystems oder eines Systems. Die erfassten Daten, die direkt von den Sensoren 12 zu einer Steuerung zur Verarbeitung erhalten werden oder wenn mehr als ein Sensor verwendet wird, können die Daten verschmolzen werden, wenn mehrere Sensoren 12 verwendet werden, um einen Zustand zu überwachen. Als Ergebnis kann ein Fusionsmodul 14 zum Verschmelzen der Sensorresultate verwendet werden, um die Daten in eine bessere Form zur Verarbeitung zu bringen.
-
Die Daten entweder vom Fusionsmodul 14 oder direkt von den Sensoren 12 werden in eine Steuerung 16 eingegeben. Die Steuerung 16 kann eine Vielzahl von Prozessoren oder einen Multicore-Prozessor beinhalten. Wie in 1 gezeigt, kann die Steuerung 16 einen ersten Prozessor 18 und einen zweiten Prozessor 20 zum Ausführen einer Funktion auf der Grundlage der von den mehreren Sensoren 12 oder dem Fusionsmodul 14 bereitgestellten Eingangsdaten beinhalten. Alternativ kann die Steuerung einen Duo-Core-Prozessor beinhalten, der einen ersten Kern und einen zweiten Kern zum Ausführen von Steuerungen verwendet, im Gegensatz zu einzelnen Prozessoren. Für die hierin verwendete Konsistenz wird der Begriff Prozessor verwendet; es sollte jedoch verstanden werden, dass der Begriff Prozessor mit einem Kern eines Prozessors vertauscht werden kann. Die Ausgabe vom ersten Prozessor 18 und dem zweiten Prozessor 20 wird in ein Arbitrierungsmodul 22 eingegeben, wobei die Ergebnisse miteinander verglichen werden. Wenn die Ergebnisse gleich sind, kann entweder ein Ergebnis verwendet werden. Wenn die Ergebnisse unterschiedlich sind, bestimmt das Arbitrierungsmodul, welche Ergebnisse verwendet werden.
-
2 veranschaulicht eine Datenstruktur und eine Architektur, die verwendet wird, um eine Ausführungssequenz jeder Aufgabe aufzuzeichnen. So kann beispielsweise eine Aufgabe, die von verschiedenen Prozessoren ausgeführt wird, unterschiedliche Verarbeitungssequenzen verwenden (nachfolgend als Pfade bezeichnet). In 2 können drei verschiedene Pfade unter Verwendung unterschiedlicher Pfade aufgezeichnet werden, wobei Funktionen an jedem Knoten aufgezeichnet werden. Ein erster Pfad 24 kann Funktionen {a, b, d, g} beinhalten. Ein zweiter Pfad 26 kann {a, b, c, d, g} beinhalten. Ein dritter Pfad 28 kann {a, e, f, g} beinhalten. Für jede in einem Pfad ausgeführte Funktion werden während der Ausführung der Funktion Informationen erhalten. Zusätzliche Informationen, die erhalten werden können, beinhalten, sind aber nicht beschränkt auf Zeitstempel und Datenwerte von Funktionen, die nacheinander durch das Arbitrierungsmodul gespeichert und genutzt werden können. Jedoch wäre das Aufzeichnen von Zeitstempeln und der Wert von Funktionen an jedem Knoten für jeden Pfad ineffizient und rechnerisch intensiv für die Verarbeitung der aufgezeichneten Information. Daher werden kritische Funktionen zur Entwurfszeit identifiziert. Durch die Aufzeichnung von Informationen nur aus den kritischen Funktionen wird nicht nur die Datenmenge verringert, sondern die Pfade können leicht identifiziert werden, indem nur kritische Funktionen identifiziert werden, im Gegensatz zu Aufzeichnungsdaten für alle Funktionen.
-
Für jede kritische Funktion, die in einem Pfad identifiziert wird, der ausgeführt wird, wird ein Zeitstempel bei der Initiierung und Ausführung eines Pfades aufgezeichnet und Datenwerte werden für jede ausgeführte kritische Funktion aufgezeichnet. Der Datenwert kann einen oder mehrere Parameterwerte beinhalten. In 2 werden die Funktionen (a, c, f, g) als kritische Elemente identifiziert. Es wurde vorher beschrieben, dass drei realisierbare Pfade möglich sind. Da die Funktion (a) der Startknoten und die Funktion (g) der Endknoten ist, ist jede dieser jeweiligen Funktionen Teil eines jeden Pfades. Daher kann ein Vorhandensein einer jeweiligen Funktion oder eine Abwesenheit einer jeweiligen Funktion bestimmen, welcher Pfad eingeschlagen wird. Wenn zum Beispiel die Funktion (c) und die Funktion (f) auch als kritische Funktionen identifiziert werden, wird das Vorhandensein von beiden Funktionen (c) oder (f) oder das Fehlen beider Funktionen den Pfad identifizieren. Daher kann eine Tabelle verwendet werden, um Werte aufzuzeichnen, die für alle kritischen Funktionen verwendet werden, um zu bestimmen, welche Daten welchem Pfad zugeordnet sind, wenn sie durch das Arbitrierungsmodul analysiert werden. Wenn die Tabelle für einen jeweiligen Pfad Werte für die kritische Funktion (c) aufzeichnet, so kann bestimmt werden, dass der Pfad der zweite Pfad 26 {a, b, c, d, g} ist. Wenn die Tabelle für einen jeweiligen Pfad einen Wert für die kritische Funktion (f) aufzeichnet, dann kann bestimmt werden, dass der Pfad der dritte Pfad 28 {a, e, f, g} ist. Wenn die Tabelle für einen jeweiligen Pfad keinen Wert für beide kritischen Funktionen (c) und (f) aufnimmt, dann wird bestimmt, dass der Pfad der erste Pfad 24 {a, b, d, g} ist. Als Ergebnis kann jeder Pfad bestimmt werden, basierend darauf, ob Werte für kritische Funktionen aufgezeichnet werden. Werte können dann dem Arbitrierungsmodul zugeführt werden, wobei eine Arbitrierungsrichtlinie unter Verwendung einer Nachschlagtabelle oder einer Entscheidungslogik ausgeführt wird, die später ausführlich erörtert wird.
-
3 veranschaulicht ein erstes Beispiel von zwei Prozessoren, die jeweilige Funktionen ausführen und Ergebnisse entsprechend den Funktionen ausgeben. In 3 werden identische Pfade ausgeführt und die Ergebnisse werden dem Arbitrierungsmodul 22 zugeführt. Wenn die Ergebnisse gleich sind, dann kann entweder das Ergebnis durch das Arbitrierungsmodul verwendet werden, da die Ergebnisse gleich sind. Wenn die Ergebnisse unterschiedlich sind, obwohl derselbe Pfad von beiden Prozessoren verwendet wird, wird eine Bestimmung ermittelt, welcher Prozessor korrekt ist, der unter Verwendung der verschiedenen Eigenschaften einschließlich der aufgezeichneten Parameterwerte bestimmt wird.
-
4 veranschaulicht ein erstes Beispiel von zwei Prozessoren, die jeweilige Funktionen über verschiedene Pfade ausführen, die unterschiedliche Ergebnisse liefern. In diesem Beispiel führt der erste Prozessor Pfade {a, b, d, g} aus und der zweite Prozessor führt den Pfad {a, e, f, g} aus. Abhängig von der Arbitrierungslogik kann ein vorbestimmter Pfad identifiziert werden, wobei mindestens ein Zeitstempel, der ausgeführte Pfad und die verwendeten Parameterwerte verwendet werden. Das Arbitrierungsmodul 24 empfängt die Parameterwerte des zugeordneten Pfades und verwendet mindestens einen der Zeitstempel, Ausführungsfolge (d. h. Pfad) und Parameterwerte, um zu bestimmen, welcher Pfad das richtige Ergebnis liefert. Das Arbitrierungsmodul 22 kann eine Nachschlagtabelle oder eine Entscheidungslogik verwenden, um das zu verwendende Ergebnis zu identifizieren.
-
5 veranschaulicht eine Datenstruktur, die zum Aufzeichnen der ausgeführten Sequenz in einer Weise verwendet wird, die von dem Arbitrierungsmodul verwendet werden kann, und ist formatiert für die Minimierung der Datenmenge, die benötigt wird, um beibehalten und verarbeitet zu werden. Wie in 5 gezeigt, wird jede der kritischen Funktionen {a, c, f, g} als Bit in einem Vektor erfasst. Jeder Pfad wird den Vektor verwenden, der nicht nur die Ausführungsfolge des Pfades bereitstellt, sondern auch einen Funktionsvisitationsindikator beinhaltet. Funktionsvisitationsindikator ist ein Bit (d. h. „1” oder „0”), der identifiziert, ob eine jeweilige Funktion entlang eines jeweiligen Pfades besucht wird. Wie bereits erwähnt, werden in der Vielzahl von Funktionen kritische Funktionen identifiziert. Jede kritische Funktion wird in einem Vektor zusammen mit ihrem zugehörigen Funktionsvisitationsindikator angegeben. Der Aufbau eines 4-Bit-Vektors 30 ist in 5 gezeigt. Unter Verwendung der kritischen Funktionen von 5 ist jede Funktion im 4-Bit-Vektor 30 dargestellt. So wird beispielsweise Addr (a) durch den ersten Schlitz des Vektors dargestellt, Addr (c) wird durch den zweiten Schlitz des Vektors dargestellt, Addr (f) wird durch den dritten Schlitz des Vektors und Addr (g) wird durch den vierten Schlitz des Vektors dargestellt. Jede jeweilige Adresse beinhaltet ein „0” Bit oder ein „1” Bit. Ein „0” Bit zeigt an, dass der jeweilige Knoten nicht besucht wurde und die Funktion nicht ausgeführt wurde. Ein „1” Bit zeigt an, dass der jeweilige Knoten besucht wurde und somit die Funktion ausgeführt wurde. Daher beinhaltet jede Ausführungssequenz für jeden Pfad Informationen, die den Pfad nicht identifizieren, indem sie angeben, ob jeweilige Knoten besucht wurden, und Funktionen, die ausgeführt werden, sobald die Ausführungssequenz ihr Ziel erreicht hat. Als Ergebnis wird jeder Pfad durch einen anfänglichen Zeitstempel und eine Pfad-Flag-Kennung dargestellt. Der Anfangszeitstempel stellt einen Start eines Pfades dar und wird verwendet, um Signale für die Arbitrierung anzupassen. Der Pfad-Flag-Vektor ist mit jeder der kritischen Funktionen ausgelegt, sei es auf demselben oder einem unterschiedlichen Ausführungspfad, der durch einen Bitvektor dargestellt wird, wobei jedes Bit den Besuch einer Funktion auf dem Ausführungspfad anzeigt. Jedes der Bits wird anfänglich auf dem Anfangszeitstempel (d. h. „0”) gelöscht, und jedes Bit wird gesetzt (d. h. „1), wenn die Funktion, die es repräsentiert, ausgeführt wird. Wenn eine Funktion nicht ausgeführt wird, bleibt ihr zugehöriges Bit ungesetzt (d. h. „0”). Die Reihenfolge der Funktionen des Vektors stimmt mit der Reihenfolge der Ausführungssequenz für jeden Pfad überein.
-
6 stellt exemplarische Pfade und deren zugehörigen Pfad-Flag-Vektor dar. Wie in 6 gezeigt, beinhalten kritische Funktionen {A, c, f, g}. Jeder 4-Bit-Vektor wird mit der Reihenfolge {a, c, f, g} verwendet. Jede gestrichelte Linie in 6 stellt einen anderen Pfad 24, 26, 28 dar. Der erste Pfad 24 wird durch einen Vektor mit den Werten {1, 0, 0, 1} identifiziert. Die Bitwerte zeigen an, dass die Funktion (a) ausgeführt wird, die Funktion (c) nicht ausgeführt wird, die Funktion (f) nicht ausgeführt wird und die Funktion (g) ausgeführt wird. Da weder Funktionen (c) noch (f) ausgeführt wurden, kann er einzige durchführbare Pfad {a-b-d-g) sein, der mit dem ersten Pfad 24 korreliert. Ähnlich wird ein zweiter Pfad, der durch 32 dargestellt ist, durch einen Vektor mit den Werten {1, 0, 1, 1} identifiziert. Die Bitwerte zeigen an, dass die Funktion (a) ausgeführt wird, die Funktion (c) nicht ausgeführt wird, die Funktion (f) ausgeführt wird und die Funktion (g) ausgeführt wird. Da die Funktionen (c) nicht ausgeführt und die Funktion (f) ausgeführt wird, kann der einzige durchführbare Pfad derjenige sein, der die Funktion (f) beinhaltet, die den Pfad {a-e-f-g} ergibt. Zusätzlich wird ein durch 28 dargestellter dritter Pfad durch einen Vektor mit den Werten {1, 1, 0, 1} identifiziert. Die Bitwerte zeigen an, dass die Funktion (a) ausgeführt wird, die Funktion (c) ausgeführt wird, die Funktion (f) nicht ausgeführt wird und die Funktion (g) ausgeführt wird. Da die Funktionen (c) ausgeführt und die Funktion (f) nicht ausgeführt wird, kann der einzige durchführbare Pfad derjenige sein, der die Funktion (c) beinhaltet, die den Pfad {a-b-c-d-g} ergibt. Um die Vektorgröße und die zugehörigen Daten, die mit jeder Funktion gesammelt wurden, zu reduzieren, besteht daher keine Notwendigkeit, alle Funktionen (z. B. nicht kritische Funktionen) zu verfolgen und Daten für alle Funktionen des Pfades aufzuzeichnen. Vielmehr werden nur kritische Funktionen verfolgt und Daten nur für kritische Funktionen aufgezeichnet, da die kritischen Funktionen, die ausgeführt werden sowie die kritischen Funktionen, die nicht ausgeführt werden, zeigen, welcher der ausgeführte Pfad ist.
-
Um die Ermittlung des korrekten Ergebnisses durch das Arbitrierungsmodul weiter zu verbessern, werden Werte von Parametern, die aus ausgeführten Funktionen resultieren, verfolgt und analysiert. Eine inkonsistente Ausgabe zwischen verschiedenen Pfaden oder einem gleichen Pfad, der von zwei verschiedenen Prozessoren ausgeführt wird, kann ein Ergebnis verschiedener Werte sein, die verwendet werden, da ein Ausgang eines Berechnungspfades von den von jeder Funktion verwendeten Werten abhängig ist. Dies kann durch verschiedene Faktoren verursacht werden, die Hardwarefehler und Aktualisierungen aus anderen Funktionen beinhalten, sind aber nicht darauf beschränkt. Dies kann besonders schwierig sein, wenn globale Variablen verwendet werden. Um bei der Bestimmung der korrekten Ausgabe zu helfen, wird eine Tabelle erzeugt, um die in der Berechnung verwendeten Werte aufzuzeichnen. Jede Funktion kann einen Parameter oder mehrere Parameterwerte verwenden. Daher werden die Parameterwerte, die nur von den kritischen Funktionen in der Ausführungsfolge verwendet werden, aufgezeichnet.
-
7 veranschaulicht eine exemplarische Struktur für eine Funktion und deren zugehörige Parameterwerte in einer Tabelle. Im ersten Eintrag ist ein Funktionsfeld 40 dargestellt. Ein Zeigerfeld 42 zeigt an, wo die jeweiligen Parameterwerte aufgezeichnet sind. Parameterwerte werden in einem Parameterwert-Eingabefeld 44 aufgezeichnet. In diesem Feld kann mehr als ein Parameterwert eingegeben werden, wenn mehr als ein Parameterwert von der jeweiligen Funktion genutzt wird.
-
8 veranschaulicht eine Zuordnung eines Pfadvektors zu einem zugehörigen Tabellenfunktionseintrag und zugehörigen Parameterwerten. Ein exemplarischer Vektor ist im Allgemeinen bei 50 gezeigt. Nur die jeweiligen kritischen Funktionen, die einen Bitwert aufweisen, der gesetzt ist, haben die Parameterwerte der Tabelle 52 aufgezeichnet. Das heißt, Parameterwerte werden nur für die jeweils ausgeführten Funktionen aufgezeichnet. Wenn die kritische Funktion im Bitvektor „0” ist, dann wurde diese jeweilige Funktion nicht ausgeführt, und daher war diese jeweilige Funktion nicht Teil der Ausführungsfolge des Pfades. Infolgedessen wird eine kritische Funktion, die nicht ausgeführt wird, keinen Parameterwert aufweisen, noch wird diese kritische Funktion nicht ausgeführt in der Tabelle 52 aufgeführt. Es sollte verstanden werden, dass die Reihenfolge in der Tabelle die gleiche ist wie die Reihenfolge, in der die Funktion im Vektor erscheint (abzüglich aller kritischen Funktionen, die nicht ausgeführt werden).
-
Unter Bezugnahme auf den Pfadvektor 50 wird das erste Bit des Pfadvektors 50, der die Funktion (a) darstellt, gesetzt und hat daher mindestens einen zugeordneten Parameterwert in der Tabelle 52. Wie in der Tabelle 52 gezeigt, verwendet die Funktion (a) die Parameterwerte „8” und „21,2”. Das zweite Bit des Pfadvektors 50, der die Funktion (c) darstellt, ist nicht gesetzt und hat daher keinen entsprechenden Eintrag oder Parameterwert in der Tabelle 52. Das dritte Bit des Pfadvektors 50, das die Funktion (f) darstellt, ist gesetzt und weist daher mindestens einen zugehörigen Parameterwert in der Tabelle 52 auf. Wie in Tabelle 50 gezeigt, verwendet die Funktion (f) den Parameterwert „22”. Ähnlich ist das vierte Bit des Pfadvektors 50, das die Funktion (g) darstellt, gesetzt und weist daher mindestens einen zugeordneten Parameterwert in der Tabelle 52 auf. Wie in Tabelle 52 gezeigt, verwendet die Funktion (g) den Parameterwert „0”. Es sollte verstanden werden, dass nicht jedes Bit im Pfadvektor notwendigerweise einen Eintrag in der Tabelle aufweist und nicht jeder Parameterwert aufgezeichnet wird. Das heißt, während unkritische Funktionen in einem jeweiligen Pfad verwendet und ausgeführt werden, werden nur die kritischen Funktionen, die ausgeführt werden, durch das Arbitrierungsmodul aufgezeichnet, um zu bestimmen, welcher Pfad die korrekte Ausgabe liefert.
-
Nachdem jede Tabelle für jeden Pfad erzeugt wird, vergleicht das Arbitrierungsmodul verschiedene Faktoren entweder einzeln oder in Kombination, die Zeitstempel, den verwendeten Pfad und Parameterwerte beinhalten.
-
9 veranschaulicht ein Flussdiagramm eines Prozesses zur Aufzeichnung von Ausführungspfaden und Werten. In Schritt 60 wird eine Routine zum Aufzeichnen des Ausführungspfades und Parameterwerte jeder Funktion eingeleitet. In Schritt 61 wird ein Anfangszeitstempel mit den Daten für einen Vektor aufgezeichnet. Dieser Zeitstempel kann aus den fusionierten Sensordaten übernommen werden.
-
In Schritt 62 werden kritische Funktionen der verschiedenen Pfade für eine Liste identifiziert und zur Speicherung eingeleitet. Ein Listenkopf wird verwendet, um einen Anfang einer Liste anzuzeigen.
-
In Schritt 63 wird eine Adresse als die aktuelle Funktionsadresse gesetzt. Das heißt, eine Adresse für den Knoten, von dem die aktuelle Funktion ausgeführt wird, wird als die aktuelle Adresse gesetzt.
-
In Schritt 64 wird eine Bestimmung durchgeführt, ob die aktuelle Adresse Teil einer aktuellen Liste ist. Es sollten alle Funktionen abgerufen werden, ob sie kritisch oder unkritisch in einer Ausführungszeichenfolge ausgeführt werden; die Routine zeichnet jedoch nur Daten für kritische Funktionen auf. Wenn die aktuelle Adresse Teil der aktuellen Liste ist, die eine kritische Funktion darstellt, geht die Routine zu Schritt 65 über; andernfalls geht die Routine zu Schritt 66 über.
-
In Schritt 65 wird die Funktion als kritische Funktion erkannt und Parameterwerte für diese kritische Funktion während der Ausführung aufgezeichnet.
-
In Schritt 66 wird eine Bestimmung durchgeführt, ob die Ausführungszeichenfolge vollständig ist. Wenn die Bestimmung durchgeführt wird, dass keine zusätzlichen Funktionen ausgeführt werden müssen, geht die Routine zu Schritt 68 über, wobei die Routine endet. Wenn die Bestimmung gemacht wird, dass die Ausführungszeichenfolge nicht vollständig ist und dass zusätzliche Funktionen eine Ausführung erfordern, geht die Routine zu Schritt 67 über.
-
In Schritt 67 identifiziert die Routine die nächste Funktion in der Ausführungszeichenfolge und die Routine kehrt zum Schritt 63 zurück, um diese nächste Funktion als die aktuelle Funktionsadresse einzustellen.
-
Es sollte verstanden werden, dass Funktionen mehrfach in einem aufrufenden Baum zur Ausführung aufgerufen werden können und jedes Mal, wenn eine Funktion aufgerufen wird, als eine andere Funktion behandelt wird, da nur ein Pfad eines Programms ausgeführt wird und die auf jedem Pfad ausgeführten Funktionen so sequentiell durchgeführt werden. Nachdem eine Prüfung für jede Funktion berücksichtigt wird, ob kritisch oder unkritisch, werden nur entsprechende Funktionen als kritisch erkannt.
-
10 veranschaulicht ein exemplarisches Arbitrierungsmodul 22, das verwendet wird, um eine Arbitrierungsstrategie auszuführen. Das Arbitrierungsmodul 22 beinhaltet einen ersten kreisförmigen Speicherpuffer 72 und einen zweiten kreisförmigen Speicherpuffer 74. Daten wie Zeitstempel, ausgeführte Pfade und Parameterwerte werden in einen jeweiligen Puffer eingegeben, basierend auf der Anzahl der Prozessoren, die redundante Operationen ausführen. Es sollte verstanden werden, dass die Anzahl der Puffer typischerweise der Anzahl der redundanten Prozessoren entspricht, die Funktionen ausführen. Während daher das exemplarische Arbitrierungsmodul 22 zwei kreisförmige Puffer darstellt, können mehr Puffer verwendet werden, wenn mehr als zwei redundante Prozessoren verwendet werden. Jeder kreisförmige Puffer für jeden redundanten Prozessor speichert einen kurzen Verlauf von Werten (z. B. 3 Werte – 1 aktuellen Wert und 2 vorherige Werte). Wenn die Ausgänge des Prozessors nicht übereinstimmen, verwendet das Arbitrierungsmodul 22 verschiedene Faktoren und vergleicht diese jeweiligen Faktoren von den redundanten Prozessoren. Die Arbitrierungslogik im Arbitrierungsmodul 22 wird zur Entwurfszeit bestimmt und zur Laufzeitbenutzung gespeichert.
-
Das Arbitrierungsmodul 22 beinhaltet eine Logikfunktion 76, in der die Kriterien, auf die das Arbitrierungsmodul 22 angewiesen ist, gemäß der Funktion, die zum Identifizieren einer Entscheidung verwendet wird, gewichtet werden können. Zusätzlich beinhaltet das Arbitrierungsmodul 22 eine Nachschlagetabelle 78. Die Nachschlagetabelle 78 liefert feste Entscheidungen auf der Grundlage der Eingabewerte.
-
Das Arbitrierungsmodul 22 beinhaltet ferner einen Entscheider 80, der eine Kombination der Entscheidungen verwendet, die durch die Strategie der Logikfunktion 76 und der Nachschlagetabelle 78 abgeleitet werden.
-
Die Logikfunktion 76 kann durch die folgende Formel dargestellt werden: De = max n / i=1 (w1Ti + w2Pi + w3vi) wobei Ti eine Zeitstempelausgabe von Pfad i ist, Pi ist eine Vorliebe für eine Ausgabe des Pfades i, vi ist die Präferenz des Ausgangspfads, der auf Pfad i verwendet wird, w1, w2, w3 sind Gewichte für die Bedeutung jedes Faktors. Jedes der Gewichte kann zur Entwurfszeit vorgegeben werden und variiert entsprechend der ausgeführten Funktion oder einem Bereich, in dem die Funktion betrieben wird. Wenn beispielsweise die Funktion auf eine Geschwindigkeit eines Fahrzeugs bezogen ist, kann ein Gewichtungsfaktor w1 für die Präferenz der Wertausgabe vi 50% betragen, wohingegen, wenn sich die Funktion auf das Motordrehmoment bezieht, der Gewichtungsfaktor w1 für Die Präferenz der Wertausgabe v 75% betragen kann. In einem anderen Beispiel basiert ein Lenkvorgang auf der Geschwindigkeit des Fahrzeugs. Ein Fahrzeuggeschwindigkeitsparameter bei 65 mph kann eine andere Gewichtung aufweisen als ein Fahrzeuggeschwindigkeitsparameter von 75, da die Fahrzeuggeschwindigkeit beeinflussen kann, wie der Lenkwinkel eingestellt werden soll. Als Ergebnis werden die an verschiedenen Ausgängen angewendeten Gewichtungen auf der Grundlage der ausgeführten Funktion voreingestellt.
-
Unter Bezugnahme auf den Zeitstempelfaktor kann ein Zeitstempel Ti, der zu einem bestimmten Zeitpunkt vorgenommen wird, bevorzugter oder kritischer sein, als wenn er zu einem bestimmten Zeitpunkt vorgenommen wird. Infolgedessen kann ein größeres Gewicht auf die Zeitstempelparameter angewendet werden, im Gegensatz zu den Pfad- oder Parameterwerten, wenn die Bedingung es erfordert.
-
Unter Bezugnahme auf den Pfadfaktor kann eine stärkere Betonung auf den Pfad gelegt werden, der kritischere Funktionen relativ zu einem anderen Pfad verwendet. Es kann eine Strategie angewendet werden, bei der die kritischeren Funktionen, die für einen jeweiligen Pfad ausgeführt werden, um so größer sind, je größer das Vertrauen oder die Zuverlässigkeit der Ausgabe von diesem jeweiligen Pfad ist.
-
Unter Bezugnahme auf Parameterwerte, die von einer jeweiligen Funktion verwendet werden, kann eine stärkere Betonung auf Parameter angewendet werden, die innerhalb eines jeweiligen Parameterbetriebsbereichs oder innerhalb eines jeweiligen Abstands von einem Parameterzielwert liegen.
-
Basierend auf den verschiedenen Faktoren, wie hierin beschrieben, können unterschiedliche Gewichtungsfaktoren in der Logikfunktion 76 verwendet werden.
-
Die Nachschlagetabelle
78 stellt feste Entscheidungen auf der Grundlage der Unterschiede zwischen verschiedenen vorstehend beschriebenen Faktoren, wie beispielsweise Zeitstempeln, Pfaden und Parameterwerten, dar. Unterschiede können die Differenz der Zeitstempel der Vergleichspfade oder zwischen einem Zielzeitstempel, den Unterschieden zwischen den ausgeführten Pfaden, wie beispielsweise den kritischen Funktionen und den Unterschieden zwischen den Parameterwerten der Vergleichspfade oder einem Parameterzielwert, beinhalten. Basierend auf den Vergleichen jeder Kategorie wird eine feste Entscheidungsausgabe angewendet. Eine exemplarische Nachschlagetabelle ist wie folgt dargestellt:
T-diff Bereich | P-diff | Zeiger | Entscheidung |
[0, 1] | abcdg, abdg | V1[0,10] | 0(P1) |
[0, 3] | abdg, aefg | V1[0, 4], v2[1,10] | 0max |
-
Der Entscheider 80 kann nur die Ergebnisse aus der Logikfunktion 76 nur die Ergebnisse der Nachschlagetabelle 78 oder eine jeweilige Kombination der Logikfunktion 76 und der Nachschlagetabelle 78 verwenden, um zu bestimmen, welche Ausgangsergebnisse auf ein anderes Modul zur zusätzlichen Verarbeitung angewendet werden sollen. Zusätzliche Module können andere Steuerungen, Vorrichtungen, Subsysteme oder Systeme beinhalten, sind aber nicht darauf beschränkt. Diese Information kann verwendet werden, um weitere Aufgaben auszuführen oder kann verwendet werden, um einen Fahrzeugbetrieb basierend auf den Ausgabeergebnissen zu ermöglichen, weitere Aufgaben auszuführen oder kann verwendet werden, um ein Fahrzeug Operationen basierend auf der Ausgangssignalergebnisse.
-
Während bestimmte Ausführungsformen der vorliegenden Erfindung in Einzelheiten beschrieben wurden, werden Fachleute auf dem Gebiet, auf das sich diese Erfindung bezieht, verschiedene alternative Entwürfe und Ausführungsformen für die Durchführung der Erfindung erkennen, wie durch die folgenden Patentansprüche bestimmt.