DE112022003757T5 - TRANSFERRING DATA BETWEEN REGIONS WITH VARYING SECURITY INTEGRITY LEVELS IN A SYSTEM ON A CHIP - Google Patents

TRANSFERRING DATA BETWEEN REGIONS WITH VARYING SECURITY INTEGRITY LEVELS IN A SYSTEM ON A CHIP Download PDF

Info

Publication number
DE112022003757T5
DE112022003757T5 DE112022003757.1T DE112022003757T DE112022003757T5 DE 112022003757 T5 DE112022003757 T5 DE 112022003757T5 DE 112022003757 T DE112022003757 T DE 112022003757T DE 112022003757 T5 DE112022003757 T5 DE 112022003757T5
Authority
DE
Germany
Prior art keywords
block
data
error detection
memory address
memory
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
DE112022003757.1T
Other languages
German (de)
Inventor
Michael Ditty
Hari U. Krishnan
Padam Patt Krishnani
Jyotirmaya Swain
Anirban Ghosh
Shraddha Manohar Gondkar
Avinash J V
Parvatham Phanikumar
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,360 external-priority patent/US11573856B1/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE112022003757T5 publication Critical patent/DE112022003757T5/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

In verschiedenen Beispielen beinhaltet ein System einen Speicher, der innerhalb einer ersten Risikostufe arbeitet, und eine Schaltungsanordnung, die innerhalb einer zweiten Risikostufe arbeitet, die ein höheres Risiko als die erste Risikostufe angibt. Die Schaltungsanordnung liest und/oder schreibt Daten in eine erste Speicheradresse innerhalb des Speichers und liest und/oder schreibt einen Fehlererkennungscode in eine zweite Speicheradresse innerhalb des Speichers.In various examples, a system includes memory operating within a first risk level and circuitry operating within a second risk level indicating a higher risk than the first risk level. The circuitry reads and/or writes data to a first memory address within the memory and reads and/or writes error detection code to a second memory address within the memory.

Description

PRIORITÄTSANSPRUCHPRIORITY CLAIM

Diese Anmeldung beansprucht den Vorteil der indischen vorläufigen Anmeldung Nr. 202111034491 mit dem Titel „TRANSMITTING DATA BETWEEN REGIONS OF VARYING SAFETY INTEGRITY LEVELS IN A SYSTEM ON A CHIP“, eingereicht am 30. Juli 2021, und der US-Patentanmeldung Nr. 17/477,360 mit dem Titel „TRANSMITTING DATA BETWEEN REGIONS OF VARYING SAFETY INTEGRITY LEVELS IN A SYSTEM ON A CHIP“, eingereicht am 16. September 2021, auf deren gesamten Inhalt hiermit verwiesen wird.This application claims the benefit of Indian Provisional Application No. 202111034491 entitled “TRANSMITTING DATA BETWEEN REGIONS OF VARYING SAFETY INTEGRITY LEVELS IN A SYSTEM ON A CHIP,” filed July 30, 2021, and U.S. patent application No. 17/477,360 entitled “TRANSMITTING DATA BETWEEN REGIONS OF VARYING SAFETY INTEGRITY LEVELS IN A SYSTEM ON A CHIP”, filed September 16, 2021, the entire contents of which are hereby incorporated by reference.

TECHNISCHES GEBIETTECHNICAL AREA

Mindestens eine Ausführungsform betrifft den Zugriff auf Speicher in einer zweiten Region einer Schaltung durch eine erste Region der Schaltung. Beispielsweise betrifft mindestens eine Ausführungsform ein System auf einem Chip, das verschiedene hierin beschriebene neuartige Techniken implementiert. Gemäß einem weiteren Beispiel betrifft mindestens eine Ausführungsform ein autonomes Fahrzeug, das ein solches System auf einem Chip beinhaltet.At least one embodiment relates to accessing memory in a second region of a circuit through a first region of the circuit. For example, at least one embodiment relates to a system on a chip implementing various novel techniques described herein. According to another example, at least one embodiment relates to an autonomous vehicle including such a system on a chip.

ALLGEMEINER STAND DER TECHNIKGENERAL STATE OF THE ART

Der Automotive Safety Integrity Level („ASIL“) ist ein Risikoklassifizierungssystem für die funktionale Sicherheit von Straßenfahrzeugen, das durch den Functional Safety Standard der International Organization for Standardization („ISO“) 26262 definiert wird. In diesem Risikoklassifikationssystem gibt es vier Risikoklassifizierungsstufen: ASIL-A, ASIL-B, ASIL-C und ASIL-D, wobei ASIL-D die höchste Risikoklassifizierungsstufe ist. So haben mit ASIL-D bezeichnete Komponenten höhere Sicherheitsanforderungen als Komponenten mit niedrigerer Risikoklassifizierungsstufe (wie ASIL-B) und können teurer sein. Innerhalb vieler Kraftfahrzeugplattformen werden zumindest einige Sicherheitsdienste durch eine externe Steuereinheit durchgeführt, wenn konkrete Störungen in einem System auf einem Chip (System on a Chip - „SoC“) des Kraftfahrzeugs erkannt werden, das verschiedene Fahrfunktionen eines autonomen oder teilautonomen Fahrzeugs steuert. Im Allgemeinen kann die externe Steuereinheit auf einer höheren Risikostufe (z. B. ASIL-D) arbeiten als das Kraftfahrzeug-SoC (z. B. ASIL-B). Leider führen derartige externe Steuereinheiten zu Latenz und können teuer sein, da sie separate Komponenten benötigen, die auch im Kraftfahrzeug-SoC vorhanden sind, wie etwa DRAM, nichtflüchtiger Speicher usw., und die jeweils Platz innerhalb der Kraftfahrzeugplattform (z. B. auf einer Platine) belegen.The Automotive Safety Integrity Level (“ASIL”) is a risk classification system for the functional safety of road vehicles defined by the International Organization for Standardization (“ISO”) Functional Safety Standard 26262. In this risk classification system, there are four risk classification levels: ASIL-A, ASIL-B, ASIL-C and ASIL-D, with ASIL-D being the highest risk classification level. For example, components designated ASIL-D have higher safety requirements than components with lower risk classification levels (such as ASIL-B) and may be more expensive. Within many automotive platforms, at least some safety services are performed by an external control unit when specific faults are detected in a system on a chip (“SoC”) of the automotive vehicle that controls various driving functions of an autonomous or semi-autonomous vehicle. In general, the external control unit may operate at a higher risk level (e.g. ASIL-D) than the automotive SoC (e.g. ASIL-B). Unfortunately, such external controllers introduce latency and can be expensive because they require separate components that are also present in the automotive SoC, such as DRAM, non-volatile memory, etc., each of which occupies space within the automotive platform (e.g., on a circuit board).

KURZE BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

Die vorliegenden Systeme und Verfahren zum Isolieren einer Region eines Systems auf einem Chip werden im Folgenden unter Bezugnahme auf die beigefügten Zeichnungsfiguren detailliert beschrieben, wobei Folgendes gilt:

  • 1 ist eine Veranschaulichung einer beispielhaften Kraftfahrzeugplattform gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 2 ist eine Veranschaulichung für (eine) beispielhafte Schnittstelle(n), die eine in ein Kraftfahrzeug-SoC integrierte Sicherheitsinsel mit anderen Komponenten des Fahrzeug-SoC verbinden, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 3 ist ein Ablaufdiagramm, das ein Verfahren für einen Wechsel der Sicherheitsinsel zwischen Kokon- und Nichtisolationsmodus zeigt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 4 ist eine Veranschaulichung für (eine) beispielhafte Störungsschnittstelle(n), die Störungen von den anderen Komponenten des Kraftfahrzeug-SoC an die Sicherheitsinsel kommunizieren, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 5A ist ein Ablaufdiagramm, das ein Verfahren zum Kommunizieren von Störungen an die Sicherheitsinsel zeigt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 5B ist ein Ablaufdiagramm, das ein Verfahren zeigt, das ein Prozessor verwenden kann, um von einem SoC-Störungsaggregator empfangene Interrupts zu verarbeiten, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 5C ist ein Ablaufdiagramm, das ein Verfahren zeigt, das die SI 110 verwenden kann, um korrigierte und unkorrigierte Fehlersignale zu verarbeiten, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 5D ist ein Ablaufdiagramm, das ein Verfahren zeigt, das die SI 110 verwenden kann, um ein SoC-Störungsaggregatorsignal zu verarbeiten, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 6A veranschaulicht ein beispielhaftes Signal-Zeitsteuerungs-Diagramm für Signale, die durch den Prozessor der Sicherheitsinsel empfangen und gesendet werden, nachdem ein unkorrigierter Fehler mit geringem Schweregrad (z. B. dem Minimalwert) erklärt wurde, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 6B veranschaulicht ein beispielhaftes Signal-Zeitsteuerungs-Diagramm für Signale, die durch den Prozessor der Sicherheitsinsel empfangen und gesendet werden, nachdem ein unkorrigierter Fehler mit hohem Schweregrad (z. B. dem Maximalwert) erklärt wurde, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 6C veranschaulicht ein beispielhaftes Signal-Zeitsteuerungs-Diagramm für Signale, die durch den Prozessor der Sicherheitsinsel empfangen und gesendet werden, nachdem ein unkorrigierter Fehler (z. B. der Maximalwert) erklärt wurde, die Sicherheitsinsel aber den Mailbox-Interrupt nicht empfängt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 7 ist ein Ablaufdiagramm, das ein Verfahren zum Schreiben von Daten in eine Ausgliederung zeigt, die in einem flüchtigen Speicher definiert ist, der durch die Sicherheitsinsel und die anderen Komponenten des Kraftfahrzeug-SoC gemeinsam genutzt wird, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 8 veranschaulicht ein Beispiel eines Fehlererkennungsblocks der Sicherheitsinsel, die das Verfahren der 7 durchführt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 9 ist ein Ablaufdiagramm, das ein Verfahren zum Lesen von Daten aus der Ausgliederung zeigt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 10 veranschaulicht ein Beispiel eines Fehlererkennungsblocks der Sicherheitsinsel, die das Verfahren der 9 durchführt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 11 ist eine Veranschaulichung eines Blockdiagramms, das Fehlermeldungen zeigt, die durch den Fehlererkennungsblock generiert werden, wenn der Fehlererkennungsblock einen Egress- und Ingress-Zeitgeber beinhaltet oder mit diesen verbunden ist, gemäß einigen Ausführungsformen;
  • 12 ist eine Veranschaulichung eines beispielhaften autonomen Fahrzeugs gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 13 ist ein Beispiel für die Positionen und Sichtfelder von Kameras für das beispielhafte autonome Fahrzeug der 12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 14 ist ein Blockdiagramm einer beispielhaften Systemarchitektur für das beispielhafte autonome Fahrzeug der 12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
  • 15 ist ein Systemdiagramm für die Kommunikation zwischen dem/den Cloudbasierten Server(n) und dem beispielhaften autonomen Fahrzeug aus 12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung; und
  • 16 ist ein Blockdiagramm einer beispielhaften Rechenvorrichtung, die zur Verwendung bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
The present systems and methods for isolating a region of a system on a chip are described in detail below with reference to the accompanying drawing figures, in which:
  • 1 is an illustration of an exemplary automotive platform in accordance with some embodiments of the present disclosure;
  • 2 is an illustration of example interface(s) connecting a security island integrated into an automotive SoC to other components of the vehicle SoC, in accordance with some embodiments of the present disclosure;
  • 3 is a flow diagram illustrating a method for transitioning the safety island between cocoon and non-isolation modes, according to some embodiments of the present disclosure;
  • 4 is an illustration of exemplary fault interface(s) that communicate faults from the other components of the automotive SoC to the safety island, in accordance with some embodiments of the present disclosure;
  • 5A is a flow diagram illustrating a method for communicating faults to the safety island, according to some embodiments of the present disclosure;
  • 5B is a flow diagram illustrating a method a processor may use to process interrupts received from a SoC disturbance aggregator, according to some embodiments of the present disclosure;
  • 5C is a flow diagram illustrating a method that SI 110 may use to process corrected and uncorrected error signals, according to some embodiments of the present disclosure;
  • 5D is a flow diagram illustrating a method that SI 110 may use to process a 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 safety island processor after an uncorrected low severity (e.g., minimum value) error is declared, according to some embodiments of the present disclosure;
  • 6B illustrates an example signal timing diagram for signals received and transmitted by the safety island processor after an uncorrected high severity (e.g., maximum value) error is declared, according to some embodiments of the present disclosure;
  • 6C illustrates an example signal timing diagram for signals received and transmitted by the safety island processor after an uncorrected error (e.g., the maximum value) is declared but the safety island does not receive the mailbox interrupt, according to some embodiments of the present disclosure;
  • 7 is a flow diagram illustrating a method for writing data to a partition defined in a volatile memory shared by the security island and the other components of the automotive SoC, according to some embodiments of the present disclosure;
  • 8th illustrates an example of a safety island fault detection block that implements the 7 performs, according to some embodiments of the present disclosure;
  • 9 is a flow diagram illustrating a method for reading data from the spin-off, according to some embodiments of the present disclosure;
  • 10 illustrates an example of a safety island fault detection block that implements the 9 performs, according to some embodiments of the present disclosure;
  • 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 coupled to egress and ingress timers, according to some embodiments;
  • 12 is an illustration of an example autonomous vehicle, according to some embodiments of the present disclosure;
  • 13 is an example of the positions and fields of view of cameras for the exemplary autonomous vehicle of the 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 the 12 according to some embodiments of the present disclosure;
  • 15 is a system diagram for the communication between the cloud-based server(s) and the example autonomous vehicle from 12 according to some embodiments of the present disclosure; and
  • 16 is a block diagram of an example computing device suitable for use in implementing some embodiments of the present disclosure.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Es werden Systeme und Verfahren betreffend das Isolieren einer Region einer Schaltung, der auf einer höheren Risikostufe arbeitet (z. B. ASIL-D), von anderen Regionen der Schaltung, die auf einer niedrigeren Risikostufe arbeiten (z. B. ASIL-B), offenbart. Beispielsweise kann eine der funktionalen Sicherheit gewidmete Region oder „Insel“ von anderen Komponenten auf einem System auf einem Chip („SoC“), wie etwa einem Kraftfahrzeug-SoC, (z. B. kommunikativ) isoliert sein. 1 ist eine Veranschaulichung einer beispielhaften Kraftfahrzeugplattform 100 gemäß mindestens einer Ausführungsform. Die Kraftfahrzeugplattform 100 kann ein autonomes oder teilautonomes Fahrzeug, wie etwa ein autonomes Fahrzeug 1200 (siehe 12), implementieren. Die Kraftfahrzeugplattform 100 beinhaltet ein Verarbeitungssystem 102 des Kraftfahrzeugs, das ein Niveau an Fahrautonomie implementieren kann, das größer als Level 0 (keine Fahrautomatisierung) ist, wie von der Society of Automotive Engineers („SAE“) definiert. Beispielsweise kann das Verarbeitungssystem 102 des Kraftfahrzeugs Level 2 (teilweise Fahrautomatisierung) bis Level 5 (vollständige Fahrautomatisierung), wie von der SAE definiert, implementieren. Ein Level-2-System kann als fortschrittliches Fahrerassistenzsystem (Advanced Driver Assistance System - „ADAS“) bezeichnet werden.Systems and methods are disclosed relating to isolating a region of a circuit operating at a higher risk level (e.g., ASIL-D) from other regions of the circuit operating at a lower risk level (e.g., ASIL-B). For example, a region or "island" dedicated to functional safety may be isolated from other components on a system on a chip ("SoC"), such as an automotive SoC (e.g., communicative). 1 is an illustration of an exemplary automotive platform 100 according to at least one embodiment. The automotive platform 100 may include an autonomous or semi-autonomous vehicle, such as an autonomous vehicle 1200 (see 12 ), implement. The motor vehicle platform 100 includes a processing system 102 of the power vehicle 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 processing system 102 of the motor vehicle can implement Level 2 (partial driving automation) to Level 5 (full driving automation) as defined by the SAE. A Level 2 system may be referred to as an Advanced Driver Assistance System (“ADAS”).

Das Verarbeitungssystem 102 des Kraftfahrzeugs beinhaltet mindestens ein Kraftfahrzeug-SoC 104. Das Kraftfahrzeug-SoC 104 führt mindestens einige Funktionen durch, kann aber eine oder mehrere Sicherheitsfunktionen an eine optionale externe Steuereinheit 106 (z. B. einschließlich einer externen ASIL-D-Mikrosteuerungseinheit) abgeben. Die optionale externe Steuereinheit 106 kann unter einer höheren Risikoklassifizierungsstufe (z. B. ASIL-D) als das Kraftfahrzeug-SoC 104 arbeiten und dieser entsprechen. In Ausführungsformen, die die optionale externe Steuereinheit 106 beinhalten, wird bei Auftreten einer Störung im Fahrzeug-SoC 104 diese Störung an die optionale externe Steuereinheit 106 kommuniziert, die eine oder mehrere Maßnahmen ergreifen kann, um die Kraftfahrzeugplattform 100 in einen sicheren Zustand zurückzuversetzen. Somit kann mindestens ein Abschnitt der Sicherheitsfunktionen durch die optionale externe Steuereinheit 106 durchgeführt werden. Die optionale externe Steuereinheit 106 kann jedoch eine Latenz einführen und teuer sein, da sie separate Komponenten wie DRAM, nichtflüchtigen Speicher usw. benötigt, die jeweils Platz innerhalb der Kraftfahrzeugplattform 100 (z. B. auf einer Platine) belegen.The automotive processing system 102 includes at least one automotive SoC 104. The automotive SoC 104 performs at least some functions, but may outsource one or more safety functions to an optional external controller 106 (e.g., including an external ASIL-D microcontroller). The optional external controller 106 may operate under and conform to a higher risk classification level (e.g., ASIL-D) than the automotive SoC 104. In embodiments that include the optional external controller 106, when a fault occurs in the automotive SoC 104, that fault is communicated to the optional external controller 106, which may take one or more actions to return the automotive platform 100 to a safe state. Thus, at least a portion of the safety functions may be performed by the optional external controller 106. However, the optional external controller 106 may introduce latency and be expensive because it requires separate components such as DRAM, non-volatile memory, etc., each of which occupies space within the automotive platform 100 (e.g., on a circuit board).

Um mindestens einen Teil der durch die optionale externe Steuereinheit 106 eingeführten Latenz und der Kosten zu vermeiden, beinhaltet die Kraftfahrzeugplattform 100 der 1 eine in den Kraftfahrzeug-SoC 104 integrierte Funktionssicherheitsinsel oder Sicherheitsinsel (safety island - „SI“) 110. Die SI 110 kann als ein Rechencluster implementiert sein, der unter einer höheren Risikoklassifizierungsstufe (z. B. ASIL-D) als der Rest des Kraftfahrzeug-SoC 104 arbeitet und dieser entspricht. Die SI 110 kann mindesten einen Abschnitt der Funktionen durchführen, die typischerweise durch die optionale externe Steuereinheit 106 durchgeführt werden. Durch das Vorhandensein der SI 110 kann die optionale externe Steuereinheit 106 ganz entfallen oder unter Verwendung einer weniger aufwändigen und/oder kostengünstigeren externen Steuereinheit implementiert werden. Beispielsweise kann die optionale externe Steuereinheit 106, wenn sie vorhanden ist, eine oder mehrere Legacy-Funktionen durchführen, wie etwa Bereitstellen einer Kommunikation auf einem Controller Area Network Bus („CAN“-Bus), Bereitstellen eines Rücksetzsteuerung für das Kraftfahrzeug-SoC 104 und/oder Durchführen einer fahrzeuginternen Spannungsüberwachung.To avoid at least some of the latency and costs introduced by the optional external control unit 106, the automotive platform 100 of the 1 a functional safety island or safety island (“SI”) 110 integrated into the automotive SoC 104. The SI 110 may be implemented as a compute cluster that operates under and conforms to a higher risk classification level (e.g., ASIL-D) than the rest of the automotive SoC 104. The SI 110 may perform at least a portion of the functions typically performed by the optional external control unit 106. The presence of the SI 110 may eliminate the optional external control unit 106 entirely or may be implemented using a less complex and/or less expensive external control unit. For example, the optional external control unit 106, when present, may perform one or more legacy functions such as providing communication on a Controller Area Network Bus (“CAN” bus), providing reset control for the automotive SoC 104, and/or performing in-vehicle voltage monitoring.

Neben dem Kraftfahrzeug-SoC 104 und der optionalen externen Steuereinheit 106 (soweit vorhanden) kann das Verarbeitungssystem 102 des Kraftfahrzeugs einen ersten (SoC-)Takt 112 für das Kraftfahrzeug-SoC 104, einen zweiten (SI-)Takt 114 für die Sl 110 und eine integrierte Schaltung (integrated circuit - „IC“) 116 zur Leistungsverwaltung beinhalten. Jede der Komponenten des Verarbeitungssystems 102 des Kraftfahrzeugs ist zumindest teilweise in Hardware implementiert. Logikkomponenten des Verarbeitungssystems 102 des Kraftfahrzeugs (z. B. das Kraftfahrzeug-SoC 104 und die optionale externe Steuereinheit 106) sind typischerweise jeweils in Hardware-Logikschaltungen innerhalb eines oder mehrerer integrierten Schaltungschips implementiert. Die Logik kann fest verdrahtet oder programmierbar oder eine Kombination aus fest verdrahteten und programmierbaren Elementen sein. Zusätzlich oder alternativ können gewisse Funktionen des Verarbeitungssystems 102 des Kraftfahrzeugs in Software oder Firmware implementiert sein, die durch eine(n) eingebetteten Mikroprozessor oder Mikrosteuerung ausgeführt wird.In addition to the automotive SoC 104 and the optional external control unit 106 (if present), the automotive processing system 102 may include a first (SoC) clock 112 for the automotive SoC 104, a second (SI) clock 114 for the SI 110, and an integrated circuit (“IC”) 116 for power management. Each of the components of the automotive processing system 102 is at least partially implemented in hardware. Logic components of the automotive processing system 102 (e.g., the automotive SoC 104 and the optional external control unit 106) are each typically implemented in hardware logic circuits within one or more integrated circuit chips. The logic may be hardwired or programmable, or a combination of hardwired and programmable elements. Additionally or alternatively, certain functions of the motor vehicle processing system 102 may be implemented in software or firmware executed by an embedded microprocessor or microcontroller.

Der erste und der zweite Takt 112 und 114 stellen zwei getrennte Taktsignale an das Kraftfahrzeug-SoC 104 bereit. Genauer wird ein erstes Taktsignal, das durch den ersten (SoC-)Takt 112 generiert wird, anderen Komponenten 160 des Kraftfahrzeug-SoC 104 außer der SI 110 bereitgestellt und wird ein zweites Taktsignal, das durch den zweiten (SI-)Takt 114 generiert wird, der SI 110 bereitgestellt. Somit können die SI 110 und die anderen Komponenten 160 als innerhalb getrennter Taktdomänen arbeitend charakterisiert werden. Die Taktdomäne der SI 110 wird als SI-Taktdomäne bezeichnet und die Taktdomäne der anderen Komponenten 160 wird als SoC-Taktdomäne bezeichnet. Der erste und der zweite Takt 112 und 114 können jeweils zumindest teilweise als Kristalloszillatoren implementiert sein. Der erste (SoC-)Takt 112 kann über eine erste Taktverbindung (nicht gezeigt), wie etwa einen Draht, eine Signalspur und dergleichen, mit jeder von mindestens einigen der anderen Komponenten 160 des Kraftfahrzeug-SoC 104 verbunden sein. Somit kann der erste (SoC-)Takt 112 über die erste Taktverbindung (nicht gezeigt) das erste Taktsignal an die anderen Komponenten 160 des Kraftfahrzeug-SoC 104 bereitstellen. Der zweite (SI-)Takt 114 kann über eine zweite Taktverbindung (nicht gezeigt), wie etwa einen Draht, eine Signalspur und dergleichen, mit jeder von mindestens einigen der Komponenten der SI 110 verbunden sein. Somit kann der zweite (SI-)Takt 114 das zweite Taktsignal über die zweite Taktverbindung (nicht gezeigt) an die SI 110 bereitstellen.The first and second clocks 112 and 114 provide two separate clock signals to the automotive SoC 104. More specifically, a first clock signal generated by the first (SoC) clock 112 is provided to other components 160 of the automotive SoC 104 other than the SI 110, and a second clock signal generated by the second (SI) clock 114 is provided to the SI 110. Thus, the SI 110 and the other components 160 may be characterized as operating within separate clock domains. The clock domain of the SI 110 is referred to as the SI clock domain, and the clock domain of the other components 160 is referred to as the SoC clock domain. The first and second clocks 112 and 114 may each be implemented at least partially as crystal oscillators. The first (SoC) clock 112 may be connected to each of at least some of the other components 160 of the automotive SoC 104 via a first clock connection (not shown), such as a wire, a signal trace, and the like. Thus, the first (SoC) clock 112 may provide the first clock signal to the other components 160 of the automotive SoC 104 via the first clock connection (not shown). The second (SI) clock 114 may be connected to each of at least some of the components of the SI 110 via a second clock connection (not shown), such as a wire, a signal trace, 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).

Die Leistungsverwaltungs-IC 116 versorgt andere Komponenten des Verarbeitungssystems 102 des Kraftfahrzeugs mit Leistung. Beispielsweise verbinden Stromschienen oder Verbindungen 118A-118C die Leistungsverwaltungs-IC 116 mit den anderen Komponenten 160 des Kraftfahrzeug-SoC 104, der SI 110 bzw. der optionalen externen Steuereinheit 106. Die Leistungsverbindungen 118A-118C tragen dazu bei, die anderen Komponenten 160 des Kraftfahrzeug-SoC 104, der SI 110 bzw. der optionalen externen Steuereinheit 106 (soweit vorhanden) elektrisch voneinander zu isolieren. Somit kann die SI 110 innerhalb einer separaten Spannungsdomäne von den anderen Komponenten 160 und der optionalen externen Steuereinheit 106 (soweit vorhanden) arbeiten. Die Spannungsdomäne der SI 110 wird als SI-Spannungsdomäne bezeichnet und die Spannungsdomäne der anderen Komponenten 160 wird als SoC-Spannungsdomäne bezeichnet. Die Leistungsverwaltungs-IC 116 kann als eine oder mehrere integrierte Schaltungen implementiert sein, die Komponenten des Verarbeitungssystems 102 des Kraftfahrzeugs ausreichend mit Leistung versorgen. Die Leistungsverbindungen 118A-118C können jeweils als leitfähiges Element, wie etwa eine elektrische Übertragungsleitung, ein Draht, eine Leistungsspur und dergleichen, implementiert sein.The power management IC 116 supplies power to other components of the automotive processing system 102. For example, power rails or interconnections 118A-118C connect the power management IC 116 to the other components 160 of the automotive SoC 104, the SI 110, or the optional external control unit 106, respectively. The power interconnections 118A-118C help to electrically isolate the other components 160 of the automotive SoC 104, the SI 110, or the optional external control unit 106 (if present) from each other. Thus, the SI 110 can operate within a separate voltage domain from the other components 160 and the optional external control unit 106 (if present). The voltage domain of the SI 110 is referred to as the SI voltage domain, and the voltage domain of the other components 160 is referred to as the SoC voltage domain. The power management IC 116 may be implemented as one or more integrated circuits that provide sufficient power to components of the automotive processing system 102. The power connections 118A-118C may each be implemented as a conductive element, such as an electrical transmission line, a wire, a power trace, and the like.

Wie vorstehend erwähnt, arbeitet die SI 110 in der SI-Taktdomäne und in der SI-Spannungsdomäne. Zusammen werden die SI-Taktdomäne und die SI-Spannungsdomäne als SI-Domäne bezeichnet. Gleichermaßen arbeiten die anderen Komponenten 160 in der SoC-Taktdomäne und in der SoC-Spannungsdomäne. Zusammen werden die SoC-Taktdomäne und die SoC-Spannungsdomäne als SoC-Domäne bezeichnet.As mentioned above, the SI 110 operates in the SI clock domain and the SI voltage domain. Together, the SI clock domain and the SI voltage domain are referred to as the SI domain. Similarly, the other components 160 operate in the SoC clock domain and the SoC voltage domain. Together, the SoC clock domain and the SoC voltage domain are referred to as the SoC domain.

Die anderen Komponenten 160 des Kraftfahrzeug-SoC 104 können einen Zentralverarbeitungseinheit(central processing unit - „CPU“)-Hauptkomplex 120, eine zusätzliche Sicherheitseinheit 122, eine Schaltungsanordnung 124 zum Durchführen von Kraftfahrzeug-SoC-Funktionen, einen flüchtigen Datenspeicher oder Speicher 126 (z. B. dynamischer Direktzugriffsspeicher („DRAM“)) und einen nichtflüchtigen Datenspeicher oder Speicher 128 beinhalten. Der CPU-Hauptkomplex 120 kann als ein oder mehrere bei ASIL-B arbeitende Prozessoren implementiert sein. In solchen Ausführungsformen kann das Fahrzeug-SoC 104 bei 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 Schaltungsanordnung 124 Hardware beinhalten, die eine oder mehrere Anzeigen, eine oder mehrere Eingabe/Ausgabe(„E/A“)-Steuerungen des Kraftfahrzeugs, eine oder mehrere Speichersteuerungen, eine oder mehrere Zusammenschaltungen usw. implementiert. In der veranschaulichten Ausführungsform ist die Schaltungsanordnung 124 so dargestellt, dass sie eine Vielzahl von Logikblöcke LB(1) - LB(N) beinhaltet oder implementiert, die häufig jeweils als geistiges Eigentum (Intellectual Property - „IP“) bezeichnet werden. Die Logikblöcke LB(1) - LB(N) können innerhalb des autonomen Fahrzeugs (z. B. des in 12 veranschaulichten autonomen Fahrzeugs 1200) verschiedene Funktionen implementieren.The other components 160 of the automotive SoC 104 may include a central processing unit (“CPU”) main complex 120, an additional security unit 122, circuitry 124 for performing automotive SoC functions, a volatile data storage or memory 126 (e.g., dynamic random access memory (“DRAM”)), and a non-volatile data storage or memory 128. The CPU main complex 120 may be implemented as one or more processors operating at ASIL-B. In such embodiments, the automotive SoC 104 may operate at multiple or mixed ASILs since the SI 110 may operate at a higher ASIL level (e.g., ASIL-D). As non-limiting examples, the circuitry 124 may include hardware that implements one or more displays, one or more input/output ("I/O") controls of the motor vehicle, one or more memory controllers, one or more interconnects, etc. In the illustrated embodiment, the circuitry 124 is shown as including or implementing a plurality of logic blocks LB(1) - LB(N), each of which is often referred to as intellectual property ("IP"). The logic blocks LB(1) - LB(N) may be implemented within the autonomous vehicle (e.g., the 12 illustrated autonomous vehicle 1200) implement various functions.

Die optionale externe Steuereinheit 106 kann eine Steuerung 130, einen Störungsaggregator 132, einen flüchtigen Datenspeicher oder Speicher 136 (z. B. DRAM) und einen nichtflüchtigen Datenspeicher oder Speicher 138 beinhalten. Die optionale externe Steuereinheit 106 kann auch einen oder mehrere Logikblöcke (nicht gezeigt) beinhalten, die diejenigen Sicherheitsfunktionen implementieren, die durch die optionale externe Steuereinheit 106 durchgeführt werden. Die Steuerung 130 kann als ein oder mehrere Prozessoren (z. B. Mikrosteuerung(en)), die bei ASIL-D arbeiten, implementiert sein. Die Steuerung 130 führt im nichtflüchtigen Speicher 138 gespeicherte Anweisungen aus, wie etwa Anweisungen, die mit einem oder mehreren Softwarestandards der Automotive Open System Architecture („AUTOSAR“) konform sind. Die Anweisungen können die Steuerung 130 anweisen, geeignete Maßnahmen zu ergreifen, wenn der Störungsaggregator 132 eine Störung von dem Fahrzeug-SoC 104 empfängt.The optional external control unit 106 may include a controller 130, a fault aggregator 132, a volatile data store or memory 136 (e.g., DRAM), and a non-volatile data store or memory 138. The optional external control unit 106 may also include one or more logic blocks (not shown) that implement the safety functions performed by the optional external control unit 106. The controller 130 may be implemented as one or more processors (e.g., microcontroller(s)) operating at ASIL-D. The controller 130 executes instructions stored in the non-volatile memory 138, such as instructions compliant with one or more Automotive Open System Architecture (“AUTOSAR”) software standards. The instructions may instruct the controller 130 to take appropriate actions when the fault aggregator 132 receives a fault from the vehicle SoC 104.

In einer oder mehreren Ausführungsformen beinhaltet die SI 110 einen Prozessor 140, eine Interrupt-Steuerung 141, einen SI-Störungsaggregator 142, einen flüchtigen Datenspeicher oder Speicher 146 (z. B. statischer Direktzugriffsspeicher („SRAM“)) und einen oder mehrere Logikblöcke 148. Der Prozessor 140 kann als Cluster von Prozessoren, wie hoch bewertete ASIL-D-Sicherheitsprozessoren, implementiert sein. Der Prozessor 140 führt Anweisungen 149 aus, wie etwa Anweisungen, die mit dem/den AUTOSAR-Softwarestandard(s) konform sind, die beim Hochfahren aus dem nichtflüchtigen Speicher 128 erlangt werden und im flüchtigen Speicher 146 gespeichert sind. Die Anweisungen 149 können den Prozessor 140 anweisen, geeignete Maßnahmen zu ergreifen, wenn der SI-Störungsaggregator 142 eine Störung von den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 empfängt. Der oder die Logikblöcke 148 können dazu beitragen, die Sicherheitsfunktionen zu implementieren, die durch die Sl 110 durchgeführt werden.In one or more embodiments, the SI 110 includes a processor 140, an interrupt controller 141, an SI fault aggregator 142, a volatile data store or memory 146 (e.g., static random access memory ("SRAM")), and one or more logic blocks 148. The processor 140 may be implemented as a cluster of processors, such as highly rated ASIL-D safety processors. The processor 140 executes instructions 149, such as instructions compliant with the AUTOSAR software standard(s), that are obtained from the non-volatile memory 128 at boot time and stored in the volatile memory 146. The instructions 149 may instruct the processor 140 to take appropriate action when the SI fault aggregator 142 receives a fault from the other components 160 of the automotive SoC 104. The logic block(s) 148 may help implement the safety functions performed by the Sl 110.

Die Hilfs-Sicherheitseinheit 122 kann als Echtzeit-Sicherheitshilfsverarbeitungseinheit implementiert sein und/oder als ASIL-B oder höher eingestuft sein. Mit anderen Worten kann die Hilfs-Sicherheitseinheit 122 auf derselben Risikoklassifizierungsstufe wie oder auf einer höheren Risikoklassifizierungsstufe als andere Komponenten innerhalb der SoC-Domäne arbeiten. Die Hilfs-Sicherheitseinheit 122 beinhaltet einen Prozessor 150, einen oder mehrere SoC-Störungsaggregatoren 152, eine Interrupt-Steuerung 154 und einen oder mehrere Logikblöcke, die als Mailbox(en) 156 bezeichnet werden. Der SI-Störungsaggregator 142 und der Störungsaggregator 132 (soweit vorhanden) können jeweils Störungen von dem/den SoC-Störungsaggregator(en) 152 empfangen. Der/die SoC-Störungsaggregator(en) 152 können somit über eine oder mehrere Störungsschnittstellen 170 mit dem Störungsaggregator 132 und über eine oder mehrere Störungsschnittstellen 172 mit dem SI-Störungsaggregator 142 verbunden sein. Jede der Störungsschnittstellen 170 und 172 beinhaltet eine Verbindung, wie etwa einen Draht, eine Signalspur und dergleichen, die jeden der SoC-Störungsaggregator(en) 152 physisch mit einem jeweiligen Störungsaggregator 132 oder dem SI-Störungsaggregator 142 verbindet.The auxiliary safety unit 122 may be implemented as a real-time auxiliary safety processing unit and/or may be rated ASIL-B or higher. In other words, the auxiliary safety unit 122 may be at the same risk classification level as or at a higher risk classification level than other components within the SoC domain. The auxiliary security unit 122 includes a processor 150, one or more SoC fault aggregators 152, an interrupt controller 154, and one or more logic blocks referred to as mailbox(es) 156. The SI fault aggregator 142 and the fault aggregator 132 (if present) may each receive faults from the SoC fault aggregator(s) 152. The SoC fault aggregator(s) 152 may thus be connected to the fault aggregator 132 via one or more fault interfaces 170 and to the SI fault aggregator 142 via one or more fault interfaces 172. Each of the disturbance interfaces 170 and 172 includes a connection, such as a wire, a signal trace, and the like, that physically connects each of the SoC disturbance aggregator(s) 152 to a respective disturbance aggregator 132 or the SI disturbance aggregator 142.

Der/die Mailbox(en) 156 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, beinhalten. Die Mailbox(en) 156 können durch den Prozessor 150 (z. B. eine zentrale Verarbeitungseinheit („CPU“) mit der Einstufung ASIL-B oder höher) verwendet werden, um Mailbox-Interrupts an die Interrupt-Steuerung 141 zu berichten und Interrupts von der Interrupt-Steuerung 141 zu empfangen. Die Störungsschnittstelle(n) 172 beinhalten somit mindestens einen Signalleiter, der die Mailbox(en) 156 mit der Interrupt-Steuerung 141 verbindet. Jeder Mailbox-Interrupt beinhaltet eine Schweregradkennung, die einen Schweregrad des Fehlers angibt. Als nicht einschränkendes Beispiel kann die Schweregradkennung ein numerischer Wert sein, der von einem Minimalwert (z. B. null) bis zu einem Maximalwert (z. B. sieben) reicht. Als weiteres nicht einschränkendes Beispiel kann der Interrupt eine Interrupt-Nummer aufweisen, die a-priori codiert ist, um den Schweregrad anzugeben. Der Prozessor 140 und/oder der Prozessor 150 können Störungsinformationen in die Mailbox(en) 156 schreiben. Die Störungsinformationen beinhalten Informationen über den/die Fehler, die die Störung generiert haben, wie etwa logische(r) Blockname(n), bei dem/denen der Fehler aufgetreten ist, Diagnosekennung(en) des Logikblocks, die Art der Störung, die Schweregradkennung und dergleichen.The mailbox(es) 156 may include a first mailbox to which the processor 150 writes and from which the processor 140 reads and a second mailbox to which the processor 140 writes and from which the processor 150 reads. The mailbox(es) 156 may be used by the processor 150 (e.g., a central processing unit ("CPU") rated ASIL-B or higher) to report mailbox interrupts to the interrupt controller 141 and to receive interrupts from the interrupt controller 141. The fault interface(s) 172 thus include at least one signal conductor connecting the mailbox(es) 156 to the interrupt controller 141. Each mailbox interrupt includes a severity identifier indicating a severity of the fault. 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 encoded a priori to indicate the severity. The processor 140 and/or the processor 150 may write fault information to the mailbox(es) 156. The fault information includes information about the error(s) that generated the fault, such as the logical block name(s) in which the error occurred, diagnostic identifier(s) of the logic block, the type of fault, the severity identifier, and the like.

Durch die Integration der SI 110 in das Kraftfahrzeug-SoC 104 kann es möglich sein, eine Anzahl von separaten Komponenten (z. B. den flüchtigen Speicher 136 und den nichtflüchtigen Speicher 138) aus dem Verarbeitungssystem 102 des Kraftfahrzeugs wegzulassen, wenn auch die optionale externe Steuereinheit 106 weggelassen wird. Trotzdem ist es notwendig, die SI 110 von den anderen Komponenten 160 (z. B. dem CPU-Hauptkomplex 120, der Hilf-Sicherheitseinheit 122, der Schaltungsanordnung 124, dem flüchtigen Speicher 126 und dem nichtflüchtigen Speicher 128) des Kraftfahrzeug-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 Isolation kann beispielsweise dazu beitragen, dass die SI 110 nicht durch einen Ausfall in einer oder mehreren der anderen Komponenten 160 des Kraftfahrzeug-SoC 104 beeinträchtigt wird. Nicht einschränkende Beispiele für die Arten von Ausfällen, die in einer oder mehreren der anderen Komponenten 160 auftreten können, sind zufällige Störungen, Taktprobleme, Leistungsprobleme und/oder Spannungsprobleme. Aufgrund der räumlichen Nähe und einer oder mehrerer Schnittstellen 200 (siehe 2), die die Sl 110 mit den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 gemeinsam nutzt, können derartige Ausfälle zur SI 110 migrieren und verhindern, dass die SI 110 eine Ausweich- und/oder Ausfallsicherheitsfunktionalität durchführt, für die die SI 110 in das Kraftfahrzeug-SoC 104 integriert wurde. Somit isoliert das Verarbeitungssystem 102 des Kraftfahrzeugs die SI 110 von den anderen Komponenten 160 des Kraftfahrzeug-SoC 104, um eine Isolation zu erreichen, die mit derjenigen zwischen dem Kraftfahrzeug-SoC 104 und der optionalen externen Steuereinheit 106 vergleichbar ist. Eine solche Isolation kann durch den ersten und zweiten Takt 112 und 114, die erste und zweite Leistungsverbindung 118A und 118B und die Schnittstelle(n) 200 erreicht werden.By integrating the SI 110 into the automotive SoC 104, it may be possible to omit a number of separate components (e.g., the volatile memory 136 and the non-volatile memory 138) from the automotive processing system 102 when the optional external control unit 106 is also omitted. Nevertheless, it is necessary to isolate the SI 110 from the other components 160 (e.g., the main CPU complex 120, the auxiliary security unit 122, the circuitry 124, the volatile memory 126, and the non-volatile memory 128) of the automotive SoC 104 so that potential problems occurring in one or more of the other components 160 do not negatively affect the SI 110. Such isolation may, for example, help prevent the SI 110 from being affected by a failure in one or more of the other components 160 of the automotive SoC 104. Non-limiting examples of the types of failures that may occur in one or more of the other components 160 include random glitches, clock problems, power problems, and/or voltage problems. Due to the proximity and one or more interfaces 200 (see 2 ) that the SI 110 shares with the other components 160 of the automotive SoC 104, such failures may migrate to the SI 110 and prevent the SI 110 from performing fallback and/or fail-safe functionality for which the SI 110 was integrated into the automotive SoC 104. Thus, the automotive processing system 102 isolates the SI 110 from the other components 160 of the automotive SoC 104 to achieve isolation comparable to that between the automotive SoC 104 and the optional external controller 106. Such isolation may be achieved by the first and second clocks 112 and 114, the first and second power connections 118A and 118B, and the interface(s) 200.

Der erste (SoC-)Takt 112 ist von dem zweiten (SI-)Takt 114 getrennt (beinhaltet z. B. einen separaten Referenzkristall), was dazu beiträgt, die SI 110 von den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 zu isolieren. Ebenso ist die erste Leistungsverbindung 118A von der zweiten Leistungsverbindung 118B getrennt, was dazu beiträgt, die SI 110 von den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 zu isolieren. Wie vorstehend erwähnt, kann die Sl 110 in der von den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 getrennten SI-Spannungsdomäne arbeiten. Aber auch bei separatem zweiten (SI-)Takt 114 und separater zweiter Leistungsverbindung 118B kommuniziert die Sl 110 mit den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 über die Schnittstelle(n) 200 (siehe 2).The first (SoC) clock 112 is separate from the second (SI) clock 114 (e.g., includes a separate reference crystal), which helps isolate the SI 110 from the other components 160 of the automotive SoC 104. Likewise, the first power connection 118A is separate from the second power connection 118B, which helps isolate the SI 110 from the other components 160 of the automotive SoC 104. As mentioned above, the SI 110 can operate in the SI voltage domain separate from the other components 160 of the automotive SoC 104. However, even with a separate second (SI) clock 114 and separate second power connection 118B, the SI 110 communicates with the other components 160 of the automotive SoC 104 via the interface(s) 200 (see 2 ).

Der/die Logikblöcke 148 beinhalten eine Takt- und Rücksetzschaltungsanordnung 230 (siehe 2), die mit dem dedizierten zweiten (SI-)Takt 114 verbunden ist. Der dedizierte zweite (SI-)Takt 114 kann als Referenztakt für die Takt- und Rücksetzschaltungsanordnung 230 verwendet werden. Beispielsweise kann die Takt- und Rücksetzschaltungsanordnung 230 einen internen dedizierten Phasenregelkreis (phase-locked loop - „PLL“) beinhalten, der verwendet wird, um andere Funktions- und Debug-Takte der SI 110 abzuleiten. Als nicht einschränkende Beispiele kann die Takt- und Rücksetzschaltungsanordnung 230 ein Debug-Taktsignal und ein Test-Taktsignal bereitstellen, die aus dem PLL abgeleitet werden können. Die Takt- und Rücksetzschaltungsanordnung 230 kann alle innerhalb der SI 110 verwendeten Takt- und Rücksetzsignale generieren. Mit anderen Worten kann die Takt- und Rücksetzschaltungsanordnung 230 das/die Taktsignal(e) und Rücksetzsignal(e) generieren, die innerhalb der SI-Domäne verwendet werden. Zusätzlich oder alternativ kann der zweite (SI-)Takt 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 generierte(n) Taktsignal(e) und Rücksetzsignal(e) und/oder das durch den zweiten (SI-)Takt 114 bereitgestellte Taktsignal. In der SI 110 werden keine Taktsignale oder Rücksetzsignale von den anderen Komponenten 160 verwendet. Die Takt- und Rücksetzschaltungsanordnung 230 trägt dazu bei, dass keine Störungen durch logisch generierende Rücksetzungen (z. B. Rücksetzblöcke) innerhalb der anderen Komponenten 160 zu den Komponenten der Sl 110 gelangen.The logic block(s) 148 include a clock and reset circuitry 230 (see 2 ) that is connected to the dedicated second (SI) clock 114. The dedicated second (SI) clock 114 may be used as a reference clock for the clock and reset circuitry 230. For example, the clock and reset circuitry 230 may include an internal dedicated phase-locked loop (“PLL”) used to derive other functional and debug clocks of the SI 110. As non-limiting examples, the clock and reset circuitry 230 may provide a debug clock signal and a test clock signal that may be derived from the PLL. The clock and reset circuitry 230 may generate all clock and reset signals used within the SI 110. In other words, the clock and reset circuitry 230 may generate the clock signal(s) and reset signal(s) used within the SI domain. 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 signal(s) and/or the clock signal provided by the second (SI) clock 114. No clock signals or reset signals from the other components 160 are used in the SI 110. The clock and reset circuitry 230 helps to prevent interference from logic-generating resets (e.g., reset blocks) within the other components 160 from reaching the components of the SI 110.

2 ist eine Veranschaulichung für (eine) Schnittstelle(n 200), die die SI 110 mit anderen Komponenten 160 des Fahrzeug-SoC 104 verbinden, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die Schnittstelle(n) 200 stellen unter Bezugnahme auf 2 eine logische Isolation für die Schaltungsanordnung und Logik der SI 110 im Kraftfahrzeug-SoC 104 bereit. In der veranschaulichten Ausführungsform beinhalten die Schnittstelle(n) 200 die Störungsschnittstelle(n) 172, eine Schnittstelle 200A des flüchtigen Speichers, eine erste Steuerbackboneschnittstelle 200B, eine zweite Steuerbackboneschnittstelle 200C, eine Schnittstelle 200D für sicheren Inhalt, eine Debug-Schnittstelle 200E und eine Testschnittstelle 200F. Die Störungsschnittstelle(n) 172 sind möglicherweise nicht logisch von dem/den SoC-Störungsaggregator(en) 152 isoliert, sondern können jeweils einen oder mehrere Spannungspegelschieber 240 durchlaufen oder beinhalten, die jeweils eine elektrische Isolation zwischen der Sl- und der SoC-Spannungsdomäne bereitstellen. Während der/die Spannungspegelschieber 240 jeweils eine elektrische Isolation bereitstellen, können der/die Spannungspegelschieber 240 für einige Arten von Ausfällen, wie Interrupt-Stürme, Störungsstürme und/oder kontinuierliche Erklärungen, keine ausreichende Isolation bereitstellen. Der SI-Störungsaggregator 142 kann ein oder mehrere Statusbits 242 beinhalten, die Störungsinformationen über die Störungsschnittstelle(n) 172 empfangen und eine Benachrichtigung über solche Ausfälle an die durch den Prozessor 140 ausgeführten Anweisungen 149 bereitstellen. In der veranschaulichten Ausführungsform beinhalten die Statusbits 242 die Statusbits „BT1“, „BT2“ und „BT3“ (siehe 4). Die Anweisungen 149 weisen den Prozessor 140 an, diese Benachrichtigung zu verwenden, um Ausfälle, die an der/den Störungsschnittstelle(n) 172 auftreten, zu mindern. 2 is an illustration of interface(s) 200 connecting the SI 110 to other components 160 of the vehicle SoC 104, according to some embodiments of the present disclosure. The interface(s) 200 provide, with reference to 2 provide logical isolation for the circuitry and logic of the SI 110 in the automotive SoC 104. In the illustrated embodiment, the interface(s) 200 include the fault interface(s) 172, a volatile memory interface 200A, a first control backbone interface 200B, a second control backbone interface 200C, a secure content interface 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 pass through or include one or more voltage level shifters 240, each providing electrical isolation between the SI and SoC voltage domains. While the voltage level shifter(s) 240 each provide electrical isolation, the voltage level shifter(s) 240 may not provide sufficient isolation for some types of failures, such as interrupt storms, fault storms, and/or continuous declarations. The SI fault aggregator 142 may include one or more status bits 242 that receive fault information via the fault interface(s) 172 and provide notification of such failures to the instructions 149 executed by the processor 140. In the illustrated embodiment, the status bits 242 include the status bits "BT1", "BT2", and "BT3" (see 4 ). Instructions 149 instruct processor 140 to use this notification to mitigate failures occurring at fault interface(s) 172.

Die Schnittstelle 200A des flüchtigen Speichers ist eine Schnittstelle zwischen dem Prozessor 140 und dem flüchtigen Speicher 126 des Kraftfahrzeug-SoC 104. Die Schnittstelle 200A des flüchtigen Speichers 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 des flüchtigen Speichers beinhaltet eine oder mehrere Verbindungen mit dem flüchtigen Speicher 126, wie etwa einen Draht, eine Signalspur und dergleichen. Die Schnittstelle 200A des flüchtigen Speichers kann die logische Isolationssteuerung 220, einen Zugriffszeitgeber 222 und eine Domänensynchronisationsschaltungsanordnung 224 beinhalten. Die logische Isolationssteuerung 220 beinhaltet einen Gate- oder Sperrmechanismus, der durch den Prozessor 140 selektiv gesperrt und entsperrt werden kann. Der Zugriffszeitgeber 222 ermöglicht eine Zeitüberschreitung eines durch den Prozessor 140 initiierten Zugriffsversuchs.The volatile memory interface 200A is an interface between the processor 140 and the volatile memory 126 of the automotive SoC 104. The volatile memory interface 200A enables the processor 140 to write information to the volatile memory 126 and read information from the volatile memory 126. The volatile memory interface 200A includes one or more connections to the volatile memory 126, such as a wire, a signal trace, and the like. The volatile memory interface 200A may include the logical isolation controller 220, an access timer 222, and domain synchronization circuitry 224. The logical isolation controller 220 includes a gate or locking mechanism that can be selectively locked and unlocked by the processor 140. The access timer 222 allows a timeout of an access attempt initiated by the processor 140.

Die Domänensynchronisationsschaltungsanordnung 224 beinhaltet eine Phasensynchronisationsschaltungsanordnung und einen oder mehrere Spannungspegelschieber. Die Phasensynchronisationsschaltungsanordnung trägt dazu bei, die Phasen von Signalen, die über die SI- und SoC-Domänen kommuniziert werden, die unter Verwendung des separaten ersten und zweiten Takts 112 und 114 generiert wurden (siehe 1), zu synchronisieren. Die durch die Takt- und Rücksetzschaltungsanordnung 230 generierten Rücksetzungen können durch beliebige Elemente verwendet werden, die die SI- und SoC-Spannungs- und Taktdomänen kreuzen, wie etwa die Phasensynchronisationsschaltungsanordnung. Die Phasensynchronisationsschaltungsanordnung weist einen SoC-Abschnitt und einen SI-Abschnitt auf, die jeweils als separate Syntheseoberseite fungieren können. Der SoC-Abschnitt befindet sich physisch in der SoC-Domäne und der SI-Abschnitt befindet sich physisch in der SI-Domäne. Die Logik sowohl des SI- als auch des SoC-Abschnitts verwendet durch die Takt- und Rücksetzschaltungsanordnung 230 generierte Rücksetzungen. Somit können die durch die SI 110 generierten Rücksetzungen durch die Logik des Kraftfahrzeug-SoC 104 verwendet werden, die bei einer niedrigeren ASIL als die Sl 110 arbeiten kann, aber durch die Kraftfahrzeug-SoC 104 generierte Rücksetzungen werden nicht an die SI 110 übermittelt und können durch diese nicht verwendet werden. Als nicht einschränkendes Beispiel kann die Phasensynchronisationsschaltungsanordung als ein aufgeteiltes First-in-First-Out („fifo“) und dergleichen implementiert sein. Der/die Spannungspegelschieber der Domänensynchronisationsschaltungsanordnung 224 können im Wesentlichen identisch mit dem/den Spannungspegelschieber(n) 240 sein und die Spannung der Signale, die über die SI- und SoC-Spannungsdomänen übertragen werden, anpassen, um eine sichere Kommunikation der Signale über die SI- und SoC-Domänen zu ermöglichen. Wenn der Zugriffszeitgeber 222 angibt, dass ein Zugriff durch den Prozessor 140 zeitlich abgelaufen ist, kann die Anforderung aus der Domänensynchronisierungsschaltungsanordnung 224 entfernt werden (z. B. aus dem aufgeteilten fifo entnommen).The domain synchronization circuitry 224 includes phase synchronization circuitry and one or more voltage level shifters. The phase synchronization circuitry helps to synchronize the phases of signals communicated across the SI and SoC domains generated using the separate first and second clocks 112 and 114 (see 1 ). The resets generated by clock and reset circuitry 230 may be used by any elements that cross the SI and SoC voltage and clock domains, such as phase synchronization circuitry. Phase synchronization circuitry includes a SoC portion and an SI portion, each of which may act as a separate synthesis top-side. The SoC portion is physically located in the SoC domain and the SI portion is physically located in the SI domain. The logic of both the SI and SoC portions utilize resets generated by clock and reset circuitry 230. Thus, the resets generated by the SI 110 may be used by the logic of the automotive SoC 104, which may operate at a lower ASIL than the SI 110, but resets generated by the automotive SoC 104 are not communicated to and may not be used by the SI 110. As a non-limiting example, the phase synchronization circuitry may be implemented as a split first-in-first-out ("fifo"), and the like. The voltage level shifter(s) of domain synchronization circuitry 224 may be substantially identical to voltage level shifter(s) 240 and adjust the voltage of signals transmitted across the SI and SoC voltage domains to enable secure communication of signals across the SI and SoC domains. When access timer 222 indicates that an access by processor 140 has timed out, the request may be removed from domain synchronization circuitry 224 (e.g., taken from the split fifo).

Wenn die Schnittstelle 200A des flüchtigen Speichers entsperrt ist, kann der Prozessor 140 auf den flüchtigen Speicher 126 zugreifen, was den Zugriffszeitgeber 222 startet. Wenn der Zugriffszeitgeber 222 angibt, dass mehr als eine erste vorbestimmte Zeitdauer verstrichen ist und keine Antwort von dem flüchtigen Speicher 126 empfangen wurde, gibt der Prozessor 140 eine Sicherheitsstörung an, verwendet die logische Isolationssteuerung 220, um die Schnittstelle 200A des flüchtigen Speichers zu sperren, sperrt optional beliebige der Schnittstelle(n) 200, die entsperrt sind, und ergreift optional eine oder mehrere Maßnahmen, die dazu konfiguriert sind, die Kraftfahrzeugplattform 100 (siehe 1) in einen sicheren Zustand zurückzuversetzen. Wenn dagegen die Antwort empfangen wird, bevor der Zugriffszeitgeber 222 angibt, dass die erste vorbestimmte Zeitdauer verstrichen ist, setzt sich der Zugriffszeitgeber 222 selbst zurück, schließt der Prozessor 140 den Zugriff ab und sperrt der Prozessor 140 die Schnittstelle 200A des flüchtigen Speichers, nachdem der Zugriff abgeschlossen ist. Die Schnittstelle 200A des flüchtigen Speichers bleibt somit immer dann gesperrt, wenn der Prozessor 140 nicht auf den flüchtigen Speicher 126 zugreift, was dazu beiträgt, die SI 110 vor Störungen und/oder Ausfällen zu schützen, die von dem flüchtigen Speicher 126 zu der Sl 110 gelangen.When the volatile memory interface 200A is unlocked, the processor 140 may access the volatile memory 126, which starts 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 fault, uses the logical isolation controller 220 to lock the volatile memory interface 200A, optionally locks any of the interface(s) 200 that are unlocked, and optionally takes one or more actions configured to lock the automotive platform 100 (see 1 ) to a secure state. Conversely, 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 disables the volatile memory interface 200A after the access is complete. The volatile memory interface 200A thus remains disabled whenever the processor 140 is not accessing the volatile memory 126, which helps protect the SI 110 from faults and/or failures passing from the volatile memory 126 to the SI 110.

Die erste und zweite Steuerbackboneschnittstelle 200B und 200C sind Schnittstellen zwischen dem Prozessor 140 und einem Steuerbackbone 210. Das Steuerbackbone 210 kann als Bus und dergleichen implementiert sein. Die erste Steuerbackboneschnittstelle 200B dient zur Kommunikation von dem Prozessor 140 zu dem Steuerbackbone 210 und die zweite Steuerbackboneschnittstelle 200C dient zur Kommunikation von dem Steuerbackbone 210 zu dem Prozessor 140. Als nicht einschränkendes Beispiel kann der Prozessor 140 über das Steuerbackbone 210 auf mindestens einige der anderen Komponenten 160 (z. B. die Schaltungsanordnung 124, die Mailbox(n) 156 und den nichtflüchtigen Speicher 128) des Kraftfahrzeug-SoC 104 zugreifen.The first and second control backbone interfaces 200B and 200C 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 from the processor 140 to the control backbone 210 and the second control backbone interface 200C is for communication from the control backbone 210 to the processor 140. As a non-limiting example, the processor 140 may access 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 automotive SoC 104 via the control backbone 210.

Die erste Steuerbackboneschnittstelle 200B ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen an das Steuerbackbone 210 zu senden. Die erste Steuerbackboneschnittstelle 200B kann die logische Isolationssteuerung 220, den Zugriffszeitgeber 222, die Domänensynchronisationsschaltungsanordnung 224 und eine Firewall 226 beinhalten. Die logische Isolationssteuerung 220 der ersten Steuerbackboneschnittstelle 200B ist im Wesentlichen identisch mit der logischen Isolationssteuerung 220 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch. Somit ermöglicht die logische Isolationssteuerung 220 der ersten Steuerbackboneschnittstelle 200B dem Prozessor 140, die erste Steuerbackboneschnittstelle 200B zu sperren und zu entsperren. Der Zugriffszeitgeber 222 der ersten Steuerbackboneschnittstelle 200B ermöglicht einen Zeitablauf eines durch den Prozessor 140 initiierten Zugriffsversuchs. Die Domänensynchronisationsschaltungsanordnung 224 der ersten Steuerbackboneschnittstelle 200B ist im Wesentlichen identisch mit der Domänensynchronisationsschaltungsanordnung 224 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch. Die Firewall 226 der ersten Steuerbackboneschnittstelle 200B implementiert eine oder mehrere Sicherheitsregeln und erlaubt oder blockiert jede Kommunikation basierend auf der/den Sicherheitsregel(n).The first control backbone interface 200B enables 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 domain synchronization circuitry 224, and a firewall 226. The logical isolation controller 220 of the first control backbone interface 200B is substantially identical to the logical isolation controller 220 of the volatile memory interface 200A and functions substantially identically. Thus, the logical isolation controller 220 of the first control backbone interface 200B enables the processor 140 to lock and unlock the first control backbone interface 200B. The access timer 222 of the first control backbone interface 200B enables a timeout of an access attempt initiated by the processor 140. The domain synchronization circuitry 224 of the first control backbone interface 200B is substantially identical to the domain synchronization circuitry 224 of the volatile memory interface 200A and functions substantially identically. 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 Steuerbackboneschnittstelle 200C ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen von dem Steuerbackbone 210 zu empfangen. Die zweite Steuerbackboneschnittstelle 200C kann die logische Isolationssteuerung 220, die Domänensynchronisationsschaltungsanordnung 224 und die Firewall 226 beinhalten. Die logische Isolationssteuerung 220 der zweiten Steuerbackboneschnittstelle 200C ist im Wesentlichen identisch mit der logischen Isolationssteuerung 220 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch. Somit ermöglicht die logische Isolationssteuerung 220 der zweiten Steuerbackboneschnittstelle 200C dem Prozessor 140, die zweite Steuerbackboneschnittstelle 200C zu sperren und zu entsperren. Die Domänensynchronisationsschaltungsanordnung 224 der zweiten Steuerbackboneschnittstelle 200C ist im Wesentlichen identisch mit der Domänensynchronisationsschaltungsanordnung 224 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch. Die Firewall 226 der zweiten Steuerbackboneschnittstelle 200C implementiert eine oder mehrere Sicherheitsregeln und erlaubt oder blockiert jede Kommunikation basierend auf der/den Sicherheitsregel(n).The second control backbone interface 200C enables 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 domain synchronization circuitry 224, and the firewall 226. The logical isolation controller 220 of the second control backbone interface 200C is substantially identical to the logical isolation controller 220 of the volatile memory interface 200A and functions substantially identically. Thus, the logical isolation controller 220 of the second control backbone interface 200C enables the processor 140 to lock and unlock the second control backbone interface 200C. The domain synchronization circuitry 224 of the second control backbone interface 200C is substantially identical to the domain synchronization circuitry 224 of the volatile memory interface 200A and functions substantially identically. 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 sicheren Inhalt ist eine Schnittstelle zwischen dem Prozessor 140 und einer Schaltungsanordnung 212 für sicheren Inhalt. Die Schnittstelle 200D für sicheren Inhalt ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen (z. B. sichere und/oder sensible Inhalte) von der Schaltungsanordnung 212 für sicheren Inhalt zu empfangen. Die Schnittstelle 200D für sicheren Inhalt kann die logische Isolationssteuerung 220 und die Domänensynchronisationsschaltungsanordnung 224 beinhalten. Die logische Isolationssteuerung 220 der Schnittstelle 200D für sicheren Inhalt ist im Wesentlichen identisch mit der logischen Isolationssteuerung 220 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch. Somit ermöglicht die logische Isolationssteuerung 220 der Schnittstelle 200D für sicheren Inhalt dem Prozessor 140, die Schnittstelle 200D für sicheren Inhalt zu sperren und zu entsperren. Die Domänensynchronisationsschaltungsanordnung 224 der Schnittstelle 200D für sicheren Inhalt ist im Wesentlichen identisch mit der Domänensynchronisationsschaltungsanordnung 224 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch.Secure content interface 200D is an interface between processor 140 and secure content circuitry 212. Secure content interface 200D enables processor 140 to receive instructions and/or information (e.g., secure and/or sensitive content) from secure content circuitry 212. Secure content interface 200D may include logical isolation controller 220 and domain synchronization circuitry 224. Logical isolation controller 220 of secure content interface 200D is substantially identical to and functions substantially identically to logical isolation controller 220 of volatile memory interface 200A. Thus, logical isolation controller 220 of secure content interface 200D enables processor 140 to lock and unlock secure content interface 200D. The domain synchronization circuitry 224 of the secure content interface 200D is substantially identical to the domain synchronization circuitry 224 of the volatile memory interface 200A and functions substantially identically.

Die Debug-Schnittstelle 200E ist eine Schnittstelle zwischen dem Prozessor 140 und einer Debug-Schaltungsanordnung 214. Die Debug-Schnittstelle 200E ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen von der Debug-Schaltungsanordnung 214 zu empfangen. Die Debug-Schnittstelle 200E kann die logische Isolationssteuerung 220 und die Domänensynchronisationsschaltungsanordnung 224 beinhalten. Die logische Isolationssteuerung 220 der Debug-Schnittstelle 200E ist im Wesentlichen identisch mit der logischen Isolationssteuerung 220 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch. Somit ermöglicht die logische Isolationssteuerung 220 der Debug-Schnittstelle 200E dem Prozessor 140, die Debug-Schnittstelle 200E zu sperren und zu entsperren. Die Domänensynchronisationsschaltungsanordnung 224 der Debug-Schnittstelle 200E ist im Wesentlichen identisch mit der Domänensynchronisationsschaltungsanordnung 224 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch. Wie vorstehend erwähnt, arbeiten die SI 110 und die anderen Komponenten 160 in getrennten Taktdomänen. In einer oder mehreren Ausführungsformen werden keine Signale von einem externen Takt einer oder mehrerer der anderen Komponenten 160 des Kraftfahrzeug-SoC 104, wie der Debug-Schaltungsanordnung 214, in die SI 110 eingespeist. Debug-Funktionen, die durch das Kraftfahrzeug-SoC 104 durchgeführt werden, empfangen das Debug-Taktsignal über die Domänensynchronisationsschaltungsanordnung 224 der Debug-Schnittstelle 200E, die durch das Kraftfahrzeug-SoC 104 durchgeführte Debug-Funktionen unter Verwendung des durch die SI 110 und/oder den zweiten (SI-)Takt 114 generierten Debug-Taktsignals umschaltet oder umwandelt. Da die Debug-Logik nicht verwendet wird, während sich die SI 110 im Einsatzmodus befindet (z. B. wenn das Fahrzeug fährt), beinhaltet die SI 110 ein erstes Taktgate auf dem Debug-Takt, um Beeinträchtigungen zu verhindern, die möglicherweise durch das Debug-Taktsignal verursacht werden könnten. Als nicht einschränkendes Beispiel kann das erste Taktgate eine Komponente der Takt- und Rücksetzschaltungsanordnung 230 sein. Das erste Taktgate kann unter Verwendung eines ersten Konfigurationsbits, das durch den Prozessor 140 gesetzt wird, gesteuert (z. B. selektiv ein- und ausgeschaltet) werden.The debug interface 200E is an interface between the processor 140 and a debug circuitry 214. The debug interface 200E enables the processor 140 to receive instructions and/or information from the debug circuitry 214. The debug interface 200E may include the logical isolation control 220 and the domain synchronization circuitry 224. The logical isolation control 220 of the debug interface 200E is substantially identical to the logical isolation control 220 of the volatile memory interface 200A and functions substantially identically. Thus, the logical isolation control 220 of the debug interface 200E enables the processor 140 to lock and unlock the debug interface 200E. The domain synchronization circuitry 224 of the debug interface 200E is substantially identical to the domain synchronization circuitry 224 of the volatile memory interface 200A and functions substantially identically. As mentioned above, the SI 110 and the other components 160 operate in separate clock domains. In one or more embodiments, no signals from an external clock of one or more of the other components 160 of the automotive SoC 104, such as the debug circuitry 214, are fed to the SI 110. Debug functions performed by the automotive SoC 104 receive the debug clock signal via the domain synchronization circuitry 224 of the debug interface 200E, which switches or converts debug functions performed by the automotive SoC 104 using the debug clock signal generated by the SI 110 and/or the second (SI) clock 114. Since the debug logic is not used while the SI 110 is in use mode (e.g., when the vehicle is driving), the SI 110 includes a first clock gate on the debug clock to prevent interference that could potentially 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 circuitry 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 Testschnittstelle 200F ist eine Schnittstelle zwischen dem Prozessor 140 und einer Testschaltungsanordnung 216. Die Testschnittstelle 200F ermöglicht es dem Prozessor 140, Anweisungen und/oder Informationen von der Testschaltungsanordnung 216 zu empfangen. Die Testschnittstelle 200F kann die logische Isolationssteuerung 220 und die Domänensynchronisationsschaltungsanordnung 224 beinhalten. Die logische Isolationssteuerung 220 der Testschnittstelle 200F ist im Wesentlichen identisch mit der logischen Isolationssteuerung 220 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch. Somit ermöglicht die logische Isolationssteuerung 220 der Testschnittstelle 200F dem Prozessor 140, die Testschnittstelle 200F zu sperren und zu entsperren. Die Domänensynchronisationsschaltungsanordnung 224 der Testschnittstelle 200F ist im Wesentlichen identisch mit der Domänensynchronisationsschaltungsanordnung 224 der Schnittstelle 200A des flüchtigen Speichers und funktioniert im Wesentlichen identisch. Wie vorstehend erwähnt, wird durch diese Konfiguration verhindert, dass externe Signale von einer oder mehreren der anderen Komponenten 160 des Kraftfahrzeug-SoC 104, wie etwa der Testschaltungsanordnung 216, in die SI 110 eingespeist werden. Testfunktionen, die durch das Kraftfahrzeug-SoC 104 durchgeführt werden, empfangen das Testtaktsignal über die Domänensynchronisationsschaltungsanordnung 224 der Debug-Schnittstelle 200E, die durch das Kraftfahrzeug-SoC 104 durchgeführte Testfunktionen unter Verwendung des durch die SI 110 und/oder den zweiten (SI-)Takt 114 generierten Testtaktsignals umschaltet oder umwandelt. Da die Testlogik nicht verwendet wird, während sich die SI 110 im Einsatzmodus befindet (z. B. wenn das Fahrzeug fährt), beinhaltet die SI 110 ein zweites Taktgate auf dem Testtakt, um Beeinträchtigungen zu verhindern, die möglicherweise durch das Testtaktsignal verursacht werden könnten. Als nicht einschränkendes Beispiel kann das zweite Taktgate eine Komponente der Takt- und Rücksetzschaltungsanordnung 230 sein. Das zweite Taktgate kann unter Verwendung eines zweiten Konfigurationsbits, das durch den Prozessor 140 gesetzt wird, gesteuert (z. B. selektiv ein- und ausgeschaltet) werden.The test interface 200F is an interface between the processor 140 and a test circuitry 216. The test interface 200F enables the processor 140 to receive instructions and/or information from the test circuitry 216. The test interface 200F may include the logical isolation controller 220 and the domain synchronization circuitry 224. The logical isolation controller 220 of the test interface 200F is substantially identical to the logical isolation controller 220 of the volatile memory interface 200A and functions substantially identically. Thus, the logical isolation controller 220 of the test interface 200F enables the processor 140 to lock and unlock the test interface 200F. The domain synchronization circuitry 224 of the test interface 200F is substantially identical to the domain synchronization circuitry 224 of the volatile memory interface 200A and functions substantially identically. As mentioned above, this configuration prevents external signals from one or more of the other components 160 of the automotive SoC 104, such as the test circuitry 216, from being injected into the SI 110. Test functions performed by the automotive SoC 104 receive the test clock signal via the domain synchronization circuitry 224 of the debug interface 200E, which switches or converts test functions performed by the automotive SoC 104 using the test clock signal generated by the SI 110 and/or the second (SI) clock 114. Since the test logic is not used while the SI 110 is in deployment mode (e.g., when the vehicle is running), the SI 110 includes a second clock gate on the test clock to prevent interference that could potentially be caused by the test clock signal. As a non-limiting example, the second clock gate may be a component of the clock and reset circuitry 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 aufweisen, einen isolierten oder Kokon-Modus und einen nicht-isolierten Modus. Wenn die SI 110 im Kokon-Modus arbeitet, ist die einzige Information von dem Kraftfahrzeug-SoC 104, die in die SI 110 gelangen darf, eine Störungsinformation, die über die Störungsschnittstelle(n) 172 in die SI 110 gelangt. Auf diese Weise hält der SI-Störungsaggregator 142 einen kumulativen Integrationsstatus des Kraftfahrzeug-SoC 104 und der SI 110 aufrecht. Andererseits können Informationen, wenn die SI 110 im nicht-isolierten Modus arbeitet, über eine oder mehrere der Schnittstelle(n) 200 in die SI 110 gelangen. Ob die SI 110 im Kokon-Modus oder im nicht-isolierten Modus arbeitet, wird zumindest teilweise durch Anweisungen 149, die durch den Prozessor 140 ausgeführt werden, und zumindest teilweise durch die Schnittstelle(en) 200 bestimmt.The SI 110 may have at least two modes of operation, an isolated or cocoon mode and a non-isolated mode. When the SI 110 is operating in cocoon mode, the only information from the automotive SoC 104 that is allowed to enter the SI 110 is fault information that enters the SI 110 via the fault interface(s) 172. In this manner, the SI fault aggregator 142 maintains a cumulative integration status of the automotive SoC 104 and the SI 110. On the other hand, when the SI 110 is operating in non-isolated mode, information may enter the SI 110 via one or more of the interface(s) 200. Whether the SI 110 is operating in cocoon mode or non-isolated mode is determined at least in part by 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 von den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 ausgeht, über eine oder mehrere der Schnittstelle(n) 200 die SI 110 erreicht, beinhaltet jede der Schnittstelle(n) 200 die separate logische Isolationssteuerung 220, die durch den Prozessor 140 selektiv gesperrt und entsperrt wird. Wenn der Sperrmechanismus der logischen Isolationssteuerung 220 durch den Prozessor 140 gesperrt ist, verhindert der Sperrmechanismus jegliche Kommunikation zwischen dem Kraftfahrzeug-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. Somit kann der Prozessor 140 die SI 110 wahlweise in den Kokon-Modus oder den nicht-isolierten Modus versetzen. Wenn alle der Schnittstelle(n) 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, die in dem flüchtigen Speicher 146 (z. B. SRAM), der sich innerhalb der SI 110 befindet, gespeichert sind, aus.To prevent a potential safety-critical issue originating from the other components 160 of the automotive SoC 104 from reaching the SI 110 via one or more of the interface(s) 200, each of the interface(s) 200 includes the separate logical isolation controller 220 that is selectively locked and unlocked by the processor 140. When the locking mechanism of the logical isolation controller 220 is locked by the processor 140, the locking mechanism prevents any communication between the automotive SoC 104 and the SI 110 via the locked interface. On the other hand, the interface can be unlocked by the processor 140 to enable such communication via the unlocked interface. Thus, the processor 140 can selectively place the SI 110 in the cocoon mode or the non-isolated mode. When all of the interface(s) 200 are disabled, the processor 140 cannot access either the volatile memory 126 or the non-volatile memory 128 and executes the instructions 149 stored in the volatile memory 146 (e.g., SRAM) located within the SI 110.

Bezugnehmend nun auf 3 beinhaltet jeder Block eines hierin beschriebenen Verfahrens 300 einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen durch einen Prozessor (z. B. den in den 1, 2 und 4 veranschaulichten Prozessor 140) realisiert werden, der Anweisungen (z. B. die in den 1, 2 und 4 veranschaulichten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 veranschaulichten flüchtigen Speicher 146) gespeichert sind. Das Verfahren 300 kann auch als computerverwendbare Anweisungen dargestellt werden, die auf Computerspeichermedien gespeichert sind. Das Verfahren 300 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 zu einem anderen Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 300 beispielhaft mit Bezug auf die Kraftfahrzeugplattform 100 aus 1 beschrieben. Das Verfahren 300 kann jedoch zusätzlich oder alternativ durch ein System oder eine Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hierin beschriebenen.Referring now to 3 Each block of a method 300 described herein includes a computational process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor (e.g., the processor described in the 1 , 2 and 4 illustrated processor 140) that executes instructions (e.g. those described in the 1 , 2 and 4 instructions 149) stored in a memory (e.g., the memory in the 1 , 2 and 4 illustrated volatile memory 146). The method 300 may also be presented as computer-usable instructions stored on computer storage media. The method 300 may be provided by a standalone application, a service, or a hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. Furthermore, the method 300 is exemplified with reference to the automotive platform 100 of 1 However, the method 300 may additionally or alternatively be performed by a system or combination of systems, including but not limited to those described herein.

3 ist ein Ablaufdiagramm, das das Verfahren 300 für einen Wechsel der Sl 110 zwischen dem Kokon- und Nichtisolationsmodus zeigt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Zur besseren Veranschaulichung wird das Verfahren 300 als durch den Prozessor 140 (siehe 1, 2 und 4) durchgeführt beschrieben. Bezugnehmend auf 3 bestimmt der Prozessor 140 in einem ersten Block 302, dass er mit einer der anderen Komponenten 160 (siehe 1 und 2) des Kraftfahrzeug-SoC 104 kommunizieren muss. Beispielsweise kann diese Kommunikation über die Schnittstelle 200A des flüchtigen Speichers oder die erste Steuerbackboneschnittstelle 200B erfolgen, die es jeweils der SI 110 ermöglichen, eine Kommunikation mit den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 einzuleiten. Alternativ kann diese Kommunikation über die zweite Steuerbackboneschnittstelle 200C, die Schnittstelle 200D für sicheren Inhalt, die Debug-Schnittstelle 200E oder die Testschnittstelle 200F erfolgen, die es jeweils der SI 110 ermöglichen, durch die anderen Komponenten 160 des Kraftfahrzeug-SoC 104 eingeleitete Kommunikationen zu empfangen. Wie vorstehend erwähnt, erfolgt die Kommunikation über die Störungsschnittstelle(n) 172 (siehe 2) unabhängig davon, ob sich die SI 110 im Kokon-Modus oder im Nichtisolationsmodus befindet. 3 is a flow diagram illustrating the method 300 for switching the SI 110 between the cocoon and non-isolation modes, according to some embodiments of the present disclosure. For ease of illustration, the method 300 is illustrated as being performed by the processor 140 (see 1 , 2 and 4 ) described. Referring to 3 the processor 140 determines in a first block 302 that it is communicating with one of the other components 160 (see 1 and 2 ) of the automotive SoC 104. For example, this communication may occur via the volatile memory interface 200A or the first control backbone interface 200B, each of which enables the SI 110 to initiate communication with the other components 160 of the automotive 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 enables the SI 110 to receive communications initiated by the other components 160 of the automotive SoC 104. As mentioned above, the communication occurs via the fault interface(s) 172 (see 2 ) regardless of whether the SI 110 is in cocoon mode or non-isolation mode.

Wenn der Prozessor 140 mit einer konkreten der anderen Komponenten 160 des Kraftfahrzeug-SoC 104 kommunizieren muss, nimmt der Prozessor 140 eine Bestimmung vor, dass die Kommunikation mit der konkreten Komponente sicher ist, bevor er dies versucht. Um diese Bestimmung vorzunehmen, kann der Prozessor 140 in Block 304 den Inhalt der SI-Störungsaggregators 142 überprüfen, der über die Störungsschnittstelle(n) 172 (siehe 2) Störungsinformationen von dem/den SoC-Störungsaggregator(en) 152, die außerhalb der Sl 110 liegen, empfängt. Wie vorstehend erwähnt, sind die Störungsschnittstelle(n) 172 nicht logisch von den SoC-Störungsaggregator(en) 152 isoliert, sondern durchlaufen den/die Spannungspegelschieber 240 oder beinhalten diese, die eine elektrische Isolation zwischen der Sl- und der SoC-Spannungsdomäne bereitstellen.If the processor 140 needs to communicate with a particular one of the other components 160 of the automotive SoC 104, the processor 140 makes a determination that communication with the particular component is safe before attempting to do so. To make this determination, in block 304, the processor 140 may check the contents of the SI fault aggregator 142 provided via the fault interface(s) 172 (see 2 ) receives fault information from the SoC fault aggregator(s) 152 that are external to the SI 110. As mentioned above, the fault interface(s) 172 are not logically isolated from the SoC fault aggregator(s) 152, but pass through or include the voltage level shifter(s) 240 that provide electrical isolation between the SI and SoC voltage domains.

In Entscheidungsblock 306 bestimmt der Prozessor 140, ob im SI-Störungsaggregator 142 Störungen erkannt wurden. Die Entscheidung in Entscheidungsblock 306 lautet „JA“, wenn mindestens eine Störung erkannt wird, was bedeutet, dass eine für eine oder mehrere der anderen Komponenten 160 identifizierte Störung dem SI-Störungsaggregator 142 durch den oder die SoC-Störungsaggregator(en) 152 berichtet wurde. Der Prozessor 140 kann die Störung unter Verwendung der Statusbits 242 innerhalb der SI-Störungsaggregators 142 erkennen. Die Statusbits 242 können so charakterisiert sein, dass sie den Zustand des Kraftfahrzeug-SoC 104 nachverfolgen. Alternativ kann der SI-Störungsaggregator 142 den Prozessor 140 über die Störung informieren, indem er ein Interrupt an den Prozessor 140 sendet. Andernfalls lautet die Entscheidung in Entscheidungsblock 306 „NEIN“, wenn keine Störungen erkannt werden.In decision block 306, the processor 140 determines whether faults have been detected in the SI fault aggregator 142. The decision in decision block 306 is “YES” if at least one fault is detected, meaning that a fault identified for one or more of the other components 160 has been reported to the SI fault aggregator 142 by the SoC fault aggregator(s) 152. The processor 140 may detect the fault using the status bits 242 within the SI fault aggregator 142. The status bits 242 may be characterized to track the state of the automotive SoC 104. Alternatively, the SI fault aggregator 142 may notify the processor 140 of the fault by sending an interrupt to the processor 140. Otherwise, the decision in decision block 306 is “NO” if no faults are detected.

Wenn die Entscheidung in Entscheidungsblock 306 „JA“ lautet, kann der Prozessor 140 in Block 308 eine oder mehrere Korrekturmaßnahmen ergreifen. Die Korrekturmaßnahme(n) können dazu beitragen, das Fahrzeug in einen sicheren Zustand zu versetzen. Als nicht einschränkende Beispiele können derartige Korrekturmaßnahmen Anwenden der Fahrzeugbremsen, Reduzieren der Fahrzeuggeschwindigkeit, Führen des Fahrzeugs bis zum Seitenstreifen der Straße und dergleichen beinhalten. Dann kann der Prozessor 140 zu Block 304 zurückkehren.If the decision in decision block 306 is "YES," the processor 140 may take one or more corrective actions in block 308. The corrective action(s) may help place the vehicle in a safe condition. As non-limiting examples, such corrective actions may include applying the vehicle brakes, reducing the vehicle speed, guiding the vehicle to the shoulder of the road, and the like. The processor 140 may then return to block 304.

Wenn die Entscheidung in Entscheidungsblock 306 „NEIN“ lautet, entsperrt der Prozessor 140 in Block 310 den Sperrmechanismus der logischen Isolationssteuerung 220 einer konkreten der mit der konkreten Komponente verbundenen Schnittstelle(n) 200, wenn der Sperrmechanismus der jeweiligen Schnittstelle gesperrt war. Mit anderen Worten kann der Prozessor 140 bestimmen, dass es sicher ist, über die konkrete Schnittstelle auf die konkrete Komponente des Kraftfahrzeug-SoC 104 zuzugreifen, wenn der SI-Störungsaggregator 142 keine Störungen speichert. Somit entsperrt der Prozessor 140 die konkrete Schnittstelle in Block 310.If the decision in decision block 306 is "NO," in block 310, the processor 140 unlocks the locking mechanism of the logical isolation controller 220 of a particular one of the interface(s) 200 connected to the particular component if the locking mechanism of the respective interface was locked. In other words, the processor 140 may determine that it is safe to access the particular component of the automotive SoC 104 via the particular interface if the SI fault aggregator 142 does not store any faults. Thus, the processor 140 unlocks the particular interface in block 310.

In Block 312 kann der Prozessor 140 dann über die entsperrte konkrete Schnittstelle Kommunikation an die konkrete Komponente senden oder von dieser empfangen, wodurch der Zugriffszeitgeber 222 der konkreten Schnittstelle automatisch gestartet wird. Wenn die konkrete Schnittstelle entsperrt ist, kann der Prozessor 140 einen oder mehrere stark geordnete Zugriffe (jeweils einen) in das Kraftfahrzeug-SoC 104 einleiten. Der Zugriffszeitgeber 222 startet automatisch pro Zugriff. Somit kann der Zugriffszeitgeber 222 mit dem Herunterzählen beginnen, sobald ein konkreter Zugriff durch den Prozessor 140 eingeleitet wird.In block 312, the processor 140 may then send or receive communications to or from the concrete component via the unlocked concrete interface, automatically starting the concrete interface access timer 222. When the concrete interface is unlocked, the processor 140 may initiate one or more highly ordered accesses (one at a time) to the automotive SoC 104. The access timer 222 automatically starts per access. Thus, the access timer 222 may begin counting down as soon as a concrete access is initiated by the processor 140.

In Entscheidungsblock 314 bestimmt der Prozessor 140, ob eine Zeitüberschreitung aufgetreten ist. Die Entscheidung in Entscheidungsblock 314 lautet „JA“, wenn der Zugriffszeitgeber 222 angibt, dass mehr als die erste vorbestimmte Zeitdauer verstrichen ist und keine Antwort von der konkreten Komponente empfangen wurde. Anderenfalls lautet die Entscheidung in Entscheidungsblock 314 „NEIN“, wenn eine Antwort von der konkreten Komponente empfangen wird, bevor der Zugriffszeitgeber 222 angibt, dass mehr als die erste vorbestimmte Zeitdauer verstrichen ist.In decision block 314, processor 140 determines whether a timeout has occurred. The decision in decision block 314 is "YES" if access timer 222 indicates that more than the first predetermined time period has elapsed and no response has been received from the particular component. Otherwise, the decision in decision block 314 is "NO" if a response is received from the particular component before access timer 222 indicates that more than the first predetermined time period has elapsed.

Wenn die Entscheidung in Entscheidungsblock 314 „JA“ lautet, gibt der Prozessor 140 in Block 316 an, dass eine Sicherheitsstörung aufgetreten ist. Dann sperrt der Prozessor 140 in Block 318 den Sperrmechanismus der logischen Isolationssteuerung 220 der konkreten Schnittstelle, sperrt optional den Sperrmechanismus der logischen Isolationssteuerung 220 einer beliebigen der anderen Schnittstelle(n), die entsperrt ist/sind, und ergreift optional eine oder mehrere Maßnahmen, die dazu konfiguriert sind, die Kraftfahrzeugplattform 100 in einen sicheren Zustand zurückzuversetzen.If the decision in decision block 314 is "YES," the processor 140 indicates that a security fault has occurred in block 316. Then, in block 318, the processor 140 disables the locking mechanism of the logical isolation controller 220 of the particular interface, optionally disables the locking mechanism of the logical isolation controller 220 of any of the other interface(s) that are unlocked, and optionally takes one or more actions configured to return the automotive platform 100 to a secure state.

Wenn dagegen die Entscheidung in Entscheidungsblock 314 „NEIN“ lautet, so schließt der Prozessor 140 in Block 320 die Kommunikation ab. Der Zugriffszeitgeber 222 wird automatisch zurückgesetzt. In Block 318 sperrt der Prozessor 140 dann den Sperrmechanismus der konkreten Schnittstelle. Das Verfahren 300 stellt somit sicher, dass die Schnittstelle(en) 200 immer dann gesperrt bleiben, wenn der Prozessor 140 nicht auf eine der anderen Komponenten 160 des Kraftfahrzeug-SoC 104 zugreift. Dann endet das Verfahren 300.If, however, the decision in decision block 314 is "NO," the processor 140 terminates the communication in block 320. The access timer 222 is automatically reset. In block 318, the processor 140 then disables the locking mechanism of the specific interface. The method 300 thus ensures that the interface(s) 200 remain disabled whenever the processor 140 is not accessing one of the other components 160 of the automotive SoC 104. The method 300 then ends.

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 ihren internen flüchtigen Speicher 146 kopiert, wenn das Fahrzeug-SoC 104 gestartet wird. Der Prozessor 140 kann die Anweisungen 149 authentifizieren und validieren, bevor die SI 110 in einen Einsatzmodus eintritt, der den Fahrzyklus des Fahrzeugs freigibt. Die SI 110 kann im Einsatzmodus und entweder im Kokon- oder im Nichtisolationsmodus gleichzeitig arbeiten. Die Befehle 149 verbleiben im flüchtigen Speicher 146, wodurch der Prozessor 140 einen Zugriff auf den gemeinsam genutzten nichtflüchtigen Speicher 128 vermeiden kann. Aus dem gemeinsam genutzten flüchtigen Speicher 126 können unkritische Daten, beispielsweise Anwendungscode, Fusionsdaten und dergleichen, unter Verwendung einer internen Direktspeicherzugriff(direct memory access - „DMA“)-Engine 402 (siehe 4), die in der SI 110 beinhaltet ist, erlangt werden. Die DMA-Engine 402 kann optional eine Komponente des Prozessors 140 sein. Ein Ausfall der DMA-Engine 402 wird sich nicht negativ auf den Prozessor 140 auswirken, da der Prozessor 140 weiterhin die im flüchtigen Speicher 146 gespeicherten Anweisungen 149 ausführt, selbst wenn die DMA-Engine 402 ausfällt, während aus dem gemeinsam genutzten flüchtigen Speicher 126 erlangte Daten auslagert werden.The SI 110 may avoid accessing the shared non-volatile memory 128 by copying the instructions 149 (e.g., critical instructions that place the system in a safe state) from the shared non-volatile memory 128 to its internal volatile memory 146 when the vehicle SoC 104 is started. The processor 140 may authenticate and validate the instructions 149 before the SI 110 enters a deployment mode that releases the vehicle's drive cycle. The SI 110 may operate in deployment mode and either cocoon or non-isolation mode simultaneously. The instructions 149 remain in the volatile memory 146, allowing the processor 140 to avoid accessing the shared non-volatile memory 128. From the shared volatile memory 126 may store non-critical data, such as application code, fusion data, and the like, using an internal direct memory access (“DMA”) engine 402 (see 4 ) included in the SI 110. The DMA engine 402 may optionally be a component of the processor 140. Failure of the DMA engine 402 will not adversely affect the processor 140 because the processor 140 will continue to execute the instructions 149 stored in the volatile memory 146 even if the DMA engine 402 fails while data obtained from the shared volatile memory 126 is being paged out.

4 ist eine Veranschaulichung der Störungsschnittstelle(n) 172 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Bezugnehmend auf 4 können den Logikblöcken LB(1) - LB(N) des Kraftfahrzeug-SoC 104 jeweils erste Störungsaggregatoren 260-1 bis 260-N zugeordnet sein. Die ersten Störungsaggregatoren 260-1 bis 260-N aggregieren Störungen, die jeweils durch die Logikblöcke LB(1) bis LB(N) generiert werden, und übertragen erste aggregierte Störungssignale an die Hilfs-Sicherheitseinheit 122 des Kraftfahrzeug-SoC 104. Die Hilfs-Sicherheitseinheit 122 implementiert den/die zweiten SoC-Störungsaggregator(en) 152, der/die das/die von den ersten Störungsaggregatoren 260-1 bis 260-N empfangene(n) erste(n) aggregierte(n) Störungssignal(e) aggregieren und ein oder mehrere zweite(n) aggregierte(n) Störungssignal(e) an die optionale externe Steuereinheit 106 (siehe 1), soweit vorhanden, übertragen. Wenn die optionale externe Steuereinheit 106 durch das/die zweite(n) aggregierte(n) Störungssignal(e) über eine Störung informiert wird, kann die optionale externe Steuereinheit 106 eine oder mehrere Maßnahmen aus einer Reihe von möglichen Maßnahmen ergreifen. Zuerst kann die optionale externe Steuereinheit 106 die Störung löschen. Zweitens kann die optionale externe Steuereinheit 106 eine Korrekturmaßnahme ergreifen. Drittens kann die optionale externe Steuereinheit 106 ein externes System (z. B. eine oder mehrere externe Mikrosteuerungen, einen oder mehrere externe Agenten und dergleichen) benachrichtigen. Wie bereits erwähnt, kann jedoch bei einigen Ausführungsformen die optionale externe Steuereinheit 106 weggelassen sein. 4 is an illustration of the fault interface(s) 172 according to some embodiments of the present disclosure. Referring to 4 First fault aggregators 260-1 to 260-N may be associated with the logic blocks LB(1) - LB(N) of the motor vehicle SoC 104, respectively. The first fault aggregators 260-1 to 260-N aggregate faults generated by the logic blocks LB(1) to LB(N), respectively, and transmit first aggregated fault signals to the auxiliary safety unit 122 of the motor vehicle SoC 104. The auxiliary safety unit 122 implements the second SoC fault aggregator(s) 152, which aggregate the first aggregated fault signal(s) received from the first fault aggregators 260-1 to 260-N and transmit one or more second aggregated fault signals to the optional external control unit 106 (see 1 ), if present. When the optional external control unit 106 is notified of a fault by the second aggregated fault signal(s), the optional external control unit 106 may take one or more of a number of possible actions. First, the optional external control unit 106 may clear the fault. Second, the optional external control unit 106 may take a corrective action. Third, the optional external control unit 106 may notify an external system (e.g., one or more external microcontrollers, one or more external agents, and the like). However, as previously mentioned, in some embodiments, the optional external control unit 106 may be omitted.

Während, wie vorstehend beschrieben, unter Bezugnahme auf 1 die SI 110 von den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 isoliert ist, muss zumindest eine gewisse Kommunikation zwischen der SI 110 und den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 möglich sein. Insbesondere müssen Störungen, die in den Logikblöcken LB(1) bis LB(N) des Kraftfahrzeug-SoC 104 auftreten, über die Störungsschnittstelle(n) 172 an die SI 110 kommuniziert werden. Ein Verfahren zum Bereitstellen einer derartigen Kommunikation wäre, die ersten Störungsaggregatoren 260-1 bis 260-N (siehe 4) die ersten aggregierten Störungssignale direkt an die SI 110 senden zu lassen. Dies erfordert, dass die Störungsschnittstelle(n) 172 eine separate Übertragungsleitung oder einen separaten Signalleiter zwischen der SI 110 und jedem der ersten Störungsaggregatoren 260-1 bis 260-N beinhaltet, was durch die Isolation der Sl 110 von den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 erschwert ist. Beispielsweise müssten der/die Spannungspegelschieber 240 unter Bezugnahme auf 2 für jeden Signalleiter einen separaten Spannungspegelschieber beinhalten. Je größer die Anzahl der Signalleiter zwischen der SI 110 und den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 ist, desto anfälliger ist die SI 110 ferner gegenüber Störungen, die vom Kraftfahrzeug-SoC 104 ausgehen.While, as described above, with reference to 1 the SI 110 is isolated from the other components 160 of the automotive SoC 104, at least some communication must be possible between the SI 110 and the other components 160 of the automotive SoC 104. In particular, faults occurring in the logic blocks LB(1) to LB(N) of the automotive SoC 104 must be communicated to the SI 110 via the fault interface(s) 172. One method for providing such communication would be to use the first fault aggregators 260-1 to 260-N (see 4 ) to send the first aggregated disturbance signals directly to the SI 110. This requires that the disturbance interface(s) 172 include a separate transmission line or signal conductor between the SI 110 and each of the first disturbance aggregators 260-1 to 260-N, which is complicated by the isolation of the SI 110 from the other components 160 of the automotive SoC 104. For example, the voltage level shifter(s) 240 would have to be connected to the SI 110 via a separate transmission line or signal conductor between the SI 110 and each of the first disturbance aggregators 260-1 to 260-N. 2 include a separate voltage level shifter for each signal conductor. Furthermore, the greater the number of signal conductors between the SI 110 and the other components 160 of the automotive SoC 104, the more susceptible the SI 110 is to interference emanating from the automotive SoC 104.

Stattdessen kann unter Bezugnahme auf 4 jeder der SoC-Störungsaggregator(en) 152 mit der Sl 110 durch drei Signalleiter verbunden sein: (1) einen korrigierten Störungssignalleiter 410; (2) einen unkorrigierten Störungssignalleiter 412; und (3) einen SoC-Störungsaggregatorsignalleiter 414. Diese Anordnung kann es ermöglichen, dass die Störungsschnittstelle(n) 172 Störungen von den Logikblöcken LB(1) bis LB(N) an die SI 110 berichten, ohne dass die Störungsschnittstelle(n) 172 so viele Leiter beinhalten, dass die Leiter elektrische Störungen verursachen, und ohne dass die Störungsschnittstelle(n) 172 so groß werden, dass sie im Kraftfahrzeug-SoC 104 und/oder in der SI 110 eine Überfüllung verursachen. Die Signalleiter 410, 412 und 414 können die Statusbits „BT1“, „BT2“ bzw. „BT3“ setzen, die jeweils nach dem Setzen nachfolgend durch den Prozessor 140 gelöscht werden können.Instead, with reference to 4 each of the SoC disturbance aggregator(s) 152 may be connected to the SI 110 by three signal conductors: (1) a corrected disturbance signal conductor 410; (2) an uncorrected disturbance signal conductor 412; and (3) a SoC disturbance aggregator signal conductor 414. This arrangement may enable the disturbance interface(s) 172 to report disturbances from the logic blocks LB(1) through LB(N) to the SI 110 without the disturbance interface(s) 172 including so many conductors that the conductors cause electrical noise, and without the disturbance interface(s) 172 becoming so large that they cause overcrowding in the automotive SoC 104 and/or the SI 110. The signal conductors 410, 412 and 414 can set the status bits “BT1”, “BT2” and “BT3”, respectively, which can be subsequently cleared by the processor 140 after being set.

Die Mailbox(en) 156 können über einen Mailbox-Interrupt-Signalleiter 416 mit der Interrupt-Steuerung 141 der SI 110 verbunden sein. Die Signalleiter 410-416 können jeweils als Draht, Signalspur und dergleichen implementiert sein.The mailbox(es) 156 may be connected to the interrupt controller 141 of the SI 110 via a mailbox interrupt signal conductor 416. The signal conductors 410-416 may each be implemented as a wire, signal trace, and the like.

5A ist ein Ablaufdiagramm, das ein Verfahren 500 zum Kommunizieren von Störungen an die SI 110 (siehe 1, 2, 4, 8 und 10) zeigt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Bezugnehmend nun auf 5A beinhaltet jeder Block des hierin beschriebenen Verfahrens 500 einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen durch einen Prozessor (z. B. den in 1 und 4 veranschaulichten Prozessor 150) realisiert werden, der im Speicher gespeicherte Anweisungen ausführt. Mindestens Abschnitte des Verfahrens 500 können als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. 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 zu einem anderen Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 500 beispielhaft mit Bezug auf die Kraftfahrzeugplattform 100 aus 1 beschrieben. Das Verfahren 500 kann jedoch zusätzlich oder alternativ von einem System oder einer Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hierin beschriebenen. 5A is a flowchart illustrating a method 500 for communicating faults to the SI 110 (see 1 , 2 , 4 , 8th and 10 ), according to some embodiments of the present disclosure. Referring now to 5A Each block of the method 500 described herein includes a computational process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor (e.g., B. the 1 and 4 illustrated processor 150) that executes instructions stored in memory. At least portions of the method 500 may be embodied as computer-usable instructions stored on computer storage media. The method 500 may be provided by a standalone application, a service, or a hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. Furthermore, the method 500 is exemplified with respect to the automotive platform 100 of 1 However, the method 500 may additionally or alternatively be performed by a system or combination of systems, including but not limited to those described herein.

Zur besseren Veranschaulichung wird das Verfahren 500 als durch einen konkreten der SoC-Störungsaggregator(en) 152 (siehe 1, 2 und 4) durchgeführt beschrieben. Mit anderen Worten kann das Verfahren 500 durch Hardware durchgeführt werden. Bezugnehmend auf 5A empfängt der konkrete SoC-Störungsaggregator in einem ersten Block 502 erste aggregierte Störungssignale von zumindest einem Teil der ersten Störungsaggregatoren 260-1 bis 260-N (siehe 2 und 4).For better illustration, the method 500 is described as being implemented by a specific SoC fault aggregator(s) 152 (see 1 , 2 and 4 ) described. In other words, the method 500 can be performed by hardware. Referring to 5A the specific SoC fault aggregator receives in a first block 502 first aggregated fault signals from at least a portion of the first fault aggregators 260-1 to 260-N (see 2 and 4 ).

In Block 506 aggregiert der konkrete SoC-Störungsaggregator diejenigen der ersten aggregierten Störungssignale, die eine Störung identifizieren, die durch einen Fehler verursacht wurde, der zu einem korrigierten Fehlersignal korrigiert wurde. Dann überträgt der konkrete SoC-Störungsaggregator in Block 508 das korrigierte Fehlersignal über den Leiter 410 für das korrigierte Fehlersignal (siehe 4) an die SI 110 (siehe 1, 2, 4, 8 und 10). In Block 510 sendet der konkrete SoC-Störungsaggregator 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 Hilfs-Sicherungseinheit 122 (siehe 1 und 4) weiterleitet. Jeder Interrupt informiert den Prozessor 150 über den korrigierten Fehler, der dem Interrupt zugeordnet ist.In block 506, the specific SoC fault aggregator aggregates those of the first aggregated fault signals that identify a fault caused by a fault that has been corrected into a corrected fault signal. Then, in block 508, the specific SoC fault aggregator transmits the corrected fault signal over the corrected fault signal conductor 410 (see 4 ) to SI 110 (see 1 , 2 , 4 , 8th and 10 ). In block 510, the specific SoC fault aggregator sends an interrupt to the interrupt controller 154 for each corrected fault (see 1 and 4 ) that sends the interrupt(s) to the processor 150 (see 1 and 4 ) of the auxiliary safety unit 122 (see 1 and 4 ). Each interrupt informs the processor 150 of the corrected error associated with the interrupt.

In Block 512 startet der konkrete SoC-Störungsaggregator einen Zeitgeber 420C für den korrigierten Fehler (siehe 4) für einen ersten im korrigierten Fehlersignal identifizierten korrigierten Fehler.In block 512, the concrete SoC fault aggregator starts a corrected fault timer 420C (see 4 ) for a first corrected error identified in the corrected error signal.

In Entscheidungsblock 514 bestimmt der konkrete SoC-Störungsaggregator, ob der erste korrigierte Fehler aus dem konkreten SoC-Störungsaggregator gelöscht wurde. Die Entscheidung in Entscheidungsblock 514 lautet „JA“, wenn der erste korrigierte Fehler gelöscht wurde, bevor der Zeitgeber 420C für den korrigierten Fehler (siehe 4) angab, dass mehr als eine zweite vorbestimmte Zeitdauer verstrichen ist. Andernfalls lautet die Entscheidung im Entscheidungsblock 514 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 514 „JA“ lautet, ergreift der konkrete SoC-Störungsaggregator in Block 515 keine Maßnahme. Ist dagegen die Entscheidung in Entscheidungsblock 514 „NEIN“, so fährt der konkrete SoC-Störungsaggregator mit Entscheidungsblock 516 fort.In decision block 514, the specific SoC fault aggregator determines whether the first corrected fault was cleared from the specific SoC fault aggregator. The decision in decision block 514 is "YES" if the first corrected fault was cleared before the corrected fault timer 420C (see 4 ) indicated that more than a second predetermined period of time has elapsed. Otherwise, the decision in decision block 514 is "NO." If the decision in decision block 514 is "YES," the specific SoC fault aggregator takes no action in block 515. Conversely, if the decision in decision block 514 is "NO," the specific SoC fault aggregator proceeds to decision block 516.

In Entscheidungsblock 516 bestimmt der Prozessor 150, ob der Zeitgeber 420C für den korrigierten Fehler (siehe 4) angibt, dass mehr als die zweite vorbestimmte Zeitdauer verstrichen ist, d. h. der Zeitgeber 420C für den korrigierten Fehler ausgelaufen oder abgelaufen ist. Die Entscheidung in Entscheidungsblock 516 lautet „JA“, wenn die zweite vorgegebene Zeitdauer verstrichen ist. Andernfalls lautet die Entscheidung in Entscheidungsblock 516 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 516 „JA“ lautet, fährt der konkrete SoC-Störungsaggregator mit Block 518 fort. Andernfalls, wenn die Entscheidung in Entscheidungsblock 516 „NEIN“ lautet, kehrt der konkrete SoC-Störungsaggregator zum Entscheidungsblock 514 zurück, um auf das Löschen des ersten korrigierten Fehlers durch den Prozessor 150 zu warten. Somit überwacht der konkrete SoC-Störungsaggregator weiterhin, ob der erste korrigierte Fehler gelöscht wurde und ob der Zeitgeber 420C für den korrigierten Fehler abgelaufen ist. Wird der erste korrigierte Fehler vor Ablauf des Zeitgebers 420C für den korrigierten Fehler gelöscht, so ergreift der konkrete SoC-Störungsaggregator in Block 515 keine Maßnahme. Wenn andererseits der Zeitgeber 420C für den korrigierten Fehler abläuft, bevor der erste korrigierte Fehler gelöscht wird, so fährt der konkrete SoC-Störungsaggregator mit Block 518 fort. In Block 518 überträgt der konkrete SoC-Störungsaggregator das SoC-Störungsaggregatorsignal über den SoC-Störungsaggregatorsignalleiter 414 (siehe 4) an die SI 110 (siehe 1, 2, 4, 8 und 10).In decision block 516, the processor 150 determines whether the corrected error timer 420C (see 4 ) indicates that more than the second predetermined period of time has elapsed, that is, the corrected fault timer 420C has expired or timed out. The decision in decision block 516 is "YES" if the second predetermined period of time has elapsed. Otherwise, the decision in decision block 516 is "NO". If the decision in decision block 516 is "YES", the specific SoC fault aggregator proceeds to block 518. Otherwise, if the decision in decision block 516 is "NO", the specific SoC fault aggregator returns to decision block 514 to await the clearing of the first corrected fault by the processor 150. Thus, the specific SoC fault aggregator continues to monitor whether the first corrected fault has been cleared and whether the corrected fault timer 420C has expired. If the first corrected fault is cleared before the corrected fault timer 420C expires, the specific SoC fault aggregator takes no action in block 515. On the other hand, if the corrected fault timer 420C expires before the first corrected fault is cleared, the specific SoC fault aggregator proceeds to block 518. In block 518, the specific SoC fault aggregator transmits the SoC fault aggregator signal over the SoC fault aggregator signal conductor 414 (see 4 ) to SI 110 (see 1 , 2 , 4 , 8th and 10 ).

In Block 520 aggregiert der konkrete SoC-Störungsaggregator diejenigen der in Block 502 empfangenen ersten aggregierten Störungssignale, die eine Störung identifizieren, die durch einen Fehler verursacht wurde, der nicht zu einem unkorrigierten Fehlersignal korrigiert wurde. Dann überträgt der konkrete SoC-Störungsaggregator in Block 522 das unkorrigierte Fehlersignal über den Leiter 412 für das unkorrigierte Fehlersignal (siehe 4) an die SI 110 (siehe 1, 2, 4, 8 und 10). In Block 524 sendet der konkrete SoC-Störungsaggregator 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 Hilfs-Sicherungseinheit 122 (siehe 1 und 4) weiterleitet. Jeder Interrupt informiert den Prozessor 150 über den unkorrigierten Fehler, der dem Interrupt zugeordnet ist.In block 520, the specific SoC fault aggregator aggregates those of the first aggregated fault signals received in block 502 that identify a fault caused by a fault that has not been corrected into an uncorrected fault signal. Then, in block 522, the specific SoC fault aggregator transmits the uncorrected fault signal over the uncorrected fault signal conductor 412 (see 4 ) to SI 110 (see 1 , 2 , 4 , 8th and 10 ). In block 524, the specific SoC fault aggregator sends an interrupt to the interrupt controller 154 for each uncorrected fault (see 1 and 4 ) that sends the interrupt(s) to the processor 150 (see 1 and 4 ) of the auxiliary safety unit 122 (please refer 1 and 4 ). Each interrupt informs the processor 150 of the uncorrected error associated with the interrupt.

In Block 526 startet der konkrete SoC-Störungsaggregator einen Zeitgeber 420U für den unkorrigierten Fehler (siehe 4) für einen ersten im unkorrigierten Fehlersignal identifizierten unkorrigierten Fehler.In block 526, the concrete SoC fault aggregator starts an uncorrected fault timer 420U (see 4 ) for a first uncorrected error identified in the uncorrected error signal.

In Entscheidungsblock 528 bestimmt der konkrete SoC-Störungsaggregator, ob der erste unkorrigierte Fehler aus dem konkreten SoC-Störungsaggregator gelöscht wurde. Die Entscheidung in Entscheidungsblock 528 lautet „JA“, wenn der erste unkorrigierte Fehler gelöscht wurde, bevor der Zeitgeber 420U für den unkorrigierten Fehler (siehe 4) angab, dass mehr als eine dritte vorbestimmte Zeitdauer verstrichen ist. Andernfalls lautet die Entscheidung in Entscheidungsblock 528 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 528 „JA“ lautet, ergreift der konkrete SoC-Störungsaggregator in Block 529 keine Maßnahme. Wenn die Entscheidung in Entscheidungsblock 528 „NEIN“ lautet, fährt der konkrete SoC-Störungsaggregator mit Entscheidungsblock 530 fort.In decision block 528, the specific SoC fault aggregator determines whether the first uncorrected fault was cleared from the specific SoC fault aggregator. The decision in decision block 528 is "YES" if the first uncorrected fault was cleared before the uncorrected fault timer 420U (see 4 ) indicated that more than a third predetermined period of time has elapsed. Otherwise, the decision in decision block 528 is "NO." If the decision in decision block 528 is "YES," the specific SoC fault aggregator takes no action in block 529. If the decision in decision block 528 is "NO," the specific SoC fault aggregator proceeds to decision block 530.

In Entscheidungsblock 530 bestimmt der Prozessor 150, ob der Zeitgeber 420U für den unkorrigierten Fehler angibt, dass mehr als die dritte vorbestimmte Zeitdauer verstrichen ist, was bedeutet, dass der Zeitgeber 420U für den unkorrigierten Fehler (siehe 4) ausgelaufen oder abgelaufen ist. Die Entscheidung in Entscheidungsblock 530 lautet „JA“, wenn die dritte vorgegebene Zeitdauer verstrichen ist. Andernfalls lautet die Entscheidung in Entscheidungsblock 530 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 530 „JA“ lautet, fährt der konkrete SoC-Störungsaggregator mit Block 532 fort. Andernfalls, wenn die Entscheidung in Entscheidungsblock 530 „NEIN“ lautet, kehrt der konkrete SoC-Störungsaggregator zum Entscheidungsblock 528 zurück, um auf das Löschen des ersten unkorrigierten Fehlers durch den Prozessor 150 zu warten. Somit überwacht der konkrete SoC-Störungsaggregator weiterhin, ob der erste unkorrigierte Fehler gelöscht wurde und ob der Zeitgeber 420U für den unkorrigierten Fehler abgelaufen ist. Wird der erste unkorrigierte Fehler vor Ablauf des Zeitgebers 420U für den unkorrigierten Fehler gelöscht, so ergreift der konkrete SoC-Störungsaggregator in Block 529 keine Maßnahme. Wenn andererseits der Zeitgeber 420U für den unkorrigierten Fehler abläuft, bevor der erste unkorrigierte Fehler gelöscht wird, so fährt der konkrete SoC-Störungsaggregator mit Block 532 fort. In Block 532 überträgt der konkrete SoC-Störungsaggregator das SoC-Störungsaggregatorsignal über den SoC-Störungsaggregatorsignalleiter 414 (siehe 4) an die SI 110 (siehe 1, 2, 4, 8 und 10). An dieser Stelle endet das Verfahren 500.In decision block 530, the processor 150 determines whether the uncorrected error timer 420U indicates that more than the third predetermined time period has elapsed, which means that the uncorrected error timer 420U (see 4 ) has expired or timed out. The decision in decision block 530 is YES if the third predetermined time period has elapsed. Otherwise, the decision in decision block 530 is NO. If the decision in decision block 530 is YES, the specific SoC fault aggregator proceeds to block 532. Otherwise, if the decision in decision block 530 is NO, the specific SoC fault aggregator returns to decision block 528 to wait for the processor 150 to clear the first uncorrected fault. Thus, the specific SoC fault aggregator continues to monitor whether the first uncorrected fault has been cleared and whether the uncorrected fault timer 420U has expired. If the first uncorrected fault is cleared before the uncorrected fault timer 420U expires, the specific SoC fault aggregator takes no action in block 529. On the other hand, if the uncorrected error timer 420U expires before the first uncorrected error is cleared, the specific SoC fault aggregator proceeds to block 532. In block 532, the specific SoC fault aggregator transmits the SoC fault aggregator signal over the SoC fault aggregator signal conductor 414 (see 4 ) to SI 110 (see 1 , 2 , 4 , 8th and 10 ). At this point, procedure 500 ends.

5B ein Ablaufdiagramm, das ein Verfahren 540 zeigt, das der Prozessor 150 (siehe 1 und 4) verwenden kann, um von dem/den SoC-Störungsaggregator(en) 152 (siehe 1, 2 und 4) empfangene Interrupts zu verarbeiten, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Bezugnehmend nun auf 5B beinhaltet jeder Block des hierin beschriebenen Verfahrens 540 einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen durch einen Prozessor (z. B. den Prozessor 150) realisiert werden, der im Speicher gespeicherte Anweisungen ausführt. Mindestens Abschnitte des Verfahrens 540 können als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. Das Verfahren 540 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 zu einem anderen Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 540 beispielhaft mit Bezug auf die Kraftfahrzeugplattform 100 aus 1 beschrieben. Das Verfahren 540 kann jedoch zusätzlich oder alternativ von einem System oder einer Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hierin beschriebenen. 5B a flowchart showing a method 540 that the processor 150 (see 1 and 4 ) to receive from the SoC fault aggregator(s) 152 (see 1 , 2 and 4 ) to process interrupts received, according to some embodiments of the present disclosure. Referring now to 5B Each block of the method 540 described herein includes a computational process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be implemented 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. The method 540 may be provided by a standalone application, service, or hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. Furthermore, the method 540 is described by way of example with respect to the automotive platform 100 of 1 However, the method 540 may additionally or alternatively be performed by a system or combination of systems, including but not limited to those described herein.

Zur besseren Veranschaulichung wird das Verfahren 540 als durch den Prozessor 150 (siehe 1 und 4) durchgeführt beschrieben. Unter Bezugnahme auf 5B empfängt der Prozessor 150 in einem ersten Block 541 einen konkreten Interrupt von einem konkreten des/der SoC-Störungsaggregator(en) 152. Dann, in Block 542, sichtet der Prozessor 150 einen oder mehrere Fehler, die in dem konkreten Interrupt identifiziert wurden, und kann eine oder mehrere Korrekturmaßnahmen ergreifen, um den/die Fehler zu beheben.For better illustration, the method 540 is described as being performed by the processor 150 (see 1 and 4 ) is described. With reference to 5B in a first block 541, the processor 150 receives a particular interrupt from a particular one of the SoC fault aggregator(s) 152. Then, in block 542, the processor 150 reviews one or more faults identified in the particular interrupt and may take one or more corrective actions to resolve the fault(s).

Wenn ein Problem auftritt, während der Prozessor 150 den/die Fehler sichtet und/oder die Korrekturmaßnahme(n) ergreift, ist der Prozessor 150 möglicherweise nicht in der Lage, die Verarbeitung des konkreten Interrupts fortzusetzen. Wenn dies geschieht, ist die Entscheidung in Entscheidungsblock 543 „JA“, und bei Block 544 ergreift der Prozessor 150 keine weitere Maßnahme bezüglich des konkreten Interrupts. Wenn andererseits der Prozessor 150 in der Lage, den jeweiligen Interrupt zu sichten und gegebenenfalls die Korrekturmaßnahme(n) zu ergreifen, lautet die Entscheidung in Entscheidungsblock 543 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 543 „NEIN“ ist, schreibt der Prozessor 150 in Block 545 Informationen betreffend die konkreten Interrupts in die Mailbox(en) 156, die durch den Prozessor 140 gelesen werden können. Als nächstes sendet der Prozessor 150 in Block 546 über den Mailbox-Interrupt-Signalleiter 416 einen Mailbox-Interrupt an die Interrupt-Steuerung 141. Der Mailbox-Interrupt gibt einen Schweregrad des Fehlers an, der in dem in Block 541 empfangenen Interrupt identifiziert wurde.If a problem occurs while the processor 150 is reviewing the error(s) and/or taking the corrective action(s), the processor 150 may not be able to continue processing the particular interrupt. If this occurs, the decision in decision block 543 is "YES" and at block 544 the processor 150 takes no further action with respect to the particular interrupt. On the other hand, if the processor 150 is able to review the particular interrupt and take the corrective action(s) if necessary, the decision in decision block 543 is "NO". If the decision If the decision in decision block 543 is "NO," in block 545, the processor 150 writes information regarding the particular interrupts to the mailbox(es) 156 that can be read by the processor 140. Next, in block 546, the processor 150 sends a mailbox interrupt to the interrupt controller 141 via the mailbox interrupt signal conductor 416. The mailbox interrupt indicates a severity level of the error identified in the interrupt received in block 541.

Dann bestimmt der Prozessor 150 in Entscheidungsblock 547, ob der Prozessor 150 den Fehler löschen soll, für den der konkrete Interrupt von dem konkreten SoC-Störungsaggregator generiert wurde. Die Entscheidung in Entscheidungsblock 547 lautet „JA“, wenn der Prozessor 150 entscheidet, den Fehler zu löschen. Andernfalls lautet die Entscheidung in Entscheidungsblock 547 „NEIN“. Die Entscheidung in Entscheidungsblock 547 kann „JA“ lauten, wenn die durch den Prozessor 150 ergriffene(n) Korrekturmaßnahme(n) in der Lage waren, den Fehler zu beheben, oder die Störung durch einen korrigierten Fehler generiert wurde (z. B. einen Fehler, der durch einen der Logikblöcke LB(1) - LB(N) korrigiert wurde). Als weiteres nicht einschränkenden Beispiel kann die Entscheidung in Entscheidungsblock 547 „JA“ lauten, wenn der Prozessor 150 von dem Prozessor 140 einen Mailbox-Interrupt empfängt, der angibt, dass der Prozessor 140 den Fehler gelöscht hat. Wenn die Entscheidung in Entscheidungsblock 547 „NEIN“ ist, ergreift der Prozessor 150 in Block 548 keine weitere Maßnahme bezüglich des konkreten Interrupts. Wenn andererseits die Entscheidung in Entscheidungsblock 547 „JA“ lautet, löscht der Prozessor 150 in Block 549 die Störung aus dem jeweiligen SoC-Störungsaggregator. Der Prozessor 150 kann der Prozessor 140 darüber informieren, dass die Störung aus dem konkreten SoC-Störungsaggregator gelöscht wurde. Dann endet das Verfahren 540.Then, in decision block 547, the processor 150 determines whether the processor 150 should clear the fault for which the particular interrupt was generated by the particular SoC fault aggregator. The decision in decision block 547 is "YES" if the processor 150 decides to clear the fault. Otherwise, the decision in decision block 547 is "NO". The decision in decision block 547 may be "YES" if the corrective action(s) taken by the processor 150 were able to correct the fault or the fault was generated by a corrected fault (e.g., a fault corrected by one of the logic blocks LB(1) - LB(N)). As another non-limiting example, the decision in decision block 547 may be "YES" if the processor 150 receives a mailbox interrupt from the processor 140 indicating that the processor 140 has cleared the fault. If the decision in decision block 547 is "NO," the processor 150 takes no further action with respect to the particular interrupt in block 548. On the other hand, if the decision in decision block 547 is "YES," the processor 150 deletes the fault from the particular SoC fault aggregator in block 549. The processor 150 may inform the processor 140 that the fault has been deleted from the particular SoC fault aggregator. Then, the method 540 ends.

5C ein Ablaufdiagramm, das ein Verfahren 550 zeigt, das die SI 110 (siehe 1, 2, 4, 8 und 10) verwenden kann, um die korrigierten und unkorrigierten Fehlersignale zu verarbeiten, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Bezugnehmend nun auf 5C beinhaltet jeder Block des hierin beschriebenen Verfahrens 550 einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen durch einen Prozessor (z. B. den in den 1, 2 und 4 veranschaulichten Prozessor 140) realisiert werden, der Anweisungen (z. B. die in den 1, 2 und 4 veranschaulichten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 veranschaulichten flüchtigen Speicher 146) gespeichert sind. Mindestens Abschnitte des Verfahrens 550 können als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. Das Verfahren 550 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 zu einem anderen Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 550 beispielhaft mit Bezug auf die Kraftfahrzeugplattform 100 aus 1 beschrieben. Das Verfahren 550 kann jedoch zusätzlich oder alternativ von einem System oder einer Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hierin beschriebenen. 5C a flow chart showing a method 550 that implements SI 110 (see 1 , 2 , 4 , 8th and 10 ) to process the corrected and uncorrected error signals, according to some embodiments of the present disclosure. Referring now to 5C Each block of the method 550 described herein includes a computational process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor (e.g., the processor described in the 1 , 2 and 4 illustrated processor 140) that executes instructions (e.g. those described in the 1 , 2 and 4 instructions 149) stored in a memory (e.g., the memory in the 1 , 2 and 4 illustrated volatile memory 146). At least portions of the method 550 may be embodied as computer-usable instructions stored on computer storage media. The method 550 may be provided by a standalone application, a service, or a hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. Moreover, the method 550 is exemplary described with reference to the automotive platform 100 of 1 However, the method 550 may additionally or alternatively be performed by a system or combination of systems, including but not limited to those described herein.

Zur besseren Veranschaulichung wird das Verfahren 550 als durch den SI-Störungsaggregator 142 (siehe 1, 2 und 4) und den Prozessor 140 (siehe 1, 2 und 4) durchgeführt beschrieben. Unter Bezugnahme auf 5C empfängt der SI-Störungsaggregator 142 der SI 110 (siehe 1, 2, 4, 8 und 10) in einem ersten Block 552 das korrigierte Fehlersignal, das das Statusbit „BT1“ setzt, und/oder das unkorrigierte Fehlersignal, das das Statusbit „BT2“ setzt. Wenn der SI-Störungsaggregator 142 das korrigierte Fehlersignal auf dem Leiter 410 für das korrigierte Fehlersignal empfängt, sendet der SI-Störungsaggregator 142 in Block 554 einen Interrupt an die Interrupt-Steuerung 141 (siehe 1, 2 und 4) des Prozessors 140. Dieser Interrupt informiert den Prozessor 140 über den/die korrigierten Fehler.For better illustration, the method 550 is described as being implemented by the SI disturbance aggregator 142 (see 1 , 2 and 4 ) and the processor 140 (see 1 , 2 and 4 ) is described. With reference to 5C the SI disturbance aggregator 142 of the SI 110 receives (see 1 , 2 , 4 , 8th and 10 ) in a first block 552 the corrected error signal setting the status bit "BT1" and/or the uncorrected error signal setting the status bit "BT2". When the SI fault aggregator 142 receives the corrected error signal on the corrected error signal conductor 410, the SI fault 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 of the corrected error(s).

In Entscheidungsblock 556 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 wurde. Wenn der Mailbox-Interrupt empfangen wird, gibt der Mailbox-Interrupt den Schweregrad des korrigierten Fehlers an. Die Entscheidung in Entscheidungsblock 556 lautet „JA“, wenn der Prozessor 140 den Mailbox-Interrupt empfangen hat. Andernfalls lautet die Entscheidung in Entscheidungsblock 556 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 556 „NEIN“ lautet, wartet der Prozessor 140 in Block 558 entweder auf den Empfang des Mailbox-Interrupts oder des SoC-Störungsaggregatorsignals. Wenn die Entscheidung in Entscheidungsblock 556 „JA“ lautet, fährt der Prozessor 140 mit Entscheidungsblock 560 fort.In decision block 556, the processor 140 determines (see 1 , 2 and 4 ) whether a mailbox interrupt from the processor 150 (see 1 and 4 ) was received over the mailbox interrupt signal conductor 416. When the mailbox interrupt is received, the mailbox interrupt indicates the severity of the error being corrected. The decision in decision block 556 is YES if the processor 140 received the mailbox interrupt. Otherwise, the decision in decision block 556 is NO. If the decision in decision block 556 is NO, the processor 140 waits to receive either the mailbox interrupt or the SoC fault aggregator signal in block 558. If the decision in decision block 556 is YES, the processor 140 proceeds to decision block 560.

In Entscheidungsblock 560 entscheidet der Prozessor 140 (siehe 1, 2 und 4), ob er die Mailbox(en) 156 liest. Diese Entscheidung kann zumindest teilweise auf dem Schweregrad des korrigierten Fehlers basieren, der dem Prozessor 140 durch den Mailbox-Interrupt kommuniziert wurde. Beispielsweise kann der Prozessor 140 entscheiden, Mailbox(en) 156 nicht zu lesen, wenn der Schweregrad des korrigierten Fehlers einen Schwellenwert (z. B. 7) erreicht oder überschreitet, und kann entscheiden, Mailbox(en) 156 zu lesen, wenn der Schweregrad des/der korrigierten Fehler(s) unter dem Schwellenwert liegt. Wenn die Entscheidung in Entscheidungsblock 560 „JA“ lautet, liest der Prozessor 140 in Block 562 die Mailbox(en) 156. Dann fährt der Prozessor 140 mit Block 564 fort, bei dem der Prozessor 140 den korrigierten Fehler löscht, beispielsweise durch Aufheben des Setzens des Statusbits „BT1“. Wenn die Entscheidung in Entscheidungsblock 560 „NEIN“ ist, fährt der Prozessor 140 mit Block 564 fort vor und löscht den korrigierten Fehler, beispielsweise durch Aufheben des Setzens des Statusbits „BT1“. Der Prozessor 140 kann auf eine Benachrichtigung von dem Prozessor 150 warten, dass die dem korrigierten Fehler entsprechende Störung aus dem konkreten SoC-Störungsaggregator gelöscht wurde, bevor der Prozessor 140 den korrigierten Fehler aus dem SI-Störungsaggregator 142 löscht. Da der Fehler jedoch korrigiert wurde, kann der Prozessor 140 in einigen Ausführungsformen den korrigierten Fehler einfach löschen, ohne zuerst eine solche Benachrichtigung zu empfangen.In decision block 560, processor 140 decides (see 1 , 2 and 4 ) whether to read the mailbox(es) 156. This decision may be based at least in part on the severity of the corrected error communicated to the processor 140 through the mailbox interrupt. For example, the Processor 140 may decide not to read mailbox(es) 156 if the severity of the corrected error meets or exceeds a threshold (e.g., 7), and may decide to read mailbox(es) 156 if the severity of the corrected error(s) is below the threshold. If the decision in decision block 560 is YES, processor 140 reads mailbox(es) 156 in block 562. Then, processor 140 proceeds to block 564, where processor 140 clears the corrected error, for example, by unsetting status bit BT1. If the decision in decision block 560 is NO, processor 140 proceeds to block 564 and clears the corrected error, for example, by unsetting status bit BT1. The processor 140 may wait for a notification from the processor 150 that the fault corresponding to the corrected fault has been deleted from the particular SoC fault aggregator before the processor 140 deletes the corrected fault from the SI fault aggregator 142. However, since the fault has been corrected, in some embodiments the processor 140 may simply delete the corrected fault without first receiving such a notification.

Wenn der SI-Störungsaggregator 142 das unkorrigierte Fehlersignal auf dem Leiter 412 für das unkorrigierte Fehlersignal empfängt, sendet der SI-Störungsaggregator 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 fault aggregator 142 receives the uncorrected fault signal on the uncorrected fault signal conductor 412, the SI fault aggregator 142 sends an interrupt to the interrupt controller 141 in block 566 (see 1 , 2 and 4 ) of the processor 140. This interrupt informs the processor 140 of the uncorrected error(s).

In Entscheidungsblock 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 wurde. Wenn der Mailbox-Interrupt empfangen wird, gibt der Mailbox-Interrupt den Schweregrad des unkorrigierten Fehlers an. Die Entscheidung in Entscheidungsblock 568 lautet „JA“, wenn der Prozessor 140 den Mailbox-Interrupt empfangen hat. Andernfalls lautet die Entscheidung im Entscheidungsblock 568 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 568 „NEIN“ lautet, wartet der Prozessor 140 in Block 558 entweder auf den Empfang des Mailbox-Interrupts oder des SoC-Störungsaggregatorsignals. Wenn die Entscheidung in Entscheidungsblock 568 „JA“ lautet, fährt der Prozessor 140 mit Entscheidungsblock 570 fort.In decision block 568, the processor 140 determines (see 1 , 2 and 4 ) whether a mailbox interrupt from the processor 150 (see 1 and 4 ) was received over the mailbox interrupt signal conductor 416. When the mailbox interrupt is received, the mailbox interrupt indicates the severity of the uncorrected error. The decision in decision block 568 is YES if the processor 140 received the mailbox interrupt. Otherwise, the decision in decision block 568 is NO. If the decision in decision block 568 is NO, the processor 140 waits to receive either the mailbox interrupt or the SoC fault aggregator signal in block 558. If the decision in decision block 568 is YES, the processor 140 proceeds to decision block 570.

In Entscheidungsblock 570 entscheidet der Prozessor 140 (siehe 1, 2 und 4), ob er die Mailbox(en) 156 liest. Diese Entscheidung kann zumindest teilweise auf dem Schweregrad des unkorrigierten Fehlers basieren. Beispielsweise kann der Prozessor 140 entscheiden, Mailbox(en) 156 nicht zu lesen, wenn der Schweregrad des/der unkorrigierten Fehler(s) einen Schwellenwert (z. B. 7) erreicht oder überschreitet, und kann entscheiden, Mailbox(en) 156 zu lesen, wenn der Schweregrad des/der korrigierten Fehler(s) unter dem Schwellenwert liegt. Wenn die Entscheidung in Entscheidungsblock 570 „JA“ lautet, liest der Prozessor 140 in Block 572 die Mailbox(en) 156. Dann fährt der Prozessor 140 mit Entscheidungsblock 573 fort. Wenn die Entscheidung in Entscheidungsblock 570 „NEIN“ lautet, fährt der Prozessor 140 mit Block 573 fort.In decision block 570, processor 140 decides (see 1 , 2 and 4 ) whether to read the mailbox(es) 156. This decision may be based at least in part on the severity of the uncorrected error. For example, the processor 140 may decide not to read mailbox(es) 156 if the severity of the uncorrected error(s) meets or exceeds a threshold (e.g., 7), and may decide to read mailbox(es) 156 if the severity of the corrected error(s) is below the threshold. If the decision in decision block 570 is YES, the processor 140 reads the mailbox(es) 156 in block 572. The processor 140 then proceeds to decision block 573. If the decision in decision block 570 is NO, the processor 140 proceeds to block 573.

In Entscheidungsblock 573 entscheidet der Prozessor 140, ob er eine oder mehrere Korrekturmaßnahmen ergreift. Wenn die Entscheidung in Entscheidungsblock 573 „JA“ lautet, ergreift der Prozessor 140 in Block 574 die Korrekturmaßnahme(n), wie etwa das Anwenden der Fahrzeugbremsen. Dann fährt der Prozessor 140 mit Entscheidungsblock 575 fort.In decision block 573, the processor 140 determines whether to take one or more corrective actions. If the decision in decision block 573 is "YES," the processor 140 takes the corrective action(s), such as applying the vehicle brakes, in block 574. The processor 140 then proceeds to decision block 575.

Wenn die Entscheidung in Entscheidungsblock 573 „NEIN“ lautet, fährt der Prozessor 140 mit Block 575 fort. In Entscheidungsblock 575 entscheidet der Prozessor 140, ob er das externe System 404 benachrichtigt. Wenn die Entscheidung in Entscheidungsblock 575 „JA“ lautet, benachrichtigt der Prozessor 140 das externe System 404 in Block 576 und fährt mit Block 578 fort. Wenn die Entscheidung in Entscheidungsblock 575 „NEIN“ lautet, fährt der Prozessor 140 mit Block 578 fort.If the decision in decision block 573 is "NO," the processor 140 proceeds to block 575. In decision block 575, the processor 140 decides whether to notify the external system 404. If the decision in decision block 575 is "YES," the processor 140 notifies the external system 404 in block 576 and proceeds to block 578. If the decision in decision 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 Aufheben des Setzens des Statusbits „BT2“. Optional kann der Prozessor 140 Störungsinformationen in die Mailbox(en) 156 schreiben. Der Prozessor 140 kann auf eine Benachrichtigung von dem Prozessor 150 warten, dass die dem unkorrigierten Fehler entsprechende Störung aus dem konkreten SoC-Störungsaggregator gelöscht wurde, bevor der Prozessor 140 den unkorrigierten Fehler aus dem SI-Störungsaggregator 142 löscht. Dann endet das Verfahren 550. Der Mailbox-Interrupt wird durch den Prozessor 150 empfangen und kann in Entscheidungsblock 547 (siehe 5B) verwendet werden, wenn entschieden wird, ob der Prozessor 150 die Störung löschen soll, die dem unkorrigierten Fehler entspricht. Der Prozessor 150 kann optional die Störungsinformationen lesen, die durch den Prozessor 140 in die Mailbox(en) 156 geschrieben wurden, bevor er diese Entscheidung 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 unsettling the status bit “BT2”. Optionally, the processor 140 may write fault information to the mailbox(es) 156. The processor 140 may wait for a notification from the processor 150 that the fault corresponding to the uncorrected error has been cleared from the specific SoC fault aggregator before the processor 140 clears the uncorrected error from the SI fault aggregator 142. Then, the method 550 ends. The mailbox interrupt is received by the processor 150 and may be processed in decision block 547 (see 5B) used when deciding whether the processor 150 should clear the fault corresponding to the uncorrected error. The processor 150 may optionally read the fault information written by the processor 140 to the mailbox(es) 156 before making this decision.

5D ist ein Ablaufdiagramm, das ein Verfahren 580 zeigt, das die Sl 110 (siehe 1, 2, 4, 8 und 10) verwenden kann, um ein SoC-Störungsaggregatorsignal zu verarbeiten, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Bezugnehmend nun auf 5D beinhaltet jeder Block des hierin beschriebenen Verfahrens 580 einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen durch einen Prozessor (z. B. den in den 1, 2 und 4 veranschaulichten Prozessor 140) realisiert werden, der Anweisungen (z. B. die in den 1, 2 und 4 veranschaulichten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 veranschaulichten flüchtigen Speicher 146) gespeichert sind. Mindestens Abschnitte des Verfahrens 580 können als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. Das Verfahren 580 kann durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder einen Plug-in zu einem anderen Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 580 beispielhaft mit Bezug auf die Kraftfahrzeugplattform 100 aus 1 beschrieben. Das Verfahren 580 kann jedoch zusätzlich oder alternativ von einem System oder einer Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hierin beschriebenen. 5D is a flow chart showing a method 580 that implements the Sl 110 (see 1 , 2 , 4 , 8th and 10 ) to process a SoC fault aggregator signal, according to some embodiments of the present disclosure. Referring now to 5D Each block of the method 580 described herein includes a computational process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor (e.g., the processor described in the 1 , 2 and 4 illustrated processor 140) that executes instructions (e.g. those described in the 1 , 2 and 4 instructions 149) stored in a memory (e.g., the memory in the 1 , 2 and 4 illustrated volatile memory 146). At least portions of the method 580 may be embodied as computer-usable instructions stored on computer storage media. The method 580 may be provided by a standalone application, a service, or a hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. Moreover, the method 580 is exemplary described with reference to the automotive platform 100 of 1 However, the method 580 may additionally or alternatively be performed by a system or combination of systems, including but not limited to those described herein.

Zur besseren Veranschaulichung wird das Verfahren 580 als durch den SI-Störungsaggregator 142 (siehe 1, 2 und 4), den Prozessor 140 (siehe 1, 2 und 4) und eine SoC-Fehlerbehandlungsschaltungsanordnung 422 (siehe 4) durchgeführt beschrieben. Die SoC-Fehlerbehandlungsschaltungsanordnung 422 kann als eine Komponente des SI-Störungsaggregators 142 implementiert sein. Unter Bezugnahme auf 5D empfängt der SI-Störungsaggregator 142 (siehe 1, 2 und 4) in einem ersten Block 582 das SoC-Störungsaggregatorsignal, das das Statusbit „BT3“ setzt.For better illustration, the method 580 is described as being implemented by the SI disturbance aggregator 142 (see 1 , 2 and 4 ), the processor 140 (see 1 , 2 and 4 ) and a SoC error handling circuitry 422 (see 4 ) is described. The SoC fault handling circuitry 422 may be implemented as a component of the SI fault aggregator 142. Referring to 5D The SI disturbance aggregator 142 receives (see 1 , 2 and 4 ) in a first block 582 the SoC fault aggregator signal which sets the status bit “BT3”.

Wie durch einen Pfeil mit gestrichelter Linie in 5D gezeigt, kann, wenn der SI-Störungsaggregator 142 (siehe 1, 2 und 4) das SoC-Störungsaggregatorsignal empfängt, die SoC-Fehlerbehandlungsschaltungsanordnung 422 (siehe 4) der SI 110 automatisch zu Block 584 fortschreiten und automatisch ein SoC-Fehlersignal, das einen SoC-Fehler beinhaltet, über die Verbindung 406 (siehe 4) an das externe System 404 (siehe 4) senden. Alternativ kann die SoC-Fehlerbehandlungsschaltungsanordnung 422 zu Block 586 fortschreiten und einen SoC-Störungszeitgeber 424 (siehe 4) starten. Der SoC-Störungszeitgeber 424 kann eine Verzögerung zwischen dem Empfangen des SoC-Störungsaggregatorsignals und dem Benachrichtigen des externen Systems 404 einführen. Während der SoC-Störungszeitgeber 424 läuft, kann der Prozessor 140 eine oder mehrere Korrekturmaßnahmen ergreifen. Wenn die Korrekturmaßnahme(n) erfolgreich sind, kann der Prozessor 140 den/die unkorrigierten Fehler durch Aufheben des Setzens des Statusbits „BT2“ und den SoC-Störungsaggregatorfehler durch Aufheben des Setzens des Statusbits „BT3“ löschen. Das Löschen des SoC-Störungsaggregatorfehlers stoppt den SoC-Störungszeitgeber 424. Der Prozessor 140 kann auf eine Benachrichtigung von dem Prozessor 150 warten, dass die dem/den unkorrigierten Fehler(n) entsprechende(n) Störung(en) aus dem konkreten SoC-Störungsaggregator gelöscht wurde(n), bevor der Prozessor 140 den/die unkorrigierten Fehler aus dem SI-Störungsaggregator 142 löscht.As indicated by an arrow with a dashed line in 5D shown, if the SI disturbance aggregator 142 (see 1 , 2 and 4 ) receives the SoC fault aggregator signal, the SoC fault handling circuitry 422 (see 4 ) the SI 110 will automatically proceed to block 584 and automatically transmit a SoC error signal containing a SoC error via connection 406 (see 4 ) to the external system 404 (see 4 ). Alternatively, the SoC fault handling circuitry 422 may proceed to block 586 and send a SoC fault timer 424 (see 4 ). The SoC fault timer 424 may introduce a delay between receiving the SoC fault aggregator signal and notifying the external system 404. While the SoC fault timer 424 is running, the processor 140 may take one or more corrective actions. If the corrective action(s) are successful, the processor 140 may clear the uncorrected fault(s) by unsetting the status bit "BT2" and the SoC fault aggregator fault by unsetting the status bit "BT3". Clearing the SoC fault aggregator fault stops the SoC fault timer 424. The processor 140 may wait for notification from the processor 150 that the fault(s) corresponding to the uncorrected fault(s) have been cleared from the particular SoC fault aggregator before the processor 140 clears the uncorrected fault(s) from the SI fault aggregator 142.

Nach dem Starten des SoC-Fehlerzeitgebers 424 in Entscheidungsblock 588 bestimmt die SoC-Fehlerbehandlungsschaltungsanordnung 422, ob der SoC-Störungszeitgeber 424 angibt, dass mehr als eine vierte vorbestimmte Zeitdauer verstrichen ist. Die Entscheidung in Entscheidungsblock 588 lautet „JA“, wenn der SoC-Störungszeitgeber 424 angibt, dass mehr als die vierte vorgegebene Zeitdauer verstrichen ist und der SoC-Störungsaggregatorfehler nicht gelöscht wurde. Andererseits lautet die Entscheidung in Entscheidungsblock 588 „NEIN“, wenn der SoC-Störungsaggregatorfehler gelöscht wurde, bevor der SoC-Störungszeitgeber 424 angibt, dass mehr als die vierte vorgegebene Zeitdauer verstrichen ist.After starting the SoC fault timer 424 in decision block 588, the SoC fault handling circuitry 422 determines whether the SoC fault timer 424 indicates that more than a fourth predetermined period of time has elapsed. The decision in decision block 588 is "YES" if the SoC fault timer 424 indicates that more than the fourth predetermined period of time has elapsed and the SoC fault aggregator fault has not been cleared. On the other hand, the decision in decision block 588 is "NO" if the SoC fault aggregator fault has been cleared before the SoC fault timer 424 indicates that more than the fourth predetermined period of time has elapsed.

Wenn die Entscheidung in Entscheidungsblock 588 „NEIN“ lautet, wartet die SoC-Fehlerbehandlungsschaltungsanordnung 422 in Block 590 darauf, dass der SoC-Störungszeitgeber 424 angibt, dass mehr als die vierte vorgegebene Zeitdauer verstrichen ist. Wenn dagegen die Entscheidung in Entscheidungsblock 588 „JA“ lautet, überträgt die SoC-Fehlerbehandlungsschaltungsanordnung 422 in Block 584 das SoC-Fehlersignal einschließlich des SoC-Fehlers, das angibt, dass der erste unkorrigierte Fehler nicht gelöscht wurde und der SoC-Störungsaggregatorfehler erklärt wurde, über die Verbindung 406 (siehe 4) an das externe System 404 (siehe 4) Der SoC-Störungszeitgeber 424 stoppt automatisch und/oder wird zurückgesetzt, wenn der SoC-Fehler gesendet wird. Alternativ kann die SoC-Fehlerbehandlungsschaltungsanordnung 422 den SoC-Störungszeitgeber 424 zurücksetzen oder der SoC-Störungszeitgeber 424 kann einfach ablaufen, ohne dass die SoC-Fehlerbehandlungsschaltungsanordnung 422 eine Maßnahme ergreift.If the decision in decision block 588 is "NO," the SoC fault handling circuitry 422 waits in block 590 for the SoC fault timer 424 to indicate that more than the fourth predetermined time period has elapsed. Conversely, if the decision in decision block 588 is "YES," the SoC fault handling circuitry 422 transmits the SoC fault signal including the SoC fault indicating that the first uncorrected fault was not cleared and the SoC fault aggregator fault was declared over the connection 406 in block 584 (see 4 ) to the external system 404 (see 4 ) The SoC fault timer 424 automatically stops and/or resets when the SoC fault is sent. Alternatively, the SoC fault handling circuitry 422 may reset the SoC fault timer 424 or the SoC fault timer 424 may simply expire without the SoC fault handling circuitry 422 taking any action.

Nachdem der SI-Störungsaggregator 142 (siehe 1, 2 und 4) das SoC-Störungsaggregatorsignal empfangen hat, kann der SI-Störungsaggregator 142 in Block 592 einen Interrupt an den Prozessor 140 senden. In Block 594 sichtet der Prozessor 140 den ersten unkorrigierten Fehler. In Entscheidungsblock 595 entscheidet der Prozessor 140, ob er eine oder mehrere Korrekturmaßnahmen ergreift. Die Entscheidung in Entscheidungsblock 595 lautet „JA“, wenn der Prozessor 140 entscheidet, eine oder mehrere Korrekturmaßnahmen zu ergreifen. Andernfalls lautet die Entscheidung in Entscheidungsblock 595 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 595 „NEIN“ lautet, schreitet der Prozessor 140 zu Block 596 fort und ergreift keine Maßnahme. Wenn dagegen die Entscheidung in Entscheidungsblock 595 „JA“ lautet, ergreift der Prozessor 140 in Block 597 die Korrekturmaßnahme(n).After the SI disturbance aggregator 142 (see 1 , 2 and 4 ) has received the SoC fault aggregator signal, the SI fault aggregator 142 may send an interrupt to the processor 140 in block 592. In block 594, the processor 140 views the first uncorrected fault. In decision block 595, the processor 140 decides whether to take one or more corrective actions. The decision in decision block 595 is "YES" if the processor 140 decides to take one or more corrective actions. Otherwise, the decision in decision block 595 is "NO". If the decision in decision block 595 is "NO", the processor 140 proceeds to block 596 and takes no action. Conversely, if the decision in decision block 595 is "YES", the processor 140 takes the corrective action(s) in block 597.

Dann sendet der Prozessor 140 in Block 598 einen Mailbox-Interrupt an die Mailbox(en) 156 und/oder löscht den SoC-Störungsaggregatorfehler, beispielsweise durch Aufheben des Setzens des Statusbits „BT3“, und den oder die unkorrigierten Fehler durch Aufheben des Setzens des Statusbits „BT2“. Das Löschen des SoC-Störungsaggregatorfehlers stoppt den SoC-Störungszeitgeber 424. Der an die Mailbox(en) 156 gesendete Mailbox-Interrupt kann angeben, dass der unkorrigierte Fehler gelöscht wurde und/oder der Prozessor 140 die Korrekturmaßnahme(n) in Block 597 ergriffen hat. Optional kann der Prozessor 140 Störungsinformationen in die Mailbox(en) 156 schreiben. Der Prozessor 140 kann auf eine Benachrichtigung von dem Prozessor 150 warten, dass die dem/den unkorrigierten Fehler(n) entsprechende(n) Störung(en) aus dem konkreten SoC-Störungsaggregator gelöscht wurde(n), bevor der Prozessor 140 den SoC-Störungsaggregatorfehler und den/die unkorrigierten Fehler aus dem SI-Störungsaggregator 142 löscht. Dann endet das Verfahren 580. Der Mailbox-Interrupt wird durch den Prozessor 150 empfangen, der die Störung, die dem unkorrigierten Fehler entspricht, möglicherweise löschen kann. Der Prozessor 150 kann optional die Störungsinformationen lesen, die durch den Prozessor 140 in die Mailbox(en) 156 geschrieben wurden, bevor er die Störung löscht.Then, in block 598, the processor 140 sends a mailbox interrupt to the mailbox(es) 156 and/or clears the SoC fault aggregator error, for example, by unsettling the status bit "BT3," and the uncorrected error(s) by unsettling the status bit "BT2." Clearing the SoC fault aggregator error stops the SoC fault 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 taken the corrective action(s) in block 597. Optionally, the processor 140 may write fault information to the mailbox(es) 156. The processor 140 may wait for notification from the processor 150 that the fault(s) corresponding to the uncorrected fault(s) have been deleted from the particular SoC fault aggregator before the processor 140 deletes the SoC fault aggregator fault and the uncorrected fault(s) from the SI fault aggregator 142. Then, the method 580 ends. The mailbox interrupt is received by the processor 150, which may delete the fault corresponding to the uncorrected fault. The processor 150 may optionally read the fault information written by the processor 140 to the mailbox(es) 156 before deleting the fault.

In den 5A-5D beinhaltet das Kraftfahrzeug-SoC 104 den Prozessor 150. In mindestens einigen Ausführungsformen kann der Prozessor 150 weggelassen sein. In derartigen Ausführungsformen wird das Verfahren 540 nicht durchgeführt. Bei jeder Störung generiert der konkrete SoC-Störungsaggregator den SoC-Störungsaggregatorfehler (Blöcke 518 und 532) und sendet ihn an den SI-Störungsaggregator 142. Da der Prozessor 150 nicht vorhanden ist, werden die Mailbox-Interrupts nicht an die Interrupt-Steuerung 141 übertragen, sodass der Prozessor 140 auf das SoC-Störungsaggregatorsignal wartet (Block 558 in 5C), bevor der Prozessor 140 agiert. Dann, wenn der SoC-Störungsaggregatorfehler empfangen wird (Block 582 in 5D), begibt sich die Sl 110 in die anderen Komponenten 160, um eine Sichtung (Block 594 in 5D) für jeden korrigierten und unkorrigierten Fehler durchzuführen, die in dem Verfahren 550 empfangen werden (siehe 5C). Ist die Sichtung erfolgreich, ergreift der Prozessor 140 die Korrekturmaßnahme(n) (Block 597 in 5D). Wenn dagegen die Sichtung nicht erfolgreich ist, ergreift der Prozessor 140 keine Maßnahme (Block 596 in 5D), was bewirkt, dass die SoC-Fehlerbehandlungsschaltungsanordnung 422 den SoC-Fehler (ohne Softwareeingriff) nach Ablauf des SoC-Störungszeitgebers 424 sendet (Block 584 in 5D). Der SoC-Fehler informiert das externe System 404 (z. B. die optionale externe Steuereinheit 106, eine oder mehrere externe Mikrosteuerungen, einen oder mehrere externe Agenten und dergleichen), wodurch das externe System 404 die Kraftfahrzeugplattform 100 (siehe 1) in einen sicheren Zustand zurückversetzen kann.In the 5A-5D the automotive SoC 104 includes the processor 150. In at least some embodiments, the processor 150 may be omitted. In such embodiments, the method 540 is not performed. For each fault, the particular SoC fault aggregator generates the SoC fault aggregator error (blocks 518 and 532) and sends it to the SI fault aggregator 142. Since the processor 150 is not present, the mailbox interrupts are not transmitted to the interrupt controller 141, so the processor 140 waits for the SoC fault aggregator signal (block 558 in 5C ) before the processor 140 acts. Then, when the SoC fault aggregator error is received (block 582 in 5D ), the Sl 110 moves to the other components 160 to make a sighting (block 594 in 5D ) for each corrected and uncorrected error received in the method 550 (see 5C ). If the screening is successful, the processor 140 takes the corrective action(s) (block 597 in 5D ). If, however, the sighting is not successful, the processor 140 takes no action (block 596 in 5D ), which causes the SoC error handling circuitry 422 to send the SoC error (without software intervention) after the SoC fault timer 424 expires (block 584 in 5D ). The SoC error informs 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), causing the external system 404 to disable the automotive platform 100 (see 1 ) to a safe state.

Die 6A-6C veranschaulichen beispielhafte Maßnahmen, die durch die SI 110 ergriffen werden können, wenn die SI 110 über eine konkrete Störung durch mindestens eines von dem korrigierten Störungssignal, dem unkorrigierten Störungssignal oder dem SoC-Störungsaggregatorsignal informiert wird. 6A veranschaulicht ein beispielhaftes Signal-Zeitsteuerungs-Diagramm für Signale, die durch den Prozessor 140 empfangen und gesendet werden, nachdem ein unkorrigierter Fehler mit geringem Schweregrad (z. B. dem Minimalwert) erklärt wurde, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die Linien 612A-618A der 6A stellen das unkorrigierte Fehlersignal, ein Mailbox-Interrupt-Signal, das SoC-Störungsaggregationssignal bzw. das SoC-Fehlersignal dar. Das unkorrigierte Fehlersignal, das Mailbox-Interrupt-Signal, das SoC-Störungsaggregationssignal und das SoC-Fehlersignal werden mit einem Taktsignal synchronisiert, das durch eine Linie 610A dargestellt ist. Das durch die Linie 610A dargestellte Taktsignal wurde basierend auf dem zweiten (SI-)Takt 114 (siehe 1) in der SI-Domäne generiert.The 6A-6C illustrate exemplary actions that may be taken by the SI 110 when the SI 110 is informed of a specific fault by at least one of the corrected fault signal, the uncorrected fault signal, or the SoC fault aggregator signal. 6A illustrates an example signal timing diagram for signals received and transmitted by processor 140 after an uncorrected low severity error (e.g., the minimum value) is declared, in accordance with some embodiments of the present disclosure. Lines 612A-618A of 6A represent the uncorrected error signal, a mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal, respectively. The uncorrected error signal, the mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal are synchronized with a clock signal represented by a line 610A. The clock signal represented by the line 610A was generated based on the second (SI) clock 114 (see 1 ) in the SI domain.

Die Linie 612A stellt das unkorrigierte Fehlersignal dar, das durch den Leiter 412 für das unkorrigierte Fehlersignal (siehe 4) zu dem SI-Störungsaggregator 142 geleitet wird. Ein Abschnitt 622A der Linie 612A stellt die Erklärung des unkorrigierten Fehlers dar. Nach Empfang des unkorrigierten Fehlersignals (z. B. Block 552 in 5C) sendet der SI-Störungsaggregator 142 einen Interrupt an den Prozessor 140 (z. B. Block 566 in 5C).Line 612A represents the uncorrected error signal carried by uncorrected error signal conductor 412 (see 4 ) to the SI fault aggregator 142. A portion 622A of line 612A represents the declaration of the uncorrected fault. After receiving the uncorrected fault signal (e.g., block 552 in 5C ), the SI fault aggregator 142 sends an interrupt to the processor 140 (e.g., block 566 in 5C ).

Dann empfängt in 6A die Interrupt-Steuerung 141 einen Mailbox-Interrupt (Entscheidung im Entscheidungsblock 568 in 5C ist „JA“). Ein Abschnitt 626A der Linie 614A stellt den Mailbox-Interrupt (gesendet durch den Prozessor 150) dar, der den Schweregrad des unkorrigierten Fehlers angibt. Da der Mailbox-Interrupt angibt, dass die konkrete Störung einen geringen Schweregrad aufweist, entscheidet der Prozessor 140, auf die Mailbox(en) 156 zuzugreifen (z. B. Entscheidung in Entscheidungsblock 570 in 5C ist „JA“) und den Inhalt der Mailbox(en) 156 zu lesen (z. B. Block 572 in 5C). Wenn die Mailbox(en) 156 Störungsinformationen (erstellt durch den Prozessor 150) beinhalten, die angeben, dass die jeweilige Störung gelöscht wurde, löscht der Prozessor 140 die konkrete Störung im SI-Störungsaggregator 142 (z. B. Block 578 in 5C). Wenn dies vor Ablaufdes Zeitgebers 420U für den korrigierten Fehler erfolgt, erklären der/die SoC-Störungsaggregator(en) 152 den SoC-Störungsaggregatorfehler nicht (z. B. Block 529 in 5A).Then receive in 6A the interrupt controller 141 issues a mailbox interrupt (decision in decision block 568 in 5C is "YES"). A portion 626A of line 614A represents the mailbox interrupt (sent by processor 150) indicating the severity of the uncorrected error. Since the mailbox interrupt indicates that the particular fault is of low severity, processor 140 decides to access mailbox(es) 156 (e.g., decision in decision block 570 in 5C is “YES”) and read the contents of mailbox(es) 156 (e.g. block 572 in 5C ). If the mailbox(es) 156 contain fault information (created by the processor 150) indicating that the particular fault has been deleted, the processor 140 deletes the particular fault in the SI fault aggregator 142 (e.g., block 578 in 5C ). If this occurs before the corrected fault timer 420U expires, the SoC fault aggregator(s) 152 do not declare the SoC fault aggregator fault (e.g., block 529 in 5A) .

Wenn andererseits der Inhalt der Mailbox(en) 156 nicht angibt, dass der Prozessor 150 die konkrete Störung behoben hat, kann der Prozessor 140 entscheiden, eine oder mehrere Korrekturmaßnahmen zu ergreifen (z. B. ist die Entscheidung in Entscheidungsblock 573 in 5C „JA“). Wenn die Korrekturmaßnahme(n) (z. B. in Block 574 in 5C ergriffen) erfolgreich sind, kann der Prozessor 140 den Prozessor 150 benachrichtigen, um den Fehler zurückzunehmen (oder die Störung zu löschen). Beispielsweise kann der Prozessor 140 einen Mailbox-Interrupt an den Prozessor 150 senden und/oder Störungsinformationen in die Mailbox(en) 156 schreiben. Nachdem der Prozessor 150 diese Benachrichtigung empfangen hat und den Fehler zurücknimmt, benachrichtigt der Prozessor 150 den Prozessor 140, dass der Fehler zurückgenommen wurde (z. B. über das unkorrigierte Fehlersignal, einen Mailbox-Interrupt und/oder Störungsinformationen, die in der/den Mailbox(en) 156 gespeichert sind). Nach Erhalt dieser Benachrichtigung kann der Prozessor 140 den Fehler z. B. durch Aufheben des Setzens des Statusbits „BT2“ (z. B. Block 578 in 5C) löschen. Ein Abschnitt 624A der Linie 612A stellt eine Rücknahme der Erklärung des unkorrigierten Fehlers dar, nachdem der Prozessor 140 die Mailbox(en) 156 gelesen hat und Korrekturmaßnahmen ergreift. Ein gekrümmter Pfeil 628A stellt eine Verzögerung zwischen dem Zeitpunkt, an dem der Prozessor 140 den Mailbox-Interrupt empfangen hat, und dem Zeitpunkt, an dem der Prozessor 140 den Fehler zurücknimmt (oder den Fehler löscht), dar.On the other hand, if the contents of the mailbox(es) 156 do not indicate that the processor 150 has corrected the particular fault, the processor 140 may decide to take one or more corrective actions (e.g., the decision in decision block 573 in 5C “YES”). If the corrective action(s) (e.g. in block 574 in 5C taken) are successful, the processor 140 may notify the processor 150 to revert the error (or clear the fault). For example, the processor 140 may send a mailbox interrupt to the processor 150 and/or write fault information to the 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 fault information stored in the mailbox(es) 156). After receiving this notification, the processor 140 may clear the error, for example, by unsettling the status bit “BT2” (e.g., block 578 in 5C ). A portion 624A of line 612A represents a retraction of the declaration of the uncorrected error after the processor 140 reads the mailbox(es) 156 and takes corrective action. A curved arrow 628A represents a delay between the time the processor 140 receives the mailbox interrupt and the time the processor 140 retracts the error (or clears the error).

Wenn die Korrekturmaßnahme(n) erfolgreich sind, kann der Prozessor 140 einen Mailbox-Interrupt an die Mailbox(en) 156 senden, der angibt, dass der Prozessor 140 die konkrete Störung gelöscht hat (z. B. Block 578 in 5C). Optional kann der Prozessor 140 Störungsinformationen in die Mailbox(en) 156 schreiben. Der Prozessor 150 empfängt den Mailbox-Interrupt, bestimmt, dass die konkrete Störung durch den Prozessor 140 korrigiert wurde (z. B. ist die Entscheidung in Entscheidungsblock 547 „JA“), und löscht die konkrete Störung aus dem/den SoC-Störungsaggregator(en) 152 (z. B. Block 549 in 5B). Wenn dies vor Ablauf des Zeitgebers 420U für den unkorrigierten Fehler erfolgt, erklären der/die SoC-Störungsaggregator(en) 152 den SoC-Störungsaggregatorfehler nicht (z. B. Block 529 in 5A). Somit überwachen der/die SoC-Störungsaggregator(en) 152 die konkrete Störung, um sicherzustellen, dass sie durch einen der Prozessoren 140 und 150 behandelt wurde, und wenn die konkrete Störung nicht vor Ablauf des Zeitgebers 420U für den unkorrigierten Fehler gelöscht wurde, benachrichtigen der/die SoC-Störungsaggregator(en) 152 die SoC-Fehlerbehandlungsschaltungsanordnung 422. Wie vorstehend erwähnt, benachrichtigt der Prozessor 150 den Prozessor 140, dass der Fehler zurückgenommen wurde (z. B. über das unkorrigierte Fehlersignal, einen Mailbox-Interrupt und/oder Störungsinformationen, die in der/den Mailbox(en) 156 gespeichert sind), nachdem der Prozessor 150 den Fehler zurücknimmt, und der Prozessor 140 kann den Fehler im SI-Störungsaggregator 142 löschen.If the corrective action(s) are successful, the processor 140 may send a mailbox interrupt to the mailbox(es) 156 indicating that the processor 140 has cleared the particular fault (e.g., block 578 in 5C ). Optionally, the processor 140 may write fault information to the mailbox(es) 156. The processor 150 receives the mailbox interrupt, determines that the particular fault has been corrected by the processor 140 (e.g., the decision in decision block 547 is “YES”), and deletes the particular fault from the SoC fault aggregator(s) 152 (e.g., block 549 in 5B) . If this occurs before the uncorrected fault timer 420U expires, the SoC fault aggregator(s) 152 do not declare the SoC fault aggregator fault (e.g., block 529 in 5A) . Thus, the SoC fault aggregator(s) 152 monitor the particular fault to ensure that it has been handled by one of the processors 140 and 150, and if the particular fault has not been cleared before the expiration of the uncorrected fault timer 420U, the SoC fault aggregator(s) 152 notifies the SoC fault handling circuitry 422. As mentioned above, after the processor 150 reverts the fault, the processor 150 notifies the processor 140 that the fault has been reverted (e.g., via the uncorrected fault signal, a mailbox interrupt, and/or fault information stored in the mailbox(es) 156), and the processor 140 may clear the fault in the SI fault aggregator 142.

Die Linie 616A stellt das SoC-Störungsaggregationssignal dar und veranschaulicht, dass der SoC-Störungsaggregationsfehler nicht erklärt wurde. Somit wurden der/die unkorrigierte(n) Fehler vor Ablauf des Zeitgebers 420U für den unkorrigierten Fehler gelöscht.Line 616A represents the SoC fault aggregation signal and illustrates that the SoC fault aggregation fault was not declared. Thus, the uncorrected fault(s) were cleared before the expiration of the uncorrected fault timer 420U.

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, eine oder mehrere externe Mikrosteuerungen, einen oder mehrere externe Agenten und dergleichen) gesendet werden kann. Da der/die unkorrigierte(n) Fehler behandelt wurden und der SoC-Störungsaggregationsfehler nicht erklärt wurde, gibt die Linie 618A an, dass die SI 110 das externe System 404 nicht über den/die unkorrigierten Fehler informiert (z. B. ist die Entscheidung in Entscheidungsblock 575 „NEIN“).Line 618A represents a SoC fault signal that may be sent to the external system 404 (e.g., the optional external controller 106, one or more external microcontrollers, one or more external agents, and the like) over connection 406. Since the uncorrected fault(s) have been handled and the SoC fault aggregation fault has not been declared, line 618A indicates that the SI 110 will not inform the external system 404 of the uncorrected fault(s) (e.g., the decision in decision block 575 is "NO").

6B veranschaulicht ein beispielhaftes Signal-Zeitsteuerungs-Diagramm für Signale, die durch den Prozessor 140 empfangen und gesendet werden, nachdem ein unkorrigierter Fehler mit hohem Schweregrad (z. B. dem Maximalwert) erklärt wurde, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die Linien 612B-618B der 6B stellen das unkorrigierte Fehlersignal, ein Mailbox-Interrupt-Signal, das SoC-Störungsaggregationssignal bzw. das SoC-Fehlersignal dar. Das unkorrigierte Fehlersignal, das Mailbox-Interrupt-Signal, das SoC-Störungsaggregationssignal und das SoC-Fehlersignal werden mit einem Taktsignal synchronisiert, das durch eine Linie 610B dargestellt ist. Das durch die Linie 610B dargestellte Taktsignal wurde basierend auf dem zweiten (SI-)Takt 114 (siehe 1) in der SI-Domäne generiert. 6B illustrates an example signal timing diagram for signals received and transmitted by processor 140 after an uncorrected high severity error (e.g., the maximum value) is declared, according to some embodiments of the present disclosure. The lines 612B-618B of the 6B represent the uncorrected error signal, a mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal, respectively. The uncorrected error signal, the mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal are synchronized with a clock signal represented by a line 610B. The clock signal represented by the line 610B was generated based on the second (SI) clock 114 (see 1 ) in the SI domain.

Die Linie 612B stellt das unkorrigierte Fehlersignal dar, das durch den Leiter 412 für das unkorrigierte Fehlersignal (siehe 4) zu dem SI-Störungsaggregator 142 geleitet wird. Ein Abschnitt 622B der Linie 612B stellt eine Erklärung eines unkorrigierten Fehlers dar. Nach Empfang des unkorrigierten Fehlersignals (z. B. Block 552 in 5C) sendet der SI-Störungsaggregator 142 einen Interrupt an den Prozessor 140 (z. B. Block 566 in 5C).Line 612B represents the uncorrected error signal carried by the uncorrected error signal conductor 412 (see 4 ) to the SI fault aggregator 142. A portion 622B of line 612B represents a declaration of an uncorrected fault. Upon receipt of the uncorrected fault signal (e.g., block 552 in 5C ), the SI fault aggregator 142 sends an interrupt to the processor 140 (e.g., block 566 in 5C ).

Dann empfängt in 6B die Interrupt-Steuerung 141 einen Mailbox-Interrupt (z. B. Entscheidung im Entscheidungsblock 568 in 5C ist „JA“). Ein Abschnitt 624B der Linie 614B stellt den Mailbox-Interrupt dar, der angibt, dass der erste unkorrigierte Fehler einen hohen Schweregrad (z. B. sieben) aufweist. Da der Mailbox-Interrupt angibt, dass die konkrete Störung einen hohen Schweregrad hat, entscheidet der Prozessor 140, nicht auf die Mailbox(en) 156 zuzugreifen (z. B. Entscheidung in Entscheidungsblock 570 in 5C ist „NEIN“). Beispielsweise kann der Prozessor 140 bestimmen, dass es zu riskant ist, auf die anderen Komponenten 160 des Kraftfahrzeug-SoC 104 zuzugreifen, und dies der SI 110 schaden könnte. In 6B entscheidet der Prozessor 140 auch, keine eine oder mehrere Korrekturmaßnahmen zu ergreifen (z. B. ist die Entscheidung in Entscheidungsblock 573 in 5C „NEIN“). In 6B wird der unkorrigierte Fehler nicht zurückgenommen, da die SI 110 nicht in der Lage ist, eine oder mehrere Korrekturmaßnahmen durchzuführen.Then receive in 6B the interrupt controller 141 issues a mailbox interrupt (e.g. decision in decision block 568 in 5C is "YES"). A portion 624B of line 614B represents the mailbox interrupt indicating that the first uncorrected error has a high severity level (e.g., seven). Since the mailbox interrupt indicates that the particular fault has a high severity level, the processor 140 decides not to access the mailbox(es) 156 (e.g., decision in decision block 570 in 5C is "NO"). For example, the processor 140 may determine that it is too risky to access the other components 160 of the automotive SoC 104 and this could harm the SI 110. In 6B the processor 140 also decides not to take one or more corrective actions (e.g., the decision in decision block 573 is in 5C “NO”). In 6B the uncorrected error will not be withdrawn because SI 110 is not able to implement one or more corrective measures.

Der Prozessor 140 entscheidet jedoch, das externe System 404 (siehe 4) durch Senden des SoC-Fehlers im SoC-Fehlersignal zu informieren (z. B. Entscheidung in Entscheidungsblock 575 in 5C ist „JA“). Dann sendet der Prozessor 140 das SoC-Fehlersignal (z. B. Block 576 in 5C). Somit kann in 6B, wenn der Schweregrad der Störung hoch ist (z. B. der Maximalwert), die Sl 110 entscheiden, nicht auf das Kraftfahrzeug-SoC 104 zuzugreifen, keine Korrekturmaßnahmen zu ergreifen und stattdessen das externe System 404 zu informieren. Die Linie 618B stellt das durch die Sl 110 an das externe System 404 gesendete SoC-Fehlersignal dar, und ein Abschnitt 626B der Linie 618B stellt die Erklärung des SoC-Fehlers dar. Die Linie 616B stellt das SoC-Störungsaggregationssignal dar und gibt nicht an, dass ein SoC-Störungsaggregationsfehler bereits erklärt wurde. Daher erkannte die SI 110, dass der unkorrigierte Fehler nicht behandelt wurde und entschied, das externe System 404 zu informieren, bevor der SoC-Störungsaggregationsfehler erklärt wird.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. decision in decision block 575 in 5C is “YES”). Then the processor 140 sends the SoC error signal (e.g., block 576 in 5C ). This means that 6B if the severity of the fault is high (e.g., the maximum value), the SI 110 may decide not to access the automotive SoC 104, take no corrective action, and instead inform the external system 404. Line 618B represents the SoC fault signal sent by the SI 110 to the external system 404, and a portion 626B of line 618B represents the declaration of the SoC fault. Line 616B represents the SoC fault aggregation signal and does not indicate that a SoC fault aggregation fault has already been declared. Therefore, the SI 110 recognized that the uncorrected fault was not handled and decided to inform the external system 404 before declaring the SoC fault aggregation fault.

6C veranschaulicht ein beispielhaftes Signal-Zeitsteuerungs-Diagramm für Signale, die durch den Prozessor 140 empfangen und gesendet werden, nachdem ein unkorrigierter Fehler (z. B. der Maximalwert) erklärt wurde, die SI 110 aber den Mailbox-Interrupt nicht empfängt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die Linien 612C-618C der 6C stellen das unkorrigierte Fehlersignal, ein Mailbox-Interrupt-Signal, das SoC-Störungsaggregationssignal bzw. das SoC-Fehlersignal dar. Das unkorrigierte Fehlersignal, das Mailbox-Interrupt-Signal, das SoC-Störungsaggregationssignal und das SoC-Fehlersignal werden mit einem Taktsignal synchronisiert, das durch eine Linie 610C dargestellt ist. Das durch die Linie 610C dargestellte Taktsignal wurde basierend auf dem zweiten (SI-)Takt 114 (siehe 1) in der SI-Domäne generiert. 6C illustrates an example signal timing diagram for signals received and transmitted by the processor 140 after an uncorrected error (e.g., the maximum value) is declared but the SI 110 does not receive the mailbox interrupt, in accordance with some embodiments of the present disclosure. Lines 612C-618C of the 6C represent the uncorrected error signal, a mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal, respectively. The uncorrected error signal, the mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal are synchronized with a clock signal represented by a line 610C. The clock signal represented by the line 610C was generated based on the second (SI) clock 114 (see 1 ) in the SI domain.

Die Linie 612C stellt das unkorrigierte Fehlersignal dar, das durch den Leiter 412 für das unkorrigierte Fehlersignal (siehe 4) zu dem SI-Störungsaggregator 142 geleitet wird. Ein Abschnitt 622C der Linie 612C stellt eine Erklärung eines unkorrigierten Fehlers dar. Nach Empfang des unkorrigierten Fehlersignals (z. B. Block 552 in 5C) sendet der SI-Störungsaggregator 142 einen Interrupt an den Prozessor 140 (z. B. Block 566 der 5C).Line 612C represents the uncorrected error signal carried by the uncorrected error signal conductor 412 (see 4 ) to the SI fault aggregator 142. A portion 622C of line 612C represents a declaration of an uncorrected fault. Upon receipt of the uncorrected fault signal (e.g., block 552 in 5C ), the SI fault aggregator 142 sends an interrupt to the processor 140 (e.g., block 566 of 5C ).

In 6C gibt die Linie 614C nicht an, dass der Mailbox-Interrupt empfangen wurde. Somit empfängt in diesem Beispiel die Interrupt-Steuerung 141 den Mailbox-Interrupt nicht (z. B. ist Entscheidung in Entscheidungsblock 568 in 5C „NEIN“). Dies kann beispielsweise auftreten, wenn der Prozessor 150 die Sichtung des unkorrigierten Fehlers (z. B. Block 542 in 5B) nicht abschließen konnte, was dazu führt (Entscheidung in Entscheidungsblock 543 in 5C ist „JA“), dass der Prozessor 150 den Mailbox-Interrupt (z. B. Block 544 in 5B) nicht senden kann. Daher wartet der Prozessor 140 auf den Empfang entweder des Mailbox-Interrupts oder des SoC-Störungsaggregatorfehlers, je nachdem, was zuerst passiert (z. B. Block 558 in 5C).In 6C line 614C does not indicate that the mailbox interrupt was received. Thus, in this example, interrupt controller 141 does not receive the mailbox interrupt (e.g., decision in decision block 568 in 5C “NO”). This may occur, for example, if the processor 150 detects the uncorrected error (e.g., block 542 in 5B) could not complete, which leads to (decision in decision block 543 in 5C is “YES”) that the processor 150 receives the mailbox interrupt (e.g. block 544 in 5B) Therefore, the processor 140 waits to receive either the mailbox interrupt or the SoC fault aggregator error, whichever occurs first (e.g., block 558 in 5C ).

Eine Linie 628C stellt die dritte vorbestimmte Zeitdauer dar und zeigt den Zeitgeber 420U für den unkorrigierten Fehler als abgelaufen. Da weder der Prozessor 140 noch der Prozessor 150 in der Lage war, den ersten unkorrigierten Fehler zu löschen, wird ermöglicht, dass der Zeitgeber 420U für den unkorrigierten Fehler abläuft (z. B. Entscheidung in Entscheidungsblock 530 in 5A ist „JA“), der bewirkt hat, dass ein konkreter des/der SoC-Störungsaggregator(en) 152, die das unkorrigierte Fehlersignal an die SI 110 und den Interrupt an den Prozessor 150 gesendet haben, das SoC-Störungsaggregatorsignal über den Leiter 414 für das SoC-Störungsaggregatorsignal an den SI-Störungsaggregator 142 sendet (z. B. in Block 532 in 5A). Der SI-Störungsaggregator 142 empfängt das SoC-Störungsaggregatorsignal (z. B. in Block 582 in 5D). Ein Abschnitt 624C der Linie 616C stellt den SI-Störungsaggregatorfehler dar, der durch den konkreten SoC-Störungsaggregator an die SI 110 gesendet wurde. Ein gekrümmter Pfeil 630C stellt eine Verzögerung zwischen dem Empfang des unkorrigierten Fehlers durch die SI 110 und dem Empfang des SI-Störungsaggregatorfehlers durch die SI 110 dar.A line 628C represents the third predetermined period of time and indicates the uncorrected error timer 420U as expired. Since neither the processor 140 nor the processor 150 was able to clear the first uncorrected error, the uncorrected error timer 420U is allowed to expire (e.g., decision in decision block 530 in 5A is “YES”) that caused a particular one of the SoC fault aggregator(s) 152 that sent the uncorrected error signal to the SI 110 and the interrupt to the processor 150 to send the SoC fault aggregator signal to the SI fault aggregator 142 via the SoC fault aggregator signal conductor 414 (e.g., in block 532 in 5A) . The SI fault aggregator 142 receives the SoC fault aggregator signal (e.g., in block 582 in 5D ). A portion 624C of line 616C represents the SI fault aggregator error sent by the particular SoC fault aggregator to the SI 110. A curved arrow 630C represents a delay between the receipt of the uncorrected error by the SI 110 and the receipt of the SI fault aggregator error by the SI 110.

Nach Empfang des SI-Störungsaggregatorsignals (z. B. Block 582 in 5D) sendet der SI-Störungsaggregator 142 einen Interrupt an den Prozessor 140 (z. B. Block 592 in 5D). Dann kann der Prozessor 140 den ersten unkorrigierten Fehler (z. B. Block 594 in 5D) sichten und entscheiden, ob Korrekturmaßnahmen ergriffen werden. Wenn der Prozessor 140 keine Korrekturmaßnahmen ergreifen kann (z. B. Entscheidung in Entscheidungsblock 595 in 5D ist „NEIN“), sendet die SoC-Fehlerbehandlungsschaltungsanordnung 422 das SoC-Fehlersignal an das externe System 404 (z. B. Block 584 in 5C). Ein Abschnitt 626C der Linie 612C stellt den an das externe System 404 gesendeten SoC-Fehler dar. In Ausführungsformen, die den SoC-Störungszeitgeber 424 verwenden, wird der SoC-Fehler gesendet, wenn der SoC-Störungszeitgeber 424 abläuft. In 6C gibt eine Linie 632C an, dass mehr als die vierte vorbestimmte Zeitdauer verstrichen ist, was bedeutet, dass der SoC-Störungszeitgeber 424 abgelaufen ist. Ein gekrümmter Pfeil 634C stellt eine Verzögerung zwischen dem Empfang des SI-Störungsaggregatorfehlers durch die SI 110 und der Erklärung des SoC-Fehlers durch die SI 110 dar. Somit informiert Hardware in der SI 110 das externe System 404, das versuchen wird, die Kraftfahrzeugplattform 100 in einen sicheren Zustand zurückzuversetzen.After receiving the SI disturbance aggregator signal (e.g. block 582 in 5D ), the SI fault aggregator 142 sends an interrupt to the processor 140 (e.g., block 592 in 5D ). Then, the processor 140 may detect the first uncorrected error (e.g., block 594 in 5D ) and decide whether to take corrective action. If the processor 140 cannot take corrective action (e.g., decision in decision block 595 in 5D is “NO”), the SoC error handling circuitry 422 sends the SoC error signal to the external system 404 (e.g., block 584 in 5C ). A portion 626C of line 612C represents the SoC error sent to the external system 404. In embodiments that use the SoC fault timer 424, the SoC error is sent when the SoC fault timer 424 expires. In 6C a line 632C indicates that more than the fourth predetermined period of time has elapsed, meaning that the SoC fault timer 424 has expired. A curved arrow 634C represents a delay between the SI 110 receiving the SI fault aggregator fault and the SI 110 declaring the SoC fault. Thus, hardware in the SI 110 informs the external system 404, which will attempt to return the automotive platform 100 to a safe state.

Unter Bezugnahme auf 2 und wie vorstehend erwähnt, teilen sich die SI 110 und die anderen Komponenten 160 des Kraftfahrzeug-SoC 104 den flüchtigen Speicher 126. Die SI 110 arbeitet jedoch innerhalb einer ersten Risikoklassifizierungsstufe und die anderen Komponenten 160 des Kraftfahrzeug-SoC 104 können innerhalb einer niedrigeren zweiten Risikoklassifizierungsstufe arbeiten. Beispielsweise kann die Sl 110 bei ASIL-D arbeiten, aber die anderen Komponenten des Kraftfahrzeug-SoC, einschließlich des flüchtigen Speichers 126 und eines Kommunikationspfades (z. B. Verbindungsleitung, Speichersteuerung und dergleichen) zwischen der SI 110 und dem flüchtigen Speicher 126, können bei ASIL-B arbeiten.With reference to 2 and as mentioned above, the SI 110 and the other components 160 of the automotive 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 automotive SoC 104 may operate within a lower second risk classification level. For example, the SI 110 may operate at ASIL-D, but the other components of the automotive 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 at ASIL-B.

Damit die SI 110 den flüchtigen Speicher 126 mit den anderen Komponenten 160 des Kraftfahrzeug-SoC 104 teilen kann, wird in dem flüchtigen Speicher 126 eine separate dedizierte Speicherregion (als „Ausgliederung“ 250 bezeichnet) zur ausschließlichen Nutzung durch die SI 110 erstellt. Die Ausgliederung 250 ist für Speicherverwaltungssoftware (z. B. Rich-OS-Speicherverwaltung, Rich-OS-Speicherverwaltungssoftware), die durch den CPU-Hauptkomplex 120 ausgeführt wird, möglicherweise nicht sichtbar (siehe 1). Die Ausgliederung 250 kann zum Bootzeitpunkt erstellt und konfiguriert werden und für einen gegebenen Bootzyklus der SI 110 zugeordnet bleiben. Beispielsweise kann die Größe der Ausgliederung 250 durch einen vom Benutzer editierbaren Softwareparameter bestimmt werden, der durch eine Software verwendet wird (z. B. ausgeführt durch den CPU-Hauptkomplex 120), um die Ausgliederung 250 zu konfigurieren. Die Ausgliederung 250 kann in einen ersten Teilbereich 252 (siehe 8) und einen zweiten Teilbereich 254 (siehe 8) unterteilt sein. Die SI 110 kann über einen auf der ersten Risikoklassifizierungsstufe arbeitenden Kommunikationspfad auf die Ausgliederung 250 zugreifen, und jeder Zugriff auf die Ausgliederung 250 durch die SI 110 über den Kommunikationspfad kann Sicherheitsberechtigungsprüfungen unterzogen werden, wie etwa die nachstehend beschriebenen.To enable the SI 110 to share the volatile memory 126 with the other components 160 of the automotive SoC 104, a separate dedicated memory region (referred to as a “carve-out” 250) is created in the volatile memory 126 for exclusive use by the SI 110. The carve-out 250 may not be visible to memory management software (e.g., Rich OS memory management, Rich OS memory management software) executed by the main CPU complex 120 (see 1 ). The carve-out 250 may be created and configured at boot time and remain associated with the SI 110 for a given boot cycle. For example, the size of the carve-out 250 may be determined by a user-editable software parameter used by software (e.g., executed by the CPU main complex 120) to configure the carve-out 250. The carve-out 250 may be divided into a first sub-area 252 (see 8th ) and a second sub-area 254 (see 8th ). The SI 110 may access the outsource 250 via a communication path operating at the first risk classification level, and any access to the outsource 250 by the SI 110 via the communication path may be subject to security authorization checks, such as those described below.

Die SI 110 beinhaltet einen Fehlererkennungsblock 272, der Hardware beinhaltet, die zwischen anderen Komponenten der SI 110 und der Ausgliederung 250 positioniert ist. Somit kann der Fehlererkennungsblock 272 als Bestandteil der Schnittstelle 200A für den flüchtigen Speicher implementiert sein. Alternativ kann der Fehlererkennungsblock 272 zwischen dem Prozessor 140 und der Schnittstelle 200A für den flüchtigen Speicher positioniert sein. In solchen Ausführungsformen können ein oder mehrere Signalleiter (z. B. ein Draht, eine Signalspur und dergleichen) den Fehlererkennungsblock 272 mit jedem von dem Prozessor 140 und der Schnittstelle 200A für den flüchtigen Speicher verbinden.The SI 110 includes an error detection block 272 that includes hardware positioned between other components of the SI 110 and the spin-off 250. Thus, the error detection block 272 may be implemented as part of the volatile memory interface 200A. Alternatively, the error detection block 272 may be positioned 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 each of the processor 140 and the volatile memory interface 200A.

Die Hardware des Fehlererkennungsblocks 272 kann einen Codegenerierungs-Unterblock 273 (siehe 8) beinhalten. Der Codegenerierungs-Unterblock 273 kann unter Verwendung einer Codegenerierungsschaltungsanordnung mit zyklischer Redundanzprüfung (cyclic redundency check - „CRC“) implementiert sein, die einen CRC-Code generiert. Alternativ kann der Fehlererkennungsblock 272 andere Typen von Codegenerierungsschaltungsanordnungen beinhalten, die unterschiedliche Typen von Fehlererkennungscodes generieren, wie etwa Fehlerkorrekturcode (error correction code - „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 Byte von Daten, das den Fehlererkennungsblock 272 durchläuft, einen separaten Fehlererkennungscode bestimmen. Der Fehlererkennungscode kann basierend auf dem Byte und einer Datenadresse in der Ausgliederung 250, in der das Byte gespeichert werden soll, berechnet werden. Beispielsweise kann die nachstehende Gleichung 1 verwendet werden, um den Fehlererkennungscode für ein konkretes Byte von Daten zu bestimmen, das in die Ausgliederung 250 geschrieben werden soll: crc_out Byte x = CRC  ( Byteadresse ,  Bytedaten )

Figure DE112022003757T5_0001
The hardware of the error detection block 272 may include a code generation sub-block 273 (see 8th ). The code generation sub-block 273 may be implemented using cyclic redundancy check (“CRC”) code generation circuitry that generates a CRC code. Alternatively, the error detection block 272 may include other types of code generation circuitry that generate different types of error detection codes, such as error correction code (“ECC”). The hardware of the error detection block 272 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 passing through the error detection block 272. The error detection code may be calculated based on the byte and a data address in the partition 250 where the byte is to be stored. For example, Equation 1 below can be used to determine the error detection code for a specific byte of data to be written to the partition 250: crc_out Bytes x = CRC ( Byte address , Byte data )
Figure DE112022003757T5_0001

In vorstehender Gleichung 1 stellt eine Variable „crc_outByte x“ den Fehlererkennungscode dar, der basierend auf dem Byte, dargestellt durch eine Variable „Bytedaten“, und der Datenadresse, dargestellt durch eine Variable „Byteadresse“, berechnet wird. In Gleichung 1 verwendet eine Funktion „CRC“ die Werte der Variablen „Bytedaten“ und „Byteadresse“ als Eingaben und gibt den Wert der Variablen „crc_outByte x“ aus. Die Ausgabe der Funktion „CRC“ kann zumindest teilweise durch den Codegenerierungs-Unterblock 273 (siehe 8), soweit vorhanden, berechnet werden.In Equation 1 above, a variable "crc_outByte x" represents the error detection code calculated based on the byte represented by a variable "byte data" and the data address represented by a variable "byte address". 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_outByte x". The output of the function "CRC" may be at least partially provided by the code generation sub-block 273 (see 8th ), if available, will be calculated.

Nachdem der Fehlererkennungscode bestimmt wurde, bestimmt der Fehlererkennungsblock 272 (z. B. unter Verwendung eines Offsets) eine Codeadresse für den Fehlererkennungscode. Beispielsweise kann die nachstehende Gleichung 2 verwendet werden, um den Fehlererkennungscode für ein konkretes Byte der Daten zu bestimmen, das in die Ausgliederung 250 geschrieben werden soll: crc_out_Adresse = schreiben_Adresse + fester_Offset

Figure DE112022003757T5_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 may be used to determine the error detection code for a particular byte of data to be written to the partition 250: crc_out_address = write_address + fixed_offset
Figure DE112022003757T5_0002

In vorstehender Gleichung 2 stellt eine Variable „crc_out_Adresse“ die Codeadresse dar, die basierend auf der Datenadresse, dargestellt durch eine Variable „schreiben_Adresse“, des Bytes und einem Offset, dargestellt durch eine Variable „fester_Offset“, berechnet wird. Wie vorstehend erwähnt, kann die Ausgliederung 250 in Teilbereiche unterteilt sein, wobei der erste Teilbereich 252 (siehe 8) die Daten und der zweite Teilbereich 254 (siehe 8) die Fehlererkennungscodes speichert. Somit kann sich die Datenadresse, dargestellt durch die Variable „Byteadresse“ in vorstehender Gleichung 1, im ersten Teilbereich 252 befinden und kann sich die Codeadresse, dargestellt durch die Variable „schreiben_Adresse“ in vorstehender Gleichung 2, im Teilbereich 254 befinden. In solchen Ausführungsformen kann der Wert der Variablen „fester_Offset“ gleich der Größe des ersten Teilbereichs 252 der Ausgliederung 250 sein, um sicherzustellen, dass die Fehlererkennungscodes in dem zweiten Teilbereich 254 gespeichert werden. Auf diese Weise wird eine adressbasierte Trennung verwendet, um die Daten von den Fehlererkennungscodes zu trennen, sodass eine Störung, die in einem von dem ersten und den zweiten Teilbereich 252 und 254 auftritt, den anderen nicht beeinflussen kann.In Equation 2 above, a variable "crc_out_address" represents the code address calculated based on the data address, represented by a variable "write_address", of the byte and an offset, represented by a variable "fixed_offset". As mentioned above, the outbox 250 may be divided into sub-areas, with the first sub-area 252 (see 8th ) the data and the second subsection 254 (see 8th ) stores the error detection codes. Thus, the data address represented by the variable "byte_address" in Equation 1 above may be located in the first sub-area 252 and the code address represented by the variable "write_address" in Equation 2 above may be located in the sub-area 254. In such embodiments, the value of the variable "fixed_offset" may be equal to the size of the first sub-area 252 of the partition 250 to ensure that the error detection codes are stored in the second sub-area 254. In this way, address-based separation is used to separate the data from the error detection codes so that a disturbance occurring in one of the first and second sub-areas 252 and 254 cannot affect the other.

Der Fehlererkennungsblock 272 führt eine Verzögerung (z. B. einige Taktzyklen) zwischen dem Speichern der Daten in der/den Datenadresse(n) und dem Speichern des Fehlererkennungscodes in 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 dazu bei, Immunität vor häufig auftretenden und vorübergehenden Fehlern bereitzustellen, was zum Schutz vor Problemen wie Taktstörschüben beiträgt. Der Fehlererkennungsblock 272 kann zwei oder mehr Bytes von Daten und ihre entsprechenden Fehlererkennungscodes zwischenspeichern, bevor sie in der Ausgliederung 250 gespeichert werden. Dann kann der Fehlererkennungsblock 272 die Bytes von Daten (z. B. 16 Bytes) in dem ersten Teilbereich 252 speichern, gefolgt von der Verzögerung. Anschließend kann der Fehlererkennungsblock 272 die entsprechenden Fehlererkennungscodes (z. B. 16 Byte) in dem zweiten Teilbereich 254 speichern.The error detection block 272 introduces a delay (e.g., a few clock cycles) between storing the data in the data address(es) and storing the error detection code in the code address(es). This delay reduces the likelihood that an event (e.g., a transient event) that negatively affects the data will also negatively affect the error detection code. In other words, the delay helps provide immunity from common and transient errors, which helps protect against problems such as clock glitches. The error detection block 272 may buffer two or more bytes of data and their corresponding error detection codes before storing them in the partition 250. Then, the error detection block 272 may store the bytes of data (e.g., 16 bytes) in the first partition 252, followed by the delay. The error detection block 272 can then store the corresponding error detection codes (e.g. 16 bytes) in the second subarea 254.

Bezugnehmend nun auf 7 beinhaltet jeder Block eines hierin beschriebenen Verfahrens 700 einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise kann das Verfahren 700 durch die Hardware des Fehlererkennungsblocks 272 durchgeführt werden (siehe 2, 8 und 10). Als weiteres nicht einschränkendes Beispiel können eine oder mehrere Funktionen durch einen Prozessor (z. B. den in den 1, 2 und 4 veranschaulichten Prozessor 140) realisiert werden, der Anweisungen (z. B. die in den 1, 2 und 4 veranschaulichten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 veranschaulichten flüchtigen Speicher 146) gespeichert sind. In derartigen Ausführungsformen können mindestens Abschnitte des Verfahrens 700 als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. 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 einen Plug-in zu einem anderen Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 700 beispielhaft mit Bezug auf die Kraftfahrzeugplattform 100 aus 1 beschrieben. Das Verfahren 700 kann jedoch zusätzlich oder alternativ von einem System oder einer Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hierin beschriebenen.Referring now to 7 Each block of a method 700 described herein includes a computational process that may be performed using any combination of hardware, firmware, and/or software. For example, the method 700 may be performed by the hardware of the error detection block 272 (see 2 , 8th and 10 ). Do not restrict further In the example, one or more functions may be performed by a processor (e.g. the processor in the 1 , 2 and 4 illustrated processor 140) that executes instructions (e.g. those described in the 1 , 2 and 4 instructions 149) stored in a memory (e.g., the memory in the 1 , 2 and 4 illustrated volatile memory 146). In such embodiments, at least portions of the method 700 may be embodied as computer-usable instructions stored on computer storage media. The method 700 may be provided by a standalone application, a service, or a hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. Moreover, the method 700 is exemplified with respect to the automotive platform 100 of 1 However, the method 700 may additionally or alternatively be performed by a system or combination of systems, including but not limited to those described herein.

7 ist ein Ablaufdiagramm, das ein Verfahren 700 zum Schreiben von Daten in die Ausgliederung 250 (siehe 2, 8 und 10) gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Zur besseren Veranschaulichung wird das Verfahren 700 als durch den Fehlererkennungsblock272 (siehe 2, 8 und 10) durchgeführt beschrieben. Vor Beginn des Verfahrens 700 leitet ein in der SI-Domäne arbeitender Initiator (z. B. der Prozessor 140, die DMA-Engine 402 oder dergleichen) eine erste Schreibanweisung, die Daten und Datenadresse(n) beinhaltet, an den Fehlererkennungsblock 272 weiter. Der Initiator kann Daten mit einer vorbestimmten Größe (z. B. 16 Byte) in die Ausgliederung 250 schreiben. 7 is a flowchart illustrating a method 700 for writing data to the spin-off 250 (see 2 , 8th and 10 ) according to some embodiments of the present disclosure. For better illustration, the method 700 is illustrated as being executed by the error detection block 272 (see 2 , 8th and 10 ). Prior to beginning the method 700, an initiator operating in the SI domain (e.g., the processor 140, the DMA engine 402, or the like) forwards a first write instruction including data and data address(es) to the error detection block 272. The initiator may write data of a predetermined size (e.g., 16 bytes) to the partition 250.

Unter Bezugnahme auf 7 empfängt der Fehlererkennungsblock 272 (siehe 2, 8 und 10) in einem ersten Block 702 die erste Schreibanweisung, die die Daten und Datenadresse(n) beinhaltet, von dem Initiator. In Block 704 wählt der Fehlererkennungsblock 272 einen Abschnitt der Daten und eine der Datenadresse(n) aus, die diesem Abschnitt entsprechen, aus. 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. In einigen Ausführungsformen kann die erste Schreibanweisung nur eine einzige Datenadresse (z. B. eine erste Adresse) beinhalten. Nachfolgende Datenadressen können basierend auf dieser einzigen Adresse bestimmt werden (z. B. durch Addieren einer vorbestimmten Datengröße zu der einzigen Datenadresse). Daher kann in einigen Ausführungsformen die Datenadresse in Block 704 für mindestens einige der Daten berechnet werden.With reference to 7 receives the error detection block 272 (see 2 , 8th and 10 ) in a first block 702, the first write instruction including the data and data address(es) from the initiator. In block 704, the 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, the 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 include only a single data address (e.g., a first address). Subsequent data addresses may be determined based on that 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 some of the data.

Dann bestimmt der Fehlererkennungsblock 272 in Block 706 einen Fehlererkennungscode für den Abschnitt der in Block 704 ausgewählten Daten (z. B. unter Verwendung der vorstehenden Gleichung 1). Anschließend leitet der Fehlererkennungsblock 272 in Block 708 die erste Schreibanweisung, die den Abschnitt der in Block 704 ausgewählten Daten und die entsprechende Datenadresse beinhaltet, an den ersten Teilbereich 252 (siehe 8 und 10) der Ausgliederung 250 (siehe 2, 8 und 10) weiter. Entsprechend der ersten Schreibanweisung speichert die Ausgliederung 250 den Abschnitt in der entsprechenden Datenadresse in dem ersten Teilbereich 252.Then, in block 706, the error detection block 272 determines an error detection code for the portion of data selected in block 704 (e.g., using equation 1 above). Then, 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 sub-area 252 (see 8th and 10 ) of the spin-off 250 (see 2 , 8th and 10 ). According to the first write instruction, the partition 250 stores the section in the corresponding data address in the first subarea 252.

Im nächsten Block 710 bestimmt der Fehlererkennungsblock 272 (siehe 2, 8 und 10) eine Codeadresse für den im Block 706 bestimmten Fehlererkennungscode (z. B. unter Verwendung vorstehender Gleichung 2). In Block 712 wartet der Fehlererkennungsblock 272 (z. B. einige Taktzyklen), um den Fehlererkennungscode an den ersten Teilbereich 252 (siehe 8 und 10) der Ausgliederung 250 (siehe 2, 8 und 10) zu senden, um ihn dadurch in der Codeadresse zu speichern. Somit führt der Fehlererkennungsblock 272 in Block 712 eine Verzögerung zwischen dem Speichern der Daten in der Datenadresse und dem Speichern des Fehlererkennungscodes in der Codeadresse ein. Der Fehlererkennungsblock 272 kann einen Schreibverzögerungszeitgeber (nicht gezeigt) beinhalten, der verwendet wird, um zu bestimmen, wie lange der Fehlererkennungsblock 272 in Block 712 wartet. Somit kann der Fehlererkennungsblock 272 eine fünfte vorgegebene Zeitdauer warten, bevor er den Fehlererkennungscode an die Ausgliederung 250 zur Speicherung in der Codeadresse sendet. Als Nächstes leitet der Fehlererkennungsblock 272 in Block 714 eine zweite Schreibanweisung, die den in Block 706 bestimmten Fehlererkennungscode und die in Block 710 bestimmte Codeadresse beinhaltet, an den zweiten Teilbereich 254 (siehe 8 und 10) der Ausgliederung 250 (siehe 2, 8 und 10) weiter. Der Fehlererkennungsblock 272 greift somit zum Speichern der Daten zweimal auf die Ausgliederung 250 zu, jeweils einmal in den Blöcken 708 und 714. Gemäß der zweiten Schreibanweisung speichert die Ausgliederung 250 den Fehlererkennungscode in der Codeadresse in dem zweiten Teilbereich 254.In the next block 710, the error detection block 272 (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., several clock cycles) to send the error detection code to the first sub-area 252 (see 8th and 10 ) of the spin-off 250 (see 2 , 8th and 10 ) to thereby store it in the code address. Thus, in block 712, the error detection block 272 introduces a delay between storing the data in the data address and storing the error detection code in the code address. The error detection block 272 may include a write delay timer (not shown) 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 partition 250 for storage in the code address. Next, in block 714, the error detection block 272 sends a second write instruction including the error detection code determined in block 706 and the code address determined in block 710 to the second partition 254 (see 8th and 10 ) of the spin-off 250 (see 2 , 8th and 10 ). The error detection block 272 thus accesses the partition 250 twice to store the data, once each in blocks 708 and 714. According to the second write instruction, the partition 250 stores the error detection code in the code address in the second subarea 254.

In Entscheidungsblock 716 bestimmt dann der Fehlererkennungsblock 272 (siehe 2, 8 und 10), ob beliebige der Daten nicht gespeichert wurden. Die Entscheidung in Entscheidungsblock 716 lautet „JA“, wenn der Fehlererkennungsblock 272 bestimmt, dass mindestens einige der Daten nicht gespeichert wurden. Andernfalls lautet die Entscheidung in Entscheidungsblock 516 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 716 „JA“ lautet, kehrt der Fehlererkennungsblock 272 zu Block 704 zurück, um einen neuen Abschnitt der Daten auszuwählen. Wenn dagegen die Entscheidung in Entscheidungsblock 716 „NEIN“ lautet, kehrt der Fehlererkennungsblock 272 zu Block 702 zurück, um neue Daten und (eine) neue Datenadresse(n) zu empfangen.In decision block 716, the error detection block 272 (see 2 , 8th and 10 ) whether any of the data was not stored. The decision in decision block 716 is "YES" if the error detection block 272 determines that at least some of the data was not stored. Otherwise, the decision in decision block 516 is "NO." If the decision in decision block 716 is "YES," the error detection block 272 returns to block 704 to select a new portion of the data. Conversely, if the decision in decision block 716 is "NO," the error detection block 272 returns to block 702 to receive new data and a new data address(es).

Wie vorstehend erwähnt, kann der Fehlererkennungsblock 272 zwei oder mehr Bytes von Daten und deren entsprechende Fehlererkennungscodes zwischenspeichern, bevor sie in der Ausgliederung 250 gespeichert werden. Beispielsweise können die Blöcke 706-714 jeweils für mehrere Datenblöcke (z. B. ausgewählt in Block 704) durchgeführt werden. Als nicht einschränkendes Beispiel kann der Fehlererkennungsblock 272 den Block 706 für zwei oder mehr Bytes von Daten durchführen, bevor er die erste Schreibanweisung zusammen mit den Bytes von Daten und entsprechender Datenadresse(n) in Block 708 an die Ausgliederung 250 sendet. Beispielsweise kann der Fehlererkennungsblock 272 die Bytes von Daten zusammen mit einer ersten Datenadresse an den ersten Teilbereich 252 senden. Der erste Teilbereich 252 kann die Bytes von Daten in aufeinander folgende Speicheradressen beginnend mit der ersten Datenadresse schreiben. Dann kann der Fehlererkennungsblock 272 in Block 710 Codeadressen für die zwei oder mehr Fehlererkennungscodes bestimmen, die in Block 706 bestimmt wurden. In Block 712 führt der Fehlererkennungsblock 272 eine Verzögerung zwischen dem Schreiben der Bytes von Daten und dem Schreiben der Fehlererkennungscodes in die Ausgliederung 250 ein. Dann leitet der Fehlererkennungsblock 272 in Block 714 die zweite Schreibanweisung, die die Fehlererkennungscodes und die Codeadressen beinhaltet, an den zweiten Teilbereich 254 weiter. Der zweite Teilbereich 254 schreibt die Fehlererkennungscodes in die Codeadressen. Abhängig von den Implementierungsdetails kann die zweite Schreibanweisung nur eine erste Codeadresse beinhalten und kann der zweite Teilbereich 254 die Fehlererkennungscodes in aufeinander folgende Speicheradressen beginnend mit der ersten Codeadresse schreiben.As mentioned above, the error detection block 272 may latch two or more bytes of data and their corresponding error detection codes before storing them in the partition 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, the error detection block 272 may perform block 706 for two or more bytes of data before sending the first write instruction along with the bytes of data and corresponding data address(es) to the partition 250 in block 708. For example, the error detection block 272 may send the bytes of data along with a first data address to the first partition 252. The first partition 252 may write the bytes of data to consecutive memory addresses starting with the first data address. Then, 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 bytes of data and writing the error detection codes to the partition 250. Then, in block 714, the error detection block 272 passes the second write instruction including the error detection codes and the code addresses to the second partition 254. The second partition 254 writes the error detection codes to the code addresses. Depending on implementation details, the second write instruction may only include a first code address and the second partition 254 may write the error detection codes to consecutive memory addresses starting with the first code address.

8 veranschaulicht ein Beispiel des Fehlererkennungsblocks 272, der das Verfahren 700 (siehe 7) durchführt. Die SI 110 kann einen oder mehrere Initiatoren 800, wie etwa den Prozessor 140, die DMA-Engine 402 und dergleichen beinhalten, die jeweils innerhalb der SI-Domäne arbeiten. In 8 beinhalten der/die Initiator(en) 800 einen Initiator 802 (z. B. den Prozessor 140). Der Initiator 802 (z. B. der Prozessor 140) kann Daten mit einer vorbestimmten Größe (z. B. 16 Byte) in die Ausgliederung 250 schreiben. In dem in 8 veranschaulichten Beispiel sendet der Initiator 802 16 Bytes von Daten und eine erste Datenadresse an den Fehlererkennungsblock 272. Die Daten werden in 8 in einem Array von 128 Bits mit der Bezeichnung ,,wdata_in[127:0]" gespeichert oder durch dieses dargestellt und die erste Datenadresse wird in 8 in einem Array von 40 Bits mit der Bezeichnung „Adresse_0[39:0]“ gespeichert oder durch dieses dargestellt. Abhängig von den Implementierungsdetails können die Daten jedoch auch andere Größen aufweisen und es werden als nicht einschränkendes Beispiel 128 Bit bereitgestellt. Ebenso kann die erste Datenadresse andere Größen aufweisen und es werden als nicht einschränkendes Beispiel 40 Bits bereitgestellt. Das erste Byte der Daten kann in der ersten Datenadresse gespeichert werden, dann kann eine nächste Datenadresse für ein zweites Byte der Daten durch Hinzufügen eines Bytes zu der ersten Datenadresse identifiziert werden und so weiter. 8 zeigt den Initiator 802, der in einem Signal 806 über eine Sicherheitsinselzusammenschaltung 808 eine erste Schreibanweisung 804 an den Fehlererkennungsblock 272 sendet. Wie vorstehend erwähnt, beinhaltet die erste Schreibanweisung 804 die Daten und die erste Datenadresse. Die Sicherheitsinselzusammenschaltung 808 kann als Bus und dergleichen implementiert sein. 8th illustrates an example of the error detection block 272 that implements the method 700 (see 7 ). The SI 110 may include one or more initiators 800, such as the processor 140, the DMA engine 402, and the like, each operating within the SI domain. In 8th the initiator(s) 800 include an initiator 802 (e.g., the processor 140). The initiator 802 (e.g., the processor 140) can write data of a predetermined size (e.g., 16 bytes) to the partition 250. In the 8th In the example illustrated, the initiator 802 sends 16 bytes of data and a first data address to the error detection block 272. The data is 8th stored in or represented by an array of 128 bits called "wdata_in[127:0]" and the first data address is stored in 8th stored in or represented by an array of 40 bits named "address_0[39:0]". However, depending on implementation details, the data may be of other sizes and 128 bits is provided as a non-limiting example. Similarly, the first data address may be of other sizes and 40 bits is provided as a non-limiting example. The first byte of data may be stored in the first data address, then a next data address for a second byte of data may be identified by adding a byte to the first data address, and so on. 8th shows the initiator 802 sending a first write instruction 804 to the fault detection block 272 in a signal 806 via a safety island interconnect 808. As mentioned above, the first write instruction 804 includes the data and the first data address. The safety island interconnect 808 may be implemented as a bus and the like.

Die Sicherheitsinselzusammenschaltung 808 liefert die erste Schreibanweisung 804 an den Fehlererkennungsblock 272 (z. B. Block 702 in 7). In der veranschaulichten Ausführungsform liefert die Sicherheitsinselzusammenschaltung 808 die erste Schreibanweisung 804 in Signalen 810-0 bis 810-15, die jeweils eines der Bytes der Daten und die erste Datenadresse beinhalten. In dieser Ausführungsform generiert der Fehlererkennungsblock 272 für jedes Byte der Daten einen Fehlererkennungscode und ist der generierte Fehlererkennungscode ein CRC-Code. Der Fehlererkennungsblock 272 kann mit der Verarbeitung der Bytes beginnen, wie sie in den Signalen 810-0 bis 810-15 (z. B. Block 704 in 7) empfangen werden.The safety island interconnection 808 provides the first write instruction 804 to the error detection block 272 (e.g. block 702 in 7 ). In the illustrated embodiment, the safety island interconnect 808 provides the first write instruction 804 in signals 810-0 through 810-15, each of which includes one of the bytes of data and the first data address. In this embodiment, the error detection block 272 generates an error detection code for each byte of data, and the generated error detection code is a CRC code. The error detection block 272 may begin processing the bytes as indicated in the signals 810-0 through 810-15 (e.g., block 704 in 7 ) can be received.

Als Nächstes bestimmt der Codegenerierungs-Unterblock 273 für jedes Byte der Daten einen Fehlererkennungscode (z. B. Block 706 in 7). In 8 sind die Signale, die die Fehlererkennungscodes tragen, und ein Signal 838, das Antworten von der Ausgliederung 250 betreffend die Fehlererkennungscodes trägt, durch Pfeile mit gestrichelten Linien veranschaulicht. Somit gibt der Codegenerierungs-Unterblock 273 die Bytes von Daten 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 an den ersten Teilbereich 252 weitergeleitet und die (Code-)Signale 814-0 bis 814-15 werden zur Speicherung an den zweiten Teilbereich 254 weitergeleitet.Next, the code generation sub-block 273 determines an error detection code for each byte of data (e.g., block 706 in 7 ). In 8th the signals carrying the error detection codes and a signal 838 carrying responses from the outsource 250 concerning the error detection codes are illustrated by dashed line arrows. Thus, the code generation sub-block 273 outputs the bytes of data in the signals 812-0 to 812-15 and the corresponding error detection codes in the signals 814-0 to 814-15. The (data) signals 812-0 to 812-15 are passed to the first Sub-area 252 and the (code) signals 814-0 to 814-15 are forwarded to the second sub-area 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=T0“ bezeichnet) an den ersten Teilbereich 252 der Ausgliederung 250. Mit anderen Worten sendet der Fehlererkennungsblock 272 die erste Schreibanweisung an den ersten Teilbereich 252 der Ausgliederung 250 (z. B. Block 708 in 7). Die Schnittstelle 200A des flüchtigen Speichers kommuniziert die erste Schreibanweisung über ein Datenbackbone- und Speicherteilsystem 826 des Kraftfahrzeug-SoC 104 (siehe 1, 2 und 4) an die Ausgliederung 250. In 8 wird die erste Schreibanweisung durch den Fehlererkennungsblock 272 in einem Signal 824 an den ersten Teilbereich 252 gesendet.The error detection block 272 sends the data and the first data address (e.g. in signals 812-0 to 812-15) via the volatile memory interface 200A (see 2 ) at a first point in time (e.g. in 8th referred to as “time=T0”) to the first sub-area 252 of the outsourcing 250. In other words, the error detection block 272 sends the first write instruction to the first sub-area 252 of the outsourcing 250 (e.g., block 708 in 7 ). The volatile memory interface 200A communicates the first write instruction via a data backbone and memory subsystem 826 of the automotive SoC 104 (see 1 , 2 and 4 ) to the spin-off 250. In 8th the first write instruction is sent by the error detection block 272 in a signal 824 to the first subarea 252.

Der erste Teilbereich 252 schreibt die Daten in den Speicher, indem das erste Byte (in 8 als „Daten0“ „dargestellt) an der ersten Datenadresse (in 8 als „Adresse_0“ dargestellt) gespeichert wird und die nachfolgenden Bytes in nachfolgende Datenadressen nach der ersten Datenadresse geschrieben werden. Dieses Schreiben erfolgt zum ersten Zeitpunkt, was in 8 als „Zeit=T0“ dargestellt ist. Dann sendet der erste Teilbereich 252 ein Antwortsignal 828 an den Initiator 802, das bestätigt, dass die Daten gespeichert wurden. Das Antwortsignal 828 wird durch den ersten Teilbereich 252 an das Datenbackbone- und Speicherteilsystem 826 gesendet, das das Antwortsignal 828 an die Schnittstelle 200A des flüchtigen Speichers (siehe 2) weiterleitet. 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 subarea 252 writes the data into memory by writing the first byte (in 8th as “Data0” “represented”) at the first data address (in 8th represented as “Address_0”) and the subsequent bytes are written to subsequent data addresses after the first data address. This writing occurs at the first time, which is 8th as "Time=T0". Then, the first sub-area 252 sends a response signal 828 to the initiator 802 confirming that the data has been stored. The response signal 828 is sent by the first sub-area 252 to the data backbone and storage subsystem 826, which sends 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 der Ausgliederung 250 empfangenen „Daten-Schreiben-Abschlussantworten“ neu an. Beispielsweise kann der Fehlererkennungsblock 272 ein Paar von Schreibanweisungen A und B (z. B. in der ersten Schreibanweisung, die in Block 708 in 7 gesendet wird) an die Ausgliederung 250 senden, wobei die Schreibanweisung B durch den Fehlererkennungsblock 272 nach der Schreibanweisung A gesendet wird. Nachdem die Ausgliederung 250 die in den Schreibanweisungen A und B beinhalteten Daten geschrieben hat, sendet die Ausgliederung 250 eine erste und zweite Daten-Schreiben-Abschlussantwort an den Fehlererkennungsblock 272. Jedoch kann die für die Schreibanweisung B empfangene zweite Daten-Schreiben-Abschlussantwort vor der ersten Daten-Schreiben-Abschlussantwort für die Schreibanweisung A bei dem Fehlererkennungsblock 272 eintreffen. Wenn dies geschieht, speichert der erste (Daten-)Puffer 820 die zweite Daten-Schreiben-Abschlussantwort, wartet auf die erste Daten-Schreiben-Abschlussantwort, sendet die erste Daten-Schreiben-Abschlussantwort bei ihrem Eintreffen und sendet die zweite Daten-Schreiben-Abschlussantwort nach der ersten Daten-Schreiben-Abschlussantwort. Der erste (Daten-)Puffer 820 platziert somit die Daten-Schreiben-Abschlussantworten in einer erwarteten Reihenfolge in dem Antwortsignal 828.The first (data) buffer 820 reorders the “data write completion responses” received in the response signal 828 from the spin-off 250. For example, the error detection block 272 may reorder a pair of write instructions A and B (e.g., in the first write instruction received in block 708 in 7 sent) to the outsource 250, with write instruction B being sent by the error detection block 272 after write instruction A. After the outsource 250 has written the data included in write instructions A and B, the outsource 250 sends first and second data write completion responses to the error detection block 272. However, the second data write completion response received for write instruction B may arrive at the error detection block 272 before the first data write completion response for write instruction A. When this happens, 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 when it arrives, and sends the second data write completion response after the first data write completion response. The first (data) buffer 820 thus 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 Sicherheitsinselzusammenschaltung 808 weiter, die das Antwortsignal 828 an den Initiator 802 weiterleitet. An dieser Stelle wurden in diesem Beispiel die Daten (z. B. 16 Byte) in einem ersten einzelnen Schreibvorgang in den ersten Teilbereich 252 geschrieben.The first (data) buffer 820 forwards the response signal 828 to the safety island interconnection 808, which forwards the response signal 828 to the initiator 802. At this point, in this example, the data (e.g., 16 bytes) were written to the first subarea 252 in a first single write operation.

Der Fehlererkennungsblock 272 bestimmt zudem eine erste Codeadresse basierend auf der ersten Datenadresse (z. B. Block 710 in 7). In 8 wird die erste Codeadresse berechnet, indem 16 Megabyte („MB“) zu der ersten Datenadresse addiert werden. Abhängig von den Implementierungsdetails kann der Offset jedoch auch andere Größen aufweisen und beispielhaft 16 MB vorgesehen sein. Ferner kann die Stelle der ersten Codeadresse mit anderen Verfahren 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 in 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 also have other sizes and may be 16 MB, for example. Furthermore, the location of the first code address may be determined using other methods and/or calculations.

Der Fehlererkennungsblock 272 wartet (z. B. Block 712 in 7) bis zum zweiten Zeitpunkt (z. B. in 8 als „Zeit= T1“ bezeichnet). Der erste und der zweite Zeitpunkt unterscheiden sich. Zum zweiten Zeitpunkt sendet der Fehlererkennungsblock 272 die Fehlererkennungscodes und die erste Codeadresse über die Schnittstelle 200A des flüchtigen Speichers (siehe 2) an den zweiten Teilbereich 254 der Ausgliederung 250. Mit anderen Worten sendet der Fehlererkennungsblock 272 die zweite Schreibanweisung an den zweiten Teilbereich 254 der Ausgliederung 250 (z. B. Block 714 in 7). Die Schnittstelle 200A des flüchtigen Speichers kommuniziert die zweite Schreibanweisung über das Datenbackbone- und Speicherteilsystem 826 des Kraftfahrzeug-SoC 104 (siehe 1, 2 und 4) an die Ausgliederung 250. In 8 wird die zweite Schreibanweisung durch den Fehlererkennungsblock 272 in einem Signal 834 an den zweiten Teilbereich 254 gesendet.The error detection block 272 waits (e.g. block 712 in 7 ) to the second point in time (e.g. in 8th referred to as “time=T1”). The first and second times 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 (see 2 ) to the second sub-area 254 of the outsourcing 250. In other words, the error detection block 272 sends the second write instruction to the second sub-area 254 of the outsourcing 250 (e.g., block 714 in 7 ). The volatile memory interface 200A communicates the second write instruction via the data backbone and memory subsystem 826 of the automotive SoC 104 (see 1 , 2 and 4 ) to the spin-off 250. In 8th the second write instruction is sent by the error detection block 272 in a signal 834 to the second subarea 254.

Der zweite Teilbereich 254 schreibt die Fehlererkennungscodes in den Speicher, indem der erste Fehlererkennungscode (dargestellt in 8 als „CRC0“) an der ersten Codeadresse (dargestellt in 8 als „Adresse_1“) gespeichert wird und die nachfolgenden Fehlererkennungscodes in nachfolgende Codeadressen nach der ersten Codeadresse geschrieben werden. Dann sendet der zweite Teilbereich 254 ein Antwortsignal 838 an den Initiator 802, das bestätigt, dass die Fehlererkennungscodes gespeichert wurden. Bei der in 8 veranschaulichten Ausführungsform wird das Antwortsignal 838 durch den zweiten Teilbereich 254 an das Datenbackbone- und Speicherteilsystem 826 gesendet, das das Antwortsignal 838 an die Schnittstelle 200A des flüchtigen Speichers (siehe 2) weiterleitet. 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 der Ausgliederung 250 empfangenen „Code-Schreiben-Abschlussantworten“ neu an. Beispielsweise bestimmt der Fehlererkennungsblock 272 einen ersten und zweiten Fehlererkennungscode für die in den Schreibanweisungen A bzw. B beinhalteten Daten und sendet den ersten und zweiten Fehlererkennungscode an die Ausgliederung 250 (z. B. in der zweiten Schreibanweisung). Nachdem die Ausgliederung 250 den ersten und den zweiten Fehlererkennungscode in den Speicher geschrieben hat, sendet die Ausgliederung 250 eine erste bzw. zweite Code-Schreiben-Abschlussantwort an den zweiten (Code-)Puffer 822. Jedoch kann die für den zweiten Fehlererkennungscode empfangene zweite Code-Schreiben-Abschlussantwort vor der ersten Code-Schreiben-Abschlussantwort für den ersten Fehlererkennungscode bei dem Fehlererkennungsblock 272 eintreffen. Wenn dies geschieht, speichert der zweite (Code -)Puffer 822 die zweite Code-Schreiben-Abschlussantwort, wartet auf die erste Code-Schreiben-Abschlussantwort, sendet die erste Code-Schreiben-Abschlussantwort bei ihrem Eintreffen und sendet die zweite Code-Schreiben-Abschlussantwort nach der ersten Code-Schreiben-Abschlussantwort.The second subarea 254 writes the error detection codes into the memory by the first error detection code (shown in 8th as “CRC0”) at the first code address (shown in 8th as "Address_1") and the subsequent error detection codes are written to subsequent code addresses after the first code address. Then the second sub-area 254 sends a response signal 838 to the initiator 802, which confirms that the error detection codes have been stored. In the 8th illustrated embodiment, the response signal 838 is sent by the second portion 254 to the data backbone and storage subsystem 826, which transmits 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 outsource 250. For example, the error detection block 272 determines first and second error detection codes for the data included in write instructions A and B, respectively, and sends the first and second error detection codes to the outsource 250 (e.g., in the second write instruction). After the decommissioner 250 writes the first and second error detection codes to memory, the decommissioner 250 sends first and second code write completion responses, respectively, to the second (code) buffer 822. However, the second code write completion response received for the second error detection code may arrive at the error detection block 272 before the first code write completion response for the first error detection code. When this happens, 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 when 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 fallen lassen. Alternativ kann der zweite (Code-)Puffer 822 das Antwortsignal 838 an die Sicherheitsinselzusammenschaltung 808 weiterleiten, die das Antwortsignal 838 an den Initiator 802 weiterleiten kann. An diesem Punkt wurden in diesem Beispiel in einem zweiten einzigen Schreibvorgang die Fehlererkennungscodes (z. B. 16 Byte) in den zweiten Teilbereich 254 geschrieben.The second (code) buffer 822 may drop the response signal 838. Alternatively, the second (code) buffer 822 may forward the response signal 838 to the safety island interconnect 808, which may forward the response signal 838 to the initiator 802. At this point, in this example, in a second single write operation, the error detection codes (e.g., 16 bytes) have been written to the second subarea 254.

Die Schnittstelle 200A des flüchtigen Speichers kann zwei parallele und optional dedizierte Schnittstellen beinhalten, die den Fehlererkennungsblock 272 mit dem flüchtigen Speicher 126 verbinden. Über die erste Schnittstelle können die Daten an die erste Datenadresse gesendet werden und über die zweite Schnittstelle können der/die Fehlererkennungscode(s) an die erste Codeadresse gesendet werden. In derartigen Ausführungsformen kann der Fehlererkennungsblock 272 die erste Schreibanweisung, die die Daten und die erste Datenadresse (z. B. in dem Signal 824) beinhaltet, über die erste Schnittstelle an den ersten Teilbereich 252 gleichzeitig mit dem Senden der zweiten Schreibanweisung, die den/die Fehlererkennungscode(s) und die erste Codeadresse (z. B. in dem Signal 834) beinhaltet, über die zweite Schnittstelle durch den Fehlererkennungsblock 272 an den zweiten Teilbereich 254 senden. Ferner können das (Daten-)Antwortsignal 828 und das (Code-)Antwortsignal 838 gleichzeitig über die erste bzw. zweite Schnittstelle an den ersten bzw. zweiten Puffer 820 bzw. 822 übertragen werden.The volatile memory interface 200A may include two parallel and optionally dedicated interfaces connecting the error detection block 272 to the volatile memory 126. The first interface may send the data to the first data address and the second interface may send the error detection code(s) to the first code address. 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 sub-area 252 over the first interface simultaneously with the error detection block 272 sending the second write instruction including the error detection code(s) and the first code address (e.g., in signal 834) to the second sub-area 254 over the second interface. Furthermore, the (data) response signal 828 and the (code) response signal 838 can be transmitted simultaneously via the first and second interfaces to the first and second buffers 820 and 822, respectively.

Wenn der Initiator 802 (z. B. der Prozessor 140) der SI 110 die Daten aus der Ausgliederung 250 lesen möchte, empfängt die SI 110 sowohl die Daten als auch den/die Fehlererkennungscode(s) aus der Ausgliederung 250. Die SI 110 führt eine Verzögerung zwischen dem Lesen der Daten aus der/den Datenadresse(n) und dem Lesen des/der Fehlererkennungscodes aus 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 eine nachstehende Gleichung 3 dargestellt werden: CRC_gen ( Angeforderte Adresse ,  Abgerufene Daten ) = = CRC_in Byte x ( CRC_Adresse )

Figure DE112022003757T5_0003
When the initiator 802 (e.g., processor 140) of the SI 110 wishes to read the data from the spin-off 250, the SI 110 receives both the data and the error detection code(s) from the spin-off 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 likelihood that an event that negatively affects the data will also negatively affect 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 to the check code. This comparison can be represented by an equation 3 below: CRC_gen ( Requested address , Retrieved data ) = = CRC_in Bytes x ( CRC_Address )
Figure DE112022003757T5_0003

In Gleichung 3 gibt ein Operator „==“ an, ob ein Ausdruck links vom Operator „=“ gleich einem Ausdruck rechts vom Operator „==“ ist. Eine Variable „Abgerufene Daten“ stellt mindestens einen Abschnitt (z. B. Byte x) der in Block 906 erlangten Daten dar, eine Variable „Angeforderte Adresse“ stellt die Datenadresse dieses Abschnitts der Daten dar und eine Variable „CRC_Adresse“ stellt die Codeadresse dar, die basierend auf der Datenadresse des Abschnitts (z. B. Byte x) der Daten bestimmt wird. 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 identisch sein mit der Funktion „CRC“ der vorstehenden Gleichung 1. Die Ausgabe der Funktion „CRC_gen“ kann zumindest teilweise durch den Codegenerierungs-Unterblock 273 (siehe 8), falls vorhanden, berechnet werden. Ein Ausdruck „crc_inByte x(CRC_Adresse)“ stellt den Fehlererkennungscode dar, der aus der Codeadresse erlangt wird, die für den Abschnitt (z. B. Byte x) unter Verwendung seiner Datenadresse bestimmt wird. Die Gleichung 3 bestimmt somit, ob der Prüfcode gleich dem Fehlererkennungscode ist oder mit diesem übereinstimmt. Der Fehlererkennungsblock 272 kann einen Nichtübereinstimmungsfehler generieren, wenn der Prüfcode nicht mit dem Fehlererkennungscode übereinstimmt. Der Fehlererkennungsblock 272 kann den Nichtübereinstimmungsfehler an den Initiator 802 und den SI-Störungsaggregator 142 senden, sodass der Nichtübereinstimmungsfehler durch eine Sicherheitssoftware, die durch die Anweisungen 149 implementiert und durch den Prozessor 140 ausgeführt wird, gelöscht werden kann.In Equation 3, an operator "==" indicates whether an expression to the left of the operator "=" is equal to an expression to the right of the operator "==". A variable "retrieved data" represents at least one section (e.g., byte x) of the data obtained in block 906, a variable "requested address" represents the data address of that section of the data, and a variable "CRC_address" represents the code address determined based on the data address of the section (e.g., byte x) of the data. A function "CRC_gen" takes the values of the variables "retrieved data" and "requested address" as inputs, and the function "CRC_gen" outputs the check code for the section (e.g., byte x). The function "CRC_gen" may be identical. be identical with the function “CRC” of equation 1 above. The output of the function “CRC_gen” may be at least partially generated by the code generation sub-block 273 (see 8th ), if present. An expression "crc_inByte x(CRC_address)" represents the error detection code obtained from the code address determined for the section (e.g., byte x) using its data address. Equation 3 thus determines whether the check code is equal to or matches the error detection code. The error detection block 272 may generate a mismatch error if the check code does not match the error detection code. The error detection block 272 may send the mismatch error to the initiator 802 and the SI fault aggregator 142 so that the mismatch error can be cleared by safety software implemented by instructions 149 and executed by the processor 140.

Bezugnehmend nun auf 9 beinhaltet jeder Block eines hierin beschriebenen Verfahrens 900 einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise kann das Verfahren 900 durch die Hardware des Fehlererkennungsblocks 272 durchgeführt werden (siehe 2, 8 und 10). Als weiteres nicht einschränkendes Beispiel können eine oder mehrere Funktionen durch einen Prozessor (z. B. den in den 1, 2 und 4 veranschaulichten Prozessor 140) realisiert werden, der Anweisungen (z. B. die in den 1, 2 und 4 veranschaulichten Anweisungen 149) ausführt, die in einem Speicher (z. B. dem in den 1, 2 und 4 veranschaulichten flüchtigen Speicher 146) gespeichert sind. Mindestens Abschnitte des Verfahrens 900 können als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. Das Verfahren 900 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 900 beispielhaft mit Bezug auf die Kraftfahrzeugplattform 100 aus 1 beschrieben. Das Verfahren 900 kann jedoch zusätzlich oder alternativ von einem System oder einer Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hierin beschriebenen.Referring now to 9 Each block of a method 900 described herein includes a computational process that may be performed using any combination of hardware, firmware, and/or software. For example, the method 900 may be performed by the hardware of the error detection block 272 (see 2 , 8th and 10 ). As another non-limiting example, one or more functions may be performed by a processor (e.g., the processor described in 1 , 2 and 4 illustrated processor 140) that executes instructions (e.g. those described in the 1 , 2 and 4 instructions 149) stored in a memory (e.g., the memory in the 1 , 2 and 4 illustrated volatile memory 146). At least portions of the method 900 may be embodied as computer-usable instructions stored on computer storage media. The method 900 may be provided by a standalone application, a service or hosted service (standalone or in combination with another hosted service), or a plug-in for another product, to name a few. Moreover, the method 900 is exemplary described with reference to the automotive platform 100 of 1 However, the method 900 may additionally or alternatively be performed by a system or combination of systems, including but not limited to those described herein.

9 ist ein Ablaufdiagramm, das das Verfahren 900 zum Lesen von Daten aus der Ausgliederung 250 (siehe 2, 8 und 10) zeigt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Zur besseren Veranschaulichung wird das Verfahren 900 als durch den Fehlererkennungsblock 272 (siehe 2, 8 und 10) durchgeführt beschrieben. Vor Beginn des Verfahrens 900 leitet der Initiator 802 (siehe 8) eine erste Leseanweisung, die eine oder mehrere Datenadressen beinhaltet, an den Fehlererkennungsblock 272 weiter. Als nicht einschränkendes Beispiel kann die erste Leseanweisung nur eine erste Datenadresse beinhalten. Unter Bezugnahme auf 9 empfängt der Fehlererkennungsblock 272 in einem ersten Block 902 die erste Leseanweisung einschließlich der Datenadresse(n) von dem Initiator 802. In Block 904 leitet der Fehlererkennungsblock 272 die erste Leseanweisung an den ersten Teilbereich 252 weiter, der die an der/den Datenadresse(n) gespeicherten Daten anfordert. Wenn die erste Leseanweisung nur die erste Datenadresse beinhaltet, kann der erste Teilbereich 252 eine vorbestimmte Menge von Daten (z. B. 16 Byte) aus aufeinanderfolgenden Speicheradressen, beginnend bei der ersten Datenadresse, lesen. In Block 906 empfängt der Fehlererkennungsblock 272 die an der/den Datenadresse(n) gespeicherten Daten von dem ersten Teilbereich 252. 9 is a flowchart illustrating the method 900 for reading data from the spin-off 250 (see 2 , 8th and 10 ), according to some embodiments of the present disclosure. For better illustration, the method 900 is illustrated as being performed by the error detection block 272 (see 2 , 8th and 10 ) is described. Before starting the procedure 900, the initiator 802 (see 8th ) forwards a first read instruction including one or more data addresses to the error detection block 272. As a non-limiting example, the first read instruction may only include a first data address. Referring to 9 In a first block 902, the error detection block 272 receives the first read instruction including the data address(es) from the initiator 802. In block 904, the error detection block 272 forwards the first read instruction to the first partition 252, which requests the data stored at the data address(es). If the first read instruction includes only the first data address, the first partition 252 may read a predetermined amount of data (e.g., 16 bytes) from consecutive memory addresses starting at the first data address. In block 906, the error detection block 272 receives the data stored at the data address(es) from the first partition 252.

Dann bestimmt der Fehlererkennungsblock 272 in Block 908 die Codeadresse(n) für den/die Fehlererkennungscode(s), die den Daten entsprechen (z. B. unter Verwendung der vorstehenden Gleichung 2). Als nicht einschränkendes Beispiel können die Codeadresse(n) zumindest teilweise basierend auf der/den Datenadresse(n) bestimmt werden. Beispielsweise kann gemäß der vorstehenden Gleichung 2 jede der Codeadress(en) berechnet werden, indem der Offset (der Wert der Variablen „fester_Offset“) zu einer entsprechenden der Datenadresse(n) (dem Wert der Variablen „Schreiben_Adresse“) addiert wird. Abhängig von den Implementierungsdetails kann der Fehlererkennungsblock 272 nur eine erste Codeadresse basierend auf der ersten Datenadresse identifizieren. Dann wartet der Fehlererkennungsblock 272 in Block 910 (z. B. einige Taktzyklen), um den/die Fehlererkennungscode(s) anzufordern, die an der/den in Block 908 bestimmten Codeadresse(n) gespeichert sind. Somit führt der Fehlererkennungsblock 272 in Block 910 eine Verzögerung zwischen dem Lesen der Daten und dem Lesen des/der Fehlererkennungscodes aus der/den Codeadresse(n) ein. Der Fehlererkennungsblock 272 kann einen Leseverzögerungszeitgeber (nicht gezeigt) beinhalten, der verwendet wird, um zu bestimmen, wie lange der Fehlererkennungsblock 272 in Block 910 wartet. Somit kann der Fehlererkennungsblock 272 eine sechste vorbestimmte Zeitdauer warten, bevor er den/die Fehlererkennungscode(s) von dem zweiten Teilbereich 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) may be calculated by adding the offset (the value of the variable “fixed_offset”) to a corresponding one of the data address(es) (the value of the variable “write_address”). Depending on the implementation details, the error detection block 272 may only identify 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. Thus, 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) 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 partition 254.

Nach dem Warten sendet der Fehlererkennungsblock 272 im nächsten Block 912 eine zweite Leseanweisung an den zweiten Teilbereich 254, die die in Block 908 bestimmte(n) Codeadresse(n) beinhaltet und den/die Fehlererkennungscode(s) anfordert, der/die an dieser/diesen Codeadresse(n) gespeichert sind. Der Fehlererkennungsblock 272 greift somit zum Lesen der Daten zweimal auf die Ausgliederung 250 zu, jeweils einmal in den Blöcken 904 und 912. Wenn die zweite Leseanweisung nur die erste Codeadresse beinhaltet, kann der zweite Teilbereich 254 eine vorbestimmte Anzahl von Fehlererkennungscodes (z. B. 16 Byte) aus aufeinander folgenden Speicheradressen, beginnend bei der ersten Codeadresse, lesen. In Block 914 empfängt der Fehlererkennungsblock 272 den/die Fehlererkennungscode(s), die an der/den Codeadresse(n) gespeichert sind, von dem zweiten Teilbereich 254. In Block 916 bestimmt der Fehlererkennungsblock 272 einen Prüfcode für jeden der Fehlererkennungscodes, die in Block 914 erlangt wurden (z. B. unter Verwendung der vorstehenden Gleichung 1).After waiting, the error detection block 272 sends a second read instruction to the second subarea 254 in the next block 912, which contains the code address(es) determined in block 908 and requests the error detection code(s) stored at that code address(es). The error detection block 272 thus accesses the partition 250 twice to read the data, once each in blocks 904 and 912. If the second read instruction includes only the first code address, the second partition 254 may read a predetermined number of error detection codes (e.g., 16 bytes) from consecutive memory addresses starting at 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 partition 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).

Bei Entscheidungsblock 918 bestimmt der Fehlererkennungsblock 272 für jeden der Fehlererkennungscode(s), ob der Fehlererkennungscode mit dem Prüfcode übereinstimmt, der dem Fehlererkennungscode entspricht (z. B. unter Verwendung der vorstehenden Gleichung 3). Die Entscheidung in Entscheidungsblock 918 lautet „JA“, wenn der Fehlererkennungscode mit seinem entsprechenden Prüfcode übereinstimmt. Andernfalls lautet die Entscheidung in Entscheidungsblock 918 „NEIN“. Wenn die Entscheidung in Entscheidungsblock 918 „JA“ lautet, leitet der Fehlererkennungsblock 272 die dem Fehlererkennungscode entsprechenden Daten in Block 920 an den Initiator 802 (siehe 8) weiter. Wenn die Entscheidung in Entscheidungsblock 918 „NEIN“ lautet, generiert der Fehlererkennungsblock 272 in Block 922 einen Nichtübereinstimmungsfehler und sendet ihn an den Initiator 802 und den SI-Störungsaggregator 142 (siehe 1, 2 und 4), sodass der Nichtübereinstimmungsfehler durch eine Sicherheitssoftware, die durch die Anweisungen 149 implementiert und durch den Prozessor 140 ausgeführt wird, gelöscht werden kann. 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) beinhaltet, die verwendet werden können, um die Daten wiederherzustellen. Wenn der Fehlererkennungsblock 272 in der Lage ist, den Fehler zu korrigieren, kann der Fehlererkennungsblock 272 das Generieren des Nichtübereinstimmungsfehlers in Block 922 weglassen. Nach dem Block 920 fährt der Fehlererkennungsblock 272 mit Block 920 fort und leitet die Daten an den Initiator 802 weiter. Dann endet das Verfahren 900.At decision block 918, the error detection block 272 determines for each of the error detection code(s) whether the error detection code matches the check code corresponding 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 its corresponding check code. Otherwise, the decision in decision block 918 is "NO". If the decision in decision block 918 is "YES", the error detection block 272 passes 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”, the error detection block 272 generates a mismatch error in block 922 and sends it to the initiator 802 and the SI fault aggregator 142 (see 1 , 2 and 4 ) so that the mismatch error can be cleared by security software implemented by instructions 149 and executed by processor 140. Optionally, if the error detection code (e.g., implemented as ECC) includes information (e.g., bits) that can be used to recover the data, error detection block 272 may attempt to correct the mismatch in block 922. If error detection block 272 is able to correct the error, error detection block 272 may omit generating the mismatch error in block 922. After block 920, error detection block 272 proceeds to block 920 and passes the data to initiator 802. Method 900 then ends.

Der Fehlererkennungsblock 272 kann jeweils zwei oder mehr Bytes von Daten und deren entsprechende Fehlererkennungscodes aus der Ausgliederung 250 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 Teilbereich 252 senden, der zwei oder mehr Bytes von Daten aus einer ersten Datenadresse anfordert. Der erste Teilbereich 252 kann die Bytes von Daten aus aufeinander folgenden Speicheradressen, beginnend mit der ersten Datenadresse, lesen und die Bytes von Daten an den Fehlererkennungsblock 272 senden, die der Fehlererkennungsblock 272 in Block 906 empfängt. Dann kann der Fehlererkennungsblock 272 in Block 908 Codeadresse(n) basierend auf der/den Datenadresse(n) bestimmen. Abhängig von den Implementierungsdetails kann der Fehlererkennungsblock 272 nur eine erste Codeadresse basierend auf der ersten Datenadresse identifizieren. Dann führt der Fehlererkennungsblock 272 in Block 910 eine Verzögerung zwischen dem Lesen der Bytes von Daten und dem Lesen der Fehlererkennungscodes aus der Ausgliederung 250 ein. Anschließend kann der Fehlererkennungsblock 272 die in der Ausgliederung 250 gespeicherten Fehlererkennungscodes für die in Block 906 erlangten Bytes von Daten anfordern. Beispielsweise kann der Fehlererkennungsblock 272 die erste Codeadresse an den zweiten Teilbereich 254 senden. Der zweite Teilbereich 254 kann die Fehlererkennungscodes aus aufeinander folgenden Speicheradressen, beginnend mit der ersten Codeadresse, lesen und die Fehlererkennungscodes an den Fehlererkennungsblock 272 senden, die der Fehlererkennungsblock 272 in Block 914 empfängt. Anschließend wird das Verfahren 900 mit Block 916 fortgesetzt.The error detection block 272 may read two or more bytes of data and their corresponding error detection codes from the carve-out 250 at a time. For example, blocks 904-914 may 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 sub-area 252 requesting two or more bytes of data from a first data address. The first sub-area 252 may read the bytes of data from consecutive memory addresses beginning with the first data address and send the bytes of data to the error detection block 272 that the error detection block 272 receives in block 906. Then, in block 908, the error detection block 272 may determine code address(es) based on the data address(es). Depending on implementation details, the error detection block 272 may only identify 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 bytes of data and reading the error detection codes from the carve-out 250. The error detection block 272 may then request the error detection codes stored in the carve-out 250 for the bytes of data obtained in block 906. For example, the error detection block 272 may send the first code address to the second sub-area 254. The second sub-area 254 may read the error detection codes from consecutive 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. The method 900 then continues with block 916.

10 veranschaulicht ein Beispiel des Fehlererkennungsblocks 272, der das Verfahren 900 durchführt. In diesem Beispiel liest der Prozessor 140 16 Byte von Daten aus der Ausgliederung 250, die durch das in 8 veranschaulichte Beispiel gespeichert sind. In 10 werden die gelesenen Daten in einem Array von 128 Bits mit der Bezeichnung „rdata_in[127:0]“ gespeichert oder durch dieses dargestellt und die Daten werden beginnend mit der ersten Datenadresse gespeichert, die in einem Array von 40 Bits mit der Bezeichnung „Adresse_0[39:0]“ gespeichert ist oder durch dieses dargestellt ist. 10 zeigt den Initiator 802 (z. B. den Prozessor 140), der eine erste Leseanweisung 1004 über die Sicherheitsinselzusammenschaltung 808 an den Fehlererkennungsblock 272 sendet. Die Sicherheitsinselzusammenschaltung 808 liefert die erste Leseanweisung 1004 an den Fehlererkennungsblock 272 (z. B. Block 902 in 9). 10 illustrates an example of the error detection block 272 that performs the method 900. In this example, the processor 140 reads 16 bytes of data from the partition 250 provided by the 8th illustrated example. In 10 the read data is stored in or represented by an array of 128 bits named "rdata_in[127:0]" and the data is stored starting with the first data address, which is stored in or represented by an array of 40 bits named "address_0[39:0]". 10 shows the initiator 802 (e.g., the processor 140) sending a first read instruction 1004 to the fault detection block 272 via the safety island interconnect 808. The safety island interconnect 808 provides the first read instruction 1004 to the fault detection block 272 (e.g., block 902 in 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 8 als „Zeit=T3“ bezeichnet) an den ersten Teilbereich 252 der Ausgliederung 250. Mit anderen Worten leitet der Fehlererkennungsblock272 die erste Leseanweisung an den ersten Teilbereich 252 der Ausgliederung 250 weiter (z. B. Block 904 in 9). Die Schnittstelle 200A des flüchtigen Speichers kommuniziert die erste Leseanweisung über das Datenbackbone- und Speicherteilsystem 826 des Kraftfahrzeug-SoC 104 an die Ausgliederung 250. In 10 wird die erste Leseanweisung durch den Fehlererkennungsblock 272 in einem Signal 1010 an den ersten Teilbereich 252 gesendet.The error detection block 272 sends the first data address via the volatile memory interface 200A (see 2 ) at a third point in time (e.g. in 8th referred to as “time=T3”) to the first sub-area 252 of the outsourcing 250. In other words, the error detection block 272 forwards the first read instruction to the first subarea 252 of the outsourcing 250 (e.g. block 904 in 9 ). The volatile memory interface 200A communicates the first read instruction to the spin-off 250 via the data backbone and memory subsystem 826 of the automotive SoC 104. In 10 the first read instruction is sent by the error detection block 272 in a signal 1010 to the first subarea 252.

Der erste Teilbereich 252 liest die Daten aus dem Speicher beginnend mit dem ersten Byte („Byte 0“) an der ersten Datenadresse und liest die nachfolgenden Bytes aus nachfolgenden Datenadressen nach der ersten Datenadresse. Die SI 110 kann Daten mit einer vorbestimmten Größe (z. B. 16 Byte) aus der Ausgliederung 250 lesen. Dann sendet der erste Teilbereich 252 ein Antwortsignal 1012 an den Initiator 802, das die gelesenen Daten beinhaltet. Das Antwortsignal 1012 wird durch den ersten Teilbereich 252 an das Datenbackbone- und Speicherteilsystem 826 gesendet, das das Antwortsignal 1012 an die Schnittstelle 200A des flüchtigen Speichers (siehe 2) weiterleitet. Wenn die Schnittstelle 200A des flüchtigen Speichers entsperrt ist, leitet die Schnittstelle 200A des flüchtigen Speichers das Antwortsignal 1012 an einen ersten (Daten-)Puffer 820 weiter (z. B. Block 906 in 9). Die Daten, die gelesen und in das Antwortsignal 1012 aufgenommen wurden, geben automatisch die Daten-Lesen-Abschlüsse an und können daher als Daten-Lesen-Abschlussantworten charakterisiert werden. Wie es der erste (Daten-)Puffer 820 mit den Daten-Schreiben-Abschlussantworten tut, kann der erste (Daten-)Puffer 820 die Daten-Lesen-Abschlussantworten in einer erwarteten Reihenfolge in dem Antwortsignal 1012 platzieren. An diesem Punkt wurden in diesem Beispiel die Daten (z. B. 16 Byte) in einem ersten einzigen Lesevorgang aus dem ersten Teilbereich 252 gelesen und durch den ersten (Daten-)Puffer 820 in der erwarteten Reihenfolge platziert.The first sub-area 252 reads the data from the memory starting with the first byte (“byte 0”) at the first data address and reads the subsequent bytes from subsequent data addresses after the first data address. The SI 110 may read data of a predetermined size (e.g., 16 bytes) from the partition 250. Then, the first sub-area 252 sends a response signal 1012 to the initiator 802 that includes the read data. The response signal 1012 is sent by the first sub-area 252 to the data backbone and storage subsystem 826, which sends the response signal 1012 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 1012 to a first (data) buffer 820 (e.g., block 906 in 9 ). The data read and included in the response signal 1012 automatically indicates the data read completions and thus may be characterized as data read completion responses. As the first (data) buffer 820 does with the data write completion responses, the first (data) buffer 820 may place the data read completion responses in an expected order in the response signal 1012. At this point, in this example, the data (e.g., 16 bytes) has been read from the first sub-area 252 in a first single read operation and placed in the expected order by the first (data) buffer 820.

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

Als Nächstes wartet der Fehlererkennungsblock 272 (z. B. Block 910 in 9) bis zu einem vierten Zeitpunkt (z. B. in 10 als „Zeit=T4“ identifiziert). Zum vierten Zeitpunkt fordert der Fehlererkennungsblock 272 den/die Fehlererkennungscode(s), die an der/den ersten Codeadresse(n) innerhalb des zweiten Teilbereichs 254 gespeichert sind, über die Schnittstelle 200A des flüchtigen Speichers (siehe 2) an. Mit anderen Worten sendet der Fehlererkennungsblock 272 die zweite Leseanweisung an den zweiten Teilbereich 254 der Ausgliederung 250 (z. B. Block 912 in 9). Die Schnittstelle 200A des flüchtigen Speichers kommuniziert die zweite Leseanweisung über das Datenbackbone- und Speicherteilsystem 826 des Kraftfahrzeug-SoC 104 an die Ausgliederung 250. In 10 wird die zweite Leseanweisung durch den Fehlererkennungsblock 272 in einem Signal 1014 an den zweiten Teilbereich 254 gesendet.Next, the error detection block 272 (e.g. block 910 in 9 ) to a fourth point in time (e.g. in 10 identified 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) within the second sub-area 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 subarea 254 of the partition 250 (e.g., block 912 in 9 ). The volatile memory interface 200A communicates the second read instruction to the spin-off 250 via the data backbone and memory subsystem 826 of the automotive SoC 104. In 10 the second read instruction is sent by the error detection block 272 in a signal 1014 to the second subarea 254.

Der zweite Teilbereich 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 aus nachfolgenden Codeadressen nach der ersten Codeadresse liest. Im Beispiel der 8 und 10 sind der/die Fehlererkennungscode(s) jeweils ein Byte groß. Dann sendet der zweite Teilbereich 254 ein Antwortsignal 1016 an den Initiator 802, das den/die Fehlererkennungscode(s) beinhaltet, die aus dem Speicher gelesen werden. In 10 sind Signale, die die Fehlererkennungscodes tragen, und das Signal 1014 durch gestrichelte Pfeile veranschaulicht. Bei der in 10 veranschaulichten Ausführungsform wird das Antwortsignal 1016 durch den zweiten Teilbereich 254 an das Datenbackbone- und Speicherteilsystem 826 gesendet, das das Antwortsignal 1016 an die Schnittstelle 200A des flüchtigen Speichers (siehe 2) weiterleitet. Wenn die Schnittstelle 200A des flüchtigen Speichers entsperrt ist, leitet die Schnittstelle 200A des flüchtigen Speichers das Antwortsignal 1016 an einen zweiten (Code-)Puffer 822 weiter (z. B. Block 914 in 9). Die Fehlererkennungscodes, die gelesen und in das Antwortsignal 1016 aufgenommen wurden, geben automatisch die Daten-Lesen-Abschlüsse an und können daher als Daten-Lesen-Abschlussantworten charakterisiert werden. Wie es der zweite (Code-)Puffer 822 mit den Code-Schreiben-Abschlussantworten tut, kann der zweite (Code-)Puffer 822 die Code-Lesen-Abschlussantworten in einer erwarteten Reihenfolge in dem Antwortsignal 1016 platzieren. An diesem Punkt wurden in diesem Beispiel die Fehlererkennungscodes (z. B. 16 Byte) in einem zweiten einzigen Lesevorgang aus dem zweiten Teilbereich 254 gelesen und durch den zweiten (Code-)Puffer 822 in der erwarteten Reihenfolge platziert.The second sub-area 254 reads the error detection codes from the memory by reading the first error detection code (for “byte 0”) at the first code address and reading the subsequent error detection codes from subsequent code addresses after the first code address. In the example of 8th and 10 the error detection code(s) are each one byte in size. Then the second sub-area 254 sends a response signal 1016 to the initiator 802, which contains the error detection code(s) read from the memory. In 10 are signals that carry the error detection codes, and the signal 1014 is illustrated by dashed arrows. 10 illustrated embodiment, the response signal 1016 is sent by the second portion 254 to the data backbone and storage subsystem 826, which transmits 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 a second (code) buffer 822 (e.g., block 914 in 9 ). The error detection codes read and included in the response signal 1016 automatically indicate the data read completions and therefore may be characterized as data read completion responses. As the second (code) buffer 822 does with the code write completion responses, the second (code) buffer 822 may place the code read completion responses in an expected order in the response signal 1016. At this point, in this example, the error detection codes (e.g., 16 bytes) have been read from the second sub-area 254 in a second single read operation and placed in the expected order by the second (code) buffer 822.

Wenn der Fehlererkennungsblock 272 bis zum vierten Zeitpunkt (z. B. in 10 als Zeit=T4 bezeichnet) wartet (z. B. Block 910 in 9), trennt der Fehlererkennungsblock 272 lediglich die erste und die zweite Leseanweisung zeitlich. Der Fehlererkennungsblock 272 kann den/die Fehlererkennungscode(s) von dem zweiten Teilbereich 254 anfordern, nachdem der Fehlererkennungsblock 272 die Daten in dem Antwortsignal 1012 empfangen hat. Alternativ 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 Teilbereich 254 anfordert. Mit anderen Worten kann der vierte Zeitpunkt basierend auf dem Senden der ersten Leseanweisung bestimmt werden und nicht auf dem Empfangen des Antwortsignals 1012.If the error detection block 272 is not active until the fourth time (e.g. in 10 referred to as time=T4) waits (e.g. block 910 in 9 ), the error detection block 272 merely separates the first and second read instructions in time. The error detection block 272 may request the error detection code(s) from the second subarea 254 after the error detection block 272 has received the data in the response signal 1012. Alternatively, the 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 subarea 254. In other words, the fourth time may be determined based on the sending of the first read instruction and not on the receiving of the response signal 1012.

Wie vorstehend erwähnt, kann der erste (Daten-)Puffer 820 die Bytes neu ordnen, da die Bytes im Antwortsignal 1012 möglicherweise durcheinander sein können. Gleichermaßen kann der zweite (Code-)Puffer 822 die Fehlererkennungscodes neu ordnen, wenn die Fehlererkennungscodes im Antwortsignal 1016 durcheinander sind. Der erste (Daten-)Puffer820 gibt Signale 1022-0 bis 1022-15 aus, die jeweils eines der Bytes von Daten tragen, und der zweite (Code-)Puffer 822 gibt Signale 1024-0 bis 1024-15 aus, die jeweils einen der Fehlererkennungscodes tragen. Die Signale 1022-0 bis 1022-15 entsprechen jeweils den Signalen 1024-0 bis 1024-15. Der erste und zweite Puffer 820 und 822 können die Signale 1022-0 bis 1022-15 und 1024-0 bis 1024-15 weiterleiten oder neu ordnen, um jedes Byte von Daten an einer bekannten Stelle in Bezug auf den Fehlererkennungscode, der für das Byte erstellt wurde, zu positionieren. In der in 10 veranschaulichten Ausführungsform sind die durch die Signale 1022-0 bis 1022-15 getragenen Bytes mit den durch die Signale 1024-0 bis 1024-15 getragenen Fehlererkennungscodes verschachtelt. Somit werden, wie in 10, die Bytes von Daten an Stellen platziert, die durch die schraffierten Blöcke b0-b15 dargestellt sind, und der/die Fehlererkennungscode(s) an Stellen platziert, die durch die Blöcke c0-c15 dargestellt sind.As mentioned above, the first (data) buffer 820 may reorder the bytes because the bytes in the response signal 1012 may be scrambled. Similarly, the second (code) buffer 822 may reorder the error detection codes if the error detection codes in the response signal 1016 are scrambled. The first (data) buffer 820 outputs signals 1022-0 through 1022-15, each carrying one of the bytes of data, and the second (code) buffer 822 outputs signals 1024-0 through 1024-15, each carrying one of the error detection codes. The signals 1022-0 through 1022-15 correspond to the signals 1024-0 through 1024-15, respectively. The first and second buffers 820 and 822 may route or reorder the signals 1022-0 through 1022-15 and 1024-0 through 1024-15 to position each byte of data at a known location relative to the error detection code created for the byte. In the 10 illustrated embodiment, the bytes carried by signals 1022-0 through 1022-15 are interleaved with the error detection codes carried by signals 1024-0 through 1024-15. Thus, as in 10 , the bytes of data are placed at locations represented by the hatched blocks b0-b15, and the error detection code(s) are placed at locations represented by the blocks c0-c15.

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

Der Fehlererkennungsblock 272 bestimmt für jeden der Fehlererkennungscode(s), ob der Fehlererkennungscode mit dem Prüfcode übereinstimmt, der dem Fehlererkennungscode entspricht (z. B. Entscheidungsblock 918 in 9). Der Fehlererkennungsblock 272 gibt an, ob sie in einem Durchlaufsignal 1030 übereinstimmen, das zusammen mit einem Datensignal 1032, das das Byte von Daten beinhaltet, an eine Logikkomponente 1034 weitergeleitet wird, die in 10 als UND-Gate implementiert veranschaulicht ist. Wenn das Durchlaufsignal 1030 angibt, 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 Bytes von Daten beinhaltet) aus und leitet das geprüfte Datensignal 1036 an den Initiator 802 weiter. Wenn dagegen das Durchlaufsignal 1030 eine Nichtübereinstimmung angibt, 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 angeben, dass eine Nichtübereinstimmung aufgetreten ist. Als nicht einschränkendes Beispiel können die Bits des Byte, die die Nichtübereinstimmung generiert haben, auf Null gesetzt werden. Das geprüfte Datensignal 1036 wird an den Initiator 802 (z. B. Block 920 in 9) weitergeleitet. Der Fehlererkennungsblock 272 kann einen Nichtübereinstimmungsfehler generieren und an den Initiator 802 senden, wenn der Fehlererkennungscode nicht mit dem Prüfcode übereinstimmt, der dem Fehlererkennungscode entspricht (z. B. Block 922 in 9). Mit anderen Worten, wenn das Durchlaufsignal 1030 eine oder mehrere Nichtübereinstimmungen angibt, kann der Fehlererkennungsblock 272 einen Nichtübereinstimmungsfehler generieren und an den Initiator 802 senden. Alternativ oder zusätzlich kann der Fehlererkennungsblock 272 den Nichtübereinstimmungsfehler als unkorrigierten Fehler an den SI-Störungsaggregator 142 senden. Somit kann ein Fehler, der bei der Speicherung in der Ausgliederung 250 und/oder dem Abruf aus der Ausgliederung 250 in den Daten oder dem/den Fehlererkennungscode(s) auftritt, erkannt und berichtet werden (z. B. als unkorrigierter Fehler).The error detection block 272 determines for each of the error detection codes whether the error detection code matches the check code corresponding to the error detection code (e.g., decision block 918 in 9 ). The error detection block 272 indicates whether they match in a pass signal 1030 which is passed along with a data signal 1032 containing the byte of data to a logic component 1034 which is in 10 implemented 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 (which includes only bytes of data) and passes the checked data signal 1036 to the initiator 802. Conversely, if the pass signal 1030 indicates a mismatch, the logic component 1034 does not pass the byte in the checked 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 occurred. As a non-limiting example, the bits of the byte that generated the mismatch may be set to zero. The tested data signal 1036 is sent to the initiator 802 (e.g. block 920 in 9 ). The error detection block 272 may generate and send a mismatch error to the initiator 802 if the error detection code does not match the check code corresponding to the error detection code (e.g., block 922 in 9 ). In other words, if the pass signal 1030 indicates one or more mismatches, the error detection block 272 may generate and send a mismatch error to the initiator 802. Alternatively or additionally, the error detection block 272 may send the mismatch error to the SI fault aggregator 142 as an uncorrected error. Thus, an error that occurs in the data or error detection code(s) during storage in the partition 250 and/or retrieval from the partition 250 may be detected and reported (e.g., as an uncorrected error).

Wie vorstehend erwähnt, kann die Schnittstelle 200A des flüchtigen Speichers die zwei parallelen und optional dedizierten Schnittstellen beinhalten, die den Fehlererkennungsblock 272 mit dem flüchtigen Speicher 126 verbinden. In derartigen Ausführungsformen kann der Fehlererkennungsblock 272 die erste Leseanweisung, die die erste Datenadresse (z. B. in dem Signal 1010) beinhaltet, über die erste Schnittstelle an den ersten Teilbereich 252 gleichzeitig mit dem Senden der zweiten Leseanweisung, die die erste Codeadresse (z. B. in dem Signal 1014) beinhaltet, über die zweite Schnittstelle durch den Fehlererkennungsblock 272 an den zweiten Teilbereich 254 senden. Ferner können die aus dem ersten Teilbereich 252 gelesenen (z. B. und in dem Antwortsignal 1012 übertragenen) Daten und der/die Fehlererkennungscode(s), die aus dem zweiten Teilbereich 254 gelesen (z. B. und in dem Antwortsignal 1016 übertragen) werden, gleichzeitig über die erste bzw. zweite Schnittstelle an den ersten bzw. zweiten Puffer 820 bzw. 822 übertragen werden.As mentioned above, the volatile memory interface 200A may include the two parallel and optionally dedicated interfaces connecting 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 the signal 1010) to the first partition 252 over the first interface simultaneously with the error detection block 272 sending the second read instruction including the first code address (e.g., in the signal 1014) to the second partition 254 over the second interface. Furthermore, the data read from the first sub-area 252 (e.g., and transmitted in the response signal 1012) and the error detection code(s) read from the second sub-area 254 (e.g., and transmitted in the response signal 1016) may be simultaneously transmitted to the first and second buffers 820 and 822, respectively, via the first and second interfaces, respectively.

Unter Bezugnahme auf 2 kann der Fehlererkennungsblock 272 mindestens einen Transaktionszeitgeber, wie etwa Egress- und Ingress-Zeitgeber 274 und 276, beinhalten oder mit diesem verbunden sein, der eine Zeitdauer begrenzt, die der Fehlererkennungsblock 272 zum Lesen von Daten aus der Ausgliederung 250 und/oder zum Schreiben von Daten in diese hat. Der Egress-Zeitgeber 274 und/oder der Ingress-Zeitgeber 276 starten automatisch, wenn ein Zugriff den Fehlererkennungsblock 272 durchläuft. Beispielsweise kann der Ingress-Zeitgeber 276 immer dann starten, wenn Daten zwischen dem Fehlererkennungsblock 272 und dem Initiator 802 (z. B. dem Prozessor 140) hindurchlaufen, und der Egress-Timer 274 kann immer dann starten, wenn Daten zwischen dem Fehlererkennungsblock 272 und der SoC-Domäne (z. B. der Ausgliederung 250) hindurchlaufen. Der Ingress-Zeitgeber 276 kann dazu beitragen, die Funktion des Fehlererkennungsblocks 272 zu überwachen und/oder kann dazu beitragen, eine Backup-Funktionalität für den Egress-Zeitgeber 274 bereitzustellen (z. B. wenn der Egress-Zeitgeber 274 nicht ordnungsgemäß funktioniert).With reference to 2 the error detection block 272 may include or be connected to at least one transaction timer, such as egress and ingress timers 274 and 276, that limits a period of time that the error detection block 272 has to read data from and/or write data to the egress 250. The egress timer 274 and/or the ingress timer 276 start automatically when an access passes through the error detection block 272. For example, the ingress timer 276 may start whenever data passes between the error detection block 272 and the initiator 802 (e.g., the processor 140), and the egress timer 274 may start whenever data passes between the error detection block 272 and the SoC domain (e.g., the egress 250). The ingress timer 276 may help monitor the operation of the error detection block 272 and/or may help provide backup functionality for the egress timer 274 (e.g., if the egress timer 274 is not functioning properly).

Während eines Schreibvorgangs kann der Ingress-Zeitgeber 276 starten, wenn der Initiator 802 Daten an den Fehlererkennungsblock272 übergibt, um in den Ausgliederung 250 (z. B. bei Block 702 in 7) zu schreiben. Dann kann der Egress-Zeitgeber 274 starten, wenn diese Daten den Fehlererkennungsblock 272 und/oder die SI-Domäne verlassen (z. B. bei Block 708 in 7). Der Egress-Zeitgeber 274 kann anhalten oder zurückgesetzt werden, wenn die Antwort (z. B. das in 8 veranschaulichte Antwortsignal 828) von der Ausgliederung 250 durch den Fehlererkennungsblock 272 empfangen wird. Dann kann der Ingress-Zeitgeber 276 anhalten oder zurücksetzen, wenn die Antwort (z. B. das in 8 veranschaulichte Antwortsignal 828) durch den Fehlererkennungsblock 272 an den Initiator 802 (siehe 8) übertragen wird. Wenn der Egress-Zeitgeber 274 angibt, dass mehr als eine erste Schwellenzeitdauer verstrichen ist, und der Fehlererkennungsblock 272 die Antwort nicht erhalten hat, was bedeutet, dass der Initiator 802 keine Antwort von der Ausgliederung 250 (z. B. das in 8 veranschaulichte Antwortsignal 828) empfangen hat, generiert der Initiator 802 (z. B. der Prozessor 140) einen Egress-Zeitüberschreitungsfehler. Wenn der Ingress-Zeitgeber 276 angibt, dass mehr als eine zweite Schwellenzeitdauer verstrichen ist, und der Fehlererkennungsblock 272 die Antwort nicht an den Initiator 802 gesendet hat, was bedeutet, dass der Initiator 802 keine Antwort von der Ausgliederung 250 empfangen hat, generiert der Initiator 802 einen Ingress-Zeitüberschreitungsfehler.During a write operation, the ingress timer 276 may start when the initiator 802 passes data to the error detection block 272 to enter the outgress 250 (e.g., at block 702 in 7 ). Then, the egress timer 274 may start when this data leaves the error detection block 272 and/or the SI domain (e.g., at block 708 in 7 ). The egress timer 274 may stop or be reset when the response (e.g., the 8th illustrated response signal 828) from the outsource 250 is received by the error detection block 272. Then, the ingress timer 276 may stop or reset when the response (e.g., the 8th illustrated response signal 828) by the error detection block 272 to the initiator 802 (see 8th ). If the egress timer 274 indicates that more than a first threshold time period has elapsed and the error detection block 272 has not received the response, meaning that the initiator 802 has not received a response from the egress 250 (e.g., the 8th illustrated response signal 828), the initiator 802 (e.g., the processor 140) generates an egress timeout error. If the ingress timer 276 indicates that more than a second threshold time period 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 a response from the outsource 250, the initiator 802 generates an ingress timeout error.

Während eines Lesevorgangs kann der Ingress-Zeitgeber 276 starten, wenn der Fehlererkennungsblock 272 die Leseanforderung vom Initiator 802 empfängt (z. B. bei Block 902 in 9). Dann kann der Egress-Zeitgeber274 starten, wenn der Fehlererkennungsblock 272 die an der ersten Datenadresse gespeicherten Daten von der Ausgliederung 250 (z. B. bei Block 904 in 9) anfordert. Der Egress-Zeitgeber 274 kann anhalten oder zurückgesetzt werden, wenn die Daten von der Ausgliederung 250 durch den Fehlererkennungsblock 272 empfangen werden (z. B. bei Block 906 in 9). Dann kann der Ingress-Zeitgeber 276 anhalten oder zurückgesetzt werden, wenn die Daten durch den Fehlererkennungsblock 272 an den Initiator 802 übertragen werden (z. B. bei Block 920 in 9). Wenn der Egress-Zeitgeber 274 angibt, dass die erste Schwellenzeitdauer verstrichen ist und der Fehlererkennungsblock 272 die Daten von der Ausgliederung 250 nicht empfangen hat, was bedeutet, dass der Initiator 802 die Daten von dem Fehlererkennungsblock 272 (z. B. in dem in 10 veranschaulichten geprüften Datensignal 1036) nicht empfangen hat, generiert der Initiator 802 den Egress-Zeitüberschreitungsfehler. Wenn der Ingress-Zeitgeber 276 angibt, dass mehr als die zweite Schwellenzeitdauer verstrichen ist, und der Fehlererkennungsblock 272 die Daten nicht an den Initiator 802 gesendet hat, was bedeutet, dass der Initiator 802 keine Daten von der Ausgliederung 250 empfangen hat, generiert der Initiator 802 einen Ingress-Zeitüberschreitungsfehler.During a read operation, the ingress timer 276 may start when the error detection block 272 receives the read request from the initiator 802 (e.g., at block 902 in 9 ). Then, the egress timer 274 may start when the error detection block 272 retrieves the data stored at the first data address from the egress 250 (e.g., at block 904 in 9 ). The egress timer 274 may stop or be reset when the data from the egress 250 is received by the error detection block 272 (e.g., at block 906 in 9 ). Then, the ingress timer 276 may stop or be reset when the data is transferred to the initiator 802 by the error detection block 272 (e.g., at block 920 in 9 ). If the egress timer 274 indicates that the first threshold period has elapsed and the error detection block 272 has not received the data from the egress 250, meaning that the initiator 802 has received the data from the error detection block 272 (e.g., in the example shown in 10 If the ingress timer 276 indicates that more than the second threshold time period has elapsed and the error detection block 272 has not sent the data to the initiator 802, meaning that the initiator 802 has not received data from the egress 250, the initiator 802 generates an ingress timeout error.

11 ist eine Veranschaulichung eines Blockdiagramms, das Fehlermeldungen zeigt, die durch den Fehlererkennungsblock 272 (siehe 2, 8 und 10) generiert werden, wenn der Fehlererkennungsblock 272 den Egress- und den Ingress-Zeitgeber 274 und 276 (siehe 2) beinhaltet oder mit diesen verbunden ist, gemäß einigen Ausführungsformen. 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) beinhaltet, an den Fehlererkennungsblock 272. Wie vorstehend erwähnt, kann der Egress-Zeitgeber 274 starten, wenn die Daten während eines Schreibvorgangs den Fehlererkennungsblock 272 und/oder die SI-Domäne verlassen, und der Egress-Zeitgeber 274 kann starten, wenn der Fehlererkennungsblock 272 die an der ersten Datenadresse gespeicherten Daten während eines Lesevorgangs von dem Ausgliederung 250 anfordert. Der Block 1104 gibt an, dass der Egress-Zeitgeber 274 eine Zeitüberschreitung aufweist. Der Egress-Zeitgeber 274 kann beispielsweise eine Zeitüberschreitung aufweisen, wenn der Fehlererkennungsblock 272 während eines Schreibvorgangs keine Antwort von der Ausgliederung 250 (z. B. das in 8 veranschaulichte Antwortsignal 828) empfangen hat und mehr als die erste Schwellenzeitdauer verstrichen ist. Als weiteres nicht einschränkendes Beispiel kann der Egress-Zeitgeber 274 eine Zeitüberschreitung aufweisen, wenn der Fehlererkennungsblock 272 die Daten von dem Fehlererkennungsblock 272 (z. B. in dem in 10 veranschaulichten Antwortsignal 1012) während eines Lesevorgangs nicht empfangen hat und mehr als die erste Schwellenzeitdauer verstrichen ist. Wenn der Egress-Zeitgeber 274 eine Zeitüberschreitung aufweist, generiert der Initiator 802 (z. B. der Prozessor 140) einen Egress-Zeitüberschreitungsfehler 1106 und leitet den Egress-Zeitüberschreitungsfehler 1106 an einen Fehlerprotokollierer 1108 weiter. Wenn andererseits der Egress-Zeitgeber 274 keine Zeitüberschreitung aufweist, kann der Egress-Zeitgeber 274 anhalten oder zurückgesetzt werden. Dies kann erfolgen, wenn der Fehlererkennungsblock 272 entweder während eines Schreibvorgangs die Antwort (z. B. das Antwortsignal 828) von der Ausgliederung 250 oder während eines Lesevorgangs die Daten (z. B. im Antwortsignal 1012) von der Ausgliederung 250 empfängt, bevor die erste Schwellenzeitdauer verstrichen ist. 11 is an illustration 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 triggers the egress and ingress timers 274 and 276 (see 2 ), according to some embodiments. In 11 the initiator sends 802 (see 8th and 10 ) a signal 1102 which either indicates the first write instruction 804 (see 8th ) or the first reading instruction 1004 (see 10 ) to the error detection block 272. As mentioned above, the egress timer 274 may start when the data leaves the error detection block 272 and/or the SI domain during a write operation, and the egress timer 274 may start when the error detection block 272 requests the data stored at the first data address from the egress 250 during a read operation. Block 1104 indicates that the egress timer 274 has timed out. For example, the egress timer 274 may time out if the error detection block 272 does not receive a response from the egress 250 (e.g., the one shown in 8th illustrated response signal 828) and more than the first threshold time period has elapsed. As another non-limiting example, the egress timer 274 may time out when the error detection block 272 receives the data from the error detection block 272 (e.g., in the 10 illustrated response signal 1012) during a reading operation and more when the first threshold time period has elapsed. If the egress timer 274 times out, the initiator 802 (e.g., the processor 140) generates an egress timeout error 1106 and forwards the egress timeout error 1106 to an error logger 1108. On the other hand, if the egress timer 274 does not time out, the egress timer 274 may stop or be reset. This may occur if the error detection block 272 receives either the response (e.g., response signal 828) from the egress 250 during a write operation or the data (e.g., in response signal 1012) from the egress 250 during a read operation before the first threshold time period has elapsed.

Wie vorstehend erwähnt, kann der Ingress-Zeitgeber 276 starten, wenn der Initiator 802 während eines Schreibvorgangs Daten an den Fehlererkennungsblock 272 übergibt, um in die Ausgliederung 250 (z. B. bei Block 702 in 7) zu schreiben, oder der Ingress-Zeitgeber 276 kann starten, wenn der Fehlererkennungsblock 272 während eines Lesevorgangs (z. B. bei Block 902 in 9) die Leseanforderung von dem Initiator 802 empfängt. Somit kann der Ingress-Zeitgeber 276 (siehe 2) starten, wenn das Signal 1102 die erste Leseanweisung 804 (siehe 8) oder die erste Leseanweisung 1004 (siehe 10) beinhaltet und diese Anweisung durch den Fehlererkennungsblock 272 (siehe 2, 8 und 10) empfangen wird. Block 1114 gibt an, dass der Ingress-Zeitgeber 276 eine Zeitüberschreitung aufweist. Der Ingress-Zeitgeber 276 kann beispielsweise eine Zeitüberschreitung aufweisen, wenn mehr als die zweite Schwellenzeitdauer verstrichen ist und der Initiator 802 (siehe 8) während eines Schreibvorgangs keine Antwort von der Ausgliederung 250 (z. B. das in 8 veranschaulichte Antwortsignal 828) empfangen hat. Als weiteres nicht einschränkendes Beispiel kann der Ingress-Zeitgeber 276 eine Zeitüberschreitung aufweisen, wenn mehr als die zweite Schwellenzeitdauer verstrichen ist und der Initiator 802 die Daten (z. B. das in 10 veranschaulichte geprüfte Datensignal 1036) während eines Lesevorgangs nicht von der Ausgliederung 250 empfangen hat. Bei einer Zeitüberschreitung des Ingress-Zeitgebers 276 generiert der Initiator 802 einen Ingress-Zeitüberschreitungsfehler 1116 und leitet den Ingress-Zeitüberschreitungsfehler 1116 an den Fehlerprotokollierer 1108 weiter. Wenn andererseits der Ingress-Zeitgeber 276 keine Zeitüberschreitung aufweist, kann der Ingress-Zeitgeber 276 anhalten oder zurückgesetzt werden. Dies kann erfolgen, wenn der Fehlererkennungsblock 272 während eines Schreibvorgangs die Antwort (z. B. das Antwortsignal 828) an den Initiator 802 überträgt oder der Fehlererkennungsblock 272 während eines Lesevorgangs die Daten (z. B. das geprüfte Datensignal 1036) an den Initiator 802 überträgt.As mentioned above, the ingress timer 276 may start when the initiator 802 passes data to the error detection block 272 during a write operation to enter the outgress 250 (e.g., at block 702 in 7 ), or the ingress timer 276 may start when the error detection block 272 is triggered during a read operation (e.g., at block 902 in 9 ) receives the read request from the initiator 802. Thus, the ingress timer 276 (see 2 ) when the signal 1102 receives the first read instruction 804 (see 8th ) or the first reading instruction 1004 (see 10 ) and this instruction is checked by the error detection block 272 (see 2 , 8th and 10 ) is received. Block 1114 indicates that the ingress timer 276 has timed out. For example, the ingress timer 276 may time out if more than the second threshold time period has elapsed and the initiator 802 (see 8th ) during a write operation no response from the outsourcing 250 (e.g. the 8th response signal 828 illustrated). As another non-limiting example, the ingress timer 276 may time out if more than the second threshold time period has elapsed and the initiator 802 has received the data (e.g., the 10 illustrated) from the ingress gate 250 during a read operation. If the ingress timer 276 times out, the initiator 802 generates an ingress timeout error 1116 and forwards the ingress timeout error 1116 to the error logger 1108. On the other hand, if the ingress timer 276 does not time out, the ingress timer 276 may stop or be reset. This may occur when the error detection block 272 transmits the response (e.g., response signal 828) to the initiator 802 during a write operation or the error detection block 272 transmits the data (e.g., the inspected data signal 1036) to the initiator 802 during a read operation.

Block 1124 gibt an, dass der Codegenerierungs-Unterblock 273 (siehe 2, 8 und 10) des Fehlererkennungsblocks 272 (siehe 2, 8 und 10) einen Codegenerierungs-/Prüffehler 1126 generieren kann, der angibt, dass ein Fehler während der Generierung eines Fehlererkennungscodes oder eines Prüfcodes aufgetreten ist. In einigen Ausführungsformen kann der Codegenerierungs-/Prüffehler 1126 verwendet werden, um anzugeben, dass eine Nichtübereinstimmung aufgetreten ist. Wenn als nicht einschränkendes Beispiel das Signal 1102 die erste Schreibanweisung 804 beinhaltet, kann der Codegenerierungs-Unterblock 273 einen Codegenerierungsfehler generierten, während er den/die Fehlererkennungscode(s) generiert. Als weitere nicht einschränkende Beispiele kann der Fehlererkennungsblock 272, wenn das Signal 1102 die erste Leseanweisung 1004 beinhaltet, einen Nichtübereinstimmungsfehler und/oder einen Codegenerierungsfehler während der Generierung des/der Prüfcodes generieren, der/die als Codegenerierungs-/Prüffehler 1126 an den Fehlerprotokollierer 1108 weitergeleitet werden.Block 1124 indicates that the code generation sub-block 273 (see 2 , 8th and 10 ) of the error detection block 272 (see 2 , 8th and 10 ) may generate a code generation/check error 1126 indicating that an error occurred during the generation of an error detection code or a check code. In some embodiments, the code generation/check error 1126 may be used to indicate that a mismatch occurred. As a non-limiting example, when the signal 1102 includes the first write instruction 804, the code generation sub-block 273 may generate a code generation error while generating the error detection code(s). As further non-limiting examples, when the signal 1102 includes the first read instruction 1004, the error detection block 272 may generate a mismatch error and/or a code generation error during the generation of the check code(s), which may be forwarded to the error logger 1108 as a code generation/check error 1126.

Der Fehlerprotokollierer 1108 kann als Störungsaggregator fungieren, der die Fehler 1106, 1116 und 1126 zu einer Fehlermeldung 1130 aggregiert, die der Fehlerprotokollierer 1108 an den SI-Störungsaggregator 142 sendet.The error logger 1108 may act as a fault aggregator that aggregates the errors 1106, 1116, and 1126 into an error message 1130 that the error logger 1108 sends to the SI fault aggregator 142.

Beim ersten Hochfahren des Kraftfahrzeug-SoC 104 kann der Prozessor 140 der SI 110 versuchen, Daten aus der Ausgliederung 250 vorab abzurufen. Das Vorab-Abrufen kann als eine Art unbeabsichtigtes Lesen von Daten aus der Ausgliederung 250 charakterisiert sein. Da der gemeinsam genutzte flüchtige Speicher 126 flüchtig ist, kann die Ausgliederung 250 an diesem Punkt uninitialisierte Daten speichern, die keine(n) Fehlererkennungscode(s) aufweisen oder nichtübereinstimmenden Fehlererkennungscode(s) zugeordnet sind. Um zu verhindern, dass der Fehlererkennungsblock 272 Nichtübereinstimmungsfehler generiert, kann die Sl 110 (z. B. der Prozessor 140, die DMA-Engine 402 und/oder dergleichen) einen oder mehrere Fehlererkennungscodes in die Ausgliederung 250 für die Daten schreiben, die der Prozessor 140 vorab abrufen wird oder könnte. Als nicht einschränkendes Beispiel kann die SI 110 Anfangsdaten in die Ausgliederung 250 schreiben, was die Hardware des Fehlererkennungsblocks 272 veranlasst, einen oder mehrere Fehlererkennungscodes für die Anfangsdaten zu bestimmen, die jeweils einer Codeadresse zugeordnet sind. Dann kann die SI 110 die Ausgliederung 250 veranlassen, jeden Fehlererkennungscode in seiner zugehörigen Codeadresse zu speichern. Während eines Vorab-Abrufens werden somit die Fehlererkennungscodes, die durch den zweiten Teilbereich 254 gespeichert sind, den Daten entsprechen, die in dem ersten Teilbereich 252 gespeichert sind, und der Fehlererkennungsblock 272 wird keine Nichtübereinstimmungsfehler generieren.When the automotive SoC 104 first boots, the processor 140 of the SI 110 may attempt to prefetch data from the spin-off 250. The prefetch may be characterized as a type of unintentional reading of data from the spin-off 250. Because the shared volatile memory 126 is volatile, the spin-off 250 may store uninitialized data at this point that does not have any error detection code(s) or is associated with mismatched error detection code(s). To prevent the error detection block 272 from generating mismatch 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 to the spin-off 250 for the data that the processor 140 will or may prefetch. As a non-limiting example, the SI 110 may write initial data to the partition 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 may cause the partition 250 to store each error detection code in its associated code address. Thus, during a prefetch, the error detection codes that stored by the second subarea 254 corresponds to the data stored in the first subarea 252 and the error detection block 272 will not generate any mismatch errors.

Die SI 110 kann unter Bezugnahme auf 2 den Codegenerierungs-Unterblock 273 (siehe 2, 8 und 10) und/oder den Fehlererkennungsblock 272 (z. B. mittels eines Softwareregisterschreibens) ausschalten, wenn die Kraftfahrzeugplattform 100 (siehe 1) die Ausgliederung 250 nicht benötigt. Beispielsweise kann die SI 110 den Codegenerierungs-Unterblock 273 und/oder den Fehlererkennungsblock 272 ausschalten, wenn der flüchtige Speicher 126 auf einer für die Kraftfahrzeugplattform 100 ausreichenden Risikostufe arbeitet.SI 110 can be interpreted with reference to 2 the code generation sub-block 273 (see 2 , 8th and 10 ) and/or the error detection block 272 (e.g. by means of a software register write) when the motor vehicle platform 100 (see 1 ) the outsourcing 250 is not required. For example, the SI 110 may disable the code generation sub-block 273 and/or the error detection block 272 when the volatile memory 126 is operating at a risk level sufficient for the automotive platform 100.

Es versteht sich, dass diese und andere hierin beschriebenen Anordnungen nur als Beispiele aufgeführt werden. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Befehle, Gruppierungen von Funktionen usw.) können zusätzlich oder anstelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Ferner sind viele der hierin beschriebenen Elemente funktionale Einheiten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und Position implementiert werden können. Verschiedene hierin als von Einheiten ausgeführt beschriebene Funktionen können durch Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen durch einen Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt.It should be understood that these and other arrangements described herein are provided as examples only. Other arrangements and elements (e.g., engines, interfaces, functions, instructions, groupings of functions, etc.) may be used in addition to or in place of those shown, and some elements may be omitted entirely. Further, 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 as being performed by units may be performed by hardware, firmware, and/or software. For example, various functions may be performed by a processor executing instructions stored in memory.

BEISPIELHAFTES AUTONOMES FAHRZEUGEXEMPLARY AUTONOMOUS VEHICLE

12 ist eine Veranschaulichung eines beispielhaften autonomen Fahrzeugs 1200 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Das autonome Fahrzeug 1200 (hier alternativ als „Fahrzeug 1200“ bezeichnet) kann ohne Einschränkung ein Personenfahrzeug sein, wie etwa ein Auto, ein Lastwagen, ein Bus, ein Rettungsfahrzeug, ein Shuttle, ein elektrisches oder motorisiertes Fahrrad, ein Motorrad, ein Feuerwehrauto, ein Polizeifahrzeug, ein Krankenwagen, ein Boot, ein Baufahrzeug, ein Unterwasserfahrzeug, eine Drohne und/oder eine andere Art von Fahrzeug (z. B. ein unbemanntes Fahrzeug und/oder ein Fahrzeug, das einen oder mehrere Passagiere aufnimmt). Autonome Fahrzeuge werden im Allgemeinen im Hinblick auf Automatisierungslevels 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“ (z. B. 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 sind. Das Fahrzeug 1200 kann zu einer Funktionalität gemäß einer oder mehreren von Level 2 - Level 5 der Level für autonomes Fahren, wie von der SAE definiert, in der Lage sein. Zum Beispiel kann das Fahrzeug 1200 je nach Ausführungsform zu einer teilweisen Automatisierung des Fahrens (Level 2), einer bedingten Automatisierung (Level 3), einer hohen Automatisierung (Level 4) und/oder einer vollständigen Automatisierung (Level 5) in der Lage sein. 12 is an illustration of an example autonomous vehicle 1200 in accordance with some embodiments of the present disclosure. The autonomous vehicle 1200 (alternatively referred to herein as “vehicle 1200”) may be, without limitation, a passenger vehicle, such as a car, a truck, a bus, an emergency vehicle, a shuttle, an electric or motorized bicycle, a motorcycle, a fire truck, a police vehicle, an ambulance, a boat, a construction vehicle, an underwater vehicle, a drone, and/or another type of vehicle (e.g., an unmanned vehicle and/or a vehicle that accommodates one or more passengers). Autonomous vehicles are generally described in terms of automation levels 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” (e.g., Standard No. J3016-201806, published June 15, 2018, Standard No. J3016-201609, published September 30, 2016, and prior and future versions of that standard). The vehicle 1200 may be capable of functionality according to one or more of Level 2 - Level 5 of the levels for autonomous driving as defined by the SAE. For example, depending on the embodiment, the vehicle 1200 may be capable of partial automation of driving (Level 2), conditional automation (Level 3), high automation (Level 4), and/or full automation (Level 5).

Das Fahrzeug 1200 kann Komponenten wie etwa ein Fahrgestell, eine Fahrzeugkarosserie, Räder (z. B. 2, 4, 6, 8, 18 usw.), Reifen, Achsen und andere Komponenten eines Fahrzeugs beinhalten. Das Fahrzeug 1200 kann ein Antriebssystem 1250 beinhalten, wie etwa eine Brennkraftmaschine, ein Hybridelektrotriebwerk, einen vollelektrischen Motor und/oder einen anderen Typ von Antriebssystem. Das Antriebssystem 1250 kann mit einem Antriebsstrang des Fahrzeugs 1200 verbunden sein, der ein Getriebe beinhalten kann, um den Antrieb des Fahrzeugs 1200 zu ermöglichen. Das Antriebssystem 1250 kann als Reaktion auf das Empfangen von Signalen von der Drossel/dem Fahrpedal 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 include a propulsion system 1250, such as an internal combustion engine, a hybrid electric powerplant, an all-electric motor, and/or another type of propulsion system. The propulsion system 1250 may be connected to a drivetrain of the vehicle 1200, which may include a transmission to facilitate propulsion of the vehicle 1200. The propulsion system 1250 may be controlled in response to receiving signals from the throttle/accelerator pedal 1252.

Ein Lenksystem 1254, das ein Lenkrad beinhalten kann, kann verwendet werden, um das Fahrzeug 1200 zu lenken (z. B. entlang eines gewünschten Pfads oder einer gewünschten Route), wenn das Antriebssystem 1250 in Betrieb ist (z. B., wenn das Fahrzeug in Bewegung ist). Das Lenksystem 1254 kann Signale von einem Lenkaktor 1256 empfangen. Für die vollständige Automatisierungsfunktionalität (Level 5) kann das Lenkrad optional sein.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 operating (e.g., when the vehicle is in motion). The steering system 1254 may receive signals from a steering actuator 1256. For full automation functionality (Level 5), the steering wheel may be optional.

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

Steuerung(en) 1236, der/die eine oder mehrere CPU(s), System on Chips (SoCs) 1204 (14) und/oder GPU(s) beinhalten kann/können, kann/können Signale (z. B. stellvertretend für Befehle) für eine oder mehrere Komponenten und/oder Systeme des Fahrzeugs 1200 bereitstellen. Die Steuerung(en) kann/können beispielsweise Signale zur Betätigung der Fahrzeugbremsen über einen oder mehrere Bremsaktoren 1248, zur Betätigung des Lenksystems 1254 über einen oder mehrere Lenkaktoren 1256, und/oder um das Antriebssystem 1250 über einen oder mehrere Drossel-/Fahrpedalaktoren 1252 zu betreiben, senden. Die Steuerung(en) 1236 kann/können eine oder mehrere bordeigene (z. B. integrierte) Rechenvorrichtungen (z. B. Supercomputer) beinhalten, die Sensorsignale verarbeiten und Betriebsbefehle ausgeben (z. B. Signale, die Befehle darstellen), um autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Führen des Fahrzeugs 1200 zu unterstützen. Die Steuerung(en) 1236 kann bzw. können eine erste Steuerung 1236 für autonome Fahrfunktionen, eine zweite Steuerung 1236 für funktionale Sicherheitsfunktionen, eine dritte Steuerung 1236 für Funktionalität künstlicher Intelligenz (z. B. Computer Vision), eine vierte Steuerung 1236 für Infotainmentfunktionalität, eine fünfte Steuerung 1236 für Redundanz in Notfällen und/oder andere Steuerungen beinhalten. In einigen Beispielen kann eine einzelne Steuerung 1236 zwei oder mehrere der vorstehenden Funktionalitäten handhaben, können zwei oder mehr Steuerungen 1236 eine einzelne Funktionalität handhaben und/oder eine beliebige Kombination davon.Controller(s) 1236, the one or more CPU(s), System on Chips (SoCs) 1204 ( 14 ) and/or GPU(s), may include signals (e.g., representing commands) for a or multiple 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, and/or to operate the propulsion system 1250 via one or more throttle/accelerator pedal actuators 1252. The controller(s) 1236 may include one or more on-board (e.g., embedded) 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 operating 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 functionality (e.g., computer vision), a fourth controller 1236 for infotainment functionality, a fifth controller 1236 for emergency redundancy, and/or other controllers. In some examples, a single controller 1236 may handle two or more of the foregoing functionalities, two or more controllers 1236 may handle a single functionality, and/or any combination thereof.

Die Steuerung(en) 1236 stellt/stellen Signale zum Steuern einer/eines oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 1200 als Reaktion auf Sensordaten bereit, die von einem oder mehreren Sensoren empfangen werden (z. B. Sensoreingaben). Die Sensordaten können zum Beispiel und ohne Einschränkung empfangen werden von Sensor(en) 1258 von globalen Navigationssatellitensystemen (z. B. Sensor(en) des globalen Positionsbestimmungssystems), RADAR-Sensor(en) 1260, Vibrationssensor(en) 1262, LIDAR-Sensor(en) 1264, Sensor(en) 1266 einer Trägheitsmesseinheit (inertial measurement unit - IMU) (z. B. Beschleunigungsmesser(n), Gyroskop(en), Magnetkompass(en), Magnetometer(n) usw.), Mikrofon(en) 1296, Stereokamera(s) 1268, Weitsichtkamera(s) 1270 (z. B. Fischaugenkameras), Infrarotkamera(s) 1272, Umgebungskamera(s) 1274 (z. B. 360-Grad-Kameras), Langstrecken- und/oder Mittelstreckenkamera(s) 1298, Geschwindigkeitssensor(en) 1244 (z. B. zum Messen der Geschwindigkeit des Fahrzeugs 1200), Vibrationssensor(en) 1242, Lenksensor(en) 1240, Bremssensor(en) 1246 (z. B. als Teil des Bremssensorsystems 1246) und/oder anderen Sensortypen.The controller(s) 1236 provides 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 be received, for example and without limitation, from global navigation satellite system sensor(s) 1258 (e.g., global positioning system sensor(s), RADAR sensor(s) 1260, vibration sensor(s) 1262, LIDAR sensor(s) 1264, 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 view camera(s) 1270 (e.g., fisheye cameras), infrared camera(s) 1272, environmental camera(s) 1274 (e.g., 360-degree cameras), long range and/or medium 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) 1246 (e.g., as part of the brake sensor system 1246), and/or other types of sensors.

Eine oder mehrere der Steuerung(en) 1236 kann/können Eingaben (z. B. durch Eingabedaten dargestellt) von einem Kombiinstrument 1232 des Fahrzeugs 1200 empfangen und Ausgaben (z. B. durch Ausgabedaten, Anzeigedaten usw. dargestellt) über eine Anzeige 1234 einer Mensch-Maschine-Schnittstelle (human-machine interface - HMI), einen akustischen Melder, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1200 bereitstellen. Die Ausgaben können Informationen wie etwa Fahrzeuggeschwindigkeit, Drehzahl, Zeit, Abbildungsdaten (z. B. die HD-Karte 1222 aus 14), Standortdaten (z. B. den Standort des Fahrzeugs 1200, wie etwa auf einer Karte), Richtung, Standort von anderen Fahrzeugen (z. B. ein Belegungsraster), Informationen über Objekte und Status von Objekten, wie sie durch die Steuerung(en) 1236 wahrgenommen werden, usw. beinhalten. Zum Beispiel kann die HMI-Anzeige 1234 Informationen über das Vorhandensein eines oder mehrerer Objekte (z. B. eines Straßenschilds, eines Warnschilds, einer umschaltenden Ampel usw.) und/oder Informationen über Fahrmanöver, die das Fahrzeug vorgenommen hat, vornimmt oder vornehmen wird (z. B. dass es jetzt die Spur wechselt, in zwei Meilen Ausfahrt 34B nimmt usw.), anzeigen.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 provide outputs (e.g., represented by output data, display data, etc.) via a human-machine interface (HMI) display 1234, an audible annunciator, a speaker, and/or via other components of the vehicle 1200. The outputs may include information such as vehicle speed, RPM, time, mapping data (e.g., the HD map 1222 of 14 ), location data (e.g., the location of the vehicle 1200, such as on a map), direction, location of other vehicles (e.g., an occupancy grid), information about objects and status of objects as perceived by the controller(s) 1236, etc. For example, the HMI display 1234 may display information about the presence of one or more objects (e.g., a road sign, a warning sign, a changing traffic light, etc.) and/or information about maneuvers the vehicle has made, is making, or will make (e.g., that it is changing lanes now, will take exit 34B in two miles, etc.).

Das Fahrzeug 1200 beinhaltet ferner eine Netzschnittstelle 1224, die drahtlose Antenne(n) 1226 und/oder Modem(s) zum Kommunizieren über ein oder mehrere Netze verwenden kann. Zum Beispiel kann die Netzschnittstelle 1224 zur Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000 usw. fähig sein. Die drahtlose(n) Antenne(n) 1226 kann bzw. können zudem die Kommunikation zwischen Objekten in der Umgebung (z. B. Fahrzeugen, mobilen Vorrichtungen usw.) unter Verwendung von (einem) lokalen Netz(en) wie etwa Bluetooth, Bluetooth LE, Z-Wave, ZigBee usw. und/oder Weitverkehrsnetz(en) mit geringem Stromverbrauch (low power wide-area networks - LPWANs) wie etwa LoRaWAN, SigFox usw. ermöglichen.The vehicle 1200 further includes a network interface 1224 that may utilize wireless antenna(s) 1226 and/or modem(s) to communicate over one or more networks. For example, the network interface 1224 may be capable of communicating over 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 network(s) such as Bluetooth, Bluetooth LE, Z-Wave, ZigBee, etc. and/or low power wide-area networks (LPWANs) such as LoRaWAN, SigFox, etc.

Wie vorstehend erwähnt, kann in mindestens einigen Ausführungsformen die Kraftfahrzeugplattform 100 (siehe 1) eine Komponente des autonomen Fahrzeugs 1200 sein. In derartigen Ausführungsformen beinhalten die Steuerung(en) 1236 das Kraftfahrzeug-SoC 104.As mentioned above, in at least some embodiments, the motor vehicle platform 100 (see 1 ) may be a component of the autonomous vehicle 1200. In such embodiments, the controller(s) 1236 include the automotive SoC 104.

13 ist ein Beispiel für die Positionen und Sichtfelder von Kameras für das beispielhafte autonome Fahrzeug 1200 der 12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die Kameras und die entsprechenden Sichtfelder stellen eine beispielhafte Ausführungsform dar und sind nicht als einschränkend aufzufassen. Zum Beispiel können zusätzliche und/oder alternative Kameras enthalten sein und/oder können sich die Kameras an unterschiedlichen Positionen am Fahrzeug 1200 befinden. 13 is an example of the positions and fields of view of cameras for the exemplary autonomous vehicle 1200 of the 12 in accordance with some embodiments of the present disclosure. The cameras and corresponding fields of view represent an example embodiment and are not intended to be limiting. For example, additional and/or alternative cameras may be included and/or the cameras may be located at different locations on the vehicle 1200.

Die Kameratypen für Kameras können Digitalkameras beinhalten, ohne darauf beschränkt zu sein, die zur Verwendung mit den Komponenten und/oder Systemen des Fahrzeugs 1200 ausgelegt sind. Die Kamera(s) kann/können mit der Automobilsicherheitsintegritätslevel (ASIL) B und/oder mit einer anderen ASIL betrieben werden. Die Kameraarten können in Abhängigkeit von der Ausführungsform zu einer beliebigen Bildaufnahmerate in der Lage sein, wie etwa 60 Bilder pro Sekunde (frames per second - fps), 120 fps, 240 fps usw. Die Kameras können dazu in der Lage sein, Rollblendenverschlüsse, globale Blendenverschlüsse, einen anderen Typ von Blendenverschluss oder eine Kombination davon zu verwenden. In einigen Beispielen kann die Farbfilteranordnung eine Rot-Klar-Klar-Klar (red clear clear clear - RCCC)-Farbfilteranordnung, eine Rot-Klar-Klar-Blau (red clear clear blue - RCCB)-Farbfilteranordnung, eine Rot-Blau-Grün-Klar (red blue green clear - RBGC)-Farbfilteranordnung, eine Foveon-X3-Farbfilteranordnung, eine Bayer-Sensoren (RGGB)-Farbfilteranordnung, eine Monochrom-Sensor-Farbfilteranordnung und/oder eine andere Art von Farbfilteranordnung beinhalten. In einigen Ausführungsformen können Klarpixelkameras, wie zum Beispiel Kameras mit einer RCCC-, einer RCCB- und/oder einer RBGC-Farbfilteranordnung, in einem Bestreben zur Erhöhung der Lichtempfindlichkeit verwendet werden.The camera types for cameras may include, but are not limited to, digital cameras designed for use with the components and/or systems of the vehicle 1200. The camera(s) may operate at Automotive Safety Integrity Level (ASIL) B and/or another ASIL. The camera types may be capable of any image capture rate, such as 60 frames per second (fps), 120 fps, 240 fps, etc., depending on the embodiment. The cameras may be capable of using rolling shutters, global shutters, another type of shutter, or a combination thereof. In some examples, the color filter array may include a red clear clear clear (RCCC) color filter array, a red clear clear blue (RCCB) color filter array, a red blue green clear (RBGC) color filter array, a Foveon X3 color filter array, a Bayer sensor (RGGB) color filter array, a monochrome sensor color filter array, and/or another type of color filter array. In some embodiments, clear pixel cameras, such as cameras with an RCCC, an RCCB, and/or an RBGC color filter array, may be used in an effort to increase light sensitivity.

In einigen Beispielen können eine oder mehrere der Kamera(s) verwendet werden, um Funktionen der weiterentwickelten Fahrerassistenzsysteme (ADAS) durchzuführen (z. B. als Teil einer redundanten oder ausfallsicheren Ausgestaltung). Zum Beispiel kann eine Multifunktions-Monokamera installiert sein, die Funktionen wie Spurverlassenswarnung, Verkehrszeichenassistent und intelligente Scheinwerfersteuerung bereitstellt. Eine oder mehrere der Kamera(s) (z. B. alle Kameras) können simultan Bilddaten (z. B. ein Video) aufnehmen und bereitstellen.In some examples, one or more of the camera(s) 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 may be installed that provides functions such as lane departure warning, traffic sign assist, and intelligent headlight control. One or more of the camera(s) (e.g., all cameras) may simultaneously capture and provide image data (e.g., a video).

Eine oder mehrere der Kameras können in einer Montagebaugruppe, z. B. einer kundenspezifisch entworfenen (3D-gedruckten) Baugruppe, montiert sein, um Streulicht und Reflexionen aus dem Inneren des Autos (z. B. Reflexionen vom Armaturenbrett, die sich in den Windschutzscheibenspiegeln spiegeln) auszuschließen, welche die Bilddatenerfassungsfähigkeiten der Kamera beeinträchtigen können. Unter Bezugnahme auf Außenspiegel-Montagebaugruppen können die Außenspiegelbaugruppen kundenspezifisch in 3D gedruckt werden, sodass die Kameramontageplatte der Form des Außenspiegels entspricht. In einigen Beispielen kann/können die Kamera(s) in den Seitenspiegel integriert sein. Bei Seitensichtkameras kann/können die Kamera(s) auch in den vier Säulen an jeder Ecke des Fahrerhauses integriert sein.One or more of the cameras may be mounted in a mounting assembly, such as a custom designed (3D printed) assembly, to eliminate stray light and reflections from inside the car (e.g., reflections from the dashboard reflected in the windshield mirrors) that may affect the camera's image data collection capabilities. With reference to outside mirror mounting assemblies, the outside mirror assemblies may be custom 3D printed so that the camera mounting plate conforms to the shape of the outside mirror. In some examples, the camera(s) may be integrated into the side view mirror. For side view cameras, the camera(s) may also be integrated into the four pillars at each corner of the cab.

Kameras mit einem Sichtfeld, das Abschnitte der Umgebung vor dem Fahrzeug 1200 beinhaltet (z. B. nach vorn gerichtete Kameras), können für die Rundumsicht verwendet werden, um dabei zu helfen, nach vorn gerichtete Pfade und Hindernisse zu identifizieren, sowie mit Hilfe einer oder mehrerer Steuerungen 1236 und/oder Steuer-SoCs beim Bereitstellen von Informationen zu helfen, die für die Erzeugung eines Belegungsgitters und/oder die Bestimmung bevorzugter Fahrzeugpfade entscheidend sind. Nach vorn gerichtete Kameras können verwendet werden, um viele der gleichen ADAS-Funktionen wie LIDAR auszuführen, einschließlich Notbremsung, Fußgängererkennung und Kollisionsvermeidung. Nach vorn gerichtete Kameras können auch für ADAS-Funktionen und -Systeme verwendet werden, einschließlich Spurverlassenswarnungen (Lane Departure Warning - LDW), autonome Geschwindigkeitssteuerung (Autonomous Cruise Control -ACC) und/oder andere Funktionen wie Verkehrszeichenerkennung.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 surround visibility to help identify forward paths and obstacles, as well as, with the assistance of one or more controllers 1236 and/or control SoCs, to help provide information critical to generating an occupancy grid and/or determining preferred vehicle paths. Forward-facing cameras may be used to perform many of the same ADAS functions as LIDAR, including emergency braking, pedestrian detection, and collision avoidance. Forward-facing cameras may also be used for ADAS functions and systems, including Lane Departure Warning (LDW), Autonomous Cruise Control (ACC), and/or other functions such as traffic sign recognition.

Eine Vielfalt an Kameras kann in einer nach vorn gerichteten Konfiguration verwendet werden, einschließlich zum Beispiel einer monokularen Kameraplattform, die einen CMOS (complementary metal oxide semiconductor- komplementärer Metalloxid-Halbleiter)-Farbbildgeber beinhaltet. Ein weiteres Beispiel ist/sind (eine) Weitwinkelkamera(s) 1270, die verwendet werden kann/können, um Objekte wahrzunehmen, die aus der Peripherie in den Blick kommen (z. B. Fußgänger, Kreuzungsverkehr oder Fahrräder). Obwohl in 13 nur eine Weitsichtkamera veranschaulicht ist, kann eine beliebige Anzahl von Weitsichtkameras 1270 an dem Fahrzeug 1200 vorhanden sein. Zusätzlich kann eine Langstreckenkamera(s) 1298 (z. B. ein Weitsichtstereokamerapaar) zur tiefenbasierten Objekterkennung verwendet werden, insbesondere für Objekte, für die ein neuronales Netz noch nicht trainiert worden ist. Die Langstreckenkamera(s) 1298 kann/können auch zur Objekterkennung und - klassifizierung sowie zur einfachen Objektverfolgung verwendet werden.A variety of cameras may be used in a forward-facing configuration, including, for example, a monocular camera platform that includes a CMOS (complementary metal oxide semiconductor) color imager. Another example is a wide angle camera(s) 1270 that may be used to perceive objects coming into view from the periphery (e.g., pedestrians, crossing traffic, or bicycles). Although in 13 While only one wide-view camera is illustrated, any number of wide-view cameras 1270 may be present on the vehicle 1200. Additionally, a long-range camera(s) 1298 (e.g., a wide-view 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 long-range camera(s) 1298 may also be used for object detection and classification, as well as simple object tracking.

Eine oder mehrere Stereokameras 1268 können auch in einer nach vorne gerichteten Konfiguration beinhaltet sein. Die Stereokamera(s) 1268 können eine integrierte Steuereinheit beinhalten, die eine skalierbare Verarbeitungseinheit beinhaltet, die eine programmierbare Logik (z. B. FPGA) und einen Mehrkern-Mikroprozessor mit einer integrierten Schnittstelle für ein CAN oder Ethernet auf einem einzelnen Chip bereitstellen kann. Eine solche Einheit kann verwendet werden, um eine 3-D-Karte der Umgebung des Fahrzeugs zu erzeugen, die eine Abstandsschätzung für alle Punkte im Bild beinhaltet. (Eine) alternative Stereokamera(s) 1268 kann/können einen/mehrere kompakte Stereo-Vision-Sensor(en) beinhalten, der/die zwei Kameraobjektive (jeweils eines links und rechts) und einen Bildverarbeitungs-Chip beinhalten kann/können, der den Abstand vom Fahrzeug zum Zielobjekt messen und die erzeugten Informationen (z. B. Metadaten) verwenden kann, um die autonomen Notbrems- und Spurverlassenswarnungsfunktionen zu aktivieren. Andere Typen von Stereokamera(s) 1268 können zusätzlich oder alternativ zu den hierin beschriebenen verwendet werden.One or more stereo cameras 1268 may also be included in a forward-facing configuration. The stereo camera(s) 1268 may include an integrated control unit that includes a scalable processing unit that may provide programmable logic (e.g., FPGA) and a multi-core microprocessor with an integrated interface for CAN or Ethernet on a single chip. Such a unit may be used to generate a 3-D map of the vehicle's surroundings that includes a distance estimate for all points in the image. Alternative stereo camera(s) 1268 may include one or more compact stereo vision sensors that have two camera ob lenses (one each on the left and right) and an image processing chip that can measure the distance from the vehicle to the target object and use the information generated (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 alternatively to those described herein.

Kameras mit einem Sichtfeld, das Abschnitte der Umgebung seitlich des Fahrzeugs 1200 beinhaltet (z. B. Seitensichtkameras), können für die Rundumsicht verwendet werden, wodurch Informationen bereitgestellt werden, die zum Erstellen und Aktualisieren eines Belegungsrasters sowie zum Erzeugen von Seitenaufprallkollisionswarnungen verwendet werden. Zum Beispiel könnten die Umgebungskamera(s) 1274 (z. B. vier Umgebungskameras 1274, wie in 13 veranschaulicht) an dem Fahrzeug 1200 positioniert sein. Die Umgebungskamera(s) 1274 können Weitsichtkamera(s) 1270, Fischaugenkamera(s), 360-Grad-Kamera(s) und/oder ähnliches beinhalten. Zum Beispiel können vier Fischaugenkameras an der Front, am Heck und an den Seiten des Fahrzeugs angebracht werden. In einer alternativen Anordnung kann das Fahrzeug drei Umgebungskameras 1274 (z. B. links, rechts und hinten) verwenden und eine oder mehrere andere Kameras (z. B. eine nach vorne gerichtete Kamera) als vierte Umgebungskamera nutzen.Cameras with a field of view that includes portions of the environment to the side of the vehicle 1200 (e.g., side view cameras) may be used for surround view, thereby providing information used to create and update an occupancy grid and to generate side impact collision warnings. For example, the surround camera(s) 1274 (e.g., four surround cameras 1274 as shown in 13 illustrated) may be positioned on the vehicle 1200. The surround camera(s) 1274 may include wide view camera(s) 1270, fisheye camera(s), 360 degree camera(s), and/or the like. For example, four fisheye cameras may be mounted on the front, rear, and sides of the vehicle. In an alternative arrangement, the vehicle may utilize three surround cameras 1274 (e.g., left, right, and rear) and utilize one or more other cameras (e.g., a forward-facing camera) as a fourth surround camera.

Kameras mit einem Sichtfeld, das Abschnitte der Umgebung hinter dem Fahrzeug 1200 beinhaltet (z. B. Rückfahrkameras), können als Einparkhilfe, für die Rundumsicht, Heckkollisionswarnungen und das Erstellen und Aktualisieren des Belegungsrasters verwendet werden. Es kann eine große Vielfalt an Kameras verwendet werden, einschließlich unter anderem Kameras, die auch als nach vorne gerichtete Kamera(s) (z. B. Kamera(s) 1298 mit langer und/oder mittlerer Reichweite, Stereokamera(s) 1268, Infrarotkamera(s) 1272 usw.) geeignet sind, wie hierin beschrieben.Cameras with a field of view that includes portions of the environment behind the vehicle 1200 (e.g., rearview cameras) may be used for parking assistance, surround view, rear collision warnings, and creating and updating the occupancy grid. A wide variety of cameras may be used, including, but not limited to, cameras that are also suitable as forward-facing camera(s) (e.g., long and/or medium range camera(s) 1298, stereo camera(s) 1268, infrared camera(s) 1272, etc.) as described herein.

14 ist ein Blockdiagramm einer beispielhaften Systemarchitektur für das beispielhafte autonome Fahrzeug 1200 der 12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Es versteht sich, dass diese und andere hierin beschriebene Anordnungen nur als Beispiele aufgeführt werden. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Befehle, Gruppierungen von Funktionen usw.) können zusätzlich oder anstelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Ferner sind viele der hierin beschriebenen Elemente funktionale Einheiten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und Position implementiert werden können. Verschiedene hierin als von Einheiten ausgeführt beschriebene Funktionen können durch Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen durch einen Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. 14 is a block diagram of an example system architecture for the example autonomous vehicle 1200 of the 12 in accordance with some embodiments of the present disclosure. It should be understood that these and other arrangements described herein are provided as examples only. Other arrangements and elements (e.g., engines, interfaces, functions, instructions, groupings of functions, etc.) may be used in addition to or in place of those shown, and some elements may be omitted entirely. Furthermore, 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 as being performed by units may be performed by hardware, firmware, and/or software. For example, various functions may be performed by a processor executing instructions stored in memory.

Jede(s) der Komponenten, Merkmale und Systeme des Fahrzeugs 1200 in 14 sind als über den Bus 1202 verbunden veranschaulicht. Der Bus 1202 kann eine Controller Area Network (CAN)-Datenschnittstelle beinhalten (alternativ hierin auch als „CAN-Bus“ bezeichnet). Ein CAN 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 etwa Betätigung von Bremsen, Beschleunigung, Bremsung, Lenkung, Windschutzscheibenwischer usw. Ein CAN-Bus kann so konfiguriert sein, dass er dutzende oder sogar hunderte von Knoten aufweist, von denen jeder eine eigene eindeutige Kennung (z. B. eine CAN-ID) aufweist. Der CAN-Bus kann ausgelesen werden, um Lenkradwinkel, Geschwindigkeit über Grund, Motorumdrehungen pro Minute (revolutions per minute - RPMs), Tastenpositionen und/oder andere Fahrzeugstatusindikatoren zu ermitteln. Der CAN-Bus kann ASIL B-konform sein.Each of the components, features and systems of the 1200 vehicle in 14 are illustrated as being connected via bus 1202. Bus 1202 may include a Controller Area Network (CAN) data interface (alternatively referred to herein as a "CAN bus"). A CAN may be a network within vehicle 1200 used to support control of various features and functions of vehicle 1200, such as brake application, acceleration, braking, steering, windshield wipers, etc. A CAN bus may be configured to have dozens or even hundreds of nodes, each with its own unique identifier (e.g., a CAN ID). The CAN bus may be read to determine steering wheel angle, ground speed, engine revolutions per minute (RPMs), button positions, and/or other vehicle status indicators. The CAN bus may be ASIL B compliant.

Obwohl der Bus 1202 hier als CAN-Bus beschrieben wird, ist dies nicht als Einschränkung zu verstehen. Zum Beispiel können zusätzlich oder alternativ zum CAN-Bus auch FlexRay und/oder Ethernet verwendet werden. Obwohl der Bus 1202 mit einer einzigen Linie dargestellt wird, ist dies nicht als Einschränkung zu verstehen. Zum Beispiel kann eine beliebige Anzahl von Bussen 1202 vorhanden sein, die einen oder mehr CAN-Busse, einen oder mehr FlexRay-Busse, einen oder mehr Ethernet-Busse und/oder einen oder mehr andere Arten von Bussen mit einem anderen Protokoll beinhalten können. In einigen Beispiel können zwei oder mehr Busse 1202 verwendet werden, um unterschiedliche Funktionen durchzuführen, und/oder können sie zur Redundanz verwendet werden. Zum Beispiel kann ein erster Bus 1202 für die Kollisionsvermeidungsfunktionalität verwendet werden und ein zweiter Bus 1202 für die Betätigungssteuerung verwendet werden. In jedem Beispiel kann jeder Bus 1202 mit beliebigen Komponenten des Fahrzeugs 1200 kommunizieren und können zwei oder mehr Busse 1202 mit denselben Komponenten kommunizieren. In einigen Beispielen können jedes SoC 1204, jede Steuerung 1236 und/oder jeder Computer im Fahrzeug Zugriff auf dieselben Eingabedaten (z. B. Eingaben von Sensoren des Fahrzeugs 1200) haben und mit einem gemeinsamen Bus, wie etwa dem CAN-Bus, verbunden sein.Although bus 1202 is described herein as a CAN bus, this is not a limitation. For example, FlexRay and/or Ethernet may be used in addition to or as an alternative to the CAN bus. Although bus 1202 is shown with a single line, this is not 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 using 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 collision avoidance functionality and a second bus 1202 may be used for actuation control. In each example, each bus 1202 may communicate with any components of 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 in the vehicle may have access to the same input data (e.g., inputs from sensors of the vehicle 1200) and be connected to a common bus, such as the CAN bus.

Das Fahrzeug 1200 kann eine oder mehrere Steuerung(en) 1236 beinhalten, wie etwa diejenigen, die hierin in Bezug auf 12 beschrieben sind. Die Steuerung(en) 1236 können für eine Vielfalt von Funktionen verwendet werden. Die Steuerung(en) 1236 können an beliebige von verschiedenen anderen Komponenten und Systemen des Fahrzeugs 1200 gekoppelt sein und zur Steuerung des Fahrzeugs 1200, der künstlichen Intelligenz des Fahrzeugs 1200, des Infotainments für das Fahrzeug 1200 und/oder dergleichen verwendet werden.The vehicle 1200 may include one or more controllers 1236, such as those described herein with respect to 12 The controller(s) 1236 may be used for a variety of functions. The controller(s) 1236 may be coupled to any of various other components and systems of the vehicle 1200 and may be used to control the vehicle 1200, the artificial intelligence of the vehicle 1200, the infotainment for the vehicle 1200, and/or the like.

Das Fahrzeug 1200 kann ein System (oder mehrere Systeme) auf einem Chip (SoC) 1204 beinhalten. Das SoC 1204 kann CPU(s) 1206, GPU(s) 1208, Prozessor(en) 1210, Cache(s) 1212, Fahrpedal(e) 1214, Datenspeicher 1216 und/oder andere nicht veranschaulichte Komponenten und Funktionen beinhalten. Die SoC(s) 1204 können zum Steuern des Fahrzeugs 1200 in einer Vielfalt an Plattformen und Systemen verwendet werden. Beispielsweise können die SoC(s) 1204 in einem System (z. B. dem System des Fahrzeugs 1200) mit einer HD-Karte 1222 kombiniert werden, die über eine Netzschnittstelle 1224 von einem oder mehreren Servern (z. B. dem/den Server(n) 1278 in 15) Aktualisierungen der Karte erlangen kann.The vehicle 1200 may include a system (or multiple systems) on a chip (SoC) 1204. The SoC 1204 may include CPU(s) 1206, GPU(s) 1208, processor(s) 1210, cache(s) 1212, accelerator pedal(s) 1214, data storage 1216, and/or other components and functions not illustrated. 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 in a system (e.g., the system of the vehicle 1200) may be combined with an HD card 1222 that may be accessed via a network interface 1224 from one or more servers (e.g., the server(s) 1278 in 15 ) can obtain updates to the map.

Die CPU(s) 1206 können einen CPU-Cluster oder CPU-Komplex (hierin alternativ als „CCPLEX“ bezeichnet) beinhalten. Die CPU(s) 1206 können mehrere Kerne und/oder L2-Caches beinhalten. Zum Beispiel können in einigen Ausführungsformen die CPU(s) 1206 acht Kerne in einer kohärenten Mehrprozessorkonfiguration beinhalten. In einigen Ausführungsformen können die CPU(s) 1206 vier Doppelkerncluster beinhalten, wobei jeder Cluster über einen dedizierten L2-Cache verfügt (z. B. einen L2-Cache mit 2 MB). Die CPU(s) 1206 (z. B. CCPLEX) können so konfiguriert sein, dass sie simultane Clusteroperationen unterstützen, sodass eine beliebige Kombination von Clustern der CPU(s) 1206 zu einem beliebigen gegebenen Zeitpunkt aktiv sein kann.The CPU(s) 1206 may include a CPU cluster or CPU complex (alternatively referred to herein as a "CCPLEX"). The CPU(s) 1206 may include multiple cores and/or L2 caches. For example, in some embodiments, the 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, with each cluster having a dedicated L2 cache (e.g., a 2 MB L2 cache). The CPU(s) 1206 (e.g., CCPLEX) may be configured to support simultaneous cluster operations such that any combination of clusters of the CPU(s) 1206 may be active at any given time.

Die CPU(s) 1206 können Leistungsverwaltungsfähigkeiten implementieren, die eines oder mehrere der folgenden Merkmale beinhalten: einzelne Hardwareblöcke können automatisch taktgesteuert werden, wenn sie inaktiv sind, um dynamische Leistung zu sparen; jeder Kerntakt kann gesteuert werden, wenn der Kern aufgrund der Ausführung von WFI-/WFE-Anweisungen keine Anweisungen aktiv ausführt; jeder Kern kann unabhängig leistungsgesteuert sein; jeder Kerncluster kann unabhängig taktgesteuert sein, wenn alle Kerne taktgesteuert oder leistungsgesteuert sind; und/oder jeder Kerncluster kann unabhängig leistungsgesteuert sein, wenn alle Kerne leistungsgesteuert sind. Die CPU(s) 1206 können ferner einen erweiterten Algorithmus zur Verwaltung von Leistungsstatus implementieren, bei dem zulässige Leistungsstatus und erwartete Aufwachzeiten spezifiziert werden und die Hardware/der Mikrocode den besten Leistungsstatus bestimmt, in den für den Kern, Cluster und CCPLEX einzutreten ist. Die Verarbeitungskerne können vereinfachte Leistungsstatus-Eintragssequenzen in der Software unterstützen, wobei die Arbeit in den Mikrocode ausgelagert wird.The CPU(s) 1206 may implement power management capabilities that include one or more of the following features: individual hardware blocks may be automatically clock controlled when idle to conserve dynamic power; each core clock may be controlled when the core is not actively executing instructions due to the execution of WFI/WFE instructions; each core may be independently power controlled; each core cluster may be independently clock controlled if all cores are clock controlled or power controlled; and/or each core cluster may be independently power controlled if all cores are power controlled. The CPU(s) 1206 may further implement an advanced power state management algorithm where allowable power states and expected wake-up times are specified and the hardware/microcode determines the best power state to enter for the core, cluster, and CCPLEX. The processing cores may support simplified power state entry sequences in software, offloading the work to the microcode.

Die GPU(s) 1208 können eine integrierte GPU (hierin alternativ als „iGPU“ bezeichnet) beinhalten. Die GPU(s) 1208 können programmierbar sein und für parallele Arbeitslasten effizient sein. Die GPU(s) 1208 können in einigen Beispielen einen erweiterten Tensor-Anweisungssatz verwenden. Die GPU(s) 1208 können einen oder mehrere Streaming-Mikroprozessoren beinhalten, wobei jeder Streaming-Mikroprozessor einen Level Eins(„L1“)-Cache beinhalten kann (z. B. einen L1-Cache mit einer Speicherkapazität von mindestens 96 KB), und zwei oder mehr Streaming-Mikroprozessoren können einen L2-Cache gemeinsam nutzen (z. B. einen L2-Cache mit einer Speicherkapazität von 512 KB). In einigen Ausführungsformen können die GPU(s) 1208 mindestens acht Streaming-Mikroprozessoren beinhalten. Die GPU(s) 1208 können computerbasierte Anwendungsprogrammierschnittstelle(n) (application programming interface(s) - API(s)) verwenden. Zusätzlich können die GPU(s) 1208 eine oder mehrere Parallelrechenplattformen 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 a level one ("L1") cache (e.g., an L1 cache with a memory capacity of at least 96 KB), and two or more streaming microprocessors may share an L2 cache (e.g., an L2 cache with a memory capacity of 512 KB). 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) (API(s)). Additionally, the GPU(s) 1208 may utilize one or more parallel computing platforms and/or programming models (e.g., NVIDIA's CUDA).

Die GPU(s) 1208 können für die beste Rechenleistung in Automobil- und eingebetteten Anwendungsfällen leistungsoptimiert sein. Die GPU(s) 1208 können zum Beispiel auf einem Fin-Feldeffekttransistor (FinFET) gefertigt sein. Dies soll jedoch nicht einschränkend sein und die GPU(s) 1208 kann/können mithilfe anderer Halbleiterfertigungsprozesse hergestellt werden. Jeder Streaming-Mikroprozessor kann eine Anzahl von Verarbeitungskernen mit gemischter Genauigkeit beinhalten, die in mehrere Blöcke partitioniert sind. Zum Beispiel, und ohne Einschränkung, könnten 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke partitioniert sein. In solch einem Beispiel könnten jedem Verarbeitungsblock 16 FP32-Kerne, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA TENSOR COREs mit gemischter Genauigkeit für Deep-Learning-Matrixarithmetik, ein L0-Anweisungs-Cache, ein Warp-Scheduler, eine Verteilungseinheit und/oder eine Registerdatei mit 64 KB zugewiesen sein. Zusätzlich können Streaming-Mikroprozessoren unabhängige parallele Integer- und Fließkomma-Datenpfade beinhalten, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Berechnung und Adressierungsberechnungen zu ermöglichen. Die Streaming-Mikroprozessoren können eine unabhängige Thread-Planungsfunktion beinhalten, um eine feinkörnigere Synchronisation und Kooperation zwischen parallelen Threads zu ermöglichen. Die Streaming-Mikroprozessoren können eine Einheit aus kombiniertem L1-Daten-Cache und gemeinsam genutztem Speicher beinhalten, um die Performance zu verbessern, während die Programmierung vereinfacht wird.The GPU(s) 1208 may be power optimized for the best computing 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 is not intended to be limiting and the GPU(s) 1208 may be fabricated using other semiconductor fabrication processes. Each streaming microprocessor may include a number of mixed precision processing cores partitioned into multiple blocks. For example, and without limitation, 64 PF32 cores and 32 PF64 cores may be partitioned into four processing blocks. In such an example, each processing block may include 16 FP32 cores, 8 FP64 cores, 16 INT32 cores, two mixed precision NVIDIA TENSOR COREs for deep learning matrix processing, and 16 FP64 cores. xarithmetic, an L0 instruction cache, a warp scheduler, a distribution unit, and/or a 64 KB register file. In addition, streaming microprocessors may include independent parallel integer and floating-point data paths to enable efficient execution of workloads with a mix of computation and addressing calculations. The streaming microprocessors may include an independent thread scheduling function to enable finer-grained synchronization and cooperation between parallel threads. The streaming microprocessors may include a unit of combined L1 data cache and shared memory to improve performance while simplifying programming.

Die GPU(s) 1208 können einen Speicher mit hoher Bandbreite (high bandwidth memory - HBM) und/oder ein 16-GB-HBM2-Speicherteilsystem beinhalten, 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 (synchronous graphics random-access memory - SGRAM) verwendet werden, wie etwa ein synchroner Direktzugriffsspeicher vom Graphics-Double-Data-Rate-Typ fünf (graphics double data rate type five - GDDR5).The GPU(s) 1208 may include high bandwidth memory (HBM) and/or a 16 GB HBM2 memory subsystem to provide a peak memory bandwidth of about 900 GB/second in some examples. In some examples, in addition to or alternatively to the HBM memory, a synchronous graphics random-access memory (SGRAM) may be used, such as a graphics double data rate type five (GDDR5) synchronous random-access memory.

Die GPU(s) 1208 kann/können eine einheitliche Speichertechnologie mit Zugriffszählern beinhalten, die eine genauere Zuweisung von Speicherseiten an den Prozessor ermöglicht, der am häufigsten darauf zugreift, und so die Effizienz von Speicherbereichen verbessert, die von mehreren Prozessoren gemeinsam genutzt werden. In einigen Beispielen kann die Unterstützung von Adressübersetzungsdiensten (ATS) verwendet werden, damit die GPU(s) 1208 direkt auf die Seitentabellen der CPU(s) 1206 zugreifen können. In solchen Beispielen kann, wenn die GPU(s) 1208 Speicherverwaltungseinheit (memory management unit - MMU) einen Fehlschlag erleidet, eine Adressübersetzungsanfrage an die CPU(s) 1206 übertragen werden. Als Reaktion darauf können die CPU(s) 1206 in ihren Seitentabellen nach einer Virtuell-zu-Physisch-Zuordnung für die Adresse suchen und die Übersetzung zurück an die GPU(s) 1208 übertragen. Daher kann die einheitliche Speichertechnologie einen einzelnen 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 werden.The GPU(s) 1208 may include a unified memory technology with access counters that allows for more accurate allocation of memory pages to the processor that accesses them most frequently, thus improving the efficiency of memory regions shared by multiple processors. In some examples, address translation services (ATS) support may be used to allow the GPU(s) 1208 to directly access the page tables of the CPU(s) 1206. In such examples, when the GPU(s) 1208 memory management unit (MMU) fails, an address translation request may be transmitted to the CPU(s) 1206. In response, the CPU(s) 1206 may look in their page tables for a virtual-to-physical mapping for the address and transmit the translation back to the GPU(s) 1208. Therefore, the unified memory technology may enable a single unified virtual address space for the memory of both the CPU(s) 1206 and the GPU(s) 1208, thereby simplifying programming of the GPU(s) 1208 and porting applications to the GPU(s) 1208.

Darüber hinaus kann die GPU(s) 1208 einen Zugriffszähler beinhalten, der die Häufigkeit des Zugriffs der GPU(s) 1208 auf den Speicher anderer Prozessoren verfolgt. Der Zugriffszähler kann dazu beitragen, dass Speicherseiten in den physischen Speicher desjenigen Prozessors verschoben werden, der am häufigsten auf die Seiten zugreift.Additionally, the GPU(s) 1208 may include an access counter that tracks the frequency of the GPU(s) 1208 accessing the memory of other processors. The access counter may help move memory pages into the physical memory of the processor that accesses the pages most frequently.

Die SoC(s) 1204 können eine beliebige Anzahl von Cache(s) 1212 beinhalten, einschließlich der hierin beschriebenen. Der/die Cache(s) 1212 kann/können beispielsweise einen L3-Cache beinhalten, 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 der/den GPU(s) 1208 verbunden ist). Der/die Cache(s) 1212 können einen Rückschreib-Cache beinhalten, der die Status von Zeilen verfolgen kann, wie z. B. durch die Verwendung eines Cache-Kohärenzprotokolls (z. B. MEI, MESI, MSI usw.). Der L3-Cache kann in Abhängigkeit von der Ausführungsform 4 MB oder mehr beinhalten, 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, the cache(s) 1212 may include an L3 cache that is available to both the CPU(s) 1206 and the GPU(s) 1208 (e.g., connected to both the CPU(s) 1206 and the GPU(s) 1208). The cache(s) 1212 may include a write-back cache that may track the states of lines, such as through the use of a cache coherence protocol (e.g., MEI, MESI, MSI, etc.). The L3 cache may include 4 MB or more, depending on the embodiment, although smaller cache sizes may also be used.

Der/die SoC(s) 1204 kann/können eine arithmetische Logikeinheit(en) (ALU(s)) beinhalten, die beim Durchführen von Verfahren in Bezug auf eine der vielen Aufgaben oder Operationen des Fahrzeugs 1200, wie etwa der Verarbeitung von DNNs, genutzt werden kann. Darüber hinaus können die SoC(s) 1204 eine oder mehrere Gleitkommaeinheiten (floating point units - FPU(s)) - oder andere mathematische Coprozessoren oder numerische Coprozessoren - zur Durchführung mathematischer Operationen innerhalb des Systems beinhalten. Zum Beispiel kann der SoC(s) 104 eine oder mehrere FPUs beinhalten, die als Ausführungseinheiten in einer CPU(s) 1206 und/oder GPU(s) 1208 integriert sind.The SoC(s) 1204 may include an arithmetic logic unit(s) (ALU(s)) that may be utilized in performing methods related to any of the many tasks or operations of the vehicle 1200, such as processing DNNs. Additionally, the SoC(s) 1204 may include one or more floating point units (FPU(s))—or other mathematical coprocessors or numerical coprocessors—for performing mathematical operations within the system. For example, the SoC(s) 1204 may include one or more FPUs integrated as execution units within a CPU(s) 1206 and/or GPU(s) 1208.

Das/die SoC(s) 1204 können einen oder mehrere Beschleuniger 1214 beinhalten (z. B. Hardware-Beschleuniger, Software-Beschleuniger oder eine Kombination davon). Zum Beispiel können das/die SoC(s) 1204 einen Hardware-Beschleunigungscluster beinhalten, der optimierte Hardware-Beschleuniger und/oder einen großen chipinternen Speicher beinhalten kann. Der große chipinterne Speicher (z. B. 4 MB SRAM) kann einen Hardware-Beschleunigungscluster zur Beschleunigung neuronaler Netze und anderer Berechnungen ermöglichen. Der Hardware-Beschleunigungscluster kann verwendet werden, um die GPU(s) 1208 zu ergänzen und einige Tasks der GPU(s) 1208 auszulagern (z. B. mehr Zyklen der GPU(s) 1208 zum Durchführen anderer Tasks freizumachen). Als Beispiel können der/die Beschleuniger 1214 für zielgerichtete Arbeitslasten (z. B. Wahrnehmung, neuronale Faltungsnetze (CNNs) usw.) verwendet werden, die stabil genug sind, um für eine Beschleunigung geeignet zu sein. Der Begriff „CNN“, wie er hierin verwendet wird, kann alle Typen von CNNs beinhalten, einschließlich regionenbasierter oder regionaler neuronaler Faltungsnetze (RCNNs) und Fast RCNNs (z. B. für die Objekterkennung).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 a large on-chip memory. The large on-chip memory (e.g., 4 MB of SRAM) may enable a hardware acceleration cluster to accelerate neural networks and other computations. The hardware acceleration cluster may be used to supplement the GPU(s) 1208 and offload some tasks of the GPU(s) 1208 (e.g., free up more cycles of the GPU(s) 1208 to perform other tasks). As an 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 suitable for acceleration. 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. for object detection).

Der/die Beschleuniger 1214 (z. B. Hardware-Beschleunigungscluster) können (einen) Deep-Learning-Beschleuniger (deep learning accelerator(s) - DLA(s)) beinhalten. Die DLA(s) können eine oder mehrere Tensor-Verarbeitungseinheiten (TPUs) beinhalten, die so konfiguriert sein können, dass sie zusätzliche zehn Billionen Vorgänge pro Sekunde für Deep-Learning-Anwendungen und -Inferenzierung bereitstellen. Die TPUs können Beschleuniger sein, die zum Durchführen von Bildverarbeitungsfunktionen (z. B. für CNNs, RCNNs usw.) konfiguriert und optimiert sind. Die DLA(s) können ferner für einen spezifischen Satz von Arten von neuronalen Netzen und Fließkommavorgängen sowie für die Ableitung optimiert sein. Das Design der DLA(s) kann mehr Performance pro Millimeter bereitstellen als eine typische Universal-GPU und übertrifft die Performance einer CPU bei weitem. Die TPU(s) können mehrere Funktionen durchführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die z. B. INT8-, INT16- und FP16-Datenarten sowohl für Merkmale als auch für Gewichtungen unterstützt, sowie Postprozessorfunktionen.The accelerator(s) 1214 (e.g., hardware acceleration clusters) may include deep learning accelerator(s) (DLA(s). The DLA(s) may include one or more tensor processing units (TPUs), which may be configured to provide an additional tens of trillion operations per second for deep learning applications and inferencing. The TPUs may be accelerators configured and optimized to perform image processing functions (e.g., for CNNs, RCNNs, etc.). The DLA(s) may be further optimized for a specific set of types of neural networks and floating point operations, as well as for inference. The design of the DLA(s) may provide more performance per millimeter than a typical general purpose GPU, far exceeding the performance of a CPU. The TPU(s) may perform multiple functions, including a single instance convolution function, for example, to perform a single instance convolution function. B. INT8, INT16 and FP16 data types are supported for both features and weights, as well as post-processor functions.

Die DLA(s) können neuronale Netze, insbesondere CNNs, an verarbeiteten oder unverarbeiteten Daten für beliebige einer Vielfalt von Funktionen schnell und effizient ausführen, darunter zum Beispiel und ohne Einschränkung: ein CNN für die Identifizierung und Erkennung von Objekten unter Verwendung von Daten von Kamerasensoren; ein CNN für die Abstandsschätzung unter Verwendung von Daten von Kamerasensoren; ein CNN für die Erkennung und Identifizierung und Erkennung von Einsatzfahrzeugen unter Verwendung von Daten von Mikrofonen; ein CNN für die Gesichtserkennung und Identifizierung von Fahrzeugbesitzern unter Verwendung von Daten von Kamerasensoren; und/oder ein CNN für sicherheits- und/oder sicherungsbezogene Ereignisse.The DLA(s) may quickly and efficiently execute neural networks, particularly CNNs, on processed or unprocessed data for any of a variety of functions, including, for example and without limitation: a CNN for object identification and recognition using data from camera sensors; a CNN for distance estimation using data from camera sensors; a CNN for emergency vehicle detection and identification and recognition using data from microphones; a CNN for facial recognition and vehicle owner identification using data from camera sensors; and/or a CNN for safety and/or security-related events.

Die DLA(s) können eine beliebige Funktion der GPU(s) 1208 durchführen und durch Verwenden eines Inferenzbeschleunigers kann ein Konstrukteur zum Beispiel entweder DLA(s) oder GPU(s) 1208 für eine beliebige Funktion anvisieren. So kann der Konstrukteur beispielsweise die Verarbeitung von CNNs und Gleitkommaoperationen auf den/die DLA(s) konzentrieren und andere Funktionen der/den GPU(s) 1208 und/oder anderen Beschleunigern 1214 überlassen.The DLA(s) may perform any function of the GPU(s) 1208, and by using an inference accelerator, for example, a designer may target either the DLA(s) or GPU(s) 1208 for any function. For example, the designer may focus the processing of CNNs and floating point operations on the DLA(s) and leave other functions to the GPU(s) 1208 and/or other accelerators 1214.

Der/die Beschleuniger 1214 (z. B. der Hardware-Beschleunigungscluster) können (einen) programmierbare(n) Sichtbeschleuniger (programmable vision accelerator - „PVA“) beinhalten, der hierin alternativ als ein Beschleuniger für maschinelles Sehen bezeichnet werden kann. Die PVA(s) können zur Beschleunigung von Algorithmen des maschinellen Sehens für weiterentwickelte Fahrerassistenzsysteme (ADAS), autonomes Fahren, Augmented-Reality(AR)- und/oder Virtual-Reality(VR)-Anwendungen ausgestaltet und konfiguriert sein. Die PVA(s) können ein Gleichgewicht zwischen Performance und Flexibilität bereitstellen. Beispielsweise und ohne Einschränkung können alle PVA(s) eine beliebige Anzahl von Reduced-Instruction-Set-Computer (RISC)-Kerne, direkten Speicherzugriff (direct memory access - DMA) und/oder eine beliebige Anzahl von Vektorprozessoren beinhalten.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 machine vision accelerator. The PVA(s) may be designed and configured to accelerate machine vision algorithms for advanced driver assistance systems (ADAS), autonomous driving, augmented reality (AR), and/or virtual reality (VR) applications. The PVA(s) may provide a balance between performance and flexibility. For example, and without limitation, all PVA(s) may include any number of reduced instruction set computer (RISC) cores, direct memory access (DMA), and/or any number of vector processors.

RISC-Kerne können mit Bildsensoren (z. B. den Bildsensoren einer beliebigen der hierin beschriebenen Kameras), (einem) Bildsignalprozessor(en) und/oder dergleichen interagieren. Jeder der RISC-Kerne kann eine beliebige Menge an Speicher beinhalten. Die RISC-Kerne können in Abhängigkeit von der Ausführungsform ein beliebiges von einer Anzahl von Protokollen verwenden. In einigen Beispielen können die RISC-Kerne ein Echtzeitbetriebssystem (real-time operating system - RTOS) ausführen. Die RISC-Kerne können unter Verwendung einer oder mehrerer Vorrichtungen für integrierte Schaltungen, anwendungsspezifischer integrierter Schaltungen (ASICs) und/oder Speichervorrichtungen implementiert sein. Die RISC-Kerne können beispielsweise einen Anweisungs-Cache und/oder einen eng gekoppelten RAM beinhalten.RISC cores may interact with image sensors (e.g., the image sensors of any of the cameras described herein), image signal processor(s), and/or the like. Each of the RISC cores may include any amount of memory. The RISC cores may use any of a number of protocols, depending on the embodiment. In some examples, the RISC cores may execute a real-time operating system (RTOS). The RISC cores may be implemented using one or more integrated circuit devices, application specific integrated circuits (ASICs), and/or memory devices. For example, the RISC cores may include an instruction cache and/or tightly coupled RAM.

Der DMA kann es den 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 Merkmalen unterstützen, die zum Bereitstellen der Optimierung des PVA verwendet werden, einschließlich der Unterstützung von mehrdimensionaler Adressierung und/oder zirkulärer Adressierung, ohne darauf beschränkt zu sein. In einigen Beispielen kann der DMA bis zu sechs oder mehr Dimensionen der Adressierung unterstützen, die Blockbreite, Blockhöhe, Blocktiefe, horizontale Blockabstufung, vertikale Blockabstufung und/oder Tiefenabstufung beinhalten 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 features used to provide optimization of the PVA, including, but not limited to, support for multi-dimensional 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 gradation, vertical block gradation, and/or depth gradation.

Die Vektorprozessoren können programmierbare Prozessoren sein, die so ausgestaltet sein können, dass sie die Programmierung für Algorithmen des maschinellen Sehens effizient und flexibel ausführen und Signalverarbeitungsfähigkeiten bereitstellen. In einigen Beispielen kann der PVA einen PVA-Kern und zwei Vektorverarbeitungsteilsystempartitionen beinhalten. Der PVA-Kern kann ein Prozessorteilsystem, DMA-Engine(s) (z. B. zwei DMA-Engines) und/oder andere Peripheriegeräte beinhalten. Das Vektorverarbeitungsteilsystem kann als primäre Verarbeitungs-Engine des PVA arbeiten und kann eine Vektorverarbeitungseinheit (vector processing unit - VPU), einen Anweisungs-Cache und/oder einen Vektorspeicher (z. B. VMEM) beinhalten. Ein VPU-Kern kann einen digitalen Signalprozessor beinhalten, wie zum Beispiel einen digitalen Single-Instruction-Multiple-Data(SIMD)-Very-Long-Instruction-Word(VLIW)-Signalprozessor. Die Kombination von SIMD und VLIW kann den Durchsatz und die Geschwindigkeit erhöhen.The vector processors may be programmable processors that may be configured to efficiently and flexibly execute programming for computer vision algorithms and 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 engine 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, such as a single-instruction-multiple-data (SIMD)-very-long-instruction-word (VLIW) digital signal processor. The combination of SIMD and VLIW may increase throughput and speed.

Jeder der Vektorprozessoren kann einen Anweisungs-Cache beinhalten und an dedizierten Speicher gekoppelt sein. Daher kann in einigen Beispielen jeder der Vektorprozessoren so konfiguriert sein, dass er unabhängig von den anderen Vektorprozessoren ausgeführt wird. In anderen Beispielen können Vektorprozessoren, die in einem konkreten PVA enthalten sind, so konfiguriert sein, dass sie Datenparallelität einsetzen. Zum Beispiel kann in einigen Ausführungsformen die Vielzahl von Vektorprozessoren, die in einem einzelnen PVA enthalten ist, denselben Algorithmus des maschinellen Sehens ausführen, jedoch an unterschiedlichen Regionen eines Bildes. In anderen Beispielen können die in einem konkreten PVA enthaltenen Vektorprozessoren simultan unterschiedliche Algorithmen des maschinellen Sehens an demselben Bild ausführen oder sogar unterschiedliche Algorithmen an sequentiellen Bildern oder Abschnitten eines Bildes ausführen. Unter anderem kann eine beliebige Anzahl von PVAs in dem Hardware-Beschleunigungscluster beinhaltet sein und kann eine beliebige Anzahl von Vektorprozessoren in jedem der PVAs beinhaltet sein. Zusätzlich können der/die PVA(s) einen zusätzlichen Fehlerkorrekturcode(ECC)-Speicher beinhalten, um die Gesamtsystemsicherheit zu erhöhen.Each of the vector processors may include an instruction cache and be coupled to dedicated memory. Therefore, in some examples, each of the vector processors may be configured to execute independently of the other vector processors. In other examples, vector processors included in a particular PVA may be configured to employ 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 particular PVA may simultaneously execute different computer vision algorithms on the same image, or even execute different algorithms on sequential images or portions of an image. Among other things, any number of PVAs may be included 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 include additional error correction code (ECC) memory to increase overall system security.

Der/die Beschleuniger 1214 (z. B. ein Hardware-Beschleunigungscluster) können ein Netz auf dem Chip für maschinelles Sehen und SRAM beinhalten, um einen SRAM mit hoher Bandbreite und niedriger Latenz für den/die Beschleuniger 1214 bereitzustellen. In einigen Beispielen kann der chipinterne Speicher mindestens 4 MB SRAM beinhalten, der z. B. und ohne Einschränkung aus acht feldkonfigurierbaren Speicherblöcken besteht, auf die sowohl der PVA als auch der DLA zugreifen können. Jedes Paar von Speicherblöcken kann eine weiterentwickelte Peripheriebus (advanced peripheral bus - APB)-Schnittstelle, eine Konfigurationsschaltung, einen Controller und einen Multiplexer beinhalten. Es kann jede Art von Speicher verwendet werden. Der PVA und DLA können auf den Speicher über einen Backbone zugreifen, der dem PVA und DLA einen Hochgeschwindigkeitszugriff auf den Speicher bereitstellt. Der Backbone kann ein Netz auf dem Chip für maschinelles Sehen beinhalten, das den PVA und DLA mit dem Speicher verbindet (z. B. unter Verwendung von dem APB).The accelerator(s) 1214 (e.g., a hardware acceleration cluster) may include an on-chip computer vision network and SRAM to provide high-bandwidth, low-latency SRAM to 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 accessible by 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 memory may be used. The PVA and DLA may access the memory via a backbone that provides the PVA and DLA with high-speed access to the memory. The backbone may include an on-chip computer vision network that connects the PVA and DLA to the memory (e.g., using the APB).

Das chipinterne Netz für maschinelles Sehen kann eine Schnittstelle beinhalten, die vor der Übertragung eines beliebigen Steuersignals/einer beliebigen Adresse/beliebiger Daten bestimmt, dass sowohl ein PVA als auch ein DLA einsatzbereite und gültige Signale bereitstellen. Eine derartige Schnittstelle kann separate Phasen und separate Kanäle für die Übertragung von Steuersignalen/Adressen/Daten sowie eine Burst-artige Kommunikation für eine kontinuierliche Datenübertragung bereitstellen. 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 machine vision network may include an interface that determines that both a PVA and a DLA are providing ready and valid signals before transmitting any control signal/address/data. Such an interface may provide separate phases and separate channels for transmitting control signals/addresses/data, as well as burst-type communication for continuous data transmission. This type of interface may conform to ISO 26262 or IEC 61508 standards, although other standards and protocols may be used.

In einigen Beispielen können die SoC(s) 1204 einen Echtzeit-Raytracing-Hardware-Beschleuniger beinhalten, wie er in der US-Patentanmeldung Nr. 16/101,232 , eingereicht am 10. August 2018, beschrieben ist. Der Echtzeit-Raytracing-Hardware-Beschleuniger kann verwendet werden, um schnell und effizient die Positionen und Ausdehnungen von Objekten (z. B. innerhalb eines Weltmodells) zu bestimmen, um Echtzeitvisualisierungssimulationen 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 den Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder für andere Funktionen und/oder für andere Anwendungen. In einigen Ausführungsformen können eine oder mehrere Tree Traversal Units (TTUs) verwendet werden, um eine oder mehrere Raytracing-bezogene Operationen auszuführen.In some examples, the SoC(s) 1204 may include a real-time ray tracing hardware accelerator as described in the US Patent Application No. 16/101,232 , filed August 10, 2018. The real-time ray tracing hardware accelerator may 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 analysis, for simulation of SONAR systems, for general wave propagation simulation, for comparison with LIDAR data for localization purposes and/or for other functions, and/or for other applications. 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-Beschleunigercluster) weisen ein breites Spektrum von Verwendungen für das autonome Fahren auf. Der PVA kann ein programmierbarer Sichtbeschleuniger sein, der für wichtige Verarbeitungsstufen im ADAS und in autonomen Fahrzeugen verwendet werden kann. Die Fähigkeiten des PVA sind eine gute Ergänzung für algorithmische Domänen, die eine vorhersagbare Verarbeitung bei niedriger Leistung und niedriger Latenz benötigen. Anders ausgedrückt zeigt der PVA eine gute Performance für halbdichte oder dichte reguläre Berechnungen, auch an kleinen Datensätzen, die vorhersagbare Laufzeiten mit niedriger Latenz und niedriger Leistung benötigen. Folglich sind die PVAs im Zusammenhang mit Plattformen für autonome Fahrzeuge für die Ausführung klassischer Algorithmen für maschinelles Sehen konstruiert, da diese effizient bei der Objekterkennung sind und mit Integer-Mathematik arbeiten.The accelerator(s) 1214 (e.g., the hardware accelerator cluster) have a wide range of uses for autonomous driving. The PVA can be a programmable vision accelerator that can be used for important processing stages in ADAS and autonomous vehicles. The capabilities of the PVA are a good complement for algorithmic domains that require predictable processing at low power and low latency. In other words, the PVA shows good performance for semi-dense or dense regular computations, even on small data sets that require predictable runtimes with low latency and low power. Consequently, the PVAs in combination are In conjunction with autonomous vehicle platforms, the system is designed to run classical machine vision algorithms because they are efficient at object recognition and use integer mathematics.

Zum Beispiel wird gemäß einer Ausführungsform der Technologie der PVA verwendet, um maschinelles Stereo-Sehen durchzuführen. Ein auf semiglobalem Abgleich basierender Algorithmus kann verwendet werden, obwohl dies nicht als Einschränkung auszulegen ist. Viele Anwendungen für das autonome Fahren auf Level 3-5 erfordern Bewegungsschätzung/Stereo-Abgleich spontan (z. B. Struktur aus Bewegung, Fußgängererkennung, Fahrspurerkennung usw.). Der PVA kann eine Funktion des maschinellen Stereo-Sehens an Eingaben von zwei monokularen Kameras durchführen.For example, according to one embodiment of the technology, the PVA is used to perform stereo machine vision. A semi-global matching based algorithm may be used, although this is not to be construed as a limitation. Many Level 3-5 autonomous driving applications require motion estimation/stereo matching on the fly (e.g., structure from motion, pedestrian detection, lane detection, etc.). The PVA can perform a stereo machine vision function on inputs from two monocular cameras.

In einigen Beispielen kann der PVA verwendet werden, um einen dichten optischen Fluss durchzuführen. Der PVA kann zum Beispiel verwendet werden, um RADAR-Rohdaten zu verarbeiten (z. B. unter Verwendung einer 4D-Fast-Fourier-Transformation), um ein verarbeitetes RADAR-Signal bereitzustellen, bevor der nächste RADAR-Impuls gesendet wird. In anderen Beispielen wird der PVA für die Laufzeit-Tiefenverarbeitung verwendet, indem z. B. Laufzeit-Rohdaten verarbeitet werden, um verarbeitete Laufzeitdaten bereitzustellen.In some examples, the PVA may be used to perform dense optical flow. For example, the PVA may be used to process raw RADAR data (e.g., using a 4D Fast Fourier Transform) to provide a processed RADAR signal before the next RADAR pulse is transmitted. In other examples, the PVA is used for time-of-flight deep processing, e.g., by processing raw time-of-flight data to provide processed time-of-flight data.

Der DLA kann verwendet werden, um eine beliebige Art von Netz auszuführen, um die Steuerung und Fahrsicherheit zu verbessern, einschließlich zum Beispiel ein neuronales Netz, das ein Maß an Konfidenz für jede Objekterkennung ausgibt. Ein solcher Konfidenzwert kann als Wahrscheinlichkeit interpretiert werden oder als Bereitstellen einer relativen „Gewichtung“ der einzelnen Erkennungen im Vergleich zu anderen Erkennungen. Der Konfidenzwert ermöglicht es dem System, weitere Entscheidungen darüber zu treffen, welche Erkennungen als richtig positive Erkennungen und nicht als falsch positive Erkennungen betrachtet werden sollten. Zum Beispiel kann das System einen Schwellenwert für die Konfidenz festlegen und nur Erkennungen, die den Schwellenwert überschreiten, als richtig positive Erkennungen betrachten. In einem automatischen Notbrems (automatic emergency braking - AEB)-System würden falsch positive Erkennungen dazu führen, dass das Fahrzeug automatisch eine Notbremsung durchführt, was natürlich unerwünscht ist. Daher sollten nur die sichersten Erkennungen als Auslöser für AEB in Betracht gezogen werden. Der DLA kann ein neuronales Netz zur Regression des Konfidenzwerts ausführen. Das neuronale Netz kann als Eingabe zumindest eine Teilmenge von Parametern nutzen, wie etwa die Abmessungen des Begrenzungsrahmens, die (z. B. von einem anderen Teilsystem) erhaltene Schätzung der Bodenebene, die Ausgabe des IMU-Sensors 1266, die mit der Ausrichtung des Fahrzeugs 1200 korreliert, die Entfernung, die Schätzung der 3D-Position der Aufgabe, die vom neuronalen Netz und/oder anderen Sensoren (z. B. LIDAR-Sensor(en) 1264 oder RADAR-Sensor(en) 1260) erhalten wird, und andere.The DLA can be used to run any type of network to improve control and driving safety, including, for example, a neural network that outputs a level of confidence for each object detection. Such a confidence value can be interpreted as a probability, or as providing a relative “weight” of each detection compared to other detections. The confidence value allows the system to make further decisions about which detections should be considered true positive detections rather than false positive detections. For example, the system can set a threshold for confidence and only consider detections that exceed the 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 certain detections should be considered as triggers for AEB. The DLA can run a neural network to regress the confidence value. The neural network may use as input at least a subset of parameters, such as the dimensions of the bounding box, the ground plane estimate obtained (e.g., from another subsystem), the output of the IMU sensor 1266 correlated with the orientation of the vehicle 1200, the range, the estimate of the 3D position of the task 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 können Datenspeicher 1216 (z. B. Speicher) beinhalten. Der bzw. die Datenspeicher 1216 kann bzw. können On-Chip-Speicher des bzw. der SoC(s) 1204 sein, der neuronale Netze speichern kann, die auf der GPU und/oder dem DLA ausgeführt werden sollen. In einigen Beispiel kann die Kapazität des/der Datenspeicher(s) 1216 groß genug sein, um mehrere Instanzen von neuronalen Netzen zur Redundanz und Sicherheit zu speichern. Der/die Datenspeicher 1216 können L2- oder L3-Cache(s) 1212 beinhalten. Der Verweis auf den/die Datenspeicher 1216 kann einen Verweis auf den Speicher beinhalten, der dem PVA, DLA und/oder anderen Beschleunigern 1214 zugeordnet ist, wie hier beschrieben.The SoC(s) 1204 may include storage 1216 (e.g., memory). The storage 1216 may be on-chip memory of the SoC(s) 1204 that may store neural networks to be executed on the GPU and/or DLA. In some examples, the capacity of the storage 1216 may be large enough to store multiple instances of neural networks for redundancy and security. The storage 1216 may include L2 or L3 cache(s) 1212. The reference to the storage 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) beinhalten. Der/die Prozessor(en) 1210 können einen Booting-und Leistungsverwaltungsprozessor beinhalten, der ein dedizierter Prozessor und ein Teilsystem sein kann, um die Booting-Leistungs- und -verwaltungsfunktionen und die damit verbundene Sicherheitsdurchsetzung zu handhaben. Der Booting- und Leistungsverwaltungsprozessor kann ein Teil der Booting-Sequenz des/der SoC(s) 1204 sein und Laufzeit-Leistungsverwaltungsdienste bereitstellen. Der Booting-Leistungs- und Verwaltungsprozessor kann Takt- und Spannungsprogrammierung, Unterstützung bei Übergängen des Systems in einen Zustand mit niedriger Leistung, Verwaltung von Thermo- und Temperatursensoren der SoC(s) 1204 und/oder Verwaltung von Leistungszuständen der SoC(s) 1204 bereitstellen. Jeder Temperatursensor kann als Ringoszillator implementiert sein, dessen Ausgangsfrequenz proportional zur Temperatur ist, und die SoC(s) 1204 können Ringoszillatoren verwenden, um Temperaturen von CPU(s) 1206, GPU(s) 1208 und/oder Beschleuniger(n) 1214 zu erkennen. Falls bestimmt wird, dass Temperaturen einen Schwellenwert überschreiten, kann der Booting- und Leistungsverwaltungsprozessor dann in eine Temperaturfehlerroutine eintreten und die SoC(s) 1204 in einen Zustand mit niedrigerer Leistung versetzen und/oder das Fahrzeug 1200 in einen Modus des Fahrens zu einem sicheren Halt 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 booting and power management processor, which may be a dedicated processor and subsystem to handle the booting power and management functions and associated security enforcement. The booting and power management processor may be part of the booting sequence of the SoC(s) 1204 and provide runtime power management services. The booting power and management processor may provide clock and voltage programming, assisting with system transitions to a low power state, managing thermal and temperature sensors of the SoC(s) 1204, and/or managing power states of the 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 ring oscillators to detect temperatures of CPU(s) 1206, GPU(s) 1208, and/or accelerator(s) 1214. If temperatures are determined to exceed a threshold, the booting and power management processor may then enter a temperature fault routine and place the SoC(s) 1204 into a lower power state and/or place the vehicle 1200 into a drive to safe stop mode (e.g., bring the vehicle 1200 to a safe stop).

Der/die Prozessor(en) 1210 können ferner einen Satz von eingebetteten Prozessoren beinhalten, die als eine Audioverarbeitungs-Engine dienen können. Die Audioverarbeitungs-Engine kann ein Audioteilsystem sein, das eine vollständige Hardware-Unterstützung für Mehrkanal-Audio über mehrere Schnittstellen sowie eine breite und flexible Palette von Audio-E/A-Schnittstellen ermöglicht. In einigen Beispielen ist die Audioverarbeitungs-Engine 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 over multiple interfaces, as well as 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 können ferner eine stets eingeschaltete Prozessor-Engine beinhalten, die notwendige Hardware-Merkmale zum Unterstützen der Sensorverwaltung bei niedriger Leistung und der Aufweck-Anwendungsfälle bereitstellen kann. Die stets eingeschaltete Prozessor-Engine kann einen Prozessorkern, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z. B. Zeitgeber und Unterbrechungssteuerungen), verschiedene E/A-Steuerungsperipheriegeräte und Routing-Logik beinhalten.The processor(s) 1210 may further include an always-on processor engine that may provide necessary hardware features to support low power sensor management and wake-up use cases. The always-on processor engine may include a processor core, tightly coupled RAM, supporting peripherals (e.g., timers and interrupt controllers), various I/O control peripherals, and routing logic.

Die Prozessor(en) 1210 können ferner eine Sicherheitscluster-Engine beinhalten, die ein dediziertes Prozessorteilsystem zum Handhaben der Sicherheitsverwaltung für Automobilanwendungen beinhaltet. Die Sicherheitscluster-Engine kann zwei oder mehr Prozessorkerne, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z. B. Zeitgeber, eine Unterbrechungssteuerung usw.) und/oder Routing-Logik beinhalten. In einem Sicherheitsmodus können die zwei oder mehr Kerne in einem Gleichschrittmodus arbeiten und als ein einzelner Kern mit einer Vergleichslogik funktionieren, um beliebige Unterschiede zwischen ihren Vorgängen zu erkennen.The processor(s) 1210 may further include a security cluster engine that includes a dedicated processor subsystem for handling security management for automotive applications. The security cluster engine 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 may operate in a lockstep mode and function as a single core with comparison logic to detect any differences between their operations.

Der/die Prozessor(en) 1210 können ferner eine Echtzeitkamera-Engine beinhalten, die ein dediziertes Prozessorteilsystem zur Handhabung der Echtzeitkameraverwaltung beinhalten kann.The processor(s) 1210 may further include a real-time camera engine, which may include a dedicated processor subsystem for handling real-time camera management.

Der/die Prozessor(en) 1210 kann/können außerdem einen Signalprozessor mit hohem Dynamikbereich beinhalten, der einen Bildsignalprozessor beinhaltet, der als Hardware-Engine Teil der Kameraverarbeitungspipeline ist.The processor(s) 1210 may also include a high dynamic range signal processor that includes an image signal processor that is part of the camera processing pipeline as a hardware engine.

Der/die Prozessor(en) 1210 kann/können einen Videobildkompositor beinhalten, der ein Verarbeitungsblock sein kann (z. B. auf einem Mikroprozessor implementiert), der Video-Nachbearbeitungsfunktionen implementiert, die von einer Videowiedergabeanwendung benötigt werden, um das endgültige Bild für das Playerfenster zu erzeugen. Der Videobildkompositor kann eine Objektivverzeichnungskorrektur an den Weitsichtkamera(s) 1270, Umgebungskamera(s) 1274 und/oder kabineninternen Überwachungskamerasensoren durchführen. Ein kabineninterner Überwachungskamerasensor wird vorzugsweise durch ein neuronales Netz überwacht, das auf einer anderen Instanz des fortgeschrittenen SoC läuft und so konfiguriert ist, dass es Ereignisse in der Kabine erkennt und entsprechend reagiert. Ein kabineninternes System kann Lippenlesen durchführen, um den Mobilfunkdienst zu aktivieren und einen Anruf zu tätigen, E-Mails zu diktieren, das Ziel des Fahrzeugs zu ändern, das Infotainmentsystem des Fahrzeugs und dessen Einstellungen zu aktivieren oder zu ändern oder sprachaktiviertes Surfen im Internet bereitzustellen. Dem Fahrer stehen bestimmte Funktionen nur zur Verfügung, 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 generate the final image for the player window. The video image compositor may perform lens distortion correction on the wide view camera(s) 1270, surround camera(s) 1274, and/or in-cab surveillance camera sensors. An in-cab surveillance camera sensor is preferably monitored by a neural network running on another instance of the advanced SoC and configured to detect and respond to events in the cabin. An in-cab system may perform lip reading to activate cellular service and make a call, dictate emails, change the vehicle's destination, activate or change the vehicle's infotainment system and its settings, or provide voice-activated web browsing. Certain functions are only available to the driver when the vehicle is operating in autonomous mode and are otherwise deactivated.

Der Videobildkompositor kann eine erweiterte zeitliche Rauschunterdrückung sowohl für die räumliche als auch für die zeitliche Rauschunterdrückung beinhalten. Wenn, zum Beispiel Bewegung in einem Video vorkommt, gewichtet die Rauschunterdrückung die räumlichen Informationen entsprechend, indem sie die Gewichtung der Informationen, die von benachbarten Frames bereitgestellt werden, verringert. Wenn ein Bild oder ein Abschnitt eines Bildes keine Bewegung beinhaltet, kann die durch den Videobildkompositor durchgeführte zeitliche Rauschunterdrückung Informationen aus dem vorherigen Bild verwenden, um das Rauschen in einem derzeitigen Bild zu unterdrücken.The video image compositor may include advanced temporal noise reduction for both spatial and temporal noise reduction. For example, when motion is present in a video, the noise reduction weights the spatial information accordingly by reducing the weight of the information provided by neighboring frames. When a frame or portion of a frame does not include motion, the temporal noise reduction performed by the video image compositor may use information from the previous frame to suppress noise in a current frame.

Der Videobildkompositor kann auch so konfiguriert sein, dass er eine Stereoentzerrung an den eingegebenen Stereolinsen-Frames durchführt. Der Videobildkompositor kann ferner für die Benutzerschnittstellenzusammensetzung verwendet werden, wenn der Desktop des Betriebssystems in Gebrauch ist und die GPU(s) 1208 nicht zum kontinuierlichen Rendern neuer Oberflächen benötigt werden. Auch wenn die GPU(s) 1208 eingeschaltet ist/sind und aktiv 3D-Rendering durchführt/durchführen, kann der Videobildkompositor verwendet werden, um die GPU(s) 1208 zu entlasten und so die Leistung und Reaktionsfähigkeit zu verbessern.The video image compositor may also be configured to perform stereo de-warping on the input stereo lens frames. The video image compositor may further be used for user interface composition when the operating system desktop is in use and the GPU(s) 1208 are not needed to continuously render new surfaces. Even when the GPU(s) 1208 are on and actively performing 3D rendering, the video image compositor may be used to offload the GPU(s) 1208, thereby improving performance and responsiveness.

Das/die SoC(s) 1204 können ferner eine serielle Mobile-Industry-Processor-Interface(MIPI)-Kameraschnittstelle zum Empfangen von Videos und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingabeblock beinhalten, der für Kamera- und zugehörige Pixeleingabefunktionen verwendet werden kann. Das/die SoC(s) 1204 können ferner (eine) Eingabe/Ausgabe-Steuerung(en) beinhalten, die durch Software gesteuert werden können und für den Empfang von E/A-Signalen verwendet werden können, die keiner bestimmten Rolle zugewiesen sind.The SoC(s) 1204 may further include a serial Mobile Industry Processor Interface (MIPI) camera interface for receiving video and input from cameras, a high-speed interface position and/or a video input block that can be used for camera and associated pixel input functions. The SoC(s) 1204 can further include input/output controller(s) that can be controlled by software and can be used to receive I/O signals that are not assigned to a specific role.

Das SoC 1204 kann darüber hinaus eine breite Palette von Peripherieschnittstellen enthalten, um die Kommunikation mit Peripheriegeräten, Audio-Codecs, Energieverwaltung und/oder anderen Vorrichtungen 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 Hochleistungssteuerungen für die Massenspeicherung beinhalten, die ihre eigenen DMA-Engines enthalten können und die verwendet werden können, um die CPU(s) 1206 von Routineaufgaben der Datenverwaltung zu befreien.The SoC 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 process 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 include their own DMA engines and which may be used to free the CPU(s) 1206 from routine data management tasks.

Das/die SoC(s) 1204 können eine Ende-zu-Ende-Plattform mit einer flexiblen Architektur sein, welche die Automatisierungslevel 3-5 überspannt und dadurch eine umfassende funktionelle Sicherheitsarchitektur bereitstellt, die Techniken des maschinellen Sehens und des ADAS für Diversität und Redundanz nutzt und effizient einsetzt und eine Plattform für einen flexiblen, zuverlässigen Fahrsoftwarestapel zusammen mit Deep-Learning-Werkzeugen bereitstellt. Das/die SoC(s) 1204 können schneller, zuverlässiger und sogar energieeffizienter und raumeffizienter sein als herkömmliche Systeme. Zum Beispiel können der/die Beschleuniger 1214, wenn sie mit den CPU(s) 1206, GPU(s) 1208 und Datenspeicher(n) 1216 kombiniert sind, eine schnelle, effiziente Plattform für autonome Fahrzeuge der Level 3-5 bereitstellen.The SoC(s) 1204 may be an end-to-end platform with a flexible architecture spanning automation levels 3-5, thereby providing a comprehensive functional safety architecture, leveraging and efficiently deploying machine vision and ADAS techniques for diversity and redundancy, and providing a platform for a flexible, reliable driving software stack along with deep learning tools. The SoC(s) 1204 may be faster, more reliable, and even more power and space efficient than traditional systems. For example, the accelerator(s) 1214, when combined with the CPU(s) 1206, GPU(s) 1208, and data storage(s) 1216, may provide a fast, efficient platform for Level 3-5 autonomous vehicles.

Die Technologie stellt somit Möglichkeiten und Funktionen bereit, die mit herkömmlichen Systemen nicht erreicht werden können. Zum Beispiel können Algorithmen des maschinellen Sehens auf CPUs ausgeführt werden, die unter Verwendung einer Programmiersprache auf hohem Level, wie etwa der Programmiersprache C, konfiguriert werden können, um eine große Vielfalt von Verarbeitungsalgorithmen über eine große Vielfalt von visuellen Daten auszuführen. Die CPUs sind jedoch oft nicht in der Lage, die Performance-Anforderungen vieler Anwendungen des maschinellen Sehens zu erfüllen, wie etwa beispielsweise in Bezug auf die Ausführungszeit und den Leistungsverbrauch. Insbesondere sind viele CPUs nicht in der Lage, komplexe Objekterkennungsalgorithmen in Echtzeit auszuführen, die in fahrzeuginternen ADAS-Anwendungen und in praktischen autonomen Fahrzeugen der Level 3-5 erforderlich sind.The technology thus provides capabilities and functions that cannot be achieved with conventional systems. For example, machine vision algorithms can be executed on CPUs that can be configured using a high-level programming language, such as the C programming language, to perform a wide variety of processing algorithms on a wide variety of visual data. However, the CPUs are often unable to meet the performance requirements of many machine vision applications, such as execution time and power consumption. In particular, many CPUs are unable to execute complex real-time object detection algorithms required in in-vehicle ADAS applications and in practical Level 3-5 autonomous vehicles.

Im Gegensatz zu herkömmlichen Systemen ermöglicht die hier beschriebene Technologie durch die Bereitstellung eines CPU-Komplexes, eines GPU-Komplexes und eines Hardware-Beschleunigungsclusters die gleichzeitige und/oder sequentielle Ausführung mehrerer neuronaler Netze und die Kombination der Ergebnisse, um autonome Fahrfunktionen der Level 3-5 zu ermöglichen. Ein CNN beispielsweise, das auf der DLA oder dGPU ausgeführt wird (z. B. die GPU 1220), kann eine Text- und Worterkennung enthalten, die es dem Supercomputer ermöglicht, Verkehrszeichen zu lesen und zu verstehen, einschließlich Zeichen, für die das neuronale Netz nicht speziell trainiert wurde. Der DLA kann ferner ein neuronales Netz beinhalten, das in der Lage ist, Zeichen zu identifizieren, zu interpretieren und ein semantisches Verständnis des Zeichens bereitzustellen und dieses semantische Verständnis an Pfadplanungsmodule weiterzugeben, die auf dem CPU-Komplex laufen.Unlike traditional systems, by providing a CPU complex, a GPU complex, and a hardware acceleration cluster, the technology described here enables the simultaneous and/or sequential execution of multiple neural networks and the combination of the results to enable Level 3-5 autonomous driving capabilities. For example, a CNN running on the DLA or dGPU (e.g., the GPU 1220) may include text and word recognition that allows the supercomputer to read and understand traffic signs, including signs for which the neural network was not specifically trained. The DLA may further include a neural network capable of identifying, interpreting, and providing a semantic understanding of the sign and passing this semantic understanding to path planning modules running on the CPU complex.

Als weiteres Beispiel können mehrere neuronale Netze simultan ausgeführt werden, wie für das Fahren bei Leveln 3, 4 oder 5 erforderlich ist. Zum Beispiel kann ein Warnschild mit der Aufschrift „Vorsicht: Blinkende Lichter weisen auf Vereisung hin“ zusammen mit einem elektrischen Licht von mehreren neuronalen Netzen unabhängig oder gemeinsam interpretiert werden. Das Warnschild selbst kann durch ein erstes eingesetztes neuronales Netz (z. B. ein neuronales Netz, das trainiert wurde) als Verkehrsschild identifiziert werden und ein Text „Blinkende Lichter weisen auf Vereisung hin“ kann durch ein zweites eingesetztes neuronales Netz interpretiert werden, das eine Pfadplanungssoftware des Fahrzeugs (die vorzugsweise auf dem CPU-Komplex ausgeführt wird) darüber informiert, dass, wenn blinkende Lichter detektiert werden, Vereisung vorliegt. Das blinkende Licht kann identifiziert werden, indem ein drittes eingesetztes neuronales Netz über mehrere Frames hinweg betrieben wird und die Wegplanungssoftware des Fahrzeugs über das Vorhandensein (oder Nichtvorhandensein) von blinkenden Lichtern informiert. Alle drei neuronalen Netze können simultan laufen, wie etwa innerhalb des DLA und/oder auf den GPU(s) 1208.As another example, multiple neural networks may be executed simultaneously, as required for driving at Levels 3, 4, or 5. For example, a warning sign reading "Caution: Flashing lights indicate icing" along with an electric light may be interpreted by multiple neural networks independently or jointly. The warning sign itself may be identified as a traffic sign by a first deployed neural network (e.g., a neural network that has been trained), and text "Flashing lights indicate icing" may be interpreted by a second deployed neural network, informing vehicle path planning software (preferably running on the CPU complex) that if flashing lights are detected, icing is present. The flashing light may be identified by running a third deployed neural network over multiple frames, informing the vehicle path planning software of the presence (or absence) of flashing lights. All three neural networks can run simultaneously, such as within the DLA and/or on the GPU(s) 1208.

In einigen Beispielen kann ein CNN zur Gesichtserkennung und Fahrzeugbesitzeridentifizierung Daten von Kamerasensoren verwenden, um das Vorhandensein eines autorisierten Fahrers und/oder Besitzers des Fahrzeugs 1200 zu identifizieren. Die stets eingeschaltete Sensorverarbeitungs-Engine kann verwendet werden, um das Fahrzeug zu entriegeln, wenn sich der Besitzer der Fahrertür nähert und die Lichter einschaltet, und um im Sicherheitsmodus das Fahrzeug zu deaktivieren, wenn der Besitzer das Fahrzeug verlässt. Auf diese Weise stellen das/die SoC(s) 1204 Sicherheit gegen Diebstahl und/oder Carjacking bereit.In some examples, a CNN for facial recognition and vehicle owner identification may use data from camera sensors to detect the presence of an authorized driver and/or owner. cers 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 turns on the lights, and to disable the vehicle in security mode when the owner exits the vehicle. In this way, the SoC(s) 1204 provide security against theft and/or carjacking.

In einem anderen Beispiel kann ein CNN zur Erkennung und Identifizierung von Rettungsfahrzeugen Daten von Mikrofonen 1296 verwenden, um Sirenen von Einsatzfahrzeugen zu erkennen und zu identifizieren. Im Gegensatz zu herkömmlichen Systemen, die allgemeine Klassifikatoren verwenden, um Sirenen zu erkennen und manuell Merkmale zu extrahieren, verwenden die SoC(s) 1204 das CNN für die Klassifizierung von Umwelt- und Stadtgeräuschen sowie für die Klassifizierung visueller Daten. In einer bevorzugten Ausführungsform wird das CNN, das auf dem DLA läuft, dafür trainiert, die relative Annäherungsgeschwindigkeit des Einsatzfahrzeugs zu identifizieren (z. B. durch Verwendung des Dopplereffekts). Das CNN kann auch dafür trainiert werden, Einsatzfahrzeuge zu identifizieren, die für das lokale Gebiet, in dem das Fahrzeug betrieben wird, spezifisch sind, wie durch den/die GNSS-Sensor(en) 1258 identifiziert. Folglich versucht das CNN zum Beispiel, wenn es in Europa betrieben wird, europäische Sirenen zu erkennen, und in den Vereinigten Staaten versucht das CNN, nur nordamerikanische Sirenen zu identifizieren. Sobald ein Einsatzfahrzeug erkannt wird, kann ein Steuerprogramm verwendet werden, um eine Sicherheitsroutine für Einsatzfahrzeuge auszuführen, das Fahrzeug zu verlangsamen, zur Seite der Straße zu fahren, das Fahrzeug abzustellen und/oder das Fahrzeug mit Hilfe der Ultraschallsensoren 1262 im Leerlauf laufen zu lassen, bis das Einsatzfahrzeug(e) vorbeifährt.In another example, a CNN for emergency vehicle detection and identification may use data from microphones 1296 to detect and identify emergency vehicle sirens. Unlike conventional systems that use general classifiers to detect sirens and manually extract features, the SoC(s) 1204 use the CNN for environmental and urban noise classification, as well as visual data classification. In a preferred embodiment, the CNN running on the DLA is trained to identify the relative approach speed of the emergency vehicle (e.g., by using the Doppler effect). The CNN may also be trained to identify emergency vehicles specific to the local area in which the vehicle is operating, as identified by the GNSS sensor(s) 1258. Thus, for example, when operating in Europe, the CNN will attempt to detect European sirens, and in the United States, the CNN 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, slow the vehicle, pull over to the side of the road, park the vehicle, and/or idle the vehicle using the ultrasonic sensors 1262 until the emergency vehicle(s) passes.

Das Fahrzeug kann CPU(s) 1218 (z. B. diskrete CPU(s) oder dCPU(s)) beinhalten, die über eine Hochgeschwindigkeitszusammenschaltung (z. B. PCIe) an die SoC(s) 1204 gekoppelt sein können. Die CPU(s) 1218 können zum Beispiel einen X86-Prozessor beinhalten. Die CPU(s) 1218 können verwendet werden, um vielfältige Funktionen durchzuführen, einschließlich zum Beispiel der Arbitrierung von möglicherweise inkonsistenten Ergebnissen zwischen ADAS-Sensoren und dem bzw. den SoC(s) 1204 und/oder Überwachung des Status und des Zustands der Steuerung(en) 1236 und/oder des Infotainment-SoC 1230.The vehicle may include CPU(s) 1218 (e.g., discrete CPU(s) or dCPU(s)) that may be coupled to the SoC(s) 1204 via a high-speed interconnect (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, for example, arbitrating potentially inconsistent results between ADAS sensors and the SoC(s) 1204 and/or monitoring the status and condition of the controller(s) 1236 and/or the infotainment SoC 1230.

Das Fahrzeug 1200 kann GPU(s) 1220 (z. B. diskrete GPU(s) oder dGPU(s)) beinhalten, die über eine Hochgeschwindigkeitszusammenschaltung (z. B. NVLINK von NVIDIA) an die SoC(s) 1204 gekoppelt sein können. Die GPU(s) 1220 können eine zusätzliche Funktionalität für künstliche Intelligenz bereitstellen, wie etwa durch Ausführen redundanter und/oder unterschiedlicher neuronaler Netze, und sie können zum Trainieren und/oder Aktualisieren neuronaler Netze auf Grundlage von Eingaben (z. B. Sensordaten) von Sensoren des Fahrzeugs 1200 verwendet werden.The vehicle 1200 may include GPU(s) 1220 (e.g., discrete GPU(s) or dGPU(s)) that may be coupled to the SoC(s) 1204 via a high-speed interconnect (e.g., NVIDIA's NVLINK). The GPU(s) 1220 may provide additional functionality for artificial intelligence, such as by running redundant and/or different neural networks, and may be used to train and/or update neural networks based on inputs (e.g., sensor data) from sensors of the vehicle 1200.

Das Fahrzeug 1200 kann ferner die Netzschnittstelle 1224 beinhalten, die drahtlose Antenne(n) 1226 beinhalten kann (z. B. eine oder mehrere drahtlose Antennen für unterschiedliche Kommunikationsprotokolle, wie etwa eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). Die Netzschnittstelle 1224 kann verwendet werden, um drahtlose Verbindungen über das Internet mit der Cloud (z. B. mit dem Server 1278 und/oder anderen Netzvorrichtungen), mit anderen Fahrzeugen und/oder mit Rechenvorrichtungen (z. B. Client-Vorrichtungen von Passagieren) zu ermöglichen. Zum Kommunizieren mit anderen Fahrzeugen kann eine direkte Verknüpfung zwischen den zwei Fahrzeugen hergestellt werden und/oder eine indirekte Verknüpfung (z. B. über Netze und über das Internet) hergestellt werden. Direkte Verknüpfungen können unter Verwendung einer Fahrzeug-zu-Fahrzeug-Kommunikationsverknüpfung hergestellt werden. Eine Fahrzeug-zu-Fahrzeug-Kommunikationsverknüpfung 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 Funktionalität kann Teil einer kooperativen Funktionalität zur adaptiven Geschwindigkeitsregelung des Fahrzeugs 1200 sein.The vehicle 1200 may further include the network interface 1224, which may include wireless antenna(s) 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 enable wireless connections over the Internet to the cloud (e.g., to the server 1278 and/or other network devices), to other vehicles, and/or to computing devices (e.g., passenger client devices). To communicate with other vehicles, a direct link may be established between the two vehicles and/or an indirect link may be established (e.g., over networks and over the Internet). Direct links may be established using a vehicle-to-vehicle communication link. A 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, beside, and/or behind the vehicle 1200). This functionality may be part of a cooperative adaptive cruise control functionality of the vehicle 1200.

Die Netzschnittstelle 1224 kann ein SoC beinhalten, das eine Modulations- und Demodulationsfunktionalität bereitstellt und es den Steuerungen 1236 ermöglicht, über drahtlose Netze zu kommunizieren. Die Netzschnittstelle 1224 kann ein Hochfrequenz-Frontend für die Aufwärtskonvertierung vom Basisband auf die Hochfrequenz und die Abwärtskonvertierung von der Hochfrequenz auf das Basisband beinhalten. Die Frequenzkonvertierungen können durch hinreichend bekannte Prozesse und/oder unter Verwendung von Überlagerungsverfahren durchgeführt werden. In einigen Beispielen kann die Hochfrequenz-Frontend-Funktionalität durch einen separaten Chip bereitgestellt sein. Die Netzschnittstelle kann eine drahtlose Funktionalität für die Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle beinhalten.The network interface 1224 may include a SoC that provides modulation and demodulation functionality and enables the controllers 1236 to communicate over wireless networks. The network interface 1224 may include a radio frequency front end for upconversion from baseband to radio frequency and downconversion from radio frequency to baseband. The frequency conversions may be performed by well-known processes and/or using overlay techniques. In some examples, the radio frequency front end functionality may be provided by a separate chip. The network interface may include wireless functionality for communication over 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 (einen) Datenspeicher 1228 beinhalten, die auch chipexterne Speicher (z. B. außerhalb des/der SoC(s) 1204) beinhalten können. Der/die Datenspeicher 1228 können ein oder mehrere Speicherelemente beinhalten, darunter RAM, SRAM, DRAM, VRAM, Flash, Festplatten und/oder andere Komponenten und/oder Vorrichtungen, die mindestens ein Datenbit speichern können.The vehicle 1200 may also include data storage(s) 1228, which may also include off-chip storage (e.g., outside of the SoC(s) 1204). The data storage(s) 1228 may include one or more memory 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 ferner GNSS-Sensor(en) 1258 (z. B. GPS- und/oder unterstützte GPS-Sensoren) beinhalten, um bei Funktionen zur Kartierung, Wahrnehmung, Erzeugung des Belegungsrasters und/oder Pfadplanung zu helfen. Eine beliebige Anzahl von GNSS-Sensor(en) 1258 kann verwendet werden, einschließlich zum Beispiel und ohne Einschränkung eines GPS unter Verwendung eines USB-Steckers mit einer Ethernet-zu-Seriell-Brücke (z. B. RS-232-Brücke).The vehicle 1200 may further include GNSS sensor(s) 1258 (e.g., GPS and/or assisted GPS sensors) to assist with mapping, sensing, occupancy grid generation, and/or path planning functions. Any number of GNSS sensor(s) 1258 may be used, including, for example and without limitation, a GPS using a USB connector with an Ethernet to serial bridge (e.g., RS-232 bridge).

Das Fahrzeug 1200 kann ferner RADAR-Sensor(en) 1260 beinhalten. Der/die RADAR-Sensor(en) 1260 können vom Fahrzeug 1200 zur Fernerkennung von Fahrzeugen verwendet werden, auch bei Dunkelheit und/oder schlechten Wetterbedingungen. Die RADAR-Funktionssicherheitslevel können ASIL B sein. Der/die RADAR-Sensor(en) 1260 können CAN und/oder den Bus 1202 (z. B. zur Übertragung der von dem/den RADAR-Sensor(en) 1260 generierten Daten) zur Steuerung von und zum Zugriff auf Objektverfolgungsdaten verwenden, wobei in einigen Beispielen der Zugriff auf Rohdaten über Ethernet erfolgt. Eine große Vielfalt von RADAR-Sensortypen kann verwendet werden. Zum Beispiel und ohne Einschränkung können der/die RADAR-Sensor(en) 1260 für die Verwendung als Front-, Heck- und Seiten-RADAR geeignet sein. In einigen Beispielen werden Puls-Doppler-RADAR-Sensoren verwendet.The vehicle 1200 may further include RADAR sensor(s) 1260. The RADAR sensor(s) 1260 may be used by the vehicle 1200 to remotely detect vehicles, even in darkness and/or poor weather conditions. The RADAR functional safety levels may be ASIL B. The RADAR sensor(s) 1260 may use CAN and/or bus 1202 (e.g., to transmit data generated by the RADAR sensor(s) 1260) to control and access object tracking data, with raw data being accessed over Ethernet in some examples. A wide variety of RADAR sensor types may be used. For example, and without limitation, the RADAR sensor(s) 1260 may be suitable for use as front, rear, and side RADAR. In some examples, pulse-Doppler RADAR sensors are used.

Der/die RADAR-Sensor(en) 1260 können unterschiedliche Konfigurationen beinhalten, z. B. große Reichweite mit engem Sichtfeld, kurze Reichweite mit breitem Sichtfeld, kurze Seitenabdeckung usw. In einigen Beispielen kann ein Langstrecken-RADAR für die adaptive Geschwindigkeitsregelung verwendet werden. Die Langstrecken-RADAR-Systeme können ein breites Sichtfeld bereitstellen, das durch zwei oder mehr unabhängige Scans realisiert wird, z. B. innerhalb einer Reichweite von 250 m. Der/die RADAR-Sensor(en) 1260 können dabei helfen, zwischen statischen und sich bewegenden Objekten zu unterscheiden, und können von ADAS-Systemen für den Notbremsassistenten und die Vorwärtskollisionswarnung verwendet werden. Langstrecken-RADAR-Sensoren können ein monostatisches multimodales RADAR mit mehreren (z. B. sechs oder mehr) festen RADAR-Antennen und einer Hochgeschwindigkeits-CAN- und FlexRay-Schnittstelle beinhalten. In einem Beispiel mit sechs Antennen können die mittleren vier Antennen ein fokussiertes Balkenmuster erzeugen, das darauf ausgelegt ist, die Umgebung des Fahrzeugs 1200 bei höheren Geschwindigkeiten mit minimaler Störung durch den Verkehr auf den angrenzenden Fahrspuren zu erfassen. Die beiden anderen Antennen können die Sichtfeld erweitern, wodurch es möglich ist, Fahrzeuge, die in die Fahrspur des Fahrzeugs 1200 einfahren oder diese verlassen, schnell zu erkennen.The RADAR sensor(s) 1260 may include different configurations, 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 RADAR systems may provide a wide field of view realized by two or more independent scans, e.g., within a range of 250 m. The RADAR sensor(s) 1260 may help distinguish between static and moving objects and may be used by ADAS systems for emergency braking assist and forward collision warning. Long range RADAR sensors may include a monostatic multi-modal 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 middle four antennas can create a focused bar pattern designed to detect 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 exiting the lane of the vehicle 1200.

RADAR-Systeme mit mittlerer Reichweite können beispielsweise eine Reichweite von bis zu 1260 m (vorne) oder 80 m (hinten) und ein Sichtfeld von bis zu 42 Grad (vorne) oder 1250 Grad (hinten) beinhalten. Kurzstrecken-RADAR-Systeme können ohne Einschränkung RADAR-Sensoren beinhalten, die für die Installation an beiden Enden des hinteren Stoßfängers ausgelegt sind. Wenn das RADAR-Sensorsystem an beiden Enden des hinteren Stoßfängers installiert ist, kann es zwei Strahlen erzeugen, die den toten Winkel hinter und neben dem Fahrzeug konstant überwachen.For example, medium-range RADAR systems can include a range of up to 1260 m (front) or 80 m (rear) and a field of view of up to 42 degrees (front) or 1250 degrees (rear). Short-range RADAR systems can include, without limitation, RADAR sensors designed to be installed at both ends of the rear bumper. When installed at both ends of the rear bumper, the RADAR sensor system can create two beams that constantly monitor the blind spot behind and to the side of the vehicle.

Kurzstrecken-RADAR-Systeme können in einem ADAS-System zur Erkennung des toten Winkels und/oder zur Spurwechselassistenz 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 ferner einen oder mehrere Ultraschall-Sensoren 1262 beinhalten. Der/die Ultraschallsensor(en) 1262, die vorne, hinten und/oder an den Seiten des Fahrzeugs 1200 positioniert sein können, können als Einparkhilfe und/oder zur Erstellung und Aktualisierung eines Belegungsrasters verwendet werden. Eine große Vielfalt von Ultraschallsensor(en) 1262 kann verwendet werden und können unterschiedliche Ultraschallsensor(en) 1262 können für unterschiedliche Erkennungsreichweiten (z. B. 2,5 m, 4 m) verwendet werden. Der/die Ultraschallsensor(en) 1262 können bei funktionellen Sicherheitsstufen von ASIL B arbeiten.The vehicle 1200 may further include one or more ultrasonic sensors 1262. The ultrasonic sensor(s) 1262, which may be positioned at the front, rear, and/or sides of the vehicle 1200, may be used as a parking aid and/or to create and update an occupancy grid. A wide variety of ultrasonic sensor(s) 1262 may be used, and different ultrasonic sensor(s) 1262 may be used for different detection ranges (e.g., 2.5 m, 4 m). The ultrasonic sensor(s) 1262 may operate at functional safety levels of ASIL B.

Das Fahrzeug 1200 kann LIDAR-Sensor(en) 1264 beinhalten. Der/die LIDAR-Sensor(en) 1264 können zur Objekt- und Fußgängererkennung, Notbremsung, Kollisionsvermeidung und/oder andere Funktionen verwendet werden. Der/die LIDAR-Sensor(en) 1264 können der funktionellen Sicherheitsstufe ASIL B entsprechen. In einigen Beispielen kann das Fahrzeug 1200 mehrere LIDAR-Sensoren 1264 (z. B. zwei, vier, sechs usw.) beinhalten, die Ethernet verwenden können (um z. B. Daten für einen Gigabit-Ethernet-Switch bereitzustellen).The vehicle 1200 may include LIDAR sensor(s) 1264. The LIDAR sensor(s) 1264 may be used for object and pedestrian detection, emergency braking, collision avoidance, and/or other functions. The LIDAR sensor(s) 1264 may meet functional safety level ASIL B. 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-Sensor(en) 1264 dazu in der Lage sein, eine Liste von Objekten und deren Abstände für ein 360-Grad-Sichtfeld bereitzustellen. Handelsübliche LIDAR-Sensor(en) 1264 können zum Beispiel eine beworbene Reichweite von ungefähr 100 m aufweisen, mit einer Genauigkeit von 2 cm-3 cm und mit Unterstützung für eine 100 Mbps-Ethernet-Verbindung. In einigen Beispielen können ein oder mehrere nicht vorstehende LIDAR-Sensoren 1264 verwendet werden. In solchen Beispielen können der/die LIDAR-Sensor(en) 1264 als eine kleine Vorrichtung implementiert werden, das in die Front, das Heck, die Seiten und/oder die Ecken des Fahrzeugs 1200 eingebettet werden kann. Der/die LIDAR-Sensor(en) 1264 können in solchen Beispielen ein horizontales Sichtfeld von bis zu 120 Grad und ein vertikales Sichtfeld von bis zu 35 Grad mit einer Reichweite von 200 m selbst bei Objekten mit niedrigem Reflexionsvermögen bereitstellen. 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 sensor(s) 1264 may be capable of providing a list of objects and their distances for a 360 degree field of view. For example, commercially available LIDAR sensor(s) 1264 may have an advertised range of approximately 100 m, with an accuracy of 2 cm-3 cm, and 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 sensor(s) 1264 may be implemented as a small device that may be embedded in the front, rear, sides, and/or corners of the vehicle 1200. The LIDAR sensor(s) 1264 in such examples may provide a horizontal field of view of up to 120 degrees and a vertical field of view of up to 35 degrees with a range of 200 m even for low reflectivity objects. Front-mounted LIDAR sensors 1264 may be configured for a horizontal field of view between 45 degrees and 135 degrees.

In einigen Beispielen können auch LIDAR-Technologien, wie etwa 3D-Flash-LIDAR, verwendet werden. 3D-Flash-LIDAR verwendet einen Laserblitz als Sendequelle, um die Umgebung des Fahrzeugs bis zu einer Entfernung von ca. 200 m auszuleuchten. Eine Flash-LIDAR-Einheit beinhaltet einen Rezeptor, der die Laserpuls-Laufzeit und das reflektierte Licht an jedem Pixel aufzeichnet, was wiederum der Reichweite vom Fahrzeug zu den Objekten entspricht. Flash-LIDAR kann ermöglichen, dass mit jedem Laserblitz hochgenaue und verzerrungsfreie Bilder der Umgebung erzeugt werden. In einigen Beispielen können vier Flash-LIDAR-Sensoren eingesetzt werden, einer an jeder Seite des Fahrzeugs 1200. Verfügbare 3D-Flash-LIDAR-Systeme beinhalten eine Festkörper-3D-Staring-Array-LIDAR-Kamera ohne bewegliche Teile außer einem Lüfter (z. B. eine nicht scannende LIDAR-Vorrichtung). Die Flash-LIDAR-Vorrichtung(en) können einen Fünf-Nanosekunden-Laserpuls der Klasse I (augensicher) pro Bild verwenden und können das reflektierte Laserlicht in Form von 3D-Reichweitenpunktwolken und gemeinsam registrierten Intensitätsdaten erfassen. Durch die Verwendung von Flash-LIDAR und weil Flash-LIDAR eine Festkörpervorrichtung ohne bewegliche Teile ist, ist der/die LIDAR-Sensor(en) 1264 weniger anfällig für Bewegungsunschärfe, 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 transmitting source to illuminate the surroundings of the vehicle up to a distance of approximately 200 m. A flash LIDAR unit includes a receptor that records the laser pulse time of flight and reflected light at each pixel, which in turn corresponds to the range from the vehicle to the objects. Flash LIDAR can enable highly accurate and distortion-free images of the surroundings to be generated with each laser flash. In some examples, four flash LIDAR sensors can 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(s) can use a five nanosecond Class I (eye-safe) laser pulse per image and can collect the reflected laser light as 3D range 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 lidar sensor(s) 1264 are less susceptible to motion blur, vibration, and/or shock.

Das Fahrzeug kann ferner IMU-Sensor(en) 1266 beinhalten. Der/die IMU-Sensor(en) 1266 können sich in einigen Beispielen in der Mitte der Hinterachse des Fahrzeugs 1200 befinden. Der/die IMU-Sensor(en) 1266 können zum Beispiel und ohne Einschränkung (einen) Beschleunigungsmesser, (ein) Magnetometer, (ein) Gyroskop(e), (einen) Magnetkompass(e) und/oder andere Sensorarten beinhalten. In einigen Beispielen, wie etwa in sechsachsigen Anwendungen, können der/die IMU-Sensor(en) 1266 Beschleunigungsmesser und Gyroskope beinhalten, während in neunachsigen Anwendungen der/die IMU-Sensor(en) 1266 Beschleunigungsmesser, Gyroskope und Magnetometer beinhalten können.The vehicle may further include IMU sensor(s) 1266. The IMU sensor(s) 1266 may be located in the center of the rear axle of the vehicle 1200 in some examples. The IMU sensor(s) 1266 may include, for example and without limitation, accelerometer(s), magnetometer(s), gyroscope(s), magnetic compass(s), and/or other types of sensors. In some examples, such as in six-axis applications, the IMU sensor(s) 1266 may include accelerometers and gyroscopes, while in nine-axis applications, the IMU sensor(s) 1266 may include accelerometers, gyroscopes, and magnetometers.

In einigen Ausführungsformen können die IMU-Sensor(en) 1266 als miniaturisiertes GPS-gestütztes Trägheitsnavigationssystem (GPS-Aided Inertial Navigation System - GPS/INS) mit hoher Rechenleistung implementiert sein, das Trägheitssensoren von mikroelektromechanischen Systemen (micro-electro-mechanical systems - MEMS), einen hochempfindlichen GPS-Empfänger und weiterentwickelte Kalman-Filteralgorithmen kombiniert, um Schätzungen von Position, Geschwindigkeit und Lage bereitzustellen. Somit können in solchen Beispielen der/die IMU-Sensor(en) 1266 es dem Fahrzeug 1200 ermöglichen, den Kurs zu schätzen, ohne dass Eingaben von einem Magnetsensor erforderlich sind, indem vom GPS an den/die IMU-Sensor(en) 1266 Änderungen der Geschwindigkeit direkt beobachtet und korreliert werden. In einigen Beispielen können die IMU-Sensor(en) 1266 und GNSS-Sensor(en) 1258 in einer einzelnen integrierten Einheit kombiniert sein.In some embodiments, the IMU sensor(s) 1266 may be implemented as a miniaturized, high-performance GPS-Aided Inertial Navigation System (GPS/INS) that combines micro-electro-mechanical systems (MEMS) inertial sensors, a highly sensitive GPS receiver, and advanced Kalman filter algorithms to provide estimates of position, velocity, and attitude. Thus, in such examples, the IMU sensor(s) 1266 may enable the vehicle 1200 to estimate heading without requiring inputs from a magnetic sensor by directly observing and correlating changes in velocity from the GPS to the IMU sensor(s) 1266. In some examples, the IMU sensor(s) 1266 and GNSS sensor(s) 1258 may be combined in a single integrated unit.

Das Fahrzeug kann ein oder mehrere Mikrofone 1296 beinhalten, die in und/oder um das Fahrzeug 1200 herum angebracht sind. Das/die Mikrofon(e) 1296 können unter anderem zur Erkennung und Identifizierung von Einsatzfahrzeugen verwendet werden.The vehicle may include one or more microphones 1296 mounted in and/or around the vehicle 1200. The microphone(s) 1296 may be used, among other things, to detect and identify emergency vehicles.

Das Fahrzeug kann ferner eine beliebige Anzahl von Kameratypen beinhalten, darunter Stereokamera(s) 1268, Weitsichtkamera(s) 1270, Infrarotkamera(s) 1272, Umgebungskamera(s) 1274, Langstrecken- und/oder Mittelstreckenkamera(s) 1298 und/oder andere Kameratypen. Die Kameras können verwendet werden, um Bilddaten um die gesamte Peripherie des Fahrzeugs 1200 herum zu erfassen. Die Art der verwendeten Kameras hängt von den Ausführungsformen und Anforderungen für das Fahrzeug 1200 ab, und es kann eine beliebige Kombination von Kameratypen verwendet werden, um die erforderliche Abdeckung rund um das Fahrzeug 1200 bereitzustellen. Zusätzlich kann die Anzahl der Kameras in Abhängigkeit von der Ausführungsform unterschiedlich sein. Zum Beispiel kann das Fahrzeug sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras und/oder eine andere Anzahl von Kameras beinhalten. Die Kameras können zum Beispiel und ohne Einschränkung Gigabit Multimedia Serial Link (GMSL) und/oder Gigabit Ethernet unterstützen. Jede der Kameras wird hier mit Bezug auf 12 und 13 näher beschrieben.The vehicle may further include any number of camera types, including stereo camera(s) 1268, wide view camera(s) 1270, infrared camera(s) 1272, surround camera(s) 1274, long range and/or medium range camera(s) 1298, and/or other camera types. The cameras may be used to capture image data around the entire periphery of the vehicle 1200. The type of cameras used depends on the embodiments and requirements for the vehicle 1200, and any combination of camera types may be used to provide the required coverage around the vehicle 1200. Additionally, 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. The cameras may for example and without limitation support Gigabit Multimedia Serial Link (GMSL) and/or Gigabit Ethernet. Each of the cameras is described here with reference to 12 and 13 described in more detail.

Das Fahrzeug 1200 kann ferner Vibrationssensor(en) 1242 beinhalten. Der/die Vibrationssensor(en) 1242 können Vibrationen von Komponenten des Fahrzeugs, wie etwa der Achse(n), messen. Zum Beispiel können Änderungen der Vibrationen eine Änderung des Straßenbelags angeben. In einem weiteren Beispiel, wenn zwei oder mehr Vibrationssensoren 1242 verwendet werden, können die Unterschiede zwischen den Vibrationen verwendet werden, um die Reibung oder den Schlupf des Straßenbelags zu bestimmen (z. B., wenn der Unterschied der Vibration zwischen einer leistungsbetriebenen Achse und einer sich frei drehenden Achse besteht).The vehicle 1200 may further include vibration sensor(s) 1242. The vibration sensor(s) 1242 may measure vibrations of components of the vehicle, such as the axle(s). For example, changes in vibrations may indicate a change in the road surface. In another example, when two or more vibration sensors 1242 are used, the differences between the vibrations may be used to determine the friction or slip of the road surface (e.g., when the difference in vibration is between a powered axle and a freely rotating axle).

Das Fahrzeug 1200 kann ein ADAS-System 1238 beinhalten. Das ADAS-System 1238 kann in einigen Beispielen ein SoC beinhalten. Das ADAS-System 1238 kann autonome/adaptive/automatische Geschwindigkeitssteuerung (autonomous/adaptive/automatic cruise control - ACC), kooperative adaptive Geschwindigkeitssteuerung (cooperative adaptive cruise control - CACC), Vorwärtszusammenstoßwarnungen (forward crash warning - FCW), automatisches Notbremsen (AEB), Spurverlassenswarnungen (lane departure warning - LDW), Spurhalteassistenz (lane keep assist - LKA), Totwinkelwarnung (blind spot warning - BSW), Querverkehrswarnung (rear cross-traffic warning - RCTW), Kollisionswarn(collision warning - CWS)-Systeme, Spurzentrierung (lane centering - LC) und/oder andere Systeme, Merkmale und/oder Funktionen beinhalten.The vehicle 1200 may include an ADAS system 1238. The ADAS system 1238 may include a SoC in some examples. The ADAS system 1238 may include autonomous/adaptive/automatic cruise control (ACC), cooperative adaptive cruise control (CACC), forward crash warning (FCW), automatic emergency braking (AEB), lane departure warning (LDW), lane keep assist (LKA), blind spot warning (BSW), rear cross-traffic warning (RCTW), collision warning (CWS) systems, lane centering (LC), and/or other systems, features, and/or functions.

Die ACC-Systeme können RADAR-Sensor(en) 1260, LIDAR-Sensor(en) 1264 und/oder eine Kamera(s) verwenden. Die ACC-Systeme können eine ACC in Längsrichtung und/oder eine ACC in Querrichtung beinhalten. Die ACC in Längsrichtung steuert und überwacht den Abstand zu einem anderen Fahrzeug, die sich unmittelbar vor dem Fahrzeug 1200 befindet, und es stellt die Geschwindigkeit des Fahrzeugs automatisch ein, um einen sicheren Abstand zu vorausfahrenden Fahrzeugen einzuhalten. Die ACC in Querrichtung führt eine Abstandshaltung durch und rät dem Fahrzeug 1200, die Fahrspuren zu wechseln, wenn dies erforderlich ist. Die ACC in Querrichtung ist mit anderen ADAS-Anwendungen, wie etwa LC und CWS, verbunden.The ACC systems may use RADAR sensor(s) 1260, LIDAR sensor(s) 1264, and/or camera(s). The ACC systems may include longitudinal ACC and/or lateral ACC. Longitudinal ACC controls and monitors the distance to another vehicle immediately ahead of vehicle 1200, and automatically adjusts the speed of the vehicle to maintain a safe distance from vehicles ahead. Lateral ACC performs distance keeping and advises vehicle 1200 to change lanes when necessary. Lateral ACC is interfaced with other ADAS applications such as LC and CWS.

Die CACC verwendet Informationen von anderen Fahrzeugen, die über die Netzschnittstelle 1224 und/oder die drahtlose(n) Antenne(n) 1226 von anderen Fahrzeugen über eine drahtlose Verknüpfung oder indirekt über eine Netzverbindung (z. B. über das Internet) empfangen werden können. Direkte Verknüpfungen können durch eine Fahrzeug-zu-Fahrzeug(V2V)-Kommunikationsverknüpfung, während indirekte Verknüpfungen durch eine Infrastruktur-zu-Fahrzeug(I2V)-Kommunikationsverknüpfungen bereitgestellt werden können. Im Allgemeinen stellt das V2V-Kommunikationskonzept Informationen über unmittelbar vorausfahrende Fahrzeuge (z. B. Fahrzeuge, die sich unmittelbar vor dem und auf derselben Spur wie das Fahrzeug 1200 befinden) bereit, während das I2V-Kommunikationskonzept Informationen über den weiter entfernt vorausfahrenden Verkehr bereitstellt. CACC-Systeme können entweder eines oder beides von 12V- und V2V-Informationsquellen beinhalten. Angesichts der Informationen über die Fahrzeuge vor dem Fahrzeug 1200 kann die CACC zuverlässiger sein und hat das Potenzial, die Gleichmäßigkeit des Verkehrsflusses zu verbessern und Staus auf der Straße zu reduzieren.The CACC utilizes information from other vehicles that may be received via the network interface 1224 and/or the wireless antenna(s) 1226 from other vehicles over a wireless link or indirectly over a network connection (e.g., over the Internet). Direct links may be provided through a vehicle-to-vehicle (V2V) communication link, while indirect links may be provided through an infrastructure-to-vehicle (I2V) communication link. In general, the V2V communication concept provides information about immediately preceding vehicles (e.g., vehicles immediately ahead of and in the same lane as the vehicle 1200), while the I2V communication concept provides information about more distantly preceding traffic. CACC systems may include either or both of 12V and V2V information sources. Given the information about the vehicles ahead of vehicle 1200, CACC can be more reliable and has the potential to improve traffic flow uniformity and reduce congestion on the road.

FCW-Systeme sind so ausgestaltet, dass sie den Fahrer vor einer Gefahr warnen, sodass der Fahrer Korrekturmaßnahmen ergreifen kann. FCW-Systeme verwenden eine nach vorn gerichtete Kamera und/oder RADAR-Sensor(en) 1260, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, die elektrisch mit einer Rückmeldung des Fahrers gekoppelt sind, wie etwa einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente. FCW-Systeme können eine Warnung bereitstellen, z. B. in Form eines Tons, einer optischen Warnung, einer Vibration und/oder eines schnellen Bremsimpulses.FCW systems are designed to warn the driver of a hazard so that the driver can take corrective action. FCW systems use a forward-facing camera and/or RADAR sensor(s) 1260 coupled to a dedicated processor, DSP, FPGA and/or ASIC that is electrically coupled to driver feedback, such as a display, speaker and/or vibrating component. FCW systems may provide a warning, such as a sound, a visual warning, a vibration and/or a rapid 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 vorn gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1260 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. Wenn das AEB-System eine Gefahr erkannt, warnt es typischerweise zuerst den Fahrer, um eine korrigierende Handlung durchzuführen, um eine Kollision zu vermeiden, und, wenn der Fahrer keine korrigierende Handlung durchführt, kann das AEB-System automatisch die Bremsen in dem Bestreben betätigen, die Auswirkungen der vorhergesagten Kollision zu verhindern oder mindestens abzuschwächen. AEB-Systeme können Techniken, wie zum Beispiel dynamische Bremsunterstützung und/oder Bremsung aufgrund eines bevorstehenden Zusammenstoßes, beinhalten.AEB systems detect an impending collision with another vehicle or other object and may automatically apply the brakes if the driver does not take corrective action within a certain time or distance parameter. AEB systems may utilize forward-facing camera(s) and/or RADAR sensor(s) 1260 coupled to a dedicated processor, DSP, FPGA, and/or ASIC. When the AEB system detects a hazard, it typically first alerts the driver to take corrective action to avoid a collision, and, if the driver does not take corrective action, the AEB system may automatically apply the brakes in an effort to prevent or at least mitigate the effects of the predicted collision. AEB systems may include techniques such as dynamic brake assist and/or impending collision 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 ein absichtliches Verlassen der Fahrspur anzeigt, indem er den Blinker betätigt. LDW-Systeme können nach vorne gerichtete Kameras verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, die elektrisch mit einer Rückmeldung des Fahrers gekoppelt sind, wie etwa einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente.LDW systems provide visual, audible and/or tactile warnings, such as steering wheel or seat vibrations, to alert the driver when the vehicle 1200 crosses lane markings. An LDW system will not activate if the driver indicates an intentional lane departure by activating the turn signal. LDW systems may use forward-facing cameras coupled to a dedicated processor, DSP, FPGA and/or ASIC that are electrically coupled to driver feedback, such as a display, speaker and/or vibrating component.

LKA-Systeme sind eine Variante der LDW-Systeme. LKA-Systeme stellen eine Lenkeingabe oder eine Bremsung bereit, um das Fahrzeug 1200 zu korrigieren, wenn das Fahrzeug 1200 beginnt, die Fahrspur zu verlassen.LKA systems are a variation of LDW systems. LKA systems provide steering input or braking to correct the vehicle 1200 when the vehicle 1200 begins to depart from the lane.

BSW-Systeme detektieren und warnen einen Fahrer vor Fahrzeugen in einem toten Winkel eines Automobils. BSW-Systeme können einen optischen, akustischen und/oder taktilen Alarm bereitstellen, um anzugeben, dass Einfädeln in oder Wechseln der Fahrspuren unsicher ist. Das System kann eine zusätzliche Warnung bereitstellen, wenn der Fahrer einen Blinker setzt. BSW-Systeme können (eine) nach hinten und zur Seite gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1260 verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch an eine Rückführung des Fahrers gekoppelt, wie etwa eine Anzeige, einen Lautsprecher und/oder eine schwingende Komponente.BSW systems detect and warn a driver of vehicles in a blind spot of an automobile. BSW systems may provide a visual, audible, and/or tactile alarm to indicate that merging or changing lanes is unsafe. The system may provide an additional warning when the driver activates a turn signal. BSW systems may utilize rear and side facing camera(s) and/or RADAR sensor(s) 1260 coupled to a dedicated processor, DSP, FPGA, and/or ASIC, that is, electrically coupled to a driver feedback such as a display, speaker, and/or 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 beinhalten das AEB-System, um sicherzustellen, dass die Fahrzeugbremsen betätigt werden, um einen Zusammenstoß 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. einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente.RCTW systems may provide visual, audible and/or tactile notifications when an object is detected outside the range of the rear view camera when the vehicle 1200 is reversing. Some RCTW systems include the AEB system to ensure that the vehicle brakes are applied to avoid a collision. 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, such as a display, speaker and/or vibrating component.

Herkömmliche ADAS-Systeme können anfällig für falsch positive Ergebnisse sein, die für den Fahrer ärgerlich und ablenkend sein können, aber typischerweise nicht katastrophal sind, da die ADAS-Systeme einen Fahrer warnen und es diesem Fahrer ermöglichen, zu entscheiden, ob wirklich eine Sicherheitsbedingung vorliegt, und entsprechend zu handeln. In einem autonomen Fahrzeug 1200 muss das Fahrzeug 1200 jedoch bei widersprüchlichen Ergebnissen selbst entscheiden, ob es das Ergebnis eines primären Computers oder eines sekundären Computers (z. B. einer ersten Steuerung 1236 oder einer zweiten Steuerung 1236) beachtet. In einigen Ausführungsformen kann das ADAS-System 1238 beispielsweise ein Backup- und/oder sekundärer Computer sein, der Wahrnehmungsinformationen für ein Rationalitätsmodul eines Backup-Computers bereitstellt. Der Rationalitätsmonitor des Backup-Computers kann eine redundante, diverse Software auf Hardware-Komponenten ausführen, um Fehler in der Wahrnehmung und bei dynamischen Fahraufgaben zu erkennen. Ausgaben vom ADAS-System 1238 können einer Überwachungs-MCU bereitgestellt werden. Wenn die Ausgaben des primären und des sekundären Computers miteinander in Konflikt geraten, muss die Überwachungs-MCU bestimmen, wie der Konflikt beigelegt werden kann, um einen sicheren Betrieb zu gewährleisten.Conventional ADAS systems can be prone to false positives, which can be annoying and distracting to the driver, but are typically not catastrophic because the ADAS systems alert a driver and allow that driver to decide whether a safety condition really exists and act accordingly. However, in an autonomous vehicle 1200, when conflicting results occur, the vehicle 1200 must decide for itself whether to heed the result of a primary computer or a secondary computer (e.g., a first controller 1236 or a second controller 1236). For example, in some embodiments, the ADAS system 1238 may be a backup and/or secondary computer that provides perception information to a rationality module of a backup computer. The rationality monitor of the backup computer may execute redundant, diverse software on hardware components to detect errors in perception and dynamic driving tasks. Outputs from the ADAS system 1238 can be provided to a supervisory MCU. If the outputs of the primary and secondary computers conflict, the supervisory MCU must determine how to resolve the conflict to ensure safe operation.

In einigen Beispielen kann der primäre Computer so konfiguriert sein, dass er der Überwachungs-MCU eine Konfidenzbewertung bereitstellt, die eine Konfidenz des primären Computers für das gewählte Ergebnis angibt. Falls die Konfidenzbewertung einen Schwellenwert überschreitet, kann diese Überwachungs-MCU der Führung des primären Computers folgen, unabhängig davon, ob dieser sekundäre Computer ein widersprüchliches oder inkonsistentes Ergebnis bereitstellt. Wenn die Konfidenzbewertung den Schwellenwert nicht erreicht und der primäre und der sekundäre Computer unterschiedliche Ergebnisse angeben (z. B. den Widerspruch), kann die Überwachungs-MCU zwischen den Computern vermitteln, um das zweckmäßige Resultat zu bestimmen.In some examples, the primary computer may be configured to provide the monitoring MCU with a confidence score indicating a confidence of the primary computer for the chosen outcome. If the confidence score exceeds a threshold, that monitoring MCU may follow the lead of the primary computer regardless of whether that secondary computer provides a conflicting or inconsistent result. If the confidence score does not meet the threshold and the primary and secondary computers indicate different results (e.g., the contradiction), the monitoring MCU may arbitrate between the computers to determine the appropriate outcome.

Die Kontroll-MCU kann so konfiguriert sein, dass sie ein neuronales Netz/neuronale Netze ausführt, das/die so trainiert und konfiguriert ist/sind, dass es/sie basierend auf den Ausgaben des primären Computers und des sekundären Computers die Bedingungen bestimmt/bestimmen, unter denen der sekundäre Computer Fehlalarme bereitstellt. Folglich kann/können das neuronale Netz/die neuronalen Netze in der Kotroll-MCU lernen, wann der Ausgabe des sekundären Computers vertraut werden kann und wann nicht. Zum Beispiel können, wenn der sekundäre Computer ein RADAR-basiertes FCW-System ist, neuronale Netz(e) in der Kontroll-MCU lernen, wann das FCW-System metallische Objekte identifiziert, die tatsächlich keine Gefahren sind, wie etwa ein Abflussgitter oder ein Gullydeckel, das/der einen Alarm auslöst. Wenn der sekundäre Computer ein kamerabasiertes LDW-System ist, kann ein neuronales Netz in der Überwachungs-MCU ähnlich lernen, die LDW zu überschreiben, wenn Fahrradfahrer oder Fußgänger vorhanden sind und ein Verlassen der Fahrspur tatsächlich die sicherste Manöver ist. In Ausführungsformen, die ein oder mehrere neuronale Netze beinhalten, die auf der Kontroll-MCU laufen, kann die Kontroll-MCU mindestens eine DLA oder GPU beinhalten, die für die Ausführung des oder der neuronalen Netze mit zugeordnetem Speicher geeignet ist. In bevorzugten Ausführungsformen kann die Überwachungs-MCU als Bestandteil des/der SoC(s) 1204 enthalten und/oder einbezogen werden.The control MCU may be configured to execute neural network(s) that are trained and configured to determine, based on the outputs of the primary computer and the secondary computer, the conditions under which the secondary computer provides false alarms. Consequently, the neural network(s) in the control MCU may learn when the output of the secondary computer can be trusted and when it cannot. For example, if the secondary computer is a RADAR-based FCW system, neural network(s) in the control MCU may learn when the FCW system identifies metallic objects that are not actually hazards, such as a drain grate or manhole cover, which triggers an alarm. If the secondary computer is a camera-based LDW system, a neural network in the monitoring MCU can similarly learn to override the LDW when cyclists or pedestrians are present and lane departure is indeed the safest maneuver. In embodiments that include one or more neural networks running on the control MCU, the control MCU can include at least one DLA or GPU suitable for executing the neural network(s) with associated memory. In preferred embodiments, the monitoring MCU can be included and/or incorporated as part of the SoC(s) 1204.

In anderen Beispielen kann das ADAS-System 1238 einen sekundären Computer beinhalten, der die ADAS-Funktionalität unter Verwendung der herkömmlichen Regeln des maschinellen Sehens durchführt. Somit kann der sekundäre Computer klassische Regeln des maschinellen Sehens (wenn-dann) verwenden und kann das Vorhandensein eines neuronalen Netzes/von neuronalen Netzen in der Überwachungs-MCU die Zuverlässigkeit, Sicherheit und Leistung verbessern. Zum Beispiel machen die diverse Implementation und absichtliche Nicht-Identität ein Gesamtsystem fehlertoleranter, insbesondere gegenüber Fehlern, die durch die Funktionalität von Software (oder Software-Hardware-Schnittstellen) verursacht werden. Wenn zum Beispiel ein Software-Bug oder -Fehler in der auf dem primären Computer laufenden Software vorliegt und ein nicht identischer Software-Code, der auf dem sekundären Computer läuft, dasselbe Gesamtergebnis bereitstellt, dann kann die Kontroll-MCU eine größere Konfidenz darin haben, dass das Gesamtergebnis korrekt ist und der Bug in der Software oder Hardware auf dem primären Computer keinen wesentlichen Fehler verursacht.In other examples, the ADAS system 1238 may include a secondary computer that performs the ADAS functionality using traditional machine vision rules. Thus, the secondary computer may use classic machine vision rules (if-then), and the presence of neural network(s) in the monitoring MCU may improve reliability, safety, and performance. For example, implementation diversity and intentional non-identity make an overall system more fault-tolerant, particularly to errors caused by the functionality of software (or software-hardware interfaces). For example, if there is a software bug or error in the software running on the primary computer, and non-identical software code running on the secondary computer provides the same overall result, then the control MCU may have greater confidence that the overall result is correct and the bug in the software or hardware on the primary computer does not cause a significant error.

In einigen Beispielen kann die Ausgabe des ADAS-Systems 1238 in einen Wahrnehmungsblock des primären Computers und/oder in einen Block für dynamische Fahraufgaben des primären Computers eingespeist werden. Wenn das ADAS-System 1238 z. B. eine Vorwärtszusammenstoßwarnung aufgrund eines unmittelbar vorausliegenden Objekts angibt, kann der Wahrnehmungsblock diese Information bei der Identifizierung von Objekten verwenden. In anderen Beispielen kann der sekundäre Computer ein eigenes neuronales Netz aufweisen, das trainiert wird und somit das Risiko von falsch positiven Ergebnissen reduziert, wie hierin beschrieben.In some examples, the output of the ADAS system 1238 may be fed into a perception block of the primary computer and/or a dynamic driving task block of the primary computer. For example, if the ADAS system 1238 indicates a forward 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 neural network that is trained, thus reducing the risk of false positives, as described herein.

Das Fahrzeug 1200 kann ferner das Infotainment-SoC 1230 (z. B. ein fahrzeuginternes Infotainment-System (in-vehicle infotainment system - IVI-System)) beinhalten. Obwohl als ein SoC veranschaulicht und beschrieben, kann das Infotainment-System möglicherweise kein SoC sein und kann zwei oder mehr diskrete Komponenten beinhalten. Das Infotainment-SoC 1230 kann eine Kombination aus Hardware und Software beinhalten, 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. Freisprechen), Netzverbindungsfähigkeit (z. B. LTE, Wi-Fi usw.) und/oder Informationsdienste (z. B. Navigationssysteme, Rückwärtseinparkhilfe, ein Radiodatensystem, fahrzeugbezogene Informationen wie etwa Kraftstofffüllstand, insgesamt zurückgelegte Strecke, Bremskraftstofffüllstand, Ölfüllstand, Tür öffnen/schließen, Luftfilterinformationen usw.) bereitzustellen. Das Infotainment-SoC 1230 kann zum Beispiel Radios, Plattenspieler, Navigationssysteme, Videowiedergabevorrichtungen, USB- und Bluetooth-Verbindungsfähigkeit, Carputer, In-Car-Entertainment, WiFi, Audiosteuerelemente am Lenkrad, ein Freisprech-Sprachsteuerelement, eine Heads-up-Anzeige (heads-up display - HUD), eine HMI-Anzeige 1234, eine Telematikvorrichtung, ein Steuerfeld (z. B. zum Steuern von und/oder Interagieren mit verschiedenen Komponenten, Merkmalen und/oder Systemen) und/oder andere Komponenten beinhalten. Das Infotainment-SoC 1230 kann ferner dazu verwendet werden, um einem Benutzer(n) des Fahrzeugs Informationen (z. B. optisch und/oder akustisch) bereitzustellen, wie z. B. Informationen vom ADAS-System 1238, Informationen zum autonomen Fahren, wie z. B. geplante Fahrzeugmanöver, Trajektorien, Umgebungsinformationen (z. B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen usw.) und/oder andere Informationen.The vehicle 1200 may further include the infotainment SoC 1230 (e.g., an in-vehicle infotainment system (IVI system)). Although illustrated and described as a SoC, the infotainment system may not be a SoC and may include two or more discrete 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.), phone (e.g., hands-free calling), network connectivity (e.g., LTE, Wi-Fi, etc.), and/or information services (e.g., navigation systems, reverse parking assistance, a radio data system, vehicle-related information such as fuel level, total distance traveled, brake fuel level, oil level, door open/close, air filter information, etc.). The infotainment SoC 1230 may include, for example, radios, record players, navigation systems, video playback devices, USB and Bluetooth connectivity, carputers, in-car entertainment, WiFi, steering wheel audio controls, a hands-free voice control, a heads-up display (HUD), an HMI display 1234, a telematics device, a control panel (e.g., for controlling and/or interacting with various components, features, and/or systems), and/or other components. The infotainment SoC 1230 may further be used to provide information (e.g., visually and/or audibly) to a user(s) of the vehicle, such as information from the ADAS system 1238, autonomous driving information such as planned vehicle maneuvers, trajectories, environmental information (e.g., intersection information, vehicle information, road information, etc.), and/or other information.

Das Infotainment-SoC 1230 kann GPU-Funktionalität beinhalten. Der Infotainment-SoC 1230 kann über den Bus 1202 (z. B. CAN-Bus, Ethernet usw.) mit anderen Vorrichtungen, Systemen und/oder Komponenten des Fahrzeugs 1200 kommunizieren. In einigen Beispielen kann das Infotainment-SoC 1230 an eine Überwachungs-MCU gekoppelt sein, sodass die GPU des Infotainment-Systems einige Selbstfahrfunktionen ausführen kann, falls die primäre(n) Steuerung(en) 1236 (z. B. primäre und/oder Reserve-Computer des Fahrzeugs 1200) ausfallen. In einem solchen Beispiel kann das Infotainment-SoC 1230 das Fahrzeug 1200 in den sicheren Stopp-Modus versetzen, wie hierin beschrieben.The infotainment SoC 1230 may include GPU functionality. The infotainment SoC 1230 may communicate with other devices, systems, and/or components of the vehicle 1200 via the bus 1202 (e.g., CAN bus, Ethernet, etc.). In some examples, the infotainment SoC 1230 may be coupled to a supervisory MCU so that the GPU of the infotainment system may perform some self-driving functions in the event that the primary controller(s) 1236 (e.g., primary and/or backup computers of the vehicle 1200) fail. In such an example, the infotainment SoC 1230 may place the vehicle 1200 into safe stop mode, as described herein.

Das Fahrzeug 1200 kann ferner ein Kombiinstrument 1232 (z. B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.) beinhalten. Das Kombiinstrument 1232 kann einen Controller und/oder Supercomputer (z. B. einen diskreten Controller oder Supercomputer) beinhalten. Das Kombiinstrument 1232 kann einen Satz von Instrumenten wie etwa einen Geschwindigkeitsmesser, Kraftstofffüllstand, Öldruck, Tachometer, Wegstreckenzähler, Blinker, Schaltpositionsanzeige, Sicherheitsgurtwarnleuchte(n), Parkbremswarnleuchte(n), Motorfehlfunktionsleuchte(n), Airbag- (SRS-) Systeminformationen, Beleuchtungssteuerelemente, Sicherheitssystemsteuerelemente, Navigationsinformationen usw. beinhalten. In einigen Beispielen können Informationen angezeigt und/oder zwischen dem Infotainment-SoC 1230 und dem Kombiinstrument 1232 geteilt werden. In anderen Worten kann das Kombiinstrument 1232 als Teil des Infotainment-SoC 1230 beinhaltet sein oder umgekehrt.The vehicle 1200 may further 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 supercomputer (e.g., a discrete controller or supercomputer) The instrument cluster 1232 may include a set of instruments such as a speedometer, fuel level, oil pressure, tachometer, odometer, turn signals, shift position indicator, seat belt warning light(s), parking brake warning light(s), engine malfunction light(s), airbag (SRS) system information, lighting controls, safety system controls, 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 may be included as part of the infotainment SoC 1230 or vice versa.

Wie vorstehend erwähnt, kann in mindestens einigen Ausführungsformen die Kraftfahrzeugplattform 100 (siehe 1) eine Komponente des autonomen Fahrzeugs 1200 sein. In derartigen Ausführungsformen beinhalten die Steuerung(en) 1236 das Kraftfahrzeug-SoC 104. Beispielsweise kann das Kraftfahrzeug-SoC 104 als eines der SoC 1204 implementiert sein.As mentioned above, in at least some embodiments, the motor vehicle platform 100 (see 1 ) may be a component of the autonomous vehicle 1200. In such embodiments, the controller(s) 1236 include the automotive SoC 104. For example, the automotive SoC 104 may be implemented as one of the SoC 1204.

15 ist ein Systemdiagramm für die Kommunikation zwischen dem/den Cloudbasierten Server(n) und dem beispielhaften autonomen Fahrzeug 1200 aus 12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Das System 1276 kann (einen) Server 1278, Netz(e) 1290 und Fahrzeuge, einschließlich des Fahrzeugs 1200, beinhalten. Der/die Server 1278 können eine Vielzahl von GPUs 1284(A)-1284(H) (hierin zusammen als GPUs 1284 bezeichnet), PCle-Switches 1282(A)-1282(H) (hierin zusammen als PCIe-Switches 1282 bezeichnet) und/oder CPUs 1280(A)-1280(B) (hierin zusammen als CPUs 1280 bezeichnet) beinhalten. Die GPUs 1284, CPUs 1280 und PCIe-Switches können mit Hochgeschwindigkeitszusammenschaltungen miteinander verbunden sein, wie etwa und ohne Einschränkung den von NVIDIA entwickelten NVLink-Schnittstellen 1288 und/oder PCle-Verbindungen 1286. In einigen Beispielen sind die GPUs 1284 über ein NVLink- und/oder NVSwitch-SoC verbunden und die GPUs 1284 und die PCle-Switches 1282 über PCIe-Zusammenschaltungen verbunden. Obwohl acht GPUs 1284, zwei CPUs 1280 und zwei PCIe-Switches veranschaulicht sind, soll dies nicht einschränkend sein. Je nach Ausführungsform kann jeder der Server 1278 eine beliebige Anzahl von GPUs 1284, CPUs 1280 und/oder PCIe-Switches beinhalten. Zum Beispiel können der/die Server 1278 jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1284 beinhalten. 15 is a system diagram for communication between the cloud-based server(s) and the example autonomous vehicle 1200 of 12 according to some embodiments of the present disclosure. The system 1276 may include server(s) 1278, network(s) 1290, and vehicles, including the vehicle 1200. The server(s) 1278 may include a plurality of GPUs 1284(A)-1284(H) (collectively referred to herein as GPUs 1284), PCIe switches 1282(A)-1282(H) (collectively referred to herein as PCIe switches 1282), and/or CPUs 1280(A)-1280(B) (collectively referred to herein as CPUs 1280). The GPUs 1284, CPUs 1280, and PCIe switches may be interconnected with high-speed interconnects, such as, without limitation, NVLink interfaces 1288 and/or PCIe interconnects 1286 developed by NVIDIA. In some examples, the GPUs 1284 are interconnected via an NVLink and/or NVSwitch SoC, and the GPUs 1284 and the PCIe switches 1282 are interconnected via PCIe interconnects. Although eight GPUs 1284, two CPUs 1280, and two PCIe switches are illustrated, this is not intended to be limiting. Depending on the embodiment, each of the servers 1278 may include any number of GPUs 1284, CPUs 1280, and/or PCIe switches. For example, the server(s) 1278 may include eight, sixteen, thirty-two, and/or more GPUs 1284, respectively.

Der/die Server 1278 können über die Netz(e) 1290 und von Fahrzeugen Bilddaten empfangen, die für Bilder repräsentativ sind, die unerwartete oder veränderte Straßenbedingungen zeigen, wie etwa kürzlich begonnene Straßenarbeiten. Der/die Server 1278 können über die Netz(e) 1290 und an die Fahrzeuge neuronale Netze 1292, aktualisierte neuronale Netze 1292 und/oder Karteninformationen 1294 übertragen, einschließlich Informationen über Verkehrs- und Straßenbedingungen. Die Aktualisierungen der Karteninformationen 1294 können Aktualisierungen für die HD-Karte 1222 beinhalten, wie etwa Informationen bezüglich Baustellen, Schlaglöchern, Umleitungen, Überschwemmungen und/oder anderer Hindernisse. In einigen Beispielen können die neuronalen Netze 1292, aktualisierten neuronalen Netze 1292 und/oder Karteninformationen 1294 aus einem neuen Training und/oder Erfahrungen resultieren, das/die in Daten dargestellt wird/werden, die von einer beliebigen Anzahl von Fahrzeugen in der Umgebung empfangen wurden, und/oder basierend auf Training, das in einem Rechenzentrum (z. B. unter Verwendung von dem/den Server(n) 1278 und/oder anderen Servern) durchgeführt wurde.The server(s) 1278 may receive, over the network(s) 1290 and from vehicles, image data representative of images showing unexpected or changed road conditions, such as recently begun road construction. The server(s) 1278 may transmit, over the network(s) 1290 and to the vehicles, neural networks 1292, updated neural networks 1292, and/or map information 1294, including information about traffic and road conditions. Updates to the map information 1294 may include updates to the HD map 1222, such as information regarding construction, potholes, detours, flooding, and/or other obstructions. In some examples, the neural networks 1292, updated neural networks 1292, and/or map information 1294 may result from new training and/or experience represented in data received from any number of vehicles in the area and/or based on training performed in a data center (e.g., using the server(s) 1278 and/or other servers).

Der/die Server 1278 können verwendet werden, um Modelle des maschinellen Lernens (z. B. neuronale Netze) basierend auf Trainingsdaten zu trainieren. Die Trainingsdaten können durch die Fahrzeuge generiert werden und/oder können in einer Simulation (z. B. unter Verwendung einer Spiele-Engine) generiert werden. In einigen Beispielen werden die Trainingsdaten mit Tags versehen (z. B. wenn das neuronale Netz von überwachtem Lernen profitiert) und/oder einer anderen Vorverarbeitung unterzogen, während in anderen Beispielen die Trainingsdaten nicht mit Tags versehen und/oder vorverarbeitet werden (z. B. wenn das neuronale Netz kein überwachtes Lernen benötigt). Das Training kann nach einer oder mehreren Klassen von maschinellen Lerntechniken erfolgen, einschließlich, aber nicht beschränkt auf Klassen wie: überwachtes Training, halbüberwachtes Training, unüberwachtes Training, Selbstlernen, Verstärkungslernen, föderiertes Lernen, Transferlernen, Merkmalslernen (einschließlich Hauptkomponenten- und Clusteranalysen), multilineares Unterraumlernen, vielfältiges Lernen, Repräsentationslernen (einschließlich Ersatzwörterbuchlernen), regelbasiertes maschinelles Lernen, Anomalieerkennung und alle Varianten oder Kombinationen davon. Nach dem Trainieren der Maschinenlernmodelle können die Maschinenlernmodelle durch die Fahrzeuge verwendet werden (z. B. über das/die Netz(e) 1290 an die Fahrzeuge übertragen) und/oder können die Maschinenlernmodelle durch den/die Server 1278 zur Fernüberwachung der Fahrzeuge verwendet werden.The server(s) 1278 may be used to train machine learning models (e.g., neural networks) based on training data. The training data may be generated by the vehicles and/or may be generated in a simulation (e.g., using a game engine). In some examples, the training data is tagged (e.g., if the neural network benefits from supervised learning) and/or undergoes other preprocessing, while in other examples, the training data is not tagged and/or preprocessed (e.g., if the neural network does not require supervised learning). The training may be performed using one or more classes of machine learning techniques, including but not limited to classes such as: supervised training, semi-supervised training, unsupervised training, self-learning, reinforcement learning, federated learning, transfer learning, feature learning (including principal component and cluster analysis), multilinear subspace learning, manifold learning, representation learning (including replacement dictionary learning), rule-based machine learning, anomaly detection, and any variations 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(s) 1290) and/or the machine learning models may be used by the server(s) 1278 to remotely monitor the vehicles.

In einigen Beispielen können der/die Server 1278 Daten von den Fahrzeugen empfangen und die Daten auf aktuelle neuronale Echtzeit-Netze zum intelligenten Echtzeit-Inferenzieren anwenden. Der/die Server 1278 können Deep-Learning-Supercomputer und/oder dedizierte Kl-Computer beinhalten, die durch die GPU(s) 1284 angetrieben werden, wie etwa die von NVIDIA entwickelten DGX- und DGX-Station-Maschinen. In einigen Beispielen können der/die Server 1278 jedoch eine Deep-Learning-Infrastruktur beinhalten, die nur CPU-angetriebene Rechenzentren verwendet.In some examples, the server(s) 1278 may receive data from the vehicles and apply the data to current real-time neural networks for intelligent real-time inference. The server(s) Server(s) 1278 may include deep learning supercomputers and/or dedicated AI computers powered by GPU(s) 1284, such as the DGX and DGX Station machines developed by NVIDIA. However, in some examples, server(s) 1278 may include a deep learning infrastructure that uses only CPU-powered data centers.

Die Deep-Learning-Infrastruktur des/der Server(s) 1278 kann zum schnellen Echtzeit-Inferenzieren in der Lage sein und diese Fähigkeit verwenden, um den Zustand von Prozessoren, Software und/oder assoziierter Hardware in dem Fahrzeug 1200 zu bewerten und zu verifizieren. Zum Beispiel kann die Deep-Learning-Infrastruktur periodische Aktualisierungen von dem Fahrzeug 1200 empfangen, wie etwa eine Sequenz von Bildern und/oder Objekten, die das Fahrzeug 1200 in dieser Sequenz von Bildern lokalisiert hat (z. B. über maschinelles Sehen und/oder andere Techniken des maschinellen Lernens zur Objektklassifizierung). Die Deep-Learning-Infrastruktur kann ihr eigenes neuronales Netz ausführen, um Objekte zu identifizieren und sie mit Objekten zu vergleichen, die durch das Fahrzeug 1200 identifiziert wurden, und falls die Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die Kl in dem Fahrzeug 1200 eine Fehlfunktion aufweist, dann kann der/können die Server 1278 ein Signal an das Fahrzeug 1200 übertragen, das einen ausfallsicheren Computer des Fahrzeugs 1200 anweist, die Steuerung zu übernehmen, die Fahrgäste zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.The deep learning infrastructure of the server(s) 1278 may be capable of rapid real-time inference and use this capability to evaluate and verify the state of processors, software, and/or associated hardware in the vehicle 1200. For example, the deep learning infrastructure may receive periodic updates from the vehicle 1200, such as a sequence of images and/or objects that the vehicle 1200 has located in that sequence of images (e.g., via machine vision and/or other machine learning techniques for object classification). The deep learning infrastructure may execute its own neural network to identify objects and compare them to objects identified by the vehicle 1200, and if the results do not match and the deep learning infrastructure concludes that the AI in the vehicle 1200 is malfunctioning, then the server(s) 1278 may transmit a signal to the vehicle 1200 instructing a fail-safe computer of the vehicle 1200 to take control, notify the passengers, and perform a safe parking maneuver.

Der/die Server 1278 können die GPU(s) 1284 und einen oder mehrere programmierbare Inferenzbeschleuniger (z. B. TensorRT von NVIDIA) beinhalten. Die Kombination von GPU-angetriebenen Servern und Inferenzbeschleunigung kann eine Reaktionsfähigkeit in Echtzeit ermöglichen. In anderen Beispielen, wie etwa wenn die Leistungsfähigkeit weniger kritisch ist, können von CPUs, FPGAs und anderen Prozessoren angetriebene Server für die Ableitung verwendet werden.The server(s) 1278 may include the GPU(s) 1284 and one or more programmable inference accelerators (e.g., TensorRT from NVIDIA). The combination of GPU-powered servers and inference acceleration may enable real-time responsiveness. In other examples, such as when performance is less critical, servers powered by CPUs, FPGAs, and other processors may be used for inference.

BEISPIELHAFTE RECHENVORRICHTUNGEXAMPLE CALCULATION DEVICE

16 ist ein Blockdiagramm einer beispielhaften Rechenvorrichtung(en) 1600, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet sind. Die Rechenvorrichtung 1600 kann ein Verschaltungssystem 1602 beinhalten, das die folgenden Vorrichtungen direkt oder indirekt koppelt: Speicher 1604, eine oder mehrere Zentraleinheiten (CPUs) 1606, eine oder mehrere Grafikverarbeitungseinheiten (GPUs) 1608, eine Kommunikationsschnittstelle 1610, E/A-Ports 1612, Eingabe-/Ausgabekomponenten 1614, eine Stromversorgung 1616, eine oder mehrere Präsentationskomponenten 1618 (z. B. Anzeige(n)) und eine oder mehrere Logikeinheiten 1620. 16 is a block diagram of an example computing device(s) 1600 suitable for use in implementing some embodiments of the present disclosure. The computing device 1600 may include an interconnect system 1602 that directly or indirectly couples the following devices: memory 1604, one or more central processing units (CPUs) 1606, one or more graphics processing units (GPUs) 1608, a communications interface 1610, I/O ports 1612, input/output components 1614, a power supply 1616, one or more presentation components 1618 (e.g., display(s)), and one or more logic units 1620.

Auch wenn die verschiedenen Blöcke von 16 als über das Verschaltungssystem 1602 mit Leitungen verbunden gezeigt sind, soll dies nicht einschränkend sein und dient nur der Klarheit. Zum Beispiel kann in einigen Ausführungsformen eine Präsentationskomponente 1618, wie etwa eine Anzeigevorrichtung, als E/A-Komponente 1614 betrachtet werden (z. B. wenn die Anzeige ein Touchscreen ist). Als weiteres Beispiel können die CPUs 1606 und/oder GPUs 1608 Speicher beinhalten (z. B. kann der Speicher 1604 repräsentativ für eine Speichervorrichtung zusätzlich zum Speicher der GPUs 1608, der CPUs 1606 und/oder anderen Komponenten sein). Mit anderen Worten dient die Rechenvorrichtung aus 16 lediglich der Veranschaulichung. Es wird nicht zwischen Kategorien wie „Workstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Vorrichtung“, „mobile Vorrichtung“, „Handheld-Vorrichtung“, „Spielekonsole“, „elektronische Steuereinheit (electronic control unit - ECU),“ „Virtual-Reality-System“, „Augmented-Reality-System“ und/oder andere Vorrichtungs- oder Systemtypen unterschieden, da alle im Umfang der Rechenvorrichtung der 16 betrachtet werden.Even though the different blocks of 16 as being connected to wires via the interconnect system 1602, this is not intended to be limiting and is for clarity only. For example, in some embodiments, a presentation component 1618, such as a display device, may be considered an I/O component 1614 (e.g., if the display is a touchscreen). As another example, the 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 the GPUs 1608, the CPUs 1606, and/or other components). In other words, the computing device of 16 for illustrative purposes only. No distinction is made between categories such as “workstation”, “server”, “laptop”, “desktop”, “tablet”, “client device”, “mobile device”, “handheld device”, “game console”, “electronic control unit (ECU),” “virtual reality system”, “augmented reality system” and/or other device or system types, as all within the scope of the computing device of the 16 to be viewed as.

Das Zusammenschaltungssystem 1602 kann eine oder mehrere Verbindungen oder Busse darstellen, wie beispielsweise einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Das Zusammenschaltungssystem 1602 kann einen oder mehrere Bus- oder Verbindungstypen beinhalten, wie beispielsweise einen Bus mit Industriestandardarchitektur (industry standard architecture - ISA), einen Bus mit erweiterter Industriestandardarchitektur (extended industry standard architecture - EISA), einen Bus der Video Electronic Standards Association (VESA), einen Bus für Verschaltung einer Periphärkomponente (PCI), einen Bus für Expressverschaltung einer Periphärkomponente (PCIe) und/oder eine andere Art von Bus oder Verbindung. In einigen Ausführungsformen gibt es direkte Verbindungen zwischen Komponenten. Als ein Beispiel kann die CPU 1606 direkt mit dem Speicher 1604 verbunden sein. Ferner kann die CPU 1606 direkt mit der GPU 1608 verbunden sein. Wo eine direkte oder Punkt-zu-Punkt-Verbindung zwischen Komponenten besteht, kann das Verbindungssystem 1602 eine PCIe-Verbindung beinhalten, um die Verbindung auszuführen. In diesen Beispielen muss kein PCI-Bus in der Rechenvorrichtung 1600 beinhaltet sein.The interconnect system 1602 may represent one or more connections or buses, such as an address bus, a data bus, a control bus, or a combination thereof. The interconnect system 1602 may include one or more types of buses or connections, such as an industry standard architecture (ISA) bus, an extended industry standard architecture (EISA) bus, a Video Electronic Standards Association (VESA) bus, a peripheral interconnect (PCI) bus, a peripheral express interconnect (PCIe) bus, and/or another type of bus or connection. In some embodiments, there are direct connections between components. As an example, the CPU 1606 may be directly connected to the memory 1604. Further, the CPU 1606 may be directly connected to the GPU 1608. Where there is a direct or point-to-point connection between components, the interconnect system 1602 may include a PCIe connection to implement the connection. In these examples, a PCI bus may not be included in the computing device 1600.

Der Speicher 1604 kann eine beliebige Vielfalt computerlesbarer Medien beinhalten. Die computerlesbaren Medien können beliebige verfügbare Medien sein, auf welche die Rechenvorrichtung 1600 zugreifen kann. Die computerlesbaren Medien können sowohl flüchtige als auch nichtflüchtige Medien sowie entfernbare und nicht entfernbare Medien beinhalten. Beispielhaft und nicht einschränkend können die computerlesbaren Medien Computerspeichermedien und Kommunikationsmedien beinhalten.The storage 1604 may include any variety of computer-readable media. The computer-readable media may be any available media accessible to the computing device 1600. 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 communications media.

Die Computerspeichermedien können sowohl flüchtige als auch nichtflüchtige und/oder entfernbare und nicht entfernbare Medien beinhalten, die in jedem beliebigen Verfahren oder jeder beliebigen Technologie zum Speichern von Informationen wie etwa computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder anderen Daten implementiert sind. Zum Beispiel kann der Speicher 1604 computerlesbare Anweisungen speichern (die z. B. ein Programm oder Programme und/oder ein oder mehrere Programmelemente darstellen, wie etwa ein Betriebssystem). Die Speichermedien für Computer können 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 Speichervorrichtungen, oder jedes beliebige andere Medium, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das die Rechenvorrichtung 1600 zugreifen kann, beinhalten, sind darauf aber nicht beschränkt. Im hierin verwendeten Sinne beinhalten Computerspeichermedien keine Signale an sich.The computer storage media may include both volatile and non-volatile 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 data. For example, the memory 1604 may store computer readable instructions (e.g., representing a program or programs and/or one or more program elements, such as an operating system). The computer storage media may include, but is 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 that can be accessed by the computing device 1600. As used herein, computer storage media does not include signals per se.

Die Computerspeichermedien können computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen in einem modulierten Datensignal wie etwa einer Trägerwelle oder einem anderen Transportmechanismus verkörpern und beinhalten beliebige Informationsliefermedien. Der Begriff „moduliertes Datensignal“ kann ein Signal betreffen, das eine oder mehrere seiner Eigenschaften auf solch eine Weise verändert aufweist, dass Informationen in dem Signal kodiert werden. Zum Beispiel, und nicht als Einschränkung, können Computerspeichermedien verkabelte Medien beinhalten, wie beispielsweise ein verkabeltes Netz oder eine drahtgebundene Verbindung, und drahtlose Medien, wie beispielsweise akustische, RF, infrarote und andere drahtlose Medien. Kombinationen aller Vorstehenden sollen ebenfalls im Umfang computerlesbarer Medien eingeschlossen sein.The computer storage media may embody computer-readable instructions, data structures, program modules, and/or other types of data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term "modulated data signal" may refer to a signal that has one or more of its characteristics altered in such a way that information is encoded in the signal. For example, and not by way of limitation, computer storage media may include wired media, such as a wired network or wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media. Combinations of all of the foregoing are also intended to be included within the scope of computer-readable media.

Die CPU(s) 1606 können konfiguriert sein, um mindestens einige der computerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten der Rechenvorrichtung 1600 zu steuern, um eines/einen oder mehrere der Verfahren und/oder Prozesse, die hierin beschrieben sind, auszuführen. Die CPU(s) 1606 können jeweils einen oder mehrere Kerne (z. B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.) beinhalten, die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu handhaben. Die CPU(s) 1606 können eine beliebige Art von Prozessor beinhalten und können unterschiedliche Arten von Prozessoren beinhalten, abhängig von der Art der Rechenvorrichtung 1600 (z. B. Prozessoren mit weniger Kernen für mobile Vorrichtungen und Prozessoren mit mehr Kernen für Server). Zum Beispiel kann der Prozessor in Abhängigkeit von der Art der Rechenvorrichtung 1600 ein Advanced-RISC-Machines(ARM)-Prozessor sein, der unter Verwendung von Reduced Instruction Set Computing (RISC) implementiert ist, oder ein x86-Prozessor, der unter Verwendung von Complex Instruction Set Computing (CISC) implementiert ist. Die Rechenvorrichtung 1600 kann eine oder mehrere CPUs 1606 zusätzlich zu einem oder mehreren Mikroprozessoren oder zusätzlichen Coprozessoren, wie etwa mathematischen Coprozessoren, beinhalten.The CPU(s) 1606 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device 1600 to perform one or more of the methods and/or processes described herein. The CPU(s) 1606 may each include one or more cores (e.g., one, two, four, eight, twenty-eight, seventy-two, etc.) capable of handling a plurality of software threads simultaneously. The CPU(s) 1606 may include any type of processor and may include different types of processors depending on the type of computing device 1600 (e.g., processors with fewer cores for mobile devices and processors with more cores for servers). For example, depending on the type of computing device 1600, the processor may be an Advanced RISC Machines (ARM) processor implemented using Reduced Instruction Set Computing (RISC) or an x86 processor implemented using Complex Instruction Set Computing (CISC). Computing device 1600 may include one or more CPUs 1606 in addition to one or more microprocessors or additional coprocessors, such as math coprocessors.

Zusätzlich oder alternativ zu den CPU(s) 1606 können die GPU(s) 1608 dazu konfiguriert sein, mindestens einige der computerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten der Computervorrichtung 1600 zu steuern, um eines/einen oder mehrere der Verfahren und/oder Prozesse, die hierin beschrieben sind, auszuführen. Eine oder mehrere der GPU(s) 1608 können eine integrierte GPU sein (z. B. mit einer oder mehreren der CPU(s) 1606) und/oder eine oder mehrere der GPU(s) 1608 können eine diskrete GPU sein. In Ausführungsformen können eine oder mehrere der GPU(s) 1608 ein Coprozessor einer oder mehrerer der CPU(s) 1606 sein. Die GPU(s) 1608 können durch die Computervorrichtung 1600 verwendet werden, um Grafiken (z. B. 3D-Grafiken) zu rendern oder Universalberechnungen durchzuführen. Zum Beispiel können die GPU(s) 1608 für Universalberechnungen auf GPUs (GPGPU) verwendet werden. Die GPU(s) 1608 können Hunderte oder Tausende von Kernen beinhalten, die in der Lage sind, Hunderte oder Tausende von Softwarethreads gleichzeitig zu handhaben. Die GPU(s) 1608 können Pixeldaten für Ausgabebilder als Reaktion auf das Rendern von Befehlen generieren (z. B. Rendern von Befehlen aus der/den CPU(s) 1606, die über eine Host-Schnittstelle empfangen werden). Die GPU(s) 1608 können Grafikspeicher beinhalten, wie etwa Anzeigespeicher, um Pixeldaten oder andere geeignete Daten zu speichern, wie etwa GPGPU-Daten. Der Anzeigespeicher kann als Teil des Speichers 1604 beinhaltet sein. Der/die GPU(s) 1608 können zwei oder mehrere GPUs beinhalten, die parallel arbeiten (z. B. über einen Link). Die Verbindung kann die GPUs direkt verbinden (z. B. unter Verwendung von NVLINK) oder kann die GPUs über ein Switch verbinden (z. B. unter Verwendung von NVSwitch). Wenn sie miteinander kombiniert werden, kann jede GPU 1608 Pixeldaten oder GPGPU-Daten für verschiedene Abschnitte einer Ausgabe oder für verschiedene Ausgaben (z. B. eine erste GPU für ein erstes Bild und eine zweite GPU für ein zweites Bild) generieren. Jede GPU kann ihren eigenen Speicher beinhalten oder kann Speicher mit anderen GPUs gemeinsam nutzen.In addition or alternatively to the CPU(s) 1606, the GPU(s) 1608 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device 1600 to perform one or more of the methods and/or processes described herein. One or more of the GPU(s) 1608 may be an integrated GPU (e.g., with one or more of the CPU(s) 1606) and/or one or more of the GPU(s) 1608 may be a discrete GPU. In embodiments, one or more of the GPU(s) 1608 may be a coprocessor of one or more of the CPU(s) 1606. The GPU(s) 1608 may be used by the computing device 1600 to render graphics (e.g., 3D graphics) or perform general purpose computations. For example, the GPU(s) 1608 may be used for general purpose computations on GPUs (GPGPU). The GPU(s) 1608 may include hundreds or thousands of cores capable of handling hundreds or thousands of software threads simultaneously. The GPU(s) 1608 may generate pixel data for output images in response to rendering commands (e.g., rendering commands from the CPU(s) 1606 received via a host interface). The GPU(s) 1608 may include graphics memory, such as display memory, to store pixel data or other suitable data, such as GPGPU data. The display memory may be included as part of the memory 1604. The GPU(s) 1608 may include two or more GPUs operating in parallel (e.g., via a link). The connection may connect the GPUs directly (e.g., using NVLINK) or may connect the GPUs via a switch. (e.g. using NVSwitch). When combined together, each GPU 1608 can generate pixel data or GPGPU data for different sections 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 can share memory with other GPUs.

Zusätzlich oder alternativ zu den CPU(s) 1606 und/oder den GPU(s) 1608 kann/können die Logikeinheit(en) 1620 dazu konfiguriert sein, mindestens einige der computerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten der Rechenvorrichtung 1600 zu steuern, um eines/einen oder mehrere der Verfahren und/oder Prozesse, die hierin beschrieben sind, auszuführen. In Ausführungsformen können die CPU(s) 1606, die GPU(s) 1608 und/oder die Logikeinheit(en) 1620 einzeln oder gemeinsam eine beliebige Kombination der Verfahren, Prozesse und/oder Abschnitte davon ausführen. Eine oder mehrere der Logikeinheiten 1620 kann/können Teil von und/oder integriert in eine oder mehrere der CPU(s) 1606 und/oder der GPU(s) 1608 sein und/oder eine oder mehrere der Logikeinheiten 1620 kann/können diskrete Komponenten oder anderweitig extern zu der/den CPU(s) 1606 und/oder der/den GPU(s) 1608 sein. In Ausführungsformen können eine oder mehrere der logischen Einheiten 1620 ein Coprozessor einer oder mehrerer der CPU(s) 1606 und/oder einer oder mehrerer der GPU(s) 1608 sein.In addition or alternatively to the CPU(s) 1606 and/or the GPU(s) 1608, the logic unit(s) 1620 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device 1600 to perform one or more of the methods and/or processes described herein. In embodiments, the CPU(s) 1606, the GPU(s) 1608, and/or the logic unit(s) 1620 may individually 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 and/or integrated with one or more of the CPU(s) 1606 and/or the GPU(s) 1608, and/or one or more of the logic units 1620 may be discrete components or otherwise external to the CPU(s) 1606 and/or the GPU(s) 1608. In embodiments, one or more of the logic units 1620 may be a coprocessor of one or more of the CPU(s) 1606 and/or one or more of the GPU(s) 1608.

Beispiele der Logikeinheit(en) 1620 beinhalten einen oder mehrere Verarbeitungskerne und/oder Komponenten davon, wie etwa Tensorkerne (Tensor Cores - TC), Tensor-Verarbeitungseinheiten (Tensor Processing Unit - TPU), visuelle Pixelkerne (Pixel Visual Cores - PVC), Bildverarbeitungseinheiten (Vision Processing Unit - VPU), Grafikverarbeitungscluster (Graphics Processing Cluster - GPC), Texturverarbeitungscluster (Texture Processing Cluster - TPC), Streaming-Multiprozessoren (SM), Baumdurchquerungseinheiten (Tree Traversal Unit - TTU), Beschleuniger für künstliche Intelligenz (Artificial Intelligence Accelerator - AIA), Deep-Learning-Beschleuniger (Deep Learning Accelerator - DLA), arithmetische Logikeinheiten (ALU), anwendungsspezifische integrierte Schaltungen (ASIC), Gleitkommaeinheiten (Floating Point Unit - FPU), Eingabe/Ausgabe(E/A)-Elemente, Elemente für Verschaltung von Periphärkomponenten (PCI) oder Expressverschaltung von Periphärkomponenten (peripheral component interconnect express - PCIe) und/oder dergleichen.Examples of the logic unit(s) 1620 include one or more processing cores and/or components thereof, such as tensor cores (TC), tensor processing units (TPU), pixel visual cores (PVC), vision processing units (VPU), graphics processing clusters (GPC), texture processing clusters (TPC), streaming multiprocessors (SM), tree traversal units (TTU), artificial intelligence accelerator (AIA), deep learning accelerator (DLA), arithmetic logic units (ALU), application specific integrated circuits (ASIC), floating point units (FPU), input/output (I/O) elements, peripheral interconnect (PCI) elements, or express peripheral interconnect (EXI) elements. (peripheral component interconnect express - PCIe) and/or the like.

Die Kommunikationsschnittstelle 1610 kann einen oder mehrere Empfänger, Sender und/oder Transceiver beinhalten, die es der Rechenvorrichtung 1600 ermöglichen, mit anderen Rechenvorrichtungen über ein elektronisches Kommunikationsnetz, einschließlich drahtgebundener und/oder drahtloser Kommunikation, zu kommunizieren. Die Kommunikationsschnittstelle 1610 kann Komponenten und Funktionalität beinhalten, um eine Kommunikation über eine Anzahl unterschiedlicher Netze zu ermöglichen, wie etwa drahtlose Netze (z. B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), drahtgebundene Netze (z. B. Kommunikation über Ethernet oder InfiniBand), Weiterverkehrsnetze mit geringer Leistung (z. B. LoRaWAN, SigFox usw.) und/oder das Internet.The communication 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 communication network, including wired and/or wireless communication. The communication interface 1610 may include components and functionality to enable communication over a number of different networks, such as wireless networks (e.g., Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, etc.), wired networks (e.g., communications over Ethernet or InfiniBand), low-power wide area networks (e.g., LoRaWAN, SigFox, etc.), and/or the Internet.

Die E/A-Ports 1612 können die Rechenvorrichtung 1600 dazu befähigen, logisch an andere Vorrichtungen gekoppelt zu werden, einschließlich der E/A-Komponenten 1614, der Präsentationskomponente(n) 1618 und/oder anderer Komponenten, von denen einige in die Rechenvorrichtung 1600 eingebaut (z. B. darin integriert) sein können. Veranschaulichende E/A-Komponenten 1614 beinhalten ein Mikrofon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, einen Gamecontroller, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Vorrichtung usw. Die E/A-Komponenten 1614 können eine natürliche Benutzerschnittstelle (natural user interface - NUI) bereitstellen, die Luftgesten, Stimme oder andere physiologische Eingaben, die durch einen Benutzer generiert werden, verarbeitet. In einigen Fällen können Eingaben zur weiteren Verarbeitung an ein geeignetes Netzelement übertragen werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Stifterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als auch neben dem Bildschirm, Luftgesten, Kopf- und Augenverfolgung und Berührungserkennung (wie unten genauer beschrieben) implementieren, die einer Anzeige der Rechenvorrichtung 1600 zugeordnet sind. Die Rechenvorrichtung 1600 kann Tiefenkameras, wie etwa stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, Touchscreen-Technologie und Kombinationen davon, zur Gestendetektion und -erkennung beinhalten. Zusätzlich kann die Rechenvorrichtung 1600 Beschleunigungsmesser oder Gyroskope (z. B. als Teil einer Trägheitsmesseinheit (intertia measurement unit - IMU)) beinhalten, die eine Bewegungsdetektion ermöglichen. In einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope durch die Rechenvorrichtung 1600 verwendet werden, um immersive augmentierte Realität oder virtuelle Realität zu rendern.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 may be built into (e.g., integrated into) the computing device 1600. Illustrative I/O components 1614 include a microphone, a mouse, a keyboard, a joystick, a gamepad, a game controller, a satellite dish, a scanner, a printer, a wireless device, etc. The I/O components 1614 may provide a natural user interface (NUI) that processes air gestures, voice, or other physiological inputs generated by a user. In some cases, inputs may be transmitted to an appropriate network element for further processing. A NUI may implement any combination of speech recognition, pen recognition, facial recognition, biometric recognition, both on-screen and off-screen gesture recognition, air gestures, head and eye tracking, and touch detection (as described in more detail below) associated with a display of the computing device 1600. 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. Additionally, 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 may be used by the computing device 1600 to render immersive augmented reality or virtual reality.

Die Stromversorgung 1616 kann auch eine fest verdrahtete Stromversorgung, eine Batteriestromversorgung oder eine Kombination davon beinhalten. Die Stromversorgung 1616 kann der Rechenvorrichtung 1600 Strom bereitstellen, um den Komponenten der Rechenvorrichtung 1600 den Betrieb zu ermöglichen.The power supply 1616 may also 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 Präsentationskomponent(en) 1618 können eine Anzeige (z. B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, ein Heads-up-Display (HUD), andere Anzeigearten oder eine Kombination davon), Lautsprecher und/oder andere Präsentationskomponenten beinhalten. Die Präsentationskomponent(en) 1618 können Daten von anderen Komponenten (z. B. den GPU(s) 1608, den CPU(s) 1606 usw.) empfangen und die Daten ausgeben (z. B. als Bild, Video, Ton usw.).The presentation component(s) 1618 may include a display (e.g., a monitor, a touchscreen, a television screen, a heads-up display (HUD), other types of displays, or a combination thereof), speakers, and/or other presentation components. The presentation component(s) 1618 may receive data from other components (e.g., the GPU(s) 1608, the CPU(s) 1606, etc.) and output the data (e.g., as an image, video, audio, etc.).

Die Offenbarung kann im allgemeinen Kontext von Computercode- oder maschinenverwendbaren Anweisungen, einschließlich computerausführbarer Anweisungen wie Programmmodulen, die von einem Computer oder einem anderen Computer, wie einem Personal Data Assistent oder einer anderen Handheld-Vorrichtung, ausgeführt werden, beschrieben werden. Im Allgemeinen beziehen sich Programmmodule einschließlich Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw. auf Codes, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Die Offenbarung kann in einer Vielfalt von Systemkonfigurationen praktiziert werden, einschließlich Handheld-Vorrichtungen, Unterhaltungselektronik, Universalcomputern, spezielleren Rechenvorrichtungen usw. Die Offenbarung kann auch in verteilten Rechenumgebungen praktiziert 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, executed by a computer or another computer, such as a personal data assistant or other handheld device. In general, program modules, including routines, programs, objects, components, data structures, etc., refer to codes that perform specific tasks or implement specific abstract data types. The disclosure may be practiced in a variety of system configurations, including handheld devices, consumer electronics, general purpose computers, more specialized computing devices, etc. The disclosure may also be practiced in distributed computing environments in which tasks are performed by remote processing devices connected via a communications network.

Mindestens eine Ausführungsform der Offenbarung kann im Hinblick auf die folgenden Absätze beschrieben werden:

  • 1. System, umfassend: einen Speicher, der unter Beachtung einer ersten Risikoklassifizierungsstufe arbeitet; und eine Schaltungsanordnung, die unter Beachtung einer zweiten Risikoklassifizierungsstufe arbeitet, die eine höhere Risikoklassifizierung als die erste Risikoklassifizierungsstufe angibt, wobei die Schaltungsanordnung dazu dient, einen Fehlererkennungscode für Daten, die in eine erste Speicheradresse innerhalb des Speichers zu schreiben sind, zu bestimmen, eine zweite Speicheradresse innerhalb des Speichers zumindest teilweise basierend auf der ersten Speicheradresse zu bestimmen und zu veranlassen, dass die Daten in der ersten Speicheradresse gespeichert werden und der Fehlererkennungscode in der zweiten Speicheradresse gespeichert werden.
  • 2. System nach Absatz 1, wobei nach dem Speichern der Daten in der ersten Speicheradresse und dem Speichern der Fehlererkennungscode in der zweiten Speicheradresse: die Schaltungsanordnung dazu dient, die Daten aus der ersten Speicheradresse zu erlangen, den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen, einen Prüfcode basierend auf der ersten Speicheradresse und den aus der ersten Speicheradresse erlangten Daten zu generieren und eine Benachrichtigung zu generieren, wenn der Fehlererkennungscode angibt, dass die Daten mindestens einen Fehler enthalten.
  • 3. System nach Absatz 2, wobei der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten, wenn der Fehlererkennungscode nicht mit dem Prüfcode übereinstimmt.
  • 4. System nach Absatz 2 oder 3, wobei die Schaltungsanordnung dazu dient, während eines ersten Speicherzugriffs die Daten aus der ersten Speicheradresse zu erlangen und während eines zweiten Speicherzugriffs den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen.
  • 5. System nach einem der Absätze 2-4, ferner umfassend: eine erste Schnittstelle, über die die Daten aus der ersten Speicheradresse erlangt werden; und eine zweite Schnittstelle, über die der Fehlererkennungscode aus der zweiten Speicheradresse parallel zum Erlangen der Daten über die erste Schnittstelle erlangt wird, wobei sich die erste Schnittstelle von der zweiten Schnittstelle unterscheidet.
  • 6. System nach Absatz 4, wobei die Schaltungsanordnung eine Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff einführt.
  • 7. System nach einem der Absätze 1-6, wobei der Speicher einen ersten Teilbereich und einen zweiten Teilbereich umfasst, der erste Teilbereich die erste Speicheradresse umfasst, der zweite Teilbereich die zweite Speicheradresse umfasst, und die Schaltungsanordnung dazu dient, während einer Startprozedur einen neuen Fehlererkennungscode in jede Speicheradresse in dem zweiten Teilbereich zu schreiben.
  • 8. System nach einem der Absätze 1-7, wobei die Schaltungsanordnung dazu dient, den Fehlererkennungscode basierend auf der ersten Speicheradresse und den Daten zu bestimmen, bevor die Daten in eine erste Speicheradresse geschrieben werden.
  • 9. System nach einem der Absätze 1-8, wobei die Schaltungsanordnung einen ersten und einen zweiten Block umfasst, der erste Block dazu dient, eine Schreibanforderung, die die Daten und die erste Speicheradresse umfasst, an den zweiten Block zu übertragen, der zweite Block dazu dient, die Schreibanforderung zur empfangen, den Fehlererkennungscode zu bestimmen, die zweite Speicheradresse zu bestimmen und zu veranlassen, dass die Daten in der ersten Speicheradresse gespeichert werden und der Fehlererkennungscode in der zweiten Speicheradresse gespeichert wird.
  • 10. System nach Absatz 9, wobei der erste Block einen Schreibzeitgeber umfasst, der startet, wenn der erste Block die Schreibanforderung an den zweiten Block überträgt, und der erste Block dazu dient, einen Schreibfehler zu generieren, wenn der Schreibzeitgeber angibt, dass mehr als eine vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block eine Antwort von dem Speicher empfängt.
  • 11. System nach Absatz 9 oder 10, wobei, nachdem der erste Block die Schreibanforderung sendet: der erste Block dazu dient, eine Leseanforderung an den zweiten Block für die in der ersten Speicheradresse gespeicherten Daten zu senden, und der zweite Block dazu dient, die Leseanforderung zu empfangen, die Daten aus der ersten Speicheradresse zu erlangen, den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen und eine Benachrichtigung an den ersten Block zu übertragen, wenn der zweite Block bestimmt, dass der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten.
  • 12. System nach Absatz 11, wobei der erste Block einen Lesezeitgeber umfasst, der startet, wenn der erste Block die Leseanforderung sendet, und der erste Block dazu dient, einen Lesefehler zu generieren, wenn der Lesezeitgeber angibt, dass mehr als eine vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten empfängt.
  • 13. System nach einem der Absätze 1-12, wobei die Schaltungsanordnung dazu dient zu veranlassen, dass die Daten während eines ersten Speicherzugriffs in der ersten Speicheradresse gespeichert werden und dass der Fehlererkennungscode während eines zweiten Speicherzugriffs in der zweiten Speicheradresse gespeichert wird.
  • 14. System nach Absatz 13, wobei die Schaltungsanordnung eine erste Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff einführt.
  • 15. System nach einem der Absätze 1-14, das sich auf einem zusammenhängenden Stück aus Halbleitermaterial befindet.
  • 16. System nach Absatz 15, das einen Abschnitt eines Systems auf einem Chip („SoC“) implementiert, das einem Kraftfahrzeug entspricht.
  • 17. System nach einem der Absätze 1-16, wobei die erste und die zweite Risikoklassifizierungsstufe jeweils ein Automotive Safety Integrity Level („ASIL“) sind.
  • 18. System nach einem der Absätze 1-17, wobei der Fehlererkennungscode ein Prüfcode mit zyklischer Redundanz oder ein Fehlerkorrekturcode ist.
  • 19. System, umfassend: einen Speicher, der innerhalb einer ersten Risikoklassifizierungsstufe arbeitet, wobei der Speicher eine isolierte Speicherregion umfasst, umfassend eine erste Speicheradresse, die Daten speichert, und eine zweite Speicheradresse, die einen Fehlererkennungscode speichert; und eine Schaltungsanordnung, die innerhalb einer zweiten Risikoklassifizierungsstufe arbeitet, die eine höhere Risikostufe als die erste Risikoklassifizierungsstufe angibt, wobei die Schaltungsanordnung dazu dient, die Daten aus der ersten Speicheradresse zu erlangen, den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen und eine Benachrichtigung zu generieren, wenn der Fehlererkennungscode angibt, dass die Daten mindestens einen Fehler enthalten.
  • 20. System nach Absatz 19, wobei die Schaltungsanordnung dazu dient, einen Prüfcode basierend auf der ersten Speicheradresse und den aus der ersten Speicheradresse erlangten Daten zu generieren, wobei der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten, wenn der Fehlererkennungscode nicht mit dem Prüfcode übereinstimmt.
  • 21. System nach Absatz 19 oder 20, wobei die Schaltungsanordnung einen ersten und einen zweiten Block umfasst, wobei der erste Block dazu dient, eine Leseanforderung für die in der ersten Speicheradresse gespeicherten Daten an den zweiten Block zu senden, und der zweite Block dazu dient, die Leseanforderung zu empfangen, die Daten zu erlangen, den Fehlererkennungscode zu erlangen und die Benachrichtigung zu generieren, wenn der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten.
  • 22. System nach Absatz 21, wobei der erste Block einen Lesezeitgeber umfasst, der startet, wenn der erste Block die Leseanforderung sendet, und der erste Block dazu dient, einen Fehler zu generieren, wenn der Lesezeitgeber angibt, dass mehr als eine vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten empfängt.
  • 23. System nach Absatz 21 oder 22, wobei, bevor der erste Block die Leseanforderung sendet: der erste Block dazu dient, die Daten und die erste Speicheradresse an den zweiten Block zu übertragen, und der zweite Block dazu dient, den Fehlererkennungscode zu bestimmen, die zweite Speicheradresse zu bestimmen, zu veranlassen, dass die Daten in der ersten Speicheradresse gespeichert werden, und zu veranlassen, dass der Fehlererkennungscode in der zweiten Speicheradresse gespeichert wird.
  • 24. System nach Absatz 23, wobei der erste Block einen Schreibzeitgeber umfasst, der startet, wenn der erste Block die Daten und die erste Speicheradresse an den zweiten Block überträgt, und der erste Block dazu dient, einen Schreibfehler zu generieren, wenn der Schreibzeitgeber angibt, dass mehr als eine erste vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block eine Antwort von dem Speicher empfängt.
  • 25. System nach Absatz 24, wobei der erste Block einen Lesezeitgeber umfasst, der startet, wenn der erste Block die Leseanforderung sendet, und der erste Block dazu dient, einen Lesefehler zu generieren, wenn der Lesezeitgeber angibt, dass mehr als eine zweite vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten aus dem Speicher empfängt.
  • 26. System nach einem der Absätze 19-25, wobei die Schaltungsanordnung dazu dient, während eines ersten Speicherzugriffs die Daten aus der ersten Speicheradresse zu erlangen und während eines zweiten Speicherzugriffs den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen.
  • 27. System nach Absatz 26, wobei die Schaltungsanordnung eine Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff einführt.
  • 28. System nach einem der Absätze 19-27, wobei die Schaltungsanordnung den Fehlererkennungscode während einer Startprozedur in die zweite Speicheradresse geschrieben hat.
  • 29. System nach einem der Absätze 19-28, das sich auf einem zusammenhängenden Stück aus Halbleitermaterial befindet.
  • 30. System nach Absatz 29, das einen Abschnitt eines Systems auf einem Chip („SoC“) implementiert, das einem Kraftfahrzeug entspricht.
  • 31. System nach einem der Absätze 19-30, wobei die erste und die zweite Risikoklassifizierungsstufe jeweils ein Automotive Safety Integrity Level („ASIL“) ist.
  • 32. System nach einem der Absätze 19-31, wobei der Fehlererkennungscode ein Prüfcode mit zyklischer Redundanz oder ein Fehlerkorrekturcode ist.
  • 33. Verfahren, das durch eine Schaltungsanordnung durchgeführt wird, die auf einer ersten Risikoklassifizierungsstufe arbeitet, wobei das Verfahren Folgendes umfasst: Bestimmen eines Fehlererkennungscodes für Daten, die in eine erste Speicheradresse innerhalb eines Speichers zu schreiben sind, der auf einer zweiten Risikoklassifizierungsstufe arbeitet, die eine niedrigere Risikostufe als die erste Risikoklassifizierungsstufe angibt; Bestimmen einer zweiten Speicheradresse innerhalb des Speichers zumindest teilweise basierend auf der ersten Speicheradresse; und Veranlassen, dass die Daten in der ersten Speicheradresse gespeichert werden und der Fehlererkennungscode in der zweiten Speicheradresse gespeichert wird.
  • 34. Verfahren nach Absatz 33, ferner umfassend: Erlangen der Daten aus der ersten Speicheradresse, nachdem die Daten in der ersten Speicheradresse gespeichert wurden; Erlangen des Fehlererkennungscodes aus der zweiten Speicheradresse, nachdem der Fehlererkennungscode in der zweiten Speicheradresse gespeichert wurde; Generieren eines Prüfcodes basierend auf der ersten Speicheradresse und den aus der ersten Speicheradresse erlangten Daten; und Generieren einer Benachrichtigung, wenn der Prüfcode angibt, dass die Daten mindestens einen Fehler enthalten.
  • 35. Verfahren nach Absatz 34, wobei der Fehlererkennungscode basierend auf der ersten Speicheradresse und den Daten generiert wurde, bevor die Daten in der ersten Speicheradresse gespeichert wurden, und der Prüfcode angibt, dass die Daten den mindestens einen Fehler enthalten, wenn der Prüfcode nicht mit dem Fehlererkennungscode übereinstimmt.
  • 36. Verfahren nach einem der Absätze 33-35, wobei der Speicher einen ersten Teilbereich und einen zweiten Teilbereich umfasst, der erste Teilbereich die erste Speicheradresse umfasst, der zweite Teilbereich die zweite Speicheradresse umfasst, und das Verfahren ferner Folgendes umfasst: Schreiben eines neuen Fehlererkennungscodes in jede Speicheradresse in dem zweiten Teilbereich während einer Startprozedur.
  • 37. Verfahren, das durch eine Schaltungsanordnung durchgeführt wird, die auf einer ersten Risikoklassifizierungsstufe arbeitet, wobei das Verfahren Folgendes umfasst: Erlangen von Daten aus einer ersten Speicheradresse eines Speichers, der auf einer zweiten Risikoklassifizierungsstufe arbeitet, die eine niedrigere Risikostufe als die erste Risikoklassifizierungsstufe angibt; Bestimmen einer zweiten Speicheradresse innerhalb des Speichers zumindest teilweise basierend auf der ersten Speicheradresse; Erlangen eines Fehlererkennungscodes aus der zweiten Speicheradresse; und Generieren einer Benachrichtigung, wenn der Fehlererkennungscode angibt, dass die Daten mindestens einen Fehler enthalten.
  • 38. Verfahren nach Absatz 37, ferner umfassend: Generieren eines Prüfcodes basierend auf der ersten Speicheradresse und den aus der ersten Speicheradresse erlangten Daten; und Bestimmen, ob der Prüfcode mit dem Fehlererkennungscode übereinstimmt, wobei der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten, wenn der Fehlererkennungscode nicht mit dem Prüfcode übereinstimmt.
  • 39. Verfahren nach Absatz 37 oder 38, wobei die Schaltungsanordnung die Daten aus der ersten Speicheradresse während eines ersten Speicherzugriffs erlangt, die Schaltungsanordnung den Fehlererkennungscode aus der zweiten Speicheradresse während eines zweiten Speicherzugriffs erlangt, und das Verfahren ferner Folgendes umfasst: Einführen einer Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff.
  • 40. Verfahren nach einem der Absätze 37-39, wobei die Schaltungsanordnung einen ersten und einen zweiten Block umfasst und das Verfahren ferner Folgendes umfasst: Senden einer Leseanforderung durch den ersten Block an den zweiten Block für die in der ersten Speicheradresse gespeicherten Daten; und Empfangen der Leseanforderung durch den zweiten Block, wobei der zweite Block die Daten erlangt, den Fehlererkennungscode erlangt und die Benachrichtigung generiert, wenn der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten.
  • 41. Verfahren nach Absatz 40, wobei ein Lesezeitgeber startet, wenn der erste Block die Leseanforderung sendet, und das Verfahren ferner Folgendes umfasst: Generieren einen Lesefehlers durch den ersten Block, wenn der Lesezeitgeber angibt, dass mehr als eine vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten empfängt.
  • 42. Verfahren nach Absatz 40 oder 41, ferner umfassend: Übertragen einer Schreibanforderung durch den ersten Block an den zweiten Block, bevor der erste Block die Leseanforderung sendet, wobei die Schreibanforderung die Daten und die erste Speicheradresse umfasst; Bestimmen des Fehlererkennungscodes durch den zweiten Block, bevor der erste Block die Leseanforderung sendet; Bestimmen der zweiten Speicheradresse durch den zweiten Block, bevor der erste Block die Leseanforderung sendet; und Veranlassen durch den zweiten Block, dass die Daten in der ersten Speicheradresse gespeichert werden und der Fehlererkennungscode in dem zweiten Speicher gespeichert wird, bevor der erste Block die Leseanforderung sendet.
  • 43. Verfahren nach Absatz 42, wobei ein Schreibzeitgeber startet, wenn der erste Block die Schreibanforderung sendet, und das Verfahren ferner Folgendes umfasst: Generieren einen Schreibfehlers durch den ersten Block, wenn der Schreibzeitgeber angibt, dass mehr als eine erste vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block eine Antwort von dem Speicher empfängt.
  • 44. Verfahren nach Absatz 43, wobei ein Lesezeitgeber startet, wenn der erste Block die Leseanforderung sendet, und das Verfahren ferner Folgendes umfasst: Generieren einen Lesefehlers durch den ersten Block, wenn der Lesezeitgeber angibt, dass mehr als eine zweite vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten empfängt.
  • 45. Verfahren nach einem der Absätze 42-44, wobei der zweite Block veranlasst, dass die Daten während eines ersten Speicherzugriffs in der ersten Speicheradresse gespeichert werden, der zweite Block veranlasst, dass der Fehlererkennungscode während eines zweiten Speicherzugriffs in der zweiten Speicheradresse gespeichert wird, und das Verfahren ferner Folgendes umfasst: Einführen einer Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff.
  • 46. Verfahren nach einem der Absätze 37-45, ferner umfassend: Schreiben des Fehlererkennungscodes in die zweite Speicheradresse während einer Startprozedur.
  • 47. Verfahren nach einem der Absätze 37-46, wobei die erste und die zweite Risikoklassifizierungsstufe jeweils ein Automotive Safety Integrity Level („ASIL“) ist.
  • 48. Verfahren nach einem der Absätze 37-47, wobei der Fehlererkennungscode ein Prüfcode mit zyklischer Redundanz oder ein Fehlerkorrekturcode ist.
At least one embodiment of the disclosure may be described with respect to the following paragraphs:
  • 1. A system comprising: a memory operating in compliance with a first risk classification level; and circuitry operating in compliance with a second risk classification level indicating a higher risk classification than the first risk classification level, the circuitry to determine an error detection code for data to be written to a first memory address within the memory, determine a second memory address within the memory based at least in part on the first memory address, and cause the data to be stored in the first memory address and the error detection code to be stored in the second memory address.
  • 2. The system of paragraph 1, wherein after storing the data in the first memory address and storing the error detection code in the second memory address: the circuitry is to obtain the data from the first memory address, obtain the error detection code from the second memory address, generate a check code based on the first memory address and the data obtained from the first memory address, and generate a notification if the error detection code indicates that the data contains at least one error.
  • 3. A system according to paragraph 2, wherein the error detection code indicates that the data contains the at least one error if the error detection code does not match the check code.
  • 4. A system according to paragraph 2 or 3, wherein the circuit arrangement serves to obtain the data from the first memory address during a first memory access and to obtain the error detection code from the second memory address during a second memory access.
  • 5. The system of any of paragraphs 2-4, further comprising: a first interface through which the data is obtained from the first memory address; and a second interface through which the error detection code is obtained from the second memory address in parallel with obtaining the data through the first interface, wherein the first interface is different from the second interface.
  • 6. A system according to paragraph 4, wherein the circuit arrangement introduces a time delay between the first and the second memory access.
  • 7. The system of any of paragraphs 1-6, wherein the memory comprises a first sub-area and a second sub-area, the first sub-area comprises the first memory address, the second sub-area comprises the second memory address, and the circuitry is operable to write a new error detection code to each memory address in the second sub-area during a start-up procedure.
  • 8. The system of any of paragraphs 1-7, wherein the circuitry is to determine the error detection code based on the first memory address and the data before the data is written to a first memory address.
  • 9. The system of any of paragraphs 1-8, wherein the circuitry comprises a first and a second block, the first block is operable to transmit a write request comprising the data and the first memory address to the second block, the second block is operable to receive the write request, determine the error detection code, determine the second memory address, and cause the data to be stored in the first memory address and the error detection code to be stored in the second memory address.
  • 10. The system of paragraph 9, wherein the first block includes a write timer that starts when the first block transmits the write request to the second block, and the first block is operable to generate a write error when the write timer indicates that more than a predetermined amount of time has elapsed before the first block receives a response from the memory.
  • 11. The system of paragraph 9 or 10, wherein after the first block sends the write request: the first block is to send a read request to the second block for the data stored in the first memory address, and the second block is to receive the read request, obtain the data from the first memory address, obtain the error detection code from the second memory address, and transmit a notification to the first block when the second block determines that the error detection code indicates that the data contains the at least one error.
  • 12. The system of paragraph 11, wherein the first block includes a read timer that starts when the first block sends the read request, and the first block is operable to generate a read error when the read timer indicates that more than a predetermined amount of time has elapsed before the first block receives the data.
  • 13. The system of any of paragraphs 1-12, wherein the circuitry is operable to cause the data to be stored in the first memory address during a first memory access and the error detection code to be stored in the second memory address during a second memory access.
  • 14. The system of paragraph 13, wherein the circuitry introduces a first time delay between the first and second memory accesses.
  • 15. A system according to any one of paragraphs 1-14 located on a continuous piece of semiconductor material.
  • 16. A system as defined in paragraph 15 that implements a portion of a system on a chip (“SoC”) corresponding to a motor vehicle.
  • 17. A system according to any one of paragraphs 1-16, wherein the first and second risk classification levels are each an Automotive Safety Integrity Level (“ASIL”).
  • 18. A system according to any one of paragraphs 1-17, wherein the error detection code is a cyclic redundancy check code or an error correction code.
  • 19. A system comprising: a memory operating within a first risk classification level, the memory comprising an isolated memory region comprising a first memory address storing data and a second memory address storing an error detection code; and circuitry operating within a second risk classification level indicating a higher risk level than the first risk classification level, the circuitry operable to obtain the data from the first memory address, obtain the error detection code from the second memory address, and generate a notification when the error detection code indicates that the data contains at least one error.
  • 20. The system of paragraph 19, wherein the circuitry is to generate a check code based on the first memory address and the data obtained from the first memory address, the error detection code indicating that the data contains the at least one error if the error detection code does not match the check code.
  • 21. The system of paragraph 19 or 20, wherein the circuitry comprises first and second blocks, the first block operable to send a read request for the data stored in the first memory address to the second block, and the second block operable to receive the read request, obtain the data, obtain the error detection code, and generate the notification when the error detection code indicates that the data contains the at least one error.
  • 22. The system of paragraph 21, wherein the first block includes a read timer that starts when the first block sends the read request, and the first block is operable to generate an error if the read timer indicates that more than a predetermined amount of time has elapsed before the first block receives the data.
  • 23. The system of paragraph 21 or 22, wherein, before the first block sends the read request: the first block is to transfer the data and the first memory address to the second block, and the second block is to determine the error detection code, determine the second memory address, cause the data to be stored in the first memory address, and cause the error detection code to be stored in the second memory address.
  • 24. The system of paragraph 23, wherein the first block includes a write timer that starts when the first block transfers the data and the first memory address to the second block, and the first block is operable to generate a write error when the write timer indicates that more than a first predetermined period of time has elapsed before the first block receives a response from the memory.
  • 25. The system of paragraph 24, wherein the first block includes a read timer that starts when the first block sends the read request, and the first block is operable to generate a read error when the read timer indicates that more than a second predetermined period of time has elapsed before the first block receives the data from the memory.
  • 26. The system of any of paragraphs 19-25, wherein the circuitry is operable to obtain the data from the first memory address during a first memory access and to obtain the error detection code from the second memory address during a second memory access.
  • 27. The system of paragraph 26, wherein the circuitry introduces a time delay between the first and second memory accesses.
  • 28. The system of any of paragraphs 19-27, wherein the circuitry has written the error detection code to the second memory address during a start-up procedure.
  • 29. A system according to any one of paragraphs 19 to 28 located on a continuous piece of semiconductor material.
  • 30. A system as defined in paragraph 29 that implements a portion of a system on a chip (‘SoC’) corresponding to a motor vehicle.
  • 31. A system according to any of paragraphs 19 to 30, wherein the first and second risk classification levels are each an Automotive Safety Integrity Level (“ASIL”).
  • 32. A system according to any one of paragraphs 19 to 31, wherein the error detection code is a cyclic redundancy check code or an error correction code.
  • 33. A method performed by circuitry operating at a first risk classification level, the method comprising: determining an error detection code for data to be written to a first memory address within a memory operating at a second risk classification level indicating a lower risk level than the first risk classification level; determining a second memory address within the memory based at least in part on the first memory address; and causing the data to be stored at the first memory address and the error detection code to be stored at the second memory address.
  • 34. The method of paragraph 33, further comprising: obtaining the data from the first memory address after storing the data in the first memory address; obtaining the error detection code from the second memory address after storing the error detection code in the second memory address; generating a check code based on the first memory address and the data obtained from the first memory address; and generating a notification if the check code indicates that the data contains at least one error.
  • 35. The method of paragraph 34, wherein the error detection code was generated based on the first memory address and the data before the data was stored in the first memory address, and the check code indicates that the data contains the at least one error if the check code does not match the error detection code.
  • 36. A method according to any one of paragraphs 33-35, wherein the memory comprises a first sub-area and a second sub-area, the first sub-area comprises the first memory address, the second sub-area area comprises the second memory address, and the method further comprises: writing a new error detection code to each memory address in the second sub-area during a start-up procedure.
  • 37. A method performed by circuitry operating at a first risk classification level, the method comprising: obtaining data from a first memory address of a memory operating at a second risk classification level indicating a lower risk level than the first risk classification level; determining a second memory address within the memory based at least in part on the first memory address; obtaining an error detection code from the second memory address; and generating a notification if the error detection code indicates that the data contains at least one error.
  • 38. The method of paragraph 37, further comprising: generating a check code based on the first memory address and the data obtained from the first memory address; and determining whether the check code matches the error detection code, wherein the error detection code indicates that the data contains the at least one error if the error detection code does not match the check code.
  • 39. The method of paragraph 37 or 38, wherein the circuitry obtains the data from the first memory address during a first memory access, the circuitry obtains the error detection code from the second memory address during a second memory access, and the method further comprises: introducing a time delay between the first and second memory accesses.
  • 40. The method of any of paragraphs 37-39, wherein the circuitry comprises a first and a second block, the method further comprising: sending a read request by the first block to the second block for the data stored in the first memory address; and receiving the read request by the second block, wherein the second block obtains the data, obtains the error detection code, and generates the notification if the error detection code indicates that the data contains the at least one error.
  • 41. The method of paragraph 40, wherein a read timer starts when the first block sends the read request, the method further comprising: generating a read error by the first block if the read timer indicates that more than a predetermined amount of time has elapsed before the first block receives the data.
  • 42. The method of paragraph 40 or 41, further comprising: transmitting a write request by the first block to the second block before the first block sends the read request, the write request comprising the data and the first memory address; determining the error detection code by the second block before the first block sends the read request; determining the second memory address by the second block before the first block sends the read request; and causing the second block to store the data in the first memory address and the error detection code to be stored in the second memory before the first block sends the read request.
  • 43. The method of paragraph 42, wherein a write timer starts when the first block sends the write request, the method further comprising: generating a write error by the first block if the write timer indicates that more than a first predetermined period of time has elapsed before the first block receives a response from the memory.
  • 44. The method of paragraph 43, wherein a read timer starts when the first block sends the read request, the method further comprising: generating a read error by the first block if the read timer indicates that more than a second predetermined period of time has elapsed before the first block receives the data.
  • 45. The method of any of paragraphs 42-44, wherein the second block causes the data to be stored in the first memory address during a first memory access, the second block causes the error detection code to be stored in the second memory address during a second memory access, and the method further comprises: introducing a time delay between the first and second memory accesses.
  • 46. The method of any of paragraphs 37-45, further comprising: writing the error detection code to the second memory address during a boot procedure.
  • 47. A method according to any of paragraphs 37 to 46, wherein the first and second risk classification levels are each an Automotive Safety Integrity Level (‘ASIL’).
  • 48. A method according to any one of paragraphs 37 to 47, wherein the error detection code is a cyclic redundancy check code or an error correction code.

Die Verwendung der Ausdrücke „ein“ und „eine“ und „der/die/das“ und ähnlicher Referenten im Kontext des Beschreibens offenbarter Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) ist so auszulegen, dass sie sowohl den Singular als auch den Plural abdeckt, sofern hierin nichts anderes angegeben ist oder der Kontext dem eindeutig widerspricht, und nicht als Definition eines Ausdrucks. Die Begriffe „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind als offene Begriffe auszulegen (d. h. „einschließlich, aber nicht begrenzt auf“), sofern nicht anderweitig angegeben. Der Begriff „verbunden“ ist als teilweise oder vollständig ineinander enthalten, aneinander befestigt oder aneinander angefügt auszulegen, wenn er unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, selbst, wenn ein Element dazwischen eingefügt ist. Die Nennung von Wertebereichen hierin soll lediglich als kurzes Verfahren zur einzelnen Bezugnahme auf jeden separaten Wert dienen, der in den Bereich fällt, es sei denn, hierin ist etwas anderes angegeben, und jeder separate Wert ist in die Beschreibung eingeschlossen, als ob er einzeln hierin wiedergegeben wäre. In mindestens einer Ausführungsform ist die Verwendung des Ausdrucks „Satz“ (z. B. „ein Satz von Gegenständen“) oder „Teilmenge“ als eine nicht leere Sammlung auszulegen, die ein oder mehrere Elemente umfasst, es sei denn, es ist etwas anderes angemerkt oder der Kontext widerspricht dem. Sofern es nicht anders angegeben ist oder der Kontext dem anderweitig widerspricht, bezeichnet ferner der Begriff „Teilmenge“ nicht notwendigerweise eine richtige Teilmenge des entsprechenden Satzes, sondern können die Teilmenge und der entsprechende Satz auch gleich sein.The use of the terms "a" and "an" and "the" and similar referents in the context of describing disclosed embodiments (particularly in the context of the following claims) is to be interpreted to cover both the singular and plural, unless otherwise specified herein or the context clearly contradicts it, and not as a definition of a term. The terms "comprising," "having," "including," and "containing" are to be interpreted as open-ended terms (i.e., "including but not limited to") unless otherwise specified. The term "connected" is to be interpreted as partially or completely contained, attached, or attached to one another when unmodified and refers to physical connections even when an element is inserted therebetween. The mention of ranges of values herein is intended to serve only as a shorthand method for individually referring to each separate value that falls within the range, unless otherwise specified herein, and each separate value is included in the description as if it were individually recited herein. In at least one embodiment, use of the term "set" (e.g., "a set of items") or "subset" is to be construed as a non-empty collection comprising one or more items, unless otherwise noted or the context otherwise contradicts. Furthermore, unless otherwise noted or the context otherwise contradicts, the term "subset" does not necessarily refer to a proper subset of the corresponding set, but the subset and the corresponding set may be the same.

Im hier verwendeten Sinne ist der Gebrach von „und/oder“ in Bezug auf zwei oder mehr Elemente als nur ein Element oder eine Kombination von Elementen auszulegen. Beispielsweise 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 Elemente A, B und C beinhalten.As used herein, the use of "and/or" in reference to two or more elements should be construed as referring to only one element or combination of elements. For example, "Element A, Element B, and/or Element C" may include only Element A, only Element B, only Element C, Element A and Element B, Element A and Element C, Element B and Element C, or Elements A, B, and C.

Sofern nicht spezifisch etwas anderes genannt ist oder der Kontext dem eindeutig widerspricht, ist verbindende Sprache, wie etwa Formulierungen der Form „wenigstens eines von A, B und C“ oder „mindestens eines von A, B und C“, andernfalls in dem Kontext zu verstehen, in dem sie allgemein verwendet werden, um darzustellen, dass ein Gegenstand, ein Ausdruck usw. entweder A oder B oder C oder eine beliebige nicht leere Teilmenge des Satzes aus A und B und C sein kann. Zum Beispiel beziehen sich in dem veranschaulichten Beispiel eines Satzes, der drei Elemente aufweist, beziehen sich die verbindenden Formulierungen „wenigstens eines von A, B und C“ und „mindestens eines von A, B und C“ auf einen beliebigen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit soll derartige verbindende Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungen es erforderlich machen, dass mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden ist. Sofern nichts anderes angemerkt ist oder der Kontext dem widerspricht, gibt der Ausdruck „Vielzahl“ einen Zustand der Pluralität an (z. B. gibt „eine Vielzahl von Gegenständen“ mehrere Gegenstände an). In mindestens einer Ausführungsform beträgt eine Anzahl der Gegenstände in einer Vielzahl mindestens zwei, es können aber auch mehr sein, wenn dies entweder explizit oder durch den Kontext angegeben ist. Ferner bedeutet die Formulierung „basierend auf“, sofern nicht anders angegeben oder aus dem Kontext ersichtlich, „mindestens teilweise basierend auf“ und nicht „ausschließlich basierend auf“.Unless specifically stated otherwise or the context clearly contradicts it, linking language, such as phrases of the form "at least one of A, B, and C" or "at least one of A, B, and C," is otherwise to be understood in the context in which it is generally used to represent that an item, expression, etc. can be either A or B or C or any nonempty subset of the set of A and B and C. For example, in the illustrated example of a set having three elements, the linking phrases "at least one of A, B, and C" and "at least one of A, B, and C" refer to any of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such linking language is generally not intended to imply that particular implementations require that at least one of A, at least one of B, and at least one of C be present. Unless otherwise noted or the context contradicts, the term "plurality" indicates a state of plurality (e.g., "a plurality of items" indicates multiple items). In at least one embodiment, a number of items in a plurality is at least two, but can be more if indicated either explicitly or by context. Further, unless otherwise specified or evident from the context, the phrase "based on" means "at least partially based on" and not "solely based on."

Hierin beschriebene Operationen von Prozessen können in einer beliebigen geeigneten Reihenfolge durchgeführt werden, sofern hierin nichts anderes angegeben ist oder der Kontext dem eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess, wie etwa die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon), unter der Steuerung von einem oder mehreren Computersystemen durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und er ist als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der zusammen auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen davon implementiert. In mindestens einer Ausführungsform wird Code auf einem computerlesbaren Speichermedium gespeichert. In einer Ausführungsform in der Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nicht transitorisches computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nicht transitorische Datenspeicherschaltungen (z. B. Puffer, Cache und Warteschlangen) innerhalb der Transceiver von transitorischen Signalen einschließt. In mindestens einer Ausführungsform ist der Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nicht transitorischen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind (oder ein anderer Speicher zum Speichern ausführbarer Anweisungen), die bei Ausführung (d. h. als Ergebnis der Ausführung) durch einen oder mehrere Prozessoren eines Computersystems das Computersystem dazu veranlassen, hierin beschriebene Vorgänge durchzuführen. Ein Satz von nicht transitorischen computerlesbaren Speichermedien umfasst in mindestens einer Ausführungsform mehrere nicht transitorische computerlesbare Speichermedien und einem oder mehreren der einzelnen nicht transitorischen Speichermedien mehrerer nicht transitorischer computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nicht transitorische computerlesbare Speichermedien kollektiv den gesamten Code speichern. In mindestens einer Ausführungsform werden die ausführbaren Anweisungen so ausgeführt, dass unterschiedliche Anweisungen durch unterschiedliche Prozessoren ausgeführt werden - in mindestens einer Ausführungsform speichert ein nichttransitorisches computerlesbares Speichermedium Anweisungen und eine hauptsächliche zentrale Verarbeitungseinheit („CPU“) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. In mindestens einer Ausführungsform weisen unterschiedliche Komponenten eines Computersystems separate Prozessoren auf und unterschiedliche Prozessoren führen unterschiedliche Teilmengen von Anweisungen aus.Operations of processes described herein may be performed in any suitable order, unless otherwise specified herein or the context clearly contradicts it. In at least one embodiment, a process, such as the processes described herein (or variations and/or combinations thereof), is performed under the control of one or more computer systems configured with executable instructions, and is implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) executing together on one or more processors, by hardware, or combinations thereof. In at least one embodiment, code is stored on a computer-readable storage medium. In one embodiment, in the form of a computer program comprising a plurality of instructions executable 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 transitory signals (e.g., a propagating transient electrical or electromagnetic transmission) but includes non-transitory data storage circuits (e.g., buffers, caches, and queues) within the transceivers of transitory signals. In at least one embodiment, the code (e.g., executable code or source code) is embodied on a set of stored by one or more non-transitory computer-readable storage mediums storing executable instructions (or other storage for storing executable instructions) that, when executed (i.e., as a result of execution) by one or more processors of a computer system, cause the computer system to perform operations described herein. A set of non-transitory computer-readable storage mediums, in at least one embodiment, comprises a plurality of non-transitory computer-readable storage mediums, and one or more of the individual non-transitory storage mediums of a plurality of non-transitory computer-readable storage media lack all of the code, while a plurality of non-transitory computer-readable storage media collectively store all of the code. In at least one embodiment, the 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 primary 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 in mindestens einer Ausführungsform so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder gemeinsam Vorgänge der hierin beschriebenen Prozesse ausführen, und solche Computersysteme sind mit anwendbarer Hardware und/oder Software konfiguriert, die die Durchführung von Vorgängen ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Vorrichtung und in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das verteilte Computersystem die hierin beschriebenen Operationen durchführt und sodass eine einzelne Vorrichtung nicht alle Operationen durchführt.Accordingly, in at least one embodiment, computer systems are configured to implement one or more services that individually or collectively perform operations of the processes described herein, and such computer systems are configured with applicable hardware and/or software that enable operations to be performed. Further, a computer system implementing 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 such that a single device does not perform all operations.

Die Verwendung jeglicher und aller Beispiele oder beispielhafter Wortwahl (z. B. „wie etwa“), die hierin bereitgestellt ist, soll lediglich die Ausführungsformen der Offenbarung besser verdeutlichen und stellt keine Einschränkung des Umfangs der Offenbarung dar, es sei denn, es ist etwas anderes beansprucht. Keinerlei Wortwahl in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als für die Umsetzung der Offenbarung wesentlich angibt.The use of any and all examples or exemplary language (e.g., "such as") provided herein is intended only to better illustrate embodiments of the disclosure and is not intended to limit the scope of the disclosure unless otherwise claimed. No language in the specification should be construed to identify any unclaimed element as essential to practicing the disclosure.

Jegliche Bezugnahmen, einschließlich Veröffentlichungen, Patentanmeldungen und Patenten, die hierin genannt werden, sind hiermit durch Bezugnahme in demselben Maße aufgenommen, als wäre jede Bezugnahme einzeln und spezifisch als durch Bezugnahme eingeschlossen angegeben und in ihrer Gesamtheit hierin dargelegt.Any 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 specifically indicated to be incorporated by reference and set forth in its entirety herein.

In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Ausdrücke nicht als Synonyme füreinander beabsichtigt sein können. Vielmehr kann in konkreten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander stehen. Mit „gekoppelt“ kann auch gemeint sein, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, jedoch trotzdem miteinander zusammenwirken oder interagieren.In the specification and claims, the terms "coupled" and "connected" may be used together with their derivatives. It is understood that these terms may not be intended as synonyms for each other. Rather, in specific examples, "connected" or "coupled" may be used to indicate that two or more elements are in direct or indirect physical or electrical contact with each other. "Coupled" may also mean that two or more elements are not in direct contact with each other, but nevertheless cooperate or interact with each other.

Sofern nicht ausdrücklich anders angegeben, versteht es sich, dass sich Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Beschreibung auf Handlungen und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung, die Daten, die als physische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt sind, manipulieren und/oder in andere Daten umwandeln, die auf ähnliche Weise als physische Größen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen des Rechensystems dargestellt sind.Unless expressly stated otherwise, it is to be understood that terms such as "processing", "computation", "calculating", "determining" or the like throughout the specification refer to acts and/or processes of a computer or computing system or similar electronic computing device that manipulate and/or transform data represented as physical, e.g. electronic, quantities in the registers and/or memories of the computing system into other data similarly represented as physical quantities in the memories, registers or other such information storage, transmission or display devices of the computing system.

Auf ähnliche Weise kann sich der Ausdruck „Prozessor“ auf eine beliebige Vorrichtung oder einen beliebigen Abschnitt einer Vorrichtung beziehen, die/der 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 „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Im hierin verwendeten Sinne können „Software“-Prozesse zum Beispiel Software- und/oder Hardware-Entitäten beinhalten, die im Verlauf der Zeit Arbeit Durchführen, wie etwa Tasks, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. Die Begriffe „System“ und „Verfahren“ werden hierin insofern austauschbar verwendet, als das System ein oder mehrere Verfahren verkörpern kann und die Verfahren als System betrachtet werden können.Similarly, the term “processor” may refer to any device or portion 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. As used herein, “software” processes may include, for example, software and/or hardware entities that perform work over time, such as tasks, threads, and intelligent agents. In addition, each process may refer to multiple processes to execute instructions sequentially or in parallel, continuously or intermittently. The terms "system" and "process" are used interchangeably herein in that the system may embody one or more processes and the processes may be considered as a system.

In mindestens einer Ausführungsform ist eine arithmetische Logikeinheit ein Satz kombinatorischer Logikschaltkreise, der eine oder mehrere Eingaben verarbeitet, um ein Ergebnis zu erzeugen. In mindestens einer Ausführungsform wird eine arithmetische Logikeinheit von einem Prozessor verwendet, um mathematische Operationen wie Addition, Subtraktion oder Multiplikation auszuführen. In mindestens einer Ausführungsform wird eine arithmetische Logikeinheit verwendet, um logische Operationen wie logisches UND/ODER oder XOR umzusetzen. In mindestens einer Ausführungsform ist eine arithmetische Logikeinheit zustandslos ausgebildet und besteht aus zur Bildung logischer Gates angeordneten physischen Schaltbauelementen, wie etwa Halbleitertransistoren. In mindestens einer Ausführungsform kann eine arithmetische Logikeinheit intern als zustandsabhängige Logikschaltung mit einem zugehörigen Taktgeber arbeiten. In mindestens einer Ausführungsform kann eine arithmetische Logikeinheit als asynchrone Logikschaltung aufgebaut sein, deren interner Zustand nicht in einem zugehörigen Registersatz gehalten wird. In mindestens einer Ausführungsform wird eine arithmetische Logikeinheit durch einen verwendet, um Operanden zu kombinieren, die in einem oder mehreren Registern des Prozessors gespeichert sind, und eine Ausgabe zu erzeugen, die vom Prozessor in einem anderen Register oder einem Speicherort 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 circuitry, such as semiconductor transistors, arranged to form logical gates. In at least one embodiment, an arithmetic logic unit may operate internally as a stateful 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 maintained in an associated set of registers. In at least one embodiment, an arithmetic logic unit is used by one 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 memory location.

In mindestens einer Ausführungsform übergibt der Prozessor als Ergebnis der Verarbeitung eines vom Prozessor abgerufenen Anweisungen einen oder mehrere Eingaben oder Operanden an eine arithmetische Logikeinheit, wodurch die arithmetische Logikeinheit veranlasst wird, ein Ergebnis zu erzeugen, das mindestens zum Teil auf einem Anweisungscode basiert, der den Eingängen der arithmetischen Logikeinheit bereitgestellt wird. In mindestens einer Ausführungsform basieren die vom Prozessor an die ALU bereitgestellten Anweisungscodes zumindest teilweise auf der vom Prozessor ausgeführten Anweisung. In 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. In mindestens einer Ausführungsform wählt der Prozessor ein Zielregister, einen Speicherplatz, eine Ausgabevorrichtung oder einen Ausgabespeicherplatz auf dem Ausgangsbus aus, so dass ein Takt 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 provides 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 instruction code 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 the instruction executed by the processor. In at least one embodiment, 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, memory location, output device, or output memory location on the output bus such that a clock of the processor causes the results produced by the ALU to be sent to the desired location.

Im vorliegenden Dokument kann auf das Erlangen, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. In mindestens einer Ausführungsform kann der Prozess des Erlangens, Erfassens, Empfangens oder Eingebens von analogen und digitalen Daten auf eine Vielfalt von Weisen erzielt werden, wie etwa durch das Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In einigen Umsetzungen kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übertragen von Daten über eine serielle oder parallele Schnittstelle erreicht werden. In einer weiteren Implementierung können Prozesse des Erlangens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übermitteln von Daten über ein Computernetz von der bereitstellenden Entität zu der erfassenden Entität erfolgen. Es kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen von analogen oder digitalen Daten Bezug genommen werden. In verschiedenen Beispielen kann der Prozess des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens von analogen oder digitalen Daten durch das Übermitteln von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozesskommunikationsmechanismus erfolgen.Reference may be made herein to obtaining, acquiring, receiving, or inputting analog or digital data to a subsystem, computer system, or computer-implemented machine. In at least one embodiment, the process of obtaining, acquiring, receiving, or inputting analog and digital data may be accomplished in a variety of ways, such as by receiving data as a parameter of a function call or an application programming interface call. In some implementations, the process of obtaining, acquiring, receiving, or inputting analog or digital data may be accomplished by transmitting data over a serial or parallel interface. In another implementation, processes of obtaining, acquiring, receiving, or inputting analog or digital data may be accomplished by communicating data over a computer network from the providing entity to the acquiring entity. Reference may also be made to providing, outputting, transmitting, sending, or displaying analog or digital data. In various examples, the process of providing, outputting, transmitting, sending, or displaying analog or digital data may be performed by passing data as an input or output parameter of a function call, a parameter of an application programming interface, or an interprocess communication mechanism.

Auch wenn die obige Erörterung beispielhafte Implementationen der beschriebenen Techniken darlegen, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sie sollen im Umfang dieser Offenbarung liegen. Darüber hinaus könnten, obwohl spezifische Verteilungen von Zuständigkeiten vorstehend zum Zwecke der Erörterung definiert sind, verschiedene Funktionen und Zuständigkeiten in Abhängigkeit von den Umständen anders verteilt und aufgeteilt werden.Although the above discussion sets forth exemplary implementations of the described techniques, other architectures may be used to implement the described functionality and are intended to be within the scope of this disclosure. Moreover, although specific distributions of responsibilities are defined above for purposes of discussion, various functions and responsibilities could be distributed and allocated differently depending on the circumstances.

Obwohl der Gegenstand ferner in für Strukturmerkmale und/oder Verfahrenshandlungen spezifischer Sprache beschrieben wurde, versteht sich, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht unbedingt auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen zum Implementieren der Ansprüche offenbart.Further, although the subject matter has been described in language specific to structural features and/or procedural acts, it is to be understood that the subject matter claimed in the appended claims is not necessarily limited to the specific features or acts described. Rather, specific features and acts are disclosed as exemplary forms for implementing the claims.

Der Gegenstand der vorliegenden Offenbarung wird hierin genau beschrieben, um gesetzliche Anforderungen zu erfüllen. Die Beschreibung selbst soll jedoch den Schutzumfang dieser Offenbarung nicht einschränken. Vielmehr haben die Erfinder in Erwägung gezogen, dass der beanspruchte Gegenstand auch auf andere Weise verkörpert werden könnte, um andere Schritte oder Kombinationen von Schritten ähnlich den in diesem Dokument beschriebenen in Verbindung mit anderen gegenwärtigen oder zukünftigen Technologien einzuschließen. Obwohl die Begriffe „Schritt“ und/oder „Block“ hierin verwendet werden können, um verschiedene Elemente der verwendeten Verfahren zu bezeichnen, sollten die Begriffe darüber hinaus nicht so ausgelegt werden, dass sie eine bestimmte Reihenfolge zwischen oder zwischen verschiedenen hierin offenbarten Schritten implizieren, es sei denn, die Reihenfolge der einzelnen Schritte ist explizit beschrieben.The subject matter of the present disclosure is described herein in detail to satisfy legal requirements. However, the description itself is not intended to limit the scope of this disclosure. Rather, the inventors have contemplated that the claimed subject matter could be embodied in other ways to include other steps or combinations of steps similar to those described herein in connection with other present or future technologies. Furthermore, although the terms "step" and/or "block" may be used herein to refer to various elements of the methods used, the terms should not be construed to imply a particular order between or among various steps disclosed herein unless the order of each step is explicitly described.

Andere Variationen liegen innerhalb des Grundgedankens der vorliegenden Offenbarung. Somit können zwar bezüglich der offenbarten Techniken diverse Modifikationen und alternative Konstruktionen vorgenommen werden, bestimmte veranschaulichte Ausführungsformen davon werden jedoch in den Zeichnungen gezeigt und wurden vorangehend ausführlich beschrieben. Allerdings versteht es sich, dass nicht die Absicht verfolgt wird, die Offenbarung auf die spezifische(n) offenbarte(n) Form oder Formen einzuschränken, sondern die Absicht ganz im Gegenteil darin besteht, sämtliche Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und Umfang der wie in den beigefügten Ansprüchen definierten Offenbarung fallen.Other variations are within the spirit of the present disclosure. Thus, while various modifications and alternative constructions may be made to the disclosed techniques, certain illustrated embodiments thereof are shown in the drawings and have been described in detail above. However, it is to be understood that there is no intention to limit the disclosure to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling 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 accepts no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • IN 202111034491 [0001]IN202111034491 [0001]
  • US 17/477360 [0001]US17/477360 [0001]
  • US 16101232 [0194]US 16101232 [0194]

Claims (48)

System, das Folgendes umfasst: einen Speicher, der unter Beachtung einer ersten Risikoklassifizierungsstufe arbeitet; und eine Schaltungsanordnung, die unter Beachtung einer zweiten Risikoklassifizierungsstufe arbeitet, die eine höhere Risikoklassifizierung als die erste Risikoklassifizierungsstufe angibt, wobei die Schaltungsanordnung dazu dient, einen Fehlererkennungscode für Daten, die in eine erste Speicheradresse innerhalb des Speichers zu schreiben sind, zu bestimmen, eine zweite Speicheradresse innerhalb des Speichers zumindest teilweise basierend auf der ersten Speicheradresse zu bestimmen und zu veranlassen, dass die Daten in der ersten Speicheradresse gespeichert werden und der Fehlererkennungscode in der zweiten Speicheradresse gespeichert werden.A system comprising: a memory operating in compliance with a first risk classification level; and circuitry operating in compliance with a second risk classification level indicating a higher risk classification than the first risk classification level, wherein the circuitry is operable to determine an error detection code for data to be written to a first memory address within the memory, determine a second memory address within the memory based at least in part on the first memory address, and cause the data to be stored in the first memory address and the error detection code to be stored in the second memory address. System nach Anspruch 1, wobei nach dem Speichern der Daten in der ersten Speicheradresse und dem Speichern der Fehlererkennungscode in der zweiten Speicheradresse: die Schaltungsanordnung dazu dient, die Daten aus der ersten Speicheradresse zu erlangen, den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen, einen Prüfcode basierend auf der ersten Speicheradresse und den aus der ersten Speicheradresse erlangten Daten zu generieren und eine Benachrichtigung zu generieren, wenn der Fehlererkennungscode angibt, dass die Daten mindestens einen Fehler enthalten.System according to Claim 1 wherein after storing the data in the first memory address and storing the error detection code in the second memory address: the circuitry is to obtain the data from the first memory address, obtain the error detection code from the second memory address, generate a check code based on the first memory address and the data obtained from the first memory address, and generate a notification if the error detection code indicates that the data contains at least one error. System nach Anspruch 2, wobei der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten, wenn der Fehlererkennungscode nicht mit dem Prüfcode übereinstimmt.System according to Claim 2 , where the error detection code indicates that the data contains the at least one error if the error detection code does not match the check code. System nach Anspruch 2, wobei die Schaltungsanordnung dazu dient, während eines ersten Speicherzugriffs die Daten aus der ersten Speicheradresse zu erlangen und während eines zweiten Speicherzugriffs den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen.System according to Claim 2 , wherein the circuit arrangement serves to obtain the data from the first memory address during a first memory access and to obtain the error detection code from the second memory address during a second memory access. System nach Anspruch 2, ferner umfassend: eine erste Schnittstelle, über die die Daten aus der ersten Speicheradresse erlangt werden; und eine zweite Schnittstelle, über die der Fehlererkennungscode aus der zweiten Speicheradresse parallel zum Erlangen der Daten über die erste Schnittstelle erlangt wird, wobei sich die erste Schnittstelle von der zweiten Schnittstelle unterscheidet.System according to Claim 2 , further comprising: a first interface via which the data is obtained from the first memory address; and a second interface via which the error detection code is obtained from the second memory address in parallel with obtaining the data via the first interface, wherein the first interface is different from the second interface. System nach Anspruch 4, wobei die Schaltungsanordnung eine Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff einführt.System according to Claim 4 , wherein the circuit arrangement introduces a time delay between the first and the second memory access. System nach Anspruch 1, wobei der Speicher einen ersten Teilbereich und einen zweiten Teilbereich umfasst, der erste Teilbereich die erste Speicheradresse umfasst, der zweite Teilbereich die zweite Speicheradresse umfasst, und die Schaltungsanordnung dazu dient, während einer Startprozedur einen neuen Fehlererkennungscode in jede Speicheradresse in dem zweiten Teilbereich zu schreiben.System according to Claim 1 , wherein the memory comprises a first sub-area and a second sub-area, the first sub-area comprises the first memory address, the second sub-area comprises the second memory address, and the circuit arrangement serves to write a new error detection code into each memory address in the second sub-area during a start-up procedure. System nach Anspruch 1, wobei die Schaltungsanordnung dazu dient, den Fehlererkennungscode basierend auf der ersten Speicheradresse und den Daten zu bestimmen, bevor die Daten in eine erste Speicheradresse geschrieben werden.System according to Claim 1 , wherein the circuitry is operable to determine the error detection code based on the first memory address and the data before the data is written to a first memory address. System nach Anspruch 1, wobei die Schaltungsanordnung einen ersten und einen zweiten Block umfasst, der erste Block dazu dient, eine Schreibanforderung, die die Daten und die erste Speicheradresse umfasst, an den zweiten Block zu übertragen, der zweite Block dazu dient, die Schreibanforderung zu empfangen, den Fehlererkennungscode zu bestimmen, die zweite Speicheradresse zu bestimmen und zu veranlassen, dass die Daten in der ersten Speicheradresse gespeichert werden und der Fehlererkennungscode in der zweiten Speicheradresse gespeichert wird.System according to Claim 1 , wherein the circuit arrangement comprises a first and a second block, the first block is for transmitting a write request comprising the data and the first memory address to the second block, the second block is for receiving the write request, determining the error detection code, determining the second memory address and causing the data to be stored in the first memory address and the error detection code to be stored in the second memory address. System nach Anspruch 9, wobei der erste Block einen Schreibzeitgeber umfasst, der startet, wenn der erste Block die Schreibanforderung an den zweiten Block überträgt, und der erste Block dazu dient, einen Schreibfehler zu generieren, wenn der Schreibzeitgeber angibt, dass mehr als eine vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block eine Antwort von dem Speicher empfängt.System according to Claim 9 wherein the first block includes a write timer that starts when the first block transmits the write request to the second block, and the first block is operable to generate a write error when the write timer indicates that more than a predetermined amount of time has elapsed before the first block receives a response from the memory. System nach Anspruch 9, wobei, nachdem der erste Block die Schreibanforderung sendet: der erste Block dazu dient, eine Leseanforderung an den zweiten Block für die in der ersten Speicheradresse gespeicherten Daten zu senden, und der zweite Block dazu dient, die Leseanforderung zu empfangen, die Daten aus der ersten Speicheradresse zu erlangen, den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen und eine Benachrichtigung an den ersten Block zu übertragen, wenn der zweite Block bestimmt, dass der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten.System according to Claim 9 wherein, after the first block sends the write request: the first block is to send a read request to the second block for the data stored in the first memory address, and the second block is to receive the read request, obtain the data from the first memory address, obtain the error detection code from the second memory address, and transmit a notification to the first block when the second block determines that the error detection code indicates that the data contains the at least one error. System nach Anspruch 11, wobei der erste Block einen Lesezeitgeber umfasst, der startet, wenn der erste Block die Leseanforderung sendet, und der erste Block dazu dient, einen Lesefehler zu generieren, wenn der Lesezeitgeber angibt, dass mehr als eine vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten empfängt.System according to Claim 11 wherein the first block includes a read timer that starts when the first block sends the read request, and the first block is operable to generate a read error when the read timer indicates that more than a predetermined amount of time has elapsed before the first block receives the data. System nach Anspruch 1, wobei die Schaltungsanordnung dazu dient zu veranlassen, dass die Daten während eines ersten Speicherzugriffs in der ersten Speicheradresse gespeichert werden und dass der Fehlererkennungscode während eines zweiten Speicherzugriffs in der zweiten Speicheradresse gespeichert wird.System according to Claim 1 , wherein the circuit arrangement serves to cause the data to be stored in the first memory address during a first memory access and the error detection code to be stored in the second memory address during a second memory access. System nach Anspruch 13, wobei die Schaltungsanordnung eine erste Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff einführt.System according to Claim 13 , wherein the circuit arrangement introduces a first time delay between the first and the second memory access. System nach Anspruch 1, das sich auf einem zusammenhängenden Stück aus Halbleitermaterial befindet.System according to Claim 1 located on a continuous piece of semiconductor material. System nach Anspruch 15, das einen Abschnitt eines Systems auf einem Chip („SoC“) implementiert, das einem Kraftfahrzeug entspricht.System according to Claim 15 that implements a portion of a system on a chip (“SoC”) corresponding to an automobile. System nach Anspruch 1, wobei die erste und die zweite Risikoklassifizierungsstufe jeweils ein Automotive Safety Integrity Level („ASIL“) ist.System according to Claim 1 , where the first and second risk classification levels are each an Automotive Safety Integrity Level (“ASIL”). System nach Anspruch 1, wobei der Fehlererkennungscode ein Prüfcode mit zyklischer Redundanz oder ein Fehlerkorrekturcode ist.System according to Claim 1 , where the error detection code is a check code with cyclic redundancy or an error correction code. System, das Folgendes umfasst: einen Speicher, der innerhalb einer ersten Risikoklassifizierungsstufe arbeitet, wobei der Speicher eine isolierte Speicherregion umfasst, umfassend eine erste Speicheradresse, die Daten speichert, und eine zweite Speicheradresse, die einen Fehlererkennungscode speichert; und eine Schaltungsanordnung, die innerhalb einer zweiten Risikoklassifizierungsstufe arbeitet, die eine höhere Risikostufe als die erste Risikoklassifizierungsstufe angibt, wobei die Schaltungsanordnung dazu dient, die Daten aus der ersten Speicheradresse zu erlangen, den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen und eine Benachrichtigung zu generieren, wenn der Fehlererkennungscode angibt, dass die Daten mindestens einen Fehler enthalten.A system comprising: a memory operating within a first risk classification level, the memory comprising an isolated memory region comprising a first memory address storing data and a second memory address storing an error detection code; and circuitry operating within a second risk classification level indicating a higher risk level than the first risk classification level, the circuitry operable to obtain the data from the first memory address, obtain the error detection code from the second memory address, and generate a notification when the error detection code indicates that the data contains at least one error. System nach Anspruch 19, wobei die Schaltungsanordnung dazu dient, einen Prüfcode basierend auf der ersten Speicheradresse und den aus der ersten Speicheradresse erlangten Daten zu generieren, wobei der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten, wenn der Fehlererkennungscode nicht mit dem Prüfcode übereinstimmt.System according to Claim 19 , wherein the circuit arrangement serves to generate a check code based on the first memory address and the data obtained from the first memory address, the error detection code indicating that the data contains the at least one error if the error detection code does not match the check code. System nach Anspruch 19, wobei die Schaltungsanordnung einen ersten und einen zweiten Block umfasst, der erste Block dazu dient, eine Leseanforderung für die in der ersten Speicheradresse gespeicherten Daten an den zweiten Block zu senden, und der zweite Block dazu dient, die Leseanforderung zu empfangen, die Daten zu erlangen, den Fehlererkennungscode zu erlangen und die Benachrichtigung zu generieren, wenn der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten.System according to Claim 19 , wherein the circuitry comprises a first and a second block, the first block is operable to send a read request for the data stored in the first memory address to the second block, and the second block is operable to receive the read request, obtain the data, obtain the error detection code, and generate the notification when the error detection code indicates that the data contains the at least one error. System nach Anspruch 21, wobei der erste Block einen Lesezeitgeber umfasst, der startet, wenn der erste Block die Leseanforderung sendet, und der erste Block dazu dient, einen Fehler zu generieren, wenn der Lesezeitgeber angibt, dass mehr als eine vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten empfängt.System according to Claim 21 , wherein the first block includes a read timer that starts when the first block sends the read request, and the first block is operable to generate an error if the read timer indicates that more than a predetermined amount of time has elapsed before the first block receives the data. System nach Anspruch 21, wobei, bevor der erste Block die Leseanforderung sendet: der erste Block dazu dient, die Daten und die erste Speicheradresse an den zweiten Block zu übertragen, und der zweite Block dazu dient, den Fehlererkennungscode zu bestimmen, die zweite Speicheradresse zu bestimmen, zu veranlassen, dass die Daten in der ersten Speicheradresse gespeichert werden, und zu veranlassen, dass der Fehlererkennungscode in der zweiten Speicheradresse gespeichert wird.System according to Claim 21 wherein, before the first block sends the read request: the first block is to transfer the data and the first memory address to the second block, and the second block is to determine the error detection code, determine the second memory address, cause the data to be stored in the first memory address, and cause the error detection code to be stored in the second memory address. System nach Anspruch 23, wobei der erste Block einen Schreibzeitgeber umfasst, der startet, wenn der erste Block die Daten und die erste Speicheradresse an den zweiten Block überträgt, und der erste Block dazu dient, einen Schreibfehler zu generieren, wenn der Schreibzeitgeber angibt, dass mehr als eine erste vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block eine Antwort von dem Speicher empfängt.System according to Claim 23 wherein the first block includes a write timer that starts when the first block transfers the data and the first memory address to the second block, and the first block is operable to generate a write error when the write timer indicates that more than a first predetermined period of time has elapsed before the first block receives a response from the memory. System nach Anspruch 24, wobei der erste Block einen Lesezeitgeber umfasst, der startet, wenn der erste Block die Leseanforderung sendet, und der erste Block dazu dient, einen Lesefehler zu generieren, wenn der Lesezeitgeber angibt, dass mehr als eine zweite vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten aus dem Speicher empfängt.System according to Claim 24 wherein the first block includes a read timer that starts when the first block sends the read request, and the first block is operable to generate a read error when the read timer indicates that more than a second predetermined period of time has elapsed before the first block receives the data from the memory. System nach Anspruch 19, wobei die Schaltungsanordnung dazu dient, während eines ersten Speicherzugriffs die Daten aus der ersten Speicheradresse zu erlangen und während eines zweiten Speicherzugriffs den Fehlererkennungscode aus der zweiten Speicheradresse zu erlangen.System according to Claim 19 , wherein the circuit arrangement serves to obtain the data from the first memory address during a first memory access and to obtain the error detection code from the second memory address during a second memory access. System nach Anspruch 26, wobei die Schaltungsanordnung eine Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff einführt.System according to Claim 26 , wherein the circuit arrangement introduces a time delay between the first and the second memory access. System nach Anspruch 19, wobei die Schaltungsanordnung den Fehlererkennungscode während einer Startprozedur in die zweite Speicheradresse geschrieben hat.System according to Claim 19 , wherein the circuit arrangement has written the error detection code into the second memory address during a start-up procedure. System nach Anspruch 19, das sich auf einem zusammenhängenden Stück aus Halbleitermaterial befindet.System according to Claim 19 located on a continuous piece of semiconductor material. System nach Anspruch 29, das einen Abschnitt eines Systems auf einem Chip („SoC“) implementiert, das einem Kraftfahrzeug entspricht.System according to Claim 29 that implements a portion of a system on a chip (“SoC”) corresponding to an automobile. System nach Anspruch 19, wobei die erste und die zweite Risikostufe jeweils ein Automotive Safety Integrity Level („ASIL“) ist.System according to Claim 19 , where the first and second risk levels are each an Automotive Safety Integrity Level (“ASIL”). System nach Anspruch 19, wobei der Fehlererkennungscode ein Prüfcode mit zyklischer Redundanz oder ein Fehlerkorrekturcode ist.System according to Claim 19 , where the error detection code is a check code with cyclic redundancy or an error correction code. Verfahren, das durch eine Schaltungsanordnung durchgeführt wird, die auf einer ersten Risikoklassifizierungsstufe arbeitet, wobei das Verfahren Folgendes umfasst: Bestimmen eines Fehlererkennungscodes für Daten, die in eine erste Speicheradresse innerhalb eines Speichers zu schreiben sind, der auf einer zweiten Risikoklassifizierungsstufe arbeitet, die eine niedrigere Risikostufe als die erste Risikoklassifizierungsstufe angibt; Bestimmen einer zweiten Speicheradresse innerhalb des Speichers zumindest teilweise basierend auf der ersten Speicheradresse; und Veranlassen, dass die Daten in der ersten Speicheradresse gespeichert werden und der Fehlererkennungscode in der zweiten Speicheradresse gespeichert wird.A method performed by circuitry operating at a first risk classification level, the method comprising: determining an error detection code for data to be written to a first memory address within a memory operating at a second risk classification level indicating a lower risk level than the first risk classification level; determining a second memory address within the memory based at least in part on the first memory address; and causing the data to be stored at the first memory address and the error detection code to be stored at the second memory address. Verfahren nach Anspruch 33, ferner umfassend: Erlangen der Daten aus der ersten Speicheradresse, nachdem die Daten in der ersten Speicheradresse gespeichert wurden; Erlangen des Fehlererkennungscodes aus der zweiten Speicheradresse, nachdem der Fehlererkennungscode in der zweiten Speicheradresse gespeichert wurde; Generieren eines Prüfcodes basierend auf der ersten Speicheradresse und den aus der ersten Speicheradresse erlangten Daten; und Generieren einer Benachrichtigung, wenn der Prüfcode angibt, dass die Daten mindestens einen Fehler enthalten.Procedure according to Claim 33 , further comprising: obtaining the data from the first memory address after the data is stored in the first memory address; obtaining the error detection code from the second memory address after the error detection code is stored in the second memory address; generating a check code based on the first memory address and the data obtained from the first memory address; and generating a notification when the check code indicates that the data contains at least one error. Verfahren nach Anspruch 34, wobei der Fehlererkennungscode basierend auf der ersten Speicheradresse und den Daten generiert wurde, bevor die Daten in der ersten Speicheradresse gespeichert wurden, und der Prüfcode angibt, dass die Daten den mindestens einen Fehler enthalten, wenn der Prüfcode nicht mit dem Fehlererkennungscode übereinstimmt.Procedure according to Claim 34 , wherein the error detection code was generated based on the first memory address and the data before the data was stored in the first memory address, and the check code indicates that the data contains the at least one error if the check code does not match the error detection code. Verfahren nach Anspruch 33, wobei der Speicher einen ersten Teilbereich und einen zweiten Teilbereich umfasst, der erste Teilbereich die erste Speicheradresse umfasst, der zweite Teilbereich die zweite Speicheradresse umfasst, und das Verfahren ferner Folgendes umfasst: Schreiben eines neuen Fehlererkennungscodes in jede Speicheradresse in dem zweiten Teilbereich während einer Startprozedur.Procedure according to Claim 33 , wherein the memory comprises a first sub-area and a second sub-area, the first sub-area comprises the first memory address, the second sub-area comprises the second memory address, and the method further comprises: writing a new error detection code to each memory address in the second sub-area during a start-up procedure. Verfahren, das durch eine Schaltungsanordnung durchgeführt wird, die auf einer ersten Risikoklassifizierungsstufe arbeitet, wobei das Verfahren Folgendes umfasst: Erlangen von Daten aus einer ersten Speicheradresse eines Speichers, der auf einer zweiten Risikoklassifizierungsstufe arbeitet, die eine niedrigere Risikostufe als die erste Risikoklassifizierungsstufe angibt; Bestimmen einer zweiten Speicheradresse innerhalb des Speichers zumindest teilweise basierend auf der ersten Speicheradresse; Erlangen eines Fehlererkennungscodes aus der zweiten Speicheradresse; und Generieren einer Benachrichtigung, wenn der Fehlererkennungscode angibt, dass die Daten mindestens einen Fehler enthalten.A method performed by circuitry operating at a first risk classification level, the method comprising: obtaining data from a first memory address of a memory operating at a second risk classification level indicating a lower risk level than the first risk classification level; determining a second memory address within the memory based at least in part on the first memory address; obtaining an error detection code from the second memory address; and generating a notification if the error detection code indicates that the data contains at least one error. Verfahren nach Anspruch 37, ferner umfassend: Generieren eines Prüfcodes basierend auf der ersten Speicheradresse und den aus der ersten Speicheradresse erlangten Daten; und Bestimmen, ob der Prüfcode mit dem Fehlererkennungscode übereinstimmt, wobei der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten, wenn der Fehlererkennungscode nicht mit dem Prüfcode übereinstimmt.Procedure according to Claim 37 , further comprising: generating a check code based on the first memory address and the data obtained from the first memory address; and determining whether the check code matches the error detection code, wherein the error detection code indicates that the data contains the at least one error if the error detection code does not match the check code. Verfahren nach Anspruch 37, wobei die Schaltungsanordnung die Daten aus der ersten Speicheradresse während eines ersten Speicherzugriffs erlangt, die Schaltungsanordnung den Fehlererkennungscode aus der zweiten Speicheradresse während eines zweiten Speicherzugriffs erlangt, und das Verfahren ferner Folgendes umfasst: Einführen einer Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff.Procedure according to Claim 37 wherein the circuitry obtains the data from the first memory address during a first memory access, the circuitry obtains the error detection code from the second memory address during a second memory access, and the method further comprises: introducing a time delay between the first and second memory accesses. Verfahren nach Anspruch 37, wobei die Schaltungsanordnung einen ersten und einen zweiten Block umfasst, und das Verfahren ferner Folgendes umfasst: Senden einer Leseanforderung durch den ersten Block an den zweiten Block für die in der ersten Speicheradresse gespeicherten Daten; und Empfangen der Leseanforderung durch den zweiten Block, wobei der zweite Block die Daten erlangt, den Fehlererkennungscode erlangt und die Benachrichtigung generiert, wenn der Fehlererkennungscode angibt, dass die Daten den mindestens einen Fehler enthalten.Procedure according to Claim 37 , wherein the circuitry comprises a first and a second block, and the method further comprises: sending a read request by the first block to the second block for the data stored in the first memory address; and receiving the read request by the second block, wherein the second block obtains the data, obtains the error detection code, and generates the notification if the error detection code indicates that the data contains the at least one error. Verfahren nach Anspruch 40, wobei ein Lesezeitgeber startet, wenn der erste Block die Leseanforderung sendet, und das Verfahren ferner Folgendes umfasst: Generieren einen Lesefehlers durch den ersten Block, wenn der Lesezeitgeber angibt, dass mehr als eine vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten empfängt.Procedure according to Claim 40 wherein a read timer starts when the first block sends the read request, and the method further comprises: generating a read error by the first block when the read timer indicates that more than a predetermined amount of time has elapsed before the first block receives the data. Verfahren nach Anspruch 40, ferner umfassend: Übertragen einer Schreibanforderung durch den ersten Block an den zweiten Block, bevor der erste Block die Leseanforderung sendet, wobei die Schreibanforderung die Daten und die erste Speicheradresse umfasst; Bestimmen des Fehlererkennungscodes durch den zweiten Block, bevor der erste Block die Leseanforderung sendet; Bestimmen der zweiten Speicheradresse durch den zweiten Block, bevor der erste Block die Leseanforderung sendet; und Veranlassen durch den zweiten Block, dass die Daten in der ersten Speicheradresse gespeichert werden und der Fehlererkennungscode in dem zweiten Speicher gespeichert wird, bevor der erste Block die Leseanforderung sendet.Procedure according to Claim 40 , further comprising: transmitting a write request by the first block to the second block before the first block sends the read request, the write request comprising the data and the first memory address; determining the error detection code by the second block before the first block sends the read request; determining the second memory address by the second block before the first block sends the read request; and causing the second block to store the data in the first memory address and the error detection code to be stored in the second memory before the first block sends the read request. Verfahren nach Anspruch 42, wobei ein Schreibzeitgeber startet, wenn der erste Block die Schreibanforderung sendet, und das Verfahren ferner Folgendes umfasst: Generieren einen Schreibfehlers durch den ersten Block, wenn der Schreibzeitgeber angibt, dass mehr als eine erste vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block eine Antwort von dem Speicher empfängt.Procedure according to Claim 42 , wherein a write timer starts when the first block sends the write request, and the method further comprises: generating a write error by the first block if the write timer indicates that more than a first predetermined period of time has elapsed before the first block receives a response from the memory. Verfahren nach Anspruch 43, wobei ein Lesezeitgeber startet, wenn der erste Block die Leseanforderung sendet, und das Verfahren ferner Folgendes umfasst: Generieren einen Lesefehlers durch den ersten Block, wenn der Lesezeitgeber angibt, dass mehr als eine zweite vorbestimmte Zeitdauer verstrichen ist, bevor der erste Block die Daten empfängt.Procedure according to Claim 43 wherein a read timer starts when the first block sends the read request, and the method further comprises: generating a read error by the first block when the read timer indicates that more than a second predetermined period of time has elapsed before the first block receives the data. Verfahren nach Anspruch 42, wobei der zweite Block veranlasst, dass die Daten während eines ersten Speicherzugriffs in der ersten Speicheradresse gespeichert werden, der zweite Block veranlasst, dass der Fehlererkennungscode während eines zweiten Speicherzugriffs in der zweiten Speicheradresse gespeichert wird, und das Verfahren ferner Folgendes umfasst: Einführen einer Zeitverzögerung zwischen dem ersten und dem zweiten Speicherzugriff.Procedure according to Claim 42 wherein the second block causes the data to be stored in the first memory address during a first memory access, the second block causes the error detection code to be stored in the second memory address during a second memory access, and the method further comprises: introducing a time delay between the first and second memory accesses. Verfahren nach Anspruch 37, ferner umfassend: Schreiben des Fehlererkennungscodes in die zweite Speicheradresse während einer Startprozedur.Procedure according to Claim 37 , further comprising: writing the error detection code to the second memory address during a start-up procedure. Verfahren nach Anspruch 37, wobei die erste und die zweite Risikoklassifizierungsstufe jeweils ein Automotive Safety Integrity Level („ASIL“) ist.Procedure according to Claim 37 , where the first and second risk classification levels are each an Automotive Safety Integrity Level (“ASIL”). Verfahren nach Anspruch 37, wobei der Fehlererkennungscode ein Prüfcode mit zyklischer Redundanz oder ein Fehlerkorrekturcode ist.Procedure according to Claim 37 , where the error detection code is a check code with cyclic redundancy or an error correction code.
DE112022003757.1T 2021-07-30 2022-07-26 TRANSFERRING DATA BETWEEN REGIONS WITH VARYING SECURITY INTEGRITY LEVELS IN A SYSTEM ON A CHIP Pending DE112022003757T5 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN202111034491 2021-07-30
IN202111034491 2021-07-30
US17/477,360 2021-09-16
US17/477,360 US11573856B1 (en) 2021-07-30 2021-09-16 Transmitting data between regions of varying safety integrity levels in a system on a chip
PCT/US2022/038405 WO2023009560A1 (en) 2021-07-30 2022-07-26 Transmitting data between regions of varying safety integrity levels in a system on a chip

Publications (1)

Publication Number Publication Date
DE112022003757T5 true DE112022003757T5 (en) 2024-05-29

Family

ID=83191859

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022003757.1T Pending DE112022003757T5 (en) 2021-07-30 2022-07-26 TRANSFERRING DATA BETWEEN REGIONS WITH VARYING SECURITY INTEGRITY LEVELS IN A SYSTEM ON A CHIP

Country Status (3)

Country Link
CN (1) CN116034343A (en)
DE (1) DE112022003757T5 (en)
WO (1) WO2023009560A1 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190243566A1 (en) * 2018-02-05 2019-08-08 Infineon Technologies Ag Memory controller, memory system, and method of using a memory device
JP7042709B2 (en) * 2018-06-28 2022-03-28 ルネサスエレクトロニクス株式会社 Semiconductor devices, control systems and control methods for semiconductor devices
DE102019128528A1 (en) * 2019-10-22 2021-04-22 Infineon Technologies Ag DATA CRYPTOGRAPHY DEVICES AND STORAGE SYSTEMS

Also Published As

Publication number Publication date
WO2023009560A1 (en) 2023-02-02
CN116034343A (en) 2023-04-28

Similar Documents

Publication Publication Date Title
DE102021121558A1 (en) NEURAL NETWORK BASED GAZE DIRECTION DETERMINATION USING SPATIAL MODELS
DE112020002126T5 (en) DETECTION OF CROSSING POSES IN AUTONOMOUS MACHINE APPLICATIONS
DE112020002166T5 (en) SIMULATION OF REALISTIC TEST DATA FROM TRANSFORMED REAL WORLD SENSOR DATA FOR AUTONOMOUS MACHINE APPLICATIONS
DE112020006410T5 (en) THREE-DIMENSIONAL INTERSECTION STRUCTURE PREDICTION FOR AUTONOMOUS DRIVING APPLICATIONS
DE112021000135T5 (en) SENSOR FUSION FOR AUTONOMOUS MACHINE APPLICATIONS THROUGH MACHINE LEARNING
DE112020002602T5 (en) MULTI-OBJECT TRACKING USING CORRELATION FILTERS IN VIDEO ANALYSIS APPLICATIONS
DE102020117792A1 (en) EFFECTIVE USE OF OBSTACLE AND TRACK DETECTION TO DETERMINE TRACK ALLOCATIONS FOR OBJECTS IN AN ENVIRONMENT
DE102021117456A1 (en) SYSTEMS AND PROCEDURES FOR RISK ASSESSMENT AND DIRECTIONAL WARNING FOR PEDESTRIAN CROSSINGS
DE102021123159A1 (en) ADAPTIVE OBJECT TRACKING ALGORITHM FOR AUTONOMOUS MACHINE APPLICATIONS
DE112020001396T5 (en) FORM FUSION FOR IMAGE ANALYSIS
DE102021100065A1 (en) USE OF NEURONAL NETWORKS FOR ERROR DETECTION IN APPLICATIONS FOR AUTONOMOUS DRIVING
DE112020001400T5 (en) ITERATIVE GENERATION OF SPATIAL GRAPHS
DE102021129528A1 (en) Detection of emergency vehicles for autonomous driving applications
DE112020006181T5 (en) EYE DETERMINATION WITH GLARE AS INPUT
DE102019113114A1 (en) BEHAVIOR-CONTROLLED ROUTE PLANNING IN AUTONOMOUS MACHINE APPLICATIONS
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
DE102022107848A1 (en) SYSTEM AND PROCEDURE FOR UPDATING HIGH RESOLUTION MAPS
DE102022123130A1 (en) TRAINING OBJECT RECOGNITION MODELS USING TRANSFER LEARNERS
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
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
DE102022114521A1 (en) PARALLEL PROCESSING OF A VEHICLE PATH PLANNING SUITABLE FOR PARKING

Legal Events

Date Code Title Description
R012 Request for examination validly filed