-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft allgemein das Gebiet der Elektronik. Spezieller betrifft eine Ausführungsform die Verbesserung von Diagnostikfähigkeiten von Datenverarbeitungssystemen durch Kombinieren einer Variablenpatrouillierungs-Anwendungsprogrammierschnittstelle (API) und eines Vergleichsmechanismus von Variablen.
-
HINTERGRUND
-
In der Kraftfahrzeugindustrie verwendete Systeme einer elektronischen Steuereinheit (ECU) können eine große Vielfalt von Funktionen abdecken, die Fahrzeugsteuerung und/oder -sicherheit zugeordnet sind. Zum Beispiel empfangen ECU elektrische Signale von einem oder mehreren Sensoren, werten diese aus und berechnen dann Auslösungssignale für mechanische Aktoren. Die große Verbreitung von ECU hat zu Besorgnissen bezüglich der Aufrechterhaltung der Fahrzeugkontrolle und/oder -sicherheit in solchen Systemen geführt.
-
Figurenliste
-
Die ausführliche Beschreibung wird unter Bezugnahme auf die beigefügten Figuren bereitgestellt. In den Figuren identifiziert die erste Stelle(n) einer Bezugszahl die Figur, in der die Bezugszahl zuerst erscheint. Die Verwendung derselben Bezugszahlen in verschiedenen Figuren gibt ähnliche oder identische Posten an.
- 1 zeigt eine Blockdarstellung eines bedarfsgesteuerten Quervergleichssystems gemäß einer Ausführungsform.
- 2 zeigt eine Blockdarstellung einer Architektur auf hoher Ebene für bedarfsgesteuerten Quervergleich (ODCC - On-Demand Cross Comparison) gemäß einer Ausführungsform.
- 3 und 4 zeigen Blockdarstellungen von fehlertoleranten Hardware-Architekturen auf hoher Ebene gemäß einigen Ausführungsformen.
- 5 und 6 zeigen Abläufe auf Systemebene für ODCC der Konfigurationen von 3 bzw. 4 gemäß einigen Ausführungsformen.
- 7 zeigt eine beispielhafte gleitende Pufferdatenstruktur, die zum Speichern und Vergleichen der Schnappschussdaten verwendet werden kann, gemäß einer Ausführungsform.
- 8 und 9 zeigen Blockdarstellungen von Ausführungsformen von Datenverarbeitungssystemen, die in verschiedenen hier besprochenen Ausführungsformen benutzt werden können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In der folgenden Beschreibung werden zahlreiche spezielle Einzelheiten dargelegt, um ein umfassendes Verständnis verschiedener Ausführungsformen zu vermitteln. Jedoch können verschiedene Ausführungsformen ohne die speziellen Einzelheiten umgesetzt werden. In anderen Fällen wurden wohlbekannte Verfahren, Prozeduren, Komponenten und Schaltkreise nicht ausführlich beschrieben, um die speziellen Ausführungsformen nicht zu verschleiern. Ferner können verschiedene Aspekte von Ausführungsformen unter Verwendung verschiedener Mittel durchgeführt werden, wie etwa integrierter Halbleiterschaltkreise („Hardware“), computerlesbarer Befehle, die in einem oder mehreren Programmen organisiert sind („Software“) oder mancher Kombinationen von Software und Hardware. Für die Zwecke dieser Offenbarung soll eine Bezugnahme auf „Logik“ entweder Hardware (wie etwa Logikschaltkreise oder allgemeiner Schaltkreise oder eine Schaltung), Software, Firmware oder eine gewisse Kombination davon bedeuten.
-
Wie oben erwähnt hat die große Verbreitung von ECU zu Besorgnissen bezüglich der Aufrechterhaltung der Fahrzeugkontrolle und/oder -sicherheit in der Kraftfahrzeugindustrie geführt. Außerdem erfordern elektrische, elektronische oder programmierbare elektronische Systeme (E/E/PS), die in Kraftfahrzeug- und/oder (z. B. industriellen) IOT-Systemen (Internet der Dinge) verwendet werden, im Allgemeinen Einhaltung von Funktionssicherheitsstandards wie IEC-61508 und/oder ISO-26262. In diesen E/E/PS-Systemen verwendete Datenverarbeitungsplattformen können ihrerseits eingebaute Fehlerdiagnose- und Fehlerkorrekturfähigkeiten erfordern, um zufällige Hardwareausfälle, die in Hardwareelementen wie CPU-Kernen (Zentralverarbeitungseinheit oder hier austauschbar als „Prozessor“ bezeichnet), Speichern und/oder Interconnects auftreten, zu entdecken und/oder sich von diesen zu erholen. Diese Diagnosefähigkeiten können eine fehlerkontrollierte Umgebung für die Ausführung von Sicherheitsarbeitslasten garantieren, die dann verwendet werden können, um Ausgangsschnittstellen wie Aktoren, Motoren usw. anzusteuern. Jede CPU bzw. jeder Prozessor kann einen oder mehrere Prozessorkerne umfassen.
-
Zu diesem Zweck betreffen einige Ausführungsformen die Erweiterung von Diagnostikfähigkeiten von Datenverarbeitungssystemen durch Kombinieren von Variablenpatrouillierungs-Anwendungsprogrammschnittstelle (API) und Vergleichsmechanismus von Variablen. Die Datenverarbeitungssysteme können einen oder mehrere Prozessoren und/oder ECU umfassen. Eine oder mehrere Ausführungsformen wenden sich an die Bereitstellung und/oder Erweiterung(en) der Diagnostikfähigkeiten von Datenverarbeitungssystemen/-plattformen, die in betriebssicherheitsbezogenen Systemen, wie etwa Systemen des autonomen Fahrens und/oder des IOT verwendet werden. Die Ausführungsformen sind jedoch nicht auf ECU beschränkt und eine oder mehrere Ausführungsformen können auch für industrielle Sicherheit angewandt werden, die Benutzungsfälle wie industrielle PLC (programmierbare Logiksteuerung), Bewegungssteuerung, Robotik, Gateways usw. umfasst.
-
1 zeigt eine Blockdarstellung eines bedarfsgesteuerten Quervergleichssystems 100 gemäß einer Ausführungsform. Wie gezeigt werden zwei Arbeitslasten 102/104 auf zwei getrennten Prozessorkernen 106/108 ausgeführt, um jeweilige Sicherheitsvariablenmengen 110/112 zu bestimmen. Ein dritter Prozessorkern 114 vergleicht dann die Sicherheitsvariablenmengen und erzeugt ein Pass/Fail-Ergebnis oder eine Pass/Fail-Ausgabe.
-
Eine Sicherheitsanwendung besteht im Allgemeinen aus einer Menge von Variablen (die als Sicherheitsvariablen bekannt sind), die den Zustand des Systems, das sie verwaltet, effektiv erfassen. Diese Sicherheitsvariablen ändern sich während der Programmausführung fortgesetzt. Durch Ausführen von zwei unabhängigen Instanzen der Sicherheitsanwendung auf zwei unabhängigen CPU-/Prozessorkernen und durch Verwendung eines dritten CPU-/Prozessorkerns zum Vergleichen der zwei Instanzen von Sicherheitsvariablen kann die Diagnostikabdeckung der Datenverarbeitungsplattform signifikant verbessert werden. Diese Lösung wird hier als bedarfsgesteuerter Quervergleich (ODCC) bezeichnet und ist in 1 in Diagrammform dargestellt.
-
Außerdem werden traditionelle SoC und Prozessoren nicht im Kontext der Funktionssicherheit entwickelt und können somit für Kraftfahrzeug- und industrielle Benutzungsfälle nicht verwendet werden. Zu diesem Zweck bieten einige Ausführungsformen eine Technik zum Aufrüsten existierender Prozessorentwürfe auf Funktionssicherheitsniveau mit minimaler Mühe. Zum Beispiel erfordert Logik (die z. B. als softwarezentrisch implementiert sein kann) keinerlei Modifikation am CPU-/Prozessorsiliziumentwurf und verringert somit die Gesamtentwicklungszeit und/oder Kosten. Außerdem müssen keine spezialisierten Werkzeuge als Steuerflussprüfer und Pre-Pass-Compiler notwendig sein. Stattdessen können Kunden/Benutzer im Voraus aufgebaute, im Voraus validierte und sicherheitszertifizierte Bibliotheken zum Durchführen einer Variablenpatrouillierung von Sicherheitsvariablen mit auf die Anwendungslogik/-schicht begrenzten Änderungen bereitgestellt werden.
-
Bei einer Ausführungsform können Logik- und/oder verschiedene Komponenten (darunter eine oder mehrere der mit Bezug auf 1 et seq. besprochenen Komponenten) in einem Fahrzeug angebracht oder anderweitig physisch damit gekoppelt sein. Im vorliegenden Gebrauch bezieht sich ein „Fahrzeug“ im Allgemeinen auf eine beliebige Transportvorrichtung, die autonom (mit wenig oder keiner Einwirkung eines Menschen/Fahrers) betrieben werden kann, wie etwa ein Automobil, ein Lastwagen, ein Motorrad, ein Flugzeug, ein Hubschrauber, ein Boot/Schiff, ein Zug, eine Drohne usw., gleichgültig, ob das Fahrzeug ein Passagier- oder kommerzielles Fahrzeug ist und ungeachtet des Energiequellentyps (wie etwa eines oder mehrere von Fossilbrennstoff(en), Solarenergie, elektrische Energie, chemische Energie, Nuklearenergie usw.) und ungeachtet des physischen Zustands der Energiequelle (z. B. fest, flüssig, gasförmig usw.), die zum Bewegen des Fahrzeugs verwendet wird.
-
Bei mindestens einer Ausführungsform kann ODCC (bedarfsgesteuerter Quervergleich) als eine auf Logik oder Software basierende Redundanztechnik betrachtet werden, die unter lose gekoppelten Gleichschrittsystemen (LCLS) kategorisiert werden kann. Im vorliegenden Gebrauch kann „ODCC“ und „LCLS“ gleichbedeutend verwendet werden. Einige Funktionsprinzipien von ODCC werden in 1 bereitgestellt. ODCC kann die Diagnostikabdeckung (DC) vergrößern, indem genau dieselbe Arbeitslast auf zwei verschiedenen physischen Kernen laufen gelassen wird und der Zustand von Sicherheitsvariablen kontinuierlich verglichen wird, so dass jede Nichtübereinstimmung von Zustandsvariablen innerhalb des Intervalls der PST (Prozesssicherheitszeit) detektiert wird.
-
2 zeigt eine Blockdarstellung einer Architektur 200 auf hoher Ebene für ODCC gemäß einer Ausführungsform. In 2 sind Kern 0 und Kern 1 Kerne (könnten z. B. eine beliebige Art von Prozessorkern sein, wie etwa ein Vielzweck-Prozessorkern, Grafikprozessorkern usw., wie etwa auf der Basis von Atom, Core™ oder Xeon®, erhältlich von der Intel® Corporation), die in dem SoC (System-auf-Chip) oder Prozessorentwürfen anwesend sein könnten. Diese zwei Kerne erhalten die Aufgabe des Ausführens der Sicherheitsarbeitslasten und des Erzeugens der Signaturen der Sicherheitsvariablen. In 2 ist eine Komponente/Logik vorgesehen, die als Sicherheitsüberwachungsvorrichtung oder Sicherheitsinsel (oder SI, wie etwa eine ISI (Intel Safety Island), erhältlich von der Intel Corporation) bezeichnet wird, die einen weniger leistungsstarken und kleineren Kern (könnte vom Typ NIOS-II oder ARM® oder x86 CPU sein) enthält, der als Kern 2 angegeben ist. Auf Kern 2 läuft eine Firmware auf der Basis eines Echtzeit-Betriebssystems (RTOS) (könnte auf ThreadX™ oder einem ähnlich fähigen RTOS basieren), die als SI-Firmware (SI-FW) bezeichnet wird. Die SI-FW erhält die Aufgabe des Vergleichens der durch die Haupt-CPU erzeugten Signaturen.
-
Das SoC und die SI-Komponente werden unter Verwendung von Interconnects (z. B. des Interconnect 204), wie etwa eines On-Chip-Systemkoppelfeldes (wie etwa des IOSF (Intel On-Chip System Fabric)), eines PCIe-Busses (Peripheral Component Interconnect express), eines CAN-Busses (Controller Area Network) (z. B. für die Automobilindustrieanwendungen) oder eines beliebigen anderen Interconnect gekoppelt, um Signale zu übermitteln. Die SI könnte als integrierte Lösung implementiert werden, bei der die SI als ein IP-Block (Intellectual Property) im Chipsatz oder sogar im Prozessor integriert ist. Die SI könnte auch als diskrete Off-Chip-Lösung implementiert werden, z. B. in Form einer PCIe-Zusatzkarte oder als ASIC (anwendungsspezifische integrierte Schaltung), ein programmierbares FPGA (Field Programmable Gate Array) (das zum Beispiel auf die Verarbeitungsplattform aufgelötet ist).
-
Das Getrennthalten der SI (d. h. des Komparatorkerns) von (z. B. außerhalb einer) traditionellen SoC-Grenze ergibt einen oder mehrere der folgenden Vorteile: (1) vom Sicherheitsstandpunkt aus gesehen gibt es eine Möglichkeit eines Ausfalls gewöhnlicher Ursache, wenn derselbe CPU-Kern die Signatur erzeugt und die Vergleichsoperation ausführt (dies kann eliminiert werden, wenn der Komparatorkern (Teil der SI) den Vergleich ausführt); (2) die SI-Komponente kann zu einem existierenden SoC-Entwurf oder Prozessorentwurf entweder als integrierter IP-Block oder als eine diskrete Zusatzvorrichtung hinzugefügt werden (dies bedeutet, dass KundenBenutzer, die etwaige existierende Prozessorentwürfe und/oder andere COTS-Lösungen (Commercial, Off-the-Shelf) verwenden, einen Aufrüstungspfad zu Funktionssicherheit mit minimaler Mühe erhalten); und/oder (3) bei Hardware-fehlertoleranten bzw. HFT-Architekturen können die in jeder Datenverarbeitungsplattform (die auch als Kanal bekannt ist) anwesenden einzelnen SI miteinander gekoppelt werden. Dieser Ansatz könnte dabei helfen, die DC und somit insgesamte Sicherheitsintegrationsniveaus zu verbessern. Bei der integrierten Version befindet sich die SI oder Sicherheitsüberwachungsvorrichtung jedoch nicht außerhalb des SoC, sondern befindet sich stattdessen bei einer anderen Ausführungsform in einem getrennten Baustein, wodurch sich ein gewisser Grad des oben erwähnten Vorteils bzw. der oben erwähnten Vorteile ergibt.
-
3 zeigt eine Blockdarstellung einer Hardware-fehlertoleranten Architektur 300 auf hoher Ebene gemäß einer Ausführungsform. Hardware-fehlertolerante bzw. HFT-Architekturen bieten im Allgemeinen die Möglichkeit, die Sicherheitsfunktionalität sogar mit einem oder mehreren Hardwarefehlern bereitzustellen. Wie hier besprochen gibt 1oo1 HFT=0 (oder ein nichtredundantes System) an, und 1oo2 gibt HFT=1 (oder ein redundantes System), z. B. gemäß IEC 61508, an. Um solche Architekturen auf der Basis einiger Ausführungsformen zu implementieren, werden mehrere Datenverarbeitungsplattformen (die als Kanäle bekannt sind) verwendet, und die SI dieser Kanäle werden miteinander verbunden. Diese SI führen den Quervergleich von Signaturen durch. Daher stellt die Architektur 300 gemäß einer Ausführungsform ODCC in HFT-Architekturen bereit. Im Gegensatz zur traditionellen Lösung des Systems mit HFT=1, bei dem der Vergleich in einer Entität geschieht, wird der Vergleich hier in zwei unabhängigen SI durchgeführt, wodurch die SI-Implementierung redundant wird.
-
Bei einer Ausführungsform kann ein SoC auf der Basis des (z. B. von der Intel® Corporation bereitgestellten) Atom®-Prozessors mit vier Kernen bereitgestellt werden, die zur Ausführung der Sicherheitsarbeitslasten verwendet werden. Es ist möglich, aus den vier Kernen zwei LCLS-Paare von CPU zur Arbeitslastausführung zu konstruieren. In 3 wirken CPU0 und CPU1 als das LCLS-Paar 1 und CPU2 und CPU3 als LCLS Paar 2. Durch WL-0, WL-1 und WL-2 gegebene Sicherheitsarbeitslasten werden auf CPU0 und CPU1 (Teil des LCLS-Paars 1) ausgeführt, während durch WL-10, WL-11 und WL-12 gegebene Sicherheitsarbeitslasten auf CPU2 und CPU3 (Teil des LCLS-Paars 2) ausgeführt werden. Durch eine gegebene Arbeitslast durch duplizierte Ausführung auf CPUO/CPU1 und CPU2/CPU3 erzeugte Signaturen werden durch die SI 302 verglichen (d. h. es gibt zwei Paare von Vergleichsoperationen für zwei verschiedene WL, ein Paar ist für CPU0 gegenüber CPU1, und das andere Paar ist für CPU2 gegenüber CPU3).
-
4 zeigt eine Blockdarstellung einer Hardware-fehlertoleranten Architektur 400 auf hoher Ebene gemäß einer Ausführungsform. In 4 sind die SI der zwei Datenverarbeitungskanäle (d. h. Ch0 und Ch1) unter Verwendung einer seriellen Verbindung, wie etwa einer SPI (Serial Peripheral Interface), I2C (Inter-Integrated Circuit) oder I3C® (oder SenseWire) miteinander verbunden. Die CPU0 beider Kanäle wirken als LCLS-Paar 1, CPU1 beider Kanäle wirken als LCLS-Paar 2 und so weiter. Die CPU-Nummern von 4 beziehen sich auf die entsprechende CPU des anderen Kanals (der anderen Vorrichtung), auf dem dieselbe Menge von WL läuft, z. B. WL-0 bis WL-2. Durch WL-0, WL-1 und WL-2 gegebene Sicherheitsarbeitslasten werden auf CPU0 beider Kanäle ausgeführt. Durch eine gegebene Arbeitslast durch duplizierte Ausführung auf Kernen beider Kanäle erzeugte Signaturen werden dann durch die SI beider der Kanäle verglichen. Wenn einer der Vergleiche fehlschlägt, wird dies als ODCC-Fehlschlagbedingung behandelt, und das System wird als Ergebnis von ODCC-Fehlschlag bzw. -Fehlschlägen in den Sicherheitszustand versetzt.
-
5 und 6 zeigen Flüsse auf Systemebene für ODCC der Konfigurationen von 3 bzw. 4 gemäß einigen Ausführungsformen. Die Sicherheitsanwendung oder Arbeitslast des Kunden/Benutzers wird modifiziert, um die Signaturen ihrer Sicherheitsvariablen an spezifischen Punkten zu berechnen. Dabei könnte es sich, bestimmt durch den Endbenutzungsfall/die Anwendung des Kunden, um einige wenige Millisekunden bis sogar einige Stunden handeln. Die Signaturen werden unter Verwendung von CRC (Cyclic Redundancy Code) (wie etwa 32-Bit-CRC oder CRC-32) oder eines beliebigen anderen Hashing- oder Signaturauswertungsalgorithmus berechnet. Die Signatur wird dann über alle Arbeitslasten akkumuliert und (entweder als Teil von Arbeitslasten oder Treiber oder in einem globalen Lager) zusammen mit anderen Details, wie etwa Kernkennung (ID), Arbeitslast-ID, Schnappschuss-ID, Typdetails und/oder Zeitstempel gespeichert. Dies wird als LCLS-Schnappschuss oder ODCC-Schnappschuss bezeichnet.
-
Der ODCC-Schnappschuss identifiziert eindeutig die Signatur, die einer gegebenen Sicherheitsarbeitslast an einem beliebigen gegebenen Zeitpunkt während ihrer Ausführung entspricht. Es ist möglich, dass die Kunden die ODCC/LCLS-Bibliothek durch Übersteuerung und Hineinstecken ihres eigenen Signaturauswertungsalgorithmus anpassen. Die SI-FW (die z. B. die Quervergleicherlogik implementiert) sammelt periodisch die Menge von ODCC-Schnappschüssen aus dem Raum des Hosts. Der Transfer der ODCC-Schnappschüsse könnte über die Nachrichten über Interconnect (wie etwa PCIe-Mailbox) erfolgen, oder eine DMA-Engine (Direct Memory Access) könnte zur Beschleunigung verwendet werden. Wie hier besprochen bezieht sich der Ausdruck „Treiber“ allgemein auf einen Software-Gerätetreiber, z. B. für die SI, abhängig davon, wie die SI angeschlossen oder integriert ist, von PCIe, von SPI usw.
-
Im Fall der Architektur von 3 führt die SI-FW den Vergleich von durch die zwei unabhängigen Kerne, die dieselbe Arbeitslast ausführen, erzeugten Signaturen durch. Im Fall der Architektur von 4 erweitert die SI-FW die gesammelten Signaturen zum Quervergleich mit der Peer-SI-FW.
-
Aufgrund der Arbeitslast-Ausführungsdrifts senden möglicherweise nicht beide Kerne genau dieselbe Menge von Schnappschüssen zu einem beliebigen gegebenen Zeitpunkt. Das heißt, es können einige zusätzliche Schnappschüsse von einem der Kerne empfangen werden, während die anderen Kerne hinterherhinken könnten. Diese zusätzlichen Schnappschüsse werden zur Verarbeitung für das nächste Zeitintervall gespeichert. Dies hat Auswirkungen darauf, wie man Anforderungen der PST (Prozesssicherheitszeit) beweist. Bei den Schnappschüssen, die zur Verarbeitung in der nächsten PST-Periode gespeichert werden, wird die Fehlerdetektionszeit nun mehr als die PST. Außerdem werden die Fehler in diesem Fall innerhalb von (PST + Zeitverzögerung zwischen den zwei Kernen) detektiert. Um diese Verzögerung zu mindern, besteht eine der Möglichkeiten darin, den Polling-Timer der SI-FW zu verringern (z. B. auf die Hälfte der PST). Das Polling-Zeitintervall ist als die Zeit definiert, in der die SI-FW nach den Schnappschüssen vom Host anfordert. Das Polling-Zeitintervall wird durch die nachfolgend gegebene Formel bereitstellt:
-
Zum Beispiel bedeutet eine PST-Anforderung von 10 mS (Millisekunden), wie in einer beispielhaften Plattform, ein Polling-Zeitintervall von 4 mS.
-
Von einer Perspektive des Host-Softwarestapels aus gesehen gibt es verschiedene Weisen zur Ausführung der Arbeitslasten, (i) Einzel-OS (Betriebssystem), wobei Systemsoftware sicherstellt, dass die Arbeitslast/Anwendung auf zwei Kernen parallel läuft. In diesem Fall stellt Kombination von Anwendungen, Middleware und OS sicher, dass dieselbe Arbeitslast oder Anwendung gleichzeitig auf zwei Kernen ausgeführt wird. In diesem Fall ist die Erwartung, dass E/A (Eingabe/Ausgabe) so verwaltet wird, dass die Anwendung den Unterschied nicht detektiert, d. h. beide Instanzen erhalten die Eingabe zur selben Zeit ohne zusätzliche Verzögerungen (zum Beispiel unter Verwendung eines Master/Slave-Mechanismus, wobei eine der Arbeitslastinstanzen als Master wirkt und die E/A besitzt und die andere Instanz die E/A vom Master oder unter Verwendung eines beliebigen anderen Mechanismus empfängt, z. B. auf der Basis von Software-Ende-zu-Ende-Sicherheitsprotokollen für Kommunikationskanäle). (ii) Zwei VM (virtuelle Maschinen) laufen auf zwei getrennten Kernen, auf denen dieselbe Arbeitslast oder Anwendung läuft, parallel mit einer dritten VM, die die SI-Interaktion verwaltet (z. B. zusätzlich zu anderen dienstbezogenen Erledigungen). In diesem Fall stellen der VMM (Virtuellmaschinenmananger) oder andere Systemsoftwaremechanismen sicher, dass die Anwendungen zur selben Zeit gestartet werden und ähnlich wie bei der ersten Möglichkeit E/A unter Verwendung von Black Channel oder eines anderen Mechanismus verwaltet wird, um sicherzustellen, dass beide Anwendungsdistanzen zur selben Zeit eine Kopie der Eingabe (d. h. ohne zusätzliche Verzögerung) erhalten.
-
In beiden Fällen (und beliebigen anderen Konfigurationen) kann die Arbeitslast einige wenige Millisekunden bis einige wenige Stunden laufen, da sie sehr stark kundenwendungs-/-benutzungsspezifisch ist. Da das OS die Arbeitslast auf zwei Kernen laufen lässt, wird erwartet, dass die zwei Kerne nicht exakt dieselbe Menge von Anweisungen gleichzeitig ausführen. Es wird eine gewisse Zeitverzögerung zwischen zwei Kernausführungen bestimmen.
-
Bei einigen Ausführungsformen unterstützt das System mehrere Anwendungen oder Arbeitslasten, die parallel auf denselben zwei Kernen laufen, unter Verwendung eines Zeitscheibenmechanismus auf OS-Basis. Da diese Arbeitslasten auf zwei Kernen laufen, kann angenommen werden, dass diese in zwei getrennten Speicheradressenräumen laufen. Diese Annahme erfolgt, um FFI (Freiheit von Störungen) zwischen den zwei Instanzen und leichte Verwendung/Entwicklung/Entfaltung sicherzustellen. Bei mindestens einer Ausführungsform kann, wenn die Arbeitslast nicht kontinuierlich ausgeführt wird, angenommen werden, dass Komparatorlogik in der SI nicht aktiv ist, während Sicherheitsarbeitslasten nicht aktiv sind. Der Grund dafür besteht darin, dass die erforderliche DC für diese Arbeitslasten nur benötigt wird, wenn diese Arbeitslast aktiv ist.
-
7 zeigt eine beispielhafte gleitende Pufferdatenstruktur 700, die zum Speichern und Vergleichen der Schnappschussdaten verwendet werden kann, gemäß einer Ausführungsform. Der Algorithmus für das ODCC-Merkmal, der als Teil von SI-Firmware (FW) implementiert wird, wird nachfolgend besprochen. Die SI-FW muss den Betriebsmodus kennen, z. B. die Architektur von 3 oder 4, um den Vergleich durchzuführen. Um die Voreilungen/Verzögerungen in Schnappschussdaten zu berücksichtigen, wird ein gleitender Puffer verwendet, um den Vergleich von Signaturen zu akkumulieren und durchzuführen.
-
Wie in 7 gezeigt wird der gleitende Puffer auf der Basis der Arbeitslast-ID und Schnappschuss-ID indexiert. Auf der Basis der Arbeitslast-ID und Schnappschuss-ID wird jeder ankommende Schnappschuss in den gleitenden Puffer eingefügt. Das Flags-Feld, das diesem Eintrag entspricht, wird dann geeignet aktualisiert (gleichgültig, ob der Schnappschuss von dem ersten Agenten empfangen wird, der Vergleich fertig ist usw.). Der zweite Empfang eines Schnappschusses löst die eigentliche Vergleichsoperation aus.
-
Mit Bezug auf 5-7 wird der Gesamtalgorithmus mit der in der SI-FWgeführten Vergleichsoperation wie nachfolgend besprochen.
- 1. Einrichten eines Polling-Timer auf der Basis von PST-Anforderungen. Das Polling-Timer-Intervall wird auf der Basis der im vorherigen Abschnitt gegebenen Gleichung bereitgestellt. Es wird ein Polling-Timer-Intervall von 4 mS verwendet, um eine Garantie von 10 mS PST bereitzustellen. Der Timer wird zuallererst nicht aktiviert.
- 2. Der Polling-Timer wird aktiviert, wenn die erste Nachricht Start LCLS von beliebigen der Arbeitslast empfangen wird.
- 3. Bei Ablauf der Polling-Timers wird Folgendes durchgeführt:
- i. Reaktivieren des Polling-Timers für das nächste Zeitintervall
- ii. Senden einer Anforderungsnachricht LCLS-Schnappschuss zum Host, um die DMA-Speicherregion abzufragen, in der Schnappschüsse im Hostende akkumuliert werden.
- iii. Sicherstellen, dass die Antwort auf die Anforderung LCLS-Schnappschuss innerhalb einer vorbestimmten Zeit ankommt (z. B. unter Verwendung eines getrennten Timers). Die Antwortnachricht enthält die Startadresse und Größe der DMA-Region, die die Schnappschussdaten enthält.
- iv. Programmieren der DMA-Engine zum Kopieren der Schnappschussdaten aus dem Hostraum in den SI-Raum. Dies führt zu einer Verlagerung aller bisher gesammelten Schnappschusseinträge im Ende des Hosts zur SI-FW.
- v. Parsen der ankommenden Schnappschussdaten und Einfügen der Schnappschüsse in den gleitenden Puffer auf der Basis der Arbeitslast-ID, des Betriebsmodus und der Schnittstelle, auf der die Antwort empfangen wird.
- 4. Durchführen des Vergleichs an allen anstehenden Schnappschüssen wie folgt:
- i. Im Fall eines Sicherheitsvariablenvergleichs (z. B. gegeben durch Typ = 0x01) direktes Vergleichen der Signatur, und im Fall einer Übereinstimmung Sicherstellen, dass der Zeitstempel innerhalb von PST-Anforderungen liegt.
- ii. Im Fall von analogen Variablen (z. B. gegeben durch Typ = 0x02/0x03) Sicherstellen, dass der Wert der Variablen innerhalb des Toleranzbands liegt. Der Toleranzwert wird entweder als absolute Zahl bereitgestellt oder als Prozentsatz ausgedrückt.
-
Im Gegensatz dazu können einige Implementierungen als Ansätze auf Hardwarebasis und Softwarebasis kategorisiert werden. Ansätze auf Hardwarebasis wären zum Beispiel die Verwendung von Watchdog-Prozessoren, Gleichschritt oder Verwendung von Checkern. Es kann zum Beispiel Gleichschritt verwendet werden. Dabei werden zwei oder mehr unabhängige Kerne verwendet, um dieselbe CPU-Anweisung auszuführen, und dann die Ausgaben clockzyklusweise verglichen. Hardwararchitekturen auf der Basis eines strikt gekoppelten Gleichschritts, wie etwa DCLS (Dual-Core Locked Steps) basieren auf Gleichschritttechniken. Bei Techniken auf Softwarebasis wird eine Mehrkern-Hardwarearchitektur verwendet, um duplizierten Code auszuführen und dann Vergleich von Ausgaben durchzuführen. In der Regel wird ein Vordurchlauf-Compiler verwendet, um Duplikation auf prozeduraler Ebene durchzuführen und automatisch den Fehlerdetektionscode einzufügen. Die resultierenden ausführbaren Dateien werden dann auf unabhängigen Kernen einer Mehrkern-Hardware laufengelassen, um Softwareredundanz bereitzustellen. Bei anderen auf Software basierenden Ansätzen wie Steuerflussprüfung wird eine Signatur auf einer grundlegenden Blockebene erzeugt, die dann während Steuertransfers (wie etwa Verzweigungsanweisungen) verglichen werden.
-
Ansätze auf Hardwarebasis, die auf Gleichschritt basieren, erfordern jedoch im Allgemeinen Duplizieren der physischen CPU-Kerne sowie Aufnehmen einer Komparatoreinheit(en) in Hardware, um Ausgabevergleich(e) pro Zyklus durchzuführen. Dies führt zu zusätzlichen Entwicklungs- und Validierungsbemühungen/-kosten. Obwohl die Ausführung von Anweisungen auf duplizierten Kernen dabei hilft, Fehler zu entdecken, die in dem Kern-Subsystem auftreten, sind die Speicher- und Interconnect-Komponenten am Ende Quellen für Fehlschläge üblicher Ursachen. Dies erfordert einen zusätzlichen Sicherheitsmechanismus zum Entdecken von Fehlern in den Speicher- und Interconnect-Komponenten. Dieser Ansatz kann auch die effektive verfügbare Leistungsfähigkeit begrenzen, wenn eine Sicherheitsarbeitslast nur ein kleiner Teil einer Gesamtarbeitslast ist, ungeachtet der Menge an Sicherheitsarbeitslast, müssen die Kerne in den Gleichschritt versetzt werden.
-
Auf Software basierende Ansätze, wie etwa die Verwendung von Vordurchlauf-Compilern und Steuerflussprüfmethoden basieren ferner auf spezialisierten Werkzeugen, die architekturabhängig sind und somit für neuere CPU-Architekturen zusätzliche Entwicklungs-/Portierungsbemühungen erfordern können. Ein Hauptnachteil in diesen Systemen kann darin bestehen, dass der signaturerzeugende Kern oft zum Durchführen des Signaturvergleichs verwendet wird. Dies kann am Ende eine Quelle von Fehlschlag üblicher Ursache werden. Es ist möglich, dass ein fehlerhafter Kern eine nichtidentische Signatur erzeugt, und dennoch während des Vergleichs ein falsches positives Ergebnis bereitstellt. Die Diagnostikabdeckung, die durch diese Mechanismen beansprucht werden kann, kann daher begrenzt sein und kann von verschiedenen Implementierungsfaktoren abhängen. Außerdem können sie extensive Expertise eines Kernentwurfs erfordern, um solche Mechanismen zu implementieren, was zu einer beträchtlichen Menge an Bemühungen für die Systemintegratoren führen würde.
-
8 zeigt eine Blockdarstellung einer SoC-Kapselung gemäß einer Ausführungsform. Wie in 8 dargestellt umfasst das SoC 802 einen oder mehrere Zentralverarbeitungseinheit- bzw. CPU-Kerne 820, einen oder mehrere Grafikverarbeitungseinheit- bzw. GPU-Kerne 830, eine Eingabe/Ausgabe- bzw. E/A-Schnittstelle 840 und einen Speichercontroller 842. Verschiedene Komponenten der SoC-Kapselung 802 können mit einem Interconnect oder Bus, wie etwa hier mit Bezug auf die anderen Figuren besprochen, gekoppelt sein. Außerdem kann die SoC-Kapselung 802 mehr oder weniger Komponenten umfassen, wie etwa die hier mit Bezug auf die anderen Figuren besprochenen. Ferner kann jede Komponente der SoC-Kapselung 820 eine oder mehrere andere Komponenten umfassen, z. B. wie mit Bezug auf die anderen vorliegenden Figuren besprochen. Bei einer Ausführungsform werden die SoC-Kapselung 802 (und ihre Komponenten) auf einem oder mehreren integrierten Schaltungs- bzw. IC-Bausteinen bereitgestellt, die z. B. in eine einzige Halbleitervorrichtung gekapselt werden.
-
Wie in 8 dargestellt, ist die SoC-Kapselung 802 über den Speichercontroller 842 mit einem Speicher 860 gekoppelt. Bei einer Ausführungsform kann der Speicher 860 (oder ein Teil davon) auf der SoC-Kapselung 802 integriert sein.
-
Die E/A-Schnittstelle 840 kann z. B. über ein Interconnect und/oder einen Bus, wie etwa hier mit Bezug auf andere Figuren besprochen, mit einer oder mehreren E/A-Vorrichtungen 870 gekoppelt sein. Die E/A-Vorrichtung(en) 870 können eines oder mehrere einer Tastatur, einer Maus, eines Touchpad, einer Anzeige, einer Bild-/Videoaufnahmevorrichtung (wie etwa einer Kamera oder eines Camcorders/Videorekorders), eines Touchscreen, eines Lautsprechers oder dergleichen umfassen.
-
9 ist eine Blockdarstellung eines Verarbeitungssystems 900 gemäß einer Ausführungsform. Bei verschiedenen Ausführungsformen umfasst das System 900 einen oder mehrere Prozessoren 902 und einen oder mehrere Grafikprozessoren 908 und kann ein Einzelprozessor-Desktop-System, ein Mehrprozessor-Workstation-System oder ein Serversystem mit einer großen Anzahl von Prozessoren 902 oder Prozessorkernen 907 sein. Bei einer Ausführungsform ist das System 900 eine Verarbeitungsplattform, die zur Verwendung in mobilen, in der Hand gehaltenen oder eingebetteten Vorrichtungen in eine integrierte Schaltung eines Systems auf einem Chip (SoC oder SOC) integriert ist.
-
Eine Ausführungsform des Systems 900 kann eine Spielplattform auf Serverbasis, eine Spielkonsole, einschließlich einer Spiel- und Medienkonsole, eine Mobil-Spielkonsole, eine Handheld-Spielkonsole oder eine Online-Spielkonsole umfassen oder darin integriert sein. Bei einigen Ausführungsformen ist das System 900 ein Mobiltelefon, ein Smartphone, eine Tablet-Datenverarbeitungsvorrichtung oder mobile Internet-Vorrichtung. Das Datenverarbeitungssystem 900 kann auch eine Wearable-Vorrichtung, wie etwa eine Smartwatch-Wearable-Vorrichtung, eine intelligente Brillenvorrichtung, eine Augmented-Reality-Vorrichtung oder Virtual-Reality-Vorrichtung, umfassen oder damit gekoppelt oder darin integriert sein. Bei einigen Ausführungsformen ist das Datenverarbeitungssystem 900 eine Fernseher- oder Set-Top-Box-Vorrichtung mit einem oder mehreren Prozessoren 902 und einer grafischen Schnittstelle, die durch einen oder mehrere Grafikprozessoren 908 erzeugt wird.
-
Bei einigen Ausführungsformen können der eine oder die mehreren Prozessoren 902 jeweils einen oder mehrere Prozessorkerne 907 zum Verarbeiten von Anweisungen, die, wenn sie ausgeführt werden, Operationen für System- und Benutzersoftware ausführen. Bei einigen Ausführungsformen ist jeder des einen oder der mehreren Prozessorkerne 907 dafür ausgelegt, einen spezifischen Anweisungssatz 909 zu verarbeiten. Bei einigen Ausführungsformen kann der Anweisungssatz 909 CISC (Complex Instruction Set Computing), RISC (Reduced Instruction Set Computing) oder Datenverarbeitung über VLIW (Very Long Instruction Word) ermöglichen. Mehrere Prozessorkerne 907 können jeweils einen anderen Anweisungssatz 909 verarbeiten, der Anweisungen zur Ermöglichung der Emulation anderer Anweisungssätze umfassen kann. Der Prozessorkern 907 kann auch andere Verarbeitungsvorrichtungen umfassen, wie etwa einen DSP (digitalen Signalprozessor).
-
Bei einigen Ausführungsformen umfasst der Prozessor 902 Cache-Speicher 904. Abhängig von der Architektur kann der Prozessor 902 einen einzigen internen Cache oder mehrere Ebenen von internem Cache aufweisen. Bei einigen Ausführungsformen wird der Cache-Speicher unter den verschiedenen Komponenten des Prozessors 902 geteilt. Bei einigen Ausführungsformen verwendet der Prozessor 902 auch einen externen Cache (z. B. einen L3-Cache (Level-3) oder einen LLC (Last Level Cache)) (nicht gezeigt), der unter den Prozessorkernen 907 unter Verwendung bekannter Cache-Kohärenztechniken geteilt werden kann. Ein Registerfile 906 ist zusätzlich in dem Prozessor 902 enthalten, das verschiedene Arten von Registern zum Speichern verschiedener Arten von Daten umfassen kann (z. B. Integer-Register, Floating-Point-Register, Statusregister und ein Anweisungszeigerregister). Einige Register können Vielzweckregister sein, während andere Register für den Entwurf des Prozessors 902 spezifisch sein können.
-
Bei einigen Ausführungsformen ist der Prozessor 902 mit einem Prozessorbus 910 gekoppelt, um Kommunikationssignale wie Adressen-, Daten- oder Steuersignale zwischen dem Prozessor 902 und anderen Komponenten in dem System 900 zu übertragen. Bei einer Ausführungsform verwendet das System 900 eine beispielhafte „Hub“-Systemarchitektur, die einen Speichercontroller-Hub 916 und einen Eingabe-/Ausgabe- bzw. E/A-Controller-Hub 930 umfasst. Ein Speichercontroller-Hub 916 ermöglicht Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 900, während ein E/A-Controller-Hub (ICH) 930 Verbindungen mit E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellt. Bei einer Ausführungsform ist die Logik des Speichercontroller-Hub 916 in dem Prozessor integriert.
-
Die Speichervorrichtung 920 kann eine DRAM-Vorrichtung (dynamischer Direktzugriffsspeicher), eine SRAM-Vorrichtung (statischer Direktzugriffsspeicher), eine Flash-Speichervorrichtung, eine Phasenänderungs-Speichervorrichtung oder eine gewisse andere Speichervorrichtung mit geeigneter Leistungsfähigkeit zum Dienen als Prozessspeicher sein. Bei einer Ausführungsform kann die Speichervorrichtung 920 als Systemspeicher für das System 900 arbeiten, um Daten 922 und Anweisungen 921 zur Verwendung, wenn der eine oder die mehreren Prozessoren 902 eine Anwendung oder einen Prozess ausführen, zu speichern. Der Speichercontroller-Hub 916 ist auch an einen optionalen externen Grafikprozessor 912 angeschlossen, der mit dem einen oder den mehreren Grafikprozessoren 908 in den Prozessoren 902 kommunizieren kann, um Grafik- und Medienoperationen auszuführen.
-
Bei einigen Ausführungsformen ermöglicht der ICH 930 Peripherievorrichtungen, sich über einen Hochgeschwindigkeits-E/A-Bus mit der Speichervorrichtung 920 und dem Prozessor 902 zu verbinden. Die E/A-Peripherievorrichtungen umfassen, aber ohne Beschränkung darauf, einen Audiocontroller 946, eine Firmwareschnittstelle 928, einen drahtlosen Sendeempfänger 926 (z. B. WiFi, Bluetooth), eine Datenspeicherungsvorrichtung 924 (z. B. Festplatte, Flash-Speicher usw.) und einen Legacy-E/A-Controller 940 zur Kopplung von veralteten Vorrichtungen (z. B. PS/S (Personal System 2)) mit dem System. Ein oder mehrere USB-Controller 942 (Universal Serial Bus) verbinden Eingabevorrichtungen, wie etwa Kombinationen aus Tastatur und Maus 944. Ein Netzwerkcontroller 934 kann auch an den ICH 930 angeschlossen sein. Bei einigen Ausführungsformen ist ein (nicht gezeigter) hochleistungsfähiger Netzwerkcontroller an den Prozessorbus 910 angeschlossen. Es versteht sich, dass das gezeigte System 900 beispielhaft und nicht einschränkend ist, da auch andere Arten von Datenverarbeitungssystemen verwendet werden können, die anders konfiguriert sind. Zum Beispiel kann der E/A-Controller-Hub 930 in den einen oder die mehreren Prozessoren 902 integriert sein, oder der Speichercontroller-Hub 916 und der E/A-Controller-Hub 930 können in einen diskreten externen Grafikprozessor, wie etwa den externen Grafikprozessor 912 integriert sein.
-
Die folgenden Beispiele betreffen weitere Ausführungsformen. Beispiel 1 umfasst eine Vorrichtung, umfassend: mehrere Prozessorkerne zum Ausführen einer oder mehrerer Arbeitslasten, die Operationen einer oder mehrerer Komponenten eines Fahrzeugs entsprechen; einen ersten Prozessorkern der mehreren Prozessorkerne zum Ausführen einer ersten Instanz einer Arbeitslast zur Erzeugung einer ersten Menge von Sicherheitsvariablen; einen zweiten Prozessorkern der mehreren Prozessorkerne zum Ausführen einer zweiten Instanz einer Arbeitslast zur Erzeugung einer zweiten Menge von Sicherheitsvariablen; und einen dritten Prozessorkern der mehreren Prozessorkerne zur Erzeugung eines Signals als Reaktion auf Vergleich der ersten Menge von Sicherheitsvariablen und der zweiten Menge von Sicherheitsvariablen. Beispiel 2 umfasst die Vorrichtung nach Beispiel 1, wobei der dritte Prozessorkern eine Nichtübereinstimmung zwischen der ersten Menge von Sicherheitsvariablen und der zweiten Menge von Sicherheitsvariablen innerhalb eines Prozesssicherheits-Zeitintervalls detektieren soll. Beispiel 3 umfasst die Vorrichtung nach Beispiel 1, wobei ein System-auf-Chip den ersten Prozessorkern und den zweiten Prozessorkern umfasst, wobei eine Sicherheitsinsel den dritten Prozessorkern umfasst. Beispiel 4 umfasst die Vorrichtung nach Beispiel 3, wobei das System-auf-Chip und die Sicherheitsinsel über ein Interconnect gekoppelt sind. Beispiel 5 umfasst die Vorrichtung nach Beispiel 4, wobei das Interconnect ein On-Chip-Systemkoppelfeld und/oder einen PCIe-Bus (Peripheral Component Interconnect express) und/oder einen CAN-Bus (Controller Area Network) umfasst. Beispiel 6 umfasst die Vorrichtung nach Beispiel 1, wobei ein Prozessor die mehreren Prozessorkerne umfasst. Beispiel 7 umfasst die Vorrichtung nach Beispiel 1, wobei eine SOC-Vorrichtung (System On Chip) die mehreren Prozessorkerne, Speicher und einen CAN-Bus umfasst. Beispiel 8 umfasst die Vorrichtung nach Beispiel 1, wobei eine Vorrichtung des Internet der Dinge (IoT) oder ein Fahrzeug die mehreren Prozessorkerne und/oder Speicher umfasst. Beispiel 9 umfasst die Vorrichtung nach Beispiel 1, wobei das Fahrzeug ein Automobil, ein Lastwagen, ein Motorrad, ein Flugzeug, ein Hubschrauber, ein Boot/Schiff, ein Zug oder eine Drohne ist. Beispiel 10 umfasst eine Vorrichtung, umfassend: mehrere Prozessorkerne zum Ausführen einer oder mehrerer Arbeitslasten, die Operationen einer oder mehrerer Komponenten eines Fahrzeugs entsprechen; und einen ersten Prozessorkern der mehreren Prozessorkerne zum Ausführen einer ersten Instanz einer ersten Mehrzahl von Arbeitslasten zur Erzeugung einer ersten Menge von Sicherheitsvariablen; einen zweiten Prozessorkern der mehreren Prozessorkerne zum Ausführen einer zweiten Instanz einer ersten Mehrzahl von Arbeitslasten zur Erzeugung einer zweiten Menge von Sicherheitsvariablen; und einen dritten Prozessorkern der mehreren Prozessorkerne zur Erzeugung eines Signals als Reaktion auf Vergleich der ersten Menge von Sicherheitsvariablen und der zweiten Menge von Sicherheitsvariablen. Beispiel 11 umfasst die Vorrichtung nach Beispiel 10, wobei der dritte Prozessorkern eine Nichtübereinstimmung zwischen der ersten Menge von Sicherheitsvariablen und der zweiten Menge von Sicherheitsvariablen innerhalb eines Prozesssicherheits-Zeitintervalls detektieren soll. Beispiel 12 umfasst die Vorrichtung nach Beispiel 10, wobei ein System-auf-Chip den ersten Prozessorkern und den zweiten Prozessorkern umfasst, wobei eine Sicherheitsinsel den dritten Prozessorkern umfasst. Beispiel 13 umfasst die Vorrichtung nach Beispiel 10, wobei das Fahrzeug ein Automobil, ein Lastwagen, ein Motorrad, ein Flugzeug, ein Hubschrauber, ein Boot/Schiff, ein Zug oder eine Drohne ist.
-
Beispiel 14 umfasst eine Vorrichtung, umfassend: einen ersten Prozessorkern eines ersten Datenverarbeitungskanals zur Ausführung einer ersten Instanz einer ersten Mehrzahl von Arbeitslasten; einen ersten Prozessorkern eines zweiten Datenverarbeitungskanals zur Ausführung einer zweiten Instanz der ersten Mehrzahl von Arbeitslasten; und ein Interconnect zum Koppeln von Sicherheitsinseln des ersten Datenverarbeitungskanals und des zweiten Datenverarbeitungskanals, wobei die erste Mehrzahl von Arbeitslasten Operationen einer oder mehrerer Komponenten eines Fahrzeugs entspricht. Beispiel 15 umfasst die Vorrichtung nach Beispiel 14, wobei das Interconnect eine SPI-Schnittstelle (Serial Peripheral Interface) und/oder eine I2C-Schnittstelle (Inter-Integrated Circuit) und/oder eine SenseWire™-Schnittstelle umfasst. Beispiel 16 umfasst die Vorrichtung nach Beispiel 14, ferner umfassend: einen ersten Prozessorkern eines dritten Datenverarbeitungskanals zum Ausführen einer ersten Instanz einer zweiten Mehrzahl von Arbeitslasten; und einen ersten Prozessorkern eines vierten Datenverarbeitungskanals zur Ausführung einer zweiten Instanz der zweiten Mehrzahl von Arbeitslasten, wobei das Interconnect Sicherheitsinseln des dritten Datenverarbeitungskanals und des vierten Datenverarbeitungskanals koppeln soll. Beispiel 17 umfasst die Vorrichtung nach Beispiel 14, wobei das Fahrzeug ein Automobil, ein Lastwagen, ein Motorrad, ein Flugzeug, ein Hubschrauber, ein Boot/Schiff, ein Zug oder eine Drohne ist.
-
Beispiel 18 umfasst ein oder mehrere computerlesbare Medien, die eine oder mehrere Anweisungen umfassen, die, wenn sie auf mindestens einem Prozessor ausgeführt werden, den mindestens einen Prozessor dafür auslegen, eine oder mehrere Operationen auszuführen zum Ausführen einer oder mehrerer Arbeitslasten entsprechend Operationen einer oder mehrerer Komponenten eines Fahrzeugs; Ausführen einer ersten Instanz einer Arbeitslast in einem ersten Prozessorkern des Prozessors, um eine erste Menge von Sicherheitsvariablen zu erzeugen; Ausführen einer zweiten Instanz der Arbeitslast in einem zweiten Prozessorkern des Prozessors, um eine zweite Menge von Sicherheitsvariablen zu erzeugen; und Bewirken der Erzeugung eines Signals in einem dritten Prozessorkern des Prozessors als Reaktion auf Vergleich der ersten Menge von Sicherheitsvariablen und der zweiten Menge von Sicherheitsvariablen. Beispiel 19 umfasst das eine oder die mehreren computerlesbaren Medien nach Beispiel 18, ferner umfassend: eine oder mehrere Anweisungen, die, wenn sie auf dem mindestens einen Prozessor ausgeführt werden, den mindestens einen Prozessor dafür auslegen, eine oder mehrere Operationen auszuführen zum Bewirken der Detektion einer Nichtübereinstimmung in dem dritten Prozessorkern zwischen der ersten Menge von Sicherheitsvariablen und der zweiten Menge von Sicherheitsvariablen innerhalb eines Prozesssicherheits-Zeitintervalls. Beispiel 20 umfasst das eine oder die mehreren computerlesbaren Medien nach Beispiel 18, ferner umfassend: eine oder mehrere Anweisungen, die, wenn sie auf dem mindestens einen Prozessor ausgeführt werden, den mindestens einen Prozessor dafür auslegen, eine oder mehrere Operationen auszuführen zum Bewirken der Übertragung von Daten zwischen zwei des ersten Prozessorkerns, des zweiten Prozessorkerns und des dritten Prozessors über ein Interconnect.
-
Beispiel 21 umfasst ein Verfahren, umfassend: Ausführen einer oder mehrerer Arbeitslasten entsprechend Operationen einer oder mehrerer Komponenten eines Fahrzeugs; Ausführen einer ersten Instanz einer Arbeitslast in einem ersten Prozessorkern eines Prozessors, um eine erste Menge von Sicherheitsvariablen zu erzeugen; Ausführen einer zweiten Instanz der Arbeitslast in einem zweiten Prozessorkern des Prozessors, um eine zweite Menge von Sicherheitsvariablen zu erzeugen; und Bewirken der Erzeugung eines Signals in einem dritten Prozessorkern des Prozessors als Reaktion auf Vergleich der ersten Menge von Sicherheitsvariablen und der zweiten Menge von Sicherheitsvariablen. Beispiel 22 umfasst das Verfahren nach Beispiel 21, ferner umfassend: Bewirken der Detektion einer Nichtübereinstimmung in dem dritten Prozessorkern zwischen der ersten Menge von Sicherheitsvariablen und der zweiten Menge von Sicherheitsvariablen innerhalb eines Prozesssicherheits-Zeitintervalls. Beispiel 23 umfasst das Verfahren nach Beispiel 21, ferner umfassend: Ausführen einer oder mehrerer Operationen zum Bewirken der Übertragung von Daten zwischen zwei des ersten Prozessorkerns, des zweiten Prozessorkerns und des dritten Prozessors über ein Interconnect.
-
Beispiel 24 umfasst ein Verfahren, umfassend: Ausführen einer ersten Instanz einer ersten Vielzahl von Arbeitslasten in einem ersten Prozessorkern eines ersten Datenverarbeitungskanals; und Ausführen einer zweiten Instanz der ersten Vielzahl von Arbeitslasten in einem ersten Prozessorkern eines zweiten Datenverarbeitungskanals, wobei ein Interconnect Sicherheitsinseln des ersten Datenverarbeitungskanals und des zweiten Datenverarbeitungskanals koppeln soll, wobei die erste Vielzahl von Arbeitslasten Operationen einer oder mehrerer Komponenten eines Fahrzeugs entspricht. Beispiel 25 umfasst das Verfahren nach Beispiel 24, wobei das Interconnect eines oder mehrere von Folgendem umfasst: eine SPI (Serial Peripheral Interface), eine I2C-Schnittstelle (Inter-Integrated Circuit) und eine SenseWire™-Schnittstelle. Beispiel 26 umfasst das Verfahren nach Beispiel 24, ferner umfassend: Ausführen einer ersten Instanz einer zweiten Vielzahl von Arbeitslasten in einem ersten Prozessorkern eines dritten Datenverarbeitungskanals; und Ausführen einer zweiten Instanz der zweiten Vielzahl von Arbeitslasten in einem ersten Prozessorkern eines vierten Datenverarbeitungskanals, wobei das Interconnect Sicherheitsinseln des dritten Datenverarbeitungskanals und des vierten Datenverarbeitungskanals koppeln soll. Beispiel 27 umfasst das Verfahren nach Beispiel 24, wobei das Fahrzeug ein Automobil, ein Lastwagen, ein Motorrad, ein Flugzeug, ein Helikopter, ein Boot/Schiff, ein Zug oder eine Drohne ist.
-
Beispiel 28 umfasst eine Vorrichtung mit Mitteln zum Ausführen eines Verfahrens nach einem der vorhergehenden Beispiele. Beispiel 29 umfasst maschinenlesbare Speicherung, die maschinenlesbare Anweisungen umfasst, die, wenn sie ausgeführt werden, ein Verfahren implementieren oder eine Vorrichtung realisieren sollen, so wie es in einem der vorhergehenden Beispiele dargelegt wird.
-
Bei verschiedenen Ausführungsformen können die hier besprochenen Operationen, z. B. mit Bezug auf 1 et seq. als Hardware (z. B. Logikschaltkreise oder allgemeiner Schaltkreise oder eine Schaltung), Software, Firmware oder Kombinationen davon implementiert werden, die als Computerprogrammprodukt bereitgestellt werden können, z. B. einschließlich eines greifbaren (z. B. nichttransitorischen) maschinenlesbaren oder computerlesbaren Mediums, auf dem Anweisungen (oder Softwareprozeduren) gespeichert sind, mit denen ein Computer dafür programmiert wird, einen hier besprochenen Prozess auszuführen. Das maschinenlesbare Medium kann eine Speicherungsvorrichtung umfassen, wie etwa die mit Bezug auf 1 et seq. besprochenen.
-
Außerdem können solche computerlesbaren Medien als Computerprogrammprodukt heruntergeladen werden, wobei das Programm von einem entfernten Computer (z. B. einem Server) mittels Datensignalen, die in einer Trägerwelle oder einem anderen Ausbreitungsmedium über eine Kommunikationsstrecke (z. B. einen Bus, ein Modem oder eine Netzwerkverbindung) bereitgestellt werden, zu einem anfordernden Computer (z. B. einem Client) transferiert werden kann.
-
Die Erwähnung von „einer Ausführungsform“ oder „eine Ausführungsform“ in der Beschreibung bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur und/oder ein bestimmtes Charakteristikum, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Implementierung enthalten sein kann. Das Erscheinen des Ausdrucks „bei einer Ausführungsform“ an verschiedenen Stellen in der Beschreibung kann sich immer auf dieselbe Ausführungsform beziehen oder auch nicht.
-
Außerdem können in der Beschreibung und in den Ansprüche die Ausdrücke „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Bei einigen Ausführungsformen kann „verbunden“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente sich in direktem physischem oder elektrischem Kontakt miteinander befinden. „Gekoppelt“ kann bedeuten, dass sich zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt befinden. „Gekoppelt“ kann jedoch auch bedeuten, dass sich zwei oder mehr Elemente nicht in direktem Kontakt miteinander befinden, aber immer noch miteinander kooperieren oder interagieren.
-
Obwohl Ausführungsformen in für strukturelle Merkmale und/oder Verfahrensschritte spezifischer Sprache beschrieben wurden, versteht sich somit, dass der beanspruchte Gegenstand nicht auf die spezifischen beschriebenen Merkmale oder Schritte beschränkt werden kann. Stattdessen werden die spezifischen Merkmale und Schritte als beispielhafte Formen der Implementierung des beanspruchten Gegenstands offenbart.