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 PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 405
- 238000001514 detection method Methods 0.000 claims abstract description 396
- 238000000034 method Methods 0.000 claims description 192
- 230000004044 response Effects 0.000 claims description 85
- 238000012937 correction Methods 0.000 claims description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 7
- 239000004065 semiconductor Substances 0.000 claims description 7
- 239000000463 material Substances 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 56
- 239000003999 initiator Substances 0.000 description 51
- 238000003860 storage Methods 0.000 description 44
- 238000002955 isolation Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 41
- 238000013528 artificial neural network Methods 0.000 description 40
- 238000004891 communication Methods 0.000 description 38
- 230000006854 communication Effects 0.000 description 38
- 238000005192 partition Methods 0.000 description 38
- 229920002451 polyvinyl alcohol Polymers 0.000 description 31
- 230000009471 action Effects 0.000 description 30
- 230000000875 corresponding effect Effects 0.000 description 29
- 230000000670 limiting effect Effects 0.000 description 29
- 239000000872 buffer Substances 0.000 description 28
- 239000004020 conductor Substances 0.000 description 28
- 238000010586 diagram Methods 0.000 description 22
- 238000013527 convolutional neural network Methods 0.000 description 21
- 238000012360 testing method Methods 0.000 description 20
- 238000007726 management method Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 16
- 239000013598 vector Substances 0.000 description 13
- 230000002776 aggregation Effects 0.000 description 12
- 238000004220 aggregation Methods 0.000 description 12
- 230000009183 running Effects 0.000 description 12
- 230000001133 acceleration Effects 0.000 description 11
- 238000013135 deep learning Methods 0.000 description 11
- 238000012549 training Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 230000004438 eyesight Effects 0.000 description 10
- 230000013016 learning Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 238000012544 monitoring process Methods 0.000 description 8
- 238000012946 outsourcing Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 239000004567 concrete Substances 0.000 description 7
- 238000013500 data storage Methods 0.000 description 7
- 230000008449 language Effects 0.000 description 7
- 230000033001 locomotion Effects 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 7
- 230000005291 magnetic effect Effects 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 239000000047 product Substances 0.000 description 7
- 230000000007 visual effect Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 230000008447 perception Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 241000269400 Sirenidae Species 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 3
- 230000001815 facial effect Effects 0.000 description 3
- 230000009975 flexible effect Effects 0.000 description 3
- 239000000446 fuel Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000001603 reducing effect Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 239000013078 crystal Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000004043 responsiveness Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008093 supporting effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 101100248200 Arabidopsis thaliana RGGB gene Proteins 0.000 description 1
- 241000282414 Homo sapiens Species 0.000 description 1
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 206010034960 Photophobia Diseases 0.000 description 1
- 101150071882 US17 gene Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007621 cluster analysis Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000002485 combustion reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000036039 immunity Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 208000013469 light sensitivity Diseases 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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.
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 der7 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 der9 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 der12 gemäß einigen Ausführungsformen der vorliegenden Offenbarung; -
14 ist ein Blockdiagramm einer beispielhaften Systemarchitektur für das beispielhafte autonome Fahrzeug der12 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 aus12 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.
-
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 thatSI 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 thatSI 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 the7 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 the9 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 the12 according to some embodiments of the present disclosure; -
14 is a block diagram of an example system architecture for the example autonomous vehicle of the12 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 from12 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.
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
Um mindestens einen Teil der durch die optionale externe Steuereinheit 106 eingeführten Latenz und der Kosten zu vermeiden, beinhaltet die Kraftfahrzeugplattform 100 der
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
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
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
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
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
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
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
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
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
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
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
Der/die Logikblöcke 148 beinhalten eine Takt- und Rücksetzschaltungsanordnung 230 (siehe
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
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
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
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
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
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
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.
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
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
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
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
Bezugnehmend nun auf
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
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
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
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
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
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,
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
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
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
Während, wie vorstehend beschrieben, unter Bezugnahme auf
Stattdessen kann unter Bezugnahme auf
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
Zur besseren Veranschaulichung wird das Verfahren 500 als durch einen konkreten der SoC-Störungsaggregator(en) 152 (siehe
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
In Block 512 startet der konkrete SoC-Störungsaggregator einen Zeitgeber 420C für den korrigierten Fehler (siehe
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
In Entscheidungsblock 516 bestimmt der Prozessor 150, ob der Zeitgeber 420C für den korrigierten Fehler (siehe
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
In Block 526 startet der konkrete SoC-Störungsaggregator einen Zeitgeber 420U für den unkorrigierten Fehler (siehe
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
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
Zur besseren Veranschaulichung wird das Verfahren 540 als durch den Prozessor 150 (siehe
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
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
Zur besseren Veranschaulichung wird das Verfahren 550 als durch den SI-Störungsaggregator 142 (siehe
In Entscheidungsblock 556 bestimmt der Prozessor 140 (siehe
In Entscheidungsblock 560 entscheidet der Prozessor 140 (siehe
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
In Entscheidungsblock 568 bestimmt der Prozessor 140 (siehe
In Entscheidungsblock 570 entscheidet der Prozessor 140 (siehe
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
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
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
Zur besseren Veranschaulichung wird das Verfahren 580 als durch den SI-Störungsaggregator 142 (siehe
Wie durch einen Pfeil mit gestrichelter Linie in
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
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
Nachdem der SI-Störungsaggregator 142 (siehe
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
In den
Die
Die Linie 612A stellt das unkorrigierte Fehlersignal dar, das durch den Leiter 412 für das unkorrigierte Fehlersignal (siehe
Dann empfängt in
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
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
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.
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“).
Die Linie 612B stellt das unkorrigierte Fehlersignal dar, das durch den Leiter 412 für das unkorrigierte Fehlersignal (siehe
Dann empfängt in
Der Prozessor 140 entscheidet jedoch, das externe System 404 (siehe
Die Linie 612C stellt das unkorrigierte Fehlersignal dar, das durch den Leiter 412 für das unkorrigierte Fehlersignal (siehe
In
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
Nach Empfang des SI-Störungsaggregatorsignals (z. B. Block 582 in
Unter Bezugnahme auf
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
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
Die Hardware des Fehlererkennungsblocks 272 kann einen Codegenerierungs-Unterblock 273 (siehe
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
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:
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
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
Bezugnehmend nun auf
Unter Bezugnahme auf
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
Im nächsten Block 710 bestimmt der Fehlererkennungsblock 272 (siehe
In Entscheidungsblock 716 bestimmt dann der Fehlererkennungsblock 272 (siehe
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
Die Sicherheitsinselzusammenschaltung 808 liefert die erste Schreibanweisung 804 an den Fehlererkennungsblock 272 (z. B. Block 702 in
Als Nächstes bestimmt der Codegenerierungs-Unterblock 273 für jedes Byte der Daten einen Fehlererkennungscode (z. B. Block 706 in
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
Der erste Teilbereich 252 schreibt die Daten in den Speicher, indem das erste Byte (in
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
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
Der Fehlererkennungsblock 272 wartet (z. B. Block 712 in
Der zweite Teilbereich 254 schreibt die Fehlererkennungscodes in den Speicher, indem der erste Fehlererkennungscode (dargestellt in
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
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:
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
Bezugnehmend nun auf
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
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
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
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
Der Fehlererkennungsblock 272 sendet die erste Datenadresse über die Schnittstelle 200A des flüchtigen Speichers (siehe
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
Dann bestimmt der Fehlererkennungsblock 272 eine erste Codeadresse („Adresse_1“) basierend auf der ersten Datenadresse (z. B. Block 908 in
Als Nächstes wartet der Fehlererkennungsblock 272 (z. B. Block 910 in
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
Wenn der Fehlererkennungsblock 272 bis zum vierten Zeitpunkt (z. B. in
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
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
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
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
Unter Bezugnahme auf
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
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
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
Block 1124 gibt an, dass der Codegenerierungs-Unterblock 273 (siehe
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
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
Die SI 110 kann unter Bezugnahme auf
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
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
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
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
Steuerung(en) 1236, der/die eine oder mehrere CPU(s), System on Chips (SoCs) 1204 (
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
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
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
Wie vorstehend erwähnt, kann in mindestens einigen Ausführungsformen die Kraftfahrzeugplattform 100 (siehe
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
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
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
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
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
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.
Jede(s) der Komponenten, Merkmale und Systeme des Fahrzeugs 1200 in
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
Das Fahrzeug 1200 kann eine oder mehrere Steuerung(en) 1236 beinhalten, wie etwa diejenigen, die hierin in Bezug auf
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Wie vorstehend erwähnt, kann in mindestens einigen Ausführungsformen die Kraftfahrzeugplattform 100 (siehe
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,
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
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
Auch wenn die verschiedenen Blöcke von
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
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
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
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
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
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
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
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/
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
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.
- 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)
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)
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 |
-
2022
- 2022-07-26 DE DE112022003757.1T patent/DE112022003757T5/en active Pending
- 2022-07-26 WO PCT/US2022/038405 patent/WO2023009560A1/en unknown
- 2022-07-26 CN CN202280005745.XA patent/CN116034343A/en active Pending
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 |