DE112022001192T5 - Isolating an area of a system on a chip for safety-critical operations - Google Patents

Isolating an area of a system on a chip for safety-critical operations Download PDF

Info

Publication number
DE112022001192T5
DE112022001192T5 DE112022001192.0T DE112022001192T DE112022001192T5 DE 112022001192 T5 DE112022001192 T5 DE 112022001192T5 DE 112022001192 T DE112022001192 T DE 112022001192T DE 112022001192 T5 DE112022001192 T5 DE 112022001192T5
Authority
DE
Germany
Prior art keywords
error
interface
section
processor
soc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112022001192.0T
Other languages
German (de)
Inventor
Padam Patt Krishnani
Avinash J V
Anirban Ghosh
Parvatham Phanikumar
Vamshikrishna Yalamaddi
Srinivasa Reddy Kalluri
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/477,214 external-priority patent/US11803668B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE112022001192T5 publication Critical patent/DE112022001192T5/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0733Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a data processing system embedded in an image processing device, e.g. printer, facsimile, scanner
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1604Error detection or correction of the data by redundancy in hardware where the fault affects the clock signals of a processing unit and the redundancy is at or within the level of clock signal generation hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies

Abstract

In verschiedenen Beispielen weist eine integrierte Schaltung einen ersten und einen zweiten Abschnitt auf, die in getrennten Bereichen arbeiten. Der zweite Abschnitt hat eine Schnittstelle, die den ersten und den zweiten Abschnitt miteinander verbindet. Der zweite Abschnitt sperrt selektiv die Schnittstelle, um eine Kommunikation mit dem ersten Abschnitt über die Schnittstelle zu verhindern, und entsperrt selektiv die Schnittstelle, um eine Kommunikation mit dem ersten Abschnitt über die Schnittstelle zu ermöglichen.In various examples, an integrated circuit has first and second sections that operate in separate areas. The second section has an interface that connects the first and second sections together. The second section selectively disables the interface to prevent communication with the first section via the interface and selectively unlocks the interface to enable communication with the first section via the interface.

Description

ANSPRUCH AUF PRIORITÄTCLAIM TO PRIORITY

Diese Anmeldung beruft sich auf die vorläufige indische Anmeldung Nr. 202111034492 mit dem Titel „ISOLATING A REGION OF A SYSTEM ON A CHIP FOR SAFETY CRITICAL OPERATIONS“, die am 30. Juli 2021 eingereicht wurde, und auf die US-Patentanmeldung Nr. 17/477,214 mit dem Titel „ISOLATING A REGION OF A SYSTEM ON A CHIP FOR SAFETY CRITICAL OPERATIONS“, die am 16. September 2021 eingereicht wurde und deren gesamte Inhalte hier durch Inbezugnahme aufgenommen sind.This application relies on Indian Provisional Application No. 202111034492 entitled "ISOLATING A REGION OF A SYSTEM ON A CHIP FOR SAFETY CRITICAL OPERATIONS" filed on July 30, 2021 and US Patent Application No. 17/477,214 entitled “ISOLATING A REGION OF A SYSTEM ON A CHIP FOR SAFETY CRITICAL OPERATIONS,” filed on September 16, 2021, the entire contents of which are incorporated herein by reference.

TECHNISCHES GEBIETTECHNICAL FIELD

Mindestens eine Ausführungsform bezieht sich auf die Isolierung eines Bereichs einer Schaltung, der mit einer höheren Risikostufe arbeitet, von anderen Bereichen der Schaltung, die mit einer niedrigeren Risikostufe arbeiten. Zum Beispiel bezieht sich mindestens eine Ausführungsform auf ein System auf einem Chip, das verschiedene neue Verfahren implementiert, die hier beschrieben sind. In einem weiteren Beispiel betrifft mindestens eine Ausführungsform ein autonomes Fahrzeug, das ein solches System auf einem Chip aufweist.At least one embodiment relates to isolating a portion of a circuit operating at a higher level of risk from other portions of the circuit operating at a lower level of risk. For example, at least one embodiment relates to a system on a chip that implements various new methods described herein. In a further example, at least one embodiment relates to an autonomous vehicle that has such a system on a chip.

HINTERGRUNDBACKGROUND

Automotive Safety Integrity Level („ASIL“) ist ein Risikoklassifizierungssystem für die funktionale Sicherheit von Straßenfahrzeugen, das durch die Norm 26262 der International Organization for Standardization („ISO“) für funktionale Sicherheit definiert ist. In diesem Risikoklassifizierungssystem gibt es vier Risikoklassifizierungsstufen, die als ASIL-A, ASIL-B, ASIL-C und ASIL-D bezeichnet werden, wobei ASIL-D die höchste Risikoklassifizierungsstufe darstellt. Komponenten, die als ASIL-D spezifiziert sind, haben daher höhere Sicherheitsanforderungen als Komponenten, die mit einer niedrigeren Risikoklassifizierungsstufe (wie ASIL-B) spezifiziert sind, und können teurer sein. In vielen Automobilplattformen werden zumindest einige Sicherheitsdienste von einem externen Steuergerät ausgeführt, wenn bestimmte Fehler in einem System auf einem Chip bzw. System on a Chip („SoC“) erkannt werden, das verschiedene Fahrfunktionen eines autonomen oder teilautonomen Fahrzeugs steuert. Im Allgemeinen kann die externe Steuerung auf einer höheren Risikostufe (z. B. ASIL-D) arbeiten als das Fahrzeug-SoC (z. B. ASIL-B). Leider führen solche externen Steuereinheiten zu Latenzzeiten und können teuer sein, da sie separate Komponenten erfordern, die auch in dem Fahrzeug-SoC vorhanden sind, wie z. B. DRAM, nichtflüchtigem Speicher usw., und die jeweils Platz innerhalb der Fahrzeug-Plattform (z. B. auf einer Schaltung) beanspruchen.Automotive Safety Integrity Level (“ASIL”) is a road vehicle functional safety risk classification system defined by the International Organization for Standardization (“ISO”) functional safety standard 26262. In this risk classification system, there are four risk classification levels, referred to as ASIL-A, ASIL-B, ASIL-C and ASIL-D, with ASIL-D being the highest risk classification level. Components specified as ASIL-D therefore have higher safety requirements than components specified with a lower risk classification level (such as ASIL-B) and may be more expensive. In many automotive platforms, at least some safety services are performed by an external control device when certain errors are detected in a system on a chip (“SoC”) that controls various driving functions of an autonomous or semi-autonomous vehicle. In general, the external controller can operate at a higher risk level (e.g. ASIL-D) than the vehicle SoC (e.g. ASIL-B). Unfortunately, such external control units introduce latency and can be expensive because they require separate components that are also present in the vehicle SoC, such as: B. DRAM, non-volatile memory, etc., and each of which takes up space within the vehicle platform (e.g. on a circuit).

KURZE BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

Die vorliegenden Systeme und Verfahren zur Isolierung eines Bereichs eines Systems auf einem Chip werden im Folgenden unter Bezugnahme auf die beigefügten Figuren detailliert beschrieben, wobei gilt:

  • 1 ist eine Illustration einer beispielhaften Fahrzeug-Plattform gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 2 ist gemäß einigen Ausführungsformen der vorliegenden Offenbarung eine Darstellung von (einer) beispielhaften Schnittstelle(n), die eine in einem Fahrzeug-SoC integrierte Sicherheitsinsel mit anderen Komponenten des Fahrzeug-SoCs verbindet;
  • 3 ist ein Flussdiagramm, das ein Verfahren zum Übergang der Sicherheitsinsel zwischen einem Cocoon-Modus und einem Nicht-Isolations-Modus gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt.
  • 4 ist gemäß einigen Ausführungsformen der vorliegenden Offenbarung eine Illustration von (einer) beispielhaften Fehlerschnittstelle(n), die Fehler von den anderen Komponenten des Fahrzeug-SoC an die Sicherheitsinsel übertragen;
  • 5A ist ein Flussdiagramm, das ein Verfahren zur Übermittlung von Fehlern an die Sicherheitsinsel gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
  • 5B ist gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein Flussdiagramm, das ein Verfahren zeigt, das ein Prozessor verwenden kann, um von einem SoC-Fehleraggregator empfangene Interrupts zu verarbeiten;
  • 5C ist gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein Flussdiagramm, das ein Verfahren zeigt, das die SI 110 verwenden kann, um Signale für korrigierte und unkorrigierte Fehler zu verarbeiten;
  • 5D ist gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein Flussdiagramm, das ein Verfahren zeigt, das die SI 110 verwenden kann, um ein SoC-Fehleraggregatorsignal zu verarbeiten;
  • 6A veranschaulicht gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein beispielhaftes Signalzeitdiagramm für Signale, die von dem Prozessor der Sicherheitsinsel empfangen und gesendet werden, nachdem ein unkorrigierter Fehler mit niedrigem Schweregrad (z. B. dem Mindestwert) aufgetreten ist;
  • 6B zeigt gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein beispielhaftes Signalzeitdiagramm für Signale, die von dem Prozessor der Sicherheitsinsel empfangen und gesendet werden, nachdem ein unkorrigierter Fehler mit hohem Schweregrad (z.B. dem Maximalwert) aufgetreten ist;
  • 6C zeigt gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein beispielhaftes Signalzeitdiagramm für Signale, die von dem Prozessor der Sicherheitsinsel empfangen und gesendet werden, nachdem ein unkorrigierter Fehler mit hohem Schweregrad (z.B. dem Maximalwert) aufgetreten ist, aber die Sicherheitsinsel keinen Mailbox-Interrupt empfängt;
  • 7 ist gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein Flussdiagramm, das ein Verfahren zum Schreiben von Daten in einen Carve-Out zeigt, der in einem flüchtigen Speicher definiert ist, der von der Sicherheitsinsel und den anderen Komponenten des Fahrzeug-SoC gemeinsam genutzt wird;
  • 8 illustriert gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein Beispiel eines Fehlererkennungsblocks der Sicherheitsinsel, der das Verfahren von 7 durchführt;
  • 9 ist ein Flussdiagramm, das ein Verfahren zum Lesen von Daten aus dem Carve-Out gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt.
  • 10 illustriert gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein Beispiel eines Fehlererkennungsblocks der Sicherheitsinsel, der das Verfahren von 9 durchführt;
  • 11 ist eine Illustration eines Blockdiagramms, das Fehlermeldungen zeigt, die von dem Fehlererkennungsblock erzeugt werden, wenn der Fehlererkennungsblock bei einigen Ausführungsformen Ausstiegs- und Einstiegs-Timer aufweist oder mit diesen verbunden ist;
  • 12 ist eine Darstellung eines beispielhaften autonomen Fahrzeugs gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • FIG. ist 13 ein Beispiel für Kamerapositionen und Sichtfelder für das beispielhafte autonome Fahrzeug aus 12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 14 ist ein Blockdiagramm einer beispielhaften Systemarchitektur für das beispielhafte autonome Fahrzeug von 12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 15 ist ein Systemdiagramm für eine Kommunikation zwischen einem oder mehreren Cloud-basierten Servern und dem beispielhaften autonomen Fahrzeug aus 12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung; und
  • 16 ist ein Blockdiagramm eines Beispiels einer Rechenvorrichtung, die zur Verwendung bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
The present systems and methods for isolating a portion of a system on a chip are described in detail below with reference to the accompanying figures, wherein:
  • 1 is an illustration of an example vehicle platform in accordance with some embodiments of the present disclosure;
  • 2 is an illustration of example interface(s) that connects a security island integrated in a vehicle SoC to other components of the vehicle SoC, according to some embodiments of the present disclosure;
  • 3 is a flowchart depicting a method for transitioning the security island between a cocoon mode and a non-isolation mode in accordance with some embodiments of the present disclosure.
  • 4 is an illustration of example fault interface(s) that communicate faults from the other components of the vehicle SoC to the safety island, according to some embodiments of the present disclosure;
  • 5A is a flowchart depicting a method for communicating errors to the security island in accordance with some embodiments of the present disclosure;
  • 5B is a flowchart illustrating a method that a processor may use to process interrupts received from an SoC error aggregator, according to some embodiments of the present disclosure;
  • 5C is a flowchart illustrating a method that the SI 110 may use to process corrected and uncorrected error signals, according to some embodiments of the present disclosure;
  • 5D is a flowchart illustrating a method that SI 110 may use to process an SoC fault aggregator signal, according to some embodiments of the present disclosure;
  • 6A illustrates an example signal timing diagram for signals received and transmitted by the security island processor after, according to some embodiments of the present disclosure an uncorrected error of low severity (e.g. the minimum value) occurred;
  • 6B shows an exemplary signal timing diagram for signals received and transmitted by the security island processor after an uncorrected high severity error (e.g., the maximum value) occurs, according to some embodiments of the present disclosure;
  • 6C shows, in accordance with some embodiments of the present disclosure, an exemplary signal timing diagram for signals received and sent by the security island's processor after an uncorrected high severity error (e.g., the maximum value) occurs but the security island does not receive a mailbox interrupt;
  • 7 is a flowchart illustrating a method for writing data to a carve-out defined in a volatile memory shared by the security island and the other components of the vehicle SoC, according to some embodiments of the present disclosure;
  • 8th illustrates, according to some embodiments of the present disclosure, an example of a safety island error detection block that implements the method of 7 carries out;
  • 9 is a flowchart showing a method for reading data from the carve-out in accordance with some embodiments of the present disclosure.
  • 10 illustrates, according to some embodiments of the present disclosure, an example of a safety island error detection block that implements the method of 9 carries out;
  • 11 is an illustration of a block diagram showing error messages generated by the error detection block when the error detection block includes or is associated with exit and entry timers in some embodiments;
  • 12 is an illustration of an example autonomous vehicle in accordance with some embodiments of the present disclosure;
  • FIG. 13 is an example of camera positions and fields of view for the exemplary autonomous vehicle 12 according to some embodiments of the present disclosure;
  • 14 is a block diagram of an example system architecture for the example autonomous vehicle of 12 according to some embodiments of the present disclosure;
  • 15 is a system diagram for communication between one or more cloud-based servers and the exemplary autonomous vehicle 12 according to some embodiments of the present disclosure; and
  • 16 is a block diagram of an example of a computing device suitable for use in implementing some embodiments of the present disclosure.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Es werden Systeme und Verfahren offenbart, die sich auf die Isolierung eines Bereichs einer Schaltung, der auf einer höheren Risikostufe (z.B. ASIL-D) arbeitet, von anderen Bereichen der Schaltung, die auf einer niedrigeren Risikostufe (z.B. ASIL-B) arbeiten. Beispielsweise kann ein Bereich oder eine „Insel“, die der funktionalen Sicherheit gewidmet ist, von anderen Komponenten auf einem System auf einem Chip („SoC“), z. B. einem Fahrzeug-SoC, (z. B. kommunikativ) isoliert werden. 1 ist eine Darstellung einer beispielhaften Fahrzeug-Plattform 100 gemäß mindestens einer Ausführungsform. Die Fahrzeug-Plattform 100 kann ein autonomes oder halbautonomes Fahrzeug implementieren, wie z. B. ein autonomes Fahrzeug 1200 (siehe 12). Die Fahrzeug-Plattform 100 weist ein Fahrzeug-Verarbeitungssystem 102 auf, das einen Grad bzw. Level an Fahrautonomie implementieren kann, der größer ist als Level 0 (keine Fahrautomatisierung), wie es von der Society of Automotive Engineers („SAE“) definiert ist. Das Fahrzeug-Verarbeitungssystem 102 kann zum Beispiel Level 2 (teilweise Automatisierung des Fahrens) bis Level 5 (vollständige Automatisierung des Fahrens) gemäß der SAE-Definition implementieren. Ein System von Level 2 kann als fortschrittliches Fahrerassistenzsystem („ADAS“) bezeichnet werden.Systems and methods are disclosed that focus on isolating a portion of a circuit operating at a higher risk level (e.g., ASIL-D) from other portions of the circuit operating at a lower risk level (e.g., ASIL-B). For example, an area or "island" dedicated to functional safety may be separated from other components on a system on a chip ("SoC"), e.g. B. a vehicle SoC, (e.g. communicatively) isolated. 1 is an illustration of an example vehicle platform 100 according to at least one embodiment. The vehicle platform 100 may implement an autonomous or semi-autonomous vehicle, such as. B. an autonomous vehicle 1200 (see 12 ). The vehicle platform 100 includes a vehicle processing system 102 that can implement a level of driving autonomy greater than Level 0 (no driving automation) as defined by the Society of Automotive Engineers (“SAE”) . For example, the vehicle processing system 102 may implement Level 2 (partial driving automation) to Level 5 (full driving automation) according to the SAE definition. A Level 2 system may be referred to as an Advanced Driver Assistance System (“ADAS”).

Das Fahrzeug-Verarbeitungssystem 102 weist mindestens ein Fahrzeug-SoC 104 auf. Das Fahrzeug-SoC 104 führt zumindest einige Funktionen aus, kann aber eine oder mehrere Sicherheitsfunktionen an eine optionale externe Steuereinheit 106 (z. B. eine externe ASIL-D-Mikrocontrollereinheit aufweisend) abgeben. Die optionale externe Steuereinheit 106 kann unter einer höheren Risikoklassifizierungsstufe (z. B. ASIL-D) arbeiten als das Fahrzeug SoC 104 und diese einhalten. In Ausführungsformen, die die optionale externe Steuereinheit 106 aufweisen, wird beim Auftreten eines Fehlers in dem Fahrzeug-SoC 104 dieser Fehler an die optionale externe Steuereinheit 106 übermittelt, die eine oder mehrere Maßnahmen ergreifen kann, um die Fahrzeug-Plattform 100 in einen sicheren Zustand zu versetzen. Somit kann zumindest ein Teil der Sicherheitsfunktionen von der optionalen externen Steuereinheit 106 ausgeführt werden. Die optionale externe Steuereinheit 106 kann jedoch Latenzzeiten verursachen und teuer sein, da sie separate Komponenten wie DRAM, nichtflüchtigen Speicher usw. benötigt, die jeweils Platz in der Fahrzeug-Plattform 100 (z. B. auf einer Leiterplatte) beanspruchen.The vehicle processing system 102 includes at least one vehicle SoC 104. The vehicle SoC 104 performs at least some functions, but may provide one or more security functions to an optional external control unit 106 (e.g., comprising an external ASIL-D microcontroller unit). The optional external control unit 106 may operate under and comply with a higher risk classification level (e.g., ASIL-D) than the vehicle SoC 104. In embodiments that include the optional external control unit 106, when an error occurs in the vehicle SoC 104, that error is communicated to the optional external control unit 106, which takes one or more actions can to put the vehicle platform 100 in a safe state. Thus, at least some of the security functions can be carried out by the optional external control unit 106. However, the optional external control unit 106 can cause latency and be expensive because it requires separate components such as DRAM, non-volatile memory, etc., each of which takes up space in the vehicle platform 100 (e.g., on a circuit board).

Um zumindest einen Teil der Latenz und der Kosten zu vermeiden, die durch die optionale externe Steuereinheit 106 verursacht werden, weist die Fahrzeug-Plattform 100 von 1 eine funktionale Sicherheitsinsel oder Sicherheitsinsel („SI“) 110 auf, die in das Fahrzeug-SoC 104 integriert ist. Die SI 110 kann als ein Rechencluster implementiert werden, der unter einer höheren Risikoklassifizierungsstufe (z. B. ASIL-D) im Vergleich zum Rest des Fahrzeug-SoC 104 betrieben wird und diese einhält. Die SI 110 kann zumindest einen Teil der Funktionen übernehmen, die normalerweise von der optionalen externen Steuereinheit 106 ausgeführt werden. Durch das Vorhandensein der SI 110 kann die optionale externe Steuereinheit 106 ganz weggelassen oder mit einer weniger anspruchsvollen und/oder kostengünstigeren externen Steuereinheit implementiert werden. Wenn die optionale externe Steuereinheit 106 vorhanden ist, kann sie beispielsweise eine oder mehrere Legacy-Funktionen ausführen, wie z. B. die Bereitstellung der Kommunikation auf einem Controller Area Network-Bus („CAN“-Bus), die Bereitstellung einer Reset-Steuerung für das Fahrzeug-SoC 104 und/oder die Durchführung einer On-Board-Spannungsüberwachung.In order to avoid at least some of the latency and costs caused by the optional external control unit 106, the vehicle platform 100 of 1 a functional safety island or safety island (“SI”) 110 integrated into the vehicle SoC 104. The SI 110 may be implemented as a computing cluster that operates under and complies with a higher risk classification level (e.g., ASIL-D) compared to the rest of the vehicle SoC 104. The SI 110 may perform at least some of the functions normally performed by the optional external control unit 106. The presence of the SI 110 allows the optional external control unit 106 to be omitted entirely or implemented with a less sophisticated and/or less expensive external control unit. For example, if the optional external control unit 106 is present, it may perform one or more legacy functions, such as: B. providing communication on a Controller Area Network bus (“CAN” bus), providing reset control for the vehicle SoC 104 and/or performing on-board voltage monitoring.

Zusätzlich zu dem Fahrzeug-SoC 104 und der optionalen externen Steuereinheit 106 (falls vorhanden) kann das Fahrzeug-Verarbeitungssystem 102 einen ersten (SoC-)Taktgeber bzw. Takt 112 für das Fahrzeug-SoC 104, einen zweiten (SI-) Taktgeber bzw. Takt 114 für die SI 110 und eine integrierte Schaltung („IC“) 116 für die Stromversorgung aufweisen. Jede der Komponenten des Fahrzeug-Verarbeitungssystems 102 ist zumindest teilweise in Hardware implementiert. Die logischen Komponenten des Fahrzeug-Verarbeitungssystems 102 (z. B. das Fahrzeug-SoC 104 und die optionale externe Steuereinheit 106) sind typischerweise jeweils in logischen Hardware-Schaltungen innerhalb eines oder mehrerer integrierter Schaltungschips implementiert. Die logischen Komponenten können fest verdrahtet oder programmierbar oder eine Kombination aus fest verdrahteten und programmierbaren Elementen sein. Zusätzlich oder alternativ können bestimmte Funktionen des Fahrzeug-Verarbeitungssystems 102 in Software oder Firmware implementiert sein, die von einem eingebetteten Mikroprozessor oder Mikrocontroller ausgeführt wird.In addition to the vehicle SoC 104 and the optional external control unit 106 (if present), the vehicle processing system 102 may include a first (SoC) clock 112 for the vehicle SoC 104, a second (SI) clock, or Clock 114 for the SI 110 and an integrated circuit (“IC”) 116 for the power supply. Each of the components of the vehicle processing system 102 is at least partially implemented in hardware. The logical components of the vehicle processing system 102 (e.g., the vehicle SoC 104 and the optional external control unit 106) are typically each implemented in logical hardware circuits within one or more integrated circuit chips. The logical components may be hardwired or programmable or a combination of hardwired and programmable elements. Additionally or alternatively, certain functions of the vehicle processing system 102 may be implemented in software or firmware executed by an embedded microprocessor or microcontroller.

Der erste und der zweite Taktgeber 112 bzw. 114 liefern zwei getrennte Taktsignale an das Fahrzeug-SoC 104. Insbesondere wird ein erstes Taktsignal, das durch den ersten (SoC-)Taktgeber 112 erzeugt wird, an andere Komponenten 160 des Fahrzeug-SoC 104 als die SI 110 geliefert, und ein zweites Taktsignal, das durch den zweiten (SI-)Taktgeber 114 erzeugt wird, wird an die SI 110 geliefert. Somit können die SI 110 und die anderen Komponenten 160 als in getrennten Taktdomänen bzw. Taktbereichen arbeitend bezeichnet werden. Der Taktbereich der SI 110 wird als SI-Taktbereich und der Taktbereich der anderen Komponenten 160 als SoC-Taktbereich bezeichnet. Der erste und der zweite Taktgeber 112 bzw. 114 können jeweils zumindest teilweise als Quarzoszillatoren implementiert sein. Der erste (SoC-)Taktgeber 112 kann über eine erste Taktverbindung (nicht dargestellt), wie z. B. eine Leitung, eine Signalspur (signal trace) und dergleichen, mit jeder der anderen Komponenten 160 des Fahrzeug-SoC 104 verbunden sein. Somit kann der erste (SoC-)Taktgeber 112 das erste Taktsignal über die erste Taktverbindung (nicht dargestellt) an die anderen Komponenten 160 des Fahrzeug-SoC 104 liefern. Der zweite (SI-)Taktgeber 114 kann mit jeder der Komponenten der SI 110 über eine zweite Taktverbindung (nicht dargestellt), wie z. B. einen Draht, eine Signalspur und dergleichen, verbunden sein. Somit kann der zweite (SI-)Taktgeber 114 das zweite Taktsignal über die zweite Taktverbindung (nicht dargestellt) an die SI 110 liefern.The first and second clocks 112 and 114, respectively, provide two separate clock signals to the vehicle SoC 104. In particular, a first clock signal generated by the first (SoC) clock 112 is sent to other components 160 of the vehicle SoC 104 as the SI 110 is supplied, and a second clock signal generated by the second (SI) clock 114 is supplied to the SI 110. Thus, the SI 110 and the other components 160 may be referred to as operating in separate clock domains. The clock range of the SI 110 is referred to as the SI clock range and the clock range of the other components 160 is referred to as the SoC clock range. The first and second clock generators 112 and 114 can each be implemented at least partially as crystal oscillators. The first (SoC) clock 112 may have a first clock connection (not shown), such as. B. a line, a signal trace, and the like, may be connected to each of the other components 160 of the vehicle SoC 104. Thus, the first (SoC) clock 112 may provide the first clock signal to the other components 160 of the vehicle SoC 104 via the first clock connection (not shown). The second (SI) clock 114 may be connected to each of the components of the SI 110 via a second clock connection (not shown), such as. B. a wire, a signal track and the like. Thus, the second (SI) clock 114 may provide the second clock signal to the SI 110 via the second clock connection (not shown).

Der Stromversorgungs-IC 116 versorgt andere Komponenten des Fahrzeug-Verarbeitungssystems 102 mit Leistung bzw. Strom. Beispielsweise verbinden Stromschienen oder Verbindungen 118A-118C den Stromversorgungs-IC 116 mit den anderen Komponenten 160 des Fahrzeug-SoC 104, der SI 110 bzw. der optionalen externen Steuereinheit 106. Die Stromverbindungen 118A-118C tragen dazu bei, die anderen Komponenten 160 des Fahrzeug-SoC 104, die SI 110 bzw. die optionale externe Steuereinheit 106 (sofern vorhanden) elektrisch voneinander zu isolieren. So kann die SI 110 in einem von den anderen Komponenten 160 und der optionalen externen Steuereinheit 106 (sofern vorhanden) getrennten Spannungsbereich arbeiten. Der Spannungsbereich der SI 110 wird als SI-Spannungsbereich und der Spannungsbereich der anderen Komponenten 160 als SoC-Spannungsbereich bezeichnet. Der Stromversorgungs-IC 116 kann als eine oder mehrere integrierte Schaltungen implementiert sein, die die Komponenten des Fahrzeug-Verarbeitungssystems 102 mit ausreichend Strom versorgen. Die Stromverbindungen 118A-118C können jeweils als leitendes Element, wie z. B. eine elektrische Übertragungsleitung, ein Draht, eine Stromleitung und dergleichen, implementiert sein.The power IC 116 provides power to other components of the vehicle processing system 102. For example, power rails or connections 118A-118C connect the power supply IC 116 to the other components 160 of the vehicle SoC 104, the SI 110, and the optional external control unit 106, respectively. The power connections 118A-118C help power the other components 160 of the vehicle -SoC 104, the SI 110 or the optional external control unit 106 (if present) to be electrically isolated from each other. This allows the SI 110 to operate in a voltage range separate from the other components 160 and the optional external control unit 106 (if present). The voltage range of the SI 110 is referred to as the SI voltage range and the voltage range of the other components 160 is referred to as the SoC voltage range. The power supply IC 116 may be implemented as one or more integrated circuits that provide sufficient power to the components of the vehicle processing system 102. The power connections 118A-118C can each be used as a conductive element, such as. B. an electrical transmission line, a wire, a power line and the like may be implemented.

Wie oben erwähnt, arbeitet die SI 110 in dem SI-Taktbereich und dem SI-Spannungsbereich. Zusammen werden der SI-Taktbereich und der SI-Spannungsbereich als SI-Bereich bezeichnet. In ähnlicher Weise arbeiten die anderen Komponenten 160 in dem SoC-Taktbereich und dem SoC-Spannungsbereich. Zusammen werden der SoC-Taktbereich und der SoC-Spannungsbereich als SoC-Bereich bezeichnet.As mentioned above, the SI 110 operates in the SI clock domain and the SI voltage domain. Together, the SI clock range and the SI voltage range are referred to as the SI range. Similarly, the other components 160 operate in the SoC clock range and the SoC voltage range. Together, the SoC clock range and the SoC voltage range are referred to as the SoC range.

Die anderen Komponenten 160 des Fahrzeug-SoC 104 können einen Haupt-Zentralverarbeitungs- („CPU“-) Komplex, eine Hilfssicherheitseinheit 122, eine Schaltung 124 zur Durchführung von Fahrzeug-SoC-Funktionen, einen flüchtigen Datenspeicher oder Speicher 126 (z. B. einen dynamischen Direktzugriffsspeicher („DRAM“)) und einen nichtflüchtigen Datenspeicher oder Speicher 128 aufweisen. Der Haupt-CPU-Komplex 120 kann als ein oder mehrere Prozessoren implementiert sein, die unter ASIL-B arbeiten. Bei solchen Ausführungsformen kann das Fahrzeug-SoC 104 unter mehreren oder gemischten ASILs arbeiten, da die SI 110 auf einer höheren ASIL-Stufe (z. B. ASIL-D) arbeiten kann. Als nicht einschränkende Beispiele kann die Schaltung 124 Hardware aufweisen, die eine oder mehrere Anzeigen, eine oder mehrere Fahrzeug-Eingabe-/Ausgabe-Steuerungen, eine oder mehrere Speichersteuerungen, eine oder mehrere Verbindungen usw. implementiert. Bei der dargestellten Ausführungsform ist die Schaltung 124 so dargestellt, dass sie eine Vielzahl von Logikblöcken LB(1) - LB(N) aufweist oder implementiert, die häufig als geistiges Eigentum „IP“ (Intellectual Property) bezeichnet werden. Die Logikblöcke LB(1) - LB(N) können verschiedene Funktionen innerhalb des autonomen Fahrzeugs (z. B. dem in 12 dargestellten autonomen Fahrzeug 1200) implementieren.The other components 160 of the vehicle SoC 104 may include a main central processing unit ("CPU") complex, an auxiliary security unit 122, a circuit 124 for performing vehicle SoC functions, a volatile data memory or memory 126 (e.g. a dynamic random access memory (“DRAM”)) and a non-volatile data memory or memory 128. The main CPU complex 120 may be implemented as one or more processors operating under ASIL-B. In such embodiments, the vehicle SoC 104 may operate under multiple or mixed ASILs since the SI 110 may operate at a higher ASIL level (e.g., ASIL-D). As non-limiting examples, circuit 124 may include hardware that implements one or more displays, one or more vehicle input/output controllers, one or more memory controllers, one or more connections, etc. In the illustrated embodiment, circuit 124 is shown including or implementing a plurality of logic blocks LB(1) - LB(N), often referred to as intellectual property (IP). The logic blocks LB(1) - LB(N) can provide various functions within the autonomous vehicle (e.g. the in 12 implement the autonomous vehicle 1200 shown.

Die optionale externe Steuereinheit 106 kann eine Steuerung 130, einen Fehleraggregator 132, einen flüchtigen Datenspeicher oder Speicher 136 (z. B. einen DRAM) und einen nichtflüchtigen Datenspeicher oder Speicher 138 aufweisen. Die optionale externe Steuerung 106 kann auch einen oder mehrere Logikblöcke (nicht dargestellt) aufweisen, die die von der optionalen externen Steuerung 106 ausgeführten Sicherheitsfunktionen implementieren. Die Steuerung 130 kann als ein oder mehrere Prozessoren (z. B. Mikrocontroller) implementiert sein, die unter ASIL-D arbeiten. Die Steuerung 130 führt Anweisungen aus, wie z. B. Anweisungen, die mit einem oder mehreren Automotive Open System Architecture („AUTOSAR“)-Softwarestandards konform sind und im nichtflüchtigen Speicher 138 gespeichert sind. Die Anweisungen können die Steuerung 130 anweisen, geeignete Maßnahmen zu ergreifen, wenn der Fehleraggregator 132 einen Fehler von dem Fahrzeug-SoC 104 empfängt.The optional external control unit 106 may include a controller 130, an error aggregator 132, a volatile data memory or memory 136 (e.g., a DRAM), and a non-volatile data memory or memory 138. The optional external controller 106 may also include one or more logic blocks (not shown) that implement the security functions performed by the optional external controller 106. The controller 130 may be implemented as one or more processors (e.g., microcontrollers) operating under ASIL-D. The controller 130 executes instructions such as: B. Instructions that conform to one or more Automotive Open System Architecture (“AUTOSAR”) software standards and are stored in non-volatile memory 138. The instructions may instruct the controller 130 to take appropriate action when the error aggregator 132 receives an error from the vehicle SoC 104.

In einer oder mehreren Ausführungsformen weist die SI 110 einen Prozessor 140, eine Interrupt-Steuerung 141, einen SI-Fehleraggregator 142, einen flüchtigen Datenspeicher oder Speicher 146 (z. B. einen statischen Direktzugriffsspeicher („SRAM“)) und einen oder mehrere Logikblöcke 148 auf. Der Prozessor 140 kann als ein Cluster von Prozessoren implementiert werden, z. B. als hoch bewertete ASIL-D-Sicherheitsprozessoren. Der Prozessor 140 führt Anweisungen 149 aus, z. B. Anweisungen, die mit dem/den AUTOSAR-Software-Standard(s) konform sind, die beim Hochfahren aus dem nichtflüchtigen Speicher 128 abgerufen und in dem flüchtigen Speicher 146 gespeichert werden. Die Anweisungen 149 können den Prozessor 140 anweisen, geeignete Maßnahmen zu ergreifen, wenn der SI-Fehleraggregator 142 einen Fehler von den anderen Komponenten 160 des Fahrzeug-SoC 104 empfängt. Der/die Logikblock/blöcke 148 kann/können dazu beitragen, die von der SI 110 ausgeführten Sicherheitsfunktionen zu implementieren.In one or more embodiments, the SI 110 includes a processor 140, an interrupt controller 141, an SI error aggregator 142, a volatile data memory or memory 146 (e.g., a static random access memory ("SRAM")), and one or more logic blocks 148 on. The processor 140 can be implemented as a cluster of processors, e.g. B. as highly rated ASIL-D safety processors. The processor 140 executes instructions 149, e.g. B. Instructions compliant with the AUTOSAR software standard(s) retrieved from non-volatile memory 128 and stored in volatile memory 146 at boot time. The instructions 149 may instruct the processor 140 to take appropriate action when the SI error aggregator 142 receives an error from the other components 160 of the vehicle SoC 104. The logic block(s) 148 may help implement the security functions performed by the SI 110.

Die Hilfssicherheitseinheit 122 kann als Echtzeit-Sicherheits-Hilfsverarbeitungseinheit implementiert werden und/oder als ASIL-B oder höher eingestuft werden. Mit anderen Worten kann die Hilfssicherheitseinheit 122 auf der gleichen oder einer höheren Risikoklassifizierungsstufe arbeiten als andere Komponenten innerhalb des SoC-Bereichs. Die Hilfssicherheitseinheit 122 weist einen Prozessor 150, einen oder mehrere SoC-Fehleraggregatoren 152, eine Interrupt-Steuerung 154 und einen oder mehrere Logikblöcke auf, die im Folgenden als Mailbox(en) 156 bezeichnet werden. Der SI-Fehleraggregator 142 und der Fehleraggregator 132 (sofern vorhanden) können jeweils Fehler von dem/den SoC-Fehleraggregator(en) 152 empfangen. Der/die SoC-Fehleraggregator(en) 152 kann/können also über eine oder mehrere Fehlerschnittstellen 170 mit dem Fehleraggregator 132 verbunden sein und ist/sind über eine oder mehrere Fehlerschnittstellen 172 mit dem SI-Fehleraggregator 142 verbunden. Jede der Fehlerschnittstellen 170 und 172 weist eine Verbindung auf, wie z. B. einen Draht, eine Signalspur oder ähnliches, die jeden der SoC-Fehleraggregatoren 152 physisch mit dem Fehleraggregator 132 oder dem SI-Fehleraggregator 142 verbindet.The auxiliary security unit 122 may be implemented as a real-time security auxiliary processing unit and/or may be rated ASIL-B or higher. In other words, the auxiliary security unit 122 may operate at the same or higher risk classification level than other components within the SoC range. The auxiliary security unit 122 includes a processor 150, one or more SoC error aggregators 152, an interrupt controller 154, and one or more logic blocks, hereinafter referred to as mailbox(es) 156. The SI error aggregator 142 and the error aggregator 132 (if any) may each receive errors from the SoC error aggregator(s) 152. The SoC error aggregator(s) 152 may therefore be connected to the error aggregator 132 via one or more error interfaces 170 and is/are connected to the SI error aggregator 142 via one or more error interfaces 172. Each of the error interfaces 170 and 172 has a connection such as: B. a wire, a signal trace or the like that physically connects each of the SoC error aggregators 152 to the error aggregator 132 or the SI error aggregator 142.

Die Mailbox(en) 156 kann/können eine erste Mailbox, in die der Prozessor 150 schreibt und aus der der Prozessor 140 liest, und eine zweite Mailbox, in die der Prozessor 140 schreibt und aus der der Prozessor 150 liest, aufweisen. Die Mailbox(en) 156 kann/können von dem Prozessor 150 (z. B. einer Zentralverarbeitungseinheit („CPU“) der Stufe ASIL-B oder höher) verwendet werden, um Mailbox-Interrupts an die Interrupt-Steuerung 141 zu melden und Interrupts von der Interrupt-Steuerung 141 zu empfangen. Daher weist/en die Fehlerschnittstelle(n) 172 mindestens einen Signalleiter auf, der die Mailbox(en) 156 mit der Interrupt-Steuerung 141 verbindet. Jeder Mailbox-Interrupt weist einen Schweregrad-Identifikator auf, der den Schweregrad des Fehlers angibt. Als nicht einschränkendes Beispiel kann der Schweregrad-Identifikator ein numerischer Wert sein, der von einem Minimalwert (z. B. Null) bis zu einem Maximalwert (z. B. Sieben) reicht. Ein weiteres, nicht einschränkendes Beispiel ist, dass der Interrupt eine Interruptnummer haben kann, die von vornherein kodiert ist, um den Schweregrad anzuzeigen. Der Prozessor 140 und/oder der Prozessor 150 können Fehlerinformationen in die Mailbox(en) 156 schreiben. Die Fehlerinformationen weisen Informationen über den/die Error(s) auf, der/die den Fehler erzeugt hat/haben, wie z. B. den/die Namen des Logikblocks, in dem der/die Error(s) aufgetreten ist/sind, den/die Logikblock-Diagnosebezeichner, die Art des Fehlers, den Schweregradbezeichner und dergleichen.The mailbox(es) 156 may include a first mailbox that the processor 150 writes to and from which the processor 140 reads, and a second mailbox that the processor 140 writes to and reads from. The mailbox(es) 156 may be used by the processor 150 (e.g., a central processing unit (“CPU”) of ASIL-B or higher level) to report mailbox interrupts to the interrupt controller 141 and interrupts from the interrupt controller 141. Therefore the error interface(s) shows 172 at least one signal conductor that connects the mailbox(es) 156 to the interrupt control 141. Each mailbox interrupt has a severity identifier that indicates the severity of the error. As a non-limiting example, the severity identifier may be a numeric value ranging from a minimum value (e.g., zero) to a maximum value (e.g., seven). As another non-limiting example, the interrupt may have an interrupt number that is pre-coded to indicate severity. The processor 140 and/or the processor 150 may write error information to the mailbox(es) 156. The error information includes information about the error(s) that generated the error, such as: B. the name(s) of the logic block in which the error(s) occurred, the logic block diagnostic identifier(s), the type of error, the severity identifier, and the like.

Die Integration der SI 110 in den Fahrzeug-SoC 104 kann es ermöglichen, dass eine Reihe von separaten Komponenten (z. B. der flüchtige Speicher 136 und der nichtflüchtige Speicher 138) aus dem Fahrzeug-Verarbeitungssystem 102 weggelassen werden können, wenn die optionale externe Steuereinheit 106 ebenfalls weggelassen wird. Dennoch ist es notwendig, die SI 110 von den anderen Komponenten 160 (z. B. dem Haupt-CPU-Komplex 120, der Hilfssicherheitseinheit 122, der Schaltung 124, dem flüchtigen Speicher 126 und dem nichtflüchtigen Speicher 128) des Fahrzeug-SoC 104 zu isolieren, damit potenzielle Probleme, die in einer oder mehreren der anderen Komponenten 160 auftreten, die SI 110 nicht negativ beeinflussen. Eine solche Isolierung kann beispielsweise verhindern, dass die SI 110 durch einen Ausfall in einer oder mehreren der anderen Komponenten 160 des Fahrzeug-SoC 104 beeinträchtigt wird. Nicht einschränkende Beispiele für die Typen von Ausfällen, die in einer oder mehreren der anderen Komponenten 160 auftreten können, schließen zufällige Fehler, Taktprobleme, Leistungsprobleme und/oder Spannungsprobleme ein. Aufgrund der räumlichen Nähe und einer oder mehrerer Schnittstellen 200 (siehe 2), die sich die SI 110 mit den anderen Komponenten 160 des Fahrzeug-SoC 104 teilt, können solche Ausfälle auf die SI 110 übergreifen und die SI 110 daran hindern, die Fallback- und/oder Failsafe-Funktionalität auszuführen, für die die SI 110 in das Fahrzeug-SoC 104 integriert wurde. Daher isoliert das Fahrzeug-Verarbeitungssystem 102 die SI 110 von den anderen Komponenten 160 des Fahrzeug-SoC 104, um eine Isolierung zu erreichen, die mit derjenigen zwischen dem Fahrzeug-SoC 104 und der optionalen externen Steuereinheit 106 vergleichbar ist. Eine solche Isolierung kann durch den ersten und den zweiten Taktgeber 112 bzw. 114, die erste und zweite Stromverbindung 118A bzw. 118B und die Schnittstelle(n) 200 erreicht werden.The integration of the SI 110 into the vehicle SoC 104 may allow a number of separate components (e.g., volatile memory 136 and non-volatile memory 138) to be omitted from the vehicle processing system 102 when the optional external Control unit 106 is also omitted. However, it is necessary to separate the SI 110 from the other components 160 (e.g., the main CPU complex 120, the auxiliary security unit 122, the circuit 124, the volatile memory 126 and the non-volatile memory 128) of the vehicle SoC 104 isolate so that potential problems occurring in one or more of the other components 160 do not negatively impact the SI 110. For example, such isolation may prevent the SI 110 from being affected by a failure in one or more of the other components 160 of the vehicle SoC 104. Non-limiting examples of the types of failures that may occur in one or more of the other components 160 include random errors, timing problems, performance problems, and/or voltage problems. Due to the spatial proximity and one or more interfaces 200 (see 2 ), which the SI 110 shares with the other components 160 of the vehicle SoC 104, such failures can propagate to the SI 110 and prevent the SI 110 from executing the fallback and/or failsafe functionality for which the SI 110 was integrated into the vehicle SoC 104. Therefore, the vehicle processing system 102 isolates the SI 110 from the other components 160 of the vehicle SoC 104 to achieve isolation comparable to that between the vehicle SoC 104 and the optional external control unit 106. Such isolation may be achieved by the first and second clocks 112 and 114, respectively, the first and second power connections 118A and 118B, and the interface(s) 200.

Der erste (SoC-)Taktgeber 112 ist von dem zweiten (SI-)Taktgeber 114 getrennt (z. B. weist er einen separaten Referenzkristall auf), was dazu beiträgt, die SI 110 von den anderen Komponenten 160 des Fahrzeug-SoC 104 zu isolieren. Ebenso ist die erste Stromverbindung 118A von der zweiten Stromverbindung 118B getrennt, was dazu beiträgt, die SI 110 von den anderen Komponenten 160 des Fahrzeug-SoC 104 zu isolieren. Wie bereits erwähnt, kann die SI 110 in einem von den anderen Komponenten 160 des Fahrzeug-SoC 104 getrennten SI-Spannungsbereich arbeiten. Aber selbst mit dem separaten zweiten (SI-)Taktgeber 114 und der separaten zweiten Stromverbindung 118B kommuniziert die SI 110 über die Schnittstelle(n) 200 mit den anderen Komponenten 160 des Fahrzeug-SoC 104 (siehe 2).The first (SoC) clock 112 is separate from the second (SI) clock 114 (e.g., has a separate reference crystal), which helps separate the SI 110 from the other components 160 of the vehicle SoC 104 isolate. Likewise, the first power connection 118A is separated from the second power connection 118B, which helps isolate the SI 110 from the other components 160 of the vehicle SoC 104. As previously mentioned, the SI 110 may operate in a separate SI voltage range from the other components 160 of the vehicle SoC 104. However, even with the separate second (SI) clock 114 and the separate second power connection 118B, the SI 110 communicates with the other components 160 of the vehicle SoC 104 via the interface(s) 200 (see 2 ).

Der (die) Logikblock/blöcke 148 weist (weisen) eine Takt- und Rücksetzschaltung 230 (siehe 2) auf, die mit dem dedizierten zweiten (SI-) Taktgeber 114 verbunden ist. Der dedizierte zweite (SI-) Taktgeber 114 kann als Referenztakt für die Takt- und Rücksetzschaltung 230 verwendet werden. Die Takt- und Rücksetzschaltung 230 kann beispielsweise einen internen, dedizierten Phasenregelkreis („PLL“) aufweisen, der zur Ableitung anderer Funktions- und Fehlersuchtakte der SI 110 verwendet wird. Als nicht einschränkende Beispiele kann die Takt- und Rücksetzschaltung 230 ein Debugtaktsignal und ein Testtaktsignal bereitstellen, die von dem PLL abgeleitet werden können. Die Takt- und Rücksetzschaltung 230 kann alle Takt- und Rücksetzsignale erzeugen, die innerhalb der SI 110 verwendet werden. Mit anderen Worten kann die Takt- und Rücksetzschaltung 230 das/die Taktsignal(e) und das/die Rücksetzsignal(e) erzeugen, die innerhalb des SI-Bereichs verwendet werden. Zusätzlich oder alternativ kann der zweite (SI-)Taktgeber 114 direkt als Funktionstakt für einen oder mehrere der Logikblöcke 148 verwendet werden. Auf diese Weise verwendet die SI 110 das/die lokal erzeugte(n) Taktsignal(e) und Reset(s) und/oder das von dem zweiten (SI) Taktgeber 114 bereitgestellte Taktsignal. In der SI 110 werden keine Taktsignale oder Resets von den anderen Komponenten 160 verwendet. Die Takt- und Rücksetzschaltung 230 trägt dazu bei, dass keine Störungen von der Logik (z. B. den Rücksetzblöcken), die Resets innerhalb der anderen Komponenten 160 erzeugt, die Komponenten der SI 110 erreichen.The logic block(s) 148 includes a clock and reset circuit 230 (see 2 ) connected to the dedicated second (SI) clock 114. The dedicated second (SI) clock 114 can be used as a reference clock for the clock and reset circuit 230. For example, the clock and reset circuit 230 may include an internal dedicated phase locked loop (“PLL”) that is used to derive other functional and debugging clocks of the SI 110. As non-limiting examples, the clock and reset circuit 230 may provide a debug clock signal and a test clock signal that may be derived from the PLL. The clock and reset circuit 230 can generate all clock and reset signals used within the SI 110. In other words, the clock and reset circuit 230 may generate the clock signal(s) and reset signal(s) used within the SI range. Additionally or alternatively, the second (SI) clock 114 may be used directly as a functional clock for one or more of the logic blocks 148. In this way, the SI 110 uses the locally generated clock signal(s) and reset(s) and/or the clock signal provided by the second (SI) clock 114. No clock signals or resets from the other components 160 are used in the SI 110. The clock and reset circuit 230 helps prevent interference from the logic (e.g., reset blocks) that generates resets within the other components 160 from reaching the components of the SI 110.

2 ist eine Darstellung der Schnittstelle(n) 200, die die SI 110 gemäß mindestens einer Ausführungsform mit den anderen Komponenten 160 des Fahrzeug-SoC 104 verbindet/n. Bezugnehmend auf 2 stellt (stellen) die Schnittstelle(n) 200 eine logische Isolierung für die Schaltungen und die Logik der SI 110 in dem Fahrzeug-SoC 104 bereit. Bei der dargestellten Ausführungsform weist/en die Schnittstelle(n) 200 die Fehlerschnittstelle(n) 172, eine Schnittstelle 200A zu einem flüchtigen Speicher, eine erste Steuer-Backbone-Schnittstelle 200B, eine zweite Steuer-Backbone-Schnittstelle 200C, eine Schnittstelle für sichere Inhalte 200D, eine Debug-Schnittstelle 200E und eine Testschnittstelle 200F auf. Die Fehlerschnittstelle(n) 172 ist (sind) möglicherweise nicht logisch von dem (den) SoC-Fehleraggregator(en) 152 isoliert, sondern kann (können) jeweils einen oder mehrere Spannungspegelschieber 240 aufweisen, die jeweils eine elektrische Isolierung zwischen dem SI- und dem SoC-Spannungsbereich bereitstellen. Während der/die Spannungspegelschieber 240 jeweils für eine elektrische Isolierung sorgen, kann es sein, dass der/die Spannungspegelschieber 240 für einige Typen von Fehlern, wie z. B. Interrupt-Stürme, Fehlerstürme und/oder kontinuierliche Assertions, keine angemessene Isolierung bieten. Der SI-Fehleraggregator 142 kann ein oder mehrere Statusbits 242 aufweisen, die Fehlerinformationen über die Fehlerschnittstelle(n) 172 aufnehmen und die von dem Prozessor 140 ausgeführten Anweisungen 149 über solche Fehler informieren. Bei der dargestellten Ausführungsform weisen die Statusbits 242 die Statusbits „BT1", „BT2“ und „BT3“ auf (siehe 4). Die Anweisungen 149 weisen den Prozessor 140 an, diese Benachrichtigung zu verwenden, um Ausfälle, die an der/den Fehlerschnittstelle(n) 172 auftreten, zu minimieren. 2 is an illustration of the interface(s) 200 that connects the SI 110 to the other components 160 of the vehicle SoC 104, according to at least one embodiment. Referring to 2 the interface(s) 200 provides a logi provides physical isolation for the circuitry and logic of the SI 110 in the vehicle SoC 104. In the illustrated embodiment, the interface(s) 200 includes the error interface(s) 172, a volatile memory interface 200A, a first control backbone interface 200B, a second control backbone interface 200C, a secure interface Contents 200D, a debug interface 200E and a test interface 200F. The fault interface(s) 172 may not be logically isolated from the SoC fault aggregator(s) 152, but may each include one or more voltage level shifters 240, each providing electrical isolation between the SI and the SoC voltage range. While the voltage level shifter(s) 240 each provide electrical isolation, the voltage level shifter(s) 240 may be suitable for some types of faults, such as: B. Interrupt storms, error storms and/or continuous assertions do not provide adequate isolation. The SI error aggregator 142 may include one or more status bits 242 that receive error information via the error interface(s) 172 and inform the instructions 149 executed by the processor 140 of such errors. In the illustrated embodiment, the status bits 242 have the status bits “BT1”, “BT2” and “BT3” (see 4 ). Instructions 149 instruct processor 140 to use this notification to minimize failures occurring on fault interface(s) 172.

Die Schnittstelle 200A für den flüchtigen Speicher ist eine Schnittstelle zwischen dem Prozessor 140 und dem flüchtigen Speicher 126 des Fahrzeug-SoC 104. Die Schnittstelle 200A für den flüchtigen Speicher ermöglicht es dem Prozessor 140, Informationen in den flüchtigen Speicher 126 zu schreiben und Informationen aus dem flüchtigen Speicher 126 zu lesen. Die Schnittstelle 200A für den flüchtigen Speicher weist eine oder mehrere Verbindungen mit dem flüchtigen Speicher 126 auf, wie z. B. eine Leitung, eine Signalspur und dergleichen. Die Schnittstelle 200A für den flüchtigen Speicher kann die Steuerung 220 zur logischen Isolation, einen Zugriffs-Timer 222 und eine Bereichssynchronisationsschaltung 224 aufweisen. Die Steuerung 220 zur logischen Isolation weist einen Gatter- oder Sperrmechanismus auf, der durch den Prozessor 140 selektiv ge- und entsperrt werden kann. Der Zugriffs-Timer 222 ermöglicht ein Timeout bei einem von dem Prozessor 140 initiierten Zugriffsversuch.The volatile memory interface 200A is an interface between the processor 140 and the volatile memory 126 of the vehicle SoC 104. The volatile memory interface 200A allows the processor 140 to write information to the volatile memory 126 and information from the read volatile memory 126. The volatile memory interface 200A includes one or more connections to the volatile memory 126, such as: B. a line, a signal track and the like. The volatile memory interface 200A may include the logical isolation controller 220, an access timer 222, and an area synchronization circuit 224. The logical isolation controller 220 includes a gating or locking mechanism that can be selectively locked and unlocked by the processor 140. The access timer 222 allows a timeout on an access attempt initiated by the processor 140.

Die Bereichssynchronisationsschaltung 224 weist eine Phasensynchronisationsschaltung und einen oder mehrere Spannungspegelschieber auf. Die Phasensynchronisationsschaltung hilft dabei, die Phasen von Signalen zu synchronisieren, die über den SI- und SoC-Bereich kommuniziert werden und die unter Verwendung der separaten ersten und zweiten Taktgeber 112 und 114 erzeugt wurden (siehe 1). Von der Takt- und Rücksetzschaltung 230 erzeugte Resets können von allen Elementen verwendet werden, die die SI- und SoC-Spannungs- und -Taktbereiche passieren, wie z. B. von der Phasensynchronisationsschaltung. Die Phasensynchronisationsschaltung hat einen SoC-Abschnitt und einen SI-Abschnitt, die jeweils als separates Synthese-Top fungieren können. Der SoC-Abschnitt befindet sich physisch in dem SoC-Bereich und der SI-Abschnitt physisch in dem SI-Bereich. Die Logik sowohl des SI- als auch des SoC-Abschnitts verwendet Resets, die von der Takt- und Rücksetzschaltung 230 erzeugt werden. Somit können die von der SI 110 erzeugten Resets von der Logik des Fahrzeug-SoC 104 verwendet werden, die unter einem niedrigeren ASIL als die SI 110 arbeiten kann, aber die von dem Fahrzeug-SoC 104 erzeugten Resets werden nicht an die SI 110 übermittelt und können von dieser nicht verwendet werden. Als nicht einschränkendes Beispiel kann die Phasensynchronisationsschaltung als geteiltes First-in-First-out („Fifo“) oder ähnliches implementiert werden. Der/die Spannungspegelschieber der Bereichssynchronisationsschaltung 224 kann/können im Wesentlichen mit dem/den Spannungspegelschieber(n) 240 identisch sein und die Spannung der über den SI- und SoC-Spannungsbereich übertragenen Signale anpassen, damit die Signale sicher in den SI- und SoC-Bereich übertragen werden können. Wenn der Zugriffs-Timer 222 anzeigt, dass ein Zugriff durch den Prozessor 140 zeitlich abgelaufen ist, kann die Anforderung aus der Bereichssynchronisationsschaltung 224 entfernt werden (z. B. per Pop-Befehl aus dem geteiltem Fifo entfernt werden).The range synchronization circuit 224 includes a phase synchronization circuit and one or more voltage level shifters. The phase synchronization circuit helps to synchronize the phases of signals communicated across the SI and SoC domains that were generated using the separate first and second clocks 112 and 114 (see 1 ). Resets generated by the clock and reset circuit 230 can be used by all elements that pass the SI and SoC voltage and clock ranges, such as: B. from the phase synchronization circuit. The phase synchronization circuit has an SoC section and an SI section, each of which can act as a separate synthesis top. The SoC section is physically located in the SoC area and the SI section is physically located in the SI area. The logic of both the SI and SoC sections uses resets generated by the clock and reset circuit 230. Thus, the resets generated by the SI 110 may be used by the logic of the vehicle SoC 104, which may operate under a lower ASIL than the SI 110, but the resets generated by the vehicle SoC 104 are not communicated to the SI 110 and cannot be used by them. As a non-limiting example, the phase synchronization circuit may be implemented as a split first-in-first-out (“FIFO”) or similar. The voltage level shifter(s) of the range synchronization circuit 224 may be substantially identical to the voltage level shifter(s) 240 and may adjust the voltage of the signals transmitted across the SI and SoC voltage ranges so that the signals are safely included in the SI and SoC voltage ranges. area can be transferred. When the access timer 222 indicates that an access by the processor 140 has timed out, the request may be removed from the range synchronization circuit 224 (e.g., popped from the split FIFO).

Wenn die Schnittstelle 200A für die flüchtige Speicherschnittstelle entsperrt ist, kann der Prozessor 140 auf den flüchtigen Speicher 126 zugreifen, wodurch der Zugriffs-Timer 222 gestartet wird. Wenn der Zugriffs-Timer 222 angibt, dass mehr als eine erste vorbestimmte Zeitspanne verstrichen ist und keine Antwort von dem flüchtigen Speicher 126 empfangen wurde, gibt der Prozessor 140 einen Sicherheitsfehler an, verwendet die Steuerung 220 zur logischen Isolation, um die Schnittstelle 200A des flüchtigen Speichers zu sperren, sperrt optional jede der Schnittstelle(n) 200, die nicht gesperrt sind, und führt optional eine oder mehrere Maßnahmen durch, die so ausgestaltet sind, dass die Fahrzeug-Plattform 100 (siehe 1) in einen sicheren Zustand zurückkehrt. Andererseits, wenn die Antwort empfangen wird, bevor der Zugriffs-Timer 222 angibt, dass die erste vorbestimmte Zeitspanne verstrichen ist, setzt sich der Zugriffs-Timer 222 selbst zurück, der Prozessor 140 schließt den Zugriff ab, und der Prozessor 140 sperrt die Schnittstelle 200A des flüchtige Speichers, nachdem der Zugriff abgeschlossen ist. Auf diese Weise bleibt (bleiben) die Schnittstelle(n) 200A des flüchtigen Speichers immer dann gesperrt, wenn der Prozessor 140 nicht auf den flüchtigen Speicher 126 zugreift, was dazu beiträgt, die SI 110 vor Fehlern und/oder Ausfällen zu schützen, die von dem flüchtigen Speicher 126 zu der SI 110 gelangen.When the volatile memory interface 200A is unlocked, the processor 140 can access the volatile memory 126, thereby starting the access timer 222. If the access timer 222 indicates that more than a first predetermined period of time has elapsed and no response has been received from the volatile memory 126, the processor 140 indicates a security error, uses the logical isolation controller 220 to reset the volatile memory interface 200A To lock memory, optionally locks any of the interface(s) 200 that are not locked, and optionally performs one or more measures designed to ensure that the vehicle platform 100 (see 1 ) returns to a safe state. On the other hand, if the response is received before the access timer 222 indicates that the first predetermined period of time has elapsed, the access timer 222 resets itself, the processor 140 completes the access, and the processor 140 locks the interface 200A of the volatile memory after access is terminated is closed. In this way, the volatile memory interface(s) 200A remains locked whenever the processor 140 is not accessing the volatile memory 126, helping to protect the SI 110 from errors and/or failures caused by the volatile memory 126 to the SI 110.

Die erste und die zweite Steuer-Backbone-Schnittstelle 200B bzw. 200C sind Schnittstellen zwischen dem Prozessor 140 und einem Steuer-Backbone 210. Das Steuer-Backbone 210 kann als Bus und dergleichen implementiert sein. Die erste Steuer-Backbone-Schnittstelle 200B dient der Kommunikation zwischen dem Prozessor 140 und dem Steuer-Backbone 210, und die zweite Steuer-Backbone-Schnittstelle 200C dient der Kommunikation zwischen dem Steuer-Backbone 210 und dem Prozessor 140. Als nicht einschränkendes Beispiel kann der Prozessor 140 über das Steuer-Backbone 210 auf zumindest einige der anderen Komponenten 160 (z.B. die Schaltung 124, die Mailbox(en) 156 und den nichtflüchtigen Speicher 128) des Fahrzeug-SoC 104 zugreifen.The first and second control backbone interfaces 200B and 200C, respectively, are interfaces between the processor 140 and a control backbone 210. The control backbone 210 may be implemented as a bus and the like. The first control backbone interface 200B is for communication between the processor 140 and the control backbone 210, and the second control backbone interface 200C is for communication between the control backbone 210 and the processor 140. As a non-limiting example, the processor 140 accesses at least some of the other components 160 (e.g., the circuitry 124, the mailbox(es) 156, and the non-volatile memory 128) of the vehicle SoC 104 via the control backbone 210.

Die erste Steuer-Backbone-Schnittstelle 200B ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen an das Steuer-Backbone 210 zu senden. Die erste Steuer-Backbone-Schnittstelle 200B kann die Steuerung 220 zur logischen Isolation, den Zugriffs-Timer 222, die Bereichssynchronisationsschaltung 224 und eine Firewall 226 aufweisen. Die Steuerung 220 zur logischen Isolation der ersten Steuer-Backbone-Schnittstelle 200B ist im Wesentlichen identisch mit der Steuerung 220 zur logischen Isolation der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch mit dieser. Somit ermöglicht die Steuerung 220 zur logischen Isolation der ersten Steuer-Backbone-Schnittstelle 200B dem Prozessor 140, die erste Steuer-Backbone-Schnittstelle 200B zu sperren und zu entsperren. Der Zugriffs-Timer 222 der ersten Steuer-Backbone-Schnittstelle 200B ermöglicht, dass bei einem von dem Prozessor 140 initiierten Zugriffsversuch eine Zeitüberschreitung auftritt. Die Bereichssynchronisationsschaltung 224 der ersten Steuer-Backbone-Schnittstelle 200B ist im Wesentlichen identisch mit der Bereichssynchronisationsschaltung 224 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen genauso. Die Firewall 226 der ersten Steuer-Backbone-Schnittstelle 200B implementiert eine oder mehrere Sicherheitsregeln und erlaubt oder blockiert jede Kommunikation auf der Grundlage der Sicherheitsregel(n).The first control backbone interface 200B allows the processor 140 to send instructions and/or information to the control backbone 210. The first control backbone interface 200B may include the logical isolation controller 220, the access timer 222, the area synchronization circuit 224, and a firewall 226. The logical isolation controller 220 of the first control backbone interface 200B is substantially identical to and functions substantially identically to the logical isolation controller 220 of the volatile memory interface 200A. Thus, to logically isolate the first control backbone interface 200B, the controller 220 allows the processor 140 to lock and unlock the first control backbone interface 200B. The access timer 222 of the first control backbone interface 200B allows an access attempt initiated by the processor 140 to time out. The area synchronization circuit 224 of the first control backbone interface 200B is substantially identical to the area synchronization circuit 224 of the volatile memory interface 200A and functions essentially the same. The firewall 226 of the first control backbone interface 200B implements one or more security rules and allows or blocks any communication based on the security rule(s).

Die zweite Steuer-Backbone-Schnittstelle 200C ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen von dem Steuer-Backbone 210 zu empfangen. Die zweite Steuer-Backbone-Schnittstelle 200C kann die Steuerung 220 zur logischen Isolation, die Bereichssynchronisationsschaltung 224 und die Firewall 226 aufweisen. Die Steuerung 220 zur logischen Isolation der zweiten Steuer-Backbone-Schnittstelle 200C ist im Wesentlichen identisch mit der Steuerung 220 zur logischen Isolation der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch mit dieser. Somit ermöglicht die Steuerung 220 zur logischen Isolation der zweiten Steuer-Backbone-Schnittstelle 200C dem Prozessor 140 das Sperren und Entsperren der zweiten Steuer-Backbone-Schnittstelle 200C. Die Bereichssynchronisationsschaltung 224 der zweiten Steuer-Backbone-Schnittstelle 200C ist im Wesentlichen identisch mit der Bereichssynchronisationsschaltung 224 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen genauso wie diese. Die Firewall 226 der zweiten Steuer-Backbone-Schnittstelle 200C implementiert eine oder mehrere Sicherheitsregeln und erlaubt oder blockiert jede Kommunikation auf der Grundlage der Sicherheitsregel(n).The second control backbone interface 200C allows the processor 140 to receive instructions and/or information from the control backbone 210. The second control backbone interface 200C may include the logical isolation controller 220, the range synchronization circuit 224, and the firewall 226. The logical isolation controller 220 of the second control backbone interface 200C is substantially identical to and functions substantially identically to the logical isolation controller 220 of the volatile memory interface 200A. Thus, to logically isolate the second control backbone interface 200C, the controller 220 allows the processor 140 to lock and unlock the second control backbone interface 200C. The area synchronization circuit 224 of the second control backbone interface 200C is substantially identical to and functions essentially the same as the area synchronization circuit 224 of the volatile memory interface 200A. The firewall 226 of the second control backbone interface 200C implements one or more security rules and allows or blocks any communication based on the security rule(s).

Die Schnittstelle 200D für sichere Inhalte ist eine Schnittstelle zwischen dem Prozessor 140 und der Schaltung 212 für sichere Inhalte. Die Schnittstelle 200D für sichere Inhalte ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen (z.B. sichere und/oder sensible Inhalte) von der Schaltung 212 für sichere Inhalte zu empfangen. Die Schnittstelle 200D für sichere Inhalte kann die Steuerung 220 zur logischen Isolation und die Bereichssynchronisationsschaltung 224 aufweisen. Die Steuerung 220 zur logischen Isolation der Schnittstelle 200D für sichere Inhalte ist im Wesentlichen identisch mit der Steuerung 220 zur logischen Isolation der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch mit dieser. Somit ermöglicht die Steuerung 220 zur logischen Isolation der Schnittstelle 200D für sichere Inhalte dem Prozessor 140, die Schnittstelle 200D für sichere Inhalte zu sperren und zu entsperren. Die Bereichssynchronisationsschaltung 224 der Schnittstelle 200D für sichere Inhalte ist im Wesentlichen identisch mit der Bereichssynchronisationsschaltung 224 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch mit dieser.The secure content interface 200D is an interface between the processor 140 and the secure content circuit 212. The secure content interface 200D allows the processor 140 to receive instructions and/or information (e.g., secure and/or sensitive content) from the secure content circuit 212. The secure content interface 200D may include the logical isolation controller 220 and the area synchronization circuit 224. The logical isolation control 220 of the secure content interface 200D is substantially identical to and functions substantially identical to the logical isolation control 220 of the volatile memory interface 200A. Thus, to logically isolate the secure content interface 200D, the controller 220 allows the processor 140 to lock and unlock the secure content interface 200D. The area synchronization circuit 224 of the secure content interface 200D is substantially identical to and functions substantially identically to the area synchronization circuit 224 of the volatile memory interface 200A.

Die Debug-Schnittstelle 200E ist eine Schnittstelle zwischen dem Prozessor 140 und der Debug-Schaltung 214. Die Debug-Schnittstelle 200E ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen von der Debug-Schaltung 214 zu empfangen. Die Debug-Schnittstelle 200E kann die Steuerung 220 zur logischen Isolation und die Bereichssynchronisationsschaltung 224 aufweisen. Die Steuerung 220 zur logischen Isolation der Debug-Schnittstelle 200E ist im Wesentlichen identisch mit der Steuerung 220 zur logischen Isolation der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch mit dieser. Somit ermöglicht die Steuerung 220 zur logischen Isolation der Debug-Schnittstelle 200E dem Prozessor 140, die Debug-Schnittstelle 200E zu sperren und zu entsperren. Die Bereichssynchronisationsschaltung 224 der Debug-Schnittstelle 200E ist im Wesentlichen identisch mit der Bereichssynchronisationsschaltung 224 der Schnittstelle 200 des flüchtigen Speichers und funktioniert im Wesentlichen identisch mit dieser. Wie es oben erwähnt ist, arbeiten die SI 110 und die anderen Komponenten 160 in getrennten Taktbereichen. Bei solchen Ausführungsformen werden keine Signale von einem externen Taktgeber einer oder mehrerer der anderen Komponenten 160 des Fahrzeug-SoC 104, wie z. B. der Debug-Schaltung 214, in die SI 110 eingespeist. Die von dem Fahrzeug-SoC 104 ausgeführten Debug-Funktionen empfangen das Debug-Taktsignal über die Bereichssynchronisationsschaltung 224 der Debug-Schnittstelle 200E, die die von dem Fahrzeug-SoC 104 ausgeführten Debug-Funktionen auf die Verwendung des von der SI 110 und/oder dem zweiten (SI-) Taktgeber 114 erzeugten Debug-Taktsignals umschaltet oder umwandelt. Da die Debug-Logik nicht verwendet wird, während sich die SI 110 in dem Einsatzmodus befindet (z. B. wenn das Fahrzeug fährt), weist die SI 110 ein erstes Taktgatter für den Debug-Takt auf, um Störungen zu verhindern, die möglicherweise durch das Debug-Taktsignal verursacht werden könnten. Als nicht einschränkendes Beispiel kann das erste Taktgatter eine Komponente der Takt- und Reset-Schaltung 230 sein. Das erste Taktgatter kann mit Hilfe eines ersten Konfigurationsbits, das von dem Prozessor 140 gesetzt wird, gesteuert (z. B. selektiv ein- und ausgeschaltet) werden.The debug interface 200E is an interface between the processor 140 and the debug circuit 214. The debug interface 200E allows the processor 140 to receive instructions and/or information from the debug circuit 214. The debug interface 200E may include the logical isolation controller 220 and the range synchronization circuit 224. The logical isolation control 220 of the debug interface 200E is essentially identical to the logical isolation control 220 tion of the volatile memory interface 200A and functions essentially identically to it. Thus, to logically isolate the debug interface 200E, the controller 220 allows the processor 140 to lock and unlock the debug interface 200E. The range synchronization circuit 224 of the debug interface 200E is substantially identical to and functions substantially identically to the range synchronization circuit 224 of the volatile memory interface 200. As mentioned above, the SI 110 and the other components 160 operate in separate clock domains. In such embodiments, no signals are received from an external clock of one or more of the other components 160 of the vehicle SoC 104, such as. B. the debug circuit 214, fed into the SI 110. The debug functions performed by the vehicle SoC 104 receive the debug clock signal via the range synchronization circuit 224 of the debug interface 200E, which responds to the debug functions performed by the vehicle SoC 104 using the signal provided by the SI 110 and/or the second (SI) clock 114 switches or converts generated debug clock signal. Since the debug logic is not used while the SI 110 is in the deployment mode (e.g., when the vehicle is running), the SI 110 includes a first clock gate for the debug clock to prevent interference that may occur could be caused by the debug clock signal. As a non-limiting example, the first clock gate may be a component of the clock and reset circuit 230. The first clock gate may be controlled (e.g., selectively turned on and off) using a first configuration bit set by the processor 140.

Die Test-Schnittstelle 200F ist eine Schnittstelle zwischen dem Prozessor 140 und der Test-Schaltung 216. Die Test-Schnittstelle 200F ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen von der Test-Schaltung 216 zu empfangen. Die Test-Schnittstelle 200F kann die Steuerung 220 zur logischen Isolation und die Bereichssynchronisationsschaltung 224 aufweisen. Die Steuerung 220 zur logischen Isolation der Test-Schnittstelle 200F ist im Wesentlichen identisch mit der Steuerung 220 zur logischen Isolation der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch mit dieser. Somit ermöglicht die Steuerung 220 zur logischen Isolation der Test-Schnittstelle 200F dem Prozessor 140 das Sperren und Entsperren der Test-Schnittstelle 200F. Die Bereichssynchronisationsschaltung 224 der Test-Schnittstelle 200F ist im Wesentlichen identisch mit der Bereichssynchronisationsschaltung 224 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch mit dieser. Wie es bereits erwähnt ist, wird durch diese Konfiguration verhindert, dass externe Signale von einer oder mehreren der anderen Komponenten 160 des Fahrzeug-SoC 104, wie z. B. der Test-Schaltung 216, in die SI 110 eingespeist werden. Die von dem Fahrzeug-SoC 104 ausgeführten Testfunktionen erhalten das Testtaktsignal über die Bereichssynchronisationsschaltung 224 der Debug-Schnittstelle 200E, die die von dem Fahrzeug-SoC 104 ausgeführten Testfunktionen auf die Verwendung des von der SI 110 und/oder dem zweiten (SI-)Taktgeber 114 erzeugten Testtaktsignals umschaltet oder umwandelt. Da die Testlogik nicht verwendet wird, während sich die SI 110 in dem Einsatzmodus befindet (z. B. wenn das Fahrzeug fährt), weist die SI 110 ein zweites Taktgatter für den Testtakt auf, um jegliche Störung zu verhindern, die möglicherweise durch das Testtaktsignal verursacht werden könnte. Als nicht einschränkendes Beispiel kann das zweite Taktgatter eine Komponente der Takt- und Reset-Schaltung 230 sein. Das zweite Taktgatter kann mit Hilfe eines zweiten Konfigurationsbits, das von dem Prozessor 140 gesetzt wird, gesteuert (z. B. selektiv ein- und ausgeschaltet) werden.The test interface 200F is an interface between the processor 140 and the test circuit 216. The test interface 200F allows the processor 140 to receive instructions and/or information from the test circuit 216. The test interface 200F may include the logical isolation controller 220 and the range synchronization circuit 224. The test interface 200F logical isolation controller 220 is substantially identical to and functions substantially identical to the volatile memory interface 200A logical isolation controller 220. Thus, to logically isolate the test interface 200F, the controller 220 allows the processor 140 to lock and unlock the test interface 200F. The range synchronization circuit 224 of the test interface 200F is substantially identical to and functions substantially identically to the range synchronization circuit 224 of the volatile memory interface 200A. As noted, this configuration prevents external signals from one or more of the other components 160 of the vehicle SoC 104, such as. B. the test circuit 216, into which SI 110 are fed. The test functions performed by the vehicle SoC 104 receive the test clock signal via the range synchronization circuit 224 of the debug interface 200E, which responds to the test functions performed by the vehicle SoC 104 using the signal provided by the SI 110 and/or the second (SI) clock 114 generated test clock signal switches or converts. Since the test logic is not used while the SI 110 is in the deployment mode (e.g., when the vehicle is running), the SI 110 includes a second clock gate for the test clock to prevent any interference that may be caused by the test clock signal could be caused. As a non-limiting example, the second clock gate may be a component of the clock and reset circuit 230. The second clock gate may be controlled (e.g., selectively turned on and off) using a second configuration bit set by the processor 140.

Die SI 110 kann mindestens zwei Betriebsmodi haben, einen isolierten oder Cocoon-Modus und einen nicht-isolierten Modus. Wenn die SI 110 in dem Cocoon-Modus arbeitet, sind die einzigen Informationen, die von dem Fahrzeug-SoC 104 in die SI 110 gelangen dürfen, Fehlerinformationen, die über die Fehlerschnittstelle(n) 172 in die SI 110 gelangen. Auf diese Weise hält der SI-Fehleraggregator 142 einen kumulativen Gesundheitszustand des Fahrzeug-SoC 104 und der SI 110 auf dem aktuellen Stand. Wenn die SI 110 hingegen im nicht isolierten Modus arbeitet, können Informationen über eine oder mehrere der Schnittstelle(n) 200 in die SI 110 gelangen. Ob die SI 110 in dem Cocoon-Modus oder in dem nicht-isolierten Modus arbeitet, wird zumindest teilweise durch die von dem Prozessor 140 ausgeführten Anweisungen 149 und zumindest teilweise durch die Schnittstelle(n) 200 bestimmt.The SI 110 can have at least two operating modes, an isolated or cocoon mode and a non-isolated mode. When the SI 110 is operating in the cocoon mode, the only information that is allowed to enter the SI 110 from the vehicle SoC 104 is error information that enters the SI 110 via the error interface(s) 172. In this way, the SI fault aggregator 142 maintains a cumulative health status of the vehicle SoC 104 and the SI 110 up to date. On the other hand, when the SI 110 is operating in non-isolated mode, information about one or more of the interfaces 200 can be included in reach the SI 110. Whether the SI 110 operates in the cocoon mode or the non-isolated mode is determined at least in part by the instructions 149 executed by the processor 140 and at least in part by the interface(s) 200.

Um zu verhindern, dass ein potenzielles sicherheitskritisches Problem, das seinen Ursprung in den anderen Komponenten 160 des Fahrzeug-SoC 104 hat, über eine oder mehrere der Schnittstelle(n) 200 zu der SI 110 gelangt, weist jede der Schnittstelle(n) 200 die separate Steuerung 220 zur logischen Isolation auf, die von dem Prozessor 140 selektiv ge- und entsperrt wird. Wenn der Sperrmechanismus der Steuerung 220 zur logischen Isolation durch den Prozessor 140 gesperrt wird, verhindert der Sperrmechanismus jegliche Kommunikation zwischen dem Fahrzeug-SoC 104 und der SI 110 über die gesperrte Schnittstelle. Andererseits kann die Schnittstelle durch den Prozessor 140 entsperrt werden, um eine solche Kommunikation über die entsperrte Schnittstelle zu ermöglichen. So kann der Prozessor 140 die SI 110 wahlweise in den Cocoon-Modus oder in den nicht isolierten Modus versetzen. Wenn alle Schnittstellen 200 gesperrt sind, kann der Prozessor 140 weder auf den flüchtigen Speicher 126 noch auf den nichtflüchtigen Speicher 128 zugreifen und führt die Anweisungen 149 aus, die in dem flüchtigen Speicher 146 (z. B. SRAM) in der SI 110 gespeichert sind.To prevent a potential safety-critical issue originating in the other components 160 of the vehicle SoC 104 from reaching the SI 110 via one or more of the interfaces 200, each of the interfaces 200 has the separate controller 220 for logical isolation, which is selectively locked and unlocked by the processor 140. When the logic isolation controller 220's locking mechanism is locked by the processor 140, the locking mechanism prevents any communication between the vehicle SoC 104 and the SI 110 over the locked interface. On the other hand, the interface may be unlocked by the processor 140 to enable such communication over the unlocked interface. So the processor 140 can optionally put the SI 110 in the Cocoon mode or put into non-isolated mode. When all interfaces 200 are disabled, processor 140 cannot access either volatile memory 126 or non-volatile memory 128 and executes instructions 149 stored in volatile memory 146 (e.g., SRAM) in SI 110 .

Nun mit Bezug zu 3 weist jeder Block eines Verfahrens 300, wie es hier beschrieben ist, ein Rechenverfahren auf, das mit einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor (z. B. dem in den 1, 2 und 4 dargestellten Prozessor 140) ausgeführt werden, der Anweisungen (z. B. die in den 1, 2 und 4 dargestellten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 dargestellten flüchtigen Speicher 146) gespeichert sind. Das Verfahren 300 kann auch in Form von computerverwendbaren Anweisungen, die auf Computerspeichermedien gespeichert sind, ausgestaltet werden. Das Verfahren 300 kann als eigenständige Anwendung, als Dienst oder gehosteter Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder als Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige Beispiele zu nennen. Darüber hinaus wird das Verfahren 300 beispielhaft für die Fahrzeug-Plattform 100 von 1 beschrieben. Das Verfahren 300 kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme.Now with reference to 3 Each block of a method 300, as described herein, includes a computing method that can be performed with any combination of hardware, firmware and/or software. For example, various functions can be performed by a processor (e.g. the one in the 1 , 2 and 4 processor 140 shown) are executed, the instructions (e.g. those in the 1 , 2 and 4 instructions 149 shown) which are stored in a memory (e.g. that in the 1 , 2 and 4 shown volatile memory 146) are stored. The method 300 may also be embodied in the form of computer-usable instructions stored on computer storage media. Method 300 may be provided as a standalone application, as a service or hosted service (standalone or in combination with another hosted service), or as a plug-in for another product, to name just a few examples. In addition, the method 300 is exemplary for the vehicle platform 100 of 1 described. However, method 300 may additionally or alternatively be performed by any system or combination of systems, including but not limited to the systems described herein.

3 ist ein Flussdiagramm, das das Verfahren 300 zum Übergang der SI 110 zwischen dem Cocon- und dem nicht isolierten Modus gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Zur Vereinfachung der Darstellung wird das Verfahren 300 so beschrieben, als würde es von dem Prozessor 140 ausgeführt (siehe 1, 2 und 4). Unter Bezugnahme auf 3 stellt der Prozessor 140 in einem ersten Block 302 fest, dass er mit einer der anderen Komponenten 160 (siehe 1 und 2) des Fahrzeug-SoC 104 kommunizieren muss. Diese Kommunikation kann beispielsweise über die Schnittstelle 200A des flüchtigen Speichers oder die erste Steuer-Backbone-Schnittstelle 200B erfolgen, die es jeweils der SI 110 ermöglichen, die Kommunikation mit den anderen Komponenten 160 des Fahrzeug-SoC 104 einzuleiten. Alternativ kann diese Kommunikation über die zweite Steuer-Backbone-Schnittstelle 200C, die Schnittstelle 200D für sichere Inhalte, die Debug-Schnittstelle 200E oder die Test-Schnittstelle 200F erfolgen, die es der SI 110 jeweils ermöglichen, von den anderen Komponenten 160 des Fahrzeug-SoC 104 initiierte Kommunikationen zu empfangen. Wie es oben erwähnt ist, erfolgt die Kommunikation über die Fehlerschnittstelle(n) 172 (siehe 2) unabhängig davon, ob sich die SI 110 in dem Cocoon-Modus oder in dem nicht isolierten Modus befindet. 3 is a flowchart depicting the method 300 for transitioning the SI 110 between cocoon and non-isolated modes, according to some embodiments of the present disclosure. For ease of illustration, method 300 is described as if it were executed by processor 140 (see 1 , 2 and 4 ). With reference to 3 the processor 140 determines in a first block 302 that it is connected to one of the other components 160 (see 1 and 2 ) of the vehicle SoC 104 must communicate. This communication may occur, for example, via the volatile memory interface 200A or the first control backbone interface 200B, each of which allows the SI 110 to initiate communication with the other components 160 of the vehicle SoC 104. Alternatively, this communication may occur via the second control backbone interface 200C, the secure content interface 200D, the debug interface 200E, or the test interface 200F, each of which allows the SI 110 to be informed by the other components 160 of the vehicle Receive SoC 104 initiated communications. As mentioned above, communication occurs via the error interface(s) 172 (see 2 ) regardless of whether the SI 110 is in cocoon mode or non-isolated mode.

Wann immer der Prozessor 140 mit einer bestimmten der anderen Komponenten 160 des Fahrzeug-SoC 104 kommunizieren muss, überprüft der Prozessor 140, ob die Kommunikation mit der bestimmten Komponente sicher ist, bevor er dies versucht. Um diese Überprüfung vorzunehmen, kann der Prozessor 140 in Block 304 den Inhalt des SI-Fehleraggregators 142 überprüfen, der über die Fehlerschnittstelle(n) 172 (siehe 2) Fehlerinformationen von dem/den SoC-Fehleraggregator(en) 152 empfängt, der/die extern zu der SI 110 ist/sind. Wie bereits erwähnt, ist/sind die Fehlerschnittstelle(n) 172 nicht logisch von dem/den SoC-Fehleraggregator(en) 152 isoliert, sondern durchlaufen den/die Spannungspegelschieber 240, der/die eine elektrische Isolierung zwischen dem SI- und dem SoC-Spannungsbereich bereitstellt/bereitstellen, oder weisen diese(n) auf.Whenever the processor 140 needs to communicate with a particular one of the other components 160 of the vehicle SoC 104, the processor 140 checks whether communication with the particular component is secure before attempting to do so. To make this check, the processor 140 may, in block 304, check the contents of the SI error aggregator 142, which is available via the error interface(s) 172 (see 2 ) Receives error information from the SoC error aggregator(s) 152 that is external to the SI 110. As previously mentioned, the fault interface(s) 172 is not logically isolated from the SoC fault aggregator(s) 152, but rather passes through the voltage level shifter(s) 240, which provides electrical isolation between the SI and SoC Provide/provide voltage range, or have these.

Im Abfrageblock 306 bestimmt der Prozessor 140, ob irgendwelche Fehler in dem SI-Fehleraggregator 142 erkannt wurden. Die Antwort bei dem Abfrageblock 306 lautet „JA“, wenn mindestens ein Fehler erkannt wurde, was bedeutet, dass ein für eine oder mehrere der anderen Komponenten 160 identifizierter Fehler von dem/den SoC-Fehleraggregator(en) 152 an den SI-Fehleraggregator 142 gemeldet wurde. Der Prozessor 140 kann den Fehler anhand der Statusbits 242 innerhalb des SI-Fehleraggregators 142 erkennen. Die Statusbits 242 können so gekennzeichnet sein, dass sie das Befinden des Fahrzeug-SoC 104 verfolgen. Alternativ kann der SI-Fehleraggregator 142 den Prozessor 140 über den Fehler informieren, indem er einen Interrupt an den Prozessor 140 sendet. Andernfalls lautet die Antwort in dem Abfrageblock 306 „NEIN“, wenn kein Fehler erkannt wird.In query block 306, processor 140 determines whether any errors have been detected in SI error aggregator 142. The answer at query block 306 is “YES” if at least one fault has been detected, meaning that a fault identified for one or more of the other components 160 has been passed from the SoC fault aggregator(s) 152 to the SI fault aggregator 142 was reported. The processor 140 can detect the error based on the status bits 242 within the SI error aggregator 142. The status bits 242 may be labeled to track the health of the vehicle SoC 104. Alternatively, the SI error aggregator 142 may inform the processor 140 of the error by sending an interrupt to the processor 140. Otherwise, the answer in query block 306 is “NO” if no error is detected.

Wenn die Antwort in dem Abfrageblock 306 „JA“ lautet, kann der Prozessor 140 in Block 308 eine oder mehrere Korrekturmaßnahmen ergreifen. Die Korrekturmaßnahme(n) kann/können dazu beitragen, das Fahrzeug in einen sicheren Zustand zu bringen. Als nicht einschränkende Beispiele können solche Korrekturmaßnahmen die Betätigung der Fahrzeugbremsen, die Verringerung der Fahrzeuggeschwindigkeit, das Leiten des Fahrzeugs an den Straßenrand und ähnliches aufweisen. Dann kann der Prozessor 140 zu Block 304 zurückkehren.If the answer in query block 306 is “YES,” the processor 140 may take one or more corrective actions in block 308. The corrective action(s) may help return the vehicle to a safe condition. As non-limiting examples, such corrective actions may include applying the vehicle brakes, reducing the vehicle speed, pulling the vehicle to the side of the road, and the like. Then the processor 140 can return to block 304.

Wenn die Antwort in dem Abfrageblock 306 „NEIN“ lautet, entsperrt der Prozessor 140 in Block 310 den Sperrmechanismus der Steuerung 220 zur logischen Isolation einer bestimmten der mit der bestimmten Komponente verbundenen Schnittstelle(n) 200, wenn der Sperrmechanismus der bestimmten Schnittstelle gesperrt war. Mit anderen Worten kann der Prozessor 140 feststellen, dass es sicher ist, auf die bestimmte Komponente des Fahrzeug-SoC 104 über die bestimmte Schnittstelle zuzugreifen, wenn der SI-Fehleraggregator 142 keinen Fehler speichert. Daher entsperrt der Prozessor 140 in Block 310 die bestimmte Schnittstelle.If the answer in query block 306 is "NO", then in block 310 the processor 140 unlocks the locking mechanism of the controller 220 to logically isolate a particular one of the controllers 220 interface(s) 200 associated with a specific component if the locking mechanism of the specific interface was locked. In other words, when the SI error aggregator 142 does not store an error, the processor 140 may determine that it is safe to access the particular component of the vehicle SoC 104 via the particular interface. Therefore, in block 310, the processor 140 unlocks the particular interface.

Dann, in Block 312, kann der Prozessor 140 über die entsperrte bestimmte Schnittstelle Mitteilungen an die bestimmte Komponente senden oder von ihr empfangen, was automatisch den Zugriffs-Timer 222 der bestimmten Schnittstelle startet. Wenn die bestimmte Schnittstelle entsperrt ist, kann der Prozessor 140 einen oder mehrere streng geordnete Zugriffe (einen nach dem anderen) auf dem Fahrzeug-SoC 104 initiieren. Der Zugriffs-Timer 222 startet automatisch für jeden Zugriff. So kann der Zugriffs-Timer 222 mit dem Herunterzählen beginnen, sobald ein bestimmter Zugriff durch den Prozessor 140 eingeleitet wird.Then, in block 312, the processor 140 may send or receive messages to the particular component via the unlocked particular interface, which automatically starts the particular interface's access timer 222. When the particular interface is unlocked, the processor 140 may initiate one or more strictly ordered accesses (one at a time) on the vehicle SoC 104. The access timer 222 starts automatically for each access. Thus, the access timer 222 may begin counting down as soon as a particular access is initiated by the processor 140.

Im Abfrageblock 314 bestimmt der Prozessor 140, ob eine Zeitüberschreitung eingetreten ist. Die Antwort im Abfrageblock 314 lautet „JA“, wenn der Zugriffs-Timer 222 anzeigt, dass die erste vorbestimmte Zeitspanne verstrichen ist und keine Antwort von der jeweiligen Komponente empfangen wurde. Andernfalls ist die Antwort im Abfrageblock 314 „NEIN“, wenn eine Antwort von der bestimmten Komponente empfangen wird, bevor der Zugriffs-Timer 222 anzeigt, dass die erste vorbestimmte Zeitspanne verstrichen ist.In query block 314, processor 140 determines whether a timeout has occurred. The answer in query block 314 is “YES” if the access timer 222 indicates that the first predetermined period of time has elapsed and no response has been received from the respective component. Otherwise, the answer in query block 314 is “NO” if a response is received from the particular component before the access timer 222 indicates that the first predetermined period of time has elapsed.

Wenn die Antwort in dem Abfrageblock 314 „JA“ lautet, zeigt der Prozessor 140 im Block 316 an, dass ein Sicherheitsfehler aufgetreten ist. Dann, in Block 318, sperrt der Prozessor 140 den Sperrmechanismus der Steuerung 220 zur logischen Isolation der bestimmten Schnittstelle, sperrt optional den Sperrmechanismus der Steuerung 220 zur logischen Isolation jeder der anderen Schnittstelle(n), die nicht gesperrt ist/sind, und führt optional eine oder mehrere Aktionen aus, die ausgestaltet sind, um die Fahrzeug-Plattform 100 in einen sicheren Zustand zurückzubringen.If the answer in query block 314 is “YES,” processor 140 indicates in block 316 that a security error has occurred. Then, in block 318, the processor 140 disables the locking mechanism of the controller 220 to logically isolate the particular interface, optionally disables the locking mechanism of the controller 220 to logically isolate each of the other interface(s) that is not locked, and optionally executes one or more actions designed to return the vehicle platform 100 to a safe state.

Andererseits, wenn die Antwort im Abfrageblock 314 „NEIN“ ist, schließt der Prozessor 140 in Block 320 die Kommunikation ab. Der Zugriffs-Timer 222 wird automatisch zurückgesetzt. Dann, in Block 318, sperrt der Prozessor 140 den Sperrmechanismus der jeweiligen Schnittstelle. Auf diese Weise stellt das Verfahren 300 sicher, dass die Schnittstelle(n) 200 immer dann gesperrt bleibt (bleiben), wenn der Prozessor 140 nicht auf eine der anderen Komponenten 160 des Fahrzeug-SoC 104 zugreift. Dann wird das Verfahren 300 beendet.On the other hand, if the answer in query block 314 is “NO”, the processor 140 completes the communication in block 320. The access timer 222 is automatically reset. Then, in block 318, the processor 140 disables the locking mechanism of the respective interface. In this way, the method 300 ensures that the interface(s) 200 remains locked whenever the processor 140 is not accessing any of the other components 160 of the vehicle SoC 104. Then the procedure 300 is ended.

Die SI 110 kann den Zugriff auf den gemeinsam genutzten nichtflüchtigen Speicher 128 vermeiden, indem sie die Anweisungen 149 (z. B. kritische Anweisungen, die das System in einen sicheren Zustand bringen) aus dem gemeinsam genutzten nichtflüchtigen Speicher 128 in seinen internen flüchtigen Speicher 146 kopiert, wenn das Fahrzeug-SoC 104 hochgefahren wird. Der Prozessor 140 kann die Anweisungen 149 authentifizieren und validieren, bevor die SI 110 in einen Einsatzmodus übergeht, der einen Fahrzyklus des Fahrzeugs ermöglicht. Die SI 110 kann gleichzeitig im Einsatzmodus und entweder im Cocoon-Modus oder im nicht isolierten Modus arbeiten. Die Anweisungen 149 verbleiben im flüchtigen Speicher 146, wodurch der Prozessor 140 den Zugriff auf den gemeinsamen nicht flüchtigen Speicher 128 vermeiden kann. Nicht kritische Daten, z. B. Anwendungscode, Fusionsdaten usw., können aus dem gemeinsam genutzten flüchtigen Speicher 126 unter Verwendung einer internen (Direct Memory Access-) DMA-Engine 402 (siehe 4), die in der SI 110 enthalten ist, abgerufen werden. Die DMA-Engine 402 kann optional eine Komponente des Prozessors 140 sein. Ein Ausfall der DMA-Engine 402 wirkt sich nicht negativ auf den Prozessor 140 aus, denn selbst wenn die DMA-Engine 402 beim Auslagern von Daten aus dem gemeinsam genutzten flüchtigen Speicher 126 ausfällt, führt der Prozessor 140 die in dem flüchtigen Speicher 146 gespeicherten Anweisungen 149 weiter aus.The SI 110 can avoid access to the shared non-volatile memory 128 by transferring the instructions 149 (e.g., critical instructions that bring the system to a safe state) from the shared non-volatile memory 128 to its internal volatile memory 146 copied when the vehicle SoC 104 boots up. The processor 140 may authenticate and validate the instructions 149 before the SI 110 enters a deployment mode that enables a vehicle drive cycle. The SI 110 can operate simultaneously in deployment mode and either cocoon mode or non-isolated mode. Instructions 149 remain in volatile memory 146, allowing processor 140 to avoid accessing shared non-volatile memory 128. Non-critical data, e.g. B. Application code, fusion data, etc., can be from the shared volatile memory 126 using an internal (Direct Memory Access) DMA engine 402 (see 4 ), which is contained in SI 110, can be retrieved. The DMA engine 402 may optionally be a component of the processor 140. A failure of the DMA engine 402 does not adversely affect the processor 140 because even if the DMA engine 402 fails while swapping data from the shared volatile memory 126, the processor 140 executes the instructions stored in the volatile memory 146 149 further out.

4 ist eine Illustration der Fehlerschnittstelle(n) 172 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Unter Bezugnahme auf 4 können die Logikblöcke LB(1) - LB(N) des Fahrzeug-SoC 104 jeweils ersten Fehleraggregatoren 260-1 bis 260-N zugeordnet sein. Die ersten Fehleraggregatoren 260-1 bis 260-N aggregieren Fehler, die von den Logikblöcken LB(1) bis LB(N) erzeugt werden, und übertragen erste aggregierte Fehlersignale an die Hilfssicherheitseinheit 122 des Fahrzeug-SoC 104. Die Hilfssicherheitseinheit 122 implementiert den (die) zweiten SoC-Fehleraggregator(en) 152, der (die) das (die) erste(n) aggregierte(n) Fehlersignal(e) aggregiert (aggregieren), das (die) von den ersten Fehleraggregatoren 260-1 bis 260-N empfangen wurde(n), und übermittelt (übermitteln) ein oder mehrere zweite aggregierte Fehlersignale an die optionale externe Steuereinheit 106 (siehe 1), sofern vorhanden. Wenn die optionale externe Steuereinheit 106 durch das (die) zweite(n) aggregierte(n) Fehlersignal(e) über einen Fehler benachrichtigt wird, kann die optionale externe Steuereinheit 106 eine oder mehrere Maßnahmen aus einer Reihe von möglichen Maßnahmen ergreifen. Erstens kann die optionale externe Steuereinheit 106 den Fehler löschen. Zweitens kann die optionale externe Steuereinheit 106 eine Korrekturmaßnahme ergreifen. Drittens kann die optionale externe Steuereinheit 106 ein externes System benachrichtigen (z. B. einen oder mehrere externe Mikrocontroller, einen oder mehrere externe Agenten und dergleichen). Wie bereits erwähnt, kann bei einigen Ausführungsformen die optionale externe Steuerung 106 jedoch auch nicht vorhanden sein. 4 is an illustration of the error interface(s) 172 according to some embodiments of the present disclosure. With reference to 4 The logic blocks LB(1) - LB(N) of the vehicle SoC 104 can each be assigned to the first error aggregators 260-1 to 260-N. The first error aggregators 260-1 to 260-N aggregate errors generated by the logic blocks LB(1) to LB(N) and transmit first aggregated error signals to the auxiliary safety unit 122 of the vehicle SoC 104. The auxiliary safety unit 122 implements the ( the second SoC error aggregator(s) 152 aggregating the first aggregated error signal(s) received from the first error aggregators 260-1 to 260- N has been received and transmits one or more second aggregated error signals to the optional external control unit 106 (see 1 ), if available. If the optional external control unit 106 is notified of a failure by the second aggregated error signal(s), the optional external control unit 106 may take one or more actions from a range of possible actions. First, the optional external control unit 106 can clear the error. Second, the optional external control unit 106 may take corrective action. Third, the optional external control unit 106 can notify an external system (e.g. B. one or more external microcontrollers, one or more external agents and the like). However, as previously mentioned, in some embodiments the optional external controller 106 may not be present.

Bezug nehmend auf 1 ist die SI 110 zwar, wie es vorab beschrieben ist, von den anderen Komponenten 160 des Fahrzeug-SoC 104 isoliert, doch muss zumindest eine gewisse Kommunikation zwischen der SI 110 und den anderen Komponenten 160 des Fahrzeug-SoC 104 möglich sein. Insbesondere müssen Fehler, die in den Logikblöcken LB(1) bis LB(N) des Fahrzeug-SoC 104 auftreten, der SI 110 über die Fehlerschnittstelle(n) 172 mitgeteilt werden. Eine Methode zur Bereitstellung einer solchen Kommunikation wäre, dass die ersten Fehleraggregatoren 260-1 bis 260-N (siehe 4) die ersten aggregierten Fehlersignale direkt an die SI 110 senden. Dies erfordert, dass die Fehlerschnittstelle(n) 172 eine separate Übertragungsleitung oder einen separaten Signalleiter zwischen der SI 110 und jedem der ersten Fehleraggregatoren 260-1 bis 260-N aufweist, was durch die Isolierung der SI 110 von den anderen Komponenten 160 des Fahrzeug-SoC 104 erschwert wird. Beispielsweise müssten die Spannungspegelschieber 240 (siehe 2) für jeden Signalleiter einen eigenen Spannungspegelschieber aufweisen. Darüber hinaus ist die SI 110 umso anfälliger für Störungen, die von dem Fahrzeug-SoC 104 ausgehen, je größer die Anzahl der Signalleiter zwischen der SI 110 und den anderen Komponenten 160 des Fahrzeug-SoC 104 ist.Referring to 1 Although the SI 110 is isolated from the other components 160 of the vehicle SoC 104, as described above, at least some communication between the SI 110 and the other components 160 of the vehicle SoC 104 must be possible. In particular, errors that occur in the logic blocks LB(1) through LB(N) of the vehicle SoC 104 must be communicated to the SI 110 via the error interface(s) 172. One method of providing such communication would be for the first error aggregators 260-1 to 260-N (see 4 ) send the first aggregated error signals directly to the SI 110. This requires that the fault interface(s) 172 have a separate transmission line or signal conductor between the SI 110 and each of the first fault aggregators 260-1 to 260-N, which is achieved by isolating the SI 110 from the other components 160 of the vehicle SoC 104 is made more difficult. For example, the voltage level sliders 240 (see 2 ) have a separate voltage level slider for each signal conductor. In addition, the greater the number of signal conductors between the SI 110 and the other components 160 of the vehicle SoC 104, the more susceptible the SI 110 is to interference emanating from the vehicle SoC 104.

Stattdessen kann, wie es in 4 gezeigt ist, jeder der SoC-Fehleraggregatoren 152 über drei Signalleiter mit der SI 110 verbunden sein: (1) einen Leiter 410 eines korrigierten Fehlersignals; (2) einen Leiter 412 eines Signals eines unkorrigierten Fehlers; und (3) einen SoC-FehleraggregatorSignalleiter 414. Diese Anordnung kann es der (den) Fehlerschnittstelle(n) 172 ermöglichen, Fehler von den Logikblöcken LB(1) bis LB(N) an die SI 110 zu melden, ohne dass die Fehlerschnittstelle(n) 172 so viele Leiter aufweist (aufweisen), dass die Leiter elektrische Interferenzen verursachen, und ohne dass die Fehlerschnittstelle(n) 172 so groß wird (werden), dass sie eine Überlastung des SoC 104 und/oder der SI 110 verursachen. Die Signalleiter 410, 412 und 414 können die Statusbits „BT1“, „BT2“ bzw. „BT3“ setzen, von denen jedes, nachdem es gesetzt wurde, anschließend durch den Prozessor 140 gelöscht werden kann.Instead, as in 4 As shown, each of the SoC error aggregators 152 may be connected to the SI 110 via three signal conductors: (1) a corrected error signal conductor 410; (2) an uncorrected error signal conductor 412; and (3) a SoC fault aggregator signal conductor 414. This arrangement may allow the fault interface(s) 172 to report faults from logic blocks LB(1) through LB(N) to the SI 110 without the fault interface(s). n) 172 has so many conductors that the conductors cause electrical interference, and without causing the fault interface(s) 172 to become so large that they cause overloading of the SoC 104 and/or the SI 110. Signal conductors 410, 412, and 414 may set status bits “BT1,” “BT2,” and “BT3,” respectively, each of which, once set, may subsequently be cleared by processor 140.

Die Mailbox(en) 156 kann/können über eine Mailbox-Interrupt-Signalleitung 416 mit der Interrupt-Steuerung 141 der SI 110 verbunden sein. Die Signalleiter 410-416 können jeweils als Draht, Signalbahn und dergleichen ausgeführt sein.The mailbox(es) 156 may be connected to the interrupt controller 141 of the SI 110 via a mailbox interrupt signal line 416. The signal conductors 410-416 can each be designed as a wire, signal track and the like.

5A ist ein Flussdiagramm, das ein Verfahren 500 zur Übermittlung von Fehlern an die SI 110 (siehe 1, 2, 4, 8 und 10) gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Wie es hier beschrieben ist, weist jeder Block des Verfahrens 500 in 5A ein Rechenverfahren auf, das mit einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor (z. B. dem in den 1 und 4 dargestellten Prozessor 150) ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Zumindest Abschnitte des Verfahrens 500 können als computerverwendbare Anweisungen, die auf Computerspeichermedien gespeichert sind, ausgestaltet sein. Das Verfahren 500 kann durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 500 beispielhaft in Bezug auf die Fahrzeug-Plattform 100 von 1 beschrieben. Das Verfahren 500 kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme. 5A is a flowchart illustrating a method 500 for communicating errors to the SI 110 (see 1 , 2 , 4 , 8th and 10 ) according to some embodiments of the present disclosure. As described herein, each block of the method 500 in 5A a computing method that can be performed with any combination of hardware, firmware and/or software. For example, various functions can be performed by a processor (e.g. the one in the 1 and 4 processor 150 shown), which executes instructions stored in memory. At least portions of the method 500 may be embodied as computer-usable instructions stored on computer storage media. Method 500 may be provided through a standalone application, service, or hosted service (standalone or in combination with another hosted service), or a plug-in for another product, to name a few. In addition, the method 500 is exemplified with respect to the vehicle platform 100 of 1 described. However, method 500 may additionally or alternatively be performed by any system or combination of systems, including but not limited to the systems described herein.

Der Einfachheit halber wird das Verfahren 500 so beschrieben, dass es von einem bestimmten SoC-Fehleraggregator 152 ausgeführt wird (siehe 1, 2 und 4). Mit anderen Worten, das Verfahren 500 kann von Hardware ausgeführt werden. Unter Bezugnahme auf 5A empfängt der bestimmte SoC-Fehleraggregator in einem ersten Block 502 erste aggregierte Fehlersignale von mindestens einem Teil der ersten Fehleraggregatoren 260-1 bis 260-N (siehe 2 und 4).For simplicity, method 500 is described as being executed by a particular SoC fault aggregator 152 (see 1 , 2 and 4 ). In other words, method 500 may be performed by hardware. With reference to 5A In a first block 502, the particular SoC error aggregator receives first aggregated error signals from at least a portion of the first error aggregators 260-1 to 260-N (see 2 and 4 ).

In Block 506 aggregiert der bestimmte SoC-Fehleraggregator diejenigen der ersten aggregierten Fehlersignale, die einen Fehler identifizieren, der durch einen korrigierten Fehler verursacht wurde, zu einem Signal eines korrigierten Fehlers. Dann, in Block 508, überträgt der jeweilige SoC-Fehleraggregator das Signal eines korrigierten Fehlers über den Leiter 410 für das Signal für korrigierte Fehler (siehe 4) an die SI 110 (siehe 1, 2, 4, 8 und 10). In Block 510 sendet der jeweilige SoC-Fehleraggregator für jeden korrigierten Fehler einen Interrupt an die Interrupt-Steuerung 154 (siehe 1 und 4), die den/die Interrupt(s) an den Prozessor 150 (siehe 1 und 4) der Hilfssicherheitseinheit 122 (siehe 1 und 4) weiterleitet. Jeder Interrupt benachrichtigt den Prozessor 150 über den korrigierten Fehler, der mit dem Interrupt verbunden ist.In block 506, the designated SoC error aggregator aggregates those of the first aggregated error signals that identify an error caused by a corrected error into a corrected error signal. Then, in block 508, the respective SoC error aggregator transmits the corrected error signal via the corrected error signal conductor 410 (see 4 ) to the SI 110 (see 1 , 2 , 4 , 8th and 10 ). In block 510, the respective SoC error aggregator sends an interrupt to the interrupt controller 154 for each corrected error (see 1 and 4 ), which sends the interrupt(s) to the processor 150 (see 1 and 4 ) of the auxiliary security unit 122 (see 1 and 4 ) forwards. Each interrupt notifies processor 150 of the corrected error associated with the interrupt.

In Block 512 startet der bestimmte SoC-Fehleraggregator einen Timer 420C für korrigierte Fehler (siehe 4) für einen ersten korrigierten Fehler, der in dem Signal eines korrigierten Fehlers identifiziert wurde.In block 512, the designated SoC error aggregator starts a corrected error timer 420C (see 4 ) for a first corrected error identified in the corrected error signal.

Im Abfrageblock 514 bestimmt der bestimmte SoC-Fehleraggregator, ob der erste korrigierte Fehler von dem bestimmten SoC-Fehleraggregator gelöscht wurde. Die Antwort im Abfrageblock 514 lautet „JA“, wenn der erste korrigierte Fehler gelöscht wurde, bevor der Timer für korrigierte Fehler 420C (siehe 4) anzeigt, dass eine zweite vorbestimmte Zeitspanne verstrichen ist. Andernfalls lautet die Antwort im Abfrageblock 514 „NEIN“. Wenn die Antwort im Abfrageblock 514 „JA“ lautet, ergreift der jeweilige SoC-Fehleraggregator in Block 515 keine Maßnahmen. Lautet die Antwort im Abfrageblock 514 hingegen „NEIN“, geht der spezielle SoC-Fehleraggregator zum Abfrageblock 516 über.In query block 514, the designated SoC error aggregator determines whether the first corrected error was cleared by the designated SoC error aggregator. The answer in query block 514 is “YES” if the first corrected error was cleared before the corrected error timer 420C (see 4 ) indicates that a second predetermined period of time has elapsed. Otherwise, the answer in query block 514 is “NO”. If the answer in query block 514 is “YES”, the respective SoC fault aggregator takes no action in block 515. However, if the answer in query block 514 is “NO”, the special SoC error aggregator proceeds to query block 516.

Im Abfrageblock 516 bestimmt der Prozessor 150, ob der Timer 420C für korrigierte Fehler (siehe 4) anzeigt, dass die zweite vorbestimmte Zeitspanne verstrichen ist, was bedeutet, dass der Timer 420C für korrigierte Fehler abgelaufen ist. Die Antwort im Abfrageblock 516 lautet „JA“, wenn die zweite vorgegebene Zeitspanne abgelaufen ist. Andernfalls ist die Antwort im Abfrageblock 516 „NEIN“. Wenn die Antwort im Abfrageblock 516 „JA“ lautet, geht der jeweilige SoC-Fehleraggregator zu Block 518 über. Andernfalls, wenn die Antwort im Abfrageblock 516 „NEIN“ lautet, kehrt der bestimmte SoC-Fehleraggregator zum Abfrageblock 514 zurück, um darauf zu warten, dass der erste korrigierte Fehler von dem Prozessor 150 gelöscht wird. Auf diese Weise überwacht der jeweilige SoC-Fehleraggregator weiterhin, ob der erste korrigierte Fehler gelöscht wurde und ob der Timer 420C für korrigierte Fehler abgelaufen ist. Wenn der erste korrigierte Fehler gelöscht wird, bevor der Timer 420C für korrigierte Fehler abläuft, ergreift der jeweilige SoC-Fehleraggregator in Block 515 keine Maßnahmen. Läuft hingegen der Timer 420C für korrigierte Fehler ab, bevor der erste korrigierte Fehler gelöscht ist, geht der SoC-Fehleraggregator zu Block 518 über. In Block 518 sendet der bestimmte SoC-Fehleraggregator das SoC-Fehleraggregatorsignal über den SoC-Fehleraggregatorsignalleiter 414 (siehe 4) an die SI 110 (siehe 1, 2, 4, 8 und 10).In query block 516, the processor 150 determines whether the corrected error timer 420C (see 4 ) indicates that the second predetermined period of time has elapsed, meaning that the corrected error timer 420C has expired. The answer in query block 516 is “YES” when the second predetermined time period has expired. Otherwise, the answer in query block 516 is “NO”. If the answer in query block 516 is “YES”, the respective SoC error aggregator proceeds to block 518. Otherwise, if the answer in query block 516 is "NO", the designated SoC error aggregator returns to query block 514 to wait for the first corrected error to be cleared by processor 150. In this way, the respective SoC error aggregator continues to monitor whether the first corrected error has been cleared and whether the corrected error timer 420C has expired. If the first corrected error is cleared before the corrected error timer 420C expires, the respective SoC error aggregator takes no action in block 515. However, if the corrected error timer 420C expires before the first corrected error is cleared, the SoC error aggregator proceeds to block 518. In block 518, the designated SoC fault aggregator sends the SoC fault aggregator signal over the SoC fault aggregator signal conductor 414 (see 4 ) to the SI 110 (see 1 , 2 , 4 , 8th and 10 ).

In Block 520 aggregiert der bestimmte SoC-Fehleraggregator diejenigen der in Block 502 empfangenen ersten aggregierten Fehlersignale, die einen durch einen nicht korrigierten Fehler bzw. Error verursachten Fehler identifizieren, zu einem Signal für einen unkorrigierten Fehler. Dann, in Block 522, überträgt der jeweilige SoC-Fehleraggregator das Signal für einen unkorrigierten Fehler über den Signalleiter 412 für unkorrigierte Fehler (siehe 4) an die SI 110 (siehe 1, 2, 4, 8 und 10). In Block 524 sendet der jeweilige SoC-Fehleraggregator für jeden unkorrigierten Fehler einen Interrupt an die Interrupt-Steuerung 154 (siehe 1 und 4), die den/die Interrupt(s) an den Prozessor 150 (siehe 1 und 4) der Hilfssicherheitseinheit 122 (siehe 1 und 4) weiterleitet. Jeder Interrupt benachrichtigt den Prozessor 150 über den unkorrigierten Fehler, der mit dem Interrupt verbunden ist.In block 520, the designated SoC error aggregator aggregates those of the first aggregated error signals received in block 502 that identify an error caused by an uncorrected error into an uncorrected error signal. Then, in block 522, the respective SoC error aggregator transmits the uncorrected error signal via the uncorrected error signal conductor 412 (see 4 ) to the SI 110 (see 1 , 2 , 4 , 8th and 10 ). In block 524, the respective SoC error aggregator sends an interrupt to the interrupt controller 154 for each uncorrected error (see 1 and 4 ), which sends the interrupt(s) to the processor 150 (see 1 and 4 ) of the auxiliary security unit 122 (see 1 and 4 ) forwards. Each interrupt notifies processor 150 of the uncorrected error associated with the interrupt.

In Block 526 startet der bestimmte SoC-Fehleraggregator einen Timer für unkorrigierte Fehler 420U (siehe 4) für einen ersten unkorrigierten Fehler, der im Signal für unkorrigierte Fehler identifiziert wurde.In block 526, the designated SoC error aggregator starts an uncorrected error timer 420U (see 4 ) for a first uncorrected error identified in the uncorrected error signal.

Im Abfrageblock 528 bestimmt der bestimmte SoC-Fehleraggregator, ob der erste unkorrigierte Fehler von dem bestimmten SoC-Fehleraggregator gelöscht wurde. Die Antwort im Abfrageblock 528 lautet „JA“, wenn der erste unkorrigierte Fehler gelöscht wurde, bevor der Timer 420U für unkorrigierte Fehler (siehe 4) anzeigt, dass eine dritte vorbestimmte Zeitspanne verstrichen ist. Andernfalls lautet die Antwort im Abfrageblock 528 „NEIN“. Wenn die Antwort im Abfrageblock 528 „JA“ lautet, ergreift der jeweilige SoC-Fehleraggregator im Block 529 keine Maßnahmen. Wenn die Antwort im Abfrageblock 528 „NEIN“ lautet, geht der bestimmte SoC-Fehleraggregator zum Abfrageblock 530 über.In query block 528, the designated SoC error aggregator determines whether the first uncorrected error was cleared by the designated SoC error aggregator. The answer in query block 528 is “YES” if the first uncorrected error was cleared before the uncorrected error timer 420U (see 4 ) indicates that a third predetermined period of time has elapsed. Otherwise, the answer in query block 528 is “NO”. If the answer in query block 528 is “YES”, the respective SoC fault aggregator takes no action in block 529. If the answer in query block 528 is “NO”, the designated SoC fault aggregator proceeds to query block 530.

Im Abfrageblock 530 stellt der Prozessor 150 fest, ob der Timer 420U für unkorrigierte Fehler anzeigt, dass die dritte vorbestimmte Zeitspanne verstrichen ist, was bedeutet, dass der Timer 420U für unkorrigierte Fehler (siehe 4) abgelaufen ist. Die Antwort im Abfrageblock 530 lautet „JA“, wenn die dritte vorgegebene Zeitspanne abgelaufen ist. Andernfalls ist die Antwort im Abfrageblock 530 „NEIN“. Wenn die Antwort im Abfrageblock 530 „JA“ lautet, geht der jeweilige SoC-Fehleraggregator zu Block 532 über. Lautet die Antwort im Abfrageblock 530 hingegen „NEIN“, kehrt der jeweilige SoC-Fehleraggregator zum Abfrageblock 528 zurück, um darauf zu warten, dass der erste unkorrigierte Fehler von dem Prozessor 150 gelöscht wird. Auf diese Weise überwacht der bestimmte SoC-Fehleraggregator weiterhin, ob der erste unkorrigierte Fehler gelöscht wird und ob der Timer 420U für unkorrigierte Fehler abgelaufen ist. Wenn der erste unkorrigierte Fehler gelöscht wird, bevor der Timer 420U für unkorrigierte Fehler abläuft, ergreift der SoC-Fehleraggregator in Block 529 keine Maßnahmen. Läuft dagegen der Timer 420U für unkorrigierte Fehler ab, bevor der erste unkorrigierte Fehler gelöscht ist, geht der SoC-Fehleraggregator zu Block 532 über. In Block 532 überträgt der bestimmte SoC-Fehleraggregator das SoC-Fehleraggregatorsignal über den SoC-Fehleraggregatorsignalleiter 414 (siehe 4) an die SI 110 (siehe 1, 2, 4, 8 und 10). An diesem Punkt ist das Verfahren 500 beendet.In query block 530, the processor 150 determines whether the uncorrected error timer 420U indicates that the third predetermined period of time has elapsed, meaning that the uncorrected error timer 420U (see 4 ) has expired. The answer in query block 530 is “YES” when the third predetermined time period has expired. Otherwise, the answer in query block 530 is “NO”. If the answer in query block 530 is “YES,” the respective SoC fault aggregator proceeds to block 532. However, if the answer in query block 530 is "NO", the respective SoC error aggregator returns to query block 528 to wait for the first uncorrected error to be cleared by the processor 150. In this way, the designated SoC error aggregator continues to monitor whether the first uncorrected error is cleared and whether the uncorrected error timer 420U has expired. If the first uncorrected error is cleared before the uncorrected error timer 420U expires, the SoC error aggregator takes no action in block 529. Conversely, if the uncorrected error timer 420U expires before the first uncorrected error is cleared, the SoC error aggregator proceeds to block 532. In block 532, the particular SoC error transmits ag gregator the SoC fault aggregator signal via the SoC fault aggregator signal conductor 414 (see 4 ) to the SI 110 (see 1 , 2 , 4 , 8th and 10 ). At this point, procedure 500 is completed.

5B ist ein Flussdiagramm, das ein Verfahren 540 zeigt, das der Prozessor 150 (siehe 1 und 4) gemäß einigen Ausführungsformen der vorliegenden Offenbarung verwenden kann, um von dem/den SoC-Fehleraggregator(en) 152 (siehe 1, 2 und 4) empfangene Interrupts zu verarbeiten. Wie es hier beschrieben ist, weist jeder Block des Verfahrens 540 in 5B ein Rechenverfahren auf, das mit einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor (z. B. dem Prozessor 150) ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Zumindest Abschnitte des Verfahrens 540 können als computerverwendbare Anweisungen, die auf Computerspeichermedien gespeichert sind, ausgestaltet sein. Das Verfahren 540 kann durch eine eigenständige Anwendung, einen Dienst oder gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 540 beispielhaft in Bezug auf die Fahrzeug-Plattform 100 von 1 beschrieben. Das Verfahren 540 kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme. 5B is a flowchart showing a method 540 that the processor 150 (see 1 and 4 ) according to some embodiments of the present disclosure, may be used by the SoC error aggregator(s) 152 (see 1 , 2 and 4 ) to process received interrupts. As described herein, each block of method 540 includes: 5B a computing method that can be performed with any combination of hardware, firmware and/or software. For example, various functions may be performed by a processor (e.g., processor 150) executing instructions stored in memory. At least portions of the method 540 may be embodied as computer-usable instructions stored on computer storage media. Method 540 may be provided through a standalone application, service, or hosted service (standalone or in combination with another hosted service), or a plug-in for another product, to name a few. In addition, the method 540 is exemplified with respect to the vehicle platform 100 of 1 described. However, method 540 may additionally or alternatively be performed by any system or combination of systems, including but not limited to the systems described herein.

Der Einfachheit halber wird das Verfahren 540 so beschrieben, wie es von dem Prozessor 150 ausgeführt wird (siehe 1 und 4). Unter Bezugnahme auf 5B empfängt der Prozessor 150 im ersten Block 541 einen bestimmten Interrupt von einem bestimmten SoC-Fehleraggregator 152. Dann, in Block 542, triagiert bzw. bewertet der Prozessor 150 einen oder mehrere Fehler, die bei dem bestimmten Interrupt identifiziert wurden, und kann eine oder mehrere korrigierende Maßnahmen ergreifen, um den/die Fehler zu beheben.For convenience, method 540 is described as executed by processor 150 (see 1 and 4 ). With reference to 5B In the first block 541, the processor 150 receives a particular interrupt from a particular SoC error aggregator 152. Then, in block 542, the processor 150 triages or evaluates one or more errors identified at the particular interrupt and can one or more take corrective action to resolve the error(s).

Wenn ein Problem auftritt, während der Prozessor 150 die Fehler bewertet und/oder die Korrekturmaßnahmen ergreift, ist der Prozessor 150 möglicherweise nicht in der Lage, die Bearbeitung der bestimmten Interrupts fortzusetzen. In diesem Fall lautet die Antwort im Abfrageblock 543 „JA“, und im Block 544 ergreift der Prozessor 150 keine weiteren Maßnahmen weiter in Bezug auf den bestimmten Interrupt. Ist der Prozessor 150 hingegen in der Lage, den bestimmten Interrupt zu klassifizieren und optional die Korrekturmaßnahme(n) zu ergreifen, lautet die Antwort im Abfrageblock 543 „NEIN“. Wenn die Antwort im Abfrageblock 543 „NEIN“ lautet, schreibt der Prozessor 150 in Block 545 Informationen zu dem bestimmten Interrupt in die Mailbox(en) 156, die von dem Prozessor 140 gelesen werden können. Als nächstes sendet der Prozessor 150 im Block 546 einen Mailbox-Interrupt über den Mailbox-Interrupt-Signalleiter 416 an die Interrupt-Steuerung 141. Der Mailbox-Interrupt zeigt den Schweregrad des Fehlers an, der in dem in Block 541 empfangenen Interrupt identifiziert wurde. If a problem occurs while the processor 150 is evaluating the errors and/or taking corrective action, the processor 150 may not be able to continue processing the particular interrupts. In this case, the answer in query block 543 is "YES", and in block 544 the processor 150 takes no further action on the particular interrupt. However, if the processor 150 is able to classify the particular interrupt and optionally take the corrective action(s), the answer in query block 543 is "NO". If the answer in query block 543 is "NO", then in block 545 the processor 150 writes information about the particular interrupt into the mailbox(es) 156, which can be read by the processor 140. Next, in block 546, the processor 150 sends a mailbox interrupt to the interrupt controller 141 over the mailbox interrupt signal conductor 416. The mailbox interrupt indicates the severity of the error identified in the interrupt received in block 541.

Dann bestimmt der Prozessor 150 im Abfrageblock 547, ob der Prozessor 150 den Fehler löschen soll, für den der bestimmte Interrupt von dem bestimmten SoC-Fehleraggregator erzeugt wurde. Die Antwort im Abfrageblock 547 lautet „JA“, wenn der Prozessor 150 beschließt, den Fehler zu löschen. Andernfalls ist die Antwort im Abfrageblock 547 „NEIN“. Die Antwort im Abfrageblock 547 kann „JA“ lauten, wenn die vom Prozessor 150 ergriffene(n) Korrekturmaßnahme(n) den Fehler beheben konnte(n) oder der Fehler durch einen korrigierten Fehler erzeugt wurde (z. B. durch einen von einem der Logikblöcke LB(1) - LB(N) korrigierten Fehler). Als weiteres nicht einschränkendes Beispiel kann die Antwort im Abfrageblock 547 „JA“ lauten, wenn der Prozessor 150 einen Mailbox-Interrupt von dem Prozessor 140 empfängt, der anzeigt, dass der Prozessor 140 den Fehler behoben hat. Wenn die Antwort im Abfrageblock 547 „NEIN“ lautet, ergreift der Prozessor 150 in Block 548 keine weiteren Maßnahmen in Bezug auf den bestimmten Interrupt. Lautet die Antwort im Abfrageblock 547 hingegen „JA“, so löscht der Prozessor 150 in Block 549 den Fehler aus dem jeweiligen SoC-Fehleraggregator. Der Prozessor 150 kann dem Prozessor 140 mitteilen, dass der Fehler aus dem bestimmten SoC-Fehleraggregator gelöscht wurde. Dann wird das Verfahren 540 beendet.Then, in query block 547, processor 150 determines whether processor 150 should clear the error for which the particular interrupt was generated by the particular SoC error aggregator. The answer in query block 547 is “YES” if the processor 150 decides to clear the error. Otherwise, the answer in query block 547 is “NO”. The answer in query block 547 may be “YES” if the corrective action(s) taken by processor 150 corrected the error or the error was generated by a corrected error (e.g., by one of the Logic blocks LB(1) - LB(N) corrected errors). As another non-limiting example, the answer in query block 547 may be “YES” if processor 150 receives a mailbox interrupt from processor 140 indicating that processor 140 has corrected the error. If the answer in query block 547 is "NO", the processor 150 takes no further action on the particular interrupt in block 548. However, if the answer in query block 547 is “YES”, the processor 150 deletes the error from the respective SoC error aggregator in block 549. Processor 150 may notify processor 140 that the error has been cleared from the particular SoC error aggregator. Then the procedure 540 ends.

5C ist ein Flussdiagramm, das ein Verfahren 550 zeigt, das die SI 110 (siehe 1, 2, 4, 8 und 10) gemäß einigen Ausführungsformen der vorliegenden Offenbarung verwenden kann, um die Signale von korrigierten und unkorrigierten Fehlern zu verarbeiten. Wie es hier beschrieben ist, weist jeder Block des Verfahrens 550 in 5C ein Rechenverfahren auf, das mit einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor (z. B. dem in den 1, 2 und 4 dargestellten Prozessor 140) ausgeführt werden, der Anweisungen (z. B. die in den 1, 2 und 4 dargestellten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 dargestellten flüchtigen Speicher 146) gespeichert sind. Zumindest Abschnitte des Verfahrens 550 können in Form von computerverwendbaren, auf Computerspeichermedien gespeicherten Anweisungen ausgestaltet sein. Das Verfahren 550 kann durch eine eigenständige Anwendung, einen Dienst oder gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 550 beispielhaft in Bezug auf die Fahrzeug-Plattform 100 von 1 beschrieben. Das Verfahren 550 kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme. 5C is a flowchart showing a method 550 that includes the SI 110 (see 1 , 2 , 4 , 8th and 10 ) according to some embodiments of the present disclosure to process the signals of corrected and uncorrected errors. As described herein, each block of method 550 includes: 5C a computing method that can be performed with any combination of hardware, firmware and/or software. For example, various functions can be performed by a processor (e.g. the one in the 1 , 2 and 4 processor 140 shown) are executed, the instructions (e.g. those in the 1 , 2 and 4 instructions 149 shown) which are stored in a memory (e.g. that in the 1 , 2 and 4 shown volatile memory 146) are stored. At least portions of the method 550 may be in the form of computer-usable, computer-stored memory be designed according to stored instructions. Method 550 may be provided through a standalone application, service, or hosted service (standalone or in combination with another hosted service), or a plug-in for another product, to name a few. In addition, the method 550 is exemplified with respect to the vehicle platform 100 of 1 described. However, method 550 may additionally or alternatively be performed by any system or combination of systems, including but not limited to the systems described herein.

Der Einfachheit halber wird das Verfahren 550 so beschrieben, dass es von dem SI-Fehleraggregator 142 (siehe 1, 2 und 4) und dem Prozessor 140 (siehe 1, 2 und 4) ausgeführt wird. Unter Bezugnahme auf 5C empfängt der SI-Fehleraggregator 142 der SI 110 (siehe 1, 2, 4, 8 und 10) im ersten Block 552 das Signal eines korrigierten Fehlers, das das Statusbit „BT1“ setzt, und/oder das Signal eines unkorrigierten Fehlers, das das Statusbit „BT2“ setzt. Wenn der SI-Fehleraggregator 142 das Signal eines korrigierten Fehlers auf dem Leiter 410 für Signale von korrigierten Fehlern empfängt, sendet der SI-Fehleraggregator 142 in Block 554 einen Interrupt an die Interrupt-Steuerung 141 (siehe 1, 2 und 4) des Prozessors 140. Durch diesen Interrupt wird der Prozessor 140 über den/die korrigierten Fehler informiert.For simplicity, the method 550 is described as being performed by the SI error aggregator 142 (see 1 , 2 and 4 ) and the processor 140 (see 1 , 2 and 4 ) is performed. With reference to 5C the SI error aggregator 142 receives the SI 110 (see 1 , 2 , 4 , 8th and 10 ) in the first block 552, the signal of a corrected error that sets the status bit “BT1” and/or the signal of an uncorrected error that sets the status bit “BT2”. When the SI error aggregator 142 receives the corrected error signal on the corrected error signal conductor 410, the SI error aggregator 142 sends an interrupt to the interrupt controller 141 in block 554 (see 1 , 2 and 4 ) of the processor 140. This interrupt informs the processor 140 about the corrected error(s).

Im Abfrageblock 556 stellt der Prozessor 140 (siehe 1, 2 und 4) fest, ob ein Mailbox-Interrupt von dem Prozessor 150 (siehe 1 und 4) über den Mailbox-Interrupt-Signalleiter 416 empfangen worden ist. Wenn der Mailbox-Interrupt empfangen wird, zeigt der Mailbox-Interrupt den Schweregrad des korrigierten Fehlers an. Die Antwort im Abfrageblock 556 lautet „JA“, wenn der Prozessor 140 den Mailbox-Interrupt empfangen hat. Andernfalls lautet die Antwort im Abfrageblock 556 „NEIN“. Wenn die Antwort im Abfrageblock 556 „NEIN“ lautet, wartet der Prozessor 140 im Block 558 auf den Empfang entweder des Mailbox-Interrupts oder des SoC-Fehleraggregatorsignals. Wenn die Antwort im Abfrageblock 556 „JA“ lautet, geht der Prozessor 140 zum Abfrageblock 560 über.In query block 556, processor 140 (see 1 , 2 and 4 ) determines whether a mailbox interrupt is received from processor 150 (see 1 and 4 ) has been received via the mailbox interrupt signal conductor 416. When the mailbox interrupt is received, the mailbox interrupt displays the severity of the error that has been corrected. The answer in query block 556 is “YES” if the processor 140 has received the mailbox interrupt. Otherwise, the answer in query block 556 is “NO”. If the answer in query block 556 is "NO", the processor 140 waits in block 558 for receipt of either the mailbox interrupt or the SoC fault aggregator signal. If the answer in query block 556 is “YES”, the processor 140 proceeds to query block 560.

Im Abfrageblock 560 entscheidet der Prozessor 140 (siehe 1, 2 und 4), ob die Mailbox(en) 156 gelesen werden sollen. Diese Entscheidung kann zumindest teilweise auf dem Schweregrad des korrigierten Fehlers beruhen, der dem Prozessor 140 durch den Mailbox-Interrupt mitgeteilt wurde. Beispielsweise kann der Prozessor 140 entscheiden, die Mailbox(en) 156 nicht zu lesen, wenn der Schweregrad des korrigierten Fehlers bei oder über einem Schwellenwert (z. B. 7) liegt, und kann entscheiden, die Mailbox(en) 156 zu lesen, wenn der Schweregrad des korrigierten Fehlers/der korrigierten Fehler unterhalb des Schwellenwerts liegt. Wenn die Antwort im Abfrageblock 560 „JA“ lautet, liest der Prozessor 140 in Block 562 die Mailbox(en) 156. Dann geht der Prozessor 140 zu Block 564 über, wo der Prozessor 140 den korrigierten Fehler löscht, indem er zum Beispiel das Statusbit „BT1“ zurücksetzt. Wenn die Antwort im Antwortblock 560 „NEIN“ lautet, geht der Prozessor 140 zu Block 564 über und löscht den korrigierten Fehler, indem er zum Beispiel das Statusbit „BT1“ zurücksetzt. Der Prozessor 140 kann auf die Benachrichtigung des Prozessors 150 warten, dass der Fehler, der dem korrigierten Fehler entspricht, von dem bestimmten SoC-Fehleraggregator gelöscht wurde, bevor der Prozessor 140 den korrigierten Fehler von dem SI-Fehleraggregator 142 löscht. Da der Fehler jedoch korrigiert wurde, kann der Prozessor 140 bei einigen Ausführungsformen den korrigierten Fehler einfach löschen, ohne zuvor eine solche Benachrichtigung zu erhalten.In query block 560, processor 140 decides (see 1 , 2 and 4 ), whether the mailbox(es) 156 should be read. This decision may be based at least in part on the severity of the corrected error communicated to processor 140 by the mailbox interrupt. For example, the processor 140 may decide not to read the mailbox(es) 156 if the severity of the corrected error is at or above a threshold (e.g., 7), and may decide to read the mailbox(es) 156 if the severity of the corrected error(s) is below the threshold. If the answer in query block 560 is "YES", the processor 140 reads the mailbox(es) 156 in block 562. Then the processor 140 proceeds to block 564 where the processor 140 clears the corrected error, for example by setting the status bit “BT1” resets. If the answer in response block 560 is "NO", the processor 140 proceeds to block 564 and clears the corrected error, for example by resetting the status bit "BT1". The processor 140 may wait for notification from the processor 150 that the error corresponding to the corrected error has been cleared by the particular SoC error aggregator before the processor 140 clears the corrected error from the SI error aggregator 142. However, in some embodiments, since the error has been corrected, the processor 140 may simply delete the corrected error without first receiving such notification.

Wenn der SI-Fehleraggregator 142 das Signal eines unkorrigierten Fehlers auf dem Signalleiter 412 für unkorrigierte Fehler empfängt, sendet der SI-Fehleraggregator 142 in Block 566 einen Interrupt an die Interrupt-Steuerung 141 (siehe 1, 2 und 4) des Prozessors 140. Dieser Interrupt informiert den Prozessor 140 über den/die unkorrigierten Fehler.When the SI error aggregator 142 receives the uncorrected error signal on the uncorrected error signal conductor 412, the SI error aggregator 142 sends an interrupt to the interrupt controller 141 in block 566 (see 1 , 2 and 4 ) of processor 140. This interrupt informs processor 140 of the uncorrected error(s).

Im Abfrageblock 568 bestimmt der Prozessor 140 (siehe 1, 2 und 4), ob ein Mailbox-Interrupt von dem Prozessor 150 (siehe 1 und 4) über den Mailbox-Interrupt-Signalleiter 416 empfangen worden ist. Wenn der Mailbox-Interrupt empfangen wird, zeigt der Mailbox-Interrupt den Schweregrad des unkorrigierten Fehlers an. Die Antwort im Abfrageblock 568 lautet „JA“, wenn der Prozessor 140 den Mailbox-Interrupt empfangen hat. Andernfalls lautet die Antwort im Abfrageblock 568 „NEIN“. Wenn die Antwort im Abfrageblock 568 „NEIN“ lautet, wartet der Prozessor 140 im Block 558 auf den Empfang entweder des Mailbox-Interrupts oder des SoC-Fehleraggregatorsignals. Wenn die Antwort im Abfrageblock 568 „JA“ lautet, geht der Prozessor 140 zum Abfrageblock 570 über.In query block 568, processor 140 determines (see 1 , 2 and 4 ), whether a mailbox interrupt from the processor 150 (see 1 and 4 ) has been received via the mailbox interrupt signal conductor 416. When the mailbox interrupt is received, the mailbox interrupt displays the severity of the uncorrected error. The answer in query block 568 is “YES” if the processor 140 has received the mailbox interrupt. Otherwise, the answer in query block 568 is “NO”. If the answer in query block 568 is "NO", the processor 140 waits in block 558 for receipt of either the mailbox interrupt or the SoC fault aggregator signal. If the answer in query block 568 is “YES”, the processor 140 proceeds to query block 570.

Im Abfrageblock 570 entscheidet der Prozessor 140 (siehe 1, 2 und 4), ob die Mailbox(en) 156 zu lesen ist/sind. Diese Entscheidung bzw. Antwort kann zumindest teilweise auf dem Schweregrad des unkorrigierten Fehlers beruhen. Beispielsweise kann der Prozessor 140 entscheiden, die Mailbox(en) 156 nicht zu lesen, wenn der Schweregrad des/der unkorrigierten Fehlers/Fehler bei oder über dem Schwellenwert (z. B. 7) liegt, und kann entscheiden, die Mailxbox(en) 156 zu lesen, wenn der Schweregrad des/der korrigierten Fehlers/Fehler unter dem Schwellenwert liegt. Wenn die Antwort im Abfrageblock 570 „JA“ lautet, liest der Prozessor 140 im Block 572 die Mailbox(en) 156. Dann geht der Prozessor 140 zum Abfrageblock 573 über. Wenn die Antwort im Abfrageblock 570 „NEIN“ lautet, geht der Prozessor 140 zu Block 573 weiter.In query block 570, processor 140 decides (see 1 , 2 and 4 ), whether the mailbox(es) 156 can be read. This decision or response may be based at least in part on the severity of the uncorrected error. For example, the processor 140 may decide not to read the mailbox(es) 156 if the severity of the uncorrected error(s) is at or above the threshold (e.g., 7), and may decide to read the mailbox(es) 156 to read, if the severity of the corrected error(s) is below the threshold. If the answer in query block 570 is “YES,” processor 140 reads mailbox(es) 156 in block 572. Processor 140 then proceeds to query block 573. If the answer in query block 570 is "NO", the processor 140 proceeds to block 573.

Im Abfrageblock 573 entscheidet der Prozessor 140, ob eine oder mehrere Korrekturmaßnahmen zu ergreifen sind. Wenn die Antwort im Abfrageblock 573 „JA“ lautet, führt der Prozessor 140 in Block 574 die Korrekturmaßnahme(n) durch, wie z. B. die Betätigung der Fahrzeugbremsen. Dann geht der Prozessor 140 zu Abfrageblock 575 über.In query block 573, processor 140 decides whether one or more corrective actions should be taken. If the answer in query block 573 is "YES", the processor 140 takes the corrective action(s) in block 574, such as: B. the operation of the vehicle brakes. Then processor 140 proceeds to query block 575.

Wenn die Antwort im Abfrageblock 573 „NEIN“ lautet, geht der Prozessor 140 zu Abfrageblock 575 weiter. Im Abfrageblock 575 entscheidet der Prozessor 140, ob das externe System 404 zu benachrichtigen ist. Wenn die Antwort im Abfrageblock 575 „JA“ lautet, benachrichtigt der Prozessor 140 in Block 576 das externe System 404 und geht weiter zu Block 578. Wenn die Antwort im Abfrageblock 575 „NEIN“ lautet, geht der Prozessor 140 zu Block 578 über.If the answer in query block 573 is “NO”, the processor 140 proceeds to query block 575. In query block 575, processor 140 decides whether to notify external system 404. If the answer in query block 575 is "YES", the processor 140 notifies the external system 404 in block 576 and proceeds to block 578. If the answer in query block 575 is "NO", the processor 140 proceeds to block 578.

In Block 578 sendet der Prozessor 140 einen Mailbox-Interrupt an die Mailbox(en) 156 und/oder löscht den unkorrigierten Fehler, beispielsweise durch Rücksetzen des Statusbits „BT2“. Optional kann der Prozessor 140 Fehlerinformationen in die Mailbox(en) 156 schreiben. Der Prozessor 140 kann auf die Benachrichtigung des Prozessors 150 warten, dass der dem unkorrigierten Fehler entsprechende Fehler aus dem bestimmten SoC-Fehleraggregator gelöscht wurde, bevor der Prozessor 140 den unkorrigierten Fehler aus dem SI-Fehleraggregator 142 löscht. Dann wird das Verfahren 550 beendet. Der Mailbox-Interrupt wird von dem Prozessor 150 empfangen und kann beim Antwortblock 547 (siehe 5B) verwendet werden, um zu entscheiden, ob der Prozessor 150 den Fehler, der dem unkorrigierten Fehler entspricht, löschen soll. Der Prozessor 150 kann optional die von dem Prozessor 140 in die Mailbox(en) 156 geschriebenen Fehlerinformationen lesen, bevor er diese Entscheidung bzw. Antwort trifft.In block 578, the processor 140 sends a mailbox interrupt to the mailbox(es) 156 and/or clears the uncorrected error, for example by resetting the status bit "BT2". Optionally, the processor 140 can write error information to the mailbox(es) 156. The processor 140 may wait for the processor 150 to be notified that the error corresponding to the uncorrected error has been cleared from the particular SoC error aggregator before the processor 140 clears the uncorrected error from the SI error aggregator 142. Then the procedure 550 is ended. The mailbox interrupt is received by processor 150 and can occur at response block 547 (see 5B) be used to decide whether the processor 150 should clear the error corresponding to the uncorrected error. The processor 150 may optionally read the error information written to the mailbox(es) 156 by the processor 140 before making this decision or response.

5D ist ein Flussdiagramm, das ein Verfahren 580 zeigt, das die SI 110 (siehe 1, 2, 4, 8 und 10) gemäß einigen Ausführungsformen der vorliegenden Offenbarung zur Verarbeitung des SoC-Fehleraggregatorsignals verwenden kann. Wie es hier beschrieben ist, weist jeder Block des Verfahrens 580 in 5D ein Rechenverfahren auf, das mit einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor (z. B. dem in den 1, 2 und 4 dargestellten Prozessor 140) ausgeführt werden, der Anweisungen (z. B. die in den 1, 2 und 4 dargestellten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 dargestellten flüchtigen Speicher 146) gespeichert sind. Zumindest Abschnitte des Verfahrens 580 können als computerverwendbare Anweisungen, die auf Computerspeichermedien gespeichert sind, ausgestaltet sein. Das Verfahren 580 kann durch eine eigenständige Anwendung, einen Dienst oder gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 580 beispielhaft in Bezug auf die Fahrzeug-Plattform 100 von 1 beschrieben. Das Verfahren 580 kann jedoch zusätzlich oder alternativ durch ein beliebiges System oder eine beliebige Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme. 5D is a flowchart showing a method 580 that includes the SI 110 (see 1 , 2 , 4 , 8th and 10 ) may be used to process the SoC error aggregator signal according to some embodiments of the present disclosure. As described herein, each block of method 580 includes: 5D a computing method that can be performed with any combination of hardware, firmware and/or software. For example, various functions can be performed by a processor (e.g. the one in the 1 , 2 and 4 processor 140 shown) are executed, the instructions (e.g. those in the 1 , 2 and 4 instructions 149 shown) which are stored in a memory (e.g. that in the 1 , 2 and 4 shown volatile memory 146) are stored. At least portions of method 580 may be embodied as computer-usable instructions stored on computer storage media. Method 580 may be provided through a standalone application, service, or hosted service (standalone or in combination with another hosted service), or a plug-in for another product, to name a few. In addition, the method 580 is exemplified with respect to the vehicle platform 100 of 1 described. However, method 580 may additionally or alternatively be performed by any system or combination of systems, including but not limited to the systems described herein.

Der Einfachheit halber wird das Verfahren 580 so beschrieben, dass es von dem SI-Fehleraggregator 142 (siehe 1, 2 und 4), dem Prozessor 140 (siehe 1, 2 und 4) und der SoC-Fehlerbehandlungsschaltung 422 (siehe 4) ausgeführt wird. Die SoC-Fehlerbehandlungsschaltung 422 kann als eine Komponente des SI-Fehleraggregators 142 implementiert werden. Unter Bezugnahme auf 5D empfängt der SI-Fehleraggregator 142 (siehe 1, 2 und 4) im ersten Block 582 das SoC-Fehleraggregatorsignal, das das Statusbit „BT3“ setzt.For simplicity, method 580 is described as being performed by SI error aggregator 142 (see 1 , 2 and 4 ), the processor 140 (see 1 , 2 and 4 ) and the SoC error handling circuit 422 (see 4 ) is performed. The SoC error handling circuit 422 may be implemented as a component of the SI error aggregator 142. With reference to 5D the SI error aggregator receives 142 (see 1 , 2 and 4 ) in the first block 582 the SoC error aggregator signal, which sets the status bit “BT3”.

Wie durch einen Pfeil mit einer gestrichelten Linie in 5D gezeigt ist, kann, wenn der SoC-Fehleraggregator 142 (siehe 1, 2 und 4) das SoC-Fehleraggregatorsignal empfängt, die SoC-Fehlerbehandlungsschaltung 422 (siehe 4) der SI 110 automatisch bei Block 584 weitermachen und automatisch ein SoC-Fehlersignal, das einen SoC-Fehler aufweist, über die Verbindung 406 (siehe 4) an das externe System 404 (siehe 4) senden. Alternativ dazu kann die SoC-Fehlerbehandlungsschaltung 422 zum Block 586 weitergehen und einen SoC-Fehler-Timer 424 starten (siehe 4). Der SoC-Fehler-Timer 424 kann eine Verzögerung zwischen dem Empfang des SoC-Fehleraggregatorsignals und der Benachrichtigung des externen Systems 404 bewirken. Während der SoC-Fehler-Timer 424 läuft, kann der Prozessor 140 eine oder mehrere Korrekturmaßnahmen ergreifen. Wenn die Korrekturmaßnahme(n) erfolgreich ist/sind, kann der Prozessor 140 den/die nicht korrigierten Fehler löschen, indem er das Statusbit „BT2“ zurücksetzt, und den SoC-Fehleraggregator-Fehler löschen, indem er das Statusbit „BT3“ zurücksetzt. Das Löschen des SoC-Fehleraggregator-Fehlers stoppt den SoC-Fehler-Timer 424. Der Prozessor 140 kann auf die Benachrichtigung des Prozessors 150 warten, dass der/die Fehler, die dem/den unkorrigierten Fehler(n) entsprechen, von dem jeweiligen SoC-Fehleraggregator gelöscht wird (werden), bevor der Prozessor 140 den/die unkorrigierten Fehler von dem SI-Fehleraggregator 142 löscht.As indicated by an arrow with a dashed line in it 5D is shown, if the SoC error aggregator 142 (see 1 , 2 and 4 ) receives the SoC error aggregator signal, the SoC error handling circuit 422 (see 4 ) the SI 110 automatically proceeds to block 584 and automatically sends a SoC error signal indicating a SoC error over connection 406 (see 4 ) to the external system 404 (see 4 ) send. Alternatively, the SoC error handling circuit 422 may proceed to block 586 and start an SoC error timer 424 (see 4 ). The SoC error timer 424 may cause a delay between receipt of the SoC error aggregator signal and notification to the external system 404. While the SoC error timer 424 is running, the processor 140 may take one or more corrective actions. If the corrective action(s) is successful, the processor 140 may clear the uncorrected error(s) by resetting the "BT2" status bit and clear the SoC error aggregator error by resetting the "BT3" status bit. Clearing the SoC error aggregator error stops the SoC error timer 424. The processor 140 may wait for notification from the processor 150 that the error(s) corresponding to the uncorrected error(s) will be cleared by the respective SoC error aggregator, before the processor 140 clears the uncorrected error(s) from the SI error aggregator 142.

Nachdem der SoC-Fehler-Timer 424 gestartet wurde, bestimmt die SoC-Fehlerbehandlungsschaltung 422 im Abfrageblock 588, ob der SoC-Fehler-Timer 424 anzeigt, dass eine vierte vorbestimmte Zeitspanne verstrichen ist. Die Entscheidung bzw. Antwort im Antwortblock 588 lautet „JA“, wenn der SoC-Fehler-Timer 424 anzeigt, dass die vierte vorbestimmte Zeitspanne verstrichen ist, und der SoC-Fehleraggregatorfehler nicht gelöscht wurde. Andererseits ist die Antwort im Abfrageblock 588 „NEIN“, wenn der SoC-Fehleraggregatorfehler gelöscht wurde, bevor der SoC-Fehler-Timer 424 anzeigt, dass die vierte vorbestimmte Zeitspanne verstrichen ist.After the SoC error timer 424 is started, the SoC error handling circuit 422 determines in query block 588 whether the SoC error timer 424 indicates that a fourth predetermined period of time has elapsed. The decision or answer in response block 588 is “YES” if the SoC error timer 424 indicates that the fourth predetermined period of time has elapsed and the SoC error aggregator error has not been cleared. On the other hand, the answer in query block 588 is "NO" if the SoC error aggregator error has been cleared before the SoC error timer 424 indicates that the fourth predetermined time period has elapsed.

Wenn die Antwort im Abfrageblock 588 „NEIN“ lautet, wartet die SoC-Fehlerbehandlungsschaltung 422 in Block 590 darauf, dass der SoC-Fehler-Timer 424 anzeigt, dass die vierte vorbestimmte Zeitspanne verstrichen ist. Andererseits, wenn die Antwort im Abfrageblock 588 „JA“ lautet, überträgt die SoC-Fehlerbehandlungsschaltung 422 im Block 584 das SoC-Fehlersignal, das den SoC-Fehler aufweist, über die Verbindung 406 (siehe 4) an das externe System 404 (siehe 4), was anzeigt, dass der erste unkorrigierte Fehler nicht gelöscht wurde und der SoC-Fehleraggregatorfehler gilt. Der SoC-Fehler-Timer 424 wird automatisch angehalten und/oder zurückgesetzt, wenn der SoC-Fehler gesendet wird. Alternativ kann die SoC-Fehlerbehandlungsschaltung 422 den SoC-Fehler-Timer 424 zurücksetzen oder der SoC-Fehler-Timer 424 kann einfach ablaufen, ohne dass die SoC-Fehlerbehandlungsschaltung 422 etwas unternimmt.If the answer in query block 588 is "NO", then in block 590 the SoC error handling circuit 422 waits for the SoC error timer 424 to indicate that the fourth predetermined period of time has elapsed. On the other hand, if the answer in query block 588 is "YES", then in block 584 the SoC error handling circuit 422 transmits the SoC error signal indicating the SoC error over connection 406 (see 4 ) to the external system 404 (see 4 ), indicating that the first uncorrected error has not been cleared and the SoC error aggregator error applies. The SoC error timer 424 is automatically paused and/or reset when the SoC error is sent. Alternatively, the SoC error handling circuit 422 may reset the SoC error timer 424 or the SoC error timer 424 may simply expire without the SoC error handling circuit 422 taking any action.

Nachdem der SI-Fehleraggregator 142 (siehe 1, 2 und 4) das SoC-Fehleraggregatorsignal empfangen hat, kann der SI-Fehleraggregator 142 in Block 592 einen Interrupt an den Prozessor 140 senden. In Block 594 wertet der Prozessor 140 den ersten unkorrigierten Fehler aus. Im Abfrageblock bzw. Entscheidungsblock 595 entscheidet der Prozessor 140, ob eine oder mehrere Korrekturmaßnahmen zu ergreifen sind. Die Antwort im Antwortblock 595 lautet „JA“, wenn der Prozessor 140 beschließt, eine oder mehrere Korrekturmaßnahmen zu ergreifen. Andernfalls ist die Antwort im Abfrageblock 595 „NEIN“. Wenn die Antwort im Abfrageblock 595 „NEIN“ lautet, geht der Prozessor 140 zu Block 596 über und ergreift keine Maßnahmen. Lautet die Antwort im Abfrageblock 595 hingegen „JA“, so ergreift der Prozessor 140 in Block 597 die Korrekturmaßnahme(n).After the SI error aggregator 142 (see 1 , 2 and 4 ) has received the SoC error aggregator signal, the SI error aggregator 142 may send an interrupt to the processor 140 in block 592. In block 594, processor 140 evaluates the first uncorrected error. In query block or decision block 595, processor 140 decides whether one or more corrective actions should be taken. The answer in response block 595 is “YES” if the processor 140 decides to take one or more corrective actions. Otherwise, the answer in query block 595 is “NO”. If the answer in query block 595 is “NO,” processor 140 proceeds to block 596 and takes no action. However, if the answer in query block 595 is “YES,” the processor 140 takes the corrective action(s) in block 597.

Dann, in Block 598, sendet der Prozessor 140 einen Mailbox-Interrupt an die Mailbox(en) 156 und/oder löscht den SoC-Fehleraggregator-Fehler, zum Beispiel durch Zurücksetzen des Statusbits „BT3“, und den/die nicht korrigierten Fehler durch Zurücksetzen des Statusbits „BT2“. Das Löschen des SoC-Fehleraggregator-Fehlers stoppt den SoC-Fehler-Timer 424. Der an die Mailbox(en) 156 gesendete Mailbox-Interrupt kann anzeigen, dass der unkorrigierte Fehler gelöscht wurde und/oder der Prozessor 140 die Korrekturmaßnahme(n) in Block 597 durchgeführt hat. Optional kann der Prozessor 140 Fehlerinformationen in die Mailbox(en) 156 schreiben. Der Prozessor 140 kann auf die Benachrichtigung des Prozessors 150 warten, dass der/die Fehler, die dem/den nicht korrigierten Fehler(n) entsprechen, von dem bestimmten SoC-Fehleraggregator gelöscht wurden, bevor der Prozessor 140 den SoC-Fehleraggregator-Fehler und den/die nicht korrigierten Fehler von dem SI-Fehleraggregator 142 löscht. Dann wird das Verfahren 580 beendet. Der Mailbox-Interrupt wird von dem Prozessor 150 empfangen, der den Fehler, der dem unkorrigierten Fehler entspricht, löschen kann. Der Prozessor 150 kann optional die von dem Prozessor 140 in die Mailbox(en) 156 geschriebenen Fehlerinformationen lesen, bevor er den Fehler löscht.Then, in block 598, the processor 140 sends a mailbox interrupt to the mailbox(es) 156 and/or clears the SoC error aggregator error, for example by resetting the status bit "BT3", and the uncorrected error(s). Resetting the status bit “BT2”. Clearing the SoC error aggregator error stops the SoC error timer 424. The mailbox interrupt sent to the mailbox(es) 156 may indicate that the uncorrected error has been cleared and/or the processor 140 has implemented the corrective action(s). Block 597 carried out. Optionally, the processor 140 can write error information to the mailbox(es) 156. The processor 140 may wait for notification from the processor 150 that the error(s) corresponding to the uncorrected error(s) have been cleared by the particular SoC error aggregator before the processor 140 detects the SoC error aggregator error and deletes the uncorrected error(s) from the SI error aggregator 142. Then the procedure 580 ends. The mailbox interrupt is received by processor 150, which can clear the error corresponding to the uncorrected error. Processor 150 may optionally read the error information written to mailbox(es) 156 by processor 140 before clearing the error.

In den 5A-5D weist das Fahrzeug-SoC 104 den Prozessor 150 auf. Bei mindestens einigen Ausführungsformen kann der Prozessor 150 weggelassen werden. Bei solchen Ausführungsformen wird das Verfahren 540 nicht durchgeführt. Bei jedem Fehler erzeugt der jeweilige SoC-Fehleraggregator den SoC-Fehleraggregator-Fehler (Blöcke 518 und 532) und sendet ihn an den SI-Fehleraggregator 142. Da der Prozessor 150 nicht anwesend ist, werden die Mailbox-Interrupts nicht an die Interrupt-Steuerung 141 übertragen, so dass der Prozessor 140 auf das SoC-Fehleraggregator-Signal wartet (Block 558 in 5C), bevor der Prozessor 140 handelt. Dann, wenn der SoC-Fehleraggregator-Fehler empfangen wird (Block 582 von 5D), wagt sich die SI 110 an die anderen Komponenten 160 heran, um eine Auswertung (Block 594 von 5D) für jeden korrigierten und unkorrigierten Fehler durchzuführen, der in dem Verfahren 550 empfangen wurde (siehe 5C). Ist die Auswertung erfolgreich, führt der Prozessor 140 die Korrekturmaßnahme(n) durch (Block 597 von 5D). Ist die Auswertung hingegen nicht erfolgreich, ergreift der Prozessor 140 keine Maßnahmen (Block 596 von 5D), was die SoC-Fehlerbehandlungsschaltung 422 veranlasst, nach Ablauf des SoC-Fehler-Timers 424 (Block 584 von 5D) den SoC-Fehler (ohne jeglichen Softwareeingriff) zu senden. Der SoC-Fehler benachrichtigt das externe System 404 (z.B. die optionale externe Steuereinheit 106, einen oder mehrere externe Mikrocontroller, einen oder mehrere externe Agenten und dergleichen), was es dem externen System 404 ermöglicht, die Fahrzeug-Plattform 100 (siehe 1) in einen sicheren Zustand zu versetzen.In the 5A-5D the vehicle SoC 104 has the processor 150. In at least some embodiments, processor 150 may be omitted. In such embodiments, method 540 is not performed. For each error, the respective SoC error aggregator generates the SoC error aggregator error (blocks 518 and 532) and sends it to the SI error aggregator 142. Since the processor 150 is not present, the mailbox interrupts are not sent to the interrupt controller 141 transmitted so that the processor 140 waits for the SoC error aggregator signal (block 558 in 5C ) before processor 140 takes action. Then when the SoC error aggregator error is received (block 582 of 5D ), the SI 110 dares to approach the other components 160 to carry out an evaluation (block 594 of 5D ) for each corrected and uncorrected error received in method 550 (see 5C ). If the evaluation is successful, the processor 140 carries out the corrective action(s) (block 597 of 5D ). However, if the evaluation is not successful, the processor 140 takes no action (block 596 of 5D ), which causes the SoC error handling circuit 422 to expire after the SoC error timer 424 (block 584 of 5D ) to send the SoC error (without any software intervention). The SoC error notifies the external system 404 (e.g. the optional external control unit 106, one or more external microcontrollers, one or more external agents, and the like), which allows the external system 404 to control the vehicle platform 100 (see 1 ) to a safe state.

6A-6C zeigen beispielhafte Aktionen, die von der SI 110 ergriffen werden können, wenn die SI 110 über einen bestimmten Fehler durch das Signal über einen korrigierten Fehler, das Signal über einen unkorrigierten Fehler oder das SoC-Fehleraggregatorsignal informiert wird. 6A veranschaulicht ein beispielhaftes Signalzeitdiagramm für Signale, die von dem Prozessor 140 empfangen und gesendet werden, nachdem ein unkorrigierter Fehler geringen Schweregrades (z. B. der Mindestwert) gemäß einigen Ausführungsformen der vorliegenden Offenbarung aufgetreten ist. Die Zeilen 612A-618A in 6A stellen das Signal eines unkorrigierten Fehlers, ein Mailbox-Interrupt-Signal, das SoC-Fehleraggregations-Signal bzw. das SoC-Fehlersignal dar. Das Signal eines unkorrigierten Fehlers, das Mailbox-Interrupt-Signal, das SoC-Fehleraggregations-Signal und das SoC-Fehlersignal werden mit einem Taktsignal synchronisiert, das durch eine Linie 610A dargestellt wird. Das durch die Linie 610A dargestellte Taktsignal wurde auf der Grundlage des zweiten (SI) Taktgebers 114 (siehe 1) in dem SI-Bereich erzeugt. 6A-6C show example actions that may be taken by the SI 110 when the SI 110 is informed of a particular error by the corrected error signal, the uncorrected error signal, or the SoC error aggregator signal. 6A illustrates an example signal timing diagram for signals received and sent by processor 140 after an uncorrected low-severity error (e.g., the minimum value) occurs, according to some embodiments of the present disclosure. Lines 612A-618A in 6A represent the uncorrected error signal, a mailbox interrupt signal, the SoC error aggregation signal and the SoC error signal, respectively. The uncorrected error signal, the mailbox interrupt signal, the SoC error aggregation signal and the SoC Error signals are synchronized with a clock signal represented by a line 610A. The clock signal represented by line 610A was generated based on the second (SI) clock 114 (see 1 ) generated in the SI area.

Die Linie 612A stellt das Signal eines unkorrigierten Fehlers dar, das von dem Signalleiter 412 für unkorrigierte Fehler (siehe 4) zu dem SI-Fehleraggregator 142 geleitet wird. Ein Abschnitt 622A der Linie 612A stellt das Auftreten des unkorrigierten Fehlers dar. Nach dem Empfang des Signals über den unkorrigierten Fehler (z. B. Block 552 von 5C) sendet der SI-Fehleraggregator 142 einen Interrupt an den Prozessor 140 (z. B. Block 566 von 5C).Line 612A represents the uncorrected error signal transmitted from the uncorrected error signal conductor 412 (see 4 ) is routed to the SI error aggregator 142. A portion 622A of line 612A represents the occurrence of the uncorrected error. After receiving the uncorrected error signal (e.g., block 552 of 5C ), the SI error aggregator 142 sends an interrupt to the processor 140 (e.g., block 566 of 5C ).

In 6A empfängt die Interrupt-Steuerung 141 dann einen Mailbox-Interrupt (die Antwort im Abfrageblock 568 von 5C lautet „JA“). Ein Abschnitt 626A der Linie 614A stellt den (vom Prozessor 150 gesendeten) Mailbox-Interrupt dar, der den Schweregrad des unkorrigierten Fehlers anzeigt. Da der Mailbox-Interrupt anzeigt, dass der bestimmte Fehler einen geringen Schweregrad hat, beschließt der Prozessor 140, auf die Mailbox(en) 156 zuzugreifen (z. B. ist die Antwort im Abfrageblock 570 von 5C „JA“) und den Inhalt der Mailbox(en) 156 zu lesen (z. B. Block 572 von 5C). Wenn die Mailbox(en) 156 Fehlerinformationen aufweisen (die von dem Prozessor 150 erstellt wurden), die anzeigen, dass der bestimmte Fehler gelöscht wurde, löscht der Prozessor 140 den bestimmten Fehler im SI-Fehleraggregator 142 (z. B. Block 578 von 5C). Wenn dies geschieht, bevor der Timer 420U für korrigierte Fehler abläuft, melden der/die SoC-Fehleraggregator(en) 152 den SoC-Fehleraggregatorfehler nicht (z. B. Block 529 von 5A).In 6A the interrupt controller 141 then receives a mailbox interrupt (the response in query block 568 from 5C is “YES”). A portion 626A of line 614A represents the mailbox interrupt (sent from processor 150) indicating the severity of the uncorrected error. Since the mailbox interrupt indicates that the particular error is of low severity, the processor 140 decides to access the mailbox(es) 156 (e.g., the response is in query block 570 of 5C “YES”) and to read the contents of the mailbox(es) 156 (e.g. block 572 of 5C ). If the mailbox(es) 156 have error information (created by the processor 150) indicating that the particular error has been cleared, the processor 140 clears the particular error in the SI error aggregator 142 (e.g., block 578 of 5C ). If this occurs before the corrected error timer 420U expires, the SoC error aggregator(s) 152 will not report the SoC error aggregator error (e.g., block 529 of 5A) .

Andererseits, wenn der Inhalt der Mailbox(en) 156 nicht anzeigt, dass der Prozessor 150 den bestimmten Fehler gelöscht hat, kann der Prozessor 140 beschließen, eine oder mehrere Korrekturmaßnahmen zu ergreifen (z. B. lautet die Antwort im Abfrageblock 573 von 5C „JA“). Wenn die Korrekturmaßnahme(n) (z. B. in Block 574 von 5C) erfolgreich ist (sind), kann der Prozessor 140 den Prozessor 150 benachrichtigen, um den Fehler abzumelden (oder den Fehler zu löschen). Zum Beispiel kann der Prozessor 140 einen Mailbox-Interrupt an den Prozessor 150 senden und/oder Fehlerinformationen in die Mailbox(en) 156 schreiben. Nachdem der Prozessor 150 diese Benachrichtigung erhalten und den Fehler zurückgenommen hat, teilt der Prozessor 150 dem Prozessor 140 mit, dass der Fehler zurückgenommen wurde (z. B. über das Signal für unkorrigierte Fehler, einen Mailbox-Interrupt und/oder in der/den Mailbox(en) 156 gespeicherte Fehlerinformationen). Nach Erhalt dieser Benachrichtigung kann der Prozessor 140 den Fehler löschen, z. B. durch Rücksetzen des Statusbits „BT2“ (z. B. Block 578 von 5C). Ein Abschnitt 624A der Linie 612A stellt ein Zurücknehmen des unkorrigierten Fehlers dar, nachdem der Prozessor 140 die Mailbox(en) 156 gelesen und korrigierende Maßnahmen ergriffen hat. Ein gekrümmter Pfeil 628A repräsentiert eine Verzögerung zwischen dem Zeitpunkt, zu dem der Prozessor 140 den Mailbox-Interrupt empfangen hat, und dem Zeitpunkt, zu dem der Prozessor 140 den Fehler zurückgenommen hat (oder den Fehler löscht).On the other hand, if the contents of the mailbox(es) 156 do not indicate that the processor 150 has cleared the particular error, the processor 140 may decide to take one or more corrective actions (e.g., the answer in query block 573 is 5C "YES"). If the corrective action(s) (e.g. in block 574 of 5C ) is successful, processor 140 may notify processor 150 to clear the error (or clear the error). For example, processor 140 may send a mailbox interrupt to processor 150 and/or write error information to mailbox(es) 156. After the processor 150 receives this notification and reverts the error, the processor 150 notifies the processor 140 that the error has been reverted (e.g., via the uncorrected error signal, a mailbox interrupt, and/or in the Mailbox(es) 156 stored error information). After receiving this notification, the processor 140 may clear the error, e.g. B. by resetting the status bit “BT2” (e.g. block 578 of 5C ). A portion 624A of line 612A represents a rollback of the uncorrected error after the processor 140 has read the mailbox(es) 156 and taken corrective action. A curved arrow 628A represents a delay between the time the processor 140 received the mailbox interrupt and the time the processor 140 rolled back the error (or cleared the error).

Wenn die Korrekturmaßnahme(n) erfolgreich war(en), kann der Prozessor 140 einen Mailbox-Interrupt an die Mailbox(en) 156 senden, der anzeigt, dass der Prozessor 140 den bestimmten Fehler gelöscht hat (z. B. Block 578 von 5C). Optional kann der Prozessor 140 Fehlerinformationen in die Mailbox(en) 156 schreiben. Der Prozessor 150 empfängt den Mailbox-Interrupt, stellt fest, dass der bestimmte Fehler von dem Prozessor 140 korrigiert wurde (z. B. lautet die Antwort im Abfrageblock 547 „JA“), und löscht den bestimmten Fehler aus dem/den SoC-Fehleraggregator(en) 152 (z. B. Block 549 von 5B). Wenn dies geschieht, bevor der Timer für unkorrigierte Fehler 420U abläuft, meldet/n der/die SoC-Fehleraggregator(en) 152 den SoC-Fehleraggregatorfehler nicht (z. B. Block 529 von 5A). Somit überwacht/überwachen der/die SoC-Fehleraggregator(en) 152 den bestimmten Fehler, um sicherzustellen, dass er von einem der Prozessoren 140 und 150 behandelt wurde, und wenn der bestimmte Fehler nicht behoben wurde, bevor der Timer für unkorrigierte Fehler 420U abläuft, benachrichtigt/benachrichtigen der/die SoC-Fehleraggregator(en) 152 die SoC-Fehlerbehandlungsschaltung 422. Wie es vorab erwähnt ist, teilt der Prozessor 150, nachdem er den Fehler zurückgenommen hat, dem Prozessor 140 mit, dass der Fehler zurückgenommen wurde (z. B. über das Signal über unkorrigierte Fehler, einen Mailbox-Interrupt und/oder in der/den Mailbox(en) 156 gespeicherte Fehlerinformationen), und der Prozessor 140 kann den Fehler in dem SI-Fehleraggregator 142 löschen.If the corrective action(s) were successful, the processor 140 may send a mailbox interrupt to the mailbox(es) 156 indicating that the processor 140 has cleared the particular error (e.g., block 578 of 5C ). Optionally, the processor 140 can write error information to the mailbox(es) 156. The processor 150 receives the mailbox interrupt, determines that the particular error has been corrected by the processor 140 (e.g., the answer in query block 547 is “YES”), and clears the particular error from the SoC error aggregator(s). (en) 152 (e.g. Block 549 of 5B) . If this occurs before the uncorrected error timer 420U expires, the SoC error aggregator(s) 152 does not report the SoC error aggregator error (e.g., block 529 of 5A) . Thus, the SoC error aggregator(s) 152 monitors the particular error to ensure that it has been handled by one of the processors 140 and 150, and if the particular error has not been corrected, before the uncorrected error timer 420U expires , the SoC fault aggregator(s) 152 notifies the SoC fault handling circuitry 422. As noted above, after clearing the error, processor 150 notifies processor 140 that the error has been cleared (e.g., via the uncorrected error signal, a mailbox interrupt, and/or in the error information stored in the mailbox(es) 156), and the processor 140 may clear the error in the SI error aggregator 142.

Die Linie 616A stellt das SoC-Fehleraggregations-Signal dar und verdeutlicht, dass der SoC-Fehleraggregations-Fehler nicht gemeldet wurde. Somit wurde(n) der/die unkorrigierte(n) Fehler gelöscht, bevor der Timer 420U für unkorrigierte Fehler ablief.Line 616A represents the SoC error aggregation signal and indicates that the SoC error aggregation error was not reported. Thus, the uncorrected error(s) were cleared before the uncorrected error timer 420U expired.

Die Linie 618A stellt ein SoC-Fehlersignal dar, das über die Verbindung 406 an das externe System 404 (z. B. die optionale externe Steuereinheit 106, einen oder mehrere externe Mikrocontroller, einen oder mehrere externe Agenten und dergleichen) gesendet werden kann. Da der/die unkorrigierte(n) Fehler behandelt wurde(n) und der SoC-Fehleraggregationsfehler nicht gemeldet wurde, zeigt die Linie 618A an, dass die SI 110 das externe System 404 nicht über den/die unkorrigierten Fehler benachrichtigt (z. B. lautet die Antwort im Abfrageblock 575 „NEIN“).Line 618A represents an SoC error signal that may be sent over connection 406 to external system 404 (e.g., optional external controller 106, one or more external microcontrollers, one or more external agents, and the like). Because the uncorrected error(s) have been handled and the SoC error aggregation error has not been reported, line 618A indicates that the SI 110 is not notifying the external system 404 of the uncorrected error(s) (e.g., the answer in query block 575 is “NO”).

6B zeigt ein beispielhaftes Signalzeitdiagramm für Signale, die von dem Prozessor 140 empfangen und gesendet werden, nachdem ein unkorrigierter Fehler mit hohem Schweregrad (z. B. dem Maximalwert) gemäß einigen Ausführungsformen der vorliegenden Offenbarung gemeldet wurde. Die Linien 612B-618B in 6B stellen das Signal des unkorrigierten Fehlers, das Mailbox-Interrupt-Signal, das SoC-Fehleraggregations-Signal bzw. das SoC-Fehlersignal dar. Das Signal des unkorrigierten Fehlers, das Mailbox-Interrupt-Signal, das SoC-Fehleraggregations-Signal und das SoC-Fehlersignal werden mit einem Taktsignal synchronisiert, das durch eine Linie 610B dargestellt wird. Das durch die Linie 610B dargestellte Taktsignal wurde auf der Grundlage des zweiten (SI-) Taktgebers 114 (siehe 1) in dem SI-Bereich erzeugt. 6B shows an example signal timing diagram for signals received and sent by the processor 140 after an uncorrected error of high severity (e.g., the maximum value) is reported, according to some embodiments of the present disclosure. The lines 612B-618B in 6B represent the uncorrected error signal, the mailbox interrupt signal, the SoC error aggregation signal and the SoC error signal, respectively. The uncorrected error signal, the mailbox interrupt signal, the SoC error aggregation signal and the SoC error signals are synchronized with a clock signal represented by a line 610B. The clock signal represented by line 610B was generated based on the second (SI) clock 114 (see 1 ) generated in the SI area.

Die Linie 612B stellt das Signal des unkorrigierten Fehlers dar, das von dem Signalleiter 412 für unkorrigierte Fehler (siehe 4) zu dem SI-Fehleraggregator 142 geleitet wird. Ein Abschnitt 622B der Linie 612B repräsentiert die Meldung eines unkorrigierten Fehlers. Nach dem Empfang des Signals des unkorrigierten Fehlers (z. B. Block 552 von 5C) sendet der SI-Fehleraggregator 142 einen Interrupt an den Prozessor 140 (z. B. Block 566 von 5C).Line 612B represents the uncorrected error signal transmitted from the uncorrected error signal conductor 412 (see 4 ) is routed to the SI error aggregator 142. A portion 622B of line 612B represents reporting an uncorrected error. After receiving the uncorrected error signal (e.g., block 552 of 5C ), the SI error aggregator 142 sends an interrupt to the processor 140 (e.g., block 566 of 5C ).

In 6B empfängt dann die Interrupt-Steuerung 141 den Mailbox-Interrupt (z.B. ist die Antwort im Abfrageblock 568 von 5C „JA“). Ein Abschnitt 624B der Linie 614B stellt den Mailbox-Interrupt dar, der angibt, dass der erste unkorrigierte Fehler einen hohen Schweregrad hat (z. B. sieben). Da der Mailbox-Interrupt angibt, dass der bestimmte Fehler einen hohen Schweregrad hat, entscheidet der Prozessor 140, nicht auf die Mailbox(en) 156 zuzugreifen (z. B. lautet die Antwort im Abfrageblock 570 von 5C „NEIN“). Beispielsweise kann der Prozessor 140 feststellen, dass es zu riskant ist, auf die anderen Komponenten 160 des Fahrzeug-SoC 104 zuzugreifen, und dass dies der SI 110 schaden könnte. In 6B entscheidet der Prozessor 140 auch, keine Korrekturmaßnahme(n) auszuführen (z. B. lautet die Antwort im Abfrageblock 573 von 5C „NEIN“). In 6B wird der unkorrigierte Fehler nicht zurückgenommen, weil die SI 110 nicht in der Lage ist, eine oder mehrere Korrekturmaßnahmen durchzuführen.In 6B then the interrupt controller 141 receives the mailbox interrupt (e.g. the response is in query block 568 from 5C "YES"). A portion 624B of line 614B represents the mailbox interrupt indicating that the first uncorrected error is of high severity (e.g., seven). Because the mailbox interrupt indicates that the particular error is of high severity, the processor 140 decides not to access the mailbox(es) 156 (e.g., the response in query block 570 is from 5C "NO"). For example, the processor 140 may determine that it is too risky to access the other components 160 of the vehicle SoC 104 and that doing so could harm the SI 110. In 6B the processor 140 also decides not to take any corrective action(s) (e.g. the answer in query block 573 is from 5C "NO"). In 6B the uncorrected error is not reversed because the SI 110 is unable to carry out one or more corrective actions.

Der Prozessor 140 beschließt jedoch, das externe System 404 (siehe 4) zu benachrichtigen, indem er den SoC-Fehler im SoC-Fehlersignal sendet (z. B. ist die Antwort im Abfrageblock 575 von 5C „JA“). Anschließend sendet der Prozessor 140 das SoC-Fehlersignal (z. B. Block 576 von 5C). Wenn also in 6B der Schweregrad des Fehlers hoch ist (z. B. der Maximalwert), kann die SI 110 beschließen, nicht auf das Fahrzeug-SoC 104 zuzugreifen, keine Korrekturmaßnahmen zu ergreifen und stattdessen das externe System 404 zu benachrichtigen. Die Linie 618B stellt das SoC-Fehlersignal dar, das von der SI 110 an das externe System 404 gesendet wird, und ein Abschnitt 626B der Linie 618B stellt die Meldung des SoC-Fehlers dar. Die Linie 616B stellt das SoC-Fehleraggregations-Signal dar und zeigt nicht an, dass ein SoC-Fehleraggregations-Fehler bereits gemeldet wurde. Daher erkannte die SI 110, dass der unkorrigierte Fehler nicht behandelt worden war, und beschloss, das externe System 404 zu benachrichtigen, bevor der SoC-Fehleraggregationsfehler gemeldet wurde.However, the processor 140 decides to use the external system 404 (see 4 ) by sending the SoC error in the SoC error signal (e.g. the response is in query block 575 of 5C "YES"). The processor 140 then sends the SoC error signal (e.g., block 576 of 5C ). So if in 6B If the severity of the error is high (e.g., the maximum value), the SI 110 may decide not to access the vehicle SoC 104, not to take corrective action, and instead notify the external system 404. Line 618B represents the SoC error signal sent from the SI 110 to the external system 404, and a portion 626B of line 618B represents the reporting of the SoC error. Line 616B represents the SoC error aggregation signal and does not indicate that a SoC error aggregation error has already been reported. Therefore, the SI 110 recognized that the uncorrected error had not been handled and decided to notify the external system 404 before reporting the SoC error aggregation error.

6C zeigt gemäß einigen Ausführungsformen der vorliegenden Offenbarung ein beispielhaftes Signalzeitdiagramm für Signale, die von dem Prozessor 140 empfangen und gesendet werden, nachdem ein unkorrigierter Fehler (z. B. mit dem Maximalwert) gemeldet wurde, aber die SI 110 den Mailbox-Interrupt nicht empfängt. Die Linien 612C-618C in 6C stellen das Signal des unkorrigierten Fehlers, das Mailbox-Interrupt-Signal, das SoC-Fehleraggregations-Signal bzw. das SoC-Fehlersignal dar. Das Signal des unkorrigierten Fehlers, das Mailbox-Interrupt-Signal, das SoC-Fehleraggregations-Signal und das SoC-Fehlersignal werden mit einem Taktsignal synchronisiert, das durch eine Linie 610C dargestellt wird. Das durch die Linie 610C dargestellte Taktsignal wurde auf der Grundlage des zweiten (SI) Taktgebers 114 (siehe 1) in dem SI-Bereich erzeugt. 6C shows an example signal timing diagram for signals received and sent by the processor 140 after an uncorrected error (e.g., with the maximum value) is reported but the SI 110 does not receive the mailbox interrupt, according to some embodiments of the present disclosure. The lines 612C-618C in 6C represent the uncorrected error signal, the mailbox interrupt signal, the SoC error aggregation signal and the SoC error signal, respectively. The uncorrected error signal, the mailbox interrupt signal, the SoC error aggregation signal and the SoC error signals are synchronized with a clock signal represented by a line 610C. The clock signal represented by line 610C was generated based on the second (SI) clock 114 (see 1 ) generated in the SI area.

Die Linie 612C stellt das Signal des unkorrigierten Fehlers dar, das von dem Signalleiter 412 für unkorrigierte Fehler (siehe 4) zu dem SI-Fehleraggregator 142 geleitet wird. Ein Abschnitt 622C der Linie 612C stellt eine Meldung des unkorrigierten Fehlers dar. Nach dem Empfang des Signals des unkorrigierten Fehler (z. B. Block 552 von 5C) sendet der SI-Fehleraggregator 142 einen Interrupt an den Prozessor 140 (z. B. Block 566 von 5C).Line 612C represents the uncorrected error signal transmitted from the uncorrected error signal conductor 412 (see 4 ) is routed to the SI error aggregator 142. A portion 622C of line 612C represents an uncorrected error message. After receiving the uncorrected error signal (e.g., block 552 of 5C ), the SI error aggregator 142 sends an interrupt to the processor 140 (e.g., block 566 of 5C ).

In 6C zeigt die Linie 614C nicht an, dass der Mailbox-Interrupt empfangen wurde. In diesem Beispiel empfängt die Interrupt-Steuerung 141 den Mailbox-Interrupt also nicht (z. B. lautet die Antwort im Abfrageblock 568 von 5C „NEIN“). Dies kann z. B. dann der Fall sein, wenn der Prozessor 150 die Auswertung des unkorrigierten Fehlers nicht abgeschlossen hat (z. B. Block 542 von 5B), was dazu führt (Antwort im Abfrageblock 543 von 5C ist „JA“), dass der Prozessor 150 den Mailbox-Interrupt nicht sendet (z. B. Block 544 von 5B). Daher wartet der Prozessor 140 darauf, entweder den Mailbox-Interrupt oder den SoC-Fehleraggregator-Fehler zu empfangen, je nachdem, was zuerst eintritt (z. B. Block 558 von 5C).In 6C line 614C does not indicate that the mailbox interrupt was received. So in this example, the interrupt controller 141 does not receive the mailbox interrupt (e.g. the answer in query block 568 is from 5C "NO"). This can e.g. This may be the case, for example, if the processor 150 has not completed the evaluation of the uncorrected error (e.g. block 542 of 5B) , which leads to (response in query block 543 of 5C is "YES") that the processor 150 does not send the mailbox interrupt (e.g. block 544 of 5B) . Therefore, the processor 140 waits to receive either the mailbox interrupt or the SoC error aggregator error, whichever occurs first (e.g., block 558 of 5C ).

Eine Linie 628C stellt die dritte vorbestimmte Zeitspanne dar und zeigt an, dass der Timer 420U für unkorrigierte Fehler abgelaufen ist. Da weder der Prozessor 140 noch der Prozessor 150 in der Lage waren, den ersten unkorrigierten Fehler zu löschen, läuft der Timer 420U für unkorrigierte Fehler ab (z.B. Antwort im Abfrageblock 530 von 5A ist „JA“), was einen bestimmten der SoC-Fehleraggregatoren 152, der das Signal des unkorrigierten Fehlers an die SI 110 und den Interrupt an den Prozessor 150 gesendet hat, veranlasst, das SoC-Fehleraggregatorsignal über den SoC-Fehleraggregatorsignalleiter 414 an den SI-Fehleraggregator 142 zu übertragen (z. B. in Block 532 von 5A). Der SI-Fehleraggregator 142 empfängt das SoC-Fehleraggregatorsignal (z. B. in Block 582 von 5D). Ein Abschnitt 624C der Linie 616C stellt den Fehler des SI-Fehleraggregators dar, der von dem jeweiligen SoC-Fehleraggregator an die SI 110 gesendet wird. Ein gekrümmter Pfeil 630C repräsentiert eine Verzögerung zwischen dem Zeitpunkt, zu dem der unkorrigierte Fehler von der SI 110 empfangen wurde, und dem Zeitpunkt, zu dem der SI-Fehleraggregatorfehler von der SI 110 empfangen wurde.A line 628C represents the third predetermined period of time and indicates that the uncorrected error timer 420U has expired. Since neither processor 140 nor processor 150 were able to clear the first uncorrected error, uncorrected error timer 420U expires (e.g., response in query block 530 of 5A is "YES"), which causes a particular one of the SoC error aggregators 152 that sent the uncorrected error signal to the SI 110 and the interrupt to the processor 150 to send the SoC error aggregator signal to the SI via the SoC error aggregator signal conductor 414 -Error aggregator 142 to be transmitted (e.g. in block 532 of 5A) . The SI error aggregator 142 receives the SoC error aggregator signal (e.g., in block 582 of 5D ). A portion 624C of line 616C represents the SI error aggregator error sent to the SI 110 from the respective SoC error aggregator. A curved arrow 630C represents a delay between the time the uncorrected error was received from the SI 110 and the time the SI error aggregator error was received from the SI 110.

Nach dem Empfang des SI-Fehleraggregatorsignals (z. B. Block 582 von 5D) sendet der SI-Fehleraggregator 142 einen Interrupt an den Prozessor 140 (z. B. Block 592 von 5D). Dann kann der Prozessor 140 den ersten unkorrigierten Fehler auswerten (z. B. Block 594 von 5D) und entscheiden, ob Korrekturmaßnahmen zu ergreifen sind. Wenn der Prozessor 140 nicht in der Lage ist, irgendwelche Korrekturmaßnahmen zu ergreifen (z. B. lautet die Antwort im Abfrageblock 595 von 5D „NEIN“), sendet die SoC-Fehlerbehandlungsschaltung 422 das SoC-Fehlersignal an das externe System 404 (z. B. Block 584 von 5C). Ein Abschnitt 626C der Linie 612C stellt den SoC-Fehler dar, der an das externe System 404 gesendet wird. In Ausführungsformen, die den SoC-Fehler-Timer 424 verwenden, wird der SoC-Fehler gesendet, wenn der SoC-Fehler-Timer 424 abläuft. In 6C zeigt eine Linie 632C an, dass die vierte vorgegebene Zeitspanne abgelaufen ist, was bedeutet, dass der SoC-Fehler-Timer 424 abgelaufen ist. Ein gekrümmter Pfeil 634C stellt eine Verzögerung zwischen dem Zeitpunkt des Empfangs des SI-Fehleraggregatorfehlers durch die SI 110 und dem Zeitpunkt der Meldung des SoC-Fehlers durch die SI 110 dar. Auf diese Weise benachrichtigt eine Hardware in der SI 110 das externe System 404, das versuchen wird, die Fahrzeug-Plattform 100 in einen sicheren Zustand zu versetzen.After receiving the SI error aggregator signal (e.g., block 582 of 5D ), the SI error aggregator 142 sends an interrupt to the processor 140 (e.g., block 592 of 5D ). Then the processor 140 can evaluate the first uncorrected error (e.g. block 594 of 5D ) and decide whether corrective action needs to be taken. If the processor 140 is unable to take any corrective action (e.g., the answer in query block 595 is 5D “NO”), the SoC error handling circuit 422 sends the SoC error signal to the external system 404 (e.g., block 584 of 5C ). A portion 626C of line 612C represents the SoC error sent to the external system 404. In embodiments that use the SoC error timer 424, the SoC error is sent when the SoC error timer 424 expires. In 6C a line 632C indicates that the fourth predetermined time period has expired, meaning that the SoC error timer 424 has expired. A curved arrow 634C represents a delay between the time the SI 110 receives the SI error aggregator error and the time the SI 110 reports the SoC error. In this way, hardware in the SI 110 notifies the external system 404 that which will attempt to place the vehicle platform 100 in a safe state.

Wie bereits mit Bezug zu 2 vorab erwähnt ist, teilen sich die SI 110 und die anderen Komponenten 160 des Fahrzeug-SoC 104 den flüchtigen Speicher 126. Die SI 110 arbeitet jedoch innerhalb einer ersten Risikoklassifizierungsstufe und die anderen Komponenten 160 des Fahrzeug-SoC 104 können innerhalb einer niedrigeren zweiten Risikoklassifizierungsstufe arbeiten. Zum Beispiel kann die SI 110 auf ASIL-D arbeiten, aber die anderen Komponenten des Fahrzeug-SoC, die den flüchtigen Speicher 126 und einen Kommunikationspfad (z.B. Interconnect, Speichersteuerung und dergleichen) zwischen der SI 110 und dem flüchtigen Speicher 126 aufweisen, können auf ASIL-B arbeiten.As already related to 2 As mentioned above, the SI 110 and the other components 160 of the vehicle SoC 104 share the volatile memory 126. However, the SI 110 operates within a first risk classification level and the other components 160 of the vehicle SoC 104 may operate within a lower second risk classification level . For example, the SI 110 may operate on ASIL-D, but the other components of the vehicle SoC, including the volatile memory 126 and a communication path (e.g., interconnect, memory controller, and the like) between the SI 110 and the volatile memory 126, may operate on ASIL-B work.

Damit die SI 110 den flüchtigen Speicher 126 mit den anderen Komponenten 160 des Fahrzeug-SoC 104 gemeinsam benutzen kann, wird ein separater dedizierter Speicherbereich (als „Carve-Out“ 250 bezeichnet) in dem flüchtigen Speicher 126 für die ausschließliche Verwendung durch die SI 110 geschaffen. Der Ausschnitt bzw. Carve-Out 250 kann für die Speicherverwaltungssoftware (z. B. die Rich-OS-Speicherverwaltungssoftware der Rich-OS-Speicherverwaltung), die vom Haupt-CPU-Komplex 120 ausgeführt wird (siehe 1), nicht sichtbar sein. Der Carve-Out 250 kann zur Boot-Zeit erstellt und konfiguriert werden und kann für einen bestimmten Boot-Zyklus der SI 110 zugeordnet bleiben. Die Größe des Carve-Outs 250 kann beispielsweise durch einen vom Benutzer editierbaren Softwareparameter bestimmt werden, der von der Software (z. B. ausgeführt vom Haupt-CPU-Komplex 120) zur Konfiguration des Carve-Outs 250 verwendet wird. Der Carve-Out 250 kann in einen ersten Unterabschnitt 252 (siehe 8) und einen zweiten Unterabschnitt 254 (siehe 8) unterteilt werden. Die SI 110 kann auf den Carve-Out 250 über einen Kommunikationspfad zugreifen, der auf der ersten Risikoklassifizierungsstufe arbeitet, und jeder Zugriff auf den Carve-Out 250 durch die SI 110 über den Kommunikationspfad kann Sicherheitsberechtigungsprüfungen unterzogen werden, wie sie im Folgenden beschrieben werden.In order for the SI 110 to share the volatile memory 126 with the other components 160 of the vehicle SoC 104, a separate dedicated memory area (referred to as a “carve-out” 250) is created in the volatile memory 126 for the exclusive use of the SI 110 created. The carve-out 250 may be for the memory management software (e.g., the Rich OS memory management software) that is executed by the main CPU complex 120 (see 1 ), not be visible. The Carve-Out 250 can be created and configured at boot time and can remain associated with the SI 110 for a given boot cycle. The size of the carve-out 250 may be determined, for example, by a user-editable software parameter that is used by the software (e.g., executed by the main CPU complex 120) to configure the carve-out 250. The carve-out 250 can be divided into a first subsection 252 (see 8th ) and a second subsection 254 (see 8th ). The SI 110 can access the Carve-Out 250 via a communication path based on the first risk classification level operates, and any access to the carve-out 250 by the SI 110 over the communication path may be subject to security authorization checks as described below.

Die SI 110 weist einen Fehlererkennungsblock 272 auf, der Hardware aufweist, die zwischen anderen Komponenten der SI 110 und dem Carve-Out 250 angeordnet ist. So kann der Fehlererkennungsblock 272 als eine Komponente der flüchtigen Speicherschnittstelle 200A implementiert werden. Alternativ kann der Fehlererkennungsblock 272 auch zwischen dem Prozessor 140 und der Schnittstelle 200A für den flüchtigen Speicher angeordnet sein. Bei solchen Ausführungsformen können ein oder mehrere Signalleiter (z.B. ein Draht, eine Signalspur und dergleichen) den Fehlererkennungsblock 272 jeweils mit dem Prozessor 140 und der Schnittstelle 200A für flüchtigen Speicher verbinden.The SI 110 includes an error detection block 272 that includes hardware located between other components of the SI 110 and the carve-out 250. Thus, error detection block 272 may be implemented as a component of volatile memory interface 200A. Alternatively, the error detection block 272 may be located between the processor 140 and the volatile memory interface 200A. In such embodiments, one or more signal conductors (e.g., a wire, a signal trace, and the like) may connect the error detection block 272 to the processor 140 and the volatile memory interface 200A, respectively.

Die Hardware des Fehlererkennungsblocks 272 kann einen Codeerzeugungs-Unterblock 273 aufweisen (siehe 8). Der Code-Erzeugungs-Unterblock 273 kann unter Verwendung einer Code-Erzeugungsschaltung für eine zyklische Redundanzprüfung („CRC“) implementiert werden, die einen CRC-Code erzeugt. Alternativ kann der Fehlererkennungsblock 272 auch andere Typen von Codeerzeugungsschaltungen aufweisen, die verschiedene Typen von Fehlererkennungscodes erzeugen, wie z. B. einen Fehlerkorrekturcode („ECC“). Die Hardware des Fehlererkennungsblocks 272 bestimmt einen oder mehrere Fehlererkennungscodes (z. B. CRC-Codes) für Daten, die den Fehlererkennungsblock 272 durchlaufen. Beispielsweise kann der Fehlererkennungsblock 272 für jedes Datenbyte, das den Fehlererkennungsblock 272 durchläuft, einen eigenen Fehlererkennungscode ermitteln. Der Fehlererkennungscode kann auf der Grundlage des Bytes und einer Datenadresse in dem Carve-Out 250, in dem das Byte zu speichern ist, berechnet werden. Beispielsweise kann die nachstehende Gleichung 1 verwendet werden, um den Fehlererkennungscode für ein bestimmtes Datenbyte zu bestimmen, das in den Carve-Out 250 zu schreiben ist: crc_out Byte x = CRC ( Byte-Adresse , Byte-Daten )

Figure DE112022001192T5_0001
The hardware of the error detection block 272 may include a code generation sub-block 273 (see 8th ). The code generation subblock 273 may be implemented using a cyclic redundancy check (“CRC”) code generation circuit that generates a CRC code. Alternatively, error detection block 272 may include other types of code generation circuits that generate different types of error detection codes, such as: B. an error correction code (“ECC”). The error detection block 272 hardware determines one or more error detection codes (e.g., CRC codes) for data passing through the error detection block 272. For example, the error detection block 272 may determine a separate error detection code for each byte of data that passes through the error detection block 272. The error detection code can be calculated based on the byte and a data address in the carve-out 250 where the byte is to be stored. For example, Equation 1 below can be used to determine the error detection code for a particular byte of data to be written to carve-out 250: crc_out Byte x = CRC ( Byte address , byte data )
Figure DE112022001192T5_0001

In der obigen Gleichung 1 stellt eine Variable „crc_outByte x“ den Fehlererkennungscode dar, der auf der Grundlage des Bytes, das durch eine Variable „Byte-Daten“ dargestellt wird, und der Datenadresse, die durch eine Variable „Byte-Addresse“ dargestellt wird, berechnet wird. In Gleichung 1 verwendet eine Funktion „CRC“ die Werte der Variablen „Byte-Daten“ und „Byte-Addresse“ als Eingaben und gibt den Wert der Variablen „crc_outByte x“ aus. Die Ausgabe der Funktion „CRC“ kann zumindest teilweise durch den Codeerzeugungs-Unterblock 273 (siehe 8) berechnet werden, falls vorhanden.In Equation 1 above, a variable “crc_out byte x ” represents the error detection code based on the byte represented by a variable “byte data” and the data address represented by a variable “byte address”. is calculated. In Equation 1, a function “CRC” takes the values of the variables “byte data” and “byte address” as inputs and outputs the value of the variable “crc_out byte x ”. The output of the “CRC” function can be at least partially achieved by the code generation sub-block 273 (see 8th ) will be calculated if available.

Nachdem der Fehlererkennungscode bestimmt wurde, bestimmt der Fehlererkennungsblock 272 (z. B. unter Verwendung eines Offsets) eine Codeadresse für den Fehlererkennungscode. Beispielsweise kann Gleichung 2 unten verwendet werden, um den Fehlererkennungscode für ein bestimmtes Byte der in den Carve-Out 250 zu schreibenden Daten zu bestimmen. crc_out_address = Schreibadresse + fixed_offset

Figure DE112022001192T5_0002
After the error detection code is determined, the error detection block 272 determines (e.g., using an offset) a code address for the error detection code. For example, Equation 2 below can be used to determine the error detection code for a particular byte of data to be written to carve-out 250. crc_out_address = Write address + fixed_offset
Figure DE112022001192T5_0002

In der obigen Gleichung 2 stellt die Variable „crc_out_address“ die Codeadresse dar, die auf der Grundlage der Datenadresse des Bytes, die durch die Variable „Schreibadresse“ dargestellt wird, und eines Offsets, der durch die Variable „fixed_offset“ dargestellt wird, berechnet wird. Wie oben erwähnt, kann der Carve-Out 250 in Unterabschnitte unterteilt werden, wobei der erste Unterabschnitt 252 (siehe 8) die Daten und der zweite Unterabschnitt 254 (siehe 8) die Fehlererkennungscodes speichert. So kann sich die Datenadresse, die durch die Variable „Byte-Adresse“ in Gleichung 1 oben dargestellt wird, im ersten Unterabschnitt 252 befinden, und die Codeadresse, die durch die Variable „Schreibadresse“ in Gleichung 2 oben dargestellt wird, kann sich im zweiten Unterabschnitt 254 befinden. Bei solchen Ausführungsformen kann der Wert der Variablen „fixed_offset“ gleich der Größe des ersten Unterabschnitts 252 des Carve-Out 250 sein, um sicherzustellen, dass die Fehlererkennungscodes im zweiten Unterabschnitt 254 gespeichert werden. Auf diese Weise wird eine adressbasierte Trennung verwendet, um die Daten von den Fehlererkennungscodes zu trennen, so dass ein Fehler, der in dem ersten oder dem zweiten Unterabschnitt 252 bzw. 254 auftritt, sich nicht auf den anderen auswirken kann.In Equation 2 above, the variable “crc_out_address” represents the code address that is calculated based on the data address of the byte, represented by the variable “write address,” and an offset represented by the variable “fixed_offset.” . As mentioned above, the carve-out 250 can be divided into subsections, with the first subsection 252 (see 8th ) the data and the second subsection 254 (see 8th ) stores the error detection codes. Thus, the data address represented by the "Byte Address" variable in Equation 1 above may be in the first subsection 252, and the code address represented by the "Write Address" variable in Equation 2 above may be in the second Subsection 254 is located. In such embodiments, the value of the fixed_offset variable may be equal to the size of the first subsection 252 of the carve-out 250 to ensure that the error detection codes are stored in the second subsection 254. In this way, address-based separation is used to separate the data from the error detection codes so that an error occurring in the first or second subsections 252 and 254, respectively, cannot affect the other.

Der Fehlererkennungsblock 272 führt eine Verzögerung (z. B. einige Taktzyklen) zwischen der Speicherung der Daten unter der/den Datenadresse(n) und der Speicherung des Fehlererkennungscodes unter der/den Codeadresse(n) ein. Diese Verzögerung verringert die Wahrscheinlichkeit, dass ein Ereignis (z. B. ein vorübergehendes Ereignis), das sich negativ auf die Daten auswirkt, sich auch negativ auf den Fehlererkennungscode auswirkt. Mit anderen Worten: Die Verzögerung trägt zur Immunität gegen Fehler allgemeiner Art und gegen vorübergehende Fehler bei, was wiederum einen Schutz vor Problemen wie Taktstörungen bietet. Der Fehlererkennungsblock 272 kann zwei oder mehr Datenbytes und die entsprechenden Fehlererkennungscodes puffern, bevor sie im Carve-Out 250 gespeichert werden. Dann kann der Fehlererkennungsblock 272 die Datenbytes (z. B. 16 Bytes) im ersten Unterabschnitt 252 speichern, gefolgt von der Verzögerung. Als nächstes kann der Fehlererkennungsblock 272 die entsprechenden Fehlererkennungscodes (z. B. 16 Bytes) im zweiten Unterabschnitt 254 speichern.The error detection block 272 introduces a delay (e.g., a few clock cycles) between storing the data at the data address(es) and storing the error detection code at the code address(es). This delay reduces the chance that an event (such as a transient event) that negatively impacts the data will also negatively impact the error detection code. In other words, the delay contributes to immunity against general errors and transient errors, which in turn provides protection against problems such as clock glitches. The error detection block 272 may buffer two or more bytes of data and the corresponding error detection codes before being stored in the carve-out 250. Then the error detection block 272 can the data bytes (e.g. 16 bytes) in the first subsection Store 252 followed by the delay. Next, the error detection block 272 may store the corresponding error detection codes (e.g., 16 bytes) in the second subsection 254.

Nun mit Bezug zu 7 weist jeder Block des Verfahrens 700, wie es hier beschrieben ist, einen Schritt auf, der mit einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Zum Beispiel kann das Verfahren 700 von der Hardware des Fehlererkennungsblocks 272 durchgeführt werden (siehe 2, 8 und 10). Als weiteres nicht einschränkendes Beispiel können eine oder mehrere Funktionen von einem Prozessor (z. B. dem in den 1, 2 und 4 dargestellten Prozessor 140) ausgeführt werden, der Anweisungen (z. B. die in den 1, 2 und 4 dargestellten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 dargestellten flüchtigen Speicher 146) gespeichert sind. Bei solchen Ausführungsformen können zumindest Abschnitte des Verfahrens 700 als computerverwendbare Anweisungen, die auf Computerspeichermedien gespeichert sind, ausgestaltet sein. Das Verfahren 700 kann durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 700 beispielhaft für die Fahrzeug-Plattform 100 von 1 beschrieben. Das Verfahren 700 kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme.Now with reference to 7 Each block of method 700, as described herein, includes a step that may be performed with any combination of hardware, firmware, and/or software. For example, method 700 may be performed by the hardware of error detection block 272 (see 2 , 8th and 10 ). As another non-limiting example, one or more functions may be provided by a processor (e.g., the one described in Figures 1 and 2). 1 , 2 and 4 processor 140 shown) are executed, the instructions (e.g. those in the 1 , 2 and 4 instructions 149 shown) which are stored in a memory (e.g. that in the 1 , 2 and 4 shown volatile memory 146) are stored. In such embodiments, at least portions of the method 700 may be embodied as computer-usable instructions stored on computer storage media. Method 700 may be provided through a standalone application, service, or hosted service (standalone or in combination with another hosted service), or a plug-in for another product, to name a few. In addition, the method 700 is exemplary for the vehicle platform 100 of 1 described. However, method 700 may additionally or alternatively be performed by any system or combination of systems, including but not limited to the systems described herein.

7 ist ein Flussdiagramm, das das Verfahren 700 zum Schreiben von Daten in den Ausschnitt bzw. Carve-Out 250 (siehe 2, 8 und 10) gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Zur Vereinfachung der Darstellung wird das Verfahren 700 so beschrieben, als würde es von dem Fehlererkennungsblock 272 (siehe 2, 8 und 10) durchgeführt. Bevor das Verfahren 700 beginnt, leitet ein Initiator (z. B. der Prozessor 140, die DMA-Engine 402 oder dergleichen), der in dem SI-Bereich arbeitet, eine erste Schreibanweisung, die Daten und Datenadresse(n) aufweist, an den Fehlererkennungsblock 272 weiter. Der Initiator kann Daten mit einer vorbestimmten Größe (z. B. 16 Byte) in den Carve-Out 250 schreiben. 7 is a flowchart showing the method 700 for writing data into the cutout or carve-out 250 (see 2 , 8th and 10 ) according to some embodiments of the present disclosure. For ease of illustration, method 700 is described as if it were from error detection block 272 (see 2 , 8th and 10 ) carried out. Before method 700 begins, an initiator (e.g., processor 140, DMA engine 402, or the like) operating in the SI area passes a first write instruction containing data and data address(es) to the Error detection block 272 continues. The initiator can write data of a predetermined size (e.g. 16 bytes) to the carve-out 250.

Gemäß 7 empfängt der Fehlererkennungsblock 272 (siehe 2, 8 und 10) im ersten Block 702 die erste Schreibanweisung, die die Daten und Datenadresse(n) von dem Initiator aufweist. In Block 704 wählt der Fehlererkennungsblock 272 einen Abschnitt der Daten und eine der Datenadresse(n) aus, die diesem Abschnitt entsprechen. Als nicht einschränkendes Beispiel kann der Fehlererkennungsblock 272 ein Byte der Daten in Block 704 und die dem ausgewählten Byte entsprechende Datenadresse auswählen. Bei einigen Ausführungsformen kann die erste Schreibanweisung nur eine einzige Datenadresse (z. B. eine erste Adresse) aufweisen. Nachfolgende Datenadressen können auf der Grundlage dieser einzigen Adresse bestimmt werden (z. B. durch Hinzufügen einer vorbestimmten Datengröße zu der einzigen Datenadresse). Daher kann bei einigen Ausführungsformen die Datenadresse in Block 704 für zumindest einen Teil der Daten berechnet werden.According to 7 the error detection block 272 receives (see 2 , 8th and 10 ) in the first block 702, the first write instruction containing the data and data address(es) from the initiator. In block 704, error detection block 272 selects a portion of the data and one of the data address(es) corresponding to that portion. As a non-limiting example, error detection block 272 may select a byte of the data in block 704 and the data address corresponding to the selected byte. In some embodiments, the first write instruction may have only a single data address (e.g., a first address). Subsequent data addresses may be determined based on this single address (e.g., by adding a predetermined data size to the single data address). Therefore, in some embodiments, the data address may be calculated in block 704 for at least a portion of the data.

Dann, in Block 706, bestimmt der Fehlererkennungsblock 272 einen Fehlererkennungscode für den in Block 704 ausgewählten Abschnitt der Daten (z.B. unter Verwendung von Gleichung 1 oben). Als nächstes leitet der Fehlererkennungsblock 272 in Block 708 die erste Schreibanweisung, die den in Block 704 ausgewählten Abschnitt der Daten und die entsprechende Datenadresse aufweist, an den ersten Unterabschnitt 252 (siehe 8 und 10) des Carve-Out 250 (siehe 2, 8 und 10) weiter. Gemäß der ersten Schreibanweisung speichert der Carve-Out 250 den Abschnitt in der entsprechenden Datenadresse in dem ersten Unterabschnitt 252.Then, in block 706, error detection block 272 determines an error detection code for the portion of data selected in block 704 (eg, using Equation 1 above). Next, in block 708, the error detection block 272 directs the first write instruction, which includes the portion of data selected in block 704 and the corresponding data address, to the first subsection 252 (see 8th and 10 ) of the Carve-Out 250 (see 2 , 8th and 10 ) further. According to the first write instruction, the carve-out 250 stores the section in the corresponding data address in the first subsection 252.

Im nächsten Block 710 bestimmt der Fehlererkennungsblock 272 (siehe 2, 8 und 10) eine Codeadresse für den in Block 706 bestimmten Fehlererkennungscode (z. B. unter Verwendung von Gleichung 2 oben). In Block 712 wartet der Fehlererkennungsblock 272 (z. B. einige Taktzyklen), um den Fehlererkennungscode an den ersten Unterabschnitt 252 (siehe 8 und 10) des Carve-Out 250 (siehe 2, 8 und 10) zu senden, um ihn in der Codeadresse zu speichern. Somit führt der Fehlererkennungsblock 272 in Block 712 eine Verzögerung zwischen der Speicherung der Daten bei der Datenadresse und der Speicherung des Fehlererkennungscodes bei der Codeadresse ein. Der Fehlererkennungsblock 272 kann einen Schreibverzögerungs-Timer (nicht dargestellt) aufweisen, der dazu dient, zu bestimmen, wie lange der Fehlererkennungsblock 272 in Block 712 wartet. So kann der Fehlererkennungsblock 272 eine fünfte vorgegebene Zeitspanne abwarten, bevor er den Fehlererkennungscode an den Carve-Out 250 zur Speicherung bei der Codeadresse sendet. Als nächstes leitet der Fehlererkennungsblock 272 in Block 714 eine zweite Schreibanweisung, die den in Block 706 ermittelten Fehlererkennungscode und die in Block 710 ermittelte Codeadresse aufweist, an den zweiten Unterabschnitt 254 (siehe 8 und 10) des Carve-Out 250 (siehe 2, 8 und 10) weiter. Um die Daten zu speichern, greift der Fehlererkennungsblock 272 also zweimal auf den Carve-Out 250 zu, jeweils einmal in den Blöcken 708 und 714. Gemäß der zweiten Schreibanweisung speichert der Carve-Out 250 den Fehlererkennungscode in der Codeadresse in dem zweiten Unterabschnitt 254.In the next block 710, the error detection block 272 determines (see 2 , 8th and 10 ) a code address for the error detection code determined in block 706 (e.g., using Equation 2 above). In block 712, the error detection block 272 waits (e.g., a few clock cycles) to send the error detection code to the first subsection 252 (see 8th and 10 ) of the Carve-Out 250 (see 2 , 8th and 10 ) to store it in the code address. Thus, in block 712, the error detection block 272 introduces a delay between storing the data at the data address and storing the error detection code at the code address. The error detection block 272 may include a write delay timer (not shown) that is used to determine how long the error detection block 272 waits in block 712. Thus, the error detection block 272 may wait a fifth predetermined period of time before sending the error detection code to the carve-out 250 for storage at the code address. Next, in block 714, the error detection block 272 directs a second write instruction having the error detection code determined in block 706 and the code address determined in block 710 to the second subsection 254 (see 8th and 10 ) of the Carve-Out 250 (see 2 , 8th and 10 ) further. The error takes effect in order to save the data Detection block 272 therefore accesses the carve-out 250 twice, once each in blocks 708 and 714. According to the second write instruction, the carve-out 250 stores the error detection code in the code address in the second subsection 254.

Anschließend bestimmt der Fehlererkennungsblock 272 (siehe 2, 8 und 10) im Abfrageblock bzw. Entscheidungsblock 716, ob irgendwelche Daten nicht gespeichert worden sind. Die Antwort im Abfrageblock 716 lautet „JA“, wenn der Fehlererkennungsblock 272 feststellt, dass zumindest ein Teil der Daten nicht gespeichert wurde. Andernfalls ist die Antwort im Abfrageblock 516 „NEIN“. Wenn die Antwort im Abfrageblock 716 „JA“ lautet, kehrt der Fehlererkennungsblock 272 zum Block 704 zurück, um einen neuen Abschnitt der Daten auszuwählen. Wenn andererseits die Antwort im Abfrageblock 716 „NEIN“ lautet, kehrt der Fehlererkennungsblock 272 zum Block 702 zurück, um neue Daten und neue Datenadresse(n) zu empfangen.The error detection block 272 then determines (see 2 , 8th and 10 ) in the query block or decision block 716 whether any data has not been saved. The answer in query block 716 is “YES” if error detection block 272 determines that at least some of the data was not saved. Otherwise, the answer in query block 516 is “NO”. If the answer in query block 716 is “YES,” error detection block 272 returns to block 704 to select a new portion of the data. On the other hand, if the answer in query block 716 is "NO", error detection block 272 returns to block 702 to receive new data and new data address(es).

Wie oben erwähnt ist, kann der Fehlererkennungsblock 272 zwei oder mehr Bytes von Daten und ihre entsprechenden Fehlererkennungscodes puffern, bevor sie im Carve-Out 250 gespeichert werden. Beispielsweise können die Blöcke 706-714 jeweils für mehrere Datenblöcke durchgeführt werden (z. B. ausgewählt in Block 704). Als nicht einschränkendes Beispiel kann der Fehlererkennungsblock 272 den Block 706 für zwei oder mehr Datenbytes durchführen, bevor er die erste Schreibanweisung in Block 708 zusammen mit den Datenbytes und den entsprechenden Datenadressen an das Carve-Out 250 sendet. Beispielsweise kann der Fehlererkennungsblock 272 die Datenbytes zusammen mit einer ersten Datenadresse an den ersten Unterabschnitt 252 senden. Der erste Unterabschnitt 252 kann die Datenbytes in aufeinanderfolgende Speicheradressen schreiben, beginnend mit der ersten Datenadresse. Anschließend kann der Fehlererkennungsblock 272 in Block 710 Codeadressen für die zwei oder mehr in Block 706 ermittelten Fehlererkennungscodes bestimmen. In Block 712 führt der Fehlererkennungsblock 272 eine Verzögerung zwischen dem Schreiben der Datenbytes und dem Schreiben der Fehlererkennungscodes in den Carve-Out 250 ein. Anschließend leitet der Fehlererkennungsblock 272 in Block 714 die zweite Schreibanweisung, die die Fehlererkennungscodes und die Codeadressen einschließt, an den zweiten Unterabschnitt 254 weiter. Der zweite Unterabschnitt 254 schreibt die Fehlererkennungscodes in die Codeadressen. Je nach Implementierungsdetails kann die zweite Schreibanweisung nur eine erste Codeadresse aufweisen, und der zweite Unterabschnitt 254 kann die Fehlererkennungscodes in aufeinanderfolgende Speicheradressen schreiben, beginnend mit der ersten Codeadresse.As noted above, error detection block 272 may buffer two or more bytes of data and their corresponding error detection codes before being stored in carve-out 250. For example, blocks 706-714 may each be performed for multiple blocks of data (e.g., selected in block 704). As a non-limiting example, error detection block 272 may perform block 706 on two or more bytes of data before sending the first write instruction to carve-out 250 in block 708 along with the data bytes and the corresponding data addresses. For example, the error detection block 272 may send the data bytes to the first subsection 252 along with a first data address. The first subsection 252 may write the data bytes to successive memory addresses starting with the first data address. Subsequently, in block 710, the error detection block 272 may determine code addresses for the two or more error detection codes determined in block 706. In block 712, the error detection block 272 introduces a delay between writing the data bytes and writing the error detection codes to the carve-out 250. Then, in block 714, the error detection block 272 forwards the second write instruction, which includes the error detection codes and the code addresses, to the second subsection 254. The second subsection 254 writes the error detection codes into the code addresses. Depending on the implementation details, the second write instruction may have only a first code address, and the second subsection 254 may write the error detection codes to successive memory addresses starting with the first code address.

8 zeigt ein Beispiel für den Fehlererkennungsblock 272, der das Verfahren 700 durchführt (siehe 7). Die SI 110 kann einen oder mehrere Initiatoren 800 aufweisen, wie z. B. den Prozessor 140, die DMA-Engine 402 und dergleichen, die jeweils innerhalb des SI-Bereichs arbeiten. In 8 weist der/die Initiator(en) 800 einen Initiator 802 auf (z. B. den Prozessor 140). Der Initiator 802 (z. B. der Prozessor 140) kann Daten mit einer vorgegebenen Größe (z. B. 16 Byte) in den Carve-Out 250 schreiben. In dem in 8 dargestellten Beispiel sendet der Initiator 802 16 Byte Daten und eine erste Datenadresse an den Fehlererkennungsblock 272. Die Daten werden in 8 durch ein Array von 128 Bits mit der Bezeichnung „wdata_in[127:0]“ gespeichert oder dargestellt, und die erste Datenadresse wird in 8 durch ein Array von 40 Bits mit der Bezeichnung „Address_0[39:0]“ gespeichert oder dargestellt. Je nach Implementierungsdetails können die Daten jedoch auch eine andere Größe haben, wobei 128 Bits als nicht einschränkendes Beispiel angegeben sind. In ähnlicher Weise kann die erste Datenadresse andere Größen haben; als nicht einschränkendes Beispiel werden 40 Bits angegeben. Das erste Byte der Daten kann bei der ersten Datenadresse gespeichert werden, dann kann eine nächste Datenadresse für ein zweites Byte der Daten identifiziert werden, indem ein Byte zur ersten Datenadresse hinzuaddiert wird, und so weiter. 8 zeigt, wie der Initiator 802 eine erste Schreibanweisung 804 über eine Sicherheitsinselverbindung 808 in einem Signal 806 an den Fehlererkennungsblock 272 sendet. Wie oben erwähnt ist, weist die erste Schreibanweisung 804 die Daten und die erste Datenadresse auf. Die Sicherheitsinselverbindung 808 kann als Bus oder dergleichen implementiert werden. 8th shows an example of the error detection block 272 that carries out the method 700 (see 7 ). The SI 110 may have one or more initiators 800, such as. B. the processor 140, the DMA engine 402 and the like, each operating within the SI range. In 8th the initiator(s) 800 includes an initiator 802 (e.g., processor 140). The initiator 802 (e.g., processor 140) may write data of a predetermined size (e.g., 16 bytes) to the carve-out 250. In the in 8th In the example shown, the initiator 802 sends 16 bytes of data and a first data address to the error detection block 272. The data is in 8th stored or represented by an array of 128 bits called "wdata_in[127:0]", and the first data address is in 8th stored or represented by an array of 40 bits called “Address_0[39:0]”. However, depending on the implementation details, the data may be of a different size, with 128 bits given as a non-limiting example. Similarly, the first data address can have other sizes; As a non-limiting example, 40 bits are given. The first byte of data can be stored at the first data address, then a next data address can be identified for a second byte of data by adding a byte to the first data address, and so on. 8th shows how the initiator 802 sends a first write instruction 804 over a security island connection 808 in a signal 806 to the error detection block 272. As mentioned above, the first write instruction 804 includes the data and the first data address. The security island connection 808 can be implemented as a bus or the like.

Die Sicherheitsinselverbindung 808 liefert die erste Schreibanweisung 804 an den Fehlererkennungsblock 272 (z.B. Block 702 von 7). In der dargestellten Ausführungsform liefert die Sicherheitsinselverbindung 808 die erste Schreibanweisung 804 in Signalen 810-0 bis 810-15, die jeweils eines der Datenbytes und die erste Datenadresse aufweisen. In dieser Ausführungsform erzeugt der Fehlererkennungsblock 272 einen Fehlererkennungscode für jedes Byte der Daten, und der erzeugte Fehlererkennungscode ist ein CRC-Code. Der Fehlererkennungsblock 272 kann mit der Verarbeitung der Bytes beginnen, wenn sie in den Signalen 810-0 bis 810-15 (z.B. Block 704 von 7) empfangen werden.The safety island connection 808 provides the first write instruction 804 to the error detection block 272 (eg, block 702 of 7 ). In the illustrated embodiment, the security island connection 808 provides the first write instruction 804 in signals 810-0 through 810-15, each of which includes one of the data bytes and the first data address. In this embodiment, the error detection block 272 generates an error detection code for each byte of the data, and the error detection code generated is a CRC code. Error detection block 272 may begin processing the bytes as they appear in signals 810-0 through 810-15 (e.g., block 704 of 7 ) are received.

Als nächstes bestimmt der Codeerzeugungs-Unterblock 273 einen Fehlererkennungscode für jedes Byte der Daten (z. B. Block 706 von 7). In 8 sind die Signale, die die Fehlererkennungscodes tragen, und ein Signal 838, das die Antworten des Carve-Out 250 in Bezug auf die Fehlererkennungscodes trägt, durch Pfeile mit gestrichelten Linien dargestellt. Der Codeerzeugungs-Unterblock 273 gibt also die Datenbytes in den Signalen 812-0 bis 812-15 und die entsprechenden Fehlererkennungscodes in den Signalen 814-0 bis 814-15 aus. Die (Daten-) Signale 812-0 bis 812-15 werden zur Speicherung zu dem ersten Unterabschnitt 252 geleitet, und die (Code-) Signale 814-0 bis 814-15 werden zur Speicherung zu dem zweiten Unterabschnitt 254 geleitet.Next, code generation subblock 273 determines an error detection code for each byte of the data (e.g., block 706 of 7 ). In 8th are the signals that enable error detection codes, and a signal 838 carrying the responses of the carve-out 250 with respect to the error detection codes, shown by dashed line arrows. Thus, code generation subblock 273 outputs the data bytes in signals 812-0 to 812-15 and the corresponding error detection codes in signals 814-0 to 814-15. The (data) signals 812-0 to 812-15 are passed to the first subsection 252 for storage, and the (code) signals 814-0 to 814-15 are passed to the second subsection 254 for storage.

Der Fehlererkennungsblock 272 sendet die Daten und die erste Datenadresse (z.B. in den Signalen 812-0 bis 812-15) über die Schnittstelle 200A des flüchtigen Speichers (siehe 2) zu einem ersten Zeitpunkt (z.B. in 8 als „Zeit=TO“ bezeichnet) an den ersten Unterabschnitt 252 des Carve-Out 250. Mit anderen Worten: Der Fehlererkennungsblock 272 sendet die erste Schreibanweisung an den ersten Unterabschnitt 252 des Carve-Out 250 (z. B. Block 708 von 7). Die Schnittstelle 200A des flüchtigen Speichers kommuniziert die erste Schreibanweisung an den Carve-Out 250 über ein Daten-Backbone- und Speicher-Subsystem 826 des Fahrzeug-SoC 104 (siehe 1, 2 und 4). In 8 wird die erste Schreibanweisung durch den Fehlererkennungsblock 272 in einem Signal 824 an den ersten Unterabschnitt 252 gesendet.The error detection block 272 sends the data and the first data address (eg, in signals 812-0 to 812-15) over the volatile memory interface 200A (see 2 ) at a first point in time (e.g. in 8th referred to as “Time=TO”) to the first subsection 252 of the carve-out 250. In other words, the error detection block 272 sends the first write instruction to the first subsection 252 of the carve-out 250 (e.g., block 708 of 7 ). The volatile memory interface 200A communicates the first write instruction to the carve-out 250 via a data backbone and storage subsystem 826 of the vehicle SoC 104 (see 1 , 2 and 4 ). In 8th the first write instruction is sent by the error detection block 272 in a signal 824 to the first subsection 252.

Der erste Unterabschnitt 252 schreibt die Daten in den Speicher, indem er das erste Byte (in 8 als „Data0“ dargestellt) an der ersten Datenadresse (in 8 als „Address_0“ dargestellt) speichert und die nachfolgenden Bytes an die der ersten Datenadresse nachfolgenden Datenadressen schreibt. Dieser Schreibvorgang erfolgt zum ersten Mal, was in 8 als „Zeit=TO“ dargestellt ist. Dann sendet der erste Unterabschnitt 252 ein Antwortsignal 828 an den Initiator 802, das bestätigt, dass die Daten gespeichert worden sind. Das Antwortsignal 828 wird von dem ersten Unterabschnitt 252 an das Daten-Backbone- und Speicher-Subsystem 826 gesendet, das das Antwortsignal 828 an die Schnittstelle 200A des flüchtigen Speichers weiterleitet (siehe 2). Wenn die Schnittstelle 200A des flüchtigen Speichers entsperrt ist, leitet die Schnittstelle 200A des flüchtigen Speichers das Antwortsignal 828 an einen ersten (Daten-) Puffer 820 weiter.The first subsection 252 writes the data into memory by writing the first byte (in 8th shown as “Data0”) at the first data address (in 8th shown as “Address_0”) and writes the subsequent bytes to the data addresses following the first data address. This writing process occurs for the first time, which is in 8th is shown as “Time=TO”. Then, the first subsection 252 sends a response signal 828 to the initiator 802 confirming that the data has been saved. The response signal 828 is sent from the first subsection 252 to the data backbone and storage subsystem 826, which forwards the response signal 828 to the volatile memory interface 200A (see 2 ). When the volatile memory interface 200A is unlocked, the volatile memory interface 200A forwards the response signal 828 to a first (data) buffer 820.

Der erste (Daten-) Puffer 820 ordnet die im Antwortsignal 828 von dem Carve-Out 250 empfangenen „Datenschreibabschlussantworten“ neu. Beispielsweise kann der Fehlererkennungsblock 272 ein Paar von Schreibanweisungen A und B (z. B. in der ersten Schreibanweisung, die in Block 708 von 7 gesendet wird) an den Carve-Out 250 senden, wobei die Schreibanweisung B von dem Fehlererkennungsblock 272 nach der Schreibanweisung A gesendet wird. Nachdem der Carve-Out 250 die in den Schreibanweisungen A und B enthaltenen Daten geschrieben hat, sendet der Carve-Out 250 eine erste und eine zweite Datenschreibabschlussantwort an den Fehlererkennungsblock 272. Die für die Schreibanweisung B empfangene zweite Datenschreibabschlussantwort kann jedoch vor der ersten Datenschreibabschlussantwort für die Schreibanweisung A an dem Fehlererkennungsblock 272 ankommen. In diesem Fall speichert der erste (Daten-) Puffer 820 die zweite Datenschreibabschlussantwort, wartet auf die erste Datenschreibabschlussantwort, sendet die erste Datenschreibabschlussantwort, sobald sie ankommt, und sendet die zweite Datenschreibabschlussantwort nach der ersten Datenschreibabschlussantwort. Somit platziert der erste (Daten-)Puffer 820 die Datenschreibabschlussantworten in einer erwarteten Reihenfolge im Antwortsignal 828.The first (data) buffer 820 reorders the “data write completion responses” received in the response signal 828 from the carve-out 250. For example, error detection block 272 may include a pair of write instructions A and B (e.g., in the first write instruction specified in block 708 of 7 is sent) to the carve-out 250, with the write instruction B being sent by the error detection block 272 after the write instruction A. After the carve-out 250 writes the data contained in the write instructions A and B, the carve-out 250 sends a first and a second data write completion response to the error detection block 272. However, the second data write completion response received for the write instruction B may occur before the first data write completion response for the write instruction A arrives at the error detection block 272. In this case, the first (data) buffer 820 stores the second data write completion response, waits for the first data write completion response, sends the first data write completion response as it arrives, and sends the second data write completion response after the first data write completion response. Thus, the first (data) buffer 820 places the data write completion responses in an expected order in the response signal 828.

Der erste (Daten-) Puffer 820 leitet das Antwortsignal 828 an die Sicherheitsinselverbindung 808 weiter, die das Antwortsignal 828 an den Initiator 802 weiterleitet. Zu diesem Zeitpunkt wurden in diesem Beispiel die Daten (z. B. 16 Byte) in einem ersten einzelnen Schreibvorgang in den ersten Unterabschnitt 252 geschrieben.The first (data) buffer 820 forwards the response signal 828 to the security island connection 808, which forwards the response signal 828 to the initiator 802. At this point, in this example, the data (e.g., 16 bytes) has been written to the first subsection 252 in a first single write operation.

Der Fehlererkennungsblock 272 bestimmt auch eine erste Codeadresse auf der Grundlage der ersten Datenadresse (z. B. Block 710 von 7). In 8 wird die erste Codeadresse durch Addition von 16 Megabyte („MB“) zu der ersten Datenadresse berechnet. Je nach den Einzelheiten der Implementierung kann der Offset jedoch auch andere Größen haben, und 16 MB wird nur als Beispiel angegeben. Darüber hinaus kann der Speicherort der ersten Codeadresse durch andere Methoden und/oder Berechnungen bestimmt werden.The error detection block 272 also determines a first code address based on the first data address (e.g., block 710 of 7 ). In 8th the first code address is calculated by adding 16 megabytes (“MB”) to the first data address. However, depending on the implementation details, the offset may have other sizes, and 16 MB is given as an example only. Additionally, the storage location of the first code address may be determined by other methods and/or calculations.

Der Fehlererkennungsblock 272 wartet (z. B. Block 712 von 7) bis zum zweiten Zeitpunkt (z. B. in 8 als „Zeit=T1“ bezeichnet). Der erste und der zweite Zeitpunkt sind unterschiedlich. Zum zweiten Zeitpunkt sendet der Fehlererkennungsblock 272 die Fehlererkennungscodes und die erste Codeadresse über die Schnittstelle 200A des flüchtigen Speichers an den zweiten Unterabschnitt 254 des Carve-Out 250 (siehe 2). Mit anderen Worten, der Fehlererkennungsblock 272 sendet die zweite Schreibanweisung an den zweiten Unterabschnitt 254 des Carve-Out 250 (z. B. Block 714 von 7). Die Schnittstelle des flüchtigen Speichers 200A kommuniziert die zweite Schreibanweisung an den Carve-Out 250 über das Daten-Backbone- und Speicher-Subsystem 826 des Fahrzeug-SoC 104 (siehe 1, 2 und 4). In 8 wird die zweite Schreibanweisung durch den Fehlererkennungsblock 272 in einem Signal 834 an den zweiten Unterabschnitt 254 gesendet.The error detection block 272 waits (e.g. block 712 of 7 ) until the second point in time (e.g. in 8th referred to as “Time=T1”). The first and second points in time are different. At the second time, the error detection block 272 sends the error detection codes and the first code address via the volatile memory interface 200A to the second subsection 254 of the carve-out 250 (see 2 ). In other words, the error detection block 272 sends the second write instruction to the second subsection 254 of the carve-out 250 (e.g., block 714 of 7 ). The volatile memory interface 200A communicates the second write instruction to the carve-out 250 via the data backbone and storage subsystem 826 of the vehicle SoC 104 (see 1 , 2 and 4 ). In 8th the second write instruction is sent by the error detection block 272 in a signal 834 to the second subsection 254.

Der zweite Unterabschnitt 254 schreibt die Fehlererkennungscodes in den Speicher, indem er den ersten Fehlererkennungscode (in 8 als „CRC0“ dargestellt) bei der ersten Codeadresse (in 8 als „Adress_1“ dargestellt) speichert und die nachfolgenden Fehlererkennungscodes an die der ersten Codeadresse nachfolgenden Codeadressen schreibt. Dann sendet der zweite Unterabschnitt 254 ein Antwortsignal 838 an den Initiator 802, das bestätigt, dass die Fehlererkennungscodes gespeichert wurden. In der in 8 dargestellten Ausführungsform wird das Antwortsignal 838 von dem zweiten Unterabschnitt 254 an das Daten-Backbone- und Speicher-Subsystem 826 gesendet, das das Antwortsignal 838 an die Schnittstelle 200A des flüchtigen Speichers weiterleitet (siehe 2). Wenn die Schnittstelle 200A des flüchtigen Speichers entsperrt ist, leitet die Schnittstelle 200A des flüchtigen Speichers das Antwortsignal 838 an einen zweiten (Code-) Puffer 822 weiter. Der zweite (Code-) Puffer 822 ordnet die im Antwortsignal 838 von dem Carve-out 250 empfangenen „Code-Schreibabschlussantworten“ neu. Beispielsweise ermittelt der Fehlererkennungsblock 272 erste und zweite Fehlererkennungscodes für die Daten, die in den Schreibanweisungen A bzw. B enthalten sind, und sendet die ersten und zweiten Fehlererkennungscodes an den Carve-Out 250 (z. B. in der zweiten Schreibanweisung). Nachdem der Carve-Out 250 den ersten und den zweiten Fehlererkennungscode in den Speicher geschrieben hat, sendet er die erste bzw. die zweite Code-Schreibabschlussantwort an den zweiten (Code-) Puffer 822. Die für den zweiten Fehlererkennungscode empfangene zweite Code-Schreibabschlussantwort kann jedoch vor der ersten Code-Schreibabschlussantwort für den ersten Fehlererkennungscode an dem Fehlererkennungsblock 272 eintreffen. In diesem Fall speichert der zweite (Code-) Puffer 822 die zweite Code-Schreibabschlussantwort, wartet auf die erste Code-Schreibabschlussantwort, sendet die erste Code-Schreibabschlussantwort, sobald sie eintrifft, und sendet die zweite Code-Schreibabschlussantwort nach der ersten Code-Schreibabschlussantwort.The second subsection 254 writes the error detection codes into memory by writing the first error detection code (in 8th shown as “CRC0”) at the first code address (in 8th shown as “Address_1”) and writes the subsequent error detection codes to the code addresses following the first code address. Then the second subsection 254 sends a response signal 838 to the initiator 802 confirming that the error detection codes have been stored. In the in 8th In the illustrated embodiment, the response signal 838 is sent from the second subsection 254 to the data backbone and storage subsystem 826, which forwards the response signal 838 to the volatile memory interface 200A (see 2 ). When the volatile memory interface 200A is unlocked, the volatile memory interface 200A forwards the response signal 838 to a second (code) buffer 822. The second (code) buffer 822 reorders the “code write completion responses” received in the response signal 838 from the carve-out 250. For example, error detection block 272 determines first and second error detection codes for the data contained in write instructions A and B, respectively, and sends the first and second error detection codes to carve-out 250 (e.g., in the second write instruction). After the carve-out 250 writes the first and second error detection codes into memory, it sends the first and second code write completion responses, respectively, to the second (code) buffer 822. The second code write completion response received for the second error detection code can however, arrive at the error detection block 272 before the first code write completion response for the first error detection code. In this case, the second (code) buffer 822 stores the second code write completion response, waits for the first code write completion response, sends the first code write completion response as it arrives, and sends the second code write completion response after the first code write completion response .

Der zweite (Code-) Puffer 822 kann das Antwortsignal 838 verwerfen. Alternativ kann der zweite (Code-) Puffer 822 das Antwortsignal 838 an die Sicherheitsinselverbindung 808 weiterleiten kann, die das Antwortsignal 838 an den Initiator 802 weiterleiten kann. Zu diesem Zeitpunkt wurden in diesem Beispiel die Fehlererkennungscodes (z. B. 16 Byte) in einer zweiten einzelnen Schreiboperation in den zweiten Unterabschnitt 254 geschrieben.The second (code) buffer 822 can discard the response signal 838. Alternatively, the second (code) buffer 822 may forward the response signal 838 to the security island connection 808, which may forward the response signal 838 to the initiator 802. At this point, in this example, the error detection codes (e.g., 16 bytes) have been written to the second subsection 254 in a second single write operation.

Die Schnittstelle 200A des flüchtigen Speichers kann zwei parallele und optional dedizierte Schnittstellen aufweisen, die den Fehlererkennungsblock 272 mit dem flüchtigen Speicher 126 verbinden. Die Daten können über die erste Schnittstelle an die erste Datenadresse gesendet werden und der/die Fehlererkennungscode(s) kann/können über die zweite Schnittstelle an die erste Codeadresse gesendet werden. Bei solchen Ausführungsformen kann der Fehlererkennungsblock 272 die erste Schreibanweisung, die die Daten und die erste Datenadresse (z.B. im Signal 824) einschließt, über die erste Schnittstelle an den ersten Unterabschnitt 252 senden, während der Fehlererkennungsblock 272 gleichzeitig die zweite Schreibanweisung, die den/die Fehlererkennungscode(s) und die erste Codeadresse (z.B. in dem Signal 834) einschließt, über die zweite Schnittstelle an den zweiten Unterabschnitt 254 sendet. Darüber hinaus können das (Daten-) Antwortsignal 828 und das (Code-) Antwortsignal 838 gleichzeitig über die erste bzw. zweite Schnittstelle an den ersten und zweiten Puffer 820 bzw. 822 übertragen werden.The volatile memory interface 200A may include two parallel and optionally dedicated interfaces that connect the error detection block 272 to the volatile memory 126. The data may be sent to the first data address via the first interface and the error detection code(s) may be sent to the first code address via the second interface. In such embodiments, the error detection block 272 may send the first write instruction, including the data and the first data address (e.g., in signal 824), to the first subsection 252 over the first interface, while the error detection block 272 simultaneously sends the second write instruction, which includes the Error detection code(s) and the first code address (e.g. in signal 834) are sent via the second interface to the second subsection 254. In addition, the (data) response signal 828 and the (code) response signal 838 may be simultaneously transmitted to the first and second buffers 820 and 822 via the first and second interfaces, respectively.

Wenn der Initiator 802 (z. B. der Prozessor 140) der SI 110 die Daten aus dem Carve-Out 250 lesen möchte, empfängt die SI 110 sowohl die Daten als auch den/die Fehlererkennungscode(s) aus dem Carve-Out 250. Die SI 110 führt eine Verzögerung zwischen dem Lesen der Daten von der/den Datenadresse(n) und dem Lesen des/der Fehlererkennungscodes von der/den Codeadresse(n) ein. Diese Verzögerung verringert die Wahrscheinlichkeit, dass ein Ereignis, das sich negativ auf die Daten auswirkt, sich auch negativ auf den Fehlererkennungscode auswirkt. Die SI 110 leitet die gelesenen Daten durch den Fehlererkennungsblock 272, der einen Prüfcode für die gelesenen Daten bestimmt und den Fehlererkennungscode mit dem Prüfcode vergleicht. Dieser Vergleich kann durch die nachstehende Gleichung 3 dargestellt werden: CRC_gen (  angeforderte Adresse , abgerufene Daten )   = = crc_in Byte x ( CRC-Adresse )

Figure DE112022001192T5_0003
When the initiator 802 (e.g., processor 140) of the SI 110 wants to read the data from the carve-out 250, the SI 110 receives both the data and the error detection code(s) from the carve-out 250. The SI 110 introduces a delay between reading the data from the data address(es) and reading the error detection code(s) from the code address(es). This delay reduces the chance that an event that negatively impacts the data will also negatively impact the error detection code. The SI 110 passes the read data through the error detection block 272, which determines a check code for the read data and compares the error detection code with the check code. This comparison can be represented by Equation 3 below: CRC_gen ( requested address , retrieved data ) = = crc_in Byte x ( CRC address )
Figure DE112022001192T5_0003

In Gleichung 3 zeigt ein Operator „==“ an, dass ein Ausdruck links von dem Operator „==“ gleich einem Ausdruck rechts von dem Operator „==“ ist. Eine Variable „abgerufene Daten“ steht für mindestens einen Abschnitt (z. B. Byte x) der in Block 906 erhaltenen Daten, eine Variable „angeforderte Adresse“ steht für die Datenadresse dieses Abschnitts der Daten, und eine Variable „CRC-Adresse“ steht für die auf der Grundlage der Datenadresse des Abschnitts (z. B. Byte x) der Daten bestimmte Codeadresse. Eine Funktion „CRC_gen“ verwendet die Werte der Variablen „abgerufene Daten“ und „angeforderte Adresse“ als Eingaben, und die Funktion „CRC_gen“ gibt den Prüfcode für den Abschnitt (z. B. Byte x) aus. Die Funktion „CRC_gen“ kann mit der Funktion „CRC“ der obigen Gleichung 1 identisch sein. Die Ausgabe der Funktion „CRC_gen“ kann zumindest teilweise durch den Codeerzeugungs-Unterblock 273 (siehe 8) berechnet werden, sofern er vorhanden ist. Ein Ausdruck „crc_inByte x(CRC-Adresse)“ stellt den Fehlererkennungscode dar, der aus der für den Abschnitt (z. B. Byte x) anhand seiner Datenadresse ermittelten Codeadresse gewonnen wird. Somit bestimmt die Gleichung 3, ob der Prüfcode gleich dem Fehlererkennungscode ist oder mit diesem übereinstimmt. Der Fehlererkennungsblock 272 kann einen Übereinstimmungsfehler erzeugen, wenn der Prüfcode nicht mit dem Fehlererkennungscode übereinstimmt. Der Fehlererkennungsblock 272 kann einen Übereinstimmungsfehler an den Initiator 802 und den SI-Fehleraggregator 142 senden, so dass der Übereinstimmungsfehler durch die Sicherheitssoftware gelöscht werden kann, die durch die Anweisungen 149 implementiert und durch den Prozessor 140 ausgeführt wird.In Equation 3, an operator “==” indicates that an expression to the left of the operator “==” is equal to an expression to the right of the operator “==”. A "retrieved data" variable represents at least a portion (e.g., byte x) of the data received in block 906, a "requested address" variable represents the data address of that portion of the data, and a "CRC address" variable represents for the code address determined based on the data address of the portion (e.g. byte x) of the data. A CRC_gen function takes the values of the retrieved data and requested address variables as inputs, and the CRC_gen function outputs the verification code for the section (e.g., byte x). The “CRC_gen” function can be identical to the “CRC” function of Equation 1 above. The output of the “CRC_gen” function can be at least partially controlled by the code generation subblock 273 (see 8th ) be calculated if it exists. An expression “crc_in byte x (CRC address)” represents the error detection code obtained from the code address determined for the section (e.g. byte x) based on its data address. Thus, Equation 3 determines whether the check code is equal to or matches the error detection code. The error detection block 272 may generate a match error if the check code does not match the error detection code. The error detection block 272 may send a match error to the initiator 802 and the SI error aggregator 142 so that the match error can be cleared by the security software implemented by the instructions 149 and executed by the processor 140.

Wie es hier beschrieben ist und mit Bezug zu 9 weist jeder Block eines Verfahrens 900 einen Schritt auf, der mit einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann. Zum Beispiel kann das Verfahren 900 von der Hardware des Fehlererkennungsblocks 272 durchgeführt werden (siehe 2, 8 und 10). Als weiteres nicht einschränkendes Beispiel können eine oder mehrere Funktionen von einem Prozessor (z. B. dem in den 1, 2 und 4 dargestellten Prozessor 140) ausgeführt werden, der Anweisungen (z. B. die in den 1, 2 und 4 dargestellten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 dargestellten flüchtigen Speicher 146) gespeichert sind. Zumindest Abschnitte des Verfahrens 900 können als computerverwendbare Anweisungen, die auf Computerspeichermedien gespeichert sind, ausgestaltet sein. Das Verfahren 900 kann durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige Möglichkeiten zu nennen. Darüber hinaus wird das Verfahren 900 beispielhaft für die Fahrzeug-Plattform 100 von 1 beschrieben. Das Verfahren 900 kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme.As described herein and with reference to 9 Each block of a method 900 includes a step that can be performed with any combination of hardware, firmware and/or software. For example, method 900 may be performed by the hardware of error detection block 272 (see 2 , 8th and 10 ). As another non-limiting example, one or more functions may be provided by a processor (e.g., the one described in Figures 1 and 2). 1 , 2 and 4 processor 140 shown) are executed, the instructions (e.g. those in the 1 , 2 and 4 instructions 149 shown) which are stored in a memory (e.g. that in the 1 , 2 and 4 shown volatile memory 146) are stored. At least portions of method 900 may be embodied as computer-usable instructions stored on computer storage media. The method 900 may be provided through a standalone application, a service, a hosted service (standalone or in combination with another hosted service), or a plug-in for another product, to name just a few possibilities. In addition, the method 900 is exemplary for the vehicle platform 100 of 1 described. However, method 900 may additionally or alternatively be performed by any system or combination of systems, including but not limited to the systems described herein.

9 ist ein Flussdiagramm, das das Verfahren 900 zum Auslesen von Daten aus dem Carve-Out 250 (siehe 2, 8 und 10) gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Zur Vereinfachung der Darstellung wird das Verfahren 900 so beschrieben, als würde es von dem Fehlererkennungsblock 272 (siehe 2, 8 und 10) durchgeführt. Bevor das Verfahren 900 beginnt, leitet der Initiator 802 (siehe 8) eine erste Leseanweisung, die eine oder mehrere Datenadressen aufweist, an den Fehlererkennungsblock 272 weiter. Als nicht einschränkendes Beispiel kann die erste Leseanweisung nur eine erste Datenadresse aufweisen. Wie es in 9 dargestellt ist, empfängt der Fehlererkennungsblock 272 im ersten Block 902 die erste Leseanweisung, die die Datenadresse(n) aufweist, von dem Initiator 802. Im Block 904 leitet der Fehlererkennungsblock 272 die erste Leseanweisung an den ersten Unterabschnitt 252 weiter, was die unter der/den Datenadresse(n) gespeicherten Daten anfordert. Wenn die erste Leseanweisung nur die erste Datenadresse aufweist, kann der erste Unterabschnitt 252 eine vorbestimmte Datenmenge (z. B. 16 Byte) von aufeinanderfolgenden Speicheradressen, beginnend mit der ersten Datenadresse, lesen. In Block 906 empfängt der Fehlererkennungsblock 272 die an der (den) Datenadresse(n) gespeicherten Daten von dem ersten Unterabschnitt 252. 9 is a flowchart showing the method 900 for reading data from the carve-out 250 (see 2 , 8th and 10 ) according to some embodiments of the present disclosure. For ease of illustration, method 900 is described as if it were from error detection block 272 (see 2 , 8th and 10 ) carried out. Before the process 900 begins, the initiator 802 (see 8th ) a first read instruction that has one or more data addresses to the error detection block 272. As a non-limiting example, the first read instruction may only have a first data address. Like it in 9 As shown, in the first block 902, the error detection block 272 receives the first read instruction containing the data address(es) from the initiator 802. In block 904, the error detection block 272 forwards the first read instruction to the first subsection 252, which is the one under the requests data stored at the data address(es). If the first read instruction has only the first data address, the first subsection 252 may read a predetermined amount of data (e.g., 16 bytes) from consecutive memory addresses starting with the first data address. In block 906, the error detection block 272 receives the data stored at the data address(es) from the first subsection 252.

Dann, in Block 908, bestimmt der Fehlererkennungsblock 272 die Codeadresse(n) für den/die Fehlererkennungscode(s), der/die den Daten entspricht/entsprechen (z.B. unter Verwendung der obigen Gleichung 2). Als nicht einschränkendes Beispiel kann (können) die Codeadresse(n) zumindest teilweise auf der Grundlage der Datenadresse(n) bestimmt werden. Beispielsweise kann gemäß der obigen Gleichung 2 jede der Codeadresse(n) durch Addition des Offsets (des Wertes der Variablen „fixed_offset“) zu einer entsprechenden Datenadresse (dem Wert der Variablen „write_address“) berechnet werden. Je nach den Einzelheiten der Implementierung kann der Fehlererkennungsblock 272 nur eine erste Codeadresse auf der Grundlage der ersten Datenadresse ermitteln. Dann wartet der Fehlererkennungsblock 272 in Block 910 (z. B. einige Taktzyklen), um den/die Fehlererkennungscode(s) anzufordern, der/die an der/den in Block 908 bestimmten Codeadresse(n) gespeichert ist/sind. Daher führt der Fehlererkennungsblock 272 in Block 910 eine Verzögerung zwischen dem Lesen der Daten und dem Lesen des/der Fehlererkennungscodes von der/den Codeadresse(n) ein. Der Fehlererkennungsblock 272 kann einen Leseverzögerungs-Timer (nicht dargestellt) aufweisen, der verwendet wird, um zu bestimmen, wie lange der Fehlererkennungsblock 272 in Block 910 wartet. So kann der Fehlererkennungsblock 272 eine sechste vorbestimmte Zeitspanne warten, bevor er den/die Fehlererkennungscode(s) von dem zweiten Unterabschnitt 254 anfordert.Then, in block 908, the error detection block 272 determines the code address(es) for the error detection code(s) corresponding to the data (e.g., using Equation 2 above). As a non-limiting example, the code address(es) may be determined based at least in part on the data address(es). For example, according to Equation 2 above, each of the code address(es) can be calculated by adding the offset (the value of the fixed_offset variable) to a corresponding data address (the value of the write_address variable). Depending on the details of the implementation, the error detection block 272 may only determine a first code address based on the first data address. Then, in block 910, the error detection block 272 waits (e.g., a few clock cycles) to request the error detection code(s) stored at the code address(es) determined in block 908. Therefore, in block 910, the error detection block 272 introduces a delay between reading the data and reading the error detection code(s) from the code address(es). The error detection block 272 may include a read delay timer (not shown) that is used to determine how long the error detection block 272 waits in block 910. Thus, the error detection block 272 may wait a sixth predetermined period of time before requesting the error detection code(s) from the second subsection 254.

Nach dem Warten sendet der Fehlererkennungsblock 272 im nächsten Block 912 eine zweite Leseanweisung an den zweiten Unterabschnitt 254, der die in Block 908 ermittelte(n) Codeadresse(n) aufweist und den/die an dieser/n Codeadresse(n) gespeicherten Fehlererkennungscode(s) anfordert. Um die Daten zu lesen, greift der Fehlererkennungsblock 272 also zweimal auf den Carve-Out 250 zu, jeweils einmal in dem Block 904 und 912. Wenn die zweite Leseanweisung nur die erste Codeadresse aufweist, kann der zweite Unterabschnitt 254 eine vorbestimmte Anzahl von Fehlererkennungscodes (z. B. 16 Bytes) aus aufeinanderfolgenden Speicheradressen, beginnend mit der ersten Codeadresse, lesen. In Block 914 empfängt der Fehlererkennungsblock 272 den/die an der/den Codeadresse(n) gespeicherten Fehlererkennungscode(s) von dem zweiten Unterabschnitt 254. In Block 916 bestimmt der Fehlererkennungsblock 272 einen Prüfcode für jeden der in Block 914 erhaltenen Fehlererkennungscodes (z. B. unter Verwendung der obigen Gleichung 1).After waiting, in the next block 912, the error detection block 272 sends a second read instruction to the second subsection 254, which has the code address(es) determined in block 908 and the error detection code(s) stored at that code address(es). ) requests. Error detection is used to read the data block 272 accesses the carve-out 250 twice, once each in blocks 904 and 912. If the second read instruction only has the first code address, the second subsection 254 can output a predetermined number of error detection codes (e.g. 16 bytes). consecutive memory addresses, starting with the first code address. In block 914, the error detection block 272 receives the error detection code(s) stored at the code address(es) from the second subsection 254. In block 916, the error detection block 272 determines a check code for each of the error detection codes obtained in block 914 (e.g . using Equation 1 above).

Im Entscheidungsblock 918 bestimmt der Fehlererkennungsblock 272 für jeden der Fehlererkennungscodes, ob der Fehlererkennungscode mit dem Prüfcode übereinstimmt, der mit dem Fehlererkennungscode korrespondiert (z. B. unter Verwendung der obigen Gleichung 3). Die Entscheidung in dem Entscheidungsblock 918 lautet „JA“, wenn der Fehlererkennungscode mit dem entsprechenden Prüfcode übereinstimmt. Andernfalls ist die Entscheidung in dem Entscheidungsblock 918 „NEIN“. Wenn die Entscheidung in dem Entscheidungsblock 918 „JA“ lautet, leitet der Fehlererkennungsblock 272 im Block 920 die mit dem Fehlererkennungscode korrespondierende Daten an den Initiator 802 weiter (siehe 8). Wenn die Entscheidung in dem Entscheidungsblock 918 „NEIN“ lautet, erzeugt der Fehlererkennungsblock 272 in Block 922 einen Übereinstimmungsfehler und sendet ihn an den Initiator 802 und den SI-Fehleraggregator 142 (siehe 1, 2 und 4), so dass der Übereinstimmungsfehler durch die Sicherheitssoftware gelöscht werden kann, die durch die Anweisungen 149 implementiert und durch den Prozessor 140 ausgeführt wird. Optional kann der Fehlererkennungsblock 272 in Block 922 versuchen, die Nichtübereinstimmung zu korrigieren, wenn der Fehlererkennungscode (z. B. als ECC implementiert) Informationen (z. B. Bits) aufweist, die zur Wiederherstellung der Daten verwendet werden können. Wenn der Fehlererkennungsblock 272 in der Lage ist, den Fehler zu korrigieren, kann der Fehlererkennungsblock 272 die Erzeugung des Übereinstimmungsfehlers in Block 922 auslassen. Nach Block 920 geht der Fehlererkennungsblock 272 zu Block 920 über und leitet die Daten an den Initiator 802 weiter. Dann endet das Verfahren 900.In decision block 918, the error detection block 272 determines, for each of the error detection codes, whether the error detection code matches the check code that corresponds to the error detection code (e.g., using Equation 3 above). The decision in decision block 918 is “YES” if the error detection code matches the corresponding check code. Otherwise, the decision in decision block 918 is “NO”. If the decision in the decision block 918 is “YES”, the error detection block 272 forwards the data corresponding to the error detection code to the initiator 802 in block 920 (see 8th ). If the decision in decision block 918 is "NO", error detection block 272 generates a match error in block 922 and sends it to initiator 802 and SI error aggregator 142 (see 1 , 2 and 4 ), so that the match error can be cleared by the security software implemented by the instructions 149 and executed by the processor 140. Optionally, in block 922, the error detection block 272 may attempt to correct the mismatch if the error detection code (e.g., implemented as ECC) has information (e.g., bits) that can be used to recover the data. If the error detection block 272 is able to correct the error, the error detection block 272 may omit generating the match error in block 922. After block 920, the error detection block 272 proceeds to block 920 and forwards the data to the initiator 802. Then procedure 900 ends.

Der Fehlererkennungsblock 272 kann zwei oder mehr Bytes von Daten und ihre entsprechenden Fehlererkennungscodes aus dem Carve-Out 250 auf einmal lesen. Beispielsweise können die Blöcke 904-914 jeweils für mehrere Datenblöcke durchgeführt werden. Als nicht einschränkendes Beispiel kann der Fehlererkennungsblock 272 in Block 904 die erste Leseanweisung an den ersten Unterabschnitt 252 senden und zwei oder mehr Datenbytes von einer ersten Datenadresse anfordern. Der erste Unterabschnitt 252 kann die Datenbytes von aufeinanderfolgenden Speicheradressen, beginnend mit der ersten Datenadresse, lesen und die Datenbytes an den Fehlererkennungsblock 272 senden, die der Fehlererkennungsblock 272 in Block 906 empfängt. Anschließend kann der Fehlererkennungsblock 272 in Block 908 die Codeadresse(n) auf der Grundlage der Datenadresse(n) bestimmen. Abhängig von den Implementierungsdetails kann der Fehlererkennungsblock 272 nur eine erste Codeadresse auf der Grundlage der ersten Datenadresse ermitteln. Dann, in Block 910, führt der Fehlererkennungsblock 272 eine Verzögerung zwischen dem Lesen der Datenbytes und dem Lesen der Fehlererkennungscodes aus dem Carve-Out 250 ein. Als nächstes kann der Fehlererkennungsblock 272 die in dem Carve-Out 250 gespeicherten Fehlererkennungscodes für die in Block 906 erhaltenen Datenbytes anfordern. Zum Beispiel kann der Fehlererkennungsblock 272 die erste Codeadresse an den zweiten Unterabschnitt 254 senden. Der zweite Unterabschnitt 254 kann die Fehlererkennungscodes von aufeinanderfolgenden Speicheradressen, beginnend mit der ersten Codeadresse, lesen und die Fehlererkennungscodes an den Fehlererkennungsblock 272 senden, die der Fehlererkennungsblock 272 in Block 914 empfängt. Dann wird das Verfahren 900 mit Block 916 fortgesetzt.The error detection block 272 can read two or more bytes of data and their corresponding error detection codes from the carve-out 250 at once. For example, blocks 904-914 can each be performed for multiple data blocks. As a non-limiting example, in block 904, the error detection block 272 may send the first read instruction to the first subsection 252 and request two or more bytes of data from a first data address. The first subsection 252 may read the data bytes from successive memory addresses starting with the first data address and send the data bytes to the error detection block 272, which the error detection block 272 receives in block 906. Then, in block 908, the error detection block 272 may determine the code address(es) based on the data address(es). Depending on the implementation details, the error detection block 272 may only determine a first code address based on the first data address. Then, in block 910, the error detection block 272 introduces a delay between reading the data bytes and reading the error detection codes from the carve-out 250. Next, the error detection block 272 may request the error detection codes stored in the carve-out 250 for the data bytes received in block 906. For example, the error detection block 272 may send the first code address to the second subsection 254. The second subsection 254 may read the error detection codes from successive memory addresses starting with the first code address and send the error detection codes to the error detection block 272, which the error detection block 272 receives in block 914. Then the method 900 continues with block 916.

10 zeigt ein Beispiel für die Durchführung des Verfahrens 900 durch den Fehlererkennungsblock 272. In diesem Beispiel liest der Prozessor 140 16 Byte Daten aus dem Carve-Out 250, die in dem in 8 dargestellten Beispiel gespeichert werden. In 10 werden die gelesenen Daten in einem Array von 128 Bits mit der Bezeichnung „rdata_in[127:0]“ gespeichert oder dargestellt, und die Daten sind ab der ersten Datenadresse gespeichert, die in einem Array von 40 Bits mit der Bezeichnung „Address_0[39:0]“ gespeichert oder dargestellt ist. 10 zeigt, wie der Initiator 802 (z. B. der Prozessor 140) eine erste Leseanweisung 1004 über die Sicherheitsinselverbindung 808 an den Fehlererkennungsblock 272 sendet. Die Sicherheitsinselverbindung 808 liefert die erste Leseanweisung 1004 an den Fehlererkennungsblock 272 (z. B. Block 902 von 9). 10 shows an example of how the method 900 is performed by the error detection block 272. In this example, the processor 140 reads 16 bytes of data from the carve-out 250 which is in the in 8th shown example can be saved. In 10 the read data is stored or represented in an array of 128 bits called "rdata_in[127:0]", and the data is stored from the first data address, which is in an array of 40 bits called "Address_0[39: 0]” is stored or displayed. 10 shows how the initiator 802 (e.g., the processor 140) sends a first read instruction 1004 to the error detection block 272 over the security island connection 808. The safety island connection 808 provides the first read instruction 1004 to the error detection block 272 (e.g., block 902 of 9 ).

Der Fehlererkennungsblock 272 sendet die erste Datenadresse über die Schnittstelle 200A des flüchtigen Speichers (siehe 2) zu einem dritten Zeitpunkt (z. B. in 10 als „Zeit=T3“ bezeichnet) an den ersten Unterabschnitt 252 des Carve-Out 250. Mit anderen Worten: Der Fehlererkennungsblock 272 leitet die erste Leseanweisung an den ersten Unterabschnitt 252 des Carve-Out 250 weiter (z. B. Block 904 von 9). Die Schnittstelle 200A für den flüchtigen Speicher übermittelt die erste Leseanweisung über das Daten-Backbone und das Speicher-Subsystem 826 des Fahrzeug-SoC 104 an den Carve-Out 250. In 10 wird die erste Leseanweisung durch den Fehlererkennungsblock 272 in einem Signal 1010 an den ersten Unterabschnitt 252 gesendet.The error detection block 272 sends the first data address over the volatile memory interface 200A (see 2 ) at a third time (e.g. in 10 referred to as “Time=T3”) to the first subsection 252 of the carve-out 250. In other words, the error detection block 272 forwards the first read instruction to the first subsection 252 of the carve-out 250 (e.g., block 904 of 9 ). The interface 200A for The volatile memory transmits the first read instruction via the data backbone and memory subsystem 826 of the vehicle SoC 104 to the carve-out 250. In 10 the first read instruction is sent to the first subsection 252 by the error detection block 272 in a signal 1010.

Der erste Unterabschnitt 252 liest die Daten aus dem Speicher, beginnend mit dem ersten Byte („Byte 0“) an der ersten Datenadresse, und liest die nachfolgenden Bytes von Datenadressen, die der ersten Datenadresse nachfolgen. Die SI 110 kann Daten mit einer vorgegebenen Größe (z. B. 16 Byte) aus dem Carve-Out 250 lesen. Anschließend sendet der erste Unterabschnitt 252 ein Antwortsignal 1012 an den Initiator 802, das die gelesenen Daten einschließt. Das Antwortsignal 1012 wird von dem ersten Unterabschnitt 252 an das Daten-Backbone- und Speicher-Subsystem 826 gesendet, das das Antwortsignal 1012 an die Schnittstelle 200A für den flüchtigen Speicher weiterleitet (siehe 2). Wenn die Schnittstelle 200A für den flüchtigen Speicher entsperrt ist, leitet die Schnittstelle 200A für den flüchtigen Speicher das Antwortsignal 1012 an den ersten (Daten-) Puffer 820 weiter (z. B. bei Block 906 von 9). Die gelesenen Daten, die das Antwortsignal 1012 aufweist, zeigen automatisch den Abschluss des Datenlesens an und können daher als Datenleseabschlussantwort bezeichnet werden. Genau wie der erste (Daten-) Puffer 820 mit den Datenschreibabschlussantworten verfährt, kann der erste (Daten-) Puffer 820 die Datenleseabschlussantworten in einer erwarteten Reihenfolge in das Antwortsignal 1012 stellen. Zu diesem Zeitpunkt wurden in diesem Beispiel die Daten (z.B. 16 Bytes) aus dem ersten Unterabschnitt 252 in einer ersten einzelnen Leseoperation gelesen und von dem ersten (Daten-) Puffer 820 in der erwarteten Reihenfolge angeordnet.The first subsection 252 reads the data from memory starting with the first byte (“Byte 0”) at the first data address and reads the subsequent bytes of data addresses following the first data address. The SI 110 can read data with a specified size (e.g. 16 bytes) from the Carve-Out 250. The first subsection 252 then sends a response signal 1012 to the initiator 802, which includes the read data. The response signal 1012 is sent from the first subsection 252 to the data backbone and storage subsystem 826, which forwards the response signal 1012 to the volatile memory interface 200A (see 2 ). When the volatile memory interface 200A is enabled, the volatile memory interface 200A forwards the response signal 1012 to the first (data) buffer 820 (e.g., at block 906 of 9 ). The read data, which includes the response signal 1012, automatically indicates the completion of data reading and can therefore be referred to as a data read completion response. Just as the first (data) buffer 820 handles the data write completion responses, the first (data) buffer 820 can place the data read completion responses into the response signal 1012 in an expected order. At this point, in this example, the data (eg, 16 bytes) has been read from the first subsection 252 in a first single read operation and arranged from the first (data) buffer 820 in the expected order.

Dann bestimmt der Fehlererkennungsblock 272 eine erste Codeadresse („Address_1“) auf der Grundlage der ersten Datenadresse (z.B. bei Block 908 von 9). In 10 wird die erste Codeadresse berechnet, indem (z.B.) 16 Megabyte („MB“) zu der ersten Datenadresse („Address_0“) addiert werden.Then, error detection block 272 determines a first code address (“Address_1”) based on the first data address (eg, at block 908 of 9 ). In 10 the first code address is calculated by (for example) adding 16 megabytes (“MB”) to the first data address (“Address_0”).

Als nächstes wartet der Fehlererkennungsblock 272 (z. B. bei Block 910 von 9) bis zu einem vierten Zeitpunkt (z. B. in 10 als „Zeit=T4“ bezeichnet). Zum vierten Zeitpunkt fordert der Fehlererkennungsblock 272 den/die Fehlererkennungscode(s), der/die an der/den ersten Codeadresse(n) im zweiten Unterabschnitt 254 gespeichert ist/sind, über die Schnittstelle 200A des flüchtigen Speichers an (siehe 2). Mit anderen Worten, der Fehlererkennungsblock 272 sendet die zweite Leseanweisung an den zweiten Unterabschnitt 254 des Carve-Out 250 (z. B. bei Block 912 von 9). Die Schnittstelle 200A für den flüchtigen Speicher übermittelt die zweite Leseanweisung an den Carve-Out 250 über das Daten-Backbone und das Speicher-Subsystem 826 des Fahrzeug-SoC 104. In 10 wird die zweite Leseanweisung durch den Fehlererkennungsblock 272 in einem Signal 1014 an den zweiten Unterabschnitt 254 gesendet.Next, error detection block 272 waits (e.g., at block 910 of 9 ) up to a fourth point in time (e.g. in 10 referred to as “Time=T4”). At the fourth time, the error detection block 272 requests the error detection code(s) stored at the first code address(es) in the second subsection 254 via the volatile memory interface 200A (see 2 ). In other words, the error detection block 272 sends the second read instruction to the second subsection 254 of the carve-out 250 (e.g., at block 912 of 9 ). The volatile memory interface 200A communicates the second read instruction to the carve-out 250 via the data backbone and memory subsystem 826 of the vehicle SoC 104. In 10 the second read instruction is sent by the error detection block 272 in a signal 1014 to the second subsection 254.

Der zweite Unterabschnitt 254 liest die Fehlererkennungscodes aus dem Speicher, indem er den ersten Fehlererkennungscode (für „Byte 0“) an der ersten Codeadresse liest und die nachfolgenden Fehlererkennungscodes von den der ersten Codeadresse nachfolgenden Codeadressen liest. In dem Beispiel der 8 und 10 sind die Fehlererkennungscodes jeweils ein Byte groß. Dann sendet der zweite Unterabschnitt 254 ein Antwortsignal 1016 an den Initiator 802, das den/die aus dem Speicher gelesenen Fehlererkennungscode(s) aufweist. In 10 sind die Signale mit den Fehlererkennungscodes und das Signal 1014 durch Pfeile mit gestrichelten Linien dargestellt. In der in 10 dargestellten Ausführungsform wird das Antwortsignal 1016 von dem zweiten Unterabschnitt 254 an das Daten-Backbone- und Speicher-Subsystem 826 gesendet, das das Antwortsignal 1016 an die Schnittstelle 200A für den flüchtigen Speicher weiterleitet (siehe 2). Wenn die Schnittstelle 200A für den flüchtigen Speicher entsperrt ist, leitet die Schnittstelle 200A für den flüchtigen Speicher das Antwortsignal 1016 an den zweiten (Code-) Puffer 822 weiter (z. B. bei Block 914 von 9). Die Fehlererkennungscodes, die gelesen wurden und in dem Antwortsignal 1016 enthalten sind, zeigen automatisch Code-Leseabschlüsse an und können daher als Codeleseabschlussantworten bezeichnet werden. So ähnlich wie der zweite (Code-) Puffer 822 mit den Codeschreibabschlussantworten verfährt, kann der zweite (Code-) Puffer 822 die Codeleseabschlussantworten in einer erwarteten Reihenfolge in dem Antwortsignal 1016 platzieren. Zu diesem Zeitpunkt wurden in diesem Beispiel die Fehlererkennungscodes (z. B. 16 Bytes) aus dem zweiten Unterabschnitt 254 in einer zweiten einzelnen Leseoperation gelesen und von dem zweiten (Code-) Puffer 822 in der erwarteten Reihenfolge angeordnet.The second subsection 254 reads the error detection codes from memory by reading the first error detection code (for "Byte 0") at the first code address and reading subsequent error detection codes from the code addresses subsequent to the first code address. In the example of the 8th and 10 The error detection codes are each one byte in size. Then, the second subsection 254 sends a response signal 1016 to the initiator 802 that includes the error detection code(s) read from memory. In 10 the signals with the error detection codes and the signal 1014 are shown by arrows with dashed lines. In the in 10 In the illustrated embodiment, the response signal 1016 is sent from the second subsection 254 to the data backbone and storage subsystem 826, which forwards the response signal 1016 to the volatile memory interface 200A (see 2 ). When the volatile memory interface 200A is unlocked, the volatile memory interface 200A forwards the response signal 1016 to the second (code) buffer 822 (e.g., at block 914 of 9 ). The error detection codes that have been read and included in the response signal 1016 automatically indicate code read completions and therefore may be referred to as code read completion responses. Similar to how the second (code) buffer 822 handles the code write completion responses, the second (code) buffer 822 can place the code read completion responses in the response signal 1016 in an expected order. At this point, in this example, the error detection codes (e.g., 16 bytes) have been read from the second subsection 254 in a second single read operation and arranged by the second (code) buffer 822 in the expected order.

Wenn der Fehlererkennungsblock 272 wartet (z.B. bei Block 910 von 9) bis zum vierten Zeitpunkt (z.B. in 10 als „Zeit=T4“ bezeichnet), führt der Fehlererkennungsblock 272 lediglich einen zeitlichen Abstand zwischen die erste und die zweite Leseanweisung ein. Der Fehlererkennungsblock 272 kann den/die Fehlererkennungscode(s) von dem zweiten Unterabschnitt 254 anfordern, nachdem der Fehlererkennungsblock 272 die Daten in dem Antwortsignal 1012 empfangen hat. Alternativ dazu kann der Fehlererkennungsblock 272 nicht warten, bis er die Daten in dem Antwortsignal 1012 empfängt, bevor er den/die Fehlererkennungscode(s) von dem zweiten Unterabschnitt 254 anfordert. Mit anderen Worten, der vierte Zeitpunkt kann auf der Grundlage des Zeitpunkts bestimmt werden, zu dem die erste Leseanweisung gesendet wird, und nicht auf der Grundlage des Zeitpunkts, zu dem das Antwortsignal 1012 empfangen wird.If the error detection block 272 waits (e.g. at block 910 of 9 ) until the fourth point in time (e.g. in 10 referred to as “Time=T4”), the error detection block 272 merely introduces a time interval between the first and second read instructions. The error detection block 272 may request the error detection code(s) from the second subsection 254 after the error detection block 272 receives the data in the response signal 1012. Alternatively, error detection block 272 may not wait until it receives the data in the response signal 1012 before requesting the error detection code(s) from the second subsection 254. In other words, the fourth time may be determined based on the time at which the first read instruction is sent, rather than based on the time at which the response signal 1012 is received.

Wie oben erwähnt, kann der erste (Daten-) Puffer 820 die Bytes neu anordnen, da die Bytes in dem Antwortsignal 1012 möglicherweise nicht in der richtigen Reihenfolge sind. In ähnlicher Weise kann der zweite (Code-) Puffer 822 die Fehlererkennungscodes neu anordnen, wenn die Fehlererkennungscodes in dem Antwortsignal 1016 nicht in der richtigen Reihenfolge vorliegen. Der erste (Daten-) Puffer 820 gibt Signale 1022-0 bis 1022-15 aus, die jeweils eines der Datenbytes enthalten, und der zweite (Code-) Puffer 822 gibt Signale 1024-0 bis 1024-15 aus, die jeweils einen der Fehlererkennungscodes enthalten. Die Signale 1022-0 bis 1022-15 korrespondieren jeweils mit den Signalen 1024-0 bis 1024-15. Der erste und der zweite Puffer 820 und 822 kann die Signale 1022-0 bis 1022-15 bzw. 1024-0 bis 1024-15 weiterleiten oder neu anordnen, um jedes Datenbyte an einer bekannten Stelle in Bezug auf den für das Byte erzeugten Fehlererkennungscode zu positionieren. Bei der in 10 dargestellten Ausführungsform sind die von den Signalen 1022-0 bis 1022-15 übertragenen Bytes mit den von den Signalen 1024-0 bis 1024-15 übertragenen Fehlererkennungscodes verschachtelt. So werden, wie in 10, die Datenbytes an Stellen platziert, die durch die schattierten Blöcke b0-b15 dargestellt werden, und der/die Fehlererkennungscode(s) werden an Stellen platziert, die durch die Blöcke c0-c15 dargestellt werden.As mentioned above, the first (data) buffer 820 may reorder the bytes because the bytes in the response signal 1012 may not be in the correct order. Similarly, the second (code) buffer 822 may reorder the error detection codes if the error detection codes in the response signal 1016 are not in the correct order. The first (data) buffer 820 outputs signals 1022-0 to 1022-15, each containing one of the data bytes, and the second (code) buffer 822 outputs signals 1024-0 to 1024-15, each containing one of the Error detection codes included. The signals 1022-0 to 1022-15 correspond to the signals 1024-0 to 1024-15. The first and second buffers 820 and 822 may route or reorder signals 1022-0 to 1022-15 and 1024-0 to 1024-15, respectively, to assign each byte of data to a known location with respect to the error detection code generated for the byte position. At the in 10 In the embodiment shown, the bytes transmitted by signals 1022-0 to 1022-15 are interleaved with the error detection codes transmitted by signals 1024-0 to 1024-15. Become like that, as in 10 , the data bytes are placed at locations represented by shaded blocks b0-b15, and the error detection code(s) are placed at locations represented by blocks c0-c15.

Dann bestimmt der Codeerzeugungs-Unterblock 273 (z. B. unter Verwendung der obigen Gleichung 1) einen Prüfcode für jedes der Datenbytes (z. B. bei Block 916 von 9). Somit erhält der Codeerzeugungs-Unterblock 273 als Eingaben die Datenbytes in den Signalen 1022-0 bis 1022-15 und die entsprechenden Fehlererkennungscodes in den Signalen 1024-0 bis 1024-15.Then, code generation subblock 273 determines (e.g., using Equation 1 above) a check code for each of the data bytes (e.g., at block 916 of 9 ). Thus, code generation subblock 273 receives as inputs the data bytes in signals 1022-0 to 1022-15 and the corresponding error detection codes in signals 1024-0 to 1024-15.

Für jeden der Fehlererkennungscodes bestimmt der Fehlererkennungsblock 272, ob der Fehlererkennungscode mit dem Prüfcode übereinstimmt, der mit dem Fehlererkennungscode korrespondiert (z. B. bei Entscheidungsblock 918 von 9). Der Fehlererkennungsblock 272 zeigt die Übereinstimmung in einem Durchlasssignal 1030 an, das zusammen mit einem Datensignal 1032, das das Datenbyte aufweist, an eine Logikkomponente 1034 weitergeleitet wird, die in 10 als UND-Gatter dargestellt ist. Wenn das Durchlasssignal 1030 anzeigt, dass der für das Byte gespeicherte Fehlererkennungscode mit dem für das Byte erstellten Prüfcode übereinstimmt, gibt die Logikkomponente 1034 das Byte in einem geprüften Datensignal 1036 (das nur Datenbytes aufweist) aus und leitet das geprüfte Datensignal 1036 an den Initiator 802 weiter. Wenn hingegen das Durchlasssignal 1030 eine Nichtübereinstimmung anzeigt, leitet die Logikkomponente 1034 das Byte im geprüften Datensignal 1036 nicht an den Initiator 802 weiter. Stattdessen kann der Fehlererkennungsblock 272 das Byte verwerfen und/oder das Byte durch Informationen (z. B. Nullen) ersetzen, die anzeigen, dass eine Nichtübereinstimmung vorliegt. Als nicht einschränkendes Beispiel können die Bits des Bytes, das die Nichtübereinstimmung verursacht hat, auf Null gesetzt werden. Das geprüfte Datensignal 1036 wird an den Initiator 802 weitergeleitet (z. B. bei Block 920 von 9). Der Fehlererkennungsblock 272 kann einen Übereinstimmungsfehler erzeugen und ihn an den Initiator 802 senden, wenn der Fehlererkennungscode nicht mit dem Prüfcode übereinstimmt, der mit dem Fehlererkennungscode korrespondiert (z. B. bei Block 922 von 9). Mit anderen Worten: Wenn das Durchlasssignal 1030 eine oder mehrere Nichtübereinstimmungen anzeigt, kann der Fehlererkennungsblock 272 einen Übereinstimmungsfehler erzeugen und ihn an den Initiator 802 senden. Alternativ oder zusätzlich kann der Fehlererkennungsblock 272 den Übereinstimmungsfehler als unkorrigierten Fehler an den SI-Fehleraggregator 142 senden. Auf diese Weise kann jeder Fehler, der in den Daten oder dem/den Fehlererkennungscode(s) während der Speicherung in dem Carve-Out 250 und/oder beim Abruf aus dem Carve-Out 250 auftritt, erkannt und (z. B. als unkorrigierter Fehler) gemeldet werden.For each of the error detection codes, the error detection block 272 determines whether the error detection code matches the check code that corresponds to the error detection code (e.g., at decision block 918 of 9 ). The error detection block 272 indicates the match in a pass signal 1030, which is passed along with a data signal 1032 comprising the data byte to a logic component 1034 which is in 10 is shown as an AND gate. If the pass signal 1030 indicates that the error detection code stored for the byte matches the check code generated for the byte, the logic component 1034 outputs the byte in a checked data signal 1036 (having only data bytes) and passes the checked data signal 1036 to the initiator 802 further. Conversely, if the pass signal 1030 indicates a mismatch, the logic component 1034 does not pass the byte in the tested data signal 1036 to the initiator 802. Instead, the error detection block 272 may discard the byte and/or replace the byte with information (e.g., zeros) indicating that a mismatch exists. As a non-limiting example, the bits of the byte that caused the mismatch may be set to zero. The tested data signal 1036 is forwarded to the initiator 802 (e.g. at block 920 of 9 ). The error detection block 272 may generate a match error and send it to the initiator 802 if the error detection code does not match the check code corresponding to the error detection code (e.g., at block 922 of 9 ). In other words, if the pass signal 1030 indicates one or more mismatches, the error detection block 272 may generate a match error and send it to the initiator 802. Alternatively or additionally, the error detection block 272 may send the match error to the SI error aggregator 142 as an uncorrected error. In this way, any error that occurs in the data or the error detection code(s) during storage in the carve-out 250 and/or retrieval from the carve-out 250 can be detected and (e.g., as uncorrected error) can be reported.

Wie bereits erwähnt, kann die Schnittstelle 200A des flüchtigen Speichers die beiden parallelen und optional dedizierten Schnittstellen aufweisen, die den Fehlererkennungsblock 272 mit dem flüchtigen Speicher 126 verbinden. Bei solchen Ausführungsformen kann der Fehlererkennungsblock 272 die erste Leseanweisung einschließlich der ersten Datenadresse (z.B. im Signal 1010) über die erste Schnittstelle an den ersten Unterabschnitt 252 senden, während der Fehlererkennungsblock 272 die zweite Leseanweisung einschließlich der ersten Codeadresse (z.B. im Signal 1014) über die zweite Schnittstelle an den zweiten Unterabschnitt 254 sendet. Darüber hinaus können die aus dem ersten Unterabschnitt 252 gelesenen Daten (und z.B. übertragen im Antwortsignal 1012) und der/die aus dem zweiten Unterabschnitt 254 gelesene(n) Fehlererkennungscode(s) (und z.B. übertragen im Antwortsignal 1016) gleichzeitig über die erste bzw. zweite Schnittstelle an den ersten und zweiten Puffer 820 bzw. 822 übertragen werden.As previously mentioned, the volatile memory interface 200A may include the two parallel and optionally dedicated interfaces that connect the error detection block 272 to the volatile memory 126. In such embodiments, the error detection block 272 may send the first read instruction including the first data address (e.g., in signal 1010) to the first subsection 252 via the first interface, while the error detection block 272 may send the second read instruction including the first code address (e.g., in signal 1014) via the second interface to the second subsection 254 sends. In addition, the data read from the first subsection 252 (and, for example, transmitted in the response signal 1012) and the error detection code(s) read from the second subsection 254 (and, for example, transmitted in the response signal 1016) can be transmitted simultaneously via the first or second interface to the first and second buffers 820 and 822, respectively.

Unter Bezugnahme auf 2 kann der Fehlererkennungsblock 272 mindestens einen Transaktions-Timer aufweisen oder mit diesem verbunden sein, wie z. B. den Ausgangs- und Eingangs-Timer 274 und 276, die die Zeitspanne begrenzen, die dem Fehlererkennungsblock 272 zum Lesen von Daten aus dem und/oder Schreiben von Daten in den Carve-Out 250 zur Verfügung steht. Der Ausgangs-Timer 274 und/oder der Eingangs-Timer 276 starten automatisch, wenn ein Zugriff den Fehlererkennungsblock 272 passiert. Beispielsweise kann der Eingangs-Timer 276 immer dann starten, wenn Daten zwischen dem Fehlererkennungsblock 272 und dem Initiator 802 (z. B. dem Prozessor 140) übertragen werden, und der Ausgangs-Timer 274 kann immer dann starten, wenn Daten zwischen dem Fehlererkennungsblock 272 und dem SoC-Bereich (z. B. dem Carve-Out 250) übertragen werden. Der Eingangs-Timer 276 kann dabei helfen, das Funktionieren des Fehlererkennungsblocks 272 zu überwachen und/oder eine Backup-Funktionalität für den Ausgangs-Timer 274 bereitzustellen (z. B. wenn der Ausgangs-Timer 274 nicht richtig funktioniert).With reference to 2 The error detection block 272 may include or be associated with at least one transaction timer, such as. B. the output and input timers 274 and 276, which limit the amount of time available to the error detection block 272 to read data from and/or write data to the carve-out 250. The exit timer 274 and/or the entry timer 276 start automatically when an access passes the error detection block 272. For example, the input timer 276 may start whenever data is transferred between the error detection block 272 and the initiator 802 (e.g., the processor 140), and the output timer 274 may start whenever data is transferred between the error detection block 272 and the SoC area (e.g. the Carve-Out 250). The input timer 276 may help monitor the functioning of the error detection block 272 and/or provide backup functionality for the output timer 274 (e.g., if the output timer 274 is not functioning properly).

Während einer Schreiboperation kann der Eingangs-Timer 276 starten, wenn der Initiator 802 Daten an den Fehlererkennungsblock 272 übergibt, um in den Carve-Out 250 geschrieben zu werden (z. B. in Block 702 von 7). Dann kann der Ausgangs-Timer 274 beginnen, wenn diese Daten den Fehlererkennungsblock 272 und/oder den SI-Bereich verlassen (z. B. in Block 708 von 7). Der Ausgangs-Timer 274 kann gestoppt oder zurückgesetzt werden, wenn der Fehlererkennungsblock 272 die Antwort (z. B. das in 8 dargestellte Antwortsignal 828) von dem Carve-Out 250 empfängt. Dann kann der Eingangs-Timer 276 angehalten oder zurückgesetzt werden, wenn die Antwort (z. B. das in 8 dargestellte Antwortsignal 828) durch den Fehlererkennungsblock 272 an den Initiator 802 (siehe 8) übertragen wird. Wenn der Ausgangs-Timer 274 anzeigt, dass mehr als ein erster Zeitschwellenwert verstrichen ist und der Fehlererkennungsblock 272 die Antwort nicht empfangen hat, was bedeutet, dass der Initiator 802 keine Antwort von dem Carve-Out 250 (z. B. das in 8 dargestellte Antwortsignal 828) erhalten wird, erzeugt der Initiator 802 (z. B. der Prozessor 140) einen Ausgangszeitüberschreitungsfehler. Wenn der Eingangs-Timer 276 anzeigt, dass mehr als ein zweiter Zeitschwellenwert verstrichen ist und der Fehlererkennungsblock 272 die Antwort nicht an den Initiator 802 gesendet hat, was bedeutet, dass der Initiator 802 die Antwort von dem Carve-Out 250 nicht erhalten hat, erzeugt der Initiator 802 einen Eingangszeitüberschreitungsfehler.During a write operation, the input timer 276 may start when the initiator 802 passes data to the error detection block 272 to be written into the carve-out 250 (e.g., in block 702 of 7 ). Then the exit timer 274 may begin when this data leaves the error detection block 272 and/or the SI area (e.g. in block 708 of 7 ). The output timer 274 may be stopped or reset when the error detection block 272 receives the response (e.g., the in 8th response signal 828 shown) is received from the carve-out 250. Then the input timer 276 can be paused or reset when the response (e.g. the in 8th response signal 828 shown) through the error detection block 272 to the initiator 802 (see 8th ) is transferred. If the exit timer 274 indicates that more than a first time threshold has elapsed and the error detection block 272 has not received the response, which means that the initiator 802 has not received a response from the carve-out 250 (e.g., the in 8th response signal 828 (illustrated) is received, the initiator 802 (e.g., processor 140) generates an output timeout error. If the input timer 276 indicates that more than a second time threshold has elapsed and the error detection block 272 has not sent the response to the initiator 802, meaning that the initiator 802 has not received the response from the carve-out 250, generated the initiator 802 receives an input timeout error.

Während einer Leseoperation kann der Eingangs-Timer 276 beginnen, wenn der Fehlererkennungsblock 272 die Leseanforderung von dem Initiator 802 empfängt (z. B. in Block 902 von 9). Dann kann der Ausgangs-Timer 274 beginnen, wenn der Fehlererkennungsblock 272 die an der ersten Datenadresse gespeicherten Daten von dem Carve-Out 250 anfordert (z. B. in Block 904 von 9). Der Ausgangs-Timer 274 kann angehalten oder zurückgesetzt werden, wenn die Daten von dem Carve-Out 250 durch den Fehlererkennungsblock 272 empfangen werden (z. B. in Block 906 von 9). Anschließend kann der Eingangs-Timer 276 angehalten oder zurückgesetzt werden, wenn die Daten durch den Fehlererkennungsblock 272 an den Initiator 802 übertragen werden (z. B. in Block 920 von 9). Wenn der Ausgangs-Timer 274 anzeigt, dass die erste Schwellenwertzeit verstrichen ist und der Fehlererkennungsblock 272 die Daten von dem Carve-Out 250 nicht empfangen hat, was bedeutet, dass der Initiator 802 die Daten von dem Fehlererkennungsblock 272 nicht empfangen wird (z. B. in dem in 10 dargestellten geprüften Datensignal 1036), erzeugt der Initiator 802 den Ausgangszeitüberschreitungsfehler. Wenn der Eingangs-Timer 276 anzeigt, dass mehr als die zweite Schwellenwertzeit verstrichen ist und der Fehlererkennungsblock 272 die Daten nicht an den Initiator 802 gesendet hat, was bedeutet, dass der Initiator 802 die Daten von dem Carve-Out 250 nicht empfangen hat, erzeugt der Initiator 802 den Eingangszeitüberschreitungsfehler.During a read operation, the input timer 276 may begin when the error detection block 272 receives the read request from the initiator 802 (e.g., in block 902 of 9 ). Then, the output timer 274 may begin when the error detection block 272 requests the data stored at the first data address from the carve-out 250 (e.g., in block 904 of 9 ). The output timer 274 may be paused or reset when the data from the carve-out 250 is received by the error detection block 272 (e.g., in block 906 of 9 ). Thereafter, the input timer 276 may be paused or reset when the data is transmitted to the initiator 802 through the error detection block 272 (e.g., in block 920 of 9 ). If the exit timer 274 indicates that the first threshold time has elapsed and the error detection block 272 has not received the data from the carve-out 250, which means that the initiator 802 will not receive the data from the error detection block 272 (e.g .in which in 10 checked data signal 1036 shown), the initiator 802 generates the output timeout error. If the input timer 276 indicates that more than the second threshold time has elapsed and the error detection block 272 has not sent the data to the initiator 802, which means that the initiator 802 has not received the data from the carve-out 250, generated the initiator 802 receives the input timeout error.

11 ist eine Darstellung eines Blockdiagramms, das Fehlermeldungen zeigt, die von dem Fehlererkennungsblock 272 (siehe 2, 8 und 10) erzeugt werden, wenn der Fehlererkennungsblock 272 gemäß einigen Ausführungsformen den Ausgangs- und Eingangs-Timer 274 bzw. 276 (siehe 2) aufweist oder damit verbunden ist. In 11 sendet der Initiator 802 (siehe 8 und 10) ein Signal 1102, das entweder die erste Schreibanweisung 804 (siehe 8) oder die erste Leseanweisung 1004 (siehe 10) aufweist, an den Fehlererkennungsblock 272. Wie bereits erwähnt, kann der Ausgangs-Timer 274 starten, wenn die Daten den Fehlererkennungsblock 272 und/oder den SI-Bereich während einer Schreiboperation verlassen, und der Ausgangs-Timer 274 kann starten, wenn der Fehlererkennungsblock 272 die an der ersten Datenadresse gespeicherten Daten während einer Leseoperation von dem Carve-out 250 anfordert. Block 1104 zeigt an, dass der Ausgangs-Timer 274 abgelaufen ist. Der Ausgangs-Timer 274 kann beispielsweise ablaufen, wenn der Fehlererkennungsblock 272 während einer Schreiboperation keine Antwort von dem Carve-Out 250 (z. B. das in 8 dargestellte Antwortsignal 828) erhalten hat und mehr als die erste Schwellenwertzeit verstrichen ist. Als weiteres, nicht einschränkendes Beispiel kann der Ausgangs-Timer 274 eine Zeitüberschreitung aufweisen, wenn der Fehlererkennungsblock 272 die Daten von dem Fehlererkennungsblock 272 (z. B. in dem in 10 dargestellten Antwortsignal 1012) während einer Leseoperation nicht empfangen hat und mehr als die erste Schwellenwertzeit verstrichen ist. Wenn der Ausgangs-Timer 274 abgelaufen ist, erzeugt der Initiator 802 (z. B. der Prozessor 140) einen Ausgangszeitüberschreitungsfehler 1106 und leitet den Ausgangszeitüberschreitungsfehler 1106 an einen Fehlerspeicher 1108 weiter. Wenn andererseits der Ausgangs-Timer 274 nicht abgelaufen ist, kann der Ausgangs-Timer 274 angehalten oder zurückgesetzt werden. Dies kann geschehen, wenn der Fehlererkennungsblock 272 entweder die Antwort (z. B. das Antwortsignal 828) von dem Carve-Out 250 während einer Schreiboperation oder die Daten (z. B. im Antwortsignal 1012) von dem Carve-Out 250 während einer Leseoperation empfängt, bevor die erste Schwellenwertzeit verstrichen ist. 11 is a representation of a block diagram showing error messages generated by the error detection block 272 (see 2 , 8th and 10 ) are generated when the error detection block 272, according to some embodiments, the output and input timers 274 and 276 (see 2 ) has or is associated with it. In 11 the initiator sends 802 (see 8th and 10 ) a signal 1102, which is either the first write instruction 804 (see 8th ) or the first read instruction 1004 (see 10 ). 272 requests the data stored at the first data address from the carve-out 250 during a read operation. Block 1104 indicates that the exit timer 274 has expired. For example, the output timer 274 may expire if the error detection block 272 does not receive a response from the carve-out 250 (e.g., the in 8th response signal 828 shown) and more than the first threshold time has elapsed. As another non-limiting example, the output timer 274 may time out when the error detection block 272 the data from the error detection block 272 (e.g. in the in 10 response signal 1012 shown) has not been received during a read operation and more than the first threshold time has elapsed. When the exit timer 274 expires, the initiator 802 (e.g., processor 140) generates an exit timeout error 1106 and passes the exit timeout error 1106 to an error store 1108. On the other hand, if the exit timer 274 has not expired, the exit timer 274 may be stopped or reset. This can occur when error detection block 272 either receives the response (e.g., response signal 828) from carve-out 250 during a write operation or the data (e.g., in response signal 1012) from carve-out 250 during a read operation receives before the first threshold time has elapsed.

Wie es oben erwähnt ist, kann der Eingangs-Timer 276 starten, wenn der Initiator 802 während einer Schreiboperation Daten an den Fehlererkennungsblock 272 weitergibt, um in den Carve-Out 250 geschrieben zu werden (z. B. in Block 702 von 7), oder der Eingangs-Timer 276 kann starten, wenn der Fehlererkennungsblock 272 während einer Leseoperation die Leseanforderung von dem Initiator 802 erhält (z. B. in Block 902 von 9). So kann der Eingangs-Timer 276 (siehe 2) starten, wenn das Signal 1102 die erste Schreiboperation 804 (siehe 8) oder die erste Leseoperation 1004 (siehe 10) aufweist und diese Anweisung von dem Fehlererkennungsblock 272 empfangen wird (siehe 2, 8 und 10). Block 1114 zeigt an, dass der Eingangs-Timer 276 abgelaufen ist. Der Eingangs-Timer 276 kann beispielsweise ablaufen, wenn mehr als die zweite Schwellenwertzeit verstrichen ist und der Initiator 802 (siehe 8) während einer Schreiboperation keine Antwort von dem Carve-Out 250 (z. B. das in 8 dargestellte Antwortsignal 828) erhalten hat. Als weiteres, nicht einschränkendes Beispiel kann der Eingangs-Timer 276 ablaufen, wenn mehr als die zweite Schwellenwertzeit verstrichen ist und der Initiator 802 die Daten (z. B. das in 10 dargestellte Prüfdatensignal 1036) von dem Carve-Out 250 während einer Leseoperation nicht empfangen hat. Wenn der Eingangs-Timer 276 abläuft, erzeugt der Initiator 802 einen Eingangszeitüberschreitungsfehler 1116 und leitet den Eingangszeitüberschreitungsfehler 1116 an den Fehlerspeicher 1108 weiter. Wenn der Eingangs-Timer 276 jedoch nicht abgelaufen ist, kann der Eingangs-Timer 276 angehalten oder zurückgesetzt werden. Dies kann geschehen, wenn der Fehlererkennungsblock 272 während einer Schreiboperation die Antwort (z. B. das Antwortsignal 828) an den Initiator 802 überträgt, oder wenn der Fehlererkennungsblock 272 während einer Leseoperation die Daten (z. B. das geprüfte Datensignal 1036) an den Initiator 802 überträgt.As noted above, the input timer 276 may start when the initiator 802 passes data to the error detection block 272 during a write operation to be written into the carve-out 250 (e.g., in block 702 of 7 ), or the input timer 276 may start when the error detection block 272 receives the read request from the initiator 802 during a read operation (e.g., in block 902 of 9 ). So the input timer 276 (see 2 ) start when signal 1102 completes the first write operation 804 (see 8th ) or the first read operation 1004 (see 10 ) and this instruction is received by the error detection block 272 (see 2 , 8th and 10 ). Block 1114 indicates that the input timer 276 has expired. For example, the input timer 276 may expire if more than the second threshold time has elapsed and the initiator 802 (see 8th ) during a write operation, no response from the Carve-Out 250 (e.g. the in 8th response signal 828 shown). As another non-limiting example, the input timer 276 may expire if more than the second threshold time has elapsed and the initiator 802 receives the data (e.g., the in 10 (illustrated test data signal 1036) from the carve-out 250 was not received during a read operation. When the input timer 276 expires, the initiator 802 generates an input timeout error 1116 and forwards the input timeout error 1116 to the error memory 1108. However, if the input timer 276 has not expired, the input timer 276 may be stopped or reset. This can occur when the error detection block 272 transmits the response (e.g., the response signal 828) to the initiator 802 during a write operation, or when the error detection block 272 transmits the data (e.g., the checked data signal 1036) to the initiator 802 during a read operation Initiator 802 transmits.

Block 1124 zeigt an, dass der Codeerzeugungs-Unterblock 273 (siehe 2, 8 und 10) des Fehlererkennungsblocks 272 (siehe 2, 8 und 10) einen Codeerzeugungs-/Prüfungsfehler 1126 erzeugen kann, der anzeigt, dass während der Erzeugung eines Fehlererkennungscodes oder eines Prüfcodes ein Fehler aufgetreten ist. Bei einigen Ausführungsformen kann der Codeerzeugungs-/Prüffehler 1126 verwendet werden, um anzuzeigen, dass eine Nichtübereinstimmung aufgetreten ist. Ein nicht einschränkendes Beispiel: Wenn das Signal 1102 die erste Schreibanweisung 804 aufweist, kann der Codeerzeugungs-Unterblock 273 einen Codeerzeugungsfehler erzeugen, während er den/die Fehlererkennungscode(s) erzeugt. Wenn das Signal 1102 die erste Leseanweisung 1004 aufweist, kann der Fehlererkennungsblock 272 beispielsweise einen Übereinstimmungsfehler und/oder einen Codeerzeugungsfehler erzeugen, während er den/die Prüfcode(s) erzeugt, der bzw. die als der bzw. die Codeerzeugungs-/Prüffehler 1126 an den Fehlerspeicher 1108 weitergeleitet wird bzw. werden.Block 1124 indicates that code generation subblock 273 (see 2 , 8th and 10 ) of the error detection block 272 (see 2 , 8th and 10 ) may generate a code generation/verification error 1126 indicating that an error occurred during generation of an error detection code or a verification code. In some embodiments, code generation/verification error 1126 may be used to indicate that a mismatch has occurred. By way of non-limiting example, if signal 1102 includes first write instruction 804, code generation subblock 273 may generate a code generation error while generating the error detection code(s). For example, if the signal 1102 includes the first read instruction 1004, the error detection block 272 may generate a matching error and/or a code generation error while generating the check code(s) referred to as the code generation/verification error(s) 1126 is/are forwarded to error memory 1108.

Der Fehlerspeicher 1108 kann als Fehleraggregator fungieren, der die Fehler 1106, 1116 und 1126 zu einer Fehlermeldung 1130 aggregiert, die der Fehlerspeicher 1108 an den SI-Fehleraggregator 142 sendet.The error store 1108 can function as an error aggregator that aggregates errors 1106, 1116 and 1126 into an error message 1130 that the error store 1108 sends to the SI error aggregator 142.

Wenn das Fahrzeug-SoC 104 zum ersten Mal hochfährt, kann der Prozessor 140 der SI 110 versuchen, Daten aus dem Carve-Out 250 vorabzurufen (pre-fetch). Ein Vorabruf kann als ein Typ eines nicht absichtlichen Lesens von Daten aus dem Carve-Out 250 gekennzeichnet sein. Da der gemeinsam genutzte flüchtige Speicher 126 flüchtig ist, kann der Carve-Out 250 zu diesem Zeitpunkt uninitialisierte Daten speichern, die keine Fehlererkennungscodes sind oder nicht übereinstimmenden Fehlererkennungscodes zugeordnet sind. Um zu verhindern, dass der Fehlererkennungsblock 272 Übereinstimmungsfehler erzeugt, kann die SI 110 (z. B. der Prozessor 140, die DMA-Engine 402 und/oder dergleichen) einen oder mehrere Fehlererkennungscodes in den Carve-Out 250 für die Daten schreiben, die der Prozessor 140 im Voraus abrufen wird oder könnte. Als nicht einschränkendes Beispiel kann die SI 110 initiale Daten in den Carve-Out 250 schreiben, was die Hardware des Fehlererkennungsblocks 272 veranlasst, einen oder mehrere Fehlererkennungscodes für die initialen Daten zu bestimmen, die jeweils mit einer Codeadresse verbunden sind. Dann kann die SI 110 den Carve-Out 250 veranlassen, jeden Fehlererkennungscode in seiner zugehörigen Codeadresse zu speichern. Somit entsprechen während einer Vorabruf- bzw. Pre-Fetching-Operation die im zweiten Unterabschnitt 254 gespeicherten Fehlererkennungscodes den im ersten Unterabschnitt 252 gespeicherten Daten, und der Fehlererkennungsblock 272 erzeugt keine Übereinstimmungsfehler.When the vehicle SoC 104 first boots up, the processor 140 of the SI 110 may attempt to pre-fetch data from the carve-out 250. A prefetch may be characterized as a type of non-intentional reading of data from the carve-out 250. At this time, because shared volatile memory 126 is volatile, carve-out 250 may store uninitialized data that is not error detection codes or is associated with mismatched error detection codes. To prevent the error detection block 272 from generating matching errors, the SI 110 (e.g., the processor 140, the DMA engine 402, and/or the like) may write one or more error detection codes into the carve-out 250 for the data that the processor 140 will or could fetch in advance. As a non-limiting example, the SI 110 may write initial data into the carve-out 250, causing the hardware of the error detection block 272 to determine one or more error detection codes for the initial data, each associated with a code address. Then the SI 110 can cause the carve-out 250 to store each error detection code in its associated code address. Thus correspond during a prefetching or pre-fetching operation tion, the error detection codes stored in the second subsection 254 correspond to the data stored in the first subsection 252, and the error detection block 272 produces no matching errors.

Unter Bezugnahme auf 2 kann die SI 110 den Codeerzeugungs-Unterblock 273 (siehe 2, 8 und 10) und/oder den Fehlererkennungsblock 272 ausschalten (z. B. durch Beschreiben eines Softwareregisters), wenn die Fahrzeugplattform 100 (siehe 1) den Carve-Out 250 nicht benötigt. Beispielsweise kann die SI 110 den Codeerzeugungs-Unterblock273 und/oder den Fehlererkennungsblock 272 abschalten, wenn der flüchtige Speicher 126 auf einem Risikoniveau arbeitet, das für die Fahrzeugplattform 100 ausreichend ist.With reference to 2 The SI 110 can use the code generation subblock 273 (see 2 , 8th and 10 ) and/or turn off the error detection block 272 (e.g. by writing to a software register) if the vehicle platform 100 (see 1 ) the Carve-Out 250 is not needed. For example, the SI 110 may turn off the code generation subblock 273 and/or the error detection block 272 when the volatile memory 126 is operating at a risk level that is sufficient for the vehicle platform 100.

Es ist klar, dass diese und andere Anordnungen, die hier beschrieben sind, nur als Beispiele dargestellt werden. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Anordnungen, Gruppierungen von Funktionen usw.) können zusätzlich zu oder anstelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Darüber hinaus handelt es sich bei vielen der hier beschriebenen Elemente um funktionale Einheiten, die als einzelne oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jedem geeigneten Ort implementiert werden können. Verschiedene Funktionen, wie es hier beschrieben ist, können durch Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der in einem Speicher gespeicherte Anweisungen ausführt.It is to be understood that these and other arrangements described herein are presented as examples only. Other arrangements and elements (e.g. machines, interfaces, functions, arrangements, groupings of functions, etc.) may be used in addition to or instead of those shown, and some elements may be omitted entirely. In addition, many of the elements described herein are functional units that may be implemented as individual or distributed components, or in conjunction with other components, and in any suitable combination and location. Various functions as described herein may be performed by hardware, firmware and/or software. For example, various functions can be performed by a processor executing instructions stored in memory.

BEISPIEL FÜR EIN AUTONOMES FAHRZEUGEXAMPLE OF AN AUTONOMOUS VEHICLE

12 ist eine Darstellung eines Beispiels für ein autonomes Fahrzeug 1200, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Das autonome Fahrzeug 1200 (hierin alternativ als „Fahrzeug 1200“ bezeichnet) kann ohne Einschränkung ein Personenfahrzeug, wie z. B. einen Pkw, einen Lkw, einen Bus, ein Ersthelferfahrzeug, einen Pendelbus, ein elektrisches oder motorisiertes Fahrrad, ein Motorrad, ein Feuerwehrauto, ein Polizeifahrzeug, einen Krankenwagen, ein Boot, ein Baufahrzeug, ein Unterwasserfahrzeug, eine Drohne und/oder eine andere Art von Fahrzeug (z. B., das unbemannt ist und/oder einen oder mehrere Fahrgäste aufnimmt) aufweisen. Autonome Fahrzeuge werden im Allgemeinen in Form von Automatisierungsstufen beschrieben, die von der National Highway Traffic Safety Administration (NHTSA), einer Abteilung des US-Verkehrsministeriums, und der Society of Automotive Engineers (SAE) „Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles“ (Standard Nr. J3016-201806, veröffentlicht am 15. Juni 2018, Standard Nr. J3016-201609, veröffentlicht am 30. September 2016, sowie frühere und zukünftige Versionen dieses Standards) definiert werden. Das Fahrzeug 1200 kann in der Lage sein, Funktionen gemäß einer oder mehrerer der Stufen 2 bis 5 der autonomen Fahrstufen, wie sie von der SAE definiert sind, auszuführen. Zum Beispiel kann das Fahrzeug 1200 je nach Ausführungsform in der Lage sein, eine Teilfahrautomatisierung (Stufe 2), eine bedingte Automatisierung (Stufe 3), eine hohe Automatisierung (Stufe 4) und/oder eine Vollautomatisierung (Stufe 5) durchzuführen. 12 is an illustration of an example of an autonomous vehicle 1200, according to some embodiments of the present disclosure. The autonomous vehicle 1200 (alternatively referred to herein as “vehicle 1200”) may, without limitation, be a passenger vehicle, such as a passenger vehicle. B. a car, a truck, a bus, a first responder vehicle, a shuttle bus, an electric or motorized bicycle, a motorcycle, a fire engine, a police vehicle, an ambulance, a boat, a construction vehicle, an underwater vehicle, a drone and / or a other type of vehicle (e.g. that is unmanned and/or carries one or more passengers). Autonomous vehicles are generally described in terms of levels of automation as defined by the National Highway Traffic Safety Administration (NHTSA), a division of the U.S. Department of Transportation, and the Society of Automotive Engineers (SAE) “Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles” (Standard No. J3016-201806, published June 15, 2018, Standard No. J3016-201609, published September 30, 2016, and previous and future versions of this standard). The vehicle 1200 may be capable of performing functions in accordance with one or more of Levels 2 through 5 of the autonomous driving levels as defined by the SAE. For example, depending on the embodiment, the vehicle 1200 may be capable of performing partial driving automation (level 2), conditional automation (level 3), high automation (level 4), and/or full automation (level 5).

Das Fahrzeug 1200 kann Komponenten wie ein Fahrgestell, eine Fahrzeugkarosserie, Räder (z.B. 2, 4, 6, 8, 18, etc.), Reifen, Achsen und andere Komponenten eines Fahrzeugs aufweisen. Das Fahrzeug 1200 kann ein Antriebssystem 1250 aufweisen, wie z. B. einen Verbrennungsmotor, ein Hybrid-Elektrokraftwerk, einen reinen Elektromotor und/oder einen anderen Antriebssystemtyp. Das Antriebssystem 1250 kann mit einem Antriebsstrang des Fahrzeugs 1200 verbunden sein, der ein Getriebe umfassen kann, um den Antrieb des Fahrzeugs 1200 zu ermöglichen. Das Antriebssystem 1250 kann in Reaktion auf ein Empfangen von Signalen von der Drosselklappe/Beschleunigungsvorrichtung 1252 gesteuert werden.The vehicle 1200 may include components such as a chassis, a vehicle body, wheels (e.g., 2, 4, 6, 8, 18, etc.), tires, axles, and other components of a vehicle. The vehicle 1200 may have a propulsion system 1250, such as. B. an internal combustion engine, a hybrid electric power plant, a pure electric motor and / or another type of drive system. The propulsion system 1250 may be connected to a powertrain of the vehicle 1200, which may include a transmission to enable propulsion of the vehicle 1200. The propulsion system 1250 may be controlled in response to receiving signals from the throttle/accelerator 1252.

Ein Lenksystem 1254, das ein Lenkrad aufweisen kann, kann verwendet werden, um das Fahrzeug 1200 zu lenken (z. B. entlang eines gewünschten Weges oder einer Route), wenn das Antriebssystem 1250 in Betrieb ist (z. B. wenn das Fahrzeug in Bewegung ist). Das Lenksystem 1254 kann Signale von einem Lenkaktuator 1256 empfangen. Das Lenkrad kann optional für die vollständige Automatisierung (Stufe 5) eingesetzt werden.A steering system 1254, which may include a steering wheel, may be used to steer the vehicle 1200 (e.g., along a desired path or route) when the propulsion system 1250 is in operation (e.g., when the vehicle is in movement is). The steering system 1254 may receive signals from a steering actuator 1256. The steering wheel can optionally be used for full automation (level 5).

Das Bremssensorsystem 1246 kann verwendet werden, um die Fahrzeugbremsen als Reaktion auf ein Empfangen von Signalen von den Bremsaktuatoren 1248 und/oder Bremssensoren zu betätigen.The brake sensor system 1246 may be used to actuate the vehicle brakes in response to receiving signals from the brake actuators 1248 and/or brake sensors.

Eine Steuerung (Steuerungen) 1236, die ein oder mehrere System-on-Chips (SoCs) 1204 (14) und/oder GPU(s) aufweisen kann (können), kann (können) Signale (z. B. die Befehle darstellen) für eine oder mehrere Komponenten und/oder Systeme des Fahrzeugs 1200 bereitstellen. Zum Beispiel kann (können) die Steuerung(en) Signale senden, um die Fahrzeugbremsen über einen oder mehrere Bremsaktuatoren 1248 zu betätigen, um das Lenksystem 1254 über einen oder mehrere Lenkaktuatoren 1256 zu betätigen, um das Antriebssystem 1250 über einen oder mehrere Drossel-/Beschleunigungsaktuatoren 1252 zu betreiben. Die Steuerung(en) 1236 kann (können) eine oder mehrere eingebaute (z. B. integrierte) Recheneinrichtungen (z.B. Supercomputer) aufweisen, die Sensorsignale verarbeiten und Betriebsbefehle ausgeben (z. B. Signale, die Befehle darstellen), um autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Fahren des Fahrzeugs 1200 zu unterstützen. Die Steuerung(en) 1236 kann (können) eine erste Steuerung 1236 für autonome Fahrfunktionen, eine zweite Steuerung 1236 für funktionale Sicherheitsfunktionen, eine dritte Steuerung 1236 für Funktionen der künstlichen Intelligenz (z. B. Computer Vision), eine vierte Steuerung 1236 für Infotainment-Funktionen, eine fünfte Steuerung 1236 für Redundanz unter Notfallbedingungen und/oder andere Steuerungen umfassen. In einigen Beispielen kann eine einzelne Steuerung 1236 zwei oder mehr der oben genannten Funktionen übernehmen, zwei oder mehr Steuerungen 1236 können eine einzelne Funktion übernehmen, und/oder eine beliebige Kombination davon.A controller(s) 1236 that includes one or more system-on-chips (SoCs) 1204 ( 14 ) and/or GPU(s), may provide signals (e.g., representing commands) to one or more components and/or systems of the vehicle 1200. For example, the controller(s) may send signals to actuate the vehicle brakes via one or more brake actuators 1248, to actuate the steering system 1254 via one or more steering actuators 1256, to actuate the propulsion system 1250 via one or more throttle/ Acceleration actuators 1252 to operate. The Controller(s) 1236 may include one or more built-in (e.g., integrated) computing devices (e.g., supercomputers) that process sensor signals and issue operating commands (e.g., signals representing commands) to enable autonomous driving and/or to assist a human driver in driving the vehicle 1200. The controller(s) 1236 may include a first controller 1236 for autonomous driving functions, a second controller 1236 for functional safety functions, a third controller 1236 for artificial intelligence (e.g., computer vision) functions, a fourth controller 1236 for infotainment -Functions, a fifth controller 1236 for redundancy under emergency conditions and/or other controllers. In some examples, a single controller 1236 may perform two or more of the above functions, two or more controllers 1236 may perform a single function, and/or any combination thereof.

Die Steuerung(en) 1236 kann (können) die Signale zur Steuerung einer oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 1200 in Reaktion auf Sensordaten bereitstellen, die von einem oder mehreren Sensoren (z. B. Sensoreingaben) empfangen werden. Die Sensordaten können zum Beispiel und ohne Einschränkung von (einem) Sensor(en) für globale Navigationssatellitensysteme 1258 (z. B. Global Positioning System-Sensor(en)), RADAR-Sensor(en) 1260, Ultraschallsensor(en) 1262, LIDAR-Sensor(en) 1264, Trägheitssensor(en) (inertial measurement unit (IMU) sensor(s)) 1266 (z. B., Beschleunigungsmesser, Gyroskop(e), Magnetkompass(e), Magnetometer usw.), Mikrofon(en) 1296, Stereokamera(s) 1268, Weitwinkelkamera(s) 1270 (z. B., Fischaugenkameras), Infrarotkamera(s) 1272, Surround-Kamera(s) 1274 (z. B. 360-Grad-Kameras), Fern- und/oder Mittelbereichskamera(s) 1298, Geschwindigkeitssensor(en) 1244 (z. B. zur Messung der Geschwindigkeit des Fahrzeugs 1200), Vibrationssensor(en) 1242, Lenksensor(en) 1240, Bremssensor(en) (z. B. als Teil des Bremssensorsystems 1246) und/oder anderen Sensortypen empfangen werden.The controller(s) 1236 may provide the signals to control one or more components and/or systems of the vehicle 1200 in response to sensor data received from one or more sensors (e.g., sensor inputs). The sensor data may, for example and without limitation, from a global navigation satellite system sensor(s) 1258 (e.g., Global Positioning System sensor(s)), RADAR sensor(s) 1260, ultrasonic sensor(s) 1262, LIDAR -Sensor(s) 1264, inertial sensor(s) (inertial measurement unit (IMU) sensor(s)) 1266 (e.g., accelerometer(s), gyroscope(s), magnetic compass(s), magnetometer(s), etc.), microphone(s ) 1296, stereo camera(s) 1268, wide-angle camera(s) 1270 (e.g., fisheye cameras), infrared camera(s) 1272, surround camera(s) 1274 (e.g., 360-degree cameras), long-distance and/or mid-range camera(s) 1298, speed sensor(s) 1244 (e.g. for measuring the speed of the vehicle 1200), vibration sensor(s) 1242, steering sensor(s) 1240, brake sensor(s) (e.g. as Part of the brake sensor system 1246) and/or other sensor types are received.

Eine oder mehrere der Steuerungen 1236 können Eingaben (z. B. dargestellt durch Eingabedaten) von einem Kombiinstrument 1232 des Fahrzeugs 1200 empfangen und Ausgaben (z. B. dargestellt durch Ausgabedaten, Anzeigedaten usw.) über eine Mensch-Maschine-Schnittstelle (HMI)-Anzeige 1234, einen akustischen Melder, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1200 bereitstellen. Die Ausgaben können Informationen wie Fahrzeuggeschwindigkeit, Drehzahl, Zeit, Kartendaten (z. B. die HD-Karte 1222 von 14), Standortdaten (z. B. den Standort des Fahrzeugs 1200, z. B. auf einer Karte), Richtung, den Standort anderer Fahrzeuge (z. B. ein Belegungsraster), Informationen über Objekte und den Status von Objekten, wie von der/den Steuerung(en) 1236 wahrgenommen, usw. aufweisen. Zum Beispiel kann die HMI-Anzeige 1234 Informationen über das Vorhandensein eines oder mehrerer Objekte (z. B. ein Straßenschild, ein Warnschild, eine sich ändernde Ampel usw.) und/oder Informationen über Fahrmanöver anzeigen, die das Fahrzeug durchgeführt hat, gerade durchführt oder durchführen wird (z. B. jetzt die Spur wechseln, in zwei Meilen die Ausfahrt 34B nehmen, usw.).One or more of the controllers 1236 may receive inputs (e.g., represented by input data) from an instrument cluster 1232 of the vehicle 1200 and outputs (e.g., represented by output data, display data, etc.) via a human-machine interface (HMI). -Display 1234, an audible detector, a loudspeaker and/or via other components of the vehicle 1200. The outputs can include information such as vehicle speed, RPM, time, map data (e.g. the HD map 1222 from 14 ), location data (e.g., the location of the vehicle 1200, e.g., on a map), direction, the location of other vehicles (e.g., an occupancy grid), information about objects and the status of objects, as determined by the / the control(s) 1236 perceived, etc. For example, the HMI display 1234 may display information about the presence of one or more objects (e.g., a street sign, a warning sign, a changing traffic light, etc.) and/or information about driving maneuvers that the vehicle has performed, is currently performing or will perform (e.g. change lanes now, take exit 34B in two miles, etc.).

Das Fahrzeug 1200 umfasst ferner eine Netzschnittstelle 1224, die eine oder mehrere drahtlose Antenne(n) 1226 und/oder Modem(s) zur Kommunikation über ein oder mehrere Netze verwenden kann. Zum Beispiel kann die Netzschnittstelle 1224 in der Lage sein, über LTE, WCDMA, UMTS, GSM, CDMA2000, etc. zu kommunizieren. Die drahtlose(n) Antenne(n) 1226 kann (können) auch die Kommunikation zwischen Objekten in der Umgebung (z. B. Fahrzeuge, mobile Geräte usw.) ermöglichen, wobei lokale Netze wie Bluetooth, Bluetooth LE, Z-Wave, ZigBee usw. und/oder Weitverkehrsnetze mit geringer Leistung (LPWANs) wie LoRaWAN, SigFox usw. verwendet werden.The vehicle 1200 further includes a network interface 1224 that may use one or more wireless antennas 1226 and/or modems to communicate over one or more networks. For example, the network interface 1224 may be capable of communicating via LTE, WCDMA, UMTS, GSM, CDMA2000, etc. The wireless antenna(s) 1226 may also enable communication between objects in the environment (e.g., vehicles, mobile devices, etc.) using local area networks such as Bluetooth, Bluetooth LE, Z-Wave, ZigBee etc. and/or low power wide area networks (LPWANs) such as LoRaWAN, SigFox etc. are used.

Wie oben erwähnt ist, kann bei mindestens einer Ausführungsform die Fahrzeugplattform 100 (siehe 1) eine Komponente des autonomen Fahrzeugs 1200 sein. Bei solchen Ausführungsformen weist (weisen) die Steuerung(en) 1236 das Fahrzeug-SoC 104 auf.As noted above, in at least one embodiment, the vehicle platform 100 (see 1 ) may be a component of the autonomous vehicle 1200. In such embodiments, the controller(s) 1236 includes the vehicle SoC 104.

13 ist ein Beispiel für Kamerastandorte und Sichtfelder für das autonome Beispielfahrzeug 1200 von 12, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die Kameras und die jeweiligen Sichtfelder sind ein Beispiel für eine Ausführungsform und nicht als Einschränkung gedacht. Beispielsweise können zusätzliche und/oder alternative Kameras vorgesehen sein und/oder die Kameras können an anderen Stellen an dem Fahrzeug 1200 angeordnet sein. 13 is an example of camera locations and fields of view for the example autonomous vehicle 1200 from 12 , according to some embodiments of the present disclosure. The cameras and respective fields of view are an example of an embodiment and are not intended as a limitation. For example, additional and/or alternative cameras may be provided and/or the cameras may be located at other locations on the vehicle 1200.

Die Kameratypen für die Kameras können, sind aber nicht darauf beschränkt, Digitalkameras umfassen, die für die Verwendung mit den Komponenten und/oder Systemen des Fahrzeugs 1200 ausgelegt sein können. Die Kamera(s) kann/können gemäß ASIL (Automotive Safety Integrity Level) B und/oder einem anderen ASIL arbeiten. Die Kameratypen können in Abhängigkeit von der Ausführungsform jede beliebige Bildaufnahmerate erreichen, z. B. 60 Einzelbilder pro Sekunde („frames per second“, fps), 120 fps, 240 fps usw.. Die Kameras können Rolling Shutter, Global Shutter, einen anderen Verschlusstyp oder eine Kombination davon verwenden. In einigen Beispielen kann die Farbfilteranordnung eine Rot-Klar-Klar-Klar-Farbfilteranordnung („red clear clear clear“, RCCC), eine Rot-Klar-Klar-Blau-Farbfilteranordnung („red clear clear blue“, RCCB), eine Rot-Blau-Grün-Klar-Farbfilteranordnung („red blue green clear“ RBGC), eine Foveon X3-Farbfilteranordnung, eine Bayer-Sensor-Farbfilteranordnung (RGGB), eine Monochromsensor-Farbfilteranordnung und/oder eine andere Art von Farbfilteranordnung aufweisen. In einigen Ausführungsformen können zur Erhöhung der Lichtempfindlichkeit Klarpixelkameras, wie z. B. Kameras mit einer RCCC-, einer RCCB- und/oder einer RBGC-Farbfilteranordnung, verwendet werden.The camera types for the cameras may include, but are not limited to, digital cameras that may be designed for use with the components and/or systems of the vehicle 1200. The camera(s) may operate in accordance with ASIL (Automotive Safety Integrity Level) B and/or another ASIL. Depending on the embodiment, the camera types can achieve any image capture rate, e.g. B. 60 frames per second (fps), 120 fps, 240 fps, etc. The cameras can use rolling shutter, global shutter, another shutter type, or a combination thereof. In some examples, the color filter array a red-clear-clear-clear color filter arrangement (“red clear clear clear”, RCCC), a red-clear-clear-blue color filter arrangement (“red clear clear blue”, RCCB), a red-blue-green-clear -Color filter assembly (“red blue green clear” RBGC), a Foveon X3 color filter assembly, a Bayer sensor color filter assembly (RGGB), a monochrome sensor color filter assembly and/or another type of color filter assembly. In some embodiments, to increase light sensitivity, clear pixel cameras, such as. B. cameras with an RCCC, an RCCB and / or an RBGC color filter arrangement can be used.

In einigen Beispielen können eine oder mehrere der Kamera(s) verwendet werden, um fortschrittliche Fahrerassistenzsystem („advanced driver assistance systems“, ADAS)-Funktionen auszuführen (z. B. als Teil eines redundanten oder ausfallsicheren Designs). So kann zum Beispiel eine Multifunktions-Monokamera installiert werden, die Funktionen bereitstellt, die einen Spurhalteassistenten, einen Verkehrszeichenassistenten und eine intelligente Scheinwerfersteuerung umfassen. Eine oder mehrere der Kamera(s) (z. B. alle Kameras) können gleichzeitig Bilddaten (z. B. Video) aufzeichnen und bereitstellen.In some examples, one or more of the cameras may be used to perform advanced driver assistance systems (ADAS) functions (e.g., as part of a redundant or fail-safe design). For example, a multi-function mono camera can be installed that provides functions that include lane departure warning, traffic sign assist and intelligent headlight control. One or more of the camera(s) (e.g. all cameras) can simultaneously record and provide image data (e.g. video).

Eine oder mehrere der Kameras können in einer Montageanordnung, wie z. B. einer kundenspezifisch entworfenen (3-D-gedruckten) Anordnung, montiert werden, um Streulicht und Reflexionen aus dem Fahrzeuginneren (z. B. Reflexionen von dem Armaturenbrett, die in den Windschutzscheibenspiegeln reflektiert werden) auszuschalten, die die Bilddatenerfassungsfähigkeiten der Kamera beeinträchtigen können. Bei der Montage von Außenspiegeln können die Außenspiegel kundenspezifisch dreidimensional gedruckt werden, so dass die Kameramontageplatte der Form des Außenspiegels entspricht. In einigen Beispielen können die Kameras in den Außenspiegel integriert werden. Bei Seitenkameras können die Kameras auch in die vier Säulen an jeder Ecke der Fahrgastzelle integriert werden.One or more of the cameras can be in a mounting arrangement, such as. B. a custom-designed (3-D printed) assembly, to eliminate stray light and reflections from the vehicle interior (e.g. reflections from the dashboard reflected in the windshield mirrors) that can affect the camera's image data capture capabilities . When mounting exterior mirrors, the exterior mirrors can be customized three-dimensionally printed so that the camera mounting plate matches the shape of the exterior mirror. In some examples, the cameras can be integrated into the exterior mirror. For side cameras, the cameras can also be integrated into the four pillars at each corner of the passenger compartment.

Kameras mit einem Sichtfeld, das Abschnitte der Umgebung vor dem Fahrzeug 1200 einbezieht (z. B. nach vorne gerichtete Kameras), können für die Umgebungsansicht verwendet werden, um zu helfen, nach vorne gerichtete Pfade und Hindernisse zu identifizieren, sowie dazu beizutragen, mit Hilfe von einer oder mehreren Steuerungen 1236 und/oder Steuer-SoCs Informationen bereitzustellen, die für ein Erzeugen eines Belegungsgitters und/oder ein Bestimmen der bevorzugten Fahrzeugpfade entscheidend sind. Nach vorne gerichtete Kameras können verwendet werden, um viele der gleichen ADAS-Funktionen als LIDAR auszuführen, einschließlich Notbremsung, Fußgängererfassung und Kollisionsvermeidung. Nach vorne gerichtete Kameras können auch für ADAS-Funktionen und -Systeme wie eine Warnung vor dem Verlassen der Fahrspur („Lane Departure Warnings“, LDW), eine autonome Geschwindigkeitsregelung („Autonomous Cruise Control“, ACC) und/oder andere Funktionen wie die Erkennung von Verkehrszeichen verwendet werden.Cameras with a field of view that includes portions of the environment in front of the vehicle 1200 (e.g., forward-facing cameras) may be used for environmental viewing to help identify and assist in identifying forward-facing paths and obstacles One or more controllers 1236 and/or control SoCs provide information critical to generating an occupancy grid and/or determining preferred vehicle paths. Forward-facing cameras can be used to perform many of the same ADAS functions as LIDAR, including emergency braking, pedestrian detection and collision avoidance. Forward-facing cameras can also be used for ADAS features and systems such as Lane Departure Warnings (LDW), Autonomous Cruise Control (ACC), and/or other features such as Recognition of traffic signs can be used.

Eine Vielzahl von Kameras kann in einer nach vorne gerichteten Konfiguration verwendet werden, z. B. eine monokulare Kameraplattform, die einen Farbbildwandler vom Typ CMOS (Complementary Metal Oxide Semiconductor) aufweist. Ein weiteres Beispiel sind eine oder mehrere Weitwinkelkameras 1270, die verwendet werden können, um Objekte zu erkennen, die von der Peripherie her in Sicht kommen (z. B. Fußgänger, kreuzender Verkehr oder Fahrräder). Obwohl in 13 nur eine Weitwinkelkamera dargestellt ist, kann sich eine beliebige Anzahl von Weitwinkelkameras 1270 an dem Fahrzeug 1200 befinden. Darüber hinaus kann (können) Fernbereichskamera(s) 1298 (z. B. ein weitreichendes Stereokamerapaar) zur tiefenbasierten Objekterfassung verwendet werden, insbesondere für Objekte, für die ein neuronales Netz noch nicht trainiert wurde. Die Fernbereichskamera(s) 1298 kann (können) auch zur Objekterfassung und - klassifizierung sowie zur grundlegenden Objektverfolgung verwendet werden.A variety of cameras can be used in a front-facing configuration, such as: B. a monocular camera platform that has a color image converter of the CMOS (Complementary Metal Oxide Semiconductor) type. Another example is one or more wide-angle cameras 1270 that can be used to detect objects coming into view from the periphery (e.g., pedestrians, crossing traffic, or bicycles). Although in 13 Only one wide-angle camera is shown, any number of wide-angle cameras 1270 can be located on the vehicle 1200. Additionally, long-range camera(s) 1298 (e.g., a long-range stereo camera pair) may be used for depth-based object detection, particularly for objects for which a neural network has not yet been trained. The 1298 long range camera(s) can also be used for object detection and classification as well as basic object tracking.

Eine oder mehrere Stereokameras 1268 können auch in einer nach vorne gerichteten Konfiguration enthalten sein. Die Stereokamera(s) 1268 kann (können) eine integrierte Steuereinheit enthalten, die eine skalierbare Verarbeitungseinheit umfasst, die eine programmierbare Logik (z.B. FPGA) und einen Multicore-Mikroprozessor mit einer integrierten CAN- oder Ethernet-Schnittstelle auf einem einzigen Chip bereitstellen kann. Eine solche Einheit kann verwendet werden, um eine 3-D-Karte der Fahrzeugumgebung zu erzeugen, einschließlich einer Abstandsschätzung für alle Punkte in dem Bild. Eine alternative Stereokamera(s) 1268 kann einen kompakten Stereosicht-Sensor bzw. kompakte Stereosicht-Sensoren umfassen, der bzw. die zwei Kameralinsen (je eine links und rechts) und einen Bildverarbeitungschip enthält bzw. enthalten, die die Entfernung zwischen dem Fahrzeug und dem Zielobjekt messen und die erzeugten Informationen (z. B. Metadaten) verwenden können, um die autonomen Notbrems- und Spurhaltewarnfunktionen zu aktivieren. Andere Arten von Stereokamera(s) 1268 können zusätzlich oder alternativ zu den hier beschriebenen verwendet werden.One or more stereo cameras 1268 may also be included in a front-facing configuration. The stereo camera(s) 1268 may include an integrated control unit that includes a scalable processing unit that can provide programmable logic (e.g., FPGA) and a multicore microprocessor with an integrated CAN or Ethernet interface on a single chip. Such a unit can be used to generate a 3-D map of the vehicle's surroundings, including a distance estimate for all points in the image. An alternative stereo camera(s) 1268 may include a compact stereo vision sensor(s) that includes two camera lenses (one on the left and one on the right) and an image processing chip that determines the distance between the vehicle and the Measure target object and use the generated information (e.g. metadata) to activate the autonomous emergency braking and lane departure warning functions. Other types of stereo camera(s) 1268 may be used in addition to or alternative to those described herein.

Kameras mit einem Sichtfeld, die Abschnitte der Umgebung seitlich des Fahrzeugs 1200 einbeziehen (z. B. Seitenkameras), können für eine Umgebungsansicht verwendet werden, die Informationen bereitstellen, die zur Erzeugung und Aktualisierung des Belegungsgitters sowie zur Erzeugung von Seitenaufprallwarnungen verwendet werden. Zum Beispiel kann (können) die Surround-Kamera(s) 1274 (z. B. vier Surround-Kameras 1274, wie in 13 dargestellt) um das Fahrzeug 1200 positioniert werden. Die Surround-Kamera(s) 1274 kann/können Weitwinkelkamera(s) 1270, Fischaugenkamera(s), 360-Grad-Kamera(s) und/oder Ähnliches umfassen. Zum Beispiel können vier Fischaugenkameras an der Vorderseite, der Rückseite und den Seiten des Fahrzeugs angebracht werden. In einer alternativen Anordnung kann das Fahrzeug drei Surround-Kameras 1274 (z. B. links, rechts und hinten) verwenden und eine oder mehrere andere Kamera(s) (z. B. eine nach vorne gerichtete Kamera) als eine vierte Umgebungskamera nutzen.Cameras with a field of view that include portions of the environment to the side of the vehicle 1200 (e.g., side cameras) may be used for an environmental view that provides information used to generate and update the occupancy grid and to generate sei Tent collision warnings can be used. For example, the surround camera(s) 1274 (e.g. four surround cameras 1274, as in 13 shown) can be positioned around the vehicle 1200. The surround camera(s) 1274 may include wide angle camera(s) 1270, fisheye camera(s), 360 degree camera(s), and/or the like. For example, four fisheye cameras can be mounted on the front, back and sides of the vehicle. In an alternative arrangement, the vehicle may use three surround cameras 1274 (e.g., left, right, and rear) and use one or more other cameras (e.g., a front-facing camera) as a fourth surround camera.

Kameras mit einem Sichtfeld, die Abschnitte der Umgebung hinter dem Fahrzeug 1200 einschließen (z. B. Rückfahrkameras), können für eine Einparkhilfe, eine Umgebungsansicht, Heckkollisionswarnungen und ein Erzeugen und Aktualisieren des Belegungsgitters verwendet werden. Eine große Vielfalt von Kameras kann verwendet werden, einschließlich, aber nicht beschränkt auf Kameras, die auch als nach vorne gerichtete Kamera(s) geeignet sind (z. B. Fernbereichs- und/oder Mittelbereichskamera(s) 1298, Stereokamera(s) 1268, Infrarotkamera(s) 1272, usw.), wie hier beschrieben.Cameras with a field of view that include portions of the environment behind the vehicle 1200 (e.g., rearview cameras) may be used for parking assistance, an environmental view, rear collision warnings, and generating and updating the occupancy grid. A wide variety of cameras may be used, including, but not limited to, cameras that also function as front-facing camera(s) (e.g., long-range and/or mid-range camera(s) 1298, stereo camera(s) 1268 , infrared camera(s) 1272, etc.) as described here.

14 ist ein Blockdiagramm einer beispielhaften Systemarchitektur für das beispielhafte autonome Fahrzeug 1200 von 12, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Es sollte klar sein, dass diese und andere hier beschriebene Anordnungen nur als Beispiele dargelegt sind. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen usw.) können zusätzlich zu oder anstelle der dargestellten verwendet werden und einige Elemente können ganz weggelassen werden. Außerdem sind viele der hier beschriebenen Elemente funktionale Einheiten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jedem geeigneten Ort implementiert werden können. Verschiedene hier beschriebene Funktionen, die von Einheiten ausgeführt werden, können von Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der in einem Speicher gespeicherte Anweisungen ausführt. 14 is a block diagram of an example system architecture for the example autonomous vehicle 1200 of 12 , according to some embodiments of the present disclosure. It should be understood that these and other arrangements described herein are presented as examples only. Other arrangements and elements (e.g., machines, interfaces, functions, sequences, groupings of functions, etc.) may be used in addition to or instead of those shown, and some elements may be omitted entirely. Additionally, many of the elements described herein are functional units that may be implemented as discrete or distributed components or in conjunction with other components and in any suitable combination and location. Various functions described herein that are performed by devices may be performed by hardware, firmware, and/or software. For example, various functions can be performed by a processor executing instructions stored in memory.

Alle Komponenten, Merkmale und Systeme des Fahrzeugs 1200 in 14 sind als über einen Bus 1202 verbunden dargestellt. Der Bus 1202 kann eine Controller Area Network (CAN) Datenschnittstelle (hier alternativ als „CAN-Bus“ bezeichnet) umfassen. Ein CAN-Bus kann ein Netz innerhalb des Fahrzeugs 1200 sein, das verwendet wird, um die Steuerung verschiedener Merkmale und Funktionen des Fahrzeugs 1200 zu unterstützen, wie beispielsweise eine Bremsenbetätigung, Beschleunigung, Bremsen, Lenken, Scheibenwischer, usw. Ein CAN-Bus kann so ausgelegt sein, dass er Dutzende oder sogar Hunderte von Knoten hat, jeder mit seiner eigenen eindeutigen Kennung (z. B. einer CAN-ID). Der CAN-Bus kann ausgelesen werden, um einen Lenkradwinkel, eine Fahrgeschwindigkeit, eine Motordrehzahl pro Minute (RPM), Tastenpositionen und/oder andere Fahrzeugstatusanzeigen zu ermitteln. Der CAN-Bus kann ASIL B-konform sein.All components, features and systems of the vehicle 1200 in 14 are shown as connected via a bus 1202. The bus 1202 may include a Controller Area Network (CAN) data interface (alternatively referred to herein as a “CAN bus”). A CAN bus may be a network within the vehicle 1200 that is used to support control of various features and functions of the vehicle 1200, such as brake application, acceleration, braking, steering, windshield wipers, etc. A CAN bus may be designed to have dozens or even hundreds of nodes, each with its own unique identifier (e.g. a CAN ID). The CAN bus can be read to determine steering wheel angle, vehicle speed, engine speed per minute (RPM), button positions and/or other vehicle status indicators. The CAN bus can be ASIL B compliant.

Obwohl der Bus 1202 hier als CAN-Bus beschrieben wird, ist dies nicht als Einschränkung zu verstehen. Beispielsweise können zusätzlich oder alternativ zu dem CAN-Bus auch FlexRay und/oder Ethernet verwendet werden. Obwohl eine einzelne Leitung verwendet wird, um den Bus 1202 darzustellen, ist dies nicht als Einschränkung zu verstehen. So kann es beispielsweise eine beliebige Anzahl von Bussen 1202 geben, die einen oder mehrere CAN-Busse, einen oder mehrere FlexRay-Busse, einen oder mehrere Ethernet-Busse und/oder einen oder mehrere andere Bustypen mit einem anderen Protokoll aufweisen können. In einigen Beispielen können zwei oder mehr Busse 1202 verwendet werden, um unterschiedliche Funktionen auszuführen, und/oder sie können zur Redundanz verwendet werden. So kann beispielsweise ein erster Bus 1202 für eine Kollisionsvermeidungsfunktion verwendet werden und ein zweiter Bus 1202 kann für eine Betätigungssteuerung verwendet werden. In einem beliebigen Beispiel kann jeder Bus 1202 mit einer beliebigen der Komponenten des Fahrzeugs 1200 kommunizieren, und zwei oder mehr Busse 1202 können mit denselben Komponenten kommunizieren. In einigen Beispielen kann jedes SoC 1204, jede Steuerung 1236 und/oder jeder Computer innerhalb des Fahrzeugs Zugang zu denselben Eingangsdaten haben (z. B. Eingaben von Sensoren des Fahrzeugs 1200) und kann mit einem gemeinsamen Bus, wie dem CAN-Bus, verbunden sein.Although bus 1202 is described here as a CAN bus, this should not be construed as a limitation. For example, FlexRay and/or Ethernet can also be used in addition to or as an alternative to the CAN bus. Although a single line is used to represent bus 1202, this should not be construed as a limitation. For example, there may be any number of buses 1202, which may include one or more CAN buses, one or more FlexRay buses, one or more Ethernet buses, and/or one or more other types of buses with a different protocol. In some examples, two or more buses 1202 may be used to perform different functions and/or may be used for redundancy. For example, a first bus 1202 may be used for a collision avoidance function and a second bus 1202 may be used for actuation control. In any example, each bus 1202 may communicate with any of the components of the vehicle 1200, and two or more buses 1202 may communicate with the same components. In some examples, each SoC 1204, each controller 1236, and/or each computer within the vehicle may have access to the same input data (e.g., inputs from sensors of the vehicle 1200) and may be connected to a common bus, such as the CAN bus be.

Das Fahrzeug 1200 kann eine oder mehrere Steuerungen 1236 enthalten, wie sie hier in Bezug auf 12 beschrieben sind. Die Steuerung(en) 1236 kann (können) für eine Vielzahl von Funktionen verwendet werden. Die Steuerung(en) 1236 kann (können) mit verschiedenen anderen Komponenten und Systemen des Fahrzeugs 1200 gekoppelt werden und kann (können) zur Steuerung des Fahrzeugs 1200, zur künstlichen Intelligenz des Fahrzeugs 1200, zum Infotainment für das Fahrzeug 1200 und/oder dergleichen verwendet werden.The vehicle 1200 may include one or more controllers 1236 as described herein 12 are described. The controller(s) 1236 can be used for a variety of functions. The controller(s) 1236 may be coupled to various other components and systems of the vehicle 1200 and may be used for control of the vehicle 1200, artificial intelligence of the vehicle 1200, infotainment for the vehicle 1200, and/or the like become.

Das Fahrzeug 1200 kann ein oder mehrere System(e) auf einem Chip („System on Chip“, SoC) 1204 aufweisen. Das SoC 1204 kann CPU(s) 1206, GPU(s) 1208, Prozessor(en) 1210, Cache(s) 1212, Beschleuniger 1214, Datenspeicher 1216 und/oder andere nicht dargestellte Komponenten und Merkmale aufweisen. Das (die) SoC(s) 1204 kann (können) verwendet werden, um das Fahrzeug 1200 in einer Vielzahl von Plattformen und Systemen zu steuern. Zum Beispiel kann das SoC (bzw. die SoCs) 1204 in einem System (z. B. dem System des Fahrzeugs 1200) mit einer HD-Karte 1222 kombiniert werden, die Kartenauffrischungen und/oder Kartenaktualisierungen über eine Netzschnittstelle 1224 von einem oder mehreren Servern (z. B. Server(n) 1278 von 15) erhalten kann.The vehicle 1200 may include one or more System on Chip (SoC) 1204. The SoC 1204 can have CPU(s) 1206, GPU(s) 1208, Processor(s) 1210, Cache(s) 1212, Accelerator 1214, data storage 1216 and/or other components and features not shown. The SoC(s) 1204 may be used to control the vehicle 1200 in a variety of platforms and systems. For example, the SoC(s) 1204 may be combined in a system (e.g., the system of the vehicle 1200) with an HD card 1222 that provides map refreshes and/or map updates via a network interface 1224 from one or more servers (e.g. server(s) 1278 from 15 ) can be received.

Die CPU(s) 1206 kann (können) einen CPU-Cluster oder CPU-Komplex (hier alternativ als „CCPLEX“ bezeichnet) umfassen. Die CPU(s) 1206 kann (können) mehrere Kerne und/oder L2-Caches enthalten. In einigen Ausführungsformen kann (können) die CPU(s) 1206 beispielsweise acht Kerne in einer kohärenten Multiprozessorkonfiguration umfassen. In einigen Ausführungsformen kann (können) die CPU(s) 1206 vier Dual-Core-Cluster umfassen, wobei jeder Cluster einen dedizierten L2-Cache aufweist (z. B. einen 2 MB L2-Cache). Die CPU(s) 1206 (z. B. der CCPLEX) kann (können) konfiguriert werden, um den gleichzeitigen Clusterbetrieb zu unterstützen, wodurch ermöglicht wird, dass eine beliebige Kombination von Clustern der CPU(s) 1206 zu einem bestimmten Zeitpunkt aktiv ist.The CPU(s) 1206 may include a CPU cluster or CPU complex (alternatively referred to herein as “CCPLEX”). The CPU(s) 1206 may contain multiple cores and/or L2 caches. For example, in some embodiments, CPU(s) 1206 may include eight cores in a coherent multiprocessor configuration. In some embodiments, the CPU(s) 1206 may include four dual-core clusters, each cluster having a dedicated L2 cache (e.g., a 2 MB L2 cache). The CPU(s) 1206 (e.g., the CCPLEX) may be configured to support concurrent cluster operation, allowing any combination of clusters of the CPU(s) 1206 to be active at any given time .

Die CPU(s) 1206 kann (können) Energieverwaltungsfunktionen implementieren, die eines oder mehrere der folgenden Merkmale aufweisen: einzelne Hardwareblöcke können automatisch taktbegrenzt werden, wenn sie sich im Leerlauf befinden, um dynamische Energie zu sparen; jeder Kerntakt kann begrenzt werden, wenn der Kern aufgrund der Ausführung von WFI/WFE-Befehlen nicht aktiv Befehle ausführt; jeder Kern kann unabhängig strombegrenzt sein; jeder Kerncluster kann unabhängig taktbegrenzt sein, wenn alle Kerne taktbegrenzt oder strombegrenzt sind; und/oder jeder Kerncluster kann unabhängig strombegrenzt sein, wenn alle Kerne strombegrenzt sind. Die CPU(s) 1206 kann (können) darüber hinaus einen erweiterten Algorithmus zur Verwaltung von Energiezuständen implementieren, bei dem zulässige Energiezustände und erwartete Aufwachzeiten festgelegt werden und die Hardware/der Mikrocode den besten Energiezustand bestimmt, der für den Kern, den Cluster und CCPLEX einzunehmen ist. Die Prozessorkerne können vereinfachte Sequenzen für den Eintritt in den Energiezustand in Software unterstützen, wobei die Arbeit an den Mikrocode ausgelagert wird.The CPU(s) 1206 may implement power management functions that include one or more of the following features: individual hardware blocks may be automatically clock limited when idle to conserve dynamic power; each core clock can be limited when the core is not actively executing instructions due to the execution of WFI/WFE instructions; each core can be independently current limited; each core cluster can be independently clock limited if all cores are clock limited or power limited; and/or each core cluster may be independently power limited if all cores are power limited. The CPU(s) 1206 may also implement an advanced power state management algorithm in which allowable power states and expected wake-up times are set and the hardware/microcode determines the best power state to use for the core, cluster, and CCPLEX is to be taken. The processor cores can support simplified power state entry sequences in software, offloading the work to microcode.

Die GPU(s) 1208 kann (können) eine integrierte GPU (hier alternativ als „iGPU“ bezeichnet) umfassen. Die GPU(s) 1208 kann (können) programmierbar und für parallele Arbeitslasten effizient sein. Die GPU(s) 1208 kann (können) in einigen Beispielen einen erweiterten Tensor-Befehlssatz verwenden. Die GPU(s) 1208 kann (können) einen oder mehrere Streaming-Mikroprozessoren enthalten, wobei jeder Streaming-Mikroprozessor einen L1-Cache (z. B. einen L1-Cache mit mindestens 96 KB Speicherkapazität) enthalten kann und zwei oder mehr der Streaming-Mikroprozessoren sich einen L2-Cache (z. B. einen L2-Cache mit 512 KB Speicherkapazität) teilen können. In einigen Ausführungsformen kann (können) die GPU(s) 1208 mindestens acht Streaming-Mikroprozessoren umfassen. Die GPU(s) 1208 kann (können) Computer-basierte Anwendungsprogrammierschnittstelle(n) („Application Programming Interface(s)“, API(s)) für Berechnungen verwenden. Darüber hinaus kann (können) die GPU(s) 1208 eine oder mehrere parallele Rechenplattformen und/oder Programmiermodelle (z. B. CUDA von NVIDIA) verwenden.The GPU(s) 1208 may include an integrated GPU (alternatively referred to herein as an “iGPU”). The GPU(s) 1208 may be programmable and efficient for parallel workloads. The GPU(s) 1208 may use an extended Tensor instruction set in some examples. The GPU(s) 1208 may include one or more streaming microprocessors, where each streaming microprocessor may include an L1 cache (e.g., an L1 cache with at least 96 KB of storage capacity) and two or more of the streaming -Microprocessors can share an L2 cache (e.g. an L2 cache with 512 KB of memory capacity). In some embodiments, the GPU(s) 1208 may include at least eight streaming microprocessors. The GPU(s) 1208 may use computer-based application programming interface(s) for calculations. Additionally, the GPU(s) 1208 may use one or more parallel computing platforms and/or programming models (e.g., NVIDIA's CUDA).

Die GPU(s) 1208 kann (können) für die beste Leistung in automobilen und eingebetteten Anwendungsfällen energieoptimiert sein. Beispielsweise kann (können) die GPU(s) 1208 auf einem Fin-Feldeffekttransistor (FinFET) hergestellt werden. Dies ist jedoch nicht als Einschränkung zu verstehen, und die GPU(s) 1208 kann (können) auch mit anderen Halbleiterfertigungsverfahren hergestellt werden. Jeder Streaming-Mikroprozessor kann eine Anzahl von in mehrere Blöcke unterteilten gemischt-präzisen Rechenkernen enthalten. So können beispielsweise 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke unterteilt werden, ohne darauf beschränkt zu sein. In einem solchen Beispiel können jedem Verarbeitungsblock 16 FP32-Kerne, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA TENSOR COREs mit gemischter Präzision für Deep-Learning-Matrixarithmetik, ein LO-Befehlscache, ein Warp-Scheduler, eine Dispatch-Einheit und/oder eine 64-KB-Registerdatei zugewiesen werden. Darüber hinaus können die Streaming-Mikroprozessoren unabhängige parallele Ganzzahl- und Gleitkommadatenpfade enthalten, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Berechnungen und Adressierungsberechnungen bereitzustellen. Die Streaming-Mikroprozessoren können eine unabhängige Thread-Planungsfähigkeit aufweisen, um eine feingranulare Synchronisierung und Zusammenarbeit zwischen parallelen Threads zu ermöglichen. Die Streaming-Mikroprozessoren können einen kombinierten L1-Datencache und eine gemeinsam genutzte Speichereinheit enthalten, um die Leistung zu verbessern und gleichzeitig das Programmieren zu vereinfachen.The GPU(s) 1208 may be power optimized for best performance in automotive and embedded use cases. For example, the GPU(s) 1208 may be fabricated on a Fin Field Effect Transistor (FinFET). However, this should not be construed as a limitation, and the GPU(s) 1208 may also be manufactured using other semiconductor manufacturing methods. Each streaming microprocessor can contain a number of mixed-precision computing cores divided into several blocks. For example, 64 PF32 cores and 32 PF64 cores can be divided into four processing blocks, but are not limited to this. In such an example, each processing block can have 16 FP32 cores, 8 FP64 cores, 16 INT32 cores, two mixed precision NVIDIA TENSOR COREs for deep learning matrix arithmetic, an LO instruction cache, a warp scheduler, a dispatch unit and/or a 64 KB register file can be assigned. Additionally, the streaming microprocessors can include independent parallel integer and floating point data paths to provide efficient execution of workloads with a mix of computations and addressing computations. The streaming microprocessors can have independent thread scheduling capability to enable fine-grained synchronization and collaboration between parallel threads. The streaming microprocessors can include a combined L1 data cache and shared memory unit to improve performance while simplifying programming.

Die GPU(s) 1208 kann (können) einen Speicher mit hoher Bandbreite („High Bandwidth Memory“, HBM) und/oder ein 16-GB-HBM2-Speicher-Subsystem umfassen, um in einigen Beispielen eine Spitzenspeicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. In einigen Beispielen kann zusätzlich oder alternativ zu dem HBM-Speicher ein synchroner Grafik-Direktzugriffsspeicher (SGRAM) verwendet werden, z. B. ein synchroner Grafik-Doppeldatenraten-Direktzugriffsspeicher vom Typ 5 (GDDR5).The GPU(s) 1208 may include High Bandwidth Memory (HBM) and/or a 16 GB HBM2 memory subsystem to provide, in some examples, a peak memory bandwidth of approximately 900 GB/ Second to provide. In some examples In addition or as an alternative to the HBM memory, a synchronous graphics random access memory (SGRAM) can be used, e.g. B. a synchronous graphics dual data rate random access memory type 5 (GDDR5).

Die GPU(s) 1208 kann (können) eine Unified-Memory-Technologie mit Zugriffszählern enthalten, um eine genauere Migration von Speicherseiten zu dem Prozessor zu ermöglichen, der am häufigsten auf sie zugreift, wodurch die Effizienz von Speicherbereichen verbessert wird, die von den Prozessoren gemeinsam genutzt werden. In einigen Beispielen kann die Unterstützung von Adressübersetzungsdiensten (ATS) verwendet werden, um der/den GPU(s) 1208 zu ermöglichen, direkt auf die Seitentabellen der CPU(s) 1206 zuzugreifen. In solchen Beispielen kann, wenn die Speicherverwaltungseinheit (MMU) der GPU(s) 1208 einen Fehler feststellt, eine Adressübersetzungsanforderung an die CPU(s) 1206 übertragen werden. Als Reaktion darauf kann (können) die CPU(s) 1206 in ihren Seitentabellen nach der virtuell-physikalischen Abbildung für die Adresse suchen und die Übersetzung an die GPU(s) 1208 zurückübertragen. Als solches kann die Unified-Memory-Technologie einen einzigen einheitlichen virtuellen Adressraum für den Speicher sowohl der CPU(s) 1206 als auch der GPU(s) 1208 ermöglichen, wodurch die Programmierung der GPU(s) 1208 und die Portierung von Anwendungen auf die GPU(s) 1208 vereinfacht wird.The GPU(s) 1208 may include unified memory technology with access counters to enable more accurate migration of memory pages to the processor that accesses them most frequently, thereby improving the efficiency of memory areas used by the Processors are shared. In some examples, Address Translation Services (ATS) support may be used to enable GPU(s) 1208 to directly access the page tables of CPU(s) 1206. In such examples, if the memory management unit (MMU) of the GPU(s) 1208 detects an error, an address translation request may be transmitted to the CPU(s) 1206. In response, the CPU(s) 1206 may look up the virtual physical mapping for the address in its page tables and transmit the translation back to the GPU(s) 1208. As such, unified memory technology may enable a single unified virtual address space for the memory of both CPU(s) 1206 and GPU(s) 1208, thereby facilitating programming of GPU(s) 1208 and porting of applications to the GPU(s) 1208 is simplified.

Darüber hinaus kann die GPU(s) 1208 einen Zugriffszähler enthalten, der die Zugriffshäufigkeit der GPU(s) 1208 auf den Speicher anderer Prozessoren nachverfolgen kann. Der Zugriffszähler kann dazu beitragen, dass Speicherseiten in den physischen Speicher von dem Prozessor verschoben werden, der am häufigsten auf die Seiten zugreift.Additionally, the GPU(s) 1208 may include an access counter that may track the frequency of accesses of the GPU(s) 1208 to the memory of other processors. The access counter can help move memory pages into physical memory by the processor that accesses the pages most frequently.

Das (die) SoC(s) 1204 kann (können) eine beliebige Anzahl von Cache(s) 1212 enthalten, einschließlich der hier beschriebenen. Der (die) Cache(s) 1212 kann (können) beispielsweise einen L3-Cache enthalten, der sowohl der (den) CPU(s) 1206 als auch der (den) GPU(s) 1208 zur Verfügung steht (z. B. der sowohl mit der (den) CPU(s) 1206 als auch mit der (den) GPU(s) 1208 verbunden ist). Der (die) Cache(s) 1212 kann (können) einen Rückschreib-Cache umfassen, der die Zustände von Zeilen nachverfolgen kann, z. B. durch Verwenden eines Cache-Kohärenzprotokolls (z. B. MEI, MESI, MSI, usw.). Der L3-Cache kann je nach Ausführungsform 4 MB oder mehr aufweisen, obwohl auch kleinere Cache-Größen verwendet werden können.The SoC(s) 1204 may include any number of cache(s) 1212, including those described herein. For example, cache(s) 1212 may include an L3 cache that is available to both CPU(s) 1206 and GPU(s) 1208 (e.g., which is connected to both the CPU(s) 1206 and the GPU(s) 1208). The cache(s) 1212 may include a write-back cache that can track the states of lines, e.g. B. by using a cache coherence protocol (e.g. MEI, MESI, MSI, etc.). The L3 cache can be 4 MB or larger depending on the embodiment, although smaller cache sizes can also be used.

Das (die) SoC(s) 1204 kann (können) eine arithmetische Logikeinheit(en) (ALU(s)) enthalten, die beim Durchführen einer Verarbeitung in Bezug auf eine beliebige Vielfalt von Aufgaben oder Operationen des Fahrzeugs 1200 - wie die Verarbeitung von DNNs - wirksam eingesetzt werden kann. Darüber hinaus kann (können) das (die) SoC(s) 1204 eine Gleitkommaeinheit(en) (FPU(s)) - oder andere mathematische Koprozessoren oder numerische Koprozessortypen - zum Durchführen mathematischer Operationen innerhalb des Systems aufweisen. Zum Beispiel kann (können) das (die) SoC(s) 504 eine oder mehrere FPUs enthalten, die als Ausführungseinheiten in eine CPU(s) 1206 und/oder GPU(s) 1208 integriert sind.The SoC(s) 1204 may include an arithmetic logic unit(s) (ALU(s)) used in performing processing related to any variety of tasks or operations of the vehicle 1200 - such as processing DNNs - can be used effectively. Additionally, the SoC(s) 1204 may include a floating point unit(s) (FPU(s)) - or other mathematical coprocessors or numerical coprocessor types - for performing mathematical operations within the system. For example, the SoC(s) 504 may include one or more FPUs integrated as execution units into a CPU(s) 1206 and/or GPU(s) 1208.

Das (die) SoC(s) 1204 kann (können) einen oder mehrere Beschleuniger 1214 aufweisen (z. B. Hardwarebeschleuniger, Softwarebeschleuniger oder eine Kombination davon). Beispielsweise kann (können) das (die) SoC(s) 1204 einen Hardware-Beschleunigungs-Cluster aufweisen, der optimierte Hardware-Beschleuniger und/oder einen großen On-Chip-Speicher umfassen kann. Der große On-Chip-Speicher (z. B. 4 MB SRAM) kann den Hardware-Beschleunigungscluster in die Lage versetzen, neuronale Netzwerke und andere Berechnungen zu beschleunigen. Der Hardware-Beschleunigungscluster kann zur Ergänzung der GPU(s) 1208 und zur Entlastung einiger Aufgaben der GPU(s) 1208 verwendet werden (z. B. um mehr Zyklen der GPU(s) 1208 für das Durchführen anderer Aufgaben freizugeben). Der (die) Beschleuniger 1214 kann (können) beispielsweise für gezielte Arbeitslasten (z. B. Wahrnehmung, faltende neuronale Netze („Convolutional Neural Networks“, CNNs) usw.) verwendet werden, die stabil genug sind, um beschleunigt werden zu können. Der Begriff „CNN“, wie er hier verwendet wird, kann alle Arten von CNNs einbeziehen, einschließlich regionenbasierter oder regionaler faltender neuronaler Netze (RCNNs) und schneller RCNNs (z. B. wie sie für die Objekterfassung verwendet werden).The SoC(s) 1204 may include one or more accelerators 1214 (e.g., hardware accelerators, software accelerators, or a combination thereof). For example, the SoC(s) 1204 may include a hardware acceleration cluster, which may include optimized hardware accelerators and/or large on-chip memory. The large on-chip memory (e.g. 4MB SRAM) can enable the hardware acceleration cluster to accelerate neural networks and other calculations. The hardware acceleration cluster may be used to supplement the GPU(s) 1208 and to offload some tasks of the GPU(s) 1208 (e.g., freeing more cycles of the GPU(s) 1208 to perform other tasks). For example, the accelerator(s) 1214 may be used for targeted workloads (e.g., perception, convolutional neural networks (CNNs), etc.) that are stable enough to be accelerated. The term “CNN” as used herein can include all types of CNNs, including region-based or regional convolutional neural networks (RCNNs) and fast RCNNs (e.g., as used for object detection).

Der (die) Beschleuniger 1214 (z. B. der Hardware-Beschleunigungscluster) kann (können) einen Deep-Learning-Beschleuniger („Deep Learning Accelerator“, DLA) aufweisen. Der (die) DLA(s) kann (können) eine oder mehrere Tensor Processing Einheiten (TPUs) aufweisen, die konfiguriert sein können, um zusätzliche zehn Billionen Operationen pro Sekunde für Deep-Learning-Anwendungen und Inferencing bereitzustellen. Die TPUs können Beschleuniger sein, die konfiguriert und optimiert sind, um Bildverarbeitungsfunktionen auszuführen (z. B. für CNNs, RCNNs usw.). Der (die) DLA(s) kann (können) darüber hinaus für einen bestimmten Satz von neuronalen Netztypen und Fließkommaoperationen sowie für Inferencing optimiert sein. Das Design des (der) DLA(s) kann mehr Leistung pro Millimeter bereitstellen als eine Allzweck-GPU und übertrifft die Leistung einer CPU bei weitem. Die TPU(s) kann (können) mehrere Funktionen ausführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die z. B. INT8-, INT16- und FP16-Datentypen sowohl für Merkmale als auch für Gewichte unterstützt, sowie Postprozessorfunktionen.The accelerator(s) 1214 (e.g., the hardware acceleration cluster) may include a deep learning accelerator (DLA). The DLA(s) may include one or more Tensor Processing Units (TPUs), which may be configured to provide an additional ten trillion operations per second for deep learning applications and inferencing. The TPUs can be accelerators configured and optimized to perform image processing functions (e.g. for CNNs, RCNNs, etc.). The DLA(s) may also be optimized for a particular set of neural network types and floating point operations, as well as for inferencing. The design of the DLA(s) can deliver more performance per millimeter than a general-purpose GPU and far exceeds the performance of a CPU. The TPU(s) can perform multiple functions, including a single-instance convolution radio tion, which e.g. B. INT8, INT16 and FP16 data types supported for both features and weights, as well as post-processing functions.

Der (die) DLA(s) können schnell und effizient neuronale Netze, insbesondere CNNs, auf verarbeiteten oder unverarbeiteten Daten für eine Vielzahl von Funktionen ausführen, darunter beispielsweise und ohne Einschränkung: ein CNN für eine Objektidentifizierung und -erfassung unter Verwendung von Daten von Kamerasensoren; ein CNN für eine Entfernungsschätzung unter Verwendung von Daten von Kamerasensoren; ein CNN für eine Notfallfahrzeugerkennung und -identifizierung und -erfassung unter Verwendung von Daten von Mikrofonen; ein CNN für eine Gesichtserkennung und eine Fahrzeugbesitzeridentifizierung unter Verwendung von Daten von Kamerasensoren; und/oder ein CNN für sicherheitsrelevante Ereignisse.The DLA(s) can quickly and efficiently run neural networks, particularly CNNs, on processed or unprocessed data for a variety of functions including, for example and without limitation: a CNN for object identification and detection using data from camera sensors ; a CNN for distance estimation using data from camera sensors; a CNN for emergency vehicle detection and identification and capture using data from microphones; a CNN for facial recognition and vehicle owner identification using data from camera sensors; and/or a CNN for security-related events.

Der (die) DLA(s) kann (können) jede Funktion der GPU(s) 1208 ausführen, und durch Verwenden eines Inferenzbeschleunigers kann ein Entwickler beispielsweise entweder den (die) DLA(s) oder die GPU(s) 1208 für eine beliebige Funktion einsetzen. Zum Beispiel kann der Entwickler die Verarbeitung von CNNs und Gleitkommaoperationen auf den (die) DLA(s) konzentrieren und andere Funktionen der/den GPU(s) 1208 und/oder anderen Beschleuniger(n) 1214 überlassen.The DLA(s) can perform any function of the GPU(s) 1208, and by using an inference accelerator, for example, a developer can use either the DLA(s) or the GPU(s) 1208 for any one Use function. For example, the developer may concentrate the processing of CNNs and floating point operations on the DLA(s) and leave other functions to the GPU(s) 1208 and/or other accelerator(s) 1214.

Der (die) Beschleuniger 1214 (z. B. der Hardware-Beschleunigungscluster) kann (können) einen programmierbaren Bildverarbeitungsbeschleuniger (PVA) aufweisen, der hier alternativ auch als Computer-Vision-Beschleuniger bezeichnet werden kann. Der (die) PVA(s) kann (können) ausgelegt und konfiguriert sein, um Computer-Vision-Algorithmen für fortschrittliche Fahrerassistenzsysteme (ADAS), autonomes Fahren und/oder Augmented-Reality- (AR) und/oder Virtual-Reality-(VR) Anwendungen zu beschleunigen. Der (die) PVA(s) können ein Gleichgewicht zwischen Leistung und Flexibilität bieten. Zum Beispiel kann jeder PVA zum Beispiel und ohne Einschränkung eine beliebige Anzahl von Rechenkernen mit reduziertem Befehlssatz (RISC), direkten Speicherzugriff (DMA) und/oder eine beliebige Anzahl von Vektorprozessoren aufweisen.The accelerator(s) 1214 (e.g., the hardware acceleration cluster) may include a programmable vision accelerator (PVA), which may alternatively be referred to herein as a computer vision accelerator. The PVA(s) may be designed and configured to implement computer vision algorithms for advanced driver assistance systems (ADAS), autonomous driving and/or augmented reality (AR) and/or virtual reality ( VR) to accelerate applications. The PVA(s) can provide a balance between performance and flexibility. For example, each PVA may include, for example and without limitation, any number of reduced instruction set computing (RISC), direct memory access (DMA), and/or any number of vector processors.

Die RISC-Kerne können mit Bildsensoren (z. B. den Bildsensoren einer der hier beschriebenen Kameras), Bildsignalprozessoren und/oder dergleichen interagieren. Jeder der RISC-Kerne kann eine beliebige Menge an Speicher aufweisen. Die RISC-Kerne können je nach Ausführungsform eine beliebige Anzahl von Protokollen verwenden. In einigen Beispielen können die RISC-Kerne ein Echtzeitbetriebssystem (RTOS) ausführen. Die RISC-Kerne können mit einem oder mehreren integrierten Schaltkreisvorrichtungen, anwendungsspezifischen integrierten Schaltkreisvorrichtungen (ASICs) und/oder Speichervorrichtungen implementiert werden. Zum Beispiel können die RISC-Kerne einen Befehls-Cache und/oder einen eng gekoppelten RAM enthalten.The RISC cores may interact with image sensors (e.g., the image sensors of one of the cameras described herein), image signal processors, and/or the like. Each of the RISC cores can have any amount of memory. The RISC cores can use any number of protocols depending on the embodiment. In some examples, the RISC cores may run a real-time operating system (RTOS). The RISC cores may be implemented with one or more integrated circuit devices, application specific integrated circuit devices (ASICs), and/or memory devices. For example, the RISC cores may include an instruction cache and/or tightly coupled RAM.

Der DMA kann es Komponenten des (der) PVA(s) ermöglichen, unabhängig von der (den) CPU(s) 1206 auf den Systemspeicher zuzugreifen. Der DMA kann eine beliebige Anzahl von Funktionen unterstützen, die verwendet werden, um den PVA zu optimieren, einschließlich, aber nicht beschränkt auf, die Unterstützung von mehrdimensionaler Adressierung und/oder zirkulärer Adressierung. In einigen Beispielen kann der DMA bis zu sechs oder mehr Dimensionen der Adressierung unterstützen, die Blockbreite, Blockhöhe, Blocktiefe, horizontales Block-Stepping, vertikales Block-Stepping und/oder Tiefen-Stepping aufweisen können.The DMA may enable components of the PVA(s) to access system memory independently of the CPU(s) 1206. The DMA may support any number of functions used to optimize the PVA, including, but not limited to, support for multidimensional addressing and/or circular addressing. In some examples, the DMA may support up to six or more dimensions of addressing, which may include block width, block height, block depth, horizontal block stepping, vertical block stepping, and/or depth stepping.

Die Vektorprozessoren können programmierbare Prozessoren sein, die ausgelegt sein können, um die Programmierung für Computer-Vision-Algorithmen effizient und flexibel auszuführen und Signalverarbeitungsmöglichkeiten bereitzustellen. In einigen Beispielen kann der PVA einen PVA-Kern und zwei Vektorverarbeitungs-Subsystem-Partitionen aufweisen. Der PVA-Kern kann ein Prozessor-Subsystem, DMA-Engine(s) (z.B. zwei DMA-Engines) und/oder andere Peripheriegeräte aufweisen. Das Vektorverarbeitungs-Teilsystem kann als die primäre Verarbeitungseinheit des PVA arbeiten und kann eine Vektorverarbeitungseinheit (VPU), einen Befehlscache und/oder einen Vektorspeicher (z. B. VMEM) aufweisen. Ein VPU-Kern kann einen digitalen Signalprozessor aufweisen, z. B. einen digitalen Signalprozessor mit einem einzelnen Befehl für mehrere Daten („Single Instruction, Multiple Data“, SIMD) und sehr langen Befehlsworten („Very Long Instruction Word“, VLlW). Die Kombination von SIMD und VLIW kann den Durchsatz und die Geschwindigkeit erhöhen.The vector processors may be programmable processors that may be designed to efficiently and flexibly execute programming for computer vision algorithms and to provide signal processing capabilities. In some examples, the PVA may include a PVA core and two vector processing subsystem partitions. The PVA core may include a processor subsystem, DMA engine(s) (e.g. two DMA engines), and/or other peripherals. The vector processing subsystem may operate as the primary processing unit of the PVA and may include a vector processing unit (VPU), an instruction cache, and/or a vector memory (e.g., VMEM). A VPU core may include a digital signal processor, e.g. B. a digital signal processor with a single instruction for multiple data (“Single Instruction, Multiple Data”, SIMD) and very long instruction words (“Very Long Instruction Word”, VLlW). The combination of SIMD and VLIW can increase throughput and speed.

Jeder der Vektorprozessoren kann einen Befehls-Cache aufweisen und mit einem dedizierten Speicher verbunden sein. Als Ergebnis kann in einigen Beispielen jeder der Vektorprozessoren konfiguriert sein, unabhängig von den anderen Vektorprozessoren zu arbeiten. In anderen Beispielen können die Vektorprozessoren, die in einem bestimmten PVA enthalten sind, konfiguriert sein, um Datenparallelität zu verwenden. Zum Beispiel kann in einigen Ausführungsformen die Vielzahl von Vektorprozessoren, die in einem einzelnen PVA enthalten sind, den gleichen Computer-Vision-Algorithmus ausführen, aber auf verschiedenen Regionen eines Bildes. In anderen Beispielen können die Vektorprozessoren, die in einem bestimmten PVA enthalten sind, gleichzeitig verschiedene Computer-Vision-Algorithmen auf demselben Bild ausführen oder sogar verschiedene Algorithmen auf aufeinanderfolgenden Bildern oder Abschnitten eines Bildes ausführen. Unter anderem kann eine beliebige Anzahl von PVAs in dem Hardware-Beschleunigungscluster vorhanden sein und eine beliebige Anzahl von Vektorprozessoren in jedem der PVAs enthalten sein. Zusätzlich kann (können) der (die) PVA(s) einen zusätzlichen Fehlerkorrekturcode („Error Correcting Code“, ECC) Speicher aufweisen, um die Sicherheit des Gesamtsystems zu erhöhen.Each of the vector processors may have an instruction cache and be connected to dedicated memory. As a result, in some examples, each of the vector processors may be configured to operate independently of the other vector processors. In other examples, the vector processors included in a particular PVA may be configured to use data parallelism. For example, in some embodiments, the plurality of vector processors included in a single PVA may execute the same computer vision algorithm but on different regions of an image. In other examples, the vector processors included in a given PVA can simultaneously run different computer vision algorithms on the same image, or even different ones Run algorithms on consecutive images or sections of an image. Among other things, any number of PVAs may be present in the hardware acceleration cluster and any number of vector processors may be included in each of the PVAs. In addition, the PVA(s) may have an additional error correcting code (ECC) memory to increase the security of the overall system.

Der (die) Beschleuniger 1214 (z. B. der Hardware-Beschleunigungscluster) kann (können) ein Computer-Vision-Netz auf einem Chip und SRAM aufweisen, um einen SRAM mit hoher Bandbreite und niedriger Latenz für den (die) Beschleuniger 1214 bereitzustellen. In einigen Beispielen kann der Speicher auf dem Chip mindestens 4 MB SRAM aufweisen, der beispielsweise und ohne Einschränkung aus acht feldkonfigurierbaren Speicherblöcken besteht, die sowohl für den PVA als auch für den DLA zugreifbar sein können. Jedes Paar von Speicherblöcken kann eine erweiterte Peripheriebus-Schnittstelle („Advanced Peripheral Bus“, APB), Konfigurationsschaltungen, eine Steuerung und einen Multiplexer aufweisen. Jede Art von Speicher kann verwendet werden. Der PVA und der DLA können auf den Speicher über ein Backbone zugreifen, das dem PVA und dem DLA einen Hochgeschwindigkeitszugriff auf den Speicher bereitstellt. Der Backbone kann ein Computer-Vision-Netz auf einem Chip aufweisen, das den PVA und den DLA mit dem Speicher verbindet (z. B. unter Verwendung des APB).The accelerator(s) 1214 (e.g., hardware acceleration cluster) may include an on-chip computer vision network and SRAM to provide high-bandwidth, low-latency SRAM for the accelerator(s) 1214 . In some examples, the on-chip memory may include at least 4 MB of SRAM, consisting of, for example and without limitation, eight field-configurable memory blocks that may be accessible to both the PVA and the DLA. Each pair of memory blocks may include an Advanced Peripheral Bus (APB) interface, configuration circuitry, a controller, and a multiplexer. Any type of storage can be used. The PVA and the DLA can access the memory over a backbone that provides the PVA and the DLA with high-speed access to the memory. The backbone may include an on-chip computer vision network connecting the PVA and DLA to the memory (e.g. using the APB).

Das Computer-Vision-Netz auf dem Chip kann eine Schnittstelle aufweisen, die vor der Übertragung von beliebigen Steuersignalen/Adressen/Daten feststellt, dass sowohl der PVA als auch der DLA einsatzbereite und gültige Signale liefern. Eine solche Schnittstelle kann getrennte Phasen und getrennte Kanäle für die Übertragung von Steuersignalen/Adressen/Daten sowie eine Burst-Kommunikation für die kontinuierliche Datenübertragung vorsehen. Diese Art von Schnittstelle kann den Normen ISO 26262 oder IEC 61508 entsprechen, obwohl auch andere Normen und Protokolle verwendet werden können.The on-chip computer vision network may include an interface that determines that both the PVA and DLA are providing operational and valid signals before transmitting any control signals/addresses/data. Such an interface can provide separate phases and separate channels for the transmission of control signals/addresses/data as well as burst communication for continuous data transmission. This type of interface can conform to ISO 26262 or IEC 61508 standards, although other standards and protocols can also be used.

In einigen Beispielen kann (können) das (die) SoC(s) 1204 einen Echtzeit-Raytracing-Hardwarebeschleuniger aufweisen, wie er in der am 10. August 2018 eingereichten US-Patentanmeldung Nr. 16/101,232 beschrieben ist. Der Echtzeit-Raytracing-Hardwarebeschleuniger kann verwendet werden, um schnell und effizient die Positionen und Ausdehnungen von Objekten (z. B. innerhalb eines Weltmodells) zu bestimmen, um Echtzeit-Visualisierungssimulationen zu erzeugen, für die RADAR-Signalinterpretation, für die Schallausbreitungssynthese und/oder -analyse, für die Simulation von SONAR-Systemen, für die allgemeine Wellenausbreitungssimulation, für einen Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder anderer Funktionen und/oder für andere Verwendungen. In einigen Ausführungsformen können eine oder mehrere Tree Traversal Units (TTUs) für eine Ausführung einer oder mehrerer Raytracingbezogener Operationen verwendet werden.In some examples, the SoC(s) 1204 may include a real-time ray tracing hardware accelerator, as described in the filing on August 10, 2018 US Patent Application No. 16/101,232 is described. The real-time ray tracing hardware accelerator can be used to quickly and efficiently determine the positions and extents of objects (e.g. within a world model), to generate real-time visualization simulations, for RADAR signal interpretation, for sound propagation synthesis and/or or analysis, for simulation of SONAR systems, for general wave propagation simulation, for comparison with LIDAR data for the purpose of localization and/or other functions and/or for other uses. In some embodiments, one or more Tree Traversal Units (TTUs) may be used to perform one or more ray tracing-related operations.

Der (die) Beschleuniger 1214 (z. B. der Hardware-Beschleuniger-Cluster) hat (haben) eine breite Palette von Anwendungen für das autonome Fahren. Der PVA kann ein programmierbarer Bildverarbeitungs-Beschleuniger sein, der für wichtige Verarbeitungsstufen in ADAS und autonomen Fahrzeugen verwendet werden kann. Die Fähigkeiten des PVA eignen sich gut für algorithmische Bereiche, die eine vorhersehbare Verarbeitung bei geringer Leistung und geringer Latenz benötigen. Mit anderen Worten: Der PVA eignet sich gut für halbdichte oder dichte reguläre Berechnungen, selbst bei kleinen Datensätzen, die vorhersehbare Laufzeiten mit geringer Latenz und geringem Stromverbrauch erfordern. Somit sind die PVAs im Zusammenhang von Plattformen für autonome Fahrzeuge für die Ausführung klassischer Computer-Vision-Algorithmen ausgelegt, da sie bei einer Objekterfassung effizient sind und mit ganzzahliger Mathematik arbeiten.The accelerator(s) 1214 (e.g., the hardware accelerator cluster) has a wide range of applications for autonomous driving. The PVA can be a programmable image processing accelerator that can be used for key processing stages in ADAS and autonomous vehicles. PVA's capabilities are well suited to algorithmic domains that require predictable, low-power, low-latency processing. In other words, the PVA is well suited for semi-dense or dense regular computations, even on small datasets that require predictable runtimes with low latency and low power consumption. Thus, in the context of autonomous vehicle platforms, the PVAs are designed to execute classic computer vision algorithms because they are efficient at object detection and work with integer mathematics.

Zum Beispiel, gemäß einer Ausführungsform der Technologie, wird der PVA verwendet, um Computer-Stereo-Vision durchzuführen. Ein semi-globaler Matching-basierter Algorithmus kann in einigen Beispielen verwendet werden, obwohl dies nicht als Einschränkung gedacht ist. Viele Anwendungen für das autonome Fahren der Stufen 3 bis 5 erfordern eine Bewegungsabschätzung / einen Stereoabgleich während des Betriebs (z. B. Struktur aus Bewegung, Fußgängererkennung, Fahrspur-Erfassung usw.). Der PVA kann eine Computer-Stereo-Vision-Funktion auf Eingaben von zwei monokularen Kameras ausführen.For example, according to one embodiment of the technology, the PVA is used to perform computer stereo vision. A semi-global matching-based algorithm may be used in some examples, although this is not intended as a limitation. Many Level 3 to 5 autonomous driving applications require on-the-fly motion estimation/stereo matching (e.g. structure from motion, pedestrian detection, lane detection, etc.). The PVA can perform a computer stereo vision function on inputs from two monocular cameras.

In einigen Beispielen kann der PVA verwendet werden, um einen dichten optischen Fluss durchzuführen. Zum Beispiel kann der PVA eingesetzt werden, um RADAR-Rohdaten (z.B. unter Verwendung einer schnellen 4D-FourierTransformation) zu verarbeiten, um ein verarbeitetes RADAR-Signal bereitzustellen, bevor der nächste RADAR-Puls emittiert wird. In anderen Beispielen wird der PVA für die Flugzeittiefenverarbeitung verwendet, indem Flugzeitrohdaten verarbeitet werden, um z. B. verarbeitete Flugzeitdaten bereitzustellen.In some examples, the PVA can be used to perform dense optical flow. For example, the PVA can be used to process raw RADAR data (e.g. using a fast 4D Fourier transform) to provide a processed RADAR signal before the next RADAR pulse is emitted. In other examples, the PVA is used for time-of-flight depth processing by processing raw time-of-flight data to e.g. B. to provide processed flight time data.

Der DLA kann verwendet werden, um jede Art von Netz zu betreiben, um die Steuerung und die Fahrsicherheit zu verbessern, einschließlich beispielsweise eines neuronalen Netzes, das für jede Objekterfassung ein Maß für das Vertrauen ausgibt. Ein solcher Vertrauenswert kann als Wahrscheinlichkeit interpretiert werden oder als relatives „Gewicht“ für jede Erfassung im Vergleich zu anderen Erfassungen. Dieser Vertrauenswert ermöglicht es dem System, weitere Entscheidungen in Bezug darauf zu treffen, welche Erfassungen als echte positive Erfassungen und welche als falsch-positive Erfassungen betrachtet werden sollten. Zum Beispiel kann das System einen Schwellenwert für das Vertrauen festlegen und nur die Erfassungen, die diesen Schwellenwert überschreiten, als wahre positive Erfassungen betrachten. In einem automatischen Notbremssystem („Automatic Emergency Braking“, AEB) würden falsch positive Erfassungen dazu führen, dass das Fahrzeug automatisch eine Notbremsung durchführt, was natürlich unerwünscht ist. Daher sollten nur die vertrauenswürdigsten Erfassungen als Auslöser für AEB in Betracht gezogen werden. Der DLA kann ein neuronales Netz zur Regression des Vertrauenswertes einsetzen. Das neuronale Netz kann als Eingabe zumindest eine Teilmenge von Parametern verwenden, wie z. B. Abmessungen eines Begrenzungsrahmens, eine (z. B. von einem anderen Teilsystem) erhaltene Schätzung der Bodenebene, eine Ausgabe eines Trägheitssensors (Inertial Measurement Unit, IMU) 1266, die mit der Ausrichtung des Fahrzeugs 1200 korreliert, eine Entfernung, eine Schätzung der 3D-Position des Objekts, die von dem neuronalen Netz und/oder anderen Sensoren (z. B. LIDAR-Sensor(en) 1264 oder RADAR-Sensor(en) 1260) erhalten wurde, und andere.The DLA can be used to power any type of network to improve control and driving safety, including, for example, a neural network designed for each Object detection provides a measure of trust. Such a confidence value can be interpreted as a probability, or as a relative “weight” for each detection compared to other detections. This confidence value allows the system to make further decisions regarding which detections should be considered true positive detections and which should be considered false positive detections. For example, the system may set a confidence threshold and only consider detections that exceed this threshold as true positive detections. In an Automatic Emergency Braking (AEB) system, false positive detections would cause the vehicle to automatically perform emergency braking, which is of course undesirable. Therefore, only the most trusted detections should be considered as triggers for AEB. The DLA can use a neural network to regression the trust value. The neural network can use as input at least a subset of parameters, such as: B. dimensions of a bounding box, an estimate of the ground plane obtained (e.g. from another subsystem), an output of an inertial measurement unit (IMU) 1266 that correlates with the orientation of the vehicle 1200, a distance, an estimate of the 3D position of the object obtained from the neural network and/or other sensors (e.g., LIDAR sensor(s) 1264 or RADAR sensor(s) 1260), and others.

Das (die) SoC(s) 1204 kann (können) einen oder mehrere Datenspeicher 1216 (z. B. einen Speicher) aufweisen. Der (die) Datenspeicher 1216 kann (können) ein On-Chip-Speicher des (der) SoC(s) 1204 sein, der (die) neuronale Netze speichern kann (können), die auf der GPU und/oder dem DLA ausgeführt werden. In einigen Beispielen kann die Kapazität des (der) Datenspeicher(s) 1216 groß genug sein, um mehrere Instanzen von neuronalen Netzen aus Gründen der Redundanz und Sicherheit zu speichern. Der (die) Datenspeicher 1212 kann (können) L2 oder L3 Cache(s) 1212 aufweisen. Ein Verweis auf den (die) Datenspeicher 1216 kann einen Verweis auf den Speicher aufweisen, der dem PVA, DLA und/oder anderen Beschleunigern 1214 zugeordnet ist, wie hierin beschrieben.The SoC(s) 1204 may include one or more data memories 1216 (e.g., memory). The data memory(s) 1216 may be on-chip memory of the SoC(s) 1204, which may store neural networks running on the GPU and/or the DLA . In some examples, the capacity of the data store(s) 1216 may be large enough to store multiple instances of neural networks for redundancy and security. The data store(s) 1212 may include L2 or L3 cache(s) 1212. A reference to the data memory(s) 1216 may include a reference to the memory associated with the PVA, DLA, and/or other accelerators 1214, as described herein.

Das (die) SoC(s) 1204 kann (können) einen oder mehrere Prozessor(en) 1210 (z.B. eingebettete Prozessoren) aufweisen. Der (die) Prozessor(en) 1210 kann (können) einen Boot- und Energieverwaltungsprozessor aufweisen, der ein dedizierter Prozessor und ein Subsystem sein kann, um die Boot-Energie- und Verwaltungsfunktionen und die damit verbundene Sicherheitsdurchsetzung zu handhaben. Der Boot- und Energieverwaltungsprozessor kann Teil einer Bootsequenz des (der) SoC(s) 1204 sein und kann Laufzeit-Energieverwaltungsdienste bereitstellen. Der Boot-Energie- und Verwaltungsprozessor kann Takt- und Spannungsprogrammierung, Unterstützung bei Systemübergängen in einen Zustand mit geringer Leistung, Verwaltung von Temperaturen und Temperatursensoren von SoC(s) 1204 und/oder Verwaltung von Energieversorgungszuständen der SoC(s) 1204 bereitstellen. Jeder Temperatursensor kann als ein Ringoszillator implementiert sein, dessen Ausgangsfrequenz proportional zur Temperatur ist, und das (die) SoC(s) 1204 kann (können) die Ringoszillatoren verwenden, um Temperaturen der CPU(s) 1206, GPU(s) 1208 und/oder Beschleuniger 1214 zu erfassen. Wenn festgestellt wird, dass die Temperaturen einen Schwellenwert überschreiten, kann der Boot- und Energieverwaltungsprozessor in eine Temperaturfehlerroutine eintreten und das (die) SoC(s) 1204 in einen Zustand mit geringerer Leistung versetzen und/oder das Fahrzeug 1200 in einen Chauffeur-zu-sicherem-Halt-Modus versetzen (z. B. das Fahrzeug 1200 zu einem sicheren Halt bringen).The SoC(s) 1204 may include one or more processor(s) 1210 (e.g., embedded processors). The processor(s) 1210 may include a boot and power management processor, which may be a dedicated processor and subsystem to handle the boot power and management functions and associated security enforcement. The boot and power management processor may be part of a boot sequence of the SoC(s) 1204 and may provide runtime power management services. The boot power and management processor may provide clock and voltage programming, support for system transitions to a low power state, management of temperatures and temperature sensors of SoC(s) 1204, and/or management of power states of SoC(s) 1204. Each temperature sensor may be implemented as a ring oscillator whose output frequency is proportional to temperature, and the SoC(s) 1204 may use the ring oscillators to determine temperatures of the CPU(s) 1206, GPU(s) 1208 and/or or accelerator 1214 to capture. If temperatures are determined to exceed a threshold, the boot and power management processor may enter a temperature error routine and place the SoC(s) 1204 into a lower power state and/or place the vehicle 1200 into a chauffeur mode. put into safe stop mode (e.g., bring the vehicle 1200 to a safe stop).

Der (die) Prozessor(en) 1210 kann (können) ferner einen Satz eingebetteter Prozessoren aufweisen, die als Audioverarbeitungsmaschine dienen können. Die Audioverarbeitungsmaschine kann ein Audio-Subsystem sein, das eine vollständige Hardware-Unterstützung für Mehrkanal-Audio über mehrere Schnittstellen und eine breite und flexible Palette von Audio-E/A-Schnittstellen ermöglicht. In einigen Beispielen ist die Audioverarbeitungsmaschine ein dedizierter Prozessorkern mit einem digitalen Signalprozessor mit dediziertem RAM.The processor(s) 1210 may further include a set of embedded processors that may serve as an audio processing engine. The audio processing engine may be an audio subsystem that enables full hardware support for multi-channel audio across multiple interfaces and a wide and flexible range of audio I/O interfaces. In some examples, the audio processing engine is a dedicated processor core with a digital signal processor with dedicated RAM.

Der (die) Prozessor(en) 1210 kann (können) außerdem eine „immer eingeschaltet“-Prozessor-Maschine aufweisen, die die notwendigen Hardware-Funktionen bereitstellt, um ein Sensormanagement mit geringem Stromverbrauch und Aufwach-Anwendungsfälle zu unterstützen. Die „immer eingeschaltet“-Prozessor-Maschine kann einen Prozessorkern, ein eng gekoppeltes RAM, unterstützende Peripheriegeräte (z. B. Timer und Interrupt-Steuerung), verschiedene E/A-Steuerungs-Peripheriegeräte und Routing-Logik aufweisen.The processor(s) 1210 may also include an “always on” processor engine that provides the necessary hardware functions to support low power sensor management and wake-up use cases. The always-on processor machine may include a processor core, tightly coupled RAM, supporting peripherals (e.g., timers and interrupt control), various I/O control peripherals, and routing logic.

Der (die) Prozessor(en) 1210 kann (können) außerdem eine Sicherheits-Cluster-Maschine aufweisen, die ein dediziertes Prozessor-Subsystem für das Sicherheitsmanagement von Automobilanwendungen aufweist. Die Sicherheits-Cluster-Maschine kann zwei oder mehr Prozessorkerne, ein eng gekoppeltes RAM, unterstützende Peripheriegeräte (z. B. Zeitgeber, eine Interrupt-Steuerung usw.) und/oder Routing-Logik aufweisen. In einem Sicherheitsmodus können die zwei oder mehr Kerne in einem Lockstep-Modus arbeiten und als ein einziger Kern mit einer Vergleichslogik funktionieren, um etwaige Unterschiede zwischen ihren Operationen zu erfassen.The processor(s) 1210 may also include a security cluster machine that has a dedicated processor subsystem for security management of automotive applications. The security cluster machine may include two or more processor cores, tightly coupled RAM, supporting peripherals (e.g., timers, an interrupt controller, etc.), and/or routing logic. In a security mode, the two or more cores can operate in a lockstep mode and function as a single core with comparison logic to to capture any differences between their operations.

Der (die) Prozessor(en) 1210 kann (können) ferner eine Echtzeit-Kamera-Maschine aufweisen, die ein dediziertes Prozessor-Subsystem zur Handhabung des Echtzeit-Kameramanagements aufweisen kann.The processor(s) 1210 may further include a real-time camera engine, which may include a dedicated processor subsystem to handle real-time camera management.

Der (die) Prozessor(en) 1210 kann (können) ferner einen Signalprozessor mit hohem Dynamikbereich aufweisen, der einen Bildsignalprozessor aufweisen kann, der eine Hardware-Maschine ist, die Teil der Kameraverarbeitungspipeline ist.The processor(s) 1210 may further include a high dynamic range signal processor, which may include an image signal processor, which is a hardware engine that is part of the camera processing pipeline.

Der (die) Prozessor(en) 1210 kann (können) einen Videobildkompositor aufweisen, der ein Verarbeitungsblock sein kann (z. B. auf einem Mikroprozessor implementiert), der Videonachverarbeitungsfunktionen implementiert, die von einer Videowiedergabeanwendung benötigt werden, um das endgültige Bild für das Abspielfenster zu erzeugen. Der Videobildkompositor kann eine Linsenverzerrungskorrektur an der (den) Weitwinkelkamera(s) 1270, der (den) Surround-Kamera(s) 1274 und/oder an den Sensoren der Überwachungskamera in der Fahrgastzelle vornehmen. Der Überwachungskamerasensor in der Fahrgastzelle wird vorzugsweise von einem neuronalen Netz überwacht, das auf einer anderen Instanz des erweiterten SoC läuft, das ausgelegt ist, Ereignisse in der Fahrgastzelle zu erkennen und entsprechend zu reagieren. Ein System in der Fahrgastzelle kann ein Lippenlesen durchführen, um einen Mobilfunkdienst zu aktivieren und einen Anruf zu tätigen, E-Mails zu diktieren, das Fahrzeugfahrtziel zu ändern, das Infotainmentsystem und die Einstellungen des Fahrzeugs zu aktivieren oder zu ändern oder sprachgesteuertes Surfen im Internet zu ermöglichen. Bestimmte Funktionen sind dem Fahrer nur verfügbar, wenn das Fahrzeug in einem autonomen Modus betrieben wird, und sind ansonsten deaktiviert.The processor(s) 1210 may include a video image compositor, which may be a processing block (e.g., implemented on a microprocessor) that implements video post-processing functions required by a video playback application to produce the final image for the Create playback window. The video image compositor may perform lens distortion correction on the wide-angle camera(s) 1270, the surround camera(s) 1274, and/or on the in-vehicle surveillance camera sensors. The surveillance camera sensor in the passenger compartment is preferably monitored by a neural network running on another instance of the advanced SoC, which is designed to detect events in the passenger compartment and respond accordingly. A system in the passenger compartment can perform lip reading to activate cellular service and make a call, dictate email, change the vehicle's destination, activate or change the vehicle's infotainment system and settings, or provide voice-controlled Internet surfing make possible. Certain features are only available to the driver when the vehicle is operating in an autonomous mode and are disabled otherwise.

Der Videobildkompositor kann eine verbesserte zeitliche Rauschunterdrückung sowohl für räumliche als auch für zeitliche Rauschunterdrückung aufweisen. Wenn beispielsweise Bewegungen in einem Video auftreten, gewichtet die Rauschunterdrückung die räumlichen Informationen entsprechend und verringert das Gewicht der von benachbarten Einzelbildern gelieferten Informationen. Wenn ein Bild oder ein Teil eines Bildes keine Bewegung aufweist, kann die vom Videobildkompositor durchgeführte zeitliche Rauschunterdrückung Informationen aus dem vorherigen Bild verwenden, um das Rauschen im aktuellen Bild zu reduzieren.The video image compositor may have improved temporal noise reduction for both spatial and temporal noise reduction. For example, when motion occurs in a video, noise reduction weights the spatial information accordingly and reduces the weight of the information provided by neighboring frames. When an image or part of an image has no motion, temporal noise reduction performed by the video image compositor can use information from the previous image to reduce noise in the current image.

Der Videobildkompositor kann auch konfiguriert sein, um eine Stereorektifizierung an eingegebenen Stereo-Einzelbildern durchzuführen. Der Videobildkompositor kann ferner für die Gestaltung der Benutzeroberfläche verwendet werden, wenn der Desktop des Betriebssystems in Gebrauch ist und die GPU(s) 1208 nicht benötigt werden, um ständig neue Oberflächen zu rendern. Selbst wenn der (die) Grafikprozessor(en) 1208 eingeschaltet und aktiv ein 3D-Rendering ausführt(en), kann der Videobildkompositor verwendet werden, um den (die) Grafikprozessor(en) 1208 zu entlasten, um die Leistung und Reaktionsfähigkeit zu verbessern.The video image compositor may also be configured to perform stereo rectification on input stereo frames. The video image compositor can also be used for user interface design when the operating system desktop is in use and the GPU(s) 1208 are not needed to continually render new interfaces. Even when the graphics processor(s) 1208 is turned on and actively performing 3D rendering, the video image compositor can be used to offload the graphics processor(s) 1208 to improve performance and responsiveness.

Das (die) SoC(s) 1204 kann (können) ferner eine serielle mobile Industrieprozessorschnittstelle („Mobile Industry Processor Interface“, MIPI)-Kameraschnittstelle für den Empfang von Video und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingabeblock aufweisen, die/der für Kamera- und verwandte Pixeleingabefunktionen verwendet werden kann. Das (die) SoC(s) 1204 kann (können) ferner eine Eingabe/Ausgabe-Steuerung(en) aufweisen, die durch Software gesteuert werden kann (können) und für den Empfang von E/A-Signalen verwendet werden kann (können), die nicht an eine bestimmte Rolle gebunden sind.The SoC(s) 1204 may further include a Mobile Industry Processor Interface (MIPI) serial camera interface for receiving video and input from cameras, a high speed interface, and/or a video input block /which can be used for camera and related pixel input functions. The SoC(s) 1204 may further include an input/output controller(s) that may be controlled by software and may be used to receive I/O signals. , which are not tied to a specific role.

Das (die) SoC(s) 1204 kann (können) weiterhin eine breite Palette von Peripherieschnittstellen aufweisen, um die Kommunikation mit Peripheriegeräten, Audiocodecs, Energieverwaltung und/oder anderen Geräten zu ermöglichen. Das (die) SoC(s) 1204 kann (können) verwendet werden, um Daten von Kameras (z. B. verbunden über Gigabit Multimedia Serial Link und Ethernet), Sensoren (z. B. LIDAR-Sensor(en) 1264, RADAR-Sensor(en) 1260 usw., die über Ethernet verbunden sein können), Daten vom Bus 1202 (z. B. Geschwindigkeit des Fahrzeugs 1200, Lenkradposition usw.), Daten von GNSS-Sensor(en) 1258 (z. B. verbunden über Ethernet oder CAN-Bus) zu verarbeiten. Das (die) SoC(s) 1204 kann (können) ferner dedizierte Hochleistungs-Massenspeichersteuerungen aufweisen, die ihre eigenen DMA-Maschinen aufweisen können und die verwendet werden können, um die CPU(s) 1206 von routinemäßigen Datenverwaltungsaufgaben zu entlasten.The SoC(s) 1204 may further include a wide range of peripheral interfaces to enable communication with peripherals, audio codecs, power management, and/or other devices. The SoC(s) 1204 may be used to transmit data from cameras (e.g. connected via Gigabit Multimedia Serial Link and Ethernet), sensors (e.g. LIDAR sensor(s) 1264, RADAR -sensor(s) 1260, etc., which may be connected via Ethernet), data from bus 1202 (e.g. speed of vehicle 1200, steering wheel position, etc.), data from GNSS sensor(s) 1258 (e.g. connected via Ethernet or CAN bus). The SoC(s) 1204 may further include dedicated high-performance mass storage controllers, which may have their own DMA engines, and which may be used to offload the CPU(s) 1206 from routine data management tasks.

Das (die) SoC(s) 1204 kann (können) eine Ende zu Ende Plattform mit einer flexiblen Architektur sein, die die Automatisierungsebenen 3-5 überspannt und dadurch eine umfassende funktionale Sicherheitsarchitektur bereitstellt, die Computer Vision und ADAS-Techniken für Diversität und Redundanz nutzt, eine Plattform für einen flexiblen, zuverlässigen Fahrsoftware-Stack zusammen mit Werkzeugen für Deep Learning bereitstellt und diese effizient einsetzt. Das (die) SoC(s) 1204 kann (können) schneller, zuverlässiger und sogar energie- und platzsparender sein als herkömmliche Systeme. Zum Beispiel kann (können) der (die) Beschleuniger 1214, wenn er (sie) mit der (den) CPU(s) 1206, der (den) GPU(s) 1208 und dem (den) Datenspeicher(n) 1216 kombiniert wird (werden), eine schnelle, effiziente Plattform für autonome Fahrzeuge der Stufe 3-5 bilden.The SoC(s) 1204 may be an end-to-end platform with a flexible architecture that spans automation levels 3-5, thereby providing a comprehensive functional safety architecture that incorporates computer vision and ADAS techniques for diversity and redundancy uses, provides a platform for a flexible, reliable driving software stack together with tools for deep learning and uses them efficiently. The SoC(s) 1204 can be faster, more reliable and even more energy and space efficient than traditional systems. For example, the accelerator(s) 1214, when connected to the CPU(s) 1206, may The GPU(s) 1208 and the data storage(s) 1216 are combined to form a fast, efficient platform for Level 3-5 autonomous vehicles.

Die Technologie bietet somit Möglichkeiten und Funktionen, die mit herkömmlichen Systemen nicht erreicht werden können. Zum Beispiel können Computer-Vision-Algorithmen auf CPUs ausgeführt werden, die unter Verwendung von High-Level-Programmiersprachen, wie der Programmiersprache C, konfiguriert werden können, um eine Vielzahl von Verarbeitungsalgorithmen für eine Vielzahl von visuellen Daten auszuführen. Allerdings sind CPUs oft nicht in der Lage, die Leistungsanforderungen vieler Computer-Vision-Anwendungen zu erfüllen, z. B. in Bezug auf die Ausführungszeit und den Stromverbrauch. Insbesondere sind viele CPUs nicht in der Lage, komplexe Objekterfassungsalgorithmen in Echtzeit auszuführen, was eine Voraussetzung für ADAS-Anwendungen im Fahrzeug und eine Voraussetzung für praktische autonome Fahrzeuge der Stufe 3-5 ist.The technology therefore offers possibilities and functions that cannot be achieved with conventional systems. For example, computer vision algorithms can run on CPUs that can be configured using high-level programming languages, such as the C programming language, to execute a variety of processing algorithms on a variety of visual data. However, CPUs are often unable to meet the performance requirements of many computer vision applications, such as: B. in terms of execution time and power consumption. In particular, many CPUs are unable to execute complex object detection algorithms in real time, which is a requirement for in-vehicle ADAS applications and a requirement for practical Level 3-5 autonomous vehicles.

Im Gegensatz zu herkömmlichen Systemen ermöglicht die hier beschriebene Technologie durch Bereitstellen eines CPU-Komplexes, eines GPU-Komplexes und eines Hardware-Beschleunigungs-Clusters, dass mehrere neuronale Netze gleichzeitig und/oder nacheinander ausgeführt und die Ergebnisse miteinander kombiniert werden können, um autonome Fahrfunktionen der Stufe 3-5 zu ermöglichen. Zum Beispiel kann ein CNN, das auf dem DLA oder der dGPU (z. B. die GPU(s) 1220) ausgeführt wird, eine Text- und Worterkennung aufweisen, die es dem Supercomputer ermöglicht, Verkehrsschilder zu lesen und zu verstehen, einschließlich Schilder, für die das neuronale Netz nicht speziell trainiert wurde. Der DLA kann ferner ein neuronales Netz aufweisen, das in der Lage ist, das Zeichen zu identifizieren, zu interpretieren und ein semantisches Verständnis dafür bereitzustellen und dieses semantische Verständnis an die auf dem CPU-Komplex laufenden Wegplanungsmodule weiterzugeben.Unlike traditional systems, the technology described here, by providing a CPU complex, a GPU complex and a hardware acceleration cluster, allows multiple neural networks to run simultaneously and/or sequentially and the results to be combined together to provide autonomous driving functions to enable levels 3-5. For example, a CNN running on the DLA or dGPU (e.g., GPU(s) 1220) may include text and word recognition that allows the supercomputer to read and understand traffic signs, including signs , for which the neural network has not been specifically trained. The DLA may further include a neural network capable of identifying, interpreting and providing a semantic understanding of the character and passing this semantic understanding to the path planning modules running on the CPU complex.

Als weiteres Beispiel können mehrere neuronale Netze gleichzeitig ausgeführt werden, wie es für das Fahren der Stufe 3, 4 oder 5 erforderlich ist. Zum Beispiel kann ein Warnschild mit der Aufschrift „Vorsicht: Blinkende Lichter weisen auf Eisglätte hin“ zusammen mit einem elektrischen Licht von mehreren neuronalen Netzen unabhängig oder gemeinsam interpretiert werden. Das Schild selbst kann von einem ersten eingesetzten neuronalen Netz (z. B. einem neuronalen Netz, das trainiert wurde) als ein Verkehrsschild identifiziert werden, der Text „Blinkende Lichter deuten auf Eisglätte hin“ kann von einem zweiten eingesetzten neuronalen Netz interpretiert werden, das der Wegplanungssoftware des Fahrzeugs (die vorzugsweise auf dem CPU-Komplex ausgeführt wird) mitteilt, dass, wenn blinkende Lichter erfasst werden, Eisglätte vorliegt. Das Blinklicht kann durch Betreiben eines dritten neuronalen Netzes über mehrere Einzelbilder identifiziert werden, das die Wegplanungssoftware des Fahrzeugs über das Vorhandensein (oder Fehlen) von Blinklichtern informiert. Alle drei neuronalen Netze können gleichzeitig laufen, z. B. innerhalb des DLA und/oder auf der (den) GPU(s) 1208.As another example, multiple neural networks may be running simultaneously as required for level 3, 4, or 5 driving. For example, a warning sign that reads “Caution: Flashing lights indicate slippery ice” along with an electric light can be interpreted independently or jointly by multiple neural networks. The sign itself can be identified as a traffic sign by a first deployed neural network (e.g. a neural network that has been trained), the text “Flashing lights indicate slippery ice” can be interpreted by a second deployed neural network tells the vehicle's path planning software (preferably running on the CPU complex) that if flashing lights are detected, there is slippery ice. The flashing light can be identified by operating a third neural network over multiple frames, which informs the vehicle's path planning software of the presence (or absence) of flashing lights. All three neural networks can run simultaneously, e.g. B. within the DLA and/or on the GPU(s) 1208.

In einigen Beispielen kann ein CNN für eine Gesichtserkennung und die Identifizierung eines Fahrzeugbesitzers Daten von Kamerasensoren verwenden, um die Anwesenheit eines autorisierten Fahrers und/oder Besitzers des Fahrzeugs 1200 zu identifizieren. Die „immer eingeschaltete" Sensorverarbeitungsmaschine kann verwendet werden, um das Fahrzeug zu entriegeln, wenn der Besitzer sich der Fahrertür nähert, und die Lichter einschalten, und, im Sicherheitsmodus, um das Fahrzeug zu deaktivieren, wenn der Besitzer das Fahrzeug verlässt. Auf diese Weise stellt (stellen) das (die) SoC(s) 1204 die Sicherheit gegen Diebstahl und/oder Fahrzeugentführung sicher.In some examples, a CNN for facial recognition and vehicle owner identification may use data from camera sensors to identify the presence of an authorized driver and/or owner of the vehicle 1200. The "always on" sensor processing engine can be used to unlock the vehicle when the owner approaches the driver's door and turn on the lights, and, in security mode, to disarm the vehicle when the owner exits the vehicle. In this way the SoC(s) 1204 ensures security against theft and/or vehicle hijacking.

In einem anderen Beispiel kann ein CNN zur Erfassung und Identifizierung von Notfallfahrzeugen Daten von Mikrofonen 1296 verwenden, um Sirenen von Notfallfahrzeugen zu erkennen und zu identifizieren. Im Gegensatz zu herkömmlichen Systemen, die allgemeine Klassifikatoren zur Erfassung von Sirenen und zur manuellen Extraktion von Merkmalen verwenden, nutzt (nutzen) das (die) SoC(s) 1204 das CNN zur Klassifizierung von Umwelt- und Stadtgeräuschen sowie zur Klassifizierung visueller Daten. In einer bevorzugten Ausführungsform wird der CNN, der auf dem DLA läuft, darauf trainiert, die relative Annäherungsgeschwindigkeit des Notfallfahrzeugs zu erkennen (z. B. durch Verwendung des Dopplereffekts). Das CNN kann auch trainiert werden, um Einsatzfahrzeuge zu identifizieren, die spezifisch für den lokalen Bereich sind, in dem das Fahrzeug betrieben wird, wie von GNSS-Sensor(en) 1258 identifiziert. So wird das CNN beispielsweise versuchen, in Europa europäische Sirenen zu erfassen, während es in den Vereinigten Staaten versuchen wird, nur nordamerikanische Sirenen zu identifizieren. Sobald ein Notfallfahrzeug erfasst wird, kann ein Steuerprogramm verwendet werden, um eine Sicherheitsroutine für Notfallfahrzeuge auszuführen, das Fahrzeug zu verlangsamen, an den Straßenrand zu fahren, das Fahrzeug zu parken und/oder das Fahrzeug im Leerlauf laufen zu lassen, mit Hilfe von Ultraschallsensoren 1262, bis das (die) Notfallfahrzeug(e) vorbeigefahren ist (sind).In another example, an emergency vehicle detection and identification CNN may use data from microphones 1296 to detect and identify emergency vehicle sirens. Unlike traditional systems that use general classifiers to detect sirens and manually extract features, the SoC(s) 1204 leverages the CNN to classify environmental and urban sounds as well as classify visual data. In a preferred embodiment, the CNN running on the DLA is trained to detect the relative approach speed of the emergency vehicle (e.g., using the Doppler effect). The CNN can also be trained to identify emergency vehicles specific to the local area in which the vehicle is operating, as identified by GNSS sensor(s) 1258. For example, in Europe, CNN will attempt to identify European sirens, while in the United States it will attempt to identify only North American sirens. Once an emergency vehicle is detected, a control program may be used to execute an emergency vehicle safety routine, slowing the vehicle, pulling to the side of the road, parking the vehicle, and/or idling the vehicle using ultrasonic sensors 1262 until the emergency vehicle(s) have passed.

Das Fahrzeug kann eine CPU(s) 1218 (z.B. diskrete CPU(s) oder dCPU(s)) aufweisen, die über eine Hochgeschwindigkeitsverbindung (z.B. PCIe) mit dem (den) SoC(s) 1204 gekoppelt sein kann. Die CPU(s) 1218 kann (können) zum Beispiel einen X86-Prozessor aufweisen. Die CPU(s) 1218 kann (können) verwendet werden, um eine Vielzahl von Funktionen auszuführen, einschließlich eines Abstimmens potenziell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und dem (den) SoC(s) 1204 und/oder eines Überwachens des Status und des Zustands der Steuerung(en) 1236 und/oder des Infotainment-SoC 1230, zum Beispiel.The vehicle may include a CPU(s) 1218 (e.g., discrete CPU(s) or dCPU(s)) that may be coupled to the SoC(s) 1204 via a high-speed connection (e.g., PCIe). The CPU(s) 1218 may include, for example, an X86 processor. The CPU(s) 1218 may be used to perform a variety of functions, including reconciling potentially inconsistent results between ADAS sensors and the SoC(s) 1204 and/or monitoring status and condition the controller(s) 1236 and/or the infotainment SoC 1230, for example.

Das Fahrzeug 1200 kann eine GPU(s) 1220 (z.B. diskrete GPU(s) oder dGPU(s)) aufweisen, die mit dem (den) SoC(s) 1204 über eine Hochgeschwindigkeitsverbindung (z.B. NVIDIAs NVLINK) gekoppelt sein kann. Der (die) GPU(s) 1220 kann (können) zusätzliche künstliche Intelligenzfunktionalität bereitstellen, zum Beispiel durch Ausführen redundanter und/oder unterschiedlicher neuronaler Netze, und kann (können) verwendet werden, um neuronale Netze auf der Grundlage einer Eingabe (z. B. Sensordaten) von Sensoren des Fahrzeugs 1200 zu trainieren und/oder zu aktualisieren.The vehicle 1200 may include a GPU(s) 1220 (e.g., discrete GPU(s) or dGPU(s)) that may be coupled to the SoC(s) 1204 via a high-speed connection (e.g., NVIDIA's NVLINK). The GPU(s) 1220 may provide additional artificial intelligence functionality, for example by running redundant and/or different neural networks, and may be used to execute neural networks based on an input (e.g . Sensor data) from sensors of the vehicle 1200 to train and / or update.

Das Fahrzeug 1200 kann ferner die Netzschnittstelle 1224 aufweisen, die eine oder mehrere drahtlose Antennen 1226 aufweisen kann (z.B. eine oder mehrere drahtlose Antennen für unterschiedliche Kommunikationsprotokolle, wie z.B. eine Mobilfunkantenne, eine Bluetooth-Antenne, usw.). Die Netzschnittstelle 1224 kann verwendet werden, um eine drahtlose Verbindung über das Internet mit der Cloud (z. B. mit dem (den) Server(n) 1278 und/oder anderen Netzvorrichtungen), mit anderen Fahrzeugen und/oder mit Recheneinrichtungen (z. B. Client-Vorrichtungen der Fahrgäste) zu ermöglichen. Um mit anderen Fahrzeugen zu kommunizieren, kann eine direkte Verbindung zwischen den beiden Fahrzeugen und/oder eine indirekte Verbindung hergestellt werden (z. B. über Netze und über das Internet). Direkte Verbindungen können über eine Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung hergestellt werden. Die Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung kann dem Fahrzeug 1200 Informationen über Fahrzeuge in der Nähe des Fahrzeugs 1200 bereitstellen (z. B. Fahrzeuge vor, neben und/oder hinter dem Fahrzeug 1200). Diese Funktion kann Teil einer kooperativen adaptiven Geschwindigkeitsregelungsfunktion des Fahrzeugs 1200 sein.The vehicle 1200 may further include the network interface 1224, which may include one or more wireless antennas 1226 (e.g., one or more wireless antennas for different communication protocols, such as a cellular antenna, a Bluetooth antenna, etc.). The network interface 1224 may be used to provide a wireless connection over the Internet to the cloud (e.g., to the server(s) 1278 and/or other network devices), to other vehicles, and/or to computing devices (e.g., B. client devices of the passengers). In order to communicate with other vehicles, a direct connection between the two vehicles and/or an indirect connection can be established (e.g. via networks and via the Internet). Direct connections can be made via a vehicle-to-vehicle communication link. The vehicle-to-vehicle communication link may provide the vehicle 1200 with information about vehicles in the vicinity of the vehicle 1200 (e.g., vehicles in front of, next to, and/or behind the vehicle 1200). This function may be part of a cooperative adaptive cruise control function of the vehicle 1200.

Die Netzschnittstelle 1224 kann über ein SoC verfügen, das Modulation und Demodulation bietet und es der Steuerung 1236 ermöglicht, über drahtlose Netze zu kommunizieren. Die Netzschnittstelle 1224 kann ein Hochfrequenz-Front-End für die Up-Konvertierung von Basisband zu Hochfrequenz und Down-Konvertierung von Hochfrequenz zu Basisband enthalten. Die Frequenzumwandlungen können durch bekannte Prozesse und/oder durch Super-Heterodyn-Prozesse durchgeführt werden. In einigen Beispielen kann die Funkfrequenz-Frontend-Funktion durch einen separaten Chip bereitgestellt werden. Die Netzschnittstelle kann drahtlose Funktionen für die Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle umfassen.The network interface 1224 may include an SoC that provides modulation and demodulation and allows the controller 1236 to communicate over wireless networks. The network interface 1224 may include a radio frequency front end for up-conversion from baseband to radio frequency and down conversion from radio frequency to baseband. The frequency conversions can be carried out by known processes and/or by super-heterodyne processes. In some examples, the radio frequency front-end function may be provided by a separate chip. The network interface may include wireless functions for communication via LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN and/or other wireless protocols.

Das Fahrzeug 1200 kann außerdem Datenspeicher 1228 enthalten, die auch Off-Chip-Speicher (z. B. Off-the-SoC 1204) umfassen können. Die Datenspeicher 1228 können ein oder mehrere Speicherelemente einschließlich RAM, SRAM, DRAM, VRAM, Flash, Festplatten und/oder andere Komponenten und/oder Geräte, die mindestens ein Bit von Daten speichern können, umfassen.The vehicle 1200 may also include data storage 1228, which may also include off-chip memory (e.g., off-the-SoC 1204). The data memories 1228 may include one or more storage elements including RAM, SRAM, DRAM, VRAM, flash, hard drives, and/or other components and/or devices capable of storing at least one bit of data.

Das Fahrzeug 1200 kann außerdem einen oder mehrere GNSS-Sensoren 1258 (z.B. GPS- und/oder assistierte GPS-Sensoren) enthalten, um bei der Kartierung, Wahrnehmung, Generierung von Belegungsrastern und/oder der Wegplanung zu unterstützen. Es kann eine beliebige Anzahl von GNSS-Sensoren 1258 verwendet werden, einschließlich z. B. eines GPS-Geräts, das einen USB-Anschluss mit einer Ethernet-zu-Seriell-Brücke (RS-232) verwendet.The vehicle 1200 may also include one or more GNSS sensors 1258 (e.g., GPS and/or assisted GPS sensors) to assist in mapping, sensing, occupancy grid generation, and/or path planning. Any number of GNSS sensors 1258 can be used, including e.g. B. a GPS device that uses a USB port with an Ethernet-to-serial bridge (RS-232).

Das Fahrzeug 1200 kann außerdem einen oder mehrere RADAR-Sensoren 1260 enthalten. Der RADAR-Sensor 1260 kann vom Fahrzeug 1200 für die Fernerkennung von Fahrzeugen verwendet werden, selbst bei Dunkelheit und/oder bei Unwetter. Die funktionalen Sicherheitsstufen des RADARs können ASIL B sein. Der RADAR-Sensor 1260 kann den CAN und/oder den Bus 1202 (z. B. zur Übertragung der vom RADAR-Sensor 1260 generierten Daten) zur Steuerung und zum Zugriff auf Daten zur Objektverfolgung verwenden, wobei in einigen Beispielen auf Ethernet zugegriffen werden kann, um auf Rohdaten zuzugreifen. Es können eine Vielzahl von RADAR-Sensortypen verwendet werden. Beispielsweise können die RADAR-Sensoren 1260 uneingeschränkt als Front-, Heck- und Seiten-RADAR verwendet werden. In einigen Beispielen werden Pulse-Doppler-RADAR-Sensoren verwendet.The vehicle 1200 may also include one or more RADAR sensors 1260. The RADAR sensor 1260 can be used by the vehicle 1200 for remote vehicle detection, even in darkness and/or severe weather. The functional safety levels of the RADAR can be ASIL B. The RADAR sensor 1260 may use the CAN and/or the bus 1202 (e.g., to transmit the data generated by the RADAR sensor 1260) to control and access data for object tracking, which may be accessed via Ethernet in some examples to access raw data. A variety of RADAR sensor types can be used. For example, the RADAR sensors 1260 can be used without restrictions as front, rear and side RADAR. In some examples, Pulse Doppler RADAR sensors are used.

Die RADAR-Sensoren 1260 können verschiedene Konfigurationen umfassen, z. B. große Reichweite mit engem Sichtfeld, kurze Reichweite mit großem Sichtfeld, kurze Seitenabdeckung usw. In einigen Beispielen kann ein Langstrecken-RADAR für die adaptive Geschwindigkeitsregelung verwendet werden. Die Langstrecken-RADAR-Systeme mit großer Reichweite können ein breites Sichtfeld, das durch zwei oder mehr unabhängige Scans, z. B. innerhalb einer Reichweite von 250 m, realisiert wird, bieten. Die RADAR-Sensoren 1260 können bei der Unterscheidung zwischen statischen und sich bewegenden Objekten helfen und von ADAS-Systemen zur Notbremsunterstützung und Kollisionswarnung verwendet werden. Langstrecken-RADAR-Sensoren für große Reichweiten können monostatisches multimodales RADAR mit mehreren (z. B. sechs oder mehr) festen RADAR-Antennen und einer Hochgeschwindigkeits-CAN- und FlexRay-Schnittstelle umfassen. In einem Beispiel mit sechs Antennen können die zentralen vier Antennen ein fokussiertes Strahlmuster erzeugen, das entwickelt wurde, um die Umgebung des Fahrzeugs 1200 bei höheren Geschwindigkeiten mit minimaler Beeinträchtigung durch den Verkehr in benachbarten Fahrbahnen aufzuzeichnen. Die anderen beiden Antennen können das Sichtfeld erweitern, wodurch es möglich ist, schnell Fahrzeuge zu erkennen, die in die Fahrbahn des Fahrzeugs 1200 fahren oder diese verlassen.The RADAR sensors 1260 can include various configurations, e.g. E.g. long range with narrow field of view, short range with wide field of view, short side coverage, etc. In some examples, a long range RADAR may be used for adaptive cruise control. The long-range, long-range RADAR systems can provide a wide field of view obtained by two or more independent scans, e.g. B. is realized within a range of 250 m. The RADAR sensors 1260 can help distinguish between static and moving objects and ADAS systems can be used for emergency braking support and collision warning. Long-range, long-range RADAR sensors may include monostatic multimodal RADAR with multiple (e.g. six or more) fixed RADAR antennas and a high-speed CAN and FlexRay interface. In a six antenna example, the central four antennas may produce a focused beam pattern designed to record the surroundings of the vehicle 1200 at higher speeds with minimal interference from traffic in adjacent lanes. The other two antennas can expand the field of view, making it possible to quickly detect vehicles entering or leaving the path of vehicle 1200.

RADAR-Systeme mit mittlerer Reichweite können beispielsweise eine Reichweite von bis zu 160 m (vorne) oder 80 m (hinten) und ein Sichtfeld von bis zu 42 Grad (vorne) oder 150 Grad (hinten) umfassen. RADAR-Systeme mit kurzer Reichweite können, ohne Einschränkung, RADAR-Sensoren umfassen, die an beiden Enden des hinteren Stoßfängers installiert werden können. Bei Installation an beiden Enden des hinteren Stoßfängers kann ein solches RADAR-Sensorsystem zwei Strahlen erzeugen, die den toten Winkel im Heck und neben dem Fahrzeug ständig überwachen.For example, medium-range RADAR systems can include a range of up to 160 m (front) or 80 m (rear) and a field of view of up to 42 degrees (front) or 150 degrees (rear). Short range RADAR systems may include, without limitation, RADAR sensors that may be installed at either end of the rear bumper. When installed at both ends of the rear bumper, such a RADAR sensor system can produce two beams that constantly monitor the blind spot in the rear and alongside the vehicle.

RADAR-Systeme mit kurzer Reichweite können in einem ADAS-System zur Erkennung des toten Winkels und/oder zur Fahrbahnwechselunterstützung verwendet werden.Short-range RADAR systems can be used in an ADAS system for blind spot detection and/or lane change assistance.

Das Fahrzeug 1200 kann außerdem Ultraschallsensoren 1262 enthalten. Die Ultraschallsensoren 1262, die sich vorne, hinten und/oder an den Seiten des Fahrzeugs 1200 befinden können, können zum Einparken und/oder zum Erstellen und Aktualisieren eines Belegungsrasters verwendet werden. Es können eine Vielzahl von Ultraschallsensoren 1262 und verschiedene Ultraschallsensoren 1262 für verschiedene Detektionsbereiche (z. B. 2,5 m, 4 m) verwendet werden. Die Ultraschallsensoren 1262 können mit der Funktionssicherheitsstufe ASIL B arbeiten.The vehicle 1200 may also include ultrasonic sensors 1262. The ultrasonic sensors 1262, which may be located at the front, rear, and/or sides of the vehicle 1200, may be used for parking and/or for creating and updating an occupancy grid. A variety of ultrasonic sensors 1262 and different ultrasonic sensors 1262 for different detection ranges (e.g. 2.5 m, 4 m) can be used. The 1262 ultrasonic sensors can work with functional safety level ASIL B.

Das Fahrzeug 1200 kann LIDAR-Sensoren 1264 enthalten. Die LIDAR Sensoren 1264 können für die Objekt- und Fußgängererkennung, Notbremsung, Kollisionsvermeidung und/oder andere Funktionen verwendet werden. Die LIDAR-Sensoren 1264 können die funktionale Sicherheitsstufe ASIL B erfüllen. In einigen Beispielen kann das Fahrzeug 1200 mehrere LIDAR-Sensoren 1264 (z. B. zwei, vier, sechs usw.) enthalten, die Ethernet verwenden können (z. B. zur Bereitstellung von Daten an einen Gigabit-Ethernet-Switch).The vehicle 1200 may include LIDAR sensors 1264. The LIDAR sensors 1264 can be used for object and pedestrian detection, emergency braking, collision avoidance and/or other functions. The 1264 LIDAR sensors can meet the ASIL B functional safety level. In some examples, the vehicle 1200 may include multiple LIDAR sensors 1264 (e.g., two, four, six, etc.) that may use Ethernet (e.g., to provide data to a Gigabit Ethernet switch).

In einigen Beispielen können die LIDAR-Sensoren 1264 eine Liste von Objekten und deren Entfernungen für ein 360-Grad-Sichtfeld bereitstellen. Im Handel erhältliche LIDAR-Sensoren 1264 können eine angekündigte Reichweite von etwa 1200 m, eine Genauigkeit von 2 cm bis 3 cm und beispielsweise eine Unterstützung für eine 100-Mbit/s-Ethernet-Verbindung aufweisen. In einigen Beispielen können ein oder mehrere nicht vorstehende LIDAR-Sensoren 1264 verwendet werden. In solchen Beispielen können die LIDAR-Sensoren 1264 als kleines Gerät implementiert werden, das in die Front-, Heck-, Seiten- und/oder Ecken des Fahrzeugs 1200 eingebettet werden kann. Die LIDAR-Sensoren 1264 können in solchen Beispielen ein bis zu 120 Grad horizontales und 35 Grad vertikales Sichtfeld mit einer Reichweite von 200 m bieten, selbst bei Objekten mit geringer Reflexion. Front-montierte LIDAR-Sensoren 1264 können für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert werden.In some examples, the LIDAR sensors 1264 may provide a list of objects and their distances for a 360 degree field of view. Commercially available LIDAR sensors 1264 may have an advertised range of approximately 1200 m, an accuracy of 2 cm to 3 cm, and, for example, support for a 100 Mbps Ethernet connection. In some examples, one or more non-protruding LIDAR sensors 1264 may be used. In such examples, the LIDAR sensors 1264 may be implemented as a small device that may be embedded in the front, rear, side, and/or corners of the vehicle 1200. In such examples, the LIDAR sensors 1264 can provide up to 120 degrees horizontal and 35 degrees vertical field of view with a range of 200 m, even for objects with low reflection. Front-mounted LIDAR sensors 1264 can be configured for a horizontal field of view between 45 degrees and 135 degrees.

In einigen Beispielen können auch LIDAR-Technologien wie 3D-Flash-LIDAR verwendet werden. 3D-Flash-LIDAR nutzt einen Laserblitz als Übertragungsquelle, um die Fahrzeugumgebung bis zu ca. 200 m zu beleuchten. Eine LIDAR-Blitzeinheit enthält einen Rezeptor, der die Übertragungszeit des Laserpulses und das reflektierte Licht auf jedem Pixel erfasst, was wiederum dem Bereich vom Fahrzeug bis zu den Objekten entspricht. Flash LIDAR kann die Erzeugung hochgenauer und verzerrungsfreier Bilder der Umgebung mit jedem Laserblitz ermöglichen. In einigen Beispielen können vier LIDAR-Blitzsensoren eingesetzt werden, einer an jeder Seite des Fahrzeugs 1200. Zu den verfügbaren 3D-Flash-LIDAR-Systemen gehört eine Solid-State-3D-Staring-Array-LIDAR-Kamera ohne bewegliche Teile außer einem Lüfter (z. B. ein nicht-scannendes LIDAR-Gerät). Das Flash-LIDAR-Gerät kann einen Laserpuls der Klasse I (augensicher) mit 5 Nanosekunden pro Bild verwenden und das reflektierte Laserlicht in Form von 3D-Punktwolken und mitregistrierten Intensitätsdaten erfassen. Durch die Verwendung von Flash-LIDAR und weil Flash-LIDAR ein Festkörpergerät ohne bewegliche Teile ist, ist der LIDAR-Sensor 1264 möglicherweise weniger anfällig für Bewegungsunschärfen, Vibrationen und/oder Stöße.In some examples, LIDAR technologies such as 3D flash LIDAR may also be used. 3D flash LIDAR uses a laser flash as a transmission source to illuminate the vehicle surroundings up to approximately 200 m. A LIDAR flash unit contains a receptor that detects the transmission time of the laser pulse and the reflected light on each pixel, which in turn corresponds to the range from the vehicle to the objects. Flash LIDAR can enable the creation of highly accurate and distortion-free images of the environment with each laser flash. In some examples, four LIDAR lightning sensors may be deployed, one on each side of the vehicle 1200. Available 3D flash LIDAR systems include a solid-state 3D staring array LIDAR camera with no moving parts other than a fan (e.g. a non-scanning LIDAR device). The flash LIDAR device can use a Class I (eye-safe) laser pulse at 5 nanoseconds per image and capture the reflected laser light in the form of 3D point clouds and co-registered intensity data. By using Flash LIDAR and because Flash LIDAR is a solid-state device with no moving parts, the 1264 LIDAR sensor may be less susceptible to motion blur, vibration and/or shock.

Das Fahrzeug kann außerdem IMU-Sensoren 1266 enthalten. Die IMU-Sensoren 1266 können sich in einigen Beispielen in der Mitte der Hinterachse des Fahrzeugs 1200 befinden. Die IMU-Sensoren 1266 können z. B. einen oder mehrere Beschleunigungsmesser, Magnetometer, Gyroskope, magnetische Kompasse und/oder andere Sensortypen umfassen. In einigen Beispielen, wie z. B. in sechs-Achsen-Anwendungen, können die IMU-Sensoren 1266 Beschleunigungsmesser und Gyroskope enthalten, während in neun-Achsen-Anwendungen die IMU-Sensoren 1266 Beschleunigungsmesser, Gyroskope und Magnetometer umfassen können.The vehicle may also include IMU sensors 1266. The IMU sensors 1266 may be located in the center of the rear axle of the vehicle 1200 in some examples. The IMU sensors 1266 can e.g. B. include one or more accelerometers, magnetometers, gyroscopes, magnetic compasses and / or other types of sensors. In some examples, such as For example, in six-axis applications, the IMU sensors may include 1266 accelerometers and gyroscopes, while in nine-axis applications The IMU sensors may include 1266 accelerometers, gyroscopes and magnetometers.

In einigen Ausführungsformen können die IMU-Sensoren 1266 als Miniatur-GPS-Aided Inertial Navigation System (GPS/INS) implementiert werden, das Inertialsensoren mikroelektromechanischer Systeme (micro-electro-mechanical systems - MEMS), einen hochempfindlichen GPS-Empfänger und fortschrittliche Kalman-Filteralgorithmen kombiniert, um Abschätzungen von Position, Geschwindigkeit und Neigung zu liefern. In einigen Beispielen können die IMU-Sensoren 1266 es dem Fahrzeug 1200 ermöglichen, den Kurs ohne Eingabe eines Magnetsensors zu schätzen, indem die Geschwindigkeitsänderungen vom GPS direkt auf den IMU-Sensoren 1266 beobachtet und korreliert werden. In einigen Beispielen können IMU-Sensoren 1266 und GNSS-Sensoren 1258 in einer einzigen integrierten Einheit kombiniert werden.In some embodiments, the IMU sensors 1266 may be implemented as a miniature GPS-Aided Inertial Navigation System (GPS/INS) that includes micro-electro-mechanical systems (MEMS) inertial sensors, a highly sensitive GPS receiver, and advanced Kalman sensors. Filtering algorithms combined to provide estimates of position, velocity and inclination. In some examples, the IMU sensors 1266 may enable the vehicle 1200 to estimate heading without input from a magnetic sensor by observing and correlating the speed changes from GPS directly on the IMU sensors 1266. In some examples, IMU sensors 1266 and GNSS sensors 1258 may be combined into a single integrated unit.

Das Fahrzeug kann mit Mikrofonen 1296 ausgestattet sein, die in und/oder um das Fahrzeug 1200 platziert sind. Die Mikrofone 1296 können unter anderem zur Erkennung und Identifizierung von Rettungsfahrzeugen verwendet werden.The vehicle may be equipped with microphones 1296 placed in and/or around the vehicle 1200. The microphones 1296 can be used, among other things, to detect and identify emergency vehicles.

Das Fahrzeug kann außerdem eine beliebige Anzahl von Kameratypen umfassen, einschließlich Stereokameras 1268, Weitwinkelkameras 1270, Infrarotkameras 1272, Surround-Kameras 1274, Fernbereichs- und Mittelbereichskameras 1298 und/oder andere Kameratypen. Mit den Kameras können Bilddaten rund um eine gesamte Peripherie des Fahrzeugs 1200 herum erfasst werden. Die verwendeten Kameratypen hängen von den Ausführungsformen und Anforderungen für das Fahrzeug 1200 ab, und jede Kombination von Kameratypen kann verwendet werden, um die erforderliche Abdeckung um das Fahrzeug 1200 herum zu gewährleisten. Darüber hinaus kann die Anzahl der Kameras je nach Ausführungsform variieren. Zum Beispiel kann das Fahrzeug sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras und/oder eine andere Anzahl von Kameras umfassen. Die Kameras können beispielsweise und ohne Einschränkung Gigabit Multimedia Serial Link (GMSL) und/oder Gigabit Ethernet unterstützen. Jede Kamera wird in diesem Dokument in Bezug auf 12 und 13 beschrieben.The vehicle may also include any number of camera types, including stereo cameras 1268, wide-angle cameras 1270, infrared cameras 1272, surround cameras 1274, long-range and mid-range cameras 1298, and/or other camera types. The cameras can be used to capture image data around an entire periphery of the vehicle 1200. The types of cameras used depend on the embodiments and requirements for the vehicle 1200, and any combination of camera types can be used to provide the required coverage around the vehicle 1200. In addition, the number of cameras may vary depending on the embodiment. For example, the vehicle may include six cameras, seven cameras, ten cameras, twelve cameras, and/or another number of cameras. For example, and without limitation, the cameras may support Gigabit Multimedia Serial Link (GMSL) and/or Gigabit Ethernet. Each camera is referred to in this document 12 and 13 described.

Das Fahrzeug 1200 kann außerdem Vibrationssensoren 1242 enthalten. Die Vibrationssensoren 1242 können Vibrationen von Komponenten des Fahrzeugs, z.B. den Achsen, messen. Veränderungen der Vibrationen können beispielsweise auf eine Veränderung der Straßenbeläge hindeuten. In einem anderen Beispiel können bei Verwendung von zwei oder mehr Vibrationssensoren 1242 die Unterschiede zwischen den Vibrationen zur Bestimmung der Reibung oder des Schlupfes der Fahrbahnoberfläche verwendet werden (z. B. wenn der Vibrationsunterschied zwischen einer elektrisch angetriebenen und einer frei drehenden Achse besteht).The vehicle 1200 may also include vibration sensors 1242. The vibration sensors 1242 can measure vibrations of components of the vehicle, such as the axles. Changes in vibrations can, for example, indicate a change in the road surface. In another example, when using two or more vibration sensors 1242, the differences between the vibrations can be used to determine the friction or slip of the road surface (e.g., if the difference in vibration is between an electrically powered and a freely rotating axle).

Das Fahrzeug 1200 kann ein ADAS-System 1238 enthalten. Das ADAS-System 1238 kann in einigen Beispielen ein SoC enthalten. Das ADAS-System 1238 kann autonome/adaptive/automatische Geschwindigkeitsregelung (autonomous/adaptive/automatic cruise control - ACC), kooperative adaptive Geschwindigkeitsregelung (cooperative adaptive cruise control - CACC), Aufprallwarnung (forward crash warning - FCW), automatische Notbremsung (automatic emergency braking - AEB), Spurerkennungssystem (lane departure warning - LDW), Spurhalteassistent (lane keep assistent - LKA), Totwinkel-Warner (blind spot warning - BSW), Heckbereichswarnung (rear cross-traffic warning - RCTW), Kollisionswarnsysteme (collision warning system - CWS), Fahrbahnzentrierung (lane centering - LC) und/oder andere Merkmale und Funktionalitäten umfassen.The vehicle 1200 may include an ADAS system 1238. The ADAS system 1238 may include an SoC in some examples. The ADAS system 1238 can provide autonomous/adaptive/automatic cruise control (ACC), cooperative adaptive cruise control (CACC), forward crash warning (FCW), automatic emergency braking (automatic emergency braking - AEB), lane detection system (lane departure warning - LDW), lane keeping assistant (lane keep assistant - LKA), blind spot warning (BSW), rear cross-traffic warning (RCTW), collision warning systems (collision warning system - CWS), lane centering (LC) and/or other features and functionalities.

Die ACC-Systeme können RADAR-Sensoren 1260, LIDAR-Sensoren 1264 und/oder Kameras verwenden. Die ACC-Systeme können longitudinales ACC und/oder laterales ACC umfassen. Das ACC in Längsrichtung überwacht und steuert den Abstand zum Fahrzeug unmittelbar vor dem Fahrzeug 1200 und passt die Fahrzeuggeschwindigkeit automatisch an, um einen sicheren Abstand zu den vorausfahrenden Fahrzeugen einzuhalten. Das laterale ACC führt die Distanzmessung durch und rät dem Fahrzeug 1200, bei Bedarf die Fahrbahn zu wechseln. Das laterale ACC steht in Zusammenhang mit anderen ADAS-Anwendungen wie LC und CWS.The ACC systems may use RADAR sensors 1260, LIDAR sensors 1264 and/or cameras. The ACC systems may include longitudinal ACC and/or lateral ACC. The longitudinal ACC monitors and controls the distance to the vehicle immediately in front of the vehicle 1200 and automatically adjusts the vehicle speed to maintain a safe distance from the vehicles in front. The lateral ACC carries out the distance measurement and advises the vehicle 1200 to change lanes if necessary. The lateral ACC is related to other ADAS applications such as LC and CWS.

CACC verwendet Informationen von anderen Fahrzeugen, die über die Netzschnittstelle 1224 und/oder die drahtlosen Antenne(n) 1226 von anderen Fahrzeugen über eine Wireless-Verbindung oder indirekt über eine Netzwerkverbindung (z. B. über das Internet) empfangen werden können. Direkte Verbindungen können über eine V2V-Kommunikationsverbindung (Vehicle-to-Vehicle) bereitgestellt werden, während indirekte Verbindungen I2V-Kommunikationsverbindungen (Infrastructure-to-Vehicle) sein können. Das Kommunikationskonzept V2V informiert in der Regel über die unmittelbar vorausfahrenden Fahrzeuge (z. B. Fahrzeuge unmittelbar vor und auf derselben Fahrbahn wie das Fahrzeug 1200), während das Kommunikationskonzept 12V Informationen über den weiter vorausfahrenden Verkehr liefert. CACC-Systeme können eine oder beide 12V- und V2V-Informationsquellen enthalten. Angesichts der Informationen über die Fahrzeuge vor dem Fahrzeug 1200 könnte CACC zuverlässiger sein und das Potenzial haben, die Verkehrsströme zu verbessern und Staus auf der Straße zu reduzieren.CACC uses information from other vehicles that can be received via network interface 1224 and/or wireless antenna(s) 1226 from other vehicles via a wireless connection or indirectly via a network connection (e.g., via the Internet). Direct connections can be provided via a V2V (Vehicle-to-Vehicle) communication link, while indirect connections can be I2V (Infrastructure-to-Vehicle) communication links. The V2V communication concept usually provides information about the vehicles immediately ahead (e.g. vehicles immediately in front of and on the same road as vehicle 1200), while the 12V communication concept provides information about the traffic further ahead. CACC systems can contain one or both 12V and V2V information sources. Given the information about the vehicles in front of vehicle 1200, CACC could be more reliable and have the potential to improve traffic flows and reduce road congestion.

FCW-Systeme wurden entwickelt, um den Fahrer auf eine Gefahr aufmerksam zu machen, damit der Fahrer Korrekturmaßnahmen ergreifen kann. FCW-Systeme verwenden eine nach vorne gerichtete Kamera und/oder RADAR-Sensoren 1260 gekoppelt an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC, der elektrisch mit dem Fahrer-Feedback gekoppelt ist, z. B. einem Display, Lautsprecher und/oder einer vibrierenden Komponente. FCW-Systeme können eine Warnung ausgeben, z. B. in Form eines Schalls, einer optischen Warnung, einer Vibration und/oder eines schnellen Bremsimpulses.FCW systems are designed to alert the driver to a hazard so the driver can take corrective action. FCW systems use a forward-facing camera and/or RADAR sensors 1260 coupled to a dedicated processor, DSP, FPGA and/or ASIC that is electrically coupled to driver feedback, e.g. B. a display, speakers and / or a vibrating component. FCW systems can issue a warning, e.g. B. in the form of a sound, a visual warning, a vibration and / or a quick braking pulse.

AEB-Systeme erkennen einen drohenden Aufprall mit einem anderen Fahrzeug oder einem anderen Objekt und können die Bremsen automatisch betätigen, wenn der Fahrer innerhalb eines bestimmten Zeit- oder Entfernungsparameters keine Korrekturmaßnahmen ergreift. AEB-Systeme können nach vorne gerichtete Kameras und/oder RADAR-Sensoren 1260 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. Wenn das AEB-System eine Gefahr erkennt, warnt es den Fahrer normalerweise zuerst, Korrekturmaßnahmen zu ergreifen, um die Kollision zu vermeiden. Wenn der Fahrer keine Korrekturmaßnahmen ergreift, kann das AEB-System die Bremsen automatisch betätigen, um die Auswirkungen der vorhergesagten Kollision zu verhindern, oder zumindest zu mildern. AEB-Systeme können Techniken wie dynamische Bremsunterstützung und/oder Notbremsung umfassen.AEB systems detect an impending collision with another vehicle or object and can automatically apply the brakes if the driver does not take corrective action within a certain time or distance parameter. AEB systems may use forward-facing cameras and/or RADAR sensors 1260 coupled to a dedicated processor, DSP, FPGA and/or ASIC. When the AEB system detects a danger, it usually first warns the driver to take corrective action to avoid the collision. If the driver does not take corrective action, the AEB system can automatically apply the brakes to prevent, or at least mitigate, the effects of the predicted collision. AEB systems may include techniques such as dynamic brake support and/or emergency braking.

LDW-Systeme bieten optische, akustische und/oder taktile Warnungen, wie z. B. Lenkrad- oder Sitzvibrationen, um den Fahrer zu warnen, wenn das Fahrzeug 1200 die Fahrbahnmarkierungen überquert. Ein LDW-System wird nicht aktiviert, wenn der Fahrer durch Aktivieren eines Blinksignals einen absichtlichen Fahrbahnwechsel anzeigt. LDW-Systeme können nach vorne gerichtete Kameras verwenden, gekoppelt an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC, der elektrisch mit dem Fahrer-Feedback gekoppelt ist, z. B. einem Display, Lautsprecher und/oder einer vibrierenden Komponente.LDW systems provide visual, audible and/or tactile warnings, such as: B. Steering wheel or seat vibrations to alert the driver when the vehicle 1200 crosses the lane markings. An LDW system will not activate if the driver indicates an intentional lane change by activating a turn signal. LDW systems may use forward-facing cameras coupled to a dedicated processor, DSP, FPGA and/or ASIC that is electrically coupled to driver feedback, e.g. B. a display, speakers and / or a vibrating component.

LKA-Systeme sind eine Variante von LDW-Systemen. LKA-Systeme bieten Lenkeingaben oder Bremsen, um das Fahrzeug 1200 zu korrigieren, wenn das Fahrzeug 1200 die Fahrbahn verlässt.LKA systems are a variant of LDW systems. LKA systems provide steering inputs or braking to correct the vehicle 1200 when the vehicle 1200 leaves the roadway.

BSW-Systeme erkennen und warnen den Fahrer vor Fahrzeugen im toten Winkel eines Automobils. BSW-Systeme können einen visuellen, akustischen und/oder taktilen Alarm ausgeben, der darauf hinweist, dass das Zusammenführen oder Wechseln von Fahrbahnen unsicher ist. Das System kann eine zusätzliche Warnung ausgeben, wenn der Fahrer einen Blinker verwendet. BSW-Systeme können rückseitig ausgerichtete Kameras und/oder RADAR-Sensoren 1260 verwenden, gekoppelt mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC, der elektrisch mit einem Fahrer-Feedback gekoppelt ist, z. B. einem Display, einem Lautsprecher und/oder einer vibrierenden Komponente.BSW systems detect and warn the driver of vehicles in an automobile's blind spot. BSW systems can provide a visual, audible and/or tactile alarm indicating that merging or changing lanes is unsafe. The system can provide an additional warning if the driver uses a turn signal. BSW systems may use rear-facing cameras and/or RADAR sensors 1260 coupled with a dedicated processor, DSP, FPGA and/or ASIC electrically coupled to driver feedback, e.g. B. a display, a speaker and / or a vibrating component.

RCTW-Systeme können visuelle, akustische und/oder taktile Benachrichtigungen liefern, wenn ein Objekt außerhalb des Bereichs der Rückfahrkamera erkannt wird, wenn das Fahrzeug 1200 rückwärtsfährt. Einige RCTW-Systeme verfügen über AEB, um sicherzustellen, dass die Bremsen des Fahrzeugs aktiviert werden, um einen Unfall zu vermeiden. RCTW-Systeme können eine oder mehrere nach hinten gerichtete RADAR-Sensoren 1260 verwenden, gekoppelt mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC, der elektrisch mit dem Fahrer-Feedback gekoppelt ist, z. B. einem Display, einem Lautsprecher und/oder einer vibrierenden Komponente.RCTW systems can provide visual, audible and/or tactile notifications when an object is detected outside the range of the rearview camera when the vehicle 1200 is reversing. Some RCTW systems have AEB to ensure that the vehicle's brakes are activated to avoid an accident. RCTW systems may use one or more rear-facing RADAR sensors 1260 coupled with a dedicated processor, DSP, FPGA and/or ASIC that is electrically coupled to driver feedback, e.g. B. a display, a speaker and / or a vibrating component.

Herkömmliche ADAS-Systeme können zu falsch positiven Ergebnissen neigen, die für den Fahrer störend und ablenkend sein können, aber in der Regel nicht katastrophal sind, da die ADAS-Systeme den Fahrer alarmieren und es dem Fahrer ermöglichen, zu entscheiden, ob eine Sicherheitsbedingung tatsächlich vorliegt, und entsprechend zu handeln. Bei einem autonomen Fahrzeug 1200 muss das Fahrzeug 1200 selbst jedoch bei widersprüchlichen Ergebnissen entscheiden, ob das Ergebnis eines primären oder eines sekundären Computers (z. B. einer ersten Steuerung 1236 oder einer zweiten Steuerung 1236) berücksichtigt werden soll. In einigen Ausführungsformen kann das ADAS-System 1238 beispielsweise ein Backup- und/oder Sekundärcomputer sein, um Wahrnehmungsinformationen für ein Rationalitätsmodul des Backup-Computers bereitzustellen. Auf dem Monitor zur Rationalität des Backup-Computers kann eine redundante, vielfältige Software auf Hardwarekomponenten ausgeführt werden, um Wahrnehmungsfehler und dynamische Fahraufgaben zu erkennen. Ausgaben von dem ADAS-System 1238 können an eine übergeordnete MCU geliefert werden. Wenn Ausgaben von dem primären Computer und von dem sekundären Computer in Konflikt geraten, muss die übergeordnete MCU bestimmen, wie der Konflikt abgeglichen werden kann, um einen sicheren Betrieb zu gewährleisten.Traditional ADAS systems can be prone to false positives, which can be disruptive and distracting to the driver, but are usually not catastrophic because the ADAS systems alert the driver and allow the driver to decide whether a safety condition actually exists exists and to act accordingly. However, in the case of an autonomous vehicle 1200, when there are conflicting results, the vehicle 1200 itself must decide whether the result of a primary or a secondary computer (e.g., a first controller 1236 or a second controller 1236) should be taken into account. For example, in some embodiments, the ADAS system 1238 may be a backup and/or secondary computer to provide perception information to a rationality module of the backup computer. The backup computer rationality monitor can run redundant, diverse software on hardware components to detect perception errors and dynamic driving tasks. Outputs from the ADAS system 1238 may be provided to a higher level MCU. When outputs from the primary computer and the secondary computer conflict, the parent MCU must determine how to reconcile the conflict to ensure safe operation.

In einigen Beispielen kann der primäre Computer konfiguriert werden, um der übergeordneten MCU einen Konfidenzwert bereitzustellen, der die Konfidenz des primären Computers in das ausgewählte Ergebnis angibt. Wenn der Konfidenzwert einen Schwellenwert überschreitet, kann die übergeordnete MCU der Richtung des primären Computers folgen, unabhängig davon, ob der sekundäre Computer ein widersprüchliches oder inkonsistentes Ergebnis liefert. Wenn der Konfidenzwert den Schwellenwert nicht erreicht und der primäre und der sekundäre Computer unterschiedliche Ergebnisse (z. B. den Konflikt) anzeigen, kann die übergeordnete MCU zwischen den Computern entscheiden, um das geeignete Ergebnis zu ermitteln.In some examples, the primary computer may be configured to provide the parent MCU with a confidence value indicating the primary computer's confidence in the selected result. If the confidence value exceeds a threshold, the parent MCU can follow the direction of the primary computer regardless of whether the secondary Com computer produces a contradictory or inconsistent result. If the confidence value does not reach the threshold and the primary and secondary computers show different results (such as the conflict), the higher-level MCU can decide between the computers to determine the appropriate result.

Die übergeordnete MCU kann konfiguriert sein, um ein neuronales Netz laufen zu lassen, das ausgebildet und konfiguriert ist, um basierend auf den Ausgaben des primären Computers und des sekundären Computers Bedingungen zu bestimmen, unter denen der sekundäre Computer Fehlalarme ausgibt. So können die neuronalen Netze in der übergeordneten MCU lernen, wann die Ausgabe des sekundären Computers vertrauenswürdig ist und wann nicht. Wenn es sich bei dem sekundären Computer beispielsweise um ein RADAR-basiertes FCW-System handelt, können neuronale Netze in der übergeordneten MCU erkennen, wann das FCW-System metallische Objekte identifiziert, die tatsächlich keine Gefahren darstellen, wie z. B. ein Drainagerost oder eine Schachtabdeckung, die einen Alarm auslöst. Wenn es sich bei dem sekundären Computer um ein kamerabasiertes LDW-System handelt, kann ein neuronales Netz in der übergeordneten MCU lernen, das LDW zu überschreiben, wenn Radfahrer oder Fußgänger anwesend sind und ein Fahrbahnwechsel tatsächlich das sicherste Manöver ist. In Ausführungsformen, die ein neuronales Netz enthalten, das auf der übergeordneten MCU ausgeführt wird, kann die übergeordnete MCU mindestens eine DLA oder GPU enthalten, die für den Betrieb des neuronalen Netzes mit dem zugehörigen Speicher geeignet ist. In bevorzugten Ausführungsformen kann die übergeordnete MCU als Bestandteil des SoCs 1204 enthalten und/oder einbezogen werden.The higher-level MCU may be configured to run a neural network trained and configured to determine conditions under which the secondary computer issues false alarms based on the outputs of the primary computer and the secondary computer. This allows the neural networks in the parent MCU to learn when the output of the secondary computer is trustworthy and when it is not. For example, if the secondary computer is a RADAR-based FCW system, neural networks in the parent MCU can detect when the FCW system identifies metallic objects that actually do not pose threats, such as: B. a drainage grate or a manhole cover that triggers an alarm. If the secondary computer is a camera-based LDW system, a neural network in the parent MCU can learn to override the LDW when cyclists or pedestrians are present and changing lanes is actually the safest maneuver. In embodiments that include a neural network running on the parent MCU, the parent MCU may include at least one DLA or GPU capable of operating the neural network with associated memory. In preferred embodiments, the higher-level MCU may be included and/or incorporated as part of the SoC 1204.

In anderen Beispielen kann das ADAS-System 1238 einen sekundären Computer umfassen, der die ADAS-Funktionalität mithilfe herkömmlicher Regeln der Computervision ausführt. Daher kann der sekundäre Computer klassische Computervision-Regeln (wenn-dann) verwenden und das Vorhandensein eines neuronalen Netzes in der übergeordneten MCU kann die Zuverlässigkeit, Sicherheit und Leistung verbessern. Die vielfältige Implementierung und die absichtliche Nichtidentität beispielsweise machen das Gesamtsystem fehlertoleranter, insbesondere gegenüber Fehlern, die durch die Funktionalität der Software (oder Software-Hardware-Schnittstelle) verursacht werden. Wenn beispielsweise ein Softwarefehler oder Fehler in der Software auf dem primären Computer vorliegt und der nicht identische Softwarecode auf dem sekundären Computer das gleiche Gesamtergebnis liefert, kann die übergeordnete MCU mehr Vertrauen in das Gesamtergebnis haben und der Fehler in der Software oder Hardware, die von dem primären Computer verwendet wird, verursacht keinen erheblichen Fehler.In other examples, the ADAS system 1238 may include a secondary computer that performs the ADAS functionality using conventional computer vision rules. Therefore, the secondary computer can use classic computer vision rules (if-then), and the presence of a neural network in the parent MCU can improve reliability, security and performance. For example, diverse implementation and intentional non-identity make the overall system more fault-tolerant, especially to errors caused by the functionality of the software (or software-hardware interface). For example, if there is a software error or error in the software on the primary computer and the non-identical software code on the secondary computer produces the same overall result, the parent MCU may have more confidence in the overall result and the error in the software or hardware provided by that primary computer does not cause a significant error.

In einigen Beispielen kann die Ausgabe des ADAS-Systems 1238 in den Wahrnehmungs-Block des primären Computers und/oder den dynamischen Fahraufgaben-Block des primären Computers eingespeist werden. Wenn das ADAS-System 1238 beispielsweise eine Aufprallwarnung aufgrund eines unmittelbar vorausliegenden Objekts anzeigt, kann der Wahrnehmungs-Block diese Informationen bei der Identifizierung von Objekten verwenden. In anderen Beispielen kann der sekundäre Computer über ein eigenes ausgebildetes neuronales Netz verfügen und so das Risiko von falsch-positiven Ergebnissen reduzieren, wie hier beschrieben.In some examples, the output of the ADAS system 1238 may be fed into the primary computer's perception block and/or the primary computer's dynamic driving task block. For example, if the ADAS system 1238 displays a collision warning due to an object immediately ahead, the perception block may use this information in identifying objects. In other examples, the secondary computer may have its own trained neural network, reducing the risk of false positives, as described here.

Das Fahrzeug 1200 kann außerdem das Infotainment-SoC 1230 (z. B. ein Fahrzeug-Infotainment-System (in-vehicle infotainment, IVI)) enthalten. Obwohl das Infotainment-System als SoC dargestellt und beschrieben wird, handelt es sich möglicherweise nicht um ein SoC und kann zwei oder mehr separate Komponenten enthalten. Das Infotainment-SoC 1230 kann eine Kombination aus Hardware und Software umfassen, die verwendet werden kann, um dem Fahrzeug 1200 Audio (z. B. Musik, einen persönlichen digitalen Assistenten, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z. B. TV, Filme, Streaming usw.), Telefon (z. B. Freisprechfunktion), Netzwerkkonnektivität (z. B. LTE, Wi-Fi, Usw.) und/oder Informationsdienste (z. B. Navigationssysteme, Einparkhilfe hinten, ein Funkdatensystem, fahrzeugbezogene Informationen wie Kraftstoffstand, zurückgelegte Gesamtstrecke, Bremsflüssigkeitsstand, Ölstand, Tür auf/zu, Luftfilterinformationen usw.) bereitzustellen. Zum Beispiel kann das Infotainment-SoC 1230 Radios, CD-Player, Navigationssysteme, Videoplayer, USB- und Bluetooth-Konnektivität, Carputer, In-Car-Entertainment, Wi-Fi, Lenkrad-Audiosteuerungen, Freisprech-Sprachsteuerung, ein Heads-Up-Display (HUD), ein HMI-Anzeige 1234, ein Telematikgerät, ein Bedienfeld (z. B. zur Steuerung und/oder Interaktion mit verschiedenen Komponenten, Funktionen und/oder Systemen) und/oder anderen Komponenten umfassen. Das Infotainment-SoC 1230 kann außerdem dazu verwendet werden, Informationen (z. B. visuell und/oder hörbar) für Benutzer des Fahrzeugs bereitzustellen, z. B. Informationen aus dem ADAS-System 1238, Informationen zum autonomen Fahren wie geplante Fahrzeugmanöver, Trajektorien, Umgebungsdaten (z. B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen usw.) und/oder andere Informationen.The vehicle 1200 may also include the infotainment SoC 1230 (e.g., an in-vehicle infotainment (IVI) system). Although the infotainment system is shown and described as an SoC, it may not be an SoC and may contain two or more separate components. The infotainment SoC 1230 may include a combination of hardware and software that may be used to provide the vehicle 1200 with audio (e.g., music, a personal digital assistant, navigation instructions, news, radio, etc.), video (e.g., . TV, movies, streaming, etc.), telephone (e.g. hands-free), network connectivity (e.g. LTE, Wi-Fi, etc.) and/or information services (e.g. navigation systems, rear parking sensors, a wireless data system , vehicle-related information such as fuel level, total distance traveled, brake fluid level, oil level, door open/close, air filter information, etc.). For example, the infotainment SoC 1230 can support radios, CD players, navigation systems, video players, USB and Bluetooth connectivity, carputers, in-car entertainment, Wi-Fi, steering wheel audio controls, hands-free voice controls, a heads-up system. Display (HUD), an HMI display 1234, a telematics device, a control panel (e.g., for controlling and/or interacting with various components, functions and/or systems), and/or other components. The infotainment SoC 1230 may also be used to provide information (e.g., visual and/or audible) to users of the vehicle, e.g. B. information from the ADAS system 1238, autonomous driving information such as planned vehicle maneuvers, trajectories, environmental data (e.g. intersection information, vehicle information, road information, etc.) and / or other information.

Das Infotainment-SoC 1230 kann GPU-Funktionalität enthalten. Das Infotainment-SoC 1230 kann über den Bus 1202 (z. B. CAN-Bus, Ethernet usw.) mit anderen Geräten, Systemen und/oder Komponenten des Fahrzeugs 1200 kommunizieren. In einigen Beispielen kann das Infotainment-SoC 1230 mit einer übergeordneten MCU gekoppelt werden, sodass die GPU des Infotainment-Systems einige Selbstfahr-Funktionen ausführen kann, falls die primäre Steuerung 1236 (z. B. der primäre und/oder Backup-Computer des Fahrzeugs 1200) ausfällt. In einem solchen Beispiel kann das Infotainment-SoC 1230 das Fahrzeug 1200 in den sicheren Stopp-Modus versetzen, wie hier beschrieben.The infotainment SoC 1230 may include GPU functionality. The infotainment SoC 1230 can be connected via the bus 1202 (e.g. CAN bus, Ether net, etc.) communicate with other devices, systems and/or components of the vehicle 1200. In some examples, the infotainment SoC 1230 may be coupled to a higher-level MCU so that the infotainment system's GPU can perform some self-driving functions if the primary controller 1236 (e.g., the vehicle's primary and/or backup computer 1200) fails. In such an example, the infotainment SoC 1230 may place the vehicle 1200 into safe stop mode, as described herein.

Das Fahrzeug 1200 kann außerdem ein Kombiinstrument 1232 (z. B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.) enthalten. Das Kombiinstrument 1232 kann eine Steuerung und/oder Supercomputer (z. B. eine diskrete Steuerung oder Supercomputer) enthalten. Das Kombiinstrument 1232 kann eine Reihe von Instrumenten wie Tachometer, Kraftstoffstand, Öldruck, Drehzahlmesser, Kilometerzähler, Blinker, Schaltstellungsanzeige, Sicherheitsgurtwarnleuchte(n), Feststellbremse-Warnleuchte(n), Motorstörungsanzeige(n), Airbag (SRS)-Systeminformationen, Beleuchtungssteuerungen, Bedienelemente des Sicherheitssystems, Navigationsinformationen usw. umfassen. In einigen Beispielen können Informationen angezeigt und/oder zwischen dem Infotainment-SoC 1230 und dem Kombiinstrument 1232 geteilt werden. Mit anderen Worten kann das Kombiinstrument 1232 als Teil des Infotainment-SoC 1230 oder umgekehrt aufgenommen werden.The vehicle 1200 may also include an instrument cluster 1232 (e.g., a digital dashboard, an electronic instrument cluster, a digital instrument panel, etc.). The instrument cluster 1232 may include a controller and/or supercomputers (e.g., a discrete controller or supercomputer). The 1232 instrument cluster can display a variety of instruments such as speedometer, fuel level, oil pressure, tachometer, odometer, turn signals, shift position indicator, seat belt warning light(s), parking brake warning light(s), engine malfunction indicator(s), airbag (SRS) system information, lighting controls, controls the security system, navigation information, etc. In some examples, information may be displayed and/or shared between the infotainment SoC 1230 and the instrument cluster 1232. In other words, the instrument cluster 1232 can be included as part of the infotainment SoC 1230 or vice versa.

Wie oben erwähnt ist, kann bei mindestens einer Ausführungsform die Fahrzeugplattform 100 (siehe 1) eine Komponente des autonomen Fahrzeugs 1200 sein. Bei solchen Ausführungsformen weist(en) die Steuerung(en) 1236 das Fahrzeug-SoC 104 auf. Zum Beispiel kann das Fahrzeug-SoC 104 als eines der SoC 1204 implementiert sein.As noted above, in at least one embodiment, the vehicle platform 100 (see 1 ) may be a component of the autonomous vehicle 1200. In such embodiments, the controller(s) 1236 includes the vehicle SoC 104. For example, the vehicle SoC 104 may be implemented as one of the SoCs 1204.

15 ist ein Systemdiagramm für die Kommunikation zwischen Cloudbasierten Servern und dem beispielhaften autonomen Fahrzeug 1200 aus 12, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Das System 1276 kann Server 1278, Netze 1290 und Fahrzeuge einschließlich Fahrzeug 1200 umfassen. Die Server 1278 können eine Vielzahl von GPUs 1284(A)-1284(H) (zusammenfassend als GPUs 1284 bezeichnet), PCIe-Switches 1282(A)-1282(H) (gemeinsam als PCIe-Switches 1282 bezeichnet) und/oder CPUs 1280(A)-1280(B) (gemeinsam als CPUs 1280 bezeichnet) enthalten. Die GPUs 1284, die CPUs 1280 und die PCIe-Switches können mit Hochgeschwindigkeitsverbindungen wie beispielsweise den von NVIDIA entwickelten NVLink-Schnittstellen 1288 und/oder PCIe Connections 1286 verbunden werden. In einigen Beispielen werden die GPUs 1284 über NVLink und/oder NVSwitch SoC angeschlossen und die GPUs 1284 und die PCIe-Switches 1282 über PCIe-Verbindungen. Obwohl acht GPUs 1284, zwei CPUs 1280 und zwei PCIe-Switches abgebildet sind, soll dies nicht als einschränkend verstanden werden. Je nach Ausführungsform kann jeder Server 1278 eine beliebige Anzahl von GPUs 1284, CPUs 1280 und/oder PCIe-Switches enthalten. Zum Beispiel können die Server 1278 jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1284 enthalten. 15 is a system diagram for communication between cloud-based servers and the example autonomous vehicle 1200 12 , according to some embodiments of the present disclosure. The system 1276 may include servers 1278, networks 1290, and vehicles including vehicle 1200. The servers 1278 may include a variety of GPUs 1284(A)-1284(H) (collectively referred to as GPUs 1284), PCIe switches 1282(A)-1282(H) (collectively referred to as PCIe switches 1282), and/or CPUs 1280(A)-1280(B) (collectively referred to as CPUs 1280). The GPUs 1284, the CPUs 1280 and the PCIe switches can be connected with high-speed connections such as the NVLink interfaces 1288 and/or PCIe Connections 1286 developed by NVIDIA. In some examples, the GPUs 1284 are connected via NVLink and/or NVSwitch SoC and the GPUs 1284 and the PCIe switches 1282 are connected via PCIe connections. Although eight 1284 GPUs, two 1280 CPUs and two PCIe switches are shown, this should not be construed as limiting. Depending on the embodiment, each server 1278 may include any number of GPUs 1284, CPUs 1280, and/or PCIe switches. For example, servers 1278 may each contain eight, sixteen, thirty-two, and/or more GPUs 1284.

Die Server 1278 können über die Netze 1290 und von den Fahrzeugen Bilddaten empfangen, die für Bilder stehen, die unerwartete oder veränderte Straßenbedingungen zeigen, wie z. B. kürzlich begonnene Straßenarbeiten. Die Server 1278 können, über die Netze 1290 und an die Fahrzeuge, neuronale Netze 1292, aktualisierte neuronale Netze 1292 und/oder Karteninformationen 1294 übertragen, einschließlich Informationen über den Verkehr und die Straßenbedingungen. Die Aktualisierungen der Karteninformationen 1294 können Aktualisierungen für die HD-Karte 1222 enthalten, wie z. B. Informationen zu Baustellen, Schlaglöchern, Umwegen, Überschwemmungen und/oder anderen Hindernissen. In einigen Beispielen können die neuronalen Netze 1292, die aktualisierten neuronalen Netze 1292 und/oder die Karteninformationen 1294 aus neuen Trainings und/oder Erfahrungen resultieren, dargestellt in Daten aus einer beliebigen Anzahl von Fahrzeugen in der Umgebung, und/oder basierend auf Trainings, die in einem Rechenzentrum durchgeführt werden (z.B. unter Verwendung der Server 1278 und/oder anderer Server).The servers 1278 may receive image data over the networks 1290 and from the vehicles, representing images showing unexpected or changing road conditions, such as: E.g. recently started road works. The servers 1278 may transmit, over the networks 1290 and to the vehicles, neural networks 1292, updated neural networks 1292 and/or map information 1294, including information about traffic and road conditions. The updates to the map information 1294 may include updates to the HD map 1222, such as: B. Information about construction sites, potholes, detours, floods and/or other obstacles. In some examples, the neural networks 1292, the updated neural networks 1292, and/or the map information 1294 may result from new training and/or experiences represented in data from any number of vehicles in the environment, and/or based on training provided be performed in a data center (e.g. using servers 1278 and/or other servers).

Die Server 1278 können verwendet werden, um Machine-Learning-Modelle (z. B. neuronale Netzwerke) basierend auf Trainingsdaten zu trainieren. Die Trainingsdaten können von den Fahrzeugen generiert und/oder in einer Simulation (z. B. mit einem Game Engine) generiert werden. In einigen Beispielen werden die Trainingsdaten markiert (z. B. wenn das neuronale Netz vom überwachten Lernen profitiert) und/oder unterliegen einer anderen Vorverarbeitung, während in anderen Beispielen die Trainingsdaten nicht markiert und/oder vorverarbeitet werden (z. B. wenn das neuronale Netz kein überwachtes Lernen erfordert). Trainings können nach einer oder mehreren Klassen von Machine-Learning-Techniken durchgeführt werden, einschließlich, aber nicht beschränkt auf Kurse wie: beaufsichtigtes Training, halb beaufsichtigtes Training, unbeaufsichtigtes Training, Selbstlernen, Verstärkungslernen, föderiertes Lernen, Transferlernen, Feature-Lernen (einschließlich Hauptkomponenten- und Cluster-Analysen), multilineares Subraumlernen, vielfältiges Lernen, Repräsentation-Lernen (einschließlich des Ersatzwörterbuchlernen), regelbasiertes maschinelles Lernen, Anomalieerkennung und alle Varianten oder Kombinationen davon. Nach dem Training der Machine-Learning-Modelle können die Machine-Learning-Modelle von den Fahrzeugen verwendet werden (z. B. über das Netz 1290 an die Fahrzeuge übertragen) und/oder die Machine-Learning-Modelle können von den Servern 1278 zur Fernüberwachung der Fahrzeuge verwendet werden.The servers 1278 can be used to train machine learning models (e.g., neural networks) based on training data. The training data can be generated by the vehicles and/or generated in a simulation (e.g. with a game engine). In some examples, the training data is marked (e.g., when the neural network benefits from supervised learning) and/or undergoes other preprocessing, while in other examples, the training data is not marked and/or preprocessed (e.g., when the neural network network does not require supervised learning). Training can be conducted according to one or more classes of machine learning techniques, including but not limited to courses such as: supervised training, semi-supervised training, unsupervised training, self-learning, reinforcement learning, federated learning, transfer learning, feature learning (including principal components - and cluster analyses), multilinear subspace learning, manifold learning, representation learning (including surrogate dictionary learning), rule-based machine all learning, anomaly detection and any variants or combinations thereof. After training the machine learning models, the machine learning models may be used by the vehicles (e.g., transmitted to the vehicles via the network 1290) and/or the machine learning models may be transmitted from the servers 1278 Remote monitoring of vehicles can be used.

In einigen Beispielen kann der Server 1278 Daten von den Fahrzeugen empfangen und die Daten auf aktuelle neuronale Echtzeit-Netze anwenden, um intelligente Echtzeit-Inferenzen zu ermöglichen. Die Server 1278 können Deep-Learning-Supercomputer und/oder dedizierte KI-Computer mit GPUs 1284 umfassen, wie z. B. DGX- und DGX-Stationsmaschinen, die von NVIDIA entwickelt wurden. In einigen Beispielen können die Server 1278 jedoch eine Deep-Learning-Infrastruktur enthalten, die nur CPU-betriebene Rechenzentren verwendet.In some examples, the server 1278 may receive data from the vehicles and apply the data to current real-time neural networks to enable intelligent real-time inferences. The servers 1278 may include deep learning supercomputers and/or dedicated AI computers with GPUs 1284, such as: B. DGX and DGX station machines developed by NVIDIA. However, in some examples, servers 1278 may contain deep learning infrastructure that uses only CPU-powered data centers.

Die Deep-Learning-Infrastruktur der Server 1278 kann eine schnelle Echtzeit-Inferenz ermöglichen und diese Funktion nutzen, um den Zustand der Prozessoren, der Software und/oder der zugehörigen Hardware im Fahrzeug 1200 zu bewerten und zu überprüfen. Beispielsweise kann die Deep-Learning-Infrastruktur regelmäßige Aktualisierungen vom Fahrzeug 1200 erhalten, wie z. B. eine Abfolge von Bildern und/oder Objekten, die das Fahrzeug 1200 in dieser Abfolge von Bildern lokalisiert hat (z. B. durch Computervision und/oder andere Techniken zur Klassifizierung von Machine-Learning-Objekten). Die Deep-Learning-Infrastruktur kann ein eigenes neuronales Netz betreiben, um die Objekte zu identifizieren und sie mit den vom Fahrzeug 1200 identifizierten Objekten zu vergleichen. Wenn die Ergebnisse nicht übereinstimmen und die Infrastruktur zu dem Schluss kommt, dass die KI im Fahrzeug 1200 defekt ist, kann der Server 1278 ein Signal an das Fahrzeug 1200 senden, das einen ausfallsicheren Computer des Fahrzeugs 1200 anweist, die Kontrolle zu übernehmen, die Passagiere zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.The deep learning infrastructure of the servers 1278 may enable rapid, real-time inference and use this capability to assess and verify the health of the processors, software, and/or associated hardware in the vehicle 1200. For example, the deep learning infrastructure may receive regular updates from the vehicle 1200, such as: B. a sequence of images and/or objects that the vehicle 1200 has located in that sequence of images (e.g., through computer vision and/or other machine learning object classification techniques). The deep learning infrastructure can operate its own neural network to identify the objects and compare them with the objects identified by the vehicle 1200. If the results do not agree and the infrastructure concludes that the AI in the vehicle 1200 is defective, the server 1278 may send a signal to the vehicle 1200 instructing a fail-safe computer of the vehicle 1200 to take control of the passengers to notify and carry out a safe parking maneuver.

Für Inferencing können die Server 1278 die GPUs 1284 und einen oder mehrere programmierbare Inferenzbeschleuniger (z. B. NVIDIA TensorRT) enthalten. Die Kombination aus GPU-basierten Servern und der Inferenzbeschleunigung kann eine Reaktionsfähigkeit in Echtzeit ermöglichen. In anderen Beispielen, z. B. bei weniger kritischer Performance, können Server mit CPUs, FPGAs und anderen Prozessoren für die Inferenz verwendet werden.For inferencing, the servers 1278 may include the GPUs 1284 and one or more programmable inference accelerators (e.g., NVIDIA TensorRT). The combination of GPU-based servers and inference acceleration can enable real-time responsiveness. In other examples, e.g. For example, when performance is less critical, servers with CPUs, FPGAs and other processors can be used for inference.

BEISPIELHAFTE RECHENEINRICHTUNGEXEMPLARY COMPUTING DEVICE

16 ist ein Blockdiagramm einer beispielhaften Recheneinrichtung 1600, die zur Verwendung bei der Umsetzung einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Die Recheneinrichtung 1600 kann ein Verbindungssystem 1602 enthalten, das die folgenden Einrichtungen direkt oder indirekt koppelt: Speicher 1604, einen oder mehrere Zentralprozessoren (CPUs) 1606, einen oder mehrere Grafikprozessoren (GPUs) 1608, eine Kommunikationsschnittstelle 1610, Eingangs-/Ausgangs (I/O)-Ports 1612, Eingabe-/Ausgabekomponenten 1614, ein Stromversorgung 1616 und eine oder mehrere Darstellungskomponenten 1618 (z. B. Displays) und eine oder mehrere Logikeinheiten 1620. 16 is a block diagram of an example computing device 1600 suitable for use in implementing some embodiments of the present disclosure. The computing device 1600 may include an interconnection system 1602 that directly or indirectly couples the following devices: memory 1604, one or more central processors (CPUs) 1606, one or more graphics processors (GPUs) 1608, a communications interface 1610, input/output (I/ O) ports 1612, input/output components 1614, a power supply 1616 and one or more display components 1618 (e.g. displays) and one or more logic units 1620.

Obwohl die verschiedenen Blöcke der 16 als über das Verbindungssystem 1602 mit Leitungen verbunden angezeigt werden, soll dies nicht als einschränkend gedacht sein und dient nur der Übersichtlichkeit. In einigen Ausführungsformen kann beispielsweise eine Darstellungskomponente 1618, wie z. B. ein Anzeigegerät, als I/O-Komponente 1614 betrachtet werden (z. B. wenn es sich bei dem Display um einen Touchscreen handelt). Als weiteres Beispiel können die CPUs 1606 und/oder GPUs 1608 Speicher enthalten (z. B. kann der Speicher 1604 neben dem Speicher der GPUs 1608, der CPUs 1606 und/oder anderer Komponenten repräsentativ für ein Speichergerät sein). Mit anderen Worten ist die Recheneinrichtung aus 16 lediglich illustrativ. Es wird nicht zwischen Kategorien wie „Workstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Gerät“, „Mobilgerät“, „Handheld-Gerät“, „Spielkonsole“, „elektronisches Steuergerät (electronic control unit - ECU)“, „Virtual-Reality-System“, ein „System der augmented Reality“ und/oder anderen Geräte- oder Systemtypen unterschieden, da alle im Umfang der Recheneinrichtung aus 16 gesehen werden.Although the various blocks of the 16 are shown as connected to lines via the connection system 1602, this is not intended to be limiting and is for convenience only. For example, in some embodiments, a presentation component 1618, such as. B. a display device, can be considered an I/O component 1614 (e.g. if the display is a touchscreen). As another example, CPUs 1606 and/or GPUs 1608 may include memory (e.g., memory 1604 may be representative of a storage device in addition to the memory of GPUs 1608, CPUs 1606, and/or other components). In other words, the computing device is off 16 merely illustrative. It does not distinguish between categories such as "workstation", "server", "laptop", "desktop", "tablet", "client device", "mobile device", "handheld device", "game console", "electronic control device ( electronic control unit - ECU)", "virtual reality system", an "augmented reality system" and/or other types of devices or systems, as they are all within the scope of the computing device 16 be seen.

Das Verbindungssystem 1602 kann einen oder mehrere Verbindungen oder Busse darstellen, z. B. einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Das Verbindungssystem 1602 kann einen oder mehrere Bus- oder Verbindungstypen umfassen, z. B. einen ISA-Bus (Industry Standard Architecture), einen EISA-Bus (Extended Industry Standard Architecture), einen VESA-Bus (Video Electronics Standards Association), einen PCI-Bus (Peripheral Component Interconnect), einen PCIe-Bus (Peripheral Component Interconnect Express) und/oder einen anderen Bus- oder Verbindungstyp. In einigen Ausführungsformen gibt es direkte Verbindungen zwischen Komponenten. Als Beispiel kann die CPU 1606 direkt an den Speicher 1604 angeschlossen werden. Außerdem kann die CPU 1606 direkt an die GPU 1608 angeschlossen werden. Bei direkter oder Punkt-zu-Punkt-Verbindung zwischen Komponenten kann das Verbindungssystem 1602 eine PCIe-Verbindung zur Durchführung der Verbindung enthalten. In diesen Beispielen muss kein PCI-Bus in die Recheneinrichtung 1600 aufgenommen werden.The connection system 1602 may represent one or more connections or buses, e.g. B. an address bus, a data bus, a control bus or a combination thereof. The connection system 1602 may include one or more types of buses or connections, e.g. B. an ISA bus (Industry Standard Architecture), an EISA bus (Extended Industry Standard Architecture), a VESA bus (Video Electronics Standards Association), a PCI bus (Peripheral Component Interconnect), a PCIe bus (Peripheral Component Interconnect Express) and/or another bus or connection type. In some embodiments, there are direct connections between components. As an example, CPU 1606 can be connected directly to memory 1604. In addition, the CPU 1606 can be connected directly to the GPU 1608. For direct or point-to-point connection between components, the connection system 1602 may include a PCIe connection to perform the connection. In the In these examples, no PCI bus needs to be included in the computing device 1600.

Der Speicher 1604 kann über eine Vielzahl von computer-lesbaren Medien verfügen. Die computer-lesbaren Medien können alle verfügbaren Medien sein, auf die die Recheneinrichtung 1600 zugreifen kann. Die computer-lesbaren Medien können sowohl flüchtige als auch nichtflüchtige Medien sowie wechselbare und nicht wechselbare Medien enthalten. Als Beispiel und nicht als Einschränkung können die computer-lesbaren Medien Computer-Speichermedien und Kommunikationsmedien aufweisen.Memory 1604 may include a variety of computer-readable media. The computer-readable media can be any available media that the computing device 1600 can access. The computer-readable media may include both volatile and non-volatile media as well as removable and non-removable media. By way of example and not limitation, the computer-readable media may include computer storage media and communication media.

Das Computerspeichermedium kann sowohl flüchtige als auch nichtflüchtige Medien und/oder wechselbare und nicht wechselbare Medien enthalten, die in jedem Verfahren oder Technologie zur Speicherung von Informationen wie computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen und/oder andere Datentypen implementiert sind. Im Speicher 1604 können beispielsweise computer-lesbare Anweisungen gespeichert werden (z. B., die ein oder mehrere Programme und/oder Programmelemente darstellen, z. B. ein Betriebssystem. Zu den Speichermedien für Computer gehören unter anderem RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologien, CD-ROM, Digital Versatile Disks (DVD) oder andere optische Datenträger, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichergeräte, oder jedes andere Medium, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das die Recheneinrichtung 1600 zugreifen kann. Wie hier verwendet, weisen die Speichermedien für Computer nicht per se Signale auf.The computer storage medium may include both volatile and non-volatile media and/or removable and non-removable media implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules and/or other types of data. Memory 1604 may, for example, store computer-readable instructions (e.g., representing one or more programs and/or program elements, e.g. an operating system). Storage media for computers include, but are not limited to, RAM, ROM, EEPROM, Flash -Memory or other storage technologies, CD-ROM, Digital Versatile Disks (DVD) or other optical media, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and on which the computing device 1600. As used here, the storage media for computers do not have signals per se.

Die Speichermedien des Computers können computer-lesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen in einem modulierten Datensignal enthalten, wie z. B. eine Trägerwelle oder einen anderen Transportmechanismus, und umfassen alle Informationsmedien. Der Begriff „moduliertes Datensignal“ kann sich auf ein Signal beziehen, das eine oder mehrere seiner Eigenschaften so eingestellt oder geändert hat, dass Informationen im Signal kodiert werden. Als Beispiel und nicht als Einschränkung können die Speichermedien des Computers drahtgebundene Medien wie ein kabelgebundenes Netz oder eine direkte kabelgebundene Verbindung sowie drahtlose Medien wie akustische, HF-, Infrarot- und andere drahtlose Medien umfassen. Kombinationen der oben genannten Punkte sollten ebenfalls in den Umfang von computerlesbaren Medien aufgenommen werden.The computer's storage media may contain computer-readable instructions, data structures, program modules, and/or other types of data in a modulated data signal, such as: B. a carrier wave or other transport mechanism, and include all information media. The term “modulated data signal” can refer to a signal that has one or more of its properties adjusted or changed to encode information in the signal. By way of example, and not limitation, the computer's storage media may include wired media, such as a wired network or direct wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media. Combinations of the above should also be included within the scope of computer-readable media.

Die CPUs 1606 können so konfiguriert werden, dass sie mindestens einige der computerlesbaren Anweisungen zur Steuerung einer oder mehrerer Komponenten des Rechners 1600 ausführen, um eine oder mehrere der hier beschriebenen Verfahren und/oder Prozesse auszuführen. Die CPUs 1606 können jeweils einen oder mehrere Kerne (z. B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.) umfassen, die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu verarbeiten. Die CPUs 1606 können jede Art von Prozessor enthalten und je nach Art der implementierten Recheneinrichtung 1600 verschiedene Typen von Prozessoren enthalten (z. B. Prozessoren mit weniger Kernen für Mobilgeräte und Prozessoren mit mehr Kernen für Server). Je nach Recheneinrichtung 1600 kann es sich beispielsweise um einen Advanced RISC Machine (ARM)-Prozessor mit reduziertem Instruction Set Computing (RISC) oder einen x86-Prozessor mit komplexem Instruction Set Computing (CISC) handeln. Die Recheneinrichtung 1600 kann zusätzlich zu einem oder mehreren Mikroprozessoren oder zusätzlichen Coprozessoren, wie z. B. mathematischen Coprozessoren, eine oder mehrere CPUs 1606 enthalten.The CPUs 1606 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computer 1600 to perform one or more of the methods and/or processes described herein. The CPUs 1606 may each include one or more cores (e.g., one, two, four, eight, twenty-eight, seventy-two, etc.) capable of processing a plurality of software threads simultaneously. The CPUs 1606 may include any type of processor and may include different types of processors depending on the type of computing device 1600 being implemented (e.g., processors with fewer cores for mobile devices and processors with more cores for servers). Depending on the computing device 1600, it can be, for example, an Advanced RISC Machine (ARM) processor with reduced instruction set computing (RISC) or an x86 processor with complex instruction set computing (CISC). The computing device 1600 may in addition to one or more microprocessors or additional coprocessors, such as. B. mathematical coprocessors, one or more CPUs 1606 included.

Die GPUs 1608 können darüber hinaus oder alternativ von den CPUs 1606 so konfiguriert werden, dass sie mindestens einige computerlesbaren Anweisungen zur Steuerung einer oder mehrerer Komponenten des Rechners 1600 ausführen, um eine oder mehrere der hier beschriebenen Verfahren und/oder Prozesse auszuführen. Eine oder mehrere GPUs 1608 können eine integrierte GPU (z. B. mit einer oder mehreren CPUs 1606) sein und/oder eine oder mehrere GPUs 1608 können eine separate GPU sein. In Ausführungsformen können eine oder mehrere GPUs 1608 ein Coprozessor einer oder mehrerer CPUs 1606 sein. Die GPUs 1608 können von der Recheneinrichtung 1600 zum Rendern von Grafiken (z. B. 3D-Grafiken) oder Durchführen allgemeiner Berechnungen verwendet werden. Beispielsweise können die GPUs 1608 zum General-Purpose Computing auf GPUs (GPGPU) verwendet werden. Die GPUs 1608 können Hunderte oder Tausende von Kernen umfassen, die Hunderte oder Tausende von Software-Threads gleichzeitig verarbeiten können. Die GPUs 1608 können als Reaktion auf Rendering-Befehle (z. B. Rendering-Befehle von den CPUs 1606, die über eine Host-Schnittstelle empfangen wurde) Pixeldaten für Ausgabebilder generieren. Die GPUs 1608 können Grafikspeicher, wie z. B. Displayspeicher, zum Speichern von Pixeldaten oder anderen geeigneten Daten, wie GPGPU-Daten, enthalten. Der Displayspeicher kann als Teil des Speichers 1604 enthalten sein. Die GPUs 1608 können zwei oder mehr GPUs enthalten, die parallel arbeiten (z. B. über eine Verbindung). Die Verbindung kann die GPUs direkt verbinden (z. B. über NVLINK) oder die GPUs über einen Switch verbinden (z. B. über NVSwitch). Wenn sie zusammen kombiniert werden, kann jede GPU 1608 Pixeldaten oder GPGPU-Daten für verschiedene Teile einer Ausgabe oder für unterschiedliche Ausgaben generieren (z. B. eine erste GPU für ein erstes Bild und eine zweite GPU für ein zweites Bild). Jede GPU kann ihren eigenen Speicher enthalten oder den Speicher mit anderen GPUs teilen.The GPUs 1608 may further or alternatively be configured by the CPUs 1606 to execute at least some computer-readable instructions to control one or more components of the computer 1600 to perform one or more of the methods and/or processes described herein. One or more GPUs 1608 may be an integrated GPU (e.g., with one or more CPUs 1606) and/or one or more GPUs 1608 may be a separate GPU. In embodiments, one or more GPUs 1608 may be a coprocessor of one or more CPUs 1606. The GPUs 1608 may be used by the computing device 1600 to render graphics (e.g., 3D graphics) or perform general calculations. For example, the GPUs 1608 can be used for general-purpose computing on GPUs (GPGPU). The GPUs 1608 can contain hundreds or thousands of cores that can process hundreds or thousands of software threads simultaneously. The GPUs 1608 may generate pixel data for output images in response to rendering commands (e.g., rendering commands from the CPUs 1606 received via a host interface). The GPUs 1608 can support graphics memory such as: B. Display memory, for storing pixel data or other suitable data, such as GPGPU data. Display memory may be included as part of memory 1604. The GPUs 1608 may include two or more GPUs operating in parallel (e.g., over an interconnect). The connection can connect the GPUs directly (e.g. via NVLINK) or connect the GPUs via a switch (e.g. via NVSwitch). When combined together, each GPU 1608 can generate pixel data or GPGPU data for different parts of an output or for different outputs (e.g., a first GPU for a first image and a second GPU for a second image). Each GPU can contain its own memory or share memory with other GPUs.

Die Logikeinheiten 1620 können darüber hinaus oder alternativ von den CPUs 1606 und/oder den GPUs 1608 so konfiguriert werden, dass sie mindestens einige computerlesbaren Anweisungen zur Steuerung einer oder mehrerer Komponenten des Rechners 1600 ausführen, um eine oder mehrere der hier beschriebenen Verfahren und/oder Prozesse auszuführen. In Ausführungsformen können die CPUs 1606, die GPUs 1608 und/oder die Logikeinheiten 1620 diskret oder gemeinsam jede beliebige Kombination der Verfahren, Prozesse und/oder Teile davon durchführen. Eine oder mehrere der Logikeinheiten 1620 können Teil einer oder mehrerer CPUs 1606 und/oder GPUs 1608 sein und/oder eine oder mehrere der Logikeinheiten 1620 können diskrete Komponenten oder auf andere Weise außerhalb der CPUs 1606 und/oder der GPUs 1608 sein. In Ausführungsformen können eine oder mehrere Logikeinheiten 1620 ein Coprozessor einer oder mehrerer CPUs 1606 und/oder einer oder mehrerer GPUs 1608 sein.The logic units 1620 may further or alternatively be configured by the CPUs 1606 and/or the GPUs 1608 to execute at least some computer-readable instructions to control one or more components of the computer 1600 to perform one or more of the methods and/or described herein Execute processes. In embodiments, the CPUs 1606, the GPUs 1608, and/or the logic units 1620 may discretely or collectively perform any combination of the methods, processes, and/or portions thereof. One or more of the logic units 1620 may be part of one or more CPUs 1606 and/or GPUs 1608 and/or one or more of the logic units 1620 may be discrete components or otherwise external to the CPUs 1606 and/or the GPUs 1608. In embodiments, one or more logic units 1620 may be a coprocessor of one or more CPUs 1606 and/or one or more GPUs 1608.

Beispiele für die Logikeinheiten 1620 enthalten einen oder mehrere Prozessorkerne und/oder Komponenten davon, wie Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs), Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs), Texture Processing Clusters (TPCs), Streaming Multiprozessoren (Streaming Multiprocessors - SMs), Tree Traversal Units (TTUs), Artificial Intelligence (AIAS), Accelerators (AIAS) Deep Learning Accelerators (DLAs), Arithmetic-Logic Units (ALUs), Application-Specific Integrated Circuits (ASICs), Floating Point Units (FPUs), I/O-Elemente (input/output - I/O), Peripheral Component Interconnect (PCI)- oder Peripheral Component Interconnect Express (PCIe)-Elemente und/oder ähnliches.Examples of the logic units 1620 include one or more processor cores and/or components thereof, such as Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs), Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs) , Texture Processing Clusters (TPCs), Streaming Multiprocessors (SMs), Tree Traversal Units (TTUs), Artificial Intelligence (AIAS), Accelerators (AIAS) Deep Learning Accelerators (DLAs), Arithmetic-Logic Units (ALUs), Application -Specific Integrated Circuits (ASICs), Floating Point Units (FPUs), input/output (I/O) elements, Peripheral Component Interconnect (PCI) or Peripheral Component Interconnect Express (PCIe) elements and/or similar.

Die Kommunikationsschnittstelle 1610 kann einen oder mehrere Empfänger, Sender und/oder Transceiver umfassen, die es der Recheneinrichtung 1600 ermöglichen, über ein elektronisches Kommunikationsnetzwerk, einschließlich drahtgebundener und/oder drahtloser Kommunikation, mit anderen Recheneinrichtungen zu kommunizieren. Die Kommunikationsschnittstelle 1610 kann Komponenten und Funktionen enthalten, die die Kommunikation über eine Reihe verschiedener Netzwerke ermöglichen, z. B. drahtlose Netzwerke (z. B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), kabelgebundene Netzwerke (z. B. Kommunikation über Ethernet oder InfiniBand), Low-Power-Wide-Area-Netzwerke (z. B. LoRaWAN, Sigfox usw.) und/oder das Internet.The communications interface 1610 may include one or more receivers, transmitters, and/or transceivers that enable the computing device 1600 to communicate with other computing devices over an electronic communications network, including wired and/or wireless communications. The communication interface 1610 may include components and functions that enable communication over a number of different networks, such as: B. wireless networks (e.g. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, etc.), wired networks (e.g. communication via Ethernet or InfiniBand), low-power wide-area networks (e.g. LoRaWAN, Sigfox, etc.) and/or the Internet.

Die I/O-Ports 1612 können ermöglichen, dass die Recheneinrichtung 1600 logisch mit anderen Einrichtungen gekoppelt wird, einschließlich der I/O-Komponenten 1614, der Darstellungskomponente(n) 1618 und/oder anderen Komponenten, von denen einige in die Recheneinrichtung 1600 eingebaut (z. B. integriert) sein können. Die I/O-Komponenten 1614 umfassen ein Mikrofon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, Gamecontroller, Satellitenschüssel, Scanner, Drucker, drahtloses Gerät, usw. Die I/O-Komponenten 1614 können eine natürliche Benutzeroberfläche (natural user interface, NUI) bereitstellen, die Luftgesten, Stimme oder andere physiologische Eingaben verarbeitet, die von einem Benutzer generiert werden. In einigen Fällen können Eingaben zur weiteren Verarbeitung an ein geeignetes Netzelement übertragen werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Tasterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als auch in der Nähe des Bildschirms, Luftgesten, Kopf- und Augenverfolgung und Touch-Erkennung (wie unten näher beschrieben) implementieren, die mit einem Display der Recheneinrichtung 1600 verbunden ist. Die Recheneinrichtung 1600 kann Tiefenkameras umfassen, wie stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, Touchscreen-Technologie und Kombinationen davon, zur Gestendetektion und -erkennung. Darüber hinaus kann die Recheneinrichtung 1600 Beschleunigungsmesser oder Gyroskope (z. B. als Teil einer Trägheitsmesseinheit (IMU)) enthalten, die eine Bewegungserkennung ermöglichen. In einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope von der Recheneinrichtung 1600 verwendet werden, um immersive Augmented Reality oder Virtual Reality darzustellen.The I/O ports 1612 may enable the computing device 1600 to be logically coupled to other devices, including the I/O components 1614, the presentation component(s) 1618, and/or other components, some of which are built into the computing device 1600 (e.g. integrated). The I/O components 1614 include a microphone, mouse, keyboard, joystick, gamepad, game controller, satellite dish, scanner, printer, wireless device, etc. The I/O components 1614 may have a natural user interface interface (NUI) that processes air gestures, voice, or other physiological input generated by a user. In some cases, inputs can be transferred to an appropriate network element for further processing. A NUI can implement any combination of voice recognition, tactile recognition, facial recognition, biometric recognition, both on-screen and near-screen gesture recognition, air gestures, head and eye tracking, and touch recognition (as further described below) using a Display of the computing device 1600 is connected. The computing device 1600 may include depth cameras, such as stereoscopic camera systems, infrared camera systems, RGB camera systems, touchscreen technology, and combinations thereof, for gesture detection and recognition. In addition, the computing device 1600 may include accelerometers or gyroscopes (e.g., as part of an inertial measurement unit (IMU)) that enable motion detection. In some examples, the output of the accelerometers or gyroscopes from the computing device 1600 may be used to display immersive augmented reality or virtual reality.

Die Stromversorgung 1616 kann eine fest verdrahtete Stromversorgung, eine Batterie-Stromversorgung oder eine Kombination davon umfassen. Die Stromversorgung 1616 kann die Recheneinrichtung 1600 mit Strom versorgen, damit die Komponenten der Recheneinrichtung 1600 arbeiten können.The power supply 1616 may include a hardwired power supply, a battery power supply, or a combination thereof. The power supply 1616 may provide power to the computing device 1600 to enable the components of the computing device 1600 to operate.

Die Darstellungskomponenten 1618 können ein Display (z. B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, ein Heads-Up-Display (HUD), andere Anzeigetypen oder eine Kombination davon), Lautsprecher und/oder andere Darstellungskomponenten umfassen. Die Darstellungskomponenten 1618 können Daten von anderen Komponenten (z. B. GPUs 1608, CPUs 1606 usw.) empfangen und die Daten ausgeben (z. B. als Bild, Video, Ton usw.).The display components 1618 may include a display (e.g., a monitor, a touch screen, a television screen, a heads-up display (HUD), other display types, or a combination thereof), speakers, and/or other display components. The presentation components 1618 may receive data from other components (e.g., GPUs 1608, CPUs 1606, etc.). and output the data (e.g. as image, video, sound, etc.).

Die Offenbarung kann im allgemeinen Kontext von Computercode oder maschinenverwendbaren Anweisungen beschrieben werden, einschließlich computerausführbarer Anweisungen wie etwa Programmmodulen, die von einem Computer oder einer anderen Maschine wie etwa einem Personal Data Assistant oder einem anderen Handgerät ausgeführt werden. Im Allgemeinen beziehen sich Programmmodule einschließlich Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw. auf Code, der bestimmte Aufgaben ausführt oder bestimmte abstrakte Datentypen implementiert. Die Offenbarung kann in einer Vielzahl von Systemkonfigurationen ausgeführt werden, einschließlich Handheld-Vorrichtungen, Unterhaltungselektronik, Allzweckcomputern, spezielleren Recheneinrichtungen usw. Die Offenbarung kann auch in verteilten Rechenumgebungen ausgeführt werden, in denen Aufgaben von entfernten Verarbeitungsvorrichtungen, die über ein Kommunikationsnetz verbunden sind, durchgeführt werden.The disclosure may be described in the general context of computer code or machine-usable instructions, including computer-executable instructions such as program modules that are executed by a computer or other machine such as a personal data assistant or other handheld device. In general, program modules including routines, programs, objects, components, data structures, etc. refer to code that performs specific tasks or implements specific abstract data types. The disclosure may be embodied in a variety of system configurations, including handheld devices, consumer electronics, general purpose computers, more specialized computing devices, etc. The disclosure may also be embodied in distributed computing environments in which tasks are performed by remote processing devices connected via a communications network .

Zumindest eine Ausführung der Offenbarung kann mit Bezug zu den folgenden Sätzen beschrieben werden.

  1. 1. Integrierte Schaltung, umfassend:
    • einen ersten Takt;
    • einen zweiten Takt, der von dem ersten Takt isoliert ist;
    • einen ersten Stromanschluss;
    • einen zweiten Stromanschluss, der von dem ersten Stromanschluss isoliert ist; einen ersten Abschnitt, um Strom mittels des ersten Stromanschlusses und ein erstes Taktsignal mittels des ersten Takts zu empfangen; und einen zweiten Abschnitt, um Strom mittels des zweiten Stromanschlusses und ein zweites Taktsignal mittels des zweiten Takts zu empfangen, wobei der zweite Abschnitt eine Schnittstelle zur Kommunikation mit dem ersten Abschnitt, eine Schnittstellensteuerung und einen Prozessor zum Sperren und Entsperren der Schnittstellensteuerung umfasst, wobei die Schnittstellensteuerung eine Kommunikation über die Schnittstelle verhindert, wenn die Schnittstellensteuerung gesperrt ist, und wobei die Schnittstellensteuerung eine Kommunikation über die Schnittstelle zulässt, wenn die Schnittstellensteuerung entsperrt ist.
  2. 2. Integrierte Schaltung nach Satz 1,
    • wobei der erste Abschnitt einen ersten Fehleraggregator umfasst, um an den zweiten Abschnitt Hinweise zu übermitteln, die einem oder mehreren Fehlern entsprechen, die in dem ersten Abschnitt auftreten,
    • wobei der zweite Abschnitt einen zweiten Fehleraggregator umfasst, um die dem einen oder den mehreren Fehlern entsprechenden Hinweise zu empfangen und zu speichern,
    • wobei die integrierte Schaltung eine Fehlerschnittstelle umfasst, die den ersten und den zweiten Fehleraggregator verbindet,
    • wobei die Fehlerschnittstelle von der Schnittstelle getrennt ist, und wobei der Prozessor die Schnittstellensteuerung nur dann entsperrt, wenn der zweite Fehleraggregator keine Hinweise speichert, die irgendwelchen Fehlern entsprechen.
  3. 3. Integrierte Schaltung nach Satz 1 oder 2, wobei der zweite Abschnitt einen Timer umfasst, der startet, wenn der Prozessor eine Kommunikation mit dem ersten Abschnitt über die Schnittstelle einleitet, und wobei der Timer einen Hinweis auf einen Fehler erzeugt, wenn der Timer anzeigt, dass mehr als eine vorbestimmte Zeitspanne verstrichen ist und der erste Abschnitt nicht auf die Kommunikation geantwortet hat.
  4. 4. Integrierte Schaltung nach Satz 3, wobei der Timer zurückgesetzt wird, wenn der erste Abschnitt auf die Kommunikation antwortet, bevor der Timer anzeigt, dass mehr als die vorgegebene Zeitspanne verstrichen ist, und wobei der Prozessor die Schnittstelle sperrt, nachdem der Prozessor die Kommunikation mit dem ersten Abschnitt beendet hat.
  5. 5. Integrierte Schaltung nach einem der Sätze 1-4, die darüber hinaus umfasst:
    • einen nichtflüchtigen Speicher, der von dem ersten und dem zweiten Abschnitt gemeinsam genutzt wird, wobei der zweite Abschnitt einen lokalen Speicher umfasst, wobei der Prozessor Anweisungen von dem nichtflüchtigen Speicher in den lokalen Speicher kopiert, wenn die integrierte Schaltung bootet, wobei die Anweisungen von dem Prozessor auszuführen sind, wenn die Schnittstelle gesperrt ist.
  6. 6. Integrierte Schaltung nach einem der Sätze 1-5, wobei der erste Abschnitt einen flüchtigen Speicher umfasst, und wobei der zweite Abschnitt mit dem flüchtigen Speicher über die Schnittstelle kommuniziert.
  7. 7. Integrierte Schaltung nach einem der Sätze 1-6, die sich auf einem zusammenhängenden Stück Halbleitermaterial befindet.
  8. 8. Integrierte Schaltung nach einem der Sätze 1-7, die einen Abschnitt eines System on a Chip („SoC“) für Fahrzeuge implementiert.
  9. 9. Integrierte Schaltung nach einem der Sätze 1-8, wobei der erste Abschnitt auf einer ersten Risikoklassifizierungsstufe arbeitet, wobei der zweite Abschnitt auf einer zweiten Risikoklassifizierungsstufe arbeitet, und wobei die zweite Risikoklassifizierungsstufe höher ist als die erste Risikoklassifizierungsstufe.
  10. 10. Verfahren umfassend:
    • Bestimmen, durch einen ersten Abschnitt einer integrierten Schaltung, ob ein Fehleraggregator in dem ersten Abschnitt Daten enthält, die auf mindestens eine vorbestimmte Anzahl von Fehlern hinweisen;
    • Entsperren einer Schnittstelle mit einem zweiten Abschnitt der integrierten Schaltung durch den ersten Abschnitt, wenn der erste Abschnitt feststellt, dass der Fehleraggregator keine Daten enthält, die auf zumindest die vorbestimmte Anzahl von Fehlern hinweisen;
    • Einleiten eines Zugriffs auf den zweiten Abschnitt durch den ersten Abschnitt über die entsperrte Schnittstelle; und
    • Sperren der Schnittstelle durch den ersten Abschnitt, nachdem der Zugriff eingeleitet wurde.
  11. 11. Verfahren nach Satz 10, wobei das Einleiten des Zugriffs einen Zugriffs-Timer startet, und wobei der erste Abschnitt die Schnittstelle sperrt, nachdem ein Erfassen des Zugriffs-Timers anzeigt, dass mehr als eine vorbestimmte Zeitspanne seit dem Start des Zugriffs-Timers verstrichen ist und eine Antwort von dem zweiten Abschnitt nicht empfangen worden ist.
  12. 12. Verfahren nach Satz 11, wobei der erste Abschnitt einen neuen Fehler erzeugt, nachdem ein Erfassen des Zugriffs-Timers anzeigt, dass mehr als eine vorbestimmte Zeitspanne seit dem Start des Zugriffs-Timers verstrichen ist und eine Antwort von dem zweiten Abschnitt nicht empfangen worden ist.
  13. 13. Verfahren nach einem der Sätze 10-12, wobei das Einleiten des Zugriffs einen Zugriffs-Timer startet und das Verfahren darüber hinaus umfasst: Empfangen einer Antwort von dem zweiten Abschnitt durch den ersten Abschnitt, bevor der Zugriffs-Timer anzeigt, dass mehr als eine vorbestimmte Zeitspanne seit dem Start des Zugriffs-Timers verstrichen ist, wobei das Empfangen der Antwort den Zugriffs-Timer stoppt, wobei der erste Abschnitt die Schnittstelle nach Beendigung des Zugriffs sperrt.
  14. 14. Verfahren nach einem der Sätze 10-13, das darüber hinaus umfasst: Durchführen einer oder mehrerer Korrekturmaßnahmen durch den ersten Abschnitt, wenn der erste Abschnitt feststellt, dass der Fehleraggregator Daten enthält, die auf zumindest die vorbestimmte Anzahl von Fehlern hinweisen.
  15. 15. Verfahren nach Satz 14, wobei die integrierte Schaltung einen Abschnitt eines System on a Chip („SoC“) für Fahrzeuge implementiert, und wobei die eine oder die mehreren Korrekturmaßnahmen ausgestaltet sind, um ein autonomes Fahrzeug in einen sicheren Zustand zu versetzen.
  16. 16. Verfahren nach einem der Sätze 10-15, wobei die integrierte Schaltung einen Abschnitt eines System on a Chip, „SoC“, für Fahrzeuge implementiert, wobei der erste Abschnitt Sicherheitsfunktionen für ein autonomes Fahrzeug durchführt, während das autonome Fahrzeug fährt, und wobei der zweite Abschnitt autonome Fahrfunktionen während des Fahrens des autonomen Fahrzeugs ausführt.
  17. 17. Verfahren nach einem der Sätze 10-16, wobei die Schnittstelle den ersten Abschnitt mit einem flüchtigen Speicher oder einem Steuer-Backbone des zweiten Abschnitts verbindet.
  18. 18. Verfahren nach einem der Sätze 10-17, wobei der erste Abschnitt in einem ersten Taktbereich arbeitet, wobei der zweite Abschnitt in einem zweiten Taktbereich arbeitet, der sich von dem ersten Taktbereich unterscheidet, und wobei die Schnittstelle eine Phasensynchronisationsschaltung umfasst, die ein von dem zweiten Abschnitt empfangenes Signal in den ersten Taktbereich konvertiert.
  19. 19. Integrierte Schaltung, umfassend:
    • einen ersten Abschnitt, der mit einer ersten Risikostufe innerhalb eines ersten Bereichs arbeitet; und
    • einen zweiten Abschnitt, der mit einer zweiten Risikostufe innerhalb eines zweiten Bereichs arbeitet, wobei die zweite Risikostufe größer als die erste Risikostufe ist,
    • wobei der zweite Abschnitt einen Prozessor und eine Schnittstelle, die den ersten und den zweiten Abschnitt verbindet, umfasst, wobei der Prozessor die Schnittstelle selektiv sperrt, um eine Kommunikation über die Schnittstelle zu verhindern, wobei der Prozessor die Schnittstelle selektiv entsperrt, um eine Kommunikation über die Schnittstelle zu ermöglichen.
  20. 20. Integrierte Schaltung nach Satz 19, die darüber hinaus umfasst:
    • einen ersten Stromanschluss, der den ersten Bereich mit Strom versorgt; und
    • einen zweiten Stromanschluss, der von dem ersten Stromanschluss elektrisch isoliert ist und den zweiten Bereich mit Strom versorgt, wobei die Schnittstelle mindestens einen Spannungsschieber zum Einstellen einer Spannung für jegliche Kommunikation über die Schnittstelle umfasst.
  21. 21. Integrierte Schaltung nach Satz 19 oder 20, die darüber hinaus umfasst:
    • einen ersten Takt, der den ersten Bereich mit einem ersten Taktsignal versorgt; und
    • einen zweiten Takt, der von dem ersten Takt isoliert ist und den zweiten Bereich mit einem zweiten Taktsignal versorgt, wobei die Schnittstelle eine Phasensynchronisationsschaltung zum Einstellen einer Phase jeglicher Kommunikation über die Schnittstelle umfasst.
  22. 22. Integrierte Schaltung nach einem der Sätze 19-21, wobei die Schnittstelle eine Firewall umfasst, die eine oder mehrere Sicherheitsregeln implementiert, und wobei die Firewall eine Kommunikation über die Schnittstelle auf der Grundlage der einen oder der mehreren Sicherheitsregeln erlaubt oder blockiert.
  23. 23. Integrierte Schaltung nach einem der Sätze 19-22, wobei der erste Abschnitt einen ersten Fehleraggregator umfasst, um Daten, die einen in dem ersten Abschnitt auftretenden Fehler anzeigen, an den zweiten Abschnitt zu übermitteln, wobei der zweite Abschnitt einen zweiten Fehleraggregator umfasst, um die den Fehler anzeigende Daten zu empfangen und die den Fehler anzeigende Daten zu speichern, bis der Fehler durch den Prozessor gelöscht wird, wobei die integrierte Schaltung eine Fehlerschnittstelle umfasst, die den ersten und den zweiten Fehleraggregator verbindet, wobei die Fehlerschnittstelle von der Schnittstelle getrennt ist, und wobei der Prozessor die Schnittstelle erst dann entsperrt, wenn Fehler, die den Daten entsprechen, die auf irgendwelche von dem zweiten Fehleraggregator gespeicherten Fehler hinweisen, von dem Prozessor gelöscht worden sind.
  24. 24. Integrierte Schaltung nach einem der Sätze 19-23, wobei der zweite Abschnitt einen Timer umfasst, der startet, wenn der Prozessor die Schnittstelle entsperrt, und wobei der Timer einen neuen Fehler erzeugt, wenn der Timer anzeigt, dass mehr als eine vorbestimmte Zeitspanne verstrichen ist und der erste Abschnitt nicht auf eine an den ersten Abschnitt über die Schnittstelle gesendete Kommunikation geantwortet hat.
  25. 25. Integrierte Schaltung nach Satz 24, wobei der Timer zurückgesetzt wird, wenn der erste Abschnitt auf die Kommunikation antwortet, bevor der Timer anzeigt, dass mehr als die vorbestimmte Zeitspanne verstrichen ist, und wobei der Prozessor die Schnittstelle sperrt, nachdem der Prozessor die Kommunikation mit dem ersten Abschnitt beendet hat.
  26. 26. Integrierte Schaltung nach einem der Sätze 19-25, wobei der erste Abschnitt einen nichtflüchtigen Speicher umfasst, der von dem ersten und dem zweiten Abschnitt gemeinsam genutzt wird, wobei der zweite Abschnitt einen lokalen Speicher umfasst, wobei der Prozessor Anweisungen von dem nichtflüchtigen Speicher in den lokalen Speicher kopiert, wenn die integrierte Schaltung bootet, und wobei die Anweisungen von dem Prozessor ausgeführt werden, wenn die Schnittstelle gesperrt ist.
  27. 27. Integrierte Schaltung nach einem der Sätze 19-26, wobei der erste Abschnitt einen flüchtigen Speicher umfasst, und wobei der zweite Abschnitt mit dem flüchtigen Speicher über die Schnittstelle kommuniziert.
  28. 28. Integrierte Schaltung nach einem der Sätze 19-27, wobei der erste Abschnitt ein Steuer-Backbone umfasst, wobei die Schnittstelle mit dem Steuer-Backbone verbunden ist, und wobei der zweite Abschnitt mit mindestens einem Teil des ersten Abschnitts über die Schnittstelle und das Steuer-Backbone kommuniziert.
  29. 29. Integrierte Schaltung nach einem der Sätze 19-28, die sich auf einem zusammenhängenden Stück Halbleitermaterial befindet.
  30. 30. Integrierte Schaltung nach einem der Sätze 19-29, die einen Abschnitt eines System on a Chip, „SoC“, für Kraftfahrzeuge implementiert.
  31. 31. Integrierte Schaltung nach einem der Sätze 19-30, wobei der zweite Abschnitt eine Vielzahl von Schnittstellen umfasst, die die Schnittstelle umfassen, wobei jede der Vielzahl von Schnittstellen den zweiten Abschnitt mit einem entsprechenden Teil des ersten Abschnitts verbindet, wobei der Prozessor selektiv eine bestimmte der Vielzahl von Schnittstellen entsperrt, um eine Kommunikation über die bestimmte Schnittstelle mit dem entsprechenden Teil des ersten Abschnitts zu ermöglichen.
  32. 32. Integrierte Schaltung nach Satz 31, wobei der Prozessor selektiv eine beliebige der Vielzahl von Schnittstellen, die entsperrt ist, sperrt, um eine Kommunikation über die Vielzahl von Schnittstellen mit dem ersten Abschnitt zu verhindern.
At least one embodiment of the disclosure can be described with reference to the following sentences.
  1. 1. Integrated circuit comprising:
    • a first bar;
    • a second clock isolated from the first clock;
    • a first power connection;
    • a second power terminal isolated from the first power terminal; a first section for receiving power via the first power terminal and a first clock signal via the first clock; and a second section for receiving power via the second power terminal and a second clock signal via the second clock, the second section comprising an interface for communicating with the first section, an interface controller and a processor for locking and unlocking the interface controller, the Interface control prevents communication over the interface when the interface control is locked, and wherein the interface control allows communication over the interface when the interface control is unlocked.
  2. 2. Integrated circuit according to sentence 1,
    • wherein the first section includes a first error aggregator for transmitting to the second section indications corresponding to one or more errors occurring in the first section,
    • wherein the second section includes a second error aggregator to receive and store the indications corresponding to the one or more errors,
    • wherein the integrated circuit includes a fault interface connecting the first and second fault aggregators,
    • wherein the error interface is separate from the interface, and wherein the processor unlocks the interface control only if the second error aggregator does not store indications corresponding to any errors.
  3. 3. Integrated circuit according to sentence 1 or 2, wherein the second section comprises a timer that starts when the processor initiates communication with the first section via the interface, and wherein the timer generates an indication of an error when the timer indicates , that more than a predetermined amount of time has passed and the first section has not responded to the communication.
  4. 4. Integrated circuit according to sentence 3, wherein the timer is reset if the first section responds to the communication before the timer indicates that more than the predetermined amount of time has elapsed, and wherein the processor blocks the interface after the processor has completed the communication finished with the first section.
  5. 5. Integrated circuit according to one of sentences 1-4, which also includes:
    • a non-volatile memory shared by the first and second sections, the second section comprising a local memory, the processor copying instructions from the non-volatile memory to the local memory when the integrated circuit boots, the instructions from the Processor must be executed when the interface is blocked.
  6. 6. The integrated circuit of any one of sentences 1-5, wherein the first portion comprises a volatile memory, and wherein the second portion communicates with the volatile memory via the interface.
  7. 7. Integrated circuit according to one of sentences 1-6, which is located on a continuous piece of semiconductor material.
  8. 8. Integrated circuit according to one of sentences 1-7, which implements a portion of a system on a chip (“SoC”) for vehicles.
  9. 9. Integrated circuit according to one of sentences 1-8, wherein the first section operates at a first risk classification level, the second section operates at a second risk classification level, and wherein the second risk classification level is higher than the first risk classification level.
  10. 10. Procedure comprising:
    • determining, by a first section of an integrated circuit, whether a fault aggregator in the first section contains data indicative of at least a predetermined number of faults;
    • unlocking an interface with a second portion of the integrated circuit by the first portion when the first portion determines that the error aggregator does not contain data indicative of at least the predetermined number of errors;
    • Initiating access to the second section by the first section via the unlocked interface; and
    • Locking the interface through the first section after access is initiated.
  11. 11. The method of sentence 10, wherein initiating access starts an access timer, and wherein the first section disables the interface after detection of the access timer indicates that more than a predetermined amount of time has elapsed since the start of the access timer and a response from the second section has not been received.
  12. 12. The method of sentence 11, wherein the first section generates a new error after a detection of the access timer indicates that more than a predetermined period of time has elapsed since the start of the access timer and a response from the second section has not been received is.
  13. 13. The method of any of sentences 10-12, wherein initiating access starts an access timer and the method further comprises: receiving a response from the second section by the first section before the access timer indicates that more than a predetermined period of time has elapsed since the start of the access timer, receiving the response stops the access timer, the first section locking the interface after the access is completed.
  14. 14. The method of any of sentences 10-13, further comprising: performing one or more corrective actions by the first section when the first section determines that the error aggregator contains data indicating at least the predetermined number of errors.
  15. 15. The method according to sentence 14, wherein the integrated circuit implements a portion of a system on a chip (“SoC”) for vehicles, and wherein the one or more corrective measures are designed to place an autonomous vehicle in a safe state.
  16. 16. The method of any of sentences 10-15, wherein the integrated circuit implements a portion of a system on a chip, “SoC,” for vehicles, the first portion performing safety functions for an autonomous vehicle while the autonomous vehicle is driving, and wherein the second section carries out autonomous driving functions while driving the autonomous vehicle.
  17. 17. The method of any of sentences 10-16, wherein the interface connects the first section to a volatile memory or a control backbone of the second section.
  18. 18. The method of any of sentences 10-17, wherein the first section operates in a first clock range, the second section operates in a second clock range different from the first clock range, and wherein the interface comprises a phase synchronization circuit that includes one of The signal received in the second section is converted into the first clock range.
  19. 19. Integrated circuit comprising:
    • a first section operating at a first level of risk within a first range; and
    • a second section that operates with a second risk level within a second range, the second risk level being greater than the first risk level,
    • wherein the second section includes a processor and an interface connecting the first and second sections, the processor selectively disabling the interface to prevent communication via the interface, the processor selectively unlocking the interface to enable communication via to enable the interface.
  20. 20. Integrated circuit according to sentence 19, which also includes:
    • a first power connector that supplies power to the first region; and
    • a second power port that is electrically isolated from the first power port and supplies power to the second region, the interface comprising at least one voltage slider for setting a voltage for any communication via the interface.
  21. 21. Integrated circuit according to sentence 19 or 20, which also includes:
    • a first clock that supplies the first area with a first clock signal; and
    • a second clock isolated from the first clock and providing the second region with a second clock signal, the interface comprising a phase synchronization circuit for adjusting a phase of any communication via the interface.
  22. 22. The integrated circuit of any of sentences 19-21, wherein the interface includes a firewall that implements one or more security rules, and wherein the firewall allows or blocks communication over the interface based on the one or more security rules.
  23. 23. Integrated circuit according to one of sentences 19-22, wherein the first section comprises a first error aggregator for transmitting data indicative of an error occurring in the first section to the second section, the second section comprising a second error aggregator, to receive the data indicating the error and to store the data indicating the error until the error is cleared by the processor, the integrated circuit comprising an error interface connecting the first and second error aggregators, the error interface being separate from the interface and wherein the processor unlocks the interface only after errors corresponding to the data indicative of any errors stored by the second error aggregator have been cleared by the processor.
  24. 24. The integrated circuit of any of sentences 19-23, wherein the second portion comprises a timer that starts when the processor unlocks the interface, and wherein the timer generates a new error if the timer indicates that more than a predetermined period of time has elapsed and the first section has not responded to a communication sent to the first section via the interface.
  25. 25. The integrated circuit of sentence 24, wherein the timer is reset if the first section responds to the communication before the timer indicates that more than the predetermined amount of time has elapsed, and wherein the processor disables the interface after the processor completes the communication finished with the first section.
  26. 26. The integrated circuit of any of sentences 19-25, wherein the first section comprises a non-volatile memory shared by the first and second sections, the second section comprising a local memory, the processor receiving instructions from the non-volatile memory copied to local memory when the integrated circuit boots, and the instructions are executed by the processor when the interface is locked.
  27. 27. The integrated circuit of any of sentences 19-26, wherein the first portion includes a volatile memory, and wherein the second portion communicates with the volatile memory via the interface.
  28. 28. Integrated circuit according to one of sentences 19-27, wherein the first section comprises a control backbone, the interface being connected to the control backbone, and wherein the second section is connected to at least a portion of the first section via the interface and the Control backbone communicates.
  29. 29. Integrated circuit according to one of sentences 19-28, which is located on a continuous piece of semiconductor material.
  30. 30. Integrated circuit according to any of sentences 19-29, which implements a portion of a system on a chip, “SoC”, for motor vehicles.
  31. 31. The integrated circuit of any one of sentences 19-30, wherein the second section comprises a plurality of interfaces comprising the interface, each of the plurality of interfaces connecting the second section to a corresponding part of the first section, the processor selectively one certain of the plurality of interfaces are unlocked to enable communication via the particular interface with the corresponding part of the first section.
  32. 32. The integrated circuit of sentence 31, wherein the processor selectively disables any of the plurality of interfaces that is unlocked to prevent communication via the plurality of interfaces with the first section.

Die Verwendung der Begriffe „ein“, „eine“ und „eines und „der“, „die“ und „das“ und ähnlicher Bezeichnungen im Zusammenhang mit der Beschreibung offengelegter Ausführungsformen (insbesondere im Zusammenhang mit den folgenden Ansprüchen) ist so auszulegen, dass sie sowohl die Einzahl als auch die Mehrzahl umfasst, sofern hier nicht anders angegeben oder durch den Kontext eindeutig widerlegt ist, und ist nicht als Definition eines Begriffs zu verstehen. Die Begriffe „umfassend“, „aufweisend“, „einschließlich“ und „enthaltend“ sind, sofern nicht anders angegeben, als offene Begriffe zu verstehen (d.h. „einschließlich, aber nicht beschränkt auf‟). Der Begriff „verbunden“ ist, wenn er unverändert bleibt und sich auf physikalische Verbindungen bezieht, als teilweise oder ganz in einem Teil enthalten, an ihm befestigt oder mit ihm verbunden zu verstehen, auch wenn etwas dazwischen liegt. Die Aufzählung von Wertebereichen soll lediglich als Kurzform dienen, um sich individuell auf jeden einzelnen Wert zu beziehen, der in den Bereich fällt, sofern hier nichts anderes angegeben ist, und jeder einzelne Wert wird in die Spezifikation aufgenommen, als wäre er hier einzeln aufgeführt. Bei mindestens einer Ausführungsform ist die Verwendung des Begriffs „Menge“ oder „Satz“ (z. B. „eine Menge von Gegenständen“) oder „Teilmenge“, sofern nicht anders angegeben oder durch den Kontext widerlegt ist, als eine nicht leere Sammlung zu verstehen, die ein oder mehrere Elemente umfasst. Darüber hinaus bezeichnet der Begriff „Teilmenge“ einer entsprechenden Menge, sofern nicht anders vermerkt oder durch den Kontext widerlegt, nicht notwendigerweise eine echte Teilmenge der entsprechenden Menge, sondern die Teilmenge und die entsprechende Menge können gleich sein.The use of the terms "a", "an" and "an and "the", "the" and "the" and similar terms in connection with the description of disclosed embodiments (particularly in connection with the following claims) are to be construed as meaning that it includes both the singular and the plural unless otherwise stated herein or clearly contradicted by the context and is not to be construed as a definition of a term. The terms “comprising,” “comprising,” “including,” and “containing” are intended to be open terms (i.e., “including, but not limited to”) unless otherwise specified. The term "connected", when left unchanged and referring to physical connections, is to be understood as being partly or wholly contained in, attached to or connected to a part, even if there is something in between. The enumeration of value ranges is intended solely as a shorthand to refer individually to each individual value falling within the range unless otherwise specified herein, and each individual value is included in the specification as if it were individually listed here. In at least one embodiment, use of the term "set" or "set" (e.g., "a set of items") or "subset" is intended to mean a non-empty collection unless otherwise indicated or contradicted by the context understand that includes one or more elements. Furthermore, unless otherwise noted or contradicted by the context, the term "subset" of a corresponding set does not necessarily mean a true subset of the corresponding set, but the subset and the corresponding set may be the same.

Wenn hier von „und/oder“ in Bezug auf zwei oder mehr Elemente die Rede ist, sollte dies als Mittel für nur ein Element oder eine Kombination von Elementen verstanden werden. Zum Beispiel kann „Element A, Element B und/oder Element C“ nur Element A, nur Element B, nur Element C, Element A und Element B, Element A und Element C, Element B und Element C oder die Elemente A, B und C einschließne.When speaking of “and/or” in reference to two or more elements, this should be understood as meaning only one element or a combination of elements. For example, "Element A, Element B and/or Element C" can only contain element A, only element B, only element C, only element A and element B, element A and element C, element B and element C or the elements A, B and include C.

Konjunktivische Ausdrücke, wie z. B. Sätze der Form „mindestens eines von A, B, und C“ oder „mindestens eines von A, B und C“, werden, sofern nicht ausdrücklich anders angegeben oder durch den Kontext eindeutig widersprochen, im Kontext allgemein so verstanden, dass ein Element, ein Begriff usw, entweder A oder B oder C oder eine beliebige, nicht leere Teilmenge der Menge von A und B und C sein kann. So beziehen sich beispielsweise in dem anschaulichen Beispiel einer Menge mit drei Mitgliedern die konjunktiven Ausdrücke „mindestens eines von A, B, und C“ und „mindestens eines von A, B und C“ auf eine der folgenden Mengen: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Derartige konjunktivische Formulierungen sind also nicht generell so zu verstehen, dass bei bestimmten Ausführungsformen jeweils mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden sein muss. Sofern es nicht anders vermerkt oder durch den Kontext widerlegt ist, bezeichnet der Begriff „Mehrzahl“ bzw. „Vielzahl“ einen Zustand der Pluralität (z. B. „eine Mehrzahl von Gegenständen“ bezeichnet mehrere Gegenstände). Bei mindestens einer Ausführungsform beträgt die Anzahl der Gegenstände in einer Mehrzahl mindestens zwei, kann aber auch mehr sein, wenn dies entweder ausdrücklich oder durch den Kontext angegeben wird. Darüber hinaus bedeutet „basierend auf“, sofern nicht anders angegeben oder anderweitig aus dem Kontext klar, „zumindest teilweise basierend auf“ und nicht „ausschließlich basierend auf“.Subjunctival expressions, such as B. Sentences of the form “at least one of A, B, and C” or “at least one of A, B and C”, unless expressly stated otherwise or clearly contradicted by the context, are generally understood in the context to mean that a Element, a term, etc., can be either A or B or C or any non-empty subset of the set of A and B and C. For example, in the illustrative example of a set with three members, the conjunctive expressions “at least one of A, B, and C” and “at least one of A, B, and C” refer to one of the following sets: {A}, {B }, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Such conjunctival formulations are therefore not generally to be understood as meaning that in certain embodiments at least one of A, at least one of B and at least one of C must be present. Unless otherwise noted or contradicted by context, the term “plurality” or “multiplicity” refers to a state of plurality (e.g., “a plurality of items” refers to multiple items). In at least one embodiment, the number of items in a plurality is at least two, but may be more if indicated either explicitly or by the context. In addition, unless otherwise stated or otherwise clear from the context, “based on” means “based at least in part on” and not “based solely on.”

Die Operationen der hier beschriebenen Verfahren können in jeder geeigneten Reihenfolge durchgeführt werden, sofern dies hier nicht anders angegeben ist oder sich aus dem Kontext eindeutig ergibt. Bei mindestens einer Ausführungsform wird ein Verfahren, wie es hier beschrieben ist (oder Variationen und/oder Kombinationen davon), unter der Steuerung eines oder mehrerer Computersysteme durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind und als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen) implementiert sind, die gemeinsam auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt werden. Bei mindestens einer Ausführungsform ist der Code auf einem computerlesbaren Speichermedium gespeichert. Bei mindestens einer Ausführungsform in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die von einem oder mehreren Prozessoren ausgeführt werden können. Bei mindestens einer Ausführungsform handelt es sich bei einem computerlesbaren Speichermedium um ein nichtflüchtiges computerlesbares Speichermedium, das flüchtige Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, jedoch nichtflüchtige Datenspeicherschaltungen (z. B. Puffer, Cache und Warteschlangen) innerhalb der Transceiver von flüchtigen Signalen aufweist. Bei mindestens einer Ausführungsform ist Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichtflüchtigen, computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen (oder ein anderer Speicher zum Speichern ausführbarer Befehle) gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren eines Computersystems ausgeführt werden (d. h. als Ergebnis der Ausführung), das Computersystem veranlassen, die hier beschriebenen Operationen durchzuführen. Bei mindestens einer Ausführungsform umfasst ein Satz nicht-flüchtiger, computerlesbarer Speichermedien mehrere nicht-flüchtige, computerlesbare Speichermedien, wobei auf einem oder mehreren der einzelnen nicht-flüchtigen Speichermedien mehrerer nicht-flüchtiger, computerlesbarer Speichermedien der gesamte Code fehlt, während auf mehreren nicht-flüchtigen, computerlesbaren Speichermedien gemeinsam der gesamte Code gespeichert ist. Bei mindestens einer Ausführungsform werden ausführbare Anweisungen so ausgeführt, dass verschiedene Anweisungen von verschiedenen Prozessoren ausgeführt werden - bei mindestens einer Ausführungsform speichert ein nichtflüchtiges computerlesbares Speichermedium Anweisungen und eine Hauptzentraleinheit („CPU“) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. Bei mindestens einer Ausführungsform haben verschiedene Komponenten eines Computersystems separate Prozessoren, und verschiedene Prozessoren führen verschiedene Teilmengen von Anweisungen aus.The operations of the methods described herein may be performed in any appropriate order unless otherwise specified herein or as is clear from the context. In at least one embodiment, a method as described herein (or variations and/or combinations thereof) is performed under the control of one or more computer systems configured with executable instructions and as code (e.g., executable instructions). or multiple computer programs or one or more applications) that are executed together on one or more processors, by hardware, or combinations thereof. In at least one embodiment, the code is stored on a computer-readable storage medium. In at least one embodiment, in the form of a computer program that includes a plurality of instructions that can be executed by one or more processors. In at least one embodiment, a computer-readable storage medium is a non-transitory computer-readable storage medium that excludes volatile signals (e.g., propagating transient electrical or electromagnetic transmission) but excludes non-volatile data storage circuits (e.g., buffers, cache, and queues). within the transceiver of volatile signals. In at least one embodiment, code (e.g., executable code or source code) is stored on a set of one or more non-transitory, computer-readable storage media on which executables Instructions (or other memory for storing executable instructions) are stored that, when executed by one or more processors of a computer system (ie, as a result of execution), cause the computer system to perform the operations described herein. In at least one embodiment, a set of non-transitory computer-readable storage media includes a plurality of non-transitory computer-readable storage media, wherein one or more of the individual non-transitory storage media of a plurality of non-transitory computer-readable storage media is missing all of the code while a plurality of non-transitory storage media are missing all code The entire code is stored together on computer-readable storage media. In at least one embodiment, executable instructions are executed such that different instructions are executed by different processors - in at least one embodiment, a non-transitory computer-readable storage medium stores instructions and a main central processing unit ("CPU") executes some of the instructions while a graphics processing unit ("GPU") ) executes other instructions. In at least one embodiment, different components of a computer system have separate processors, and different processors execute different subsets of instructions.

Dementsprechend sind Computersysteme gemäß mindestens einer Ausführungsform so ausgestaltet, dass sie einen oder mehrere Dienste implementieren, die einzeln oder gemeinsam Operationen der hier beschriebenen Verfahren ausführen, und solche Computersysteme sind mit geeigneter Hardware ausgestaltet und/oder Software konfiguriert, die die Ausführung der Operationen ermöglichen. Darüber hinaus ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Einrichtung und in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Einrichtungen umfasst, die unterschiedlich arbeiten, so dass das verteilte Computersystem die hier beschriebenen Operationen durchführt und dass eine einzelne Einrichtung nicht alle Operationen durchführt.Accordingly, according to at least one embodiment, computer systems are designed to implement one or more services that individually or collectively perform operations of the methods described herein, and such computer systems are designed with appropriate hardware and/or software that enable the operations to be performed. Furthermore, a computer system that implements at least one embodiment of the present disclosure is a single device, and in another embodiment, a distributed computer system that includes multiple devices that operate differently such that the distributed computer system performs the operations described herein and that a single one Facility does not perform all operations.

Die Verwendung von Beispielen oder beispielhafter Sprache (z.B. „wie z.B.“) dient lediglich der besseren Veranschaulichung von Ausführungsformen der Offenbarung und stellt keine Einschränkung des Umfangs der Offenbarung dar, sofern kein anderer Anspruch erhoben wird. Keine Formulierung in der Spezifikation sollte so ausgelegt werden, dass ein nicht beanspruchtes Element als wesentlich für die Praxis der Offenbarung angesehen wird.The use of examples or exemplary language (e.g., “such as.”) is intended solely to better illustrate embodiments of the disclosure and does not constitute a limitation on the scope of the disclosure, unless otherwise claimed. No language in the specification should be construed to deem any unclaimed element essential to the practice of the disclosure.

Alle Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, die hierin zitiert werden, werden hiermit durch Inbezugnahme in demselben Ausmaß einbezogen, als ob jede Referenz einzeln und ausdrücklich als durch Inbezugnahme einbezogen angegeben wäre und hier in ihrer Gesamtheit wiedergegeben würde.All references, including publications, patent applications and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and expressly stated to be incorporated by reference and reproduced herein in their entirety.

In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ sowie deren Ableitungen verwendet werden. Es ist klar, dass diese Begriffe nicht als Synonyme füreinander zu verstehen sind. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt zueinanderstehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinanderstehen, aber dennoch zusammenarbeiten oder miteinander interagieren.The terms “coupled” and “connected” and their derivatives may be used in the description and claims. It is clear that these terms are not to be understood as synonyms for each other. Rather, in certain examples, “connected” or “coupled” may be used to indicate that two or more elements are in direct or indirect physical or electrical contact with one another. “Coupled” can also mean that two or more elements are not in direct contact with each other, but still work together or interact with each other.

Sofern nicht ausdrücklich etwas anderes angegeben ist, beziehen sich Begriffe wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Spezifikation auf Aktionen und/oder Verfahren bzw. Prozesse eines Computers oder eines Rechensystems oder einer ähnlichen elektronischen Recheneinrichtung, die Daten, die als physikalische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt werden, manipulieren und/oder in andere Daten umwandeln, die in ähnlicher Weise als physikalische Größen in den Speichern, Registern oder anderen derartigen Einrichtungen zur Speicherung, Übertragung oder Anzeige von Informationen des Rechensystems dargestellt werden.Unless expressly stated otherwise, terms such as “processing”, “computing”, “computing”, “determining” or the like throughout the specification refer to actions and/or procedures of a computer or a computing system or similar electronic computing device, the data that is physical, e.g. B. electronic, quantities are represented in the registers and / or memories of the computing system, manipulate and / or convert them into other data, which are similarly represented as physical quantities in the memories, registers or other such devices for storing, transmitting or displaying information of the computing system can be displayed.

In ähnlicher Weise kann sich der Begriff „Prozessor“ auf eine Einrichtung oder einen Teil einer Einrichtung beziehen, die elektronische Daten aus Registern und/oder Speichern verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speichern gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Datenverarbeitungsplattform“ kann einen oder mehrere Prozessoren umfassen. Der Begriff „Software“-Prozesse bzw. „Software“-Verfahren kann bei mindestens einer Ausführungsform Software- und/oder Hardware-Einheiten einschließen, die im Laufe der Zeit Arbeit verrichten, wie z. B. Tasks, Threads und intelligente Agenten. Jedes Verfahren kann sich auch auf mehrere Verfahren beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. Die Begriffe „System“ und „Verfahren“ werden hier austauschbar verwendet, insofern ein System ein oder mehrere Verfahren umfassen kann und Verfahren als System betrachtet werden können.Similarly, the term “processor” may refer to a device or part of a device that processes electronic data from registers and/or memories and converts that electronic data into other electronic data that can be stored in registers and/or memories . As non-limiting examples, the “processor” may be a CPU or a GPU. A “computing platform” may include one or more processors. The term “software” processes or “software” methods may, in at least one embodiment, include software and/or hardware entities that perform work over time, such as: B. Tasks, threads and intelligent agents. Each method may also refer to multiple methods to execute instructions sequentially or in parallel, continuously or intermittently. The terms “system” and “procedure” are used interchangeably herein in that a system may include one or more procedures and procedures can be considered a system.

Bei mindestens einer Ausführungsform ist eine arithmetische Logikeinheit ein Satz kombinatorischer Logikschaltungen, der eine oder mehrere Eingaben verarbeitet, um ein Ergebnis zu erzeugen. Bei mindestens einer Ausführungsform wird eine arithmetische Logikeinheit von einem Prozessor verwendet, um mathematische Operationen wie Addition, Subtraktion oder Multiplikation durchzuführen. Bei mindestens einer Ausführungsform wird eine arithmetische Logikeinheit verwendet, um logische Operationen wie logisches UND/ODER oder XOR zu implementieren. Bei mindestens einer Ausführungsform ist eine arithmetische Logikeinheit zustandslos und besteht aus physikalischen Schaltkomponenten wie Halbleitertransistoren, die zur Bildung logischer Gatter angeordnet sind. Bei mindestens einer Ausführungsform kann eine arithmetische Logikeinheit intern als zustandsabhängige logische Schaltung mit einem zugehörigen Taktgeber arbeiten. Bei mindestens einer Ausführungsform kann eine arithmetische Logikeinheit als asynchrone logische Schaltung aufgebaut sein, deren interner Zustand nicht in einem zugehörigen Registersatz gehalten wird. Bei mindestens einer Ausführungsform wird eine arithmetische Logikeinheit von einem Prozessor verwendet, um in einem oder mehreren Registern des Prozessors gespeicherte Operanden zu kombinieren und eine Ausgabe zu erzeugen, die von dem Prozessor in einem anderen Register oder einem Speicherplatz gespeichert werden kann.In at least one embodiment, an arithmetic logic unit is a set of combinational logic circuits that processes one or more inputs to produce a result. In at least one embodiment, an arithmetic logic unit is used by a processor to perform mathematical operations such as addition, subtraction, or multiplication. In at least one embodiment, an arithmetic logic unit is used to implement logical operations such as logical AND/OR or XOR. In at least one embodiment, an arithmetic logic unit is stateless and consists of physical switching components such as semiconductor transistors arranged to form logic gates. In at least one embodiment, an arithmetic logic unit may operate internally as a state-dependent logic circuit with an associated clock. In at least one embodiment, an arithmetic logic unit may be constructed as an asynchronous logic circuit whose internal state is not held in an associated register set. In at least one embodiment, an arithmetic logic unit is used by a processor to combine operands stored in one or more registers of the processor and produce an output that can be stored by the processor in another register or a memory location.

Bei mindestens einer Ausführungsform übergibt der Prozessor als Ergebnis der Verarbeitung einer von dem Prozessor abgerufenen Anweisung eine oder mehrere Eingaben oder Operanden an eine arithmetische Logikeinheit, wodurch die arithmetische Logikeinheit veranlasst wird, ein Ergebnis zu erzeugen, das zumindest teilweise auf einem Anweisungscode bzw. Befehlscode basiert, der den Eingängen der arithmetischen Logikeinheit bereitgestellt wird. Bei mindestens einer Ausführungsform basieren die von dem Prozessor an die ALU gelieferten Befehlscodes zumindest teilweise auf einer von dem Prozessor ausgeführten Anweisung. Bei mindestens einer Ausführungsform verarbeitet die kombinatorische Logik in der ALU die Eingaben und erzeugt eine Ausgabe, die auf einen Bus innerhalb des Prozessors gelegt wird. Bei mindestens einer Ausführungsform wählt der Prozessor ein Zielregister, einen Speicherplatz, eine Ausgabeeinrichtung oder einen Ausgabespeicherplatz auf dem Ausgangsbus aus, so dass die Taktung des Prozessors bewirkt, dass die von der ALU erzeugten Ergebnisse an den gewünschten Ort gesendet werden.In at least one embodiment, as a result of processing an instruction fetched by the processor, the processor passes one or more inputs or operands to an arithmetic logic unit, causing the arithmetic logic unit to produce a result based at least in part on an instruction code , which is provided to the inputs of the arithmetic logic unit. In at least one embodiment, the instruction codes provided by the processor to the ALU are based at least in part on an instruction executed by the processor. In at least one embodiment, the combinational logic in the ALU processes the inputs and produces an output that is placed on a bus within the processor. In at least one embodiment, the processor selects a destination register, a memory location, an output device, or an output storage location on the output bus such that the clocking of the processor causes the results produced by the ALU to be sent to the desired location.

Im vorliegenden Dokument kann auf das Erhalten, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Subsystem, Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. Bei mindestens einer Ausführungsform kann das Verfahren des Erhaltens, Erfassens, Empfangens oder Eingebens analoger und digitaler Daten auf verschiedene Weise erfolgen, z. B. durch Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs an eine Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann das Verfahren des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch die Übertragung von Daten über eine serielle oder parallele Schnittstelle durchgeführt werden. In einer anderen Implementierung kann das Verfahren des Erhaltens, Erfassens, Empfangens oder Eingebens analoger oder digitaler Daten durch die Übertragung von Daten über ein Computernetzwerk von der bereitstellenden Einheit zur erfassenden Einheit durchgeführt werden. Es kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Präsentieren analoger oder digitaler Daten Bezug genommen werden. In verschiedenen Beispielen kann das Verfahren des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens analoger oder digitaler Daten durch die Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus durchgeführt werden.This document may refer to obtaining, acquiring, receiving or inputting analog or digital data into a subsystem, computer system or computer-implemented machine. In at least one embodiment, the method of obtaining, acquiring, receiving, or inputting analog and digital data may be accomplished in various ways, e.g. B. by receiving data as a parameter of a function call or a call to an application programming interface. In some implementations, the method of obtaining, acquiring, receiving, or inputting analog or digital data may be performed by transmitting data over a serial or parallel interface. In another implementation, the method of obtaining, capturing, receiving or inputting analog or digital data may be performed by transmitting data over a computer network from the providing entity to the acquiring entity. It may also refer to providing, outputting, transmitting, sending or presenting analog or digital data. In various examples, the method of providing, outputting, transmitting, sending, or displaying analog or digital data may be performed by transmitting data as an input or output parameter of a function call, an application programming interface parameter, or an interprocess communication mechanism.

Obwohl die obige Diskussion beispielhafte Implementierungen der beschriebenen Verfahren darlegt, können andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und diese sollen auch in den Anwendungsbereich dieser Offenbarung fallen. Darüber hinaus können, obwohl spezifische Verteilungen von Verantwortlichkeiten oben zu Diskussionszwecken definiert sind, verschiedene Funktionen und Verantwortlichkeiten auf unterschiedliche Weise verteilt und aufgeteilt werden, abhängig von den Umständen.Although the above discussion sets forth example implementations of the described methods, other architectures may be used to implement the described functionality and are also intended to be within the scope of this disclosure. In addition, although specific distributions of responsibilities are defined above for discussion purposes, different functions and responsibilities may be distributed and divided in different ways depending on the circumstances.

Obwohl der Gegenstand in einer Sprache beschrieben wurde, die sich auf strukturelle Merkmale und/oder verfahrensspezifische Handlungen bezieht, ist zu verstehen, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht notwendigerweise auf die beschriebenen spezifischen Merkmale oder Aktionen bzw. Operationen beschränkt ist. Vielmehr sind bestimmte Merkmale und Aktionen als beispielhafte Formen der Umsetzung der Ansprüche offenbart.Although the subject matter has been described in language referring to structural features and/or method-specific actions, it is to be understood that the subject matter claimed in the appended claims is not necessarily limited to the specific features or actions or operations described. Rather, certain features and actions are disclosed as exemplary forms of implementing the claims.

Der Gegenstand der vorliegenden Offenbarung wird hier so genau beschrieben, dass er den gesetzlichen Anforderungen entspricht. Die Beschreibung selbst soll jedoch den Umfang dieser Offenbarung nicht einschränken. Vielmehr haben die Erfinder in Betracht gezogen, dass der beanspruchte Gegenstand auch in anderen Ausführungsformen ausgestaltet werden kann, die andere Schritte oder Kombinationen von Schritten aufweisen, die den in diesem Dokument beschriebenen ähnlich sind, und zwar in Verbindung mit anderen gegenwärtigen oder zukünftigen Technologien. Obwohl die Begriffe „Schritt“ und/oder „Block“ hier verwendet werden können, um verschiedene Elemente der angewandten Verfahren zu bezeichnen, sollten die Begriffe nicht so ausgelegt werden, dass sie eine bestimmte Reihenfolge unter oder zwischen den verschiedenen hier offenbarten Schritten implizieren, es sei denn, die Reihenfolge der einzelnen Schritte wird ausdrücklich beschrieben.The subject matter of the present disclosure is described here in sufficient detail to meet legal requirements. However, the description itself is not intended to limit the scope of this disclosure. Rather, the inventors have considered that the claimed subject matter also exists in other embodiments may be designed to include other steps or combinations of steps similar to those described in this document in conjunction with other current or future technologies. Although the terms "step" and/or "block" may be used herein to refer to various elements of the methods employed, the terms should not be construed to imply any particular order among or between the various steps disclosed herein unless the sequence of the individual steps is expressly described.

Andere Variationen sind im Sinne der vorliegenden Offenbarung. Während die offengelegten Verfahren für verschiedene Modifikationen und alternative Konstruktionen anfällig sind, sind bestimmte dargestellte Ausführungsformen davon in den Zeichnungen gezeigt und oben im Detail beschrieben worden. Es sollte jedoch klar sein, dass nicht beabsichtigt ist, die Offenbarung auf eine bestimmte Form oder bestimmte Formen zu beschränken, sondern dass im Gegenteil beabsichtigt ist, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und den Umfang der Offenbarung fallen, wie es in den beigefügten Ansprüchen definiert ist.Other variations are within the meaning of the present disclosure. While the methods disclosed are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof have been shown in the drawings and described in detail above. It should be understood, however, that the disclosure is not intended to be limited to any particular form or forms, but on the contrary is intended to cover all modifications, alternative constructions and equivalents that fall within the spirit and scope of the disclosure. as defined in the appended claims.

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of documents listed by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • US 17/477214 [0001]US 17/477214 [0001]
  • US 16101232 [0194]US 16101232 [0194]

Claims (32)

Integrierte Schaltung, umfassend: einen ersten Takt; einen zweiten Takt, der von dem ersten Takt isoliert ist; einen ersten Stromanschluss; einen zweiten Stromanschluss, der von dem ersten Stromanschluss isoliert ist; einen ersten Abschnitt, um Strom mittels des ersten Stromanschlusses und ein erstes Taktsignal mittels des ersten Takts zu empfangen; und einen zweiten Abschnitt, um Strom mittels des zweiten Stromanschlusses und ein zweites Taktsignal mittels des zweiten Takts zu empfangen, wobei der zweite Abschnitt eine Schnittstelle zur Kommunikation mit dem ersten Abschnitt, eine Schnittstellensteuerung und einen Prozessor zum Sperren und Entsperren der Schnittstellensteuerung umfasst, wobei die Schnittstellensteuerung eine Kommunikation über die Schnittstelle verhindert, wenn die Schnittstellensteuerung gesperrt ist, und wobei die Schnittstellensteuerung eine Kommunikation über die Schnittstelle zulässt, wenn die Schnittstellensteuerung entsperrt ist.Integrated circuit comprising: a first bar; a second clock isolated from the first clock; a first power connection; a second power terminal isolated from the first power terminal; a first section for receiving power via the first power terminal and a first clock signal via the first clock; and a second section for receiving power via the second power terminal and a second clock signal via the second clock, the second section comprising an interface for communicating with the first section, an interface controller and a processor for locking and unlocking the interface controller, the interface controller preventing communication over the interface when the interface control is locked, and wherein the interface control allows communication over the interface when the interface control is unlocked. Integrierte Schaltung nach Anspruch 1, wobei der erste Abschnitt einen ersten Fehleraggregator umfasst, um an den zweiten Abschnitt Hinweise zu übermitteln, die einem oder mehreren Fehlern entsprechen, die in dem ersten Abschnitt auftreten, wobei der zweite Abschnitt einen zweiten Fehleraggregator umfasst, um die dem einen oder den mehreren Fehlern entsprechenden Hinweise zu empfangen und zu speichern, wobei die integrierte Schaltung eine Fehlerschnittstelle umfasst, die den ersten und den zweiten Fehleraggregator verbindet, wobei die Fehlerschnittstelle von der Schnittstelle getrennt ist, und wobei der Prozessor die Schnittstellensteuerung nur dann entsperrt, wenn der zweite Fehleraggregator keine Hinweise speichert, die irgendwelchen Fehlern entsprechen.Integrated circuit according to Claim 1 , wherein the first section comprises a first error aggregator for communicating to the second section indications corresponding to one or more errors occurring in the first section, the second section comprising a second error aggregator for communicating the one or more errors to receive and store corresponding notices, wherein the integrated circuit includes a fault interface connecting the first and second fault aggregators, the fault interface being separate from the interface, and wherein the processor unlocks the interface control only when the second fault aggregator does not provide notices stores that correspond to any errors. Integrierte Schaltung nach Anspruch 1, wobei der zweite Abschnitt einen Timer umfasst, der startet, wenn der Prozessor eine Kommunikation mit dem ersten Abschnitt über die Schnittstelle einleitet, und wobei der Timer einen Hinweis auf einen Fehler erzeugt, wenn der Timer anzeigt, dass mehr als eine vorbestimmte Zeitspanne verstrichen ist und der erste Abschnitt nicht auf die Kommunikation geantwortet hat.Integrated circuit according to Claim 1 , wherein the second section includes a timer that starts when the processor initiates communication with the first section via the interface, and wherein the timer generates an indication of an error when the timer indicates that more than a predetermined amount of time has elapsed and the first section did not respond to communications. Integrierte Schaltung nach Anspruch 3, wobei der Timer zurückgesetzt wird, wenn der erste Abschnitt auf die Kommunikation antwortet, bevor der Timer anzeigt, dass mehr als die vorgegebene Zeitspanne verstrichen ist, und wobei der Prozessor die Schnittstelle sperrt, nachdem der Prozessor die Kommunikation mit dem ersten Abschnitt beendet hat.Integrated circuit according to Claim 3 , wherein the timer is reset if the first section responds to the communication before the timer indicates that more than the predetermined amount of time has elapsed, and wherein the processor locks the interface after the processor completes communication with the first section. Integrierte Schaltung nach Anspruch 1, die darüber hinaus umfasst: einen nichtflüchtigen Speicher, der von dem ersten und dem zweiten Abschnitt gemeinsam genutzt wird, wobei der zweite Abschnitt einen lokalen Speicher umfasst, wobei der Prozessor Anweisungen von dem nichtflüchtigen Speicher in den lokalen Speicher kopiert, wenn die integrierte Schaltung bootet, wobei die Anweisungen von dem Prozessor auszuführen sind, wenn die Schnittstelle gesperrt ist.Integrated circuit according to Claim 1 , further comprising: a non-volatile memory shared by the first and second sections, the second section comprising local memory, the processor copying instructions from the non-volatile memory to the local memory when the integrated circuit boots , where the instructions are to be executed by the processor when the interface is blocked. Integrierte Schaltung nach Anspruch 1, wobei der erste Abschnitt einen flüchtigen Speicher umfasst, und wobei der zweite Abschnitt mit dem flüchtigen Speicher über die Schnittstelle kommuniziert.Integrated circuit according to Claim 1 , wherein the first section comprises a volatile memory, and wherein the second section communicates with the volatile memory via the interface. Integrierte Schaltung nach Anspruch 1, die sich auf einem zusammenhängenden Stück Halbleitermaterial befindet.Integrated circuit according to Claim 1 , which is located on a continuous piece of semiconductor material. Integrierte Schaltung nach Anspruch 1, die einen Abschnitt eines System on a Chip, „SoC“, für Fahrzeuge implementiert.Integrated circuit according to Claim 1 , which implements a section of a System on a Chip, “SoC,” for vehicles. Integrierte Schaltung nach Anspruch 1, wobei der erste Abschnitt auf einer ersten Risikoklassifizierungsstufe arbeitet, wobei der zweite Abschnitt auf einer zweiten Risikoklassifizierungsstufe arbeitet, und wobei die zweite Risikoklassifizierungsstufe höher ist als die erste Risikoklassifizierungsstufe.Integrated circuit according to Claim 1 , wherein the first section operates at a first risk classification level, the second section operates at a second risk classification level, and wherein the second risk classification level is higher than the first risk classification level. Verfahren umfassend: Bestimmen, durch einen ersten Abschnitt einer integrierten Schaltung, ob ein Fehleraggregator in dem ersten Abschnitt Daten enthält, die auf mindestens eine vorbestimmte Anzahl von Fehlern hinweisen; Entsperren einer Schnittstelle mit einem zweiten Abschnitt der integrierten Schaltung durch den ersten Abschnitt, wenn der erste Abschnitt feststellt, dass der Fehleraggregator keine Daten enthält, die auf zumindest die vorbestimmte Anzahl von Fehlern hinweisen; Einleiten eines Zugriffs auf den zweiten Abschnitt durch den ersten Abschnitt über die entsperrte Schnittstelle; und Sperren der Schnittstelle durch den ersten Abschnitt, nachdem der Zugriff eingeleitet wurde.Procedure comprising: determining, by a first section of an integrated circuit, whether a fault aggregator in the first section contains data indicative of at least a predetermined number of faults; unlocking an interface with a second portion of the integrated circuit by the first portion when the first portion determines that the error aggregator does not contain data indicative of at least the predetermined number of errors; Initiating access to the second section by the first section via the unlocked interface; and Locking the interface through the first section after access is initiated. Verfahren nach Anspruch 10, wobei das Einleiten des Zugriffs einen Zugriffs-Timer startet, und wobei der erste Abschnitt die Schnittstelle sperrt, nachdem ein Erfassen des Zugriffs-Timers anzeigt, dass mehr als eine vorbestimmte Zeitspanne seit dem Start des Zugriffs-Timers verstrichen ist und eine Antwort von dem zweiten Abschnitt nicht empfangen worden ist.Procedure according to Claim 10 , where initiating access starts an access timer, and wherein the first section locks the interface after detecting the access timer indicates that more than a predetermined period of time has elapsed since the start of the access timer and a response from the second section has not been received. Verfahren nach Anspruch 11, wobei der erste Abschnitt einen neuen Fehler erzeugt, nachdem ein Erfassen des Zugriffs-Timers anzeigt, dass mehr als eine vorbestimmte Zeitspanne seit dem Start des Zugriffs-Timers verstrichen ist und eine Antwort von dem zweiten Abschnitt nicht empfangen worden ist.Procedure according to Claim 11 , wherein the first section generates a new error after detecting the access timer indicates that more than a predetermined period of time has elapsed since the start of the access timer and a response from the second section has not been received. Verfahren nach Anspruch 10, wobei das Einleiten des Zugriffs einen Zugriffs-Timer startet und das Verfahren darüber hinaus umfasst: Empfangen einer Antwort von dem zweiten Abschnitt durch den ersten Abschnitt, bevor der Zugriffs-Timer anzeigt, dass mehr als eine vorbestimmte Zeitspanne seit dem Start des Zugriffs-Timers verstrichen ist, wobei das Empfangen der Antwort den Zugriffs-Timer stoppt, wobei der erste Abschnitt die Schnittstelle nach Beendigung des Zugriffs sperrt.Procedure according to Claim 10 , wherein initiating access starts an access timer and the method further comprises: receiving a response from the second section by the first section before the access timer indicates that more than a predetermined amount of time has passed since the start of the access timer has elapsed, receiving the response stops the access timer, the first section locking the interface upon completion of the access. Verfahren nach Anspruch 10, das darüber hinaus umfasst: Durchführen einer oder mehrerer Korrekturmaßnahmen durch den ersten Abschnitt, wenn der erste Abschnitt feststellt, dass der Fehleraggregator Daten enthält, die auf zumindest die vorbestimmte Anzahl von Fehlern hinweisen.Procedure according to Claim 10 , further comprising: performing one or more corrective actions by the first section when the first section determines that the error aggregator contains data indicative of at least the predetermined number of errors. Verfahren nach Anspruch 14, wobei die integrierte Schaltung einen Abschnitt eines System on a Chip, „SoC“, für Fahrzeuge implementiert, und wobei die eine oder die mehreren Korrekturmaßnahmen ausgestaltet sind, um ein autonomes Fahrzeug in einen sicheren Zustand zu versetzen.Procedure according to Claim 14 , wherein the integrated circuit implements a portion of a system on a chip, “SoC,” for vehicles, and wherein the one or more corrective actions are designed to place an autonomous vehicle in a safe state. Verfahren nach Anspruch 10, wobei die integrierte Schaltung einen Abschnitt eines System on a Chip, „SoC“, für Fahrzeuge implementiert, wobei der erste Abschnitt Sicherheitsfunktionen für ein autonomes Fahrzeug durchführt, während das autonome Fahrzeug fährt, und wobei der zweite Abschnitt autonome Fahrfunktionen während des Fahrens des autonomen Fahrzeugs ausführt.Procedure according to Claim 10 , wherein the integrated circuit implements a portion of a system on a chip, “SoC,” for vehicles, wherein the first portion performs safety functions for an autonomous vehicle while the autonomous vehicle is driving, and wherein the second portion performs autonomous driving functions while driving the autonomous vehicle vehicle executes. Verfahren nach Anspruch 10, wobei die Schnittstelle den ersten Abschnitt mit einem flüchtigen Speicher oder einem Steuer-Backbone des zweiten Abschnitts verbindet.Procedure according to Claim 10 , wherein the interface connects the first section to a volatile memory or a control backbone of the second section. Verfahren nach Anspruch 10, wobei der erste Abschnitt in einem ersten Taktbereich arbeitet, wobei der zweite Abschnitt in einem zweiten Taktbereich arbeitet, der sich von dem ersten Taktbereich unterscheidet, und wobei die Schnittstelle eine Phasensynchronisationsschaltung umfasst, die ein von dem zweiten Abschnitt empfangenes Signal in den ersten Taktbereich konvertiert.Procedure according to Claim 10 , wherein the first section operates in a first clock range, the second section operates in a second clock range that is different from the first clock range, and wherein the interface comprises a phase synchronization circuit that converts a signal received from the second section into the first clock range . Integrierte Schaltung, umfassend: einen ersten Abschnitt, der mit einer ersten Risikostufe innerhalb eines ersten Bereichs arbeitet; und einen zweiten Abschnitt, der mit einer zweiten Risikostufe innerhalb eines zweiten Bereichs arbeitet, wobei die zweite Risikostufe größer als die erste Risikostufe ist, wobei der zweite Abschnitt einen Prozessor und eine Schnittstelle, die den ersten und den zweiten Abschnitt verbindet, umfasst, wobei der Prozessor die Schnittstelle selektiv sperrt, um eine Kommunikation über die Schnittstelle zu verhindern, wobei der Prozessor die Schnittstelle selektiv entsperrt, um eine Kommunikation über die Schnittstelle zu ermöglichen.Integrated circuit comprising: a first section operating at a first level of risk within a first range; and a second section that operates with a second risk level within a second range, the second risk level being greater than the first risk level, wherein the second section includes a processor and an interface connecting the first and second sections, the processor selectively disabling the interface to prevent communication via the interface, the processor selectively unlocking the interface to enable communication via to enable the interface. Integrierte Schaltung nach Anspruch 19, die darüber hinaus umfasst: einen ersten Stromanschluss, der den ersten Bereich mit Strom versorgt; und einen zweiten Stromanschluss, der von dem ersten Stromanschluss elektrisch isoliert ist und den zweiten Bereich mit Strom versorgt, wobei die Schnittstelle mindestens einen Spannungsschieber zum Einstellen einer Spannung für jegliche Kommunikation über die Schnittstelle umfasst.Integrated circuit according to Claim 19 , further comprising: a first power connector that supplies power to the first area; and a second power port that is electrically isolated from the first power port and supplies power to the second region, the interface comprising at least one voltage shifter for setting a voltage for any communication via the interface. Integrierte Schaltung nach Anspruch 19, die darüber hinaus umfasst: einen ersten Takt, der den ersten Bereich mit einem ersten Taktsignal versorgt; und einen zweiten Takt, der von dem ersten Takt isoliert ist und den zweiten Bereich mit einem zweiten Taktsignal versorgt, wobei die Schnittstelle eine Phasensynchronisationsschaltung zum Einstellen einer Phase jeglicher Kommunikation über die Schnittstelle umfasst.Integrated circuit according to Claim 19 , which further comprises: a first clock that supplies the first area with a first clock signal; and a second clock isolated from the first clock and providing the second region with a second clock signal, the interface comprising a phase synchronization circuit for adjusting a phase of any communication over the interface. Integrierte Schaltung nach Anspruch 19, wobei die Schnittstelle eine Firewall umfasst, die eine oder mehrere Sicherheitsregeln implementiert, und wobei die Firewall eine Kommunikation über die Schnittstelle auf der Grundlage der einen oder der mehreren Sicherheitsregeln erlaubt oder blockiert.Integrated circuit according to Claim 19 , wherein the interface includes a firewall that implements one or more security rules, and wherein the firewall allows or blocks communication over the interface based on the one or more security rules. Integrierte Schaltung nach Anspruch 19, wobei der erste Abschnitt einen ersten Fehleraggregator umfasst, um Daten, die einen in dem ersten Abschnitt auftretenden Fehler anzeigen, an den zweiten Abschnitt zu übermitteln, wobei der zweite Abschnitt einen zweiten Fehleraggregator umfasst, um die den Fehler anzeigende Daten zu empfangen und die den Fehler anzeigende Daten zu speichern, bis der Fehler durch den Prozessor gelöscht wird, wobei die integrierte Schaltung eine Fehlerschnittstelle umfasst, die den ersten und den zweiten Fehleraggregator verbindet, wobei die Fehlerschnittstelle von der Schnittstelle getrennt ist, und wobei der Prozessor die Schnittstelle erst dann entsperrt, wenn Fehler, die den Daten entsprechen, die auf irgendwelche von dem zweiten Fehleraggregator gespeicherten Fehler hinweisen, von dem Prozessor gelöscht worden sind.Integrated circuit according to Claim 19 , wherein the first section comprises a first error aggregator for transmitting data indicative of an error occurring in the first section to the second section, the second section comprising a second error aggregator for communicating the error indicating the error Receive data and store the data indicating the error until the error is cleared by the processor, the integrated circuit comprising an error interface connecting the first and second error aggregators, the error interface being separate from the interface, and wherein the Processor unlocks the interface only when errors corresponding to data indicative of any errors stored by the second error aggregator have been cleared by the processor. Integrierte Schaltung nach Anspruch 19, wobei der zweite Abschnitt einen Timer umfasst, der startet, wenn der Prozessor die Schnittstelle entsperrt, und wobei der Timer einen neuen Fehler erzeugt, wenn der Timer anzeigt, dass mehr als eine vorbestimmte Zeitspanne verstrichen ist und der erste Abschnitt nicht auf eine an den ersten Abschnitt über die Schnittstelle gesendete Kommunikation geantwortet hat.Integrated circuit according to Claim 19 , wherein the second section includes a timer that starts when the processor unlocks the interface, and wherein the timer generates a new error if the timer indicates that more than a predetermined period of time has elapsed and the first section does not respond to a first section of communication sent over the interface. Integrierte Schaltung nach Anspruch 24, wobei der Timer zurückgesetzt wird, wenn der erste Abschnitt auf die Kommunikation antwortet, bevor der Timer anzeigt, dass mehr als die vorbestimmte Zeitspanne verstrichen ist, und wobei der Prozessor die Schnittstelle sperrt, nachdem der Prozessor die Kommunikation mit dem ersten Abschnitt beendet hat.Integrated circuit according to Claim 24 , wherein the timer is reset if the first section responds to the communication before the timer indicates that more than the predetermined amount of time has elapsed, and wherein the processor locks the interface after the processor completes communication with the first section. Integrierte Schaltung nach Anspruch 19, wobei der erste Abschnitt einen nichtflüchtigen Speicher umfasst, der von dem ersten und dem zweiten Abschnitt gemeinsam genutzt wird, wobei der zweite Abschnitt einen lokalen Speicher umfasst, wobei der Prozessor Anweisungen von dem nichtflüchtigen Speicher in den lokalen Speicher kopiert, wenn die integrierte Schaltung bootet, und wobei die Anweisungen von dem Prozessor ausgeführt werden, wenn die Schnittstelle gesperrt ist.Integrated circuit according to Claim 19 , wherein the first section comprises a non-volatile memory shared by the first and second sections, the second section comprising local memory, the processor copying instructions from the non-volatile memory to the local memory when the integrated circuit boots , and wherein the instructions are executed by the processor when the interface is locked. Integrierte Schaltung nach Anspruch 19, wobei der erste Abschnitt einen flüchtigen Speicher umfasst, und wobei der zweite Abschnitt mit dem flüchtigen Speicher über die Schnittstelle kommuniziert.Integrated circuit according to Claim 19 , wherein the first section comprises a volatile memory, and wherein the second section communicates with the volatile memory via the interface. Integrierte Schaltung nach Anspruch 19, wobei der erste Abschnitt ein Steuer-Backbone umfasst, wobei die Schnittstelle mit dem Steuer-Backbone verbunden ist, und wobei der zweite Abschnitt mit mindestens einem Teil des ersten Abschnitts über die Schnittstelle und das Steuer-Backbone kommuniziert.Integrated circuit according to Claim 19 , wherein the first section comprises a control backbone, the interface being connected to the control backbone, and wherein the second section communicates with at least a portion of the first section via the interface and the control backbone. Integrierte Schaltung nach Anspruch 19, die sich auf einem zusammenhängenden Stück Halbleitermaterial befindet.Integrated circuit according to Claim 19 , which is located on a continuous piece of semiconductor material. Integrierte Schaltung nach Anspruch 19, die einen Abschnitt eines System on a Chip, „SoC“, für Kraftfahrzeuge implementiert.Integrated circuit according to Claim 19 , which implements a portion of a system on a chip, “SoC,” for automobiles. Integrierte Schaltung nach Anspruch 19, wobei der zweite Abschnitt eine Vielzahl von Schnittstellen umfasst, die die Schnittstelle umfassen, wobei jede der Vielzahl von Schnittstellen den zweiten Abschnitt mit einem entsprechenden Teil des ersten Abschnitts verbindet, wobei der Prozessor selektiv eine bestimmte der Vielzahl von Schnittstellen entsperrt, um eine Kommunikation über die bestimmte Schnittstelle mit dem entsprechenden Teil des ersten Abschnitts zu ermöglichen.Integrated circuit according to Claim 19 , wherein the second section includes a plurality of interfaces comprising the interface, each of the plurality of interfaces connecting the second section to a corresponding part of the first section, the processor selectively unlocking a particular one of the plurality of interfaces to communicate via to enable the specific interface with the corresponding part of the first section. Integrierte Schaltung nach Anspruch 31, wobei der Prozessor selektiv eine beliebige der Vielzahl von Schnittstellen, die entsperrt ist, sperrt, um eine Kommunikation über die Vielzahl von Schnittstellen mit dem ersten Abschnitt zu verhindern.Integrated circuit according to Claim 31 , wherein the processor selectively disables any one of the plurality of interfaces that is unlocked to prevent communication via the plurality of interfaces with the first section.
DE112022001192.0T 2021-07-30 2022-07-26 Isolating an area of a system on a chip for safety-critical operations Pending DE112022001192T5 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN202111034492 2021-07-30
IN202111034492 2021-07-30
US17/477,214 2021-09-16
US17/477,214 US11803668B2 (en) 2021-07-30 2021-09-16 Isolating a region of a system on a chip for safety critical operations
PCT/US2022/038404 WO2023009559A1 (en) 2021-07-30 2022-07-26 Isolating a region of a system on a chip for safety critical operations

Publications (1)

Publication Number Publication Date
DE112022001192T5 true DE112022001192T5 (en) 2023-12-21

Family

ID=83192064

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022001192.0T Pending DE112022001192T5 (en) 2021-07-30 2022-07-26 Isolating an area of a system on a chip for safety-critical operations

Country Status (3)

Country Link
CN (1) CN116075810A (en)
DE (1) DE112022001192T5 (en)
WO (1) WO2023009559A1 (en)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3612425B1 (en) * 2017-04-17 2023-01-04 Mobileye Vision Technologies Ltd. Secure system that includes driving related systems
WO2019094843A1 (en) * 2017-11-10 2019-05-16 Nvidia Corporation Systems and methods for safe and reliable autonomous vehicles
KR102504660B1 (en) * 2018-02-05 2023-03-02 삼성전자주식회사 Application processor, automotive electronic processor, and computing device including application processor
US11774487B2 (en) * 2020-01-02 2023-10-03 Texas Instruments Incorporated Electrical and logic isolation for systems on a chip

Also Published As

Publication number Publication date
CN116075810A (en) 2023-05-05
WO2023009559A1 (en) 2023-02-02

Similar Documents

Publication Publication Date Title
DE112020002126T5 (en) DETECTION OF CROSSING POSES IN AUTONOMOUS MACHINE APPLICATIONS
DE112020002602T5 (en) MULTI-OBJECT TRACKING USING CORRELATION FILTERS IN VIDEO ANALYSIS APPLICATIONS
DE112020003043T5 (en) DETECTION AND CLASSIFICATION OF CROSSROADS REGIONS FOR AUTONOMOUS MACHINE APPLICATIONS
DE112021000135T5 (en) SENSOR FUSION FOR AUTONOMOUS MACHINE APPLICATIONS THROUGH MACHINE LEARNING
DE112020006410T5 (en) THREE-DIMENSIONAL INTERSECTION STRUCTURE PREDICTION FOR AUTONOMOUS DRIVING APPLICATIONS
DE112020002166T5 (en) SIMULATION OF REALISTIC TEST DATA FROM TRANSFORMED REAL WORLD SENSOR DATA FOR AUTONOMOUS MACHINE APPLICATIONS
DE112020000369T5 (en) OBJECT DETECTION USING DISTORTED POLYGONS SUITABLE FOR PARKING DETECTION
DE102021121558A1 (en) NEURAL NETWORK BASED GAZE DIRECTION DETERMINATION USING SPATIAL MODELS
DE102020117792A1 (en) EFFECTIVE USE OF OBSTACLE AND TRACK DETECTION TO DETERMINE TRACK ALLOCATIONS FOR OBJECTS IN AN ENVIRONMENT
DE102021100065A1 (en) USE OF NEURONAL NETWORKS FOR ERROR DETECTION IN APPLICATIONS FOR AUTONOMOUS DRIVING
DE102021123159A1 (en) ADAPTIVE OBJECT TRACKING ALGORITHM FOR AUTONOMOUS MACHINE APPLICATIONS
DE112020001400T5 (en) ITERATIVE GENERATION OF SPATIAL GRAPHS
DE102019113114A1 (en) BEHAVIOR-CONTROLLED ROUTE PLANNING IN AUTONOMOUS MACHINE APPLICATIONS
DE112020006181T5 (en) EYE DETERMINATION WITH GLARE AS INPUT
DE112021000104T5 (en) PROJECTING IMAGES TAKEN WITH FISHEYE LENSES FOR FEATURE RECOGNITION IN AUTONOMOUS MACHINE APPLICATIONS
DE102022121121A1 (en) Object tracking using LiDAR data for autonomous machine applications
DE102022123130A1 (en) TRAINING OBJECT RECOGNITION MODELS USING TRANSFER LEARNERS
DE102021105245A1 (en) USING IMAGE AUGMENTATION WITH SIMULATED OBJECTS TO TRAIN MACHINE LEARNING MODELS IN AUTONOMOUS DRIVING APPLICATIONS
DE102022114516A1 (en) MULTI-FREQUENCY VOLTAGE MONITORING FOR AUTONOMOUS MACHINE APPLICATIONS
DE102022118649A1 (en) Belief propagation for distance image mapping in autonomous machine applications
DE102022117298A1 (en) COMBINATION QUALITY ASSESSMENT FOR ALL-ROUND VISION SYSTEMS
DE102021128559A1 (en) SECURITY DECOMPOSITION FOR PATH DETERMINATION IN AUTONOMOUS SYSTEMS
DE102020130749A1 (en) SYSTEM FOR MACHINE LEARNING FOR EYE DETERMINATION WITH ADAPTIVE WEIGHTING OF INPUTS
DE102020131353A1 (en) FACIAL ANALYSIS BASED ON A NEURAL NETWORK USING FACE LANDMARKS AND RELATED TRUSTED VALUES
DE102022117475A1 (en) TRANSMITTING ERRORS TO AN ISOLATED SECURITY AREA OF A SYSTEM ON A CHIP

Legal Events

Date Code Title Description
R012 Request for examination validly filed